Ejemplo n.º 1
0
void V_H_BlankCommon()
{
	LoadTilesAsYouMove();
	AnimateLevelGfx();
	HUD_Update();
	PLC_Decode3Tiles();
	VBlankDecreaseDemoLength();
}
Ejemplo n.º 2
0
/**
 * @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();
}
Ejemplo n.º 3
0
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++;
}