Merge remote-tracking branch 'upstream/master'

This commit is contained in:
theo3
2020-08-24 21:11:39 -07:00
63 changed files with 13138 additions and 13071 deletions
+8 -8
View File
@@ -140,13 +140,13 @@ _08000224: .4byte gUnk_08000228
gUnk_08000228::
.4byte gUnk_02025EB4
gUnk_0800022C::
.4byte gUnk_0202AEB4
.4byte gMetatileTypesBottom
.4byte gUnk_02025EB4
.4byte gUnk_0202AEB4
.4byte gMetatileTypesBottom
.4byte gUnk_0200B654
.4byte gUnk_02010654
.4byte gMetatileTypesTop
.4byte gUnk_02025EB4
.4byte gUnk_0202AEB4
.4byte gMetatileTypesBottom
gUnk_08000248::
.4byte gUnk_02027EB4
.4byte gUnk_02027EB4
@@ -154,13 +154,13 @@ gUnk_08000248::
.4byte gUnk_02027EB4
gUnk_08000258::
.4byte gUnk_02028EB4
.4byte gUnk_0202AEB4
.4byte gMetatileTypesBottom
.4byte gUnk_02028EB4
.4byte gUnk_0202AEB4
.4byte gMetatileTypesBottom
.4byte gUnk_0200E654
.4byte gUnk_02010654
.4byte gMetatileTypesTop
.4byte gUnk_02028EB4
.4byte gUnk_0202AEB4
.4byte gMetatileTypesBottom
gUnk_08000278::
.4byte gUnk_02030EB4
.4byte gUnk_02030EB4
+8 -8
View File
@@ -491,7 +491,7 @@ _0801DC26:
ldr r3, [sp]
cmp r0, #0
bne _0801DCA6
ldr r0, _0801DC88 @ =gUnk_0811E214
ldr r0, _0801DC88 @ =gAreaRoomHeaders
ldrb r2, [r6]
lsls r2, r2, #2
adds r2, r2, r0
@@ -526,7 +526,7 @@ _0801DC26:
b _0801DC9E
.align 2, 0
_0801DC84: .4byte 0x000007FF
_0801DC88: .4byte gUnk_0811E214
_0801DC88: .4byte gAreaRoomHeaders
_0801DC8C:
ldrh r0, [r2]
ands r0, r7
@@ -562,7 +562,7 @@ _0801DCAE:
bl CheckGlobalFlag
cmp r0, #0
bne _0801DD16
ldr r0, _0801DD50 @ =gUnk_0811E214
ldr r0, _0801DD50 @ =gAreaRoomHeaders
ldrb r2, [r6]
lsls r2, r2, #2
adds r2, r2, r0
@@ -632,12 +632,12 @@ _0801DD42:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801DD4C: .4byte gArea
_0801DD50: .4byte gUnk_0811E214
_0801DD50: .4byte gAreaRoomHeaders
_0801DD54: .4byte gScreenTransition
thumb_func_start sub_0801DD58
sub_0801DD58: @ 0x0801DD58
ldr r2, _0801DD7C @ =gUnk_0811E214
ldr r2, _0801DD7C @ =gAreaRoomHeaders
lsls r0, r0, #2
adds r0, r0, r2
lsls r2, r1, #2
@@ -656,7 +656,7 @@ sub_0801DD58: @ 0x0801DD58
strh r0, [r1, #6]
bx lr
.align 2, 0
_0801DD7C: .4byte gUnk_0811E214
_0801DD7C: .4byte gAreaRoomHeaders
_0801DD80: .4byte gArea
_0801DD84: .4byte 0x0000085C
@@ -770,7 +770,7 @@ _0801DE46:
ldr r0, _0801DF04 @ =0x84000100
str r0, [r2, #8]
ldr r0, [r2, #8]
ldr r0, _0801DF08 @ =gUnk_0811E214
ldr r0, _0801DF08 @ =gAreaRoomHeaders
ldrb r2, [r4]
lsls r2, r2, #2
adds r2, r2, r0
@@ -850,7 +850,7 @@ _0801DEF8: .4byte 0x040000D4
_0801DEFC: .4byte gUnk_08324AE4
_0801DF00: .4byte gUnk_02019EE0
_0801DF04: .4byte 0x84000100
_0801DF08: .4byte gUnk_0811E214
_0801DF08: .4byte gAreaRoomHeaders
_0801DF0C: .4byte 0x000007FF
thumb_func_start sub_0801DF10
+2 -2
View File
@@ -1161,7 +1161,7 @@ sub_0804A4E4: @ 0x0804A4E4
beq _0804A550
adds r0, r5, #0
adds r1, r6, #0
bl sub_08058800
bl ReplaceMonitoredEntity
_0804A550:
pop {r4, r5, r6, r7, pc}
.align 2, 0
@@ -1828,4 +1828,4 @@ sub_0804AA1C: @ 0x0804AA1C
str r0, [r2, #0x68]
_0804AA2C:
pop {pc}
.align 2, 0
.align 2, 0
+18 -18
View File
@@ -742,7 +742,7 @@ _08052CA0: .4byte gPlayerEntity
thumb_func_start sub_08052CA4
sub_08052CA4: @ 0x08052CA4
push {r4, lr}
ldr r4, _08052CC8 @ =gUnk_0811E214
ldr r4, _08052CC8 @ =gAreaRoomHeaders
lsls r0, r0, #2
adds r0, r0, r4
lsls r4, r1, #2
@@ -759,13 +759,13 @@ sub_08052CA4: @ 0x08052CA4
strh r0, [r4, #0x22]
pop {r4, pc}
.align 2, 0
_08052CC8: .4byte gUnk_0811E214
_08052CC8: .4byte gAreaRoomHeaders
_08052CCC: .4byte gScreenTransition
thumb_func_start sub_08052CD0
sub_08052CD0: @ 0x08052CD0
push {r4, lr}
ldr r4, _08052CF4 @ =gUnk_0811E214
ldr r4, _08052CF4 @ =gAreaRoomHeaders
lsls r0, r0, #2
adds r0, r0, r4
lsls r4, r1, #2
@@ -782,7 +782,7 @@ sub_08052CD0: @ 0x08052CD0
strh r0, [r4, #0x1e]
pop {r4, pc}
.align 2, 0
_08052CF4: .4byte gUnk_0811E214
_08052CF4: .4byte gAreaRoomHeaders
_08052CF8: .4byte gScreenTransition
thumb_func_start sub_08052CFC
@@ -871,7 +871,7 @@ _08052DA4: .4byte 0x0000088C
thumb_func_start sub_08052DA8
sub_08052DA8: @ 0x08052DA8
push {r4, r5, r6, r7, lr}
ldr r1, _08052DF8 @ =gUnk_0811E214
ldr r1, _08052DF8 @ =gAreaRoomHeaders
ldr r0, _08052DFC @ =gRoomControls
ldrb r0, [r0, #4]
lsls r0, r0, #2
@@ -911,7 +911,7 @@ _08052DE8:
str r0, [r1]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08052DF8: .4byte gUnk_0811E214
_08052DF8: .4byte gAreaRoomHeaders
_08052DFC: .4byte gRoomControls
_08052E00: .4byte gUnk_02033ACC
_08052E04: .4byte 0x0000FFFF
@@ -930,7 +930,7 @@ sub_08052E10: @ 0x08052E10
strh r0, [r5]
ldrh r0, [r1, #6]
strh r0, [r5, #2]
ldr r4, _08052E74 @ =gUnk_0810246C
ldr r4, _08052E74 @ =gAreaTilesets
lsls r2, r2, #2
adds r4, r2, r4
ldrh r0, [r1, #8]
@@ -946,7 +946,7 @@ sub_08052E10: @ 0x08052E10
adds r0, r3, r0
ldr r0, [r0]
str r0, [r5, #0xc]
ldr r0, _08052E7C @ =gUnk_0810309C
ldr r0, _08052E7C @ =gAreaMetatiles
adds r0, r2, r0
ldr r0, [r0]
str r0, [r5, #0x10]
@@ -971,9 +971,9 @@ sub_08052E10: @ 0x08052E10
_08052E70:
pop {r4, r5, pc}
.align 2, 0
_08052E74: .4byte gUnk_0810246C
_08052E74: .4byte gAreaTilesets
_08052E78: .4byte gUnk_08107988
_08052E7C: .4byte gUnk_0810309C
_08052E7C: .4byte gAreaMetatiles
_08052E80: .4byte gUnk_080B755C
_08052E84: .4byte gUnk_0813A7F0
_08052E88: .4byte gUnk_080D50FC
@@ -1180,7 +1180,7 @@ sub_08052FF4: @ 0x08052FF4
movs r1, #0x20
bl _DmaZero
str r5, [r5, #0x20]
ldr r0, _08053078 @ =gUnk_0811E214
ldr r0, _08053078 @ =gAreaRoomHeaders
lsls r6, r6, #2
adds r0, r6, r0
lsls r2, r4, #2
@@ -1196,7 +1196,7 @@ sub_08052FF4: @ 0x08052FF4
strh r1, [r5]
ldrh r1, [r0, #6]
strh r1, [r5, #2]
ldr r1, _0805307C @ =gUnk_0810246C
ldr r1, _0805307C @ =gAreaTilesets
adds r1, r6, r1
ldrh r0, [r0, #8]
ldr r1, [r1]
@@ -1210,7 +1210,7 @@ sub_08052FF4: @ 0x08052FF4
adds r2, r2, r0
ldr r0, [r2]
str r0, [r5, #0xc]
ldr r0, _08053084 @ =gUnk_0810309C
ldr r0, _08053084 @ =gAreaMetatiles
adds r0, r6, r0
ldr r0, [r0]
str r0, [r5, #0x10]
@@ -1223,10 +1223,10 @@ sub_08052FF4: @ 0x08052FF4
_0805306C: .4byte gRoomControls
_08053070: .4byte gScreen
_08053074: .4byte gUnk_020342CC
_08053078: .4byte gUnk_0811E214
_0805307C: .4byte gUnk_0810246C
_08053078: .4byte gAreaRoomHeaders
_0805307C: .4byte gAreaTilesets
_08053080: .4byte gUnk_08107988
_08053084: .4byte gUnk_0810309C
_08053084: .4byte gAreaMetatiles
_08053088: .4byte gUnk_080B755C
thumb_func_start sub_0805308C
@@ -1533,7 +1533,7 @@ _080532E0:
thumb_func_start sub_080532E4
sub_080532E4: @ 0x080532E4
ldr r0, _08053318 @ =gUnk_0811E214
ldr r0, _08053318 @ =gAreaRoomHeaders
movs r1, #0xb0
lsls r1, r1, #1
adds r0, r0, r1
@@ -1560,7 +1560,7 @@ sub_080532E4: @ 0x080532E4
strh r0, [r1, #0x1e]
bx lr
.align 2, 0
_08053318: .4byte gUnk_0811E214
_08053318: .4byte gAreaRoomHeaders
_0805331C: .4byte gScreenTransition
thumb_func_start sub_08053320
+9 -9
View File
@@ -286,9 +286,9 @@ sub_0807BBE4: @ 0x0807BBE4
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r0, _0807BC28 @ =gUnk_0202AEB4
ldr r0, _0807BC28 @ =gMetatileTypesBottom
mov sl, r0
ldr r0, _0807BC2C @ =gUnk_02010654
ldr r0, _0807BC2C @ =gMetatileTypesTop
mov sb, r0
ldr r5, _0807BC30 @ =0xFFFFB000
add r5, sl
@@ -316,8 +316,8 @@ _0807BC14:
add r0, ip
b _0807BC4C
.align 2, 0
_0807BC28: .4byte gUnk_0202AEB4
_0807BC2C: .4byte gUnk_02010654
_0807BC28: .4byte gMetatileTypesBottom
_0807BC2C: .4byte gMetatileTypesTop
_0807BC30: .4byte 0xFFFFB000
_0807BC34: .4byte 0xFFFFD000
_0807BC38: .4byte 0x00003FFF
@@ -815,7 +815,7 @@ sub_0807BFD0: @ 0x0807BFD0
bl sub_0801B170
bl sub_0807BFA8
ldr r7, _0807C0B8 @ =0x0000FFFF
ldr r6, _0807C0BC @ =gUnk_0202AEB4
ldr r6, _0807C0BC @ =gMetatileTypesBottom
movs r0, #0x80
lsls r0, r0, #5
mov r8, r0
@@ -825,7 +825,7 @@ sub_0807BFD0: @ 0x0807BFD0
bl _DmaFill16
movs r5, #0
strh r5, [r6]
ldr r4, _0807C0C0 @ =gUnk_02010654
ldr r4, _0807C0C0 @ =gMetatileTypesTop
adds r0, r7, #0
adds r1, r4, #0
mov r2, r8
@@ -894,7 +894,7 @@ _0807C078:
ble _0807C066
movs r2, #0x80
lsls r2, r2, #5
ldr r5, _0807C0C0 @ =gUnk_02010654
ldr r5, _0807C0C0 @ =gMetatileTypesTop
adds r6, r5, r2
ldr r4, _0807C0B8 @ =0x0000FFFF
adds r0, r4, #0
@@ -922,8 +922,8 @@ _0807C0A8:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807C0B8: .4byte 0x0000FFFF
_0807C0BC: .4byte gUnk_0202AEB4
_0807C0C0: .4byte gUnk_02010654
_0807C0BC: .4byte gMetatileTypesBottom
_0807C0C0: .4byte gMetatileTypesTop
_0807C0C4: .4byte gRoomControls
_0807C0C8: .4byte gArea
_0807C0CC: .4byte 0x0000085C
+4 -4
View File
@@ -2632,7 +2632,7 @@ _080A6A26:
bne _080A6A30
movs r2, #9
_080A6A30:
ldr r1, _080A6A40 @ =gUnk_0811E214
ldr r1, _080A6A40 @ =gAreaRoomHeaders
lsls r0, r2, #2
adds r0, r0, r1
ldr r0, [r0]
@@ -2640,7 +2640,7 @@ _080A6A30:
subs r6, r6, r0
b _080A6A48
.align 2, 0
_080A6A40: .4byte gUnk_0811E214
_080A6A40: .4byte gAreaRoomHeaders
_080A6A44:
ldr r0, _080A6A78 @ =0xFFFFFEF8
adds r7, r7, r0
@@ -3233,7 +3233,7 @@ sub_080A6EE0: @ 0x080A6EE0
adds r1, r1, r0
ldrh r3, [r1, #6]
ldrh r4, [r1, #8]
ldr r0, _080A6F38 @ =gUnk_0811E214
ldr r0, _080A6F38 @ =gAreaRoomHeaders
ldrb r2, [r1, #0xb]
lsls r2, r2, #2
adds r2, r2, r0
@@ -3267,7 +3267,7 @@ sub_080A6EE0: @ 0x080A6EE0
pop {r4, r5, r6, pc}
.align 2, 0
_080A6F34: .4byte gUnk_08128024
_080A6F38: .4byte gUnk_0811E214
_080A6F38: .4byte gAreaRoomHeaders
_080A6F3C: .4byte gUnk_03001010
thumb_func_start sub_080A6F40
-283
View File
@@ -1,283 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start FireballGuy
FireballGuy: @ 0x08045394
push {lr}
ldr r1, _080453A0 @ =gUnk_080D17E8
bl EnemyFunctionHandler
pop {pc}
.align 2, 0
_080453A0: .4byte gUnk_080D17E8
thumb_func_start sub_080453A4
sub_080453A4: @ 0x080453A4
push {lr}
ldr r2, _080453B8 @ =gUnk_080D1800
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080453B8: .4byte gUnk_080D1800
thumb_func_start sub_080453BC
sub_080453BC: @ 0x080453BC
push {lr}
adds r2, r0, #0
adds r0, #0x45
ldrb r1, [r0]
cmp r1, #0
beq _080453D6
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, r1
beq _080453D6
movs r0, #2
strb r0, [r2, #0xc]
b _080453DE
_080453D6:
ldr r1, _080453E0 @ =gUnk_080D17E8
adds r0, r2, #0
bl sub_0804AA30
_080453DE:
pop {pc}
.align 2, 0
_080453E0: .4byte gUnk_080D17E8
thumb_func_start nullsub_172
nullsub_172: @ 0x080453E4
bx lr
.align 2, 0
thumb_func_start sub_080453E8
sub_080453E8: @ 0x080453E8
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
adds r0, #0x3f
strb r1, [r0]
adds r2, r4, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_0804A720
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08045524
pop {r4, pc}
thumb_func_start sub_08045430
sub_08045430: @ 0x08045430
push {r4, lr}
adds r4, r0, #0
bl sub_080AEFE0
adds r0, r4, #0
bl GetNextFrame
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08045452
adds r0, r4, #0
bl sub_08045524
_08045452:
pop {r4, pc}
thumb_func_start sub_08045454
sub_08045454: @ 0x08045454
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x10
mov r8, r0
ldr r1, _08045518 @ =gUnk_080D180C
ldrb r0, [r0, #0xa]
adds r0, r0, r1
ldrb r7, [r0]
movs r0, #0x48
subs r0, r0, r7
ldr r1, _0804551C @ =gEntCount
ldrb r1, [r1]
cmp r0, r1
ble _0804550C
cmp r7, #0
beq _0804548E
mov r4, sp
adds r5, r7, #0
_0804547C:
mov r0, r8
ldrb r1, [r0, #0xa]
movs r0, #0x59
bl CreateEnemy
stm r4!, {r0}
subs r5, #1
cmp r5, #0
bne _0804547C
_0804548E:
ldr r2, _08045520 @ =gUnk_080D1810
mov sb, r2
movs r5, #0
cmp r5, r7
bge _080454EE
_08045498:
lsls r0, r5, #2
add r0, sp
ldr r6, [r0]
adds r4, r5, #1
adds r0, r4, #0
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x54]
adds r0, r5, r7
subs r0, #1
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x50]
movs r1, #0
movs r0, #1
strb r0, [r6, #0xb]
strh r1, [r6, #0x36]
adds r1, r6, #0
adds r1, #0x3d
movs r0, #0xf0
strb r0, [r1]
mov r0, sb
movs r2, #0
ldrsb r2, [r0, r2]
movs r3, #1
ldrsb r3, [r0, r3]
mov r0, r8
adds r1, r6, #0
bl sub_08045178
movs r2, #2
add sb, r2
adds r5, r4, #0
cmp r5, r7
blt _08045498
_080454EE:
mov r0, r8
movs r1, #2
movs r2, #0
bl CreateFx
adds r6, r0, #0
cmp r6, #0
beq _08045506
mov r0, r8
adds r1, r6, #0
bl CopyPosition
_08045506:
mov r0, r8
bl DeleteEntity
_0804550C:
add sp, #0x10
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08045518: .4byte gUnk_080D180C
_0804551C: .4byte gEntCount
_08045520: .4byte gUnk_080D1810
thumb_func_start sub_08045524
sub_08045524: @ 0x08045524
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xe0
lsls r0, r0, #9
str r0, [r5, #0x20]
adds r0, r5, #0
movs r1, #1
movs r2, #8
bl sub_0804A024
adds r4, r0, #0
cmp r4, #0xff
beq _08045556
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
bne _08045556
bl Random
movs r1, #3
ands r0, r1
strb r0, [r5, #0xe]
b _08045596
_08045556:
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _08045562
subs r0, #1
strb r0, [r5, #0xe]
b _080455A8
_08045562:
bl Random
movs r1, #3
ands r0, r1
strb r0, [r5, #0xe]
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
bne _0804559E
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
beq _0804559E
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
movs r1, #8
ands r0, r1
adds r0, #0xfc
adds r4, r4, r0
_08045596:
movs r0, #0x18
ands r4, r0
strb r4, [r5, #0x15]
b _080455A8
_0804559E:
bl Random
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
_080455A8:
pop {r4, r5, pc}
.align 2, 0
+3 -3
View File
@@ -505,7 +505,7 @@ sub_08046518: @ 0x08046518
mov r5, r8
push {r5, r6, r7}
sub sp, #8
ldr r1, _080465AC @ =gUnk_02010654
ldr r1, _080465AC @ =gMetatileTypesTop
ldr r2, _080465B0 @ =0xFFFFBCB0
adds r0, r1, r2
ldr r3, _080465B4 @ =0xFFFFECB0
@@ -541,7 +541,7 @@ _08046560:
strh r0, [r4]
ldrh r0, [r3]
lsls r0, r0, #1
ldr r7, _080465AC @ =gUnk_02010654
ldr r7, _080465AC @ =gMetatileTypesTop
adds r0, r0, r7
ldrh r1, [r0]
ldr r0, [sp, #4]
@@ -575,7 +575,7 @@ _08046560:
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080465AC: .4byte gUnk_02010654
_080465AC: .4byte gMetatileTypesTop
_080465B0: .4byte 0xFFFFBCB0
_080465B4: .4byte 0xFFFFECB0
_080465B8: .4byte 0x00006658
+1
View File
@@ -1,3 +1,4 @@
.include "asm/macros/asm.inc"
.include "asm/macros/function.inc"
.include "asm/macros/m4a.inc"
.include "asm/macros/map.inc"
+24
View File
@@ -0,0 +1,24 @@
.ifndef GUARD_ASM_MACROS_MAP_INC
.set GUARD_ASM_MACROS_MAP_INC, 1
.macro room_header map_x, map_y, pixel_width, pixel_height, tileset_id
.2byte (\map_x) << 4
.2byte (\map_y) << 4
.2byte \pixel_width
.2byte \pixel_height
.2byte \tileset_id
.endm
.macro tileset_tiles src_offset, dest, size, compressed, terminator=0
.4byte (!(\terminator) << 0x1F) | (\src_offset)
.4byte \dest
.4byte (\compressed << 0x1F) | (\size)
.endm
.macro tileset_palette_set id, terminator=0
.4byte (!(\terminator) << 0x1F) | (\id)
.4byte 0x0
.4byte 0x0
.endm
.endif @ GUARD_ASM_MACROS_MAP_INC
-221
View File
@@ -1,221 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start MiniSlime
MiniSlime: @ 0x08045200
push {r4, lr}
adds r4, r0, #0
ldr r1, _0804521C @ =gUnk_080D17C0
bl EnemyFunctionHandler
movs r3, #8
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
pop {r4, pc}
.align 2, 0
_0804521C: .4byte gUnk_080D17C0
thumb_func_start sub_08045220
sub_08045220: @ 0x08045220
push {lr}
ldr r2, _08045234 @ =gUnk_080D17D8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08045234: .4byte gUnk_080D17D8
thumb_func_start sub_08045238
sub_08045238: @ 0x08045238
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _0804524C
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_0804524C:
ldr r1, _08045258 @ =gUnk_080D17C0
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08045258: .4byte gUnk_080D17C0
thumb_func_start sub_0804525C
sub_0804525C: @ 0x0804525C
push {r4, lr}
adds r4, r0, #0
ldr r3, [r4, #0x50]
cmp r4, r3
beq _08045298
cmp r3, #0
beq _08045298
adds r2, r4, #0
adds r2, #0x6c
ldrb r1, [r2]
movs r0, #0x7f
ands r0, r1
strb r0, [r2]
ldr r1, [r4, #0x50]
ldr r0, [r4, #0x54]
str r0, [r1, #0x54]
ldr r1, [r4, #0x54]
ldr r0, [r4, #0x50]
str r0, [r1, #0x50]
adds r0, r4, #0
adds r0, #0x6d
ldrb r1, [r0]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _08045298
adds r0, r4, #0
adds r1, r3, #0
bl sub_08058800
_08045298:
adds r0, r4, #0
bl sub_0804A7D4
pop {r4, pc}
thumb_func_start nullsub_22
nullsub_22: @ 0x080452A0
bx lr
.align 2, 0
thumb_func_start sub_080452A4
sub_080452A4: @ 0x080452A4
push {r4, r5, lr}
adds r4, r0, #0
movs r2, #1
movs r5, #1
strb r5, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_0804A720
adds r0, r4, #0
movs r1, #6
bl InitializeAnimation
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _080452DC
movs r0, #2
strb r0, [r4, #0xc]
strb r5, [r4, #0xe]
b _080452E2
_080452DC:
adds r0, r4, #0
bl sub_080452E4
_080452E2:
pop {r4, r5, pc}
thumb_func_start sub_080452E4
sub_080452E4: @ 0x080452E4
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
bl Random
movs r1, #0x1f
ands r0, r1
adds r0, #1
strb r0, [r4, #0xe]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080452FC
sub_080452FC: @ 0x080452FC
push {r4, r5, lr}
adds r5, r0, #0
bl GetNextFrame
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08045370
movs r4, #3
strb r4, [r5, #0xc]
movs r0, #1
strb r0, [r5, #0xe]
movs r1, #0x24
ldrsh r0, [r5, r1]
cmp r0, #0
ble _08045330
movs r0, #0x80
lsls r0, r0, #5
movs r2, #0x24
ldrsh r1, [r5, r2]
bl sub_0806FA04
lsrs r0, r0, #8
strb r0, [r5, #0xe]
_08045330:
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
bne _08045360
bl Random
ands r0, r4
cmp r0, #0
beq _08045360
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
movs r1, #8
ands r0, r1
adds r0, #0xfc
adds r4, r4, r0
movs r0, #0x18
ands r4, r0
strb r4, [r5, #0x15]
b _08045370
_08045360:
bl Random
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08045374
_08045370:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08045374
sub_08045374: @ 0x08045374
push {r4, lr}
adds r4, r0, #0
bl sub_080AEF88
adds r0, r4, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08045392
movs r0, #1
strb r0, [r4, #0xc]
_08045392:
pop {r4, pc}
-109
View File
@@ -1,109 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x10
mov r8, r0
ldr r1, _0804516C @ =gUnk_080D16D0
ldrb r0, [r0, #0xa]
adds r0, r0, r1
ldrb r7, [r0]
movs r0, #0x48
subs r0, r0, r7
ldr r1, _08045170 @ =gEntCount
ldrb r1, [r1]
cmp r0, r1
ble _08045160
cmp r7, #0
beq _080450E2
mov r4, sp
adds r5, r7, #0
_080450D0:
mov r0, r8
ldrb r1, [r0, #0xa]
movs r0, #0x57
bl CreateEnemy
stm r4!, {r0}
subs r5, #1
cmp r5, #0
bne _080450D0
_080450E2:
ldr r2, _08045174 @ =gUnk_080D16D4
mov sb, r2
movs r5, #0
cmp r5, r7
bge _08045142
_080450EC:
lsls r0, r5, #2
add r0, sp
ldr r6, [r0]
adds r4, r5, #1
adds r0, r4, #0
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x54]
adds r0, r5, r7
subs r0, #1
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x50]
movs r1, #0
movs r0, #1
strb r0, [r6, #0xb]
strh r1, [r6, #0x36]
adds r1, r6, #0
adds r1, #0x3d
movs r0, #0xf0
strb r0, [r1]
mov r0, sb
movs r2, #0
ldrsb r2, [r0, r2]
movs r3, #1
ldrsb r3, [r0, r3]
mov r0, r8
adds r1, r6, #0
bl sub_08045178
movs r2, #2
add sb, r2
adds r5, r4, #0
cmp r5, r7
blt _080450EC
_08045142:
mov r0, r8
movs r1, #2
movs r2, #0
bl CreateFx
adds r6, r0, #0
cmp r6, #0
beq _0804515A
mov r0, r8
adds r1, r6, #0
bl CopyPosition
_0804515A:
mov r0, r8
bl DeleteEntity
_08045160:
add sp, #0x10
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804516C: .4byte gUnk_080D16D0
_08045170: .4byte gEntCount
_08045174: .4byte gUnk_080D16D4
.syntax divided
-146
View File
@@ -6,152 +6,6 @@
.text
thumb_func_start sub_0806B41C
sub_0806B41C: @ 0x0806B41C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #1
beq _0806B470
cmp r0, #1
bgt _0806B430
cmp r0, #0
beq _0806B436
b _0806B4EC
_0806B430:
cmp r0, #2
beq _0806B4DE
b _0806B4EC
_0806B436:
ldr r1, _0806B46C @ =gUnk_08112E1C
adds r0, r4, #0
bl LoadExtraSpriteData
cmp r0, #0
beq _0806B4EC
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xb]
cmp r0, #2
bne _0806B462
adds r0, r4, #0
movs r1, #0x25
movs r2, #0
bl CreateFx
_0806B462:
adds r0, r4, #0
bl sub_0807DD50
b _0806B4EC
.align 2, 0
_0806B46C: .4byte gUnk_08112E1C
_0806B470:
adds r2, r4, #0
adds r2, #0x39
movs r1, #0
ldrsb r1, [r2, r1]
cmp r1, #2
bne _0806B4D4
movs r0, #0
strb r1, [r4, #0xc]
strb r0, [r2]
ldr r1, _0806B4C8 @ =gPlayerEntity
adds r0, r4, #0
bl GetFacingDirection
bl sub_0806F5A4
adds r1, r0, #0
adds r1, #4
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08002632
ldr r1, _0806B4CC @ =gUnk_08001A7C
lsls r0, r0, #2
adds r0, r0, r1
ldr r3, [r0]
adds r0, r4, #0
adds r0, #0x68
ldrb r0, [r0]
cmp r0, #0x21
bne _0806B4B2
adds r3, #6
_0806B4B2:
ldrh r1, [r3]
ldrh r2, [r3, #2]
ldrh r3, [r3, #4]
adds r0, r4, #0
bl sub_0801DFB4
ldr r0, _0806B4D0 @ =gPlayerState
adds r0, #0x8b
movs r1, #3
strb r1, [r0]
b _0806B4EC
.align 2, 0
_0806B4C8: .4byte gPlayerEntity
_0806B4CC: .4byte gUnk_08001A7C
_0806B4D0: .4byte gPlayerState
_0806B4D4:
adds r0, r4, #0
movs r1, #0
bl sub_0807DD94
b _0806B4EC
_0806B4DE:
adds r0, r4, #0
bl UpdateFuseInteraction
cmp r0, #0
beq _0806B4EC
movs r0, #1
strb r0, [r4, #0xc]
_0806B4EC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0806B4F0
sub_0806B4F0: @ 0x0806B4F0
push {lr}
ldrb r1, [r0, #0xb]
lsls r1, r1, #3
ldr r2, _0806B500 @ =gUnk_08112E2C
adds r1, r1, r2
bl ShowNPCDialogue
pop {pc}
.align 2, 0
_0806B500: .4byte gUnk_08112E2C
thumb_func_start sub_0806B504
sub_0806B504: @ 0x0806B504
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #1
movs r0, #0x21
bl CheckKinstoneFused
cmp r0, #0
beq _0806B518
movs r4, #3
b _0806B52A
_0806B518:
movs r0, #0x86
bl CheckLocalFlag
cmp r0, #0
bne _0806B52A
movs r4, #0
movs r0, #0x86
bl SetLocalFlag
_0806B52A:
ldr r0, _0806B53C @ =gUnk_08112E54
lsls r1, r4, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r5, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B53C: .4byte gUnk_08112E54
thumb_func_start sub_0806B540
sub_0806B540: @ 0x0806B540
push {r4, lr}
-81
View File
@@ -1,81 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08045178
sub_08045178: @ 0x08045178
push {r4, r5, r6, lr}
adds r4, r1, #0
adds r5, r2, #0
adds r6, r3, #0
cmp r4, #0
beq _080451C6
bl sub_0804A4E4
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
bl sub_080002CC
cmp r0, #0
bne _080451C6
movs r1, #0x2e
ldrsh r0, [r4, r1]
adds r2, r0, r5
cmp r2, #0
blt _080451AE
ldr r0, _080451C8 @ =gRoomControls
ldrh r1, [r0, #6]
ldrh r0, [r0, #0x1e]
adds r1, r1, r0
cmp r2, r1
bge _080451AE
strh r2, [r4, #0x2e]
_080451AE:
movs r1, #0x32
ldrsh r0, [r4, r1]
adds r2, r0, r6
cmp r2, #0
blt _080451C6
ldr r0, _080451C8 @ =gRoomControls
ldrh r1, [r0, #8]
ldrh r0, [r0, #0x20]
adds r1, r1, r0
cmp r2, r1
bge _080451C6
strh r2, [r4, #0x32]
_080451C6:
pop {r4, r5, r6, pc}
.align 2, 0
_080451C8: .4byte gRoomControls
thumb_func_start sub_080451CC
sub_080451CC: @ 0x080451CC
ldrb r3, [r0, #0x10]
movs r2, #0xfe
ands r2, r3
strb r2, [r1, #0x10]
ldr r2, [r0, #0x2c]
str r2, [r1, #0x2c]
ldr r2, [r0, #0x30]
str r2, [r1, #0x30]
ldr r2, [r0, #0x34]
str r2, [r1, #0x34]
adds r0, #0x68
adds r1, #0x68
ldrb r2, [r0, #4]
strb r2, [r1, #4]
ldrb r2, [r0, #5]
strb r2, [r1, #5]
ldrb r2, [r0, #6]
strb r2, [r1, #6]
ldrb r2, [r0, #7]
strb r2, [r1, #7]
ldrh r2, [r0, #8]
strh r2, [r1, #8]
ldrh r0, [r0, #0xa]
strh r0, [r1, #0xa]
bx lr
.align 2, 0
+36
View File
@@ -0,0 +1,36 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_080451CC
sub_080451CC: @ 0x080451CC
ldrb r3, [r0, #0x10]
movs r2, #0xfe
ands r2, r3
strb r2, [r1, #0x10]
ldr r2, [r0, #0x2c]
str r2, [r1, #0x2c]
ldr r2, [r0, #0x30]
str r2, [r1, #0x30]
ldr r2, [r0, #0x34]
str r2, [r1, #0x34]
adds r0, #0x68
adds r1, #0x68
ldrb r2, [r0, #4]
strb r2, [r1, #4]
ldrb r2, [r0, #5]
strb r2, [r1, #5]
ldrb r2, [r0, #6]
strb r2, [r1, #6]
ldrb r2, [r0, #7]
strb r2, [r1, #7]
ldrh r2, [r0, #8]
strh r2, [r1, #8]
ldrh r0, [r0, #0xa]
strh r0, [r1, #0xa]
bx lr
.align 2, 0
-740
View File
@@ -1,740 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0806AC3C
sub_0806AC3C: @ 0x0806AC3C
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #3
bhi _0806ACBA
ldr r4, _0806AC6C @ =gPlayerEntity
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x18
movs r3, #0x18
bl sub_080041A0
cmp r0, #0
beq _0806AC70
adds r0, r5, #0
adds r1, r4, #0
bl GetFacingDirection
adds r2, r0, #0
movs r0, #0x1e
ands r2, r0
b _0806AC74
.align 2, 0
_0806AC6C: .4byte gPlayerEntity
_0806AC70:
ldrb r0, [r5, #0x14]
lsls r2, r0, #2
_0806AC74:
adds r0, r5, #0
adds r0, #0x69
ldrb r3, [r0]
adds r4, r0, #0
cmp r2, r3
beq _0806AC9A
subs r0, r2, r3
movs r1, #0x1f
ands r0, r1
cmp r0, #0xf
bgt _0806AC8E
subs r0, r3, #1
b _0806AC90
_0806AC8E:
adds r0, r3, #1
_0806AC90:
strb r0, [r4]
ldrb r1, [r4]
movs r0, #0x1f
ands r0, r1
strb r0, [r4]
_0806AC9A:
ldrb r1, [r4]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _0806ACBA
ldrb r0, [r4]
bl sub_0806F5B0
strb r0, [r5, #0x14]
ldrb r1, [r5, #0x14]
lsrs r1, r1, #1
movs r0, #2
eors r1, r0
adds r0, r5, #0
bl InitializeAnimation
_0806ACBA:
adds r0, r5, #0
bl UpdateAnimationSingleFrame
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0806ACC4
sub_0806ACC4: @ 0x0806ACC4
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xc]
cmp r5, #1
beq _0806AD28
cmp r5, #1
bgt _0806ACD8
cmp r5, #0
beq _0806ACE4
b _0806ADEA
_0806ACD8:
cmp r5, #2
beq _0806ADB8
cmp r5, #3
bne _0806ACE2
b _0806ADDC
_0806ACE2:
b _0806ADEA
_0806ACE4:
ldrb r1, [r4, #0xa]
lsls r1, r1, #4
ldr r0, _0806AD24 @ =gUnk_08112674
adds r1, r1, r0
adds r0, r4, #0
bl LoadExtraSpriteData
cmp r0, #0
bne _0806ACF8
b _0806ADFA
_0806ACF8:
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x6a
strb r0, [r1]
lsls r0, r0, #1
strb r0, [r4, #0x14]
strb r5, [r4, #0xe]
adds r0, r4, #0
bl sub_0801E99C
adds r1, r4, #0
adds r1, #0x68
strb r0, [r1]
adds r0, r4, #0
bl sub_0807DD50
ldrb r1, [r4, #0x14]
lsrs r1, r1, #1
adds r1, #8
b _0806ADCE
.align 2, 0
_0806AD24: .4byte gUnk_08112674
_0806AD28:
adds r5, r4, #0
adds r5, #0x39
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, #2
bne _0806AD44
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r5]
adds r0, r4, #0
bl sub_0806F118
b _0806ADEA
_0806AD44:
adds r0, r4, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r4, #0
bl sub_0806AEA8
ldrb r0, [r4, #0xb]
cmp r0, #0xa
bne _0806AD8A
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, #0
beq _0806AD8A
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r5]
ldr r1, _0806ADAC @ =gPlayerEntity
adds r0, r4, #0
bl GetFacingDirection
bl sub_0806F5A4
adds r1, r0, #0
adds r1, #8
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
adds r0, r4, #0
bl sub_0806AFE8
_0806AD8A:
ldrb r0, [r4, #0xa]
cmp r0, #1
bne _0806ADEA
ldr r0, _0806ADAC @ =gPlayerEntity
ldrb r3, [r0, #0x14]
lsrs r3, r3, #1
ldr r0, _0806ADB0 @ =gUnk_081126E4
adds r0, r3, r0
ldrb r2, [r0]
lsls r3, r3, #2
ldr r0, _0806ADB4 @ =gUnk_081126D4
adds r3, r3, r0
adds r0, r4, #0
movs r1, #1
bl sub_08078850
b _0806ADEA
.align 2, 0
_0806ADAC: .4byte gPlayerEntity
_0806ADB0: .4byte gUnk_081126E4
_0806ADB4: .4byte gUnk_081126D4
_0806ADB8:
ldr r0, _0806ADD8 @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _0806ADEA
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x14]
lsrs r1, r1, #1
adds r1, #4
_0806ADCE:
adds r0, r4, #0
bl InitializeAnimation
b _0806ADEA
.align 2, 0
_0806ADD8: .4byte gTextBox
_0806ADDC:
adds r0, r4, #0
bl UpdateFuseInteraction
cmp r0, #0
beq _0806ADEA
movs r0, #1
strb r0, [r4, #0xc]
_0806ADEA:
adds r0, r4, #0
adds r0, #0x59
ldrb r0, [r0]
cmp r0, #0xff
beq _0806ADFA
adds r0, r4, #0
bl GetNextFrame
_0806ADFA:
pop {r4, r5, pc}
thumb_func_start sub_0806ADFC
sub_0806ADFC: @ 0x0806ADFC
push {lr}
adds r1, r0, #0
adds r1, #0x68
ldrb r1, [r1]
bl sub_08078784
pop {pc}
.align 2, 0
thumb_func_start TownMinish_Head
TownMinish_Head: @ 0x0806AE0C
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _0806AE62
adds r0, r4, #0
adds r0, #0x69
ldrb r0, [r0]
lsrs r2, r0, #1
adds r0, r4, #0
adds r0, #0x5b
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0806AE3C
adds r2, #0x1c
adds r0, r4, #0
movs r1, #0
bl SetExtraSpriteFrame
b _0806AE46
_0806AE3C:
adds r0, r4, #0
movs r1, #0
movs r2, #0xff
bl SetExtraSpriteFrame
_0806AE46:
ldrb r2, [r4, #0x1e]
adds r0, r4, #0
movs r1, #1
bl SetExtraSpriteFrame
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl SetSpriteSubEntryOffsetData1
adds r0, r4, #0
bl sub_0807000C
b _0806AEA4
_0806AE62:
adds r0, r4, #0
adds r0, #0x5a
ldrb r2, [r0]
cmp r2, #0xff
beq _0806AE72
movs r0, #0x81
rsbs r0, r0, #0
ands r2, r0
_0806AE72:
adds r0, r4, #0
adds r0, #0x5b
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0806AE82
movs r2, #0xff
_0806AE82:
adds r0, r4, #0
movs r1, #0
bl SetExtraSpriteFrame
ldrb r2, [r4, #0x1e]
adds r0, r4, #0
movs r1, #1
bl SetExtraSpriteFrame
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl SetSpriteSubEntryOffsetData1
adds r0, r4, #0
bl sub_0807000C
_0806AEA4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0806AEA8
sub_0806AEA8: @ 0x0806AEA8
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x82
ldrh r5, [r6]
ldr r0, _0806AED4 @ =0x0000FFDF
ands r0, r5
strh r0, [r6]
movs r0, #0x20
ands r0, r5
cmp r0, #0
beq _0806AECA
movs r1, #0x80
lsls r1, r1, #7
adds r0, r4, #0
bl sub_08003FC4
_0806AECA:
adds r0, r4, #0
bl sub_0807DDE4
strh r5, [r6]
pop {r4, r5, r6, pc}
.align 2, 0
_0806AED4: .4byte 0x0000FFDF
thumb_func_start sub_0806AED8
sub_0806AED8: @ 0x0806AED8
push {lr}
movs r1, #0
strb r1, [r0, #0xe]
bl sub_0806AEE4
pop {pc}
thumb_func_start sub_0806AEE4
sub_0806AEE4: @ 0x0806AEE4
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
adds r7, r0, #0
cmp r7, #0
beq _0806AEF6
subs r0, #1
strb r0, [r4, #0xe]
b _0806AF5A
_0806AEF6:
movs r0, #2
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0x20
movs r2, #0x20
bl sub_0806EDD8
adds r3, r0, #0
cmp r3, #0
bge _0806AF16
adds r0, r4, #0
adds r0, #0x6a
ldrb r1, [r0]
lsls r0, r1, #1
strb r0, [r4, #0x14]
lsls r3, r1, #3
_0806AF16:
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #5
asrs r1, r3, #1
lsls r1, r1, #1
ldr r2, _0806AF5C @ =gUnk_081125F4
adds r1, r1, r2
adds r0, r0, r1
ldrb r6, [r0]
ldrb r5, [r0, #1]
movs r0, #0x80
ands r0, r5
cmp r0, #0
beq _0806AF3A
adds r0, r3, #0
bl sub_0806F5B0
strb r0, [r4, #0x14]
_0806AF3A:
movs r0, #0x7f
ands r5, r0
adds r0, r4, #0
adds r0, #0x5a
strb r6, [r0]
strb r5, [r4, #0x1e]
adds r1, r4, #0
adds r1, #0x5b
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x58
strb r7, [r0]
subs r1, #2
movs r0, #0xff
strb r0, [r1]
_0806AF5A:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0806AF5C: .4byte gUnk_081125F4
thumb_func_start sub_0806AF60
sub_0806AF60: @ 0x0806AF60
push {lr}
ldrb r2, [r0, #0x14]
lsrs r2, r2, #1
ldr r1, [r1, #4]
adds r1, r1, r2
bl InitializeAnimation
pop {pc}
thumb_func_start sub_0806AF70
sub_0806AF70: @ 0x0806AF70
movs r1, #0x90
lsls r1, r1, #0xa
str r1, [r0, #0x20]
bx lr
thumb_func_start sub_0806AF78
sub_0806AF78: @ 0x0806AF78
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
movs r1, #0xc0
lsls r1, r1, #5
bl sub_08003FC4
ldr r0, [r4, #0x34]
cmp r0, #0
blt _0806AF9E
ldr r0, [r4, #0x20]
cmp r0, #0
bgt _0806AF9E
movs r0, #0
str r0, [r4, #0x34]
adds r0, r4, #0
adds r1, r5, #0
bl sub_0806AF70
_0806AF9E:
pop {r4, r5, pc}
thumb_func_start sub_0806AFA0
sub_0806AFA0: @ 0x0806AFA0
push {r4, lr}
adds r4, r0, #0
bl sub_0806ED78
cmp r0, #0
beq _0806AFBA
movs r0, #0x24
ldrsh r1, [r4, r0]
rsbs r1, r1, #0
ldrb r2, [r4, #0x15]
adds r0, r4, #0
bl sub_0806F62C
_0806AFBA:
pop {r4, pc}
thumb_func_start sub_0806AFBC
sub_0806AFBC: @ 0x0806AFBC
push {lr}
adds r3, r0, #0
ldr r0, _0806AFE0 @ =gUnk_02002A40
ldrb r0, [r0, #8]
subs r0, #2
cmp r0, #0
bge _0806AFCC
movs r0, #0
_0806AFCC:
ldrb r1, [r3, #0xb]
lsls r1, r1, #6
lsls r0, r0, #3
ldr r2, _0806AFE4 @ =gUnk_081126F0
adds r0, r0, r2
adds r1, r1, r0
adds r0, r3, #0
bl ShowNPCDialogue
pop {pc}
.align 2, 0
_0806AFE0: .4byte gUnk_02002A40
_0806AFE4: .4byte gUnk_081126F0
thumb_func_start sub_0806AFE8
sub_0806AFE8: @ 0x0806AFE8
push {lr}
movs r2, #0
str r2, [r1, #0x14]
ldr r3, _0806B000 @ =gUnk_08112BF0
ldrb r2, [r0, #0xb]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
pop {pc}
.align 2, 0
_0806B000: .4byte gUnk_08112BF0
thumb_func_start sub_0806B004
sub_0806B004: @ 0x0806B004
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r1, #0
movs r4, #0
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
beq _0806B050
movs r0, #0x73
bl CheckLocalFlag
cmp r0, #0
beq _0806B048
movs r0, #0x46
bl GetInventoryValue
cmp r0, #0
bne _0806B044
movs r4, #3
movs r0, #0x78
bl CheckLocalFlag
cmp r0, #0
bne _0806B050
movs r4, #2
movs r0, #1
str r0, [r5, #0x14]
movs r0, #0x78
bl SetLocalFlag
b _0806B050
_0806B044:
movs r4, #4
b _0806B050
_0806B048:
movs r4, #1
movs r0, #0x6a
bl SetLocalFlag
_0806B050:
ldr r0, _0806B060 @ =gUnk_08112C40
lsls r1, r4, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r6, #0
bl TextboxNoOverlap
pop {r4, r5, r6, pc}
.align 2, 0
_0806B060: .4byte gUnk_08112C40
thumb_func_start sub_0806B064
sub_0806B064: @ 0x0806B064
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #0
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
beq _0806B082
movs r4, #1
movs r0, #0x73
bl CheckLocalFlag
cmp r0, #0
beq _0806B082
movs r4, #2
_0806B082:
ldr r0, _0806B094 @ =gUnk_08112C4A
lsls r1, r4, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r5, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B094: .4byte gUnk_08112C4A
thumb_func_start sub_0806B098
sub_0806B098: @ 0x0806B098
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #2
movs r0, #0x46
bl GetInventoryValue
cmp r0, #0
bne _0806B0C0
movs r4, #1
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
beq _0806B0C0
movs r0, #0x2a
bl CheckGlobalFlag
rsbs r1, r0, #0
orrs r1, r0
lsrs r4, r1, #0x1f
_0806B0C0:
ldr r2, _0806B0DC @ =gUnk_08112C50
ldrb r1, [r5, #0xb]
subs r1, #7
lsls r0, r1, #1
adds r0, r0, r1
adds r0, r0, r4
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
adds r1, r5, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B0DC: .4byte gUnk_08112C50
thumb_func_start sub_0806B0E0
sub_0806B0E0: @ 0x0806B0E0
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #0
movs r0, #0x38
movs r1, #0xb8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r0, #0x48
movs r1, #0xb8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r0, #0x38
movs r1, #0xc8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r0, #0x48
movs r1, #0xc8
movs r2, #1
bl sub_080002C0
cmp r0, #0x57
bne _0806B120
movs r5, #1
_0806B120:
ldr r0, _0806B130 @ =gUnk_08112C5C
lsls r1, r5, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r4, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B130: .4byte gUnk_08112C5C
thumb_func_start sub_0806B134
sub_0806B134: @ 0x0806B134
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0x45
bl GetInventoryValue
cmp r0, #0
beq _0806B158
movs r4, #2
movs r0, #0x7b
bl CheckLocalFlag
cmp r0, #0
bne _0806B160
movs r4, #1
movs r0, #0x7b
bl SetLocalFlag
b _0806B160
_0806B158:
movs r4, #0
movs r0, #0x4a
bl SetGlobalFlag
_0806B160:
ldr r0, _0806B17C @ =gUnk_02002A40
ldrb r0, [r0, #8]
cmp r0, #5
bls _0806B16A
movs r4, #3
_0806B16A:
ldr r0, _0806B180 @ =gUnk_08112C60
lsls r1, r4, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r5, #0
bl TextboxNoOverlap
pop {r4, r5, pc}
.align 2, 0
_0806B17C: .4byte gUnk_02002A40
_0806B180: .4byte gUnk_08112C60
thumb_func_start TownMinish_Fusion
TownMinish_Fusion: @ 0x0806B184
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _0806B1C4
ldrb r1, [r4, #0xa]
lsls r1, r1, #4
ldr r0, _0806B1C0 @ =gUnk_08112674
adds r1, r1, r0
adds r0, r4, #0
bl LoadExtraSpriteData
cmp r0, #0
beq _0806B1CA
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #6
bl InitializeAnimation
b _0806B1CA
.align 2, 0
_0806B1C0: .4byte gUnk_08112674
_0806B1C4:
adds r0, r4, #0
bl GetNextFrame
_0806B1CA:
pop {r4, pc}
-9339
View File
File diff suppressed because it is too large Load Diff
+2570
View File
File diff suppressed because it is too large Load Diff
+5852
View File
File diff suppressed because it is too large Load Diff
-1272
View File
File diff suppressed because it is too large Load Diff
+992
View File
@@ -0,0 +1,992 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811E454:: @ 0811E454
.incbin "baserom.gba", 0x11E454, 0x000001C
gUnk_0811E470:: @ 0811E470
.incbin "baserom.gba", 0x11E470, 0x0000008
gUnk_0811E478:: @ 0811E478
.incbin "baserom.gba", 0x11E478, 0x000000C
gUnk_0811E484:: @ 0811E484
.incbin "baserom.gba", 0x11E484, 0x0000020
gUnk_0811E4A4:: @ 0811E4A4
.incbin "baserom.gba", 0x11E4A4, 0x0000008
gUnk_0811E4AC:: @ 0811E4AC
.incbin "baserom.gba", 0x11E4AC, 0x0000001
gUnk_0811E4AD:: @ 0811E4AD
.incbin "baserom.gba", 0x11E4AD, 0x0000007
gUnk_0811E4B4:: @ 0811E4B4
.incbin "baserom.gba", 0x11E4B4, 0x0000008
gUnk_0811E4BC:: @ 0811E4BC
.incbin "baserom.gba", 0x11E4BC, 0x0000054
gUnk_0811E510:: @ 0811E510
.incbin "baserom.gba", 0x11E510, 0x0000004
gUnk_0811E514:: @ 0811E514
.incbin "baserom.gba", 0x11E514, 0x0000010
gUnk_0811E524:: @ 0811E524
.incbin "baserom.gba", 0x11E524, 0x000022C
gUnk_0811E750:: @ 0811E750
.incbin "baserom.gba", 0x11E750, 0x0000008
gUnk_0811E758:: @ 0811E758
.incbin "baserom.gba", 0x11E758, 0x0000008
gUnk_0811E760:: @ 0811E760
.incbin "baserom.gba", 0x11E760, 0x0000008
gUnk_0811E768:: @ 0811E768
.incbin "baserom.gba", 0x11E768, 0x0000018
gUnk_0811E780:: @ 0811E780
.incbin "baserom.gba", 0x11E780, 0x000000C
gUnk_0811E78C:: @ 0811E78C
.incbin "baserom.gba", 0x11E78C, 0x0000008
gUnk_0811E794:: @ 0811E794
.incbin "baserom.gba", 0x11E794, 0x0000018
gUnk_0811E7AC:: @ 0811E7AC
.incbin "baserom.gba", 0x11E7AC, 0x0000010
gUnk_0811E7BC:: @ 0811E7BC
.incbin "baserom.gba", 0x11E7BC, 0x0000008
gUnk_0811E7C4:: @ 0811E7C4
.incbin "baserom.gba", 0x11E7C4, 0x0000010
gUnk_0811E7D4:: @ 0811E7D4
.incbin "baserom.gba", 0x11E7D4, 0x0000014
gUnk_0811E7E8:: @ 0811E7E8
.incbin "baserom.gba", 0x11E7E8, 0x000002C
gUnk_0811E814:: @ 0811E814
.incbin "baserom.gba", 0x11E814, 0x000002C
gUnk_0811E840:: @ 0811E840
.incbin "baserom.gba", 0x11E840, 0x000000C
gUnk_0811E84C:: @ 0811E84C
.incbin "baserom.gba", 0x11E84C, 0x00000B0
gUnk_0811E8FC:: @ 0811E8FC
.incbin "baserom.gba", 0x11E8FC, 0x00000FA
gUnk_0811E9F6:: @ 0811E9F6
.incbin "baserom.gba", 0x11E9F6, 0x0000001
gUnk_0811E9F7:: @ 0811E9F7
.incbin "baserom.gba", 0x11E9F7, 0x0000124
gUnk_0811EB1B:: @ 0811EB1B
.incbin "baserom.gba", 0x11EB1B, 0x00000DE
gUnk_0811EBF9:: @ 0811EBF9
.incbin "baserom.gba", 0x11EBF9, 0x0000003
gUnk_0811EBFC:: @ 0811EBFC
.incbin "baserom.gba", 0x11EBFC, 0x0000007
gUnk_0811EC03:: @ 0811EC03
.incbin "baserom.gba", 0x11EC03, 0x0000005
gUnk_0811EC08:: @ 0811EC08
.incbin "baserom.gba", 0x11EC08, 0x0000018
gUnk_0811EC20:: @ 0811EC20
.incbin "baserom.gba", 0x11EC20, 0x0000004
gUnk_0811EC24:: @ 0811EC24
.incbin "baserom.gba", 0x11EC24, 0x0000040
gUnk_0811EC64:: @ 0811EC64
.incbin "baserom.gba", 0x11EC64, 0x0000070
gUnk_0811ECD4:: @ 0811ECD4
.incbin "baserom.gba", 0x11ECD4, 0x0000079
gUnk_0811ED4D:: @ 0811ED4D
.incbin "baserom.gba", 0x11ED4D, 0x0000039
gUnk_0811ED86:: @ 0811ED86
.incbin "baserom.gba", 0x11ED86, 0x0000031
gUnk_0811EDB7:: @ 0811EDB7
.incbin "baserom.gba", 0x11EDB7, 0x0000034
gUnk_0811EDEB:: @ 0811EDEB
.incbin "baserom.gba", 0x11EDEB, 0x0000014
gUnk_0811EDFF:: @ 0811EDFF
.incbin "baserom.gba", 0x11EDFF, 0x0000011
gUnk_0811EE10:: @ 0811EE10
.incbin "baserom.gba", 0x11EE10, 0x0000010
gUnk_0811EE20:: @ 0811EE20
.incbin "baserom.gba", 0x11EE20, 0x0000008
gUnk_0811EE28:: @ 0811EE28
.incbin "baserom.gba", 0x11EE28, 0x0000010
gUnk_0811EE38:: @ 0811EE38
.incbin "baserom.gba", 0x11EE38, 0x0000018
gUnk_0811EE50:: @ 0811EE50
.incbin "baserom.gba", 0x11EE50, 0x000000C
gUnk_0811EE5C:: @ 0811EE5C
.incbin "baserom.gba", 0x11EE5C, 0x0000008
gUnk_0811EE64:: @ 0811EE64
.incbin "baserom.gba", 0x11EE64, 0x0000029
gUnk_0811EE8D:: @ 0811EE8D
.incbin "baserom.gba", 0x11EE8D, 0x0000004
gUnk_0811EE91:: @ 0811EE91
.incbin "baserom.gba", 0x11EE91, 0x0000029
gUnk_0811EEBA:: @ 0811EEBA
.incbin "baserom.gba", 0x11EEBA, 0x0000004
gUnk_0811EEBE:: @ 0811EEBE
.incbin "baserom.gba", 0x11EEBE, 0x0000005
gUnk_0811EEC3:: @ 0811EEC3
.incbin "baserom.gba", 0x11EEC3, 0x0000004
gUnk_0811EEC7:: @ 0811EEC7
.incbin "baserom.gba", 0x11EEC7, 0x0000029
gUnk_0811EEF0:: @ 0811EEF0
.incbin "baserom.gba", 0x11EEF0, 0x0000004
gUnk_0811EEF4:: @ 0811EEF4
.incbin "baserom.gba", 0x11EEF4, 0x0000009
gUnk_0811EEFD:: @ 0811EEFD
.incbin "baserom.gba", 0x11EEFD, 0x0000009
gUnk_0811EF06:: @ 0811EF06
.incbin "baserom.gba", 0x11EF06, 0x0000009
gUnk_0811EF0F:: @ 0811EF0F
.incbin "baserom.gba", 0x11EF0F, 0x0000028
gUnk_0811EF37:: @ 0811EF37
.incbin "baserom.gba", 0x11EF37, 0x0000018
gUnk_0811EF4F:: @ 0811EF4F
.incbin "baserom.gba", 0x11EF4F, 0x0000018
gUnk_0811EF67:: @ 0811EF67
.incbin "baserom.gba", 0x11EF67, 0x0000018
gUnk_0811EF7F:: @ 0811EF7F
.incbin "baserom.gba", 0x11EF7F, 0x0000018
gUnk_0811EF97:: @ 0811EF97
.incbin "baserom.gba", 0x11EF97, 0x0000009
gUnk_0811EFA0:: @ 0811EFA0
.incbin "baserom.gba", 0x11EFA0, 0x0000009
gUnk_0811EFA9:: @ 0811EFA9
.incbin "baserom.gba", 0x11EFA9, 0x0000009
gUnk_0811EFB2:: @ 0811EFB2
.incbin "baserom.gba", 0x11EFB2, 0x0000009
gUnk_0811EFBB:: @ 0811EFBB
.incbin "baserom.gba", 0x11EFBB, 0x0000009
gUnk_0811EFC4:: @ 0811EFC4
.incbin "baserom.gba", 0x11EFC4, 0x0000015
gUnk_0811EFD9:: @ 0811EFD9
.incbin "baserom.gba", 0x11EFD9, 0x0000015
gUnk_0811EFEE:: @ 0811EFEE
.incbin "baserom.gba", 0x11EFEE, 0x000000E
gUnk_0811EFFC:: @ 0811EFFC
.incbin "baserom.gba", 0x11EFFC, 0x0000007
gUnk_0811F003:: @ 0811F003
.incbin "baserom.gba", 0x11F003, 0x0000015
gUnk_0811F018:: @ 0811F018
.incbin "baserom.gba", 0x11F018, 0x0000078
gUnk_0811F090:: @ 0811F090
.incbin "baserom.gba", 0x11F090, 0x0000018
gUnk_0811F0A8:: @ 0811F0A8
.incbin "baserom.gba", 0x11F0A8, 0x000001C
gUnk_0811F0C4:: @ 0811F0C4
.incbin "baserom.gba", 0x11F0C4, 0x0000018
gUnk_0811F0DC:: @ 0811F0DC
.incbin "baserom.gba", 0x11F0DC, 0x0000005
gUnk_0811F0E1:: @ 0811F0E1
.incbin "baserom.gba", 0x11F0E1, 0x0000005
gUnk_0811F0E6:: @ 0811F0E6
.incbin "baserom.gba", 0x11F0E6, 0x0000005
gUnk_0811F0EB:: @ 0811F0EB
.incbin "baserom.gba", 0x11F0EB, 0x0000005
gUnk_0811F0F0:: @ 0811F0F0
.incbin "baserom.gba", 0x11F0F0, 0x0000005
gUnk_0811F0F5:: @ 0811F0F5
.incbin "baserom.gba", 0x11F0F5, 0x0000003
gUnk_0811F0F8:: @ 0811F0F8
.incbin "baserom.gba", 0x11F0F8, 0x0000002
gUnk_0811F0FA:: @ 0811F0FA
.incbin "baserom.gba", 0x11F0FA, 0x0000005
gUnk_0811F0FF:: @ 0811F0FF
.incbin "baserom.gba", 0x11F0FF, 0x0000001
gUnk_0811F100:: @ 0811F100
.incbin "baserom.gba", 0x11F100, 0x0000004
gUnk_0811F104:: @ 0811F104
.incbin "baserom.gba", 0x11F104, 0x0000005
gUnk_0811F109:: @ 0811F109
.incbin "baserom.gba", 0x11F109, 0x0000005
gUnk_0811F10E:: @ 0811F10E
.incbin "baserom.gba", 0x11F10E, 0x0000005
gUnk_0811F113:: @ 0811F113
.incbin "baserom.gba", 0x11F113, 0x0000005
gUnk_0811F118:: @ 0811F118
.incbin "baserom.gba", 0x11F118, 0x0000034
gUnk_0811F14C:: @ 0811F14C
.incbin "baserom.gba", 0x11F14C, 0x0000008
gUnk_0811F154:: @ 0811F154
.incbin "baserom.gba", 0x11F154, 0x0000008
gUnk_0811F15C:: @ 0811F15C
.incbin "baserom.gba", 0x11F15C, 0x0000010
gUnk_0811F16C:: @ 0811F16C
.incbin "baserom.gba", 0x11F16C, 0x000000C
gUnk_0811F178:: @ 0811F178
.incbin "baserom.gba", 0x11F178, 0x0000014
gUnk_0811F18C:: @ 0811F18C
.incbin "baserom.gba", 0x11F18C, 0x0000004
gUnk_0811F190:: @ 0811F190
.incbin "baserom.gba", 0x11F190, 0x000001D
gUnk_0811F1AD:: @ 0811F1AD
.incbin "baserom.gba", 0x11F1AD, 0x000001D
gUnk_0811F1CA:: @ 0811F1CA
.incbin "baserom.gba", 0x11F1CA, 0x000001D
gUnk_0811F1E7:: @ 0811F1E7
.incbin "baserom.gba", 0x11F1E7, 0x0000029
gUnk_0811F210:: @ 0811F210
.incbin "baserom.gba", 0x11F210, 0x000001D
gUnk_0811F22D:: @ 0811F22D
.incbin "baserom.gba", 0x11F22D, 0x000001D
gUnk_0811F24A:: @ 0811F24A
.incbin "baserom.gba", 0x11F24A, 0x000001D
gUnk_0811F267:: @ 0811F267
.incbin "baserom.gba", 0x11F267, 0x0000029
gUnk_0811F290:: @ 0811F290
.incbin "baserom.gba", 0x11F290, 0x000001D
gUnk_0811F2AD:: @ 0811F2AD
.incbin "baserom.gba", 0x11F2AD, 0x000001D
gUnk_0811F2CA:: @ 0811F2CA
.incbin "baserom.gba", 0x11F2CA, 0x000001D
gUnk_0811F2E7:: @ 0811F2E7
.incbin "baserom.gba", 0x11F2E7, 0x0000029
gUnk_0811F310:: @ 0811F310
.incbin "baserom.gba", 0x11F310, 0x000000D
gUnk_0811F31D:: @ 0811F31D
.incbin "baserom.gba", 0x11F31D, 0x000000D
gUnk_0811F32A:: @ 0811F32A
.incbin "baserom.gba", 0x11F32A, 0x000000D
gUnk_0811F337:: @ 0811F337
.incbin "baserom.gba", 0x11F337, 0x0000029
gUnk_0811F360:: @ 0811F360
.incbin "baserom.gba", 0x11F360, 0x000000D
gUnk_0811F36D:: @ 0811F36D
.incbin "baserom.gba", 0x11F36D, 0x000000D
gUnk_0811F37A:: @ 0811F37A
.incbin "baserom.gba", 0x11F37A, 0x000000D
gUnk_0811F387:: @ 0811F387
.incbin "baserom.gba", 0x11F387, 0x0000029
gUnk_0811F3B0:: @ 0811F3B0
.incbin "baserom.gba", 0x11F3B0, 0x000000D
gUnk_0811F3BD:: @ 0811F3BD
.incbin "baserom.gba", 0x11F3BD, 0x000000D
gUnk_0811F3CA:: @ 0811F3CA
.incbin "baserom.gba", 0x11F3CA, 0x000000D
gUnk_0811F3D7:: @ 0811F3D7
.incbin "baserom.gba", 0x11F3D7, 0x0000029
gUnk_0811F400:: @ 0811F400
.incbin "baserom.gba", 0x11F400, 0x0000005
gUnk_0811F405:: @ 0811F405
.incbin "baserom.gba", 0x11F405, 0x0000011
gUnk_0811F416:: @ 0811F416
.incbin "baserom.gba", 0x11F416, 0x0000029
gUnk_0811F43F:: @ 0811F43F
.incbin "baserom.gba", 0x11F43F, 0x0000029
gUnk_0811F468:: @ 0811F468
.incbin "baserom.gba", 0x11F468, 0x0000051
gUnk_0811F4B9:: @ 0811F4B9
.incbin "baserom.gba", 0x11F4B9, 0x0000019
gUnk_0811F4D2:: @ 0811F4D2
.incbin "baserom.gba", 0x11F4D2, 0x0000005
gUnk_0811F4D7:: @ 0811F4D7
.incbin "baserom.gba", 0x11F4D7, 0x0000074
gUnk_0811F54B:: @ 0811F54B
.incbin "baserom.gba", 0x11F54B, 0x0000015
gUnk_0811F560:: @ 0811F560
.incbin "baserom.gba", 0x11F560, 0x0000015
gUnk_0811F575:: @ 0811F575
.incbin "baserom.gba", 0x11F575, 0x0000015
gUnk_0811F58A:: @ 0811F58A
.incbin "baserom.gba", 0x11F58A, 0x0000006
gUnk_0811F590:: @ 0811F590
.incbin "baserom.gba", 0x11F590, 0x0000065
gUnk_0811F5F5:: @ 0811F5F5
.incbin "baserom.gba", 0x11F5F5, 0x0000010
gUnk_0811F605:: @ 0811F605
.incbin "baserom.gba", 0x11F605, 0x000001F
gUnk_0811F624:: @ 0811F624
.incbin "baserom.gba", 0x11F624, 0x0000008
gUnk_0811F62C:: @ 0811F62C
.incbin "baserom.gba", 0x11F62C, 0x0000008
gUnk_0811F634:: @ 0811F634
.incbin "baserom.gba", 0x11F634, 0x0000008
gUnk_0811F63C:: @ 0811F63C
.incbin "baserom.gba", 0x11F63C, 0x0000008
gUnk_0811F644:: @ 0811F644
.incbin "baserom.gba", 0x11F644, 0x0000008
gUnk_0811F64C:: @ 0811F64C
.incbin "baserom.gba", 0x11F64C, 0x0000010
gUnk_0811F65C:: @ 0811F65C
.incbin "baserom.gba", 0x11F65C, 0x0000024
gUnk_0811F680:: @ 0811F680
.incbin "baserom.gba", 0x11F680, 0x0000008
gUnk_0811F688:: @ 0811F688
.incbin "baserom.gba", 0x11F688, 0x0000008
gUnk_0811F690:: @ 0811F690
.incbin "baserom.gba", 0x11F690, 0x00000A0
gUnk_0811F730:: @ 0811F730
.incbin "baserom.gba", 0x11F730, 0x0000010
gUnk_0811F740:: @ 0811F740
.incbin "baserom.gba", 0x11F740, 0x0000004
gUnk_0811F744:: @ 0811F744
.incbin "baserom.gba", 0x11F744, 0x0000010
gUnk_0811F754:: @ 0811F754
.incbin "baserom.gba", 0x11F754, 0x000000C
gUnk_0811F760:: @ 0811F760
.incbin "baserom.gba", 0x11F760, 0x0000035
gUnk_0811F795:: @ 0811F795
.incbin "baserom.gba", 0x11F795, 0x0000037
gUnk_0811F7CC:: @ 0811F7CC
.incbin "baserom.gba", 0x11F7CC, 0x000000C
gUnk_0811F7D8:: @ 0811F7D8
.incbin "baserom.gba", 0x11F7D8, 0x000000D
gUnk_0811F7E5:: @ 0811F7E5
.incbin "baserom.gba", 0x11F7E5, 0x0000003
gUnk_0811F7E8:: @ 0811F7E8
.incbin "baserom.gba", 0x11F7E8, 0x0000020
gUnk_0811F808:: @ 0811F808
.incbin "baserom.gba", 0x11F808, 0x0000010
gUnk_0811F818:: @ 0811F818
.incbin "baserom.gba", 0x11F818, 0x0000020
gUnk_0811F838:: @ 0811F838
.incbin "baserom.gba", 0x11F838, 0x0000008
gUnk_0811F840:: @ 0811F840
.incbin "baserom.gba", 0x11F840, 0x0000010
gUnk_0811F850:: @ 0811F850
.incbin "baserom.gba", 0x11F850, 0x0000004
gUnk_0811F854:: @ 0811F854
.incbin "baserom.gba", 0x11F854, 0x0000012
gUnk_0811F866:: @ 0811F866
.incbin "baserom.gba", 0x11F866, 0x000001A
gUnk_0811F880:: @ 0811F880
.incbin "baserom.gba", 0x11F880, 0x000000A
gUnk_0811F88A:: @ 0811F88A
.incbin "baserom.gba", 0x11F88A, 0x000000E
gUnk_0811F898:: @ 0811F898
.incbin "baserom.gba", 0x11F898, 0x0000010
gUnk_0811F8A8:: @ 0811F8A8
.incbin "baserom.gba", 0x11F8A8, 0x0000008
gUnk_0811F8B0:: @ 0811F8B0
.incbin "baserom.gba", 0x11F8B0, 0x0000008
gUnk_0811F8B8:: @ 0811F8B8
.incbin "baserom.gba", 0x11F8B8, 0x0000011
gUnk_0811F8C9:: @ 0811F8C9
.incbin "baserom.gba", 0x11F8C9, 0x0000005
gUnk_0811F8CE:: @ 0811F8CE
.incbin "baserom.gba", 0x11F8CE, 0x0000005
gUnk_0811F8D3:: @ 0811F8D3
.incbin "baserom.gba", 0x11F8D3, 0x0000015
gUnk_0811F8E8:: @ 0811F8E8
.incbin "baserom.gba", 0x11F8E8, 0x0000008
gUnk_0811F8F0:: @ 0811F8F0
.incbin "baserom.gba", 0x11F8F0, 0x0000008
gUnk_0811F8F8:: @ 0811F8F8
.incbin "baserom.gba", 0x11F8F8, 0x0000010
gUnk_0811F908:: @ 0811F908
.incbin "baserom.gba", 0x11F908, 0x0000010
gUnk_0811F918:: @ 0811F918
.incbin "baserom.gba", 0x11F918, 0x000002D
gUnk_0811F945:: @ 0811F945
.incbin "baserom.gba", 0x11F945, 0x000000F
gUnk_0811F954:: @ 0811F954
.incbin "baserom.gba", 0x11F954, 0x000000C
gUnk_0811F960:: @ 0811F960
.incbin "baserom.gba", 0x11F960, 0x000009B
gUnk_0811F9FB:: @ 0811F9FB
.incbin "baserom.gba", 0x11F9FB, 0x00000C5
gUnk_0811FAC0:: @ 0811FAC0
.incbin "baserom.gba", 0x11FAC0, 0x0000008
gUnk_0811FAC8:: @ 0811FAC8
.incbin "baserom.gba", 0x11FAC8, 0x0000004
gUnk_0811FACC:: @ 0811FACC
.incbin "baserom.gba", 0x11FACC, 0x0000004
gUnk_0811FAD0:: @ 0811FAD0
.incbin "baserom.gba", 0x11FAD0, 0x0000038
gUnk_0811FB08:: @ 0811FB08
.incbin "baserom.gba", 0x11FB08, 0x0000008
gUnk_0811FB10:: @ 0811FB10
.incbin "baserom.gba", 0x11FB10, 0x0000015
gUnk_0811FB25:: @ 0811FB25
.incbin "baserom.gba", 0x11FB25, 0x0000058
gUnk_0811FB7D:: @ 0811FB7D
.incbin "baserom.gba", 0x11FB7D, 0x0000044
gUnk_0811FBC1:: @ 0811FBC1
.incbin "baserom.gba", 0x11FBC1, 0x0000020
gUnk_0811FBE1:: @ 0811FBE1
.incbin "baserom.gba", 0x11FBE1, 0x000000C
gUnk_0811FBED:: @ 0811FBED
.incbin "baserom.gba", 0x11FBED, 0x0000010
gUnk_0811FBFD:: @ 0811FBFD
.incbin "baserom.gba", 0x11FBFD, 0x0000014
gUnk_0811FC11:: @ 0811FC11
.incbin "baserom.gba", 0x11FC11, 0x000001C
gUnk_0811FC2D:: @ 0811FC2D
.incbin "baserom.gba", 0x11FC2D, 0x0000024
gUnk_0811FC51:: @ 0811FC51
.incbin "baserom.gba", 0x11FC51, 0x0000021
gUnk_0811FC72:: @ 0811FC72
.incbin "baserom.gba", 0x11FC72, 0x0000015
gUnk_0811FC87:: @ 0811FC87
.incbin "baserom.gba", 0x11FC87, 0x0000024
gUnk_0811FCAB:: @ 0811FCAB
.incbin "baserom.gba", 0x11FCAB, 0x0000034
gUnk_0811FCDF:: @ 0811FCDF
.incbin "baserom.gba", 0x11FCDF, 0x0000044
gUnk_0811FD23:: @ 0811FD23
.incbin "baserom.gba", 0x11FD23, 0x0000018
gUnk_0811FD3B:: @ 0811FD3B
.incbin "baserom.gba", 0x11FD3B, 0x000001C
gUnk_0811FD57:: @ 0811FD57
.incbin "baserom.gba", 0x11FD57, 0x000001C
gUnk_0811FD73:: @ 0811FD73
.incbin "baserom.gba", 0x11FD73, 0x000000C
gUnk_0811FD7F:: @ 0811FD7F
.incbin "baserom.gba", 0x11FD7F, 0x0000010
gUnk_0811FD8F:: @ 0811FD8F
.incbin "baserom.gba", 0x11FD8F, 0x0000014
gUnk_0811FDA3:: @ 0811FDA3
.incbin "baserom.gba", 0x11FDA3, 0x0000015
gUnk_0811FDB8:: @ 0811FDB8
.incbin "baserom.gba", 0x11FDB8, 0x0000014
gUnk_0811FDCC:: @ 0811FDCC
.incbin "baserom.gba", 0x11FDCC, 0x0000008
gUnk_0811FDD4:: @ 0811FDD4
.incbin "baserom.gba", 0x11FDD4, 0x0000018
gUnk_0811FDEC:: @ 0811FDEC
.incbin "baserom.gba", 0x11FDEC, 0x0000010
gUnk_0811FDFC:: @ 0811FDFC
.incbin "baserom.gba", 0x11FDFC, 0x0000019
gUnk_0811FE15:: @ 0811FE15
.incbin "baserom.gba", 0x11FE15, 0x0000041
gUnk_0811FE56:: @ 0811FE56
.incbin "baserom.gba", 0x11FE56, 0x0000008
gUnk_0811FE5E:: @ 0811FE5E
.incbin "baserom.gba", 0x11FE5E, 0x0000018
gUnk_0811FE76:: @ 0811FE76
.incbin "baserom.gba", 0x11FE76, 0x0000018
gUnk_0811FE8E:: @ 0811FE8E
.incbin "baserom.gba", 0x11FE8E, 0x0000014
gUnk_0811FEA2:: @ 0811FEA2
.incbin "baserom.gba", 0x11FEA2, 0x000000C
gUnk_0811FEAE:: @ 0811FEAE
.incbin "baserom.gba", 0x11FEAE, 0x000000C
gUnk_0811FEBA:: @ 0811FEBA
.incbin "baserom.gba", 0x11FEBA, 0x0000028
gUnk_0811FEE2:: @ 0811FEE2
.incbin "baserom.gba", 0x11FEE2, 0x000000D
gUnk_0811FEEF:: @ 0811FEEF
.incbin "baserom.gba", 0x11FEEF, 0x0000020
gUnk_0811FF0F:: @ 0811FF0F
.incbin "baserom.gba", 0x11FF0F, 0x0000020
gUnk_0811FF2F:: @ 0811FF2F
.incbin "baserom.gba", 0x11FF2F, 0x0000020
gUnk_0811FF4F:: @ 0811FF4F
.incbin "baserom.gba", 0x11FF4F, 0x0000020
gUnk_0811FF6F:: @ 0811FF6F
.incbin "baserom.gba", 0x11FF6F, 0x0000020
gUnk_0811FF8F:: @ 0811FF8F
.incbin "baserom.gba", 0x11FF8F, 0x0000018
gUnk_0811FFA7:: @ 0811FFA7
.incbin "baserom.gba", 0x11FFA7, 0x0000020
gUnk_0811FFC7:: @ 0811FFC7
.incbin "baserom.gba", 0x11FFC7, 0x0000018
gUnk_0811FFDF:: @ 0811FFDF
.incbin "baserom.gba", 0x11FFDF, 0x0000018
gUnk_0811FFF7:: @ 0811FFF7
.incbin "baserom.gba", 0x11FFF7, 0x0000009
gUnk_08120000:: @ 08120000
.incbin "baserom.gba", 0x120000, 0x0000004
gUnk_08120004:: @ 08120004
.incbin "baserom.gba", 0x120004, 0x0000006
gUnk_0812000A:: @ 0812000A
.incbin "baserom.gba", 0x12000A, 0x0000004
gUnk_0812000E:: @ 0812000E
.incbin "baserom.gba", 0x12000E, 0x0000001
gUnk_0812000F:: @ 0812000F
.incbin "baserom.gba", 0x12000F, 0x0000001
gUnk_08120010:: @ 08120010
.incbin "baserom.gba", 0x120010, 0x0000007
gUnk_08120017:: @ 08120017
.incbin "baserom.gba", 0x120017, 0x0000011
gUnk_08120028:: @ 08120028
.incbin "baserom.gba", 0x120028, 0x0000004
gUnk_0812002C:: @ 0812002C
.incbin "baserom.gba", 0x12002C, 0x000000F
gUnk_0812003B:: @ 0812003B
.incbin "baserom.gba", 0x12003B, 0x0000017
gUnk_08120052:: @ 08120052
.incbin "baserom.gba", 0x120052, 0x000000A
gUnk_0812005C:: @ 0812005C
.incbin "baserom.gba", 0x12005C, 0x0000007
gUnk_08120063:: @ 08120063
.incbin "baserom.gba", 0x120063, 0x000001C
gUnk_0812007F:: @ 0812007F
.incbin "baserom.gba", 0x12007F, 0x0000009
gUnk_08120088:: @ 08120088
.incbin "baserom.gba", 0x120088, 0x0000013
gUnk_0812009B:: @ 0812009B
.incbin "baserom.gba", 0x12009B, 0x0000014
gUnk_081200AF:: @ 081200AF
.incbin "baserom.gba", 0x1200AF, 0x000001B
gUnk_081200CA:: @ 081200CA
.incbin "baserom.gba", 0x1200CA, 0x0000001
gUnk_081200CB:: @ 081200CB
.incbin "baserom.gba", 0x1200CB, 0x0000005
gUnk_081200D0:: @ 081200D0
.incbin "baserom.gba", 0x1200D0, 0x0000012
gUnk_081200E2:: @ 081200E2
.incbin "baserom.gba", 0x1200E2, 0x0000009
gUnk_081200EB:: @ 081200EB
.incbin "baserom.gba", 0x1200EB, 0x0000013
gUnk_081200FE:: @ 081200FE
.incbin "baserom.gba", 0x1200FE, 0x0000001
gUnk_081200FF:: @ 081200FF
.incbin "baserom.gba", 0x1200FF, 0x0000024
gUnk_08120123:: @ 08120123
.incbin "baserom.gba", 0x120123, 0x0000024
gUnk_08120147:: @ 08120147
.incbin "baserom.gba", 0x120147, 0x0000020
gUnk_08120167:: @ 08120167
.incbin "baserom.gba", 0x120167, 0x0000018
gUnk_0812017F:: @ 0812017F
.incbin "baserom.gba", 0x12017F, 0x0000011
gUnk_08120190:: @ 08120190
.incbin "baserom.gba", 0x120190, 0x0000007
gUnk_08120197:: @ 08120197
.incbin "baserom.gba", 0x120197, 0x0000018
gUnk_081201AF:: @ 081201AF
.incbin "baserom.gba", 0x1201AF, 0x0000031
gUnk_081201E0:: @ 081201E0
.incbin "baserom.gba", 0x1201E0, 0x000000D
gUnk_081201ED:: @ 081201ED
.incbin "baserom.gba", 0x1201ED, 0x000000B
gUnk_081201F8:: @ 081201F8
.incbin "baserom.gba", 0x1201F8, 0x0000011
gUnk_08120209:: @ 08120209
.incbin "baserom.gba", 0x120209, 0x0000038
gUnk_08120241:: @ 08120241
.incbin "baserom.gba", 0x120241, 0x0000038
gUnk_08120279:: @ 08120279
.incbin "baserom.gba", 0x120279, 0x0000007
gUnk_08120280:: @ 08120280
.incbin "baserom.gba", 0x120280, 0x000002D
gUnk_081202AD:: @ 081202AD
.incbin "baserom.gba", 0x1202AD, 0x0000011
gUnk_081202BE:: @ 081202BE
.incbin "baserom.gba", 0x1202BE, 0x0000025
gUnk_081202E3:: @ 081202E3
.incbin "baserom.gba", 0x1202E3, 0x0000009
gUnk_081202EC:: @ 081202EC
.incbin "baserom.gba", 0x1202EC, 0x0000020
gUnk_0812030C:: @ 0812030C
.incbin "baserom.gba", 0x12030C, 0x0000014
gUnk_08120320:: @ 08120320
.incbin "baserom.gba", 0x120320, 0x0000030
gUnk_08120350:: @ 08120350
.incbin "baserom.gba", 0x120350, 0x000001C
gUnk_0812036C:: @ 0812036C
.incbin "baserom.gba", 0x12036C, 0x0000020
gUnk_0812038C:: @ 0812038C
.incbin "baserom.gba", 0x12038C, 0x0000038
gUnk_081203C4:: @ 081203C4
.incbin "baserom.gba", 0x1203C4, 0x0000026
gUnk_081203EA:: @ 081203EA
.incbin "baserom.gba", 0x1203EA, 0x0000012
gUnk_081203FC:: @ 081203FC
.incbin "baserom.gba", 0x1203FC, 0x0000005
gUnk_08120401:: @ 08120401
.incbin "baserom.gba", 0x120401, 0x0000001
gUnk_08120402:: @ 08120402
.incbin "baserom.gba", 0x120402, 0x0000011
gUnk_08120413:: @ 08120413
.incbin "baserom.gba", 0x120413, 0x0000030
gUnk_08120443:: @ 08120443
.incbin "baserom.gba", 0x120443, 0x0000001
gUnk_08120444:: @ 08120444
.incbin "baserom.gba", 0x120444, 0x0000015
gUnk_08120459:: @ 08120459
.incbin "baserom.gba", 0x120459, 0x000000A
gUnk_08120463:: @ 08120463
.incbin "baserom.gba", 0x120463, 0x000009B
gUnk_081204FE:: @ 081204FE
.incbin "baserom.gba", 0x1204FE, 0x0000062
gUnk_08120560:: @ 08120560
.incbin "baserom.gba", 0x120560, 0x000000C
gUnk_0812056C:: @ 0812056C
.incbin "baserom.gba", 0x12056C, 0x0000008
gUnk_08120574:: @ 08120574
.incbin "baserom.gba", 0x120574, 0x0000008
gUnk_0812057C:: @ 0812057C
.incbin "baserom.gba", 0x12057C, 0x000000C
gUnk_08120588:: @ 08120588
.incbin "baserom.gba", 0x120588, 0x0000014
gUnk_0812059C:: @ 0812059C
.incbin "baserom.gba", 0x12059C, 0x0000018
gUnk_081205B4:: @ 081205B4
.incbin "baserom.gba", 0x1205B4, 0x0000008
gUnk_081205BC:: @ 081205BC
.incbin "baserom.gba", 0x1205BC, 0x0000014
gUnk_081205D0:: @ 081205D0
.incbin "baserom.gba", 0x1205D0, 0x0000010
gUnk_081205E0:: @ 081205E0
.incbin "baserom.gba", 0x1205E0, 0x0000004
gUnk_081205E4:: @ 081205E4
.incbin "baserom.gba", 0x1205E4, 0x0000004
gUnk_081205E8:: @ 081205E8
.incbin "baserom.gba", 0x1205E8, 0x0000004
gUnk_081205EC:: @ 081205EC
.incbin "baserom.gba", 0x1205EC, 0x0000004
gUnk_081205F0:: @ 081205F0
.incbin "baserom.gba", 0x1205F0, 0x0000004
gUnk_081205F4:: @ 081205F4
.incbin "baserom.gba", 0x1205F4, 0x0000009
gUnk_081205FD:: @ 081205FD
.incbin "baserom.gba", 0x1205FD, 0x000000B
gUnk_08120608:: @ 08120608
.incbin "baserom.gba", 0x120608, 0x0000018
gUnk_08120620:: @ 08120620
.incbin "baserom.gba", 0x120620, 0x000000C
gUnk_0812062C:: @ 0812062C
.incbin "baserom.gba", 0x12062C, 0x000000C
gUnk_08120638:: @ 08120638
.incbin "baserom.gba", 0x120638, 0x0000008
gUnk_08120640:: @ 08120640
.incbin "baserom.gba", 0x120640, 0x0000008
gUnk_08120648:: @ 08120648
.incbin "baserom.gba", 0x120648, 0x0000008
gUnk_08120650:: @ 08120650
.incbin "baserom.gba", 0x120650, 0x0000008
gUnk_08120658:: @ 08120658
.incbin "baserom.gba", 0x120658, 0x0000008
gUnk_08120660:: @ 08120660
.incbin "baserom.gba", 0x120660, 0x0000008
gUnk_08120668:: @ 08120668
.incbin "baserom.gba", 0x120668, 0x0000010
gUnk_08120678:: @ 08120678
.incbin "baserom.gba", 0x120678, 0x000000A
gUnk_08120682:: @ 08120682
.incbin "baserom.gba", 0x120682, 0x0000004
gUnk_08120686:: @ 08120686
.incbin "baserom.gba", 0x120686, 0x0000004
gUnk_0812068A:: @ 0812068A
.incbin "baserom.gba", 0x12068A, 0x0000004
gUnk_0812068E:: @ 0812068E
.incbin "baserom.gba", 0x12068E, 0x0000004
gUnk_08120692:: @ 08120692
.incbin "baserom.gba", 0x120692, 0x0000006
gUnk_08120698:: @ 08120698
.incbin "baserom.gba", 0x120698, 0x0000014
gUnk_081206AC:: @ 081206AC
.incbin "baserom.gba", 0x1206AC, 0x0000008
gUnk_081206B4:: @ 081206B4
.incbin "baserom.gba", 0x1206B4, 0x0000010
gUnk_081206C4:: @ 081206C4
.incbin "baserom.gba", 0x1206C4, 0x000000C
+5 -8
View File
@@ -7633,16 +7633,13 @@ gUnk_08324AE4:: @ 08324AE4
.incbin "baserom.gba", 0x324AE4, 0x000018F
gUnk_08324C73:: @ 08324C73
.incbin "baserom.gba", 0x324C73, 0x00007FA
.incbin "baserom.gba", 0x324C73, 0x0000241
gUnk_0832546D:: @ 0832546D
.incbin "baserom.gba", 0x32546D, 0x000041B
gUnk_08324EB4:: @ 08324EB4
.incbin "data/tilesets/minish_woods/tiles_bottom.4bpp.lz"
gUnk_08325888:: @ 08325888
.incbin "baserom.gba", 0x325888, 0x00010E9
gUnk_08326971:: @ 08326971
.incbin "baserom.gba", 0x326971, 0x0002C90
gUnk_08327B08:: @ 08327B08
.incbin "baserom.gba", 0x327B08, 0x0001AF9
gUnk_08329601:: @ 08329601
.incbin "baserom.gba", 0x329601, 0x00053C2
+1166
View File
File diff suppressed because it is too large Load Diff
+1145
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

+4 -1
View File
@@ -167,7 +167,10 @@ extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32);
extern u32 GetFacingDirection(Entity*, Entity*);
extern void DeleteThisEntity();
extern void DeleteThisEntity(void);
extern void CopyPosition(Entity*, Entity*);
extern void DeleteEntity(Entity*);
extern void PositionRelative(Entity*, Entity*, s32, s32);
extern Entity gUnk_03003DA0;
+3 -4
View File
@@ -13,7 +13,7 @@
// Identified - to be sorted into header files
extern u32 Random(void);
extern void PlaySFX(u32);
extern void ShowNPCDialogue(Entity*, u32*);
extern void ShowNPCDialogue(Entity*, Dialog*);
extern u32 UpdateFuseInteraction();
extern void DeleteEntity(Entity*);
extern u32 __modsi3(u32, u32);
@@ -46,7 +46,7 @@ extern void ExecuteScriptCommandSet(Entity*, void *);
extern void _DmaFill32(u32, void*, u32);
// Unidentified
extern void sub_0806ED78(Entity*);
extern u32 sub_0806ED78(Entity*);
extern void sub_0806920C(Entity*);
extern u32 sub_0805ACC0(Entity*);
extern u32 sub_0801E99C(Entity*);
@@ -78,7 +78,6 @@ extern s32 sub_0806ED9C(Entity*, u32, u32);
extern void sub_0807000C(Entity*);
extern void sub_0805E47C(Entity*);
extern void sub_0805E584(Entity*);
extern void sub_0806ED78(Entity*);
extern void sub_08068BEC(Entity*, u32);
extern void sub_08078778(Entity*);
extern s32 sub_0806ED9C(Entity*, u32, u32);
@@ -103,7 +102,7 @@ extern u32 sub_08049EE4(Entity*);
extern Entity *sub_0804A98C(Entity *, u32, u32);
extern u32 sub_080544DC(u8);
extern void sub_08077E54(Entity*);
extern void sub_080042BA(Entity*);
extern void sub_080042BA(Entity*, u32);
extern void _DmaZero(void*, u32);
extern void sub_08077F24(ItemBehavior*, u32);
extern void sub_08079184();
-1
View File
@@ -171,7 +171,6 @@ extern void NPC58(Entity*);
extern void NPC58_Head(Entity*);
extern u32 UpdateFuseInteraction(Entity*);
extern void ShowNPCDialogue(Entity*, u32*);
#endif
+4 -2
View File
@@ -27,8 +27,10 @@ typedef struct {
u8 screenShakeMagnitude;
u8 unk7;
u16 screenShakeTime;
u16 filler2[6];
u8 filler3[4];
u16 filler2[3];
u16 width;
u16 height;
u8 filler3[6];
union SplitWord bg3OffsetX;
union SplitWord bg3OffsetY;
Entity* cameraTarget;
+17 -3
View File
@@ -23,7 +23,7 @@ typedef struct {
} struct_0807D1C4;
#define gUnk_02000000 ((struct_02000000*)(0x2000000))
//extern struct_02000000 gUnk_02000000;
// extern struct_02000000 gUnk_02000000;
typedef struct {
u8 filler0[0x4];
@@ -57,7 +57,7 @@ typedef struct {
extern SaveFile gUnk_02002A40;
typedef struct {
u32 frameCount; // regular frame count? does anything reset it?
u32 frameCount; // regular frame count? does anything reset it?
u8 field_0x4[0x4];
bool8 transitioningOut;
u8 transitionType; // transition when changing areas
@@ -123,7 +123,7 @@ typedef struct {
u8 field_0x2;
u8 field_0x3;
u32 field_0x4;
u16 fadeType; // fade in or out, are there others?
u16 fadeType; // fade in or out, are there others?
u16 fadeSpeed; // subtracted from duration
u16 fadeDuration;
u16 field_0xe;
@@ -160,4 +160,18 @@ typedef struct {
} struct_02034480;
extern struct_02034480 gUnk_02034480;
typedef struct {
u32 flag : 12;
u32 flagType : 4;
u32 type : 4;
u32 unk : 1;
union {
struct {
u16 a;
u16 b;
} indices;
void (*func)(Entity*);
} data;
} Dialog;
#endif
+13 -8
View File
@@ -56,9 +56,9 @@ SECTIONS {
. = 0x0000B654; gUnk_0200B654 = .;
. = 0x0000D654; gUnk_0200D654 = .;
. = 0x0000E654; gUnk_0200E654 = .;
. = 0x00010654; gUnk_02010654 = .;
. = 0x00010654; gMetatileTypesTop = .;
. = 0x00011654; gUnk_02011654 = .;
. = 0x00012654; gUnk_02012654 = .;
. = 0x00012654; gMetatilesTop = .;
. = 0x00016654; gUnk_02016654 = .;
. = 0x00017654; gUnk_02017654 = .;
. = 0x00017660; gUnk_02017660 = .;
@@ -101,9 +101,9 @@ SECTIONS {
. = 0x00025EB4; gUnk_02025EB4 = .;
. = 0x00027EB4; gUnk_02027EB4 = .;
. = 0x00028EB4; gUnk_02028EB4 = .;
. = 0x0002AEB4; gUnk_0202AEB4 = .;
. = 0x0002AEB4; gMetatileTypesBottom = .;
. = 0x0002BEB4; gUnk_0202BEB4 = .;
. = 0x0002CEB4; gUnk_0202CEB4 = .;
. = 0x0002CEB4; gMetatilesBottom = .;
. = 0x00030EB4; gUnk_02030EB4 = .;
. = 0x00031EC0; gUnk_02031EC0 = .;
. = 0x00032EC0; gUnk_02032EC0 = .;
@@ -419,9 +419,9 @@ SECTIONS {
asm/dust.o(.text);
asm/vaatiBall.o(.text);
src/enemy/slime.o(.text);
asm/slime.o(.text);
asm/miniSlime.o(.text);
asm/fireballGuy.o(.text);
asm/sub_080451CC.o(.text);
src/enemy/miniSlime.o(.text);
src/enemy/fireballGuy.o(.text);
src/enemy/miniFireballGuy.o(.text);
asm/enemy5A.o(.text);
asm/businessScrubPrologue.o(.text);
@@ -601,7 +601,6 @@ SECTIONS {
src/npc/rem.o(.text);
asm/rem.o(.text);
src/npc/townMinish.o(.text);
asm/townMinish.o(.text);
src/npc/librari.o(.text);
src/npc/percy.o(.text);
asm/percy.o(.text);
@@ -918,8 +917,14 @@ SECTIONS {
data/data_080D5360.o(.rodata);
src/mainLoop.o(.rodata);
data/data_08100CD4.o(.rodata);
data/tileset_headers.o(.rodata);
data/data_081026AC.o(.rodata);
src/manager/managerB.o(.rodata);
data/data_0810821C.o(.rodata);
src/item.o(.rodata);
data/data_0811BD44.o(.rodata);
data/room_headers.o(.rodata);
data/data_0811E454.o(.rodata);
src/object/greatFairy.o(.rodata);
data/greatFairyAnimations.o(.rodata);
data/data_081208A0.o(.rodata);
+2 -2
View File
@@ -29,9 +29,9 @@ void UpdateItemAnim(Entity *ent)
sub_08077E54(ent);
}
void sub_08077E3C(Entity *ent)
void sub_08077E3C(Entity *ent, u32 idx)
{
sub_080042BA(&gPlayerEntity);
sub_080042BA(&gPlayerEntity, idx);
sub_08077E54(ent);
}
-3
View File
@@ -1,9 +1,6 @@
#include "global.h"
#include "entity.h"
extern Entity* CreateObject();
extern void CopyPosition();
Entity* CreateObjectWithParent(Entity* parentEnt, u32 subtype, u32 param1, u32 param2) {
Entity* ent;
+121
View File
@@ -0,0 +1,121 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
typedef struct {
s8 h, v;
} PACKED PosOffset;
extern void sub_08045524(Entity*);
void sub_08045178(Entity*, Entity*, int, int);
extern void (*const gUnk_080D17E8[])(Entity*);
extern void (*const gUnk_080D1800[])(Entity*);
extern u8 gUnk_080D180C[4]; // Entity count per form
extern PosOffset gUnk_080D1810[4];
extern u8 gEntCount;
void FireballGuy(Entity* this) {
EnemyFunctionHandler(this, gUnk_080D17E8);
}
void sub_080453A4(Entity* this) {
gUnk_080D1800[this->action](this);
}
void sub_080453BC(Entity* this) {
if (this->currentHealth && this->cutsceneBeh.HALF.LO != this->currentHealth) {
this->action = 2;
} else {
sub_0804AA30(this, gUnk_080D17E8);
}
}
void nullsub_172(void) {
}
void sub_080453E8(Entity* this) {
this->action = 1;
this->actionDelay = 0;
this->spriteSettings.b.draw = 1;
this->nonPlanarMovement = 0x80;
this->cutsceneBeh.HALF.LO = this->currentHealth;
this->field_0x3c |= 0x10;
sub_0804A720(this);
InitializeAnimation(this, 0);
sub_08045524(this);
}
void sub_08045430(Entity* this) {
sub_080AEFE0(this);
GetNextFrame(this);
if (sub_08003FC4(this, 0x1800) == 0)
sub_08045524(this);
}
/* Split FireballGuy into new ones */
void sub_08045454(Entity* this) {
Entity* entities[4];
Entity* ent;
s32 count, i;
PosOffset* off;
u32 tmp;
/* Can we create enough new entities? */
count = gUnk_080D180C[this->entityType.form];
if (72 - count <= gEntCount)
return;
/* Create 2-5 new MiniFireballGuy */
for (i = 0; i < count; i++)
entities[i] = CreateEnemy(0x59, this->entityType.form);
off = gUnk_080D1810;
for (i = 0; i < count; i++) {
ent = entities[i];
ent->attachedEntity = entities[(i + 1) % count];
ent->parent = entities[(i + count - 1) % count];
tmp = 0;
ent->entityType.parameter = 1;
ent->height.HALF.HI = tmp;
ent->hurtBlinkTime = -0x10;
/* Set MiniFireballGuy offset relative to killed slime. */
sub_08045178(this, ent, off->h, off->v);
off++;
}
ent = CreateFx(this, 2, 0);
if (ent)
CopyPosition(this, ent);
DeleteEntity(this);
}
u32 sub_0804A024(Entity*, u32, u32);
void sub_08045524(Entity *this) {
u32 tmp, tmp1, tmp2;
this->field_0x20 = 0x1c000;
tmp = sub_0804A024(this,1,8);
if (tmp != 0xff && (Random() & 3) == 0) {
this->actionDelay = Random() & 3;
this->direction = tmp & 0x18;
} else {
if (this->actionDelay) {
this->actionDelay--;
return;
}
this->actionDelay = Random() & 3;
if (sub_08049FA0(this) == 0 && (Random() & 3)) {
tmp1 = sub_08049EE4(this);
tmp2 = Random() & 8;
tmp2 += 0xfc;
this->direction = (tmp1 + tmp2) & 0x18;
} else {
this->direction = Random() & 0x18;
}
}
}
+95
View File
@@ -0,0 +1,95 @@
#include "global.h"
#include "entity.h"
#include "room.h"
#include "functions.h"
void sub_08045374(Entity*);
extern u32 sub_0806FA04(u32, u32);
extern void sub_0804A720();
extern void sub_080452E4();
extern void sub_0804A9FC();
extern void sub_0804AA30();
extern void ReplaceMonitoredEntity(Entity*, Entity*);
extern void sub_0804A7D4(Entity*);
extern void (*const gUnk_080D17C0[])(Entity*);
extern void (*const gUnk_080D17D8[])(Entity*);
void MiniSlime(Entity* this) {
EnemyFunctionHandler(this, gUnk_080D17C0);
SetChildOffset(this, 0, 1, -8);
}
void sub_08045220(Entity* this) {
gUnk_080D17D8[this->action](this);
}
void sub_08045238(Entity* this) {
if (this->field_0x43)
sub_0804A9FC(this, 0x1c);
sub_0804AA30(this, gUnk_080D17C0);
}
void sub_0804525C(Entity* this) {
Entity* parent = this->parent;
if (this != parent && parent) {
this->field_0x6c.HALF.LO &= 0x7f;
this->parent->attachedEntity = this->attachedEntity;
this->attachedEntity->parent = this->parent;
if (this->field_0x6c.HALF.HI & 0x40)
ReplaceMonitoredEntity(this, parent);
}
sub_0804A7D4(this);
}
void nullsub_22(void) {
}
void sub_080452A4(Entity* this) {
this->action = 1;
this->spriteSettings.b.draw = 1;
this->nonPlanarMovement = 0x100;
sub_0804A720(this);
InitializeAnimation(this, 6);
if (this->entityType.parameter) {
this->action = 2;
this->actionDelay = 1;
} else {
sub_080452E4(this);
}
}
void sub_080452E4(Entity* this) {
this->action = 2;
this->actionDelay = (Random() & 0x1f) + 1;
}
void sub_080452FC(Entity *this) {
u32 cVar2, bVar3;
GetNextFrame(this);
if (--this->actionDelay == 0) {
this->action = 3;
this->actionDelay = 1;
if (0 < this->nonPlanarMovement)
this->actionDelay = sub_0806FA04(0x1000, this->nonPlanarMovement) >> 0x8;
if (sub_08049FA0(this) == 0 && (Random() & 3)) {
cVar2 = sub_08049EE4(this);
bVar3 = Random() & 8;
bVar3 += 0xfc;
this->direction = (cVar2 + bVar3) & 0x18;
} else {
this->direction = Random() & 0x18;
sub_08045374(this);
}
}
}
void sub_08045374(Entity* this) {
sub_080AEF88(this);
GetNextFrame(this);
if (--this->actionDelay == 0)
this->action = 1;
}
+78 -93
View File
@@ -1,5 +1,7 @@
#include "global.h"
#include "entity.h"
#include "room.h"
#include "functions.h"
typedef struct {
void* field_0x0;
@@ -7,28 +9,31 @@ typedef struct {
u8 freezeTime;
} EntityHandler;
extern void EnemyFunctionHandler(Entity*, void*);
extern void SetChildOffset(Entity*, u32, u32, u32);
extern void sub_0804AA30(Entity*, void*);
typedef struct {
s8 h, v;
} PACKED PosOffset;
void sub_08044FF8(Entity*);
void sub_08045178(Entity*, Entity*, int, int);
extern void sub_0804A9FC(Entity*, u32);
extern void sub_0804A720(Entity*);
extern void sub_08044FF8(Entity*);
extern u32 Random(void);
extern u32 sub_0806FA04(u32, u32);
extern u32 sub_08049FA0(Entity*);
extern u32 sub_08049EE4(Entity*);
extern u32 sub_080AEF88(void);
extern void sub_0804A4E4(Entity*, Entity*);
extern u32 sub_080002CC(Entity*, s32, s32);
extern void (*gUnk_080D16BC[])(Entity*);
extern void (*gUnk_080D16A4[])(Entity*);
extern void (*const gUnk_080D16BC[])(Entity*);
extern void (*const gUnk_080D16A4[])(Entity*);
extern u8 gUnk_080D16D0[4]; // Entity count per form
extern PosOffset gUnk_080D16D4[4];
extern u8 gUnk_080D16D0;
extern u8 gEntCount;
extern EntityHandler gUnk_03003DB8;
void Slime(Entity* this)
{
EnemyFunctionHandler(this, &gUnk_080D16A4);
void Slime(Entity* this) {
EnemyFunctionHandler(this, gUnk_080D16A4);
SetChildOffset(this, 0, 1, -12);
}
@@ -40,7 +45,7 @@ void sub_08044F88(Entity* this) {
if ((this->currentHealth != 0) && (this->cutsceneBeh.HALF.LO != this->currentHealth)) {
this->action = 4;
} else {
sub_0804AA30(this, &gUnk_080D16A4);
sub_0804AA30(this, gUnk_080D16A4);
}
if (this->field_0x43 != 0) {
@@ -61,32 +66,21 @@ void sub_08044FC8(Entity* this) {
}
void sub_08044FF8(Entity* this) {
u32 bVar1;
this->action = 2;
bVar1 = Random();
this->actionDelay = (bVar1 & 31) + 30;
this->actionDelay = (Random() & 31) + 30;
this->cutsceneBeh.HALF.LO = this->currentHealth;
}
void sub_08045018(Entity* this) {
u32 cVar1;
u32 param3;
u32 iVar3;
u32 randValue;
GetNextFrame(this);
param3 = this->actionDelay -= 1;
if (param3 == 0) {
if (--this->actionDelay == 0) {
this->action = 3;
this->actionDelay = 1;
if (0 < this->nonPlanarMovement) {
this->actionDelay = sub_0806FA04(4096, this->nonPlanarMovement) >> 8;
}
iVar3 = sub_08049FA0(this);
if ((iVar3 == 0) && (randValue = Random(), (randValue & 3) != 0)) {
cVar1 = sub_08049EE4(this);
this->direction = (cVar1 + 0xfc + (Random() & 8)) & 24;
if (sub_08049FA0(this) == 0 && (Random() & 3)) {
this->direction = (sub_08049EE4(this) + 0xfc + (Random() & 8)) & 24;
return;
}
this->direction = Random() & 24;
@@ -94,74 +88,65 @@ void sub_08045018(Entity* this) {
}
void sub_08045088(Entity* this) {
u8 bVar1;
sub_080AEF88();
sub_080AEF88(this);
GetNextFrame(this);
bVar1 = this->actionDelay -= 1;
if (bVar1 == 0) {
if (--this->actionDelay == 0) {
this->action = 1;
}
}
#ifdef NON_MATCHING
void sub_080450A8(Entity* this)
{
u8 bVar1;
u32 uVar2;
s32 iVar3;
s32 iVar4;
Entity* pEVar5;
Entity** ppEVar6;
s32 dividend;
u32 uVar7;
Entity* local_r6_72;
u32 divisor;
u8* pcVar8;
Entity* local_2c[4];
ppEVar6 = local_2c;
bVar1 = (&gUnk_080D16D0)[(this->entityType).form];
divisor = (u32)bVar1;
if ((int)gUnk_03003DB8.entityCount < (int)(72 - divisor)) {
uVar7 = divisor;
if (bVar1 != 0) {
do {
uVar2 = CreateEnemy(87, this->entityType.form);
*ppEVar6 = uVar2;
ppEVar6 = ppEVar6 + 1;
uVar7 = uVar7 - 1;
} while (uVar7 != 0);
}
pcVar8 = "\x06";
iVar4 = 0;
if (bVar1 != 0) {
do {
local_r6_72 = local_2c[iVar4];
dividend = iVar4 + 1;
iVar3 = Div(dividend, divisor);
local_r6_72->attachedEntity = local_2c[iVar3];
iVar4 = Div(iVar4 + divisor + -1, divisor);
local_r6_72->parent = local_2c[iVar4];
(local_r6_72->entityType).parameter = 1;
local_r6_72->height.WORD = 0;
local_r6_72->hurtBlinkTime = 240;
sub_08045178(this, local_r6_72, *pcVar8, pcVar8[1]);
pcVar8 = pcVar8 + 2;
iVar4 = dividend;
} while (dividend < divisor);
}
pEVar5 = CreateFx(this, 2, 0);
if (pEVar5 != NULL) {
CopyPosition(this, pEVar5);
}
DeleteEnemy(this);
}
}
#else
NAKED
/* Split slime into new ones */
void sub_080450A8(Entity* this) {
asm(".include \"asm/non_matching/slime/sub_080450A8.inc\"");
Entity* entities[4];
Entity* ent;
s32 count, i;
PosOffset* off;
/* Can we create enough new entities? */
count = gUnk_080D16D0[this->entityType.form];
if (72 - count <= gEntCount)
return;
/* Create 2-4 new MiniSlime */
for (i = 0; i < count; i++)
entities[i] = CreateEnemy(0x57, this->entityType.form);
off = gUnk_080D16D4;
for (i = 0; i < count; i++) {
ent = entities[i];
ent->attachedEntity = entities[(i + 1) % count];
ent->parent = entities[(i + count - 1) % count];
ent->entityType.parameter = 1;
ent->height.HALF.HI = 0;
ent->hurtBlinkTime = -0x10;
/* Set MiniSlime offset relative to killed slime. */
sub_08045178(this, ent, off->h, off->v);
off++;
}
ent = CreateFx(this, 2, 0);
if (ent)
CopyPosition(this, ent);
DeleteEntity(this);
}
void sub_08045178(Entity* this, Entity* child, int h, int v) {
int x, y;
if (child == NULL)
return;
sub_0804A4E4(this, child);
if (sub_080002CC(child, h, v))
return;
x = child->x.HALF.HI + h;
if (0 <= x && x < (gRoomControls.roomOriginX + gRoomControls.width))
child->x.HALF.HI = x;
y = child->y.HALF.HI + v;
if (0 <= y && y < (gRoomControls.roomOriginY + gRoomControls.height))
child->y.HALF.HI = y;
}
#endif
+80 -39
View File
@@ -6,25 +6,42 @@
#include "area.h"
#include "functions.h"
extern void (*(gUnk_08108208[]))(Manager*);
/*
* Manager B is used to create fights:
* It possibly waits for an inhibitor flag to be set, then spawns a bunch of entities (based on room data).
* Once all enemies created this way are dead, it sets a flag.
* (There is also a part about changing the music and setting it back when the fight is done, which is song 0x33 (a fight theme) by default but can be overridden through room data)
*/
void (*const ManagerB_ActionFuncs[])(Manager*);
void sub_080585F0(Manager* this) {
gUnk_08108208[this->unk_0a](this);
//make a distincion if this is a controller (unk_0a = 0) or a helper (unk_0a = 1)
ManagerB_ActionFuncs[this->unk_0a](this);
}
extern void (*(gUnk_08108210[]))(Manager*);
enum ManagerB_State {
Init,
WaitForFlag,
WaitForDone
};
void sub_08058608(Manager* this) {
gUnk_08108210[this->action](this);
void (*const ManagerB_StateFuncs[])(ManagerB*);
void ManagerB_Main(ManagerB* this) {
//make a distinction based on the state of this controller
ManagerB_StateFuncs[this->manager.action](this);
}
void sub_080586EC(Manager*);
void ManagerB_LoadFight(Manager*);
void sub_08058620(ManagerB* this) {
void ManagerB_Init(ManagerB* this) {
//check if the fight was already completed previously (checks the flag that gets set after the fight is done)
if (!CheckFlags(this->unk_3e)) {
this->manager.action = 1;
this->manager.action = WaitForFlag;
//if there is no flag that needs to be set before the fight is started, start it immediately
if (!this->unk_3c) {
sub_080586EC(&this->manager);
ManagerB_LoadFight(&this->manager);
}
sub_0805E3A0(this, 3);
} else {
@@ -33,10 +50,10 @@ void sub_08058620(ManagerB* this) {
}
extern void sub_080186C0(u32);
void sub_08058650(ManagerB* this) {
void ManagerB_WaitForFlag(ManagerB* this) {
int tmp;
if (CheckFlags(this->unk_3c)) {
sub_080586EC(&this->manager);
ManagerB_LoadFight(&this->manager);
if (!this->unk_35) {
tmp = gRoomVars.field_0x9 ? gRoomVars.field_0x9 : 0x33;
this->unk_20 = gArea.musicIndex;
@@ -49,9 +66,12 @@ void sub_08058650(ManagerB* this) {
extern void sub_0801855C(void);
void sub_080586A8(ManagerB* this) {
void ManagerB_WaitForDone(ManagerB* this) {
//check if all helpers are done
if (this->manager.unk_0e) return;
//set the completion flag for the fight
SetFlag(this->unk_3e);
//restore music (if it was set, which apparently is only possible if there's a flag the fight waited for)
if (this->unk_3c) {
if (!this->unk_35) {
gArea.musicIndex = this->unk_20;
@@ -62,40 +82,45 @@ void sub_080586A8(ManagerB* this) {
DeleteThisEntity();
}
ManagerBHelper* sub_08058760(Manager*);
void sub_08058798(ManagerBHelper*, Entity*, u32);
ManagerBHelper* CreateHelper(Manager*);
void ManagerBHelper_Monitor(ManagerBHelper*, Entity*, u32);
extern EntityData* GetCurrentRoomProperty(u8);
extern Entity* LoadRoomEntity(EntityData*);
void sub_080586EC(Manager* this) {
ManagerBHelper* tmp;
void ManagerB_LoadFight(Manager* this) {
ManagerBHelper* monitor;
EntityData* prop;
Entity* ent;
u32 counter;
this->action = 2;
this->unk_0e = 0;
counter = 0;
tmp = sub_08058760(this);
if (!tmp) DeleteThisEntity();
//Create a helper to keep track of the created entities.
monitor = CreateHelper(this);
if (!monitor) DeleteThisEntity();
prop = (EntityData*) GetCurrentRoomProperty(this->unk_0b);
if (prop) {
while (*((u8*)prop) != 0xFF) {
ent = LoadRoomEntity(prop++);
if (ent && (ent->entityType.type == 3)) {
ent->field_0x6c.HALF.HI |= 0x40;
sub_08058798(tmp, ent, counter++);
ManagerBHelper_Monitor(monitor, ent, counter++);
}
if (counter >= 7) {
counter = 0;
tmp = sub_08058760(this);
if (!tmp) return;
monitor = CreateHelper(this);
if (!monitor) return;
}
}
}
}
ManagerBHelper* sub_08058760(Manager* this) {
/*
* Create a helper and increment the counter for the number of helpers (unk_0e).
* The helper will decrease said counter when it deletes itself (when none of the enemies it monitors remain).
*/
ManagerBHelper* CreateHelper(Manager* this) {
ManagerBHelper* extra;
extra = (ManagerBHelper*) GetEmptyManager();
if (extra) {
@@ -110,51 +135,67 @@ ManagerBHelper* sub_08058760(Manager* this) {
return extra;
}
void sub_08058798(ManagerBHelper* this, Entity* value, u32 index) {
this->enemies[index]=value;
void ManagerBHelper_Monitor(ManagerBHelper* this, Entity* ent, u32 index) {
this->enemies[index]=ent;
this->manager.unk_0e++;
}
void sub_080587AC(ManagerBHelper* this) {
u8 i, tmp;
//case unk_0a is 1: The manager is a helper
void ManagerBHelper_Main(Manager* this) {
u8 i, anyRemaining;
Entity* current;
if (this->manager.action == 0) {
this->manager.action = 1;
if (this->action == 0) {
this->action = 1;
sub_0805E3A0(this,3);
}
tmp = 0;
//go through and check all monitored enemies.
anyRemaining = 0;
for (i = 0; i < 8; i++) {
if ((current = this->enemies[i])) {
if ((current = ((ManagerBHelper*)this)->enemies[i])) {
if (!current->next) {
this->enemies[i] = 0;
((ManagerBHelper*) this)->enemies[i] = 0;
} else {
tmp = 1;
anyRemaining = 1;
}
}
}
if (!tmp) {
if (((ManagerB*) this->manager.parent)->manager.unk_0e) {
((ManagerB*) this->manager.parent)->manager.unk_0e--;
if (!anyRemaining) {
//inform the parent that we're done
if (((ManagerB*) this->parent)->manager.unk_0e) {
((ManagerB*) this->parent)->manager.unk_0e--;
}
DeleteThisEntity();
DeleteThisEntity();
}
}
extern Manager gUnk_03003DB0;
void sub_08058800(Entity* this, Entity* unk1) {
/*
* Replace an entity that is currently being monitored with a new one
*/
void ReplaceMonitoredEntity(Entity* old, Entity* new) {
ManagerBHelper* current;
Manager* end = &gUnk_03003DB0;
u32 i;
for (current = (ManagerBHelper*) end->next; (Manager*)current != end; current=(ManagerBHelper*)current->manager.next) {
if (current->manager.type != 0x9 || current->manager.subtype != 0xB) continue;
for (i = 0; i < 8; i++) {
if (this == current->enemies[i]) {
current->enemies[i] = unk1;
if (old == current->enemies[i]) {
current->enemies[i] = new;
return;
}
}
}
}
void (*const ManagerB_ActionFuncs[])(Manager*) = {
(void (*)(Manager*)) ManagerB_Main,
(void (*)(Manager*)) ManagerBHelper_Main
};
void (*const ManagerB_StateFuncs[])(ManagerB*) = {
ManagerB_Init,
ManagerB_WaitForFlag,
ManagerB_WaitForDone
};
+3 -7
View File
@@ -1,21 +1,19 @@
#include "global.h"
#include "entity.h"
#include "player.h"
#include "functions.h"
extern void sub_0806ED78(Entity*);
extern void sub_0806920C(Entity*);
extern u32 sub_0805ACC0(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0806924C(Entity*);
extern void sub_080AEF88(Entity*);
extern void ShowNPCDialogue(Entity*, u32*);
extern void sub_08078778(Entity*);
extern void sub_080787A8(Entity*, u32);
extern void sub_0806F118(Entity*);
extern void sub_080791D0();
extern void (*gUnk_08111914[])(Entity*);
extern void (*gUnk_08111928[])(Entity*);
extern u32 gUnk_08111938[];
extern Dialog gUnk_08111938[];
extern void PlaySFX(u32);
extern u32 Random();
extern u32 UpdateFuseInteraction(Entity*);
@@ -184,9 +182,7 @@ void sub_080691E0(Entity* ent) {
// Show dialogue
void Cow_ShowDialogue(Entity* ent) {
u32 var0 = ent->entityType.form;
u32* var1 = gUnk_08111938 + (var0 * 2);
ShowNPCDialogue(ent, var1);
ShowNPCDialogue(ent, &gUnk_08111938[ent->entityType.form]);
}
void sub_0806920C(Entity* ent) {
+2 -2
View File
@@ -8,7 +8,7 @@ void sub_08065A64(Entity* this);
void sub_08065AA4(Entity*);
extern void (*gUnk_0811006C[])(Entity*);
extern u32 gUnk_08110080[];
extern Dialog gUnk_08110080[];
void Epona(Entity* this) {
gUnk_0811006C[this->action](this);
@@ -50,7 +50,7 @@ void sub_08065A34(Entity* this) {
}
void sub_08065A50(Entity* this) {
ShowNPCDialogue(this, &gUnk_08110080[this->entityType.form * 2]);
ShowNPCDialogue(this, &gUnk_08110080[this->entityType.form]);
}
void sub_08065A64(Entity* this) {
-1
View File
@@ -10,7 +10,6 @@ extern void sub_0807DD50(Entity*);
extern void sub_0806F118(Entity*);
extern void ExecuteScriptCommandSet(Entity*, void *);
extern void sub_0805FF2C(Entity*, void*);
extern void sub_0806ED78(Entity*);
extern void (*const gUnk_08109BBC[])(Entity*);
+100 -118
View File
@@ -5,9 +5,8 @@
#include "textbox.h"
#include "player.h"
#include "structures.h"
#include "functions.h"
extern void sub_0805E3A0(Entity*, u32);
extern void StartCutscene(Entity*, void*);
extern void sub_0807DD50(Entity*);
extern void sub_0806F118(Entity*);
extern void sub_0807DDAC(Entity*, u32);
@@ -16,7 +15,6 @@ extern void sub_080600F0(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_08078784(Entity*, u32);
extern void sub_0807000C(Entity*);
extern void sub_080042BA(Entity*, u32);
extern void sub_08060158(Entity*);
extern u32 CheckKinstoneFused(u32);
extern Entity* FindEntityInListBySubtype(u32, u32, u32);
@@ -26,10 +24,10 @@ extern u32 Random(void);
extern void ModBombs(s32);
extern SpriteLoadData gUnk_0810A348;
extern void* gUnk_08109D18[];
extern u8* gUnk_08109D18[];
extern u8 gUnk_08109C98[];
extern u16 gUnk_0810A354[];
extern u32 gUnk_08109DC8[];
extern Dialog gUnk_08109DC8[];
extern u16 gUnk_0810A35A[];
extern u16 gUnk_0810A362[];
@@ -165,141 +163,125 @@ void sub_080601D4(Entity* this) {
TextboxNoOverlap(gUnk_0810A354[uVar2], this);
}
void sub_08060208(Entity *this)
{
ShowNPCDialogue(this, &gUnk_08109DC8[this->entityType.parameter * 0x8]);
void sub_08060208(Entity* this) {
ShowNPCDialogue(this, &gUnk_08109DC8[this->entityType.parameter * 0x4]);
}
void sub_0806021C(Entity *this)
{
u32 uVar1;
u32 uVar2;
void sub_0806021C(Entity* this) {
u32 uVar1;
u32 uVar2;
//jabber nut
uVar1 = GetInventoryValue(0x5B);
uVar2 = (-uVar1 | uVar1) >> 0x1f;
// jabber nut
uVar1 = GetInventoryValue(0x5B);
uVar2 = (-uVar1 | uVar1) >> 0x1f;
//earth element
if (GetInventoryValue(0x40)) {
uVar2 = 2;
}
//mole mitts
if (GetInventoryValue(0x13)) {
uVar2 = 3;
}
ShowNPCDialogue(this, gUnk_08109DC8 + this->entityType.parameter * 0x8 + uVar2 * 2);
}
void sub_0806025C(Entity *this)
{
ShowNPCDialogue(this, &gUnk_08109DC8[this->entityType.parameter * 0x8]);
}
void sub_08060270(Entity *this)
{
u32 index;
//flippers
if (GetInventoryValue(0x46) == 0) {
index = 1;
if (CheckGlobalFlag(MIZUKAKI_START) == 0) {
index = 0;
SetGlobalFlag(MIZUKAKI_START);
// earth element
if (GetInventoryValue(0x40)) {
uVar2 = 2;
}
}
else {
index = 3;
if (CheckLocalFlag(0x76) == 0) {
index = 2;
SetLocalFlag(0x76);
// mole mitts
if (GetInventoryValue(0x13)) {
uVar2 = 3;
}
}
TextboxNoOverlap(gUnk_0810A35A[index], this);
ShowNPCDialogue(this, gUnk_08109DC8 + this->entityType.parameter * 0x4 + uVar2);
}
void sub_080602BC(Entity *this)
{
u32 index;
//spin attack
void sub_0806025C(Entity* this) {
ShowNPCDialogue(this, &gUnk_08109DC8[this->entityType.parameter * 0x4]);
}
void sub_08060270(Entity* this) {
u32 index;
// flippers
if (GetInventoryValue(0x46) == 0) {
index = 1;
if (CheckGlobalFlag(MIZUKAKI_START) == 0) {
index = 0;
SetGlobalFlag(MIZUKAKI_START);
}
} else {
index = 3;
if (CheckLocalFlag(0x76) == 0) {
index = 2;
SetLocalFlag(0x76);
}
}
TextboxNoOverlap(gUnk_0810A35A[index], this);
}
void sub_080602BC(Entity* this) {
u32 index;
// spin attack
if (GetInventoryValue(0x48) != 0) {
index = (Random() & 1) + 2;
index = (Random() & 1) + 2;
} else {
if (gUnk_02002A40.stats.bombCount < gBombBagSizes[gUnk_02002A40.stats.bombBagType]) {
index = 1;
} else {
index = 0;
}
}
else {
if (gUnk_02002A40.stats.bombCount < gBombBagSizes[gUnk_02002A40.stats.bombBagType]) {
index = 1;
}
else {
index = 0;
}
}
TextboxNoOverlap(gUnk_0810A362[index], this);
TextboxNoOverlap(gUnk_0810A362[index], this);
}
void sub_0806030C(Entity* this, u32 *arg1)
{
void sub_0806030C(Entity* this, u32* arg1) {
ModBombs(*(arg1 + 1));
}
void sub_08060318(void)
{
Entity *ent;
int i;
for (i = 2; i >= 0; i--) {
ent = FindEntityInListBySubtype(8, 2, 2);
if (ent != NULL) {
sub_080A29BC(ent);
DeleteEntity(ent);
void sub_08060318(void) {
Entity* ent;
int i;
for (i = 2; i >= 0; i--) {
ent = FindEntityInListBySubtype(8, 2, 2);
if (ent != NULL) {
sub_080A29BC(ent);
DeleteEntity(ent);
}
}
}
}
void sub_08060340(void)
{
gUnk_02002A40.unk490 = gUnk_02002A40.unk50;
void sub_08060340(void) {
gUnk_02002A40.unk490 = gUnk_02002A40.unk50;
}
u32 sub_08060354(void)
{
u32 iVar1;
s32 iVar2;
iVar2 = gUnk_02002A40.unk50 - gUnk_02002A40.unk490;
if (CheckGlobalFlag(DRUG_1) == 0) {
if (4 < iVar2) {
return 0x8444;
u32 sub_08060354(void) {
u32 iVar1;
s32 iVar2;
iVar2 = gUnk_02002A40.unk50 - gUnk_02002A40.unk490;
if (CheckGlobalFlag(DRUG_1) == 0) {
if (4 < iVar2) {
return 0x8444;
}
} else {
if (CheckGlobalFlag(DRUG_2) == 0) {
if (iVar2 > 9) {
return 0x8444;
}
} else {
if (CheckGlobalFlag(DRUG_3) == 0) {
if (iVar2 > 14) {
return 0x8444;
}
}
}
}
}
else {
if (CheckGlobalFlag(DRUG_2) == 0) {
if (iVar2 > 9) {
return 0x8444;
}
}
else {
if (CheckGlobalFlag(DRUG_3) == 0) {
if (iVar2 > 14) {
return 0x8444;
}
}
}
}
return 0;
return 0;
}
void ForestMinish_Fusion(Entity *this)
{
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_0810A348)) {
this->action++;
this->spriteSettings.b.draw = TRUE;
sub_0805E3A0(this, 2);
InitializeAnimation(this, 6);
void ForestMinish_Fusion(Entity* this) {
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_0810A348)) {
this->action++;
this->spriteSettings.b.draw = TRUE;
sub_0805E3A0(this, 2);
InitializeAnimation(this, 6);
}
} else {
GetNextFrame(this);
}
}
else {
GetNextFrame(this);
}
}
+6 -5
View File
@@ -3,9 +3,10 @@
#include "functions.h"
#include "textbox.h"
extern u8 gUnk_02033280[];
extern void (*gUnk_08111A80[])(Entity*);
extern void (*gUnk_08111A8C[])(Entity*);
extern u8 gUnk_02033280[];
extern Dialog gUnk_08111A94[];
void Goron(Entity* this) {
if (this->flags & 2) {
@@ -72,7 +73,7 @@ void sub_080693D0(Entity* this) {
}
if (this->frames.all == 2) {
this->frames.all = 0;
sub_08069428(this, 0x80<<12, createFx65);
sub_08069428(this, 0x80 << 12, createFx65);
}
}
}
@@ -110,16 +111,16 @@ void sub_080694B0(Entity* this) {
}
}
extern u64 gUnk_08111A94[]; //array of unknown 64 bit structure type
void sub_080694D8(Entity* this) {
ShowNPCDialogue(this, (u32*)&gUnk_08111A94[this->entityType.form]);
ShowNPCDialogue(this, &gUnk_08111A94[this->entityType.form]);
}
void sub_080694EC(Entity* this) {
u32 anim;
this->animationState = 4;
anim = 2;
if (!CheckKinstoneFused(47)) anim = 8;
if (!CheckKinstoneFused(47))
anim = 8;
InitAnimationForceUpdate(this, anim);
this->field_0x80.HWORD = anim;
}
+8 -20
View File
@@ -84,24 +84,12 @@ void sub_0806b2b4(Entity* this) {
TextboxNoOverlap(gUnk_08112D50[index], this);
}
void Librari_Fusion(Entity *this)
{
if (this->action == 0) {
this->action++;
this->spriteSettings.b.draw = TRUE;
InitAnimationForceUpdate(this, 9);
}
else {
UpdateAnimationSingleFrame(this);
}
void Librari_Fusion(Entity* this) {
if (this->action == 0) {
this->action++;
this->spriteSettings.b.draw = TRUE;
InitAnimationForceUpdate(this, 9);
} else {
UpdateAnimationSingleFrame(this);
}
}
void Percy_Head(Entity *this) // ???
{
SetExtraSpriteFrame(this, 0, (this->frameSpriteSettings & 0x3f) + 0x13);
SetExtraSpriteFrame(this, 1, (this->frames.all & 0x7f) + 0xb);
SetExtraSpriteFrame(this, 2, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, 2, 1);
SetSpriteSubEntryOffsetData2(this, 2, 0);
sub_0807000C(this);
}
+39 -48
View File
@@ -7,33 +7,30 @@
#include "textbox.h"
#include "npc.h"
#include "structures.h"
#include "functions.h"
extern void sub_0807DD50(Entity*);
extern u32 sub_0806F5A4(u32);
extern void sub_0806F118(Entity*);
extern u32 sub_0801E99C();
extern void sub_08078784(Entity*,u32);
extern void sub_0807DDAC(Entity*,u32);
extern void sub_0805E3A0(Entity*,u32);
extern void sub_08078784(Entity*, u32);
extern void sub_0807DDAC(Entity*, u32);
extern void sub_0807DDE4(Entity*);
extern void sub_08078850();
extern u32 gUnk_08113F44;
extern u32 gUnk_08113F48;
extern Dialog gUnk_08113F48[];
extern u32 GetInventoryValue(u32);
extern u32 CheckLocalFlag(u32);
extern void SetLocalFlag();
extern void ShowNPCDialogue();
void MayorHagen(Entity *this)
{
void MayorHagen(Entity* this) {
u32 v;
switch (this->action) {
case 0:
this->action = 1;
this->field_0x68.HALF.HI = 0;
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_0805E3A0(this, 2);
sub_0807DD50(this);
this->action = 1;
this->field_0x68.HALF.HI = 0;
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_0805E3A0(this, 2);
sub_0807DD50(this);
break;
case 1:
v = this->interactType;
@@ -41,11 +38,11 @@ void MayorHagen(Entity *this)
this->action = v;
this->interactType = 0;
this->field_0x68.HALF.HI = this->animIndex;
InitAnimationForceUpdate(this,4 + sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
InitAnimationForceUpdate(this, 4 + sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)));
sub_0806F118(this);
break;
}
sub_0807DDAC(this,0);
sub_0807DDAC(this, 0);
sub_0807DDE4(this);
UpdateAnimationSingleFrame(this);
break;
@@ -57,49 +54,43 @@ void MayorHagen(Entity *this)
}
}
void sub_0806CE5C(Entity *this)
{
sub_08078784(this,sub_0801E99C());
sub_08078850(this,1,0,&gUnk_08113F44);
void sub_0806CE5C(Entity* this) {
sub_08078784(this, sub_0801E99C(this));
sub_08078850(this, 1, 0, &gUnk_08113F44);
}
void sub_0806CE80(Entity *this)
{
void sub_0806CE80(Entity* this) {
u32 v;
u32 v2;
v = gUnk_02002A40.unk8;
if (v == 5) {
//flippers
if (GetInventoryValue(0x46) == 0) {
if (CheckLocalFlag(0x70) != 0) {
v2 = CheckLocalFlag(0x71);
if (v2 == 0) {
v = 0xb;
SetLocalFlag(0x71);
}
else {
v = 0xc;
}
}
else {
if (v == 5) {
// flippers
if (GetInventoryValue(0x46) == 0) {
if (CheckLocalFlag(0x70) != 0) {
v2 = CheckLocalFlag(0x71);
if (v2 == 0) {
v = 0xb;
SetLocalFlag(0x71);
} else {
v = 0xc;
}
} else {
v = 0xa;
}
}
else {
v2 = CheckLocalFlag(0x89);
if (v2 == 0) {
v = 0xd;
SetLocalFlag(0x89);
}
else {
v = 0xe;
}
} else {
v2 = CheckLocalFlag(0x89);
if (v2 == 0) {
v = 0xd;
SetLocalFlag(0x89);
} else {
v = 0xe;
}
}
}
}
ShowNPCDialogue(this,&gUnk_08113F48 + 2*v);
ShowNPCDialogue(this, &gUnk_08113F48[v]);
}
void MayorHagen_Fusion(Entity *this) {
void MayorHagen_Fusion(Entity* this) {
if (this->action == 0) {
this->action++;
this->spriteSettings.b.draw = 1;
-1
View File
@@ -4,7 +4,6 @@
#include "textbox.h"
#include "functions.h"
extern void sub_0806ED78(Entity*);
extern void sub_08068780(Entity*);
extern void sub_08078778(Entity*);
extern u32 Random(void);
+42 -49
View File
@@ -5,8 +5,8 @@
#include "textbox.h"
#include "npc.h"
#include "structures.h"
#include "functions.h"
extern void sub_0805E3A0(Entity*, u32);
extern void sub_0807DD50(Entity*);
extern u32 GetFacingDirection(Entity*, Entity*);
extern u32 sub_0806F5A4(u32);
@@ -19,10 +19,9 @@ extern void sub_08078784(Entity*, u32);
extern SpriteLoadData gUnk_08110C00;
extern u16 gUnk_08110C0C[];
extern u32 gUnk_08110C10[];
extern Dialog gUnk_08110C10[];
void Mutoh(Entity* this)
{
void Mutoh(Entity* this) {
if (*(u32*)&this->cutsceneBeh == 0) {
DeleteThisEntity();
}
@@ -30,11 +29,11 @@ void Mutoh(Entity* this)
switch (this->action) {
case 0:
if (LoadExtraSpriteData(this, &gUnk_08110C00)) {
this->action = 1;
this->spriteSettings.b.draw = TRUE;
sub_0805E3A0(this, 2);
sub_0807DD50(this);
}
this->action = 1;
this->spriteSettings.b.draw = TRUE;
sub_0805E3A0(this, 2);
sub_0807DD50(this);
}
break;
case 1:
if (this->interactType == 2) {
@@ -53,48 +52,42 @@ void Mutoh(Entity* this)
}
}
void Mutoh_Head(Entity *this)
{
SetExtraSpriteFrame(this, 0, (this->frames.all & -0x81));
SetExtraSpriteFrame(this, 1, this->frameIndex);
SetSpriteSubEntryOffsetData1(this,1,0);
sub_0807000C(this);
void Mutoh_Head(Entity* this) {
SetExtraSpriteFrame(this, 0, (this->frames.all & -0x81));
SetExtraSpriteFrame(this, 1, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, 1, 0);
sub_0807000C(this);
}
void sub_080670B4(Entity *this)
{
u32 uVar1;
u32 uVar2;
uVar2 = 0;
if (GetInventoryValue(0x11) == 0) {
uVar1 = CheckGlobalFlag(TABIDACHI);
uVar2 = (-uVar1 | uVar1) >> 0x1f;
}
TextboxNoOverlap(gUnk_08110C0C[uVar2],this);
}
void sub_080670B4(Entity* this) {
u32 uVar1;
u32 uVar2;
void sub_080670E4(Entity *this)
{
ShowNPCDialogue(this, &gUnk_08110C10[gUnk_02002A40.unk8 * 2]);
}
void sub_08067100(Entity *this)
{
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_08078784(this, this->field_0x68.HALF.LO);
}
void Mutoh_Fusion(Entity *this)
{
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_08110C00) != 0) {
this->action++;
this->spriteSettings.b.draw = TRUE;
InitializeAnimation(this, 2);
uVar2 = 0;
if (GetInventoryValue(0x11) == 0) {
uVar1 = CheckGlobalFlag(TABIDACHI);
uVar2 = (-uVar1 | uVar1) >> 0x1f;
}
TextboxNoOverlap(gUnk_08110C0C[uVar2], this);
}
void sub_080670E4(Entity* this) {
ShowNPCDialogue(this, &gUnk_08110C10[gUnk_02002A40.unk8]);
}
void sub_08067100(Entity* this) {
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_08078784(this, this->field_0x68.HALF.LO);
}
void Mutoh_Fusion(Entity* this) {
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_08110C00) != 0) {
this->action++;
this->spriteSettings.b.draw = TRUE;
InitializeAnimation(this, 2);
}
} else {
GetNextFrame(this);
}
}
else {
GetNextFrame(this);
}
}
+87 -16
View File
@@ -3,12 +3,28 @@
#include "npc.h"
#include "textbox.h"
#include "functions.h"
#include "flags.h"
extern void sub_0806B41C(Entity*);
void sub_0806B3CC(Entity*);
extern void sub_0806B3CC(Entity*);
extern u32 sub_08002632(Entity*);
extern void sub_0801DFB4(Entity*, u32, u32, u32);
extern u16* gUnk_08001A7C[40];
extern u16 gUnk_08112E54[4];
extern Dialog gUnk_08112E2C[5];
extern SpriteLoadData gUnk_08112E1C;
void Percy_Head(Entity* this) {
SetExtraSpriteFrame(this, 0, (this->frameSpriteSettings & 0x3f) + 0x13);
SetExtraSpriteFrame(this, 1, (this->frames.all & 0x7f) + 0xb);
SetExtraSpriteFrame(this, 2, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, 2, 1);
SetSpriteSubEntryOffsetData2(this, 2, 0);
sub_0807000C(this);
}
void Percy(Entity* this) {
if ((this->flags & 2) != 0) {
sub_0806B41C(this);
@@ -17,20 +33,75 @@ void Percy(Entity* this) {
}
}
void sub_0806B3CC(Entity *this)
{
if (this->action == 0) {
if (!LoadExtraSpriteData(this, &gUnk_08112E1C)) {
return;
void sub_0806B3CC(Entity* this) {
if (this->action == 0) {
if (!LoadExtraSpriteData(this, &gUnk_08112E1C)) {
return;
}
this->action = 1;
InitializeAnimation(this, 0);
sub_08078778(this);
}
this->action = 1;
InitializeAnimation(this, 0);
sub_08078778(this);
}
GetNextFrame(this);
if (this->interactType != 0) {
this->interactType = 0;
TextboxNoOverlapFollow(0);
}
sub_0806ED78(this);
GetNextFrame(this);
if (this->interactType != 0) {
this->interactType = 0;
TextboxNoOverlapFollow(0);
}
sub_0806ED78(this);
}
void sub_0806B41C(Entity* this) {
u16* tmp;
u32 idx;
switch (this->action) {
case 0:
if (LoadExtraSpriteData(this, &gUnk_08112E1C)) {
this->action = 1;
this->spriteSettings.b.draw = 1;
if (this->entityType.parameter == 2) {
CreateFx(this, 0x25, 0);
}
sub_0807DD50(this);
}
break;
case 1:
if (this->interactType == 2) {
this->action = 2;
this->interactType = 0;
InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)) + 4);
idx = sub_08002632(this);
tmp = gUnk_08001A7C[idx];
if (this->field_0x68.HALF.LO == 33)
tmp += 3;
sub_0801DFB4(this, tmp[0], tmp[1], tmp[2]);
gPlayerState.field_0x8b = 3;
} else {
sub_0807DD94(this, 0);
}
break;
case 2:
if (UpdateFuseInteraction(this)) {
this->action = 1;
}
break;
}
}
void sub_0806B4F0(Entity* this) {
ShowNPCDialogue(this, &gUnk_08112E2C[this->entityType.parameter]);
}
void sub_0806B504(Entity* this) {
int idx;
idx = 1;
if (CheckKinstoneFused(0x21)) {
idx = 3;
} else if (!CheckLocalFlag(0x86)) {
idx = 0;
SetLocalFlag(0x86);
}
TextboxNoOverlap(gUnk_08112E54[idx], this);
}
+6 -7
View File
@@ -18,7 +18,6 @@ extern void sub_0806EE04(Entity*, void*, u32);
extern void sub_080604DC(Entity*);
extern s32 sub_0806ED9C(Entity*, u32, u32);
extern void sub_0806EE20(Entity*);
extern void sub_0806ED78(Entity*);
extern u32 sub_080040A8(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0807DD50(Entity*);
@@ -43,7 +42,7 @@ extern Coords16 gUnk_0810A66C[];
extern s8* gUnk_0810A918[];
extern void (*const gUnk_0810AA24[])(Entity*);
extern u32 gUnk_0810AA30[];
extern Dialog gUnk_0810AA30[];
extern struct_02033280 gUnk_02033280;
void Postman(Entity* this) {
@@ -205,13 +204,13 @@ void sub_080606C0(Entity *this)
void sub_080606D8(Entity* this)
{
s32 iVar1;
s32 index;
iVar1 = gUnk_02002A40.unk8 - 2;
if (iVar1 < 0) {
iVar1 = 0;
index = gUnk_02002A40.unk8 - 2;
if (index < 0) {
index = 0;
}
ShowNPCDialogue(this, &gUnk_0810AA30[iVar1 * 2]);
ShowNPCDialogue(this, &gUnk_0810AA30[index]);
}
void sub_08060700(Entity *entity, u32 arg1)
-1
View File
@@ -4,7 +4,6 @@
extern void sub_0807DDAC(Entity*, u32);
extern void sub_0807DDE4(Entity*);
extern void sub_0806ED78(Entity*);
extern void PlaySFX(u32);
extern void sub_0806A8C8(Entity*);
extern void sub_0807DD94(Entity*, u32);
+137 -168
View File
@@ -1,30 +1,22 @@
#include "global.h"
#include "entity.h"
#include "textbox.h"
typedef struct {
u8 filler[8];
u8 unk;
} SaveFile;
#include "functions.h"
extern u32 GetFacingDirection(Entity*, Entity*);
extern u32 sub_0806F5A4(u32);
extern void sub_0806F118(Entity*);
extern void sub_0806ED78(Entity*);
extern Entity* CreateFx(Entity*, u32, u32);
extern void PlaySFX(u32);
extern u32 Random(void);
extern void sub_0807000C(Entity*);
extern u32 sub_0801E99C(Entity*);
extern u32 sub_0806ED9C(Entity*, u32, u32);
extern u32 sub_0806F078(Entity*, u32);
extern void sub_0807DD50(Entity*);
extern void sub_0807DD94(Entity*, u32);
extern void sub_0807DDAC(Entity*, u32);
extern void sub_0807DDE4(Entity*);
extern u32 UpdateFuseInteraction(Entity*);
extern u32 GetAnimationState(Entity*);
extern void ShowNPCDialogue(Entity*, u32*);
extern void sub_08078850(u32, u32, u32, u32*);
extern void sub_08078784(Entity*, u32);
@@ -33,193 +25,170 @@ extern void (*const gUnk_0811036C[])(Entity*);
extern u16 gUnk_08110380[];
extern SpriteLoadData gUnk_08110354;
extern SaveFile gUnk_02002A40;
extern u32 gUnk_08110390[];
extern Dialog gUnk_08110390[];
extern u16 gUnk_081103D0[];
extern u32 gUnk_081103E0;
#if NON_MATCHING //reg-alloc
void Smith(Entity *this)
{
u32 iVar2;
u32 iVar4;
if ((this->flags & 2) != 0) {
if (this->interactType == 2) {
this->action = 4;
this->interactType = 0;
iVar4 = (this->animIndex == 0xc) ? 8 : 0;
iVar2 = sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity));
InitAnimationForceUpdate(this, iVar2 + iVar4);
sub_0806F118(this);
#if NON_MATCHING // reg-alloc
void Smith(Entity* this) {
u32 iVar2;
u32 iVar4;
if ((this->flags & 2) != 0) {
if (this->interactType == 2) {
this->action = 4;
this->interactType = 0;
iVar4 = (this->animIndex == 0xc) ? 8 : 0;
iVar2 = sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity));
InitAnimationForceUpdate(this, iVar2 + iVar4);
sub_0806F118(this);
}
gUnk_0811036C[this->action](this);
} else {
gUnk_08110360[this->action](this);
sub_0806ED78(this);
}
if (this->animIndex == 0xc) {
this->spritePriority.b1 = 0;
} else {
this->spritePriority.b1 = 1;
}
if ((this->frames.all & 1) != 0) {
this->frames.all &= 0xfe;
CreateFx(this, 0x3d, 0x20);
PlaySFX(gUnk_08110380[(Random() & 7)]);
}
gUnk_0811036C[this->action](this);
}
else {
gUnk_08110360[this->action](this);
sub_0806ED78(this);
}
if (this->animIndex == 0xc) {
this->spritePriority.b1 = 0;
}
else {
this->spritePriority.b1 = 1;
}
if ((this->frames.all & 1) != 0) {
this->frames.all &= 0xfe;
CreateFx(this, 0x3d, 0x20);
PlaySFX(gUnk_08110380[(Random() & 7)]);
}
}
#else
NAKED
void Smith(Entity *this) {
void Smith(Entity* this) {
asm(".include \"asm/non_matching/smith/smith.inc\"");
}
#endif
void Smith_Head(Entity *this)
{
u8 bVar1;
bVar1 = this->frames.all;
SetExtraSpriteFrame(this, 0, this->frameIndex);
if ((bVar1 & 0x40) != 0) {
SetExtraSpriteFrame(this, 1, 0x16);
}
else {
SetExtraSpriteFrame(this, 1, 0xff);
}
SetSpriteSubEntryOffsetData1(this,0,1);
sub_0807000C(this);
void Smith_Head(Entity* this) {
u8 bVar1;
bVar1 = this->frames.all;
SetExtraSpriteFrame(this, 0, this->frameIndex);
if ((bVar1 & 0x40) != 0) {
SetExtraSpriteFrame(this, 1, 0x16);
} else {
SetExtraSpriteFrame(this, 1, 0xff);
}
SetSpriteSubEntryOffsetData1(this, 0, 1);
sub_0807000C(this);
}
void sub_080660EC(Entity *this)
{
void sub_080660EC(Entity* this) {
if (LoadExtraSpriteData(this, &gUnk_08110354) != 0) {
this->action = 1;
this->field_0x68.HALF.LO = sub_0801E99C(this);
InitAnimationForceUpdate(this, 2);
}
}
void sub_08066118(Entity *this)
{
s32 uVar1;
u32 iVar2;
uVar1 = sub_0806ED9C(this, 0x28, 0x28);
if (uVar1 < 0) {
uVar1 = 2;
}
else {
if (this->field_0xf == 0) {
this->field_0xf = 0x10;
this->action = 1;
this->field_0x68.HALF.LO = sub_0801E99C(this);
InitAnimationForceUpdate(this, 2);
}
else {
--this->field_0xf;
uVar1 = this->animIndex;
}
void sub_08066118(Entity* this) {
s32 uVar1;
u32 iVar2;
uVar1 = sub_0806ED9C(this, 0x28, 0x28);
if (uVar1 < 0) {
uVar1 = 2;
} else {
if (this->field_0xf == 0) {
this->field_0xf = 0x10;
} else {
--this->field_0xf;
uVar1 = this->animIndex;
}
}
if (sub_0806F078(this, uVar1) == 0) {
UpdateAnimationSingleFrame(this);
}
if (this->interactType != 0) {
this->action = 2;
TextboxNoOverlapFollow(0);
}
}
if (sub_0806F078(this, uVar1) == 0) {
UpdateAnimationSingleFrame(this);
}
if (this->interactType != 0) {
this->action = 2;
TextboxNoOverlapFollow(0);
}
}
void sub_08066170(Entity *this)
{
void sub_08066170(Entity* this) {
this->action = 1;
}
void sub_08066178(Entity *this)
{
if (LoadExtraSpriteData(this, &gUnk_08110354) != 0) {
this->action = 1;
this->spriteSettings.b.draw = 1;
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_0807DD50(this);
}
void sub_08066178(Entity* this) {
if (LoadExtraSpriteData(this, &gUnk_08110354) != 0) {
this->action = 1;
this->spriteSettings.b.draw = 1;
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_0807DD50(this);
}
}
void sub_080661B0(Entity *this)
{
void sub_080661B0(Entity* this) {
sub_0807DD94(this, 0);
}
void sub_080661BC(Entity *this)
{
u32 sVar1;
if (this->animIndex == 0xc) {
UpdateAnimationSingleFrame(this);
if ((this->frames.b.f3) != 0) {
this->field_0x80.HWORD = GetAnimationState(this) + 8;
InitAnimationForceUpdate(this, this->field_0x80.HWORD);
void sub_080661BC(Entity* this) {
u32 sVar1;
if (this->animIndex == 0xc) {
UpdateAnimationSingleFrame(this);
if ((this->frames.b.f3) != 0) {
this->field_0x80.HWORD = GetAnimationState(this) + 8;
InitAnimationForceUpdate(this, this->field_0x80.HWORD);
}
} else {
sub_0807DD94(this, 0);
}
}
else {
sub_0807DD94(this,0);
}
}
void sub_08066200(Entity *this)
{
sub_0807DDAC(this, 0);
sub_0807DDE4(this);
UpdateAnimationSingleFrame(this);
}
void sub_08066218(Entity *this)
{
if (UpdateFuseInteraction(this) != 0) {
this->action = 1;
}
}
void sub_0806622C(Entity *this)
{
u32 iVar1;
if (gUnk_02002A40.unk - 2 < 0) {
iVar1 = 0;
}
else {
iVar1 = gUnk_02002A40.unk - 2;
}
ShowNPCDialogue(this, &gUnk_08110390[iVar1 * 2]);
}
void nullsub_501(Entity* this) {}
void sub_08066258(void)
{
PlaySFX(gUnk_081103D0[Random() & 7]);
}
void sub_08066274(u32 arg0)
{
sub_08078850(arg0, 1, 0, &gUnk_081103E0);
}
void sub_08066288(Entity *arg0)
{
sub_08078784(arg0, arg0->field_0x68.HALF.LO);
}
void Smith_Fusion(Entity *this)
{
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_08110354) != 0) {
this->action++;
this->spriteSettings.b.draw = 1;
InitAnimationForceUpdate(this, 6);
}
}
else {
void sub_08066200(Entity* this) {
sub_0807DDAC(this, 0);
sub_0807DDE4(this);
UpdateAnimationSingleFrame(this);
}
}
void sub_08066218(Entity* this) {
if (UpdateFuseInteraction(this) != 0) {
this->action = 1;
}
}
void sub_0806622C(Entity* this) {
u32 index;
if (gUnk_02002A40.unk8 - 2 < 0) {
index = 0;
} else {
index = gUnk_02002A40.unk8 - 2;
}
ShowNPCDialogue(this, &gUnk_08110390[index]);
}
void nullsub_501(Entity* this) {
}
void sub_08066258(void) {
PlaySFX(gUnk_081103D0[Random() & 7]);
}
void sub_08066274(u32 arg0) {
sub_08078850(arg0, 1, 0, &gUnk_081103E0);
}
void sub_08066288(Entity* arg0) {
sub_08078784(arg0, arg0->field_0x68.HALF.LO);
}
void Smith_Fusion(Entity* this) {
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_08110354) != 0) {
this->action++;
this->spriteSettings.b.draw = 1;
InitAnimationForceUpdate(this, 6);
}
} else {
UpdateAnimationSingleFrame(this);
}
}
+3 -6
View File
@@ -1,24 +1,21 @@
#include "global.h"
#include "entity.h"
#include "textbox.h"
#include "functions.h"
extern void sub_08078778(Entity*);
extern void sub_0805E47C(Entity*);
extern void sub_0806ED78(Entity*);
extern void sub_0805E584();
extern void sub_0807DD64();
extern void sub_08062CA4();
extern void sub_0807DDAC();
extern void sub_0807DDE4();
extern u32 CheckKinstoneFused();
extern void ShowNPCDialogue();
extern void (*gStampBehaviors1[4])(Entity*);
extern void (*gStampBehaviors2[2])(Entity*);
extern u32 gUnk_0810C2E4;
extern Dialog gUnk_0810C2E4[2];
void Stamp(Entity* ent) {
if ((ent->flags & 2) != 0) {
@@ -80,7 +77,7 @@ void sub_08062CBC(Entity* ent) {
u32 uVar1;
uVar1 = CheckKinstoneFused(44);
ShowNPCDialogue(ent, &gUnk_0810C2E4 + ((-uVar1 | uVar1) >> 31) * 2);
ShowNPCDialogue(ent, &gUnk_0810C2E4[(-uVar1 | uVar1) >> 31]);
}
void sub_08062CE0(Entity* ent) {
+45 -60
View File
@@ -1,27 +1,19 @@
#include "global.h"
#include "entity.h"
#include "player.h"
typedef struct {
u8 filler[8];
u8 unk;
} SaveFile;
#include "functions.h"
extern SpriteLoadData gUnk_08113910[];
extern void sub_0805E3A0(Entity*, u32);
extern void sub_0807DD50(Entity*);
extern u32 GetFacingDirection(Entity*, Entity*);
extern u32 sub_0806F5A4(u32);
extern void sub_0806F118(Entity*);
extern void sub_0807DD94(Entity*, u32);
extern u32 sub_0801E99C();
extern void sub_08078784(Entity*, u32);
extern u32 UpdateFuseInteraction(Entity*);
extern void sub_0807000C(Entity*);
extern void ShowNPCDialogue(Entity*, u16*);
extern SaveFile gUnk_02002A40;
extern u16 gUnk_08113930[];
extern Dialog gUnk_08113930[];
void Teachers(Entity* this) {
switch (this->action) {
@@ -55,59 +47,52 @@ void Teachers(Entity* this) {
}
}
void sub_0806C674(Entity *this)
{
this->field_0x68.HALF.LO = sub_0801E99C();
void sub_0806C674(Entity* this) {
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_08078784(this, this->field_0x68.HALF.LO);
}
void Teachers_Head(Entity *this)
{
u8 bVar1;
u8 bVar2;
u32 uVar3;
void Teachers_Head(Entity* this) {
u8 bVar1;
u8 bVar2;
u32 uVar3;
uVar3 = this->frames.all & -0x81;
bVar1 = this->frameIndex;
bVar2 = this->frameSpriteSettings & 0x3f;
if ((this->entityType).form == 0) {
SetExtraSpriteFrame(this,0, (uVar3 + 3));
SetExtraSpriteFrame(this,1, bVar1);
SetSpriteSubEntryOffsetData1(this, 1, 0);
sub_0807000C(this);
}
else {
SetExtraSpriteFrame(this, 0, (uVar3 + 6));
SetExtraSpriteFrame(this, 1, ((bVar2) + 3));
SetExtraSpriteFrame(this, 2, bVar1);
SetSpriteSubEntryOffsetData1(this, 2, 1);
SetSpriteSubEntryOffsetData2(this, 2, 0);
sub_0807000C(this);
}
}
void sub_0806C70C(Entity *this)
{
int offset;
offset = gUnk_02002A40.unk - 2;
if (offset < 0) {
offset = 0;
}
ShowNPCDialogue(this, gUnk_08113930 + this->entityType.form * 0x20 + offset * 4);
}
void Teachers_Fusion(Entity *this)
{
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_08113910[this->entityType.form * 4])) {
this->action++;
this->spriteSettings.b.draw = TRUE;
InitializeAnimation(this, 2);
uVar3 = this->frames.all & -0x81;
bVar1 = this->frameIndex;
bVar2 = this->frameSpriteSettings & 0x3f;
if ((this->entityType).form == 0) {
SetExtraSpriteFrame(this, 0, (uVar3 + 3));
SetExtraSpriteFrame(this, 1, bVar1);
SetSpriteSubEntryOffsetData1(this, 1, 0);
sub_0807000C(this);
} else {
SetExtraSpriteFrame(this, 0, (uVar3 + 6));
SetExtraSpriteFrame(this, 1, ((bVar2) + 3));
SetExtraSpriteFrame(this, 2, bVar1);
SetSpriteSubEntryOffsetData1(this, 2, 1);
SetSpriteSubEntryOffsetData2(this, 2, 0);
sub_0807000C(this);
}
}
void sub_0806C70C(Entity* this) {
int offset;
offset = gUnk_02002A40.unk8 - 2;
if (offset < 0)
offset = 0;
ShowNPCDialogue(this, gUnk_08113930 + this->entityType.form * 8 + offset);
}
void Teachers_Fusion(Entity* this) {
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_08113910[this->entityType.form * 4])) {
this->action++;
this->spriteSettings.b.draw = TRUE;
InitializeAnimation(this, 2);
}
} else {
GetNextFrame(this);
}
}
else {
GetNextFrame(this);
}
}
+308 -43
View File
@@ -1,35 +1,49 @@
#include "global.h"
#include "entity.h"
#include "npc.h"
#include "functions.h"
#include "textbox.h"
#include "flags.h"
extern void InitializeAnimation(Entity *, u32);
extern void InitializeAnimation(Entity*, u32);
extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*);
extern void sub_0806ED78(Entity *);
extern u32 sub_080002C0();
extern void sub_0806ACC4(Entity*);
extern void sub_0806AEA8();
extern void sub_0806AEE4(Entity*);
extern void sub_0806AFE8(Entity*, s32*);
extern s32 sub_0806EDD8(Entity*, u32, u32);
extern u32 sub_0806F5B0(u32);
extern void sub_0806F62C(Entity*, s32, s32);
extern void sub_08078784(Entity*, u32);
extern void sub_08078850(Entity*, u32, u32, u32*);
extern void (*gUnk_081126E8[])();
extern void sub_0806ACC4(Entity *);
extern u32 LoadExtraSpriteData(Entity *, SpriteLoadData *);
extern u8 gUnk_081125F4[12];
extern SpriteLoadData gUnk_08112674[];
extern u32 gUnk_081126D4[4];
extern u8 gUnk_081126E4[4];
extern void (*gUnk_081126E8[])();
extern Dialog gUnk_081126F0[0x10];
extern void (*gUnk_08112BF0[])(Entity*, s32*);
extern u16 gUnk_08112C40[5];
extern u16 gUnk_08112C4A[3];
extern u16 gUnk_08112C50[6];
extern u16 gUnk_08112C5C[2];
extern u16 gUnk_08112C60[4];
void TownMinish(Entity *this)
{
void TownMinish(Entity* this) {
if ((this->flags & 2) == 0) {
(*gUnk_081126E8[this->action])(this);
gUnk_081126E8[this->action](this);
sub_0806ED78(this);
}
else {
} else {
sub_0806ACC4(this);
}
}
void sub_0806ABFC(Entity *this)
{
u8 animationState;
SpriteLoadData* SpriteLoadData = &gUnk_08112674[this->entityType.form << 2];
if (!LoadExtraSpriteData(this, SpriteLoadData))
{
void sub_0806ABFC(Entity* this) {
SpriteLoadData* SpriteLoadData = &gUnk_08112674[this->entityType.form * 4];
if (!LoadExtraSpriteData(this, SpriteLoadData)) {
return;
}
@@ -38,47 +52,298 @@ void sub_0806ABFC(Entity *this)
this->field_0x6a.HALF.LO = this->actionDelay;
this->animationState = this->field_0x6a.HALF.LO << 1;
animationState = this->animationState;
this->field_0x68.HALF.HI = animationState << 2;
this->field_0x68.HALF.HI = this->animationState * 4;
this->actionDelay = 0;
}
// Not matching yet, not 100% sure it's functionally identical
/*void sub_0806AC3C(Entity *this) {
if (this->field_0x58 <= 3) {
void sub_0806AC3C(Entity* this) {
if (this->animIndex <= 3) {
s32 unk;
u8 field_0x68;
Entity *link = &gPlayerEntity;
Entity* link = &gPlayerEntity;
if (sub_080041A0(this, link, 0x18, 0x18)) {
unk = GetFacingDirection(this, link) & (u8)0x1e;
}
else {
unk = this->animationState << 2;
unk = GetFacingDirection(this, link) & 0x1e;
} else {
unk = this->animationState * 4;
}
field_0x68.HALF.HI = this->field_0x68.HALF.HI;
if (unk != field_0x68.HALF.HI) {
if (unk != this->field_0x68.HALF.HI) {
s32 temp;
if (((unk - field_0x68.HALF.HI) & 0x1f) <= 0xf) {
field_0x68.HALF.HI--;
}
else {
field_0x68.HALF.HI++;
if (((unk - this->field_0x68.HALF.HI) & 0x1f) <= 0xf) {
this->field_0x68.HALF.HI--;
} else {
this->field_0x68.HALF.HI++;
}
temp = field_0x68.HALF.HI;
this->field_0x68.HALF.HI = temp & 0x1f;
this->field_0x68.HALF.HI &= 0x1f;
}
if (!(this->field_0x68.HALF.HI & 7)) {
this->animationState = sub_0806F5B0(this->field_0x68.HALF.HI);
UpdateSprite(this, (this->animationState >> 1) ^ 2);
InitializeAnimation(this, (this->animationState / 2) ^ 2);
}
}
sub_080042B8(this);
}*/
UpdateAnimationSingleFrame(this);
}
void sub_0806ACC4(Entity* this) {
u8 delay;
switch (this->action) {
case 0:
if (LoadExtraSpriteData(this, &gUnk_08112674[this->entityType.form * 4]) == 0)
return;
this->action = 1;
delay = this->actionDelay;
this->field_0x6a.HALF.LO = delay;
this->animationState = delay * 2;
this->actionDelay = 0;
this->field_0x68.HALF.LO = sub_0801E99C(this);
sub_0807DD50(this);
InitializeAnimation(this, (this->animationState / 2) + 8);
break;
case 1:
if (this->interactType == 2) {
this->action = 3;
this->interactType = 0;
sub_0806F118(this);
} else {
sub_0807DDAC(this, 0);
sub_0806AEA8(this);
if (this->entityType.parameter == 10 && this->interactType) {
this->action = 2;
this->interactType = 0;
InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gPlayerEntity)) + 8);
sub_0806AFE8(this, *(s32**)&this->cutsceneBeh);
}
if (this->entityType.form == 1) {
u8 idx = gPlayerEntity.animationState >> 1;
sub_08078850(this, 1, gUnk_081126E4[idx], &gUnk_081126D4[idx]);
}
}
break;
case 2:
if (gTextBox.doTextBox & 0x7f)
break;
this->action = 1;
InitializeAnimation(this, this->animationState / 2 + 4);
break;
case 3:
if (UpdateFuseInteraction(this))
this->action = 1;
break;
}
if (this->frameDuration != 0xff) {
GetNextFrame(this);
}
}
void sub_0806ADFC(Entity* this) {
sub_08078784(this, this->field_0x68.HALF.LO);
}
void TownMinish_Head(Entity* this) {
u32 frames;
if ((this->flags & 2) == 0) {
frames = this->field_0x68.HALF.HI / 2;
if ((this->frameSpriteSettings & 1)) {
SetExtraSpriteFrame(this, 0, frames + 0x1c);
} else {
SetExtraSpriteFrame(this, 0, 0xff);
}
SetExtraSpriteFrame(this, 1, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, 1, 0);
sub_0807000C(this);
} else {
frames = this->frames.all;
if (frames != 0xff) {
frames &= ~0x80;
}
if ((this->frameSpriteSettings & 1) == 0) {
frames = 0xff;
}
SetExtraSpriteFrame(this, 0, frames);
SetExtraSpriteFrame(this, 1, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, 1, 0);
sub_0807000C(this);
}
}
void sub_0806AEA8(Entity* this) {
int old = this->field_0x82.HWORD;
this->field_0x82.HWORD &= ~0x20;
if (old & 0x20) {
sub_08003FC4(this, 0x4000);
}
sub_0807DDE4(this);
this->field_0x82.HWORD = old;
}
void sub_0806AED8(Entity* this) {
this->actionDelay = 0;
sub_0806AEE4(this);
}
void sub_0806AEE4(Entity* this) {
int index;
u8* idx3;
u8 tmp1, tmp2;
if (this->actionDelay) {
this->actionDelay--;
} else {
this->actionDelay = 2;
index = sub_0806EDD8(this, 0x20, 0x20);
if (index < 0) {
int state = this->field_0x6a.HALF.LO;
this->animationState = state * 2;
index = state * 8;
}
idx3 = gUnk_081125F4 + (this->animationState / 2) * 0x20 + (index >> 1) * 2;
tmp1 = idx3[0];
tmp2 = idx3[1];
if (tmp2 & 0x80) {
this->animationState = sub_0806F5B0(index);
}
tmp2 &= 0x7f;
this->frames.all = tmp1;
this->frameIndex = tmp2;
this->frameSpriteSettings = 1;
this->animIndex = 0;
this->frameDuration = 0xff;
}
}
void sub_0806AF60(Entity* this, int* idx) {
InitializeAnimation(this, idx[1] + (this->animationState / 2));
}
void sub_0806AF70(Entity* this, u32 arg1) {
this->field_0x20 = 0x24000;
}
void sub_0806AF78(Entity* this, u32 arg1) {
sub_08003FC4(this, 0x1800);
if (0 <= this->height.WORD && this->field_0x20 < 1) {
this->height.WORD = 0;
sub_0806AF70(this, arg1);
}
}
void sub_0806AFA0(Entity* this) {
if (sub_0806ED78(this)) {
sub_0806F62C(this, -this->nonPlanarMovement, this->direction);
}
}
void sub_0806AFBC(Entity* this) {
int idx = gUnk_02002A40.unk8 - 2;
if (idx < 0)
idx = 0;
ShowNPCDialogue(this, gUnk_081126F0 + this->entityType.parameter * 8 + idx);
}
void sub_0806AFE8(Entity* this, s32* unk) {
unk[5] = 0;
gUnk_08112BF0[this->entityType.parameter](this, unk);
}
void sub_0806B004(Entity* this, int* unk) {
int idx = 0;
if (CheckGlobalFlag(0x29)) {
if (CheckLocalFlag(0x73)) {
if (GetInventoryValue(0x46) == 0) {
idx = 3;
if (CheckLocalFlag(0x78) == 0) {
idx = 2;
unk[5] = 1;
SetLocalFlag(0x78);
}
} else {
idx = 4;
}
} else {
idx = 1;
SetLocalFlag(0x6a);
}
}
TextboxNoOverlap(gUnk_08112C40[idx], this);
}
void sub_0806B064(Entity* this) {
int idx = 0;
if (CheckGlobalFlag(0x29)) {
idx = 1;
if (CheckLocalFlag(0x73)) {
idx = 2;
}
}
TextboxNoOverlap(gUnk_08112C4A[idx], this);
}
void sub_0806B098(Entity* this) {
u32 f;
int idx = 2;
if (GetInventoryValue(0x46) == 0) {
idx = 1;
if (CheckGlobalFlag(0x29)) {
f = CheckGlobalFlag(0x2a);
idx = (-f | f) >> 0x1f;
}
}
TextboxNoOverlap(gUnk_08112C50[(this->entityType.parameter - 7) * 3 + idx], this);
}
void sub_0806B0E0(Entity* this) {
int idx = 0;
if (sub_080002C0(0x38, 0xb8, 1) == 0x57 && sub_080002C0(0x48, 0xb8, 1) == 0x57 &&
sub_080002C0(0x38, 200, 1) == 0x57 && sub_080002C0(0x48, 200, 1) == 0x57) {
idx = 1;
}
TextboxNoOverlap(gUnk_08112C5C[idx], this);
}
void sub_0806B134(Entity* this) {
int idx;
if (GetInventoryValue(0x45)) {
idx = 2;
if (CheckLocalFlag(0x7b) == 0) {
idx = 1;
SetLocalFlag(0x7b);
}
} else {
idx = 0;
SetGlobalFlag(0x4a);
}
if (5 < gUnk_02002A40.unk8) {
idx = 3;
}
TextboxNoOverlap(gUnk_08112C60[idx], this);
}
void TownMinish_Fusion(Entity* this) {
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_08112674[this->entityType.form * 4])) {
this->action++;
this->spriteSettings.b.draw = 1;
InitializeAnimation(this, 6);
}
} else {
GetNextFrame(this);
}
}
+21 -26
View File
@@ -5,6 +5,7 @@
#include "textbox.h"
#include "flags.h"
#include "structures.h"
#include "functions.h"
typedef struct {
u8 frame1;
@@ -21,8 +22,6 @@ typedef struct {
extern void (*const gUnk_0810B774[])(Entity*);
extern void (*const gUnk_0810B77C[])(Entity*);
extern void sub_08061CB4(Entity*, u32);
extern u32 sub_0806ED9C(Entity*, u32, u32);
extern void sub_0806ED78(Entity*);
extern u32 sub_0805ACC0(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0807DD64(Entity*);
@@ -36,7 +35,6 @@ extern void sub_08062048(Entity*);
extern void sub_08078784(Entity*, u32);
extern void sub_08078778(Entity*);
extern u32 sub_0806F5B0(u32);
extern void sub_080AEF88(Entity*);
extern u32 Random(void);
extern void ResolveEntityOnTop(Entity*, Entity*);
extern void sub_08078850(Entity*, u32, u8, u32*);
@@ -50,7 +48,7 @@ extern u8 gUnk_0810B748[];
extern u32 gUnk_0810B740[];
extern u16 gUnk_0810B790[];
extern u16 gUnk_0810B7BA[];
extern u32 gUnk_0810B7C0[];
extern Dialog gUnk_0810B7C0[];
void Townsperson(Entity* this) {
if ((this->flags & 2) != 0) {
@@ -296,30 +294,27 @@ void sub_0806200C(Entity* this) {
TextboxNoOverlap(gUnk_0810B7BA[index], this);
}
void sub_08062048(Entity *this)
{
int iVar1;
if ((this->entityType).subtype == 6) {
iVar1 = gUnk_02002A40.unk8 - 2;
if (iVar1 < 0) {
iVar1 = 0;
void sub_08062048(Entity* this) {
int iVar1;
if ((this->entityType).subtype == 6) {
iVar1 = gUnk_02002A40.unk8 - 2;
if (iVar1 < 0) {
iVar1 = 0;
}
ShowNPCDialogue(this, gUnk_0810B7C0 + this->entityType.form * 0x8 + iVar1);
} else {
TextboxNoOverlap(0, this);
}
ShowNPCDialogue(this, gUnk_0810B7C0 + this->entityType.form * 0x10 + iVar1 * 2);
}
else {
TextboxNoOverlap(0, this);
}
}
void Townsperson_Fusion(Entity *this)
{
if (this->action == 0) {
if (LoadExtraSpriteData(this, gUnk_0810B6EC[this->entityType.form]) == 0) {
return;
void Townsperson_Fusion(Entity* this) {
if (this->action == 0) {
if (LoadExtraSpriteData(this, gUnk_0810B6EC[this->entityType.form]) == 0) {
return;
}
this->action++;
this->spriteSettings.b.draw = TRUE;
}
this->action++;
this->spriteSettings.b.draw = TRUE;
}
sub_08061CB4(this, 6);
sub_08061CB4(this, 6);
}
+59 -66
View File
@@ -4,6 +4,7 @@
#include "textbox.h"
#include "flags.h"
#include "structures.h"
#include "functions.h"
extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*);
extern void sub_0807DD50(Entity*);
@@ -23,7 +24,7 @@ extern void (*const gUnk_08113A8C[])(Entity*, Entity*);
extern SpriteLoadData gUnk_08113A1C[];
extern u32 gUnk_08014A80;
extern u32 gUnk_08113ABC[];
extern Dialog gUnk_08113ABC[];
extern u16 gUnk_08113B0C[];
void WindTribespeople(Entity* this) {
@@ -74,73 +75,65 @@ void sub_0806C85C(Entity* this) {
}
}
void sub_0806C870(Entity *this)
{
u8 bVar1;
bVar1 = sub_0801E99C();
this->field_0x68.HALF.LO = bVar1;
sub_08078784(this, this->field_0x68.HALF.LO);
void sub_0806C870(Entity* this) {
u8 bVar1;
bVar1 = sub_0801E99C(this);
this->field_0x68.HALF.LO = bVar1;
sub_08078784(this, this->field_0x68.HALF.LO);
}
void WindTribespeople_Head(Entity *this)
{
u32 uVar1;
u32 uVar2;
u8 pbVar3;
pbVar3 = (this->frames.all & 0x3F);
if (this->entityType.form == 4) {
SetExtraSpriteFrame(this, 0, 9);
SetExtraSpriteFrame(this, 1, pbVar3);
SetExtraSpriteFrame(this, 2, this->frameIndex);
SetSpriteSubEntryOffsetData2(this, 2, 0);
SetSpriteSubEntryOffsetData1(this, 2, 1);
sub_0807000C(this);
}
else {
if (this->frames.b.f2 != 0) {
uVar2 = 1;
uVar1 = 0;
void WindTribespeople_Head(Entity* this) {
u32 uVar1;
u32 uVar2;
u8 pbVar3;
pbVar3 = (this->frames.all & 0x3F);
if (this->entityType.form == 4) {
SetExtraSpriteFrame(this, 0, 9);
SetExtraSpriteFrame(this, 1, pbVar3);
SetExtraSpriteFrame(this, 2, this->frameIndex);
SetSpriteSubEntryOffsetData2(this, 2, 0);
SetSpriteSubEntryOffsetData1(this, 2, 1);
sub_0807000C(this);
} else {
if (this->frames.b.f2 != 0) {
uVar2 = 1;
uVar1 = 0;
} else {
uVar2 = 0;
uVar1 = 1;
}
SetExtraSpriteFrame(this, uVar2, pbVar3);
SetExtraSpriteFrame(this, uVar1, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, uVar1, uVar2);
sub_0807000C(this);
}
else {
uVar2 = 0;
uVar1 = 1;
}
// body and head entities?
void sub_0806C90C(Entity* param_1, Entity* param_2) {
*(u32*)&param_2->animationState = 0;
gUnk_08113A8C[param_1->entityType.parameter](param_1, param_2);
}
void sub_0806C928(Entity* this) {
ShowNPCDialogue(this, &gUnk_08113ABC[gUnk_02002A40.unk8]);
}
void sub_0806C944(Entity* this) {
int iVar1;
int iVar2;
iVar1 = CheckGlobalFlag(WARP_EVENT_END);
if (iVar1 == 0) {
iVar2 = 0;
} else {
iVar1 = CheckLocalFlag(0x63);
iVar2 = 2;
if (iVar1 != 0) {
iVar2 = 1;
}
}
SetExtraSpriteFrame(this, uVar2, pbVar3);
SetExtraSpriteFrame(this, uVar1, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, uVar1, uVar2);
sub_0807000C(this);
}
}
//body and head entities?
void sub_0806C90C(Entity *param_1,Entity *param_2)
{
*(u32 *)&param_2->animationState = 0;
gUnk_08113A8C[param_1->entityType.parameter](param_1, param_2);
}
void sub_0806C928(Entity *this)
{
ShowNPCDialogue(this, &gUnk_08113ABC[gUnk_02002A40.unk8 * 2]);
}
void sub_0806C944(Entity *this)
{
int iVar1;
int iVar2;
iVar1 = CheckGlobalFlag(WARP_EVENT_END);
if (iVar1 == 0) {
iVar2 = 0;
}
else {
iVar1 = CheckLocalFlag(0x63);
iVar2 = 2;
if (iVar1 != 0) {
iVar2 = 1;
}
}
TextboxNoOverlap(gUnk_08113B0C[iVar2], this);
TextboxNoOverlap(gUnk_08113B0C[iVar2], this);
}
+1 -1
View File
@@ -20,7 +20,7 @@ void sub_0808F658(Entity* this) {
this->direction = 8;
this->nonPlanarMovement = gUnk_08121EB0[(this->entityType).form];
this->field_0x78.HWORD = gRoomControls.roomOriginX - 0x60;
this->field_0x7a.HWORD = gRoomControls.roomOriginX + gRoomControls.filler2[3] + 0x60;
this->field_0x7a.HWORD = gRoomControls.roomOriginX + gRoomControls.width + 0x60;
this->animationState = 0;
this->x.HALF.HI += (Random() & 0xf) << 4;
this->actionDelay = 0;
-2
View File
@@ -1,11 +1,9 @@
#include "global.h"
#include "entity.h"
extern void CopyPosition();
extern void sub_08086A6C();
extern s32 sub_080044EC();
extern void sub_080AEF88();
extern void DeleteThisEntity();
extern u32 Random(void);
extern void (*gUnk_081206C4[99])(Entity*);
-1
View File
@@ -7,7 +7,6 @@ extern u32 sub_080041A0(Entity*, Entity*, u32, u32);
void sub_08099ECC(Entity*);
extern void sub_0805E4E0(Entity*, u32);
extern void sub_0805B390(u32);
extern void CopyPosition(Entity*, Entity*);
extern void (*const gUnk_081237F8[])(Entity*);
-1
View File
@@ -5,7 +5,6 @@
extern BoundingBox gUnk_080FD168;
extern void SetTile(u32, u32, u32);
extern void CopyPosition(Entity*, Entity*);
void Object9E(Entity *this)
{
-2
View File
@@ -2,8 +2,6 @@
#include "entity.h"
extern void sub_080A0640(Entity*);
extern void PositionRelative(Entity*, Entity*, s32, s32);
extern void CopyPosition(Entity*, Entity*);
extern void (*const gUnk_081248C4[])(Entity*);
-2
View File
@@ -2,9 +2,7 @@
#include "entity.h"
extern u32 Random(void);
extern void CopyPosition(Entity*, Entity*);
extern void sub_0806F69C(Entity*);
extern void DeleteEntity(Entity*);
extern void (*const gUnk_08121060[])(Entity*);
extern void (*const gUnk_08121070[])(Entity*);
+1 -1
View File
@@ -2057,7 +2057,7 @@ extern EntityData gUnk_080DE4C8;
void sub_0804CBB0(void) {
if ((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) < (gRoomControls.filler2[4] >> 1)) {
if ((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) < (gRoomControls.height >> 1)) {
if (!CheckLocalFlag(0x17)) {
LoadRoomEntityList(&gUnk_080DE4C8);
}
+10 -10
View File
@@ -2,28 +2,28 @@
#include "entity.h"
extern void sub_0807C960();
extern u32 gUnk_0202CEB4;
extern u32 gUnk_02012654;
extern u16 gMetatilesBottom[];
extern u16 gMetatilesTop[];
extern u8 gUnk_08324AE4;
void sub_0807C960(void* dest, u32 offset)
{
void* temp;
void* src;
if (offset != -1) {
temp = &gUnk_08324AE4 + (offset & 0x7fffffff);
src = &gUnk_08324AE4 + (offset & 0x7fffffff);
if ((u32)dest >> 0x18 == 6) {
LZ77UnCompVram(temp, (void *)dest);
LZ77UnCompVram(src, (void *)dest);
}
else {
LZ77UnCompWram(temp, (void *)dest);
LZ77UnCompWram(src, (void *)dest);
}
}
}
void sub_0807C998(u32* a1) {
sub_0807C960(&gUnk_0202CEB4, a1[0]);
sub_0807C960(&gUnk_0202CEB4 - 0x800, a1[1]);
sub_0807C960(&gUnk_02012654, a1[2]);
sub_0807C960(&gUnk_02012654 - 0x800, a1[3]);
sub_0807C960(gMetatilesBottom, a1[0]);
sub_0807C960(gMetatilesBottom - 0x1000, a1[1]);
sub_0807C960(gMetatilesTop, a1[2]);
sub_0807C960(gMetatilesTop - 0x1000, a1[3]);
}