From d5ea72322a62a5df7d4296db43e0b226b46cf3be Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 28 Aug 2020 19:36:59 +1000 Subject: [PATCH] Decompile stageGetAmbientTrack --- src/game/data/data_02a0e0.c | 2 +- src/game/game_16cfa0.c | 10 +++--- src/game/game_176080.c | 54 ++++++++++++----------------- src/include/game/data/data_02a0e0.h | 2 +- src/include/game/game_176080.h | 2 +- 5 files changed, 30 insertions(+), 40 deletions(-) diff --git a/src/game/data/data_02a0e0.c b/src/game/data/data_02a0e0.c index 6037e3e9a..ff835db25 100644 --- a/src/game/data/data_02a0e0.c +++ b/src/game/data/data_02a0e0.c @@ -384,7 +384,7 @@ u32 var800844f8 = 0x00000000; u32 var800844fc = 0x00000000; // 2a520 -struct stagemusic stagemusictable[] = { +struct stagemusic g_StageTracks[] = { // stage, main theme, background sfx, X theme { STAGE_CITRAINING, MUSIC_CI, -1, MUSIC_DEFENSE_X }, { STAGE_DEFECTION, MUSIC_DEFECTION, MUSIC_DDTOWER_SFX, MUSIC_DEFECTION_X }, diff --git a/src/game/game_16cfa0.c b/src/game/game_16cfa0.c index 425d26ae6..3157ddb84 100644 --- a/src/game/game_16cfa0.c +++ b/src/game/game_16cfa0.c @@ -205,7 +205,7 @@ void func0f16d4b8(f32 arg0) } } -#define TRACKNUM() (var800840cc != -1 ? var800840cc : func0f176cd8(var800aa5d0)) +#define TRACKNUM() (var800840cc != -1 ? var800840cc : stageGetAmbientTrack(var800aa5d0)) void func0f16d548(f32 arg0) { @@ -215,9 +215,9 @@ void func0f16d548(f32 arg0) if (var800840cc != -1) { pass = true; } else if (audioIsAnyPlayerInRoomWithFlag4000()) { - if (g_Vars.tickmode != TICKMODE_6 && TRACKNUM() != func0f176cd8(var800aa5d0)) { + if (g_Vars.tickmode != TICKMODE_6 && TRACKNUM() != stageGetAmbientTrack(var800aa5d0)) { func0f16d240(5); - audioSetAuxTrack(func0f176cd8(var800aa5d0)); + audioSetAuxTrack(stageGetAmbientTrack(var800aa5d0)); return; } @@ -305,7 +305,7 @@ void func0f16d9a8(s32 stagenum) func0f16d4b8(0); - if (func0f176cd8(var800aa5d0) >= 0) { + if (stageGetAmbientTrack(var800aa5d0) >= 0) { func0f16d548(0); } } @@ -534,7 +534,7 @@ void func0f16e138(void) func0f16d2ac(5, 1, 1); } } else { - if (func0f176cd8(var800aa5d0) >= 0) { + if (stageGetAmbientTrack(var800aa5d0) >= 0) { func0f16d548(1); } } diff --git a/src/game/game_176080.c b/src/game/game_176080.c index abd5efbb1..24e1a4ebb 100644 --- a/src/game/game_176080.c +++ b/src/game/game_176080.c @@ -848,13 +848,13 @@ s32 stageGetPrimaryTrack(s32 stagenum) i = 0; - while (stagemusictable[i].stagenum) { - if (stagemusictable[i].stagenum == stagenum) { - if (stagemusictable[i].primarytrack == -1) { + while (g_StageTracks[i].stagenum) { + if (g_StageTracks[i].stagenum == stagenum) { + if (g_StageTracks[i].primarytrack == -1) { return func0f18c4c0(); } - return stagemusictable[i].primarytrack; + return g_StageTracks[i].primarytrack; } i++; @@ -863,37 +863,27 @@ s32 stageGetPrimaryTrack(s32 stagenum) return func0f18c4c0(); } -GLOBAL_ASM( -glabel func0f176cd8 -/* f176cd8: 3c0e8008 */ lui $t6,%hi(stagemusictable) -/* f176cdc: 85ce4500 */ lh $t6,%lo(stagemusictable)($t6) -/* f176ce0: 3c0f8008 */ lui $t7,%hi(stagemusictable) -/* f176ce4: 25e34500 */ addiu $v1,$t7,%lo(stagemusictable) -/* f176ce8: 51c0000b */ beqzl $t6,.L0f176d18 -/* f176cec: 2402ffff */ addiu $v0,$zero,-1 -/* f176cf0: 84620000 */ lh $v0,0x0($v1) -.L0f176cf4: -/* f176cf4: 54820004 */ bnel $a0,$v0,.L0f176d08 -/* f176cf8: 84620008 */ lh $v0,0x8($v1) -/* f176cfc: 03e00008 */ jr $ra -/* f176d00: 84620004 */ lh $v0,0x4($v1) -/* f176d04: 84620008 */ lh $v0,0x8($v1) -.L0f176d08: -/* f176d08: 24630008 */ addiu $v1,$v1,0x8 -/* f176d0c: 1440fff9 */ bnez $v0,.L0f176cf4 -/* f176d10: 00000000 */ nop -/* f176d14: 2402ffff */ addiu $v0,$zero,-1 -.L0f176d18: -/* f176d18: 03e00008 */ jr $ra -/* f176d1c: 00000000 */ nop -); +s16 stageGetAmbientTrack(s32 stagenum) +{ + s32 i = 0; + + while (g_StageTracks[i].stagenum) { + if (g_StageTracks[i].stagenum == stagenum) { + return g_StageTracks[i].ambienttrack; + } + + i++; + } + + return -1; +} GLOBAL_ASM( glabel func0f176d20 -/* f176d20: 3c0e8008 */ lui $t6,%hi(stagemusictable) -/* f176d24: 85ce4500 */ lh $t6,%lo(stagemusictable)($t6) -/* f176d28: 3c0f8008 */ lui $t7,%hi(stagemusictable) -/* f176d2c: 25e34500 */ addiu $v1,$t7,%lo(stagemusictable) +/* f176d20: 3c0e8008 */ lui $t6,%hi(g_StageTracks) +/* f176d24: 85ce4500 */ lh $t6,%lo(g_StageTracks)($t6) +/* f176d28: 3c0f8008 */ lui $t7,%hi(g_StageTracks) +/* f176d2c: 25e34500 */ addiu $v1,$t7,%lo(g_StageTracks) /* f176d30: 51c0000b */ beqzl $t6,.L0f176d60 /* f176d34: 2402ffff */ addiu $v0,$zero,-1 /* f176d38: 84620000 */ lh $v0,0x0($v1) diff --git a/src/include/game/data/data_02a0e0.h b/src/include/game/data/data_02a0e0.h index 736e2c913..72a6c1499 100644 --- a/src/include/game/data/data_02a0e0.h +++ b/src/include/game/data/data_02a0e0.h @@ -23,7 +23,7 @@ extern u32 var80084220; extern struct something *somethings[]; extern u32 var800844d0; extern u32 var800844f0; -extern struct stagemusic stagemusictable[]; +extern struct stagemusic g_StageTracks[]; extern s32 var800845d8; extern u32 var800845dc; extern u32 var800845f4; diff --git a/src/include/game/game_176080.h b/src/include/game/game_176080.h index 1ce0ffbd3..5262f3a6c 100644 --- a/src/include/game/game_176080.h +++ b/src/include/game/game_176080.h @@ -12,7 +12,7 @@ u32 func0f1763f4(void); u32 func0f176668(void); u32 func0f1766b4(void); s32 stageGetPrimaryTrack(s32 stagenum); -s32 func0f176cd8(s32 stagenum); +s16 stageGetAmbientTrack(s32 stagenum); s32 func0f176d20(s32 stagenum); #endif