diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/cine/bg.cpp | 2 | ||||
-rw-r--r-- | engines/cine/cine.cpp | 2 | ||||
-rw-r--r-- | engines/cine/gfx.cpp | 39 | ||||
-rw-r--r-- | engines/cine/gfx.h | 14 | ||||
-rw-r--r-- | engines/cine/main_loop.cpp | 2 |
5 files changed, 27 insertions, 32 deletions
diff --git a/engines/cine/bg.cpp b/engines/cine/bg.cpp index badb8bb888..41291dea92 100644 --- a/engines/cine/bg.cpp +++ b/engines/cine/bg.cpp @@ -105,7 +105,7 @@ byte loadBg(const char *bgName) { return 0; } -byte *additionalBgTable[9] = { page2Raw, NULL, NULL, NULL, NULL, NULL, NULL, NULL, page3Raw }; +byte *additionalBgTable[9]; byte currentAdditionalBgIdx = 0; byte currentAdditionalBgIdx2 = 0; diff --git a/engines/cine/cine.cpp b/engines/cine/cine.cpp index 224721b096..aa180a0a32 100644 --- a/engines/cine/cine.cpp +++ b/engines/cine/cine.cpp @@ -122,7 +122,7 @@ void CineEngine::initialize() { setupOpcodes(); initLanguage(g_cine->getLanguage()); - init_video(); + gfxInit(); textDataPtr = (byte *)malloc(8000); diff --git a/engines/cine/gfx.cpp b/engines/cine/gfx.cpp index 0435060595..71aa33b28b 100644 --- a/engines/cine/gfx.cpp +++ b/engines/cine/gfx.cpp @@ -23,6 +23,7 @@ */ #include "cine/cine.h" +#include "cine/bg.h" #include "cine/various.h" #include "common/system.h" @@ -31,19 +32,12 @@ namespace Cine { -byte *screenBuffer; - uint16 c_palette[256]; -byte *page0; -byte *page0c; -byte *page1; -byte *page2; -byte *page3; - -byte page1Raw[320 * 200]; -byte page2Raw[320 * 200]; -byte page3Raw[320 * 200]; +byte *screenBuffer; +byte *page1Raw; +byte *page2Raw; +byte *page3Raw; static const byte mouseCursorNormal[] = { 0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x70, 0x00, @@ -93,14 +87,21 @@ static const byte cursorPalette[] = { 0xff, 0xff, 0xff, 0xff }; -void init_video() { - screenBuffer = (byte *)malloc(320 * 200 * 3); - assert(screenBuffer); - - page0 = (byte *)malloc(0x8000); - page1 = (byte *)malloc(0x8000); - page2 = (byte *)malloc(0x8000); - page3 = (byte *)malloc(0x8000); +void gfxInit() { + screenBuffer = (byte *)malloc(320 * 200); + page1Raw = (byte *)malloc(320 * 200); + page2Raw = (byte *)malloc(320 * 200); + page3Raw = (byte *)malloc(320 * 200); + if (!screenBuffer || !page1Raw || !page2Raw || !page3Raw) { + error("Unable to allocate offscreen buffers"); + } + memset(page1Raw, 0, 320 * 200); + memset(page2Raw, 0, 320 * 200); + memset(page3Raw, 0, 320 * 200); + + memset(additionalBgTable, 0, sizeof(additionalBgTable)); + additionalBgTable[0] = page2Raw; + additionalBgTable[8] = page3Raw; } void setMouseCursor(int cursor) { diff --git a/engines/cine/gfx.h b/engines/cine/gfx.h index 30841b6cb1..d46a033363 100644 --- a/engines/cine/gfx.h +++ b/engines/cine/gfx.h @@ -29,15 +29,13 @@ namespace Cine { void gfxDrawSprite(byte *src4, uint16 sw, uint16 sh, byte *dst4, int16 sx, int16 sy); -extern byte *page0; -extern byte *page0c; -extern byte *page1; -extern byte *page2; -extern byte *page3; +extern byte *page1Raw; +extern byte *page2Raw; +extern byte *page3Raw; extern uint16 c_palette[256]; -void init_video(); +void gfxInit(); void setMouseCursor(int cursor); void convertGfx(byte *source, byte *dest, const uint16 width, const uint16 height); void convertGfx2(byte *source, byte *dest, const uint16 width, const uint16 height); @@ -59,10 +57,6 @@ void gfxResetPage(byte *pagePtr); int16 gfxGetBit(int16 x, int16 y, byte *ptr, int16 width); -extern byte page1Raw[320 * 200]; -extern byte page2Raw[320 * 200]; -extern byte page3Raw[320 * 200]; - void gfxResetRawPage(byte *pageRaw); void gfxConvertSpriteToRaw(byte *dest, byte *source, uint16 width, uint16 height); void gfxCopyRawPage(byte *source, byte * dest); diff --git a/engines/cine/main_loop.cpp b/engines/cine/main_loop.cpp index face2628dd..5f601b8aa7 100644 --- a/engines/cine/main_loop.cpp +++ b/engines/cine/main_loop.cpp @@ -210,7 +210,7 @@ void CineEngine::mainLoop(int bootScriptIdx) { menuVar = 0; - gfxFuncGen1(page0c, page0, page0c, page0, -1); +// gfxFuncGen1(page0c, page0, page0c, page0, -1); ptrGfxFunc13(); |