diff --git a/source/frontend/frontend.cpp b/source/frontend/frontend.cpp index 6ac7695ed..18242b5e8 100644 --- a/source/frontend/frontend.cpp +++ b/source/frontend/frontend.cpp @@ -54,8 +54,8 @@ static CFrontEndMainTitles s_frontEndModeMainTitles; CFrontEndMode *CFrontEndScene::s_modeCodes[]= { &s_frontEndModeMainTitles, // MODE__MAIN_TITLES - &s_frontEndModeMainTitles,//NULL, // MODE__GAME_OPTIONS - &s_frontEndModeMainTitles,//NULL, // MODE__CHOOSE_SLOT + NULL, // MODE__GAME_OPTIONS + NULL, // MODE__CHOOSE_SLOT NULL, // MODE__DEMO NULL, // MODE__NONE @@ -140,19 +140,21 @@ int CFrontEndScene::readyToShutdown() ---------------------------------------------------------------------- */ void CFrontEndScene::setMode(FrontEndMode _newMode) { - PAUL_DBGMSG("CFrontEndScene::setMode(%d)",_newMode); +PAUL_DBGMSG("CFrontEndScene::setMode(%d)",_newMode); // Close old mode if(s_modeCodes[m_mode]) { +PAUL_DBGMSG("CFrontEndScene::shutdown mode %d",m_mode); s_modeCodes[m_mode]->shutdown(); } // Open new mode m_mode=_newMode; +PAUL_DBGMSG("CFrontEndScene::init mode %d",m_mode); + s_modeCodes[m_mode]->init(); + s_modeCodes[m_mode]->shutdown(); s_modeCodes[m_mode]->init(); -// s_modeCodes[m_mode]->shutdown(); -// ASSERT(0); } diff --git a/source/frontend/frontend.h b/source/frontend/frontend.h index 436e416fb..d90ef581b 100644 --- a/source/frontend/frontend.h +++ b/source/frontend/frontend.h @@ -60,7 +60,7 @@ public: void render(); void think(int _frames); int readyToShutdown(); - char *getSceneName() {return"FrontEndScene";} + char *getSceneName() {return"FrontEnd";} private: diff --git a/source/frontend/maintitl.cpp b/source/frontend/maintitl.cpp index c6cad09be..a909ca91a 100644 --- a/source/frontend/maintitl.cpp +++ b/source/frontend/maintitl.cpp @@ -126,7 +126,6 @@ PAUL_DBGMSG("initial mem free=%d",mem); m_smallFont=new ("MainTitle SmallFont") FontBank(); m_smallFont->initialise(&standardFont); m_smallFont->setJustification(FontBank::JUST_CENTRE); - m_smallFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B); m_mode=MODE__PRESS_START; @@ -135,9 +134,7 @@ PAUL_DBGMSG("initial mem free=%d",mem); m_mainMenu->init(NULL); m_mainMenu->setObjectXYWH(106,140,300,40); m_mainMenu->clearFlags(CGUIObject::FLAG_DRAWBORDER); -PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed)); -/* fr=new ("frame") CGUIGroupFrame(); fr->init(m_mainMenu); fr->setObjectXYWH(50,0,200,20); @@ -161,7 +158,6 @@ PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed)); tg->setButtonTarget(&m_gotoOptionsFlag); m_mainMenu->select(); -*/ m_startGameFlag=false; m_gotoOptionsFlag=false; @@ -178,7 +174,7 @@ PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed)); ---------------------------------------------------------------------- */ void CFrontEndMainTitles::shutdown() { - m_mainMenu->shutdown(); delete m_mainMenu; + m_mainMenu->shutdown(); // GUI items delete themselves when shutdown.. m_smallFont->dump(); delete m_smallFont; m_sprites->dump(); delete m_sprites; PAUL_DBGMSG("change=%d",mem-(MainRam.TotalRam-MainRam.RamUsed)); @@ -271,7 +267,7 @@ void CFrontEndMainTitles::think(int _frames) m_mainMenu->think(_frames); if(m_startGameFlag) { -// CFader::setFadingOut(); + CFader::setFadingOut(); m_mode=MODE__START_GAME; } else if(m_gotoOptionsFlag) @@ -318,11 +314,11 @@ CFrontEndScene::FrontEndMode CFrontEndMainTitles::getNextMode() break; case MODE__START_GAME: - ret=CFrontEndScene::MODE__CHOOSE_SLOT; + ret=CFrontEndScene::MODE__MAIN_TITLES;//MODE__CHOOSE_SLOT; break; case MODE__GOTO_OPTIONS: - ret=CFrontEndScene::MODE__GAME_OPTIONS; + ret=CFrontEndScene::MODE__MAIN_TITLES;//MODE__GAME_OPTIONS; break; } @@ -454,6 +450,7 @@ void CFrontEndMainTitles::renderPressStart() { if(!CFader::isFading()) { + m_smallFont->setColour(PRESS_START_TEXT_R,PRESS_START_TEXT_G,PRESS_START_TEXT_B); m_smallFont->print(256,PRESS_START_TEXT_Y,STR__FRONTEND__PRESS_START); } } diff --git a/source/gfx/tpage.cpp b/source/gfx/tpage.cpp index abfd84532..34be39d11 100644 --- a/source/gfx/tpage.cpp +++ b/source/gfx/tpage.cpp @@ -26,6 +26,20 @@ MAX_TPAGES = 32, const int TPRawW=64; const int TPRawH=256; +struct sTPageInfo +{ + s16 RefCount; + FileEquate TPageName; + s16 XOfs,YOfs; + u16 AnimTexCount; + sFrameHdr AnimTexFrame[TPAGE_MAX_ANIM_TEX]; +}; + +struct sTPageCache +{ + sTPageInfo Info[2]; +}; + static sTPageCache s_TPCache[MAX_TPAGES]; // Theory!! @@ -233,6 +247,17 @@ int ReadLeft; // DBG_MSG2("TPLoadTexWithHeaders Cached (%i,%i)",TPage,Half); s_TPCache[TPage].Info[Half].RefCount++; Cache=&s_TPCache[TPage].Info[Half]; + + // Reload headers (PKG) + CFileIO::OpenFile(Filename); + CFileIO::ReadFile((void*)&TPHdr,sizeof(sTPageHdr)); + *hdrs=(sFrameHdr*)MemAlloc(sizeof(sFrameHdr)*TPHdr.NoOfFrames,"TpFh(from cache)"); + ReadLeft=CFileIO::GetReadLeft(); + FramePtr=(sFrameHdr*)MemAlloc(ReadLeft,"TPLoadTemp"); + CFileIO::ReadFile(FramePtr,ReadLeft); + CFileIO::CloseFile(); + MCmemcpy(*hdrs,FramePtr,TPHdr.NoOfFrames*sizeof(sFrameHdr)); + MemFree(FramePtr); } else { diff --git a/source/gfx/tpage.h b/source/gfx/tpage.h index 113815bd3..4968cdde5 100644 --- a/source/gfx/tpage.h +++ b/source/gfx/tpage.h @@ -41,20 +41,6 @@ struct TPAGE_DESC u8 yoffset; }; -struct sTPageInfo -{ - s16 RefCount; - FileEquate TPageName; - s16 XOfs,YOfs; - u16 AnimTexCount; - sFrameHdr AnimTexFrame[TPAGE_MAX_ANIM_TEX]; -}; - -struct sTPageCache -{ - sTPageInfo Info[2]; -}; - /********************************************************************************************************/ void TPInit(); diff --git a/source/gui/gui.h b/source/gui/gui.h index a90cc1e05..6f1b0ec06 100644 --- a/source/gui/gui.h +++ b/source/gui/gui.h @@ -5,7 +5,7 @@ Author: PKG Created: Project: Spongebob - Purpose: + Purpose: NB: GUI ITEMS delete() THEMSELVES WHEN THEY ARE SHUTDOWN! Copyright (c) 2000 Climax Development Ltd diff --git a/source/mem/memory.cpp b/source/mem/memory.cpp index cc8767d09..c56675f0a 100644 --- a/source/mem/memory.cpp +++ b/source/mem/memory.cpp @@ -65,6 +65,8 @@ enum MEM_ID MEM_GAMEOPTIONS, MEM_SYSTEM, + MEM_UNKNOWN, + MEM_ID_MAX }; @@ -96,7 +98,7 @@ static const int s_dumpTextY = 120; static const int s_dumpShift = 20; static const int s_shadeX = 16; -static const int s_shadeY = 110; +static const int s_shadeY = 115; static const int s_shadeW = 400; static const int s_shadeH = 80; static const CVECTOR s_shadeCol = { 0, 0, 0 }; @@ -111,6 +113,7 @@ static const CVECTOR s_colors[ MEM_ID_MAX ] = { 0, 0, 255 }, // MEM_GAME { 255, 0, 255 }, // MEM_GAMEOPTIONS { 255, 255, 255 }, // MEM_SYSTEM + { 0, 0, 0 }, // MEM_UNKNOWN }; static const char * s_sceneNames[] = @@ -120,6 +123,7 @@ static const char * s_sceneNames[] = "Game", "GameOptions", "System", + "UNKNOWN", }; static const int s_nbSceneNames = sizeof(s_sceneNames) / sizeof(char *); @@ -143,10 +147,10 @@ void dumpDebugMem() MEM_PART * mem; CVECTOR black = {0, 0, 0}; - padd = PadGetDown( 1 ); - padh = PadGetHeld( 1 ); + padd = PadGetRepeat( 0 ); + padh = PadGetHeld( 0 ); -// if (padh & PAD_SQUARE) + if (padh & PAD_SQUARE) { int dir; @@ -164,7 +168,6 @@ void dumpDebugMem() if (s_currentMemPart < 0) s_currentMemPart = MAX_MEM_DUMP - 2; if (s_currentMemPart >= MAX_MEM_DUMP-1) s_currentMemPart = 0; - while( !memDump[s_currentMemPart].addr ) { s_currentMemPart += dir; @@ -304,7 +307,7 @@ void addDebugMem( void * addr, const char * name, const char * file, int line ) { sname = scene->getSceneName(); - id = -1; + id = MEM_UNKNOWN; for (int i=0;i