summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokeblock_feed.s137
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokeblock_feed.c77
3 files changed, 51 insertions, 164 deletions
diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s
deleted file mode 100644
index 182d28081..000000000
--- a/asm/pokeblock_feed.s
+++ /dev/null
@@ -1,137 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
-
-
-
- thumb_func_start sub_8148710
-sub_8148710: @ 8148710
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r1, _081487A4 @ =gUnknown_03005FA0
- ldrh r2, [r1, 0x1A]
- ldrh r0, [r1, 0x14]
- subs r2, r0
- ldrh r3, [r1, 0x1C]
- ldrh r0, [r1, 0x16]
- subs r3, r0
- adds r6, r1, 0
- ldr r1, _081487A8 @ =0x0201d000
- mov r9, r1
- lsls r2, 16
- asrs r2, 16
- mov r8, r2
- movs r2, 0x80
- lsls r2, 3
- add r2, r9
- mov r10, r2
- lsls r3, 16
- asrs r7, r3, 16
-_08148746:
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _08148750
- negs r0, r0
-_08148750:
- lsls r0, 16
- lsrs r0, 16
- ldrh r2, [r6, 0x6]
- adds r0, r2
- lsls r5, r0, 16
- strh r0, [r6, 0x6]
- ldrh r2, [r6, 0x4]
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _0814876A
- movs r0, 0x1
- str r0, [sp]
-_0814876A:
- ldrh r0, [r6, 0x18]
- ldrh r1, [r6, 0x8]
- subs r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r1, 0
- beq _081487F0
- ldr r1, [sp]
- cmp r1, 0
- bne _081487AC
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsrs r5, 24
- adds r1, r2, r5
- lsls r1, 16
- asrs r1, 16
- bl Sin
- lsls r4, 1
- mov r2, r9
- adds r1, r4, r2
- add r0, r8
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r6, r1]
- ldrh r1, [r6, 0x6]
- adds r1, r5
- b _081487CE
- .align 2, 0
-_081487A4: .4byte gUnknown_03005FA0
-_081487A8: .4byte 0x0201d000
-_081487AC:
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsrs r5, 24
- subs r1, r2, r5
- lsls r1, 16
- asrs r1, 16
- bl Sin
- lsls r4, 1
- mov r2, r9
- adds r1, r4, r2
- add r0, r8
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r6, r1]
- ldrh r1, [r6, 0x6]
- subs r1, r5
-_081487CE:
- lsls r1, 16
- asrs r1, 16
- bl Cos
- add r4, r10
- adds r0, r7, r0
- strh r0, [r4]
- ldrh r0, [r6, 0x2]
- ldrh r2, [r6]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6]
- ldrh r0, [r6, 0x8]
- subs r0, 0x1
- strh r0, [r6, 0x8]
- b _08148746
-_081487F0:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8148710
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 8c34b4d6f..d21ad72a5 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -264,7 +264,6 @@ SECTIONS {
src/save_failed_screen.o(.text);
src/braille_puzzles.o(.text);
src/pokeblock_feed.o(.text);
- asm/pokeblock_feed.o(.text);
src/clear_save_data_menu.o(.text);
src/intro_credits_graphics.o(.text);
asm/evolution_graphics.o(.text);
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 300464474..9cef681b0 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -53,7 +53,7 @@ static void sub_8147B04(void);
static void sub_81481DC(void);
static void sub_814825C(void);
static u8 sub_81480B4(void);
-static u8 sub_814817C(void);
+static u8 CreatePokeblockSprite(void);
static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon);
static bool8 sub_8147B20(struct Pokemon* mon);
static void LaunchPokeblockFeedTask(u8);
@@ -67,7 +67,7 @@ static bool8 sub_8148540(void);
static bool8 sub_81485CC(void);
static bool8 FreePokeSpriteMatrix(void);
void sub_8148710(void);
-static void sub_81481B0(struct Sprite* sprite);
+static void SpriteCB_ThrownPokeblock(struct Sprite* sprite);
static void sub_814862C(void);
// EWRAM
@@ -433,7 +433,7 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A8[] =
sSpriteAffineAnim_8412148
};
-static const struct OamData sOamData_84121AC =
+static const struct OamData sThrownPokeblockOamData =
{
.y = 0,
.affineMode = 3,
@@ -450,15 +450,15 @@ static const struct OamData sOamData_84121AC =
.affineParam = 0,
};
-static const union AnimCmd sSpriteAnim_84121B4[] =
+static const union AnimCmd sThrownPokeblockSpriteAnim[] =
{
ANIMCMD_FRAME(0, 0),
ANIMCMD_END
};
-static const union AnimCmd *const sSpriteAnimTable_84121BC[] =
+static const union AnimCmd *const sThrownPokeblockAnimTable[] =
{
- sSpriteAnim_84121B4,
+ sThrownPokeblockSpriteAnim,
};
static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] =
@@ -468,7 +468,7 @@ static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] =
AFFINEANIMCMD_JUMP(1)
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121D8[] =
+static const union AffineAnimCmd *const sThrownPokeblockAffineAnimTable[] =
{
sSpriteAffineAnim_84121C0
};
@@ -478,15 +478,15 @@ static const struct CompressedSpriteSheet sUnknown_084121DC =
gPokeblock_Gfx, 0x20, 14818
};
-static const struct SpriteTemplate sSpriteTemplate_84121E4 =
+static const struct SpriteTemplate sThrownPokeblockSpriteTemplate =
{
.tileTag = 14818,
.paletteTag = 14818,
- .oam = &sOamData_84121AC,
- .anims = sSpriteAnimTable_84121BC,
+ .oam = &sThrownPokeblockOamData,
+ .anims = sThrownPokeblockAnimTable,
.images = NULL,
- .affineAnims = sSpriteAffineAnimTable_84121D8,
- .callback = sub_81481B0
+ .affineAnims = sThrownPokeblockAffineAnimTable,
+ .callback = SpriteCB_ThrownPokeblock
};
// code
@@ -687,7 +687,7 @@ static void sub_8147CC8(u8 taskID)
sub_8148108(ewram[0x1FFFD], gTasks[taskID].data[1]);
break;
case 269:
- ewram[0x1FFFC] = sub_814817C();
+ ewram[0x1FFFC] = CreatePokeblockSprite();
break;
case 281:
sub_8148044(ewram[0x1FFFE]);
@@ -817,15 +817,15 @@ static void sub_8148108(u8 spriteID, bool8 a1)
InitSpriteAffineAnim(&gSprites[spriteID]);
}
-static u8 sub_814817C(void)
+static u8 CreatePokeblockSprite(void)
{
- u8 spriteID = CreateSprite(&sSpriteTemplate_84121E4, 174, 84, 1);
+ u8 spriteID = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1);
gSprites[spriteID].data0 = -12;
gSprites[spriteID].data1 = 1;
return spriteID;
}
-static void sub_81481B0(struct Sprite* sprite)
+static void SpriteCB_ThrownPokeblock(struct Sprite* sprite)
{
sprite->pos1.x -= 4;
sprite->pos1.y += sprite->data0;
@@ -932,8 +932,8 @@ static bool8 sub_81485CC(void)
{
u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4];
- gPokeblockFeedPokeSprite->pos2.x = (u16)(*((u16*)(&ewram[0x1D000]) + var));
- gPokeblockFeedPokeSprite->pos2.y = (u16)(*((u16*)(&ewram[0x1D400]) + var));
+ gPokeblockFeedPokeSprite->pos2.x = (*((u16*)(&ewram[0x1D000]) + var));
+ gPokeblockFeedPokeSprite->pos2.y = (*((u16*)(&ewram[0x1D400]) + var));
if (--gUnknown_03005FA0[4] == 0)
return 1;
@@ -971,17 +971,42 @@ static void sub_814862C(void)
*((u16*)(&ewram[0x1D3FE]) + (r8 + r7)) = r9;
}
-/*
void sub_8148710(void)
{
bool8 var_24 = 0;
s16 r8 = gUnknown_03005FA0[13] - gUnknown_03005FA0[10];
s16 r7 = gUnknown_03005FA0[14] - gUnknown_03005FA0[11];
- s16 r5;
- if (gUnknown_03005FA0[10] < 0)
- r5 = -(gUnknown_03005FA0[10]) - gUnknown_03005FA0[3];
- else
- r5 = (gUnknown_03005FA0[10]) - gUnknown_03005FA0[3];
- if (gUnknown_03005FA0)
+ while (1)
+ {
+ u16 r5;
+ u16 r4;
+ u16 var;
+
+ var = abs(gUnknown_03005FA0[5]);
+ r5 = var + gUnknown_03005FA0[3];
+ gUnknown_03005FA0[3] = r5;
+
+ if (gUnknown_03005FA0[2] < 0)
+ var_24 = 1;
+
+ r4 = gUnknown_03005FA0[12] - gUnknown_03005FA0[4];
+
+ if (gUnknown_03005FA0[4] == 0)
+ break;
+
+ if (var_24 == 0)
+ {
+ *((u16*)(&ewram[0x1D000]) + r4) = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8;
+ *((u16*)(&ewram[0x1D400]) + r4) = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7;
+ }
+ else
+ {
+ *((u16*)(&ewram[0x1D000]) + r4) = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8;
+ *((u16*)(&ewram[0x1D400]) + r4) = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7;
+ }
+
+ gUnknown_03005FA0[0] += gUnknown_03005FA0[1];
+ gUnknown_03005FA0[0] &= 0xFF;
+ gUnknown_03005FA0[4]--;
+ }
}
-*/