rupeeLike.c OK

This commit is contained in:
theo3 2020-07-23 22:48:16 -07:00
parent f4320b6fcd
commit 2d286c0b34
37 changed files with 477 additions and 1022 deletions

View File

@ -237,7 +237,7 @@ sub_08030338: @ 0x08030338
_0803034C: _0803034C:
adds r0, r4, #0 adds r0, r4, #0
movs r1, #3 movs r1, #3
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r0, r4, #0 adds r0, r4, #0
adds r0, #0x84 adds r0, #0x84
ldr r0, [r0] ldr r0, [r0]

View File

@ -68,7 +68,7 @@ _08001230:
beq _0800123E beq _0800123E
strb r1, [r0, #0xe] strb r1, [r0, #0xe]
movs r1, #4 movs r1, #4
ldr r3, _0800135C @ =InitializeAnimationAnimation ldr r3, _0800135C @ =UpdateAnimationVariableFrames
bx r3 bx r3
_0800123E: _0800123E:
ldr r3, _08001360 @ =sub_080043B4 ldr r3, _08001360 @ =sub_080043B4
@ -238,7 +238,7 @@ _08001352:
bx lr bx lr
.align 2, 0 .align 2, 0
_08001358: .4byte gEnemyFunctions _08001358: .4byte gEnemyFunctions
_0800135C: .4byte InitializeAnimationAnimation _0800135C: .4byte UpdateAnimationVariableFrames
_08001360: .4byte sub_080043B4 _08001360: .4byte sub_080043B4
_08001364: .4byte 0x00001800 _08001364: .4byte 0x00001800
_08001368: .4byte gUnk_080012C8 _08001368: .4byte gUnk_080012C8

View File

@ -431,8 +431,8 @@ InitializeAnimation: @ 0x08004260
GetNextFrame: @ 0x08004274 GetNextFrame: @ 0x08004274
movs r1, #1 movs r1, #1
non_word_aligned_thumb_func_start InitializeAnimationAnimation non_word_aligned_thumb_func_start UpdateAnimationVariableFrames
InitializeAnimationAnimation: @ 0x08004276 UpdateAnimationVariableFrames: @ 0x08004276
movs r3, #0x59 movs r3, #0x59
ldrb r2, [r0, r3] ldrb r2, [r0, r3]
subs r2, r2, r1 subs r2, r2, r1
@ -478,7 +478,7 @@ UpdateAnimationSingleFrame: @ 0x080042B8
non_word_aligned_thumb_func_start sub_080042BA non_word_aligned_thumb_func_start sub_080042BA
sub_080042BA: @ 0x080042BA sub_080042BA: @ 0x080042BA
push {lr} push {lr}
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
_080042C0: _080042C0:
pop {r1} pop {r1}
mov lr, r1 mov lr, r1

View File

@ -97,8 +97,8 @@ InitializeAnimation: @ 0x08004260
GetNextFrame: @ 0x08004274 GetNextFrame: @ 0x08004274
movs r1, #1 movs r1, #1
non_word_aligned_thumb_func_start InitializeAnimationAnimation non_word_aligned_thumb_func_start UpdateAnimationVariableFrames
InitializeAnimationAnimation: @ 0x08004276 UpdateAnimationVariableFrames: @ 0x08004276
movs r3, #0x59 movs r3, #0x59
ldrb r2, [r0, r3] ldrb r2, [r0, r3]
subs r2, r2, r1 subs r2, r2, r1
@ -144,7 +144,7 @@ UpdateAnimationSingleFrame: @ 0x080042B8
non_word_aligned_thumb_func_start sub_080042BA non_word_aligned_thumb_func_start sub_080042BA
sub_080042BA: @ 0x080042BA sub_080042BA: @ 0x080042BA
push {lr} push {lr}
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
_080042C0: _080042C0:
pop {r1} pop {r1}
mov lr, r1 mov lr, r1

View File

@ -671,7 +671,7 @@ SetSpriteSubEntryOffsetData1: @ 0x0806FF88
adds r4, r4, r2 adds r4, r4, r2
ldrh r0, [r5, #2] ldrh r0, [r5, #2]
ldrb r1, [r5, #1] ldrb r1, [r5, #1]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r5, #6] ldrb r1, [r5, #6]
ldrb r2, [r0] ldrb r2, [r0]
adds r1, r1, r2 adds r1, r1, r2
@ -715,7 +715,7 @@ SetSpriteSubEntryOffsetData2: @ 0x0806FFD8
adds r4, r4, r2 adds r4, r4, r2
ldrh r0, [r5, #2] ldrh r0, [r5, #2]
ldrb r1, [r5, #1] ldrb r1, [r5, #1]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r5, #6] ldrb r1, [r5, #6]
ldrb r2, [r0, #2] ldrb r2, [r0, #2]
adds r1, r1, r2 adds r1, r1, r2
@ -826,8 +826,8 @@ _080700C4:
_080700C6: _080700C6:
pop {pc} pop {pc}
thumb_func_start sub_080700C8 thumb_func_start GetSpriteSubEntryOffsetDataPointer
sub_080700C8: @ 0x080700C8 GetSpriteSubEntryOffsetDataPointer: @ 0x080700C8
lsls r0, r0, #1 lsls r0, r0, #1
ldr r2, _080700E4 @ =gUnk_089FB780 ldr r2, _080700E4 @ =gUnk_089FB780
adds r0, r0, r2 adds r0, r0, r2

View File

@ -1131,7 +1131,7 @@ sub_08070F50: @ 0x08070F50
bl PositionEntityOnTop bl PositionEntityOnTop
ldrh r0, [r4, #0x12] ldrh r0, [r4, #0x12]
ldrb r1, [r4, #0x1e] ldrb r1, [r4, #0x1e]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r0] ldrb r1, [r0]
adds r2, r5, #0 adds r2, r5, #0
adds r2, #0x62 adds r2, #0x62

View File

@ -9785,7 +9785,7 @@ _080AA052:
_080AA05E: _080AA05E:
ldrh r0, [r5, #0x12] ldrh r0, [r5, #0x12]
ldrb r1, [r5, #0x1e] ldrb r1, [r5, #0x1e]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
adds r3, r0, #0 adds r3, r0, #0
ldrb r1, [r5, #0x14] ldrb r1, [r5, #0x14]
movs r0, #4 movs r0, #4
@ -9989,7 +9989,7 @@ _080AA1EC:
bne _080AA26C bne _080AA26C
ldrh r0, [r4, #0x12] ldrh r0, [r4, #0x12]
ldrb r1, [r4, #0x1e] ldrb r1, [r4, #0x1e]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
adds r3, r0, #0 adds r3, r0, #0
ldrb r1, [r4, #0x14] ldrb r1, [r4, #0x14]
movs r0, #4 movs r0, #4

View File

@ -391,7 +391,7 @@ _08048C6C:
bl InitializeAnimation bl InitializeAnimation
adds r0, r4, #0 adds r0, r4, #0
movs r1, #7 movs r1, #7
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r1, r6, #0 adds r1, r6, #0
ldrb r4, [r4, #0xa] ldrb r4, [r4, #0xa]
lsls r1, r4 lsls r1, r4
@ -419,7 +419,7 @@ _08048CBC:
movs r1, #0x1c movs r1, #0x1c
ands r1, r0 ands r1, r0
adds r0, r4, #0 adds r0, r4, #0
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
_08048CE4: _08048CE4:
adds r0, r4, #0 adds r0, r4, #0
bl GetNextFrame bl GetNextFrame

View File

@ -238,7 +238,7 @@ sub_0802BD10: @ 0x0802BD10
ands r1, r2 ands r1, r2
strb r1, [r0, #0x10] strb r1, [r0, #0x10]
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
pop {pc} pop {pc}
.align 2, 0 .align 2, 0
@ -380,7 +380,7 @@ sub_0802BE18: @ 0x0802BE18
push {r4, lr} push {r4, lr}
adds r4, r0, #0 adds r4, r0, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
ldrb r0, [r4, #0xe] ldrb r0, [r4, #0xe]
subs r0, #1 subs r0, #1
strb r0, [r4, #0xe] strb r0, [r4, #0xe]

View File

@ -412,7 +412,7 @@ sub_0802805C: @ 0x0802805C
push {r4, r5, lr} push {r4, r5, lr}
adds r5, r0, #0 adds r5, r0, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
bl sub_0807953C bl sub_0807953C
cmp r0, #0 cmp r0, #0
beq _0802807E beq _0802807E
@ -454,7 +454,7 @@ _0802809C:
bl PositionRelative bl PositionRelative
ldrh r0, [r5, #0x12] ldrh r0, [r5, #0x12]
ldrb r1, [r5, #0x1e] ldrb r1, [r5, #0x1e]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r0] ldrb r1, [r0]
adds r2, r4, #0 adds r2, r4, #0
adds r2, #0x62 adds r2, #0x62

View File

@ -23,7 +23,7 @@ Object29: @ 0x08089848
ands r1, r0 ands r1, r0
adds r1, #1 adds r1, #1
adds r0, r4, #0 adds r0, r4, #0
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
pop {r4, pc} pop {r4, pc}
.align 2, 0 .align 2, 0
_08089870: .4byte gUnk_08120D90 _08089870: .4byte gUnk_08120D90

View File

@ -2269,7 +2269,7 @@ _08095BAC:
strb r0, [r5, #0x18] strb r0, [r5, #0x18]
ldrh r0, [r2, #0x12] ldrh r0, [r2, #0x12]
ldrb r1, [r2, #0x1e] ldrb r1, [r2, #0x1e]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r0] ldrb r1, [r0]
adds r2, r5, #0 adds r2, r5, #0
adds r2, #0x62 adds r2, #0x62

View File

@ -256,7 +256,7 @@ _080A273C:
bl PositionEntityOnTop bl PositionEntityOnTop
ldrh r0, [r4, #0x12] ldrh r0, [r4, #0x12]
ldrb r1, [r4, #0x1e] ldrb r1, [r4, #0x1e]
bl sub_080700C8 bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r0] ldrb r1, [r0]
adds r2, r5, #0 adds r2, r5, #0
adds r2, #0x62 adds r2, #0x62

View File

@ -133,7 +133,7 @@ _08037D1C:
_08037D26: _08037D26:
adds r0, r4, #0 adds r0, r4, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r0, r4, #0 adds r0, r4, #0
bl sub_080AEF88 bl sub_080AEF88
cmp r0, #0 cmp r0, #0
@ -158,7 +158,7 @@ sub_08037D54: @ 0x08037D54
push {r4, lr} push {r4, lr}
adds r4, r0, #0 adds r4, r0, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r2, r4, #0 adds r2, r4, #0
adds r2, #0x5a adds r2, #0x5a
ldrb r1, [r2] ldrb r1, [r2]

View File

@ -403,7 +403,7 @@ sub_08020220: @ 0x08020220
movs r1, #4 movs r1, #4
subs r1, r1, r0 subs r1, r1, r0
adds r0, r5, #0 adds r0, r5, #0
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
b _08020292 b _08020292
_0802024C: _0802024C:
movs r0, #3 movs r0, #3
@ -437,7 +437,7 @@ _08020284:
_0802028A: _0802028A:
adds r0, r5, #0 adds r0, r5, #0
movs r1, #4 movs r1, #4
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
_08020292: _08020292:
pop {r4, r5, pc} pop {r4, r5, pc}
@ -495,7 +495,7 @@ _080202F8:
_080202FE: _080202FE:
adds r0, r4, #0 adds r0, r4, #0
movs r1, #4 movs r1, #4
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
pop {r4, pc} pop {r4, pc}
thumb_func_start sub_08020308 thumb_func_start sub_08020308
@ -533,7 +533,7 @@ _08020340:
bl sub_080AEFE0 bl sub_080AEFE0
adds r0, r4, #0 adds r0, r4, #0
movs r1, #4 movs r1, #4
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
_0802034E: _0802034E:
pop {r4, pc} pop {r4, pc}

View File

@ -324,7 +324,7 @@ sub_080315BC: @ 0x080315BC
strb r0, [r4, #0xe] strb r0, [r4, #0xe]
adds r0, r4, #0 adds r0, r4, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
b _080315FC b _080315FC
_080315D4: _080315D4:
adds r0, r4, #0 adds r0, r4, #0

View File

@ -150,7 +150,7 @@ _080382B8: .4byte gLinkEntity
_080382BC: _080382BC:
adds r0, r4, #0 adds r0, r4, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r0, r4, #0 adds r0, r4, #0
bl sub_080AEF88 bl sub_080AEF88
cmp r0, #0 cmp r0, #0
@ -192,7 +192,7 @@ sub_08038304: @ 0x08038304
push {r4, r5, r6, lr} push {r4, r5, r6, lr}
adds r4, r0, #0 adds r4, r0, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r0, r4, #0 adds r0, r4, #0
bl sub_080AEF88 bl sub_080AEF88
cmp r0, #0 cmp r0, #0

View File

@ -1,754 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start RupeeLike
RupeeLike: @ 0x080292A0
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xb]
cmp r0, #0
bne _080292F8
adds r0, r5, #0
bl sub_080043E8
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
beq _080292CE
ldrb r0, [r5, #0xc]
cmp r0, #4
bne _080292C4
adds r0, r5, #0
bl sub_080296D8
_080292C4:
adds r0, r5, #0
adds r1, r4, #0
bl sub_08001290
b _080292FE
_080292CE:
ldr r4, _080292F4 @ =gUnk_080CCC00
adds r0, r5, #0
bl GetNextFunction
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r5, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
b _080292FE
.align 2, 0
_080292F4: .4byte gUnk_080CCC00
_080292F8:
adds r0, r5, #0
bl sub_080293DC
_080292FE:
pop {r4, r5, pc}
thumb_func_start sub_08029300
sub_08029300: @ 0x08029300
push {lr}
ldr r2, _08029314 @ =gUnk_080CCC18
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08029314: .4byte gUnk_080CCC18
thumb_func_start sub_08029318
sub_08029318: @ 0x08029318
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x8e
bne _0802932C
adds r0, r4, #0
bl sub_08029770
b _080293A6
_0802932C:
ldrb r0, [r4, #0xc]
cmp r0, #4
bne _08029338
adds r0, r4, #0
bl sub_080296D8
_08029338:
ldr r0, [r4, #0x4c]
ldrb r0, [r0, #8]
cmp r0, #1
bne _08029394
ldrb r0, [r4, #0xc]
cmp r0, #2
bne _08029356
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
ldr r0, [r4, #0x54]
movs r1, #4
bl InitializeAnimation
_08029356:
movs r1, #0
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r1, r4, #0
adds r1, #0x83
movs r0, #0x41
strb r0, [r1]
adds r2, r4, #0
adds r2, #0x3b
ldrb r1, [r2]
movs r0, #0xfc
ands r0, r1
strb r0, [r2]
ldr r0, _08029390 @ =gLinkEntity
adds r0, #0x29
ldrb r0, [r0]
lsls r0, r0, #0x1a
lsrs r0, r0, #0x1d
adds r1, r4, #0
adds r1, #0x80
strb r0, [r1]
movs r0, #0x82
lsls r0, r0, #1
bl sub_08004488
b _080293A6
.align 2, 0
_08029390: .4byte gLinkEntity
_08029394:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _080293A6
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_080293A6:
ldr r1, _080293B0 @ =gUnk_080CCC00
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_080293B0: .4byte gUnk_080CCC00
thumb_func_start sub_080293B4
sub_080293B4: @ 0x080293B4
push {lr}
ldr r3, _080293D4 @ =gUnk_080CCC34
adds r1, r0, #0
adds r1, #0x84
ldrb r2, [r1]
lsls r1, r2, #1
adds r1, r1, r2
ldrb r2, [r0, #0xa]
adds r1, r1, r2
adds r1, r1, r3
ldrb r2, [r1]
movs r1, #0xff
bl CreateDeathFx
pop {pc}
.align 2, 0
_080293D4: .4byte gUnk_080CCC34
thumb_func_start nullsub_141
nullsub_141: @ 0x080293D8
bx lr
.align 2, 0
thumb_func_start sub_080293DC
sub_080293DC: @ 0x080293DC
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPositionAndSpriteOffset
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
ldrh r0, [r4, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
ldr r1, _08029408 @ =gUnk_080CCC3C
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_08029408: .4byte gUnk_080CCC3C
thumb_func_start sub_0802940C
sub_0802940C: @ 0x0802940C
push {r4, r5, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xa]
movs r0, #0x17
bl CreateEnemy
adds r5, r0, #0
cmp r5, #0
beq _0802944A
adds r0, r4, #0
bl sub_0804A720
str r4, [r5, #0x50]
movs r1, #0
movs r0, #1
strb r0, [r5, #0xb]
str r5, [r4, #0x54]
adds r0, r4, #0
adds r0, #0x81
strb r1, [r0]
adds r0, #3
strb r1, [r0]
ldrb r0, [r4, #0x1a]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1c
adds r1, r4, #0
adds r1, #0x82
strb r0, [r1]
adds r0, r4, #0
bl sub_080297F0
_0802944A:
pop {r4, r5, pc}
thumb_func_start sub_0802944C
sub_0802944C: @ 0x0802944C
push {r4, lr}
adds r4, r0, #0
bl sub_080296C8
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
beq _08029470
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08029470
adds r0, r4, #0
bl sub_08029770
_08029470:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08029474
sub_08029474: @ 0x08029474
push {r4, lr}
adds r4, r0, #0
bl sub_080296C8
adds r3, r4, #0
adds r3, #0x5a
ldrb r2, [r3]
movs r0, #0x80
ands r0, r2
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
beq _080294C0
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
ldr r1, _080294BC @ =gLinkEntity
adds r0, r4, #0
bl GetFacingDirection
strb r0, [r4, #0x15]
lsls r0, r0, #0x18
lsrs r0, r0, #0x1c
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl InitializeAnimation
ldr r0, [r4, #0x54]
ldrb r1, [r4, #0x14]
adds r1, #4
bl InitializeAnimation
b _080294D2
.align 2, 0
_080294BC: .4byte gLinkEntity
_080294C0:
lsls r0, r2, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bne _080294D2
strb r1, [r3]
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
_080294D2:
pop {r4, pc}
thumb_func_start sub_080294D4
sub_080294D4: @ 0x080294D4
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0802951C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08029508
movs r0, #8
strb r0, [r4, #0xe]
ldr r1, _08029518 @ =gLinkEntity
adds r0, r4, #0
bl GetFacingDirection
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
adds r0, r4, #0
bl sub_0802969C
_08029508:
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_080296C8
b _08029538
.align 2, 0
_08029518: .4byte gLinkEntity
_0802951C:
movs r0, #6
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
ldr r0, [r4, #0x54]
movs r1, #7
bl InitializeAnimation
_08029538:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0802953C
sub_0802953C: @ 0x0802953C
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080296C8
adds r0, r5, #0
bl sub_080296C8
bl sub_0807953C
cmp r0, #0
beq _08029558
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
_08029558:
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _08029562
subs r0, #1
strb r0, [r5, #0xe]
_08029562:
ldrb r0, [r5, #0xf]
cmp r0, #0x2d
bhi _08029572
ldr r0, _08029580 @ =gUnk_02002A40
adds r0, #0xc0
ldrh r0, [r0]
cmp r0, #0
bne _08029584
_08029572:
ldrb r0, [r5, #0xe]
cmp r0, #0
bne _08029584
adds r0, r5, #0
bl sub_080296D8
b _080295FE
.align 2, 0
_08029580: .4byte gUnk_02002A40
_08029584:
bl sub_08077B2C
ldr r2, _08029600 @ =gLinkState
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x1a]
ldr r4, _08029604 @ =gLinkEntity
movs r3, #0x80
lsls r3, r3, #9
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0
bl PositionRelative
ldrh r0, [r5, #0x12]
ldrb r1, [r5, #0x1e]
bl sub_080700C8
ldrb r1, [r0]
adds r2, r4, #0
adds r2, #0x62
strb r1, [r2]
ldrb r0, [r0, #1]
subs r0, #1
adds r1, r4, #0
adds r1, #0x63
strb r0, [r1]
adds r4, #0x29
ldrb r1, [r4]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
adds r1, r5, #0
adds r1, #0x83
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080295FE
movs r0, #0x41
strb r0, [r1]
ldr r0, _08029608 @ =gUnk_02002A40
adds r0, #0xc0
ldrh r0, [r0]
cmp r0, #0
beq _080295FE
ldr r1, _0802960C @ =gUnk_080CCC44
ldrb r0, [r5, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
bl ModRupees
adds r1, r5, #0
adds r1, #0x84
movs r0, #1
strb r0, [r1]
_080295FE:
pop {r4, r5, pc}
.align 2, 0
_08029600: .4byte gLinkState
_08029604: .4byte gLinkEntity
_08029608: .4byte gUnk_02002A40
_0802960C: .4byte gUnk_080CCC44
thumb_func_start sub_08029610
sub_08029610: @ 0x08029610
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xf]
subs r0, #1
strb r0, [r1, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08029628
movs r0, #3
strb r0, [r1, #0xc]
movs r0, #1
strb r0, [r1, #0xe]
_08029628:
adds r0, r1, #0
bl sub_080296C8
pop {pc}
thumb_func_start sub_08029630
sub_08029630: @ 0x08029630
push {r4, lr}
adds r4, r0, #0
bl sub_080296C8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0802965E
adds r1, r4, #0
adds r1, #0x81
movs r0, #1
strb r0, [r1]
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x18]
subs r0, #5
ands r0, r1
strb r0, [r2, #0x18]
adds r0, r4, #0
bl sub_080297F0
_0802965E:
pop {r4, pc}
thumb_func_start sub_08029660
sub_08029660: @ 0x08029660
movs r1, #1
strb r1, [r0, #0xc]
movs r1, #0xd1
strh r1, [r0, #0x12]
ldr r2, _08029684 @ =gUnk_080CCC47
ldrb r1, [r0, #0xa]
adds r1, r1, r2
ldrb r2, [r1]
movs r1, #0xf
ands r2, r1
ldrb r3, [r0, #0x1a]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r3
orrs r1, r2
strb r1, [r0, #0x1a]
bx lr
.align 2, 0
_08029684: .4byte gUnk_080CCC47
thumb_func_start sub_08029688
sub_08029688: @ 0x08029688
push {lr}
adds r1, r0, #0
ldr r0, [r1, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _0802969A
adds r0, r1, #0
bl DeleteEntity
_0802969A:
pop {pc}
thumb_func_start sub_0802969C
sub_0802969C: @ 0x0802969C
push {r4, r5, lr}
adds r5, r0, #0
ldrb r1, [r5, #0x15]
movs r0, #0xf
ands r0, r1
cmp r0, #0
beq _080296C4
lsrs r4, r1, #4
ldrb r0, [r5, #0x14]
cmp r4, r0
beq _080296C4
strb r4, [r5, #0x14]
adds r0, r5, #0
adds r1, r4, #0
bl InitializeAnimation
ldr r0, [r5, #0x54]
adds r1, r4, #4
bl InitializeAnimation
_080296C4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080296C8
sub_080296C8: @ 0x080296C8
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
ldr r0, [r4, #0x54]
bl GetNextFrame
pop {r4, pc}
thumb_func_start sub_080296D8
sub_080296D8: @ 0x080296D8
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _08029764 @ =gLinkState
movs r0, #0x41
strb r0, [r2, #2]
ldr r0, [r2, #0x30]
movs r1, #0x11
rsbs r1, r1, #0
ands r0, r1
str r0, [r2, #0x30]
ldr r0, _08029768 @ =gLinkEntity
mov ip, r0
ldrb r0, [r0, #0x10]
movs r1, #0x80
orrs r0, r1
mov r1, ip
strb r0, [r1, #0x10]
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r1, #0x20]
adds r1, #0x3d
movs r0, #0xa6
strb r0, [r1]
movs r3, #0
ldr r0, _0802976C @ =0x0000FFFE
mov r1, ip
strh r0, [r1, #0x36]
ldrb r0, [r1, #0x14]
lsls r0, r0, #2
strb r0, [r1, #0x15]
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
mov r5, ip
adds r5, #0x29
movs r1, #7
ands r1, r0
lsls r1, r1, #3
ldrb r2, [r5]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5]
mov r0, ip
adds r0, #0x63
strb r3, [r0]
movs r0, #0xa0
lsls r0, r0, #1
mov r1, ip
strh r0, [r1, #0x24]
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xf]
adds r2, r4, #0
adds r2, #0x3b
ldrb r1, [r2]
movs r0, #3
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08029762
movs r0, #0xf4
strb r0, [r1]
_08029762:
pop {r4, r5, pc}
.align 2, 0
_08029764: .4byte gLinkState
_08029768: .4byte gLinkEntity
_0802976C: .4byte 0x0000FFFE
thumb_func_start sub_08029770
sub_08029770: @ 0x08029770
push {r4, lr}
adds r4, r0, #0
movs r1, #0x73
bl LoadFixedGFX
cmp r0, #0
beq _080297E8
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #0xd1
strh r0, [r4, #0x12]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x18
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
movs r0, #0xf
ands r1, r0
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x8d
strb r0, [r1]
ldr r0, _080297EC @ =gUnk_080FD260
str r0, [r4, #0x48]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
ldr r0, [r4, #0x54]
movs r1, #6
bl InitializeAnimation
adds r0, r4, #0
bl sub_080A29BC
_080297E8:
pop {r4, pc}
.align 2, 0
_080297EC: .4byte gUnk_080FD260
thumb_func_start sub_080297F0
sub_080297F0: @ 0x080297F0
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x8e
strb r0, [r1]
adds r0, r4, #0
bl sub_080AE068
ldr r0, _08029850 @ =0x00000143
strh r0, [r4, #0x12]
ldr r1, _08029854 @ =gUnk_080CCC47
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r1, [r0]
movs r0, #0xf
ands r1, r0
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
adds r1, r4, #0
adds r1, #0x60
movs r0, #9
strh r0, [r1]
adds r0, r4, #0
movs r1, #0x54
bl InitializeAnimation
pop {r4, pc}
.align 2, 0
_08029850: .4byte 0x00000143
_08029854: .4byte gUnk_080CCC47

View File

@ -662,7 +662,7 @@ sub_08033C94: @ 0x08033C94
push {r4, lr} push {r4, lr}
adds r4, r0, #0 adds r4, r0, #0
movs r1, #3 movs r1, #3
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r1, r4, #0 adds r1, r4, #0
adds r1, #0x79 adds r1, #0x79
ldrb r0, [r1] ldrb r0, [r1]

View File

@ -211,7 +211,7 @@ sub_0802F284: @ 0x0802F284
bls _0802F298 bls _0802F298
adds r0, r4, #0 adds r0, r4, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
b _0802F29E b _0802F29E
_0802F298: _0802F298:
adds r0, r4, #0 adds r0, r4, #0

View File

@ -6,214 +6,12 @@
.text .text
thumb_func_start TektiteGolden
TektiteGolden: @ 0x08037EC8
push {r4, lr}
adds r4, r0, #0
ldr r1, _08037EE4 @ =gUnk_080CF4A0
bl EnemyFunctionHandler
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
pop {r4, pc}
.align 2, 0
_08037EE4: .4byte gUnk_080CF4A0
thumb_func_start sub_08037EE8
sub_08037EE8: @ 0x08037EE8
push {lr}
ldr r2, _08037EFC @ =gUnk_080CF4B8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08037EFC: .4byte gUnk_080CF4B8
thumb_func_start sub_08037F00
sub_08037F00: @ 0x08037F00
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08037F14
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08037F14:
ldr r1, _08037F54 @ =gUnk_080CF4A0
adds r0, r4, #0
bl sub_0804AA30
adds r0, r4, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x94
bne _08037F50
movs r1, #0
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #0x14
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r0, r4, #0
adds r0, #0x80
strb r1, [r0]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
beq _08037F46
ldr r0, [r4, #0x20]
asrs r0, r0, #2
_08037F46:
str r0, [r4, #0x20]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08037F50:
pop {r4, pc}
.align 2, 0
_08037F54: .4byte gUnk_080CF4A0
thumb_func_start sub_08037F58
sub_08037F58: @ 0x08037F58
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3a
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08037F6E
ldrb r0, [r4, #0xb]
bl SetGlobalFlag
_08037F6E:
ldrb r0, [r4, #0xa]
movs r2, #0x58
cmp r0, #0
beq _08037F78
movs r2, #0x59
_08037F78:
adds r0, r4, #0
movs r1, #0xff
bl CreateDeathFx
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037F84
sub_08037F84: @ 0x08037F84
push {r4, lr}
adds r4, r0, #0
bl sub_08001242
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
beq _08037F9E
movs r1, #0xc0
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
_08037F9E:
pop {r4, pc}
thumb_func_start sub_08037FA0
sub_08037FA0: @ 0x08037FA0
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xb]
bl CheckGlobalFlag
cmp r0, #0
beq _08037FB2
bl DeleteThisEntity
_08037FB2:
adds r0, r5, #0
bl sub_0804A720
movs r4, #0
movs r0, #1
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
bl Random
movs r1, #0x1f
ands r0, r1
adds r0, #0x20
strb r0, [r5, #0xe]
strb r4, [r5, #0xf]
adds r0, r5, #0
adds r0, #0x80
strb r4, [r0]
adds r0, r5, #0
movs r1, #0
bl InitializeAnimation
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08037FE0
sub_08037FE0: @ 0x08037FE0
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl InitializeAnimationAnimation
ldrb r0, [r4, #0xe]
adds r2, r0, #0
cmp r2, #0
beq _08037FF8
subs r0, #1
strb r0, [r4, #0xe]
b _08038046
_08037FF8:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0803802C
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08038046
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #6
strb r0, [r4, #0xe]
strb r2, [r4, #0xf]
movs r0, #0xe0
lsls r0, r0, #0xa
str r0, [r4, #0x20]
adds r0, r4, #0
bl sub_08038168
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
b _08038046
_0803802C:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08038046
movs r0, #0x40
strb r0, [r4, #0xf]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
_08038046:
pop {r4, pc}
thumb_func_start sub_08038048 thumb_func_start sub_08038048
sub_08038048: @ 0x08038048 sub_08038048: @ 0x08038048
push {r4, r5, r6, lr} push {r4, r5, r6, lr}
adds r4, r0, #0 adds r4, r0, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r0, r4, #0 adds r0, r4, #0
bl sub_080AEF88 bl sub_080AEF88
movs r0, #0x36 movs r0, #0x36
@ -315,7 +113,7 @@ sub_08038110: @ 0x08038110
push {r4, lr} push {r4, lr}
adds r4, r0, #0 adds r4, r0, #0
movs r1, #2 movs r1, #2
bl InitializeAnimationAnimation bl UpdateAnimationVariableFrames
adds r0, r4, #0 adds r0, r4, #0
adds r0, #0x5a adds r0, #0x5a
ldrb r1, [r0] ldrb r1, [r0]

View File

@ -59,7 +59,13 @@ typedef struct Entity {
/* */ u8 b2 : 2; //0x10 /* */ u8 b2 : 2; //0x10
/* */ u8 b3 : 2; //0x40 /* */ u8 b3 : 2; //0x40
/* */ } PACKED spriteRendering; /* */ } PACKED spriteRendering;
/*0x1a*/ u8 palette; /*0x1a*/ union {
/* */ u8 raw;
/* */ struct {
/* */ u8 b0 : 4;
/* */ u8 b4 : 4;
/* */ } PACKED b;
/* */} PACKED palette;
/*0x1b*/ struct { /*0x1b*/ struct {
/* */ u8 b0 : 4; /* */ u8 b0 : 4;
/* */ u8 flipX : 2; //0x10 /* */ u8 flipX : 2; //0x10
@ -132,8 +138,8 @@ typedef struct Entity {
/*0x78*/ union SplitHWord field_0x78; /*0x78*/ union SplitHWord field_0x78;
/*0x7a*/ u16 field_0x7a; /*0x7a*/ u16 field_0x7a;
/*0x7c*/ union SplitWord field_0x7c; /*0x7c*/ union SplitWord field_0x7c;
/*0x80*/ u16 field_0x80; /*0x80*/ union SplitHWord field_0x80;
/*0x82*/ u16 field_0x82; /*0x82*/ union SplitHWord field_0x82;
/*0x84*/ union SplitHWord cutsceneBeh; /*0x84*/ union SplitHWord cutsceneBeh;
/*0x86*/ u16 field_0x86; /*0x86*/ u16 field_0x86;
} Entity; } Entity;

View File

@ -34,6 +34,11 @@ extern void EraseAllEntities(void);
extern void SetTile(u32, u32, u32); extern void SetTile(u32, u32, u32);
extern void SetDirtTile(u32); extern void SetDirtTile(u32);
extern void LoadRoomTileEntities(); //tba extern void LoadRoomTileEntities(); //tba
extern Entity* CreateDeathFx(Entity*, u32, u32);
extern void UpdateAnimationVariableFrames(Entity*, u32);
extern void CopyPositionAndSpriteOffset(Entity*, Entity*);
extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32);
extern u32 LoadFixedGFX(Entity*, u32);
// Unidentified // Unidentified
extern void sub_0806ED78(Entity*); extern void sub_0806ED78(Entity*);
@ -183,4 +188,14 @@ extern void sub_080A4398(void);
extern void sub_0801E738(u32); extern void sub_0801E738(u32);
extern void sub_080A70AC(void*); extern void sub_080A70AC(void*);
extern void sub_080A7114(u32); extern void sub_080A7114(u32);
extern void sub_08001242(void);
extern void sub_08003FC4(Entity*, u32);
extern u8 sub_080043E8(Entity*);
extern void sub_08001290(Entity*, u32);
extern void sub_08004488(u32);
extern void sub_08004596(Entity*, u32);
extern u32 sub_0807953C(void);
extern void sub_08077B2C(void);
extern void sub_080A29BC(Entity*);
extern void sub_080AE068(Entity*);
#endif #endif

View File

@ -94,7 +94,7 @@ extern Entity gLinkEntity;
extern u32 GetInventoryValue(u32); extern u32 GetInventoryValue(u32);
extern s32 ModHealth(s32); extern s32 ModHealth(s32);
extern void ModRupees(s32);
#endif #endif
// clang-format on // clang-format on

View File

@ -345,7 +345,7 @@ SECTIONS {
asm/likeLike.o(.text); asm/likeLike.o(.text);
asm/spearMoblin.o(.text); asm/spearMoblin.o(.text);
asm/businessScrub.o(.text); asm/businessScrub.o(.text);
asm/rupeeLike.o(.text); src/enemy/rupeeLike.o(.text);
asm/madderpillar.o(.text); asm/madderpillar.o(.text);
asm/waterDrop.o(.text); asm/waterDrop.o(.text);
asm/wallMaster.o(.text); asm/wallMaster.o(.text);
@ -385,6 +385,7 @@ SECTIONS {
asm/flyingPot.o(.text); asm/flyingPot.o(.text);
asm/gibdo.o(.text); asm/gibdo.o(.text);
asm/octorokGolden.o(.text); asm/octorokGolden.o(.text);
src/enemy/tektiteGolden.o(.text);
asm/tektiteGolden.o(.text); asm/tektiteGolden.o(.text);
asm/ropeGolden.o(.text); asm/ropeGolden.o(.text);
asm/cloudPiranha.o(.text); asm/cloudPiranha.o(.text);

View File

@ -44,7 +44,7 @@ void sub_0802A84C(Entity* this) {
} }
void sub_0802A8AC(Entity *this) { void sub_0802A8AC(Entity *this) {
*((u8 *)&this->field_0x80 + 1) = 0; this->field_0x80.HALF.HI = 0;
if (this->entityType.form < 2) { if (this->entityType.form < 2) {
InitializeAnimation(this, 0); InitializeAnimation(this, 0);
} }

View File

@ -11,7 +11,7 @@ extern void sub_0801ECFC();
extern u32 sub_0806F520(); extern u32 sub_0806F520();
extern void sub_0806F4E8(); extern void sub_0806F4E8();
extern void sub_0806F3E4(); extern void sub_0806F3E4();
extern void InitializeAnimationAnimation(); extern void UpdateAnimationVariableFrames();
extern void sub_0804A720(); extern void sub_0804A720();
extern u32 Random(); extern u32 Random();
extern void sub_0801ED14(); extern void sub_0801ED14();
@ -75,7 +75,7 @@ void sub_0801EB7C(Entity* ent) {
void sub_0801EB84(Entity* ent) { void sub_0801EB84(Entity* ent) {
ent->flags = ent->flags & 127; ent->flags = ent->flags & 127;
InitializeAnimationAnimation(ent, 2); UpdateAnimationVariableFrames(ent, 2);
} }
void nullsub_3() { void nullsub_3() {

281
src/enemy/rupeeLike.c Normal file
View File

@ -0,0 +1,281 @@
#include "global.h"
#include "entity.h"
#include "enemy.h"
#include "functions.h"
#include "structures.h"
#include "link.h"
extern void sub_080293DC(Entity*);
extern void sub_080296D8(Entity*);
extern void sub_08029770(Entity*);
extern void sub_080297F0(Entity*);
extern void sub_080296C8(Entity*);
extern void sub_0802969C(Entity*);
extern void (*const gUnk_080CCC00[])(Entity*);
extern void (*const gUnk_080CCC18[])(Entity*);
extern void (*const gUnk_080CCC3C[])(Entity*);
extern u8 gUnk_080CCC34[];
extern u8 gUnk_080CCC47[];
extern BoundingBox gUnk_080FD260;
void RupeeLike(Entity* this) {
u32 uVar1;
if (this->entityType.parameter == 0) {
uVar1 = sub_080043E8(this);
if (uVar1 != 0) {
if (this->action == 4) {
sub_080296D8(this);
}
sub_08001290(this, uVar1);
} else {
gUnk_080CCC00[GetNextFunction(this)](this);
SetChildOffset(this, 0, 1, -0x10);
}
} else {
sub_080293DC(this);
}
}
void sub_08029300(Entity* this) {
gUnk_080CCC18[this->action](this);
}
void sub_08029318(Entity* this) {
if (this->damageType == 0x8e) {
sub_08029770(this);
} else {
if (this->action == 4) {
sub_080296D8(this);
}
if (*(u8*)(*(u32*)&this->field_0x4c + 8) == 1) {
if (this->action == 2) {
InitializeAnimation(this, 0);
InitializeAnimation(this->attachedEntity, 4);
}
this->action = 4;
this->actionDelay = 0x3c;
this->field_0xf = 0;
this->field_0x82.HALF.HI = 0x41;
this->flags2 &= 0xfc;
this->field_0x80.HALF.LO = gLinkEntity.spritePriority.b1;
sub_08004488(0x104);
} else {
if (this->field_0x43 != 0) {
sub_0804A9FC(this, 0x1c);
}
}
}
sub_0804AA30(this, gUnk_080CCC00);
}
void sub_080293B4(Entity* this) {
CreateDeathFx(this, 0xff, gUnk_080CCC34[this->cutsceneBeh.HALF.LO * 3 + this->entityType.form]);
}
void nullsub_141() {
}
void sub_080293DC(Entity* this) {
CopyPositionAndSpriteOffset(this->parent, this);
this->y.HALF.HI++;
this->height.HALF.HI--;
gUnk_080CCC3C[this->action](this);
}
void sub_0802940C(Entity* this) {
Entity* ent;
ent = CreateEnemy(0x17, this->entityType.form);
if (ent != NULL) {
sub_0804A720(this);
ent->parent = this;
ent->entityType.parameter = 1;
this->attachedEntity = ent;
this->field_0x80.HALF.HI = 0;
this->cutsceneBeh.HALF.LO = 0;
this->field_0x82.HALF.LO = this->palette.b.b0;
sub_080297F0(this);
}
}
void sub_0802944C(Entity* this) {
sub_080296C8(this);
if ((this->field_0x80.HALF.HI != 0) && sub_08049FDC(this, 1)) {
sub_08029770(this);
}
}
void sub_08029474(Entity* this) {
u32 bVar1;
sub_080296C8(this);
if (this->frames.b.f3) {
this->action = 3;
this->actionDelay = 8;
bVar1 = GetFacingDirection(this, &gLinkEntity);
this->direction = bVar1;
this->animationState = (bVar1 << 0x18) >> 0x1c;
InitializeAnimation(this, this->animationState);
InitializeAnimation(this->attachedEntity, this->animationState + 4);
} else {
if (this->frames.all == 1) {
this->frames.all = 0;
this->flags |= 0x80;
}
}
}
void sub_080294D4(Entity* this) {
if (sub_08049FDC(this, 1) != 0) {
if (--this->actionDelay == 0) {
this->actionDelay = 8;
sub_08004596(this, GetFacingDirection(this, &gLinkEntity));
sub_0802969C(this);
}
sub_080AEF88(this);
sub_080296C8(this);
} else {
this->action = 6;
this->flags &= 0x7f;
InitializeAnimation(this, 3);
InitializeAnimation(this->attachedEntity, 7);
}
}
extern s8 gUnk_080CCC44[];
void sub_0802953C(Entity* this) {
u8* pbVar3;
sub_080296C8(this);
sub_080296C8(this);
if (sub_0807953C() != 0) {
this->field_0xf++;
}
if (this->actionDelay != 0) {
this->actionDelay--;
}
if (((this->field_0xf > 0x2d) || (gUnk_02002A40.stats.rupees == 0)) && (this->actionDelay == 0)) {
sub_080296D8(this);
} else {
sub_08077B2C();
gLinkState.field_0x1a[0] |= 0x80;
PositionRelative(this, &gLinkEntity, 0, 0x10000);
pbVar3 = GetSpriteSubEntryOffsetDataPointer((u16)this->spriteIndex, this->frameIndex);
gLinkEntity.spriteOffsetX = pbVar3[0];
gLinkEntity.spriteOffsetY = pbVar3[1] - 1;
gLinkEntity.spritePriority.b1 = 0;
if (--this->field_0x82.HALF.HI == 0) {
this->field_0x82.HALF.HI = 0x41;
if (gUnk_02002A40.stats.rupees != 0) {
ModRupees(gUnk_080CCC44[this->entityType.form]);
this->cutsceneBeh.HALF.LO = 1;
}
}
}
}
void sub_08029610(Entity* this) {
if (--this->field_0xf == 0) {
this->action = 3;
this->actionDelay = 1;
}
sub_080296C8(this);
}
void sub_08029630(Entity* this) {
sub_080296C8(this);
if ((this->frames.b.f3) != 0) {
this->field_0x80.HALF.HI = 1;
this->attachedEntity->spriteSettings.b.draw = FALSE;
sub_080297F0(this);
}
}
void sub_08029660(Entity* this) {
u32 temp;
this->action = 1;
this->spriteIndex = 0xd1;
temp = gUnk_080CCC47[this->entityType.form];
this->palette.b.b0 = temp;
}
void sub_08029688(Entity* this) {
if (this->parent->field_0x4 == NULL) {
DeleteEntity(this);
}
}
void sub_0802969C(Entity* this) {
u32 bVar1;
if ((this->direction & 0xf) != 0) {
bVar1 = this->direction >> 4;
if (bVar1 != this->animationState) {
this->animationState = bVar1;
InitializeAnimation(this, bVar1);
InitializeAnimation(this->attachedEntity, bVar1 + 4);
}
}
}
void sub_080296C8(Entity* this) {
GetNextFrame(this);
GetNextFrame(this->attachedEntity);
}
void sub_080296D8(Entity* this) {
gLinkState.jumpStatus = 0x41;
gLinkState.flags.all &= 0xffffffef;
gLinkEntity.flags |= 0x80;
gLinkEntity.field_0x20 = 0x18000;
gLinkEntity.hurtBlinkTime = 0xa6;
gLinkEntity.height.HALF.HI = -2;
gLinkEntity.direction = gLinkEntity.animationState << 2;
gLinkEntity.spritePriority.b1 = this->field_0x80.HALF.LO;
gLinkEntity.spriteOffsetY = 0;
gLinkEntity.nonPlanarMovement = 0x140;
this->action = 5;
this->field_0xf = 0x3c;
this->flags2 |= 3;
if ((s8)this->hurtBlinkTime == 0) {
this->hurtBlinkTime = 0xf4;
}
}
void sub_08029770(Entity* this) {
u32 temp;
if (LoadFixedGFX(this, 0x73) != 0) {
this->action = 2;
this->flags = this->flags & 0x7f;
this->spriteIndex = 0xd1;
this->spritePriority.b1 = 3;
temp = this->field_0x82.HALF.LO;
this->palette.b.b0 = temp;
this->damageType = 0x8d;
this->boundingBox = &gUnk_080FD260;
InitializeAnimation(this, 2);
this->attachedEntity->spriteSettings.b.draw = TRUE;
InitializeAnimation(this->attachedEntity, 6);
sub_080A29BC(this);
}
}
void sub_080297F0(Entity* this) {
u32 temp;
this->action = 1;
this->actionDelay = 0x78;
this->flags = this->flags | 0x80;
this->spriteSettings.b.draw = TRUE;
this->damageType = 0x8e;
sub_080AE068(this);
this->spriteIndex = 0x143;
temp = gUnk_080CCC47[this->entityType.form];
this->palette.b.b0 = temp;
this->spriteVramOffset = 9;
InitializeAnimation(this, 0x54);
}

108
src/enemy/tektiteGolden.c Normal file
View File

@ -0,0 +1,108 @@
#include "global.h"
#include "entity.h"
#include "enemy.h"
#include "functions.h"
#include "flags.h"
extern void sub_08038168(Entity*);
extern void (*const gUnk_080CF4A0)(Entity*);
extern void (*const gUnk_080CF4B8[])(Entity*);
void TektiteGolden(Entity *this)
{
EnemyFunctionHandler(this, &gUnk_080CF4A0);
SetChildOffset(this, 0, 1, -0x10);
}
void sub_08037EE8(Entity* this)
{
gUnk_080CF4B8[this->action](this);
}
void sub_08037F00(Entity *this)
{
u32 uVar1;
if (this->field_0x43 != 0) {
sub_0804A9FC(this,0x1c);
}
sub_0804AA30(this, &gUnk_080CF4A0);
if (this->bitfield == 0x94) {
this->action = 1;
this->previousActionFlag = 0;
this->actionDelay = 0x14;
this->field_0xf = 0;
this->field_0x80.HALF.LO = 0;
uVar1 = this->height.HALF.HI;
if (uVar1 != 0) {
this->field_0x20 >>= 2;
}
else {
this->field_0x20 = uVar1;
}
InitializeAnimation(this,0);
}
}
void sub_08037F58(Entity *this)
{
u32 uVar1;
if ((this->field_0x3a & 2) == 0) {
SetGlobalFlag(this->entityType.parameter);
}
if ((this->entityType).form != 0) {
uVar1 = 0x59;
}
else {
uVar1 = 0x58;
}
CreateDeathFx(this, 0xff, uVar1);
}
void sub_08037F84(Entity *this)
{
sub_08001242();
if (this->height.HALF.HI != 0) {
sub_08003FC4(this, 0x3000);
}
}
void sub_08037FA0(Entity *this)
{
if (CheckGlobalFlag(this->entityType.parameter)) {
DeleteThisEntity();
}
sub_0804A720(this);
this->action = 1;
this->previousActionFlag = 0;
this->actionDelay = (Random() & 0x1f) + 0x20;
this->field_0xf = 0;
this->field_0x80.HALF.LO = 0;
InitializeAnimation(this,0);
}
void sub_08037Fe0(Entity *this)
{
UpdateAnimationVariableFrames(this, 2);
if (this->actionDelay != 0) {
this->actionDelay--;
}
else if (this->field_0xf != 0) {
if ((this->frames.b.f3) != 0) {
this->action = 2;
this->actionDelay = 6;
this->field_0xf = 0;
this->field_0x20 = 0x38000;
sub_08038168(this);
InitializeAnimation(this, 2);
}
}
else if ((this->frames.b.f3) != 0) {
this->field_0xf = 0x40;
InitializeAnimation(this, 1);
}
}

View File

@ -57,7 +57,7 @@ void sub_08018CBC(Entity *this)
this->action = 2; this->action = 2;
this->spriteSettings.b.draw = 1; this->spriteSettings.b.draw = 1;
this->spriteIndex = 0xa6; this->spriteIndex = 0xa6;
this->palette = 0x33; this->palette.raw = 0x33;
this->spriteVramOffset = 0; this->spriteVramOffset = 0;
(this->entityType).form = gLinkState.field_0x1d[0] - 1; (this->entityType).form = gLinkState.field_0x1d[0] - 1;
this->actionDelay = gUnk_080B3DE0[(this->entityType).form * 2]; this->actionDelay = gUnk_080B3DE0[(this->entityType).form * 2];

View File

@ -90,9 +90,9 @@ void sub_080600F0(Entity* this) {
u32 uVar1; u32 uVar1;
u32 uVar2; u32 uVar2;
uVar2 = this->field_0x80; uVar2 = this->field_0x80.HWORD;
if (this->field_0x80 < 8) { if (this->field_0x80.HWORD < 8) {
if ((this->field_0x82 & 1) != 0) { if ((this->field_0x82.HWORD & 1) != 0) {
uVar2 = (uVar2 & 0xfc) + (this->field_0xf >> 1); uVar2 = (uVar2 & 0xfc) + (this->field_0xf >> 1);
} else { } else {
uVar2 = (uVar2 & 0xfc) + (this->animationState >> 1); uVar2 = (uVar2 & 0xfc) + (this->animationState >> 1);
@ -102,7 +102,7 @@ void sub_080600F0(Entity* this) {
if (uVar2 != this->animIndex) { if (uVar2 != this->animIndex) {
InitAnimationForceUpdate(this, uVar2); InitAnimationForceUpdate(this, uVar2);
} }
if ((this->field_0x82 & 4) != 0) { if ((this->field_0x82.HWORD & 4) != 0) {
uVar1 = 2; uVar1 = 2;
} else { } else {
uVar1 = 1; uVar1 = 1;

View File

@ -63,7 +63,7 @@ void sub_08069428(Entity* this, s32 offsetX, bool32 createFx65);
void sub_080693D0(Entity* this) { void sub_080693D0(Entity* this) {
sub_0807DD94(this, 0); sub_0807DD94(this, 0);
if (this->animIndex == 8) { if (this->animIndex == 8) {
u32 var0 = this->field_0x82 & 0xF; u32 var0 = this->field_0x82.HWORD & 0xF;
bool32 createFx65 = ((-var0) | var0) >> 0x1F; // = !var0 bool32 createFx65 = ((-var0) | var0) >> 0x1F; // = !var0
if (this->frames.all == 1) { if (this->frames.all == 1) {
@ -121,7 +121,7 @@ void sub_080694EC(Entity* this) {
anim = 2; anim = 2;
if (!CheckKinstoneFused(47)) anim = 8; if (!CheckKinstoneFused(47)) anim = 8;
InitAnimationForceUpdate(this, anim); InitAnimationForceUpdate(this, anim);
this->field_0x80 = anim; this->field_0x80.HWORD = anim;
} }
void Goron_Fusion(Entity* this) { void Goron_Fusion(Entity* this) {

View File

@ -157,8 +157,8 @@ void sub_080661BC(Entity *this)
if (this->animIndex == 0xc) { if (this->animIndex == 0xc) {
UpdateAnimationSingleFrame(this); UpdateAnimationSingleFrame(this);
if ((this->frames.b.f3) != 0) { if ((this->frames.b.f3) != 0) {
this->field_0x80 = GetAnimationState(this) + 8; this->field_0x80.HWORD = GetAnimationState(this) + 8;
InitAnimationForceUpdate(this, this->field_0x80); InitAnimationForceUpdate(this, this->field_0x80.HWORD);
} }
} }
else { else {

View File

@ -41,7 +41,7 @@ void sub_0806A1F8(Entity *this)
void sub_0806A234(Entity *this) void sub_0806A234(Entity *this)
{ {
sub_0807DD94(this, 0); sub_0807DD94(this, 0);
if ((this->field_0x82 & 4) != 0) { if ((this->field_0x82.HWORD & 4) != 0) {
if ((gUnk_030010A0 & 7) == 0) { if ((gUnk_030010A0 & 7) == 0) {
sub_0806A26C(this); sub_0806A26C(this);
} }

View File

@ -109,27 +109,27 @@ void sub_08066DE4(Entity* ent) {
void sub_08066E08(Entity* ent) { void sub_08066E08(Entity* ent) {
InitAnimationForceUpdate(ent, 0x50); InitAnimationForceUpdate(ent, 0x50);
ent->field_0x80 = ent->animIndex; ent->field_0x80.HWORD = ent->animIndex;
} }
void sub_08066E20(Entity* ent) { void sub_08066E20(Entity* ent) {
InitAnimationForceUpdate(ent, 0x44); InitAnimationForceUpdate(ent, 0x44);
ent->field_0x80 = ent->animIndex; ent->field_0x80.HWORD = ent->animIndex;
} }
void sub_08066E38(Entity* ent) { void sub_08066E38(Entity* ent) {
InitAnimationForceUpdate(ent, 0x48); InitAnimationForceUpdate(ent, 0x48);
ent->field_0x80 = ent->animIndex; ent->field_0x80.HWORD = ent->animIndex;
} }
void sub_08066E50(Entity* ent) { void sub_08066E50(Entity* ent) {
InitAnimationForceUpdate(ent, 0x4C); InitAnimationForceUpdate(ent, 0x4C);
ent->field_0x80 = ent->animIndex; ent->field_0x80.HWORD = ent->animIndex;
} }
void sub_08066E68(Entity* ent) { void sub_08066E68(Entity* ent) {
InitAnimationForceUpdate(ent, 0x54); InitAnimationForceUpdate(ent, 0x54);
ent->field_0x80 = ent->animIndex; ent->field_0x80.HWORD = ent->animIndex;
} }
void sub_08066E80(Entity* ent, u8* param_2) { void sub_08066E80(Entity* ent, u8* param_2) {
@ -172,7 +172,7 @@ void sub_08066E80(Entity* ent, u8* param_2) {
return; return;
} }
} }
ent->field_0x80 = ent->animIndex; ent->field_0x80.HWORD = ent->animIndex;
gUnk_02033280[6] = 0; gUnk_02033280[6] = 0;
} }

View File

@ -11,7 +11,7 @@ void Object1C(Entity *this)
if (this->action == 0) { if (this->action == 0) {
this->action = 1; this->action = 1;
} }
iVar1 = CheckRectOnScreen(this->field_0x80, this->field_0x82, 0x10, 0x10); iVar1 = CheckRectOnScreen(this->field_0x80.HWORD, this->field_0x82.HWORD, 0x10, 0x10);
if (iVar1 == 0) { if (iVar1 == 0) {
this->parent->field_0x20 &= ~(1 << this->entityType.parameter); this->parent->field_0x20 &= ~(1 << this->entityType.parameter);
DeleteThisEntity(); DeleteThisEntity();

View File

@ -19,14 +19,14 @@ void sub_080A0EB0(Entity* ent) {
ent->action = 1; ent->action = 1;
tilePos = COORD_TO_TILE(ent); tilePos = COORD_TO_TILE(ent);
ent->field_0x80 = tilePos; ent->field_0x80.HWORD = tilePos;
SetTile(16509, ent->field_0x80, 1); SetTile(16509, ent->field_0x80.HWORD, 1);
} }
void sub_080A0EF0(Entity* ent) { void sub_080A0EF0(Entity* ent) {
s32 tileIndex; s32 tileIndex;
tileIndex = GetTileType(ent->field_0x80, 1); tileIndex = GetTileType(ent->field_0x80.HWORD, 1);
if (tileIndex != 0x407D) { if (tileIndex != 0x407D) {
sub_08078B48(); sub_08078B48();
gLinkEntity.x.WORD = ent->x.WORD; gLinkEntity.x.WORD = ent->x.WORD;