This commit is contained in:
CreateSource 2024-01-24 21:29:00 -05:00
commit 07cb18689e
18 changed files with 2914 additions and 124 deletions

View file

@ -4,7 +4,7 @@ symbols: config/GMPE01_00/symbols.txt
splits: config/GMPE01_00/splits.txt
quick_analysis: true # Faster re-runs after initial analysis
mw_comment_version: 10 # GC 2.6 linker
force_active: [__register_global_object]
force_active: [__register_global_object, lbl_801D40D0]
modules:
- object: orig/GMPE01_00/files/dll/_minigameDll.rel

View file

@ -252,44 +252,44 @@ lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float
lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float
lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float
lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float
lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float
lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float
lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float
lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float
lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float
lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float
lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float
lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float
lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float
lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float
lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float
lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float
lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float
@ -383,13 +383,13 @@ lbl_1_data_454 = .data:0x00000454; // type:object size:0x2 data:2byte
lbl_1_data_456 = .data:0x00000456; // type:object size:0x2 data:2byte
lbl_1_data_458 = .data:0x00000458; // type:object size:0x2 data:2byte
lbl_1_data_45C = .data:0x0000045C; // type:object size:0xC
lbl_1_data_468 = .data:0x00000468; // type:object size:0x8
lbl_1_data_468 = .data:0x00000468; // type:object size:0x8 scope:local
lbl_1_data_470 = .data:0x00000470; // type:object size:0x20
lbl_1_data_490 = .data:0x00000490; // type:object size:0x20
lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0x1 data:byte
lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x14
lbl_1_data_4C8 = .data:0x000004C8; // type:object size:0x6
lbl_1_data_4CE = .data:0x000004CE; // type:object size:0xA
lbl_1_data_4CE = .data:0x000004CE; // type:object size:0xA scope:local
lbl_1_data_4D8 = .data:0x000004D8; // type:object size:0x2 data:2byte
lbl_1_data_4DA = .data:0x000004DA; // type:object size:0x2 data:2byte
lbl_1_data_4DC = .data:0x000004DC; // type:object size:0x2 data:2byte

View file

@ -658,18 +658,18 @@ MGSeqInit = .text:0x800353AC; // type:function size:0xBC
MGSeqMain = .text:0x80035468; // type:function size:0x188
CreateSeq = .text:0x800355F0; // type:function size:0x1A4 scope:local
MGSeqCreate = .text:0x80035794; // type:function size:0x100
MGSeqGetStat = .text:0x80035894; // type:function size:0x88
MGSeqSetPos = .text:0x8003591C; // type:function size:0x4C
MGSeqSetParam = .text:0x80035968; // type:function size:0x4C
MGSeqStatGet = .text:0x80035894; // type:function size:0x88
MGSeqPosSet = .text:0x8003591C; // type:function size:0x4C
MGSeqParamSet = .text:0x80035968; // type:function size:0x4C
MGSeqKill = .text:0x800359B4; // type:function size:0x58
MGSeqKillAll = .text:0x80035A0C; // type:function size:0x3C
MGSeqIsDone = .text:0x80035A48; // type:function size:0xA4
MGSeqDoneCheck = .text:0x80035A48; // type:function size:0xA4
MGSeqStub = .text:0x80035AEC; // type:function size:0x4
MGSeqSprKill = .text:0x80035AF0; // type:function size:0x8C
SeqInitTimer = .text:0x80035B7C; // type:function size:0x2E0 scope:local
SeqUpdateTimer = .text:0x80035E5C; // type:function size:0x69C scope:local
fn_800364F8 = .text:0x800364F8; // type:function size:0x3D8
fn_800368D0 = .text:0x800368D0; // type:function size:0x2F8
SeqInitType2 = .text:0x800364F8; // type:function size:0x3D8 scope:local
SeqUpdateType2 = .text:0x800368D0; // type:function size:0x2F8 scope:local
fn_80036BC8 = .text:0x80036BC8; // type:function size:0x188
SeqMakeWord = .text:0x80036D50; // type:function size:0x1D0 scope:local
SeqLoadFontChar = .text:0x80036F20; // type:function size:0x26C scope:local
@ -680,21 +680,21 @@ SeqUpdateMGBattle = .text:0x80037F94; // type:function size:0xDA4 scope:local
SeqUpdateMG1vs3 = .text:0x80038D38; // type:function size:0xDA4 scope:local
SeqUpdateMGStory = .text:0x80039ADC; // type:function size:0xBB8 scope:local
SeqUpdateMG2vs2 = .text:0x8003A694; // type:function size:0xAB4 scope:local
fn_8003B148 = .text:0x8003B148; // type:function size:0x3C4
fn_8003B50C = .text:0x8003B50C; // type:function size:0x91C
SeqInitFlip = .text:0x8003B148; // type:function size:0x3C4 scope:local
SeqUpdateFlip = .text:0x8003B50C; // type:function size:0x91C scope:local
SeqUpdateMGBowser = .text:0x8003BE28; // type:function size:0xC84 scope:local
fn_8003CAAC = .text:0x8003CAAC; // type:function size:0xDC
fn_8003CB88 = .text:0x8003CB88; // type:function size:0x3DC
SeqInitDraw = .text:0x8003CAAC; // type:function size:0xDC scope:local
SeqUpdateDraw = .text:0x8003CB88; // type:function size:0x3DC scope:local
SeqInitWin = .text:0x8003CF64; // type:function size:0x8A0 scope:local
SeqUpdateWin = .text:0x8003D804; // type:function size:0x72C scope:local
SeqInitRecord = .text:0x8003DF30; // type:function size:0x774 scope:local
SeqUpdateRecord = .text:0x8003E6A4; // type:function size:0x304 scope:local
MGSeqPauseStart = .text:0x8003E9A8; // type:function size:0x6C
SeqPauseProcFunc = .text:0x8003EA14; // type:function size:0x94C scope:local
MGSeqPauseStop = .text:0x8003F360; // type:function size:0xC
MGSeqPauseInit = .text:0x8003E9A8; // type:function size:0x6C
PauseProc = .text:0x8003EA14; // type:function size:0x94C scope:local
MGSeqPauseKill = .text:0x8003F360; // type:function size:0xC
MGSeqPauseEnableCtrl = .text:0x8003F36C; // type:function size:0x40
MGSeqPracticeStart = .text:0x8003F3AC; // type:function size:0xDC
SeqPracticeProcFunc = .text:0x8003F488; // type:function size:0x234 scope:local
MGSeqPracticeInit = .text:0x8003F3AC; // type:function size:0xDC
PracticeProc = .text:0x8003F488; // type:function size:0x234 scope:local
SeqSEPlay = .text:0x8003F6BC; // type:function size:0xD4 scope:local
MGSeqPracticeExitCheck = .text:0x8003F790; // type:function size:0x128
espInit = .text:0x8003F8B8; // type:function size:0xA0
@ -1166,7 +1166,7 @@ BoardPlayerZoomRestore = .text:0x80064C50; // type:function size:0x134
BoardJunctionMaskSet = .text:0x80064D84; // type:function size:0x10
BoardJunctionMaskReset = .text:0x80064D94; // type:function size:0x10
BoardJunctionMaskZero = .text:0x80064DA4; // type:function size:0xC
InitJunction = .text:0x80064DB0; // type:function size:0x634
InitJunction = .text:0x80064DB0; // type:function size:0x634 scope:local
UpdateJunctionGfx = .text:0x800653E4; // type:function size:0x1A0 scope:local
StopJunctionPlayer = .text:0x80065584; // type:function size:0x70 scope:local
RestoreJunction = .text:0x800655F4; // type:function size:0x180 scope:local
@ -1208,15 +1208,15 @@ BoardBowserSuitMotionSetWin = .text:0x800696B8; // type:function size:0x44
BoardBowserSuitMotionSetJump = .text:0x800696FC; // type:function size:0x44
BoardBowserSuitPlayerModelKill = .text:0x80069740; // type:function size:0x44
UpdateBowserSuit = .text:0x80069784; // type:function size:0x1F0 scope:local
BoardSpaceShockSpaceSet = .text:0x80069974; // type:function size:0x5C
BoardPlayerSparkSet = .text:0x80069974; // type:function size:0x5C
DoSparkSpace = .text:0x800699D0; // type:function size:0x1294 scope:local
RemoveSparkSpace = .text:0x8006AC64; // type:function size:0xA0 scope:local
SetRollPlayerSize = .text:0x8006AD04; // type:function size:0x24C scope:local
BoardRollResizeCheck = .text:0x8006AF50; // type:function size:0x8 scope:local
BoardRollResizeCheck = .text:0x8006AF50; // type:function size:0x8
BoardPlayerResizeAnimExec = .text:0x8006AF58; // type:function size:0x38C
MegaSquishFunc = .text:0x8006B2E4; // type:function size:0x950 scope:local
MegaPlayerPassFunc = .text:0x8006BC34; // type:function size:0x980 scope:local
MegaExecJump = .text:0x8006C5B4; // type:function size:0xA48
MegaExecJump = .text:0x8006C5B4; // type:function size:0xA48 scope:local
BoardPlayerCopyEyeMat = .text:0x8006CFFC; // type:function size:0x24C
BoardPlayerCopyMat = .text:0x8006D248; // type:function size:0xC0
BoardModelInit = .text:0x8006D308; // type:function size:0xF0
@ -4932,28 +4932,28 @@ lbl_8012F020 = .data:0x8012F020; // type:object size:0x94
lbl_8012F0B4 = .data:0x8012F0B4; // type:object size:0x11 data:string
lbl_8012F0C5 = .data:0x8012F0C5; // type:object size:0x3A
lbl_8012F0FF = .data:0x8012F0FF; // type:object size:0x31
SeqTable = .data:0x8012F130; // type:object size:0x1DC scope:local
lbl_8012F30C = .data:0x8012F30C; // type:object size:0x18
SeqTypeTable = .data:0x8012F324; // type:object size:0x12 scope:local
seqInfo = .data:0x8012F130; // type:object size:0x1DC scope:local
seqType2SprTbl = .data:0x8012F30C; // type:object size:0x18 scope:local
seqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local
lbl_8012F336 = .data:0x8012F336; // type:object size:0x53 scope:local data:string
lbl_8012F389 = .data:0x8012F389; // type:object size:0x9 scope:local data:string
lbl_8012F392 = .data:0x8012F392; // type:object size:0x9 scope:local data:string
SeqFontAlphaTbl = .data:0x8012F39B; // type:object size:0x35 scope:local data:string
SeqFontKanaTbl = .data:0x8012F3D0; // type:object size:0x52 scope:local data:string
SeqFontNumTbl = .data:0x8012F422; // type:object size:0xB scope:local data:string
seqFontAlphaTbl = .data:0x8012F39B; // type:object size:0x35 scope:local data:string
seqFontKanaTbl = .data:0x8012F3D0; // type:object size:0x52 scope:local data:string
seqFontNumTbl = .data:0x8012F422; // type:object size:0xB scope:local data:string
lbl_8012F430 = .data:0x8012F430; // type:object size:0x14
WordTbl = .data:0x8012F444; // type:object size:0x18 scope:local
LetterBattleOfs = .data:0x8012F45C; // type:object size:0x40 scope:local
Letter2vs2Ofs = .data:0x8012F49C; // type:object size:0x1C scope:local
LetterBowserOfs = .data:0x8012F4B8; // type:object size:0x38 scope:local
lbl_8012F4F0 = .data:0x8012F4F0; // type:object size:0xC
CharNameTbl = .data:0x8012F4FC; // type:object size:0x78 scope:local
lbl_8012F574 = .data:0x8012F574; // type:object size:0xC
WinStrTbl = .data:0x8012F580; // type:object size:0x18 scope:local
WinPosOfs = .data:0x8012F598; // type:object size:0x50 scope:local
PracticeTbl = .data:0x8012F5E8; // type:object size:0xAC scope:local
PracticePosTbl = .data:0x8012F694; // type:object size:0xC scope:local
SeqFXTable = .data:0x8012F6A0; // type:object size:0xF0 scope:local
wordTbl = .data:0x8012F444; // type:object size:0x18 scope:local
letterBattleOfs = .data:0x8012F45C; // type:object size:0x40 scope:local
letter2vs2Ofs = .data:0x8012F49C; // type:object size:0x1C scope:local
letterBowserOfs = .data:0x8012F4B8; // type:object size:0x38 scope:local
lbl_8012F4F0 = .data:0x8012F4F0; // type:object size:0xA data:string
charNameTbl = .data:0x8012F4FC; // type:object size:0x78 scope:local
lbl_8012F574 = .data:0x8012F574; // type:object size:0xA data:string
winStrTbl = .data:0x8012F580; // type:object size:0x18 scope:local
winPosOfs = .data:0x8012F598; // type:object size:0x50 scope:local
practiceTbl = .data:0x8012F5E8; // type:object size:0xAC scope:local
practiceData = .data:0x8012F694; // type:object size:0xC scope:local
seqFXTbl = .data:0x8012F6A0; // type:object size:0xF0 scope:local
lbl_8012F790 = .data:0x8012F790; // type:object size:0x15 data:string
lbl_8012F7A5 = .data:0x8012F7A5; // type:object size:0x10 data:string
lbl_8012F7B5 = .data:0x8012F7B5; // type:object size:0x13 data:string
@ -5521,8 +5521,8 @@ CZoomM = .bss:0x801901A0; // type:object size:0x40
omDLLinfoTbl = .bss:0x801901E0; // type:object size:0x50
sndFXBuf = .bss:0x80190230; // type:object size:0x200 scope:local
charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 scope:local
SeqData = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte
SeqDuration = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte
seqStat = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte
seqMaxTime = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte
esprite = .bss:0x80190860; // type:object size:0x600 data:2byte
espanim = .bss:0x80190E60; // type:object size:0x1200 data:4byte
lbl_80192060 = .bss:0x80192060; // type:object size:0x100
@ -5782,9 +5782,9 @@ lbl_801D34A0 = .sdata:0x801D34A0; // type:object size:0x4 data:4byte
lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0xC
lbl_801D34B0 = .sdata:0x801D34B0; // type:object size:0x1
lbl_801D34B1 = .sdata:0x801D34B1; // type:object size:0x7
MGSeqInitFlag = .sdata:0x801D34B8; // type:object size:0x4 data:4byte
mgSeqInitF = .sdata:0x801D34B8; // type:object size:0x4 data:4byte
lbl_801D34BC = .sdata:0x801D34BC; // type:object size:0x7 data:string
lbl_801D34C3 = .sdata:0x801D34C3; // type:object size:0x1 data:byte
lbl_801D34C3 = .sdata:0x801D34C3; // type:object size:0x3 data:byte
lbl_801D34C6 = .sdata:0x801D34C6; // type:object size:0x6
lbl_801D34CC = .sdata:0x801D34CC; // type:object size:0x8
lbl_801D34D4 = .sdata:0x801D34D4; // type:object size:0x6
@ -5825,8 +5825,8 @@ lbl_801D3598 = .sdata:0x801D3598; // type:object size:0x6
lbl_801D359E = .sdata:0x801D359E; // type:object size:0x5 data:string
lbl_801D35A3 = .sdata:0x801D35A3; // type:object size:0x7
lbl_801D35AA = .sdata:0x801D35AA; // type:object size:0x6
lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x8
PauseStrTbl = .sdata:0x801D35B8; // type:object size:0x8 scope:local
lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x6 data:string
pauseStrTbl = .sdata:0x801D35B8; // type:object size:0x8 scope:local
lbl_801D35C0 = .sdata:0x801D35C0; // type:object size:0x8
lbl_801D35C8 = .sdata:0x801D35C8; // type:object size:0x8
lbl_801D35D0 = .sdata:0x801D35D0; // type:object size:0x8
@ -6245,17 +6245,17 @@ nMesh = .sbss:0x801D3D64; // type:object size:0x4 scope:local data:4byte
nObj = .sbss:0x801D3D68; // type:object size:0x4 scope:local data:4byte
MtxTop = .sbss:0x801D3D6C; // type:object size:0x4 data:4byte
Vertextop = .sbss:0x801D3D70; // type:object size:0x4 data:4byte
SeqLanguage = .sbss:0x801D3D78; // type:object size:0x4 scope:local data:4byte
PauseProcess = .sbss:0x801D3D7C; // type:object size:0x4 scope:local data:4byte
PauseActive = .sbss:0x801D3D80; // type:object size:0x4 scope:local data:4byte
PauseExit = .sbss:0x801D3D84; // type:object size:0x4 scope:local data:4byte
PauseWait = .sbss:0x801D3D88; // type:object size:0x4 scope:local data:4byte
SeqRecordValue = .sbss:0x801D3D8C; // type:object size:0x4 scope:local data:4byte
PauseSeq = .sbss:0x801D3D90; // type:object size:0x2 scope:local data:2byte
SeqSpeed = .sbss:0x801D3D92; // type:object size:0x2 scope:local data:2byte
seqLanguage = .sbss:0x801D3D78; // type:object size:0x4 scope:local data:4byte
pauseProcess = .sbss:0x801D3D7C; // type:object size:0x4 scope:local data:4byte
pauseActiveF = .sbss:0x801D3D80; // type:object size:0x4 scope:local data:4byte
pauseExitF = .sbss:0x801D3D84; // type:object size:0x4 scope:local data:4byte
pauseWaitF = .sbss:0x801D3D88; // type:object size:0x4 scope:local data:4byte
seqRecordVal = .sbss:0x801D3D8C; // type:object size:0x4 scope:local data:4byte
seqPauseF = .sbss:0x801D3D90; // type:object size:0x2 scope:local data:2byte
seqSpeed = .sbss:0x801D3D92; // type:object size:0x2 scope:local data:2byte
lbl_801D3D94 = .sbss:0x801D3D94; // type:object size:0x1 data:byte
SeqDone = .sbss:0x801D3D95; // type:object size:0x1 scope:local data:byte
SeqTimer = .sbss:0x801D3D96; // type:object size:0x2 scope:local data:2byte
seqDoneF = .sbss:0x801D3D95; // type:object size:0x1 scope:local data:byte
seqTimer = .sbss:0x801D3D96; // type:object size:0x2 scope:local data:2byte
gid = .sbss:0x801D3D98; // type:object size:0x2 scope:local data:2byte
lbl_801D3DA0 = .sbss:0x801D3DA0; // type:object size:0x8
wipeFadeInF = .sbss:0x801D3DA8; // type:object size:0x8 data:4byte
@ -7152,9 +7152,7 @@ lbl_801D4E44 = .sdata2:0x801D4E44; // type:object size:0x4 data:float
lbl_801D4E48 = .sdata2:0x801D4E48; // type:object size:0x8 data:double
lbl_801D4E50 = .sdata2:0x801D4E50; // type:object size:0x8 data:double
lbl_801D4E58 = .sdata2:0x801D4E58; // type:object size:0x8 data:double
lbl_801D4E60 = .sdata2:0x801D4E60; // type:object size:0x2 data:2byte
lbl_801D4E62 = .sdata2:0x801D4E62; // type:object size:0x2 data:2byte
lbl_801D4E64 = .sdata2:0x801D4E64; // type:object size:0x2 data:2byte
lbl_801D4E60 = .sdata2:0x801D4E60; // type:object size:0x6 data:2byte
lbl_801D4E68 = .sdata2:0x801D4E68; // type:object size:0x4 data:float
lbl_801D4E6C = .sdata2:0x801D4E6C; // type:object size:0x4 data:float
lbl_801D4E70 = .sdata2:0x801D4E70; // type:object size:0x4 data:float

