Matching spree (#98)

* LegoNavController: Match CalculateNewTargetSpeed

Ghidra showed this correctly too, but the asm showed the problem simply, an incorrect comparison

* Match a MxPresenter vtable function

* Match known functions in LegoPhonemePresenter

* Revert "LegoNavController: Match CalculateNewTargetSpeed"

This reverts commit 718489923b.

* MxPresenter: rename tickle flag fields

* LegoPhonemePresenter: add size assert

---------

Co-authored-by: MattKC <34096995+itsmattkc@users.noreply.github.com>
This commit is contained in:
Joshua Peisach
2023-08-28 05:38:46 -04:00
committed by GitHub
parent 1d104141b5
commit 23457da730
4 changed files with 36 additions and 24 deletions

View File

@@ -1,19 +1,23 @@
#include "legophonemepresenter.h" #include "legophonemepresenter.h"
DECOMP_SIZE_ASSERT(LegoPhonemePresenter, 0x88);
// OFFSET: LEGO1 0x1004e180 // OFFSET: LEGO1 0x1004e180
LegoPhonemePresenter::LegoPhonemePresenter() LegoPhonemePresenter::LegoPhonemePresenter()
{ {
Init(); Init();
} }
// OFFSET: LEGO1 0x1004e3b0 STUB // OFFSET: LEGO1 0x1004e3b0
void LegoPhonemePresenter::Init() void LegoPhonemePresenter::Init()
{ {
// TODO m_unk68 = 0;
m_unk6c = 0;
m_unk70 = 0;
m_unk84 = 0;
} }
// OFFSET: LEGO1 0x1004e340 STUB // OFFSET: LEGO1 0x1004e340
LegoPhonemePresenter::~LegoPhonemePresenter() LegoPhonemePresenter::~LegoPhonemePresenter()
{ {
// TODO
} }

View File

@@ -1,7 +1,10 @@
#ifndef LEGOPHONEMEPRESENTER_H #ifndef LEGOPHONEMEPRESENTER_H
#define LEGOPHONEMEPRESENTER_H #define LEGOPHONEMEPRESENTER_H
#include "decomp.h"
#include "mxflcpresenter.h" #include "mxflcpresenter.h"
#include "mxstring.h"
#include "mxtypes.h"
// VTABLE 0x100d8040 // VTABLE 0x100d8040
// SIZE 0x88 // SIZE 0x88
@@ -20,7 +23,11 @@ public:
private: private:
void Init(); void Init();
int m_unk68;
int m_unk6c;
undefined m_unk70;
MxString m_string; // 0x74
undefined m_unk84;
}; };
#endif // LEGOPHONEMEPRESENTER_H #endif // LEGOPHONEMEPRESENTER_H

View File

@@ -4,20 +4,21 @@
DECOMP_SIZE_ASSERT(MxPresenter, 0x40); DECOMP_SIZE_ASSERT(MxPresenter, 0x40);
// OFFSET: LEGO1 0x1000bee0 STUB // OFFSET: LEGO1 0x1000bee0
void MxPresenter::DoneTickle() void MxPresenter::DoneTickle()
{ {
// TODO m_previousTickleFlags |= 1 << m_currentTickleFlag;
m_currentTickleFlag = 0;
} }
// OFFSET: LEGO1 0x100b4d50 // OFFSET: LEGO1 0x100b4d50
void MxPresenter::Init() void MxPresenter::Init()
{ {
m_unk0x8 = 0; m_currentTickleFlag = 0;
m_action = NULL; m_action = NULL;
m_unk0x18 = 0; m_unk0x18 = 0;
m_unk0x3c = 0; m_unk0x3c = 0;
m_unk0xc = 0; m_previousTickleFlags = 0;
m_unk0x10 = 0; m_unk0x10 = 0;
m_unk0x14 = 0; m_unk0x14 = 0;
} }
@@ -70,36 +71,36 @@ void MxPresenter::VTable0x14()
void MxPresenter::VTable0x18() void MxPresenter::VTable0x18()
{ {
ParseExtra(); ParseExtra();
m_unk0xc |= 1 << (unsigned char)m_unk0x8; m_previousTickleFlags |= 1 << (unsigned char)m_currentTickleFlag;
m_unk0x8 = 2; m_currentTickleFlag = 2;
} }
// OFFSET: LEGO1 0x1000be60 // OFFSET: LEGO1 0x1000be60
void MxPresenter::VTable0x1c() void MxPresenter::VTable0x1c()
{ {
m_unk0xc |= 1 << (unsigned char)m_unk0x8; m_previousTickleFlags |= 1 << (unsigned char)m_currentTickleFlag;
m_unk0x8 = 3; m_currentTickleFlag = 3;
} }
// OFFSET: LEGO1 0x1000be80 // OFFSET: LEGO1 0x1000be80
void MxPresenter::VTable0x20() void MxPresenter::VTable0x20()
{ {
m_unk0xc |= 1 << (unsigned char)m_unk0x8; m_previousTickleFlags |= 1 << (unsigned char)m_currentTickleFlag;
m_unk0x8 = 4; m_currentTickleFlag = 4;
} }
// OFFSET: LEGO1 0x1000bea0 // OFFSET: LEGO1 0x1000bea0
void MxPresenter::VTable0x24() void MxPresenter::VTable0x24()
{ {
m_unk0xc |= 1 << (unsigned char)m_unk0x8; m_previousTickleFlags |= 1 << (unsigned char)m_currentTickleFlag;
m_unk0x8 = 5; m_currentTickleFlag = 5;
} }
// OFFSET: LEGO1 0x1000bec0 // OFFSET: LEGO1 0x1000bec0
void MxPresenter::VTable0x28() void MxPresenter::VTable0x28()
{ {
m_unk0xc |= 1 << (unsigned char)m_unk0x8; m_previousTickleFlags |= 1 << (unsigned char)m_currentTickleFlag;
m_unk0x8 = 6; m_currentTickleFlag = 6;
} }
// OFFSET: LEGO1 0x1000bf70 // OFFSET: LEGO1 0x1000bf70
@@ -116,14 +117,14 @@ void MxPresenter::InitVirtual()
// OFFSET: LEGO1 0x1000bf90 // OFFSET: LEGO1 0x1000bf90
void MxPresenter::VTable0x44(undefined4 param) void MxPresenter::VTable0x44(undefined4 param)
{ {
m_unk0xc |= 1 << (unsigned char)m_unk0x8; m_previousTickleFlags |= 1 << (unsigned char)m_currentTickleFlag;
m_unk0x8 = param; m_currentTickleFlag = param;
} }
// OFFSET: LEGO1 0x1000bfb0 // OFFSET: LEGO1 0x1000bfb0
unsigned char MxPresenter::VTable0x48(unsigned char param) unsigned char MxPresenter::VTable0x48(unsigned char param)
{ {
return m_unk0xc & (1 << param); return m_previousTickleFlags & (1 << param);
} }
// OFFSET: LEGO1 0x1000bfc0 // OFFSET: LEGO1 0x1000bfc0

View File

@@ -55,8 +55,8 @@ protected:
__declspec(dllexport) void Init(); __declspec(dllexport) void Init();
public: public:
undefined4 m_unk0x8; MxS32 m_currentTickleFlag; // 0x8
undefined4 m_unk0xc; MxU32 m_previousTickleFlags;
undefined4 m_unk0x10; undefined4 m_unk0x10;
undefined4 m_unk0x14; undefined4 m_unk0x14;
undefined4 m_unk0x18; undefined4 m_unk0x18;