diff options
-rw-r--r-- | asm/trade.s | 64 | ||||
-rw-r--r-- | src/trade.c | 29 |
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; |