From 1aee560d866744cac71c39e81d02a4483e8d107f Mon Sep 17 00:00:00 2001 From: Barry Harris <44396066+barry65536@users.noreply.github.com> Date: Mon, 21 Jan 2013 15:31:18 +0000 Subject: [PATCH] Optimise TC0100SCN char layer --- src/burn/drv/taito/tc0100scn.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/burn/drv/taito/tc0100scn.cpp b/src/burn/drv/taito/tc0100scn.cpp index 90eac0176..a910363de 100644 --- a/src/burn/drv/taito/tc0100scn.cpp +++ b/src/burn/drv/taito/tc0100scn.cpp @@ -380,8 +380,12 @@ void TC0100SCNRenderCharLayer(INT32 Chip) Rows = 32; } - GfxDecode(256, 2, 8, 8, TC0100SCNPlaneOffsets, TC0100SCNXOffsets, TC0100SCNYOffsets, 0x80, (UINT8*)CharRam, TC0100SCNChars[Chip]); + if (TC0100SCNCharRamUpdate[Chip]) { + GfxDecode(256, 2, 8, 8, TC0100SCNPlaneOffsets, TC0100SCNXOffsets, TC0100SCNYOffsets, 0x80, (UINT8*)CharRam, TC0100SCNChars[Chip]); + TC0100SCNCharRamUpdate[Chip] = 0; + } + // we could use TC0100SCNCharLayerUpdate to render to a temp buffer, but since there is no row/col scroll here, it would probably be slower for (my = 0; my < Rows; my++) { for (mx = 0; mx < Columns; mx++) { Attr = BURN_ENDIAN_SWAP_INT16(VideoRam[TileIndex]); @@ -489,6 +493,8 @@ void TC0100SCNReset() TC0100SCNDblWidth[i] = 0; TC0100SCNBgLayerUpdate[i] = 1; TC0100SCNFgLayerUpdate[i] = 1; + TC0100SCNCharLayerUpdate[i] = 1; + TC0100SCNCharRamUpdate[i] = 1; } } @@ -519,6 +525,8 @@ void TC0100SCNInit(INT32 Chip, INT32 nNumTiles, INT32 xOffset, INT32 yOffset, IN TC0100SCNPaletteOffset[Chip] = 0; TC0100SCNFgLayerUpdate[Chip] = 1; TC0100SCNBgLayerUpdate[Chip] = 1; + TC0100SCNCharLayerUpdate[Chip] = 1; + TC0100SCNCharRamUpdate[Chip] = 1; if (!TC0100SCNClipWidth[Chip] || !TC0100SCNClipHeight[Chip]) bprintf(PRINT_IMPORTANT, _T("TC0100SCNInit called before GenericTilesInit\n")); @@ -584,6 +592,8 @@ void TC0100SCNExit() TC0100SCNPaletteOffset[i] = 0; TC0100SCNBgLayerUpdate[i] = 0; TC0100SCNFgLayerUpdate[i] = 0; + TC0100SCNCharLayerUpdate[i] = 0; + TC0100SCNCharRamUpdate[i] = 0; } TC0100SCNNum = 0;