View file

@ -375,7 +375,7 @@ config.libs = [
Object(NonMatching, "game/board/mushroom.c"),
Object(NonMatching, "game/board/star.c"),
Object(NonMatching, "game/board/roll.c"),
Object(NonMatching, "game/board/ui.c"),
Object(Matching, "game/board/ui.c"),
Object(NonMatching, "game/board/block.c"),
Object(NonMatching, "game/board/item.c"),
Object(NonMatching, "game/board/bowser.c"),
@ -996,7 +996,7 @@ config.libs = [
Object(NonMatching, "REL/w03Dll/condor.c"),
Object(Matching, "REL/w03Dll/river.c"),
Object(Matching, "REL/w03Dll/smoke.c"),
Object(NonMatching, "REL/w03Dll/mg_coin.c"),
Object(Matching, "REL/w03Dll/mg_coin.c"),
Object(Matching, "REL/w03Dll/mg_item.c"),
}
),

View file

@ -111,13 +111,25 @@ static inline u16 __OSf32tou16(register f32 inF)
static inline void OSf32tou16(f32 *f, u16 *out) { *out = __OSf32tou16(*f); }
static inline float __OSs8tof32(register const s8* arg) {
register float ret;
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_S8
}
return ret;
}
static inline void OSs8tof32(const s8* in, float* out) { *out = __OSs8tof32(in); }
static inline float __OSs16tof32(register const s16* arg) {
register float ret;
asm {
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_S16
}
return ret;
}
@ -129,7 +141,7 @@ static inline float __OSu8tof32(register const u8* arg) {
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_U8
}
return ret;
}
@ -141,7 +153,7 @@ static inline float __OSu16tof32(register const u16* arg) {
asm {
psq_l ret, 0(arg), 1, OS_FASTCAST_U16
}
return ret;
}

