Popful Mail

Ask anything your want about Mega/SegaCD programming.

Moderator: Mask of Destiny

Near
Very interested
Posts: 109
Joined: Thu Feb 28, 2008 4:45 pm

Popful Mail

Post by Near » Sat Aug 24, 2019 1:58 am

Having a lot of trouble getting this game to boot. It's hanging at the Sega logo, pretty much immediately after the main CPU starts executing code that wasn't from the BIOS. It goes pretty quickly into a trap instruction, which I feel is a sign that things have gone off the rails immediately.

Unfortunately I am incredibly lost without another emulator with trace logging to compare results against here ... so as a long shot, would anyone here be able to help with getting a trace log of the two 68Ks during boot-up for this game from a working emulator, or looking for any issues in this small amount of 68K code that I can execute? :/

Sorry to be a bother v_v;

I'll keep at it on my end as well, of course ..

Code: Select all

/* MCD */

l_3a26:
  bsr     l_0039f4
  rts

l_3f94:
  move.l  (a7)+,($005b26)
  rts

l_0562:
  move.w  #$0009,d0
  bsr     l_5f1c

l_3c52:
  bcs     l_3a26
  bclr.b  #$03,($005b24)
  bra     l_3a26

l_056c:
  bra     l_0528

l_0528:
  bra     l_0530

l_0530:
  bra     l_0410

l_062c:
  moveq   #$00,d0
  move.l  d0,($ff8020)
  move.l  d0,($ff8028)
  move.l  d0,($ff802c)
  move.l  #$532d4f4b,($ff8020)
l_6056:
  move.l  ($ff8010),d0
  cmp.l   ($ff8010),d0
  bne     l_6056
  cmpi.l  #$4d2d4f4b,d0
  bne     l_6056
l_6072:
  move.l  ($ff8010),d0
  cmp.l   ($ff8010),d0
  bne     l_6072
  tst.l   d0
  bne     l_6072
  bra     l_6d20

l_6d20:
  btst.b  #$00,($ff800e)
  beq     l_6d20
  movem.l ($ff8010),d0,d1,d2
  jsr     l_6d5e
  movem.l d0,d1,d2,($ff8020)
  bset.b  #$00,($ff800f)
l_6d46:
  btst.b  #$00,($ff800e)
  bne     l_6d46
  bclr.b  #$00,($ff800f)
  bra     l_6d20

l_6d5e:
  bra     l_7498

l_7498:
  move.w  ($0074d0),($005f7c)
  move.w  ($0074d0),($005f82)
  move.l  #$00006e4a,($005f7e)
  move.l  #$00006f02,($005f84)
  move.w  ($0074d2),($005f7c)
  move.w  ($0074d2),($005f82)
  bset.b  #$03,($ff8033)
  st      ($ff8031)
  rts

Code: Select all

/* CPU */

l_ff0000:
  move.l  #$00000280,($fffd02)
  lea     $a12001,a5
l_ff000e:
  bset.b  #$01,(a5)
  beq     l_ff000e
  move.w  ($ff0154),($020528)
l_ff001c:
  bclr.b  #$01,(a5)
  bne     l_ff001c
  lea     $ff002e,a1
  jsr     ($000364)
  bra     l_ff0156

l_ff0156:
  lea     $ffff00,a0
  moveq   #$1f,d7
l_ff051e:
  clr.l   (a0)+
  dbf     d7,l_ff015e
  move.w  #$0024,($ffff00)
  move.w  #$0000,($ffff02)
  bra     l_ff0300

l_ff0300:
  bsr     l_ff0c5a

l_ff0c5a:
  move.w  #$0100,($a11100)
  moveq   #$00,d0
  move.b  d0,($a1200e)
  move.l  d0,($a12010)
  move.l  d0,($a12014)
  move.l  d0,($a12018)
  move.l  d0,($a1201c)
l_ff0c82:
  move.l  ($a12020),d0
  cmp.l   ($a12020),d0
  bne     l_ff0c82
  move.l  #$4d2d4f4b,($a12010)
l_ff0ca2:
  move.l  ($a12020),d0
  cmp.l   ($a12020),d0
  bne     l_ff0ca2
  tst.l   d0
  bne     l_ff0ca2
  move.l  ($a12020),d0
  cmp.l   ($a12020),d0
  bne     l_ff0ca2
  clr.l   ($a12010)
  move.l  #$00000288,($fffd02)
  move.l  #$00ff03ac,($fffd1a)
  move.l  #$00ff051a,($fffd20)
  move.l  #$00ff0568,($fffd26)
  move.l  #$00ff09fe,($fffd2c)
  move.l  #$00ff0a1e,d0
  move.l  d0,($fffd7a)
  move.l  d0,($fffd80)
  move.l  d0,($fffd86)
  move.l  d0,($fffd8c)
  move.l  d0,($fffd92)
  move.l  d0,($fffd98)
  move.l  d0,($fffd9e)
  move.l  d0,($fffda4)
  move    sr,-(a7)
  move    #$2700,sr
  move.w  #$0004,d0
l_ff0d12:
  trap    #0

l_fffd18:  //trap #0
  jmp     l_ff03ac

