Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
08248 DIP/Input Major Always Mar 14, 2022, 06:14 Mar 30, 2022, 03:37
Tester samsho2 View Status Public Platform MAME (Official Binary)
Assigned To Resolution Invalid report OS Windows 10/11 (64-bit)
Status [?] Closed Driver
Version 0.239 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 08248: samsho2: Enabling debug dip 2-7 with unibios crashes the device
Description Enabling debug dip switch 2-7 in Samurai Shodown 2 causes the system to crash with an exception. This works in winkawaks, but we could probably use more testing on real hardware to see what happens there. This debug dip option has been confirmed by others to work on real hardware, but maybe this is some issue with MAME and unibios?

See screenshots for details.
Steps To Reproduce 1. Select Universe BIOS (Hack, Ver. 4.0)
2. Start a game, then hold A+B+C and press START to open up the universe bios menu.
3. Select DEBUG DIP SETTINGS
4. Enable DIP2 7 (set to 1) with the A button
5. Press C twice to return to the game
6. See exception error: illegal instruction 00000004
7. Press A to alternate registers

See screenshots for details.
Additional Information https://cdn.discordapp.com/attachments/674358469754880044/952810636352585768/unknown.png

https://cdn.discordapp.com/attachments/674358469754880044/952810452713345054/unknown.png

https://cdn.discordapp.com/attachments/674358469754880044/952810721832484885/unknown.png

https://cdn.discordapp.com/attachments/674358469754880044/952810885603295232/unknown.png
Github Commit
Flags
Regression Version
Affected Sets / Systems samsho2
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
13
User avatar
No.19896
Haze
Senior Tester
Mar 14, 2022, 10:51
edited on: Mar 14, 2022, 11:04
does this REALLY work on real hardware?

this is a standard 'illegal instruction' exception from the 68k meaning the code has tried to execute something invalid, and the 68k illegal instruction handling should be reliable.

I don't think WinKawaks bothers to emulate 68k exceptions so is not a valid comparison (this and NRX which also doesn't emulate the exceptions is one of the reasons there are a bunch of ROM hacks that don't work on real hardware)
User avatar
No.19897
samsho2
Tester
Mar 14, 2022, 11:47
Can you help me figure out a MAME cheat entry for enabling this debug dip so we can eliminate universe bios as a variable?
User avatar
No.19898
Haze
Senior Tester
Mar 14, 2022, 13:26
well how is it being enabled on real hardware? you'd need a debug BIOS / debug motherboard, or the Uni BIOS even there.

there are no physical switches for this on retail hardware.
User avatar
No.19899
samsho2
Tester
Mar 14, 2022, 13:36
The person who documented the behavior did it on real hardware, but I don't know if he used the uni bios or a debug bios.

Setting the value in Final Burn Neo using its Debug Dip 2 option (huh, it has an option) works:

https://cdn.discordapp.com/attachments/197420215363960832/952923121827082280/unknown.png

I have no idea how to do the equivalent thing in MAME.
User avatar
No.19900
Haze
Senior Tester
Mar 14, 2022, 14:19
edited on: Mar 14, 2022, 14:20
FBN pokes values directly into RAM, this is a hack.

Stop comparing what other emulators do to MAME.

You could do the same with a lua script or a cheat, but doing so would invalidate any bug reports.
User avatar
No.19901
samsho2
Tester
Mar 14, 2022, 14:28
edited on: Mar 14, 2022, 14:49
Can you humor me and let me know what the syntax is for doing that with MAME? I'm trying to determine if enabling this dip switch is what's causing it to freeze or it's something to do with the unibios setting.
User avatar
No.19902
samsho2
Tester
Mar 14, 2022, 15:59
So I added this cheat and it still crashes.

<cheat desc="DEBUG DIP - Sprite Viewer"> <comment>Debug Dip 2_7</comment>
    <script state="run">
<action>maincpu.pb@100001=40</action>
</script>
  </cheat>

I can see the coordinates for the sprite viewer appear before it crashes, so that SEEMS to be it, but I don't know.

This is the error:

https://cdn.discordapp.com/attachments/197420215363960832/952958873055166484/unknown.png
User avatar
No.19903
samsho2
Tester
Mar 14, 2022, 16:23
And when you use the same cheat with the aes driver, it just resets the machine after briefly showing the sprite viewer.
User avatar
No.19904
Tafoid
Administrator
Mar 14, 2022, 17:06
Discussed also here:
https://github.com/mamedev/mame/issues/9413
User avatar
No.19918
samsho2
Tester
Mar 16, 2022, 16:16
I got someone to test this with the unibios on real AES hardware, and the behavior is not the same as MAME. It doesn't immediately show that exception screen.
User avatar
No.19919
Haze
Senior Tester
Mar 16, 2022, 21:50
edited on: Mar 16, 2022, 21:50
it doesn't show the exception in MAME on an AES system either, although it jumps to service mode after about a second.

you're not comparing like-for-like, or providing enough information.
User avatar
No.19922
cuavas
Administrator
Mar 17, 2022, 13:04
No evidence that MAME is actually misbehaving has been provided.
User avatar
No.19970
Foxhack
Tester
Mar 30, 2022, 03:37
I started to poke around the game to see what was going on.

Pressing A+B+C and 1P Start to bring up the menu, then going into the debug bios options and turning on dip 2-7 will crash the game as soon as you start a fight. But, if instead of doing that, you use the built in patch memory function to add value 0x40 to location 0x100001 (essentially turning on Dip 2-7), it will -not- crash the game. You'll be able to move around the sprite and change it by pressing the stick and buttons on your pad. It's still very unstable, and may eventually crash your game in the same way as the bug report described.

I tested this issue with a few versions of the Universe bios, and they all behaved the same.