From 7965f4a36b6d5cb7366877069df5dc72b8493080 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 3 Jan 2021 17:20:14 +1000 Subject: [PATCH] Decompile func0f182bf4 --- src/game/mplayer/scenarios.c | 78 ++++++++++++------------------ src/gvars/gvars.c | 1 - src/include/types.h | 92 ++++++------------------------------ 3 files changed, 44 insertions(+), 127 deletions(-) diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index 52efaba2e..cc3eb49e0 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -2645,53 +2645,35 @@ glabel func0f182ba4 /* f182bf0: 00000000 */ nop ); -GLOBAL_ASM( -glabel func0f182bf4 -/* f182bf4: 3c04800b */ lui $a0,%hi(g_ScenarioData) -/* f182bf8: 2484c110 */ addiu $a0,$a0,%lo(g_ScenarioData) -/* f182bfc: 2405ffff */ addiu $a1,$zero,-1 -/* f182c00: 3c03800b */ lui $v1,%hi(g_ScenarioData) -/* f182c04: 3c02800b */ lui $v0,%hi(g_ScenarioData+0x30) -/* f182c08: a4800000 */ sh $zero,0x0($a0) -/* f182c0c: a4800002 */ sh $zero,0x2($a0) -/* f182c10: ac800138 */ sw $zero,0x138($a0) -/* f182c14: a48500d0 */ sh $a1,0xd0($a0) -/* f182c18: a48500d2 */ sh $a1,0xd2($a0) -/* f182c1c: ac8500d4 */ sw $a1,0xd4($a0) -/* f182c20: ac800140 */ sw $zero,0x140($a0) -/* f182c24: 2442c140 */ addiu $v0,$v0,%lo(g_ScenarioData+0x30) -/* f182c28: 2463c110 */ addiu $v1,$v1,%lo(g_ScenarioData) -.L0f182c2c: -/* f182c2c: 24630004 */ addiu $v1,$v1,0x4 -/* f182c30: 0062082b */ sltu $at,$v1,$v0 -/* f182c34: ac6000d4 */ sw $zero,0xd4($v1) -/* f182c38: 1420fffc */ bnez $at,.L0f182c2c -/* f182c3c: ac600104 */ sw $zero,0x104($v1) -/* f182c40: 3c03800b */ lui $v1,%hi(g_ScenarioData) -/* f182c44: 3c02800b */ lui $v0,%hi(g_ScenarioData+0x78) -/* f182c48: 2442c188 */ addiu $v0,$v0,%lo(g_ScenarioData+0x78) -/* f182c4c: 2463c110 */ addiu $v1,$v1,%lo(g_ScenarioData) -.L0f182c50: -/* f182c50: 24630002 */ addiu $v1,$v1,0x2 -/* f182c54: 0062082b */ sltu $at,$v1,$v0 -/* f182c58: 1420fffd */ bnez $at,.L0f182c50 -/* f182c5c: a4650002 */ sh $a1,0x2($v1) -/* f182c60: 3c03800b */ lui $v1,%hi(g_ScenarioData) -/* f182c64: 3c04800b */ lui $a0,%hi(g_ScenarioData+0xc) -/* f182c68: 2484c11c */ addiu $a0,$a0,%lo(g_ScenarioData+0xc) -/* f182c6c: 2463c110 */ addiu $v1,$v1,%lo(g_ScenarioData) -/* f182c70: 240200ff */ addiu $v0,$zero,0xff -.L0f182c74: -/* f182c74: 2463000c */ addiu $v1,$v1,0xc -/* f182c78: ac600070 */ sw $zero,0x70($v1) -/* f182c7c: ac600074 */ sw $zero,0x74($v1) -/* f182c80: a4650078 */ sh $a1,0x78($v1) -/* f182c84: a062007a */ sb $v0,0x7a($v1) -/* f182c88: 1464fffa */ bne $v1,$a0,.L0f182c74 -/* f182c8c: a062007b */ sb $v0,0x7b($v1) -/* f182c90: 03e00008 */ jr $ra -/* f182c94: 00000000 */ nop -); +void func0f182bf4(void) +{ + s32 i; + + g_ScenarioData.htm.unk000 = 0; + g_ScenarioData.htm.unk002 = 0; + g_ScenarioData.htm.unk138 = 0; + g_ScenarioData.htm.unk0d0 = -1; + g_ScenarioData.htm.unk0d2 = -1; + g_ScenarioData.htm.unk0d4 = -1; + g_ScenarioData.htm.unk140 = 0; + + for (i = 0; i < ARRAYCOUNT(g_ScenarioData.htm.unk0d8); i++) { + g_ScenarioData.htm.unk0d8[i] = 0; + g_ScenarioData.htm.unk108[i] = 0; + } + + for (i = 0; i < ARRAYCOUNT(g_ScenarioData.htm.unk004); i++) { + g_ScenarioData.htm.unk004[i] = -1; + } + + for (i = 0; i < 1; i++) { + g_ScenarioData.htm.unk07c[i].unk00 = 0; + g_ScenarioData.htm.unk07c[i].prop = NULL; + g_ScenarioData.htm.unk07c[i].unk08 = -1; + g_ScenarioData.htm.unk07c[i].unk0a = 0xff; + g_ScenarioData.htm.unk07c[i].unk0b = 0xff; + } +} GLOBAL_ASM( glabel func0f182c98 @@ -4044,7 +4026,7 @@ bool scenarioHtmHighlight(struct prop *prop, u32 *colour) s32 i; for (i = 0; i < 1; i++) { - if (g_ScenarioData.htm.unk080[i].prop == prop) { + if (g_ScenarioData.htm.unk07c[i].prop == prop) { highlight = true; break; } diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index bd04f6ac1..0e5c2b74f 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16959,7 +16959,6 @@ u32 var800ac0f8[4] = {0}; u32 var800ac108 = 0; u32 var800ac10c = 0; struct scenariodata g_ScenarioData = {0}; -u32 var800ac250 = 0; u32 var800ac254 = 0; u32 var800ac258 = 0; u32 var800ac25c = 0; diff --git a/src/include/types.h b/src/include/types.h index edf455254..e1ad22596 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4560,90 +4560,26 @@ struct scenariodata_htb { }; struct htmthing { + u32 unk00; struct prop *prop; - u32 unk04; - u32 unk08; + s16 unk08; + u8 unk0a; + u8 unk0b; }; struct scenariodata_htm { - /*0x800ac110*/ u32 unk000; - /*0x800ac114*/ u32 unk004; - /*0x800ac118*/ u32 unk008; - /*0x800ac11c*/ u32 unk00c; - /*0x800ac120*/ u32 unk010; - /*0x800ac124*/ u32 unk014; - /*0x800ac128*/ u32 unk018; - /*0x800ac12c*/ u32 unk01c; - /*0x800ac130*/ u32 unk020; - /*0x800ac134*/ u32 unk024; - /*0x800ac138*/ u32 unk028; - /*0x800ac13c*/ u32 unk02c; - /*0x800ac140*/ u32 unk030; - /*0x800ac144*/ u32 unk034; - /*0x800ac148*/ u32 unk038; - /*0x800ac14c*/ u32 unk03c; - /*0x800ac150*/ u32 unk040; - /*0x800ac154*/ u32 unk044; - /*0x800ac158*/ u32 unk048; - /*0x800ac15c*/ u32 unk04c; - /*0x800ac160*/ u32 unk050; - /*0x800ac164*/ u32 unk054; - /*0x800ac168*/ s32 unk058; - /*0x800ac16c*/ s32 unk05c; - /*0x800ac170*/ s32 unk060; - /*0x800ac174*/ s32 unk064; - /*0x800ac178*/ u32 unk068; - /*0x800ac17c*/ u32 unk06c; - /*0x800ac180*/ u32 unk070; - /*0x800ac184*/ u32 unk074; - /*0x800ac188*/ u32 unk078; - /*0x800ac18c*/ u32 unk07c; - /*0x800ac190*/ struct htmthing unk080[1]; - /*0x800ac19c*/ u32 unk08c; - /*0x800ac1a0*/ u32 unk090; - /*0x800ac1a4*/ u32 unk094; - /*0x800ac1a8*/ u32 unk098; - /*0x800ac1ac*/ u32 unk09c; - /*0x800ac1b0*/ u32 unk0a0; - /*0x800ac1b4*/ u32 unk0a4; - /*0x800ac1b8*/ u32 unk0a8; - /*0x800ac1bc*/ u32 unk0ac; - /*0x800ac1c0*/ u32 unk0b0; - /*0x800ac1c4*/ u32 unk0b4; - /*0x800ac1c8*/ u32 unk0b8; - /*0x800ac1cc*/ u32 unk0bc; - /*0x800ac1d0*/ u32 unk0c0; - /*0x800ac1d4*/ u32 unk0c4; - /*0x800ac1d8*/ u32 unk0c8; - /*0x800ac1dc*/ u32 unk0cc; - /*0x800ac1e0*/ u32 unk0d0; - /*0x800ac1e4*/ u32 unk0d4; - /*0x800ac1e8*/ u32 unk0d8[1]; - /*0x800ac1ec*/ u32 unk0dc; - /*0x800ac1f0*/ u32 unk0e0; - /*0x800ac1f4*/ u32 unk0e4; - /*0x800ac1f8*/ u32 unk0e8; - /*0x800ac1fc*/ u32 unk0ec; - /*0x800ac200*/ u32 unk0f0; - /*0x800ac204*/ u32 unk0f4; - /*0x800ac208*/ u32 unk0f8; - /*0x800ac20c*/ u32 unk0fc; - /*0x800ac210*/ u32 unk100; - /*0x800ac214*/ u32 unk104; - /*0x800ac218*/ u32 unk108; - /*0x800ac21c*/ u32 unk10c; - /*0x800ac220*/ u32 unk110; - /*0x800ac224*/ u32 unk114; - /*0x800ac228*/ u32 unk118; - /*0x800ac22c*/ u32 unk11c; - /*0x800ac230*/ u32 unk120; - /*0x800ac234*/ u32 unk124; - /*0x800ac238*/ u32 unk128; - /*0x800ac23c*/ u32 unk12c; - /*0x800ac240*/ u32 unk130; - /*0x800ac244*/ u32 unk134; + /*0x800ac110*/ u16 unk000; + /*0x800ac112*/ u16 unk002; + /*0x800ac114*/ s16 unk004[60]; + /*0x800ac18c*/ struct htmthing unk07c[7]; // only the first element is used? + /*0x800ac1e0*/ s16 unk0d0; + /*0x800ac1e2*/ s16 unk0d2; + /*0x800ac1e4*/ s32 unk0d4; + /*0x800ac1e8*/ u32 unk0d8[12]; + /*0x800ac218*/ u32 unk108[12]; /*0x800ac248*/ u32 unk138; /*0x800ac24c*/ struct prop *uplink; + /*0x800ac250*/ u32 unk140; }; struct scenariodata_pac {