+#include <stdio.h>
+#include <stdint.h>
+#include "vdp.h"
+#include "parts.h"
+
+extern uint16_t lifebg_data[], lifebg_data_end[];
+extern unsigned char lifebg_cmap[], lifebg_cmap_end[];
+extern uint16_t lifebg_tmap[], lifebg_tmap_end[];
+
+void life_init(void)
+{
+ uint16_t *src;
+
+ /* upload tiles */
+ src = lifebg_data;
+ vdp_setup_addr(VDP_VRAM, 0);
+ while(src < lifebg_data_end) {
+ VDP_DATA = *src++;
+ }
+}
+
+void life_start(void)
+{
+ int i;
+ uint16_t *src;
+ unsigned char *cptr;
+
+ /* setup tilemaps */
+ src = lifebg_tmap;
+ vdp_setup_addr(VDP_VRAM, 0xd000); /* nametable B */
+ while(src < lifebg_tmap_end) {
+ VDP_DATA = VDP_TILENAME(*src++, 2, 0);
+ }
+
+ /* setup colormaps */
+ cptr = lifebg_cmap;
+ for(i=0; i<16; i++) {
+ vdp_setcolor(2, i, cptr[0] >> 4, cptr[1] >> 4, cptr[2] >> 4);
+ cptr += 3;
+ }
+}