Merge branch 'main' into main

This commit is contained in:
CreateSource 2025-03-05 20:44:20 -05:00 committed by GitHub
commit e486d2c27b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
47 changed files with 3413 additions and 2932 deletions

View file

@ -1,16 +1,16 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x8F4 ObjectSetup = .text:0x000000A0; // type:function size:0x8F4
fn_1_994 = .text:0x00000994; // type:function size:0xE50 scope:local InstMain = .text:0x00000994; // type:function size:0xE50 scope:local
fn_1_17E4 = .text:0x000017E4; // type:function size:0xA28 scope:local InstPlayerMain = .text:0x000017E4; // type:function size:0xA28 scope:local
fn_1_220C = .text:0x0000220C; // type:function size:0x5F8 scope:local InstHostMain = .text:0x0000220C; // type:function size:0x5F8 scope:local
fn_1_2804 = .text:0x00002804; // type:function size:0x79C scope:local InstWinMain = .text:0x00002804; // type:function size:0x79C scope:local
fn_1_2FA0 = .text:0x00002FA0; // type:function size:0x11D4 scope:local InstNameMain = .text:0x00002FA0; // type:function size:0x11D4 scope:local
fn_1_4174 = .text:0x00004174; // type:function size:0x3B4 scope:local CameraOutView = .text:0x00004174; // type:function size:0x3B4 scope:local
fn_1_4528 = .text:0x00004528; // type:function size:0xB88 scope:local CameraDebug = .text:0x00004528; // type:function size:0xB88 scope:local
fn_1_50B0 = .text:0x000050B0; // type:function size:0xAB4 scope:local InstPicDraw = .text:0x000050B0; // type:function size:0xAB4 scope:local
fn_1_5B64 = .text:0x00005B64; // type:function size:0x340 scope:local ShadowDraw = .text:0x00005B64; // type:function size:0x340 scope:local
fn_1_5EA4 = .text:0x00005EA4; // type:function size:0x4B8 FontCreate = .text:0x00005EA4; // type:function size:0x4B8
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
@ -115,38 +115,38 @@ lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 scope:local data:2byte instMode = .data:0x00000000; // type:object size:0x2 scope:local data:2byte
lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 scope:local data:string lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 scope:local data:string
lbl_1_data_26 = .data:0x00000026; // type:object size:0x20 scope:local instGrpTbl = .data:0x00000026; // type:object size:0x20 scope:local
lbl_1_data_46 = .data:0x00000046; // type:object size:0x8 scope:local instPlayerNumTbl = .data:0x00000046; // type:object size:0x8 scope:local
lbl_1_data_50 = .data:0x00000050; // type:object size:0x20 scope:local instBoxFile = .data:0x00000050; // type:object size:0x20 scope:local
lbl_1_data_70 = .data:0x00000070; // type:object size:0x20 scope:local instBackFile = .data:0x00000070; // type:object size:0x20 scope:local
lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 scope:local data:string lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 scope:local data:string
lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 scope:local data:string lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 scope:local data:string
lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 scope:local data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 scope:local data:string
lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 scope:local data:string lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 scope:local data:string
lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 scope:local playerPosNameTbl = .data:0x000000B0; // type:object size:0x10 scope:local
lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x4 scope:local playerDelayTbl = .data:0x000000C0; // type:object size:0x4 scope:local
lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x48 scope:local hostFileTbl = .data:0x000000C4; // type:object size:0x48 scope:local
lbl_1_data_10C = .data:0x0000010C; // type:object size:0x18 scope:local hostSeTbl = .data:0x0000010C; // type:object size:0x18 scope:local
lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 scope:local data:float instNamePosTbl = .data:0x00000124; // type:object size:0x20 scope:local data:float
lbl_1_data_144 = .data:0x00000144; // type:object size:0x4 scope:local cameraMask$858 = .data:0x00000144; // type:object size:0x4 scope:local
lbl_1_data_148 = .data:0x00000148; // type:object size:0x4 scope:local lbl_1_data_148 = .data:0x00000148; // type:object size:0x4 scope:local
lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 scope:local data:float instPicRadius = .data:0x0000014C; // type:object size:0x4 scope:local data:float
lbl_1_data_150 = .data:0x00000150; // type:object size:0x318 scope:local FontCharFile = .data:0x00000150; // type:object size:0x318 scope:local
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte debugCamOnF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte instBusyF = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte instPage = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte LanguageNo = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:float instFov = .bss:0x0000000C; // type:object size:0x4 scope:local data:float
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte instMesOfs = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte instHostNo = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte instMgNo = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte instPicAnim = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte instBoxMdlId = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 scope:local data:float cameraZoom = .bss:0x00000020; // type:object size:0x8 data:float
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x18 scope:local data:float cameraPos = .bss:0x00000028; // type:object size:0x18 data:float
lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x18 scope:local data:float cameraRot = .bss:0x00000040; // type:object size:0x18 data:float
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 scope:local data:4byte objman = .bss:0x00000058; // type:object size:0x4 data:4byte
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte outViewObj = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte

View file

@ -1,34 +1,34 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x438 ObjectSetup = .text:0x000000A0; // type:function size:0x438
fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0 ResultMain = .text:0x000004D8; // type:function size:0x3B0 scope:local
fn_1_888 = .text:0x00000888; // type:function size:0x2F0 ResultIdle = .text:0x00000888; // type:function size:0x2F0 scope:local
fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4 ResultCreate = .text:0x00000B78; // type:function size:0x13D4 scope:local
fn_1_1F4C = .text:0x00001F4C; // type:function size:0xB90 ResultStatAdd = .text:0x00001F4C; // type:function size:0xB90 scope:local
fn_1_2ADC = .text:0x00002ADC; // type:function size:0x1074 ResultOrderApply = .text:0x00002ADC; // type:function size:0x1074 scope:local
fn_1_3B50 = .text:0x00003B50; // type:function size:0x15C ResultSprNumSet = .text:0x00003B50; // type:function size:0x15C scope:local
fn_1_3CAC = .text:0x00003CAC; // type:function size:0x15C ResultCoinAddNumSet = .text:0x00003CAC; // type:function size:0x15C scope:local
fn_1_3E08 = .text:0x00003E08; // type:function size:0x1D0 ResultOrderSet = .text:0x00003E08; // type:function size:0x1D0 scope:local
fn_1_3FD8 = .text:0x00003FD8; // type:function size:0x104 ResultBoardDataRead = .text:0x00003FD8; // type:function size:0x104
fn_1_40DC = .text:0x000040DC; // type:function size:0x160 ResultCoinAdd = .text:0x000040DC; // type:function size:0x160
fn_1_423C = .text:0x0000423C; // type:function size:0x3E0 ResultCoinNumGet = .text:0x0000423C; // type:function size:0x3E0
fn_1_461C = .text:0x0000461C; // type:function size:0x1E0 SaveExec = .text:0x0000461C; // type:function size:0x1E0 scope:local
fn_1_47FC = .text:0x000047FC; // type:function size:0x1084 ResultTeamExec = .text:0x000047FC; // type:function size:0x1084 scope:local
fn_1_5880 = .text:0x00005880; // type:function size:0xC10 CameraDebug = .text:0x00005880; // type:function size:0xC10
fn_1_6490 = .text:0x00006490; // type:function size:0x2D0 ResultBattleMain = .text:0x00006490; // type:function size:0x2D0
fn_1_6760 = .text:0x00006760; // type:function size:0xC4 ResultBattleIdle = .text:0x00006760; // type:function size:0xC4 scope:local
fn_1_6824 = .text:0x00006824; // type:function size:0xD20 ResultBattleCreate = .text:0x00006824; // type:function size:0xD20 scope:local
fn_1_7544 = .text:0x00007544; // type:function size:0xA54 ResultBattleStatAdd = .text:0x00007544; // type:function size:0xA54 scope:local
fn_1_7F98 = .text:0x00007F98; // type:function size:0x3A0 ResultBattleCoinAddShow = .text:0x00007F98; // type:function size:0x3A0 scope:local
fn_1_8338 = .text:0x00008338; // type:function size:0x14C ResultBattleCoinAddNumSet = .text:0x00008338; // type:function size:0x14C scope:local
fn_1_8484 = .text:0x00008484; // type:function size:0x1D4 ResultBattleOrderSet = .text:0x00008484; // type:function size:0x1D4 scope:local
fn_1_8658 = .text:0x00008658; // type:function size:0x84 CoinEffectInit = .text:0x00008658; // type:function size:0x84 scope:local
fn_1_86DC = .text:0x000086DC; // type:function size:0x2BC CoinEffectAdd = .text:0x000086DC; // type:function size:0x2BC scope:local
fn_1_8998 = .text:0x00008998; // type:function size:0x320 CoinEffectMain = .text:0x00008998; // type:function size:0x320 scope:local
fn_1_8CB8 = .text:0x00008CB8; // type:function size:0x340 ResultShadowDraw = .text:0x00008CB8; // type:function size:0x340 scope:local
fn_1_8FF8 = .text:0x00008FF8; // type:function size:0x284 StageModelCreate = .text:0x00008FF8; // type:function size:0x284
fn_1_927C = .text:0x0000927C; // type:function size:0x138 StageSpriteCreate = .text:0x0000927C; // type:function size:0x138
fn_1_93B4 = .text:0x000093B4; // type:function size:0x78 StageSpriteKill = .text:0x000093B4; // type:function size:0x78
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
@ -134,77 +134,77 @@ lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x2A4 resultModel = .data:0x00000000; // type:object size:0x2A4 scope:local
lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0xDC data:4byte resultSprite = .data:0x000002A4; // type:object size:0xDC scope:local data:4byte
lbl_1_data_380 = .data:0x00000380; // type:object size:0x2 data:2byte rankNewGrpId = .data:0x00000380; // type:object size:0x2 scope:local data:2byte
lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 scope:local data:string lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 scope:local data:string
lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x18 resultBackFile = .data:0x000003A8; // type:object size:0x18 scope:local
lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x18 resultLetterFile = .data:0x000003C0; // type:object size:0x18 scope:local
lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x20 resultStatPosTbl = .data:0x000003D8; // type:object size:0x20 scope:local
lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x10 resultRankPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local
lbl_1_data_408 = .data:0x00000408; // type:object size:0x30 resultCharPosTbl = .data:0x00000408; // type:object size:0x30 scope:local
lbl_1_data_438 = .data:0x00000438; // type:object size:0x10 resultCoinAddPosTbl = .data:0x00000438; // type:object size:0x10 scope:local
lbl_1_data_448 = .data:0x00000448; // type:object size:0x5 scope:local data:string lbl_1_data_448 = .data:0x00000448; // type:object size:0x5 scope:local data:string
lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 resultBoardDirTbl = .data:0x00000450; // type:object size:0x18 scope:local
lbl_1_data_468 = .data:0x00000468; // type:object size:0x20 resultCharMdlTbl = .data:0x00000468; // type:object size:0x20 scope:local
lbl_1_data_488 = .data:0x00000488; // type:object size:0x30 resultTeamCharPosTbl = .data:0x00000488; // type:object size:0x30 scope:local
lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 scope:local data:string lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 scope:local data:string
lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 scope:local data:string lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 scope:local data:string
lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB scope:local data:string lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB scope:local data:string
lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x270 resultBattleModel = .data:0x000004E8; // type:object size:0x270 scope:local
lbl_1_data_758 = .data:0x00000758; // type:object size:0x28 resultBattleSprite = .data:0x00000758; // type:object size:0x28 scope:local
lbl_1_data_780 = .data:0x00000780; // type:object size:0x50 resultBattleEffParMan = .data:0x00000780; // type:object size:0x50 scope:local
lbl_1_data_7D0 = .data:0x000007D0; // type:object size:0x20 resultStatPosTbl = .data:0x000007D0; // type:object size:0x20 scope:local
lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x30 playerPosTbl = .data:0x000007F0; // type:object size:0x30 scope:local
lbl_1_data_820 = .data:0x00000820; // type:object size:0x10 lbl_1_data_820 = .data:0x00000820; // type:object size:0x10
lbl_1_data_830 = .data:0x00000830; // type:object size:0x10 bomheiCubeMdlTbl = .data:0x00000830; // type:object size:0x10 scope:local
lbl_1_data_840 = .data:0x00000840; // type:object size:0x20 coinEffectYOfs = .data:0x00000840; // type:object size:0x20 scope:local
lbl_1_data_860 = .data:0x00000860; // type:object size:0x20 coinAddYOfs = .data:0x00000860; // type:object size:0x20 scope:local
lbl_1_data_880 = .data:0x00000880; // type:object size:0x20 coinBlankYOfs = .data:0x00000880; // type:object size:0x20 scope:local
lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x6 data:2byte coinNumXOfs = .data:0x000008A0; // type:object size:0x6 scope:local data:2byte
lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:float lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:string
lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:float lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:string
lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x60 cameraShakeOfs = .data:0x000008B8; // type:object size:0x60 scope:local
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte resultReorderF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte resultSkipF = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte resultTeamOrder = .bss:0x00000008; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x8 resultCharCubeMdlId = .bss:0x0000000A; // type:object size:0x8 scope:local
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x28 resultCoinAddSprId = .bss:0x00000012; // type:object size:0x28 scope:local
lbl_1_bss_3A = .bss:0x0000003A; // type:object size:0x8 resultCoinAddGrpId = .bss:0x0000003A; // type:object size:0x8 scope:local
lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x8 resultRank = .bss:0x00000042; // type:object size:0x8 scope:local
lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x8 resultOrder = .bss:0x0000004A; // type:object size:0x8 scope:local
lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte resultRankGrpId = .bss:0x00000052; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 resultPlayerCubeMdlId = .bss:0x00000054; // type:object size:0x8 scope:local
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x40 resultCubeMdlId = .bss:0x0000005C; // type:object size:0x40 scope:local
lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x2 data:2byte resultCrownGrpId = .bss:0x0000009C; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x30 resultNumSprId = .bss:0x0000009E; // type:object size:0x30 scope:local
lbl_1_bss_CE = .bss:0x000000CE; // type:object size:0x12 resultNumGrpId = .bss:0x000000CE; // type:object size:0x10 scope:local
lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte resultCrownAnim = .bss:0x000000E0; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x60 resultCharAnim = .bss:0x000000E4; // type:object size:0x60 scope:local
lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x14 resultRankAnim = .bss:0x00000144; // type:object size:0x14 scope:local
lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x10 statShadowMdlId = .bss:0x00000158; // type:object size:0x10 scope:local
lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x8 charShadowMdlId = .bss:0x00000168; // type:object size:0x8 scope:local
lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x2 data:2byte teamResultGrpId = .bss:0x00000170; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_172 = .bss:0x00000172; // type:object size:0x2 data:2byte resultBonusPlayer = .bss:0x00000172; // type:object size:0x2 data:2byte
lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte resultFastF = .bss:0x00000174; // type:object size:0x4 data:4byte
lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte resultReadEndF = .bss:0x00000178; // type:object size:0x4 data:4byte
lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte resultMgNo = .bss:0x0000017C; // type:object size:0x2 data:2byte
lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte objman = .bss:0x00000180; // type:object size:0x4 data:4byte
lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x4 data:4byte outViewObj = .bss:0x00000184; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte
lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte resultBattleSkipF = .bss:0x00000190; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680 coinEffectData = .bss:0x00000194; // type:object size:0x1680 scope:local
lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x8 resultBattleEffParManId = .bss:0x00001814; // type:object size:0x8 scope:local
lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC
lbl_1_bss_1828 = .bss:0x00001828; // type:object size:0x168 data:2byte coinEffectMdlId = .bss:0x00001828; // type:object size:0x168 scope:local data:2byte
lbl_1_bss_1990 = .bss:0x00001990; // type:object size:0x20 resultBattleCharMot = .bss:0x00001990; // type:object size:0x20 scope:local
lbl_1_bss_19B0 = .bss:0x000019B0; // type:object size:0x8 resultBattleCharMdl = .bss:0x000019B0; // type:object size:0x8 scope:local
lbl_1_bss_19B8 = .bss:0x000019B8; // type:object size:0x28 coinNumSprId = .bss:0x000019B8; // type:object size:0x28 scope:local
lbl_1_bss_19E0 = .bss:0x000019E0; // type:object size:0x8 coinNumGrpId = .bss:0x000019E0; // type:object size:0x8 scope:local
lbl_1_bss_19E8 = .bss:0x000019E8; // type:object size:0x8 resultBattleRank = .bss:0x000019E8; // type:object size:0x8 scope:local
lbl_1_bss_19F0 = .bss:0x000019F0; // type:object size:0x8 resultBattleOrder = .bss:0x000019F0; // type:object size:0x8 scope:local
lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20 lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20
lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2 lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2
lbl_1_bss_1A1A = .bss:0x00001A1A; // type:object size:0x42 data:2byte stageSprId = .bss:0x00001A1A; // type:object size:0x42 data:2byte
lbl_1_bss_1A5C = .bss:0x00001A5C; // type:object size:0x40 data:2byte stageMotId = .bss:0x00001A5C; // type:object size:0x40 data:2byte
lbl_1_bss_1A9C = .bss:0x00001A9C; // type:object size:0x40 data:2byte stageSprId = .bss:0x00001A9C; // type:object size:0x40 data:2byte

View file

@ -3668,7 +3668,7 @@ atanhi = .rodata:0x8011E9B8; // type:object size:0x20 scope:local
atanlo = .rodata:0x8011E9D8; // type:object size:0x20 scope:local atanlo = .rodata:0x8011E9D8; // type:object size:0x20 scope:local
aT = .rodata:0x8011E9F8; // type:object size:0x58 scope:local aT = .rodata:0x8011E9F8; // type:object size:0x58 scope:local
@62 = .rodata:0x8011EA50; // type:object size:0x1C scope:local data:string @62 = .rodata:0x8011EA50; // type:object size:0x1C scope:local data:string
lbl_8011EA70 = .rodata:0x8011EA70; // type:object size:0x20 lbl_8011EA70 = .rodata:0x8011EA70; // type:object size:0x1D data:string
gTRKMemMap = .rodata:0x8011EA90; // type:object size:0x10 data:4byte gTRKMemMap = .rodata:0x8011EA90; // type:object size:0x10 data:4byte
lbl_8011EAA0 = .rodata:0x8011EAA0; // type:object size:0x28 data:4byte lbl_8011EAA0 = .rodata:0x8011EAA0; // type:object size:0x28 data:4byte
lbl_8011EAC8 = .rodata:0x8011EAC8; // type:object size:0x28 data:4byte lbl_8011EAC8 = .rodata:0x8011EAC8; // type:object size:0x28 data:4byte

View file

