bygone freezes in the following screen.
1) Game over
2) Finished name entry
3) Selected continue or not
4) "Player X Start" screen in re-starting after the softreset
The trigger of freeze for case 4 is "softreset" which original doesn't have so that it is special case though.
But from the view of one of cheat searcher, softreset is often used so that it is very serious problem.
Infinite loop happens in the following routine.
Code:
860D: C9 ret
860E: 4F ld c,a
860F: 3A 82 F0 ld a,($F082)
8612: CB 5F bit 3,a
8614: C0 ret nz
8615: 21 FF E7 ld hl,$E7FF
8618: 7E ld a,(hl)
8619: 71 ld (hl),c
861A: BE cp (hl)
861B: 32 A3 F0 ld ($F0A3),a
861E: 28 FA jr z,$861A
8620: C9 ret
It's mysterious routine. $F082 is DIP 3 and $F0A3 is "unknown" RAM and $E7FF is last address of work RAM and ONLY read/write this routine.
1) Check DIP 3-4. Nothing if it's OFF.
2) Load old value from $E7FF then store new value.
3) Check old vs new values.
4) Store old value into $F0A3.
5) If old != new, return. Otherwise, loop to check new vs new (!) until new != new is TRUE forever....
Old value == new value is trigger for the infinite loop. And no way to restore from infinite loop right now.
DIP 3-4 is 6th unknown item and default is ON. Perhaps it will be "Dont Turn ON/Always Fixed OFF". We know this type DIP in some games.
So default state should be OFF to prevent from freezing.
NOTE : 5th unknown DIP is "Allow Continue".
[ATTACHED IMAGE]
"Any company has no power to stop people emulating"
MAME is the emulator of no giving in the pressure from any company even if they don't allow