From 4aaaba71c2cd24aba3df184509261df3ee16d4a8 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 30 Oct 2020 19:05:20 +1000 Subject: [PATCH] Decompile contGetNumSamples --- src/game/bondmove.c | 4 ++-- src/game/game_01b0a0.c | 2 +- src/include/lib/lib_13900.h | 2 +- src/include/types.h | 4 ++-- src/lib/lib_13900.c | 38 ++++++++++++++----------------------- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/game/bondmove.c b/src/game/bondmove.c index 51857efa8..2ff855ef8 100644 --- a/src/game/bondmove.c +++ b/src/game/bondmove.c @@ -915,7 +915,7 @@ glabel var7f1ad8e4 /* f0c8d1c: 01c87825 */ or $t7,$t6,$t0 /* f0c8d20: acaf1c40 */ sw $t7,0x1c40($a1) .L0f0c8d24: -/* f0c8d24: 0c005207 */ jal func0001481c +/* f0c8d24: 0c005207 */ jal contGetNumSamples /* f0c8d28: 00000000 */ nop /* f0c8d2c: 0040b025 */ or $s6,$v0,$zero /* f0c8d30: 0fc322aa */ jal movedataReset @@ -4020,7 +4020,7 @@ glabel var7f1ad8e4 // g_Vars.currentplayer->joybutinhibit = (g_Vars.currentplayer->joybutinhibit & 0xffff0000) | inhibitedbuttons; // } // -// numsamples = func0001481c(); +// numsamples = contGetNumSamples(); // movedataReset(&movedata); // // // 8d3c diff --git a/src/game/game_01b0a0.c b/src/game/game_01b0a0.c index 59c0fa03d..547619781 100644 --- a/src/game/game_01b0a0.c +++ b/src/game/game_01b0a0.c @@ -190,7 +190,7 @@ glabel activemenuTick /* f01b310: afa200d4 */ sw $v0,0xd4($sp) /* f01b314: 0fc549d2 */ jal optionsGetContpadNum1 /* f01b318: 8de40070 */ lw $a0,0x70($t7) -/* f01b31c: 0c005207 */ jal func0001481c +/* f01b31c: 0c005207 */ jal contGetNumSamples /* f01b320: a3a200d3 */ sb $v0,0xd3($sp) /* f01b324: 18400237 */ blez $v0,.L0f01bc04 /* f01b328: afa200cc */ sw $v0,0xcc($sp) diff --git a/src/include/lib/lib_13900.h b/src/include/lib/lib_13900.h index aaefff54c..f710715e1 100644 --- a/src/include/lib/lib_13900.h +++ b/src/include/lib/lib_13900.h @@ -25,7 +25,7 @@ u32 func000143e8(void); u32 func00014408(void); u32 func00014484(void); void func00014810(bool arg0); -u32 func0001481c(void); +s32 contGetNumSamples(void); u32 func00014848(void); s32 func00014904(s32 samplenum, s8 contpadnum); s32 func000149c0(s32 samplenum, s8 contpadnum); diff --git a/src/include/types.h b/src/include/types.h index 5f531e842..bb5f71455 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -7092,8 +7092,8 @@ struct contsample { struct contdata { struct contsample samples[20]; - s32 index; // index into samples - s32 unk1e4; // also an index into samples + s32 newestindex; + s32 oldestindex; s32 unk1e8; s32 unk1ec; u16 unk1f0[4]; diff --git a/src/lib/lib_13900.c b/src/lib/lib_13900.c index f83819eec..e26110cf2 100644 --- a/src/lib/lib_13900.c +++ b/src/lib/lib_13900.c @@ -839,7 +839,7 @@ glabel func000142f0 /* 14398: 8defeec0 */ lw $t7,%lo(var8005eec0)($t7) /* 1439c: 51e0000f */ beqzl $t7,.L000143dc /* 143a0: 8fbf0014 */ lw $ra,0x14($sp) -/* 143a4: 0c005207 */ jal func0001481c +/* 143a4: 0c005207 */ jal contGetNumSamples /* 143a8: 00000000 */ nop /* 143ac: 5c40000b */ bgtzl $v0,.L000143dc /* 143b0: 8fbf0014 */ lw $ra,0x14($sp) @@ -910,7 +910,7 @@ glabel func000142f0 /* 14398: 8defeec0 */ lw $t7,%lo(var8005eec0)($t7) /* 1439c: 51e0000f */ beqzl $t7,.L000143dc /* 143a0: 8fbf0014 */ lw $ra,0x14($sp) -/* 143a4: 0c005207 */ jal func0001481c +/* 143a4: 0c005207 */ jal contGetNumSamples /* 143a8: 00000000 */ nop /* 143ac: 5c40000b */ bgtzl $v0,.L000143dc /* 143b0: 8fbf0014 */ lw $ra,0x14($sp) @@ -1239,20 +1239,10 @@ glabel func00014810 /* 14818: ac24eec0 */ sw $a0,%lo(var8005eec0)($at) ); -GLOBAL_ASM( -glabel func0001481c -/* 1481c: 3c038006 */ lui $v1,%hi(var8005ee60) -/* 14820: 8c63ee60 */ lw $v1,%lo(var8005ee60)($v1) -/* 14824: 24010014 */ addiu $at,$zero,0x14 -/* 14828: 8c6e01e0 */ lw $t6,0x1e0($v1) -/* 1482c: 8c6f01e4 */ lw $t7,0x1e4($v1) -/* 14830: 01cf1023 */ subu $v0,$t6,$t7 -/* 14834: 24420014 */ addiu $v0,$v0,0x14 -/* 14838: 0041001a */ div $zero,$v0,$at -/* 1483c: 00001010 */ mfhi $v0 -/* 14840: 03e00008 */ jr $ra -/* 14844: 00000000 */ nop -); +s32 contGetNumSamples(void) +{ + return (var8005ee60->newestindex - var8005ee60->oldestindex + 20) % 20; +} GLOBAL_ASM( glabel func00014848 @@ -1318,7 +1308,7 @@ s32 func00014904(s32 samplenum, s8 contpadnum) return 0; } - return var8005ee60->samples[(var8005ee60->unk1e4 + samplenum + 1) % 20].pads[contpadnum].stick_y; + return var8005ee60->samples[(var8005ee60->oldestindex + samplenum + 1) % 20].pads[contpadnum].stick_y; } s32 func000149c0(s32 samplenum, s8 contpadnum) @@ -1332,7 +1322,7 @@ s32 func000149c0(s32 samplenum, s8 contpadnum) return 0; } - return var8005ee60->samples[(var8005ee60->unk1e4 + samplenum) % 20].pads[contpadnum].stick_y; + return var8005ee60->samples[(var8005ee60->oldestindex + samplenum) % 20].pads[contpadnum].stick_y; } u16 func00014a78(s32 samplenum, s8 contpadnum, u16 mask) @@ -1348,7 +1338,7 @@ u16 func00014a78(s32 samplenum, s8 contpadnum, u16 mask) return 0; } - button = var8005ee60->samples[(var8005ee60->unk1e4 + samplenum + 1) % 20].pads[contpadnum].button; + button = var8005ee60->samples[(var8005ee60->oldestindex + samplenum + 1) % 20].pads[contpadnum].button; return button & mask; } @@ -1367,8 +1357,8 @@ u16 func00014b50(s32 samplenum, s8 contpadnum, u16 mask) return 0; } - button1 = var8005ee60->samples[(var8005ee60->unk1e4 + samplenum + 1) % 20].pads[contpadnum].button; - button2 = var8005ee60->samples[(var8005ee60->unk1e4 + samplenum) % 20].pads[contpadnum].button; + button1 = var8005ee60->samples[(var8005ee60->oldestindex + samplenum + 1) % 20].pads[contpadnum].button; + button2 = var8005ee60->samples[(var8005ee60->oldestindex + samplenum) % 20].pads[contpadnum].button; return (button1 & ~button2) & mask; } @@ -1493,7 +1483,7 @@ s8 contGetStickX(s8 contpadnum) return 0; } - return var8005ee60->samples[var8005ee60->index].pads[contpadnum].stick_x; + return var8005ee60->samples[var8005ee60->newestindex].pads[contpadnum].stick_x; } s8 contGetStickY(s8 contpadnum) @@ -1507,7 +1497,7 @@ s8 contGetStickY(s8 contpadnum) return 0; } - return var8005ee60->samples[var8005ee60->index].pads[contpadnum].stick_y; + return var8005ee60->samples[var8005ee60->newestindex].pads[contpadnum].stick_y; } u16 contGetButtons(s8 contpadnum, u16 mask) @@ -1521,7 +1511,7 @@ u16 contGetButtons(s8 contpadnum, u16 mask) return 0; } - return var8005ee60->samples[var8005ee60->index].pads[contpadnum].button & mask; + return var8005ee60->samples[var8005ee60->newestindex].pads[contpadnum].button & mask; } u16 func00015020(s8 contpadnum, u16 mask)