Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions config/RSBE01_02/rels/st_gw/splits.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,28 @@ global_destructor_chain.c:
.dtors start:0x00000000 end:0x00000008
.bss start:0x00000000 end:0x00000004

mo_stage/st_gw/gr_gw_scene.cpp:
.text start:0x000033A4 end:0x0000398C
.data start:0x00000BA8 end:0x00000DF0
.rodata start:0x00000048 end:0x00000050

mo_stage/st_gw/gr_gw_scene_chef.cpp:
.text start:0x0000398C end:0x00003A98
.data start:0x00000DF0 end:0x00001048

mo_stage/st_gw/gr_gw_scene_lion.cpp:
.text start:0x00004F5C end:0x00005190
.data start:0x00001418 end:0x00001808

mo_stage/st_gw/gr_gw_scene_oil.cpp:
.text start:0x00005190 end:0x0000552C
.data start:0x00001808 end:0x00001C78

mo_stage/st_gw/gr_gw_fire_etc.cpp:
.text start:0x00014728 end:0x00015C80
.data start:0x00005970 end:0x00006048
.rodata start:0x000001E0 end:0x00000208

mo_stage/mo_stage.cpp:
.text start:0x000172EC end:0x00017388
.data start:0x00006878 end:0x00006885
Expand Down
279 changes: 165 additions & 114 deletions config/RSBE01_02/rels/st_gw/symbols.txt

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions config/RSBE01_02/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6528,8 +6528,8 @@ fn_8015C144 = .text:0x8015C144; // type:function size:0x6C
fn_8015C1B0 = .text:0x8015C1B0; // type:function size:0x20
fn_8015C1D0 = .text:0x8015C1D0; // type:function size:0x1C
fn_8015C1EC = .text:0x8015C1EC; // type:function size:0x4C
fn_8015C238 = .text:0x8015C238; // type:function size:0x84
fn_8015C2BC = .text:0x8015C2BC; // type:function size:0x48
__dt__Q44nw4r2ut6detail12LinkListImplFv = .text:0x8015C238; // type:function size:0x84
Erase__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8Iterator = .text:0x8015C2BC; // type:function size:0x48
fn_8015C304 = .text:0x8015C304; // type:function size:0x44
Insert__Q44nw4r2ut6detail12LinkListImplFQ54nw4r2ut6detail12LinkListImpl8IteratorPQ34nw4r2ut12LinkListNode = .text:0x8015C348; // type:function size:0x2C
Erase__Q44nw4r2ut6detail12LinkListImplFPQ34nw4r2ut12LinkListNode = .text:0x8015C374; // type:function size:0x30
Expand Down
8 changes: 7 additions & 1 deletion configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -1210,7 +1210,13 @@ def MatchingFor(*versions):
"mw_version": config.linker_version,
"cflags": cflags_rel,
"host": False,
"objects": [],
"objects": [
Object(Matching, "mo_stage/st_gw/gr_gw_scene.cpp"),
Object(Matching, "mo_stage/st_gw/gr_gw_scene_chef.cpp"),
Object(Matching, "mo_stage/st_gw/gr_gw_scene_lion.cpp"),
Object(Matching, "mo_stage/st_gw/gr_gw_scene_oil.cpp"),
Object(Matching, "mo_stage/st_gw/gr_gw_fire_etc.cpp"),
],
},
{
"lib": "st_halberd",
Expand Down
26 changes: 26 additions & 0 deletions include/st_gw/gr_gw.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#pragma once

#include <gr/gr_yakumono.h>

class grGW : public grYakumono {
protected:
u8 unk150;
float unk154;
u8* unk158;
u8 unk15C;
u8 unk15D;
float unk160;
float unk164;
Vec3f unk168;

public:
grGW(const char* taskName);
virtual ~grGW();
virtual void update(float deltaFrame);
virtual void updateScaleBase(float deltaFrame);
virtual void updateCallBack(float deltaFrame);
virtual void setMotion(u32 index, bool loop, bool force, float* frameCount);
virtual void setSceneIDWork(u8* scene);
virtual void setSceneID(u8 scene);
};
static_assert(sizeof(grGW) == 0x174, "Class is wrong size!");
70 changes: 70 additions & 0 deletions include/st_gw/gr_gw_fire_etc.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#pragma once

#include <nw4r/ut/ut_LinkList.h>
#include <st_gw/gr_gw.h>

class grGWFireEtc : public grGW {
struct Victim { // Name unknown
nw4r::ut::LinkListNode unk0;
u8 unk8;
float unkC;
};
struct NodeState { // Name unknown
u32 unk0[22];
float unk58;
};
enum State { STATE_0, STATE_1, STATE_2, STATE_3, STATE_4 }; // Name unknown
enum VictimStep { // Name unknown
STEP_3 = 3, STEP_4 = 4, STEP_11 = 11, STEP_12 = 12,
STEP_17 = 17, STEP_18 = 18, STEP_END = 21, STEP_REMOVED = 255
};
enum MistakeState { MISTAKE_11 = 11, MISTAKE_12 = 12 }; // Name unknown
u8* unk174;
u8* unk178;
u8* unk17C;
u32 unk180;
u32 unk184;
NodeState unk188;
u8* unk1E4;
u8 unk1E8;
nw4r::ut::LinkList<Victim, 0> unk1EC;
public:
inline grGWFireEtc(const char* taskName);
virtual ~grGWFireEtc();
virtual void update(float deltaFrame);
virtual bool setNode();
virtual void updateVictim(float deltaFrame);
virtual void setIndexWork(u8* value) { unk178 = value; }
virtual void setIndexFighterWork(u8* value) { unk17C = value; }
virtual void setStateMistakeWork(u8* value) { unk174 = value; }
virtual void setEventWork(u8* value) { unk1E4 = value; }
virtual void addVictim();
virtual void clearVictim();
virtual void clearVictimAll();
virtual Victim* getVictim(u32 index);
static grGWFireEtc* create(int modelIndex, const char* nodeName, const char* taskName);
};
static_assert(sizeof(grGWFireEtc) == 0x1F8, "Class is wrong size!");

class grGWFireFighter : public grGW {
enum State { STATE_0, STATE_1, STATE_2, STATE_3, STATE_4 }; // Name unknown
u32 unk174;
u32 unk178[3];
Vec3f* unk184;
u8* unk188;
u8* unk18C;
u8* unk190;
u8 unk194;
public:
inline grGWFireFighter(const char* taskName);
virtual ~grGWFireFighter();
virtual void update(float deltaFrame);
virtual bool setNode();
virtual void updateFighter(float deltaFrame);
virtual void setEventWork(u8* value) { unk190 = value; }
virtual void setPosWork(Vec3f* value) { unk184 = value; }
virtual void setIndexWork(u8* value) { unk188 = value; }
virtual void setIndexVictimWork(u8* value) { unk18C = value; }
static grGWFireFighter* create(int modelIndex, const char* nodeName, const char* taskName);
};
static_assert(sizeof(grGWFireFighter) == 0x198, "Class is wrong size!");
36 changes: 36 additions & 0 deletions include/st_gw/gr_gw_scene.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#pragma once

#include <st_gw/gr_gw.h>

class stDataMultiContainer;

class grGWScene : public grGW {
private:
u8 unk174;
float unk178;
float* unk17C;
Vec3f* unk180;
u8* unk184;
u8* unk188;
u8 unk18C;
u8 unk18D;
stDataMultiContainer* unk190;

public:
static grGWScene* create(int modelIndex, const char* nodeName, const char* taskName);
grGWScene(const char* taskName);
virtual ~grGWScene();
virtual void update(float deltaFrame);
virtual void updateSub(float deltaFrame);
virtual void updateSubEnd(float deltaFrame);
virtual void updateStep(float deltaFrame);
virtual void updateEvent(float deltaFrame);
virtual void selectStep();
virtual void clearStep();
virtual void setFrameWork(float* frame);
virtual void setEventWork(u8* event);
virtual void setPosGimmickWork(Vec3f* positions);
virtual void setCtrlStepWork(u8* control);
virtual void setTblStepAcc(stDataMultiContainer* table);
};
static_assert(sizeof(grGWScene) == 0x194, "Class is wrong size!");
12 changes: 12 additions & 0 deletions include/st_gw/gr_gw_scene_chef.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#pragma once

#include <st_gw/gr_gw_scene.h>

class grGWSceneChef : public grGWScene {
public:
static grGWSceneChef* create(int modelIndex, const char* nodeName, const char* taskName);
grGWSceneChef(const char* taskName) : grGWScene(taskName) { }
virtual ~grGWSceneChef();
virtual void update(float deltaFrame);
};
static_assert(sizeof(grGWSceneChef) == 0x194, "Class is wrong size!");
20 changes: 20 additions & 0 deletions include/st_gw/gr_gw_scene_lion.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#pragma once

#include <st_gw/gr_gw_scene.h>

class grGWSceneLion : public grGWScene {
private:
Vec3f* unk194;
Vec3f* unk198;

public:
static grGWSceneLion* create(int modelIndex, const char* nodeName, const char* taskName);
grGWSceneLion(const char* taskName)
: grGWScene(taskName), unk194(nullptr), unk198(nullptr) { }
virtual ~grGWSceneLion();
virtual void processAnim();
virtual void update(float deltaFrame);
virtual void setPosKeeperLWork(Vec3f* positions) { unk194 = positions; }
virtual void setPosKeeperRWork(Vec3f* positions) { unk198 = positions; }
};
static_assert(sizeof(grGWSceneLion) == 0x19C, "Class is wrong size!");
27 changes: 27 additions & 0 deletions include/st_gw/gr_gw_scene_oil.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#pragma once

#include <st_gw/gr_gw_scene.h>

struct grGWGuestData { // Name unknown
Vec3f unk0[8];
u8 unk60;
u8 unk61;
};
static_assert(sizeof(grGWGuestData) == 0x64, "Class is wrong size!");

class grGWSceneOil : public grGWScene {
private:
grGWGuestData* unk194;
grGWGuestData* unk198;

public:
static grGWSceneOil* create(int modelIndex, const char* nodeName, const char* taskName);
grGWSceneOil(const char* taskName)
: grGWScene(taskName), unk194(nullptr), unk198(nullptr) { }
virtual ~grGWSceneOil();
virtual void processAnim();
virtual void update(float deltaFrame);
virtual void setDataGuestManWork(grGWGuestData* data) { unk194 = data; }
virtual void setDataGuestWomanWork(grGWGuestData* data) { unk198 = data; }
};
static_assert(sizeof(grGWSceneOil) == 0x19C, "Class is wrong size!");
Loading