summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-09 20:12:21 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-09 20:12:21 -0400
commitdbe959e0b6a467e8b68746f11e72b16e7bd23dd4 (patch)
treefb56f267250574cfed02d1e7b9ba22cf50269d6c
parenta3cd86b2ddd622dae3703a30280823174173a93d (diff)
FldEff_Splash
-rw-r--r--asm/field_effect_helpers.s79
-rw-r--r--src/field_effect_helpers.c30
2 files changed, 30 insertions, 79 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index 25c4f205c..e0aff9804 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -6,85 +6,6 @@
.text
- thumb_func_start FldEff_Splash
-FldEff_Splash: @ 8127610
- push {r4-r6,lr}
- ldr r6, _081276A4 @ =gFieldEffectSpawnParams
- ldrb r0, [r6]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _081276A8 @ =gMapObjects
- adds r5, r1, r0
- ldr r0, _081276AC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x34]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _0812769A
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- ldr r4, _081276B0 @ =gSprites
- adds r3, r4
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r1, [r1]
- movs r2, 0x2
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- ldrb r2, [r5, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r4, [r3, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r4
- orrs r1, r2
- strb r1, [r3, 0x5]
- ldr r1, [r6]
- strh r1, [r3, 0x2E]
- ldr r1, [r6, 0x4]
- strh r1, [r3, 0x30]
- ldr r1, [r6, 0x8]
- strh r1, [r3, 0x32]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- subs r0, 0x4
- strh r0, [r3, 0x26]
- movs r0, 0x46
- bl PlaySE
-_0812769A:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081276A4: .4byte gFieldEffectSpawnParams
-_081276A8: .4byte gMapObjects
-_081276AC: .4byte gFieldEffectObjectTemplatePointers
-_081276B0: .4byte gSprites
- thumb_func_end FldEff_Splash
-
thumb_func_start sub_81276B4
sub_81276B4: @ 81276B4
push {r4,lr}
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 927d86538..713cda7ae 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -8,6 +8,8 @@
#include "sprite.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
+#include "songs.h"
+#include "sound.h"
#include "field_map_obj.h"
#include "field_camera.h"
#include "field_map_obj_helpers.h"
@@ -620,3 +622,31 @@ static void sub_81275C4(struct Sprite *sprite)
FieldEffectStop(sprite, sprite->data7);
}
}
+
+u8 FldEff_Splash(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectSpawnParams[0], gFieldEffectSpawnParams[1], gFieldEffectSpawnParams[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->data0 = gFieldEffectSpawnParams[0];
+ sprite->data1 = gFieldEffectSpawnParams[1];
+ sprite->data2 = gFieldEffectSpawnParams[2];
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ PlaySE(SE_MIZU);
+ }
+ return 0;
+}