Merge branch 'master' into master

This commit is contained in:
notyouraveragehooman 2020-08-09 16:20:59 -07:00 committed by GitHub
commit 149ae2e2d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 373 additions and 851 deletions

View File

@ -1,309 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08058380
sub_08058380: @ 0x08058380
push {lr}
ldr r2, _08058394 @ =gUnk_081081F4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08058394: .4byte gUnk_081081F4
thumb_func_start sub_08058398
sub_08058398: @ 0x08058398
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x3c]
bl CheckFlags
cmp r0, #0
beq _080583AA
bl DeleteThisEntity
_080583AA:
adds r0, r4, #0
adds r0, #0x3a
ldrb r1, [r0]
lsls r1, r1, #3
strh r1, [r4, #0x24]
adds r0, #1
ldrb r2, [r0]
lsls r2, r2, #3
strh r2, [r4, #0x26]
subs r0, #3
ldrb r0, [r0]
lsls r0, r0, #4
adds r1, r1, r0
strh r1, [r4, #0x20]
adds r0, r4, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #4
adds r2, r2, r0
strh r2, [r4, #0x22]
adds r0, r4, #0
movs r1, #6
bl sub_0805E3A0
ldrh r0, [r4, #0x3e]
cmp r0, #0
bne _080583E4
movs r0, #2
b _080583E6
_080583E4:
movs r0, #1
_080583E6:
strb r0, [r4, #0xc]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080583EC
sub_080583EC: @ 0x080583EC
push {r4, lr}
adds r4, r0, #0
ldrh r0, [r4, #0x3e]
bl CheckFlags
cmp r0, #0
beq _08058404
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_08058408
_08058404:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08058408
sub_08058408: @ 0x08058408
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r6, _0805843C @ =gPlayerState
ldr r5, [r6, #0x30]
movs r0, #8
ands r5, r0
cmp r5, #0
bne _08058488
ldrh r0, [r4, #0x20]
ldrh r1, [r4, #0x22]
ldrh r2, [r4, #0x24]
ldrh r3, [r4, #0x26]
bl CheckPlayerInRegion
cmp r0, #0
beq _08058488
ldrb r0, [r4, #0xa]
cmp r0, #1
beq _08058488
cmp r0, #1
ble _08058450
cmp r0, #2
beq _08058440
cmp r0, #3
beq _0805847C
b _08058450
.align 2, 0
_0805843C: .4byte gPlayerState
_08058440:
adds r0, r4, #0
bl sub_080585DC
ldr r0, [r6, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08058488
_08058450:
adds r0, r4, #0
bl sub_080585DC
adds r0, r4, #0
bl sub_0805848C
cmp r0, #0
beq _08058488
movs r0, #3
bl sub_08078A90
bl sub_08078B48
bl sub_0805E544
movs r0, #0
movs r1, #3
strb r1, [r4, #0xc]
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _08058488
_0805847C:
movs r0, #4
strb r0, [r4, #0xc]
strb r5, [r4, #0xd]
ldrh r0, [r4, #0x36]
bl sub_080186C0
_08058488:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0805848C
sub_0805848C: @ 0x0805848C
push {lr}
ldr r0, _080584A4 @ =gPlayerState
adds r0, #0xa8
ldrb r0, [r0]
subs r0, #5
cmp r0, #0x17
bhi _08058510
lsls r0, r0, #2
ldr r1, _080584A8 @ =_080584AC
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080584A4: .4byte gPlayerState
_080584A8: .4byte _080584AC
_080584AC: @ jump table
.4byte _0805850C @ case 0
.4byte _08058510 @ case 1
.4byte _0805850C @ case 2
.4byte _0805850C @ case 3
.4byte _08058510 @ case 4
.4byte _0805850C @ case 5
.4byte _0805850C @ case 6
.4byte _0805850C @ case 7
.4byte _0805850C @ case 8
.4byte _0805850C @ case 9
.4byte _0805850C @ case 10
.4byte _0805850C @ case 11
.4byte _0805850C @ case 12
.4byte _0805850C @ case 13
.4byte _0805850C @ case 14
.4byte _0805850C @ case 15
.4byte _0805850C @ case 16
.4byte _0805850C @ case 17
.4byte _0805850C @ case 18
.4byte _0805850C @ case 19
.4byte _08058510 @ case 20
.4byte _08058510 @ case 21
.4byte _0805850C @ case 22
.4byte _0805850C @ case 23
_0805850C:
movs r0, #0
b _08058512
_08058510:
movs r0, #1
_08058512:
pop {pc}
thumb_func_start sub_08058514
sub_08058514: @ 0x08058514
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
cmp r0, #1
beq _08058532
cmp r0, #1
bgt _08058528
cmp r0, #0
beq _08058570
b _080585A6
_08058528:
cmp r0, #2
beq _08058570
cmp r0, #3
beq _08058584
b _080585A6
_08058532:
ldr r2, _08058564 @ =gPlayerState
ldr r0, [r2, #0x30]
ldr r1, _08058568 @ =0x00001235
ands r0, r1
cmp r0, #0
bne _080585A6
ldr r0, _0805856C @ =gPlayerEntity
movs r1, #0x36
ldrsh r0, [r0, r1]
cmp r0, #0
bne _080585A6
strb r0, [r2, #2]
ldrh r0, [r4, #0x36]
adds r1, r4, #0
adds r1, #0x35
ldrb r1, [r1]
bl sub_08078AA8
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _080585A6
.align 2, 0
_08058564: .4byte gPlayerState
_08058568: .4byte 0x00001235
_0805856C: .4byte gPlayerEntity
_08058570:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080585A6
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080585A6
_08058584:
ldr r0, _080585A8 @ =gPlayerEntity
ldrb r0, [r0, #0xc]
cmp r0, #1
beq _08058590
cmp r0, #9
bne _080585A6
_08058590:
ldr r0, _080585AC @ =gPlayerState
adds r0, #0x8b
movs r1, #1
strb r1, [r0]
bl UnfreezeTime
ldrh r0, [r4, #0x3c]
bl SetFlag
bl DeleteThisEntity
_080585A6:
pop {r4, pc}
.align 2, 0
_080585A8: .4byte gPlayerEntity
_080585AC: .4byte gPlayerState
thumb_func_start sub_080585B0
sub_080585B0: @ 0x080585B0
push {r4, lr}
adds r4, r0, #0
ldr r0, _080585D8 @ =gArea
adds r0, #0x28
ldrb r0, [r0]
cmp r0, #0xff
beq _080585C2
bl DeleteThisEntity
_080585C2:
ldrh r0, [r4, #0x3c]
bl CheckFlags
cmp r0, #0
beq _080585D4
bl sub_0801855C
bl DeleteThisEntity
_080585D4:
pop {r4, pc}
.align 2, 0
_080585D8: .4byte gArea
thumb_func_start sub_080585DC
sub_080585DC: @ 0x080585DC
push {lr}
ldrh r0, [r0, #0x3c]
bl CheckFlags
cmp r0, #0
beq _080585EC
bl DeleteThisEntity
_080585EC:
pop {pc}
.align 2, 0

532
asm/pot.s
View File

@ -6,538 +6,6 @@
.text .text
thumb_func_start Pot
Pot: @ 0x0808220C
push {r4, lr}
adds r4, r0, #0
ldr r1, _08082228 @ =gUnk_0811F090
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r4, #0x41
movs r0, #0
strb r0, [r4]
pop {r4, pc}
.align 2, 0
_08082228: .4byte gUnk_0811F090
thumb_func_start sub_0808222C
sub_0808222C: @ 0x0808222C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
ldrb r0, [r4, #0xb]
cmp r0, #1
bne _0808224C
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _0808224C
bl DeleteThisEntity
_0808224C:
movs r2, #1
strb r2, [r4, #0xc]
ldr r0, _08082308 @ =gUnk_080FD338
str r0, [r4, #0x48]
movs r1, #0
movs r0, #0x80
strh r0, [r4, #0x24]
ldrh r0, [r4, #0x32]
adds r0, #3
strh r0, [r4, #0x32]
strb r1, [r4, #0x16]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
adds r0, #0x45
strb r2, [r0]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #3
movs r0, #0x6e
strb r0, [r1]
subs r1, #4
movs r0, #0x84
strb r0, [r1]
movs r0, #0x12
strb r0, [r4, #0x1c]
adds r5, r4, #0
adds r5, #0x38
ldrb r0, [r5]
cmp r0, #0
bne _08082298
adds r0, r4, #0
bl sub_08016A30
_08082298:
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r7, _0808230C @ =gRoomControls
ldrh r1, [r7, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r6, #0x3f
ands r0, r6
movs r2, #0x32
ldrsh r1, [r4, r2]
ldrh r2, [r7, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
ldrb r1, [r5]
bl sub_080001DA
adds r1, r4, #0
adds r1, #0x70
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #7
mov r8, r1
cmp r0, r8
bne _080822D6
bl DeleteThisEntity
_080822D6:
movs r2, #0x2e
ldrsh r1, [r4, r2]
ldrh r0, [r7, #6]
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r4, r2]
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
ldrb r2, [r5]
mov r0, r8
bl SetTile
adds r0, r4, #0
movs r1, #5
bl InitializeAnimation
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08082308: .4byte gUnk_080FD338
_0808230C: .4byte gRoomControls
thumb_func_start sub_08082310
sub_08082310: @ 0x08082310
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r0, #0x41
ldrb r0, [r0]
movs r6, #0x7f
adds r1, r6, #0
ands r1, r0
cmp r1, #0x13
beq _08082342
cmp r1, #0x1d
beq _0808234C
adds r0, r5, #0
bl GetTileTypeByEntity
adds r4, r0, #0
movs r0, #0x80
lsls r0, r0, #7
cmp r4, r0
bne _08082338
b _080824F0
_08082338:
adds r0, #1
cmp r4, r0
bhs _08082340
b _08082484
_08082340:
b _080823C4
_08082342:
movs r1, #0
movs r0, #3
strb r0, [r5, #0xc]
strb r1, [r5, #0xd]
b _080824F6
_0808234C:
adds r0, r5, #0
adds r0, #0x70
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _080823C0 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r7, #0x32
ldrsh r2, [r5, r7]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
movs r1, #0
movs r0, #5
strb r0, [r5, #0xc]
movs r0, #0xa8
lsls r0, r0, #0xa
str r0, [r5, #0x20]
adds r0, r5, #0
adds r0, #0x63
strb r1, [r0]
ldrb r1, [r5, #0x18]
movs r0, #0x31
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x10
orrs r0, r1
strb r0, [r5, #0x18]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x18
orrs r0, r1
strb r0, [r2]
ldrb r1, [r5, #0x10]
adds r0, r6, #0
ands r0, r1
strb r0, [r5, #0x10]
adds r0, r5, #0
bl sub_08082824
b _080824F6
.align 2, 0
_080823C0: .4byte gRoomControls
_080823C4:
ldr r0, _080823D4 @ =0x00004004
cmp r4, r0
bls _080823D8
adds r0, #0x63
cmp r4, r0
beq _08082448
b _08082484
.align 2, 0
_080823D4: .4byte 0x00004004
_080823D8:
ldr r1, _08082438 @ =0xFFFFBFFF
adds r0, r4, r1
lsls r0, r0, #3
strb r0, [r5, #0x15]
movs r0, #0x20
strb r0, [r5, #0xe]
movs r0, #4
strb r0, [r5, #0xc]
ldr r0, _0808243C @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08082400
ldrh r0, [r5, #0x24]
lsls r0, r0, #0x10
asrs r0, r0, #0x11
strh r0, [r5, #0x24]
movs r0, #0x40
strb r0, [r5, #0xe]
_08082400:
adds r0, r5, #0
adds r0, #0x70
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08082440 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
ldr r0, _08082444 @ =0x0000010F
bl sub_08004488
b _080824F6
.align 2, 0
_08082438: .4byte 0xFFFFBFFF
_0808243C: .4byte gPlayerState
_08082440: .4byte gRoomControls
_08082444: .4byte 0x0000010F
_08082448:
adds r0, r5, #0
adds r0, #0x70
ldrh r0, [r0]
movs r7, #0x2e
ldrsh r1, [r5, r7]
ldr r3, _08082480 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
bl DeleteThisEntity
b _080824F6
.align 2, 0
_08082480: .4byte gRoomControls
_08082484:
adds r0, r5, #0
bl sub_080002B8
cmp r0, #0xd
bne _0808249A
adds r0, r5, #0
movs r1, #0
movs r2, #0
bl CreateFx
b _080824D8
_0808249A:
ldr r0, _080824E4 @ =0x00004005
cmp r4, r0
bne _080824D8
ldr r0, _080824E8 @ =gPlayerState
adds r0, #0xab
movs r1, #4
strb r1, [r0]
adds r0, r5, #0
adds r0, #0x70
ldrh r0, [r0]
movs r7, #0x2e
ldrsh r1, [r5, r7]
ldr r3, _080824EC @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
_080824D8:
adds r0, r5, #0
movs r1, #0
bl sub_08082850
b _080824F6
.align 2, 0
_080824E4: .4byte 0x00004005
_080824E8: .4byte gPlayerState
_080824EC: .4byte gRoomControls
_080824F0:
adds r0, r5, #0
bl sub_08078930
_080824F6:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_080824F8
sub_080824F8: @ 0x080824F8
push {lr}
ldr r2, _0808250C @ =gUnk_0811F0A8
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808250C: .4byte gUnk_0811F0A8
thumb_func_start sub_08082510
sub_08082510: @ 0x08082510
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r1, [r5, #0x10]
movs r0, #0x80
movs r2, #0
orrs r0, r1
strb r0, [r5, #0x10]
ldr r0, _08082578 @ =gUnk_080FD340
str r0, [r5, #0x48]
adds r1, r5, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #3
movs r0, #1
strb r0, [r1]
ldr r0, _0808257C @ =gPlayerEntity
adds r0, #0x3b
ldrb r0, [r0]
subs r1, #4
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x63
strb r2, [r0]
adds r0, #0xd
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08082580 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
ldrb r0, [r5, #0xd]
adds r0, #1
strb r0, [r5, #0xd]
pop {r4, r5, r6, pc}
.align 2, 0
_08082578: .4byte gUnk_080FD340
_0808257C: .4byte gPlayerEntity
_08082580: .4byte gRoomControls
thumb_func_start nullsub_511
nullsub_511: @ 0x08082584
bx lr
.align 2, 0
thumb_func_start sub_08082588
sub_08082588: @ 0x08082588
adds r0, #0x29
ldrb r2, [r0]
movs r1, #0x39
rsbs r1, r1, #0
ands r1, r2
movs r2, #0x18
orrs r1, r2
strb r1, [r0]
bx lr
.align 2, 0
thumb_func_start sub_0808259C
sub_0808259C: @ 0x0808259C
push {r4, lr}
adds r4, r0, #0
bl sub_080043E8
cmp r0, #2
beq _080825B8
cmp r0, #2
bhi _080825B2
cmp r0, #1
beq _080825BE
b _080825D0
_080825B2:
cmp r0, #3
beq _080825C4
b _080825D0
_080825B8:
adds r0, r4, #0
movs r1, #0xb
b _080825C8
_080825BE:
adds r0, r4, #0
movs r1, #0
b _080825C8
_080825C4:
adds r0, r4, #0
movs r1, #0xc
_080825C8:
movs r2, #0
bl CreateFx
b _080825E0
_080825D0:
ldr r1, _080825DC @ =gPlayerEntity
adds r0, r4, #0
bl sub_08082850
b _080825E4
.align 2, 0
_080825DC: .4byte gPlayerEntity
_080825E0:
bl DeleteThisEntity
_080825E4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080825E8
sub_080825E8: @ 0x080825E8
push {lr}
bl DeleteThisEntity
pop {pc}
thumb_func_start sub_080825F0
sub_080825F0: @ 0x080825F0
push {lr}
adds r1, r0, #0
ldr r0, _08082604 @ =gPlayerState
ldrb r0, [r0, #5]
cmp r0, #0
bne _08082602
adds r0, r1, #0
bl sub_08082608
_08082602:
pop {pc}
.align 2, 0
_08082604: .4byte gPlayerState
thumb_func_start sub_08082608
sub_08082608: @ 0x08082608
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
strb r2, [r0, #0xd]
bx lr
.align 2, 0
thumb_func_start sub_08082614 thumb_func_start sub_08082614
sub_08082614: @ 0x08082614 sub_08082614: @ 0x08082614
push {r4, r5, r6, r7, lr} push {r4, r5, r6, r7, lr}

View File

@ -70,7 +70,7 @@ typedef struct Entity {
/* */ u8 flipX : 2; //0x10 /* */ u8 flipX : 2; //0x10
/* */ u8 flipY : 2; //0x40 /* */ u8 flipY : 2; //0x40
/* */ } PACKED spriteOrientation; /* */ } PACKED spriteOrientation;
/*0x1c*/ u8 filler[1]; /*0x1c*/ u8 field_0x1c;
/*0x1d*/ u8 field_0x1d; /*0x1d*/ u8 field_0x1d;
/*0x1e*/ u8 frameIndex; /*0x1e*/ u8 frameIndex;
/*0x1f*/ u8 lastFrameIndex; /*0x1f*/ u8 lastFrameIndex;

View File

@ -193,7 +193,7 @@ extern void sub_080A70AC(void*);
extern void sub_080A7114(u32); extern void sub_080A7114(u32);
extern void sub_08001242(void); extern void sub_08001242(void);
extern u32 sub_08003FC4(Entity*, u32); extern u32 sub_08003FC4(Entity*, u32);
extern u8 sub_080043E8(Entity*); extern u32 sub_080043E8(Entity*);
extern void sub_08001290(Entity*, u32); extern void sub_08001290(Entity*, u32);
extern void sub_08004488(u32); extern void sub_08004488(u32);
extern void sub_08004596(Entity*, u32); extern void sub_08004596(Entity*, u32);

View File

@ -3,6 +3,29 @@
#include "global.h" #include "global.h"
typedef struct {
u8 unk_00[0x0a];
u8 unk_0a;
u8 unk_0b;
u8 unk_0c;
u8 unk_0d;
u8 unk_0e;
u8 unk_0f[0x11];
u16 unk_20;
u16 unk_22;
u16 unk_24;
u16 unk_26;
u8 unk_28[0x0D];
u8 unk_35;
u16 unk_36;
u8 unk_38;
u8 unk_39;
u8 unk_3a;
u8 unk_3b;
u16 unk_3c;
u16 unk_3e;
} Manager;
typedef struct { typedef struct {
u16 field_0x00; u16 field_0x00;
u16 field_0x02; u16 field_0x02;

View File

@ -35,7 +35,9 @@ typedef struct {
/* */ u32 noMinishCap : 1; /* */ u32 noMinishCap : 1;
/* */ u32 pullingState : 1; /* */ u32 pullingState : 1;
/* */ u32 windyState : 1; /* */ u32 windyState : 1;
/* */ u32 filler10 : 4; /* */ u32 filler6 : 1;
/* */ u32 unk7 : 1;
/* */ u32 filler8 : 2;
/* */ u32 slipperyState : 1; /* */ u32 slipperyState : 1;
/* */ u32 filler11 : 5; /* */ u32 filler11 : 5;
/* */ u32 filler11b : 16; /* */ u32 filler11b : 16;

View File

@ -475,7 +475,7 @@ SECTIONS {
asm/manager7.o(.text); asm/manager7.o(.text);
asm/manager8.o(.text); asm/manager8.o(.text);
asm/manager9.o(.text); asm/manager9.o(.text);
asm/managerA.o(.text); src/manager/managerA.o(.text);
asm/managerB.o(.text); asm/managerB.o(.text);
asm/managerC.o(.text); asm/managerC.o(.text);
asm/managerD.o(.text); asm/managerD.o(.text);
@ -672,6 +672,7 @@ SECTIONS {
asm/itemForSale.o(.text); asm/itemForSale.o(.text);
asm/button.o(.text); asm/button.o(.text);
asm/object4.o(.text); asm/object4.o(.text);
src/object/pot.o(.text);
asm/pot.o(.text); asm/pot.o(.text);
asm/object6.o(.text); asm/object6.o(.text);
asm/blockPushed.o(.text); asm/blockPushed.o(.text);

View File

@ -57,7 +57,7 @@ void sub_0802A8C8(Entity* this)
void sub_0802A8E0(Entity *this) void sub_0802A8E0(Entity *this)
{ {
this->previousActionFlag = 1; this->previousActionFlag = 1;
this->filler[1] = 0x3c; this->field_0x1d = 0x3c;
} }
void sub_0802A8EC(Entity *this) void sub_0802A8EC(Entity *this)

View File

@ -73,7 +73,7 @@ void sub_08021DF0(Entity *this)
this->height.HALF.HI = -0x10; this->height.HALF.HI = -0x10;
} }
this->direction = Random() & 0x1f; this->direction = Random() & 0x1f;
this->filler[0] = 1; this->field_0x1c = 1;
this->spritePriority.b0 = 3; this->spritePriority.b0 = 3;
this->collisionLayer = 3; this->collisionLayer = 3;
UpdateSpriteForCollisionLayer(this); UpdateSpriteForCollisionLayer(this);

View File

@ -62,7 +62,7 @@ void sub_0801EB2C(Entity* ent) {
void sub_0801EB68(Entity* ent) { void sub_0801EB68(Entity* ent) {
ent->previousActionFlag = 1; ent->previousActionFlag = 1;
ent->filler[1] = 60; ent->field_0x1d = 60;
} }
void sub_0801EB74(Entity* ent) { void sub_0801EB74(Entity* ent) {

View File

@ -25,7 +25,7 @@ void RupeeLike(Entity* this) {
u32 uVar1; u32 uVar1;
if (this->entityType.parameter == 0) { if (this->entityType.parameter == 0) {
uVar1 = sub_080043E8(this); uVar1 = (u8)sub_080043E8(this);
if (uVar1 != 0) { if (uVar1 != 0) {
if (this->action == 4) { if (this->action == 4) {
sub_080296D8(this); sub_080296D8(this);

View File

@ -46,7 +46,7 @@ void sub_0803169C(Entity *this)
void sub_080316DC(Entity *this) void sub_080316DC(Entity *this)
{ {
this->previousActionFlag = 1; this->previousActionFlag = 1;
this->filler[1] = 0x3c; this->field_0x1d = 0x3c;
} }
void sub_080316E8(Entity *this) void sub_080316E8(Entity *this)

View File

@ -85,7 +85,7 @@ void sub_08033674(Entity* this) {
sub_0804A720(this); sub_0804A720(this);
this->actionDelay = 0; this->actionDelay = 0;
this->action = 1; this->action = 1;
this->filler[0] = 1; this->field_0x1c = 1;
this->field_0x80.HWORD = this->x.HALF.HI; this->field_0x80.HWORD = this->x.HALF.HI;
this->field_0x82.HWORD = this->y.HALF.HI; this->field_0x82.HWORD = this->y.HALF.HI;
sub_08033744(this); sub_08033744(this);

168
src/manager/managerA.c Normal file
View File

@ -0,0 +1,168 @@
#include "global.h"
#include "entity.h"
#include "player.h"
#include "manager.h"
#include "flags.h"
#include "area.h"
extern void (*gUnk_081081F4[])(Manager*);
void sub_08058380(Manager* this) {
gUnk_081081F4[this->unk_0c](this);
}
extern void sub_0805E3A0(Manager*, u32);
void sub_08058398(Manager* this) {
if (CheckFlags(this->unk_3c) != 0) {
DeleteThisEntity();
}
this->unk_24 = this->unk_3a<<3;
this->unk_26 = this->unk_3b<<3;
this->unk_20 = this->unk_24 + (this->unk_38<<4);
this->unk_22 = this->unk_26 + (this->unk_39<<4);
sub_0805E3A0(this, 0x06);
if (this->unk_3e == 0) {
this->unk_0c = 2;
} else {
this->unk_0c = 1;
}
}
void sub_08058408(Manager*);
void sub_080583EC(Manager* this) {
if (CheckFlags(this->unk_3e) != 0) {
this->unk_0c = 2;
sub_08058408(this);
}
}
extern u32 CheckPlayerInRegion(u32, u32, u32, u32);
extern void sub_0805E544(void);
extern void sub_08078A90(u32);
extern void sub_08078AA8(u32, u32);
extern void sub_080186C0(u16);
extern void sub_08078B48(void);
u32 sub_0805848C(Manager*);
void sub_080585DC(Manager*);
void sub_08058408(Manager* this){
u32 tmp2;
tmp2 = (gPlayerState.flags.all & 0x08);
if (tmp2 != 0) return;
if (!CheckPlayerInRegion(this->unk_20, this->unk_22, this->unk_24, this->unk_26)) return;
switch (this->unk_0a) {
case 1:
return;
case 2:
sub_080585DC(this);
if ((gPlayerState.flags.all & 0x80) == 0) return;
case 0:
default:
sub_080585DC(this);
if (sub_0805848C(this) == 0) return;
sub_08078A90(3);
sub_08078B48();
sub_0805E544();
this->unk_0c = 3;
this->unk_0d = 0;
this->unk_0e = 0x1e;
return;
case 3:
this->unk_0c = 4;
this->unk_0d = tmp2;
sub_080186C0(this->unk_36);
return;
}
}
u32 sub_0805848C(Manager* this) {
switch (gPlayerState.field_0xa8[0]-5) {
case 0:
case 2:
case 3:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 22:
case 23:
return 0;
case 1:
case 4:
case 20:
case 21:
default:
return 1;
}
}
extern void UnfreezeTime(void);
void sub_08058514(Manager* this) {
switch (this->unk_0d) {
case 1:
if ((gPlayerState.flags.all & 0x1235) != 0)
return;
if (gPlayerEntity.height.HALF.HI != 0)
return;
gPlayerState.jumpStatus = 0;
sub_08078AA8(this->unk_36, this->unk_35);
this->unk_0d++;
this->unk_0e = 0x1E;
return;
case 0:
case 2:
if (((--this->unk_0e)<<0x18) == 0) {
this->unk_0d++;
}
return;
case 3:
if (gPlayerEntity.action != 1 && gPlayerEntity.action != 9) return;
gPlayerState.field_0x8b = 1;
UnfreezeTime();
SetFlag(this->unk_3c);
DeleteThisEntity();
return;
default:
return;
}
}
extern void sub_0801855C(void);
void sub_080585B0(Manager* this) {
if (gArea.filler4[0] != 0xFF) {
DeleteThisEntity();
}
if (CheckFlags(this->unk_3c)) {
sub_0801855C();
DeleteThisEntity();
}
}
void sub_080585DC(Manager* this) {
if (CheckFlags(this->unk_3c)) {
DeleteThisEntity();
}
}

169
src/object/pot.c Executable file
View File

@ -0,0 +1,169 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
#include "flags.h"
#include "player.h"
#include "room.h"
extern void (*const gUnk_0811F090[])(Entity*);
extern void (*const gUnk_0811F0A8[])(Entity*);
extern BoundingBox gUnk_080FD338; // TODO: should be const
extern BoundingBox gUnk_080FD340; // TODO: should be const
extern u32 sub_08016A30(Entity*);
extern u32 sub_080001DA(u32, u32);
extern u32 GetTileTypeByEntity(Entity*);
extern void sub_08078930(Entity*);
extern void sub_08082824(Entity*);
extern u32 sub_080002B8(Entity*);
extern void sub_08082850(Entity*, Entity*);
extern void sub_08082608(Entity*);
void Pot(Entity* this) {
gUnk_0811F090[this->action](this);
this->bitfield = 0;
}
void sub_0808222C(Entity* this) {
if (this->entityType.parameter == 1 && CheckFlags(this->field_0x86)) {
DeleteThisEntity();
}
this->action = 1;
this->boundingBox = &gUnk_080FD338;
this->nonPlanarMovement = 0x80;
this->y.HALF.HI += 3;
this->possibleBool = 0;
this->flags |= 0x80;
this->currentHealth = 1;
this->field_0x3c = 7;
this->damageType = 0x6E;
this->flags2 = 0x84;
this->field_0x1c = 0x12;
if (this->collisionLayer == 0) {
sub_08016A30(this);
}
this->field_0x70.HALF.LO = sub_080001DA(COORD_TO_TILE(this), this->collisionLayer);
if ((u16)this->field_0x70.HALF.LO == 0x4000) {
DeleteThisEntity();
}
SetTile(0x4000, COORD_TO_TILE(this), this->collisionLayer);
InitializeAnimation(this, 5);
}
void sub_08082310(Entity* this) {
u32 tileType;
u32 var0 = this->bitfield & 0x7F;
switch (var0) {
case 0x13:
this->action = 3;
this->previousActionFlag = 0;
break;
case 0x1D:
SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
this->action = 5;
this->field_0x20 = 0x2A000;
this->spriteOffsetY = 0;
this->spriteSettings.b.shadow = 1;
this->spritePriority.b1 = 3;
this->flags &= 0x7F;
sub_08082824(this);
break;
default:
tileType = GetTileTypeByEntity(this);
if (tileType != 0x4000) {
switch (tileType) {
case 0x4004:
case 0x4003:
case 0x4002:
case 0x4001:
this->direction = (tileType - 0x4001) * 8;
this->actionDelay = 32;
this->action = 4;
if (gPlayerState.flags.all & 0x80) {
this->nonPlanarMovement >>= 1;
this->actionDelay = 64;
}
SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
sub_08004488(0x10F);
break;
case 0x4067:
SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
DeleteThisEntity();
break;
default:
if (sub_080002B8(this) == 13) {
CreateFx(this, 0, 0);
} else if (tileType == 0x4005) {
gPlayerState.field_0xab = 4;
SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
}
sub_08082850(this, NULL);
break;
}
} else {
sub_08078930(this);
}
break;
}
}
void sub_080824F8(Entity* this) {
gUnk_0811F0A8[this->previousActionFlag](this);
}
void sub_08082510(Entity* this) {
this->flags |= 0x80;
this->boundingBox = &gUnk_080FD340;
this->field_0x3c = 7;
this->damageType = 1;
this->flags2 = gPlayerEntity.flags2;
this->spriteOffsetY = 0;
SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer);
this->previousActionFlag++;
}
void nullsub_511(Entity* this) {
}
void sub_08082588(Entity* this) {
this->spritePriority.b1 = 3;
}
void sub_0808259C(Entity* this) {
switch (sub_080043E8(this)) {
case 2:
CreateFx(this, 11, 0);
break;
case 1:
CreateFx(this, 0, 0);
break;
case 3:
CreateFx(this, 12, 0);
break;
default:
sub_08082850(this, &gPlayerEntity);
return;
}
DeleteThisEntity();
}
void sub_080825E8(Entity* this) {
DeleteThisEntity();
}
void sub_080825F0(Entity* this) {
if (gPlayerState.heldObject == 0) {
sub_08082608(this);
}
}
void sub_08082608(Entity* this) {
this->action = 1;
this->previousActionFlag = 0;
}