l_ff03ac:
  movem.l d0,d1,d2,($a12010)
  jsr     l_fe03c6
  movem.l ($a12020),d0,d1,d2
  rte

l_fe03c6:
  bra     l_ff04b2

l_ff04b2:
  bset.b  #$00,($a1200e)
  btst.b  #$00,($a1200f)
  beq     l_ff04ba

l_ff04ba:
  btst.b  #$00,($a1200f)
  beq     l_ff04ba
  bclr.b  #$00,($a1200e)
l_ff04cc:
  btst.b  #$00,($a1200f)
  bne     l_ff04cc
  rts
Here's an interleaved, masked (as in each instruction is only logged the first time it's executed) trace log.
Format: <CPU ID> <# of unique instructions executed thus far since boot, excluding opcodes from the BIOS> <PC> <opcode word> <disassembly> <D registers> <flags> <A registers>

Code: Select all

/* Trace */

MCD     2791  00054e  4eb8  jsr     ($005f22)                                                   00000081 0000007f 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznX 00005b3c 00005ad2 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2792  000552  303c  move.w  #$0001,d0                                                   00023401 0000007f 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznx 00005e80 00005ad2 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2793  000556  6100  bsr     $005f1c                                                     00020001 0000007f 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznx 00005e80 00005ad2 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2794  00055a  0838  btst.b  #$07,($005e80)                                              00028001 0000007f 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznx 00003cd4 00005ad2 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2795  000560  66e4  bne     $000546                                                     00028001 0000007f 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznx 00003cd4 00005ad2 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
CPU        2  ff0000  21fc  move.l  #$00000280,($fffd02)                                        00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvznx fffffdda ffff8000 0023f818 00000000 00a1200f 00c00000 fffffdf0 fffffcfc 00000000
CPU        3  ff0008  4bf9  lea     $a12001,a5                                                  00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvznx fffffdda ffff8000 0023f818 00000000 00a1200f 00c00000 fffffdf0 fffffcfc 00000000
CPU        4  ff000e  08d5  bset.b  #$01,(a5)                                                   00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvznx fffffdda ffff8000 0023f818 00000000 00a1200f 00a12001 fffffdf0 fffffcfc 00000000
CPU        5  ff0012  67fa  beq     $ff000e                                                     00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvZnx fffffdda ffff8000 0023f818 00000000 00a1200f 00a12001 fffffdf0 fffffcfc 00000000
CPU        6  ff0014  33fa  move.w  ($ff0154),($020528)                                         00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvznx fffffdda ffff8000 0023f818 00000000 00a1200f 00a12001 fffffdf0 fffffcfc 00000000
CPU        7  ff001c  0895  bclr.b  #$01,(a5)                                                   00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvznx fffffdda ffff8000 0023f818 00000000 00a1200f 00a12001 fffffdf0 fffffcfc 00000000
CPU        8  ff0020  66fa  bne     $ff001c                                                     00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvznx fffffdda ffff8000 0023f818 00000000 00a1200f 00a12001 fffffdf0 fffffcfc 00000000
CPU        9  ff0022  43fa  lea     $ff002e,a1                                                  00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvZnx fffffdda ffff8000 0023f818 00000000 00a1200f 00a12001 fffffdf0 fffffcfc 00000000
CPU       10  ff0026  4eb8  jsr     ($000364)                                                   00000014 ffffffff 00000008 0000447a 0000ffff 00004537 0000ffff 0000ffff tS0cvZnx fffffdda ffff002e 0023f818 00000000 00a1200f 00a12001 fffffdf0 fffffcfc 00000000
MCD     2796  000562  303c  move.w  #$0009,d0                                                   00020001 0000007f 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00003cd4 00005ad2 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2797  000566  6100  bsr     $005f1c                                                     00020009 0000007f 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznx 00003cd4 00005ad2 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2798  003c52  6500  bcs     $003a26                                                     00020034 00000001 00000000 00000000 00000000 00000000 00000000 00000006 tS0cvznx 00003c52 00005b52 00000000 00000000 00000000 00000000 00000000 00005e68 00000000
MCD     2799  003c56  08ad  bclr.b  #$03,($005b24)                                              00020034 00000001 00000000 00000000 00000000 00000000 00000000 00000006 tS0cvznx 00003c52 00005b52 00000000 00000000 00000000 00000000 00000000 00005e68 00000000
MCD     2800  003c5c  6000  bra     $003a26                                                     00020034 00000001 00000000 00000000 00000000 00000000 00000000 00000006 tS0cvznx 00003c52 00005b52 00000000 00000000 00000000 00000000 00000000 00005e68 00000000
MCD     2801  00056c  60ba  bra     $000528                                                     00020004 00000000 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00003c52 00005b52 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2802  000528  6006  bra     $000530                                                     00020004 00000000 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00003c52 00005b52 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2803  000530  6000  bra     $000410                                                     00020004 00000000 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00003c52 00005b52 00000000 00000000 00000000 00000000 00000000 00005e7c 00000000
MCD     2804  00602c  7000  moveq   #$00,d0                                                     00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2805  006034  23c0  move.l  d0,($ff8020)                                                00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2806  006040  23c0  move.l  d0,($ff8028)                                                00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2807  006046  23c0  move.l  d0,($ff802c)                                                00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2808  00604c  23fc  move.l  #$532d4f4b,($ff8020)                                        00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2809  006062  66f2  bne     $006056                                                     00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2810  00606a  66ea  bne     $006056                                                     00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0CvzNx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
CPU       11  ff002a  6000  bra     $ff0156                                                     f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 000000b4 tS0cvznx fffffdda ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       12  ff0156  41f9  lea     $ffff00,a0                                                  f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 000000b4 tS0cvznx fffffdda ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       13  ff015c  7e1f  moveq   #$1f,d7                                                     f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 000000b4 tS0cvznx 00ffff00 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       14  ff015e  4298  clr.l   (a0)+                                                       f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000001f tS0cvznx 00ffff00 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       15  ff0160  51cf  dbf     d7,$ff015e                                                  f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000001f tS0cvZnx 00ffff04 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       16  ff0164  31fc  move.w  #$0024,($ffff00)                                            f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       17  ff016a  31fc  move.w  #$0000,($ffff02)                                            f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       18  ff0170  6000  bra     $ff0300                                                     f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       19  ff0300  6100  bsr     $ff0c5a                                                     f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcfc 00000000
CPU       20  ff0c5a  33fc  move.w  #$0100,($a11100)                                            f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       21  ff0c62  7000  moveq   #$00,d0                                                     f2fe08a2 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       22  ff0c64  13c0  move.b  d0,($a1200e)                                                00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       23  ff0c6a  23c0  move.l  d0,($a12010)                                                00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       24  ff0c70  23c0  move.l  d0,($a12014)                                                00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       25  ff0c76  23c0  move.l  d0,($a12018)                                                00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       26  ff0c7c  23c0  move.l  d0,($a1201c)                                                00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       27  ff0c82  2039  move.l  ($a12020),d0                                                00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       28  ff0c88  b0b9  cmp.l   ($a12020),d0                                                532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       29  ff0c8e  66f2  bne     $ff0c82                                                     532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       30  ff0c90  0c80  cmpi.l  #$532d4f4b,d0                                               532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       31  ff0c96  66ea  bne     $ff0c82                                                     532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       32  ff0c98  23fc  move.l  #$4d2d4f4b,($a12010)                                        532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       33  ff0ca2  2039  move.l  ($a12020),d0                                                532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       34  ff0ca8  b0b9  cmp.l   ($a12020),d0                                                532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       35  ff0cae  66f2  bne     $ff0ca2                                                     532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       36  ff0cb0  4a80  tst.l   d0                                                          532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       37  ff0cb2  66ee  bne     $ff0ca2                                                     532d4f4b 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
MCD     2811  006072  2039  move.l  ($ff8010),d0                                                4d2d4f4b 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2812  006078  b0b9  cmp.l   ($ff8010),d0                                                4d2d4f4b 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2813  00607e  66f2  bne     $006072                                                     4d2d4f4b 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
MCD     2814  006082  66ee  bne     $006072                                                     4d2d4f4b 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvznx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
CPU       38  ff0cb4  42b9  clr.l   ($a12010)                                                   00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       39  ff0cba  21fc  move.l  #$00000288,($fffd02)                                        00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvZnx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       40  ff0cc2  21fc  move.l  #$00ff03ac,($fffd1a)                                        00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
MCD     2815  006d20  0839  btst.b  #$00,($ff800e)                                              00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
CPU       41  ff0cca  21fc  move.l  #$00ff051a,($fffd20)                                        00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
MCD     2816  006d28  67f6  beq     $006d20                                                     00000000 00006020 00000000 00000000 00000000 00000000 00000000 00000000 tS0cvZnx 00005f40 00006000 00000000 00000000 00000000 00000000 00000000 00005e78 00000000
CPU       42  ff0cd2  21fc  move.l  #$00ff0568,($fffd26)                                        00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       43  ff0cda  21fc  move.l  #$00ff09fe,($fffd2c)                                        00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       44  ff0ce2  203c  move.l  #$00ff0a1e,d0                                               00000000 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       45  ff0ce8  21c0  move.l  d0,($fffd7a)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       46  ff0cec  21c0  move.l  d0,($fffd80)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       47  ff0cf0  21c0  move.l  d0,($fffd86)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       48  ff0cf4  21c0  move.l  d0,($fffd8c)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       49  ff0cf8  21c0  move.l  d0,($fffd92)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       50  ff0cfc  21c0  move.l  d0,($fffd98)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       51  ff0d00  21c0  move.l  d0,($fffd9e)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       52  ff0d04  21c0  move.l  d0,($fffda4)                                                00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       53  ff0d08  40e7  move    sr,-(a7)                                                    00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf8 00000000
CPU       54  ff0d0a  46fc  move    #$2700,sr                                                   00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS0cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf6 00000000
CPU       55  ff0d0e  303c  move.w  #$0004,d0                                                   00ff0a1e 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS7cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf6 00000000
CPU       56  ff0d12  4e40  trap    #0                                                          00ff0004 00000008 0000ffff 0000011b 0000ffff 00004537 00000113 0000ffff tS7cvznx 00ffff80 ffff0154 fffffdb4 00000000 fffffb86 000061ba 0000611e fffffcf6 00000000

