Merge remote-tracking branch 'upstream/main'

This commit is contained in:
M0liusX 2024-02-03 14:44:16 -06:00
commit 67e9549885
39 changed files with 6553 additions and 361 deletions

View file

@ -497,7 +497,7 @@ game/board/boo.c:
.data start:0x8013AB28 end:0x8013AD00 .data start:0x8013AB28 end:0x8013AD00
.sdata start:0x801D37D8 end:0x801D37E8 .sdata start:0x801D37D8 end:0x801D37E8
.sbss start:0x801D41B0 end:0x801D41E8 .sbss start:0x801D41B0 end:0x801D41E8
.sdata2 start:0x801D5E98 end:0x801D5FA0 .sdata2 start:0x801D5E98 end:0x801D5FA8
game/board/mg_setup.c: game/board/mg_setup.c:
.text start:0x800A1A34 end:0x800A4F6C .text start:0x800A1A34 end:0x800A4F6C
@ -506,7 +506,7 @@ game/board/mg_setup.c:
.bss start:0x801A4C58 end:0x801A4CC8 .bss start:0x801A4C58 end:0x801A4CC8
.sdata start:0x801D37E8 end:0x801D37F0 .sdata start:0x801D37E8 end:0x801D37F0
.sbss start:0x801D41E8 end:0x801D4218 .sbss start:0x801D41E8 end:0x801D4218
.sdata2 start:0x801D5FA0 end:0x801D6080 .sdata2 start:0x801D5FA8 end:0x801D6080
game/board/boo_house.c: game/board/boo_house.c:
.text start:0x800A4F6C end:0x800A6EE4 .text start:0x800A4F6C end:0x800A6EE4

View file

@ -537,12 +537,12 @@ omCurrentOvlGet = .text:0x8002FF44; // type:function size:0x8
OSPanic = .text:0x8002FF4C; // type:function size:0x150 OSPanic = .text:0x8002FF4C; // type:function size:0x150
HuFaultInitXfbDirectDraw = .text:0x8003009C; // type:function size:0x118 HuFaultInitXfbDirectDraw = .text:0x8003009C; // type:function size:0x118
HuFaultSetXfbAddress = .text:0x800301B4; // type:function size:0x34 HuFaultSetXfbAddress = .text:0x800301B4; // type:function size:0x34
XFB_WriteBackCache = .text:0x800301E8; // type:function size:0x98 XFB_WriteBackCache = .text:0x800301E8; // type:function size:0x98 scope:local
XFB_CR = .text:0x80030280; // type:function size:0x50 XFB_CR = .text:0x80030280; // type:function size:0x50 scope:local
XFB_puts = .text:0x800302D0; // type:function size:0xF4 XFB_puts = .text:0x800302D0; // type:function size:0xF4 scope:local
XFB_putcS = .text:0x800303C4; // type:function size:0x150 XFB_putcS = .text:0x800303C4; // type:function size:0x150 scope:local
XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0 XFB_putcProgressive = .text:0x80030514; // type:function size:0x1F0 scope:local
XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4 XFB_putcInterlace = .text:0x80030704; // type:function size:0x1B4 scope:local
GWInit = .text:0x800308B8; // type:function size:0x14C GWInit = .text:0x800308B8; // type:function size:0x14C
GWGameStatReset = .text:0x80030A04; // type:function size:0x318 GWGameStatReset = .text:0x80030A04; // type:function size:0x318
GWMessDelayGet = .text:0x80030D1C; // type:function size:0x4C GWMessDelayGet = .text:0x80030D1C; // type:function size:0x4C
@ -695,7 +695,7 @@ MGSeqPauseKill = .text:0x8003F360; // type:function size:0xC
MGSeqPauseEnableCtrl = .text:0x8003F36C; // type:function size:0x40 MGSeqPauseEnableCtrl = .text:0x8003F36C; // type:function size:0x40
MGSeqPracticeInit = .text:0x8003F3AC; // type:function size:0xDC MGSeqPracticeInit = .text:0x8003F3AC; // type:function size:0xDC
PracticeProc = .text:0x8003F488; // type:function size:0x234 scope:local PracticeProc = .text:0x8003F488; // type:function size:0x234 scope:local
SeqSEPlay = .text:0x8003F6BC; // type:function size:0xD4 scope:local SeqPlayStartFX = .text:0x8003F6BC; // type:function size:0xD4 scope:local
MGSeqPracticeExitCheck = .text:0x8003F790; // type:function size:0x128 MGSeqPracticeExitCheck = .text:0x8003F790; // type:function size:0x128
espInit = .text:0x8003F8B8; // type:function size:0xA0 espInit = .text:0x8003F8B8; // type:function size:0xA0
espEntry = .text:0x8003F958; // type:function size:0x1B0 espEntry = .text:0x8003F958; // type:function size:0x1B0
@ -952,7 +952,7 @@ THPTestProc = .text:0x8005793C; // type:function size:0x27C scope:local
THPViewFunc = .text:0x80057BB8; // type:function size:0xA4 scope:local THPViewFunc = .text:0x80057BB8; // type:function size:0xA4 scope:local
THPViewSprFunc = .text:0x80057C5C; // type:function size:0x17C scope:local THPViewSprFunc = .text:0x80057C5C; // type:function size:0x17C scope:local
THPDecodeFunc = .text:0x80057DD8; // type:function size:0x4C scope:local THPDecodeFunc = .text:0x80057DD8; // type:function size:0x4C scope:local
omGetMGIndex = .text:0x80057E24; // type:function size:0x5C omMgIndexGet = .text:0x80057E24; // type:function size:0x5C
omGameSysInit = .text:0x80057E80; // type:function size:0xF4 omGameSysInit = .text:0x80057E80; // type:function size:0xF4
omVibrate = .text:0x80057F74; // type:function size:0x9C omVibrate = .text:0x80057F74; // type:function size:0x9C
_CheckFlag = .text:0x80058010; // type:function size:0xA0 _CheckFlag = .text:0x80058010; // type:function size:0xA0
@ -4932,28 +4932,28 @@ lbl_8012F020 = .data:0x8012F020; // type:object size:0x94
lbl_8012F0B4 = .data:0x8012F0B4; // type:object size:0x11 data:string lbl_8012F0B4 = .data:0x8012F0B4; // type:object size:0x11 data:string
lbl_8012F0C5 = .data:0x8012F0C5; // type:object size:0x3A lbl_8012F0C5 = .data:0x8012F0C5; // type:object size:0x3A
lbl_8012F0FF = .data:0x8012F0FF; // type:object size:0x31 lbl_8012F0FF = .data:0x8012F0FF; // type:object size:0x31
seqInfo = .data:0x8012F130; // type:object size:0x1DC scope:local seqInfoTbl = .data:0x8012F130; // type:object size:0x1DC scope:local
seqType2SprTbl = .data:0x8012F30C; // type:object size:0x18 scope:local seqType2SprTbl = .data:0x8012F30C; // type:object size:0x18 scope:local
seqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local mgSeqTypeTbl = .data:0x8012F324; // type:object size:0x12 scope:local
lbl_8012F336 = .data:0x8012F336; // type:object size:0x53 scope:local data:string 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_8012F389 = .data:0x8012F389; // type:object size:0x9 scope:local data:string
lbl_8012F392 = .data:0x8012F392; // 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 seqFontAlphaTbl = .data:0x8012F39B; // type:object size:0x35 scope:local data:string
seqFontKanaTbl = .data:0x8012F3D0; // type:object size:0x52 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 seqFontNumTbl = .data:0x8012F422; // type:object size:0xB scope:local data:string
lbl_8012F430 = .data:0x8012F430; // type:object size:0x14 letterBufTbl = .data:0x8012F430; // type:object size:0x14 scope:local
wordTbl = .data:0x8012F444; // type:object size:0x18 scope:local wordMgTbl = .data:0x8012F444; // type:object size:0x18 scope:local
letterBattleOfs = .data:0x8012F45C; // type:object size:0x40 scope:local letterOfs$912 = .data:0x8012F45C; // type:object size:0x40 scope:local
letter2vs2Ofs = .data:0x8012F49C; // type:object size:0x1C scope:local letterOfs$913 = .data:0x8012F49C; // type:object size:0x1C scope:local
letterBowserOfs = .data:0x8012F4B8; // type:object size:0x38 scope:local letterOfs$914 = .data:0x8012F4B8; // type:object size:0x38 scope:local
lbl_8012F4F0 = .data:0x8012F4F0; // type:object size:0xA data:string charMKoopaNameE = .data:0x8012F4F0; // type:object size:0xA scope:local data:string
charNameTbl = .data:0x8012F4FC; // type:object size:0x78 scope:local winCharNameTbl = .data:0x8012F4FC; // type:object size:0x78 scope:local
lbl_8012F574 = .data:0x8012F574; // type:object size:0xA data:string wordChampionE = .data:0x8012F574; // type:object size:0xA scope:local data:string
winStrTbl = .data:0x8012F580; // type:object size:0x18 scope:local winWordTbl = .data:0x8012F580; // type:object size:0x18 scope:local
winPosOfs = .data:0x8012F598; // type:object size:0x50 scope:local winPosOfs = .data:0x8012F598; // type:object size:0x50 scope:local
practiceTbl = .data:0x8012F5E8; // type:object size:0xAC scope:local practiceTbl = .data:0x8012F5E8; // type:object size:0xAC scope:local
practiceData = .data:0x8012F694; // type:object size:0xC scope:local practicePosYTbl = .data:0x8012F694; // type:object size:0xC scope:local
seqFXTbl = .data:0x8012F6A0; // type:object size:0xF0 scope:local seqStartFXTbl = .data:0x8012F6A0; // type:object size:0xF0 scope:local
lbl_8012F790 = .data:0x8012F790; // type:object size:0x15 data:string lbl_8012F790 = .data:0x8012F790; // type:object size:0x15 data:string
lbl_8012F7A5 = .data:0x8012F7A5; // type:object size:0x10 data:string lbl_8012F7A5 = .data:0x8012F7A5; // type:object size:0x10 data:string
lbl_8012F7B5 = .data:0x8012F7B5; // type:object size:0x13 data:string lbl_8012F7B5 = .data:0x8012F7B5; // type:object size:0x13 data:string
@ -5136,7 +5136,7 @@ lbl_801311C4 = .data:0x801311C4; // type:object size:0x24
VolumeTable = .data:0x801311E8; // type:object size:0x100 scope:local VolumeTable = .data:0x801311E8; // type:object size:0x100 scope:local
lbl_801312E8 = .data:0x801312E8; // type:object size:0x4D lbl_801312E8 = .data:0x801312E8; // type:object size:0x4D
lbl_80131335 = .data:0x80131335; // type:object size:0x1B lbl_80131335 = .data:0x80131335; // type:object size:0x1B
MGInfoTable = .data:0x80131350; // type:object size:0xE00 data:2byte mgInfoTbl = .data:0x80131350; // type:object size:0xE00 data:2byte
lbl_80132150 = .data:0x80132150; // type:object size:0x40 lbl_80132150 = .data:0x80132150; // type:object size:0x40
lbl_80132190 = .data:0x80132190; // type:object size:0xC data:string lbl_80132190 = .data:0x80132190; // type:object size:0xC data:string
lbl_8013219C = .data:0x8013219C; // type:object size:0xC data:string lbl_8013219C = .data:0x8013219C; // type:object size:0xC data:string
@ -5521,7 +5521,7 @@ CZoomM = .bss:0x801901A0; // type:object size:0x40
omDLLinfoTbl = .bss:0x801901E0; // type:object size:0x50 omDLLinfoTbl = .bss:0x801901E0; // type:object size:0x50
sndFXBuf = .bss:0x80190230; // type:object size:0x200 scope:local sndFXBuf = .bss:0x80190230; // type:object size:0x200 scope:local
charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 scope:local charVoiceGroupStat = .bss:0x80190430; // type:object size:0x20 scope:local
seqStat = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte seqWorkData = .bss:0x80190450; // type:object size:0x400 scope:local data:4byte
seqMaxTime = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte seqMaxTime = .bss:0x80190850; // type:object size:0x10 scope:local data:2byte
esprite = .bss:0x80190860; // type:object size:0x600 data:2byte esprite = .bss:0x80190860; // type:object size:0x600 data:2byte
espanim = .bss:0x80190E60; // type:object size:0x1200 data:4byte espanim = .bss:0x80190E60; // type:object size:0x1200 data:4byte
@ -5556,9 +5556,9 @@ SimpleControl = .bss:0x80197AC0; // type:object size:0x19C
SoundBuffer = .bss:0x80197C60; // type:object size:0x500 scope:local align:32 SoundBuffer = .bss:0x80197C60; // type:object size:0x500 scope:local align:32
WorkBuffer = .bss:0x80198160; // type:object size:0x40 scope:local align:32 WorkBuffer = .bss:0x80198160; // type:object size:0x40 scope:local align:32
THPFileName = .bss:0x801981A0; // type:object size:0x40 scope:local THPFileName = .bss:0x801981A0; // type:object size:0x40 scope:local
GWGameStatBackup = .bss:0x801981E0; // type:object size:0x118 mgGameStatBackup = .bss:0x801981E0; // type:object size:0x118
lbl_801982F8 = .bss:0x801982F8; // type:object size:0x100 mgIndexList = .bss:0x801982F8; // type:object size:0x100
lbl_801983F8 = .bss:0x801983F8; // type:object size:0x18 mgTicTacToeGrid = .bss:0x801983F8; // type:object size:0x12
_Sys_Flag = .bss:0x80198410; // type:object size:0x10 _Sys_Flag = .bss:0x80198410; // type:object size:0x10
curFileInfo = .bss:0x80198420; // type:object size:0x20 curFileInfo = .bss:0x80198420; // type:object size:0x20
saveBuf = .bss:0x80198440; // type:object size:0x4000 align:32 saveBuf = .bss:0x80198440; // type:object size:0x4000 align:32
@ -5778,54 +5778,54 @@ lbl_801D3488 = .sdata:0x801D3488; // type:object size:0x4 data:string
lbl_801D348C = .sdata:0x801D348C; // type:object size:0xC lbl_801D348C = .sdata:0x801D348C; // type:object size:0xC
omSysPauseEnableFlag = .sdata:0x801D3498; // type:object size:0x1 data:byte omSysPauseEnableFlag = .sdata:0x801D3498; // type:object size:0x1 data:byte
omprevovl = .sdata:0x801D349C; // type:object size:0x4 data:4byte omprevovl = .sdata:0x801D349C; // type:object size:0x4 data:4byte
lbl_801D34A0 = .sdata:0x801D34A0; // type:object size:0x4 data:4byte titleMes$442 = .sdata:0x801D34A0; // type:object size:0x4 scope:local data:4byte
lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0xC lbl_801D34A4 = .sdata:0x801D34A4; // type:object size:0xC
lbl_801D34B0 = .sdata:0x801D34B0; // type:object size:0x1 lbl_801D34B0 = .sdata:0x801D34B0; // type:object size:0x1
lbl_801D34B1 = .sdata:0x801D34B1; // type:object size:0x7 lbl_801D34B1 = .sdata:0x801D34B1; // type:object size:0x7
mgSeqInitF = .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 wordStartE = .sdata:0x801D34BC; // type:object size:0x7 scope:local data:string
lbl_801D34C3 = .sdata:0x801D34C3; // type:object size:0x3 data:byte seqPunctTbl = .sdata:0x801D34C3; // type:object size:0x3 scope:local data:byte
lbl_801D34C6 = .sdata:0x801D34C6; // type:object size:0x6 wordStartJ = .sdata:0x801D34C6; // type:object size:0x6 scope:local
lbl_801D34CC = .sdata:0x801D34CC; // type:object size:0x8 wordFinishJ = .sdata:0x801D34CC; // type:object size:0x8 scope:local
lbl_801D34D4 = .sdata:0x801D34D4; // type:object size:0x6 wordDrawJ = .sdata:0x801D34D4; // type:object size:0x6 scope:local
lbl_801D34DA = .sdata:0x801D34DA; // type:object size:0x8 data:string wordFinishE = .sdata:0x801D34DA; // type:object size:0x8 scope:local data:string
lbl_801D34E2 = .sdata:0x801D34E2; // type:object size:0x6 data:string wordDrawE = .sdata:0x801D34E2; // type:object size:0x6 scope:local data:string
lbl_801D34E8 = .sdata:0x801D34E8; // type:object size:0x4 charMarioNameJ = .sdata:0x801D34E8; // type:object size:0x4 scope:local
lbl_801D34EC = .sdata:0x801D34EC; // type:object size:0x6 data:string charMarioNameE = .sdata:0x801D34EC; // type:object size:0x6 scope:local data:string
lbl_801D34F2 = .sdata:0x801D34F2; // type:object size:0x6 charLuigiNameJ = .sdata:0x801D34F2; // type:object size:0x6 scope:local
lbl_801D34F8 = .sdata:0x801D34F8; // type:object size:0x6 data:string charLuigiNameE = .sdata:0x801D34F8; // type:object size:0x6 scope:local data:string
lbl_801D34FE = .sdata:0x801D34FE; // type:object size:0x5 charPeachNameJ = .sdata:0x801D34FE; // type:object size:0x5 scope:local
lbl_801D3503 = .sdata:0x801D3503; // type:object size:0x6 data:string charPeachNameE = .sdata:0x801D3503; // type:object size:0x6 scope:local data:string
lbl_801D3509 = .sdata:0x801D3509; // type:object size:0x5 charYoshiNameJ = .sdata:0x801D3509; // type:object size:0x5 scope:local
lbl_801D350E = .sdata:0x801D350E; // type:object size:0x6 data:string charYoshiNameE = .sdata:0x801D350E; // type:object size:0x6 scope:local data:string
lbl_801D3514 = .sdata:0x801D3514; // type:object size:0x4 charWarioNameJ = .sdata:0x801D3514; // type:object size:0x4 scope:local
lbl_801D3518 = .sdata:0x801D3518; // type:object size:0x6 data:string charWarioNameE = .sdata:0x801D3518; // type:object size:0x6 scope:local data:string
lbl_801D351E = .sdata:0x801D351E; // type:object size:0x6 charDonkeyNameJ = .sdata:0x801D351E; // type:object size:0x6 scope:local
lbl_801D3524 = .sdata:0x801D3524; // type:object size:0x5 data:string charDonkeyNameE = .sdata:0x801D3524; // type:object size:0x5 scope:local data:string
lbl_801D3529 = .sdata:0x801D3529; // type:object size:0x7 charDaisyNameJ = .sdata:0x801D3529; // type:object size:0x7 scope:local
lbl_801D3530 = .sdata:0x801D3530; // type:object size:0x6 data:string charDaisyNameE = .sdata:0x801D3530; // type:object size:0x6 scope:local data:string
lbl_801D3536 = .sdata:0x801D3536; // type:object size:0x7 charWaluigiNameJ = .sdata:0x801D3536; // type:object size:0x7 scope:local
lbl_801D353D = .sdata:0x801D353D; // type:object size:0x8 data:string charWaluigiNameE = .sdata:0x801D353D; // type:object size:0x8 scope:local data:string
lbl_801D3545 = .sdata:0x801D3545; // type:object size:0x5 charKoopaNameJ = .sdata:0x801D3545; // type:object size:0x5 scope:local
lbl_801D354A = .sdata:0x801D354A; // type:object size:0x7 data:string charKoopaNameE = .sdata:0x801D354A; // type:object size:0x7 scope:local data:string
lbl_801D3551 = .sdata:0x801D3551; // type:object size:0x6 charKinopioNameJ = .sdata:0x801D3551; // type:object size:0x6 scope:local
lbl_801D3557 = .sdata:0x801D3557; // type:object size:0x5 data:string charKinopioNameE = .sdata:0x801D3557; // type:object size:0x5 scope:local data:string
lbl_801D355C = .sdata:0x801D355C; // type:object size:0x5 charHeihoNameJ = .sdata:0x801D355C; // type:object size:0x5 scope:local
lbl_801D3561 = .sdata:0x801D3561; // type:object size:0x8 data:string charHeihoNameE = .sdata:0x801D3561; // type:object size:0x8 scope:local data:string
lbl_801D3569 = .sdata:0x801D3569; // type:object size:0x4 charTeresaNameJ = .sdata:0x801D3569; // type:object size:0x4 scope:local
lbl_801D356D = .sdata:0x801D356D; // type:object size:0x4 data:string charTeresaNameE = .sdata:0x801D356D; // type:object size:0x4 scope:local data:string
lbl_801D3571 = .sdata:0x801D3571; // type:object size:0x5 charNoko2NameJ = .sdata:0x801D3571; // type:object size:0x5 scope:local
lbl_801D3576 = .sdata:0x801D3576; // type:object size:0x6 data:string charNoko2NameE = .sdata:0x801D3576; // type:object size:0x6 scope:local data:string
lbl_801D357C = .sdata:0x801D357C; // type:object size:0x7 charMKoopaNameJ = .sdata:0x801D357C; // type:object size:0x7 scope:local
lbl_801D3583 = .sdata:0x801D3583; // type:object size:0x6 charKuriboNameJ = .sdata:0x801D3583; // type:object size:0x6 scope:local
lbl_801D3589 = .sdata:0x801D3589; // type:object size:0x7 data:string charKuriboNameJ = .sdata:0x801D3589; // type:object size:0x7 scope:local data:string
lbl_801D3590 = .sdata:0x801D3590; // type:object size:0x3 wordWinJ = .sdata:0x801D3590; // type:object size:0x3 scope:local
lbl_801D3593 = .sdata:0x801D3593; // type:object size:0x5 data:string wordWinE = .sdata:0x801D3593; // type:object size:0x5 scope:local data:string
lbl_801D3598 = .sdata:0x801D3598; // type:object size:0x6 wordLoseJ = .sdata:0x801D3598; // type:object size:0x6 scope:local
lbl_801D359E = .sdata:0x801D359E; // type:object size:0x5 data:string wordLoseE = .sdata:0x801D359E; // type:object size:0x5 scope:local data:string
lbl_801D35A3 = .sdata:0x801D35A3; // type:object size:0x7 wordChampionJ = .sdata:0x801D35A3; // type:object size:0x7 scope:local
lbl_801D35AA = .sdata:0x801D35AA; // type:object size:0x6 wordPauseJ = .sdata:0x801D35AA; // type:object size:0x6 scope:local
lbl_801D35B0 = .sdata:0x801D35B0; // type:object size:0x6 data:string wordPauseE = .sdata:0x801D35B0; // type:object size:0x6 scope:local data:string
pauseStrTbl = .sdata:0x801D35B8; // type:object size:0x8 scope:local pauseStrTbl = .sdata:0x801D35B8; // type:object size:0x8 scope:local
lbl_801D35C0 = .sdata:0x801D35C0; // type:object size:0x8 lbl_801D35C0 = .sdata:0x801D35C0; // type:object size:0x8
lbl_801D35C8 = .sdata:0x801D35C8; // type:object size:0x8 lbl_801D35C8 = .sdata:0x801D35C8; // type:object size:0x8
@ -6027,25 +6027,25 @@ dspSlaveLength = .sdata:0x801D39F0; // type:object size:0x2 data:2byte
SendCount = .sdata:0x801D39F8; // type:object size:0x1 scope:local data:byte SendCount = .sdata:0x801D39F8; // type:object size:0x1 scope:local data:byte
SystemInitF = .sbss:0x801D3A00; // type:object size:0x4 data:4byte SystemInitF = .sbss:0x801D3A00; // type:object size:0x4 data:4byte
HuDvdErrWait = .sbss:0x801D3A04; // type:object size:0x4 data:4byte HuDvdErrWait = .sbss:0x801D3A04; // type:object size:0x4 data:4byte
lbl_801D3A08 = .sbss:0x801D3A08; // type:object size:0x4 fi_req = .sbss:0x801D3A08; // type:object size:0x4 scope:local
lbl_801D3A0C = .sbss:0x801D3A0C; // type:object size:0x4 rf_req = .sbss:0x801D3A0C; // type:object size:0x4 scope:local
lbl_801D3A10 = .sbss:0x801D3A10; // type:object size:0x4 pe_req = .sbss:0x801D3A10; // type:object size:0x4 scope:local
lbl_801D3A14 = .sbss:0x801D3A14; // type:object size:0x4 vi_req = .sbss:0x801D3A14; // type:object size:0x4 scope:local
lbl_801D3A18 = .sbss:0x801D3A18; // type:object size:0x4 io_req = .sbss:0x801D3A18; // type:object size:0x4 scope:local
lbl_801D3A1C = .sbss:0x801D3A1C; // type:object size:0x4 dsp_req = .sbss:0x801D3A1C; // type:object size:0x4 scope:local
lbl_801D3A20 = .sbss:0x801D3A20; // type:object size:0x4 cpu_wr_req = .sbss:0x801D3A20; // type:object size:0x4 scope:local
lbl_801D3A24 = .sbss:0x801D3A24; // type:object size:0x4 cpu_rd_req = .sbss:0x801D3A24; // type:object size:0x4 scope:local
lbl_801D3A28 = .sbss:0x801D3A28; // type:object size:0x4 tc_req = .sbss:0x801D3A28; // type:object size:0x4 scope:local
lbl_801D3A2C = .sbss:0x801D3A2C; // type:object size:0x4 cp_req = .sbss:0x801D3A2C; // type:object size:0x4 scope:local
lbl_801D3A30 = .sbss:0x801D3A30; // type:object size:0x4 total_copy_clks = .sbss:0x801D3A30; // type:object size:0x4 scope:local
lbl_801D3A34 = .sbss:0x801D3A34; // type:object size:0x4 clr_pixels_in = .sbss:0x801D3A34; // type:object size:0x4 scope:local
lbl_801D3A38 = .sbss:0x801D3A38; // type:object size:0x4 bot_pixels_out = .sbss:0x801D3A38; // type:object size:0x4 scope:local
lbl_801D3A3C = .sbss:0x801D3A3C; // type:object size:0x4 bot_pixels_in = .sbss:0x801D3A3C; // type:object size:0x4 scope:local
lbl_801D3A40 = .sbss:0x801D3A40; // type:object size:0x4 top_pixels_out = .sbss:0x801D3A40; // type:object size:0x4 scope:local
lbl_801D3A44 = .sbss:0x801D3A44; // type:object size:0x4 top_pixels_in = .sbss:0x801D3A44; // type:object size:0x4 scope:local
lbl_801D3A48 = .sbss:0x801D3A48; // type:object size:0x4 vstall = .sbss:0x801D3A48; // type:object size:0x4 scope:local
lbl_801D3A4C = .sbss:0x801D3A4C; // type:object size:0x4 vmiss = .sbss:0x801D3A4C; // type:object size:0x4 scope:local
lbl_801D3A50 = .sbss:0x801D3A50; // type:object size:0x4 vcheck = .sbss:0x801D3A50; // type:object size:0x4 scope:local
GlobalCounter = .sbss:0x801D3A54; // type:object size:0x4 data:4byte GlobalCounter = .sbss:0x801D3A54; // type:object size:0x4 data:4byte
VCounter = .sbss:0x801D3A58; // type:object size:0x4 data:4byte VCounter = .sbss:0x801D3A58; // type:object size:0x4 data:4byte
RumbleBit = .sbss:0x801D3A5C; // type:object size:0x4 scope:local data:4byte RumbleBit = .sbss:0x801D3A5C; // type:object size:0x4 scope:local data:4byte
@ -6310,14 +6310,15 @@ decodeThread = .sbss:0x801D3E68; // type:object size:0x4 scope:local data:4byte
decodeStackP = .sbss:0x801D3E6C; // type:object size:0x4 scope:local data:4byte decodeStackP = .sbss:0x801D3E6C; // type:object size:0x4 scope:local data:4byte
decodeRate = .sbss:0x801D3E70; // type:object size:0x4 scope:local data:4byte decodeRate = .sbss:0x801D3E70; // type:object size:0x4 scope:local data:4byte
audioTrack = .sbss:0x801D3E74; // type:object size:0x8 scope:local data:4byte audioTrack = .sbss:0x801D3E74; // type:object size:0x8 scope:local data:4byte
lbl_801D3E80 = .sbss:0x801D3E80; // type:object size:0x4 mgBoardHostEnableF = .sbss:0x801D3E80; // type:object size:0x1
lbl_801D3E84 = .sbss:0x801D3E84; // type:object size:0x4 mgInstExitEnableF = .sbss:0x801D3E84; // type:object size:0x4
lbl_801D3E88 = .sbss:0x801D3E88; // type:object size:0x4 data:4byte mgPracticeEnableF = .sbss:0x801D3E88; // type:object size:0x4 data:4byte
lbl_801D3E8C = .sbss:0x801D3E8C; // type:object size:0x4 data:4byte mgQuitExtraF = .sbss:0x801D3E8C; // type:object size:0x4 data:4byte
lbl_801D3E90 = .sbss:0x801D3E90; // type:object size:0x4 mgRecordExtra = .sbss:0x801D3E90; // type:object size:0x4
lbl_801D3E94 = .sbss:0x801D3E94; // type:object size:0x4 lbl_801D3E94 = .sbss:0x801D3E94; // type:object size:0x1
lbl_801D3E98 = .sbss:0x801D3E98; // type:object size:0x8 mgBattleStarMax = .sbss:0x801D3E96; // type:object size:0x2
lbl_801D3EA0 = .sbss:0x801D3EA0; // type:object size:0x8 mgBattleStar = .sbss:0x801D3E98; // type:object size:0x8
mgTypeCurr = .sbss:0x801D3EA0; // type:object size:0x2 data:2byte
curSlotNo = .sbss:0x801D3EA8; // type:object size:0x2 data:2byte curSlotNo = .sbss:0x801D3EA8; // type:object size:0x2 data:2byte
curBoxNo = .sbss:0x801D3EAA; // type:object size:0x1 data:byte curBoxNo = .sbss:0x801D3EAA; // type:object size:0x1 data:byte
saveExecF = .sbss:0x801D3EAC; // type:object size:0x4 saveExecF = .sbss:0x801D3EAC; // type:object size:0x4

