void DrawCredits() { unsigned char end = 0; int counter = 0; redraw = 1; refresh = 1; while(!end) { vsync(); if(redraw) { ResetVideo(); setupFont(); SetFontColors(15, RGB(3, 3, 3), RGB(0, 6, 0), 0); SetFontColors(13, RGB(3, 3, 3), RGB(1, 6, 6), 0); set_xres(512, xres_flags); #ifndef CDROM1 set_map_data(MB512_map, 64, 30); set_tile_data(MB512_bg); load_tile(0x1000); load_map(0, 0, 0, 0, 64, 30); load_palette(0, MB512_pal, 1); #else set_screen_size(SCR_SIZE_64x32); cd_loaddata(GPHX_OVERLAY, OFS_back512_PAL_bin, palCD, SIZE_back512_PAL_bin); load_palette(0, palCD, 1); cd_loadvram(GPHX_OVERLAY, OFS_back512_DATA_bin, 0x1000, SIZE_back512_DATA_bin); cd_loadvram(GPHX_OVERLAY, OFS_back512_BAT_bin, 0, SIZE_back512_BAT_bin); #endif Center224in240(); redraw = 0; refresh = 1; disp_on(); } if(refresh) { RefreshCredits(); refresh = 0; } set_font_pal(14); if(counter == 1) put_string("Artemio Urbina ", HPOS+2, 8); if(counter == 60*4) put_string("@Artemio (twitter) ", HPOS+2, 8); if(counter == 60*8) put_string("*****@*****.**", HPOS+2, 8); if(counter == 60*16) counter = 0; counter++; controller = joytrg(0); if (controller & JOY_II) end = 1; if (controller & JOY_SEL) { DrawN(); redraw = 1; } } }
void main() { int sel = 0; redraw = 1; refresh = 1; #ifndef CDROM xres_flags = XRES_SOFT; Enabled240p = 1; UseDefault = 0; EnabledSoft = 1; Enabled_C_BW = 0; #endif #ifdef CDROM RestoreGlobals(); #endif #ifdef CDROM1 if(prev_select) { sel = prev_select; prev_select = 0; } #endif disp_off(); set_xres(320, xres_flags); if(Enabled240p) Set240p(); #ifndef CDROM disp_on(); DrawIntro(); disp_off(); #endif while(1) { vsync(); #ifdef CDROM1 if(!HelpItem) { #endif if(redraw) { RedrawMain(); redraw = 0; refresh = 1; disp_on(); } set_font_pal(15); if(refresh) { RefreshMain(sel); refresh = 0; } controller = joytrg(0); if (controller & JOY_SEL) { #ifdef CDROM1 x_g = 0; #endif Options(); redraw = 1; } if (controller & JOY_DOWN) { sel++; if(sel > 14) sel = 0; refresh = 1; } if (controller & JOY_UP) { sel--; if(sel < 0) sel = 14; refresh = 1; } if (controller & JOY_RUN) { showHelp(GENERAL_HELP); redraw = 1; } #ifdef CDROM1 } else { if(HelpItem <= OPTIONS_HELP) { sel = HelpItem; controller = JOY_I; } HelpItem = 0; } #endif if (controller & JOY_I) { disp_off(); ResetVideo(); switch(sel) { case 0: #ifndef CDROM1 TestPatterns(); #else xres_flags_g = xres_flags; Enabled240p_g = Enabled240p; UseDefault_g = UseDefault; EnabledSoft_g = EnabledSoft; Enabled_C_BW_g = Enabled_C_BW; set_font_pal(14); put_string("Loading...", 27, 26); cd_execoverlay(PATTERNS_OVERLAY); #endif break; case 1: DropShadow(); break; case 2: StripedSprite(); break; case 3: LagTest(); break; case 4: ManualLagTest(); break; case 5: ScrollTest(); break; case 6: VScrollTest(); break; case 7: DrawStripes(); break; case 8: DrawCheck(); break; case 9: LEDZoneTest(); break; case 10: SoundTest(); break; case 11: AudioSyncTest(); break; case 12: #ifdef CDROM1 prev_select = sel; #endif Options(); break; case 13: #ifdef CDROM1 prev_select = sel; #endif showHelp(GENERAL_HELP); break; case 14: DrawCredits(); break; } redraw = 1; disp_off(); } } }
run_game() { /* init variables */ frame = 0; hero_walk_state = 0; spr_addr_hero = SPR_ADDR__HERO_D; joy1_dpad = 0; /* init sprites */ init_satb(); load_vram(SPR_ADDR__HERO_U, spr_hero_u, 0x400); load_vram(SPR_ADDR__HERO_UR, spr_hero_ur, 0x400); load_vram(SPR_ADDR__HERO_R, spr_hero_r, 0x400); load_vram(SPR_ADDR__HERO_DR, spr_hero_dr, 0x400); load_vram(SPR_ADDR__HERO_D, spr_hero_d, 0x400); load_vram(SPR_ADDR__HERO_DL, spr_hero_dl, 0x400); load_vram(SPR_ADDR__HERO_L, spr_hero_l, 0x400); load_vram(SPR_ADDR__HERO_UL, spr_hero_ul, 0x400); set_sprpal(PAL_NUM__HERO, pal_hero); /* hero sprite */ spr_set(SPR_NUM__HERO); spr_x(hero_x); spr_y(hero_y); spr_pattern(spr_addr_hero); spr_ctrl(SIZE_MAS|FLIP_MAS, SZ_32x32|NO_FLIP); spr_pal(PAL_NUM__HERO); spr_pri(1); /* font */ set_font_color(1, 0); set_font_pal(0); load_default_font(); satb_update(); vsync(); /******************************************************************************* GAME LOOP *******************************************************************************/ for(;;) { joy1 = joy(0); joy1a = joytrg(0); old_spr_addr_hero = spr_addr_hero; /* d-pad input */ #asm lda _joy1 lsr4 sta _joy1_dpad bne movement_input jmp no_movement_input movement_input: #endasm if (joy1 & JOY_UP) hero_y--; else if (joy1 & JOY_DOWN) hero_y++; if (joy1 & JOY_LEFT) hero_x--; else if (joy1 & JOY_RGHT) hero_x++; if (frame % 8 == 0) hero_walk_state++; #asm ldx _joy1_dpad ;// lower nibble of _spr_addr_hero already zeroed lda tbl_hero_spr_addr,X sta _spr_addr_hero+1 no_movement_input: #endasm /* a/b input */ if (joy1 & JOY_A) { spr_addr_hero_modifier = 0x300; if (spr_addr_hero != old_spr_addr_hero) { if (frame % 4) { spr_addr_hero = old_spr_addr_hero; } else { if (!(joy1a & JOY_A)) { spr_addr_hero = old_spr_addr_hero + 0x400; if (spr_addr_hero > 0x6C00) spr_addr_hero = 0x5000; } } } } else if (joy1 & JOY_B) { spr_addr_hero_modifier = 0x300; if (spr_addr_hero != old_spr_addr_hero) { if (frame % 4) { spr_addr_hero = old_spr_addr_hero; } else { if (!(joy1a & JOY_B)) { spr_addr_hero = old_spr_addr_hero - 0x400; if (spr_addr_hero < 0x5000) spr_addr_hero = 0x6C00; } } } } else { /* hero direction walk animation*/ if (hero_walk_state == 1) { spr_addr_hero_modifier = 0x100; } else if (hero_walk_state == 3) { spr_addr_hero_modifier = 0x200; } else{ spr_addr_hero_modifier = 0; } } spr_set(SPR_NUM__HERO); spr_pattern(spr_addr_hero + spr_addr_hero_modifier); spr_x(hero_x); spr_y(hero_y); hero_walk_state = hero_walk_state % 4; frame++; satb_update(); vsync(); } }