Snow Bros 2 "Coin Error" workaround
-
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:
- Create a save state after the initial boot stage (to be used in step 4);
- Remap controls to remove the "coin" button mapping;
- Create/load a cheat code for infinite credits;
- 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 tosnowbro2.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.rmp
file 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.cht
with 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 asnowbro2.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 :)
-
Mental note: What would I know? 4 years later, after installing RetroPie on a Pi 5, here I am searching for this again.
-
@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).
-
@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.
-
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. -
@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!
-
@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.
-
@barbudreadmon Thanks, will do.
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.