Senryoku / Deecy

Experimental Dreamcast emulator written in Zig
3 stars 0 forks source link

Crash in ReleaseSafe and Debug #28

Closed Senryoku closed 2 months ago

Senryoku commented 2 months ago

Boot ROM jumps to 0C00B500, which is only NOPs in ReleaseSafe, but actual code when compiled in ReleaseFast. Debug mode has the same issue... half of the time -.-"

Apparently something is very wrong when jumping to interrupts. Debug build before a crash:

[8C0000EA] 0010001100010010 mov.l R1,@R3         R3 =8C000F78, R1 =24486403, T=0, Q=0, M=0
[8C0000EA]             2312                      R3 =8C000F78, R1 =24486403, T=0, Q=0, M=0
[8C0000EC] 0111001100000100 add #4,R3            R3 =8C000F78, R0 =80000F7C, T=0, Q=0, M=0
[8C0000EC]             7304                      R3 =8C000F7C, R0 =80000F7C, T=0, Q=0, M=0
[00000600] 0010111100000110 mov.l R0,@-R15       R15=8C00F400, R0 =00000000, T=0, Q=0, M=0 <-- What? 
[00000600]             2F06                      R15=8C00F3FC, R0 =00000000, T=0, Q=0, M=0
[00000602] 1101000001100011 mov.l @(99,PC),R0    R0 =00000000, R6 =00000000, T=0, Q=0, M=0
[00000602]             D063                      R0 =FF000000, R6 =00000000, T=0, Q=0, M=0

R0 is reset to 0 (bank switching?). Debug build in a working run:

[8C0000EA] 0010001100010010 mov.l R1,@R3         R3 =8C000F78, R1 =24486403, T=0, Q=0, M=0
[8C0000EA]             2312                      R3 =8C000F78, R1 =24486403, T=0, Q=0, M=0
[8C0000EC] 0111001100000100 add #4,R3            R3 =8C000F78, R0 =80000F7C, T=0, Q=0, M=0
[8C0000EC]             7304                      R3 =8C000F7C, R0 =80000F7C, T=0, Q=0, M=0
[00000600] 0010111100000110 mov.l R0,@-R15       R15=8C00F400, R0 =80000F7C, T=0, Q=0, M=0
[00000600]             2F06                      R15=8C00F3FC, R0 =80000F7C, T=0, Q=0, M=0
[00000602] 1101000001100011 mov.l @(99,PC),R0    R0 =80000F7C, R6 =00000000, T=0, Q=0, M=0
[00000602]             D063                      R0 =FF000000, R6 =00000000, T=0, Q=0, M=0

R0 is used afterwards.

Senryoku commented 2 months ago

Possibly fixed by d3829cc