void empty_screen (void) { UBYTE temp1; HIDE_BKG; HIDE_SPRITES; VBK_REG = 0; SWITCH_ROM_MBC1(1); for (temp1=0; temp1<40; temp1++) { move_sprite(temp1,0,200); set_sprite_prop (temp1,0); } for (temp1=0; temp1<20; temp1++) { set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); VBK_REG = 1; set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); VBK_REG = 0; } move_bkg (0,0); SWITCH_ROM_MBC1(0); SHOW_BKG; SHOW_SPRITES; }
/* Open and close the door */ void door() { if(doorstate == OPENING) { doorpos++; /* Draw the door in the window */ set_win_tiles(2, 2, 12, 6, film[doorpos]); if(doorpos == NBDFRAMES) doorstate = OPENED; } else if(doorstate == CLOSING) { doorpos--; /* Draw the door in the window */ set_win_tiles(2, 2, 12, 6, film[doorpos]); if(doorpos == 0) doorstate = CLOSED; } }
void empty_screen (void) { UBYTE temp1; //DISPLAY_OFF; HIDE_BKG; HIDE_SPRITES; VBK_REG = 0; ENABLE_RAM_MBC1; for (temp1=0; temp1<40; temp1++) { move_sprite(temp1,0,200); set_sprite_prop (temp1,0); } SWITCH_ROM_MBC1(4); for (temp1=0; temp1<20; temp1++) { set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); VBK_REG = 1; set_bkg_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); set_win_tiles (0,temp1,20,1,(unsigned char *) &cEMPTY[0]); VBK_REG = 0; } SWITCH_ROM_MBC1(0); DISABLE_RAM_MBC1; move_bkg (0,0); SHOW_BKG; SHOW_SPRITES; //DISPLAY_ON; }
void main() { UBYTE i, j; disable_interrupts(); DISPLAY_OFF; LCDC_REG = 0x67; /* * LCD = Off * WindowBank = 0x9C00 * Window = On * BG Chr = 0x8800 * BG Bank = 0x9800 * OBJ = 8x16 * OBJ = On * BG = On */ doorstate = CLOSED; /* Set palettes */ BGP_REG = OBP0_REG = OBP1_REG = 0xE4U; /* Initialize the background */ set_bkg_data(0xFC, 0x04, std_data); set_bkg_data(0x00, 0x2D, bkg_data); /* * Draw the background * * Width = 0x100 = 0x20 * 8 * Height = 0x100 = 0x20 * 8 */ for(i = 0; i < 32; i+=8) for(j = 0; j < 32; j+=8) set_bkg_tiles(i, j, 8, 8, bkg_tiles); bposx.w = 0; SCX_REG = 0; bposy.w = 0; SCY_REG = 0; bspx.w = 0xFF00; bspy.w = 0x0080; /* Initialize the window */ set_win_data(0x80, 0x21, frame_data); /* * Draw the frame in the window * * Width = 0x80 = 0x10 * 8 * Height = 0x50 = 0x0A * 8 */ set_win_tiles(0, 0, 16, 10, frame_tiles); /* * Draw the door in the window * * Width = 0x60 = 0x20 * 12 * Height = 0x30 = 0x20 * 6 */ set_win_tiles(2, 2, 12, 6, door1_tiles); wposx.b.h = MAXWNDPOSX; wposx.b.l = 0; WX_REG = MAXWNDPOSX; wposy.b.h = MAXWNDPOSY; wposy.b.l = 0; WY_REG = MAXWNDPOSY; wspx.w = 0xFF80; wspy.w = 0xFFC0; /* Initialize the sprite */ set_sprite_data(0x00, 0x1C, earth_data); set_sprite_prop(0, 0x00); set_sprite_prop(1, 0x00); sframe = 0; sposx.w = 0x1000; sposy.w = 0x1000; sspx.w = 0x0040; sspy.w = 0x0040; tile_sprite(); place_sprite(); DISPLAY_ON; enable_interrupts(); while(1) { /* Skip four VBLs (slow down animation) */ for(i = 0; i < 4; i++) wait_vbl_done(); time++; fade(); door(); scroll(); animate_sprite(); i = joypad(); if(i & J_B) { if(i & J_UP) bspy.w -= 0x0010; if(i & J_DOWN) bspy.w += 0x0010; if(i & J_LEFT) bspx.w -= 0x0010; if(i & J_RIGHT) bspx.w += 0x0010; } else if(i & J_A) { if(i & J_UP) wspy.w -= 0x0010; if(i & J_DOWN) wspy.w += 0x0010; if(i & J_LEFT) wspx.w -= 0x0010; if(i & J_RIGHT) wspx.w += 0x0010; } else { if(i & J_SELECT) color = STARTFADE; if(i & J_START) if(doorstate == CLOSED) { doorstate = OPENING; doorpos = 0; } else if(doorstate == OPENED) { doorstate = CLOSING; doorpos = NBDFRAMES; } if(i & J_UP) sspy.w -= 0x0010; if(i & J_DOWN) sspy.w += 0x0010; if(i & J_LEFT) sspx.w -= 0x0010; if(i & J_RIGHT) sspx.w += 0x0010; } } }
int main (void) { char* p = bg_map; //Setup rand rand_seed = DIV_REG; //Turn off disable_interrupts(); DISPLAY_OFF; //Setup LCD SHOW_BKG; SHOW_SPRITES; SHOW_WIN; //Load bg BGP_REG = OBP1_REG = 0xE4; OBP0_REG = 0xE1; set_bkg_data(0, background_tileset_size, background_tileset); for (y = 0; y < bg_map_height; ++y ) { set_bkg_tiles(0, y, bg_map_width, 1, p); p += bg_map_width; } //Load window x = 0; for (i = 0; i < 21; ++i ) { set_win_tiles(x, 0, ground_map_width, ground_map_height, ground_map); x += ground_map_width; } WX_REG = 0; WY_REG = 120; //Load Sprite set_sprite_data(0, sprites_size, sprites_data); SPRITES_8x16; //Load Bird setupBird(); //Reset resetGame(); //Turn on display DISPLAY_ON; enable_interrupts(); //Finish rand rand_seed |= DIV_REG << 8; initarand(rand_seed); //RunLoop while (1) { joy = joypad(); wait_vbl_done(); switch (gameState) { case GAME_STATE_INTRO: { introLoop(); } break; case GAME_STATE_GAME: { gameLoop(); } break; case GAME_STATE_DEAD: { deadLoop(); } break; } } return 0; }