Merge pull request #379 from octorock/movement

Begin decompiling movement
This commit is contained in:
notyourav
2022-02-13 20:22:23 -08:00
committed by GitHub
209 changed files with 4903 additions and 3974 deletions
+14 -14
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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}
+2 -2
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -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]
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
+129
View File
@@ -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
+129
View File
@@ -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
+129
View File
@@ -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
+129
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
+7 -7
View File
@@ -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
+3 -3
View File
@@ -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
+3 -3
View File
@@ -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
+7 -7
View File
@@ -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
+7 -7
View File
@@ -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
+3 -3
View File
@@ -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
+6 -6
View File
@@ -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
+7 -7
View File
@@ -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
+7 -7
View File
@@ -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
+7 -7
View File
@@ -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
+6 -6
View File
@@ -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
+5 -5
View File
@@ -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
+7 -7
View File
@@ -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
+7 -7
View File
@@ -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
+7 -7
View File
@@ -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
+7 -7
View File
@@ -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
+7 -7
View File
@@ -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
+14
View File
@@ -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
-93
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+20
View File
@@ -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
+5 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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*) = {
+26 -27
View File
@@ -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
View File
@@ -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*) = {
+1 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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*) = {
+14 -12
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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*) = {
+7 -7
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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