mirror of
https://github.com/zeldaret/tmc
synced 2026-07-11 23:30:06 -04:00
Merge pull request #379 from octorock/movement
Begin decompiling movement
This commit is contained in:
+14
-14
@@ -154,23 +154,23 @@ sub_080197A0: @ 0x080197A0
|
||||
|
||||
thumb_func_start SetBGDefaults
|
||||
SetBGDefaults: @ 0x080197AC
|
||||
ldr r0, _080197C4 @ =gUnk_02025EB0
|
||||
ldr r0, _080197C4 @ =gMapBottom
|
||||
ldr r1, _080197C8 @ =gBGAffSettings
|
||||
str r1, [r0]
|
||||
ldr r2, _080197CC @ =gUnk_080B77C0
|
||||
ldrh r0, [r2]
|
||||
strh r0, [r1]
|
||||
ldr r0, _080197D0 @ =gUnk_0200B650
|
||||
ldr r0, _080197D0 @ =gMapTop
|
||||
subs r1, #0xc
|
||||
str r1, [r0]
|
||||
ldrh r0, [r2, #2]
|
||||
strh r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080197C4: .4byte gUnk_02025EB0
|
||||
_080197C4: .4byte gMapBottom
|
||||
_080197C8: .4byte gScreen + 0x20
|
||||
_080197CC: .4byte gUnk_080B77C0
|
||||
_080197D0: .4byte gUnk_0200B650
|
||||
_080197D0: .4byte gMapTop
|
||||
|
||||
thumb_func_start sub_080197D4
|
||||
sub_080197D4: @ 0x080197D4
|
||||
@@ -1061,7 +1061,7 @@ _08019E54:
|
||||
lsls r1, r7, #1
|
||||
cmp r0, #3
|
||||
bne _08019E84
|
||||
ldr r0, _08019E7C @ =gUnk_0200B650
|
||||
ldr r0, _08019E7C @ =gMapTop
|
||||
adds r0, #4
|
||||
adds r2, r1, r0
|
||||
ldrh r0, [r2]
|
||||
@@ -1075,7 +1075,7 @@ _08019E54:
|
||||
mov sb, r5
|
||||
b _08019E98
|
||||
.align 2, 0
|
||||
_08019E7C: .4byte gUnk_0200B650
|
||||
_08019E7C: .4byte gMapTop
|
||||
_08019E80: .4byte 0x0000400C
|
||||
_08019E84:
|
||||
mov r0, r8
|
||||
@@ -1705,7 +1705,7 @@ _0801A32C:
|
||||
asrs r2, r2, #0x10
|
||||
adds r0, r3, #0
|
||||
adds r3, r6, #0
|
||||
bl sub_080AE4CC
|
||||
bl IsTileCollision
|
||||
cmp r0, #0
|
||||
bne _0801A36C
|
||||
movs r0, #1
|
||||
@@ -1901,7 +1901,7 @@ _0801A4B0:
|
||||
adds r2, r2, r0
|
||||
adds r0, r3, #0
|
||||
mov r3, r8
|
||||
bl sub_080AE4CC
|
||||
bl IsTileCollision
|
||||
cmp r0, #0
|
||||
bne _0801A4F0
|
||||
ldrb r0, [r5]
|
||||
@@ -2741,7 +2741,7 @@ sub_0801AB08: @ 0x0801AB08
|
||||
sub sp, #8
|
||||
adds r5, r0, #0
|
||||
mov r8, r1
|
||||
ldr r0, _0801AB4C @ =gUnk_02025EB0
|
||||
ldr r0, _0801AB4C @ =gMapBottom
|
||||
movs r1, #2
|
||||
cmp r8, r0
|
||||
bne _0801AB22
|
||||
@@ -2770,7 +2770,7 @@ _0801AB40:
|
||||
lsls r0, r0, #2
|
||||
b _0801AB64
|
||||
.align 2, 0
|
||||
_0801AB4C: .4byte gUnk_02025EB0
|
||||
_0801AB4C: .4byte gMapBottom
|
||||
_0801AB50: .4byte 0x00003004
|
||||
_0801AB54: .4byte 0x00003FFF
|
||||
_0801AB58:
|
||||
@@ -3228,14 +3228,14 @@ _0801AEB6:
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801AF0C
|
||||
ldr r1, _0801AEFC @ =gUnk_02025EB0
|
||||
ldr r1, _0801AEFC @ =gMapBottom
|
||||
ldr r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0801AED0
|
||||
ldr r0, _0801AF00 @ =gUnk_02019EE0
|
||||
bl sub_0801AB08
|
||||
_0801AED0:
|
||||
ldr r1, _0801AF04 @ =gUnk_0200B650
|
||||
ldr r1, _0801AF04 @ =gMapTop
|
||||
ldr r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0801AF10
|
||||
@@ -3250,9 +3250,9 @@ _0801AEEC: .4byte 0x0600F000
|
||||
_0801AEF0: .4byte gUnk_03004030
|
||||
_0801AEF4: .4byte 0x0000088C
|
||||
_0801AEF8: .4byte 0x00000888
|
||||
_0801AEFC: .4byte gUnk_02025EB0
|
||||
_0801AEFC: .4byte gMapBottom
|
||||
_0801AF00: .4byte gUnk_02019EE0
|
||||
_0801AF04: .4byte gUnk_0200B650
|
||||
_0801AF04: .4byte gMapTop
|
||||
_0801AF08: .4byte gMapDataTopSpecial
|
||||
_0801AF0C:
|
||||
bl sub_0807C4F8
|
||||
|
||||
+2
-2
@@ -119,10 +119,10 @@ sub_080044AE: @ 0x080044AE
|
||||
push {r0, r1, r2}
|
||||
adds r1, r2, #0
|
||||
movs r2, #2
|
||||
bl sub_080AE58C
|
||||
bl CalculateEntityTileCollisions
|
||||
pop {r0, r1, r2}
|
||||
movs r3, #2
|
||||
bl sub_080AE7E8
|
||||
bl ProcessMovementInternal
|
||||
_080044C8:
|
||||
pop {r3}
|
||||
bx r3
|
||||
|
||||
+4
-4
@@ -261,9 +261,9 @@ sub_08053758: @ 0x08053758
|
||||
strb r4, [r1, #0x10]
|
||||
ldr r0, _080537E0 @ =gUnk_02032EC0
|
||||
strb r3, [r0, #6]
|
||||
ldr r0, _080537E4 @ =gUnk_02025EB0
|
||||
ldr r0, _080537E4 @ =gMapBottom
|
||||
str r2, [r0]
|
||||
ldr r0, _080537E8 @ =gUnk_0200B650
|
||||
ldr r0, _080537E8 @ =gMapTop
|
||||
str r2, [r0]
|
||||
ldr r0, _080537EC @ =gRoomControls
|
||||
str r2, [r0, #0x30]
|
||||
@@ -311,8 +311,8 @@ sub_08053758: @ 0x08053758
|
||||
.align 2, 0
|
||||
_080537DC: .4byte gMenu
|
||||
_080537E0: .4byte gUnk_02032EC0
|
||||
_080537E4: .4byte gUnk_02025EB0
|
||||
_080537E8: .4byte gUnk_0200B650
|
||||
_080537E4: .4byte gMapBottom
|
||||
_080537E8: .4byte gMapTop
|
||||
_080537EC: .4byte gRoomControls
|
||||
_080537F0: .4byte gScreen
|
||||
_080537F4: .4byte 0x00002244
|
||||
|
||||
+2
-2
@@ -5741,7 +5741,7 @@ SetTileType: @ 0x0807B314
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807B36C
|
||||
ldr r0, _0807B3B4 @ =gUnk_02025EB0
|
||||
ldr r0, _0807B3B4 @ =gMapBottom
|
||||
ldr r1, _0807B3AC @ =0x00002004
|
||||
adds r0, r0, r1
|
||||
adds r0, r4, r0
|
||||
@@ -5778,7 +5778,7 @@ _0807B3A4: .4byte 0x00006004
|
||||
_0807B3A8: .4byte gUnk_080B3E80
|
||||
_0807B3AC: .4byte 0x00002004
|
||||
_0807B3B0: .4byte gRoomControls
|
||||
_0807B3B4: .4byte gUnk_02025EB0
|
||||
_0807B3B4: .4byte gMapBottom
|
||||
_0807B3B8: .4byte 0x0000B004
|
||||
_0807B3BC: .4byte gUnk_080B37A0
|
||||
_0807B3C0: .4byte gUnk_02019EE0
|
||||
|
||||
+14
-14
@@ -967,7 +967,7 @@ LoadRoomGfx: @ 0x0807C0DC
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, #0xc]
|
||||
bl sub_080197D4
|
||||
ldr r2, _0807C170 @ =gUnk_02025EB0
|
||||
ldr r2, _0807C170 @ =gMapBottom
|
||||
ldrh r1, [r2, #4]
|
||||
ldr r0, _0807C174 @ =0x0000FFFF
|
||||
cmp r1, r0
|
||||
@@ -994,7 +994,7 @@ _0807C160: .4byte gUnk_02019EE0
|
||||
_0807C164: .4byte gMapDataTopSpecial
|
||||
_0807C168: .4byte gArea
|
||||
_0807C16C: .4byte 0x0000085C
|
||||
_0807C170: .4byte gUnk_02025EB0
|
||||
_0807C170: .4byte gMapBottom
|
||||
_0807C174: .4byte 0x0000FFFF
|
||||
_0807C178:
|
||||
adds r0, r2, #4
|
||||
@@ -1129,10 +1129,10 @@ _0807C280:
|
||||
bl sub_0807C460
|
||||
_0807C2A0:
|
||||
bl sub_0807BC84
|
||||
ldr r4, _0807C2D4 @ =gUnk_02025EB0
|
||||
ldr r4, _0807C2D4 @ =gMapBottom
|
||||
adds r0, r4, #0
|
||||
bl sub_08080B60
|
||||
ldr r5, _0807C2D8 @ =gUnk_0200B650
|
||||
ldr r5, _0807C2D8 @ =gMapTop
|
||||
adds r0, r5, #0
|
||||
bl sub_08080B60
|
||||
mov r3, sb
|
||||
@@ -1148,8 +1148,8 @@ _0807C2A0:
|
||||
.align 2, 0
|
||||
_0807C2CC: .4byte gUnk_02027EB4
|
||||
_0807C2D0: .4byte gUnk_0200D654
|
||||
_0807C2D4: .4byte gUnk_02025EB0
|
||||
_0807C2D8: .4byte gUnk_0200B650
|
||||
_0807C2D4: .4byte gMapBottom
|
||||
_0807C2D8: .4byte gMapTop
|
||||
_0807C2DC: .4byte gUnk_02019EE0
|
||||
_0807C2E0: .4byte gMapDataTopSpecial
|
||||
_0807C2E4:
|
||||
@@ -1233,7 +1233,7 @@ _0807C358: @ jump table
|
||||
.4byte _0807C400 @ case 23
|
||||
.4byte _0807C3E4 @ case 24
|
||||
_0807C3BC:
|
||||
ldr r0, _0807C3D8 @ =gUnk_02025EB0
|
||||
ldr r0, _0807C3D8 @ =gMapBottom
|
||||
ldr r2, [r0]
|
||||
cmp r2, #0
|
||||
beq _0807C3CC
|
||||
@@ -1249,11 +1249,11 @@ _0807C3CC:
|
||||
strh r0, [r2]
|
||||
b _0807C444
|
||||
.align 2, 0
|
||||
_0807C3D8: .4byte gUnk_02025EB0
|
||||
_0807C3D8: .4byte gMapBottom
|
||||
_0807C3DC: .4byte gScreen
|
||||
_0807C3E0: .4byte 0x0000FDFF
|
||||
_0807C3E4:
|
||||
ldr r0, _0807C3F8 @ =gUnk_0200B650
|
||||
ldr r0, _0807C3F8 @ =gMapTop
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _0807C3F2
|
||||
@@ -1264,10 +1264,10 @@ _0807C3F2:
|
||||
bl sub_0807C5B0
|
||||
b _0807C444
|
||||
.align 2, 0
|
||||
_0807C3F8: .4byte gUnk_0200B650
|
||||
_0807C3F8: .4byte gMapTop
|
||||
_0807C3FC: .4byte gUnk_080B77C0
|
||||
_0807C400:
|
||||
ldr r0, _0807C44C @ =gUnk_02025EB0
|
||||
ldr r0, _0807C44C @ =gMapBottom
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _0807C40E
|
||||
@@ -1275,7 +1275,7 @@ _0807C400:
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
_0807C40E:
|
||||
ldr r0, _0807C454 @ =gUnk_0200B650
|
||||
ldr r0, _0807C454 @ =gMapTop
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _0807C41C
|
||||
@@ -1309,9 +1309,9 @@ _0807C444:
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0807C44C: .4byte gUnk_02025EB0
|
||||
_0807C44C: .4byte gMapBottom
|
||||
_0807C450: .4byte gUnk_080B77C0
|
||||
_0807C454: .4byte gUnk_0200B650
|
||||
_0807C454: .4byte gMapTop
|
||||
_0807C458: .4byte gScreen
|
||||
_0807C45C: .4byte gArea
|
||||
|
||||
|
||||
+8
-8
@@ -206,7 +206,7 @@ sub_08080BC4: @ 0x08080BC4
|
||||
adds r0, r0, r2
|
||||
ldr r1, _08080C44 @ =gUnk_080169A4
|
||||
adds r2, r0, r1
|
||||
ldr r4, _08080C48 @ =gUnk_02025EB0
|
||||
ldr r4, _08080C48 @ =gMapBottom
|
||||
ldr r1, [r4]
|
||||
cmp r1, #0
|
||||
beq _08080C16
|
||||
@@ -220,7 +220,7 @@ sub_08080BC4: @ 0x08080BC4
|
||||
adds r0, r0, r6
|
||||
strh r0, [r1, #4]
|
||||
_08080C16:
|
||||
ldr r4, _08080C4C @ =gUnk_0200B650
|
||||
ldr r4, _08080C4C @ =gMapTop
|
||||
ldr r1, [r4]
|
||||
cmp r1, #0
|
||||
beq _08080C30
|
||||
@@ -245,10 +245,10 @@ _08080C30:
|
||||
.align 2, 0
|
||||
_08080C40: .4byte gRoomControls
|
||||
_08080C44: .4byte gUnk_080169A4
|
||||
_08080C48: .4byte gUnk_02025EB0
|
||||
_08080C4C: .4byte gUnk_0200B650
|
||||
_08080C48: .4byte gMapBottom
|
||||
_08080C4C: .4byte gMapTop
|
||||
_08080C50:
|
||||
ldr r0, _08080C78 @ =gUnk_02025EB0
|
||||
ldr r0, _08080C78 @ =gMapBottom
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _08080C5E
|
||||
@@ -256,7 +256,7 @@ _08080C50:
|
||||
ldr r0, [r0]
|
||||
strh r6, [r0, #4]
|
||||
_08080C5E:
|
||||
ldr r0, _08080C7C @ =gUnk_0200B650
|
||||
ldr r0, _08080C7C @ =gMapTop
|
||||
ldr r1, [r0]
|
||||
cmp r1, #0
|
||||
beq _08080C6C
|
||||
@@ -272,8 +272,8 @@ _08080C6C:
|
||||
_08080C76:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08080C78: .4byte gUnk_02025EB0
|
||||
_08080C7C: .4byte gUnk_0200B650
|
||||
_08080C78: .4byte gMapBottom
|
||||
_08080C7C: .4byte gMapTop
|
||||
|
||||
thumb_func_start sub_08080C80
|
||||
sub_08080C80: @ 0x08080C80
|
||||
|
||||
+11
-11
@@ -74,8 +74,8 @@ _0800123E:
|
||||
ldr r3, _08001360 @ =CreateItemOnGround
|
||||
bx r3
|
||||
|
||||
non_word_aligned_thumb_func_start sub_08001242
|
||||
sub_08001242: @ 0x08001242
|
||||
non_word_aligned_thumb_func_start GenericConfused
|
||||
GenericConfused: @ 0x08001242
|
||||
push {lr}
|
||||
movs r1, #0x43
|
||||
ldrb r2, [r0, r1]
|
||||
@@ -199,18 +199,18 @@ sub_08001318: @ 0x08001318
|
||||
movs r1, #0x36
|
||||
ldrsh r1, [r0, r1]
|
||||
cmp r1, #0
|
||||
bpl sub_08001324
|
||||
bpl GenericKnockback
|
||||
movs r2, #0xff
|
||||
strb r2, [r0, #0x15]
|
||||
|
||||
thumb_func_start sub_08001324
|
||||
sub_08001324: @ 0x08001324
|
||||
ldr r3, _08001370 @ =sub_080AF18C
|
||||
thumb_func_start GenericKnockback
|
||||
GenericKnockback: @ 0x08001324
|
||||
ldr r3, _08001370 @ =Knockback1
|
||||
bx r3
|
||||
|
||||
thumb_func_start sub_08001328
|
||||
sub_08001328: @ 0x08001328
|
||||
ldr r3, _08001374 @ =sub_080AF1BC
|
||||
thumb_func_start GenericKnockback2
|
||||
GenericKnockback2: @ 0x08001328
|
||||
ldr r3, _08001374 @ =Knockback2
|
||||
bx r3
|
||||
|
||||
thumb_func_start sub_0800132C
|
||||
@@ -245,6 +245,6 @@ _08001360: .4byte CreateItemOnGround
|
||||
_08001364: .4byte 0x00001800
|
||||
_08001368: .4byte gUnk_080012C8
|
||||
_0800136C: .4byte gUnk_080012C8
|
||||
_08001370: .4byte sub_080AF18C
|
||||
_08001374: .4byte sub_080AF1BC
|
||||
_08001370: .4byte Knockback1
|
||||
_08001374: .4byte Knockback2
|
||||
_08001378: .4byte GetFacingDirection
|
||||
|
||||
+10
-10
@@ -6,8 +6,8 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_08025CD4
|
||||
sub_08025CD4: @ 0x08025CD4
|
||||
thumb_func_start ChuchuBoss_OnDeath
|
||||
ChuchuBoss_OnDeath: @ 0x08025CD4
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08078B48
|
||||
@@ -90,7 +90,7 @@ _08025D28:
|
||||
lsls r0, r0, #1
|
||||
bl SoundReq
|
||||
adds r0, r4, #0
|
||||
bl sub_0804A7D4
|
||||
bl GenericDeath
|
||||
b _08025D9C
|
||||
.align 2, 0
|
||||
_08025D80: .4byte gUnk_02034490
|
||||
@@ -127,8 +127,8 @@ _08025DBC:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08025DC0
|
||||
sub_08025DC0: @ 0x08025DC0
|
||||
thumb_func_start ChuchuBoss_OnTick
|
||||
ChuchuBoss_OnTick: @ 0x08025DC0
|
||||
push {lr}
|
||||
ldr r2, _08025DD4 @ =gUnk_080CC1B0
|
||||
ldrb r1, [r0, #0xc]
|
||||
@@ -246,7 +246,7 @@ _08025E86:
|
||||
bne _08025EAA
|
||||
_08025EA2:
|
||||
adds r0, r5, #0
|
||||
bl sub_0804A7D4
|
||||
bl GenericDeath
|
||||
b _0802605E
|
||||
_08025EAA:
|
||||
ldr r0, [r4]
|
||||
@@ -1374,7 +1374,7 @@ _0802670A:
|
||||
bl SoundReq
|
||||
_08026726:
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
_0802672C:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x76
|
||||
@@ -1556,7 +1556,7 @@ sub_0802686C: @ 0x0802686C
|
||||
cmp r5, #0
|
||||
beq _08026888
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
b _080268BE
|
||||
_08026888:
|
||||
movs r0, #0x10
|
||||
@@ -2929,7 +2929,7 @@ _080270D4:
|
||||
ldrb r0, [r0, #0xc]
|
||||
strb r0, [r5, #0x15]
|
||||
adds r0, r5, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
_080270E0:
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x85
|
||||
@@ -2989,7 +2989,7 @@ _08027110:
|
||||
b _080271FE
|
||||
_0802714A:
|
||||
adds r0, r5, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
b _080271FE
|
||||
_08027152:
|
||||
adds r0, r6, #0
|
||||
|
||||
@@ -46,11 +46,11 @@ sub_08038468: @ 0x08038468
|
||||
beq _0803847C
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
bl sub_0804A9FC
|
||||
bl Create0x68FX
|
||||
_0803847C:
|
||||
ldr r1, _080384B0 @ =gUnk_080CF4F0
|
||||
adds r0, r4, #0
|
||||
bl sub_0804AA30
|
||||
bl EnemyFunctionHandlerAfterCollision
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
@@ -601,7 +601,7 @@ _08038890:
|
||||
cmp r0, #0
|
||||
bne _080388A8
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
b _080388B2
|
||||
_080388A8:
|
||||
subs r0, #1
|
||||
|
||||
+2
-2
@@ -39,7 +39,7 @@ _08044148: .4byte gUnk_080D15A0
|
||||
sub_0804414C: @ 0x0804414C
|
||||
push {lr}
|
||||
ldr r1, _08044158 @ =gUnk_080D1588
|
||||
bl sub_0804AA30
|
||||
bl EnemyFunctionHandlerAfterCollision
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08044158: .4byte gUnk_080D1588
|
||||
@@ -113,7 +113,7 @@ sub_080441CC: @ 0x080441CC
|
||||
cmp r0, #0
|
||||
beq _080441DE
|
||||
adds r0, r4, #0
|
||||
bl sub_0804A7D4
|
||||
bl GenericDeath
|
||||
_080441DE:
|
||||
pop {r4, pc}
|
||||
|
||||
|
||||
+1
-1
@@ -172,7 +172,7 @@ _0803ECD8:
|
||||
movs r1, #0x10
|
||||
bl sub_0803E94C
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
_0803ED02:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@ _08037110:
|
||||
_0803711E:
|
||||
ldr r1, _08037128 @ =gUnk_080CF244
|
||||
adds r0, r5, #0
|
||||
bl sub_0804AA30
|
||||
bl EnemyFunctionHandlerAfterCollision
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08037128: .4byte gUnk_080CF244
|
||||
@@ -476,7 +476,7 @@ _080373C4:
|
||||
sub_080373C8: @ 0x080373C8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080AEFE0
|
||||
bl ProcessMovement2
|
||||
ldrh r0, [r4, #0x2a]
|
||||
cmp r0, #0
|
||||
beq _080373DC
|
||||
|
||||
-2059
File diff suppressed because it is too large
Load Diff
@@ -32,7 +32,7 @@ _080305E4:
|
||||
cmp r0, #0
|
||||
bne _08030608
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
cmp r0, #0
|
||||
bne _0803064A
|
||||
ldrb r0, [r4, #0x15]
|
||||
@@ -59,7 +59,7 @@ _0803061E:
|
||||
cmp r3, #0
|
||||
bne _08030638
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
cmp r0, #0
|
||||
bne _0803064A
|
||||
ldrb r0, [r4, #0x15]
|
||||
|
||||
@@ -93,7 +93,7 @@ _08030758:
|
||||
adds r2, r2, r0
|
||||
mov r0, ip
|
||||
movs r3, #0
|
||||
bl sub_080AE4CC
|
||||
bl IsTileCollision
|
||||
cmp r0, #0
|
||||
beq _0803079E
|
||||
movs r0, #4
|
||||
|
||||
@@ -148,7 +148,7 @@ _0802C442:
|
||||
cmp r5, #4
|
||||
ble _0802C460
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEFB4
|
||||
bl ProcessMovement1
|
||||
b _0802C48C
|
||||
.align 2, 0
|
||||
_0802C45C: .4byte gRoomControls
|
||||
|
||||
@@ -76,7 +76,7 @@ _0802D420:
|
||||
cmp r5, #0
|
||||
bne _0802D470
|
||||
adds r0, r4, #0
|
||||
bl sub_0804A7D4
|
||||
bl GenericDeath
|
||||
bl DeleteThisEntity
|
||||
_0802D470:
|
||||
ldr r0, [r7]
|
||||
|
||||
@@ -75,7 +75,7 @@ _080640E8:
|
||||
bl InitializeAnimation
|
||||
_0806410A:
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
adds r2, r4, #0
|
||||
|
||||
@@ -49,7 +49,7 @@ _080641E6:
|
||||
movs r0, #0x32
|
||||
ldrsh r4, [r5, r0]
|
||||
adds r0, r5, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r6, r5, #0
|
||||
|
||||
@@ -49,7 +49,7 @@ _08064306:
|
||||
movs r0, #0x2e
|
||||
ldrsh r4, [r5, r0]
|
||||
adds r0, r5, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r6, r5, #0
|
||||
|
||||
@@ -75,7 +75,7 @@ _080629B4:
|
||||
strh r1, [r0]
|
||||
_080629D2:
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r4, r3]
|
||||
adds r2, r4, #0
|
||||
|
||||
@@ -389,7 +389,7 @@ _080858E0:
|
||||
adds r0, r7, #0
|
||||
bl sub_08085EFC
|
||||
adds r0, r7, #0
|
||||
bl sub_080AF134
|
||||
bl ProcessMovement4
|
||||
ldr r1, [r7, #0x54]
|
||||
ldr r0, [r7, #0x2c]
|
||||
cmp r1, r0
|
||||
|
||||
@@ -23,12 +23,12 @@ _08023052:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7d
|
||||
strb r0, [r1]
|
||||
ldr r1, _08023068 @ =gUnk_080CBC38
|
||||
ldr r1, _08023068 @ =Moldworm_Functions
|
||||
adds r0, r4, #0
|
||||
bl EnemyFunctionHandler
|
||||
b _08023090
|
||||
.align 2, 0
|
||||
_08023068: .4byte gUnk_080CBC38
|
||||
_08023068: .4byte Moldworm_Functions
|
||||
_0802306C:
|
||||
ldr r0, [r4, #0x50]
|
||||
ldr r0, [r0, #4]
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
sub sp, #0x18
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
adds r4, r2, #0
|
||||
adds r0, #0x38
|
||||
ldrb r0, [r0]
|
||||
bl GetLayerByIndex
|
||||
ldr r1, _080AE624 @ =0x00002004
|
||||
adds r5, r0, r1
|
||||
ldr r2, [sp]
|
||||
ldr r2, [r2, #0x48]
|
||||
str r2, [sp, #8]
|
||||
ldr r0, [sp]
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r0, r2]
|
||||
ldr r2, [sp, #8]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r1, r0
|
||||
str r1, [sp, #0xc]
|
||||
ldr r0, [sp]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r0, r2]
|
||||
ldr r2, [sp, #8]
|
||||
movs r0, #1
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r1, r0
|
||||
mov sl, r1
|
||||
ldrb r0, [r2, #2]
|
||||
mov sb, r0
|
||||
ldrb r1, [r2, #3]
|
||||
mov r8, r1
|
||||
movs r0, #0xf
|
||||
ldr r2, [sp, #4]
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _080AE65C
|
||||
cmp r2, #0xf
|
||||
bhi _080AE628
|
||||
ldr r7, [sp, #0xc]
|
||||
add r7, sb
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
mov r2, sl
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
adds r6, r0, #0
|
||||
lsls r6, r6, #1
|
||||
mov r2, sl
|
||||
add r2, r8
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
subs r2, r0, r1
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #6
|
||||
b _080AE6D2
|
||||
.align 2, 0
|
||||
_080AE624: .4byte 0x00002004
|
||||
_080AE628:
|
||||
ldr r2, [sp, #0xc]
|
||||
mov r0, sb
|
||||
subs r7, r2, r0
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
mov r2, sl
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
adds r6, r0, #0
|
||||
lsls r6, r6, #1
|
||||
mov r2, sl
|
||||
add r2, r8
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
mov r1, sl
|
||||
mov r0, r8
|
||||
subs r2, r1, r0
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
b _080AE6C8
|
||||
_080AE65C:
|
||||
ldr r7, [sp, #0xc]
|
||||
add r7, sb
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
mov r2, sl
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
adds r6, r0, #0
|
||||
lsls r6, r6, #1
|
||||
mov r1, sl
|
||||
add r1, r8
|
||||
str r1, [sp, #0x10]
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
ldr r2, [sp, #0x10]
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
mov r2, sl
|
||||
mov r0, r8
|
||||
subs r2, r2, r0
|
||||
mov r8, r2
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #2
|
||||
ldr r1, [sp, #0xc]
|
||||
mov r2, sb
|
||||
subs r7, r1, r2
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
mov r2, sl
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
ldr r2, [sp, #0x10]
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
adds r0, r5, #0
|
||||
adds r1, r7, #0
|
||||
mov r2, r8
|
||||
_080AE6C8:
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #2
|
||||
_080AE6D2:
|
||||
ldr r0, [sp, #8]
|
||||
ldrb r0, [r0, #4]
|
||||
mov sb, r0
|
||||
ldr r1, [sp, #8]
|
||||
ldrb r1, [r1, #5]
|
||||
mov r8, r1
|
||||
ldr r2, [sp, #4]
|
||||
subs r2, #8
|
||||
str r2, [sp, #4]
|
||||
movs r0, #0xf
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _080AE760
|
||||
cmp r2, #0xf
|
||||
bhi _080AE72C
|
||||
mov r7, sl
|
||||
add r7, r8
|
||||
adds r0, r5, #0
|
||||
ldr r1, [sp, #0xc]
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
ldr r1, [sp, #0xc]
|
||||
add r1, sb
|
||||
adds r0, r5, #0
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
ldr r0, [sp, #0xc]
|
||||
mov r2, sb
|
||||
subs r1, r0, r2
|
||||
adds r0, r5, #0
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #5
|
||||
b _080AE7D6
|
||||
_080AE72C:
|
||||
mov r0, sl
|
||||
mov r1, r8
|
||||
subs r7, r0, r1
|
||||
lsls r6, r6, #4
|
||||
adds r0, r5, #0
|
||||
ldr r1, [sp, #0xc]
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
ldr r1, [sp, #0xc]
|
||||
add r1, sb
|
||||
adds r0, r5, #0
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
ldr r2, [sp, #0xc]
|
||||
mov r0, sb
|
||||
subs r1, r2, r0
|
||||
adds r0, r5, #0
|
||||
b _080AE7CA
|
||||
_080AE760:
|
||||
mov r7, sl
|
||||
add r7, r8
|
||||
adds r0, r5, #0
|
||||
ldr r1, [sp, #0xc]
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
ldr r1, [sp, #0xc]
|
||||
add r1, sb
|
||||
str r1, [sp, #0x14]
|
||||
adds r0, r5, #0
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
ldr r2, [sp, #0xc]
|
||||
mov r0, sb
|
||||
subs r2, r2, r0
|
||||
mov sb, r2
|
||||
adds r0, r5, #0
|
||||
mov r1, sb
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #2
|
||||
mov r1, sl
|
||||
mov r2, r8
|
||||
subs r7, r1, r2
|
||||
adds r0, r5, #0
|
||||
ldr r1, [sp, #0xc]
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
adds r0, r5, #0
|
||||
ldr r1, [sp, #0x14]
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
adds r0, r5, #0
|
||||
mov r1, sb
|
||||
_080AE7CA:
|
||||
adds r2, r7, #0
|
||||
adds r3, r4, #0
|
||||
bl IsTileCollision
|
||||
orrs r6, r0
|
||||
lsls r6, r6, #1
|
||||
_080AE7D6:
|
||||
ldr r0, [sp]
|
||||
strh r6, [r0, #0x2a]
|
||||
add sp, #0x18
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -0,0 +1,129 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #8
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AE904
|
||||
cmp r2, #0
|
||||
bne _080AE99E
|
||||
_080AE904:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AE928
|
||||
ldr r1, _080AE924 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AE98A
|
||||
.align 2, 0
|
||||
_080AE924: .4byte gSineTable
|
||||
_080AE928:
|
||||
mov r2, ip
|
||||
cmp r2, #2
|
||||
bne _080AE942
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AE95C
|
||||
_080AE942:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #7
|
||||
cmp r3, r0
|
||||
bne _080AE95C
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AE95C:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AE97E
|
||||
ldr r1, _080AE9B4 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AE97E:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #8
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AE99E
|
||||
ldr r1, _080AE9B4 @ =gSineTable
|
||||
_080AE98A:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AE99E:
|
||||
ldr r2, _080AE9B8 @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AE9BC @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AE9C0
|
||||
ldr r2, _080AE9B8 @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AE9C0
|
||||
movs r0, #0
|
||||
b _080AE9C2
|
||||
.align 2, 0
|
||||
_080AE9B4: .4byte gSineTable
|
||||
_080AE9B8: .4byte 0x00003333
|
||||
_080AE9BC: .4byte 0x00006665
|
||||
_080AE9C0:
|
||||
movs r0, #1
|
||||
_080AE9C2:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -0,0 +1,129 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #4
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AEEC0
|
||||
cmp r2, #0
|
||||
bne _080AEF5A
|
||||
_080AEEC0:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AEEE4
|
||||
ldr r1, _080AEEE0 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AEF46
|
||||
.align 2, 0
|
||||
_080AEEE0: .4byte gSineTable
|
||||
_080AEEE4:
|
||||
mov r2, ip
|
||||
cmp r2, #4
|
||||
bne _080AEEFE
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AEF18
|
||||
_080AEEFE:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #3
|
||||
cmp r3, r0
|
||||
bne _080AEF18
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AEF18:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEF3A
|
||||
ldr r1, _080AEF70 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AEF3A:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #4
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEF5A
|
||||
ldr r1, _080AEF70 @ =gSineTable
|
||||
_080AEF46:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AEF5A:
|
||||
ldr r2, _080AEF74 @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AEF78 @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AEF7C
|
||||
ldr r2, _080AEF74 @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AEF7C
|
||||
movs r0, #0
|
||||
b _080AEF7E
|
||||
.align 2, 0
|
||||
_080AEF70: .4byte gSineTable
|
||||
_080AEF74: .4byte 0x00003333
|
||||
_080AEF78: .4byte 0x00006665
|
||||
_080AEF7C:
|
||||
movs r0, #1
|
||||
_080AEF7E:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -0,0 +1,129 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe0
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #8
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AEAEC
|
||||
cmp r2, #0
|
||||
bne _080AEB86
|
||||
_080AEAEC:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AEB10
|
||||
ldr r1, _080AEB0C @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AEB72
|
||||
.align 2, 0
|
||||
_080AEB0C: .4byte gSineTable
|
||||
_080AEB10:
|
||||
mov r2, ip
|
||||
cmp r2, #0x20
|
||||
bne _080AEB2A
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xc
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AEB44
|
||||
_080AEB2A:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #6
|
||||
cmp r3, r0
|
||||
bne _080AEB44
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xc
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AEB44:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe0
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEB66
|
||||
ldr r1, _080AEB9C @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AEB66:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #8
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEB86
|
||||
ldr r1, _080AEB9C @ =gSineTable
|
||||
_080AEB72:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AEB86:
|
||||
ldr r2, _080AEBA0 @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AEBA4 @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AEBA8
|
||||
ldr r2, _080AEBA0 @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AEBA8
|
||||
movs r0, #0
|
||||
b _080AEBAA
|
||||
.align 2, 0
|
||||
_080AEB9C: .4byte gSineTable
|
||||
_080AEBA0: .4byte 0x00003333
|
||||
_080AEBA4: .4byte 0x00006665
|
||||
_080AEBA8:
|
||||
movs r0, #1
|
||||
_080AEBAA:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -0,0 +1,129 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe0
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #4
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AECD8
|
||||
cmp r2, #0
|
||||
bne _080AED72
|
||||
_080AECD8:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AECFC
|
||||
ldr r1, _080AECF8 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AED5E
|
||||
.align 2, 0
|
||||
_080AECF8: .4byte gSineTable
|
||||
_080AECFC:
|
||||
mov r2, ip
|
||||
cmp r2, #0x40
|
||||
bne _080AED16
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x14
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AED30
|
||||
_080AED16:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #2
|
||||
cmp r3, r0
|
||||
bne _080AED30
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x14
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AED30:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe0
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AED52
|
||||
ldr r1, _080AED88 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AED52:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #4
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AED72
|
||||
ldr r1, _080AED88 @ =gSineTable
|
||||
_080AED5E:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AED72:
|
||||
ldr r2, _080AED8C @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AED90 @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AED94
|
||||
ldr r2, _080AED8C @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AED94
|
||||
movs r0, #0
|
||||
b _080AED96
|
||||
.align 2, 0
|
||||
_080AED88: .4byte gSineTable
|
||||
_080AED8C: .4byte 0x00003333
|
||||
_080AED90: .4byte 0x00006665
|
||||
_080AED94:
|
||||
movs r0, #1
|
||||
_080AED96:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -64,7 +64,7 @@ _08061040:
|
||||
adds r1, r5, #0
|
||||
adds r2, r4, #0
|
||||
movs r3, #6
|
||||
bl sub_080AE4CC
|
||||
bl IsTileCollision
|
||||
cmp r0, #0
|
||||
beq _08061064
|
||||
movs r0, #0
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
adds r4, r0, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
adds r0, r4, #0
|
||||
bl sub_080AF1EC
|
||||
bl ProcessMovement6
|
||||
cmp r0, #0
|
||||
bne _080611CA
|
||||
adds r0, r4, #0
|
||||
|
||||
@@ -56,7 +56,7 @@ _08035764:
|
||||
cmp r2, #0
|
||||
bne _0803579E
|
||||
adds r0, r4, #0
|
||||
bl sub_0804A7D4
|
||||
bl GenericDeath
|
||||
b _080359A6
|
||||
_0803579E:
|
||||
str r2, [r4, #0x64]
|
||||
|
||||
@@ -127,7 +127,7 @@ _080ACE90:
|
||||
strh r1, [r4, #0x24]
|
||||
_080ACEA4:
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEFB4
|
||||
bl ProcessMovement1
|
||||
b _080ACEB6
|
||||
.align 2, 0
|
||||
_080ACEAC: .4byte gUnk_0812AAE8
|
||||
|
||||
@@ -66,7 +66,7 @@ _080AD0B4:
|
||||
cmp r0, #0x26
|
||||
beq _080AD0C8
|
||||
adds r0, r4, #0
|
||||
bl sub_080AF00C
|
||||
bl ProcessMovement10
|
||||
_080AD0C8:
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
movs r1, #2
|
||||
bl UpdateAnimationVariableFrames
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement
|
||||
bl ProcessMovement0
|
||||
cmp r0, #0
|
||||
bne _08038334
|
||||
adds r0, r4, #0
|
||||
|
||||
@@ -100,11 +100,11 @@ _080393F8:
|
||||
beq _0803940A
|
||||
adds r0, r5, #0
|
||||
movs r1, #0x1c
|
||||
bl sub_0804A9FC
|
||||
bl Create0x68FX
|
||||
_0803940A:
|
||||
ldr r1, _08039414 @ =Stalfos_Functions
|
||||
adds r0, r5, #0
|
||||
bl sub_0804AA30
|
||||
bl EnemyFunctionHandlerAfterCollision
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08039414: .4byte Stalfos_Functions
|
||||
|
||||
+1
-1
@@ -334,7 +334,7 @@ _0808D8EE:
|
||||
strb r0, [r4, #0x18]
|
||||
_0808D910:
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEFB4
|
||||
bl ProcessMovement1
|
||||
bl AnyPrioritySet
|
||||
cmp r0, #0
|
||||
bne _0808D954
|
||||
|
||||
+1
-1
@@ -212,7 +212,7 @@ _0809EFE6:
|
||||
adds r1, r6, #0
|
||||
adds r2, r5, #0
|
||||
movs r3, #9
|
||||
bl sub_080AE4CC
|
||||
bl IsTileCollision
|
||||
cmp r0, #0
|
||||
beq _0809EFE6
|
||||
subs r0, r7, #1
|
||||
|
||||
@@ -135,7 +135,7 @@ sub_0808776C: @ 0x0808776C
|
||||
_08087784: .4byte gPlayerState
|
||||
_08087788:
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEFE0
|
||||
bl ProcessMovement2
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #6
|
||||
adds r0, r4, #0
|
||||
|
||||
@@ -276,7 +276,7 @@ _0809FC8A:
|
||||
strb r0, [r4, #0x18]
|
||||
_0809FCAC:
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEFB4
|
||||
bl ProcessMovement1
|
||||
bl AnyPrioritySet
|
||||
cmp r0, #0
|
||||
bne _0809FCF8
|
||||
|
||||
+8
-8
@@ -4893,10 +4893,10 @@ Subtask_FadeIn: @ 0x080A7250
|
||||
ldr r0, _080A731C @ =gCurrentRoomProperties
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, #0x10]
|
||||
ldr r0, _080A7320 @ =gUnk_02025EB0
|
||||
ldr r0, _080A7320 @ =gMapBottom
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, #0x14]
|
||||
ldr r0, _080A7324 @ =gUnk_0200B650
|
||||
ldr r0, _080A7324 @ =gMapTop
|
||||
ldr r0, [r0]
|
||||
str r0, [r1, #0x18]
|
||||
movs r0, #1
|
||||
@@ -4918,8 +4918,8 @@ _080A7310: .4byte gActiveScriptInfo
|
||||
_080A7314: .4byte gRoomTransition
|
||||
_080A7318: .4byte gPlayerState
|
||||
_080A731C: .4byte gCurrentRoomProperties
|
||||
_080A7320: .4byte gUnk_02025EB0
|
||||
_080A7324: .4byte gUnk_0200B650
|
||||
_080A7320: .4byte gMapBottom
|
||||
_080A7324: .4byte gMapTop
|
||||
|
||||
thumb_func_start Subtask_Init
|
||||
Subtask_Init: @ 0x080A7328
|
||||
@@ -4991,10 +4991,10 @@ _080A73B4:
|
||||
ldrb r1, [r5, #0xc]
|
||||
adds r0, #0x8b
|
||||
strb r1, [r0]
|
||||
ldr r1, _080A7478 @ =gUnk_02025EB0
|
||||
ldr r1, _080A7478 @ =gMapBottom
|
||||
ldr r0, [r5, #0x14]
|
||||
str r0, [r1]
|
||||
ldr r1, _080A747C @ =gUnk_0200B650
|
||||
ldr r1, _080A747C @ =gMapTop
|
||||
ldr r0, [r5, #0x18]
|
||||
str r0, [r1]
|
||||
movs r1, #0xea
|
||||
@@ -5061,8 +5061,8 @@ _080A7468: .4byte gFadeControl
|
||||
_080A746C: .4byte gCurrentRoomProperties
|
||||
_080A7470: .4byte gUnk_02032EC0
|
||||
_080A7474: .4byte gPlayerState
|
||||
_080A7478: .4byte gUnk_02025EB0
|
||||
_080A747C: .4byte gUnk_0200B650
|
||||
_080A7478: .4byte gMapBottom
|
||||
_080A747C: .4byte gMapTop
|
||||
_080A7480: .4byte gActiveScriptInfo
|
||||
_080A7484: .4byte gUnk_03000420
|
||||
_080A7488: .4byte gPaletteList
|
||||
|
||||
+4
-4
@@ -88,7 +88,7 @@ UpdateScrollVram: @ 0x08000108
|
||||
beq _08000136
|
||||
add r4, pc, #0x20
|
||||
ldr r4, [r4, r1]
|
||||
ldr r0, _080001EC @ =gUnk_02025EB0
|
||||
ldr r0, _080001EC @ =gMapBottom
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08000126
|
||||
@@ -96,7 +96,7 @@ UpdateScrollVram: @ 0x08000108
|
||||
ldr r1, _080001F4 @ =gUnk_02021F70
|
||||
bl _call_via_r4
|
||||
_08000126:
|
||||
ldr r0, _080001F8 @ =gUnk_0200B650
|
||||
ldr r0, _080001F8 @ =gMapTop
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08000136
|
||||
@@ -196,10 +196,10 @@ GetTileIndex: @ 0x080001DA
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080001E8: .4byte gUpdateVisibleTiles
|
||||
_080001EC: .4byte gUnk_02025EB0
|
||||
_080001EC: .4byte gMapBottom
|
||||
_080001F0: .4byte gUnk_02019EE0
|
||||
_080001F4: .4byte gUnk_02021F70
|
||||
_080001F8: .4byte gUnk_0200B650
|
||||
_080001F8: .4byte gMapTop
|
||||
_080001FC: .4byte gMapDataTopSpecial
|
||||
_08000200: .4byte gUnk_020344F0
|
||||
_08000204: .4byte gUnk_08000248
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080CE56C:: @ 080CE56C
|
||||
.4byte sub_080318C4
|
||||
.4byte sub_080318DC
|
||||
.4byte sub_08031A60
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_154
|
||||
AcroBandit_Functions:: @ 080CE56C
|
||||
.4byte AcroBandit_OnTick
|
||||
.4byte AcroBandit_OnCollision
|
||||
.4byte AcroBandit_OnKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte AcroBandit_OnGrabbed
|
||||
|
||||
gUnk_080CE584:: @ 080CE584
|
||||
.4byte sub_08031A88
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
gUnk_080CF4F0:: @ 080CF4F0
|
||||
.4byte sub_08038450
|
||||
.4byte sub_08038468
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte nullsub_163
|
||||
|
||||
gUnk_080CF508:: @ 080CF508
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
gUnk_080D1588:: @ 080D1588
|
||||
.4byte sub_08044134
|
||||
.4byte sub_0804414C
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte sub_0804415C
|
||||
|
||||
gUnk_080D15A0:: @ 080D15A0
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080D0880:: @ 080D0880
|
||||
.4byte sub_0803EAFC
|
||||
.4byte sub_0803EB14
|
||||
.4byte sub_0803EB24
|
||||
.4byte sub_0803EB34
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_21
|
||||
Enemy4D_Functions:: @ 080D0880
|
||||
.4byte Enemy4D_OnTick
|
||||
.4byte Enemy4D_OnCollision
|
||||
.4byte Enemy4D_OnKnockback
|
||||
.4byte Enemy4D_OnDeath
|
||||
.4byte GenericConfused
|
||||
.4byte Enemy4D_OnGrabbed
|
||||
|
||||
gUnk_080D0898:: @ 080D0898
|
||||
.4byte sub_0803EB44
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080D17E8:: @ 080D17E8
|
||||
.4byte sub_080453A4
|
||||
.4byte sub_080453BC
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_172
|
||||
FireballGuy_Functions:: @ 080D17E8
|
||||
.4byte FireballGuy_OnTick
|
||||
.4byte FireballGuy_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte FireballGuy_OnGrabbed
|
||||
|
||||
gUnk_080D1800:: @ 080D1800
|
||||
.4byte sub_080453E8
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
gUnk_080CF244:: @ 080CF244
|
||||
.4byte sub_0803708C
|
||||
.4byte sub_080370A4
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte sub_0803712C
|
||||
|
||||
gUnk_080CF25C:: @ 080CF25C
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
.align 2
|
||||
|
||||
|
||||
gUnk_080CD748:: @ 080CD748
|
||||
.4byte sub_0802D394
|
||||
.4byte sub_0802D394
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0802D034
|
||||
.4byte sub_08001242
|
||||
Gleerok_Functions:: @ 080CD748
|
||||
.4byte Gleerok_OnTick
|
||||
.4byte Gleerok_OnTick
|
||||
.4byte GenericKnockback
|
||||
.4byte Gleerok_OnDeath
|
||||
.4byte GenericConfused
|
||||
|
||||
gUnk_080CD75C:: @ 080CD75C
|
||||
.4byte sub_0802D158
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080CE7B0:: @ 080CE7B0
|
||||
.4byte sub_080323DC
|
||||
.4byte sub_080323F4
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_155
|
||||
Keaton_Functions:: @ 080CE7B0
|
||||
.4byte Keaton_OnTick
|
||||
.4byte Keaton_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte Keaton_OnGrabbed
|
||||
|
||||
gUnk_080CE7C8:: @ 080CE7C8
|
||||
.4byte sub_08032468
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080D1868:: @ 080D1868
|
||||
.4byte sub_080455BC
|
||||
.4byte sub_080455D4
|
||||
.4byte sub_08001324
|
||||
.4byte sub_080455E4
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_23
|
||||
MiniFireballGuy_Functions:: @ 080D1868
|
||||
.4byte MiniFireballGuy_OnTick
|
||||
.4byte MiniFireballGuy_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte MiniFireballGuy_OnDeath
|
||||
.4byte GenericConfused
|
||||
.4byte MiniFireballGuy_OnGrabbed
|
||||
|
||||
gUnk_080D1880:: @ 080D1880
|
||||
.4byte sub_08045618
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080D17C0:: @ 080D17C0
|
||||
.4byte sub_08045220
|
||||
.4byte sub_08045238
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804525C
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_22
|
||||
MiniSlime_Functions:: @ 080D17C0
|
||||
.4byte MiniSlime_OnTick
|
||||
.4byte MiniSlime_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte MiniSlime_OnDeath
|
||||
.4byte GenericConfused
|
||||
.4byte MiniSlime_OnGrabbed
|
||||
|
||||
gUnk_080D17D8:: @ 080D17D8
|
||||
.4byte sub_080452A4
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gRope:: @ 080CE448
|
||||
Rope_Functions:: @ 080CE448
|
||||
.4byte Rope_OnTick+1
|
||||
.4byte sub_080313AC
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte sub_080313E8
|
||||
.4byte Rope_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte Rope_OnGrabbed
|
||||
|
||||
gUnk_080CE460:: @ 080CE460
|
||||
.4byte sub_08031434
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080CF4C8:: @ 080CF4C8
|
||||
RopeGolden_Functions:: @ 080CF4C8
|
||||
.4byte RopeGolden_OnTick+1
|
||||
.4byte sub_08038210
|
||||
.4byte sub_08001324
|
||||
.4byte sub_08038234
|
||||
.4byte sub_08001242
|
||||
.4byte RopeGolden_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte RopeGolden_OnDeath
|
||||
.4byte GenericConfused
|
||||
.4byte RopeGolden_OnTick+1
|
||||
|
||||
gUnk_080CF4E0:: @ 080CF4E0
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080D16A4:: @ 080D16A4
|
||||
.4byte sub_08044F70
|
||||
.4byte sub_08044F88
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_171
|
||||
Slime_Functions:: @ 080D16A4
|
||||
.4byte Slime_OnTick
|
||||
.4byte Slime_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte Slime_OnGrabbed
|
||||
|
||||
gUnk_080D16BC:: @ 080D16BC
|
||||
.4byte sub_08044FC8
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080CE530:: @ 080CE530
|
||||
.4byte sub_08031680
|
||||
.4byte nullsub_152
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte sub_0803169C
|
||||
SmallPesto_Functions:: @ 080CE530
|
||||
.4byte SmallPesto_OnTick
|
||||
.4byte SmallPesto_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte SmallPesto_OnGrabbed
|
||||
|
||||
gUnk_080CE548:: @ 080CE548
|
||||
.4byte sub_08031704
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080CDED0:: @ 080CDED0
|
||||
.4byte sub_0802F138
|
||||
.4byte sub_0802F150
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_0802F1F0
|
||||
.4byte nullsub_16
|
||||
Tektite_Functions:: @ 080CDED0
|
||||
.4byte Tektite_OnTick
|
||||
.4byte Tektite_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte Tektite_OnConfused
|
||||
.4byte Tektite_OnGrabbed
|
||||
|
||||
gUnk_080CDEE8:: @ 080CDEE8
|
||||
.4byte sub_0802F210
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080CF4A0:: @ 080CF4A0
|
||||
.4byte sub_08037EE8
|
||||
.4byte sub_08037F00
|
||||
.4byte sub_08001324
|
||||
.4byte sub_08037F58
|
||||
.4byte sub_08037F84
|
||||
.4byte sub_08037EE8
|
||||
TektiteGolden_Functions:: @ 080CF4A0
|
||||
.4byte TektiteGolden_OnTick
|
||||
.4byte TektiteGolden_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte TektiteGolden_OnDeath
|
||||
.4byte TektiteGolden_OnConfused
|
||||
.4byte TektiteGolden_OnTick
|
||||
|
||||
gUnk_080CF4B8:: @ 080CF4B8
|
||||
.4byte sub_08037FA0
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080CEB74:: @ 080CEB74
|
||||
.4byte sub_0803354C
|
||||
.4byte sub_08033564
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte sub_0803362C
|
||||
Wisp_Functions:: @ 080CEB74
|
||||
.4byte Wisp_OnTick
|
||||
.4byte Wisp_OnCollision
|
||||
.4byte GenericKnockback
|
||||
.4byte GenericDeath
|
||||
.4byte GenericConfused
|
||||
.4byte Wisp_OnGrabbed
|
||||
|
||||
gUnk_080CEB8C:: @ 080CEB8C
|
||||
.4byte sub_08033674
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
|
||||
gUnk_08133368:: @ 08133368
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_08132B30/gUnk_08133368_EU.bin"
|
||||
.else
|
||||
.incbin "data_08132B30/gUnk_08133368_1_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
@@ -1,93 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
|
||||
gUnk_08133368:: @ 08133368
|
||||
.ifdef EU
|
||||
@ TODO only small differences
|
||||
.incbin "data_08132B30/gUnk_08133368_EU.bin"
|
||||
.else
|
||||
.incbin "data_08132B30/gUnk_08133368_1_USA-JP-DEMO_USA-DEMO_JP.bin"
|
||||
.endif
|
||||
|
||||
gUnk_08133918:: @ 08133918
|
||||
.incbin "data_08132B30/gUnk_08133918.bin"
|
||||
|
||||
gUnk_08133938:: @ 08133938
|
||||
.incbin "data_08132B30/gUnk_08133938.bin"
|
||||
|
||||
gUnk_08133958:: @ 08133958
|
||||
.incbin "data_08132B30/gUnk_08133958.bin"
|
||||
|
||||
gUnk_08133978:: @ 08133978
|
||||
.incbin "data_08132B30/gUnk_08133978.bin"
|
||||
|
||||
gUnk_08133998:: @ 08133998
|
||||
.incbin "data_08132B30/gUnk_08133998.bin"
|
||||
|
||||
gUnk_081339B8:: @ 081339B8
|
||||
.incbin "data_08132B30/gUnk_081339B8.bin"
|
||||
|
||||
gUnk_081339D8:: @ 081339D8
|
||||
.incbin "data_08132B30/gUnk_081339D8.bin"
|
||||
|
||||
gUnk_081339F8:: @ 081339F8
|
||||
.incbin "data_08132B30/gUnk_081339F8.bin"
|
||||
|
||||
gUnk_08133A18:: @ 08133A18
|
||||
.4byte sub_080AE3E4
|
||||
.4byte sub_080AE3E8
|
||||
.4byte sub_080AE3EC
|
||||
.4byte sub_080AE408
|
||||
.4byte sub_080AE424
|
||||
.4byte sub_080AE440
|
||||
.4byte sub_080AE45C
|
||||
.4byte sub_080AE478
|
||||
.4byte sub_080AE494
|
||||
.4byte sub_080AE4B0
|
||||
|
||||
gUnk_08133A40:: @ 08133A40
|
||||
.incbin "data_08132B30/gUnk_08133A40.bin"
|
||||
|
||||
gUnk_08133A5A:: @ 08133A5A
|
||||
.incbin "data_08132B30/gUnk_08133A5A.bin"
|
||||
|
||||
gUnk_08133A67:: @ 08133A67
|
||||
.incbin "data_08132B30/gUnk_08133A67.bin"
|
||||
|
||||
gUnk_08133F48:: @ 08133F48
|
||||
.4byte sub_080AE800
|
||||
.4byte sub_080AE8D8
|
||||
.4byte sub_080AE8D8
|
||||
.4byte sub_080AE8D8
|
||||
.4byte sub_080AE8D8
|
||||
.4byte sub_080AE8D8
|
||||
.4byte sub_080AE8D8
|
||||
.4byte sub_080AE8D8
|
||||
.4byte sub_080AE9CC
|
||||
.4byte sub_080AEAC0
|
||||
.4byte sub_080AEAC0
|
||||
.4byte sub_080AEAC0
|
||||
.4byte sub_080AEAC0
|
||||
.4byte sub_080AEAC0
|
||||
.4byte sub_080AEAC0
|
||||
.4byte sub_080AEAC0
|
||||
.4byte sub_080AEBB4
|
||||
.4byte sub_080AECAC
|
||||
.4byte sub_080AECAC
|
||||
.4byte sub_080AECAC
|
||||
.4byte sub_080AECAC
|
||||
.4byte sub_080AECAC
|
||||
.4byte sub_080AECAC
|
||||
.4byte sub_080AECAC
|
||||
.4byte sub_080AEDA0
|
||||
.4byte sub_080AEE94
|
||||
.4byte sub_080AEE94
|
||||
.4byte sub_080AEE94
|
||||
.4byte sub_080AEE94
|
||||
.4byte sub_080AEE94
|
||||
.4byte sub_080AEE94
|
||||
.4byte sub_080AEE94
|
||||
+2
-2
@@ -13,9 +13,9 @@ extern void UpdateScrollVram(void);
|
||||
extern u32 sub_080002D0(struct Entity_*);
|
||||
extern u32 sub_080002F0(u32, u32, u32);
|
||||
extern void LoadResourceAsync(const void*, u32, u32);
|
||||
extern void sub_08001242(struct Entity_*);
|
||||
extern void GenericConfused(struct Entity_*);
|
||||
extern void sub_08001290(struct Entity_*, u32);
|
||||
extern void sub_08001324(struct Entity_*);
|
||||
extern void GenericKnockback(struct Entity_*);
|
||||
extern u32 sub_08002632(struct Entity_*);
|
||||
extern u32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY);
|
||||
extern u32 GravityUpdate(struct Entity_*, u32);
|
||||
|
||||
+3
-3
@@ -15,14 +15,14 @@
|
||||
bool32 EnemyInit(Entity* this);
|
||||
extern u32 GetNextFunction(Entity*);
|
||||
extern void EnemyFunctionHandler(Entity*, EntityActionArray);
|
||||
extern void sub_08001324(Entity*);
|
||||
extern void GenericKnockback(Entity*);
|
||||
extern Entity* CreateDeathFx(Entity*, u32, u32);
|
||||
|
||||
extern Entity* sub_0804A9FC(Entity*, u32);
|
||||
extern Entity* Create0x68FX(Entity*, u32);
|
||||
extern void SetChildOffset(Entity*, s32, s32, s32);
|
||||
extern Entity* CreateProjectileWithParent(Entity*, u8, u8);
|
||||
|
||||
extern void sub_0804A7D4(Entity*);
|
||||
extern void GenericDeath(Entity*);
|
||||
extern void sub_08002724(void*, u8*);
|
||||
extern void sub_080026C4(u8*, u8*, u8*, u32);
|
||||
extern void sub_080026F2(u8*, void*, u8*, u32);
|
||||
|
||||
+8
-4
@@ -66,9 +66,13 @@ typedef enum {
|
||||
/** Direction. */
|
||||
typedef enum {
|
||||
DirectionNorth = 0x00, /**< North. */
|
||||
DirectionNorthEast = 0x04, /**< North East. */
|
||||
DirectionEast = 0x08, /**< East. */
|
||||
DirectionSouthEast = 0x0c, /**< South East. */
|
||||
DirectionSouth = 0x10, /**< South. */
|
||||
DirectionSouthWest = 0x14, /**< South West. */
|
||||
DirectionWest = 0x18, /**< West. */
|
||||
DirectionNorthWest = 0x1c, /**< North West. */
|
||||
} Direction;
|
||||
|
||||
typedef struct {
|
||||
@@ -170,7 +174,7 @@ typedef struct Entity_ {
|
||||
/*0x34*/ union SplitWord z; /**< Z position, fixed point Q16.16. */
|
||||
/*0x38*/ u8 collisionLayer; /**< Collision layer. */
|
||||
/*0x39*/ s8 interactType;
|
||||
/*0x3a*/ u8 field_0x3a;
|
||||
/*0x3a*/ u8 field_0x3a; /**< 4: grabbed by GustJar */
|
||||
/*0x3b*/ u8 flags2;
|
||||
/*0x3c*/ u8 field_0x3c;
|
||||
/*0x3d*/ s8 iframes; /**< Invulnerability frames. */
|
||||
@@ -179,10 +183,10 @@ typedef struct Entity_ {
|
||||
/*0x40*/ u8 hurtType; /**< behavior as a collision receiver. */
|
||||
/*0x41*/ u8 bitfield;
|
||||
/*0x42*/ u8 knockbackDuration; /**< Duration of knockback. */
|
||||
/*0x43*/ u8 field_0x43;
|
||||
/*0x43*/ u8 confusedTime; /**< Frames that this Entity is confused. */
|
||||
/*0x44*/ u8 damage; /**< Damage this Entity inflicts. */
|
||||
/*0x45*/ u8 health; /**< Health of this Entity. */
|
||||
/*0x46*/ u16 field_0x46;
|
||||
/*0x46*/ u16 knockbackSpeed; /**< How fast this Entity is knocked back. */
|
||||
/*0x48*/ Hitbox* hitbox; /**< Hitbox associated with this Entity. */
|
||||
/*0x4c*/ struct Entity_* field_0x4c;
|
||||
/*0x50*/ struct Entity_* parent; /**< Parent Entity. Sometimes points to associated data. */
|
||||
@@ -271,7 +275,7 @@ u8* GetSpriteSubEntryOffsetDataPointer(u32, u32);
|
||||
*/
|
||||
u32 GetFacingDirection(Entity* origin, Entity* target);
|
||||
|
||||
u32 ProcessMovement(Entity*);
|
||||
bool32 ProcessMovement0(Entity*);
|
||||
|
||||
/// @{
|
||||
/**
|
||||
|
||||
+180
-146
@@ -10,170 +10,204 @@
|
||||
#include "room.h"
|
||||
#include "structures.h"
|
||||
#include "script.h"
|
||||
#include "map.h"
|
||||
|
||||
// Identified - to be sorted into header files
|
||||
extern void SetDirtTile(u32);
|
||||
extern bool32 LoadFixedGFX(Entity*, u32);
|
||||
extern void MenuFadeIn(u32, u32);
|
||||
extern void TryLoadPrologueHyruleTown(void);
|
||||
extern void CalculateEntityTileCollisions(Entity*, u32, u32);
|
||||
extern void CopyOAM(void);
|
||||
extern void CreateChestSpawner(Entity*);
|
||||
extern void CreateItemOnGround(Entity*);
|
||||
extern void CreateRandomItemDrop(Entity*, s32);
|
||||
extern void DrawDirect(u32, u32); // trampoline to sub_080B27F4
|
||||
extern void DrawEntities(void);
|
||||
extern void DrawOAMCmd(void);
|
||||
extern void EnemyFunctionHandlerAfterCollision(Entity*, void (*const[])());
|
||||
extern u32 EntityWithinDistance(Entity*, s32, s32, s32);
|
||||
extern void FlushSprites(void);
|
||||
extern void GenericKnockback2(Entity*);
|
||||
extern LayerStruct* GetLayerByIndex(u32);
|
||||
extern u32 GetTileIndex(u32, u32);
|
||||
extern u32 IsColliding(Entity*, Entity*);
|
||||
extern u32 IsColliding(Entity*, Entity*);
|
||||
extern u32 IsCollidingPlayer(Entity*);
|
||||
extern bool32 IsProjectileOffScreen(Entity*);
|
||||
extern bool32 IsTileCollision(u8*, s32, s32, u32);
|
||||
extern void LinearMoveAngle(Entity*, u32, u32);
|
||||
extern void LinearMoveDirection(Entity*, u32, u32);
|
||||
extern bool32 LoadFixedGFX(Entity*, u32);
|
||||
extern bool32 LoadSwapGFX(Entity*, u16, u32);
|
||||
extern void MenuFadeIn(u32, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern bool32 ProcessMovement1(Entity*);
|
||||
extern bool32 ProcessMovement12(Entity*);
|
||||
extern bool32 ProcessMovement2(Entity*);
|
||||
extern bool32 ProcessMovement3(Entity*);
|
||||
extern bool32 ProcessMovement4(Entity*);
|
||||
extern bool32 ProcessMovement5(Entity*);
|
||||
extern bool32 ProcessMovement6(Entity*);
|
||||
extern bool32 ProcessMovementInternal(Entity*, s32, s32, u32);
|
||||
extern void SetDirtTile(u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void TryLoadPrologueHyruleTown(void);
|
||||
extern void UnloadOBJPalette(Entity*);
|
||||
extern void UpdateItemAnim(ItemBehavior*);
|
||||
|
||||
// Unidentified
|
||||
extern void sub_0805EC9C(Entity*, u32, u32, u32);
|
||||
extern void sub_0805EC60(Entity*);
|
||||
extern void sub_0806D0B0(Entity*);
|
||||
extern void sub_0806D02C(Entity*);
|
||||
extern void sub_0806FD3C(Entity*);
|
||||
extern void sub_0805ED14(u32*);
|
||||
extern void sub_080A7C18(u32, u32, u32);
|
||||
extern void sub_0804AA30(Entity*, void (*const[])());
|
||||
extern void sub_0804A720(Entity*);
|
||||
extern u32 sub_080AEFE0(Entity*);
|
||||
extern void sub_08000148(u32, u32, u32);
|
||||
extern u32 sub_080002A8(u32, u32, u32);
|
||||
extern u32 sub_080002B4(Entity*, u32, u32);
|
||||
extern u32 sub_080002B8(Entity*);
|
||||
extern u32 sub_080002C8(u16, u8);
|
||||
extern u32 sub_080002CC(Entity*, s32, s32);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern u32 sub_080002E0(u32, u32);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern u32 sub_0800132C(Entity*, Entity*);
|
||||
extern u32 sub_080040A2(Entity*);
|
||||
extern u32 sub_080040D8(Entity*, u8*, s32, s32);
|
||||
extern void sub_08004168(Entity*);
|
||||
extern u32 sub_0800419C(Entity*, Entity*, u32, u32);
|
||||
extern u32 sub_080041DC(Entity*, u32, u32);
|
||||
extern void sub_080042BA(Entity*, u32);
|
||||
extern void sub_080042D0(Entity*, u32, u16);
|
||||
extern void sub_080043A8(Entity*);
|
||||
extern u32 sub_0800445C(Entity*);
|
||||
extern void sub_080044AE(Entity*, u32, u32);
|
||||
extern u32 sub_080044EC(Entity*, u32);
|
||||
extern void sub_0800451C(Entity*);
|
||||
extern void sub_08004542(Entity*);
|
||||
extern void sub_080085B0(Entity*);
|
||||
extern void sub_08008796(Entity*, u32, u32, u32);
|
||||
extern void sub_08016AD2(Entity*);
|
||||
extern u32 sub_0801766C(Entity*);
|
||||
extern void sub_0801AF18(u8*, u32, u32);
|
||||
extern void sub_0801AFE4(void);
|
||||
extern void sub_0801C1D4(void);
|
||||
extern void sub_0801E104(void);
|
||||
extern void sub_08030118(u32);
|
||||
extern u32 sub_08031E04(Entity*);
|
||||
extern void sub_08031E48(Entity*, Entity*);
|
||||
extern void sub_08032290(Entity*);
|
||||
extern u32 sub_080322A4(Entity*);
|
||||
extern void sub_080322E8(Entity*);
|
||||
extern void sub_08032338(Entity*);
|
||||
extern void sub_0803C0AC(Entity*);
|
||||
extern Entity* sub_08049DF4(u32);
|
||||
extern u32 sub_08049EE4(Entity*);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern u32 sub_08049F84(Entity*, u32);
|
||||
extern u32 sub_08049FA0(Entity*);
|
||||
extern u32 sub_08049FDC(Entity*, u32);
|
||||
extern u32 sub_08049EE4(Entity*);
|
||||
extern void sub_08077E54(ItemBehavior*);
|
||||
extern void sub_080042BA(Entity*, u32);
|
||||
extern bool32 sub_08077F24(ItemBehavior*, u32);
|
||||
extern void sub_08079184();
|
||||
extern void sub_08077F50(ItemBehavior* beh, u32 arg1);
|
||||
extern void sub_0807AA80(Entity*);
|
||||
extern s32 sub_0807887C(Entity*, u32, u32);
|
||||
extern s32 sub_08078904();
|
||||
extern void DrawEntities(void);
|
||||
extern void CopyOAM(void);
|
||||
extern void sub_0801E104(void);
|
||||
extern void sub_080A57F4(void);
|
||||
extern void sub_08030118(u32);
|
||||
extern u32 sub_0804A044(Entity*, Entity*, u32);
|
||||
extern void sub_0804A720(Entity*);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern void sub_0804C128();
|
||||
extern u32 sub_080542AC(u32);
|
||||
extern void sub_08054564();
|
||||
extern void sub_08054570(void);
|
||||
extern s32 sub_08056338(void);
|
||||
extern void sub_080575C8(u32);
|
||||
extern void sub_08057688(void);
|
||||
extern void sub_080580B0(u32);
|
||||
extern void sub_080751E8(u32, u32, void*);
|
||||
extern void sub_0808091C(const ScreenTransitionData*, u32);
|
||||
extern void sub_0805BC4C(void);
|
||||
extern void sub_0807BB68(u32*, u32, u32);
|
||||
extern void sub_08054570(void);
|
||||
extern void sub_08059278(void);
|
||||
extern void sub_0804C128();
|
||||
extern void sub_08058324(u32);
|
||||
extern void sub_0801AFE4(void);
|
||||
extern void sub_0807AABC(Entity*);
|
||||
extern void sub_08059278(void);
|
||||
extern void sub_0805B4D0(u32);
|
||||
extern void sub_0807BA8C(u32, u32);
|
||||
extern void sub_080AF284(void);
|
||||
extern void sub_080A71C4(u32, u32, u32, u32);
|
||||
extern void sub_08054564();
|
||||
extern void DrawDirect(u32, u32); // trampoline to sub_080B27F4
|
||||
extern void sub_0801C1D4(void);
|
||||
extern void DrawOAMCmd(void);
|
||||
extern u32 sub_0807953C(void);
|
||||
extern void sub_080AE068(Entity*);
|
||||
extern u32 sub_0800445C(Entity*);
|
||||
extern u32 sub_0801766C(Entity*);
|
||||
extern void sub_08004168(Entity*);
|
||||
extern u32 sub_0806F520();
|
||||
extern void sub_0806F4E8(Entity*);
|
||||
extern void sub_080784C8();
|
||||
extern u32 sub_0808288C(Entity*, u32, u32, u32);
|
||||
extern bool32 sub_0806FDA0(Entity*);
|
||||
extern bool32 LoadSwapGFX(Entity*, u16, u32);
|
||||
extern void sub_0807921C();
|
||||
extern void sub_0807ACCC(Entity*);
|
||||
extern u32 sub_08079F8C(void);
|
||||
extern void sub_080787CC(Entity*);
|
||||
extern u32 sub_080044EC(Entity*, u32);
|
||||
extern u32 sub_080002B8(Entity*);
|
||||
extern u32 sub_08049F84(Entity*, u32);
|
||||
extern u32 sub_0800419C(Entity*, Entity*, u32, u32);
|
||||
extern void sub_08004542(Entity*);
|
||||
extern u32 IsCollidingPlayer(Entity*);
|
||||
extern void sub_080809D4(void);
|
||||
extern void sub_08080CB4(Entity*);
|
||||
extern void sub_0807B7D8(u32, u32, u32);
|
||||
extern void sub_0800451C(Entity*);
|
||||
extern u32 sub_080040D8(Entity*, u8*, s32, s32);
|
||||
extern u32 sub_0805F8F8(u32);
|
||||
extern u32 sub_0805F7A0(u32);
|
||||
extern void sub_0805BC4C(void);
|
||||
extern void sub_0805EC60(Entity*);
|
||||
extern void sub_0805EC9C(Entity*, u32, u32, u32);
|
||||
extern void sub_0805ED14(u32*);
|
||||
extern u32* sub_0805F25C(u32);
|
||||
u32 EntityWithinDistance(Entity*, s32, s32, s32);
|
||||
extern void LinearMoveAngle(Entity*, u32, u32);
|
||||
extern void sub_080A1ED0(u32, u32, u32);
|
||||
extern u32 sub_0806F5B0(u32);
|
||||
extern void sub_08078790(Entity*, u32);
|
||||
extern void sub_080788E0(Entity*);
|
||||
extern void sub_08078B48(void);
|
||||
extern void sub_0807919C();
|
||||
extern void sub_0807CAA0(u32, u32);
|
||||
extern void sub_080085B0(Entity*);
|
||||
extern u32 sub_08079D48();
|
||||
extern u32 sub_080542AC(u32);
|
||||
extern u32 sub_08079FC4(u32);
|
||||
extern u32 sub_0805F7A0(u32);
|
||||
extern void sub_0805F8E4(u32 r0, WStruct* r1);
|
||||
extern Entity* sub_08077C94(ItemBehavior*, u32);
|
||||
extern Entity* sub_08077C0C(ItemBehavior*, u32);
|
||||
extern void sub_08077D38(ItemBehavior*, u32);
|
||||
extern void sub_08077E78(ItemBehavior*, u32);
|
||||
extern void UpdateItemAnim(ItemBehavior*);
|
||||
extern u32 sub_0806F948(Entity*);
|
||||
extern void sub_08077DF4(ItemBehavior*, u32);
|
||||
extern void sub_08077BB8(ItemBehavior*);
|
||||
extern bool32 sub_08077EFC(ItemBehavior*);
|
||||
extern void sub_08078E84(Entity*, Entity*);
|
||||
extern void sub_080042D0(Entity*, u32, u16);
|
||||
extern u32 sub_080002A8(u32, u32, u32);
|
||||
extern bool32 sub_080806BC(u32, u32, u32, u32);
|
||||
extern bool32 sub_0806FC80(Entity*, Entity*, s32);
|
||||
extern u32 sub_080002B4(Entity*, u32, u32);
|
||||
extern u32 sub_080AF134(Entity*);
|
||||
extern void LinearMoveDirection(Entity*, u32, u32);
|
||||
extern void sub_080A2AF4(Entity*, u32, u32);
|
||||
extern u32 sub_080002CC(Entity*, s32, s32);
|
||||
extern bool32 sub_0807BD14(Entity*, u32);
|
||||
extern void sub_0807A5B8(u32);
|
||||
extern Entity* sub_080A2AD4(Entity*);
|
||||
extern u32 sub_080040A2(Entity*);
|
||||
|
||||
extern Entity* sub_08049DF4(u32);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern s32 sub_08056338(void);
|
||||
extern s32 sub_080AF090(Entity*);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern u32 sub_080002C8(u16, u8);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern u32 sub_080002E0(u32, u32);
|
||||
extern u32 sub_08031E04(Entity*);
|
||||
extern u32 sub_080322A4(Entity*);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void sub_08001328(Entity*);
|
||||
extern void sub_08031E48(Entity*, Entity*);
|
||||
extern void sub_08032290(Entity*);
|
||||
extern void sub_08032338(Entity*);
|
||||
extern void sub_0803C0AC(Entity*);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern u32 sub_0805F8F8(u32);
|
||||
extern void sub_0806D02C(Entity*);
|
||||
extern void sub_0806D0B0(Entity*);
|
||||
extern void sub_0806F4E8(Entity*);
|
||||
extern u32 sub_0806F520();
|
||||
extern u32 sub_0806F5B0(u32);
|
||||
extern u32 sub_0806F824(Entity*, Entity*, s32, s32);
|
||||
extern u32 sub_0806F948(Entity*);
|
||||
extern void sub_0806FBB4(Entity*);
|
||||
extern bool32 sub_0806FC80(Entity*, Entity*, s32);
|
||||
extern void sub_0806FCF4(Entity*, s32, s32, s32);
|
||||
extern void sub_0806FD3C(Entity*);
|
||||
extern bool32 sub_0806FDA0(Entity*);
|
||||
extern void sub_080751E8(u32, u32, void*);
|
||||
extern void sub_08077BB8(ItemBehavior*);
|
||||
extern Entity* sub_08077C0C(ItemBehavior*, u32);
|
||||
extern Entity* sub_08077C94(ItemBehavior*, u32);
|
||||
extern void sub_08077D38(ItemBehavior*, u32);
|
||||
extern void sub_08077DF4(ItemBehavior*, u32);
|
||||
extern void sub_08077E54(ItemBehavior*);
|
||||
extern void sub_08077E78(ItemBehavior*, u32);
|
||||
extern bool32 sub_08077EFC(ItemBehavior*);
|
||||
extern bool32 sub_08077F24(ItemBehavior*, u32);
|
||||
extern void sub_08077F50(ItemBehavior* beh, u32 arg1);
|
||||
extern void sub_080784C8();
|
||||
extern void sub_08078790(Entity*, u32);
|
||||
extern void sub_080787CC(Entity*);
|
||||
extern s32 sub_0807887C(Entity*, u32, u32);
|
||||
extern void sub_080788E0(Entity*);
|
||||
extern s32 sub_08078904();
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08078954(Entity*);
|
||||
extern void sub_08078B48(void);
|
||||
extern void sub_08078E84(Entity*, Entity*);
|
||||
extern void sub_08079184();
|
||||
extern void sub_0807919C();
|
||||
extern void sub_0807921C();
|
||||
extern u32 sub_0807953C(void);
|
||||
extern void sub_08079BD8(Entity*);
|
||||
extern void sub_080AEFB4(Entity*);
|
||||
extern void UnloadOBJPalette(Entity*);
|
||||
void sub_080322E8(Entity*);
|
||||
extern u32 GetTileIndex(u32, u32);
|
||||
extern void sub_0806FBB4(Entity*);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_080044AE(Entity*, u32, u32);
|
||||
extern void sub_0801AF18(u8*, u32, u32);
|
||||
extern u32 sub_08079D48();
|
||||
extern void sub_08079D84(void);
|
||||
extern u32 sub_08079F8C(void);
|
||||
extern u32 sub_08079FC4(u32);
|
||||
extern void sub_0807A5B8(u32);
|
||||
extern void sub_0807AA80(Entity*);
|
||||
extern void sub_0807AABC(Entity*);
|
||||
extern void sub_0807ACCC(Entity*);
|
||||
extern void sub_0807B7D8(u32, u32, u32);
|
||||
extern void sub_0807B9B8(s32, s32, s32);
|
||||
extern void sub_08000148(u32, u32, u32);
|
||||
extern void CreateRandomItemDrop(Entity*, s32);
|
||||
extern void sub_0807BA8C(u32, u32);
|
||||
extern void sub_0807BB68(u32*, u32, u32);
|
||||
extern bool32 sub_0807BD14(Entity*, u32);
|
||||
extern void sub_0807CAA0(u32, u32);
|
||||
extern bool32 sub_080806BC(u32, u32, u32, u32);
|
||||
extern void sub_0808091C(const ScreenTransitionData*, u32);
|
||||
extern void sub_080809D4(void);
|
||||
extern void sub_08080CB4(Entity*);
|
||||
extern u32 sub_0808288C(Entity*, u32, u32, u32);
|
||||
extern void sub_080A1ED0(u32, u32, u32);
|
||||
extern Entity* sub_080A2A3C(Entity*, u32, u32, u32);
|
||||
extern void sub_0806FCF4(Entity*, s32, s32, s32);
|
||||
extern u32 sub_080041DC(Entity*, u32, u32);
|
||||
extern void sub_080AE58C(Entity*, u32, u32);
|
||||
extern u32 sub_0800132C(Entity*, Entity*);
|
||||
extern bool32 sub_080AE4CC(Entity*, u32, u32, u32);
|
||||
extern void sub_08008796(Entity*, u32, u32, u32);
|
||||
extern Entity* sub_080A2AD4(Entity*);
|
||||
extern void sub_080A2AF4(Entity*, u32, u32);
|
||||
extern void sub_080A57F4(void);
|
||||
extern void sub_080A71C4(u32, u32, u32, u32);
|
||||
extern void sub_080A7C18(u32, u32, u32);
|
||||
extern void sub_080AE068(Entity*);
|
||||
extern void sub_080AF284(void);
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08078954(Entity*);
|
||||
extern void sub_0809EB30(Entity*);
|
||||
extern void sub_0809EAD8(Entity*);
|
||||
extern void sub_0809EABC(Entity*);
|
||||
extern void sub_08079D84(void);
|
||||
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
||||
// extern void sub_080A2CC0(Entity*, void*, void*);
|
||||
extern void sub_08095C48(Entity*);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern u32 sub_0804A024(Entity*, u32, u32);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern void sub_08001318(Entity*);
|
||||
extern void sub_080043A8(Entity*);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern void sub_08027870(Entity*);
|
||||
extern u32 sub_0804A044(Entity*, Entity*, u32);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern void sub_08049CF4(Entity*);
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef MAP_H
|
||||
#define MAP_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
typedef struct {
|
||||
u16* bgControlPtr; // Points to the BgSettings.control field for the bg belonging to this layer?
|
||||
u16 _4[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom
|
||||
u8 _2004[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4
|
||||
u8 _3004[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4
|
||||
u8 _4004[0x1000]; // gMetatileTypesTop, gMetatileTypesBottom
|
||||
s16 _5004[0x500]; // gUnk_02011654,gUnk_0202BEB4
|
||||
// Maybe even include here gMetatilesTop, gUnk_02016654 ?
|
||||
// gMetatilesBottom, gUnk_02030EB4
|
||||
} LayerStruct;
|
||||
|
||||
extern LayerStruct gMapTop;
|
||||
extern LayerStruct gMapBottom;
|
||||
|
||||
#endif // MAP_H
|
||||
@@ -48,7 +48,7 @@ SECTIONS {
|
||||
. = 0x0000B240; gUnk_0200B240 = .;
|
||||
. = 0x0000B640; gUnk_0200B640 = .;
|
||||
. = 0x0000B644; gUsedPalettes = .;
|
||||
. = 0x0000B650; gUnk_0200B650 = .;
|
||||
. = 0x0000B650; gMapTop = .;
|
||||
. = 0x0000B654; gMapDataTop = .;
|
||||
. = 0x0000D654; gUnk_0200D654 = .;
|
||||
. = 0x0000E654; gUnk_0200E654 = .;
|
||||
@@ -96,7 +96,7 @@ SECTIONS {
|
||||
. = 0x00024490; gGFXSlots = .;
|
||||
. = 0x00024494; gUnk_02024494 = .;
|
||||
. = 0x000246B0; gUnk_020246B0 = .;
|
||||
. = 0x00025EB0; gUnk_02025EB0 = .;
|
||||
. = 0x00025EB0; gMapBottom = .;
|
||||
. = 0x00025EB4; gMapDataBottom = .;
|
||||
. = 0x00027EB4; gUnk_02027EB4 = .;
|
||||
. = 0x00028EB4; gUnk_02028EB4 = .;
|
||||
@@ -904,7 +904,7 @@ SECTIONS {
|
||||
src/affine.o(.text);
|
||||
src/playerItem/playerItemGustJar.o(.text);
|
||||
asm/vram.o(.text);
|
||||
asm/movement.o(.text);
|
||||
src/movement.o(.text);
|
||||
/* library functions */
|
||||
asm/lib/m4a_asm.o(.text);
|
||||
src/gba/m4a.o(.text);
|
||||
@@ -1680,7 +1680,8 @@ SECTIONS {
|
||||
src/projectile.o(.rodata);
|
||||
data/const/playerItem/playerItemGustJar.o(.rodata);
|
||||
data/gfx/fixed_type_gfx.o(.rodata);
|
||||
data/data_08132B30.o(.rodata);
|
||||
data/const/movement.o(.rodata);
|
||||
src/movement.o(.rodata);
|
||||
data/map/exit_lists.o(.rodata);
|
||||
data/gfx_0813AA54.o(.rodata);
|
||||
data/gfx/sprite_gfx.o(.rodata);
|
||||
|
||||
+48
-48
@@ -13,18 +13,18 @@ extern u8 gCollidableCount;
|
||||
extern u8 gUnk_080B3740[];
|
||||
|
||||
typedef struct {
|
||||
u8 _0;
|
||||
u8 _1;
|
||||
u8 _2;
|
||||
u8 _3;
|
||||
u8 _4;
|
||||
u8 _5;
|
||||
s8 _6;
|
||||
u8 _7;
|
||||
u8 _8;
|
||||
u8 _9;
|
||||
u8 _a;
|
||||
u8 _b;
|
||||
/*0x00*/ u8 orgKnockbackSpeed;
|
||||
/*0x01*/ u8 orgIframes;
|
||||
/*0x02*/ u8 orgKnockbackDuration;
|
||||
/*0x03*/ u8 tgtDamage;
|
||||
/*0x04*/ u8 orgConfusedTime;
|
||||
/*0x05*/ u8 tgtKnockbackSpeed;
|
||||
/*0x06*/ s8 tgtIframes;
|
||||
/*0x07*/ u8 tgtKnockbackDuration;
|
||||
/*0x08*/ u8 orgDamage;
|
||||
/*0x09*/ u8 tgtConfusedTime;
|
||||
/*0x0a*/ u8 _a;
|
||||
/*0x0b*/ u8 _b;
|
||||
} ColSettings;
|
||||
|
||||
extern ColSettings gCollisionMtx[173 * 34];
|
||||
@@ -362,7 +362,7 @@ s32 sub_08017B1C(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
} else {
|
||||
org->knockbackDuration = 0x10;
|
||||
org->iframes = -20;
|
||||
org->field_0x46 = 640;
|
||||
org->knockbackSpeed = 640;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
@@ -374,7 +374,7 @@ s32 sub_08017B58(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
if (x << 24 <= 0) {
|
||||
tgt->field_0x1d = 0;
|
||||
tgt->subAction = 2;
|
||||
tgt->field_0x46 = 0;
|
||||
tgt->knockbackSpeed = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -399,7 +399,7 @@ s32 sub_08017BBC(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
org->health = sub_08017874(org, tgt);
|
||||
org->knockbackDuration = 12;
|
||||
org->iframes = 30;
|
||||
org->field_0x46 = 384;
|
||||
org->knockbackSpeed = 384;
|
||||
if (tgt->iframes == 0)
|
||||
tgt->iframes = -1;
|
||||
return 1;
|
||||
@@ -416,7 +416,7 @@ s32 sub_08017C40(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
}
|
||||
org->knockbackDuration = 12;
|
||||
org->iframes = 16;
|
||||
org->field_0x46 = 640;
|
||||
org->knockbackSpeed = 640;
|
||||
if (tgt->iframes == 0)
|
||||
tgt->iframes = -1;
|
||||
return 1;
|
||||
@@ -431,8 +431,8 @@ s32 sub_08017CBC(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
} else {
|
||||
tgt->knockbackDuration = 12;
|
||||
tgt->iframes = 16;
|
||||
tgt->field_0x43 = -16;
|
||||
tgt->field_0x46 = 768;
|
||||
tgt->confusedTime = -16;
|
||||
tgt->knockbackSpeed = 768;
|
||||
if (org->iframes == 0)
|
||||
org->iframes = -1;
|
||||
}
|
||||
@@ -444,7 +444,7 @@ s32 sub_08017D28(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
org->field_0x7a.HWORD = 600;
|
||||
org->knockbackDuration = 12;
|
||||
org->iframes = 16;
|
||||
org->field_0x46 = 640;
|
||||
org->knockbackSpeed = 640;
|
||||
if (tgt->iframes == 0)
|
||||
tgt->iframes = -1;
|
||||
return 1;
|
||||
@@ -484,7 +484,7 @@ int sub_08017DD4(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
gPlayerEntity.iframes = 12;
|
||||
gPlayerEntity.knockbackDuration = 16;
|
||||
gPlayerEntity.knockbackDirection = DirectionTurnAround(direction);
|
||||
gPlayerEntity.field_0x46 = 640;
|
||||
gPlayerEntity.knockbackSpeed = 640;
|
||||
}
|
||||
if (tgt->iframes == 0)
|
||||
tgt->iframes = -1;
|
||||
@@ -493,7 +493,7 @@ int sub_08017DD4(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
|
||||
s32 sub_08017E88(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) {
|
||||
org->knockbackDuration = 2;
|
||||
org->field_0x46 = 640;
|
||||
org->knockbackSpeed = 640;
|
||||
if (tgt->iframes == 0)
|
||||
tgt->iframes = -1;
|
||||
return 1;
|
||||
@@ -509,11 +509,11 @@ s32 sub_08017EB0(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
tgt->damage = temp;
|
||||
gPlayerEntity.knockbackDuration = 12;
|
||||
gPlayerEntity.iframes = 16;
|
||||
gPlayerEntity.field_0x46 = 384;
|
||||
gPlayerEntity.knockbackSpeed = 384;
|
||||
} else if (org->kind == PLAYER_ITEM && org->id == 5) {
|
||||
org->knockbackDuration = 8;
|
||||
org->iframes = -6;
|
||||
org->field_0x46 = 384;
|
||||
org->knockbackSpeed = 384;
|
||||
gPlayerEntity.iframes = 0x80;
|
||||
}
|
||||
if (tgt->iframes == 0)
|
||||
@@ -526,7 +526,7 @@ s32 sub_08017F3C(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
}
|
||||
|
||||
s32 sub_08017F40(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) {
|
||||
if (tgt->field_0x43 == 0) {
|
||||
if (tgt->confusedTime == 0) {
|
||||
if (org == &gPlayerEntity) {
|
||||
if (sub_08079F8C() &&
|
||||
#ifdef EU
|
||||
@@ -608,10 +608,10 @@ s32 sub_080180E8(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
if (DirectionNormalize(tgt->direction - v3) <= 0x18) {
|
||||
org->knockbackDuration = 12;
|
||||
org->iframes = -16;
|
||||
org->field_0x46 = 640;
|
||||
org->knockbackSpeed = 640;
|
||||
tgt->knockbackDuration = 12;
|
||||
tgt->iframes = -16;
|
||||
tgt->field_0x46 = 768;
|
||||
tgt->knockbackSpeed = 768;
|
||||
sub_08017940(org, tgt);
|
||||
return 1;
|
||||
}
|
||||
@@ -620,7 +620,7 @@ s32 sub_080180E8(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
}
|
||||
|
||||
s32 sub_08018168(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) {
|
||||
if (tgt->field_0x43 == 0) {
|
||||
if (tgt->confusedTime == 0) {
|
||||
if (org == &gPlayerEntity) {
|
||||
if (sub_08079F8C() &&
|
||||
#ifdef EU
|
||||
@@ -676,7 +676,7 @@ s32 sub_08018288(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
}
|
||||
|
||||
s32 sub_080182A8(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) {
|
||||
if (tgt->field_0x43 == 0) {
|
||||
if (tgt->confusedTime == 0) {
|
||||
if (org->iframes == 0)
|
||||
org->iframes = -1;
|
||||
if (tgt->iframes == 0)
|
||||
@@ -690,7 +690,7 @@ s32 sub_080182A8(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
|
||||
s32 sub_08018308(Entity* org, Entity* tgt, u32 direction, ColSettings* settings) {
|
||||
u32 temp = 0;
|
||||
if (tgt->field_0x43 && tgt->kind == ENEMY && org == &gPlayerEntity) {
|
||||
if (tgt->confusedTime && tgt->kind == ENEMY && org == &gPlayerEntity) {
|
||||
sub_08004484(tgt, org);
|
||||
temp = 1;
|
||||
}
|
||||
@@ -700,27 +700,27 @@ s32 sub_08018308(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
}
|
||||
if (!temp) {
|
||||
u32 tmp2;
|
||||
org->field_0x46 = 16 * settings->_0;
|
||||
org->iframes = settings->_1;
|
||||
org->knockbackSpeed = 16 * settings->orgKnockbackSpeed;
|
||||
org->iframes = settings->orgIframes;
|
||||
if (org->iframes == 0)
|
||||
org->iframes = -1;
|
||||
org->knockbackDuration = settings->_2;
|
||||
tgt->damage = settings->_3;
|
||||
org->knockbackDuration = settings->orgKnockbackDuration;
|
||||
tgt->damage = settings->tgtDamage;
|
||||
tmp2 = 0xFF;
|
||||
if (settings->_3 != 0)
|
||||
if (settings->tgtDamage != 0)
|
||||
org->health = sub_08017874(org, tgt);
|
||||
if (settings->_4 > org->field_0x43)
|
||||
org->field_0x43 = settings->_4;
|
||||
tgt->field_0x46 = 16 * settings->_5;
|
||||
tgt->iframes = settings->_6;
|
||||
if (settings->_6 == 0)
|
||||
if (settings->orgConfusedTime > org->confusedTime)
|
||||
org->confusedTime = settings->orgConfusedTime;
|
||||
tgt->knockbackSpeed = 16 * settings->tgtKnockbackSpeed;
|
||||
tgt->iframes = settings->tgtIframes;
|
||||
if (settings->tgtIframes == 0)
|
||||
tgt->iframes = -1;
|
||||
tgt->knockbackDuration = settings->_7;
|
||||
tmp2 &= org->damage = settings->_8;
|
||||
tgt->knockbackDuration = settings->tgtKnockbackDuration;
|
||||
tmp2 &= org->damage = settings->orgDamage;
|
||||
if (tmp2 != 0)
|
||||
tgt->health = sub_08017874(tgt, org);
|
||||
if (settings->_9 > tgt->field_0x43)
|
||||
tgt->field_0x43 = settings->_9;
|
||||
if (settings->tgtConfusedTime > tgt->confusedTime)
|
||||
tgt->confusedTime = settings->tgtConfusedTime;
|
||||
}
|
||||
if (settings->_a & 1)
|
||||
sub_08017940(org, tgt);
|
||||
@@ -733,15 +733,15 @@ s32 sub_08018308(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
parent->iframes = tgt->iframes;
|
||||
parent->knockbackDirection = direction;
|
||||
parent->knockbackDuration = tgt->knockbackDuration;
|
||||
if (parent->field_0x43 == 0)
|
||||
parent->field_0x43 = tgt->field_0x43;
|
||||
parent->field_0x46 = tgt->field_0x46;
|
||||
if (parent->confusedTime == 0)
|
||||
parent->confusedTime = tgt->confusedTime;
|
||||
parent->knockbackSpeed = tgt->knockbackSpeed;
|
||||
parent->field_0x4c = org;
|
||||
}
|
||||
}
|
||||
if (org->kind == PLAYER_ITEM) {
|
||||
if (org->id == 1) {
|
||||
if (settings->_8) {
|
||||
if (settings->orgDamage) {
|
||||
sub_080179EC(org, tgt);
|
||||
}
|
||||
} else if (org->id == 4) {
|
||||
@@ -749,7 +749,7 @@ s32 sub_08018308(Entity* org, Entity* tgt, u32 direction, ColSettings* settings)
|
||||
sub_08017A90(org, tgt);
|
||||
}
|
||||
} else if (org->id == 3) {
|
||||
if (settings->_9) {
|
||||
if (settings->tgtConfusedTime) {
|
||||
SoundReqClipped(tgt, SFX_HIT);
|
||||
}
|
||||
} else if (org->id == 5) {
|
||||
|
||||
+9
-16
@@ -35,13 +35,6 @@ static_assert(sizeof(struct_gUnk_020000C0) == 0x40);
|
||||
extern struct_gUnk_020000C0 gUnk_020000C0[0x30];
|
||||
extern u32 gSpritePtrs[];
|
||||
|
||||
typedef struct {
|
||||
u32 _0;
|
||||
u16 _4[0x1000];
|
||||
u8 _2004[0x2000];
|
||||
} struct_02025EB0;
|
||||
extern struct_02025EB0 gUnk_02025EB0;
|
||||
|
||||
extern u16 gExtraFrameOffsets[];
|
||||
extern s8 gUnk_08126EE4[];
|
||||
extern const u16 gUnk_080046A4[];
|
||||
@@ -93,21 +86,21 @@ u32 sub_0806F3E4(Entity* ent) {
|
||||
return 0;
|
||||
switch (gPlayerState.field_0x1d) {
|
||||
case 1:
|
||||
ent->field_0x46 += 64;
|
||||
ent->knockbackSpeed += 64;
|
||||
break;
|
||||
case 2:
|
||||
ent->field_0x46 += 128;
|
||||
ent->knockbackSpeed += 128;
|
||||
break;
|
||||
case 3:
|
||||
ent->field_0x46 += 192;
|
||||
ent->knockbackSpeed += 192;
|
||||
break;
|
||||
}
|
||||
if (ent->field_0x46 > 0x500)
|
||||
ent->field_0x46 = 0x500;
|
||||
if (ent->knockbackSpeed > 0x500)
|
||||
ent->knockbackSpeed = 0x500;
|
||||
p = &gUnk_08126EE4[gPlayerEntity.animationState & 0xE];
|
||||
tmp_ent.x.HALF.HI = p[0] + gPlayerEntity.x.HALF.HI;
|
||||
tmp_ent.y.HALF.HI = p[1] + gPlayerEntity.y.HALF.HI;
|
||||
LinearMoveDirection(ent, ent->field_0x46, GetFacingDirection(ent, &tmp_ent));
|
||||
LinearMoveDirection(ent, ent->knockbackSpeed, GetFacingDirection(ent, &tmp_ent));
|
||||
if (sub_0800419C(&tmp_ent, ent, 4, 4)) {
|
||||
u32 state = ent->field_0x1c & 0xF;
|
||||
if (state == 2) {
|
||||
@@ -233,16 +226,16 @@ u32 sub_0806F798(Entity* ent) {
|
||||
}
|
||||
|
||||
u32 sub_0806F7D0(Entity* ent) {
|
||||
return gUnk_02025EB0._2004[sub_0806F730(ent)];
|
||||
return gMapBottom._2004[sub_0806F730(ent)];
|
||||
}
|
||||
|
||||
u32 sub_0806F7EC(Entity* ent) {
|
||||
return gUnk_02025EB0._4[sub_0806F730(ent)];
|
||||
return gMapBottom._4[sub_0806F730(ent)];
|
||||
}
|
||||
|
||||
u32 sub_0806F804(u32 x, u32 y) {
|
||||
u32 idx = ((x >> 4) & 0x3F) + 4 * (y & 0x3F0);
|
||||
return gUnk_02025EB0._4[idx];
|
||||
return gMapBottom._4[idx];
|
||||
}
|
||||
|
||||
u32 sub_0806F824(Entity* a, Entity* b, s32 x, s32 y) {
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
#include "enemy.h"
|
||||
|
||||
void sub_0804AA30(Entity* entity, void (*fntable[])()) {
|
||||
/** Unsets bitfield 0x80 before calling GetNextFunction, so that the enemyFunction 1 is not called. */
|
||||
void EnemyFunctionHandlerAfterCollision(Entity* entity, void (*fntable[])()) {
|
||||
u32 idx;
|
||||
entity->bitfield &= ~0x80;
|
||||
idx = GetNextFunction(entity);
|
||||
|
||||
+12
-12
@@ -10,7 +10,7 @@
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
extern void (*const gUnk_080012C8[])(Entity*);
|
||||
extern void (*const gUnk_080CE56C[])(Entity*);
|
||||
extern void (*const AcroBandit_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CE584[])(Entity*);
|
||||
extern void (*const gUnk_080CE58C[])(Entity*);
|
||||
extern void (*const gUnk_080CE5C8[])(Entity*);
|
||||
@@ -31,16 +31,16 @@ void AcroBandit(Entity* this) {
|
||||
|
||||
gUnk_080012C8[index](this);
|
||||
} else {
|
||||
gUnk_080CE56C[GetNextFunction(this)](this);
|
||||
AcroBandit_Functions[GetNextFunction(this)](this);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080318C4(Entity* this) {
|
||||
void AcroBandit_OnTick(Entity* this) {
|
||||
gUnk_080CE584[this->type](this);
|
||||
}
|
||||
|
||||
void sub_080318DC(Entity* this) {
|
||||
void AcroBandit_OnCollision(Entity* this) {
|
||||
Entity* brother;
|
||||
|
||||
if (this->bitfield != 0x80 && this->bitfield != 0x81) {
|
||||
@@ -96,20 +96,20 @@ void sub_080318DC(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
if (this->field_0x43)
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
if (this->confusedTime)
|
||||
Create0x68FX(this, FX_STARS);
|
||||
|
||||
sub_0804AA30(this, gUnk_080CE56C);
|
||||
EnemyFunctionHandlerAfterCollision(this, AcroBandit_Functions);
|
||||
}
|
||||
|
||||
void sub_08031A60(Entity* this) {
|
||||
void AcroBandit_OnKnockback(Entity* this) {
|
||||
if (this->iframes > 0)
|
||||
GravityUpdate(this, Q_8_8(24.0));
|
||||
|
||||
sub_08001324(this);
|
||||
GenericKnockback(this);
|
||||
}
|
||||
|
||||
void nullsub_154(void) {
|
||||
void AcroBandit_OnGrabbed(void) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
@@ -400,7 +400,7 @@ void sub_08032008(Entity* this) {
|
||||
if (this->direction & 0xf)
|
||||
this->spriteSettings.flipX = (this->direction >> 4 ^ 1);
|
||||
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
} else {
|
||||
if (this->field_0x76.HALF.HI == 0) {
|
||||
if (EntityWithinDistance(this, parent->x.HALF.HI, parent->y.HALF.HI, 1) == 0) {
|
||||
@@ -457,7 +457,7 @@ void sub_08032160(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_080321E8(Entity* this) {
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
|
||||
if (sub_080044EC(this, 0x2000) == 0)
|
||||
this->action = 8;
|
||||
|
||||
+6
-6
@@ -68,11 +68,11 @@ void sub_080301D4(ArmosEntity* this) {
|
||||
sub_080309C8(this, 6);
|
||||
sub_080309E8(this);
|
||||
}
|
||||
if (super->field_0x43 != 0) {
|
||||
sub_0804A9FC(super, 0x1c);
|
||||
if (super->confusedTime != 0) {
|
||||
Create0x68FX(super, 0x1c);
|
||||
}
|
||||
this->unk_81 = super->health;
|
||||
sub_0804AA30(super, gUnk_080CE124);
|
||||
EnemyFunctionHandlerAfterCollision(super, gUnk_080CE124);
|
||||
}
|
||||
|
||||
void sub_08030240(ArmosEntity* this) {
|
||||
@@ -81,7 +81,7 @@ void sub_08030240(ArmosEntity* this) {
|
||||
GetNextFrame(super);
|
||||
}
|
||||
}
|
||||
sub_08001242(super);
|
||||
GenericConfused(super);
|
||||
}
|
||||
|
||||
void nullsub_17(ArmosEntity* this) {
|
||||
@@ -331,7 +331,7 @@ void sub_080309E8(ArmosEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08030A04(ArmosEntity* this) {
|
||||
ProcessMovement(super);
|
||||
ProcessMovement0(super);
|
||||
if ((super->frame & 1) != 0) {
|
||||
super->frame = super->frame & 0xfe;
|
||||
EnqueueSFX(SFX_101);
|
||||
@@ -339,7 +339,7 @@ void sub_08030A04(ArmosEntity* this) {
|
||||
}
|
||||
|
||||
void (*const gUnk_080CE124[])(ArmosEntity*) = {
|
||||
sub_080301BC, sub_080301D4, (void (*)(ArmosEntity*))sub_08001324, (void (*)(ArmosEntity*))sub_0804A7D4,
|
||||
sub_080301BC, sub_080301D4, (void (*)(ArmosEntity*))GenericKnockback, (void (*)(ArmosEntity*))GenericDeath,
|
||||
sub_08030240, nullsub_17,
|
||||
};
|
||||
void (*const gUnk_080CE13C[])(ArmosEntity*) = {
|
||||
|
||||
@@ -17,44 +17,43 @@ typedef struct {
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
|
||||
void (*const gUnk_080D06E0[])(BallChainSoldierEntity*);
|
||||
void (*const BallChainSoldier_Functions[])(BallChainSoldierEntity*);
|
||||
void (*const gUnk_080D06F8[])(BallChainSoldierEntity*);
|
||||
const u8 gUnk_080D0724[];
|
||||
const u16 gUnk_080D0728[];
|
||||
const u16 gUnk_080D0730[];
|
||||
|
||||
extern u32 sub_0804A044(Entity*, Entity*, u32);
|
||||
extern void sub_0803E86C(BallChainSoldierEntity*);
|
||||
extern void sub_0803E9A4(BallChainSoldierEntity*);
|
||||
extern bool32 sub_0803E9D4(BallChainSoldierEntity*);
|
||||
extern void sub_0803E8CC(BallChainSoldierEntity*);
|
||||
extern void sub_0803E92C(BallChainSoldierEntity*);
|
||||
extern bool32 sub_0803EA64(BallChainSoldierEntity*);
|
||||
extern void sub_0803E94C(BallChainSoldierEntity*, u32);
|
||||
extern bool32 sub_0803EAD0(BallChainSoldierEntity*, u32);
|
||||
void sub_0803E86C(BallChainSoldierEntity*);
|
||||
void sub_0803E9A4(BallChainSoldierEntity*);
|
||||
bool32 sub_0803E9D4(BallChainSoldierEntity*);
|
||||
void sub_0803E8CC(BallChainSoldierEntity*);
|
||||
void sub_0803E92C(BallChainSoldierEntity*);
|
||||
bool32 sub_0803EA64(BallChainSoldierEntity*);
|
||||
void sub_0803E94C(BallChainSoldierEntity*, u32);
|
||||
bool32 sub_0803EAD0(BallChainSoldierEntity*, u32);
|
||||
|
||||
void BallChainSoldier(Entity* this) {
|
||||
EnemyFunctionHandler(this, (EntityActionArray)gUnk_080D06E0);
|
||||
EnemyFunctionHandler(this, (EntityActionArray)BallChainSoldier_Functions);
|
||||
}
|
||||
|
||||
void sub_0803E538(BallChainSoldierEntity* this) {
|
||||
void BallChainSoldier_OnTick(BallChainSoldierEntity* this) {
|
||||
gUnk_080D06F8[super->action](this);
|
||||
}
|
||||
|
||||
void sub_0803E550(BallChainSoldierEntity* this) {
|
||||
sub_0804AA30(super, gUnk_080D06E0);
|
||||
void BallChainSoldier_OnCollision(BallChainSoldierEntity* this) {
|
||||
EnemyFunctionHandlerAfterCollision(super, BallChainSoldier_Functions);
|
||||
}
|
||||
|
||||
void sub_0803E560(BallChainSoldierEntity* this) {
|
||||
sub_08001324(super);
|
||||
sub_0803E538(this);
|
||||
void BallChainSoldier_OnKnockback(BallChainSoldierEntity* this) {
|
||||
GenericKnockback(super);
|
||||
BallChainSoldier_OnTick(this);
|
||||
}
|
||||
|
||||
void BallChainSoldier_CreateDeathFx(BallChainSoldierEntity* this) {
|
||||
void BallChainSoldier_OnDeath(BallChainSoldierEntity* this) {
|
||||
CreateDeathFx(super, 0xff, 0x57);
|
||||
}
|
||||
|
||||
void nullsub_20(BallChainSoldierEntity* this) {
|
||||
void BallChainSoldier_OnGrabbed(BallChainSoldierEntity* this) {
|
||||
}
|
||||
|
||||
void BallChainSoldier_Init(BallChainSoldierEntity* this) {
|
||||
@@ -92,7 +91,7 @@ void sub_0803E61C(BallChainSoldierEntity* this) {
|
||||
sub_0803E9A4(this);
|
||||
if (sub_0803E9D4(this) == 0) {
|
||||
if (super->knockbackDuration == 0) {
|
||||
if (ProcessMovement(super) == 0) {
|
||||
if (ProcessMovement0(super) == 0) {
|
||||
sub_0803E86C(this);
|
||||
return;
|
||||
}
|
||||
@@ -321,13 +320,13 @@ bool32 sub_0803EAD0(BallChainSoldierEntity* this, u32 distance) {
|
||||
return EntityWithinDistance(super, gUnk_020000B0->x.HALF.HI, gUnk_020000B0->y.HALF.HI - 4, distance);
|
||||
}
|
||||
|
||||
void (*const gUnk_080D06E0[])(BallChainSoldierEntity*) = {
|
||||
sub_0803E538,
|
||||
sub_0803E550,
|
||||
sub_0803E560,
|
||||
BallChainSoldier_CreateDeathFx,
|
||||
(void (*const)(BallChainSoldierEntity*))sub_08001242,
|
||||
nullsub_20,
|
||||
void (*const BallChainSoldier_Functions[])(BallChainSoldierEntity*) = {
|
||||
BallChainSoldier_OnTick,
|
||||
BallChainSoldier_OnCollision,
|
||||
BallChainSoldier_OnKnockback,
|
||||
BallChainSoldier_OnDeath,
|
||||
(void (*const)(BallChainSoldierEntity*))GenericConfused,
|
||||
BallChainSoldier_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080D06F8[])(BallChainSoldierEntity*) = {
|
||||
|
||||
+22
-24
@@ -8,12 +8,10 @@
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
|
||||
u32 sub_08021D00(Entity*);
|
||||
void sub_08021D44(Entity* this, u32 direction);
|
||||
|
||||
extern void (*const gUnk_080CB590[])(Entity*);
|
||||
extern void (*const Beetle_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CB5A8[])(Entity*);
|
||||
extern void (*const gUnk_080CB5C8[])(Entity*);
|
||||
extern void (*const gUnk_080CB5D4[])(Entity*);
|
||||
@@ -22,18 +20,18 @@ extern const s8 gUnk_080CB5DC[];
|
||||
extern const s8 gUnk_080CB5E4[];
|
||||
|
||||
void Beetle(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CB590);
|
||||
EnemyFunctionHandler(this, Beetle_Functions);
|
||||
}
|
||||
|
||||
void sub_08021768(Entity* this) {
|
||||
void Beetle_OnTick(Entity* this) {
|
||||
gUnk_080CB5A8[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08021780(Entity* this) {
|
||||
void Beetle_OnCollision(Entity* this) {
|
||||
switch (this->bitfield) {
|
||||
case 0x80:
|
||||
if (gPlayerState.framestate == PL_STATE_CLIMB) {
|
||||
sub_08021768(this);
|
||||
Beetle_OnTick(this);
|
||||
} else {
|
||||
this->action = 5;
|
||||
this->actionDelay = 0xb4;
|
||||
@@ -47,19 +45,19 @@ void sub_08021780(Entity* this) {
|
||||
}
|
||||
break;
|
||||
case 0x93:
|
||||
sub_08021768(this);
|
||||
Beetle_OnTick(this);
|
||||
break;
|
||||
}
|
||||
|
||||
if (this->health == 0)
|
||||
this->knockbackDuration = 0;
|
||||
|
||||
sub_0804AA30(this, gUnk_080CB590);
|
||||
EnemyFunctionHandlerAfterCollision(this, Beetle_Functions);
|
||||
}
|
||||
|
||||
void sub_08021818(Entity* this) {
|
||||
void Beetle_OnDeath(Entity* this) {
|
||||
if (this->type == 0) {
|
||||
sub_0804A7D4(this);
|
||||
GenericDeath(this);
|
||||
} else {
|
||||
Entity* ent = this->parent;
|
||||
if (ent) {
|
||||
@@ -70,7 +68,7 @@ void sub_08021818(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08021848(Entity* this) {
|
||||
void Beetle_OnGrabbed(Entity* this) {
|
||||
if (sub_0806F520(this)) {
|
||||
gUnk_080CB5C8[this->subAction](this);
|
||||
} else {
|
||||
@@ -89,7 +87,7 @@ void nullsub_130(Entity* this) {
|
||||
|
||||
void sub_08021888(Entity* this) {
|
||||
if (sub_0806F3E4(this))
|
||||
sub_08021818(this);
|
||||
Beetle_OnDeath(this);
|
||||
}
|
||||
|
||||
void Beetle_Initialize(Entity* this) {
|
||||
@@ -114,7 +112,7 @@ void sub_080218CC(Entity* this) {
|
||||
|
||||
GetNextFrame(this);
|
||||
if (this->frame & 1) {
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
if (sub_080044EC(this, 0x1c00) == 0)
|
||||
this->frameDuration = 1;
|
||||
}
|
||||
@@ -184,7 +182,7 @@ void sub_08021A64(Entity* this) {
|
||||
}
|
||||
sub_08021D44(this, tmp);
|
||||
}
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -206,7 +204,7 @@ void sub_08021AD8(Entity* this) {
|
||||
this->direction = (u8)tmp;
|
||||
EnqueueSFX(SFX_PLY_JUMP);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
if (!GravityUpdate(this, 0x1800))
|
||||
this->frameDuration = 1;
|
||||
}
|
||||
@@ -265,7 +263,7 @@ void sub_08021B64(Entity* this) {
|
||||
void sub_08021C58(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frame & 1) {
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
if (GravityUpdate(this, 0x1800) == 0)
|
||||
this->frameDuration = 1;
|
||||
}
|
||||
@@ -322,13 +320,13 @@ void sub_08021D44(Entity* this, u32 direction) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CB590[])(Entity*) = {
|
||||
sub_08021768,
|
||||
sub_08021780,
|
||||
sub_08001324,
|
||||
sub_08021818,
|
||||
sub_08001242,
|
||||
sub_08021848,
|
||||
void (*const Beetle_Functions[])(Entity*) = {
|
||||
Beetle_OnTick,
|
||||
Beetle_OnCollision,
|
||||
GenericKnockback,
|
||||
Beetle_OnDeath,
|
||||
GenericConfused,
|
||||
Beetle_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CB5A8[])(Entity*) = {
|
||||
|
||||
@@ -10,13 +10,11 @@
|
||||
#include "room.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void sub_080A2CC0(Entity*, void*, void*);
|
||||
|
||||
void BladeTrap(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
this->action = 1;
|
||||
this->child = GetCurrentRoomProperty(this->type);
|
||||
sub_080A2CC0(this, &this->child, &this->field_0x74);
|
||||
sub_080A2CC0(this, &this->child, &this->field_0x74.HWORD);
|
||||
}
|
||||
if (!(this->direction & 0x80)) {
|
||||
LinearMoveUpdate(this);
|
||||
|
||||
+16
-19
@@ -11,27 +11,24 @@
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08078954(Entity*);
|
||||
|
||||
void sub_0802CB68(Entity*);
|
||||
void sub_0802CBC4(Entity*);
|
||||
void sub_0802CC18(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CD5D4[])(Entity*);
|
||||
extern void (*const Bobomb_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CD5EC[])(Entity*);
|
||||
extern void (*const gUnk_080CD600[])(Entity*);
|
||||
extern void (*const gUnk_080CD618[])(Entity*);
|
||||
|
||||
void Bobomb(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CD5D4);
|
||||
EnemyFunctionHandler(this, Bobomb_Functions);
|
||||
}
|
||||
|
||||
void sub_0802C670(Entity* this) {
|
||||
void Bobomb_OnTick(Entity* this) {
|
||||
gUnk_080CD5EC[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0802C688(Entity* this) {
|
||||
void Bobomb_OnCollision(Entity* this) {
|
||||
if (this->bitfield & 0x80) {
|
||||
switch (this->bitfield & 0x7f) {
|
||||
case 0:
|
||||
@@ -68,10 +65,10 @@ void sub_0802C688(Entity* this) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
sub_0804AA30(this, gUnk_080CD5D4);
|
||||
EnemyFunctionHandlerAfterCollision(this, Bobomb_Functions);
|
||||
}
|
||||
|
||||
void sub_0802C7AC(Entity* this) {
|
||||
void Bobomb_OnGrabbed(Entity* this) {
|
||||
if (this->subAction < 3 && !sub_0806F520(this)) {
|
||||
this->subAction = 0;
|
||||
this->field_0xf = 1;
|
||||
@@ -140,8 +137,8 @@ void sub_0802C8B8(Entity* this) {
|
||||
sub_0802CBC4(this);
|
||||
}
|
||||
|
||||
void sub_0802C8C4(Entity* this) {
|
||||
sub_0804A7D4(this);
|
||||
void Bobomb_OnDeath(Entity* this) {
|
||||
GenericDeath(this);
|
||||
this->spriteSettings.draw = 0;
|
||||
}
|
||||
|
||||
@@ -161,7 +158,7 @@ void sub_0802C8D8(Entity* this) {
|
||||
|
||||
void sub_0802C91C(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
if (this->field_0x82.HALF.LO) {
|
||||
if (this->collisions) {
|
||||
sub_0800417E(this, this->collisions);
|
||||
@@ -305,13 +302,13 @@ void sub_0802CC18(Entity* this) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CD5D4[])(Entity*) = {
|
||||
sub_0802C670,
|
||||
sub_0802C688,
|
||||
sub_08001324,
|
||||
sub_0802C8C4,
|
||||
sub_08001242,
|
||||
sub_0802C7AC,
|
||||
void (*const Bobomb_Functions[])(Entity*) = {
|
||||
Bobomb_OnTick,
|
||||
Bobomb_OnCollision,
|
||||
GenericKnockback,
|
||||
Bobomb_OnDeath,
|
||||
GenericConfused,
|
||||
Bobomb_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CD5EC[])(Entity*) = {
|
||||
|
||||
+12
-12
@@ -24,7 +24,7 @@ void sub_0802B264(Entity*);
|
||||
|
||||
extern void (*const gUnk_080012C8[])(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CD0F0[])(Entity*);
|
||||
extern void (*const BombPeahat_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CD108[])(Entity*);
|
||||
extern void (*const gUnk_080CD120[])(Entity*);
|
||||
extern void (*const gUnk_080CD134[])(Entity*);
|
||||
@@ -41,11 +41,11 @@ void BombPeahat(Entity* this) {
|
||||
if ((this->type == 2) && (iVar1 = sub_080012DC(this), iVar1)) {
|
||||
gUnk_080012C8[iVar1](this);
|
||||
} else {
|
||||
gUnk_080CD0F0[GetNextFunction(this)](this);
|
||||
BombPeahat_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0802A84C(Entity* this) {
|
||||
void BombPeahat_OnTick(Entity* this) {
|
||||
switch (this->type) {
|
||||
default:
|
||||
gUnk_080CD108[this->action](this);
|
||||
@@ -61,14 +61,14 @@ void sub_0802A84C(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0802A8AC(Entity* this) {
|
||||
void BombPeahat_OnCollision(Entity* this) {
|
||||
this->field_0x80.HALF.HI = 0;
|
||||
if (this->type < 2) {
|
||||
InitializeAnimation(this, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0802A8C8(Entity* this) {
|
||||
void BombPeahat_OnGrabbed(Entity* this) {
|
||||
gUnk_080CD140[this->subAction](this);
|
||||
}
|
||||
|
||||
@@ -705,13 +705,13 @@ void sub_0802B264(Entity* this) {
|
||||
#endif
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CD0F0[])(Entity*) = {
|
||||
sub_0802A84C,
|
||||
sub_0802A8AC,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
sub_0802A8C8,
|
||||
void (*const BombPeahat_Functions[])(Entity*) = {
|
||||
BombPeahat_OnTick,
|
||||
BombPeahat_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
BombPeahat_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CD108[])(Entity*) = {
|
||||
|
||||
+13
-10
@@ -11,18 +11,16 @@ typedef struct {
|
||||
u16 unk_0x76;
|
||||
} BombarossaEntity;
|
||||
|
||||
void (*const gUnk_080CEB38[])(Entity*);
|
||||
void (*const Bombarossa_Functions[])(Entity*);
|
||||
const s8 gUnk_080CEB50[];
|
||||
|
||||
extern void sub_080A2CC0(Entity*, void*, void*);
|
||||
|
||||
void sub_0803350C(BombarossaEntity* this);
|
||||
|
||||
void Bombarossa(Entity* this) {
|
||||
gUnk_080CEB38[GetNextFunction(this)](this);
|
||||
Bombarossa_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
|
||||
void sub_080333D4(BombarossaEntity* this) {
|
||||
void Bombarossa_OnTick(BombarossaEntity* this) {
|
||||
if (super->action == 0) {
|
||||
super->action = 1;
|
||||
super->actionDelay = Random() & 0xf;
|
||||
@@ -41,7 +39,7 @@ void sub_080333D4(BombarossaEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08033448(BombarossaEntity* this) {
|
||||
void Bombarossa_OnCollision(BombarossaEntity* this) {
|
||||
Entity* ent;
|
||||
switch (super->bitfield & 0x7f) {
|
||||
default:
|
||||
@@ -56,12 +54,12 @@ void sub_08033448(BombarossaEntity* this) {
|
||||
case 27:
|
||||
case 29:
|
||||
case 30:
|
||||
sub_0804AA30(super, gUnk_080CEB38);
|
||||
EnemyFunctionHandlerAfterCollision(super, Bombarossa_Functions);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_158() {
|
||||
void Bombarossa_OnGrabbed() {
|
||||
}
|
||||
|
||||
void sub_0803350C(BombarossaEntity* this) {
|
||||
@@ -74,8 +72,13 @@ void sub_0803350C(BombarossaEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void (*const gUnk_080CEB38[])(Entity*) = {
|
||||
(EntityActionPtr)sub_080333D4, (EntityActionPtr)sub_08033448, sub_08001324, sub_0804A7D4, sub_08001242, nullsub_158,
|
||||
void (*const Bombarossa_Functions[])(Entity*) = {
|
||||
(EntityActionPtr)Bombarossa_OnTick,
|
||||
(EntityActionPtr)Bombarossa_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
Bombarossa_OnGrabbed,
|
||||
};
|
||||
|
||||
const s8 gUnk_080CEB50[] = {
|
||||
|
||||
+16
-12
@@ -35,7 +35,7 @@ u32 sub_0803C6F8(BowMoblinEntity*);
|
||||
u32 sub_0803C568(BowMoblinEntity*);
|
||||
void sub_0803C664(BowMoblinEntity*);
|
||||
|
||||
void (*const gUnk_080CFF78[])(Entity*);
|
||||
void (*const BowMoblin_Functions[])(Entity*);
|
||||
void (*const gUnk_080CFF90[])(BowMoblinEntity*);
|
||||
|
||||
const s8 gUnk_080CFFA4[8];
|
||||
@@ -44,21 +44,21 @@ const u16 gUnk_080CFFBC[4];
|
||||
const s8 gUnk_080CFFC4[8];
|
||||
|
||||
void BowMoblin(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CFF78);
|
||||
EnemyFunctionHandler(this, BowMoblin_Functions);
|
||||
SetChildOffset(this, 0, 1, -0x18);
|
||||
}
|
||||
|
||||
void sub_0803C180(BowMoblinEntity* this) {
|
||||
void BowMoblin_OnTick(BowMoblinEntity* this) {
|
||||
gUnk_080CFF90[super->action](this);
|
||||
}
|
||||
|
||||
void sub_0803C198(BowMoblinEntity* this) {
|
||||
void BowMoblin_OnCollision(BowMoblinEntity* this) {
|
||||
Entity* pEVar1;
|
||||
|
||||
if (super->field_0x43 != 0) {
|
||||
sub_0804A9FC(super, 0x1c);
|
||||
if (super->confusedTime != 0) {
|
||||
Create0x68FX(super, FX_STARS);
|
||||
}
|
||||
sub_0804AA30(super, (EntityActionArray)gUnk_080CFF78);
|
||||
EnemyFunctionHandlerAfterCollision(super, (EntityActionArray)BowMoblin_Functions);
|
||||
if ((super->bitfield & 0x80) != 0) {
|
||||
sub_0803C5F0(this);
|
||||
pEVar1 = super->child;
|
||||
@@ -68,7 +68,7 @@ void sub_0803C198(BowMoblinEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_168(BowMoblinEntity* this) {
|
||||
void BowMoblin_OnGrabbed(BowMoblinEntity* this) {
|
||||
}
|
||||
|
||||
void sub_0803C1E0(BowMoblinEntity* this) {
|
||||
@@ -365,7 +365,7 @@ void sub_0803C6DC(BowMoblinEntity* this) {
|
||||
super->speed = tmp;
|
||||
}
|
||||
|
||||
ProcessMovement(super);
|
||||
ProcessMovement0(super);
|
||||
GetNextFrame(super);
|
||||
}
|
||||
|
||||
@@ -388,9 +388,13 @@ void sub_0803C714(BowMoblinEntity* this) {
|
||||
PositionRelative(super, child, offsetX, offsetY);
|
||||
}
|
||||
|
||||
void (*const gUnk_080CFF78[])(Entity*) = {
|
||||
(EntityActionPtr)sub_0803C180, (EntityActionPtr)sub_0803C198, sub_08001324, sub_0804A7D4, sub_08001242,
|
||||
(EntityActionPtr)nullsub_168,
|
||||
void (*const BowMoblin_Functions[])(Entity*) = {
|
||||
(EntityActionPtr)BowMoblin_OnTick,
|
||||
(EntityActionPtr)BowMoblin_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
(EntityActionPtr)BowMoblin_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CFF90[])(BowMoblinEntity*) = {
|
||||
|
||||
+21
-21
@@ -14,22 +14,22 @@
|
||||
#include "game.h"
|
||||
#include "item.h"
|
||||
|
||||
void sub_08028E9C(Entity*);
|
||||
void sub_08028EDC(Entity*);
|
||||
bool32 sub_08028F98(Entity*, u32);
|
||||
bool32 sub_08028FDC(Entity*);
|
||||
void sub_08028FFC(Entity*);
|
||||
void sub_08029078(Entity*);
|
||||
void sub_080290E0(Entity*, u32);
|
||||
void sub_080290FC(Entity*);
|
||||
bool32 sub_0802915C(Entity*);
|
||||
bool32 sub_080291DC(Entity*);
|
||||
void sub_0802922C(Entity*);
|
||||
void sub_08028E9C(Entity*);
|
||||
void sub_08028FFC(Entity*);
|
||||
void sub_0802925C(Entity*);
|
||||
void sub_080290E0(Entity*, u32);
|
||||
bool32 sub_08028F98(Entity*, u32);
|
||||
void sub_08029078(Entity*);
|
||||
bool32 sub_08028FDC(Entity*);
|
||||
void sub_080290FC(Entity*);
|
||||
void sub_08028EDC(Entity*);
|
||||
|
||||
extern const struct SalesOffering gUnk_080CC954[];
|
||||
extern const u8 gUnk_080CC9C0[];
|
||||
extern void (*const gUnk_080CC9C8[])(Entity*);
|
||||
extern void (*const BusinessScrub_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CC9E0[])(Entity*);
|
||||
extern const u8 gUnk_080CCA04[];
|
||||
|
||||
@@ -45,14 +45,14 @@ struct SalesOffering {
|
||||
};
|
||||
|
||||
void BusinessScrub(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CC9C8);
|
||||
EnemyFunctionHandler(this, BusinessScrub_Functions);
|
||||
}
|
||||
|
||||
void sub_0802891C(Entity* this) {
|
||||
void BusinessScrub_OnTick(Entity* this) {
|
||||
gUnk_080CC9E0[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08028934(Entity* this) {
|
||||
void BusinessScrub_OnCollision(Entity* this) {
|
||||
Entity* pEVar1;
|
||||
|
||||
if (this->hitType == 1 && (this->bitfield & 0x7f) == 0x42) {
|
||||
@@ -69,7 +69,7 @@ void sub_08028934(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_140(Entity* this) {
|
||||
void BusinessScrub_OnGrabbed(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ void sub_08028BC4(Entity* this) {
|
||||
this->actionDelay = 0x1e;
|
||||
this->field_0xf = 5;
|
||||
sub_080290E0(this, 0);
|
||||
iVar1 = sub_0804A9FC(this, 0x1c);
|
||||
iVar1 = Create0x68FX(this, FX_STARS);
|
||||
if (iVar1 != NULL) {
|
||||
iVar1->spritePriority.b0 = 3;
|
||||
iVar1->z.HALF.HI -= 12;
|
||||
@@ -585,13 +585,13 @@ const u8 gUnk_080CC9C0[] = {
|
||||
|
||||
};
|
||||
|
||||
void (*const gUnk_080CC9C8[])(Entity*) = {
|
||||
sub_0802891C,
|
||||
sub_08028934,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
nullsub_140,
|
||||
void (*const BusinessScrub_Functions[])(Entity*) = {
|
||||
BusinessScrub_OnTick,
|
||||
BusinessScrub_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
BusinessScrub_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CC9E0[])(Entity*) = {
|
||||
|
||||
@@ -12,17 +12,15 @@ typedef struct {
|
||||
u32 unk_84;
|
||||
} BusinessScrubPrologueEntity;
|
||||
|
||||
extern void sub_080954AC(Entity*, u32);
|
||||
extern u16 script_BusinessScrubIntro[];
|
||||
|
||||
void (*const gUnk_080D19FC[])(Entity*);
|
||||
void (*const BusinessScrubPrologue_Functions[])(Entity*);
|
||||
void (*const gUnk_080D1A14[])(BusinessScrubPrologueEntity*);
|
||||
const u8 gUnk_080D1A38[];
|
||||
const s8 gUnk_080D1A3E[];
|
||||
const u16 gUnk_080D1A4E[];
|
||||
|
||||
extern void sub_08095C48(Entity* this);
|
||||
extern void sub_080954AC(Entity*, u32);
|
||||
|
||||
void sub_08046030(BusinessScrubPrologueEntity*, u32);
|
||||
bool32 sub_08045F54(BusinessScrubPrologueEntity*, u32);
|
||||
void sub_08045FF0(BusinessScrubPrologueEntity*);
|
||||
@@ -31,16 +29,16 @@ void sub_0804604C(BusinessScrubPrologueEntity*);
|
||||
void sub_08045FA0(BusinessScrubPrologueEntity*);
|
||||
|
||||
void BusinessScrubPrologue(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080D19FC);
|
||||
EnemyFunctionHandler(this, BusinessScrubPrologue_Functions);
|
||||
}
|
||||
|
||||
void sub_08045B98(BusinessScrubPrologueEntity* this) {
|
||||
void BusinessScrubPrologue_OnTick(BusinessScrubPrologueEntity* this) {
|
||||
super->spriteSettings.draw = 1;
|
||||
gUnk_080D1A14[super->action](this);
|
||||
sub_0800445C(super);
|
||||
}
|
||||
|
||||
void sub_08045BC8(BusinessScrubPrologueEntity* this) {
|
||||
void BusinessScrubPrologue_OnCollision(BusinessScrubPrologueEntity* this) {
|
||||
Entity* ent;
|
||||
if (super->hitType == 1) {
|
||||
if ((super->bitfield & 0x7f) == 0x42) {
|
||||
@@ -61,7 +59,7 @@ void sub_08045BC8(BusinessScrubPrologueEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_174(BusinessScrubPrologueEntity* this) {
|
||||
void BusinessScrubPrologue_OnGrabbed(BusinessScrubPrologueEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08045C3C(BusinessScrubPrologueEntity* this) {
|
||||
@@ -187,7 +185,7 @@ void sub_08045E14(BusinessScrubPrologueEntity* this) {
|
||||
super->action = 5;
|
||||
super->subAction = 0;
|
||||
sub_08046030(this, 0);
|
||||
ent = sub_0804A9FC(super, 0x1c);
|
||||
ent = Create0x68FX(super, FX_STARS);
|
||||
if (ent) {
|
||||
ent->spritePriority.b0 = 3;
|
||||
ent->z.HALF.HI -= 0xc;
|
||||
@@ -329,9 +327,13 @@ void sub_08046078(BusinessScrubPrologueEntity* this) {
|
||||
sub_0804AA1C(super);
|
||||
}
|
||||
|
||||
void (*const gUnk_080D19FC[])(Entity*) = {
|
||||
(EntityActionPtr)sub_08045B98, (EntityActionPtr)sub_08045BC8, sub_08001324, sub_0804A7D4, sub_08001242,
|
||||
(EntityActionPtr)nullsub_174,
|
||||
void (*const BusinessScrubPrologue_Functions[])(Entity*) = {
|
||||
(EntityActionPtr)BusinessScrubPrologue_OnTick,
|
||||
(EntityActionPtr)BusinessScrubPrologue_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
(EntityActionPtr)BusinessScrubPrologue_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080D1A14[])(BusinessScrubPrologueEntity*) = {
|
||||
|
||||
+12
-17
@@ -8,13 +8,8 @@
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern u32 sub_0804A024(Entity*, u32, u32);
|
||||
extern bool32 sub_080AF038(Entity*);
|
||||
|
||||
extern void (*const gUnk_080012C8[])(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CD27C[])(Entity*);
|
||||
extern void (*const Chaser_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CD298[])(Entity*);
|
||||
|
||||
void Chaser(Entity* this) {
|
||||
@@ -22,11 +17,11 @@ void Chaser(Entity* this) {
|
||||
if (idx) {
|
||||
gUnk_080012C8[idx](this);
|
||||
} else {
|
||||
gUnk_080CD27C[GetNextFunction(this)](this);
|
||||
Chaser_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0802B518(Entity* this) {
|
||||
void Chaser_OnTick(Entity* this) {
|
||||
gUnk_080CD298[this->action](this);
|
||||
}
|
||||
|
||||
@@ -54,7 +49,7 @@ void sub_0802B56C(Entity* this) {
|
||||
this->speed = 0x40;
|
||||
}
|
||||
|
||||
if (sub_080AF038(this)) {
|
||||
if (ProcessMovement12(this)) {
|
||||
if (this->animIndex != 1) {
|
||||
InitializeAnimation(this, 1);
|
||||
}
|
||||
@@ -77,14 +72,14 @@ void sub_0802B5C8(Entity* this) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CD27C[])(Entity*) = {
|
||||
sub_0802B518,
|
||||
sub_0802B518,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
sub_0802B518,
|
||||
sub_0802B518,
|
||||
void (*const Chaser_Functions[])(Entity*) = {
|
||||
Chaser_OnTick,
|
||||
Chaser_OnTick,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
Chaser_OnTick,
|
||||
Chaser_OnTick,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CD298[])(Entity*) = {
|
||||
|
||||
+29
-37
@@ -9,14 +9,6 @@
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern void sub_08001318(Entity*);
|
||||
extern void sub_080043A8(Entity*);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern void sub_080AF160(Entity*);
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
|
||||
void sub_0801F328(Entity*);
|
||||
@@ -35,7 +27,7 @@ u32 sub_0801FBD0(Entity*);
|
||||
void Chuchu_JumpAtPlayer(Entity*);
|
||||
|
||||
extern void (*const gUnk_080012C8[])(Entity*);
|
||||
extern void (*const gUnk_080CA21C[])(Entity*);
|
||||
extern void (*const Chuchu_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CA234[])(Entity*);
|
||||
extern void (*const gUnk_080CA25C[])(Entity*);
|
||||
extern void (*const gUnk_080CA288[])(Entity*);
|
||||
@@ -77,7 +69,7 @@ void Chuchu(Entity* this) {
|
||||
break;
|
||||
}
|
||||
this->field_0x80.HALF.HI = index;
|
||||
gUnk_080CA21C[GetNextFunction(this)](this);
|
||||
Chuchu_Functions[GetNextFunction(this)](this);
|
||||
if (*(char*)(*(int*)&this->field_0x68 + 10) == 0x1c) {
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
} else if (this->type == 2) {
|
||||
@@ -101,7 +93,7 @@ void Chuchu_OnTick(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801EF40(Entity* this) {
|
||||
void Chuchu_OnCollision(Entity* this) {
|
||||
u8 health;
|
||||
|
||||
if (this->type == 2) {
|
||||
@@ -115,7 +107,7 @@ void sub_0801EF40(Entity* this) {
|
||||
if (health) {
|
||||
if (this->bitfield == 0x94) {
|
||||
sub_0801FB68(this);
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
Create0x68FX(this, FX_STARS);
|
||||
InitializeAnimation(this, 6);
|
||||
} else if (this->field_0x80.HALF.LO != health) {
|
||||
sub_0801FB68(this);
|
||||
@@ -127,12 +119,12 @@ void sub_0801EF40(Entity* this) {
|
||||
InitializeAnimation(this, 9);
|
||||
}
|
||||
this->field_0x80.HALF.LO = this->health;
|
||||
sub_0804AA30(this, gUnk_080CA21C);
|
||||
EnemyFunctionHandlerAfterCollision(this, Chuchu_Functions);
|
||||
}
|
||||
|
||||
void sub_0801EFD8(Entity* this) {
|
||||
if (sub_0806F520(this) == 0 && this->field_0x43) {
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
void Chuchu_OnGrabbed(Entity* this) {
|
||||
if (sub_0806F520(this) == 0 && this->confusedTime) {
|
||||
Create0x68FX(this, FX_STARS);
|
||||
InitializeAnimation(this, 6);
|
||||
} else {
|
||||
if (this->animIndex != 8) {
|
||||
@@ -144,17 +136,17 @@ void sub_0801EFD8(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801F02C(Entity* this) {
|
||||
void Chuchu_OnKnockback(Entity* this) {
|
||||
if (this->animIndex == 6)
|
||||
GetNextFrame(this);
|
||||
sub_08001318(this);
|
||||
}
|
||||
|
||||
void sub_0801F048(Entity* this) {
|
||||
void Chuchu_OnDeath(Entity* this) {
|
||||
GravityUpdate(this, 0x1800);
|
||||
GetNextFrame(this);
|
||||
if (this->type == 0) {
|
||||
sub_0804A7D4(this);
|
||||
GenericDeath(this);
|
||||
} else if (this->type == 1) {
|
||||
CreateDeathFx(this, 0xf2, 0);
|
||||
} else {
|
||||
@@ -162,10 +154,10 @@ void sub_0801F048(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801F084(Entity* this) {
|
||||
void Chuchu_OnConfused(Entity* this) {
|
||||
if ((this->frame & 0x80) == 0)
|
||||
GetNextFrame(this);
|
||||
sub_08001242(this);
|
||||
GenericConfused(this);
|
||||
}
|
||||
|
||||
void sub_0801F0A4(Entity* this) {
|
||||
@@ -200,7 +192,7 @@ void sub_0801F12C(Entity* this) {
|
||||
if ((this->field_0xf++ & 7) == 0) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
}
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == 0) {
|
||||
if (PlayerInRange(this, 1, 0x38)) {
|
||||
@@ -222,7 +214,7 @@ void sub_0801F1B0(Entity* this) {
|
||||
this->hitType = 90;
|
||||
EnqueueSFX(SFX_12B);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
if (GravityUpdate(this, 0x4000) == 0)
|
||||
GetNextFrame(this);
|
||||
} else {
|
||||
@@ -257,7 +249,7 @@ void sub_0801F270(Entity* this) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
}
|
||||
|
||||
sub_080AF160(this);
|
||||
ProcessMovement5(this);
|
||||
GetNextFrame(this);
|
||||
if (sub_0801FBD0(this))
|
||||
return;
|
||||
@@ -405,7 +397,7 @@ void sub_0801F508(Entity* this) {
|
||||
if (tmp == 4) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
}
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -418,7 +410,7 @@ void sub_0801F584(Entity* this) {
|
||||
this->hitType = 91;
|
||||
EnqueueSFX(SFX_12B);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
if (GravityUpdate(this, 0x4000) == 0)
|
||||
GetNextFrame(this);
|
||||
|
||||
@@ -464,7 +456,7 @@ void sub_0801F688(Entity* this) {
|
||||
|
||||
if (sub_0801FBD0(this) || this->field_0x82.HALF.HI) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
sub_080AF160(this);
|
||||
ProcessMovement5(this);
|
||||
GetNextFrame(this);
|
||||
} else {
|
||||
sub_0801F748(this);
|
||||
@@ -559,7 +551,7 @@ void sub_0801F884(Entity* this) {
|
||||
if (this->field_0xf) {
|
||||
this->field_0xf--;
|
||||
} else {
|
||||
Entity* ent = sub_0804A9FC(this, 0x1b);
|
||||
Entity* ent = Create0x68FX(this, FX_LIGHTNING_STRIKE);
|
||||
if (ent) {
|
||||
ent->type2 = 64;
|
||||
this->action = 4;
|
||||
@@ -583,7 +575,7 @@ void sub_0801F8C0(Entity* this) {
|
||||
if (tmp == 4) {
|
||||
this->direction = GetFacingDirection(this, gUnk_020000B0);
|
||||
}
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -595,7 +587,7 @@ void sub_0801F940(Entity* this) {
|
||||
this->frame ^= 1;
|
||||
EnqueueSFX(SFX_12B);
|
||||
}
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
if (GravityUpdate(this, 0x4000) == 0)
|
||||
GetNextFrame(this);
|
||||
} else {
|
||||
@@ -635,7 +627,7 @@ void sub_0801F9E0(Entity* this) {
|
||||
void sub_0801FA30(Entity* this) {
|
||||
if (sub_0801FBD0(this)) {
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
sub_080AF160(this);
|
||||
ProcessMovement5(this);
|
||||
GetNextFrame(this);
|
||||
} else if (sub_08049FDC(this, 1) == 0) {
|
||||
this->action = 9;
|
||||
@@ -728,13 +720,13 @@ void Chuchu_JumpAtPlayer(Entity* this) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CA21C[])(Entity*) = {
|
||||
void (*const Chuchu_Functions[])(Entity*) = {
|
||||
Chuchu_OnTick,
|
||||
sub_0801EF40,
|
||||
sub_0801F02C,
|
||||
sub_0801F048,
|
||||
sub_0801F084,
|
||||
sub_0801EFD8,
|
||||
Chuchu_OnCollision,
|
||||
Chuchu_OnKnockback,
|
||||
Chuchu_OnDeath,
|
||||
Chuchu_OnConfused,
|
||||
Chuchu_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CA234[])(Entity*) = {
|
||||
|
||||
+13
-14
@@ -6,10 +6,9 @@
|
||||
*/
|
||||
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
void sub_08027870(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CC19C[])(Entity*);
|
||||
extern void (*const ChuchuBoss_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CC1B0[])(Entity*);
|
||||
extern const u8 gUnk_080CC1B8[];
|
||||
extern void (*const gUnk_080CC1C8[])(Entity*);
|
||||
@@ -27,18 +26,18 @@ extern const u16 gUnk_080CC2BC[];
|
||||
extern const s8 gUnk_080CC2DC[];
|
||||
|
||||
void ChuchuBoss(Entity* this) {
|
||||
gUnk_080CC19C[GetNextFunction(this)]((Entity*)this);
|
||||
ChuchuBoss_Functions[GetNextFunction(this)]((Entity*)this);
|
||||
}
|
||||
|
||||
void sub_08025CBC(Entity* this) {
|
||||
sub_08001324(this);
|
||||
void ChuchuBoss_OnKnockback(Entity* this) {
|
||||
GenericKnockback(this);
|
||||
if (this->type == 0) {
|
||||
sub_08027870(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08025DC0(Entity*);
|
||||
void sub_08025CD4(Entity*);
|
||||
void ChuchuBoss_OnTick(Entity*);
|
||||
void ChuchuBoss_OnDeath(Entity*);
|
||||
void sub_08025DD8(Entity*);
|
||||
void sub_08026060(Entity*);
|
||||
void sub_08026110(Entity*);
|
||||
@@ -77,12 +76,12 @@ void sub_080269CC(Entity*);
|
||||
void sub_08026BE8(Entity*);
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CC19C[])(Entity*) = {
|
||||
sub_08025DC0,
|
||||
sub_08025DC0,
|
||||
sub_08025CBC,
|
||||
sub_08025CD4,
|
||||
sub_08001242,
|
||||
void (*const ChuchuBoss_Functions[])(Entity*) = {
|
||||
ChuchuBoss_OnTick,
|
||||
ChuchuBoss_OnTick,
|
||||
ChuchuBoss_OnKnockback,
|
||||
ChuchuBoss_OnDeath,
|
||||
GenericConfused,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CC1B0[])(Entity*) = {
|
||||
|
||||
+9
-9
@@ -15,7 +15,7 @@ typedef struct {
|
||||
u8 unk_84;
|
||||
} CrowEntity;
|
||||
|
||||
void (*const gUnk_080CE978[])(Entity*);
|
||||
void (*const Crow_Functions[])(Entity*);
|
||||
void (*const gUnk_080CE990[])(CrowEntity*);
|
||||
void (*const gUnk_080CE9A4[])(CrowEntity*);
|
||||
extern Entity* gUnk_020000B0;
|
||||
@@ -26,10 +26,10 @@ void sub_08032B38(CrowEntity* this);
|
||||
void sub_08032B10(CrowEntity* this);
|
||||
|
||||
void Crow(Entity* this) {
|
||||
gUnk_080CE978[GetNextFunction(this)](this);
|
||||
Crow_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
|
||||
void sub_08032810(CrowEntity* this) {
|
||||
void Crow_OnTick(CrowEntity* this) {
|
||||
gUnk_080CE990[super->action](this);
|
||||
if (super->field_0xf) {
|
||||
if (--super->field_0xf == 0) {
|
||||
@@ -38,7 +38,7 @@ void sub_08032810(CrowEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08032844(CrowEntity* this) {
|
||||
void Crow_OnCollision(CrowEntity* this) {
|
||||
if (super->bitfield & 0x80) {
|
||||
if ((super->bitfield & 0x3f) == 0) {
|
||||
COLLISION_OFF(super);
|
||||
@@ -64,7 +64,7 @@ void sub_08032844(CrowEntity* this) {
|
||||
GetNextFrame(super);
|
||||
}
|
||||
|
||||
void sub_080328B8(CrowEntity* this) {
|
||||
void Crow_OnGrabbed(CrowEntity* this) {
|
||||
gUnk_080CE9A4[super->subAction](this);
|
||||
GetNextFrame(super);
|
||||
|
||||
@@ -90,7 +90,7 @@ void sub_0803290C(CrowEntity* this) {
|
||||
|
||||
void sub_08032914(CrowEntity* this) {
|
||||
if (sub_0806F3E4(super)) {
|
||||
sub_0804A7D4(super);
|
||||
GenericDeath(super);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,9 +266,9 @@ void sub_08032B38(CrowEntity* this) {
|
||||
GetNextFrame(super);
|
||||
}
|
||||
|
||||
void (*const gUnk_080CE978[])(Entity*) = {
|
||||
(EntityActionPtr)sub_08032810, (EntityActionPtr)sub_08032844, sub_08001324, sub_0804A7D4, sub_08001242,
|
||||
(EntityActionPtr)sub_080328B8,
|
||||
void (*const Crow_Functions[])(Entity*) = {
|
||||
(EntityActionPtr)Crow_OnTick, (EntityActionPtr)Crow_OnCollision, GenericKnockback, GenericDeath, GenericConfused,
|
||||
(EntityActionPtr)Crow_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CE990[])(CrowEntity*) = {
|
||||
|
||||
+28
-24
@@ -18,7 +18,7 @@ typedef struct {
|
||||
u16 y;
|
||||
} PosOffset;
|
||||
|
||||
void (*const gUnk_080CF778[])(Entity*);
|
||||
void (*const CuccoAggr_Functions[])(Entity*);
|
||||
void (*const gUnk_080CF790[])(CuccoAggrEntity*);
|
||||
void (*const gUnk_080CF7AC[])(CuccoAggrEntity*);
|
||||
const u8 gUnk_080CF7BC[];
|
||||
@@ -30,33 +30,33 @@ const u16 gUnk_080CF828[];
|
||||
const s8 gCuccoAggrFxHorizontalOffsets[];
|
||||
const u8 gCuccoAggrFx[];
|
||||
|
||||
extern void sub_080391B4(CuccoAggrEntity* this);
|
||||
extern void sub_08039218(CuccoAggrEntity* this);
|
||||
extern void CuccoAggr_CreateFx(CuccoAggrEntity* this);
|
||||
extern void sub_08039120(CuccoAggrEntity* this);
|
||||
extern void sub_08039140(CuccoAggrEntity* this);
|
||||
extern void sub_0803901C(CuccoAggrEntity* this);
|
||||
extern void sub_08039298(CuccoAggrEntity* this);
|
||||
extern void sub_080390F8(CuccoAggrEntity* this);
|
||||
extern void sub_080390C0(CuccoAggrEntity* this);
|
||||
extern bool32 CuccoAggr_IsOutsideScroll(CuccoAggrEntity* this);
|
||||
void sub_080391B4(CuccoAggrEntity* this);
|
||||
void sub_08039218(CuccoAggrEntity* this);
|
||||
void CuccoAggr_CreateFx(CuccoAggrEntity* this);
|
||||
void sub_08039120(CuccoAggrEntity* this);
|
||||
void sub_08039140(CuccoAggrEntity* this);
|
||||
void sub_0803901C(CuccoAggrEntity* this);
|
||||
void sub_08039298(CuccoAggrEntity* this);
|
||||
void sub_080390F8(CuccoAggrEntity* this);
|
||||
void sub_080390C0(CuccoAggrEntity* this);
|
||||
bool32 CuccoAggr_IsOutsideScroll(CuccoAggrEntity* this);
|
||||
|
||||
void CuccoAggr(Entity* this) {
|
||||
u32 index = sub_080012DC(this);
|
||||
if (index) {
|
||||
gUnk_080012C8[index](this);
|
||||
} else {
|
||||
gUnk_080CF778[GetNextFunction(this)](this);
|
||||
CuccoAggr_Functions[GetNextFunction(this)](this);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
sub_080391B4((CuccoAggrEntity*)this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08038CF8(CuccoAggrEntity* this) {
|
||||
void CuccoAggr_OnTick(CuccoAggrEntity* this) {
|
||||
gUnk_080CF790[super->action](this);
|
||||
}
|
||||
|
||||
void sub_08038D10(CuccoAggrEntity* this) {
|
||||
void CuccoAggr_OnCollision(CuccoAggrEntity* this) {
|
||||
if (super->type != 2) {
|
||||
if (this->unk_7a == 0 && CheckRoomFlag(1) == 0) {
|
||||
if (super->health <= 0xbf) {
|
||||
@@ -70,14 +70,14 @@ void sub_08038D10(CuccoAggrEntity* this) {
|
||||
CuccoAggr_CreateFx(this);
|
||||
}
|
||||
|
||||
if (super->field_0x43) {
|
||||
sub_0804A9FC(super, 0x1c);
|
||||
if (super->confusedTime) {
|
||||
Create0x68FX(super, FX_STARS);
|
||||
}
|
||||
|
||||
sub_0804AA30(super, gUnk_080CF778);
|
||||
EnemyFunctionHandlerAfterCollision(super, CuccoAggr_Functions);
|
||||
}
|
||||
|
||||
void nullsub_165(CuccoAggrEntity* this) {
|
||||
void CuccoAggr_OnGrabbed(CuccoAggrEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08038D78(CuccoAggrEntity* this) {
|
||||
@@ -122,7 +122,7 @@ void sub_08038E18(CuccoAggrEntity* this) {
|
||||
super->spritePriority.b1 = 1;
|
||||
super->spritePriority.b0 = 4;
|
||||
super->direction = Random() & 0x1f;
|
||||
ProcessMovement(super);
|
||||
ProcessMovement0(super);
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
}
|
||||
}
|
||||
@@ -148,7 +148,7 @@ void sub_08038ED0(CuccoAggrEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08038EE0(CuccoAggrEntity* this) {
|
||||
ProcessMovement(super);
|
||||
ProcessMovement0(super);
|
||||
GetNextFrame(super);
|
||||
sub_08039298(this);
|
||||
if (GravityUpdate(super, 0x1C00) == 0) {
|
||||
@@ -172,7 +172,7 @@ void sub_08038F20(CuccoAggrEntity* this) {
|
||||
void sub_08038F44(CuccoAggrEntity* this) {
|
||||
super->direction = GetFacingDirection(&gPlayerEntity, super);
|
||||
sub_080390F8(this);
|
||||
ProcessMovement(super);
|
||||
ProcessMovement0(super);
|
||||
sub_080044EC(super, 0x1800);
|
||||
GetNextFrame(super);
|
||||
sub_08039298(this);
|
||||
@@ -332,9 +332,13 @@ void sub_08039298(CuccoAggrEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void (*const gUnk_080CF778[])(Entity*) = {
|
||||
(EntityActionPtr)sub_08038CF8, (EntityActionPtr)sub_08038D10, sub_08001324, sub_0804A7D4, sub_08001242,
|
||||
(EntityActionPtr)nullsub_165,
|
||||
void (*const CuccoAggr_Functions[])(Entity*) = {
|
||||
(EntityActionPtr)CuccoAggr_OnTick,
|
||||
(EntityActionPtr)CuccoAggr_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
(EntityActionPtr)CuccoAggr_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CF790[])(CuccoAggrEntity*) = {
|
||||
|
||||
+15
-15
@@ -14,22 +14,22 @@ void sub_08022B0C(Entity*);
|
||||
u32 sub_08022B20(Entity*);
|
||||
void sub_08022B44(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CBB64[])(Entity*);
|
||||
extern void (*const CuccoChickAggr_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CBB7C[])(Entity*);
|
||||
|
||||
void CuccoChickAggr(Entity* this) {
|
||||
gUnk_080CBB64[GetNextFunction(this)](this);
|
||||
CuccoChickAggr_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
|
||||
void sub_08022934(Entity* this) {
|
||||
void CuccoChickAggr_OnTick(Entity* this) {
|
||||
gUnk_080CBB7C[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0802294C(Entity* this) {
|
||||
sub_0804AA30(this, gUnk_080CBB64);
|
||||
void CuccoChickAggr_OnCollision(Entity* this) {
|
||||
EnemyFunctionHandlerAfterCollision(this, CuccoChickAggr_Functions);
|
||||
}
|
||||
|
||||
void nullsub_132(Entity* this) {
|
||||
void CuccoChickAggr_OnGrabbed(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08022960(Entity* this) {
|
||||
@@ -56,7 +56,7 @@ void sub_08022988(Entity* this) {
|
||||
EnqueueSFX(SFX_VO_CHEEP);
|
||||
}
|
||||
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
if (GravityUpdate(this, 0x2000) == 0) {
|
||||
if (--this->actionDelay == 0) {
|
||||
sub_08022A88(this);
|
||||
@@ -92,7 +92,7 @@ void sub_08022A40(Entity* this) {
|
||||
this->frameIndex = 1;
|
||||
}
|
||||
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
if (GravityUpdate(this, 0x2000) == 0) {
|
||||
if (--this->actionDelay == 0) {
|
||||
sub_08022A88(this);
|
||||
@@ -151,13 +151,13 @@ void sub_08022B44(Entity* this) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CBB64[])(Entity*) = {
|
||||
sub_08022934,
|
||||
sub_0802294C,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
nullsub_132,
|
||||
void (*const CuccoChickAggr_Functions[])(Entity*) = {
|
||||
CuccoChickAggr_OnTick,
|
||||
CuccoChickAggr_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
CuccoChickAggr_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CBB7C[])(Entity*) = {
|
||||
|
||||
+8
-8
@@ -1,19 +1,19 @@
|
||||
#include "enemy.h"
|
||||
#include "entity.h"
|
||||
|
||||
void (*const gUnk_080D1CC8[])(Entity*);
|
||||
void (*const Curtain_Functions[])(Entity*);
|
||||
void (*const gUnk_080D1CE0[])(Entity*);
|
||||
|
||||
void Curtain(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080D1CC8);
|
||||
EnemyFunctionHandler(this, Curtain_Functions);
|
||||
}
|
||||
|
||||
void sub_080481D0(Entity* this) {
|
||||
void Curtain_OnTick(Entity* this) {
|
||||
gUnk_080D1CE0[this->action](this);
|
||||
}
|
||||
|
||||
void sub_080481E8(Entity* this) {
|
||||
if (this->field_0x46) {
|
||||
void Curtain_OnCollision(Entity* this) {
|
||||
if (this->knockbackSpeed != 0) {
|
||||
this->action = 2;
|
||||
this->flags &= ~ENT_COLLIDE;
|
||||
this->spritePriority.b0 = 7;
|
||||
@@ -25,7 +25,7 @@ void sub_080481E8(Entity* this) {
|
||||
InitializeAnimation(this, this->actionDelay);
|
||||
}
|
||||
|
||||
void nullsub_26() {
|
||||
void Curtain_OnGrabbed() {
|
||||
}
|
||||
|
||||
void sub_08048224(Entity* this) {
|
||||
@@ -68,8 +68,8 @@ void sub_08048294(Entity* this) {
|
||||
void nullsub_27() {
|
||||
}
|
||||
|
||||
void (*const gUnk_080D1CC8[])(Entity*) = {
|
||||
sub_080481D0, sub_080481E8, sub_08001324, sub_0804A7D4, sub_08001242, nullsub_26,
|
||||
void (*const Curtain_Functions[])(Entity*) = {
|
||||
Curtain_OnTick, Curtain_OnCollision, GenericKnockback, GenericDeath, GenericConfused, Curtain_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080D1CE0[])(Entity*) = {
|
||||
|
||||
+30
-33
@@ -14,30 +14,27 @@ typedef struct {
|
||||
} PACKED stuct_080CAB14;
|
||||
|
||||
void sub_08021218(Entity*, u32, u32);
|
||||
void sub_08021588(Entity*);
|
||||
void sub_080213D0(Entity*, u32);
|
||||
void sub_0802124C(Entity*);
|
||||
u32 sub_08021274(u32, u32);
|
||||
void sub_08021390(Entity*);
|
||||
void sub_0802159C(Entity*);
|
||||
void sub_0804AA1C(Entity*);
|
||||
void sub_080213B0(Entity*);
|
||||
void sub_080213D0(Entity*, u32);
|
||||
void sub_080213F0(Entity*);
|
||||
void sub_08021400(Entity*);
|
||||
void sub_08021414(Entity*);
|
||||
void sub_08021424(Entity*);
|
||||
u32 sub_080214FC(Entity*);
|
||||
void sub_08021540(Entity*);
|
||||
void sub_08021588(Entity*);
|
||||
void sub_0802159C(Entity*);
|
||||
void sub_08021600(Entity*);
|
||||
void sub_080213B0(Entity*);
|
||||
u32 PlayerInRange(Entity*, u32, u32);
|
||||
u32 sub_0802169C(Entity*, Entity*);
|
||||
void sub_0802124C(Entity*);
|
||||
void sub_08021644(Entity*);
|
||||
void sub_08021414(Entity*);
|
||||
void sub_08021400(Entity*);
|
||||
u32 sub_08021274(u32, u32);
|
||||
u32 sub_08021664(Entity*, Entity*);
|
||||
u32 sub_0804A044(Entity*, Entity*, u32);
|
||||
void sub_08021424(Entity*);
|
||||
u32 sub_0802169C(Entity*, Entity*);
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
|
||||
extern void (*const gUnk_080CAA98[])(Entity*);
|
||||
extern void (*const DarkNut_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CAAB0[])(Entity*);
|
||||
|
||||
extern const s8 gUnk_080CAB00[];
|
||||
@@ -55,15 +52,15 @@ extern const u8 gUnk_080CAB68[];
|
||||
extern void (*const gUnk_080CAB58[])(Entity*);
|
||||
|
||||
void DarkNut(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CAA98);
|
||||
EnemyFunctionHandler(this, DarkNut_Functions);
|
||||
SetChildOffset(this, 0, 1, -22);
|
||||
}
|
||||
|
||||
void sub_08020BA0(Entity* this) {
|
||||
void DarkNut_OnTick(Entity* this) {
|
||||
gUnk_080CAAB0[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08020BB8(Entity* this) {
|
||||
void DarkNut_OnCollision(Entity* this) {
|
||||
switch (this->bitfield & 0x7f) {
|
||||
case 0x1c:
|
||||
this->action = 11;
|
||||
@@ -71,7 +68,7 @@ void sub_08020BB8(Entity* this) {
|
||||
this->hitType = 81;
|
||||
sub_08021218(this, 8, DirectionToAnimationState(this->knockbackDirection ^ 0x10));
|
||||
sub_08021588(this);
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
Create0x68FX(this, FX_STARS);
|
||||
break;
|
||||
case 0x16:
|
||||
this->action = 11;
|
||||
@@ -79,7 +76,7 @@ void sub_08020BB8(Entity* this) {
|
||||
this->hitType = 81;
|
||||
sub_08021218(this, 8, DirectionToAnimationState(this->knockbackDirection ^ 0x10));
|
||||
sub_08021588(this);
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
Create0x68FX(this, FX_STARS);
|
||||
break;
|
||||
case 0x4b:
|
||||
if (this->action == 13 || this->action == 15 || this->action == 19 || this->action == 18)
|
||||
@@ -122,10 +119,10 @@ void sub_08020BB8(Entity* this) {
|
||||
break;
|
||||
}
|
||||
this->field_0x78.HALF.LO = this->health;
|
||||
sub_0804AA30(this, gUnk_080CAA98);
|
||||
EnemyFunctionHandlerAfterCollision(this, DarkNut_Functions);
|
||||
}
|
||||
|
||||
void nullsub_129(Entity* this) {
|
||||
void DarkNut_OnGrabbed(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08020D70(Entity* this) {
|
||||
@@ -157,7 +154,7 @@ void sub_08020DD4(Entity* this) {
|
||||
} else {
|
||||
if (--this->actionDelay == 0)
|
||||
sub_08021540(this);
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
}
|
||||
@@ -191,7 +188,7 @@ void sub_08020E98(Entity* this) {
|
||||
sub_08021218(this, 7, this->animationState);
|
||||
} else {
|
||||
this->direction = GetFacingDirection(gUnk_020000B0, this);
|
||||
if (ProcessMovement(this) == 0) {
|
||||
if (ProcessMovement0(this) == 0) {
|
||||
this->action = 8;
|
||||
sub_08021218(this, 7, this->animationState);
|
||||
} else {
|
||||
@@ -205,7 +202,7 @@ void sub_08020E98(Entity* this) {
|
||||
sub_08021414(this);
|
||||
} else {
|
||||
this->direction = GetFacingDirection(this, gUnk_020000B0);
|
||||
ProcessMovement(this);
|
||||
ProcessMovement0(this);
|
||||
sub_0802124C(this);
|
||||
sub_08021644(this);
|
||||
}
|
||||
@@ -324,7 +321,7 @@ void sub_080210E4(Entity* this) {
|
||||
}
|
||||
|
||||
sub_08021644(this);
|
||||
if ((this->frame & 0x10) && (!ProcessMovement(this) || (this->child && (this->child->bitfield & 0x80)))) {
|
||||
if ((this->frame & 0x10) && (!ProcessMovement0(this) || (this->child && (this->child->bitfield & 0x80)))) {
|
||||
sub_080213D0(this, 0);
|
||||
} else {
|
||||
if (--this->field_0x76.HWORD == 0)
|
||||
@@ -519,7 +516,7 @@ void sub_08021424(Entity* this) {
|
||||
sub_080212B0(this);
|
||||
} else {
|
||||
this->direction = CalculateDirectionTo(this->x.HALF.HI, this->y.HALF.HI, x, y);
|
||||
if (!ProcessMovement(this)) {
|
||||
if (!ProcessMovement0(this)) {
|
||||
sub_080212B0(this);
|
||||
} else {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
@@ -655,13 +652,13 @@ u32 sub_0802169C(Entity* this, Entity* ent) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CAA98[])(Entity*) = {
|
||||
sub_08020BA0,
|
||||
sub_08020BB8,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
nullsub_129,
|
||||
void (*const DarkNut_Functions[])(Entity*) = {
|
||||
DarkNut_OnTick,
|
||||
DarkNut_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
DarkNut_OnGrabbed,
|
||||
};
|
||||
void (*const gUnk_080CAAB0[])(Entity*) = {
|
||||
sub_08020D70,
|
||||
|
||||
+13
-14
@@ -9,7 +9,6 @@
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void sub_08049CF4(Entity*);
|
||||
void sub_080221C0(Entity*);
|
||||
|
||||
typedef struct {
|
||||
@@ -17,7 +16,7 @@ typedef struct {
|
||||
s8 v;
|
||||
} PACKED PosOffset;
|
||||
|
||||
extern void (*const gUnk_080CB734[])(Entity*);
|
||||
extern void (*const DoorMimic_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CB74C[])(Entity*);
|
||||
|
||||
extern const s8 gUnk_080CB764[];
|
||||
@@ -28,19 +27,19 @@ extern const Hitbox* const* const gUnk_080CB8A4[];
|
||||
extern s16 gUnk_080B4488[];
|
||||
|
||||
void DoorMimic(Entity* this) {
|
||||
gUnk_080CB734[GetNextFunction(this)](this);
|
||||
DoorMimic_Functions[GetNextFunction(this)](this);
|
||||
this->hitbox = (Hitbox*)gUnk_080CB8A4[this->type2][this->frameIndex];
|
||||
}
|
||||
|
||||
void sub_08021FDC(Entity* this) {
|
||||
void DoorMimic_OnTick(Entity* this) {
|
||||
gUnk_080CB74C[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08021FF4(Entity* this) {
|
||||
sub_0804AA30(this, gUnk_080CB734);
|
||||
void DoorMimic_OnCollision(Entity* this) {
|
||||
EnemyFunctionHandlerAfterCollision(this, DoorMimic_Functions);
|
||||
}
|
||||
|
||||
void sub_08022004(Entity* this) {
|
||||
void DoorMimic_OnDeath(Entity* this) {
|
||||
SetTile((u16)this->field_0x7c.HALF.LO, (u16)this->field_0x7c.HALF.HI, this->collisionLayer);
|
||||
CreateFx(this, FX_POT_SHATTER, 0);
|
||||
sub_08049CF4(this);
|
||||
@@ -122,13 +121,13 @@ void sub_080221C0(Entity* this) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CB734[])(Entity*) = {
|
||||
sub_08021FDC,
|
||||
sub_08021FF4,
|
||||
sub_08001324,
|
||||
sub_08022004,
|
||||
sub_08001242,
|
||||
sub_08021FDC,
|
||||
void (*const DoorMimic_Functions[])(Entity*) = {
|
||||
DoorMimic_OnTick,
|
||||
DoorMimic_OnCollision,
|
||||
GenericKnockback,
|
||||
DoorMimic_OnDeath,
|
||||
GenericConfused,
|
||||
DoorMimic_OnTick,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CB74C[])(Entity*) = {
|
||||
|
||||
+10
-10
@@ -12,31 +12,31 @@
|
||||
|
||||
extern void sub_0803EE8C(Entity*);
|
||||
|
||||
extern void (*const gUnk_080D0880[])(Entity*);
|
||||
extern void (*const Enemy4D_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080D0898[])(Entity*);
|
||||
|
||||
void Enemy4D(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080D0880);
|
||||
EnemyFunctionHandler(this, Enemy4D_Functions);
|
||||
}
|
||||
|
||||
void sub_0803EAFC(Entity* this) {
|
||||
void Enemy4D_OnTick(Entity* this) {
|
||||
gUnk_080D0898[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0803EB14(Entity* this) {
|
||||
sub_0804AA30(this, gUnk_080D0880);
|
||||
void Enemy4D_OnCollision(Entity* this) {
|
||||
EnemyFunctionHandlerAfterCollision(this, Enemy4D_Functions);
|
||||
}
|
||||
|
||||
void sub_0803EB24(Entity* this) {
|
||||
sub_08001324(this);
|
||||
sub_0803EAFC(this);
|
||||
void Enemy4D_OnKnockback(Entity* this) {
|
||||
GenericKnockback(this);
|
||||
Enemy4D_OnTick(this);
|
||||
}
|
||||
|
||||
void sub_0803EB34(Entity* this) {
|
||||
void Enemy4D_OnDeath(Entity* this) {
|
||||
CreateDeathFx(this, 0xff, 0x57);
|
||||
}
|
||||
|
||||
void nullsub_21(Entity* this) {
|
||||
void Enemy4D_OnGrabbed(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_0803EB44(Entity* this) {
|
||||
|
||||
+11
-11
@@ -95,10 +95,10 @@ void sub_08040B9C(Enemy50Entity* this) {
|
||||
if (super->bitfield == 0x9d) {
|
||||
super->zVelocity = 0x18000;
|
||||
}
|
||||
if (super->field_0x43 != 0) {
|
||||
if (super->confusedTime != 0) {
|
||||
super->animationState = super->knockbackDirection >> 4;
|
||||
InitializeAnimation(super, super->animationState + 7);
|
||||
sub_0804A9FC(super, 0x1c);
|
||||
Create0x68FX(super, 0x1c);
|
||||
}
|
||||
if (super->health != this->unk_7a) {
|
||||
if (super->type == 0) {
|
||||
@@ -116,14 +116,14 @@ void sub_08040B9C(Enemy50Entity* this) {
|
||||
this->unk_7a = super->health;
|
||||
}
|
||||
_08040C9C:
|
||||
sub_0804AA30(super, Enemy50_Functions);
|
||||
EnemyFunctionHandlerAfterCollision(super, Enemy50_Functions);
|
||||
}
|
||||
|
||||
void sub_08040CAC(Enemy50Entity* this) {
|
||||
GetNextFrame(super);
|
||||
sub_08001328(super);
|
||||
GenericKnockback2(super);
|
||||
if (super->type == 0) {
|
||||
if (((super->knockbackDuration == 0) && (super->health != 0)) && (super->field_0x43 == 0)) {
|
||||
if (((super->knockbackDuration == 0) && (super->health != 0)) && (super->confusedTime == 0)) {
|
||||
super->animationState = 0xff;
|
||||
if (super->animIndex == 7 || super->animIndex == 8) {
|
||||
InitializeAnimation(super, ((super->animIndex - 7) ^ 1) + 1);
|
||||
@@ -141,11 +141,11 @@ void sub_08040D30(Enemy50Entity* this) {
|
||||
if (super->animIndex != 7 && super->animIndex != 8) {
|
||||
InitializeAnimation(super, super->animationState + 7);
|
||||
}
|
||||
sub_08001242(super);
|
||||
GenericConfused(super);
|
||||
if (super->z.HALF.HI == 0) {
|
||||
super->z.HALF.HI = 0xffff;
|
||||
}
|
||||
if (super->field_0x43 == 0) {
|
||||
if (super->confusedTime == 0) {
|
||||
InitializeAnimation(super, (super->animationState ^ 1) + 1);
|
||||
super->direction = 0xff;
|
||||
super->animationState = 0xff;
|
||||
@@ -181,7 +181,7 @@ void Enemy50_SubAction2(Enemy50Entity* this) {
|
||||
effect->spritePriority.b0 = 3;
|
||||
}
|
||||
if (super->type == 0) {
|
||||
sub_0804A7D4(super);
|
||||
GenericDeath(super);
|
||||
} else {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
@@ -273,7 +273,7 @@ void Enemy50_Action6(Enemy50Entity* this) {
|
||||
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
|
||||
}
|
||||
sub_0803F66C(this);
|
||||
sub_080AEFB4(super);
|
||||
ProcessMovement1(super);
|
||||
} else {
|
||||
super->action = 7;
|
||||
super->actionDelay = 0x1e;
|
||||
@@ -316,7 +316,7 @@ void Enemy50_Action9(Enemy50Entity* this) {
|
||||
super->animationState = 0xff;
|
||||
super->iframes = -0xc;
|
||||
super->knockbackDuration = 0x14;
|
||||
super->field_0x46 = 0x180;
|
||||
super->knockbackSpeed = 0x180;
|
||||
super->knockbackDirection = gPlayerEntity.animationState << 2 ^ 0x10;
|
||||
sub_08041128(this);
|
||||
sub_0803F6EC(this);
|
||||
@@ -436,7 +436,7 @@ bool32 sub_08041300(Enemy50Entity* this) {
|
||||
#endif
|
||||
|
||||
void (*const Enemy50_Functions[])(Enemy50Entity*) = {
|
||||
Enemy50_OnTick, sub_08040B9C, sub_08040CAC, (void (*)(Enemy50Entity*))sub_0804A7D4, sub_08040D30, sub_08040D90,
|
||||
Enemy50_OnTick, sub_08040B9C, sub_08040CAC, (void (*)(Enemy50Entity*))GenericDeath, sub_08040D30, sub_08040D90,
|
||||
};
|
||||
void (*const Enemy50_Actions[])(Enemy50Entity*) = {
|
||||
Enemy50_Init, Enemy50_Action1, Enemy50_Action2, Enemy50_Action3, Enemy50_Action4, Enemy50_Action5,
|
||||
|
||||
+10
-10
@@ -10,18 +10,18 @@
|
||||
|
||||
void sub_08023000(Entity*, int);
|
||||
|
||||
extern void (*const gUnk_080CBBC8[])(Entity*);
|
||||
extern void (*const EnemyE_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CBBDC[])(Entity*);
|
||||
|
||||
void EnemyE(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CBBC8);
|
||||
EnemyFunctionHandler(this, EnemyE_Functions);
|
||||
}
|
||||
|
||||
void sub_08022FB4(Entity* this) {
|
||||
void EnemyE_OnTick(Entity* this) {
|
||||
gUnk_080CBBDC[this->action](this);
|
||||
}
|
||||
|
||||
void nullsub_133(Entity* this) {
|
||||
void EnemyE_OnCollision(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08022FD0(Entity* this) {
|
||||
@@ -58,12 +58,12 @@ void sub_08023000(Entity* this, int frames) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CBBC8[])(Entity*) = {
|
||||
sub_08022FB4,
|
||||
nullsub_133,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
void (*const EnemyE_Functions[])(Entity*) = {
|
||||
EnemyE_OnTick,
|
||||
EnemyE_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CBBDC[])(Entity*) = {
|
||||
|
||||
+6
-6
@@ -64,9 +64,9 @@ void Eyegore_Action6(EyegoreEntity*);
|
||||
void (*const Eyegore_Functions[])(EyegoreEntity*) = {
|
||||
Eyegore_OnTick,
|
||||
Eyegore_OnCollision,
|
||||
(void (*)(EyegoreEntity*))sub_08001324,
|
||||
(void (*)(EyegoreEntity*))GenericKnockback,
|
||||
Eyegore_OnDeath,
|
||||
(void (*)(EyegoreEntity*))sub_08001242,
|
||||
(void (*)(EyegoreEntity*))GenericConfused,
|
||||
Eyegore_OnGrabbed,
|
||||
};
|
||||
|
||||
@@ -125,7 +125,7 @@ void Eyegore_OnCollision(EyegoreEntity* this) {
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
super->iframes = 0x78;
|
||||
}
|
||||
sub_0804AA30(super, Eyegore_Functions);
|
||||
EnemyFunctionHandlerAfterCollision(super, Eyegore_Functions);
|
||||
}
|
||||
|
||||
void Eyegore_OnDeath(EyegoreEntity* this) {
|
||||
@@ -136,7 +136,7 @@ void Eyegore_OnDeath(EyegoreEntity* this) {
|
||||
if ((super->field_0x3a & 2) == 0) {
|
||||
CreateFx(super, FX_GIANT_EXPLOSION4, 0);
|
||||
}
|
||||
sub_0804A7D4(super);
|
||||
GenericDeath(super);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -451,7 +451,7 @@ void sub_08031250(EyegoreEntity* this) {
|
||||
super->y.HALF.HI = this->unk_76;
|
||||
this->unk_79 = tmp2 | this->unk_79;
|
||||
}
|
||||
if (((this->unk_79 & 0x80) == 0) && (ProcessMovement(super) == 0)) {
|
||||
if (((this->unk_79 & 0x80) == 0) && (ProcessMovement0(super) == 0)) {
|
||||
if ((this->unk_78 & 0x80) != 0) {
|
||||
this->unk_78 = 0x82;
|
||||
} else {
|
||||
@@ -459,7 +459,7 @@ void sub_08031250(EyegoreEntity* this) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ProcessMovement(super);
|
||||
ProcessMovement0(super);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+13
-15
@@ -11,27 +11,25 @@
|
||||
void sub_0802C4B0(Entity*);
|
||||
void sub_0802C62C(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CD540[])(Entity*);
|
||||
extern void (*const FallingBoulder_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CD558[])(Entity*);
|
||||
extern const u16 gUnk_080CD568[];
|
||||
extern const u8 gUnk_080CD580[];
|
||||
extern const s16 gUnk_080CD58C[];
|
||||
|
||||
extern void sub_080AEFB4(Entity*);
|
||||
|
||||
void FallingBoulder(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080CD540);
|
||||
EnemyFunctionHandler(this, FallingBoulder_Functions);
|
||||
}
|
||||
|
||||
void sub_0802C238(Entity* this) {
|
||||
void FallingBoulder_OnTick(Entity* this) {
|
||||
gUnk_080CD558[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0802C250(Entity* this) {
|
||||
void FallingBoulder_OnCollision(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void sub_0802C254(Entity* this) {
|
||||
void FallingBoulder_OnGrabbed(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
@@ -115,7 +113,7 @@ NONMATCH("asm/non_matching/fallingBoulder/sub_0802C334.inc", void sub_0802C334(E
|
||||
|
||||
y = gRoomControls.origin_y + gRoomControls.height - this->y.HALF.HI;
|
||||
if (y >= 5) {
|
||||
sub_080AEFB4(this);
|
||||
ProcessMovement1(this);
|
||||
} else {
|
||||
LinearMoveUpdate(this);
|
||||
if (this->z.HALF.HI - y > 0x38) {
|
||||
@@ -219,13 +217,13 @@ void sub_0802C62C(Entity* this) {
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CD540[])(Entity*) = {
|
||||
sub_0802C238,
|
||||
sub_0802C250,
|
||||
sub_08001324,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
sub_0802C254,
|
||||
void (*const FallingBoulder_Functions[])(Entity*) = {
|
||||
FallingBoulder_OnTick,
|
||||
FallingBoulder_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
FallingBoulder_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CD558[])(Entity*) = {
|
||||
|
||||
@@ -15,28 +15,28 @@ typedef struct {
|
||||
extern void sub_08045524(Entity*);
|
||||
void sub_08045178(Entity*, Entity*, int, int);
|
||||
|
||||
extern void (*const gUnk_080D17E8[])(Entity*);
|
||||
extern void (*const FireballGuy_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080D1800[])(Entity*);
|
||||
extern u8 gUnk_080D180C[4]; // Entity count per form
|
||||
extern PosOffset gUnk_080D1810[4];
|
||||
|
||||
void FireballGuy(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080D17E8);
|
||||
EnemyFunctionHandler(this, FireballGuy_Functions);
|
||||
}
|
||||
|
||||
void sub_080453A4(Entity* this) {
|
||||
void FireballGuy_OnTick(Entity* this) {
|
||||
gUnk_080D1800[this->action](this);
|
||||
}
|
||||
|
||||
void sub_080453BC(Entity* this) {
|
||||
void FireballGuy_OnCollision(Entity* this) {
|
||||
if (this->health && this->cutsceneBeh.HALF.LO != this->health) {
|
||||
this->action = 2;
|
||||
} else {
|
||||
sub_0804AA30(this, gUnk_080D17E8);
|
||||
EnemyFunctionHandlerAfterCollision(this, FireballGuy_Functions);
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_172(void) {
|
||||
void FireballGuy_OnGrabbed(void) {
|
||||
}
|
||||
|
||||
void sub_080453E8(Entity* this) {
|
||||
@@ -52,7 +52,7 @@ void sub_080453E8(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_08045430(Entity* this) {
|
||||
sub_080AEFE0(this);
|
||||
ProcessMovement2(this);
|
||||
GetNextFrame(this);
|
||||
if (GravityUpdate(this, 0x1800) == 0)
|
||||
sub_08045524(this);
|
||||
|
||||
+14
-10
@@ -14,7 +14,7 @@ extern void (*const gUnk_080012C8[])(Entity*);
|
||||
extern Hitbox gUnk_080FD340; // TODO should be const
|
||||
extern Hitbox gUnk_080FD34C;
|
||||
|
||||
void (*const gUnk_080CFB84[])(Entity*);
|
||||
void (*const FlyingSkull_Functions[])(Entity*);
|
||||
void (*const gUnk_080CFB9C[])(FlyingSkullEntity*);
|
||||
void (*const gUnk_080CFBBC[])(FlyingSkullEntity*);
|
||||
void (*const gUnk_080CFBD4[])(FlyingSkullEntity*);
|
||||
@@ -31,15 +31,15 @@ void FlyingSkull(Entity* this) {
|
||||
if (index) {
|
||||
gUnk_080012C8[index](this);
|
||||
} else {
|
||||
gUnk_080CFB84[GetNextFunction(this)](this);
|
||||
FlyingSkull_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08039BE0(FlyingSkullEntity* this) {
|
||||
void FlyingSkull_OnTick(FlyingSkullEntity* this) {
|
||||
gUnk_080CFB9C[super->action](this);
|
||||
}
|
||||
|
||||
void sub_08039BF8(FlyingSkullEntity* this) {
|
||||
void FlyingSkull_OnCollision(FlyingSkullEntity* this) {
|
||||
sub_0803A100(this);
|
||||
|
||||
if (super->bitfield == 0x9d) {
|
||||
@@ -52,10 +52,10 @@ void sub_08039BF8(FlyingSkullEntity* this) {
|
||||
sub_0803A0E0(this);
|
||||
}
|
||||
|
||||
sub_0804AA30(super, gUnk_080CFB84);
|
||||
EnemyFunctionHandlerAfterCollision(super, FlyingSkull_Functions);
|
||||
}
|
||||
|
||||
void sub_08039C80(FlyingSkullEntity* this) {
|
||||
void FlyingSkull_OnGrabbed(FlyingSkullEntity* this) {
|
||||
gUnk_080CFBBC[super->subAction](this);
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ void sub_0803A080(FlyingSkullEntity* this) {
|
||||
|
||||
void sub_0803A09C(FlyingSkullEntity* this) {
|
||||
GetNextFrame(super);
|
||||
sub_080AEFE0(super);
|
||||
ProcessMovement2(super);
|
||||
|
||||
if (super->collisions) {
|
||||
sub_0803A0E0(this);
|
||||
@@ -251,9 +251,13 @@ void sub_0803A100(FlyingSkullEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void (*const gUnk_080CFB84[])(Entity*) = {
|
||||
(EntityActionPtr)sub_08039BE0, (EntityActionPtr)sub_08039BF8, sub_08001324, sub_0804A7D4, sub_08001242,
|
||||
(EntityActionPtr)sub_08039C80,
|
||||
void (*const FlyingSkull_Functions[])(Entity*) = {
|
||||
(EntityActionPtr)FlyingSkull_OnTick,
|
||||
(EntityActionPtr)FlyingSkull_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
(EntityActionPtr)FlyingSkull_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CFB9C[])(FlyingSkullEntity*) = {
|
||||
|
||||
+17
-16
@@ -55,7 +55,7 @@ void Ghini_OnTick(GhiniEntity* this) {
|
||||
sub_0803F694(this);
|
||||
}
|
||||
|
||||
void sub_0803F028(GhiniEntity* this) {
|
||||
void Ghini_OnCollision(GhiniEntity* this) {
|
||||
if (super->action == 8 || super->action == 9) {
|
||||
super->animationState = 0xff;
|
||||
InitializeAnimation(super, (super->knockbackDirection >> 4 ^ 1) + 1);
|
||||
@@ -69,10 +69,10 @@ void sub_0803F028(GhiniEntity* this) {
|
||||
if (super->bitfield == 0x9d) {
|
||||
super->zVelocity = 0x18000;
|
||||
}
|
||||
if (super->field_0x43 != 0) {
|
||||
if (super->confusedTime != 0) {
|
||||
super->animationState = super->knockbackDirection >> 4;
|
||||
InitializeAnimation(super, super->animationState + 7);
|
||||
sub_0804A9FC(super, 0x1c);
|
||||
Create0x68FX(super, FX_STARS);
|
||||
}
|
||||
if (super->health != this->unk_7a) {
|
||||
this->unk_7a = super->health;
|
||||
@@ -82,13 +82,13 @@ void sub_0803F028(GhiniEntity* this) {
|
||||
InitializeAnimation(super, (super->knockbackDirection >> 4) + 7);
|
||||
}
|
||||
}
|
||||
sub_0804AA30(super, Ghini_Functions);
|
||||
EnemyFunctionHandlerAfterCollision(super, Ghini_Functions);
|
||||
}
|
||||
|
||||
void sub_0803F0F4(GhiniEntity* this) {
|
||||
void Ghini_OnKnockback(GhiniEntity* this) {
|
||||
GetNextFrame(super);
|
||||
sub_08001328(super);
|
||||
if (((super->knockbackDuration == 0) && (super->health != 0)) && (super->field_0x43 == 0)) {
|
||||
GenericKnockback2(super);
|
||||
if (((super->knockbackDuration == 0) && (super->health != 0)) && (super->confusedTime == 0)) {
|
||||
super->animationState = 0xff;
|
||||
if (super->animIndex == 7 || super->animIndex == 8) {
|
||||
InitializeAnimation(super, ((super->animIndex - 7) ^ 1) + 1);
|
||||
@@ -96,15 +96,15 @@ void sub_0803F0F4(GhiniEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0803F148(GhiniEntity* this) {
|
||||
void Ghini_OnConfused(GhiniEntity* this) {
|
||||
if (super->animIndex != 7 && super->animIndex != 8) {
|
||||
InitializeAnimation(super, super->animationState + 7);
|
||||
}
|
||||
sub_08001242(super);
|
||||
GenericConfused(super);
|
||||
if (super->z.HALF.HI == 0) {
|
||||
super->z.HALF.HI = 0xffff;
|
||||
}
|
||||
if (super->field_0x43 == 0) {
|
||||
if (super->confusedTime == 0) {
|
||||
InitializeAnimation(super, (super->animationState ^ 1) + 1);
|
||||
super->direction = 0xff;
|
||||
super->animationState = 0xff;
|
||||
@@ -112,7 +112,7 @@ void sub_0803F148(GhiniEntity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0803F1A8(GhiniEntity* this) {
|
||||
void Ghini_OnGrabbed(GhiniEntity* this) {
|
||||
if (sub_0806F520()) {
|
||||
Ghini_SubActions[super->subAction](this);
|
||||
} else {
|
||||
@@ -139,7 +139,7 @@ void Ghini_SubAction2(GhiniEntity* this) {
|
||||
if (effect != NULL) {
|
||||
effect->spritePriority.b0 = 3;
|
||||
}
|
||||
sub_0804A7D4(super);
|
||||
GenericDeath(super);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ void Ghini_Action6(GhiniEntity* this) {
|
||||
sub_08004596(super, GetFacingDirection(super, gUnk_020000B0));
|
||||
}
|
||||
sub_0803F66C(this);
|
||||
sub_080AEFB4(super);
|
||||
ProcessMovement1(super);
|
||||
GetNextFrame(super);
|
||||
} else {
|
||||
super->action = 7;
|
||||
@@ -274,7 +274,7 @@ void Ghini_Action9(GhiniEntity* this) {
|
||||
super->animationState = 0xff;
|
||||
super->iframes = -0xc;
|
||||
super->knockbackDuration = 0x14;
|
||||
super->field_0x46 = 0x180;
|
||||
super->knockbackSpeed = 0x180;
|
||||
super->knockbackDirection = gPlayerEntity.animationState << 2 ^ 0x10;
|
||||
sub_0803F51C(this);
|
||||
sub_0803F6EC(this);
|
||||
@@ -311,7 +311,7 @@ void sub_0803F58C(GhiniEntity* this) {
|
||||
s32 yBefore;
|
||||
|
||||
yBefore = super->y.WORD;
|
||||
sub_080AEFB4(super);
|
||||
ProcessMovement1(super);
|
||||
yAfter = super->y.WORD;
|
||||
super->y.WORD = yAfter - (yAfter - yBefore) / 2;
|
||||
}
|
||||
@@ -398,7 +398,8 @@ void sub_0803F738(GhiniEntity* this) {
|
||||
}
|
||||
|
||||
void (*const Ghini_Functions[])(GhiniEntity*) = {
|
||||
Ghini_OnTick, sub_0803F028, sub_0803F0F4, (void (*)(GhiniEntity*))sub_0804A7D4, sub_0803F148, sub_0803F1A8,
|
||||
Ghini_OnTick, Ghini_OnCollision, Ghini_OnKnockback, (void (*)(GhiniEntity*))GenericDeath,
|
||||
Ghini_OnConfused, Ghini_OnGrabbed,
|
||||
};
|
||||
void (*const Ghini_Actions[])(GhiniEntity*) = {
|
||||
Ghini_Init, Ghini_Action1, Ghini_Action2, Ghini_Action3, Ghini_Action4,
|
||||
|
||||
+19
-15
@@ -45,12 +45,12 @@ void sub_08037A14(GibdoEntity*);
|
||||
extern void sub_0804A4E4(Entity*, Entity*);
|
||||
u32 sub_0804A044(Entity*, Entity*, u32);
|
||||
|
||||
void (*const gGibdo[6])(Entity*);
|
||||
void (*const Gibdo_Functions[6])(Entity*);
|
||||
void (*const gUnk_080CF2AC[9])(GibdoEntity*);
|
||||
extern Entity* gUnk_020000B0;
|
||||
|
||||
void Gibdo(Entity* this) {
|
||||
EnemyFunctionHandler(this, gGibdo);
|
||||
EnemyFunctionHandler(this, Gibdo_Functions);
|
||||
SetChildOffset(this, 0, 1, -0x15);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ void Gibdo_OnTick(GibdoEntity* this) {
|
||||
gUnk_080CF2AC[super->action](this);
|
||||
}
|
||||
|
||||
void sub_080374A4(GibdoEntity* this) {
|
||||
void Gibdo_OnCollision(GibdoEntity* this) {
|
||||
u8 x;
|
||||
if (super->bitfield == 0x87) {
|
||||
if (super->action == 0x6) {
|
||||
@@ -88,13 +88,13 @@ void sub_080374A4(GibdoEntity* this) {
|
||||
sub_08037A58(this);
|
||||
}
|
||||
}
|
||||
if (super->field_0x43 != 0) {
|
||||
sub_0804A9FC(super, 0x1c);
|
||||
if (super->confusedTime != 0) {
|
||||
Create0x68FX(super, FX_STARS);
|
||||
}
|
||||
sub_0804AA30(super, gGibdo);
|
||||
EnemyFunctionHandlerAfterCollision(super, Gibdo_Functions);
|
||||
}
|
||||
|
||||
void nullsub_162(GibdoEntity* this) {
|
||||
void Gibdo_OnGrabbed(GibdoEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08037558(GibdoEntity* this) {
|
||||
@@ -120,7 +120,7 @@ void sub_080375A4(GibdoEntity* this) {
|
||||
sub_08037794(this);
|
||||
} else {
|
||||
UpdateAnimationSingleFrame(super);
|
||||
if (ProcessMovement(super) == 0) {
|
||||
if (ProcessMovement0(super) == 0) {
|
||||
if (!(--super->field_0xf)) {
|
||||
sub_080379BC(this);
|
||||
}
|
||||
@@ -148,7 +148,7 @@ void sub_08037624(GibdoEntity* this) {
|
||||
} else {
|
||||
UpdateAnimationSingleFrame(super);
|
||||
UpdateAnimationSingleFrame(super);
|
||||
if (ProcessMovement(super) == 0) {
|
||||
if (ProcessMovement0(super) == 0) {
|
||||
if (!(--super->field_0xf)) {
|
||||
sub_080379BC(this);
|
||||
}
|
||||
@@ -170,7 +170,7 @@ void sub_08037690(GibdoEntity* this) {
|
||||
} else {
|
||||
if ((super->frame & 1) != 0) {
|
||||
super->hitType = 0x27;
|
||||
ProcessMovement(super);
|
||||
ProcessMovement0(super);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -359,7 +359,7 @@ void sub_08037A58(GibdoEntity* this) {
|
||||
super->iframes = 0xf4;
|
||||
super->knockbackDirection = DirectionFromAnimationState(super->animationState) ^ 0x10;
|
||||
super->knockbackDuration = 8;
|
||||
super->field_0x46 = 0x180;
|
||||
super->knockbackSpeed = 0x180;
|
||||
this->field_0x76 = 0x3c;
|
||||
InitAnimationForceUpdate(super, super->animationState + 0x10);
|
||||
}
|
||||
@@ -370,7 +370,7 @@ void sub_08037ACC(GibdoEntity* this) {
|
||||
gPlayerEntity.iframes = 0x1e;
|
||||
gPlayerEntity.knockbackDirection = DirectionFromAnimationState(super->animationState);
|
||||
gPlayerEntity.knockbackDuration = 4;
|
||||
gPlayerEntity.field_0x46 = 0x180;
|
||||
gPlayerEntity.knockbackSpeed = 0x180;
|
||||
}
|
||||
|
||||
// Damage player maybe?
|
||||
@@ -436,9 +436,13 @@ void Gibdo_MoveObjectsToStalfos(GibdoEntity* this, Entity* that) {
|
||||
}
|
||||
}
|
||||
|
||||
void (*const gGibdo[6])(Entity*) = {
|
||||
(EntityActionPtr)Gibdo_OnTick, (EntityActionPtr)sub_080374A4, sub_08001324, sub_0804A7D4, sub_08001242,
|
||||
(EntityActionPtr)nullsub_162,
|
||||
void (*const Gibdo_Functions[6])(Entity*) = {
|
||||
(EntityActionPtr)Gibdo_OnTick,
|
||||
(EntityActionPtr)Gibdo_OnCollision,
|
||||
GenericKnockback,
|
||||
GenericDeath,
|
||||
GenericConfused,
|
||||
(EntityActionPtr)Gibdo_OnGrabbed,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CF2AC[9])(GibdoEntity*) = {
|
||||
|
||||
+6
-6
@@ -34,7 +34,7 @@ typedef struct {
|
||||
Gleerok_HeapStruct* unk_84;
|
||||
} GleerokEntity;
|
||||
|
||||
extern void (*const gUnk_080CD748[])(Entity*);
|
||||
extern void (*const Gleerok_Functions[])(Entity*);
|
||||
extern void (*const gUnk_080CD75C[])(GleerokEntity*);
|
||||
extern void (*const gUnk_080CD7B8[])(GleerokEntity*);
|
||||
extern void (*const gUnk_080CD7E4[])(GleerokEntity*);
|
||||
@@ -69,10 +69,10 @@ extern bool32 sub_0802EA88(Gleerok_HeapStruct* param_1);
|
||||
extern bool32 sub_0802E768(Gleerok_HeapStruct* param_1);
|
||||
|
||||
void Gleerok(Entity* this) {
|
||||
gUnk_080CD748[GetNextFunction(this)](this);
|
||||
Gleerok_Functions[GetNextFunction(this)](this);
|
||||
}
|
||||
|
||||
void sub_0802D034(GleerokEntity* this) {
|
||||
void Gleerok_OnDeath(GleerokEntity* this) {
|
||||
sub_08078B48();
|
||||
|
||||
switch (super->type) {
|
||||
@@ -107,7 +107,7 @@ void sub_0802D034(GleerokEntity* this) {
|
||||
break;
|
||||
case 1:
|
||||
SoundReq(SFX_BOSS_DIE);
|
||||
sub_0804A7D4(super);
|
||||
GenericDeath(super);
|
||||
break;
|
||||
case 0:
|
||||
gPlayerState.field_0x14 = 1;
|
||||
@@ -237,7 +237,7 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D33C.inc", void sub_0802D33C(GleerokE
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_0802D394(GleerokEntity* this) {
|
||||
void Gleerok_OnTick(GleerokEntity* this) {
|
||||
gUnk_080CD7B8[super->action](this);
|
||||
super->spriteRendering.b3 = 3;
|
||||
}
|
||||
@@ -273,7 +273,7 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D3B8.inc", void sub_0802D3B8(GleerokE
|
||||
heap = this->unk_84;
|
||||
|
||||
if (heap == NULL) {
|
||||
sub_0804A7D4(super);
|
||||
GenericDeath(super);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
|
||||
+16
-16
@@ -5,17 +5,17 @@
|
||||
#include "functions.h"
|
||||
#include "enemy/gyorg.h"
|
||||
|
||||
void sub_08048684(GyorgChildEntity*);
|
||||
void sub_0804869C(GyorgChildEntity*);
|
||||
void sub_080486AC(GyorgChildEntity*);
|
||||
void GyorgChild_OnTick(GyorgChildEntity*);
|
||||
void GyorgChild_OnCollision(GyorgChildEntity*);
|
||||
void GyorgChild_OnGrabbed(GyorgChildEntity*);
|
||||
|
||||
void (*const gUnk_080D1E6C[])(GyorgChildEntity*) = {
|
||||
sub_08048684,
|
||||
sub_0804869C,
|
||||
(void (*)(GyorgChildEntity*))sub_08001324,
|
||||
(void (*)(GyorgChildEntity*))sub_0804A7D4,
|
||||
(void (*)(GyorgChildEntity*))sub_08001242,
|
||||
sub_080486AC,
|
||||
void (*const GyorgChild_Functions[])(GyorgChildEntity*) = {
|
||||
GyorgChild_OnTick,
|
||||
GyorgChild_OnCollision,
|
||||
(void (*)(GyorgChildEntity*))GenericKnockback,
|
||||
(void (*)(GyorgChildEntity*))GenericDeath,
|
||||
(void (*)(GyorgChildEntity*))GenericConfused,
|
||||
GyorgChild_OnGrabbed,
|
||||
};
|
||||
|
||||
void GyorgChild(Entity* this) {
|
||||
@@ -24,7 +24,7 @@ void GyorgChild(Entity* this) {
|
||||
this->health = 0;
|
||||
this->collisionLayer = 2;
|
||||
}
|
||||
gUnk_080D1E6C[GetNextFunction(this)]((GyorgChildEntity*)this);
|
||||
GyorgChild_Functions[GetNextFunction(this)]((GyorgChildEntity*)this);
|
||||
}
|
||||
|
||||
void sub_080486F4(GyorgChildEntity*);
|
||||
@@ -32,7 +32,7 @@ void sub_0804877C(GyorgChildEntity*);
|
||||
void sub_0804882C(GyorgChildEntity*);
|
||||
void sub_08048904(GyorgChildEntity*);
|
||||
|
||||
void sub_08048684(GyorgChildEntity* this) {
|
||||
void GyorgChild_OnTick(GyorgChildEntity* this) {
|
||||
static void (*const gUnk_080D1E84[])(GyorgChildEntity*) = {
|
||||
sub_080486F4,
|
||||
sub_0804877C,
|
||||
@@ -42,15 +42,15 @@ void sub_08048684(GyorgChildEntity* this) {
|
||||
gUnk_080D1E84[super->action](this);
|
||||
}
|
||||
|
||||
void sub_0804869C(GyorgChildEntity* this) {
|
||||
sub_0804AA30(super, gUnk_080D1E6C);
|
||||
void GyorgChild_OnCollision(GyorgChildEntity* this) {
|
||||
EnemyFunctionHandlerAfterCollision(super, GyorgChild_Functions);
|
||||
}
|
||||
|
||||
void sub_080486D0(GyorgChildEntity*);
|
||||
void sub_080486D8(GyorgChildEntity*);
|
||||
void sub_080486E0(GyorgChildEntity*);
|
||||
|
||||
void sub_080486AC(GyorgChildEntity* this) {
|
||||
void GyorgChild_OnGrabbed(GyorgChildEntity* this) {
|
||||
static void (*const gUnk_080D1E94[])(GyorgChildEntity*) = {
|
||||
sub_080486D0,
|
||||
sub_080486D8,
|
||||
@@ -71,7 +71,7 @@ void sub_080486D8(GyorgChildEntity* this) {
|
||||
|
||||
void sub_080486E0(GyorgChildEntity* this) {
|
||||
if (sub_0806F3E4(super)) {
|
||||
sub_0804A7D4(super);
|
||||
GenericDeath(super);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user