RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    Snow Bros 2 "Coin Error" workaround

    Scheduled Pinned Locked Moved Help and Support
    snow bros 2cheatcoin errorfbneo
    8 Posts 2 Posters 1.6k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • pjftP
      pjft
      last edited by pjft

      Hi all,

      Just sharing a hacky workaround for the Snow Bros 2 "Coin Error" that happens if you hold the coin button for a bit too long.

      Symptom: Snow Bros 2 hangs with "Coin Error" if a coin button is held for two long. Happens in any emulator. It also happens for other games (a quick Google Search shows that) but this does not fix those. The high-level approach for the workaround can be applied.

      Scenario: Playing with multiple players (the game supports up to 4 players), when it's time to insert credits to continue halfway through the game (young kids, especially), a slight delay in releasing the coin button will result in the game hanging. Frustration ensues.

      Workaround: Since this game quickly became one of the favorites of the kids to play together with me, since it supports more than 2 players, I looked for fixes for a while - different emulators, even latest MAME releases, but nothing, so I had to come up with a workaround.

      The different pieces for my workaround in this case are:

      1. Create a save state after the initial boot stage (to be used in step 4);
      2. Remap controls to remove the "coin" button mapping;
      3. Create/load a cheat code for infinite credits;
      4. Set the game to auto-load a save state on launch;

      Also, my workaround is on lr-fbneo with the ROM snowbro2.zip, so I recommend using this emulator and this exact ROM (and not a clone) if you apply the exact same changes.

      1) Create a save state after the initial boot stage

      Start by launching the game as normal, and after the "HELLO" launch prompt disappears create a save state by pressing HOTKEY + R1. Note the name of the save state in the RetroArch dialog on the bottom left corner of the screen.

      Now, navigate to your arcade roms folder via SSH, command-line or in any other file explorer and rename that most recent save state to snowbro2.state.auto.

      In my case, it had created a snowbro2.state1 file, so I renamed that to snowbro2.state.auto.

      This will be used at the last step, but it's easier to create it before the next steps.

      2) Remap controls to remove the "coin" button mapping

      Since the problem relates to inserting coins, start by removing the COIN button mapping from select, for P1 and P2, and save a Game Controls override file. In my case, this created a /opt/retropie/configs/arcade/FinalBurn Neo/snowbro2.rmpfile with the following:

      input_player1_btn_select = "-1"
      input_player2_btn_select = "-1"
      

      You may create it manually in that folder, with that name.

      3) Create/load a cheat code for infinite credits

      Since we can no longer insert coins, I created a cheat file for the game to be permanently set on 99 credits.

      I won't go in detail as to how to create cheat codes as there are many guides around the internet and this was also my first time doing so (i.e. I was probably lucky), but I now have a cheat file on /opt/retropie/configs/all/retroarch/cheats/FinalBurn Neo/snowbro2.chtwith the following content:

      cheat0_address = "120"
      cheat0_address_bit_position = "255"
      cheat0_big_endian = "false"
      cheat0_cheat_type = "1"
      cheat0_enable = "false"
      cheat0_handler = "1"
      cheat0_memory_search_size = "5"
      cheat0_repeat_add_to_address = "1"
      cheat0_repeat_add_to_value = "0"
      cheat0_repeat_count = "1"
      cheat0_rumble_port = "0"
      cheat0_rumble_primary_duration = "0"
      cheat0_rumble_primary_strength = "0"
      cheat0_rumble_secondary_duration = "0"
      cheat0_rumble_secondary_strength = "0"
      cheat0_rumble_type = "0"
      cheat0_rumble_value = "0"
      cheat0_value = "65548"
      cheat1_address = "120"
      cheat1_address_bit_position = "255"
      cheat1_big_endian = "false"
      cheat1_cheat_type = "1"
      cheat1_enable = "true"
      cheat1_handler = "1"
      cheat1_memory_search_size = "5"
      cheat1_repeat_add_to_address = "1"
      cheat1_repeat_add_to_value = "0"
      cheat1_repeat_count = "1"
      cheat1_rumble_port = "0"
      cheat1_rumble_primary_duration = "0"
      cheat1_rumble_primary_strength = "0"
      cheat1_rumble_secondary_duration = "0"
      cheat1_rumble_secondary_strength = "0"
      cheat1_rumble_type = "0"
      cheat1_rumble_value = "0"
      cheat1_value = "65635"
      cheats = "2"
      

      You'll notice that there's one cheat that's disabled, and it's exactly the same. Probably you can remove it altogether - as I said, this was the first time doing so and since it works now I'd rather add it here exactly as it is. Probably this would work equally well:

      cheat0_address = "120"
      cheat0_address_bit_position = "255"
      cheat0_big_endian = "false"
      cheat0_cheat_type = "1"
      cheat0_enable = "true"
      cheat0_handler = "1"
      cheat0_memory_search_size = "5"
      cheat0_repeat_add_to_address = "1"
      cheat0_repeat_add_to_value = "0"
      cheat0_repeat_count = "1"
      cheat0_rumble_port = "0"
      cheat0_rumble_primary_duration = "0"
      cheat0_rumble_primary_strength = "0"
      cheat0_rumble_secondary_duration = "0"
      cheat0_rumble_secondary_strength = "0"
      cheat0_rumble_type = "0"
      cheat0_rumble_value = "0"
      cheat0_value = "65635"
      cheats = "1"
      

      4) Set the game to auto-load a save state on launch

      Now that the game will auto-load this cheat on launch, it will no longer boot but rather report a "RAM ERROR" (if I recall correctly). It makes sense - we're now explicitly messing with RAM values on startup. The workaround here was to have the save state we created on step 1 to be auto-loaded on launch.

      To do that, in your arcade ROMs folder (in my case, /RetroPie/roms/arcade) create a snowbro2.zip.cfg config file with the content:

      savestate_auto_load = "true"
      

      After following these steps, hopefully when you launch Snow Bros 2 with lr-fbneo it will start with the save state and it will automatically load the cheat without preventing the game from booting.

      Hope this helps anyone - or, in case I run into this problem again in the future, I can at least find a result on Google :)

      1 Reply Last reply Reply Quote 1
      • pjftP
        pjft
        last edited by

        Mental note: What would I know? 4 years later, after installing RetroPie on a Pi 5, here I am searching for this again.

        B 1 Reply Last reply Reply Quote 0
        • B
          barbudreadmon @pjft
          last edited by barbudreadmon

          @pjft Yeah, this is pretty common behavior in arcade games, i believe it was meant to prevent users from doing fishy stuff with the coiner.

          Luckily, unlike MAME, we don't mind too much about preserving that kind of stuff, so we have a workaround to avoid it, it can't be used globally though since each board behaves differently about this.

          I just implemented the workaround in that specific driver, so the next time you'll update FBNeo there should be no more concerns about that coin error thing. Note that it'll break support for previous savestates though.

          In the future, when you encounter issues with FBNeo, i recommend contacting us directly through FBNeo's github or forum, since it's not guaranteed i'll always notice problems posted in 3rd-party forums like retropie's (and i clearly didn't notice your original post).

          FBNeo developer - github - forum

          pjftP 1 Reply Last reply Reply Quote 3
          • pjftP
            pjft @barbudreadmon
            last edited by

            @barbudreadmon Oh, hi! Why, thanks for the change here. I had no expectation that this would be addressed on an emulator - after all, as you said, this is technically "correct emulation". It's cool that it's changed though. I had only posted this here in case it would be helpful to anyone in the future, myself included :)

            Thanks for looking into this, though - very much appreciated, and it wasn't expected at all, as that wasn't my intention.

            B 1 Reply Last reply Reply Quote 1
            • B
              barbudreadmon @pjft
              last edited by barbudreadmon

              Imposing stuff like this on users while it's unlikely it'd ever happen to them if they were playing on a real cabinet doesn't sit right with us. For the same reason, we do stuff to avoid pressing opposite directions, since it's another common source of crashes.
              We'd rather be a comfortable gaming software and leave that task of "absolute preservation" to MAME.

              FBNeo developer - github - forum

              pjftP 1 Reply Last reply Reply Quote 1
              • pjftP
                pjft @barbudreadmon
                last edited by

                @barbudreadmon Thanks for sharing the perspective - I can see how that aligns with the FBNeo vision.

                A question, on this note: a few years ago I worked on adding dual-stick controls to several games on FBNeo. At the time, the biggest omission for me was Forgotten Worlds, but the CPS driver wasn't in the same state.

                At the time, dink suggested he'd eventually look into the driver so that we could look into adding dual-stick controls to Forgotten Worlds as well. I'd love to pick that up again - do you know if the CPS driver has been changed since, or should I open an issue there to ask about the topic? I don't want to be misunderstood there and suggest it's an actual but, just asking about it so I can help.

                Thanks!

                B 1 Reply Last reply Reply Quote 0
                • B
                  barbudreadmon @pjft
                  last edited by

                  @pjft i don't think there was a change affecting forgottn's inputs, i could be wrong though, i can only recommend asking dink directly.

                  FBNeo developer - github - forum

                  pjftP 1 Reply Last reply Reply Quote 1
                  • pjftP
                    pjft @barbudreadmon
                    last edited by

                    @barbudreadmon Thanks, will do.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                    Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.