From 335834aae9caa59d00f39c73b3e404b3acbb4f0b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 10 Jan 2021 15:42:37 +1000 Subject: [PATCH] Attempt to decompile func0f0939f8 --- src/game/chr/chraicommands.c | 8 +- src/game/data/data_00e460.c | 2 +- src/game/game_092610.c | 285 ++++++++++++++++++++++++---- src/game/propobj.c | 2 +- src/include/constants.h | 17 ++ src/include/game/data/data_000000.h | 6 +- src/include/game/data/data_00e460.h | 2 +- src/include/game/game_092610.h | 6 +- src/include/game/propobj.h | 2 +- src/include/lib/lib_0e9d0.h | 2 +- src/include/types.h | 69 ++++--- src/lib/lib_0e9d0.c | 178 ++++++++--------- 12 files changed, 418 insertions(+), 161 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 9aa2f9911..99c6452c3 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -4596,7 +4596,7 @@ glabel aiSpeak // s16 text_id = cmd[4] | (cmd[3] << 8); // s32 prevplayernum = g_Vars.currentplayernum; // s32 playernum = g_Vars.currentplayernum; -// u32 audioref; +// u32 channelnum; // char *text = text_id >= 0 ? langGet(text_id) : NULL; // // if (chr && chr->prop && chr->prop->type == PROPTYPE_PLAYER) { @@ -4610,13 +4610,13 @@ glabel aiSpeak // } // // if (cmd[2] == CHR_P1P2) { -// audioref = audioPlayFromProp(cmd[7], audio_id, 0, g_Vars.chrdata->prop, 0, 512); +// channelnum = audioPlayFromProp(cmd[7], audio_id, 0, g_Vars.chrdata->prop, 0, 512); // } else { -// audioref = audioPlayFromProp(cmd[7], audio_id, 0, g_Vars.chrdata->prop, 9, 512); +// channelnum = audioPlayFromProp(cmd[7], audio_id, 0, g_Vars.chrdata->prop, 9, 512); // } // // if (text && !audioIsFiltered(audio_id)) { -// func0f0de160(text, 6, cmd[8], audioref); +// func0f0de160(text, 6, cmd[8], channelnum); // } // // setCurrentPlayerNum(prevplayernum); diff --git a/src/game/data/data_00e460.c b/src/game/data/data_00e460.c index a4ed6dd17..78051f134 100644 --- a/src/game/data/data_00e460.c +++ b/src/game/data/data_00e460.c @@ -161,7 +161,7 @@ u32 var8006ae04 = 0x00000000; u32 var8006ae08 = 0x00000000; u32 var8006ae0c = 0x00000000; struct audiochannel *g_AudioChannels = NULL; -u32 var8006ae14 = 0x00000000; +u32 g_AudioPrevUuid = 0x00000000; s8 var8006ae18 = 0; s8 var8006ae1c = 0; s8 var8006ae20 = 0; diff --git a/src/game/game_092610.c b/src/game/game_092610.c index 470ec8e41..0c92aa106 100644 --- a/src/game/game_092610.c +++ b/src/game/game_092610.c @@ -214,7 +214,7 @@ void func0f092a98(s32 channelnum) { struct audiochannel *channel = &g_AudioChannels[channelnum]; - channel->unk32 |= 0x80; + channel->flags2 |= 0x80; if (channel->flags & AUDIOCHANNELFLAG_0200) { func0f0ddd44(channelnum); @@ -1401,8 +1401,8 @@ glabel var7f1ab748 /* f093b14: 10000145 */ b .L0f09402c /* f093b18: 2402ffff */ addiu $v0,$zero,-1 .L0f093b1c: -/* f093b1c: 3c038007 */ lui $v1,%hi(var8006ae14) -/* f093b20: 2463ae14 */ addiu $v1,$v1,%lo(var8006ae14) +/* f093b1c: 3c038007 */ lui $v1,%hi(g_AudioPrevUuid) +/* f093b20: 2463ae14 */ addiu $v1,$v1,%lo(g_AudioPrevUuid) /* f093b24: 8c620000 */ lw $v0,0x0($v1) /* f093b28: 44801000 */ mtc1 $zero,$f2 /* f093b2c: 24190040 */ addiu $t9,$zero,0x40 @@ -1504,14 +1504,14 @@ glabel var7f1ab748 /* f093c7c: 53200065 */ beqzl $t9,.L0f093e14 /* f093c80: 860c0018 */ lh $t4,0x18($s0) /* f093c84: 97a400ac */ lhu $a0,0xac($sp) -/* f093c88: 3c0c8006 */ lui $t4,%hi(audiodefinitions) -/* f093c8c: 258cdde4 */ addiu $t4,$t4,%lo(audiodefinitions) +/* f093c88: 3c0c8006 */ lui $t4,%hi(g_AudioRussMappings) +/* f093c8c: 258cdde4 */ addiu $t4,$t4,%lo(g_AudioRussMappings) /* f093c90: 308a7fff */ andi $t2,$a0,0x7fff /* f093c94: 000a5880 */ sll $t3,$t2,0x2 /* f093c98: 016c1021 */ addu $v0,$t3,$t4 /* f093c9c: 94450002 */ lhu $a1,0x2($v0) -/* f093ca0: 3c0e8006 */ lui $t6,%hi(audioconfigs) -/* f093ca4: 25cee4d8 */ addiu $t6,$t6,%lo(audioconfigs) +/* f093ca0: 3c0e8006 */ lui $t6,%hi(g_AudioConfigs) +/* f093ca4: 25cee4d8 */ addiu $t6,$t6,%lo(g_AudioConfigs) /* f093ca8: 00056940 */ sll $t5,$a1,0x5 /* f093cac: 01ae1821 */ addu $v1,$t5,$t6 /* f093cb0: c4640000 */ lwc1 $f4,0x0($v1) @@ -1769,9 +1769,228 @@ glabel var7f1ab748 /* f09403c: 00000000 */ nop ); +// Mismatch: Two beq operators are swapped in this expression: +// g_AudioConfigs[confignum].unk14 != -1 +//s16 func0f0939f8( +// struct audiochannel *channel, +// struct prop *prop, +// s16 soundnum, +// s16 padnum, +// s32 arg4, +// u16 flags, +// u16 flags2, +// s32 arg7, +// struct coord *pos, +// f32 arg9, +// s16 *rooms, +// s32 room, +// f32 arg12, +// f32 arg13, +// f32 arg14) +//{ +// union soundnumhack spac; +// OSPri prevpri; +// u32 stack[3]; +// struct pad pad; +// s32 i; +// s32 j; +// +// if (arg7 == 0x11) { +// func0f0938ec(prop); +// } +// +// spac.packed = soundnum; +// +// if (channel == NULL) { +// if (arg7 != 16 && var8005ddd4 > 12) { +// return -1; +// } +// +// for (i = 8; i < (IS4MB() ? 30 : 40); i++) { +// if (g_AudioChannels[i].flags & AUDIOCHANNELFLAG_IDLE) { +// channel = &g_AudioChannels[i]; +// channel->channelnum = i; +// break; +// } +// } +// } +// +// if (padnum >= 0) { +// padUnpack(padnum, PADFIELD_POS | PADFIELD_ROOM, &pad); +// pos = &pad.pos; +// room = pad.room; +// prop = NULL; +// } +// +// if (channel == NULL) { +// return -1; +// } +// +// if (g_AudioPrevUuid < 0xffffffff) { +// g_AudioPrevUuid++; +// } else { +// g_AudioPrevUuid = 0; +// } +// +// channel->flags = flags; +// channel->flags2 = flags2; +// channel->audiohandle = NULL; +// channel->unk06 = -1; +// channel->unk08 = -1; +// channel->unk0e = -1; +// channel->soundnum04 = (arg4 != -1) ? arg4 : -1; +// channel->unk0a = 64; +// channel->unk0c = 0; +// channel->unk10 = 0x7fff; +// channel->unk1a = 1; +// channel->unk44 = (arg9 > 0) ? arg9 : -1; +// channel->unk48 = channel->unk44; +// channel->unk20 = -1; +// channel->unk1c = -1; +// channel->padnum = padnum; +// channel->prop = prop; +// channel->unk28 = arg7; +// channel->unk12 = arg4; +// channel->unk40 = -1; +// channel->unk34 = (arg12 > 0) ? arg12 : 400; +// channel->unk38 = (arg13 > 0) ? arg13 : 2500; +// channel->unk3c = (arg14 > 0) ? arg14 : 3000; +// channel->unk18 = 0; +// channel->uuid = g_AudioPrevUuid; +// +// if (spac.bits2.isruss) { +// s32 id = spac.bits.id; +// s32 confignum = g_AudioRussMappings[id].audioconfig_index; +// s32 newid = g_AudioRussMappings[id].soundnum; +// +// channel->unk34 = g_AudioConfigs[confignum].unk00; +// channel->unk38 = g_AudioConfigs[confignum].unk04; +// channel->unk3c = g_AudioConfigs[confignum].unk08; +// channel->unk18 = g_AudioConfigs[confignum].unk18; +// +// if (g_AudioConfigs[confignum].unk10 != 100) { +// channel->unk10 = g_AudioConfigs[confignum].unk10 * 327; +// } +// +// if (g_AudioConfigs[confignum].unk0c > 0) { +// channel->unk44 = g_AudioConfigs[confignum].unk0c; +// } +// +// if (g_AudioConfigs[confignum].unk14 != -1) { +// channel->unk0a = g_AudioConfigs[confignum].unk14; +// channel->flags |= AUDIOCHANNELFLAG_0020; +// } +// +// if (g_AudioConfigs[confignum].flags & AUDIOCONFIGFLAG_01) { +// channel->flags |= AUDIOCHANNELFLAG_0800; +// } +// +// if (g_AudioConfigs[confignum].flags & AUDIOCONFIGFLAG_04) { +// channel->flags2 |= AUDIOCHANNELFLAG2_0001; +// } +// +// if (g_AudioConfigs[confignum].flags & AUDIOCONFIGFLAG_08) { +// if (channel->soundnum04 == -1) { +// channel->soundnum04 = channel->unk10; +// } +// +// channel->flags |= AUDIOCHANNELFLAG_8000; +// } +// +// if (g_AudioConfigs[confignum].flags & AUDIOCONFIGFLAG_10) { +// channel->flags2 |= AUDIOCHANNELFLAG2_0020; +// } +// +// if (g_AudioConfigs[confignum].flags & AUDIOCONFIGFLAG_20) { +// channel->flags2 |= AUDIOCHANNELFLAG2_0010; +// } +// +// if (g_AudioConfigs[confignum].flags & AUDIOCONFIGFLAG_40) { +// channel->flags2 |= AUDIOCHANNELFLAG2_0040; +// } +// +// channel->flags |= AUDIOCHANNELFLAG_0040; +// +// spac.packed = newid; +// spac.bits2.isruss = false; +// soundnum = spac.packed; +// } +// +// if (channel->unk18) { +// channel->flags |= AUDIOCHANNELFLAG_0002; +// } +// +// channel->soundnum26 = spac.packed; +// channel->unk2c = spac.bits3.id; +// +// if (audioIsFiltered(channel->unk2c)) { +// channel->flags2 |= AUDIOCHANNELFLAG2_0020; +// } +// +// if (spac.bits2.unk02) { +// channel->flags2 |= AUDIOCHANNELFLAG2_0010; +// } +// +// if (pos) { +// channel->pos.x = pos->x; +// channel->pos.y = pos->y; +// channel->pos.z = pos->z; +// channel->posptr = &channel->pos; +// } else { +// channel->posptr = NULL; +// } +// +// if (rooms) { +// // @dangerous: Array overflow will occur if rooms has more than 8 elements +// for (j = 0; rooms[j] != -1; j++) { +// channel->rooms[j] = rooms[j]; +// } +// +// channel->rooms[j] = -1; +// } else if (room != -1) { +// channel->rooms[0] = room; +// channel->rooms[1] = -1; +// } else { +// channel->rooms[0] = -1; +// } +// +// if (!pos && !channel->prop) { +// channel->flags2 |= AUDIOCHANNELFLAG2_0010; +// } +// +// if ((channel->flags2 & AUDIOCHANNELFLAG2_0010) && channel->soundnum04 == -1) { +// channel->soundnum04 = channel->unk10; +// } +// +// channel->flags |= AUDIOCHANNELFLAG_1000; +// +// if (func0000fba0(soundnum)) { +// channel->flags |= AUDIOCHANNELFLAG_0010; +// +// prevpri = osGetThreadPri(0); +// osSetThreadPri(0, osGetThreadPri(&g_AudioThread) + 1); +// func0f092c04(channel->channelnum); +// osSetThreadPri(0, prevpri); +// } else { +// prevpri = osGetThreadPri(0); +// osSetThreadPri(0, osGetThreadPri(&g_AudioThread) + 1); +// func0f092c04(channel->channelnum); +// osSetThreadPri(0, prevpri); +// } +// +// if (channel->flags & AUDIOCHANNELFLAG_0400) { +// channel->flags &= ~AUDIOCHANNELFLAG_0400; +// channel->flags2 |= AUDIOCHANNELFLAG2_0010; +// } +// +// channel->flags &= ~AUDIOCHANNELFLAG_1000; +// +// return channel->channelnum; +//} + s32 audioPlayFromProp(s32 channelnum, s16 soundnum, s32 arg2, struct prop *prop, s16 arg4, u16 arg5) { - s32 result = -1; + s32 retchannelnum = -1; if (arg4 == 11) { if (channelnum >= 0 && channelnum <= 7) { @@ -1779,34 +1998,34 @@ s32 audioPlayFromProp(s32 channelnum, s16 soundnum, s32 arg2, struct prop *prop, g_AudioChannels[channelnum].soundnum26 = soundnum; g_AudioChannels[channelnum].unk28 = 11; g_AudioChannels[channelnum].flags &= ~AUDIOCHANNELFLAG_IDLE; - result = channelnum; + retchannelnum = channelnum; } else { g_AudioChannels[channelnum].soundnum26 = soundnum; g_AudioChannels[channelnum].unk28 = 11; g_AudioChannels[channelnum].flags &= ~AUDIOCHANNELFLAG_IDLE; - result = channelnum; + retchannelnum = channelnum; } } } else if (channelnum == 10) { - result = func0f0939f8(NULL, prop, soundnum, -1, + retchannelnum = func0f0939f8(NULL, prop, soundnum, -1, (arg2 ? 0 : -1), arg5 | 0x0080, 0, arg4, 0, -1, 0, -1, -1, -1, -1); } else if (channelnum < 0 || channelnum >= 8 || channelnum == 9) { - result = func0f0939f8(NULL, prop, soundnum, -1, + retchannelnum = func0f0939f8(NULL, prop, soundnum, -1, (arg2 ? 0 : -1), arg5, 0, arg4, 0, -1, 0, -1, -1, -1, -1); } else { if ((g_AudioChannels[channelnum].flags & AUDIOCHANNELFLAG_IDLE) == 0) { func0f092a98(channelnum); } - g_AudioChannels[channelnum].unk2e = channelnum; + g_AudioChannels[channelnum].channelnum = channelnum; - func0f0939f8(&g_AudioChannels[channelnum].audiohandle, prop, soundnum, -1, + func0f0939f8(&g_AudioChannels[channelnum], prop, soundnum, -1, (arg2 ? 0 : -1), arg5, 0, arg4, 0, -1, 0, -1, -1, -1, -1); - result = channelnum; + retchannelnum = channelnum; } - return result; + return retchannelnum; } void audioMuteChannel(s32 channelnum) @@ -1844,7 +2063,7 @@ bool audioIsChannelIdle(s32 channelnum) return true; } -void audioPlayFromProp2(s32 channelnum, s32 soundnum, s16 arg2, struct prop *prop, s32 arg4, s32 arg5, s32 arg6, u16 arg7) +void audioPlayFromProp2(s32 channelnum, s32 soundnum, s16 padnum, struct prop *prop, s32 arg4, s32 arg5, s32 arg6, u16 arg7) { struct audiochannel *channel = &g_AudioChannels[channelnum]; bool a1 = (arg4 >= 6) ? true : false; @@ -1852,9 +2071,9 @@ void audioPlayFromProp2(s32 channelnum, s32 soundnum, s16 arg2, struct prop *pro if (channelnum >= 0 && channelnum <= 7) { if (channel->unk28 == 11) { - g_AudioChannels[channelnum].unk2e = channelnum; + g_AudioChannels[channelnum].channelnum = (u16)channelnum; - func0f0939f8(&g_AudioChannels[channelnum].audiohandle, prop, channel->soundnum26, -1, + func0f0939f8(&g_AudioChannels[channelnum], prop, channel->soundnum26, -1, -1, arg7, 0, 0, 0, -1, 0, -1, 400, arg5, arg6); } else { if ((channel->flags & AUDIOCHANNELFLAG_2000) == 0 && soundnum >= 0) { @@ -1865,8 +2084,8 @@ void audioPlayFromProp2(s32 channelnum, s32 soundnum, s16 arg2, struct prop *pro channel->unk1c = arg4; } - if (arg2 != -1) { - channel->unk24 = arg2; + if (padnum != -1) { + channel->padnum = padnum; } if (prop) { @@ -1927,13 +2146,13 @@ glabel func0f0946b0 /* f094718: 0018cfc2 */ srl $t9,$t8,0x1f /* f09471c: 13200018 */ beqz $t9,.L0f094780 /* f094720: a7a2006c */ sh $v0,0x6c($sp) -/* f094724: 3c0d8006 */ lui $t5,%hi(audiodefinitions) -/* f094728: 25addde4 */ addiu $t5,$t5,%lo(audiodefinitions) +/* f094724: 3c0d8006 */ lui $t5,%hi(g_AudioRussMappings) +/* f094728: 25addde4 */ addiu $t5,$t5,%lo(g_AudioRussMappings) /* f09472c: 000b6080 */ sll $t4,$t3,0x2 /* f094730: 018d1821 */ addu $v1,$t4,$t5 /* f094734: 94650002 */ lhu $a1,0x2($v1) -/* f094738: 3c188006 */ lui $t8,%hi(audioconfigs) -/* f09473c: 2718e4d8 */ addiu $t8,$t8,%lo(audioconfigs) +/* f094738: 3c188006 */ lui $t8,%hi(g_AudioConfigs) +/* f09473c: 2718e4d8 */ addiu $t8,$t8,%lo(g_AudioConfigs) /* f094740: 00057940 */ sll $t7,$a1,0x5 /* f094744: 01f81021 */ addu $v0,$t7,$t8 /* f094748: c4520008 */ lwc1 $f18,0x8($v0) @@ -2563,13 +2782,13 @@ glabel var7f1ab784 /* f094f44: e7a40040 */ swc1 $f4,0x40($sp) /* f094f48: 01c02025 */ or $a0,$t6,$zero /* f094f4c: 30997fff */ andi $t9,$a0,0x7fff -/* f094f50: 3c0a8006 */ lui $t2,%hi(audiodefinitions) -/* f094f54: 254adde4 */ addiu $t2,$t2,%lo(audiodefinitions) +/* f094f50: 3c0a8006 */ lui $t2,%hi(g_AudioRussMappings) +/* f094f54: 254adde4 */ addiu $t2,$t2,%lo(g_AudioRussMappings) /* f094f58: 00194880 */ sll $t1,$t9,0x2 /* f094f5c: 012a1821 */ addu $v1,$t1,$t2 /* f094f60: 94650002 */ lhu $a1,0x2($v1) -/* f094f64: 3c0c8006 */ lui $t4,%hi(audioconfigs) -/* f094f68: 258ce4d8 */ addiu $t4,$t4,%lo(audioconfigs) +/* f094f64: 3c0c8006 */ lui $t4,%hi(g_AudioConfigs) +/* f094f68: 258ce4d8 */ addiu $t4,$t4,%lo(g_AudioConfigs) /* f094f6c: 00055940 */ sll $t3,$a1,0x5 /* f094f70: 016c1021 */ addu $v0,$t3,$t4 /* f094f74: 8c4e001c */ lw $t6,0x1c($v0) @@ -2662,16 +2881,16 @@ glabel var7f1ab78c .L0f09509c: /* f09509c: 8faf0058 */ lw $t7,0x58($sp) /* f0950a0: 97a40058 */ lhu $a0,0x58($sp) -/* f0950a4: 3c0a8006 */ lui $t2,%hi(audiodefinitions) +/* f0950a4: 3c0a8006 */ lui $t2,%hi(g_AudioRussMappings) /* f0950a8: 000fc7c2 */ srl $t8,$t7,0x1f /* f0950ac: 1300001e */ beqz $t8,.L0f095128 /* f0950b0: 30997fff */ andi $t9,$a0,0x7fff /* f0950b4: 00194880 */ sll $t1,$t9,0x2 -/* f0950b8: 254adde4 */ addiu $t2,$t2,%lo(audiodefinitions) +/* f0950b8: 254adde4 */ addiu $t2,$t2,%lo(g_AudioRussMappings) /* f0950bc: 012a1821 */ addu $v1,$t1,$t2 /* f0950c0: 94650002 */ lhu $a1,0x2($v1) -/* f0950c4: 3c0c8006 */ lui $t4,%hi(audioconfigs) -/* f0950c8: 258ce4d8 */ addiu $t4,$t4,%lo(audioconfigs) +/* f0950c4: 3c0c8006 */ lui $t4,%hi(g_AudioConfigs) +/* f0950c8: 258ce4d8 */ addiu $t4,$t4,%lo(g_AudioConfigs) /* f0950cc: 00055940 */ sll $t3,$a1,0x5 /* f0950d0: 016c1021 */ addu $v0,$t3,$t4 /* f0950d4: 8c4e001c */ lw $t6,0x1c($v0) diff --git a/src/game/propobj.c b/src/game/propobj.c index 7e141a487..86c04a7e1 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -38822,7 +38822,7 @@ void ammotypePlayPickupSound(u32 ammotype) } } -u32 propPlayPickupSound(struct prop *prop, s32 weapon) +s32 propPlayPickupSound(struct prop *prop, s32 weapon) { s16 sound; diff --git a/src/include/constants.h b/src/include/constants.h index cd4872ca7..212263f92 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -250,10 +250,27 @@ #define AUDIOCHANNELFLAG_0002 0x0002 #define AUDIOCHANNELFLAG_0008 0x0008 #define AUDIOCHANNELFLAG_0010 0x0010 +#define AUDIOCHANNELFLAG_0020 0x0020 #define AUDIOCHANNELFLAG_0040 0x0040 #define AUDIOCHANNELFLAG_0080 0x0080 #define AUDIOCHANNELFLAG_0200 0x0200 +#define AUDIOCHANNELFLAG_0400 0x0400 +#define AUDIOCHANNELFLAG_0800 0x0800 +#define AUDIOCHANNELFLAG_1000 0x1000 #define AUDIOCHANNELFLAG_2000 0x2000 +#define AUDIOCHANNELFLAG_8000 0x8000 + +#define AUDIOCHANNELFLAG2_0001 0x0001 +#define AUDIOCHANNELFLAG2_0010 0x0010 +#define AUDIOCHANNELFLAG2_0020 0x0020 +#define AUDIOCHANNELFLAG2_0040 0x0040 + +#define AUDIOCONFIGFLAG_01 0x01 +#define AUDIOCONFIGFLAG_04 0x04 +#define AUDIOCONFIGFLAG_08 0x08 +#define AUDIOCONFIGFLAG_10 0x10 +#define AUDIOCONFIGFLAG_20 0x20 +#define AUDIOCONFIGFLAG_40 0x40 #define BANK_0 0 #define BANK_1 1 diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 2d60471d7..008d1a807 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -27,8 +27,8 @@ extern bool g_CountdownTimerRunning; extern f32 g_CountdownTimerValue; extern u32 g_StageFlags; -extern struct audiodefinition audiodefinitions[]; -extern struct audioconfig audioconfigs[]; +extern struct audiorussmapping g_AudioRussMappings[]; +extern struct audioconfig g_AudioConfigs[]; extern bool (*g_CommandPointers[NUM_AICOMMANDS])(void); extern u16 g_CommandLengths[NUM_AICOMMANDS]; @@ -106,7 +106,7 @@ extern u32 var8005ddc0; extern u32 var8005ddc4; extern u16 g_SfxVolume; extern u32 g_SoundMode; -extern u32 var8005ddd4; +extern s32 var8005ddd4; extern u32 var8005ddd8; extern u32 var8005dde0; extern u32 var8005edf0; diff --git a/src/include/game/data/data_00e460.h b/src/include/game/data/data_00e460.h index 55b1dc6bd..dbe7eaaca 100644 --- a/src/include/game/data/data_00e460.h +++ b/src/include/game/data/data_00e460.h @@ -138,7 +138,7 @@ extern u32 var8006ad8c; extern u32 var8006ad90; extern u32 var8006adf8; extern struct audiochannel *g_AudioChannels; -extern u32 var8006ae14; +extern u32 g_AudioPrevUuid; extern s8 var8006ae18; extern s8 var8006ae1c; extern s8 var8006ae20; diff --git a/src/include/game/game_092610.h b/src/include/game/game_092610.h index 5ceafaff5..1a07f045a 100644 --- a/src/include/game/game_092610.h +++ b/src/include/game/game_092610.h @@ -15,11 +15,11 @@ void func0f092c04(s32 channelnum); u32 func0f093508(void); u32 func0f093630(void); u32 func0f093790(void); -u32 func0f0938ec(void); -s32 func0f0939f8(void *arg0, struct prop *prop, s16 sound, s32 padnum, s32 arg4, u32 arg5, s32 arg6, s32 arg7, s32 arg8, f32 arg9, s32 arg10, s32 arg11, f32 arg12, f32 arg13, f32 arg14); +void func0f0938ec(struct prop *prop); +s16 func0f0939f8(struct audiochannel *channel, struct prop *prop, s16 soundnum, s16 padnum, s32 arg4, u16 flags, u16 flags2, s32 arg7, struct coord *pos, f32 arg9, s16 *rooms, s32 room, f32 arg12, f32 arg13, f32 arg14); void audioMuteChannel(s32 channelnum); bool audioIsChannelIdle(s32 channelnum); -void audioPlayFromProp2(s32 channelnum, s32 soundnum, s16 arg2, struct prop *prop, s32 arg4, s32 arg5, s32 arg6, u16 arg7); +void audioPlayFromProp2(s32 channelnum, s32 soundnum, s16 padnum, struct prop *prop, s32 arg4, s32 arg5, s32 arg6, u16 arg7); u32 func0f0946b0(void); u32 func0f094940(void); u32 func0f094b1c(void); diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index 9a04b6f3e..4b2b34d7d 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -249,7 +249,7 @@ void ammotypeGetPickedUpText(char *dst); void ammotypeGetDeterminer(char *dst, s32 ammotype, s32 qty); void ammotypeGetPickupName(char *dst, s32 ammotype, s32 qty); void ammotypePlayPickupSound(u32 ammotype); -u32 propPlayPickupSound(struct prop *prop, s32 weapon); +s32 propPlayPickupSound(struct prop *prop, s32 weapon); void func0f087d10(s32 weaponnum); void ammotypeGetPickupMessage(char *dst, s32 ammotype, s32 qty); void currentPlayerQueuePickupAmmoHudmsg(s32 ammotype, s32 pickupqty); diff --git a/src/include/lib/lib_0e9d0.h b/src/include/lib/lib_0e9d0.h index 29c6ecd75..4c4c0d151 100644 --- a/src/include/lib/lib_0e9d0.h +++ b/src/include/lib/lib_0e9d0.h @@ -20,7 +20,7 @@ void audioSetSoundMode(u32 mode); u32 func0000f49c(void); u32 func0000f67c(void); u32 func0000f804(void); -u32 func0000fba0(void); +bool func0000fba0(s32 soundnum); void func0000fbc4(s16 arg0); u32 func0000fc48(void); u32 func0000fd74(void); diff --git a/src/include/types.h b/src/include/types.h index 974a0b9a5..63e385f53 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3392,8 +3392,30 @@ struct something { u32 unk08; }; -struct audiodefinition { - u16 unk00; +union soundnumhack { + s16 packed; + + struct { + u16 isruss : 1; + u16 id : 15; + } bits; + + struct { + u16 isruss : 1; + u16 unk02 : 2; + u16 id : 13; + } bits2; + + struct { + u16 isruss : 1; + u16 unk02 : 2; + u16 unk04 : 2; + u16 id : 11; + } bits3; +}; + +struct audiorussmapping { + s16 soundnum; u16 audioconfig_index; }; @@ -3402,7 +3424,7 @@ struct audioconfig { f32 unk04; f32 unk08; f32 unk0c; - u32 unk10; + s32 unk10; s32 unk14; u32 unk18; u32 flags; // 0x10 = contains swearing @@ -6680,38 +6702,37 @@ struct audiochannel { /*0x00*/ struct audiohandle *audiohandle; /*0x04*/ s16 soundnum04; /*0x06*/ s16 unk06; - /*0x08*/ u32 unk08; - /*0x0c*/ u32 unk0c; - /*0x10*/ u32 unk10; + /*0x08*/ s16 unk08; + /*0x0a*/ s16 unk0a; + /*0x0c*/ s16 unk0c; + /*0x0e*/ s16 unk0e; + /*0x10*/ s16 unk10; + /*0x12*/ u16 unk12; /*0x14*/ u32 unk14; - /*0x18*/ u16 unk18; + /*0x18*/ s16 unk18; + /*0x1a*/ u8 unk1a; /*0x1c*/ s32 unk1c; - /*0x20*/ u32 unk20; - /*0x24*/ s16 unk24; + /*0x20*/ s32 unk20; + /*0x24*/ s16 padnum; /*0x26*/ s16 soundnum26; /*0x28*/ s16 unk28; /*0x2a*/ u16 unk2a; - /*0x2c*/ u16 unk2c; - /*0x2e*/ u16 unk2e; + /*0x2c*/ s16 unk2c; + /*0x2e*/ s16 channelnum; /*0x30*/ u16 flags; - /*0x32*/ u16 unk32; + /*0x32*/ u16 flags2; /*0x34*/ f32 unk34; /*0x38*/ f32 unk38; /*0x3c*/ f32 unk3c; - /*0x40*/ u32 unk40; - /*0x44*/ u32 unk44; - /*0x48*/ u32 unk48; + /*0x40*/ f32 unk40; + /*0x44*/ f32 unk44; + /*0x48*/ f32 unk48; /*0x4c*/ f32 unk4c; /*0x50*/ struct prop *prop; - /*0x54*/ u32 unk54; - /*0x58*/ u32 unk58; - /*0x5c*/ u32 unk5c; - /*0x60*/ u32 unk60; - /*0x64*/ u32 unk64; - /*0x68*/ u32 unk68; - /*0x6c*/ u32 unk6c; - /*0x70*/ u32 unk70; - /*0x74*/ u32 unk74; + /*0x54*/ struct coord *posptr; + /*0x58*/ struct coord pos; + /*0x64*/ s16 rooms[8]; + /*0x74*/ u32 uuid; }; struct var8007e3d0_data { diff --git a/src/lib/lib_0e9d0.c b/src/lib/lib_0e9d0.c index 5b837aff2..8f412f5f4 100644 --- a/src/lib/lib_0e9d0.c +++ b/src/lib/lib_0e9d0.c @@ -62,13 +62,13 @@ u32 var8005ddc4 = 0x00000000; u16 g_SfxVolume = 32767; u32 g_SoundMode = SOUNDMODE_STEREO; u32 var8005ddd0 = 0x00000000; -u32 var8005ddd4 = 0x00000000; +s32 var8005ddd4 = 0x00000000; u32 var8005ddd8 = 0x00000000; u32 var8005dddc = 0x00000000; u32 var8005dde0 = 0x00000000; // 3e04 -struct audiodefinition audiodefinitions[] = { +struct audiorussmapping g_AudioRussMappings[] = { /*0x0000*/ { 0x85ba, 59 }, /*0x0001*/ { 0x85a5, 15 }, /*0x0002*/ { 0x85a6, 15 }, @@ -517,71 +517,71 @@ struct audiodefinition audiodefinitions[] = { }; // 44f8 -struct audioconfig audioconfigs[] = { - { /* 0*/ 200, 1000, 1200, -1, 100, -1, 0, 0x00 }, - { /* 1*/ 400, 2500, 3000, -1, 100, 48, 0, 0x20 }, - { /* 2*/ 400, 2500, 3000, -1, 100, -1, 0, 0x10 }, - { /* 3*/ 400, 2500, 3000, -1, 100, 48, 0, 0x30 }, - { /* 4*/ 200, 1000, 1200, -1, 100, -1, 0, 0x00 }, - { /* 5*/ 200, 1000, 1200, -1, 100, -1, 0, 0x00 }, - { /* 6*/ 200, 1000, 1200, -1, 100, -1, 0, 0x00 }, - { /* 7*/ 1000, 3500, 4000, -1, 100, -1, 120, 0x09 }, - { /* 8*/ 1000, 2500, 3000, -1, 100, -1, 30, 0x09 }, - { /* 9*/ 1000, 3500, 4000, -1, 100, -1, 120, 0x09 }, - { /*10*/ 1000, 2500, 3000, -1, 100, -1, 30, 0x09 }, - { /*11*/ 1600, 3000, 3500, -1, 100, -1, 0, 0x09 }, - { /*12*/ 400, 1100, 1400, -1, 100, -1, 140, 0x09 }, - { /*13*/ 400, 1100, 1400, -1, 100, -1, 0, 0x09 }, - { /*14*/ 300, 1200, 1250, -1, 100, -1, 0, 0x01 }, - { /*15*/ 500, 1800, 1900, -1, 100, -1, 0, 0x01 }, - { /*16*/ 1000, 2700, 2900, -1, 100, -1, 0, 0x01 }, - { /*17*/ 1500, 3000, 4000, -1, 100, -1, 0, 0x01 }, - { /*18*/ 2500, 4900, 5000, -1, 100, -1, 0, 0x01 }, - { /*19*/ 5500, 5600, 5700, -1, 100, -1, 0, 0x21 }, - { /*20*/ 20, 400, 500, -1, 100, -1, 0, 0x00 }, - { /*21*/ 300, 1700, 2000, -1, 100, -1, 0, 0x00 }, - { /*22*/ 600, 3500, 5000, -1, 100, -1, 0, 0x00 }, - { /*23*/ 600, 3500, 5000, -1, 100, -1, 0, 0x00 }, - { /*24*/ 600, 3500, 5000, -1, 100, -1, 0, 0x00 }, - { /*25*/ 600, 2500, 3000, -1, 100, -1, 0, 0x00 }, - { /*26*/ 1500, 4900, 5500, -1, 100, -1, 100, 0x01 }, - { /*27*/ 5500, 5740, 5800, -1, 100, -1, 100, 0x01 }, - { /*28*/ 250, 1000, 1300, 2, 100, -1, 120, 0x01 }, - { /*29*/ 200, 2600, 3000, -1, 100, -1, 0, 0x00 }, - { /*30*/ 200, 750, 850, -1, 100, -1, 0, 0x00 }, - { /*31*/ 600, 2000, 3000, -1, 100, -1, 0, 0x00 }, - { /*32*/ 500, 1500, 1800, -1, 100, -1, 0, 0x00 }, - { /*33*/ 800, 2500, 3000, -1, 100, -1, 0, 0x00 }, - { /*34*/ 400, 1500, 2000, -1, 100, -1, 0, 0x00 }, - { /*35*/ 1000, 3500, 5000, -1, 100, -1, 0, 0x01 }, - { /*36*/ 50, 225, 250, -1, 100, -1, 0, 0x01 }, - { /*37*/ 50, 225, 250, -1, 100, -1, 0, 0x01 }, - { /*38*/ 2000, 2500, 2700, -1, 50, -1, 0, 0x09 }, - { /*39*/ 300, 1000, 1200, -1, 100, -1, 0, 0x01 }, - { /*40*/ 300, 1000, 1200, -1, 100, -1, 100, 0x01 }, - { /*41*/ 600, 1500, 1800, -1, 100, -1, 0, 0x01 }, - { /*42*/ 600, 1500, 1800, -1, 100, -1, 100, 0x01 }, - { /*43*/ 800, 2600, 3500, -1, 100, -1, 0, 0x01 }, - { /*44*/ 800, 2600, 3500, -1, 100, -1, 100, 0x01 }, - { /*45*/ 200, 800, 1000, -1, 100, -1, 0, 0x00 }, - { /*46*/ 200, 700, 1000, -1, 100, -1, 0, 0x00 }, - { /*47*/ 1000, 2500, 3000, -1, 100, -1, 0, 0x00 }, - { /*48*/ 500, 1400, 1500, -1, 100, -1, 0, 0x00 }, - { /*49*/ 500, 2000, 2200, -1, 100, -1, 0, 0x00 }, - { /*50*/ 400, 2500, 3000, -1, 50, -1, 0, 0x00 }, - { /*51*/ 400, 2500, 3000, -1, 75, -1, 0, 0x00 }, - { /*52*/ 200, 500, 800, -1, 100, -1, 100, 0x00 }, - { /*53*/ 1000, 1100, 1600, -1, 100, -1, 0, 0x00 }, - { /*54*/ 300, 1300, 1500, -1, 100, -1, 0, 0x01 }, - { /*55*/ 300, 1300, 1500, -1, 100, -1, 200, 0x01 }, - { /*56*/ 250, 600, 900, -1, 100, -1, 200, 0x01 }, - { /*57*/ 50, 180, 250, -1, 100, -1, 200, 0x01 }, - { /*58*/ 100, 400, 600, -1, 100, -1, 200, 0x01 }, - { /*59*/ 700, 1100, 1400, -1, 100, -1, 200, 0x01 }, - { /*60*/ 400, 2500, 3000, -1, 100, -1, 0, 0x04 }, - { /*61*/ 300, 900, 1100, -1, 100, -1, 0, 0x00 }, - { /*62*/ 1000, 2500, 3000, -1, 100, -1, 0, 0x08 }, - { /*63*/ 400, 1000, 1200, -1, 100, -1, 0, 0x00 }, +struct audioconfig g_AudioConfigs[] = { + { /* 0*/ 200, 1000, 1200, -1, 100, -1, 0, 0 }, + { /* 1*/ 400, 2500, 3000, -1, 100, 48, 0, AUDIOCONFIGFLAG_20 }, + { /* 2*/ 400, 2500, 3000, -1, 100, -1, 0, AUDIOCONFIGFLAG_10 }, + { /* 3*/ 400, 2500, 3000, -1, 100, 48, 0, AUDIOCONFIGFLAG_10 | AUDIOCONFIGFLAG_20 }, + { /* 4*/ 200, 1000, 1200, -1, 100, -1, 0, 0 }, + { /* 5*/ 200, 1000, 1200, -1, 100, -1, 0, 0 }, + { /* 6*/ 200, 1000, 1200, -1, 100, -1, 0, 0 }, + { /* 7*/ 1000, 3500, 4000, -1, 100, -1, 120, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /* 8*/ 1000, 2500, 3000, -1, 100, -1, 30, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /* 9*/ 1000, 3500, 4000, -1, 100, -1, 120, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /*10*/ 1000, 2500, 3000, -1, 100, -1, 30, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /*11*/ 1600, 3000, 3500, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /*12*/ 400, 1100, 1400, -1, 100, -1, 140, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /*13*/ 400, 1100, 1400, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /*14*/ 300, 1200, 1250, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*15*/ 500, 1800, 1900, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*16*/ 1000, 2700, 2900, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*17*/ 1500, 3000, 4000, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*18*/ 2500, 4900, 5000, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*19*/ 5500, 5600, 5700, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_20 }, + { /*20*/ 20, 400, 500, -1, 100, -1, 0, 0 }, + { /*21*/ 300, 1700, 2000, -1, 100, -1, 0, 0 }, + { /*22*/ 600, 3500, 5000, -1, 100, -1, 0, 0 }, + { /*23*/ 600, 3500, 5000, -1, 100, -1, 0, 0 }, + { /*24*/ 600, 3500, 5000, -1, 100, -1, 0, 0 }, + { /*25*/ 600, 2500, 3000, -1, 100, -1, 0, 0 }, + { /*26*/ 1500, 4900, 5500, -1, 100, -1, 100, AUDIOCONFIGFLAG_01 }, + { /*27*/ 5500, 5740, 5800, -1, 100, -1, 100, AUDIOCONFIGFLAG_01 }, + { /*28*/ 250, 1000, 1300, 2, 100, -1, 120, AUDIOCONFIGFLAG_01 }, + { /*29*/ 200, 2600, 3000, -1, 100, -1, 0, 0 }, + { /*30*/ 200, 750, 850, -1, 100, -1, 0, 0 }, + { /*31*/ 600, 2000, 3000, -1, 100, -1, 0, 0 }, + { /*32*/ 500, 1500, 1800, -1, 100, -1, 0, 0 }, + { /*33*/ 800, 2500, 3000, -1, 100, -1, 0, 0 }, + { /*34*/ 400, 1500, 2000, -1, 100, -1, 0, 0 }, + { /*35*/ 1000, 3500, 5000, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*36*/ 50, 225, 250, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*37*/ 50, 225, 250, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*38*/ 2000, 2500, 2700, -1, 50, -1, 0, AUDIOCONFIGFLAG_01 | AUDIOCONFIGFLAG_08 }, + { /*39*/ 300, 1000, 1200, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*40*/ 300, 1000, 1200, -1, 100, -1, 100, AUDIOCONFIGFLAG_01 }, + { /*41*/ 600, 1500, 1800, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*42*/ 600, 1500, 1800, -1, 100, -1, 100, AUDIOCONFIGFLAG_01 }, + { /*43*/ 800, 2600, 3500, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*44*/ 800, 2600, 3500, -1, 100, -1, 100, AUDIOCONFIGFLAG_01 }, + { /*45*/ 200, 800, 1000, -1, 100, -1, 0, 0 }, + { /*46*/ 200, 700, 1000, -1, 100, -1, 0, 0 }, + { /*47*/ 1000, 2500, 3000, -1, 100, -1, 0, 0 }, + { /*48*/ 500, 1400, 1500, -1, 100, -1, 0, 0 }, + { /*49*/ 500, 2000, 2200, -1, 100, -1, 0, 0 }, + { /*50*/ 400, 2500, 3000, -1, 50, -1, 0, 0 }, + { /*51*/ 400, 2500, 3000, -1, 75, -1, 0, 0 }, + { /*52*/ 200, 500, 800, -1, 100, -1, 100, 0 }, + { /*53*/ 1000, 1100, 1600, -1, 100, -1, 0, 0 }, + { /*54*/ 300, 1300, 1500, -1, 100, -1, 0, AUDIOCONFIGFLAG_01 }, + { /*55*/ 300, 1300, 1500, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, + { /*56*/ 250, 600, 900, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, + { /*57*/ 50, 180, 250, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, + { /*58*/ 100, 400, 600, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, + { /*59*/ 700, 1100, 1400, -1, 100, -1, 200, AUDIOCONFIGFLAG_01 }, + { /*60*/ 400, 2500, 3000, -1, 100, -1, 0, AUDIOCONFIGFLAG_04 }, + { /*61*/ 300, 900, 1100, -1, 100, -1, 0, 0 }, + { /*62*/ 1000, 2500, 3000, -1, 100, -1, 0, AUDIOCONFIGFLAG_08 }, + { /*63*/ 400, 1000, 1200, -1, 100, -1, 0, 0 }, }; u32 var8005ecd8 = 0x00000000; @@ -2585,13 +2585,13 @@ glabel audioIsFiltered /* 10438: 304e07ff */ andi $t6,$v0,0x7ff /* 1043c: 30887fff */ andi $t0,$a0,0x7fff /* 10440: 00084880 */ sll $t1,$t0,0x2 -/* 10444: 3c0a8006 */ lui $t2,%hi(audiodefinitions+0x2) +/* 10444: 3c0a8006 */ lui $t2,%hi(g_AudioRussMappings+0x2) /* 10448: 01495021 */ addu $t2,$t2,$t1 -/* 1044c: 954adde6 */ lhu $t2,%lo(audiodefinitions+0x2)($t2) -/* 10450: 3c0c8006 */ lui $t4,%hi(audioconfigs+0x1c) +/* 1044c: 954adde6 */ lhu $t2,%lo(g_AudioRussMappings+0x2)($t2) +/* 10450: 3c0c8006 */ lui $t4,%hi(g_AudioConfigs+0x1c) /* 10454: 000a5940 */ sll $t3,$t2,0x5 /* 10458: 018b6021 */ addu $t4,$t4,$t3 -/* 1045c: 8d8ce4f4 */ lw $t4,%lo(audioconfigs+0x1c)($t4) +/* 1045c: 8d8ce4f4 */ lw $t4,%lo(g_AudioConfigs+0x1c)($t4) /* 10460: 318d0010 */ andi $t5,$t4,0x10 /* 10464: 51a0000c */ beqzl $t5,.L00010498 /* 10468: 00001025 */ or $v0,$zero,$zero @@ -2622,9 +2622,9 @@ glabel audioIsFiltered // // 434 // if ((audio_id << 16) >> 31) { // u32 index = audio_id & 0x7fff; -// u32 configindex = audiodefinitions[index].audioconfig_index; +// u32 configindex = g_AudioRussMappings[index].audioconfig_index; // -// if (audioconfigs[configindex].flags & 0x10) { +// if (g_AudioConfigs[configindex].flags & 0x10) { // return true; // } // } else { @@ -2685,8 +2685,8 @@ glabel audioAdjust /* 10524: 8fac002c */ lw $t4,0x2c($sp) /* 10528: a7a20020 */ sh $v0,0x20($sp) /* 1052c: 8fac0020 */ lw $t4,0x20($sp) -/* 10530: 3c058006 */ lui $a1,%hi(audiodefinitions) -/* 10534: 24a5dde4 */ addiu $a1,$a1,%lo(audiodefinitions) +/* 10530: 3c058006 */ lui $a1,%hi(g_AudioRussMappings) +/* 10534: 24a5dde4 */ addiu $a1,$a1,%lo(g_AudioRussMappings) /* 10538: 000c6fc2 */ srl $t5,$t4,0x1f /* 1053c: 11a0002e */ beqz $t5,.L000105f8 /* 10540: 00407025 */ or $t6,$v0,$zero @@ -2696,8 +2696,8 @@ glabel audioAdjust /* 10550: 00b85021 */ addu $t2,$a1,$t8 /* 10554: 97220002 */ lhu $v0,0x2($t9) /* 10558: 854b0000 */ lh $t3,0x0($t2) -/* 1055c: 3c0f8006 */ lui $t7,%hi(audioconfigs) -/* 10560: 25efe4d8 */ addiu $t7,$t7,%lo(audioconfigs) +/* 1055c: 3c0f8006 */ lui $t7,%hi(g_AudioConfigs) +/* 10560: 25efe4d8 */ addiu $t7,$t7,%lo(g_AudioConfigs) /* 10564: 00027140 */ sll $t6,$v0,0x5 /* 10568: a7ab001c */ sh $t3,0x1c($sp) /* 1056c: 93ac001c */ lbu $t4,0x1c($sp) @@ -2873,8 +2873,8 @@ glabel func00010718 /* 107c4: 8fad004c */ lw $t5,0x4c($sp) /* 107c8: a7a90030 */ sh $t1,0x30($sp) /* 107cc: 8faa0030 */ lw $t2,0x30($sp) -/* 107d0: 3c058006 */ lui $a1,%hi(audiodefinitions) -/* 107d4: 24a5dde4 */ addiu $a1,$a1,%lo(audiodefinitions) +/* 107d0: 3c058006 */ lui $a1,%hi(g_AudioRussMappings) +/* 107d4: 24a5dde4 */ addiu $a1,$a1,%lo(g_AudioRussMappings) /* 107d8: 000a5fc2 */ srl $t3,$t2,0x1f /* 107dc: 11600031 */ beqz $t3,.L000108a4 /* 107e0: 24060064 */ addiu $a2,$zero,0x64 @@ -2885,10 +2885,10 @@ glabel func00010718 /* 107f4: 85f90000 */ lh $t9,0x0($t7) /* 107f8: 00aec021 */ addu $t8,$a1,$t6 /* 107fc: 97020002 */ lhu $v0,0x2($t8) -/* 10800: 3c0d8006 */ lui $t5,%hi(audioconfigs) +/* 10800: 3c0d8006 */ lui $t5,%hi(g_AudioConfigs) /* 10804: a7b9002c */ sh $t9,0x2c($sp) /* 10808: 93aa002c */ lbu $t2,0x2c($sp) -/* 1080c: 25ade4d8 */ addiu $t5,$t5,%lo(audioconfigs) +/* 1080c: 25ade4d8 */ addiu $t5,$t5,%lo(g_AudioConfigs) /* 10810: 00026140 */ sll $t4,$v0,0x5 /* 10814: 018d2021 */ addu $a0,$t4,$t5 /* 10818: 8c830010 */ lw $v1,0x10($a0) @@ -3020,10 +3020,10 @@ glabel audioStart /* 109cc: 11800006 */ beqz $t4,.L000109e8 /* 109d0: 31ae7fff */ andi $t6,$t5,0x7fff /* 109d4: 000e7880 */ sll $t7,$t6,0x2 -/* 109d8: 3c048006 */ lui $a0,%hi(audiodefinitions) +/* 109d8: 3c048006 */ lui $a0,%hi(g_AudioRussMappings) /* 109dc: 008f2021 */ addu $a0,$a0,$t7 /* 109e0: 10000001 */ b .L000109e8 -/* 109e4: 8484dde4 */ lh $a0,%lo(audiodefinitions)($a0) +/* 109e4: 8484dde4 */ lh $a0,%lo(g_AudioRussMappings)($a0) .L000109e8: /* 109e8: 308307ff */ andi $v1,$a0,0x7ff /* 109ec: 10610003 */ beq $v1,$at,.L000109fc @@ -3119,9 +3119,9 @@ glabel func00010ae4 /* 10b24: 1100000a */ beqz $t0,.L00010b50 /* 10b28: 26104eb0 */ addiu $s0,$s0,%lo(var80094eb0) /* 10b2c: 000a5880 */ sll $t3,$t2,0x2 -/* 10b30: 3c0c8006 */ lui $t4,%hi(audiodefinitions) +/* 10b30: 3c0c8006 */ lui $t4,%hi(g_AudioRussMappings) /* 10b34: 018b6021 */ addu $t4,$t4,$t3 -/* 10b38: 858cdde4 */ lh $t4,%lo(audiodefinitions)($t4) +/* 10b38: 858cdde4 */ lh $t4,%lo(g_AudioRussMappings)($t4) /* 10b3c: a7ac0020 */ sh $t4,0x20($sp) /* 10b40: 93ad0020 */ lbu $t5,0x20($sp) /* 10b44: 31aeff7f */ andi $t6,$t5,0xff7f @@ -3159,8 +3159,8 @@ glabel func00010ae4 /* 10bb4: 00084fc2 */ srl $t1,$t0,0x1f /* 10bb8: 1120002e */ beqz $t1,.L00010c74 /* 10bbc: 314b7fff */ andi $t3,$t2,0x7fff -/* 10bc0: 3c028006 */ lui $v0,%hi(audioconfigs) -/* 10bc4: 2442e4d8 */ addiu $v0,$v0,%lo(audioconfigs) +/* 10bc0: 3c028006 */ lui $v0,%hi(g_AudioConfigs) +/* 10bc4: 2442e4d8 */ addiu $v0,$v0,%lo(g_AudioConfigs) /* 10bc8: 000b6140 */ sll $t4,$t3,0x5 /* 10bcc: 004c6821 */ addu $t5,$v0,$t4 /* 10bd0: 8daf0010 */ lw $t7,0x10($t5) @@ -3271,13 +3271,13 @@ glabel func00010ae4 /* 10d58: 8fae0024 */ lw $t6,0x24($sp) .L00010d5c: /* 10d5c: 97ab0024 */ lhu $t3,0x24($sp) -/* 10d60: 3c0f8006 */ lui $t7,%hi(audioconfigs+0x1c) +/* 10d60: 3c0f8006 */ lui $t7,%hi(g_AudioConfigs+0x1c) /* 10d64: 000e4fc2 */ srl $t1,$t6,0x1f /* 10d68: 11200007 */ beqz $t1,.L00010d88 /* 10d6c: 316d7fff */ andi $t5,$t3,0x7fff /* 10d70: 000d5140 */ sll $t2,$t5,0x5 /* 10d74: 01ea7821 */ addu $t7,$t7,$t2 -/* 10d78: 8defe4f4 */ lw $t7,%lo(audioconfigs+0x1c)($t7) +/* 10d78: 8defe4f4 */ lw $t7,%lo(g_AudioConfigs+0x1c)($t7) /* 10d7c: 31ec0004 */ andi $t4,$t7,0x4 /* 10d80: 55800005 */ bnezl $t4,.L00010d98 /* 10d84: 24080003 */ addiu $t0,$zero,0x3