Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
03703 Debugger Minor Always Feb 1, 2010, 17:09 Feb 17, 2010, 03:45
Tester smkdan View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows Vista/7 (32-bit)
Status [?] Acknowledged Driver
Version 0.136 Fixed in Version Build Debug
Fixed in Git Commit Github Pull Request #
Summary 03703: The wpiset watchpoint will not snap the debugger unless the written data is 00 (Z80)
Description When running the Z80 debugger, wpiset will not snap the debugger unless wpdata is 00. It will simply ignore any others. For example:

wpiset 4,1,w

Only snaps when data=0

wpiset 4,1,w,wpdata>0

Will never snap. I ran into this when running Neo Geo Z80 program in the debugger and watching writes to YM2610 address port 0. Instances of OUT ($04),a where a != 0 will simply be ignored.
Steps To Reproduce Run lbowling.zip with -debug switch. Enter:

Make sure you have (audiocpu) - Z80 focus in the debugger

wpiset 4,1,w

Get to the title screen and insert a coin (you may need to insert two to make the coin sound). The debugger should snap with PC=13BB. Note the OUT ($04),a directly above.

Note PC=13C2 which is another OUT ($04),a. Step until this is reached, the debugger will not snap because A!=00.
Additional Information I do not know how broad this issue is but it seems very general so I just picked neodrv.c since that's what I do all my debugging in.

The example applies to a write to YM2610 from the Z80 using the OUT instruction that is triggered by the insert coin sound, it's one of the only sounds that seem to cause the debugger to actually snap (since it writes 00 to the 2610).
Github Commit
Flags
Regression Version
Affected Sets / Systems
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
2
User avatar
No.05606
Tafoid
Administrator
Feb 1, 2010, 17:57
Adjusted steps to reproduce. I'll leave this open and ask for any Devs who are more knowledgeable about the code to critique.
User avatar
No.05615
Kale
Developer
Feb 3, 2010, 11:29
edited on: Feb 3, 2010, 11:29
Mmh ... maybe it's actually writing to the mirrors, hence it doesn't write to port 0x0004 but to 0x**04?

AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)