Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
03260 Crash/Freeze Minor Always Jun 13, 2009, 19:46 Jun 27, 2019, 23:14
Tester Haze View Status Public Platform MAME (Self-compiled)
Assigned To Resolution Open OS
Status [?] Confirmed Driver
Version 0.132 Fixed in Version Build Normal
Fixed in Git Commit Github Pull Request #
Summary 03260: gng: gng will freeze in attract mode after a while, but can still be coined up
Description if you leave gng running for long enough then it will freeze in the atttract mode

The log file ends up full of the following (I don't know exactly when they're generated)

Physical width 1253, height 964
AY-3-8910/YM2149 using legacy output levels!
AY-3-8910/YM2149 using legacy output levels!
Soft reset
CPU 'maincpu' (PC=00006036): unmapped program memory byte write to 00003D01 = 00
CPU 'maincpu' (PC=0000615C): unmapped program memory byte write to 00003D01 = 01
CPU 'maincpu' (PC=0000D624): unmapped program memory byte read from 00003CF9
CPU 'maincpu' (PC=0000D624): unmapped program memory byte read from 00003CFA
CPU 'maincpu' (PC=0000D62B): unmapped program memory byte read from 00003CFC
CPU 'maincpu' (PC=0000D62B): unmapped program memory byte read from 00003CFD
CPU 'maincpu' (PC=0000D632): unmapped program memory byte write to 00006A89 = 06
CPU 'maincpu' (PC=0000D624): unmapped program memory byte read from 00003CF9
CPU 'maincpu' (PC=0000D624): unmapped program memory byte read from 00003CFA
CPU 'maincpu' (PC=0000D62B): unmapped program memory byte read from 00003CFC
CPU 'maincpu' (PC=0000D62B): unmapped program memory byte read from 00003CFD
CPU 'maincpu' (PC=0000D632): unmapped program memory byte write to 00006A89 = 06
CPU 'maincpu' (PC=0000D624): unmapped program memory byte read from 00003CF9
CPU 'maincpu' (PC=0000D624): unmapped program memory byte read from 00003CFA
CPU 'maincpu' (PC=0000D62B): unmapped program memory byte read from 00003CFC
CPU 'maincpu' (PC=0000D62B): unmapped program memory byte read from 00003CFD
CPU 'maincpu' (PC=0000D632): unmapped program memory byte write to 00006A89 = 06

It took about 1 hour to freeze at 1000% speed here. The game could still be coined up and played after this.

It always freezes at the same point, it's probably some combination of random events that results in a scenario where the game gets stuck

(this was also reported on mametesters, with a screenshot but I can no longer access my post)
Steps To Reproduce
Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems gng
Attached Files
png file icon 192569-0000.png (10,705 bytes) Jun 13, 2009, 23:30
Relationships
There are no relationship linked to this issue.
Notes
3
User avatar
No.04501
Tafoid
Administrator
Jun 13, 2009, 23:30
I saw the posting as well. If you've confirmed it, Haze, I'll set it as confirmed.
Adding the screenshot.
User avatar
No.16577
codefrog2002
Tester
Jun 21, 2019, 00:38
This is an original arcade bug specific to 'gng' version. It was fixed in other versions such as gnga, gngc and gngt.

GNG version code (from disassembly)
```
DISPATCH_IM1_MA3_MB:
000~6a8d:d6 08: LDB DP[VB_MODE_MB]
000~6a8f:58: ASLB
000~6a90:8e 6a 95: LDX #DTAB_IM1_MA3
000~6a93:6e 95: JMP [B,X]

DTAB_IM1_MA3: (from disassembly)
000~6a95:6a9d: dc.l DTAB_IM1_MA3_ptr_0
000~6a97:6b2a: dc.l DTAB_IM1_MA3_ptr_1
000~6a99:6b49: dc.l DTAB_IM1_MA3_ptr_2
000~6a9b:6b49: dc.l DTAB_IM1_MA3_ptr_2
DTAB_IM1_MA3_ptr_0:
000~6a9d:d6 0b: LDB DP[VB_MODE_MC]
```

GNGA version code
```
DISPATCH_IM1_MA3_MB:
000~6a8d:d6 08: LDB DP[VB_MODE_MB]
000~6a8f:58: ASLB
000~6a90:8e 6a 95: LDX #DTAB_IM1_MA3
000~6a93:6e 95: JMP [B,X]

DTAB_IM1_MA3:
000~6a95:6a9f: dc.l DTAB_IM1_MA3_ptr_0
000~6a97:6b2c: dc.l DTAB_IM1_MA3_ptr_1
000~6a99:6b4b: dc.l DTAB_IM1_MA3_ptr_2
000~6a9b:6b4b: dc.l DTAB_IM1_MA3_ptr_2
000~6a9d:6b4b: dc.l DTAB_IM1_MA3_ptr_2
DTAB_IM1_MA3_ptr_0:
000~6a9f:d6 0b: LDB DP[000b]
```
Note that the GNGA version has one more entry in the DTAB_IM1_MA3 table.
It turns out that once in a while the switch value in address 08 [referred to as VB_MODE_MB] can be 04.
The gng jump table doesn't have enough entries so it jumps to the address d60b formed by the next instruction found at 6a9d. Surprisingly this doesn't crash, it just prevents the state machine from advancing any more, leading to a soft freeze.
User avatar
No.16594
MetalGod
Senior Tester
Jun 27, 2019, 23:14
So, in order to check this, it would require to test a world set 1 original board for more than 10 hours !!
Added to my "Arcade game issues that require pcb verification" list in mameworld forums