Files
2019-09-27 01:42:56 -04:00

2971 lines
49 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start CableCarTask1
CableCarTask1: @ 0x0814FC4C
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r0, _0814FC70
ldrb r1, [r0, #7]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0814FC6A
ldr r0, _0814FC74
bl SetMainCallback2
adds r0, r4, #0
bl DestroyTask
_0814FC6A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0814FC70: .4byte 0x02037C74
_0814FC74: .4byte 0x0814FCA5
thumb_func_end CableCarTask1
thumb_func_start CableCar
CableCar: @ 0x0814FC78
push {lr}
sub sp, #4
bl ScriptContext2_Enable
ldr r0, _0814FCA0
movs r1, #1
bl CreateTask
movs r0, #1
rsbs r0, r0, #0
movs r1, #0
str r1, [sp]
movs r2, #0
movs r3, #0x10
bl BeginNormalPaletteFade
add sp, #4
pop {r0}
bx r0
.align 2, 0
_0814FCA0: .4byte 0x0814FC4D
thumb_func_end CableCar
thumb_func_start CableCarMainCallback_Setup
CableCarMainCallback_Setup: @ 0x0814FCA4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x18
movs r4, #0
str r4, [sp, #0x14]
ldr r1, _0814FCCC
movs r2, #0x87
lsls r2, r2, #3
adds r0, r1, r2
ldrb r0, [r0]
adds r6, r1, #0
cmp r0, #9
bhi _0814FCFC
lsls r0, r0, #2
ldr r1, _0814FCD0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0814FCCC: .4byte 0x03002360
_0814FCD0: .4byte 0x0814FCD4
_0814FCD4: @ jump table
.4byte _0814FCFC @ case 0
.4byte _0814FDB4 @ case 1
.4byte _0814FE6C @ case 2
.4byte _0814FF2C @ case 3
.4byte _0814FF58 @ case 4
.4byte _0814FF74 @ case 5
.4byte _0814FFD4 @ case 6
.4byte _0815006C @ case 7
.4byte _0815016C @ case 8
.4byte _081501A4 @ case 9
_0814FCFC:
movs r0, #0
bl SetVBlankCallback
movs r0, #0
bl sub_08150B48
bl ScanlineEffect_Stop
movs r3, #0xc0
lsls r3, r3, #0x13
movs r4, #0xc0
lsls r4, r4, #9
add r0, sp, #0x10
mov sb, r0
add r2, sp, #0xc
movs r6, #0
ldr r1, _0814FDA0
movs r5, #0x80
lsls r5, r5, #5
ldr r7, _0814FDA4
movs r0, #0x81
lsls r0, r0, #0x18
mov r8, r0
_0814FD2A:
strh r6, [r2]
add r0, sp, #0xc
str r0, [r1]
str r3, [r1, #4]
str r7, [r1, #8]
ldr r0, [r1, #8]
adds r3, r3, r5
subs r4, r4, r5
cmp r4, r5
bhi _0814FD2A
strh r6, [r2]
add r2, sp, #0xc
str r2, [r1]
str r3, [r1, #4]
lsrs r0, r4, #1
mov r3, r8
orrs r0, r3
str r0, [r1, #8]
ldr r0, [r1, #8]
movs r0, #0xe0
lsls r0, r0, #0x13
movs r3, #0x80
lsls r3, r3, #3
movs r4, #0
str r4, [sp, #0x10]
ldr r2, _0814FDA0
mov r1, sb
str r1, [r2]
str r0, [r2, #4]
lsrs r0, r3, #2
movs r1, #0x85
lsls r1, r1, #0x18
orrs r0, r1
str r0, [r2, #8]
ldr r0, [r2, #8]
movs r1, #0xa0
lsls r1, r1, #0x13
add r0, sp, #0xc
strh r4, [r0]
str r0, [r2]
str r1, [r2, #4]
lsrs r3, r3, #1
movs r0, #0x81
lsls r0, r0, #0x18
orrs r3, r0
str r3, [r2, #8]
ldr r0, [r2, #8]
ldr r4, _0814FDA8
ldr r0, _0814FDAC
bl AllocZeroed
str r0, [r4]
ldr r1, _0814FDB0
movs r2, #0x87
lsls r2, r2, #3
adds r1, r1, r2
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0814FDA0: .4byte 0x040000D4
_0814FDA4: .4byte 0x81000800
_0814FDA8: .4byte 0x0203A878
_0814FDAC: .4byte 0x00004110
_0814FDB0: .4byte 0x03002360
_0814FDB4:
bl ResetSpriteData
bl ResetTasks
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl reset_temp_tile_data_buffers
bl StartWeather
movs r4, #0
ldr r0, _0814FE48
ldr r0, [r0]
adds r1, r0, #0
adds r1, #0xf0
movs r2, #0
_0814FDD8:
lsls r0, r4, #2
adds r0, r1, r0
str r2, [r0]
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x13
bls _0814FDD8
bl InitMapMusic
bl ResetMapMusic
movs r0, #0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _0814FE4C
movs r0, #0
movs r2, #4
bl InitBgsFromTemplates
ldr r4, _0814FE50
ldr r1, [r4]
adds r1, #0xfc
movs r0, #0
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r3, _0814FE54
adds r1, r1, r3
movs r0, #1
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r0, _0814FE58
adds r1, r1, r0
movs r0, #2
bl SetBgTilemapBuffer
ldr r1, [r4]
ldr r2, _0814FE5C
adds r1, r1, r2
movs r0, #3
bl SetBgTilemapBuffer
ldr r2, _0814FE60
ldr r1, _0814FE64
movs r0, #0
strh r0, [r1]
strh r0, [r2]
ldr r1, _0814FE68
movs r3, #0x87
lsls r3, r3, #3
adds r1, r1, r3
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0814FE48: .4byte 0x08526DE8
_0814FE4C: .4byte 0x085AC474
_0814FE50: .4byte 0x0203A878
_0814FE54: .4byte 0x000010FC
_0814FE58: .4byte 0x000020FC
_0814FE5C: .4byte 0x000030FC
_0814FE60: .4byte 0x02021B38
_0814FE64: .4byte 0x02021B3A
_0814FE68: .4byte 0x03002360
_0814FE6C:
movs r4, #0
add r5, sp, #0x14
ldr r6, _0814FEF4
_0814FE72:
lsls r0, r4, #3
adds r0, r0, r6
bl LoadCompressedSpriteSheet
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #2
bls _0814FE72
ldr r0, _0814FEF8
bl LoadSpritePalettes
ldr r0, _0814FEFC
adds r1, r5, #0
bl malloc_and_decompress
ldr r4, _0814FF00
ldr r1, [r4]
ldr r2, _0814FF04
adds r1, r1, r2
str r0, [r1]
ldr r0, _0814FF08
adds r1, r5, #0
bl malloc_and_decompress
ldr r1, [r4]
movs r3, #0x82
lsls r3, r3, #7
adds r1, r1, r3
str r0, [r1]
ldr r0, _0814FF0C
adds r1, r5, #0
bl malloc_and_decompress
ldr r1, [r4]
ldr r2, _0814FF10
adds r1, r1, r2
str r0, [r1]
ldr r0, _0814FF14
adds r1, r5, #0
bl malloc_and_decompress
ldr r1, [r4]
ldr r3, _0814FF18
adds r2, r1, r3
str r0, [r2]
ldr r0, _0814FF1C
adds r1, r1, r0
ldr r0, _0814FF20
str r0, [r1]
ldr r1, _0814FF24
movs r0, #0
str r0, [sp]
movs r2, #0
movs r3, #0
bl decompress_and_copy_tile_data_to_vram
ldr r1, _0814FF28
movs r2, #0x87
lsls r2, r2, #3
adds r1, r1, r2
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0814FEF4: .4byte 0x085AC95C
_0814FEF8: .4byte 0x085AC97C
_0814FEFC: .4byte 0x085AC484
_0814FF00: .4byte 0x0203A878
_0814FF04: .4byte 0x000040FC
_0814FF08: .4byte 0x085AC5DC
_0814FF0C: .4byte 0x085AC760
_0814FF10: .4byte 0x00004104
_0814FF14: .4byte 0x085AC938
_0814FF18: .4byte 0x0000410C
_0814FF1C: .4byte 0x00004108
_0814FF20: .4byte 0x085AC924
_0814FF24: .4byte 0x08DBA860
_0814FF28: .4byte 0x03002360
_0814FF2C:
bl free_temp_tile_data_buffers_if_possible
lsls r0, r0, #0x18
cmp r0, #0
beq _0814FF38
b _08150202
_0814FF38:
ldr r0, _0814FF50
movs r1, #0
movs r2, #0x80
bl LoadPalette
ldr r1, _0814FF54
movs r3, #0x87
lsls r3, r3, #3
adds r1, r1, r3
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0814FF50: .4byte 0x08DBA7C0
_0814FF54: .4byte 0x03002360
_0814FF58:
bl LoadCableCarSprites
bl RunTasks
ldr r1, _0814FF70
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0814FF70: .4byte 0x03002360
_0814FF74:
ldr r0, _0814FF8C
ldr r0, [r0]
ldrb r0, [r0, #2]
cmp r0, #7
bne _0814FF90
movs r2, #0x87
lsls r2, r2, #3
adds r1, r6, r2
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0814FF8C: .4byte 0x0203A878
_0814FF90:
ldr r0, _0814FFD0
ldr r0, [r0]
adds r1, r0, #0
adds r1, #0xf0
ldr r0, [r1]
cmp r0, #0
bne _0814FFA0
b _08150202
_0814FFA0:
movs r4, #0
adds r3, r1, #0
movs r5, #0xd
rsbs r5, r5, #0
_0814FFA8:
lsls r0, r4, #2
adds r0, r3, r0
ldr r2, [r0]
cmp r2, #0
beq _0814FFBA
ldrb r1, [r2, #5]
adds r0, r5, #0
ands r0, r1
strb r0, [r2, #5]
_0814FFBA:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x13
bls _0814FFA8
movs r3, #0x87
lsls r3, r3, #3
adds r1, r6, r3
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0814FFD0: .4byte 0x08526DE8
_0814FFD4:
ldr r6, _08150058
ldr r0, [r6]
movs r1, #0x82
lsls r1, r1, #7
adds r0, r0, r1
ldr r1, [r0]
movs r0, #0x20
str r0, [sp]
movs r0, #0xf
str r0, [sp, #4]
movs r5, #0x11
str r5, [sp, #8]
movs r0, #1
movs r2, #0
movs r3, #0x11
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r0, [r6]
ldr r2, _0815005C
adds r0, r0, r2
ldr r1, [r0]
movs r0, #0x1e
str r0, [sp]
movs r3, #0x14
mov r8, r3
str r3, [sp, #4]
str r5, [sp, #8]
movs r0, #2
movs r2, #0
movs r3, #0
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r0, [r6]
ldr r1, _08150060
adds r0, r0, r1
ldr r1, [r0]
movs r0, #5
str r0, [sp]
movs r4, #2
str r4, [sp, #4]
str r5, [sp, #8]
movs r0, #3
movs r2, #0
movs r3, #0
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r0, [r6]
ldr r2, _08150064
adds r0, r0, r2
ldr r1, [r0]
str r4, [sp]
mov r3, r8
str r3, [sp, #4]
str r5, [sp, #8]
movs r0, #3
movs r2, #0
movs r3, #2
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r1, _08150068
movs r0, #0x87
lsls r0, r0, #3
adds r1, r1, r0
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_08150058: .4byte 0x0203A878
_0815005C: .4byte 0x00004104
_08150060: .4byte 0x00004108
_08150064: .4byte 0x0000410C
_08150068: .4byte 0x03002360
_0815006C:
ldr r0, _0815015C
ldrb r0, [r0]
bl sub_081514A4
ldr r1, _08150160
mov sb, r1
ldr r0, [r1]
ldr r2, _08150164
mov r8, r2
add r0, r8
ldr r1, [r0]
adds r1, #0x90
movs r6, #0xc
str r6, [sp]
movs r5, #3
str r5, [sp, #4]
movs r4, #0x11
str r4, [sp, #8]
movs r0, #0
movs r2, #0
movs r3, #0xe
bl CopyToBgTilemapBufferRect_ChangePalette
mov r3, sb
ldr r0, [r3]
add r0, r8
ldr r1, [r0]
adds r1, #0xd8
str r6, [sp]
str r5, [sp, #4]
str r4, [sp, #8]
movs r0, #0
movs r2, #0xc
movs r3, #0x11
bl CopyToBgTilemapBufferRect_ChangePalette
mov r1, sb
ldr r0, [r1]
add r0, r8
ldr r1, [r0]
movs r2, #0x90
lsls r2, r2, #1
adds r1, r1, r2
str r6, [sp]
str r5, [sp, #4]
str r4, [sp, #8]
movs r0, #0
movs r2, #0x18
movs r3, #0x14
bl CopyToBgTilemapBufferRect_ChangePalette
mov r3, sb
ldr r0, [r3]
add r0, r8
ldr r1, [r0]
str r6, [sp]
str r5, [sp, #4]
str r4, [sp, #8]
movs r0, #0
movs r2, #0
movs r3, #0x11
bl CopyToBgTilemapBufferRect_ChangePalette
mov r1, sb
ldr r0, [r1]
add r0, r8
ldr r1, [r0]
adds r1, #0x48
str r6, [sp]
str r5, [sp, #4]
str r4, [sp, #8]
movs r0, #0
movs r2, #0
movs r3, #0x14
bl CopyToBgTilemapBufferRect_ChangePalette
mov r2, sb
ldr r0, [r2]
add r0, r8
ldr r1, [r0]
str r6, [sp]
str r5, [sp, #4]
str r4, [sp, #8]
movs r0, #0
movs r2, #0xc
movs r3, #0x14
bl CopyToBgTilemapBufferRect_ChangePalette
mov r3, sb
ldr r0, [r3]
add r0, r8
ldr r1, [r0]
adds r1, #0x48
str r6, [sp]
str r5, [sp, #4]
str r4, [sp, #8]
movs r0, #0
movs r2, #0xc
movs r3, #0x17
bl CopyToBgTilemapBufferRect_ChangePalette
mov r1, sb
ldr r0, [r1]
add r0, r8
ldr r1, [r0]
str r6, [sp]
str r5, [sp, #4]
str r4, [sp, #8]
movs r0, #0
movs r2, #0x18
movs r3, #0x17
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r1, _08150168
movs r2, #0x87
lsls r2, r2, #3
adds r1, r1, r2
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0815015C: .4byte 0x02037280
_08150160: .4byte 0x0203A878
_08150164: .4byte 0x000040FC
_08150168: .4byte 0x03002360
_0815016C:
movs r0, #1
rsbs r0, r0, #0
movs r1, #0
str r1, [sp]
movs r1, #3
movs r2, #0x10
movs r3, #0
bl BeginNormalPaletteFade
ldr r0, _0815019C
movs r1, #1
bl FadeInNewBGM
movs r0, #1
bl sub_08150B48
ldr r1, _081501A0
movs r3, #0x87
lsls r3, r3, #3
adds r1, r1, r3
ldrb r0, [r1]
adds r0, #1
b _08150200
.align 2, 0
_0815019C: .4byte 0x000001A9
_081501A0: .4byte 0x03002360
_081501A4:
ldr r3, _081501D8
ldrh r2, [r3]
movs r0, #0
strh r0, [r3]
ldr r4, _081501DC
ldrh r0, [r4]
movs r1, #1
orrs r0, r1
strh r0, [r4]
strh r2, [r3]
ldr r0, _081501E0
bl SetVBlankCallback
ldr r0, _081501E4
bl SetMainCallback2
ldr r0, _081501E8
movs r1, #0
bl CreateTask
ldr r0, _081501EC
ldrh r0, [r0]
cmp r0, #0
bne _081501F4
ldr r0, _081501F0
b _081501F6
.align 2, 0
_081501D8: .4byte 0x04000208
_081501DC: .4byte 0x04000200
_081501E0: .4byte 0x081507DD
_081501E4: .4byte 0x08150219
_081501E8: .4byte 0x081503C1
_081501EC: .4byte 0x02037280
_081501F0: .4byte 0x0815052D
_081501F4:
ldr r0, _08150210
_081501F6:
movs r1, #1
bl CreateTask
ldr r1, _08150214
ldr r1, [r1]
_08150200:
strb r0, [r1]
_08150202:
add sp, #0x18
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08150210: .4byte 0x08150641
_08150214: .4byte 0x0203A878
thumb_func_end CableCarMainCallback_Setup
thumb_func_start CableCarMainCallback_Run
CableCarMainCallback_Run: @ 0x08150218
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
bl MapMusicMain
pop {r0}
bx r0
.align 2, 0
thumb_func_end CableCarMainCallback_Run
thumb_func_start CleanupCableCar
CleanupCableCar: @ 0x08150234
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #8
movs r4, #0
movs r0, #0
bl HideBg
movs r0, #1
bl HideBg
movs r0, #2
bl HideBg
movs r0, #3
bl HideBg
movs r0, #0
bl sub_08150B48
ldr r0, _08150394
strh r4, [r0]
movs r0, #0
bl SetCurrentAndNextWeatherNoDelay
add r0, sp, #4
mov r8, r0
ldr r0, _08150398
ldr r0, [r0]
adds r1, r0, #0
adds r1, #0xf0
movs r2, #0
_08150274:
lsls r0, r4, #2
adds r0, r1, r0
str r2, [r0]
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x13
bls _08150274
bl ResetTasks
bl ResetSpriteData
bl ResetPaletteFade
movs r0, #0
bl UnsetBgTilemapBuffer
movs r0, #1
bl UnsetBgTilemapBuffer
movs r0, #2
bl UnsetBgTilemapBuffer
movs r0, #3
bl UnsetBgTilemapBuffer
movs r0, #0
bl ResetBgsAndClearDma3BusyFlags
ldr r6, _0815039C
ldr r0, [r6]
ldr r2, _081503A0
adds r1, r0, r2
movs r5, #0
str r5, [r1]
ldr r4, _081503A4
adds r0, r0, r4
ldr r0, [r0]
bl Free
ldr r0, [r6]
adds r4, r0, r4
str r5, [r4]
ldr r4, _081503A8
adds r0, r0, r4
ldr r0, [r0]
bl Free
ldr r0, [r6]
adds r4, r0, r4
str r5, [r4]
movs r4, #0x82
lsls r4, r4, #7
adds r0, r0, r4
ldr r0, [r0]
bl Free
ldr r0, [r6]
adds r4, r0, r4
str r5, [r4]
ldr r4, _081503AC
adds r0, r0, r4
ldr r0, [r0]
bl Free
ldr r0, [r6]
adds r4, r0, r4
str r5, [r4]
bl Free
str r5, [r6]
movs r2, #0xc0
lsls r2, r2, #0x13
movs r3, #0xc0
lsls r3, r3, #9
mov r4, sp
movs r6, #0
ldr r1, _081503B0
movs r5, #0x80
lsls r5, r5, #5
ldr r7, _081503B4
movs r0, #0x81
lsls r0, r0, #0x18
mov ip, r0
_0815031C:
strh r6, [r4]
mov r0, sp
str r0, [r1]
str r2, [r1, #4]
str r7, [r1, #8]
ldr r0, [r1, #8]
adds r2, r2, r5
subs r3, r3, r5
cmp r3, r5
bhi _0815031C
strh r6, [r4]
mov r0, sp
str r0, [r1]
str r2, [r1, #4]
lsrs r0, r3, #1
mov r2, ip
orrs r0, r2
str r0, [r1, #8]
ldr r0, [r1, #8]
movs r0, #0xe0
lsls r0, r0, #0x13
movs r3, #0x80
lsls r3, r3, #3
movs r4, #0
str r4, [sp, #4]
ldr r2, _081503B0
mov r1, r8
str r1, [r2]
str r0, [r2, #4]
lsrs r0, r3, #2
movs r1, #0x85
lsls r1, r1, #0x18
orrs r0, r1
str r0, [r2, #8]
ldr r0, [r2, #8]
movs r1, #0xa0
lsls r1, r1, #0x13
mov r0, sp
strh r4, [r0]
str r0, [r2]
str r1, [r2, #4]
lsrs r3, r3, #1
movs r0, #0x81
lsls r0, r0, #0x18
orrs r3, r0
str r3, [r2, #8]
ldr r0, [r2, #8]
bl WarpIntoMap
ldr r0, _081503B8
str r4, [r0]
ldr r0, _081503BC
bl SetMainCallback2
add sp, #8
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08150394: .4byte 0x02021B38
_08150398: .4byte 0x08526DE8
_0815039C: .4byte 0x0203A878
_081503A0: .4byte 0x00004108
_081503A4: .4byte 0x0000410C
_081503A8: .4byte 0x00004104
_081503AC: .4byte 0x000040FC
_081503B0: .4byte 0x040000D4
_081503B4: .4byte 0x81000800
_081503B8: .4byte 0x03005B0C
_081503BC: .4byte 0x08085935
thumb_func_end CleanupCableCar
thumb_func_start sub_081503C0
sub_081503C0: @ 0x081503C0
push {r4, r5, r6, r7, lr}
sub sp, #4
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
movs r4, #0
ldr r5, _081503EC
ldr r3, [r5]
ldrh r0, [r3, #6]
adds r0, #1
strh r0, [r3, #6]
ldrb r2, [r3, #1]
adds r7, r5, #0
cmp r2, #2
beq _081504C6
cmp r2, #2
bgt _081503F0
cmp r2, #0
beq _081503FE
cmp r2, #1
beq _08150418
b _0815051E
.align 2, 0
_081503EC: .4byte 0x0203A878
_081503F0:
cmp r2, #3
bne _081503F6
b _081504EC
_081503F6:
cmp r2, #0xff
bne _081503FC
b _08150504
_081503FC:
b _0815051E
_081503FE:
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrh r1, [r3, #4]
cmp r0, r1
beq _0815040A
b _0815051E
_0815040A:
ldrb r0, [r3, #2]
bl SetNextWeather
ldr r1, [r5]
movs r0, #1
strb r0, [r1, #1]
b _0815051E
_08150418:
ldrb r0, [r3, #2]
cmp r0, #2
beq _0815046C
cmp r0, #7
beq _08150424
b _0815051E
_08150424:
ldr r0, _08150468
ldr r0, [r0]
adds r2, r0, #0
adds r2, #0xf0
ldr r0, [r2]
cmp r0, #0
beq _0815051E
ldrb r1, [r0, #5]
movs r0, #0xc
ands r0, r1
cmp r0, #0
beq _0815051E
adds r3, r2, #0
movs r5, #0xd
rsbs r5, r5, #0
_08150442:
lsls r0, r4, #2
adds r0, r3, r0
ldr r2, [r0]
cmp r2, #0
beq _08150454
ldrb r1, [r2, #5]
adds r0, r5, #0
ands r0, r1
strb r0, [r2, #5]
_08150454:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x13
bls _08150442
ldr r1, [r7]
movs r0, #2
strb r0, [r1, #1]
b _0815051E
.align 2, 0
_08150468: .4byte 0x08526DE8
_0815046C:
ldr r0, _08150480
ldr r2, [r0]
movs r1, #0xda
lsls r1, r1, #3
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, #2
bne _08150484
strb r0, [r3, #1]
b _0815051E
.align 2, 0
_08150480: .4byte 0x08526DE8
_08150484:
ldrh r1, [r3, #6]
ldrh r0, [r3, #4]
adds r0, #8
cmp r1, r0
blt _0815051E
adds r6, r2, #0
adds r6, #0xf0
movs r5, #1
movs r7, #5
rsbs r7, r7, #0
_08150498:
lsls r0, r4, #2
adds r0, r6, r0
ldr r0, [r0]
cmp r0, #0
beq _081504BA
adds r3, r0, #0
adds r3, #0x3e
ldrb r2, [r3]
lsls r1, r2, #0x1d
lsrs r1, r1, #0x1f
eors r1, r5
ands r1, r5
lsls r1, r1, #2
adds r0, r7, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_081504BA:
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0x13
bls _08150498
b _0815051E
_081504C6:
lsls r1, r0, #0x10
ldr r0, _081504E8
cmp r1, r0
bne _0815051E
movs r0, #3
strb r0, [r3, #1]
subs r0, #4
str r4, [sp]
movs r1, #3
movs r2, #0
movs r3, #0x10
bl BeginNormalPaletteFade
movs r0, #4
bl FadeOutBGMTemporarily
b _0815051E
.align 2, 0
_081504E8: .4byte 0x023A0000
_081504EC:
ldr r0, _08150500
ldrb r1, [r0, #7]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0815051E
movs r0, #0xff
strb r0, [r3, #1]
b _0815051E
.align 2, 0
_08150500: .4byte 0x02037C74
_08150504:
movs r0, #0
bl SetVBlankCallback
adds r0, r6, #0
bl DestroyTask
ldr r0, [r5]
ldrb r0, [r0]
bl DestroyTask
ldr r0, _08150528
bl SetMainCallback2
_0815051E:
add sp, #4
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08150528: .4byte 0x08150235
thumb_func_end sub_081503C0
thumb_func_start sub_0815052C
sub_0815052C: @ 0x0815052C
push {r4, r5, r6, lr}
sub sp, #0xc
ldr r6, _08150580
ldr r1, [r6]
ldrb r0, [r1, #1]
cmp r0, #0xff
beq _0815060C
ldrb r0, [r1, #0x14]
subs r0, #1
strb r0, [r1, #0x14]
ldr r1, [r6]
ldrh r0, [r1, #6]
movs r3, #1
ands r0, r3
cmp r0, #0
bne _08150552
ldrb r0, [r1, #0x15]
subs r0, #1
strb r0, [r1, #0x15]
_08150552:
ldr r2, [r6]
ldrh r0, [r2, #6]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _0815056C
ldrb r0, [r2, #0xc]
subs r0, #1
strb r0, [r2, #0xc]
ldr r1, [r6]
ldrb r0, [r1, #0xd]
subs r0, #1
strb r0, [r1, #0xd]
_0815056C:
ldr r0, [r6]
ldrb r1, [r0, #0x14]
cmp r1, #0x20
beq _081505B8
cmp r1, #0x20
bgt _08150584
cmp r1, #0x10
beq _081505D0
b _0815060C
.align 2, 0
_08150580: .4byte 0x0203A878
_08150584:
cmp r1, #0x28
beq _081505A6
cmp r1, #0xaf
bne _0815060C
movs r0, #2
str r0, [sp]
movs r0, #0xa
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #3
movs r1, #0
movs r2, #0
movs r3, #0x16
bl FillBgTilemapBufferRect
b _0815060C
_081505A6:
movs r0, #2
str r0, [sp]
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #3
movs r1, #0
movs r2, #3
b _081505C8
_081505B8:
str r3, [sp]
movs r0, #2
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #3
movs r1, #0
movs r2, #2
_081505C8:
movs r3, #0
bl FillBgTilemapBufferRect
b _0815060C
_081505D0:
ldr r1, _08150634
adds r0, r0, r1
ldr r1, [r0]
movs r0, #5
str r0, [sp]
movs r4, #2
str r4, [sp, #4]
movs r5, #0x11
str r5, [sp, #8]
movs r0, #3
movs r2, #0
movs r3, #0
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r0, [r6]
ldr r1, _08150638
adds r0, r0, r1
ldr r1, [r0]
str r4, [sp]
movs r0, #0x1e
str r0, [sp, #4]
str r5, [sp, #8]
movs r0, #3
movs r2, #0
movs r3, #2
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r1, [r6]
movs r0, #0x40
strb r0, [r1, #0x15]
_0815060C:
bl sub_08151138
ldr r3, _0815063C
movs r0, #0
ldrsh r2, [r3, r0]
adds r1, r2, #1
adds r0, r1, #0
cmp r1, #0
bge _08150622
adds r0, r2, #0
adds r0, #0x80
_08150622:
asrs r0, r0, #7
lsls r0, r0, #7
subs r0, r1, r0
strh r0, [r3]
add sp, #0xc
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08150634: .4byte 0x00004108
_08150638: .4byte 0x0000410C
_0815063C: .4byte 0x02021B38
thumb_func_end sub_0815052C
thumb_func_start sub_08150640
sub_08150640: @ 0x08150640
push {r4, r5, r6, r7, lr}
sub sp, #0xc
ldr r7, _08150694
ldr r1, [r7]
ldrb r0, [r1, #1]
cmp r0, #0xff
bne _08150650
b _08150792
_08150650:
ldrb r0, [r1, #0x14]
adds r0, #1
strb r0, [r1, #0x14]
ldr r1, [r7]
ldrh r0, [r1, #6]
movs r6, #1
ands r0, r6
cmp r0, #0
bne _08150668
ldrb r0, [r1, #0x15]
adds r0, #1
strb r0, [r1, #0x15]
_08150668:
ldr r2, [r7]
ldrh r0, [r2, #6]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _08150682
ldrb r0, [r2, #0xc]
adds r0, #1
strb r0, [r2, #0xc]
ldr r1, [r7]
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
_08150682:
ldr r0, [r7]
ldrb r1, [r0, #0x14]
cmp r1, #0x20
beq _081506F6
cmp r1, #0x20
bgt _08150698
cmp r1, #0x10
beq _081506C4
b _08150792
.align 2, 0
_08150694: .4byte 0x0203A878
_08150698:
cmp r1, #0x28
beq _08150760
cmp r1, #0xb0
bne _08150792
ldr r1, _081506C0
adds r0, r0, r1
ldr r1, [r0]
movs r0, #2
str r0, [sp]
movs r0, #0x1e
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #3
movs r2, #0
movs r3, #2
bl CopyToBgTilemapBufferRect_ChangePalette
b _08150792
.align 2, 0
_081506C0: .4byte 0x0000410C
_081506C4:
movs r0, #3
str r0, [sp]
movs r4, #2
str r4, [sp, #4]
movs r5, #0x11
str r5, [sp, #8]
movs r1, #0
movs r2, #2
movs r3, #0
bl FillBgTilemapBufferRect
str r4, [sp]
movs r0, #0xa
str r0, [sp, #4]
str r5, [sp, #8]
movs r0, #3
movs r1, #0
movs r2, #0
movs r3, #0x16
bl FillBgTilemapBufferRect
ldr r1, [r7]
movs r0, #0xc0
strb r0, [r1, #0x15]
b _08150792
_081506F6:
ldr r5, _0815075C
adds r0, r0, r5
ldr r0, [r0]
ldrh r1, [r0, #4]
str r6, [sp]
str r6, [sp, #4]
movs r4, #0x11
str r4, [sp, #8]
movs r0, #3
movs r2, #2
movs r3, #0
bl FillBgTilemapBufferRect
ldr r0, [r7]
adds r0, r0, r5
ldr r0, [r0]
ldrh r1, [r0, #6]
str r6, [sp]
str r6, [sp, #4]
str r4, [sp, #8]
movs r0, #3
movs r2, #3
movs r3, #0
bl FillBgTilemapBufferRect
ldr r0, [r7]
adds r0, r0, r5
ldr r0, [r0]
ldrh r1, [r0, #0xe]
str r6, [sp]
str r6, [sp, #4]
str r4, [sp, #8]
movs r0, #3
movs r2, #2
movs r3, #1
bl FillBgTilemapBufferRect
ldr r0, [r7]
adds r0, r0, r5
ldr r0, [r0]
ldrh r1, [r0, #0x10]
str r6, [sp]
str r6, [sp, #4]
str r4, [sp, #8]
movs r0, #3
movs r2, #3
movs r3, #1
bl FillBgTilemapBufferRect
b _08150792
.align 2, 0
_0815075C: .4byte 0x00004108
_08150760:
ldr r5, _081507AC
adds r0, r0, r5
ldr r0, [r0]
ldrh r1, [r0, #8]
str r6, [sp]
str r6, [sp, #4]
movs r4, #0x11
str r4, [sp, #8]
movs r0, #3
movs r2, #4
movs r3, #0
bl FillBgTilemapBufferRect
ldr r0, [r7]
adds r0, r0, r5
ldr r0, [r0]
ldrh r1, [r0, #0x12]
str r6, [sp]
str r6, [sp, #4]
str r4, [sp, #8]
movs r0, #3
movs r2, #4
movs r3, #1
bl FillBgTilemapBufferRect
_08150792:
bl sub_08151194
ldr r0, _081507B0
ldr r1, [r0]
ldrh r0, [r1, #6]
ldrh r1, [r1, #4]
cmp r0, r1
bhs _081507B8
ldr r4, _081507B4
movs r1, #0
ldrsh r0, [r4, r1]
b _081507C2
.align 2, 0
_081507AC: .4byte 0x00004108
_081507B0: .4byte 0x0203A878
_081507B4: .4byte 0x02021B38
_081507B8:
ldr r0, _081507D4
ldr r4, [r0]
ldr r0, _081507D8
adds r4, r4, r0
ldrh r0, [r4]
_081507C2:
adds r0, #0xf7
movs r1, #0xf8
bl __modsi3
strh r0, [r4]
add sp, #0xc
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_081507D4: .4byte 0x08526DE8
_081507D8: .4byte 0x000006FC
thumb_func_end sub_08150640
thumb_func_start CableCarVblankCallback
CableCarVblankCallback: @ 0x081507DC
push {r4, lr}
movs r0, #0
bl CopyBgTilemapBufferToVram
movs r0, #3
bl CopyBgTilemapBufferToVram
ldr r4, _0815083C
ldr r0, [r4]
ldrb r1, [r0, #0x14]
movs r0, #0x1c
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #0x15]
movs r0, #0x1e
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #0xc]
movs r0, #0x14
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #0xd]
movs r0, #0x16
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #8]
movs r0, #0x10
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #9]
movs r0, #0x12
bl SetGpuReg
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0815083C: .4byte 0x0203A878
thumb_func_end CableCarVblankCallback
thumb_func_start nullsub_58
nullsub_58: @ 0x08150840
bx lr
.align 2, 0
thumb_func_end nullsub_58
thumb_func_start sub_08150844
sub_08150844: @ 0x08150844
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _081508AC
ldr r6, [r0]
ldrb r0, [r6, #1]
cmp r0, #0xff
beq _08150910
ldr r0, _081508B0
ldrh r0, [r0]
cmp r0, #0
bne _081508C0
movs r0, #6
ldrsh r4, [r6, r0]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _0815086E
ldr r1, _081508B4
bl __addsf3
_0815086E:
ldr r1, _081508B8
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x2e]
subs r1, r1, r0
strh r1, [r5, #0x20]
movs r1, #6
ldrsh r4, [r6, r1]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _08150896
ldr r1, _081508B4
bl __addsf3
_08150896:
ldr r1, _081508BC
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x30]
subs r1, r1, r0
strh r1, [r5, #0x22]
b _08150910
.align 2, 0
_081508AC: .4byte 0x0203A878
_081508B0: .4byte 0x02037280
_081508B4: .4byte 0x47800000
_081508B8: .4byte 0x3E0F5C29
_081508BC: .4byte 0x3D89374C
_081508C0:
movs r0, #6
ldrsh r4, [r6, r0]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _081508D4
ldr r1, _08150918
bl __addsf3
_081508D4:
ldr r1, _0815091C
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x2e]
adds r0, r0, r1
strh r0, [r5, #0x20]
movs r0, #6
ldrsh r4, [r6, r0]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _081508FC
ldr r1, _08150918
bl __addsf3
_081508FC:
ldr r1, _08150920
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x30]
adds r0, r0, r1
strh r0, [r5, #0x22]
_08150910:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08150918: .4byte 0x47800000
_0815091C: .4byte 0x3E0F5C29
_08150920: .4byte 0x3D89374C
thumb_func_end sub_08150844
thumb_func_start sub_08150924
sub_08150924: @ 0x08150924
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _08150990
ldr r6, [r0]
ldrb r0, [r6, #1]
cmp r0, #0xff
bne _08150934
b _08150A3C
_08150934:
ldr r0, _08150994
ldrh r0, [r0]
cmp r0, #0
bne _081509A4
movs r0, #6
ldrsh r4, [r6, r0]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _08150950
ldr r1, _08150998
bl __addsf3
_08150950:
ldr r1, _0815099C
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x2e]
subs r1, r1, r0
strh r1, [r5, #0x20]
movs r1, #6
ldrsh r4, [r6, r1]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _08150978
ldr r1, _08150998
bl __addsf3
_08150978:
ldr r1, _081509A0
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x30]
subs r1, r1, r0
strh r1, [r5, #0x22]
b _081509F4
.align 2, 0
_08150990: .4byte 0x0203A878
_08150994: .4byte 0x02037280
_08150998: .4byte 0x47800000
_0815099C: .4byte 0x3E0F5C29
_081509A0: .4byte 0x3D89374C
_081509A4:
movs r0, #6
ldrsh r4, [r6, r0]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _081509B8
ldr r1, _08150A18
bl __addsf3
_081509B8:
ldr r1, _08150A1C
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x2e]
adds r0, r0, r1
strh r0, [r5, #0x20]
movs r0, #6
ldrsh r4, [r6, r0]
adds r0, r4, #0
bl __floatsisf
cmp r4, #0
bge _081509E0
ldr r1, _08150A18
bl __addsf3
_081509E0:
ldr r1, _08150A20
bl __mulsf3
bl __fixunssfsi
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrh r1, [r5, #0x30]
adds r0, r0, r1
strh r0, [r5, #0x22]
_081509F4:
movs r0, #0x32
ldrsh r2, [r5, r0]
cmp r2, #0
bne _08150A24
movs r0, #0x11
strh r0, [r5, #0x26]
ldrh r0, [r5, #0x34]
adds r1, r0, #1
strh r1, [r5, #0x34]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #9
ble _08150A3C
strh r2, [r5, #0x34]
ldrh r0, [r5, #0x32]
adds r0, #1
strh r0, [r5, #0x32]
b _08150A3C
.align 2, 0
_08150A18: .4byte 0x47800000
_08150A1C: .4byte 0x3E0F5C29
_08150A20: .4byte 0x3D89374C
_08150A24:
movs r2, #0
movs r0, #0x10
strh r0, [r5, #0x26]
ldrh r0, [r5, #0x34]
adds r1, r0, #1
strh r1, [r5, #0x34]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #9
ble _08150A3C
strh r2, [r5, #0x34]
strh r2, [r5, #0x32]
_08150A3C:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08150924
thumb_func_start sub_08150A44
sub_08150A44: @ 0x08150A44
push {lr}
adds r2, r0, #0
movs r1, #0x2e
ldrsh r0, [r2, r1]
cmp r0, #0
bne _08150A74
adds r0, r2, #0
adds r0, #0x28
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
lsls r0, r0, #1
ldrh r3, [r2, #0x20]
adds r0, r0, r3
strh r0, [r2, #0x20]
ldrh r1, [r2, #0x22]
adds r1, #0x10
adds r0, r2, #0
adds r0, #0x29
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, r0, r1
strh r0, [r2, #0x22]
_08150A74:
ldrh r0, [r2, #0x2e]
adds r0, #1
strh r0, [r2, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r3, #0x32
ldrsh r1, [r2, r3]
cmp r0, r1
blt _08150ACA
movs r0, #0x30
ldrsh r1, [r2, r0]
cmp r1, #0
beq _08150A94
cmp r1, #1
beq _08150A9E
b _08150ABC
_08150A94:
ldrh r0, [r2, #0x20]
adds r0, #1
strh r0, [r2, #0x20]
ldrh r0, [r2, #0x2e]
b _08150AAE
_08150A9E:
ldrh r0, [r2, #0x2e]
ands r0, r1
cmp r0, #0
beq _08150ABC
ldrh r0, [r2, #0x20]
adds r0, #1
strh r0, [r2, #0x20]
ldrh r0, [r2, #0x20]
_08150AAE:
movs r1, #3
ands r0, r1
cmp r0, #0
bne _08150ABC
ldrh r0, [r2, #0x22]
adds r0, #1
strh r0, [r2, #0x22]
_08150ABC:
movs r1, #0x22
ldrsh r0, [r2, r1]
cmp r0, #0xa0
ble _08150ACA
adds r0, r2, #0
bl DestroySprite
_08150ACA:
pop {r0}
bx r0
.align 2, 0
thumb_func_end sub_08150A44
thumb_func_start sub_08150AD0
sub_08150AD0: @ 0x08150AD0
push {lr}
adds r2, r0, #0
movs r1, #0x2e
ldrsh r0, [r2, r1]
cmp r0, #0
bne _08150AEE
ldrh r1, [r2, #0x22]
adds r1, #0x10
adds r0, r2, #0
adds r0, #0x29
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, r0, r1
strh r0, [r2, #0x22]
_08150AEE:
ldrh r0, [r2, #0x2e]
adds r0, #1
strh r0, [r2, #0x2e]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r3, #0x32
ldrsh r1, [r2, r3]
cmp r0, r1
blt _08150B44
movs r0, #0x30
ldrsh r1, [r2, r0]
cmp r1, #0
beq _08150B0E
cmp r1, #1
beq _08150B18
b _08150B36
_08150B0E:
ldrh r0, [r2, #0x20]
subs r0, #1
strh r0, [r2, #0x20]
ldrh r0, [r2, #0x2e]
b _08150B28
_08150B18:
ldrh r0, [r2, #0x2e]
ands r0, r1
cmp r0, #0
beq _08150B36
ldrh r0, [r2, #0x20]
subs r0, #1
strh r0, [r2, #0x20]
ldrh r0, [r2, #0x20]
_08150B28:
movs r1, #3
ands r0, r1
cmp r0, #0
bne _08150B36
ldrh r0, [r2, #0x22]
subs r0, #1
strh r0, [r2, #0x22]
_08150B36:
movs r1, #0x22
ldrsh r0, [r2, r1]
cmp r0, #0x4f
bgt _08150B44
adds r0, r2, #0
bl DestroySprite
_08150B44:
pop {r0}
bx r0
thumb_func_end sub_08150AD0
thumb_func_start sub_08150B48
sub_08150B48: @ 0x08150B48
push {r4, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _08150B56
cmp r0, #1
beq _08150BF8
_08150B56:
movs r0, #0x48
movs r1, #0
bl SetGpuReg
movs r0, #0x4a
movs r1, #0
bl SetGpuReg
movs r0, #0x40
movs r1, #0
bl SetGpuReg
movs r0, #0x42
movs r1, #0
bl SetGpuReg
movs r0, #0x44
movs r1, #0
bl SetGpuReg
movs r0, #0x46
movs r1, #0
bl SetGpuReg
movs r0, #0
movs r1, #0
bl SetGpuReg
movs r0, #0xe
movs r1, #0
bl SetGpuReg
movs r0, #0xc
movs r1, #0
bl SetGpuReg
movs r0, #0xa
movs r1, #0
bl SetGpuReg
movs r0, #8
movs r1, #0
bl SetGpuReg
movs r0, #0x1c
movs r1, #0
bl SetGpuReg
movs r0, #0x1e
movs r1, #0
bl SetGpuReg
movs r0, #0x18
movs r1, #0
bl SetGpuReg
movs r0, #0x1a
movs r1, #0
bl SetGpuReg
movs r0, #0x14
movs r1, #0
bl SetGpuReg
movs r0, #0x16
movs r1, #0
bl SetGpuReg
movs r0, #0x10
movs r1, #0
bl SetGpuReg
movs r0, #0x12
movs r1, #0
bl SetGpuReg
movs r0, #0x50
movs r1, #0
bl SetGpuReg
b _08150CF8
_08150BF8:
movs r0, #0x48
movs r1, #0
bl SetGpuReg
movs r0, #0x4a
movs r1, #0
bl SetGpuReg
movs r0, #0x40
movs r1, #0
bl SetGpuReg
movs r0, #0x42
movs r1, #0
bl SetGpuReg
movs r0, #0x44
movs r1, #0
bl SetGpuReg
movs r0, #0x46
movs r1, #0
bl SetGpuReg
ldr r0, _08150C48
ldrh r3, [r0]
cmp r3, #0
bne _08150C50
ldr r1, _08150C4C
ldr r2, [r1]
movs r0, #0xb0
strb r0, [r2, #0x14]
ldr r2, [r1]
movs r0, #0x10
strb r0, [r2, #0x15]
ldr r0, [r1]
strb r3, [r0, #0xc]
ldr r2, [r1]
movs r0, #0x50
b _08150C68
.align 2, 0
_08150C48: .4byte 0x02037280
_08150C4C: .4byte 0x0203A878
_08150C50:
ldr r1, _08150D00
ldr r2, [r1]
movs r3, #0
movs r0, #0x60
strb r0, [r2, #0x14]
ldr r2, [r1]
movs r0, #0xe8
strb r0, [r2, #0x15]
ldr r0, [r1]
strb r3, [r0, #0xc]
ldr r2, [r1]
movs r0, #4
_08150C68:
strb r0, [r2, #0xd]
ldr r0, [r1]
strb r3, [r0, #9]
ldr r0, [r1]
strb r3, [r0, #9]
adds r4, r1, #0
ldr r0, [r4]
ldrb r1, [r0, #0x14]
movs r0, #0x1c
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #0x15]
movs r0, #0x1e
bl SetGpuReg
movs r0, #0x18
movs r1, #0
bl SetGpuReg
movs r0, #0x1a
movs r1, #0
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #0xc]
movs r0, #0x14
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #0xd]
movs r0, #0x16
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #8]
movs r0, #0x10
bl SetGpuReg
ldr r0, [r4]
ldrb r1, [r0, #9]
movs r0, #0x12
bl SetGpuReg
movs r1, #0x82
lsls r1, r1, #5
movs r0, #0
bl SetGpuReg
movs r0, #1
bl CopyBgTilemapBufferToVram
movs r0, #2
bl CopyBgTilemapBufferToVram
movs r0, #0
bl ShowBg
movs r0, #1
bl ShowBg
movs r0, #2
bl ShowBg
movs r0, #3
bl ShowBg
movs r1, #0xfc
lsls r1, r1, #6
movs r0, #0x50
bl SetGpuReg
_08150CF8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08150D00: .4byte 0x0203A878
thumb_func_end sub_08150B48
thumb_func_start LoadCableCarSprites
LoadCableCarSprites: @ 0x08150D04
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x28
ldr r1, _08150E18
add r0, sp, #0xc
movs r2, #2
bl memcpy
bl Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sb, r0
add r6, sp, #0x10
ldr r1, _08150E1C
adds r0, r6, #0
movs r2, #4
bl memcpy
add r5, sp, #0x14
ldr r1, _08150E20
adds r0, r5, #0
movs r2, #8
bl memcpy
add r4, sp, #0x1c
ldr r1, _08150E24
adds r0, r4, #0
movs r2, #4
bl memcpy
ldr r0, _08150E28
ldr r1, [r0, #4]
ldr r0, [r0]
str r0, [sp, #0x20]
str r1, [sp, #0x24]
ldr r0, _08150E2C
ldrh r0, [r0]
mov r8, r6
mov sl, r5
cmp r0, #0
beq _08150D62
cmp r0, #1
beq _08150E44
_08150D62:
ldr r0, _08150E30
ldr r0, [r0]
ldrb r0, [r0, #8]
add r0, sp
adds r0, #0xc
ldrb r0, [r0]
ldr r1, _08150E34
movs r2, #0x66
str r2, [sp]
movs r2, #0xc8
movs r3, #0x49
bl AddPseudoEventObject
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
cmp r6, #0x40
beq _08150DAC
ldr r0, _08150E38
lsls r1, r6, #4
adds r1, r1, r6
lsls r1, r1, #2
adds r1, r1, r0
ldrb r2, [r1, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
movs r2, #8
orrs r0, r2
strb r0, [r1, #5]
movs r0, #8
strh r0, [r1, #0x24]
movs r0, #0x10
strh r0, [r1, #0x26]
movs r0, #0xc8
strh r0, [r1, #0x2e]
movs r0, #0x49
strh r0, [r1, #0x30]
_08150DAC:
ldr r4, _08150E3C
adds r0, r4, #0
movs r1, #0xb0
movs r2, #0x2b
movs r3, #0x67
bl CreateSprite
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r5, _08150E38
lsls r0, r6, #4
adds r0, r0, r6
lsls r0, r0, #2
adds r0, r0, r5
movs r1, #0x20
strh r1, [r0, #0x26]
strh r1, [r0, #0x24]
movs r1, #0xb0
strh r1, [r0, #0x2e]
movs r1, #0x2b
strh r1, [r0, #0x30]
adds r4, #0x18
adds r0, r4, #0
movs r1, #0xc8
movs r2, #0x63
movs r3, #0x65
bl CreateSprite
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
lsls r0, r6, #4
adds r0, r0, r6
lsls r0, r0, #2
adds r0, r0, r5
movs r1, #8
strh r1, [r0, #0x24]
movs r1, #4
strh r1, [r0, #0x26]
movs r1, #0xc8
strh r1, [r0, #0x2e]
movs r1, #0x63
strh r1, [r0, #0x30]
ldr r2, _08150E40
ldr r1, [r2]
movs r0, #7
strb r0, [r1, #2]
ldr r1, [r2]
movs r0, #0xaf
lsls r0, r0, #1
strh r0, [r1, #4]
movs r0, #2
bl SetCurrentAndNextWeatherNoDelay
b _08150F16
.align 2, 0
_08150E18: .4byte 0x085AC9EC
_08150E1C: .4byte 0x085AC9EE
_08150E20: .4byte 0x085AC9F2
_08150E24: .4byte 0x085AC9FA
_08150E28: .4byte 0x085ACA00
_08150E2C: .4byte 0x02037280
_08150E30: .4byte 0x03005AF0
_08150E34: .4byte 0x08150925
_08150E38: .4byte 0x020205AC
_08150E3C: .4byte 0x085AC9A4
_08150E40: .4byte 0x0203A878
_08150E44:
ldr r7, _08150FE4
ldr r0, [r7]
ldr r1, _08150FE8
adds r0, r0, r1
ldr r1, [r0]
adds r1, #0x48
movs r0, #0xc
str r0, [sp]
movs r0, #3
str r0, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #0
movs r2, #0x18
movs r3, #0x1a
bl CopyToBgTilemapBufferRect_ChangePalette
ldr r0, _08150FEC
ldr r0, [r0]
ldrb r0, [r0, #8]
add r0, sp
adds r0, #0xc
ldrb r0, [r0]
ldr r1, _08150FF0
movs r2, #0x66
str r2, [sp]
movs r2, #0x80
movs r3, #0x27
bl AddPseudoEventObject
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
cmp r6, #0x40
beq _08150EB0
ldr r0, _08150FF4
lsls r1, r6, #4
adds r1, r1, r6
lsls r1, r1, #2
adds r1, r1, r0
ldrb r2, [r1, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r2
movs r2, #8
orrs r0, r2
strb r0, [r1, #5]
movs r0, #8
strh r0, [r1, #0x24]
movs r0, #0x10
strh r0, [r1, #0x26]
movs r0, #0x80
strh r0, [r1, #0x2e]
movs r0, #0x27
strh r0, [r1, #0x30]
_08150EB0:
ldr r4, _08150FF8
adds r0, r4, #0
movs r1, #0x68
movs r2, #9
movs r3, #0x67
bl CreateSprite
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r5, _08150FF4
lsls r0, r6, #4
adds r0, r0, r6
lsls r0, r0, #2
adds r0, r0, r5
movs r1, #0x20
strh r1, [r0, #0x26]
strh r1, [r0, #0x24]
movs r1, #0x68
strh r1, [r0, #0x2e]
movs r1, #9
strh r1, [r0, #0x30]
adds r4, #0x18
adds r0, r4, #0
movs r1, #0x80
movs r2, #0x41
movs r3, #0x65
bl CreateSprite
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
lsls r0, r6, #4
adds r0, r0, r6
lsls r0, r0, #2
adds r0, r0, r5
movs r1, #8
strh r1, [r0, #0x24]
movs r1, #4
strh r1, [r0, #0x26]
movs r1, #0x80
strh r1, [r0, #0x2e]
movs r1, #0x41
strh r1, [r0, #0x30]
ldr r1, [r7]
movs r0, #2
strb r0, [r1, #2]
ldr r1, [r7]
ldr r0, _08150FFC
strh r0, [r1, #4]
movs r0, #7
bl SetCurrentAndNextWeatherNoDelay
_08150F16:
movs r4, #0
ldr r5, _08150FF4
_08150F1A:
lsls r1, r4, #0x14
movs r2, #0xc0
lsls r2, r2, #0xf
adds r1, r1, r2
asrs r1, r1, #0x10
lsls r2, r4, #0x13
ldr r3, _08151000
adds r2, r2, r3
asrs r2, r2, #0x10
ldr r0, _08151004
movs r3, #0x68
bl CreateSprite
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
lsls r0, r6, #4
adds r0, r0, r6
lsls r0, r0, #2
adds r0, r0, r5
movs r1, #8
strh r1, [r0, #0x24]
strh r1, [r0, #0x26]
adds r0, r4, #1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #8
bls _08150F1A
movs r0, #0x3f
mov r4, sb
ands r0, r4
cmp r0, #0
bne _08151050
mov r0, sb
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
add r0, r8
ldrb r0, [r0]
ldr r5, _08151008
ldrh r4, [r5]
lsls r4, r4, #2
add r1, sp, #0x20
adds r1, r4, r1
ldr r1, [r1]
mov r3, sl
adds r2, r3, r4
movs r3, #0
ldrsh r2, [r2, r3]
mov r3, sp
adds r3, #0x16
adds r3, r3, r4
movs r4, #0
ldrsh r3, [r3, r4]
movs r4, #0x6a
str r4, [sp]
bl AddPseudoEventObject
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
cmp r6, #0x40
beq _08151050
ldr r1, _08150FF4
lsls r2, r6, #4
adds r0, r2, r6
lsls r0, r0, #2
adds r4, r0, r1
ldrb r1, [r4, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r4, #5]
adds r0, r4, #0
adds r0, #0x28
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
rsbs r0, r0, #0
strh r0, [r4, #0x24]
adds r0, r4, #0
adds r0, #0x29
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
rsbs r0, r0, #0
strh r0, [r4, #0x26]
ldrh r0, [r5]
mov r8, r2
cmp r0, #0
bne _08151012
movs r7, #1
mov r5, sb
ands r5, r7
cmp r5, #0
beq _0815100C
adds r0, r4, #0
movs r1, #6
b _08151020
.align 2, 0
_08150FE4: .4byte 0x0203A878
_08150FE8: .4byte 0x000040FC
_08150FEC: .4byte 0x03005AF0
_08150FF0: .4byte 0x08150925
_08150FF4: .4byte 0x020205AC
_08150FF8: .4byte 0x085AC9A4
_08150FFC: .4byte 0x00000109
_08151000: .4byte 0xFFF80000
_08151004: .4byte 0x085AC9D4
_08151008: .4byte 0x02037280
_0815100C:
adds r0, r4, #0
movs r1, #7
b _08151032
_08151012:
movs r7, #1
mov r5, sb
ands r5, r7
cmp r5, #0
beq _0815102E
adds r0, r4, #0
movs r1, #7
_08151020:
bl StartSpriteAnim
strh r7, [r4, #0x30]
ldrh r0, [r4, #0x22]
adds r0, #2
strh r0, [r4, #0x22]
b _08151038
_0815102E:
adds r0, r4, #0
movs r1, #6
_08151032:
bl StartSpriteAnim
strh r5, [r4, #0x30]
_08151038:
ldr r0, _08151060
mov r2, r8
adds r1, r2, r6
lsls r1, r1, #2
adds r1, r1, r0
movs r0, #3
mov r3, sb
ands r0, r3
add r0, sp
adds r0, #0x1c
ldrb r0, [r0]
strh r0, [r1, #0x32]
_08151050:
add sp, #0x28
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08151060: .4byte 0x020205AC
thumb_func_end LoadCableCarSprites
thumb_func_start sub_08151064
sub_08151064: @ 0x08151064
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
movs r3, #0
mov sb, r3
ldr r2, _08151130
ldr r0, [r2]
ldrb r1, [r0, #0x1b]
adds r1, #2
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #0x1a
lsrs r0, r0, #0x18
mov ip, r0
_08151086:
movs r7, #0
lsls r0, r3, #1
adds r1, r3, #3
adds r2, r3, #6
adds r4, r3, #1
str r4, [sp, #4]
adds r0, r0, r3
lsls r0, r0, #3
str r0, [sp]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #3
mov sl, r0
lsls r0, r2, #1
adds r0, r0, r2
lsls r0, r0, #3
mov r8, r0
_081510A8:
ldr r0, _08151130
ldr r6, [r0]
lsls r3, r7, #1
ldr r1, [sp]
adds r2, r3, r1
adds r4, r6, #0
adds r4, #0x22
adds r2, r4, r2
mov r1, ip
adds r0, r1, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov ip, r0
ldr r0, _08151134
adds r5, r6, r0
ldr r0, [r5]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r0, [r1]
strh r0, [r2]
mov r1, sl
adds r2, r3, r1
adds r2, r4, r2
str r2, [sp, #8]
ldr r0, [r5]
mov r2, sb
lsls r1, r2, #1
adds r0, r1, r0
ldrh r0, [r0]
ldr r2, [sp, #8]
strh r0, [r2]
add r3, r8
adds r4, r4, r3
ldr r0, [r5]
adds r1, r1, r0
adds r1, #0x48
ldrh r0, [r1]
strh r0, [r4]
mov r0, sb
adds r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov sb, r0
adds r0, r7, #1
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
cmp r7, #0xb
bls _081510A8
ldr r4, [sp, #4]
lsls r0, r4, #0x18
lsrs r3, r0, #0x18
cmp r3, #2
bls _08151086
ldrb r0, [r6, #0x1b]
adds r0, #1
movs r1, #3
bl __modsi3
strb r0, [r6, #0x1b]
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08151130: .4byte 0x0203A878
_08151134: .4byte 0x000040FC
thumb_func_end sub_08151064
thumb_func_start sub_08151138
sub_08151138: @ 0x08151138
push {r4, r5, lr}
ldr r5, _08151190
ldr r4, [r5]
ldrb r0, [r4, #0x1c]
adds r0, #1
movs r1, #0x60
bl __modsi3
strb r0, [r4, #0x1c]
ldr r1, [r5]
ldrb r0, [r1, #0x1f]
ldrb r2, [r1, #0x1d]
subs r0, r0, r2
strb r0, [r1, #8]
ldr r2, [r5]
adds r0, r2, #0
adds r0, #0x20
ldrb r0, [r0]
ldrb r1, [r2, #0x1e]
subs r0, r0, r1
strb r0, [r2, #9]
ldr r1, [r5]
ldrb r0, [r1, #0x1d]
adds r0, #1
strb r0, [r1, #0x1d]
ldr r2, [r5]
ldrb r0, [r2, #0x1d]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0815117C
ldrb r0, [r2, #0x1e]
adds r0, #1
strb r0, [r2, #0x1e]
_0815117C:
ldr r0, [r5]
ldrb r0, [r0, #0x1d]
cmp r0, #0x10
bls _08151188
bl sub_081511F0
_08151188:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_08151190: .4byte 0x0203A878
thumb_func_end sub_08151138
thumb_func_start sub_08151194
sub_08151194: @ 0x08151194
push {r4, r5, lr}
ldr r5, _081511EC
ldr r4, [r5]
ldrb r0, [r4, #0x1c]
adds r0, #1
movs r1, #0x60
bl __modsi3
strb r0, [r4, #0x1c]
ldr r1, [r5]
ldrb r0, [r1, #0x1d]
ldrb r2, [r1, #0x1f]
adds r0, r0, r2
strb r0, [r1, #8]
ldr r1, [r5]
adds r2, r1, #0
adds r2, #0x20
ldrb r0, [r1, #0x1e]
ldrb r2, [r2]
adds r0, r0, r2
strb r0, [r1, #9]
ldr r1, [r5]
ldrb r0, [r1, #0x1d]
adds r0, #1
strb r0, [r1, #0x1d]
ldr r2, [r5]
ldrb r0, [r2, #0x1d]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _081511D8
ldrb r0, [r2, #0x1e]
adds r0, #1
strb r0, [r2, #0x1e]
_081511D8:
ldr r0, [r5]
ldrb r0, [r0, #0x1d]
cmp r0, #0x10
bls _081511E4
bl sub_08151364
_081511E4:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081511EC: .4byte 0x0203A878
thumb_func_end sub_08151194
thumb_func_start sub_081511F0
sub_081511F0: @ 0x081511F0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
movs r7, #0
ldr r3, _08151354
ldr r0, [r3]
strb r7, [r0, #0x1e]
strb r7, [r0, #0x1d]
ldr r1, [r3]
ldrb r0, [r1, #8]
strb r0, [r1, #0x1f]
ldr r0, [r3]
ldrb r1, [r0, #9]
adds r0, #0x20
strb r1, [r0]
ldr r4, [r3]
ldrb r1, [r4, #0x19]
adds r2, r1, #0
adds r2, #0x1e
adds r0, r2, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r2, r0
strb r0, [r4, #0x19]
ldr r1, [r3]
ldrb r0, [r1, #0x18]
subs r0, #2
strb r0, [r1, #0x18]
ldr r4, _08151358
ldr r0, [r3]
ldrb r1, [r0, #0x1a]
adds r2, r1, #0
adds r2, #0x17
adds r0, r2, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r2, r0
strb r0, [r4]
ldr r6, _0815135C
mov sb, r3
ldr r0, _08151360
mov r8, r0
_0815124A:
mov r1, sb
ldr r2, [r1]
ldrb r0, [r2, #0x19]
strb r0, [r6]
ldr r0, _08151358
ldrb r0, [r0]
adds r1, r0, r7
adds r0, r1, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r1, r0
mov r1, r8
strb r0, [r1]
ldrb r1, [r2, #0x18]
lsls r1, r1, #1
lsls r0, r7, #1
adds r0, r0, r7
lsls r5, r0, #3
adds r1, r1, r5
adds r0, r2, #0
adds r0, #0x22
adds r0, r0, r1
ldrh r1, [r0]
ldrb r2, [r6]
mov r0, r8
ldrb r3, [r0]
movs r4, #1
str r4, [sp]
str r4, [sp, #4]
movs r0, #0x11
mov sl, r0
str r0, [sp, #8]
movs r0, #0
bl FillBgTilemapBufferRect
ldrb r1, [r6]
adds r2, r1, #1
adds r0, r2, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r2, r0
strb r0, [r6]
mov r0, sb
ldr r1, [r0]
ldrb r0, [r1, #0x18]
adds r0, #1
lsls r0, r0, #1
adds r0, r0, r5
adds r1, #0x22
adds r1, r1, r0
ldrh r1, [r1]
ldrb r2, [r6]
mov r0, r8
ldrb r3, [r0]
str r4, [sp]
str r4, [sp, #4]
mov r0, sl
str r0, [sp, #8]
movs r0, #0
bl FillBgTilemapBufferRect
adds r0, r7, #1
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
cmp r7, #8
bls _0815124A
ldr r5, _0815135C
ldr r4, _08151354
ldr r0, [r4]
ldrb r1, [r0, #0x19]
adds r2, r1, #0
adds r2, #0x1e
adds r0, r2, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r2, r0
strb r0, [r5]
ldrb r2, [r5]
movs r0, #2
str r0, [sp]
movs r6, #0x20
str r6, [sp, #4]
movs r0, #0x11
str r0, [sp, #8]
movs r0, #0
movs r1, #0
movs r3, #0
bl FillBgTilemapBufferRect
ldr r1, [r4]
ldrb r0, [r1, #0x18]
cmp r0, #0
bne _08151344
ldrb r2, [r1, #0x1a]
adds r3, r2, #0
adds r3, #0x1d
adds r0, r3, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r3, r0
strb r0, [r1, #0x1a]
ldr r1, [r4]
movs r0, #0xc
strb r0, [r1, #0x18]
bl sub_08151064
ldr r0, [r4]
ldrb r1, [r0, #0x1a]
adds r2, r1, #1
adds r0, r2, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r2, r0
strb r0, [r5]
ldrb r3, [r5]
str r6, [sp]
movs r0, #9
str r0, [sp, #4]
mov r1, sl
str r1, [sp, #8]
movs r0, #0
movs r1, #0
movs r2, #0
bl FillBgTilemapBufferRect
_08151344:
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08151354: .4byte 0x0203A878
_08151358: .4byte 0x0203A87E
_0815135C: .4byte 0x0203A87C
_08151360: .4byte 0x0203A87D
thumb_func_end sub_081511F0
thumb_func_start sub_08151364
sub_08151364: @ 0x08151364
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
movs r7, #0
ldr r2, _08151494
ldr r0, [r2]
strb r7, [r0, #0x1e]
strb r7, [r0, #0x1d]
ldr r1, [r2]
ldrb r0, [r1, #8]
strb r0, [r1, #0x1f]
ldr r0, [r2]
ldrb r1, [r0, #9]
adds r0, #0x20
strb r1, [r0]
ldr r4, [r2]
ldrb r1, [r4, #0x19]
adds r3, r1, #2
adds r0, r3, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r3, r0
strb r0, [r4, #0x19]
ldr r1, [r2]
ldrb r0, [r1, #0x18]
adds r0, #2
strb r0, [r1, #0x18]
ldr r1, _08151498
ldr r0, [r2]
ldrb r0, [r0, #0x1a]
strb r0, [r1]
ldr r6, _0815149C
mov sl, r2
ldr r0, _081514A0
mov sb, r0
_081513B0:
mov r1, sl
ldr r2, [r1]
ldrb r0, [r2, #0x19]
strb r0, [r6]
ldr r0, _08151498
ldrb r0, [r0]
adds r1, r0, r7
adds r0, r1, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r1, r0
mov r1, sb
strb r0, [r1]
ldrb r1, [r2, #0x18]
lsls r1, r1, #1
lsls r0, r7, #1
adds r0, r0, r7
lsls r5, r0, #3
adds r1, r1, r5
adds r0, r2, #0
adds r0, #0x22
adds r0, r0, r1
ldrh r1, [r0]
ldrb r2, [r6]
mov r0, sb
ldrb r3, [r0]
movs r4, #1
str r4, [sp]
str r4, [sp, #4]
movs r0, #0x11
mov r8, r0
str r0, [sp, #8]
movs r0, #0
bl FillBgTilemapBufferRect
ldrb r1, [r6]
adds r2, r1, #1
adds r0, r2, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r2, r0
strb r0, [r6]
mov r0, sl
ldr r1, [r0]
ldrb r0, [r1, #0x18]
adds r0, #1
lsls r0, r0, #1
adds r0, r0, r5
adds r1, #0x22
adds r1, r1, r0
ldrh r1, [r1]
ldrb r2, [r6]
mov r0, sb
ldrb r3, [r0]
str r4, [sp]
str r4, [sp, #4]
mov r0, r8
str r0, [sp, #8]
movs r0, #0
bl FillBgTilemapBufferRect
adds r0, r7, #1
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
cmp r7, #8
bls _081513B0
ldr r4, _081514A0
ldr r5, _08151494
ldr r3, [r5]
ldrb r1, [r3, #0x1a]
adds r2, r1, #0
adds r2, #0x17
adds r0, r2, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r2, r0
strb r0, [r4]
ldrb r2, [r3, #0x19]
ldrb r3, [r4]
movs r0, #2
str r0, [sp]
movs r0, #9
str r0, [sp, #4]
mov r1, r8
str r1, [sp, #8]
movs r0, #0
movs r1, #0
bl FillBgTilemapBufferRect
ldr r1, [r5]
ldrb r0, [r1, #0x18]
cmp r0, #0xa
bne _08151482
ldrb r2, [r1, #0x1a]
adds r3, r2, #3
adds r0, r3, #0
asrs r0, r0, #5
lsls r0, r0, #5
subs r0, r3, r0
strb r0, [r1, #0x1a]
ldr r1, [r5]
movs r0, #0xfe
strb r0, [r1, #0x18]
bl sub_08151064
_08151482:
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08151494: .4byte 0x0203A878
_08151498: .4byte 0x0203A881
_0815149C: .4byte 0x0203A87F
_081514A0: .4byte 0x0203A880
thumb_func_end sub_08151364