per-line scrolling test
[mdlife] / src / main.c
index 29fb6d5..a48d881 100644 (file)
@@ -9,7 +9,7 @@
 uint32_t frameno;
 uint32_t dbgval[4];
 
-struct part parts[2];
+struct part parts[3];
 static struct part *part;
 
 
@@ -24,17 +24,31 @@ int main(void)
        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;
-       part = parts + 1;
+       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]);
@@ -44,13 +58,14 @@ int main(void)
                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();