mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:13:13 -06:00
Handle Overflow in CPUSPD
Edge case where the CPU speed detection routine would overflow in a fast emulator and return a speed of 0.000 MHz. Modified to fail back to the default CPU speed from the config file if an overflow occurs.
This commit is contained in:
@@ -1908,7 +1908,7 @@ HB_CPU1:
|
||||
; LATER.
|
||||
;
|
||||
CALL HB_CPUSPD ; DYNAMIC CPU SPEED DETECTION
|
||||
JR NZ,HB_CPUSPD2 ; SKIP AHEAD IF FAILED
|
||||
JR NZ,HB_CPU2 ; SKIP AHEAD IF FAILED
|
||||
;
|
||||
; RECORD THE UPDATED CPU OSCILLATOR SPEED
|
||||
;
|
||||
@@ -1921,7 +1921,7 @@ HB_CPU1:
|
||||
;
|
||||
LD (HB_CPUOSC),HL ; RECORD MEASURED SPEED
|
||||
;
|
||||
HB_CPUSPD2:
|
||||
HB_CPU2:
|
||||
;
|
||||
; INIT CPUKHZ BASED ON OSCILLATOR SPEED
|
||||
;
|
||||
@@ -6299,14 +6299,15 @@ HB_CPUSPD1:
|
||||
POP AF
|
||||
OUT0 (Z180_DCNTL),A
|
||||
#ENDIF
|
||||
;
|
||||
LD A,H
|
||||
OR L
|
||||
RET Z ; FAILURE, USE DEFAULT CPU SPEED
|
||||
;
|
||||
; MOVE LOOP COUNT TO HL
|
||||
PUSH DE
|
||||
POP HL
|
||||
;
|
||||
; CHECK FOR OVERFLOW (NOT TICKING)
|
||||
LD A,H
|
||||
OR L
|
||||
JR Z,HB_CPUSPD2 ; FAILURE, USE DEFAULT CPU SPEED
|
||||
;
|
||||
; TIMES 4 FOR CPU SPEED IN KHZ
|
||||
; RES 0,L ; GRANULARITY
|
||||
@@ -6366,14 +6367,14 @@ HB_RDSEC:
|
||||
CALL DSRTC_END ; FINISH IT
|
||||
LD A,E ; VALUE TO A
|
||||
RET
|
||||
;
|
||||
#ELSE
|
||||
;
|
||||
OR $FF ; SIGNAL ERROR
|
||||
RET ; NO RTC, ABORT
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
HB_CPUSPD2:
|
||||
; HANDLE NO RTC OR NOT TICKING
|
||||
OR $FF ; SIGNAL ERROR
|
||||
RET ; AND DONE
|
||||
;
|
||||
; SYSTEM CHECK: DUMP MACHINE STATE AND CONTINUE?
|
||||
;
|
||||
SYSCHKA:
|
||||
|
||||
Reference in New Issue
Block a user