diff options
-rw-r--r-- | asm/quest_log_battle.s | 51 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/quest_log_battle.c | 65 |
3 files changed, 62 insertions, 55 deletions
diff --git a/asm/quest_log_battle.s b/asm/quest_log_battle.s deleted file mode 100644 index 2219633bb..000000000 --- a/asm/quest_log_battle.s +++ /dev/null @@ -1,51 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_812C334 -sub_812C334: @ 812C334 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r3, _0812C35C @ =gLinkPlayers - ldr r4, _0812C360 @ =gBattleStruct - ldr r0, [r4] - adds r0, 0xB5 - ldrb r2, [r0] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x18] - movs r0, 0x2 - movs r5, 0 - eors r2, r0 -_0812C352: - ldrh r0, [r3, 0x18] - cmp r2, r0 - bne _0812C364 - str r5, [r6] - b _0812C370 - .align 2, 0 -_0812C35C: .4byte gLinkPlayers -_0812C360: .4byte gBattleStruct -_0812C364: - ldr r0, [r4] - adds r0, 0xB5 - ldrb r0, [r0] - cmp r5, r0 - beq _0812C370 - stm r1!, {r5} -_0812C370: - adds r3, 0x1C - adds r5, 0x1 - cmp r5, 0x3 - ble _0812C352 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_812C334 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 070eb444a..67f21c48f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -226,7 +226,6 @@ SECTIONS { asm/union_room_chat.o(.text); asm/help_system_812B1E0.o(.text); src/quest_log_battle.o(.text); - asm/quest_log_battle.o(.text); asm/fame_checker.o(.text); asm/menu2.o(.text); asm/oak_speech.o(.text); diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index b6d6c88f3..f4d66f4b7 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -22,7 +22,7 @@ struct QuestLogStruct_WildBattleRecord u8 v4; }; -void sub_812C334(u32 *, u32 *); +void sub_812C334(s32 *, s32 *); void sub_812BFDC(void) { @@ -107,8 +107,8 @@ struct QuestLogStruct_LinkBattleRecord void sub_812C224(void) { - u32 sp0; - u32 sp4[2]; + s32 sp0; + s32 sp4[2]; u16 r8; s32 r3; u32 r0; @@ -148,3 +148,62 @@ void sub_812C224(void) Free(r5); } } + +#ifdef NONMATCHING +void sub_812C334(s32 * a0, s32 * a1) +{ + s32 r5; + u8 r2 = gLinkPlayers[gBattleStruct->field_B5].id; + for (r5 = 0; r5 < 4; r5++) + { + if ((r2 ^ 2) == gLinkPlayers[r5].id) + *a0 = r5; + else if (r5 != gBattleStruct->field_B5) + *a1++ = r5; + } +} +#else +NAKED +void sub_812C334(s32 * a0, s32 * a1) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r6, r0, 0\n" + "\tldr r3, _0812C35C @ =gLinkPlayers\n" + "\tldr r4, _0812C360 @ =gBattleStruct\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xB5\n" + "\tldrb r2, [r0]\n" + "\tlsls r0, r2, 3\n" + "\tsubs r0, r2\n" + "\tlsls r0, 2\n" + "\tadds r0, r3\n" + "\tldrb r2, [r0, 0x18]\n" + "\tmovs r0, 0x2\n" + "\tmovs r5, 0\n" + "\teors r2, r0\n" + "_0812C352:\n" + "\tldrh r0, [r3, 0x18]\n" + "\tcmp r2, r0\n" + "\tbne _0812C364\n" + "\tstr r5, [r6]\n" + "\tb _0812C370\n" + "\t.align 2, 0\n" + "_0812C35C: .4byte gLinkPlayers\n" + "_0812C360: .4byte gBattleStruct\n" + "_0812C364:\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xB5\n" + "\tldrb r0, [r0]\n" + "\tcmp r5, r0\n" + "\tbeq _0812C370\n" + "\tstm r1!, {r5}\n" + "_0812C370:\n" + "\tadds r3, 0x1C\n" + "\tadds r5, 0x1\n" + "\tcmp r5, 0x3\n" + "\tble _0812C352\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif // NONMATCHING |