Merge branch 'main' into main
This commit is contained in:
commit
e486d2c27b
47 changed files with 3413 additions and 2932 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
27
configure.py
27
configure.py
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
u32 TRKTargetCPUMinorType(void);
|
||||
u8 TRKTargetCPUMinorType(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(); }
|
||||
|
|
|
|||
|
|
@ -245,4 +245,4 @@ lbl_8037149C:
|
|||
#endif // clang-format on
|
||||
}
|
||||
|
||||
u32 TRKTargetCPUMinorType(void) { return 0x54; }
|
||||
u8 TRKTargetCPUMinorType(void) { return 0x54; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
112
src/TRK_MINNOW_DOLPHIN/mslsupp.c
Executable 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
|
||||
}
|
||||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
11
src/TRK_MINNOW_DOLPHIN/target_options.c
Executable file
11
src/TRK_MINNOW_DOLPHIN/target_options.c
Executable 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
|
|
@ -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) { }
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue