Merge branch 'Rainchus:main' into main

This commit is contained in:
CreateSource 2023-12-28 16:56:38 -05:00 committed by GitHub
commit db63616c5e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 1461 additions and 234 deletions

View file

@ -258,7 +258,7 @@ game/armem.c:
.bss start:0x801967E0 end:0x80196EC0
.sbss start:0x801D3E00 end:0x801D3E10
game/code_800498F0.c:
game/chrman.c:
.text start:0x800498F0 end:0x80050C5C
.data start:0x801307C8 end:0x801311E8
.bss start:0x80196EC0 end:0x80197650
@ -341,16 +341,22 @@ game/board/model.c:
.sdata2 start:0x801D5300 end:0x801D5318
game/board/window.c:
.text start:0x8006FD7C end:0x800714F8
.text start:0x8006FD7C end:0x80070D84
.rodata start:0x8011DE60 end:0x8011DED0
.data start:0x80139AA0 end:0x80139B00
.data start:0x80139AA0 end:0x80139AE8
.bss start:0x8019D998 end:0x8019D9F8
.sdata start:0x801D36E0 end:0x801D36F0
.sbss start:0x801D3F68 end:0x801D3F98
.sdata start:0x801D36E0 end:0x801D36E8
.sbss start:0x801D3F68 end:0x801D3F90
.sdata2 start:0x801D5318 end:0x801D5328
game/board/board_snd.c:
.text start:0x80070D84 end:0x80071290
.data start:0x80139AE8 end:0x80139B00
.sdata start:0x801D36E8 end:0x801D36F0
.sbss start:0x801D3F90 end:0x801D3F98
game/board/com.c:
.text start:0x800714F8 end:0x800729A4
.text start:0x80071290 end:0x800729A4
.data start:0x80139B00 end:0x80139BC8
.sdata start:0x801D36F0 end:0x801D36F8
.sdata2 start:0x801D5328 end:0x801D5350
@ -426,7 +432,7 @@ game/board/star.c:
.sdata2 start:0x801D5898 end:0x801D5938
game/board/dice_roll.c:
.text start:0x80085CC8 end:0x8008831C
.text start:0x80085CC8 end:0x80088368
.rodata start:0x8011E0B0 end:0x8011E118
.data start:0x8013A368 end:0x8013A408
.bss start:0x801A4AE0 end:0x801A4AF0
@ -435,7 +441,7 @@ game/board/dice_roll.c:
.sdata2 start:0x801D5938 end:0x801D59E0
game/board/ui.c:
.text start:0x8008831C end:0x8008DF68
.text start:0x80088368 end:0x8008DF68
.rodata start:0x8011E118 end:0x8011E200
.data start:0x8013A408 end:0x8013A608
.bss start:0x801A4AF0 end:0x801A4B80
@ -830,15 +836,95 @@ dolphin/gx/GXStubs.c:
dolphin/gx/GXDisplayList.c:
.text start:0x800CF018 end:0x800CF224
.bss start:0x801A6778 end:0x801A6C98
.sbss start:0x801D4600 end:0x801D4608
dolphin/gx/GXTransform.c:
.text start:0x800CF224 end:0x800CF9D8
.sdata2 start:0x801D64D0 end:0x801D64F8
.sdata2 start:0x801D64D0 end:0x801D64F0
dolphin/gx/GXPerf.c:
.text start:0x800CF9D8 end:0x800D09A4
.data start:0x8013DDA0 end:0x8013DEE8
dolphin/card/CARDBios.c:
.text start:0x800D09A4 end:0x800D1CC4
.data start:0x8013DEE8 end:0x8013DF00
.bss start:0x801A6C98 end:0x801A6ED8
dolphin/card/CARDUnlock.c:
.text start:0x800D1CC4 end:0x800D2F24
.data start:0x8013DF00 end:0x8013E060
dolphin/card/CARDRdwr.c:
.text start:0x800D2F24 end:0x800D31A4
dolphin/card/CARDBlock.c:
.text start:0x800D31A4 end:0x800D35A8
dolphin/card/CARDDir.c:
.text start:0x800D35A8 end:0x800D380C
dolphin/card/CARDCheck.c:
.text start:0x800D380C end:0x800D4774
dolphin/card/CARDMount.c:
.text start:0x800D4774 end:0x800D5234
.data start:0x8013E060 end:0x8013E0A0
dolphin/card/CARDFormat.c:
.text start:0x800D5234 end:0x800D5A24
dolphin/card/CARDOpen.c:
.text start:0x800D5A24 end:0x800D5E78
dolphin/card/CARDCreate.c:
.text start:0x800D5E78 end:0x800D6210
dolphin/card/CARDRead.c:
.text start:0x800D6210 end:0x800D6688
dolphin/card/CARDWrite.c:
.text start:0x800D6688 end:0x800D6A04
dolphin/card/CARDDelete.c:
.text start:0x800D6A04 end:0x800D6C00
dolphin/card/CARDStat.c:
.text start:0x800D6C00 end:0x800D70E0
dolphin/card/CARDNet.c:
.text start:0x800D70E0 end:0x800D71A4
dolphin/exi/EXIBios.c:
.text start:0x800D71A4 end:0x800D8A78
.bss start:0x801A6ED8 end:0x801A6F98
dolphin/exi/EXIUart.c:
.text start:0x800D8A78 end:0x800D8CE8
.sbss start:0x801D4608 end:0x801D4618
dolphin/si/SIBios.c:
.text start:0x800D8CE8 end:0x800DA3C8
.data start:0x8013E0A0 end:0x8013E170
.bss start:0x801A6F98 end:0x801A71A0
.sbss start:0x801D4618 end:0x801D4628
dolphin/si/SISamplingRate.c:
.text start:0x800DA3C8 end:0x800DA4D0
.data start:0x8013E170 end:0x8013E208
.sbss start:0x801D4628 end:0x801D4640
dolphin/thp/THPDec.c:
.text start:0x800DA4D0 end:0x800E1A10
.rodata start:0x8011E440 end:0x8011E4D0
.bss start:0x801A71A0 end:0x801A72D0
.sbss start:0x801D4640 end:0x801D4758
.sdata2 start:0x801D64F0 end:0x801D6510
dolphin/thp/THPAudio.c:
.text start:0x800E1A10 end:0x800E1F40
Runtime.PPCEABI.H/global_destructor_chain.c:
.text start:0x800E2008 end:0x800E2068
.dtors start:0x8011DCE8 end:0x8011DCEC
@ -858,3 +944,6 @@ Runtime.PPCEABI.H/Gecko_ExceptionPPC.cp:
.data start:0x8013E218 end:0x8013E300
.bss start:0x801A72D0 end:0x801A72E0
.sdata start:0x801D39B8 end:0x801D39C8
game/kerent.c:
.text start:0x8011CCC4 end:0x8011DCA8

View file

