summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-09-03 14:19:14 -0400
committerscnorton <scnorton@biociphers.org>2017-09-03 14:19:14 -0400
commit168cfdab081db37a7b27ed1a2dee88983c84e13b (patch)
tree01067340ec60d98727a2687844a48cee6cb6f20b
parent1512aee2335dc7f47a4cbb822791f27351b6f1ef (diff)
sub_804D80C
-rw-r--r--asm/trade.s75
-rw-r--r--src/trade.c25
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];