summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-11-18 00:44:35 -0600
committerSeth Barberee <seth.barberee@gmail.com>2020-11-18 00:44:35 -0600
commit578522b3d344866c38e6e2e01e6b26ba6a5c0107 (patch)
tree4686f6173b9e2354cb5d351c3e8fc502baba67dd /src
parent1b46057bb8a3e8e04484c14eebf26f2f7126b940 (diff)
match another function and fix nonmatching
Diffstat (limited to 'src')
-rw-r--r--src/music_pre.c147
1 files changed, 53 insertions, 94 deletions
diff --git a/src/music_pre.c b/src/music_pre.c
index 54f60d3..45afc01 100644
--- a/src/music_pre.c
+++ b/src/music_pre.c
@@ -115,13 +115,8 @@ void sub_800BDFC(u16 songIndex)
EnableInterrupts();
}
-#ifndef NONMATCHING
-NAKED
-#endif
void FadeInNewBGM(u16 SongIndex, u16 speed)
{
-#ifdef NONMATCHING
- // TODO regswap memes
bool8 interrupt_flag;
u16 temp_store;
@@ -136,14 +131,14 @@ void FadeInNewBGM(u16 SongIndex, u16 speed)
return;
}
- if((speed > 0x80 << 1))
+ if((speed > 256))
{
- speed = 0x10;
+ speed = 16;
}
else
{
- if(speed >> 4 == 0)
+ if((speed >>= 4) == 0)
{
speed = 1;
}
@@ -164,92 +159,6 @@ void FadeInNewBGM(u16 SongIndex, u16 speed)
}
if(interrupt_flag)
EnableInterrupts();
-#else
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tlsls r4, r1, 16\n"
- "\tlsrs r5, r4, 16\n"
- "\tadds r0, r6, 0\n"
- "\tbl IsBGSong\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbeq _0800BF2E\n"
- "\tldr r0, _0800BECC\n"
- "\tcmp r6, r0\n"
- "\tbeq _0800BF2E\n"
- "\tldr r0, _0800BED0\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r6, r0\n"
- "\tbne _0800BEBE\n"
- "\tldr r0, _0800BED4\n"
- "\tldrh r0, [r0]\n"
- "\tsubs r0, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x1\n"
- "\tbls _0800BF2E\n"
-"_0800BEBE:\n"
- "\tmovs r0, 0x80\n"
- "\tlsls r0, 1\n"
- "\tcmp r5, r0\n"
- "\tbls _0800BED8\n"
- "\tmovs r5, 0x10\n"
- "\tb _0800BEE0\n"
- "\t.align 2, 0\n"
-"_0800BECC: .4byte 0x000003e7\n"
-"_0800BED0: .4byte gUnknown_202D68A\n"
-"_0800BED4: .4byte gUnknown_202D688\n"
-"_0800BED8:\n"
- "\tlsrs r5, r4, 20\n"
- "\tcmp r5, 0\n"
- "\tbne _0800BEE0\n"
- "\tmovs r5, 0x1\n"
-"_0800BEE0:\n"
- "\tbl DisableInterrupts\n"
- "\tlsls r0, 24\n"
- "\tlsrs r7, r0, 24\n"
- "\tldr r0, _0800BF34\n"
- "\tstrh r6, [r0]\n"
- "\tldr r1, _0800BF38\n"
- "\tmovs r0, 0x1\n"
- "\tstrb r0, [r1]\n"
- "\tldr r0, _0800BF3C\n"
- "\tldrh r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _0800BF26\n"
- "\tldr r0, _0800BF40\n"
- "\tmovs r1, 0x1\n"
- "\tstrh r1, [r0]\n"
- "\tadds r0, r6, 0\n"
- "\tbl m4aSongNumStart\n"
- "\tldr r4, _0800BF44\n"
- "\tadds r0, r4, 0\n"
- "\tbl m4aMPlayImmInit\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0xFF\n"
- "\tmovs r2, 0\n"
- "\tbl m4aMPlayVolumeControl\n"
- "\tadds r0, r6, 0\n"
- "\tbl m4aSongNumStop\n"
- "\tadds r0, r4, 0\n"
- "\tadds r1, r5, 0\n"
- "\tbl m4aMPlayFadeIn\n"
-"_0800BF26:\n"
- "\tcmp r7, 0\n"
- "\tbeq _0800BF2E\n"
- "\tbl EnableInterrupts\n"
-"_0800BF2E:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
-"_0800BF34: .4byte gUnknown_202D68A\n"
-"_0800BF38: .4byte gUnknown_202D694\n"
-"_0800BF3C: .4byte gUnknown_202D690\n"
-"_0800BF40: .4byte gUnknown_202D688\n"
-"_0800BF44: .4byte gUnknown_20008F0");
-#endif
}
void sub_800BF48(u16 SongIndex)
@@ -279,3 +188,53 @@ void sub_800BF80(void)
if(interrupt_flag)
EnableInterrupts();
}
+
+void sub_800BFD0(u16 speed)
+{
+
+ u32 comparison;
+ bool8 interrupt_flag;
+
+ // TODO clean this comparison up
+ comparison = 0x80 << 17; // 16777216
+ if((speed * 65536) > comparison)
+ {
+ speed = 16;
+ }
+ else
+ {
+ if((speed >>= 4) == 0)
+ {
+ speed = 1;
+ }
+ }
+ interrupt_flag = DisableInterrupts();
+ if(gUnknown_202D690 == 0)
+ {
+ if(gUnknown_202D68A != 0x3e7)
+ {
+ if(gUnknown_202D688 == 2)
+ {
+ gUnknown_202D688 = 3;
+ m4aMPlayFadeOut(&gUnknown_20008F0, speed);
+ }
+ else
+ {
+ gUnknown_202D68A = 0x3e7;
+ m4aMPlayStop(&gUnknown_20008F0);
+ }
+ }
+ }
+ else
+ {
+ gUnknown_202D68A = 0x3e7;
+ }
+ gUnknown_202D68C = 0x3e7;
+ if(interrupt_flag)
+ EnableInterrupts();
+}
+
+u16 sub_800C068(void)
+{
+ return gUnknown_202D68A;
+}