diff options
| -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(); | 