@ -1,16 +1,16 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x8F4 ObjectSetup = .text:0x000000A0; // type:function size:0x8F4
fn_1_994 = .text:0x00000994; // type:function size:0xE50 InstMain = .text:0x00000994; // type:function size:0xE50 scope:local
fn_1_17E4 = .text:0x000017E4; // type:function size:0xA28 InstPlayerMain = .text:0x000017E4; // type:function size:0xA28 scope:local
fn_1_220C = .text:0x0000220C; // type:function size:0x5F8 InstHostMain = .text:0x0000220C; // type:function size:0x5F8 scope:local
fn_1_2804 = .text:0x00002804; // type:function size:0x79C InstWinMain = .text:0x00002804; // type:function size:0x79C scope:local
fn_1_2FA0 = .text:0x00002FA0; // type:function size:0x11D4 InstNameMain = .text:0x00002FA0; // type:function size:0x11D4 scope:local
fn_1_4174 = .text:0x00004174; // type:function size:0x3B4 CameraOutView = .text:0x00004174; // type:function size:0x3B4 scope:local
fn_1_4528 = .text:0x00004528; // type:function size:0xB88 CameraDebug = .text:0x00004528; // type:function size:0xB88 scope:local
fn_1_50B0 = .text:0x000050B0; // type:function size:0xAB4 InstPicDraw = .text:0x000050B0; // type:function size:0xAB4 scope:local
fn_1_5B64 = .text:0x00005B64; // type:function size:0x340 ShadowDraw = .text:0x00005B64; // type:function size:0x340 scope:local
fn_1_5EA4 = .text:0x00005EA4; // type:function size:0x3F8 FontCreate = .text:0x00005EA4; // type:function size:0x3F8
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float
@ -112,36 +112,38 @@ lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float
lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte instMode = .data:0x00000000; // type:object size:0x2 scope:local data:2byte
lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 data:string lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 scope:local data:string
lbl_1_data_26 = .data:0x00000026; // type:object size:0x20 instGrpTbl = .data:0x00000026; // type:object size:0x20 scope:local
lbl_1_data_46 = .data:0x00000046; // type:object size:0xA instPlayerNumTbl = .data:0x00000046; // type:object size:0x8 scope:local
lbl_1_data_50 = .data:0x00000050; // type:object size:0x20 instBoxFile = .data:0x00000050; // type:object size:0x20 scope:local
lbl_1_data_70 = .data:0x00000070; // type:object size:0x20 instBackFile = .data:0x00000070; // type:object size:0x20 scope:local
lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 data:string lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 scope:local data:string
lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 data:string lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 scope:local data:string
lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 scope:local data:string
lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 data:string lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 scope:local data:string
lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 playerPosNameTbl = .data:0x000000B0; // type:object size:0x10 scope:local
lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x4 playerDelayTbl = .data:0x000000C0; // type:object size:0x4 scope:local
lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x48 hostFileTbl = .data:0x000000C4; // type:object size:0x48 scope:local
lbl_1_data_10C = .data:0x0000010C; // type:object size:0x18 hostSeTbl = .data:0x0000010C; // type:object size:0x18 scope:local
lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 data:float instNamePosTbl = .data:0x00000124; // type:object size:0x20 scope:local data:float
lbl_1_data_144 = .data:0x00000144; // type:object size:0x8 cameraMask$858 = .data:0x00000144; // type:object size:0x4 scope:local
lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 data:float lbl_1_data_148 = .data:0x00000148; // type:object size:0x4 scope:local
lbl_1_data_150 = .data:0x00000150; // type:object size:0x4C0 instPicRadius = .data:0x0000014C; // type:object size:0x4 scope:local data:float
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte FontCharFile = .data:0x00000150; // type:object size:0x4C0 scope:local
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte debugCamOnF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte instBusyF = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte instPage = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float LanguageNo = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte instFov = .bss:0x0000000C; // type:object size:0x4 scope:local data:float
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte instMesOfs = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte instHostNo = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte instMgNo = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte instPicAnim = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 data:float instBoxMdlId = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x18 data:float cameraZoom = .bss:0x00000020; // type:object size:0x8 data:float
lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x18 data:float cameraPos = .bss:0x00000028; // type:object size:0x18 data:float
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte cameraRot = .bss:0x00000040; // type:object size:0x18 data:float
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x8 data:4byte objman = .bss:0x00000058; // type:object size:0x4 data:4byte
outViewObj = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte

View file

@ -1,34 +1,34 @@
_prolog = .text:0x00000000; // type:function size:0x54 scope:global _prolog = .text:0x00000000; // type:function size:0x54 scope:global
_epilog = .text:0x00000054; // type:function size:0x4C scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x438 ObjectSetup = .text:0x000000A0; // type:function size:0x438
fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0 ResultMain = .text:0x000004D8; // type:function size:0x3B0 scope:local
fn_1_888 = .text:0x00000888; // type:function size:0x2F0 ResultIdle = .text:0x00000888; // type:function size:0x2F0 scope:local
fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4 ResultCreate = .text:0x00000B78; // type:function size:0x13D4 scope:local
fn_1_1F4C = .text:0x00001F4C; // type:function size:0xB90 ResultStatAdd = .text:0x00001F4C; // type:function size:0xB90 scope:local
fn_1_2ADC = .text:0x00002ADC; // type:function size:0x1074 ResultOrderApply = .text:0x00002ADC; // type:function size:0x1074 scope:local
fn_1_3B50 = .text:0x00003B50; // type:function size:0x15C ResultSprNumSet = .text:0x00003B50; // type:function size:0x15C scope:local
fn_1_3CAC = .text:0x00003CAC; // type:function size:0x15C ResultCoinAddNumSet = .text:0x00003CAC; // type:function size:0x15C scope:local
fn_1_3E08 = .text:0x00003E08; // type:function size:0x1D0 ResultOrderSet = .text:0x00003E08; // type:function size:0x1D0 scope:local
fn_1_3FD8 = .text:0x00003FD8; // type:function size:0x104 ResultBoardDataRead = .text:0x00003FD8; // type:function size:0x104
fn_1_40DC = .text:0x000040DC; // type:function size:0x160 ResultCoinAdd = .text:0x000040DC; // type:function size:0x160
fn_1_423C = .text:0x0000423C; // type:function size:0x3E0 ResultCoinNumGet = .text:0x0000423C; // type:function size:0x3E0
fn_1_461C = .text:0x0000461C; // type:function size:0x1E0 SaveExec = .text:0x0000461C; // type:function size:0x1E0 scope:local
fn_1_47FC = .text:0x000047FC; // type:function size:0x1084 ResultTeamExec = .text:0x000047FC; // type:function size:0x1084 scope:local
fn_1_5880 = .text:0x00005880; // type:function size:0xC10 CameraDebug = .text:0x00005880; // type:function size:0xC10
fn_1_6490 = .text:0x00006490; // type:function size:0x2D0 ResultBattleMain = .text:0x00006490; // type:function size:0x2D0
fn_1_6760 = .text:0x00006760; // type:function size:0xC4 ResultBattleIdle = .text:0x00006760; // type:function size:0xC4 scope:local
fn_1_6824 = .text:0x00006824; // type:function size:0xD20 ResultBattleCreate = .text:0x00006824; // type:function size:0xD20 scope:local
fn_1_7544 = .text:0x00007544; // type:function size:0xA54 ResultBattleStatAdd = .text:0x00007544; // type:function size:0xA54 scope:local
fn_1_7F98 = .text:0x00007F98; // type:function size:0x3A0 ResultBattleCoinAddShow = .text:0x00007F98; // type:function size:0x3A0 scope:local
fn_1_8338 = .text:0x00008338; // type:function size:0x14C ResultBattleCoinAddNumSet = .text:0x00008338; // type:function size:0x14C scope:local
fn_1_8484 = .text:0x00008484; // type:function size:0x1D4 ResultBattleOrderSet = .text:0x00008484; // type:function size:0x1D4 scope:local
fn_1_8658 = .text:0x00008658; // type:function size:0x84 CoinEffectInit = .text:0x00008658; // type:function size:0x84 scope:local
fn_1_86DC = .text:0x000086DC; // type:function size:0x2BC CoinEffectAdd = .text:0x000086DC; // type:function size:0x2BC scope:local
fn_1_8998 = .text:0x00008998; // type:function size:0x320 CoinEffectMain = .text:0x00008998; // type:function size:0x320 scope:local
fn_1_8CB8 = .text:0x00008CB8; // type:function size:0x340 ResultShadowDraw = .text:0x00008CB8; // type:function size:0x340 scope:local
fn_1_8FF8 = .text:0x00008FF8; // type:function size:0x284 StageModelCreate = .text:0x00008FF8; // type:function size:0x284
fn_1_927C = .text:0x0000927C; // type:function size:0x138 StageSpriteCreate = .text:0x0000927C; // type:function size:0x138
fn_1_93B4 = .text:0x000093B4; // type:function size:0x78 StageSpriteKill = .text:0x000093B4; // type:function size:0x78
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
@ -94,7 +94,7 @@ lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:
lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float
lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float
lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:float lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float
lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float
lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float
lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float
@ -134,77 +134,77 @@ lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x2A4 resultModel = .data:0x00000000; // type:object size:0x2A4 scope:local
lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0xDC data:4byte resultSprite = .data:0x000002A4; // type:object size:0xDC scope:local data:4byte
lbl_1_data_380 = .data:0x00000380; // type:object size:0x2 data:2byte rankNewGrpId = .data:0x00000380; // type:object size:0x2 scope:local data:2byte
lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 scope:local data:string lbl_1_data_382 = .data:0x00000382; // type:object size:0x26 scope:local data:string
lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x18 resultBackFile = .data:0x000003A8; // type:object size:0x18 scope:local
lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x18 resultLetterFile = .data:0x000003C0; // type:object size:0x18 scope:local
lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x20 resultStatPosTbl = .data:0x000003D8; // type:object size:0x20 scope:local
lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x10 resultRankPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local
lbl_1_data_408 = .data:0x00000408; // type:object size:0x30 resultCharPosTbl = .data:0x00000408; // type:object size:0x30 scope:local
lbl_1_data_438 = .data:0x00000438; // type:object size:0x10 resultCoinAddPosTbl = .data:0x00000438; // type:object size:0x10 scope:local
lbl_1_data_448 = .data:0x00000448; // type:object size:0x8 scope:local lbl_1_data_448 = .data:0x00000448; // type:object size:0x5 scope:local data:string
lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 resultBoardDirTbl = .data:0x00000450; // type:object size:0x18 scope:local
lbl_1_data_468 = .data:0x00000468; // type:object size:0x20 resultCharMdlTbl = .data:0x00000468; // type:object size:0x20 scope:local
lbl_1_data_488 = .data:0x00000488; // type:object size:0x30 resultTeamCharPosTbl = .data:0x00000488; // type:object size:0x30 scope:local
lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 scope:local data:string lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0x11 scope:local data:string
lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 scope:local data:string lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0x11 scope:local data:string
lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB scope:local data:string lbl_1_data_4DA = .data:0x000004DA; // type:object size:0xB scope:local data:string
lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x270 resultBattleModel = .data:0x000004E8; // type:object size:0x270 scope:local
lbl_1_data_758 = .data:0x00000758; // type:object size:0x28 resultBattleSprite = .data:0x00000758; // type:object size:0x28 scope:local
lbl_1_data_780 = .data:0x00000780; // type:object size:0x50 resultBattleEffParMan = .data:0x00000780; // type:object size:0x50 scope:local
lbl_1_data_7D0 = .data:0x000007D0; // type:object size:0x20 resultStatPosTbl = .data:0x000007D0; // type:object size:0x20 scope:local
lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x30 playerPosTbl = .data:0x000007F0; // type:object size:0x30 scope:local
lbl_1_data_820 = .data:0x00000820; // type:object size:0x10 lbl_1_data_820 = .data:0x00000820; // type:object size:0x10
lbl_1_data_830 = .data:0x00000830; // type:object size:0x10 bomheiCubeMdlTbl = .data:0x00000830; // type:object size:0x10 scope:local
lbl_1_data_840 = .data:0x00000840; // type:object size:0x20 coinEffectYOfs = .data:0x00000840; // type:object size:0x20 scope:local
lbl_1_data_860 = .data:0x00000860; // type:object size:0x20 coinAddYOfs = .data:0x00000860; // type:object size:0x20 scope:local
lbl_1_data_880 = .data:0x00000880; // type:object size:0x20 coinBlankYOfs = .data:0x00000880; // type:object size:0x20 scope:local
lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x6 data:2byte coinNumXOfs = .data:0x000008A0; // type:object size:0x6 scope:local data:2byte
lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:float lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:string
lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:float lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:string
lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x60 cameraShakeOfs = .data:0x000008B8; // type:object size:0x60 scope:local
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte resultReorderF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte resultSkipF = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte resultTeamOrder = .bss:0x00000008; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x8 resultCharCubeMdlId = .bss:0x0000000A; // type:object size:0x8 scope:local
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x28 resultCoinAddSprId = .bss:0x00000012; // type:object size:0x28 scope:local
lbl_1_bss_3A = .bss:0x0000003A; // type:object size:0x8 resultCoinAddGrpId = .bss:0x0000003A; // type:object size:0x8 scope:local
lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x8 resultRank = .bss:0x00000042; // type:object size:0x8 scope:local
lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x8 resultOrder = .bss:0x0000004A; // type:object size:0x8 scope:local
lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte resultRankGrpId = .bss:0x00000052; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 resultPlayerCubeMdlId = .bss:0x00000054; // type:object size:0x8 scope:local
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x40 resultCubeMdlId = .bss:0x0000005C; // type:object size:0x40 scope:local
lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x2 data:2byte resultCrownGrpId = .bss:0x0000009C; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x30 resultNumSprId = .bss:0x0000009E; // type:object size:0x30 scope:local
lbl_1_bss_CE = .bss:0x000000CE; // type:object size:0x12 resultNumGrpId = .bss:0x000000CE; // type:object size:0x10 scope:local
lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte resultCrownAnim = .bss:0x000000E0; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x60 resultCharAnim = .bss:0x000000E4; // type:object size:0x60 scope:local
lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x14 resultRankAnim = .bss:0x00000144; // type:object size:0x14 scope:local
lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x10 statShadowMdlId = .bss:0x00000158; // type:object size:0x10 scope:local
lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x8 charShadowMdlId = .bss:0x00000168; // type:object size:0x8 scope:local
lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x2 data:2byte teamResultGrpId = .bss:0x00000170; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_172 = .bss:0x00000172; // type:object size:0x2 data:2byte resultBonusPlayer = .bss:0x00000172; // type:object size:0x2 data:2byte
lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte resultFastF = .bss:0x00000174; // type:object size:0x4 data:4byte
lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte resultReadEndF = .bss:0x00000178; // type:object size:0x4 data:4byte
lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte resultMgNo = .bss:0x0000017C; // type:object size:0x2 data:2byte
lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte objman = .bss:0x00000180; // type:object size:0x4 data:4byte
lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x4 data:4byte outViewObj = .bss:0x00000184; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte lbl_1_bss_188 = .bss:0x00000188; // type:object size:0x4 data:4byte
lbl_1_bss_190 = .bss:0x00000190; // type:object size:0x4 data:4byte resultBattleSkipF = .bss:0x00000190; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680 coinEffectData = .bss:0x00000194; // type:object size:0x1680 scope:local
lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x8 resultBattleEffParManId = .bss:0x00001814; // type:object size:0x8 scope:local
lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC
lbl_1_bss_1828 = .bss:0x00001828; // type:object size:0x168 data:2byte coinEffectMdlId = .bss:0x00001828; // type:object size:0x168 scope:local data:2byte
lbl_1_bss_1990 = .bss:0x00001990; // type:object size:0x20 resultBattleCharMot = .bss:0x00001990; // type:object size:0x20 scope:local
lbl_1_bss_19B0 = .bss:0x000019B0; // type:object size:0x8 resultBattleCharMdl = .bss:0x000019B0; // type:object size:0x8 scope:local
lbl_1_bss_19B8 = .bss:0x000019B8; // type:object size:0x28 coinNumSprId = .bss:0x000019B8; // type:object size:0x28 scope:local
lbl_1_bss_19E0 = .bss:0x000019E0; // type:object size:0x8 coinNumGrpId = .bss:0x000019E0; // type:object size:0x8 scope:local
lbl_1_bss_19E8 = .bss:0x000019E8; // type:object size:0x8 resultBattleRank = .bss:0x000019E8; // type:object size:0x8 scope:local
lbl_1_bss_19F0 = .bss:0x000019F0; // type:object size:0x8 resultBattleOrder = .bss:0x000019F0; // type:object size:0x8 scope:local
lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20 lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20
lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2 lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2
lbl_1_bss_1A1A = .bss:0x00001A1A; // type:object size:0x42 data:2byte stageSprId = .bss:0x00001A1A; // type:object size:0x42 data:2byte
lbl_1_bss_1A5C = .bss:0x00001A5C; // type:object size:0x40 data:2byte stageMotId = .bss:0x00001A5C; // type:object size:0x40 data:2byte
lbl_1_bss_1A9C = .bss:0x00001A9C; // type:object size:0x40 data:2byte stageSprId = .bss:0x00001A9C; // type:object size:0x40 data:2byte

View file

