Match and link CTweakSlideShow

This commit is contained in:
Henrique Gemignani Passos Lima 2022-10-16 19:35:43 +03:00
parent 8feeaa9ed6
commit d410febb1d
No known key found for this signature in database
GPG Key ID: E224F951761145F8
6 changed files with 99 additions and 19 deletions

View File

@ -3,12 +3,12 @@
.section .data
.balign 8
.global lbl_803EC000
lbl_803EC000:
.global __vt__15CTweakSlideShow
__vt__15CTweakSlideShow:
# ROM: 0x3E9000
.4byte 0
.4byte 0
.4byte sub_8029c7cc
.4byte __dt__15CTweakSlideShowFv
.4byte 0
.section .text, "ax"
@ -17,11 +17,11 @@ lbl_803EC000:
__ct__15CTweakSlideShowFR12CInputStream:
/* 8029C5F8 00299558 94 21 FF B0 */ stwu r1, -0x50(r1)
/* 8029C5FC 0029955C 7C 08 02 A6 */ mflr r0
/* 8029C600 00299560 3C A0 80 3F */ lis r5, lbl_803EC000@ha
/* 8029C600 00299560 3C A0 80 3F */ lis r5, __vt__15CTweakSlideShow@ha
/* 8029C604 00299564 3C C0 80 3E */ lis r6, __vt__12ITweakObject@ha
/* 8029C608 00299568 90 01 00 54 */ stw r0, 0x54(r1)
/* 8029C60C 0029956C 38 06 9C C4 */ addi r0, r6, __vt__12ITweakObject@l
/* 8029C610 00299570 38 A5 C0 00 */ addi r5, r5, lbl_803EC000@l
/* 8029C610 00299570 38 A5 C0 00 */ addi r5, r5, __vt__15CTweakSlideShow@l
/* 8029C614 00299574 93 E1 00 4C */ stw r31, 0x4c(r1)
/* 8029C618 00299578 7C 9F 23 78 */ mr r31, r4
/* 8029C61C 0029957C 93 C1 00 48 */ stw r30, 0x48(r1)
@ -133,8 +133,8 @@ __ct__15CTweakSlideShowFR12CInputStream:
/* 8029C7C4 00299724 38 21 00 50 */ addi r1, r1, 0x50
/* 8029C7C8 00299728 4E 80 00 20 */ blr
.global sub_8029c7cc
sub_8029c7cc:
.global __dt__15CTweakSlideShowFv
__dt__15CTweakSlideShowFv:
/* 8029C7CC 0029972C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029C7D0 00299730 7C 08 02 A6 */ mflr r0
/* 8029C7D4 00299734 90 01 00 14 */ stw r0, 0x14(r1)
@ -143,9 +143,9 @@ sub_8029c7cc:
/* 8029C7E0 00299740 93 C1 00 08 */ stw r30, 8(r1)
/* 8029C7E4 00299744 7C 7E 1B 79 */ or. r30, r3, r3
/* 8029C7E8 00299748 41 82 00 54 */ beq lbl_8029C83C
/* 8029C7EC 0029974C 3C 60 80 3F */ lis r3, lbl_803EC000@ha
/* 8029C7EC 0029974C 3C 60 80 3F */ lis r3, __vt__15CTweakSlideShow@ha
/* 8029C7F0 00299750 34 1E 00 14 */ addic. r0, r30, 0x14
/* 8029C7F4 00299754 38 03 C0 00 */ addi r0, r3, lbl_803EC000@l
/* 8029C7F4 00299754 38 03 C0 00 */ addi r0, r3, __vt__15CTweakSlideShow@l
/* 8029C7F8 00299758 90 1E 00 00 */ stw r0, 0(r30)
/* 8029C7FC 0029975C 41 82 00 0C */ beq lbl_8029C808
/* 8029C800 00299760 38 7E 00 14 */ addi r3, r30, 0x14
@ -165,7 +165,7 @@ lbl_8029C82C:
/* 8029C82C 0029978C 7F E0 07 35 */ extsh. r0, r31
/* 8029C830 00299790 40 81 00 0C */ ble lbl_8029C83C
/* 8029C834 00299794 7F C3 F3 78 */ mr r3, r30
/* 8029C838 00299798 48 00 00 21 */ bl sub_8029c858
/* 8029C838 00299798 48 00 00 21 */ bl "__dl__29TOneStatic<15CTweakSlideShow>FPv"
lbl_8029C83C:
/* 8029C83C 0029979C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8029C840 002997A0 7F C3 F3 78 */ mr r3, r30
@ -175,8 +175,8 @@ lbl_8029C83C:
/* 8029C850 002997B0 38 21 00 10 */ addi r1, r1, 0x10
/* 8029C854 002997B4 4E 80 00 20 */ blr
.global sub_8029c858
sub_8029c858:
.global "__dl__29TOneStatic<15CTweakSlideShow>FPv"
"__dl__29TOneStatic<15CTweakSlideShow>FPv":
/* 8029C858 002997B8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8029C85C 002997BC 7C 08 02 A6 */ mflr r0
/* 8029C860 002997C0 90 01 00 14 */ stw r0, 0x14(r1)

