29fb6d5d804ee0367c71e91da8f093c079df8605
[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         part = parts + 1;
34
35         part->start();
36
37         for(;;) {
38                 dbg_setcursor(32, 0);
39                 for(i=0; i<4; i++) {
40                         printf("%04x\n", (unsigned int)dbgval[i]);
41                 }
42                 spr_begin();
43
44                 part->update();
45
46                 vdp_wait_vblank();
47                 spr_submit();
48                 bnstate = pad_read(0);
49                 bndiff = bnstate ^ bnprev;
50                 bnprev = bnstate;
51
52                 if(bndiff & bnstate & PAD_START) {
53                         if(++part >= parts + 2) {
54                                 part = parts;
55                         }
56                         part->start();
57                 }
58
59                 frameno++;
60         }
61
62         return 0;
63 }