From 4b1bbd23e915f9d7a532c34359d7f7369190c5f5 Mon Sep 17 00:00:00 2001 From: theo3 Date: Wed, 15 Jul 2020 01:35:14 -0700 Subject: [PATCH] leever.c 1 nonmatching --- asm/leever.s | 453 ----------------------- asm/non_matching/leever/sub_0801FED4.inc | 72 ++++ include/enemy.h | 5 +- linker.ld | 3 +- src/enemy/leever.c | 206 +++++++++++ src/object/objectB2.c | 44 +++ 6 files changed, 327 insertions(+), 456 deletions(-) delete mode 100644 asm/leever.s create mode 100644 asm/non_matching/leever/sub_0801FED4.inc create mode 100644 src/enemy/leever.c create mode 100644 src/object/objectB2.c diff --git a/asm/leever.s b/asm/leever.s deleted file mode 100644 index d20b77f3..00000000 --- a/asm/leever.s +++ /dev/null @@ -1,453 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Leever -Leever: @ 0x0801FC08 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0801FC24 @ =gUnk_080CA49C - bl EnemyFunctionHandler - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r4, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - pop {r4, pc} - .align 2, 0 -_0801FC24: .4byte gUnk_080CA49C - - thumb_func_start sub_0801FC28 -sub_0801FC28: @ 0x0801FC28 - push {lr} - ldr r2, _0801FC3C @ =gUnk_080CA4B4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0801FC3C: .4byte gUnk_080CA4B4 - - thumb_func_start sub_0801FC40 -sub_0801FC40: @ 0x0801FC40 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _0801FC5C - ldrb r0, [r4, #0xc] - cmp r0, #3 - bne _0801FC6E - adds r1, r4, #0 - adds r1, #0x74 - movs r0, #1 - strh r0, [r1] - b _0801FC6E -_0801FC5C: - adds r0, r4, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _0801FC6E - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_0801FC6E: - ldr r1, _0801FC78 @ =gUnk_080CA49C - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_0801FC78: .4byte gUnk_080CA49C - - thumb_func_start sub_0801FC7C -sub_0801FC7C: @ 0x0801FC7C - push {lr} - adds r1, r0, #0 - ldrb r0, [r1, #0xa] - cmp r0, #0 - bne _0801FC8E - adds r0, r1, #0 - bl sub_0804A7D4 - b _0801FC98 -_0801FC8E: - adds r0, r1, #0 - movs r1, #0xf1 - movs r2, #0 - bl CreateDeathFx -_0801FC98: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801FC9C -sub_0801FC9C: @ 0x0801FC9C - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #1 - strb r0, [r4, #0xc] - bl Random - strb r0, [r4, #0xe] - pop {r4, pc} - - thumb_func_start sub_0801FCB0 -sub_0801FCB0: @ 0x0801FCB0 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0801FD28 - bl Random - movs r1, #0x1f - ands r1, r0 - adds r0, r5, #0 - bl sub_0801FE68 - cmp r0, #0 - beq _0801FD1C - movs r0, #2 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x18] - subs r0, #6 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r5, #0x18] - ldr r0, _0801FD14 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r5, #0 - bl GetFacingDirection - adds r4, r0, #0 - bl Random - ldr r2, _0801FD18 @ =gUnk_080CA4C8 - movs r1, #1 - ands r1, r0 - adds r1, r1, r2 - ldrb r0, [r1] - adds r0, r0, r4 - movs r1, #0x1f - ands r0, r1 - strb r0, [r5, #0x15] - adds r0, r5, #0 - movs r1, #0 - bl InitializeAnimation - adds r0, r5, #0 - bl UpdateSpriteForCollisionLayer - b _0801FD28 - .align 2, 0 -_0801FD14: .4byte gUnk_020000B0 -_0801FD18: .4byte gUnk_080CA4C8 -_0801FD1C: - bl Random - movs r1, #0x18 - ands r0, r1 - adds r0, #8 - strb r0, [r5, #0xe] -_0801FD28: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0801FD2C -sub_0801FD2C: @ 0x0801FD2C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0801FD66 - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0801FD54 - adds r1, r4, #0 - adds r1, #0x74 - movs r0, #0xb4 - b _0801FD5A -_0801FD54: - adds r1, r4, #0 - adds r1, #0x74 - movs r0, #0x6e -_0801FD5A: - strh r0, [r1] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation - b _0801FD7C -_0801FD66: - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0801FD7C - movs r0, #0xfe - ands r0, r1 - strb r0, [r2] - ldrb r0, [r4, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] -_0801FD7C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0801FD80 -sub_0801FD80: @ 0x0801FD80 - push {r4, lr} - adds r4, r0, #0 - bl sub_0801FED4 - adds r0, r4, #0 - bl GetNextFrame - adds r1, r4, #0 - adds r1, #0x74 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0801FDB2 - movs r0, #4 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_0801FDB2: - pop {r4, pc} - - thumb_func_start sub_0801FDB4 -sub_0801FDB4: @ 0x0801FDB4 - push {r4, lr} - adds r4, r0, #0 - bl sub_0801FED4 - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0801FDE0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xf0 - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x18] - subs r0, #0xf4 - ands r0, r1 - strb r0, [r4, #0x18] -_0801FDE0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0801FDE4 -sub_0801FDE4: @ 0x0801FDE4 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - adds r4, r1, #0 - adds r5, r2, #0 - ldr r7, _0801FE04 @ =gUnk_020000B0 - ldr r0, [r7] - adds r0, #0x38 - ldrb r2, [r0] - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_080002D4 - cmp r0, #0 - beq _0801FE34 - b _0801FE5C - .align 2, 0 -_0801FE04: .4byte gUnk_020000B0 -_0801FE08: - movs r0, #0x10 - rsbs r0, r0, #0 - adds r1, r0, #0 - ands r4, r1 - adds r0, r4, #0 - adds r0, #8 - strh r0, [r6, #0x2e] - ands r5, r1 - adds r0, r5, #0 - adds r0, #8 - strh r0, [r6, #0x32] - ldr r0, _0801FE30 @ =gUnk_020000B0 - ldr r0, [r0] - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r6, #0 - adds r0, #0x38 - strb r1, [r0] - movs r0, #1 - b _0801FE5E - .align 2, 0 -_0801FE30: .4byte gUnk_020000B0 -_0801FE34: - ldr r0, [r7] - adds r0, #0x38 - ldrb r2, [r0] - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_080002BC - adds r3, r0, #0 - ldr r1, _0801FE60 @ =gUnk_080CA4CA - ldrh r0, [r1] - ldr r2, _0801FE64 @ =0x0000FFFF - cmp r0, r2 - beq _0801FE5C -_0801FE4E: - ldrh r0, [r1] - adds r1, #2 - cmp r0, r3 - beq _0801FE08 - ldrh r0, [r1] - cmp r0, r2 - bne _0801FE4E -_0801FE5C: - movs r0, #0 -_0801FE5E: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801FE60: .4byte gUnk_080CA4CA -_0801FE64: .4byte 0x0000FFFF - - thumb_func_start sub_0801FE68 -sub_0801FE68: @ 0x0801FE68 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r7, r0, #0 - adds r6, r1, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - bne _0801FE82 -_0801FE7E: - movs r0, #0 - b _0801FEC4 -_0801FE82: - ldr r0, _0801FECC @ =gUnk_020000B0 - ldr r0, [r0] - ldr r5, [r0, #0x2c] - ldr r4, [r0, #0x30] - ldr r1, _0801FED0 @ =gSineTable - lsls r0, r6, #4 - adds r0, r0, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - lsls r0, r0, #0xb - mov sb, r0 - lsls r0, r6, #4 - adds r0, #0x80 - adds r0, r0, r1 - movs r1, #0 - ldrsh r0, [r0, r1] - lsls r0, r0, #0xb - mov r8, r0 - movs r6, #0 -_0801FEA8: - add r5, sb - mov r2, r8 - subs r4, r4, r2 - asrs r1, r5, #0x10 - asrs r2, r4, #0x10 - adds r0, r7, #0 - bl sub_0801FDE4 - cmp r0, #0 - beq _0801FE7E - adds r6, #1 - cmp r6, #7 - bls _0801FEA8 - movs r0, #1 -_0801FEC4: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801FECC: .4byte gUnk_020000B0 -_0801FED0: .4byte gSineTable - - thumb_func_start sub_0801FED4 -sub_0801FED4: @ 0x0801FED4 - push {r4, lr} - adds r4, r0, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - bne _0801FEEA - adds r1, r4, #0 - adds r1, #0x74 - movs r0, #1 - strh r0, [r1] -_0801FEEA: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r2, #0xf - adds r1, r2, #0 - ands r1, r0 - lsls r1, r1, #5 - strh r1, [r4, #0x24] - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _0801FF28 - ldrb r1, [r4, #0xf] - adds r0, r1, #1 - strb r0, [r4, #0xf] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - bne _0801FF4E - ldr r0, _0801FF24 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - bl sub_0800132C - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 - b _0801FF4E - .align 2, 0 -_0801FF24: .4byte gUnk_020000B0 -_0801FF28: - adds r0, r1, #0 - adds r0, #0x40 - strh r0, [r4, #0x24] - ldrb r1, [r4, #0xf] - adds r0, r1, #1 - strb r0, [r4, #0xf] - movs r0, #7 - ands r0, r1 - cmp r0, #0 - bne _0801FF4E - ldr r0, _0801FF58 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - bl sub_0800132C - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 -_0801FF4E: - adds r0, r4, #0 - bl sub_080AEF88 - pop {r4, pc} - .align 2, 0 -_0801FF58: .4byte gUnk_020000B0 diff --git a/asm/non_matching/leever/sub_0801FED4.inc b/asm/non_matching/leever/sub_0801FED4.inc new file mode 100644 index 00000000..70d3ea26 --- /dev/null +++ b/asm/non_matching/leever/sub_0801FED4.inc @@ -0,0 +1,72 @@ + .include "asm/macros.inc" + + .include "constants/constants.inc" + + .syntax unified + + .text + + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0801FEEA + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #1 + strh r0, [r1] +_0801FEEA: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0xf + adds r1, r2, #0 + ands r1, r0 + lsls r1, r1, #5 + strh r1, [r4, #0x24] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0801FF28 + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0801FF4E + ldr r0, _0801FF24 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0800132C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + b _0801FF4E + .align 2, 0 +_0801FF24: .4byte gUnk_020000B0 +_0801FF28: + adds r0, r1, #0 + adds r0, #0x40 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0801FF4E + ldr r0, _0801FF58 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0800132C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_0801FF4E: + adds r0, r4, #0 + bl sub_080AEF88 + pop {r4, pc} + .align 2, 0 +_0801FF58: .4byte gUnk_020000B0 +.syntax divided \ No newline at end of file diff --git a/include/enemy.h b/include/enemy.h index 95ed484a..811c5d06 100644 --- a/include/enemy.h +++ b/include/enemy.h @@ -4,8 +4,6 @@ #include "global.h" #include "entity.h" -extern u32 GetNextFunction(Entity*); - extern void Octorok(Entity*); extern void Chuchu(Entity*); extern void Leever(Entity*); @@ -109,4 +107,7 @@ extern void GyorgFemaleMouth(Entity*); extern void Enemy64(Entity*); extern void TreeItem(Entity*); extern void Enemy66(Entity*); + +extern u32 GetNextFunction(Entity*); +extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*)); #endif \ No newline at end of file diff --git a/linker.ld b/linker.ld index 640acd3d..2e8b0e27 100644 --- a/linker.ld +++ b/linker.ld @@ -326,7 +326,7 @@ SECTIONS { src/enemy/octorok.o(.text); asm/octorok.o(.text); asm/chuchu.o(.text); - asm/leever.o(.text); + src/enemy/leever.o(.text); asm/peahat.o(.text); asm/rollobite.o(.text); asm/darkNut.o(.text); @@ -850,6 +850,7 @@ SECTIONS { src/object/objectAF.o(.text); src/object/metalDoor.o(.text); src/object/jailBars.o(.text); + src/object/objectB2.o(.text); asm/objectB2.o(.text); asm/objectB3.o(.text); asm/objectB4.o(.text); diff --git a/src/enemy/leever.c b/src/enemy/leever.c new file mode 100644 index 00000000..baefa4fd --- /dev/null +++ b/src/enemy/leever.c @@ -0,0 +1,206 @@ +#include "global.h" +#include "entity.h" +#include "enemy.h" +#include "functions.h" + +extern void SetChildOffset(Entity*, s32, s32, s32); +extern void sub_0804A9FC(Entity*, u32); +extern void sub_0804AA30(Entity*, void (*const func[])(Entity*)); +extern void sub_0804A7D4(Entity*); +extern Entity* CreateDeathFx(Entity*, u32, u32); +extern void sub_0804A720(Entity*); +bool32 sub_0801FE68(Entity*, s32); +extern void sub_0801FED4(Entity*); +extern u32 sub_080002D4(s32, s32, u32); +extern u32 sub_080002BC(s32, s32, u32); +extern u32 sub_08049FDC(Entity*, u32); +bool32 sub_0801FDE4(Entity*, s32, s32); + +extern void (*const gUnk_080CA49C[])(Entity*); +extern void (*const gUnk_080CA4B4[])(Entity*); +extern Entity* gUnk_020000B0; +extern u8 gUnk_080CA4C8[]; +extern u16 gUnk_080CA4CA[]; +extern s16 gSineTable[]; +void Leever(Entity *this) +{ + EnemyFunctionHandler(this, gUnk_080CA49C); + SetChildOffset(this, 0, 1, -0x10); +} + +void sub_0801FC28(Entity *this) +{ + gUnk_080CA4B4[this->action](this); +} + +void sub_0801FC40(Entity *this) +{ + if (this->bitfield == 0x80) { + if (this->action == 3) { + this->field_0x74 = 1; + } + } + else { + if (this->field_0x43 != 0) { + sub_0804A9FC(this, 0x1c); + } + } + sub_0804AA30(this, gUnk_080CA49C); +} + +void sub_0801FC7C(Entity *this) +{ + if ((this->entityType).form == 0) { + sub_0804A7D4(this); + } + else { + CreateDeathFx(this, 0xf1, 0); + } +} + +void sub_0801FC9C(Entity *this) +{ + sub_0804A720(this); + this->action = 1; + this->actionDelay = Random(); +} + +void sub_0801FCB0(Entity *this) +{ + if (--this->actionDelay == 0) { + if (sub_0801FE68(this, Random() & 0x1f) != 0) { + this->action = 2; + this->spriteSettings.b.draw = TRUE; + this->direction = (GetFacingDirection(this, gUnk_020000B0) + gUnk_080CA4C8[Random() & 1]) & 0x1f; + InitializeAnimation(this, 0); + UpdateSpriteForCollisionLayer(this); + } + else { + this->actionDelay = (Random() & 0x18) + 8; + } + } +} + +void sub_0801FD2C(Entity *this) +{ + + GetNextFrame(this); + + if (this->frames.b.f3 != 0) { + this->action = 3; + if (this->entityType.form == 0) { + this->field_0x74 = 0xb4; + } + else { + this->field_0x74 = 0x6e; + } + InitializeAnimation(this,2); + } + else if (this->frames.b.f0 != 0) { + this->frames.all &= 0xfe; + this->flags |= 0x80; + } +} + +void sub_0801FD80(Entity *this) +{ + + sub_0801FED4(this); + GetNextFrame(this); + + if (--this->field_0x74 == 0) { + this->action = 4; + this->flags &= 0x7f; + InitializeAnimation(this, 1); + } +} + +void sub_0801FDB4(Entity *this) +{ + sub_0801FED4(this); + GetNextFrame(this); + if ((this->frames.b.f3) != 0) { + this->action = 1; + this->actionDelay = 0xf0; + this->spriteSettings.b.draw = FALSE; + } +} + +u32 sub_0801FDE4(Entity *ent, s32 x, s32 y) +{ + u32 uVar3; + u16 *puVar4; + + if (sub_080002D4(x, y, gUnk_020000B0->collisionLayer) != 0) { + return 0; + } else { + uVar3 = sub_080002BC(x, y, gUnk_020000B0->collisionLayer); + for (puVar4 = gUnk_080CA4CA; *puVar4 != (u16)-1;) { + if (*puVar4++ == uVar3) { + ent->x.HALF.HI = (x & 0xfff0) + 8; + ent->y.HALF.HI = (y & 0xfff0) + 8; + ent->collisionLayer = gUnk_020000B0->collisionLayer; + return 1; + } + } + return 0; + } +} + +bool32 sub_0801FE68(Entity *ent, s32 arg2) +{ + s32 sin, cos; + s32 x, y; + u32 i; + + + if (sub_08049FDC(ent, 1) == 0) { + return 0; + } + else { + x = gUnk_020000B0->x.WORD; + y = gUnk_020000B0->y.WORD; + sin = gSineTable[arg2 * 8] << 11; + cos = gSineTable[arg2 * 8 + 0x40] << 11; + for (i = 0; i < 8; i++) { + x += sin; + y += -cos; + if (sub_0801FDE4(ent, x >> 0x10, y >> 0x10) == 0) { + return 0; + } + } + return 1; + } +} + +#if NON_MATCHING +void sub_0801FED4(Entity *this) +{ + s16 sVar2; + + if (sub_08049FDC(this, 1) == 0) { + this->field_0x74 = 1; + } + sVar2 = (this->frames.all & 0xf) * 0x20; + this->nonPlanarMovement = sVar2; + if (this->entityType.form == 0) { + this->field_0xf++; + if ((this->field_0xf & 0xf) == 0) { + sub_08004596(this, sub_0800132C(this, gUnk_020000B0)); + } + } + else { + this->nonPlanarMovement = sVar2 + 0x40; + this->field_0xf++; + if ((this->field_0xf & 0x7) == 0) { + sub_08004596(this, sub_0800132C(this, gUnk_020000B0)); + } + } + sub_080AEF88(this); +} +#else +NAKED +void sub_0801FED4(Entity *this) { + asm(".include \"asm/non_matching/leever/sub_0801FED4.inc\""); +} +#endif \ No newline at end of file diff --git a/src/object/objectB2.c b/src/object/objectB2.c new file mode 100644 index 00000000..3c7e7fe2 --- /dev/null +++ b/src/object/objectB2.c @@ -0,0 +1,44 @@ +#include "global.h" +#include "entity.h" + +extern void sub_0806F69C(Entity*); +extern u32 sub_080AE4CC(Entity*, u32, u32, u32); + +extern void* gUnk_02027EB4; +extern void* gUnk_0200D654; + +#if 0 + +void ObjectB2(Entity *this) +{ + void* pEVar3; + + if (this->action == 0) { + this->action = 1; + this->actionDelay = 0x10; + this->direction = (this->entityType).form << 3; + if (this->collisionLayer == 2) { + pEVar3 = &gUnk_0200D654; + } + else { + pEVar3 = &gUnk_02027EB4; + } + this->attachedEntity = pEVar3; + InitializeAnimation(this, this->entityType.form); + } + this->nonPlanarMovement = this->parent->nonPlanarMovement; + sub_0806F69C(this); + if (sub_080AE4CC(this->attachedEntity, this->x.HALF.HI, this->y.HALF.HI, 9) != 0) { + DeleteThisEntity(); + } + if (this->nonPlanarMovement < 0x41) { + this->spriteSettings.b.draw ^= 1; + + if (--this->actionDelay == 0) { + DeleteThisEntity(); + } + } + GetNextFrame(this); +} + +#endif \ No newline at end of file