mirror of https://github.com/zeldaret/tmc.git
decompile wallMaster2
This commit is contained in:
parent
d58c85e442
commit
b738f28239
|
@ -0,0 +1,50 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, lr}
|
||||
adds r3, r0, #0
|
||||
ldrb r1, [r3, #0x15]
|
||||
adds r2, r1, #2
|
||||
movs r0, #0x1c
|
||||
ands r2, r0
|
||||
ldrb r4, [r3, #0x14]
|
||||
lsls r0, r4, #2
|
||||
subs r0, r2, r0
|
||||
adds r0, #6
|
||||
cmp r0, #0xc
|
||||
bls _0802CFA8
|
||||
lsrs r0, r2, #2
|
||||
b _0802CFB8
|
||||
_0802CFA8:
|
||||
adds r0, r1, #1
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
cmp r0, #2
|
||||
ble _0802CFD0
|
||||
lsrs r0, r2, #2
|
||||
cmp r0, r4
|
||||
beq _0802CFD0
|
||||
_0802CFB8:
|
||||
strb r0, [r3, #0x14]
|
||||
lsrs r0, r2, #3
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _0802CFD4 @ =gUnk_080CD730
|
||||
adds r2, r0, r1
|
||||
ldrh r1, [r2]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x74
|
||||
strh r1, [r0]
|
||||
ldrh r1, [r2, #2]
|
||||
adds r0, #2
|
||||
strh r1, [r0]
|
||||
_0802CFD0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0802CFD4: .4byte gUnk_080CD730
|
||||
|
||||
.syntax divided
|
|
@ -6,502 +6,3 @@
|
|||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start WallMaster2
|
||||
WallMaster2: @ 0x0802CC3C
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r5, _0802CC64 @ =gUnk_080CD6FC
|
||||
bl GetNextFunction
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r5
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
movs r3, #0x10
|
||||
rsbs r3, r3, #0
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
movs r2, #1
|
||||
bl SetChildOffset
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0802CC64: .4byte gUnk_080CD6FC
|
||||
|
||||
thumb_func_start sub_0802CC68
|
||||
sub_0802CC68: @ 0x0802CC68
|
||||
push {lr}
|
||||
ldr r2, _0802CC7C @ =gUnk_080CD714
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0802CC7C: .4byte gUnk_080CD714
|
||||
|
||||
thumb_func_start sub_0802CC80
|
||||
sub_0802CC80: @ 0x0802CC80
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
movs r5, #0x7f
|
||||
adds r1, r5, #0
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
blt _0802CCB8
|
||||
cmp r1, #1
|
||||
ble _0802CC9A
|
||||
cmp r1, #0x1e
|
||||
bne _0802CCB8
|
||||
_0802CC9A:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x10]
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitializeAnimation
|
||||
ldr r2, _0802CCD4 @ =gPlayerEntity
|
||||
ldrb r1, [r2, #0x10]
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
strb r0, [r2, #0x10]
|
||||
_0802CCB8:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x43
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0802CCCA
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
bl sub_0804A9FC
|
||||
_0802CCCA:
|
||||
ldr r1, _0802CCD8 @ =gUnk_080CD6FC
|
||||
adds r0, r4, #0
|
||||
bl sub_0804AA30
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0802CCD4: .4byte gPlayerEntity
|
||||
_0802CCD8: .4byte gUnk_080CD6FC
|
||||
|
||||
thumb_func_start nullsub_151
|
||||
nullsub_151: @ 0x0802CCDC
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0802CCE0
|
||||
sub_0802CCE0: @ 0x0802CCE0
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0804A720
|
||||
movs r5, #0
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x3c
|
||||
strb r0, [r4, #0xe]
|
||||
bl Random
|
||||
strb r0, [r4, #0xf]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #0x31
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #0x20
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
movs r0, #0xff
|
||||
strb r0, [r4, #0x14]
|
||||
ldr r0, _0802CD50 @ =0x0000FFFE
|
||||
strh r0, [r4, #0x36]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
bl Random
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7a
|
||||
strb r0, [r1]
|
||||
lsrs r0, r0, #8
|
||||
movs r1, #0x60
|
||||
ands r0, r1
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7b
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x7c
|
||||
strh r5, [r0]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
bl sub_0802CF64
|
||||
adds r0, r4, #0
|
||||
bl sub_0802CFD8
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0802CD50: .4byte 0x0000FFFE
|
||||
|
||||
thumb_func_start sub_0802CD54
|
||||
sub_0802CD54: @ 0x0802CD54
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r5, #0
|
||||
bl sub_0802CFD8
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x7c
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0802CD76
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bne _0802CDC8
|
||||
_0802CD76:
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
bl sub_08049FDC
|
||||
cmp r0, #0
|
||||
beq _0802CDC8
|
||||
adds r6, r5, #0
|
||||
adds r6, #0x7b
|
||||
ldrb r0, [r6]
|
||||
cmp r0, #0
|
||||
bne _0802CDC4
|
||||
movs r0, #2
|
||||
strb r0, [r5, #0xc]
|
||||
bl Random
|
||||
adds r4, r0, #0
|
||||
lsrs r0, r4, #0x10
|
||||
strb r0, [r5, #0xe]
|
||||
movs r0, #0xc0
|
||||
strh r0, [r5, #0x24]
|
||||
bl Random
|
||||
ldr r2, _0802CDC0 @ =gUnk_080CD728
|
||||
movs r1, #3
|
||||
ands r1, r0
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r2
|
||||
ldrh r1, [r1]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x78
|
||||
strh r1, [r0]
|
||||
lsrs r4, r4, #0x18
|
||||
movs r0, #0x60
|
||||
ands r4, r0
|
||||
strb r4, [r6]
|
||||
b _0802CDE4
|
||||
.align 2, 0
|
||||
_0802CDC0: .4byte gUnk_080CD728
|
||||
_0802CDC4:
|
||||
subs r0, #1
|
||||
strb r0, [r6]
|
||||
_0802CDC8:
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0802CDDE
|
||||
movs r0, #0x3c
|
||||
strb r0, [r5, #0xe]
|
||||
adds r0, r5, #0
|
||||
bl sub_0802CF64
|
||||
_0802CDDE:
|
||||
adds r0, r5, #0
|
||||
bl sub_0806F69C
|
||||
_0802CDE4:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0802CDE8
|
||||
sub_0802CDE8: @ 0x0802CDE8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
ldrh r0, [r1]
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
beq _0802CE3C
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08049FDC
|
||||
cmp r0, #0
|
||||
beq _0802CE3C
|
||||
ldrb r1, [r4, #0xe]
|
||||
adds r0, r1, #1
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0802CE2E
|
||||
ldr r0, _0802CE38 @ =gUnk_020000B0
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl GetFacingDirection
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
bl sub_08004596
|
||||
adds r0, r4, #0
|
||||
bl sub_0802CF8C
|
||||
_0802CE2E:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F69C
|
||||
b _0802CE58
|
||||
.align 2, 0
|
||||
_0802CE38: .4byte gUnk_020000B0
|
||||
_0802CE3C:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x3c
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x60
|
||||
strh r0, [r4, #0x24]
|
||||
bl Random
|
||||
movs r1, #0x38
|
||||
ands r0, r1
|
||||
adds r0, #0x96
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7c
|
||||
strh r0, [r1]
|
||||
_0802CE58:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
bl sub_0802CFD8
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0802CE68
|
||||
sub_0802CE68: @ 0x0802CE68
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r2, _0802CED4 @ =gPlayerState
|
||||
ldrb r1, [r2, #0xa]
|
||||
movs r0, #0x80
|
||||
orrs r1, r0
|
||||
strb r1, [r2, #0xa]
|
||||
ldrb r1, [r2, #0x1a]
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x1a]
|
||||
ldr r0, [r2, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
orrs r0, r1
|
||||
str r0, [r2, #0x30]
|
||||
ldr r5, _0802CED8 @ =gPlayerEntity
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r5, r0]
|
||||
movs r0, #0x32
|
||||
ldrsh r2, [r5, r0]
|
||||
adds r0, r4, #0
|
||||
movs r3, #4
|
||||
bl sub_0806FCB8
|
||||
cmp r0, #0
|
||||
bne _0802CEAC
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl GetFacingDirection
|
||||
strb r0, [r4, #0x15]
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F69C
|
||||
_0802CEAC:
|
||||
adds r0, r4, #0
|
||||
bl sub_0802CFD8
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x5a
|
||||
ldrb r1, [r3]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r2, r0, #0x18
|
||||
cmp r2, #0
|
||||
beq _0802CEDC
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x1e
|
||||
strb r0, [r4, #0xe]
|
||||
b _0802CEF0
|
||||
.align 2, 0
|
||||
_0802CED4: .4byte gPlayerState
|
||||
_0802CED8: .4byte gPlayerEntity
|
||||
_0802CEDC:
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0802CEF0
|
||||
strb r2, [r3]
|
||||
ldrb r1, [r5, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x18]
|
||||
_0802CEF0:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0802CEF4
|
||||
sub_0802CEF4: @ 0x0802CEF4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0802CFD8
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0802CF28
|
||||
bl sub_0805E5A8
|
||||
ldr r1, _0802CF20 @ =gUnk_0813AB1C
|
||||
ldr r0, _0802CF24 @ =gArea
|
||||
ldrb r0, [r0, #3]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
bl DoExitTransition
|
||||
b _0802CF5A
|
||||
.align 2, 0
|
||||
_0802CF20: .4byte gUnk_0813AB1C
|
||||
_0802CF24: .4byte gArea
|
||||
_0802CF28:
|
||||
ldr r0, [r4, #0x34]
|
||||
ldr r1, _0802CF5C @ =0xFFFE0000
|
||||
adds r0, r0, r1
|
||||
str r0, [r4, #0x34]
|
||||
movs r0, #0x36
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r0, #0x30
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
bge _0802CF4A
|
||||
ldrb r0, [r4, #0x18]
|
||||
movs r1, #0x31
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #0x10
|
||||
orrs r1, r0
|
||||
strb r1, [r4, #0x18]
|
||||
_0802CF4A:
|
||||
ldr r1, _0802CF60 @ =gPlayerState
|
||||
ldrb r0, [r1, #0xa]
|
||||
movs r2, #0x80
|
||||
orrs r0, r2
|
||||
strb r0, [r1, #0xa]
|
||||
ldrb r0, [r1, #0x1a]
|
||||
orrs r0, r2
|
||||
strb r0, [r1, #0x1a]
|
||||
_0802CF5A:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0802CF5C: .4byte 0xFFFE0000
|
||||
_0802CF60: .4byte gPlayerState
|
||||
|
||||
thumb_func_start sub_0802CF64
|
||||
sub_0802CF64: @ 0x0802CF64
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08049FA0
|
||||
cmp r0, #0
|
||||
beq _0802CF76
|
||||
bl Random
|
||||
b _0802CF7E
|
||||
_0802CF76:
|
||||
adds r0, r4, #0
|
||||
bl sub_08049EE4
|
||||
adds r0, #2
|
||||
_0802CF7E:
|
||||
movs r1, #0x1c
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x15]
|
||||
adds r0, r4, #0
|
||||
bl sub_0802CF8C
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0802CF8C
|
||||
sub_0802CF8C: @ 0x0802CF8C
|
||||
push {r4, lr}
|
||||
adds r3, r0, #0
|
||||
ldrb r1, [r3, #0x15]
|
||||
adds r2, r1, #2
|
||||
movs r0, #0x1c
|
||||
ands r2, r0
|
||||
ldrb r4, [r3, #0x14]
|
||||
lsls r0, r4, #2
|
||||
subs r0, r2, r0
|
||||
adds r0, #6
|
||||
cmp r0, #0xc
|
||||
bls _0802CFA8
|
||||
lsrs r0, r2, #2
|
||||
b _0802CFB8
|
||||
_0802CFA8:
|
||||
adds r0, r1, #1
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
cmp r0, #2
|
||||
ble _0802CFD0
|
||||
lsrs r0, r2, #2
|
||||
cmp r0, r4
|
||||
beq _0802CFD0
|
||||
_0802CFB8:
|
||||
strb r0, [r3, #0x14]
|
||||
lsrs r0, r2, #3
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _0802CFD4 @ =gUnk_080CD730
|
||||
adds r2, r0, r1
|
||||
ldrh r1, [r2]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x74
|
||||
strh r1, [r0]
|
||||
ldrh r1, [r2, #2]
|
||||
adds r0, #2
|
||||
strh r1, [r0]
|
||||
_0802CFD0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0802CFD4: .4byte gUnk_080CD730
|
||||
|
||||
thumb_func_start sub_0802CFD8
|
||||
sub_0802CFD8: @ 0x0802CFD8
|
||||
push {lr}
|
||||
mov ip, r0
|
||||
ldr r2, _0802D014 @ =gUnk_080CD740
|
||||
mov r3, ip
|
||||
adds r3, #0x7a
|
||||
ldrb r0, [r3]
|
||||
adds r1, r0, #1
|
||||
strb r1, [r3]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x1b
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
adds r0, r0, r2
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
mov r0, ip
|
||||
adds r0, #0x74
|
||||
movs r3, #0
|
||||
ldrsh r1, [r0, r3]
|
||||
adds r1, r1, r2
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
adds r2, r2, r0
|
||||
mov r0, ip
|
||||
adds r0, #0x76
|
||||
ldrh r3, [r0]
|
||||
mov r0, ip
|
||||
bl sub_0805EC9C
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0802D014: .4byte gUnk_080CD740
|
||||
|
|
|
@ -3,21 +3,6 @@
|
|||
|
||||
.section .rodata
|
||||
|
||||
gUnk_080CD6FC:: @ 080CD6FC
|
||||
.incbin "baserom.gba", 0x0CD6FC, 0x0000018
|
||||
|
||||
gUnk_080CD714:: @ 080CD714
|
||||
.incbin "baserom.gba", 0x0CD714, 0x0000014
|
||||
|
||||
gUnk_080CD728:: @ 080CD728
|
||||
.incbin "baserom.gba", 0x0CD728, 0x0000008
|
||||
|
||||
gUnk_080CD730:: @ 080CD730
|
||||
.incbin "baserom.gba", 0x0CD730, 0x0000010
|
||||
|
||||
gUnk_080CD740:: @ 080CD740
|
||||
.incbin "baserom.gba", 0x0CD740, 0x0000008
|
||||
|
||||
gUnk_080CD748:: @ 080CD748
|
||||
.incbin "baserom.gba", 0x0CD748, 0x0000014
|
||||
|
||||
|
|
|
@ -360,6 +360,7 @@ SECTIONS {
|
|||
src/enemy/helmasaur.o(.text);
|
||||
src/enemy/fallingBoulder.o(.text);
|
||||
src/enemy/bobomb.o(.text);
|
||||
src/enemy/wallMaster2.o(.text);
|
||||
asm/wallMaster2.o(.text);
|
||||
asm/gleerok.o(.text);
|
||||
asm/vaatiEyesMacro.o(.text);
|
||||
|
@ -972,6 +973,7 @@ SECTIONS {
|
|||
data/animations/fallingBoulder.o(.rodata);
|
||||
src/enemy/bobomb.o(.rodata);
|
||||
data/animations/bobomb.o(.rodata);
|
||||
src/enemy/wallMaster2.o(.rodata);
|
||||
data/data_080CC6FC.o(.rodata);
|
||||
src/enemy.o(.rodata);
|
||||
data/data_080D3D94.o(.rodata);
|
||||
|
|
|
@ -0,0 +1,205 @@
|
|||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
#include "area.h"
|
||||
|
||||
extern void sub_08001328(Entity*);
|
||||
extern u32 sub_0806FCB8(Entity*, u32, u32, u32);
|
||||
extern void DoExitTransition(u32*);
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
extern u32* gUnk_0813AB1C[];
|
||||
|
||||
void sub_0802CF64(Entity*);
|
||||
void sub_0802CF8C(Entity*);
|
||||
void sub_0802CFD8(Entity*);
|
||||
|
||||
extern void (*const gUnk_080CD6FC[])(Entity*);
|
||||
extern void (*const gUnk_080CD714[])(Entity*);
|
||||
extern const u16 gUnk_080CD728[];
|
||||
extern const u16 gUnk_080CD730[];
|
||||
extern const s8 gUnk_080CD740[];
|
||||
|
||||
void WallMaster2(Entity* this) {
|
||||
gUnk_080CD6FC[GetNextFunction(this)](this);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
}
|
||||
|
||||
void sub_0802CC68(Entity* this) {
|
||||
gUnk_080CD714[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0802CC80(Entity* this) {
|
||||
u8 bVar1 = this->bitfield & 0x7f;
|
||||
switch (this->bitfield & 0x7f) {
|
||||
case 0 ... 1:
|
||||
case 0x1e:
|
||||
this->action = 3;
|
||||
this->flags &= ~0x80;
|
||||
InitializeAnimation(this, 1);
|
||||
gPlayerEntity.flags &= ~0x80;
|
||||
break;
|
||||
}
|
||||
if (this->field_0x43 != 0) {
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
}
|
||||
sub_0804AA30(this, gUnk_080CD6FC);
|
||||
}
|
||||
|
||||
void nullsub_151(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void sub_0802CCE0(Entity* this) {
|
||||
u32 tmp;
|
||||
|
||||
sub_0804A720(this);
|
||||
this->action = 1;
|
||||
this->actionDelay = 60;
|
||||
this->field_0xf = Random();
|
||||
this->spriteSettings.b.shadow = 2;
|
||||
this->animationState = 0xff;
|
||||
this->height.HALF.HI = -2;
|
||||
this->collisionLayer = 3;
|
||||
tmp = Random();
|
||||
this->field_0x7a.HALF.LO = tmp;
|
||||
this->field_0x7a.HALF.HI = (tmp >> 8) & 0x60;
|
||||
this->field_0x7c.HALF.LO = 0;
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
InitializeAnimation(this, 0);
|
||||
sub_0802CF64(this);
|
||||
sub_0802CFD8(this);
|
||||
}
|
||||
|
||||
void sub_0802CD54(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
sub_0802CFD8(this);
|
||||
|
||||
if ((this->field_0x7c.HALF_U.LO == 0 || --this->field_0x7c.HALF_U.LO == 0) && sub_08049FDC(this, 1)) {
|
||||
if (this->field_0x7a.HALF.HI) {
|
||||
--this->field_0x7a.HALF.HI;
|
||||
} else {
|
||||
u32 tmp;
|
||||
|
||||
this->action = 2;
|
||||
tmp = Random() >> 0x10;
|
||||
this->actionDelay = tmp;
|
||||
this->nonPlanarMovement = 0xc0;
|
||||
this->field_0x78.HWORD = gUnk_080CD728[Random() & 3];
|
||||
this->field_0x7a.HALF.HI = (tmp >> 8) & 0x60;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (--this->actionDelay == 0) {
|
||||
this->actionDelay = 60;
|
||||
sub_0802CF64(this);
|
||||
}
|
||||
sub_0806F69C(this);
|
||||
}
|
||||
|
||||
void sub_0802CDE8(Entity* this) {
|
||||
if (--this->field_0x78.HWORD && sub_08049FDC(this, 1)) {
|
||||
if ((this->actionDelay++ & 3) == 0) {
|
||||
sub_08004596(this, GetFacingDirection(this, gUnk_020000B0));
|
||||
sub_0802CF8C(this);
|
||||
}
|
||||
sub_0806F69C(this);
|
||||
} else {
|
||||
this->action = 1;
|
||||
this->actionDelay = 60;
|
||||
this->nonPlanarMovement = 0x60;
|
||||
this->field_0x7c.HALF.LO = (Random() & 0x38) + 0x96;
|
||||
}
|
||||
GetNextFrame(this);
|
||||
sub_0802CFD8(this);
|
||||
}
|
||||
|
||||
void sub_0802CE68(Entity* this) {
|
||||
u8 frames;
|
||||
|
||||
gPlayerState.field_0xa |= 0x80;
|
||||
gPlayerState.field_0x1a[0] |= 0x80;
|
||||
gPlayerState.flags.all |= 0x100;
|
||||
if (!sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 4)) {
|
||||
this->direction = GetFacingDirection(this, &gPlayerEntity);
|
||||
sub_0806F69C(this);
|
||||
}
|
||||
sub_0802CFD8(this);
|
||||
GetNextFrame(this);
|
||||
frames = this->frames.all & 0x80;
|
||||
if (frames) {
|
||||
this->action = 4;
|
||||
this->actionDelay = 30;
|
||||
} else if (this->frames.all & 1) {
|
||||
this->frames.all = frames;
|
||||
gPlayerEntity.spriteSettings.b.draw = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0802CEF4(Entity* this) {
|
||||
sub_0802CFD8(this);
|
||||
if (--this->actionDelay == 0) {
|
||||
sub_0805E5A8();
|
||||
DoExitTransition(gUnk_0813AB1C[gArea.regret]);
|
||||
} else {
|
||||
this->height.WORD -= 0x20000;
|
||||
if (this->height.HALF.HI < -0x30) {
|
||||
this->spriteSettings.b.shadow = 1;
|
||||
}
|
||||
gPlayerState.field_0xa |= 0x80;
|
||||
gPlayerState.field_0x1a[0] |= 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0802CF64(Entity* this) {
|
||||
if (sub_08049FA0(this)) {
|
||||
this->direction = Direction8Round(Random());
|
||||
} else {
|
||||
this->direction = Direction8RoundUp(sub_08049EE4(this));
|
||||
}
|
||||
sub_0802CF8C(this);
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_0802CF8C(Entity* this) {
|
||||
asm(".include \"asm/non_matching/wallMaster2/sub_0802CF8C.inc\"");
|
||||
}
|
||||
|
||||
void sub_0802CFD8(Entity* this) {
|
||||
u32 unk = gUnk_080CD740[(this->field_0x7a.HALF.LO++ >> 3) & 7];
|
||||
sub_0805EC9C(this, (s16)this->field_0x74.HWORD + unk, 0x100 + unk, this->field_0x76.HWORD);
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
void (*const gUnk_080CD6FC[])(Entity*) = {
|
||||
sub_0802CC68,
|
||||
sub_0802CC80,
|
||||
sub_08001328,
|
||||
sub_0804A7D4,
|
||||
sub_08001242,
|
||||
nullsub_151,
|
||||
};
|
||||
|
||||
void (*const gUnk_080CD714[])(Entity*) = {
|
||||
sub_0802CCE0,
|
||||
sub_0802CD54,
|
||||
sub_0802CDE8,
|
||||
sub_0802CE68,
|
||||
sub_0802CEF4,
|
||||
};
|
||||
|
||||
const u16 gUnk_080CD728[] = {
|
||||
120, 180, 240, 300,
|
||||
};
|
||||
|
||||
const u16 gUnk_080CD730[] = {
|
||||
0xff00, 0x4000,
|
||||
0xff00, 0x0000,
|
||||
0x0100, 0x0000,
|
||||
0x0100, 0xc000,
|
||||
};
|
||||
|
||||
const s8 gUnk_080CD740[] = {
|
||||
-2, -4, -2, 0, 2, 4, 2, 0,
|
||||
};
|
||||
// clang-format on
|
Loading…
Reference in New Issue