@ -238,12 +238,11 @@ cflags_msl = [
cflags_trk = [ cflags_trk = [
*cflags_base, *cflags_base,
"-use_lmw_stmw on", "-use_lmw_stmw on",
"-str reuse,pool,readonly", "-str reuse,readonly",
"-common off", "-common off",
"-sdata 0", "-sdata 0",
"-sdata2 0", "-sdata2 0",
"-inline auto,deferred", "-inline auto,deferred",
"-pool off",
"-enum min", "-enum min",
"-sdatathreshold 0" "-sdatathreshold 0"
] ]
@ -742,13 +741,13 @@ config.libs = [
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mainloop.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mainloop.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubevent.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubevent.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubinit.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubinit.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/msg.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msg.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/msgbuf.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msgbuf.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/serpoll.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/serpoll.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/usr_put.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/usr_put.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/dispatch.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/dispatch.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/msghndlr.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msghndlr.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/support.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/support.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mutex_TRK.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mutex_TRK.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/notify.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/notify.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/flush_cache.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/flush_cache.c"),
@ -761,8 +760,8 @@ config.libs = [
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/main_TRK.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/main_TRK.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/targcont.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/targcont.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/target_options.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/target_options.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/mslsupp.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mslsupp.c"),
], ],
}, },
MusyX( MusyX(
@ -1457,9 +1456,9 @@ config.libs = [
Rel( Rel(
"resultDll", "resultDll",
objects={ objects={
Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/resultDll/main.c"), Object(Matching, "REL/resultDll/main.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/resultDll/battle.c"), Object(Matching, "REL/resultDll/battle.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/resultDll/datalist.c"), Object(Matching, "REL/resultDll/datalist.c"),
}, },
), ),
Rel( Rel(

View file

@ -254,6 +254,9 @@ typedef struct ProcessorRestoreFlags_PPC {
void TRKSaveExtended1Block(); void TRKSaveExtended1Block();
void SetUseSerialIO(u8);
u8 GetUseSerialIO(void);
#define SPR_XER 1 #define SPR_XER 1
#define SPR_LR 8 #define SPR_LR 8
#define SPR_CTR 9 #define SPR_CTR 9

View file

@ -3,6 +3,6 @@
#include "game/minigame_seq.h" #include "game/minigame_seq.h"
s32 fn_1_5EA4(SeqWork *work, char *mess, s16 jp_flag); s32 FontCreate(SeqWork *work, char *mess, s16 jp_flag);
#endif #endif

View file

@ -7,7 +7,7 @@
#include "game/sprite.h" #include "game/sprite.h"
typedef struct datalist_model { typedef struct StageModel_s {
s32 datanum; s32 datanum;
u32 attr; u32 attr;
s16 type; s16 type;
@ -16,33 +16,33 @@ typedef struct datalist_model {
Vec pos; Vec pos;
Vec rot; Vec rot;
Vec scale; Vec scale;
} DataListModel; } StageModel;
typedef struct datalist_sprite { typedef struct StageSprite_s {
u32 datanum; u32 datanum;
s16 attr; s16 attr;
s16 prio; s16 prio;
float x; float x;
float y; float y;
GXColor color; GXColor color;
} DataListSprite; } StageSprite;
void fn_1_3FD8(void); void ResultBoardDataRead(void);
void fn_1_40DC(void); void ResultCoinAdd(void);
void fn_1_423C(s16 *data); void ResultCoinNumGet(s16 *coinNum);
void fn_1_6490(void); void ResultBattleMain(void);
void fn_1_8FF8(DataListModel *model_list); void StageModelCreate(StageModel *model_list);
void fn_1_927C(DataListSprite *sprite_list); void StageSpriteCreate(StageSprite *sprite_list);
void fn_1_93B4(void); void StageSpriteKill(void);
extern s16 lbl_1_bss_1A9C[32]; extern s16 stageMdlId[32];
extern s16 lbl_1_bss_1A5C[32]; extern s16 stageMotId[32];
extern s16 lbl_1_bss_1A1A[33]; extern s16 stageSprId[33];
extern s16 lbl_1_bss_1A18; extern s16 lbl_1_bss_1A18;
extern s32 lbl_1_bss_178; extern s32 resultReadEndF;
extern s32 lbl_1_bss_174; extern s32 resultFastF;
extern s16 lbl_1_bss_172; extern s16 resultBonusPlayer;
#endif #endif

View file

@ -8,7 +8,7 @@ typedef struct _TRK_Msg {
u8 _00[8]; u8 _00[8];
u32 m_msgLength; u32 m_msgLength;
u32 _0C; u32 _0C;
u32 m_msg; u8 m_msg[4]; // TODO: unknown array length
} TRK_Msg; } TRK_Msg;
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -12,7 +12,7 @@ DSError TRKInitializeMessageBuffers(void);
DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos); DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos);
void* TRKGetBuffer(int); void* TRKGetBuffer(int);
void TRKResetBuffer(TRKBuffer* msg, BOOL keepData); void TRKResetBuffer(TRKBuffer* msg, u8 keepData);
void* TRKGetBuffer(int idx); void* TRKGetBuffer(int idx);
void TRKReleaseBuffer(int idx); void TRKReleaseBuffer(int idx);
DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg); DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg);

View file

@ -15,12 +15,12 @@ DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2,
int p3); int p3);
DSError HandleOpenFileSupportRequest(const char* path, u8 replyError, DSError HandleOpenFileSupportRequest(const char* path, u8 replyError,
u32* param_3, DSIOResult* ioResult); u32* param_3, u8* ioResult);
DSError HandleCloseFileSupportRequest(int replyError, DSIOResult* ioResult); DSError HandleCloseFileSupportRequest(int replyError, u8* ioResult);
DSError HandlePositionFileSupportRequest(DSReplyError replyErr, u32* param_2, DSError HandlePositionFileSupportRequest(u32 replyErr, u32* param_2,
u8 param_3, DSIOResult* ioResult); u8 param_3, u8* ioResult);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -7,7 +7,7 @@
extern "C" { extern "C" {
#endif #endif
u32 TRKTargetCPUMinorType(void); u8 TRKTargetCPUMinorType(void);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -40,8 +40,8 @@ typedef struct system_state {
}; };
/* 0x09 */ s8 last5_effect; /* 0x09 */ s8 last5_effect;
/* 0x0A */ s8 player_curr; /* 0x0A */ s8 player_curr;
/* 0x0B */ u8 unk0B; /* 0x0B */ u8 storyCharBit;
/* 0x0C */ s8 unk0C; /* 0x0C */ s8 storyChar;
/* 0x0E */ s16 block_pos; /* 0x0E */ s16 block_pos;
/* 0x10 */ u8 ATTRIBUTE_ALIGN(4) board_data[32]; /* 0x10 */ u8 ATTRIBUTE_ALIGN(4) board_data[32];
/* 0x30 */ u8 mess_delay; /* 0x30 */ u8 mess_delay;
@ -137,9 +137,9 @@ typedef struct game_stat {
u8 story_continue : 1; u8 story_continue : 1;
u8 party_continue : 1; u8 party_continue : 1;
u8 open_w06 : 1; u8 open_w06 : 1;
u8 field10E_bit4 : 1; u8 veryHardUnlock : 1;
u8 field10E_bit5 : 1; u8 customPackEnable : 1;
u8 field10E_bit6 : 1; u8 musicAllF : 1;
}; };
/* 0x10F */ PauseBackupConfig story_pause; /* 0x10F */ PauseBackupConfig story_pause;
/* 0x110 */ PauseBackupConfig party_pause; /* 0x110 */ PauseBackupConfig party_pause;
@ -300,11 +300,6 @@ static inline s32 GWSaveModeGet(void)
return GWSystem.save_mode; return GWSystem.save_mode;
} }
static inline s32 GWTurnGet(void)
{
return GWSystem.turn;
}
static inline s32 GWBoardGet(void) static inline s32 GWBoardGet(void)
{ {
return GWSystem.board; return GWSystem.board;
@ -315,9 +310,14 @@ static inline s32 GWPlayerCurrGet(void)
return GWSystem.player_curr; return GWSystem.player_curr;
} }
static inline s32 GWUnkB1Get(void) static inline s32 GWStoryCharGet(void)
{ {
return GWSystem.unk0C; return GWSystem.storyChar;
}
static inline void GWStoryCharSet(s32 storyChar)
{
GWSystem.storyChar = storyChar;
} }
static inline s32 GWPlayerTeamGet(s32 player) static inline s32 GWPlayerTeamGet(s32 player)

View file

@ -2,7 +2,7 @@
#include "REL/instDll.h" #include "REL/instDll.h"
s32 lbl_1_data_150[0xC6] = { static s32 FontCharFile[0xC6] = {
0, 0,
0, 0,
0, 0,
@ -203,115 +203,115 @@ s32 lbl_1_data_150[0xC6] = {
DATA_MAKE_NUM(DATADIR_INST, 0x25), DATA_MAKE_NUM(DATADIR_INST, 0x25),
}; };
s32 fn_1_5EA4(SeqWork *work, char *mess, s16 jp_flag) s32 FontCreate(SeqWork *work, char *mess, s16 jp_flag)
{ {
char *var_r31; char *str;
s16 var_r30; s16 len;
s16 *var_r29; s16 *posY;
s16 var_r28; s16 charNum;
s32 *var_r27; s32 *fileTbl;
s16 var_r26; s16 i;
s16 var_r25; s16 grpNo;
s32 var_r24; s32 file;
s16 *var_r22; s16 *posX;
AnimData **var_r21; AnimData **animP;
s16 var_r20; s16 gid;
s16 var_r19; s16 sprid;
var_r27 = lbl_1_data_150; fileTbl = FontCharFile;
for (var_r25 = 0; var_r25 < 0x10; var_r25++) { for (grpNo = 0; grpNo < 0x10; grpNo++) {
if (work->spr_grp[var_r25] == -1) { if (work->spr_grp[grpNo] == -1) {
break; break;
} }
} }
if (var_r25 == 0x10) { if (grpNo == 0x10) {
return -1; return -1;
} }
var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190); animP = HuMemDirectMalloc(HEAP_SYSTEM, 0x190);
var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); posX = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8);
var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); posY = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8);
for (var_r31 = mess, var_r30 = 0, var_r28 = 0; var_r31[0] != 0; var_r31++) { for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) {
if (var_r31[0] == 0x20 || var_r31[0] == 0x10) { if (str[0] == 0x20 || str[0] == 0x10) {
var_r30 += 0xE; len += 0xE;
} }
else if (var_r31[0] < 0x30) { else if (str[0] < 0x30) {
} }
else if (var_r31[0] == 0x80) { else if (str[0] == 0x80) {
} }
else if (var_r31[0] == 0x81) { else if (str[0] == 0x81) {
} }
else { else {
if (var_r31[1] == 0x80) { if (str[1] == 0x80) {
if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) { if ((str[0] >= 0x96) && (str[0] <= 0xA4)) {
var_r24 = var_r27[var_r31[0] + 0x6A]; file = fileTbl[str[0] + 0x6A];
} }
else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
var_r24 = var_r27[var_r31[0] + 0x65]; file = fileTbl[str[0] + 0x65];
} }
else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) { else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) {
var_r24 = var_r27[var_r31[0] + 0x43]; file = fileTbl[str[0] + 0x43];
} }
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
var_r24 = var_r27[var_r31[0] + 0x3E]; file = fileTbl[str[0] + 0x3E];
} }
} }
else if (var_r31[1] == 0x81) { else if (str[1] == 0x81) {
if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
var_r24 = var_r27[var_r31[0] + 0x6A]; file = fileTbl[str[0] + 0x6A];
} }
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
var_r24 = var_r27[var_r31[0] + 0x43]; file = fileTbl[str[0] + 0x43];
} }
} }
else { else {
var_r24 = var_r27[var_r31[0]]; file = fileTbl[str[0]];
} }
var_r21[var_r28] = HuSprAnimReadFile(var_r24); animP[charNum] = HuSprAnimReadFile(file);
var_r22[var_r28] = var_r30; posX[charNum] = len;
if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) { if ((str[0] >= 0x61) && (str[0] <= 0x7A)) {
var_r29[var_r28] = 2; posY[charNum] = 2;
var_r30 += 0x12; len += 0x12;
} }
else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) { else if ((str[0] == 0xC2) || (str[0] == 0xC3)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x12; len += 0x12;
} }
else if (var_r31[0] == 0x5C || var_r31[0] == 0x85) { else if (str[0] == 0x5C || str[0] == 0x85) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 8; len += 8;
} }
else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) { else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) {
var_r29[var_r28] = 4; posY[charNum] = 4;
var_r30 += 0x18; len += 0x18;
} }
else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) { else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) {
var_r29[var_r28] = 4; posY[charNum] = 4;
var_r30 += 0x18; len += 0x18;
} }
else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) { else if ((str[0] == 0x3D) || (str[0] == 0x84)) {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x14; len += 0x14;
} }
else { else {
var_r29[var_r28] = 0; posY[charNum] = 0;
var_r30 += 0x1C; len += 0x1C;
} }
var_r28++; charNum++;
} }
} }
var_r20 = HuSprGrpCreate(var_r28); gid = HuSprGrpCreate(charNum);
work->spr_grp[var_r25] = var_r20; work->spr_grp[grpNo] = gid;
work->alt_word_len = var_r30; work->alt_word_len = len;
var_r30 = (var_r30 / 2) - 0xE; len = (len / 2) - 0xE;
for (var_r26 = 0; var_r26 < var_r28; var_r26++) { for (i = 0; i < charNum; i++) {
var_r19 = HuSprCreate(var_r21[var_r26], 0, 0); sprid = HuSprCreate(animP[i], 0, 0);
HuSprGrpMemberSet(var_r20, var_r26, var_r19); HuSprGrpMemberSet(gid, i, sprid);
HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]); HuSprPosSet(gid, i, posX[i] - len, posY[i]);
} }
work->word_len = var_r28; work->word_len = charNum;
HuMemDirectFree(var_r21); HuMemDirectFree(animP);
HuMemDirectFree(var_r22); HuMemDirectFree(posX);
HuMemDirectFree(var_r29); HuMemDirectFree(posY);
return var_r25; return grpNo;
} }

File diff suppressed because it is too large Load diff

View file

@ -200,8 +200,8 @@ void fn_1_658C(Process *arg0)
CharKill(-1); CharKill(-1);
} }
lbl_1_bss_A8[4] = GWGameStat.open_w06; lbl_1_bss_A8[4] = GWGameStat.open_w06;
lbl_1_bss_A8[5] = GWGameStat.field10E_bit4; lbl_1_bss_A8[5] = GWGameStat.veryHardUnlock;
lbl_1_bss_A8[6] = GWGameStat.field10E_bit5; lbl_1_bss_A8[6] = GWGameStat.customPackEnable;
switch (lbl_1_bss_A8[0]) { switch (lbl_1_bss_A8[0]) {
case 0: case 0:
HuAudSndGrpSetSet(7); HuAudSndGrpSetSet(7);
@ -340,11 +340,9 @@ void fn_1_6C4C(void)
print8(var_r30, var_r29 + 0xAA, 1.0f, "MODE:%d MAP:%d", lbl_1_bss_A8[0], lbl_1_bss_A8[2]); print8(var_r30, var_r29 + 0xAA, 1.0f, "MODE:%d MAP:%d", lbl_1_bss_A8[0], lbl_1_bss_A8[2]);
print8(var_r30, var_r29 + 0xBE, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); print8(var_r30, var_r29 + 0xBE, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
for (var_r31 = 0; var_r31 < 4; var_r31++) { for (var_r31 = 0; var_r31 < 4; var_r31++) {
s32 spC;
s32 sp8 = lbl_1_bss_3114[var_r31].unk_6C;
spC = lbl_1_bss_3114[var_r31].unk_68;
print8(var_r30, var_r29 + 0xC8 + (var_r31 * 0xA), 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", var_r31, lbl_1_bss_3114[var_r31].unk_58, print8(var_r30, var_r29 + 0xC8 + (var_r31 * 0xA), 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", var_r31, lbl_1_bss_3114[var_r31].unk_58,
lbl_1_bss_3114[var_r31].unk_5C, lbl_1_bss_3114[var_r31].unk_60, lbl_1_bss_3114[var_r31].unk_64); lbl_1_bss_3114[var_r31].unk_5C, lbl_1_bss_3114[var_r31].unk_60, lbl_1_bss_3114[var_r31].unk_64, lbl_1_bss_3114[var_r31].unk_6C, lbl_1_bss_3114[var_r31].unk_68);
} }
print8(var_r30, var_r29 + 0xF0, 1.0f, "NO) FG0:FG1:FG2:FG3"); print8(var_r30, var_r29 + 0xF0, 1.0f, "NO) FG0:FG1:FG2:FG3");
for (var_r31 = 0; var_r31 < 4; var_r31++) { for (var_r31 = 0; var_r31 < 4; var_r31++) {
@ -2693,12 +2691,6 @@ void fn_1_E71C(s32 arg0)
} }
} }
inline void fn_1_E874_inline(void)
{
s32 sp18 = lbl_1_bss_3114[0].unk_68;
GWSystem.unk0C = sp18;
}
void fn_1_E874(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) void fn_1_E874(omObjData *arg0, MentDllUnkBss35BCStruct *arg1)
{ {
s32 var_r31; s32 var_r31;
@ -2757,7 +2749,7 @@ void fn_1_E874(omObjData *arg0, MentDllUnkBss35BCStruct *arg1)
var_r18 = 0; var_r18 = 0;
} }
BoardStoryConfigSet(var_r24, var_r18); BoardStoryConfigSet(var_r24, var_r18);
fn_1_E874_inline(); GWStoryCharSet(lbl_1_bss_3114[0].unk_68);
// looks a bit similar to fn_1_7304 // looks a bit similar to fn_1_7304
for (var_r31 = 1; var_r31 < 4; var_r31++) { for (var_r31 = 1; var_r31 < 4; var_r31++) {
lbl_1_bss_3114[var_r31].unk_68 = -1; lbl_1_bss_3114[var_r31].unk_68 = -1;

View file

@ -1075,7 +1075,7 @@ s32 fn_1_1D688(StructBss8_24 *arg0)
var_r28 = 0; var_r28 = 0;
var_r26 = arg0->unk64; var_r26 = arg0->unk64;
if (HuPadStkX[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 2)) { if (HuPadStkX[lbl_1_bss_1E10->unk6C] >= 5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 2)) {
if (GWGameStat.field10E_bit4 == 1) { if (GWGameStat.veryHardUnlock == 1) {
arg0->unk64++; arg0->unk64++;
var_r28 = 1; var_r28 = 1;
if (arg0->unk64 > 3) { if (arg0->unk64 > 3) {
@ -1091,7 +1091,7 @@ s32 fn_1_1D688(StructBss8_24 *arg0)
} }
} }
else if (HuPadStkX[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 1)) { else if (HuPadStkX[lbl_1_bss_1E10->unk6C] <= -5 || (HuPadBtn[lbl_1_bss_1E10->unk6C] & 1)) {
if (GWGameStat.field10E_bit4 == 1) { if (GWGameStat.veryHardUnlock == 1) {
arg0->unk64--; arg0->unk64--;
var_r28 = -1; var_r28 = -1;
if (arg0->unk64 < 0) { if (arg0->unk64 < 0) {

View file

@ -930,10 +930,10 @@ void fn_1_4010(void)
} }
} }
if (spA[0] >= 4 && spA[1] >= 3 && spA[2] >= 3 && spA[3] >= 2) { if (spA[0] >= 4 && spA[1] >= 3 && spA[2] >= 3 && spA[3] >= 2) {
GWGameStat.field10E_bit5 = 1; GWGameStat.customPackEnable = 1;
} }
else { else {
GWGameStat.field10E_bit5 = 0; GWGameStat.customPackEnable = 0;
} }
pos2D = lbl_1_data_40[2]; pos2D = lbl_1_data_40[2];
pos2D.z = 800; pos2D.z = 800;

View file

@ -1859,7 +1859,7 @@ void fn_1_A8C0(s16 boxno)
SLLoadBoardStory(); SLLoadBoardStory();
lbl_1_bss_EE[boxno] = GWGameStat.total_stars; lbl_1_bss_EE[boxno] = GWGameStat.total_stars;
lbl_1_bss_D0[boxno] = GWGameStat.create_time; lbl_1_bss_D0[boxno] = GWGameStat.create_time;
lbl_1_bss_E8[boxno] = GWSystem.unk0C; lbl_1_bss_E8[boxno] = GWSystem.storyChar;
lbl_1_bss_C4[boxno] = GWGameStat.story_continue; lbl_1_bss_C4[boxno] = GWGameStat.story_continue;
lbl_1_bss_B8[boxno] = GWGameStat.party_continue; lbl_1_bss_B8[boxno] = GWGameStat.party_continue;
if (GWGameStat.story_continue) { if (GWGameStat.story_continue) {

View file

@ -2441,7 +2441,7 @@ s32 fn_1_19A98(MpexDllUnkStruct4 *arg0)
goto block_2; goto block_2;
} }
} }
if (GWGameStat.field10E_bit4 == 1) { if (GWGameStat.veryHardUnlock == 1) {
arg0->unk_54++; arg0->unk_54++;
var_r28 = 1; var_r28 = 1;
if (arg0->unk_54 > 3) { if (arg0->unk_54 > 3) {
@ -2457,7 +2457,7 @@ s32 fn_1_19A98(MpexDllUnkStruct4 *arg0)
goto block_1; goto block_1;
block_2: block_2:
if (HuPadStkX[lbl_1_bss_45C->unk_58] <= -5 || HuPadBtn[lbl_1_bss_45C->unk_58] & PAD_BUTTON_LEFT) { if (HuPadStkX[lbl_1_bss_45C->unk_58] <= -5 || HuPadBtn[lbl_1_bss_45C->unk_58] & PAD_BUTTON_LEFT) {
if (GWGameStat.field10E_bit4 == 1) { if (GWGameStat.veryHardUnlock == 1) {
arg0->unk_54--; arg0->unk_54--;
var_r28 = -1; var_r28 = -1;
if (arg0->unk_54 < 0) { if (arg0->unk_54 < 0) {

View file

@ -105,7 +105,7 @@ void fn_1_188F0(Process *arg0, s32 arg1)
{ {
lbl_1_bss_B38 = arg0; lbl_1_bss_B38 = arg0;
if (GWSystem.diff_story == 2) { if (GWSystem.diff_story == 2) {
GWGameStat.field10E_bit4 = TRUE; GWGameStat.veryHardUnlock = TRUE;
} }
lbl_1_bss_C0C.unk0C = arg1; lbl_1_bss_C0C.unk0C = arg1;
fn_1_C30(); fn_1_C30();
@ -298,7 +298,7 @@ void fn_1_19334(void)
Hu3DModelAttrSet(lbl_1_bss_B94.unk00->model[1], 1); Hu3DModelAttrSet(lbl_1_bss_B94.unk00->model[1], 1);
HuAudSeqFadeOut(lbl_1_bss_78[0], 100); HuAudSeqFadeOut(lbl_1_bss_78[0], 100);
lbl_1_bss_B3C = 2; lbl_1_bss_B3C = 2;
GWGameStat.field10E_bit6 = TRUE; GWGameStat.musicAllF = TRUE;
WipeColorSet(0, 0, 0); WipeColorSet(0, 0, 0);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
while (WipeStatGet()) { while (WipeStatGet()) {
@ -406,8 +406,8 @@ void fn_1_199A0(void)
HuPrcVSleep(); HuPrcVSleep();
} }
fn_1_BE8(60); fn_1_BE8(60);
var_r28 = GWUnkB1Get(); var_r28 = GWStoryCharGet();
GWSystem.unk0B |= 1 << var_r28; GWSystem.storyCharBit |= 1 << var_r28;
if (SLSaveFlagGet() == 1) { if (SLSaveFlagGet() == 1) {
HuWinInit(1); HuWinInit(1);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22));

View file

@ -171,7 +171,7 @@ void fn_1_4F4(void) {
case 1: case 1:
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (GWPlayerCfg[i].character == GWUnkB1Get()) { if (GWPlayerCfg[i].character == GWStoryCharGet()) {
break; break;
} }
} }
@ -179,7 +179,7 @@ void fn_1_4F4(void) {
break; break;
case 2: case 2:
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (GWPlayerCfg[i].character == GWUnkB1Get()) { if (GWPlayerCfg[i].character == GWStoryCharGet()) {
break; break;
} }
} }

View file

@ -619,7 +619,7 @@ void fn_1_17570(void) {
} else { } else {
fn_1_159A4(); fn_1_159A4();
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (lbl_1_bss_1A0C.unk38[i].unk10 != GWUnkB1Get()) { if (lbl_1_bss_1A0C.unk38[i].unk10 != GWStoryCharGet()) {
continue; continue;
} }
_SetFlag(9); _SetFlag(9);

View file

@ -575,15 +575,13 @@ void fn_1_13A0(void)
GWPlayerCfg[0].character = itemno/6; GWPlayerCfg[0].character = itemno/6;
{ {
s32 i; s32 i;
s32 character;
for(i=1; i<4; i++) { for(i=1; i<4; i++) {
GWPlayerCfg[i].character = GWPlayerCfg[i-1].character+1; GWPlayerCfg[i].character = GWPlayerCfg[i-1].character+1;
if(GWPlayerCfg[i].character > GW_CHARACTER_MAX) { if(GWPlayerCfg[i].character > GW_CHARACTER_MAX) {
GWPlayerCfg[i].character = 0; GWPlayerCfg[i].character = 0;
} }
} }
character = GWPlayerCfg[0].character; GWStoryCharSet(GWPlayerCfg[0].character);
GWSystem.unk0C = character;
GWPlayer[0].character = GWPlayerCfg[0].character; GWPlayer[0].character = GWPlayerCfg[0].character;
GWPlayer[1].character = GWPlayerCfg[1].character; GWPlayer[1].character = GWPlayerCfg[1].character;
GWPlayer[2].character = GWPlayerCfg[2].character; GWPlayer[2].character = GWPlayerCfg[2].character;

View file

@ -147,7 +147,7 @@ void fn_1_488(void) {
switch (omovlevtno) { switch (omovlevtno) {
case 0: case 0:
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (GWPlayerCfg[i].character == GWUnkB1Get()) { if (GWPlayerCfg[i].character == GWStoryCharGet()) {
break; break;
} }
} }
@ -155,7 +155,7 @@ void fn_1_488(void) {
break; break;
case 1: case 1:
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (GWPlayerCfg[i].character == GWUnkB1Get()) { if (GWPlayerCfg[i].character == GWStoryCharGet()) {
break; break;
} }
} }

View file

@ -513,9 +513,9 @@ omObjData *OptionSoundCreate(void)
for (i = 0; i < NUM_BOARDS; i++) { for (i = 0; i < NUM_BOARDS; i++) {
musicPageOn[i + 3] = (GWGameStat.board_play_count[i] != 0) ? TRUE : FALSE; musicPageOn[i + 3] = (GWGameStat.board_play_count[i] != 0) ? TRUE : FALSE;
} }
musicPageOn[11] = (GWGameStat.field10E_bit6 != 0) ? TRUE : FALSE; musicPageOn[11] = (GWGameStat.musicAllF != 0) ? TRUE : FALSE;
musicPageOn[12] = (GWGameStat.field10E_bit6 != 0) ? TRUE : FALSE; musicPageOn[12] = (GWGameStat.musicAllF != 0) ? TRUE : FALSE;
musicPageOn[13] = (GWGameStat.field10E_bit6 != 0) ? TRUE : FALSE; musicPageOn[13] = (GWGameStat.musicAllF != 0) ? TRUE : FALSE;
return object; return object;
} }

View file

@ -19,7 +19,9 @@
#include "REL/resultdll.h" #include "REL/resultdll.h"
DataListModel lbl_1_data_4E8[] = { { DATA_MAKE_NUM(DATADIR_RESULT, 0x08), 0, 0, -1, -1, { -300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, #define COIN_EFFECT_MAX 180
static StageModel resultBattleModel[] = { { DATA_MAKE_NUM(DATADIR_RESULT, 0x08), 0, 0, -1, -1, { -300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } },
{ DATA_MAKE_NUM(DATADIR_RESULT, 0x09), 0, 0, -1, -1, { -100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, { DATA_MAKE_NUM(DATADIR_RESULT, 0x09), 0, 0, -1, -1, { -100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } },
{ DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), 0, 0, -1, -1, { 100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, { DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), 0, 0, -1, -1, { 100, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } },
{ DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), 0, 0, -1, -1, { 300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } }, { DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), 0, 0, -1, -1, { 300, 0, 0 }, { 0, 0, 0 }, { 0.9f, 0.9f, 0.9f } },
@ -32,12 +34,12 @@ DataListModel lbl_1_data_4E8[] = { { DATA_MAKE_NUM(DATADIR_RESULT, 0x08), 0, 0,
{ DATA_MAKE_NUM(DATADIR_RESULT, 0x0F), 0x40000002, 0, -1, -1, { 5000, 0, 0 }, { 0, 0, 0 }, { 2.0f, 2.0f, 2.0f } }, { DATA_MAKE_NUM(DATADIR_RESULT, 0x0F), 0x40000002, 0, -1, -1, { 5000, 0, 0 }, { 0, 0, 0 }, { 2.0f, 2.0f, 2.0f } },
{ -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } } }; { -1, 0, 0, -1, -1, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 } } };
DataListSprite lbl_1_data_758[] = { static StageSprite resultBattleSprite[] = {
{ DATA_MAKE_NUM(DATADIR_RESULT, 0x43), 0, 10, 288, 240, { 255, 255, 255, 255 } }, { DATA_MAKE_NUM(DATADIR_RESULT, 0x43), 0, 10, 288, 240, { 255, 255, 255, 255 } },
{ 0, 0, 0, 0, 0, { 0, 0, 0, 0 } }, { 0, 0, 0, 0, 0, { 0, 0, 0, 0 } },
}; };
HsfanimStruct00 lbl_1_data_780 = { 80, { 0, 0 }, 3, 30, 90, { 0, -0.2, 0 }, 5.0f, 0.95f, 10.0f, 0.995f, 2, static HsfanimStruct00 resultBattleEffParMan = { 80, { 0, 0 }, 3, 30, 90, { 0, -0.2, 0 }, 5.0f, 0.95f, 10.0f, 0.995f, 2,
{ {
{ 255, 192, 112, 255 }, { 255, 192, 112, 255 },
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 },
@ -49,9 +51,10 @@ HsfanimStruct00 lbl_1_data_780 = { 80, { 0, 0 }, 3, 30, 90, { 0, -0.2, 0 }, 5.0f
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 },
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 },
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 },
} }; }
};
s16 lbl_1_data_7D0[] = { static s16 resultStatPosTbl[] = {
320, 320,
132, 132,
500, 500,
@ -70,103 +73,103 @@ s16 lbl_1_data_7D0[] = {
387, 387,
}; };
Vec lbl_1_data_7F0[] = { { -300, 270, 0 }, { -100, 180, 500 }, { 100, 90, 500 }, { 300, 0, 500 } }; static Vec playerPosTbl[] = { { -300, 270, 0 }, { -100, 180, 500 }, { 100, 90, 500 }, { 300, 0, 500 } };
s16 lbl_1_data_820[] = { -284, 148, -84, 233, 116, 318, 316, 403 }; s16 lbl_1_data_820[] = { -284, 148, -84, 233, 116, 318, 316, 403 };
s32 lbl_1_data_830[] = { DATA_MAKE_NUM(DATADIR_RESULT, 0x08), DATA_MAKE_NUM(DATADIR_RESULT, 0x09), DATA_MAKE_NUM(DATADIR_RESULT, 0x0A), static s32 bomheiCubeMdlTbl[] = { DATA_MAKE_NUM(DATADIR_RESULT, 0x08), DATA_MAKE_NUM(DATADIR_RESULT, 0x09), DATA_MAKE_NUM(DATADIR_RESULT, 0x0A),
DATA_MAKE_NUM(DATADIR_RESULT, 0x0A) }; DATA_MAKE_NUM(DATADIR_RESULT, 0x0A) };
float lbl_1_data_840[] = { 130, 150, 170, 150, 150, 130, 170, 190 }; static float coinEffectYOfs[] = { 130, 150, 170, 150, 150, 130, 170, 190 };
float lbl_1_data_860[] = { 130, 150, 180, 150, 150, 170, 180, 210 }; static float coinAddYOfs[] = { 130, 150, 180, 150, 150, 170, 180, 210 };
float lbl_1_data_880[] = { 140, 160, 180, 150, 150, 120, 180, 210 }; static float coinBlankYOfs[] = { 140, 160, 180, 150, 150, 120, 180, 210 };
s16 lbl_1_data_8A0[] = { 8, 0, -8 }; static s16 coinNumXOfs[] = { 8, 0, -8 };
typedef struct struct_unk194 { typedef struct CoinEffect_s {
s16 unk0; s16 playerNo;
s16 unk2; s16 rank;
Vec unk4; Vec pos;
Vec unk10; Vec rotVel;
float unk1C; float velY;
} StructUnk194; } CoinEffect;
u8 lbl_1_bss_19F8[32]; u8 lbl_1_bss_19F8[32];
s16 lbl_1_bss_19F0[4]; static s16 resultBattleOrder[4];
s16 lbl_1_bss_19E8[4]; static s16 resultBattleRank[4];
s16 lbl_1_bss_19E0[4]; static s16 coinNumGrpId[4];
s16 lbl_1_bss_19B8[4][5]; static s16 coinNumSprId[4][5];
s16 lbl_1_bss_19B0[4]; static s16 resultBattleCharMdl[4];
s16 lbl_1_bss_1990[4][4]; static s16 resultBattleCharMot[4][4];
s16 lbl_1_bss_1828[180]; static s16 coinEffectMdlId[COIN_EFFECT_MAX];
s16 lbl_1_bss_181C[6]; s16 lbl_1_bss_181C[6];
s16 lbl_1_bss_1814[4]; static s16 resultBattleEffParManId[4];
StructUnk194 lbl_1_bss_194[180]; static CoinEffect coinEffectData[COIN_EFFECT_MAX];
s32 lbl_1_bss_190; static s32 resultBattleSkipF;
void fn_1_6760(void); static void ResultBattleIdle(void);
void fn_1_6824(void); static void ResultBattleCreate(void);
void fn_1_7544(void); static void ResultBattleStatAdd(void);
void fn_1_6490(void) void ResultBattleMain(void)
{ {
s16 player; s16 playerNo;
s16 i; s16 i;
s16 window; s16 winId;
s16 button; s16 btnDown;
Process *process = HuPrcCurrentGet(); Process *proc = HuPrcCurrentGet();
HuAudSeqPlay(10); HuAudSeqPlay(10);
for (i = player = 0; i < 4; i++) { for (i = playerNo = 0; i < 4; i++) {
if (GWPlayerCfg[i].iscom) { if (GWPlayerCfg[i].iscom) {
player++; playerNo++;
} }
} }
if (player == 4) { if (playerNo == 4) {
lbl_1_bss_190 = 1; resultBattleSkipF = 1;
} }
else { else {
lbl_1_bss_190 = 0; resultBattleSkipF = 0;
} }
fn_1_6824(); ResultBattleCreate();
HuPrcChildCreate(fn_1_6760, 100, 8192, 0, process); HuPrcChildCreate(ResultBattleIdle, 100, 8192, 0, proc);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20);
while (WipeStatGet()) { while (WipeStatGet()) {
HuPrcVSleep(); HuPrcVSleep();
} }
lbl_1_bss_178 = 0; resultReadEndF = 0;
HuPrcChildCreate(fn_1_3FD8, 100, 12288, 0, process); HuPrcChildCreate(ResultBoardDataRead, 100, 12288, 0, proc);
HuPrcSleep(10); HuPrcSleep(10);
if (!lbl_1_bss_174) { if (!resultFastF) {
HuPrcSleep(20); HuPrcSleep(20);
} }
fn_1_7544(); ResultBattleStatAdd();
fn_1_40DC(); ResultCoinAdd();
window = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0); winId = HuWinCreate(-10000.0f, 400.0f, 320, 40, 0);
HuWinMesSpeedSet(window, 0); HuWinMesSpeedSet(winId, 0);
HuWinBGTPLvlSet(window, 0); HuWinBGTPLvlSet(winId, 0);
HuWinAttrSet(window, 0x800); HuWinAttrSet(winId, 0x800);
HuWinMesSet(window, MAKE_MESSID(0x24, 0x07)); HuWinMesSet(winId, MAKE_MESSID(0x24, 0x07));
i = 0; i = 0;
while (1) { while (1) {
if (lbl_1_bss_190 && i > 120) { if (resultBattleSkipF && i > 120) {
break; break;
} }
for (player = button = 0; player < 4; player++) { for (playerNo = btnDown = 0; playerNo < 4; playerNo++) {
if (!GWPlayerCfg[player].iscom) { if (!GWPlayerCfg[playerNo].iscom) {
button |= HuPadBtnDown[GWPlayerCfg[player].pad_idx]; btnDown |= HuPadBtnDown[GWPlayerCfg[playerNo].pad_idx];
} }
} }
if (button & PAD_BUTTON_A) { if (btnDown & PAD_BUTTON_A) {
HuAudFXPlay(28); HuAudFXPlay(28);
break; break;
} }
HuPrcVSleep(); HuPrcVSleep();
i++; i++;
} }
HuWinKill(window); HuWinKill(winId);
while (!lbl_1_bss_178) { while (!resultReadEndF) {
HuPrcVSleep(); HuPrcVSleep();
} }
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
@ -183,45 +186,45 @@ void fn_1_6490(void)
} }
} }
void fn_1_6760(void) static void ResultBattleIdle(void)
{ {
Vec temp; Vec temp;
temp.z = 0.0f; temp.z = 0.0f;
temp.y = 0.0f; temp.y = 0.0f;
temp.x = 0.0f; temp.x = 0.0f;
while (1) { while (1) {
if (((HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) & 0x100) != 0 || lbl_1_bss_190 != 0) { if (((HuPadBtn[0] | HuPadBtn[1] | HuPadBtn[2] | HuPadBtn[3]) & 0x100) != 0 || resultBattleSkipF != 0) {
lbl_1_bss_174 = 1; resultFastF = 1;
} }
else { else {
lbl_1_bss_174 = 0; resultFastF = 0;
} }
HuPrcVSleep(); HuPrcVSleep();
} }
} }
void fn_1_7F98(void); static void ResultBattleCoinAddShow(void);
void fn_1_8338(s16 group, s16 value); static void ResultBattleCoinAddNumSet(s16 grpId, s16 value);
void fn_1_8484(void); static void ResultBattleOrderSet(void);
void fn_1_8658(void); static void CoinEffectInit(void);
void fn_1_86DC(s16 player); static void CoinEffectAdd(s16 playerNo);
void fn_1_8CB8(struct model_data *model, Mtx matrix); static void ResultShadowDraw(struct model_data *model, Mtx matrix);
void fn_1_6824(void) static void ResultBattleCreate(void)
{ {
s16 i; s16 i;
s16 character; s16 charNo;
s16 player; s16 playerNo;
s16 x_ofs; s16 xOfs;
AnimData *anim; AnimData *anim;
AnimData *anim2; AnimData *anim2;
AnimData *anim3; AnimData *anim3;
s16 char_mdl; s16 charMdlId;
Vec pos; Vec pos;
Vec target; Vec target;
Vec up; Vec up;
s16 gains[5]; s16 coinNum[5];
Process *process = HuPrcCurrentGet(); Process *proc = HuPrcCurrentGet();
CRot.x = 0; CRot.x = 0;
CRot.y = 0; CRot.y = 0;
CRot.z = 0; CRot.z = 0;
@ -240,168 +243,167 @@ void fn_1_6824(void)
up.y = 1; up.y = 1;
up.z = 0; up.z = 0;
Hu3DShadowPosSet(&pos, &up, &target); Hu3DShadowPosSet(&pos, &up, &target);
i = Hu3DHookFuncCreate(fn_1_8CB8); i = Hu3DHookFuncCreate(ResultShadowDraw);
Hu3DModelPosSet(i, 0, 0, 0); Hu3DModelPosSet(i, 0, 0, 0);
fn_1_8484(); ResultBattleOrderSet();
fn_1_423C(gains); ResultCoinNumGet(coinNum);
gains[lbl_1_bss_172] += gains[4]; coinNum[resultBonusPlayer] += coinNum[4];
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
lbl_1_data_4E8[i].datanum = lbl_1_data_830[lbl_1_bss_19E8[i]]; resultBattleModel[i].datanum = bomheiCubeMdlTbl[resultBattleRank[i]];
if (lbl_1_bss_19E8[i] == 3) { if (resultBattleRank[i] == 3) {
lbl_1_data_4E8[i].attr = 1; resultBattleModel[i].attr = 1;
} }
} }
fn_1_8FF8(lbl_1_data_4E8); StageModelCreate(resultBattleModel);
fn_1_927C(lbl_1_data_758); StageSpriteCreate(resultBattleSprite);
espDrawNoSet(lbl_1_bss_1A1A[0], 127); espDrawNoSet(stageSprId[0], 127);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
Hu3DModelShadowSet(lbl_1_bss_1A9C[i]); Hu3DModelShadowSet(stageMdlId[i]);
} }
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
anim = HuSprAnimRead(HuDataReadNum(lbl_1_bss_19E8[i] + DATA_MAKE_NUM(DATADIR_RESULT, 0x44), MEMORY_DEFAULT_NUM)); anim = HuSprAnimRead(HuDataReadNum(resultBattleRank[i] + DATA_MAKE_NUM(DATADIR_RESULT, 0x44), MEMORY_DEFAULT_NUM));
; if (resultBattleRank[i] <= 2) {
if (lbl_1_bss_19E8[i] <= 2) {
anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x48), MEMORY_DEFAULT_NUM)); anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x48), MEMORY_DEFAULT_NUM));
} }
else { else {
anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x48), MEMORY_DEFAULT_NUM)); anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x48), MEMORY_DEFAULT_NUM));
} }
Hu3DAnimCreate(anim, lbl_1_bss_1A9C[i + 4], "ys22_a0"); Hu3DAnimCreate(anim, stageMdlId[i + 4], "ys22_a0");
Hu3DAnimCreate(anim2, lbl_1_bss_1A9C[i + 4], "ys22_a1"); Hu3DAnimCreate(anim2, stageMdlId[i + 4], "ys22_a1");
Hu3DModelAttrSet(lbl_1_bss_1A9C[i + 4], HU3D_MOTATTR_PAUSE); Hu3DModelAttrSet(stageMdlId[i + 4], HU3D_MOTATTR_PAUSE);
} }
anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3D), MEMORY_DEFAULT_NUM)); anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3D), MEMORY_DEFAULT_NUM));
anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3B), MEMORY_DEFAULT_NUM)); anim2 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3B), MEMORY_DEFAULT_NUM));
anim3 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3C), MEMORY_DEFAULT_NUM)); anim3 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_RESULT, 0x3C), MEMORY_DEFAULT_NUM));
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (gains[lbl_1_bss_19F0[i]] >= 100) { if (coinNum[resultBattleOrder[i]] >= 100) {
x_ofs = lbl_1_data_8A0[2]; xOfs = coinNumXOfs[2];
} }
else if (gains[lbl_1_bss_19F0[i]] >= 10) { else if (coinNum[resultBattleOrder[i]] >= 10) {
x_ofs = lbl_1_data_8A0[1]; xOfs = coinNumXOfs[1];
} }
else { else {
x_ofs = lbl_1_data_8A0[0]; xOfs = coinNumXOfs[0];
} }
lbl_1_bss_19E0[i] = HuSprGrpCreate(5); coinNumGrpId[i] = HuSprGrpCreate(5);
lbl_1_bss_19B8[i][0] = HuSprCreate(anim, 10, 0); coinNumSprId[i][0] = HuSprCreate(anim, 10, 0);
HuSprGrpMemberSet(lbl_1_bss_19E0[i], 0, lbl_1_bss_19B8[i][0]); HuSprGrpMemberSet(coinNumGrpId[i], 0, coinNumSprId[i][0]);
HuSprPosSet(lbl_1_bss_19E0[i], 0, 17, -32); HuSprPosSet(coinNumGrpId[i], 0, 17, -32);
lbl_1_bss_19B8[i][1] = HuSprCreate(anim2, 0, 0); coinNumSprId[i][1] = HuSprCreate(anim2, 0, 0);
HuSprGrpMemberSet(lbl_1_bss_19E0[i], 1, lbl_1_bss_19B8[i][1]); HuSprGrpMemberSet(coinNumGrpId[i], 1, coinNumSprId[i][1]);
HuSprPosSet(lbl_1_bss_19E0[i], 1, x_ofs, -36); HuSprPosSet(coinNumGrpId[i], 1, xOfs, -36);
lbl_1_bss_19B8[i][2] = HuSprCreate(anim3, 0, 0); coinNumSprId[i][2] = HuSprCreate(anim3, 0, 0);
HuSprGrpMemberSet(lbl_1_bss_19E0[i], 2, lbl_1_bss_19B8[i][2]); HuSprGrpMemberSet(coinNumGrpId[i], 2, coinNumSprId[i][2]);
HuSprPosSet(lbl_1_bss_19E0[i], 2, x_ofs + 16, -36); HuSprPosSet(coinNumGrpId[i], 2, xOfs + 16, -36);
lbl_1_bss_19B8[i][3] = HuSprCreate(anim3, 0, 0); coinNumSprId[i][3] = HuSprCreate(anim3, 0, 0);
HuSprGrpMemberSet(lbl_1_bss_19E0[i], 3, lbl_1_bss_19B8[i][3]); HuSprGrpMemberSet(coinNumGrpId[i], 3, coinNumSprId[i][3]);
HuSprPosSet(lbl_1_bss_19E0[i], 3, x_ofs + 32, -36); HuSprPosSet(coinNumGrpId[i], 3, xOfs + 32, -36);
lbl_1_bss_19B8[i][4] = HuSprCreate(anim3, 0, 0); coinNumSprId[i][4] = HuSprCreate(anim3, 0, 0);
HuSprGrpMemberSet(lbl_1_bss_19E0[i], 4, lbl_1_bss_19B8[i][4]); HuSprGrpMemberSet(coinNumGrpId[i], 4, coinNumSprId[i][4]);
HuSprPosSet(lbl_1_bss_19E0[i], 4, x_ofs + 48, -36); HuSprPosSet(coinNumGrpId[i], 4, xOfs + 48, -36);
HuSprGrpPosSet(lbl_1_bss_19E0[i], 0, 0); HuSprGrpPosSet(coinNumGrpId[i], 0, 0);
fn_1_8338(lbl_1_bss_19E0[i], 9); ResultBattleCoinAddNumSet(coinNumGrpId[i], 9);
HuSprGrpScaleSet(lbl_1_bss_19E0[i], 0, 0); HuSprGrpScaleSet(coinNumGrpId[i], 0, 0);
} }
(void)anim3; (void)anim3;
Hu3DMotionSet(lbl_1_bss_1A9C[8], lbl_1_bss_1A5C[9]); Hu3DMotionSet(stageMdlId[8], stageMotId[9]);
Hu3DModelAttrSet(lbl_1_bss_1A9C[8], HU3D_MOTATTR_LOOP); Hu3DModelAttrSet(stageMdlId[8], HU3D_MOTATTR_LOOP);
Hu3DModelShadowSet(lbl_1_bss_1A9C[8]); Hu3DModelShadowSet(stageMdlId[8]);
for (i = 0; i < 180; i++) { for (i = 0; i < COIN_EFFECT_MAX; i++) {
if (i == 0) { if (i == 0) {
lbl_1_bss_1828[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x0C)); coinEffectMdlId[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_RESULT, 0x0C));
} }
else { else {
lbl_1_bss_1828[i] = Hu3DModelLink(lbl_1_bss_1828[0]); coinEffectMdlId[i] = Hu3DModelLink(coinEffectMdlId[0]);
} }
Hu3DModelScaleSet(lbl_1_bss_1828[i], 0.5f, 0.5f, 0.5f); Hu3DModelScaleSet(coinEffectMdlId[i], 0.5f, 0.5f, 0.5f);
Hu3DModelAttrSet(lbl_1_bss_1828[i], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(coinEffectMdlId[i], HU3D_ATTR_DISPOFF);
} }
fn_1_8658(); CoinEffectInit();
anim = HuSprAnimRead(HuAR_ARAMtoMRAMFileRead(DATA_MAKE_NUM(DATADIR_EFFECT, 4), MEMORY_DEFAULT_NUM, HEAP_DATA)); anim = HuSprAnimRead(HuAR_ARAMtoMRAMFileRead(DATA_MAKE_NUM(DATADIR_EFFECT, 4), MEMORY_DEFAULT_NUM, HEAP_DATA));
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
lbl_1_bss_1814[i] = Hu3DParManCreate(anim, 300, &lbl_1_data_780); resultBattleEffParManId[i] = Hu3DParManCreate(anim, 300, &resultBattleEffParMan);
Hu3DParManAttrSet(lbl_1_bss_1814[i], 0x65); Hu3DParManAttrSet(resultBattleEffParManId[i], 0x65);
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_1814[i]), 1); Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(resultBattleEffParManId[i]), 1);
Hu3DParManRotSet(lbl_1_bss_1814[i], 90, 0, 0); Hu3DParManRotSet(resultBattleEffParManId[i], 90, 0, 0);
} }
HuDataDirClose(DATADIR_RESULT); HuDataDirClose(DATADIR_RESULT);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
player = lbl_1_bss_19F0[i]; playerNo = resultBattleOrder[i];
character = GWPlayerCfg[lbl_1_bss_19F0[i]].character; charNo = GWPlayerCfg[resultBattleOrder[i]].character;
char_mdl = CharModelCreate(character, 2); charMdlId = CharModelCreate(charNo, 2);
lbl_1_bss_19B0[player] = char_mdl; resultBattleCharMdl[playerNo] = charMdlId;
lbl_1_bss_1990[player][0] = CharModelMotionCreate(character, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); resultBattleCharMot[playerNo][0] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00));
lbl_1_bss_1990[player][1] = CharModelMotionCreate(character, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17)); resultBattleCharMot[playerNo][1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17));
lbl_1_bss_1990[player][2] = CharModelMotionCreate(character, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49)); resultBattleCharMot[playerNo][2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49));
CharModelVoiceEnableSet(character, lbl_1_bss_1990[player][1], 0); CharModelVoiceEnableSet(charNo, resultBattleCharMot[playerNo][1], 0);
CharModelMotionSet(character, lbl_1_bss_1990[player][0]); CharModelMotionSet(charNo, resultBattleCharMot[playerNo][0]);
Hu3DModelPosSet(char_mdl, lbl_1_data_7F0[i].x, lbl_1_data_7F0[lbl_1_bss_19E8[i]].y, 0); Hu3DModelPosSet(charMdlId, playerPosTbl[i].x, playerPosTbl[resultBattleRank[i]].y, 0);
Hu3DModelAttrSet(char_mdl, HU3D_MOTATTR_LOOP); Hu3DModelAttrSet(charMdlId, HU3D_MOTATTR_LOOP);
Hu3DModelShadowSet(char_mdl); Hu3DModelShadowSet(charMdlId);
} }
CharModelDataClose(-1); CharModelDataClose(-1);
} }
Vec lbl_1_data_8B8[] = { { 8, 0, 0 }, { 0, 8, 0 }, { 10, 5, 0 }, { -5, 10, 0 }, { 0, -8, 0 }, { 8, 10, 0 }, { -10, 8, 0 }, { 15, 0, 0 } }; static Vec cameraShakeOfs[] = { { 8, 0, 0 }, { 0, 8, 0 }, { 10, 5, 0 }, { -5, 10, 0 }, { 0, -8, 0 }, { 8, 10, 0 }, { -10, 8, 0 }, { 15, 0, 0 } };
void fn_1_7544(void) static void ResultBattleStatAdd(void)
{ {
s16 i; s16 i;
s16 time; s16 time;
s16 done_cnt; s16 done_cnt;
float pos_y; float pos_y;
s16 gains[5]; s16 coinNum[5];
s16 time_player[4]; s16 delay[4];
fn_1_423C(gains); ResultCoinNumGet(coinNum);
for (time = 0; time <= 5; time++) { for (time = 0; time <= 5; time++) {
pos_y = ((5 - time) * 50) + 580; pos_y = ((5 - time) * 50) + 580;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
Hu3DModelPosSet(lbl_1_bss_1A9C[i + 4], lbl_1_data_7F0[i].x, pos_y, 0); Hu3DModelPosSet(stageMdlId[i + 4], playerPosTbl[i].x, pos_y, 0);
} }
HuPrcVSleep(); HuPrcVSleep();
} }
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
Hu3DModelAttrReset(lbl_1_bss_1A9C[i + 4], HU3D_MOTATTR_PAUSE); Hu3DModelAttrReset(stageMdlId[i + 4], HU3D_MOTATTR_PAUSE);
Hu3DMotionSpeedSet(lbl_1_bss_1A9C[i + 4], 1.5f); Hu3DMotionSpeedSet(stageMdlId[i + 4], 1.5f);
} }
HuPrcSleep(35); HuPrcSleep(35);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (gains[lbl_1_bss_19F0[i]] > 0) { if (coinNum[resultBattleOrder[i]] > 0) {
Hu3DParManAttrReset(lbl_1_bss_1814[i], 1); Hu3DParManAttrReset(resultBattleEffParManId[i], 1);
time_player[i] = frandmod(10); delay[i] = frandmod(10);
} }
else { else {
time_player[i] = 0; delay[i] = 0;
} }
Hu3DParManPosSet(lbl_1_bss_1814[i], lbl_1_data_7F0[i].x, 610.0f, 0.0f); Hu3DParManPosSet(resultBattleEffParManId[i], playerPosTbl[i].x, 610.0f, 0.0f);
} }
while (1) { while (1) {
for (i = done_cnt = 0; i < 4; i++) { for (i = done_cnt = 0; i < 4; i++) {
if (time_player[i]) { if (delay[i]) {
time_player[i]--; delay[i]--;
continue; continue;
} }
if (gains[lbl_1_bss_19F0[i]] <= 0) { if (coinNum[resultBattleOrder[i]] <= 0) {
Hu3DParManAttrSet(lbl_1_bss_1814[i], 1); Hu3DParManAttrSet(resultBattleEffParManId[i], 1);
done_cnt++; done_cnt++;
} }
else { else {
fn_1_86DC(i); CoinEffectAdd(i);
gains[lbl_1_bss_19F0[i]]--; coinNum[resultBattleOrder[i]]--;
if (gains[lbl_1_bss_19F0[i]] <= 10) { if (coinNum[resultBattleOrder[i]] <= 10) {
time_player[i] = 4; delay[i] = 4;
} }
else { else {
if (gains[lbl_1_bss_19F0[i]] <= 20) { if (coinNum[resultBattleOrder[i]] <= 20) {
time_player[i] = 3; delay[i] = 3;
} }
else { else {
if (gains[lbl_1_bss_19F0[i]] <= 40) { if (coinNum[resultBattleOrder[i]] <= 40) {
time_player[i] = 2; delay[i] = 2;
} }
else { else {
time_player[i] = 1; delay[i] = 1;
} }
} }
} }
@ -412,234 +414,233 @@ void fn_1_7544(void)
} }
HuPrcVSleep(); HuPrcVSleep();
} }
if (gains[4]) { if (coinNum[4]) {
HuPrcSleep(20); HuPrcSleep(20);
Hu3DModelRotSet(lbl_1_bss_1A9C[8], 0, -90, 0); Hu3DModelRotSet(stageMdlId[8], 0, -90, 0);
Hu3DModelScaleSet(lbl_1_bss_1A9C[8], 0.8f, 0.8f, 0.8f); Hu3DModelScaleSet(stageMdlId[8], 0.8f, 0.8f, 0.8f);
Hu3DMotionSpeedSet(lbl_1_bss_1A9C[8], 2.0f); Hu3DMotionSpeedSet(stageMdlId[8], 2.0f);
for (i = 0; i <= 40; i++) { for (i = 0; i <= 40; i++) {
Hu3DModelPosSet(lbl_1_bss_1A9C[8], 500.0f * (1.0f - (i / 40.0f)), 0, 100.0f); Hu3DModelPosSet(stageMdlId[8], 500.0f * (1.0f - (i / 40.0f)), 0, 100.0f);
HuPrcVSleep(); HuPrcVSleep();
} }
HuAudFXPlay(828); HuAudFXPlay(828);
Hu3DModelAttrReset(lbl_1_bss_1A9C[10], HU3D_MOTATTR_PAUSE); Hu3DModelAttrReset(stageMdlId[10], HU3D_MOTATTR_PAUSE);
Hu3DModelPosSet(lbl_1_bss_1A9C[10], 0, 0, 200); Hu3DModelPosSet(stageMdlId[10], 0, 0, 200);
for (i = 0; i < Hu3DMotionMaxTimeGet(lbl_1_bss_1A9C[10]); i++) { for (i = 0; i < Hu3DMotionMaxTimeGet(stageMdlId[10]); i++) {
if (i > 10) { if (i > 10) {
Hu3DModelAttrSet(lbl_1_bss_1A9C[8], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(stageMdlId[8], HU3D_ATTR_DISPOFF);
} }
Center.x = lbl_1_data_8B8[(i / 2) & 0x7].x; Center.x = cameraShakeOfs[(i / 2) & 0x7].x;
Center.y = 330.0f + lbl_1_data_8B8[(i / 2) & 0x7].y; Center.y = 330.0f + cameraShakeOfs[(i / 2) & 0x7].y;
Center.z = lbl_1_data_8B8[(i / 2) & 0x7].z; Center.z = cameraShakeOfs[(i / 2) & 0x7].z;
espPosSet(lbl_1_bss_1A1A[0], 288.0f + lbl_1_data_8B8[(i / 2) & 0x7].x, 240.0f - lbl_1_data_8B8[(i / 2) & 0x7].y); espPosSet(stageSprId[0], 288.0f + cameraShakeOfs[(i / 2) & 0x7].x, 240.0f - cameraShakeOfs[(i / 2) & 0x7].y);
HuPrcVSleep(); HuPrcVSleep();
} }
espPosSet(lbl_1_bss_1A1A[0], 288.0, 240.0); espPosSet(stageSprId[0], 288.0, 240.0);
Center.x = 0; Center.x = 0;
Center.y = 330; Center.y = 330;
Center.z = 0; Center.z = 0;
time_player[0] = 10; delay[0] = 10;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (lbl_1_bss_172 == lbl_1_bss_19F0[i]) { if (resultBonusPlayer == resultBattleOrder[i]) {
break; break;
} }
} }
Hu3DParManAttrReset(lbl_1_bss_1814[i], 1); Hu3DParManAttrReset(resultBattleEffParManId[i], 1);
while (1) { while (1) {
if (time_player[0] != 0) { if (delay[0] != 0) {
time_player[0]--; delay[0]--;
HuPrcVSleep(); HuPrcVSleep();
continue; continue;
} }
if (gains[4] <= 0) { if (coinNum[4] <= 0) {
Hu3DParManAttrSet(lbl_1_bss_1814[i], 1); Hu3DParManAttrSet(resultBattleEffParManId[i], 1);
break; break;
} }
fn_1_86DC(i); CoinEffectAdd(i);
gains[4]--; coinNum[4]--;
time_player[0] = 5; delay[0] = 5;
HuPrcVSleep(); HuPrcVSleep();
} }
Hu3DParManAttrSet(lbl_1_bss_1814[i], 1); Hu3DParManAttrSet(resultBattleEffParManId[i], 1);
} }
fn_1_423C(gains); ResultCoinNumGet(coinNum);
gains[lbl_1_bss_172] += gains[4]; coinNum[resultBonusPlayer] += coinNum[4];
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
if (gains[lbl_1_bss_19F0[i]]) { if (coinNum[resultBattleOrder[i]]) {
CharModelMotionShiftSet(GWPlayerCfg[lbl_1_bss_19F0[i]].character, lbl_1_bss_1990[lbl_1_bss_19F0[i]][1], 0, 4, HU3D_MOTATTR_NONE); CharModelMotionShiftSet(GWPlayerCfg[resultBattleOrder[i]].character, resultBattleCharMot[resultBattleOrder[i]][1], 0, 4, HU3D_MOTATTR_NONE);
HuAudPlayerVoicePlay(lbl_1_bss_19F0[i], 293); HuAudPlayerVoicePlay(resultBattleOrder[i], 293);
} }
else { else {
CharModelMotionShiftSet(GWPlayerCfg[lbl_1_bss_19F0[i]].character, lbl_1_bss_1990[lbl_1_bss_19F0[i]][2], 0, 4, HU3D_MOTATTR_NONE); CharModelMotionShiftSet(GWPlayerCfg[resultBattleOrder[i]].character, resultBattleCharMot[resultBattleOrder[i]][2], 0, 4, HU3D_MOTATTR_NONE);
} }
} }
HuPrcSleep(20); HuPrcSleep(20);
fn_1_7F98(); ResultBattleCoinAddShow();
HuPrcSleep(120); HuPrcSleep(120);
} }
void fn_1_7F98(void) static void ResultBattleCoinAddShow(void)
{ {
s16 i; s16 i;
s16 time; s16 time;
s16 delay; s16 speed;
s16 gains[5]; s16 coinNum[5];
Vec pos_3d; Vec pos3D;
Vec pos_2d; Vec pos2D;
fn_1_423C(gains); ResultCoinNumGet(coinNum);
gains[lbl_1_bss_172] += gains[4]; coinNum[resultBonusPlayer] += coinNum[4];
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
fn_1_8338(lbl_1_bss_19E0[i], gains[lbl_1_bss_19F0[i]]); ResultBattleCoinAddNumSet(coinNumGrpId[i], coinNum[resultBattleOrder[i]]);
pos_3d.x = lbl_1_data_7F0[i].x; pos3D.x = playerPosTbl[i].x;
if (gains[lbl_1_bss_19F0[i]]) { if (coinNum[resultBattleOrder[i]]) {
pos_3d.y = lbl_1_data_7F0[lbl_1_bss_19E8[i]].y + lbl_1_data_860[GWPlayerCfg[lbl_1_bss_19F0[i]].character]; pos3D.y = playerPosTbl[resultBattleRank[i]].y + coinAddYOfs[GWPlayerCfg[resultBattleOrder[i]].character];
} }
else { else {
pos_3d.y = lbl_1_data_7F0[lbl_1_bss_19E8[i]].y + lbl_1_data_880[GWPlayerCfg[lbl_1_bss_19F0[i]].character]; pos3D.y = playerPosTbl[resultBattleRank[i]].y + coinBlankYOfs[GWPlayerCfg[resultBattleOrder[i]].character];
} }
pos_3d.z = 0; pos3D.z = 0;
Hu3D3Dto2D(&pos_3d, 1, &pos_2d); Hu3D3Dto2D(&pos3D, 1, &pos2D);
HuSprGrpPosSet(lbl_1_bss_19E0[i], pos_2d.x, pos_2d.y); HuSprGrpPosSet(coinNumGrpId[i], pos2D.x, pos2D.y);
} }
delay = (lbl_1_bss_174) ? 3 : 10; speed = (resultFastF) ? 3 : 10;
for (time = 0; time <= delay; time++) { for (time = 0; time <= speed; time++) {
float scale = sind((90.0 / delay) * time); float scale = sind((90.0 / speed) * time);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
HuSprGrpScaleSet(lbl_1_bss_19E0[i], scale, scale); HuSprGrpScaleSet(coinNumGrpId[i], scale, scale);
} }
HuPrcVSleep(); HuPrcVSleep();
} }
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
HuSprGrpScaleSet(lbl_1_bss_19E0[i], 1.0f, 1.0f); HuSprGrpScaleSet(coinNumGrpId[i], 1.0f, 1.0f);
} }
} }
void fn_1_8338(s16 group, s16 value) static void ResultBattleCoinAddNumSet(s16 grpId, s16 value)
{ {
s16 digit; s16 no;
s16 digit_value; s16 bank;
no = 2;
digit = 2; bank = value / 100;
digit_value = value / 100; if (bank != 0) {
if (digit_value != 0) { HuSprBankSet(grpId, no, bank);
HuSprBankSet(group, digit, digit_value); HuSprAttrReset(grpId, no, 4);
HuSprAttrReset(group, digit, 4); no++;
digit++;
} }
value -= digit_value * 100; value -= bank * 100;
digit_value = value / 10; bank = value / 10;
if (digit_value != 0 || digit == 3) { if (bank != 0 || no == 3) {
HuSprBankSet(group, digit, digit_value); HuSprBankSet(grpId, no, bank);
HuSprAttrReset(group, digit, 4); HuSprAttrReset(grpId, no, 4);
digit++; no++;
} }
value -= digit_value * 10; value -= bank * 10;
HuSprBankSet(group, digit, value); HuSprBankSet(grpId, no, value);
HuSprAttrReset(group, digit, 4); HuSprAttrReset(grpId, no, 4);
digit++; no++;
for (digit_value = digit; digit_value < 5; digit_value++) { for (bank = no; bank < 5; bank++) {
HuSprAttrSet(group, digit_value, 4); HuSprAttrSet(grpId, bank, 4);
} }
} }
void fn_1_8484(void) static void ResultBattleOrderSet(void)
{ {
s16 i; s16 i;
s16 j; s16 j;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
lbl_1_bss_19E8[i] = GWPlayerCoinWinGet(i); resultBattleRank[i] = GWPlayerCoinWinGet(i);
lbl_1_bss_19F0[i] = i; resultBattleOrder[i] = i;
} }
for (j = 1; j < 4; j++) { for (j = 1; j < 4; j++) {
for (i = 0; i < 4 - j; i++) { for (i = 0; i < 4 - j; i++) {
if (lbl_1_bss_19E8[i] > lbl_1_bss_19E8[i + 1]) { if (resultBattleRank[i] > resultBattleRank[i + 1]) {
s16 temp; s16 temp;
temp = lbl_1_bss_19E8[i]; temp = resultBattleRank[i];
lbl_1_bss_19E8[i] = lbl_1_bss_19E8[i + 1]; resultBattleRank[i] = resultBattleRank[i + 1];
lbl_1_bss_19E8[i + 1] = temp; resultBattleRank[i + 1] = temp;
temp = lbl_1_bss_19F0[i]; temp = resultBattleOrder[i];
lbl_1_bss_19F0[i] = lbl_1_bss_19F0[i + 1]; resultBattleOrder[i] = resultBattleOrder[i + 1];
lbl_1_bss_19F0[i + 1] = temp; resultBattleOrder[i + 1] = temp;
} }
} }
} }
} }
void fn_1_8998(void); static void CoinEffectMain(void);
void fn_1_8658(void) static void CoinEffectInit(void)
{ {
s16 i; s16 i;
Process *process = HuPrcCurrentGet(); Process *process = HuPrcCurrentGet();
for (i = 0; i < 180; i++) { for (i = 0; i < COIN_EFFECT_MAX; i++) {
lbl_1_bss_194[i].unk0 = -1; coinEffectData[i].playerNo = -1;
} }
HuPrcChildCreate(fn_1_8998, 100, 8192, 0, process); HuPrcChildCreate(CoinEffectMain, 100, 8192, 0, process);
} }
void fn_1_86DC(s16 player) static void CoinEffectAdd(s16 playerNo)
{ {
s16 i; s16 i;
for (i = 0; i < 180; i++) { for (i = 0; i < COIN_EFFECT_MAX; i++) {
if (lbl_1_bss_194[i].unk0 == -1) { if (coinEffectData[i].playerNo == -1) {
break; break;
} }
} }
if (i == 180) { if (i == COIN_EFFECT_MAX) {
return; return;
} }
lbl_1_bss_194[i].unk0 = player; coinEffectData[i].playerNo = playerNo;
lbl_1_bss_194[i].unk4.x = lbl_1_data_7F0[player].x; coinEffectData[i].pos.x = playerPosTbl[playerNo].x;
lbl_1_bss_194[i].unk4.y = 610.0f; coinEffectData[i].pos.y = 610.0f;
lbl_1_bss_194[i].unk4.z = 0.0f; coinEffectData[i].pos.z = 0.0f;
lbl_1_bss_194[i].unk2 = lbl_1_bss_19E8[player]; coinEffectData[i].rank = resultBattleRank[playerNo];
lbl_1_bss_194[i].unk10.x = frandmod(20) - 10.0f; coinEffectData[i].rotVel.x = frandmod(20) - 10.0f;
lbl_1_bss_194[i].unk10.y = frandmod(20) - 10.0f; coinEffectData[i].rotVel.y = frandmod(20) - 10.0f;
lbl_1_bss_194[i].unk10.z = 0; coinEffectData[i].rotVel.z = 0;
lbl_1_bss_194[i].unk1C = 10.0f; coinEffectData[i].velY = 10.0f;
Hu3DModelAttrReset(lbl_1_bss_1828[i], HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(coinEffectMdlId[i], HU3D_ATTR_DISPOFF);
Hu3DModelPosSet(lbl_1_bss_1828[i], 0, 100, 0); Hu3DModelPosSet(coinEffectMdlId[i], 0, 100, 0);
Hu3DModelRotSet(lbl_1_bss_1828[i], 0, 0, 0); Hu3DModelRotSet(coinEffectMdlId[i], 0, 0, 0);
} }
void fn_1_8998(void) static void CoinEffectMain(void)
{ {
s16 i; s16 i;
ModelData *model_ptr; ModelData *modelP;
s16 player; s16 player;
while (1) { while (1) {
for (i = 0; i < 180; i++) { for (i = 0; i < COIN_EFFECT_MAX; i++) {
if (lbl_1_bss_194[i].unk0 == -1) { if (coinEffectData[i].playerNo == -1) {
continue; continue;
} }
player = lbl_1_bss_194[i].unk0; player = coinEffectData[i].playerNo;
model_ptr = &Hu3DData[lbl_1_bss_1828[i]]; modelP = &Hu3DData[coinEffectMdlId[i]];
model_ptr->pos = lbl_1_bss_194[i].unk4; modelP->pos = coinEffectData[i].pos;
model_ptr->rot.x += lbl_1_bss_194[i].unk10.x; modelP->rot.x += coinEffectData[i].rotVel.x;
model_ptr->rot.y += lbl_1_bss_194[i].unk10.y; modelP->rot.y += coinEffectData[i].rotVel.y;
lbl_1_bss_194[i].unk4.y -= lbl_1_bss_194[i].unk1C; coinEffectData[i].pos.y -= coinEffectData[i].velY;
lbl_1_bss_194[i].unk1C += 0.2f; coinEffectData[i].velY += 0.2f;
if (lbl_1_bss_194[i].unk4.y < ((3 - lbl_1_bss_194[i].unk2) * 100) + lbl_1_data_840[GWPlayerCfg[lbl_1_bss_19F0[player]].character]) { if (coinEffectData[i].pos.y < ((3 - coinEffectData[i].rank) * 100) + coinEffectYOfs[GWPlayerCfg[resultBattleOrder[player]].character]) {
Vec pos; Vec pos;
pos.x = lbl_1_data_7F0[player].x; pos.x = playerPosTbl[player].x;
pos.y = ((3 - lbl_1_bss_194[i].unk2) * 100) + lbl_1_data_840[GWPlayerCfg[lbl_1_bss_19F0[player]].character]; pos.y = ((3 - coinEffectData[i].rank) * 100) + coinEffectYOfs[GWPlayerCfg[resultBattleOrder[player]].character];
pos.z = 0.0f; pos.z = 0.0f;
CharModelCoinEffectCreate(1, &pos); CharModelCoinEffectCreate(1, &pos);
lbl_1_bss_194[i].unk0 = -1; coinEffectData[i].playerNo = -1;
HuAudFXPlay(7); HuAudFXPlay(7);
Hu3DModelAttrSet(lbl_1_bss_1828[i], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(coinEffectMdlId[i], HU3D_ATTR_DISPOFF);
} }
} }
HuPrcVSleep(); HuPrcVSleep();
} }
} }
void fn_1_8CB8(struct model_data *model, Mtx matrix) static void ResultShadowDraw(struct model_data *model, Mtx matrix)
{ {
s32 sp8 = 0; s32 sp8 = 0;
GXTexObj tex; GXTexObj tex;
Mtx final; Mtx final;
Mtx inv_camera; Mtx invCamera;
Mtx shadow; Mtx shadow;
GXClearVtxDesc(); GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
@ -647,8 +648,8 @@ void fn_1_8CB8(struct model_data *model, Mtx matrix)
GXInitTexObj(&tex, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE); GXInitTexObj(&tex, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&tex, 0); GXLoadTexObj(&tex, 0);
MTXInverse(Hu3DCameraMtx, inv_camera); MTXInverse(Hu3DCameraMtx, invCamera);
MTXConcat(inv_camera, matrix, final); MTXConcat(invCamera, matrix, final);
MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, shadow); MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, shadow);
MTXConcat(shadow, final, final); MTXConcat(shadow, final, final);
GXLoadTexMtxImm(final, GX_TEXMTX9, GX_MTX3x4); GXLoadTexMtxImm(final, GX_TEXMTX9, GX_MTX3x4);

View file

@ -1,13 +1,13 @@
#include "REL/resultdll.h" #include "REL/resultdll.h"
s16 lbl_1_bss_1A9C[32]; s16 stageMdlId[32];
s16 lbl_1_bss_1A5C[32]; s16 stageMotId[32];
s16 lbl_1_bss_1A1A[33]; s16 stageSprId[33];
s16 lbl_1_bss_1A18; s16 lbl_1_bss_1A18;
void fn_1_8FF8(DataListModel *model_list) void StageModelCreate(StageModel *model_list)
{ {
DataListModel *list; StageModel *list;
s16 i; s16 i;
s16 model; s16 model;
s16 clear_i; s16 clear_i;
@ -15,24 +15,24 @@ void fn_1_8FF8(DataListModel *model_list)
void *data; void *data;
list = model_list; list = model_list;
for(clear_i=0; clear_i<32; clear_i++) { for(clear_i=0; clear_i<32; clear_i++) {
lbl_1_bss_1A9C[clear_i] = lbl_1_bss_1A5C[clear_i] = -1; stageMdlId[clear_i] = stageMotId[clear_i] = -1;
} }
for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) { for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) {
if(list->type == 0) { if(list->type == 0) {
data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA);
model = Hu3DModelCreate(data); model = Hu3DModelCreate(data);
lbl_1_bss_1A9C[i] = model; stageMdlId[i] = model;
Hu3DModelAttrSet(model, list->attr); Hu3DModelAttrSet(model, list->attr);
Hu3DModelPosSetV(model, &list->pos); Hu3DModelPosSetV(model, &list->pos);
Hu3DModelRotSetV(model, &list->rot); Hu3DModelRotSetV(model, &list->rot);
Hu3DModelScaleSetV(model, &list->scale); Hu3DModelScaleSetV(model, &list->scale);
model_ptr = &Hu3DData[model]; model_ptr = &Hu3DData[model];
if(model_ptr->unk_08 != -1) { if(model_ptr->unk_08 != -1) {
lbl_1_bss_1A5C[i] = model_ptr->unk_08; stageMotId[i] = model_ptr->unk_08;
} }
} else if(list->type == 1) { } else if(list->type == 1) {
data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA); data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA);
lbl_1_bss_1A5C[i] = Hu3DJointMotion(lbl_1_bss_1A9C[list->mot_link], data); stageMotId[i] = Hu3DJointMotion(stageMdlId[list->mot_link], data);
} }
(void)i; (void)i;
@ -40,33 +40,33 @@ void fn_1_8FF8(DataListModel *model_list)
list = model_list; list = model_list;
for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) { for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) {
if(list->type == 2) { if(list->type == 2) {
model = Hu3DModelLink(lbl_1_bss_1A9C[list->link]); model = Hu3DModelLink(stageMdlId[list->link]);
lbl_1_bss_1A9C[i] = model; stageMdlId[i] = model;
Hu3DModelAttrSet(model, list->attr); Hu3DModelAttrSet(model, list->attr);
Hu3DModelPosSetV(model, &list->pos); Hu3DModelPosSetV(model, &list->pos);
Hu3DModelRotSetV(model, &list->rot); Hu3DModelRotSetV(model, &list->rot);
Hu3DModelScaleSetV(model, &list->scale); Hu3DModelScaleSetV(model, &list->scale);
} }
if(list->mot_link != -1) { if(list->mot_link != -1) {
Hu3DMotionSet(lbl_1_bss_1A9C[i], lbl_1_bss_1A5C[list->mot_link]); Hu3DMotionSet(stageMdlId[i], stageMotId[list->mot_link]);
} }
(void)i; (void)i;
} }
} }
void fn_1_927C(DataListSprite *sprite_list) void StageSpriteCreate(StageSprite *sprite_list)
{ {
DataListSprite *list; StageSprite *list;
s16 sprite; s16 sprite;
s16 clear_i; s16 clear_i;
s16 i; s16 i;
list = sprite_list; list = sprite_list;
for(clear_i=0; clear_i<32; clear_i++) { for(clear_i=0; clear_i<32; clear_i++) {
lbl_1_bss_1A1A[clear_i] = -1; stageSprId[clear_i] = -1;
} }
for(i=0; list->datanum; i++, list++) { for(i=0; list->datanum; i++, list++) {
sprite = espEntry(list->datanum, 100, 0); sprite = espEntry(list->datanum, 100, 0);
lbl_1_bss_1A1A[i] = sprite; stageSprId[i] = sprite;
espPosSet(sprite, list->x, list->y); espPosSet(sprite, list->x, list->y);
espColorSet(sprite, list->color.r, list->color.g, list->color.b); espColorSet(sprite, list->color.r, list->color.g, list->color.b);
espTPLvlSet(sprite, list->color.a/255.0f); espTPLvlSet(sprite, list->color.a/255.0f);
@ -75,12 +75,12 @@ void fn_1_927C(DataListSprite *sprite_list)
} }
} }
void fn_1_93B4(void) void StageSpriteKill(void)
{ {
s16 i; s16 i;
for(i=0; i<32; i++) { for(i=0; i<32; i++) {
if(lbl_1_bss_1A1A[i] != -1) { if(stageSprId[i] != -1) {
espKill(lbl_1_bss_1A1A[i]); espKill(stageSprId[i]);
} }
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -2511,7 +2511,7 @@ s32 fn_1_F214(ZtarDllUnkStruct2 *arg0)
var_r28 = 0; var_r28 = 0;
var_r26 = arg0->unk_54; var_r26 = arg0->unk_54;
if (HuPadStkX[lbl_1_bss_8C[0].unk_58] >= 5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_RIGHT)) { if (HuPadStkX[lbl_1_bss_8C[0].unk_58] >= 5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_RIGHT)) {
if (GWGameStat.field10E_bit4 == 1) { if (GWGameStat.veryHardUnlock == 1) {
arg0->unk_54++; arg0->unk_54++;
var_r28 = 1; var_r28 = 1;
if (arg0->unk_54 > 3) { if (arg0->unk_54 > 3) {
@ -2527,7 +2527,7 @@ s32 fn_1_F214(ZtarDllUnkStruct2 *arg0)
} }
} }
else if (HuPadStkX[lbl_1_bss_8C[0].unk_58] <= -5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_LEFT)) { else if (HuPadStkX[lbl_1_bss_8C[0].unk_58] <= -5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_LEFT)) {
if (GWGameStat.field10E_bit4 == 1) { if (GWGameStat.veryHardUnlock == 1) {
arg0->unk_54--; arg0->unk_54--;
var_r28 = -1; var_r28 = -1;
if (arg0->unk_54 < 0) { if (arg0->unk_54 < 0) {

View file

@ -16,7 +16,7 @@ struct DispatchEntry gTRKDispatchTable[33] = {
{ &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoReadMemory }, { &TRKDoWriteMemory }, { &TRKDoUnsupported }, { &TRKDoReadMemory }, { &TRKDoWriteMemory },
{ &TRKDoReadRegisters }, { &TRKDoWriteRegisters }, { &TRKDoUnsupported }, { &TRKDoReadRegisters }, { &TRKDoWriteRegisters }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoFlushCache }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoFlushCache }, { &TRKDoSetOption },
{ &TRKDoContinue }, { &TRKDoStep }, { &TRKDoStop }, { &TRKDoContinue }, { &TRKDoStep }, { &TRKDoStop },
{ &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported },
{ &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported },
@ -36,6 +36,7 @@ DSError TRKDispatchMessage(TRKBuffer* buffer)
error = DS_DispatchError; error = DS_DispatchError;
TRKSetBufferPosition(buffer, 0); TRKSetBufferPosition(buffer, 0);
TRKReadBuffer1_ui8(buffer, &command); TRKReadBuffer1_ui8(buffer, &command);
command &= 0xFF;
if (command < gTRKDispatchTableSize) { if (command < gTRKDispatchTableSize) {
error = gTRKDispatchTable[command].fn(buffer); error = gTRKDispatchTable[command].fn(buffer);
} }

View file

@ -4,84 +4,95 @@
#include "amcstubs/AmcExi2Stubs.h" #include "amcstubs/AmcExi2Stubs.h"
#include "PowerPC_EABI_Support/MetroTRK/trk.h" #include "PowerPC_EABI_Support/MetroTRK/trk.h"
#define BUFF_LEN 4362
u8 gWriteBuf[BUFF_LEN];
u8 gReadBuf[BUFF_LEN];
s32 _MetroTRK_Has_Framing;
s32 gReadCount;
s32 gReadPos;
s32 gWritePos;
DBCommTable gDBCommTable = {}; DBCommTable gDBCommTable = {};
asm void TRKLoadContext(OSContext* ctx, u32) asm void TRKLoadContext(OSContext* ctx, u32)
{ {
#ifdef __MWERKS__ // clang-format off #ifdef __MWERKS__ // clang-format off
nofralloc nofralloc
lwz r0, OSContext.gpr[0](r3) lwz r0, OSContext.gpr[0](r3)
lwz r1, OSContext.gpr[1](r3) lwz r1, OSContext.gpr[1](r3)
lwz r2, OSContext.gpr[2](r3) lwz r2, OSContext.gpr[2](r3)
lhz r5, OSContext.state(r3) lhz r5, OSContext.state(r3)
rlwinm. r6, r5, 0, 0x1e, 0x1e rlwinm. r6, r5, 0, 0x1e, 0x1e
beq lbl_80371C1C beq lbl_80371C1C
rlwinm r5, r5, 0, 0x1f, 0x1d rlwinm r5, r5, 0, 0x1f, 0x1d
sth r5, OSContext.state(r3) sth r5, OSContext.state(r3)
lmw r5, OSContext.gpr[5](r3) lmw r5, OSContext.gpr[5](r3)
b lbl_80371C20 b lbl_80371C20
lbl_80371C1C: lbl_80371C1C:
lmw r13, OSContext.gpr[13](r3) lmw r13, OSContext.gpr[13](r3)
lbl_80371C20: lbl_80371C20:
mr r31, r3 mr r31, r3
mr r3, r4 mr r3, r4
lwz r4, OSContext.cr(r31) lwz r4, OSContext.cr(r31)
mtcrf 0xff, r4 mtcrf 0xff, r4
lwz r4, OSContext.lr(r31) lwz r4, OSContext.lr(r31)
mtlr r4 mtlr r4
lwz r4, OSContext.ctr(r31) lwz r4, OSContext.ctr(r31)
mtctr r4 mtctr r4
lwz r4, OSContext.xer(r31) lwz r4, OSContext.xer(r31)
mtxer r4 mtxer r4
mfmsr r4 mfmsr r4
rlwinm r4, r4, 0, 0x11, 0xf //Turn off external exceptions rlwinm r4, r4, 0, 0x11, 0xf //Turn off external exceptions
rlwinm r4, r4, 0, 0x1f, 0x1d //Turn off recoverable exception flag rlwinm r4, r4, 0, 0x1f, 0x1d //Turn off recoverable exception flag
mtmsr r4 mtmsr r4
mtsprg 1, r2 mtsprg 1, r2
lwz r4, OSContext.gpr[3](r31) lwz r4, OSContext.gpr[3](r31)
mtsprg 2, r4 mtsprg 2, r4
lwz r4, OSContext.gpr[4](r31) lwz r4, OSContext.gpr[4](r31)
mtsprg 3, r4 mtsprg 3, r4
lwz r2, OSContext.srr0(r31) lwz r2, OSContext.srr0(r31)
lwz r4, OSContext.srr1(r31) lwz r4, OSContext.srr1(r31)
lwz r31, OSContext.gpr[31](r31) lwz r31, OSContext.gpr[31](r31)
b TRKInterruptHandler b TRKInterruptHandler
#endif // clang-format on #endif // clang-format on
} }
void TRKEXICallBack(__OSInterrupt param_0, OSContext* ctx) void TRKEXICallBack(__OSInterrupt param_0, OSContext* ctx)
{ {
OSEnableScheduler(); OSEnableScheduler();
TRKLoadContext(ctx, 0x500); TRKLoadContext(ctx, 0x500);
} }
int InitMetroTRKCommTable(int hwId) int InitMetroTRKCommTable(int hwId)
{ {
int result; int result;
if (hwId == HARDWARE_GDEV) { if (hwId == HARDWARE_GDEV) {
result = Hu_IsStub(); OSReport("MetroTRK : Set to GDEV hardware\n");
result = Hu_IsStub();
gDBCommTable.initialize_func = DBInitComm; gDBCommTable.initialize_func = DBInitComm;
gDBCommTable.init_interrupts_func = DBInitInterrupts; gDBCommTable.init_interrupts_func = DBInitInterrupts;
gDBCommTable.peek_func = DBQueryData; gDBCommTable.peek_func = DBQueryData;
gDBCommTable.read_func = DBRead; gDBCommTable.read_func = DBRead;
gDBCommTable.write_func = DBWrite; gDBCommTable.write_func = DBWrite;
gDBCommTable.open_func = DBOpen; gDBCommTable.open_func = DBOpen;
gDBCommTable.close_func = DBClose; gDBCommTable.close_func = DBClose;
} else { } else {
result = AMC_IsStub(); OSReport("MetroTRK : Set to AMC DDH hardware\n");
result = AMC_IsStub();
gDBCommTable.initialize_func = EXI2_Init; gDBCommTable.initialize_func = EXI2_Init;
gDBCommTable.init_interrupts_func = EXI2_EnableInterrupts; gDBCommTable.init_interrupts_func = EXI2_EnableInterrupts;
gDBCommTable.peek_func = EXI2_Poll; gDBCommTable.peek_func = EXI2_Poll;
gDBCommTable.read_func = EXI2_ReadN; gDBCommTable.read_func = EXI2_ReadN;
gDBCommTable.write_func = EXI2_WriteN; gDBCommTable.write_func = EXI2_WriteN;
gDBCommTable.open_func = EXI2_Reserve; gDBCommTable.open_func = EXI2_Reserve;
gDBCommTable.close_func = EXI2_Unreserve; gDBCommTable.close_func = EXI2_Unreserve;
} }
return result; return result;
} }
void TRKUARTInterruptHandler() { } void TRKUARTInterruptHandler() { }
@ -89,8 +100,8 @@ void TRKUARTInterruptHandler() { }
DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2, DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2,
volatile u8** param_3) volatile u8** param_3)
{ {
gDBCommTable.initialize_func(param_3, TRKEXICallBack); gDBCommTable.initialize_func(param_3, TRKEXICallBack);
return DS_NoError; return DS_NoError;
} }
void EnableEXI2Interrupts(void) { gDBCommTable.init_interrupts_func(); } void EnableEXI2Interrupts(void) { gDBCommTable.init_interrupts_func(); }
@ -99,14 +110,59 @@ int TRKPollUART(void) { return gDBCommTable.peek_func(); }
UARTError TRKReadUARTN(void* bytes, u32 length) UARTError TRKReadUARTN(void* bytes, u32 length)
{ {
int readErr = gDBCommTable.read_func(bytes, length); int readErr = gDBCommTable.read_func(bytes, length);
return readErr == 0 ? 0 : -1; return readErr == 0 ? 0 : -1;
} }
UARTError TRKWriteUARTN(const void* bytes, u32 length) UARTError TRKWriteUARTN(const void* bytes, u32 length)
{ {
int writeErr = gDBCommTable.write_func(bytes, length); int writeErr = gDBCommTable.write_func(bytes, length);
return writeErr == 0 ? 0 : -1; return writeErr == 0 ? 0 : -1;
}
UARTError WriteUARTFlush(void)
{
UARTError readErr = 0;
while (gWritePos < 0x800) {
gWriteBuf[gWritePos] = 0;
gWritePos++;
}
if (gWritePos != 0) {
readErr = TRKWriteUARTN(gWriteBuf, gWritePos);
gWritePos = 0;
}
return readErr;
}
UARTError WriteUART1(u8 arg0)
{
gWriteBuf[gWritePos++] = arg0;
return 0;
}
UARTError TRKReadUARTPoll(u8* arg0)
{
UARTError readErr = 4;
if (gReadPos >= gReadCount) {
gReadPos = 0;
gReadCount = TRKPollUART();
if (gReadCount > 0) {
if (gReadCount > BUFF_LEN) {
gReadCount = BUFF_LEN;
}
readErr = TRKReadUARTN(gReadBuf, gReadCount);
if (readErr != 0) {
gReadCount = 0;
}
}
}
if (gReadPos < gReadCount) {
*arg0 = gReadBuf[gReadPos++];
readErr = 0;
}
return readErr;
} }
void ReserveEXI2Port(void) { gDBCommTable.open_func(); } void ReserveEXI2Port(void) { gDBCommTable.open_func(); }

View file

@ -245,4 +245,4 @@ lbl_8037149C:
#endif // clang-format on #endif // clang-format on
} }
u32 TRKTargetCPUMinorType(void) { return 0x54; } u8 TRKTargetCPUMinorType(void) { return 0x54; }

View file

@ -2,8 +2,60 @@
#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" #include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h"
#include "PowerPC_EABI_Support/MetroTRK/trk.h" #include "PowerPC_EABI_Support/MetroTRK/trk.h"
// Incorrect signature? Should be u8.
UARTError WriteUART1(s8 arg0);
DSError TRKMessageSend(TRK_Msg* msg) DSError TRKMessageSend(TRK_Msg* msg)
{ {
DSError write_err = TRKWriteUARTN(&msg->m_msg, msg->m_msgLength); u8 var_r30;
return DS_NoError; u8 var_r28;
u8 var_r28_2;
s32 var_r3;
s32 i;
var_r30 = 0;
for (i = 0; i < msg->m_msgLength; i++) {
var_r30 = var_r30 + msg->m_msg[i];
}
var_r30 = var_r30 ^ 0xFF;
var_r3 = WriteUART1(0x7E);
if (var_r3 == 0) {
for (i = 0; i < msg->m_msgLength; i++) {
var_r28 = msg->m_msg[i];
if (var_r28 == 0x7E || var_r28 == 0x7D) {
var_r3 = WriteUART1(0x7D);
var_r28 ^= 0x20;
if (var_r3 != 0) {
break;
}
}
var_r3 = WriteUART1(var_r28);
if (var_r3 != 0) {
break;
}
}
}
if (var_r3 == 0) {
var_r28_2 = var_r30;
for (i = 0; i < 1; i++) {
if (var_r28_2 == 0x7E || var_r28_2 == 0x7D) {
var_r3 = WriteUART1(0x7D);
var_r28_2 ^= 0x20;
if (var_r3 != 0) {
break;
}
}
var_r3 = WriteUART1(var_r28_2);
if (var_r3 != 0) {
break;
}
}
}
if (var_r3 == 0) {
var_r3 = WriteUART1(0x7E);
}
if (var_r3 == 0) {
var_r3 = WriteUARTFlush();
}
return var_r3;
} }

View file

@ -34,7 +34,7 @@ DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg)
TRKAcquireMutex(buf); TRKAcquireMutex(buf);
if (!buf->isInUse) { if (!buf->isInUse) {
TRKResetBuffer(buf, TRUE); TRKResetBuffer(buf, 1);
TRKSetBufferUsed(buf, TRUE); TRKSetBufferUsed(buf, TRUE);
error = DS_NoError; error = DS_NoError;
*outMsg = buf; *outMsg = buf;
@ -44,6 +44,10 @@ DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg)
TRKReleaseMutex(buf); TRKReleaseMutex(buf);
} }
if (error == DS_NoMessageBufferAvailable) {
usr_puts_serial("ERROR : No buffer available\n");
}
return error; return error;
} }
@ -68,7 +72,7 @@ void TRKReleaseBuffer(int idx)
} }
} }
void TRKResetBuffer(TRKBuffer* msg, BOOL keepData) void TRKResetBuffer(TRKBuffer* msg, u8 keepData)
{ {
msg->length = 0; msg->length = 0;
msg->position = 0; msg->position = 0;
@ -96,6 +100,7 @@ DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos)
return error; return error;
} }
#pragma dont_inline on
DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length) DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length)
{ {
DSError error = DS_NoError; // r31 DSError error = DS_NoError; // r31
@ -129,6 +134,7 @@ DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length)
return error; return error;
} }
#pragma dont_inline reset
DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length) DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length)
{ {

View file

@ -45,8 +45,7 @@ DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID,
DSReplyError replyError) DSReplyError replyError)
{ {
TRKMessageIntoReply(buffer, commandID, replyError); TRKMessageIntoReply(buffer, commandID, replyError);
TRKSendACK(buffer); return TRKSendACK(buffer);
return;
} }
DSError TRKDoUnsupported(TRKBuffer* buffer) DSError TRKDoUnsupported(TRKBuffer* buffer)
@ -107,7 +106,6 @@ DSError TRKDoVersions(TRKBuffer* buffer)
else else
error = TRKSendACK(buffer); error = TRKSendACK(buffer);
} }
return error;
} }
DSError TRKDoSupportMask(TRKBuffer* buffer) DSError TRKDoSupportMask(TRKBuffer* buffer)
@ -140,7 +138,7 @@ DSError TRKDoCPUType(TRKBuffer* buffer)
if (buffer->length != 1) { if (buffer->length != 1) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error; return;
} }
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
@ -166,8 +164,6 @@ DSError TRKDoCPUType(TRKBuffer* buffer)
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError);
else else
error = TRKSendACK(buffer); error = TRKSendACK(buffer);
return error;
} }
DSError TRKDoReadMemory(TRKBuffer* buffer) DSError TRKDoReadMemory(TRKBuffer* buffer)
@ -175,11 +171,11 @@ DSError TRKDoReadMemory(TRKBuffer* buffer)
DSError error; DSError error;
DSReplyError replyError; DSReplyError replyError;
u8 tempBuf[0x800]; u8 tempBuf[0x800];
u32 length;
u32 msg_start; u32 msg_start;
u32 length;
u16 msg_length; u16 msg_length;
u8 msg_options;
u8 msg_command; u8 msg_command;
u8 msg_options;
if (buffer->length != 8) { if (buffer->length != 8) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
@ -257,11 +253,11 @@ DSError TRKDoWriteMemory(TRKBuffer* buffer)
DSError error; DSError error;
DSReplyError replyError; DSReplyError replyError;
u8 tmpBuffer[0x800]; u8 tmpBuffer[0x800];
u32 length;
u32 msg_start; u32 msg_start;
u32 length;
u16 msg_length; u16 msg_length;
u8 msg_options;
u8 msg_command; u8 msg_command;
u8 msg_options;
if (buffer->length <= 8) { if (buffer->length <= 8) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
@ -343,14 +339,14 @@ DSError TRKDoReadRegisters(TRKBuffer* buffer)
DSReplyError replyError; DSReplyError replyError;
DSMessageRegisterOptions options; DSMessageRegisterOptions options;
u32 registerDataLength; u32 registerDataLength;
u16 msg_lastRegister;
u16 msg_firstRegister; u16 msg_firstRegister;
u8 msg_options; u16 msg_lastRegister;
u8 msg_command; u8 msg_command;
u8 msg_options;
if (buffer->length != 6) { if (buffer->length != 6) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error; return;
} }
TRKSetBufferPosition(buffer, DSREPLY_NoError); TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command); error = TRKReadBuffer1_ui8(buffer, &msg_command);
@ -366,13 +362,13 @@ DSError TRKDoReadRegisters(TRKBuffer* buffer)
if (msg_firstRegister > msg_lastRegister) { if (msg_firstRegister > msg_lastRegister) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidRegisterRange); DSREPLY_InvalidRegisterRange);
return error; return;
} }
if (error == DS_NoError) if (error == DS_NoError)
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
options = (DSMessageRegisterOptions)msg_options; options = (DSMessageRegisterOptions)(msg_options & 7);
switch (options) { switch (options) {
case DSREG_Default: case DSREG_Default:
error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister, error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister,
@ -423,8 +419,6 @@ DSError TRKDoReadRegisters(TRKBuffer* buffer)
} else { } else {
error = TRKSendACK(buffer); error = TRKSendACK(buffer);
} }
return error;
} }
DSError TRKDoWriteRegisters(TRKBuffer* buffer) DSError TRKDoWriteRegisters(TRKBuffer* buffer)
@ -433,14 +427,14 @@ DSError TRKDoWriteRegisters(TRKBuffer* buffer)
DSReplyError replyError; DSReplyError replyError;
DSMessageRegisterOptions options; DSMessageRegisterOptions options;
u32 registerDataLength; u32 registerDataLength;
u16 msg_lastRegister;
u16 msg_firstRegister; u16 msg_firstRegister;
u8 msg_options; u16 msg_lastRegister;
u8 msg_command; u8 msg_command;
u8 msg_options;
if (buffer->length <= 6) { if (buffer->length <= 6) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error; return;
} }
TRKSetBufferPosition(buffer, DSREPLY_NoError); TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command); error = TRKReadBuffer1_ui8(buffer, &msg_command);
@ -456,7 +450,7 @@ DSError TRKDoWriteRegisters(TRKBuffer* buffer)
if (msg_firstRegister > msg_lastRegister) { if (msg_firstRegister > msg_lastRegister) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidRegisterRange); DSREPLY_InvalidRegisterRange);
return error; return;
} }
options = (DSMessageRegisterOptions)msg_options; options = (DSMessageRegisterOptions)msg_options;
@ -516,22 +510,20 @@ DSError TRKDoWriteRegisters(TRKBuffer* buffer)
} else { } else {
error = TRKSendACK(buffer); error = TRKSendACK(buffer);
} }
return error;
} }
DSError TRKDoFlushCache(TRKBuffer* buffer) DSError TRKDoFlushCache(TRKBuffer* buffer)
{ {
DSError error; DSError error;
DSReplyError replyErr; DSReplyError replyErr;
u32 msg_end;
u32 msg_start; u32 msg_start;
u8 msg_options; u32 msg_end;
u8 msg_command; u8 msg_command;
u8 msg_options;
if (buffer->length != 10) { if (buffer->length != 10) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error; return;
} }
TRKSetBufferPosition(buffer, DSREPLY_NoError); TRKSetBufferPosition(buffer, DSREPLY_NoError);
@ -546,7 +538,7 @@ DSError TRKDoFlushCache(TRKBuffer* buffer)
if (msg_start > msg_end) { if (msg_start > msg_end) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidMemoryRange); DSREPLY_InvalidMemoryRange);
return error; return;
} }
if (error == DS_NoError) if (error == DS_NoError)
@ -570,8 +562,6 @@ DSError TRKDoFlushCache(TRKBuffer* buffer)
} else { } else {
error = TRKSendACK(buffer); error = TRKSendACK(buffer);
} }
return error;
} }
DSError TRKDoContinue(TRKBuffer* buffer) DSError TRKDoContinue(TRKBuffer* buffer)
@ -581,14 +571,12 @@ DSError TRKDoContinue(TRKBuffer* buffer)
error = TRKTargetStopped(); error = TRKTargetStopped();
if (error == DS_NoError) { if (error == DS_NoError) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped);
return error; return;
} }
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError) if (error == DS_NoError)
error = TRKTargetContinue(); error = TRKTargetContinue();
return error;
} }
DSError TRKDoStep(TRKBuffer* buffer) DSError TRKDoStep(TRKBuffer* buffer)
@ -601,8 +589,10 @@ DSError TRKDoStep(TRKBuffer* buffer)
u32 msg_rangeEnd; u32 msg_rangeEnd;
u32 pc; u32 pc;
if (buffer->length < 3) if (buffer->length < 3) {
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError); TRKSetBufferPosition(buffer, DSREPLY_NoError);
@ -618,12 +608,14 @@ DSError TRKDoStep(TRKBuffer* buffer)
if (msg_count >= 1) { if (msg_count >= 1) {
break; break;
} }
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
return;
case DSSTEP_IntoRange: case DSSTEP_IntoRange:
case DSSTEP_OverRange: case DSSTEP_OverRange:
if (buffer->length != 10) if (buffer->length != 10) {
return TRKStandardACK(buffer, DSMSG_ReplyACK, TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
DSREPLY_PacketSizeError); return;
}
if (error == DS_NoError) if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_rangeStart); error = TRKReadBuffer1_ui32(buffer, &msg_rangeStart);
@ -634,33 +626,33 @@ DSError TRKDoStep(TRKBuffer* buffer)
if (pc >= msg_rangeStart && pc <= msg_rangeEnd) { if (pc >= msg_rangeStart && pc <= msg_rangeEnd) {
break; break;
} }
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
return;
default: default:
return TRKStandardACK(buffer, DSMSG_ReplyACK, TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_UnsupportedOptionError);
DSREPLY_UnsupportedOptionError); return;
} }
if (!TRKTargetStopped()) { if (!TRKTargetStopped()) {
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped); TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped);
} else { return;
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError)
switch (msg_options) {
case DSSTEP_IntoCount:
case DSSTEP_OverCount:
error = TRKTargetSingleStep(msg_count,
(msg_options == DSSTEP_OverCount));
break;
case DSSTEP_IntoRange:
case DSSTEP_OverRange:
error = TRKTargetStepOutOfRange(
msg_rangeStart, msg_rangeEnd,
(msg_options == DSSTEP_OverRange));
break;
}
return error;
} }
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError)
switch (msg_options) {
case DSSTEP_IntoCount:
case DSSTEP_OverCount:
error = TRKTargetSingleStep(msg_count,
(msg_options == DSSTEP_OverCount));
break;
case DSSTEP_IntoRange:
case DSSTEP_OverRange:
error = TRKTargetStepOutOfRange(
msg_rangeStart, msg_rangeEnd,
(msg_options == DSSTEP_OverRange));
break;
}
} }
DSError TRKDoStop(TRKBuffer* b) DSError TRKDoStop(TRKBuffer* b)
@ -687,3 +679,46 @@ DSError TRKDoStop(TRKBuffer* b)
return TRKStandardACK(b, DSMSG_ReplyACK, replyError); return TRKStandardACK(b, DSMSG_ReplyACK, replyError);
} }
DSError TRKDoSetOption(TRKBuffer* buffer) {
DSError error;
u8 spA;
u8 sp9;
u8 sp8;
spA = 0;
sp9 = 0;
sp8 = 0;
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &spA);
if (error == DS_NoError) {
error = TRKReadBuffer1_ui8(buffer, &sp9);
}
if (error == DS_NoError) {
error = TRKReadBuffer1_ui8(buffer, &sp8);
}
if (error != DS_NoError) {
TRKResetBuffer(buffer, 1);
if (buffer->position < 0x880) {
buffer->data[buffer->position++] = 0x80;
buffer->length++;
}
if (buffer->position < 0x880) {
buffer->data[buffer->position++] = 1;
buffer->length++;
}
TRKSendACK(buffer);
} else if (sp9 == 1) {
SetUseSerialIO(sp8);
}
TRKResetBuffer(buffer, 1);
if (buffer->position < 0x880) {
buffer->data[buffer->position++] = 0x80;
buffer->length++;
}
if (buffer->position < 0x880) {
buffer->data[buffer->position++] = 0;
buffer->length++;
}
return TRKSendACK(buffer);
}

112
src/TRK_MINNOW_DOLPHIN/mslsupp.c Executable file
View file

@ -0,0 +1,112 @@
#include "PowerPC_EABI_Support/MetroTRK/trk.h"
#include <stddef.h>
// forward declares
DSIOResult __read_file(u32 handle, u8* buffer, size_t* count, void* ref_con);
DSIOResult __write_file(u32 handle, u8* buffer, size_t* count, void* ref_con);
DSIOResult __access_file(u32 handle, u8* buffer, size_t* count, void* ref_con, MessageCommandID cmd);
/**
* @note Address: 0x800C0B4C
* @note Size: 0xBC
*/
DSIOResult __read_console(u32 handle, u8* buffer, size_t* count, void* ref_con)
{
if (GetUseSerialIO() == 0) {
return DS_IOError;
}
return __read_file(DS_Stdin, buffer, count, ref_con);
}
/**
* @note Address: 0x800C0A90
* @note Size: 0xBC
*/
DSIOResult __TRK_write_console(u32 handle, u8* buffer, size_t* count, void* ref_con)
{
if (GetUseSerialIO() == 0) {
return DS_IOError;
}
return __write_file(DS_Stdout, buffer, count, ref_con);
}
/**
* @note Address: N/A
* @note Size: 0xB4
*/
DSIOResult __read_file(u32 handle, u8* buffer, size_t* count, void* ref_con)
{
return __access_file(handle, buffer, count, ref_con, DSMSG_ReadFile);
}
/**
* @note Address: N/A
* @note Size: 0xB4
*/
DSIOResult __write_file(u32 handle, u8* buffer, size_t* count, void* ref_con)
{
return __access_file(handle, buffer, count, ref_con, DSMSG_WriteFile);
}
/**
* @note Address: N/A
* @note Size: 0x17C
*/
void __open_file(void)
{
// UNUSED FUNCTION
}
/**
* @note Address: N/A
* @note Size: 0xDC
*/
void __position_file(void)
{
// UNUSED FUNCTION
}
/**
* @note Address: N/A
* @note Size: 0xE0
*/
void convertFileMode(void)
{
// UNUSED FUNCTION
}
/**
* @note Address: N/A
* @note Size: 0xC0
*/
DSIOResult __access_file(u32 handle, u8* buffer, size_t* count, void* ref_con, MessageCommandID cmd)
{
size_t countTemp;
u32 r0;
if (GetTRKConnected() == DS_NoError) {
return DS_IOError;
}
countTemp = *count;
r0 = TRKAccessFile(cmd, handle, &countTemp, buffer);
*count = countTemp;
switch ((u8)r0) {
case DS_IONoError:
return DS_IONoError;
case DS_IOEOF:
return DS_IOEOF;
}
return DS_IOError;
}
/**
* @note Address: N/A
* @note Size: 0x1D0
*/
void __open_temp_file(void)
{
// UNUSED FUNCTION
}