@ -664,7 +664,7 @@ MGSeqSetParam = .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
MGSeqDummy_80035AEC = .text:0x80035AEC; // type:function size:0x4
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
@ -999,92 +999,92 @@ HuRestartSystem = .text:0x8005AE34; // type:function size:0xDC
HuSoftResetCheck = .text:0x8005AF10; // type:function size:0xFC scope:local
HuSoftResetCountCheck = .text:0x8005B00C; // type:function size:0xCC scope:local
HuSoftResetPostProc = .text:0x8005B0D8; // type:function size:0x78 scope:local
fn_8005B150 = .text:0x8005B150; // type:function size:0x2E0
fn_8005B430 = .text:0x8005B430; // type:function size:0x64
fn_8005B494 = .text:0x8005B494; // type:function size:0x9C
fn_8005B530 = .text:0x8005B530; // type:function size:0xCC
fn_8005B5FC = .text:0x8005B5FC; // type:function size:0xAC
BoardInit = .text:0x8005B150; // type:function size:0x2E0
InitBoardFunc = .text:0x8005B430; // type:function size:0x64 scope:local
ExecBoardFunc = .text:0x8005B494; // type:function size:0x9C scope:local
KillBoardFunc = .text:0x8005B530; // type:function size:0xCC scope:local
BoardKill = .text:0x8005B5FC; // type:function size:0xAC
fn_8005B6A8 = .text:0x8005B6A8; // type:function size:0x48
fn_8005B6F0 = .text:0x8005B6F0; // type:function size:0x74
fn_8005B764 = .text:0x8005B764; // type:function size:0x48
fn_8005B7AC = .text:0x8005B7AC; // type:function size:0x524
BoardSetPauseEnable = .text:0x8005B6F0; // type:function size:0x74
BoardGetPauseEnable = .text:0x8005B764; // type:function size:0x48
BoardSetSave = .text:0x8005B7AC; // type:function size:0x524
fn_8005BCD0 = .text:0x8005BCD0; // type:function size:0x160
fn_8005BE30 = .text:0x8005BE30; // type:function size:0x160
fn_8005BF90 = .text:0x8005BF90; // type:function size:0xC
fn_8005BF9C = .text:0x8005BF9C; // type:function size:0x7D0
fn_8005C76C = .text:0x8005C76C; // type:function size:0x8C
fn_8005C7F8 = .text:0x8005C7F8; // type:function size:0x28C
fn_8005CA84 = .text:0x8005CA84; // type:function size:0xC4
fn_8005CB48 = .text:0x8005CB48; // type:function size:0x8C
fn_8005CBD4 = .text:0x8005CBD4; // type:function size:0x410
fn_8005CFE4 = .text:0x8005CFE4; // type:function size:0x128
BoardLoadConfig = .text:0x8005BE30; // type:function size:0x160
DestroyBoardMainProc = .text:0x8005BF90; // type:function size:0xC scope:local
BoardMainProcFunc = .text:0x8005BF9C; // type:function size:0x7D0 scope:local
BoardTurnNext = .text:0x8005C76C; // type:function size:0x8C
BoardIsTurnCont = .text:0x8005C7F8; // type:function size:0x28C
BoardSetNextOvl = .text:0x8005CA84; // type:function size:0xC4
BoardHasStarted = .text:0x8005CB48; // type:function size:0x8C
CreateBoard = .text:0x8005CBD4; // type:function size:0x410 scope:local
DestroyBoard = .text:0x8005CFE4; // type:function size:0x128 scope:local
fn_8005D10C = .text:0x8005D10C; // type:function size:0xC
fn_8005D118 = .text:0x8005D118; // type:function size:0x44
fn_8005D15C = .text:0x8005D15C; // type:function size:0x50
fn_8005D1AC = .text:0x8005D1AC; // type:function size:0x3C
fn_8005D1E8 = .text:0x8005D1E8; // type:function size:0x48
fn_8005D230 = .text:0x8005D230; // type:function size:0x54
fn_8005D284 = .text:0x8005D284; // type:function size:0x2AC
fn_8005D530 = .text:0x8005D530; // type:function size:0x48
fn_8005D578 = .text:0x8005D578; // type:function size:0x48
fn_8005D5C0 = .text:0x8005D5C0; // type:function size:0x48
fn_8005D608 = .text:0x8005D608; // type:function size:0x20
fn_8005D628 = .text:0x8005D628; // type:function size:0xA8
fn_8005D6D0 = .text:0x8005D6D0; // type:function size:0xBC
fn_8005D78C = .text:0x8005D78C; // type:function size:0x28
fn_8005D7B4 = .text:0x8005D7B4; // type:function size:0x50
fn_8005D804 = .text:0x8005D804; // type:function size:0x30
fn_8005D834 = .text:0x8005D834; // type:function size:0xB4
fn_8005D8E8 = .text:0x8005D8E8; // type:function size:0x40
fn_8005D928 = .text:0x8005D928; // type:function size:0x44
fn_8005D96C = .text:0x8005D96C; // type:function size:0x28
fn_8005D994 = .text:0x8005D994; // type:function size:0x3C
fn_8005D9D0 = .text:0x8005D9D0; // type:function size:0x3C
fn_8005DA0C = .text:0x8005DA0C; // type:function size:0x28
fn_8005DA34 = .text:0x8005DA34; // type:function size:0x28
fn_8005DA5C = .text:0x8005DA5C; // type:function size:0x24
fn_8005DA80 = .text:0x8005DA80; // type:function size:0x20
fn_8005DAA0 = .text:0x8005DAA0; // type:function size:0x24
fn_8005DAC4 = .text:0x8005DAC4; // type:function size:0x24
fn_8005DAE8 = .text:0x8005DAE8; // type:function size:0x3C
fn_8005DB24 = .text:0x8005DB24; // type:function size:0x48
fn_8005DB6C = .text:0x8005DB6C; // type:function size:0x230
fn_8005DD9C = .text:0x8005DD9C; // type:function size:0x20
fn_8005DDBC = .text:0x8005DDBC; // type:function size:0x2BC
BoardCameraBackup = .text:0x8005D1AC; // type:function size:0x3C
BoardCameraRestore = .text:0x8005D1E8; // type:function size:0x48
BoardCameraScissorSet = .text:0x8005D230; // type:function size:0x54
BoardCameraViewSet = .text:0x8005D284; // type:function size:0x2AC
BoardCameraPosGet = .text:0x8005D530; // type:function size:0x48
BoardCameraTargetGet = .text:0x8005D578; // type:function size:0x48
BoardCameraRotGet = .text:0x8005D5C0; // type:function size:0x48
BoardCameraZoomGet = .text:0x8005D608; // type:function size:0x20
BoardCameraDirGet = .text:0x8005D628; // type:function size:0xA8
BoardCameraPointDirGet = .text:0x8005D6D0; // type:function size:0xBC
BoardCameraSet = .text:0x8005D78C; // type:function size:0x28
BoardCameraVisibleSet = .text:0x8005D7B4; // type:function size:0x50
BoardCameraOffsetSet = .text:0x8005D804; // type:function size:0x30
BoardCameraTargetSetPlayer = .text:0x8005D834; // type:function size:0xB4
BoardCameraTargetSetModel = .text:0x8005D8E8; // type:function size:0x40
BoardCameraSTargetetSpace = .text:0x8005D928; // type:function size:0x44
BoardCameraVecCalcFuncSet = .text:0x8005D96C; // type:function size:0x28
BoardCameraQuakeSet = .text:0x8005D994; // type:function size:0x3C
BoardCameraQuakeReset = .text:0x8005D9D0; // type:function size:0x3C
BoardCameraTargetSet = .text:0x8005DA0C; // type:function size:0x28
BoardCameraPosSet = .text:0x8005DA34; // type:function size:0x28
BoardCameraAngleZoomSet = .text:0x8005DA5C; // type:function size:0x24
BoardCameraZoomSet = .text:0x8005DA80; // type:function size:0x20
BoardCameraAngleSet = .text:0x8005DAA0; // type:function size:0x24
BoardCameraNearFarSet = .text:0x8005DAC4; // type:function size:0x24
BoardCameraNearFarGet = .text:0x8005DAE8; // type:function size:0x3C
BoardCameraStartMotion = .text:0x8005DB24; // type:function size:0x48
BoardCameraStartMotion2 = .text:0x8005DB6C; // type:function size:0x230
BoardCameraFovSet = .text:0x8005DD9C; // type:function size:0x20
BoardCameraCullCheck = .text:0x8005DDBC; // type:function size:0x2BC
fn_8005E078 = .text:0x8005E078; // type:function size:0x48
fn_8005E0C0 = .text:0x8005E0C0; // type:function size:0x58
fn_8005E118 = .text:0x8005E118; // type:function size:0x24C
fn_8005E364 = .text:0x8005E364; // type:function size:0x350
fn_8005E6B4 = .text:0x8005E6B4; // type:function size:0xE4
fn_8005E798 = .text:0x8005E798; // type:function size:0x764
fn_8005EEFC = .text:0x8005EEFC; // type:function size:0x48
fn_8005EF44 = .text:0x8005EF44; // type:function size:0x48
fn_8005EF8C = .text:0x8005EF8C; // type:function size:0x170
fn_8005F0FC = .text:0x8005F0FC; // type:function size:0x60
fn_8005F15C = .text:0x8005F15C; // type:function size:0xC4
fn_8005F220 = .text:0x8005F220; // type:function size:0x74
fn_8005F294 = .text:0x8005F294; // type:function size:0x28
fn_8005F2BC = .text:0x8005F2BC; // type:function size:0x28
fn_8005F2E4 = .text:0x8005F2E4; // type:function size:0x48
fn_8005F32C = .text:0x8005F32C; // type:function size:0x10C
BoardCameraInit = .text:0x8005E118; // type:function size:0x24C
BoardCameraUpdate = .text:0x8005E364; // type:function size:0x350
BoardCameraCalcTarget = .text:0x8005E6B4; // type:function size:0xE4
BoardCameraCalcVec = .text:0x8005E798; // type:function size:0x764
BoardMGDoneFlagSet = .text:0x8005EEFC; // type:function size:0x48
BoardMGDoneFlagGet = .text:0x8005EF44; // type:function size:0x48
BoardMGExit = .text:0x8005EF8C; // type:function size:0x170
BoardMGKill = .text:0x8005F0FC; // type:function size:0x60
BoardMGExec = .text:0x8005F15C; // type:function size:0xC4
BoardMGCreate = .text:0x8005F220; // type:function size:0x74
BoardMGStartFlagSet = .text:0x8005F294; // type:function size:0x28
BoardMGStartFlagReset = .text:0x8005F2BC; // type:function size:0x28
BoardMGStartFlagGet = .text:0x8005F2E4; // type:function size:0x48
BoardMTXCalcLookAt = .text:0x8005F32C; // type:function size:0x10C
fn_8005F438 = .text:0x8005F438; // type:function size:0x330
fn_8005F768 = .text:0x8005F768; // type:function size:0x390
fn_8005FAF8 = .text:0x8005FAF8; // type:function size:0x24
fn_8005FB1C = .text:0x8005FB1C; // type:function size:0x24
fn_8005FB40 = .text:0x8005FB40; // type:function size:0x50
fn_8005FB90 = .text:0x8005FB90; // type:function size:0x58
fn_8005FBE8 = .text:0x8005FBE8; // type:function size:0x134
fn_8005FD1C = .text:0x8005FD1C; // type:function size:0x15C
fn_8005FE78 = .text:0x8005FE78; // type:function size:0x7C
fn_8005FEF4 = .text:0x8005FEF4; // type:function size:0x34
fn_8005FF28 = .text:0x8005FF28; // type:function size:0x1C0
fn_800600E8 = .text:0x800600E8; // type:function size:0x6C
fn_80060154 = .text:0x80060154; // type:function size:0xD4
fn_80060228 = .text:0x80060228; // type:function size:0x174
fn_8006039C = .text:0x8006039C; // type:function size:0x5C
fn_800603F8 = .text:0x800603F8; // type:function size:0x34
fn_8006042C = .text:0x8006042C; // type:function size:0x178
fn_800605A4 = .text:0x800605A4; // type:function size:0x350
BoardRandInit = .text:0x8005FAF8; // type:function size:0x24
BoardRand = .text:0x8005FB1C; // type:function size:0x24
BoardRandMod = .text:0x8005FB40; // type:function size:0x50
BoardRandFloat = .text:0x8005FB90; // type:function size:0x58
BoardVecMagXZCalc = .text:0x8005FBE8; // type:function size:0x134
BoardVecMagXZCheck = .text:0x8005FD1C; // type:function size:0x15C
BoardVecCalcDAngleVec = .text:0x8005FE78; // type:function size:0x7C
BoardVecCalcDAngle = .text:0x8005FEF4; // type:function size:0x34
BoardVecCalcDAngleMod = .text:0x8005FF28; // type:function size:0x1C0
BoardVecMag2Check = .text:0x800600E8; // type:function size:0x6C
BoardFilterFadeOut = .text:0x80060154; // type:function size:0xD4
BoardFilterFadeIn = .text:0x80060228; // type:function size:0x174
BoardFilterFadeIsDone = .text:0x8006039C; // type:function size:0x5C
BoardFilterFadeAlive = .text:0x800603F8; // type:function size:0x34
BoardFilterFadeUpdate = .text:0x8006042C; // type:function size:0x178
BoardFilterFadeDraw = .text:0x800605A4; // type:function size:0x350
fn_800608F4 = .text:0x800608F4; // type:function size:0x164
fn_80060A58 = .text:0x80060A58; // type:function size:0x24
fn_80060A7C = .text:0x80060A7C; // type:function size:0x88
@ -1092,9 +1092,9 @@ fn_80060B04 = .text:0x80060B04; // type:function size:0xB8
fn_80060BBC = .text:0x80060BBC; // type:function size:0x564
fn_80061120 = .text:0x80061120; // type:function size:0x14C
fn_8006126C = .text:0x8006126C; // type:function size:0x254
fn_800614C0 = .text:0x800614C0; // type:function size:0x2B4
fn_80061774 = .text:0x80061774; // type:function size:0x2AC
fn_80061A20 = .text:0x80061A20; // type:function size:0xAC
BoardTurnRemainInit = .text:0x800614C0; // type:function size:0x2B4
BoardTurnRemainUpdate = .text:0x80061774; // type:function size:0x2AC
BoardTurnRemainHide = .text:0x80061A20; // type:function size:0xAC
fn_80061ACC = .text:0x80061ACC; // type:function size:0x80
fn_80061B4C = .text:0x80061B4C; // type:function size:0x54
fn_80061BA0 = .text:0x80061BA0; // type:function size:0x3A4
@ -1104,7 +1104,7 @@ fn_80061FC4 = .text:0x80061FC4; // type:function size:0xC
fn_80061FD0 = .text:0x80061FD0; // type:function size:0xC
fn_80061FDC = .text:0x80061FDC; // type:function size:0x78
fn_80062054 = .text:0x80062054; // type:function size:0x78
fn_800620CC = .text:0x800620CC; // type:function size:0x80
BoardPlayerIsAllCom = .text:0x800620CC; // type:function size:0x80
fn_8006214C = .text:0x8006214C; // type:function size:0x16C
fn_800622B8 = .text:0x800622B8; // type:function size:0x588
fn_80062840 = .text:0x80062840; // type:function size:0xFC
@ -1289,32 +1289,32 @@ fn_8006F8A8 = .text:0x8006F8A8; // type:function size:0x9C
fn_8006F944 = .text:0x8006F944; // type:function size:0x178
fn_8006FABC = .text:0x8006FABC; // type:function size:0x194
fn_8006FC50 = .text:0x8006FC50; // type:function size:0x12C
fn_8006FD7C = .text:0x8006FD7C; // type:function size:0x24
fn_8006FDA0 = .text:0x8006FDA0; // type:function size:0x34
fn_8006FDD4 = .text:0x8006FDD4; // type:function size:0x24
fn_8006FDF8 = .text:0x8006FDF8; // type:function size:0x6C
fn_8006FE64 = .text:0x8006FE64; // type:function size:0x514
BoardWinInit = .text:0x8006FD7C; // type:function size:0x24
lbl_8006FDA0 = .text:0x8006FDA0; // type:function size:0x34
BoardWinKillAll = .text:0x8006FDD4; // type:function size:0x24
BoardWinDestroy = .text:0x8006FDF8; // type:function size:0x6C
BoardWinProc = .text:0x8006FE64; // type:function size:0x514
BoardWinChoiceGet = .text:0x80070378; // type:function size:0xC
fn_80070384 = .text:0x80070384; // type:function size:0xC
fn_80070390 = .text:0x80070390; // type:function size:0x1A0
BoardWinPause = .text:0x80070384; // type:function size:0xC
BoardWinCreateChoice = .text:0x80070390; // type:function size:0x1A0
BoardWinCreate = .text:0x80070530; // type:function size:0x1A0
fn_800706D0 = .text:0x800706D0; // type:function size:0x18
BoardWinInsertMesSet = .text:0x800706D0; // type:function size:0x18
BoardWinWait = .text:0x800706E8; // type:function size:0x50
BoardWinKill = .text:0x80070738; // type:function size:0x38
fn_80070770 = .text:0x80070770; // type:function size:0x48
fn_800707B8 = .text:0x800707B8; // type:function size:0x48
fn_80070800 = .text:0x80070800; // type:function size:0x1C
fn_8007081C = .text:0x8007081C; // type:function size:0xC
fn_80070828 = .text:0x80070828; // type:function size:0x64
fn_8007088C = .text:0x8007088C; // type:function size:0x50
fn_800708DC = .text:0x800708DC; // type:function size:0x38
fn_80070914 = .text:0x80070914; // type:function size:0x44
fn_80070958 = .text:0x80070958; // type:function size:0x38
fn_80070990 = .text:0x80070990; // type:function size:0x38
fn_800709C8 = .text:0x800709C8; // type:function size:0x38
fn_80070A00 = .text:0x80070A00; // type:function size:0x168
fn_80070B68 = .text:0x80070B68; // type:function size:0x214
fn_80070D7C = .text:0x80070D7C; // type:function size:0x8
BoardWinSetAttr = .text:0x80070770; // type:function size:0x48
BoardWinResetAttr = .text:0x800707B8; // type:function size:0x48
BoardWinChoiceDisable = .text:0x80070800; // type:function size:0x1C
BoardWinKeyWait = .text:0x8007081C; // type:function size:0xC
BoardWinSpeedGet = .text:0x80070828; // type:function size:0x64
BoardWinSpeedSet = .text:0x8007088C; // type:function size:0x50
BoardWinChoiceNowGet = .text:0x800708DC; // type:function size:0x38
BoardWinPriSet = .text:0x80070914; // type:function size:0x44
BoardWinChoiceNowGet2 = .text:0x80070958; // type:function size:0x38
BoardWinPortraitGet = .text:0x80070990; // type:function size:0x38
BoardWinPortraitGetStar = .text:0x800709C8; // type:function size:0x38
BoardWinPlayerSet = .text:0x80070A00; // type:function size:0x168
BoardWinStartComKeySet = .text:0x80070B68; // type:function size:0x214
BoardWinComKeyFuncSet = .text:0x80070D7C; // type:function size:0x8
fn_80070D84 = .text:0x80070D84; // type:function size:0x68
fn_80070DEC = .text:0x80070DEC; // type:function size:0xD0
fn_80070EBC = .text:0x80070EBC; // type:function size:0x2C
@ -4652,7 +4652,8 @@ lbl_8011E3D0 = .rodata:0x8011E3D0; // type:object size:0x20 data:4byte
lbl_8011E3F0 = .rodata:0x8011E3F0; // type:object size:0x20 data:4byte
lbl_8011E410 = .rodata:0x8011E410; // type:object size:0x20 data:4byte
lbl_8011E430 = .rodata:0x8011E430; // type:object size:0x10 data:4byte
lbl_8011E440 = .rodata:0x8011E440; // type:object size:0x90 data:byte
__THPJpegNaturalOrder = .rodata:0x8011E440; // type:object size:0x50 data:byte
__THPAANScaleFactor = .rodata:0x8011E490; // type:object size:0x40 data:byte
lbl_8011E4D0 = .rodata:0x8011E4D0; // type:object size:0x10
lbl_8011E4E0 = .rodata:0x8011E4E0; // type:object size:0x10
lbl_8011E4F0 = .rodata:0x8011E4F0; // type:object size:0x18 data:double
@ -5138,11 +5139,11 @@ jumptable_80139720 = .data:0x80139720; // type:object size:0x34 scope:local
bmpMes$493 = .data:0x80139754; // type:object size:0x18 scope:local
lbl_8013976C = .data:0x8013976C; // type:object size:0x13 data:string
lbl_8013977F = .data:0x8013977F; // type:object size:0x19
lbl_80139798 = .data:0x80139798; // type:object size:0x24
camViewTbl = .data:0x80139798; // type:object size:0x24 scope:local
jumptable_801397BC = .data:0x801397BC; // type:object size:0x24 scope:local
lbl_801397E0 = .data:0x801397E0; // type:object size:0x48
lbl_80139828 = .data:0x80139828; // type:object size:0xC
lbl_80139834 = .data:0x80139834; // type:object size:0x30
turnRemainSprTbl = .data:0x80139828; // type:object size:0xC scope:local
turnRemainSprPosTbl = .data:0x80139834; // type:object size:0x30 scope:local
lbl_80139864 = .data:0x80139864; // type:object size:0x10
lbl_80139874 = .data:0x80139874; // type:object size:0x24
lbl_80139898 = .data:0x80139898; // type:object size:0x10
@ -5158,8 +5159,8 @@ lbl_8013993C = .data:0x8013993C; // type:object size:0xA0
lbl_801399DC = .data:0x801399DC; // type:object size:0x20
lbl_801399FC = .data:0x801399FC; // type:object size:0x74
lbl_80139A70 = .data:0x80139A70; // type:object size:0x30
lbl_80139AA0 = .data:0x80139AA0; // type:object size:0x24
lbl_80139AC4 = .data:0x80139AC4; // type:object size:0x24
PortraitTbl = .data:0x80139AA0; // type:object size:0x24 scope:local
StarPortraitTbl = .data:0x80139AC4; // type:object size:0x24 scope:local
lbl_80139AE8 = .data:0x80139AE8; // type:object size:0x18
COMItemWeightTbl = .data:0x80139B00; // type:object size:0x60 scope:local
COMItemUseCheckFuncTbl = .data:0x80139B60; // type:object size:0x38 scope:local
@ -5330,13 +5331,14 @@ p2f$194 = .data:0x8013DD80; // type:object size:0x20 scope:local
jumptable_8013DDA0 = .data:0x8013DDA0; // type:object size:0x5C scope:local
jumptable_8013DDFC = .data:0x8013DDFC; // type:object size:0x90 scope:local
jumptable_8013DE8C = .data:0x8013DE8C; // type:object size:0x5C scope:local
lbl_8013DEE8 = .data:0x8013DEE8; // type:object size:0x18
lbl_8013DF00 = .data:0x8013DF00; // type:object size:0x160
lbl_8013E060 = .data:0x8013E060; // type:object size:0x20
lbl_8013E080 = .data:0x8013E080; // type:object size:0x20
ResetFunctionInfo = .data:0x8013DEE8; // type:object size:0x10 scope:local
CardData = .data:0x8013DF00; // type:object size:0x160 scope:local align:32
SectorSizeTable = .data:0x8013E060; // type:object size:0x20 scope:local
LatencyTable = .data:0x8013E080; // type:object size:0x20 scope:local
Si = .data:0x8013E0A0; // type:object size:0x14 scope:local data:4byte
Type = .data:0x8013E0B4; // type:object size:0x10 scope:local
XYNTSC = .data:0x8013E170; // type:object size:0x30 scope:local
XYPAL = .data:0x8013E1A0; // type:object size:0x30 scope:local
lbl_8013E208 = .data:0x8013E208; // type:object size:0x10
jumptable_8013E218 = .data:0x8013E218; // type:object size:0x44 scope:local
jumptable_8013E25C = .data:0x8013E25C; // type:object size:0x44 scope:local
@ -5493,13 +5495,13 @@ padStat$377 = .bss:0x8019C460; // type:object size:0x30 scope:local
ToeMessageArray = .bss:0x8019C490; // type:object size:0x40 scope:local
ToeThread = .bss:0x8019C4D0; // type:object size:0x310 scope:local align:8
ToeThreadStack = .bss:0x8019C7E0; // type:object size:0x1000 scope:local
lbl_8019D7E0 = .bss:0x8019D7E0; // type:object size:0xC4 data:byte
lbl_8019D8A4 = .bss:0x8019D8A4; // type:object size:0xC4
boardCamera = .bss:0x8019D7E0; // type:object size:0xC4 data:byte
boardCameraBackup = .bss:0x8019D8A4; // type:object size:0xC4
lbl_8019D968 = .bss:0x8019D968; // type:object size:0x10
lbl_8019D978 = .bss:0x8019D978; // type:object size:0x10
lbl_8019D988 = .bss:0x8019D988; // type:object size:0x10
lbl_8019D998 = .bss:0x8019D998; // type:object size:0x20
lbl_8019D9B8 = .bss:0x8019D9B8; // type:object size:0x40
winInsertMesTbl = .bss:0x8019D998; // type:object size:0x20 scope:local
choiceDisableTbl = .bss:0x8019D9B8; // type:object size:0x40 scope:local
lbl_8019D9F8 = .bss:0x8019D9F8; // type:object size:0xC data:float
lbl_8019DA04 = .bss:0x8019DA04; // type:object size:0xC data:4byte
SpaceData = .bss:0x8019DA10; // type:object size:0x7000 scope:local data:float
@ -5569,18 +5571,25 @@ Origin = .bss:0x801A61C0; // type:object size:0x1E scope:local
CmdProbeDevice = .bss:0x801A61F0; // type:object size:0x10 scope:local
gxData = .bss:0x801A6200; // type:object size:0x4F8 scope:local
FifoObj = .bss:0x801A66F8; // type:object size:0x80
lbl_801A6778 = .bss:0x801A6778; // type:object size:0x520 data:4byte
lbl_801A6C98 = .bss:0x801A6C98; // type:object size:0x220 data:4byte
lbl_801A6EB8 = .bss:0x801A6EB8; // type:object size:0x20
DisplayListFifo = .bss:0x801A6778; // type:object size:0x24 scope:local data:4byte
__savedGXdata = .bss:0x801A679C; // type:object size:0x4F8 scope:local data:4byte
__CARDBlock = .bss:0x801A6C98; // type:object size:0x220 data:4byte
__CARDDiskNone = .bss:0x801A6EB8; // type:object size:0x20
Ecb = .bss:0x801A6ED8; // type:object size:0xC0 scope:local data:4byte
Packet = .bss:0x801A6F98; // type:object size:0x80 scope:local data:4byte
lbl_801A7018 = .bss:0x801A7018; // type:object size:0xA0
TypeTime = .bss:0x801A70B8; // type:object size:0x20 scope:local
lbl_801A70D8 = .bss:0x801A70D8; // type:object size:0x20
lbl_801A70F8 = .bss:0x801A70F8; // type:object size:0x40
lbl_801A7138 = .bss:0x801A7138; // type:object size:0x68 data:4byte
lbl_801A71A0 = .bss:0x801A71A0; // type:object size:0x118
lbl_801A72B8 = .bss:0x801A72B8; // type:object size:0x18 data:4byte
Packet = .bss:0x801A6F98; // type:object size:0x80 scope:local align:8 data:4byte
Alarm = .bss:0x801A7018; // type:object size:0xA0 scope:local align:8
TypeTime = .bss:0x801A70B8; // type:object size:0x20 scope:local align:8
XferTime = .bss:0x801A70D8; // type:object size:0x20 scope:local align:8
TypeCallback = .bss:0x801A70F8; // type:object size:0x40 scope:local
RDSTHandler = .bss:0x801A7138; // type:object size:0x10 scope:local data:4byte
InputBufferValid = .bss:0x801A7148; // type:object size:0x10 scope:local data:4byte
InputBuffer = .bss:0x801A7158; // type:object size:0x20 scope:local data:4byte
InputBufferVcount = .bss:0x801A7178; // type:object size:0x10 scope:local data:4byte
cmdFixDevice$327 = .bss:0x801A7188; // type:object size:0x10 scope:local data:4byte
__THPIDCTWorkspace = .bss:0x801A71A0; // type:object size:0x100 scope:local align:32
__THPLCWork512 = .bss:0x801A72A0; // type:object size:0xC scope:local
__THPLCWork640 = .bss:0x801A72AC; // type:object size:0xC scope:local
__THPMCUBuffer = .bss:0x801A72B8; // type:object size:0x18 scope:local data:4byte
fragmentinfo = .bss:0x801A72D0; // type:object size:0xC scope:local data:4byte
__atexit_funcs = .bss:0x801A72E0; // type:object size:0x100 scope:local
stderr_buff = .bss:0x801A73E0; // type:object size:0x38 data:4byte
@ -5741,7 +5750,7 @@ lbl_801D35D0 = .sdata:0x801D35D0; // type:object size:0x8
lbl_801D35D8 = .sdata:0x801D35D8; // type:object size:0x8
colorN$400 = .sdata:0x801D35E0; // type:object size:0x4 data:byte
colorN$444 = .sdata:0x801D35E4; // type:object size:0x4 data:byte
winPrio = .sdata:0x801D35E8; // type:object size:0x8 data:2byte
winPrio = .sdata:0x801D35E8; // type:object size:0x8 scope:local data:2byte
lbl_801D35F0 = .sdata:0x801D35F0; // type:object size:0x8
lbl_801D35F8 = .sdata:0x801D35F8; // type:object size:0x8
lbl_801D3600 = .sdata:0x801D3600; // type:object size:0x8
@ -5758,15 +5767,12 @@ SaveEnableF = .sdata:0x801D3640; // type:object size:0x4 data:4byte
lbl_801D3644 = .sdata:0x801D3644; // type:object size:0x2 data:string
lbl_801D3646 = .sdata:0x801D3646; // type:object size:0x2 data:string
SlotNameTbl = .sdata:0x801D3648; // type:object size:0x8 scope:local
saveMessWin = .sdata:0x801D3650; // type:object size:0x8 scope:local data:4byte
saveMessWin = .sdata:0x801D3650; // type:object size:0x4 scope:local data:4byte
SR_PushTime = .sdata:0x801D3658; // type:object size:0x8 scope:local data:2byte
SR_ResetPad = .sdata:0x801D3660; // type:object size:0x1 scope:local data:byte
Xfb = .sdata:0x801D3664; // type:object size:0x8 scope:local data:4byte
lbl_801D3670 = .sdata:0x801D3670; // type:object size:0x4 data:4byte
lbl_801D3674 = .sdata:0x801D3674; // type:object size:0x1 data:byte
lbl_801D3675 = .sdata:0x801D3675; // type:object size:0x1 data:byte
lbl_801D3676 = .sdata:0x801D3676; // type:object size:0x1 data:byte
lbl_801D3677 = .sdata:0x801D3677; // type:object size:0x1 data:byte
boardNextScene = .sdata:0x801D3670; // type:object size:0x4 scope:local data:4byte
filterColor = .sdata:0x801D3674; // type:object size:0x4 scope:local data:byte
lbl_801D3678 = .sdata:0x801D3678; // type:object size:0x8
lbl_801D3680 = .sdata:0x801D3680; // type:object size:0x2 data:2byte
lbl_801D3682 = .sdata:0x801D3682; // type:object size:0x2 data:2byte
@ -5785,7 +5791,7 @@ lbl_801D36C0 = .sdata:0x801D36C0; // type:object size:0x6 data:string
lbl_801D36C6 = .sdata:0x801D36C6; // type:object size:0x6 data:string
lbl_801D36CC = .sdata:0x801D36CC; // type:object size:0x6 data:string
lbl_801D36D2 = .sdata:0x801D36D2; // type:object size:0xE
lbl_801D36E0 = .sdata:0x801D36E0; // type:object size:0x8 data:2byte
windowID = .sdata:0x801D36E0; // type:object size:0x2 scope:local data:2byte
lbl_801D36E8 = .sdata:0x801D36E8; // type:object size:0x8 data:4byte
lbl_801D36F0 = .sdata:0x801D36F0; // type:object size:0x8 data:byte
lbl_801D36F8 = .sdata:0x801D36F8; // type:object size:0x2 data:2byte
@ -6240,25 +6246,25 @@ trychkBusyWait = .sbss:0x801D3EC4; // type:object size:0x4 scope:local data:4byt
XfbProg = .sbss:0x801D3EC8; // type:object size:0x4 scope:local data:4byte
XfbH = .sbss:0x801D3ECC; // type:object size:0x2 scope:local data:2byte
XfbW = .sbss:0x801D3ECE; // type:object size:0x2 scope:local data:2byte
lbl_801D3ED0 = .sbss:0x801D3ED0; // type:object size:0x4 data:4byte
lbl_801D3ED4 = .sbss:0x801D3ED4; // type:object size:0x4 data:4byte
lbl_801D3ED8 = .sbss:0x801D3ED8; // type:object size:0x4 data:4byte
boardMainProc = .sbss:0x801D3ED0; // type:object size:0x4 data:4byte
boardObjMan = .sbss:0x801D3ED4; // type:object size:0x4 data:4byte
boardCameraObj = .sbss:0x801D3ED8; // type:object size:0x4 data:4byte
lbl_801D3EDC = .sbss:0x801D3EDC; // type:object size:0x4 data:4byte
lbl_801D3EE0 = .sbss:0x801D3EE0; // type:object size:0x4 data:4byte
lbl_801D3EE4 = .sbss:0x801D3EE4; // type:object size:0x4 data:4byte
lbl_801D3EE8 = .sbss:0x801D3EE8; // type:object size:0x4 data:4byte
boardCameraUseBackup = .sbss:0x801D3EE0; // type:object size:0x4 data:4byte
boardCreateFunc = .sbss:0x801D3EE4; // type:object size:0x4 scope:local data:4byte
boardDestroyFunc = .sbss:0x801D3EE8; // type:object size:0x4 scope:local data:4byte
lbl_801D3EEC = .sbss:0x801D3EEC; // type:object size:0x4 data:4byte
lbl_801D3EF0 = .sbss:0x801D3EF0; // type:object size:0x4 data:4byte
lbl_801D3EF4 = .sbss:0x801D3EF4; // type:object size:0x4 data:4byte
boardTurnFunc = .sbss:0x801D3EF4; // type:object size:0x4 data:4byte
lbl_801D3EF8 = .sbss:0x801D3EF8; // type:object size:0x4 data:4byte
lbl_801D3EFC = .sbss:0x801D3EFC; // type:object size:0x4 data:4byte
lbl_801D3F00 = .sbss:0x801D3F00; // type:object size:0x4 data:4byte
lbl_801D3F04 = .sbss:0x801D3F04; // type:object size:0x4 data:4byte
lbl_801D3F08 = .sbss:0x801D3F08; // type:object size:0x4 data:4byte
boardPlayerEffect = .sbss:0x801D3F04; // type:object size:0x4 data:4byte
boardFilterObj = .sbss:0x801D3F08; // type:object size:0x4 data:4byte
lbl_801D3F0C = .sbss:0x801D3F0C; // type:object size:0x4 data:4byte
lbl_801D3F10 = .sbss:0x801D3F10; // type:object size:0x4 data:4byte
boardTurnRemainObj = .sbss:0x801D3F10; // type:object size:0x4 data:4byte
boardRandSeed = .sbss:0x801D3F14; // type:object size:0x4 data:4byte
lbl_801D3F18 = .sbss:0x801D3F18; // type:object size:0x8 data:4byte
boardMainObj = .sbss:0x801D3F18; // type:object size:0x8 data:4byte
lbl_801D3F20 = .sbss:0x801D3F20; // type:object size:0x4 data:4byte
lbl_801D3F24 = .sbss:0x801D3F24; // type:object size:0x4 data:4byte
lbl_801D3F28 = .sbss:0x801D3F28; // type:object size:0x4 data:4byte
@ -6273,21 +6279,21 @@ lbl_801D3F4E = .sbss:0x801D3F4E; // type:object size:0xA
lbl_801D3F58 = .sbss:0x801D3F58; // type:object size:0x4 data:4byte
lbl_801D3F5C = .sbss:0x801D3F5C; // type:object size:0x4 data:4byte
lbl_801D3F60 = .sbss:0x801D3F60; // type:object size:0x8 data:2byte
lbl_801D3F68 = .sbss:0x801D3F68; // type:object size:0x4 data:4byte
lbl_801D3F6C = .sbss:0x801D3F6C; // type:object size:0x4 data:4byte
winProc = .sbss:0x801D3F68; // type:object size:0x4 scope:local data:4byte
comKeyFunc = .sbss:0x801D3F6C; // type:object size:0x4 scope:local data:4byte
lbl_801D3F70 = .sbss:0x801D3F70; // type:object size:0x8 data:float
lbl_801D3F78 = .sbss:0x801D3F78; // type:object size:0x4 data:4byte
lbl_801D3F7C = .sbss:0x801D3F7C; // type:object size:0x4 data:4byte
lbl_801D3F80 = .sbss:0x801D3F80; // type:object size:0x2 data:2byte
lbl_801D3F82 = .sbss:0x801D3F82; // type:object size:0x2 data:2byte
lbl_801D3F84 = .sbss:0x801D3F84; // type:object size:0x2 data:2byte
lbl_801D3F86 = .sbss:0x801D3F86; // type:object size:0x1 data:byte
lbl_801D3F87 = .sbss:0x801D3F87; // type:object size:0x1 data:byte
lbl_801D3F88 = .sbss:0x801D3F88; // type:object size:0x1 data:byte
lbl_801D3F89 = .sbss:0x801D3F89; // type:object size:0x1 data:byte
lbl_801D3F8A = .sbss:0x801D3F8A; // type:object size:0x1 data:byte
lbl_801D3F8B = .sbss:0x801D3F8B; // type:object size:0x1 data:byte
lbl_801D3F8C = .sbss:0x801D3F8C; // type:object size:0x1 data:byte
winAttr = .sbss:0x801D3F78; // type:object size:0x4 scope:local data:4byte
winMess = .sbss:0x801D3F7C; // type:object size:0x4 scope:local data:4byte
defaultChoice = .sbss:0x801D3F80; // type:object size:0x2 scope:local data:2byte
messSpeed = .sbss:0x801D3F82; // type:object size:0x2 scope:local data:2byte
winPrio = .sbss:0x801D3F84; // type:object size:0x2 scope:local data:2byte
winWait = .sbss:0x801D3F86; // type:object size:0x1 scope:local data:byte
winPause = .sbss:0x801D3F87; // type:object size:0x1 scope:local data:byte
disablePlayer = .sbss:0x801D3F88; // type:object size:0x1 scope:local data:byte
winPosIdx = .sbss:0x801D3F89; // type:object size:0x1 scope:local data:byte
winFrame = .sbss:0x801D3F8A; // type:object size:0x1 scope:local data:byte
autoPickF = .sbss:0x801D3F8B; // type:object size:0x1 scope:local data:byte
winChoice = .sbss:0x801D3F8C; // type:object size:0x1 scope:local data:byte
lbl_801D3F90 = .sbss:0x801D3F90; // type:object size:0x8
lbl_801D3F98 = .sbss:0x801D3F98; // type:object size:0x4 data:4byte
lbl_801D3F9C = .sbss:0x801D3F9C; // type:object size:0x1 data:byte
@ -6694,32 +6700,32 @@ TokenCB = .sbss:0x801D45E8; // type:object size:0x4 scope:local data:4byte
DrawDoneCB = .sbss:0x801D45EC; // type:object size:0x4 scope:local data:4byte
DrawDone = .sbss:0x801D45F0; // type:object size:0x1 scope:local data:byte
FinishQueue = .sbss:0x801D45F4; // type:object size:0x8 scope:local
lbl_801D4600 = .sbss:0x801D4600; // type:object size:0x8 data:4byte
lbl_801D4608 = .sbss:0x801D4608; // type:object size:0x4 data:4byte
lbl_801D460C = .sbss:0x801D460C; // type:object size:0x4 data:4byte
lbl_801D4610 = .sbss:0x801D4610; // type:object size:0x4 data:4byte
lbl_801D4614 = .sbss:0x801D4614; // type:object size:0x4 data:4byte
lbl_801D4618 = .sbss:0x801D4618; // type:object size:0x4
OldCPUFifo = .sbss:0x801D4600; // type:object size:0x4 scope:local data:4byte
Chan = .sbss:0x801D4608; // type:object size:0x4 scope:local data:4byte
Dev = .sbss:0x801D460C; // type:object size:0x4 scope:local data:4byte
Enabled = .sbss:0x801D4610; // type:object size:0x4 scope:local data:4byte
BarnacleEnabled = .sbss:0x801D4614; // type:object size:0x4 scope:local data:4byte
cmdTypeAndStatus$78 = .sbss:0x801D4618; // type:object size:0x4 scope:local
cmdTypeAndStatus$371 = .sbss:0x801D461C; // type:object size:0x4 scope:local
lbl_801D4620 = .sbss:0x801D4620; // type:object size:0x8 data:4byte
__PADFixBits = .sbss:0x801D4620; // type:object size:0x8 data:4byte
SamplingRate = .sbss:0x801D4628; // type:object size:0x4 scope:local data:4byte
lbl_801D4640 = .sbss:0x801D4640; // type:object size:0x20 data:4byte
lbl_801D4660 = .sbss:0x801D4660; // type:object size:0x20 data:4byte
lbl_801D4680 = .sbss:0x801D4680; // type:object size:0x20 data:4byte
lbl_801D46A0 = .sbss:0x801D46A0; // type:object size:0x20 data:4byte
lbl_801D46C0 = .sbss:0x801D46C0; // type:object size:0x20 data:4byte
lbl_801D46E0 = .sbss:0x801D46E0; // type:object size:0x4 data:4byte
lbl_801D46E4 = .sbss:0x801D46E4; // type:object size:0x4 data:4byte
lbl_801D46E8 = .sbss:0x801D46E8; // type:object size:0x4 data:4byte
lbl_801D46EC = .sbss:0x801D46EC; // type:object size:0x14 data:4byte
lbl_801D4700 = .sbss:0x801D4700; // type:object size:0x20 data:4byte
lbl_801D4720 = .sbss:0x801D4720; // type:object size:0x20 data:4byte
lbl_801D4740 = .sbss:0x801D4740; // type:object size:0x4 data:4byte
lbl_801D4744 = .sbss:0x801D4744; // type:object size:0x4 data:4byte
lbl_801D4748 = .sbss:0x801D4748; // type:object size:0x4 data:4byte
lbl_801D474C = .sbss:0x801D474C; // type:object size:0x4 data:4byte
lbl_801D4750 = .sbss:0x801D4750; // type:object size:0x4 data:4byte
lbl_801D4754 = .sbss:0x801D4754; // type:object size:0x4 data:4byte
Ydchuff = .sbss:0x801D4640; // type:object size:0x4 scope:local align:32 data:4byte
Udchuff = .sbss:0x801D4660; // type:object size:0x4 scope:local align:32 data:4byte
Vdchuff = .sbss:0x801D4680; // type:object size:0x4 scope:local align:32 data:4byte
Yachuff = .sbss:0x801D46A0; // type:object size:0x4 scope:local align:32 data:4byte
Uachuff = .sbss:0x801D46C0; // type:object size:0x4 scope:local align:32 data:4byte
Vachuff = .sbss:0x801D46E0; // type:object size:0x4 scope:local align:32 data:4byte
__THPHuffmanBits = .sbss:0x801D46E4; // type:object size:0x4 scope:local data:4byte
__THPHuffmanSizeTab = .sbss:0x801D46E8; // type:object size:0x4 scope:local data:4byte
__THPHuffmanCodeTab = .sbss:0x801D46EC; // type:object size:0x4 scope:local data:4byte
Gbase = .sbss:0x801D4700; // type:object size:0x20 align:32 data:4byte
Gwid = .sbss:0x801D4720; // type:object size:0x20 align:32 data:4byte
Gq = .sbss:0x801D4740; // type:object size:0x4 scope:local align:32 data:4byte
__THPOldGQR5 = .sbss:0x801D4744; // type:object size:0x4 scope:local data:4byte
__THPOldGQR6 = .sbss:0x801D4748; // type:object size:0x4 scope:local data:4byte
__THPWorkArea = .sbss:0x801D474C; // type:object size:0x4 scope:local data:4byte
__THPInfo = .sbss:0x801D4750; // type:object size:0x4 scope:local data:4byte
__THPInitFlag = .sbss:0x801D4754; // type:object size:0x4 scope:local data:4byte
__global_destructor_chain = .sbss:0x801D4758; // type:object size:0x4 scope:global data:4byte
__aborting = .sbss:0x801D4760; // type:object size:0x4 scope:global data:4byte
__atexit_curr_func = .sbss:0x801D4764; // type:object size:0x4 scope:local data:4byte

