summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s53
-rw-r--r--src/trade.c135
2 files changed, 103 insertions, 85 deletions
diff --git a/asm/trade.s b/asm/trade.s
index 032a31051..c8f35ceae 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -495,59 +495,6 @@ _0804A2B0: .4byte gUnknown_03004824
.section .text.sub_804A33C
- thumb_func_start sub_804A6DC
-sub_804A6DC: @ 804A6DC
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r7, 0
- ldr r0, _0804A734 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x42
- adds r0, r6
- ldrb r0, [r0]
- cmp r7, r0
- bge _0804A72C
- lsls r0, r6, 1
- adds r0, r6
- ldr r1, _0804A738 @ =gTradeLevelDisplayCoords
- lsls r0, 2
- adds r5, r0, r1
- ldr r1, _0804A73C @ =gTradeMonBoxCoords
- adds r4, r0, r1
-_0804A702:
- lsls r1, r7, 24
- lsrs r1, 24
- ldrb r2, [r5]
- ldrb r3, [r5, 0x1]
- ldrb r0, [r4]
- str r0, [sp]
- ldrb r0, [r4, 0x1]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- bl sub_804A51C
- adds r5, 0x2
- adds r4, 0x2
- adds r7, 0x1
- ldr r0, _0804A734 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x42
- adds r0, r6
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804A702
-_0804A72C:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A734: .4byte gUnknown_03004824
-_0804A738: .4byte gTradeLevelDisplayCoords
-_0804A73C: .4byte gTradeMonBoxCoords
- thumb_func_end sub_804A6DC
-
thumb_func_start sub_804A740
sub_804A740: @ 804A740
push {r4-r7,lr}
diff --git a/src/trade.c b/src/trade.c
index 412e52102..29ba8c137 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -397,40 +397,46 @@ const u8 gTradeMonSpriteCoords[][2] = {
{23, 18} // CANCEL
};
-const u8 gTradeLevelDisplayCoords[][2] = {
- // Your party
- { 5, 4},
- {12, 4},
- { 5, 9},
- {12, 9},
- { 5, 14},
- {12, 14},
-
- // Friend's party
- {20, 4},
- {27, 4},
- {20, 9},
- {27, 9},
- {20, 14},
- {27, 14}
+const u8 gTradeLevelDisplayCoords[2][6][2] = {
+ {
+ // Your party
+ {5, 4},
+ {12, 4},
+ {5, 9},
+ {12, 9},
+ {5, 14},
+ {12, 14},
+ },
+ {
+ // Friend's party
+ {20, 4},
+ {27, 4},
+ {20, 9},
+ {27, 9},
+ {20, 14},
+ {27, 14}
+ }
};
-const u8 gTradeMonBoxCoords[][2] = {
- // Your party
- { 1, 3},
- { 8, 3},
- { 1, 8},
- { 8, 8},
- { 1, 13},
- { 8, 13},
-
- // Friend's party
- {16, 3},
- {23, 3},
- {16, 8},
- {23, 8},
- {16, 13},
- {23, 13}
+const u8 gTradeMonBoxCoords[2][6][2] = {
+ {
+ // Your party
+ {1, 3},
+ {8, 3},
+ {1, 8},
+ {8, 8},
+ {1, 13},
+ {8, 13},
+ },
+ {
+ // Friend's party
+ {16, 3},
+ {23, 3},
+ {16, 8},
+ {23, 8},
+ {16, 13},
+ {23, 13}
+ }
};
const u8 gTradeUnknownSpriteCoords[][2][2] = {
@@ -2340,6 +2346,71 @@ void sub_804A51C(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5)
#endif
}
+#ifdef NONMATCHING
+void sub_804A6DC(u8 whichParty)
+{
+ int i;
+ for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++)
+ {
+ sub_804A51C(whichParty, i, gTradeLevelDisplayCoords[whichParty][i][0], gTradeLevelDisplayCoords[whichParty][i][1], gTradeMonBoxCoords[whichParty][i][0], gTradeMonBoxCoords[whichParty][i][1]);
+ }
+}
+#else
+__attribute__((naked))
+void sub_804A6DC(u8 whichParty)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tsub sp, 0x8\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tmovs r7, 0\n"
+ "\tldr r0, _0804A734 @ =gUnknown_03004824\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x42\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tbge _0804A72C\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r6\n"
+ "\tldr r1, _0804A738 @ =gTradeLevelDisplayCoords\n"
+ "\tlsls r0, 2\n"
+ "\tadds r5, r0, r1\n"
+ "\tldr r1, _0804A73C @ =gTradeMonBoxCoords\n"
+ "\tadds r4, r0, r1\n"
+ "_0804A702:\n"
+ "\tlsls r1, r7, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tldrb r2, [r5]\n"
+ "\tldrb r3, [r5, 0x1]\n"
+ "\tldrb r0, [r4]\n"
+ "\tstr r0, [sp]\n"
+ "\tldrb r0, [r4, 0x1]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl sub_804A51C\n"
+ "\tadds r5, 0x2\n"
+ "\tadds r4, 0x2\n"
+ "\tadds r7, 0x1\n"
+ "\tldr r0, _0804A734 @ =gUnknown_03004824\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x42\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tblt _0804A702\n"
+ "_0804A72C:\n"
+ "\tadd sp, 0x8\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804A734: .4byte gUnknown_03004824\n"
+ "_0804A738: .4byte gTradeLevelDisplayCoords\n"
+ "_0804A73C: .4byte gTradeMonBoxCoords");
+}
+#endif
+
asm(".section .text.sub_804A96C");
/*static*/ void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, const u16 *tilemap, u8 width, u8 height, u16 sp8) {