View file

@ -355,7 +355,7 @@ config.libs = [
Object(Matching, "game/THPSimple.c"), Object(Matching, "game/THPSimple.c"),
Object(Matching, "game/THPDraw.c"), Object(Matching, "game/THPDraw.c"),
Object(Matching, "game/thpmain.c"), Object(Matching, "game/thpmain.c"),
Object(NonMatching, "game/objsub.c"), Object(Matching, "game/objsub.c"),
Object(Matching, "game/flag.c"), Object(Matching, "game/flag.c"),
Object(Matching, "game/saveload.c"), Object(Matching, "game/saveload.c"),
Object(NonMatching, "game/sreset.c"), Object(NonMatching, "game/sreset.c"),
@ -381,7 +381,7 @@ config.libs = [
Object(NonMatching, "game/board/bowser.c"), Object(NonMatching, "game/board/bowser.c"),
Object(NonMatching, "game/board/battle.c"), Object(NonMatching, "game/board/battle.c"),
Object(NonMatching, "game/board/fortune.c"), Object(NonMatching, "game/board/fortune.c"),
Object(NonMatching, "game/board/boo.c"), Object(Matching, "game/board/boo.c"),
Object(NonMatching, "game/board/mg_setup.c"), Object(NonMatching, "game/board/mg_setup.c"),
Object(NonMatching, "game/board/boo_house.c"), Object(NonMatching, "game/board/boo_house.c"),
Object(NonMatching, "game/board/start.c"), Object(NonMatching, "game/board/start.c"),

View file

@ -27,22 +27,22 @@ void BoardTutorialItemSet(s32);
void BoardCharWheelSetTarget(s32); void BoardCharWheelSetTarget(s32);
void BoardTutorialDirInputSet(s32, s32, s32); void BoardTutorialDirInputSet(s32, s32, s32);
void BoardSpaceStarSetIndex(s32); void BoardSpaceStarSetIndex(s32);
void BoardModelRotYSet(s16, f32); s32 BoardModelRotYSet(s16, f32);
f32 BoardModelRotYGet(s16); f32 BoardModelRotYGet(s16);
void BoardModelLayerSet(s16, u8); s32 BoardModelLayerSet(s16, u8);
void BoardTutorialHostSet(s16); void BoardTutorialHostSet(s16);
s16 BoardModelIDGet(s16); s16 BoardModelIDGet(s16);
void BoardModelScaleSetV(s16, Vec*); s32 BoardModelScaleSetV(s16, Vec*);
void BoardLightHookSet(BoardLightHook set, BoardLightHook reset); void BoardLightHookSet(BoardLightHook set, BoardLightHook reset);
s16 BoardModelCreate(s32, void*, s32); s16 BoardModelCreate(s32, s32*, s32);
void BoardModelKill(s16); void BoardModelKill(s16);
void fn_8006DDE8(s16, f32); s32 fn_8006DDE8(s16, f32);
s32 BoardModelMotionStart(s16, s32, s32); s32 BoardModelMotionStart(s16, s32, u32);
void BoardModelMotionSpeedSet(s16, f32); s32 BoardModelMotionSpeedSet(s16, f32);
void BoardModelPosSetV(s16, Vec*); s32 BoardModelPosSetV(s16, Vec*);
void BoardModelPosSet(s16, f32, f32, f32); s32 BoardModelPosSet(s16, f32, f32, f32);
void BoardModelRotSetV(s16 arg0, Vec* arg1); s32 BoardModelRotSetV(s16 arg0, Vec* arg1);
void BoardModelVisibilitySet(s16, s32); s32 BoardModelVisibilitySet(s16, s32);
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func); void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func); void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func); void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func);
@ -56,10 +56,10 @@ void BoardBooHouseHostSet(s16);
void BoardTutorialHookSet(void*); void BoardTutorialHookSet(void*);
void BoardTutorialBlockSetPos(s32, s32); void BoardTutorialBlockSetPos(s32, s32);
s32 BoardCameraRotGet(Vec*); s32 BoardCameraRotGet(Vec*);
void BoardModelScaleSet(s16, f32, f32, f32); s32 BoardModelScaleSet(s16, f32, f32, f32);
s32 BoardIsKill(void); s32 BoardIsKill(void);
void BoardModelMtxSet(s16, Mtx*); void BoardModelMtxSet(s16, Mtx*);
void BoardModelRotSet(s16, f32, f32, f32); s32 BoardModelRotSet(s16, f32, f32, f32);
void BoardBowserExec(s32 player, s32 space); void BoardBowserExec(s32 player, s32 space);
void BoardBattleExec(s32 player, s32 space); void BoardBattleExec(s32 player, s32 space);

