summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/match_call.s103
-rw-r--r--src/match_call.c116
2 files changed, 111 insertions, 108 deletions
diff --git a/asm/match_call.s b/asm/match_call.s
index ba329371b..2ee5c4dc2 100644
--- a/asm/match_call.s
+++ b/asm/match_call.s
@@ -5,109 +5,6 @@
.text
- thumb_func_start sub_81D1B0C
-sub_81D1B0C: @ 81D1B0C
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- bl sub_81D15BC
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTrainers
- adds r1, r0
- ldrb r2, [r1, 0x1]
- movs r0, 0xD
- muls r0, r2
- ldr r2, =gTrainerClassNames
- adds r0, r2
- str r0, [r4]
- adds r1, 0x4
- str r1, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D1B0C
-
- thumb_func_start sub_81D1B40
-sub_81D1B40: @ 81D1B40
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- movs r5, 0
- ldr r2, =gUnknown_08625388
- movs r0, 0x8
- adds r0, r2
- mov r9, r0
-_081D1B54:
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _081D1BBC
- adds r4, r5, 0x1
- lsls r1, 2
- mov r8, r1
- cmp r4, 0x3
- bhi _081D1BA8
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _081D1BA8
- ldr r7, =gUnknown_08625388
-_081D1B7C:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r1, r7, 0x4
- adds r0, r1
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _081D1BA8
- adds r5, r4, 0
- adds r4, r5, 0x1
- cmp r4, 0x3
- bhi _081D1BA8
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, r6
- beq _081D1B7C
-_081D1BA8:
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 3
- add r0, r8
- add r0, r9
- ldr r0, [r0]
- b _081D1BC4
- .pool
-_081D1BBC:
- adds r5, 0x1
- cmp r5, 0x3
- bls _081D1B54
- movs r0, 0
-_081D1BC4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81D1B40
-
thumb_func_start sub_81D1BD0
sub_81D1BD0: @ 81D1BD0
push {lr}
diff --git a/src/match_call.c b/src/match_call.c
index 85cc34307..f0bc920ee 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -4,10 +4,13 @@
#include "battle_setup.h"
#include "event_data.h"
#include "string_util.h"
+#include "battle.h"
#include "gym_leader_rematch.h"
#define NELEMS(a) (s32)( sizeof (a) / sizeof (*(a)) )
+extern const u8 gTrainerClassNames[][13];
+
// Static type declarations
typedef struct MatchCallSusbtruct0 {
@@ -97,10 +100,7 @@ struct UnkStruct_08625388 {
u16 idx;
u16 v2;
u16 v4;
- const u8 *v8;
- const u8 *vC;
- const u8 *v10;
- const u8 *v14;
+ const u8 *v8[4];
};
// Static RAM declarations
@@ -145,7 +145,7 @@ u32 sub_81D1574(const match_call_t matchCall)
}
}
-s32 sub_81D15BC(s32 rematchIdx)
+u32 sub_81D15BC(u32 rematchIdx)
{
return gRematchTable[rematchIdx].trainerIds[0];
}
@@ -620,3 +620,109 @@ void sub_81D1B00(match_call_t matchCall, const u8 **a1, const u8 **a2)
*a1 = matchCall.type0->v4;
*a2 = matchCall.type0->v8;
}
+
+void sub_81D1B0C(u32 idx, const u8 **a1, const u8 **a2)
+{
+ const struct Trainer *trainer = gTrainers + sub_81D15BC(idx);
+ *a1 = gTrainerClassNames[trainer->trainerClass];
+ *a2 = trainer->trainerName;
+}
+
+#ifdef NONMATCHING
+const u8 *sub_81D1B40(u32 idx, u32 offset)
+{
+ u32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_08625388[i].idx == idx)
+ {
+ for (; i + 1 < 4 && gUnknown_08625388[i + 1].idx == idx; i++)
+ {
+ if (!FlagGet(gUnknown_08625388[i + 1].v4))
+ break;
+ }
+ return gUnknown_08625388[i].v8[offset];
+ }
+ }
+ return NULL;
+}
+#else
+ASM_DIRECT const u8 *sub_81D1B40(u32 idx, u32 offset)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tadds r6, r0, 0\n"
+ "\tmovs r5, 0\n"
+ "\tldr r2, =gUnknown_08625388\n"
+ "\tmovs r0, 0x8\n"
+ "\tadds r0, r2\n"
+ "\tmov r9, r0\n"
+ "_081D1B54:\n"
+ "\tlsls r0, r5, 1\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r2\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, r6\n"
+ "\tbne _081D1BBC\n"
+ "\tadds r4, r5, 0x1\n"
+ "\tlsls r1, 2\n"
+ "\tmov r8, r1\n"
+ "\tcmp r4, 0x3\n"
+ "\tbhi _081D1BA8\n"
+ "\tlsls r0, r4, 1\n"
+ "\tadds r0, r4\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r2\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, r6\n"
+ "\tbne _081D1BA8\n"
+ "\tldr r7, =gUnknown_08625388\n"
+ "_081D1B7C:\n"
+ "\tlsls r0, r4, 1\n"
+ "\tadds r0, r4\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r7, 0x4\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0]\n"
+ "\tbl FlagGet\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _081D1BA8\n"
+ "\tadds r5, r4, 0\n"
+ "\tadds r4, r5, 0x1\n"
+ "\tcmp r4, 0x3\n"
+ "\tbhi _081D1BA8\n"
+ "\tlsls r0, r4, 1\n"
+ "\tadds r0, r4\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r7\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, r6\n"
+ "\tbeq _081D1B7C\n"
+ "_081D1BA8:\n"
+ "\tlsls r0, r5, 1\n"
+ "\tadds r0, r5\n"
+ "\tlsls r0, 3\n"
+ "\tadd r0, r8\n"
+ "\tadd r0, r9\n"
+ "\tldr r0, [r0]\n"
+ "\tb _081D1BC4\n"
+ "\t.pool\n"
+ "_081D1BBC:\n"
+ "\tadds r5, 0x1\n"
+ "\tcmp r5, 0x3\n"
+ "\tbls _081D1B54\n"
+ "\tmovs r0, 0\n"
+ "_081D1BC4:\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif