From 7341e8b40e1e7a741a619ccac09adbc227815018 Mon Sep 17 00:00:00 2001 From: Misha <106913236+MishaProductions@users.noreply.github.com> Date: Sat, 10 Feb 2024 16:59:58 -0500 Subject: [PATCH] Add JetSkiRace vtable --- LEGO1/lego/legoomni/include/caveentity.h | 10 ++++++ LEGO1/lego/legoomni/include/jetskirace.h | 10 ++++++ .../lego/legoomni/include/legoobjectfactory.h | 16 ++++----- LEGO1/lego/legoomni/include/legorace.h | 2 +- .../legoomni/src/common/legoobjectfactory.cpp | 2 +- LEGO1/lego/legoomni/src/race/jetskirace.cpp | 35 +++++++++++++++++++ 6 files changed, 65 insertions(+), 10 deletions(-) create mode 100644 LEGO1/lego/legoomni/include/caveentity.h diff --git a/LEGO1/lego/legoomni/include/caveentity.h b/LEGO1/lego/legoomni/include/caveentity.h new file mode 100644 index 00000000..24b9759f --- /dev/null +++ b/LEGO1/lego/legoomni/include/caveentity.h @@ -0,0 +1,10 @@ +#ifndef CAVEENTITY_H +#define CAVEENTITY_H + +#include "racestandsentity.h" + +// No overrides, uses vtable from RaceStandsEntity +// SIZE 0x68 +class CaveEntity : public RaceStandsEntity {}; + +#endif // CAVEENTITY_H diff --git a/LEGO1/lego/legoomni/include/jetskirace.h b/LEGO1/lego/legoomni/include/jetskirace.h index d926e871..6c0af635 100644 --- a/LEGO1/lego/legoomni/include/jetskirace.h +++ b/LEGO1/lego/legoomni/include/jetskirace.h @@ -19,6 +19,16 @@ class JetskiRace : public LegoRace { { return !strcmp(p_name, JetskiRace::ClassName()) || LegoRace::IsA(p_name); } + + MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18 + virtual void ReadyWorld() override; // vtable+0x50 + virtual MxBool VTable0x64() override; // vtable+0x64 + virtual undefined4 VTable0x6c(undefined4) override; // vtable+0x6c + virtual undefined4 VTable0x70(undefined4) override; // vtable+0x70 + virtual undefined4 VTable0x74(undefined4) override; // vtable+0x74 }; +// SYNTHETIC: LEGO1 0x1000f530 +// JetskiRace::`scalar deleting destructor' + #endif // JETSKIRACE_H diff --git a/LEGO1/lego/legoomni/include/legoobjectfactory.h b/LEGO1/lego/legoomni/include/legoobjectfactory.h index 66006588..ca2bc8d5 100644 --- a/LEGO1/lego/legoomni/include/legoobjectfactory.h +++ b/LEGO1/lego/legoomni/include/legoobjectfactory.h @@ -4,17 +4,17 @@ #include "mxobjectfactory.h" #define FOR_LEGOOBJECTFACTORY_OBJECTS(X) \ - X(LegoModelPresenter) \ - X(LegoTexturePresenter) \ - X(LegoPhonemePresenter) \ - X(LegoFlcTexturePresenter) \ X(LegoEntityPresenter) \ X(LegoActorPresenter) \ X(LegoWorldPresenter) \ X(LegoWorld) \ + X(LegoAnimPresenter) \ + X(LegoModelPresenter) \ + X(LegoTexturePresenter) \ + X(LegoPhonemePresenter) \ + X(LegoFlcTexturePresenter) \ X(LegoPalettePresenter) \ X(LegoPathPresenter) \ - X(LegoAnimPresenter) \ X(LegoLoopingAnimPresenter) \ X(LegoLocomotionAnimPresenter) \ X(LegoHideAnimPresenter) \ @@ -28,7 +28,7 @@ X(LegoPathActor) \ X(LegoRaceCar) \ X(LegoJetski) \ - /*X(JetskiRace) \*/ \ + X(JetskiRace) \ X(LegoEntity) \ X(LegoCarRaceActor) \ X(LegoJetskiRaceActor) \ @@ -48,7 +48,7 @@ X(GasStation) \ X(LegoAct2) \ X(LegoAct2State) \ - /*X(CarRace)*/ \ + X(CarRace) \ X(HospitalState) \ X(InfocenterState) \ X(PoliceState) \ @@ -93,7 +93,7 @@ X(RaceStandsEntity) \ X(JukeBoxEntity) \ X(RadioState) \ - /*X(CaveEntity)*/ \ + X(CaveEntity) \ /*X(JailEntity)*/ \ X(MxCompositeMediaPresenter) \ X(JukeBox) \ diff --git a/LEGO1/lego/legoomni/include/legorace.h b/LEGO1/lego/legoomni/include/legorace.h index c8b02f2e..9bbb935b 100644 --- a/LEGO1/lego/legoomni/include/legorace.h +++ b/LEGO1/lego/legoomni/include/legorace.h @@ -11,7 +11,7 @@ class LegoRace : public LegoWorld { public: LegoRace(); - ~LegoRace() override; // vtable+0x00 + virtual ~LegoRace() override; // vtable+0x00 MxLong Notify(MxParam& p_param) override; // vtable+0x04 diff --git a/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp b/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp index 8e3d7526..87454802 100644 --- a/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp +++ b/LEGO1/lego/legoomni/src/common/legoobjectfactory.cpp @@ -80,6 +80,7 @@ #include "beachhouseentity.h" #include "bumpbouy.h" #include "carracestate.h" +#include "caveentity.h" #include "gasstationentity.h" #include "hospitalentity.h" #include "infocenterentity.h" @@ -90,7 +91,6 @@ #include "policeentity.h" #include "racestandsentity.h" #include "radiostate.h" -// #include "caveentity.h" // #include "jailentity.h" #include "jukebox.h" #include "jukeboxstate.h" diff --git a/LEGO1/lego/legoomni/src/race/jetskirace.cpp b/LEGO1/lego/legoomni/src/race/jetskirace.cpp index cc119878..0d58b2b7 100644 --- a/LEGO1/lego/legoomni/src/race/jetskirace.cpp +++ b/LEGO1/lego/legoomni/src/race/jetskirace.cpp @@ -1 +1,36 @@ #include "jetskirace.h" + +// STUB: LEGO1 0x100162c0 +MxResult JetskiRace::Create(MxDSAction& p_dsAction) +{ + return SUCCESS; +} + +// STUB: LEGO1 0x100163b0 +void JetskiRace::ReadyWorld() +{ +} + +// STUB: LEGO1 0x10016a10 +MxBool JetskiRace::VTable0x64() +{ + return TRUE; +} + +// STUB: LEGO1 0x100165a0 +undefined4 JetskiRace::VTable0x6c(undefined4) +{ + return 0; +} + +// STUB: LEGO1 0x100166a0 +undefined4 JetskiRace::VTable0x70(undefined4) +{ + return 0; +} + +// STUB: LEGO1 0x10016520 +undefined4 JetskiRace::VTable0x74(undefined4) +{ + return 0; +}