void V_H_BlankCommon() { LoadTilesAsYouMove(); AnimateLevelGfx(); HUD_Update(); PLC_Decode3Tiles(); VBlankDecreaseDemoLength(); }
/** * @sa CL_Frame */ void CL_SlowFrame (int now, void* data) { /* language */ if (s_language->modified) { CL_LanguageTryToSet(s_language->string); } Irc_Logic_Frame(); CL_Reconnect(); HUD_Update(); }
void VBlank() { auto routine = v_vbla_routine; if(routine != 0) { VDP_SetAddr(0, VDP_VSRAM_Write); VDP_Data(v_scrposy_dup); VBlankWaitPAL(); v_vbla_routine = 0; f_hbla_pal = true; } switch(routine) { case VBlank_00: if(v_gamemode & GameMode_Level && v_zone == Zone_LZ) { // VBlankWaitPAL(); f_hbla_pal = true; STOP_Z80(); WAIT_Z80(); VBlankWriteWaterPalette(); SetHBlankRegister(); START_Z80(); } break; // Seeeeegaaaaaa! case VBlank_Sega: VBlankCommon(); // fall through // One frame between SEGA palette cycle and SEEEGAAAA case VBlank_SegaSwitch: VBlankDecreaseDemoLength(); break; // Title screen, Credits screen case VBlank_Title: VBlankCommon(); DrawTitleCreditsBGTiles(); PLC_Decode9Tiles(); break; // Palette fading case VBlank_PaletteFade: VBlankCommon(); SetHBlankRegister(); PLC_Decode9Tiles(); break; case VBlank_06: VBlankCommon(); break; case VBlank_0E: VBlankCommon(); v_FFFFF628++; v_vbla_routine = 0x0E; break; // Game paused case VBlank_Paused: if(v_gamemode == GameMode_Special) goto _vblank0A; // fall through // Level main loop case VBlank_Level: VBlankCommon2(); VBlankBackupScrollVars(); if(v_hbla_line >= 96) V_H_BlankCommon(); else { f_FFFFF64F = true; v_vbla_count++; return; } break; // Waiting for level title card, special stage results screen case VBlank_Title: // Ending screen case VBlank_Ending: VBlankCommon2(); VBlankBackupScrollVars(); LoadTilesAsYouMove(); AnimateLevelGfx(); HUD_Update(); PLC_Decode9Tiles(); break; // Special stage case VBlank_Special: _vblank0A: STOP_Z80(); WAIT_Z80(); ReadJoypads(); WriteCRAM(v_pal_dry, 0x80, 0); VBlankWriteSpriteAndScroll(); START_Z80(); PalCycle_SS(); VBlankWriteSonic(); VBlankDecreaseDemoLength(); break; // Continue screen, special stage spin-and-fade-to-white case VBlank_Continue: STOP_Z80(); WAIT_Z80(); ReadJoypads(); WriteCRAM(v_pal_dry, 0x80, 0); VBlankWriteSpriteAndScroll(); START_Z80(); VBlankWriteSonic(); VBlankDecreaseDemoLength(); break; default: assert(false); } UpdateMusic(); v_vbla_count++; }