diff options
-rw-r--r-- | asm/field_effect_helpers.s | 79 | ||||
-rw-r--r-- | src/field_effect_helpers.c | 23 |
2 files changed, 22 insertions, 80 deletions
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 3c8502ddb..5a2c0c4fb 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -6,85 +6,6 @@ .text - thumb_func_start FldEff_Shadow -FldEff_Shadow: @ 8126C6C - push {r4,r5,lr} - ldr r5, _08126CF8 @ =gUnknown_0202FF84 - ldrb r0, [r5] - ldrb r1, [r5, 0x4] - ldrb r2, [r5, 0x8] - bl GetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08126CFC @ =gMapObjects - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - bl GetFieldObjectGraphicsInfo - adds r4, r0, 0 - ldr r2, _08126D00 @ =gFieldEffectObjectTemplatePointers - ldr r1, _08126D04 @ =gUnknown_08401E32 - ldrb r0, [r4, 0xC] - lsls r0, 26 - lsrs r0, 30 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - movs r3, 0x94 - bl CreateSpriteAtEnd - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _08126CF0 - ldr r0, _08126D08 @ =gSprites - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r0 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r3] - ldr r0, [r5] - strh r0, [r2, 0x2E] - ldr r0, [r5, 0x4] - strh r0, [r2, 0x30] - ldr r0, [r5, 0x8] - strh r0, [r2, 0x32] - ldrh r1, [r4, 0xA] - lsls r1, 16 - asrs r1, 17 - ldr r3, _08126D0C @ =gUnknown_08401E36 - ldrb r0, [r4, 0xC] - lsls r0, 26 - lsrs r0, 30 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - subs r1, r0 - strh r1, [r2, 0x34] -_08126CF0: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08126CF8: .4byte gUnknown_0202FF84 -_08126CFC: .4byte gMapObjects -_08126D00: .4byte gFieldEffectObjectTemplatePointers -_08126D04: .4byte gUnknown_08401E32 -_08126D08: .4byte gSprites -_08126D0C: .4byte gUnknown_08401E36 - thumb_func_end FldEff_Shadow - thumb_func_start oamc_shadow oamc_shadow: @ 8126D10 push {r4,r5,lr} diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index e77665eee..b7dded198 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -6,9 +6,10 @@ // Includes #include "global.h" #include "sprite.h" +#include "metatile_behavior.h" #include "field_map_obj.h" #include "field_weather.h" -#include "metatile_behavior.h" +#include "field_effect.h" #include "field_effect_helpers.h" // Static type declarations @@ -237,3 +238,23 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) StartSpriteAnim(sprite, animNum - 1); } } + +bool8 FldEff_Shadow(void) +{ + u8 mapObjectId; + const struct MapObjectGraphicsInfo *graphicsInfo; + u8 spriteId; + + mapObjectId = GetFieldObjectIdByLocalIdAndMap(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]); + graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].data0 = gUnknown_0202FF84[0]; + gSprites[spriteId].data1 = gUnknown_0202FF84[1]; + gSprites[spriteId].data2 = gUnknown_0202FF84[2]; + gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; + } + return FALSE; +} |