mirror of
https://github.com/zeldaret/tmc
synced 2026-06-01 09:47:53 -04:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
-1482
File diff suppressed because it is too large
Load Diff
@@ -1,53 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start Carlov
|
||||
Carlov: @ 0x0806BD54
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0806BD6A
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
bl sub_0807DD50
|
||||
b _0806BD72
|
||||
_0806BD6A:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_0807DD94
|
||||
_0806BD72:
|
||||
adds r4, #0x5a
|
||||
ldrb r1, [r4]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0806BD94
|
||||
movs r0, #0xef
|
||||
ands r0, r1
|
||||
strb r0, [r4]
|
||||
movs r0, #0x82
|
||||
lsls r0, r0, #1
|
||||
bl sub_08004488
|
||||
movs r0, #0x10
|
||||
movs r1, #0
|
||||
bl sub_08080964
|
||||
_0806BD94:
|
||||
ldrb r1, [r4]
|
||||
movs r0, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0806BDAA
|
||||
movs r0, #0xdf
|
||||
ands r0, r1
|
||||
strb r0, [r4]
|
||||
movs r0, #0x7c
|
||||
bl sub_08004488
|
||||
_0806BDAA:
|
||||
pop {r4, pc}
|
||||
@@ -5,298 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_0805070C
|
||||
sub_0805070C: @ 0x0805070C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
bl sub_0805F2C8
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _0805077A
|
||||
movs r0, #0
|
||||
strb r0, [r5, #2]
|
||||
movs r0, #5
|
||||
strb r0, [r5, #3]
|
||||
movs r0, #1
|
||||
strb r0, [r5, #1]
|
||||
movs r0, #0x30
|
||||
strh r0, [r5, #4]
|
||||
ldr r0, _08050780 @ =gUnk_02000D00
|
||||
str r0, [r5, #8]
|
||||
movs r6, #0
|
||||
_08050732:
|
||||
movs r0, #0
|
||||
strh r0, [r5, #6]
|
||||
ldr r0, [r5, #8]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #2
|
||||
bl _DmaZero
|
||||
ldr r0, _08050784 @ =0x000004B4
|
||||
adds r1, r6, #0
|
||||
muls r1, r0, r1
|
||||
ldr r0, _08050788 @ =gUnk_02019F6C
|
||||
adds r7, r1, r0
|
||||
movs r4, #0
|
||||
lsls r0, r6, #9
|
||||
mov r8, r0
|
||||
adds r6, #1
|
||||
_08050752:
|
||||
adds r0, r7, r4
|
||||
ldrb r0, [r0]
|
||||
adds r1, r5, #0
|
||||
bl sub_0805F7DC
|
||||
adds r4, #1
|
||||
cmp r4, #5
|
||||
ble _08050752
|
||||
ldr r0, [r5, #8]
|
||||
ldr r1, _0805078C @ =0x06014000
|
||||
add r1, r8
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #2
|
||||
bl sub_0801D66C
|
||||
cmp r6, #2
|
||||
bls _08050732
|
||||
adds r0, r5, #0
|
||||
bl sub_0805F300
|
||||
_0805077A:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08050780: .4byte gUnk_02000D00
|
||||
_08050784: .4byte 0x000004B4
|
||||
_08050788: .4byte gUnk_02019F6C
|
||||
_0805078C: .4byte 0x06014000
|
||||
|
||||
thumb_func_start sub_08050790
|
||||
sub_08050790: @ 0x08050790
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
bl sub_0805F2C8
|
||||
adds r6, r0, #0
|
||||
cmp r6, #0
|
||||
beq _080507F0
|
||||
movs r0, #0
|
||||
strb r0, [r6, #2]
|
||||
movs r0, #5
|
||||
strb r0, [r6, #3]
|
||||
movs r0, #1
|
||||
strb r0, [r6, #1]
|
||||
movs r0, #0x80
|
||||
strh r0, [r6, #4]
|
||||
ldr r0, _080507F8 @ =gUnk_02000D00
|
||||
str r0, [r6, #8]
|
||||
movs r1, #0
|
||||
_080507B6:
|
||||
movs r0, #0
|
||||
strh r0, [r6, #6]
|
||||
lsls r4, r1, #4
|
||||
movs r5, #0
|
||||
lsls r7, r1, #0xa
|
||||
adds r1, #1
|
||||
mov r8, r1
|
||||
_080507C4:
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_0805F7DC
|
||||
adds r4, #1
|
||||
adds r5, #1
|
||||
cmp r5, #0xf
|
||||
bls _080507C4
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #0x13
|
||||
adds r1, r7, r0
|
||||
ldr r0, _080507F8 @ =gUnk_02000D00
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #3
|
||||
bl sub_0801D66C
|
||||
mov r1, r8
|
||||
cmp r1, #0xf
|
||||
bls _080507B6
|
||||
adds r0, r6, #0
|
||||
bl sub_0805F300
|
||||
_080507F0:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080507F8: .4byte gUnk_02000D00
|
||||
|
||||
thumb_func_start sub_080507FC
|
||||
sub_080507FC: @ 0x080507FC
|
||||
ldr r0, _0805080C @ =gUnk_0200AF00
|
||||
movs r1, #0xa0
|
||||
lsls r1, r1, #1
|
||||
strh r1, [r0, #0x1a]
|
||||
movs r1, #0x24
|
||||
strh r1, [r0, #0x20]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0805080C: .4byte gUnk_0200AF00
|
||||
|
||||
thumb_func_start sub_08050810
|
||||
sub_08050810: @ 0x08050810
|
||||
ldr r0, _0805081C @ =gUnk_0200AF00
|
||||
movs r1, #0xd0
|
||||
strh r1, [r0, #0x1a]
|
||||
movs r1, #0x24
|
||||
strh r1, [r0, #0x20]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0805081C: .4byte gUnk_0200AF00
|
||||
|
||||
thumb_func_start sub_08050820
|
||||
sub_08050820: @ 0x08050820
|
||||
push {lr}
|
||||
ldr r1, _0805083C @ =gUnk_080FC8FC
|
||||
ldr r0, _08050840 @ =gMenu
|
||||
ldrb r0, [r0, #5]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
ldr r0, _08050844 @ =gUnk_02019EE0
|
||||
ldrb r0, [r0, #6]
|
||||
bl sub_08050A64
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0805083C: .4byte gUnk_080FC8FC
|
||||
_08050840: .4byte gMenu
|
||||
_08050844: .4byte gUnk_02019EE0
|
||||
|
||||
thumb_func_start sub_08050848
|
||||
sub_08050848: @ 0x08050848
|
||||
push {lr}
|
||||
movs r0, #7
|
||||
bl sub_080503A8
|
||||
bl sub_0805070C
|
||||
ldr r0, _08050868 @ =gUnk_02019EE0
|
||||
movs r1, #0
|
||||
strb r1, [r0, #7]
|
||||
ldrb r0, [r0, #6]
|
||||
bl sub_08050AFC
|
||||
movs r0, #1
|
||||
bl sub_080A7114
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08050868: .4byte gUnk_02019EE0
|
||||
|
||||
thumb_func_start sub_0805086C
|
||||
sub_0805086C: @ 0x0805086C
|
||||
push {lr}
|
||||
ldr r1, _08050880 @ =gUnk_080FC908
|
||||
ldr r0, _08050884 @ =gMenu
|
||||
ldrb r0, [r0, #6]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
bl _call_via_r0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08050880: .4byte gUnk_080FC908
|
||||
_08050884: .4byte gMenu
|
||||
|
||||
thumb_func_start sub_08050888
|
||||
sub_08050888: @ 0x08050888
|
||||
push {r4, lr}
|
||||
ldr r0, _080508C4 @ =gFadeControl
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080508DC
|
||||
ldr r4, _080508C8 @ =gUnk_02019EE0
|
||||
ldrb r1, [r4, #7]
|
||||
adds r0, r4, #0
|
||||
adds r0, #8
|
||||
adds r0, r1, r0
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _080508D0
|
||||
cmp r0, #1
|
||||
beq _080508D6
|
||||
adds r0, r1, #0
|
||||
bl sub_0805194C
|
||||
ldrb r1, [r4, #7]
|
||||
adds r1, #1
|
||||
movs r0, #0
|
||||
bl sub_08050318
|
||||
ldr r1, _080508CC @ =gMenu
|
||||
movs r0, #0x1e
|
||||
strh r0, [r1, #8]
|
||||
movs r0, #1
|
||||
b _080508DA
|
||||
.align 2, 0
|
||||
_080508C4: .4byte gFadeControl
|
||||
_080508C8: .4byte gUnk_02019EE0
|
||||
_080508CC: .4byte gMenu
|
||||
_080508D0:
|
||||
adds r0, r1, #0
|
||||
bl sub_0805194C
|
||||
_080508D6:
|
||||
ldr r1, _080508E0 @ =gMenu
|
||||
movs r0, #2
|
||||
_080508DA:
|
||||
strb r0, [r1, #6]
|
||||
_080508DC:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080508E0: .4byte gMenu
|
||||
|
||||
thumb_func_start sub_080508E4
|
||||
sub_080508E4: @ 0x080508E4
|
||||
push {lr}
|
||||
ldr r2, _08050900 @ =gMenu
|
||||
ldrh r0, [r2, #8]
|
||||
cmp r0, #0
|
||||
bne _08050908
|
||||
ldr r0, _08050904 @ =gUnk_03000FF0
|
||||
ldrh r1, [r0, #2]
|
||||
movs r0, #9
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0805090C
|
||||
movs r0, #2
|
||||
strb r0, [r2, #6]
|
||||
b _0805090C
|
||||
.align 2, 0
|
||||
_08050900: .4byte gMenu
|
||||
_08050904: .4byte gUnk_03000FF0
|
||||
_08050908:
|
||||
subs r0, #1
|
||||
strh r0, [r2, #8]
|
||||
_0805090C:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08050910
|
||||
sub_08050910: @ 0x08050910
|
||||
push {lr}
|
||||
bl sub_08050384
|
||||
ldr r1, _08050930 @ =gUnk_02019EE0
|
||||
ldrb r0, [r1, #7]
|
||||
adds r0, #1
|
||||
strb r0, [r1, #7]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #2
|
||||
bls _08050934
|
||||
movs r0, #2
|
||||
bl sub_080A7114
|
||||
b _0805093A
|
||||
.align 2, 0
|
||||
_08050930: .4byte gUnk_02019EE0
|
||||
_08050934:
|
||||
ldr r1, _0805093C @ =gMenu
|
||||
movs r0, #0
|
||||
strb r0, [r1, #6]
|
||||
_0805093A:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0805093C: .4byte gMenu
|
||||
|
||||
thumb_func_start sub_08050940
|
||||
sub_08050940: @ 0x08050940
|
||||
push {r4, r5, r6, lr}
|
||||
|
||||
-334
@@ -1,334 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_08057854
|
||||
sub_08057854: @ 0x08057854
|
||||
push {lr}
|
||||
ldr r2, _08057868 @ =gUnk_08107C70
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08057868: .4byte gUnk_08107C70
|
||||
|
||||
thumb_func_start sub_0805786C
|
||||
sub_0805786C: @ 0x0805786C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
mov r8, r0
|
||||
bl sub_080805F8
|
||||
ldr r6, _080578D4 @ =gUnk_03004030
|
||||
ldrb r0, [r6, #8]
|
||||
cmp r0, #0
|
||||
beq _08057914
|
||||
ldr r0, [r6]
|
||||
cmp r0, #0
|
||||
bne _080578C0
|
||||
movs r0, #0xff
|
||||
strb r0, [r6, #0xa]
|
||||
ldr r0, _080578D8 @ =gRoomControls
|
||||
ldrb r5, [r0, #5]
|
||||
ldr r7, _080578DC @ =gUnk_08107DC0
|
||||
ldrb r0, [r0, #4]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r7
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_08057AA8
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _080578C0
|
||||
ldrb r5, [r4, #5]
|
||||
ldrb r0, [r4, #4]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r7
|
||||
ldr r4, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_08057AA8
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _080578C0
|
||||
str r4, [r6]
|
||||
_080578C0:
|
||||
ldr r0, _080578D8 @ =gRoomControls
|
||||
ldrb r5, [r0, #5]
|
||||
ldr r1, _080578DC @ =gUnk_08107DC0
|
||||
ldrb r0, [r0, #4]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r4, [r0]
|
||||
movs r6, #0x81
|
||||
lsls r6, r6, #7
|
||||
b _08057906
|
||||
.align 2, 0
|
||||
_080578D4: .4byte gUnk_03004030
|
||||
_080578D8: .4byte gRoomControls
|
||||
_080578DC: .4byte gUnk_08107DC0
|
||||
_080578E0:
|
||||
ldrh r1, [r4]
|
||||
adds r1, #0x3f
|
||||
adds r0, r6, #0
|
||||
movs r2, #1
|
||||
bl SetTile
|
||||
ldrh r1, [r4]
|
||||
adds r1, #0x40
|
||||
adds r0, r6, #0
|
||||
movs r2, #1
|
||||
bl SetTile
|
||||
ldrh r1, [r4]
|
||||
adds r1, #0x41
|
||||
adds r0, r6, #0
|
||||
movs r2, #1
|
||||
bl SetTile
|
||||
adds r4, #8
|
||||
_08057906:
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_08057AA8
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
bne _080578E0
|
||||
_08057914:
|
||||
movs r0, #1
|
||||
mov r1, r8
|
||||
strb r0, [r1, #0xc]
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
thumb_func_start sub_08057920
|
||||
sub_08057920: @ 0x08057920
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
ldr r0, _08057934 @ =gRoomControls
|
||||
ldrb r5, [r0, #5]
|
||||
ldr r1, _08057938 @ =gUnk_08107DC0
|
||||
ldrb r0, [r0, #4]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r4, [r0]
|
||||
b _0805793E
|
||||
.align 2, 0
|
||||
_08057934: .4byte gRoomControls
|
||||
_08057938: .4byte gUnk_08107DC0
|
||||
_0805793C:
|
||||
adds r4, #8
|
||||
_0805793E:
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_08057AA8
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08057958
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
bl sub_0805795C
|
||||
cmp r0, #0
|
||||
beq _0805793C
|
||||
_08057958:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0805795C
|
||||
sub_0805795C: @ 0x0805795C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r7, r0, #0
|
||||
adds r6, r1, #0
|
||||
ldr r0, _080579BC @ =gUnk_03004030
|
||||
ldrb r0, [r0, #8]
|
||||
cmp r0, #0
|
||||
beq _080579C8
|
||||
ldr r1, _080579C0 @ =gPlayerEntity
|
||||
ldr r3, _080579C4 @ =gRoomControls
|
||||
ldrh r2, [r1, #0x2e]
|
||||
ldrh r0, [r3, #6]
|
||||
subs r2, r2, r0
|
||||
lsls r2, r2, #0x10
|
||||
lsrs r2, r2, #0x10
|
||||
ldrh r0, [r1, #0x32]
|
||||
ldrh r1, [r3, #8]
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r4, r0, #0x10
|
||||
ldrh r3, [r6]
|
||||
movs r1, #0x3f
|
||||
ands r1, r3
|
||||
lsls r1, r1, #4
|
||||
adds r1, #8
|
||||
movs r0, #0xfc
|
||||
lsls r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #0xe
|
||||
movs r3, #0xc0
|
||||
lsls r3, r3, #0xd
|
||||
adds r0, r0, r3
|
||||
lsrs r3, r0, #0x10
|
||||
subs r2, r2, r1
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x18
|
||||
cmp r0, #0x30
|
||||
bhi _08057A14
|
||||
subs r0, r4, r3
|
||||
adds r0, #8
|
||||
cmp r0, #0x10
|
||||
bhi _08057A14
|
||||
cmp r4, r3
|
||||
bhs _08057A00
|
||||
adds r0, r2, #0
|
||||
adds r0, #0xc
|
||||
cmp r0, #0x18
|
||||
bls _08057A14
|
||||
b _08057A00
|
||||
.align 2, 0
|
||||
_080579BC: .4byte gUnk_03004030
|
||||
_080579C0: .4byte gPlayerEntity
|
||||
_080579C4: .4byte gRoomControls
|
||||
_080579C8:
|
||||
ldr r3, _08057A0C @ =gPlayerEntity
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r3, r1]
|
||||
ldr r2, _08057A10 @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r4, r0, #4
|
||||
movs r1, #0x3f
|
||||
ands r4, r1
|
||||
movs r0, #0x32
|
||||
ldrsh r5, [r3, r0]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r5, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r1
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
ldrh r1, [r6]
|
||||
cmp r4, r1
|
||||
bne _08057A14
|
||||
lsrs r0, r4, #6
|
||||
lsls r0, r0, #4
|
||||
adds r0, r2, r0
|
||||
adds r0, #6
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r3, r0, #0x10
|
||||
cmp r5, r3
|
||||
bge _08057A14
|
||||
_08057A00:
|
||||
adds r0, r7, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_08057A18
|
||||
movs r0, #1
|
||||
b _08057A16
|
||||
.align 2, 0
|
||||
_08057A0C: .4byte gPlayerEntity
|
||||
_08057A10: .4byte gRoomControls
|
||||
_08057A14:
|
||||
movs r0, #0
|
||||
_08057A16:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
thumb_func_start sub_08057A18
|
||||
sub_08057A18: @ 0x08057A18
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r7, r0, #0
|
||||
adds r5, r1, #0
|
||||
bl sub_0805E5A8
|
||||
ldr r6, _08057A94 @ =gUnk_03004030
|
||||
ldrb r0, [r6, #9]
|
||||
strb r0, [r6, #0xa]
|
||||
ldr r3, _08057A98 @ =gRoomControls
|
||||
ldrb r0, [r3, #4]
|
||||
strb r0, [r6, #9]
|
||||
ldr r1, _08057A9C @ =gScreenTransition
|
||||
ldrb r0, [r5, #4]
|
||||
strb r0, [r1, #0xc]
|
||||
ldrb r0, [r5, #5]
|
||||
strb r0, [r1, #0xd]
|
||||
ldrb r0, [r5, #4]
|
||||
strb r0, [r3, #4]
|
||||
ldrb r0, [r5, #5]
|
||||
strb r0, [r3, #5]
|
||||
str r5, [r6]
|
||||
ldr r4, _08057AA0 @ =gPlayerEntity
|
||||
ldrh r1, [r4, #0x2e]
|
||||
ldrh r0, [r3, #6]
|
||||
subs r1, r1, r0
|
||||
ldrh r2, [r5]
|
||||
movs r0, #0x3f
|
||||
ands r0, r2
|
||||
lsls r0, r0, #4
|
||||
subs r1, r1, r0
|
||||
strh r1, [r6, #4]
|
||||
ldrh r1, [r4, #0x32]
|
||||
ldrh r0, [r3, #8]
|
||||
subs r1, r1, r0
|
||||
ldrh r2, [r5]
|
||||
movs r0, #0xfc
|
||||
lsls r0, r0, #4
|
||||
ands r0, r2
|
||||
lsrs r0, r0, #2
|
||||
subs r1, r1, r0
|
||||
strh r1, [r6, #6]
|
||||
ldrb r1, [r6, #8]
|
||||
cmp r1, #0
|
||||
bne _08057A86
|
||||
ldrb r0, [r5, #5]
|
||||
movs r2, #0x80
|
||||
orrs r0, r2
|
||||
ldrb r3, [r6, #0xb]
|
||||
cmp r0, r3
|
||||
beq _08057A80
|
||||
ldr r0, _08057AA4 @ =gUnk_02034480
|
||||
strh r1, [r0]
|
||||
_08057A80:
|
||||
ldrb r0, [r5, #5]
|
||||
orrs r0, r2
|
||||
strb r0, [r6, #0xb]
|
||||
_08057A86:
|
||||
ldrb r0, [r5, #3]
|
||||
bl sub_08080930
|
||||
adds r0, r7, #0
|
||||
bl sub_0805E900
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08057A94: .4byte gUnk_03004030
|
||||
_08057A98: .4byte gRoomControls
|
||||
_08057A9C: .4byte gScreenTransition
|
||||
_08057AA0: .4byte gPlayerEntity
|
||||
_08057AA4: .4byte gUnk_02034480
|
||||
|
||||
thumb_func_start sub_08057AA8
|
||||
sub_08057AA8: @ 0x08057AA8
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrh r0, [r2]
|
||||
ldr r3, _08057AC0 @ =0x0000FFFF
|
||||
cmp r0, r3
|
||||
beq _08057ACC
|
||||
_08057AB4:
|
||||
ldrb r0, [r2, #2]
|
||||
cmp r0, r1
|
||||
bne _08057AC4
|
||||
adds r0, r2, #0
|
||||
b _08057ACE
|
||||
.align 2, 0
|
||||
_08057AC0: .4byte 0x0000FFFF
|
||||
_08057AC4:
|
||||
adds r2, #8
|
||||
ldrh r0, [r2]
|
||||
cmp r0, r3
|
||||
bne _08057AB4
|
||||
_08057ACC:
|
||||
movs r0, #0
|
||||
_08057ACE:
|
||||
pop {pc}
|
||||
@@ -1,60 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_08058E60
|
||||
sub_08058E60: @ 0x08058E60
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _08058E80
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrh r0, [r4, #0x3e]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _08058E80
|
||||
adds r0, r4, #0
|
||||
bl sub_0805E900
|
||||
b _08058EC8
|
||||
_08058E80:
|
||||
ldrh r0, [r4, #0x3e]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _08058EC8
|
||||
ldrb r0, [r4, #0xb]
|
||||
cmp r0, #0
|
||||
beq _08058E9E
|
||||
movs r0, #0
|
||||
strb r0, [r4, #0xb]
|
||||
movs r0, #0xff
|
||||
bl sub_08078A90
|
||||
bl sub_08078B48
|
||||
_08058E9E:
|
||||
ldrh r1, [r4, #0x3a]
|
||||
movs r2, #0x3a
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, #0
|
||||
bne _08058EC4
|
||||
movs r1, #0x38
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, #0
|
||||
beq _08058EB4
|
||||
bl PlaySFX
|
||||
_08058EB4:
|
||||
ldrb r0, [r4, #0xa]
|
||||
bl GetCurrentRoomProperty
|
||||
bl LoadRoomEntityList
|
||||
bl DeleteThisEntity
|
||||
b _08058EC8
|
||||
_08058EC4:
|
||||
subs r0, r1, #1
|
||||
strh r0, [r4, #0x3a]
|
||||
_08058EC8:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
@@ -0,0 +1,136 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r7, r0, #0
|
||||
bl GetNextFrame
|
||||
adds r3, r7, #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 _08031D54
|
||||
ldr r0, _08031D50 @ =gUnk_03003DBC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x42
|
||||
bhi _08031D66
|
||||
bl Random
|
||||
adds r6, r0, #0
|
||||
movs r0, #3
|
||||
mov sb, r0
|
||||
ands r6, r0
|
||||
movs r0, #0x2e
|
||||
movs r1, #1
|
||||
bl CreateEnemy
|
||||
adds r4, r0, #0
|
||||
movs r0, #0
|
||||
mov r8, r0
|
||||
mov r0, r8
|
||||
strb r0, [r4, #0xb]
|
||||
mov r0, r8
|
||||
str r0, [r4, #0x50]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x74
|
||||
strb r6, [r0]
|
||||
adds r0, r7, #0
|
||||
adds r1, r4, #0
|
||||
bl sub_08031E48
|
||||
movs r0, #0x2e
|
||||
movs r1, #1
|
||||
bl CreateEnemy
|
||||
adds r5, r0, #0
|
||||
str r5, [r4, #0x54]
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xb]
|
||||
str r4, [r5, #0x50]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
strb r6, [r0]
|
||||
adds r0, r7, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_08031E48
|
||||
movs r0, #0x2e
|
||||
movs r1, #1
|
||||
bl CreateEnemy
|
||||
adds r4, r0, #0
|
||||
str r4, [r5, #0x54]
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xb]
|
||||
str r5, [r4, #0x50]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x74
|
||||
strb r6, [r0]
|
||||
adds r0, r7, #0
|
||||
adds r1, r4, #0
|
||||
bl sub_08031E48
|
||||
movs r0, #0x2e
|
||||
movs r1, #1
|
||||
bl CreateEnemy
|
||||
adds r5, r0, #0
|
||||
str r5, [r4, #0x54]
|
||||
mov r0, sb
|
||||
strb r0, [r5, #0xb]
|
||||
str r4, [r5, #0x50]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x74
|
||||
strb r6, [r0]
|
||||
adds r0, r7, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_08031E48
|
||||
movs r0, #0x2e
|
||||
movs r1, #1
|
||||
bl CreateEnemy
|
||||
adds r1, r0, #0
|
||||
str r1, [r5, #0x54]
|
||||
movs r0, #4
|
||||
strb r0, [r1, #0xb]
|
||||
str r5, [r1, #0x50]
|
||||
mov r0, r8
|
||||
str r0, [r1, #0x54]
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x74
|
||||
strb r6, [r0]
|
||||
adds r0, r7, #0
|
||||
bl sub_08031E48
|
||||
movs r0, #6
|
||||
strb r0, [r7, #0xc]
|
||||
movs r0, #0x14
|
||||
strb r0, [r7, #0xe]
|
||||
adds r2, r7, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r7, #0
|
||||
movs r1, #7
|
||||
bl InitializeAnimation
|
||||
b _08031D66
|
||||
.align 2, 0
|
||||
_08031D50: .4byte gUnk_03003DBC
|
||||
_08031D54:
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08031D66
|
||||
strb r2, [r3]
|
||||
ldrb r1, [r7, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r7, #0x10]
|
||||
_08031D66:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #1
|
||||
bl sub_08049DF4
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08031E44
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r0, [r0]
|
||||
movs r3, #6
|
||||
ands r3, r0
|
||||
ldr r0, _08031E40 @ =gUnk_080CE5C0
|
||||
adds r3, r3, r0
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r2, r0]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r3, r0]
|
||||
adds r1, r1, r0
|
||||
movs r0, #0x32
|
||||
ldrsh r2, [r2, r0]
|
||||
movs r0, #1
|
||||
ldrsb r0, [r3, r0]
|
||||
adds r2, r2, r0
|
||||
adds r0, r4, #0
|
||||
movs r3, #0x50
|
||||
bl sub_0806FCB8
|
||||
b _08031E46
|
||||
.align 2, 0
|
||||
_08031E40: .4byte gUnk_080CE5C0
|
||||
_08031E44:
|
||||
movs r0, #0
|
||||
_08031E46:
|
||||
pop {r4, pc}
|
||||
.syntax divided
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {lr}
|
||||
adds r3, r0, #0
|
||||
adds r2, r3, #0
|
||||
adds r2, #0x78
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0
|
||||
beq _08032316
|
||||
subs r0, #1
|
||||
strb r0, [r2]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08032334
|
||||
ldrb r2, [r3, #0x18]
|
||||
lsls r1, r2, #0x19
|
||||
lsrs r1, r1, #0x1f
|
||||
movs r0, #1
|
||||
eors r1, r0
|
||||
lsls r1, r1, #6
|
||||
subs r0, #0x42
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r3, #0x18]
|
||||
b _08032334
|
||||
_08032316:
|
||||
ldrb r1, [r3, #0x15]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08032334
|
||||
lsrs r1, r1, #4
|
||||
movs r0, #1
|
||||
eors r1, r0
|
||||
ldrb r0, [r3, #0x18]
|
||||
lsls r0, r0, #0x19
|
||||
lsrs r0, r0, #0x1f
|
||||
cmp r1, r0
|
||||
beq _08032334
|
||||
movs r0, #6
|
||||
strb r0, [r2]
|
||||
_08032334:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -0,0 +1,95 @@
|
||||
sub_0805795C: @ 0x0805795C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
add r7, r0, #0
|
||||
add r6, r1, #0
|
||||
ldr r0, _080579BC @ =gUnk_03004030
|
||||
ldrb r0, [r0, #8]
|
||||
cmp r0, #0
|
||||
beq _080579C8
|
||||
ldr r1, _080579C0 @ =gPlayerEntity
|
||||
ldr r3, _080579C4 @ =gRoomControls
|
||||
ldrh r2, [r1, #0x2e]
|
||||
ldrh r0, [r3, #6]
|
||||
sub r2, r2, r0
|
||||
lsl r2, r2, #0x10
|
||||
lsr r2, r2, #0x10
|
||||
ldrh r0, [r1, #0x32]
|
||||
ldrh r1, [r3, #8]
|
||||
sub r0, r0, r1
|
||||
lsl r0, r0, #0x10
|
||||
lsr r4, r0, #0x10
|
||||
ldrh r3, [r6]
|
||||
mov r1, #0x3f
|
||||
and r1, r3
|
||||
lsl r1, r1, #4
|
||||
add r1, #8
|
||||
mov r0, #0xfc
|
||||
lsl r0, r0, #4
|
||||
and r0, r3
|
||||
lsl r0, r0, #0xe
|
||||
mov r3, #0xc0
|
||||
lsl r3, r3, #0xd
|
||||
add r0, r0, r3
|
||||
lsr r3, r0, #0x10
|
||||
sub r2, r2, r1
|
||||
add r0, r2, #0
|
||||
add r0, #0x18
|
||||
cmp r0, #0x30
|
||||
bhi _08057A14
|
||||
sub r0, r4, r3
|
||||
add r0, #8
|
||||
cmp r0, #0x10
|
||||
bhi _08057A14
|
||||
cmp r4, r3
|
||||
bhs _08057A00
|
||||
add r0, r2, #0
|
||||
add r0, #0xc
|
||||
cmp r0, #0x18
|
||||
bls _08057A14
|
||||
b _08057A00
|
||||
.align 2, 0
|
||||
_080579BC: .4byte gUnk_03004030
|
||||
_080579C0: .4byte gPlayerEntity
|
||||
_080579C4: .4byte gRoomControls
|
||||
_080579C8:
|
||||
ldr r3, _08057A0C @ =gPlayerEntity
|
||||
mov r1, #0x2e
|
||||
ldrsh r0, [r3, r1]
|
||||
ldr r2, _08057A10 @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
sub r0, r0, r1
|
||||
asr r4, r0, #4
|
||||
mov r1, #0x3f
|
||||
and r4, r1
|
||||
mov r0, #0x32
|
||||
ldrsh r5, [r3, r0]
|
||||
ldrh r2, [r2, #8]
|
||||
sub r0, r5, r2
|
||||
asr r0, r0, #4
|
||||
and r0, r1
|
||||
lsl r0, r0, #6
|
||||
orr r4, r0
|
||||
ldrh r1, [r6]
|
||||
cmp r4, r1
|
||||
bne _08057A14
|
||||
lsr r0, r4, #6
|
||||
lsl r0, r0, #4
|
||||
add r0, r2, r0
|
||||
add r0, #6
|
||||
lsl r0, r0, #0x10
|
||||
lsr r3, r0, #0x10
|
||||
cmp r5, r3
|
||||
bge _08057A14
|
||||
_08057A00:
|
||||
add r0, r7, #0
|
||||
add r1, r6, #0
|
||||
bl sub_08057A18
|
||||
mov r0, #1
|
||||
b _08057A16
|
||||
.align 2, 0
|
||||
_08057A0C: .4byte gPlayerEntity
|
||||
_08057A10: .4byte gRoomControls
|
||||
_08057A14:
|
||||
mov r0, #0
|
||||
_08057A16:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
+4
-4
@@ -91,7 +91,7 @@ typedef struct Entity {
|
||||
/*0x3a*/ u8 field_0x3a;
|
||||
/*0x3b*/ u8 flags2;
|
||||
/*0x3c*/ u8 field_0x3c;
|
||||
/*0x3d*/ u8 hurtBlinkTime;
|
||||
/*0x3d*/ s8 hurtBlinkTime;
|
||||
/*0x3e*/ u8 field_0x3e;
|
||||
/*0x3f*/ u8 damageType;
|
||||
/*0x40*/ u8 field_0x40;
|
||||
@@ -130,10 +130,10 @@ typedef struct Entity {
|
||||
/*0x6c*/ union SplitHWord field_0x6c;
|
||||
/*0x6e*/ u8 filler4[2];
|
||||
/*0x70*/ union SplitWord field_0x70;
|
||||
/*0x74*/ u16 field_0x74;
|
||||
/*0x76*/ u16 field_0x76;
|
||||
/*0x74*/ union SplitHWord field_0x74;
|
||||
/*0x76*/ union SplitHWord field_0x76;
|
||||
/*0x78*/ union SplitHWord field_0x78;
|
||||
/*0x7a*/ u16 field_0x7a;
|
||||
/*0x7a*/ union SplitHWord field_0x7a;
|
||||
/*0x7c*/ union SplitWord field_0x7c;
|
||||
/*0x80*/ union SplitHWord field_0x80;
|
||||
/*0x82*/ union SplitHWord field_0x82;
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ extern void sub_0805EC9C();
|
||||
extern void sub_0805EC60();
|
||||
extern void sub_080873D0();
|
||||
extern u8 sub_080045D4(s16, s16, u16, u16);
|
||||
extern void sub_0806F69C();
|
||||
extern void sub_0806F69C(Entity*);
|
||||
extern void sub_0805E3A0(Entity*, u32);
|
||||
extern void sub_0806D0B0(Entity*);
|
||||
extern void sub_0807DD64(Entity*);
|
||||
|
||||
+30
-4
@@ -3,6 +3,13 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
union SplitSHWord {
|
||||
s16 SHWORD;
|
||||
struct {
|
||||
u8 LO, HI;
|
||||
} PACKED HALF;
|
||||
} PACKED;
|
||||
|
||||
typedef struct {
|
||||
u8 unk_00[0x0a];
|
||||
u8 unk_0a;
|
||||
@@ -18,10 +25,8 @@ typedef struct {
|
||||
u8 unk_28[0x0D];
|
||||
u8 unk_35;
|
||||
u16 unk_36;
|
||||
u8 unk_38;
|
||||
u8 unk_39;
|
||||
u8 unk_3a;
|
||||
u8 unk_3b;
|
||||
union SplitSHWord unk_38;
|
||||
union SplitSHWord unk_3a;
|
||||
u16 unk_3c;
|
||||
u16 unk_3e;
|
||||
} Manager;
|
||||
@@ -43,4 +48,25 @@ typedef struct {
|
||||
} PACKED field_0x07;
|
||||
} UnkManagerHelperStruct;
|
||||
|
||||
typedef struct {
|
||||
u16 unk_00;
|
||||
u8 source_roomID;
|
||||
u8 unk_03;
|
||||
u8 target_areaID;
|
||||
u8 target_roomID;
|
||||
u16 unk_06;
|
||||
} DiggingCaveEntrance;
|
||||
|
||||
extern struct {
|
||||
DiggingCaveEntrance* unk_00;
|
||||
u16 unk_04;
|
||||
u16 unk_06;
|
||||
u8 unk_08;
|
||||
u8 unk_09;
|
||||
u8 unk_0a;
|
||||
u8 unk_0b;
|
||||
} gUnk_03004030;
|
||||
|
||||
extern DiggingCaveEntrance* gUnk_08107DC0[];
|
||||
|
||||
#endif
|
||||
|
||||
+15
-3
@@ -45,7 +45,9 @@ typedef struct {
|
||||
/*0x040*/ u32 windcrests;
|
||||
/*0x044*/ u8 filler44[0xC];
|
||||
/*0x050*/ u32 unk50;
|
||||
/*0x054*/ u8 filler54[0x54];
|
||||
/*0x054*/ u8 filler54[0x2C];
|
||||
/*0x080*/ u8 playerName[6];
|
||||
/*0x086*/ u8 filler86[0x22];
|
||||
/*0x0A8*/ Stats stats;
|
||||
/*0x0D0*/ u8 fillerD0[0x3c0];
|
||||
/*0x490*/ u32 unk490;
|
||||
@@ -135,7 +137,11 @@ typedef struct {
|
||||
extern struct_03000FD0 gFadeControl;
|
||||
|
||||
typedef struct {
|
||||
u8 unk0[0x24];
|
||||
u8 filler0[0x1A];
|
||||
u16 unk1A;
|
||||
u8 filler1C[0x4];
|
||||
u16 unk20;
|
||||
u8 filler22[0x2];
|
||||
u8 ezloNagFuncIndex;
|
||||
u8 filler25[0x30F];
|
||||
} struct_0200AF00;
|
||||
@@ -148,4 +154,10 @@ typedef struct {
|
||||
|
||||
extern struct_02024490 gUnk_02024490;
|
||||
|
||||
#endif
|
||||
typedef struct {
|
||||
u16 unk_00;
|
||||
u8 unk_02[0xE];
|
||||
} struct_02034480;
|
||||
extern struct_02034480 gUnk_02034480;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -377,7 +377,7 @@ SECTIONS {
|
||||
asm/rope.o(.text);
|
||||
src/enemy/smallPesto.o(.text);
|
||||
asm/smallPesto.o(.text);
|
||||
asm/acroBandits.o(.text);
|
||||
src/enemy/acroBandits.o(.text);
|
||||
src/enemy/bladeTrap.o(.text);
|
||||
src/enemy/keaton.o(.text);
|
||||
asm/crow.o(.text);
|
||||
@@ -475,7 +475,7 @@ SECTIONS {
|
||||
src/manager/manager2.o(.text);
|
||||
asm/manager2.o(.text);
|
||||
asm/manager3.o(.text);
|
||||
asm/manager4.o(.text);
|
||||
src/manager/manager4.o(.text);
|
||||
asm/manager5.o(.text);
|
||||
src/manager/manager6.o(.text);
|
||||
asm/manager7.o(.text);
|
||||
@@ -485,7 +485,7 @@ SECTIONS {
|
||||
asm/managerB.o(.text);
|
||||
asm/managerC.o(.text);
|
||||
asm/managerD.o(.text);
|
||||
asm/managerE.o(.text);
|
||||
src/manager/managerE.o(.text);
|
||||
asm/managerF.o(.text);
|
||||
asm/manager10.o(.text);
|
||||
asm/manager11.o(.text);
|
||||
@@ -609,7 +609,7 @@ SECTIONS {
|
||||
src/npc/moblinLady.o(.text);
|
||||
asm/librarians.o(.text);
|
||||
asm/farmers.o(.text);
|
||||
asm/carlov.o(.text);
|
||||
src/npc/carlov.o(.text);
|
||||
src/npc/dampe.o(.text);
|
||||
asm/drLeft.o(.text);
|
||||
asm/kingGustaf.o(.text);
|
||||
|
||||
+143
-3
@@ -1,15 +1,30 @@
|
||||
#include "global.h"
|
||||
#include "functions.h"
|
||||
#include "main.h"
|
||||
#include "readKeyInput.h"
|
||||
#include "screen.h"
|
||||
|
||||
typedef struct {
|
||||
u8 filler0[0x30];
|
||||
u8 filler0[0x5];
|
||||
u8 state;
|
||||
u8 subState;
|
||||
u16 timer;
|
||||
u8 fillerA[0x26];
|
||||
} ChooseFileState;
|
||||
|
||||
// TODO: This occupies the same memory region as gMenu
|
||||
extern ChooseFileState gChooseFileState;
|
||||
|
||||
typedef struct {
|
||||
u8 filler0[0x1];
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
u8* unk8;
|
||||
} struct_02036540;
|
||||
|
||||
typedef struct {
|
||||
u8 filler0[0x10];
|
||||
u16 unk10;
|
||||
@@ -30,24 +45,31 @@ extern struct_02034CB0 gUnk_02034CB0;
|
||||
extern struct_02034CB0 gUnk_02021F30;
|
||||
extern SaveFile gSaveFiles[];
|
||||
extern u32 gUsedPalettes;
|
||||
extern u8 gUnk_02000D00[];
|
||||
|
||||
static void sub_08050624(u32);
|
||||
static void sub_0805066C(void);
|
||||
static void sub_080507FC(void);
|
||||
|
||||
extern void sub_0801D66C(const void* src, void* dest, u32 size);
|
||||
extern void sub_08056FEC(u32, struct_020227E8*);
|
||||
extern void sub_0805F46C(u32, struct_080FC844*);
|
||||
extern void sub_0801C4A0(u32, u32);
|
||||
extern void sub_0801D66C(const void* src, void* dest, u32 size);
|
||||
extern void sub_080507FC(void);
|
||||
extern void sub_08080668(void);
|
||||
extern void sub_0805194C(u32);
|
||||
extern void LoadPalettes(const u8*, int, int);
|
||||
extern struct_02036540* sub_0805F2C8(void);
|
||||
extern void sub_0805F7DC(u32, struct_02036540*);
|
||||
extern void sub_0805F300(struct_02036540*);
|
||||
extern void sub_08050A64(u32);
|
||||
extern void sub_08050AFC(u32);
|
||||
|
||||
extern const struct_080FC844 gUnk_080FC844;
|
||||
extern const u16 gUnk_080FC85C[][3];
|
||||
extern void (*const gUnk_080FC8A4[])(void);
|
||||
extern void (*const gUnk_080FC8B0[])(void);
|
||||
extern void (*const gUnk_080FC8FC[])(void);
|
||||
extern void (*const gUnk_080FC908[])(void);
|
||||
extern const u8 gUnk_080FC8D0[];
|
||||
extern const u16 gUnk_080FC8DE[];
|
||||
extern const u8 gGlobalGfxAndPalettes[];
|
||||
@@ -234,3 +256,121 @@ static void sub_0805066C(void) {
|
||||
LoadPalettes(&paletteOffset[0x11DA0], 14, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0805070C(void) {
|
||||
u32 i;
|
||||
int j;
|
||||
struct_02036540* var0;
|
||||
u8* playerName;
|
||||
|
||||
var0 = sub_0805F2C8();
|
||||
if (var0) {
|
||||
var0->unk2 = 0;
|
||||
var0->unk3 = 5;
|
||||
var0->unk1 = 1;
|
||||
var0->unk4 = 0x30;
|
||||
var0->unk8 = gUnk_02000D00;
|
||||
for (i = 0; i < 3; i++) {
|
||||
var0->unk6 = 0;
|
||||
_DmaZero(var0->unk8, 0x200);
|
||||
playerName = gSaveFiles[i].playerName;
|
||||
for (j = 0; j < 6; j++) {
|
||||
sub_0805F7DC(playerName[j], var0);
|
||||
}
|
||||
sub_0801D66C(var0->unk8, (void*)(OBJ_VRAM0 + 0x4000 + i * 0x200), 0x200);
|
||||
}
|
||||
sub_0805F300(var0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void sub_08050790(void) {
|
||||
u32 i, j;
|
||||
struct_02036540* var0;
|
||||
u32 var1;
|
||||
|
||||
var0 = sub_0805F2C8();
|
||||
if (var0) {
|
||||
var0->unk2 = 0;
|
||||
var0->unk3 = 5;
|
||||
var0->unk1 = 1;
|
||||
var0->unk4 = 0x80;
|
||||
var0->unk8 = gUnk_02000D00;
|
||||
for (i = 0; i < 16; i++) {
|
||||
var0->unk6 = 0;
|
||||
var1 = i * 16;
|
||||
for (j = 0; j < 16; j++) {
|
||||
sub_0805F7DC(var1, var0);
|
||||
var1++;
|
||||
}
|
||||
sub_0801D66C(gUnk_02000D00, (void*)(BG_VRAM + i * 0x400), 0x400);
|
||||
}
|
||||
sub_0805F300(var0);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_080507FC(void) {
|
||||
gUnk_0200AF00.unk1A = 0x140;
|
||||
gUnk_0200AF00.unk20 = 0x24;
|
||||
}
|
||||
|
||||
void sub_08050810(void) {
|
||||
gUnk_0200AF00.unk1A = 0xD0;
|
||||
gUnk_0200AF00.unk20 = 0x24;
|
||||
}
|
||||
|
||||
void sub_08050820(void) {
|
||||
gUnk_080FC8FC[gChooseFileState.state]();
|
||||
sub_08050A64(gUnk_02019EE0.unk6);
|
||||
}
|
||||
|
||||
void sub_08050848(void) {
|
||||
sub_080503A8(0x7);
|
||||
sub_0805070C();
|
||||
gUnk_02019EE0.unk7 = 0;
|
||||
sub_08050AFC(gUnk_02019EE0.unk6);
|
||||
sub_080A7114(1);
|
||||
}
|
||||
|
||||
void sub_0805086C(void) {
|
||||
gUnk_080FC908[gChooseFileState.subState]();
|
||||
}
|
||||
|
||||
void sub_08050888(void) {
|
||||
if (!gFadeControl.active) {
|
||||
switch (gUnk_02019EE0.unk8[gUnk_02019EE0.unk7]) {
|
||||
case 0:
|
||||
sub_0805194C(gUnk_02019EE0.unk7);
|
||||
gChooseFileState.subState = 2;
|
||||
break;
|
||||
case 1:
|
||||
gChooseFileState.subState = 2;
|
||||
break;
|
||||
default:
|
||||
sub_0805194C(gUnk_02019EE0.unk7);
|
||||
sub_08050318(0, gUnk_02019EE0.unk7 + 1);
|
||||
gChooseFileState.timer = 30;
|
||||
gChooseFileState.subState = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080508E4(void) {
|
||||
if (gChooseFileState.timer == 0) {
|
||||
if (gUnk_03000FF0.newKeys & (A_BUTTON | START_BUTTON)) {
|
||||
gChooseFileState.subState = 2;
|
||||
}
|
||||
} else {
|
||||
gChooseFileState.timer--;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08050910(void) {
|
||||
sub_08050384();
|
||||
if (++gUnk_02019EE0.unk7 > 2) {
|
||||
sub_080A7114(2);
|
||||
} else {
|
||||
gChooseFileState.subState = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,571 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern void sub_08001324(Entity*);
|
||||
extern u32 sub_080044EC(Entity*, u32);
|
||||
extern u32 sub_08031E04(Entity*);
|
||||
extern void sub_08031E48(Entity*, Entity*);
|
||||
extern void sub_08032290(Entity*);
|
||||
extern u32 sub_080322A4(Entity*);
|
||||
void sub_080322E8(Entity*);
|
||||
extern void sub_08032338(Entity*);
|
||||
extern Entity* sub_08049DF4(u32);
|
||||
extern void sub_0804A9FC(Entity*, u32);
|
||||
extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*));
|
||||
extern u32 sub_0806FCB8(Entity*, u32, u32, u32);
|
||||
extern u32 GetNextFunction(Entity*);
|
||||
extern void SetChildOffset(Entity*, s32, s32, s32);
|
||||
extern u32 Random(void);
|
||||
|
||||
extern Entity* gUnk_020000B0;
|
||||
extern u8 gUnk_03003DBC;
|
||||
extern void (*const gUnk_080012C8[])(Entity*);
|
||||
extern void (*const gUnk_080CE56C[])(Entity*);
|
||||
extern void (*const gUnk_080CE584[])(Entity*);
|
||||
extern void (*const gUnk_080CE58C[])(Entity*);
|
||||
extern void (*const gUnk_080CE5C8[])(Entity*);
|
||||
extern u8 gUnk_080CE5B0[8];
|
||||
extern u8 gUnk_080CE5B8[8];
|
||||
extern union SplitHWord gUnk_080CE5C0[4];
|
||||
extern u16 gUnk_080CE5F0[5];
|
||||
extern u8 gUnk_080CE5FA[20]; // Directions
|
||||
|
||||
void AcroBandit(Entity* this) {
|
||||
s32 index;
|
||||
|
||||
index = sub_080012DC(this);
|
||||
|
||||
if (index) {
|
||||
if ((this->field_0x3a & 1) == 0)
|
||||
sub_08032338(this);
|
||||
|
||||
gUnk_080012C8[index](this);
|
||||
} else {
|
||||
gUnk_080CE56C[GetNextFunction(this)](this);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080318C4(Entity* this) {
|
||||
gUnk_080CE584[this->entityType.form](this);
|
||||
}
|
||||
|
||||
void sub_080318DC(Entity* this) {
|
||||
Entity* brother;
|
||||
|
||||
if (this->bitfield != 0x80 && this->bitfield != 0x81) {
|
||||
if (this->entityType.form == 1) {
|
||||
if (this->action < 7 && this->field_0x42) {
|
||||
brother = this->attachedEntity;
|
||||
if (brother) {
|
||||
brother->parent = this->parent;
|
||||
do {
|
||||
brother->action = 5;
|
||||
brother->spritePriority.b1 = 1;
|
||||
if (brother->hurtBlinkTime == 0)
|
||||
brother->hurtBlinkTime = -12;
|
||||
} while (brother = brother->attachedEntity, brother != NULL);
|
||||
}
|
||||
if (this->parent) {
|
||||
this->parent->attachedEntity = this->attachedEntity;
|
||||
} else {
|
||||
if (this->attachedEntity)
|
||||
this->parent = this;
|
||||
}
|
||||
|
||||
this->action = 9;
|
||||
this->spritePriority.b1 = 1;
|
||||
if (this->field_0x3e < 0x10) {
|
||||
this->spriteSettings.b.flipX = 0;
|
||||
} else {
|
||||
this->spriteSettings.b.flipX = 1;
|
||||
}
|
||||
InitializeAnimation(this, 14);
|
||||
}
|
||||
|
||||
if (this->currentHealth == 0) {
|
||||
this->field_0x3e = ((this->field_0x3e + (7 & Random())) - 4) & 0x1f;
|
||||
this->field_0x42 += this->entityType.parameter * 3;
|
||||
sub_08032338(this);
|
||||
}
|
||||
}
|
||||
|
||||
if (this->field_0x42 && this->frames.all & 0x10) {
|
||||
if (this->entityType.form == 0) {
|
||||
this->action = 8;
|
||||
} else {
|
||||
this->action = 9;
|
||||
}
|
||||
if (this->field_0x3e < 0x10) {
|
||||
this->spriteSettings.b.flipX = 0;
|
||||
} else {
|
||||
this->spriteSettings.b.flipX = 1;
|
||||
}
|
||||
this->spritePriority.b1 = 1;
|
||||
InitializeAnimation(this, 14);
|
||||
}
|
||||
}
|
||||
|
||||
if (this->field_0x43)
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
|
||||
sub_0804AA30(this, gUnk_080CE56C);
|
||||
}
|
||||
|
||||
void sub_08031A60(Entity* this) {
|
||||
if (this->hurtBlinkTime > 0)
|
||||
sub_08003FC4(this, 0x1800);
|
||||
|
||||
sub_08001324(this);
|
||||
}
|
||||
|
||||
void nullsub_154(void) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
void sub_08031A88(Entity* this) {
|
||||
gUnk_080CE58C[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08031AA0(Entity* this) {
|
||||
sub_0804A720(this);
|
||||
this->action = '\x01';
|
||||
this->field_0x74.HWORD = this->x.HALF.HI;
|
||||
this->field_0x76.HWORD = this->y.HALF.HI;
|
||||
this->field_0x78.HALF.HI = Random();
|
||||
}
|
||||
|
||||
void sub_08031AC8(Entity* this)
|
||||
|
||||
{
|
||||
u32 rand;
|
||||
s32 x, y;
|
||||
|
||||
if (this->actionDelay) {
|
||||
this->actionDelay--;
|
||||
} else {
|
||||
if (sub_08049FDC(this, 1)) {
|
||||
rand = Random();
|
||||
x = this->field_0x74.HWORD + ((s32)rand % 5) * 0x10 - 0x20;
|
||||
y = this->field_0x76.HWORD + ((s32)(rand >> 4) % 5) * 0x10 - 0x20;
|
||||
if (sub_080002D4(x, y, this->collisionLayer) == 0) {
|
||||
this->action = 2;
|
||||
this->spriteSettings.b.draw = 1;
|
||||
this->x.HALF.HI = x;
|
||||
this->y.HALF.HI = y;
|
||||
InitializeAnimation(this, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08031B48(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.b.f0) {
|
||||
this->frames.all = 0;
|
||||
this->flags |= 0x80;
|
||||
} else {
|
||||
if (this->frames.b.f3) {
|
||||
this->action = 0x3;
|
||||
this->actionDelay = gUnk_080CE5B0[Random() & 7];
|
||||
InitializeAnimation(this, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08031B98(Entity* this) {
|
||||
if (sub_08031E04(this)) {
|
||||
this->action = 5;
|
||||
if (this->x.HALF.HI > gUnk_020000B0->x.HALF.HI) {
|
||||
this->spriteSettings.b.flipX = 0;
|
||||
} else {
|
||||
this->spriteSettings.b.flipX = 1;
|
||||
}
|
||||
InitializeAnimation(this, 3);
|
||||
} else {
|
||||
if (this->frames.b.f0 && this->actionDelay) {
|
||||
// this->frames.b.f0 = 0;
|
||||
this->frames.all &= 0xfe;
|
||||
this->actionDelay--;
|
||||
}
|
||||
GetNextFrame(this);
|
||||
if (this->actionDelay == 0) {
|
||||
this->action = 4;
|
||||
this->flags &= 0x7f;
|
||||
InitializeAnimation(this, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08031C1C(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.b.f3) {
|
||||
this->action = '\x01';
|
||||
this->actionDelay = gUnk_080CE5B8[Random() & 7];
|
||||
this->spriteSettings.b.draw = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#if NON_MATCHING
|
||||
void sub_08031C58(Entity* this) {
|
||||
u8 tmp;
|
||||
Entity *a, *b;
|
||||
|
||||
GetNextFrame(this);
|
||||
if (this->frames.b.f3) {
|
||||
if (gUnk_03003DBC < 0x43) {
|
||||
tmp = Random();
|
||||
tmp &= 3;
|
||||
|
||||
a = CreateEnemy(0x2e, 1);
|
||||
a->entityType.parameter = 0;
|
||||
a->parent = NULL;
|
||||
a->field_0x74.HALF.LO = tmp;
|
||||
sub_08031E48(this, a);
|
||||
|
||||
b = CreateEnemy(0x2e, 1);
|
||||
a->attachedEntity = b;
|
||||
b->entityType.parameter = 1;
|
||||
b->parent = a;
|
||||
b->field_0x74.HALF.LO = tmp;
|
||||
sub_08031E48(this, b);
|
||||
|
||||
a = CreateEnemy(0x2e, 1);
|
||||
b->attachedEntity = a;
|
||||
a->entityType.parameter = 2;
|
||||
a->parent = b;
|
||||
a->field_0x74.HALF.LO = tmp;
|
||||
sub_08031E48(this, a);
|
||||
|
||||
b = CreateEnemy(0x2e, 1);
|
||||
a->attachedEntity = b;
|
||||
b->entityType.parameter = 3;
|
||||
b->parent = a;
|
||||
b->field_0x74.HALF.LO = tmp;
|
||||
sub_08031E48(this, b);
|
||||
|
||||
a = CreateEnemy(0x2e, 1);
|
||||
b->attachedEntity = a;
|
||||
a->entityType.parameter = 4;
|
||||
a->parent = b;
|
||||
a->attachedEntity = NULL;
|
||||
a->field_0x74.HALF.LO = tmp;
|
||||
sub_08031E48(this, a);
|
||||
|
||||
this->action = 6;
|
||||
this->actionDelay = 20;
|
||||
this->spritePriority.b0 = 7;
|
||||
InitializeAnimation(this, 7);
|
||||
}
|
||||
} else {
|
||||
if (this->frames.b.f0) {
|
||||
this->frames.all = 0;
|
||||
this->flags &= 0x7f;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_08031C58(Entity* this) {
|
||||
asm(".include \"asm/non_matching/acroBandits/sub_08031C58.inc\"");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_08031D70(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (--this->actionDelay == '\0') {
|
||||
this->action = 7;
|
||||
this->flags &= 0x7f;
|
||||
this->actionDelay = 5;
|
||||
this->spriteSettings.b.draw = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08031DA0(Entity* this) {
|
||||
if ((this->actionDelay & 0xf) == 0) {
|
||||
if (this->actionDelay == 0x50) {
|
||||
DeleteEntity(this);
|
||||
} else {
|
||||
this->action = 1;
|
||||
this->actionDelay = 0xb4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08031DC4(Entity* this) {
|
||||
if (this->frames.b.f3) {
|
||||
this->action = 1;
|
||||
this->actionDelay = 0xb4;
|
||||
this->spriteSettings.b.draw = 0;
|
||||
} else {
|
||||
GetNextFrame(this);
|
||||
if ((this->frames.all & 0xf) == 2) {
|
||||
this->flags &= 0x7f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if NON_MATCHING
|
||||
u32 sub_08031E04(Entity* this) {
|
||||
Entity* ent;
|
||||
union SplitHWord* tmp;
|
||||
int x, y;
|
||||
|
||||
ent = sub_08049DF4(1);
|
||||
if (ent == NULL)
|
||||
return 0;
|
||||
|
||||
tmp = &gUnk_080CE5C0[this->frames.all & 6];
|
||||
x = ent->x.HALF.HI + tmp->HALF.LO;
|
||||
y = ent->y.HALF.HI + tmp->HALF.HI;
|
||||
return sub_0806FCB8(this, x, y, 0x50);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
u32 sub_08031E04(Entity* this) {
|
||||
asm(".include \"asm/non_matching/acroBandits/sub_08031E04.inc\"");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_08031E48(Entity* this, Entity* child) {
|
||||
CopyPosition(this, child);
|
||||
child->field_0x6c.HALF.LO = this->field_0x6c.HALF.LO;
|
||||
child->field_0x70.HALF.LO = this->field_0x70.HALF.LO;
|
||||
child->field_0x70.HALF.HI = this->field_0x70.HALF.HI;
|
||||
child->filler4[0] = this->filler4[0];
|
||||
child->filler4[1] = this->filler4[1];
|
||||
child->field_0x7c.WORD = (s32)this;
|
||||
}
|
||||
|
||||
void sub_08031E90(Entity* this) {
|
||||
gUnk_080CE5C8[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08031EA8(Entity* this) {
|
||||
this->action = 1;
|
||||
this->spritePriority.b1 = 1;
|
||||
this->field_0x20 = 0x40000;
|
||||
this->height.HALF.HI = (4 - this->entityType.parameter) * 0xe;
|
||||
this->field_0x78.HALF.HI = Random();
|
||||
InitializeAnimation(this, 4);
|
||||
}
|
||||
|
||||
void sub_08031EE8(Entity* this) {
|
||||
int draw;
|
||||
|
||||
this->height.WORD -= this->field_0x20;
|
||||
this->field_0x20 -= 0x1800;
|
||||
|
||||
if (this->height.HALF.HI < 1) {
|
||||
draw = this->spriteSettings.b.draw;
|
||||
if (!draw)
|
||||
sub_08004488(299);
|
||||
|
||||
this->spriteSettings.b.draw = 1;
|
||||
}
|
||||
|
||||
draw = this->spriteSettings.b.draw;
|
||||
if (draw == 1)
|
||||
GetNextFrame(this);
|
||||
|
||||
if (this->field_0x20 < 1) {
|
||||
this->action = 2;
|
||||
this->flags |= 0x80;
|
||||
InitializeAnimation(this, 5);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08031F54(Entity* this) {
|
||||
sub_08003FC4(this, gUnk_080CE5F0[this->entityType.parameter]);
|
||||
if (this->entityType.parameter * -0xe <= this->height.HALF.HI) {
|
||||
this->action = 3;
|
||||
this->actionDelay = 20;
|
||||
this->height.HALF.HI = this->entityType.parameter * -0xe;
|
||||
if (this->parent != NULL)
|
||||
this->spritePriority.b1 = 0;
|
||||
InitializeAnimation(this, 6);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08031FB0(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.b.f3 && (this->parent || --this->actionDelay == 0)) {
|
||||
this->action = 4;
|
||||
this->direction = sub_08049F84(this, 1);
|
||||
*(u8*)&this->field_0x76 = 0;
|
||||
if (this->attachedEntity) {
|
||||
InitializeAnimation(this, 9);
|
||||
} else {
|
||||
InitializeAnimation(this, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08032008(Entity* this) {
|
||||
Entity* parent;
|
||||
|
||||
if (sub_080322A4(this) == 0) {
|
||||
parent = this->parent;
|
||||
if (parent == 0) {
|
||||
if (sub_08049FDC(this, 1)) {
|
||||
if ((++this->field_0x78.HALF.HI & 7) == 0) {
|
||||
sub_08004596(this, GetFacingDirection(this, gUnk_020000B0));
|
||||
}
|
||||
this->field_0x76.HALF.LO = 0;
|
||||
} else {
|
||||
if (this->field_0x76.HALF.LO) {
|
||||
(this->field_0x76.HALF.LO)--;
|
||||
sub_08004596(this, this->field_0x7a.HALF.LO);
|
||||
} else {
|
||||
this->field_0x76.HALF.LO = 0x10;
|
||||
if (sub_08049FA0(this) == 0 && (Random() & 1)) {
|
||||
this->field_0x7a.HALF.LO = sub_08049EE4(this);
|
||||
} else {
|
||||
this->field_0x7a.HALF.LO = Random() & 30;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this->direction & 0xf) {
|
||||
this->spriteSettings.b.flipX = !(!(this->direction & 0x10) ^ 1);
|
||||
}
|
||||
|
||||
sub_080AEF88(this);
|
||||
} else {
|
||||
if (this->field_0x76.HALF.HI == 0) {
|
||||
if (sub_0806FCB8(this, parent->x.HALF.HI, parent->y.HALF.HI, 1) == 0) {
|
||||
this->field_0x76.HALF.HI = 1;
|
||||
this->direction = GetFacingDirection(this, parent);
|
||||
sub_080322E8(this);
|
||||
sub_0806F69C(this);
|
||||
}
|
||||
} else {
|
||||
this->direction = GetFacingDirection(this, parent);
|
||||
sub_080322E8(this);
|
||||
sub_0806F69C(this);
|
||||
if (this->x.HALF.HI == parent->x.HALF.HI && this->y.HALF.HI == parent->y.HALF.HI)
|
||||
this->field_0x76.HALF.HI = 0;
|
||||
}
|
||||
}
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08032148(Entity* this) {
|
||||
if (sub_08003FC4(this, 0x2000))
|
||||
return;
|
||||
|
||||
sub_08032290(this);
|
||||
}
|
||||
|
||||
void sub_08032160(Entity* this) {
|
||||
Entity* tmp;
|
||||
u32 dir;
|
||||
|
||||
if (this->actionDelay == 0) {
|
||||
this->action = 7;
|
||||
dir = gUnk_080CE5FA[this->field_0x74.HALF.LO * 5 + this->entityType.parameter];
|
||||
this->direction = dir;
|
||||
if (dir >= 0x10) {
|
||||
this->spriteSettings.b.flipX = 1;
|
||||
} else {
|
||||
this->spriteSettings.b.flipX = 0;
|
||||
}
|
||||
this->nonPlanarMovement = 0xf0;
|
||||
this->field_0x20 = 0x12000;
|
||||
this->spritePriority.b1 = 1;
|
||||
InitializeAnimation(this, 12);
|
||||
}
|
||||
|
||||
if (this->attachedEntity == NULL) {
|
||||
for (tmp = this->parent; tmp != NULL; tmp = tmp->parent) {
|
||||
if (tmp->currentHealth != 0)
|
||||
tmp->actionDelay = 0;
|
||||
}
|
||||
this->actionDelay = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080321E8(Entity* this) {
|
||||
sub_080AEFE0(this);
|
||||
|
||||
if (sub_080044EC(this, 0x2000) == 0)
|
||||
this->action = 8;
|
||||
}
|
||||
|
||||
void sub_08032204(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if (this->frames.all & 1) {
|
||||
this->frames.all = 0;
|
||||
this->frameDuration = (Random() & 0x30) + 30;
|
||||
} else {
|
||||
if (this->frames.all & 0x80) {
|
||||
this->action = 9;
|
||||
InitializeAnimation(this, 13);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08032248(Entity* this) {
|
||||
if (sub_08003FC4(this, 0x1800) == 0) {
|
||||
if (this->frames.all & 0x80) {
|
||||
((Entity*)this->field_0x7c.WORD)->actionDelay--;
|
||||
|
||||
DeleteEntity(this);
|
||||
} else {
|
||||
GetNextFrame(this);
|
||||
|
||||
if ((this->frames.all & 0xf) == 2)
|
||||
this->flags &= 0x7f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08032290(Entity* this) {
|
||||
this->action = 6;
|
||||
this->actionDelay = 12;
|
||||
InitializeAnimation(this, 11);
|
||||
}
|
||||
|
||||
u32 sub_080322A4(Entity* this) {
|
||||
if (this->attachedEntity != NULL && (this->attachedEntity->height.HALF.HI + 8) >= this->height.HALF.HI) {
|
||||
if (this->height.HALF.HI) {
|
||||
this->action = 5;
|
||||
this->height.HALF.HI = this->attachedEntity->height.HALF.HI + 8;
|
||||
InitializeAnimation(this, 11);
|
||||
return 1;
|
||||
} else {
|
||||
sub_08032290(this);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if NON_MATCHING
|
||||
void sub_080322E8(Entity* this) {
|
||||
if (this->field_0x78.HALF.LO) {
|
||||
if (--this->field_0x78.HALF.LO == 0) {
|
||||
this->spriteSettings.b.flipX = this->spriteOrientation.flipX;
|
||||
}
|
||||
} else {
|
||||
if ((this->direction & 0xf) &&
|
||||
((this->direction >> 4 ^ 1) != -((int)((u32)this->spriteSettings.raw << 0x19) >> 0x1f))) {
|
||||
this->field_0x78.HALF.LO = 6;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_080322E8(Entity* this) {
|
||||
asm(".include \"asm/non_matching/acroBandits/sub_080322E8.inc\"");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_08032338(Entity *this) {
|
||||
if ((((Entity*)this->field_0x7c.WORD)->actionDelay += 15) != 80)
|
||||
this->field_0x6c.HALF.LO = 0;
|
||||
}
|
||||
@@ -22,7 +22,7 @@ void BladeTrap(Entity* ent) {
|
||||
|
||||
|
||||
|
||||
puVar3 = &(ent->field_0x74);
|
||||
puVar3 = &(ent->field_0x74.HWORD);
|
||||
uVar1 = *puVar3;
|
||||
*puVar3 = uVar1 - 1;
|
||||
if ((*puVar3) == 0) {
|
||||
|
||||
+6
-6
@@ -104,7 +104,7 @@ void sub_080324FC(Entity* this) {
|
||||
if (this->field_0xf == 0) {
|
||||
this->action = 4;
|
||||
this->nonPlanarMovement = 0x1E0;
|
||||
this->field_0x76 = 0x46;
|
||||
this->field_0x76.HWORD = 0x46;
|
||||
this->field_0x78.HWORD = 0;
|
||||
*(((u8*)&this->field_0x7a) + 1) = 0;
|
||||
sub_080327C8(this);
|
||||
@@ -121,13 +121,13 @@ void sub_08032574(Entity* this) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (--this->field_0x76 == 0 || !sub_080AEFE0(this)) {
|
||||
if (--this->field_0x76.HWORD == 0 || !sub_080AEFE0(this)) {
|
||||
sub_0803275C(this);
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if ((this->field_0x76 & 0x7) == 0) {
|
||||
if ((this->field_0x76.HWORD & 0x7) == 0) {
|
||||
sub_08032794(this);
|
||||
}
|
||||
}
|
||||
@@ -184,12 +184,12 @@ void sub_0803269C(Entity* this, u32 param_2) {
|
||||
}
|
||||
|
||||
void sub_080326FC(Entity* this) {
|
||||
this->field_0x74 = gUnk_080CE7F0[Random() & 0xF];
|
||||
this->field_0x74.HWORD = gUnk_080CE7F0[Random() & 0xF];
|
||||
}
|
||||
|
||||
u32 sub_0803271C(Entity* this) {
|
||||
this->field_0x74--;
|
||||
if (this->field_0x74 == 0) {
|
||||
this->field_0x74.HWORD--;
|
||||
if (this->field_0x74.HWORD == 0) {
|
||||
sub_08032784(this);
|
||||
return 1;
|
||||
}
|
||||
|
||||
+4
-4
@@ -85,8 +85,8 @@ void sub_08021E4C(Entity *this)
|
||||
if (this->field_0x78.HWORD != 0) {
|
||||
this->field_0x78.HWORD--;
|
||||
}
|
||||
if (this->field_0x7a != 0) {
|
||||
(this->field_0x7a)--;
|
||||
if (this->field_0x7a.HWORD != 0) {
|
||||
(this->field_0x7a.HWORD)--;
|
||||
}
|
||||
GetNextFrame(this);
|
||||
if ((this->frames.b.f3) != 0) {
|
||||
@@ -126,7 +126,7 @@ void sub_08021EF0(Entity *this)
|
||||
|
||||
this->action = 1;
|
||||
this->field_0x78.HWORD = gUnk_080CB6D6[Random() & 0xf];
|
||||
this->field_0x7a = 0x3c;
|
||||
this->field_0x7a.HWORD = 0x3c;
|
||||
InitializeAnimation(this, 0);
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ void sub_08021F24(Entity *this)
|
||||
this->actionDelay = gUnk_080CB6F6[Random() & 0xf];
|
||||
InitializeAnimation(this, 1);
|
||||
}
|
||||
else if (!this->field_0x7a && !(sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70))) {
|
||||
else if (!this->field_0x7a.HWORD && !(sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70))) {
|
||||
this->action = 3;
|
||||
this->actionDelay = 0x1e;
|
||||
InitializeAnimation(this, 1);
|
||||
|
||||
+4
-4
@@ -161,8 +161,8 @@ void sub_0803C87C(Entity *this) {
|
||||
|
||||
this->spriteOffsetY = 0xff;
|
||||
|
||||
this->field_0x74 = this->x.HALF.HI;
|
||||
this->field_0x76 = this->y.HALF.HI;
|
||||
this->field_0x74.HWORD = this->x.HALF.HI;
|
||||
this->field_0x76.HWORD = this->y.HALF.HI;
|
||||
}
|
||||
|
||||
void sub_0803C8BC(Entity *this) {
|
||||
@@ -294,8 +294,8 @@ void sub_0803CA84(Entity *this, u32 unkParameter) {
|
||||
}
|
||||
|
||||
void sub_0803CAD0(Entity *this) {
|
||||
if (sub_0806FCB8(this, this->field_0x74, this->field_0x76, 1) == 0) {
|
||||
this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, this->field_0x74, this->field_0x76);
|
||||
if (sub_0806FCB8(this, this->field_0x74.HWORD, this->field_0x76.HWORD, 1) == 0) {
|
||||
this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, this->field_0x74.HWORD, this->field_0x76.HWORD);
|
||||
|
||||
sub_080AEFE0(this);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ void sub_0803CD6C(Entity *this) {
|
||||
this->parent = lakitu;
|
||||
|
||||
this->field_0x78.HWORD = this->x.HALF.HI;
|
||||
this->field_0x7a = this->y.HALF.HI;
|
||||
this->field_0x7a.HWORD = this->y.HALF.HI;
|
||||
|
||||
InitAnimationForceUpdate(this, 4);
|
||||
|
||||
@@ -92,7 +92,7 @@ void sub_0803CDA8(Entity *this) {
|
||||
sub_0806F69C(this);
|
||||
}
|
||||
|
||||
if (--this->field_0x74 << 0x10 == 0) {
|
||||
if (--this->field_0x74.HWORD << 0x10 == 0) {
|
||||
sub_0803CE14(this);
|
||||
}
|
||||
}
|
||||
@@ -119,7 +119,7 @@ void sub_0803CDD8(Entity *this) {
|
||||
void sub_0803CE14(Entity *this) {
|
||||
u8 direction;
|
||||
|
||||
sub_080A2CC0(this, &this->attachedEntity, &this->field_0x74);
|
||||
sub_080A2CC0(this, &this->attachedEntity, &this->field_0x74.HWORD);
|
||||
|
||||
direction = this->direction;
|
||||
if (direction & 0x80) {
|
||||
@@ -142,7 +142,7 @@ void sub_0803CE3C(Entity *this) {
|
||||
this->field_0x3a &= 0xfb;
|
||||
|
||||
this->x.HALF.HI = this->field_0x78.HWORD;
|
||||
this->y.HALF.HI = this->field_0x7a;
|
||||
this->y.HALF.HI = this->field_0x7a.HWORD;
|
||||
|
||||
this->attachedEntity = this->parent;
|
||||
|
||||
|
||||
+5
-5
@@ -34,7 +34,7 @@ void sub_0801FC28(Entity* this) {
|
||||
void sub_0801FC40(Entity* this) {
|
||||
if (this->bitfield == 0x80) {
|
||||
if (this->action == 3) {
|
||||
this->field_0x74 = 1;
|
||||
this->field_0x74.HWORD = 1;
|
||||
}
|
||||
} else {
|
||||
if (this->field_0x43 != 0) {
|
||||
@@ -79,9 +79,9 @@ void sub_0801FD2C(Entity* this) {
|
||||
if (this->frames.b.f3 != 0) {
|
||||
this->action = 3;
|
||||
if (this->entityType.form == 0) {
|
||||
this->field_0x74 = 0xb4;
|
||||
this->field_0x74.HWORD = 0xb4;
|
||||
} else {
|
||||
this->field_0x74 = 0x6e;
|
||||
this->field_0x74.HWORD = 0x6e;
|
||||
}
|
||||
InitializeAnimation(this, 2);
|
||||
} else if (this->frames.b.f0 != 0) {
|
||||
@@ -95,7 +95,7 @@ void sub_0801FD80(Entity* this) {
|
||||
sub_0801FED4(this);
|
||||
GetNextFrame(this);
|
||||
|
||||
if (--this->field_0x74 == 0) {
|
||||
if (--this->field_0x74.HWORD == 0) {
|
||||
this->action = 4;
|
||||
this->flags &= 0x7f;
|
||||
InitializeAnimation(this, 1);
|
||||
@@ -161,7 +161,7 @@ void sub_0801FED4(Entity* this) {
|
||||
s16 sVar2;
|
||||
|
||||
if (sub_08049FDC(this, 1) == 0) {
|
||||
this->field_0x74 = 1;
|
||||
this->field_0x74.HWORD = 1;
|
||||
}
|
||||
sVar2 = (this->frames.all & 0xf) * 0x20;
|
||||
this->nonPlanarMovement = sVar2;
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
#include "global.h"
|
||||
#include "player.h"
|
||||
#include "room.h"
|
||||
#include "manager.h"
|
||||
#include "structures.h"
|
||||
|
||||
extern void (*gUnk_08107C70[])(Manager*);
|
||||
|
||||
void sub_08057854(Manager* this) {
|
||||
gUnk_08107C70[this->unk_0c](this);
|
||||
}
|
||||
|
||||
extern void sub_080805F8(void);
|
||||
|
||||
extern void SetTile(u32, u32, u32);
|
||||
|
||||
extern DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance*, int);
|
||||
|
||||
void sub_0805786C(Manager* this) {
|
||||
DiggingCaveEntrance* tmp;
|
||||
u8 roomID;
|
||||
u8 areaID;
|
||||
u16 uVar = 0x81<<7;
|
||||
sub_080805F8();
|
||||
if (gUnk_03004030.unk_08 != 0) {
|
||||
if (gUnk_03004030.unk_00 == 0) {
|
||||
gUnk_03004030.unk_0a = 0xFF;
|
||||
roomID = gRoomControls.roomID;
|
||||
tmp = gUnk_08107DC0[gRoomControls.areaID];
|
||||
tmp = sub_08057AA8(tmp, roomID);
|
||||
if (tmp != 0) {
|
||||
roomID = tmp->target_roomID;
|
||||
tmp = gUnk_08107DC0[tmp->target_areaID];
|
||||
tmp = sub_08057AA8(tmp, roomID);
|
||||
if (tmp != 0) {
|
||||
gUnk_03004030.unk_00 = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
roomID = gRoomControls.roomID;
|
||||
tmp = gUnk_08107DC0[gRoomControls.areaID];
|
||||
uVar = 0x81<<7;
|
||||
for (tmp = sub_08057AA8(tmp, roomID); tmp != 0; tmp = sub_08057AA8(tmp, roomID)){
|
||||
SetTile(uVar, tmp->unk_00 + 0x3F, 1);
|
||||
SetTile(uVar, tmp->unk_00 + 0x40, 1);
|
||||
SetTile(uVar, tmp->unk_00 + 0x41, 1);
|
||||
tmp++;
|
||||
}
|
||||
}
|
||||
this->unk_0c = 1;
|
||||
}
|
||||
|
||||
extern u32 sub_0805795C(Manager*, DiggingCaveEntrance*);
|
||||
|
||||
void sub_08057920(Manager* this) {
|
||||
DiggingCaveEntrance* tmp;
|
||||
u8 roomID;
|
||||
roomID = gRoomControls.roomID;
|
||||
for (tmp = gUnk_08107DC0[gRoomControls.areaID];(tmp = sub_08057AA8(tmp, roomID)) != 0 && !sub_0805795C(this, tmp);tmp++);
|
||||
}
|
||||
|
||||
void sub_08057A18(Manager*, DiggingCaveEntrance*);
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) {
|
||||
u16 offsetX, offsetY, offsetX2, offsetY2;
|
||||
u32 tmp;
|
||||
if (gUnk_03004030.unk_08) {
|
||||
offsetX = gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX;
|
||||
offsetY = gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY;
|
||||
offsetX2 = (entr->unk_00 & 0x3F) * 16 + 8;
|
||||
offsetY2 = ((entr->unk_00 & 0xFC0)>> 6) * 16 + 0x18;
|
||||
if ((u32)(offsetX - offsetX2) + 0x18 > 0x30) return 0;
|
||||
if (
|
||||
(u32)(offsetY - offsetY2) + 8 > 0x10) return 0;
|
||||
if (
|
||||
((offsetY < offsetY2)))
|
||||
if (
|
||||
(u32)(offsetX - offsetX2) + 0xC <= 0x18) return 0;
|
||||
|
||||
} else {
|
||||
//offsetX = ((gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3F;
|
||||
//offsetY = ((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3F;
|
||||
//tmp = offsetX | (offsetY << 6);
|
||||
tmp = COORD_TO_TILE((&gPlayerEntity));
|
||||
if (tmp != entr->unk_00) return 0;
|
||||
offsetY = gRoomControls.roomOriginY + ((tmp>>6) * 16) + 6;
|
||||
if (gPlayerEntity.y.HALF.HI >= offsetY) return 0;
|
||||
}
|
||||
sub_08057A18(this, entr);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) {
|
||||
asm(".include \"asm/non_matching/manager4/sub_0805795C.inc\"");
|
||||
}
|
||||
#endif
|
||||
|
||||
extern void sub_0805E5A8(void);
|
||||
extern void sub_0805E900(Manager*);
|
||||
extern void sub_08080930();
|
||||
|
||||
void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) {
|
||||
u16 tmp;
|
||||
sub_0805E5A8();
|
||||
gUnk_03004030.unk_0a = gUnk_03004030.unk_09;
|
||||
gUnk_03004030.unk_09 = gRoomControls.areaID;
|
||||
gScreenTransition.areaID = entr->target_areaID;
|
||||
gScreenTransition.roomID = entr->target_roomID;
|
||||
gRoomControls.areaID = entr->target_areaID;
|
||||
gRoomControls.roomID = entr->target_roomID;
|
||||
gUnk_03004030.unk_00 = entr;
|
||||
gUnk_03004030.unk_04 = gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX - ((entr->unk_00 & 0x3F)*16);
|
||||
gUnk_03004030.unk_06 = gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY - ((entr->unk_00 & 0xFC0) >> 2);
|
||||
tmp = gUnk_03004030.unk_08;
|
||||
if (!tmp) {
|
||||
if ((entr->target_roomID | 0x80) != gUnk_03004030.unk_0b) {
|
||||
gUnk_02034480.unk_00 = gUnk_03004030.unk_08;
|
||||
}
|
||||
gUnk_03004030.unk_0b = entr->target_roomID | 0x80;
|
||||
}
|
||||
sub_08080930(entr->unk_03);
|
||||
sub_0805E900(this);
|
||||
}
|
||||
|
||||
DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance* entr, int roomID){
|
||||
for (;entr->unk_00 != 0xFFFF;entr++) {
|
||||
if (entr->source_roomID == roomID) return entr;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -21,10 +21,10 @@ void sub_08058398(Manager* this) {
|
||||
if (CheckFlags(this->unk_3c) != 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
this->unk_24 = this->unk_3a<<3;
|
||||
this->unk_26 = this->unk_3b<<3;
|
||||
this->unk_20 = this->unk_24 + (this->unk_38<<4);
|
||||
this->unk_22 = this->unk_26 + (this->unk_39<<4);
|
||||
this->unk_24 = this->unk_3a.HALF.LO<<3;
|
||||
this->unk_26 = this->unk_3a.HALF.HI<<3;
|
||||
this->unk_20 = this->unk_24 + (this->unk_38.HALF.LO<<4);
|
||||
this->unk_22 = this->unk_26 + (this->unk_38.HALF.HI<<4);
|
||||
sub_0805E3A0(this, 0x06);
|
||||
if (this->unk_3e == 0) {
|
||||
this->unk_0c = 2;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "manager.h"
|
||||
#include "flags.h"
|
||||
#include "room.h"
|
||||
|
||||
extern Entity* GetCurrentRoomProperty(u8);
|
||||
extern void LoadRoomEntityList(Entity*);
|
||||
extern void DeleteThisEntity(void);
|
||||
extern void sub_0805E900(Manager*);
|
||||
extern void sub_08078A90(u32);
|
||||
extern void sub_08078B48(void);
|
||||
extern void PlaySFX(u32);
|
||||
|
||||
void sub_08058E60(Manager* this) {
|
||||
if (!this->unk_0c) {
|
||||
this->unk_0c = 1;
|
||||
if (CheckFlags(this->unk_3e)) {
|
||||
sub_0805E900(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!CheckFlags(this->unk_3e))
|
||||
return;
|
||||
if (this->unk_0b != 0) {
|
||||
this->unk_0b = 0;
|
||||
sub_08078A90(0xff);
|
||||
sub_08078B48();
|
||||
}
|
||||
if (this->unk_3a.SHWORD == 0){
|
||||
if (this->unk_38.SHWORD != 0) {
|
||||
PlaySFX(this->unk_38.SHWORD);
|
||||
}
|
||||
LoadRoomEntityList(GetCurrentRoomProperty(this->unk_0a));
|
||||
DeleteThisEntity();
|
||||
} else {
|
||||
this->unk_3a.SHWORD -= 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "player.h"
|
||||
#include "room.h"
|
||||
#include "flags.h"
|
||||
#include "sprite.h"
|
||||
#include "textbox.h"
|
||||
#include "npc.h"
|
||||
#include "structures.h"
|
||||
|
||||
extern void sub_0807DD50(Entity *);
|
||||
extern void sub_0807DD94(Entity *,u32);
|
||||
extern void sub_08004488(u32);
|
||||
extern void sub_08080964(u32,u32);
|
||||
|
||||
|
||||
void Carlov(Entity *this)
|
||||
{
|
||||
if (this->action == 0) {
|
||||
this->action++;
|
||||
sub_0807DD50(this);
|
||||
}
|
||||
else {
|
||||
sub_0807DD94(this,0);
|
||||
}
|
||||
if ((this->frames.all & 0x10) != 0) {
|
||||
this->frames.all = this->frames.all & 0xef;
|
||||
sub_08004488(0x104);
|
||||
sub_08080964(0x10,0);
|
||||
}
|
||||
if ((this->frames.all & 0x20) != 0) {
|
||||
this->frames.all = this->frames.all & 0xdf;
|
||||
sub_08004488(0x7c);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -90,7 +90,7 @@ void sub_08066D94(Entity* ent) {
|
||||
npc->flags |= 0x20;
|
||||
npc->animationState = GetAnimationState(ent);
|
||||
roomID = gRoomControls.roomID;
|
||||
npc->field_0x74 = roomID;
|
||||
npc->field_0x74.HWORD = roomID;
|
||||
CopyPosition(ent, npc);
|
||||
}
|
||||
DeleteThisEntity();
|
||||
|
||||
+4
-4
@@ -31,7 +31,7 @@ void sub_0809ED54(Entity *this)
|
||||
|
||||
if (((this->cutsceneBeh.HWORD == 0) || CheckFlags(this->cutsceneBeh.HWORD)) &&
|
||||
((this->entityType.parameter != 1 ||
|
||||
(--this->field_0x74 == 0)))) {
|
||||
(--this->field_0x74.HWORD == 0)))) {
|
||||
sub_0809EE08(this);
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,7 @@ void sub_0809ED88(Entity *this)
|
||||
sub_0809EE24(this);
|
||||
}
|
||||
else if (((this->entityType).parameter == 1) &&
|
||||
(--this->field_0x74 == 0)) {
|
||||
(--this->field_0x74.HWORD == 0)) {
|
||||
sub_0809EE24(this);
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ void sub_0809EDE4(Entity *this)
|
||||
void sub_0809EE08(Entity *this)
|
||||
{
|
||||
this->action = 2;
|
||||
this->field_0x74 = *((u8 *)&this->field_0x7c + 3) << 2;
|
||||
this->field_0x74.HWORD = *((u8 *)&this->field_0x7c + 3) << 2;
|
||||
InitializeAnimation(this, this->entityType.form);
|
||||
}
|
||||
|
||||
@@ -82,5 +82,5 @@ void sub_0809EE24(Entity *this)
|
||||
void sub_0809EE34(Entity *this)
|
||||
{
|
||||
this->action = 1;
|
||||
this->field_0x74 = this->actionDelay << 2;
|
||||
this->field_0x74.HWORD = this->actionDelay << 2;
|
||||
}
|
||||
@@ -73,7 +73,7 @@ void sub_0809EAD8(Entity* this) {
|
||||
if (this->entityType.parameter != 0) {
|
||||
|
||||
this->attachedEntity = GetCurrentRoomProperty(this->entityType.parameter);
|
||||
sub_080A2CC0(this, &this->attachedEntity, &this->field_0x74);
|
||||
sub_080A2CC0(this, &this->attachedEntity, &this->field_0x74.HWORD);
|
||||
|
||||
} else {
|
||||
SetTile(0x4050, COORD_TO_TILE(this), this->collisionLayer);
|
||||
@@ -88,7 +88,7 @@ void sub_0809EB30(Entity* this) {
|
||||
if ((this->direction & 0x80) == 0) {
|
||||
sub_0806F69C(this);
|
||||
}
|
||||
puVar2 = &this->field_0x74;
|
||||
puVar2 = &this->field_0x74.HWORD;
|
||||
if (!--*puVar2) {
|
||||
sub_080A2CC0(this, &this->attachedEntity, puVar2);
|
||||
}
|
||||
|
||||
+2
-2
@@ -68,7 +68,7 @@ void sub_080929A4(Entity *this) {
|
||||
this->field_0x7c.HALF.HI = COORD_TO_TILE(this);
|
||||
this->field_0x7c.HALF.LO = sub_080001DA(this->field_0x7c.HALF.HI, 1);
|
||||
|
||||
this->field_0x7a = sub_080002E0(this->field_0x7c.HALF.HI, 1);
|
||||
this->field_0x7a.HWORD = sub_080002E0(this->field_0x7c.HALF.HI, 1);
|
||||
|
||||
SetTile(0x4022, this->field_0x7c.HALF.HI, 1);
|
||||
}
|
||||
@@ -96,7 +96,7 @@ void sub_08092A94(Entity *this) {
|
||||
// Presumably, make the mask fall
|
||||
SetTile((u16)this->field_0x7c.HALF.LO, this->field_0x7c.HALF.HI, 1);
|
||||
|
||||
sub_08000148(this->field_0x7a, this->field_0x7c.HALF.HI, 1);
|
||||
sub_08000148(this->field_0x7a.HWORD, this->field_0x7c.HALF.HI, 1);
|
||||
|
||||
this->action = 2;
|
||||
|
||||
|
||||
+10
-10
@@ -34,7 +34,7 @@ void sub_080A0684(Entity *this)
|
||||
this->spritePriority.b0 = 5;
|
||||
this->field_0x70.HALF.LO = this->x.HALF.HI;
|
||||
this->field_0x70.HALF.HI = this->y.HALF.HI;
|
||||
this->field_0x74 = COORD_TO_TILE(this);
|
||||
this->field_0x74.HWORD = COORD_TO_TILE(this);
|
||||
}
|
||||
|
||||
void sub_080A0718(Entity *this)
|
||||
@@ -99,17 +99,17 @@ void sub_080A07F0(Entity *this)
|
||||
|
||||
void sub_080A080C(Entity *this)
|
||||
{
|
||||
this->field_0x76 = sub_080001DA(this->field_0x74 - 1, this->collisionLayer);
|
||||
this->field_0x78.HWORD = sub_080001DA(this->field_0x74, this->collisionLayer);
|
||||
this->field_0x7a = sub_080001DA(this->field_0x74 + 1, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74 - 1, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74 + 1, this->collisionLayer);
|
||||
this->field_0x76.HWORD = sub_080001DA(this->field_0x74.HWORD - 1, this->collisionLayer);
|
||||
this->field_0x78.HWORD = sub_080001DA(this->field_0x74.HWORD, this->collisionLayer);
|
||||
this->field_0x7a.HWORD = sub_080001DA(this->field_0x74.HWORD + 1, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74.HWORD - 1, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74.HWORD, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74.HWORD + 1, this->collisionLayer);
|
||||
}
|
||||
|
||||
void sub_080A0870(Entity *this)
|
||||
{
|
||||
SetTile(this->field_0x76, this->field_0x74 - 1, this->collisionLayer);
|
||||
SetTile(this->field_0x78.HWORD, this->field_0x74, this->collisionLayer);
|
||||
SetTile(this->field_0x7a, this->field_0x74 + 1, this->collisionLayer);
|
||||
SetTile(this->field_0x76.HWORD, this->field_0x74.HWORD - 1, this->collisionLayer);
|
||||
SetTile(this->field_0x78.HWORD, this->field_0x74.HWORD, this->collisionLayer);
|
||||
SetTile(this->field_0x7a.HWORD, this->field_0x74.HWORD + 1, this->collisionLayer);
|
||||
}
|
||||
@@ -33,7 +33,7 @@ void sub_080851AC(Entity* this) {
|
||||
this->animationState = this->entityType.parameter & 2;
|
||||
if ((this->entityType).form == 3) {
|
||||
uVar1 = CheckFlags(this->field_0x86);
|
||||
this->field_0x7a = uVar1;
|
||||
this->field_0x7a.HWORD = uVar1;
|
||||
if ((u16)(uVar1 & -1) != 0) {
|
||||
this->animationState = (this->animationState + 2) & 3;
|
||||
this->action = 3;
|
||||
@@ -62,7 +62,7 @@ void sub_080852B4(Entity* this) {
|
||||
if (--this->field_0xf == 0) {
|
||||
this->action = 3;
|
||||
this->field_0xf = this->actionDelay;
|
||||
this->field_0x7a = CheckFlags(this->field_0x86);
|
||||
this->field_0x7a.HWORD = CheckFlags(this->field_0x86);
|
||||
this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3;
|
||||
InitializeAnimation(this, this->animationState);
|
||||
sub_08085394(this);
|
||||
@@ -114,7 +114,7 @@ void sub_08085394(Entity *this)
|
||||
iVar3 = this->animationState / 2;
|
||||
layerData = *(u16 **)&this->field_0x70;
|
||||
uVar4 = COORD_TO_TILE(this);
|
||||
this->field_0x74 = layerData[gUnk_080B4488[iVar3]];
|
||||
this->field_0x74.HWORD = layerData[gUnk_080B4488[iVar3]];
|
||||
pbVar5 = &this->collisionLayer;
|
||||
SetTile(uVar1, uVar4 - iVar3, *pbVar5);
|
||||
this->field_0x76 = layerData[0];
|
||||
@@ -137,8 +137,8 @@ void sub_0808543C(Entity *this)
|
||||
|
||||
temp = gUnk_080B4488[this->animationState / 2][0];
|
||||
uVar2 = COORD_TO_TILE(this);
|
||||
SetTile(this->field_0x74, uVar2 - temp, this->collisionLayer);
|
||||
SetTile(this->field_0x76, uVar2, this->collisionLayer);
|
||||
SetTile(this->field_0x74.HWORD, uVar2 - temp, this->collisionLayer);
|
||||
SetTile(this->field_0x76.HWORD, uVar2, this->collisionLayer);
|
||||
SetTile(this->field_0x78.HWORD, uVar2 + temp, this->collisionLayer);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user