TascoDLX
Very interested
Posts: 262
Joined: Tue Feb 06, 2007 8:18 pm

Re: Popful Mail

Post by TascoDLX » Sat Aug 24, 2019 9:09 am

Traps are being used as normal function calls on the main CPU side to signal the sub CPU. Parameters are passed via the comm regs to tell the sub to execute certain functions, then main waits to sync up with sub on completion.

Would need to look at trace past the first trap call to know what's going wrong. You should see:
- main writes function params to comm and raise its comm flag
- sub picks it up and executes while main spins
- once done, sub raises its own flag to acknowledge
- main resets its flag in response to sync back
- finally, sub resets its flag then returns to idle

Near
Very interested
Posts: 109
Joined: Thu Feb 28, 2008 4:45 pm

Re: Popful Mail

Post by Near » Sat Aug 24, 2019 1:46 pm

Ah shoot, so I was going down the wrong tangent looking at what was causing the trap when that was actually valid.

Okay, that helps, thank you very much. I will disassemble everything until the actual stall and see where that gets me to.

Chilly Willy
Very interested
Posts: 2984
Joined: Fri Aug 17, 2007 9:33 pm

Re: Popful Mail

Post by Chilly Willy » Sat Aug 24, 2019 6:38 pm

Remember this table in MD work ram...

