From 85f7331004e944942e49ea90e483f7402a7258e5 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 00:29:30 +0000 Subject: [PATCH 01/17] match func_80055050 --- src/code_303c0_len_3e10.c | 11 +++++++++++ tools/symbol_addrs.txt | 2 ++ undefined_syms.txt | 3 +++ 3 files changed, 16 insertions(+) diff --git a/src/code_303c0_len_3e10.c b/src/code_303c0_len_3e10.c index d0fef616f3..24dc1e3abf 100644 --- a/src/code_303c0_len_3e10.c +++ b/src/code_303c0_len_3e10.c @@ -2,7 +2,18 @@ INCLUDE_ASM(s32, "code_303c0_len_3e10", al_LoadBKHeaders); +#ifdef NON_MATCHING +// Needs rodata +extern s32 D_80078DB0; +extern u16 D_80078DB4; + +void func_80055050(void) { + D_80078DB4 = 1; + D_80078DB0 = 0; +} +#else INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055050); +#endif INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055068); diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index 57d0da9329..1600940500 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1897,3 +1897,5 @@ gSpeakingActorPart;0x8029FA78 EnterWalk;0x80285960 EnemyNpcHit;0x80077F70 EnemyNpcDefeat;0x8007809C +D_80078DB0;0x80078DB0 +D_80078DB4;0x80078DB4 diff --git a/undefined_syms.txt b/undefined_syms.txt index 6f335270e1..cb04c32ef6 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -260,3 +260,6 @@ ShakeCamX = 0x802D9CE8; EnemyNpcHit = 0x80077F70; EnemyNpcDefeat = 0x8007809C; + +D_80078DB0 = 0x80078DB0; +D_80078DB4 = 0x80078DB4; From 9eef0b027310e27908a49de33176f8ffc200ded2 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 01:05:40 +0000 Subject: [PATCH 02/17] match set_music_track rewrite flag as NOT clean up set_music_track temps --- .../code_e0b30_len_b80/set_music_track.s | 23 ------------------- include/common_structs.h | 2 +- include/functions.h | 2 +- include/variables.h | 2 ++ src/code_303c0_len_3e10.c | 13 ++++++----- src/code_e0b30_len_b80.c | 10 +++++--- tools/symbol_addrs.txt | 1 + undefined_syms.txt | 2 ++ 8 files changed, 21 insertions(+), 34 deletions(-) delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/set_music_track.s diff --git a/asm/nonmatchings/code_e0b30_len_b80/set_music_track.s b/asm/nonmatchings/code_e0b30_len_b80/set_music_track.s deleted file mode 100644 index ec472a1a63..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/set_music_track.s +++ /dev/null @@ -1,23 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel set_music_track -/* E1018 8014A918 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* E101C 8014A91C 3C038016 */ lui $v1, 0x8016 -/* E1020 8014A920 24639AF0 */ addiu $v1, $v1, -0x6510 -/* E1024 8014A924 00041040 */ sll $v0, $a0, 1 -/* E1028 8014A928 00441021 */ addu $v0, $v0, $a0 -/* E102C 8014A92C 00021100 */ sll $v0, $v0, 4 -/* E1030 8014A930 00431021 */ addu $v0, $v0, $v1 -/* E1034 8014A934 AFBF0018 */ sw $ra, 0x18($sp) -/* E1038 8014A938 94430000 */ lhu $v1, ($v0) -/* E103C 8014A93C 8FA80030 */ lw $t0, 0x30($sp) -/* E1040 8014A940 3063FFF7 */ andi $v1, $v1, 0xfff7 -/* E1044 8014A944 00084400 */ sll $t0, $t0, 0x10 -/* E1048 8014A948 00084403 */ sra $t0, $t0, 0x10 -/* E104C 8014A94C A4430000 */ sh $v1, ($v0) -/* E1050 8014A950 0C0529F8 */ jal _set_music_track -/* E1054 8014A954 AFA80010 */ sw $t0, 0x10($sp) -/* E1058 8014A958 8FBF0018 */ lw $ra, 0x18($sp) -/* E105C 8014A95C 03E00008 */ jr $ra -/* E1060 8014A960 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/include/common_structs.h b/include/common_structs.h index 56eb064d23..e11bee5283 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -307,7 +307,7 @@ typedef struct StaticEntityData { } StaticEntityData; // size = 0x24 typedef struct MusicPlayer { - /* 0x00 */ s16 unkFlags; + /* 0x00 */ u16 unkFlags; /* 0x02 */ char unk_02[2]; /* 0x04 */ s32 fadeOutTime; /* 0x08 */ s32 fadeInTime; diff --git a/include/functions.h b/include/functions.h index 033f72bb6e..4d275b8495 100644 --- a/include/functions.h +++ b/include/functions.h @@ -113,7 +113,7 @@ f32 dist3D(f32 ax, f32 ay, f32 az, f32 bx, f32 by, f32 bz); void add_vec2D_polar(f32* x, f32* y, f32 r, f32 theta); s32 play_sound_at_position(s32 soundID, s32 value2, f32 posX, f32 posY, f32 posZ); -s32 set_music_track(s32 musicPlayer, s32 songID, s32 variation, s32 unk, s32 volume); +void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume); ScriptInstance* get_script_by_index(s32 index); diff --git a/include/variables.h b/include/variables.h index ccdc405f99..9e6d483bd2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -165,4 +165,6 @@ extern Bytecode* SCRIPT_NpcDefeat; extern Bytecode* ShakeCam1; extern Bytecode* ShakeCamX; +extern MusicPlayer gMusicPlayers[]; + #endif diff --git a/src/code_303c0_len_3e10.c b/src/code_303c0_len_3e10.c index 24dc1e3abf..357c8a3faf 100644 --- a/src/code_303c0_len_3e10.c +++ b/src/code_303c0_len_3e10.c @@ -1,21 +1,22 @@ #include "common.h" +// TODO: rodata +extern s32 D_80078DB0; +extern u16 D_80078DB4; + INCLUDE_ASM(s32, "code_303c0_len_3e10", al_LoadBKHeaders); #ifdef NON_MATCHING -// Needs rodata -extern s32 D_80078DB0; -extern u16 D_80078DB4; - +// Delay slot (probably needs rodata) void func_80055050(void) { D_80078DB4 = 1; D_80078DB0 = 0; } #else -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055050); +INCLUDE_ASM(void, "code_303c0_len_3e10", func_80055050, void); #endif -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055068); +INCLUDE_ASM(void, "code_303c0_len_3e10", func_80055068, u32 arg0); INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055110); diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 40acc5fde5..13931dd072 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -11,10 +11,14 @@ void func_8014A52C(void) { INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A548); -INCLUDE_ASM(s32, "code_e0b30_len_b80", _set_music_track); +INCLUDE_ASM(s32, "code_e0b30_len_b80", _set_music_track, s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume); -INCLUDE_ASM(s32, "code_e0b30_len_b80", set_music_track, s32 musicPlayer, s32 songID, s32 variation, s32 unk, - s32 volume); +void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume) { + MusicPlayer* musicPlayers = &gMusicPlayers; + musicPlayers[playerIndex].unkFlags &= ~8; + + _set_music_track(playerIndex, songID, variation, unk, volume); +} INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A964); diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index 1600940500..198f34f9cf 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1899,3 +1899,4 @@ EnemyNpcHit;0x80077F70 EnemyNpcDefeat;0x8007809C D_80078DB0;0x80078DB0 D_80078DB4;0x80078DB4 +gMusicPlayers;0x80159AF0 diff --git a/undefined_syms.txt b/undefined_syms.txt index cb04c32ef6..c915c7faf3 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -263,3 +263,5 @@ EnemyNpcDefeat = 0x8007809C; D_80078DB0 = 0x80078DB0; D_80078DB4 = 0x80078DB4; + +gMusicPlayers = 0x80159AF0; From e0c810854399d335de7b4263ce3b0697e6d420cc Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 01:33:45 +0000 Subject: [PATCH 03/17] match _set_music_track --- .../code_e0b30_len_b80/_set_music_track.s | 88 ------------------- include/common_structs.h | 5 +- include/variables.h | 1 + src/code_e0b30_len_b80.c | 49 ++++++++++- tools/symbol_addrs.txt | 1 + undefined_syms.txt | 1 + 6 files changed, 53 insertions(+), 92 deletions(-) delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/_set_music_track.s diff --git a/asm/nonmatchings/code_e0b30_len_b80/_set_music_track.s b/asm/nonmatchings/code_e0b30_len_b80/_set_music_track.s deleted file mode 100644 index 12aff6540b..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/_set_music_track.s +++ /dev/null @@ -1,88 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel _set_music_track -/* E0EE0 8014A7E0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* E0EE4 8014A7E4 AFB20018 */ sw $s2, 0x18($sp) -/* E0EE8 8014A7E8 00A0902D */ daddu $s2, $a1, $zero -/* E0EEC 8014A7EC 3C058007 */ lui $a1, %hi(gGameStatusPtr) -/* E0EF0 8014A7F0 8CA5419C */ lw $a1, %lo(gGameStatusPtr)($a1) -/* E0EF4 8014A7F4 AFB3001C */ sw $s3, 0x1c($sp) -/* E0EF8 8014A7F8 8FB30040 */ lw $s3, 0x40($sp) -/* E0EFC 8014A7FC AFB10014 */ sw $s1, 0x14($sp) -/* E0F00 8014A800 00C0882D */ daddu $s1, $a2, $zero -/* E0F04 8014A804 AFB50024 */ sw $s5, 0x24($sp) -/* E0F08 8014A808 00E0A82D */ daddu $s5, $a3, $zero -/* E0F0C 8014A80C AFBF0028 */ sw $ra, 0x28($sp) -/* E0F10 8014A810 AFB40020 */ sw $s4, 0x20($sp) -/* E0F14 8014A814 AFB00010 */ sw $s0, 0x10($sp) -/* E0F18 8014A818 80A20071 */ lb $v0, 0x71($a1) -/* E0F1C 8014A81C 10400003 */ beqz $v0, .L8014A82C -/* E0F20 8014A820 0260A02D */ daddu $s4, $s3, $zero -/* E0F24 8014A824 08052A3D */ j .L8014A8F4 -/* E0F28 8014A828 24020001 */ addiu $v0, $zero, 1 -.L8014A82C: -/* E0F2C 8014A82C 3C028016 */ lui $v0, 0x8016 -/* E0F30 8014A830 24429AF0 */ addiu $v0, $v0, -0x6510 -/* E0F34 8014A834 00041840 */ sll $v1, $a0, 1 -/* E0F38 8014A838 00641821 */ addu $v1, $v1, $a0 -/* E0F3C 8014A83C 00031900 */ sll $v1, $v1, 4 -/* E0F40 8014A840 80A4007A */ lb $a0, 0x7a($a1) -/* E0F44 8014A844 14800008 */ bnez $a0, .L8014A868 -/* E0F48 8014A848 00628021 */ addu $s0, $v1, $v0 -/* E0F4C 8014A84C 8E040018 */ lw $a0, 0x18($s0) -/* E0F50 8014A850 0C015671 */ jal func_800559C4 -/* E0F54 8014A854 00000000 */ nop -/* E0F58 8014A858 96030000 */ lhu $v1, ($s0) -/* E0F5C 8014A85C 24020001 */ addiu $v0, $zero, 1 -/* E0F60 8014A860 08052A3C */ j .L8014A8F0 -/* E0F64 8014A864 3063FFFE */ andi $v1, $v1, 0xfffe -.L8014A868: -/* E0F68 8014A868 0C05290C */ jal get_default_variation_for_song -/* E0F6C 8014A86C 0240202D */ daddu $a0, $s2, $zero -/* E0F70 8014A870 04430001 */ bgezl $v0, .L8014A878 -/* E0F74 8014A874 0040882D */ daddu $s1, $v0, $zero -.L8014A878: -/* E0F78 8014A878 8E020010 */ lw $v0, 0x10($s0) -/* E0F7C 8014A87C 14520013 */ bne $v0, $s2, .L8014A8CC -/* E0F80 8014A880 24020001 */ addiu $v0, $zero, 1 -/* E0F84 8014A884 8E020014 */ lw $v0, 0x14($s0) -/* E0F88 8014A888 14510010 */ bne $v0, $s1, .L8014A8CC -/* E0F8C 8014A88C 24020001 */ addiu $v0, $zero, 1 -/* E0F90 8014A890 00132400 */ sll $a0, $s3, 0x10 -/* E0F94 8014A894 0C052B21 */ jal func_8014AC84 -/* E0F98 8014A898 00042403 */ sra $a0, $a0, 0x10 -/* E0F9C 8014A89C 96020000 */ lhu $v0, ($s0) -/* E0FA0 8014A8A0 30420004 */ andi $v0, $v0, 4 -/* E0FA4 8014A8A4 50400013 */ beql $v0, $zero, .L8014A8F4 -/* E0FA8 8014A8A8 24020002 */ addiu $v0, $zero, 2 -/* E0FAC 8014A8AC 8E040018 */ lw $a0, 0x18($s0) -/* E0FB0 8014A8B0 0C0156E0 */ jal func_80055B80 -/* E0FB4 8014A8B4 00000000 */ nop -/* E0FB8 8014A8B8 96020000 */ lhu $v0, ($s0) -/* E0FBC 8014A8BC 3042FFFB */ andi $v0, $v0, 0xfffb -/* E0FC0 8014A8C0 A6020000 */ sh $v0, ($s0) -/* E0FC4 8014A8C4 08052A3D */ j .L8014A8F4 -/* E0FC8 8014A8C8 24020002 */ addiu $v0, $zero, 2 -.L8014A8CC: -/* E0FCC 8014A8CC 96030000 */ lhu $v1, ($s0) -/* E0FD0 8014A8D0 0040202D */ daddu $a0, $v0, $zero -/* E0FD4 8014A8D4 3C018016 */ lui $at, 0x8016 -/* E0FD8 8014A8D8 A4349AE0 */ sh $s4, -0x6520($at) -/* E0FDC 8014A8DC AE120010 */ sw $s2, 0x10($s0) -/* E0FE0 8014A8E0 AE110014 */ sw $s1, 0x14($s0) -/* E0FE4 8014A8E4 AE150004 */ sw $s5, 4($s0) -/* E0FE8 8014A8E8 A6040002 */ sh $a0, 2($s0) -/* E0FEC 8014A8EC 3063FFFD */ andi $v1, $v1, 0xfffd -.L8014A8F0: -/* E0FF0 8014A8F0 A6030000 */ sh $v1, ($s0) -.L8014A8F4: -/* E0FF4 8014A8F4 8FBF0028 */ lw $ra, 0x28($sp) -/* E0FF8 8014A8F8 8FB50024 */ lw $s5, 0x24($sp) -/* E0FFC 8014A8FC 8FB40020 */ lw $s4, 0x20($sp) -/* E1000 8014A900 8FB3001C */ lw $s3, 0x1c($sp) -/* E1004 8014A904 8FB20018 */ lw $s2, 0x18($sp) -/* E1008 8014A908 8FB10014 */ lw $s1, 0x14($sp) -/* E100C 8014A90C 8FB00010 */ lw $s0, 0x10($sp) -/* E1010 8014A910 03E00008 */ jr $ra -/* E1014 8014A914 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/include/common_structs.h b/include/common_structs.h index e11bee5283..30d69e351a 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -308,13 +308,14 @@ typedef struct StaticEntityData { typedef struct MusicPlayer { /* 0x00 */ u16 unkFlags; - /* 0x02 */ char unk_02[2]; + /* 0x02 */ u16 unk_02; /* 0x04 */ s32 fadeOutTime; /* 0x08 */ s32 fadeInTime; /* 0x0C */ char unk_0C[4]; /* 0x10 */ s32 songID; /* 0x14 */ s32 variation; - /* 0x18 */ char unk_18[24]; + /* 0x18 */ s32 unk_18; + /* 0x1C */ char unk_1C[20]; } MusicPlayer; // size = 0x30 typedef struct MenuIcon { diff --git a/include/variables.h b/include/variables.h index 9e6d483bd2..fcc0de30f5 100644 --- a/include/variables.h +++ b/include/variables.h @@ -165,6 +165,7 @@ extern Bytecode* SCRIPT_NpcDefeat; extern Bytecode* ShakeCam1; extern Bytecode* ShakeCamX; +extern s16 gMusicVolume; extern MusicPlayer gMusicPlayers[]; #endif diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 13931dd072..d0aae4452e 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -1,5 +1,8 @@ #include "common.h" + +void func_8014AC84(s16 volume); + INCLUDE_ASM(s32, "code_e0b30_len_b80", get_default_variation_for_song); INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A498); @@ -11,10 +14,52 @@ void func_8014A52C(void) { INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A548); -INCLUDE_ASM(s32, "code_e0b30_len_b80", _set_music_track, s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume); +s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume) { + GameStatus* gameStatus = GAME_STATUS; + + if (gameStatus->demoState != 0) { + return 1; + } else { + MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; + + if (!gameStatus->musicEnabled) { + func_800559C4(musicPlayer->unk_18); + musicPlayer->unkFlags &= ~1; + + return 1; + } else { + s32 defaultVariation = get_default_variation_for_song(songID); + if (defaultVariation >= 0) { + variation = defaultVariation; + } + + if (musicPlayer->songID == songID && musicPlayer->variation == variation) { + func_8014AC84(volume); // transition volume to? + + if (musicPlayer->unkFlags & 4) { + func_80055B80(musicPlayer->unk_18); + musicPlayer->unkFlags &= ~4; + } + + return 2; + } + + gMusicVolume = volume; + musicPlayer->songID = songID; + musicPlayer->variation = variation; + musicPlayer->fadeOutTime = unk; + musicPlayer->unk_02 = 1; + musicPlayer->unkFlags &= ~2; + + return 1; + } + } +} void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume) { MusicPlayer* musicPlayers = &gMusicPlayers; + musicPlayers[playerIndex].unkFlags &= ~8; _set_music_track(playerIndex, songID, variation, unk, volume); @@ -36,7 +81,7 @@ INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC5C); INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC70); -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC84); +INCLUDE_ASM(void, "code_e0b30_len_b80", func_8014AC84, s16 volume); INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC94); diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index 198f34f9cf..12db0921df 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1899,4 +1899,5 @@ EnemyNpcHit;0x80077F70 EnemyNpcDefeat;0x8007809C D_80078DB0;0x80078DB0 D_80078DB4;0x80078DB4 +gMusicVolume;0x80159AE0 gMusicPlayers;0x80159AF0 diff --git a/undefined_syms.txt b/undefined_syms.txt index c915c7faf3..5727b9abe2 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -264,4 +264,5 @@ EnemyNpcDefeat = 0x8007809C; D_80078DB0 = 0x80078DB0; D_80078DB4 = 0x80078DB4; +gMusicVolume = 0x80159AE0; gMusicPlayers = 0x80159AF0; From 1a6b1f5fcdc0226c80d920714af9560a00547fde Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 01:35:05 +0000 Subject: [PATCH 04/17] rename MusicPlayer unkFlags to flags --- include/common_structs.h | 2 +- src/code_e0b30_len_b80.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/common_structs.h b/include/common_structs.h index 30d69e351a..ef6c39c281 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -307,7 +307,7 @@ typedef struct StaticEntityData { } StaticEntityData; // size = 0x24 typedef struct MusicPlayer { - /* 0x00 */ u16 unkFlags; + /* 0x00 */ u16 flags; /* 0x02 */ u16 unk_02; /* 0x04 */ s32 fadeOutTime; /* 0x08 */ s32 fadeInTime; diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index d0aae4452e..14f5df0b64 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -25,7 +25,7 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 vo if (!gameStatus->musicEnabled) { func_800559C4(musicPlayer->unk_18); - musicPlayer->unkFlags &= ~1; + musicPlayer->flags &= ~1; return 1; } else { @@ -37,9 +37,9 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 vo if (musicPlayer->songID == songID && musicPlayer->variation == variation) { func_8014AC84(volume); // transition volume to? - if (musicPlayer->unkFlags & 4) { + if (musicPlayer->flags & 4) { func_80055B80(musicPlayer->unk_18); - musicPlayer->unkFlags &= ~4; + musicPlayer->flags &= ~4; } return 2; @@ -50,7 +50,7 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 vo musicPlayer->variation = variation; musicPlayer->fadeOutTime = unk; musicPlayer->unk_02 = 1; - musicPlayer->unkFlags &= ~2; + musicPlayer->flags &= ~2; return 1; } @@ -60,7 +60,7 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 vo void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume) { MusicPlayer* musicPlayers = &gMusicPlayers; - musicPlayers[playerIndex].unkFlags &= ~8; + musicPlayers[playerIndex].flags &= ~8; _set_music_track(playerIndex, songID, variation, unk, volume); } From 322932c295e43aa3e594f71d00659bab6535632d Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 01:36:53 +0000 Subject: [PATCH 05/17] name set_music_track arg3 --- include/functions.h | 2 +- src/code_e0b30_len_b80.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/functions.h b/include/functions.h index 4d275b8495..1ab3425f04 100644 --- a/include/functions.h +++ b/include/functions.h @@ -113,7 +113,7 @@ f32 dist3D(f32 ax, f32 ay, f32 az, f32 bx, f32 by, f32 bz); void add_vec2D_polar(f32* x, f32* y, f32 r, f32 theta); s32 play_sound_at_position(s32 soundID, s32 value2, f32 posX, f32 posY, f32 posZ); -void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume); +void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume); ScriptInstance* get_script_by_index(s32 index); diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 14f5df0b64..d89dd4953f 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -14,7 +14,7 @@ void func_8014A52C(void) { INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A548); -s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume) { +s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { GameStatus* gameStatus = GAME_STATUS; if (gameStatus->demoState != 0) { @@ -48,7 +48,7 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 vo gMusicVolume = volume; musicPlayer->songID = songID; musicPlayer->variation = variation; - musicPlayer->fadeOutTime = unk; + musicPlayer->fadeOutTime = fadeOutTime; musicPlayer->unk_02 = 1; musicPlayer->flags &= ~2; @@ -57,12 +57,12 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 vo } } -void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 unk, s16 volume) { +void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { MusicPlayer* musicPlayers = &gMusicPlayers; musicPlayers[playerIndex].flags &= ~8; - _set_music_track(playerIndex, songID, variation, unk, volume); + _set_music_track(playerIndex, songID, variation, fadeOutTime, volume); } INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A964); From d9d65955812269a1e86416daed06ff847e22ee6e Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 01:38:25 +0000 Subject: [PATCH 06/17] make set_music_track non-void Still matches; its return value is used in SetMusicTrack --- include/functions.h | 2 +- src/code_e0b30_len_b80.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/functions.h b/include/functions.h index 1ab3425f04..2e2fcd7851 100644 --- a/include/functions.h +++ b/include/functions.h @@ -113,7 +113,7 @@ f32 dist3D(f32 ax, f32 ay, f32 az, f32 bx, f32 by, f32 bz); void add_vec2D_polar(f32* x, f32* y, f32 r, f32 theta); s32 play_sound_at_position(s32 soundID, s32 value2, f32 posX, f32 posY, f32 posZ); -void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume); +s32 set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume); ScriptInstance* get_script_by_index(s32 index); diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index d89dd4953f..3ca5fced0d 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -57,12 +57,12 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime } } -void set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { +s32 set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { MusicPlayer* musicPlayers = &gMusicPlayers; musicPlayers[playerIndex].flags &= ~8; - _set_music_track(playerIndex, songID, variation, fadeOutTime, volume); + return _set_music_track(playerIndex, songID, variation, fadeOutTime, volume); } INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A964); From a2329fc84a993177d46e6afb8ac0b79d42955db5 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 02:17:11 +0000 Subject: [PATCH 07/17] match func_8014A964, func_8014AC84 --- .../code_e0b30_len_b80/func_8014A964.s | 69 ------------------- .../code_e0b30_len_b80/func_8014AC84.s | 8 --- include/common_structs.h | 3 +- include/variables.h | 2 +- src/code_e0b30_len_b80.c | 38 +++++++++- 5 files changed, 39 insertions(+), 81 deletions(-) delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014A964.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AC84.s diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014A964.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014A964.s deleted file mode 100644 index 727dc8afaa..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014A964.s +++ /dev/null @@ -1,69 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014A964 -/* E1064 8014A964 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* E1068 8014A968 AFB40020 */ sw $s4, 0x20($sp) -/* E106C 8014A96C 00A0A02D */ daddu $s4, $a1, $zero -/* E1070 8014A970 3C058007 */ lui $a1, %hi(gGameStatusPtr) -/* E1074 8014A974 8CA5419C */ lw $a1, %lo(gGameStatusPtr)($a1) -/* E1078 8014A978 AFB3001C */ sw $s3, 0x1c($sp) -/* E107C 8014A97C 8FB30040 */ lw $s3, 0x40($sp) -/* E1080 8014A980 AFB10014 */ sw $s1, 0x14($sp) -/* E1084 8014A984 00C0882D */ daddu $s1, $a2, $zero -/* E1088 8014A988 AFB50024 */ sw $s5, 0x24($sp) -/* E108C 8014A98C AFBF0028 */ sw $ra, 0x28($sp) -/* E1090 8014A990 AFB20018 */ sw $s2, 0x18($sp) -/* E1094 8014A994 AFB00010 */ sw $s0, 0x10($sp) -/* E1098 8014A998 80A20071 */ lb $v0, 0x71($a1) -/* E109C 8014A99C 8FB20044 */ lw $s2, 0x44($sp) -/* E10A0 8014A9A0 10400003 */ beqz $v0, .L8014A9B0 -/* E10A4 8014A9A4 00E0A82D */ daddu $s5, $a3, $zero -/* E10A8 8014A9A8 08052A8C */ j .L8014AA30 -/* E10AC 8014A9AC 24020001 */ addiu $v0, $zero, 1 -.L8014A9B0: -/* E10B0 8014A9B0 3C028016 */ lui $v0, 0x8016 -/* E10B4 8014A9B4 24429AF0 */ addiu $v0, $v0, -0x6510 -/* E10B8 8014A9B8 00041840 */ sll $v1, $a0, 1 -/* E10BC 8014A9BC 00641821 */ addu $v1, $v1, $a0 -/* E10C0 8014A9C0 00031900 */ sll $v1, $v1, 4 -/* E10C4 8014A9C4 80A4007A */ lb $a0, 0x7a($a1) -/* E10C8 8014A9C8 14800008 */ bnez $a0, .L8014A9EC -/* E10CC 8014A9CC 00628021 */ addu $s0, $v1, $v0 -/* E10D0 8014A9D0 8E040018 */ lw $a0, 0x18($s0) -/* E10D4 8014A9D4 0C015671 */ jal func_800559C4 -/* E10D8 8014A9D8 00000000 */ nop -/* E10DC 8014A9DC 96030000 */ lhu $v1, ($s0) -/* E10E0 8014A9E0 24020001 */ addiu $v0, $zero, 1 -/* E10E4 8014A9E4 08052A8B */ j .L8014AA2C -/* E10E8 8014A9E8 3063FFFE */ andi $v1, $v1, 0xfffe -.L8014A9EC: -/* E10EC 8014A9EC 0C05290C */ jal get_default_variation_for_song -/* E10F0 8014A9F0 0280202D */ daddu $a0, $s4, $zero -/* E10F4 8014A9F4 04430001 */ bgezl $v0, .L8014A9FC -/* E10F8 8014A9F8 0040882D */ daddu $s1, $v0, $zero -.L8014A9FC: -/* E10FC 8014A9FC 24020001 */ addiu $v0, $zero, 1 -/* E1100 8014AA00 96030000 */ lhu $v1, ($s0) -/* E1104 8014AA04 0040202D */ daddu $a0, $v0, $zero -/* E1108 8014AA08 AE150008 */ sw $s5, 8($s0) -/* E110C 8014AA0C A613000C */ sh $s3, 0xc($s0) -/* E1110 8014AA10 A612000E */ sh $s2, 0xe($s0) -/* E1114 8014AA14 AE140010 */ sw $s4, 0x10($s0) -/* E1118 8014AA18 AE110014 */ sw $s1, 0x14($s0) -/* E111C 8014AA1C A6040002 */ sh $a0, 2($s0) -/* E1120 8014AA20 34630020 */ ori $v1, $v1, 0x20 -/* E1124 8014AA24 A6030000 */ sh $v1, ($s0) -/* E1128 8014AA28 3063FFFD */ andi $v1, $v1, 0xfffd -.L8014AA2C: -/* E112C 8014AA2C A6030000 */ sh $v1, ($s0) -.L8014AA30: -/* E1130 8014AA30 8FBF0028 */ lw $ra, 0x28($sp) -/* E1134 8014AA34 8FB50024 */ lw $s5, 0x24($sp) -/* E1138 8014AA38 8FB40020 */ lw $s4, 0x20($sp) -/* E113C 8014AA3C 8FB3001C */ lw $s3, 0x1c($sp) -/* E1140 8014AA40 8FB20018 */ lw $s2, 0x18($sp) -/* E1144 8014AA44 8FB10014 */ lw $s1, 0x14($sp) -/* E1148 8014AA48 8FB00010 */ lw $s0, 0x10($sp) -/* E114C 8014AA4C 03E00008 */ jr $ra -/* E1150 8014AA50 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC84.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AC84.s deleted file mode 100644 index 8a219c2e58..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC84.s +++ /dev/null @@ -1,8 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AC84 -/* E1384 8014AC84 3C018016 */ lui $at, %hi(D_80159AE2) -/* E1388 8014AC88 A4249AE2 */ sh $a0, %lo(D_80159AE2)($at) -/* E138C 8014AC8C 03E00008 */ jr $ra -/* E1390 8014AC90 00000000 */ nop diff --git a/include/common_structs.h b/include/common_structs.h index ef6c39c281..74516f195e 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -311,7 +311,8 @@ typedef struct MusicPlayer { /* 0x02 */ u16 unk_02; /* 0x04 */ s32 fadeOutTime; /* 0x08 */ s32 fadeInTime; - /* 0x0C */ char unk_0C[4]; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; /* 0x10 */ s32 songID; /* 0x14 */ s32 variation; /* 0x18 */ s32 unk_18; diff --git a/include/variables.h b/include/variables.h index fcc0de30f5..871adf2067 100644 --- a/include/variables.h +++ b/include/variables.h @@ -80,7 +80,7 @@ extern s32 D_8010CD20; extern s32 D_8010EF08; extern s32 D_8010F094; // player shadow index? extern s32 D_801595A0; -extern s16 D_80159AE2; +extern s16 D_80159AE2; // music target volume? extern s16 D_80159AE4; extern BackgroundHeader gBackgroundImage; diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 3ca5fced0d..35a9193232 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -65,7 +65,39 @@ s32 set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, return _set_music_track(playerIndex, songID, variation, fadeOutTime, volume); } -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A964); +s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 arg4, s16 arg5) { + GameStatus* gameStatus = GAME_STATUS; + + if (gameStatus->demoState != 0) { + return 1; + } else { + MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; + + if (!gameStatus->musicEnabled) { + func_800559C4(musicPlayer->unk_18); + musicPlayer->flags &= ~1; + + return 1; + } else { + s32 defaultVariation = get_default_variation_for_song(songID); + if (defaultVariation >= 0) { + variation = defaultVariation; + } + + musicPlayer->fadeInTime = fadeInTime; + musicPlayer->unk_0C = arg4; + musicPlayer->unk_0E = arg5; + musicPlayer->songID = songID; + musicPlayer->variation = variation; + musicPlayer->flags |= 0x20; + musicPlayer->unk_02 = 1; + musicPlayer->flags &= ~2; + + return 1; + } + } +} INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AA54); @@ -81,7 +113,9 @@ INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC5C); INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC70); -INCLUDE_ASM(void, "code_e0b30_len_b80", func_8014AC84, s16 volume); +void func_8014AC84(s16 volume) { + D_80159AE2 = volume; +} INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC94); From 9c5338c04b2ee4ce036926d22bf1a69aa1c9c1ac Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 02:54:01 +0000 Subject: [PATCH 08/17] match func_8014AA54 --- .../code_e0b30_len_b80/func_8014AA54.s | 57 ------------------- include/variables.h | 4 +- src/code_e0b30_len_b80.c | 29 +++++++++- tools/symbol_addrs.txt | 4 +- undefined_syms.txt | 4 +- 5 files changed, 36 insertions(+), 62 deletions(-) delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AA54.s diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AA54.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AA54.s deleted file mode 100644 index 9141c6f751..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AA54.s +++ /dev/null @@ -1,57 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AA54 -/* E1154 8014AA54 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* E1158 8014AA58 3C028016 */ lui $v0, 0x8016 -/* E115C 8014AA5C 24429AF0 */ addiu $v0, $v0, -0x6510 -/* E1160 8014AA60 00041840 */ sll $v1, $a0, 1 -/* E1164 8014AA64 00641821 */ addu $v1, $v1, $a0 -/* E1168 8014AA68 00031900 */ sll $v1, $v1, 4 -/* E116C 8014AA6C 00621821 */ addu $v1, $v1, $v0 -/* E1170 8014AA70 AFBF0010 */ sw $ra, 0x10($sp) -/* E1174 8014AA74 94640000 */ lhu $a0, ($v1) -/* E1178 8014AA78 30820001 */ andi $v0, $a0, 1 -/* E117C 8014AA7C 10400003 */ beqz $v0, .L8014AA8C -/* E1180 8014AA80 30820002 */ andi $v0, $a0, 2 -/* E1184 8014AA84 14400003 */ bnez $v0, .L8014AA94 -/* E1188 8014AA88 00061400 */ sll $v0, $a2, 0x10 -.L8014AA8C: -/* E118C 8014AA8C 08052AC0 */ j .L8014AB00 -/* E1190 8014AA90 0000102D */ daddu $v0, $zero, $zero -.L8014AA94: -/* E1194 8014AA94 00022403 */ sra $a0, $v0, 0x10 -/* E1198 8014AA98 24020001 */ addiu $v0, $zero, 1 -/* E119C 8014AA9C 1082000F */ beq $a0, $v0, .L8014AADC -/* E11A0 8014AAA0 28820002 */ slti $v0, $a0, 2 -/* E11A4 8014AAA4 10400005 */ beqz $v0, .L8014AABC -/* E11A8 8014AAA8 24020002 */ addiu $v0, $zero, 2 -/* E11AC 8014AAAC 10800007 */ beqz $a0, .L8014AACC -/* E11B0 8014AAB0 24020001 */ addiu $v0, $zero, 1 -/* E11B4 8014AAB4 08052AC0 */ j .L8014AB00 -/* E11B8 8014AAB8 00000000 */ nop -.L8014AABC: -/* E11BC 8014AABC 1082000C */ beq $a0, $v0, .L8014AAF0 -/* E11C0 8014AAC0 24020001 */ addiu $v0, $zero, 1 -/* E11C4 8014AAC4 08052AC0 */ j .L8014AB00 -/* E11C8 8014AAC8 00000000 */ nop -.L8014AACC: -/* E11CC 8014AACC 0C01580A */ jal func_80056028 -/* E11D0 8014AAD0 8C640018 */ lw $a0, 0x18($v1) -/* E11D4 8014AAD4 08052AC0 */ j .L8014AB00 -/* E11D8 8014AAD8 24020001 */ addiu $v0, $zero, 1 -.L8014AADC: -/* E11DC 8014AADC 8C640018 */ lw $a0, 0x18($v1) -/* E11E0 8014AAE0 0C015811 */ jal func_80056044 -/* E11E4 8014AAE4 00000000 */ nop -/* E11E8 8014AAE8 08052AC0 */ j .L8014AB00 -/* E11EC 8014AAEC 24020001 */ addiu $v0, $zero, 1 -.L8014AAF0: -/* E11F0 8014AAF0 8C640018 */ lw $a0, 0x18($v1) -/* E11F4 8014AAF4 0C01581A */ jal func_80056068 -/* E11F8 8014AAF8 00000000 */ nop -/* E11FC 8014AAFC 24020001 */ addiu $v0, $zero, 1 -.L8014AB00: -/* E1200 8014AB00 8FBF0010 */ lw $ra, 0x10($sp) -/* E1204 8014AB04 03E00008 */ jr $ra -/* E1208 8014AB08 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/include/variables.h b/include/variables.h index 871adf2067..dff7fd36a2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -165,7 +165,9 @@ extern Bytecode* SCRIPT_NpcDefeat; extern Bytecode* ShakeCam1; extern Bytecode* ShakeCamX; -extern s16 gMusicVolume; +extern s16 gMusicUnkVolume; +extern s16 gMusicCurrentVolume; +extern s16 gMusicTargetVolume; extern MusicPlayer gMusicPlayers[]; #endif diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 35a9193232..0e24ebc7df 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -45,7 +45,7 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime return 2; } - gMusicVolume = volume; + gMusicUnkVolume = volume; musicPlayer->songID = songID; musicPlayer->variation = variation; musicPlayer->fadeOutTime = fadeOutTime; @@ -99,7 +99,32 @@ s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s1 } } -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AA54); +s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2) { + MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; + + if (!(musicPlayer->flags & 1)) { + return 0; + } + + if (!(musicPlayer->flags & 2)) { + return 0; + } + + switch (arg2) { + case 0: + func_80056028(musicPlayer->unk_18, arg1); + break; + case 1: + func_80056044(musicPlayer->unk_18, arg1); + break; + case 2: + func_80056068(musicPlayer->unk_18, arg1); + break; + } + + return 1; +} INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AB0C); diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index 12db0921df..c83ba8dce3 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1899,5 +1899,7 @@ EnemyNpcHit;0x80077F70 EnemyNpcDefeat;0x8007809C D_80078DB0;0x80078DB0 D_80078DB4;0x80078DB4 -gMusicVolume;0x80159AE0 gMusicPlayers;0x80159AF0 +gMusicUnkVolume;0x80159AE0 +gMusicTargetVolume;0x80159AE2 +gMusicCurVolume;0x80159AE6 diff --git a/undefined_syms.txt b/undefined_syms.txt index 5727b9abe2..ba19514be9 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -264,5 +264,7 @@ EnemyNpcDefeat = 0x8007809C; D_80078DB0 = 0x80078DB0; D_80078DB4 = 0x80078DB4; -gMusicVolume = 0x80159AE0; +gMusicUnkVolume = 0x80159AE0; +gMusicTargetVolume = 0x80159AE2; +gMusicCurVolume = 0x80159AE6; gMusicPlayers = 0x80159AF0; From 631afbe47798c153dd4e4c347e5eef6d5389cba3 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 03:43:58 +0000 Subject: [PATCH 09/17] match many small funcs, rename symbols --- .../code_e0b30_len_b80/func_8014A498.s | 8 +-- .../code_e0b30_len_b80/func_8014AB0C.s | 27 -------- .../code_e0b30_len_b80/func_8014AB60.s | 27 -------- .../code_e0b30_len_b80/func_8014ABB4.s | 27 -------- .../code_e0b30_len_b80/func_8014AC08.s | 25 -------- .../code_e0b30_len_b80/func_8014AC5C.s | 9 --- .../code_e0b30_len_b80/func_8014AC70.s | 9 --- .../code_e0b30_len_b80/func_8014AC94.s | 18 +++--- .../code_e0b30_len_b80/func_8014AF8C.s | 9 --- include/common_structs.h | 4 +- include/variables.h | 3 +- src/code_e0b30_len_b80.c | 61 +++++++++++++++---- tools/symbol_addrs.txt | 1 + undefined_syms.txt | 13 ++-- 14 files changed, 74 insertions(+), 167 deletions(-) delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AB0C.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AB60.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014ABB4.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AC08.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AC5C.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AC70.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014AF8C.s diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s index 013083418f..69f5b7c302 100644 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s +++ b/asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s @@ -30,10 +30,10 @@ glabel func_8014A498 /* E0BF4 8014A4F4 1440FFF0 */ bnez $v0, .L8014A4B8 /* E0BF8 8014A4F8 24840030 */ addiu $a0, $a0, 0x30 /* E0BFC 8014A4FC 24020008 */ addiu $v0, $zero, 8 -/* E0C00 8014A500 3C018016 */ lui $at, %hi(D_80159AE2) -/* E0C04 8014A504 A4229AE2 */ sh $v0, %lo(D_80159AE2)($at) -/* E0C08 8014A508 3C018016 */ lui $at, %hi(D_80159AE4) -/* E0C0C 8014A50C A4229AE4 */ sh $v0, %lo(D_80159AE4)($at) +/* E0C00 8014A500 3C018016 */ lui $at, %hi(gMusicTargetVolume) +/* E0C04 8014A504 A4229AE2 */ sh $v0, %lo(gMusicTargetVolume)($at) +/* E0C08 8014A508 3C018016 */ lui $at, %hi(gMusicUnkVolume2) +/* E0C0C 8014A50C A4229AE4 */ sh $v0, %lo(gMusicUnkVolume2)($at) /* E0C10 8014A510 3C018016 */ lui $at, 0x8016 /* E0C14 8014A514 A4229AE6 */ sh $v0, -0x651a($at) /* E0C18 8014A518 0C015869 */ jal func_800561A4 diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AB0C.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AB0C.s deleted file mode 100644 index 8f8d3ba207..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AB0C.s +++ /dev/null @@ -1,27 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AB0C -/* E120C 8014AB0C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* E1210 8014AB10 3C028016 */ lui $v0, 0x8016 -/* E1214 8014AB14 24429AF0 */ addiu $v0, $v0, -0x6510 -/* E1218 8014AB18 00041840 */ sll $v1, $a0, 1 -/* E121C 8014AB1C 00641821 */ addu $v1, $v1, $a0 -/* E1220 8014AB20 00031900 */ sll $v1, $v1, 4 -/* E1224 8014AB24 00621821 */ addu $v1, $v1, $v0 -/* E1228 8014AB28 AFBF0010 */ sw $ra, 0x10($sp) -/* E122C 8014AB2C 94620000 */ lhu $v0, ($v1) -/* E1230 8014AB30 30420001 */ andi $v0, $v0, 1 -/* E1234 8014AB34 10400006 */ beqz $v0, .L8014AB50 -/* E1238 8014AB38 00052C00 */ sll $a1, $a1, 0x10 -/* E123C 8014AB3C 8C640018 */ lw $a0, 0x18($v1) -/* E1240 8014AB40 0C015777 */ jal func_80055DDC -/* E1244 8014AB44 00052C03 */ sra $a1, $a1, 0x10 -/* E1248 8014AB48 08052AD5 */ j .L8014AB54 -/* E124C 8014AB4C 00000000 */ nop -.L8014AB50: -/* E1250 8014AB50 0000102D */ daddu $v0, $zero, $zero -.L8014AB54: -/* E1254 8014AB54 8FBF0010 */ lw $ra, 0x10($sp) -/* E1258 8014AB58 03E00008 */ jr $ra -/* E125C 8014AB5C 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AB60.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AB60.s deleted file mode 100644 index 46042b52a4..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AB60.s +++ /dev/null @@ -1,27 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AB60 -/* E1260 8014AB60 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* E1264 8014AB64 3C028016 */ lui $v0, 0x8016 -/* E1268 8014AB68 24429AF0 */ addiu $v0, $v0, -0x6510 -/* E126C 8014AB6C 00041840 */ sll $v1, $a0, 1 -/* E1270 8014AB70 00641821 */ addu $v1, $v1, $a0 -/* E1274 8014AB74 00031900 */ sll $v1, $v1, 4 -/* E1278 8014AB78 00621821 */ addu $v1, $v1, $v0 -/* E127C 8014AB7C AFBF0010 */ sw $ra, 0x10($sp) -/* E1280 8014AB80 94620000 */ lhu $v0, ($v1) -/* E1284 8014AB84 30420001 */ andi $v0, $v0, 1 -/* E1288 8014AB88 10400006 */ beqz $v0, .L8014ABA4 -/* E128C 8014AB8C 00052C00 */ sll $a1, $a1, 0x10 -/* E1290 8014AB90 8C640018 */ lw $a0, 0x18($v1) -/* E1294 8014AB94 0C015792 */ jal func_80055E48 -/* E1298 8014AB98 00052C03 */ sra $a1, $a1, 0x10 -/* E129C 8014AB9C 08052AEA */ j .L8014ABA8 -/* E12A0 8014ABA0 00000000 */ nop -.L8014ABA4: -/* E12A4 8014ABA4 0000102D */ daddu $v0, $zero, $zero -.L8014ABA8: -/* E12A8 8014ABA8 8FBF0010 */ lw $ra, 0x10($sp) -/* E12AC 8014ABAC 03E00008 */ jr $ra -/* E12B0 8014ABB0 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014ABB4.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014ABB4.s deleted file mode 100644 index 1899e95433..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014ABB4.s +++ /dev/null @@ -1,27 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014ABB4 -/* E12B4 8014ABB4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* E12B8 8014ABB8 3C028016 */ lui $v0, 0x8016 -/* E12BC 8014ABBC 24429AF0 */ addiu $v0, $v0, -0x6510 -/* E12C0 8014ABC0 00041840 */ sll $v1, $a0, 1 -/* E12C4 8014ABC4 00641821 */ addu $v1, $v1, $a0 -/* E12C8 8014ABC8 00031900 */ sll $v1, $v1, 4 -/* E12CC 8014ABCC 00621821 */ addu $v1, $v1, $v0 -/* E12D0 8014ABD0 AFBF0010 */ sw $ra, 0x10($sp) -/* E12D4 8014ABD4 94620000 */ lhu $v0, ($v1) -/* E12D8 8014ABD8 30420001 */ andi $v0, $v0, 1 -/* E12DC 8014ABDC 10400006 */ beqz $v0, .L8014ABF8 -/* E12E0 8014ABE0 00052C00 */ sll $a1, $a1, 0x10 -/* E12E4 8014ABE4 8C640018 */ lw $a0, 0x18($v1) -/* E12E8 8014ABE8 0C015731 */ jal func_80055CC4 -/* E12EC 8014ABEC 00052C03 */ sra $a1, $a1, 0x10 -/* E12F0 8014ABF0 08052AFF */ j .L8014ABFC -/* E12F4 8014ABF4 00000000 */ nop -.L8014ABF8: -/* E12F8 8014ABF8 0000102D */ daddu $v0, $zero, $zero -.L8014ABFC: -/* E12FC 8014ABFC 8FBF0010 */ lw $ra, 0x10($sp) -/* E1300 8014AC00 03E00008 */ jr $ra -/* E1304 8014AC04 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC08.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AC08.s deleted file mode 100644 index 0b64c7e4d2..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC08.s +++ /dev/null @@ -1,25 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AC08 -/* E1308 8014AC08 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* E130C 8014AC0C 0000202D */ daddu $a0, $zero, $zero -/* E1310 8014AC10 2405FFFF */ addiu $a1, $zero, -1 -/* E1314 8014AC14 0080302D */ daddu $a2, $a0, $zero -/* E1318 8014AC18 240700FA */ addiu $a3, $zero, 0xfa -/* E131C 8014AC1C AFB00018 */ sw $s0, 0x18($sp) -/* E1320 8014AC20 24100008 */ addiu $s0, $zero, 8 -/* E1324 8014AC24 AFBF001C */ sw $ra, 0x1c($sp) -/* E1328 8014AC28 0C052A46 */ jal set_music_track -/* E132C 8014AC2C AFB00010 */ sw $s0, 0x10($sp) -/* E1330 8014AC30 24040001 */ addiu $a0, $zero, 1 -/* E1334 8014AC34 2405FFFF */ addiu $a1, $zero, -1 -/* E1338 8014AC38 0000302D */ daddu $a2, $zero, $zero -/* E133C 8014AC3C 240700FA */ addiu $a3, $zero, 0xfa -/* E1340 8014AC40 0C052A46 */ jal set_music_track -/* E1344 8014AC44 AFB00010 */ sw $s0, 0x10($sp) -/* E1348 8014AC48 8FBF001C */ lw $ra, 0x1c($sp) -/* E134C 8014AC4C 8FB00018 */ lw $s0, 0x18($sp) -/* E1350 8014AC50 24020001 */ addiu $v0, $zero, 1 -/* E1354 8014AC54 03E00008 */ jr $ra -/* E1358 8014AC58 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC5C.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AC5C.s deleted file mode 100644 index 3bc632238a..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC5C.s +++ /dev/null @@ -1,9 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AC5C -/* E135C 8014AC5C 24020004 */ addiu $v0, $zero, 4 -/* E1360 8014AC60 3C018016 */ lui $at, %hi(D_80159AE4) -/* E1364 8014AC64 A4229AE4 */ sh $v0, %lo(D_80159AE4)($at) -/* E1368 8014AC68 03E00008 */ jr $ra -/* E136C 8014AC6C 00000000 */ nop diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC70.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AC70.s deleted file mode 100644 index 9b0abe19a3..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC70.s +++ /dev/null @@ -1,9 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AC70 -/* E1370 8014AC70 24020008 */ addiu $v0, $zero, 8 -/* E1374 8014AC74 3C018016 */ lui $at, %hi(D_80159AE4) -/* E1378 8014AC78 A4229AE4 */ sh $v0, %lo(D_80159AE4)($at) -/* E137C 8014AC7C 03E00008 */ jr $ra -/* E1380 8014AC80 00000000 */ nop diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC94.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AC94.s index 3428a38914..f1b97ef67a 100644 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AC94.s +++ b/asm/nonmatchings/code_e0b30_len_b80/func_8014AC94.s @@ -13,15 +13,15 @@ glabel func_8014AC94 /* E13B4 8014ACB4 08052B4D */ j .L8014AD34 /* E13B8 8014ACB8 A4820000 */ sh $v0, ($a0) .L8014ACBC: -/* E13BC 8014ACBC 3C038016 */ lui $v1, %hi(D_80159AE2) -/* E13C0 8014ACC0 84639AE2 */ lh $v1, %lo(D_80159AE2)($v1) -/* E13C4 8014ACC4 3C028016 */ lui $v0, %hi(D_80159AE4) -/* E13C8 8014ACC8 84429AE4 */ lh $v0, %lo(D_80159AE4)($v0) -/* E13CC 8014ACCC 3C048016 */ lui $a0, %hi(D_80159AE2) -/* E13D0 8014ACD0 94849AE2 */ lhu $a0, %lo(D_80159AE2)($a0) +/* E13BC 8014ACBC 3C038016 */ lui $v1, %hi(gMusicTargetVolume) +/* E13C0 8014ACC0 84639AE2 */ lh $v1, %lo(gMusicTargetVolume)($v1) +/* E13C4 8014ACC4 3C028016 */ lui $v0, %hi(gMusicUnkVolume2) +/* E13C8 8014ACC8 84429AE4 */ lh $v0, %lo(gMusicUnkVolume2)($v0) +/* E13CC 8014ACCC 3C048016 */ lui $a0, %hi(gMusicTargetVolume) +/* E13D0 8014ACD0 94849AE2 */ lhu $a0, %lo(gMusicTargetVolume)($a0) /* E13D4 8014ACD4 0043102A */ slt $v0, $v0, $v1 -/* E13D8 8014ACD8 3C038016 */ lui $v1, %hi(D_80159AE4) -/* E13DC 8014ACDC 94639AE4 */ lhu $v1, %lo(D_80159AE4)($v1) +/* E13D8 8014ACD8 3C038016 */ lui $v1, %hi(gMusicUnkVolume2) +/* E13DC 8014ACDC 94639AE4 */ lhu $v1, %lo(gMusicUnkVolume2)($v1) /* E13E0 8014ACE0 54400001 */ bnel $v0, $zero, .L8014ACE8 /* E13E4 8014ACE4 0060202D */ daddu $a0, $v1, $zero .L8014ACE8: @@ -41,7 +41,7 @@ glabel func_8014AC94 /* E1418 8014AD18 3C048016 */ lui $a0, 0x8016 /* E141C 8014AD1C 84849AE6 */ lh $a0, -0x651a($a0) /* E1420 8014AD20 0C015869 */ jal func_800561A4 -/* E1424 8014AD24 00000000 */ nop +/* E1424 8014AD24 00000000 */ nop /* E1428 8014AD28 24020003 */ addiu $v0, $zero, 3 /* E142C 8014AD2C 3C018015 */ lui $at, 0x8015 /* E1430 8014AD30 A422F738 */ sh $v0, -0x8c8($at) diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014AF8C.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014AF8C.s deleted file mode 100644 index d105d8a217..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014AF8C.s +++ /dev/null @@ -1,9 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014AF8C -/* E168C 8014AF8C 3C028016 */ lui $v0, 0x8016 -/* E1690 8014AF90 24429AF0 */ addiu $v0, $v0, -0x6510 -/* E1694 8014AF94 AC44001C */ sw $a0, 0x1c($v0) -/* E1698 8014AF98 03E00008 */ jr $ra -/* E169C 8014AF9C AC450020 */ sw $a1, 0x20($v0) diff --git a/include/common_structs.h b/include/common_structs.h index 74516f195e..3034c2317c 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -316,7 +316,9 @@ typedef struct MusicPlayer { /* 0x10 */ s32 songID; /* 0x14 */ s32 variation; /* 0x18 */ s32 unk_18; - /* 0x1C */ char unk_1C[20]; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ char unk_24[12]; } MusicPlayer; // size = 0x30 typedef struct MenuIcon { diff --git a/include/variables.h b/include/variables.h index dff7fd36a2..0d6ce235df 100644 --- a/include/variables.h +++ b/include/variables.h @@ -80,8 +80,6 @@ extern s32 D_8010CD20; extern s32 D_8010EF08; extern s32 D_8010F094; // player shadow index? extern s32 D_801595A0; -extern s16 D_80159AE2; // music target volume? -extern s16 D_80159AE4; extern BackgroundHeader gBackgroundImage; extern PrintContext* gCurrentPrintContext; @@ -166,6 +164,7 @@ extern Bytecode* ShakeCam1; extern Bytecode* ShakeCamX; extern s16 gMusicUnkVolume; +extern s16 gMusicUnkVolume2; extern s16 gMusicCurrentVolume; extern s16 gMusicTargetVolume; extern MusicPlayer gMusicPlayers[]; diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 0e24ebc7df..f186d032a8 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -1,6 +1,5 @@ #include "common.h" - void func_8014AC84(s16 volume); INCLUDE_ASM(s32, "code_e0b30_len_b80", get_default_variation_for_song); @@ -8,8 +7,8 @@ INCLUDE_ASM(s32, "code_e0b30_len_b80", get_default_variation_for_song); INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A498); void func_8014A52C(void) { - D_80159AE2 = 0x08; - D_80159AE4 = 0x08; + gMusicTargetVolume = 8; + gMusicUnkVolume2 = 8; } INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A548); @@ -126,20 +125,56 @@ s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2) { return 1; } -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AB0C); +s32 func_8014AB0C(s32 playerIndex, s16 arg1) { + MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AB60); + if (!(musicPlayer->flags & 1)) { + return 0; + } -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014ABB4); + return func_80055DDC(musicPlayer->unk_18, arg1); +} -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC08); +s32 func_8014AB60(s32 playerIndex, s16 arg1) { + MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC5C); + if (!(musicPlayer->flags & 1)) { + return 0; + } -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC70); + return func_80055E48(musicPlayer->unk_18, arg1); +} + +s32 func_8014ABB4(s32 playerIndex, s16 arg1) { + MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; + + if (!(musicPlayer->flags & 1)) { + return 0; + } + + return func_80055CC4(musicPlayer->unk_18, arg1); +} + +s32 func_8014AC08(void) { + set_music_track(0, -1, 0, 250, 8); + set_music_track(1, -1, 0, 250, 8); + + return 1; +} + +void func_8014AC5C(void) { + gMusicUnkVolume2 = 4; +} + +void func_8014AC70(void) { + gMusicUnkVolume2 = 8; +} void func_8014AC84(s16 volume) { - D_80159AE2 = volume; + gMusicTargetVolume = volume; } INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AC94); @@ -154,7 +189,11 @@ INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AE6C); INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AEF8); -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014AF8C); +void func_8014AF8C(s32 arg0, s32 arg1) { + MusicPlayer* musicPlayer = &gMusicPlayers[0]; + musicPlayer->unk_1C = arg0; + musicPlayer->unk_20 = arg1; +} void func_8014AFA0(void) { } diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index c83ba8dce3..27ca6bc9e6 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1901,5 +1901,6 @@ D_80078DB0;0x80078DB0 D_80078DB4;0x80078DB4 gMusicPlayers;0x80159AF0 gMusicUnkVolume;0x80159AE0 +gMusicUnkVolume2;0x80159AE4 gMusicTargetVolume;0x80159AE2 gMusicCurVolume;0x80159AE6 diff --git a/undefined_syms.txt b/undefined_syms.txt index ba19514be9..0442c35f66 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -179,8 +179,12 @@ gTriggerList2 = 0x80159290; gCurrentTriggerListPtr = 0x80159390; D_801595A0 = 0x801595A0; -D_80159AE2 = 0x80159AE2; -D_80159AE4 = 0x80159AE4; +gMusicUnkVolume = 0x80159AE0; +gMusicTargetVolume = 0x80159AE2; +gMusicUnkVolume2 = 0x80159AE4; +gMusicCurVolume = 0x80159AE6; +gMusicPlayers = 0x80159AF0; + gCollisionStatus = 0x8015A550; D_8015C7C0 = 0x8015C7C0; gLastCreatedEntityIndex = 0x801512EC; @@ -263,8 +267,3 @@ EnemyNpcDefeat = 0x8007809C; D_80078DB0 = 0x80078DB0; D_80078DB4 = 0x80078DB4; - -gMusicUnkVolume = 0x80159AE0; -gMusicTargetVolume = 0x80159AE2; -gMusicCurVolume = 0x80159AE6; -gMusicPlayers = 0x80159AF0; From c1df09dba870bf4412d71371c5e506624a0e1081 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 21:35:59 +0000 Subject: [PATCH 10/17] match some cursed funcs + cleanup --- .../code_28910_len_5090/func_8004DA0C.s | 33 ----------------- .../code_303c0_len_3e10/func_800559C4.s | 11 ------ include/variables.h | 2 +- src/code_28910_len_5090.c | 36 +++++++++++++++++-- src/code_28910_len_5090.h | 22 ++++++++++++ src/code_2e230_len_2190.c | 8 +++-- src/code_2e230_len_2190.h | 17 +++++++++ src/code_303c0_len_3e10.c | 4 ++- src/code_e0b30_len_b80.c | 15 ++++---- 9 files changed, 90 insertions(+), 58 deletions(-) delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_8004DA0C.s delete mode 100644 asm/nonmatchings/code_303c0_len_3e10/func_800559C4.s create mode 100644 src/code_28910_len_5090.h create mode 100644 src/code_2e230_len_2190.h diff --git a/asm/nonmatchings/code_28910_len_5090/func_8004DA0C.s b/asm/nonmatchings/code_28910_len_5090/func_8004DA0C.s deleted file mode 100644 index 823f6ef476..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_8004DA0C.s +++ /dev/null @@ -1,33 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8004DA0C -/* 28E0C 8004DA0C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 28E10 8004DA10 AFB10014 */ sw $s1, 0x14($sp) -/* 28E14 8004DA14 0080882D */ daddu $s1, $a0, $zero -/* 28E18 8004DA18 AFB00010 */ sw $s0, 0x10($sp) -/* 28E1C 8004DA1C 0000802D */ daddu $s0, $zero, $zero -/* 28E20 8004DA20 1220000D */ beqz $s1, .L8004DA58 -/* 28E24 8004DA24 AFBF0018 */ sw $ra, 0x18($sp) -/* 28E28 8004DA28 0C0135E5 */ jal func_8004D794 -/* 28E2C 8004DA2C 00000000 */ nop -/* 28E30 8004DA30 0040202D */ daddu $a0, $v0, $zero -/* 28E34 8004DA34 50800009 */ beql $a0, $zero, .L8004DA5C -/* 28E38 8004DA38 24100002 */ addiu $s0, $zero, 2 -/* 28E3C 8004DA3C 8C82001C */ lw $v0, 0x1c($a0) -/* 28E40 8004DA40 16220007 */ bne $s1, $v0, .L8004DA60 -/* 28E44 8004DA44 0200102D */ daddu $v0, $s0, $zero -/* 28E48 8004DA48 0C0136AA */ jal func_8004DAA8 -/* 28E4C 8004DA4C 00000000 */ nop -/* 28E50 8004DA50 08013698 */ j .L8004DA60 -/* 28E54 8004DA54 0200102D */ daddu $v0, $s0, $zero -.L8004DA58: -/* 28E58 8004DA58 24100003 */ addiu $s0, $zero, 3 -.L8004DA5C: -/* 28E5C 8004DA5C 0200102D */ daddu $v0, $s0, $zero -.L8004DA60: -/* 28E60 8004DA60 8FBF0018 */ lw $ra, 0x18($sp) -/* 28E64 8004DA64 8FB10014 */ lw $s1, 0x14($sp) -/* 28E68 8004DA68 8FB00010 */ lw $s0, 0x10($sp) -/* 28E6C 8004DA6C 03E00008 */ jr $ra -/* 28E70 8004DA70 27BD0020 */ addiu $sp, $sp, 0x20 diff --git a/asm/nonmatchings/code_303c0_len_3e10/func_800559C4.s b/asm/nonmatchings/code_303c0_len_3e10/func_800559C4.s deleted file mode 100644 index c0e9dfc395..0000000000 --- a/asm/nonmatchings/code_303c0_len_3e10/func_800559C4.s +++ /dev/null @@ -1,11 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_800559C4 -/* 30DC4 800559C4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 30DC8 800559C8 AFBF0010 */ sw $ra, 0x10($sp) -/* 30DCC 800559CC 0C013683 */ jal func_8004DA0C -/* 30DD0 800559D0 00000000 */ nop -/* 30DD4 800559D4 8FBF0010 */ lw $ra, 0x10($sp) -/* 30DD8 800559D8 03E00008 */ jr $ra -/* 30DDC 800559DC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/include/variables.h b/include/variables.h index 0d6ce235df..d892d99244 100644 --- a/include/variables.h +++ b/include/variables.h @@ -167,6 +167,6 @@ extern s16 gMusicUnkVolume; extern s16 gMusicUnkVolume2; extern s16 gMusicCurrentVolume; extern s16 gMusicTargetVolume; -extern MusicPlayer gMusicPlayers[]; +extern MusicPlayer gMusicPlayers[]; // TODO: how many? #endif diff --git a/src/code_28910_len_5090.c b/src/code_28910_len_5090.c index 9ea3bbb779..62fe271554 100644 --- a/src/code_28910_len_5090.c +++ b/src/code_28910_len_5090.c @@ -1,4 +1,4 @@ -#include "common.h" +#include "code_28910_len_5090.h" INCLUDE_ASM(s32, "code_28910_len_5090", func_8004D510); @@ -6,11 +6,41 @@ INCLUDE_ASM(s32, "code_28910_len_5090", func_8004D794); INCLUDE_ASM(s32, "code_28910_len_5090", func_8004D7E0); -INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DA0C); +s32 func_8004DA0C(UNK_TYPE arg0) { + s32 ret = 0; + + if (arg0 != 0) { + UnkStructFor8004DAA8* unknown; + + do { + unknown = func_8004D794(); + } while (0); + + do { + if (unknown == NULL) { + ret = 2; + } else if (arg0 == unknown->unk_01C) { + func_8004DAA8(unknown); + ret = 0; + } + } while (0); + } else { + ret = 3; + } + + return ret; +} INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DA74); -INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DAA8); +void func_8004DAA8(UnkStructFor8004DAA8 *arg0) { + if (arg0->unk_221 != 0) { + arg0->unk_221 = 4; + arg0->unk_010 = 1; + arg0->unk_008 = 1; + func_80053A18(&arg0->unk_02C); + } +} INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DAE0); diff --git a/src/code_28910_len_5090.h b/src/code_28910_len_5090.h new file mode 100644 index 0000000000..1aa5bb7712 --- /dev/null +++ b/src/code_28910_len_5090.h @@ -0,0 +1,22 @@ +#ifndef _CODE_28910_LEN_5090_H_ +#define _CODE_28910_LEN_5090_H_ + +#include "common.h" +#include "code_2e230_len_2190.h" + +typedef struct { + /* 0x000 */ char unk_000[8]; + /* 0x008 */ s32 unk_008; + /* 0x00C */ char unk_00C[4]; + /* 0x010 */ s32 unk_010; + /* 0x014 */ char unk_014[8]; + /* 0x01C */ UNK_TYPE unk_01C; + /* 0x020 */ char unk_020[0xC]; + /* 0x02C */ UnkStructFor80053A18 unk_02C; + /* 0x03C */ char unk_03C[0x1E5]; + /* 0x221 */ u8 unk_221; +} UnkStructFor8004DAA8; // size unknown + +void func_8004DAA8(UnkStructFor8004DAA8* arg0); + +#endif diff --git a/src/code_2e230_len_2190.c b/src/code_2e230_len_2190.c index 7716dc523f..d97c70f1b3 100644 --- a/src/code_2e230_len_2190.c +++ b/src/code_2e230_len_2190.c @@ -1,4 +1,4 @@ -#include "common.h" +#include "code_2e230_len_2190.h" INCLUDE_ASM(s32, "code_2e230_len_2190", func_80052E30); @@ -24,7 +24,11 @@ INCLUDE_ASM(s32, "code_2e230_len_2190", func_800538F8); INCLUDE_ASM(s32, "code_2e230_len_2190", func_80053974); -INCLUDE_ASM(s32, "code_2e230_len_2190", func_80053A18); +void func_80053A18(UnkStructFor80053A18* arg0) { + arg0->unk_0A = 0; + arg0->unk_04 = 0; + arg0->unk_0C = 0; +} INCLUDE_ASM(s32, "code_2e230_len_2190", func_80053A28); diff --git a/src/code_2e230_len_2190.h b/src/code_2e230_len_2190.h new file mode 100644 index 0000000000..5b3dc33da0 --- /dev/null +++ b/src/code_2e230_len_2190.h @@ -0,0 +1,17 @@ +#ifndef _CODE_2E230_LEN_2190_H_ +#define _CODE_2E230_LEN_2190_H_ + +#include "common.h" + +// Probably some libultra audio thing +typedef struct UnkStructFor80053A18 { + /* 0x00 */ UNK_TYPE unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ char unk_08[2]; + /* 0x0A */ u16 unk_0A; + /* 0x0C */ s32 unk_0C; +} UnkStructFor80053A18; // size unknown + +void func_80053A18(UnkStructFor80053A18* arg0); + +#endif diff --git a/src/code_303c0_len_3e10.c b/src/code_303c0_len_3e10.c index 357c8a3faf..0fb5eb1c82 100644 --- a/src/code_303c0_len_3e10.c +++ b/src/code_303c0_len_3e10.c @@ -70,7 +70,9 @@ INCLUDE_ASM(s32, "code_303c0_len_3e10", func_8005591C); INCLUDE_ASM(s32, "code_303c0_len_3e10", func_80055970); -INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800559C4); +s32 func_800559C4(UNK_TYPE arg0) { + return func_8004DA0C(arg0); +} INCLUDE_ASM(s32, "code_303c0_len_3e10", func_800559E0); diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index f186d032a8..f7be58427b 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -19,7 +19,8 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime if (gameStatus->demoState != 0) { return 1; } else { - MusicPlayer* musicPlayers = &gMusicPlayers; + // TODO: these two lines likely a MUSIC_PLAYER(idx) macro + MusicPlayer* musicPlayers = gMusicPlayers; MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; if (!gameStatus->musicEnabled) { @@ -57,7 +58,7 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime } s32 set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { - MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayers = gMusicPlayers; musicPlayers[playerIndex].flags &= ~8; @@ -70,7 +71,7 @@ s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s1 if (gameStatus->demoState != 0) { return 1; } else { - MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayers = gMusicPlayers; MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; if (!gameStatus->musicEnabled) { @@ -99,7 +100,7 @@ s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s1 } s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2) { - MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayers = gMusicPlayers; MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; if (!(musicPlayer->flags & 1)) { @@ -126,7 +127,7 @@ s32 func_8014AA54(s32 playerIndex, s32 arg1, s16 arg2) { } s32 func_8014AB0C(s32 playerIndex, s16 arg1) { - MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayers = gMusicPlayers; MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; if (!(musicPlayer->flags & 1)) { @@ -137,7 +138,7 @@ s32 func_8014AB0C(s32 playerIndex, s16 arg1) { } s32 func_8014AB60(s32 playerIndex, s16 arg1) { - MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayers = gMusicPlayers; MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; if (!(musicPlayer->flags & 1)) { @@ -148,7 +149,7 @@ s32 func_8014AB60(s32 playerIndex, s16 arg1) { } s32 func_8014ABB4(s32 playerIndex, s16 arg1) { - MusicPlayer* musicPlayers = &gMusicPlayers; + MusicPlayer* musicPlayers = gMusicPlayers; MusicPlayer* musicPlayer = &musicPlayers[playerIndex]; if (!(musicPlayer->flags & 1)) { From db1ee14d8f90d431a9d7b597421bb7e287c958f8 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 22:41:43 +0000 Subject: [PATCH 11/17] match get_song_variation_override_for_cur_map This was previously called get_default_variation_for_song, but its more of an override than a default. --- .../code_28910_len_5090/func_8004DAA8.s | 19 ---------- .../code_2e230_len_2190/func_80053A18.s | 8 ---- .../get_default_variation_for_song.s | 32 ---------------- include/enums.h | 2 +- include/map.h | 38 ++++++++++++++++++- src/code_e0b30_len_b80.c | 38 +++++++++++++++---- tools/symbol_addrs.txt | 2 + undefined_syms.txt | 3 ++ 8 files changed, 72 insertions(+), 70 deletions(-) delete mode 100644 asm/nonmatchings/code_28910_len_5090/func_8004DAA8.s delete mode 100644 asm/nonmatchings/code_2e230_len_2190/func_80053A18.s delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/get_default_variation_for_song.s diff --git a/asm/nonmatchings/code_28910_len_5090/func_8004DAA8.s b/asm/nonmatchings/code_28910_len_5090/func_8004DAA8.s deleted file mode 100644 index 5f5c5bc996..0000000000 --- a/asm/nonmatchings/code_28910_len_5090/func_8004DAA8.s +++ /dev/null @@ -1,19 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8004DAA8 -/* 28EA8 8004DAA8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 28EAC 8004DAAC AFBF0010 */ sw $ra, 0x10($sp) -/* 28EB0 8004DAB0 90820221 */ lbu $v0, 0x221($a0) -/* 28EB4 8004DAB4 10400007 */ beqz $v0, .L8004DAD4 -/* 28EB8 8004DAB8 24020004 */ addiu $v0, $zero, 4 -/* 28EBC 8004DABC A0820221 */ sb $v0, 0x221($a0) -/* 28EC0 8004DAC0 24020001 */ addiu $v0, $zero, 1 -/* 28EC4 8004DAC4 AC820010 */ sw $v0, 0x10($a0) -/* 28EC8 8004DAC8 AC820008 */ sw $v0, 8($a0) -/* 28ECC 8004DACC 0C014E86 */ jal func_80053A18 -/* 28ED0 8004DAD0 2484002C */ addiu $a0, $a0, 0x2c -.L8004DAD4: -/* 28ED4 8004DAD4 8FBF0010 */ lw $ra, 0x10($sp) -/* 28ED8 8004DAD8 03E00008 */ jr $ra -/* 28EDC 8004DADC 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/asm/nonmatchings/code_2e230_len_2190/func_80053A18.s b/asm/nonmatchings/code_2e230_len_2190/func_80053A18.s deleted file mode 100644 index 6c3a79075d..0000000000 --- a/asm/nonmatchings/code_2e230_len_2190/func_80053A18.s +++ /dev/null @@ -1,8 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_80053A18 -/* 2EE18 80053A18 A480000A */ sh $zero, 0xa($a0) -/* 2EE1C 80053A1C AC800004 */ sw $zero, 4($a0) -/* 2EE20 80053A20 03E00008 */ jr $ra -/* 2EE24 80053A24 AC80000C */ sw $zero, 0xc($a0) diff --git a/asm/nonmatchings/code_e0b30_len_b80/get_default_variation_for_song.s b/asm/nonmatchings/code_e0b30_len_b80/get_default_variation_for_song.s deleted file mode 100644 index 4a660c6f77..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/get_default_variation_for_song.s +++ /dev/null @@ -1,32 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel get_default_variation_for_song -/* E0B30 8014A430 0000302D */ daddu $a2, $zero, $zero -/* E0B34 8014A434 3C078009 */ lui $a3, 0x8009 -/* E0B38 8014A438 24E734F0 */ addiu $a3, $a3, 0x34f0 -/* E0B3C 8014A43C 3C038007 */ lui $v1, %hi(gGameStatusPtr) -/* E0B40 8014A440 2463419C */ addiu $v1, $v1, %lo(gGameStatusPtr) -/* E0B44 8014A444 3C058015 */ lui $a1, 0x8015 -/* E0B48 8014A448 24A5F720 */ addiu $a1, $a1, -0x8e0 -.L8014A44C: -/* E0B4C 8014A44C 8CA20000 */ lw $v0, ($a1) -/* E0B50 8014A450 1444000C */ bne $v0, $a0, .L8014A484 -/* E0B54 8014A454 24C60001 */ addiu $a2, $a2, 1 -/* E0B58 8014A458 8C630000 */ lw $v1, ($v1) -/* E0B5C 8014A45C 84620086 */ lh $v0, 0x86($v1) -/* E0B60 8014A460 8463008C */ lh $v1, 0x8c($v1) -/* E0B64 8014A464 00021100 */ sll $v0, $v0, 4 -/* E0B68 8014A468 00471021 */ addu $v0, $v0, $a3 -/* E0B6C 8014A46C 8C420004 */ lw $v0, 4($v0) -/* E0B70 8014A470 00031940 */ sll $v1, $v1, 5 -/* E0B74 8014A474 00431021 */ addu $v0, $v0, $v1 -/* E0B78 8014A478 9042001E */ lbu $v0, 0x1e($v0) -/* E0B7C 8014A47C 03E00008 */ jr $ra -/* E0B80 8014A480 30420001 */ andi $v0, $v0, 1 -.L8014A484: -/* E0B84 8014A484 2CC20006 */ sltiu $v0, $a2, 6 -/* E0B88 8014A488 1440FFF0 */ bnez $v0, .L8014A44C -/* E0B8C 8014A48C 24A50004 */ addiu $a1, $a1, 4 -/* E0B90 8014A490 03E00008 */ jr $ra -/* E0B94 8014A494 2402FFFF */ addiu $v0, $zero, -1 diff --git a/include/enums.h b/include/enums.h index 8b669f3116..4669f119bf 100644 --- a/include/enums.h +++ b/include/enums.h @@ -260,7 +260,7 @@ typedef UNK_TYPE SpriteId; #define SpriteId_PARADE_TWINK 0x000000E8 #define SpriteId_LEAF 0x000000E9 -typedef UNK_TYPE Song; +typedef s32 SongID; #define Song_TOAD_TOWN 0x00000000 #define Song_NORMAL_BATTLE 0x00000002 #define Song_SPECIAL_BATTLE 0x00000003 diff --git a/include/map.h b/include/map.h index 594850b6f6..f40c65c2b9 100644 --- a/include/map.h +++ b/include/map.h @@ -13,12 +13,19 @@ typedef Vec4f EntryList[]; +/// Fields other than main, entryList, entryCount, background, and tattle are initialised when the map loads. typedef struct MapConfig { - /* 0x00 */ char unk_00[0x10]; + /* 0x00 */ ModelNode* modelTreeRoot; + /* 0x04 */ UNK_PTR collision; + /* 0x08 */ char unk_08[8]; /* 0x10 */ Script* main; /* 0x14 */ EntryList* entryList; /* 0x18 */ s32 entryCount; - /* 0x1C */ char unk_1C[0x1C]; + /* 0x1C */ char unk_1C[12]; + /* 0x28 */ char** modelNameList; + /* 0x2C */ char** colliderNameList; + /* 0x30 */ char** zoneNameList; + /* 0x34 */ char unk_34[4]; /* 0x38 */ BackgroundHeader* background; /* 0x3C */ union { MessageID msgID; @@ -26,6 +33,26 @@ typedef struct MapConfig { } tattle; } MapConfig; // size = 0x40 +#define MAP_ID_MAX_LEN 7 ///< "xxx_yyy" excluding null terminator. +typedef struct Map { + /* 0x00 */ char* id; ///< @see MAP_ID_MAX_LEN + /* 0x04 */ MapConfig* config; + /* 0x08 */ void* dmaStart; + /* 0x0C */ void* dmaEnd; + /* 0x10 */ void* dmaDest; + /* 0x14 */ char* bgName; + /* 0x18 */ s32 (*init)(void); ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. + /* 0x1C */ s16 flags1; + /* 0x1E */ s8 flags2; + /* 0x1F */ s8 flags3; +} Map; // size = 0x20 + +typedef struct Area { + /* 0x00 */ s32 mapCount; + /* 0x04 */ Map* maps; + /* 0x08 */ char* id; ///< "area_xxx" + /* 0x0C */ char* name; ///< JP debug name. +} Area; // size = 0x10 typedef struct NpcAISettings { /* 0x00 */ f32 moveSpeed; /* 0x04 */ s32 moveTime; @@ -218,4 +245,11 @@ typedef struct { Enemy* get_enemy(NpcId npcId); +/// Zero-terminated. +extern Area gAreas[]; + +/// Lists the songs that are forced to use the variation determined by `map.flags2 & 1`. +/// @see get_song_variation_override_for_cur_map +extern SongID gSongsUsingVariationFlag[6]; + #endif diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index f7be58427b..bd04bf4db9 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -1,8 +1,30 @@ #include "common.h" +#include "map.h" void func_8014AC84(s16 volume); -INCLUDE_ASM(s32, "code_e0b30_len_b80", get_default_variation_for_song); +/// If the given song ID is present in gSongsUsingVariationFlag, returns the current +/// map's `flags2 & 1` value. Otherwise, returns -1. +/// +/// @see gSongsUsingVariationFlag +/// @returns -1: no override; 0: override to variation 0; 1 override to variation 1 +s32 get_song_variation_override_for_cur_map(SongID songID) { + u32 i = 0; + Area* areas = gAreas; + SongID* allowed = gSongsUsingVariationFlag; + GameStatus** gameStatusPtr = gGameStatusPtr; + + for (i = 0; i < ARRAY_COUNT(gSongsUsingVariationFlag); i++) { + if (allowed[i] == songID) { + GameStatus* gameStatus = *gameStatusPtr; + Map* map = &areas[gameStatus->areaID].maps[gameStatus->mapID]; + + return map->flags2 & 1; + } + } + + return -1; +} INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A498); @@ -13,7 +35,7 @@ void func_8014A52C(void) { INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A548); -s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { +s32 _set_music_track(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutTime, s16 volume) { GameStatus* gameStatus = GAME_STATUS; if (gameStatus->demoState != 0) { @@ -29,9 +51,9 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime return 1; } else { - s32 defaultVariation = get_default_variation_for_song(songID); - if (defaultVariation >= 0) { - variation = defaultVariation; + s32 override = get_song_variation_override_for_cur_map(songID); + if (override >= 0) { + variation = override; } if (musicPlayer->songID == songID && musicPlayer->variation == variation) { @@ -57,7 +79,7 @@ s32 _set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime } } -s32 set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { +s32 set_music_track(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutTime, s16 volume) { MusicPlayer* musicPlayers = gMusicPlayers; musicPlayers[playerIndex].flags &= ~8; @@ -65,7 +87,7 @@ s32 set_music_track(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, return _set_music_track(playerIndex, songID, variation, fadeOutTime, volume); } -s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 arg4, s16 arg5) { +s32 func_8014A964(s32 playerIndex, SongID songID, s32 variation, s32 fadeInTime, s16 arg4, s16 arg5) { GameStatus* gameStatus = GAME_STATUS; if (gameStatus->demoState != 0) { @@ -80,7 +102,7 @@ s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s1 return 1; } else { - s32 defaultVariation = get_default_variation_for_song(songID); + s32 defaultVariation = get_song_variation_override_for_cur_map(songID); if (defaultVariation >= 0) { variation = defaultVariation; } diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index 27ca6bc9e6..a82b45a98d 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1904,3 +1904,5 @@ gMusicUnkVolume;0x80159AE0 gMusicUnkVolume2;0x80159AE4 gMusicTargetVolume;0x80159AE2 gMusicCurVolume;0x80159AE6 +gAreas;0x800934F0 +gSongArray;0x8014F720 diff --git a/undefined_syms.txt b/undefined_syms.txt index 0442c35f66..cf1496998c 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -267,3 +267,6 @@ EnemyNpcDefeat = 0x8007809C; D_80078DB0 = 0x80078DB0; D_80078DB4 = 0x80078DB4; + +gAreas = 0x800934F0; +gSongsUsingVariationFlag = 0x8014F720; From 484fba8d4d62b7e5e0feb2f06cbe6893bb9f8e03 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 22:42:34 +0000 Subject: [PATCH 12/17] name transition_music_volume_to --- .../code_e0b30_len_b80/func_8014A548.s | 28 +++++++++---------- src/code_e0b30_len_b80.c | 6 ++-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014A548.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014A548.s index 5c779984ab..c9dbd5c772 100644 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014A548.s +++ b/asm/nonmatchings/code_e0b30_len_b80/func_8014A548.s @@ -27,7 +27,7 @@ glabel func_8014A548 /* E0C9C 8014A59C 00220821 */ addu $at, $at, $v0 /* E0CA0 8014A5A0 8C221290 */ lw $v0, 0x1290($at) /* E0CA4 8014A5A4 00400008 */ jr $v0 -/* E0CA8 8014A5A8 00000000 */ nop +/* E0CA8 8014A5A8 00000000 */ nop /* E0CAC 8014A5AC 96230000 */ lhu $v1, ($s1) /* E0CB0 8014A5B0 30620001 */ andi $v0, $v1, 1 /* E0CB4 8014A5B4 1040001D */ beqz $v0, .L8014A62C @@ -37,24 +37,24 @@ glabel func_8014A548 /* E0CC4 8014A5C4 1040000B */ beqz $v0, .L8014A5F4 /* E0CC8 8014A5C8 30620004 */ andi $v0, $v1, 4 /* E0CCC 8014A5CC 14400005 */ bnez $v0, .L8014A5E4 -/* E0CD0 8014A5D0 00000000 */ nop +/* E0CD0 8014A5D0 00000000 */ nop /* E0CD4 8014A5D4 0C015671 */ jal func_800559C4 /* E0CD8 8014A5D8 8E040016 */ lw $a0, 0x16($s0) /* E0CDC 8014A5DC 08052987 */ j .L8014A61C -/* E0CE0 8014A5E0 00000000 */ nop +/* E0CE0 8014A5E0 00000000 */ nop .L8014A5E4: /* E0CE4 8014A5E4 0C0156BC */ jal func_80055AF0 /* E0CE8 8014A5E8 8E040016 */ lw $a0, 0x16($s0) /* E0CEC 8014A5EC 08052987 */ j .L8014A61C -/* E0CF0 8014A5F0 00000000 */ nop +/* E0CF0 8014A5F0 00000000 */ nop .L8014A5F4: /* E0CF4 8014A5F4 14400006 */ bnez $v0, .L8014A610 -/* E0CF8 8014A5F8 00000000 */ nop +/* E0CF8 8014A5F8 00000000 */ nop /* E0CFC 8014A5FC 8E040016 */ lw $a0, 0x16($s0) /* E0D00 8014A600 0C0156AF */ jal func_80055ABC /* E0D04 8014A604 0000302D */ daddu $a2, $zero, $zero /* E0D08 8014A608 08052987 */ j .L8014A61C -/* E0D0C 8014A60C 00000000 */ nop +/* E0D0C 8014A60C 00000000 */ nop .L8014A610: /* E0D10 8014A610 8E040016 */ lw $a0, 0x16($s0) /* E0D14 8014A614 0C0156EE */ jal func_80055BB8 @@ -82,7 +82,7 @@ glabel func_8014A548 /* E0D5C 8014A65C A6220000 */ sh $v0, ($s1) /* E0D60 8014A660 8E040016 */ lw $a0, 0x16($s0) /* E0D64 8014A664 0C01567F */ jal func_800559FC -/* E0D68 8014A668 00000000 */ nop +/* E0D68 8014A668 00000000 */ nop /* E0D6C 8014A66C 5440004D */ bnel $v0, $zero, .L8014A7A4 /* E0D70 8014A670 26520001 */ addiu $s2, $s2, 1 /* E0D74 8014A674 96220000 */ lhu $v0, ($s1) @@ -100,7 +100,7 @@ glabel func_8014A548 /* E0DA4 8014A6A4 30620010 */ andi $v0, $v1, 0x10 /* E0DA8 8014A6A8 8E04000E */ lw $a0, 0xe($s0) /* E0DAC 8014A6AC 04810003 */ bgez $a0, .L8014A6BC -/* E0DB0 8014A6B0 00000000 */ nop +/* E0DB0 8014A6B0 00000000 */ nop /* E0DB4 8014A6B4 080529E8 */ j .L8014A7A0 /* E0DB8 8014A6B8 A6000000 */ sh $zero, ($s0) .L8014A6BC: @@ -113,7 +113,7 @@ glabel func_8014A548 /* E0DD4 8014A6D4 96220000 */ lhu $v0, ($s1) /* E0DD8 8014A6D8 30420020 */ andi $v0, $v0, 0x20 /* E0DDC 8014A6DC 1040000C */ beqz $v0, .L8014A710 -/* E0DE0 8014A6E0 00000000 */ nop +/* E0DE0 8014A6E0 00000000 */ nop /* E0DE4 8014A6E4 8602000C */ lh $v0, 0xc($s0) /* E0DE8 8014A6E8 8607000A */ lh $a3, 0xa($s0) /* E0DEC 8014A6EC AFA20010 */ sw $v0, 0x10($sp) @@ -128,8 +128,8 @@ glabel func_8014A548 .L8014A710: /* E0E10 8014A710 3C048016 */ lui $a0, 0x8016 /* E0E14 8014A714 84849AE0 */ lh $a0, -0x6520($a0) -/* E0E18 8014A718 0C052B21 */ jal func_8014AC84 -/* E0E1C 8014A71C 00000000 */ nop +/* E0E18 8014A718 0C052B21 */ jal transition_music_volume_to +/* E0E1C 8014A71C 00000000 */ nop .L8014A720: /* E0E20 8014A720 8E040016 */ lw $a0, 0x16($s0) /* E0E24 8014A724 0C01565C */ jal func_80055970 @@ -143,7 +143,7 @@ glabel func_8014A548 /* E0E44 8014A744 A6000000 */ sh $zero, ($s0) .L8014A748: /* E0E48 8014A748 10400005 */ beqz $v0, .L8014A760 -/* E0E4C 8014A74C 00000000 */ nop +/* E0E4C 8014A74C 00000000 */ nop /* E0E50 8014A750 A6000000 */ sh $zero, ($s0) /* E0E54 8014A754 96220000 */ lhu $v0, ($s1) /* E0E58 8014A758 080529E7 */ j .L8014A79C @@ -151,7 +151,7 @@ glabel func_8014A548 .L8014A760: /* E0E60 8014A760 8E04002A */ lw $a0, 0x2a($s0) /* E0E64 8014A764 0C0156CA */ jal func_80055B28 -/* E0E68 8014A768 00000000 */ nop +/* E0E68 8014A768 00000000 */ nop /* E0E6C 8014A76C 5440000D */ bnel $v0, $zero, .L8014A7A4 /* E0E70 8014A770 26520001 */ addiu $s2, $s2, 1 /* E0E74 8014A774 8E020022 */ lw $v0, 0x22($s0) @@ -174,7 +174,7 @@ glabel func_8014A548 /* E0EAC 8014A7AC 1440FF75 */ bnez $v0, .L8014A584 /* E0EB0 8014A7B0 26310030 */ addiu $s1, $s1, 0x30 /* E0EB4 8014A7B4 0C052B25 */ jal func_8014AC94 -/* E0EB8 8014A7B8 00000000 */ nop +/* E0EB8 8014A7B8 00000000 */ nop /* E0EBC 8014A7BC 8FBF0030 */ lw $ra, 0x30($sp) /* E0EC0 8014A7C0 8FB5002C */ lw $s5, 0x2c($sp) /* E0EC4 8014A7C4 8FB40028 */ lw $s4, 0x28($sp) diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index bd04bf4db9..1aff819a74 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -1,7 +1,7 @@ #include "common.h" #include "map.h" -void func_8014AC84(s16 volume); +void transition_music_volume_to(s16 volume); /// If the given song ID is present in gSongsUsingVariationFlag, returns the current /// map's `flags2 & 1` value. Otherwise, returns -1. @@ -57,7 +57,7 @@ s32 _set_music_track(s32 playerIndex, SongID songID, s32 variation, s32 fadeOutT } if (musicPlayer->songID == songID && musicPlayer->variation == variation) { - func_8014AC84(volume); // transition volume to? + transition_music_volume_to(volume); if (musicPlayer->flags & 4) { func_80055B80(musicPlayer->unk_18); @@ -196,7 +196,7 @@ void func_8014AC70(void) { gMusicUnkVolume2 = 8; } -void func_8014AC84(s16 volume) { +void transition_music_volume_to(s16 volume) { gMusicTargetVolume = volume; } From cce065d5299e257be21b0ea609d82bf35c70c313 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Thu, 29 Oct 2020 23:52:24 +0000 Subject: [PATCH 13/17] badly match func_8014A498 --- include/variables.h | 3 ++- src/code_e0b30_len_b80.c | 16 +++++++++++++++- tools/symbol_addrs.txt | 2 +- undefined_syms.txt | 3 ++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/include/variables.h b/include/variables.h index d892d99244..753be45c0d 100644 --- a/include/variables.h +++ b/include/variables.h @@ -167,6 +167,7 @@ extern s16 gMusicUnkVolume; extern s16 gMusicUnkVolume2; extern s16 gMusicCurrentVolume; extern s16 gMusicTargetVolume; -extern MusicPlayer gMusicPlayers[]; // TODO: how many? +extern MusicPlayer gMusicPlayers[4]; +extern MusicPlayer D_8014F6F0; #endif diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 1aff819a74..0b81071ac3 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -26,7 +26,21 @@ s32 get_song_variation_override_for_cur_map(SongID songID) { return -1; } -INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A498); +//INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A498); +void func_8014A498(void) { + MusicPlayer* src; + s32 i; + + for (i = 0; i < 2; i++) { + MusicPlayer *musicPlayers = gMusicPlayers; + musicPlayers[i] = *(src = &D_8014F6F0); + } + + gMusicTargetVolume = 8; + gMusicUnkVolume2 = 8; + gMusicCurrentVolume = 8; + func_800561A4(8); +} void func_8014A52C(void) { gMusicTargetVolume = 8; diff --git a/tools/symbol_addrs.txt b/tools/symbol_addrs.txt index a82b45a98d..a88c409173 100644 --- a/tools/symbol_addrs.txt +++ b/tools/symbol_addrs.txt @@ -1903,6 +1903,6 @@ gMusicPlayers;0x80159AF0 gMusicUnkVolume;0x80159AE0 gMusicUnkVolume2;0x80159AE4 gMusicTargetVolume;0x80159AE2 -gMusicCurVolume;0x80159AE6 +gMusicCurrentVolume;0x80159AE6 gAreas;0x800934F0 gSongArray;0x8014F720 diff --git a/undefined_syms.txt b/undefined_syms.txt index cf1496998c..fa88c9a7e9 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -182,8 +182,9 @@ D_801595A0 = 0x801595A0; gMusicUnkVolume = 0x80159AE0; gMusicTargetVolume = 0x80159AE2; gMusicUnkVolume2 = 0x80159AE4; -gMusicCurVolume = 0x80159AE6; +gMusicCurrentVolume = 0x80159AE6; gMusicPlayers = 0x80159AF0; +D_8014F6F0 = 0x8014F6F0; gCollisionStatus = 0x8015A550; D_8015C7C0 = 0x8015C7C0; From 0f4b4f8db073e16ecdf8a31006460875af742f1c Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 00:01:11 +0000 Subject: [PATCH 14/17] add comment about .data --- src/code_e0b30_len_b80.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 0b81071ac3..c9a96443c1 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -26,9 +26,8 @@ s32 get_song_variation_override_for_cur_map(SongID songID) { return -1; } -//INCLUDE_ASM(s32, "code_e0b30_len_b80", func_8014A498); void func_8014A498(void) { - MusicPlayer* src; + MusicPlayer* src; // TODO: remove this temp when .data section for this file (incl. D_8014F6F0) is set up s32 i; for (i = 0; i < 2; i++) { From 2a1c35a80ced96622222398a3ce05ae64f8003df Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 17:50:58 +0000 Subject: [PATCH 15/17] lint --- .../code_e0b30_len_b80/func_8014A498.s | 43 ------------------- include/map.h | 2 +- src/code_28910_len_5090.c | 2 +- src/code_e0b30_len_b80.c | 2 +- 4 files changed, 3 insertions(+), 46 deletions(-) delete mode 100644 asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s diff --git a/asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s b/asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s deleted file mode 100644 index 69f5b7c302..0000000000 --- a/asm/nonmatchings/code_e0b30_len_b80/func_8014A498.s +++ /dev/null @@ -1,43 +0,0 @@ -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches - -glabel func_8014A498 -/* E0B98 8014A498 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* E0B9C 8014A49C AFBF0010 */ sw $ra, 0x10($sp) -/* E0BA0 8014A4A0 0000282D */ daddu $a1, $zero, $zero -/* E0BA4 8014A4A4 3C068015 */ lui $a2, 0x8015 -/* E0BA8 8014A4A8 24C6F6F0 */ addiu $a2, $a2, -0x910 -/* E0BAC 8014A4AC 24C70030 */ addiu $a3, $a2, 0x30 -/* E0BB0 8014A4B0 3C048016 */ lui $a0, 0x8016 -/* E0BB4 8014A4B4 24849AF0 */ addiu $a0, $a0, -0x6510 -.L8014A4B8: -/* E0BB8 8014A4B8 0080182D */ daddu $v1, $a0, $zero -/* E0BBC 8014A4BC 00C0102D */ daddu $v0, $a2, $zero -.L8014A4C0: -/* E0BC0 8014A4C0 8C480000 */ lw $t0, ($v0) -/* E0BC4 8014A4C4 8C490004 */ lw $t1, 4($v0) -/* E0BC8 8014A4C8 8C4A0008 */ lw $t2, 8($v0) -/* E0BCC 8014A4CC 8C4B000C */ lw $t3, 0xc($v0) -/* E0BD0 8014A4D0 AC680000 */ sw $t0, ($v1) -/* E0BD4 8014A4D4 AC690004 */ sw $t1, 4($v1) -/* E0BD8 8014A4D8 AC6A0008 */ sw $t2, 8($v1) -/* E0BDC 8014A4DC AC6B000C */ sw $t3, 0xc($v1) -/* E0BE0 8014A4E0 24420010 */ addiu $v0, $v0, 0x10 -/* E0BE4 8014A4E4 1447FFF6 */ bne $v0, $a3, .L8014A4C0 -/* E0BE8 8014A4E8 24630010 */ addiu $v1, $v1, 0x10 -/* E0BEC 8014A4EC 24A50001 */ addiu $a1, $a1, 1 -/* E0BF0 8014A4F0 28A20002 */ slti $v0, $a1, 2 -/* E0BF4 8014A4F4 1440FFF0 */ bnez $v0, .L8014A4B8 -/* E0BF8 8014A4F8 24840030 */ addiu $a0, $a0, 0x30 -/* E0BFC 8014A4FC 24020008 */ addiu $v0, $zero, 8 -/* E0C00 8014A500 3C018016 */ lui $at, %hi(gMusicTargetVolume) -/* E0C04 8014A504 A4229AE2 */ sh $v0, %lo(gMusicTargetVolume)($at) -/* E0C08 8014A508 3C018016 */ lui $at, %hi(gMusicUnkVolume2) -/* E0C0C 8014A50C A4229AE4 */ sh $v0, %lo(gMusicUnkVolume2)($at) -/* E0C10 8014A510 3C018016 */ lui $at, 0x8016 -/* E0C14 8014A514 A4229AE6 */ sh $v0, -0x651a($at) -/* E0C18 8014A518 0C015869 */ jal func_800561A4 -/* E0C1C 8014A51C 24040008 */ addiu $a0, $zero, 8 -/* E0C20 8014A520 8FBF0010 */ lw $ra, 0x10($sp) -/* E0C24 8014A524 03E00008 */ jr $ra -/* E0C28 8014A528 27BD0018 */ addiu $sp, $sp, 0x18 diff --git a/include/map.h b/include/map.h index f40c65c2b9..b06d236645 100644 --- a/include/map.h +++ b/include/map.h @@ -41,7 +41,7 @@ typedef struct Map { /* 0x0C */ void* dmaEnd; /* 0x10 */ void* dmaDest; /* 0x14 */ char* bgName; - /* 0x18 */ s32 (*init)(void); ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. + /* 0x18 */ s32(*init)(void); ///< Return TRUE to skip normal asset (shape/hit/bg/tex) loading. /* 0x1C */ s16 flags1; /* 0x1E */ s8 flags2; /* 0x1F */ s8 flags3; diff --git a/src/code_28910_len_5090.c b/src/code_28910_len_5090.c index 62fe271554..40274bd6f0 100644 --- a/src/code_28910_len_5090.c +++ b/src/code_28910_len_5090.c @@ -33,7 +33,7 @@ s32 func_8004DA0C(UNK_TYPE arg0) { INCLUDE_ASM(s32, "code_28910_len_5090", func_8004DA74); -void func_8004DAA8(UnkStructFor8004DAA8 *arg0) { +void func_8004DAA8(UnkStructFor8004DAA8* arg0) { if (arg0->unk_221 != 0) { arg0->unk_221 = 4; arg0->unk_010 = 1; diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index c9a96443c1..3592d23ed6 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -31,7 +31,7 @@ void func_8014A498(void) { s32 i; for (i = 0; i < 2; i++) { - MusicPlayer *musicPlayers = gMusicPlayers; + MusicPlayer* musicPlayers = gMusicPlayers; musicPlayers[i] = *(src = &D_8014F6F0); } From 7fa97805b921ab0367db0a7aedee8ff1b2d3ed74 Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 19:19:17 +0000 Subject: [PATCH 16/17] clean up get_song_variation_override_for_cur_map --- src/code_e0b30_len_b80.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/code_e0b30_len_b80.c b/src/code_e0b30_len_b80.c index 3592d23ed6..4cf4fdfe38 100644 --- a/src/code_e0b30_len_b80.c +++ b/src/code_e0b30_len_b80.c @@ -12,12 +12,10 @@ s32 get_song_variation_override_for_cur_map(SongID songID) { u32 i = 0; Area* areas = gAreas; SongID* allowed = gSongsUsingVariationFlag; - GameStatus** gameStatusPtr = gGameStatusPtr; for (i = 0; i < ARRAY_COUNT(gSongsUsingVariationFlag); i++) { if (allowed[i] == songID) { - GameStatus* gameStatus = *gameStatusPtr; - Map* map = &areas[gameStatus->areaID].maps[gameStatus->mapID]; + Map* map = &areas[GAME_STATUS->areaID].maps[GAME_STATUS->mapID]; return map->flags2 & 1; } From 984b7667ca7512c082bd18c6e643c74b80b8e2ed Mon Sep 17 00:00:00 2001 From: Alex Bates Date: Fri, 30 Oct 2020 20:33:06 +0000 Subject: [PATCH 17/17] install python-setuptools Requirement of PyYAML --- install.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index efbc4324cc..472281d052 100755 --- a/install.sh +++ b/install.sh @@ -4,7 +4,7 @@ if command -v apt &> /dev/null; then echo "Installing packages for Ubuntu (apt)" - sudo apt install -y git python3 python3-pip build-essential binutils-mips-linux-gnu zlib1g-dev libyaml-dev || exit 1 + sudo apt install -y git python3 python3-pip python3-setuptools build-essential binutils-mips-linux-gnu zlib1g-dev libyaml-dev || exit 1 python3 -m pip install -U -r requirements.txt if [[ $1 == "--extra" ]]; then @@ -25,7 +25,7 @@ if command -v pacman &> /dev/null; then sudo pacman -Syu || exit 1 # Install dependencies - sudo pacman -S --noconfirm --needed git python python-pip base-devel zlib libyaml || exit 1 + sudo pacman -S --noconfirm --needed git python python-pip python-setuptools base-devel zlib libyaml || exit 1 python3 -m pip install -U -r requirements.txt # Install binutils if required @@ -62,7 +62,7 @@ fi if command -v zypper &> /dev/null; then echo "Installing packages for openSUSE (zypper)" - sudo zypper -n install git python3 python3-devel python3-pip gcc gcc-c++ glibc-devel make cross-mips-binutils zlib-devel libyaml-devel + sudo zypper -n install git python3 python3-devel python3-pip python3-setuptools gcc gcc-c++ glibc-devel make cross-mips-binutils zlib-devel libyaml-devel # Link the openSUSE locations for binutils tools to their usual GNU locations sudo ln -s /usr/bin/mips-suse-linux-addr2line /usr/bin/mips-linux-gnu-addr2line