Viewing Issue Advanced Details Jump to Notes ] a2600.cpp
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
05345 Core Major Always Oct 30, 2013, 20:45 Sep 26, 2015, 19:38
Tester Tafoid View Status Public Platform MESS (Official Binary)
Assigned To Resolution Fixed OS Windows Vista/7/8 (64-bit)
Status [?] Resolved   Driver a2600.cpp
Version 0.150 Fixed in Version 0.166 Build Normal
Summary MESS-specific 05345: a2600 [dodgeem, haunted]: Assorted issues related to 6502 CPU
Description Suspected to timing issues of the core, the following happens:

Dodge Em (dodgeem) - Audio is incorrect. Wrong types of sound play at wrong times.
Haunted House (haunted) - Graphics are offset - impossible to play correctly. Eye should start on the right side.

Steps To Reproduce
Additional Information All issued traced to either initial change of the new 6502 core or the IRQ fixes shortly after
(r18875, r18880)
Flags
Regression Version 0.147u3
Affected Sets / Systems a2600 [dodgeem, haunted]
Attached Files
zip file icon HH-FIXED.zip (3,481 bytes)  Sep 16, 2015, 13:40 by trebor
Hacked version which corrects the instruction at $F44F, and it runs as expected in MESS.


-  Notes
User avatar
No.10071
wilbert
(Developer)
Dec 15, 2013, 19:34
Reimplemented FE mapper in revision 26624, fixes decathln.
User avatar
No.10085
wilbert
(Developer)
Dec 20, 2013, 18:15
For dodgeem the instructions executed is exactly the same between the old and new cpu core. So I am guessing the incorrect sound there is caused by ghost reads of writes.
User avatar
No.12032
trebor
(Tester)
Sep 16, 2015, 13:37
Regarding Haunted House...Courtesy of Mike Saarna:

""Reading a write-only register on most 2600s returns the last value on the bus, and the last value on the bus is the last byte in the opcode.

The HH programmer made a typo. At $F44F the game is sutracting using the value in $0f, instead of subtracting using the literal value $0f. Since the last byte of the opcode is $0f, most 2600s will pull this value and wind up working as intended. But on 1 out of 100 2600s, the "last value on the bus" result doesn't happen. Same is true for emulators that don't similarly handle reads from write-only registers.

I've attached a hacked version of the HH bin which corrects the instruction at $F44F, and it runs as expected in MESS.

The 7800 has the same bus effects in places too, BTW."
User avatar
No.12033
trebor
(Tester)
Sep 16, 2015, 13:43
Sorry old habit, MESS=MAME :)
User avatar
No.12034
trebor
(Tester)
Sep 17, 2015, 01:21
Regarding Dodge 'Em...Again, courtesy of Mike Saarna:

"Dodge Em has a similar program error... actually 2 of them. One at $F149, and another at $FBAC. The latter one is responsible for messing up the sound."
User avatar
No.12048
Tafoid
(Administrator)
Sep 26, 2015, 19:38
https://github.com/mamedev/mame/commit/80b274e7ed97be04821cb6658a154ea11203b8ff
a2600: new 6502 PC=cur inst, old 6502 PC=prev inst (MT 5345) [Mike Saarna, Trebor, R. Belmont]