View File

@ -380,7 +380,7 @@ LIBS = [
"MetroidPrime/Player/CMorphBallShadow",
"MetroidPrime/Player/CPlayerInputFilter",
"MetroidPrime/CSlideShow",
"MetroidPrime/Tweaks/CTweakSlideShow",
["MetroidPrime/Tweaks/CTweakSlideShow", True],
"MetroidPrime/CArtifactDoll",
"MetroidPrime/CProjectedShadow",
"MetroidPrime/CPreFrontEnd",

View File

@ -0,0 +1,38 @@
#ifndef _CTWEAKSLIDESHOW
#define _CTWEAKSLIDESHOW
#include "MetroidPrime/Tweaks/ITweakObject.hpp"
#include "Kyoto/Graphics/CColor.hpp"
#include "Kyoto/TOneStatic.hpp"
#include "rstl/string.hpp"
class CInputStream;
class CTweakSlideShow;
class CTweakSlideShow : public ITweakObject, public TOneStatic< CTweakSlideShow > {
rstl::string x4_pakName;
rstl::string x14_fontAssetName;
CColor x24_fontColor;
CColor x28_outlineColor;
float x2c_scanPercentInterval;
float x30_;
float x34_;
float x38_;
float x3c_;
CColor x40_;
float x44_;
float x48_;
float x4c_;
float x50_;
float x54_;
float x58_;
public:
CTweakSlideShow(CInputStream&);
~CTweakSlideShow();
};
#endif // _CTWEAKSLIDESHOW

View File

@ -38,12 +38,12 @@ class basic_string {
// delete[] x4_cow;
// }
static const _CharTp _EmptyString;
static const _CharTp mNull;
public:
struct literal_t {};
basic_string() : x0_ptr(&_EmptyString), x4_cow(nullptr), x8_size(0) {}
basic_string() : x0_ptr(&mNull), x4_cow(nullptr), x8_size(0) {}
basic_string(literal_t, const _CharTp* data);
// {
@ -72,7 +72,7 @@ public:
// {
// if (size <= 0 && !data)
// {
// x0_ptr = &_EmptyString;
// x0_ptr = &mNull;
// x4_cow = nullptr;
// x8_size = 0;
// return;
@ -97,6 +97,7 @@ public:
~basic_string() { internal_dereference(); }
void assign(const basic_string&);
basic_string& operator=(const basic_string&);
basic_string operator+(const basic_string&);
basic_string operator+(const _CharTp*);
@ -105,9 +106,9 @@ public:
};
// template <>
// const char basic_string<char>::_EmptyString = 0;
// const char basic_string<char>::mNull = 0;
// template <>
// const wchar_t basic_string<wchar_t>::_EmptyString = 0;
// const wchar_t basic_string<wchar_t>::mNull = 0;
typedef basic_string< wchar_t > wstring;
typedef basic_string< char > string;

View File

@ -347,7 +347,7 @@ METROIDPRIME :=\
$(BUILD_DIR)/asm/MetroidPrime/Player/CMorphBallShadow.o\
$(BUILD_DIR)/asm/MetroidPrime/Player/CPlayerInputFilter.o\
$(BUILD_DIR)/asm/MetroidPrime/CSlideShow.o\
$(BUILD_DIR)/asm/MetroidPrime/Tweaks/CTweakSlideShow.o\
$(BUILD_DIR)/src/MetroidPrime/Tweaks/CTweakSlideShow.o\
$(BUILD_DIR)/asm/MetroidPrime/CArtifactDoll.o\
$(BUILD_DIR)/asm/MetroidPrime/CProjectedShadow.o\
$(BUILD_DIR)/asm/MetroidPrime/CPreFrontEnd.o\

View File

@ -0,0 +1,41 @@
#include "MetroidPrime/Tweaks/CTweakSlideShow.hpp"
#include "Kyoto/Streams/CInputStream.hpp"
CTweakSlideShow::~CTweakSlideShow() {}
CTweakSlideShow::CTweakSlideShow(CInputStream& in)
: x4_pakName()
, x14_fontAssetName()
, x24_fontColor(CColor::White())
, x28_outlineColor(CColor::White())
, x2c_scanPercentInterval(0.0f)
, x30_(0.0f)
, x34_(0.0f)
, x38_(0.0f)
, x3c_(0.0f)
, x40_(CColor::White())
, x44_(0.0f)
, x48_(0.0f)
, x4c_(0.0f)
, x50_(0.0f)
, x54_(0.001f)
, x58_(0.001f)
{
x4_pakName.assign(rstl::string(in));
x14_fontAssetName.assign(rstl::string(in));
x24_fontColor = CColor(in);
x28_outlineColor = CColor(in);
x2c_scanPercentInterval = in.ReadFloat();
x30_ = in.ReadFloat();
x34_ = in.ReadFloat();
x38_ = in.ReadFloat();
x3c_ = in.ReadFloat();
x40_ = CColor(in);
x44_ = in.ReadFloat();
x48_ = in.ReadFloat();
x4c_ = in.ReadFloat();
x50_ = in.ReadFloat();
x54_ = in.ReadFloat();
x58_ = in.ReadFloat();
}