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
_epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x8F4
fn_1_994 = .text:0x00000994; // type:function size:0xE50 scope:local
fn_1_17E4 = .text:0x000017E4; // type:function size:0xA28 scope:local
fn_1_220C = .text:0x0000220C; // type:function size:0x5F8 scope:local
fn_1_2804 = .text:0x00002804; // type:function size:0x79C scope:local
fn_1_2FA0 = .text:0x00002FA0; // type:function size:0x11D4 scope:local
fn_1_4174 = .text:0x00004174; // type:function size:0x3B4 scope:local
fn_1_4528 = .text:0x00004528; // type:function size:0xB88 scope:local
fn_1_50B0 = .text:0x000050B0; // type:function size:0xAB4 scope:local
fn_1_5B64 = .text:0x00005B64; // type:function size:0x340 scope:local
fn_1_5EA4 = .text:0x00005EA4; // type:function size:0x4B8
InstMain = .text:0x00000994; // type:function size:0xE50 scope:local
InstPlayerMain = .text:0x000017E4; // type:function size:0xA28 scope:local
InstHostMain = .text:0x0000220C; // type:function size:0x5F8 scope:local
InstWinMain = .text:0x00002804; // type:function size:0x79C scope:local
InstNameMain = .text:0x00002FA0; // type:function size:0x11D4 scope:local
CameraOutView = .text:0x00004174; // type:function size:0x3B4 scope:local
CameraDebug = .text:0x00004528; // type:function size:0xB88 scope:local
InstPicDraw = .text:0x000050B0; // type:function size:0xAB4 scope:local
ShadowDraw = .text:0x00005B64; // type:function size:0x340 scope:local
FontCreate = .text:0x00005EA4; // type:function size:0x4B8
_ctors = .ctors: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
@ -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_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_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_26 = .data:0x00000026; // type:object size:0x20 scope:local
lbl_1_data_46 = .data:0x00000046; // type:object size:0x8 scope:local
lbl_1_data_50 = .data:0x00000050; // type:object size:0x20 scope:local
lbl_1_data_70 = .data:0x00000070; // type:object size:0x20 scope:local
instGrpTbl = .data:0x00000026; // type:object size:0x20 scope:local
instPlayerNumTbl = .data:0x00000046; // type:object size:0x8 scope:local
instBoxFile = .data:0x00000050; // 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_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_A8 = .data:0x000000A8; // type:object size:0x8 scope:local data:string
lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10 scope:local
lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x4 scope:local
lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x48 scope:local
lbl_1_data_10C = .data:0x0000010C; // type:object size:0x18 scope:local
lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 scope:local data:float
lbl_1_data_144 = .data:0x00000144; // type:object size:0x4 scope:local
playerPosNameTbl = .data:0x000000B0; // type:object size:0x10 scope:local
playerDelayTbl = .data:0x000000C0; // type:object size:0x4 scope:local
hostFileTbl = .data:0x000000C4; // type:object size:0x48 scope:local
hostSeTbl = .data:0x0000010C; // type:object size:0x18 scope:local
instNamePosTbl = .data:0x00000124; // type:object size:0x20 scope:local data:float
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_14C = .data:0x0000014C; // type:object size:0x4 scope:local data:float
lbl_1_data_150 = .data:0x00000150; // type:object size:0x318 scope:local
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:float
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 scope:local data:float
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x18 scope:local data:float
lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x18 scope:local data:float
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte
instPicRadius = .data:0x0000014C; // type:object size:0x4 scope:local data:float
FontCharFile = .data:0x00000150; // type:object size:0x318 scope:local
debugCamOnF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
instBusyF = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte
instPage = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte
LanguageNo = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
instFov = .bss:0x0000000C; // type:object size:0x4 scope:local data:float
instMesOfs = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte
instHostNo = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte
instMgNo = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte
instPicAnim = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
instBoxMdlId = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte
cameraZoom = .bss:0x00000020; // type:object size:0x8 data:float
cameraPos = .bss:0x00000028; // type:object size:0x18 data:float
cameraRot = .bss:0x00000040; // type:object size:0x18 data:float
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
_epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x438
fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0
fn_1_888 = .text:0x00000888; // type:function size:0x2F0
fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4
fn_1_1F4C = .text:0x00001F4C; // type:function size:0xB90
fn_1_2ADC = .text:0x00002ADC; // type:function size:0x1074
fn_1_3B50 = .text:0x00003B50; // type:function size:0x15C
fn_1_3CAC = .text:0x00003CAC; // type:function size:0x15C
fn_1_3E08 = .text:0x00003E08; // type:function size:0x1D0
fn_1_3FD8 = .text:0x00003FD8; // type:function size:0x104
fn_1_40DC = .text:0x000040DC; // type:function size:0x160
fn_1_423C = .text:0x0000423C; // type:function size:0x3E0
fn_1_461C = .text:0x0000461C; // type:function size:0x1E0
fn_1_47FC = .text:0x000047FC; // type:function size:0x1084
fn_1_5880 = .text:0x00005880; // type:function size:0xC10
fn_1_6490 = .text:0x00006490; // type:function size:0x2D0
fn_1_6760 = .text:0x00006760; // type:function size:0xC4
fn_1_6824 = .text:0x00006824; // type:function size:0xD20
fn_1_7544 = .text:0x00007544; // type:function size:0xA54
fn_1_7F98 = .text:0x00007F98; // type:function size:0x3A0
fn_1_8338 = .text:0x00008338; // type:function size:0x14C
fn_1_8484 = .text:0x00008484; // type:function size:0x1D4
fn_1_8658 = .text:0x00008658; // type:function size:0x84
fn_1_86DC = .text:0x000086DC; // type:function size:0x2BC
fn_1_8998 = .text:0x00008998; // type:function size:0x320
fn_1_8CB8 = .text:0x00008CB8; // type:function size:0x340
fn_1_8FF8 = .text:0x00008FF8; // type:function size:0x284
fn_1_927C = .text:0x0000927C; // type:function size:0x138
fn_1_93B4 = .text:0x000093B4; // type:function size:0x78
ResultMain = .text:0x000004D8; // type:function size:0x3B0 scope:local
ResultIdle = .text:0x00000888; // type:function size:0x2F0 scope:local
ResultCreate = .text:0x00000B78; // type:function size:0x13D4 scope:local
ResultStatAdd = .text:0x00001F4C; // type:function size:0xB90 scope:local
ResultOrderApply = .text:0x00002ADC; // type:function size:0x1074 scope:local
ResultSprNumSet = .text:0x00003B50; // type:function size:0x15C scope:local
ResultCoinAddNumSet = .text:0x00003CAC; // type:function size:0x15C scope:local
ResultOrderSet = .text:0x00003E08; // type:function size:0x1D0 scope:local
ResultBoardDataRead = .text:0x00003FD8; // type:function size:0x104
ResultCoinAdd = .text:0x000040DC; // type:function size:0x160
ResultCoinNumGet = .text:0x0000423C; // type:function size:0x3E0
SaveExec = .text:0x0000461C; // type:function size:0x1E0 scope:local
ResultTeamExec = .text:0x000047FC; // type:function size:0x1084 scope:local
CameraDebug = .text:0x00005880; // type:function size:0xC10
ResultBattleMain = .text:0x00006490; // type:function size:0x2D0
ResultBattleIdle = .text:0x00006760; // type:function size:0xC4 scope:local
ResultBattleCreate = .text:0x00006824; // type:function size:0xD20 scope:local
ResultBattleStatAdd = .text:0x00007544; // type:function size:0xA54 scope:local
ResultBattleCoinAddShow = .text:0x00007F98; // type:function size:0x3A0 scope:local
ResultBattleCoinAddNumSet = .text:0x00008338; // type:function size:0x14C scope:local
ResultBattleOrderSet = .text:0x00008484; // type:function size:0x1D4 scope:local
CoinEffectInit = .text:0x00008658; // type:function size:0x84 scope:local
CoinEffectAdd = .text:0x000086DC; // type:function size:0x2BC scope:local
CoinEffectMain = .text:0x00008998; // type:function size:0x320 scope:local
ResultShadowDraw = .text:0x00008CB8; // type:function size:0x340 scope:local
StageModelCreate = .text:0x00008FF8; // type:function size:0x284
StageSpriteCreate = .text:0x0000927C; // type:function size:0x138
StageSpriteKill = .text:0x000093B4; // type:function size:0x78
_ctors = .ctors: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
@ -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_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_data_0 = .data:0x00000000; // type:object size:0x2A4
lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0xDC data:4byte
lbl_1_data_380 = .data:0x00000380; // type:object size:0x2 data:2byte
resultModel = .data:0x00000000; // type:object size:0x2A4 scope:local
resultSprite = .data:0x000002A4; // type:object size:0xDC scope:local data:4byte
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_3A8 = .data:0x000003A8; // type:object size:0x18
lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x18
lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x20
lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x10
lbl_1_data_408 = .data:0x00000408; // type:object size:0x30
lbl_1_data_438 = .data:0x00000438; // type:object size:0x10
resultBackFile = .data:0x000003A8; // type:object size:0x18 scope:local
resultLetterFile = .data:0x000003C0; // type:object size:0x18 scope:local
resultStatPosTbl = .data:0x000003D8; // type:object size:0x20 scope:local
resultRankPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local
resultCharPosTbl = .data:0x00000408; // type:object size:0x30 scope:local
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_450 = .data:0x00000450; // type:object size:0x18
lbl_1_data_468 = .data:0x00000468; // type:object size:0x20
lbl_1_data_488 = .data:0x00000488; // type:object size:0x30
resultBoardDirTbl = .data:0x00000450; // type:object size:0x18 scope:local
resultCharMdlTbl = .data:0x00000468; // type:object size:0x20 scope:local
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_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_4E8 = .data:0x000004E8; // type:object size:0x270
lbl_1_data_758 = .data:0x00000758; // type:object size:0x28
lbl_1_data_780 = .data:0x00000780; // type:object size:0x50
lbl_1_data_7D0 = .data:0x000007D0; // type:object size:0x20
lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x30
resultBattleModel = .data:0x000004E8; // type:object size:0x270 scope:local
resultBattleSprite = .data:0x00000758; // type:object size:0x28 scope:local
resultBattleEffParMan = .data:0x00000780; // type:object size:0x50 scope:local
resultStatPosTbl = .data:0x000007D0; // type:object size:0x20 scope:local
playerPosTbl = .data:0x000007F0; // type:object size:0x30 scope:local
lbl_1_data_820 = .data:0x00000820; // type:object size:0x10
lbl_1_data_830 = .data:0x00000830; // type:object size:0x10
lbl_1_data_840 = .data:0x00000840; // type:object size:0x20
lbl_1_data_860 = .data:0x00000860; // type:object size:0x20
lbl_1_data_880 = .data:0x00000880; // type:object size:0x20
lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x6 data:2byte
lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:float
lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:float
lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x60
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte
lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x8
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x28
lbl_1_bss_3A = .bss:0x0000003A; // type:object size:0x8
lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x8
lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x8
lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte
lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x40
lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x2 data:2byte
lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x30
lbl_1_bss_CE = .bss:0x000000CE; // type:object size:0x12
lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte
lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x60
lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x14
lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x10
lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x8
lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x2 data:2byte
lbl_1_bss_172 = .bss:0x00000172; // type:object size:0x2 data:2byte
lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte
lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte
lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte
lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte
lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x4 data:4byte
bomheiCubeMdlTbl = .data:0x00000830; // type:object size:0x10 scope:local
coinEffectYOfs = .data:0x00000840; // type:object size:0x20 scope:local
coinAddYOfs = .data:0x00000860; // type:object size:0x20 scope:local
coinBlankYOfs = .data:0x00000880; // type:object size:0x20 scope:local
coinNumXOfs = .data:0x000008A0; // type:object size:0x6 scope:local data:2byte
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:string
cameraShakeOfs = .data:0x000008B8; // type:object size:0x60 scope:local
resultReorderF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
resultSkipF = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte
resultTeamOrder = .bss:0x00000008; // type:object size:0x2 scope:local data:2byte
resultCharCubeMdlId = .bss:0x0000000A; // type:object size:0x8 scope:local
resultCoinAddSprId = .bss:0x00000012; // type:object size:0x28 scope:local
resultCoinAddGrpId = .bss:0x0000003A; // type:object size:0x8 scope:local
resultRank = .bss:0x00000042; // type:object size:0x8 scope:local
resultOrder = .bss:0x0000004A; // type:object size:0x8 scope:local
resultRankGrpId = .bss:0x00000052; // type:object size:0x2 scope:local data:2byte
resultPlayerCubeMdlId = .bss:0x00000054; // type:object size:0x8 scope:local
resultCubeMdlId = .bss:0x0000005C; // type:object size:0x40 scope:local
resultCrownGrpId = .bss:0x0000009C; // type:object size:0x2 scope:local data:2byte
resultNumSprId = .bss:0x0000009E; // type:object size:0x30 scope:local
resultNumGrpId = .bss:0x000000CE; // type:object size:0x10 scope:local
resultCrownAnim = .bss:0x000000E0; // type:object size:0x4 scope:local data:4byte
resultCharAnim = .bss:0x000000E4; // type:object size:0x60 scope:local
resultRankAnim = .bss:0x00000144; // type:object size:0x14 scope:local
statShadowMdlId = .bss:0x00000158; // type:object size:0x10 scope:local
charShadowMdlId = .bss:0x00000168; // type:object size:0x8 scope:local
teamResultGrpId = .bss:0x00000170; // type:object size:0x2 scope:local data:2byte
resultBonusPlayer = .bss:0x00000172; // type:object size:0x2 data:2byte
resultFastF = .bss:0x00000174; // type:object size:0x4 data:4byte
resultReadEndF = .bss:0x00000178; // type:object size:0x4 data:4byte
resultMgNo = .bss:0x0000017C; // type:object size:0x2 data:2byte
objman = .bss:0x00000180; // 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_190 = .bss:0x00000190; // type:object size:0x4 data:4byte
lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680
lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x8
resultBattleSkipF = .bss:0x00000190; // type:object size:0x4 scope:local data:4byte
coinEffectData = .bss:0x00000194; // type:object size:0x1680 scope:local
resultBattleEffParManId = .bss:0x00001814; // type:object size:0x8 scope:local
lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC
lbl_1_bss_1828 = .bss:0x00001828; // type:object size:0x168 data:2byte
lbl_1_bss_1990 = .bss:0x00001990; // type:object size:0x20
lbl_1_bss_19B0 = .bss:0x000019B0; // type:object size:0x8
lbl_1_bss_19B8 = .bss:0x000019B8; // type:object size:0x28
lbl_1_bss_19E0 = .bss:0x000019E0; // type:object size:0x8
lbl_1_bss_19E8 = .bss:0x000019E8; // type:object size:0x8
lbl_1_bss_19F0 = .bss:0x000019F0; // type:object size:0x8
coinEffectMdlId = .bss:0x00001828; // type:object size:0x168 scope:local data:2byte
resultBattleCharMot = .bss:0x00001990; // type:object size:0x20 scope:local
resultBattleCharMdl = .bss:0x000019B0; // type:object size:0x8 scope:local
coinNumSprId = .bss:0x000019B8; // type:object size:0x28 scope:local
coinNumGrpId = .bss:0x000019E0; // type:object size:0x8 scope:local
resultBattleRank = .bss:0x000019E8; // type:object size:0x8 scope:local
resultBattleOrder = .bss:0x000019F0; // type:object size:0x8 scope:local
lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20
lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2
lbl_1_bss_1A1A = .bss:0x00001A1A; // type:object size:0x42 data:2byte
lbl_1_bss_1A5C = .bss:0x00001A5C; // type:object size:0x40 data:2byte
lbl_1_bss_1A9C = .bss:0x00001A9C; // type:object size:0x40 data:2byte
stageSprId = .bss:0x00001A1A; // type:object size:0x42 data:2byte
stageMotId = .bss:0x00001A5C; // 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
aT = .rodata:0x8011E9F8; // type:object size:0x58 scope:local
@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
lbl_8011EAA0 = .rodata:0x8011EAA0; // 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
_epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x8F4
fn_1_994 = .text:0x00000994; // type:function size:0xE50
fn_1_17E4 = .text:0x000017E4; // type:function size:0xA28
fn_1_220C = .text:0x0000220C; // type:function size:0x5F8
fn_1_2804 = .text:0x00002804; // type:function size:0x79C
fn_1_2FA0 = .text:0x00002FA0; // type:function size:0x11D4
fn_1_4174 = .text:0x00004174; // type:function size:0x3B4
fn_1_4528 = .text:0x00004528; // type:function size:0xB88
fn_1_50B0 = .text:0x000050B0; // type:function size:0xAB4
fn_1_5B64 = .text:0x00005B64; // type:function size:0x340
fn_1_5EA4 = .text:0x00005EA4; // type:function size:0x3F8
InstMain = .text:0x00000994; // type:function size:0xE50 scope:local
InstPlayerMain = .text:0x000017E4; // type:function size:0xA28 scope:local
InstHostMain = .text:0x0000220C; // type:function size:0x5F8 scope:local
InstWinMain = .text:0x00002804; // type:function size:0x79C scope:local
InstNameMain = .text:0x00002FA0; // type:function size:0x11D4 scope:local
CameraOutView = .text:0x00004174; // type:function size:0x3B4 scope:local
CameraDebug = .text:0x00004528; // type:function size:0xB88 scope:local
InstPicDraw = .text:0x000050B0; // type:function size:0xAB4 scope:local
ShadowDraw = .text:0x00005B64; // type:function size:0x340 scope:local
FontCreate = .text:0x00005EA4; // type:function size:0x3F8
_ctors = .ctors: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
@ -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_200 = .rodata:0x00000200; // type:object size:0x4 data:float
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double
lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte
lbl_1_data_2 = .data:0x00000002; // type:object size:0x24 data:string
lbl_1_data_26 = .data:0x00000026; // type:object size:0x20
lbl_1_data_46 = .data:0x00000046; // type:object size:0xA
lbl_1_data_50 = .data:0x00000050; // type:object size:0x20
lbl_1_data_70 = .data:0x00000070; // type:object size:0x20
lbl_1_data_90 = .data:0x00000090; // type:object size:0x8 data:string
lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 data:string
lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 data:string
lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x8 data:string
lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x10
lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x4
lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x48
lbl_1_data_10C = .data:0x0000010C; // type:object size:0x18
lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 data:float
lbl_1_data_144 = .data:0x00000144; // type:object size:0x8
lbl_1_data_14C = .data:0x0000014C; // type:object size:0x4 data:float
lbl_1_data_150 = .data:0x00000150; // type:object size:0x4C0
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte
lbl_1_bss_6 = .bss:0x00000006; // type:object size:0x2 data:2byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x1 data:byte
lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte
lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x8 data:float
lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x18 data:float
lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x18 data:float
lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x8 data:4byte
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
instGrpTbl = .data:0x00000026; // type:object size:0x20 scope:local
instPlayerNumTbl = .data:0x00000046; // type:object size:0x8 scope:local
instBoxFile = .data:0x00000050; // 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_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_A8 = .data:0x000000A8; // type:object size:0x8 scope:local data:string
playerPosNameTbl = .data:0x000000B0; // type:object size:0x10 scope:local
playerDelayTbl = .data:0x000000C0; // type:object size:0x4 scope:local
hostFileTbl = .data:0x000000C4; // type:object size:0x48 scope:local
hostSeTbl = .data:0x0000010C; // type:object size:0x18 scope:local
instNamePosTbl = .data:0x00000124; // type:object size:0x20 scope:local data:float
cameraMask$858 = .data:0x00000144; // type:object size:0x4 scope:local
lbl_1_data_148 = .data:0x00000148; // type:object size:0x4 scope:local
instPicRadius = .data:0x0000014C; // type:object size:0x4 scope:local data:float
FontCharFile = .data:0x00000150; // type:object size:0x4C0 scope:local
debugCamOnF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
instBusyF = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte
instPage = .bss:0x00000006; // type:object size:0x2 scope:local data:2byte
LanguageNo = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
instFov = .bss:0x0000000C; // type:object size:0x4 scope:local data:float
instMesOfs = .bss:0x00000010; // type:object size:0x2 scope:local data:2byte
instHostNo = .bss:0x00000012; // type:object size:0x2 scope:local data:2byte
instMgNo = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte
instPicAnim = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
instBoxMdlId = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte
cameraZoom = .bss:0x00000020; // type:object size:0x8 data:float
cameraPos = .bss:0x00000028; // type:object size:0x18 data:float
cameraRot = .bss:0x00000040; // type:object size:0x18 data:float
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
_epilog = .text:0x00000054; // type:function size:0x4C scope:global
ObjectSetup = .text:0x000000A0; // type:function size:0x438
fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0
fn_1_888 = .text:0x00000888; // type:function size:0x2F0
fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4
fn_1_1F4C = .text:0x00001F4C; // type:function size:0xB90
fn_1_2ADC = .text:0x00002ADC; // type:function size:0x1074
fn_1_3B50 = .text:0x00003B50; // type:function size:0x15C
fn_1_3CAC = .text:0x00003CAC; // type:function size:0x15C
fn_1_3E08 = .text:0x00003E08; // type:function size:0x1D0
fn_1_3FD8 = .text:0x00003FD8; // type:function size:0x104
fn_1_40DC = .text:0x000040DC; // type:function size:0x160
fn_1_423C = .text:0x0000423C; // type:function size:0x3E0
fn_1_461C = .text:0x0000461C; // type:function size:0x1E0
fn_1_47FC = .text:0x000047FC; // type:function size:0x1084
fn_1_5880 = .text:0x00005880; // type:function size:0xC10
fn_1_6490 = .text:0x00006490; // type:function size:0x2D0
fn_1_6760 = .text:0x00006760; // type:function size:0xC4
fn_1_6824 = .text:0x00006824; // type:function size:0xD20
fn_1_7544 = .text:0x00007544; // type:function size:0xA54
fn_1_7F98 = .text:0x00007F98; // type:function size:0x3A0
fn_1_8338 = .text:0x00008338; // type:function size:0x14C
fn_1_8484 = .text:0x00008484; // type:function size:0x1D4
fn_1_8658 = .text:0x00008658; // type:function size:0x84
fn_1_86DC = .text:0x000086DC; // type:function size:0x2BC
fn_1_8998 = .text:0x00008998; // type:function size:0x320
fn_1_8CB8 = .text:0x00008CB8; // type:function size:0x340
fn_1_8FF8 = .text:0x00008FF8; // type:function size:0x284
fn_1_927C = .text:0x0000927C; // type:function size:0x138
fn_1_93B4 = .text:0x000093B4; // type:function size:0x78
ResultMain = .text:0x000004D8; // type:function size:0x3B0 scope:local
ResultIdle = .text:0x00000888; // type:function size:0x2F0 scope:local
ResultCreate = .text:0x00000B78; // type:function size:0x13D4 scope:local
ResultStatAdd = .text:0x00001F4C; // type:function size:0xB90 scope:local
ResultOrderApply = .text:0x00002ADC; // type:function size:0x1074 scope:local
ResultSprNumSet = .text:0x00003B50; // type:function size:0x15C scope:local
ResultCoinAddNumSet = .text:0x00003CAC; // type:function size:0x15C scope:local
ResultOrderSet = .text:0x00003E08; // type:function size:0x1D0 scope:local
ResultBoardDataRead = .text:0x00003FD8; // type:function size:0x104
ResultCoinAdd = .text:0x000040DC; // type:function size:0x160
ResultCoinNumGet = .text:0x0000423C; // type:function size:0x3E0
SaveExec = .text:0x0000461C; // type:function size:0x1E0 scope:local
ResultTeamExec = .text:0x000047FC; // type:function size:0x1084 scope:local
CameraDebug = .text:0x00005880; // type:function size:0xC10
ResultBattleMain = .text:0x00006490; // type:function size:0x2D0
ResultBattleIdle = .text:0x00006760; // type:function size:0xC4 scope:local
ResultBattleCreate = .text:0x00006824; // type:function size:0xD20 scope:local
ResultBattleStatAdd = .text:0x00007544; // type:function size:0xA54 scope:local
ResultBattleCoinAddShow = .text:0x00007F98; // type:function size:0x3A0 scope:local
ResultBattleCoinAddNumSet = .text:0x00008338; // type:function size:0x14C scope:local
ResultBattleOrderSet = .text:0x00008484; // type:function size:0x1D4 scope:local
CoinEffectInit = .text:0x00008658; // type:function size:0x84 scope:local
CoinEffectAdd = .text:0x000086DC; // type:function size:0x2BC scope:local
CoinEffectMain = .text:0x00008998; // type:function size:0x320 scope:local
ResultShadowDraw = .text:0x00008CB8; // type:function size:0x340 scope:local
StageModelCreate = .text:0x00008FF8; // type:function size:0x284
StageSpriteCreate = .text:0x0000927C; // type:function size:0x138
StageSpriteKill = .text:0x000093B4; // type:function size:0x78
_ctors = .ctors: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
@ -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_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_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_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
@ -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_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_data_0 = .data:0x00000000; // type:object size:0x2A4
lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0xDC data:4byte
lbl_1_data_380 = .data:0x00000380; // type:object size:0x2 data:2byte
resultModel = .data:0x00000000; // type:object size:0x2A4 scope:local
resultSprite = .data:0x000002A4; // type:object size:0xDC scope:local data:4byte
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_3A8 = .data:0x000003A8; // type:object size:0x18
lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x18
lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x20
lbl_1_data_3F8 = .data:0x000003F8; // type:object size:0x10
lbl_1_data_408 = .data:0x00000408; // type:object size:0x30
lbl_1_data_438 = .data:0x00000438; // type:object size:0x10
lbl_1_data_448 = .data:0x00000448; // type:object size:0x8 scope:local
lbl_1_data_450 = .data:0x00000450; // type:object size:0x18
lbl_1_data_468 = .data:0x00000468; // type:object size:0x20
lbl_1_data_488 = .data:0x00000488; // type:object size:0x30
resultBackFile = .data:0x000003A8; // type:object size:0x18 scope:local
resultLetterFile = .data:0x000003C0; // type:object size:0x18 scope:local
resultStatPosTbl = .data:0x000003D8; // type:object size:0x20 scope:local
resultRankPosTbl = .data:0x000003F8; // type:object size:0x10 scope:local
resultCharPosTbl = .data:0x00000408; // type:object size:0x30 scope:local
resultCoinAddPosTbl = .data:0x00000438; // type:object size:0x10 scope:local
lbl_1_data_448 = .data:0x00000448; // type:object size:0x5 scope:local data:string
resultBoardDirTbl = .data:0x00000450; // type:object size:0x18 scope:local
resultCharMdlTbl = .data:0x00000468; // type:object size:0x20 scope:local
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_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_4E8 = .data:0x000004E8; // type:object size:0x270
lbl_1_data_758 = .data:0x00000758; // type:object size:0x28
lbl_1_data_780 = .data:0x00000780; // type:object size:0x50
lbl_1_data_7D0 = .data:0x000007D0; // type:object size:0x20
lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x30
resultBattleModel = .data:0x000004E8; // type:object size:0x270 scope:local
resultBattleSprite = .data:0x00000758; // type:object size:0x28 scope:local
resultBattleEffParMan = .data:0x00000780; // type:object size:0x50 scope:local
resultStatPosTbl = .data:0x000007D0; // type:object size:0x20 scope:local
playerPosTbl = .data:0x000007F0; // type:object size:0x30 scope:local
lbl_1_data_820 = .data:0x00000820; // type:object size:0x10
lbl_1_data_830 = .data:0x00000830; // type:object size:0x10
lbl_1_data_840 = .data:0x00000840; // type:object size:0x20
lbl_1_data_860 = .data:0x00000860; // type:object size:0x20
lbl_1_data_880 = .data:0x00000880; // type:object size:0x20
lbl_1_data_8A0 = .data:0x000008A0; // type:object size:0x6 data:2byte
lbl_1_data_8A6 = .data:0x000008A6; // type:object size:0x8 scope:local data:float
lbl_1_data_8AE = .data:0x000008AE; // type:object size:0x8 scope:local data:float
lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x60
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte
lbl_1_bss_A = .bss:0x0000000A; // type:object size:0x8
lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x28
lbl_1_bss_3A = .bss:0x0000003A; // type:object size:0x8
lbl_1_bss_42 = .bss:0x00000042; // type:object size:0x8
lbl_1_bss_4A = .bss:0x0000004A; // type:object size:0x8
lbl_1_bss_52 = .bss:0x00000052; // type:object size:0x2 data:2byte
lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8
lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x40
lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x2 data:2byte
lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x30
lbl_1_bss_CE = .bss:0x000000CE; // type:object size:0x12
lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x4 data:4byte
lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x60
lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x14
lbl_1_bss_158 = .bss:0x00000158; // type:object size:0x10
lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x8
lbl_1_bss_170 = .bss:0x00000170; // type:object size:0x2 data:2byte
lbl_1_bss_172 = .bss:0x00000172; // type:object size:0x2 data:2byte
lbl_1_bss_174 = .bss:0x00000174; // type:object size:0x4 data:4byte
lbl_1_bss_178 = .bss:0x00000178; // type:object size:0x4 data:4byte
lbl_1_bss_17C = .bss:0x0000017C; // type:object size:0x2 data:2byte
lbl_1_bss_180 = .bss:0x00000180; // type:object size:0x4 data:4byte
lbl_1_bss_184 = .bss:0x00000184; // type:object size:0x4 data:4byte
bomheiCubeMdlTbl = .data:0x00000830; // type:object size:0x10 scope:local
coinEffectYOfs = .data:0x00000840; // type:object size:0x20 scope:local
coinAddYOfs = .data:0x00000860; // type:object size:0x20 scope:local
coinBlankYOfs = .data:0x00000880; // type:object size:0x20 scope:local
coinNumXOfs = .data:0x000008A0; // type:object size:0x6 scope:local data:2byte
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:string
cameraShakeOfs = .data:0x000008B8; // type:object size:0x60 scope:local
resultReorderF = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte
resultSkipF = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte
resultTeamOrder = .bss:0x00000008; // type:object size:0x2 scope:local data:2byte
resultCharCubeMdlId = .bss:0x0000000A; // type:object size:0x8 scope:local
resultCoinAddSprId = .bss:0x00000012; // type:object size:0x28 scope:local
resultCoinAddGrpId = .bss:0x0000003A; // type:object size:0x8 scope:local
resultRank = .bss:0x00000042; // type:object size:0x8 scope:local
resultOrder = .bss:0x0000004A; // type:object size:0x8 scope:local
resultRankGrpId = .bss:0x00000052; // type:object size:0x2 scope:local data:2byte
resultPlayerCubeMdlId = .bss:0x00000054; // type:object size:0x8 scope:local
resultCubeMdlId = .bss:0x0000005C; // type:object size:0x40 scope:local
resultCrownGrpId = .bss:0x0000009C; // type:object size:0x2 scope:local data:2byte
resultNumSprId = .bss:0x0000009E; // type:object size:0x30 scope:local
resultNumGrpId = .bss:0x000000CE; // type:object size:0x10 scope:local
resultCrownAnim = .bss:0x000000E0; // type:object size:0x4 scope:local data:4byte
resultCharAnim = .bss:0x000000E4; // type:object size:0x60 scope:local
resultRankAnim = .bss:0x00000144; // type:object size:0x14 scope:local
statShadowMdlId = .bss:0x00000158; // type:object size:0x10 scope:local
charShadowMdlId = .bss:0x00000168; // type:object size:0x8 scope:local
teamResultGrpId = .bss:0x00000170; // type:object size:0x2 scope:local data:2byte
resultBonusPlayer = .bss:0x00000172; // type:object size:0x2 data:2byte
resultFastF = .bss:0x00000174; // type:object size:0x4 data:4byte
resultReadEndF = .bss:0x00000178; // type:object size:0x4 data:4byte
resultMgNo = .bss:0x0000017C; // type:object size:0x2 data:2byte
objman = .bss:0x00000180; // 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_190 = .bss:0x00000190; // type:object size:0x4 data:4byte
lbl_1_bss_194 = .bss:0x00000194; // type:object size:0x1680
lbl_1_bss_1814 = .bss:0x00001814; // type:object size:0x8
resultBattleSkipF = .bss:0x00000190; // type:object size:0x4 scope:local data:4byte
coinEffectData = .bss:0x00000194; // type:object size:0x1680 scope:local
resultBattleEffParManId = .bss:0x00001814; // type:object size:0x8 scope:local
lbl_1_bss_181C = .bss:0x0000181C; // type:object size:0xC
lbl_1_bss_1828 = .bss:0x00001828; // type:object size:0x168 data:2byte
lbl_1_bss_1990 = .bss:0x00001990; // type:object size:0x20
lbl_1_bss_19B0 = .bss:0x000019B0; // type:object size:0x8
lbl_1_bss_19B8 = .bss:0x000019B8; // type:object size:0x28
lbl_1_bss_19E0 = .bss:0x000019E0; // type:object size:0x8
lbl_1_bss_19E8 = .bss:0x000019E8; // type:object size:0x8
lbl_1_bss_19F0 = .bss:0x000019F0; // type:object size:0x8
coinEffectMdlId = .bss:0x00001828; // type:object size:0x168 scope:local data:2byte
resultBattleCharMot = .bss:0x00001990; // type:object size:0x20 scope:local
resultBattleCharMdl = .bss:0x000019B0; // type:object size:0x8 scope:local
coinNumSprId = .bss:0x000019B8; // type:object size:0x28 scope:local
coinNumGrpId = .bss:0x000019E0; // type:object size:0x8 scope:local
resultBattleRank = .bss:0x000019E8; // type:object size:0x8 scope:local
resultBattleOrder = .bss:0x000019F0; // type:object size:0x8 scope:local
lbl_1_bss_19F8 = .bss:0x000019F8; // type:object size:0x20
lbl_1_bss_1A18 = .bss:0x00001A18; // type:object size:0x2
lbl_1_bss_1A1A = .bss:0x00001A1A; // type:object size:0x42 data:2byte
lbl_1_bss_1A5C = .bss:0x00001A5C; // type:object size:0x40 data:2byte
lbl_1_bss_1A9C = .bss:0x00001A9C; // type:object size:0x40 data:2byte
stageSprId = .bss:0x00001A1A; // type:object size:0x42 data:2byte
stageMotId = .bss:0x00001A5C; // 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_base,
"-use_lmw_stmw on",
"-str reuse,pool,readonly",
"-str reuse,readonly",
"-common off",
"-sdata 0",
"-sdata2 0",
"-inline auto,deferred",
"-pool off",
"-enum min",
"-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/nubevent.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubinit.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/msg.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/msgbuf.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/serpoll.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/usr_put.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/dispatch.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/msghndlr.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/support.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msg.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msgbuf.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/serpoll.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/usr_put.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/dispatch.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/msghndlr.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(NonMatching, "TRK_MINNOW_DOLPHIN/notify.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(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/targcont.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/target_options.c"),
Object(NonMatching, "TRK_MINNOW_DOLPHIN/mslsupp.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/target_options.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mslsupp.c"),
],
},
MusyX(
@ -1457,9 +1456,9 @@ config.libs = [
Rel(
"resultDll",
objects={
Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/resultDll/main.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/resultDll/battle.c"),
Object(MatchingFor("GMPE01_00", "GMPE01_01", "GMPJ01_00"), "REL/resultDll/datalist.c"),
Object(Matching, "REL/resultDll/main.c"),
Object(Matching, "REL/resultDll/battle.c"),
Object(Matching, "REL/resultDll/datalist.c"),
},
),
Rel(

View file

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

View file

@ -3,6 +3,6 @@
#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

View file

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

View file

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

View file

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

View file

@ -15,12 +15,12 @@ DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2,
int p3);
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,
u8 param_3, DSIOResult* ioResult);
DSError HandlePositionFileSupportRequest(u32 replyErr, u32* param_2,
u8 param_3, u8* ioResult);
#ifdef __cplusplus
}

