summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trade.s51
-rw-r--r--src/trade.c16
2 files changed, 16 insertions, 51 deletions
diff --git a/asm/trade.s b/asm/trade.s
index dcbfa8fdc..fe9e054f3 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5015,55 +5015,4 @@ _0804D7A4: .4byte sub_804D7AC
_0804D7A8: .4byte 0x0000ffff
thumb_func_end sub_804D738
- thumb_func_start sub_804D7AC
-sub_804D7AC: @ 804D7AC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x14
- bne _0804D7C0
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_0804D7C0:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0804D7FE
- ldr r1, _0804D804 @ =gTradeBallVerticalVelocityTable
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- bne _0804D7FE
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, _0804D808 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC4
- movs r1, 0xE
- strh r1, [r0]
-_0804D7FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D804: .4byte gTradeBallVerticalVelocityTable
-_0804D808: .4byte gUnknown_03004828
- thumb_func_end sub_804D7AC
-
.align 2, 0 @ Don't pad with nop.
diff --git a/src/trade.c b/src/trade.c
index efafe278c..f09c077d6 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -135,6 +135,7 @@ struct TradeEwramSubstruct2 {
/*0x00ba*/ u8 filler_00ba[3];
/*0x00bd*/ u8 unk_00bd;
/*0x00c0*/ u32 unk_00c0;
+ /*0x00c4*/ u16 unk_00c4;
};
struct TradeEwramStruct {
@@ -3171,6 +3172,21 @@ static bool8 sub_804ABF8(void)
asm(".section .text.sub_804DAD4");
+void sub_804D7AC(struct Sprite *sprite)
+{
+ if (sprite->data1 == 20)
+ StartSpriteAffineAnim(sprite, 1);
+ if (++ sprite->data1 > 20)
+ {
+ sprite->pos2.y -= gTradeBallVerticalVelocityTable[sprite->data0];
+ if (++ sprite->data0 == 23)
+ {
+ DestroySprite(sprite);
+ gUnknown_03004828->unk_00c4 = 14;
+ }
+ }
+}
+
void sub_804D80C(struct Sprite *sprite)
{
if (sprite->data2 == 0)