18
include/game/board/boo.h Executable file
View file

@ -0,0 +1,18 @@
#ifndef _BOARD_BOO_H
#define _BOARD_BOO_H
#include "dolphin.h"
#include "game/object.h"
s16 BoardBooCreate(s32 arg0, Vec *arg1);
void BoardBooKill(void);
s32 BoardBooStealTypeSet(s32 arg0);
s32 BoardBooStealMain(void);
BOOL CheckBallCoinDone(void);
void TakeBallStar(void);
void ExecTakeBallStar(omObjData *arg0);
BOOL CheckTakeBallStarDone(void);
s32 BoardBooStealValueGet(s16 *arg0, s16 *arg1);
BOOL BoardBooStealLightCheck(void);
#endif

11
include/game/board/item.h Executable file
View file

@ -0,0 +1,11 @@
#ifndef _BOARD_ITEM_H
#define _BOARD_ITEM_H
#include "dolphin/types.h"
void BoardItemStart(s32 arg0, s32 arg1);
BOOL BoardItemDoneCheck(void);
void BoardItemPlayerRestore(s32 arg0, s32 arg1);
void BoardItemBagItemSet(s16 *arg0);
#endif

View file

@ -87,8 +87,8 @@ s32 BoardIsKill(void);
void BoardPauseDisableSet(s32 value); void BoardPauseDisableSet(s32 value);
s32 BoardPauseDisableGet(); s32 BoardPauseDisableGet();
void BoardSaveInit(s32 board); void BoardSaveInit(s32 board);
void BoardStoryConfigSet(s32 mg_type, s32 diff_story); void BoardStoryConfigSet(s32 mg_list, s32 diff_story);
void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_type, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap); void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_list, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap);
s32 BoardTurnNext(void); s32 BoardTurnNext(void);
void BoardNextOvlSet(OverlayID overlay); void BoardNextOvlSet(OverlayID overlay);
s32 BoardStartCheck(void); s32 BoardStartCheck(void);

View file

@ -34,8 +34,18 @@ s32 BoardModelAmbSet(s16 model, float r, float g, float b);
s32 BoardModelExistCheck(s16 model, s32 arg1); s32 BoardModelExistCheck(s16 model, s32 arg1);
s32 BoardModelExistDupe(s16 model, s32 arg1); s32 BoardModelExistDupe(s16 model, s32 arg1);
s32 fn_8006DDE8(s16 model, float arg1); s32 fn_8006DDE8(s16 model, float arg1);
s32 BoardModelMotionCreate(s16 model, s32 data_num);
s32 BoardModelMotionStartEndSet(s16 model, s16 start, s16 end);
s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr); s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr);
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
s32 BoardModelAttrSet(s16 model, u32 attr);
s32 BoardModelMotionTimeSet(s16 model, float time);
float BoardModelMotionTimeGet(s16 model);
float BoardModelMotionMaxTimeGet(s16 model);
s32 BoardModelMotionSpeedSet(s16 model, float speed); s32 BoardModelMotionSpeedSet(s16 model, float speed);
s32 BoardModelMotionEndCheck(s16 model);
s32 BoardModelAlphaSet(s16 model, u8 alpha);
s32 BoardModelRotYSet(s16 model, float rot);
s32 BoardModelPosSet(s16 model, float x, float y, float z); s32 BoardModelPosSet(s16 model, float x, float y, float z);
s32 BoardModelPosSetV(s16 model, Vec *pos); s32 BoardModelPosSetV(s16 model, Vec *pos);
s32 BoardModelRotSet(s16 model, float x, float y, float z); s32 BoardModelRotSet(s16 model, float x, float y, float z);

View file

@ -33,4 +33,6 @@ void BoardMakeRandomItem(void);
void BoardItemGetDestPos(s32 arg0, Vec *arg1); void BoardItemGetDestPos(s32 arg0, Vec *arg1);
void BoardItemStatusKill(s32 arg0); void BoardItemStatusKill(s32 arg0);
extern s8 boardItemUser;
#endif #endif

View file

@ -12,6 +12,7 @@ void BoardWinKillAll(void);
void BoardWinDestroy(void); void BoardWinDestroy(void);
void BoardWinProc(void); void BoardWinProc(void);
int BoardWinChoiceGet(void); int BoardWinChoiceGet(void);
void BoardWinPause(void);
void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice); void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice);
void BoardWinCreate(s32 pos, u32 mess, s32 portrait); void BoardWinCreate(s32 pos, u32 mess, s32 portrait);
void BoardWinInsertMesSet(u32 value, s32 index); void BoardWinInsertMesSet(u32 value, s32 index);

9
include/game/fault.h Normal file
View file

@ -0,0 +1,9 @@
#ifndef _GAME_FAULT_H
#define _GAME_FAULT_H
#include "game/gamework_data.h"
void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode);
void HuFaultSetXfbAddress(s16 index, void* value);
#endif

View file

@ -21,7 +21,7 @@ typedef struct system_state {
u16 bonus_star : 1; u16 bonus_star : 1;
u16 explain_mg : 1; u16 explain_mg : 1;
u16 show_com_mg : 1; u16 show_com_mg : 1;
u16 mg_type : 2; u16 mg_list : 2;
u16 mess_speed : 2; u16 mess_speed : 2;
u16 save_mode : 2; u16 save_mode : 2;
}; };
@ -45,7 +45,7 @@ typedef struct system_state {
}; };
/* 0x32 */ s8 unk_32; /* 0x32 */ s8 unk_32;
/* 0x34 */ u16 mg_next; /* 0x34 */ u16 mg_next;
/* 0x36 */ s16 mg_next_extra; /* 0x36 */ s16 mg_next_type;
/* 0x38 */ u16 unk_38; /* 0x38 */ u16 unk_38;
/* 0x3A */ u8 flag[3][16]; /* 0x3A */ u8 flag[3][16];
/* 0x6A */ u8 unk_6A[0x72]; /* 0x6A */ u8 unk_6A[0x72];
@ -157,9 +157,9 @@ static inline s32 GWLanguageGet(void)
return GWGameStat.language; return GWGameStat.language;
} }
static inline s32 GWMGTypeGet(void) static inline s32 GWMGListGet(void)
{ {
return GWSystem.mg_type; return GWSystem.mg_list;
} }
static inline s32 GWMessSpeedGet(void) static inline s32 GWMessSpeedGet(void)
@ -177,4 +177,9 @@ static inline s32 GWPlayerTeamGet(s32 player)
return GWPlayer[player].team; return GWPlayer[player].team;
} }
static inline s32 GWPlayerSpaceCurrGet(s32 player)
{
return GWPlayer[player].space_curr;
}
#endif #endif

View file