Code: Select all

;  OS system RAM assignments
;  jump table
;  vector table is 6 bytes each, but an address only needs 4 bytes.
;  Each table entry contains 2 bytes of table data and 4 bytes of 
;  address.  In other code, when you see these vectors accessed, they
;  will always be accessed with a +2, and that is why.

os_sys_ram      equ     $fffd00
_reset          equ     os_sys_ram      ;fffd00 -reset jump table
_mlevel6        equ     _reset+6        ;fffd06 -V interrupt
_mlevel4        equ     _mlevel6+6      ;fffd0c -H interrupt
_mlevel2        equ     _mlevel4+6      ;fffd12 -external interrupt
_mtrap00        equ     _mlevel2+6      ;fffd18 -TRAP #00
_mtrap01        equ     _mtrap00+6      ;fffd1e
_mtrap02        equ     _mtrap01+6      ;fffd24
_mtrap03        equ     _mtrap02+6      ;fffd2a
_mtrap04        equ     _mtrap03+6      ;fffd30
_mtrap05        equ     _mtrap04+6      ;fffd36
_mtrap06        equ     _mtrap05+6      ;fffd3c
_mtrap07        equ     _mtrap06+6      ;fffd42
_mtrap08        equ     _mtrap07+6      ;fffd48
_mtrap09        equ     _mtrap08+6      ;fffd4e
_mtrap10        equ     _mtrap09+6      ;fffd54
_mtrap11        equ     _mtrap10+6      ;fffd5a
_mtrap12        equ     _mtrap11+6      ;fffd60
_mtrap13        equ     _mtrap12+6      ;fffd66
_mtrap14        equ     _mtrap13+6      ;fffd6c
_mtrap15        equ     _mtrap14+6      ;fffd72
_monkerr        equ     _mtrap15+6      ;fffd78 -onk
_madrerr        equ     _monkerr+6      ;fffd7e -address error
_mcoderr        equ     _monkerr+6      ;fffd7e -undefined code
_mdiverr        equ     _mcoderr+6      ;fffd84 -divide error
_mtrperr        equ     _mdiverr+6      ;fffd8e
_mnocod0        equ     _mtrperr+6      ;fffd90
_mnocod1        equ     _mnocod0+6      ;fffd96
_mspverr        equ     _mnocod1+6      ;fffd9c
_mtrace         equ     _mspverr+6      ;fffda2
_vint_ex        equ     _mtrace+6       ;fffda8
The startup code for the MD side sets a bunch of those vectors, including the TRAP #0.

Near
Very interested
Posts: 109
Joined: Thu Feb 28, 2008 4:45 pm

Re: Popful Mail

Post by Near » Thu Mar 04, 2021 2:25 am

This has become my white whale ^-^;

So I'm aware both Kega Fusion and Gens require the 'perfect sync' option to run this game.
I've set my emulator to sync all components after each component steps by one cycle.
I can confirm that's working by seeing my FPS drop from 204fps to 78fps.
My 68K core's timing passes all edge cases in yacht.txt, and though I've heard it's imperfect, I don't know what the errors in it are.
My Z80 core's timing is about 99% right, but I've heard it had tiny timing issues with a ZX Spectrum emulator using it.
VDP DMAs that stall the CPU cause the CPU to cycle step and sync every other component as well.
Doesn't matter whether I enable CPU DRAM refresh (both internal and external) stalls or not.
About the only thing I don't really do is VDP FIFO stalls, but we haven't gotten to the game drawing anything yet so I hope that isn't critical here.

I'm using jp_mcd2_921222 for my BIOS.
CPU runs at 7670454hz NTSC, MCD at 12500000hz.

