From f2ad3039611171ba02d3ef5f763fb6d5013e99bb Mon Sep 17 00:00:00 2001 From: Max Roncace Date: Sat, 22 Nov 2025 00:45:29 -0500 Subject: [PATCH] Link d_msg_class (all) and d_msg_unit (JP only), minor alink fix (#2846) --- config/GZ2E01/symbols.txt | 4 +- config/GZ2J01/symbols.txt | 280 ++++++++++++++++---------------- config/GZ2P01/symbols.txt | 9 +- configure.py | 4 +- include/d/d_msg_class.h | 64 ++++---- src/d/actor/d_a_alink_canoe.inc | 4 +- src/d/d_file_sel_warning.cpp | 7 + src/d/d_msg_class.cpp | 219 ++++++++++++++++++++----- src/d/d_msg_unit.cpp | 185 ++++++++++++++++++++- 9 files changed, 545 insertions(+), 231 deletions(-) diff --git a/config/GZ2E01/symbols.txt b/config/GZ2E01/symbols.txt index aaddb0aa254..e1ea0964800 100644 --- a/config/GZ2E01/symbols.txt +++ b/config/GZ2E01/symbols.txt @@ -22243,7 +22243,7 @@ sTexMtxObj__17J3DDifferedTexMtx = .sbss:0x804515C4; // type:object size:0x4 scop sInterruptFlag$903 = .sbss:0x804515C8; // type:object size:0x4 scope:local align:4 data:4byte init$465 = .sbss:0x804515CC; // type:object size:0x1 scope:local align:1 data:byte sOldVcdVatCmd__8J3DShape = .sbss:0x804515D0; // type:object size:0x4 scope:global align:4 data:4byte -sEnvelopeFlag__8J3DShape = .sbss:0x804515D4; // type:object size:0x4 scope:local align:4 data:byte +sEnvelopeFlag__8J3DShape = .sbss:0x804515D4; // type:object size:0x1 scope:local align:1 data:byte SizeOfJ3DColorBlockLightOffLoad = .sbss:0x804515D8; // type:object size:0x4 scope:global align:4 data:4byte SizeOfJ3DColorBlockAmbientOnLoad = .sbss:0x804515DC; // type:object size:0x4 scope:global align:4 data:4byte entryNum__13J3DDrawBuffer = .sbss:0x804515E0; // type:object size:0x4 scope:global align:4 data:4byte @@ -22424,7 +22424,7 @@ resetFuncRegistered$145 = .sbss:0x80451944; // type:object size:0x4 scope:local CPUFifo = .sbss:0x80451948; // type:object size:0x4 scope:global align:4 data:4byte GPFifo = .sbss:0x8045194C; // type:object size:0x4 scope:global align:4 data:4byte __GXCurrentThread = .sbss:0x80451950; // type:object size:0x4 scope:global align:4 data:4byte -data_80451954 = .sbss:0x80451954; // type:object size:0x1 scope:local align:1 data:byte +CPGPLinked = .sbss:0x80451954; // type:object size:0x1 scope:local align:1 data:byte GXOverflowSuspendInProgress = .sbss:0x80451958; // type:object size:0x4 scope:global align:4 data:4byte BreakPointCB = .sbss:0x8045195C; // type:object size:0x4 scope:global align:4 data:4byte __GXOverflowCount = .sbss:0x80451960; // type:object size:0x4 scope:global align:4 data:4byte diff --git a/config/GZ2J01/symbols.txt b/config/GZ2J01/symbols.txt index 7788d897a91..2abcdb3c916 100644 --- a/config/GZ2J01/symbols.txt +++ b/config/GZ2J01/symbols.txt @@ -16416,14 +16416,10 @@ TRKTargetAccessDefault = .text:0x80373130; // type:function size:0xF4 scope:glob TRKTargetReadInstruction = .text:0x80373224; // type:function size:0x4C scope:global align:4 TRKTargetAccessMemory = .text:0x80373270; // type:function size:0x14C scope:global align:4 TRKValidMemory32 = .text:0x803733BC; // type:function size:0x2A4 scope:global align:4 -TRKAccessFile = .text:0x80373660; // type:label scope:global align:4 -fn_80373660 = .text:0x80373660; // type:function size:0x8 -TRKOpenFile = .text:0x80373668; // type:label scope:global align:4 -fn_80373668 = .text:0x80373668; // type:function size:0x8 -TRKCloseFile = .text:0x80373670; // type:label scope:global align:4 -fn_80373670 = .text:0x80373670; // type:function size:0x8 -TRKPositionFile = .text:0x80373678; // type:label scope:global align:4 -fn_80373678 = .text:0x80373678; // type:function size:0x8 +TRKAccessFile = .text:0x80373660; // type:function size:0x8 scope:global align:16 +TRKOpenFile = .text:0x80373668; // type:function size:0x8 scope:global align:4 +TRKCloseFile = .text:0x80373670; // type:function size:0x8 scope:global align:4 +TRKPositionFile = .text:0x80373678; // type:function size:0x8 scope:global align:4 TRKSaveExtended1Block = .text:0x80373680; // type:function size:0x1B8 scope:global align:4 TRKRestoreExtended1Block = .text:0x80373838; // type:function size:0x1B8 scope:global align:4 InitMetroTRK = .text:0x803739F0; // type:function size:0x98 scope:global align:4 @@ -21354,7 +21350,7 @@ lc_base = .bss:0x80449950; // type:object size:0x4 scope:global align:4 data:4by TRK_mainError = .bss:0x80449958; // type:object size:0x4 scope:global align:4 data:4byte TRK_Use_BBA = .bss:0x80449960; // type:object size:0x1 scope:global data:byte _MetroTRK_Has_Framing = .bss:0x80449964; // type:object size:0x4 scope:global align:4 -lbl_80449968 = .bss:0x80449968; // type:object size:0x1 data:byte +useSerialIO = .bss:0x80449968; // type:object size:0x1 scope:local align:1 data:byte gRecvBuf = .bss:0x80449970; // type:object size:0x800 scope:local align:4 gRecvCB = .bss:0x8044A170; // type:object size:0x1C scope:local align:4 gRecvBuf = .bss:0x8044A190; // type:object size:0x500 scope:local align:4 @@ -21388,9 +21384,9 @@ m_branchId__7dDemo_c = .sdata:0x8044A760; // type:object size:0x2 scope:global a l_texCoordInfo$3772 = .sdata:0x8044A768; // type:object size:0x4 scope:local align:4 data:4byte l_tevOrderInfo$3773 = .sdata:0x8044A76C; // type:object size:0x4 scope:local align:4 data:4byte mNextRoomNo__10dMapInfo_c = .sdata:0x8044A770; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044A774 = .sdata:0x8044A774; // type:object size:0x1 data:byte -lbl_8044A775 = .sdata:0x8044A775; // type:object size:0x1 data:byte -lbl_8044A776 = .sdata:0x8044A776; // type:object size:0x1 data:byte +mBottomFloorNo__8dMpath_c = .sdata:0x8044A774; // type:object size:0x1 scope:global align:1 data:byte +mTopFloorNo__8dMpath_c = .sdata:0x8044A775; // type:object size:0x1 scope:global align:1 data:byte +data_80450636 = .sdata:0x8044A776; // type:object size:0x1 scope:local align:1 data:byte l_cursorColor$4709 = .sdata:0x8044A778; // type:object size:0x4 scope:local align:4 data:4byte numTelopData = .sdata:0x8044A780; // type:object size:0x4 scope:global align:4 data:4byte l_color$4033 = .sdata:0x8044A788; // type:object size:0x4 scope:local align:4 data:4byte @@ -21403,10 +21399,10 @@ loc_type_num__12dAttention_c = .sdata:0x8044A7A0; // type:object size:0x4 scope: act_type_num__12dAttention_c = .sdata:0x8044A7A4; // type:object size:0x4 scope:global align:4 data:4byte chk_type_tbl__12dAttention_c = .sdata:0x8044A7A8; // type:object size:0x4 scope:global align:4 data:2byte chk_type_num__12dAttention_c = .sdata:0x8044A7AC; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044A7B0 = .sdata:0x8044A7B0; // type:object size:0x1 data:byte +attn_opt_hold = .sdata:0x8044A7B0; // type:object size:0x1 scope:local align:1 data:byte ang_table$4418 = .sdata:0x8044A7B4; // type:object size:0x6 scope:local align:4 -lbl_8044A7C0 = .sdata:0x8044A7C0; // type:object size:0x8 data:byte -lbl_8044A7C8 = .sdata:0x8044A7C8; // type:object size:0x1 data:byte +data_80450680 = .sdata:0x8044A7C0; // type:object size:0x8 scope:global align:4 data:byte +data_80450688 = .sdata:0x8044A7C8; // type:object size:0x1 scope:global align:4 data:byte l_autoUpHeight = .sdata:0x8044A7D0; // type:object size:0x4 scope:global align:4 data:float l_autoDownHeight = .sdata:0x8044A7D4; // type:object size:0x4 scope:global align:4 data:float l_ladderAnmBaseTransY = .sdata:0x8044A7D8; // type:object size:0x4 scope:global align:4 data:float @@ -21441,8 +21437,8 @@ m_sword_item$3798 = .sdata:0x8044A88C; // type:object size:0x4 scope:local align m_shield_item$3799 = .sdata:0x8044A890; // type:object size:0x3 scope:local align:4 data:byte l_method$3851 = .sdata:0x8044A898; // type:object size:0x8 scope:local align:4 T_JOINT_resName = .sdata:0x8044A8A0; // type:object size:0x4 scope:global align:4 -lbl_8044A8A4 = .sdata:0x8044A8A4; // type:object size:0x1 data:byte -lbl_8044A8A5 = .sdata:0x8044A8A5; // type:object size:0x1 data:byte +preLoadNo = .sdata:0x8044A8A4; // type:object size:0x1 scope:local align:1 data:byte +doPreLoad = .sdata:0x8044A8A5; // type:object size:0x1 scope:local align:1 data:byte calc_mtx = .sdata:0x8044A8A8; // type:object size:0x4 scope:global align:4 data:4byte maxStdHeaps__Q29JFWSystem11CSetUpParam = .sdata:0x8044A8B0; // type:object size:0x4 scope:global align:4 data:4byte sysHeapSize__Q29JFWSystem11CSetUpParam = .sdata:0x8044A8B4; // type:object size:0x4 scope:global align:4 data:4byte @@ -21456,7 +21452,7 @@ systemFontRes__Q29JFWSystem11CSetUpParam = .sdata:0x8044A8D0; // type:object siz renderMode__Q29JFWSystem11CSetUpParam = .sdata:0x8044A8D4; // type:object size:0x4 scope:global align:4 data:4byte exConsoleBufferSize__Q29JFWSystem11CSetUpParam = .sdata:0x8044A8D8; // type:object size:0x4 scope:global align:4 data:4byte p_dl = .sdata:0x8044A8E0; // type:object size:0x8 scope:global align:4 -lbl_8044A8E8 = .sdata:0x8044A8E8; // type:object size:0x1 data:byte +data_804507A8 = .sdata:0x8044A8E8; // type:object size:0x1 scope:local align:1 data:byte sMixMode__9JASDriver = .sdata:0x8044A8EC; // type:object size:0x4 scope:global align:4 data:4byte sDacRate__9JASDriver = .sdata:0x8044A8F0; // type:object size:0x4 scope:global align:4 data:float sSubFrames__9JASDriver = .sdata:0x8044A8F4; // type:object size:0x4 scope:global align:4 data:4byte @@ -21500,30 +21496,30 @@ VOL_SE_CHAR_MOVE_PAUSING__7Z2Param = .sdata:0x8044A994; // type:object size:0x4 VOL_SE_OBJECT_PAUSING__7Z2Param = .sdata:0x8044A998; // type:object size:0x4 scope:global align:4 data:float VOL_SE_ATMOSPHERE_PAUSING__7Z2Param = .sdata:0x8044A99C; // type:object size:0x4 scope:global align:4 data:float struct_80450860 = .sdata:0x8044A9A0; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A1 = .sdata:0x8044A9A1; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A2 = .sdata:0x8044A9A2; // type:object size:0x1 scope:global align:1 data:byte +struct_80450861 = .sdata:0x8044A9A1; // type:object size:0x1 scope:global align:1 data:byte +struct_80450862 = .sdata:0x8044A9A2; // type:object size:0x1 scope:global align:1 data:byte struct_80450863 = .sdata:0x8044A9A3; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A4 = .sdata:0x8044A9A4; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A5 = .sdata:0x8044A9A5; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A6 = .sdata:0x8044A9A6; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A7 = .sdata:0x8044A9A7; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A8 = .sdata:0x8044A9A8; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9A9 = .sdata:0x8044A9A9; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9AA = .sdata:0x8044A9AA; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9AB = .sdata:0x8044A9AB; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044A9AC = .sdata:0x8044A9AC; // type:object size:0x1 scope:global align:1 data:byte +struct_80450864 = .sdata:0x8044A9A4; // type:object size:0x1 scope:global align:1 data:byte +struct_80450865 = .sdata:0x8044A9A5; // type:object size:0x1 scope:global align:1 data:byte +struct_80450866 = .sdata:0x8044A9A6; // type:object size:0x1 scope:global align:1 data:byte +struct_80450867 = .sdata:0x8044A9A7; // type:object size:0x1 scope:global align:1 data:byte +struct_80450868 = .sdata:0x8044A9A8; // type:object size:0x1 scope:global align:1 data:byte +struct_80450869 = .sdata:0x8044A9A9; // type:object size:0x1 scope:global align:1 data:byte +struct_8045086A = .sdata:0x8044A9AA; // type:object size:0x1 scope:global align:1 data:byte +struct_8045086B = .sdata:0x8044A9AB; // type:object size:0x1 scope:global align:1 data:byte +data_8045086C = .sdata:0x8044A9AC; // type:object size:0x1 scope:global align:1 data:byte sDeathMtBottom = .sdata:0x8044A9B0; // type:object size:0x4 scope:global align:4 data:float sDeathMtTop = .sdata:0x8044A9B4; // type:object size:0x4 scope:global align:4 data:float sUnderWaterDepthMax = .sdata:0x8044A9B8; // type:object size:0x4 scope:global align:4 data:float cPitchDown = .sdata:0x8044A9C0; // type:object size:0x4 scope:global align:4 data:float cPitchCenter = .sdata:0x8044A9C4; // type:object size:0x4 scope:global align:4 data:float cPitchUp = .sdata:0x8044A9C8; // type:object size:0x4 scope:global align:4 data:float -lbl_8044A9CC = .sdata:0x8044A9CC; // type:object size:0x1 data:byte -lbl_8044A9CD = .sdata:0x8044A9CD; // type:object size:0x1 data:byte -lbl_8044A9CE = .sdata:0x8044A9CE; // type:object size:0x1 data:byte +struct_8045088C = .sdata:0x8044A9CC; // type:object size:0x1 scope:local align:1 data:byte +struct_8045088D = .sdata:0x8044A9CD; // type:object size:0x1 scope:local align:1 data:byte +data_8045088E = .sdata:0x8044A9CE; // type:object size:0x1 scope:local align:1 data:byte cR_FlatWidth = .sdata:0x8044A9D0; // type:object size:0x4 scope:global align:4 data:float -lbl_8044A9D4 = .sdata:0x8044A9D4; // type:object size:0x1 data:byte -lbl_8044A9D5 = .sdata:0x8044A9D5; // type:object size:0x1 data:byte +struct_80450894 = .sdata:0x8044A9D4; // type:object size:0x1 scope:local align:1 data:byte +struct_80450895 = .sdata:0x8044A9D5; // type:object size:0x1 scope:local align:1 data:byte sStickHigh = .sdata:0x8044A9D8; // type:object size:0x4 scope:global align:4 data:float sStickCenter = .sdata:0x8044A9DC; // type:object size:0x4 scope:global align:4 data:float sHowlTobikusa = .sdata:0x8044A9E0; // type:object size:0x8 scope:global align:4 @@ -21542,7 +21538,7 @@ sReleasePoint__Q210JUTGamePad6CStick = .sdata:0x8044AA24; // type:object size:0x sResetPattern__Q210JUTGamePad13C3ButtonReset = .sdata:0x8044AA28; // type:object size:0x4 scope:global align:4 data:4byte sResetMaskPattern__Q210JUTGamePad13C3ButtonReset = .sdata:0x8044AA2C; // type:object size:0x4 scope:global align:4 data:4byte sMessageBuffer__12JUTException = .sdata:0x8044AA30; // type:object size:0x4 scope:global align:4 -lbl_8044AA38 = .sdata:0x8044AA38; // type:object size:0x1 data:byte +sAssertVisible = .sdata:0x8044AA38; // type:object size:0x1 scope:global align:1 data:byte oneFrameRate = .sdata:0x8044AA40; // type:object size:0x4 scope:global align:4 data:float oneFrameRateUser = .sdata:0x8044AA44; // type:object size:0x4 scope:global align:4 data:float cm2hw$552 = .sdata:0x8044AA48; // type:object size:0x4 scope:local align:4 @@ -21604,7 +21600,7 @@ __DSPVersion = .sdata:0x8044AB98; // type:object size:0x4 scope:global align:4 d __CARDVersion = .sdata:0x8044ABA0; // type:object size:0x4 scope:global align:4 data:4byte next = .sdata:0x8044ABA8; // type:object size:0x4 scope:global align:4 data:4byte __CARDVendorID = .sdata:0x8044ABB0; // type:object size:0x2 scope:global align:4 data:2byte -lbl_8044ABB2 = .sdata:0x8044ABB2; // type:object size:0x1 data:byte +__CARDPermMask = .sdata:0x8044ABB2; // type:object size:0x1 scope:global align:1 data:byte __GXVersion = .sdata:0x8044ABB8; // type:object size:0x4 scope:global align:4 data:4byte tbl1$241 = .sdata:0x8044ABC0; // type:object size:0x4 scope:local align:4 tbl2$242 = .sdata:0x8044ABC4; // type:object size:0x4 scope:local align:4 @@ -21671,7 +21667,7 @@ print_errors = .sbss:0x8044ACE8; // type:object size:0x4 scope:global align:4 da print_warings = .sbss:0x8044ACEC; // type:object size:0x4 scope:global align:4 data:4byte print_systems = .sbss:0x8044ACF0; // type:object size:0x4 scope:global align:4 data:4byte print_initialized = .sbss:0x8044ACF4; // type:object size:0x1 data:byte -lbl_8044ACF5 = .sbss:0x8044ACF5; // type:object size:0x1 data:byte +data_80450BB5 = .sbss:0x8044ACF5; // type:object size:0x1 scope:local align:1 data:byte mInitFlag__17mDoAud_zelAudio_c = .sbss:0x8044ACF8; // type:object size:0x1 data:byte mResetFlag__17mDoAud_zelAudio_c = .sbss:0x8044ACF9; // type:object size:0x1 data:byte mBgmSet__17mDoAud_zelAudio_c = .sbss:0x8044ACFA; // type:object size:0x1 data:byte @@ -21689,7 +21685,7 @@ mBlureFlag__13mDoGph_gInf_c = .sbss:0x8044AD24; // type:object size:0x1 data:byt mBlureRate__13mDoGph_gInf_c = .sbss:0x8044AD25; // type:object size:0x1 data:byte mFade__13mDoGph_gInf_c = .sbss:0x8044AD26; // type:object size:0x1 data:byte mAutoForcus__13mDoGph_gInf_c = .sbss:0x8044AD27; // type:object size:0x1 data:byte -lbl_8044AD28 = .sbss:0x8044AD28; // type:object size:0x8 data:byte +data_80450BE8 = .sbss:0x8044AD28; // type:object size:0x8 scope:local align:1 data:byte mDebugFill__6mDoMch = .sbss:0x8044AD30; // type:object size:0x1 data:byte solidHeapErrors = .sbss:0x8044AD34; // type:object size:0x4 scope:global align:4 data:4byte gameHeapErrors = .sbss:0x8044AD38; // type:object size:0x4 scope:global align:4 data:4byte @@ -21757,20 +21753,20 @@ fopMsg_MSG_TYPE = .sbss:0x8044AE30; // type:object size:0x4 scope:global align:4 l_fopDwTg_id = .sbss:0x8044AE38; // type:object size:0x4 scope:global align:4 data:4byte g_fpcBs_type = .sbss:0x8044AE40; // type:object size:0x4 scope:global align:4 t_type$2207 = .sbss:0x8044AE44; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044AE48 = .sbss:0x8044AE48; // type:object size:0x1 data:byte +init$13 = .sbss:0x8044AE48; // type:object size:0x1 scope:local align:1 data:byte process_id$2216 = .sbss:0x8044AE4C; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044AE50 = .sbss:0x8044AE50; // type:object size:0x1 data:byte +init$22 = .sbss:0x8044AE50; // type:object size:0x1 scope:local align:1 data:byte l_fpcLy_CurrLayer_p = .sbss:0x8044AE58; // type:object size:0x4 scope:global align:4 data:4byte IsInitOfLayerList$2308 = .sbss:0x8044AE5C; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044AE60 = .sbss:0x8044AE60; // type:object size:0x1 data:byte +init$113 = .sbss:0x8044AE60; // type:object size:0x1 scope:local align:1 data:byte layer_id$2311 = .sbss:0x8044AE64; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044AE68 = .sbss:0x8044AE68; // type:object size:0x1 data:byte +init$116 = .sbss:0x8044AE68; // type:object size:0x1 scope:local align:1 data:byte g_fpcLf_type = .sbss:0x8044AE70; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044AE78 = .sbss:0x8044AE78; // type:object size:0x1 data:byte -lbl_8044AE79 = .sbss:0x8044AE79; // type:object size:0x1 data:byte +l_dvdError$1406 = .sbss:0x8044AE78; // type:object size:0x1 scope:local align:1 data:byte +init$1407 = .sbss:0x8044AE79; // type:object size:0x1 scope:local align:1 data:byte g_fpcNd_type = .sbss:0x8044AE80; // type:object size:0x4 scope:global align:4 data:4byte request_id$2360 = .sbss:0x8044AE88; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044AE8C = .sbss:0x8044AE8C; // type:object size:0x1 data:byte +init$149 = .sbss:0x8044AE8C; // type:object size:0x1 scope:local align:1 data:byte g_fpcPf_ProfileList_p = .sbss:0x8044AE90; // type:object size:0x4 scope:global align:4 data:4byte tmp_name$4456 = .sbss:0x8044AE98; // type:object size:0x8 scope:local align:4 mProcID__20dStage_roomControl_c = .sbss:0x8044AEA0; // type:object size:0x4 scope:global align:4 data:4byte @@ -21806,10 +21802,10 @@ mRoomNo__12daObjCarry_c = .sbss:0x8044AF0C; // type:object size:0x5 scope:global m_diffTime__11dLib_time_c = .sbss:0x8044AF18; // type:object size:0x8 scope:global align:8 data:4byte m_stopTime__11dLib_time_c = .sbss:0x8044AF20; // type:object size:0x8 scope:global align:8 data:4byte m_timeStopped__11dLib_time_c = .sbss:0x8044AF28; // type:object size:0x1 data:byte -lbl_8044AF30 = .sbss:0x8044AF30; // type:object size:0x1 data:byte -lbl_8044AF31 = .sbss:0x8044AF31; // type:object size:0x1 data:byte -lbl_8044AF32 = .sbss:0x8044AF32; // type:object size:0x1 data:byte -lbl_8044AF33 = .sbss:0x8044AF33; // type:object size:0x1 data:byte +init$932 = .sbss:0x8044AF30; // type:object size:0x1 scope:local align:1 data:byte +init$947 = .sbss:0x8044AF31; // type:object size:0x1 scope:local align:1 data:byte +init$960 = .sbss:0x8044AF32; // type:object size:0x1 scope:local align:1 data:byte +init$973 = .sbss:0x8044AF33; // type:object size:0x1 scope:local align:1 data:byte m_top__12daTagHstop_c = .sbss:0x8044AF38; // type:object size:0x4 scope:global align:4 data:4byte m_system__7dDemo_c = .sbss:0x8044AF40; // type:object size:0x4 scope:global align:4 data:4byte m_control__7dDemo_c = .sbss:0x8044AF44; // type:object size:0x4 scope:global align:4 data:4byte @@ -21829,10 +21825,10 @@ m_mode__7dDemo_c = .sbss:0x8044AF78; // type:object size:0x4 scope:global align: m_status__7dDemo_c = .sbss:0x8044AF7C; // type:object size:0x4 scope:global align:4 data:4byte m_branchType__7dDemo_c = .sbss:0x8044AF80; // type:object size:0x2 scope:global align:4 data:2byte m_branchData__7dDemo_c = .sbss:0x8044AF84; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044AF88 = .sbss:0x8044AF88; // type:object size:0x1 data:byte -lbl_8044AF89 = .sbss:0x8044AF89; // type:object size:0x1 data:byte +init$1867 = .sbss:0x8044AF88; // type:object size:0x1 scope:local align:1 data:byte +init$1870 = .sbss:0x8044AF89; // type:object size:0x1 scope:local align:1 data:byte it$4206 = .sbss:0x8044AF8C; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044AF90 = .sbss:0x8044AF90; // type:object size:0x8 data:byte +init$1672 = .sbss:0x8044AF90; // type:object size:0x8 scope:local align:1 data:byte mNowStayFloorNo__10dMapInfo_c = .sbss:0x8044AF98; // type:object size:0x1 data:byte mNowStayRoomNo__10dMapInfo_c = .sbss:0x8044AF9C; // type:object size:0x4 scope:global align:4 data:4byte mNowStayFloorNoDecisionFlg__10dMapInfo_c = .sbss:0x8044AFA0; // type:object size:0x1 data:byte @@ -21845,13 +21841,13 @@ mAllCenterX__8dMpath_c = .sbss:0x8044AFB8; // type:object size:0x4 scope:global mAllCenterZ__8dMpath_c = .sbss:0x8044AFBC; // type:object size:0x4 scope:global align:4 data:float mAllSizeX__8dMpath_c = .sbss:0x8044AFC0; // type:object size:0x4 scope:global align:4 data:float mAllSizeZ__8dMpath_c = .sbss:0x8044AFC4; // type:object size:0x4 scope:global align:4 data:float -lbl_8044AFC8 = .sbss:0x8044AFC8; // type:object size:0x1 data:byte +data_80450E88 = .sbss:0x8044AFC8; // type:object size:0x1 scope:local align:1 data:byte mEcallback__18dPa_modelEcallBack = .sbss:0x8044AFD0; // type:object size:0x4 scope:global align:4 data:4byte mPcallback__18dPa_modelEcallBack = .sbss:0x8044AFD4; // type:object size:0x4 scope:global align:4 data:4byte mModel__18dPa_modelEcallBack = .sbss:0x8044AFD8; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044AFDC = .sbss:0x8044AFDC; // type:object size:0x1 data:byte -lbl_8044AFDD = .sbss:0x8044AFDD; // type:object size:0x1 data:byte -lbl_8044AFDE = .sbss:0x8044AFDE; // type:object size:0x1 data:byte +struct_80450E9C = .sbss:0x8044AFDC; // type:object size:0x1 scope:local align:1 data:byte +struct_80450E9D = .sbss:0x8044AFDD; // type:object size:0x1 scope:local align:1 data:byte +data_80450E9E = .sbss:0x8044AFDE; // type:object size:0x1 scope:local align:1 data:byte mEmitterMng__13dPa_control_c = .sbss:0x8044AFE0; // type:object size:0x4 scope:global align:4 data:4byte mWaterBubblePcallBack__13dPa_control_c = .sbss:0x8044AFE4; // type:object size:0x4 scope:global align:4 data:4byte mFsenthPcallBack__13dPa_control_c = .sbss:0x8044AFE8; // type:object size:0x4 scope:global align:4 data:4byte @@ -21901,84 +21897,84 @@ init$12033 = .sbss:0x8044B08C; // type:object size:0x1 data:byte data$3831 = .sbss:0x8044B090; // type:object size:0x8 scope:local align:4 l_isFinalBossStg = .sbss:0x8044B098; // type:object size:0x1 data:byte l_SetCounter = .sbss:0x8044B0A0; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B0A8 = .sbss:0x8044B0A8; // type:object size:0x1 data:byte +init$1793 = .sbss:0x8044B0A8; // type:object size:0x1 scope:local align:1 data:byte m_name__16dBgS_MoveBgActor = .sbss:0x8044B0B0; // type:object size:0x4 scope:global align:4 data:4byte m_dzb_id__16dBgS_MoveBgActor = .sbss:0x8044B0B4; // type:object size:0x4 scope:global align:4 data:4byte m_set_func__16dBgS_MoveBgActor = .sbss:0x8044B0B8; // type:object size:0x4 scope:global align:4 data:4byte l_start = .sbss:0x8044B0C0; // type:object size:0x4 scope:global align:4 data:4byte l_wcsbuf_num = .sbss:0x8044B0C4; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B0C8 = .sbss:0x8044B0C8; // type:object size:0x1 data:byte -lbl_8044B0C9 = .sbss:0x8044B0C9; // type:object size:0x1 data:byte -lbl_8044B0CA = .sbss:0x8044B0CA; // type:object size:0x1 data:byte -lbl_8044B0CB = .sbss:0x8044B0CB; // type:object size:0x1 data:byte +init$3207 = .sbss:0x8044B0C8; // type:object size:0x1 scope:local align:1 data:byte +init$4121 = .sbss:0x8044B0C9; // type:object size:0x1 scope:local align:1 data:byte +init$4717 = .sbss:0x8044B0CA; // type:object size:0x1 scope:local align:1 data:byte +init$7803 = .sbss:0x8044B0CB; // type:object size:0x1 scope:local align:1 data:byte mData__12dEnemyItem_c = .sbss:0x8044B0D0; // type:object size:0x4 scope:global align:4 data:4byte mTypeGroupData__7dTres_c = .sbss:0x8044B0D8; // type:object size:0x4 scope:global align:4 data:4byte mNum__7dTres_c = .sbss:0x8044B0DC; // type:object size:0x2 scope:global align:4 data:2byte m_myObj__10dMdl_mng_c = .sbss:0x8044B0E0; // type:object size:0x4 scope:global align:4 data:4byte m_obj__12dEyeHL_mng_c = .sbss:0x8044B0E8; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B0F0 = .sbss:0x8044B0F0; // type:object size:0x1 data:byte +struct_80450FB0 = .sbss:0x8044B0F0; // type:object size:0x1 scope:local align:1 data:byte lbl_8044B0F1 = .sbss:0x8044B0F1; // type:object size:0x1 data:byte lbl_8044B0F2 = .sbss:0x8044B0F2; // type:object size:0x6 data:byte -lbl_8044B0F8 = .sbss:0x8044B0F8; // type:object size:0x1 data:byte -lbl_8044B0F9 = .sbss:0x8044B0F9; // type:object size:0x1 data:byte -lbl_8044B0FA = .sbss:0x8044B0FA; // type:object size:0x1 data:byte -lbl_8044B0FB = .sbss:0x8044B0FB; // type:object size:0x1 data:byte -lbl_8044B0FC = .sbss:0x8044B0FC; // type:object size:0x1 data:byte -lbl_8044B0FD = .sbss:0x8044B0FD; // type:object size:0x1 data:byte +init$11203 = .sbss:0x8044B0F8; // type:object size:0x1 scope:local align:1 data:byte +init$11207 = .sbss:0x8044B0F9; // type:object size:0x1 scope:local align:1 data:byte +init$11211 = .sbss:0x8044B0FA; // type:object size:0x1 scope:local align:1 data:byte +init$11215 = .sbss:0x8044B0FB; // type:object size:0x1 scope:local align:1 data:byte +init$33110 = .sbss:0x8044B0FC; // type:object size:0x1 scope:local align:1 data:byte +init$33113 = .sbss:0x8044B0FD; // type:object size:0x1 scope:local align:1 data:byte it$36766 = .sbss:0x8044B100; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B104 = .sbss:0x8044B104; // type:object size:0x1 data:byte +init$37466 = .sbss:0x8044B104; // type:object size:0x1 scope:local align:1 data:byte lbl_8044B105 = .sbss:0x8044B105; // type:object size:0x1 data:byte lbl_8044B106 = .sbss:0x8044B106; // type:object size:0x1 data:byte lbl_8044B107 = .sbss:0x8044B107; // type:object size:0x1 data:byte -lbl_8044B108 = .sbss:0x8044B108; // type:object size:0x1 data:byte -lbl_8044B109 = .sbss:0x8044B109; // type:object size:0x1 data:byte +m_eye_move_flg = .sbss:0x8044B108; // type:object size:0x1 scope:local align:1 data:byte +m_morf_frame__16daAlink_matAnm_c = .sbss:0x8044B109; // type:object size:0x1 scope:global align:1 data:byte bgWaitFlg$58407 = .sbss:0x8044B10C; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B110 = .sbss:0x8044B110; // type:object size:0x1 data:byte -lbl_8044B111 = .sbss:0x8044B111; // type:object size:0x1 data:byte +struct_80450FD0 = .sbss:0x8044B110; // type:object size:0x1 scope:local align:1 data:byte +data_80450FD1 = .sbss:0x8044B111; // type:object size:0x1 scope:local align:1 data:byte mSrchName__8daNpcT_c = .sbss:0x8044B118; // type:object size:0x2 scope:global align:4 data:2byte mFindCount__8daNpcT_c = .sbss:0x8044B11C; // type:object size:0x4 scope:global align:4 data:4byte m_name__23daBaseNpc_moveBgActor_c = .sbss:0x8044B120; // type:object size:0x4 scope:global align:4 data:4byte m_dzb_id__23daBaseNpc_moveBgActor_c = .sbss:0x8044B124; // type:object size:0x4 scope:global align:4 data:4byte m_set_func__23daBaseNpc_moveBgActor_c = .sbss:0x8044B128; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B12C = .sbss:0x8044B12C; // type:object size:0x1 data:byte +data_80450FEC = .sbss:0x8044B12C; // type:object size:0x1 scope:local align:4 data:byte mFindCount__8daNpcF_c = .sbss:0x8044B130; // type:object size:0x4 scope:global align:4 data:4byte mSrchActorName__8daNpcF_c = .sbss:0x8044B134; // type:object size:0x2 scope:global align:4 data:2byte -lbl_8044B138 = .sbss:0x8044B138; // type:object size:0x8 data:byte -lbl_8044B140 = .sbss:0x8044B140; // type:object size:0x1 data:byte +init$1719 = .sbss:0x8044B138; // type:object size:0x8 scope:local align:1 data:byte +init$1834 = .sbss:0x8044B140; // type:object size:0x1 scope:local align:1 data:byte target = .sbss:0x8044B144; // type:object size:0x4 scope:global align:4 data:4byte targetWay = .sbss:0x8044B148; // type:object size:0x4 scope:global align:4 data:float wolfAngle = .sbss:0x8044B14C; // type:object size:0x2 scope:global align:4 data:2byte -lbl_8044B150 = .sbss:0x8044B150; // type:object size:0x1 data:byte +init$1837 = .sbss:0x8044B150; // type:object size:0x1 scope:local align:1 data:byte m_midnaActor__9daPy_py_c = .sbss:0x8044B158; // type:object size:0x4 scope:global align:4 data:4byte m_dropAngleY__20daPy_boomerangMove_c = .sbss:0x8044B15C; // type:object size:0x2 scope:global align:2 data:2byte m_eventKeepFlg__20daPy_boomerangMove_c = .sbss:0x8044B15E; // type:object size:0x2 scope:global align:2 data:2byte Stage__22@unnamed@d_camera_cpp@ = .sbss:0x8044B160; // type:object size:0x4 scope:global align:4 data:4byte prev_plat1$8536 = .sbss:0x8044B164; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B168 = .sbss:0x8044B168; // type:object size:0x1 data:byte +data_80451028 = .sbss:0x8044B168; // type:object size:0x1 scope:local align:4 data:byte prev_plat2$8539 = .sbss:0x8044B16C; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B170 = .sbss:0x8044B170; // type:object size:0x1 data:byte +data_80451030 = .sbss:0x8044B170; // type:object size:0x1 scope:local align:4 data:byte JumpCushion$9801 = .sbss:0x8044B174; // type:object size:0x4 scope:local align:4 data:float -lbl_8044B178 = .sbss:0x8044B178; // type:object size:0x1 data:byte -lbl_8044B179 = .sbss:0x8044B179; // type:object size:0x1 data:byte +data_80451038 = .sbss:0x8044B178; // type:object size:0x1 scope:local align:4 data:byte +data_80451039 = .sbss:0x8044B179; // type:object size:0x1 data:byte LatitudeLimitMax$9807 = .sbss:0x8044B17C; // type:object size:0x2 scope:local align:4 -lbl_8044B17E = .sbss:0x8044B17E; // type:object size:0x1 data:byte +data_8045103E = .sbss:0x8044B17E; // type:object size:0x1 data:byte _120$14158 = .sbss:0x8044B180; // type:object size:0x2 scope:local align:4 data:2byte -lbl_8044B182 = .sbss:0x8044B182; // type:object size:0x1 data:byte +data_80451042 = .sbss:0x8044B182; // type:object size:0x1 data:byte _120$14614 = .sbss:0x8044B184; // type:object size:0x2 scope:local align:4 data:2byte -lbl_8044B186 = .sbss:0x8044B186; // type:object size:0x1 data:byte +data_80451046 = .sbss:0x8044B186; // type:object size:0x1 data:byte LatMin$14963 = .sbss:0x8044B188; // type:object size:0x2 scope:local align:4 data:2byte -lbl_8044B18A = .sbss:0x8044B18A; // type:object size:0x1 data:byte +data_8045104A = .sbss:0x8044B18A; // type:object size:0x1 data:byte LatMax$14967 = .sbss:0x8044B18C; // type:object size:0x2 scope:local align:4 data:2byte g_siHIO = .sbss:0x8044B190; // type:object size:0x8 scope:global align:4 -lbl_8044B198 = .sbss:0x8044B198; // type:object size:0x1 data:byte +dShopSystem_sellItemMax = .sbss:0x8044B198; // type:object size:0x1 scope:local align:1 data:byte dShopSystem_item_count = .sbss:0x8044B19C; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B1A0 = .sbss:0x8044B1A0; // type:object size:0x1 data:byte +data_80451060 = .sbss:0x8044B1A0; // type:object size:0x1 scope:local align:1 data:byte dShopSystem_camera_count = .sbss:0x8044B1A4; // type:object size:0x4 scope:global align:4 data:4byte S_fuwan_sin$5904 = .sbss:0x8044B1A8; // type:object size:0x2 scope:local align:4 data:2byte -lbl_8044B1AA = .sbss:0x8044B1AA; // type:object size:0x1 data:byte -lbl_8044B1AB = .sbss:0x8044B1AB; // type:object size:0x5 data:byte -lbl_8044B1B0 = .sbss:0x8044B1B0; // type:object size:0x1 data:byte -lbl_8044B1B1 = .sbss:0x8044B1B1; // type:object size:0x1 data:byte +data_8045106A = .sbss:0x8044B1AA; // type:object size:0x1 data:byte +data_8045106B = .sbss:0x8044B1AB; // type:object size:0x5 data:byte +init$localstatic4$draw__10dThunder_cFv = .sbss:0x8044B1B0; // type:object size:0x1 scope:weak align:1 data:byte +init$localstatic6$draw__10dThunder_cFv = .sbss:0x8044B1B1; // type:object size:0x1 scope:weak align:1 data:byte player_px = .sbss:0x8044B1B8; // type:object size:0x4 scope:global align:4 data:float player_py = .sbss:0x8044B1BC; // type:object size:0x4 scope:global align:4 data:float myclass__12dMenu_Dmap_c = .sbss:0x8044B1C0; // type:object size:0x4 scope:global align:4 data:4byte @@ -21992,7 +21988,7 @@ virtual_stage$3999 = .sbss:0x8044B1E4; // type:object size:0x8 scope:local align MyClass__12dMenu_Fmap_c = .sbss:0x8044B1EC; // type:object size:0x4 scope:global align:4 data:4byte g_menuHIO = .sbss:0x8044B1F0; // type:object size:0x8 scope:global align:4 tex_name$5204 = .sbss:0x8044B1F8; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B1FC = .sbss:0x8044B1FC; // type:object size:0x1 data:byte +initTexName$2118 = .sbss:0x8044B1FC; // type:object size:0x1 scope:local align:1 data:byte mMoji$3770 = .sbss:0x8044B200; // type:object size:0x3 scope:local align:4 data:byte s_groupID = .sbss:0x8044B208; // type:object size:0x2 scope:global align:4 data:2byte g_msg_unit = .sbss:0x8044B210; // type:object size:0x4 scope:global align:4 @@ -22010,14 +22006,14 @@ pauseTimer__9dScnPly_c = .sbss:0x8044B264; // type:object size:0x1 data:byte nextPauseTimer__9dScnPly_c = .sbss:0x8044B265; // type:object size:0x1 data:byte g_regHIO = .sbss:0x8044B268; // type:object size:0x4 scope:global align:4 data:4byte m_nowID__9dkWmark_c = .sbss:0x8044B270; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B274 = .sbss:0x8044B274; // type:object size:0x1 data:byte +init$localstatic4$create__9dkWmark_cFv = .sbss:0x8044B274; // type:object size:0x1 scope:weak align:1 data:byte mFirst__24DynamicModuleControlBase = .sbss:0x8044B278; // type:object size:0x4 scope:global align:4 data:4byte mLast__24DynamicModuleControlBase = .sbss:0x8044B27C; // type:object size:0x4 scope:global align:4 data:4byte sAllocBytes__20DynamicModuleControl = .sbss:0x8044B280; // type:object size:0x4 scope:global align:4 data:4byte sArchive__20DynamicModuleControl = .sbss:0x8044B284; // type:object size:0x4 scope:global align:4 data:4byte sFileCache__20DynamicModuleControl = .sbss:0x8044B288; // type:object size:0x4 scope:global align:4 data:4byte Heap__3cMl = .sbss:0x8044B290; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B298 = .sbss:0x8044B298; // type:object size:0x1 data:byte +init$296 = .sbss:0x8044B298; // type:object size:0x1 scope:local align:1 data:byte Zero__5csXyz = .sbss:0x8044B2A0; // type:object size:0x6 scope:global align:4 r0 = .sbss:0x8044B2A8; // type:object size:0x4 scope:global align:4 data:4byte r1 = .sbss:0x8044B2AC; // type:object size:0x4 scope:global align:4 data:4byte @@ -22041,15 +22037,15 @@ systemConsole__9JFWSystem = .sbss:0x8044B2F8; // type:object size:0x4 scope:glob sInitCalled__9JFWSystem = .sbss:0x8044B2FC; // type:object size:0x1 scope:global align:1 data:byte sManager__10JFWDisplay = .sbss:0x8044B300; // type:object size:0x4 scope:global align:4 data:4byte prevFrame$2597 = .sbss:0x8044B304; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B308 = .sbss:0x8044B308; // type:object size:0x8 data:byte -nextTick$2642 = .sbss:0x8044B310; // type:object size:0x8 scope:local align:4 data:4byte -lbl_8044B318 = .sbss:0x8044B318; // type:object size:0x1 data:byte +data_804511C8 = .sbss:0x8044B308; // type:object size:0x8 scope:local align:1 data:byte +nextTick$2642 = .sbss:0x8044B310; // type:object size:0x8 scope:local align:8 data:4byte +init$579 = .sbss:0x8044B318; // type:object size:0x1 scope:local align:1 data:byte nextCount$2650 = .sbss:0x8044B31C; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B320 = .sbss:0x8044B320; // type:object size:0x1 data:byte +init$587 = .sbss:0x8044B320; // type:object size:0x1 scope:local align:1 data:byte @569 = .sbss:0x8044B328; // type:object size:0x1 scope:local align:4 data:byte soOutput_none___Q27JStudio14TVariableValue = .sbss:0x8044B330; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B338 = .sbss:0x8044B338; // type:object size:0x8 data:byte -lbl_8044B340 = .sbss:0x8044B340; // type:object size:0x1 data:byte +init$365 = .sbss:0x8044B338; // type:object size:0x8 scope:local align:1 data:byte +init$298 = .sbss:0x8044B340; // type:object size:0x1 scope:local align:1 data:byte sThread__6JASDvd = .sbss:0x8044B348; // type:object size:0x4 scope:global align:4 data:4byte JASDram = .sbss:0x8044B350; // type:object size:0x4 scope:global align:4 data:4byte sAramBase__9JASKernel = .sbss:0x8044B354; // type:object size:0x4 scope:global align:4 data:4byte @@ -22063,22 +22059,22 @@ init$localstatic4$getMemPool__58JASPoolAllocObject_MultiThreadedFv = .sbss:0x8044B371; // type:object size:0x1 data:byte sDefaultParser__10JASSeqCtrl = .sbss:0x8044B378; // type:object size:0x4 scope:global align:4 data:4byte sCallBackFunc__12JASSeqParser = .sbss:0x8044B380; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B384 = .sbss:0x8044B384; // type:object size:0x1 data:byte +init$978 = .sbss:0x8044B384; // type:object size:0x1 scope:local align:1 data:byte oRandom$1099 = .sbss:0x8044B388; // type:object size:0x4 scope:local align:4 data:4byte sLoadThread__13JASAramStream = .sbss:0x8044B390; // type:object size:0x4 scope:global align:4 data:4byte sReadBuffer__13JASAramStream = .sbss:0x8044B394; // type:object size:0x4 scope:global align:4 data:4byte sBlockSize__13JASAramStream = .sbss:0x8044B398; // type:object size:0x4 scope:global align:4 data:4byte sChannelMax__13JASAramStream = .sbss:0x8044B39C; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B3A0 = .sbss:0x8044B3A0; // type:object size:0x1 data:byte -lbl_8044B3A1 = .sbss:0x8044B3A1; // type:object size:0x1 data:byte +data_80451260 = .sbss:0x8044B3A0; // type:object size:0x1 scope:global align:1 data:byte +data_80451261 = .sbss:0x8044B3A1; // type:object size:0x1 scope:global align:1 data:byte init$localstatic4$getMemPool__46JASPoolAllocObject_MultiThreaded<10JASChannel>Fv = .sbss:0x8044B3A2; // type:object size:0x1 data:byte sOscTable__12JASVoiceBank = .sbss:0x8044B3A8; // type:object size:0x4 scope:global align:4 data:4byte oscp$214 = .sbss:0x8044B3B0; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B3B4 = .sbss:0x8044B3B4; // type:object size:0x1 data:byte +data_80451274 = .sbss:0x8044B3B4; // type:object size:0x1 scope:local align:1 data:byte mNoLoad__16JASBasicWaveBank = .sbss:0x8044B3B8; // type:object size:0x4 scope:global align:4 sUsedHeapSize__11JASWSParser = .sbss:0x8044B3C0; // type:object size:0x4 scope:global align:4 data:4byte sUsedHeapSize__12JASBNKParser = .sbss:0x8044B3C8; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B3CC = .sbss:0x8044B3CC; // type:object size:0x1 data:byte +data_8045128C = .sbss:0x8044B3CC; // type:object size:0x1 scope:local align:1 data:byte sAramHeap__16JASWaveArcLoader = .sbss:0x8044B3D0; // type:object size:0x4 scope:global align:4 data:4byte sBankDisposeListSize__10JASChannel = .sbss:0x8044B3D8; // type:object size:0x4 scope:global align:4 data:4byte sDspDacBuffer__9JASDriver = .sbss:0x8044B3E0; // type:object size:0x4 scope:global align:4 data:4byte @@ -22092,33 +22088,33 @@ extMixCallback__9JASDriver = .sbss:0x8044B3FC; // type:object size:0x4 scope:glo sOutputRate__9JASDriver = .sbss:0x8044B400; // type:object size:0x4 scope:global align:4 data:4byte sSubFrameCounter__9JASDriver = .sbss:0x8044B404; // type:object size:0x4 scope:global align:4 data:4byte dacp$239 = .sbss:0x8044B408; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B40C = .sbss:0x8044B40C; // type:object size:0x1 data:byte +init$58 = .sbss:0x8044B40C; // type:object size:0x1 scope:local align:1 data:byte old_time$264 = .sbss:0x8044B410; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B414 = .sbss:0x8044B414; // type:object size:0x1 data:byte +data_804512D4 = .sbss:0x8044B414; // type:object size:0x1 scope:local align:1 data:byte snIntCount__14JASAudioThread = .sbss:0x8044B418; // type:object size:0x4 scope:global align:4 data:4byte sDspChannels__13JASDSPChannel = .sbss:0x8044B420; // type:object size:0x4 scope:global align:4 data:4byte CH_BUF__6JASDsp = .sbss:0x8044B428; // type:object size:0x4 scope:global align:4 data:4byte FX_BUF__6JASDsp = .sbss:0x8044B42C; // type:object size:0x4 scope:global align:4 data:4byte sDSPVolume__6JASDsp = .sbss:0x8044B430; // type:object size:0x4 scope:global align:4 data:float -lbl_8044B434 = .sbss:0x8044B434; // type:object size:0x1 data:byte -init$33 = .sbss:0x8044B435; // type:object size:0x1 data:byte +data_804512F4$25 = .sbss:0x8044B434; // type:object size:0x1 scope:local align:1 data:byte +init$33 = .sbss:0x8044B435; // type:object size:0x1 scope:local align:1 data:byte flag = .sbss:0x8044B438; // type:object size:0x4 scope:global align:4 data:4byte taskreadp = .sbss:0x8044B440; // type:object size:0x4 scope:global align:4 data:4byte taskwritep = .sbss:0x8044B444; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B448 = .sbss:0x8044B448; // type:object size:0x1 data:byte -lbl_8044B449 = .sbss:0x8044B449; // type:object size:0x1 data:byte +struct_80451308 = .sbss:0x8044B448; // type:object size:0x1 scope:local align:1 data:byte +struct_80451309 = .sbss:0x8044B449; // type:object size:0x1 scope:local align:1 data:byte DSP_prior_task = .sbss:0x8044B44C; // type:object size:0x4 scope:global align:4 data:4byte -init$localstatic4$getMemPool___26JASPoolAllocObject<5JAISe>Fv = .sbss:0x8044B450; // type:object size:0x1 data:byte -init$localstatic4$getMemPool___35JASPoolAllocObject<13JAISoundChild>Fv = .sbss:0x8044B458; // type:object size:0x1 data:byte -init$localstatic4$getMemPool___27JASPoolAllocObject<6JAISeq>Fv = .sbss:0x8044B460; // type:object size:0x1 data:byte -init$localstatic4$getMemPool___30JASPoolAllocObject<9JAIStream>Fv = .sbss:0x8044B468; // type:object size:0x1 data:byte +init$localstatic4$getMemPool___26JASPoolAllocObject<5JAISe>Fv = .sbss:0x8044B450; // type:object size:0x1 scope:global align:1 data:byte +init$localstatic4$getMemPool___35JASPoolAllocObject<13JAISoundChild>Fv = .sbss:0x8044B458; // type:object size:0x1 scope:global align:1 data:byte +init$localstatic4$getMemPool___27JASPoolAllocObject<6JAISeq>Fv = .sbss:0x8044B460; // type:object size:0x1 scope:global align:1 data:byte +init$localstatic4$getMemPool___30JASPoolAllocObject<9JAIStream>Fv = .sbss:0x8044B468; // type:object size:0x1 scope:global align:1 data:byte init$80 = .sbss:0x8044B470; // type:object size:0x1 scope:local align:1 data:byte oRandom$401 = .sbss:0x8044B474; // type:object size:0x4 scope:local align:4 data:4byte MIN_DISTANCE_VOLUME__7Z2Param = .sbss:0x8044B478; // type:object size:0x4 scope:global align:4 data:float ENEMY_LASTHIT_MUTE_VOLUME__7Z2Param = .sbss:0x8044B47C; // type:object size:0x4 scope:global align:4 data:float -lbl_8044B480 = .sbss:0x8044B480; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044B481 = .sbss:0x8044B481; // type:object size:0x1 scope:global align:1 data:byte -lbl_8044B482 = .sbss:0x8044B482; // type:object size:0x1 scope:global align:1 data:byte +struct_80451340 = .sbss:0x8044B480; // type:object size:0x1 scope:global align:1 data:byte +struct_80451341 = .sbss:0x8044B481; // type:object size:0x1 scope:global align:1 data:byte +struct_80451342 = .sbss:0x8044B482; // type:object size:0x1 scope:global align:1 data:byte pad_8044B484 = .sbss:0x8044B484; // type:object size:0x4 scope:global align:4 init$localstatic4$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .sbss:0x8044B488; // type:object size:0x1 data:byte cNearFarRatio = .sbss:0x8044B490; // type:object size:0x4 scope:global align:4 data:float @@ -22131,7 +22127,7 @@ sSystemHeap__7JKRHeap = .sbss:0x8044B4B0; // type:object size:0x4 scope:global a sCurrentHeap__7JKRHeap = .sbss:0x8044B4B4; // type:object size:0x4 scope:global align:4 data:4byte sRootHeap__7JKRHeap = .sbss:0x8044B4B8; // type:object size:0x4 scope:global align:4 data:4byte mErrorHandler__7JKRHeap = .sbss:0x8044B4BC; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B4C0 = .sbss:0x8044B4C0; // type:object size:0x1 scope:local align:1 data:byte +data_80451380 = .sbss:0x8044B4C0; // type:object size:0x1 scope:local align:1 data:byte mCodeStart__7JKRHeap = .sbss:0x8044B4C4; // type:object size:0x4 scope:global align:4 data:4byte mCodeEnd__7JKRHeap = .sbss:0x8044B4C8; // type:object size:0x4 scope:global align:4 data:4byte mUserRamStart__7JKRHeap = .sbss:0x8044B4CC; // type:object size:0x4 scope:global align:4 data:4byte @@ -22160,7 +22156,7 @@ srcAddress = .sbss:0x8044B52C; // type:object size:0x4 scope:global align:4 data fileOffset = .sbss:0x8044B530; // type:object size:0x4 scope:local align:4 data:4byte readCount = .sbss:0x8044B534; // type:object size:0x4 scope:local align:4 data:4byte maxDest = .sbss:0x8044B538; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B53C = .sbss:0x8044B53C; // type:object size:0x1 data:byte +s_is_decompress_mutex_initialized = .sbss:0x8044B53C; // type:object size:0x1 scope:local align:1 data:byte tsPtr = .sbss:0x8044B540; // type:object size:0x4 scope:local align:4 data:4byte tsArea = .sbss:0x8044B544; // type:object size:0x4 scope:local align:4 data:4byte sAramStreamObject__13JKRAramStream = .sbss:0x8044B548; // type:object size:0x4 scope:global align:4 data:4byte @@ -22181,7 +22177,7 @@ srcFile = .sbss:0x8044B588; // type:object size:0x4 scope:local align:4 data:4by fileOffset = .sbss:0x8044B58C; // type:object size:0x4 scope:local align:4 data:4byte readCount = .sbss:0x8044B590; // type:object size:0x4 scope:local align:4 data:4byte maxDest = .sbss:0x8044B594; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B598 = .sbss:0x8044B598; // type:object size:0x1 data:byte +data_80451458 = .sbss:0x8044B598; // type:object size:0x1 data:byte tsPtr = .sbss:0x8044B59C; // type:object size:0x4 scope:local align:4 data:4byte tsArea = .sbss:0x8044B5A0; // type:object size:0x4 scope:local align:4 data:4byte szpBuf = .sbss:0x8044B5A8; // type:object size:0x4 scope:local align:4 data:4byte @@ -22199,11 +22195,11 @@ srcFile = .sbss:0x8044B5D4; // type:object size:0x4 scope:local align:4 data:4by fileOffset = .sbss:0x8044B5D8; // type:object size:0x4 scope:local align:4 data:4byte readCount = .sbss:0x8044B5DC; // type:object size:0x4 scope:local align:4 data:4byte maxDest = .sbss:0x8044B5E0; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B5E4 = .sbss:0x8044B5E4; // type:object size:0x1 data:byte +data_804514A4 = .sbss:0x8044B5E4; // type:object size:0x1 data:byte tsPtr = .sbss:0x8044B5E8; // type:object size:0x4 scope:local align:4 data:4byte tsArea = .sbss:0x8044B5EC; // type:object size:0x4 scope:local align:4 data:4byte sDecompObject__9JKRDecomp = .sbss:0x8044B5F0; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B5F8 = .sbss:0x8044B5F8; // type:object size:0x1 data:byte +data_804514B8 = .sbss:0x8044B5F8; // type:object size:0x1 data:byte sCurrentFifo__12JUTGraphFifo = .sbss:0x8044B5FC; // type:object size:0x4 scope:global align:4 data:4byte mGpStatus__12JUTGraphFifo = .sbss:0x8044B600; // type:object size:0x5 scope:global align:4 sDebugPrint__10JUTDbPrint = .sbss:0x8044B608; // type:object size:0x4 scope:global align:4 data:4byte @@ -22233,42 +22229,42 @@ sMessageLife__Q212JUTAssertion23@unnamed@JUTAssert_cpp@ = .sbss:0x8044B670; // t sManager__8JUTVideo = .sbss:0x8044B678; // type:object size:0x4 scope:global align:4 data:4byte sVideoLastTick__8JUTVideo = .sbss:0x8044B67C; // type:object size:0x4 scope:global align:4 data:4byte sVideoInterval__8JUTVideo = .sbss:0x8044B680; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B684 = .sbss:0x8044B684; // type:object size:0x1 data:byte +data_80451544 = .sbss:0x8044B684; // type:object size:0x1 scope:local align:1 data:byte frameBuffer$2222 = .sbss:0x8044B688; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B68C = .sbss:0x8044B68C; // type:object size:0x1 data:byte +init$134 = .sbss:0x8044B68C; // type:object size:0x1 scope:local align:1 data:byte sManager__6JUTXfb = .sbss:0x8044B690; // type:object size:0x4 scope:global align:4 data:4byte sManager__10JUTProcBar = .sbss:0x8044B698; // type:object size:0x4 scope:global align:4 data:4byte cnt$2330 = .sbss:0x8044B69C; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B6A0 = .sbss:0x8044B6A0; // type:object size:0x1 data:byte +init$231 = .sbss:0x8044B6A0; // type:object size:0x1 scope:local align:1 data:byte cntUser$2379 = .sbss:0x8044B6A4; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B6A8 = .sbss:0x8044B6A8; // type:object size:0x1 data:byte +init$280 = .sbss:0x8044B6A8; // type:object size:0x1 scope:local align:1 data:byte sManager__17JUTConsoleManager = .sbss:0x8044B6B0; // type:object size:0x4 scope:global align:4 data:4byte sReportConsole = .sbss:0x8044B6B4; // type:object size:0x4 scope:global align:4 data:4byte sWarningConsole = .sbss:0x8044B6B8; // type:object size:0x4 scope:global align:4 data:4byte mStrBuff__8J2DPrint = .sbss:0x8044B6C0; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B6C4 = .sbss:0x8044B6C4; // type:object size:0x1 data:byte +sStrBufInitialized = .sbss:0x8044B6C4; // type:object size:0x1 scope:local align:1 data:byte mStrBuffSize__8J2DPrint = .sbss:0x8044B6C8; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B6CC = .sbss:0x8044B6CC; // type:object size:0x1 data:byte +data_8045158C = .sbss:0x8044B6CC; // type:object size:0x4 scope:local align:4 data:byte mDataManage__9J2DScreen = .sbss:0x8044B6D0; // type:object size:0x4 scope:global align:4 data:4byte j3dDefaultViewNo = .sbss:0x8044B6D8; // type:object size:0x4 scope:global align:4 sInterruptFlag__17J3DDisplayListObj = .sbss:0x8044B6E0; // type:object size:0x4 scope:global align:4 data:4byte sCurrentPipeline__11J3DShapeMtx = .sbss:0x8044B6E8; // type:object size:0x4 scope:global align:4 data:4byte sCurrentScaleFlag__11J3DShapeMtx = .sbss:0x8044B6EC; // type:object size:0x4 scope:global align:4 data:4byte -sNBTFlag__11J3DShapeMtx = .sbss:0x8044B6F0; // type:object size:0x1 data:byte -sLODFlag__11J3DShapeMtx = .sbss:0x8044B6F1; // type:object size:0x1 data:byte +sNBTFlag__11J3DShapeMtx = .sbss:0x8044B6F0; // type:object size:0x1 scope:global align:1 data:byte +sLODFlag__11J3DShapeMtx = .sbss:0x8044B6F1; // type:object size:0x1 scope:global align:1 data:byte sTexMtxLoadType__11J3DShapeMtx = .sbss:0x8044B6F4; // type:object size:0x4 scope:global align:4 data:4byte sMtxPtrTbl__21J3DShapeMtxConcatView = .sbss:0x8044B6F8; // type:object size:0x8 scope:global align:4 data:4byte sTexGenBlock__17J3DDifferedTexMtx = .sbss:0x8044B700; // type:object size:0x4 scope:global align:4 data:4byte sTexMtxObj__17J3DDifferedTexMtx = .sbss:0x8044B704; // type:object size:0x4 scope:global align:4 data:4byte sInterruptFlag$903 = .sbss:0x8044B708; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B70C = .sbss:0x8044B70C; // type:object size:0x1 data:byte +init$465 = .sbss:0x8044B70C; // type:object size:0x1 scope:local align:1 data:byte sOldVcdVatCmd__8J3DShape = .sbss:0x8044B710; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044B714 = .sbss:0x8044B714; // type:object size:0x1 data:byte +sEnvelopeFlag__8J3DShape = .sbss:0x8044B714; // type:object size:0x1 scope:local align:1 data:byte SizeOfJ3DColorBlockLightOffLoad = .sbss:0x8044B718; // type:object size:0x4 scope:global align:4 data:4byte SizeOfJ3DColorBlockAmbientOnLoad = .sbss:0x8044B71C; // type:object size:0x4 scope:global align:4 data:4byte entryNum__13J3DDrawBuffer = .sbss:0x8044B720; // type:object size:0x4 scope:global align:4 data:4byte sInterruptFlag$965 = .sbss:0x8044B728; // type:object size:0x4 scope:local align:4 data:4byte -lbl_8044B72C = .sbss:0x8044B72C; // type:object size:0x1 data:byte +sInitInterruptFlag = .sbss:0x8044B72C; // type:object size:0x1 scope:local align:1 data:byte mMtxBuffer__10J3DMtxCalc = .sbss:0x8044B730; // type:object size:0x4 scope:global align:4 data:4byte mJoint__10J3DMtxCalc = .sbss:0x8044B734; // type:object size:0x4 scope:global align:4 data:4byte mCurrentMtxCalc__8J3DJoint = .sbss:0x8044B738; // type:object size:0x4 scope:global align:4 data:4byte @@ -22444,13 +22440,13 @@ resetFuncRegistered$145 = .sbss:0x8044BA84; // type:object size:0x4 scope:local CPUFifo = .sbss:0x8044BA88; // type:object size:0x4 scope:global align:4 data:4byte GPFifo = .sbss:0x8044BA8C; // type:object size:0x4 scope:global align:4 data:4byte __GXCurrentThread = .sbss:0x8044BA90; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044BA94 = .sbss:0x8044BA94; // type:object size:0x1 data:byte +CPGPLinked = .sbss:0x8044BA94; // type:object size:0x1 scope:local align:1 data:byte GXOverflowSuspendInProgress = .sbss:0x8044BA98; // type:object size:0x4 scope:global align:4 data:4byte BreakPointCB = .sbss:0x8044BA9C; // type:object size:0x4 scope:global align:4 data:4byte __GXOverflowCount = .sbss:0x8044BAA0; // type:object size:0x4 scope:global align:4 data:4byte TokenCB = .sbss:0x8044BAA8; // type:object size:0x4 scope:global align:4 data:4byte DrawDoneCB = .sbss:0x8044BAAC; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044BAB0 = .sbss:0x8044BAB0; // type:object size:0x1 data:byte +DrawDone = .sbss:0x8044BAB0; // type:object size:0x1 scope:local align:1 data:byte FinishQueue = .sbss:0x8044BAB4; // type:object size:0x8 scope:global align:4 __GDCurrentDL = .sbss:0x8044BAC0; // type:object size:0x4 scope:global align:4 data:4byte overflowcb = .sbss:0x8044BAC4; // type:object size:0x4 scope:global align:4 data:4byte @@ -22459,7 +22455,7 @@ __aborting = .sbss:0x8044BAD0; // type:object size:0x4 scope:global align:4 data __atexit_curr_func = .sbss:0x8044BAD4; // type:object size:0x4 scope:global align:4 data:4byte __stdio_exit = .sbss:0x8044BAD8; // type:object size:0x4 scope:global align:4 data:4byte __console_exit = .sbss:0x8044BADC; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044BAE0 = .sbss:0x8044BAE0; // type:object size:0x1 data:byte +init$49 = .sbss:0x8044BAE0; // type:object size:0x1 scope:local align:1 data:byte errno = .sbss:0x8044BAE8; // type:object size:0x4 scope:global align:4 data:4byte initialized$60 = .sbss:0x8044BAF0; // type:object size:0x4 scope:local align:4 data:4byte gTRKInputPendingPtr = .sbss:0x8044BAF8; // type:object size:0x4 scope:global align:4 data:4byte @@ -22470,17 +22466,17 @@ DBGCallback = .sbss:0x8044BB14; // type:object size:0x4 scope:global align:4 dat SendMailData = .sbss:0x8044BB18; // type:object size:0x4 scope:global align:4 data:4byte RecvDataLeng = .sbss:0x8044BB1C; // type:object size:0x4 scope:global align:4 data:4byte pEXIInputFlag = .sbss:0x8044BB20; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8044BB24 = .sbss:0x8044BB24; // type:object size:0x1 data:byte +EXIInputFlag = .sbss:0x8044BB24; // type:object size:0x1 scope:local align:1 data:byte @3884 = .sdata2:0x8044BB40; // type:object size:0x4 scope:local align:4 data:float @3885 = .sdata2:0x8044BB44; // type:object size:0x4 scope:local align:4 data:float @3886 = .sdata2:0x8044BB48; // type:object size:0x4 scope:local align:4 data:float @3887 = .sdata2:0x8044BB4C; // type:object size:0x4 scope:local align:4 data:float @3888 = .sdata2:0x8044BB50; // type:object size:0x4 scope:local align:4 data:float -@3890 = .sdata2:0x8044BB58; // type:object size:0x8 scope:local align:4 data:double +@3890 = .sdata2:0x8044BB58; // type:object size:0x8 scope:local align:8 data:double @3709 = .sdata2:0x8044BB60; // type:object size:0x4 scope:local align:4 data:float @3710 = .sdata2:0x8044BB64; // type:object size:0x4 scope:local align:4 data:float @3711 = .sdata2:0x8044BB68; // type:object size:0x4 scope:local align:4 data:float -@3713 = .sdata2:0x8044BB70; // type:object size:0x8 scope:local align:4 data:double +@3713 = .sdata2:0x8044BB70; // type:object size:0x8 scope:local align:8 data:double @4062 = .sdata2:0x8044BB78; // type:object size:0x4 scope:local align:4 data:float @4063 = .sdata2:0x8044BB7C; // type:object size:0x4 scope:local align:4 data:float @4105 = .sdata2:0x8044BB80; // type:object size:0x4 scope:local align:4 data:float @@ -23664,8 +23660,8 @@ l_arcName = .sdata2:0x8044CDD8; // type:object size:0x6 scope:local align:4 data @21680 = .sdata2:0x8044D074; // type:object size:0x4 scope:local align:4 data:float @21736 = .sdata2:0x8044D078; // type:object size:0x4 scope:local align:4 data:float @22146 = .sdata2:0x8044D07C; // type:object size:0x4 scope:local align:4 data:float -lbl_8044D080 = .sdata2:0x8044D080; // type:object size:0x1 data:byte -lbl_8044D081 = .sdata2:0x8044D081; // type:object size:0x1 data:byte +data_80452F38 = .sdata2:0x8044D080; // type:object size:0x1 scope:local align:1 data:byte +data_80452F39 = .sdata2:0x8044D081; // type:object size:0x1 scope:local align:1 data:byte @22608 = .sdata2:0x8044D084; // type:object size:0x4 scope:local align:4 data:float @22609 = .sdata2:0x8044D088; // type:object size:0x4 scope:local align:4 data:float @23155 = .sdata2:0x8044D08C; // type:object size:0x4 scope:local align:4 data:float diff --git a/config/GZ2P01/symbols.txt b/config/GZ2P01/symbols.txt index 6b745382763..2922f6d2ed4 100644 --- a/config/GZ2P01/symbols.txt +++ b/config/GZ2P01/symbols.txt @@ -16414,12 +16414,9 @@ TRKTargetReadInstruction = .text:0x80371BB8; // type:function size:0x4C scope:gl TRKTargetAccessMemory = .text:0x80371C04; // type:function size:0x14C scope:global align:4 TRKValidMemory32 = .text:0x80371D50; // type:function size:0x2A4 scope:global align:4 TRKAccessFile = .text:0x80372000; // type:function size:0x8 scope:global align:16 -TRKOpenFile = .text:0x80372008; // type:label scope:global align:4 -fn_80372008 = .text:0x80372008; // type:function size:0x8 -TRKCloseFile = .text:0x80372010; // type:label scope:global align:4 -fn_80372010 = .text:0x80372010; // type:function size:0x8 -TRKPositionFile = .text:0x80372018; // type:label scope:global align:4 -fn_80372018 = .text:0x80372018; // type:function size:0x8 +TRKOpenFile = .text:0x80372008; // type:function size:0x8 scope:global align:4 +TRKCloseFile = .text:0x80372010; // type:function size:0x8 scope:global align:4 +TRKPositionFile = .text:0x80372018; // type:function size:0x8 scope:global align:4 TRKSaveExtended1Block = .text:0x80372020; // type:function size:0x1B8 scope:global align:4 TRKRestoreExtended1Block = .text:0x803721D8; // type:function size:0x1B8 scope:global align:4 InitMetroTRK = .text:0x80372390; // type:function size:0x98 scope:global align:4 diff --git a/configure.py b/configure.py index 84de55f80f8..757c826785b 100755 --- a/configure.py +++ b/configure.py @@ -735,9 +735,9 @@ config.libs = [ Object(MatchingFor(ALL_GCN), "d/d_meter2_info.cpp"), Object(MatchingFor(ALL_GCN), "d/d_meter2.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_out_font.cpp"), - Object(NonMatching, "d/d_msg_class.cpp"), + Object(MatchingFor(ALL_GCN), "d/d_msg_class.cpp"), Object(Equivalent, "d/d_msg_object.cpp"), # weak func order - Object(MatchingFor("GZ2P01"), "d/d_msg_unit.cpp"), + Object(MatchingFor("GZ2P01", "GZ2J01"), "d/d_msg_unit.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_scrn_3select.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_scrn_arrow.cpp"), Object(MatchingFor(ALL_GCN), "d/d_msg_scrn_base.cpp"), diff --git a/include/d/d_msg_class.h b/include/d/d_msg_class.h index c8b65625b5b..9a455804026 100644 --- a/include/d/d_msg_class.h +++ b/include/d/d_msg_class.h @@ -5,6 +5,16 @@ #include "JSystem/JMessage/JMessage.h" #include "SSystem/SComponent/c_xyz.h" +#if REGION_JPN +#define D_MSG_CLASS_PAGE_CNT_MAX 30 +#define D_MSG_CLASS_CHAR_CNT_MAX 0x210 +#define D_MSG_CLASS_LINE_MAX 9 +#else +#define D_MSG_CLASS_PAGE_CNT_MAX 40 +#define D_MSG_CLASS_CHAR_CNT_MAX 0x200 +#define D_MSG_CLASS_LINE_MAX 12 +#endif + class JMSMesgEntry_c { public: /* 0x0 */ u32 string_offset; @@ -150,7 +160,7 @@ struct jmessage_tReference : public JMessage::TReference { void setNowLightCount(u8 count) { mNowLightCount = count; } void setCharCnt(s16 cnt) { mCharCnt = cnt; } void offButtonTagStopFlag() { mButtonTagStopFlag = false; } - void onLightBatchFlag() { mLightBatchFlag = true; } + void onLightBatchFlag() { mLightBatchFlag = true; } void addNowLightCount() { mNowLightCount++; } void addLineCount() { mLineCount++; } void addEndLineCount() { mEndLineCount++; } @@ -258,7 +268,7 @@ struct jmessage_tReference : public JMessage::TReference { s16 getCharCnt() { return mCharCnt; } struct CharSoundInfo { - u16 data[0x200]; + u16 data[D_MSG_CLASS_CHAR_CNT_MAX]; s16 field_0x40c; s16 field_0x40e; s16 mCountBackUp; @@ -291,8 +301,8 @@ struct jmessage_tReference : public JMessage::TReference { /* 0x045C */ f32 mCharAllAlphaRate; /* 0x0460 */ f32 mAddCharAlpha; /* 0x0464 */ f32 mCharAlpha; - /* 0x0468 */ f32 mStrLength[40]; - /* 0x0508 */ f32 mSpaceLength[40]; + /* 0x0468 */ f32 mStrLength[D_MSG_CLASS_PAGE_CNT_MAX]; + /* 0x0508 */ f32 mSpaceLength[D_MSG_CLASS_PAGE_CNT_MAX]; /* 0x05A8 */ f32 mSelLength[3]; /* 0x05B4 */ u32 mDemoFrame; /* 0x05B8 */ u32 mRevoMessageID; @@ -311,19 +321,19 @@ struct jmessage_tReference : public JMessage::TReference { /* 0x05DC */ u8 mNowLightCount; /* 0x05DD */ u8 mDrawLightCount; /* 0x05DE */ u16 mMsgID; - /* 0x05E0 */ u16 mLineScale[40]; + /* 0x05E0 */ u16 mLineScale[D_MSG_CLASS_PAGE_CNT_MAX]; /* 0x0630 */ u16 mTopTagScale; /* 0x0632 */ u16 mNowTagScale; /* 0x0634 */ char mWord[10][100]; - /* 0x0A1C */ char mText[0x200]; - /* 0x0C1C */ char mTextS[0x200]; - /* 0x0E1C */ char mRuby[0x200]; + /* 0x0A1C */ char mText[D_MSG_CLASS_CHAR_CNT_MAX]; + /* 0x0C1C */ char mTextS[D_MSG_CLASS_CHAR_CNT_MAX]; + /* 0x0E1C */ char mRuby[D_MSG_CLASS_CHAR_CNT_MAX]; /* 0x101C */ char mSelText[3][50]; /* 0x10B2 */ char mSelRuby[3][80]; - /* 0x11A2 */ s8 mPageLine[40]; - /* 0x11CA */ s8 mPageLineMax[40]; - /* 0x11F2 */ u8 mPageType[40]; - /* 0x121A */ u8 mLineArrange[40]; + /* 0x11A2 */ s8 mPageLine[D_MSG_CLASS_PAGE_CNT_MAX]; + /* 0x11CA */ s8 mPageLineMax[D_MSG_CLASS_PAGE_CNT_MAX]; + /* 0x11F2 */ u8 mPageType[D_MSG_CLASS_PAGE_CNT_MAX]; + /* 0x121A */ u8 mLineArrange[D_MSG_CLASS_PAGE_CNT_MAX]; /* 0x1242 */ u8 mSelectNum; /* 0x1243 */ u8 mSelectType; /* 0x1244 */ u8 mSelectPos; @@ -358,7 +368,6 @@ struct jmessage_tMeasureProcessor : public JMessage::TRenderingProcessor { /* 8022B458 */ void do_rubyset(void const*, u32); /* 8022B4E0 */ void push_word(char*); - /* 8022B5F4 */ virtual ~jmessage_tMeasureProcessor() {} /* 80229AC4 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 80229CB4 */ virtual void do_end(); /* 80229E3C */ virtual void do_character(int iCharacter); @@ -396,7 +405,6 @@ struct jmessage_tSequenceProcessor : public JMessage::TSequenceProcessor { /* 8022CB10 */ void messageSePlay(u8, u8, cXyz*); /* 8022CBE8 */ void calcStringLength(); - /* 8023299C */ virtual ~jmessage_tSequenceProcessor() {} /* 8022B654 */ virtual void do_reset(); /* 8022B658 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 8022BA3C */ virtual void do_end(); @@ -460,7 +468,6 @@ struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { /* 8022F734 */ void push_word(); /* 8022F784 */ void getCharInfo(f32, f32, f32, f32, f32); - /* 8023293C */ virtual ~jmessage_tRenderingProcessor() {} /* 8022CDC8 */ virtual void do_reset(); /* 8022CDCC */ virtual void do_begin(void const* pEntry, char const* pszText); /* 8022CFD8 */ virtual void do_end(); @@ -499,7 +506,7 @@ struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { /* 0x060 */ f32 mSelTextInitPosX[3]; /* 0x06C */ f32 mSelTextInitPosY[3]; /* 0x078 */ f32 mTextInitOffsetPos; - /* 0x07C */ f32 field_0x7c[40]; + /* 0x07C */ f32 field_0x7c[D_MSG_CLASS_PAGE_CNT_MAX]; /* 0x11C */ int field_0x11c; /* 0x120 */ u32 mCCColor; /* 0x124 */ u32 mGCColor; @@ -529,8 +536,6 @@ struct jmessage_tRenderingProcessor : public JMessage::TRenderingProcessor { struct jmessage_string_tControl : public JMessage::TControl { /* 8022FB5C */ jmessage_string_tControl(); - - /* 802328DC */ virtual ~jmessage_string_tControl() {} }; struct jmessage_string_tReference : public JMessage::TReference { @@ -572,19 +577,14 @@ struct jmessage_string_tReference : public JMessage::TReference { void setLineMax(u8 lineMax) { mLineMax = lineMax; } COutFont_c* getOutFontPtr() { return mOutFontPtr; } - /* 8022F94C */ virtual ~jmessage_string_tReference() {} + /* 8022F94C */ virtual ~jmessage_string_tReference(); /* 0x08 */ J2DTextBox* mPanePtr; /* 0x0C */ J2DTextBox* mRubyPanePtr; /* 0x10 */ COutFont_c* mOutFontPtr; /* 0x14 */ JUTFont* mpFont; -#if VERSION == VERSION_GCN_JPN - /* 0x18 */ f32 mLineLength[9]; - /* 0x3C */ f32 mOutfontLength[9]; -#else - /* 0x18 */ f32 mLineLength[12]; - /* 0x48 */ f32 mOutfontLength[12]; -#endif + /* 0x18 */ f32 mLineLength[D_MSG_CLASS_LINE_MAX]; + /* 0x3C */ f32 mOutfontLength[D_MSG_CLASS_LINE_MAX]; /* 0x78 */ u32 mCCColor; /* 0x7C */ u32 mGCColor; /* 0x80 */ s16 mLineCount; @@ -597,7 +597,6 @@ struct jmessage_string_tMeasureProcessor : public JMessage::TRenderingProcessor /* 8022FB98 */ jmessage_string_tMeasureProcessor(jmessage_string_tReference const* pReference); /* 8023098C */ void do_rubyset(void const*, u32); - /* 80230A5C */ virtual ~jmessage_string_tMeasureProcessor() {} /* 8022FBE4 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 8022FC14 */ virtual void do_end(); /* 8022FC28 */ virtual void do_character(int iCharacter); @@ -610,7 +609,6 @@ struct jmessage_string_tSequenceProcessor : public JMessage::TSequenceProcessor /* 80230A08 */ jmessage_string_tSequenceProcessor(jmessage_string_tReference const* pReference, jmessage_string_tControl* pControl); - /* 80232858 */ virtual ~jmessage_string_tSequenceProcessor() {} /* 80230ABC */ virtual void do_reset(); /* 80230AC0 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 80230B7C */ virtual void do_end(); @@ -639,7 +637,6 @@ struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcesso /* 802326E4 */ void do_numset(s16); /* 802327BC */ void push_word(char const*); - /* 802327F8 */ virtual ~jmessage_string_tRenderingProcessor() {} /* 80230C5C */ virtual void do_reset(); /* 80230CA0 */ virtual void do_begin(void const* pEntry, char const* pszText); /* 80230CE8 */ virtual void do_end(); @@ -655,18 +652,15 @@ struct jmessage_string_tRenderingProcessor : public JMessage::TRenderingProcesso /* 0x048 */ f32 field_0x48; /* 0x04C */ f32 field_0x4c; /* 0x050 */ f32 field_0x50; - /* 0x054 */ char field_0x54[0x200]; - /* 0x254 */ char field_0x254[0x200]; + /* 0x054 */ char field_0x54[D_MSG_CLASS_CHAR_CNT_MAX]; + /* 0x254 */ char field_0x254[D_MSG_CLASS_CHAR_CNT_MAX]; /* 0x454 */ char field_0x454[0x486 - 0x454]; /* 0x486 */ char field_0x486[0x20]; // Unknown length - /* 0x4a6 */ u8 field_0x4a6[0x54e - 0x4a6]; + /* 0x4A6 */ u8 field_0x4a6[0x54e - 0x4a6]; /* 0x54E */ s16 field_0x54e; /* 0x550 */ s16 field_0x550; /* 0x552 */ s16 field_0x552; /* 0x554 */ u8 field_0x554; -#if VERSION == VERSION_GCN_JPN - /* 0x558 */ u8 field_0x558[0x578 - 0x558]; -#endif }; #define MSGTAG_GROUP(g) (g << 16) diff --git a/src/d/actor/d_a_alink_canoe.inc b/src/d/actor/d_a_alink_canoe.inc index b6b2e44a1df..5e2c15aae3f 100644 --- a/src/d/actor/d_a_alink_canoe.inc +++ b/src/d/actor/d_a_alink_canoe.inc @@ -766,13 +766,13 @@ int daAlink_c::procCanoeRowInit(int param_0) { } if (spC == 1) { - var_r29 = var_r28 == 2 ? ANM_CANOE_ROW_RIGHT_BACK : ANM_CANOE_ROW_LEFT_BACK; + var_r29 = (daAlink_ANM)(var_r28 == 2 ? (int)ANM_CANOE_ROW_RIGHT_BACK : (int)ANM_CANOE_ROW_LEFT_BACK); if ((var_r29 == ANM_CANOE_ROW_RIGHT_BACK && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT_BACK && mProcVar5.field_0x3012 == 1)) { return procCanoePaddleShiftInit(var_r29); } } else { - var_r29 = var_r28 == 2 ? ANM_CANOE_ROW_RIGHT : ANM_CANOE_ROW_LEFT; + var_r29 = (daAlink_ANM)(var_r28 == 2 ? (int)ANM_CANOE_ROW_RIGHT : (int)ANM_CANOE_ROW_LEFT); if ((var_r29 == ANM_CANOE_ROW_RIGHT && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT && mProcVar5.field_0x3012 == 1)) { return procCanoePaddleShiftInit(var_r29); diff --git a/src/d/d_file_sel_warning.cpp b/src/d/d_file_sel_warning.cpp index bf3825aab75..c70d70079ca 100644 --- a/src/d/d_file_sel_warning.cpp +++ b/src/d/d_file_sel_warning.cpp @@ -73,10 +73,17 @@ void dFile_warning_c::screenSet() { JUT_ASSERT(0, mpRootPane != NULL); field_0x34 = mpRootPane->getTranslateY(); +#if REGION_JPN + mFileWarn.Scr->search('ms_for_2')->hide(); + mFileWarn.Scr->search('ms_for_3')->hide(); + + field_0x20 = static_cast(mFileWarn.Scr->search('w_msg_jp')); +#else mFileWarn.Scr->search('w_msg_jp')->hide(); mFileWarn.Scr->search('ms_for_2')->hide(); field_0x20 = static_cast(mFileWarn.Scr->search('ms_for_3')); +#endif field_0x20->show(); field_0x20->setFont(mFileWarn.mFont); field_0x20->setString(0x200, ""); diff --git a/src/d/d_msg_class.cpp b/src/d/d_msg_class.cpp index 3a27ceddaef..2b27d8d714c 100644 --- a/src/d/d_msg_class.cpp +++ b/src/d/d_msg_class.cpp @@ -11,6 +11,26 @@ #include "d/d_lib.h" #include "JSystem/JUtility/JUTFont.h" +#if REGION_JPN +#define CHAR_CODE_MALE_ICON 0x8189 +#define CHAR_CODE_FEMALE_ICON 0x818A +#define CHAR_CODE_STAR_ICON 0x819A +#define CHAR_CODE_REFMARK 0x81A6 +#define CHAR_CODE_THIN_LEFT_ARROW 0x81A9 +#define CHAR_CODE_THIN_RIGHT_ARROW 0x81A8 +#define CHAR_CODE_THIN_UP_ARROW 0x81AA +#define CHAR_CODE_THIN_DOWN_ARROW 0x81AB +#else +#define CHAR_CODE_MALE_ICON 0xB2 +#define CHAR_CODE_FEMALE_ICON 0xB3 +#define CHAR_CODE_STAR_ICON 0xB1 +#define CHAR_CODE_REFMARK 0x89 +#define CHAR_CODE_THIN_LEFT_ARROW 0xB9 +#define CHAR_CODE_THIN_RIGHT_ARROW 0xBC +#define CHAR_CODE_THIN_UP_ARROW 0xBD +#define CHAR_CODE_THIN_DOWN_ARROW 0xBE +#endif + /* 80228578-802285CC 222EB8 0054+00 1/1 0/0 0/0 .text checkCharInfoCharactor__Fi */ static bool checkCharInfoCharactor(int c) { if (c != 0x8140 && c != 0x8141 && c != 0x8142 && c != 0x0020 && c != 0x0022 && c != 0x0027 && @@ -420,6 +440,19 @@ void jmessage_tReference::calcDistance() { u8 jmessage_tReference::getLineMax() { int line_max; +#if REGION_JPN + if (isKanban()) { + line_max = 6; + } else if (isBook()) { + line_max = 7; + } else if (isStaffRoll()) { + line_max = 10; + } else if (isSaveSeq()) { + line_max = 5; + } else { + line_max = 3; + } +#else if (isKanban()) { line_max = 7; } else if (isBook()) { @@ -431,6 +464,7 @@ u8 jmessage_tReference::getLineMax() { } else { line_max = 4; } +#endif return line_max; } @@ -732,7 +766,7 @@ void jmessage_tReference::addCharactor(u16 i_character) { /* 802297B0-802297E4 2240F0 0034+00 3/3 0/0 0/0 .text resetCharactor__19jmessage_tReferenceFv */ void jmessage_tReference::resetCharactor() { - for (int i = 0; i < 0x200; i++) { + for (int i = 0; i < ARRAY_SIZE(mCharactor.data); i++) { mCharactor.data[i] = 0; } @@ -896,7 +930,7 @@ void jmessage_tMeasureProcessor::do_begin(void const* pEntry, char const* pszTex mSeSpeaker = ((JMSMesgEntry_c*)pEntry)->se_speaker; mSeMood = ((JMSMesgEntry_c*)pEntry)->se_mood; - for (int i = 0; i < 40; i++) { + for (int i = 0; i < D_MSG_CLASS_PAGE_CNT_MAX; i++) { pReference->setLineLength(i, 0.0f, 0.0f); pReference->setPageLine(i, 0); pReference->setPageLineMax(i, 0); @@ -913,9 +947,11 @@ void jmessage_tMeasureProcessor::do_begin(void const* pEntry, char const* pszTex pReference->setLineArrange(i, 1); } +#if !REGION_JPN if (((JMSMesgEntry_c*)pEntry)->unk_0xd == 0) { pReference->setLineArrange(i, 1); } +#endif } } @@ -1524,28 +1560,28 @@ bool jmessage_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u32 i_siz push_word(buffer); return true; case MSGTAG_MALE_ICON: - push_word(changeCodeToChar(0xB2)); + push_word(changeCodeToChar(CHAR_CODE_MALE_ICON)); return true; case MSGTAG_FEMALE_ICON: - push_word(changeCodeToChar(0xB3)); + push_word(changeCodeToChar(CHAR_CODE_FEMALE_ICON)); return true; case MSGTAG_STAR_ICON: - push_word(changeCodeToChar(0xB1)); + push_word(changeCodeToChar(CHAR_CODE_STAR_ICON)); return true; case MSGTAG_REFMARK: - push_word(changeCodeToChar(0x89)); + push_word(changeCodeToChar(CHAR_CODE_REFMARK)); return true; case MSGTAG_THIN_LEFT_ARROW: - push_word(changeCodeToChar(0xB9)); + push_word(changeCodeToChar(CHAR_CODE_THIN_LEFT_ARROW)); return true; case MSGTAG_THIN_RIGHT_ARROW: - push_word(changeCodeToChar(0xBC)); + push_word(changeCodeToChar(CHAR_CODE_THIN_RIGHT_ARROW)); return true; case MSGTAG_THIN_UP_ARROW: - push_word(changeCodeToChar(0xBD)); + push_word(changeCodeToChar(CHAR_CODE_THIN_UP_ARROW)); return true; case MSGTAG_THIN_DOWN_ARROW: - push_word(changeCodeToChar(0xBE)); + push_word(changeCodeToChar(CHAR_CODE_THIN_DOWN_ARROW)); return true; case MSGTAG_BULLET: case MSGTAG_BULLET_SPACE: @@ -1596,6 +1632,11 @@ void jmessage_tMeasureProcessor::do_scale(f32 i_scale) { mPageLineMax--; JUT_ASSERT(0x930, mPageLineMax > 0); +#if REGION_JPN + if (field_0x3e == 0) { + pReference->setPageType(field_0x40, 2); + } +#else if (field_0x3e == 0) { pReference->setPageType(field_0x40, 2); } else if (field_0x3e == 2 && mPageLineMax == 3) { @@ -1604,7 +1645,9 @@ void jmessage_tMeasureProcessor::do_scale(f32 i_scale) { } else { pReference->setPageType(field_0x40, 8); } - } else { + } +#endif + else { pReference->setPageType(field_0x40, 3); if (field_0x3e == 1 && pReference->getPageType(field_0x40) == 2) { pReference->setPageType(field_0x40, 4); @@ -1764,6 +1807,13 @@ void jmessage_tMeasureProcessor::do_pageType(int param_0) { /* 8022B454-8022B458 225D94 0004+00 1/1 0/0 0/0 .text do_name1__26jmessage_tMeasureProcessorFv */ void jmessage_tMeasureProcessor::do_name1() { const char* name = dComIfGs_getPlayerName(); +#if REGION_JPN + int c = (((char)name[0] & 0xFF) << 8) | ((char)name[1] & 0xFF); + // if first character is hiragana or katakana + if ((c >= 0x829F && c <= 0x82F1) || (c >= 0x8340 && c <= 0x8396)) { + push_word(changeCodeToChar(c)); + } +#endif } /* 8022B458-8022B4E0 225D98 0088+00 1/1 0/0 0/0 .text @@ -2036,7 +2086,7 @@ bool jmessage_tSequenceProcessor::do_isReady() { field_0xae = 1; field_0xa4 = 0; pReference->onBatchFlag(); - pReference->setCharCnt(0x200); + pReference->setCharCnt(D_MSG_CLASS_CHAR_CNT_MAX); field_0xa4 = field_0xa8; return true; } @@ -2056,7 +2106,7 @@ bool jmessage_tSequenceProcessor::do_isReady() { field_0xae = 1; field_0xa4 = 0; pReference->onBatchFlag(); - pReference->setCharCnt(0x200); + pReference->setCharCnt(D_MSG_CLASS_CHAR_CNT_MAX); return true; } @@ -2079,7 +2129,7 @@ bool jmessage_tSequenceProcessor::do_isReady() { if (mDoCPd_c::getTrigA(PAD_1) || field_0xb2 != 0) { field_0xa4 = 0; pReference->onBatchFlag(); - pReference->setCharCnt(0x200); + pReference->setCharCnt(D_MSG_CLASS_CHAR_CNT_MAX); } break; case 1: @@ -2088,7 +2138,7 @@ bool jmessage_tSequenceProcessor::do_isReady() { case 9: field_0xa4 = 0; pReference->onBatchFlag(); - pReference->setCharCnt(0x200); + pReference->setCharCnt(D_MSG_CLASS_CHAR_CNT_MAX); break; case 2: if (field_0xb2 != 0) { @@ -2103,7 +2153,11 @@ bool jmessage_tSequenceProcessor::do_isReady() { } field_0xa6++; +#if REGION_JPN + if (field_0xa6 >= 1) { +#else if (field_0xa6 >= 2) { +#endif field_0xa4 = field_0xa8; field_0xa6 = 0; } @@ -2519,6 +2573,13 @@ bool jmessage_tSequenceProcessor::do_jump_isReady() { /* 8022C904-8022C908 227244 0004+00 1/1 0/0 0/0 .text do_name1__27jmessage_tSequenceProcessorFv */ void jmessage_tSequenceProcessor::do_name1() { const char* name = dComIfGs_getPlayerName(); +#if REGION_JPN + int c = (((char)name[0] & 0xFF) << 8) | ((char)name[1] & 0xFF); + // if first character is hiragana or katakana + if ((c >= 0x829F && c <= 0x82F1) || (c >= 0x8340 && c <= 0x8396)) { + push_word(); + } +#endif } /* 8022C908-8022CA24 227248 011C+00 2/1 0/0 0/0 .text do_space__27jmessage_tSequenceProcessorFUl @@ -2713,7 +2774,7 @@ jmessage_tRenderingProcessor::jmessage_tRenderingProcessor(jmessage_tReference c field_0x151 = 0; field_0x138 = 0.0f; - for (int i = 0; i < 40; i++) { + for (int i = 0; i < ARRAY_SIZE(field_0x7c); i++) { field_0x7c[i] = 0.0f; } } @@ -2767,7 +2828,7 @@ void jmessage_tRenderingProcessor::do_begin(void const* pEntry, char const* pszT mpOutFont->initialize(); - for (int i = 0; i < 40; i++) { + for (int i = 0; i < ARRAY_SIZE(field_0x7c); i++) { field_0x7c[i] = 0.0f; } @@ -3367,6 +3428,73 @@ void jmessage_tRenderingProcessor::do_heightcenter() { } break; } +#if REGION_JPN + case 2: + if ((s8)pReference->getLineMax() == 3) { + int nowPageLine = pReference->getNowPageLine(); + field_0x138 = pReference->getLineSpace() * (0.5f * (pReference->getLineMax() - (s16)nowPageLine)); + var_f31 += field_0x138; + break; + } + if (field_0x142 == 0) { + field_0x138 = pReference->getLineSpace(); + var_f31 += field_0x138; + } else if (field_0x142 == 1) { + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; + } + break; + case 3: { + if (field_0x142 == 1) { + int nowPageLine = pReference->getNowPageLine(); + field_0x138 = pReference->getLineSpace() * (0.5f * (pReference->getLineMax() - (s16)nowPageLine)); + var_f31 += field_0x138; + break; + } + break; + } + case 4: { + if (field_0x142 == 1) { + var_f31 += 0.5f * pReference->getLineSpace(); + } + + f32 sp8 = pReference->getLineScale(field_0x142) / 100.0f; + f32 dVar15 = (pReference->getLineSpace() - (sp8 * pReference->getFontSizeY())) / 2; + field_0x138 += dVar15; + var_f31 += dVar15; + break; + } + case 5: { + if (field_0x142 >= 1) { + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; + } + + f32 sp8 = pReference->getLineScale(field_0x142) / 100.0f; + f32 dVar15 = (pReference->getLineSpace() - (sp8 * pReference->getFontSizeY())) / 2; + field_0x138 += dVar15; + var_f31 += dVar15; + + break; + } + case 6: + if (field_0x142 <= 1) { + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; + } + break; + case 7: + if (field_0x142 == 1 || field_0x142 == 2) { + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; + } + break; + case 8: + if (field_0x142 == 2) { + field_0x138 = 0.5f * pReference->getLineSpace(); + var_f31 += field_0x138; + } +#else case 2: if (field_0x142 == 0) { field_0x138 = pReference->getLineSpace(); @@ -3429,6 +3557,7 @@ void jmessage_tRenderingProcessor::do_heightcenter() { field_0x138 = 0.5f * pReference->getLineSpace(); var_f31 += field_0x138; } +#endif } if (field_0x142 == 0) { @@ -3620,7 +3749,7 @@ void jmessage_tRenderingProcessor::do_strcat(char* i_str, bool param_2, bool par } else { JUT_WARN(5316, "%s", "TextBox Alloc Byte Over!!"); } - } else if (field_0x11c < 0x200) { + } else if (field_0x11c < D_MSG_CLASS_CHAR_CNT_MAX) { if (param_2) { field_0x146++; if (pReference->getBatchColorFlag() != 0) { @@ -3655,7 +3784,7 @@ void jmessage_tRenderingProcessor::do_strcat(char* i_str, bool param_2, bool par int length = 0; length = strlen(buffer); - if (field_0x11c + length < 0x200) { + if (field_0x11c + length < D_MSG_CLASS_CHAR_CNT_MAX) { field_0x148 = strlen(pReference->getTextPtr()); field_0x14a = strlen(pReference->getTextSPtr()); @@ -3756,6 +3885,13 @@ void jmessage_tRenderingProcessor::do_rubystrcat(char* i_src, char* i_dst, f32 i */ void jmessage_tRenderingProcessor::do_name1() { const char* name = dComIfGs_getPlayerName(); +#if REGION_JPN + int c = (((char)name[0] & 0xFF) << 8) | ((char)name[1] & 0xFF); + // if first character is hiragana or katakana + if ((c >= 0x829F && c <= 0x82F1) || (c >= 0x8340 && c <= 0x8396)) { + push_word(); + } +#endif } /* 8022F540-8022F734 229E80 01F4+00 1/1 0/0 0/0 .text do_numset__28jmessage_tRenderingProcessorFs @@ -3836,7 +3972,7 @@ jmessage_string_tReference::jmessage_string_tReference() { mRubyPanePtr = NULL; mpFont = mDoExt_getMesgFont(); - for (int i = 0; i < 12; i++) { + for (int i = 0; i < ARRAY_SIZE(mLineLength); i++) { mLineLength[i] = 0.0f; mOutfontLength[i] = 0.0f; } @@ -3844,6 +3980,9 @@ jmessage_string_tReference::jmessage_string_tReference() { resetCharactor(); } +jmessage_string_tReference::~jmessage_string_tReference() { +} + /* 8022F9AC-8022FA2C 22A2EC 0080+00 0/0 3/3 0/0 .text * init__26jmessage_string_tReferenceFP10J2DTextBoxP10J2DTextBoxP7JUTFontP10COutFont_cUc */ void jmessage_string_tReference::init(J2DTextBox* panePtr, J2DTextBox* runyPanePtr, @@ -3852,14 +3991,14 @@ void jmessage_string_tReference::init(J2DTextBox* panePtr, J2DTextBox* runyPaneP mRubyPanePtr = runyPanePtr; mOutFontPtr = outFontPtr; mLineCount = 0; - mLineMax = 12; + mLineMax = D_MSG_CLASS_LINE_MAX; mNowPage = 0; mFlags = flags; if (font != NULL) { mpFont = font; } - for (int i = 0; i < 12; i++) { + for (int i = 0; i < ARRAY_SIZE(mLineLength); i++) { mLineLength[i] = 0.0f; mOutfontLength[i] = 0.0f; } @@ -4299,28 +4438,28 @@ bool jmessage_string_tMeasureProcessor::do_tag(u32 i_tag, void const* i_data, u3 stack_pushCurrent(buffer); break; case MSGTAG_MALE_ICON: - stack_pushCurrent(changeCodeToChar(0xB2)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_MALE_ICON)); break; case MSGTAG_FEMALE_ICON: - stack_pushCurrent(changeCodeToChar(0xB3)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_FEMALE_ICON)); break; case MSGTAG_STAR_ICON: - stack_pushCurrent(changeCodeToChar(0xB1)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_STAR_ICON)); break; case MSGTAG_REFMARK: - stack_pushCurrent(changeCodeToChar(0x89)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_REFMARK)); break; case MSGTAG_THIN_LEFT_ARROW: - stack_pushCurrent(changeCodeToChar(0xB9)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_THIN_LEFT_ARROW)); break; case MSGTAG_THIN_RIGHT_ARROW: - stack_pushCurrent(changeCodeToChar(0xBC)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_THIN_RIGHT_ARROW)); break; case MSGTAG_THIN_UP_ARROW: - stack_pushCurrent(changeCodeToChar(0xBD)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_THIN_UP_ARROW)); break; case MSGTAG_THIN_DOWN_ARROW: - stack_pushCurrent(changeCodeToChar(0xBE)); + stack_pushCurrent(changeCodeToChar(CHAR_CODE_THIN_DOWN_ARROW)); break; case MSGTAG_BULLET: case MSGTAG_BULLET_SPACE: @@ -4942,28 +5081,28 @@ bool jmessage_string_tRenderingProcessor::do_tag(u32 i_tag, void const* i_data, push_word(buffer); break; case MSGTAG_MALE_ICON: - push_word(changeCodeToChar(0xB2)); + push_word(changeCodeToChar(CHAR_CODE_MALE_ICON)); break; case MSGTAG_FEMALE_ICON: - push_word(changeCodeToChar(0xB3)); + push_word(changeCodeToChar(CHAR_CODE_FEMALE_ICON)); break; case MSGTAG_STAR_ICON: - push_word(changeCodeToChar(0xB1)); + push_word(changeCodeToChar(CHAR_CODE_STAR_ICON)); break; case MSGTAG_REFMARK: - push_word(changeCodeToChar(0x89)); + push_word(changeCodeToChar(CHAR_CODE_REFMARK)); break; case MSGTAG_THIN_LEFT_ARROW: - push_word(changeCodeToChar(0xB9)); + push_word(changeCodeToChar(CHAR_CODE_THIN_LEFT_ARROW)); break; case MSGTAG_THIN_RIGHT_ARROW: - push_word(changeCodeToChar(0xBC)); + push_word(changeCodeToChar(CHAR_CODE_THIN_RIGHT_ARROW)); break; case MSGTAG_THIN_UP_ARROW: - push_word(changeCodeToChar(0xBD)); + push_word(changeCodeToChar(CHAR_CODE_THIN_UP_ARROW)); break; case MSGTAG_THIN_DOWN_ARROW: - push_word(changeCodeToChar(0xBE)); + push_word(changeCodeToChar(CHAR_CODE_THIN_DOWN_ARROW)); break; case MSGTAG_BULLET: do_outfont(42); @@ -5134,7 +5273,7 @@ void jmessage_string_tRenderingProcessor::do_heightcenter() { void jmessage_string_tRenderingProcessor::do_strcat(char* i_str) { if (getLineCountNowPage() >= 0) { field_0x54e += strlen(i_str); - if (field_0x54e < 512) { + if (field_0x54e < ARRAY_SIZE(field_0x54)) { strcat(field_0x54, i_str); } else { JUT_WARN(7531, "%s", "Message Alloc Byte Over!!"); @@ -5187,7 +5326,7 @@ void jmessage_string_tRenderingProcessor::do_rubyset(void const* i_data, u32 i_s void jmessage_string_tRenderingProcessor::do_rubystrcat(char* i_str) { if (getLineCountNowPage() >= 0) { field_0x550 += strlen(i_str); - if (field_0x550 < 512) { + if (field_0x550 < ARRAY_SIZE(field_0x254)) { strcat(field_0x254, i_str); } else { JUT_WARN(7613, "%s", "Message Alloc Byte Over!!"); diff --git a/src/d/d_msg_unit.cpp b/src/d/d_msg_unit.cpp index ff03c960fde..d816398ff1b 100644 --- a/src/d/d_msg_unit.cpp +++ b/src/d/d_msg_unit.cpp @@ -14,8 +14,22 @@ // temporary until a better solution is found typedef struct dMsgUnit_inf1_entry { u32 dat1EntryOffset; +#if REGION_JPN + u16 field_0x04; + u16 field_0x06; + u16 field_0x08; + u16 field_0x0a; + u16 field_0x0c; + u16 field_0x0e; + u16 field_0x10; + u16 field_0x12; + u16 field_0x14; + u16 field_0x16; + u16 field_0x18; +#else u16 startFrame; u16 endFrame; +#endif } dMsgUnit_inf1_entry; typedef struct dMsgUnit_inf1_section_t { @@ -35,6 +49,172 @@ dMsgUnit_c::~dMsgUnit_c() {} /* 80238CEC-8023907C 23362C 0390+00 0/0 5/5 0/0 .text setTag__10dMsgUnit_cFiiPcb */ // NONMATCHING - regalloc +#if REGION_JPN +void dMsgUnit_c::setTag(int i_type, int i_value, char* o_buffer, bool param_4) { + *o_buffer = 0; + bool stack9 = false; + bool stack8 = false; + int value = i_value; + + if (i_type == 0x10000) { + sprintf(o_buffer, "%d", i_value); + return; + } + + if (i_type == 0x10001) { + int tens_digit = i_value / 10; + int ones_digit = i_value % 10; + sprintf(o_buffer, "%d-%d", tens_digit, ones_digit); + return; + } + + if ((i_type == 4 && param_4 == true) || (i_type == 5 && param_4 == false)) { + int seconds = i_value / 1000; + int minutes = seconds / 60; + seconds -= minutes * 60; + if (minutes > 99) { + minutes = 99; + seconds = 59; + } + + if (minutes == 0 && seconds == 0) { + if (strcmp(dComIfGp_getStartStageName(), "F_SP00") == 0) { + return; + } + } + + if (i_type == 4) { + i_value = minutes; + if (minutes == 0) { + stack9 = true; + } + } + + if (i_type == 5) { + if (seconds == 0 && minutes != 0) { + return; + } + i_value = seconds; + } + } + + if ((i_type == 3 && param_4 == true) || i_type == 4 && param_4 == false) { + f32 dayTime = g_env_light.getDaytime(); + f32 hour = dayTime / 15.0f; + + f32 iVar8b = ((s32)(1000000.0f * dayTime) % 15000000) / 1000000.0f; + f32 minute = 60.0f * (iVar8b / 15.0f); + // not sure why this affects codegen, in theory it should be optimized out + f32 minute2 = 60.0f * (iVar8b / 15.0f); + if (i_type == 3) { + i_value = (s32)hour; + } + + if (i_type == 4) { + i_value = (s32)minute; + } + } + + if (i_type == 9 && param_4 == true) { + sprintf(o_buffer, "%d", i_value); + stack8 = true; + } + + if (!stack9) { + bmg_header_t* pHeader = (bmg_header_t*)dMeter2Info_getMsgUnitResource(); + dMsgUnit_inf1_section_t* pInfoBlock = NULL; + const void* pMsgDataBlock = NULL; + str1_section_t* pStrAttributeBlock = NULL; + int filepos = sizeof(bmg_header_t); + u32 filesize = pHeader->size; + bmg_section_t* pSection = (bmg_section_t*)(((u8*)pHeader) + filepos); + + for (; filepos < filesize; filepos += pSection->size) { + switch(pSection->magic) { + case 'FLW1': + break; + case 'FLI1': + break; + case 'INF1': + pInfoBlock = (dMsgUnit_inf1_section_t*)pSection; + break; + case 'DAT1': + pMsgDataBlock = pSection; + break; + case 'STR1': + pStrAttributeBlock = (str1_section_t*)pSection; + break; + } + pSection = (bmg_section_t*)((u8*)pSection + pSection->size); + } + + u16 vals[12]; + vals[0] = pInfoBlock->entries[i_type].field_0x04; + vals[1] = pInfoBlock->entries[i_type].field_0x06; + vals[2] = pInfoBlock->entries[i_type].field_0x08; + vals[3] = pInfoBlock->entries[i_type].field_0x0a; + vals[4] = pInfoBlock->entries[i_type].field_0x0c; + vals[5] = pInfoBlock->entries[i_type].field_0x0e; + vals[6] = pInfoBlock->entries[i_type].field_0x10; + vals[7] = pInfoBlock->entries[i_type].field_0x12; + vals[8] = pInfoBlock->entries[i_type].field_0x14; + vals[9] = pInfoBlock->entries[i_type].field_0x16; + vals[10] = pInfoBlock->entries[i_type].field_0x18; + int entryOff = pInfoBlock->entries[i_type].dat1EntryOffset; + + char* value2 = (char*)((uintptr_t)pMsgDataBlock + entryOff + 8); + + const char* uVar5; + if (i_value == 0) { + uVar5 = pStrAttributeBlock->entries->str + vals[0]; + } else { + if ((i_value % 10) == 0) { + uVar5 = pStrAttributeBlock->entries->str + (vals[10]); + } else { + uVar5 = pStrAttributeBlock->entries->str + vals[i_value % 10]; + } + } + + int uVar5Len = strlen(uVar5); + if (uVar5Len == 0) { + if (stack8) { + strcat(o_buffer, value2); + } else { + sprintf(o_buffer, "%d%s", i_value, value2); + } + } else { + char unkCharArr[7]; + unkCharArr[0] = 26; + unkCharArr[1] = uVar5Len + 6; + unkCharArr[2] = -1; + unkCharArr[3] = -1; + unkCharArr[4] = 2; + unkCharArr[5] = strlen(value2) / 2; + unkCharArr[6] = 0; + + if (stack8) { + strcat(o_buffer, unkCharArr); + strcat(o_buffer, uVar5); + strcat(o_buffer, value2); + } else { + sprintf(o_buffer, "%d%s%s%s", i_value, unkCharArr, uVar5, value2); + } + } + } + + if (i_type == 3 && param_4 == true) { + char buffer[20]; + setTag(4, 0, buffer, false); + strcat(o_buffer, buffer); + } + + if (i_type == 4 && param_4 == true) { + char buffer[20]; + setTag(5, value, buffer, false); + strcat(o_buffer, buffer); + } +} +#else void dMsgUnit_c::setTag(int i_type, int i_value, char* o_buffer, bool param_4) { *o_buffer = 0; bool stack9 = false; @@ -103,7 +283,7 @@ void dMsgUnit_c::setTag(int i_type, int i_value, char* o_buffer, bool param_4) { } pSection = (bmg_section_t*)((u8*)pSection + pSection->size); } - + // This section is weird. The debug seems like entriesStr is outside the condition // but the normal build doesn't really work with that. Same for pInfoBlock->entries. @@ -120,7 +300,7 @@ void dMsgUnit_c::setTag(int i_type, int i_value, char* o_buffer, bool param_4) { #endif const char* uVar5; - if (i_value == 1 + if (i_value == 1 #ifdef DEBUG || (dComIfGs_getPalLanguage() == dSv_player_config_c::LANGAUGE_SPANISH && i_value == 0) #elif VERSION == VERSION_GCN_PAL @@ -162,6 +342,7 @@ void dMsgUnit_c::setTag(int i_type, int i_value, char* o_buffer, bool param_4) { } } } +#endif /* 804510D0-804510D8 0005D0 0004+04 1/1 5/5 0/0 .sbss g_msg_unit */ dMsgUnit_c g_msg_unit;