Decompile speakersSetMode

This commit is contained in:
Ryan Dwyer
2021-10-12 08:22:10 +10:00
parent 6f602404cc
commit e79de97e7c
7 changed files with 40 additions and 73 deletions
+1
View File
@@ -97,6 +97,7 @@ $(B_DIR)/lib/ultra/libc/llcvt.o: MIPSISET := -mips3 -32
$(B_DIR)/lib/lib_2fba0.o: OPT_LVL := -g
$(B_DIR)/lib/lib_30ce0.o: OPT_LVL := -g
$(B_DIR)/lib/mp3.o: OPT_LVL := -g
$(B_DIR)/lib/speaker.o: OPT_LVL := -g
$(B_DIR)/lib/lib_3a100.o: OPT_LVL := -g
$(B_DIR)/lib/lib_3d280.o: OPT_LVL := -g
$(B_DIR)/lib/lib_3e730.o: OPT_LVL := -g
+5
View File
@@ -3450,6 +3450,11 @@
#define SPAWNFLAG_RTRACKED 0x00008000
#define SPAWNFLAG_BLUESIGHT 0x00010000
#define SPEAKERMODE_MONO 1
#define SPEAKERMODE_STEREO 2
#define SPEAKERMODE_HEADPHONE 3
#define SPEAKERMODE_SURROUND 4
#define SPECIALDIE_NONE 0
#define SPECIALDIE_FALLBACK 1
#define SPECIALDIE_ROLL1 2
+1 -1
View File
@@ -4,7 +4,7 @@
#include "data.h"
#include "types.h"
void speaker00034030(s32 arg0);
void speakersSetMode(u8 mode);
void speaker00034104(s32 index, s32 arg1);
#endif
+3 -4
View File
@@ -7053,10 +7053,9 @@ struct mp3vars {
};
struct var8009c340 {
u8 unk00;
u8 unk01;
u8 unk02;
u8 unk03;
u8 surround;
u8 mono;
u8 headphone;
};
struct var80095210 {
+2 -2
View File
@@ -791,10 +791,10 @@ void func00038924(struct mp3vars *vars)
vars->var8009c39e = vars->var8009c3e4;
if (vars->var8009c39c != vars->var8009c3ec) {
if (var8009c340.unk02) {
if (var8009c340.headphone) {
vars->var8009c39c = ((s16)(vars->var8009c3ec & 0x7f) >> 1) + 32;
} else {
if (var8009c340.unk01) {
if (var8009c340.mono) {
vars->var8009c39c = 64;
} else {
vars->var8009c39c = vars->var8009c3ec;
+4 -4
View File
@@ -1695,16 +1695,16 @@ void sndSetSoundMode(s32 mode)
switch (mode) {
case SOUNDMODE_MONO:
speaker00034030(1);
speakersSetMode(SPEAKERMODE_MONO);
break;
case SOUNDMODE_STEREO:
speaker00034030(2);
speakersSetMode(SPEAKERMODE_STEREO);
break;
case SOUNDMODE_HEADPHONE:
speaker00034030(3);
speakersSetMode(SPEAKERMODE_HEADPHONE);
break;
case SOUNDMODE_SURROUND:
speaker00034030(4);
speakersSetMode(SPEAKERMODE_SURROUND);
break;
}
+24 -62
View File
@@ -22,68 +22,30 @@ struct var8009c340 var8009c340;
u32 var8009c344;
u32 var8009c348;
GLOBAL_ASM(
glabel speaker00034030
/* 34030: 27bdffd8 */ addiu $sp,$sp,-40
/* 34034: afbf001c */ sw $ra,0x1c($sp)
/* 34038: afa40028 */ sw $a0,0x28($sp)
/* 3403c: afb00018 */ sw $s0,0x18($sp)
/* 34040: 3c01800a */ lui $at,%hi(var8009c340)
/* 34044: a020c340 */ sb $zero,%lo(var8009c340)($at)
/* 34048: 3c01800a */ lui $at,%hi(var8009c340+0x1)
/* 3404c: a020c341 */ sb $zero,%lo(var8009c340+0x1)($at)
/* 34050: 3c01800a */ lui $at,%hi(var8009c340+0x2)
/* 34054: a020c342 */ sb $zero,%lo(var8009c340+0x2)($at)
/* 34058: 93b0002b */ lbu $s0,0x2b($sp)
/* 3405c: 24010001 */ addiu $at,$zero,0x1
/* 34060: 12010009 */ beq $s0,$at,.L00034088
/* 34064: 00000000 */ nop
/* 34068: 24010003 */ addiu $at,$zero,0x3
/* 3406c: 1201000b */ beq $s0,$at,.L0003409c
/* 34070: 00000000 */ nop
/* 34074: 24010004 */ addiu $at,$zero,0x4
/* 34078: 1201000d */ beq $s0,$at,.L000340b0
/* 3407c: 00000000 */ nop
/* 34080: 10000010 */ b .L000340c4
/* 34084: 00000000 */ nop
.L00034088:
/* 34088: 240e0001 */ addiu $t6,$zero,0x1
/* 3408c: 3c01800a */ lui $at,%hi(var8009c340+0x1)
/* 34090: a02ec341 */ sb $t6,%lo(var8009c340+0x1)($at)
/* 34094: 1000000b */ b .L000340c4
/* 34098: 00000000 */ nop
.L0003409c:
/* 3409c: 240f0001 */ addiu $t7,$zero,0x1
/* 340a0: 3c01800a */ lui $at,%hi(var8009c340+0x2)
/* 340a4: a02fc342 */ sb $t7,%lo(var8009c340+0x2)($at)
/* 340a8: 10000006 */ b .L000340c4
/* 340ac: 00000000 */ nop
.L000340b0:
/* 340b0: 24180001 */ addiu $t8,$zero,0x1
/* 340b4: 3c01800a */ lui $at,%hi(var8009c340)
/* 340b8: a038c340 */ sb $t8,%lo(var8009c340)($at)
/* 340bc: 10000001 */ b .L000340c4
/* 340c0: 00000000 */ nop
.L000340c4:
/* 340c4: afa00024 */ sw $zero,0x24($sp)
.L000340c8:
/* 340c8: 8fa40024 */ lw $a0,0x24($sp)
/* 340cc: 0c00d041 */ jal speaker00034104
/* 340d0: 00002825 */ or $a1,$zero,$zero
/* 340d4: 8fb90024 */ lw $t9,0x24($sp)
/* 340d8: 27280001 */ addiu $t0,$t9,0x1
/* 340dc: 29010002 */ slti $at,$t0,0x2
/* 340e0: 1420fff9 */ bnez $at,.L000340c8
/* 340e4: afa80024 */ sw $t0,0x24($sp)
/* 340e8: 10000001 */ b .L000340f0
/* 340ec: 00000000 */ nop
.L000340f0:
/* 340f0: 8fbf001c */ lw $ra,0x1c($sp)
/* 340f4: 8fb00018 */ lw $s0,0x18($sp)
/* 340f8: 27bd0028 */ addiu $sp,$sp,0x28
/* 340fc: 03e00008 */ jr $ra
/* 34100: 00000000 */ nop
);
void speakersSetMode(u8 mode)
{
s32 i;
var8009c340.surround = 0;
var8009c340.mono = 0;
var8009c340.headphone = 0;
switch (mode) {
case SPEAKERMODE_MONO:
var8009c340.mono = 1;
break;
case SPEAKERMODE_HEADPHONE:
var8009c340.headphone = 1;
break;
case SPEAKERMODE_SURROUND:
var8009c340.surround = 1;
break;
}
for (i = 0; i < 2; i++) {
speaker00034104(i, 0);
}
}
GLOBAL_ASM(
glabel speaker00034104