View file

@ -9,74 +9,133 @@ static TRKFramingState gTRKFramingState;
void* gTRKInputPendingPtr; void* gTRKInputPendingPtr;
MessageBufferID TRKTestForPacket() static inline BOOL serpoll_inline_00(TRKBuffer* buffer) {
{ if (buffer->length < 2) {
int bytes; TRKStandardACK(buffer, DSMSG_ReplyNAK, DSREPLY_PacketSizeError);
int batch; if (gTRKFramingState.msgBufID != -1) {
int err; TRKReleaseBuffer(gTRKFramingState.msgBufID);
TRKBuffer* b; gTRKFramingState.msgBufID = -1;
int id; }
gTRKFramingState.buffer = NULL;
gTRKFramingState.receiveState = DSRECV_Wait;
return FALSE;
}
buffer->position = 0;
buffer->length--;
return TRUE;
}
bytes = TRKPollUART(); MessageBufferID TRKTestForPacket(void) {
if (bytes > 0) { s32 var_r29;
TRKGetFreeBuffer(&id, &b); s32 var_r3;
if (bytes > TRKMSGBUF_SIZE) { s8 sp8;
for (; bytes > 0; bytes -= batch) { s32 temp_r3;
batch = bytes > TRKMSGBUF_SIZE ? TRKMSGBUF_SIZE : bytes;
TRKReadUARTN(b->data, batch); var_r29 = 0;
} var_r3 = TRKReadUARTPoll(&sp8);
TRKStandardACK(b, 0xff, 6); while (var_r3 == 0 && var_r29 == 0) {
} else { if (gTRKFramingState.receiveState != DSRECV_InFrame) {
err = TRKReadUARTN(b->data, bytes); gTRKFramingState.isEscape = FALSE;
if (err == 0) { }
b->length = bytes; switch (gTRKFramingState.receiveState) {
return id; case DSRECV_Wait:
} if (sp8 == 0x7E) {
} var_r29 = TRKGetFreeBuffer(&gTRKFramingState.msgBufID, &gTRKFramingState.buffer);
} gTRKFramingState.fcsType = 0;
if (id != -1) { gTRKFramingState.receiveState = DSRECV_Found;
TRKReleaseBuffer(id); }
} break;
return -1; case DSRECV_Found:
if (sp8 == 0x7E) {
break;
}
gTRKFramingState.receiveState = DSRECV_InFrame;
/* fallthrough */
case DSRECV_InFrame:
if (sp8 == 0x7E) {
if (gTRKFramingState.isEscape) {
TRKStandardACK(gTRKFramingState.buffer, DSMSG_ReplyNAK, DSREPLY_EscapeError);
if (gTRKFramingState.msgBufID != -1) {
TRKReleaseBuffer(gTRKFramingState.msgBufID);
gTRKFramingState.msgBufID = -1;
}
gTRKFramingState.buffer = NULL;
gTRKFramingState.receiveState = DSRECV_Wait;
break;
}
if (serpoll_inline_00(gTRKFramingState.buffer)) {
temp_r3 = gTRKFramingState.msgBufID;
gTRKFramingState.msgBufID = -1;
gTRKFramingState.buffer = NULL;
gTRKFramingState.receiveState = DSRECV_Wait;
return temp_r3;
}
gTRKFramingState.receiveState = DSRECV_Wait;
} else {
if (gTRKFramingState.isEscape) {
sp8 ^= 0x20;
gTRKFramingState.isEscape = FALSE;
} else if (sp8 == 0x7D) {
gTRKFramingState.isEscape = TRUE;
break;
}
var_r29 = TRKAppendBuffer1_ui8(gTRKFramingState.buffer, sp8);
gTRKFramingState.fcsType += sp8;
}
break;
case DSRECV_FrameOverflow:
if (sp8 == 0x7E) {
if (gTRKFramingState.msgBufID != -1) {
TRKReleaseBuffer(gTRKFramingState.msgBufID);
gTRKFramingState.msgBufID = -1;
}
gTRKFramingState.buffer = NULL;
gTRKFramingState.receiveState = DSRECV_Wait;
}
break;
}
var_r3 = TRKReadUARTPoll(&sp8);
}
return -1;
} }
void TRKGetInput(void) void TRKGetInput(void)
{ {
MessageBufferID id; TRKBuffer* msgBuffer;
TRKBuffer* msgBuffer; MessageBufferID id;
u8 command; u8 command;
id = TRKTestForPacket(); id = TRKTestForPacket();
if (id == -1) if (id == -1)
return; return;
msgBuffer = TRKGetBuffer(id); msgBuffer = TRKGetBuffer(id);
TRKSetBufferPosition(msgBuffer, 0); TRKSetBufferPosition(msgBuffer, 0);
TRKReadBuffer1_ui8(msgBuffer, &command); TRKReadBuffer1_ui8(msgBuffer, &command);
if (command < DSMSG_ReplyACK) { if (command < DSMSG_ReplyACK) {
TRKProcessInput(id); TRKProcessInput(id);
} else { } else {
TRKReleaseBuffer(id); TRKReleaseBuffer(id);
} }
} }
void TRKProcessInput(int bufferIdx) void TRKProcessInput(int bufferIdx)
{ {
TRKEvent event; TRKEvent event;
TRKConstructEvent(&event, NUBEVENT_Request); TRKConstructEvent(&event, NUBEVENT_Request);
gTRKFramingState.msgBufID = -1; gTRKFramingState.msgBufID = -1;
event.msgBufID = bufferIdx; event.msgBufID = bufferIdx;
TRKPostEvent(&event); TRKPostEvent(&event);
} }
DSError TRKInitializeSerialHandler(void) DSError TRKInitializeSerialHandler(void)
{ {
gTRKFramingState.msgBufID = -1; gTRKFramingState.msgBufID = -1;
gTRKFramingState.receiveState = DSRECV_Wait; gTRKFramingState.receiveState = DSRECV_Wait;
gTRKFramingState.isEscape = FALSE; gTRKFramingState.isEscape = FALSE;
return DS_NoError; return DS_NoError;
} }
DSError TRKTerminateSerialHandler(void) { return DS_NoError; } DSError TRKTerminateSerialHandler(void) { return DS_NoError; }

