foo
[mdlife] / src / part_simba.c
diff --git a/src/part_simba.c b/src/part_simba.c
new file mode 100644 (file)
index 0000000..622bbbf
--- /dev/null
@@ -0,0 +1,45 @@
+#include <stdio.h>
+#include <stdint.h>
+#include "vdp.h"
+#include "parts.h"
+
+extern uint16_t simbabg_data[], simbabg_data_end[];
+extern unsigned char simbabg_cmap[], simbabg_cmap_end[];
+extern uint16_t simbabg_tmap[], simbabg_tmap_end[];
+
+void simba_init(void)
+{
+       uint16_t *src;
+
+       /* upload tiles */
+       src = simbabg_data;
+       vdp_setup_addr(VDP_VRAM, 0);
+       while(src < simbabg_data_end) {
+               VDP_DATA = *src++;
+       }
+}
+
+void simba_start(void)
+{
+       int i;
+       uint16_t *src;
+       unsigned char *cptr;
+
+       /* setup tilemaps */
+       src = simbabg_tmap;
+       vdp_setup_addr(VDP_VRAM, 0xd000);       /* nametable B */
+       while(src < simbabg_tmap_end) {
+               VDP_DATA = VDP_TILENAME(*src++, 2, 0);
+       }
+
+       /* setup colormaps */
+       cptr = simbabg_cmap;
+       for(i=0; i<16; i++) {
+               vdp_setcolor(2, i, cptr[0] >> 4, cptr[1] >> 4, cptr[2] >> 4);
+               cptr += 3;
+       }
+}
+
+void simba_update(void)
+{
+}