Masked trace log: https://near.sh/temp/popful-mail-jp-masked.txt
Much larger unmasked log with loops omitted: https://near.sh/temp/popful-mail-jp-unmasked.zip
Much larger unmasked log without loops omitted: https://near.sh/temp/popful-mail-jp-unrolled.zip

I've confirmed the TRAP instructions are doing the right thing: hitting the BIOS ROM jump tables that then go through $fffd00+ as expected.

Stall point:

Code: Select all

MCD  006d2a  movem.l ($ff8010),d0,d1,d2                                    d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc6c sp:00000000 tS0cvZnx
MCD  006d32  jsr     ($006d6a)                                             d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvznx
MCD  006d6a  bra     $00759e                                               d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e74 sp:00000000 tS0cvznx
MCD  00759e  move.w  d1,d7                                                 d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e74 sp:00000000 tS0cvznx
MCD  0075a0  andi.b  #$1d,d7                                               d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003002 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e74 sp:00000000 tS0cvznx
MCD  0075a4  move.b  d7,($ff8003)                                          d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e74 sp:00000000 tS0cvZnx
MCD  0075aa  rts                                                           d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e74 sp:00000000 tS0cvZnx
MCD  006d36  movem.l d0,d1,d2,($ff8020)                                    d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvZnx
MCD  006d3e  bset.b  #$00,($ff800f)                                        d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvZnx
MCD  006d46  btst.b  #$00,($ff800e)                                        d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvZnx
MCD  006d4e  bne     $006d46                                               d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvznx
[Omitted: 8]
CPU  ff04c4  bclr.b  #$00,($a1200e)                                        d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc6c sp:00000000 tS0cvznx
CPU  ff04cc  btst.b  #$00,($a1200f)                                        d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc6c sp:00000000 tS0cvznx
[Omitted: 6]
MCD  006d50  bclr.b  #$00,($ff800f)                                        d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvZnx
CPU  ff04d4  bne     $ff04cc                                               d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc6c sp:00000000 tS0cvznx
MCD  006d58  bra     $006d20                                               d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvznx
MCD  006d20  btst.b  #$00,($ff800e)                                        d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvznx
MCD  006d28  beq     $006d20                                               d0:00000010 d1:53443002 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00ff8001 a1:00005ace a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e78 sp:00000000 tS0cvZnx
[Omitted: 2]
CPU  ff04d6  rts                                                           d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc6c sp:00000000 tS0cvZnx
CPU  ff04e6  move.b  ($a12003),d2                                          d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvZnx
CPU  ff04ec  eor.b   d1,d2                                                 d0:00000010 d1:53443002 d2:00060001 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvznx
CPU  ff04ee  andi.b  #$05,d2                                               d0:00000010 d1:53443002 d2:00060003 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvznx
CPU  ff04f2  bne     $ff04d8                                               d0:00000010 d1:53443002 d2:00060001 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvznx
CPU  ff04d8  move.b  d1,d2                                                 d0:00000010 d1:53443002 d2:00060001 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvznx
CPU  ff04da  andi.b  #$02,d2                                               d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvznx
CPU  ff04de  move.b  d2,($a12003)                                          d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvznx
CPU  ff04e4  bsr     $ff04b2                                               d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc70 sp:00000000 tS0cvznx
CPU  ff04b2  bset.b  #$00,($a1200e)                                        d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc6c sp:00000000 tS0cvznx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00000010 d1:53443002 d2:00060002 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc6c sp:00000000 tS0cvZnx
Stall point without the loop detection in the logs, not as useful but just showing that the CPU+MCD are properly interleaving (it's at the cycle level, not instruction level):

Code: Select all

CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  007ad0  bne     $007aca                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  007aca  tst.w   ($006626)                                             d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
MCD  007ad0  bne     $007aca                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
MCD  007aca  tst.w   ($006626)                                             d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  007ad0  bne     $007aca                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  007aca  tst.w   ($006626)                                             d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
MCD  007ad0  bne     $007aca                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
MCD  007aca  tst.w   ($006626)                                             d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e64 sp:00000000 tS0cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD Interrupt: CDD
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  005f88  jmp     ($000628)                                             d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e5e sp:00000000 tS4cvznx
MCD  000628  movem.l d1,d2,d3,d4,d5,d6,d7/a0,a1,a2,a3,a4,a5,a6,a7,-(a7)    d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e5e sp:00000000 tS4cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  00062c  movea   #$00000000,a5                                         d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e22 sp:00000000 tS4cvznx
MCD  000632  bsr     $000e8c                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e22 sp:00000000 tS4cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  000e8c  bset.b  #$00,($00580a)                                        d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e1e sp:00000000 tS4cvznx
MCD  000e92  bne     $000ee6                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e1e sp:00000000 tS4cvZnx
MCD  000e96  btst.b  #$07,($00580a)                                        d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e1e sp:00000000 tS4cvZnx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  000e9c  beq     $000ee0                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e1e sp:00000000 tS4cvznx
MCD  000ea0  movem.l d3/a0,-(a7)                                           d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e1e sp:00000000 tS4cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  000ea4  bsr     $001094                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e16 sp:00000000 tS4cvznx
MCD  001094  btst.b  #$04,($00580e)                                        d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  00109a  beq     $0010f4                                               d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
MCD  00109c  lea     $005844,a4                                            d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00000000 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  0010a0  move.b  ($005845),d0                                          d0:00000014 d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
MCD  0010a4  andi.w  #$000f,d0                                             d0:0000000f d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
MCD  0010a8  move.b  d0,($00584f)                                          d0:0000000f d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  0010ac  add.w   d0,d0                                                 d0:0000000f d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
MCD  0010ae  add.w   d0,d0                                                 d0:0000001e d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
MCD  0010b0  jmp     ($0010f0)                                             d0:0000003c d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
CPU  ff04ba  btst.b  #$00,($a1200f)                                        d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  0010f0  bra     $0012be                                               d0:0000003c d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
MCD  0012be  andi.b  #$f8,($00580f)                                        d0:0000003c d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvznx
CPU  ff04c2  beq     $ff04ba                                               d0:00ff0008 d1:00000008 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ffff80 a1:ffff0154 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
MCD  0012c4  rts                                                           d0:0000003c d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e12 sp:00000000 tS4cvZnx
MCD  000ea8  bsr     $000ee8                                               d0:0000003c d1:0000001b d2:00000000 d3:00000000 d4:00000000 d5:00000000 d6:00000000 d7:0000d800 a0:00080000 a1:00007c30 a2:00000000 a3:00000000 a4:00005844 a5:00000000 a6:00000000 a7:00005e16 sp:00000000 tS4cvZnx
Last unique CPU code executed:

Code: Select all

CPU  ff04e6  move.b  ($a12003),d2                                          d0:00000010 d1:00ff8001 d2:0000ff00 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04ec  eor.b   d1,d2                                                 d0:00000010 d1:00ff8001 d2:0000ff01 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvznx
CPU  ff04ee  andi.b  #$05,d2                                               d0:00000010 d1:00ff8001 d2:0000ff00 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04f2  bne     $ff04d8                                               d0:00000010 d1:00ff8001 d2:0000ff00 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff04f4  rts                                                           d0:00000010 d1:00ff8001 d2:0000ff00 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcee sp:00000000 tS0cvZnx
CPU  ff0dd6  move.l  #$53443031,d1                                         d0:00000010 d1:00ff8001 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcf8 sp:00000000 tS0cvznx
CPU  ff0ddc  move.l  #$00060000,d2                                         d0:00000010 d1:53443031 d2:0000ffff d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcf8 sp:00000000 tS0cvznx
CPU  ff0de2  moveq   #$00,d0                                               d0:00000010 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcf8 sp:00000000 tS0cvznx
CPU  ff0de4  trap    #2                                                    d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcf8 sp:00000000 tS0cvZnx
CPU  fffd24  jmp     ($ff0568)                                             d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcf2 sp:00000000 tS0cvZnx
CPU  ff0568  movem.l d1,d2,d3,d4,d5,d6,d7/a0,a1,a2,a3,a4,a5,a6,-(a7)       d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcf2 sp:00000000 tS0cvZnx
CPU  ff056c  jsr     ($ff0576)                                             d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcba sp:00000000 tS0cvZnx
CPU  ff0576  bra     $ff05ae                                               d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcb6 sp:00000000 tS0cvZnx
CPU  ff05ae  movem.l d1,d2,d3,d4,d5,d6,d7/a0,a1,a2,a3,a4,a5,a6,a7,-(a7)    d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffcb6 sp:00000000 tS0cvZnx
CPU  ff05b2  lea     $ff0642,a0                                            d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:ffff10e8 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc7a sp:00000000 tS0cvZnx
CPU  ff05b6  move.l  d1,(a0)                                               d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc7a sp:00000000 tS0cvZnx
CPU  ff05b8  move.l  d2,($ff0646)                                          d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc7a sp:00000000 tS0cvznx
CPU  ff05bc  move.b  #$02,d1                                               d0:00000000 d1:53443031 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc7a sp:00000000 tS0cvznx
CPU  ff05c0  move.w  #$0010,d0                                             d0:00000000 d1:53443002 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc7a sp:00000000 tS0cvznx
CPU  ff05c4  trap    #0                                                    d0:00000010 d1:53443002 d2:00060000 d3:0000011b d4:0000ffff d5:00004537 d6:00000113 d7:0000ffff a0:00ff0642 a1:00ff0300 a2:fffffdb4 a3:00000000 a4:fffffb86 a5:000061ba a6:0000611e a7:fffffc7a sp:00000000 tS0cvznx
CPU Interrupt: Vblank
MCD Interrupt: External
MCD Interrupt: Timer
MCD Interrupt: CDD
MCD  002ca4  bsr     $000d26                                               d0:0200000d d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvZnx
MCD  002ca8  cmpi.b  #$00,d0                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cac  beq     $002cee                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cae  cmpi.b  #$01,d0                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cb2  beq     $002cee                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cb4  cmpi.b  #$04,d0                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cb8  beq     $002cee                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvZnx
MCD  002cee  move.w  #$2000,($005ad2)                                      d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvZnx
MCD  002cf4  move.w  #$0005,d1                                             d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cf8  swap    d1                                                    d0:02000004 d1:00000005 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cfa  move.w  ($005ae2),d1                                          d0:02000004 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002cfe  move.w  #$8020,d0                                             d0:02000004 d1:000501ff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002d02  bsr     $000b24                                               d0:02008020 d1:000501ff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ca4 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvzNx
MCD  000c0a  move.w  a0,d0                                                 d0:01ff0005 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvZnx
MCD  000c0c  lsr.w   #8,d0                                                 d0:01ff01ff d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvznx
MCD  000c0e  bclr.l  #$07,d0                                               d0:01ff0001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4CvznX
MCD  000c12  beq     $000c1e                                               d0:01ff0001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4CvZnX
MCD  000c1e  bsr     $000832                                               d0:01ff0001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4CvZnX
MCD  000c22  bsr     $000c7a                                               d0:00000001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvznx
MCD  000c7a  lsl.w   #4,d0                                                 d0:00000001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e26 sp:00000000 tS4cvznx
MCD  000c7c  lsr.b   #4,d0                                                 d0:00000010 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e26 sp:00000000 tS4cvznx
MCD  000c7e  move.w  d0,(a1)+                                              d0:00000001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:0000582e a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e26 sp:00000000 tS4cvznx
MCD  000c80  rts                                                           d0:00000001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005830 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e26 sp:00000000 tS4cvznx
MCD  000c24  move.w  a0,d0                                                 d0:00000001 d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005830 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvznx
MCD  000c26  andi.w  #$00ff,d0                                             d0:000001ff d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005830 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvznx
MCD  000c2a  cmpi.w  #$00ff,d0                                             d0:000000ff d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005830 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvznx
MCD  000c2e  beq     $000c34                                               d0:000000ff d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005830 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvZnx
MCD  000c34  bsr     $000c7a                                               d0:000000ff d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005830 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvZnx
MCD  000c36  bset.b  #$00,($00580c)                                        d0:00000f0f d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005832 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvznx
MCD  000c3c  or.w    d1,d1                                                 d0:00000f0f d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005832 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvZnx
MCD  000c3e  rts                                                           d0:00000f0f d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005832 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e2a sp:00000000 tS4cvZnx
MCD  002d06  bsr     $002a70                                               d0:00000f0f d1:00050000 d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:000501ff a1:00005832 a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvZnx
<MCD continues a bit>
MCD  002d8c  bset.b  #$07,($005b18)                                        d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvZnx
MCD  002d92  clr.w   ($005b0e)                                             d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002d96  move.w  #$0028,($005ae0)                                      d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvZnx
MCD  002d9c  move.w  #$0500,($005ad2)                                      d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002da2  move.w  #$0001,($005802)                                      d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002da8  bra     $002dcc                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002dcc  move.w  ($005b16),($005b00)                                   d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002dd2  move.w  #$0025,($005aea)                                      d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx
MCD  002dd8  bra     $002ae0                                               d0:02000004 d1:0000ffff d2:00060000 d3:00000000 d4:00000088 d5:00000000 d6:00000000 d7:00003000 a0:00002ac8 a1:ffff804c a2:000152dd a3:0000c914 a4:00000000 a5:00000000 a6:00000000 a7:00005e32 sp:00000000 tS4cvznx

Stef
Very interested
Posts: 3131
Joined: Thu Nov 30, 2006 9:46 pm
Location: France - Sevres
Contact:

Re: Popful Mail

Post by Stef » Thu Mar 04, 2021 9:08 am

At least you don't require single cycle granularity for "perfect sync" stuff. In Gens using ~80 cycles (MD 68k) slices was enough to get all sync issues fixed less or more (at this time PC were much less powerful so doing instruction slice wasn't really possible) so don't overthink that aspect. From what i remember, this game gave me serious headaches about the PCM synchronization with the video but not so much on boot.

