From 49bad74104d5e9c9e4a17d18af86147075a393f1 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Sun, 5 Nov 2023 10:20:00 -0500 Subject: [PATCH] implement register/unregister scripts (#264) * register/unregister implementation * Fixes --------- Co-authored-by: Christian Semmler <mail@csemmler.com> --- LEGO1/legoomni.cpp | 180 ++++++++++++++++++++++++++++++++++++++++++++- LEGO1/legoomni.h | 32 ++++++++ LEGO1/score.cpp | 2 - 3 files changed, 209 insertions(+), 5 deletions(-) diff --git a/LEGO1/legoomni.cpp b/LEGO1/legoomni.cpp index a6c1461d..06315059 100644 --- a/LEGO1/legoomni.cpp +++ b/LEGO1/legoomni.cpp @@ -8,12 +8,90 @@ #include "mxbackgroundaudiomanager.h" #include "mxdsfile.h" -// 0x100f4588 -MxAtomId* g_nocdSourceName = NULL; +// 0x100f451c +MxAtomId* g_copterScript = NULL; + +// 0x100f4520 +MxAtomId* g_dunecarScript = NULL; + +// 0x100f4524 +MxAtomId* g_jetskiScript = NULL; + +// 0x100f4528 +MxAtomId* g_racecarScript = NULL; + +// 0x100f452c +MxAtomId* g_carraceScript = NULL; + +// 0x100f4530 +MxAtomId* g_carracerScript = NULL; + +// 0x100f4534 +MxAtomId* g_jetraceScript = NULL; + +// 0x100f4538 +MxAtomId* g_jetracerScript = NULL; + +// 0x100f453c +MxAtomId* g_isleScript = NULL; + +// 0x100f4540 +MxAtomId* g_elevbottScript = NULL; + +// 0x100f4544 +MxAtomId* g_infodoorScript = NULL; + +// 0x100f4548 +MxAtomId* g_infomainScript = NULL; + +// 0x100f454c +MxAtomId* g_infoscorScript = NULL; + +// 0x100f4550 +MxAtomId* g_regbookScript = NULL; + +// 0x100f4554 +MxAtomId* g_histbookScript = NULL; + +// 0x100f4558 +MxAtomId* g_hospitalScript = NULL; + +// 0x100f455c +MxAtomId* g_policeScript = NULL; + +// 0x100f4560 +MxAtomId* g_garageScript = NULL; + +// 0x100f4564 +MxAtomId* g_act2mainScript = NULL; + +// 0x100f4568 +MxAtomId* g_act3Script = NULL; // 0x100f456c MxAtomId* g_jukeboxScript = NULL; +// 0x100f4570 +MxAtomId* g_pz5Script = NULL; + +// 0x100f4574 +MxAtomId* g_introScript = NULL; + +// 0x100f4578 +MxAtomId* g_testScript = NULL; + +// 0x100f457c +MxAtomId* g_jukeboxwScript = NULL; + +// 0x100f4580c +MxAtomId* g_sndAnimScript = NULL; + +// 0x100f4584 +MxAtomId* g_creditsScript = NULL; + +// 0x100f4588 +MxAtomId* g_nocdSourceName = NULL; + // 0x101020e8 void (*g_omniUserMessage)(const char*, int); @@ -327,7 +405,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p) m_objectFactory = new LegoObjectFactory(); m_gameState = new LegoGameState(); m_bkgAudioManager = new MxBackgroundAudioManager(); - + RegisterScripts(); return SUCCESS; } @@ -388,3 +466,99 @@ void LegoOmni::StopTimer() MxOmni::StopTimer(); SetAppCursor(0); } + +// OFFSET: LEGO1 0x100528e0 +void RegisterScripts() +{ + g_copterScript = new MxAtomId("\\lego\\scripts\\build\\copter", LookupMode_LowerCase2); + g_dunecarScript = new MxAtomId("\\lego\\scripts\\build\\dunecar", LookupMode_LowerCase2); + g_jetskiScript = new MxAtomId("\\lego\\scripts\\build\\jetski", LookupMode_LowerCase2); + g_racecarScript = new MxAtomId("\\lego\\scripts\\build\\racecar", LookupMode_LowerCase2); + g_carraceScript = new MxAtomId("\\lego\\scripts\\race\\carrace", LookupMode_LowerCase2); + g_carracerScript = new MxAtomId("\\lego\\scripts\\race\\carracer", LookupMode_LowerCase2); + g_jetraceScript = new MxAtomId("\\lego\\scripts\\race\\jetrace", LookupMode_LowerCase2); + g_jetracerScript = new MxAtomId("\\lego\\scripts\\race\\jetracer", LookupMode_LowerCase2); + g_isleScript = new MxAtomId("\\lego\\scripts\\isle\\isle", LookupMode_LowerCase2); + g_elevbottScript = new MxAtomId("\\lego\\scripts\\infocntr\\elevbott", LookupMode_LowerCase2); + g_infodoorScript = new MxAtomId("\\lego\\scripts\\infocntr\\infodoor", LookupMode_LowerCase2); + g_infomainScript = new MxAtomId("\\lego\\scripts\\infocntr\\infomain", LookupMode_LowerCase2); + g_infoscorScript = new MxAtomId("\\lego\\scripts\\infocntr\\infoscor", LookupMode_LowerCase2); + g_regbookScript = new MxAtomId("\\lego\\scripts\\infocntr\\regbook", LookupMode_LowerCase2); + g_histbookScript = new MxAtomId("\\lego\\scripts\\infocntr\\histbook", LookupMode_LowerCase2); + g_hospitalScript = new MxAtomId("\\lego\\scripts\\hospital\\hospital", LookupMode_LowerCase2); + g_policeScript = new MxAtomId("\\lego\\scripts\\police\\police", LookupMode_LowerCase2); + g_garageScript = new MxAtomId("\\lego\\scripts\\garage\\garage", LookupMode_LowerCase2); + g_act2mainScript = new MxAtomId("\\lego\\scripts\\act2\\act2main", LookupMode_LowerCase2); + g_act3Script = new MxAtomId("\\lego\\scripts\\act3\\act3", LookupMode_LowerCase2); + g_jukeboxScript = new MxAtomId("\\lego\\scripts\\isle\\jukebox", LookupMode_LowerCase2); + g_pz5Script = new MxAtomId("\\lego\\scripts\\isle\\pz5", LookupMode_LowerCase2); + g_introScript = new MxAtomId("\\lego\\scripts\\intro", LookupMode_LowerCase2); + g_testScript = new MxAtomId("\\lego\\scripts\\test\\test", LookupMode_LowerCase2); + g_jukeboxwScript = new MxAtomId("\\lego\\scripts\\isle\\jukeboxw", LookupMode_LowerCase2); + g_sndAnimScript = new MxAtomId("\\lego\\scripts\\sndanim", LookupMode_LowerCase2); + g_creditsScript = new MxAtomId("\\lego\\scripts\\credits", LookupMode_LowerCase2); + g_nocdSourceName = new MxAtomId("\\lego\\scripts\\nocd", LookupMode_LowerCase2); +} + +// OFFSET: LEGO1 0x100530c0 +void UnregisterScripts() +{ + delete g_copterScript; + delete g_dunecarScript; + delete g_jetskiScript; + delete g_racecarScript; + delete g_carraceScript; + delete g_carracerScript; + delete g_jetraceScript; + delete g_jetracerScript; + delete g_isleScript; + delete g_elevbottScript; + delete g_infodoorScript; + delete g_infomainScript; + delete g_infoscorScript; + delete g_regbookScript; + delete g_histbookScript; + delete g_hospitalScript; + delete g_policeScript; + delete g_garageScript; + delete g_act2mainScript; + delete g_act3Script; + delete g_jukeboxScript; + delete g_pz5Script; + delete g_introScript; + delete g_testScript; + delete g_jukeboxwScript; + delete g_sndAnimScript; + delete g_creditsScript; + delete g_nocdSourceName; + + g_copterScript = NULL; + g_dunecarScript = NULL; + g_jetskiScript = NULL; + g_racecarScript = NULL; + g_carraceScript = NULL; + g_carracerScript = NULL; + g_jetraceScript = NULL; + g_jetracerScript = NULL; + g_isleScript = NULL; + g_elevbottScript = NULL; + g_infodoorScript = NULL; + g_infomainScript = NULL; + g_infoscorScript = NULL; + g_regbookScript = NULL; + g_histbookScript = NULL; + g_hospitalScript = NULL; + g_policeScript = NULL; + g_garageScript = NULL; + g_act2mainScript = NULL; + g_act3Script = NULL; + g_jukeboxScript = NULL; + g_pz5Script = NULL; + g_introScript = NULL; + g_testScript = NULL; + g_testScript = NULL; + g_jukeboxwScript = NULL; + g_sndAnimScript = NULL; + g_creditsScript = NULL; + g_nocdSourceName = NULL; +} diff --git a/LEGO1/legoomni.h b/LEGO1/legoomni.h index 469fd8cb..b33c6c6e 100644 --- a/LEGO1/legoomni.h +++ b/LEGO1/legoomni.h @@ -26,6 +26,35 @@ class MxBackgroundAudioManager; class MxDSFile; class MxTransitionManager; +extern MxAtomId* g_copterScript; +extern MxAtomId* g_dunecarScript; +extern MxAtomId* g_jetskiScript; +extern MxAtomId* g_racecarScript; +extern MxAtomId* g_carraceScript; +extern MxAtomId* g_carracerScript; +extern MxAtomId* g_jetraceScript; +extern MxAtomId* g_jetracerScript; +extern MxAtomId* g_isleScript; +extern MxAtomId* g_elevbottScript; +extern MxAtomId* g_infodoorScript; +extern MxAtomId* g_infomainScript; +extern MxAtomId* g_infoscorScript; +extern MxAtomId* g_regbookScript; +extern MxAtomId* g_histbookScript; +extern MxAtomId* g_hospitalScript; +extern MxAtomId* g_policeScript; +extern MxAtomId* g_garageScript; +extern MxAtomId* g_act2mainScript; +extern MxAtomId* g_act3Script; +extern MxAtomId* g_jukeboxScript; +extern MxAtomId* g_pz5Script; +extern MxAtomId* g_introScript; +extern MxAtomId* g_testScript; +extern MxAtomId* g_jukeboxwScript; +extern MxAtomId* g_sndAnimScript; +extern MxAtomId* g_creditsScript; +extern MxAtomId* g_nocdSourceName; + // VTABLE 0x100d8638 // SIZE: 0x140 class LegoOmni : public MxOmni { @@ -127,4 +156,7 @@ LegoWorld* GetCurrentWorld(); GifManager* GetGifManager(); MxDSAction& GetCurrentAction(); +void RegisterScripts(); +void UnregisterScripts(); + #endif // LEGOOMNI_H diff --git a/LEGO1/score.cpp b/LEGO1/score.cpp index 3339ac61..1c122482 100644 --- a/LEGO1/score.cpp +++ b/LEGO1/score.cpp @@ -15,8 +15,6 @@ DECOMP_SIZE_ASSERT(Score, 0x104) -MxAtomId* g_infoscorScript; - // OFFSET: LEGO1 0x10001000 Score::Score() {