From 82c144a2fbcaa878a5e192557c706326f6802f5a Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Tue, 24 Dec 2024 11:02:33 -0700 Subject: [PATCH] Match `Score::Paint` --- LEGO1/lego/legoomni/include/ambulance.h | 10 ++++++++-- LEGO1/lego/legoomni/include/legorace.h | 2 ++ LEGO1/lego/legoomni/include/pizza.h | 1 + LEGO1/lego/legoomni/include/towtrack.h | 10 ++++++++-- LEGO1/lego/legoomni/src/actors/pizza.cpp | 1 + LEGO1/lego/legoomni/src/race/legorace.cpp | 1 + LEGO1/lego/legoomni/src/worlds/score.cpp | 3 ++- 7 files changed, 23 insertions(+), 5 deletions(-) diff --git a/LEGO1/lego/legoomni/include/ambulance.h b/LEGO1/lego/legoomni/include/ambulance.h index e6d2a4aa..09028188 100644 --- a/LEGO1/lego/legoomni/include/ambulance.h +++ b/LEGO1/lego/legoomni/include/ambulance.h @@ -29,22 +29,28 @@ class AmbulanceMissionState : public LegoState { MxResult Serialize(LegoFile* p_file) override; // vtable+0x1c + // FUNCTION: BETA10 0x10088770 MxS16 GetHighScore(MxU8 p_actorId) { switch (p_actorId) { case LegoActor::c_pepper: return m_peHighScore; + break; case LegoActor::c_mama: return m_maHighScore; + break; case LegoActor::c_papa: return m_paHighScore; + break; case LegoActor::c_nick: return m_niHighScore; + break; case LegoActor::c_laura: return m_laHighScore; - default: - return 0; + break; } + + return 0; } // FUNCTION: BETA10 0x100242d0 diff --git a/LEGO1/lego/legoomni/include/legorace.h b/LEGO1/lego/legoomni/include/legorace.h index 642d26cb..43368f99 100644 --- a/LEGO1/lego/legoomni/include/legorace.h +++ b/LEGO1/lego/legoomni/include/legorace.h @@ -34,6 +34,8 @@ class RaceState : public LegoState { } MxS16 GetUnknown0x02() { return m_unk0x02; } + + // FUNCTION: BETA10 0x10088970 MxS16 GetHighScore() { return m_score; } // FUNCTION: BETA10 0x100c96f0 diff --git a/LEGO1/lego/legoomni/include/pizza.h b/LEGO1/lego/legoomni/include/pizza.h index 771d1178..b08e5310 100644 --- a/LEGO1/lego/legoomni/include/pizza.h +++ b/LEGO1/lego/legoomni/include/pizza.h @@ -148,6 +148,7 @@ class PizzaMissionState : public LegoState { // FUNCTION: BETA10 0x100ef850 MxU32 GetUnknown0xb0() { return m_unk0xb0; } + // FUNCTION: BETA10 0x10088850 MxS16 GetHighScore(MxU8 p_actorId) { return GetMission(p_actorId)->m_hiScore; } // SYNTHETIC: LEGO1 0x10039350 diff --git a/LEGO1/lego/legoomni/include/towtrack.h b/LEGO1/lego/legoomni/include/towtrack.h index e20e098f..4bf7d84a 100644 --- a/LEGO1/lego/legoomni/include/towtrack.h +++ b/LEGO1/lego/legoomni/include/towtrack.h @@ -30,22 +30,28 @@ class TowTrackMissionState : public LegoState { MxResult Serialize(LegoFile* p_file) override; // vtable+0x1c + // FUNCTION: BETA10 0x10088890 MxS16 GetHighScore(MxU8 p_actorId) { switch (p_actorId) { case LegoActor::c_pepper: return m_peHighScore; + break; case LegoActor::c_mama: return m_maHighScore; + break; case LegoActor::c_papa: return m_paHighScore; + break; case LegoActor::c_nick: return m_niHighScore; + break; case LegoActor::c_laura: return m_laHighScore; - default: - return 0; + break; } + + return 0; } // FUNCTION: BETA10 0x100f8530 diff --git a/LEGO1/lego/legoomni/src/actors/pizza.cpp b/LEGO1/lego/legoomni/src/actors/pizza.cpp index 75eababc..7fd07808 100644 --- a/LEGO1/lego/legoomni/src/actors/pizza.cpp +++ b/LEGO1/lego/legoomni/src/actors/pizza.cpp @@ -624,6 +624,7 @@ MxResult PizzaMissionState::Serialize(LegoFile* p_file) } // FUNCTION: LEGO1 0x10039510 +// FUNCTION: BETA10 0x100eed45 PizzaMissionState::Mission* PizzaMissionState::GetMission(MxU8 p_actorId) { for (MxS16 i = 0; i < 5; i++) { diff --git a/LEGO1/lego/legoomni/src/race/legorace.cpp b/LEGO1/lego/legoomni/src/race/legorace.cpp index c9a878ad..355e2914 100644 --- a/LEGO1/lego/legoomni/src/race/legorace.cpp +++ b/LEGO1/lego/legoomni/src/race/legorace.cpp @@ -165,6 +165,7 @@ MxResult RaceState::Serialize(LegoFile* p_file) } // FUNCTION: LEGO1 0x10016280 +// FUNCTION: BETA10 0x100c7dfd RaceState::Entry* RaceState::GetState(MxU8 p_id) { for (MxS16 i = 0;; i++) { diff --git a/LEGO1/lego/legoomni/src/worlds/score.cpp b/LEGO1/lego/legoomni/src/worlds/score.cpp index dd9fc6f7..27e7fa4b 100644 --- a/LEGO1/lego/legoomni/src/worlds/score.cpp +++ b/LEGO1/lego/legoomni/src/worlds/score.cpp @@ -254,7 +254,8 @@ void Score::Paint() memset(&desc, 0, sizeof(desc)); desc.dwSize = sizeof(desc); - if (cube->m_surface->Lock(NULL, &desc, 0, NULL) == DD_OK) { + HRESULT result = cube->m_surface->Lock(NULL, &desc, DDLOCK_SURFACEMEMORYPTR, NULL); + if (result == DD_OK) { if (desc.lPitch != desc.dwWidth) { cube->m_surface->Unlock(desc.lpSurface); return;