diff options
-rw-r--r-- | asm/field_effect_helpers.s | 81 | ||||
-rw-r--r-- | include/field_map_obj.h | 1 | ||||
-rw-r--r-- | src/field_effect_helpers.c | 30 |
3 files changed, 31 insertions, 81 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 3e82ba573..4d88413bf 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,87 +6,6 @@ .text - thumb_func_start FldEff_TallGrass -FldEff_TallGrass: @ 8126DD8 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08126E70 @ =gUnknown_0202FF84 - 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, _08126E74 @ =gFieldEffectObjectTemplatePointers - ldr r0, [r0, 0x10] - 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 _08126E64 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08126E78 @ =gSprites - adds r3, r0, r1 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x3 - ldrb r1, [r5, 0xC] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x5] - ldr r0, [r5, 0x8] - strh r0, [r3, 0x2E] - ldr r0, [r5] - strh r0, [r3, 0x30] - ldr r0, [r5, 0x4] - strh r0, [r3, 0x32] - ldr r0, [r5, 0x10] - strh r0, [r3, 0x34] - ldr r0, [r5, 0x14] - strh r0, [r3, 0x36] - ldr r0, [r5, 0x18] - strh r0, [r3, 0x38] - ldr r0, [r5, 0x1C] - cmp r0, 0 - beq _08126E64 - adds r0, r3, 0 - movs r1, 0x4 - bl SeekSpriteAnim -_08126E64: - movs r0, 0 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126E70: .4byte gUnknown_0202FF84 -_08126E74: .4byte gFieldEffectObjectTemplatePointers -_08126E78: .4byte gSprites - thumb_func_end FldEff_TallGrass - thumb_func_start unc_grass_normal unc_grass_normal: @ 8126E7C push {r4-r7,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 78cf2c146..9263604fb 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -431,5 +431,6 @@ void CameraObjectSetFollowedObjectId(u8); u8 sub_805ADDC(u8); u8 obj_unfreeze(struct Sprite *, s16, s16, u8); u16 npc_paltag_by_palslot(u8); +void sub_8060470(s16 *, s16 *, s16, s16); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e10eeca52..72fd0d554 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -282,3 +282,33 @@ void oamc_shadow(struct Sprite *sprite) } } } + +bool8 FldEff_TallGrass(void) +{ + s16 x; + s16 y; + u8 spriteId; + struct Sprite *sprite; + + x = gUnknown_0202FF84[0]; + y = gUnknown_0202FF84[1]; + sub_8060470(&x, &y, 8, 8); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0); + if (spriteId != MAX_SPRITES) + { + sprite = &gSprites[spriteId]; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = gUnknown_0202FF84[3]; + sprite->data0 = gUnknown_0202FF84[2]; + sprite->data1 = gUnknown_0202FF84[0]; + sprite->data2 = gUnknown_0202FF84[1]; + sprite->data3 = gUnknown_0202FF84[4]; + sprite->data4 = gUnknown_0202FF84[5]; + sprite->data5 = gUnknown_0202FF84[6]; + if (gUnknown_0202FF84[7]) + { + SeekSpriteAnim(sprite, 4); + } + } + return FALSE; +} |