summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroctorock <79596758+octorock@users.noreply.github.com>2022-03-02 21:03:39 +0100
committeroctorock <79596758+octorock@users.noreply.github.com>2022-03-02 22:33:13 +0100
commit5efe9828472b784182ae05ff2177e3026ea809ca (patch)
tree314b11848698fb23cd0a625c13d4e388e59d571a
parente7d77d9a6f35d322c01f9cb9bd1b74ee0bcc5422 (diff)
Merge and split scroll
-rwxr-xr-xasm/code_0808091C.s436
-rw-r--r--asm/non_matching/code_0805EC04/sub_0805ED30.inc115
-rw-r--r--asm/non_matching/scroll/DoExitTransition.inc73
-rw-r--r--asm/non_matching/scroll/UpdateDoorTransition.inc119
-rw-r--r--asm/non_matching/scroll/sub_0807FC7C.inc170
-rw-r--r--asm/non_matching/scroll/sub_0807FDF8.inc110
-rw-r--r--asm/non_matching/scroll/sub_0807FF6C.inc57
-rw-r--r--asm/non_matching/scroll/sub_0807FFE4.inc39
-rw-r--r--asm/non_matching/scroll/sub_08080040.inc102
-rw-r--r--asm/non_matching/scroll/sub_08080108.inc56
-rw-r--r--asm/non_matching/scroll/sub_080801BC.inc100
-rw-r--r--asm/non_matching/scroll/sub_08080278.inc120
-rw-r--r--asm/non_matching/scroll/sub_08080368.inc51
-rw-r--r--asm/non_matching/scroll/sub_080803D0.inc290
-rw-r--r--asm/non_matching/scroll/sub_080806BC.inc61
-rw-r--r--asm/non_matching/scroll/sub_08080734.inc51
-rw-r--r--asm/non_matching/scroll/sub_08080794.inc66
-rw-r--r--asm/non_matching/scroll/sub_08080808.inc31
-rw-r--r--asm/non_matching/scroll/sub_08080B60.inc49
-rw-r--r--asm/non_matching/scroll/sub_08080BC4.inc98
-rw-r--r--asm/non_matching/scroll/sub_08080C80.inc22
-rw-r--r--asm/non_matching/scroll/sub_08080CB4.inc136
-rw-r--r--asm/scroll.s1658
-rw-r--r--include/fileselect.h1
-rw-r--r--include/room.h2
-rw-r--r--linker.ld2
-rw-r--r--src/scroll.c150
27 files changed, 2068 insertions, 2097 deletions
diff --git a/asm/code_0808091C.s b/asm/code_0808091C.s
deleted file mode 100755
index db7a753c..00000000
--- a/asm/code_0808091C.s
+++ /dev/null
@@ -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
diff --git a/asm/non_matching/code_0805EC04/sub_0805ED30.inc b/asm/non_matching/code_0805EC04/sub_0805ED30.inc
new file mode 100644
index 00000000..bdf6bc56
--- /dev/null
+++ b/asm/non_matching/code_0805EC04/sub_0805ED30.inc
@@ -0,0 +1,115 @@
+ .syntax unified
+ push {r4, lr}
+ ldr r2, _0805ED50 @ =gPlayerState
+ adds r0, r2, #0
+ adds r0, #0x9c
+ ldr r0, [r0]
+ adds r4, r2, #0
+ cmp r0, #0
+ beq _0805ED88
+ adds r1, r4, #0
+ adds r1, #0x90
+ ldr r2, [r1, #0xc]
+ ldrh r0, [r1, #8]
+ cmp r0, #0
+ bne _0805ED7E
+ movs r4, #0
+ b _0805ED62
+ .align 2, 0
+_0805ED50: .4byte gPlayerState
+_0805ED54:
+ cmp r0, #2
+ beq _0805ED5E
+ strh r3, [r1, #8]
+ ldrh r0, [r2, #2]
+ strh r0, [r1, #0xa]
+_0805ED5E:
+ adds r2, #4
+ b _0805ED7C
+_0805ED62:
+ ldrh r3, [r2]
+ lsrs r0, r3, #0xe
+ cmp r0, #1
+ bne _0805ED72
+ movs r3, #2
+ ldrsh r0, [r2, r3]
+ adds r2, r2, r0
+ b _0805ED62
+_0805ED72:
+ cmp r0, #3
+ bne _0805ED54
+ strh r4, [r1, #8]
+ strh r4, [r1, #0xa]
+ movs r2, #0
+_0805ED7C:
+ str r2, [r1, #0xc]
+_0805ED7E:
+ ldrh r0, [r1, #8]
+ subs r0, #1
+ strh r0, [r1, #8]
+ ldrh r1, [r1, #0xa]
+ b _0805EDCA
+_0805ED88:
+ adds r0, r4, #0
+ adds r0, #0x8b
+ ldrb r0, [r0]
+ cmp r0, #3
+ bgt _0805ED98
+ cmp r0, #0
+ blt _0805ED98
+ movs r1, #0
+_0805ED98:
+ adds r2, r4, #0
+ adds r2, #0x8b
+ ldrb r0, [r2]
+ cmp r0, #1
+ beq _0805EDB4
+ cmp r0, #1
+ bgt _0805EDAC
+ cmp r0, #0
+ beq _0805EDC6
+ b _0805EDCA
+_0805EDAC:
+ cmp r0, #3
+ bgt _0805EDCA
+ movs r1, #0
+ b _0805EDCA
+_0805EDB4:
+ movs r0, #0
+ strb r0, [r2]
+ ldr r0, _0805EDF8 @ =gInput
+ ldrh r0, [r0]
+ bl sub_0805EE04
+ adds r1, r4, #0
+ adds r1, #0x90
+ strh r0, [r1]
+_0805EDC6:
+ ldr r0, _0805EDF8 @ =gInput
+ ldrh r1, [r0]
+_0805EDCA:
+ adds r0, r1, #0
+ bl sub_0805EE04
+ ldr r3, _0805EDFC @ =gPlayerState
+ adds r1, r3, #0
+ adds r1, #0x90
+ ldrh r2, [r1]
+ strh r0, [r1]
+ adds r1, r0, #0
+ bics r1, r2
+ adds r2, r3, #0
+ adds r2, #0x92
+ strh r1, [r2]
+ ldr r2, _0805EE00 @ =gUnk_08109202
+ movs r1, #0xf0
+ lsls r1, r1, #4
+ ands r1, r0
+ lsrs r1, r1, #8
+ adds r1, r1, r2
+ ldrb r0, [r1]
+ strb r0, [r3, #0xd]
+ pop {r4, pc}
+ .align 2, 0
+_0805EDF8: .4byte gInput
+_0805EDFC: .4byte gPlayerState
+_0805EE00: .4byte gUnk_08109202
+ .syntax divided
diff --git a/asm/non_matching/scroll/DoExitTransition.inc b/asm/non_matching/scroll/DoExitTransition.inc
new file mode 100644
index 00000000..34c648cf
--- /dev/null
+++ b/asm/non_matching/scroll/DoExitTransition.inc
@@ -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
diff --git a/asm/non_matching/scroll/UpdateDoorTransition.inc b/asm/non_matching/scroll/UpdateDoorTransition.inc
new file mode 100644
index 00000000..680b0c78
--- /dev/null
+++ b/asm/non_matching/scroll/UpdateDoorTransition.inc
@@ -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
diff --git a/asm/non_matching/scroll/sub_0807FC7C.inc b/asm/non_matching/scroll/sub_0807FC7C.inc
new file mode 100644
index 00000000..57cf9ed2
--- /dev/null
+++ b/asm/non_matching/scroll/sub_0807FC7C.inc
@@ -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
diff --git a/asm/non_matching/scroll/sub_0807FDF8.inc b/asm/non_matching/scroll/sub_0807FDF8.inc
new file mode 100644
index 00000000..2bd0510a
--- /dev/null
+++ b/asm/non_matching/scroll/sub_0807FDF8.inc
@@ -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
diff --git a/asm/non_matching/scroll/sub_0807FF6C.inc b/asm/non_matching/scroll/sub_0807FF6C.inc
new file mode 100644
index 00000000..665d72e0
--- /dev/null
+++ b/asm/non_matching/scroll/sub_0807FF6C.inc
@@ -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
diff --git a/asm/non_matching/scroll/sub_0807FFE4.inc b/asm/non_matching/scroll/sub_0807FFE4.inc
new file mode 100644
index 00000000..b7bf033b
--- /dev/null
+++ b/asm/non_matching/scroll/sub_0807FFE4.inc
@@ -0,0 +1,39 @@
+ .syntax unified
+ push {r4, r5, lr}
+ adds r5, r0, #0
+ movs r0, #2
+ strb r0, [r5, #3]
+ bl sub_080803D0
+ adds r0, #6
+ strh r0, [r5, #0x18]
+ ldr r4, _0808002C @ =gUnk_0200B640
+ bl sub_08080278
+ strh r0, [r4]
+ ldr r1, _08080030 @ =gUnk_08109194
+ ldr r0, _08080034 @ =gUnk_03004030
+ ldr r0, [r0]
+ ldrb r0, [r0, #3]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl sub_080197D4
+ ldr r4, _08080038 @ =gMapDataTop
+ ldrh r1, [r5, #0x1e]
+ lsrs r1, r1, #4
+ ldrh r2, [r5, #0x20]
+ lsrs r2, r2, #4
+ adds r0, r4, #0
+ bl sub_0807C8B0
+ ldr r0, _0808003C @ =gMapDataTopSpecial
+ subs r4, #4
+ adds r1, r4, #0
+ bl sub_0801AB08
+ pop {r4, r5, pc}
+ .align 2, 0
+_0808002C: .4byte gUnk_0200B640
+_08080030: .4byte gUnk_08109194
+_08080034: .4byte gUnk_03004030
+_08080038: .4byte gMapDataTop
+_0808003C: .4byte gMapDataTopSpecial
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080040.inc b/asm/non_matching/scroll/sub_08080040.inc
new file mode 100644
index 00000000..36ecbde3
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080040.inc
@@ -0,0 +1,102 @@
+ .syntax unified
+ push {r4, r5, r6, r7, lr}
+ adds r5, r0, #0
+ ldrh r4, [r5, #0x18]
+ subs r4, #6
+ strh r4, [r5, #0x18]
+ ldrh r0, [r5, #0x18]
+ lsls r0, r0, #1
+ movs r1, #3
+ bl __divsi3
+ strh r0, [r5, #0x1a]
+ lsls r4, r4, #0x10
+ lsrs r4, r4, #0x10
+ cmp r4, #0x2a
+ bls _080800C6
+ ldr r3, [r5, #0x30]
+ movs r1, #0x2e
+ ldrsh r0, [r3, r1]
+ movs r2, #0xa
+ ldrsh r1, [r5, r2]
+ subs r2, r0, r1
+ ldrh r1, [r5, #0x18]
+ subs r0, r2, r1
+ adds r7, r0, #0
+ adds r7, #8
+ cmp r7, #0
+ bge _08080078
+ movs r7, #0
+_08080078:
+ adds r0, r2, r1
+ adds r6, r0, #0
+ subs r6, #8
+ cmp r6, #0xf0
+ ble _08080084
+ movs r6, #0xf0
+_08080084:
+ movs r1, #0x32
+ ldrsh r0, [r3, r1]
+ movs r2, #0xc
+ ldrsh r1, [r5, r2]
+ subs r2, r0, r1
+ ldrh r1, [r5, #0x1a]
+ subs r0, r2, r1
+ adds r4, r0, #0
+ adds r4, #8
+ cmp r4, #0
+ bge _0808009C
+ movs r4, #0
+_0808009C:
+ adds r0, r2, r1
+ adds r3, r0, #0
+ subs r3, #8
+ cmp r3, #0xa0
+ ble _080800A8
+ movs r3, #0xa0
+_080800A8:
+ ldr r2, _080800F0 @ =gScreen
+ movs r1, #0xff
+ ands r7, r1
+ lsls r0, r7, #8
+ ands r6, r1
+ orrs r0, r6
+ adds r6, r2, #0
+ adds r6, #0x5a
+ strh r0, [r6]
+ ands r4, r1
+ lsls r0, r4, #8
+ ands r3, r1
+ orrs r0, r3
+ adds r2, #0x5e
+ strh r0, [r2]
+_080800C6:
+ ldrh r0, [r5, #0x18]
+ cmp r0, #0
+ bne _080800FC
+ movs r0, #3
+ strb r0, [r5, #3]
+ bl DeleteSleepingEntities
+ bl sub_0807C810
+ ldr r1, _080800F4 @ =gUnk_08109194
+ ldr r0, _080800F8 @ =gUnk_03004030
+ ldr r0, [r0]
+ ldrb r0, [r0, #3]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r0, [r0]
+ ldr r0, [r0, #4]
+ bl sub_08080C80
+ b _08080102
+ .align 2, 0
+_080800F0: .4byte gScreen
+_080800F4: .4byte gUnk_08109194
+_080800F8: .4byte gUnk_03004030
+_080800FC:
+ ldr r1, _08080104 @ =gUpdateVisibleTiles
+ movs r0, #4
+ strb r0, [r1]
+_08080102:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08080104: .4byte gUpdateVisibleTiles
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080108.inc b/asm/non_matching/scroll/sub_08080108.inc
new file mode 100644
index 00000000..fd0375ea
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080108.inc
@@ -0,0 +1,56 @@
+ .syntax unified
+ push {r4, r5, r6, lr}
+ movs r1, #4
+ strb r1, [r0, #3]
+ ldr r5, _08080178 @ =gMapDataBottom
+ movs r0, #0xc0
+ lsls r0, r0, #6
+ adds r1, r5, r0
+ movs r6, #0x80
+ lsls r6, r6, #6
+ adds r0, r5, #0
+ adds r2, r6, #0
+ bl MemCopy
+ ldr r4, _0808017C @ =gMapDataTop
+ movs r0, #0xc0
+ lsls r0, r0, #6
+ adds r1, r4, r0
+ adds r0, r4, #0
+ adds r2, r6, #0
+ bl MemCopy
+ bl sub_08080368
+ ldr r1, _08080180 @ =gUnk_02034480
+ ldr r0, _08080184 @ =gUnk_0200B640
+ ldrh r0, [r0]
+ strh r0, [r1]
+ ldr r0, _08080188 @ =gUnk_02022830
+ ldr r1, _0808018C @ =gUnk_020246B0
+ movs r2, #0xc0
+ lsls r2, r2, #5
+ bl MemCopy
+ subs r5, #4
+ adds r0, r5, #0
+ bl sub_08080B60
+ subs r4, #4
+ adds r0, r4, #0
+ bl sub_08080B60
+ bl sub_0807BBE4
+ bl sub_0807BC84
+ bl sub_0805E248
+ ldr r0, _08080190 @ =gUnk_02019EE0
+ adds r1, r5, #0
+ bl sub_0801AB08
+ ldr r0, _08080194 @ =gMapDataTopSpecial
+ adds r1, r4, #0
+ bl sub_0801AB08
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08080178: .4byte gMapDataBottom
+_0808017C: .4byte gMapDataTop
+_08080180: .4byte gUnk_02034480
+_08080184: .4byte gUnk_0200B640
+_08080188: .4byte gUnk_02022830
+_0808018C: .4byte gUnk_020246B0
+_08080190: .4byte gUnk_02019EE0
+_08080194: .4byte gMapDataTopSpecial
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_080801BC.inc b/asm/non_matching/scroll/sub_080801BC.inc
new file mode 100644
index 00000000..efa96fb5
--- /dev/null
+++ b/asm/non_matching/scroll/sub_080801BC.inc
@@ -0,0 +1,100 @@
+ .syntax unified
+ push {r4, r5, r6, r7, lr}
+ adds r5, r0, #0
+ ldrh r4, [r5, #0x18]
+ adds r4, #6
+ strh r4, [r5, #0x18]
+ ldrh r0, [r5, #0x18]
+ lsls r0, r0, #1
+ movs r1, #3
+ bl __divsi3
+ strh r0, [r5, #0x1a]
+ lsls r4, r4, #0x10
+ lsrs r4, r4, #0x10
+ cmp r4, #0x1e
+ bls _08080232
+ ldr r2, [r5, #0x30]
+ movs r0, #0x2e
+ ldrsh r1, [r2, r0]
+ movs r3, #0xa
+ ldrsh r0, [r5, r3]
+ subs r0, r1, r0
+ ldrh r1, [r5, #0x18]
+ subs r7, r0, r1
+ cmp r7, #0
+ bge _080801F0
+ movs r7, #0
+_080801F0:
+ adds r6, r0, r1
+ cmp r6, #0xf0
+ ble _080801F8
+ movs r6, #0xf0
+_080801F8:
+ movs r0, #0x32
+ ldrsh r1, [r2, r0]
+ movs r2, #0xc
+ ldrsh r0, [r5, r2]
+ subs r0, r1, r0
+ ldrh r1, [r5, #0x1a]
+ subs r4, r0, r1
+ cmp r4, #0
+ bge _0808020C
+ movs r4, #0
+_0808020C:
+ adds r3, r0, r1
+ cmp r3, #0xa0
+ ble _08080214
+ movs r3, #0xa0
+_08080214:
+ ldr r2, _08080260 @ =gScreen
+ movs r1, #0xff
+ ands r7, r1
+ lsls r0, r7, #8
+ ands r6, r1
+ orrs r0, r6
+ adds r6, r2, #0
+ adds r6, #0x5a
+ strh r0, [r6]
+ ands r4, r1
+ lsls r0, r4, #8
+ ands r3, r1
+ orrs r0, r3
+ adds r2, #0x5e
+ strh r0, [r2]
+_08080232:
+ ldrh r0, [r5, #0x1c]
+ cmp r0, #0
+ bne _08080268
+ strb r0, [r5, #2]
+ strh r0, [r5]
+ bl ResetSystemPriority
+ ldr r1, _08080260 @ =gScreen
+ ldrh r2, [r1]
+ ldr r0, _08080264 @ =0x0000BFFF
+ ands r0, r2
+ strh r0, [r1]
+ adds r2, r1, #0
+ adds r2, #0x60
+ ldrb r0, [r2]
+ strh r0, [r2]
+ adds r1, #0x62
+ ldrh r2, [r1]
+ movs r0, #0xff
+ lsls r0, r0, #8
+ ands r0, r2
+ strh r0, [r1]
+ b _08080272
+ .align 2, 0
+_08080260: .4byte gScreen
+_08080264: .4byte 0x0000BFFF
+_08080268:
+ ldr r0, _08080274 @ =gUpdateVisibleTiles
+ movs r1, #4
+ strb r1, [r0]
+ movs r0, #0
+ strh r0, [r5, #0x1c]
+_08080272:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08080274: .4byte gUpdateVisibleTiles
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080278.inc b/asm/non_matching/scroll/sub_08080278.inc
new file mode 100644
index 00000000..0d83261e
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080278.inc
@@ -0,0 +1,120 @@
+ .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 r0, _08080344 @ =gUnk_02022830
+ mov ip, r0
+ ldr r1, _08080348 @ =gRoomControls
+ ldrh r0, [r1, #0x1e]
+ lsrs r0, r0, #4
+ str r0, [sp]
+ ldrh r0, [r1, #0x20]
+ lsrs r0, r0, #4
+ lsls r0, r0, #6
+ str r0, [sp, #4]
+ movs r5, #0
+ mov sl, r5
+ cmp r5, r0
+ bhs _08080336
+ mov sb, r5
+_080802A2:
+ movs r1, #0
+ mov r8, r1
+ ldr r0, [sp]
+ cmp r8, r0
+ bhs _08080328
+ ldr r4, _0808034C @ =gMapDataTop
+ add r4, sb
+ ldr r7, _08080350 @ =gUnk_0200E654
+ add r7, sb
+ ldr r3, _08080354 @ =gMapDataBottom
+ add r3, sb
+ ldr r6, _08080358 @ =gUnk_02028EB4
+ add r6, sb
+_080802BC:
+ mov r2, sl
+ add r2, r8
+ ldrh r0, [r6]
+ ldrh r1, [r3]
+ cmp r0, r1
+ beq _080802EA
+ ldr r0, _0808035C @ =0x00003FFF
+ cmp r1, r0
+ bhi _080802EA
+ adds r0, #1
+ adds r1, r0, #0
+ adds r0, r2, #0
+ orrs r0, r1
+ mov r1, ip
+ strh r0, [r1]
+ ldrh r0, [r3]
+ strh r0, [r1, #2]
+ movs r0, #4
+ add ip, r0
+ adds r5, #1
+ ldr r0, _08080360 @ =0x000005FF
+ cmp r5, r0
+ bhi _08080336
+_080802EA:
+ ldrh r0, [r7]
+ ldrh r1, [r4]
+ cmp r0, r1
+ beq _08080316
+ ldr r0, _0808035C @ =0x00003FFF
+ cmp r1, r0
+ bhi _08080316
+ movs r1, #0x80
+ lsls r1, r1, #8
+ adds r0, r1, #0
+ orrs r2, r0
+ mov r0, ip
+ strh r2, [r0]
+ ldrh r0, [r4]
+ mov r1, ip
+ strh r0, [r1, #2]
+ movs r0, #4
+ add ip, r0
+ adds r5, #1
+ ldr r0, _08080364 @ =0x000007FF
+ cmp r5, r0
+ bhi _08080336
+_08080316:
+ adds r4, #2
+ adds r7, #2
+ adds r3, #2
+ adds r6, #2
+ movs r1, #1
+ add r8, r1
+ ldr r0, [sp]
+ cmp r8, r0
+ blo _080802BC
+_08080328:
+ movs r1, #0x80
+ add sb, r1
+ movs r0, #0x40
+ add sl, r0
+ ldr r1, [sp, #4]
+ cmp sl, r1
+ blo _080802A2
+_08080336:
+ adds r0, r5, #0
+ 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
+_08080344: .4byte gUnk_02022830
+_08080348: .4byte gRoomControls
+_0808034C: .4byte gMapDataTop
+_08080350: .4byte gUnk_0200E654
+_08080354: .4byte gMapDataBottom
+_08080358: .4byte gUnk_02028EB4
+_0808035C: .4byte 0x00003FFF
+_08080360: .4byte 0x000005FF
+_08080364: .4byte 0x000007FF
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080368.inc b/asm/non_matching/scroll/sub_08080368.inc
new file mode 100644
index 00000000..f86b2383
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080368.inc
@@ -0,0 +1,51 @@
+ .syntax unified
+ push {r4, r5, r6, r7, lr}
+ ldr r0, _08080384 @ =gUnk_03004030
+ ldr r1, _08080388 @ =gRoomControls
+ ldrb r0, [r0, #0xa]
+ ldrb r1, [r1, #4]
+ cmp r0, r1
+ beq _08080390
+ cmp r0, #0xff
+ beq _08080390
+ ldr r1, _0808038C @ =gUnk_02034480
+ movs r0, #0
+ strh r0, [r1]
+ b _080803BE
+ .align 2, 0
+_08080384: .4byte gUnk_03004030
+_08080388: .4byte gRoomControls
+_0808038C: .4byte gUnk_02034480
+_08080390:
+ ldr r5, _080803C0 @ =gUnk_020246B0
+ ldr r0, _080803C4 @ =gUnk_02034480
+ ldrh r0, [r0]
+ lsls r6, r0, #1
+ movs r4, #0
+ cmp r4, r6
+ bhs _080803B8
+ ldr r0, _080803C8 @ =0x00000FFF
+ adds r7, r0, #0
+_080803A2:
+ ldrh r0, [r5, #2]
+ ldrh r2, [r5]
+ adds r1, r7, #0
+ ands r1, r2
+ lsrs r2, r2, #0xe
+ bl sub_0807B9B8
+ adds r5, #4
+ adds r4, #2
+ cmp r4, r6
+ blo _080803A2
+_080803B8:
+ ldr r1, _080803CC @ =gUpdateVisibleTiles
+ movs r0, #0
+ strb r0, [r1]
+_080803BE:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_080803C0: .4byte gUnk_020246B0
+_080803C4: .4byte gUnk_02034480
+_080803C8: .4byte 0x00000FFF
+_080803CC: .4byte gUpdateVisibleTiles
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_080803D0.inc b/asm/non_matching/scroll/sub_080803D0.inc
new file mode 100644
index 00000000..f95374f7
--- /dev/null
+++ b/asm/non_matching/scroll/sub_080803D0.inc
@@ -0,0 +1,290 @@
+ .syntax unified
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, sb
+ mov r5, r8
+ push {r5, r6, r7}
+ sub sp, #0x38
+ ldr r1, _080804F0 @ =gRoomControls
+ movs r2, #0xa
+ ldrsh r0, [r1, r2]
+ ldrh r2, [r1, #6]
+ subs r0, r0, r2
+ str r0, [sp, #0x18]
+ ldr r3, [r1, #0x30]
+ movs r4, #0x2e
+ ldrsh r0, [r3, r4]
+ subs r0, r0, r2
+ str r0, [sp, #0x10]
+ movs r2, #0xc
+ ldrsh r0, [r1, r2]
+ ldrh r1, [r1, #8]
+ subs r0, r0, r1
+ str r0, [sp, #0x1c]
+ movs r4, #0x32
+ ldrsh r0, [r3, r4]
+ subs r0, r0, r1
+ str r0, [sp, #0x14]
+ movs r0, #0x3c
+ str r0, [sp, #8]
+_08080408:
+ movs r7, #0
+ ldr r1, [sp, #8]
+ adds r1, #6
+ str r1, [sp, #8]
+ adds r2, r1, #0
+ muls r2, r1, r2
+ mov sl, r2
+ lsls r4, r1, #1
+ adds r0, r4, #0
+ movs r1, #3
+ bl __divsi3
+ str r0, [sp, #0xc]
+ adds r1, r0, #0
+ muls r1, r0, r1
+ mov sb, r1
+ movs r2, #0
+ str r2, [sp, #4]
+ rsbs r4, r4, #0
+ adds r4, #1
+ mov r0, sb
+ muls r0, r4, r0
+ mov r4, sl
+ lsls r5, r4, #1
+ adds r4, r0, r5
+ ldr r0, [sp, #8]
+ mov r6, sb
+ muls r6, r0, r6
+ adds r0, r6, #0
+ mov r1, sl
+ bl __divsi3
+ adds r2, r0, #0
+ cmp r7, r2
+ bgt _08080506
+ ldr r1, [sp, #0x18]
+ adds r1, #0xf8
+ str r1, [sp, #0x20]
+ mov r1, sl
+ adds r0, r5, r1
+ lsls r3, r0, #1
+ str r6, [sp, #0x2c]
+ ldr r0, [sp, #8]
+ lsls r1, r0, #2
+ rsbs r1, r1, #0
+ adds r1, #4
+ mov r8, r1
+ rsbs r0, r0, #0
+ adds r0, #8
+ ldr r1, [sp, #0x10]
+ adds r6, r0, r1
+ ldr r0, [sp, #8]
+ adds r5, r0, r1
+ mov r0, r8
+ mov r1, sb
+ muls r1, r0, r1
+ mov r8, r1
+_0808047A:
+ ldr r1, [sp, #0x1c]
+ adds r1, #0xa8
+ mov ip, r1
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #4]
+ adds r0, r0, r1
+ str r0, [sp, #0x34]
+ cmp ip, r0
+ ble _080804A0
+ ldr r0, [sp, #0x20]
+ cmp r0, r5
+ ble _08080496
+ movs r0, #1
+ orrs r7, r0
+_08080496:
+ ldr r1, [sp, #0x18]
+ cmp r1, r6
+ bge _080804A0
+ movs r0, #2
+ orrs r7, r0
+_080804A0:
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #4]
+ subs r0, r0, r1
+ mov ip, r0
+ adds r0, #8
+ ldr r1, [sp, #0x1c]
+ cmp r1, r0
+ bge _080804C4
+ ldr r0, [sp, #0x20]
+ cmp r0, r5
+ ble _080804BA
+ movs r0, #4
+ orrs r7, r0
+_080804BA:
+ ldr r1, [sp, #0x18]
+ cmp r1, r6
+ bge _080804C4
+ movs r0, #8
+ orrs r7, r0
+_080804C4:
+ cmp r4, #0
+ ble _080804F4
+ mov r2, r8
+ adds r0, r2, r3
+ adds r4, r4, r0
+ ldr r0, [sp, #0x2c]
+ mov r1, sb
+ subs r0, r0, r1
+ str r0, [sp, #0x2c]
+ lsls r0, r1, #2
+ add r8, r0
+ adds r6, #1
+ subs r5, #1
+ ldr r0, [sp, #0x2c]
+ mov r1, sl
+ str r3, [sp, #0x30]
+ bl __divsi3
+ adds r2, r0, #0
+ ldr r3, [sp, #0x30]
+ b _080804F6
+ .align 2, 0
+_080804F0: .4byte gRoomControls
+_080804F4:
+ adds r4, r4, r3
+_080804F6:
+ mov r1, sl
+ lsls r0, r1, #2
+ adds r3, r3, r0
+ ldr r0, [sp, #4]
+ adds r0, #1
+ str r0, [sp, #4]
+ cmp r0, r2
+ ble _0808047A
+_08080506:
+ movs r1, #0
+ str r1, [sp]
+ ldr r2, [sp, #0xc]
+ str r2, [sp, #4]
+ mov r4, sb
+ lsls r6, r4, #1
+ lsls r0, r2, #1
+ rsbs r0, r0, #0
+ adds r0, #1
+ mov r1, sl
+ muls r1, r0, r1
+ adds r0, r1, #0
+ adds r4, r6, r0
+ mov r5, sl
+ muls r5, r2, r5
+ adds r0, r5, #0
+ mov r1, sb
+ bl __divsi3
+ adds r2, r0, #0
+ ldr r0, [sp]
+ cmp r0, r2
+ bgt _080805E4
+ ldr r1, [sp, #0x18]
+ adds r1, #0xf8
+ str r1, [sp, #0x24]
+ mov r1, sb
+ adds r0, r6, r1
+ lsls r0, r0, #1
+ mov r8, r0
+ ldr r3, [sp, #0x10]
+ adds r3, #8
+ ldr r6, [sp, #0x10]
+ str r5, [sp, #0x28]
+ ldr r1, [sp, #4]
+ lsls r0, r1, #2
+ rsbs r0, r0, #0
+ adds r0, #4
+ mov r5, sl
+ muls r5, r0, r5
+_08080556:
+ ldr r0, [sp, #0x1c]
+ adds r0, #0xa8
+ mov ip, r0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #4]
+ adds r1, r1, r0
+ str r1, [sp, #0x34]
+ cmp ip, r1
+ ble _0808057C
+ ldr r1, [sp, #0x24]
+ cmp r1, r6
+ ble _08080572
+ movs r0, #0x10
+ orrs r7, r0
+_08080572:
+ ldr r0, [sp, #0x18]
+ cmp r0, r3
+ bge _0808057C
+ movs r0, #0x20
+ orrs r7, r0
+_0808057C:
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #4]
+ subs r1, r1, r0
+ mov ip, r1
+ mov r0, ip
+ adds r0, #8
+ ldr r1, [sp, #0x1c]
+ cmp r1, r0
+ bge _080805A2
+ ldr r0, [sp, #0x24]
+ cmp r0, r6
+ ble _08080598
+ movs r0, #0x40
+ orrs r7, r0
+_08080598:
+ ldr r1, [sp, #0x18]
+ cmp r1, r3
+ bge _080805A2
+ movs r0, #0x80
+ orrs r7, r0
+_080805A2:
+ cmp r4, #0
+ ble _080805CE
+ mov r2, r8
+ adds r0, r2, r5
+ adds r4, r4, r0
+ ldr r0, [sp, #0x28]
+ mov r1, sl
+ subs r0, r0, r1
+ str r0, [sp, #0x28]
+ lsls r0, r1, #2
+ adds r5, r5, r0
+ ldr r2, [sp, #4]
+ subs r2, #1
+ str r2, [sp, #4]
+ ldr r0, [sp, #0x28]
+ mov r1, sb
+ str r3, [sp, #0x30]
+ bl __divsi3
+ adds r2, r0, #0
+ ldr r3, [sp, #0x30]
+ b _080805D0
+_080805CE:
+ add r4, r8
+_080805D0:
+ mov r1, sb
+ lsls r0, r1, #2
+ add r8, r0
+ subs r3, #1
+ adds r6, #1
+ ldr r0, [sp]
+ adds r0, #1
+ str r0, [sp]
+ cmp r0, r2
+ ble _08080556
+_080805E4:
+ cmp r7, #0
+ beq _080805EA
+ b _08080408
+_080805EA:
+ ldr r0, [sp, #8]
+ add sp, #0x38
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov sb, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7, pc}
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_080806BC.inc b/asm/non_matching/scroll/sub_080806BC.inc
new file mode 100644
index 00000000..40bc8ac1
--- /dev/null
+++ b/asm/non_matching/scroll/sub_080806BC.inc
@@ -0,0 +1,61 @@
+ .syntax unified
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, sb
+ mov r5, r8
+ push {r5, r6, r7}
+ mov sb, r0
+ mov r8, r1
+ adds r7, r2, #0
+ adds r6, r3, #0
+ ldr r0, _08080710 @ =gArea
+ ldr r1, _08080714 @ =0x0000085C
+ adds r0, r0, r1
+ ldr r0, [r0]
+ ldr r5, [r0, #0x18]
+ ldrh r0, [r5]
+ ldr r1, _08080718 @ =0x0000FFFF
+ cmp r0, r1
+ beq _08080728
+ mov sl, r1
+_080806E2:
+ ldrh r2, [r5]
+ movs r0, #1
+ lsls r0, r2
+ ands r0, r6
+ cmp r0, #0
+ beq _08080720
+ ldr r1, _0808071C @ =gUnk_0811E7AC
+ lsls r0, r2, #2
+ adds r0, r0, r1
+ ldr r4, [r0]
+ adds r0, r5, #0
+ mov r1, sb
+ mov r2, r8
+ adds r3, r7, #0
+ bl _call_via_r4
+ cmp r0, #0
+ beq _08080720
+ adds r0, r5, #0
+ bl DoExitTransition
+ movs r0, #1
+ b _0808072A
+ .align 2, 0
+_08080710: .4byte gArea
+_08080714: .4byte 0x0000085C
+_08080718: .4byte 0x0000FFFF
+_0808071C: .4byte gUnk_0811E7AC
+_08080720:
+ adds r5, #0x14
+ ldrh r0, [r5]
+ cmp r0, sl
+ bne _080806E2
+_08080728:
+ movs r0, #0
+_0808072A:
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov sb, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7, pc}
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080734.inc b/asm/non_matching/scroll/sub_08080734.inc
new file mode 100644
index 00000000..b4e14ef6
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080734.inc
@@ -0,0 +1,51 @@
+ .syntax unified
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ adds r6, r0, #0
+ adds r5, r1, #0
+ ldr r0, _08080778 @ =gArea
+ ldr r1, _0808077C @ =0x0000085C
+ adds r0, r0, r1
+ ldr r0, [r0]
+ ldr r4, [r0, #0x18]
+ movs r0, #0xa
+ mov r8, r0
+ ldrh r0, [r4]
+ ldr r1, _08080780 @ =0x0000FFFF
+ cmp r0, r1
+ beq _0808078C
+ adds r7, r1, #0
+_08080756:
+ movs r0, #1
+ ldrh r1, [r4]
+ lsls r0, r1
+ mov r1, r8
+ ands r0, r1
+ cmp r0, #0
+ beq _08080784
+ adds r0, r4, #0
+ adds r1, r6, #0
+ adds r2, r5, #0
+ movs r3, #0
+ bl sub_08080808
+ cmp r0, #0
+ beq _08080784
+ adds r0, r4, #0
+ b _0808078E
+ .align 2, 0
+_08080778: .4byte gArea
+_0808077C: .4byte 0x0000085C
+_08080780: .4byte 0x0000FFFF
+_08080784:
+ adds r4, #0x14
+ ldrh r0, [r4]
+ cmp r0, r7
+ bne _08080756
+_0808078C:
+ movs r0, #0
+_0808078E:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080794.inc b/asm/non_matching/scroll/sub_08080794.inc
new file mode 100644
index 00000000..f4d24eea
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080794.inc
@@ -0,0 +1,66 @@
+ .syntax unified
+ push {r4, lr}
+ adds r4, r0, #0
+ cmp r3, #1
+ beq _080807C0
+ cmp r3, #1
+ blo _080807AC
+ cmp r3, #2
+ beq _080807D4
+ cmp r3, #3
+ beq _080807E8
+_080807A8:
+ movs r0, #0
+ b _08080800
+_080807AC:
+ ldr r0, _080807BC @ =gRoomControls
+ ldrh r0, [r0, #0x1e]
+ lsrs r0, r0, #1
+ movs r3, #1
+ cmp r0, r1
+ bhs _080807F6
+ movs r3, #2
+ b _080807F6
+ .align 2, 0
+_080807BC: .4byte gRoomControls
+_080807C0:
+ ldr r0, _080807D0 @ =gRoomControls
+ ldrh r0, [r0, #0x20]
+ lsrs r0, r0, #1
+ movs r3, #4
+ cmp r0, r2
+ bhs _080807F6
+ movs r3, #8
+ b _080807F6
+ .align 2, 0
+_080807D0: .4byte gRoomControls
+_080807D4:
+ ldr r0, _080807E4 @ =gRoomControls
+ ldrh r0, [r0, #0x1e]
+ lsrs r0, r0, #1
+ movs r3, #0x10
+ cmp r0, r1
+ bhs _080807F6
+ movs r3, #0x20
+ b _080807F6
+ .align 2, 0
+_080807E4: .4byte gRoomControls
+_080807E8:
+ ldr r0, _08080804 @ =gRoomControls
+ ldrh r0, [r0, #0x20]
+ lsrs r0, r0, #1
+ movs r3, #0x40
+ cmp r0, r2
+ bhs _080807F6
+ movs r3, #0x80
+_080807F6:
+ ldrb r0, [r4, #0xa]
+ ands r0, r3
+ cmp r0, #0
+ beq _080807A8
+ movs r0, #1
+_08080800:
+ pop {r4, pc}
+ .align 2, 0
+_08080804: .4byte gRoomControls
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080808.inc b/asm/non_matching/scroll/sub_08080808.inc
new file mode 100644
index 00000000..f06061d2
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080808.inc
@@ -0,0 +1,31 @@
+ .syntax unified
+ push {r4, r5, lr}
+ adds r3, r0, #0
+ adds r5, r2, #0
+ ldrb r0, [r3, #0xa]
+ lsls r0, r0, #1
+ ldr r2, _08080838 @ =gUnk_0811E7BC
+ adds r4, r0, r2
+ ldrb r0, [r4]
+ ldrh r2, [r3, #2]
+ subs r1, r1, r2
+ adds r1, r1, r0
+ lsls r0, r0, #1
+ cmp r1, r0
+ bhi _0808083C
+ ldrb r1, [r4, #1]
+ ldrh r0, [r3, #4]
+ subs r0, r5, r0
+ adds r0, r0, r1
+ lsls r1, r1, #1
+ cmp r0, r1
+ bhi _0808083C
+ movs r0, #1
+ b _0808083E
+ .align 2, 0
+_08080838: .4byte gUnk_0811E7BC
+_0808083C:
+ movs r0, #0
+_0808083E:
+ pop {r4, r5, pc}
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080B60.inc b/asm/non_matching/scroll/sub_08080B60.inc
new file mode 100644
index 00000000..43285ef1
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080B60.inc
@@ -0,0 +1,49 @@
+ .syntax unified
+ 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}
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080BC4.inc b/asm/non_matching/scroll/sub_08080BC4.inc
new file mode 100644
index 00000000..4a515069
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080BC4.inc
@@ -0,0 +1,98 @@
+ .syntax unified
+ 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
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080C80.inc b/asm/non_matching/scroll/sub_08080C80.inc
new file mode 100644
index 00000000..d61686c3
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080C80.inc
@@ -0,0 +1,22 @@
+ .syntax unified
+ 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
+ .syntax divided
diff --git a/asm/non_matching/scroll/sub_08080CB4.inc b/asm/non_matching/scroll/sub_08080CB4.inc
new file mode 100644
index 00000000..8e6e198f
--- /dev/null
+++ b/asm/non_matching/scroll/sub_08080CB4.inc
@@ -0,0 +1,136 @@
+ .syntax unified
+ 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
+ .syntax divided
diff --git a/asm/scroll.s b/asm/scroll.s
deleted file mode 100644
index 9401d782..00000000
--- a/asm/scroll.s
+++ /dev/null
@@ -1,1658 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start UpdateScroll
-UpdateScroll: @ 0xUpdateScroll
- push {lr}
- ldr r0, _0807FC5C @ =gRoomControls
- ldrb r2, [r0, #0xf]
- movs r1, #0xfb
- ands r1, r2
- strb r1, [r0, #0xf]
- ldr r2, _0807FC60 @ =gUnk_0811E768
- ldrb r1, [r0, #2]
- lsls r1, r1, #2
- adds r1, r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {pc}
- .align 2, 0
-_0807FC5C: .4byte gRoomControls
-_0807FC60: .4byte gUnk_0811E768
-
- thumb_func_start sub_0807FC64
-sub_0807FC64: @ 0x0807FC64
- push {lr}
- movs r2, #0
- movs r1, #1
- strb r1, [r0, #2]
- strh r2, [r0]
- movs r1, #4
- strb r1, [r0, #0xe]
- bl sub_0807FC7C
- bl sub_080805F8
- pop {pc}
-
- thumb_func_start sub_0807FC7C
-sub_0807FC7C: @ 0x0807FC7C
- 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
-
- thumb_func_start sub_0807FDB0
-sub_0807FDB0: @ 0x0807FDB0
- push {lr}
- ldr r2, _0807FDC4 @ =gUnk_0811E780
- ldrb r1, [r0, #3]
- lsls r1, r1, #2
- adds r1, r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {pc}
- .align 2, 0
-_0807FDC4: .4byte gUnk_0811E780
-
- thumb_func_start sub_0807FDC8
-sub_0807FDC8: @ 0x0807FDC8
- push {r4, r5, lr}
- adds r5, r0, #0
- ldr r4, _0807FDE0 @ =gUpdateVisibleTiles
- movs r0, #1
- strb r0, [r4]
- bl UpdateScrollVram
- movs r1, #0
- movs r0, #1
- strb r0, [r5, #3]
- strb r1, [r4]
- pop {r4, r5, pc}
- .align 2, 0
-_0807FDE0: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_0807FDE4
-sub_0807FDE4: @ 0x0807FDE4
- movs r2, #0
- movs r1, #2
- strb r1, [r0, #3]
- strh r2, [r0, #0x18]
- ldr r0, _0807FDF4 @ =gUpdateVisibleTiles
- strb r1, [r0]
- bx lr
- .align 2, 0
-_0807FDF4: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_0807FDF8
-sub_0807FDF8: @ 0x0807FDF8
- 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
-
- thumb_func_start sub_0807FEC8
-sub_0807FEC8: @ 0x0807FEC8
- push {r4, r5, lr}
- adds r5, r0, #0
- movs r0, #0
- strb r0, [r5, #2]
- subs r0, #1
- ldr r4, _0807FEEC @ =gUnk_03003FC0
- adds r1, r4, #0
- movs r2, #0x40
- bl MemFill32
- subs r4, #0x40
- ldr r1, [r5, #0x30]
- ldrh r0, [r1, #0x2e]
- strh r0, [r4, #0x16]
- ldrh r0, [r1, #0x32]
- strh r0, [r4, #0x18]
- pop {r4, r5, pc}
- .align 2, 0
-_0807FEEC: .4byte gPlayerState+0x40
-
- thumb_func_start sub_0807FEF0
-sub_0807FEF0: @ 0x0807FEF0
- push {lr}
- ldr r2, _0807FF04 @ =gUnk_0811E78C
- ldrb r1, [r0, #3]
- lsls r1, r1, #2
- adds r1, r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {pc}
- .align 2, 0
-_0807FF04: .4byte gUnk_0811E78C
-
- thumb_func_start sub_0807FF08
-sub_0807FF08: @ 0x0807FF08
- movs r2, #0
- movs r1, #1
- strb r1, [r0, #3]
- strh r2, [r0, #0x18]
- ldr r1, _0807FF18 @ =gUpdateVisibleTiles
- movs r0, #3
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0807FF18: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_0807FF1C
-sub_0807FF1C: @ 0x0807FF1C
- push {lr}
- adds r2, r0, #0
- ldr r0, _0807FF4C @ =gRoomTransition
- ldr r0, [r0]
- movs r1, #1
- ands r0, r1
- cmp r0, #0
- bne _0807FF48
- ldr r1, _0807FF50 @ =gUpdateVisibleTiles
- movs r0, #3
- strb r0, [r1]
- ldrh r0, [r2, #0x18]
- adds r0, #1
- strh r0, [r2, #0x18]
- lsls r0, r0, #0x10
- lsrs r0, r0, #0x10
- cmp r0, #0x13
- bls _0807FF48
- movs r0, #0
- strb r0, [r2, #2]
- bl ResetSystemPriority
-_0807FF48:
- pop {pc}
- .align 2, 0
-_0807FF4C: .4byte gRoomTransition
-_0807FF50: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_0807FF54
-sub_0807FF54: @ 0x0807FF54
- push {lr}
- ldr r2, _0807FF68 @ =gUnk_0811E794
- ldrb r1, [r0, #3]
- lsls r1, r1, #2
- adds r1, r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {pc}
- .align 2, 0
-_0807FF68: .4byte gUnk_0811E794
-
- thumb_func_start sub_0807FF6C
-sub_0807FF6C: @ 0x0807FF6C
- 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
-
- thumb_func_start sub_0807FFE4
-sub_0807FFE4: @ 0x0807FFE4
- push {r4, r5, lr}
- adds r5, r0, #0
- movs r0, #2
- strb r0, [r5, #3]
- bl sub_080803D0
- adds r0, #6
- strh r0, [r5, #0x18]
- ldr r4, _0808002C @ =gUnk_0200B640
- bl sub_08080278
- strh r0, [r4]
- ldr r1, _08080030 @ =gUnk_08109194
- ldr r0, _08080034 @ =gUnk_03004030
- ldr r0, [r0]
- ldrb r0, [r0, #3]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_080197D4
- ldr r4, _08080038 @ =gMapDataTop
- ldrh r1, [r5, #0x1e]
- lsrs r1, r1, #4
- ldrh r2, [r5, #0x20]
- lsrs r2, r2, #4
- adds r0, r4, #0
- bl sub_0807C8B0
- ldr r0, _0808003C @ =gMapDataTopSpecial
- subs r4, #4
- adds r1, r4, #0
- bl sub_0801AB08
- pop {r4, r5, pc}
- .align 2, 0
-_0808002C: .4byte gUnk_0200B640
-_08080030: .4byte gUnk_08109194
-_08080034: .4byte gUnk_03004030
-_08080038: .4byte gMapDataTop
-_0808003C: .4byte gMapDataTopSpecial
-
- thumb_func_start sub_08080040
-sub_08080040: @ 0x08080040
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- ldrh r4, [r5, #0x18]
- subs r4, #6
- strh r4, [r5, #0x18]
- ldrh r0, [r5, #0x18]
- lsls r0, r0, #1
- movs r1, #3
- bl __divsi3
- strh r0, [r5, #0x1a]
- lsls r4, r4, #0x10
- lsrs r4, r4, #0x10
- cmp r4, #0x2a
- bls _080800C6
- ldr r3, [r5, #0x30]
- movs r1, #0x2e
- ldrsh r0, [r3, r1]
- movs r2, #0xa
- ldrsh r1, [r5, r2]
- subs r2, r0, r1
- ldrh r1, [r5, #0x18]
- subs r0, r2, r1
- adds r7, r0, #0
- adds r7, #8
- cmp r7, #0
- bge _08080078
- movs r7, #0
-_08080078:
- adds r0, r2, r1
- adds r6, r0, #0
- subs r6, #8
- cmp r6, #0xf0
- ble _08080084
- movs r6, #0xf0
-_08080084:
- movs r1, #0x32
- ldrsh r0, [r3, r1]
- movs r2, #0xc
- ldrsh r1, [r5, r2]
- subs r2, r0, r1
- ldrh r1, [r5, #0x1a]
- subs r0, r2, r1
- adds r4, r0, #0
- adds r4, #8
- cmp r4, #0
- bge _0808009C
- movs r4, #0
-_0808009C:
- adds r0, r2, r1
- adds r3, r0, #0
- subs r3, #8
- cmp r3, #0xa0
- ble _080800A8
- movs r3, #0xa0
-_080800A8:
- ldr r2, _080800F0 @ =gScreen
- movs r1, #0xff
- ands r7, r1
- lsls r0, r7, #8
- ands r6, r1
- orrs r0, r6
- adds r6, r2, #0
- adds r6, #0x5a
- strh r0, [r6]
- ands r4, r1
- lsls r0, r4, #8
- ands r3, r1
- orrs r0, r3
- adds r2, #0x5e
- strh r0, [r2]
-_080800C6:
- ldrh r0, [r5, #0x18]
- cmp r0, #0
- bne _080800FC
- movs r0, #3
- strb r0, [r5, #3]
- bl DeleteSleepingEntities
- bl sub_0807C810
- ldr r1, _080800F4 @ =gUnk_08109194
- ldr r0, _080800F8 @ =gUnk_03004030
- ldr r0, [r0]
- ldrb r0, [r0, #3]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r0, [r0]
- ldr r0, [r0, #4]
- bl sub_08080C80
- b _08080102
- .align 2, 0
-_080800F0: .4byte gScreen
-_080800F4: .4byte gUnk_08109194
-_080800F8: .4byte gUnk_03004030
-_080800FC:
- ldr r1, _08080104 @ =gUpdateVisibleTiles
- movs r0, #4
- strb r0, [r1]
-_08080102:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08080104: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_08080108
-sub_08080108: @ 0x08080108
- push {r4, r5, r6, lr}
- movs r1, #4
- strb r1, [r0, #3]
- ldr r5, _08080178 @ =gMapDataBottom
- movs r0, #0xc0
- lsls r0, r0, #6
- adds r1, r5, r0
- movs r6, #0x80
- lsls r6, r6, #6
- adds r0, r5, #0
- adds r2, r6, #0
- bl MemCopy
- ldr r4, _0808017C @ =gMapDataTop
- movs r0, #0xc0
- lsls r0, r0, #6
- adds r1, r4, r0
- adds r0, r4, #0
- adds r2, r6, #0
- bl MemCopy
- bl sub_08080368
- ldr r1, _08080180 @ =gUnk_02034480
- ldr r0, _08080184 @ =gUnk_0200B640
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r0, _08080188 @ =gUnk_02022830
- ldr r1, _0808018C @ =gUnk_020246B0
- movs r2, #0xc0
- lsls r2, r2, #5
- bl MemCopy
- subs r5, #4
- adds r0, r5, #0
- bl sub_08080B60
- subs r4, #4
- adds r0, r4, #0
- bl sub_08080B60
- bl sub_0807BBE4
- bl sub_0807BC84
- bl sub_0805E248
- ldr r0, _08080190 @ =gUnk_02019EE0
- adds r1, r5, #0
- bl sub_0801AB08
- ldr r0, _08080194 @ =gMapDataTopSpecial
- adds r1, r4, #0
- bl sub_0801AB08
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08080178: .4byte gMapDataBottom
-_0808017C: .4byte gMapDataTop
-_08080180: .4byte gUnk_02034480
-_08080184: .4byte gUnk_0200B640
-_08080188: .4byte gUnk_02022830
-_0808018C: .4byte gUnk_020246B0
-_08080190: .4byte gUnk_02019EE0
-_08080194: .4byte gMapDataTopSpecial
-
- thumb_func_start sub_08080198
-sub_08080198: @ 0x08080198
- push {r4, lr}
- movs r1, #5
- strb r1, [r0, #3]
- movs r4, #0
- movs r1, #0xff
- strh r1, [r0, #0x1c]
- bl LoadRoom
- bl CallRoomProp5And7
- ldr r0, _080801B8 @ =gUpdateVisibleTiles
- strb r4, [r0]
- bl sub_080805F8
- pop {r4, pc}
- .align 2, 0
-_080801B8: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_080801BC
-sub_080801BC: @ 0x080801BC
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- ldrh r4, [r5, #0x18]
- adds r4, #6
- strh r4, [r5, #0x18]
- ldrh r0, [r5, #0x18]
- lsls r0, r0, #1
- movs r1, #3
- bl __divsi3
- strh r0, [r5, #0x1a]
- lsls r4, r4, #0x10
- lsrs r4, r4, #0x10
- cmp r4, #0x1e
- bls _08080232
- ldr r2, [r5, #0x30]
- movs r0, #0x2e
- ldrsh r1, [r2, r0]
- movs r3, #0xa
- ldrsh r0, [r5, r3]
- subs r0, r1, r0
- ldrh r1, [r5, #0x18]
- subs r7, r0, r1
- cmp r7, #0
- bge _080801F0
- movs r7, #0
-_080801F0:
- adds r6, r0, r1
- cmp r6, #0xf0
- ble _080801F8
- movs r6, #0xf0
-_080801F8:
- movs r0, #0x32
- ldrsh r1, [r2, r0]
- movs r2, #0xc
- ldrsh r0, [r5, r2]
- subs r0, r1, r0
- ldrh r1, [r5, #0x1a]
- subs r4, r0, r1
- cmp r4, #0
- bge _0808020C
- movs r4, #0
-_0808020C:
- adds r3, r0, r1
- cmp r3, #0xa0
- ble _08080214
- movs r3, #0xa0
-_08080214:
- ldr r2, _08080260 @ =gScreen
- movs r1, #0xff
- ands r7, r1
- lsls r0, r7, #8
- ands r6, r1
- orrs r0, r6
- adds r6, r2, #0
- adds r6, #0x5a
- strh r0, [r6]
- ands r4, r1
- lsls r0, r4, #8
- ands r3, r1
- orrs r0, r3
- adds r2, #0x5e
- strh r0, [r2]
-_08080232:
- ldrh r0, [r5, #0x1c]
- cmp r0, #0
- bne _08080268
- strb r0, [r5, #2]
- strh r0, [r5]
- bl ResetSystemPriority
- ldr r1, _08080260 @ =gScreen
- ldrh r2, [r1]
- ldr r0, _08080264 @ =0x0000BFFF
- ands r0, r2
- strh r0, [r1]
- adds r2, r1, #0
- adds r2, #0x60
- ldrb r0, [r2]
- strh r0, [r2]
- adds r1, #0x62
- ldrh r2, [r1]
- movs r0, #0xff
- lsls r0, r0, #8
- ands r0, r2
- strh r0, [r1]
- b _08080272
- .align 2, 0
-_08080260: .4byte gScreen
-_08080264: .4byte 0x0000BFFF
-_08080268:
- ldr r0, _08080274 @ =gUpdateVisibleTiles
- movs r1, #4
- strb r1, [r0]
- movs r0, #0
- strh r0, [r5, #0x1c]
-_08080272:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08080274: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_08080278
-sub_08080278: @ 0x08080278
- push {r4, r5, r6, r7, lr}
- mov r7, sl
- mov r6, sb
- mov r5, r8
- push {r5, r6, r7}
- sub sp, #8
- ldr r0, _08080344 @ =gUnk_02022830
- mov ip, r0
- ldr r1, _08080348 @ =gRoomControls
- ldrh r0, [r1, #0x1e]
- lsrs r0, r0, #4
- str r0, [sp]
- ldrh r0, [r1, #0x20]
- lsrs r0, r0, #4
- lsls r0, r0, #6
- str r0, [sp, #4]
- movs r5, #0
- mov sl, r5
- cmp r5, r0
- bhs _08080336
- mov sb, r5
-_080802A2:
- movs r1, #0
- mov r8, r1
- ldr r0, [sp]
- cmp r8, r0
- bhs _08080328
- ldr r4, _0808034C @ =gMapDataTop
- add r4, sb
- ldr r7, _08080350 @ =gUnk_0200E654
- add r7, sb
- ldr r3, _08080354 @ =gMapDataBottom
- add r3, sb
- ldr r6, _08080358 @ =gUnk_02028EB4
- add r6, sb
-_080802BC:
- mov r2, sl
- add r2, r8
- ldrh r0, [r6]
- ldrh r1, [r3]
- cmp r0, r1
- beq _080802EA
- ldr r0, _0808035C @ =0x00003FFF
- cmp r1, r0
- bhi _080802EA
- adds r0, #1
- adds r1, r0, #0
- adds r0, r2, #0
- orrs r0, r1
- mov r1, ip
- strh r0, [r1]
- ldrh r0, [r3]
- strh r0, [r1, #2]
- movs r0, #4
- add ip, r0
- adds r5, #1
- ldr r0, _08080360 @ =0x000005FF
- cmp r5, r0
- bhi _08080336
-_080802EA:
- ldrh r0, [r7]
- ldrh r1, [r4]
- cmp r0, r1
- beq _08080316
- ldr r0, _0808035C @ =0x00003FFF
- cmp r1, r0
- bhi _08080316
- movs r1, #0x80
- lsls r1, r1, #8
- adds r0, r1, #0
- orrs r2, r0
- mov r0, ip
- strh r2, [r0]
- ldrh r0, [r4]
- mov r1, ip
- strh r0, [r1, #2]
- movs r0, #4
- add ip, r0
- adds r5, #1
- ldr r0, _08080364 @ =0x000007FF
- cmp r5, r0
- bhi _08080336
-_08080316:
- adds r4, #2
- adds r7, #2
- adds r3, #2
- adds r6, #2
- movs r1, #1
- add r8, r1
- ldr r0, [sp]
- cmp r8, r0
- blo _080802BC
-_08080328:
- movs r1, #0x80
- add sb, r1
- movs r0, #0x40
- add sl, r0
- ldr r1, [sp, #4]
- cmp sl, r1
- blo _080802A2
-_08080336:
- adds r0, r5, #0
- 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
-_08080344: .4byte gUnk_02022830
-_08080348: .4byte gRoomControls
-_0808034C: .4byte gMapDataTop
-_08080350: .4byte gUnk_0200E654
-_08080354: .4byte gMapDataBottom
-_08080358: .4byte gUnk_02028EB4
-_0808035C: .4byte 0x00003FFF
-_08080360: .4byte 0x000005FF
-_08080364: .4byte 0x000007FF
-
- thumb_func_start sub_08080368
-sub_08080368: @ 0x08080368
- push {r4, r5, r6, r7, lr}
- ldr r0, _08080384 @ =gUnk_03004030
- ldr r1, _08080388 @ =gRoomControls
- ldrb r0, [r0, #0xa]
- ldrb r1, [r1, #4]
- cmp r0, r1
- beq _08080390
- cmp r0, #0xff
- beq _08080390
- ldr r1, _0808038C @ =gUnk_02034480
- movs r0, #0
- strh r0, [r1]
- b _080803BE
- .align 2, 0
-_08080384: .4byte gUnk_03004030
-_08080388: .4byte gRoomControls
-_0808038C: .4byte gUnk_02034480
-_08080390:
- ldr r5, _080803C0 @ =gUnk_020246B0
- ldr r0, _080803C4 @ =gUnk_02034480
- ldrh r0, [r0]
- lsls r6, r0, #1
- movs r4, #0
- cmp r4, r6
- bhs _080803B8
- ldr r0, _080803C8 @ =0x00000FFF
- adds r7, r0, #0
-_080803A2:
- ldrh r0, [r5, #2]
- ldrh r2, [r5]
- adds r1, r7, #0
- ands r1, r2
- lsrs r2, r2, #0xe
- bl sub_0807B9B8
- adds r5, #4
- adds r4, #2
- cmp r4, r6
- blo _080803A2
-_080803B8:
- ldr r1, _080803CC @ =gUpdateVisibleTiles
- movs r0, #0
- strb r0, [r1]
-_080803BE:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_080803C0: .4byte gUnk_020246B0
-_080803C4: .4byte gUnk_02034480
-_080803C8: .4byte 0x00000FFF
-_080803CC: .4byte gUpdateVisibleTiles
-
- thumb_func_start sub_080803D0
-sub_080803D0: @ 0x080803D0
- push {r4, r5, r6, r7, lr}
- mov r7, sl
- mov r6, sb
- mov r5, r8
- push {r5, r6, r7}
- sub sp, #0x38
- ldr r1, _080804F0 @ =gRoomControls
- movs r2, #0xa
- ldrsh r0, [r1, r2]
- ldrh r2, [r1, #6]
- subs r0, r0, r2
- str r0, [sp, #0x18]
- ldr r3, [r1, #0x30]
- movs r4, #0x2e
- ldrsh r0, [r3, r4]
- subs r0, r0, r2
- str r0, [sp, #0x10]
- movs r2, #0xc
- ldrsh r0, [r1, r2]
- ldrh r1, [r1, #8]
- subs r0, r0, r1
- str r0, [sp, #0x1c]
- movs r4, #0x32
- ldrsh r0, [r3, r4]
- subs r0, r0, r1
- str r0, [sp, #0x14]
- movs r0, #0x3c
- str r0, [sp, #8]
-_08080408:
- movs r7, #0
- ldr r1, [sp, #8]
- adds r1, #6
- str r1, [sp, #8]
- adds r2, r1, #0
- muls r2, r1, r2
- mov sl, r2
- lsls r4, r1, #1
- adds r0, r4, #0
- movs r1, #3
- bl __divsi3
- str r0, [sp, #0xc]
- adds r1, r0, #0
- muls r1, r0, r1
- mov sb, r1
- movs r2, #0
- str r2, [sp, #4]
- rsbs r4, r4, #0
- adds r4, #1
- mov r0, sb
- muls r0, r4, r0
- mov r4, sl
- lsls r5, r4, #1
- adds r4, r0, r5
- ldr r0, [sp, #8]
- mov r6, sb
- muls r6, r0, r6
- adds r0, r6, #0
- mov r1, sl
- bl __divsi3
- adds r2, r0, #0
- cmp r7, r2
- bgt _08080506
- ldr r1, [sp, #0x18]
- adds r1, #0xf8
- str r1, [sp, #0x20]
- mov r1, sl
- adds r0, r5, r1
- lsls r3, r0, #1
- str r6, [sp, #0x2c]
- ldr r0, [sp, #8]
- lsls r1, r0, #2
- rsbs r1, r1, #0
- adds r1, #4
- mov r8, r1
- rsbs r0, r0, #0
- adds r0, #8
- ldr r1, [sp, #0x10]
- adds r6, r0, r1
- ldr r0, [sp, #8]
- adds r5, r0, r1
- mov r0, r8
- mov r1, sb
- muls r1, r0, r1
- mov r8, r1
-_0808047A:
- ldr r1, [sp, #0x1c]
- adds r1, #0xa8
- mov ip, r1
- ldr r0, [sp, #0x14]
- ldr r1, [sp, #4]
- adds r0, r0, r1
- str r0, [sp, #0x34]
- cmp ip, r0
- ble _080804A0
- ldr r0, [sp, #0x20]
- cmp r0, r5
- ble _08080496
- movs r0, #1
- orrs r7, r0
-_08080496:
- ldr r1, [sp, #0x18]
- cmp r1, r6
- bge _080804A0
- movs r0, #2
- orrs r7, r0
-_080804A0:
- ldr r0, [sp, #0x14]
- ldr r1, [sp, #4]
- subs r0, r0, r1
- mov ip, r0
- adds r0, #8
- ldr r1, [sp, #0x1c]
- cmp r1, r0
- bge _080804C4
- ldr r0, [sp, #0x20]
- cmp r0, r5
- ble _080804BA
- movs r0, #4
- orrs r7, r0
-_080804BA:
- ldr r1, [sp, #0x18]
- cmp r1, r6
- bge _080804C4
- movs r0, #8
- orrs r7, r0
-_080804C4:
- cmp r4, #0
- ble _080804F4
- mov r2, r8
- adds r0, r2, r3
- adds r4, r4, r0
- ldr r0, [sp, #0x2c]
- mov r1, sb
- subs r0, r0, r1
- str r0, [sp, #0x2c]
- lsls r0, r1, #2
- add r8, r0
- adds r6, #1
- subs r5, #1
- ldr r0, [sp, #0x2c]
- mov r1, sl
- str r3, [sp, #0x30]
- bl __divsi3
- adds r2, r0, #0
- ldr r3, [sp, #0x30]
- b _080804F6
- .align 2, 0
-_080804F0: .4byte gRoomControls
-_080804F4:
- adds r4, r4, r3
-_080804F6:
- mov r1, sl
- lsls r0, r1, #2
- adds r3, r3, r0
- ldr r0, [sp, #4]
- adds r0, #1
- str r0, [sp, #4]
- cmp r0, r2
- ble _0808047A
-_08080506:
- movs r1, #0
- str r1, [sp]
- ldr r2, [sp, #0xc]
- str r2, [sp, #4]
- mov r4, sb
- lsls r6, r4, #1
- lsls r0, r2, #1
- rsbs r0, r0, #0
- adds r0, #1
- mov r1, sl
- muls r1, r0, r1
- adds r0, r1, #0
- adds r4, r6, r0
- mov r5, sl
- muls r5, r2, r5
- adds r0, r5, #0
- mov r1, sb
- bl __divsi3
- adds r2, r0, #0
- ldr r0, [sp]
- cmp r0, r2
- bgt _080805E4
- ldr r1, [sp, #0x18]
- adds r1, #0xf8
- str r1, [sp, #0x24]
- mov r1, sb
- adds r0, r6, r1
- lsls r0, r0, #1
- mov r8, r0
- ldr r3, [sp, #0x10]
- adds r3, #8
- ldr r6, [sp, #0x10]
- str r5, [sp, #0x28]
- ldr r1, [sp, #4]
- lsls r0, r1, #2
- rsbs r0, r0, #0
- adds r0, #4
- mov r5, sl
- muls r5, r0, r5
-_08080556:
- ldr r0, [sp, #0x1c]
- adds r0, #0xa8
- mov ip, r0
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #4]
- adds r1, r1, r0
- str r1, [sp, #0x34]
- cmp ip, r1
- ble _0808057C
- ldr r1, [sp, #0x24]
- cmp r1, r6
- ble _08080572
- movs r0, #0x10
- orrs r7, r0
-_08080572:
- ldr r0, [sp, #0x18]
- cmp r0, r3
- bge _0808057C
- movs r0, #0x20
- orrs r7, r0
-_0808057C:
- ldr r1, [sp, #0x14]
- ldr r0, [sp, #4]
- subs r1, r1, r0
- mov ip, r1
- mov r0, ip
- adds r0, #8
- ldr r1, [sp, #0x1c]
- cmp r1, r0
- bge _080805A2
- ldr r0, [sp, #0x24]
- cmp r0, r6
- ble _08080598
- movs r0, #0x40
- orrs r7, r0
-_08080598:
- ldr r1, [sp, #0x18]
- cmp r1, r3
- bge _080805A2
- movs r0, #0x80
- orrs r7, r0
-_080805A2:
- cmp r4, #0
- ble _080805CE
- mov r2, r8
- adds r0, r2, r5
- adds r4, r4, r0
- ldr r0, [sp, #0x28]
- mov r1, sl
- subs r0, r0, r1
- str r0, [sp, #0x28]
- lsls r0, r1, #2
- adds r5, r5, r0
- ldr r2, [sp, #4]
- subs r2, #1
- str r2, [sp, #4]
- ldr r0, [sp, #0x28]
- mov r1, sb
- str r3, [sp, #0x30]
- bl __divsi3
- adds r2, r0, #0
- ldr r3, [sp, #0x30]
- b _080805D0
-_080805CE:
- add r4, r8
-_080805D0:
- mov r1, sb
- lsls r0, r1, #2
- add r8, r0
- subs r3, #1
- adds r6, #1
- ldr r0, [sp]
- adds r0, #1
- str r0, [sp]
- cmp r0, r2
- ble _08080556
-_080805E4:
- cmp r7, #0
- beq _080805EA
- b _08080408
-_080805EA:
- ldr r0, [sp, #8]
- add sp, #0x38
- pop {r3, r4, r5}
- mov r8, r3
- mov sb, r4
- mov sl, r5
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start sub_080805F8
-sub_080805F8: @ 0x080805F8
- push {lr}
- ldr r0, _08080610 @ =gRoomControls
- ldrb r0, [r0, #4]
- subs r0, #0xc
- cmp r0, #0xd
- bhi _0808065C
- lsls r0, r0, #2
- ldr r1, _08080614 @ =_08080618
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08080610: .4byte gRoomControls
-_08080614: .4byte _08080618
-_08080618: @ jump table
- .4byte _08080650 @ case 0
- .4byte _0808065C @ case 1
- .4byte _0808065C @ case 2
- .4byte _08080650 @ case 3
- .4byte _0808065C @ case 4
- .4byte _0808065C @ case 5
- .4byte _0808065C @ case 6
- .4byte _08080650 @ case 7
- .4byte _08080650 @ case 8
- .4byte _0808065C @ case 9
- .4byte _08080650 @ case 10
- .4byte _08080650 @ case 11
- .4byte _0808065C @ case 12
- .4byte _08080650 @ case 13
-_08080650:
- ldr r1, _08080658 @ =gUnk_03004030
- movs r0, #1
- b _08080660
- .align 2, 0
-_08080658: .4byte gUnk_03004030
-_0808065C:
- ldr r1, _08080664 @ =gUnk_03004030
- movs r0, #0
-_08080660:
- strb r0, [r1, #8]
- pop {pc}
- .align 2, 0
-_08080664: .4byte gUnk_03004030
-
- thumb_func_start ClearTilemaps
-ClearTilemaps: @ 0x08080668
- push {r4, r5, lr}
- ldr r5, _080806A4 @ =gRoomControls
- adds r0, r5, #0
- movs r1, #0x38
- bl MemClear
- ldr r4, _080806A8 @ =gUnk_03004030
- adds r0, r4, #0
- movs r1, #0xc
- bl MemClear
- ldr r0, _080806AC @ =0x0000FFFF
- strh r0, [r5, #0x22]
- movs r0, #0xff
- strb r0, [r4, #0xa]
- ldr r1, _080806B0 @ =gUnk_02034480
- movs r0, #0
- strh r0, [r1]
- ldr r0, _080806B4 @ =gUnk_02019EE0
- movs r4, #0x80
- lsls r4, r4, #8
- adds r1, r4, #0
- bl MemClear
- ldr r0, _080806B8 @ =gMapDataTopSpecial
- adds r1, r4, #0
- bl MemClear
- pop {r4, r5, pc}
- .align 2, 0
-_080806A4: .4byte gRoomControls
-_080806A8: .4byte gUnk_03004030
-_080806AC: .4byte 0x0000FFFF
-_080806B0: .4byte gUnk_02034480
-_080806B4: .4byte gUnk_02019EE0
-_080806B8: .4byte gMapDataTopSpecial
-
- thumb_func_start sub_080806BC
-sub_080806BC: @ 0x080806BC
- push {r4, r5, r6, r7, lr}
- mov r7, sl
- mov r6, sb
- mov r5, r8
- push {r5, r6, r7}
- mov sb, r0
- mov r8, r1
- adds r7, r2, #0
- adds r6, r3, #0
- ldr r0, _08080710 @ =gArea
- ldr r1, _08080714 @ =0x0000085C
- adds r0, r0, r1
- ldr r0, [r0]
- ldr r5, [r0, #0x18]
- ldrh r0, [r5]
- ldr r1, _08080718 @ =0x0000FFFF
- cmp r0, r1
- beq _08080728
- mov sl, r1
-_080806E2:
- ldrh r2, [r5]
- movs r0, #1
- lsls r0, r2
- ands r0, r6
- cmp r0, #0
- beq _08080720
- ldr r1, _0808071C @ =gUnk_0811E7AC
- lsls r0, r2, #2
- adds r0, r0, r1
- ldr r4, [r0]
- adds r0, r5, #0
- mov r1, sb
- mov r2, r8
- adds r3, r7, #0
- bl _call_via_r4
- cmp r0, #0
- beq _08080720
- adds r0, r5, #0
- bl DoExitTransition
- movs r0, #1
- b _0808072A
- .align 2, 0
-_08080710: .4byte gArea
-_08080714: .4byte 0x0000085C
-_08080718: .4byte 0x0000FFFF
-_0808071C: .4byte gUnk_0811E7AC
-_08080720:
- adds r5, #0x14
- ldrh r0, [r5]
- cmp r0, sl
- bne _080806E2
-_08080728:
- movs r0, #0
-_0808072A:
- pop {r3, r4, r5}
- mov r8, r3
- mov sb, r4
- mov sl, r5
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start sub_08080734
-sub_08080734: @ 0x08080734
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r6, r0, #0
- adds r5, r1, #0
- ldr r0, _08080778 @ =gArea
- ldr r1, _0808077C @ =0x0000085C
- adds r0, r0, r1
- ldr r0, [r0]
- ldr r4, [r0, #0x18]
- movs r0, #0xa
- mov r8, r0
- ldrh r0, [r4]
- ldr r1, _08080780 @ =0x0000FFFF
- cmp r0, r1
- beq _0808078C
- adds r7, r1, #0
-_08080756:
- movs r0, #1
- ldrh r1, [r4]
- lsls r0, r1
- mov r1, r8
- ands r0, r1
- cmp r0, #0
- beq _08080784
- adds r0, r4, #0
- adds r1, r6, #0
- adds r2, r5, #0
- movs r3, #0
- bl sub_08080808
- cmp r0, #0
- beq _08080784
- adds r0, r4, #0
- b _0808078E
- .align 2, 0
-_08080778: .4byte gArea
-_0808077C: .4byte 0x0000085C
-_08080780: .4byte 0x0000FFFF
-_08080784:
- adds r4, #0x14
- ldrh r0, [r4]
- cmp r0, r7
- bne _08080756
-_0808078C:
- movs r0, #0
-_0808078E:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start sub_08080794
-sub_08080794: @ 0x08080794
- push {r4, lr}
- adds r4, r0, #0
- cmp r3, #1
- beq _080807C0
- cmp r3, #1
- blo _080807AC
- cmp r3, #2
- beq _080807D4
- cmp r3, #3
- beq _080807E8
-_080807A8:
- movs r0, #0
- b _08080800
-_080807AC:
- ldr r0, _080807BC @ =gRoomControls
- ldrh r0, [r0, #0x1e]
- lsrs r0, r0, #1
- movs r3, #1
- cmp r0, r1
- bhs _080807F6
- movs r3, #2
- b _080807F6
- .align 2, 0
-_080807BC: .4byte gRoomControls
-_080807C0:
- ldr r0, _080807D0 @ =gRoomControls
- ldrh r0, [r0, #0x20]
- lsrs r0, r0, #1
- movs r3, #4
- cmp r0, r2
- bhs _080807F6
- movs r3, #8
- b _080807F6
- .align 2, 0
-_080807D0: .4byte gRoomControls
-_080807D4:
- ldr r0, _080807E4 @ =gRoomControls
- ldrh r0, [r0, #0x1e]
- lsrs r0, r0, #1
- movs r3, #0x10
- cmp r0, r1
- bhs _080807F6
- movs r3, #0x20
- b _080807F6
- .align 2, 0
-_080807E4: .4byte gRoomControls
-_080807E8:
- ldr r0, _08080804 @ =gRoomControls
- ldrh r0, [r0, #0x20]
- lsrs r0, r0, #1
- movs r3, #0x40
- cmp r0, r2
- bhs _080807F6
- movs r3, #0x80
-_080807F6:
- ldrb r0, [r4, #0xa]
- ands r0, r3
- cmp r0, #0
- beq _080807A8
- movs r0, #1
-_08080800:
- pop {r4, pc}
- .align 2, 0
-_08080804: .4byte gRoomControls
-
- thumb_func_start sub_08080808
-sub_08080808: @ 0x08080808
- push {r4, r5, lr}
- adds r3, r0, #0
- adds r5, r2, #0
- ldrb r0, [r3, #0xa]
- lsls r0, r0, #1
- ldr r2, _08080838 @ =gUnk_0811E7BC
- adds r4, r0, r2
- ldrb r0, [r4]
- ldrh r2, [r3, #2]
- subs r1, r1, r2
- adds r1, r1, r0
- lsls r0, r0, #1
- cmp r1, r0
- bhi _0808083C
- ldrb r1, [r4, #1]
- ldrh r0, [r3, #4]
- subs r0, r5, r0
- adds r0, r0, r1
- lsls r1, r1, #1
- cmp r0, r1
- bhi _0808083C
- movs r0, #1
- b _0808083E
- .align 2, 0
-_08080838: .4byte gUnk_0811E7BC
-_0808083C:
- movs r0, #0
-_0808083E:
- pop {r4, r5, pc}
-
- thumb_func_start DoExitTransition
-DoExitTransition: @ 0x08080840
- 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
diff --git a/include/fileselect.h b/include/fileselect.h
index 627c8778..f4fe832a 100644
--- a/include/fileselect.h
+++ b/include/fileselect.h
@@ -54,6 +54,7 @@ typedef struct {
/*0x0b*/ SaveFile saves[3];
} struct_02019EE0;
extern struct_02019EE0 gUnk_02019EE0;
+// TODO size: 0x8000 from ClearTilemaps?
extern void sub_08056FEC(u32, struct_020227E8*);
extern void sub_0805F46C(u32, void*);
diff --git a/include/room.h b/include/room.h
index 56d1fa9b..1a2ab273 100644
--- a/include/room.h
+++ b/include/room.h
@@ -45,7 +45,7 @@ typedef struct {
/*0x18*/ u16 filler2[3];
/*0x1E*/ u16 width;
/*0x20*/ u16 height;
- /*0x22*/ u8 filler3[2];
+ /*0x22*/ u16 filler3;
/*0x24*/ s8 aff_x;
/*0x25*/ s8 aff_y;
/*0x26*/ u8 filler26[2];
diff --git a/linker.ld b/linker.ld
index 524b2992..24c3273b 100644
--- a/linker.ld
+++ b/linker.ld
@@ -634,9 +634,7 @@ SECTIONS {
src/save.o(.text);
src/screenTilemap.o(.text);
src/script.o(.text);
- asm/scroll.o(.text);
src/scroll.o(.text);
- asm/code_0808091C.o(.text); /* scroll.c */
/* objects */
src/object/itemOnGround.o(.text);
src/object/deathFx.o(.text);
diff --git a/src/scroll.c b/src/scroll.c
index 7f8b99f8..360eadc3 100644
--- a/src/scroll.c
+++ b/src/scroll.c
@@ -4,11 +4,151 @@
#include "functions.h"
#include "game.h"
#include "map.h"
+#include "asm.h"
+#include "common.h"
+#include "fileselect.h"
extern void sub_08080BC4(void);
extern u8 gUpdateVisibleTiles;
+extern void (*const gUnk_0811E768[])(RoomControls*);
+
+void sub_0807FC7C(RoomControls*);
+void sub_080805F8(void);
+
+extern void (*const gUnk_0811E780[])(RoomControls*);
+
+extern void (*const gUnk_0811E794[])(RoomControls*);
+
+extern u8 gMapDataTopSpecial[];
+
+void UpdateScroll(void) {
+ gRoomControls.scroll_flags &= 0xfb;
+ gUnk_0811E768[gRoomControls.unk3](&gRoomControls);
+}
+
+void sub_0807FC64(RoomControls* controls) {
+ controls->unk3 = 1;
+ controls->reload_flags = 0;
+ controls->unk5 = 4;
+ sub_0807FC7C(controls);
+ sub_080805F8();
+}
+
+ASM_FUNC("asm/non_matching/scroll/sub_0807FC7C.inc", void sub_0807FC7C(RoomControls* controls))
+
+void sub_0807FDB0(RoomControls* controls) {
+ gUnk_0811E780[controls->unk4](controls);
+}
+
+void sub_0807FDC8(RoomControls* controls) {
+ gUpdateVisibleTiles = 1;
+ UpdateScrollVram();
+ controls->unk4 = 1;
+ gUpdateVisibleTiles = 0;
+}
+
+void sub_0807FDE4(RoomControls* controls) {
+ controls->unk4 = 2;
+ controls->filler2[0] = 0;
+ gUpdateVisibleTiles = 2;
+}
+
+ASM_FUNC("asm/non_matching/scroll/sub_0807FDF8.inc", void sub_0807FDF8())
+
+void sub_0807FEC8(RoomControls* this) {
+ this->unk3 = 0;
+ MemFill32(0xffffffff, gPlayerState.path_memory, 0x40);
+ gPlayerState.startPosX = this->camera_target->x.HALF.HI;
+ gPlayerState.startPosY = this->camera_target->y.HALF.HI;
+}
+
+void sub_0807FEF0(RoomControls* controls) {
+ extern void (*const gUnk_0811E78C[])(RoomControls*);
+ gUnk_0811E78C[controls->unk4](controls);
+}
+
+void sub_0807FF08(RoomControls* controls) {
+ controls->unk4 = 1;
+ controls->filler2[0] = 0;
+ gUpdateVisibleTiles = 3;
+}
+
+void sub_0807FF1C(RoomControls* controls) {
+ if ((gRoomTransition.frameCount & 1U) == 0) {
+ gUpdateVisibleTiles = 3;
+ if (++controls->filler2[0] > 0x13) {
+ controls->unk3 = 0;
+ ResetSystemPriority();
+ }
+ }
+}
+
+void sub_0807FF54(RoomControls* controls) {
+ gUnk_0811E794[controls->unk4](controls);
+}
+
+ASM_FUNC("asm/non_matching/scroll/sub_0807FF6C.inc", void sub_0807FF6C())
+
+ASM_FUNC("asm/non_matching/scroll/sub_0807FFE4.inc", void sub_0807FFE4())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080040.inc", void sub_08080040())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080108.inc", void sub_08080108())
+
+void sub_08080198(RoomControls* controls) {
+ controls->unk4 = 5;
+ controls->filler2[2] = 0xff;
+ LoadRoom();
+ CallRoomProp5And7();
+ gUpdateVisibleTiles = 0;
+ sub_080805F8();
+}
+
+ASM_FUNC("asm/non_matching/scroll/sub_080801BC.inc", void sub_080801BC())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080278.inc", void sub_08080278())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080368.inc", void sub_08080368())
+
+ASM_FUNC("asm/non_matching/scroll/sub_080803D0.inc", void sub_080803D0())
+
+void sub_080805F8(void) {
+ switch (gRoomControls.area) {
+ case 0xc:
+ case 0x0f:
+ case 0x13:
+ case 0x14:
+ case 0x16:
+ case 0x17:
+ case 0x19:
+ gUnk_03004030.unk_08 = 1;
+ return;
+ }
+ gUnk_03004030.unk_08 = 0;
+}
+
+void ClearTilemaps(void) {
+ MemClear(&gRoomControls, 0x38);
+ MemClear(&gUnk_03004030, 0xc);
+ gRoomControls.filler3 = 0xffff;
+ gUnk_03004030.unk_0a = 0xff;
+ gUnk_02034480.unk_00 = 0;
+ MemClear(&gUnk_02019EE0, 0x8000);
+ MemClear(&gMapDataTopSpecial, 0x8000);
+}
+
+ASM_FUNC("asm/non_matching/scroll/sub_080806BC.inc", bool32 sub_080806BC(u32 a, u32 b, u32 c, u32 d))
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080734.inc", void sub_08080734())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080794.inc", void sub_08080794())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080808.inc", void sub_08080808())
+
+ASM_FUNC("asm/non_matching/scroll/DoExitTransition.inc", void DoExitTransition(const ScreenTransitionData* data))
+
void sub_080808D8(void) {
gRoomTransition.type = TRANSITION_DEFAULT;
}
@@ -122,3 +262,13 @@ void sub_080809D4(void) {
sub_08080BC4();
gUpdateVisibleTiles = 1;
}
+
+ASM_FUNC("asm/non_matching/scroll/UpdateDoorTransition.inc", void UpdateDoorTransition())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080B60.inc", void sub_08080B60())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080BC4.inc", void sub_08080BC4())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080C80.inc", void sub_08080C80())
+
+ASM_FUNC("asm/non_matching/scroll/sub_08080CB4.inc", void sub_08080CB4(Entity* a))