summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s64
-rw-r--r--src/trade.c29
2 files changed, 28 insertions, 65 deletions
diff --git a/asm/trade.s b/asm/trade.s
index 40cbc0ac6..670866401 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -4827,68 +4827,4 @@ _0804D622:
_0804D638: .4byte gUnknown_020297D8
thumb_func_end sub_804D588
- thumb_func_start sub_804D63C
-sub_804D63C: @ 804D63C
- push {r4-r6,lr}
- bl sub_804B2B0
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0x1
- adds r0, r5, 0
- ands r0, r6
- cmp r0, 0
- beq _0804D67A
- ldr r4, _0804D6A8 @ =gBlockRecvBuffer
- ldrh r1, [r4]
- ldr r0, _0804D6AC @ =0x0000dcba
- cmp r1, r0
- bne _0804D664
- ldr r0, _0804D6B0 @ =sub_804D588
- bl SetMainCallback2
-_0804D664:
- ldrh r1, [r4]
- ldr r0, _0804D6B4 @ =0x0000abcd
- cmp r1, r0
- bne _0804D674
- ldr r0, _0804D6B8 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x9C
- strb r6, [r0]
-_0804D674:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_0804D67A:
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _0804D6A2
- ldr r0, _0804D6A8 @ =gBlockRecvBuffer
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0804D6B4 @ =0x0000abcd
- cmp r1, r0
- bne _0804D69C
- ldr r0, _0804D6B8 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x9D
- movs r1, 0x1
- strb r1, [r0]
-_0804D69C:
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_0804D6A2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D6A8: .4byte gBlockRecvBuffer
-_0804D6AC: .4byte 0x0000dcba
-_0804D6B0: .4byte sub_804D588
-_0804D6B4: .4byte 0x0000abcd
-_0804D6B8: .4byte gUnknown_03004828
- thumb_func_end sub_804D63C
-
.align 2, 0 @ Don't pad with nop.
diff --git a/src/trade.c b/src/trade.c
index 84640fbf0..fc15da7f8 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -196,12 +196,12 @@ static void sub_804D7AC(struct Sprite *);
/*static*/ bool8 sub_804C29C(void);
/*static*/ void sub_804DC18(void);
/*static*/ void sub_804BB78(void);
-/*static*/ void sub_804D63C(void);
/*static*/ bool8 sub_804B2B0(void);
static void sub_804E144(void);
static void sub_804E1A0(u8);
/*static*/ void sub_804B790(void);
static void sub_804DAD4(struct MailStruct *, const struct InGameTrade *);
+void sub_804D588(void);
extern u8 gUnknown_020297D8[2];
extern u8 *gUnknown_020296CC[13];
@@ -3172,6 +3172,33 @@ static bool8 sub_804ABF8(void)
asm(".section .text.sub_804DAD4");
+static void sub_804D63C(void)
+{
+ u8 blockReceivedStatus;
+ sub_804B2B0();
+ blockReceivedStatus = GetBlockReceivedStatus();
+ if (blockReceivedStatus & 0x01)
+ {
+ if (gBlockRecvBuffer[0][0] == 0xdcba)
+ {
+ SetMainCallback2(sub_804D588);
+ }
+ if (gBlockRecvBuffer[0][0] == 0xabcd)
+ {
+ gUnknown_03004828->unk_009c = 1;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+ if (blockReceivedStatus & 0x02)
+ {
+ if (gBlockRecvBuffer[1][0] == 0xabcd)
+ {
+ gUnknown_03004828->unk_009d = 1;
+ }
+ ResetBlockReceivedFlag(1);
+ }
+}
+
void sub_804D6BC(struct Sprite *sprite)
{
sprite->pos1.y += sprite->data0 / 10;