diff options
Diffstat (limited to 'src/quest_log_battle.c')
-rw-r--r-- | src/quest_log_battle.c | 65 |
1 files changed, 62 insertions, 3 deletions
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 |