From 8e44641465413ba98ebf02bc1faa60d904d3a165 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Tue, 14 Jan 2025 22:11:08 -0500 Subject: [PATCH] Fix various data relocation differences in unlinked TUs --- config/GZLE01/config.yml | 8 +++++++ config/GZLJ01/config.yml | 8 +++++++ config/GZLP01/config.yml | 8 +++++++ include/f_op/f_op_msg.h | 1 + src/JSystem/JParticle/JPAEmitter.cpp | 6 ++--- src/d/actor/d_a_npc_people.cpp | 19 ++++++++-------- src/d/actor/d_a_rd.cpp | 1 + src/d/actor/d_a_wind_tag.cpp | 19 ++++++++-------- src/d/d_stage.cpp | 34 ++++++++++++++-------------- src/d/d_timer.cpp | 20 ++++++++-------- src/m_Do/m_Do_mtx.cpp | 2 +- 11 files changed, 76 insertions(+), 50 deletions(-) diff --git a/config/GZLE01/config.yml b/config/GZLE01/config.yml index bfaf2fcf7..e2a43f52c 100644 --- a/config/GZLE01/config.yml +++ b/config/GZLE01/config.yml @@ -11,6 +11,14 @@ mw_comment_version: 10 # GC Linker 1.3.2 symbols_known: true # Very fast analysis fill_gaps: false # Alignments known +block_relocations: +- source: .sdata:0x803f613c +add_relocations: +- source: .sdata:0x803f613c + type: abs + target: buffer__14mDoMtx_stack_c + addend: 0x300 + modules: - object: files/RELS.arc:rels/mmem/f_pc_profile_lst.rel hash: 88e37cb6fc7280b344e4e8383a7a5496181245a1 diff --git a/config/GZLJ01/config.yml b/config/GZLJ01/config.yml index 9f8f3c2a7..b6b664897 100644 --- a/config/GZLJ01/config.yml +++ b/config/GZLJ01/config.yml @@ -10,6 +10,14 @@ mw_comment_version: 10 # GC Linker 1.3.2 symbols_known: true # Very fast analysis fill_gaps: false # Alignments known +block_relocations: +- source: .sdata:0x803e961c +add_relocations: +- source: .sdata:0x803e961c + type: abs + target: buffer__14mDoMtx_stack_c + addend: 0x300 + modules: - object: files/RELS.arc:rels/mmem/f_pc_profile_lst.rel splits: config/GZLJ01/rels/f_pc_profile_lst/splits.txt diff --git a/config/GZLP01/config.yml b/config/GZLP01/config.yml index cf00c820a..eac93dbad 100644 --- a/config/GZLP01/config.yml +++ b/config/GZLP01/config.yml @@ -10,6 +10,14 @@ mw_comment_version: 10 # GC Linker 1.3.2 symbols_known: true # Very fast analysis fill_gaps: false # Alignments known +block_relocations: +- source: .sdata:0x803fd93c +add_relocations: +- source: .sdata:0x803fd93c + type: abs + target: buffer__14mDoMtx_stack_c + addend: 0x300 + modules: - object: files/RELS.arc:rels/mmem/f_pc_profile_lst.rel splits: config/GZLP01/rels/f_pc_profile_lst/splits.txt diff --git a/include/f_op/f_op_msg.h b/include/f_op/f_op_msg.h index fa67c8375..0c9f65443 100644 --- a/include/f_op/f_op_msg.h +++ b/include/f_op/f_op_msg.h @@ -10,6 +10,7 @@ enum fopMsg_MessageStatus_e { fopMsgStts_MSG_PREPARING_e = 0x01, fopMsgStts_BOX_OPENING_e = 0x02, fopMsgStts_MSG_TYPING_e = 0x06, + fopMsgStts_UNKA_e = 0x0A, fopMsgStts_MSG_DISPLAYED_e = 0x0E, fopMsgStts_MSG_CONTINUES_e = 0x0F, fopMsgStts_MSG_ENDS_e = 0x10, diff --git a/src/JSystem/JParticle/JPAEmitter.cpp b/src/JSystem/JParticle/JPAEmitter.cpp index 62cdda907..d997c7e6b 100644 --- a/src/JSystem/JParticle/JPAEmitter.cpp +++ b/src/JSystem/JParticle/JPAEmitter.cpp @@ -181,13 +181,13 @@ void JPABaseEmitter::create(JPADataBlockLinkInfo* info) { mFieldManager.initField(info, &emtrInfo); switch (mVolumeType) { + case 4: mVolumeFunc = &JPABaseEmitter::calcVolumePoint; break; + case 6: mVolumeFunc = &JPABaseEmitter::calcVolumeLine; break; + case 5: mVolumeFunc = &JPABaseEmitter::calcVolumeCircle; break; case 0: mVolumeFunc = &JPABaseEmitter::calcVolumeCube; break; case 1: mVolumeFunc = &JPABaseEmitter::calcVolumeSphere; break; case 2: mVolumeFunc = &JPABaseEmitter::calcVolumeCylinder; break; case 3: mVolumeFunc = &JPABaseEmitter::calcVolumeTorus; break; - case 4: mVolumeFunc = &JPABaseEmitter::calcVolumePoint; break; - case 5: mVolumeFunc = &JPABaseEmitter::calcVolumeCircle; break; - case 6: mVolumeFunc = &JPABaseEmitter::calcVolumeLine; break; default: mVolumeFunc = NULL; break; } } diff --git a/src/d/actor/d_a_npc_people.cpp b/src/d/actor/d_a_npc_people.cpp index 1134ddcec..b7e041632 100644 --- a/src/d/actor/d_a_npc_people.cpp +++ b/src/d/actor/d_a_npc_people.cpp @@ -430,7 +430,7 @@ static int* l_head_bck_ix_tbl[][2] = { }, { l_head_bck_ix_sa, - l_head_bck_ix_sa, + l_head_bck_ix_sa_n, }, { NULL, @@ -3809,8 +3809,8 @@ static PsoData* l_pso_tbl[] = { &l_pso_uo3, &l_pso_ub4, &l_pso_uw2, - &l_pso_uw2_2, &l_pso_um2, + &l_pso_uw2_2, }; const char daNpcPeople_c::m_arcname[] = "Uo"; @@ -4352,7 +4352,7 @@ s32 daNpcPeople_c::createInit() { m766[0] = dComIfGp_evmng_getEventIdx("SA3_GET_ITEM"); break; - case 0xF: { + case 0x10: { m766[0] = dComIfGp_evmng_getEventIdx("SA5_TALK_XY"); m766[1] = dComIfGp_evmng_getEventIdx("SA5_GET_ITEM"); @@ -4368,7 +4368,7 @@ s32 daNpcPeople_c::createInit() { } // Fall-through } - case 0x10: + case 0xF: if(mbIsNight) { m758 |= 0x40000000; } @@ -6164,7 +6164,7 @@ u16 daNpcPeople_c::talk2(int param_1, fopAc_ac_c* param_2) { } break; - case fopMsgStts_MSG_ENDS_e: + case fopMsgStts_UNKA_e: if(m7A8 == 0) { chkMsg(); m7A8 = 1; @@ -7341,16 +7341,16 @@ void daNpcPeople_c::setAnmFromMsgTagSa(int param_1) { case 9: setAnmTbl(l_npc_anm_talk, 1); break; - case 2: + case 8: setAnmTbl(l_npc_anm_talk_sa, 1); break; - case 4: + case 2: setAnmTbl(l_npc_anm_talk2_sa, 1); break; - case 5: + case 4: setAnmTbl(l_npc_anm_talk3_sa, 1); break; - case 8: + case 5: setAnmTbl(l_npc_anm_kiai_sa, 1); break; } @@ -8163,7 +8163,6 @@ void daNpcPeople_c::initUgSearchArea() { static u8 l_ug_no[] = { 0x11, 0x12, - 0x00 }; for(int i = 0; i < 2; i++) { diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp index bb8e51b0a..1ccf3522f 100644 --- a/src/d/actor/d_a_rd.cpp +++ b/src/d/actor/d_a_rd.cpp @@ -529,6 +529,7 @@ bool daRd_c::checkTgHit() { case 0x0F: case 0x10: case 0x15: + case 0x17: case 0x19: case 0x1A: case 0x1B: diff --git a/src/d/actor/d_a_wind_tag.cpp b/src/d/actor/d_a_wind_tag.cpp index e8f847f6f..65f0eca15 100644 --- a/src/d/actor/d_a_wind_tag.cpp +++ b/src/d/actor/d_a_wind_tag.cpp @@ -46,15 +46,6 @@ namespace daWindTag { }; } -const char *daWindTag::daWindTag_c::m_arcname[] = { "Yaflw00", "Ybgaf00" }; -s16 daWindTag::daWindTag_c::m_bdlidx[] = { YAFLW00_BDL_YAFLW00, YBGAF00_BDL_YBGAF00 }; -s16 daWindTag::daWindTag_c::m_heapsize[] = { 0x0C40, 0x0C40 }; -s16 daWindTag::daWindTag_c::m_bckidx[] = { YAFLW00_BCK_YAFLW00, YBGAF00_BCK_YBGAF00 }; -s16 daWindTag::daWindTag_c::m_btkidx[] = { YAFLW00_BTK_YAFLW00_01, YBGAF00_BTK_YBGAF00_01 }; -s16 daWindTag::daWindTag_c::m_btkidx2[] = { YAFLW00_BTK_YAFLW00_02, YBGAF00_BTK_YBGAF00_02 }; -f32 daWindTag::daWindTag_c::m_cullsize_far = 4.0f; -f32 daWindTag::daWindTag_c::m_ef_cullsize_far = 2.0f; - /* 00000078-000000F0 .text _delete__Q29daWindTag11daWindTag_cFv */ bool daWindTag::daWindTag_c::_delete() { if (mpEmitter != NULL) { @@ -100,6 +91,15 @@ BOOL daWindTag::daWindTag_c::CreateHeap() { return TRUE; } +const char *daWindTag::daWindTag_c::m_arcname[] = { "Yaflw00", "Ybgaf00" }; +s16 daWindTag::daWindTag_c::m_bdlidx[] = { YAFLW00_BDL_YAFLW00, YBGAF00_BDL_YBGAF00 }; +s16 daWindTag::daWindTag_c::m_heapsize[] = { 0x0C40, 0x0C40 }; +s16 daWindTag::daWindTag_c::m_bckidx[] = { YAFLW00_BCK_YAFLW00, YBGAF00_BCK_YBGAF00 }; +s16 daWindTag::daWindTag_c::m_btkidx[] = { YAFLW00_BTK_YAFLW00_01, YBGAF00_BTK_YBGAF00_01 }; +s16 daWindTag::daWindTag_c::m_btkidx2[] = { YAFLW00_BTK_YAFLW00_02, YBGAF00_BTK_YBGAF00_02 }; +f32 daWindTag::daWindTag_c::m_cullsize_far = 4.0f; +f32 daWindTag::daWindTag_c::m_ef_cullsize_far = 2.0f; + /* 000003E4-00000828 .text CreateInit__Q29daWindTag11daWindTag_cFv */ void daWindTag::daWindTag_c::CreateInit() { /* Nonmatching */ @@ -322,6 +322,7 @@ bool daWindTag::daWindTag_c::_draw() { /* 00001814-00001AA4 .text MoveEmitter__Q29daWindTag11daWindTag_cFv */ void daWindTag::daWindTag_c::MoveEmitter() { /* Nonmatching */ + cM3dGTri temp; } /* 00001B00-00001B20 .text daWindTag_Create__FPv */ diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index be48762c9..9eeb12eab 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -2092,23 +2092,23 @@ void layerLoader(void* i_data, dStage_dt_c* i_stage, int i_roomNo) { /* 8004313C-80043190 .text dStage_dt_c_stageLoader__FPvP11dStage_dt_c */ void dStage_dt_c_stageLoader(void* i_data, dStage_dt_c* i_stage) { static FuncTable l_funcTable[] = { - {"MEMA", dStage_memaInfoInit}, {"MECO", dStage_mecoInfoInit}, - {"MULT", dStage_multInfoInit}, {"PLYR", dStage_playerInit}, - {"CAMR", dStage_cameraInit}, {"RCAM", dStage_cameraInit}, - {"ACTR", dStage_actorInit}, {"TGOB", dStage_actorInit}, - {"TRES", dStage_stageTresureInit}, {"RTBL", dStage_roomReadInit}, - {"AROB", dStage_arrowInit}, {"RARO", dStage_arrowInit}, - {"2Dma", dStage_mapInfoInit}, {"2DMA", dStage_mapInfoInit}, - {"Pale", dStage_paletInfoInit}, {"Colo", dStage_pselectInfoInit}, - {"Virt", dStage_vrboxInfoInit}, {"SCLS", dStage_sclsInfoInit}, - {"TGSC", dStage_tgscInfoInit}, {"LGHT", dStage_plightInfoInit}, - {"PPNT", dStage_ppntInfoInit}, {"PATH", dStage_pathInfoInit}, - {"RPPN", dStage_rppnInfoInit}, {"RPAT", dStage_rpatInfoInit}, - {"SOND", dStage_soundInfoInit}, {"SCOB", dStage_tgscInfoInit}, - {"EVNT", dStage_eventInfoInit}, {"EnvR", dStage_envrInfoInit}, - {"FILI", dStage_filiInfoInit}, {"DOOR", dStage_stageDrtgInfoInit}, - {"LGTV", dStage_lgtvInfoInit}, {"FLOR", dStage_floorInfoInit}, - {"TGDR", dStage_tgscInfoInit}, {"DMAP", dStage_dmapInfoInit}, + {"MEMA", dStage_memaInfoInit}, {"MECO", dStage_mecoInfoInit}, + {"MULT", dStage_multInfoInit}, {"PLYR", dStage_playerInit}, + {"CAMR", dStage_cameraInit}, {"RCAM", dStage_cameraInit}, + {"ACTR", dStage_actorInit}, {"TGOB", dStage_actorInit}, + {"TRES", dStage_stageTresureInit}, {"RTBL", dStage_roomReadInit}, + {"AROB", dStage_arrowInit}, {"RARO", dStage_arrowInit}, + {"2Dma", dStage_mapInfoInit}, {"2DMA", dStage_mapInfoInit}, + {"Pale", dStage_paletInfoInit}, {"Colo", dStage_pselectInfoInit}, + {"Virt", dStage_vrboxInfoInit}, {"SCLS", dStage_sclsInfoInit}, + {"TGSC", dStage_tgscInfoInit}, {"LGHT", dStage_plightInfoInit}, + {"PPNT", dStage_ppntInfoInit}, {"PATH", dStage_pathInfoInit}, + {"RPPN", dStage_rppnInfoInit}, {"RPAT", dStage_rpatInfoInit}, + {"SOND", dStage_soundInfoInit}, {"SCOB", dStage_tgscInfoInit}, + {"EVNT", dStage_eventInfoInit}, {"EnvR", dStage_envrInfoInit}, + {"FILI", dStage_filiInfoInit}, {"DOOR", dStage_tgscInfoInit}, + {"LGTV", dStage_lgtvInfoInit}, {"FLOR", dStage_floorInfoInit}, + {"TGDR", dStage_stageDrtgInfoInit}, {"DMAP", dStage_dmapInfoInit}, }; dStage_dt_c_decode(i_data, i_stage, l_funcTable, ARRAY_SIZE(l_funcTable)); diff --git a/src/d/d_timer.cpp b/src/d/d_timer.cpp index dba38b687..d733c5d8c 100644 --- a/src/d/d_timer.cpp +++ b/src/d/d_timer.cpp @@ -422,16 +422,16 @@ void dDlst_TimerScrnDraw_c::changeNumberTexture(J2DPane* pane, int no) { /* 8023CA78-8023CA8C .text getNumber__21dDlst_TimerScrnDraw_cFi */ const char* dDlst_TimerScrnDraw_c::getNumber(int no) { static const char* number[] = { - "s_rupy_num_00.bti", - "s_rupy_num_01.bti", - "s_rupy_num_02.bti", - "s_rupy_num_03.bti", - "s_rupy_num_04.bti", - "s_rupy_num_05.bti", - "s_rupy_num_06.bti", - "s_rupy_num_07.bti", - "s_rupy_num_08.bti", - "s_rupy_num_09.bti", + "rupy_num_00.bti", + "rupy_num_01.bti", + "rupy_num_02.bti", + "rupy_num_03.bti", + "rupy_num_04.bti", + "rupy_num_05.bti", + "rupy_num_06.bti", + "rupy_num_07.bti", + "rupy_num_08.bti", + "rupy_num_09.bti", }; return number[no]; diff --git a/src/m_Do/m_Do_mtx.cpp b/src/m_Do/m_Do_mtx.cpp index 5e1763deb..3eb8a5452 100644 --- a/src/m_Do/m_Do_mtx.cpp +++ b/src/m_Do/m_Do_mtx.cpp @@ -285,7 +285,7 @@ Mtx mDoMtx_stack_c::now; Mtx mDoMtx_stack_c::buffer[16]; Mtx* mDoMtx_stack_c::next = mDoMtx_stack_c::buffer; -Mtx* mDoMtx_stack_c::end = mDoMtx_stack_c::buffer + 16; +Mtx* mDoMtx_stack_c::end = mDoMtx_stack_c::buffer + ARRAY_SIZE(mDoMtx_stack_c::buffer); /* 8000D74C-8000D7CC .text push__14mDoMtx_stack_cFv */ bool mDoMtx_stack_c::push() {