summaryrefslogtreecommitdiff
path: root/asm/gpu_bg.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2015-10-06 05:46:30 -0700
committerYamaArashi <shadow962@live.com>2015-10-06 05:46:30 -0700
commit25342bcf33e2662a916b93e47e405df6024e30bd (patch)
tree0426703bc9a2873f2ff112022730eea61952bd70 /asm/gpu_bg.s
parentb05c4231a9692eed9640b6503917592ebbfea797 (diff)
split out some code
Diffstat (limited to 'asm/gpu_bg.s')
-rw-r--r--asm/gpu_bg.s3380
1 files changed, 3380 insertions, 0 deletions
diff --git a/asm/gpu_bg.s b/asm/gpu_bg.s
new file mode 100644
index 000000000..16416062a
--- /dev/null
+++ b/asm/gpu_bg.s
@@ -0,0 +1,3380 @@
+ thumb_func_start gpu_init_bgs
+gpu_init_bgs: @ 80012F0
+ push {lr}
+ bl gpu_reset_bg_configs
+ ldr r1, =0x030008e0
+ movs r0, 0
+ strh r0, [r1, 0x10]
+ bl gpu_sync_text_mode_and_hide_bgs
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_init_bgs
+
+ thumb_func_start gpu_set_bg_mode
+gpu_set_bg_mode: @ 8001308
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r3, =0x030008e0
+ ldrh r2, [r3, 0x10]
+ ldr r1, =0x0000fff8
+ ands r1, r2
+ orrs r1, r0
+ strh r1, [r3, 0x10]
+ bx lr
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_set_bg_mode
+
+ thumb_func_start gpu_get_bg_mode
+gpu_get_bg_mode: @ 8001324
+ ldr r0, =0x030008e0
+ ldrb r1, [r0, 0x10]
+ movs r0, 0x7
+ ands r0, r1
+ bx lr
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_get_bg_mode
+
+ thumb_func_start gpu_reset_bg_configs
+gpu_reset_bg_configs: @ 8001334
+ push {lr}
+ ldr r2, =0x030008e0
+ ldr r0, =0x082e9580
+ ldr r0, [r0]
+ adds r1, r2, 0
+ adds r1, 0xC
+_08001340:
+ str r0, [r1]
+ subs r1, 0x4
+ cmp r1, r2
+ bge _08001340
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_reset_bg_configs
+
+ thumb_func_start sub_8001354
+sub_8001354: @ 8001354
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id
+ lsls r0, 24
+ cmp r0, 0
+ bne _08001372
+ ldr r1, =0x030008e0
+ lsls r0, r4, 2
+ adds r0, r1
+ ldr r1, =0x082e9580
+ ldr r1, [r1]
+ str r1, [r0]
+_08001372:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end sub_8001354
+
+ thumb_func_start gpu_bg_config_set_fields
+gpu_bg_config_set_fields: @ 8001380
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ ldr r4, [sp, 0x30]
+ ldr r5, [sp, 0x34]
+ ldr r6, [sp, 0x38]
+ mov r12, r6
+ ldr r6, [sp, 0x3C]
+ mov r8, r6
+ lsls r0, 24
+ lsrs r7, r0, 24
+ str r7, [sp]
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ lsrs r6, r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp, 0x4]
+ lsls r5, 24
+ lsrs r5, 24
+ mov r0, r12
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r1, r8
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp, 0xC]
+ adds r0, r7, 0
+ bl is_invalid_bg_id
+ lsls r0, 24
+ lsrs r0, 24
+ mov r12, r0
+ cmp r0, 0
+ bne _08001498
+ ldr r2, =0x030008e0
+ mov r8, r2
+ mov r0, r10
+ cmp r0, 0xFF
+ beq _080013F4
+ lsls r2, r7, 2
+ add r2, r8
+ movs r1, 0x3
+ ands r1, r0
+ ldrb r3, [r2, 0x1]
+ movs r0, 0x4
+ negs r0, r0
+ ands r0, r3
+ orrs r0, r1
+ strb r0, [r2, 0x1]
+_080013F4:
+ cmp r6, 0xFF
+ beq _0800140C
+ lsls r1, r7, 2
+ add r1, r8
+ movs r0, 0x1F
+ ands r6, r0
+ lsls r3, r6, 2
+ ldrb r2, [r1, 0x1]
+ subs r0, 0x9C
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1, 0x1]
+_0800140C:
+ mov r1, r9
+ cmp r1, 0xFF
+ beq _08001428
+ lsls r1, r7, 2
+ add r1, r8
+ movs r0, 0x3
+ mov r2, r9
+ ands r2, r0
+ lsls r3, r2, 2
+ ldrb r2, [r1]
+ subs r0, 0x10
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1]
+_08001428:
+ ldr r6, [sp, 0x4]
+ cmp r6, 0xFF
+ beq _0800143E
+ lsls r1, r7, 2
+ add r1, r8
+ lsls r3, r6, 7
+ ldrb r2, [r1, 0x1]
+ movs r0, 0x7F
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1, 0x1]
+_0800143E:
+ cmp r5, 0xFF
+ beq _08001456
+ lsls r1, r7, 2
+ add r1, r8
+ movs r0, 0x3
+ ands r5, r0
+ lsls r3, r5, 4
+ ldrb r2, [r1]
+ subs r0, 0x34
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1]
+_08001456:
+ cmp r4, 0xFF
+ beq _0800146E
+ lsls r1, r7, 2
+ add r1, r8
+ movs r0, 0x1
+ ands r4, r0
+ lsls r3, r4, 6
+ ldrb r2, [r1]
+ subs r0, 0x42
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1]
+_0800146E:
+ ldr r0, [sp, 0xC]
+ cmp r0, 0xFF
+ beq _08001484
+ lsls r1, r7, 2
+ add r1, r8
+ lsls r3, r0, 7
+ ldrb r2, [r1]
+ movs r0, 0x7F
+ ands r0, r2
+ orrs r0, r3
+ strb r0, [r1]
+_08001484:
+ ldr r1, [sp]
+ lsls r0, r1, 2
+ add r0, r8
+ mov r2, r12
+ strb r2, [r0, 0x2]
+ strb r2, [r0, 0x3]
+ ldrb r1, [r0]
+ movs r2, 0x1
+ orrs r1, r2
+ strb r1, [r0]
+_08001498:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_bg_config_set_fields
+
+ thumb_func_start gpu_bg_config_get_field
+gpu_bg_config_get_field: @ 80014AC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r5, r1, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id
+ lsls r0, 24
+ cmp r0, 0
+ bne _08001558
+ ldr r1, =0x030008e0
+ lsls r2, r4, 2
+ adds r0, r2, r1
+ ldrb r0, [r0]
+ lsls r0, 31
+ adds r3, r1, 0
+ cmp r0, 0
+ beq _08001558
+ subs r0, r5, 0x1
+ cmp r0, 0x7
+ bhi _08001558
+ lsls r0, 2
+ ldr r1, =_080014EC
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+ .pool
+ .align 2, 0
+_080014EC:
+ .4byte _0800150C
+ .4byte _08001516
+ .4byte _08001520
+ .4byte _0800152A
+ .4byte _08001534
+ .4byte _0800153C
+ .4byte _08001546
+ .4byte _08001550
+_0800150C:
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ lsls r0, 31
+ lsrs r0, 31
+ b _0800155A
+_08001516:
+ adds r0, r2, r3
+ ldrb r0, [r0, 0x1]
+ lsls r0, 30
+ lsrs r0, 30
+ b _0800155A
+_08001520:
+ adds r0, r2, r3
+ ldrb r0, [r0, 0x1]
+ lsls r0, 25
+ lsrs r0, 27
+ b _0800155A
+_0800152A:
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ lsls r0, 28
+ lsrs r0, 30
+ b _0800155A
+_08001534:
+ adds r0, r2, r3
+ ldrb r0, [r0, 0x1]
+ lsrs r0, 7
+ b _0800155A
+_0800153C:
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ lsls r0, 26
+ lsrs r0, 30
+ b _0800155A
+_08001546:
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ lsls r0, 25
+ lsrs r0, 31
+ b _0800155A
+_08001550:
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ lsrs r0, 7
+ b _0800155A
+_08001558:
+ movs r0, 0xFF
+_0800155A:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end gpu_bg_config_get_field
+
+ thumb_func_start gpu_copy_to_vram_by_bg_id
+gpu_copy_to_vram_by_bg_id: @ 8001560
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ mov r8, r1
+ ldr r1, [sp, 0x18]
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r2, 16
+ lsrs r7, r2, 16
+ lsls r3, 16
+ lsrs r6, r3, 16
+ lsls r1, 24
+ lsrs r5, r1, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id
+ lsls r0, 24
+ cmp r0, 0
+ bne _080015D8
+ ldr r1, =0x030008e0
+ lsls r0, r4, 2
+ adds r1, r0, r1
+ ldrb r0, [r1]
+ lsls r0, 31
+ cmp r0, 0
+ beq _080015D8
+ cmp r5, 0x1
+ beq _080015A4
+ cmp r5, 0x2
+ beq _080015AC
+ movs r2, 0xFF
+ b _080015DC
+ .align 2, 0
+ .pool
+_080015A4:
+ ldrb r0, [r1, 0x1]
+ lsls r0, 30
+ lsrs r0, 16
+ b _080015B4
+_080015AC:
+ ldrb r0, [r1, 0x1]
+ lsls r0, 25
+ lsrs r0, 27
+ lsls r0, 11
+_080015B4:
+ adds r0, r6, r0
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0xC0
+ lsls r1, 19
+ adds r1, r0, r1
+ mov r0, r8
+ adds r2, r7, 0
+ movs r3, 0
+ bl dma3_transfer_queue_add_copy
+ lsls r0, 24
+ lsrs r2, r0, 24
+ asrs r0, 24
+ movs r1, 0x1
+ negs r1, r1
+ cmp r0, r1
+ bne _080015DC
+_080015D8:
+ movs r0, 0xFF
+ b _080015DE
+_080015DC:
+ adds r0, r2, 0
+_080015DE:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end gpu_copy_to_vram_by_bg_id
+
+ thumb_func_start gpu_bg_show
+gpu_bg_show: @ 80015E8
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id
+ lsls r0, 24
+ cmp r0, 0
+ bne _08001656
+ ldr r5, =0x030008e0
+ lsls r0, r4, 2
+ adds r2, r0, r5
+ ldrb r3, [r2]
+ lsls r0, r3, 31
+ cmp r0, 0
+ beq _08001656
+ lsls r1, r3, 26
+ lsrs r1, 30
+ ldrb r2, [r2, 0x1]
+ lsls r0, r2, 30
+ lsrs r0, 28
+ orrs r1, r0
+ movs r0, 0x40
+ ands r0, r3
+ orrs r1, r0
+ lsrs r0, r2, 7
+ lsls r0, 7
+ orrs r1, r0
+ lsls r2, 25
+ lsrs r2, 27
+ lsls r2, 8
+ orrs r1, r2
+ lsrs r0, r3, 7
+ lsls r0, 13
+ orrs r1, r0
+ lsls r0, r3, 28
+ lsrs r0, 30
+ lsls r0, 14
+ orrs r1, r0
+ lsls r0, r4, 25
+ movs r2, 0x80
+ lsls r2, 20
+ adds r0, r2
+ lsrs r0, 24
+ bl lcd_io_set
+ adds r1, r4, 0
+ adds r1, 0x8
+ movs r0, 0x1
+ lsls r0, r1
+ ldrh r1, [r5, 0x10]
+ orrs r0, r1
+ ldr r1, =0x00000f07
+ ands r0, r1
+ strh r0, [r5, 0x10]
+_08001656:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_bg_show
+
+ thumb_func_start gpu_bg_hide
+gpu_bg_hide: @ 8001664
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id
+ lsls r0, 24
+ cmp r0, 0
+ bne _0800168A
+ ldr r2, =0x030008e0
+ adds r0, r4, 0
+ adds r0, 0x8
+ movs r1, 0x1
+ lsls r1, r0
+ ldrh r0, [r2, 0x10]
+ bics r0, r1
+ ldr r1, =0x00000f07
+ ands r0, r1
+ strh r0, [r2, 0x10]
+_0800168A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_bg_hide
+
+ thumb_func_start gpu_sync_bg_visibility_and_mode
+gpu_sync_bg_visibility_and_mode: @ 8001698
+ push {lr}
+ movs r0, 0
+ bl lcd_io_get
+ ldr r1, =0x0000f0f8
+ ands r1, r0
+ ldr r0, =0x030008e0
+ ldrh r0, [r0, 0x10]
+ orrs r1, r0
+ movs r0, 0
+ bl lcd_io_set
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_sync_bg_visibility_and_mode
+
+ thumb_func_start gpu_sync_text_mode_and_hide_bgs
+gpu_sync_text_mode_and_hide_bgs: @ 80016BC
+ push {lr}
+ movs r0, 0
+ bl lcd_io_get
+ ldr r1, =0x0000f0f8
+ ands r1, r0
+ movs r0, 0
+ bl lcd_io_set
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_sync_text_mode_and_hide_bgs
+
+ thumb_func_start gpu_bg_affine_set
+gpu_bg_affine_set: @ 80016D8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x24
+ mov r12, r1
+ mov r8, r2
+ ldr r1, [sp, 0x3C]
+ ldr r2, [sp, 0x40]
+ ldr r4, [sp, 0x44]
+ ldr r5, [sp, 0x48]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r1, 16
+ lsrs r7, r1, 16
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ ldr r0, =0x030008e0
+ ldrh r0, [r0, 0x10]
+ movs r1, 0x7
+ ands r1, r0
+ cmp r1, 0x1
+ beq _08001720
+ cmp r1, 0x1
+ ble _08001796
+ cmp r1, 0x2
+ beq _08001726
+ b _08001796
+ .align 2, 0
+ .pool
+_08001720:
+ cmp r6, 0x2
+ bne _08001796
+ b _08001730
+_08001726:
+ subs r0, r6, 0x2
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bhi _08001796
+_08001730:
+ mov r0, r12
+ str r0, [sp]
+ mov r0, r8
+ str r0, [sp, 0x4]
+ mov r0, sp
+ strh r3, [r0, 0x8]
+ strh r7, [r0, 0xA]
+ strh r2, [r0, 0xC]
+ strh r4, [r0, 0xE]
+ strh r5, [r0, 0x10]
+ add r4, sp, 0x14
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl BgAffineSet
+ ldrh r1, [r4]
+ movs r0, 0x20
+ bl lcd_io_set
+ ldrh r1, [r4, 0x2]
+ movs r0, 0x22
+ bl lcd_io_set
+ ldrh r1, [r4, 0x4]
+ movs r0, 0x24
+ bl lcd_io_set
+ ldrh r1, [r4, 0x6]
+ movs r0, 0x26
+ bl lcd_io_set
+ ldrh r1, [r4]
+ movs r0, 0x20
+ bl lcd_io_set
+ ldrh r1, [r4, 0x8]
+ movs r0, 0x28
+ bl lcd_io_set
+ ldrh r1, [r4, 0xA]
+ movs r0, 0x2A
+ bl lcd_io_set
+ ldrh r1, [r4, 0xC]
+ movs r0, 0x2C
+ bl lcd_io_set
+ ldrh r1, [r4, 0xE]
+ movs r0, 0x2E
+ bl lcd_io_set
+_08001796:
+ add sp, 0x24
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end gpu_bg_affine_set
+
+ thumb_func_start is_invalid_bg_id
+is_invalid_bg_id: @ 80017A4
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bhi _080017B2
+ movs r0, 0
+ b _080017B4
+_080017B2:
+ movs r0, 0x1
+_080017B4:
+ pop {r1}
+ bx r1
+ thumb_func_end is_invalid_bg_id
+
+ thumb_func_start do_nothing
+do_nothing: @ 80017B8
+ movs r0, 0
+ bx lr
+ thumb_func_end do_nothing
+
+ thumb_func_start gpu_reset_bgs_and_dma3_busy_flags
+gpu_reset_bgs_and_dma3_busy_flags: @ 80017BC
+ push {r4,lr}
+ adds r4, r0, 0
+ bl gpu_init_bgs
+ ldr r1, =0x03000938
+ movs r2, 0
+ adds r0, r1, 0
+ adds r0, 0xC
+_080017CC:
+ str r2, [r0]
+ subs r0, 0x4
+ cmp r0, r1
+ bge _080017CC
+ ldr r0, =0x03002f54
+ str r4, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_reset_bgs_and_dma3_busy_flags
+
+ thumb_func_start bg_vram_setup
+bg_vram_setup: @ 80017E8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x10
+ adds r5, r1, 0
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 24
+ lsrs r4, r2, 24
+ bl gpu_set_bg_mode
+ bl gpu_reset_bg_configs
+ cmp r4, 0
+ beq _08001894
+ movs r7, 0
+ ldr r0, =0x030008f8
+ mov r9, r0
+ movs r2, 0xC
+ add r2, r9
+ mov r10, r2
+ adds r6, r5, 0
+ mov r8, r4
+_0800181A:
+ ldr r4, [r6]
+ lsls r0, r4, 30
+ lsrs r5, r0, 30
+ cmp r5, 0x3
+ bhi _08001886
+ lsls r1, r4, 28
+ lsrs r1, 30
+ lsls r2, r4, 23
+ lsrs r2, 27
+ lsls r3, r4, 21
+ lsrs r3, 30
+ lsls r0, r4, 20
+ lsrs r0, 31
+ str r0, [sp]
+ lsls r0, r4, 18
+ lsrs r0, 30
+ str r0, [sp, 0x4]
+ str r7, [sp, 0x8]
+ str r7, [sp, 0xC]
+ adds r0, r5, 0
+ bl gpu_bg_config_set_fields
+ lsls r4, r5, 4
+ mov r5, r9
+ adds r3, r4, r5
+ ldr r2, [r6]
+ lsls r2, 8
+ lsrs r2, 22
+ ldrh r0, [r3]
+ ldr r5, =0xfffffc00
+ adds r1, r5, 0
+ ands r0, r1
+ orrs r0, r2
+ strh r0, [r3]
+ ldrb r0, [r3, 0x1]
+ movs r2, 0x3D
+ negs r2, r2
+ adds r1, r2, 0
+ ands r0, r1
+ strb r0, [r3, 0x1]
+ ldr r0, [r3]
+ ldr r1, =0x00003fff
+ ands r0, r1
+ str r0, [r3]
+ mov r0, r9
+ adds r0, 0x4
+ adds r0, r4, r0
+ str r7, [r0]
+ mov r0, r9
+ adds r0, 0x8
+ adds r0, r4, r0
+ str r7, [r0]
+ add r4, r10
+ str r7, [r4]
+_08001886:
+ adds r6, 0x4
+ movs r5, 0x1
+ negs r5, r5
+ add r8, r5
+ mov r0, r8
+ cmp r0, 0
+ bne _0800181A
+_08001894:
+ add sp, 0x10
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end bg_vram_setup
+
+ thumb_func_start bg_init_bg_config_2_from_bg_config_3
+bg_init_bg_config_2_from_bg_config_3: @ 80018B0
+ push {r4-r7,lr}
+ sub sp, 0x10
+ adds r7, r0, 0
+ ldr r4, [r7]
+ lsls r0, r4, 30
+ lsrs r5, r0, 30
+ cmp r5, 0x3
+ bhi _08001920
+ lsls r1, r4, 28
+ lsrs r1, 30
+ lsls r2, r4, 23
+ lsrs r2, 27
+ lsls r3, r4, 21
+ lsrs r3, 30
+ lsls r0, r4, 20
+ lsrs r0, 31
+ str r0, [sp]
+ lsls r0, r4, 18
+ lsrs r0, 30
+ str r0, [sp, 0x4]
+ movs r6, 0
+ str r6, [sp, 0x8]
+ str r6, [sp, 0xC]
+ adds r0, r5, 0
+ bl gpu_bg_config_set_fields
+ ldr r4, =0x030008f8
+ lsls r5, 4
+ adds r3, r5, r4
+ ldr r1, [r7]
+ lsls r1, 8
+ lsrs r1, 22
+ ldrh r2, [r3]
+ ldr r0, =0xfffffc00
+ ands r0, r2
+ orrs r0, r1
+ strh r0, [r3]
+ ldrb r1, [r3, 0x1]
+ movs r0, 0x3D
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r3, 0x1]
+ ldr r0, [r3]
+ ldr r1, =0x00003fff
+ ands r0, r1
+ str r0, [r3]
+ adds r0, r4, 0x4
+ adds r0, r5, r0
+ str r6, [r0]
+ adds r0, r4, 0
+ adds r0, 0x8
+ adds r0, r5, r0
+ str r6, [r0]
+ adds r4, 0xC
+ adds r5, r4
+ str r6, [r5]
+_08001920:
+ add sp, 0x10
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end bg_init_bg_config_2_from_bg_config_3
+
+ thumb_func_start call_gpu_set_bg_mode
+call_gpu_set_bg_mode: @ 8001934
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl gpu_set_bg_mode
+ pop {r0}
+ bx r0
+ thumb_func_end call_gpu_set_bg_mode
+
+ thumb_func_start gpu_copy_bg_tile_pattern_data_to_vram
+gpu_copy_bg_tile_pattern_data_to_vram: @ 8001944
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ adds r7, r1, 0
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r2, 16
+ lsrs r2, 16
+ mov r8, r2
+ lsls r3, 16
+ lsrs r4, r3, 16
+ adds r0, r5, 0
+ movs r1, 0x5
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ bne _08001980
+ ldr r1, =0x030008f8
+ lsls r0, r5, 4
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r0, 22
+ lsrs r0, 22
+ adds r0, r4
+ lsls r0, 21
+ b _08001990
+ .align 2, 0
+ .pool
+_08001980:
+ ldr r1, =0x030008f8
+ lsls r0, r5, 4
+ adds r0, r1
+ ldrh r0, [r0]
+ lsls r0, 22
+ lsrs r0, 22
+ adds r0, r4
+ lsls r0, 22
+_08001990:
+ lsrs r4, r0, 16
+ movs r6, 0x1
+ str r6, [sp]
+ adds r0, r5, 0
+ adds r1, r7, 0
+ mov r2, r8
+ adds r3, r4, 0
+ bl gpu_copy_to_vram_by_bg_id
+ lsls r2, r0, 24
+ lsrs r1, r2, 24
+ adds r7, r1, 0
+ cmp r1, 0xFF
+ bne _080019B8
+ ldr r0, =0x0000ffff
+ b _080019E6
+ .align 2, 0
+ .pool
+_080019B8:
+ ldr r0, =0x03000938
+ lsrs r2, 29
+ lsls r2, 2
+ adds r2, r0
+ movs r0, 0x1F
+ ands r0, r1
+ adds r1, r6, 0
+ lsls r1, r0
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+ ldr r0, =0x03002f54
+ ldr r0, [r0]
+ cmp r0, 0x1
+ bne _080019E4
+ lsrs r1, r4, 5
+ mov r0, r8
+ lsrs r2, r0, 5
+ adds r0, r5, 0
+ movs r3, 0x1
+ bl do_nothing
+_080019E4:
+ adds r0, r7, 0
+_080019E6:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_copy_bg_tile_pattern_data_to_vram
+
+ thumb_func_start gpu_copy_bg_tile_map_to_vram
+gpu_copy_bg_tile_map_to_vram: @ 80019FC
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r3, 17
+ lsrs r3, 16
+ movs r4, 0x2
+ str r4, [sp]
+ bl gpu_copy_to_vram_by_bg_id
+ lsls r2, r0, 24
+ lsrs r3, r2, 24
+ cmp r3, 0xFF
+ beq _08001A3C
+ ldr r0, =0x03000938
+ lsrs r2, 29
+ lsls r2, 2
+ adds r2, r0
+ movs r0, 0x1F
+ ands r0, r3
+ movs r1, 0x1
+ lsls r1, r0
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+ adds r0, r3, 0
+ b _08001A3E
+ .align 2, 0
+ .pool
+_08001A3C:
+ ldr r0, =0x0000ffff
+_08001A3E:
+ add sp, 0x4
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_copy_bg_tile_map_to_vram
+
+ thumb_func_start unused_copy_palette
+unused_copy_palette: @ 8001A4C
+ push {r4-r7,lr}
+ adds r7, r1, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r2, 16
+ lsrs r6, r2, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _08001A98
+ ldr r1, =0x030008f8
+ lsls r0, r4, 4
+ adds r0, r1
+ ldrb r1, [r0, 0x1]
+ lsls r1, 26
+ lsrs r1, 28
+ lsls r1, 5
+ lsls r0, r5, 1
+ adds r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ movs r0, 0xA0
+ lsls r0, 19
+ adds r1, r0
+ adds r0, r7, 0
+ adds r2, r6, 0
+ movs r3, 0
+ bl dma3_transfer_queue_add_copy
+ lsls r3, r0, 24
+ asrs r1, r3, 24
+ movs r0, 0x1
+ negs r0, r0
+ cmp r1, r0
+ bne _08001AA4
+_08001A98:
+ ldr r0, =0x0000ffff
+ b _08001AC8
+ .align 2, 0
+ .pool
+_08001AA4:
+ ldr r4, =0x03000938
+ adds r0, r1, 0
+ cmp r1, 0
+ bge _08001AAE
+ adds r0, 0x1F
+_08001AAE:
+ asrs r0, 5
+ lsls r2, r0, 2
+ adds r2, r4
+ lsls r0, 5
+ subs r0, r1, r0
+ lsls r0, 24
+ asrs r0, 24
+ movs r1, 0x1
+ lsls r1, r0
+ ldr r0, [r2]
+ orrs r0, r1
+ str r0, [r2]
+ lsrs r0, r3, 24
+_08001AC8:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end unused_copy_palette
+
+ thumb_func_start is_dma3_queue_busy_with_gpu_copy
+is_dma3_queue_busy_with_gpu_copy: @ 8001AD4
+ push {r4-r7,lr}
+ movs r5, 0
+ movs r7, 0x1
+ negs r7, r7
+_08001ADC:
+ adds r0, r5, 0
+ cmp r5, 0
+ bge _08001AE4
+ adds r0, 0x1F
+_08001AE4:
+ asrs r0, 5
+ lsls r2, r0, 24
+ lsls r0, 5
+ subs r0, r5, r0
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =0x03000938
+ lsrs r2, 22
+ adds r4, r2, r1
+ movs r6, 0x1
+ lsls r6, r0
+ ldr r0, [r4]
+ ands r0, r6
+ cmp r0, 0
+ beq _08001B22
+ lsls r0, r5, 16
+ asrs r0, 16
+ bl dma3_transfer_queue_check_for_space
+ lsls r0, 24
+ asrs r0, 24
+ cmp r0, r7
+ bne _08001B1C
+ movs r0, 0x1
+ b _08001B2A
+ .align 2, 0
+ .pool
+_08001B1C:
+ ldr r0, [r4]
+ bics r0, r6
+ str r0, [r4]
+_08001B22:
+ adds r5, 0x1
+ cmp r5, 0x7F
+ ble _08001ADC
+ movs r0, 0
+_08001B2A:
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end is_dma3_queue_busy_with_gpu_copy
+
+ thumb_func_start gpu_sync_bg_show
+gpu_sync_bg_show: @ 8001B30
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl gpu_bg_show
+ bl gpu_sync_bg_visibility_and_mode
+ pop {r0}
+ bx r0
+ thumb_func_end gpu_sync_bg_show
+
+ thumb_func_start gpu_sync_bg_hide
+gpu_sync_bg_hide: @ 8001B44
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ bl gpu_bg_hide
+ bl gpu_sync_bg_visibility_and_mode
+ pop {r0}
+ bx r0
+ thumb_func_end gpu_sync_bg_hide
+
+ thumb_func_start gpu_bg_config_set_field
+gpu_bg_config_set_field: @ 8001B58
+ push {r4,lr}
+ sub sp, 0x10
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 24
+ lsrs r3, r2, 24
+ subs r0, r1, 0x1
+ cmp r0, 0x6
+ bhi _08001C12
+ lsls r0, 2
+ ldr r1, =_08001B7C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+ .pool
+ .align 2, 0
+_08001B7C:
+ .4byte _08001B98
+ .4byte _08001BA8
+ .4byte _08001BBA
+ .4byte _08001BD0
+ .4byte _08001BE4
+ .4byte _08001BFC
+ .4byte _08001BDA
+_08001B98:
+ movs r0, 0xFF
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ str r0, [sp, 0x8]
+ str r0, [sp, 0xC]
+ adds r0, r4, 0
+ adds r1, r3, 0
+ b _08001BF2
+_08001BA8:
+ movs r0, 0xFF
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ str r0, [sp, 0x8]
+ str r0, [sp, 0xC]
+ adds r0, r4, 0
+ movs r1, 0xFF
+ adds r2, r3, 0
+ b _08001BF4
+_08001BBA:
+ movs r0, 0xFF
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ str r0, [sp, 0x8]
+ str r0, [sp, 0xC]
+ adds r0, r4, 0
+ movs r1, 0xFF
+ movs r2, 0xFF
+ bl gpu_bg_config_set_fields
+ b _08001C12
+_08001BD0:
+ str r3, [sp]
+ movs r0, 0xFF
+ str r0, [sp, 0x4]
+ str r0, [sp, 0x8]
+ b _08001BEC
+_08001BDA:
+ movs r0, 0xFF
+ str r0, [sp]
+ str r3, [sp, 0x4]
+ str r0, [sp, 0x8]
+ b _08001BEC
+_08001BE4:
+ movs r0, 0xFF
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ str r3, [sp, 0x8]
+_08001BEC:
+ str r0, [sp, 0xC]
+ adds r0, r4, 0
+ movs r1, 0xFF
+_08001BF2:
+ movs r2, 0xFF
+_08001BF4:
+ movs r3, 0xFF
+ bl gpu_bg_config_set_fields
+ b _08001C12
+_08001BFC:
+ movs r0, 0xFF
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ str r0, [sp, 0x8]
+ str r3, [sp, 0xC]
+ adds r0, r4, 0
+ movs r1, 0xFF
+ movs r2, 0xFF
+ movs r3, 0xFF
+ bl gpu_bg_config_set_fields
+_08001C12:
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end gpu_bg_config_set_field
+
+ thumb_func_start bg_get_field
+bg_get_field: @ 8001C1C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ subs r0, r1, 0x1
+ cmp r0, 0x9
+ bhi _08001CF8
+ lsls r0, 2
+ ldr r1, =_08001C3C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+ .pool
+ .align 2, 0
+_08001C3C:
+ .4byte _08001C64
+ .4byte _08001C6E
+ .4byte _08001C78
+ .4byte _08001C82
+ .4byte _08001C96
+ .4byte _08001CA0
+ .4byte _08001C8C
+ .4byte _08001CAA
+ .4byte _08001CD8
+ .4byte _08001CE4
+_08001C64:
+ adds r0, r4, 0
+ movs r1, 0x2
+ bl gpu_bg_config_get_field
+ b _08001CDE
+_08001C6E:
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl gpu_bg_config_get_field
+ b _08001CDE
+_08001C78:
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl gpu_bg_config_get_field
+ b _08001CDE
+_08001C82:
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl gpu_bg_config_get_field
+ b _08001CDE
+_08001C8C:
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl gpu_bg_config_get_field
+ b _08001CDE
+_08001C96:
+ adds r0, r4, 0
+ movs r1, 0x7
+ bl gpu_bg_config_get_field
+ b _08001CDE
+_08001CA0:
+ adds r0, r4, 0
+ movs r1, 0x8
+ bl gpu_bg_config_get_field
+ b _08001CDE
+_08001CAA:
+ adds r0, r4, 0
+ bl bg_get_type_by_bg_id
+ cmp r0, 0
+ beq _08001CBC
+ cmp r0, 0x1
+ beq _08001CCA
+ movs r0, 0
+ b _08001CFA
+_08001CBC:
+ adds r0, r4, 0
+ movs r1, 0
+ bl bg_get_screen_size_in_regular_mode
+ lsls r0, 27
+ lsrs r0, 16
+ b _08001CFA
+_08001CCA:
+ adds r0, r4, 0
+ movs r1, 0
+ bl bg_get_screen_size_in_affine_mode
+ lsls r0, 24
+ lsrs r0, 16
+ b _08001CFA
+_08001CD8:
+ adds r0, r4, 0
+ bl bg_get_type_by_bg_id
+_08001CDE:
+ lsls r0, 16
+ lsrs r0, 16
+ b _08001CFA
+_08001CE4:
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r1, r0
+ ldrh r0, [r1]
+ lsls r0, 22
+ lsrs r0, 22
+ b _08001CFA
+ .align 2, 0
+ .pool
+_08001CF8:
+ ldr r0, =0x0000ffff
+_08001CFA:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end bg_get_field
+
+ thumb_func_start bg_change_x_offset
+bg_change_x_offset: @ 8001D04
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r2, 24
+ lsrs r5, r2, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _08001D28
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ bne _08001D2E
+_08001D28:
+ movs r0, 0x1
+ negs r0, r0
+ b _08001E34
+_08001D2E:
+ cmp r5, 0x1
+ beq _08001D4C
+ cmp r5, 0x1
+ ble _08001D3A
+ cmp r5, 0x2
+ beq _08001D60
+_08001D3A:
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0x8
+ adds r0, r1, r0
+ str r6, [r0]
+ adds r5, r1, 0
+ b _08001D70
+ .align 2, 0
+ .pool
+_08001D4C:
+ ldr r0, =0x030008f8
+ lsls r2, r4, 4
+ adds r0, 0x8
+ adds r0, r2, r0
+ ldr r1, [r0]
+ adds r1, r6
+ b _08001D6C
+ .align 2, 0
+ .pool
+_08001D60:
+ ldr r0, =0x030008f8
+ lsls r2, r4, 4
+ adds r0, 0x8
+ adds r0, r2, r0
+ ldr r1, [r0]
+ subs r1, r6
+_08001D6C:
+ str r1, [r0]
+ adds r5, r2, 0
+_08001D70:
+ bl gpu_get_bg_mode
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, 0x1
+ beq _08001DAC
+ cmp r4, 0x1
+ bgt _08001D8C
+ cmp r4, 0
+ beq _08001D96
+ b _08001E2C
+ .align 2, 0
+ .pool
+_08001D8C:
+ cmp r4, 0x2
+ beq _08001DC0
+ cmp r4, 0x3
+ beq _08001DF8
+ b _08001E2C
+_08001D96:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x8]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x10
+ bl lcd_io_set
+ b _08001E2C
+ .align 2, 0
+ .pool
+_08001DAC:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x18]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x14
+ bl lcd_io_set
+ b _08001E2C
+ .align 2, 0
+ .pool
+_08001DC0:
+ cmp r0, 0
+ bne _08001DD8
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x28]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x18
+ bl lcd_io_set
+ b _08001E2C
+ .align 2, 0
+ .pool
+_08001DD8:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x28]
+ lsrs r1, r0, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x2A
+ bl lcd_io_set
+ movs r0, 0x28
+ adds r1, r4, 0
+ bl lcd_io_set
+ b _08001E2C
+ .align 2, 0
+ .pool
+_08001DF8:
+ cmp r0, 0
+ bne _08001E10
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x38]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x1C
+ bl lcd_io_set
+ b _08001E2C
+ .align 2, 0
+ .pool
+_08001E10:
+ cmp r0, 0x2
+ bne _08001E2C
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x38]
+ lsrs r1, r0, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x3A
+ bl lcd_io_set
+ movs r0, 0x38
+ adds r1, r4, 0
+ bl lcd_io_set
+_08001E2C:
+ ldr r0, =0x030008f8
+ adds r0, 0x8
+ adds r0, r5, r0
+ ldr r0, [r0]
+_08001E34:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end bg_change_x_offset
+
+ thumb_func_start bg_get_x_offset
+bg_get_x_offset: @ 8001E40
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _08001E70
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ beq _08001E70
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0x8
+ adds r1, r0
+ ldr r0, [r1]
+ b _08001E74
+ .align 2, 0
+ .pool
+_08001E70:
+ movs r0, 0x1
+ negs r0, r0
+_08001E74:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end bg_get_x_offset
+
+ thumb_func_start bg_change_y_offset
+bg_change_y_offset: @ 8001E7C
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r2, 24
+ lsrs r5, r2, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _08001EA0
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ bne _08001EA6
+_08001EA0:
+ movs r0, 0x1
+ negs r0, r0
+ b _08001FAC
+_08001EA6:
+ cmp r5, 0x1
+ beq _08001EC4
+ cmp r5, 0x1
+ ble _08001EB2
+ cmp r5, 0x2
+ beq _08001ED8
+_08001EB2:
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0xC
+ adds r0, r1, r0
+ str r6, [r0]
+ adds r5, r1, 0
+ b _08001EE8
+ .align 2, 0
+ .pool
+_08001EC4:
+ ldr r0, =0x030008f8
+ lsls r2, r4, 4
+ adds r0, 0xC
+ adds r0, r2, r0
+ ldr r1, [r0]
+ adds r1, r6
+ b _08001EE4
+ .align 2, 0
+ .pool
+_08001ED8:
+ ldr r0, =0x030008f8
+ lsls r2, r4, 4
+ adds r0, 0xC
+ adds r0, r2, r0
+ ldr r1, [r0]
+ subs r1, r6
+_08001EE4:
+ str r1, [r0]
+ adds r5, r2, 0
+_08001EE8:
+ bl gpu_get_bg_mode
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, 0x1
+ beq _08001F24
+ cmp r4, 0x1
+ bgt _08001F04
+ cmp r4, 0
+ beq _08001F0E
+ b _08001FA4
+ .align 2, 0
+ .pool
+_08001F04:
+ cmp r4, 0x2
+ beq _08001F38
+ cmp r4, 0x3
+ beq _08001F70
+ b _08001FA4
+_08001F0E:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0xC]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x12
+ bl lcd_io_set
+ b _08001FA4
+ .align 2, 0
+ .pool
+_08001F24:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x1C]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x16
+ bl lcd_io_set
+ b _08001FA4
+ .align 2, 0
+ .pool
+_08001F38:
+ cmp r0, 0
+ bne _08001F50
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x2C]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x1A
+ bl lcd_io_set
+ b _08001FA4
+ .align 2, 0
+ .pool
+_08001F50:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x2C]
+ lsrs r1, r0, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x2E
+ bl lcd_io_set
+ movs r0, 0x2C
+ adds r1, r4, 0
+ bl lcd_io_set
+ b _08001FA4
+ .align 2, 0
+ .pool
+_08001F70:
+ cmp r0, 0
+ bne _08001F88
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x3C]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x1E
+ bl lcd_io_set
+ b _08001FA4
+ .align 2, 0
+ .pool
+_08001F88:
+ cmp r0, 0x2
+ bne _08001FA4
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x3C]
+ lsrs r1, r0, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x3E
+ bl lcd_io_set
+ movs r0, 0x3C
+ adds r1, r4, 0
+ bl lcd_io_set
+_08001FA4:
+ ldr r0, =0x030008f8
+ adds r0, 0xC
+ adds r0, r5, r0
+ ldr r0, [r0]
+_08001FAC:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end bg_change_y_offset
+
+ thumb_func_start bg_change_y_offset_to_copy_queue
+bg_change_y_offset_to_copy_queue: @ 8001FB8
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r2, 24
+ lsrs r5, r2, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _08001FDC
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ bne _08001FE2
+_08001FDC:
+ movs r0, 0x1
+ negs r0, r0
+ b _080020E8
+_08001FE2:
+ cmp r5, 0x1
+ beq _08002000
+ cmp r5, 0x1
+ ble _08001FEE
+ cmp r5, 0x2
+ beq _08002014
+_08001FEE:
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0xC
+ adds r0, r1, r0
+ str r6, [r0]
+ adds r5, r1, 0
+ b _08002024
+ .align 2, 0
+ .pool
+_08002000:
+ ldr r0, =0x030008f8
+ lsls r2, r4, 4
+ adds r0, 0xC
+ adds r0, r2, r0
+ ldr r1, [r0]
+ adds r1, r6
+ b _08002020
+ .align 2, 0
+ .pool
+_08002014:
+ ldr r0, =0x030008f8
+ lsls r2, r4, 4
+ adds r0, 0xC
+ adds r0, r2, r0
+ ldr r1, [r0]
+ subs r1, r6
+_08002020:
+ str r1, [r0]
+ adds r5, r2, 0
+_08002024:
+ bl gpu_get_bg_mode
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, 0x1
+ beq _08002060
+ cmp r4, 0x1
+ bgt _08002040
+ cmp r4, 0
+ beq _0800204A
+ b _080020E0
+ .align 2, 0
+ .pool
+_08002040:
+ cmp r4, 0x2
+ beq _08002074
+ cmp r4, 0x3
+ beq _080020AC
+ b _080020E0
+_0800204A:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0xC]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x12
+ bl lcd_io_set_forced_blank
+ b _080020E0
+ .align 2, 0
+ .pool
+_08002060:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x1C]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x16
+ bl lcd_io_set_forced_blank
+ b _080020E0
+ .align 2, 0
+ .pool
+_08002074:
+ cmp r0, 0
+ bne _0800208C
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x2C]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x1A
+ bl lcd_io_set_forced_blank
+ b _080020E0
+ .align 2, 0
+ .pool
+_0800208C:
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x2C]
+ lsrs r1, r0, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x2E
+ bl lcd_io_set_forced_blank
+ movs r0, 0x2C
+ adds r1, r4, 0
+ bl lcd_io_set_forced_blank
+ b _080020E0
+ .align 2, 0
+ .pool
+_080020AC:
+ cmp r0, 0
+ bne _080020C4
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x3C]
+ lsls r0, 8
+ lsrs r1, r0, 16
+ movs r0, 0x1E
+ bl lcd_io_set_forced_blank
+ b _080020E0
+ .align 2, 0
+ .pool
+_080020C4:
+ cmp r0, 0x2
+ bne _080020E0
+ ldr r0, =0x030008f8
+ ldr r0, [r0, 0x3C]
+ lsrs r1, r0, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ movs r0, 0x3E
+ bl lcd_io_set_forced_blank
+ movs r0, 0x3C
+ adds r1, r4, 0
+ bl lcd_io_set_forced_blank
+_080020E0:
+ ldr r0, =0x030008f8
+ adds r0, 0xC
+ adds r0, r5, r0
+ ldr r0, [r0]
+_080020E8:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end bg_change_y_offset_to_copy_queue
+
+ thumb_func_start bg_get_y_offset
+bg_get_y_offset: @ 80020F4
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _08002124
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ beq _08002124
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0xC
+ adds r1, r0
+ ldr r0, [r1]
+ b _08002128
+ .align 2, 0
+ .pool
+_08002124:
+ movs r0, 0x1
+ negs r0, r0
+_08002128:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end bg_get_y_offset
+
+ thumb_func_start call_gpu_bg_affine_set
+call_gpu_bg_affine_set: @ 8002130
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x10
+ ldr r4, [sp, 0x28]
+ ldr r5, [sp, 0x2C]
+ ldr r6, [sp, 0x30]
+ ldr r7, [sp, 0x34]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r7, 16
+ lsrs r7, 16
+ lsls r3, 16
+ asrs r3, 16
+ lsls r4, 16
+ asrs r4, 16
+ str r4, [sp]
+ lsls r5, 16
+ asrs r5, 16
+ str r5, [sp, 0x4]
+ lsls r6, 16
+ asrs r6, 16
+ str r6, [sp, 0x8]
+ str r7, [sp, 0xC]
+ bl gpu_bg_affine_set
+ add sp, 0x10
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end call_gpu_bg_affine_set
+
+ thumb_func_start mosaic_something
+mosaic_something: @ 8002170
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r1, 24
+ lsrs r6, r1, 24
+ movs r0, 0x4C
+ bl lcd_io_get
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r1, 0xF
+ movs r3, 0xF
+ ands r3, r5
+ lsrs r2, r0, 20
+ ands r2, r1
+ movs r0, 0xFF
+ lsls r0, 8
+ ands r5, r0
+ cmp r6, 0x6
+ bhi _080021C4
+ lsls r0, r6, 2
+ ldr r1, =_080021A8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+ .pool
+ .align 2, 0
+_080021A8:
+ .4byte _080021C4
+ .4byte _080021CC
+ .4byte _080021D2
+ .4byte _080021E4
+ .4byte _080021FA
+ .4byte _08002200
+ .4byte _08002212
+_080021C4:
+ movs r3, 0xF
+ ands r3, r4
+ lsrs r2, r4, 4
+ b _08002226
+_080021CC:
+ movs r3, 0xF
+ ands r3, r4
+ b _08002226
+_080021D2:
+ lsls r0, r3, 16
+ asrs r0, 16
+ adds r0, r4
+ cmp r0, 0xF
+ ble _080021E0
+ movs r3, 0xF
+ b _08002226
+_080021E0:
+ adds r0, r3, r4
+ b _080021F4
+_080021E4:
+ lsls r0, r3, 16
+ asrs r0, 16
+ subs r0, r4
+ cmp r0, 0
+ bge _080021F2
+ movs r3, 0
+ b _08002226
+_080021F2:
+ subs r0, r3, r4
+_080021F4:
+ lsls r0, 16
+ lsrs r3, r0, 16
+ b _08002226
+_080021FA:
+ movs r2, 0xF
+ ands r2, r4
+ b _08002226
+_08002200:
+ lsls r0, r2, 16
+ asrs r0, 16
+ adds r0, r4
+ cmp r0, 0xF
+ ble _0800220E
+ movs r2, 0xF
+ b _08002226
+_0800220E:
+ adds r0, r2, r4
+ b _08002222
+_08002212:
+ lsls r0, r2, 16
+ asrs r0, 16
+ subs r0, r4
+ cmp r0, 0
+ bge _08002220
+ movs r2, 0
+ b _08002226
+_08002220:
+ subs r0, r2, r4
+_08002222:
+ lsls r0, 16
+ lsrs r2, r0, 16
+_08002226:
+ lsls r0, r2, 16
+ asrs r0, 12
+ movs r1, 0xF0
+ ands r0, r1
+ orrs r5, r0
+ lsls r0, r3, 16
+ asrs r0, 16
+ movs r1, 0xF
+ ands r0, r1
+ orrs r5, r0
+ lsls r0, r5, 16
+ lsrs r5, r0, 16
+ movs r0, 0x4C
+ adds r1, r5, 0
+ bl lcd_io_set
+ lsls r0, r5, 24
+ lsrs r0, 24
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end mosaic_something
+
+ thumb_func_start bg_set_tilemap
+bg_set_tilemap: @ 8002250
+ push {r4,r5,lr}
+ adds r5, r1, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _0800227A
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ beq _0800227A
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0x4
+ adds r1, r0
+ str r5, [r1]
+_0800227A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end bg_set_tilemap
+
+ thumb_func_start bg_unset_tilemap
+bg_unset_tilemap: @ 8002284
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ adds r5, r0, 0
+ cmp r5, 0
+ bne _080022AE
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ beq _080022AE
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0x4
+ adds r1, r0
+ str r5, [r1]
+_080022AE:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end bg_unset_tilemap
+
+ thumb_func_start bg_get_tilemap
+bg_get_tilemap: @ 80022B8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ adds r4, r0, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _080022E8
+ adds r0, r4, 0
+ movs r1, 0x1
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ cmp r0, 0
+ beq _080022E8
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0x4
+ adds r1, r0
+ ldr r0, [r1]
+ b _080022EA
+ .align 2, 0
+ .pool
+_080022E8:
+ movs r0, 0
+_080022EA:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end bg_get_tilemap
+
+ thumb_func_start gpu_copy_to_wram_bg_tile_map
+gpu_copy_to_wram_bg_tile_map: @ 80022F0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ mov r10, r1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r9, r4
+ lsls r7, r2, 16
+ lsrs r6, r7, 16
+ lsls r3, 16
+ lsrs r5, r3, 16
+ mov r8, r5
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _08002358
+ adds r0, r4, 0
+ bl IsTileMapOutsideWram
+ cmp r0, 0
+ bne _08002358
+ cmp r6, 0
+ beq _08002340
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0x4
+ adds r1, r0
+ lsls r0, r5, 1
+ ldr r1, [r1]
+ adds r1, r0
+ lsrs r2, r7, 17
+ mov r0, r10
+ bl CpuSet
+ b _08002358
+ .align 2, 0
+ .pool
+_08002340:
+ ldr r0, =0x030008f8
+ mov r2, r9
+ lsls r1, r2, 4
+ adds r0, 0x4
+ adds r1, r0
+ mov r2, r8
+ lsls r0, r2, 1
+ ldr r1, [r1]
+ adds r1, r0
+ mov r0, r10
+ bl LZ77UnCompWram
+_08002358:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_copy_to_wram_bg_tile_map
+
+ thumb_func_start gpu_copy_wram_bg_tilemap_to_vram
+gpu_copy_wram_bg_tilemap_to_vram: @ 800236C
+ push {r4,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r0, r4, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _080023C8
+ adds r0, r4, 0
+ bl IsTileMapOutsideWram
+ cmp r0, 0
+ bne _080023C8
+ adds r0, r4, 0
+ bl bg_get_type_by_bg_id
+ cmp r0, 0
+ beq _0800239A
+ cmp r0, 0x1
+ beq _080023A6
+ movs r2, 0
+ b _080023B2
+_0800239A:
+ adds r0, r4, 0
+ movs r1, 0
+ bl bg_get_screen_size_in_regular_mode
+ lsls r0, 27
+ b _080023B0
+_080023A6:
+ adds r0, r4, 0
+ movs r1, 0
+ bl bg_get_screen_size_in_affine_mode
+ lsls r0, 24
+_080023B0:
+ lsrs r2, r0, 16
+_080023B2:
+ ldr r0, =0x030008f8
+ lsls r1, r4, 4
+ adds r0, 0x4
+ adds r1, r0
+ ldr r1, [r1]
+ movs r0, 0x2
+ str r0, [sp]
+ adds r0, r4, 0
+ movs r3, 0
+ bl gpu_copy_to_vram_by_bg_id
+_080023C8:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_copy_wram_bg_tilemap_to_vram
+
+ thumb_func_start gpu_copy_to_iwram_tile_map_rect
+gpu_copy_to_iwram_tile_map_rect: @ 80023D4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r8, r1
+ ldr r1, [sp, 0x24]
+ ldr r4, [sp, 0x28]
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ lsls r3, 24
+ lsrs r7, r3, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r4, 24
+ lsrs r6, r4, 24
+ adds r0, r5, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _080024C4
+ adds r0, r5, 0
+ bl IsTileMapOutsideWram
+ cmp r0, 0
+ bne _080024C4
+ adds r0, r5, 0
+ bl bg_get_type_by_bg_id
+ cmp r0, 0
+ beq _08002422
+ cmp r0, 0x1
+ beq _08002470
+ b _080024C4
+_08002422:
+ mov r4, r8
+ adds r3, r7, 0
+ adds r0, r3, r6
+ cmp r3, r0
+ bge _080024C4
+ mov r12, r0
+ lsls r1, r5, 4
+ ldr r0, =0x030008fc
+ adds r1, r0
+ mov r8, r1
+_08002436:
+ mov r2, r10
+ mov r1, r9
+ adds r0, r2, r1
+ adds r7, r3, 0x1
+ cmp r2, r0
+ bge _08002460
+ mov r1, r8
+ ldr r6, [r1]
+ lsls r5, r3, 5
+ adds r3, r0, 0
+_0800244A:
+ adds r0, r5, r2
+ lsls r0, 1
+ adds r0, r6
+ ldrh r1, [r4]
+ strh r1, [r0]
+ adds r4, 0x2
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r3
+ blt _0800244A
+_08002460:
+ lsls r0, r7, 16
+ lsrs r3, r0, 16
+ cmp r3, r12
+ blt _08002436
+ b _080024C4
+ .align 2, 0
+ .pool
+_08002470:
+ mov r4, r8
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl bg_get_screen_size_in_affine_mode
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp]
+ adds r3, r7, 0
+ adds r0, r3, r6
+ cmp r3, r0
+ bge _080024C4
+ mov r12, r0
+ lsls r5, 4
+ mov r8, r5
+_0800248E:
+ mov r2, r10
+ mov r1, r9
+ adds r0, r2, r1
+ adds r7, r3, 0x1
+ cmp r2, r0
+ bge _080024BC
+ ldr r6, =0x030008fc
+ add r6, r8
+ ldr r1, [sp]
+ adds r5, r3, 0
+ muls r5, r1
+ adds r3, r0, 0
+_080024A6:
+ ldr r1, [r6]
+ adds r0, r5, r2
+ adds r1, r0
+ ldrb r0, [r4]
+ strb r0, [r1]
+ adds r4, 0x1
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r3
+ blt _080024A6
+_080024BC:
+ lsls r0, r7, 16
+ lsrs r3, r0, 16
+ cmp r3, r12
+ blt _0800248E
+_080024C4:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end gpu_copy_to_iwram_tile_map_rect
+
+ thumb_func_start bg_copy_tilemap_rect_simple
+bg_copy_tilemap_rect_simple: @ 80024D8
+ push {r4-r6,lr}
+ sub sp, 0x24
+ ldr r4, [sp, 0x34]
+ ldr r5, [sp, 0x38]
+ ldr r6, [sp, 0x3C]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ str r4, [sp]
+ str r5, [sp, 0x4]
+ str r2, [sp, 0x8]
+ str r3, [sp, 0xC]
+ str r4, [sp, 0x10]
+ str r5, [sp, 0x14]
+ str r6, [sp, 0x18]
+ movs r2, 0
+ str r2, [sp, 0x1C]
+ str r2, [sp, 0x20]
+ movs r3, 0
+ bl bg_copy_tilemap_rect
+ add sp, 0x24
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end bg_copy_tilemap_rect_simple
+
+ thumb_func_start bg_copy_tilemap_rect
+bg_copy_tilemap_rect: @ 800251C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x40
+ str r1, [sp, 0x8]
+ ldr r1, [sp, 0x60]
+ ldr r4, [sp, 0x68]
+ ldr r5, [sp, 0x6C]
+ ldr r6, [sp, 0x70]
+ ldr r7, [sp, 0x74]
+ mov r8, r7
+ ldr r7, [sp, 0x78]
+ mov r9, r7
+ ldr r7, [sp, 0x7C]
+ mov r10, r7
+ ldr r7, [sp, 0x80]
+ mov r12, r7
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x4]
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0xC]
+ lsls r3, 24
+ lsrs r3, 24
+ str r3, [sp, 0x10]
+ lsls r1, 24
+ lsrs r7, r1, 24
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp, 0x14]
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ str r6, [sp, 0x18]
+ mov r0, r8
+ lsls r0, 24
+ lsrs r4, r0, 24
+ mov r1, r9
+ lsls r1, 24
+ lsrs r1, 24
+ str r1, [sp, 0x1C]
+ mov r2, r10
+ lsls r2, 16
+ lsrs r2, 16
+ str r2, [sp, 0x20]
+ mov r0, r12
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x24]
+ ldr r0, [sp, 0x4]
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ beq _08002592
+ b _080026EE
+_08002592:
+ ldr r0, [sp, 0x4]
+ bl IsTileMapOutsideWram
+ cmp r0, 0
+ beq _0800259E
+ b _080026EE
+_0800259E:
+ ldr r0, [sp, 0x4]
+ movs r1, 0x4
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x30]
+ ldr r0, [sp, 0x4]
+ movs r1, 0x1
+ bl bg_get_screen_size_in_regular_mode
+ lsls r0, 21
+ lsrs r0, 16
+ str r0, [sp, 0x28]
+ ldr r0, [sp, 0x4]
+ movs r1, 0x2
+ bl bg_get_screen_size_in_regular_mode
+ lsls r0, 21
+ lsrs r0, 16
+ str r0, [sp, 0x2C]
+ ldr r0, [sp, 0x4]
+ bl bg_get_type_by_bg_id
+ cmp r0, 0
+ beq _080025D8
+ cmp r0, 0x1
+ beq _08002674
+ b _080026EE
+_080025D8:
+ ldr r1, [sp, 0x10]
+ adds r0, r1, 0
+ muls r0, r7
+ ldr r2, [sp, 0xC]
+ adds r0, r2
+ lsls r0, 1
+ ldr r1, [sp, 0x8]
+ adds r6, r1, r0
+ adds r0, r5, r4
+ cmp r5, r0
+ blt _080025F0
+ b _080026EE
+_080025F0:
+ ldr r2, [sp, 0x18]
+ subs r2, r7, r2
+ str r2, [sp, 0x34]
+ str r0, [sp, 0x38]
+_080025F8:
+ ldr r4, [sp, 0x14]
+ ldr r7, [sp, 0x18]
+ adds r0, r4, r7
+ adds r1, r5, 0x1
+ str r1, [sp, 0x3C]
+ cmp r4, r0
+ bge _0800265A
+ ldr r2, [sp, 0x4]
+ lsls r0, r2, 4
+ ldr r1, =0x030008fc
+ adds r0, r1
+ mov r10, r0
+ ldr r7, [sp, 0x20]
+ lsls r7, 16
+ mov r9, r7
+ ldr r1, [sp, 0x24]
+ lsls r0, r1, 16
+ asrs r0, 16
+ mov r8, r0
+_0800261E:
+ ldr r2, [sp, 0x2C]
+ str r2, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ ldr r2, [sp, 0x30]
+ ldr r3, [sp, 0x28]
+ bl bg_get_index_from_tile_coords
+ lsls r0, 16
+ lsrs r0, 15
+ mov r7, r10
+ ldr r1, [r7]
+ adds r1, r0
+ mov r0, r8
+ str r0, [sp]
+ adds r0, r6, 0
+ ldr r2, [sp, 0x1C]
+ mov r7, r9
+ asrs r3, r7, 16
+ bl bg_copy_tilemap_entry_not_rotscale_mode
+ adds r6, 0x2
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r1, [sp, 0x14]
+ ldr r2, [sp, 0x18]
+ adds r0, r1, r2
+ cmp r4, r0
+ blt _0800261E
+_0800265A:
+ ldr r5, [sp, 0x34]
+ lsls r0, r5, 1
+ adds r6, r0
+ ldr r7, [sp, 0x3C]
+ lsls r0, r7, 16
+ lsrs r5, r0, 16
+ ldr r0, [sp, 0x38]
+ cmp r5, r0
+ blt _080025F8
+ b _080026EE
+ .align 2, 0
+ .pool
+_08002674:
+ ldr r1, [sp, 0x10]
+ adds r0, r1, 0
+ muls r0, r7
+ ldr r2, [sp, 0xC]
+ adds r0, r2
+ ldr r1, [sp, 0x8]
+ adds r6, r1, r0
+ ldr r0, [sp, 0x4]
+ movs r1, 0x1
+ bl bg_get_screen_size_in_affine_mode
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ adds r0, r5, r4
+ cmp r5, r0
+ bge _080026EE
+ ldr r2, [sp, 0x18]
+ subs r2, r7, r2
+ str r2, [sp, 0x34]
+ str r0, [sp, 0x38]
+ ldr r7, =0x030008fc
+ mov r10, r7
+ ldr r0, [sp, 0x4]
+ lsls r0, 4
+ mov r8, r0
+_080026A8:
+ ldr r4, [sp, 0x14]
+ ldr r1, [sp, 0x18]
+ adds r0, r4, r1
+ adds r2, r5, 0x1
+ str r2, [sp, 0x3C]
+ cmp r4, r0
+ bge _080026DE
+ mov r3, r8
+ add r3, r10
+ mov r7, r9
+ muls r7, r5
+ mov r12, r7
+ adds r2, r0, 0
+_080026C2:
+ ldr r1, [r3]
+ mov r5, r12
+ adds r0, r5, r4
+ adds r1, r0
+ ldrb r0, [r6]
+ ldr r7, [sp, 0x20]
+ adds r0, r7
+ strb r0, [r1]
+ adds r6, 0x1
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, r2
+ blt _080026C2
+_080026DE:
+ ldr r0, [sp, 0x34]
+ adds r6, r0
+ ldr r1, [sp, 0x3C]
+ lsls r0, r1, 16
+ lsrs r5, r0, 16
+ ldr r2, [sp, 0x38]
+ cmp r5, r2
+ blt _080026A8
+_080026EE:
+ add sp, 0x40
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end bg_copy_tilemap_rect
+
+ thumb_func_start bg_fill_tilemap_rect
+bg_fill_tilemap_rect: @ 8002704
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ ldr r4, [sp, 0x24]
+ ldr r5, [sp, 0x28]
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r1, 16
+ lsrs r1, 16
+ mov r8, r1
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ lsls r3, 24
+ lsrs r7, r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r9, r4
+ lsls r5, 24
+ lsrs r5, 24
+ adds r0, r6, 0
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ bne _080027F0
+ adds r0, r6, 0
+ bl IsTileMapOutsideWram
+ cmp r0, 0
+ bne _080027F0
+ adds r0, r6, 0
+ bl bg_get_type_by_bg_id
+ cmp r0, 0
+ beq _08002756
+ cmp r0, 0x1
+ beq _080027A0
+ b _080027F0
+_08002756:
+ adds r3, r7, 0
+ adds r5, r3, r5
+ cmp r3, r5
+ bge _080027F0
+ adds r7, r5, 0
+ lsls r1, r6, 4
+ ldr r0, =0x030008fc
+ adds r1, r0
+ mov r12, r1
+_08002768:
+ mov r2, r10
+ mov r1, r9
+ adds r0, r2, r1
+ adds r6, r3, 0x1
+ cmp r2, r0
+ bge _08002790
+ mov r5, r12
+ ldr r4, [r5]
+ lsls r3, 5
+ adds r1, r0, 0
+_0800277C:
+ adds r0, r3, r2
+ lsls r0, 1
+ adds r0, r4
+ mov r5, r8
+ strh r5, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r1
+ blt _0800277C
+_08002790:
+ lsls r0, r6, 16
+ lsrs r3, r0, 16
+ cmp r3, r7
+ blt _08002768
+ b _080027F0
+ .align 2, 0
+ .pool
+_080027A0:
+ adds r0, r6, 0
+ movs r1, 0x1
+ bl bg_get_screen_size_in_affine_mode
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp]
+ adds r3, r7, 0
+ adds r5, r3, r5
+ cmp r3, r5
+ bge _080027F0
+ adds r7, r5, 0
+ lsls r6, 4
+ mov r12, r6
+_080027BC:
+ mov r2, r10
+ mov r1, r9
+ adds r0, r2, r1
+ adds r6, r3, 0x1
+ cmp r2, r0
+ bge _080027E8
+ ldr r5, =0x030008fc
+ add r5, r12
+ ldr r1, [sp]
+ adds r4, r3, 0
+ muls r4, r1
+ adds r3, r0, 0
+_080027D4:
+ ldr r0, [r5]
+ adds r1, r4, r2
+ adds r0, r1
+ mov r1, r8
+ strb r1, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, r3
+ blt _080027D4
+_080027E8:
+ lsls r0, r6, 16
+ lsrs r3, r0, 16
+ cmp r3, r7
+ blt _080027BC
+_080027F0:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end bg_fill_tilemap_rect
+
+ thumb_func_start Bg_FillWramTileMapRectWithTileAndPalette
+Bg_FillWramTileMapRectWithTileAndPalette: @ 8002804
+ push {r4-r6,lr}
+ sub sp, 0x10
+ ldr r4, [sp, 0x20]
+ ldr r5, [sp, 0x24]
+ ldr r6, [sp, 0x28]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r2, 24
+ lsrs r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ lsls r5, 24
+ lsrs r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ str r4, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ movs r4, 0
+ str r4, [sp, 0xC]
+ bl bg_write_sequence_to_wram_tile_map_rect
+ add sp, 0x10
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end Bg_FillWramTileMapRectWithTileAndPalette
+
+ thumb_func_start bg_write_sequence_to_wram_tile_map_rect
+bg_write_sequence_to_wram_tile_map_rect: @ 8002840
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ ldr r4, [sp, 0x4C]
+ ldr r5, [sp, 0x50]
+ ldr r6, [sp, 0x54]
+ ldr r7, [sp, 0x58]
+ mov r8, r7
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ add r0, sp, 0x4
+ strh r1, [r0]
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x8]
+ lsls r3, 24
+ lsrs r7, r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r10, r4
+ lsls r5, 24
+ lsrs r4, r5, 24
+ lsls r6, 24
+ lsrs r6, 24
+ str r6, [sp, 0xC]
+ mov r0, r8
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x10]
+ mov r0, r9
+ bl is_invalid_bg_id_2
+ cmp r0, 0
+ beq _0800288E
+ b _080029D4
+_0800288E:
+ mov r0, r9
+ bl IsTileMapOutsideWram
+ cmp r0, 0
+ beq _0800289A
+ b _080029D4
+_0800289A:
+ mov r0, r9
+ movs r1, 0x4
+ bl gpu_bg_config_get_field
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x1C]
+ mov r0, r9
+ movs r1, 0x1
+ bl bg_get_screen_size_in_regular_mode
+ lsls r0, 21
+ lsrs r0, 16
+ str r0, [sp, 0x14]
+ mov r0, r9
+ movs r1, 0x2
+ bl bg_get_screen_size_in_regular_mode
+ lsls r0, 21
+ lsrs r0, 16
+ str r0, [sp, 0x18]
+ mov r0, r9
+ bl bg_get_type_by_bg_id
+ cmp r0, 0
+ beq _080028D4
+ cmp r0, 0x1
+ beq _0800295C
+ b _080029D4
+_080028D4:
+ adds r5, r7, 0
+ adds r0, r5, r4
+ cmp r5, r0
+ bge _080029D4
+ str r0, [sp, 0x24]
+ add r7, sp, 0x4
+_080028E0:
+ ldr r4, [sp, 0x8]
+ mov r1, r10
+ adds r0, r4, r1
+ adds r2, r5, 0x1
+ mov r8, r2
+ cmp r4, r0
+ bge _08002944
+ mov r3, r9
+ lsls r1, r3, 4
+ ldr r0, =0x030008fc
+ adds r6, r1, r0
+_080028F6:
+ ldr r0, [sp, 0x18]
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r5, 0
+ ldr r2, [sp, 0x1C]
+ ldr r3, [sp, 0x14]
+ bl bg_get_index_from_tile_coords
+ lsls r0, 16
+ lsrs r0, 15
+ ldr r1, [r6]
+ adds r1, r0
+ movs r0, 0
+ str r0, [sp]
+ add r0, sp, 0x4
+ ldr r2, [sp, 0xC]
+ movs r3, 0
+ bl bg_copy_tilemap_entry_not_rotscale_mode
+ ldrh r0, [r7]
+ movs r2, 0xFC
+ lsls r2, 8
+ adds r1, r2, 0
+ adds r2, r0, 0
+ ands r2, r1
+ ldr r3, [sp, 0x10]
+ adds r0, r3
+ ldr r3, =0x000003ff
+ adds r1, r3, 0
+ ands r0, r1
+ adds r2, r0
+ strh r2, [r7]
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r0, [sp, 0x8]
+ add r0, r10
+ cmp r4, r0
+ blt _080028F6
+_08002944:
+ mov r1, r8
+ lsls r0, r1, 16
+ lsrs r5, r0, 16
+ ldr r2, [sp, 0x24]
+ cmp r5, r2
+ blt _080028E0
+ b _080029D4
+ .align 2, 0
+ .pool
+_0800295C:
+ mov r0, r9
+ movs r1, 0x1
+ bl bg_get_screen_size_in_affine_mode
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x20]
+ adds r5, r7, 0
+ adds r0, r5, r4
+ cmp r5, r0
+ bge _080029D4
+ str r0, [sp, 0x24]
+ mov r3, r9
+ lsls r3, 4
+ mov r12, r3
+_0800297A:
+ ldr r4, [sp, 0x8]
+ mov r7, r10
+ adds r0, r4, r7
+ adds r1, r5, 0x1
+ mov r8, r1
+ cmp r4, r0
+ bge _080029C8
+ ldr r2, =0x030008fc
+ add r2, r12
+ str r2, [sp, 0x28]
+ ldr r7, [sp, 0x20]
+ adds r3, r5, 0
+ muls r3, r7
+ add r2, sp, 0x4
+ movs r1, 0xFC
+ lsls r1, 8
+ mov r9, r1
+ ldr r7, =0x000003ff
+ adds r5, r7, 0
+ adds r6, r0, 0
+_080029A2:
+ ldr r0, [sp, 0x28]
+ ldr r1, [r0]
+ adds r0, r3, r4
+ adds r1, r0
+ ldrh r0, [r2]
+ strb r0, [r1]
+ ldrh r0, [r2]
+ mov r1, r9
+ ands r1, r0
+ ldr r7, [sp, 0x10]
+ adds r0, r7
+ ands r0, r5
+ adds r1, r0
+ strh r1, [r2]
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, r6
+ blt _080029A2
+_080029C8:
+ mov r1, r8
+ lsls r0, r1, 16
+ lsrs r5, r0, 16
+ ldr r2, [sp, 0x24]
+ cmp r5, r2
+ blt _0800297A
+_080029D4:
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+ .pool
+ thumb_func_end bg_write_sequence_to_wram_tile_map_rect
+
+ thumb_func_start bg_get_screen_size_in_regular_mode
+bg_get_screen_size_in_regular_mode: @ 80029EC
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ adds r5, r4, 0
+ movs r1, 0x4
+ bl gpu_bg_config_get_field
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, 0x1
+ beq _08002A2C
+ cmp r4, 0x1
+ bgt _08002A10
+ cmp r4, 0
+ beq _08002A16
+ b _08002A52
+_08002A10:
+ cmp r5, 0x2
+ beq _08002A3E
+ b _08002A52
+_08002A16:
+ cmp r0, 0x2
+ bgt _08002A24
+ cmp r0, 0x1
+ bge _08002A4E
+_08002A1E:
+ cmp r0, 0
+ beq _08002A46
+ b _08002A52
+_08002A24:
+ cmp r0, 0x3
+ bne _08002A52
+ movs r0, 0x4
+ b _08002A54
+_08002A2C:
+ cmp r0, 0x1
+ beq _08002A4E
+ cmp r0, 0x1
+ ble _08002A1E
+ cmp r0, 0x2
+ beq _08002A46
+ cmp r0, 0x3
+ bne _08002A52
+ b _08002A4E
+_08002A3E:
+ cmp r0, 0
+ blt _08002A52
+ cmp r0, 0x1
+ bgt _08002A4A
+_08002A46:
+ movs r0, 0x1
+ b _08002A54
+_08002A4A:
+ cmp r0, 0x3
+ bgt _08002A52
+_08002A4E:
+ movs r0, 0x2
+ b _08002A54
+_08002A52:
+ movs r0, 0
+_08002A54:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end bg_get_screen_size_in_regular_mode
+
+ thumb_func_start bg_get_screen_size_in_affine_mode
+bg_get_screen_size_in_affine_mode: @ 8002A5C
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r4, r1, 24
+ movs r1, 0x4
+ bl gpu_bg_config_get_field
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r0, r1, 0
+ cmp r4, 0
+ beq _08002A84
+ cmp r4, 0
+ blt _08002AAC
+ cmp r4, 0x2
+ bgt _08002AAC
+ movs r0, 0x10
+ lsls r0, r1
+ b _08002AAE
+_08002A84:
+ cmp r1, 0x1
+ beq _08002AA0
+ cmp r1, 0x1
+ bgt _08002A92
+ cmp r1, 0
+ beq _08002A9C
+ b _08002AAC
+_08002A92:
+ cmp r0, 0x2
+ beq _08002AA4
+ cmp r0, 0x3
+ beq _08002AA8
+ b _08002AAC
+_08002A9C:
+ movs r0, 0x1
+ b _08002AAE
+_08002AA0:
+ movs r0, 0x4
+ b _08002AAE
+_08002AA4:
+ movs r0, 0x10
+ b _08002AAE
+_08002AA8:
+ movs r0, 0x40
+ b _08002AAE
+_08002AAC:
+ movs r0, 0
+_08002AAE:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end bg_get_screen_size_in_affine_mode
+
+ thumb_func_start bg_get_index_from_tile_coords
+bg_get_index_from_tile_coords: @ 8002AB4
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, [sp, 0x8]
+ subs r3, 0x1
+ ands r4, r3
+ subs r0, 0x1
+ ands r1, r0
+ cmp r2, 0x1
+ beq _08002AD8
+ cmp r2, 0x1
+ ble _08002AE0
+ cmp r2, 0x2
+ beq _08002AE0
+ cmp r2, 0x3
+ bne _08002AE0
+ cmp r1, 0x1F
+ ble _08002AD8
+ adds r1, 0x20
+_08002AD8:
+ cmp r4, 0x1F
+ ble _08002AE0
+ subs r4, 0x20
+ adds r1, 0x20
+_08002AE0:
+ lsls r0, r1, 5
+ adds r0, r4
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end bg_get_index_from_tile_coords
+
+ thumb_func_start bg_copy_tilemap_entry_not_rotscale_mode
+bg_copy_tilemap_entry_not_rotscale_mode: @ 8002AEC
+ push {r4-r6,lr}
+ adds r4, r0, 0
+ adds r6, r1, 0
+ ldr r5, [sp, 0x10]
+ cmp r2, 0x10
+ beq _08002B14
+ cmp r2, 0x10
+ bgt _08002B34
+ cmp r2, 0
+ blt _08002B34
+ ldrh r0, [r4]
+ adds r0, r3
+ ldr r3, =0x00000fff
+ adds r1, r3, 0
+ ands r0, r1
+ adds r1, r2, r5
+ lsls r1, 12
+ b _08002B3A
+ .align 2, 0
+ .pool
+_08002B14:
+ ldrh r1, [r6]
+ movs r0, 0xFC
+ lsls r0, 8
+ ands r1, r0
+ lsls r2, r5, 12
+ adds r2, r1, r2
+ ldrh r0, [r4]
+ adds r0, r3
+ ldr r3, =0x000003ff
+ adds r1, r3, 0
+ ands r0, r1
+ orrs r0, r2
+ b _08002B3C
+ .align 2, 0
+ .pool
+_08002B34:
+ ldrh r0, [r4]
+ adds r0, r3
+ lsls r1, r5, 12
+_08002B3A:
+ adds r0, r1
+_08002B3C:
+ lsls r0, 16
+ lsrs r1, r0, 16
+ strh r1, [r6]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end bg_copy_tilemap_entry_not_rotscale_mode
+
+ thumb_func_start bg_get_type_by_bg_id
+bg_get_type_by_bg_id: @ 8002B48
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r5, r4, 0
+ bl gpu_get_bg_mode
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r4, 0x2
+ beq _08002B76
+ cmp r4, 0x2
+ ble _08002B66
+ cmp r4, 0x3
+ beq _08002B86
+ b _08002B8E
+_08002B66:
+ cmp r5, 0
+ blt _08002B8E
+ cmp r0, 0x1
+ bgt _08002B8E
+ cmp r0, 0
+ blt _08002B8E
+_08002B72:
+ movs r0, 0
+ b _08002B90
+_08002B76:
+ cmp r0, 0
+ beq _08002B72
+ cmp r0, 0
+ blt _08002B8E
+ cmp r0, 0x2
+ bgt _08002B8E
+_08002B82:
+ movs r0, 0x1
+ b _08002B90
+_08002B86:
+ cmp r0, 0
+ beq _08002B72
+ cmp r0, 0x2
+ beq _08002B82
+_08002B8E:
+ ldr r0, =0x0000ffff
+_08002B90:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+ .pool
+ thumb_func_end bg_get_type_by_bg_id
+
+ thumb_func_start is_invalid_bg_id_2
+is_invalid_bg_id_2: @ 8002B9C
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x3
+ bhi _08002BAA
+ movs r0, 0
+ b _08002BAC
+_08002BAA:
+ movs r0, 0x1
+_08002BAC:
+ pop {r1}
+ bx r1
+ thumb_func_end is_invalid_bg_id_2
+
+ thumb_func_start IsTileMapOutsideWram
+IsTileMapOutsideWram: @ 8002BB0
+ push {lr}
+ lsls r0, 24
+ ldr r1, =0x030008f8
+ lsrs r0, 20
+ adds r1, 0x4
+ adds r0, r1
+ ldr r1, [r0]
+ ldr r0, =0x03008000
+ cmp r1, r0
+ bhi _08002BD4
+ cmp r1, 0
+ beq _08002BD4
+ movs r0, 0
+ b _08002BD6
+ .align 2, 0
+ .pool
+_08002BD4:
+ movs r0, 0x1
+_08002BD6:
+ pop {r1}
+ bx r1
+ thumb_func_end IsTileMapOutsideWram