Decompile menuPlaySound

This commit is contained in:
Ryan Dwyer 2020-09-25 17:06:04 +10:00
parent 312f92294c
commit 4f972402e6
6 changed files with 91 additions and 156 deletions

View File

@ -10808,14 +10808,14 @@ bool aiChrBeginOrEndTeleport(void)
{
u8 *cmd = g_Vars.ailist + g_Vars.aioffset;
u16 pad_id = cmd[3] | (cmd[2] << 8);
f32 fvalue[1];
f32 fvalue;
struct chrdata *chr;
s32 a;
u32 playernum;
u32 prevplayernum;
s32 b;
s32 c;
fvalue[0] = 0.4;
fvalue = 0.4;
chr = chrFindById(g_Vars.chrdata, cmd[4]);
prevplayernum = g_Vars.currentplayernum;
@ -10839,7 +10839,7 @@ bool aiChrBeginOrEndTeleport(void)
c = audioStart(var80095200, 0x0433, NULL, -1, -1, -1, -1, -1);
if (c) {
func00033e50(c, 16, fvalue[0]);
func00033e50(c, 16, *(u32 *)&fvalue);
}
osSetThreadPri(0, a);
@ -10861,7 +10861,7 @@ bool aiIfChrTeleportFullWhite(void)
struct chrdata *chr = chrFindById(g_Vars.chrdata, cmd[3]);
u32 prevplayernum = g_Vars.currentplayernum;
s32 a;
f32 fvalue[1];
f32 fvalue;
s32 b;
s32 c;
@ -10873,14 +10873,14 @@ bool aiIfChrTeleportFullWhite(void)
if (g_Vars.currentplayer->teleportstate < TELEPORTSTATE_3) {
g_Vars.aioffset += 4;
} else {
fvalue[0] = 0.4;
fvalue = 0.4;
a = osGetThreadPri(0);
b = osGetThreadPri(&var800915e0);
osSetThreadPri(0, b + 1);
c = audioStart(var80095200, 0x8055, NULL, -1, -1, -1, -1, -1);
if (c) {
func00033e50(c, 16, fvalue[0]);
func00033e50(c, 16, *(u32 *)&fvalue);
}
osSetThreadPri(0, a);

View File

@ -5637,7 +5637,7 @@ const char var7f1adfb8[] = "";
bool menuTickItemSelectable(struct menuitem *item, u8 *arg1, u32 arg2)
{
if ((arg2 & 2) && arg1[2]) {
menuPlaySound(3);
menuPlaySound(MENUSOUND_SELECT);
if (item->param1 & 0x00000008) {
menuPopDialog();
@ -7231,10 +7231,10 @@ bool menuTickItemCheckbox(struct menuitem *item, u8 *arg1, u32 arg2)
if ((arg2 & 2) && arg1[2]) {
if (item->handler && item->handler(MENUOP_GET, item, &data) == 1) {
data.checkbox.value = 0;
menuPlaySound(9);
menuPlaySound(MENUSOUND_TOGGLEOFF);
} else {
data.checkbox.value = 1;
menuPlaySound(8);
menuPlaySound(MENUSOUND_TOGGLEON);
}
if (item->handler) {

View File

@ -87,151 +87,74 @@ char *g_StringPointer = g_CheatMarqueeString;
char *g_StringPointer2 = &g_CheatMarqueeString[125];
s32 g_MpPlayerNum = 0;
GLOBAL_ASM(
glabel menuPlaySound
.late_rodata
glabel var7f1b27c0
.word menuPlaySound+0x40 # f0f0a30
glabel var7f1b27c4
.word menuPlaySound+0x48 # f0f0a38
glabel var7f1b27c8
.word menuPlaySound+0x50 # f0f0a40
glabel var7f1b27cc
.word menuPlaySound+0x58 # f0f0a48
glabel var7f1b27d0
.word menuPlaySound+0x60 # f0f0a50
glabel var7f1b27d4
.word menuPlaySound+0x78 # f0f0a68
glabel var7f1b27d8
.word menuPlaySound+0xc8 # f0f0ab8
glabel var7f1b27dc
.word menuPlaySound+0xc8 # f0f0ab8
glabel var7f1b27e0
.word menuPlaySound+0x80 # f0f0a70
glabel var7f1b27e4
.word menuPlaySound+0x88 # f0f0a78
glabel var7f1b27e8
.word menuPlaySound+0x90 # f0f0a80
glabel var7f1b27ec
.word menuPlaySound+0xc8 # f0f0ab8
glabel var7f1b27f0
.word menuPlaySound+0x98 # f0f0a88
glabel var7f1b27f4
.word menuPlaySound+0xb4 # f0f0aa4
glabel var7f1b27f8
.word 0x3ecccccd
glabel var7f1b27fc
.word 0x3ed68d76
.text
/* f0f09f0: 3c013f80 */ lui $at,0x3f80
/* f0f09f4: 44812000 */ mtc1 $at,$f4
/* f0f09f8: 27bdffc0 */ addiu $sp,$sp,-64
/* f0f09fc: 2c81000e */ sltiu $at,$a0,0xe
/* f0f0a00: afbf0024 */ sw $ra,0x24($sp)
/* f0f0a04: 2403ffff */ addiu $v1,$zero,-1
/* f0f0a08: 00004025 */ or $t0,$zero,$zero
/* f0f0a0c: 00001025 */ or $v0,$zero,$zero
/* f0f0a10: 10200029 */ beqz $at,.L0f0f0ab8
/* f0f0a14: e7a40030 */ swc1 $f4,0x30($sp)
/* f0f0a18: 00047080 */ sll $t6,$a0,0x2
/* f0f0a1c: 3c017f1b */ lui $at,%hi(var7f1b27c0)
/* f0f0a20: 002e0821 */ addu $at,$at,$t6
/* f0f0a24: 8c2e27c0 */ lw $t6,%lo(var7f1b27c0)($at)
/* f0f0a28: 01c00008 */ jr $t6
/* f0f0a2c: 00000000 */ nop
/* f0f0a30: 10000021 */ b .L0f0f0ab8
/* f0f0a34: 240305bb */ addiu $v1,$zero,0x5bb
/* f0f0a38: 1000001f */ b .L0f0f0ab8
/* f0f0a3c: 240305bc */ addiu $v1,$zero,0x5bc
/* f0f0a40: 1000001d */ b .L0f0f0ab8
/* f0f0a44: 24030441 */ addiu $v1,$zero,0x441
/* f0f0a48: 1000001b */ b .L0f0f0ab8
/* f0f0a4c: 240305dd */ addiu $v1,$zero,0x5dd
/* f0f0a50: 3c017f1b */ lui $at,%hi(var7f1b27f8)
/* f0f0a54: c42627f8 */ lwc1 $f6,%lo(var7f1b27f8)($at)
/* f0f0a58: 34038040 */ dli $v1,0x8040
/* f0f0a5c: 24080001 */ addiu $t0,$zero,0x1
/* f0f0a60: 10000015 */ b .L0f0f0ab8
/* f0f0a64: e7a60030 */ swc1 $f6,0x30($sp)
/* f0f0a68: 10000013 */ b .L0f0f0ab8
/* f0f0a6c: 34038098 */ dli $v1,0x8098
/* f0f0a70: 10000011 */ b .L0f0f0ab8
/* f0f0a74: 240305dd */ addiu $v1,$zero,0x5dd
/* f0f0a78: 1000000f */ b .L0f0f0ab8
/* f0f0a7c: 2403043e */ addiu $v1,$zero,0x43e
/* f0f0a80: 1000000d */ b .L0f0f0ab8
/* f0f0a84: 2403043e */ addiu $v1,$zero,0x43e
/* f0f0a88: 3c014060 */ lui $at,0x4060
/* f0f0a8c: 44814000 */ mtc1 $at,$f8
/* f0f0a90: 240300ea */ addiu $v1,$zero,0xea
/* f0f0a94: 24080001 */ addiu $t0,$zero,0x1
/* f0f0a98: 24020001 */ addiu $v0,$zero,0x1
/* f0f0a9c: 10000006 */ b .L0f0f0ab8
/* f0f0aa0: e7a80030 */ swc1 $f8,0x30($sp)
/* f0f0aa4: 3c017f1b */ lui $at,%hi(var7f1b27fc)
/* f0f0aa8: c42a27fc */ lwc1 $f10,%lo(var7f1b27fc)($at)
/* f0f0aac: 2403002b */ addiu $v1,$zero,0x2b
/* f0f0ab0: 24080001 */ addiu $t0,$zero,0x1
/* f0f0ab4: e7aa0030 */ swc1 $f10,0x30($sp)
.L0f0f0ab8:
/* f0f0ab8: 2401ffff */ addiu $at,$zero,-1
/* f0f0abc: 10610030 */ beq $v1,$at,.L0f0f0b80
/* f0f0ac0: 00002025 */ or $a0,$zero,$zero
/* f0f0ac4: afa20034 */ sw $v0,0x34($sp)
/* f0f0ac8: afa3003c */ sw $v1,0x3c($sp)
/* f0f0acc: 0c012230 */ jal osGetThreadPri
/* f0f0ad0: afa80038 */ sw $t0,0x38($sp)
/* f0f0ad4: 3c048009 */ lui $a0,%hi(var800915e0)
/* f0f0ad8: afa20028 */ sw $v0,0x28($sp)
/* f0f0adc: 0c012230 */ jal osGetThreadPri
/* f0f0ae0: 248415e0 */ addiu $a0,$a0,%lo(var800915e0)
/* f0f0ae4: 00002025 */ or $a0,$zero,$zero
/* f0f0ae8: 0c01210c */ jal osSetThreadPri
/* f0f0aec: 24450001 */ addiu $a1,$v0,0x1
/* f0f0af0: 8fa3003c */ lw $v1,0x3c($sp)
/* f0f0af4: 3c01bf80 */ lui $at,0xbf80
/* f0f0af8: 44818000 */ mtc1 $at,$f16
/* f0f0afc: 00032c00 */ sll $a1,$v1,0x10
/* f0f0b00: 00057c03 */ sra $t7,$a1,0x10
/* f0f0b04: 3c048009 */ lui $a0,%hi(var80095200)
/* f0f0b08: 2418ffff */ addiu $t8,$zero,-1
/* f0f0b0c: 2419ffff */ addiu $t9,$zero,-1
/* f0f0b10: 2409ffff */ addiu $t1,$zero,-1
/* f0f0b14: afa9001c */ sw $t1,0x1c($sp)
/* f0f0b18: afb90018 */ sw $t9,0x18($sp)
/* f0f0b1c: afb80010 */ sw $t8,0x10($sp)
/* f0f0b20: 8c845200 */ lw $a0,%lo(var80095200)($a0)
/* f0f0b24: 01e02825 */ or $a1,$t7,$zero
/* f0f0b28: 00003025 */ or $a2,$zero,$zero
/* f0f0b2c: 2407ffff */ addiu $a3,$zero,-1
/* f0f0b30: 0c004241 */ jal audioStart
/* f0f0b34: e7b00014 */ swc1 $f16,0x14($sp)
/* f0f0b38: 8fa80038 */ lw $t0,0x38($sp)
/* f0f0b3c: 10400007 */ beqz $v0,.L0f0f0b5c
/* f0f0b40: 00402025 */ or $a0,$v0,$zero
/* f0f0b44: 11000005 */ beqz $t0,.L0f0f0b5c
/* f0f0b48: 24050010 */ addiu $a1,$zero,0x10
/* f0f0b4c: 8fa60030 */ lw $a2,0x30($sp)
/* f0f0b50: 0c00cf94 */ jal func00033e50
/* f0f0b54: afa2002c */ sw $v0,0x2c($sp)
/* f0f0b58: 8fa4002c */ lw $a0,0x2c($sp)
.L0f0f0b5c:
/* f0f0b5c: 10800005 */ beqz $a0,.L0f0f0b74
/* f0f0b60: 8faa0034 */ lw $t2,0x34($sp)
/* f0f0b64: 11400003 */ beqz $t2,.L0f0f0b74
/* f0f0b68: 24050008 */ addiu $a1,$zero,0x8
/* f0f0b6c: 0c00cf94 */ jal func00033e50
/* f0f0b70: 24064000 */ addiu $a2,$zero,0x4000
.L0f0f0b74:
/* f0f0b74: 00002025 */ or $a0,$zero,$zero
/* f0f0b78: 0c01210c */ jal osSetThreadPri
/* f0f0b7c: 8fa50028 */ lw $a1,0x28($sp)
.L0f0f0b80:
/* f0f0b80: 8fbf0024 */ lw $ra,0x24($sp)
/* f0f0b84: 27bd0040 */ addiu $sp,$sp,0x40
/* f0f0b88: 03e00008 */ jr $ra
/* f0f0b8c: 00000000 */ nop
);
void menuPlaySound(s32 menusound)
{
s32 sound = -1;
s32 flag1 = false;
s32 flag2 = false;
f32 speed = 1;
switch (menusound) {
case MENUSOUND_SWIPE:
sound = 0x5bb;
break;
case MENUSOUND_OPENDIALOG:
sound = 0x5bc;
break;
case MENUSOUND_FOCUS:
sound = 0x441;
break;
case MENUSOUND_SELECT:
sound = 0x5dd;
break;
case MENUSOUND_ERROR:
speed = 0.4f;
sound = 0x8040;
flag1 = true;
break;
case MENUSOUND_EXPLOSION:
sound = 0x8098;
break;
case MENUSOUND_TOGGLEON:
sound = 0x5dd;
break;
case MENUSOUND_TOGGLEOFF:
sound = 0x43e;
break;
case MENUSOUND_SUBFOCUS:
sound = 0x43e;
break;
case MENUSOUND_KEYBOARDFOCUS:
sound = 0xea;
flag1 = true;
flag2 = true;
speed = 3.5f;
break;
case MENUSOUND_KEYBOARDCANCEL:
sound = 0x2b;
flag1 = true;
speed = 0.41904801130295f;
break;
}
if (sound != -1) {
s32 handle;
OSPri prevpri = osGetThreadPri(NULL);
osSetThreadPri(0, osGetThreadPri(&var800915e0) + 1);
handle = audioStart(var80095200, sound, NULL, -1, -1, -1, -1, -1);
if (handle && flag1) {
func00033e50(handle, 16, *(u32 *)&speed);
}
if (handle && flag2) {
func00033e50(handle, 8, 0x4000);
}
osSetThreadPri(0, prevpri);
}
}
bool menuIsSoloMissionOrMp(void)
{

View File

@ -1118,6 +1118,18 @@
#define MENUROOT_4MBMAINMENU 11
#define MENUROOT_TRAINING 13
#define MENUSOUND_SWIPE 0x00 // Navigating to left/right dialog
#define MENUSOUND_OPENDIALOG 0x01
#define MENUSOUND_FOCUS 0x02 // Focusing a different item
#define MENUSOUND_SELECT 0x03
#define MENUSOUND_ERROR 0x04
#define MENUSOUND_EXPLOSION 0x05
#define MENUSOUND_TOGGLEON 0x08 // Checking a checkbox
#define MENUSOUND_TOGGLEOFF 0x09 // Unchecking a checkbox, opening a dropdown, cancelling a dropdown
#define MENUSOUND_SUBFOCUS 0x0a // Changing focus within a list or dropdown
#define MENUSOUND_KEYBOARDFOCUS 0x0c // Changing focus within a keyboard item
#define MENUSOUND_KEYBOARDCANCEL 0x0d // Pressing A on a keyboard's cancel button
#define MISCBIO_MAIANS 0
#define MISCBIO_SKEDAR 1
#define MISCBIO_BACKGROUND 2

View File

@ -7,7 +7,7 @@ extern const struct menucolourpalette g_MenuColourPalettes[];
extern const struct menucolourpalette g_MenuColourPalettes2[];
extern const struct menucolourpalette g_MenuColourPalettes3[];
void menuPlaySound(s32 arg0);
void menuPlaySound(s32 menusound);
bool menuIsSoloMissionOrMp(void);
bool currentPlayerIsMenuOpenInSoloOrMp(void);
bool func0f0f0c68(void);

View File

@ -21,7 +21,7 @@ u32 func00033c30(void);
u32 func00033cf0(void);
u32 func00033db0(void);
u32 func00033dd8(void);
void func00033e50(s32 arg0, s32 arg1, f32 arg2);
void func00033e50(s32 arg0, s32 arg1, u32 arg2);
u32 func00033ec4(void);
u32 func00033f08(void);
u32 func00033f24(void);