View file

@ -28,7 +28,7 @@ DSError TRKSuppAccessFile(u32 file_handle, u8* data, size_t* count,
*io_result = DS_IONoError; *io_result = DS_IONoError;
done = 0; done = 0;
error = DS_NoError; error = DS_NoError;
while (!exit && done < *count && error == DS_NoError && *io_result == 0) { while (!exit && done < *count && error == DS_NoError && *io_result == DS_IONoError) {
if (*count - done > 0x800) { if (*count - done > 0x800) {
length = 0x800; length = 0x800;
} else { } else {
@ -175,3 +175,114 @@ DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2, int p3)
return error; return error;
} }
DSError HandleOpenFileSupportRequest(const char* path, u8 replyError, u32* param_3, u8* ioResult) {
int sp10;
int spC;
TRKBuffer* sp8;
TRKBuffer* var_r31;
DSError var_r26;
*param_3 = 0;
var_r26 = TRKGetFreeBuffer(&spC, &sp8);
if (var_r26 == DS_NoError) {
var_r26 = TRKAppendBuffer1_ui8(sp8, 0xD2);
}
if (var_r26 == DS_NoError) {
var_r26 = TRKAppendBuffer1_ui8(sp8, replyError);
}
if (var_r26 == DS_NoError) {
var_r26 = TRKAppendBuffer1_ui16(sp8, strlen(path) + 1);
}
if (var_r26 == DS_NoError) {
var_r26 = TRKAppendBuffer_ui8(sp8, (u8*) path, strlen(path) + 1);
}
if (var_r26 == DS_NoError) {
*ioResult = 0;
var_r26 = TRKRequestSend(sp8, &sp10, 7, 3, 0);
if (var_r26 == DS_NoError) {
var_r31 = TRKGetBuffer(sp10);
TRKSetBufferPosition(var_r31, 2);
}
if (var_r26 == DS_NoError) {
var_r26 = TRKReadBuffer1_ui8(var_r31, ioResult);
}
if (var_r26 == DS_NoError) {
var_r26 = TRKReadBuffer1_ui32(var_r31, param_3);
}
TRKReleaseBuffer(sp10);
}
TRKReleaseBuffer(spC);
return var_r26;
}
DSError HandleCloseFileSupportRequest(int replyError, u8* ioResult) {
int sp10;
int spC;
DSError var_r31;
TRKBuffer* sp8;
TRKBuffer* var_r30;
var_r31 = TRKGetFreeBuffer(&spC, &sp8);
if (var_r31 == DS_NoError) {
var_r31 = TRKAppendBuffer1_ui8(sp8, 0xD3);
}
if (var_r31 == DS_NoError) {
var_r31 = TRKAppendBuffer1_ui32(sp8, replyError);
}
if (var_r31 == DS_NoError) {
*ioResult = DS_IONoError;
var_r31 = TRKRequestSend(sp8, &sp10, 3, 3, 0);
if (var_r31 == DS_NoError) {
var_r30 = TRKGetBuffer(sp10);
TRKSetBufferPosition(var_r30, 2);
}
if (var_r31 == DS_NoError) {
var_r31 = TRKReadBuffer1_ui8(var_r30, ioResult);
}
TRKReleaseBuffer(sp10);
}
TRKReleaseBuffer(spC);
return var_r31;
}
DSError HandlePositionFileSupportRequest(u32 replyErr, u32* param_2, u8 param_3, u8* ioResult) {
int sp10;
int spC;
TRKBuffer* sp8;
TRKBuffer* var_r31;
DSError var_r27;
var_r27 = TRKGetFreeBuffer(&spC, &sp8);
if (var_r27 == DS_NoError) {
var_r27 = TRKAppendBuffer1_ui8(sp8, 0xD4);
}
if (var_r27 == DS_NoError) {
var_r27 = TRKAppendBuffer1_ui32(sp8, replyErr);
}
if (var_r27 == DS_NoError) {
var_r27 = TRKAppendBuffer1_ui32(sp8, *param_2);
}
if (var_r27 == DS_NoError) {
var_r27 = TRKAppendBuffer1_ui8(sp8, param_3);
}
if (var_r27 == DS_NoError) {
*ioResult = DS_IONoError;
var_r27 = TRKRequestSend(sp8, &sp10, 3, 3, 0);
if (var_r27 == DS_NoError) {
var_r31 = TRKGetBuffer(sp10);
TRKSetBufferPosition(var_r31, 2);
}
if (var_r27 == DS_NoError) {
var_r27 = TRKReadBuffer1_ui8(var_r31, ioResult);
}
if (var_r27 == DS_NoError) {
var_r27 = TRKReadBuffer1_ui32(var_r31, param_2);
} else {
*param_2 = -1;
}
TRKReleaseBuffer(sp10);
}
TRKReleaseBuffer(spC);
return var_r27;
}

View file

@ -0,0 +1,11 @@
#include "PowerPC_EABI_Support/MetroTRK/trk.h"
static u8 bUseSerialIO;
void SetUseSerialIO(u8 sio) {
bUseSerialIO = sio;
}
u8 GetUseSerialIO(void) {
return bUseSerialIO;
}

File diff suppressed because it is too large Load diff

View file

@ -2,4 +2,25 @@
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" #include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h"
#include "PowerPC_EABI_Support/MetroTRK/trk.h" #include "PowerPC_EABI_Support/MetroTRK/trk.h"
BOOL usr_puts_serial(const char* msg)
{
BOOL connect_ = FALSE;
char c;
char buf[2];
while (!connect_ && (c = *msg++) != '\0') {
BOOL connect = GetTRKConnected();
buf[0] = c;
buf[1] = '\0';
SetTRKConnected(FALSE);
OSReport(buf);
SetTRKConnected(connect);
connect_ = FALSE;
}
return connect_;
}
void usr_put_initialize(void) { } void usr_put_initialize(void) { }

View file

@ -496,7 +496,7 @@ void HuAudSndGrpSetSet(s16 dataSize) {
sndGroupBak = dataSize; sndGroupBak = dataSize;
err = msmSysDelGroupAll(); err = msmSysDelGroupAll();
buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(1)); buf = HuMemDirectMalloc(HEAP_DATA, msmSysGetSampSize(1));
err = msmSysLoadGroupSet(dataSize, buf); err = msmSysLoadGroupSet(dataSize, buf);\
OSReport("***********GroupSet Error %d\n", err); OSReport("***********GroupSet Error %d\n", err);
HuMemDirectFree(buf); HuMemDirectFree(buf);
} }