View file

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

View file

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

View file

@ -2,7 +2,7 @@
#include "REL/instDll.h"
s32 lbl_1_data_150[0xC6] = {
static s32 FontCharFile[0xC6] = {
0,
0,
0,
@ -203,115 +203,115 @@ s32 lbl_1_data_150[0xC6] = {
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;
s16 var_r30;
s16 *var_r29;
s16 var_r28;
s32 *var_r27;
s16 var_r26;
s16 var_r25;
s32 var_r24;
s16 *var_r22;
AnimData **var_r21;
s16 var_r20;
s16 var_r19;
char *str;
s16 len;
s16 *posY;
s16 charNum;
s32 *fileTbl;
s16 i;
s16 grpNo;
s32 file;
s16 *posX;
AnimData **animP;
s16 gid;
s16 sprid;
var_r27 = lbl_1_data_150;
for (var_r25 = 0; var_r25 < 0x10; var_r25++) {
if (work->spr_grp[var_r25] == -1) {
fileTbl = FontCharFile;
for (grpNo = 0; grpNo < 0x10; grpNo++) {
if (work->spr_grp[grpNo] == -1) {
break;
}
}
if (var_r25 == 0x10) {
if (grpNo == 0x10) {
return -1;
}
var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190);
var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8);
var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8);
animP = HuMemDirectMalloc(HEAP_SYSTEM, 0x190);
posX = 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++) {
if (var_r31[0] == 0x20 || var_r31[0] == 0x10) {
var_r30 += 0xE;
for (str = mess, len = 0, charNum = 0; str[0] != 0; str++) {
if (str[0] == 0x20 || str[0] == 0x10) {
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 {
if (var_r31[1] == 0x80) {
if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) {
var_r24 = var_r27[var_r31[0] + 0x6A];
if (str[1] == 0x80) {
if ((str[0] >= 0x96) && (str[0] <= 0xA4)) {
file = fileTbl[str[0] + 0x6A];
}
else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) {
var_r24 = var_r27[var_r31[0] + 0x65];
else if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
file = fileTbl[str[0] + 0x65];
}
else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) {
var_r24 = var_r27[var_r31[0] + 0x43];
else if ((str[0] >= 0xD6) && (str[0] <= 0xE4)) {
file = fileTbl[str[0] + 0x43];
}
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) {
var_r24 = var_r27[var_r31[0] + 0x3E];
else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
file = fileTbl[str[0] + 0x3E];
}
}
else if (var_r31[1] == 0x81) {
if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) {
var_r24 = var_r27[var_r31[0] + 0x6A];
else if (str[1] == 0x81) {
if ((str[0] >= 0xAA) && (str[0] <= 0xAE)) {
file = fileTbl[str[0] + 0x6A];
}
else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) {
var_r24 = var_r27[var_r31[0] + 0x43];
else if ((str[0] >= 0xEA) && (str[0] <= 0xEE)) {
file = fileTbl[str[0] + 0x43];
}
}
else {
var_r24 = var_r27[var_r31[0]];
file = fileTbl[str[0]];
}
var_r21[var_r28] = HuSprAnimReadFile(var_r24);
var_r22[var_r28] = var_r30;
if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) {
var_r29[var_r28] = 2;
var_r30 += 0x12;
animP[charNum] = HuSprAnimReadFile(file);
posX[charNum] = len;
if ((str[0] >= 0x61) && (str[0] <= 0x7A)) {
posY[charNum] = 2;
len += 0x12;
}
else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) {
var_r29[var_r28] = 0;
var_r30 += 0x12;
else if ((str[0] == 0xC2) || (str[0] == 0xC3)) {
posY[charNum] = 0;
len += 0x12;
}
else if (var_r31[0] == 0x5C || var_r31[0] == 0x85) {
var_r29[var_r28] = 0;
var_r30 += 8;
else if (str[0] == 0x5C || str[0] == 0x85) {
posY[charNum] = 0;
len += 8;
}
else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) {
var_r29[var_r28] = 4;
var_r30 += 0x18;
else if ((str[0] >= 0x87) && (str[0] <= 0x8F)) {
posY[charNum] = 4;
len += 0x18;
}
else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) {
var_r29[var_r28] = 4;
var_r30 += 0x18;
else if ((str[0] >= 0xC7) && (str[0] <= 0xCF)) {
posY[charNum] = 4;
len += 0x18;
}
else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) {
var_r29[var_r28] = 0;
var_r30 += 0x14;
else if ((str[0] == 0x3D) || (str[0] == 0x84)) {
posY[charNum] = 0;
len += 0x14;
}
else {
var_r29[var_r28] = 0;
var_r30 += 0x1C;
posY[charNum] = 0;
len += 0x1C;
}
var_r28++;
charNum++;
}
}
var_r20 = HuSprGrpCreate(var_r28);
work->spr_grp[var_r25] = var_r20;
work->alt_word_len = var_r30;
var_r30 = (var_r30 / 2) - 0xE;
for (var_r26 = 0; var_r26 < var_r28; var_r26++) {
var_r19 = HuSprCreate(var_r21[var_r26], 0, 0);
HuSprGrpMemberSet(var_r20, var_r26, var_r19);
HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]);
gid = HuSprGrpCreate(charNum);
work->spr_grp[grpNo] = gid;
work->alt_word_len = len;
len = (len / 2) - 0xE;
for (i = 0; i < charNum; i++) {
sprid = HuSprCreate(animP[i], 0, 0);
HuSprGrpMemberSet(gid, i, sprid);
HuSprPosSet(gid, i, posX[i] - len, posY[i]);
}
work->word_len = var_r28;
HuMemDirectFree(var_r21);
HuMemDirectFree(var_r22);
HuMemDirectFree(var_r29);
return var_r25;
work->word_len = charNum;
HuMemDirectFree(animP);
HuMemDirectFree(posX);
HuMemDirectFree(posY);
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);
}
lbl_1_bss_A8[4] = GWGameStat.open_w06;
lbl_1_bss_A8[5] = GWGameStat.field10E_bit4;
lbl_1_bss_A8[6] = GWGameStat.field10E_bit5;
lbl_1_bss_A8[5] = GWGameStat.veryHardUnlock;
lbl_1_bss_A8[6] = GWGameStat.customPackEnable;
switch (lbl_1_bss_A8[0]) {
case 0:
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 + 0xBE, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR");
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,
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");
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)
{
s32 var_r31;
@ -2757,7 +2749,7 @@ void fn_1_E874(omObjData *arg0, MentDllUnkBss35BCStruct *arg1)
var_r18 = 0;
}
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
for (var_r31 = 1; var_r31 < 4; var_r31++) {
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_r26 = arg0->unk64;
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++;
var_r28 = 1;
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)) {
if (GWGameStat.field10E_bit4 == 1) {
if (GWGameStat.veryHardUnlock == 1) {
arg0->unk64--;
var_r28 = -1;
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) {
GWGameStat.field10E_bit5 = 1;
GWGameStat.customPackEnable = 1;
}
else {
GWGameStat.field10E_bit5 = 0;
GWGameStat.customPackEnable = 0;
}
pos2D = lbl_1_data_40[2];
pos2D.z = 800;

View file

@ -1859,7 +1859,7 @@ void fn_1_A8C0(s16 boxno)
SLLoadBoardStory();
lbl_1_bss_EE[boxno] = GWGameStat.total_stars;
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_B8[boxno] = GWGameStat.party_continue;
if (GWGameStat.story_continue) {

View file

@ -2441,7 +2441,7 @@ s32 fn_1_19A98(MpexDllUnkStruct4 *arg0)
goto block_2;
}
}
if (GWGameStat.field10E_bit4 == 1) {
if (GWGameStat.veryHardUnlock == 1) {
arg0->unk_54++;
var_r28 = 1;
if (arg0->unk_54 > 3) {
@ -2457,7 +2457,7 @@ s32 fn_1_19A98(MpexDllUnkStruct4 *arg0)
goto block_1;
block_2:
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--;
var_r28 = -1;
if (arg0->unk_54 < 0) {

View file

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

View file

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

View file

@ -619,7 +619,7 @@ void fn_1_17570(void) {
} else {
fn_1_159A4();
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;
}
_SetFlag(9);

View file

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

View file

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

View file

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

View file

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

View file

@ -1,13 +1,13 @@
#include "REL/resultdll.h"
s16 lbl_1_bss_1A9C[32];
s16 lbl_1_bss_1A5C[32];
s16 lbl_1_bss_1A1A[33];
s16 stageMdlId[32];
s16 stageMotId[32];
s16 stageSprId[33];
s16 lbl_1_bss_1A18;
void fn_1_8FF8(DataListModel *model_list)
void StageModelCreate(StageModel *model_list)
{
DataListModel *list;
StageModel *list;
s16 i;
s16 model;
s16 clear_i;
@ -15,24 +15,24 @@ void fn_1_8FF8(DataListModel *model_list)
void *data;
list = model_list;
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++) {
if(list->type == 0) {
data = HuDataSelHeapReadNum(list->datanum, MEMORY_DEFAULT_NUM, HEAP_DATA);
model = Hu3DModelCreate(data);
lbl_1_bss_1A9C[i] = model;
stageMdlId[i] = model;
Hu3DModelAttrSet(model, list->attr);
Hu3DModelPosSetV(model, &list->pos);
Hu3DModelRotSetV(model, &list->rot);
Hu3DModelScaleSetV(model, &list->scale);
model_ptr = &Hu3DData[model];
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) {
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;
@ -40,33 +40,33 @@ void fn_1_8FF8(DataListModel *model_list)
list = model_list;
for(i=0; list->datanum != DATA_NUM_LISTEND; list++, i++) {
if(list->type == 2) {
model = Hu3DModelLink(lbl_1_bss_1A9C[list->link]);
lbl_1_bss_1A9C[i] = model;
model = Hu3DModelLink(stageMdlId[list->link]);
stageMdlId[i] = model;
Hu3DModelAttrSet(model, list->attr);
Hu3DModelPosSetV(model, &list->pos);
Hu3DModelRotSetV(model, &list->rot);
Hu3DModelScaleSetV(model, &list->scale);
}
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 fn_1_927C(DataListSprite *sprite_list)
void StageSpriteCreate(StageSprite *sprite_list)
{
DataListSprite *list;
StageSprite *list;
s16 sprite;
s16 clear_i;
s16 i;
list = sprite_list;
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++) {
sprite = espEntry(list->datanum, 100, 0);
lbl_1_bss_1A1A[i] = sprite;
stageSprId[i] = sprite;
espPosSet(sprite, list->x, list->y);
espColorSet(sprite, list->color.r, list->color.g, list->color.b);
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;
for(i=0; i<32; i++) {
if(lbl_1_bss_1A1A[i] != -1) {
espKill(lbl_1_bss_1A1A[i]);
if(stageSprId[i] != -1) {
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_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 (GWGameStat.field10E_bit4 == 1) {
if (GWGameStat.veryHardUnlock == 1) {
arg0->unk_54++;
var_r28 = 1;
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)) {
if (GWGameStat.field10E_bit4 == 1) {
if (GWGameStat.veryHardUnlock == 1) {
arg0->unk_54--;
var_r28 = -1;
if (arg0->unk_54 < 0) {

View file

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

View file

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

View file

@ -245,4 +245,4 @@ lbl_8037149C:
#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 "PowerPC_EABI_Support/MetroTRK/trk.h"
// Incorrect signature? Should be u8.
UARTError WriteUART1(s8 arg0);
DSError TRKMessageSend(TRK_Msg* msg)
{
DSError write_err = TRKWriteUARTN(&msg->m_msg, msg->m_msgLength);
return DS_NoError;
u8 var_r30;
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);
if (!buf->isInUse) {
TRKResetBuffer(buf, TRUE);
TRKResetBuffer(buf, 1);
TRKSetBufferUsed(buf, TRUE);
error = DS_NoError;
*outMsg = buf;
@ -44,6 +44,10 @@ DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg)
TRKReleaseMutex(buf);
}
if (error == DS_NoMessageBufferAvailable) {
usr_puts_serial("ERROR : No buffer available\n");
}
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->position = 0;
@ -96,6 +100,7 @@ DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos)
return error;
}
#pragma dont_inline on
DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length)
{
DSError error = DS_NoError; // r31
@ -129,6 +134,7 @@ DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length)
return error;
}
#pragma dont_inline reset
DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length)
{

View file

@ -45,8 +45,7 @@ DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID,
DSReplyError replyError)
{
TRKMessageIntoReply(buffer, commandID, replyError);
TRKSendACK(buffer);
return;
return TRKSendACK(buffer);
}
DSError TRKDoUnsupported(TRKBuffer* buffer)
@ -107,7 +106,6 @@ DSError TRKDoVersions(TRKBuffer* buffer)
else
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoSupportMask(TRKBuffer* buffer)
@ -140,7 +138,7 @@ DSError TRKDoCPUType(TRKBuffer* buffer)
if (buffer->length != 1) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
return;
}
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
@ -166,8 +164,6 @@ DSError TRKDoCPUType(TRKBuffer* buffer)
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError);
else
error = TRKSendACK(buffer);
return error;
}
DSError TRKDoReadMemory(TRKBuffer* buffer)
@ -175,11 +171,11 @@ DSError TRKDoReadMemory(TRKBuffer* buffer)
DSError error;
DSReplyError replyError;
u8 tempBuf[0x800];
u32 length;
u32 msg_start;
u32 length;
u16 msg_length;
u8 msg_options;
u8 msg_command;
u8 msg_options;
if (buffer->length != 8) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
@ -257,11 +253,11 @@ DSError TRKDoWriteMemory(TRKBuffer* buffer)
DSError error;
DSReplyError replyError;
u8 tmpBuffer[0x800];
u32 length;
u32 msg_start;
u32 length;
u16 msg_length;
u8 msg_options;
u8 msg_command;
u8 msg_options;
if (buffer->length <= 8) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
@ -343,14 +339,14 @@ DSError TRKDoReadRegisters(TRKBuffer* buffer)
DSReplyError replyError;
DSMessageRegisterOptions options;
u32 registerDataLength;
u16 msg_lastRegister;
u16 msg_firstRegister;
u8 msg_options;
u16 msg_lastRegister;
u8 msg_command;
u8 msg_options;
if (buffer->length != 6) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
return;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
@ -366,13 +362,13 @@ DSError TRKDoReadRegisters(TRKBuffer* buffer)
if (msg_firstRegister > msg_lastRegister) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidRegisterRange);
return error;
return;
}
if (error == DS_NoError)
TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
options = (DSMessageRegisterOptions)msg_options;
options = (DSMessageRegisterOptions)(msg_options & 7);
switch (options) {
case DSREG_Default:
error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister,
@ -423,8 +419,6 @@ DSError TRKDoReadRegisters(TRKBuffer* buffer)
} else {
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoWriteRegisters(TRKBuffer* buffer)
@ -433,14 +427,14 @@ DSError TRKDoWriteRegisters(TRKBuffer* buffer)
DSReplyError replyError;
DSMessageRegisterOptions options;
u32 registerDataLength;
u16 msg_lastRegister;
u16 msg_firstRegister;
u8 msg_options;
u16 msg_lastRegister;
u8 msg_command;
u8 msg_options;
if (buffer->length <= 6) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
return;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
error = TRKReadBuffer1_ui8(buffer, &msg_command);
@ -456,7 +450,7 @@ DSError TRKDoWriteRegisters(TRKBuffer* buffer)
if (msg_firstRegister > msg_lastRegister) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidRegisterRange);
return error;
return;
}
options = (DSMessageRegisterOptions)msg_options;
@ -516,22 +510,20 @@ DSError TRKDoWriteRegisters(TRKBuffer* buffer)
} else {
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoFlushCache(TRKBuffer* buffer)
{
DSError error;
DSReplyError replyErr;
u32 msg_end;
u32 msg_start;
u8 msg_options;
u32 msg_end;
u8 msg_command;
u8 msg_options;
if (buffer->length != 10) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return error;
return;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
@ -546,7 +538,7 @@ DSError TRKDoFlushCache(TRKBuffer* buffer)
if (msg_start > msg_end) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_InvalidMemoryRange);
return error;
return;
}
if (error == DS_NoError)
@ -570,8 +562,6 @@ DSError TRKDoFlushCache(TRKBuffer* buffer)
} else {
error = TRKSendACK(buffer);
}
return error;
}
DSError TRKDoContinue(TRKBuffer* buffer)
@ -581,14 +571,12 @@ DSError TRKDoContinue(TRKBuffer* buffer)
error = TRKTargetStopped();
if (error == DS_NoError) {
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped);
return error;
return;
}
error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError);
if (error == DS_NoError)
error = TRKTargetContinue();
return error;
}
DSError TRKDoStep(TRKBuffer* buffer)
@ -601,8 +589,10 @@ DSError TRKDoStep(TRKBuffer* buffer)
u32 msg_rangeEnd;
u32 pc;
if (buffer->length < 3)
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
if (buffer->length < 3) {
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return;
}
TRKSetBufferPosition(buffer, DSREPLY_NoError);
@ -618,12 +608,14 @@ DSError TRKDoStep(TRKBuffer* buffer)
if (msg_count >= 1) {
break;
}
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
return;
case DSSTEP_IntoRange:
case DSSTEP_OverRange:
if (buffer->length != 10)
return TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_PacketSizeError);
if (buffer->length != 10) {
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError);
return;
}
if (error == DS_NoError)
error = TRKReadBuffer1_ui32(buffer, &msg_rangeStart);
@ -634,33 +626,33 @@ DSError TRKDoStep(TRKBuffer* buffer)
if (pc >= msg_rangeStart && pc <= msg_rangeEnd) {
break;
}
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError);
return;
default:
return TRKStandardACK(buffer, DSMSG_ReplyACK,
DSREPLY_UnsupportedOptionError);
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_UnsupportedOptionError);
return;
}
if (!TRKTargetStopped()) {
return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped);
} else {
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;
TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped);
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;
}
}
DSError TRKDoStop(TRKBuffer* b)
@ -687,3 +679,46 @@ DSError TRKDoStop(TRKBuffer* b)
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;
MessageBufferID TRKTestForPacket()
{
int bytes;
int batch;
int err;
TRKBuffer* b;
int id;
static inline BOOL serpoll_inline_00(TRKBuffer* buffer) {
if (buffer->length < 2) {
TRKStandardACK(buffer, DSMSG_ReplyNAK, DSREPLY_PacketSizeError);
if (gTRKFramingState.msgBufID != -1) {
TRKReleaseBuffer(gTRKFramingState.msgBufID);
gTRKFramingState.msgBufID = -1;
}
gTRKFramingState.buffer = NULL;
gTRKFramingState.receiveState = DSRECV_Wait;
return FALSE;
}
buffer->position = 0;
buffer->length--;
return TRUE;
}
bytes = TRKPollUART();
if (bytes > 0) {
TRKGetFreeBuffer(&id, &b);
if (bytes > TRKMSGBUF_SIZE) {
for (; bytes > 0; bytes -= batch) {
batch = bytes > TRKMSGBUF_SIZE ? TRKMSGBUF_SIZE : bytes;
TRKReadUARTN(b->data, batch);
}
TRKStandardACK(b, 0xff, 6);
} else {
err = TRKReadUARTN(b->data, bytes);
if (err == 0) {
b->length = bytes;
return id;
}
}
}
if (id != -1) {
TRKReleaseBuffer(id);
}
return -1;
MessageBufferID TRKTestForPacket(void) {
s32 var_r29;
s32 var_r3;
s8 sp8;
s32 temp_r3;
var_r29 = 0;
var_r3 = TRKReadUARTPoll(&sp8);
while (var_r3 == 0 && var_r29 == 0) {
if (gTRKFramingState.receiveState != DSRECV_InFrame) {
gTRKFramingState.isEscape = FALSE;
}
switch (gTRKFramingState.receiveState) {
case DSRECV_Wait:
if (sp8 == 0x7E) {
var_r29 = TRKGetFreeBuffer(&gTRKFramingState.msgBufID, &gTRKFramingState.buffer);
gTRKFramingState.fcsType = 0;
gTRKFramingState.receiveState = DSRECV_Found;
}
break;
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)
{
MessageBufferID id;
TRKBuffer* msgBuffer;
u8 command;
TRKBuffer* msgBuffer;
MessageBufferID id;
u8 command;
id = TRKTestForPacket();
if (id == -1)
return;
id = TRKTestForPacket();
if (id == -1)
return;
msgBuffer = TRKGetBuffer(id);
TRKSetBufferPosition(msgBuffer, 0);
TRKReadBuffer1_ui8(msgBuffer, &command);
if (command < DSMSG_ReplyACK) {
TRKProcessInput(id);
} else {
TRKReleaseBuffer(id);
}
msgBuffer = TRKGetBuffer(id);
TRKSetBufferPosition(msgBuffer, 0);
TRKReadBuffer1_ui8(msgBuffer, &command);
if (command < DSMSG_ReplyACK) {
TRKProcessInput(id);
} else {
TRKReleaseBuffer(id);
}
}
void TRKProcessInput(int bufferIdx)
{
TRKEvent event;
TRKEvent event;
TRKConstructEvent(&event, NUBEVENT_Request);
gTRKFramingState.msgBufID = -1;
event.msgBufID = bufferIdx;
TRKPostEvent(&event);
TRKConstructEvent(&event, NUBEVENT_Request);
gTRKFramingState.msgBufID = -1;
event.msgBufID = bufferIdx;
TRKPostEvent(&event);
}
DSError TRKInitializeSerialHandler(void)
{
gTRKFramingState.msgBufID = -1;
gTRKFramingState.receiveState = DSRECV_Wait;
gTRKFramingState.isEscape = FALSE;
gTRKFramingState.msgBufID = -1;
gTRKFramingState.receiveState = DSRECV_Wait;
gTRKFramingState.isEscape = FALSE;
return DS_NoError;
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;
done = 0;
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) {
length = 0x800;
} else {
@ -175,3 +175,114 @@ DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2, int p3)
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 "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) { }

View file

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

View file

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

View file

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

View file

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