@ -29,7 +29,8 @@ typedef struct {
typedef struct particle_data { typedef struct particle_data {
/* 0x00 */ s16 unk_00; /* 0x00 */ s16 unk_00;
/* 0x02 */ s16 unk_02; /* 0x02 */ s16 unk_02;
/* 0x04 */ char unk_04[0x1C]; /* 0x04 */ float unk_04;
/* 0x08 */ char unk_08[0x18];
/* 0x20 */ s16 unk_20; /* 0x20 */ s16 unk_20;
/* 0x22 */ s16 unk_22; /* 0x22 */ s16 unk_22;
/* 0x24 */ float unk_24; /* 0x24 */ float unk_24;
@ -39,7 +40,7 @@ typedef struct particle_data {
/* 0x2E */ char unk_2E[2]; /* 0x2E */ char unk_2E[2];
/* 0x30 */ s16 unk_30; /* 0x30 */ s16 unk_30;
/* 0x32 */ char unk_32[2]; /* 0x32 */ char unk_32[2];
/* 0x34 */ s32 unk_34; /* 0x34 */ u32 unk_34;
/* 0x38 */ s32 unk_38; /* 0x38 */ s32 unk_38;
/* 0x3C */ u32 unk_3C; /* 0x3C */ u32 unk_3C;
/* 0x40 */ s32 unk_40; /* 0x40 */ s32 unk_40;
@ -115,6 +116,7 @@ void Hu3DParticleZRotSet(s16 arg0, float arg1);
void Hu3DParticleColSet(s16 arg0, u8 arg1, u8 arg2, u8 arg3); void Hu3DParticleColSet(s16 arg0, u8 arg1, u8 arg2, u8 arg3);
void Hu3DParticleTPLvlSet(s16 arg0, float arg1); void Hu3DParticleTPLvlSet(s16 arg0, float arg1);
void Hu3DParticleBlendModeSet(s16 arg0, u8 arg1); void Hu3DParticleBlendModeSet(s16 arg0, u8 arg1);
void Hu3DParticleHookSet(s16 arg0, void *arg1);
void Hu3DParticleAttrSet(s16 arg0, u8 arg1); void Hu3DParticleAttrSet(s16 arg0, u8 arg1);
void Hu3DParticleAttrReset(s16 arg0, u8 arg1); void Hu3DParticleAttrReset(s16 arg0, u8 arg1);
void Hu3DParticleAnimModeSet(s16 arg0, s16 arg1); void Hu3DParticleAnimModeSet(s16 arg0, s16 arg1);

View file

@ -135,6 +135,7 @@ void Hu3DNoSyncSet(s32);
s16 Hu3DModelCreate(void *); s16 Hu3DModelCreate(void *);
s16 Hu3DModelLink(s16); s16 Hu3DModelLink(s16);
s16 Hu3DHookFuncCreate(ModelHookFunc); s16 Hu3DHookFuncCreate(ModelHookFunc);
void Hu3DModelKill(s16);
void Hu3DModelAllKill(void); void Hu3DModelAllKill(void);
void Hu3DModelPosSet(s16, f32, f32, f32); void Hu3DModelPosSet(s16, f32, f32, f32);
void Hu3DModelPosSetV(s16, Vec *); void Hu3DModelPosSetV(s16, Vec *);
@ -221,7 +222,7 @@ void Hu3DShadowSizeSet(u16);
void Hu3DShadowExec(void); void Hu3DShadowExec(void);
s16 Hu3DProjectionCreate(void*, f32, f32, f32); s16 Hu3DProjectionCreate(void*, f32, f32, f32);
void Hu3DProjectionKill(s16); void Hu3DProjectionKill(s16);
void Hu3DProjectionPosSet(s16, Vec, Vec, Vec); void Hu3DProjectionPosSet(s16, Vec*, Vec*, Vec*);
void Hu3DProjectionTPLvlSet(s16, f32); void Hu3DProjectionTPLvlSet(s16, f32);
void Hu3DMipMapSet(char*, s16, s32, f32); void Hu3DMipMapSet(char*, s16, s32, f32);

43
include/game/objsub.h Normal file
View file

@ -0,0 +1,43 @@
#ifndef _GAME_OBJSUB_H
#define _GAME_OBJSUB_H
#include "dolphin.h"
#include "game/process.h"
#include "game/gamework_data.h"
typedef struct mg_info {
u16 ovl;
u8 type;
u8 flag;
u8 record_idx;
u32 name_mess;
u32 data_dir;
u32 inst_pic[3];
u32 mg_pic[3];
u32 rules_mess;
u32 control_mess[2];
u32 advice_mess;
} MgInfo;
s16 omMgIndexGet(s16 overlay);
void omGameSysInit(Process *objman);
void omVibrate(s16 player_cfg_index, s16 duration, s16 off, s16 on);
extern s16 mgTypeCurr;
extern s16 mgBattleStar[4];
extern s16 mgBattleStarMax;
extern u8 lbl_801D3E94;
extern s32 mgRecordExtra;
extern s32 mgQuitExtraF;
extern s32 mgPracticeEnableF;
extern s32 mgInstExitEnableF;
extern u8 mgBoardHostEnableF;
extern s16 mgTicTacToeGrid[3][3];
extern u8 mgIndexList[256];
extern GameStat mgGameStatBackup;
extern MgInfo mgInfoTbl[];
#endif

View file

@ -14,7 +14,7 @@
#define SPRITE_ATTR_PAUSED 0x1 #define SPRITE_ATTR_PAUSED 0x1
#define SPRITE_ATTR_LOOP 0x2 #define SPRITE_ATTR_LOOP 0x2
#define SPRITE_ATTR_HIDDEN 0x4 #define SPRITE_ATTR_HIDDEN 0x4
#define SPIRTE_ATTR_BILINEAR 0x8 #define SPRITE_ATTR_BILINEAR 0x8
#define SPRITE_ATTR_FUNC 0x10 #define SPRITE_ATTR_FUNC 0x10
#define SPRITE_ATTR_NOPAUSE 0x20 #define SPRITE_ATTR_NOPAUSE 0x20
#define SPRITE_ATTR_REVERSE 0x40 #define SPRITE_ATTR_REVERSE 0x40

View file

@ -478,12 +478,12 @@ static void TitleInit(void)
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 2)); sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 2));
sprite = HuSprCreate(sprite_data, 2, 0); sprite = HuSprCreate(sprite_data, 2, 0);
HuSprGrpMemberSet(titleGroup, 2, sprite); HuSprGrpMemberSet(titleGroup, 2, sprite);
HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); HuSprAttrSet(titleGroup, 2, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
HuSprPosSet(titleGroup, 2, 288, 380); HuSprPosSet(titleGroup, 2, 288, 380);
sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 9)); sprite_data = HuSprAnimReadFile(MAKE_DATA_NUM(DATADIR_TITLE, 9));
sprite = HuSprCreate(sprite_data, 0, 0); sprite = HuSprCreate(sprite_data, 0, 0);
HuSprGrpMemberSet(titleGroup, 3, sprite); HuSprGrpMemberSet(titleGroup, 3, sprite);
HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPIRTE_ATTR_BILINEAR); HuSprAttrSet(titleGroup, 3, SPRITE_ATTR_HIDDEN|SPRITE_ATTR_BILINEAR);
HuSprPosSet(titleGroup, 3, 288, 200); HuSprPosSet(titleGroup, 3, 288, 200);
} }

View file

@ -1,6 +1,7 @@
#include "common.h" #include "common.h"
#include "REL/executor.h" #include "REL/executor.h"
#include <dolphin/mtx.h> #include <dolphin/mtx.h>
#include "game/objsub.h"
// global data // // global data //
typedef struct unkStruct18FC10 { typedef struct unkStruct18FC10 {
@ -94,7 +95,6 @@ extern void espBankSet(s16, s16);
extern void espDrawNoSet(s16, s16); extern void espDrawNoSet(s16, s16);
extern void WipeCreate(s16, s16, s16); extern void WipeCreate(s16, s16, s16);
extern u8 WipeStatGet(void); extern u8 WipeStatGet(void);
extern void omGameSysInit(omObjData*);
extern f32 PSVECNormalize(Vec3f*, Vec3f*); extern f32 PSVECNormalize(Vec3f*, Vec3f*);
// local data // // local data //

View file

@ -11,8 +11,8 @@
#include "board_unsplit.h" #include "board_unsplit.h"
#include "game/hsfman.h" #include "game/hsfman.h"
void BoardModelPosSet(s16, f32, f32, f32); s32 BoardModelPosSet(s16, f32, f32, f32);
s32 BoardModelMotionStart(s16, s32, s32); s32 BoardModelMotionStart(s16, s32, u32);
void fn_8005B150(void*, void*); void fn_8005B150(void*, void*);
void fn_1_740(void); void fn_1_740(void);
@ -26,7 +26,7 @@ void fn_1_AF8(void);
void fn_1_DEC(void); void fn_1_DEC(void);
void fn_1_10B0(void); void fn_1_10B0(void);
s32 fn_1_12C8(void); s32 fn_1_12C8(void);
void fn_8006DDE8(s16, f32); s32 fn_8006DDE8(s16, f32);
void fn_1_10E4(omObjData* arg0); void fn_1_10E4(omObjData* arg0);
extern Process *boardObjMan; extern Process *boardObjMan;
typedef void (*VoidFunc)(void); typedef void (*VoidFunc)(void);
@ -35,7 +35,7 @@ extern const VoidFunc _dtors[];
f32 BoardModelMotionTimeGet(s16); f32 BoardModelMotionTimeGet(s16);
s16 BoardModelCreate(s32, void*, s32); s16 BoardModelCreate(s32, s32*, s32);
void BoardModelKill(s16); void BoardModelKill(s16);
void BoardModelMotionStartEndSet(s16, s32, s32); void BoardModelMotionStartEndSet(s16, s32, s32);
void Hu3DFogSet(f32, f32, u8, u8, u8); void Hu3DFogSet(f32, f32, u8, u8, u8);
@ -142,10 +142,10 @@ void BoardCreate(void) {
fn_8006DDE8(lbl_1_data_1E2, -1.0f); fn_8006DDE8(lbl_1_data_1E2, -1.0f);
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001); BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
lbl_1_data_1E4 = BoardModelCreate(0x77001B, &lbl_1_data_20C, 0); lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0);
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001); BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
lbl_1_data_1E6 = BoardModelCreate(0x2000D, &lbl_1_data_214, 0); lbl_1_data_1E6 = BoardModelCreate(0x2000D, lbl_1_data_214, 0);
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f); BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001); BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);

View file

@ -6,6 +6,7 @@
#include "REL/w03Dll.h" #include "REL/w03Dll.h"
#include "game/board/space.h" #include "game/board/space.h"
#include "game/object.h" #include "game/object.h"
#include "game/objsub.h"
#include "game/board/player.h" #include "game/board/player.h"
#include "math.h" #include "math.h"
#include "board_unsplit.h" #include "board_unsplit.h"
@ -67,7 +68,6 @@ s32 BoardVecDAngleCalcRange(float *value, float min, float range);
void BoardCameraQuakeSet(s32 duration, float strength); void BoardCameraQuakeSet(s32 duration, float strength);
s16 MGSeqCreate(s32, ...); s16 MGSeqCreate(s32, ...);
u8 MGSeqStatGet(s16); u8 MGSeqStatGet(s16);
void omVibrate(s16, s16, s16, s16);
f32 BoardPlayerRotYGet(s32); f32 BoardPlayerRotYGet(s32);
f32 BoardModelMotionTimeGet(s16); f32 BoardModelMotionTimeGet(s16);
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist); s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);

View file

@ -10,6 +10,7 @@
#include "board_unsplit.h" #include "board_unsplit.h"
#include "game/hsfman.h" #include "game/hsfman.h"
#include "game/board/main.h" #include "game/board/main.h"
#include "game/objsub.h"
void fn_1_1358(void); void fn_1_1358(void);
void fn_1_152C(void); void fn_1_152C(void);
@ -29,7 +30,6 @@ s32 BoardPlayerMotBlendCheck(s32);
f32 BoardPlayerRotYGet(s32); f32 BoardPlayerRotYGet(s32);
void BoardConfettiCreate(Point3d*, s16, f32); void BoardConfettiCreate(Point3d*, s16, f32);
double atan2(double y, double x); double atan2(double y, double x);
void omVibrate(s16, s16, s16, s16);
f32 BoardModelMotionTimeGet(s16); f32 BoardModelMotionTimeGet(s16);
//DATA //DATA

View file