View file

@ -17,7 +17,7 @@
extern s16 boardPlayerMdl[4];
static inline s16 BoardPlayerHandicapGet(s32 player)
static inline s32 BoardPlayerHandicapGet(s32 player)
{
return GWPlayer[player].handicap;
}

36
include/game/board/ui.h Executable file
View file

@ -0,0 +1,36 @@
#ifndef _BOARD_UI_H
#define _BOARD_UI_H
#include "game/sprite.h"
s32 BoardItemModelGet(s32 arg0);
s32 BoardItemNameGet(s32 arg0);
BOOL BoardStatusStopCheck(s32 arg0);
s32 BoardStatusVisibleGet(s32 arg0);
void BoardStatusShowSetAll(s32 arg0);
void BoardStatusItemSet(s32 arg0);
void BoardStatusShowSetForce(s32 arg0);
void BoardStatusGraySet(s32 arg0, s32 arg1);
void BoardStatusShowSet(s32 arg0, s32 arg1);
void BoardStatusItemHideSet(s32 arg0, s32 arg1);
void BoardStatusTargetPosSet(s32 arg0, Vec *arg1);
void BoardStatusPosGet(s32 arg0, float *arg1);
void BoardStatusPosSet(s32 arg0, Vec *arg1);
void BoardStatusHammerCreate(s32 arg0);
void BoardStatusHammerShowSet(s32 arg0, s32 arg1);
void BoardStatusHammerKill(s32 arg0);
void BoardStatusKill(void);
void BoardStatusCreate(void);
void BoardSpriteCreate(s32 file, s32 prio, AnimData **anim, s16 *sprite);
void BoardSpriteDigitUpdate(s16 arg0, s16 arg1, s32 arg2);
void BoardPickerCreate(s32 arg0, s8 arg1, void *arg2, s8 arg3);
void BoardPickerBackFlagSet(s32 arg0);
BOOL BoardPickerDoneCheck(void);
s32 BoardPickerPosGet(Vec *arg0);
s32 BoardPickerChoiceGet(void);
s32 BoardItemUseExec(s32 arg0);
void BoardMakeRandomItem(void);
void BoardItemGetDestPos(s32 arg0, Vec *arg1);
void BoardItemStatusKill(s32 arg0);
#endif

View file

@ -6,6 +6,7 @@
void GWInit(void);
void GWGameStatReset(void);
s32 GWMessSpeedGet(void);
s32 GWMessDelayGet(void);
void GWMGRecordSet(int index, s32 value);
s32 GWMGRecordGet(int index);
void GWCharColorGet(int character, GXColor *color);

View file

