summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-01-07 12:06:17 -0600
committercamthesaxman <cameronghall@cox.net>2017-01-07 12:06:17 -0600
commit8d1200c0af600a63551a7e6c96111905e80a28c9 (patch)
treefeea742f1338588f10d8b4fc8468de16d7c30e96
parentd8aee3a4a5fb66622fe44abb561b3bb49b4a93e5 (diff)
get sub_814A2EC to match
-rw-r--r--src/bard_music.c137
1 files changed, 30 insertions, 107 deletions
diff --git a/src/bard_music.c b/src/bard_music.c
index 73eaa0f58..52c687b1d 100644
--- a/src/bard_music.c
+++ b/src/bard_music.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "asm.h"
-typedef struct BardSound {
+struct BardSound {
u8 pad_00[48];
} BardSound;
-typedef struct UnkBard {
+struct UnkBard {
/* 0x00 */ u8 var00;
/* 0x01 */ s8 var01;
/* 0x02 */ u16 var02;
@@ -13,14 +13,14 @@ typedef struct UnkBard {
/* 0x06 */ u16 var06;
} UnkBard;
-typedef struct UnkBard3 {
+struct UnkBard3 {
/* 0x00 */ u16 var00;
/* 0x02 */ u16 var02;
/* 0x04 */ s16 var04;
/* 0x06 */ u16 var06;
} UnkBard3;
-typedef struct UnkBard2 {
+struct UnkBard2 {
/* 0x00 */ u8 var00;
/* 0x01 */ u8 var01;
/* 0x02 */ u8 var02;
@@ -29,129 +29,52 @@ typedef struct UnkBard2 {
u8 pad06[4];
/* 0x0A */ u16 var0A;
u8 pad0C[12];
- /* 0x18 */ UnkBard3 var18[6];
+ /* 0x18 */ struct UnkBard3 var18[6];
} UnkBard2;
-extern BardSound *gBardMusicTable[];
+extern struct BardSound *gBardMusicTable[];
extern s16 *gUnknown_08417068[];
extern u32 gUnknown_084170F4[];
-s16 sub_814A2B8(u32 arg0, u32 arg1) {
+s16 sub_814A2B8(s32 arg0, s32 arg1) {
return gUnknown_08417068[arg0][arg1];
}
-BardSound *sub_814A2D0(u16 arg0, u16 arg1) {
- BardSound *sounds;
+struct BardSound *sub_814A2D0(u16 arg0, u16 arg1) {
+ struct BardSound *sounds;
sounds = gBardMusicTable[arg0];
return &sounds[arg1];
}
-#ifdef NONMATCHING
-int sub_814A2EC(UnkBard2 *dest, UnkBard *src, u16 arg2) {
+int sub_814A2EC(struct UnkBard2 *dest, struct UnkBard *src, u16 arg2)
+{
int i;
- int n;
-
- for (i = 0; i < 6; i++) {
- s8 var01;
-
+ int j;
+ int thirty;
+
+ for (i = 0; i < 6; i++)
+ {
dest->var18[i].var00 = src[i].var00;
- if (src[i].var00 == 0xFF) {
- continue;
+ if (src[i].var00 != 0xFF)
+ {
+ s32 r1 = src[i].var01 +gUnknown_084170F4[src[i].var00];
+
+ dest->var18[i].var02 = r1;
+ dest->var18[i].var06 = src[i].var04;
+ dest->var04 += r1;
}
-
- var01 = src[i].var01;
- dest->var18[i].var02 = var01 + gUnknown_084170F4[src[i].var00];
- dest->var18[i].var06 = src[i].var04;
- dest->var04 += 1;
- }
-
- i = 6;
-
- for (n = 0; n < i; n++) {
- dest->var18[n].var04 = sub_814A2B8(30 + arg2, n);
}
-
- dest->var00 += 1;
+
+ for (j = 0, thirty = 30; j < i; j++)
+ dest->var18[j].var04 = sub_814A2B8(thirty + arg2, j);
+
+ dest->var00++;
dest->var01 = 0;
dest->var02 = 0;
dest->var03 = 0;
dest->var0A = 0;
+
+ //warning: no return statement in function returning non-void
}
-#else
-__attribute__((naked))
-void sub_814A2EC(void) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- adds r6, r0, 0\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- mov r9, r2\n\
- ldr r4, _0814A370 @ =gUnknown_084170F4\n\
- adds r2, r1, 0\n\
- adds r3, r6, 0\n\
- adds r3, 0x18\n\
- movs r7, 0x5\n\
-_0814A306:\n\
- ldrb r0, [r2]\n\
- strh r0, [r3]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0xFF\n\
- beq _0814A328\n\
- movs r1, 0x1\n\
- ldrsb r1, [r2, r1]\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- adds r1, r0\n\
- strh r1, [r3, 0x2]\n\
- ldrh r0, [r2, 0x4]\n\
- strh r0, [r3, 0x6]\n\
- ldrh r0, [r6, 0x4]\n\
- adds r0, r1\n\
- strh r0, [r6, 0x4]\n\
-_0814A328:\n\
- adds r2, 0x8\n\
- adds r3, 0x8\n\
- subs r7, 0x1\n\
- cmp r7, 0\n\
- bge _0814A306\n\
- movs r7, 0x6\n\
- movs r5, 0\n\
- movs r0, 0x1E\n\
- mov r8, r0\n\
- adds r4, r6, 0\n\
-_0814A33C:\n\
- mov r0, r8\n\
- add r0, r9\n\
- adds r1, r5, 0\n\
- bl sub_814A2B8\n\
- adds r1, r0, 0\n\
- strh r1, [r4, 0x1C]\n\
- adds r4, 0x8\n\
- adds r5, 0x1\n\
- cmp r5, r7\n\
- blt _0814A33C\n\
- ldrb r1, [r6]\n\
- adds r1, 0x1\n\
- movs r2, 0\n\
- strb r1, [r6]\n\
- strb r2, [r6, 0x1]\n\
- strb r2, [r6, 0x2]\n\
- strb r2, [r6, 0x3]\n\
- strh r2, [r6, 0xA]\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_0814A370: .4byte gUnknown_084170F4\n\
- .syntax divided\n");
-}
-#endif