TascoDLX
Very interested
Posts: 262
Joined: Tue Feb 06, 2007 8:18 pm

Re: Popful Mail

Post by TascoDLX » Fri Mar 05, 2021 5:29 am

Near wrote:
Thu Mar 04, 2021 2:25 am
This has become my white whale ^-^;
Call me Ishmael. :wink:

Writing zero to the wordram control reg (from either side) does not affect 2M wordram assignment. Popful has both sides write to the wordram control reg (first MAIN, then SUB) then MAIN will read back the reg to verify. If it's the wrong value, it tries again. Everything is kept in lockstep with comm sync -- no race conditions here.

Note, this becomes very trivial when you take out all the sync code...

Case 1 - assign 2M wordram to MAIN:
MAIN $a12003 := 0x00
SUB $ff8003 := 0x01
assert: MAIN $a12003 == 0x01

Case 2 - assign 2M wordram to SUB:
MAIN $a12003 := 0x02
SUB $ff8003 := 0x00
assert: MAIN $a12003 == 0x02

The 2nd case is what you're looking for. If you trace through to trap 0 : d0=0x0010 d1=0x02, you should be able to find it from there. Check out move.b d7=#$00,($ff8003) and verify the result. Should be no change.

Near
Very interested
Posts: 109
Joined: Thu Feb 28, 2008 4:45 pm

