scrolling background
[mdlife] / src / main.c
1 #include <stdio.h>
2 #include "z80.h"
3 #include "vdp.h"
4 #include "pad.h"
5 #include "sprite.h"
6 #include "parts.h"
7 #include "debug.h"
8
9 uint32_t frameno;
10 uint32_t dbgval[4];
11
12 struct part parts[2];
13 static struct part *part;
14
15
16 int main(void)
17 {
18         int i;
19         static unsigned short bnprev;
20
21         z80_init();
22         vdp_init();
23         pad_init();
24         dbg_init();
25
26         dna_init();
27         simba_init();
28
29         parts[0].start = dna_start;
30         parts[0].update = dna_update;
31         parts[1].start = simba_start;
32         parts[1].update = simba_update;
33         parts[1].vblank = simba_vblank;
34         part = parts;
35
36         part->start();
37
38         for(;;) {
39                 dbg_setcursor(32, 0);
40                 for(i=0; i<4; i++) {
41                         printf("%04x\n", (unsigned int)dbgval[i]);
42                 }
43                 spr_begin();
44
45                 part->update();
46
47                 vdp_wait_vblank();
48                 if(part->vblank) part->vblank();
49                 spr_submit();
50                 bnstate = pad_read(0);
51                 bndiff = bnstate ^ bnprev;
52                 bnprev = bnstate;
53
54                 if(bndiff & bnstate & PAD_START) {
55                         if(++part >= parts + 2) {
56                                 part = parts;
57                         }
58                         part->start();
59                 }
60
61                 frameno++;
62         }
63
64         return 0;
65 }