@ -14,7 +14,7 @@ Vec lbl_1_data_80[2] = {
void fn_1_AEC(void) { void fn_1_AEC(void) {
lbl_1_bss_1C = 0; lbl_1_bss_1C = 0;
lbl_1_bss_1E = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 15), &lbl_1_data_78, 0); lbl_1_bss_1E = BoardModelCreate(MAKE_DATA_NUM(DATADIR_W10, 15), lbl_1_data_78, 0);
BoardModelMotionStart(lbl_1_bss_1E, 1, 0x40000001); BoardModelMotionStart(lbl_1_bss_1E, 1, 0x40000001);
BoardTutorialHostSet(lbl_1_bss_1E); BoardTutorialHostSet(lbl_1_bss_1E);
BoardModelLayerSet(lbl_1_bss_1E, 6); BoardModelLayerSet(lbl_1_bss_1E, 6);

View file

@ -4,6 +4,7 @@
#include "game/data.h" #include "game/data.h"
#include "game/flag.h" #include "game/flag.h"
#include "game/object.h" #include "game/object.h"
#include "game/objsub.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
#include "board_unsplit.h" #include "board_unsplit.h"
#include "math.h" #include "math.h"
@ -35,7 +36,6 @@ static void CoinChgDisappear(omObjData*, coinChg*);
extern void BoardTutorialHookExec(s16, s32); extern void BoardTutorialHookExec(s16, s32);
extern void BoardCameraViewSet(s32); extern void BoardCameraViewSet(s32);
extern void omVibrate(s16, s16, s16, s16);
extern void BoardPlayerPosGet(s32, Vec*); extern void BoardPlayerPosGet(s32, Vec*);
extern void BoardModelPosGet(s16, Vec*); extern void BoardModelPosGet(s16, Vec*);
extern void BoardPlayerMotionEndWait(s32); extern void BoardPlayerMotionEndWait(s32);

1487
src/game/board/boo.c Executable file

File diff suppressed because it is too large Load diff

1902
src/game/board/item.c Executable file

File diff suppressed because it is too large Load diff

View file

@ -290,7 +290,7 @@ void BoardSaveInit(s32 board)
GWSystem.field31_bit4 = 0; GWSystem.field31_bit4 = 0;
GWSystem.unk_32 = 1; GWSystem.unk_32 = 1;
GWSystem.mg_next = 0; GWSystem.mg_next = 0;
GWSystem.mg_next_extra = 0; GWSystem.mg_next_type = 0;
GWSystem.unk_38 = 0; GWSystem.unk_38 = 0;
GWSystem.block_pos = 0; GWSystem.block_pos = 0;
memset(GWSystem.board_data, 0, 32); memset(GWSystem.board_data, 0, 32);
@ -334,13 +334,13 @@ void BoardSaveInit(s32 board)
} }
} }
void BoardStoryConfigSet(s32 mg_type, s32 diff_story) void BoardStoryConfigSet(s32 mg_list, s32 diff_story)
{ {
GWSystem.party = 0; GWSystem.party = 0;
GWSystem.team = 0; GWSystem.team = 0;
GWSystem.diff_story = diff_story; GWSystem.diff_story = diff_story;
GWSystem.bonus_star = 0; GWSystem.bonus_star = 0;
GWSystem.mg_type = mg_type; GWSystem.mg_list = mg_list;
GWPlayer[0].handicap = 0; GWPlayer[0].handicap = 0;
GWPlayer[1].handicap = 0; GWPlayer[1].handicap = 0;
GWPlayer[2].handicap = 0; GWPlayer[2].handicap = 0;
@ -358,13 +358,13 @@ void BoardStoryConfigSet(s32 mg_type, s32 diff_story)
_SetFlag(FLAG_ID_MAKE(1, 10)); _SetFlag(FLAG_ID_MAKE(1, 10));
} }
void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_type, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap) void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_list, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap)
{ {
GWSystem.party = 1; GWSystem.party = 1;
GWSystem.team = team; GWSystem.team = team;
GWSystem.diff_story = 0; GWSystem.diff_story = 0;
GWSystem.bonus_star = bonus_star; GWSystem.bonus_star = bonus_star;
GWSystem.mg_type = mg_type; GWSystem.mg_list = mg_list;
GWSystem.max_turn = max_turn; GWSystem.max_turn = max_turn;
memset(GWPlayer, 0, 4*sizeof(PlayerState)); memset(GWPlayer, 0, 4*sizeof(PlayerState));
GWPlayer[0].handicap = p1_handicap; GWPlayer[0].handicap = p1_handicap;
@ -617,11 +617,11 @@ static void CreateBoard(void)
GWSystem.mg_next = -1; GWSystem.mg_next = -1;
if(!GWGameStat.field10E_bit5) { if(!GWGameStat.field10E_bit5) {
s32 type_temp; s32 type_temp;
if(GWSystem.mg_type == 3) { if(GWSystem.mg_list == 3) {
GWSystem.mg_type = 0; GWSystem.mg_list = 0;
} }
if(GWMGTypeGet() == 2) { if(GWMGListGet() == 2) {
GWSystem.mg_type = 0; GWSystem.mg_list = 0;
} }
} }
if(GWSystem.mess_speed == 3) { if(GWSystem.mess_speed == 3) {
@ -2023,7 +2023,7 @@ void BoardLast5GfxInit(void)
} }
BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]); BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]);
HuSprGrpMemberSet(work->group, i, work->sprites[i]); HuSprGrpMemberSet(work->group, i, work->sprites[i]);
HuSprAttrSet(work->group, i, SPIRTE_ATTR_BILINEAR); HuSprAttrSet(work->group, i, SPRITE_ATTR_BILINEAR);
HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]); HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]);
} }
if(!work->is_last) { if(!work->is_last) {

View file

@ -1,7 +1,5 @@
#include "game/board/player.h" #include "game/board/player.h"
#include "game/objsub.h"
//// #include "game/objsub.h"
extern void omVibrate(s16, s16, s16, s16);
//// #include "game/board/ui.h" //// #include "game/board/ui.h"
extern void BoardStatusHammerShowSet(s32, s32); extern void BoardStatusHammerShowSet(s32, s32);
extern void BoardYourTurnExec(s32); extern void BoardYourTurnExec(s32);

View file

@ -6,12 +6,11 @@
#include "game/hsfman.h" #include "game/hsfman.h"
#include "game/data.h" #include "game/data.h"
#include "game/sprite.h" #include "game/sprite.h"
#include "game/objsub.h"
#include "math.h" #include "math.h"
#include "string.h" #include "string.h"
extern void omVibrate(s16, s16, s16, s16);
extern s16 BoardStarHostMdlGet(void); extern s16 BoardStarHostMdlGet(void);
extern void BoardModelPosSetV(s16 model, Vec *pos); extern void BoardModelPosSetV(s16 model, Vec *pos);

View file

@ -9,13 +9,15 @@
#include "game/pad.h" #include "game/pad.h"
#include "game/process.h" #include "game/process.h"
#include "game/window.h" #include "game/window.h"
#include "game/board/item.h"
#include "game/board/main.h" #include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h" #include "game/board/player.h"
#include "board_unsplit.h" #include "board_unsplit.h"
#include "math.h" #include "math.h"
#define ABS(x) ((x < 0) ? -x : x) #define ABS(x) (((x) < 0) ? -(x) : (x))
typedef struct { typedef struct {
/* 0x00 */ struct { /* 0x00 */ struct {
@ -91,18 +93,10 @@ typedef struct {
} UnkUiWork04; } UnkUiWork04;
void BoardPlayerSparkSet(s32); void BoardPlayerSparkSet(s32);
s32 BoardItemDoneCheck(void);
void BoardItemStart(s32, s32);
void BoardTutorialHookExec(s16, s32); void BoardTutorialHookExec(s16, s32);
s16 BoardBowserSuitModelGet(void);
void BoardBowserSuitMotionCreate(void); void BoardBowserSuitMotionCreate(void);
s16 BoardBowserSuitPlayerModelGet(void); s16 BoardBowserSuitPlayerModelGet(void);
void CharModelLayerSetAll(s32); void CharModelLayerSetAll(s32);
void BoardItemBagItemSet(void*);
float BoardModelMotionTimeGet(s16);
void BoardModelMotionStartEndSet(s16, s16, s16);
void BoardModelMotionTimeSet(s16, float);
void BoardModelPosGet(s16, Vec*);
s32 BoardComTutorialItemGet(s32); s32 BoardComTutorialItemGet(s32);
void BoardTutorialHostHide(s32); void BoardTutorialHostHide(s32);
@ -1201,7 +1195,7 @@ void BoardMakeRandomItem(void) {
itemRandTbl[i] = temp_r3; itemRandTbl[i] = temp_r3;
} }
} }
BoardItemBagItemSet(&itemRandTbl); BoardItemBagItemSet(itemRandTbl);
} }
static inline void TeamItemPosSetInlineFunc01(s32 arg0, s32 arg1, Vec *arg2) { static inline void TeamItemPosSetInlineFunc01(s32 arg0, s32 arg1, Vec *arg2) {

View file

@ -4,6 +4,7 @@
#include "game/wipe.h" #include "game/wipe.h"
#include "game/gamework_data.h" #include "game/gamework_data.h"
#include "game/hsfex.h" #include "game/hsfex.h"
#include "game/objsub.h"
#include "board_unsplit.h" #include "board_unsplit.h"
#include "math.h" #include "math.h"
@ -14,7 +15,6 @@ static void WarpFall(s32);
static void WarpImpact(s32); static void WarpImpact(s32);
extern void omVibrate(s16, s16, s16, s16);
extern void BoardCharWheelInit(s32, s32); extern void BoardCharWheelInit(s32, s32);
extern void BoardCharWheelSpeedSet(f32); extern void BoardCharWheelSpeedSet(f32);
extern void BoardCharWheelWait(void); extern void BoardCharWheelWait(void);

View file

@ -1,4 +1,4 @@
#include "game/gamework_data.h" #include "game/fault.h"
#include "stdarg.h" #include "stdarg.h"
#include "stdio.h" #include "stdio.h"
@ -9,11 +9,10 @@ typedef struct rgb_color {
} RGBColor; } RGBColor;
typedef struct xfb_geometry { typedef struct xfb_geometry {
void* unk0[4]; void* frame_buffers[4];
u16 unk4; u16 width;
u16 unk5; u16 height;
u16 unk6; u16 mode;
u16 unk7;
} XFBGeometry; } XFBGeometry;
static RGBColor XFB_Colors[5] = { static RGBColor XFB_Colors[5] = {
@ -28,23 +27,23 @@ static RGBColor XFB_Colors[5] = {
XFBGeometry XFB_Geometry; XFBGeometry XFB_Geometry;
static s32 (*XFB_putc)(u8 arg0, s32 arg1, s32 arg2); static s32 (*XFB_putc)(u8 c, s32 x, s32 y);
static RGBColor Draw_Color; static RGBColor Draw_Color;
static s32 x_start; static s32 x_start;
static s32 y_start; static s32 y_start;
const char* lbl_801D34A0 = "OSPanic encounterd:"; static s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2);
static s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2);
s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2); static s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2);
s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2); static s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2);
s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2); static void XFB_WriteBackCache(void);
s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2); static void XFB_CR(s32 arg0, s32* arg1, s32* arg2);
void XFB_WriteBackCache(void);
void XFB_CR(s32 arg0, s32* arg1, s32* arg2);
void OSPanic(const char* file, int line, const char* msg, ...) { void OSPanic(const char* file, int line, const char* msg, ...) {
static char* titleMes = "OSPanic encounterd:";
va_list sp78; va_list sp78;
s32 sp74; s32 sp74;
s32 sp70; s32 sp70;
@ -53,7 +52,7 @@ void OSPanic(const char* file, int line, const char* msg, ...) {
sp74 = x_start = 0x10; sp74 = x_start = 0x10;
sp70 = y_start = 0x20; sp70 = y_start = 0x20;
puts = XFB_puts((s8*)lbl_801D34A0, sp74, sp70); puts = XFB_puts((s8*)titleMes, sp74, sp70);
XFB_CR(puts + 1, &sp74, &sp70); XFB_CR(puts + 1, &sp74, &sp70);
sprintf(sp84, "%s:%d", file, line); sprintf(sp84, "%s:%d", file, line);
puts = XFB_puts((s8*)sp84, sp74, sp70); puts = XFB_puts((s8*)sp84, sp74, sp70);
@ -71,77 +70,74 @@ void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode) {
s32 i; s32 i;
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
XFB_Geometry.unk0[i] = 0; XFB_Geometry.frame_buffers[i] = 0;
} }
XFB_Geometry.unk4 = 0; XFB_Geometry.width = 0;
XFB_Geometry.unk5 = 0; XFB_Geometry.height = 0;
XFB_Geometry.unk6 = 0; XFB_Geometry.mode = 0;
XFB_putc = XFB_putcProgressive; XFB_putc = XFB_putcProgressive;
Draw_Color = XFB_Colors[1]; Draw_Color = XFB_Colors[1];
if (mode) { if (mode) {
XFB_Geometry.unk4 = ((u16)mode->fbWidth + 0xF) & 0xFFFFFFF0; XFB_Geometry.width = ((u16)mode->fbWidth + 0xF) & 0xFFFFFFF0;
XFB_Geometry.unk5 = mode->xfbHeight; XFB_Geometry.height = mode->xfbHeight;
XFB_Geometry.unk6 = mode->xFBmode; XFB_Geometry.mode = mode->xFBmode;
if (XFB_Geometry.unk6 == 0) { if (XFB_Geometry.mode == 0) {
XFB_putc = XFB_putcInterlace; XFB_putc = XFB_putcInterlace;
return; } else {
XFB_putc = XFB_putcProgressive;
} }
XFB_putc = XFB_putcProgressive;
} }
} }
void HuFaultSetXfbAddress(s16 index, void* value) { void HuFaultSetXfbAddress(s16 index, void* value) {
if (index >= 0 && index < 4) { if (index >= 0 && index < 4) {
XFB_Geometry.unk0[index] = value; XFB_Geometry.frame_buffers[index] = value;
} }
} }
void XFB_WriteBackCache(void) { static void XFB_WriteBackCache(void) {
s32 var_r31; s32 i;
void* temp_r30; void* frame_buffer;
u32 temp_r29; u32 temp_r29;
temp_r29 = XFB_Geometry.unk4 * 2 * XFB_Geometry.unk5; temp_r29 = XFB_Geometry.width * 2 * XFB_Geometry.height;
if (temp_r29 != 0) { if (temp_r29 != 0) {
var_r31 = 0; for (i = 0; i < 4; i += 1) {
frame_buffer = XFB_Geometry.frame_buffers[i];
while (var_r31 < 4) {
temp_r30 = XFB_Geometry.unk0[var_r31]; if (frame_buffer) {
if (temp_r30) { DCStoreRange(frame_buffer, temp_r29);
DCStoreRange(temp_r30, temp_r29);
} }
var_r31 += 1;
} }
} }
} }
static void XFB_CR(s32 arg0, s32* x_ptr, s32* y_ptr) {
void XFB_CR(s32 arg0, s32* arg1, s32* arg2) {
s32 temp_r30; s32 temp_r30;
s32 var_r31; s32 y;
s32 var_r29; s32 x;
var_r29 = *arg1; x = *x_ptr;
var_r31 = *arg2; y = *y_ptr;
var_r29 = x_start; x = x_start;
var_r31 += 0x12; y += 0x12;
temp_r30 = arg0 & 7; temp_r30 = arg0 & 7;
if (temp_r30 != 0) { if (temp_r30 != 0) {
var_r31 += temp_r30 * 0x12; y += temp_r30 * 0x12;
} }
*arg1 = var_r29; *x_ptr = x;
*arg2 = var_r31; *y_ptr = y;
} }
s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2) { static s32 XFB_puts(s8* message, s32 x, s32 y) {
s32 i; s32 i;
s32 temp_r31; s32 temp_r31;
s8 current_char; s8 current_char;
@ -149,24 +145,24 @@ s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2) {
i = 0; i = 0;
do { do {
current_char = *arg0++; current_char = *message++;
if (current_char == '\n') { if (current_char == '\n') {
XFB_CR(0, &arg1, &arg2); XFB_CR(0, &x, &y);
i += 1; i += 1;
} else { } else {
temp_r31 = XFB_putcS(current_char, arg1, arg2); temp_r31 = XFB_putcS(current_char, x, y);
if (temp_r31 >= 0) { if (temp_r31 >= 0) {
if (temp_r31 != 0) { if (temp_r31 != 0) {
temp_r31 -= 1; temp_r31 -= 1;
XFB_CR(temp_r31, &arg1, &arg2); XFB_CR(temp_r31, &x, &y);
i += temp_r31 + 1; i += temp_r31 + 1;
} }
arg1 += 0x10; x += 0x10;
} else { } else {
break; break;
} }
@ -176,7 +172,7 @@ s32 XFB_puts(s8* arg0, s32 arg1, s32 arg2) {
return i; return i;
} }
s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2) { static s32 XFB_putcS(u8 c, s32 x, s32 y) {
RGBColor sp8; RGBColor sp8;
s32 var_r26; s32 var_r26;
s32 var_r25; s32 var_r25;
@ -187,91 +183,76 @@ s32 XFB_putcS(u8 arg0, s32 arg1, s32 arg2) {
var_r27 = 0; var_r27 = 0;
sp8 = Draw_Color; sp8 = Draw_Color;
if (arg1 + 0x11 >= XFB_Geometry.unk4) { if (x + 0x11 >= XFB_Geometry.width) {
var_r26 = arg1; XFB_CR(0, &x, &y);
var_r29 = arg2;
if (0 != 0) {
var_r29 += 0 * 0x12;
}
var_r26 = x_start;
var_r29 += 0x12;
var_r25 = 0;
if (var_r25 != 0) {
var_r29 += var_r25 * 0x12;
}
arg1 = var_r26;
arg2 = var_r29;
var_r27++; var_r27++;
} }
Draw_Color = *XFB_Colors; Draw_Color = XFB_Colors[0];
XFB_putc(arg0, arg1, arg2 - 2); XFB_putc(c, x, y - 2);
XFB_putc(arg0, arg1, arg2 + 2); XFB_putc(c, x, y + 2);
XFB_putc(arg0, arg1 - 1, arg2); XFB_putc(c, x - 1, y);
XFB_putc(arg0, arg1 + 1, arg2); XFB_putc(c, x + 1, y);
Draw_Color = sp8; Draw_Color = sp8;
XFB_putc(arg0, arg1, arg2); XFB_putc(c, x, y);
return var_r27; return var_r27;
} }
s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2) { static s32 XFB_putcProgressive(u8 c, s32 x, s32 y) {
s32 var_r21; s32 result;
s32 temp_r20; s32 temp_r20;
u8 spA; u8 red;
u8 sp9; u8 blue;
u8 sp8; u8 green;
s32 var_r25; s32 i;
s32 var_r24; s32 j;
s32 var_r23; s32 var_r23;
u8* var_r29; u8* var_r29;
s32 var_r28; s32 k;
s32 var_r27; s32 var_r27;
s32 var_r26; s32 var_r26;
u32 temp_r31; u32 temp_r31;
u32 var_r30; u32 var_r30;
u32 var_r22; u32 var_r22;
u8* var_r31; u8* frame_buffer;
var_r21 = 0; result = 0;
if (arg0 == 0) { if (c == 0) {
return -1; return -1;
} }
if (arg1 + 0x10 >= XFB_Geometry.unk4) { if (x + 0x10 >= XFB_Geometry.width) {
arg2 += 0x12; y += 0x12;
arg1 = x_start; x = x_start;
var_r21 = 1; result = 1;
} }
if (arg2 + 0x10 >= XFB_Geometry.unk5) { if (y + 0x10 >= XFB_Geometry.height) {
return -1; return -1;
} }
spA = Draw_Color.r; red = Draw_Color.r;
sp8 = Draw_Color.g; green = Draw_Color.g;
sp9 = Draw_Color.b; blue = Draw_Color.b;
temp_r20 = XFB_Geometry.unk4 * 2; temp_r20 = XFB_Geometry.width * 2;
var_r23 = (arg1 & 0xFFFE) * 2 + arg2 * temp_r20; var_r23 = (x & 0xFFFE) * 2 + y * temp_r20;
var_r29 = Ascii8x8_1bpp + (arg0 * 8); var_r29 = Ascii8x8_1bpp + (c * 8);
var_r25 = 8;
while (var_r25 != 0) { i = 8;
var_r24 = 2;
while (i != 0) {
j = 2;
while (var_r24 != 0) { while (j != 0) {
var_r28 = 0; for (k = 0; k < 4; k ++) {
frame_buffer = XFB_Geometry.frame_buffers[k];
while (var_r28 < 4) {
var_r31 = XFB_Geometry.unk0[var_r28];
if (var_r31 != 0) { if (frame_buffer != 0) {
var_r31 += var_r23; frame_buffer += var_r23;
var_r22 = *var_r29; var_r22 = *var_r29;
var_r30 = 0; var_r30 = 0;
@ -284,99 +265,101 @@ s32 XFB_putcProgressive(u8 arg0, s32 arg1, s32 arg2) {
var_r22 >>= 1; var_r22 >>= 1;
} }
var_r27 = 8; var_r27 = 8;
if ((s32) (arg1 & 1) != 0) { if ((s32) (x & 1) != 0) {
var_r30 *= 2; var_r30 *= 2;
var_r27 = 0xA; var_r27 = 0xA;
} }
while (var_r27 != 0) { while (var_r27 != 0) {
if ((u32) (var_r30 & 3) != 0) { if ((u32) (var_r30 & 3) != 0) {
var_r31[1] = sp9; frame_buffer[1] = blue;
var_r31[3] = sp8; frame_buffer[3] = green;
if ((u32) (var_r30 & 1) != 0) { if ((u32) (var_r30 & 1) != 0) {
var_r31[0] = spA; frame_buffer[0] = red;
} }
if ((u32) (var_r30 & 2) != 0) { if ((u32) (var_r30 & 2) != 0) {
var_r31[2] = spA; frame_buffer[2] = red;
} }
} }
var_r27 -= 1; var_r27 -= 1;
var_r31 += 4; frame_buffer += 4;
var_r30 = var_r30 >> 2; var_r30 = var_r30 >> 2;
} }
} }
var_r28 += 1;
} }
var_r24 -= 1;
j -= 1;
var_r23 += temp_r20; var_r23 += temp_r20;
} }
var_r25 -= 1; i -= 1;
var_r29 += 1; var_r29 += 1;
} }
return var_r21;
return result;
} }
s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2) { static s32 XFB_putcInterlace(u8 c, s32 x, s32 y) {
u8 var_r24; u8 red;
u8 var_r22; u8 blue;
u8 var_r21; u8 green;
s32 temp_r23; s32 temp_r23;
s32 var_r26; s32 i;
s32 var_r25; s32 var_r25;
u8* var_r28; u8* var_r28;
s32 var_r27; s32 j;
s16 var_r29; s16 var_r29;
s32 var_r30; s32 var_r30;
u8* var_r31; u8* var_r31;
if (arg0 == 0) { if (c == 0) {
return -1; return -1;
} }
if (arg1 + 8 >= XFB_Geometry.unk4 || arg2 + 8 >= XFB_Geometry.unk5) { if (x + 8 >= XFB_Geometry.width || y + 8 >= XFB_Geometry.height) {
return -1; return -1;
} }
var_r24 = Draw_Color.r; red = Draw_Color.r;
var_r21 = Draw_Color.g; green = Draw_Color.g;
var_r22 = Draw_Color.b; blue = Draw_Color.b;
temp_r23 = XFB_Geometry.unk4 * 2; temp_r23 = XFB_Geometry.width * 2;
var_r25 = ((arg1 & 0xFFFE) * 2) + ((arg2 >> 1) * temp_r23); var_r25 = ((x & 0xFFFE) * 2) + ((y >> 1) * temp_r23);
var_r28 = Ascii8x8_1bpp + arg0 * 8; var_r28 = Ascii8x8_1bpp + c * 8;
var_r26 = 8;
while (var_r26) { i = 8;
for (var_r27 = 0; var_r27 < 4; var_r27 += 2) {
var_r30 = var_r27; while (i != 0) {
for (j = 0; j < 4; j += 2) {
var_r30 = j;
if ((s32) (arg2 & 1) != 0) { if ((s32) (y & 1) != 0) {
var_r30 += 1; var_r30 += 1;
} }
var_r31 = XFB_Geometry.unk0[var_r30]; var_r31 = XFB_Geometry.frame_buffers[var_r30];
if (var_r31) { if (var_r31) {
var_r31 = var_r31 + var_r25; var_r31 = var_r31 + var_r25;
var_r29 = *var_r28; var_r29 = *var_r28;
var_r30 = 4; var_r30 = 4;
if (arg1 & 1) { if (x & 1) {
var_r29 = (s16)var_r29 * 2; var_r29 = (s16)var_r29 * 2;
var_r30 = 5; var_r30 = 5;
} }
while (var_r30) { while (var_r30) {
if (var_r29 & 3) { if (var_r29 & 3) {
var_r31[1] = var_r22; var_r31[1] = blue;
var_r31[3] = var_r21; var_r31[3] = green;
if (var_r29 & 1) { if (var_r29 & 1) {
var_r31[0] = var_r24; var_r31[0] = red;
} }
if (var_r29 & 2) { if (var_r29 & 2) {
var_r31[2] = var_r24; var_r31[2] = red;
} }
} }
@ -387,8 +370,8 @@ s32 XFB_putcInterlace(u8 arg0, s32 arg1, s32 arg2) {
} }
} }
var_r26 -= 1; i -= 1;
arg2 += 1; y += 1;
var_r28 += 1; var_r28 += 1;
var_r25 += temp_r23; var_r25 += temp_r23;
} }

View file

@ -6,7 +6,7 @@
#include "math.h" #include "math.h"
#include "string.h" #include "string.h"
#define ABS(x) ((x < 0) ? -x : x) #define ABS(x) (((x) < 0) ? -(x) : (x))
typedef struct { typedef struct {
/* 0x00 */ ModelData *unk00; /* 0x00 */ ModelData *unk00;

View file

@ -2063,10 +2063,10 @@ void Hu3DProjectionKill(s16 arg0) {
Hu3DProjection[arg0].unk_04 = NULL; Hu3DProjection[arg0].unk_04 = NULL;
} }
void Hu3DProjectionPosSet(s16 arg0, Vec arg1, Vec arg2, Vec arg3) { void Hu3DProjectionPosSet(s16 arg0, Vec* arg1, Vec* arg2, Vec* arg3) {
Hu3DProjection[arg0].unk_14 = arg1; Hu3DProjection[arg0].unk_14 = *arg1;
Hu3DProjection[arg0].unk_20 = arg3; Hu3DProjection[arg0].unk_20 = *arg3;
Hu3DProjection[arg0].unk_2C = arg2; Hu3DProjection[arg0].unk_2C = *arg2;
} }
void Hu3DProjectionTPLvlSet(s16 arg0, f32 arg8) { void Hu3DProjectionTPLvlSet(s16 arg0, f32 arg8) {

View file

@ -1,4 +1,5 @@
#include "game/init.h" #include "game/init.h"
#include "game/fault.h"
#include "dolphin/os.h" #include "dolphin/os.h"
#include "dolphin/gx.h" #include "dolphin/gx.h"
#include "dolphin/dvd.h" #include "dolphin/dvd.h"
@ -14,8 +15,6 @@ extern void HuAudInit();
extern void HuCardInit(); extern void HuCardInit();
extern void HuARInit(); extern void HuARInit();
extern u32 frand(); extern u32 frand();
extern void HuFaultInitXfbDirectDraw(GXRenderModeObj *mode);
extern void HuFaultSetXfbAddress(int fb, void *addr);
static GXRenderModeObj rmodeobj; static GXRenderModeObj rmodeobj;

View file

@ -15,35 +15,34 @@
extern FileListEntry _ovltbl[]; extern FileListEntry _ovltbl[];
u32 GlobalCounter; u32 GlobalCounter;
u32 lbl_801D3A50; static u32 vcheck;
u32 lbl_801D3A4C; static u32 vmiss;
u32 lbl_801D3A48; static u32 vstall;
u32 lbl_801D3A44; static u32 top_pixels_in;
u32 lbl_801D3A40; static u32 top_pixels_out;
u32 lbl_801D3A3C; static u32 bot_pixels_in;
u32 lbl_801D3A38; static u32 bot_pixels_out;
u32 lbl_801D3A34; static u32 clr_pixels_in;
u32 lbl_801D3A30; static u32 total_copy_clks;
u32 lbl_801D3A2C; static u32 cp_req;
u32 lbl_801D3A28; static u32 tc_req;
u32 lbl_801D3A24; static u32 cpu_rd_req;
u32 lbl_801D3A20; static u32 cpu_wr_req;
u32 lbl_801D3A1C; static u32 dsp_req;
u32 lbl_801D3A18; static u32 io_req;
u32 lbl_801D3A14; static u32 vi_req;
u32 lbl_801D3A10; static u32 pe_req;
u32 lbl_801D3A0C; static u32 rf_req;
u32 lbl_801D3A08; static u32 fi_req;
s32 HuDvdErrWait; s32 HuDvdErrWait;
s32 SystemInitF; s32 SystemInitF;
void main(void) { void main(void)
u32 sp14; {
u32 sp10; u32 met0;
s32 spC; u32 met1;
s32 sp8; s16 i;
s16 var_r31; s32 retrace;
s32 temp_r30;
HuDvdErrWait = 0; HuDvdErrWait = 0;
SystemInitF = 0; SystemInitF = 0;
@ -58,14 +57,14 @@ void main(void) {
HuDataInit(); HuDataInit();
HuPerfInit(); HuPerfInit();
HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF); HuPerfCreate("USR0", 0xFF, 0xFF, 0xFF, 0xFF);
HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF); HuPerfCreate("USR1", 0, 0xFF, 0xFF, 0xFF);
WipeInit(RenderMode); WipeInit(RenderMode);
for (var_r31 = 0; var_r31 < 4; var_r31++) { for (i = 0; i < 4; i++) {
GWPlayerCfg[var_r31].character = -1; GWPlayerCfg[i].character = -1;
} }
omMasterInit(0, _ovltbl, 0x63, 1); omMasterInit(0, _ovltbl, OVL_COUNT, OVL_BOOT);
VIWaitForRetrace(); VIWaitForRetrace();
if (VIGetNextField() == 0) { if (VIGetNextField() == 0) {
@ -73,7 +72,7 @@ void main(void) {
VIWaitForRetrace(); VIWaitForRetrace();
} }
while (1) { while (1) {
temp_r30 = VIGetRetraceCount(); retrace = VIGetRetraceCount();
if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) { if (HuSoftResetButtonCheck() != 0 || HuDvdErrWait != 0) {
continue; continue;
} }
@ -100,28 +99,31 @@ void main(void) {
pfDrawFonts(); pfDrawFonts();
HuPerfEnd(1); HuPerfEnd(1);
msmMusFdoutEnd(); msmMusFdoutEnd();
HuSysDoneRender(temp_r30); HuSysDoneRender(retrace);
GXReadGPMetric(&sp14, &sp10); GXReadGPMetric(&met0, &met1);
GXReadVCacheMetric(&lbl_801D3A50, &lbl_801D3A4C, &lbl_801D3A48); GXReadVCacheMetric(&vcheck, &vmiss, &vstall);
GXReadPixMetric(&lbl_801D3A44, &lbl_801D3A40, &lbl_801D3A3C, &lbl_801D3A38, &lbl_801D3A34, &lbl_801D3A30); GXReadPixMetric(&top_pixels_in, &top_pixels_out, &bot_pixels_in, &bot_pixels_out, &clr_pixels_in, &total_copy_clks);
GXReadMemMetric(&lbl_801D3A2C, &lbl_801D3A28, &lbl_801D3A24, &lbl_801D3A20, &lbl_801D3A1C, &lbl_801D3A18, &lbl_801D3A14, &lbl_801D3A10, &lbl_801D3A0C, &lbl_801D3A08); GXReadMemMetric(&cp_req, &tc_req, &cpu_rd_req, &cpu_wr_req, &dsp_req, &io_req, &vi_req, &pe_req, &rf_req, &fi_req);
HuPerfEnd(2); HuPerfEnd(2);
GlobalCounter++; GlobalCounter++;
} }
} }
void HuSysVWaitSet(s16 arg0) { void HuSysVWaitSet(s16 vcount)
minimumVcount = arg0; {
minimumVcountf = arg0; minimumVcount = vcount;
minimumVcountf = vcount;
} }
s16 HuSysVWaitGet(void) { s16 HuSysVWaitGet(s16 param)
{
return (s16) minimumVcount; return (s16) minimumVcount;
} }
s32 rnd_seed = 0x0000D9ED; s32 rnd_seed = 0x0000D9ED;
s32 rand8(void) { s32 rand8(void)
{
rnd_seed = (rnd_seed * 0x41C64E6D) + 0x3039; rnd_seed = (rnd_seed * 0x41C64E6D) + 0x3039;
return (u8)(((rnd_seed + 1) >> 0x10) & 0xFF); return (u8)(((rnd_seed + 1) >> 16) & 0xFF);
} }

1504
src/game/minigame_seq.c Normal file

File diff suppressed because it is too large Load diff

1221
src/game/objsub.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -675,7 +675,7 @@ void HuSprSprBGSet(short sprite, AnimData *bg, short bg_bank)
sprite_ptr->bg = bg; sprite_ptr->bg = bg;
sprite_ptr->bg_bank = bg_bank; sprite_ptr->bg_bank = bg_bank;
sprite_ptr->wrap_t = sprite_ptr->wrap_s = GX_REPEAT; sprite_ptr->wrap_t = sprite_ptr->wrap_s = GX_REPEAT;
sprite_ptr->attr &= ~SPIRTE_ATTR_BILINEAR; sprite_ptr->attr &= ~SPRITE_ATTR_BILINEAR;
} }
void AnimDebug(AnimData *anim) void AnimDebug(AnimData *anim)

View file

@ -123,7 +123,7 @@ void HuSprDisp(SpriteData *sprite)
continue; continue;
} }
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
HuSprTexLoad(anim, layer->bmpNo, 0, sprite->wrap_s, sprite->wrap_t, (sprite->attr & SPIRTE_ATTR_BILINEAR) ? GX_LINEAR : GX_NEAR); HuSprTexLoad(anim, layer->bmpNo, 0, sprite->wrap_s, sprite->wrap_t, (sprite->attr & SPRITE_ATTR_BILINEAR) ? GX_LINEAR : GX_NEAR);
if(layer->alpha != 255 || color_sum != 255*4) { if(layer->alpha != 255 || color_sum != 255*4) {
color.a = (u16)(sprite->a*layer->alpha) >> 8; color.a = (u16)(sprite->a*layer->alpha) >> 8;
GXSetTevColor(GX_TEVSTAGE1, color); GXSetTevColor(GX_TEVSTAGE1, color);