Re: Popful Mail

Post by Near » Fri Mar 05, 2021 6:56 pm

Writing zero to the wordram control reg (from either side) does not affect 2M wordram assignment.
Ishmael, thank you SO VERY MUCH!!!!

Image

I can't tell you how happy this has made me. Definitely made my entire week.

Really, really thank you so much! I really got lost thinking it was a synchroization or trap issue.
I'm not sure what happened and where I got the idea writes to $ff8002 cleared the 2M WRAM switch.

Chilly Willy and Stef, thank you as well for your input.

TascoDLX
Very interested
Posts: 262
Joined: Tue Feb 06, 2007 8:18 pm

Re: Popful Mail

Post by TascoDLX » Sat Mar 06, 2021 3:23 am

Excellent! It's truly my pleasure. It's great to see all the things your doing with Ares. :D

Eke
Very interested
Posts: 884
Joined: Wed Feb 28, 2007 2:57 pm
Contact:

Re: Popful Mail

Post by Eke » Sat Mar 06, 2021 9:47 am

Excellent :!:

Now next challenge: let's find out why sprites are invisible in all existing Sega CD emulators during the intro of Radical Rex. This one has been puzzling me for quite some time now (sorry to hijack thread :oops: )

TascoDLX
Very interested
Posts: 262
Joined: Tue Feb 06, 2007 8:18 pm

