summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s80
-rw-r--r--src/trade.c33
2 files changed, 29 insertions, 84 deletions
diff --git a/asm/trade.s b/asm/trade.s
index 6e11cdaf2..b44f74453 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -10,86 +10,6 @@
.set sub_804A96C_alt, sub_804A96C
.endif
- thumb_func_start sub_8049A20
-sub_8049A20: @ 8049A20
- push {r4,r5,lr}
- sub sp, 0xC
- movs r2, 0
- ldr r0, _08049A80 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x42
- adds r5, r0, 0
- ldrb r0, [r3]
- cmp r2, r0
- bge _08049A4C
- adds r4, r1, 0
- adds r4, 0x51
-_08049A3A:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- ldrb r0, [r3]
- cmp r2, r0
- blt _08049A3A
-_08049A4C:
- adds r4, r5, 0
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x42
- ldrb r1, [r1]
- adds r0, 0x41
- ldrb r2, [r0]
- mov r0, sp
- bl sub_80499F0
- lsls r0, 24
- cmp r0, 0
- bne _08049A88
- movs r0, 0x3
- movs r1, 0x2
- bl sub_804AADC
- ldr r0, [r4]
- adds r0, 0x8C
- ldr r1, _08049A84 @ =0x0000bbcc
- strh r1, [r0]
- movs r0, 0xB4
- movs r1, 0
- bl sub_804AADC
- b _08049AB4
- .align 2, 0
-_08049A80: .4byte gUnknown_03004824
-_08049A84: .4byte 0x0000bbcc
-_08049A88:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804AADC
- ldr r0, [r5]
- adds r0, 0x8C
- ldr r1, _08049ABC @ =0x0000bbbb
- strh r1, [r0]
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08049AB4
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r5]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
-_08049AB4:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08049ABC: .4byte 0x0000bbbb
- thumb_func_end sub_8049A20
-
thumb_func_start sub_8049AC0
sub_8049AC0: @ 8049AC0
push {r4,lr}
diff --git a/src/trade.c b/src/trade.c
index 493730095..d0a375b0f 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -149,7 +149,7 @@ static void sub_8048AB4(void);
/*static*/ void sub_8049E9C(u8);
/*static*/ void sub_804AADC(u8, u8);
/*static*/ void sub_804A80C(void);
-/*static*/ u8 sub_80499F0(const u8 *, u8, u8);
+static u8 sub_80499F0(const u8 *, u8, u8);
extern u8 gUnknown_020297D8[2];
extern u8 *gUnknown_020296CC[13];
@@ -1652,7 +1652,7 @@ static void sub_8049620(void)
{
gUnknown_03004824->linkData[0] = 0xaabb;
gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition;
- SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, 20);
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
}
else
{
@@ -1708,7 +1708,7 @@ static void sub_8049620(void)
{
gUnknown_03004824->linkData[i] = i;
}
- SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, 20);
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
}
}
@@ -1783,7 +1783,7 @@ static void sub_8049620(void)
}
}
-/*static*/ u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition)
+static u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition)
{
u8 retval = 0;
int i;
@@ -1797,6 +1797,31 @@ static void sub_8049620(void)
return retval;
}
+/*static*/ void sub_8049A20(void)
+{
+ u8 unk_0051[12];
+ int i;
+ for (i = 0; i < gUnknown_03004824->playerPartyCount; i ++)
+ {
+ unk_0051[i] = gUnknown_03004824->unk_0051[i];
+ }
+ if (sub_80499F0(unk_0051, gUnknown_03004824->playerPartyCount, gUnknown_03004824->tradeMenuCursorPosition) == 0)
+ {
+ sub_804AADC(3, 2);
+ gUnknown_03004824->linkData[0] = 0xbbcc;
+ sub_804AADC(0xb4, 0);
+ }
+ else
+ {
+ sub_804AADC(3, 1);
+ gUnknown_03004824->linkData[0] = 0xbbbb;
+ if (sub_8007ECC())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_03004824->linkData, ARRAY_COUNT(gUnknown_03004824->linkData));
+ }
+ }
+}
+
asm(".section .text.sub_804A96C");
/*static*/ void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) {