uint32_t frameno;
uint32_t dbgval[4];
-struct part parts[2];
+struct part parts[3];
static struct part *part;
dbg_init();
dna_init();
+ mitosis_init();
simba_init();
parts[0].start = dna_start;
parts[0].update = dna_update;
- parts[1].start = simba_start;
- parts[1].update = simba_update;
+ parts[1].start = mitosis_start;
+ parts[1].update = mitosis_update;
+ parts[1].vblank = mitosis_vblank;
+ parts[2].start = simba_start;
+ parts[2].update = simba_update;
+ parts[2].vblank = simba_vblank;
part = parts;
part->start();
for(;;) {
+ unsigned char val;
+ z80_grab_bus();
+ while(!z80_have_bus());
+ val = Z80_MEM[0x1ffc];
+ dbgval[3] = (uint32_t)val << 8;
+ val = Z80_MEM[0x1ffd];
+ dbgval[3] |= val;
+ z80_release_bus();
+
dbg_setcursor(32, 0);
for(i=0; i<4; i++) {
printf("%04x\n", (unsigned int)dbgval[i]);
part->update();
vdp_wait_vblank();
+ if(part->vblank) part->vblank();
spr_submit();
bnstate = pad_read(0);
bndiff = bnstate ^ bnprev;
bnprev = bnstate;
if(bndiff & bnstate & PAD_START) {
- if(++part >= parts + 2) {
+ if(++part >= parts + 3) {
part = parts;
}
part->start();