Merge pull request #421 from octorock/playerUtils

Merge playerUtils
This commit is contained in:
notyourav
2022-03-02 15:56:31 -08:00
committed by GitHub
271 changed files with 18871 additions and 23256 deletions
-1712
View File
File diff suppressed because it is too large Load Diff
-207
View File
@@ -1,207 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0805488C
sub_0805488C: @ 0x0805488C
push {r4, lr}
ldr r4, _080548DC @ =gUnk_02032EC0
ldrb r1, [r4, #3]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080548E0 @ =gUnk_080FE320
adds r0, r0, r1
ldr r2, _080548E4 @ =gMenu
ldrb r1, [r0]
movs r3, #0
strb r1, [r2]
ldrb r1, [r0, #1]
strb r1, [r2, #3]
ldrb r1, [r4, #3]
strb r1, [r2, #4]
str r0, [r2, #0xc]
ldrb r0, [r2, #5]
adds r0, #1
strb r0, [r2, #5]
strb r3, [r2, #6]
movs r0, #0x96
lsls r0, r0, #1
strh r0, [r2, #8]
movs r0, #0
bl DispReset
ldrb r0, [r4, #3]
movs r1, #1
bl sub_08054974
bl sub_0806F364
movs r0, #0xff
bl ClearRoomFlag
bl sub_080548E8
pop {r4, pc}
.align 2, 0
_080548DC: .4byte gUnk_02032EC0
_080548E0: .4byte gUnk_080FE320
_080548E4: .4byte gMenu
thumb_func_start sub_080548E8
sub_080548E8: @ 0x080548E8
push {lr}
ldr r1, _08054918 @ =gUnk_080FE2AC
ldr r0, _0805491C @ =gMenu
ldrb r0, [r0]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl _call_via_r0
bl FlushSprites
bl UpdateEntities
bl DrawEntities
bl CopyOAM
bl UpdateScroll
bl UpdateBgAnim
bl UpdateScrollVram
pop {pc}
.align 2, 0
_08054918: .4byte gUnk_080FE2AC
_0805491C: .4byte gMenu
thumb_func_start sub_08054920
sub_08054920: @ 0x08054920
push {lr}
bl MessageInitialize
bl sub_0806F38C
ldr r1, _08054948 @ =gUnk_080C9CBC
ldr r0, _0805494C @ =gFuseInfo
ldrb r0, [r0, #3]
lsls r0, r0, #3
adds r0, r0, r1
ldrb r0, [r0, #7]
cmp r0, #0
beq _08054954
ldr r0, _08054950 @ =gUnk_02032EC0
ldrb r1, [r0, #3]
movs r0, #0xa
bl MenuFadeIn
b _08054962
.align 2, 0
_08054948: .4byte gUnk_080C9CBC
_0805494C: .4byte gFuseInfo
_08054950: .4byte gUnk_02032EC0
_08054954:
ldr r1, _08054964 @ =gUnk_02032EC0
movs r0, #3
strb r0, [r1]
movs r0, #7
movs r1, #0x10
bl SetFade
_08054962:
pop {pc}
.align 2, 0
_08054964: .4byte gUnk_02032EC0
thumb_func_start sub_08054968
sub_08054968: @ 0x08054968
ldr r1, _08054970 @ =gMenu
movs r0, #2
strb r0, [r1, #5]
bx lr
.align 2, 0
_08054970: .4byte gMenu
thumb_func_start sub_08054974
sub_08054974: @ 0x08054974
push {r4, r5, r6, lr}
adds r5, r1, #0
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _080549B0 @ =gUnk_080FE320
adds r6, r1, r0
ldrb r0, [r6, #2]
ldrb r1, [r6, #3]
bl SetCurrentRoomPropertyList
ldr r4, _080549B4 @ =gRoomControls
ldrb r0, [r6, #2]
strb r0, [r4, #4]
ldrb r0, [r6, #3]
strb r0, [r4, #5]
bl LoadGfxGroups
ldrb r0, [r4, #4]
bl GetFlagBankOffset
ldr r1, _080549B8 @ =gArea
strh r0, [r1, #4]
cmp r5, #0
beq _080549BC
ldrb r0, [r6, #2]
ldrb r1, [r6, #3]
bl LoadAuxiliaryRoom
b _080549CE
.align 2, 0
_080549B0: .4byte gUnk_080FE320
_080549B4: .4byte gRoomControls
_080549B8: .4byte gArea
_080549BC:
ldrb r0, [r6, #2]
ldrb r1, [r6, #3]
bl sub_08052FF4
bl sub_0807C740
ldr r1, _08054A00 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_080549CE:
ldr r2, _08054A04 @ =gScreen
ldrh r1, [r2]
ldr r0, _08054A08 @ =0x00001FFF
ands r0, r1
strh r0, [r2]
ldr r1, _08054A0C @ =gRoomControls
ldrh r0, [r6, #4]
ldrh r2, [r1, #6]
adds r0, r0, r2
strh r0, [r1, #0xa]
ldrh r0, [r6, #6]
ldrh r2, [r1, #8]
adds r0, r0, r2
strh r0, [r1, #0xc]
ldrb r0, [r6, #2]
cmp r0, #2
bne _080549F4
bl TryLoadPrologueHyruleTown
_080549F4:
ldr r0, _08054A10 @ =gUnk_02032EC0
ldrb r0, [r0, #3]
bl sub_08018710
pop {r4, r5, r6, pc}
.align 2, 0
_08054A00: .4byte gUpdateVisibleTiles
_08054A04: .4byte gScreen
_08054A08: .4byte 0x00001FFF
_08054A0C: .4byte gRoomControls
_08054A10: .4byte gUnk_02032EC0
thumb_func_start sub_08054A14
sub_08054A14: @ 0x08054A14
push {lr}
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _08054A38 @ =gUnk_080FE320
adds r2, r1, r0
ldrb r0, [r2, #0x11]
cmp r0, #0xd
bhi _08054A34
ldr r1, _08054A3C @ =gLocalFlagBanks
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
ldrh r1, [r2, #0x12]
bl SetLocalFlagByBank
_08054A34:
pop {pc}
.align 2, 0
_08054A38: .4byte gUnk_080FE320
_08054A3C: .4byte gLocalFlagBanks
-2368
View File
File diff suppressed because it is too large Load Diff
-967
View File
@@ -1,967 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08077FEC
sub_08077FEC: @ 0x08077FEC
push {lr}
ldr r0, _08078000 @ =gPlayerState + 0xA0
ldr r2, _08078004 @ =gUnk_0811BFE8
ldrb r1, [r0]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08078000: .4byte gPlayerState + 0xA0
_08078004: .4byte gUnk_0811BFE8
thumb_func_start sub_08078008
sub_08078008: @ 0x08078008
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r6, _08078060 @ =gSave
adds r5, r6, #0
adds r5, #0xb4
ldrb r0, [r5]
bl ItemIsSword
cmp r0, #0
bne _0807802C
adds r5, r6, #0
adds r5, #0xb5
ldrb r0, [r5]
bl ItemIsSword
movs r2, #0
cmp r0, #0
beq _0807802E
_0807802C:
ldrb r2, [r5]
_0807802E:
subs r0, r2, #1
cmp r0, #1
bhi _08078036
movs r2, #0
_08078036:
cmp r2, #0
beq _08078068
ldr r0, _08078064 @ =gPlayerState
ldrb r1, [r0, #0x1b]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08078068
ldrb r0, [r4, #1]
adds r0, #1
strb r0, [r4, #1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x14
ble _0807806C
movs r0, #0xa
strb r0, [r4, #1]
movs r0, #3
strb r0, [r4]
strb r2, [r4, #2]
b _0807806C
.align 2, 0
_08078060: .4byte gSave
_08078064: .4byte gPlayerState
_08078068:
movs r0, #0
strb r0, [r4, #1]
_0807806C:
movs r0, #0
pop {r4, r5, r6, pc}
thumb_func_start sub_08078070
sub_08078070: @ 0x08078070
push {lr}
adds r2, r0, #0
ldr r3, _08078098 @ =gPlayerState
ldrb r1, [r3, #0x1b]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080780D6
adds r0, r3, #0
adds r0, #0xac
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #3
ands r0, r1
cmp r0, #0
beq _0807809C
ldrh r0, [r2, #4]
adds r0, #0xc
b _080780A0
.align 2, 0
_08078098: .4byte gPlayerState
_0807809C:
ldrh r0, [r2, #4]
adds r0, #6
_080780A0:
strh r0, [r2, #4]
movs r0, #4
ldrsh r1, [r2, r0]
ldr r0, _080780BC @ =0x0000031F
cmp r1, r0
ble _080780C0
adds r0, #1
strh r0, [r2, #4]
movs r0, #4
strb r0, [r2]
movs r0, #0xd8
bl SoundReq
b _080780DA
.align 2, 0
_080780BC: .4byte 0x0000031F
_080780C0:
movs r1, #4
ldrsh r0, [r2, r1]
movs r1, #0x14
bl Mod
cmp r0, #0
bne _080780DA
movs r0, #0xd7
bl SoundReq
b _080780DA
_080780D6:
movs r0, #1
strb r0, [r2]
_080780DA:
movs r0, #1
pop {pc}
.align 2, 0
thumb_func_start sub_080780E0
sub_080780E0: @ 0x080780E0
push {lr}
adds r2, r0, #0
ldr r0, _080780F4 @ =gPlayerState
ldrb r1, [r0, #0x1b]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080780F8
movs r0, #5
b _08078102
.align 2, 0
_080780F4: .4byte gPlayerState
_080780F8:
movs r0, #0x20
ands r0, r1
cmp r0, #0
bne _08078104
movs r0, #1
_08078102:
strb r0, [r2]
_08078104:
movs r0, #1
pop {pc}
thumb_func_start sub_08078108
sub_08078108: @ 0x08078108
push {lr}
adds r1, r0, #0
ldrh r0, [r1, #4]
subs r0, #1
strh r0, [r1, #4]
lsls r0, r0, #0x10
cmp r0, #0
bge _08078120
movs r0, #0
strh r0, [r1, #4]
movs r0, #2
strb r0, [r1]
_08078120:
movs r0, #1
pop {pc}
thumb_func_start sub_08078124
sub_08078124: @ 0x08078124
push {lr}
adds r1, r0, #0
ldrh r0, [r1, #4]
subs r0, #0x10
strh r0, [r1, #4]
lsls r0, r0, #0x10
cmp r0, #0
bge _0807813C
movs r0, #0
strh r0, [r1, #4]
movs r0, #2
strb r0, [r1]
_0807813C:
movs r0, #1
pop {pc}
thumb_func_start sub_08078140
sub_08078140: @ 0x08078140
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #1]
subs r0, #1
movs r2, #0
strb r0, [r1, #1]
lsls r0, r0, #0x18
cmp r0, #0
blt _08078156
movs r0, #0
b _0807815C
_08078156:
strb r2, [r1, #1]
strb r2, [r1]
movs r0, #1
_0807815C:
pop {pc}
.align 2, 0
thumb_func_start ForceSetPlayerState
ForceSetPlayerState: @ 0x08078160
push {lr}
ldr r1, _08078178 @ =gPlayerState
adds r1, #0xa8
strb r0, [r1]
ldr r2, _0807817C @ =gPlayerEntity
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
bl sub_08078B48
pop {pc}
.align 2, 0
_08078178: .4byte gPlayerState
_0807817C: .4byte gPlayerEntity
thumb_func_start sub_08078180
sub_08078180: @ 0x08078180
push {r4, r5, r6, lr}
ldr r0, _080781C8 @ =gUnk_0200AF00
adds r1, r0, #0
adds r1, #0x2f
ldrb r1, [r1]
adds r6, r0, #0
cmp r1, #0
beq _08078192
b _080782BC
_08078192:
movs r4, #0
ldr r5, _080781CC @ =gPlayerState
ldrb r0, [r5, #2]
cmp r0, #0
beq _0807819E
b _080782B6
_0807819E:
ldr r0, [r5, #0x30]
ldr r1, _080781D0 @ =0x00104D00
ands r0, r1
cmp r0, #0
beq _080781AA
b _080782B6
_080781AA:
ldrb r0, [r5, #5]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bhi _080781D4
adds r1, r6, #0
adds r1, #0x2e
ldrb r0, [r1]
movs r4, #3
cmp r0, #0
bne _080781C4
b _080782B6
_080781C4:
adds r4, r0, #0
b _080782B6
.align 2, 0
_080781C8: .4byte gUnk_0200AF00
_080781CC: .4byte gPlayerState
_080781D0: .4byte 0x00104D00
_080781D4:
adds r1, r6, #0
adds r1, #0x2d
ldrb r0, [r1]
cmp r0, #0
bne _080781C4
bl sub_080784E4
adds r1, r0, #0
ldr r0, [r1, #8]
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bne _08078278
ldrb r0, [r1, #1]
subs r0, #1
cmp r0, #9
bhi _080782B6
lsls r0, r0, #2
ldr r1, _08078204 @ =_08078208
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078204: .4byte _08078208
_08078208: @ jump table
.4byte _08078230 @ case 0
.4byte _080782B6 @ case 1
.4byte _08078254 @ case 2
.4byte _080782B6 @ case 3
.4byte _08078254 @ case 4
.4byte _08078254 @ case 5
.4byte _08078230 @ case 6
.4byte _0807823C @ case 7
.4byte _08078260 @ case 8
.4byte _0807826C @ case 9
_08078230:
movs r4, #7
ldr r6, _08078238 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078238: .4byte gUnk_0200AF00
_0807823C:
ldr r0, _0807824C @ =gRoomVars
ldrb r0, [r0, #6]
ldr r6, _08078250 @ =gUnk_0200AF00
cmp r0, #0
bne _080782B6
movs r4, #9
b _080782B6
.align 2, 0
_0807824C: .4byte gRoomVars
_08078250: .4byte gUnk_0200AF00
_08078254:
movs r4, #6
ldr r6, _0807825C @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_0807825C: .4byte gUnk_0200AF00
_08078260:
movs r4, #5
ldr r6, _08078268 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078268: .4byte gUnk_0200AF00
_0807826C:
movs r4, #2
ldr r6, _08078274 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078274: .4byte gUnk_0200AF00
_08078278:
bl sub_080789A8
cmp r0, #0
beq _080782A4
adds r0, r5, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #0xe
beq _080782BC
ldr r1, _080782A0 @ =gUnk_03003BE0
ldrb r0, [r1, #1]
movs r4, #9
cmp r0, #2
bne _080782B6
ldr r0, [r1, #8]
ldrb r0, [r0, #0x16]
cmp r0, #1
bne _080782B6
movs r4, #8
b _080782B6
.align 2, 0
_080782A0: .4byte gUnk_03003BE0
_080782A4:
adds r0, r5, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #1
bne _080782B6
ldrb r0, [r5, #0x1a]
cmp r0, #0
bne _080782B6
movs r4, #0xc
_080782B6:
adds r0, r6, #0
adds r0, #0x2c
strb r4, [r0]
_080782BC:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080782C0
sub_080782C0: @ 0x080782C0
push {r4, r5, r6, lr}
ldr r1, _080782D8 @ =gPlayerState
adds r2, r1, #0
adds r2, #0xa8
ldrb r0, [r2]
adds r4, r1, #0
cmp r0, #0
bne _080782DC
adds r0, r4, #0
adds r0, #0xa9
ldrb r0, [r0]
b _080782DE
.align 2, 0
_080782D8: .4byte gPlayerState
_080782DC:
ldrb r0, [r2]
_080782DE:
subs r0, #2
cmp r0, #0x14
bhi _08078348
lsls r0, r0, #2
ldr r1, _080782F0 @ =_080782F4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080782F0: .4byte _080782F4
_080782F4: @ jump table
.4byte _080784AC @ case 0
.4byte _080784AC @ case 1
.4byte _08078348 @ case 2
.4byte _08078348 @ case 3
.4byte _08078348 @ case 4
.4byte _08078348 @ case 5
.4byte _08078348 @ case 6
.4byte _08078348 @ case 7
.4byte _08078348 @ case 8
.4byte _08078348 @ case 9
.4byte _080784AC @ case 10
.4byte _08078348 @ case 11
.4byte _08078348 @ case 12
.4byte _08078348 @ case 13
.4byte _08078348 @ case 14
.4byte _08078348 @ case 15
.4byte _080784AC @ case 16
.4byte _08078348 @ case 17
.4byte _08078348 @ case 18
.4byte _080784AC @ case 19
.4byte _080784AC @ case 20
_08078348:
adds r0, r4, #0
adds r0, #0x27
adds r2, r4, #0
adds r2, #0x26
ldrb r1, [r0]
ldrb r0, [r2]
orrs r0, r1
cmp r0, #0
beq _0807835C
b _080784AC
_0807835C:
ldrb r0, [r4, #0x12]
cmp r0, #1
bne _08078376
ldrb r0, [r4, #0x14]
cmp r0, #0
bne _0807836A
b _080784AC
_0807836A:
bl CanDispEzloMessage
cmp r0, #0
beq _08078374
b _080784C4
_08078374:
b _080784AC
_08078376:
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #7
ands r0, r1
cmp r0, #0
beq _08078384
b _080784AC
_08078384:
bl CanDispEzloMessage
cmp r0, #0
beq _0807838E
b _080784C4
_0807838E:
bl sub_080784E4
ldr r6, [r0, #8]
cmp r6, #0
bne _0807839A
b _080784AC
_0807839A:
ldrb r0, [r4, #5]
cmp r0, #0
beq _080783B6
cmp r0, #4
beq _080783A6
b _080784AC
_080783A6:
ldr r0, _08078400 @ =gPlayerEntity
ldr r0, [r0, #0x74]
ldr r0, [r0, #0x54]
ldrh r1, [r0, #8]
ldr r0, _08078404 @ =0x00000206
cmp r1, r0
beq _080783B6
b _080784AC
_080783B6:
ldr r2, _08078408 @ =gPlayerState
adds r0, r2, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #5
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _0807842C
ldr r5, _0807840C @ =gUnk_03003DF0
ldr r0, [r5, #4]
ldrb r0, [r0, #3]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x63
bhi _0807842C
movs r0, #0
bl sub_0801E738
ldr r0, _08078410 @ =gSave
ldr r1, _08078414 @ =0x0000012B
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0
beq _08078418
ldr r1, [r5, #4]
ldrb r0, [r1, #3]
strb r0, [r5, #2]
ldr r0, [r1, #8]
adds r0, #0x39
movs r1, #2
strb r1, [r0]
movs r0, #7
strb r0, [r4, #0xc]
b _08078420
.align 2, 0
_08078400: .4byte gPlayerEntity
_08078404: .4byte 0x00000206
_08078408: .4byte gPlayerState
_0807840C: .4byte gUnk_03003DF0
_08078410: .4byte gSave
_08078414: .4byte 0x0000012B
_08078418:
ldr r0, _08078428 @ =0x00000B65
movs r1, #0
bl CreateEzloHint
_08078420:
movs r0, #0x13
bl ForceSetPlayerState
b _080784C4
.align 2, 0
_08078428: .4byte 0x00000B65
_0807842C:
adds r0, r4, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x88
ands r0, r1
cmp r0, #0
beq _080784AC
ldr r0, _08078450 @ =gUnk_03003DF0
ldr r0, [r0, #4]
ldrb r0, [r0, #1]
cmp r0, #0xa
bhi _080784C4
lsls r0, r0, #2
ldr r1, _08078454 @ =_08078458
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078450: .4byte gUnk_03003DF0
_08078454: .4byte _08078458
_08078458: @ jump table
.4byte _080784C4 @ case 0
.4byte _08078484 @ case 1
.4byte _080784C4 @ case 2
.4byte _0807848E @ case 3
.4byte _080784C4 @ case 4
.4byte _0807848E @ case 5
.4byte _08078484 @ case 6
.4byte _0807848E @ case 7
.4byte _080784A4 @ case 8
.4byte _08078484 @ case 9
.4byte _08078484 @ case 10
_08078484:
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x13
bl ForceSetPlayerState
_0807848E:
adds r1, r6, #0
adds r1, #0x39
movs r2, #0
movs r0, #1
strb r0, [r1]
ldr r0, _080784A0 @ =gUnk_03003DF0
strb r2, [r0, #2]
b _080784C4
.align 2, 0
_080784A0: .4byte gUnk_03003DF0
_080784A4:
ldr r2, _080784B0 @ =gRoomVars
ldrb r0, [r2, #6]
cmp r0, #0
beq _080784B4
_080784AC:
movs r0, #0
b _080784C6
.align 2, 0
_080784B0: .4byte gRoomVars
_080784B4:
adds r1, r6, #0
adds r1, #0x39
movs r0, #1
strb r0, [r1]
ldrb r0, [r6, #0xa]
strb r0, [r2, #6]
ldrb r0, [r6, #0xb]
strb r0, [r2, #7]
_080784C4:
movs r0, #1
_080784C6:
pop {r4, r5, r6, pc}
thumb_func_start sub_080784C8
sub_080784C8: @ 0x080784C8
push {r4, lr}
ldr r4, _080784DC @ =gUnk_03003DF0
movs r1, #0xc4
lsls r1, r1, #1
adds r0, r4, #0
bl MemClear
ldr r0, _080784E0 @ =gUnk_0811C000
str r0, [r4, #4]
pop {r4, pc}
.align 2, 0
_080784DC: .4byte gUnk_03003DF0
_080784E0: .4byte gUnk_0811C000
thumb_func_start sub_080784E4
sub_080784E4: @ 0x080784E4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r0, _080784FC @ =gUnk_03003DF0
ldrb r1, [r0]
mov r8, r0
cmp r1, #0
beq _08078500
ldr r0, [r0, #4]
b _0807876A
.align 2, 0
_080784FC: .4byte gUnk_03003DF0
_08078500:
ldr r2, _08078528 @ =gPlayerState
adds r0, r2, #0
adds r0, #0x27
adds r3, r2, #0
adds r3, #0x26
ldrb r1, [r0]
ldrb r0, [r3]
orrs r0, r1
cmp r0, #0
bne _08078598
adds r1, r2, #0
adds r1, #0xa8
ldrb r0, [r1]
cmp r0, #0
bne _0807852C
adds r0, r2, #0
adds r0, #0xa9
ldrb r0, [r0]
b _0807852E
.align 2, 0
_08078528: .4byte gPlayerState
_0807852C:
ldrb r0, [r1]
_0807852E:
subs r0, #2
cmp r0, #0x14
bhi _080785B0
lsls r0, r0, #2
ldr r1, _08078540 @ =_08078544
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078540: .4byte _08078544
_08078544: @ jump table
.4byte _08078598 @ case 0
.4byte _08078598 @ case 1
.4byte _080785B0 @ case 2
.4byte _080785B0 @ case 3
.4byte _080785B0 @ case 4
.4byte _080785B0 @ case 5
.4byte _080785B0 @ case 6
.4byte _080785B0 @ case 7
.4byte _080785B0 @ case 8
.4byte _080785B0 @ case 9
.4byte _080785B0 @ case 10
.4byte _080785B0 @ case 11
.4byte _080785B0 @ case 12
.4byte _080785B0 @ case 13
.4byte _080785B0 @ case 14
.4byte _080785B0 @ case 15
.4byte _08078598 @ case 16
.4byte _080785B0 @ case 17
.4byte _080785B0 @ case 18
.4byte _08078598 @ case 19
.4byte _08078598 @ case 20
_08078598:
movs r0, #0xff
mov r1, r8
strb r0, [r1, #3]
ldr r0, _080785AC @ =gUnk_0811C000
str r0, [r1, #4]
movs r1, #1
mov r2, r8
strb r1, [r2]
b _0807876A
.align 2, 0
_080785AC: .4byte gUnk_0811C000
_080785B0:
ldr r0, [r2, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _080785F0
bl HasDungeonMap
cmp r0, #0
beq _080785C4
movs r0, #1
_080785C4:
adds r7, r0, #0
bl HasDungeonCompass
cmp r0, #0
beq _080785D2
movs r0, #2
orrs r7, r0
_080785D2:
ldr r3, _080785E4 @ =gPlayerEntity
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
ldr r0, _080785E8 @ =gUnk_0811C00C
adds r2, r1, r0
ldr r5, _080785EC @ =gUnk_03003DF0
mov r8, r5
b _080785FE
.align 2, 0
_080785E4: .4byte gPlayerEntity
_080785E8: .4byte gUnk_0811C00C
_080785EC: .4byte gUnk_03003DF0
_080785F0:
ldr r3, _08078624 @ =gPlayerEntity
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
ldr r0, _08078628 @ =gUnk_0811C014
adds r2, r1, r0
movs r7, #0
_080785FE:
mov ip, r3
mov r0, ip
movs r3, #0x2e
ldrsh r1, [r0, r3]
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov sl, r1
mov r5, ip
movs r0, #0x32
ldrsh r1, [r5, r0]
movs r0, #1
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov sb, r1
movs r6, #0
ldr r5, _0807862C @ =gUnk_03003DF8
b _08078724
.align 2, 0
_08078624: .4byte gPlayerEntity
_08078628: .4byte gUnk_0811C014
_0807862C: .4byte gUnk_03003DF8
_08078630:
ldrb r1, [r5]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
bne _0807864E
mov r0, ip
adds r0, #0x38
adds r1, r2, #0
adds r1, #0x38
ldrb r2, [r0]
ldrb r0, [r1]
ands r0, r2
cmp r0, #0
beq _08078714
_0807864E:
ldrb r1, [r5, #2]
mov r2, ip
ldrb r0, [r2, #0x14]
lsrs r0, r0, #1
asrs r1, r0
ands r1, r3
cmp r1, #0
bne _08078714
ldrb r0, [r5, #1]
cmp r0, #0xa
bhi _080786D4
lsls r0, r0, #2
ldr r1, _08078670 @ =_08078674
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078670: .4byte _08078674
_08078674: @ jump table
.4byte _08078714 @ case 0
.4byte _080786A0 @ case 1
.4byte _080786C4 @ case 2
.4byte _080786A0 @ case 3
.4byte _080786A0 @ case 4
.4byte _080786C8 @ case 5
.4byte _080786CC @ case 6
.4byte _080786B4 @ case 7
.4byte _080786A0 @ case 8
.4byte _080786A0 @ case 9
.4byte _080786D4 @ case 10
_080786A0:
ldr r0, _080786B0 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08078714
b _080786D4
.align 2, 0
_080786B0: .4byte gPlayerState
_080786B4:
ldr r0, _080786C0 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
b _080786D0
.align 2, 0
_080786C0: .4byte gPlayerState
_080786C4:
ldrb r0, [r5, #3]
b _080786D0
_080786C8:
movs r0, #1
b _080786CE
_080786CC:
movs r0, #2
_080786CE:
ands r0, r7
_080786D0:
cmp r0, #0
beq _08078714
_080786D4:
ldr r0, [r5, #8]
movs r1, #0x2e
ldrsh r3, [r0, r1]
movs r2, #0x32
ldrsh r4, [r0, r2]
ldr r1, [r5, #4]
cmp r1, #0
beq _080786F4
movs r0, #0
ldrsb r0, [r1, r0]
adds r3, r3, r0
movs r0, #1
ldrsb r0, [r1, r0]
adds r4, r4, r0
adds r2, r1, #2
b _080786F8
_080786F4:
ldr r0, [r0, #0x48]
adds r2, r0, #6
_080786F8:
ldrb r1, [r2]
mov r5, sl
adds r0, r1, r5
subs r0, r0, r3
lsls r1, r1, #1
cmp r0, r1
bhs _08078714
ldrb r1, [r2, #1]
mov r2, sb
adds r0, r1, r2
subs r0, r0, r4
lsls r1, r1, #1
cmp r0, r1
blo _0807873A
_08078714:
adds r6, #1
cmp r6, #0x1f
bhi _08078758
lsls r0, r6, #1
adds r0, r0, r6
lsls r0, r0, #2
ldr r3, _08078754 @ =gUnk_03003DF8
adds r5, r0, r3
_08078724:
ldr r2, [r5, #8]
cmp r2, #0
beq _08078714
adds r0, r2, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
blt _0807873A
b _08078630
_0807873A:
cmp r6, #0x1f
bhi _08078758
mov r5, r8
strb r6, [r5, #3]
lsls r0, r6, #1
adds r0, r0, r6
lsls r0, r0, #2
mov r1, r8
adds r1, #8
adds r0, r0, r1
str r0, [r5, #4]
b _08078762
.align 2, 0
_08078754: .4byte gUnk_03003DF8
_08078758:
movs r0, #0xff
mov r1, r8
strb r0, [r1, #3]
ldr r0, _08078774 @ =gUnk_0811C000
str r0, [r1, #4]
_08078762:
movs r0, #1
mov r2, r8
strb r0, [r2]
ldr r0, [r2, #4]
_0807876A:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08078774: .4byte gUnk_0811C000
-6292
View File
File diff suppressed because it is too large Load Diff
-1997
View File
File diff suppressed because it is too large Load Diff
-153
View File
@@ -1,153 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0807CAA0
sub_0807CAA0: @ 0x0807CAA0
push {r4, lr}
adds r3, r0, #0
lsrs r4, r3, #2
ldr r0, _0807CAC4 @ =gUnk_02002B32
adds r4, r4, r0
movs r0, #3
ands r3, r0
lsls r3, r3, #1
lsls r1, r3
ldrb r2, [r4]
lsls r0, r3
ands r0, r2
eors r2, r0
orrs r2, r1
strb r2, [r4]
lsrs r0, r3
pop {r4, pc}
.align 2, 0
_0807CAC4: .4byte gUnk_02002B32
thumb_func_start sub_0807CAC8
sub_0807CAC8: @ 0x0807CAC8
ldr r2, _0807CAE0 @ =gSave
ldr r1, _0807CAE4 @ =gArea
ldr r3, _0807CAE8 @ =0x0000047C
adds r2, r2, r3
ldrb r1, [r1, #3]
adds r2, r2, r1
movs r1, #1
lsls r1, r0
ldrb r0, [r2]
orrs r1, r0
strb r1, [r2]
bx lr
.align 2, 0
_0807CAE0: .4byte gSave
_0807CAE4: .4byte gArea
_0807CAE8: .4byte 0x0000047C
thumb_func_start sub_0807CAEC
sub_0807CAEC: @ 0x0807CAEC
adds r2, r0, #0
ldr r0, _0807CB04 @ =gSave
ldr r1, _0807CB08 @ =gArea
ldr r3, _0807CB0C @ =0x0000047C
adds r0, r0, r3
ldrb r1, [r1, #3]
adds r0, r0, r1
ldrb r0, [r0]
asrs r0, r2
movs r1, #1
ands r0, r1
bx lr
.align 2, 0
_0807CB04: .4byte gSave
_0807CB08: .4byte gArea
_0807CB0C: .4byte 0x0000047C
thumb_func_start CheckLocalFlagByBank
CheckLocalFlagByBank: @ 0x0807CB10
push {lr}
adds r2, r0, #0
ldr r0, _0807CB20 @ =gGlobalFlags
adds r2, r2, r1
adds r1, r2, #0
bl ReadBit
pop {pc}
.align 2, 0
_0807CB20: .4byte gGlobalFlags
thumb_func_start sub_0807CB24
sub_0807CB24: @ 0x0807CB24
push {lr}
adds r2, r0, #0
adds r3, r1, #0
cmp r2, #0x11
bhi _0807CB84
lsls r0, r2, #2
ldr r1, _0807CB38 @ =_0807CB3C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807CB38: .4byte _0807CB3C
_0807CB3C: @ jump table
.4byte _0807CB84 @ case 0
.4byte _0807CB88 @ case 1
.4byte _0807CB88 @ case 2
.4byte _0807CB88 @ case 3
.4byte _0807CB88 @ case 4
.4byte _0807CB88 @ case 5
.4byte _0807CB88 @ case 6
.4byte _0807CB88 @ case 7
.4byte _0807CB88 @ case 8
.4byte _0807CB88 @ case 9
.4byte _0807CB88 @ case 10
.4byte _0807CB88 @ case 11
.4byte _0807CB88 @ case 12
.4byte _0807CB88 @ case 13
.4byte _0807CB84 @ case 14
.4byte _0807CBA0 @ case 15
.4byte _0807CBAE @ case 16
.4byte _0807CBBC @ case 17
_0807CB84:
movs r1, #0
b _0807CBCA
_0807CB88:
ldr r0, _0807CB9C @ =gLocalFlagBanks
lsls r1, r2, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r3, #0
bl CheckLocalFlagByBank
_0807CB96:
adds r1, r0, #0
b _0807CBCA
.align 2, 0
_0807CB9C: .4byte gLocalFlagBanks
_0807CBA0:
adds r0, r3, #0
bl GetInventoryValue
cmp r0, #0
beq _0807CB96
movs r0, #1
b _0807CB96
_0807CBAE:
adds r0, r3, #0
bl GetInventoryValue
movs r1, #0
cmp r0, #1
bne _0807CBCA
b _0807CBC8
_0807CBBC:
adds r0, r3, #0
bl GetInventoryValue
movs r1, #0
cmp r0, #2
bne _0807CBCA
_0807CBC8:
movs r1, #1
_0807CBCA:
adds r0, r1, #0
pop {pc}
.align 2, 0
-436
View File
@@ -1,436 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start UpdateDoorTransition
UpdateDoorTransition: @ 0x08080A40
push {r4, r5, r6, r7, lr}
ldr r7, _08080A70 @ =gRoomControls
ldr r1, [r7, #0x30]
ldr r0, _08080A74 @ =gPlayerEntity
adds r2, r7, #0
cmp r1, r0
beq _08080A50
b _08080B5C
_08080A50:
ldr r0, _08080A78 @ =gPlayerState
ldrb r0, [r0, #2]
cmp r0, #0
beq _08080A5A
b _08080B5C
_08080A5A:
ldrb r0, [r1, #0xc]
subs r0, #1
cmp r0, #0x1c
bls _08080A64
b _08080B5C
_08080A64:
lsls r0, r0, #2
ldr r1, _08080A7C @ =_08080A80
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08080A70: .4byte gRoomControls
_08080A74: .4byte gPlayerEntity
_08080A78: .4byte gPlayerState
_08080A7C: .4byte _08080A80
_08080A80: @ jump table
.4byte _08080AFA @ case 0
.4byte _08080B5C @ case 1
.4byte _08080B5C @ case 2
.4byte _08080B5C @ case 3
.4byte _08080B5C @ case 4
.4byte _08080B5C @ case 5
.4byte _08080B5C @ case 6
.4byte _08080B5C @ case 7
.4byte _08080AFA @ case 8
.4byte _08080B5C @ case 9
.4byte _08080B5C @ case 10
.4byte _08080B5C @ case 11
.4byte _08080B5C @ case 12
.4byte _08080B5C @ case 13
.4byte _08080AF4 @ case 14
.4byte _08080B5C @ case 15
.4byte _08080B5C @ case 16
.4byte _08080B5C @ case 17
.4byte _08080B5C @ case 18
.4byte _08080B5C @ case 19
.4byte _08080B5C @ case 20
.4byte _08080B5C @ case 21
.4byte _08080B5C @ case 22
.4byte _08080AFA @ case 23
.4byte _08080B5C @ case 24
.4byte _08080B5C @ case 25
.4byte _08080B5C @ case 26
.4byte _08080B5C @ case 27
.4byte _08080AFA @ case 28
_08080AF4:
ldrb r0, [r2, #4]
cmp r0, #0x48
beq _08080B5C
_08080AFA:
ldr r3, [r7, #0x30]
movs r0, #0x32
ldrsh r1, [r3, r0]
ldrh r0, [r7, #8]
subs r6, r1, r0
movs r0, #0x2e
ldrsh r1, [r3, r0]
ldrh r0, [r7, #6]
subs r5, r1, r0
asrs r0, r5, #4
movs r2, #0x3f
ands r0, r2
asrs r1, r6, #4
ands r1, r2
lsls r1, r1, #6
orrs r0, r1
adds r3, #0x38
ldrb r1, [r3]
bl sub_080002C8
adds r4, r0, #0
ldr r0, [r7, #0x30]
adds r0, #0x38
ldrb r2, [r0]
adds r0, r5, #0
adds r1, r6, #0
bl sub_080002A8
ldr r1, _08080B48 @ =gRoomTransition
strh r0, [r1, #0xa]
cmp r4, #0x3f
beq _08080B50
cmp r4, #0x3f
bhi _08080B4C
cmp r4, #0x29
bhi _08080B5C
cmp r4, #0x28
blo _08080B5C
b _08080B50
.align 2, 0
_08080B48: .4byte gRoomTransition
_08080B4C:
cmp r4, #0xf1
bne _08080B5C
_08080B50:
adds r0, r5, #0
adds r1, r6, #0
movs r2, #0xff
movs r3, #0xa
bl sub_080806BC
_08080B5C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08080B60
sub_08080B60: @ 0x08080B60
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r1, _08080B90 @ =0x00005004
adds r4, r0, r1
ldr r2, _08080B94 @ =gUnk_080B37A0
mov r8, r2
movs r3, #0
ldr r1, _08080B98 @ =0x00003FFF
mov ip, r1
ldr r7, _08080B9C @ =gUnk_080B7910
ldr r2, _08080BA0 @ =0x0000B004
adds r1, r0, r2
adds r2, r0, #4
ldr r6, _08080BA4 @ =0xFFFFC000
ldr r5, _08080BA8 @ =0x00000FFF
_08080B80:
ldrh r0, [r2]
cmp r0, ip
bhi _08080BAC
lsls r0, r0, #1
adds r0, r0, r4
ldrh r0, [r0]
add r0, r8
b _08080BB0
.align 2, 0
_08080B90: .4byte 0x00005004
_08080B94: .4byte gUnk_080B37A0
_08080B98: .4byte 0x00003FFF
_08080B9C: .4byte gUnk_080B7910
_08080BA0: .4byte 0x0000B004
_08080BA4: .4byte 0xFFFFC000
_08080BA8: .4byte 0x00000FFF
_08080BAC:
adds r0, r0, r6
adds r0, r0, r7
_08080BB0:
ldrb r0, [r0]
strb r0, [r1]
adds r1, #1
adds r2, #2
adds r3, #1
cmp r3, r5
bls _08080B80
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08080BC4
sub_08080BC4: @ 0x08080BC4
push {r4, r5, r6, lr}
ldr r3, _08080C40 @ =gRoomControls
movs r0, #0xa
ldrsh r1, [r3, r0]
ldrh r0, [r3, #6]
subs r5, r1, r0
movs r2, #0xf
ands r5, r2
movs r1, #0xc
ldrsh r0, [r3, r1]
ldrh r1, [r3, #8]
subs r0, r0, r1
ands r0, r2
adds r6, r0, #0
adds r6, #8
ldrh r2, [r3, #0x16]
adds r4, r2, #0
cmp r4, #0
beq _08080C50
subs r2, #1
strh r2, [r3, #0x16]
ldrb r0, [r3, #0x14]
lsls r0, r0, #4
movs r1, #0xe
ands r2, r1
adds r0, r0, r2
ldr r1, _08080C44 @ =gUnk_080169A4
adds r2, r0, r1
ldr r4, _08080C48 @ =gMapBottom
ldr r1, [r4]
cmp r1, #0
beq _08080C16
movs r0, #0
ldrsb r0, [r2, r0]
adds r0, r0, r5
strh r0, [r1, #2]
ldr r1, [r4]
movs r0, #1
ldrsb r0, [r2, r0]
adds r0, r0, r6
strh r0, [r1, #4]
_08080C16:
ldr r4, _08080C4C @ =gMapTop
ldr r1, [r4]
cmp r1, #0
beq _08080C30
movs r0, #0
ldrsb r0, [r2, r0]
adds r0, r0, r5
strh r0, [r1, #2]
ldr r1, [r4]
movs r0, #1
ldrsb r0, [r2, r0]
adds r0, r0, r6
strh r0, [r1, #4]
_08080C30:
ldrb r1, [r2]
adds r0, r3, #0
adds r0, #0x24
strb r1, [r0]
ldrb r1, [r2, #1]
adds r0, #1
strb r1, [r0]
b _08080C76
.align 2, 0
_08080C40: .4byte gRoomControls
_08080C44: .4byte gUnk_080169A4
_08080C48: .4byte gMapBottom
_08080C4C: .4byte gMapTop
_08080C50:
ldr r0, _08080C78 @ =gMapBottom
ldr r1, [r0]
cmp r1, #0
beq _08080C5E
strh r5, [r1, #2]
ldr r0, [r0]
strh r6, [r0, #4]
_08080C5E:
ldr r0, _08080C7C @ =gMapTop
ldr r1, [r0]
cmp r1, #0
beq _08080C6C
strh r5, [r1, #2]
ldr r0, [r0]
strh r6, [r0, #4]
_08080C6C:
adds r0, r3, #0
adds r0, #0x24
strb r4, [r0]
adds r0, #1
strb r4, [r0]
_08080C76:
pop {r4, r5, r6, pc}
.align 2, 0
_08080C78: .4byte gMapBottom
_08080C7C: .4byte gMapTop
thumb_func_start sub_08080C80
sub_08080C80: @ 0x08080C80
push {r4, lr}
bl sub_080197D4
ldr r0, _08080CA8 @ =gMapDataBottom
ldr r4, _08080CAC @ =gRoomControls
ldrh r1, [r4, #0x1e]
lsrs r1, r1, #4
ldrh r2, [r4, #0x20]
lsrs r2, r2, #4
bl sub_0807C8B0
ldr r0, _08080CB0 @ =gMapDataTop
ldrh r1, [r4, #0x1e]
lsrs r1, r1, #4
ldrh r2, [r4, #0x20]
lsrs r2, r2, #4
bl sub_0807C8B0
pop {r4, pc}
.align 2, 0
_08080CA8: .4byte gMapDataBottom
_08080CAC: .4byte gRoomControls
_08080CB0: .4byte gMapDataTop
thumb_func_start sub_08080CB4
sub_08080CB4: @ 0x08080CB4
push {r4, r5, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x58
ldrb r0, [r4, #0xa]
ldrb r1, [r1]
cmp r0, r1
beq _08080CF0
adds r1, r0, #0
adds r0, r4, #0
bl InitAnimationForceUpdate
ldrb r0, [r4, #0xa]
cmp r0, #0x5c
beq _08080CD4
b _08080E00
_08080CD4:
ldrb r0, [r4, #0xb]
lsls r0, r0, #3
ldr r1, _08080CEC @ =gUnk_080C9CBC
adds r0, r0, r1
ldrb r0, [r0]
movs r1, #0xf
ands r1, r0
lsls r0, r0, #4
orrs r0, r1
strb r0, [r4, #0x1a]
b _08080E00
.align 2, 0
_08080CEC: .4byte gUnk_080C9CBC
_08080CF0:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
bne _08080D00
b _08080E00
_08080D00:
ldrb r0, [r4, #0xa]
subs r0, #0x40
cmp r0, #0x22
bhi _08080E00
lsls r0, r0, #2
ldr r1, _08080D14 @ =_08080D18
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08080D14: .4byte _08080D18
_08080D18: @ jump table
.4byte _08080DEE @ case 0
.4byte _08080DEE @ case 1
.4byte _08080DEE @ case 2
.4byte _08080DEE @ case 3
.4byte _08080E00 @ case 4
.4byte _08080E00 @ case 5
.4byte _08080E00 @ case 6
.4byte _08080E00 @ case 7
.4byte _08080E00 @ case 8
.4byte _08080E00 @ case 9
.4byte _08080E00 @ case 10
.4byte _08080E00 @ case 11
.4byte _08080E00 @ case 12
.4byte _08080E00 @ case 13
.4byte _08080E00 @ case 14
.4byte _08080E00 @ case 15
.4byte _08080E00 @ case 16
.4byte _08080E00 @ case 17
.4byte _08080E00 @ case 18
.4byte _08080E00 @ case 19
.4byte _08080E00 @ case 20
.4byte _08080E00 @ case 21
.4byte _08080E00 @ case 22
.4byte _08080E00 @ case 23
.4byte _08080E00 @ case 24
.4byte _08080E00 @ case 25
.4byte _08080E00 @ case 26
.4byte _08080E00 @ case 27
.4byte _08080DEE @ case 28
.4byte _08080E00 @ case 29
.4byte _08080E00 @ case 30
.4byte _08080E00 @ case 31
.4byte _08080DA4 @ case 32
.4byte _08080E00 @ case 33
.4byte _08080DEE @ case 34
_08080DA4:
adds r5, r4, #0
adds r5, #0x6a
ldrb r0, [r5]
cmp r0, #0
beq _08080DB4
subs r0, #1
strb r0, [r5]
b _08080E00
_08080DB4:
bl Random
movs r1, #0x1f
ands r0, r1
adds r0, #0xa
strb r0, [r5]
adds r0, r4, #0
movs r1, #7
movs r2, #0
bl CreateFx
adds r1, r0, #0
cmp r1, #0
beq _08080E00
adds r0, r4, #0
adds r0, #0x62
ldrb r0, [r0]
adds r2, r1, #0
adds r2, #0x62
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x63
ldrb r0, [r0]
adds r2, #1
strb r0, [r2]
adds r0, r4, #0
bl SortEntityAbove
b _08080E00
_08080DEE:
ldr r0, _08080E04 @ =gRoomTransition
ldr r0, [r0]
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _08080E00
adds r0, r4, #0
bl CreateSparkle
_08080E00:
pop {r4, r5, pc}
.align 2, 0
_08080E04: .4byte gRoomTransition
-101
View File
@@ -1,101 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_080300E8
sub_080300E8: @ 0x080300E8
push {lr}
ldr r1, _08030110 @ =gRoomTransition
adds r3, r1, #0
adds r3, #0xae
ldrh r0, [r3]
cmp r0, #0xff
beq _0803010C
lsls r0, r0, #2
adds r1, #0x6c
adds r0, r0, r1
ldr r2, _08030114 @ =gPlayerEntity
ldrh r1, [r0]
strh r1, [r2, #0x2e]
ldrh r0, [r0, #2]
adds r0, #0xc
strh r0, [r2, #0x32]
movs r0, #0xff
strh r0, [r3]
_0803010C:
pop {pc}
.align 2, 0
_08030110: .4byte gRoomTransition
_08030114: .4byte gPlayerEntity
thumb_func_start sub_08030118
sub_08030118: @ 0x08030118
push {lr}
adds r2, r0, #0
ldr r0, _0803013C @ =gRoomTransition
adds r0, #0xac
ldrh r0, [r0]
asrs r0, r2
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08030140
movs r0, #0xc0
lsls r0, r0, #2
adds r1, r2, #0
adds r1, #0x67
bl SetLocalFlagByBank
b _0803014C
.align 2, 0
_0803013C: .4byte gRoomTransition
_08030140:
movs r0, #0xc0
lsls r0, r0, #2
adds r1, r2, #0
adds r1, #0x67
bl ClearLocalFlagByBank
_0803014C:
pop {pc}
.align 2, 0
thumb_func_start sub_08030150
sub_08030150: @ 0x08030150
push {r4, r5, lr}
mov ip, r0
ldr r2, _08030194 @ =gRoomTransition
adds r5, r2, #0
adds r5, #0xac
mov r3, ip
adds r3, #0x80
ldrb r4, [r3]
movs r0, #1
lsls r0, r4
ldrh r1, [r5]
bics r1, r0
mov r0, ip
adds r0, #0x84
ldr r0, [r0]
lsls r0, r4
orrs r1, r0
strh r1, [r5]
ldrb r0, [r3]
lsls r0, r0, #2
adds r2, #0x6c
adds r0, r0, r2
mov r4, ip
ldrh r1, [r4, #0x2e]
strh r1, [r0]
ldrb r0, [r3]
lsls r0, r0, #1
adds r0, #1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r1, [r4, #0x32]
strh r1, [r0]
pop {r4, r5, pc}
.align 2, 0
_08030194: .4byte gRoomTransition
-23
View File
@@ -1,23 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start GetInventoryValue
GetInventoryValue: @ 0x0807CA84
adds r2, r0, #0
lsrs r0, r2, #2
ldr r1, _0807CA9C @ =gUnk_02002B32
adds r0, r0, r1
ldrb r0, [r0]
movs r1, #3
ands r2, r1
lsls r2, r2, #1
asrs r0, r2
ands r0, r1
bx lr
.align 2, 0
_0807CA9C: .4byte gUnk_02002B32
+1 -1
View File
@@ -705,7 +705,7 @@
.2byte \s
.endm
.macro _0807F078 a:req, b:req
.macro SetInventoryValue a:req, b:req
.2byte 0x0c85
.2byte \a
.2byte \b
-40
View File
@@ -1,40 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ModArrows
ModArrows: @ 0x08054330
push {lr}
adds r3, r0, #0
ldr r1, _08054354 @ =gSave
adds r0, r1, #0
adds r0, #0xad
ldrb r0, [r0]
adds r3, r3, r0
ldr r2, _08054358 @ =gQuiverSizes
adds r0, r1, #0
adds r0, #0xaf
ldrb r0, [r0]
adds r0, r0, r2
ldrb r2, [r0]
cmp r3, #0
bge _0805435C
movs r3, #0
b _08054362
.align 2, 0
_08054354: .4byte gSave
_08054358: .4byte gQuiverSizes
_0805435C:
cmp r2, r3
bge _08054362
adds r3, r2, #0
_08054362:
adds r0, r1, #0
adds r0, #0xad
strb r3, [r0]
pop {pc}
.align 2, 0
-40
View File
@@ -1,40 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ModBombs
ModBombs: @ 0x080542F4
push {lr}
adds r3, r0, #0
ldr r1, _08054318 @ =gSave
adds r0, r1, #0
adds r0, #0xac
ldrb r0, [r0]
adds r3, r3, r0
ldr r2, _0805431C @ =gBombBagSizes
adds r0, r1, #0
adds r0, #0xae
ldrb r0, [r0]
adds r0, r0, r2
ldrb r2, [r0]
cmp r3, #0
bge _08054320
movs r3, #0
b _08054326
.align 2, 0
_08054318: .4byte gSave
_0805431C: .4byte gBombBagSizes
_08054320:
cmp r2, r3
bge _08054326
adds r3, r2, #0
_08054326:
adds r0, r1, #0
adds r0, #0xac
strb r3, [r0]
pop {pc}
.align 2, 0
@@ -1,12 +1,4 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0805ED30
sub_0805ED30: @ 0x0805ED30
push {r4, lr}
ldr r2, _0805ED50 @ =gPlayerState
adds r0, r2, #0
@@ -120,104 +112,4 @@ _0805EDCA:
_0805EDF8: .4byte gInput
_0805EDFC: .4byte gPlayerState
_0805EE00: .4byte gUnk_08109202
thumb_func_start sub_0805EE04
sub_0805EE04: @ 0x0805EE04
push {r4, r5, lr}
adds r2, r0, #0
movs r5, #0x80
lsls r5, r5, #2
ands r0, r5
rsbs r0, r0, #0
asrs r1, r0, #0x1f
movs r0, #0x80
lsls r0, r0, #5
ands r1, r0
movs r4, #0x80
lsls r4, r4, #1
adds r0, r2, #0
ands r0, r4
cmp r0, #0
beq _0805EE32
movs r0, #0x20
orrs r1, r0
movs r0, #0x80
lsls r0, r0, #8
orrs r1, r0
movs r0, #0x80
orrs r1, r0
_0805EE32:
movs r0, #1
ands r0, r2
cmp r0, #0
beq _0805EE42
movs r0, #8
orrs r1, r0
movs r0, #0x41
orrs r1, r0
_0805EE42:
movs r3, #2
adds r0, r2, #0
ands r0, r3
cmp r0, #0
beq _0805EE52
movs r0, #0x10
orrs r1, r0
orrs r1, r3
_0805EE52:
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _0805EE5C
orrs r1, r4
_0805EE5C:
movs r0, #0x20
ands r0, r2
cmp r0, #0
beq _0805EE66
orrs r1, r5
_0805EE66:
movs r0, #0x40
ands r0, r2
cmp r0, #0
beq _0805EE74
movs r0, #0x80
lsls r0, r0, #3
orrs r1, r0
_0805EE74:
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _0805EE82
movs r0, #0x80
lsls r0, r0, #4
orrs r1, r0
_0805EE82:
adds r0, r1, #0
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0805EE88
sub_0805EE88: @ 0x0805EE88
push {lr}
ldr r1, _0805EEB0 @ =gRoomTransition
adds r0, r1, #0
adds r0, #0x2f
ldrb r0, [r0]
cmp r0, #0
beq _0805EEAC
ldr r1, [r1]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _0805EEAC
movs r0, #0xc
ands r1, r0
lsrs r0, r1, #2
adds r0, #0x2f
bl LoadPaletteGroup
_0805EEAC:
pop {pc}
.align 2, 0
_0805EEB0: .4byte gRoomTransition
.syntax divided
+7 -7
View File
@@ -26,7 +26,7 @@ _080A2FFC:
bgt _080A3052
cmp r0, #0x20
bne _080A3052
ldr r1, _080A301C @ =gChooseFileState
ldr r1, _080A301C @ =gMenu
ldrb r0, [r1]
cmp r0, #0
bne _080A3052
@@ -36,9 +36,9 @@ _080A2FFC:
movs r0, #0xfc
b _080A302E
.align 2, 0
_080A301C: .4byte gChooseFileState
_080A301C: .4byte gMenu
_080A3020:
ldr r1, _080A3038 @ =gChooseFileState
ldr r1, _080A3038 @ =gMenu
ldrb r0, [r1]
cmp r0, #0
bne _080A3052
@@ -51,9 +51,9 @@ _080A302E:
bl SoundReq
b _080A3052
.align 2, 0
_080A3038: .4byte gChooseFileState
_080A3038: .4byte gMenu
_080A303C:
ldr r0, _080A3090 @ =gChooseFileState
ldr r0, _080A3090 @ =gMenu
ldrb r2, [r0]
cmp r2, #0
bne _080A3052
@@ -72,7 +72,7 @@ _080A3052:
movs r1, #3
bl __modsi3
strb r0, [r4, #4]
ldr r5, _080A3090 @ =gChooseFileState
ldr r5, _080A3090 @ =gMenu
movs r0, #0x10
ldrsh r2, [r5, r0]
ldrb r1, [r4, #4]
@@ -94,7 +94,7 @@ _080A3052:
movs r0, #1
b _080A309A
.align 2, 0
_080A3090: .4byte gChooseFileState
_080A3090: .4byte gMenu
_080A3094: .4byte gMain
_080A3098:
movs r0, #0
+2 -2
View File
@@ -13,7 +13,7 @@
strh r0, [r4, #8]
movs r0, #0x40
strh r0, [r4, #2]
ldr r0, _080A318C @ =gChooseFileState
ldr r0, _080A318C @ =gMenu
movs r1, #0x10
ldrsh r6, [r0, r1]
ldr r1, _080A3190 @ =0xFFFFFED8
@@ -101,7 +101,7 @@
pop {r4, r5, r6, pc}
.align 2, 0
_080A3188: .4byte gOamCmd
_080A318C: .4byte gChooseFileState
_080A318C: .4byte gMenu
_080A3190: .4byte 0xFFFFFED8
_080A3194: .4byte gUnk_08A068BF
.syntax divided
@@ -15,7 +15,7 @@ _08087CC6:
adds r0, #0x81
ldrb r0, [r0]
rsbs r0, r0, #0
bl sub_080542C0
bl ModShells
bl Random
movs r1, #0x7f
ands r1, r0
@@ -141,7 +141,7 @@ _08088332:
adds r0, #0x81
ldrb r0, [r0]
rsbs r0, r0, #0
bl sub_080542C0
bl ModShells
bl Random
movs r1, #0x7f
ands r1, r0
+314
View File
@@ -0,0 +1,314 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
adds r7, r1, #0
bl GetInventoryValue
adds r5, r0, #0
lsls r1, r6, #3
ldr r0, _08054010 @ =gItemMetaData
adds r4, r1, r0
cmp r5, #0
bne _08054014
ldrh r0, [r4, #4]
mov r8, r0
b _08054018
.align 2, 0
_08054010: .4byte gItemMetaData
_08054014:
ldrh r2, [r4, #6]
mov r8, r2
_08054018:
adds r0, r6, #0
bl ItemIsBottle
cmp r0, #0
bne _08054034
adds r0, r6, #0
bl PutItemOnSlot
cmp r5, #0
bne _08054034
adds r0, r6, #0
movs r1, #1
bl SetInventoryValue
_08054034:
ldrb r0, [r4, #1]
cmp r0, #0x12
bls _0805403C
b _0805427C
_0805403C:
lsls r0, r0, #2
ldr r1, _08054048 @ =_0805404C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08054048: .4byte _0805404C
_0805404C: @ jump table
.4byte _0805427C @ case 0
.4byte _08054098 @ case 1
.4byte _080540A6 @ case 2
.4byte _080540C0 @ case 3
.4byte _08054104 @ case 4
.4byte _0805414C @ case 5
.4byte _08054154 @ case 6
.4byte _08054194 @ case 7
.4byte _080541B6 @ case 8
.4byte _080541F0 @ case 9
.4byte _08054212 @ case 10
.4byte _080541F8 @ case 11
.4byte _08054238 @ case 12
.4byte _08054174 @ case 13
.4byte _08054240 @ case 14
.4byte _0805425C @ case 15
.4byte _08054264 @ case 16
.4byte _080541B0 @ case 17
.4byte _0805417C @ case 18
_08054098:
ldrb r0, [r4, #2]
bl ModHealth
movs r0, #0x71
bl SoundReq
b _0805427C
_080540A6:
ldr r0, _080540BC @ =gUnk_080FD5A8
ldrb r1, [r4, #2]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r0, [r1]
bl ModRupees
movs r0, #0x6f
bl SoundReq
b _0805427C
.align 2, 0
_080540BC: .4byte gUnk_080FD5A8
_080540C0:
movs r5, #0
movs r4, #0x1c
b _080540CA
_080540C6:
adds r4, r1, #1
adds r5, #1
_080540CA:
cmp r5, #3
bls _080540D0
b _0805427C
_080540D0:
adds r0, r4, #0
bl GetInventoryValue
adds r1, r4, #0
cmp r0, #0
bne _080540C6
adds r6, r4, #0
ldr r0, _08054100 @ =gSave
adds r0, #0xb6
adds r1, r5, r0
ldrb r0, [r1]
cmp r0, #0
bne _080540EE
movs r0, #0x20
strb r0, [r1]
_080540EE:
adds r0, r6, #0
movs r1, #1
bl SetInventoryValue
adds r0, r6, #0
bl PutItemOnSlot
b _0805427C
.align 2, 0
_08054100: .4byte gSave
_08054104:
movs r5, #0
ldr r0, _08054144 @ =gSave
adds r2, r0, #0
adds r2, #0xb6
ldrb r1, [r2]
adds r3, r0, #0
cmp r1, #0x20
beq _08054126
adds r1, r2, #0
_08054116:
adds r5, #1
cmp r5, #3
bls _0805411E
b _0805427C
_0805411E:
adds r0, r5, r1
ldrb r0, [r0]
cmp r0, #0x20
bne _08054116
_08054126:
cmp r5, #3
bls _0805412C
b _0805427C
_0805412C:
adds r0, r3, #0
adds r0, #0xb6
adds r0, r5, r0
strb r6, [r0]
adds r0, r6, #0
movs r1, #1
bl SetInventoryValue
ldr r0, _08054148 @ =0x00000109
bl SoundReq
b _0805427C
.align 2, 0
_08054144: .4byte gSave
_08054148: .4byte 0x00000109
_0805414C:
movs r0, #1
bl sub_080526F8
b _0805424E
_08054154:
ldr r1, _08054168 @ =gSave
ldr r0, _0805416C @ =gArea
ldr r2, _08054170 @ =0x0000046C
adds r1, r1, r2
ldrb r0, [r0, #3]
adds r1, r1, r0
ldrb r0, [r1]
ldrb r2, [r4, #2]
orrs r0, r2
b _0805427A
.align 2, 0
_08054168: .4byte gSave
_0805416C: .4byte gArea
_08054170: .4byte 0x0000046C
_08054174:
movs r0, #0x72
bl sub_0801E738
b _0805427C
_0805417C:
cmp r6, #0xb
bne _0805418A
movs r0, #0xc
movs r1, #0
bl SetInventoryValue
b _080541B0
_0805418A:
movs r0, #0xb
movs r1, #0
bl SetInventoryValue
b _080541B0
_08054194:
cmp r6, #7
bne _080541A2
movs r0, #8
movs r1, #0
bl SetInventoryValue
b _080541AA
_080541A2:
movs r0, #7
movs r1, #0
bl SetInventoryValue
_080541AA:
movs r0, #0x63
bl ModBombs
_080541B0:
bl LoadItemGfx
b _0805427C
_080541B6:
cmp r5, #0
bne _080541CA
movs r0, #7
movs r1, #1
bl SetInventoryValue
movs r0, #7
bl PutItemOnSlot
b _080541E2
_080541CA:
ldr r0, _080541EC @ =gSave
adds r1, r0, #0
adds r1, #0xae
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bls _080541E2
movs r0, #3
strb r0, [r1]
_080541E2:
movs r0, #0x63
bl ModBombs
b _0805427C
.align 2, 0
_080541EC: .4byte gSave
_080541F0:
ldrb r0, [r4, #2]
bl ModBombs
b _0805424E
_080541F8:
movs r0, #0x66
bl GetInventoryValue
cmp r0, #0
bne _0805420A
movs r0, #0x66
movs r1, #1
bl SetInventoryValue
_0805420A:
movs r0, #0x63
bl ModArrows
b _080541B0
_08054212:
ldr r0, _08054234 @ =gSave
adds r1, r0, #0
adds r1, #0xaf
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bls _0805422A
movs r0, #3
strb r0, [r1]
_0805422A:
movs r0, #0x63
bl ModArrows
b _0805427C
.align 2, 0
_08054234: .4byte gSave
_08054238:
ldrb r0, [r4, #2]
bl ModArrows
b _0805424E
_08054240:
movs r0, #0x3f
movs r1, #1
bl SetInventoryValue
adds r0, r7, #0
bl ModShells
_0805424E:
ldr r0, _08054258 @ =0x00000103
bl SoundReq
b _0805427C
.align 2, 0
_08054258: .4byte 0x00000103
_0805425C:
adds r0, r7, #0
bl sub_0801E738
b _0805427C
_08054264:
ldr r0, _08054284 @ =gSave
adds r1, r0, #0
adds r1, #0xa8
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bls _0805427C
movs r0, #3
_0805427A:
strb r0, [r1]
_0805427C:
mov r0, r8
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08054284: .4byte gSave
.syntax divided
+72
View File
@@ -0,0 +1,72 @@
.syntax unified
push {r4, lr}
ldr r1, _080537DC @ =gMenu
movs r2, #0
movs r3, #1
strb r3, [r1, #6]
movs r4, #0
movs r0, #0x78
strh r0, [r1, #8]
movs r0, #0x1e
strh r0, [r1, #0xa]
strb r4, [r1, #0x10]
ldr r0, _080537E0 @ =gUnk_02032EC0
strb r3, [r0, #6]
ldr r0, _080537E4 @ =gMapBottom
str r2, [r0]
ldr r0, _080537E8 @ =gMapTop
str r2, [r0]
ldr r0, _080537EC @ =gRoomControls
str r2, [r0, #0x30]
strh r2, [r0, #0xc]
strh r2, [r0, #0xa]
bl sub_0801B170
movs r0, #0
bl DispReset
ldr r2, _080537F0 @ =gScreen
movs r0, #0x99
lsls r0, r0, #6
strh r0, [r2]
adds r1, r2, #0
adds r1, #0x66
ldr r0, _080537F4 @ =0x00002244
strh r0, [r1]
adds r1, #2
movs r0, #0x80
lsls r0, r0, #5
strh r0, [r1]
subs r1, #8
movs r0, #0x1f
strh r0, [r1]
adds r1, #2
movs r0, #0x3f
strh r0, [r1]
subs r1, #0xa
movs r0, #0xf0
strh r0, [r1]
adds r1, #4
movs r0, #0x60
strh r0, [r1]
ldr r0, _080537F8 @ =0x00001C4E
strh r0, [r2, #0x14]
ldr r0, _080537FC @ =0x00001DC1
strh r0, [r2, #0x20]
movs r0, #0xf
bl SoundReq
bl ResetSystemPriority
movs r1, #0x80
lsls r1, r1, #1
movs r0, #5
bl SetFade
pop {r4, pc}
.align 2, 0
_080537DC: .4byte gMenu
_080537E0: .4byte gUnk_02032EC0
_080537E4: .4byte gMapBottom
_080537E8: .4byte gMapTop
_080537EC: .4byte gRoomControls
_080537F0: .4byte gScreen
_080537F4: .4byte 0x00002244
_080537F8: .4byte 0x00001C4E
_080537FC: .4byte 0x00001DC1
.syntax divided
+67
View File
@@ -0,0 +1,67 @@
.syntax unified
push {r4, r5, lr}
ldr r0, _0805387C @ =gFadeControl
ldrb r0, [r0]
cmp r0, #0
bne _0805387A
ldr r1, _08053880 @ =gMenu
ldrb r5, [r1, #0x10]
lsls r4, r5, #1
adds r4, r4, r5
lsls r4, r4, #2
ldr r0, _08053884 @ =gUnk_080FCCB4
adds r4, r4, r0
ldrh r0, [r4, #8]
movs r2, #0
strh r0, [r1, #8]
movs r0, #0x1e
strh r0, [r1, #0xa]
ldrb r0, [r1, #0x10]
adds r0, #1
strb r0, [r1, #0x10]
ldrb r0, [r1, #6]
adds r0, #1
strb r0, [r1, #6]
strb r2, [r1, #7]
adds r0, r5, #0
adds r0, #0x8a
bl LoadPaletteGroup
adds r0, r5, #0
adds r0, #0x3a
bl LoadGfxGroup
ldr r0, _08053888 @ =gBG1Buffer
movs r1, #0x80
lsls r1, r1, #4
bl MemClear
ldr r0, _0805388C @ =0x00000F01
adds r5, r5, r0
ldr r1, [r4]
adds r0, r5, #0
bl sub_0805F46C
ldr r2, _08053890 @ =gScreen
movs r0, #1
strh r0, [r2, #0x1a]
adds r1, r2, #0
adds r1, #0x68
movs r0, #0x10
strh r0, [r1]
ldrh r1, [r4, #4]
adds r0, r2, #0
adds r0, #0x58
strh r1, [r0]
ldrh r1, [r4, #6]
adds r0, #4
strh r1, [r0]
ldrh r1, [r4, #0xa]
movs r0, #4
bl SetFade
_0805387A:
pop {r4, r5, pc}
.align 2, 0
_0805387C: .4byte gFadeControl
_08053880: .4byte gMenu
_08053884: .4byte gUnk_080FCCB4
_08053888: .4byte gBG1Buffer
_0805388C: .4byte 0x00000F01
_08053890: .4byte gScreen
.syntax divided
+57
View File
@@ -0,0 +1,57 @@
.syntax unified
push {r4, lr}
ldr r0, _080538B4 @ =gFadeControl
ldrb r0, [r0]
cmp r0, #0
bne _080538F8
ldr r1, _080538B8 @ =gMenu
ldrh r0, [r1, #8]
subs r0, #1
strh r0, [r1, #8]
ldrh r0, [r1, #0xa]
adds r4, r1, #0
cmp r0, #0
beq _080538BC
subs r0, #1
strh r0, [r4, #0xa]
b _080538E4
.align 2, 0
_080538B4: .4byte gFadeControl
_080538B8: .4byte gMenu
_080538BC:
ldr r0, _080538FC @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
ands r0, r1
cmp r0, #0
bne _080538E4
ldrb r1, [r4, #7]
cmp r1, #0xf
bhi _080538E4
adds r1, #1
strb r1, [r4, #7]
lsls r1, r1, #0x18
ldr r3, _08053900 @ =gScreen
lsrs r2, r1, #0x10
lsrs r1, r1, #0x19
movs r0, #0x10
subs r0, r0, r1
orrs r2, r0
adds r3, #0x68
strh r2, [r3]
_080538E4:
ldrh r0, [r4, #8]
cmp r0, #0
bne _080538F8
ldrb r0, [r4, #6]
adds r0, #1
strb r0, [r4, #6]
movs r0, #5
movs r1, #8
bl SetFade
_080538F8:
pop {r4, pc}
.align 2, 0
_080538FC: .4byte gRoomTransition
_08053900: .4byte gScreen
.syntax divided
+57
View File
@@ -0,0 +1,57 @@
.syntax unified
push {r4, lr}
ldr r0, _08053924 @ =gFadeControl
ldrb r0, [r0]
cmp r0, #0
bne _08053968
ldr r1, _08053928 @ =gMenu
ldrh r0, [r1, #8]
subs r0, #1
strh r0, [r1, #8]
ldrh r0, [r1, #0xa]
adds r4, r1, #0
cmp r0, #0
beq _0805392C
subs r0, #1
strh r0, [r4, #0xa]
b _08053954
.align 2, 0
_08053924: .4byte gFadeControl
_08053928: .4byte gMenu
_0805392C:
ldr r0, _0805396C @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
ands r0, r1
cmp r0, #0
bne _08053954
ldrb r1, [r4, #7]
cmp r1, #0xf
bhi _08053954
adds r1, #1
strb r1, [r4, #7]
lsls r1, r1, #0x18
ldr r3, _08053970 @ =gScreen
lsrs r2, r1, #0x10
lsrs r1, r1, #0x19
movs r0, #0x10
subs r0, r0, r1
orrs r2, r0
adds r3, #0x68
strh r2, [r3]
_08053954:
ldrh r0, [r4, #8]
cmp r0, #0
bne _08053968
ldrb r0, [r4, #6]
adds r0, #1
strb r0, [r4, #6]
movs r0, #5
movs r1, #1
bl SetFade
_08053968:
pop {r4, pc}
.align 2, 0
_0805396C: .4byte gRoomTransition
_08053970: .4byte gScreen
.syntax divided
+47
View File
@@ -0,0 +1,47 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r6, _08053D20 @ =gMenu
ldrb r4, [r6, #3]
lsls r4, r4, #4
ldr r0, _08053D24 @ =gUnk_080FCF04
adds r4, r4, r0
adds r0, r4, #0
adds r0, #8
str r0, [r6, #0xc]
ldr r0, [r4]
bl LoadRoomEntityList
ldrb r0, [r4, #4]
ldrb r1, [r4, #5]
movs r2, #1
bl GetRoomProperty
bl LoadRoomEntityList
ldrb r0, [r4, #4]
ldrb r1, [r4, #5]
movs r2, #2
bl GetRoomProperty
bl LoadRoomEntityList
movs r5, #1
strb r5, [r6, #6]
ldr r2, _08053D28 @ =gScreen
ldrh r1, [r2]
ldr r0, _08053D2C @ =0x0000FEFF
ands r0, r1
strh r0, [r2]
ldr r0, _08053D30 @ =gUpdateVisibleTiles
strb r5, [r0]
movs r0, #4
movs r1, #0x10
bl SetFade
ldrb r0, [r4, #5]
cmp r0, #0x1d
bne _08053D1E
strh r5, [r6, #0xa]
_08053D1E:
pop {r4, r5, r6, pc}
.align 2, 0
_08053D20: .4byte gMenu
_08053D24: .4byte gUnk_080FCF04
_08053D28: .4byte gScreen
_08053D2C: .4byte 0x0000FEFF
_08053D30: .4byte gUpdateVisibleTiles
.syntax divided
+40
View File
@@ -0,0 +1,40 @@
.syntax unified
push {r4, lr}
ldr r4, _080548DC @ =gUnk_02032EC0
ldrb r1, [r4, #3]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080548E0 @ =gUnk_080FE320
adds r0, r0, r1
ldr r2, _080548E4 @ =gMenu
ldrb r1, [r0]
movs r3, #0
strb r1, [r2]
ldrb r1, [r0, #1]
strb r1, [r2, #3]
ldrb r1, [r4, #3]
strb r1, [r2, #4]
str r0, [r2, #0xc]
ldrb r0, [r2, #5]
adds r0, #1
strb r0, [r2, #5]
strb r3, [r2, #6]
movs r0, #0x96
lsls r0, r0, #1
strh r0, [r2, #8]
movs r0, #0
bl DispReset
ldrb r0, [r4, #3]
movs r1, #1
bl sub_08054974
bl sub_0806F364
movs r0, #0xff
bl ClearRoomFlag
bl sub_080548E8
pop {r4, pc}
.align 2, 0
_080548DC: .4byte gUnk_02032EC0
_080548E0: .4byte gUnk_080FE320
_080548E4: .4byte gMenu
.syntax divided
+33
View File
@@ -0,0 +1,33 @@
.syntax unified
push {lr}
bl MessageInitialize
bl sub_0806F38C
ldr r1, _08054948 @ =gUnk_080C9CBC
ldr r0, _0805494C @ =gFuseInfo
ldrb r0, [r0, #3]
lsls r0, r0, #3
adds r0, r0, r1
ldrb r0, [r0, #7]
cmp r0, #0
beq _08054954
ldr r0, _08054950 @ =gUnk_02032EC0
ldrb r1, [r0, #3]
movs r0, #0xa
bl MenuFadeIn
b _08054962
.align 2, 0
_08054948: .4byte gUnk_080C9CBC
_0805494C: .4byte gFuseInfo
_08054950: .4byte gUnk_02032EC0
_08054954:
ldr r1, _08054964 @ =gUnk_02032EC0
movs r0, #3
strb r0, [r1]
movs r0, #7
movs r1, #0x10
bl SetFade
_08054962:
pop {pc}
.align 2, 0
_08054964: .4byte gUnk_02032EC0
.syntax divided
+70
View File
@@ -0,0 +1,70 @@
.syntax unified
push {r4, r5, r6, lr}
adds r5, r1, #0
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _080549B0 @ =gUnk_080FE320
adds r6, r1, r0
ldrb r0, [r6, #2]
ldrb r1, [r6, #3]
bl SetCurrentRoomPropertyList
ldr r4, _080549B4 @ =gRoomControls
ldrb r0, [r6, #2]
strb r0, [r4, #4]
ldrb r0, [r6, #3]
strb r0, [r4, #5]
bl LoadGfxGroups
ldrb r0, [r4, #4]
bl GetFlagBankOffset
ldr r1, _080549B8 @ =gArea
strh r0, [r1, #4]
cmp r5, #0
beq _080549BC
ldrb r0, [r6, #2]
ldrb r1, [r6, #3]
bl LoadAuxiliaryRoom
b _080549CE
.align 2, 0
_080549B0: .4byte gUnk_080FE320
_080549B4: .4byte gRoomControls
_080549B8: .4byte gArea
_080549BC:
ldrb r0, [r6, #2]
ldrb r1, [r6, #3]
bl sub_08052FF4
bl sub_0807C740
ldr r1, _08054A00 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_080549CE:
ldr r2, _08054A04 @ =gScreen
ldrh r1, [r2]
ldr r0, _08054A08 @ =0x00001FFF
ands r0, r1
strh r0, [r2]
ldr r1, _08054A0C @ =gRoomControls
ldrh r0, [r6, #4]
ldrh r2, [r1, #6]
adds r0, r0, r2
strh r0, [r1, #0xa]
ldrh r0, [r6, #6]
ldrh r2, [r1, #8]
adds r0, r0, r2
strh r0, [r1, #0xc]
ldrb r0, [r6, #2]
cmp r0, #2
bne _080549F4
bl TryLoadPrologueHyruleTown
_080549F4:
ldr r0, _08054A10 @ =gUnk_02032EC0
ldrb r0, [r0, #3]
bl sub_08018710
pop {r4, r5, r6, pc}
.align 2, 0
_08054A00: .4byte gUpdateVisibleTiles
_08054A04: .4byte gScreen
_08054A08: .4byte 0x00001FFF
_08054A0C: .4byte gRoomControls
_08054A10: .4byte gUnk_02032EC0
.syntax divided
+22
View File
@@ -0,0 +1,22 @@
.syntax unified
push {lr}
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _08054A38 @ =gUnk_080FE320
adds r2, r1, r0
ldrb r0, [r2, #0x11]
cmp r0, #0xd
bhi _08054A34
ldr r1, _08054A3C @ =gLocalFlagBanks
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
ldrh r1, [r2, #0x12]
bl SetLocalFlagByBank
_08054A34:
pop {pc}
.align 2, 0
_08054A38: .4byte gUnk_080FE320
_08054A3C: .4byte gLocalFlagBanks
.syntax divided
@@ -0,0 +1,88 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r6, r1, #0
mov r8, r2
movs r1, #0x2e
ldrsh r0, [r5, r1]
adds r0, r0, r6
ldr r2, _0807A288 @ =gRoomControls
ldrh r1, [r2, #6]
subs r1, r0, r1
lsrs r4, r1, #4
movs r3, #0x3f
ands r4, r3
movs r7, #0x32
ldrsh r1, [r5, r7]
add r1, r8
ldrh r2, [r2, #8]
subs r2, r1, r2
asrs r2, r2, #4
ands r2, r3
lsls r2, r2, #6
orrs r4, r2
ldr r2, _0807A28C @ =gPlayerEntity
adds r2, #0x38
ldrb r2, [r2]
bl GetTileTypeByPos
adds r2, r0, #0
ldr r1, _0807A290 @ =gPlayerState
ldrh r0, [r1, #0x24]
cmp r2, r0
beq _0807A23A
adds r3, r1, #0
adds r3, #0x37
movs r0, #0
strb r0, [r3]
ldrh r7, [r1, #0x24]
cmp r2, r7
bne _0807A242
_0807A23A:
adds r3, r1, #0
ldrh r0, [r3, #0x22]
cmp r4, r0
beq _0807A24E
_0807A242:
ldr r0, _0807A290 @ =gPlayerState
movs r1, #0
strh r4, [r0, #0x22]
strh r2, [r0, #0x24]
strb r1, [r0, #0x11]
adds r3, r0, #0
_0807A24E:
adds r2, r3, #0
ldrb r1, [r2, #0x11]
adds r0, r1, #0
cmp r0, #0xff
beq _0807A25C
adds r0, r1, #1
strb r0, [r2, #0x11]
_0807A25C:
adds r2, #0x37
ldrb r1, [r2]
adds r0, r1, #0
cmp r0, #0xff
beq _0807A26A
adds r0, r1, #1
strb r0, [r2]
_0807A26A:
ldrb r0, [r3, #0x12]
strb r0, [r3, #0x13]
adds r0, r5, #0
adds r1, r6, #0
mov r2, r8
bl sub_080002B4
adds r2, r0, #0
ldr r1, _0807A294 @ =gUnk_08007CAC
bl sub_08007DD6
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807A288: .4byte gRoomControls
_0807A28C: .4byte gPlayerEntity
_0807A290: .4byte gPlayerState
_0807A294: .4byte gUnk_08007CAC
.syntax divided
@@ -0,0 +1,383 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
bl sub_0807BFA8
ldr r7, _0807C158 @ =gRoomControls
ldrb r1, [r7, #0xf]
movs r0, #0xfc
ands r0, r1
strb r0, [r7, #0xf]
ldr r5, _0807C15C @ =gMapDataTop
movs r6, #0x80
lsls r6, r6, #6
adds r0, r5, #0
adds r1, r6, #0
bl MemClear
adds r0, r5, r6
movs r1, #0x80
lsls r1, r1, #5
bl MemClear
ldr r0, _0807C160 @ =gUnk_02019EE0
movs r4, #0x80
lsls r4, r4, #8
adds r1, r4, #0
bl MemClear
ldr r0, _0807C164 @ =gMapDataTopSpecial
adds r1, r4, #0
bl MemClear
ldr r0, _0807C168 @ =gArea
ldr r1, _0807C16C @ =0x0000085C
adds r0, r0, r1
ldr r0, [r0]
ldr r0, [r0, #0xc]
bl sub_080197D4
ldr r2, _0807C170 @ =gMapBottom
ldrh r1, [r2, #4]
ldr r0, _0807C174 @ =0x0000FFFF
cmp r1, r0
beq _0807C178
adds r0, r2, #4
ldrh r1, [r7, #0x1e]
lsrs r1, r1, #4
ldrh r2, [r7, #0x20]
lsrs r2, r2, #4
bl sub_0807C8B0
ldrh r1, [r7, #0x1e]
lsrs r1, r1, #4
ldrh r2, [r7, #0x20]
lsrs r2, r2, #4
adds r0, r5, #0
bl sub_0807C8B0
movs r2, #0
mov sb, r2
b _0807C184
.align 2, 0
_0807C158: .4byte gRoomControls
_0807C15C: .4byte gMapDataTop
_0807C160: .4byte gUnk_02019EE0
_0807C164: .4byte gMapDataTopSpecial
_0807C168: .4byte gArea
_0807C16C: .4byte 0x0000085C
_0807C170: .4byte gMapBottom
_0807C174: .4byte 0x0000FFFF
_0807C178:
adds r0, r2, #4
adds r1, r6, #0
bl MemClear
movs r3, #1
mov sb, r3
_0807C184:
ldr r0, _0807C1B0 @ =gRoomTransition
adds r0, #0x2d
ldrb r0, [r0]
cmp r0, #0
bne _0807C1BC
ldr r0, _0807C1B4 @ =gMapDataBottom
movs r2, #0xc0
lsls r2, r2, #6
adds r1, r0, r2
movs r4, #0x80
lsls r4, r4, #6
adds r2, r4, #0
bl MemCopy
ldr r0, _0807C1B8 @ =gMapDataTop
movs r3, #0xc0
lsls r3, r3, #6
adds r1, r0, r3
adds r2, r4, #0
bl MemCopy
b _0807C26C
.align 2, 0
_0807C1B0: .4byte gRoomTransition
_0807C1B4: .4byte gMapDataBottom
_0807C1B8: .4byte gMapDataTop
_0807C1BC:
cmp r0, #2
bne _0807C26C
ldr r4, _0807C278 @ =gMapDataBottom
movs r0, #0xb0
lsls r0, r0, #8
adds r0, r0, r4
mov r8, r0
movs r5, #0x80
lsls r5, r5, #5
adds r0, r4, #0
mov r1, r8
adds r2, r5, #0
bl MemCopy
movs r1, #0xc0
lsls r1, r1, #6
adds r6, r4, r1
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl MemCopy
mov r0, r8
adds r1, r6, #0
adds r2, r5, #0
bl MemCopy
adds r6, r4, r5
adds r0, r6, #0
mov r1, r8
adds r2, r5, #0
bl MemCopy
movs r2, #0x80
lsls r2, r2, #7
adds r4, r4, r2
adds r0, r4, #0
adds r1, r6, #0
adds r2, r5, #0
bl MemCopy
mov r0, r8
adds r1, r4, #0
adds r2, r5, #0
bl MemCopy
ldr r4, _0807C27C @ =gMapDataTop
movs r3, #0xb0
lsls r3, r3, #8
adds r3, r3, r4
mov r8, r3
adds r0, r4, #0
mov r1, r8
adds r2, r5, #0
bl MemCopy
movs r0, #0xc0
lsls r0, r0, #6
adds r6, r4, r0
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl MemCopy
mov r0, r8
adds r1, r6, #0
adds r2, r5, #0
bl MemCopy
adds r6, r4, r5
adds r0, r6, #0
mov r1, r8
adds r2, r5, #0
bl MemCopy
movs r1, #0x80
lsls r1, r1, #7
adds r4, r4, r1
adds r0, r4, #0
adds r1, r6, #0
adds r2, r5, #0
bl MemCopy
mov r0, r8
adds r1, r4, #0
adds r2, r5, #0
bl MemCopy
_0807C26C:
mov r2, sb
cmp r2, #0
bne _0807C280
bl sub_0807BBE4
b _0807C2A0
.align 2, 0
_0807C278: .4byte gMapDataBottom
_0807C27C: .4byte gMapDataTop
_0807C280:
ldr r0, _0807C2CC @ =gUnk_02027EB4
ldrh r1, [r7, #0x1e]
lsrs r1, r1, #4
ldrh r2, [r7, #0x20]
lsrs r2, r2, #4
bl sub_0807C69C
ldr r0, _0807C2D0 @ =gUnk_0200D654
ldrh r1, [r7, #0x1e]
lsrs r1, r1, #4
ldrh r2, [r7, #0x20]
lsrs r2, r2, #4
bl sub_0807C69C
bl sub_0807C460
_0807C2A0:
bl sub_0807BC84
ldr r4, _0807C2D4 @ =gMapBottom
adds r0, r4, #0
bl sub_08080B60
ldr r5, _0807C2D8 @ =gMapTop
adds r0, r5, #0
bl sub_08080B60
mov r3, sb
cmp r3, #0
bne _0807C2E4
ldr r0, _0807C2DC @ =gUnk_02019EE0
adds r1, r4, #0
bl sub_0801AB08
ldr r0, _0807C2E0 @ =gMapDataTopSpecial
adds r1, r5, #0
bl sub_0801AB08
b _0807C326
.align 2, 0
_0807C2CC: .4byte gUnk_02027EB4
_0807C2D0: .4byte gUnk_0200D654
_0807C2D4: .4byte gMapBottom
_0807C2D8: .4byte gMapTop
_0807C2DC: .4byte gUnk_02019EE0
_0807C2E0: .4byte gMapDataTopSpecial
_0807C2E4:
ldr r4, _0807C34C @ =gUnk_02019EE0
movs r0, #0x80
lsls r0, r0, #7
adds r5, r4, r0
adds r6, r0, #0
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
bl MemCopy
adds r0, r4, #0
adds r1, r5, #0
bl sub_0807C5F4
adds r0, r5, #0
adds r1, r6, #0
bl MemClear
ldr r4, _0807C350 @ =gMapDataTopSpecial
adds r5, r4, r6
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
bl MemCopy
adds r0, r4, #0
adds r1, r5, #0
bl sub_0807C5F4
adds r0, r5, #0
adds r1, r6, #0
bl MemClear
_0807C326:
mov r1, sb
cmp r1, #0
bne _0807C332
ldrb r0, [r7, #4]
cmp r0, #0x71
bne _0807C33A
_0807C332:
ldrb r1, [r7, #0xf]
movs r0, #1
orrs r0, r1
strb r0, [r7, #0xf]
_0807C33A:
ldrb r0, [r7, #4]
subs r0, #0x20
cmp r0, #0x18
bhi _0807C400
lsls r0, r0, #2
ldr r1, _0807C354 @ =_0807C358
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807C34C: .4byte gUnk_02019EE0
_0807C350: .4byte gMapDataTopSpecial
_0807C354: .4byte _0807C358
_0807C358: @ jump table
.4byte _0807C3BC @ case 0
.4byte _0807C3E4 @ case 1
.4byte _0807C3E4 @ case 2
.4byte _0807C3E4 @ case 3
.4byte _0807C3E4 @ case 4
.4byte _0807C3E4 @ case 5
.4byte _0807C400 @ case 6
.4byte _0807C3E4 @ case 7
.4byte _0807C3E4 @ case 8
.4byte _0807C400 @ case 9
.4byte _0807C400 @ case 10
.4byte _0807C400 @ case 11
.4byte _0807C400 @ case 12
.4byte _0807C3BC @ case 13
.4byte _0807C400 @ case 14
.4byte _0807C400 @ case 15
.4byte _0807C3E4 @ case 16
.4byte _0807C400 @ case 17
.4byte _0807C400 @ case 18
.4byte _0807C400 @ case 19
.4byte _0807C400 @ case 20
.4byte _0807C400 @ case 21
.4byte _0807C400 @ case 22
.4byte _0807C400 @ case 23
.4byte _0807C3E4 @ case 24
_0807C3BC:
ldr r0, _0807C3D8 @ =gMapBottom
ldr r2, [r0]
cmp r2, #0
beq _0807C3CC
ldrh r1, [r2]
movs r0, #0x80
orrs r0, r1
strh r0, [r2]
_0807C3CC:
ldr r2, _0807C3DC @ =gScreen
ldrh r1, [r2]
ldr r0, _0807C3E0 @ =0x0000FDFF
ands r0, r1
strh r0, [r2]
b _0807C444
.align 2, 0
_0807C3D8: .4byte gMapBottom
_0807C3DC: .4byte gScreen
_0807C3E0: .4byte 0x0000FDFF
_0807C3E4:
ldr r0, _0807C3F8 @ =gMapTop
ldr r1, [r0]
cmp r1, #0
beq _0807C3F2
ldr r0, _0807C3FC @ =gUnk_080B77C0
ldrh r0, [r0, #4]
strh r0, [r1]
_0807C3F2:
bl sub_0807C5B0
b _0807C444
.align 2, 0
_0807C3F8: .4byte gMapTop
_0807C3FC: .4byte gUnk_080B77C0
_0807C400:
ldr r0, _0807C44C @ =gMapBottom
ldr r1, [r0]
cmp r1, #0
beq _0807C40E
ldr r0, _0807C450 @ =gUnk_080B77C0
ldrh r0, [r0]
strh r0, [r1]
_0807C40E:
ldr r0, _0807C454 @ =gMapTop
ldr r1, [r0]
cmp r1, #0
beq _0807C41C
ldr r0, _0807C450 @ =gUnk_080B77C0
ldrh r0, [r0, #2]
strh r0, [r1]
_0807C41C:
ldr r2, _0807C458 @ =gScreen
ldrh r0, [r2]
movs r1, #0x80
lsls r1, r1, #4
ands r1, r0
movs r3, #0xba
lsls r3, r3, #5
adds r0, r3, #0
movs r3, #0
orrs r1, r0
strh r1, [r2]
ldr r0, _0807C45C @ =gArea
ldrb r0, [r0, #0xc]
cmp r0, #0
beq _0807C444
movs r3, #0xa0
lsls r3, r3, #8
adds r0, r3, #0
orrs r1, r0
strh r1, [r2]
_0807C444:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807C44C: .4byte gMapBottom
_0807C450: .4byte gUnk_080B77C0
_0807C454: .4byte gMapTop
_0807C458: .4byte gScreen
_0807C45C: .4byte gArea
.syntax divided
@@ -0,0 +1,268 @@
.syntax unified
push {r4, lr}
ldr r3, _08079954 @ =gPlayerState
ldr r2, [r3, #0x30]
movs r0, #8
ands r0, r2
mov ip, r3
cmp r0, #0
beq _080799E4
ldrb r0, [r3, #5]
cmp r0, #0
beq _0807995C
ldr r4, _08079958 @ =0x0000092C
b _08079AD8
.align 2, 0
_08079954: .4byte gPlayerState
_08079958: .4byte 0x0000092C
_0807995C:
mov r0, ip
adds r0, #0x3d
mov r3, ip
ldrb r1, [r3, #0x1c]
ldrb r0, [r0]
orrs r0, r1
cmp r0, #0
beq _0807996E
b _08079B14
_0807996E:
movs r0, #0x80
lsls r0, r0, #0x12
ands r0, r2
cmp r0, #0
bne _08079A1E
mov r4, ip
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079988
ldr r4, _08079984 @ =0x00000414
b _08079AD8
.align 2, 0
_08079984: .4byte 0x00000414
_08079988:
mov r0, ip
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
bne _08079A5C
mov r0, ip
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _08079A6C
mov r0, ip
ldrb r1, [r0, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
beq _080799AA
b _08079B14
_080799AA:
cmp r1, #0
beq _080799B0
b _08079AA4
_080799B0:
mov r1, ip
ldrb r0, [r1, #4]
cmp r0, #0
beq _080799BA
b _08079B14
_080799BA:
movs r0, #0x20
ands r2, r0
cmp r2, #0
beq _080799D0
ldr r0, _080799D8 @ =gArea
ldrb r0, [r0, #0x17]
cmp r0, #4
bne _080799CC
b _08079AD4
_080799CC:
cmp r0, #5
bne _080799DC
_080799D0:
movs r4, #0x80
lsls r4, r4, #3
b _08079AD8
.align 2, 0
_080799D8: .4byte gArea
_080799DC:
ldr r4, _080799E0 @ =0x000002C2
b _08079AD8
.align 2, 0
_080799E0: .4byte 0x000002C2
_080799E4:
mov r4, ip
ldrb r0, [r4, #5]
cmp r0, #0
beq _080799F2
movs r4, #0xd4
lsls r4, r4, #2
b _08079AD8
_080799F2:
mov r0, ip
adds r0, #0x3d
mov r4, ip
ldrb r1, [r4, #0x1c]
ldrb r0, [r0]
orrs r0, r1
cmp r0, #0
beq _08079A04
b _08079B14
_08079A04:
movs r0, #0x80
lsls r0, r0, #0xc
ands r0, r2
cmp r0, #0
beq _08079A14
movs r4, #0x8b
lsls r4, r4, #4
b _08079AD8
_08079A14:
movs r0, #0x80
lsls r0, r0, #0x12
ands r0, r2
cmp r0, #0
beq _08079A24
_08079A1E:
movs r4, #0x81
lsls r4, r4, #4
b _08079AD8
_08079A24:
mov r1, ip
ldrb r0, [r1, #0x1e]
cmp r0, #0
beq _08079A32
movs r4, #0xa6
lsls r4, r4, #2
b _08079AD8
_08079A32:
movs r0, #0x80
lsls r0, r0, #5
ands r0, r2
cmp r0, #0
beq _08079A44
ldr r4, _08079A40 @ =0x0000070C
b _08079AD8
.align 2, 0
_08079A40: .4byte 0x0000070C
_08079A44:
mov r4, ip
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079A52
movs r4, #0xb2
lsls r4, r4, #1
b _08079AD8
_08079A52:
mov r0, ip
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
beq _08079A62
_08079A5C:
movs r4, #0xa0
lsls r4, r4, #2
b _08079AD8
_08079A62:
mov r0, ip
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _08079A72
_08079A6C:
movs r4, #0xa3
lsls r4, r4, #2
b _08079AD8
_08079A72:
mov r0, ip
ldrb r1, [r0, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
bne _08079B14
movs r0, #0x20
ands r2, r0
cmp r2, #0
beq _08079AA0
ldr r0, _08079A98 @ =gArea
ldrb r0, [r0, #0x17]
ldr r4, _08079A9C @ =0x000002C2
cmp r0, #4
bne _08079AD8
movs r4, #0xa6
lsls r4, r4, #3
b _08079AD8
.align 2, 0
_08079A98: .4byte gArea
_08079A9C: .4byte 0x000002C2
_08079AA0:
cmp r1, #0
beq _08079AAA
_08079AA4:
movs r4, #0xb4
lsls r4, r4, #1
b _08079AD8
_08079AAA:
ldrb r0, [r3, #4]
cmp r0, #0
bne _08079B14
ldr r0, [r3, #0x30]
movs r1, #0x80
lsls r1, r1, #0x10
ands r0, r1
cmp r0, #0
beq _08079AD4
ldr r0, _08079ACC @ =gUnk_03000B80
adds r0, #0x63
ldrb r0, [r0]
cmp r0, #0
bne _08079B14
ldr r4, _08079AD0 @ =0x00000604
b _08079AD8
.align 2, 0
_08079ACC: .4byte gUnk_03000B80
_08079AD0: .4byte 0x00000604
_08079AD4:
movs r4, #0x80
lsls r4, r4, #1
_08079AD8:
mov r1, ip
strh r4, [r1, #8]
ldrb r0, [r1, #5]
cmp r0, #0
bne _08079B10
movs r3, #0
movs r2, #0
ldr r1, _08079B18 @ =gUnk_03000B80
_08079AE8:
ldrb r0, [r1, #0xf]
cmp r0, r3
bls _08079AF0
adds r3, r0, #0
_08079AF0:
adds r1, #0x1c
adds r2, #1
cmp r2, #3
bls _08079AE8
mov r2, ip
ldrb r0, [r2, #0xe]
cmp r0, r3
blo _08079B14
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
ldrb r3, [r2]
cmp r0, r3
bne _08079B10
ldr r0, _08079B1C @ =gPlayerEntity
bl UpdateAnimationSingleFrame
_08079B10:
ldr r0, _08079B20 @ =gPlayerState
strb r4, [r0]
_08079B14:
pop {r4, pc}
.align 2, 0
_08079B18: .4byte gUnk_03000B80
_08079B1C: .4byte gPlayerEntity
_08079B20: .4byte gPlayerState
.syntax divided
@@ -0,0 +1,100 @@
.syntax unified
push {r4, r5, lr}
ldr r4, _08079498 @ =gPlayerEntity
movs r1, #0
movs r0, #0x19
strb r0, [r4, #0xc]
str r1, [r4, #0x34]
str r1, [r4, #0x20]
adds r0, r4, #0
adds r0, #0x42
strb r1, [r0]
bl sub_08078EE4
ldr r2, _0807949C @ =gPlayerState
ldr r1, [r2, #0x30]
movs r0, #0x80
lsls r0, r0, #0xa
ands r0, r1
cmp r0, #0
bne _08079514
movs r0, #0x80
lsls r0, r0, #9
ands r1, r0
cmp r1, #0
beq _080794E4
adds r0, r2, #0
adds r0, #0x84
ldr r1, [r0]
ldrh r0, [r1, #0x2e]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #0x32]
strh r0, [r4, #0x32]
b _08079514
.align 2, 0
_08079498: .4byte gPlayerEntity
_0807949C: .4byte gPlayerState
_080794A0:
ldr r2, _080794DC @ =gPlayerEntity
ldr r0, [r4]
lsrs r0, r0, #0x1e
adds r1, r2, #0
adds r1, #0x38
strb r0, [r1]
ldr r3, _080794E0 @ =gRoomControls
ldr r0, [r4]
movs r1, #0x3f
ands r0, r1
lsls r0, r0, #4
ldrh r1, [r3, #6]
adds r0, r0, r1
adds r0, #8
strh r0, [r2, #0x2e]
ldr r0, [r4]
movs r1, #0xfc
lsls r1, r1, #4
ands r0, r1
lsrs r0, r0, #2
ldrh r3, [r3, #8]
adds r0, r0, r3
adds r0, #8
strh r0, [r2, #0x32]
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
b _08079514
.align 2, 0
_080794DC: .4byte gPlayerEntity
_080794E0: .4byte gRoomControls
_080794E4:
movs r5, #0
ldr r1, [r2, #0x40]
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
beq _08079514
adds r4, r2, #0
adds r4, #0x40
_080794F4:
ldr r1, [r4]
ldrh r0, [r4]
lsrs r1, r1, #0x1e
bl sub_080002E0
cmp r0, #0xf
bne _080794A0
adds r4, #4
adds r5, #1
cmp r5, #0xf
bhi _08079514
ldr r1, [r4]
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne _080794F4
_08079514:
ldr r0, _0807951C @ =gPlayerEntity
bl UpdateSpriteForCollisionLayer
pop {r4, r5, pc}
.align 2, 0
_0807951C: .4byte gPlayerEntity
.syntax divided
@@ -0,0 +1,21 @@
.syntax unified
push {r4, lr}
adds r3, r0, #0
lsrs r4, r3, #2
ldr r0, _0807CAC4 @ =gUnk_02002B32
adds r4, r4, r0
movs r0, #3
ands r3, r0
lsls r3, r3, #1
lsls r1, r3
ldrb r2, [r4]
lsls r0, r3
ands r0, r2
eors r2, r0
orrs r2, r1
strb r2, [r4]
lsrs r0, r3
pop {r4, pc}
.align 2, 0
_0807CAC4: .4byte gUnk_02002B32
.syntax divided
@@ -0,0 +1,135 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r2, #0
ldr r0, _0807B3A0 @ =0x000007FF
cmp r5, r0
bhi _0807B410
adds r0, r4, #0
adds r1, r6, #0
bl DeleteLoadedTileEntity
adds r0, r6, #0
bl GetLayerByIndex
adds r2, r0, #0
lsls r1, r5, #1
ldr r3, _0807B3A4 @ =0x00006004
adds r0, r2, r3
adds r0, r0, r1
ldrh r0, [r0]
mov ip, r0
lsls r1, r4, #1
adds r0, r2, #4
adds r0, r0, r1
mov r1, ip
strh r1, [r0]
ldr r0, _0807B3A8 @ =gUnk_080B3E80
adds r0, r5, r0
ldrb r3, [r0]
ldr r1, _0807B3AC @ =0x00002004
adds r0, r2, r1
adds r0, r0, r4
strb r3, [r0]
ldr r7, _0807B3B0 @ =gRoomControls
ldrb r1, [r7, #0xf]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0807B36C
ldr r0, _0807B3B4 @ =gMapBottom
ldr r1, _0807B3AC @ =0x00002004
adds r0, r0, r1
adds r0, r4, r0
strb r3, [r0]
_0807B36C:
ldr r3, _0807B3B8 @ =0x0000B004
adds r1, r2, r3
adds r1, r1, r4
ldr r0, _0807B3BC @ =gUnk_080B37A0
adds r0, r5, r0
ldrb r0, [r0]
strb r0, [r1]
ldrb r1, [r7, #0xf]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0807B430
movs r1, #0x3f
ands r1, r4
lsls r1, r1, #1
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r4
lsls r0, r0, #2
adds r1, r1, r0
cmp r6, #2
beq _0807B3C4
lsls r1, r1, #1
ldr r0, _0807B3C0 @ =gUnk_02019EE0
b _0807B3C8
.align 2, 0
_0807B3A0: .4byte 0x000007FF
_0807B3A4: .4byte 0x00006004
_0807B3A8: .4byte gUnk_080B3E80
_0807B3AC: .4byte 0x00002004
_0807B3B0: .4byte gRoomControls
_0807B3B4: .4byte gMapBottom
_0807B3B8: .4byte 0x0000B004
_0807B3BC: .4byte gUnk_080B37A0
_0807B3C0: .4byte gUnk_02019EE0
_0807B3C4:
lsls r1, r1, #1
ldr r0, _0807B400 @ =gMapDataTopSpecial
_0807B3C8:
adds r3, r1, r0
mov r1, ip
lsls r0, r1, #3
ldr r1, _0807B404 @ =0x00007004
adds r0, r0, r1
adds r0, r2, r0
ldrh r1, [r0]
strh r1, [r3]
ldrh r1, [r0, #2]
strh r1, [r3, #2]
movs r1, #0x80
lsls r1, r1, #1
adds r2, r3, r1
ldrh r1, [r0, #4]
strh r1, [r2]
movs r2, #0x81
lsls r2, r2, #1
adds r1, r3, r2
ldrh r0, [r0, #6]
strh r0, [r1]
ldr r0, _0807B408 @ =gRoomControls
ldrh r0, [r0]
cmp r0, #1
beq _0807B430
ldr r1, _0807B40C @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
b _0807B430
.align 2, 0
_0807B400: .4byte gMapDataTopSpecial
_0807B404: .4byte 0x00007004
_0807B408: .4byte gRoomControls
_0807B40C: .4byte gUpdateVisibleTiles
_0807B410:
ldr r0, _0807B424 @ =0x00003FFF
cmp r5, r0
bls _0807B428
adds r0, r5, #0
adds r1, r4, #0
adds r2, r6, #0
bl SetTile
b _0807B430
.align 2, 0
_0807B424: .4byte 0x00003FFF
_0807B428:
adds r0, r4, #0
adds r1, r6, #0
bl sub_0807BA8C
_0807B430:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,118 @@
.syntax unified
push {r4, lr}
ldr r3, _080777D0 @ =gPlayerState
adds r0, r3, #0
adds r0, #0x92
ldrh r1, [r0]
movs r4, #0x80
adds r0, r4, #0
ands r0, r1
cmp r0, #0
beq _08077870
ldr r1, [r3, #0x30]
movs r0, #0x80
lsls r0, r0, #0xf
ands r0, r1
cmp r0, #0
beq _080777D4
adds r1, r3, #0
adds r1, #0xa0
movs r0, #1
strb r0, [r1]
bl DeleteClones
_080777CC:
movs r0, #1
b _0807787C
.align 2, 0
_080777D0: .4byte gPlayerState
_080777D4:
ldr r2, _080777F4 @ =gArea
ldrb r0, [r2, #0x18]
cmp r0, #2
beq _080777FC
cmp r0, #3
beq _08077810
ldr r0, _080777F8 @ =gUnk_0200AF00
adds r0, #0x2c
ldrb r0, [r0]
cmp r0, #0xc
bne _0807787A
adds r2, r3, #0
ldrb r0, [r2, #0x1c]
cmp r0, #0
bne _0807787A
b _08077838
.align 2, 0
_080777F4: .4byte gArea
_080777F8: .4byte gUnk_0200AF00
_080777FC:
ldrb r0, [r2, #0x1a]
cmp r0, #0
bne _080777CC
ldr r1, _0807780C @ =gPlayerEntity
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
b _080777CC
.align 2, 0
_0807780C: .4byte gPlayerEntity
_08077810:
ldrb r0, [r2, #0x1a]
cmp r0, #0
bne _0807787A
ands r1, r4
cmp r1, #0
beq _0807787A
ldr r0, _08077834 @ =gPlayerEntity
ldrb r1, [r0, #0xd]
adds r1, #1
strb r1, [r0, #0xd]
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r0, #0x10]
movs r1, #0xb4
bl RequestPriorityDuration
b _080777CC
.align 2, 0
_08077834: .4byte gPlayerEntity
_08077838:
ldrb r0, [r2, #0x12]
cmp r0, #0x11
beq _0807787A
adds r0, r2, #0
adds r0, #0x90
ldrh r1, [r0]
movs r0, #0xf0
lsls r0, r0, #4
ands r0, r1
cmp r0, #0
beq _0807787A
ldr r0, [r2, #0x30]
ldr r1, _0807786C @ =0x00040400
ands r0, r1
cmp r0, #0
bne _0807787A
ldrb r0, [r2, #2]
cmp r0, #0
bne _0807787A
ldrb r0, [r2, #4]
cmp r0, #0
bne _0807787A
movs r0, #0x18
strb r0, [r2, #0xc]
b _0807787A
.align 2, 0
_0807786C: .4byte 0x00040400
_08077870:
ldr r0, [r3, #0x30]
movs r1, #0x20
ands r0, r1
cmp r0, #0
bne _080777CC
_0807787A:
movs r0, #0
_0807787C:
pop {r4, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,40 @@
.syntax unified
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
subs r0, r4, #1
cmp r0, #0x1e
bhi _080778C0
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #2
ldr r1, _080778C4 @ =gUnk_0811BE48
adds r5, r0, r1
ldr r1, _080778C8 @ =gPlayerState + 0x90
ldrb r0, [r5]
cmp r0, #0
beq _080778A0
adds r1, #2
_080778A0:
ldrh r0, [r1]
ands r0, r6
cmp r0, #0
bne _080778AC
cmp r2, #0
beq _080778C0
_080778AC:
adds r0, r4, #0
bl sub_0807794C
adds r1, r0, #0
cmp r1, #0
beq _080778C0
ldrb r0, [r5, #1]
strb r0, [r1, #9]
strb r4, [r1, #1]
strb r6, [r1, #3]
_080778C0:
pop {r4, r5, r6, pc}
.align 2, 0
_080778C4: .4byte gUnk_0811BE48
_080778C8: .4byte gPlayerState + 0x90
.syntax divided
@@ -0,0 +1,64 @@
.syntax unified
push {lr}
ldr r2, _08077920 @ =gPlayerState
ldr r0, [r2, #0x30]
ldr r1, _08077924 @ =0x000400A0
ands r0, r1
cmp r0, #0
bne _0807791C
ldr r0, _08077928 @ =gPlayerEntity
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #0
bne _080778FA
ldrb r0, [r2, #5]
cmp r0, #0
bne _080778FA
adds r0, r2, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #8
ands r0, r1
cmp r0, #0
beq _0807791C
_080778FA:
bl sub_080789A8
cmp r0, #0
bne _08077910
ldr r0, _08077920 @ =gPlayerState
adds r0, #0x90
ldrh r1, [r0]
ldr r0, _0807792C @ =0x00000F03
ands r0, r1
cmp r0, #0
bne _0807791C
_08077910:
movs r0, #0x1b
bl sub_0807794C
adds r1, r0, #0
cmp r1, #0
bne _08077930
_0807791C:
movs r0, #0
b _08077940
.align 2, 0
_08077920: .4byte gPlayerState
_08077924: .4byte 0x000400A0
_08077928: .4byte gPlayerEntity
_0807792C: .4byte 0x00000F03
_08077930:
movs r0, #0x1b
strb r0, [r1, #1]
ldr r0, _08077944 @ =gUnk_0811BE48
ldr r2, _08077948 @ =0x00000145
adds r0, r0, r2
ldrb r0, [r0]
strb r0, [r1, #9]
movs r0, #1
_08077940:
pop {pc}
.align 2, 0
_08077944: .4byte gUnk_0811BE48
_08077948: .4byte 0x00000145
.syntax divided
@@ -0,0 +1,56 @@
.syntax unified
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r6, _08078060 @ =gSave
adds r5, r6, #0
adds r5, #0xb4
ldrb r0, [r5]
bl ItemIsSword
cmp r0, #0
bne _0807802C
adds r5, r6, #0
adds r5, #0xb5
ldrb r0, [r5]
bl ItemIsSword
movs r2, #0
cmp r0, #0
beq _0807802E
_0807802C:
ldrb r2, [r5]
_0807802E:
subs r0, r2, #1
cmp r0, #1
bhi _08078036
movs r2, #0
_08078036:
cmp r2, #0
beq _08078068
ldr r0, _08078064 @ =gPlayerState
ldrb r1, [r0, #0x1b]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08078068
ldrb r0, [r4, #1]
adds r0, #1
strb r0, [r4, #1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x14
ble _0807806C
movs r0, #0xa
strb r0, [r4, #1]
movs r0, #3
strb r0, [r4]
strb r2, [r4, #2]
b _0807806C
.align 2, 0
_08078060: .4byte gSave
_08078064: .4byte gPlayerState
_08078068:
movs r0, #0
strb r0, [r4, #1]
_0807806C:
movs r0, #0
pop {r4, r5, r6, pc}
.syntax divided
@@ -0,0 +1,157 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r0, _080781C8 @ =gUnk_0200AF00
adds r1, r0, #0
adds r1, #0x2f
ldrb r1, [r1]
adds r6, r0, #0
cmp r1, #0
beq _08078192
b _080782BC
_08078192:
movs r4, #0
ldr r5, _080781CC @ =gPlayerState
ldrb r0, [r5, #2]
cmp r0, #0
beq _0807819E
b _080782B6
_0807819E:
ldr r0, [r5, #0x30]
ldr r1, _080781D0 @ =0x00104D00
ands r0, r1
cmp r0, #0
beq _080781AA
b _080782B6
_080781AA:
ldrb r0, [r5, #5]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bhi _080781D4
adds r1, r6, #0
adds r1, #0x2e
ldrb r0, [r1]
movs r4, #3
cmp r0, #0
bne _080781C4
b _080782B6
_080781C4:
adds r4, r0, #0
b _080782B6
.align 2, 0
_080781C8: .4byte gUnk_0200AF00
_080781CC: .4byte gPlayerState
_080781D0: .4byte 0x00104D00
_080781D4:
adds r1, r6, #0
adds r1, #0x2d
ldrb r0, [r1]
cmp r0, #0
bne _080781C4
bl sub_080784E4
adds r1, r0, #0
ldr r0, [r1, #8]
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bne _08078278
ldrb r0, [r1, #1]
subs r0, #1
cmp r0, #9
bhi _080782B6
lsls r0, r0, #2
ldr r1, _08078204 @ =_08078208
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078204: .4byte _08078208
_08078208: @ jump table
.4byte _08078230 @ case 0
.4byte _080782B6 @ case 1
.4byte _08078254 @ case 2
.4byte _080782B6 @ case 3
.4byte _08078254 @ case 4
.4byte _08078254 @ case 5
.4byte _08078230 @ case 6
.4byte _0807823C @ case 7
.4byte _08078260 @ case 8
.4byte _0807826C @ case 9
_08078230:
movs r4, #7
ldr r6, _08078238 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078238: .4byte gUnk_0200AF00
_0807823C:
ldr r0, _0807824C @ =gRoomVars
ldrb r0, [r0, #6]
ldr r6, _08078250 @ =gUnk_0200AF00
cmp r0, #0
bne _080782B6
movs r4, #9
b _080782B6
.align 2, 0
_0807824C: .4byte gRoomVars
_08078250: .4byte gUnk_0200AF00
_08078254:
movs r4, #6
ldr r6, _0807825C @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_0807825C: .4byte gUnk_0200AF00
_08078260:
movs r4, #5
ldr r6, _08078268 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078268: .4byte gUnk_0200AF00
_0807826C:
movs r4, #2
ldr r6, _08078274 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078274: .4byte gUnk_0200AF00
_08078278:
bl sub_080789A8
cmp r0, #0
beq _080782A4
adds r0, r5, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #0xe
beq _080782BC
ldr r1, _080782A0 @ =gUnk_03003BE0
ldrb r0, [r1, #1]
movs r4, #9
cmp r0, #2
bne _080782B6
ldr r0, [r1, #8]
ldrb r0, [r0, #0x16]
cmp r0, #1
bne _080782B6
movs r4, #8
b _080782B6
.align 2, 0
_080782A0: .4byte gUnk_03003BE0
_080782A4:
adds r0, r5, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #1
bne _080782B6
ldrb r0, [r5, #0x1a]
cmp r0, #0
bne _080782B6
movs r4, #0xc
_080782B6:
adds r0, r6, #0
adds r0, #0x2c
strb r4, [r0]
_080782BC:
pop {r4, r5, r6, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,238 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r1, _080782D8 @ =gPlayerState
adds r2, r1, #0
adds r2, #0xa8
ldrb r0, [r2]
adds r4, r1, #0
cmp r0, #0
bne _080782DC
adds r0, r4, #0
adds r0, #0xa9
ldrb r0, [r0]
b _080782DE
.align 2, 0
_080782D8: .4byte gPlayerState
_080782DC:
ldrb r0, [r2]
_080782DE:
subs r0, #2
cmp r0, #0x14
bhi _08078348
lsls r0, r0, #2
ldr r1, _080782F0 @ =_080782F4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080782F0: .4byte _080782F4
_080782F4: @ jump table
.4byte _080784AC @ case 0
.4byte _080784AC @ case 1
.4byte _08078348 @ case 2
.4byte _08078348 @ case 3
.4byte _08078348 @ case 4
.4byte _08078348 @ case 5
.4byte _08078348 @ case 6
.4byte _08078348 @ case 7
.4byte _08078348 @ case 8
.4byte _08078348 @ case 9
.4byte _080784AC @ case 10
.4byte _08078348 @ case 11
.4byte _08078348 @ case 12
.4byte _08078348 @ case 13
.4byte _08078348 @ case 14
.4byte _08078348 @ case 15
.4byte _080784AC @ case 16
.4byte _08078348 @ case 17
.4byte _08078348 @ case 18
.4byte _080784AC @ case 19
.4byte _080784AC @ case 20
_08078348:
adds r0, r4, #0
adds r0, #0x27
adds r2, r4, #0
adds r2, #0x26
ldrb r1, [r0]
ldrb r0, [r2]
orrs r0, r1
cmp r0, #0
beq _0807835C
b _080784AC
_0807835C:
ldrb r0, [r4, #0x12]
cmp r0, #1
bne _08078376
ldrb r0, [r4, #0x14]
cmp r0, #0
bne _0807836A
b _080784AC
_0807836A:
bl CanDispEzloMessage
cmp r0, #0
beq _08078374
b _080784C4
_08078374:
b _080784AC
_08078376:
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #7
ands r0, r1
cmp r0, #0
beq _08078384
b _080784AC
_08078384:
bl CanDispEzloMessage
cmp r0, #0
beq _0807838E
b _080784C4
_0807838E:
bl sub_080784E4
ldr r6, [r0, #8]
cmp r6, #0
bne _0807839A
b _080784AC
_0807839A:
ldrb r0, [r4, #5]
cmp r0, #0
beq _080783B6
cmp r0, #4
beq _080783A6
b _080784AC
_080783A6:
ldr r0, _08078400 @ =gPlayerEntity
ldr r0, [r0, #0x74]
ldr r0, [r0, #0x54]
ldrh r1, [r0, #8]
ldr r0, _08078404 @ =0x00000206
cmp r1, r0
beq _080783B6
b _080784AC
_080783B6:
ldr r2, _08078408 @ =gPlayerState
adds r0, r2, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #5
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _0807842C
ldr r5, _0807840C @ =gUnk_03003DF0
ldr r0, [r5, #4]
ldrb r0, [r0, #3]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x63
bhi _0807842C
movs r0, #0
bl sub_0801E738
ldr r0, _08078410 @ =gSave
ldr r1, _08078414 @ =0x0000012B
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0
beq _08078418
ldr r1, [r5, #4]
ldrb r0, [r1, #3]
strb r0, [r5, #2]
ldr r0, [r1, #8]
adds r0, #0x39
movs r1, #2
strb r1, [r0]
movs r0, #7
strb r0, [r4, #0xc]
b _08078420
.align 2, 0
_08078400: .4byte gPlayerEntity
_08078404: .4byte 0x00000206
_08078408: .4byte gPlayerState
_0807840C: .4byte gUnk_03003DF0
_08078410: .4byte gSave
_08078414: .4byte 0x0000012B
_08078418:
ldr r0, _08078428 @ =0x00000B65
movs r1, #0
bl CreateEzloHint
_08078420:
movs r0, #0x13
bl ForceSetPlayerState
b _080784C4
.align 2, 0
_08078428: .4byte 0x00000B65
_0807842C:
adds r0, r4, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x88
ands r0, r1
cmp r0, #0
beq _080784AC
ldr r0, _08078450 @ =gUnk_03003DF0
ldr r0, [r0, #4]
ldrb r0, [r0, #1]
cmp r0, #0xa
bhi _080784C4
lsls r0, r0, #2
ldr r1, _08078454 @ =_08078458
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078450: .4byte gUnk_03003DF0
_08078454: .4byte _08078458
_08078458: @ jump table
.4byte _080784C4 @ case 0
.4byte _08078484 @ case 1
.4byte _080784C4 @ case 2
.4byte _0807848E @ case 3
.4byte _080784C4 @ case 4
.4byte _0807848E @ case 5
.4byte _08078484 @ case 6
.4byte _0807848E @ case 7
.4byte _080784A4 @ case 8
.4byte _08078484 @ case 9
.4byte _08078484 @ case 10
_08078484:
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x13
bl ForceSetPlayerState
_0807848E:
adds r1, r6, #0
adds r1, #0x39
movs r2, #0
movs r0, #1
strb r0, [r1]
ldr r0, _080784A0 @ =gUnk_03003DF0
strb r2, [r0, #2]
b _080784C4
.align 2, 0
_080784A0: .4byte gUnk_03003DF0
_080784A4:
ldr r2, _080784B0 @ =gRoomVars
ldrb r0, [r2, #6]
cmp r0, #0
beq _080784B4
_080784AC:
movs r0, #0
b _080784C6
.align 2, 0
_080784B0: .4byte gRoomVars
_080784B4:
adds r1, r6, #0
adds r1, #0x39
movs r0, #1
strb r0, [r1]
ldrb r0, [r6, #0xa]
strb r0, [r2, #6]
ldrb r0, [r6, #0xb]
strb r0, [r2, #7]
_080784C4:
movs r0, #1
_080784C6:
pop {r4, r5, r6, pc}
.syntax divided
@@ -0,0 +1,315 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r0, _080784FC @ =gUnk_03003DF0
ldrb r1, [r0]
mov r8, r0
cmp r1, #0
beq _08078500
ldr r0, [r0, #4]
b _0807876A
.align 2, 0
_080784FC: .4byte gUnk_03003DF0
_08078500:
ldr r2, _08078528 @ =gPlayerState
adds r0, r2, #0
adds r0, #0x27
adds r3, r2, #0
adds r3, #0x26
ldrb r1, [r0]
ldrb r0, [r3]
orrs r0, r1
cmp r0, #0
bne _08078598
adds r1, r2, #0
adds r1, #0xa8
ldrb r0, [r1]
cmp r0, #0
bne _0807852C
adds r0, r2, #0
adds r0, #0xa9
ldrb r0, [r0]
b _0807852E
.align 2, 0
_08078528: .4byte gPlayerState
_0807852C:
ldrb r0, [r1]
_0807852E:
subs r0, #2
cmp r0, #0x14
bhi _080785B0
lsls r0, r0, #2
ldr r1, _08078540 @ =_08078544
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078540: .4byte _08078544
_08078544: @ jump table
.4byte _08078598 @ case 0
.4byte _08078598 @ case 1
.4byte _080785B0 @ case 2
.4byte _080785B0 @ case 3
.4byte _080785B0 @ case 4
.4byte _080785B0 @ case 5
.4byte _080785B0 @ case 6
.4byte _080785B0 @ case 7
.4byte _080785B0 @ case 8
.4byte _080785B0 @ case 9
.4byte _080785B0 @ case 10
.4byte _080785B0 @ case 11
.4byte _080785B0 @ case 12
.4byte _080785B0 @ case 13
.4byte _080785B0 @ case 14
.4byte _080785B0 @ case 15
.4byte _08078598 @ case 16
.4byte _080785B0 @ case 17
.4byte _080785B0 @ case 18
.4byte _08078598 @ case 19
.4byte _08078598 @ case 20
_08078598:
movs r0, #0xff
mov r1, r8
strb r0, [r1, #3]
ldr r0, _080785AC @ =gUnk_0811C000
str r0, [r1, #4]
movs r1, #1
mov r2, r8
strb r1, [r2]
b _0807876A
.align 2, 0
_080785AC: .4byte gUnk_0811C000
_080785B0:
ldr r0, [r2, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _080785F0
bl HasDungeonMap
cmp r0, #0
beq _080785C4
movs r0, #1
_080785C4:
adds r7, r0, #0
bl HasDungeonCompass
cmp r0, #0
beq _080785D2
movs r0, #2
orrs r7, r0
_080785D2:
ldr r3, _080785E4 @ =gPlayerEntity
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
ldr r0, _080785E8 @ =gUnk_0811C00C
adds r2, r1, r0
ldr r5, _080785EC @ =gUnk_03003DF0
mov r8, r5
b _080785FE
.align 2, 0
_080785E4: .4byte gPlayerEntity
_080785E8: .4byte gUnk_0811C00C
_080785EC: .4byte gUnk_03003DF0
_080785F0:
ldr r3, _08078624 @ =gPlayerEntity
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
ldr r0, _08078628 @ =gUnk_0811C014
adds r2, r1, r0
movs r7, #0
_080785FE:
mov ip, r3
mov r0, ip
movs r3, #0x2e
ldrsh r1, [r0, r3]
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov sl, r1
mov r5, ip
movs r0, #0x32
ldrsh r1, [r5, r0]
movs r0, #1
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov sb, r1
movs r6, #0
ldr r5, _0807862C @ =gUnk_03003DF8
b _08078724
.align 2, 0
_08078624: .4byte gPlayerEntity
_08078628: .4byte gUnk_0811C014
_0807862C: .4byte gUnk_03003DF8
_08078630:
ldrb r1, [r5]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
bne _0807864E
mov r0, ip
adds r0, #0x38
adds r1, r2, #0
adds r1, #0x38
ldrb r2, [r0]
ldrb r0, [r1]
ands r0, r2
cmp r0, #0
beq _08078714
_0807864E:
ldrb r1, [r5, #2]
mov r2, ip
ldrb r0, [r2, #0x14]
lsrs r0, r0, #1
asrs r1, r0
ands r1, r3
cmp r1, #0
bne _08078714
ldrb r0, [r5, #1]
cmp r0, #0xa
bhi _080786D4
lsls r0, r0, #2
ldr r1, _08078670 @ =_08078674
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078670: .4byte _08078674
_08078674: @ jump table
.4byte _08078714 @ case 0
.4byte _080786A0 @ case 1
.4byte _080786C4 @ case 2
.4byte _080786A0 @ case 3
.4byte _080786A0 @ case 4
.4byte _080786C8 @ case 5
.4byte _080786CC @ case 6
.4byte _080786B4 @ case 7
.4byte _080786A0 @ case 8
.4byte _080786A0 @ case 9
.4byte _080786D4 @ case 10
_080786A0:
ldr r0, _080786B0 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08078714
b _080786D4
.align 2, 0
_080786B0: .4byte gPlayerState
_080786B4:
ldr r0, _080786C0 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
b _080786D0
.align 2, 0
_080786C0: .4byte gPlayerState
_080786C4:
ldrb r0, [r5, #3]
b _080786D0
_080786C8:
movs r0, #1
b _080786CE
_080786CC:
movs r0, #2
_080786CE:
ands r0, r7
_080786D0:
cmp r0, #0
beq _08078714
_080786D4:
ldr r0, [r5, #8]
movs r1, #0x2e
ldrsh r3, [r0, r1]
movs r2, #0x32
ldrsh r4, [r0, r2]
ldr r1, [r5, #4]
cmp r1, #0
beq _080786F4
movs r0, #0
ldrsb r0, [r1, r0]
adds r3, r3, r0
movs r0, #1
ldrsb r0, [r1, r0]
adds r4, r4, r0
adds r2, r1, #2
b _080786F8
_080786F4:
ldr r0, [r0, #0x48]
adds r2, r0, #6
_080786F8:
ldrb r1, [r2]
mov r5, sl
adds r0, r1, r5
subs r0, r0, r3
lsls r1, r1, #1
cmp r0, r1
bhs _08078714
ldrb r1, [r2, #1]
mov r2, sb
adds r0, r1, r2
subs r0, r0, r4
lsls r1, r1, #1
cmp r0, r1
blo _0807873A
_08078714:
adds r6, #1
cmp r6, #0x1f
bhi _08078758
lsls r0, r6, #1
adds r0, r0, r6
lsls r0, r0, #2
ldr r3, _08078754 @ =gUnk_03003DF8
adds r5, r0, r3
_08078724:
ldr r2, [r5, #8]
cmp r2, #0
beq _08078714
adds r0, r2, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
blt _0807873A
b _08078630
_0807873A:
cmp r6, #0x1f
bhi _08078758
mov r5, r8
strb r6, [r5, #3]
lsls r0, r6, #1
adds r0, r0, r6
lsls r0, r0, #2
mov r1, r8
adds r1, #8
adds r0, r0, r1
str r0, [r5, #4]
b _08078762
.align 2, 0
_08078754: .4byte gUnk_03003DF8
_08078758:
movs r0, #0xff
mov r1, r8
strb r0, [r1, #3]
ldr r0, _08078774 @ =gUnk_0811C000
str r0, [r1, #4]
_08078762:
movs r0, #1
mov r2, r8
strb r0, [r2]
ldr r0, [r2, #4]
_0807876A:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08078774: .4byte gUnk_0811C000
.syntax divided
@@ -0,0 +1,20 @@
.syntax unified
push {lr}
adds r3, r0, #0
ldr r2, _08078950 @ =gUnk_03003BE0
ldrb r0, [r2, #2]
cmp r0, #0x1f
bhi _0807894C
lsls r0, r0, #2
adds r1, r2, #0
adds r1, #0xc
adds r0, r0, r1
str r3, [r0]
ldrb r0, [r2, #2]
adds r0, #1
strb r0, [r2, #2]
_0807894C:
pop {pc}
.align 2, 0
_08078950: .4byte gUnk_03003BE0
.syntax divided
@@ -0,0 +1,47 @@
.syntax unified
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #0
ldr r0, _08078970 @ =gUnk_03003BE0
ldrb r1, [r0, #2]
adds r2, r0, #0
cmp r4, r1
bhs _080789A6
ldr r0, [r2, #0xc]
cmp r0, r5
bne _08078974
subs r0, r1, #1
b _0807898C
.align 2, 0
_08078970: .4byte gUnk_03003BE0
_08078974:
adds r4, #1
ldrb r3, [r2, #2]
cmp r4, r3
bhs _080789A6
lsls r0, r4, #2
adds r1, r2, #0
adds r1, #0xc
adds r0, r0, r1
ldr r0, [r0]
cmp r0, r5
bne _08078974
subs r0, r3, #1
_0807898C:
strb r0, [r2, #2]
ldrb r0, [r2, #2]
cmp r4, r0
bhs _080789A6
lsls r0, r4, #2
adds r0, #0xc
adds r1, r0, r2
_0807899A:
ldr r0, [r1, #4]
stm r1!, {r0}
adds r4, #1
ldrb r0, [r2, #2]
cmp r4, r0
blo _0807899A
_080789A6:
pop {r4, r5, pc}
.syntax divided
@@ -0,0 +1,116 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r1, _080789BC @ =gUnk_03003BE0
ldrb r0, [r1]
cmp r0, #0
beq _080789C0
ldrb r0, [r1, #1]
b _08078A88
.align 2, 0
_080789BC: .4byte gUnk_03003BE0
_080789C0:
ldr r0, _08078A5C @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08078A56
ldr r0, _08078A60 @ =gPlayerEntity
bl sub_080002D0
adds r4, r0, #0
cmp r4, #0xf
bls _080789E6
ldr r0, _08078A64 @ =gUnk_080084BC
adds r1, r4, #0
subs r1, #0x10
adds r1, r1, r0
ldrb r0, [r1]
cmp r0, #0xf
beq _08078A56
_080789E6:
ldr r0, _08078A5C @ =gPlayerState
ldrb r0, [r0, #0x12]
cmp r0, #0x12
beq _08078A56
ldr r3, _08078A68 @ =gUnk_03003BE0
movs r0, #1
strb r0, [r3]
ldrb r4, [r3, #2]
cmp r4, #0
beq _08078A2E
ldr r2, _08078A60 @ =gPlayerEntity
ldrb r1, [r2, #0x14]
movs r0, #6
ands r0, r1
ldr r1, _08078A6C @ =gUnk_0811BFE0
adds r6, r0, r1
adds r7, r2, #0
adds r3, #8
mov r8, r3
_08078A0C:
lsls r0, r4, #2
mov r1, r8
adds r5, r0, r1
ldr r1, [r5]
cmp r1, #0
beq _08078A26
ldrb r2, [r6]
ldrb r3, [r6, #1]
adds r0, r7, #0
bl sub_0807A180
cmp r0, #0
bne _08078A74
_08078A26:
subs r4, #1
ldr r7, _08078A60 @ =gPlayerEntity
cmp r4, #0
bne _08078A0C
_08078A2E:
ldr r0, _08078A60 @ =gPlayerEntity
ldrb r1, [r0, #0x14]
movs r2, #6
ands r2, r1
ldr r1, _08078A70 @ =gUnk_08007DF4
adds r2, r2, r1
movs r1, #0
ldrsb r1, [r2, r1]
ldrb r2, [r2, #1]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
bl sub_0800029C
ldr r4, _08078A68 @ =gUnk_03003BE0
strh r0, [r4, #4]
movs r1, #6
bl sub_0806FC24
cmp r0, #0
bne _08078A84
_08078A56:
movs r0, #0
b _08078A88
.align 2, 0
_08078A5C: .4byte gPlayerState
_08078A60: .4byte gPlayerEntity
_08078A64: .4byte gUnk_080084BC
_08078A68: .4byte gUnk_03003BE0
_08078A6C: .4byte gUnk_0811BFE0
_08078A70: .4byte gUnk_08007DF4
_08078A74:
mov r0, r8
subs r0, #8
ldr r1, [r5]
str r1, [r0, #8]
movs r1, #2
strb r1, [r0, #1]
movs r0, #2
b _08078A88
_08078A84:
movs r0, #1
strb r0, [r4, #1]
_08078A88:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,73 @@
.syntax unified
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, [r5, #0x70]
ldrh r0, [r5, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
ldrb r1, [r5, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x1b]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1b]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
ldr r1, _08078D28 @ =gUnk_0811C01C
ldr r0, _08078D2C @ =gPlayerState
ldr r0, [r0, #0x2c]
ldrb r0, [r0, #0x1e]
adds r0, r0, r1
ldrb r2, [r0]
ldr r3, _08078D30 @ =gUnk_0811C0B0
ldrb r1, [r4, #0x1c]
movs r0, #0x30
ands r0, r1
lsrs r0, r0, #2
adds r0, r0, r3
lsls r2, r2, #1
ldr r0, [r0]
adds r2, r0, r2
ldrb r0, [r5, #0x18]
lsls r0, r0, #0x19
cmp r0, #0
bge _08078D34
movs r1, #0
ldrsb r1, [r2, r1]
ldrh r0, [r5, #0x2e]
subs r0, r0, r1
b _08078D3C
.align 2, 0
_08078D28: .4byte gUnk_0811C01C
_08078D2C: .4byte gPlayerState
_08078D30: .4byte gUnk_0811C0B0
_08078D34:
movs r0, #0
ldrsb r0, [r2, r0]
ldrh r1, [r5, #0x2e]
adds r0, r0, r1
_08078D3C:
strh r0, [r4, #0x2e]
movs r0, #1
ldrsb r0, [r2, r0]
ldrh r1, [r5, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
adds r0, r5, #0
movs r1, #0
adds r2, r4, #0
bl sub_0806FEBC
ldr r1, [r4, #0x50]
cmp r1, #0
beq _08078D5E
adds r0, r4, #0
bl CopyPosition
_08078D5E:
pop {r4, r5, pc}
.syntax divided
@@ -0,0 +1,152 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r1, _08078DCC @ =gPlayerEntity
ldr r0, [r1, #0x74]
ldr r4, [r0, #0x54]
ldrb r0, [r4, #0xc]
adds r6, r1, #0
cmp r0, #2
beq _08078D72
b _08078E82
_08078D72:
adds r0, r6, #0
adds r0, #0x63
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r6, #0x36]
adds r0, r0, r1
strh r0, [r4, #0x36]
ldrb r1, [r6, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x1b]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1b]
adds r0, r6, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r6, #0
adds r0, #0x5a
ldrb r0, [r0]
movs r2, #0x7f
ands r2, r0
ldr r1, _08078DD0 @ =gUnk_0811C0E8
ldrb r0, [r4, #0x16]
lsrs r0, r0, #4
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
ldrb r0, [r6, #0x18]
lsls r0, r0, #0x19
cmp r0, #0
bge _08078DD4
adds r2, r1, r2
movs r1, #0
ldrsb r1, [r2, r1]
ldrh r0, [r6, #0x2e]
subs r0, r0, r1
strh r0, [r4, #0x2e]
adds r1, r2, #0
b _08078DE0
.align 2, 0
_08078DCC: .4byte gPlayerEntity
_08078DD0: .4byte gUnk_0811C0E8
_08078DD4:
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r2, [r6, #0x2e]
adds r0, r0, r2
strh r0, [r4, #0x2e]
_08078DE0:
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r4, #0x36]
adds r0, r0, r1
strh r0, [r4, #0x36]
adds r5, r6, #0
ldrh r0, [r5, #0x32]
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl SortEntityAbove
ldr r0, _08078E34 @ =gPlayerState
ldrb r0, [r0, #5]
cmp r0, #4
bne _08078E4C
ldrb r1, [r5, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x19]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x19]
adds r0, r4, #0
bl sub_0806F8DC
ldrb r1, [r4, #0x16]
movs r0, #0xf
ands r0, r1
cmp r0, #2
bne _08078E82
ldr r0, _08078E38 @ =gRoomTransition
ldr r1, [r0]
movs r0, #3
ands r1, r0
cmp r1, #1
beq _08078E3C
cmp r1, #3
beq _08078E44
b _08078E82
.align 2, 0
_08078E34: .4byte gPlayerState
_08078E38: .4byte gRoomTransition
_08078E3C:
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
b _08078E82
_08078E44:
ldrh r0, [r4, #0x2e]
subs r0, #1
strh r0, [r4, #0x2e]
b _08078E82
_08078E4C:
ldrb r0, [r5, #0x14]
lsrs r0, r0, #1
cmp r0, #0
beq _08078E62
adds r0, r5, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
subs r1, #1
b _08078E6E
_08078E62:
adds r0, r6, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
adds r1, #1
_08078E6E:
adds r3, r4, #0
adds r3, #0x29
movs r0, #7
ands r1, r0
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_08078E82:
pop {r4, r5, r6, pc}
.syntax divided
@@ -0,0 +1,99 @@
.syntax unified
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r5, _08078FE0 @ =gPlayerState
ldrb r1, [r5, #6]
movs r6, #0x80
adds r0, r6, #0
ands r0, r1
cmp r0, #0
bne _08078FCA
adds r1, r5, #0
adds r1, #0x35
movs r0, #0xff
strb r0, [r1]
_08078FCA:
adds r0, r4, #0
bl sub_08079064
ldr r1, [r5, #0x30]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _08078FE4
movs r2, #0x58
b _08078FFA
.align 2, 0
_08078FE0: .4byte gPlayerState
_08078FE4:
ands r1, r6
cmp r1, #0
beq _08078FEE
movs r2, #0x18
b _08078FFA
_08078FEE:
ldrh r0, [r5, #8]
lsrs r0, r0, #8
movs r2, #0xb8
cmp r0, #7
bne _08078FFA
movs r2, #0x34
_08078FFA:
ldr r0, _08079014 @ =gPlayerState
adds r3, r0, #0
ldrb r1, [r0, #8]
cmp r2, r1
bls _08079040
ldrb r0, [r4, #0x14]
adds r2, r0, #0
cmp r2, #4
bls _08079018
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
b _08079020
.align 2, 0
_08079014: .4byte gPlayerState
_08079018:
ldrb r1, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
_08079020:
strb r0, [r4, #0x18]
ldr r0, [r3, #0x30]
movs r1, #0x80
lsls r1, r1, #0xc
ands r0, r1
cmp r0, #0
beq _08079036
ldrh r1, [r3, #8]
ldrb r0, [r4, #0x14]
adds r2, r1, r0
b _08079042
_08079036:
lsls r0, r2, #0x18
lsrs r0, r0, #0x19
ldrh r3, [r3, #8]
adds r2, r0, r3
b _08079042
_08079040:
ldrh r2, [r0, #8]
_08079042:
ldrh r0, [r4, #0x12]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x58
ldrb r1, [r1]
orrs r0, r1
cmp r2, r0
beq _08079062
lsrs r0, r2, #8
strh r0, [r4, #0x12]
movs r0, #0xff
ands r2, r0
adds r0, r4, #0
adds r1, r2, #0
bl InitAnimationForceUpdate
_08079062:
pop {r4, r5, r6, pc}
.syntax divided
@@ -0,0 +1,68 @@
.syntax unified
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r0, _0807909C @ =gPlayerState
ldr r1, [r0, #0x30]
ldr r2, _080790A0 @ =0x00100080
ands r1, r2
adds r5, r0, #0
cmp r1, #0
bne _080790DE
movs r3, #0
movs r2, #0
ldr r1, _080790A4 @ =gUnk_03000B80
_0807907C:
ldrb r0, [r1, #0xf]
cmp r0, r3
bls _08079086
adds r3, r0, #0
ldrh r4, [r1, #0x10]
_08079086:
adds r1, #0x1c
adds r2, #1
cmp r2, #3
bls _0807907C
adds r2, r5, #0
ldrb r0, [r2, #0xe]
cmp r0, r3
bhs _080790A8
strh r4, [r2, #8]
b _080790DE
.align 2, 0
_0807909C: .4byte gPlayerState
_080790A0: .4byte 0x00100080
_080790A4: .4byte gUnk_03000B80
_080790A8:
adds r0, r2, #0
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080790C0
ldr r0, _080790BC @ =0x000002BE
strh r0, [r2, #8]
b _080790DE
.align 2, 0
_080790BC: .4byte 0x000002BE
_080790C0:
ldrh r1, [r5, #8]
movs r0, #0xc1
lsls r0, r0, #3
cmp r1, r0
beq _080790D8
movs r0, #0x82
lsls r0, r0, #1
cmp r1, r0
beq _080790D8
ldr r0, _080790E0 @ =0x00000404
cmp r1, r0
bne _080790DE
_080790D8:
adds r0, r6, #0
bl sub_080790E4
_080790DE:
pop {r4, r5, r6, pc}
.align 2, 0
_080790E0: .4byte 0x00000404
.syntax divided
@@ -0,0 +1,139 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r5, _08079344 @ =gPlayerEntity
adds r3, r5, #0
adds r3, #0x42
ldrb r0, [r3]
cmp r0, #0
beq _080793E0
ldrb r2, [r5, #0xc]
cmp r2, #0xb
beq _08079338
ldr r0, _08079348 @ =gPlayerState
ldrb r1, [r0, #0x1e]
adds r6, r0, #0
cmp r1, #0
bne _08079338
ldrb r0, [r6, #5]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bls _08079338
ldrb r0, [r6, #2]
cmp r0, #0
bne _08079338
ldrb r0, [r6, #0x12]
cmp r0, #0xff
beq _08079338
ldrb r1, [r6, #7]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _08079338
adds r0, r6, #0
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0xf
ands r0, r1
subs r0, #1
cmp r0, #0
bgt _08079338
cmp r2, #3
beq _08079338
ldr r1, [r6, #0x30]
movs r0, #0x80
lsls r0, r0, #0xb
ands r1, r0
cmp r1, #0
beq _0807934C
_08079338:
adds r1, r5, #0
adds r1, #0x42
movs r0, #0
strb r0, [r1]
b _080793E0
.align 2, 0
_08079344: .4byte gPlayerEntity
_08079348: .4byte gPlayerState
_0807934C:
cmp r2, #0x1d
bne _0807935E
adds r0, r5, #0
adds r0, #0x3e
ldrb r0, [r0]
cmp r0, #0x10
beq _0807935E
strb r1, [r3]
b _080793E0
_0807935E:
adds r0, r5, #0
adds r0, #0x42
ldrb r3, [r0]
movs r1, #0
ldrsb r1, [r0, r1]
adds r2, r0, #0
cmp r1, #0
ble _08079372
subs r0, r3, #1
b _08079374
_08079372:
adds r0, r3, #1
_08079374:
strb r0, [r2]
ldrb r0, [r2]
cmp r0, #0
beq _080793E0
adds r4, r6, #0
ldrb r0, [r4, #7]
movs r1, #0xdf
ands r1, r0
strb r1, [r4, #7]
adds r0, r5, #0
adds r0, #0x3d
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _080793CA
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _080793CA
ldr r0, [r4, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _080793CA
ldrb r0, [r4, #2]
cmp r0, #0
bne _080793CA
bl ResetPlayer
ldr r0, [r4, #0x30]
movs r1, #8
ands r0, r1
cmp r0, #0
bne _080793C4
movs r0, #0x8a
lsls r0, r0, #1
strh r0, [r4, #8]
b _080793CA
_080793C4:
movs r0, #0x83
lsls r0, r0, #3
strh r0, [r6, #8]
_080793CA:
movs r1, #0xa0
lsls r1, r1, #2
adds r4, r5, #0
adds r4, #0x3e
ldrb r2, [r4]
adds r0, r5, #0
bl sub_080027EA
ldrb r0, [r4]
bl sub_0807A5B8
_080793E0:
pop {r4, r5, r6, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,57 @@
.syntax unified
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _080793FC @ =gPlayerState
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _08079408
ldr r1, _08079400 @ =gUnk_0811C0F8
ldr r0, _08079404 @ =gPlayerEntity
ldrb r0, [r0, #0x14]
lsrs r0, r0, #1
b _08079410
.align 2, 0
_080793FC: .4byte gPlayerState
_08079400: .4byte gUnk_0811C0F8
_08079404: .4byte gPlayerEntity
_08079408:
ldr r1, _08079448 @ =gUnk_0811C0F8
ldr r0, _0807944C @ =gPlayerEntity
ldrb r0, [r0, #0x15]
lsrs r0, r0, #2
_08079410:
lsls r0, r0, #1
adds r0, r0, r1
ldrh r4, [r0]
bl sub_08079778
cmp r0, #0
beq _08079454
ldr r0, _08079450 @ =gPlayerState
adds r0, #0x90
ldrh r0, [r0]
ands r0, r4
cmp r0, #0
beq _08079454
cmp r5, #0
beq _08079442
bl sub_0807A500
ldr r1, _0807944C @ =gPlayerEntity
adds r1, #0x38
ldrb r1, [r1]
adds r2, r5, #0
bl sub_080002F0
cmp r0, #0
beq _08079454
_08079442:
movs r0, #1
b _08079456
.align 2, 0
_08079448: .4byte gUnk_0811C0F8
_0807944C: .4byte gPlayerEntity
_08079450: .4byte gPlayerState
_08079454:
movs r0, #0
_08079456:
pop {r4, r5, pc}
.syntax divided
@@ -0,0 +1,218 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
ldr r0, _080795A8 @ =gUnk_03004030
ldrb r0, [r0, #8]
cmp r0, #0
beq _08079562
b _080796FC
_08079562:
ldr r2, _080795AC @ =gPlayerState
ldrb r0, [r2, #0x1e]
cmp r0, #0
beq _08079576
ldr r0, [r2, #0x30]
movs r1, #0x80
lsls r1, r1, #3
ands r0, r1
cmp r0, #0
beq _080795B4
_08079576:
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
ldr r1, _080795B0 @ =gPlayerEntity
mov r8, r1
cmp r0, #0
bne _080795A0
ldrb r1, [r2, #0x1b]
movs r0, #0x40
ands r0, r1
cmp r0, #0
bne _080795A0
mov r3, r8
ldrb r1, [r3, #0x15]
ldrb r2, [r2, #0xd]
cmp r1, r2
bne _080795A0
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080795B4
_080795A0:
movs r0, #0
mov r5, r8
strb r0, [r5, #0xf]
b _080796FE
.align 2, 0
_080795A8: .4byte gUnk_03004030
_080795AC: .4byte gPlayerState
_080795B0: .4byte gPlayerEntity
_080795B4:
bl sub_08079778
cmp r0, #0
bne _080795BE
b _080796FC
_080795BE:
ldr r3, _08079610 @ =gPlayerEntity
ldrb r2, [r3, #0x14]
movs r0, #6
ands r0, r2
ldr r1, _08079614 @ =gUnk_0811C100
adds r1, r0, r1
movs r0, #2
ands r0, r2
mov r8, r3
cmp r0, #0
beq _0807961C
movs r6, #0x2e
ldrsh r2, [r3, r6]
movs r0, #0
ldrsb r0, [r1, r0]
adds r2, r2, r0
ldr r4, _08079618 @ =gRoomControls
ldrh r0, [r4, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r3, #0x3f
ands r2, r3
mov r0, r8
movs r5, #0x32
ldrsh r1, [r0, r5]
ldr r0, [r0, #0x48]
ldrb r5, [r0, #3]
adds r0, r1, r5
ldrh r4, [r4, #8]
subs r0, r0, r4
asrs r0, r0, #4
ands r0, r3
lsls r7, r0, #6
orrs r7, r2
subs r1, r1, r5
subs r1, r1, r4
asrs r1, r1, #4
ands r1, r3
lsls r4, r1, #6
orrs r4, r2
b _0807965E
.align 2, 0
_08079610: .4byte gPlayerEntity
_08079614: .4byte gUnk_0811C100
_08079618: .4byte gRoomControls
_0807961C:
mov r6, r8
movs r0, #0x2e
ldrsh r2, [r6, r0]
ldr r0, [r6, #0x48]
ldrb r0, [r0, #4]
mov ip, r0
adds r0, r2, r0
ldr r4, _080796EC @ =gRoomControls
ldrh r3, [r4, #6]
mov sb, r3
subs r0, r0, r3
asrs r7, r0, #4
movs r3, #0x3f
ands r7, r3
movs r5, #0x32
ldrsh r0, [r6, r5]
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
ldrh r1, [r4, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r7, r0
mov r6, ip
subs r2, r2, r6
mov r1, sb
subs r2, r2, r1
asrs r4, r2, #4
ands r4, r3
orrs r4, r0
_0807965E:
adds r0, r7, #0
mov r5, r8
adds r5, #0x38
ldrb r1, [r5]
bl sub_080002C8
adds r3, r0, #0
ldr r6, _080796F0 @ =gUnk_0811C1E8
mov r1, r8
ldrb r0, [r1, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r6
ldr r1, [r0]
adds r0, r3, #0
bl sub_08007DD6
adds r3, r0, #0
cmp r3, #0
beq _080796FC
adds r0, r4, #0
ldrb r1, [r5]
bl sub_080002C8
adds r3, r0, #0
mov r5, r8
ldrb r0, [r5, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r6
ldr r1, [r0]
adds r0, r3, #0
bl sub_08007DD6
adds r3, r0, #0
cmp r3, #0
beq _080796FC
ldr r1, _080796F4 @ =gPlayerState
ldrb r2, [r1, #6]
movs r0, #0x80
orrs r0, r2
strb r0, [r1, #6]
ldrb r0, [r1, #0x1e]
adds r4, r1, #0
cmp r0, #0
bne _080796C8
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #5
bls _080796FC
_080796C8:
ldr r0, _080796F8 @ =gPlayerEntity
subs r1, r3, #1
movs r2, #0
strb r1, [r0, #0x14]
movs r1, #4
strb r1, [r0, #0xc]
strb r2, [r0, #0xd]
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r0, #0x10]
movs r1, #0x81
strb r1, [r4, #2]
bl DoPlayerAction
movs r0, #1
b _080796FE
.align 2, 0
_080796EC: .4byte gRoomControls
_080796F0: .4byte gUnk_0811C1E8
_080796F4: .4byte gPlayerState
_080796F8: .4byte gPlayerEntity
_080796FC:
movs r0, #0
_080796FE:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,38 @@
.syntax unified
push {lr}
ldr r0, _08079790 @ =gPlayerState
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _0807979C
ldr r2, _08079794 @ =gUnk_0811C108
ldr r1, _08079798 @ =gPlayerEntity
ldrb r0, [r1, #0x14]
lsrs r0, r0, #1
b _080797A4
.align 2, 0
_08079790: .4byte gPlayerState
_08079794: .4byte gUnk_0811C108
_08079798: .4byte gPlayerEntity
_0807979C:
ldr r2, _080797BC @ =gUnk_0811C108
ldr r1, _080797C0 @ =gPlayerEntity
ldrb r0, [r1, #0x15]
lsrs r0, r0, #2
_080797A4:
lsls r0, r0, #1
adds r0, r0, r2
ldrh r2, [r0]
movs r3, #0
ldrh r0, [r1, #0x2a]
ands r0, r2
cmp r2, r0
bne _080797B6
movs r3, #1
_080797B6:
adds r0, r3, #0
pop {pc}
.align 2, 0
_080797BC: .4byte gUnk_0811C108
_080797C0: .4byte gPlayerEntity
.syntax divided
@@ -0,0 +1,22 @@
.syntax unified
push {lr}
ldr r1, _080797E4 @ =gUnk_0811C110
ldr r2, _080797E8 @ =gPlayerEntity
ldrb r0, [r2, #0x15]
lsrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r3, #0
ldrh r0, [r2, #0x2a]
ands r0, r1
cmp r1, r0
bne _080797E0
movs r3, #1
_080797E0:
adds r0, r3, #0
pop {pc}
.align 2, 0
_080797E4: .4byte gUnk_0811C110
_080797E8: .4byte gPlayerEntity
.syntax divided
@@ -0,0 +1,178 @@
.syntax unified
push {r4, r5, lr}
ldr r4, _08079804 @ =gPlayerState
ldr r1, [r4, #0x30]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0807985C
ldrb r0, [r4, #5]
cmp r0, #0
beq _0807980C
ldr r5, _08079808 @ =0x00000934
b _0807991E
.align 2, 0
_08079804: .4byte gPlayerState
_08079808: .4byte 0x00000934
_0807980C:
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079818
movs r5, #0x82
lsls r5, r5, #3
b _0807991E
_08079818:
adds r0, r4, #0
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
bne _080798A0
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
movs r5, #0xa4
lsls r5, r5, #2
cmp r0, #0
bne _0807991E
movs r5, #0xb6
lsls r5, r5, #1
ldrb r1, [r4, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
bne _080798C2
lsls r0, r1, #0x18
cmp r0, #0
bne _080798CE
adds r1, r4, #0
adds r1, #0xa8
ldrb r0, [r1]
cmp r0, #0
bne _08079852
movs r0, #1
strb r0, [r1]
_08079852:
ldr r5, _08079858 @ =0x00000404
b _0807991E
.align 2, 0
_08079858: .4byte 0x00000404
_0807985C:
ldrb r0, [r4, #0x1c]
cmp r0, #0
bne _0807992E
ldrb r0, [r4, #5]
cmp r0, #0
beq _0807986E
movs r5, #0xd2
lsls r5, r5, #2
b _0807991E
_0807986E:
ldrb r0, [r4, #0x1e]
cmp r0, #0
beq _0807987A
movs r5, #0xa6
lsls r5, r5, #2
b _0807991E
_0807987A:
movs r0, #0x80
lsls r0, r0, #5
ands r1, r0
cmp r1, #0
beq _0807988A
movs r5, #0xe2
lsls r5, r5, #3
b _0807991E
_0807988A:
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079896
movs r5, #0xb0
lsls r5, r5, #1
b _0807991E
_08079896:
adds r0, r4, #0
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
beq _080798A6
_080798A0:
movs r5, #0xa1
lsls r5, r5, #2
b _0807991E
_080798A6:
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
movs r5, #0xa4
lsls r5, r5, #2
cmp r0, #0
bne _0807991E
movs r5, #0xb6
lsls r5, r5, #1
ldrb r1, [r4, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
beq _080798C8
_080798C2:
movs r0, #0x6c
strb r0, [r4]
b _0807992E
_080798C8:
lsls r0, r1, #0x18
cmp r0, #0
beq _080798FC
_080798CE:
movs r0, #0
bl sub_080793E4
cmp r0, #0
beq _0807991E
bl sub_0807A500
ldr r1, _080798F8 @ =gPlayerEntity
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002E0
cmp r0, #0xff
beq _0807991E
ldrb r1, [r4, #0x1b]
movs r0, #0xf7
ands r0, r1
strb r0, [r4, #0x1b]
movs r5, #0xb8
lsls r5, r5, #1
b _0807991E
.align 2, 0
_080798F8: .4byte gPlayerEntity
_080798FC:
adds r1, r4, #0
adds r1, #0xa8
ldrb r0, [r1]
cmp r0, #0
bne _0807990A
movs r0, #1
strb r0, [r1]
_0807990A:
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #0x10
ands r0, r1
movs r5, #0x82
lsls r5, r5, #1
cmp r0, #0
beq _0807991E
movs r5, #0xc1
lsls r5, r5, #3
_0807991E:
ldr r0, _08079930 @ =gPlayerState
strh r5, [r0, #8]
ldrb r0, [r0, #3]
cmp r0, #0
bne _0807992E
ldr r0, _08079934 @ =gPlayerEntity
bl UpdateAnimationSingleFrame
_0807992E:
pop {r4, r5, pc}
.align 2, 0
_08079930: .4byte gPlayerState
_08079934: .4byte gPlayerEntity
.syntax divided
@@ -0,0 +1,92 @@
.syntax unified
push {r4, r5, lr}
ldr r2, _08079B60 @ =gPlayerEntity
ldrb r0, [r2, #0xc]
cmp r0, #0xa
beq _08079BD4
adds r0, r2, #0
adds r0, #0x45
ldrb r3, [r0]
cmp r3, #0
bne _08079BD4
ldr r4, _08079B64 @ =gPlayerState
ldr r1, [r4, #0x30]
ldr r0, _08079B68 @ =0xFEFFFFFF
ands r1, r0
str r1, [r4, #0x30]
adds r0, r2, #0
adds r0, #0x42
strb r3, [r0]
ldrb r0, [r4, #7]
cmp r0, #0
bne _08079BD4
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _08079B6C
bl RespawnPlayer
b _08079BC0
.align 2, 0
_08079B60: .4byte gPlayerEntity
_08079B64: .4byte gPlayerState
_08079B68: .4byte 0xFEFFFFFF
_08079B6C:
ldrb r0, [r4, #0x14]
cmp r0, #0
bne _08079BC0
movs r3, #0x80
lsls r3, r3, #5
ands r3, r1
cmp r3, #0
bne _08079BC0
movs r5, #0x36
ldrsh r0, [r2, r5]
cmp r0, #0
bge _08079BA6
ldr r0, [r2, #0x20]
cmp r0, #0
ble _08079B8C
str r3, [r2, #0x20]
_08079B8C:
ldrb r1, [r4, #2]
movs r3, #0x41
adds r0, r3, #0
ands r0, r1
cmp r0, #0
bne _08079BD4
strb r3, [r4, #2]
movs r0, #0xff
strb r0, [r2, #0x15]
movs r0, #1
rsbs r0, r0, #0
strb r0, [r4, #0xd]
b _08079BD4
_08079BA6:
movs r0, #2
ands r1, r0
cmp r1, #0
bne _08079BC0
bl sub_08079D48
cmp r0, #0
bne _08079BC0
ldrb r0, [r4, #0xa]
movs r1, #0x10
orrs r0, r1
strb r0, [r4, #0xa]
b _08079BD4
_08079BC0:
ldr r2, _08079BD0 @ =gPlayerEntity
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
movs r0, #0
b _08079BD6
.align 2, 0
_08079BD0: .4byte gPlayerEntity
_08079BD4:
movs r0, #1
_08079BD6:
pop {r4, r5, pc}
.syntax divided
@@ -0,0 +1,110 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
ldr r0, _08079C68 @ =gPlayerState
ldrb r1, [r0, #0x14]
adds r7, r0, #0
cmp r1, #0
beq _08079C44
b _08079D40
_08079C44:
ldr r1, [r7, #0x30]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08079D40
movs r0, #0x80
ands r1, r0
cmp r1, #0
bne _08079D36
ldrb r0, [r7, #0x13]
subs r0, #0xd
cmp r0, #0x1d
bhi _08079CE8
lsls r0, r0, #2
ldr r1, _08079C6C @ =_08079C70
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08079C68: .4byte gPlayerState
_08079C6C: .4byte _08079C70
_08079C70: @ jump table
.4byte _08079D36 @ case 0
.4byte _08079D36 @ case 1
.4byte _08079D36 @ case 2
.4byte _08079D36 @ case 3
.4byte _08079CE8 @ case 4
.4byte _08079CE8 @ case 5
.4byte _08079CE8 @ case 6
.4byte _08079D36 @ case 7
.4byte _08079CE8 @ case 8
.4byte _08079CE8 @ case 9
.4byte _08079D36 @ case 10
.4byte _08079CE8 @ case 11
.4byte _08079CE8 @ case 12
.4byte _08079CE8 @ case 13
.4byte _08079CE8 @ case 14
.4byte _08079CE8 @ case 15
.4byte _08079CE8 @ case 16
.4byte _08079CE8 @ case 17
.4byte _08079CE8 @ case 18
.4byte _08079CE8 @ case 19
.4byte _08079CE8 @ case 20
.4byte _08079CE8 @ case 21
.4byte _08079CE8 @ case 22
.4byte _08079CE8 @ case 23
.4byte _08079CE8 @ case 24
.4byte _08079CE8 @ case 25
.4byte _08079CE8 @ case 26
.4byte _08079CE8 @ case 27
.4byte _08079CE8 @ case 28
.4byte _08079D36 @ case 29
_08079CE8:
mov r8, r7
mov r0, r8
ldrb r4, [r0, #0x12]
movs r2, #1
rsbs r2, r2, #0
adds r0, r6, #0
movs r1, #0
bl sub_080002B4
ldr r5, _08079D3C @ =gUnk_08007CAC
adds r1, r5, #0
bl sub_08007DD6
cmp r4, r0
bne _08079D40
mov r0, r8
ldrb r4, [r0, #0x12]
adds r0, r6, #0
movs r1, #2
movs r2, #0
bl sub_080002B4
adds r1, r5, #0
bl sub_08007DD6
cmp r4, r0
bne _08079D40
ldrb r4, [r7, #0x12]
movs r1, #2
rsbs r1, r1, #0
adds r0, r6, #0
movs r2, #0
bl sub_080002B4
adds r1, r5, #0
bl sub_08007DD6
cmp r4, r0
bne _08079D40
_08079D36:
movs r0, #1
b _08079D42
.align 2, 0
_08079D3C: .4byte gUnk_08007CAC
_08079D40:
movs r0, #0
_08079D42:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.syntax divided
@@ -0,0 +1,98 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
ldr r1, _08079EBC @ =gPlayerEntity
ldrb r2, [r1, #0x15]
movs r0, #8
ands r0, r2
adds r7, r1, #0
cmp r0, #0
beq _08079ECA
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _08079EC0
ldr r0, [r7, #0x48]
ldrb r0, [r0, #2]
rsbs r0, r0, #0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
b _08079EC4
.align 2, 0
_08079EBC: .4byte gPlayerEntity
_08079EC0:
ldr r0, [r7, #0x48]
ldrb r5, [r0, #2]
_08079EC4:
ldr r0, [r7, #0x48]
ldrb r4, [r0, #3]
b _08079EDE
_08079ECA:
ldr r0, [r7, #0x48]
ldrb r5, [r0, #4]
cmp r2, #0
beq _08079ED6
ldrb r4, [r0, #5]
b _08079EDE
_08079ED6:
ldrb r0, [r0, #5]
rsbs r0, r0, #0
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
_08079EDE:
lsls r0, r5, #0x10
asrs r0, r0, #0x10
mov r8, r0
lsls r0, r4, #0x10
asrs r6, r0, #0x10
adds r0, r7, #0
mov r1, r8
adds r2, r6, #0
bl sub_080002CC
adds r1, r0, #0
mov r0, sb
bl sub_08079F48
cmp r0, #0
bne _08079F3C
ldrb r1, [r7, #0x15]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08079F10
rsbs r0, r6, #0
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
b _08079F18
_08079F10:
mov r1, r8
rsbs r0, r1, #0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
_08079F18:
ldr r0, _08079F38 @ =gPlayerEntity
lsls r1, r5, #0x10
asrs r1, r1, #0x10
lsls r2, r4, #0x10
asrs r2, r2, #0x10
bl sub_080002CC
adds r1, r0, #0
mov r0, sb
bl sub_08079F48
cmp r0, #0
bne _08079F3C
movs r0, #0
b _08079F3E
.align 2, 0
_08079F38: .4byte gPlayerEntity
_08079F3C:
movs r0, #1
_08079F3E:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,65 @@
.syntax unified
push {r4, r5, r6, lr}
sub sp, #4
adds r5, r0, #0
movs r0, #0x2e
ldrsh r2, [r5, r0]
ldr r3, _0807A008 @ =gRoomControls
ldrh r0, [r3, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r4, #0x3f
ands r2, r4
movs r6, #0x32
ldrsh r0, [r5, r6]
ldrh r3, [r3, #8]
subs r0, r0, r3
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r2, r0
lsls r2, r2, #1
ldr r6, _0807A00C @ =gUnk_02027EB4
cmp r1, #2
bne _0807A004
ldr r6, _0807A010 @ =gUnk_0200D654
_0807A004:
movs r4, #0
b _0807A028
.align 2, 0
_0807A008: .4byte gRoomControls
_0807A00C: .4byte gUnk_02027EB4
_0807A010: .4byte gUnk_0200D654
_0807A014:
cmp r1, #0x23
beq _0807A028
cmp r1, #0x27
beq _0807A028
ldr r0, _0807A04C @ =gUnk_080082DC
subs r1, #0x10
adds r1, r1, r0
ldrb r0, [r1]
cmp r0, #0
beq _0807A046
_0807A028:
adds r4, #1
adds r0, r5, #0
mov r1, sp
bl sub_08004202
adds r2, r0, #0
lsrs r0, r2, #1
adds r0, r6, r0
ldrb r1, [r0]
cmp r1, #0xe
bls _0807A046
cmp r1, #0xf
bls _0807A028
cmp r1, #0x1d
bne _0807A014
_0807A046:
adds r0, r4, #0
add sp, #4
pop {r4, r5, r6, pc}
.align 2, 0
_0807A04C: .4byte gUnk_080082DC
.syntax divided
@@ -0,0 +1,66 @@
.syntax unified
push {r4, r5, lr}
adds r3, r0, #0
movs r2, #0x16
ldr r0, _0807A0AC @ =gPlayerState
ldrb r0, [r0, #0xf]
cmp r0, #0
beq _0807A0B0
movs r2, #0x1b
cmp r0, #0x78
bls _0807A104
movs r2, #0x1a
b _0807A104
.align 2, 0
_0807A0AC: .4byte gPlayerState
_0807A0B0:
ldr r0, _0807A0F0 @ =gSave
adds r1, r0, #0
adds r1, #0xb2
ldrb r1, [r1]
adds r5, r0, #0
cmp r1, #0
beq _0807A104
movs r4, #1
cmp r3, #0
bne _0807A0D6
adds r0, #0xc4
ldrh r1, [r0]
cmp r1, #0xb3
bhi _0807A0D6
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0807A0D6
movs r4, #0
_0807A0D6:
cmp r4, #0
beq _0807A104
adds r0, r5, #0
adds r0, #0xb2
ldrb r0, [r0]
cmp r0, #0x30
beq _0807A102
cmp r0, #0x30
bgt _0807A0F4
cmp r0, #0x2f
beq _0807A0FA
b _0807A102
.align 2, 0
_0807A0F0: .4byte gSave
_0807A0F4:
cmp r0, #0x31
beq _0807A0FE
b _0807A102
_0807A0FA:
movs r2, #0x18
b _0807A104
_0807A0FE:
movs r2, #0x17
b _0807A104
_0807A102:
movs r2, #0x19
_0807A104:
adds r0, r2, #0
pop {r4, r5, pc}
.syntax divided
@@ -0,0 +1,257 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
adds r4, r0, #0
ldr r0, _0807A364 @ =gRoomControls
mov r8, r0
ldrb r0, [r0, #4]
cmp r0, #8
bne _0807A312
b _0807A4F2
_0807A312:
bl sub_08079778
orrs r0, r4
cmp r0, #0
bne _0807A31E
b _0807A4F2
_0807A31E:
ldr r7, _0807A368 @ =gPlayerEntity
ldrb r1, [r7, #0x14]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0807A36C
movs r1, #0x2e
ldrsh r2, [r7, r1]
mov r6, r8
ldrh r0, [r6, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r3, #0x3f
ands r2, r3
movs r0, #0x32
ldrsh r1, [r7, r0]
ldr r0, [r7, #0x48]
ldrb r5, [r0, #5]
adds r0, r1, r5
ldrh r4, [r6, #8]
subs r0, r0, r4
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r0, r2
lsls r7, r0, #1
subs r1, r1, r5
subs r1, r1, r4
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r2, r1
lsls r6, r2, #1
b _0807A3A2
.align 2, 0
_0807A364: .4byte gRoomControls
_0807A368: .4byte gPlayerEntity
_0807A36C:
movs r1, #0x2e
ldrsh r3, [r7, r1]
ldr r0, [r7, #0x48]
ldrb r6, [r0, #2]
adds r1, r3, r6
mov r2, r8
ldrh r5, [r2, #6]
subs r1, r1, r5
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r2, #0x32
ldrsh r0, [r7, r2]
mov r7, r8
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r1, r0
lsls r7, r1, #1
subs r3, r3, r6
subs r3, r3, r5
asrs r3, r3, #4
ands r3, r4
orrs r3, r0
lsls r6, r3, #1
_0807A3A2:
movs r0, #0
mov sb, r0
ldr r1, _0807A3F4 @ =gPlayerEntity
mov sl, r1
_0807A3AA:
movs r2, #0
mov r8, r2
mov r0, sl
mov r1, sp
adds r2, r7, #0
bl sub_08004202
adds r7, r0, #0
lsrs r4, r7, #1
adds r0, r4, #0
movs r1, #1
bl sub_080002E0
cmp r0, #0
beq _0807A3FC
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
mov r1, sl
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002C8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r2, sl
ldrb r1, [r2, #0x14]
lsrs r1, r1, #1
lsls r1, r1, #2
ldr r2, _0807A3F8 @ =gUnk_0811C1D8
adds r1, r1, r2
ldr r1, [r1]
bl sub_08007DD6
cmp r0, #0
beq _0807A468
b _0807A400
.align 2, 0
_0807A3F4: .4byte gPlayerEntity
_0807A3F8: .4byte gUnk_0811C1D8
_0807A3FC:
movs r0, #1
mov r8, r0
_0807A400:
ldr r5, _0807A444 @ =gPlayerEntity
adds r0, r5, #0
mov r1, sp
adds r2, r6, #0
bl sub_08004202
adds r6, r0, #0
lsrs r4, r6, #1
adds r0, r4, #0
movs r1, #1
bl sub_080002E0
cmp r0, #0
beq _0807A44C
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002C8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r5, #0x14]
lsrs r1, r1, #1
lsls r1, r1, #2
ldr r2, _0807A448 @ =gUnk_0811C1D8
adds r1, r1, r2
ldr r1, [r1]
bl sub_08007DD6
cmp r0, #0
beq _0807A468
b _0807A450
.align 2, 0
_0807A444: .4byte gPlayerEntity
_0807A448: .4byte gUnk_0811C1D8
_0807A44C:
movs r0, #1
add r8, r0
_0807A450:
mov r1, r8
cmp r1, #2
bne _0807A45E
mov r2, sb
cmp r2, #0
bne _0807A46E
b _0807A4F2
_0807A45E:
movs r0, #1
add sb, r0
mov r1, sb
cmp r1, #1
bls _0807A3AA
_0807A468:
mov r2, sb
cmp r2, #0
beq _0807A4F2
_0807A46E:
bl AreaIsDungeon
cmp r0, #0
beq _0807A4B0
ldr r4, _0807A4AC @ =gPlayerEntity
adds r0, r4, #0
mov r1, sp
adds r2, r7, #0
bl sub_08004202
adds r7, r0, #0
lsrs r0, r7, #1
movs r1, #2
bl sub_080002E0
cmp r0, #0
bne _0807A4F2
adds r0, r4, #0
mov r1, sp
adds r2, r6, #0
bl sub_08004202
adds r6, r0, #0
lsrs r0, r6, #1
movs r1, #2
_0807A4A0:
bl sub_080002E0
cmp r0, #0
beq _0807A4EC
b _0807A4F2
.align 2, 0
_0807A4AC: .4byte gPlayerEntity
_0807A4B0:
mov r0, sb
cmp r0, #2
bne _0807A4C2
ldr r0, _0807A4E8 @ =gPlayerEntity
mov r1, sp
adds r2, r7, #0
bl sub_08004202
adds r7, r0, #0
_0807A4C2:
lsrs r0, r7, #1
movs r1, #1
bl sub_080002E0
cmp r0, #0
bne _0807A4F2
mov r1, sb
cmp r1, #2
bne _0807A4E0
ldr r0, _0807A4E8 @ =gPlayerEntity
mov r1, sp
adds r2, r6, #0
bl sub_08004202
adds r6, r0, #0
_0807A4E0:
lsrs r0, r6, #1
movs r1, #1
b _0807A4A0
.align 2, 0
_0807A4E8: .4byte gPlayerEntity
_0807A4EC:
mov r0, sb
adds r0, #1
b _0807A4F4
_0807A4F2:
movs r0, #0
_0807A4F4:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.syntax divided
@@ -0,0 +1,103 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r6, _0807A518 @ =gPlayerEntity
ldrb r0, [r6, #0x14]
lsrs r0, r0, #1
cmp r0, #1
beq _0807A574
cmp r0, #1
bgt _0807A51C
cmp r0, #0
beq _0807A526
b _0807A5B4
.align 2, 0
_0807A518: .4byte gPlayerEntity
_0807A51C:
cmp r0, #2
beq _0807A554
cmp r0, #3
beq _0807A580
b _0807A5B4
_0807A526:
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r5, _0807A550 @ =gRoomControls
ldrh r1, [r5, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r4, #0x3f
ands r0, r4
movs r2, #0x32
ldrsh r1, [r6, r2]
ldr r3, [r6, #0x48]
ldrb r2, [r3, #5]
subs r1, r1, r2
movs r2, #1
ldrsb r2, [r3, r2]
adds r1, r1, r2
ldrh r2, [r5, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r4
b _0807A5AA
.align 2, 0
_0807A550: .4byte gRoomControls
_0807A554:
movs r5, #0x2e
ldrsh r0, [r6, r5]
ldr r4, _0807A570 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
ldr r2, [r6, #0x48]
movs r5, #0x32
ldrsh r1, [r6, r5]
ldrb r5, [r2, #5]
adds r1, r1, r5
b _0807A59A
.align 2, 0
_0807A570: .4byte gRoomControls
_0807A574:
ldr r2, [r6, #0x48]
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldrb r5, [r2, #2]
adds r0, r0, r5
b _0807A58A
_0807A580:
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r2, [r6, #0x48]
ldrb r1, [r2, #2]
subs r0, r0, r1
_0807A58A:
ldr r4, _0807A5B0 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r6, r5]
_0807A59A:
ldrb r2, [r2, #1]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
adds r1, r1, r2
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
_0807A5AA:
lsls r1, r1, #6
orrs r0, r1
b _0807A5B6
.align 2, 0
_0807A5B0: .4byte gRoomControls
_0807A5B4:
movs r0, #0
_0807A5B6:
pop {r4, r5, r6, pc}
.syntax divided
@@ -0,0 +1,204 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
ldr r2, _0807A5F8 @ =gPlayerState
ldrb r3, [r2, #2]
movs r4, #0x80
adds r0, r4, #0
ands r0, r3
cmp r0, #0
beq _0807A5D2
b _0807A736
_0807A5D2:
ldr r1, [r2, #0x30]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0807A5DE
b _0807A736
_0807A5DE:
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _0807A5EA
b _0807A736
_0807A5EA:
adds r0, r1, #0
ands r0, r4
cmp r0, #0
beq _0807A600
ldr r7, _0807A5FC @ =gUnk_0800833C
b _0807A63A
.align 2, 0
_0807A5F8: .4byte gPlayerState
_0807A5FC: .4byte gUnk_0800833C
_0807A600:
movs r0, #0x80
lsls r0, r0, #0x11
ands r1, r0
cmp r1, #0
bne _0807A60E
cmp r3, #0
beq _0807A618
_0807A60E:
ldr r7, _0807A614 @ =gUnk_0800845C
b _0807A63A
.align 2, 0
_0807A614: .4byte gUnk_0800845C
_0807A618:
ldrb r0, [r2, #5]
cmp r0, #0
bne _0807A624
ldrb r0, [r2, #0x1c]
cmp r0, #0
beq _0807A62C
_0807A624:
ldr r7, _0807A628 @ =gUnk_080084BC
b _0807A63A
.align 2, 0
_0807A628: .4byte gUnk_080084BC
_0807A62C:
adds r0, r2, #0
adds r0, #0xaa
ldrb r0, [r0]
ldr r7, _0807A740 @ =gUnk_080082DC
cmp r0, #0
beq _0807A63A
ldr r7, _0807A744 @ =gUnk_0800851C
_0807A63A:
mov r0, sb
cmp r0, #0
beq _0807A6B8
cmp r0, #0x10
beq _0807A6B8
ldr r6, _0807A748 @ =gPlayerEntity
ldr r2, [r6, #0x48]
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldrb r3, [r2, #2]
adds r0, r0, r3
movs r1, #0
ldrsb r1, [r2, r1]
adds r0, r0, r1
ldr r1, _0807A74C @ =gRoomControls
mov r8, r1
ldrh r1, [r1, #6]
subs r5, r0, r1
movs r3, #0x32
ldrsh r0, [r6, r3]
movs r1, #1
ldrsb r1, [r2, r1]
adds r0, r0, r1
mov r2, r8
ldrh r1, [r2, #8]
subs r4, r0, r1
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A688
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #1
bl sub_0807A750
_0807A688:
movs r3, #0x2e
ldrsh r1, [r6, r3]
ldr r2, [r6, #0x48]
ldrb r0, [r2, #2]
subs r1, r1, r0
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov r2, r8
ldrh r0, [r2, #6]
subs r5, r1, r0
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A6B8
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #3
bl sub_0807A750
_0807A6B8:
mov r3, sb
cmp r3, #8
beq _0807A736
cmp r3, #0x18
beq _0807A736
ldr r6, _0807A748 @ =gPlayerEntity
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, [r6, #0x48]
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
ldr r3, _0807A74C @ =gRoomControls
mov r8, r3
ldrh r0, [r3, #6]
subs r5, r1, r0
movs r1, #0x32
ldrsh r0, [r6, r1]
ldrb r3, [r2, #5]
adds r0, r0, r3
movs r1, #1
ldrsb r1, [r2, r1]
adds r0, r0, r1
mov r2, r8
ldrh r1, [r2, #8]
subs r4, r0, r1
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A706
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #2
bl sub_0807A750
_0807A706:
movs r3, #0x32
ldrsh r1, [r6, r3]
ldr r2, [r6, #0x48]
ldrb r0, [r2, #5]
subs r1, r1, r0
movs r0, #1
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov r2, r8
ldrh r0, [r2, #8]
subs r4, r1, r0
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A736
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #0
bl sub_0807A750
_0807A736:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807A740: .4byte gUnk_080082DC
_0807A744: .4byte gUnk_0800851C
_0807A748: .4byte gPlayerEntity
_0807A74C: .4byte gRoomControls
.syntax divided
@@ -0,0 +1,184 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
adds r6, r1, #0
mov r8, r2
adds r5, r3, #0
movs r0, #1
ands r0, r5
cmp r0, #0
bne _0807A76C
movs r4, #0xf
ands r4, r6
b _0807A770
_0807A76C:
movs r4, #0xf
ands r4, r7
_0807A770:
cmp r4, #0
bne _0807A776
b _0807A88E
_0807A776:
cmp r4, #0xf
bne _0807A77C
b _0807A88E
_0807A77C:
lsrs r0, r7, #4
movs r2, #0x3f
ands r0, r2
lsrs r1, r6, #4
ands r1, r2
lsls r1, r1, #6
orrs r0, r1
ldr r1, _0807A7A8 @ =gPlayerEntity
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002E0
adds r1, r0, #0
cmp r1, #0xf
bls _0807A7AE
cmp r1, #0xff
beq _0807A7AC
mov r2, r8
adds r0, r1, r2
subs r0, #0x10
ldrb r1, [r0]
b _0807A7AE
.align 2, 0
_0807A7A8: .4byte gPlayerEntity
_0807A7AC:
movs r1, #0xf
_0807A7AE:
ldr r0, _0807A7D8 @ =gUnk_0800823C
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
movs r0, #1
ands r0, r5
cmp r0, #0
bne _0807A824
movs r0, #0xf
ands r0, r7
movs r2, #0x80
lsls r2, r2, #8
asrs r2, r0
cmp r5, #0
bne _0807A7F4
ldr r3, _0807A7DC @ =gPlayerEntity
cmp r4, #0xe
bgt _0807A7F0
lsls r0, r4, #1
adds r1, r0, r1
b _0807A7E8
.align 2, 0
_0807A7D8: .4byte gUnk_0800823C
_0807A7DC: .4byte gPlayerEntity
_0807A7E0:
adds r1, #2
adds r4, #1
cmp r4, #0xe
bgt _0807A7F0
_0807A7E8:
ldrh r0, [r1]
ands r0, r2
cmp r0, #0
bne _0807A7E0
_0807A7F0:
subs r4, #1
b _0807A816
_0807A7F4:
ldr r3, _0807A800 @ =gPlayerEntity
cmp r4, #0
ble _0807A814
lsls r0, r4, #1
adds r1, r0, r1
b _0807A80C
.align 2, 0
_0807A800: .4byte gPlayerEntity
_0807A804:
subs r1, #2
subs r4, #1
cmp r4, #0
ble _0807A814
_0807A80C:
ldrh r0, [r1]
ands r0, r2
cmp r0, #0
bne _0807A804
_0807A814:
adds r4, #1
_0807A816:
movs r0, #0xf
ands r0, r6
subs r0, r4, r0
ldrh r1, [r3, #0x32]
adds r0, r0, r1
strh r0, [r3, #0x32]
b _0807A88E
_0807A824:
movs r3, #0xf
ands r6, r3
lsls r0, r6, #1
adds r0, r0, r1
ldrh r2, [r0]
cmp r5, #1
bne _0807A85C
subs r0, r3, r4
lsrs r2, r0
ldr r3, _0807A858 @ =gPlayerEntity
cmp r4, #0
ble _0807A854
ands r5, r2
cmp r5, #0
beq _0807A854
movs r1, #1
_0807A844:
lsrs r2, r2, #1
subs r4, #1
cmp r4, #0
ble _0807A854
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0807A844
_0807A854:
adds r4, #1
b _0807A882
.align 2, 0
_0807A858: .4byte gPlayerEntity
_0807A85C:
lsls r2, r4
ldr r3, _0807A86C @ =gPlayerEntity
cmp r4, #0xe
bgt _0807A880
movs r1, #0x80
lsls r1, r1, #8
b _0807A878
.align 2, 0
_0807A86C: .4byte gPlayerEntity
_0807A870:
lsls r2, r2, #1
adds r4, #1
cmp r4, #0xe
bgt _0807A880
_0807A878:
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0807A870
_0807A880:
subs r4, #1
_0807A882:
movs r0, #0xf
ands r0, r7
subs r0, r4, r0
ldrh r2, [r3, #0x2e]
adds r0, r0, r2
strh r0, [r3, #0x2e]
_0807A88E:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.syntax divided
@@ -0,0 +1,41 @@
.syntax unified
push {lr}
ldrb r1, [r0, #0x15]
cmp r1, #8
beq _0807A8BA
cmp r1, #8
bgt _0807A8A6
cmp r1, #0
beq _0807A8B0
b _0807A8C8
_0807A8A6:
cmp r1, #0x10
beq _0807A8B6
cmp r1, #0x18
beq _0807A8C0
b _0807A8C8
_0807A8B0:
movs r2, #8
rsbs r2, r2, #0
b _0807A8CA
_0807A8B6:
movs r2, #5
b _0807A8CA
_0807A8BA:
movs r2, #0
movs r1, #8
b _0807A8CC
_0807A8C0:
movs r2, #0
movs r1, #8
rsbs r1, r1, #0
b _0807A8CC
_0807A8C8:
movs r2, #0
_0807A8CA:
movs r1, #0
_0807A8CC:
bl sub_080002B4
pop {pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,209 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r5, r0, #0
ldr r0, _0807AA5C @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0807A8F0
b _0807A9F6
_0807A8F0:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r7, _0807AA60 @ =gRoomControls
ldrh r1, [r7, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r6, #0x3f
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
adds r2, #1
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
ldr r1, _0807AA64 @ =gPlayerEntity
adds r1, #0x38
mov sb, r1
ldrb r1, [r1]
bl sub_080002EC
adds r4, r0, #0
movs r0, #0x20
mov r8, r0
ands r4, r0
cmp r4, #0
beq _0807A94E
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldrh r0, [r7, #6]
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
adds r2, #1
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807A94E:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldrh r1, [r7, #6]
subs r1, #2
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
mov r2, sb
ldrb r1, [r2]
bl sub_080002EC
adds r4, r0, #0
mov r0, r8
ands r4, r0
cmp r4, #0
beq _0807A9A2
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldrh r0, [r7, #6]
subs r0, #2
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807A9A2:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldrh r1, [r7, #6]
adds r1, #2
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
mov r2, sb
ldrb r1, [r2]
bl sub_080002EC
adds r4, r0, #0
mov r0, r8
ands r4, r0
cmp r4, #0
beq _0807A9F6
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldrh r0, [r7, #6]
adds r0, #2
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807A9F6:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r7, _0807AA60 @ =gRoomControls
ldrh r1, [r7, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r6, #0x3f
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
ldr r1, _0807AA64 @ =gPlayerEntity
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002EC
adds r4, r0, #0
movs r0, #0x20
ands r0, r4
cmp r0, #0
beq _0807AA4C
movs r0, #0x2e
ldrsh r1, [r5, r0]
ldrh r0, [r7, #6]
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807AA4C:
movs r0, #2
ands r0, r4
cmp r0, #0
beq _0807AA68
adds r0, r5, #0
bl sub_0807AABC
b _0807AA76
.align 2, 0
_0807AA5C: .4byte gPlayerState
_0807AA60: .4byte gRoomControls
_0807AA64: .4byte gPlayerEntity
_0807AA68:
movs r0, #4
ands r0, r4
cmp r0, #0
beq _0807AA76
adds r0, r5, #0
bl sub_0807AA80
_0807AA76:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,42 @@
.syntax unified
push {r4, lr}
adds r3, r0, #0
adds r2, r1, #0
movs r1, #0x36
ldrsh r0, [r3, r1]
cmp r0, #0
bne _0807AB3C
adds r0, r3, #0
adds r0, #0x38
ldrb r0, [r0]
lsls r0, r0, #0x1e
orrs r2, r0
movs r3, #0
ldr r0, _0807AB40 @ =gPlayerState
ldr r1, [r0, #0x40]
adds r4, r0, #0
cmp r1, r2
beq _0807AB32
adds r1, r4, #0
adds r1, #0x40
_0807AB20:
ldr r0, [r1]
stm r1!, {r2}
adds r2, r0, #0
adds r3, #1
cmp r3, #0xe
bhi _0807AB32
ldr r0, [r1]
cmp r0, r2
bne _0807AB20
_0807AB32:
lsls r0, r3, #2
adds r1, r4, #0
adds r1, #0x40
adds r0, r0, r1
str r2, [r0]
_0807AB3C:
pop {r4, pc}
.align 2, 0
_0807AB40: .4byte gPlayerState
.syntax divided
@@ -0,0 +1,129 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r6, r0, #0
adds r7, r1, #0
mov r8, r2
movs r1, #0x2e
ldrsh r0, [r6, r1]
adds r0, r0, r7
ldr r2, _0807ABF0 @ =gRoomControls
mov sb, r2
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
mov sl, r3
ands r0, r3
movs r5, #0x32
ldrsh r1, [r6, r5]
add r1, r8
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
adds r1, r6, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
movs r1, #0xb
bl sub_0806FC50
adds r5, r0, #0
cmp r5, #0
beq _0807AC44
ldrh r0, [r5, #6]
cmp r0, #0x76
bne _0807ABF4
movs r0, #0x2a
movs r1, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0807AC44
lsls r2, r7, #0x10
mov r0, r8
lsls r3, r0, #0x10
adds r0, r6, #0
adds r1, r4, #0
bl PositionRelative
adds r0, r4, #0
bl sub_08004168
ldrh r0, [r5, #6]
movs r2, #0x2e
ldrsh r1, [r4, r2]
mov r3, sb
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
mov r5, sl
ands r1, r5
movs r3, #0x32
ldrsh r2, [r4, r3]
mov r5, sb
ldrh r3, [r5, #8]
subs r2, r2, r3
asrs r2, r2, #4
mov r3, sl
ands r2, r3
lsls r2, r2, #6
orrs r1, r2
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0807B7D8
b _0807AC44
.align 2, 0
_0807ABF0: .4byte gRoomControls
_0807ABF4:
movs r0, #0x2a
movs r1, #2
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0807AC44
lsls r2, r7, #0x10
mov r0, r8
lsls r3, r0, #0x10
adds r0, r6, #0
adds r1, r4, #0
bl PositionRelative
str r5, [r4, #0x54]
ldr r0, _0807AC50 @ =0x0000404F
movs r2, #0x2e
ldrsh r1, [r4, r2]
mov r3, sb
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
mov r5, sl
ands r1, r5
movs r3, #0x32
ldrsh r2, [r4, r3]
mov r5, sb
ldrh r3, [r5, #8]
subs r2, r2, r3
asrs r2, r2, #4
mov r3, sl
ands r2, r3
lsls r2, r2, #6
orrs r1, r2
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
_0807AC44:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807AC50: .4byte 0x0000404F
.syntax divided
@@ -0,0 +1,67 @@
.syntax unified
push {lr}
adds r2, r0, #0
ldr r0, _0807AC74 @ =gPlayerState
ldrb r1, [r0, #0x11]
adds r3, r0, #0
cmp r1, #0
beq _0807ACC6
ldrb r0, [r3, #0x12]
cmp r0, #0x2a
beq _0807ACA8
cmp r0, #0x2a
bgt _0807AC78
cmp r0, #0x1e
beq _0807AC82
b _0807ACC6
.align 2, 0
_0807AC74: .4byte gPlayerState
_0807AC78:
cmp r0, #0x2b
beq _0807AC90
cmp r0, #0x2c
beq _0807ACB6
b _0807ACC6
_0807AC82:
ldrh r0, [r2, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r0
movs r0, #8
orrs r1, r0
strh r1, [r2, #0x2e]
_0807AC90:
movs r0, #0
movs r1, #0x1d
strb r1, [r2, #0xc]
strb r0, [r2, #0xd]
strh r0, [r2, #0x30]
ldr r0, _0807ACA4 @ =0x000002CF
strh r0, [r3, #8]
movs r0, #1
b _0807ACC8
.align 2, 0
_0807ACA4: .4byte 0x000002CF
_0807ACA8:
ldrh r0, [r2, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r0
movs r0, #8
orrs r1, r0
strh r1, [r2, #0x2e]
_0807ACB6:
movs r0, #0
movs r1, #0x1d
strb r1, [r2, #0xc]
movs r1, #1
strb r1, [r2, #0xd]
strh r0, [r2, #0x30]
movs r0, #1
b _0807ACC8
_0807ACC6:
movs r0, #0
_0807ACC8:
pop {pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,121 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x42
movs r0, #0
strb r0, [r1]
movs r0, #0x72
bl GetInventoryValue
movs r1, #0xc0
cmp r0, #1
bne _0807ACF4
adds r1, #0x40
_0807ACF4:
movs r2, #0x24
ldrsh r0, [r4, r2]
cmp r1, r0
ble _0807AD18
strh r1, [r4, #0x24]
ldr r0, _0807AD14 @ =gPlayerState
ldrb r1, [r0, #0xd]
strb r1, [r4, #0x15]
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _0807ADB4
b _0807AD1E
.align 2, 0
_0807AD14: .4byte gPlayerState
_0807AD18:
ldrh r0, [r4, #0x24]
subs r0, #4
strh r0, [r4, #0x24]
_0807AD1E:
ldr r2, _0807AD3C @ =gPlayerState
adds r1, r2, #0
adds r1, #0x89
ldrb r0, [r1]
cmp r0, #0
bne _0807AD40
adds r0, r4, #0
bl sub_0807ADB8
cmp r0, #0
bne _0807AD74
adds r0, r4, #0
bl sub_0807AE20
b _0807AD74
.align 2, 0
_0807AD3C: .4byte gPlayerState
_0807AD40:
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
beq _0807AD52
adds r0, r4, #0
bl sub_0807ADB8
b _0807AD74
_0807AD52:
adds r2, #0x26
ldrb r1, [r2]
movs r0, #0x7f
ands r0, r1
strb r0, [r2]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
ldr r0, _0807ADA0 @ =0x00000163
bl SoundReq
_0807AD74:
ldr r0, _0807ADA4 @ =gPlayerState
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0807ADA8
adds r2, r4, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #4
orrs r0, r1
strb r0, [r2]
subs r2, #0x13
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
b _0807ADB2
.align 2, 0
_0807ADA0: .4byte 0x00000163
_0807ADA4: .4byte gPlayerState
_0807ADA8:
adds r2, r4, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0xfb
ands r0, r1
_0807ADB2:
strb r0, [r2]
_0807ADB4:
pop {r4, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,56 @@
.syntax unified
push {r4, lr}
adds r2, r0, #0
ldr r3, _0807ADF4 @ =gPlayerState
adds r0, r3, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0807AE1C
movs r0, #0x26
adds r0, r0, r3
mov ip, r0
ldrb r0, [r0]
movs r1, #0x80
eors r0, r1
mov r1, ip
strb r0, [r1]
movs r1, #0x80
ands r0, r1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
beq _0807ADF8
adds r1, r3, #0
adds r1, #0x89
movs r0, #0x78
strb r0, [r1]
b _0807AE0E
.align 2, 0
_0807ADF4: .4byte gPlayerState
_0807ADF8:
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
adds r0, r3, #0
adds r0, #0x89
strb r4, [r0]
_0807AE0E:
ldr r0, _0807AE18 @ =0x00000163
bl SoundReq
movs r0, #1
b _0807AE1E
.align 2, 0
_0807AE18: .4byte 0x00000163
_0807AE1C:
movs r0, #0
_0807AE1E:
pop {r4, pc}
.syntax divided
@@ -0,0 +1,98 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0x17
bne _0807AE32
ldr r0, _0807AE58 @ =gPlayerState
ldrb r0, [r0, #0xa]
cmp r0, #0
bne _0807AE74
_0807AE32:
ldr r0, _0807AE5C @ =gRoomControls
ldrh r0, [r0]
cmp r0, #0
bne _0807AE74
ldr r0, _0807AE58 @ =gPlayerState
adds r0, #0x92
ldrh r1, [r0]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0807AE74
movs r0, #0x72
bl GetInventoryValue
cmp r0, #1
bne _0807AE60
movs r0, #0xe0
lsls r0, r0, #1
b _0807AE64
.align 2, 0
_0807AE58: .4byte gPlayerState
_0807AE5C: .4byte gRoomControls
_0807AE60:
movs r0, #0xc0
lsls r0, r0, #1
_0807AE64:
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_08079520
movs r0, #0xb1
lsls r0, r0, #1
bl SoundReq
_0807AE74:
movs r0, #0x10
bl sub_080793E4
cmp r0, #0
beq _0807AEA8
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0x14
strb r0, [r1]
adds r1, #5
movs r0, #4
strb r0, [r1]
ldrb r0, [r4, #0x14]
lsls r0, r0, #2
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
movs r0, #2
rsbs r0, r0, #0
bl ModHealth
movs r0, #0x7a
bl SoundReq
_0807AEA8:
ldrb r1, [r4, #0x15]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0807AECC
ldr r0, _0807AEC8 @ =gRoomTransition
ldr r0, [r0]
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _0807AEDE
adds r0, r4, #0
movs r1, #4
bl CreateRandomWaterTrace
b _0807AEDE
.align 2, 0
_0807AEC8: .4byte gRoomTransition
_0807AECC:
ldr r0, _0807AEE0 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _0807AEDE
adds r0, r4, #0
bl CreateWaterTrace
_0807AEDE:
pop {r4, pc}
.align 2, 0
_0807AEE0: .4byte gRoomTransition
.syntax divided
@@ -0,0 +1,108 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r7, r1, #0
movs r1, #2
bl sub_0807B464
cmp r0, #0
beq _0807B558
adds r0, r6, #0
subs r0, #0x40
movs r1, #2
bl sub_0807B464
adds r5, r0, #0
adds r0, r6, #1
movs r1, #2
bl sub_0807B464
lsls r0, r0, #1
orrs r5, r0
adds r4, r6, #0
adds r4, #0x40
adds r0, r4, #0
movs r1, #2
bl sub_0807B464
lsls r0, r0, #2
orrs r5, r0
subs r0, r6, #1
movs r1, #2
bl sub_0807B464
lsls r0, r0, #3
orrs r5, r0
adds r0, r6, #0
adds r0, #0x41
movs r1, #1
bl sub_0807B464
lsls r0, r0, #1
orrs r5, r0
adds r0, r6, #0
adds r0, #0x3f
movs r1, #1
bl sub_0807B464
lsls r0, r0, #3
orrs r5, r0
adds r0, r4, #0
movs r1, #2
bl GetTileType
cmp r0, #0
beq _0807B4FA
adds r0, r6, #0
adds r0, #0x80
movs r1, #1
bl sub_0807B464
lsls r0, r0, #2
orrs r5, r0
_0807B4FA:
ldr r0, _0807B514 @ =gUnk_0811C2CC
lsls r1, r5, #1
adds r1, r1, r0
ldrh r4, [r1]
adds r0, r6, #0
movs r1, #2
bl GetTileType
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r2, _0807B518 @ =gUnk_0811C2EC
movs r3, #0
b _0807B51E
.align 2, 0
_0807B514: .4byte gUnk_0811C2CC
_0807B518: .4byte gUnk_0811C2EC
_0807B51C:
adds r2, #6
_0807B51E:
ldrh r1, [r2]
cmp r1, #0
beq _0807B52A
cmp r0, r1
bne _0807B51C
ldrh r3, [r2, #2]
_0807B52A:
movs r0, #1
lsls r0, r7
bics r3, r0
ldr r2, _0807B534 @ =gUnk_0811C2EC
b _0807B53A
.align 2, 0
_0807B534: .4byte gUnk_0811C2EC
_0807B538:
adds r2, #6
_0807B53A:
ldrh r0, [r2]
cmp r0, #0
beq _0807B54E
ldrh r0, [r2, #2]
cmp r3, r0
bne _0807B538
ldrh r0, [r2, #4]
cmp r5, r0
bne _0807B538
ldrh r4, [r2]
_0807B54E:
adds r0, r4, #0
adds r1, r6, #0
movs r2, #2
bl SetTileType
_0807B558:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,39 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r6, r1, #0
adds r7, r2, #0
bl sub_0807B464
cmp r0, #0
beq _0807B5AC
adds r0, r5, #0
subs r0, #0x40
adds r1, r6, #0
bl sub_0807B464
adds r4, r0, #0
adds r0, r5, #1
adds r1, r6, #0
bl sub_0807B464
lsls r0, r0, #1
orrs r4, r0
adds r0, r5, #0
adds r0, #0x40
adds r1, r6, #0
bl sub_0807B464
lsls r0, r0, #2
orrs r4, r0
subs r0, r5, #1
adds r1, r6, #0
bl sub_0807B464
lsls r0, r0, #3
orrs r0, r4
lsls r0, r0, #1
adds r0, r0, r7
ldrh r0, [r0]
adds r1, r5, #0
adds r2, r6, #0
bl SetTileType
_0807B5AC:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,40 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r3, r0, #0
movs r1, #0x2e
ldrsh r0, [r3, r1]
ldr r6, _0807B5F8 @ =gUnk_0811C456
ldrb r1, [r3, #0x14]
movs r2, #6
ands r2, r1
lsls r1, r2, #1
adds r1, r1, r6
movs r4, #0
ldrsh r1, [r1, r4]
adds r0, r0, r1
ldr r5, _0807B5FC @ =gRoomControls
ldrh r1, [r5, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r4, #0x3f
ands r0, r4
movs r7, #0x32
ldrsh r1, [r3, r7]
adds r2, #1
lsls r2, r2, #1
adds r2, r2, r6
movs r3, #0
ldrsh r2, [r2, r3]
adds r1, r1, r2
ldrh r2, [r5, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r4
lsls r1, r1, #6
orrs r0, r1
bl sub_0807B600
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807B5F8: .4byte gUnk_0811C456
_0807B5FC: .4byte gRoomControls
.syntax divided
@@ -0,0 +1,173 @@
.syntax unified
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r5, #0
subs r6, #0x40
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
movs r1, #1
bl sub_080002C8
cmp r0, #0x56
beq _0807B61A
movs r0, #0
b _0807B76E
_0807B61A:
adds r0, r5, #0
movs r1, #1
bl GetTileType
adds r1, r0, #0
ldr r0, _0807B634 @ =0x0000026A
cmp r1, r0
bne _0807B638
adds r0, r5, #0
bl sub_0807B820
b _0807B76C
.align 2, 0
_0807B634: .4byte 0x0000026A
_0807B638:
ldr r0, _0807B648 @ =0x00000267
cmp r1, r0
bne _0807B64C
adds r0, r5, #0
adds r0, #0x40
bl sub_0807B820
b _0807B76C
.align 2, 0
_0807B648: .4byte 0x00000267
_0807B64C:
ldr r0, _0807B65C @ =0x0000027A
cmp r1, r0
bne _0807B660
adds r0, r5, #0
bl sub_0807B8A8
b _0807B76C
.align 2, 0
_0807B65C: .4byte 0x0000027A
_0807B660:
ldr r0, _0807B670 @ =0x00000277
cmp r1, r0
bne _0807B674
adds r0, r5, #0
adds r0, #0x40
bl sub_0807B8A8
b _0807B76C
.align 2, 0
_0807B670: .4byte 0x00000277
_0807B674:
ldr r0, _0807B684 @ =0x0000028A
cmp r1, r0
bne _0807B688
adds r0, r5, #0
bl sub_0807B930
b _0807B76C
.align 2, 0
_0807B684: .4byte 0x0000028A
_0807B688:
ldr r0, _0807B698 @ =0x00000287
cmp r1, r0
bne _0807B69C
adds r0, r5, #0
adds r0, #0x40
bl sub_0807B930
b _0807B76C
.align 2, 0
_0807B698: .4byte 0x00000287
_0807B69C:
adds r0, r5, #0
movs r1, #2
bl GetTileType
cmp r0, #0
beq _0807B6EC
ldr r0, _0807B6E8 @ =0x000002F2
adds r1, r5, #0
movs r2, #1
bl SetTileType
adds r0, r6, #0
movs r1, #1
bl sub_080002E0
cmp r0, #3
bne _0807B6CA
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r6, #0
movs r2, #1
bl SetTileType
_0807B6CA:
adds r0, r5, #0
adds r0, #0x40
movs r1, #1
bl sub_080002E0
cmp r0, #3
bne _0807B6F8
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r5, #0
movs r2, #1
bl SetTileType
b _0807B6F8
.align 2, 0
_0807B6E8: .4byte 0x000002F2
_0807B6EC:
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r5, #0
movs r2, #1
bl SetTileType
_0807B6F8:
adds r0, r6, #0
movs r1, #2
bl sub_0807B464
cmp r0, #0
beq _0807B748
movs r0, #0
adds r1, r6, #0
movs r2, #2
bl SetTileType
adds r0, r6, #0
movs r1, #1
bl GetTileType
ldr r1, _0807B770 @ =0x000002F2
cmp r0, r1
bne _0807B728
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r6, #0
movs r2, #1
bl SetTileType
_0807B728:
adds r0, r5, #1
ldr r4, _0807B774 @ =gUnk_0811C2AC
movs r1, #1
adds r2, r4, #0
bl sub_0807B55C
subs r0, r5, #1
movs r1, #1
adds r2, r4, #0
bl sub_0807B55C
adds r0, r6, #0
movs r1, #1
adds r2, r4, #0
bl sub_0807B55C
_0807B748:
adds r0, r6, #1
movs r1, #3
bl sub_0807B480
subs r0, r6, #1
movs r1, #1
bl sub_0807B480
adds r0, r6, #0
adds r0, #0x40
movs r1, #0
bl sub_0807B480
adds r0, r6, #0
subs r0, #0x40
movs r1, #2
bl sub_0807B480
_0807B76C:
movs r0, #1
_0807B76E:
pop {r4, r5, r6, pc}
.align 2, 0
_0807B770: .4byte 0x000002F2
_0807B774: .4byte gUnk_0811C2AC
.syntax divided
@@ -0,0 +1,44 @@
.syntax unified
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
lsls r1, r6, #0x18
lsrs r1, r1, #0x18
bl sub_080002C8
cmp r0, #0xd
bne _0807B7D0
adds r0, r5, #0
subs r0, #0x40
adds r1, r6, #0
bl sub_0807B434
adds r4, r0, #0
adds r0, r5, #1
adds r1, r6, #0
bl sub_0807B434
lsls r0, r0, #1
orrs r4, r0
adds r0, r5, #0
adds r0, #0x40
adds r1, r6, #0
bl sub_0807B434
lsls r0, r0, #2
orrs r4, r0
subs r0, r5, #1
adds r1, r6, #0
bl sub_0807B434
lsls r0, r0, #3
orrs r0, r4
ldr r1, _0807B7D4 @ =gUnk_0811C466
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
adds r1, r5, #0
adds r2, r6, #0
bl SetTileType
_0807B7D0:
pop {r4, r5, r6, pc}
.align 2, 0
_0807B7D4: .4byte gUnk_0811C466
.syntax divided
@@ -0,0 +1,99 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
adds r4, r1, #0
adds r6, r2, #0
adds r0, r4, #0
adds r1, r6, #0
bl DeleteLoadedTileEntity
adds r0, r6, #0
bl GetLayerByIndex
adds r5, r0, #0
lsls r1, r4, #1
adds r0, r5, #4
adds r0, r0, r1
strh r7, [r0]
lsls r1, r7, #1
ldr r2, _0807BA24 @ =0x00005004
adds r0, r5, r2
adds r0, r0, r1
ldrh r2, [r0]
ldr r0, _0807BA28 @ =0x00002004
adds r1, r5, r0
adds r1, r1, r4
ldr r0, _0807BA2C @ =gUnk_080B3E80
adds r0, r2, r0
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _0807BA30 @ =0x0000B004
adds r1, r5, r0
adds r1, r1, r4
ldr r0, _0807BA34 @ =gUnk_080B37A0
adds r2, r2, r0
ldrb r0, [r2]
strb r0, [r1]
ldr r0, _0807BA38 @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0807BA78
movs r1, #0x3f
ands r1, r4
lsls r1, r1, #1
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r4
lsls r0, r0, #2
adds r1, r1, r0
cmp r6, #2
beq _0807BA40
lsls r1, r1, #1
ldr r0, _0807BA3C @ =gUnk_02019EE0
b _0807BA44
.align 2, 0
_0807BA24: .4byte 0x00005004
_0807BA28: .4byte 0x00002004
_0807BA2C: .4byte gUnk_080B3E80
_0807BA30: .4byte 0x0000B004
_0807BA34: .4byte gUnk_080B37A0
_0807BA38: .4byte gRoomControls
_0807BA3C: .4byte gUnk_02019EE0
_0807BA40:
lsls r1, r1, #1
ldr r0, _0807BA7C @ =gMapDataTopSpecial
_0807BA44:
adds r3, r1, r0
lsls r0, r7, #3
ldr r1, _0807BA80 @ =0x00007004
adds r0, r0, r1
adds r0, r5, r0
ldrh r1, [r0]
strh r1, [r3]
ldrh r1, [r0, #2]
strh r1, [r3, #2]
movs r1, #0x80
lsls r1, r1, #1
adds r2, r3, r1
ldrh r1, [r0, #4]
strh r1, [r2]
movs r2, #0x81
lsls r2, r2, #1
adds r1, r3, r2
ldrh r0, [r0, #6]
strh r0, [r1]
ldr r0, _0807BA84 @ =gRoomControls
ldrh r0, [r0]
cmp r0, #1
beq _0807BA78
ldr r1, _0807BA88 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807BA78:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BA7C: .4byte gMapDataTopSpecial
_0807BA80: .4byte 0x00007004
_0807BA84: .4byte gRoomControls
_0807BA88: .4byte gUpdateVisibleTiles
.syntax divided
@@ -0,0 +1,101 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r7, r1, #0
bl DeleteLoadedTileEntity
adds r0, r7, #0
bl GetLayerByIndex
adds r5, r0, #0
lsls r2, r4, #1
adds r1, r5, #4
adds r1, r1, r2
ldr r3, _0807BAFC @ =0x00003004
adds r0, r5, r3
adds r0, r0, r2
ldrh r6, [r0]
strh r6, [r1]
lsls r1, r6, #1
ldr r2, _0807BB00 @ =0x00005004
adds r0, r5, r2
adds r0, r0, r1
ldrh r2, [r0]
ldr r3, _0807BB04 @ =0x00002004
adds r1, r5, r3
adds r1, r1, r4
ldr r0, _0807BB08 @ =gUnk_080B3E80
adds r0, r2, r0
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _0807BB0C @ =0x0000B004
adds r1, r5, r0
adds r1, r1, r4
ldr r0, _0807BB10 @ =gUnk_080B37A0
adds r2, r2, r0
ldrb r0, [r2]
strb r0, [r1]
ldr r0, _0807BB14 @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0807BB54
movs r1, #0x3f
ands r1, r4
lsls r1, r1, #1
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r4
lsls r0, r0, #2
adds r1, r1, r0
cmp r7, #2
beq _0807BB1C
lsls r1, r1, #1
ldr r0, _0807BB18 @ =gUnk_02019EE0
b _0807BB20
.align 2, 0
_0807BAFC: .4byte 0x00003004
_0807BB00: .4byte 0x00005004
_0807BB04: .4byte 0x00002004
_0807BB08: .4byte gUnk_080B3E80
_0807BB0C: .4byte 0x0000B004
_0807BB10: .4byte gUnk_080B37A0
_0807BB14: .4byte gRoomControls
_0807BB18: .4byte gUnk_02019EE0
_0807BB1C:
lsls r1, r1, #1
ldr r0, _0807BB58 @ =gMapDataTopSpecial
_0807BB20:
adds r3, r1, r0
lsls r0, r6, #3
ldr r1, _0807BB5C @ =0x00007004
adds r0, r0, r1
adds r0, r5, r0
ldrh r1, [r0]
strh r1, [r3]
ldrh r1, [r0, #2]
strh r1, [r3, #2]
movs r1, #0x80
lsls r1, r1, #1
adds r2, r3, r1
ldrh r1, [r0, #4]
strh r1, [r2]
movs r2, #0x81
lsls r2, r2, #1
adds r1, r3, r2
ldrh r0, [r0, #6]
strh r0, [r1]
ldr r0, _0807BB60 @ =gRoomControls
ldrh r0, [r0]
cmp r0, #1
beq _0807BB54
ldr r1, _0807BB64 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807BB54:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BB58: .4byte gMapDataTopSpecial
_0807BB5C: .4byte 0x00007004
_0807BB60: .4byte gRoomControls
_0807BB64: .4byte gUpdateVisibleTiles
.syntax divided
@@ -0,0 +1,79 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r0, _0807BC28 @ =gMetatileTypesBottom
mov sl, r0
ldr r0, _0807BC2C @ =gMetatileTypesTop
mov sb, r0
ldr r5, _0807BC30 @ =0xFFFFB000
add r5, sl
ldr r4, _0807BC30 @ =0xFFFFB000
add r4, sb
ldr r2, _0807BC34 @ =0xFFFFD000
add r2, sl
ldr r1, _0807BC34 @ =0xFFFFD000
add r1, sb
movs r3, #0
ldr r0, _0807BC38 @ =0x00003FFF
mov r8, r0
ldr r0, _0807BC3C @ =gUnk_080B3E80
mov ip, r0
ldr r7, _0807BC40 @ =gUnk_080B79A7
ldr r6, _0807BC44 @ =0xFFFFC000
_0807BC14:
ldrh r0, [r5]
adds r5, #2
cmp r0, r8
bhi _0807BC48
lsls r0, r0, #1
add r0, sl
ldrh r0, [r0]
add r0, ip
b _0807BC4C
.align 2, 0
_0807BC28: .4byte gMetatileTypesBottom
_0807BC2C: .4byte gMetatileTypesTop
_0807BC30: .4byte 0xFFFFB000
_0807BC34: .4byte 0xFFFFD000
_0807BC38: .4byte 0x00003FFF
_0807BC3C: .4byte gUnk_080B3E80
_0807BC40: .4byte gUnk_080B79A7
_0807BC44: .4byte 0xFFFFC000
_0807BC48:
adds r0, r0, r6
adds r0, r0, r7
_0807BC4C:
ldrb r0, [r0]
strb r0, [r2]
adds r2, #1
ldrh r0, [r4]
adds r4, #2
cmp r0, r8
bhi _0807BC64
lsls r0, r0, #1
add r0, sb
ldrh r0, [r0]
add r0, ip
b _0807BC68
_0807BC64:
adds r0, r0, r6
adds r0, r0, r7
_0807BC68:
ldrb r0, [r0]
strb r0, [r1]
adds r1, #1
adds r3, #1
ldr r0, _0807BC80 @ =0x00000FFF
cmp r3, r0
bls _0807BC14
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BC80: .4byte 0x00000FFF
.syntax divided
@@ -0,0 +1,73 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r1, _0807BD04 @ =gRoomControls
ldrh r0, [r1, #0x1e]
lsrs r2, r0, #4
mov r8, r1
cmp r2, #0x40
bne _0807BC98
movs r2, #0x3f
_0807BC98:
ldr r1, _0807BD08 @ =gUnk_02027EB4
adds r3, r2, r1
adds r6, r1, #0
adds r6, #0x3f
ldr r0, _0807BD0C @ =gUnk_0200D654
adds r2, r2, r0
adds r5, r0, #0
adds r5, #0x3f
movs r4, #0
adds r7, r1, #0
mov ip, r0
movs r0, #0xff
_0807BCB0:
strb r0, [r3]
strb r0, [r6]
strb r0, [r2]
strb r0, [r5]
adds r3, #0x40
adds r6, #0x40
adds r2, #0x40
adds r5, #0x40
adds r4, #1
cmp r4, #0x3f
bls _0807BCB0
mov r0, r8
ldrh r1, [r0, #0x20]
ldr r0, _0807BD10 @ =0x0000FFF0
ands r0, r1
lsls r0, r0, #2
adds r3, r0, r7
movs r1, #0xfc
lsls r1, r1, #4
adds r6, r7, r1
mov r1, ip
adds r2, r0, r1
movs r5, #0xfc
lsls r5, r5, #4
add r5, ip
movs r4, #0
movs r0, #0xff
_0807BCE6:
strb r0, [r3]
adds r3, #1
strb r0, [r6]
adds r6, #1
strb r0, [r2]
adds r2, #1
strb r0, [r5]
adds r5, #1
adds r4, #1
cmp r4, #0x3f
bls _0807BCE6
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BD04: .4byte gRoomControls
_0807BD08: .4byte gUnk_02027EB4
_0807BD0C: .4byte gUnk_0200D654
_0807BD10: .4byte 0x0000FFF0
.syntax divided
@@ -0,0 +1,87 @@
.syntax unified
push {r4, r5, lr}
adds r5, r1, #0
movs r1, #0x2e
ldrsh r2, [r0, r1]
movs r3, #0x32
ldrsh r1, [r0, r3]
adds r0, r2, #0
adds r2, r5, #0
bl sub_0807BEEC
adds r3, r0, #0
cmp r3, #0xff
beq _0807BDB4
ldr r1, _0807BD68 @ =gRoomControls
movs r2, #0
movs r0, #2
strb r0, [r1, #2]
strb r2, [r1, #3]
movs r4, #1
strh r4, [r1]
strb r3, [r1, #5]
strb r5, [r1, #0x10]
bl GetCurrentRoomInfo
adds r2, r0, #0
ldr r1, _0807BD6C @ =gArea
ldr r3, _0807BD70 @ =0x0000085C
adds r0, r1, r3
str r2, [r0]
ldrb r0, [r1, #0xd]
ands r4, r0
cmp r4, #0
beq _0807BD98
cmp r5, #1
beq _0807BD7E
cmp r5, #1
blo _0807BD74
cmp r5, #2
beq _0807BD86
cmp r5, #3
beq _0807BD90
b _0807BD98
.align 2, 0
_0807BD68: .4byte gRoomControls
_0807BD6C: .4byte gArea
_0807BD70: .4byte 0x0000085C
_0807BD74:
ldrh r0, [r2, #6]
ldrh r1, [r2, #2]
subs r0, r0, r1
strh r0, [r2, #6]
b _0807BD98
_0807BD7E:
ldrh r0, [r2]
ldrh r1, [r2, #4]
adds r0, r0, r1
b _0807BD96
_0807BD86:
ldrh r0, [r2, #2]
ldrh r3, [r2, #6]
adds r0, r0, r3
strh r0, [r2, #6]
b _0807BD98
_0807BD90:
ldrh r0, [r2, #4]
ldrh r1, [r2]
subs r0, r0, r1
_0807BD96:
strh r0, [r2, #4]
_0807BD98:
ldr r2, _0807BDB0 @ =gPlayerEntity
ldrb r1, [r2, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2, #0x11]
bl SetInitializationPriority
movs r0, #1
b _0807BDB6
.align 2, 0
_0807BDB0: .4byte gPlayerEntity
_0807BDB4:
movs r0, #0
_0807BDB6:
pop {r4, r5, pc}
.syntax divided
@@ -0,0 +1,159 @@
.syntax unified
push {r4, r5, lr}
adds r3, r0, #0
movs r5, #0xff
movs r0, #7
ands r1, r0
cmp r1, #7
bls _0807BDC8
b _0807BEE2
_0807BDC8:
lsls r0, r1, #2
ldr r1, _0807BDD4 @ =_0807BDD8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807BDD4: .4byte _0807BDD8
_0807BDD8: @ jump table
.4byte _0807BDF8 @ case 0
.4byte _0807BE10 @ case 1
.4byte _0807BE30 @ case 2
.4byte _0807BE4C @ case 3
.4byte _0807BE78 @ case 4
.4byte _0807BE94 @ case 5
.4byte _0807BEB4 @ case 6
.4byte _0807BEC4 @ case 7
_0807BDF8:
movs r1, #0x32
ldrsh r0, [r3, r1]
ldr r1, _0807BE0C @ =gRoomControls
ldrh r1, [r1, #8]
subs r0, r0, r1
cmp r0, #9
bhi _0807BEE2
movs r5, #0
b _0807BEE2
.align 2, 0
_0807BE0C: .4byte gRoomControls
_0807BE10:
movs r2, #0x32
ldrsh r0, [r3, r2]
ldr r2, _0807BE2C @ =gRoomControls
ldrh r1, [r2, #8]
subs r0, r0, r1
cmp r0, #9
bhi _0807BE20
movs r5, #0
_0807BE20:
ldrh r0, [r2, #0x1e]
subs r0, #0xa
movs r4, #0x2e
ldrsh r1, [r3, r4]
ldrh r2, [r2, #6]
b _0807BE6A
.align 2, 0
_0807BE2C: .4byte gRoomControls
_0807BE30:
ldr r1, _0807BE48 @ =gRoomControls
ldrh r2, [r1, #0x1e]
subs r2, #0xa
movs r4, #0x2e
ldrsh r0, [r3, r4]
ldrh r1, [r1, #6]
subs r0, r0, r1
cmp r2, r0
bhs _0807BEE2
movs r5, #1
b _0807BEE2
.align 2, 0
_0807BE48: .4byte gRoomControls
_0807BE4C:
ldr r4, _0807BE74 @ =gRoomControls
ldrh r0, [r4, #0x20]
subs r0, #0xa
movs r2, #0x32
ldrsh r1, [r3, r2]
ldrh r2, [r4, #8]
subs r1, r1, r2
cmp r0, r1
bhs _0807BE60
movs r5, #2
_0807BE60:
ldrh r0, [r4, #0x1e]
subs r0, #0xa
movs r2, #0x2e
ldrsh r1, [r3, r2]
ldrh r2, [r4, #6]
_0807BE6A:
subs r1, r1, r2
cmp r0, r1
bhs _0807BEE2
movs r5, #1
b _0807BEE2
.align 2, 0
_0807BE74: .4byte gRoomControls
_0807BE78:
ldr r1, _0807BE90 @ =gRoomControls
ldrh r2, [r1, #0x20]
subs r2, #0xa
movs r4, #0x32
ldrsh r0, [r3, r4]
ldrh r1, [r1, #8]
subs r0, r0, r1
cmp r2, r0
bhs _0807BEE2
movs r5, #2
b _0807BEE2
.align 2, 0
_0807BE90: .4byte gRoomControls
_0807BE94:
ldr r4, _0807BEB0 @ =gRoomControls
ldrh r0, [r4, #0x20]
subs r0, #0xa
movs r2, #0x32
ldrsh r1, [r3, r2]
ldrh r2, [r4, #8]
subs r1, r1, r2
cmp r0, r1
bhs _0807BEA8
movs r5, #2
_0807BEA8:
movs r1, #0x2e
ldrsh r0, [r3, r1]
ldrh r1, [r4, #6]
b _0807BEDA
.align 2, 0
_0807BEB0: .4byte gRoomControls
_0807BEB4:
movs r2, #0x2e
ldrsh r0, [r3, r2]
ldr r1, _0807BEC0 @ =gRoomControls
ldrh r1, [r1, #6]
b _0807BEDA
.align 2, 0
_0807BEC0: .4byte gRoomControls
_0807BEC4:
movs r4, #0x32
ldrsh r0, [r3, r4]
ldr r2, _0807BEE8 @ =gRoomControls
ldrh r1, [r2, #8]
subs r0, r0, r1
cmp r0, #9
bhi _0807BED4
movs r5, #0
_0807BED4:
movs r1, #0x2e
ldrsh r0, [r3, r1]
ldrh r1, [r2, #6]
_0807BEDA:
subs r0, r0, r1
cmp r0, #9
bhi _0807BEE2
movs r5, #3
_0807BEE2:
adds r0, r5, #0
pop {r4, r5, pc}
.align 2, 0
_0807BEE8: .4byte gRoomControls
.syntax divided
@@ -0,0 +1,84 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r7, r1, #0
ldr r0, _0807BF04 @ =gArea
ldrb r1, [r0, #0xd]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0807BF0C
ldr r0, _0807BF08 @ =gRoomControls
ldrb r0, [r0, #5]
b _0807BF7C
.align 2, 0
_0807BF04: .4byte gArea
_0807BF08: .4byte gRoomControls
_0807BF0C:
cmp r2, #1
beq _0807BF2C
cmp r2, #1
blo _0807BF1E
cmp r2, #2
beq _0807BF40
cmp r2, #3
beq _0807BF58
b _0807BF7A
_0807BF1E:
ldr r0, _0807BF28 @ =gRoomControls
ldrh r0, [r0, #8]
adds r7, r0, #0
subs r7, #0x10
b _0807BF60
.align 2, 0
_0807BF28: .4byte gRoomControls
_0807BF2C:
ldr r0, _0807BF3C @ =gRoomControls
ldrh r1, [r0, #6]
ldrh r0, [r0, #0x1e]
adds r1, r1, r0
adds r6, r1, #0
adds r6, #0x10
b _0807BF60
.align 2, 0
_0807BF3C: .4byte gRoomControls
_0807BF40:
ldr r0, _0807BF50 @ =gRoomControls
ldrh r1, [r0, #8]
ldrh r0, [r0, #0x20]
adds r1, r1, r0
adds r7, r1, #0
adds r7, #0x10
b _0807BF60
.align 2, 0
_0807BF50: .4byte gRoomControls
_0807BF54:
adds r0, r4, #0
b _0807BF7C
_0807BF58:
ldr r0, _0807BF80 @ =gRoomControls
ldrh r0, [r0, #6]
adds r6, r0, #0
subs r6, #0x10
_0807BF60:
ldr r5, _0807BF84 @ =gUnk_02033ACC
movs r4, #0
_0807BF64:
adds r0, r6, #0
adds r1, r7, #0
adds r2, r5, #0
bl sub_0807BF88
cmp r0, #0
bne _0807BF54
adds r4, #1
adds r5, #0x20
cmp r4, #0x3f
bls _0807BF64
_0807BF7A:
movs r0, #0xff
_0807BF7C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807BF80: .4byte gRoomControls
_0807BF84: .4byte gUnk_02033ACC
.syntax divided
@@ -0,0 +1,19 @@
.syntax unified
push {r4, lr}
adds r3, r2, #0
ldrh r2, [r3, #4]
subs r0, r0, r2
ldrh r2, [r3, #6]
subs r1, r1, r2
movs r2, #0
ldrh r4, [r3]
cmp r0, r4
bhs _0807BFA4
ldrh r3, [r3, #2]
cmp r1, r3
bhs _0807BFA4
movs r2, #1
_0807BFA4:
adds r0, r2, #0
pop {r4, pc}
.syntax divided
@@ -0,0 +1,123 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
bl sub_0801B170
bl sub_0807BFA8
ldr r7, _0807C0B8 @ =0x0000FFFF
ldr r6, _0807C0BC @ =gMetatileTypesBottom
movs r0, #0x80
lsls r0, r0, #5
mov r8, r0
adds r0, r7, #0
adds r1, r6, #0
mov r2, r8
bl MemFill16
movs r5, #0
strh r5, [r6]
ldr r4, _0807C0C0 @ =gMetatileTypesTop
adds r0, r7, #0
adds r1, r4, #0
mov r2, r8
bl MemFill16
strh r5, [r4]
ldr r2, _0807C0C4 @ =gRoomControls
ldr r0, _0807C0C8 @ =gArea
ldr r1, _0807C0CC @ =0x0000085C
adds r4, r0, r1
ldr r0, [r4]
ldr r1, [r2, #0x34]
ldr r0, [r0, #8]
cmp r1, r0
beq _0807C01C
str r0, [r2, #0x34]
bl sub_080197D4
_0807C01C:
ldr r0, [r4]
ldr r0, [r0, #0x10]
bl sub_080197D4
ldr r1, _0807C0D0 @ =gPaletteBuffer
adds r0, r1, #0
adds r0, #0x60
movs r2, #0xa8
lsls r2, r2, #2
adds r1, r1, r2
movs r2, #0x20
bl MemCopy
ldr r2, _0807C0D4 @ =gUsedPalettes
ldr r0, [r2]
movs r1, #0x80
lsls r1, r1, #0xe
orrs r0, r1
str r0, [r2]
ldr r0, [r4]
ldr r0, [r0, #0x14]
cmp r0, #0
beq _0807C04E
bl sub_0801B130
_0807C04E:
adds r5, r6, #0
movs r0, #0x80
lsls r0, r0, #5
adds r6, r5, r0
adds r0, r7, #0
adds r1, r6, #0
mov r2, r8
bl MemFill16
movs r2, #0
ldr r3, _0807C0D8 @ =0x000007FF
adds r4, r7, #0
_0807C066:
ldrh r0, [r5]
cmp r0, r3
bhi _0807C078
lsls r0, r0, #1
adds r1, r0, r6
ldrh r0, [r1]
cmp r0, r4
bne _0807C078
strh r2, [r1]
_0807C078:
adds r2, #1
adds r5, #2
cmp r2, r3
ble _0807C066
movs r2, #0x80
lsls r2, r2, #5
ldr r5, _0807C0C0 @ =gMetatileTypesTop
adds r6, r5, r2
ldr r4, _0807C0B8 @ =0x0000FFFF
adds r0, r4, #0
adds r1, r6, #0
bl MemFill16
movs r2, #0
ldr r3, _0807C0D8 @ =0x000007FF
_0807C096:
ldrh r0, [r5]
cmp r0, r3
bhi _0807C0A8
lsls r0, r0, #1
adds r1, r0, r6
ldrh r0, [r1]
cmp r0, r4
bne _0807C0A8
strh r2, [r1]
_0807C0A8:
adds r2, #1
adds r5, #2
cmp r2, r3
ble _0807C096
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807C0B8: .4byte 0x0000FFFF
_0807C0BC: .4byte gMetatileTypesBottom
_0807C0C0: .4byte gMetatileTypesTop
_0807C0C4: .4byte gRoomControls
_0807C0C8: .4byte gArea
_0807C0CC: .4byte 0x0000085C
_0807C0D0: .4byte gPaletteBuffer
_0807C0D4: .4byte gUsedPalettes
_0807C0D8: .4byte 0x000007FF
.syntax divided
@@ -0,0 +1,79 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
ldr r7, _0807C4E8 @ =gMapDataBottom
ldr r6, _0807C4EC @ =gMapDataTop
ldr r0, _0807C4F0 @ =gRoomControls
ldrh r1, [r0, #0x1e]
lsrs r3, r1, #4
ldrh r0, [r0, #0x20]
lsrs r0, r0, #4
str r0, [sp]
movs r4, #0
movs r1, #0
cmp r1, r0
bhs _0807C4DC
movs r0, #0x40
subs r0, r0, r3
lsls r0, r0, #1
mov sb, r0
_0807C48C:
movs r5, #0
adds r1, #1
mov sl, r1
cmp r5, r3
bhs _0807C4CA
ldr r0, _0807C4F4 @ =0x00003FFF
mov r8, r0
_0807C49A:
ldrh r0, [r7]
cmp r0, r8
bls _0807C4AC
adds r1, r4, #0
movs r2, #1
str r3, [sp, #4]
bl SetTile
ldr r3, [sp, #4]
_0807C4AC:
ldrh r0, [r6]
cmp r0, r8
bls _0807C4BE
adds r1, r4, #0
movs r2, #2
str r3, [sp, #4]
bl SetTile
ldr r3, [sp, #4]
_0807C4BE:
adds r7, #2
adds r6, #2
adds r4, #1
adds r5, #1
cmp r5, r3
blo _0807C49A
_0807C4CA:
add r7, sb
add r6, sb
adds r0, r4, #0
adds r0, #0x40
subs r4, r0, r3
mov r1, sl
ldr r0, [sp]
cmp r1, r0
blo _0807C48C
_0807C4DC:
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807C4E8: .4byte gMapDataBottom
_0807C4EC: .4byte gMapDataTop
_0807C4F0: .4byte gRoomControls
_0807C4F4: .4byte 0x00003FFF
.syntax divided
@@ -0,0 +1,83 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r0, _0807C594 @ =gRoomControls
ldrb r0, [r0, #4]
cmp r0, #0x71
beq _0807C592
ldr r0, _0807C598 @ =gUnk_02019EE0
movs r4, #0x80
lsls r4, r4, #8
adds r1, r4, #0
bl MemClear
ldr r0, _0807C59C @ =gMapDataTopSpecial
adds r1, r4, #0
bl MemClear
ldr r5, _0807C5A0 @ =gUnk_02022830
ldr r0, _0807C5A4 @ =gArea
ldr r1, _0807C5A8 @ =0x0000085C
adds r0, r0, r1
ldr r0, [r0]
ldr r4, [r0, #0xc]
subs r4, #0xc
_0807C524:
adds r4, #0xc
ldr r1, [r4, #4]
ldr r0, _0807C598 @ =gUnk_02019EE0
cmp r1, r0
beq _0807C534
ldr r0, _0807C59C @ =gMapDataTopSpecial
cmp r1, r0
bne _0807C54A
_0807C534:
ldr r0, [r4]
ldr r1, _0807C5AC @ =0x7FFFFFFF
ands r0, r1
str r0, [r5]
ldr r0, [r4, #4]
str r0, [r5, #4]
ldr r0, [r4, #8]
str r0, [r5, #8]
adds r0, r5, #0
bl sub_080197D4
_0807C54A:
ldr r0, [r4]
cmp r0, #0
blt _0807C524
ldr r4, _0807C598 @ =gUnk_02019EE0
movs r0, #0x80
lsls r0, r0, #7
adds r5, r4, r0
adds r6, r0, #0
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
bl MemCopy
adds r0, r4, #0
adds r1, r5, #0
bl sub_0807C5F4
adds r0, r5, #0
adds r1, r6, #0
bl MemClear
ldr r4, _0807C59C @ =gMapDataTopSpecial
adds r5, r4, r6
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
bl MemCopy
adds r0, r4, #0
adds r1, r5, #0
bl sub_0807C5F4
adds r0, r5, #0
adds r1, r6, #0
bl MemClear
_0807C592:
pop {r4, r5, r6, pc}
.align 2, 0
_0807C594: .4byte gRoomControls
_0807C598: .4byte gUnk_02019EE0
_0807C59C: .4byte gMapDataTopSpecial
_0807C5A0: .4byte gUnk_02022830
_0807C5A4: .4byte gArea
_0807C5A8: .4byte 0x0000085C
_0807C5AC: .4byte 0x7FFFFFFF
.syntax divided
@@ -0,0 +1,36 @@
.syntax unified
push {r4, r5, r6, lr}
ldr r5, _0807C5E8 @ =gUnk_0200D654
movs r4, #0x80
lsls r4, r4, #5
movs r3, #0
ldr r6, _0807C5EC @ =gRoomControls
ldr r2, _0807C5F0 @ =gUnk_02027EB4
_0807C5BE:
adds r0, r5, r3
ldrb r0, [r0]
cmp r0, #0
beq _0807C5D4
cmp r0, #0xf
bhi _0807C5D2
ldrb r1, [r2]
cmp r1, #0xf
bhi _0807C5D4
orrs r0, r1
_0807C5D2:
strb r0, [r2]
_0807C5D4:
adds r2, #1
adds r3, #1
cmp r3, r4
blo _0807C5BE
ldrb r1, [r6, #0xf]
movs r0, #2
orrs r0, r1
strb r0, [r6, #0xf]
pop {r4, r5, r6, pc}
.align 2, 0
_0807C5E8: .4byte gUnk_0200D654
_0807C5EC: .4byte gRoomControls
_0807C5F0: .4byte gUnk_02027EB4
.syntax divided
@@ -0,0 +1,96 @@
.syntax unified
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r2, r5, #0
movs r0, #0x20
ldr r6, _0807C698 @ =gRoomControls
_0807C5FE:
movs r3, #0
subs r4, r0, #1
_0807C602:
ldrh r0, [r1]
strh r0, [r2]
adds r1, #2
adds r2, #2
adds r3, #1
cmp r3, #0x1f
bls _0807C602
adds r2, #0xc0
adds r0, r4, #0
cmp r0, #0
bne _0807C5FE
ldrh r0, [r6, #0x1e]
cmp r0, #0xff
bls _0807C63E
adds r2, r5, #0
adds r2, #0x40
movs r0, #0x20
_0807C624:
movs r3, #0
subs r4, r0, #1
_0807C628:
ldrh r0, [r1]
strh r0, [r2]
adds r1, #2
adds r2, #2
adds r3, #1
cmp r3, #0x1f
bls _0807C628
adds r2, #0xc0
adds r0, r4, #0
cmp r0, #0
bne _0807C624
_0807C63E:
ldrh r0, [r6, #0x20]
cmp r0, #0xff
bls _0807C666
movs r0, #0x80
lsls r0, r0, #6
adds r2, r5, r0
movs r0, #0x20
_0807C64C:
movs r3, #0
subs r4, r0, #1
_0807C650:
ldrh r0, [r1]
strh r0, [r2]
adds r1, #2
adds r2, #2
adds r3, #1
cmp r3, #0x1f
bls _0807C650
adds r2, #0xc0
adds r0, r4, #0
cmp r0, #0
bne _0807C64C
_0807C666:
ldrh r0, [r6, #0x1e]
cmp r0, #0xff
bls _0807C694
ldrh r0, [r6, #0x20]
cmp r0, #0xff
bls _0807C694
movs r0, #0x81
lsls r0, r0, #6
adds r2, r5, r0
movs r0, #0x20
_0807C67A:
movs r3, #0
subs r4, r0, #1
_0807C67E:
ldrh r0, [r1]
strh r0, [r2]
adds r1, #2
adds r2, #2
adds r3, #1
cmp r3, #0x1f
bls _0807C67E
adds r2, #0xc0
adds r0, r4, #0
cmp r0, #0
bne _0807C67A
_0807C694:
pop {r4, r5, r6, pc}
.align 2, 0
_0807C698: .4byte gRoomControls
.syntax divided
@@ -0,0 +1,92 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
adds r6, r1, #0
mov r8, r2
mov r0, r8
muls r0, r6, r0
add r0, sb
subs r2, r0, #1
mov r0, r8
subs r0, #1
lsls r0, r0, #6
add r0, sb
subs r1, r6, #1
adds r4, r0, r1
movs r5, #0
cmp r5, r8
bhs _0807C6EA
_0807C6C4:
movs r3, #0
adds r7, r4, #0
subs r7, #0x40
subs r0, r2, r6
mov ip, r0
cmp r3, r6
bhs _0807C6E0
_0807C6D2:
subs r0, r4, r3
subs r1, r2, r3
ldrb r1, [r1]
strb r1, [r0]
adds r3, #1
cmp r3, r6
blo _0807C6D2
_0807C6E0:
adds r4, r7, #0
mov r2, ip
adds r5, #1
cmp r5, r8
blo _0807C6C4
_0807C6EA:
movs r0, #0x40
subs r7, r0, r6
movs r5, #0
mov r1, r8
lsls r2, r1, #6
mov r0, sb
adds r1, r0, r6
_0807C6F8:
lsls r0, r5, #6
adds r4, r1, r0
movs r3, #0
adds r6, r5, #1
cmp r3, r7
bhs _0807C710
movs r5, #0
_0807C706:
adds r0, r4, r3
strb r5, [r0]
adds r3, #1
cmp r3, r7
blo _0807C706
_0807C710:
adds r5, r6, #0
cmp r5, #0x3f
bls _0807C6F8
movs r0, #0x40
mov r1, r8
subs r7, r0, r1
mov r0, sb
adds r4, r0, r2
movs r5, #0
cmp r5, r7
bhs _0807C736
_0807C726:
adds r0, r4, #0
movs r1, #0x40
bl MemClear
adds r4, #0x40
adds r5, #1
cmp r5, r7
blo _0807C726
_0807C736:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,111 @@
.syntax unified
push {r4, r5, lr}
bl sub_0807BFD0
bl LoadRoomGfx
ldr r4, _0807C780 @ =gRoomControls
ldr r2, [r4, #0x30]
cmp r2, #0
beq _0807C788
ldrh r1, [r2, #0x2e]
lsls r0, r1, #0x10
cmp r0, #0
bge _0807C764
ldr r0, _0807C784 @ =0x00007FFF
ands r0, r1
ldrh r1, [r4, #6]
subs r0, r0, r1
strh r0, [r2, #0x2e]
_0807C764:
movs r0, #0x2e
ldrsh r3, [r2, r0]
ldrh r1, [r2, #0x32]
lsls r0, r1, #0x10
cmp r0, #0
bge _0807C77A
ldr r0, _0807C784 @ =0x00007FFF
ands r0, r1
ldrh r1, [r4, #8]
subs r0, r0, r1
strh r0, [r2, #0x32]
_0807C77A:
movs r0, #0x32
ldrsh r5, [r2, r0]
b _0807C78C
.align 2, 0
_0807C780: .4byte gRoomControls
_0807C784: .4byte 0x00007FFF
_0807C788:
movs r3, #0
movs r5, #0
_0807C78C:
cmp r3, #0x77
bgt _0807C794
movs r0, #0
b _0807C7A2
_0807C794:
ldrh r1, [r4, #0x1e]
adds r0, r1, #0
subs r0, #0x78
cmp r0, r3
blt _0807C7A0
adds r0, r3, #0
_0807C7A0:
subs r0, #0x78
_0807C7A2:
strh r0, [r4, #0xa]
ldrh r1, [r4, #6]
ldrh r2, [r4, #0xa]
adds r0, r1, r2
strh r0, [r4, #0xa]
cmp r5, #0x4f
bgt _0807C7B4
movs r0, #0
b _0807C7C2
_0807C7B4:
ldrh r2, [r4, #0x20]
adds r0, r2, #0
subs r0, #0x50
cmp r0, r5
blt _0807C7C0
adds r0, r5, #0
_0807C7C0:
subs r0, #0x50
_0807C7C2:
strh r0, [r4, #0xc]
ldrh r0, [r4, #8]
ldrh r3, [r4, #0xc]
adds r0, r0, r3
strh r0, [r4, #0xc]
ldr r2, [r4, #0x30]
cmp r2, #0
beq _0807C7FC
ldrh r3, [r2, #0x2e]
adds r0, r1, r3
strh r0, [r2, #0x2e]
ldr r1, [r4, #0x30]
ldrh r0, [r4, #8]
ldrh r2, [r1, #0x32]
adds r0, r0, r2
strh r0, [r1, #0x32]
ldr r0, _0807C80C @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0807C7FC
ldr r0, [r4, #0x30]
adds r0, #0x38
movs r1, #1
strb r1, [r0]
ldr r0, [r4, #0x30]
bl UpdateSpriteForCollisionLayer
_0807C7FC:
ldrb r1, [r4, #0xf]
movs r0, #0xfb
ands r0, r1
strb r0, [r4, #0xf]
bl sub_08080BC4
pop {r4, r5, pc}
.align 2, 0
_0807C80C: .4byte gRoomControls
.syntax divided
@@ -0,0 +1,37 @@
.syntax unified
push {r4, r5, r6, lr}
bl sub_0807BFD0
ldr r2, _0807C850 @ =gUnk_03004030
ldr r6, _0807C854 @ =gPlayerEntity
ldr r4, _0807C858 @ =gRoomControls
ldr r3, [r2]
ldrh r1, [r3, #6]
movs r0, #0x3f
ands r0, r1
lsls r0, r0, #4
ldrh r1, [r4, #6]
adds r0, r0, r1
ldrh r1, [r2, #4]
adds r1, r1, r0
movs r5, #0
strh r1, [r6, #0x2e]
ldrh r1, [r3, #6]
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r1
lsrs r0, r0, #2
ldrh r4, [r4, #8]
adds r0, r0, r4
ldrh r1, [r2, #6]
adds r1, r1, r0
strh r1, [r6, #0x32]
bl sub_080809D4
ldr r0, _0807C85C @ =gUpdateVisibleTiles
strb r5, [r0]
pop {r4, r5, r6, pc}
.align 2, 0
_0807C850: .4byte gUnk_03004030
_0807C854: .4byte gPlayerEntity
_0807C858: .4byte gRoomControls
_0807C85C: .4byte gUpdateVisibleTiles
.syntax divided
@@ -0,0 +1,98 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov r8, r0
adds r4, r1, #0
mov ip, r2
mov r0, ip
muls r0, r4, r0
lsls r0, r0, #1
add r0, r8
subs r7, r0, #2
mov r0, ip
subs r0, #1
lsls r0, r0, #7
add r0, r8
lsls r3, r4, #1
subs r1, r3, #2
adds r0, r0, r1
movs r5, #0
cmp r5, ip
bhs _0807C906
mov sb, r3
_0807C8DE:
movs r2, #0
adds r6, r0, #0
subs r6, #0x80
cmp r2, r4
bhs _0807C8FA
adds r1, r7, #0
adds r3, r0, #0
_0807C8EC:
ldrh r0, [r1]
strh r0, [r3]
subs r1, #2
subs r3, #2
adds r2, #1
cmp r2, r4
blo _0807C8EC
_0807C8FA:
adds r0, r6, #0
mov r1, sb
subs r7, r7, r1
adds r5, #1
cmp r5, ip
blo _0807C8DE
_0807C906:
movs r0, #0x40
subs r6, r0, r4
movs r5, #0
lsls r0, r4, #1
mov r2, ip
lsls r7, r2, #7
mov r2, r8
adds r1, r2, r0
_0807C916:
lsls r0, r5, #7
adds r0, r1, r0
movs r2, #0
adds r3, r5, #1
cmp r2, r6
bhs _0807C92E
movs r4, #0
_0807C924:
strh r4, [r0]
adds r0, #2
adds r2, #1
cmp r2, r6
blo _0807C924
_0807C92E:
adds r5, r3, #0
cmp r5, #0x3f
bls _0807C916
movs r0, #0x40
mov r1, ip
subs r6, r0, r1
mov r2, r8
adds r0, r2, r7
movs r5, #0
cmp r5, r6
bhs _0807C956
adds r4, r0, #0
_0807C946:
adds r0, r4, #0
movs r1, #0x80
bl MemClear
adds r4, #0x80
adds r5, #1
cmp r5, r6
blo _0807C946
_0807C956:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,18 @@
.syntax unified
ldr r2, _0807CAE0 @ =gSave
ldr r1, _0807CAE4 @ =gArea
ldr r3, _0807CAE8 @ =0x0000047C
adds r2, r2, r3
ldrb r1, [r1, #3]
adds r2, r2, r1
movs r1, #1
lsls r1, r0
ldrb r0, [r2]
orrs r1, r0
strb r1, [r2]
bx lr
.align 2, 0
_0807CAE0: .4byte gSave
_0807CAE4: .4byte gArea
_0807CAE8: .4byte 0x0000047C
.syntax divided
@@ -0,0 +1,18 @@
.syntax unified
adds r2, r0, #0
ldr r0, _0807CB04 @ =gSave
ldr r1, _0807CB08 @ =gArea
ldr r3, _0807CB0C @ =0x0000047C
adds r0, r0, r3
ldrb r1, [r1, #3]
adds r0, r0, r1
ldrb r0, [r0]
asrs r0, r2
movs r1, #1
ands r0, r1
bx lr
.align 2, 0
_0807CB04: .4byte gSave
_0807CB08: .4byte gArea
_0807CB0C: .4byte 0x0000047C
.syntax divided
@@ -0,0 +1,74 @@
.syntax unified
push {lr}
adds r2, r0, #0
adds r3, r1, #0
cmp r2, #0x11
bhi _0807CB84
lsls r0, r2, #2
ldr r1, _0807CB38 @ =_0807CB3C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807CB38: .4byte _0807CB3C
_0807CB3C: @ jump table
.4byte _0807CB84 @ case 0
.4byte _0807CB88 @ case 1
.4byte _0807CB88 @ case 2
.4byte _0807CB88 @ case 3
.4byte _0807CB88 @ case 4
.4byte _0807CB88 @ case 5
.4byte _0807CB88 @ case 6
.4byte _0807CB88 @ case 7
.4byte _0807CB88 @ case 8
.4byte _0807CB88 @ case 9
.4byte _0807CB88 @ case 10
.4byte _0807CB88 @ case 11
.4byte _0807CB88 @ case 12
.4byte _0807CB88 @ case 13
.4byte _0807CB84 @ case 14
.4byte _0807CBA0 @ case 15
.4byte _0807CBAE @ case 16
.4byte _0807CBBC @ case 17
_0807CB84:
movs r1, #0
b _0807CBCA
_0807CB88:
ldr r0, _0807CB9C @ =gLocalFlagBanks
lsls r1, r2, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r3, #0
bl CheckLocalFlagByBank
_0807CB96:
adds r1, r0, #0
b _0807CBCA
.align 2, 0
_0807CB9C: .4byte gLocalFlagBanks
_0807CBA0:
adds r0, r3, #0
bl GetInventoryValue
cmp r0, #0
beq _0807CB96
movs r0, #1
b _0807CB96
_0807CBAE:
adds r0, r3, #0
bl GetInventoryValue
movs r1, #0
cmp r0, #1
bne _0807CBCA
b _0807CBC8
_0807CBBC:
adds r0, r3, #0
bl GetInventoryValue
movs r1, #0
cmp r0, #2
bne _0807CBCA
_0807CBC8:
movs r1, #1
_0807CBCA:
adds r0, r1, #0
pop {pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,73 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
ldr r0, _0808085C @ =gRoomTransition
movs r1, #1
strb r1, [r0, #8]
adds r2, r0, #0
adds r2, #0xc
ldrh r1, [r4, #6]
ldr r0, _08080860 @ =0x000003FF
cmp r1, r0
bhi _08080864
strh r1, [r2, #4]
b _08080872
.align 2, 0
_0808085C: .4byte gRoomTransition
_08080860: .4byte 0x000003FF
_08080864:
ldr r0, _08080880 @ =gRoomControls
ldr r0, [r0, #0x30]
ldrh r1, [r0, #0x2e]
ldr r3, _08080884 @ =0xFFFF8000
adds r0, r3, #0
orrs r0, r1
strh r0, [r2, #4]
_08080872:
ldrh r1, [r4, #8]
ldr r0, _08080888 @ =0x000003FF
cmp r1, r0
bhi _0808088C
strh r1, [r2, #6]
b _0808089A
.align 2, 0
_08080880: .4byte gRoomControls
_08080884: .4byte 0xFFFF8000
_08080888: .4byte 0x000003FF
_0808088C:
ldr r0, _080808CC @ =gRoomControls
ldr r0, [r0, #0x30]
ldrh r1, [r0, #0x32]
ldr r3, _080808D0 @ =0xFFFF8000
adds r0, r3, #0
orrs r0, r1
strh r0, [r2, #6]
_0808089A:
ldrb r0, [r4, #0xb]
strb r0, [r2]
ldrb r0, [r4, #0xc]
strb r0, [r2, #1]
ldrb r0, [r4, #0xd]
strb r0, [r2, #8]
ldrb r0, [r4, #0xe]
strb r0, [r2, #3]
ldrb r0, [r4, #0xf]
strb r0, [r2, #2]
ldrh r0, [r4, #0x10]
cmp r0, #0
beq _080808B8
bl SoundReq
_080808B8:
ldr r0, _080808D4 @ =gUnk_0811E7C4
ldrh r1, [r4]
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r4, #0xa]
ldr r1, [r1]
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_080808CC: .4byte gRoomControls
_080808D0: .4byte 0xFFFF8000
_080808D4: .4byte gUnk_0811E7C4
.syntax divided
@@ -0,0 +1,119 @@
.syntax unified
push {r4, r5, r6, r7, lr}
ldr r7, _08080A70 @ =gRoomControls
ldr r1, [r7, #0x30]
ldr r0, _08080A74 @ =gPlayerEntity
adds r2, r7, #0
cmp r1, r0
beq _08080A50
b _08080B5C
_08080A50:
ldr r0, _08080A78 @ =gPlayerState
ldrb r0, [r0, #2]
cmp r0, #0
beq _08080A5A
b _08080B5C
_08080A5A:
ldrb r0, [r1, #0xc]
subs r0, #1
cmp r0, #0x1c
bls _08080A64
b _08080B5C
_08080A64:
lsls r0, r0, #2
ldr r1, _08080A7C @ =_08080A80
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08080A70: .4byte gRoomControls
_08080A74: .4byte gPlayerEntity
_08080A78: .4byte gPlayerState
_08080A7C: .4byte _08080A80
_08080A80: @ jump table
.4byte _08080AFA @ case 0
.4byte _08080B5C @ case 1
.4byte _08080B5C @ case 2
.4byte _08080B5C @ case 3
.4byte _08080B5C @ case 4
.4byte _08080B5C @ case 5
.4byte _08080B5C @ case 6
.4byte _08080B5C @ case 7
.4byte _08080AFA @ case 8
.4byte _08080B5C @ case 9
.4byte _08080B5C @ case 10
.4byte _08080B5C @ case 11
.4byte _08080B5C @ case 12
.4byte _08080B5C @ case 13
.4byte _08080AF4 @ case 14
.4byte _08080B5C @ case 15
.4byte _08080B5C @ case 16
.4byte _08080B5C @ case 17
.4byte _08080B5C @ case 18
.4byte _08080B5C @ case 19
.4byte _08080B5C @ case 20
.4byte _08080B5C @ case 21
.4byte _08080B5C @ case 22
.4byte _08080AFA @ case 23
.4byte _08080B5C @ case 24
.4byte _08080B5C @ case 25
.4byte _08080B5C @ case 26
.4byte _08080B5C @ case 27
.4byte _08080AFA @ case 28
_08080AF4:
ldrb r0, [r2, #4]
cmp r0, #0x48
beq _08080B5C
_08080AFA:
ldr r3, [r7, #0x30]
movs r0, #0x32
ldrsh r1, [r3, r0]
ldrh r0, [r7, #8]
subs r6, r1, r0
movs r0, #0x2e
ldrsh r1, [r3, r0]
ldrh r0, [r7, #6]
subs r5, r1, r0
asrs r0, r5, #4
movs r2, #0x3f
ands r0, r2
asrs r1, r6, #4
ands r1, r2
lsls r1, r1, #6
orrs r0, r1
adds r3, #0x38
ldrb r1, [r3]
bl sub_080002C8
adds r4, r0, #0
ldr r0, [r7, #0x30]
adds r0, #0x38
ldrb r2, [r0]
adds r0, r5, #0
adds r1, r6, #0
bl sub_080002A8
ldr r1, _08080B48 @ =gRoomTransition
strh r0, [r1, #0xa]
cmp r4, #0x3f
beq _08080B50
cmp r4, #0x3f
bhi _08080B4C
cmp r4, #0x29
bhi _08080B5C
cmp r4, #0x28
blo _08080B5C
b _08080B50
.align 2, 0
_08080B48: .4byte gRoomTransition
_08080B4C:
cmp r4, #0xf1
bne _08080B5C
_08080B50:
adds r0, r5, #0
adds r1, r6, #0
movs r2, #0xff
movs r3, #0xa
bl sub_080806BC
_08080B5C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
+170
View File
@@ -0,0 +1,170 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r2, r0, #0
ldr r0, [r2, #0x30]
cmp r0, #0
bne _0807FC88
b _0807FDA6
_0807FC88:
movs r1, #0xa
ldrsh r4, [r2, r1]
movs r1, #0x2e
ldrsh r0, [r0, r1]
subs r0, #0x78
subs r3, r4, r0
cmp r3, #0
beq _0807FD16
ldrh r6, [r2, #0xa]
movs r7, #7
ands r7, r6
mov ip, r6
cmp r3, #0
ble _0807FCDC
ldrh r0, [r2, #6]
adds r5, r0, #0
cmp r5, r4
bge _0807FD16
ldrb r0, [r2, #0xe]
cmp r0, r3
bgt _0807FCBC
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FCBC:
mov r1, ip
subs r0, r1, r3
strh r0, [r2, #0xa]
subs r0, r7, r3
cmp r0, #0
bgt _0807FCCE
ldr r1, _0807FCD8 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FCCE:
movs r1, #0xa
ldrsh r0, [r2, r1]
cmp r5, r0
blt _0807FD16
b _0807FD14
.align 2, 0
_0807FCD8: .4byte gUpdateVisibleTiles
_0807FCDC:
ldrh r0, [r2, #6]
ldrh r1, [r2, #0x1e]
adds r0, r0, r1
adds r5, r0, #0
subs r5, #0xf0
cmp r4, r5
bge _0807FD16
ldrb r0, [r2, #0xe]
rsbs r0, r0, #0
cmp r0, r3
blt _0807FCFC
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FCFC:
subs r0, r6, r3
strh r0, [r2, #0xa]
subs r0, r7, r3
cmp r0, #7
ble _0807FD0C
ldr r1, _0807FD68 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FD0C:
movs r1, #0xa
ldrsh r0, [r2, r1]
cmp r0, r5
blt _0807FD16
_0807FD14:
strh r5, [r2, #0xa]
_0807FD16:
movs r0, #0xc
ldrsh r4, [r2, r0]
ldr r0, [r2, #0x30]
movs r1, #0x32
ldrsh r0, [r0, r1]
subs r0, #0x50
subs r3, r4, r0
cmp r3, #0
beq _0807FDA6
ldrh r6, [r2, #0xc]
movs r7, #7
ands r7, r6
mov ip, r6
cmp r3, #0
ble _0807FD6C
ldrh r0, [r2, #8]
adds r5, r0, #0
cmp r5, r4
bge _0807FDA6
ldrb r0, [r2, #0xe]
cmp r0, r3
bgt _0807FD4C
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FD4C:
mov r1, ip
subs r0, r1, r3
strh r0, [r2, #0xc]
subs r0, r7, r3
cmp r0, #0
bgt _0807FD5E
ldr r1, _0807FD68 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FD5E:
movs r1, #0xc
ldrsh r0, [r2, r1]
cmp r5, r0
blt _0807FDA6
b _0807FDA4
.align 2, 0
_0807FD68: .4byte gUpdateVisibleTiles
_0807FD6C:
ldrh r0, [r2, #8]
ldrh r1, [r2, #0x20]
adds r0, r0, r1
adds r5, r0, #0
subs r5, #0xa0
cmp r4, r5
bge _0807FDA6
ldrb r0, [r2, #0xe]
rsbs r0, r0, #0
cmp r0, r3
blt _0807FD8C
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FD8C:
subs r0, r6, r3
strh r0, [r2, #0xc]
subs r0, r7, r3
cmp r0, #7
ble _0807FD9C
ldr r1, _0807FDAC @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FD9C:
movs r1, #0xc
ldrsh r0, [r2, r1]
cmp r0, r5
blt _0807FDA6
_0807FDA4:
strh r5, [r2, #0xc]
_0807FDA6:
bl sub_08080BC4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807FDAC: .4byte gUpdateVisibleTiles
.syntax divided
+110
View File
@@ -0,0 +1,110 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
ldr r1, _0807FE18 @ =gUpdateVisibleTiles
movs r0, #2
strb r0, [r1]
ldrh r0, [r4, #0x18]
adds r0, #1
strh r0, [r4, #0x18]
ldrb r0, [r4, #0x10]
cmp r0, #1
beq _0807FE44
cmp r0, #1
bgt _0807FE1C
cmp r0, #0
beq _0807FE26
b _0807FEB6
.align 2, 0
_0807FE18: .4byte gUpdateVisibleTiles
_0807FE1C:
cmp r0, #2
beq _0807FE68
cmp r0, #3
beq _0807FE94
b _0807FEB6
_0807FE26:
ldrh r0, [r4, #0xc]
subs r0, #4
strh r0, [r4, #0xc]
ldr r1, [r4, #0x30]
ldr r0, _0807FE3C @ =gPlayerEntity
cmp r1, r0
bne _0807FE80
ldr r0, [r1, #0x30]
ldr r2, _0807FE40 @ =0xFFFFA000
b _0807FE7C
.align 2, 0
_0807FE3C: .4byte gPlayerEntity
_0807FE40: .4byte 0xFFFFA000
_0807FE44:
ldrh r0, [r4, #0xa]
adds r0, #4
strh r0, [r4, #0xa]
ldr r1, [r4, #0x30]
ldr r0, _0807FE64 @ =gPlayerEntity
cmp r1, r0
bne _0807FE5C
ldr r0, [r1, #0x2c]
movs r2, #0x80
lsls r2, r2, #7
adds r0, r0, r2
str r0, [r1, #0x2c]
_0807FE5C:
ldrh r0, [r4, #0x18]
cmp r0, #0x3c
bne _0807FEB6
b _0807FE86
.align 2, 0
_0807FE64: .4byte gPlayerEntity
_0807FE68:
ldrh r0, [r4, #0xc]
adds r0, #4
strh r0, [r4, #0xc]
ldr r1, [r4, #0x30]
ldr r0, _0807FE90 @ =gPlayerEntity
cmp r1, r0
bne _0807FE80
ldr r0, [r1, #0x30]
movs r2, #0xc0
lsls r2, r2, #7
_0807FE7C:
adds r0, r0, r2
str r0, [r1, #0x30]
_0807FE80:
ldrh r0, [r4, #0x18]
cmp r0, #0x28
bne _0807FEB6
_0807FE86:
adds r0, r4, #0
bl sub_0807FEC8
b _0807FEB6
.align 2, 0
_0807FE90: .4byte gPlayerEntity
_0807FE94:
ldrh r0, [r4, #0xa]
subs r0, #4
strh r0, [r4, #0xa]
ldr r1, [r4, #0x30]
ldr r0, _0807FEC0 @ =gPlayerEntity
cmp r1, r0
bne _0807FEAA
ldr r0, [r1, #0x2c]
ldr r2, _0807FEC4 @ =0xFFFFC000
adds r0, r0, r2
str r0, [r1, #0x2c]
_0807FEAA:
ldrh r0, [r4, #0x18]
cmp r0, #0x3c
bne _0807FEB6
adds r0, r4, #0
bl sub_0807FEC8
_0807FEB6:
movs r0, #0
strh r0, [r4, #0x16]
bl sub_08080BC4
pop {r4, pc}
.align 2, 0
_0807FEC0: .4byte gPlayerEntity
_0807FEC4: .4byte 0xFFFFC000
.syntax divided
+57
View File
@@ -0,0 +1,57 @@
.syntax unified
push {r4, lr}
movs r1, #1
strb r1, [r0, #3]
ldr r3, _0807FFC8 @ =gScreen
ldrh r1, [r3]
movs r2, #0x80
lsls r2, r2, #7
adds r0, r2, #0
orrs r0, r1
strh r0, [r3]
adds r2, r3, #0
adds r2, #0x60
ldrb r0, [r2]
movs r4, #0xb8
lsls r4, r4, #5
adds r1, r4, #0
orrs r0, r1
strh r0, [r2]
adds r2, #2
ldrh r1, [r2]
movs r0, #0xff
lsls r0, r0, #8
ands r0, r1
movs r1, #7
movs r4, #0
orrs r0, r1
strh r0, [r2]
adds r0, r3, #0
adds r0, #0x5a
movs r1, #0xf0
strh r1, [r0]
adds r0, #4
strh r1, [r0]
bl ResetPlayer
bl ResetPlayerAnimationAndAction
ldr r0, _0807FFCC @ =gUnk_03004030
ldrb r0, [r0, #8]
cmp r0, #0
beq _0807FFD4
ldr r1, _0807FFD0 @ =gPlayerEntity
movs r0, #4
strb r0, [r1, #0x14]
b _0807FFD8
.align 2, 0
_0807FFC8: .4byte gScreen
_0807FFCC: .4byte gUnk_03004030
_0807FFD0: .4byte gPlayerEntity
_0807FFD4:
ldr r0, _0807FFE0 @ =gPlayerEntity
strb r4, [r0, #0x14]
_0807FFD8:
bl sub_080809D4
pop {r4, pc}
.align 2, 0
_0807FFE0: .4byte gPlayerEntity
.syntax divided

Some files were not shown because too many files have changed in this diff Show More