@ -41,7 +41,7 @@ typedef struct system_state {
/* 0x30 */ u8 mess_delay;
/* 0x31 */ struct {
u8 field31_bit0 : 4;
u8 field31_bit4 : 4;
u8 field31_bit4 : 4;
};
/* 0x32 */ s8 unk_32;
/* 0x34 */ u16 mg_next;
@ -57,7 +57,7 @@ typedef struct player_state {
u16 com : 1;
u16 character : 4;
u16 auto_size : 2;
u16 field00_bit9 : 1;
u16 field00_bit9 : 1;
};
/* 0x02 */ struct {
u8 team : 1;
@ -147,19 +147,34 @@ extern PlayerState GWPlayer[4];
extern SystemState GWSystem;
extern GameStat GWGameStat;
static inline s32 GWTeamGet(void)
{
return GWSystem.team;
}
static inline s32 GWLanguageGet(void)
{
return GWGameStat.language;
return GWGameStat.language;
}
static inline s32 GWMGTypeGet()
static inline s32 GWMGTypeGet(void)
{
return GWSystem.mg_type;
return GWSystem.mg_type;
}
static inline s32 GWMessSpeedGet()
static inline s32 GWMessSpeedGet(void)
{
return GWSystem.mess_speed;
return GWSystem.mess_speed;
}
static inline s32 GWBoardGet(void)
{
return GWSystem.board;
}
static inline s32 GWPlayerTeamGet(s32 player)
{
return GWPlayer[player].team;
}
#endif

View file

@ -188,7 +188,7 @@ void HuSprGrpCenterSet(short group, float x, float y);
void HuSprGrpZRotSet(short group, float z_rot);
void HuSprGrpScaleSet(short group, float x, float y);
void HuSprGrpTPLvlSet(short group, float tp_lvl);
void HuSprGrpDrawNoSet(short group, int draw_no);
s32 HuSprGrpDrawNoSet(short group, int draw_no);
void HuSprDrawNoSet(short group, short member, int draw_no);
void HuSprPriSet(short group, short member, short prio);
void HuSprGrpScissorSet(short group, short x, short y, short w, short h);

View file

@ -5,7 +5,7 @@
void MGSeqKillAll(void);
void MGSeqPracticeStart(void);
void MGSeqPracticeInit(void);
void CharMotionClose(s16 character);
void CharModelClose(s16 character);
void CharModelKill(s16 character);

733
src/REL/w03Dll/mg_coin.c Normal file
View file

@ -0,0 +1,733 @@
#include "dolphin.h"
#include "game/object.h"
#include "REL/w03Dll.h"
#include "board_unsplit.h"
#include "game/board/main.h"
#include "game/board/player.h"
extern u16 HuPadBtnDown[4];
extern s16 lbl_1_bss_C[14];
typedef struct someBits3 { //make sure this is defined correctly
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
u8 unk00_bit1 : 4;
u8 unk00_bit5 : 2;
u8 unk00_bit7 : 1;
};
u8 unk1;
u8 unk2;
u8 unk3;
s16 unk_04;
s16 unk_06[3];
s32 unk_0C;
} someBits3;
typedef struct unkTemp {
s8 unk0;
u8 unk1;
s16 unk_02;
f32 unk4;
Vec unk8;
} unkTemp;
typedef struct unkTemp2 {
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
};
char unk_01[3];
s8 unk4;
char unk_05[3];
f32 unk8;
unkTemp* unk_0C;
} unkTemp2;
//function signatures
void fn_1_7C98(void);
void fn_1_7C38(void);
s32 fn_1_7D18(s32 arg0);
void fn_1_8140(s32 arg0);
void fn_1_81E0(s32 arg0);
void fn_1_8530(omObjData* arg0);
void fn_1_84A8(s32 arg0);
void fn_1_8698(omObjData* arg0, someBits3* arg1);
void fn_1_8C08(omObjData* arg0, someBits3* arg1);
void fn_1_8E44(omObjData* arg0, someBits3* arg1);
void fn_1_9044(omObjData* arg0, someBits3* arg1);
void fn_1_91B8(void);
void fn_1_9230(s32 arg0);
void fn_1_9384(void);
void fn_1_9474(s32 arg0);
void fn_1_97F8(s32 arg0);
void fn_1_9A1C(unkTemp2* arg0);
double sin(double x);
double cos(double x);
double atan2(double y, double x);
extern s16 MGSeqCreate(s32, ...);
u8 MGSeqStatGet(s16);
float BoardModelMotionTimeGet(s16 model);
float BoardModelMotionMaxTimeGet(s16 model);
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
//DATA
s32 lbl_1_data_450 = -1;
s16 lbl_1_data_454 = -1;
s16 lbl_1_data_456 = -1;
s16 lbl_1_data_458 = -1;
s32 lbl_1_data_45C[] = {0x00770021, 0x00770022, -1};
char phei_str[] = "phei";
s32 lbl_1_data_470[] = {
0x005F0066,
0x001A0066,
0x006D0066,
0x008A0066,
0x00850066,
0x00110066,
0x000D0066,
0x00810066
};
s32 lbl_1_data_490[] = {
0x005F0067,
0x001A0067,
0x006D0067,
0x008A0067,
0x00850067,
0x00110067,
0x000D0067,
0x00810067
};
s8 lbl_1_data_4B0 = -1;
s32 lbl_1_data_4B4[] = {
0x00000440,
0x00000441,
0x00000442,
0x00000443,
0x00000444
};
s8 lbl_1_data_4C8[] = {1, 5, 10, 15, 20, 20};
//BSS
char lbl_1_bss_150[0x30];
s16 lbl_1_bss_14E;
s8 lbl_1_bss_14C;
omObjData* lbl_1_bss_148;
omObjData* lbl_1_bss_144;
Process* lbl_1_bss_140;
void fn_1_7ABC(void) {
lbl_1_data_456 = BoardModelCreate(0x770020, lbl_1_data_45C, 0);
BoardModelHookSet(lbl_1_bss_C[7], phei_str, lbl_1_data_456);
BoardModelMotionStart(lbl_1_data_456, 2, 0x40000002);
BoardModelRotYSet(lbl_1_data_456, -45.0f);
}
void fn_1_7B58(void) {
if (lbl_1_data_456 != -1) {
BoardModelKill(lbl_1_data_456);
lbl_1_data_456 = -1;
}
}
void fn_1_7BA8(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_140 = HuPrcChildCreate(&fn_1_7C98, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_140, &fn_1_7C38);
while (lbl_1_bss_140) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
}
void fn_1_7C38(void) {
if (lbl_1_data_454 != -1) {
HuWinKill(lbl_1_data_454);
lbl_1_data_454 = -1;
}
lbl_1_bss_140 = 0;
}
void fn_1_7C98(void) {
s32 temp_r31;
temp_r31 = GWSystem.player_curr;
lbl_1_bss_14C = 0;
lbl_1_bss_14E = 0;
if (fn_1_7D18(temp_r31) != 0) {
fn_1_8140(temp_r31);
fn_1_9474(temp_r31);
fn_1_9230(temp_r31);
}
HuPrcEnd();
}
s32 fn_1_7D18(s32 arg0) {
Point3d sp38;
Point3d sp2C;
Point3d sp20;
Vec sp14;
Vec sp8;
f32 var_f31;
s16 model;
s16 space;
s16 temp_r28;
f32 arctan;
BoardWinCreateChoice(2, 0x160015, 2, 0);
if (GWPlayer[arg0].com != 0) {
BoardComKeySetLeft();
}
BoardWinWait();
BoardWinKill();
if (BoardWinChoiceGet() != 0) {
BoardWinCreate(2, 0x160018, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
BoardAudSeqPause(0, 1, 1000);
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
sp8.x = -10.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
space = GWPlayer[arg0].space_curr;
temp_r28 = BoardSpaceLinkFlagSearch(0, space, 0x02000000);
BoardPlayerPosGet(arg0, &sp2C);
BoardSpacePosGet(0, temp_r28, &sp38);
PSVECSubtract(&sp38, &sp2C, &sp20);
PSVECNormalize(&sp20, &sp20);
BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / 3.141592653589793));
HuPrcSleep(0x1E);
model = BoardModelIDGet(lbl_1_bss_C[7]);
Hu3DModelObjPosGet(model, phei_str, &sp38);
if (GWPlayer[arg0].character == 5) {
var_f31 = 54.000004f;
} else {
var_f31 = 39.0f;
}
sp38.x = sp38.x + (var_f31 * sin((3.141592653589793 * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
sp38.z = sp38.z + (var_f31 * cos((3.141592653589793 * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
BoardPlayerPosGet(arg0, &sp2C);
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
while (GWPlayer[arg0].moving != 0) {
BoardModelPosGet(lbl_1_bss_C[10], &sp2C);
BoardPlayerPosGet(arg0, &sp38);
PSVECSubtract(&sp38, &sp2C, &sp20);
arctan = atan2(sp20.x, sp20.z) / 3.141592653589793 * 180.0;
BoardModelRotYSet(lbl_1_bss_C[10], arctan);
HuPrcVSleep();
}
BoardPlayerMotBlendSet(arg0, -0x2D, 7);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
return 1;
}
void fn_1_8140(s32 arg0) {
s16 temp_r31;
fn_1_81E0(arg0);
BoardMusStart(1, 0x16, 0x7F, 0);
temp_r31 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r31)) {
HuPrcVSleep();
}
fn_1_9384();
fn_1_84A8(0);
while (lbl_1_bss_144) {
HuPrcVSleep();
}
fn_1_91B8();
}
void fn_1_81E0(s32 arg0) {
Point3d sp8;
omObjData* temp_r3;
f32 temp_f31;
s32 temp_r28;
s32 temp_r5;
s32 temp_r5_2;
someBits3* temp_r31;
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_8530);
lbl_1_bss_144 = temp_r3;
temp_r31 = OM_GET_WORK_PTR(temp_r3, someBits3);
temp_r31->unk00_bit0 = 0;
temp_r31->unk00_bit5 = arg0;
temp_r31->unk00_bit1 = 4; //?
temp_r31->unk1 = 0;
temp_r31->unk2 = 5;
temp_r31->unk3 = 0x3C;
temp_r31->unk_0C = -1;
lbl_1_data_450 = -1;
temp_r3->trans.x = 0.0f;
temp_r3->trans.y = 0.0f;
temp_r28 = GWPlayer[arg0].character;
temp_r31->unk_06[1] = BoardPlayerMotionCreate(arg0, lbl_1_data_470[temp_r28]);
temp_r31->unk_06[2] = BoardPlayerMotionCreate(arg0, lbl_1_data_490[temp_r28]);
temp_f31 = 0.3f;
temp_r31->unk_06[0] = BoardModelCreate(0x770009, NULL, 0);
BoardModelVisibilitySet(temp_r31->unk_06[0], 0);
BoardPlayerPosGet(arg0, &sp8);
BoardModelPosSetV(temp_r31->unk_06[0], &sp8);
BoardModelScaleSet(temp_r31->unk_06[0], temp_f31, temp_f31, temp_f31);
BoardModelMotionStart(temp_r31->unk_06[0], 0, 0x40000001);
BoardModelMotionStart(lbl_1_data_456, 0, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_data_456, temp_r3->trans.x);
BoardPlayerMotionStart(arg0, temp_r31->unk_06[1], 0x40000001);
BoardPlayerMotionSpeedSet(arg0, temp_r3->trans.x);
lbl_1_data_458 = BoardModelMotionCreate(lbl_1_bss_C[10], 0x770025);
}
void fn_1_8434(someBits3* arg0) {
if (arg0->unk_06[1] != -1) {
BoardPlayerMotionKill(arg0->unk00_bit5, arg0->unk_06[1]);
}
if (arg0->unk_06[2] != -1) {
BoardPlayerMotionKill(arg0->unk00_bit5, arg0->unk_06[2]);
}
if (arg0->unk_06[0] != -1) {
BoardModelKill(arg0->unk_06[0]);
}
}
void fn_1_84A8(s32 arg0) {
someBits3* temp_r31;
if (lbl_1_bss_144) {
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_144, someBits3);
temp_r31->unk00_bit1 = arg0;
if (arg0 == 0) {
temp_r31->unk_04 = MGSeqCreate(1, temp_r31->unk2, 0x120, 0x40);
}
}
}
void fn_1_8530(omObjData* arg0) {
s32 temp_r0;
someBits3* temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, someBits3);
if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
if (temp_r31->unk_04 != -1) {
MGSeqParamSet(temp_r31->unk_04, 2, -1);
}
if (temp_r31->unk_06[1] != -1) {
BoardPlayerMotionKill(temp_r31->unk00_bit5, temp_r31->unk_06[1]);
}
if (temp_r31->unk_06[2] != -1) {
BoardPlayerMotionKill(temp_r31->unk00_bit5, temp_r31->unk_06[2]);
}
if (temp_r31->unk_06[0] != -1) {
BoardModelKill(temp_r31->unk_06[0]);
}
lbl_1_bss_144 = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (temp_r31->unk1 != 0) {
temp_r31->unk1--;
return;
}
switch (temp_r31->unk00_bit1) {
case 0:
fn_1_8698(arg0, temp_r31);
return;
case 1:
fn_1_8C08(arg0, temp_r31);
return;
case 2:
fn_1_8E44(arg0, temp_r31);
return;
case 3:
fn_1_9044(arg0, temp_r31);
/* fallthrough */
case 4:
break;
}
}
void fn_1_8698(omObjData* arg0, someBits3* arg1) {
s32 temp_r27;
u32 var_r28;
u32 var_r26;
f32 temp;
Vec sp8;
if (arg1->unk3 != 0) {
arg1->unk3--;
} else {
if (arg1->unk2 != 0) {
arg1->unk2--;
} else {
MGSeqParamSet(arg1->unk_04, 2, -1);
arg1->unk_04 = -1;
arg1->unk00_bit1 = 1;
temp = BoardModelMotionTimeGet(lbl_1_bss_C[7]);
if (temp == 0.0f) {
temp = 1.0f;
}
if (lbl_1_bss_14E > 30) {
lbl_1_bss_14E = 30;
}
//temp2 =
OSu16tof32((u16*)&lbl_1_bss_14E, &arg0->rot.x); //??
BoardModelAttrReset(lbl_1_data_456, 0x40000002);
BoardModelAttrReset(lbl_1_bss_C[7], 0x40000002);
BoardModelAttrReset(lbl_1_bss_C[10], 0x40000002);
BoardPlayerModelAttrReset(arg1->unk00_bit5, 0x40000002);
BoardModelMotionStart(lbl_1_data_456, 1, 0x40000001);
BoardModelMotionStart(lbl_1_bss_C[7], 0, 0);
BoardModelMotionStart(lbl_1_bss_C[10], lbl_1_data_458, 0);
BoardPlayerMotionStart(arg1->unk00_bit5, arg1->unk_06[2], 0);
BoardModelVisibilitySet(arg1->unk_06[0], 0);
arg1->unk_0C = HuAudFXPlay(0x43F);
BoardModelPosGet(lbl_1_data_456, &sp8);
arg0->trans.z = sp8.y;
arg0->rot.y = 16.666666f * arg0->rot.x;
arg0->scale.x = BoardModelMotionMaxTimeGet(lbl_1_bss_C[7]);
HuWinDispOff(lbl_1_data_454);
BoardCameraMotionStartEx(-1, 0, 0, 1900.0f, -1.0f, 0x15);
return;
}
MGSeqParamSet(arg1->unk_04, 1, arg1->unk2);
arg1->unk3 = 60;
}
var_r26 = GWPlayer[arg1->unk00_bit5].port;
var_r28 = 0;
if ((GWPlayer[arg1->unk00_bit5].com) != 0) {
temp_r27 = BoardRandMod(100);
switch (GWPlayer[arg1->unk00_bit5].diff) {
case 0:
if (temp_r27 < 12) {
var_r28 = 0x100;
}
break;
case 1:
if (temp_r27 < 22) {
var_r28 = 0x100;
}
break;
case 2:
if (temp_r27 < 50) {
var_r28 = 0x100;
}
break;
case 3:
var_r28 = 0x100;
break;
}
} else {
var_r28 = HuPadBtnDown[var_r26] & 0x100;
}
if ((var_r28 & 0x100)) {
arg0->trans.y += 0.5f;
if (arg0->trans.y > 2.0f) {
arg0->trans.y = 2.0f;
}
if (lbl_1_data_450 == -1) {
lbl_1_data_450 = HuAudFXPlay(0x43E);
}
lbl_1_bss_14E += 1;
BoardModelVisibilitySet(arg1->unk_06[0], 1);
BoardModelRotYSet(arg1->unk_06[0], BoardPlayerRotYGet(arg1->unk00_bit5));
} else {
arg0->trans.x *= 0.98f;
arg0->trans.y = 0.0f;
if (arg0->trans.x <= 1.0f) {
BoardModelVisibilitySet(arg1->unk_06[0], 0);
if (lbl_1_data_450 != -1) {
HuAudFXStop(lbl_1_data_450);
lbl_1_data_450 = -1;
}
}
}
if ((lbl_1_data_450 != -1) && (HuAudFXStatusGet(lbl_1_data_450) == 0)) {
lbl_1_data_450 = -1;
}
arg0->trans.x += arg0->trans.y;
if (arg0->trans.x > 3.0f) {
arg0->trans.x = 3.0f;
}
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, arg0->trans.x);
BoardModelMotionSpeedSet(lbl_1_data_456, arg0->trans.x);
}
void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
Point3d spC;
f32 temp_f31;
f32 temp_f30;
s8 temp_r27;
BoardModelPosGet(lbl_1_data_456, &spC);
spC.y += 1.6666666f;
if (spC.y >= (arg0->trans.z + arg0->rot.y)) {
spC.y = arg0->trans.z + arg0->rot.y;
BoardModelMotionSpeedSet(lbl_1_bss_C[10], 0.0f);
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, 0.0f);
BoardModelAttrSet(lbl_1_bss_C[7], 0x40000002);
BoardModelAttrSet(lbl_1_data_456, 0x40000002);
arg1->unk00_bit1 = 2;
arg1->unk1 = 0x3C;
arg1->unk2 = 0;
}
BoardModelPosSetV(lbl_1_data_456, &spC);
temp_f30 = arg0->scale.x * ((spC.y - arg0->trans.z) / 500.0f);
OSf32tos8(&temp_f30, &temp_r27);
temp_r27 = temp_r27 / 30;
if (lbl_1_data_4B0 != temp_r27) {
lbl_1_data_4B0 = temp_r27;
HuAudFXPlay(lbl_1_data_4B4[temp_r27]);
}
BoardModelMotionTimeSet(lbl_1_bss_C[7], temp_f30);
BoardModelMotionTimeSet(lbl_1_bss_C[10], 0.2f * temp_f30);
BoardPlayerMotionTimeSet(arg1->unk00_bit5, 2.0f * temp_f30);
}
void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
Point3d sp8;
f32 temp_f1;
f32 temp_f31;
if (arg1->unk00_bit7 == 0) {
HuAudFXPlay(0x448);
arg1->unk00_bit7 = 1;
if (arg1->unk_0C != -1) {
HuAudFXStop(arg1->unk_0C);
arg1->unk_0C = -1;
}
BoardAudSeqFadeOut(1, 0x3E8);
}
OSu8tof32(&arg1->unk2, &temp_f31);
BoardModelPosGet(lbl_1_data_456, &sp8);
sp8.y = (sp8.y + (-0.08166666666666668 * temp_f31 * temp_f31));
if (sp8.y < arg0->trans.z) {
sp8.y = arg0->trans.z;
arg1->unk00_bit1 = 3;
arg0->trans.x = arg0->rot.y / 20.0f;
arg0->trans.y = 0.0f;
arg0->trans.z = 24.0f;
BoardModelAttrReset(lbl_1_bss_C[10], 0x40000003);
BoardModelMotionSpeedSet(lbl_1_bss_C[10], -2.0f);
BoardPlayerModelAttrReset(arg1->unk00_bit5, 0x40000003);
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, -2.0f);
HuAudFXPlay(0x449);
BoardAudSeqPause(0, 0, 0x3E8);
}
arg1->unk2 += 1;
BoardModelPosSetV(lbl_1_data_456, &sp8);
}
void fn_1_9044(omObjData* arg0, someBits3* arg1) {
Vec sp8;
BoardModelRotGet(lbl_1_data_456, &sp8);
arg0->trans.y = BoardDAngleCalc(arg0->trans.y + arg0->trans.z);
if (arg0->trans.y <= 2.0f) {
if (arg0->trans.y >= -2.0) {
arg0->trans.x *= 0.5f;
if (arg0->trans.x <= 1.0f) {
arg0->trans.y = 0.0f;
BoardRotateDiceNumbers(arg1->unk00_bit5);
BoardModelMotionShiftSet(lbl_1_bss_C[10], 1, 0.0f, 10.0f, 0x40000001U);
arg1->unk00_bit0 = 1;
}
}
}
sp8.z = arg0->trans.x * sin((3.141592653589793 * arg0->trans.y) / 180.0);
BoardModelRotSetV(lbl_1_data_456, &sp8);
}
void fn_1_91B8(void) {
s8 temp_r3;
if (lbl_1_bss_14E == 0) {
lbl_1_bss_14E = 1;
}
temp_r3 = lbl_1_bss_14E / 6;
lbl_1_bss_14C = lbl_1_data_4C8[temp_r3];
}
void fn_1_9230(s32 arg0) {
Point3d sp20;
Point3d sp14;
Point3d sp8;
s16 temp_r30;
f32 rotY;
temp_r30 = GWPlayer[arg0].space_curr;
BoardPlayerPosGet(arg0, &sp20);
BoardSpacePosGet(0, temp_r30, &sp14);
BoardCameraTargetPlayerSet(arg0);
BoardCameraViewSet(1);
BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 0x14);
while (GWPlayer[arg0].moving != 0) {
BoardModelPosGet(lbl_1_bss_C[10], &sp20);
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp14, &sp20, &sp8);
rotY = atan2(sp8.x, sp8.z) / 3.141592653589793 * 180.0;
BoardModelRotYSet(lbl_1_bss_C[10], rotY);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_C[10], 0.0f);
BoardCameraMotionWait();
}
void fn_1_9384(void) {
f32 widthHeight[2];
f32 x, y;
HuWinMesMaxSizeGet(1, widthHeight, 0x160019);
x = -10000.0f;
y = 288.0f;
lbl_1_data_454 = HuWinCreate(x, y, widthHeight[0], widthHeight[1], 0);
HuWinBGTPLvlSet(lbl_1_data_454, 0.0f);
HuWinMesSpeedSet(lbl_1_data_454, 0);
HuWinMesSet(lbl_1_data_454, 0x160019U);
}
void fn_1_9474(s32 arg0) {
sprintf(lbl_1_bss_150, "%d", lbl_1_bss_14C);
BoardWinCreate(2, 0x160017U, 2);
BoardWinInsertMesSet((u32)lbl_1_bss_150, 4);
BoardWinWait();
BoardWinKill();
BoardPlayerMotBlendSet(arg0, 0, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
fn_1_97F8(arg0);
while (lbl_1_bss_148) {
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0U);
HuPrcSleep(8);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardWinCreate(2, 0x160018U, 2);
BoardWinWait();
BoardWinKill();
BoardModelMotionStart(lbl_1_bss_C[7], 0, 0x40000002);
}
void fn_1_95B8(omObjData* arg0) {
f32 temp_f31;
s32 var_r25;
s32 var_r26;
s32 var_r27;
s32 var_r28;
unkTemp* var_r30;
unkTemp2* temp_r29;
s32 i;
s32 temp;
temp_r29 = OM_GET_WORK_PTR(arg0, unkTemp2);
if ((temp_r29->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
fn_1_9A1C(temp_r29);
HuMemDirectFree((void*)temp_r29->unk_0C);
lbl_1_bss_148 = 0;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
var_r30 = temp_r29->unk_0C;
for (var_r27 = i = 0; i < 20; i++, var_r30++) {
if (var_r30->unk0 == 0) {
var_r27++;
}
}
if (var_r27 == 20) {
temp_r29->unk00_bit0 = 1;
return;
}
var_r25 = 0;
for (i = 0; i < 20; i++) {
var_r30 = &temp_r29->unk_0C[i];
if ((var_r30->unk0 == 1) && (var_r25 == 0)) {
var_r30->unk0 = 2U;
var_r25 = 1;
}
if (var_r30->unk0 == 2) {
var_r30->unk1++;
OSu8tof32(&var_r30->unk1, &temp_f31);
var_r30->unk4 += 45.0f;
var_r30->unk8.y += -0.08166667f * temp_f31 * temp_f31 * 0.75f;
if (var_r30->unk8.y < temp_r29->unk8) {
var_r30->unk8.y = temp_r29->unk8;
CharModelCreateCoinParticle(1, &var_r30->unk8);
BoardModelVisibilitySet(var_r30->unk_02, 0);
HuAudFXPlay(7);
BoardPlayerCoinsAdd(temp_r29->unk4, 1);
omVibrate(temp_r29->unk4, 0xC, 6, 6);
var_r30->unk0 = 0;
}
BoardModelPosSetV(var_r30->unk_02, &var_r30->unk8);
BoardModelRotYSet(var_r30->unk_02, var_r30->unk4);
}
}
}
void fn_1_97F8(s32 arg0) {
Point3d sp8;
f32 temp_f2;
f32 var_f31;
f64 temp_f1;
omObjData* temp_r3;
s32 i;
unkTemp2* temp_r30;
unkTemp* temp_r31;
temp_r3 = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_95B8);
lbl_1_bss_148 = temp_r3;
temp_r30 = OM_GET_WORK_PTR(temp_r3, unkTemp2);
temp_r30->unk00_bit0 = 0;
temp_r30->unk4 = arg0;
temp_r30->unk_0C = HuMemDirectMallocNum(0, 0x190, 0x10000000);
BoardPlayerPosGet(arg0, &sp8);
temp_r30->unk8 = (80.0f + sp8.y);
memset(temp_r30->unk_0C, 0, 0x190);
for (i = 0; i < lbl_1_bss_14C; i++) {
if (i == 0) {
var_f31 = 0.0f;
} else {
var_f31 = BoardRandFloat();
}
temp_r31 = &temp_r30->unk_0C[i];
temp_r31->unk0 = 1;
temp_r31->unk8.x = sp8.x + (50.0f * sin((3.141592653589793 * var_f31) / 180.0));
temp_r31->unk8.z = sp8.z + (50.0f * cos((3.141592653589793 * var_f31) / 180.0));
temp_r31->unk8.y = 600.0f + sp8.y + (500.0f * BoardRandFloat());
temp_r31->unk1 = 0;
temp_r31->unk4 = BoardRandFloat() * 360.0f;
temp_r31->unk_02 = BoardModelCreate(0x7000A, NULL, 1);
}
}
void fn_1_9A1C(unkTemp2* arg0) {
s32 i;
unkTemp* temp;
for (i = 0; i < 20; i++) {
temp = &arg0->unk_0C[i];
BoardModelKill(temp->unk_02);
}
}
char mg_pad[] = "\0\0\0\0\0\0";

View file

@ -66,7 +66,7 @@ s32 BoardModelMotionShiftSet(s16, s32, f32, f32, u32);
s32 BoardVecDAngleCalcRange(float *value, float min, float range);
void BoardCameraQuakeSet(s32 duration, float strength);
s16 MGSeqCreate(s32, ...);
u8 MGSeqGetStat(s16);
u8 MGSeqStatGet(s16);
void omVibrate(s16, s16, s16, s16);
void BoardPlayerMotBlendSet(s32, s32, s32);
f32 BoardPlayerRotYGet(s32);
@ -339,7 +339,7 @@ void fn_1_A44C(s32 arg0) {
BoardMusStart(1, 0x17, 0x7F, 0);
temp_r30 = MGSeqCreate(3, 0);
while (MGSeqGetStat(temp_r30) != 0) {
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
fn_1_A7A0(arg0);
@ -448,7 +448,7 @@ void fn_1_A994(omObjData* arg0) {
temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
if ((temp_r31->unk00_bit0 != 0)|| (BoardIsKill() != 0)) {
if (temp_r31->unk4 != -1) {
MGSeqSetParam(temp_r31->unk4, 2, -1U);
MGSeqParamSet(temp_r31->unk4, 2, -1U);
temp_r31->unk4 = -1;
}
lbl_1_bss_188 = NULL;
@ -465,7 +465,7 @@ void fn_1_A994(omObjData* arg0) {
} else {
fn_1_ACD8(2);
}
MGSeqSetParam(temp_r31->unk4, 1, temp_r31->unk1);
MGSeqParamSet(temp_r31->unk4, 1, temp_r31->unk1);
temp_r31->unk2 = 0x3CU;
}
}
@ -544,7 +544,7 @@ void fn_1_ACD8(s32 arg0) {
lbl_1_data_4D8 = -1;
}
if (temp_r31->unk4 != -1) {
MGSeqSetParam(temp_r31->unk4, 2, -1U);
MGSeqParamSet(temp_r31->unk4, 2, -1U);
temp_r31->unk4 = -1;
}
BoardPlayerMotionShiftSet(temp_r31->unk00_bit4, 0xB, 0.0f, 10.0f, 0);

View file

@ -1982,8 +1982,6 @@ static float last5GfxPosTbl[2][3][2] = {
static void UpdateLast5Gfx(omObjData *object);
void BoardSpriteCreate(s32 file, s16 prio, AnimData **anim, s16 *sprite);
void BoardLast5GfxInit(void)
{
Last5GfxWork *work;
@ -2011,7 +2009,7 @@ void BoardLast5GfxInit(void)
lastF = 0;
}
for(i=0; i<3; i++) {
s16 prio;
s32 prio;
s32 spr_file;
if(i == 1) {

View file

@ -1028,7 +1028,7 @@ static inline GetLinkCount(s32 playerIdx, s32 boardIdx) {
return linkCount;
}
void InitJunction(s32 arg0, s32 arg1, f32 arg8) {
static void InitJunction(s32 arg0, s32 arg1, f32 arg8) {
Point3d sp68;
Point3d sp5C;
Point3d sp50;

1997
src/game/board/ui.c Executable file

File diff suppressed because it is too large Load diff

View file

@ -85,7 +85,7 @@ static void omWatchOverlayProc(void)
omovlstat = omnextovlstat;
omnextovl = OVL_INVALID;
if(_CheckFlag(FLAG_ID_MAKE(1, 12))) {
MGSeqPracticeStart();
MGSeqPracticeInit();
}
omSysPauseEnable(TRUE);
omcurdll = omDLLStart(omcurovl, 0);

View file

@ -555,7 +555,7 @@ void HuSprGrpTPLvlSet(short group, float tp_lvl)
}
}
void HuSprGrpDrawNoSet(short group, int draw_no)
s32 HuSprGrpDrawNoSet(short group, int draw_no)
{
SpriteGroupData *group_ptr = &HuSprGrpData[group];
short i;