View file

@ -619,7 +619,7 @@ static void CreateBoard(void)
s32 guest_status; s32 guest_status;
GWSystem.mg_next = -1; GWSystem.mg_next = -1;
if(!GWGameStat.field10E_bit5 && GWMGListGet() == 2) { if(!GWGameStat.customPackEnable && GWMGListGet() == 2) {
GWMGListSet(0); GWMGListSet(0);
} }
GWMessSpeedSet(GWMessSpeedGet()); GWMessSpeedSet(GWMessSpeedGet());

View file

@ -905,7 +905,7 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
var_r30 |= 2; var_r30 |= 2;
} }
temp_r29 = CheckPort(arg1->unk04); temp_r29 = CheckPort(arg1->unk04);
if (GWGameStat.field10E_bit4 != 0) { if (GWGameStat.veryHardUnlock != 0) {
var_r27 = 4; var_r27 = 4;
} else { } else {
var_r27 = 3; var_r27 = 3;
@ -962,7 +962,7 @@ static void ChangeDiffPadConfig(omObjData *arg0, ConfigWork *arg1) {
arg1->unk09 = 0; arg1->unk09 = 0;
} }
arg1->unk05 += var_r28; arg1->unk05 += var_r28;
if (GWGameStat.field10E_bit4 == 0 && arg1->unk05 == 4) { if (GWGameStat.veryHardUnlock == 0 && arg1->unk05 == 4) {
arg1->unk05 += var_r28; arg1->unk05 += var_r28;
} }
if (arg1->unk05 > var_r27) { if (arg1->unk05 > var_r27) {
@ -1100,7 +1100,7 @@ static s32 UpdatePauseBoxExt(omObjData *arg0, ConfigWork *arg1, s32 arg2) {
u32 temp_r28; u32 temp_r28;
Mtx sp8; Mtx sp8;
if (arg2 == 3 && GWGameStat.field10E_bit5 == 0) { if (arg2 == 3 && GWGameStat.customPackEnable == 0) {
var_r27 = 1; var_r27 = 1;
} else { } else {
var_r27 = 2; var_r27 = 2;

View file

@ -112,9 +112,9 @@ static inline void ResetFlag(GameStat *game_stat)
game_stat->story_continue = 0; game_stat->story_continue = 0;
game_stat->party_continue = 0; game_stat->party_continue = 0;
game_stat->open_w06 = 0; game_stat->open_w06 = 0;
game_stat->field10E_bit4 = 0; game_stat->veryHardUnlock = 0;
game_stat->field10E_bit5 = 0; game_stat->customPackEnable = 0;
game_stat->field10E_bit6 = 0; game_stat->musicAllF = 0;
} }
static inline void ResetPauseConfig(GameStat *game_stat) static inline void ResetPauseConfig(GameStat *game_stat)