Re: Popful Mail

Post by TascoDLX » Sun Mar 07, 2021 3:31 am

Fuuuuuu... the bugs in that Radical Rex code, and that just in the initial loading routine. Really surprised it runs in any emulator at all. Seems like a frickin' miracle!

Eke
Very interested
Posts: 884
Joined: Wed Feb 28, 2007 2:57 pm
Contact:

Re: Popful Mail

Post by Eke » Sun Mar 07, 2021 12:45 pm

Well, i know that it does some quite risky synchronization at some points as it locks in emulators unless you carefully lockstep the two cpus but I wasn't aware of any other bugs...

All I know is that, when intro is started, a dma occurs to load the sprite table from word-ram but, for some unknown reason, word-ram never got initialized with a valid sprite table so an invalid sprites list ends up in VDP and no sprites are visible.

What is surprising is that this issue exists in all Mega CD software emulators (sprites are fine with real hardware or flashcarts that emulate Mega CD hardware in FPGA like Everdrive Pro or Mega SD).

Near
Very interested
Posts: 109
Joined: Thu Feb 28, 2008 4:45 pm

Re: Popful Mail

Post by Near » Mon Mar 08, 2021 7:03 am

Eke wrote:Now next challenge: let's find out why sprites are invisible in all existing Sega CD emulators during the intro of Radical Rex. This one has been puzzling me for quite some time now (sorry to hijack thread :oops: )
Please, by all means. I have a few more Popful Mail bugs, but I should at least spend a few days looking into them before asking for help ^^;
TascoDLX wrote:Fuuuuuu... the bugs in that Radical Rex code, and that just in the initial loading routine. Really surprised it runs in any emulator at all. Seems like a frickin' miracle!
So I thought I'd take a look and see if sprites worked in ares and ... it doesn't boot at all for me ^-^;
Eke wrote:All I know is that, when intro is started, a dma occurs to load the sprite table from word-ram but, for some unknown reason, word-ram never got initialized with a valid sprite table so an invalid sprites list ends up in VDP and no sprites are visible.
So at some point there's a condition to determine whether to initialize the table that ends up deciding not to do it (probably thinking it was already done.) On a whim, have we tried zero-filling all memory *and* I/O registers to both all-zeroes and all-ones?

Sour's emulators had a cool feature where it would log when a memory address or register was read before being written after boot, but it's a ton of work to add that to an emulator =(

TascoDLX
Very interested
Posts: 262
Joined: Tue Feb 06, 2007 8:18 pm

Re: Popful Mail

Post by TascoDLX » Mon Mar 08, 2021 7:51 am

OK, here's the bug in Ares...

In md/mcd/io.cpp, from line 208:

Code: Select all

  if(address == 0xff8004) {
    if(lower) {
      cdc.address = data.bit(0,3);
    }
    if(upper) {
      cdc.transfer.destination = data.bit(0,2); // *** should be data.bit(8,10)
    }
  }
There's probably a few other games that do word write to that register. Rex seems to work fine after the fix, but yeah, missing those intro sprites.

Near
Very interested
Posts: 109
Joined: Thu Feb 28, 2008 4:45 pm

Re: Popful Mail

Post by Near » Wed Mar 10, 2021 2:51 pm

Wow!! You are just a saint! <3

It does indeed fix the booting problem, thank you again!
I went and audited every single io.cpp and io-external.cpp register after this one, but sadly didn't find any more fixes ^-^;

I got nerd-sniped yesterday with the SVP, but I did take a look briefly at the sprite issue.
In any case, I can confirm it's not an issue with the default RAM initialization values, but I haven't tested different default I/O register values yet.
Guessing it won't be, I imagine any I/O register of significance has been written to by the time the game intro sequence starts.

I'll try to look into it more today.

Post Reply