diff options
author | scnorton <scnorton@biociphers.org> | 2017-09-03 14:19:14 -0400 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2017-09-03 14:19:14 -0400 |
commit | 168cfdab081db37a7b27ed1a2dee88983c84e13b (patch) | |
tree | 01067340ec60d98727a2687844a48cee6cb6f20b | |
parent | 1512aee2335dc7f47a4cbb822791f27351b6f1ef (diff) |
sub_804D80C
-rw-r--r-- | asm/trade.s | 75 | ||||
-rw-r--r-- | src/trade.c | 25 |
2 files changed, 25 insertions, 75 deletions
diff --git a/asm/trade.s b/asm/trade.s index ac7baa083..dcbfa8fdc 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -5066,79 +5066,4 @@ _0804D804: .4byte gTradeBallVerticalVelocityTable _0804D808: .4byte gUnknown_03004828 thumb_func_end sub_804D7AC - thumb_func_start sub_804D80C -sub_804D80C: @ 804D80C - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x32] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0804D83C - ldrh r0, [r4, 0x22] - adds r0, 0x4 - strh r0, [r4, 0x22] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x34 - ldrsh r1, [r4, r3] - cmp r0, r1 - ble _0804D88C - adds r0, r2, 0x1 - strh r0, [r4, 0x32] - movs r0, 0x16 - strh r0, [r4, 0x2E] - movs r0, 0x38 - bl PlaySE - b _0804D88C -_0804D83C: - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x42 - bne _0804D84A - movs r0, 0x39 - bl PlaySE -_0804D84A: - movs r2, 0x2E - ldrsh r0, [r4, r2] - cmp r0, 0x5C - bne _0804D858 - movs r0, 0x3A - bl PlaySE -_0804D858: - movs r3, 0x2E - ldrsh r0, [r4, r3] - cmp r0, 0x6B - bne _0804D866 - movs r0, 0x3B - bl PlaySE -_0804D866: - ldr r1, _0804D894 @ =gTradeBallVerticalVelocityTable - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r3, [r4, 0x26] - adds r0, r3 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6C - bne _0804D88C - ldr r0, _0804D898 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0804D88C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804D894: .4byte gTradeBallVerticalVelocityTable -_0804D898: .4byte SpriteCallbackDummy - thumb_func_end sub_804D80C - .align 2, 0 @ Don't pad with nop. diff --git a/src/trade.c b/src/trade.c index 960a1b6bc..efafe278c 100644 --- a/src/trade.c +++ b/src/trade.c @@ -3171,6 +3171,31 @@ static bool8 sub_804ABF8(void) asm(".section .text.sub_804DAD4"); +void sub_804D80C(struct Sprite *sprite) +{ + if (sprite->data2 == 0) + { + if ((sprite->pos1.y += 4) > sprite->data3) + { + sprite->data2 ++; + sprite->data0 = 0x16; + PlaySE(SE_KON); + } + } + else + { + if (sprite->data0 == 0x42) + PlaySE(SE_KON2); + if (sprite->data0 == 0x5c) + PlaySE(SE_KON3); + if (sprite->data0 == 0x6b) + PlaySE(SE_KON4); + sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data0]; + if (++sprite->data0 == 0x6c) + sprite->callback = SpriteCallbackDummy; + } +} + u16 sub_804D89C(void) { const struct InGameTrade *inGameTrade = &gIngameTrades[gSpecialVar_0x8004]; |