View file

@ -268,21 +268,22 @@ config.libs = [
Object(Matching, "game/wipe.c"),
Object(Matching, "game/window.c"),
Object(Matching, "game/messdata.c"),
Object(NonMatching, "game/card.c"),
Object(Matching, "game/card.c"),
Object(Matching, "game/armem.c"),
Object(NonMatching, "game/code_800498F0.c"),
Object(NonMatching, "game/chrman.c"),
Object(NonMatching, "game/mapspace.c"),
Object(NonMatching, "game/THPSimple.c"),
Object(NonMatching, "game/THPDraw.c"),
Object(NonMatching, "game/thpmain.c"),
Object(NonMatching, "game/objsub.c"),
Object(NonMatching, "game/flag.c"),
Object(NonMatching, "game/saveload.c"),
Object(Matching, "game/flag.c"),
Object(Matching, "game/saveload.c"),
Object(NonMatching, "game/sreset.c"),
Object(NonMatching, "game/board/main.c"),
Object(NonMatching, "game/board/board.c"),
Object(NonMatching, "game/board/model.c"),
Object(NonMatching, "game/board/window.c"),
Object(NonMatching, "game/board/board_snd.c"),
Object(NonMatching, "game/board/com.c"),
Object(NonMatching, "game/board/overhead.c"),
Object(NonMatching, "game/board/space.c"),
@ -308,6 +309,7 @@ config.libs = [
Object(NonMatching, "game/board/pause.c"),
Object(NonMatching, "game/board/com_path.c"),
Object(NonMatching, "game/board/tutorial.c"),
Object(NonMatching, "game/kerent.c"),
],
},
DolphinLib(
@ -436,6 +438,47 @@ config.libs = [
Object(NonMatching, "dolphin/gx/GXPerf.c"),
],
),
DolphinLib(
"card",
[
Object(NonMatching, "dolphin/card/CARDBios.c"),
Object(NonMatching, "dolphin/card/CARDUnlock.c"),
Object(NonMatching, "dolphin/card/CARDRdwr.c"),
Object(NonMatching, "dolphin/card/CARDBlock.c"),
Object(NonMatching, "dolphin/card/CARDDir.c"),
Object(NonMatching, "dolphin/card/CARDCheck.c"),
Object(NonMatching, "dolphin/card/CARDMount.c"),
Object(NonMatching, "dolphin/card/CARDFormat.c"),
Object(NonMatching, "dolphin/card/CARDOpen.c"),
Object(NonMatching, "dolphin/card/CARDCreate.c"),
Object(NonMatching, "dolphin/card/CARDRead.c"),
Object(NonMatching, "dolphin/card/CARDWrite.c"),
Object(NonMatching, "dolphin/card/CARDDelete.c"),
Object(NonMatching, "dolphin/card/CARDStat.c"),
Object(NonMatching, "dolphin/card/CARDNet.c"),
],
),
DolphinLib(
"exi",
[
Object(NonMatching, "dolphin/exi/EXIBios.c"),
Object(NonMatching, "dolphin/exi/EXIUart.c"),
],
),
DolphinLib(
"si",
[
Object(NonMatching, "dolphin/si/SIBios.c"),
Object(NonMatching, "dolphin/si/SISamplingRate.c"),
],
),
DolphinLib(
"thp",
[
Object(NonMatching, "dolphin/thp/THPDec.c"),
Object(NonMatching, "dolphin/thp/THPAudio.c"),
],
),
{
"lib": "Runtime.PPCEABI.H",
"mw_version": config.linker_version,

View file

@ -14,8 +14,8 @@ typedef struct player_config {
typedef struct system_state {
/* 0x00 */ struct {
u16 story : 1;
u16 team : 1;
u8 story : 1;
u8 team : 1;
u8 : 7;
};
/* 0x02 */ struct {
@ -46,8 +46,9 @@ typedef struct system_state {
/* 0x32 */ char unk_32[0x2];
/* 0x34 */ u16 mg_next;
/* 0x36 */ s16 mg_next_extra;
/* 0x38 */ u8 flag[3][16];
/* 0x68 */ u8 unk_68[0x74];
/* 0x38 */ s16 unk_38;
/* 0x3A */ u8 flag[3][16];
/* 0x6A */ u8 unk_6A[0x72];
} SystemState; //8018fcf8, sizeof 0xDC
typedef struct player_state {

View file

@ -43,21 +43,19 @@ void MGSeqKillAll(void);
void MGSeqPracticeStart(void);
void fn_8004D6F4(s16 arg);
s32 _CheckFlag(u32 flag);
void BoardWinCreate(s16, s32, s32);
void BoardWinKill(void);
void BoardWinWait(void);
s32 rand8(void);
void fn_8005D8E8(void);
void fn_8005DB6C(s16, Vec*, s32, f32, f32, s32);
void BoardCameraTargetSetModel(s16 model);
void BoardCameraStartMotion2(s16, Vec*, s32, f32, f32, s32);
void fn_8005E0C0(void);
void fn_80074210(s32, s32, Vec*);
void fn_8007A360(s32);
void fn_8007F894(void);
void fn_80083F84(void);
s16 fn_80083F84(void);
void fn_800884F4(s32);
void fn_800A4C88(void);
void fn_800A6B10(void);
@ -71,7 +69,7 @@ f32 fn_8006F128(s32);
void fn_8006F61C(s16, s32);
void fn_800B42BC(s16);
s32 fn_8006DBD4(s16);
void fn_8005B150(void*, void*);
void BoardInit(void*, void*);
void fn_8006F2E8(s32, Vec*);
void fn_8005D10C(void*, void*);
s16 fn_8006D9A4(s32, void*, s32);
@ -95,7 +93,7 @@ void fn_80083EDC(s16);
void fn_800A4F6C(s16);
void fn_800B3FD8(void*);
void fn_800B4274(s32, s32);
void fn_8005D5C0(Vec*);
void BoardCameraRotGet(Vec*);
void fn_8006F338(s16, f32, f32, f32);
s32 fn_8005B6A8(void);
void fn_8006EFBC(s16, Mtx);

23
include/game/card.h Normal file
View file

@ -0,0 +1,23 @@
#ifndef _GAME_CARD_H
#define _GAME_CARD_H
#include "dolphin.h"
extern u8 UnMountCnt;
void HuCardInit(void);
s32 HuCardCheck(void);
s32 HuCardSlotCheck(s16 slot);
s32 HuCardMount(s16 slot);
void HuCardUnMount(s16 slot);
s32 HuCardFormat(s16 slot);
s32 HuCardOpen(s16 slot, const char *fileName, CARDFileInfo *fileInfo);
s32 HuCardRead(CARDFileInfo *fileInfo, void *addr, s32 length, s32 offset);
s32 HuCardCreate(s16 slot, const char *fileName, s32 size, CARDFileInfo *fileInfo);
s32 HuCardClose(CARDFileInfo *fileInfo);
s32 HuCardWrite(CARDFileInfo *fileInfo, const void *addr, s32 length, s32 offset);
s32 HuCardDelete(s16 slot, const char *fileName);
s32 HuCardSectorSizeGet(s16 slot);
s32 HuCardFreeSpaceGet(s16 slot, u32 *byteNotUsed, u32 *filesNotUsed);
#endif

11
include/game/flag.h Normal file
View file

@ -0,0 +1,11 @@
#ifndef _GAME_FLAG_H
#define _GAME_FLAG_H
#define FLAG_ID_MAKE(group, index) (((group) << 16)|(index))
s32 _CheckFlag(u32 flag);
void _SetFlag(u32 flag);
void _ClearFlag(u32 flag);
void _InitFlag(void);
#endif

View file

@ -206,7 +206,7 @@ void Hu3DCameraPerspectiveSet(s32, f32, f32, f32, f32);
void Hu3DCameraViewportSet(s32, f32, f32, f32, f32, f32, f32);
void Hu3DCameraScissorSet(s32, s32, s32, s32, s32);
void Hu3DCameraPosSet(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32);
void Hu3DCameraPosSetV(s32, Vec, Vec, Vec);
void Hu3DCameraPosSetV(s32 cam, Vec *pos, Vec *up, Vec *target);
void Hu3DCameraKill(s32);
void Hu3DCameraAllKill(void);
void Hu3DCameraSet(s32, Mtx);

35
include/game/saveload.h Normal file
View file

@ -0,0 +1,35 @@
#ifndef _GAME_SAVELOAD_H
#define _GAME_SAVELOAD_H
#include "common.h"
s32 SLFileOpen(char *arg0);
s32 SLFileCreate(char *arg0, u32 arg1, void *arg2);
s32 SLFileWrite(s32 arg0, void *arg1);
s32 SLFileRead(s32 arg0, void *arg1);
s32 SLFileClose(void);
void SLCurSlotNoSet(s16 arg0);
void SLCurBoxNoSet(s8 arg0);
void SLSaveFlagSet(s32 arg0);
s32 SLSaveFlagGet(void);
void SLSaveDataMake(s32 arg0, OSTime *arg1);
void SLSaveDataInfoSet(OSTime *arg0);
void SLCommonSet(void);
void SLSaveBoard(void);
void SLSaveBoardBackup(void);
s32 SLSave(void);
s32 SLLoad(void);
void SLLoadGameStat(void);
void SLLoadBoard(void);
void SLLoadBoardBackup(void);
void SLSerialNoGet(void);
BOOL SLSerialNoCheck(void);
BOOL SLCheckSumCheck(void);
u16 SLCheckSumGet(void);
void SLCheckSumSet(void);
s32 SLStatSet(s32 arg0);
s32 SLCardMount(s16 arg0);
s32 SLFormat(s16 arg0);
s16 SLMessOut(s16 arg0);
#endif

View file

@ -75,6 +75,8 @@ typedef struct {
/* 0x160 */ u8 ATTRIBUTE_ALIGN(32) mess_pal[10][3];
} WindowData; // Size 0x180
extern WindowData winData[32];
void HuWindowInit(void);
void HuWinInit(s32 mess_data_no);
s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame);

View file

@ -53,7 +53,7 @@ void fn_1_C20(void) {
}
Hu3D2Dto3D(&lbl_1_data_80[lbl_1_bss_1C], 1, &sp14);
fn_8006F158(lbl_1_bss_1E, &sp14);
fn_8005D5C0(&sp8);
BoardCameraRotGet(&sp8);
PSMTXRotRad(sp20, 'y', 0.2617994f);
fn_8006EFBC(lbl_1_bss_1E, sp20);
fn_8006F270(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f);

View file

@ -185,33 +185,32 @@ void fn_1_13A4(void) {
temp_r3_2 = fn_800745F0(0, 0x80000);
fn_80074210(0, temp_r3_2, &sp14);
fn_8006F158(lbl_1_bss_0->unk8, &sp14);
fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
BoardCameraStartMotion2(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
fn_8005E0C0();
fn_1_BA0(0x2E002C);
fn_8007A360(temp_r3_2);
fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
BoardCameraStartMotion2(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
fn_8005E0C0();
temp_r3_2 = fn_800745F0(0, 0x10000000);
fn_80074210(0, temp_r3_2, &sp14);
fn_8006F158(lbl_1_bss_0->unk8, &sp14);
fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
BoardCameraStartMotion2(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
fn_8005E0C0();
fn_1_BA0(0x2E002E);
fn_8007F894();
fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
BoardCameraStartMotion2(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
fn_8005E0C0();
temp_r3_2 = fn_800745F0(0, 0x08000000);
fn_80074210(0, temp_r3_2, &sp14);
fn_8006F158(lbl_1_bss_0->unk8, &sp14);
fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
BoardCameraStartMotion2(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
fn_8005E0C0();
fn_1_BA0(0x2E0030);
fn_800A6B10();
fn_8005DB6C(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
BoardCameraStartMotion2(lbl_1_bss_0->unk8, &sp8, 0, 3200.0f, -1.0f, 0x1E);
fn_8005E0C0();
fn_1_BA0(0x2E0032);
fn_80083F84();
fn_8005D8E8();
BoardCameraTargetSetModel(fn_80083F84());
fn_8005E0C0();
fn_1_BA0(0x2E0033);
fn_1_BA0(0x2E0034);
@ -229,7 +228,7 @@ void fn_1_13A4(void) {
if (lbl_1_bss_C == 0) {
lbl_1_bss_C = 1;
fn_80070EE8(0, 0x1F3);
fn_8005B5FC();
BoardKill();
}
fn_800B3FD8(NULL);
while (1) {

View file

@ -153,7 +153,7 @@ void fn_1_1984(void) {
lbl_1_bss_C = 1;
OSReport(lbl_1_data_98);
fn_80070EE8(0, 0x1F3);
fn_8005B5FC();
BoardKill();
fn_800B3FD8(NULL);
}
}
@ -182,7 +182,7 @@ int fn_1_1AAC(s16 arg0, s32 arg1) {
lbl_1_bss_C = 1;
OSReport(lbl_1_data_98);
fn_80070EE8(0, 0x1F3);
fn_8005B5FC();
BoardKill();
fn_800B3FD8(NULL);
}
}

View file

@ -1,7 +1,7 @@
#include "include/REL/w10Dll.h"
void fn_1_0(void) {
fn_8005B150(&fn_1_E0, &fn_1_6D8);
BoardInit(&fn_1_E0, &fn_1_6D8);
}
int _prolog(void) {
@ -10,7 +10,7 @@ int _prolog(void) {
(**ctors)();
ctors++;
}
fn_8005B150(&fn_1_E0, &fn_1_6D8);
fn_1_0();
return 0;
}

181
src/game/card.c Normal file
View file

@ -0,0 +1,181 @@
#include "dolphin.h"
#include "game/memory.h"
#include "game/card.h"
static void *cardWork;
u8 UnMountCnt;
static void MountCallBack(s32 chan, s32 result);
void HuCardInit(void)
{
CARDInit();
cardWork = HuMemDirectMalloc(HEAP_SYSTEM, CARD_WORKAREA_SIZE);
}
s32 HuCardCheck(void)
{
s32 ret = 0;
s32 memSize, sectorSize;
s32 result;
do {
result = CARDProbeEx(0, &memSize, &sectorSize);
} while(result == CARD_RESULT_BUSY);
if(result == CARD_RESULT_READY) {
ret |= 1;
OSReport("SlotA Card MemSize %x,Sector Size %x\n", memSize, sectorSize);
HuCardMount(0);
}
do {
result = CARDProbeEx(1, &memSize, &sectorSize);
} while(result == CARD_RESULT_BUSY);
if(result == CARD_RESULT_READY) {
ret |= 2;
OSReport("SlotB Card MemSize %x,Sector Size %x\n", memSize, sectorSize);
HuCardMount(1);
}
return ret;
}
s32 HuCardSlotCheck(s16 slot)
{
s32 memSize, sectorSize;
s32 result;
do {
result = CARDProbeEx(slot, &memSize, &sectorSize);
} while(result == CARD_RESULT_BUSY);
if(result < 0) {
return result;
} else {
return sectorSize;
}
}
s32 HuCardMount(s16 slot)
{
s32 memSize, sectorSize;
s32 result;
do {
result = CARDProbeEx(slot, &memSize, &sectorSize);
} while(result == CARD_RESULT_BUSY);
if(result < 0) {
return result;
} else {
result = CARDMount(slot, cardWork, MountCallBack);
if(result == CARD_RESULT_FATAL_ERROR || result == CARD_RESULT_IOERROR) {
return CARD_RESULT_FATAL_ERROR;
}
if(result == CARD_RESULT_ENCODING) {
return CARD_RESULT_BROKEN;
}
if(result < 0 && result != CARD_RESULT_BROKEN) {
return result;
}
result = CARDCheck(slot);
if(result == CARD_RESULT_FATAL_ERROR || result == CARD_RESULT_IOERROR) {
return CARD_RESULT_FATAL_ERROR;
}
if(result == CARD_RESULT_ENCODING) {
return CARD_RESULT_BROKEN;
}
return result;
}
}
void HuCardUnMount(s16 slot)
{
CARDUnmount(slot);
}
s32 HuCardFormat(s16 slot)
{
s32 result = CARDFormat(slot);
if(result == CARD_RESULT_FATAL_ERROR || result == CARD_RESULT_IOERROR) {
return CARD_RESULT_FATAL_ERROR;
}
return result;
}
static void MountCallBack(s32 chan, s32 result)
{
UnMountCnt = (1 << chan);
}
s32 HuCardOpen(s16 slot, const char *fileName, CARDFileInfo *fileInfo)
{
s32 result = CARDOpen(slot, fileName, fileInfo);
if(result == CARD_RESULT_FATAL_ERROR || result == CARD_RESULT_IOERROR) {
return CARD_RESULT_FATAL_ERROR;
}
if(result == CARD_RESULT_ENCODING) {
return CARD_RESULT_BROKEN;
}
return result;
}
s32 HuCardRead(CARDFileInfo *fileInfo, void *addr, s32 length, s32 offset)
{
s32 result = CARDRead(fileInfo, addr, length, offset);
if(result == CARD_RESULT_FATAL_ERROR || result == CARD_RESULT_IOERROR) {
return CARD_RESULT_FATAL_ERROR;
}
return result;
}
s32 HuCardCreate(s16 slot, const char *fileName, s32 size, CARDFileInfo *fileInfo)
{
s32 sectorSize;
s32 byteNotUsed, filesNotUsed;
s32 result;
result = CARDGetSectorSize(slot, (u32 *)&sectorSize);
if(result == CARD_RESULT_FATAL_ERROR || result == CARD_RESULT_NOCARD) {
return result;
}
if(size % sectorSize) {
size = sectorSize*(size+((sectorSize-1)/sectorSize));
}
result = CARDFreeBlocks(slot, &byteNotUsed, &filesNotUsed);
if(result != 0) {
return result;
}
if(filesNotUsed <= 0 || byteNotUsed < size) {
return CARD_RESULT_INSSPACE;
}
result = CARDCreate(slot, fileName, size, fileInfo);
return result;
}
s32 HuCardClose(CARDFileInfo *fileInfo)
{
s32 result = CARDClose(fileInfo);
return result;
}
s32 HuCardWrite(CARDFileInfo *fileInfo, const void *addr, s32 length, s32 offset)
{
s32 result = CARDWrite(fileInfo, addr, length, offset);
return result;
}
s32 HuCardDelete(s16 slot, const char *fileName)
{
s32 result = CARDDelete(slot, fileName);
return result;
}
s32 HuCardSectorSizeGet(s16 slot)
{
u32 sectorSize;
s32 result = CARDGetSectorSize(slot, &sectorSize);
if(result < 0) {
return result;
} else {
return sectorSize;
}
}
s32 HuCardFreeSpaceGet(s16 slot, u32 *byteNotUsed, u32 *filesNotUsed)
{
s32 result = CARDFreeBlocks(slot, (s32 *)byteNotUsed, (s32 *)filesNotUsed);
return result;
}

41
src/game/flag.c Normal file
View file

@ -0,0 +1,41 @@
#include "common.h"
static u8 _Sys_Flag[16];
static u8 *GetFlagPtr(u32 flag)
{
u8 *ret;
u32 group = flag >> 16;
if((flag & 0xFFFF0000) == 0x30000) {
ret = _Sys_Flag;
} else {
ret = &GWSystem.flag[group][0];
}
return ret;
}
u32 _CheckFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;
return flag_ptr[index/8] & (1 << (index % 8));
}
void _SetFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;
flag_ptr[index/8] |= (1 << (index % 8));
}
void _ClearFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;
flag_ptr[index/8] &= ~(1 << (index % 8));
}
void _InitFlag(void)
{
memset(_Sys_Flag, 0, sizeof(_Sys_Flag));
}

View file

@ -1,6 +1,7 @@
#include "common.h"
#include "string.h"
#include "game/gamework.h"
#include "game/flag.h"
GameStat GWGameStatDefault;
GameStat GWGameStat;
@ -144,7 +145,7 @@ s16 GWGetMessSpeed(void)
void GWSetMGRecord(int index, s32 value)
{
if(!_CheckFlag(0x1000C)) {
if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
GWGameStat.mg_record[index] = value;
}
}
@ -297,7 +298,7 @@ s16 GWGetCoins(int player)
void GWSetCoins(int player, s16 value)
{
if(!_CheckFlag(0x1000C)) {
if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) {
if(value < 0) {
value = 0;
}

View file

@ -1165,7 +1165,7 @@ void Hu3DCameraPosSet(s32 cam, f32 x, f32 y, f32 z, f32 ux, f32 uy, f32 uz, f32
}
}
void Hu3DCameraPosSetV(s32 cam, Vec pos, Vec up, Vec target) {
void Hu3DCameraPosSetV(s32 cam, Vec *pos, Vec *up, Vec *target) {
s16 mask;
s16 i;
CameraData* cam_ptr;
@ -1173,9 +1173,9 @@ void Hu3DCameraPosSetV(s32 cam, Vec pos, Vec up, Vec target) {
for (i = 0, mask = 1; i < 0x10; i++, mask <<= 1) {
if ((cam & mask) != 0) {
cam_ptr = &Hu3DCamera[i];
cam_ptr->pos = pos;
cam_ptr->up = up;
cam_ptr->target = target;
cam_ptr->pos = *pos;
cam_ptr->up = *up;
cam_ptr->target = *target;
}
}
}

View file

@ -2,6 +2,7 @@
#include "game/printfunc.h"
#include "game/object.h"
#include "game/pad.h"
#include "game/flag.h"
#define OM_OVL_HIS_MAX 16
#define OM_MAX_GROUPS 10
@ -80,7 +81,7 @@ static void omWatchOverlayProc(void)
omovlevtno = omnextovlevtno;
omovlstat = omnextovlstat;
omnextovl = OVL_INVALID;
if(_CheckFlag(0x1000C)) {
if(_CheckFlag(FLAG_ID_MAKE(1, 12))) {
MGSeqPracticeStart();
}
omSysPauseEnable(TRUE);

795
src/game/saveload.c Normal file
View file

@ -0,0 +1,795 @@
#include "game/saveload.h"
#include "game/data.h"
#include "game/pad.h"
#include "game/window.h"
#include "game/flag.h"
#include "game/card.h"
#include "string.h"
static s16 SLCreateSaveWin(void);
static void SLKillSaveWin(void);
extern u8 UnMountCnt;
CARDFileInfo curFileInfo;
u8 ATTRIBUTE_ALIGN(32) saveBuf[0x4000];
u64 SLSerialNo;
s32 saveExecF;
u8 curBoxNo;
s16 curSlotNo;
u8 lbl_80132150[64] = {
"Mario Party 4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"File 0 00/00/0000"
};
char *SaveFileNameTbl[] = {
"MARIPA4BOX0",
"MARIPA4BOX1",
"MARIPA4BOX2"
};
s32 SaveEnableF = 1;
static char *SlotNameTbl[] = {
"A",
"B"
};
static s32 saveMessWin = -1;
s32 SLFileOpen(char *arg0) {
s32 temp_r3;
if (SaveEnableF == 0) {
return 0;
}
while (1) {
temp_r3 = SLCardMount(curSlotNo);
if (temp_r3 < 0) {
return temp_r3;
}
temp_r3 = HuCardOpen(curSlotNo, arg0, &curFileInfo);
if (temp_r3 == CARD_RESULT_NOFILE) {
return CARD_RESULT_NOFILE;
}
if (temp_r3 == CARD_RESULT_WRONGDEVICE) {
SLMessOut(7);
return CARD_RESULT_FATAL_ERROR;
}
if (temp_r3 == CARD_RESULT_FATAL_ERROR) {
SLMessOut(1);
return CARD_RESULT_FATAL_ERROR;
}
if (temp_r3 == CARD_RESULT_NOCARD) {
SLMessOut(0);
return CARD_RESULT_NOCARD;
}
if (temp_r3 == CARD_RESULT_BROKEN) {
temp_r3 = HuCardSectorSizeGet(curSlotNo);
if (temp_r3 > 0 && temp_r3 != 0x2000) {
SLMessOut(8);
return CARD_RESULT_WRONGDEVICE;
}
UnMountCnt = 0;
temp_r3 = SLMessOut(5);
if (temp_r3 == 0) {
temp_r3 = SLFormat(curSlotNo);
if (temp_r3 != 0) {
return temp_r3;
}
} else {
return CARD_RESULT_NOFILE;
}
} else {
return CARD_RESULT_READY;
}
}
}
s32 SLFileCreate(char *arg0, u32 arg1, void *arg2) {
float sp18[2];
u32 sp14;
u32 sp10;
s32 temp_r30;
s32 temp_r31;
if (SaveEnableF == 0) {
return 0;
}
temp_r31 = SLCardMount(curSlotNo);
if (temp_r31 < 0) {
return temp_r31;
}
temp_r31 = HuCardSectorSizeGet(curSlotNo);
if (temp_r31 < 0 && temp_r31 != 0x2000) {
SLMessOut(8);
return CARD_RESULT_FATAL_ERROR;
}
temp_r31 = HuCardFreeSpaceGet(curSlotNo, &sp14, &sp10);
if (sp10 == 0 && arg1 > sp14) {
SLMessOut(4);
return CARD_RESULT_INSSPACE;
}
if (sp10 == 0) {
SLMessOut(2);
return CARD_RESULT_INSSPACE;
}
if (arg1 > sp14) {
SLMessOut(3);
return CARD_RESULT_INSSPACE;
}
HuWinInit(1);
HuWinMesMaxSizeGet(1, sp18, 0x10000B);
temp_r30 = HuWinExCreateStyled(-10000.0f, 200.0f, sp18[0], sp18[1], -1, 2);
HuWinExAnimIn(temp_r30);
HuWinMesSet(temp_r30, 0x10000B);
HuWinMesWait(temp_r30);
_SetFlag(FLAG_ID_MAKE(3, 0));
temp_r31 = HuCardCreate(curSlotNo, arg0, arg1, &curFileInfo);
_ClearFlag(0x30000);
if (temp_r31 < 0) {
HuWinExAnimOut(temp_r30);
HuWinExCleanup(temp_r30);
}
if (temp_r31 == CARD_RESULT_NOCARD) {
SLMessOut(0);
return CARD_RESULT_NOCARD;
}
if (temp_r31 < 0) {
SLMessOut(1);
return CARD_RESULT_FATAL_ERROR;
}
_SetFlag(FLAG_ID_MAKE(3, 0));
temp_r31 = HuCardWrite(&curFileInfo, arg2, arg1, 0);
_ClearFlag(FLAG_ID_MAKE(3, 0));
if (temp_r31 < 0) {
HuWinExAnimOut(temp_r30);
HuWinExCleanup(temp_r30);
}
if (temp_r31 == CARD_RESULT_NOCARD) {
SLMessOut(0);
return CARD_RESULT_NOCARD;
}
if (temp_r31 < 0) {
SLMessOut(1);
return CARD_RESULT_FATAL_ERROR;
}
_SetFlag(FLAG_ID_MAKE(3, 0));
temp_r31 = SLStatSet(1);
_ClearFlag(FLAG_ID_MAKE(3, 0));
HuWinExAnimOut(temp_r30);
HuWinExCleanup(temp_r30);
if (temp_r31 < 0) {
return temp_r31;
}
return 0;
}
s32 SLFileWrite(s32 arg0, void *arg1) {
float sp10[2];
s32 temp_r31;
s32 var_r30;
if (SaveEnableF == 0) {
return 0;
}
HuWinInit(1);
HuWinMesMaxSizeGet(1, sp10, 0x10000B);
temp_r31 = HuWinExCreateStyled(-10000.0f, 200.0f, sp10[0], sp10[1], -1, 2);
HuWinExAnimIn(temp_r31);
HuWinMesSet(temp_r31, 0x10000B);
HuWinMesWait(temp_r31);
HuPrcSleep(0x3C);
_SetFlag(FLAG_ID_MAKE(3, 0));
var_r30 = HuCardWrite(&curFileInfo, arg1, arg0, 0);
if (var_r30 == 0) {
var_r30 = SLStatSet(1);
}
_ClearFlag(FLAG_ID_MAKE(3, 0));
HuWinExAnimOut(temp_r31);
HuWinExCleanup(temp_r31);
return var_r30;
}
s32 SLFileRead(s32 arg0, void *arg1) {
s32 temp_r3;
if (SaveEnableF == 0) {
return 0;
}
temp_r3 = HuCardRead(&curFileInfo, arg1, arg0, 0);
if (temp_r3 == CARD_RESULT_NOCARD) {
SLMessOut(0);
} else if (temp_r3 < 0) {
SLMessOut(1);
}
return temp_r3;
}
s32 SLFileClose(void) {
s32 temp_r31;
if (SaveEnableF == 0) {
return 0;
}
temp_r31 = HuCardClose(&curFileInfo);
return temp_r31;
}
void SLCurSlotNoSet(s16 arg0) {
curSlotNo = arg0;
}
void SLCurBoxNoSet(s8 arg0) {
curBoxNo = arg0;
}
void SLSaveFlagSet(s32 arg0) {
if (arg0 == 0) {
GWGameStat.party_continue = 0;
GWGameStat.story_continue = 0;
}
SaveEnableF = arg0;
}
s32 SLSaveFlagGet(void) {
return SaveEnableF;
}
void SLSaveDataMake(s32 arg0, OSTime *arg1) {
AnimData *temp_r3;
u8 *var_r30;
s32 i;
var_r30 = saveBuf;
if (arg0 != 0) {
for (i = 0; i < 0x4000; i++) {
var_r30[i] = 0xFF;
}
}
for (i = 0; i < 0x20; i++) {
var_r30[i] = lbl_80132150[i];
}
for (i = 0; i < 0x20; i++) {
(&var_r30[0x20])[i] = lbl_80132150[i + 0x20];
}
temp_r3 = HuSprAnimRead(HuDataSelHeapReadNum(0x86001F, MEMORY_DEFAULT_NUM, HEAP_DATA));
memcpy(var_r30 + 0x40, temp_r3->bmp->data, 0xC00);
memcpy(var_r30 + 0xC40, temp_r3->bmp->palData, 0x200);
temp_r3 = HuSprAnimRead(HuDataSelHeapReadNum(curBoxNo + 0x86001C, MEMORY_DEFAULT_NUM, HEAP_DATA));
memcpy(var_r30 + 0xE40, temp_r3->bmp->data, 0x1000);
memcpy(var_r30 + 0x1E40, temp_r3->bmp->palData, 0x200);
SLSaveDataInfoSet(arg1);
}
void SLSaveDataInfoSet(OSTime *arg0) {
s16 temp_r30;
s16 temp_r31;
OSCalendarTime sp8;
OSTicksToCalendarTime(*arg0, &sp8);
saveBuf[0x25] = curBoxNo + 0x31;
temp_r31 = (sp8.mon + 1) / 10;
saveBuf[0x28] = temp_r31 + 0x30;
temp_r31 = (sp8.mon + 1) % 10;
saveBuf[0x29] = temp_r31 + 0x30;
temp_r31 = sp8.mday / 10;
saveBuf[0x2B] = temp_r31 + 0x30;
temp_r31 = sp8.mday % 10;
saveBuf[0x2C] = temp_r31 + 0x30;
temp_r30 = sp8.year;
temp_r31 = temp_r30 / 1000;
saveBuf[0x2E] = temp_r31 + 0x30;
temp_r30 -= temp_r31 * 1000;
temp_r31 = temp_r30 / 100;
saveBuf[0x2F] = temp_r31 + 0x30;
temp_r30 -= temp_r31 * 100;
temp_r31 = temp_r30 / 10;
saveBuf[0x30] = temp_r31 + 0x30;
temp_r30 -= temp_r31 * 10;
saveBuf[0x31] = temp_r30 + 0x30;
}
void SLCommonSet(void) {
OSTime temp_r28;
temp_r28 = OSGetTime();
GWGameStat.create_time = temp_r28;
memcpy(saveBuf + 0x2040, &GWGameStat, 0x118);
SLSaveDataInfoSet(&temp_r28);
}
void SLSaveBoard(void) {
s16 i;
memcpy(saveBuf + 0x2158, &GWSystem, 0xDC);
for (i = 0; i < 4; i++) {
memcpy(&saveBuf[i * 0x30 + 0x2234], &GWPlayer[i], 0x30);
}
}
void SLSaveBoardBackup(void) {
s16 i;
memcpy(saveBuf + 0x22F4, &GWSystem, 0xDC);
for (i = 0; i < 4; i++) {
memcpy(&saveBuf[i * 0x30 + 0x23D0], &GWPlayer[i], 0x30);
}
}
s32 SLSave(void) {
s32 var_r31;
while (1) {
SLCheckSumSet();
var_r31 = SLFileOpen(SaveFileNameTbl[curBoxNo]);
if (var_r31 == CARD_RESULT_NOFILE) {
if (!SLSerialNoCheck()) {
SLMessOut(9);
} else {
SLCreateSaveWin();
var_r31 = SLFileCreate(SaveFileNameTbl[curBoxNo], 0x4000, saveBuf);
SLKillSaveWin();
if (var_r31 >= 0) {
SLSerialNoGet();
goto block_32;
}
}
} else {
if (var_r31 == CARD_RESULT_NOCARD) {
var_r31 = SLMessOut(0xA);
if (var_r31 != 0) {
SLMessOut(0xB);
continue;
}
SLSaveFlagSet(0);
break;
}
if (var_r31 >= 0) {
if (!SLSerialNoCheck()) {
SLMessOut(9);
} else {
SLCreateSaveWin();
var_r31 = SLFileWrite(0x4000, saveBuf);
SLKillSaveWin();
if (var_r31 == CARD_RESULT_NOCARD) {
SLMessOut(0);
} else if (var_r31 == CARD_RESULT_WRONGDEVICE) {
SLMessOut(7);
} else if (var_r31 == CARD_RESULT_BROKEN) {
var_r31 = HuCardSectorSizeGet(curSlotNo);
if (var_r31 > 0 && var_r31 != 0x2000) {
SLMessOut(8);
goto block_36;
}
UnMountCnt = 0;
var_r31 = SLMessOut(5);
if (var_r31 == 0) {
var_r31 = SLFormat(curSlotNo);
if (var_r31 != 0) {
return var_r31;
}
continue;
} else {
var_r31 = CARD_RESULT_BROKEN;
}
} else if (var_r31 < 0) {
SLMessOut(1);
}
block_32:
SLFileClose();
if (var_r31 >= 0) {
HuCardUnMount(curSlotNo);
return 1;
}
}
}
}
block_36:
var_r31 = SLMessOut(0xA);
if (var_r31 != 0) {
SLMessOut(0xB);
} else {
SLSaveFlagSet(0);
break;
}
}
HuCardUnMount(curSlotNo);
return 0;
}
static s16 SLCreateSaveWin(void) {
float sp8[2];
s16 temp_r3;
HuWinInit(1);
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
HuWinMesMaxSizeGet(1, sp8, 0x100044);
temp_r3 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2);
saveMessWin = temp_r3;
HuWinExAnimIn(temp_r3);
HuWinInsertMesSet(temp_r3, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
HuWinMesSet(temp_r3, 0x100044);
HuWinMesWait(temp_r3);
return temp_r3;
}
static void SLKillSaveWin(void) {
if (saveMessWin != -1) {
HuWinExAnimOut(saveMessWin);
HuWinExCleanup(saveMessWin);
saveMessWin = -1;
}
}
s32 SLLoad(void) {
s32 var_r31;
u16 *temp_r29;
u16 temp_r27;
var_r31 = SLFileOpen(SaveFileNameTbl[curBoxNo]);
if (var_r31 >= 0) {
var_r31 = SLFileRead(0x4000, saveBuf);
SLFileClose();
if (var_r31 >= 0) {
temp_r29 = (u16*) &saveBuf[0x2490];
temp_r27 = SLCheckSumGet();
*temp_r29 == temp_r27;
}
}
HuCardUnMount(curSlotNo);
return 0;
}
void SLLoadGameStat(void) {
memcpy(&GWGameStat, saveBuf + 0x2040, 0x118);
}
void SLLoadBoard(void) {
s16 i;
memcpy(&GWSystem, saveBuf + 0x2158, 0xDC);
for (i = 0; i < 4; i++) {
memcpy(&GWPlayer[i], &saveBuf[i * 0x30 + 0x2234], 0x30);
GWPlayerCfg[i].character = GWPlayer[i].character;
GWPlayerCfg[i].pad_idx = GWPlayer[i].port;
GWPlayerCfg[i].diff = GWPlayer[i].diff;
GWPlayerCfg[i].iscom = GWPlayer[i].com;
GWPlayerCfg[i].group = GWPlayer[i].team;
}
}
void SLLoadBoardBackup(void) {
s16 i;
memcpy(&GWSystem, saveBuf + 0x22F4, 0xDC);
for (i = 0; i < 4; i++) {
memcpy(&GWPlayer[i], &saveBuf[i * 0x30 + 0x23D0], 0x30);
GWPlayerCfg[i].character = GWPlayer[i].character;
GWPlayerCfg[i].pad_idx = GWPlayer[i].port;
GWPlayerCfg[i].diff = GWPlayer[i].diff;
GWPlayerCfg[i].iscom = GWPlayer[i].com;
GWPlayerCfg[i].group = 0;
}
}
void SLSerialNoGet(void) {
CARDGetSerialNo(curSlotNo, &SLSerialNo);
}
BOOL SLSerialNoCheck(void) {
s32 var_r31;
u64 sp8;
if (SLSerialNo == 0) {
return TRUE;
}
var_r31 = CARDGetSerialNo(curSlotNo, &sp8);
if (var_r31 < 0) {
return TRUE;
}
if (sp8 != SLSerialNo) {
return FALSE;
}
return TRUE;
}
BOOL SLCheckSumCheck(void) {
u16 *temp_r31 = (u16*) &saveBuf[0x2490];
u16 temp_r3 = SLCheckSumGet();
if (*temp_r31 == temp_r3) {
return TRUE;
}
return FALSE;
}
u16 SLCheckSumGet(void) {
u32 i;
u32 var_r30;
for (i = var_r30 = 0; i < 0x2490; i++) {
var_r30 += saveBuf[i];
}
var_r30 = ~var_r30;
return (u16) var_r30 & 0xFFFF;
}
void SLCheckSumSet(void) {
u16 temp_r31 = SLCheckSumGet();
saveBuf[0x2490] = (temp_r31 >> 8) & 0xFF;
saveBuf[0x2491] = temp_r31;
}
s32 SLStatSet(s32 arg0) {
CARDStat sp8;
s32 temp_r29;
s32 temp_r3;
temp_r29 = curFileInfo.fileNo;
temp_r3 = CARDGetStatus(curSlotNo, temp_r29, &sp8);
if (temp_r3 == -3) {
if (arg0 != 0) {
SLMessOut(0);
}
return -3;
}
if (temp_r3 < 0) {
if (arg0 != 0) {
SLMessOut(1);
}
return CARD_RESULT_FATAL_ERROR;
}
sp8.commentAddr = 0;
sp8.iconAddr = 0x40;
CARDSetBannerFormat(&sp8, CARD_STAT_BANNER_C8);
CARDSetIconFormat(&sp8, 0, CARD_STAT_ICON_C8);
CARDSetIconFormat(&sp8, 1, CARD_STAT_ICON_C8);
CARDSetIconFormat(&sp8, 2, CARD_STAT_ICON_C8);
CARDSetIconFormat(&sp8, 3, CARD_STAT_ICON_C8);
CARDSetIconSpeed(&sp8, 0, CARD_STAT_SPEED_MIDDLE);
CARDSetIconSpeed(&sp8, 1, CARD_STAT_SPEED_MIDDLE);
CARDSetIconSpeed(&sp8, 2, CARD_STAT_SPEED_MIDDLE);
CARDSetIconSpeed(&sp8, 3, CARD_STAT_SPEED_MIDDLE);
CARDSetIconSpeed(&sp8, 4, CARD_STAT_SPEED_END);
CARDSetIconAnim(&sp8, CARD_STAT_ANIM_LOOP);
temp_r3 = CARDSetStatus(curSlotNo, temp_r29, &sp8);
if (temp_r3 == CARD_RESULT_NOCARD) {
if (arg0 != 0) {
SLMessOut(0);
}
return CARD_RESULT_NOCARD;
}
if (temp_r3 < 0) {
if (arg0 != 0) {
SLMessOut(1);
}
return CARD_RESULT_FATAL_ERROR;
}
return temp_r3;
}
s32 SLCardMount(s16 arg0) {
s32 temp_r3;
while (1) {
temp_r3 = HuCardMount(curSlotNo);
if (temp_r3 == CARD_RESULT_WRONGDEVICE) {
SLMessOut(7);
return temp_r3;
}
if (temp_r3 == CARD_RESULT_FATAL_ERROR) {
SLMessOut(1);
return CARD_RESULT_FATAL_ERROR;
}
if (temp_r3 == CARD_RESULT_NOCARD) {
SLMessOut(0);
return CARD_RESULT_NOCARD;
}
if (temp_r3 == CARD_RESULT_BROKEN) {
temp_r3 = HuCardSectorSizeGet(curSlotNo);
if (temp_r3 > 0 && temp_r3 != 0x2000) {
SLMessOut(8);
return CARD_RESULT_WRONGDEVICE;
}
UnMountCnt = 0;
temp_r3 = SLMessOut(5);
if (temp_r3 == 0) {
temp_r3 = SLFormat(curSlotNo);
if (temp_r3 != 0) {
return temp_r3;
}
} else {
return CARD_RESULT_FATAL_ERROR;
}
} else {
break;
}
}
temp_r3 = HuCardSectorSizeGet(curSlotNo);
if (temp_r3 < 0) {
SLMessOut(1);
return temp_r3;
}
if (temp_r3 != 0x2000) {
SLMessOut(8);
return CARD_RESULT_WRONGDEVICE;
}
return 0;
}
s32 SLFormat(s16 arg0) {
float sp8[2];
s16 temp_r24;
s16 temp_r3;
s16 temp_r3_2;
OSTime temp_r19;
HuWinInit(1);
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(16, 56));
temp_r3 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2);
HuWinExAnimIn(temp_r3);
HuWinInsertMesSet(temp_r3, MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
HuWinMesSet(temp_r3, MAKE_MESSID(16, 56));
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(16, 11));
temp_r3_2 = HuWinExCreateStyled(-10000.0f, 200.0f, sp8[0], sp8[1], -1, 2);
HuWinExAnimIn(temp_r3_2);
HuWinMesSet(temp_r3_2, MAKE_MESSID(16, 11));
HuWinMesWait(temp_r3_2);
HuPrcSleep(0x1E);
if (UnMountCnt & (1 << curSlotNo)) {
HuWinExAnimOut(temp_r3);
HuWinExCleanup(temp_r3);
HuWinExAnimOut(temp_r3_2);
HuWinExCleanup(temp_r3_2);
SLMessOut(0xC);
return 0;
}
_SetFlag(FLAG_ID_MAKE(3, 0));
temp_r24 = HuCardFormat(curSlotNo);
_ClearFlag(FLAG_ID_MAKE(3, 0));
if (temp_r24 < 0) {
HuWinExAnimOut(temp_r3);
HuWinExCleanup(temp_r3);
HuWinExAnimOut(temp_r3_2);
HuWinExCleanup(temp_r3_2);
}
if (temp_r24 == CARD_RESULT_FATAL_ERROR) {
SLMessOut(6);
SLMessOut(1);
return CARD_RESULT_FATAL_ERROR;
}
if (temp_r24 == CARD_RESULT_NOCARD) {
SLMessOut(0);
return CARD_RESULT_NOCARD;
}
if (temp_r24 == CARD_RESULT_WRONGDEVICE) {
SLMessOut(7);
return temp_r24;
}
HuWinExAnimOut(temp_r3);
HuWinExCleanup(temp_r3);
HuWinExAnimOut(temp_r3_2);
HuWinExCleanup(temp_r3_2);
CARDGetSerialNo(curSlotNo, &SLSerialNo);
curBoxNo = 0;
temp_r19 = OSGetTime();
SLSaveDataMake(0, &temp_r19);
SLCheckSumSet();
return temp_r24;
}
s16 SLMessOut(s16 arg0) {
WindowData *var_r26;
float sp8[2];
u32 var_r29;
s32 var_r31;
s32 var_r27;
s16 temp_r3;
s16 var_r28;
var_r28 = -1;
var_r29 = 0;
var_r27 = 0;
HuWinInit(1);
SLKillSaveWin();
switch (arg0) {
case 0:
var_r31 = MAKE_MESSID(16, 2);
break;
case 1:
var_r31 = MAKE_MESSID(16, 83);
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
break;
case 2:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
var_r31 = MAKE_MESSID(16, 74);
break;
case 3:
var_r31 = MAKE_MESSID(16, 74);
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
break;
case 4:
var_r31 = MAKE_MESSID(16, 74);
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
break;
case 5:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
var_r31 = MAKE_MESSID(16, 4);
var_r27 = 1;
break;
case 6:
var_r31 = MAKE_MESSID(16, 54);
break;
case 7:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
var_r31 = MAKE_MESSID(16, 55);
break;
case 8:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
var_r31 = MAKE_MESSID(16, 57);
break;
case 9:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
var_r31 = MAKE_MESSID(16, 69);
break;
case 10:
var_r31 = MAKE_MESSID(16, 70);
var_r27 = 1;
break;
case 11:
HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0);
var_r29 = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]);
var_r31 = MAKE_MESSID(16, 72);
break;
case 12:
var_r31 = MAKE_MESSID(16, 80);
break;
}
if (var_r31 == MAKE_MESSID(16, 4)) {
HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(16, 78));
} else {
HuWinMesMaxSizeGet(1, sp8, var_r31);
}
temp_r3 = HuWinExCreateStyled(-10000.0f, 200.0f, sp8[0], sp8[1], -1, 2);
var_r26 = &winData[temp_r3];
var_r26->active_pad = 1;
if (var_r29 != 0) {
HuWinInsertMesSet(temp_r3, var_r29, 0);
}
HuWinAttrSet(temp_r3, 0x10);
HuWinExAnimIn(temp_r3);
HuWinMesSet(temp_r3, var_r31);
HuWinMesWait(temp_r3);
if (var_r27 != 0) {
var_r28 = HuWinChoiceGet(temp_r3, 1);
if (arg0 == 5 && var_r28 == 0) {
HuWinMesSet(temp_r3, MAKE_MESSID(16, 78));
HuWinMesWait(temp_r3);
var_r28 = HuWinChoiceGet(temp_r3, 1);
}
}
if (arg0 == 0xB) {
while (!(HuPadBtnDown[0] & 0x100)) {
HuPrcVSleep();
}
}
HuWinExAnimOut(temp_r3);
HuWinExCleanup(temp_r3);
return var_r28;
}

View file

@ -185,7 +185,7 @@ static s32 winVoiceTbl[] = {
0x49
};
s16 winPrio = 1000;
static s16 winPrio = 1000;
void HuWindowInit(void) {
s16 i;

View file

@ -1,6 +1,7 @@
#include "dolphin.h"
#include "game/wipe.h"
#include "game/memory.h"
#include "game/flag.h"
extern s8 lbl_801D429C;
@ -110,7 +111,7 @@ void WipeExecAlways(void)
void WipeCreate(s16 mode, s16 type, s16 duration)
{
WipeState *wipe;
if(_CheckFlag(0x1000B) && lbl_801D429C) {
if(_CheckFlag(FLAG_ID_MAKE(1, 11)) && lbl_801D429C) {
return;
}
wipe = &wipeData;