Decompile chrChooseFootstepSound

This commit is contained in:
Ryan Dwyer
2020-05-13 18:49:44 +10:00
parent ef8ae5ad3b
commit e049013d24
6 changed files with 85 additions and 223 deletions
+4 -4
View File
@@ -5338,7 +5338,7 @@ void currentPlayerUpdateFootsteps(bool arg0, bool arg1, bool arg2, bool arg3)
{
struct chrdata *chr;
u8 foot;
s32 thing;
s32 sound;
f32 xdiff;
f32 ydiff;
f32 zdiff;
@@ -5388,10 +5388,10 @@ void currentPlayerUpdateFootsteps(bool arg0, bool arg1, bool arg2, bool arg3)
chr->floortype = g_Vars.currentplayer->floortype;
thing = func0f006074(chr, distance > 10);
sound = chrChooseFootstepSound(chr, distance > 10);
if (thing != -1) {
func00010718(0, 0, 0x7fff, 0x40, thing, 1, 1, -1, 1);
if (sound != -1) {
func00010718(0, 0, 0x7fff, 0x40, sound, 1, 1, -1, 1);
}
}
}
+2 -2
View File
@@ -1656,7 +1656,7 @@ void currentPlayerUpdateVerticalMovement(void)
chr->floortype = g_Vars.currentplayer->floortype;
chr->footstep = 1;
sound = func0f006074(chr, true);
sound = chrChooseFootstepSound(chr, true);
if (sound != -1) {
if (sound != -1) {
@@ -1665,7 +1665,7 @@ void currentPlayerUpdateVerticalMovement(void)
}
chr->footstep = 2;
sound = func0f006074(chr, true);
sound = chrChooseFootstepSound(chr, true);
if (sound != -1) {
func0f0939f8(NULL, g_Vars.currentplayer->prop, sound,
+25 -107
View File
@@ -6951,113 +6951,31 @@ u32 var80061470 = 0x4d4d2e00;
u32 var80061474 = 0x00000000;
u32 var80061478 = 0x00000000;
u32 var8006147c = 0x00000000;
u32 var80061480 = 0xffffffff;
u32 var80061484 = 0xffffffff;
u32 var80061488 = 0xffffffff;
u32 var8006148c = 0xffffffff;
u32 var80061490 = 0xffffffff;
u32 var80061494 = 0xffffffff;
u32 var80061498 = 0xffffffff;
u32 var8006149c = 0xffffffff;
u32 var800614a0 = 0x000080dc;
u32 var800614a4 = 0x000080dd;
u32 var800614a8 = 0x000080e0;
u32 var800614ac = 0x000080e1;
u32 var800614b0 = 0x000080de;
u32 var800614b4 = 0x000080df;
u32 var800614b8 = 0x000080e2;
u32 var800614bc = 0x000080e3;
u32 var800614c0 = 0x000080c4;
u32 var800614c4 = 0x000080c5;
u32 var800614c8 = 0x000080c8;
u32 var800614cc = 0x000080c9;
u32 var800614d0 = 0x000080c6;
u32 var800614d4 = 0x000080c7;
u32 var800614d8 = 0x000080ca;
u32 var800614dc = 0x000080cb;
u32 var800614e0 = 0x000080e6;
u32 var800614e4 = 0x000080e7;
u32 var800614e8 = 0x000080ea;
u32 var800614ec = 0x000080eb;
u32 var800614f0 = 0x000080e8;
u32 var800614f4 = 0x000080e9;
u32 var800614f8 = 0x000080ec;
u32 var800614fc = 0x000080ed;
u32 var80061500 = 0x000080d4;
u32 var80061504 = 0x000080d5;
u32 var80061508 = 0x000080d8;
u32 var8006150c = 0x000080d9;
u32 var80061510 = 0x000080d6;
u32 var80061514 = 0x000080d7;
u32 var80061518 = 0x000080da;
u32 var8006151c = 0x000080db;
u32 var80061520 = 0x000080ee;
u32 var80061524 = 0x000080ef;
u32 var80061528 = 0x000080f2;
u32 var8006152c = 0x000080f3;
u32 var80061530 = 0x000080f0;
u32 var80061534 = 0x000080f1;
u32 var80061538 = 0x000080f4;
u32 var8006153c = 0x000080f5;
u32 var80061540 = 0x000080e4;
u32 var80061544 = 0x000080e5;
u32 var80061548 = 0x000080e4;
u32 var8006154c = 0x000080e5;
u32 var80061550 = 0x000080e4;
u32 var80061554 = 0x000080e5;
u32 var80061558 = 0x000080e4;
u32 var8006155c = 0x000080e5;
u32 var80061560 = 0x000080cc;
u32 var80061564 = 0x000080cd;
u32 var80061568 = 0x000080d0;
u32 var8006156c = 0x000080d1;
u32 var80061570 = 0x000080ce;
u32 var80061574 = 0x000080cf;
u32 var80061578 = 0x000080d2;
u32 var8006157c = 0x000080d3;
u32 var80061580 = 0x00008187;
u32 var80061584 = 0x00008188;
u32 var80061588 = 0x0000818b;
u32 var8006158c = 0x0000818c;
u32 var80061590 = 0x00008189;
u32 var80061594 = 0x0000818a;
u32 var80061598 = 0x0000818d;
u32 var8006159c = 0x0000818e;
u32 var800615a0 = 0x002b0819;
u32 var800615a4 = 0x0029050e;
u32 var800615a8 = 0x006b0819;
u32 var800615ac = 0x00281b08;
u32 var800615b0 = 0x002a1206;
u32 var800615b4 = 0x00520819;
u32 var800615b8 = 0x00531908;
u32 var800615bc = 0x00541908;
u32 var800615c0 = 0x00550712;
u32 var800615c4 = 0x00560712;
u32 var800615c8 = 0x00571207;
u32 var800615cc = 0x00580f05;
u32 var800615d0 = 0x00590814;
u32 var800615d4 = 0x005a060f;
u32 var800615d8 = 0x006c1908;
u32 var800615dc = 0x006d1908;
u32 var800615e0 = 0x006e0813;
u32 var800615e4 = 0x006f1508;
u32 var800615e8 = 0x00700f05;
u32 var800615ec = 0x00710f05;
u32 var800615f0 = 0x00721708;
u32 var800615f4 = 0x00730813;
u32 var800615f8 = 0x0093170a;
u32 var800615fc = 0x00940f05;
u32 var80061600 = 0x005f0e01;
u32 var80061604 = 0x00161d0a;
u32 var80061608 = 0x0018182e;
u32 var8006160c = 0x001b0a1c;
u32 var80061610 = 0x001d0d02;
u32 var80061614 = 0x001e0c01;
u32 var80061618 = 0x005c132a;
u32 var8006161c = 0x005d0f05;
u32 var80061620 = 0x005e040c;
u32 var80061624 = 0x03920514;
u32 var80061628 = 0x03940000;
s32 g_FootstepSounds[] = {
/* none */ -1, -1, -1, -1, -1, -1, -1, -1,
/* wood */ 0x80dc, 0x80dd, 0x80e0, 0x80e1, 0x80de, 0x80df, 0x80e2, 0x80e3,
/* stone */ 0x80c4, 0x80c5, 0x80c8, 0x80c9, 0x80c6, 0x80c7, 0x80ca, 0x80cb,
/* carpet */ 0x80e6, 0x80e7, 0x80ea, 0x80eb, 0x80e8, 0x80e9, 0x80ec, 0x80ed,
/* metal */ 0x80d4, 0x80d5, 0x80d8, 0x80d9, 0x80d6, 0x80d7, 0x80da, 0x80db,
/* mud */ 0x80ee, 0x80ef, 0x80f2, 0x80f3, 0x80f0, 0x80f1, 0x80f4, 0x80f5,
/* water */ 0x80e4, 0x80e5, 0x80e4, 0x80e5, 0x80e4, 0x80e5, 0x80e4, 0x80e5,
/* dirt */ 0x80cc, 0x80cd, 0x80d0, 0x80d1, 0x80ce, 0x80cf, 0x80d2, 0x80d3,
/* snow */ 0x8187, 0x8188, 0x818b, 0x818c, 0x8189, 0x818a, 0x818d, 0x818e,
};
u16 var800615a0[][2] = {
{ 0x002b, 0x0819 }, { 0x0029, 0x050e }, { 0x006b, 0x0819 }, { 0x0028, 0x1b08 },
{ 0x002a, 0x1206 }, { 0x0052, 0x0819 }, { 0x0053, 0x1908 }, { 0x0054, 0x1908 },
{ 0x0055, 0x0712 }, { 0x0056, 0x0712 }, { 0x0057, 0x1207 }, { 0x0058, 0x0f05 },
{ 0x0059, 0x0814 }, { 0x005a, 0x060f }, { 0x006c, 0x1908 }, { 0x006d, 0x1908 },
{ 0x006e, 0x0813 }, { 0x006f, 0x1508 }, { 0x0070, 0x0f05 }, { 0x0071, 0x0f05 },
{ 0x0072, 0x1708 }, { 0x0073, 0x0813 }, { 0x0093, 0x170a }, { 0x0094, 0x0f05 },
{ 0x005f, 0x0e01 }, { 0x0016, 0x1d0a }, { 0x0018, 0x182e }, { 0x001b, 0x0a1c },
{ 0x001d, 0x0d02 }, { 0x001e, 0x0c01 }, { 0x005c, 0x132a }, { 0x005d, 0x0f05 },
{ 0x005e, 0x040c }, { 0x0392, 0x0514 }, { 0x0394, 0x0000 },
};
u32 var8006162c = 0x00000000;
u32 var80061630 = 0x00000000;
u32 var80061634 = 0x00000000;
+51 -108
View File
@@ -46,112 +46,55 @@ bool func0f005fd0(s32 arg0)
return false;
}
GLOBAL_ASM(
glabel func0f006074
/* f006074: 27bdffd0 */ addiu $sp,$sp,-48
/* f006078: afbf0024 */ sw $ra,0x24($sp)
/* f00607c: afb20020 */ sw $s2,0x20($sp)
/* f006080: afb1001c */ sw $s1,0x1c($sp)
/* f006084: afb00018 */ sw $s0,0x18($sp)
/* f006088: 808e0190 */ lb $t6,0x190($a0)
/* f00608c: 00809025 */ or $s2,$a0,$zero
/* f006090: 55c00004 */ bnezl $t6,.L0f0060a4
/* f006094: 92420191 */ lbu $v0,0x191($s2)
/* f006098: 1000004a */ beqz $zero,.L0f0061c4
/* f00609c: 00001025 */ or $v0,$zero,$zero
/* f0060a0: 92420191 */ lbu $v0,0x191($s2)
.L0f0060a4:
/* f0060a4: 00001825 */ or $v1,$zero,$zero
/* f0060a8: 28410009 */ slti $at,$v0,0x9
/* f0060ac: 10200003 */ beqz $at,.L0f0060bc
/* f0060b0: 00000000 */ sll $zero,$zero,0x0
/* f0060b4: 10000001 */ beqz $zero,.L0f0060bc
/* f0060b8: 00401825 */ or $v1,$v0,$zero
.L0f0060bc:
/* f0060bc: 2401ffff */ addiu $at,$zero,-1
/* f0060c0: 14610003 */ bne $v1,$at,.L0f0060d0
/* f0060c4: 00000000 */ sll $zero,$zero,0x0
/* f0060c8: 1000003e */ beqz $zero,.L0f0061c4
/* f0060cc: 00001025 */ or $v0,$zero,$zero
.L0f0060d0:
/* f0060d0: 12400003 */ beqz $s2,.L0f0060e0
/* f0060d4: 24010001 */ addiu $at,$zero,0x1
/* f0060d8: 10000002 */ beqz $zero,.L0f0060e4
/* f0060dc: 924402fe */ lbu $a0,0x2fe($s2)
.L0f0060e0:
/* f0060e0: 00002025 */ or $a0,$zero,$zero
.L0f0060e4:
/* f0060e4: 14810019 */ bne $a0,$at,.L0f00614c
/* f0060e8: 00055080 */ sll $t2,$a1,0x2
/* f0060ec: 864f0010 */ lh $t7,0x10($s2)
/* f0060f0: 2401007b */ addiu $at,$zero,0x7b
/* f0060f4: 11e10015 */ beq $t7,$at,.L0f00614c
/* f0060f8: 00000000 */ sll $zero,$zero,0x0
/* f0060fc: 92580361 */ lbu $t8,0x361($s2)
/* f006100: 24010004 */ addiu $at,$zero,0x4
/* f006104: 3b190001 */ xori $t9,$t8,0x1
/* f006108: 14610008 */ bne $v1,$at,.L0f00612c
/* f00610c: a2590361 */ sb $t9,0x361($s2)
/* f006110: 332800ff */ andi $t0,$t9,0xff
/* f006114: 11000003 */ beqz $t0,.L0f006124
/* f006118: 00000000 */ sll $zero,$zero,0x0
/* f00611c: 10000029 */ beqz $zero,.L0f0061c4
/* f006120: 34028191 */ dli $v0,0x8191
.L0f006124:
/* f006124: 10000027 */ beqz $zero,.L0f0061c4
/* f006128: 34028192 */ dli $v0,0x8192
.L0f00612c:
/* f00612c: 92490361 */ lbu $t1,0x361($s2)
/* f006130: 34038190 */ dli $v1,0x8190
/* f006134: 11200003 */ beqz $t1,.L0f006144
/* f006138: 00000000 */ sll $zero,$zero,0x0
/* f00613c: 10000021 */ beqz $zero,.L0f0061c4
/* f006140: 3402818f */ dli $v0,0x818f
.L0f006144:
/* f006144: 1000001f */ beqz $zero,.L0f0061c4
/* f006148: 00601025 */ or $v0,$v1,$zero
.L0f00614c:
/* f00614c: 3c048006 */ lui $a0,%hi(var800615a0)
/* f006150: 008a2021 */ addu $a0,$a0,$t2
/* f006154: 948415a0 */ lhu $a0,%lo(var800615a0)($a0)
/* f006158: 0fc017f4 */ jal func0f005fd0
/* f00615c: afa3002c */ sw $v1,0x2c($sp)
/* f006160: 8fa3002c */ lw $v1,0x2c($sp)
/* f006164: 00408825 */ or $s1,$v0,$zero
/* f006168: 000380c0 */ sll $s0,$v1,0x3
.L0f00616c:
/* f00616c: 0c004b70 */ jal random
/* f006170: 00000000 */ sll $zero,$zero,0x0
/* f006174: 30430007 */ andi $v1,$v0,0x7
/* f006178: 12200003 */ beqz $s1,.L0f006188
/* f00617c: 00602825 */ or $a1,$v1,$zero
/* f006180: 10000002 */ beqz $zero,.L0f00618c
/* f006184: 24040002 */ addiu $a0,$zero,0x2
.L0f006188:
/* f006188: 00002025 */ or $a0,$zero,$zero
.L0f00618c:
/* f00618c: 924e0361 */ lbu $t6,0x361($s2)
/* f006190: 306b0005 */ andi $t3,$v1,0x5
/* f006194: 008b6021 */ addu $t4,$a0,$t3
/* f006198: 01906821 */ addu $t5,$t4,$s0
/* f00619c: 11aefff3 */ beq $t5,$t6,.L0f00616c
/* f0061a0: 00000000 */ sll $zero,$zero,0x0
/* f0061a4: 30af0005 */ andi $t7,$a1,0x5
/* f0061a8: 008fc021 */ addu $t8,$a0,$t7
/* f0061ac: 03101821 */ addu $v1,$t8,$s0
/* f0061b0: 0003c880 */ sll $t9,$v1,0x2
/* f0061b4: 3c028006 */ lui $v0,%hi(var80061480)
/* f0061b8: a2430361 */ sb $v1,0x361($s2)
/* f0061bc: 00591021 */ addu $v0,$v0,$t9
/* f0061c0: 8c421480 */ lw $v0,%lo(var80061480)($v0)
.L0f0061c4:
/* f0061c4: 8fbf0024 */ lw $ra,0x24($sp)
/* f0061c8: 8fb00018 */ lw $s0,0x18($sp)
/* f0061cc: 8fb1001c */ lw $s1,0x1c($sp)
/* f0061d0: 8fb20020 */ lw $s2,0x20($sp)
/* f0061d4: 03e00008 */ jr $ra
/* f0061d8: 27bd0030 */ addiu $sp,$sp,0x30
);
s32 chrChooseFootstepSound(struct chrdata *chr, u32 arg1)
{
s32 floortype;
s32 which;
s32 rand;
s32 index;
if (chr->footstep == 0) {
return 0;
}
floortype = chr->floortype <= FLOORTYPE_SNOW ? chr->floortype : 0;
if (floortype == -1) {
return 0;
}
if (CHRRACE(chr) == RACE_SKEDAR && chr->bodynum != BODY_MINISKEDAR) {
u32 result;
chr->lastfootsample ^= 1;
if (floortype == FLOORTYPE_METAL) {
if (chr->lastfootsample) {
result = 0x8191;
} else {
result = 0x8192;
}
} else {
if (chr->lastfootsample) {
result = 0x818f;
} else {
result = 0x8190;
}
}
return result;
}
which = func0f005fd0(var800615a0[arg1][0]);
do {
rand = random() & 7;
index = (which ? 2 : 0) + (rand & 5) + floortype * 8;
} while (index == chr->lastfootsample);
chr->lastfootsample = index;
return g_FootstepSounds[index];
}
GLOBAL_ASM(
glabel func0f0061dc
@@ -334,7 +277,7 @@ glabel func0f0061dc
/* f006458: 00000000 */ sll $zero,$zero,0x0
/* f00645c: a2390190 */ sb $t9,0x190($s1)
.L0f006460:
/* f006460: 0fc0181d */ jal func0f006074
/* f006460: 0fc0181d */ jal chrChooseFootstepSound
/* f006464: 02202025 */ or $a0,$s1,$zero
/* f006468: 2401ffff */ addiu $at,$zero,-1
/* f00646c: 5041001c */ beql $v0,$at,.L0f0064e0
@@ -597,7 +540,7 @@ glabel var7f1a7e6c
/* f006800: 00000000 */ sll $zero,$zero,0x0
/* f006804: a20d0190 */ sb $t5,0x190($s0)
.L0f006808:
/* f006808: 0fc0181d */ jal func0f006074
/* f006808: 0fc0181d */ jal chrChooseFootstepSound
/* f00680c: afa5005c */ sw $a1,0x5c($sp)
/* f006810: 2401ffff */ addiu $at,$zero,-1
/* f006814: 5041001c */ beql $v0,$at,.L0f006888
+2 -1
View File
@@ -190,7 +190,8 @@ extern u32 var80061438;
extern u32 var80061440;
extern u32 var80061460;
extern u32 var80061468;
extern u32 var800615a0;
extern s32 g_FootstepSounds[];
extern u16 var800615a0[][2];
extern u32 var80061630;
extern u32 var80061634;
extern u32 var80061640;
+1 -1
View File
@@ -4,7 +4,7 @@
#include "types.h"
bool func0f005fd0(s32 arg0);
s32 func0f006074(struct chrdata *chr, bool arg1);
s32 chrChooseFootstepSound(struct chrdata *chr, u32 arg1);
void func0f0061dc(struct chrdata *chr);
void func0f006520(struct chrdata *chr);
u32 func0f006900(void);