summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-09 18:20:09 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-09 18:20:09 -0400
commit9d2c7a60b0e4860d8d9fbf5a478217f0f88eb454 (patch)
tree39d1a2f9c01c467dc8704f1644c89f038f2ab6d1
parentdb5f08aead7b5dcc8253620fd792b72c8de7def6 (diff)
FldEff_LongGrass
-rw-r--r--asm/field_effect_helpers.s82
-rw-r--r--src/field_effect_helpers.c31
2 files changed, 31 insertions, 82 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index 8b7225604..5f6b60bbd 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -6,88 +6,6 @@
.text
- thumb_func_start FldEff_LongGrass
-FldEff_LongGrass: @ 8127080
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _0812711C @ =gFieldEffectSpawnParams
- ldrh r1, [r5]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r5, 0x4]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127120 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x3C]
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08127110
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127124 @ =gSprites
- adds r4, r0, r1
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r5, 0x8]
- bl ZCoordToPriority
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldr r0, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldr r0, [r5]
- strh r0, [r4, 0x30]
- ldr r0, [r5, 0x4]
- strh r0, [r4, 0x32]
- ldr r0, [r5, 0x10]
- strh r0, [r4, 0x34]
- ldr r0, [r5, 0x14]
- strh r0, [r4, 0x36]
- ldr r0, [r5, 0x18]
- strh r0, [r4, 0x38]
- ldr r0, [r5, 0x1C]
- cmp r0, 0
- beq _08127110
- adds r0, r4, 0
- movs r1, 0x6
- bl SeekSpriteAnim
-_08127110:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812711C: .4byte gFieldEffectSpawnParams
-_08127120: .4byte gFieldEffectObjectTemplatePointers
-_08127124: .4byte gSprites
- thumb_func_end FldEff_LongGrass
-
thumb_func_start unc_grass_tall
unc_grass_tall: @ 8127128
push {r4-r7,lr}
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index cb4adbb43..b71a36122 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -13,6 +13,7 @@
#include "field_map_obj_helpers.h"
#include "field_weather.h"
#include "field_effect.h"
+#include "field_ground_effect.h"
#include "field_effect_helpers.h"
// Static type declarations
@@ -395,3 +396,33 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
}
return MAX_SPRITES;
}
+
+bool8 FldEff_LongGrass(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectSpawnParams[0];
+ y = gFieldEffectSpawnParams[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = ZCoordToPriority(gFieldEffectSpawnParams[2]);
+ sprite->data0 = gFieldEffectSpawnParams[2];
+ sprite->data1 = gFieldEffectSpawnParams[0];
+ sprite->data2 = gFieldEffectSpawnParams[1];
+ sprite->data3 = gFieldEffectSpawnParams[4];
+ sprite->data4 = gFieldEffectSpawnParams[5];
+ sprite->data5 = gFieldEffectSpawnParams[6];
+ if (gFieldEffectSpawnParams[7])
+ {
+ SeekSpriteAnim(sprite, 6);
+ }
+ }
+ return FALSE;
+}