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 718489923b4dd5a3f12d53510d299033924c5dea.

* 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
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 24 deletions

View file

@ -1,19 +1,23 @@
#include "legophonemepresenter.h"
DECOMP_SIZE_ASSERT(LegoPhonemePresenter, 0x88);
// OFFSET: LEGO1 0x1004e180
LegoPhonemePresenter::LegoPhonemePresenter()
{
Init();
}
// OFFSET: LEGO1 0x1004e3b0 STUB
// OFFSET: LEGO1 0x1004e3b0
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()
{
// TODO
}

View file

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

View file

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

View file

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