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
2 changes: 1 addition & 1 deletion config/RSBE01_02/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4281,7 +4281,7 @@ fn_800A6668 = .text:0x800A6668; // type:function size:0x258
__ct__21cmMenuFixedControllerFv = .text:0x800A68C0; // type:function size:0x44
storeDefault__21cmMenuFixedControllerFv = .text:0x800A6904; // type:function size:0x3C
init__21cmMenuFixedControllerFv = .text:0x800A6940; // type:function size:0x6C
fn_800A69AC = .text:0x800A69AC; // type:function size:0xCC
update__21cmMenuFixedControllerFf = .text:0x800A69AC; // type:function size:0xCC
fn_800A6A78 = .text:0x800A6A78; // type:function size:0x1C
fn_800A6A94 = .text:0x800A6A94; // type:function size:0x40
fn_800A6AD4 = .text:0x800A6AD4; // type:function size:0xA4
Expand Down
2 changes: 1 addition & 1 deletion configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ def MatchingFor(*versions):
Object(Matching, "sora/mv/mv_THPAudioDecode.cpp"),
Object(Matching, "sora/mv/mv_THPRead.cpp"),
Object(Matching, "sora/cm/cm_controller_default.cpp", extra_cflags=["-RTTI off"]),
Object(NonMatching, "sora/cm/cm_controller_menu_fixed.cpp"),
Object(Matching, "sora/cm/cm_controller_menu_fixed.cpp"),
Object(Matching, "sora/cm/cm_controller_melee_fixed.cpp"),
Object(Matching, "sora/cm/cm_stage_param.cpp"),
Object(NonMatching, "sora/ty/ty_fig_listmng.cpp"),
Expand Down
40 changes: 27 additions & 13 deletions src/sora/cm/cm_controller_menu_fixed.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,33 @@ void cmMenuFixedController::storeDefault() {
unk8 = true;
}

// NONMATCHING
void cmMenuFixedController::init() {
m_cameraManager->m_cameras[0].unkCC = unkC;
m_cameraManager->m_cameras[0].unkFA.m_flag7 = true;
m_cameraManager->m_cameras[0].m_targetPos.m_x = unk10.m_x;
m_cameraManager->m_cameras[0].m_targetPos.m_y = unk10.m_y;
m_cameraManager->m_cameras[0].m_targetPos.m_z = unk10.m_z;
m_cameraManager->m_cameras[0].unkFA.m_flag1 = true;
m_cameraManager->m_cameras[0].unkD0 = unk1C;
m_cameraManager->m_cameras[0].m_rot.m_x = 0.0f;
m_cameraManager->m_cameras[0].m_rot.m_y = 0.0f;
m_cameraManager->m_cameras[0].m_rot.m_z = 0.0f;
m_cameraManager->m_cameras[0].unkFA.m_flag2 = true;
gfCamera& cam = m_cameraManager->m_cameras[0];
cam.unkCC = unkC;
// Setting m_flag7 through the mask keeps the original read live, which is
// what lets the later two writes chain off it.
u16 flags = cam.unkFA.m_mask;
cam.unkFA.m_mask = flags | 0x80;
cam.m_targetPos.m_x = unk10.m_x;
cam.m_targetPos.m_y = unk10.m_y;
cam.m_targetPos.m_z = unk10.m_z;
cam.unkFA.m_flag1 = true;
cam.unkD0 = unk1C;
Vec2f xy(0.0f, 0.0f);
cam.m_rot.m_x = xy.m_x;
cam.m_rot.m_y = xy.m_y;
cam.m_rot.m_z = 0.0f;
cam.unkFA.m_rotate = true;
}

// TODO: cmMenuFixedController::update
extern "C" void fn_80018778(gfCameraManager*);

void cmMenuFixedController::update(float) {
gfCameraManager* mgr = m_cameraManager;
if (!unk8) {
storeDefault();
}
init();
mgr->m_cameras[0].m_transformFlag.m_mask = 0xE1;
fn_80018778(mgr);
}