summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/use_pokeblock.s130
-rwxr-xr-xld_script.txt1
-rwxr-xr-xsrc/use_pokeblock.c40
3 files changed, 39 insertions, 132 deletions
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s
deleted file mode 100755
index 6b0b0392d..000000000
--- a/asm/use_pokeblock.s
+++ /dev/null
@@ -1,130 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8137138
-sub_8137138: @ 8137138
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _081371C0 @ =gSpriteSheet_ConditionUpDown
- bl LoadSpriteSheet
- ldr r0, _081371C4 @ =gSpritePalette_ConditionUpDown
- bl LoadSpritePalette
- ldr r2, _081371C8 @ =gUnknown_02039304
- ldr r0, [r2]
- adds r0, 0x54
- movs r1, 0
- strb r1, [r0]
- movs r4, 0
- adds r5, r2, 0
- ldr r6, _081371CC @ =gUnknown_08406158
- adds r0, r6, 0x2
- mov r8, r0
- ldr r7, _081371D0 @ =gSprites + 0x1C
-_08137160:
- ldr r0, [r5]
- adds r0, 0x61
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _081371AC
- lsls r2, r4, 2
- adds r0, r2, r6
- movs r3, 0
- ldrsh r1, [r0, r3]
- add r2, r8
- movs r0, 0
- ldrsh r2, [r2, r0]
- ldr r0, _081371D4 @ =gSpriteTemplate_840618C
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _081371AC
- ldr r0, [r5]
- adds r0, 0x61
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _081371A2
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldr r1, _081371D8 @ =sub_81371DC
- str r1, [r0]
-_081371A2:
- ldr r1, [r5]
- adds r1, 0x54
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081371AC:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _08137160
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081371C0: .4byte gSpriteSheet_ConditionUpDown
-_081371C4: .4byte gSpritePalette_ConditionUpDown
-_081371C8: .4byte gUnknown_02039304
-_081371CC: .4byte gUnknown_08406158
-_081371D0: .4byte gSprites + 0x1C
-_081371D4: .4byte gSpriteTemplate_840618C
-_081371D8: .4byte sub_81371DC
- thumb_func_end sub_8137138
-
- thumb_func_start sub_81371DC
-sub_81371DC: @ 81371DC
- push {lr}
- adds r1, r0, 0
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0x5
- bgt _081371EE
- ldrh r0, [r1, 0x26]
- subs r0, 0x2
- b _081371F6
-_081371EE:
- cmp r0, 0xB
- bgt _081371F8
- ldrh r0, [r1, 0x26]
- adds r0, 0x2
-_081371F6:
- strh r0, [r1, 0x26]
-_081371F8:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- ble _08137218
- adds r0, r1, 0
- bl DestroySprite
- ldr r0, _0813721C @ =gUnknown_02039304
- ldr r1, [r0]
- adds r1, 0x54
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_08137218:
- pop {r0}
- bx r0
- .align 2, 0
-_0813721C: .4byte gUnknown_02039304
- thumb_func_end sub_81371DC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 2282bc7a2..56dfef8fe 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -256,7 +256,6 @@ SECTIONS {
src/roamer.o(.text);
asm/battle_tower.o(.text);
src/use_pokeblock.o(.text);
- asm/use_pokeblock.o(.text);
src/battle_anim_8137220.o(.text);
src/player_pc.o(.text);
src/intro.o(.text);
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 6ca3437fd..a62821a90 100755
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -57,7 +57,7 @@ const struct SpritePalette gSpritePalette_ConditionUpDown = {
GFX_TAG_CONDITIONUPDOWN
};
-const struct Coords16 gUnknown_08406158[] = {
+const s16 gUnknown_08406158[][2] = {
{0x9c, 0x1e},
{0x75, 0x35},
{0x75, 0x70},
@@ -135,6 +135,7 @@ bool8 sub_8136D00(void);
void sub_8136DC0(u8 *, u8, s16);
void sub_8136DA0(const u8 *);
void sub_8136F74(struct Pokeblock *, struct Pokemon *);
+void sub_81371DC(struct Sprite *);
void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
{
@@ -921,3 +922,40 @@ u8 sub_8137124(u8 a0)
{
return sub_81370A4(a0);
}
+
+void sub_8137138(void)
+{
+ u16 flavor;
+ u8 spriteidx;
+ LoadSpriteSheet(&gSpriteSheet_ConditionUpDown);
+ LoadSpritePalette(&gSpritePalette_ConditionUpDown);
+ gUnknown_02039304->unk54 = 0;
+ for (flavor=0; flavor<5; flavor++)
+ {
+ if (gUnknown_02039304->unk61[flavor] != 0)
+ {
+ spriteidx = CreateSprite(&gSpriteTemplate_840618C, gUnknown_08406158[flavor][0], gUnknown_08406158[flavor][1], 0);
+ if (spriteidx != MAX_SPRITES)
+ {
+ if (gUnknown_02039304->unk61[flavor] != 0)
+ {
+ gSprites[spriteidx].callback = sub_81371DC;
+ }
+ gUnknown_02039304->unk54++;
+ }
+ }
+ }
+}
+
+void sub_81371DC(struct Sprite *sprite)
+{
+ if (sprite->data0 <= 5)
+ sprite->pos2.y -= 2;
+ else if (sprite->data0 <= 11)
+ sprite->pos2.y += 2;
+ if ((++sprite->data0) > 60)
+ {
+ DestroySprite(sprite);
+ gUnknown_02039304->unk54--;
+ }
+}