summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-01-12 15:39:21 -0500
committerGriffinR <griffin.g.richards@gmail.com>2020-01-12 16:03:06 -0500
commitf2763832931127fc24e7cb9f9cdd85e3cf706a5c (patch)
treed23050509231d1d9c6d1694b2755c93fdaf26a4e
parentaa84a1d3a11c7cc6fd0e1021e1ed060e0c5683f2 (diff)
parent15ff7eb2f87032797f6ce9ef9bb471c468b48a36 (diff)
Merge master into sync-script
-rw-r--r--asm/battle_interface.s5660
-rw-r--r--asm/crt0.s77
-rw-r--r--asm/librfu.s6697
-rw-r--r--asm/librfu_intr.s54
-rw-r--r--asm/librfu_stwi.s1560
-rw-r--r--asm/link_rfu.s134
-rw-r--r--asm/link_rfu_2.s132
-rw-r--r--asm/link_rfu_3.s4
-rw-r--r--asm/pc_screen_effect.s477
-rw-r--r--asm/pokemon_summary_screen.s8
-rw-r--r--asm/region_map.s13825
-rw-r--r--asm/script_pokemon_util_80A0058.s535
-rw-r--r--asm/script_pokemon_util_80BF8FC.s422
-rw-r--r--berry_fix/payload/asm/crt0.s8
-rw-r--r--berry_fix/payload/src/main.c4
-rw-r--r--common_syms/image_processing_effects.txt10
-rw-r--r--common_syms/librfu_rfu.txt5
-rw-r--r--common_syms/librfu_sio32id.txt1
-rw-r--r--common_syms/librfu_stwi.txt1
-rw-r--r--constants/version.inc92
-rw-r--r--data/battle_interface.s164
-rw-r--r--data/librfu_rodata.s28
-rw-r--r--data/maps/FuchsiaCity_House3/scripts.inc12
-rw-r--r--data/maps/TwoIsland_House/scripts.inc4
-rw-r--r--data/pokemon_summary_screen.s2
-rw-r--r--data/region_map.s4370
-rw-r--r--data/specials.inc12
-rw-r--r--data/strings.s75
-rw-r--r--data/text/map_section_names.inc327
-rw-r--r--include/battle_interface.h4
-rw-r--r--include/battle_message.h3
-rw-r--r--include/constants/region_map.h6
-rw-r--r--include/constants/trade.h4
-rw-r--r--include/field_effect.h1
-rw-r--r--include/gba/io_reg.h8
-rw-r--r--include/gba/macro.h12
-rw-r--r--include/gba/syscall.h2
-rw-r--r--include/graphics.h7
-rw-r--r--include/image_processing_effects.h53
-rw-r--r--include/intro.h1
-rw-r--r--include/librfu.h776
-rw-r--r--include/link.h2
-rw-r--r--include/link_rfu.h2
-rw-r--r--include/load_save.h2
-rw-r--r--include/m4a.h1
-rw-r--r--include/map_preview_screen.h1
-rw-r--r--include/overworld.h3
-rw-r--r--include/pokemon.h1
-rw-r--r--include/pokemon_summary_screen.h1
-rw-r--r--include/region_map.h82
-rw-r--r--include/save_failed_screen.h2
-rw-r--r--include/script_pokemon_80F8.h12
-rw-r--r--include/script_pokemon_81B9.h8
-rw-r--r--include/script_pokemon_util.h (renamed from include/script_pokemon_util_80A0058.h)7
-rw-r--r--include/strings.h30
-rw-r--r--include/text.h3
-rw-r--r--ld_script.txt26
-rw-r--r--src/agb_flash.c2
-rw-r--r--src/battle_gfx_sfx_util.c4
-rw-r--r--src/battle_interface.c2800
-rw-r--r--src/battle_message.c2
-rw-r--r--src/battle_setup.c2
-rw-r--r--src/battle_tower.c2
-rw-r--r--src/data/text/map_section_names.h109
-rw-r--r--src/image_processing_effects.c4425
-rw-r--r--src/librfu_rfu.c2222
-rw-r--r--src/librfu_sio32id.c164
-rw-r--r--src/librfu_stwi.c647
-rw-r--r--src/main.c61
-rw-r--r--src/map_preview_screen.c2
-rw-r--r--src/party_menu.c2
-rw-r--r--src/party_menu_specials.c111
-rw-r--r--src/pc_screen_effect.c156
-rw-r--r--src/post_battle_event_funcs.c2
-rw-r--r--src/quest_log.c4
-rw-r--r--src/region_map.c4399
-rw-r--r--src/scrcmd.c3
-rw-r--r--src/script_pokemon_util.c218
-rw-r--r--src/text.c2
-rw-r--r--src/trade.c10
-rw-r--r--src/vs_seeker.c352
-rw-r--r--sym_bss.txt2
-rw-r--r--sym_common.txt60
-rw-r--r--sym_ewram.txt29
84 files changed, 16375 insertions, 35177 deletions
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
deleted file mode 100644
index 753b1696b..000000000
--- a/asm/battle_interface.s
+++ /dev/null
@@ -1,5660 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8047B0C
-sub_8047B0C: @ 8047B0C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r7, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- movs r3, 0
- movs r2, 0
-_08047B28:
- lsls r0, r3, 24
- asrs r0, 24
- mov r3, sp
- adds r1, r3, r0
- strb r2, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _08047B28
- movs r3, 0x3
- movs r0, 0x1
- negs r0, r0
- mov r9, r0
- mov r8, sp
-_08047B48:
- lsls r0, r5, 16
- asrs r6, r0, 16
- cmp r6, 0
- ble _08047B76
- lsls r4, r3, 24
- asrs r4, 24
- mov r1, sp
- adds r5, r1, r4
- adds r0, r6, 0
- movs r1, 0xA
- bl __modsi3
- strb r0, [r5]
- adds r0, r6, 0
- movs r1, 0xA
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- subs r4, 0x1
- lsls r4, 24
- lsrs r3, r4, 24
- b _08047B48
-_08047B76:
- lsls r1, r3, 24
- asrs r0, r1, 24
- cmp r0, r9
- ble _08047B9A
- movs r4, 0xFF
- movs r3, 0x1
- negs r3, r3
-_08047B84:
- asrs r2, r1, 24
- mov r5, sp
- adds r1, r5, r2
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- subs r2, 0x1
- lsls r1, r2, 24
- asrs r0, r1, 24
- cmp r0, r3
- bgt _08047B84
-_08047B9A:
- mov r1, r8
- ldrb r0, [r1, 0x3]
- cmp r0, 0xFF
- bne _08047BA6
- movs r0, 0
- strb r0, [r1, 0x3]
-_08047BA6:
- mov r2, r10
- cmp r2, 0
- bne _08047C36
- movs r3, 0
- movs r1, 0
- movs r6, 0xFC
- lsls r6, 8
- movs r5, 0x1E
- mov r12, r5
-_08047BB8:
- lsls r1, 24
- asrs r2, r1, 24
- mov r0, sp
- adds r5, r0, r2
- ldrb r0, [r5]
- mov r8, r1
- cmp r0, 0xFF
- bne _08047BEE
- lsls r1, r2, 1
- adds r1, r7
- ldrh r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- mov r2, r12
- orrs r0, r2
- strh r0, [r1]
- lsls r3, 24
- asrs r1, r3, 23
- adds r1, r7
- adds r1, 0x40
- ldrh r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- mov r5, r12
- orrs r0, r5
- strh r0, [r1]
- b _08047C1E
-_08047BEE:
- lsls r2, 1
- adds r2, r7
- ldrh r0, [r2]
- adds r1, r6, 0
- ands r1, r0
- ldrb r0, [r5]
- adds r0, 0x14
- orrs r1, r0
- strh r1, [r2]
- lsls r4, r3, 24
- asrs r3, r4, 24
- lsls r2, r3, 1
- adds r2, r7
- adds r2, 0x40
- ldrh r0, [r2]
- adds r1, r6, 0
- ands r1, r0
- mov r5, sp
- adds r0, r5, r3
- ldrb r0, [r0]
- adds r0, 0x34
- orrs r1, r0
- strh r1, [r2]
- adds r3, r4, 0
-_08047C1E:
- movs r0, 0x80
- lsls r0, 17
- add r0, r8
- lsrs r1, r0, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r3, r2
- lsrs r3, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _08047BB8
- b _08047C9A
-_08047C36:
- movs r3, 0
- movs r4, 0xFC
- lsls r4, 8
- movs r6, 0x1E
-_08047C3E:
- lsls r1, r3, 24
- asrs r2, r1, 24
- mov r3, sp
- adds r5, r3, r2
- ldrb r0, [r5]
- adds r3, r1, 0
- cmp r0, 0xFF
- bne _08047C6A
- lsls r1, r2, 1
- adds r1, r7
- ldrh r2, [r1]
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r6
- strh r0, [r1]
- adds r1, 0x40
- ldrh r2, [r1]
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r6
- strh r0, [r1]
- b _08047C8C
-_08047C6A:
- lsls r2, 1
- adds r2, r7
- ldrh r0, [r2]
- adds r1, r4, 0
- ands r1, r0
- ldrb r0, [r5]
- adds r0, 0x14
- orrs r1, r0
- strh r1, [r2]
- adds r2, 0x40
- ldrh r0, [r2]
- adds r1, r4, 0
- ands r1, r0
- ldrb r0, [r5]
- adds r0, 0x34
- orrs r1, r0
- strh r1, [r2]
-_08047C8C:
- movs r5, 0x80
- lsls r5, 17
- adds r0, r3, r5
- lsrs r3, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _08047C3E
-_08047C9A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8047B0C
-
- thumb_func_start sub_8047CAC
-sub_8047CAC: @ 8047CAC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- movs r1, 0x1E
- strh r1, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- adds r1, r5, 0
- movs r2, 0
- bl sub_8047B0C
- lsls r4, 16
- asrs r4, 16
- adds r5, 0xA
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_8047B0C
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8047CAC
-
- thumb_func_start CreateBattlerHealthboxSprites
-CreateBattlerHealthboxSprites: @ 8047CE0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r0, 0
- str r0, [sp]
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08047DF4
- mov r0, r10
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08047D78
- ldr r4, _08047D68 @ =gUnknown_8260278
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, _08047D6C @ =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r3, 0x3F
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r2, r4
- ldrb r0, [r2, 0x1]
- ands r3, r0
- strb r3, [r2, 0x1]
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x40
- ldr r4, _08047D70 @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _08047D74 @ =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- b _08047DBE
- .align 2, 0
-_08047D68: .4byte gUnknown_8260278
-_08047D6C: .4byte gSprites
-_08047D70: .4byte 0x000003ff
-_08047D74: .4byte 0xfffffc00
-_08047D78:
- ldr r4, _08047DE0 @ =gUnknown_82602A8
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08047DE4 @ =gSprites
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r5, _08047DE8 @ =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, _08047DEC @ =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- movs r0, 0x2
- str r0, [sp]
-_08047DBE:
- ldr r2, _08047DE4 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r2
- strh r7, [r0, 0x6]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r1, r0, r2
- strh r6, [r1, 0x38]
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _08047DF0 @ =sub_8048128
- str r1, [r0]
- b _08047F1C
- .align 2, 0
-_08047DE0: .4byte gUnknown_82602A8
-_08047DE4: .4byte gSprites
-_08047DE8: .4byte 0x000003ff
-_08047DEC: .4byte 0xfffffc00
-_08047DF0: .4byte sub_8048128
-_08047DF4:
- mov r0, r10
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08047E98
- mov r0, r10
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r4, _08047E84 @ =gUnknown_8260278
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r10
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, _08047E88 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x6]
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r3, r2, r4
- strh r6, [r3, 0x38]
- ldrh r1, [r3, 0x4]
- mov r8, r1
- mov r5, r8
- lsls r1, r5, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r5, _08047E8C @ =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, _08047E90 @ =0xfffffc00
- mov r5, r8
- ands r0, r5
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r4, 0x1C
- adds r2, r4
- ldr r0, _08047E94 @ =sub_8048128
- str r0, [r2]
- movs r0, 0x1
- b _08047F1A
- .align 2, 0
-_08047E84: .4byte gUnknown_8260278
-_08047E88: .4byte gSprites
-_08047E8C: .4byte 0x000003ff
-_08047E90: .4byte 0xfffffc00
-_08047E94: .4byte sub_8048128
-_08047E98:
- mov r0, r10
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r4, _08047FE0 @ =gUnknown_82602A8
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r10
- bl GetBattlerPosition
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, _08047FE4 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x6]
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r3, r2, r4
- strh r6, [r3, 0x38]
- ldrh r1, [r3, 0x4]
- mov r8, r1
- mov r5, r8
- lsls r1, r5, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r5, _08047FE8 @ =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, _08047FEC @ =0xfffffc00
- mov r5, r8
- ands r0, r5
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r4, 0x1C
- adds r2, r4
- ldr r0, _08047FF0 @ =sub_8048128
- str r0, [r2]
- movs r0, 0x2
-_08047F1A:
- str r0, [sp]
-_08047F1C:
- ldr r0, _08047FF4 @ =gBattlerPositions
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r1, _08047FF8 @ =gUnknown_82602F8
- adds r0, r1
- movs r1, 0x8C
- movs r2, 0x3C
- movs r3, 0
- bl CreateSpriteAtEnd
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- ldr r1, _08047FE4 @ =gSprites
- mov r8, r1
- add r4, r8
- mov r0, r10
- bl GetBattlerSide
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 21
- ldr r0, _08047FFC @ =gUnknown_82603C4
- adds r1, r0
- adds r0, r4, 0
- bl SetSubspriteTables
- adds r2, r4, 0
- adds r2, 0x42
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r2, 0x4
- mov r9, r2
- mov r1, r9
- orrs r0, r1
- strb r0, [r4, 0x5]
- movs r0, 0x1
- bl GetHealthboxElementGfxPtr
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, _08048000 @ =0x06010000
- adds r1, r2
- ldr r2, _08048004 @ =0x04000010
- bl CpuSet
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- add r0, r8
- strh r5, [r0, 0x38]
- mov r2, r10
- strh r2, [r0, 0x3A]
- adds r0, 0x3E
- ldrb r1, [r0]
- mov r5, r9
- orrs r1, r5
- strb r1, [r0]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- add r0, r8
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r5
- strb r1, [r0]
- strh r6, [r4, 0x38]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x3A]
- adds r4, 0x3E
- ldrb r0, [r4]
- orrs r0, r5
- strb r0, [r4]
- adds r0, r6, 0
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08047FE0: .4byte gUnknown_82602A8
-_08047FE4: .4byte gSprites
-_08047FE8: .4byte 0x000003ff
-_08047FEC: .4byte 0xfffffc00
-_08047FF0: .4byte sub_8048128
-_08047FF4: .4byte gBattlerPositions
-_08047FF8: .4byte gUnknown_82602F8
-_08047FFC: .4byte gUnknown_82603C4
-_08048000: .4byte 0x06010000
-_08048004: .4byte 0x04000010
- thumb_func_end CreateBattlerHealthboxSprites
-
- thumb_func_start CreateSafariPlayerHealthboxSprites
-CreateSafariPlayerHealthboxSprites: @ 8048008
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r4, _08048094 @ =gUnknown_82602D8
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08048098 @ =gSprites
- mov r9, r1
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- add r4, r9
- ldrb r3, [r4, 0x1]
- movs r2, 0x3F
- adds r1, r2, 0
- ands r1, r3
- strb r1, [r4, 0x1]
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- mov r7, r9
- adds r5, r3, r7
- ldrb r1, [r5, 0x1]
- ands r2, r1
- strb r2, [r5, 0x1]
- ldrh r1, [r5, 0x4]
- mov r8, r1
- mov r7, r8
- lsls r2, r7, 22
- lsrs r2, 22
- adds r2, 0x40
- ldr r7, _0804809C @ =0x000003ff
- adds r1, r7, 0
- ands r2, r1
- ldr r1, _080480A0 @ =0xfffffc00
- mov r7, r8
- ands r1, r7
- orrs r1, r2
- strh r1, [r5, 0x4]
- strh r0, [r4, 0x6]
- strh r6, [r5, 0x38]
- movs r0, 0x1C
- add r9, r0
- add r3, r9
- ldr r0, _080480A4 @ =sub_8048128
- str r0, [r3]
- adds r0, r6, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08048094: .4byte gUnknown_82602D8
-_08048098: .4byte gSprites
-_0804809C: .4byte 0x000003ff
-_080480A0: .4byte 0xfffffc00
-_080480A4: .4byte sub_8048128
- thumb_func_end CreateSafariPlayerHealthboxSprites
-
- thumb_func_start GetHealthboxElementGfxPtr
-GetHealthboxElementGfxPtr: @ 80480A8
- lsls r0, 24
- lsrs r0, 19
- ldr r1, _080480B4 @ =gHealthboxElementsGfxTable
- adds r0, r1
- bx lr
- .align 2, 0
-_080480B4: .4byte gHealthboxElementsGfxTable
- thumb_func_end GetHealthboxElementGfxPtr
-
- thumb_func_start sub_80480B8
-sub_80480B8: @ 80480B8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080480E8
- cmp r0, 0x1
- bgt _080480FC
- cmp r0, 0
- bne _080480FC
- ldr r2, _080480E4 @ =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x20]
- adds r0, 0x10
- b _0804810A
- .align 2, 0
-_080480E4: .4byte gSprites
-_080480E8:
- ldr r2, _080480F8 @ =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x20]
- adds r0, 0x10
- b _0804810A
- .align 2, 0
-_080480F8: .4byte gSprites
-_080480FC:
- ldr r2, _08048124 @ =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x20]
- adds r0, 0x8
-_0804810A:
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x22]
- strh r0, [r4, 0x22]
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- strh r1, [r4, 0x24]
- ldrh r0, [r0, 0x26]
- strh r0, [r4, 0x26]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08048124: .4byte gSprites
- thumb_func_end sub_80480B8
-
- thumb_func_start sub_8048128
-sub_8048128: @ 8048128
- ldrh r1, [r0, 0x38]
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0804814C @ =gSprites
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x20]
- adds r1, 0x40
- strh r1, [r0, 0x20]
- ldrh r1, [r2, 0x22]
- strh r1, [r0, 0x22]
- ldrh r1, [r2, 0x24]
- strh r1, [r0, 0x24]
- ldrh r1, [r2, 0x26]
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_0804814C: .4byte gSprites
- thumb_func_end sub_8048128
-
- thumb_func_start SetBattleBarStruct
-SetBattleBarStruct: @ 8048150
- push {r4-r7,lr}
- ldr r7, [sp, 0x14]
- lsls r0, 24
- lsrs r0, 24
- ldr r6, _08048180 @ =gBattleSpritesDataPtr
- ldr r4, [r6]
- ldr r5, [r4, 0xC]
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 2
- adds r5, r4, r5
- strb r1, [r5]
- ldr r0, [r6]
- ldr r0, [r0, 0xC]
- adds r4, r0
- str r2, [r4, 0x4]
- str r3, [r4, 0x8]
- str r7, [r4, 0xC]
- ldr r0, _08048184 @ =0xffff8000
- str r0, [r4, 0x10]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08048180: .4byte gBattleSpritesDataPtr
-_08048184: .4byte 0xffff8000
- thumb_func_end SetBattleBarStruct
-
- thumb_func_start SetHealthboxSpriteInvisible
-SetHealthboxSpriteInvisible: @ 8048188
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080481D0 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- movs r0, 0x38
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- ldrh r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080481D0: .4byte gSprites
- thumb_func_end SetHealthboxSpriteInvisible
-
- thumb_func_start SetHealthboxSpriteVisible
-SetHealthboxSpriteVisible: @ 80481D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08048224 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- adds r4, r2, 0
- adds r4, 0x3E
- ldrb r1, [r4]
- movs r3, 0x5
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4]
- movs r0, 0x38
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r4, [r0]
- adds r1, r3, 0
- ands r1, r4
- strb r1, [r0]
- ldrh r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r3, r1
- strb r3, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08048224: .4byte gSprites
- thumb_func_end SetHealthboxSpriteVisible
-
- thumb_func_start UpdateSpritePos
-UpdateSpritePos: @ 8048228
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08048244 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r4
- strh r1, [r3, 0x20]
- strh r2, [r3, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08048244: .4byte gSprites
- thumb_func_end UpdateSpritePos
-
- thumb_func_start DestoryHealthboxSprite
-DestoryHealthboxSprite: @ 8048248
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08048284 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r5
- ldrh r1, [r4, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- adds r0, r4, 0
- bl DestroySprite
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08048284: .4byte gSprites
- thumb_func_end DestoryHealthboxSprite
-
- thumb_func_start DummyBattleInterfaceFunc
-DummyBattleInterfaceFunc: @ 8048288
- bx lr
- thumb_func_end DummyBattleInterfaceFunc
-
- thumb_func_start UpdateOamPriorityInAllHealthboxes
-UpdateOamPriorityInAllHealthboxes: @ 804828C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- ldr r1, _08048310 @ =gBattlersCount
- mov r8, r1
- ldrb r2, [r1]
- cmp r6, r2
- bge _08048304
- ldr r1, _08048314 @ =gSprites
- mov r12, r1
- movs r1, 0x3
- ands r0, r1
- lsls r5, r0, 2
- movs r7, 0xD
- negs r7, r7
- ldr r2, _08048318 @ =gHealthboxSpriteIds
- mov r9, r2
-_080482B6:
- mov r1, r9
- adds r0, r6, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- ldrb r4, [r1, 0x6]
- ldrh r3, [r1, 0x38]
- lsls r3, 24
- lsrs r3, 24
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r12
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- add r1, r12
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
- adds r6, 0x1
- mov r2, r8
- ldrb r2, [r2]
- cmp r6, r2
- blt _080482B6
-_08048304:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08048310: .4byte gBattlersCount
-_08048314: .4byte gSprites
-_08048318: .4byte gHealthboxSpriteIds
- thumb_func_end UpdateOamPriorityInAllHealthboxes
-
- thumb_func_start InitBattlerHealthboxCoords
-InitBattlerHealthboxCoords: @ 804831C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- movs r4, 0
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08048348
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08048342
- movs r5, 0x2C
- movs r4, 0x1E
- b _08048380
-_08048342:
- movs r5, 0x9E
- movs r4, 0x58
- b _08048380
-_08048348:
- adds r0, r6, 0
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08048376
- cmp r0, 0x1
- bgt _08048360
- cmp r0, 0
- beq _0804836A
- b _08048380
-_08048360:
- cmp r0, 0x2
- beq _08048370
- cmp r0, 0x3
- beq _0804837C
- b _08048380
-_0804836A:
- movs r5, 0x9F
- movs r4, 0x4B
- b _08048380
-_08048370:
- movs r5, 0xAB
- movs r4, 0x64
- b _08048380
-_08048376:
- movs r5, 0x2C
- movs r4, 0x13
- b _08048380
-_0804837C:
- movs r5, 0x20
- movs r4, 0x2C
-_08048380:
- ldr r0, _08048394 @ =gHealthboxSpriteIds
- adds r0, r6, r0
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r4, 0
- bl UpdateSpritePos
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08048394: .4byte gHealthboxSpriteIds
- thumb_func_end InitBattlerHealthboxCoords
-
- thumb_func_start UpdateLvlInHealthbox
-UpdateLvlInHealthbox: @ 8048398
- push {r4-r6,lr}
- sub sp, 0x14
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08048410 @ =gUnknown_826051C
- mov r0, sp
- movs r2, 0x10
- bl memcpy
- mov r0, sp
- adds r0, 0x2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r1, r0, 0
- subs r1, 0x2
- mov r0, sp
- subs r1, r0
- movs r0, 0x3
- subs r0, r1
- lsls r1, r0, 2
- adds r1, r0
- add r3, sp, 0x10
- mov r0, sp
- movs r2, 0x3
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r6, r0, 0
- ldr r0, _08048414 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r4, r0, 17
- ldrh r0, [r1, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048420
- bl IsDoubleBattle
- lsls r0, 24
- ldr r2, _08048418 @ =0x06010420
- adds r1, r4, r2
- cmp r0, 0
- bne _08048424
- ldr r0, _0804841C @ =0x06010820
- adds r1, r4, r0
- b _08048424
- .align 2, 0
-_08048410: .4byte gUnknown_826051C
-_08048414: .4byte gSprites
-_08048418: .4byte 0x06010420
-_0804841C: .4byte 0x06010820
-_08048420:
- ldr r2, _0804843C @ =0x06010400
- adds r1, r4, r2
-_08048424:
- adds r0, r1, 0
- adds r1, r6, 0
- movs r2, 0x3
- bl sub_804A6E8
- ldr r0, [sp, 0x10]
- bl sub_804A6D8
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804843C: .4byte 0x06010400
- thumb_func_end UpdateLvlInHealthbox
-
- thumb_func_start UpdateHpTextInHealthbox
-UpdateHpTextInHealthbox: @ 8048440
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, _080484B4 @ =gSprites
- lsls r0, 4
- add r0, r9
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048514
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08048514
- mov r0, r8
- cmp r0, 0
- beq _080484BC
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x10
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r3, sp, 0x2C
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x5
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r5, r0, 0
- ldrh r0, [r4, 0x4]
- lsls r0, 22
- lsrs r0, 17
- ldr r1, _080484B8 @ =0x06010a40
- adds r0, r1
- adds r1, r5, 0
- b _080484FE
- .align 2, 0
-_080484B4: .4byte gSprites
-_080484B8: .4byte 0x06010a40
-_080484BC:
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x10
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r1, 0xBA
- strb r1, [r0]
- movs r1, 0xFF
- strb r1, [r0, 0x1]
- add r3, sp, 0x2C
- add r0, sp, 0x10
- movs r1, 0x4
- movs r2, 0x5
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r5, r0, 0
- ldrh r4, [r4, 0x4]
- lsls r4, 22
- lsrs r4, 17
- ldr r1, _0804850C @ =0x060102e0
- adds r0, r4, r1
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_804A6E8
- ldr r2, _08048510 @ =0x06010a00
- adds r4, r2
- adds r1, r5, 0
- adds r1, 0x20
- adds r0, r4, 0
-_080484FE:
- movs r2, 0x2
- bl sub_804A6E8
- ldr r0, [sp, 0x2C]
- bl sub_804A6D8
- b _080485F8
- .align 2, 0
-_0804850C: .4byte 0x060102e0
-_08048510: .4byte 0x06010a00
-_08048514:
- add r5, sp, 0x18
- ldr r1, _0804855C @ =gUnknown_826052C
- adds r0, r5, 0
- movs r2, 0x14
- bl memcpy
- ldr r1, _08048560 @ =gSprites
- mov r0, r9
- lsls r4, r0, 4
- adds r0, r4, r0
- lsls r0, 2
- adds r7, r0, r1
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r6, r0, 24
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804854C
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08048564
-_0804854C:
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- mov r0, r9
- mov r2, r8
- bl sub_8048618
- b _080485F8
- .align 2, 0
-_0804855C: .4byte gUnknown_826052C
-_08048560: .4byte gSprites
-_08048564:
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048580
- movs r6, 0x59
- mov r0, r8
- cmp r0, 0
- bne _0804858A
- movs r6, 0x1D
- b _0804858A
-_08048580:
- movs r6, 0x30
- mov r1, r8
- cmp r1, 0
- bne _0804858A
- movs r6, 0x14
-_0804858A:
- mov r0, sp
- adds r0, 0x1E
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _08048608 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- adds r2, r5, 0
- movs r3, 0
- bl RenderTextFont9
- movs r5, 0
- ldr r1, _0804860C @ =gSprites
- mov r2, r9
- adds r0, r4, r2
- lsls r0, 2
- adds r4, r0, r1
-_080485C6:
- ldr r0, _08048608 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- lsls r1, r5, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r6
- adds r1, r5
- lsls r1, 5
- ldr r2, _08048610 @ =0x06010000
- adds r1, r2
- ldr r2, _08048614 @ =0x04000008
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080485C6
-_080485F8:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08048608: .4byte gMonSpritesGfxPtr
-_0804860C: .4byte gSprites
-_08048610: .4byte 0x06010000
-_08048614: .4byte 0x04000008
- thumb_func_end UpdateHpTextInHealthbox
-
- thumb_func_start sub_8048618
-sub_8048618: @ 8048618
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, _080486F8 @ =gUnknown_8260542
- add r0, sp, 0x10
- movs r2, 0x14
- bl memcpy
- ldr r5, _080486FC @ =gSprites
- mov r1, r9
- lsls r0, r1, 4
- add r0, r9
- lsls r0, 2
- adds r2, r0, r5
- ldrh r0, [r2, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _08048700 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- mov r3, r10
- lsls r0, r3, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0804866A
- b _080487DC
-_0804866A:
- movs r6, 0x4
- mov r1, r8
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- ands r6, r0
- ldrh r0, [r2, 0x38]
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, sp
- adds r0, 0x16
- lsls r1, r4, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r2, r8
- cmp r2, 0
- bne _08048698
- ldr r1, _08048704 @ =gUnknown_8260540
- bl StringCopy
-_08048698:
- ldr r0, _08048708 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- add r2, sp, 0x10
- movs r3, 0
- bl RenderTextFont9
- adds r4, r6, 0
- adds r0, r4, 0x3
- cmp r4, r0
- bge _08048748
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r5, r0, r5
-_080486C6:
- cmp r4, 0x2
- bhi _08048714
- ldr r0, _08048708 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r4, 0x1
- adds r1, r4
- lsls r1, 5
- ldr r2, _0804870C @ =0x06010000
- adds r1, r2
- ldr r2, _08048710 @ =0x04000008
- bl CpuSet
- b _0804873E
- .align 2, 0
-_080486F8: .4byte gUnknown_8260542
-_080486FC: .4byte gSprites
-_08048700: .4byte gBattleSpritesDataPtr
-_08048704: .4byte gUnknown_8260540
-_08048708: .4byte gMonSpritesGfxPtr
-_0804870C: .4byte 0x06010000
-_08048710: .4byte 0x04000008
-_08048714:
- ldr r0, _08048790 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r4, r1
- lsls r1, 5
- ldr r2, _08048794 @ =0x06010020
- adds r1, r2
- ldr r2, _08048798 @ =0x04000008
- bl CpuSet
- adds r4, 0x1
-_0804873E:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r6, 0x3
- cmp r4, r0
- blt _080486C6
-_08048748:
- mov r3, r8
- cmp r3, 0
- bne _080487A8
- ldr r0, _08048790 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- adds r0, 0xE0
- ldr r1, _0804879C @ =gSprites
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- adds r4, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, 0x80
- ldr r5, _080487A0 @ =0x06010000
- adds r1, r5
- ldr r2, _08048798 @ =0x04000008
- bl CpuSet
- mov r2, r8
- str r2, [sp, 0x24]
- add r0, sp, 0x24
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, r5
- ldr r2, _080487A4 @ =0x05000008
- bl CpuSet
- b _080487DC
- .align 2, 0
-_08048790: .4byte gMonSpritesGfxPtr
-_08048794: .4byte 0x06010020
-_08048798: .4byte 0x04000008
-_0804879C: .4byte gSprites
-_080487A0: .4byte 0x06010000
-_080487A4: .4byte 0x05000008
-_080487A8:
- mov r0, r10
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080487DC
- movs r0, 0x74
- bl GetHealthboxElementGfxPtr
- ldr r2, _080487EC @ =gSprites
- mov r3, r9
- lsls r1, r3, 4
- add r1, r9
- lsls r1, 2
- adds r1, r2
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r2, 0xD0
- lsls r2, 3
- adds r1, r2
- ldr r2, _080487F0 @ =0x06010000
- adds r1, r2
- ldr r2, _080487F4 @ =0x04000008
- bl CpuSet
-_080487DC:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080487EC: .4byte gSprites
-_080487F0: .4byte 0x06010000
-_080487F4: .4byte 0x04000008
- thumb_func_end sub_8048618
-
- thumb_func_start sub_80487F8
-sub_80487F8: @ 80487F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x24]
- ldr r1, _080488AC @ =gUnknown_826052C
- add r0, sp, 0x10
- movs r2, 0x14
- bl memcpy
- ldr r1, _080488B0 @ =gSprites
- ldr r2, [sp, 0x24]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- ldr r1, _080488B4 @ =gMonSpritesGfxPtr
- ldr r2, [r1]
- movs r3, 0xBA
- lsls r3, 1
- adds r2, r3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 7
- movs r0, 0xA4
- lsls r0, 3
- adds r1, r0
- ldr r0, [r2]
- adds r6, r0, r1
- movs r1, 0x5
- mov r8, r1
- adds r0, r4, 0
- bl GetNature
- lsls r0, 24
- mov r4, sp
- adds r4, 0x16
- ldr r1, _080488B8 @ =gNatureNames
- lsrs r0, 22
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0
- add r2, sp, 0x10
- movs r3, 0
- bl RenderTextFont9
- movs r7, 0x6
- movs r5, 0
- mov r2, sp
- adds r2, 0x19
- str r2, [sp, 0x28]
-_08048888:
- mov r0, sp
- adds r0, r7
- adds r0, 0x10
- ldrb r1, [r0]
- adds r0, r1, 0
- subs r0, 0x37
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bls _080488A8
- adds r0, r1, 0
- adds r0, 0x79
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080488BC
-_080488A8:
- movs r0, 0x2C
- b _080488DA
- .align 2, 0
-_080488AC: .4byte gUnknown_826052C
-_080488B0: .4byte gSprites
-_080488B4: .4byte gMonSpritesGfxPtr
-_080488B8: .4byte gNatureNames
-_080488BC:
- adds r0, r1, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080488D4
- adds r0, r1, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080488D8
-_080488D4:
- movs r0, 0x2D
- b _080488DA
-_080488D8:
- movs r0, 0x2B
-_080488DA:
- bl GetHealthboxElementGfxPtr
- lsls r1, r5, 6
- adds r1, r6, r1
- ldr r2, _080489F8 @ =0x04000008
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, 0x1
- cmp r5, r8
- bcc _08048888
- movs r7, 0x1
- ldr r3, [sp, 0x24]
- lsls r3, 4
- str r3, [sp, 0x2C]
- movs r0, 0x1
- add r0, r8
- mov r9, r0
- cmp r7, r9
- bge _08048966
- ldr r1, _080489FC @ =gSprites
- ldr r2, _080489F8 @ =0x04000008
- mov r10, r2
- ldr r2, [sp, 0x24]
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r1
- mov r8, r0
-_08048916:
- mov r3, r8
- ldrh r0, [r3, 0x4]
- lsls r0, 22
- lsrs r0, 22
- adds r5, r7, 0
- cmp r7, 0
- bge _08048926
- adds r5, r7, 0x7
-_08048926:
- asrs r5, 3
- lsls r4, r5, 3
- subs r4, r7, r4
- adds r0, r4
- lsls r5, 6
- adds r0, r5
- lsls r0, 5
- ldr r2, _08048A00 @ =0x06010000
- adds r1, r0, r2
- adds r0, r6, 0
- mov r2, r10
- bl CpuSet
- adds r6, 0x20
- mov r3, r8
- ldrh r0, [r3, 0x4]
- lsls r0, 22
- lsrs r0, 22
- adds r4, 0x8
- adds r0, r4
- adds r0, r5
- lsls r0, 5
- ldr r2, _08048A00 @ =0x06010000
- adds r1, r0, r2
- adds r0, r6, 0
- mov r2, r10
- bl CpuSet
- adds r6, 0x20
- adds r7, 0x1
- cmp r7, r9
- blt _08048916
-_08048966:
- ldr r6, _080489FC @ =gSprites
- ldr r3, [sp, 0x2C]
- ldr r1, [sp, 0x24]
- adds r0, r3, r1
- lsls r0, 2
- adds r0, r6
- ldrh r4, [r0, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08048A04 @ =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x7C
- ldrb r1, [r0]
- mov r0, sp
- adds r0, 0x16
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r5]
- adds r0, 0x7B
- ldrb r1, [r0]
- ldr r0, [sp, 0x28]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- add r0, sp, 0x10
- movs r1, 0
- strb r1, [r0, 0x5]
- adds r2, r0, 0
- movs r0, 0xBA
- strb r0, [r2, 0x8]
- ldr r5, _08048A08 @ =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r2, 0xBA
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- str r1, [sp]
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- add r2, sp, 0x10
- movs r3, 0
- bl RenderTextFont9
- movs r7, 0
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r6, r0, r6
- movs r4, 0x20
-_080489D0:
- cmp r7, 0x1
- bgt _08048A0C
- ldr r0, [r5]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- adds r0, r4
- ldrh r1, [r6, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r7, 0x2
- adds r1, r2
- lsls r1, 5
- ldr r2, _08048A00 @ =0x06010000
- adds r1, r2
- ldr r2, _080489F8 @ =0x04000008
- bl CpuSet
- b _08048A2C
- .align 2, 0
-_080489F8: .4byte 0x04000008
-_080489FC: .4byte gSprites
-_08048A00: .4byte 0x06010000
-_08048A04: .4byte gBattleStruct
-_08048A08: .4byte gMonSpritesGfxPtr
-_08048A0C:
- ldr r0, [r5]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- adds r0, r4
- ldrh r1, [r6, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r7, r1
- lsls r1, 5
- ldr r2, _08048A44 @ =0x060100c0
- adds r1, r2
- ldr r2, _08048A48 @ =0x04000008
- bl CpuSet
-_08048A2C:
- adds r4, 0x40
- adds r7, 0x1
- cmp r7, 0x4
- ble _080489D0
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08048A44: .4byte 0x060100c0
-_08048A48: .4byte 0x04000008
- thumb_func_end sub_80487F8
-
- thumb_func_start SwapHpBarsWithHpText
-SwapHpBarsWithHpText: @ 8048A4C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r9, r0
- ldr r0, _08048B78 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r9, r0
- blt _08048A66
- b _08048CF2
-_08048A66:
- ldr r1, _08048B7C @ =gSprites
- mov r10, r1
- ldr r2, _08048B80 @ =gBattlerPartyIndexes
- mov r8, r2
-_08048A6E:
- ldr r0, _08048B84 @ =gHealthboxSpriteIds
- mov r1, r9
- adds r6, r1, r0
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r1, r10
- adds r1, 0x1C
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _08048B88 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _08048A8C
- b _08048CE0
-_08048A8C:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r7, r0, 24
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08048AA2
- b _08048CE0
-_08048AA2:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08048ABA
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048ABA
- b _08048CE0
-_08048ABA:
- ldr r5, _08048B8C @ =gBattleSpritesDataPtr
- ldr r0, [r5]
- ldr r3, [r0]
- mov r0, r9
- lsls r4, r0, 2
- adds r3, r4, r3
- ldr r0, [r3]
- lsls r0, 27
- lsrs r0, 31
- movs r2, 0x1
- eors r2, r0
- lsls r2, 4
- mov r12, r2
- ldrb r0, [r3]
- movs r2, 0x11
- negs r2, r2
- adds r1, r2, 0
- ands r0, r1
- mov r1, r12
- orrs r0, r1
- strb r0, [r3]
- ldr r0, [r5]
- ldr r0, [r0]
- adds r4, r0
- ldr r0, [r4]
- lsls r0, 27
- lsrs r4, r0, 31
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048BE8
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08048B08
- b _08048CE0
-_08048B08:
- ldr r0, _08048B90 @ =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x80
- ands r2, r0
- cmp r2, 0
- beq _08048B16
- b _08048CE0
-_08048B16:
- cmp r4, 0x1
- bne _08048BA0
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r0, [r0, 0x38]
- lsls r0, 24
- lsrs r1, r0, 24
- str r2, [sp]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, _08048B94 @ =0x06010000
- adds r1, r2
- mov r0, sp
- ldr r2, _08048B98 @ =0x05000040
- bl CpuSet
- ldrb r4, [r6]
- mov r1, r8
- ldrh r0, [r1]
- movs r2, 0x64
- muls r0, r2
- ldr r1, _08048B9C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_8048618
- ldrb r4, [r6]
- mov r2, r8
- ldrh r0, [r2]
- movs r1, 0x64
- muls r0, r1
- ldr r2, _08048B9C @ =gPlayerParty
- b _08048C6E
- .align 2, 0
-_08048B78: .4byte gBattlersCount
-_08048B7C: .4byte gSprites
-_08048B80: .4byte gBattlerPartyIndexes
-_08048B84: .4byte gHealthboxSpriteIds
-_08048B88: .4byte SpriteCallbackDummy
-_08048B8C: .4byte gBattleSpritesDataPtr
-_08048B90: .4byte gBattleTypeFlags
-_08048B94: .4byte 0x06010000
-_08048B98: .4byte 0x05000040
-_08048B9C: .4byte gPlayerParty
-_08048BA0:
- ldrb r0, [r6]
- bl UpdateStatusIconInHealthbox
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- movs r2, 0x64
- muls r1, r2
- ldr r2, _08048BDC @ =gPlayerParty
- adds r1, r2
- movs r2, 0x5
- bl UpdateHealthboxAttribute
- movs r0, 0x75
- bl GetHealthboxElementGfxPtr
- ldrb r2, [r6]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r10
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, _08048BE0 @ =0x06010680
- adds r1, r2
- ldr r2, _08048BE4 @ =0x04000008
- bl CpuSet
- b _08048CCA
- .align 2, 0
-_08048BDC: .4byte gPlayerParty
-_08048BE0: .4byte 0x06010680
-_08048BE4: .4byte 0x04000008
-_08048BE8:
- cmp r4, 0x1
- bne _08048C94
- ldr r0, _08048C0C @ =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x80
- ands r2, r0
- cmp r2, 0
- beq _08048C14
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- movs r2, 0x64
- muls r1, r2
- ldr r2, _08048C10 @ =gEnemyParty
- adds r1, r2
- bl sub_80487F8
- b _08048CCA
- .align 2, 0
-_08048C0C: .4byte gBattleTypeFlags
-_08048C10: .4byte gEnemyParty
-_08048C14:
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r0, [r0, 0x38]
- lsls r0, 24
- lsrs r1, r0, 24
- str r2, [sp]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r0, _08048C88 @ =0x06010000
- adds r1, r0
- mov r0, sp
- ldr r2, _08048C8C @ =0x05000040
- bl CpuSet
- ldrb r4, [r6]
- mov r1, r8
- ldrh r0, [r1]
- movs r2, 0x64
- muls r0, r2
- ldr r1, _08048C90 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_8048618
- ldrb r4, [r6]
- mov r2, r8
- ldrh r0, [r2]
- movs r1, 0x64
- muls r0, r1
- ldr r2, _08048C90 @ =gEnemyParty
-_08048C6E:
- adds r0, r2
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_8048618
- b _08048CCA
- .align 2, 0
-_08048C88: .4byte 0x06010000
-_08048C8C: .4byte 0x05000040
-_08048C90: .4byte gEnemyParty
-_08048C94:
- ldrb r0, [r6]
- bl UpdateStatusIconInHealthbox
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- movs r5, 0x64
- muls r1, r5
- ldr r4, _08048D04 @ =gEnemyParty
- adds r1, r4
- movs r2, 0x5
- bl UpdateHealthboxAttribute
- ldr r0, _08048D08 @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08048CCA
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- muls r1, r5
- adds r1, r4
- movs r2, 0x4
- bl UpdateHealthboxAttribute
-_08048CCA:
- ldr r0, _08048D0C @ =gHealthboxSpriteIds
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r0, 0x3C]
- movs r2, 0x1
- eors r1, r2
- strh r1, [r0, 0x3C]
-_08048CE0:
- movs r0, 0x2
- add r8, r0
- movs r1, 0x1
- add r9, r1
- ldr r0, _08048D10 @ =gBattlersCount
- ldrb r0, [r0]
- cmp r9, r0
- bge _08048CF2
- b _08048A6E
-_08048CF2:
- 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
-_08048D04: .4byte gEnemyParty
-_08048D08: .4byte gBattleTypeFlags
-_08048D0C: .4byte gHealthboxSpriteIds
-_08048D10: .4byte gBattlersCount
- thumb_func_end SwapHpBarsWithHpText
-
- thumb_func_start CreatePartyStatusSummarySprites
-CreatePartyStatusSummarySprites: @ 8048D14
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- str r1, [sp, 0xC]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r2, 24
- lsrs r2, 24
- adds r4, r2, 0
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- cmp r4, 0
- beq _08048D44
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08048D88
-_08048D44:
- ldr r0, [sp, 0x8]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048D64
- movs r7, 0
- movs r1, 0x88
- movs r2, 0x60
- movs r0, 0x64
- mov r8, r0
- ldr r5, _08048D60 @ =0x0000fffb
- b _08048D94
- .align 2, 0
-_08048D60: .4byte 0x0000fffb
-_08048D64:
- movs r7, 0x1
- cmp r4, 0
- beq _08048D74
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08048D7A
-_08048D74:
- movs r1, 0x68
- movs r2, 0x28
- b _08048D7E
-_08048D7A:
- movs r1, 0x68
- movs r2, 0x10
-_08048D7E:
- ldr r3, _08048D84 @ =0x0000ff9c
- mov r8, r3
- b _08048D92
- .align 2, 0
-_08048D84: .4byte 0x0000ff9c
-_08048D88:
- movs r7, 0x1
- movs r1, 0x68
- movs r2, 0x28
- ldr r5, _08048E40 @ =0x0000ff9c
- mov r8, r5
-_08048D92:
- movs r5, 0x5
-_08048D94:
- movs r6, 0
- str r6, [sp, 0x14]
- lsls r4, r7, 3
- ldr r0, _08048E44 @ =gUnknown_826046C
- mov r10, r0
- lsls r3, r7, 1
- mov r9, r3
- lsls r1, 16
- str r1, [sp, 0x20]
- lsls r2, 16
- str r2, [sp, 0x24]
- ldr r2, _08048E48 @ =0x0000ffff
- ldr r1, [sp, 0xC]
- movs r6, 0x5
-_08048DB0:
- ldrh r0, [r1]
- cmp r0, r2
- beq _08048DC4
- ldr r3, [sp, 0x14]
- lsls r0, r3, 24
- movs r3, 0x80
- lsls r3, 17
- adds r0, r3
- lsrs r0, 24
- str r0, [sp, 0x14]
-_08048DC4:
- adds r1, 0x8
- subs r6, 0x1
- cmp r6, 0
- bge _08048DB0
- mov r6, r10
- adds r0, r4, r6
- bl LoadCompressedSpriteSheetUsingHeap
- ldr r0, _08048E4C @ =gUnknown_826049C
- adds r0, r4, r0
- bl LoadSpriteSheet
- ldr r0, _08048E50 @ =gUnknown_826047C
- adds r0, r4, r0
- bl LoadSpritePalette
- ldr r0, _08048E54 @ =gUnknown_826048C
- adds r0, r4, r0
- bl LoadSpritePalette
- mov r1, r9
- adds r0, r1, r7
- lsls r0, 3
- ldr r1, _08048E58 @ =gUnknown_82604BC
- adds r0, r1
- ldr r2, [sp, 0x20]
- asrs r1, r2, 16
- ldr r3, [sp, 0x24]
- asrs r2, r3, 16
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x18]
- lsls r0, 4
- ldr r6, [sp, 0x18]
- adds r0, r6
- lsls r0, 2
- ldr r1, _08048E5C @ =gSprites
- adds r4, r0, r1
- ldr r1, _08048E60 @ =gUnknown_82603FC
- adds r0, r4, 0
- bl SetSubspriteTables
- mov r0, r8
- strh r0, [r4, 0x24]
- strh r5, [r4, 0x2E]
- cmp r7, 0
- beq _08048E64
- ldrh r0, [r4, 0x20]
- subs r0, 0x60
- strh r0, [r4, 0x20]
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r4, 0x3]
- b _08048E6A
- .align 2, 0
-_08048E40: .4byte 0x0000ff9c
-_08048E44: .4byte gUnknown_826046C
-_08048E48: .4byte 0x0000ffff
-_08048E4C: .4byte gUnknown_826049C
-_08048E50: .4byte gUnknown_826047C
-_08048E54: .4byte gUnknown_826048C
-_08048E58: .4byte gUnknown_82604BC
-_08048E5C: .4byte gSprites
-_08048E60: .4byte gUnknown_82603FC
-_08048E64:
- ldrh r0, [r4, 0x20]
- adds r0, 0x60
- strh r0, [r4, 0x20]
-_08048E6A:
- movs r6, 0
- ldr r1, _08048F14 @ =gSprites
- mov r10, r1
- mov r4, sp
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- str r0, [sp, 0x1C]
- movs r3, 0xA
- mov r9, r3
- mov r8, r6
-_08048E80:
- ldr r0, _08048F18 @ =gUnknown_82604EC
- ldr r5, [sp, 0x24]
- ldr r1, _08048F1C @ =0xfffc0000
- adds r2, r5, r1
- ldr r3, [sp, 0x1C]
- adds r0, r3, r0
- ldr r5, [sp, 0x20]
- asrs r1, r5, 16
- asrs r2, 16
- movs r3, 0x9
- bl CreateSpriteAtEnd
- strb r0, [r4]
- ldr r0, [sp, 0x10]
- cmp r0, 0
- bne _08048EB0
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r2, _08048F20 @ =gSprites + 0x1C
- adds r1, r2
- ldr r0, _08048F24 @ =SpriteCB_StatusSummaryBallsOnSwitchout
- str r0, [r1]
-_08048EB0:
- ldr r5, _08048F14 @ =gSprites
- cmp r7, 0
- bne _08048ECE
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- strh r7, [r0, 0x24]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- strh r7, [r0, 0x26]
-_08048ECE:
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0
- mov r3, sp
- ldrh r3, [r3, 0x18]
- strh r3, [r0, 0x2E]
- cmp r7, 0
- bne _08048F28
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrh r0, [r1, 0x20]
- adds r0, 0x18
- add r0, r8
- strh r0, [r1, 0x20]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r9
- strh r1, [r0, 0x30]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x78
- b _08048F66
- .align 2, 0
-_08048F14: .4byte gSprites
-_08048F18: .4byte gUnknown_82604EC
-_08048F1C: .4byte 0xfffc0000
-_08048F20: .4byte gSprites + 0x1C
-_08048F24: .4byte SpriteCB_StatusSummaryBallsOnSwitchout
-_08048F28:
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- ldrh r3, [r2, 0x20]
- subs r3, 0x18
- movs r1, 0x5
- subs r1, r6
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- subs r3, r0
- strh r3, [r2, 0x20]
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- movs r1, 0x6
- subs r1, r6
- lsls r0, r1, 3
- subs r0, r1
- adds r0, 0xA
- strh r0, [r2, 0x30]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08048FD4 @ =0x0000ff88
-_08048F66:
- strh r1, [r0, 0x24]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x32]
- adds r4, 0x1
- movs r2, 0x7
- add r9, r2
- movs r3, 0xA
- add r8, r3
- adds r6, 0x1
- cmp r6, 0x5
- bgt _08048F86
- b _08048E80
-_08048F86:
- ldr r0, [sp, 0x8]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0804906E
- movs r6, 0
- ldr r5, _08048FD8 @ =gBattleTypeFlags
- mov r10, r5
- ldr r0, _08048FDC @ =0x0000ffff
- mov r9, r0
- ldr r7, _08048FE0 @ =gSprites
- ldr r1, _08048FE4 @ =0x000003ff
- mov r12, r1
- ldr r2, _08048FE8 @ =0xfffffc00
- mov r8, r2
- mov r4, sp
- ldr r5, [sp, 0xC]
-_08048FAA:
- mov r3, r10
- ldr r0, [r3]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08048FEC
- ldrh r0, [r5]
- cmp r0, r9
- beq _08048FF6
- cmp r0, 0
- bne _0804903E
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _08049056
- .align 2, 0
-_08048FD4: .4byte 0x0000ff88
-_08048FD8: .4byte gBattleTypeFlags
-_08048FDC: .4byte 0x0000ffff
-_08048FE0: .4byte gSprites
-_08048FE4: .4byte 0x000003ff
-_08048FE8: .4byte 0xfffffc00
-_08048FEC:
- ldr r1, [sp, 0x14]
- lsls r0, r1, 24
- asrs r0, 24
- cmp r6, r0
- blt _08049024
-_08048FF6:
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x1
- mov r0, r12
- ands r1, r0
- mov r0, r8
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- movs r1, 0x1
- strh r1, [r0, 0x3C]
- b _08049062
-_08049024:
- ldrh r0, [r5]
- cmp r0, 0
- bne _0804903E
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _08049056
-_0804903E:
- ldr r0, [r5, 0x4]
- cmp r0, 0
- beq _08049062
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x2
-_08049056:
- mov r0, r12
- ands r1, r0
- mov r0, r8
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_08049062:
- adds r4, 0x1
- adds r5, 0x8
- adds r6, 0x1
- cmp r6, 0x5
- ble _08048FAA
- b _08049148
-_0804906E:
- movs r6, 0
- ldr r1, _080490B4 @ =gBattleTypeFlags
- mov r10, r1
- ldr r2, _080490B8 @ =0x0000ffff
- mov r9, r2
- ldr r7, _080490BC @ =gSprites
- ldr r3, _080490C0 @ =0x000003ff
- mov r12, r3
- ldr r5, _080490C4 @ =0xfffffc00
- mov r8, r5
- ldr r5, [sp, 0xC]
- mov r4, sp
- adds r4, 0x5
-_08049088:
- mov r1, r10
- ldr r0, [r1]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080490C8
- ldrh r0, [r5]
- cmp r0, r9
- beq _080490D2
- cmp r0, 0
- bne _0804911A
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _08049132
- .align 2, 0
-_080490B4: .4byte gBattleTypeFlags
-_080490B8: .4byte 0x0000ffff
-_080490BC: .4byte gSprites
-_080490C0: .4byte 0x000003ff
-_080490C4: .4byte 0xfffffc00
-_080490C8:
- ldr r1, [sp, 0x14]
- lsls r0, r1, 24
- asrs r0, 24
- cmp r6, r0
- blt _08049100
-_080490D2:
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x1
- mov r0, r12
- ands r1, r0
- mov r0, r8
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- movs r1, 0x1
- strh r1, [r0, 0x3C]
- b _0804913E
-_08049100:
- ldrh r0, [r5]
- cmp r0, 0
- bne _0804911A
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _08049132
-_0804911A:
- ldr r0, [r5, 0x4]
- cmp r0, 0
- beq _0804913E
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x2
-_08049132:
- mov r0, r12
- ands r1, r0
- mov r0, r8
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_0804913E:
- subs r4, 0x1
- adds r5, 0x8
- adds r6, 0x1
- cmp r6, 0x5
- ble _08049088
-_08049148:
- ldr r0, _080491A8 @ =TaskDummy
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080491AC @ =gTasks
- lsls r3, r4, 2
- adds r1, r3, r4
- lsls r1, 3
- adds r0, r1, r2
- mov r5, sp
- ldrh r5, [r5, 0x8]
- strh r5, [r0, 0x8]
- mov r6, sp
- ldrh r6, [r6, 0x18]
- strh r6, [r0, 0xA]
- movs r6, 0
- adds r0, r2, 0
- adds r0, 0xE
- adds r1, r0
-_08049172:
- mov r5, sp
- adds r0, r5, r6
- ldrb r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x5
- ble _08049172
- adds r0, r3, r4
- lsls r0, 3
- adds r0, r2
- ldrh r6, [r5, 0x10]
- strh r6, [r0, 0x1C]
- movs r0, 0x6B
- movs r1, 0
- bl PlaySE12WithPanning
- adds r0, r4, 0
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080491A8: .4byte TaskDummy
-_080491AC: .4byte gTasks
- thumb_func_end CreatePartyStatusSummarySprites
-
- thumb_func_start Task_HidePartyStatusSummary
-Task_HidePartyStatusSummary: @ 80491B0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, _080492C0 @ =gTasks
- lsls r3, r0, 2
- adds r1, r3, r0
- lsls r1, 3
- adds r0, r1, r2
- ldrb r7, [r0, 0x1C]
- ldrb r4, [r0, 0xA]
- mov r10, r4
- ldrb r0, [r0, 0x8]
- str r0, [sp, 0x8]
- movs r5, 0
- str r3, [sp, 0xC]
- adds r2, 0xE
- adds r2, r1, r2
-_080491DE:
- mov r0, sp
- adds r1, r0, r5
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r5, 0x1
- cmp r5, 0x5
- ble _080491DE
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r1, _080492C0 @ =gTasks
- ldr r0, [sp, 0xC]
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x10
- strh r1, [r0, 0x26]
- movs r5, 0
- mov r1, r10
- lsls r1, 4
- str r1, [sp, 0x10]
- ldr r3, _080492C4 @ =gSprites
- movs r6, 0xD
- negs r6, r6
- mov r12, r3
- movs r4, 0x4
-_08049220:
- mov r2, sp
- adds r0, r2, r5
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r1, 0x1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1, 0x1]
- adds r5, 0x1
- cmp r5, 0x5
- ble _08049220
- ldr r2, [sp, 0x10]
- add r2, r10
- lsls r2, 2
- add r2, r12
- ldrb r1, [r2, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x1]
- cmp r7, 0
- bne _0804925A
- b _08049360
-_0804925A:
- movs r5, 0
- mov r6, r12
- mov r9, r5
- adds r3, r6, 0
- adds r3, 0x1C
- mov r4, sp
- movs r7, 0
-_08049268:
- ldr r0, [sp, 0x8]
- str r3, [sp, 0x14]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, [sp, 0x14]
- cmp r2, 0
- beq _080492CC
- movs r0, 0x5
- subs r0, r5
- mov r1, sp
- adds r2, r1, r0
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r7, [r0, 0x30]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r9
- strh r1, [r0, 0x34]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r9
- strh r1, [r0, 0x36]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, _080492C8 @ =sub_8049630
- str r1, [r0]
- ldr r2, _080492C4 @ =gSprites
- mov r12, r2
- b _08049302
- .align 2, 0
-_080492C0: .4byte gTasks
-_080492C4: .4byte gSprites
-_080492C8: .4byte sub_8049630
-_080492CC:
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r7, [r0, 0x30]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x34]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x36]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, _08049348 @ =sub_8049630
- str r1, [r0]
- ldr r0, _0804934C @ =gSprites
- mov r12, r0
-_08049302:
- adds r4, 0x1
- adds r7, 0x7
- adds r5, 0x1
- cmp r5, 0x5
- ble _08049268
- ldr r3, [sp, 0x10]
- add r3, r10
- lsls r3, 2
- mov r1, r12
- adds r0, r3, r1
- movs r2, 0x2E
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- movs r2, 0
- strh r1, [r0, 0x2E]
- strh r2, [r0, 0x30]
- mov r1, r12
- adds r1, 0x1C
- adds r3, r1
- ldr r1, _08049350 @ =sub_8049568
- str r1, [r3]
- ldr r1, _08049354 @ =gUnknown_8260404
- bl SetSubspriteTables
- ldr r1, _08049358 @ =gTasks
- ldr r0, [sp, 0xC]
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _0804935C @ =sub_8049388
- str r1, [r0]
- b _0804936E
- .align 2, 0
-_08049348: .4byte sub_8049630
-_0804934C: .4byte gSprites
-_08049350: .4byte sub_8049568
-_08049354: .4byte gUnknown_8260404
-_08049358: .4byte gTasks
-_0804935C: .4byte sub_8049388
-_08049360:
- ldr r0, _08049380 @ =gTasks
- ldr r1, [sp, 0xC]
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldr r0, _08049384 @ =sub_804948C
- str r0, [r1]
-_0804936E:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08049380: .4byte gTasks
-_08049384: .4byte sub_804948C
- thumb_func_end Task_HidePartyStatusSummary
-
- thumb_func_start sub_8049388
-sub_8049388: @ 8049388
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080493DC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080493C8
- ldrh r0, [r4, 0x26]
- subs r1, r0, 0x1
- strh r1, [r4, 0x26]
- lsls r0, r1, 16
- cmp r0, 0
- blt _080493D4
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_080493C8:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080493D4
- ldr r0, _080493E0 @ =sub_80493E4
- str r0, [r4]
-_080493D4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080493DC: .4byte gTasks
-_080493E0: .4byte sub_80493E4
- thumb_func_end sub_8049388
-
- thumb_func_start sub_80493E4
-sub_80493E4: @ 80493E4
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r7, _0804945C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r6, r0, 3
- adds r1, r6, r7
- ldrh r0, [r1, 0x26]
- subs r0, 0x1
- strh r0, [r1, 0x26]
- lsls r0, 16
- asrs r2, r0, 16
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- bne _08049464
- ldrb r3, [r1, 0xA]
- movs r5, 0
- adds r0, r7, 0
- adds r0, 0xE
- adds r2, r6, r0
-_08049412:
- mov r0, sp
- adds r1, r0, r5
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r5, 0x1
- cmp r5, 0x5
- ble _08049412
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r4, _08049460 @ =gSprites
- adds r0, r4
- bl DestroySpriteAndFreeResources
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySpriteAndFreeResources
- movs r5, 0x1
-_08049442:
- mov r1, sp
- adds r0, r1, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r5, 0x1
- cmp r5, 0x5
- ble _08049442
- b _08049482
- .align 2, 0
-_0804945C: .4byte gTasks
-_08049460: .4byte gSprites
-_08049464:
- movs r0, 0x3
- negs r0, r0
- cmp r2, r0
- bne _08049482
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyTask
-_08049482:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80493E4
-
- thumb_func_start sub_804948C
-sub_804948C: @ 804948C
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r7, _080494C4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r6, r0, 3
- adds r3, r6, r7
- ldrh r0, [r3, 0x26]
- subs r1, r0, 0x1
- strh r1, [r3, 0x26]
- lsls r0, r1, 16
- asrs r2, r0, 16
- cmp r2, 0
- blt _080494C8
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _08049546
- .align 2, 0
-_080494C4: .4byte gTasks
-_080494C8:
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- bne _08049528
- ldrb r3, [r3, 0xA]
- movs r5, 0
- adds r0, r7, 0
- adds r0, 0xE
- adds r2, r6, r0
-_080494DA:
- mov r0, sp
- adds r1, r0, r5
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r5, 0x1
- cmp r5, 0x5
- ble _080494DA
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r4, _08049524 @ =gSprites
- adds r0, r4
- bl DestroySpriteAndFreeResources
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySpriteAndFreeResources
- movs r5, 0x1
-_0804950A:
- mov r1, sp
- adds r0, r1, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r5, 0x1
- cmp r5, 0x5
- ble _0804950A
- b _08049546
- .align 2, 0
-_08049524: .4byte gSprites
-_08049528:
- movs r0, 0x3
- negs r0, r0
- cmp r2, r0
- bne _08049546
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyTask
-_08049546:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_804948C
-
- thumb_func_start SpriteCB_StatusSummaryBar
-SpriteCB_StatusSummaryBar: @ 8049550
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x24]
- movs r3, 0x24
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08049564
- ldrh r0, [r1, 0x2E]
- adds r0, r2, r0
- strh r0, [r1, 0x24]
-_08049564:
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_StatusSummaryBar
-
- thumb_func_start sub_8049568
-sub_8049568: @ 8049568
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0
- adds r1, 0x20
- strh r1, [r2, 0x30]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _08049586
- lsls r0, r1, 16
- asrs r0, 20
- ldrh r1, [r2, 0x24]
- adds r0, r1
- b _0804958E
-_08049586:
- lsls r1, 16
- asrs r1, 20
- ldrh r0, [r2, 0x24]
- subs r0, r1
-_0804958E:
- strh r0, [r2, 0x24]
- ldrh r1, [r2, 0x30]
- movs r0, 0xF
- ands r0, r1
- strh r0, [r2, 0x30]
- pop {r0}
- bx r0
- thumb_func_end sub_8049568
-
- thumb_func_start SpriteCB_StatusSummaryBallsOnBattleStart
-SpriteCB_StatusSummaryBallsOnBattleStart: @ 804959C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080495B0
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _08049626
-_080495B0:
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r3, r0, 24
- ldrh r2, [r4, 0x34]
- adds r0, r2, 0
- adds r0, 0x38
- lsls r1, r0, 16
- lsrs r2, r1, 16
- ldr r0, _080495E0 @ =0x0000fff0
- ands r2, r0
- strh r2, [r4, 0x34]
- cmp r3, 0
- beq _080495E4
- lsrs r0, r1, 20
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- ble _080495F4
- movs r0, 0
- strh r0, [r4, 0x24]
- b _080495F4
- .align 2, 0
-_080495E0: .4byte 0x0000fff0
-_080495E4:
- lsrs r1, 20
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- bge _080495F4
- strh r3, [r4, 0x24]
-_080495F4:
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _08049626
- movs r1, 0x3F
- cmp r3, 0
- beq _08049604
- movs r1, 0xC0
-_08049604:
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08049618
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x6D
- bl PlaySE2WithPanning
- b _08049622
-_08049618:
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x6C
- bl PlaySE1WithPanning
-_08049622:
- ldr r0, _0804962C @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_08049626:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804962C: .4byte SpriteCallbackDummy
- thumb_func_end SpriteCB_StatusSummaryBallsOnBattleStart
-
- thumb_func_start sub_8049630
-sub_8049630: @ 8049630
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x30]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _08049644
- subs r0, r1, 0x1
- strh r0, [r3, 0x30]
- b _08049694
-_08049644:
- ldrh r0, [r3, 0x32]
- lsls r0, 24
- ldrh r2, [r3, 0x34]
- adds r1, r2, 0
- adds r1, 0x38
- lsls r4, r1, 16
- lsrs r2, r4, 16
- ldr r1, _08049664 @ =0x0000fff0
- ands r2, r1
- strh r2, [r3, 0x34]
- cmp r0, 0
- beq _08049668
- lsrs r0, r4, 20
- ldrh r1, [r3, 0x24]
- adds r0, r1
- b _0804966E
- .align 2, 0
-_08049664: .4byte 0x0000fff0
-_08049668:
- lsrs r1, r4, 20
- ldrh r0, [r3, 0x24]
- subs r0, r1
-_0804966E:
- strh r0, [r3, 0x24]
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- movs r2, 0x20
- ldrsh r1, [r3, r2]
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x80
- lsls r1, 1
- cmp r0, r1
- bls _08049694
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _0804969C @ =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_08049694:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804969C: .4byte SpriteCallbackDummy
- thumb_func_end sub_8049630
-
- thumb_func_start SpriteCB_StatusSummaryBallsOnSwitchout
-SpriteCB_StatusSummaryBallsOnSwitchout: @ 80496A0
- ldrh r2, [r0, 0x2E]
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _080496BC @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- ldrh r2, [r1, 0x24]
- strh r2, [r0, 0x24]
- ldrh r1, [r1, 0x26]
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_080496BC: .4byte gSprites
- thumb_func_end SpriteCB_StatusSummaryBallsOnSwitchout
-
- thumb_func_start sub_80496C0
-sub_80496C0: @ 80496C0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08049760 @ =gDisplayedStringBattle
- ldr r1, _08049764 @ =gUnknown_8260556
- bl StringCopy
- adds r5, r0, 0
- adds r0, r7, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- adds r0, r5, 0
- mov r1, sp
- bl StringCopy
- adds r5, r0, 0
- movs r0, 0xFC
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0x1
- strb r0, [r5]
- adds r5, 0x1
- adds r0, r7, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x1D
- beq _08049720
- cmp r0, 0x20
- bne _08049734
-_08049720:
- movs r0, 0xB
- muls r1, r0
- ldr r0, _08049768 @ =gSpeciesNames
- adds r1, r0
- mov r0, sp
- bl StringCompare
- cmp r0, 0
- bne _08049734
- movs r6, 0x64
-_08049734:
- ldr r1, _0804976C @ =gSprites
- mov r0, r8
- lsls r4, r0, 4
- adds r0, r4, r0
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl CheckBattleTypeGhost
- lsls r0, 24
- cmp r0, 0
- beq _08049754
- movs r6, 0x64
-_08049754:
- cmp r6, 0
- beq _08049770
- cmp r6, 0xFE
- beq _0804977A
- movs r0, 0xB
- b _08049782
- .align 2, 0
-_08049760: .4byte gDisplayedStringBattle
-_08049764: .4byte gUnknown_8260556
-_08049768: .4byte gSpeciesNames
-_0804976C: .4byte gSprites
-_08049770:
- movs r0, 0xB
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0xB5
- b _08049782
-_0804977A:
- movs r0, 0xA
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0xB6
-_08049782:
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r5, 0x1]
- ldr r0, _080497E4 @ =gDisplayedStringBattle
- add r3, sp, 0xC
- movs r1, 0
- movs r2, 0x3
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r6, r0, 0
- ldr r0, _080497E8 @ =gSprites
- mov r2, r8
- adds r1, r4, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r4, r0, 17
- ldrh r0, [r1, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080497F8
- ldr r1, _080497EC @ =0x06010040
- adds r0, r4, r1
- adds r1, r6, 0
- movs r2, 0x6
- bl sub_804A6E8
- bl IsDoubleBattle
- lsls r0, 24
- ldr r2, _080497F0 @ =0x06010400
- adds r5, r4, r2
- cmp r0, 0
- bne _080497D4
- ldr r0, _080497F4 @ =0x06010800
- adds r5, r4, r0
-_080497D4:
- adds r1, r6, 0
- adds r1, 0xC0
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_804A6E8
- b _08049804
- .align 2, 0
-_080497E4: .4byte gDisplayedStringBattle
-_080497E8: .4byte gSprites
-_080497EC: .4byte 0x06010040
-_080497F0: .4byte 0x06010400
-_080497F4: .4byte 0x06010800
-_080497F8:
- ldr r1, _08049818 @ =0x06010020
- adds r0, r4, r1
- adds r1, r6, 0
- movs r2, 0x7
- bl sub_804A6E8
-_08049804:
- ldr r0, [sp, 0xC]
- bl sub_804A6D8
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08049818: .4byte 0x06010020
- thumb_func_end sub_80496C0
-
- thumb_func_start sub_804981C
-sub_804981C: @ 804981C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r0, _080498DC @ =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, _080498E0 @ =0x00010210
- ands r0, r1
- cmp r0, 0
- bne _0804991C
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- bne _0804991C
- ldr r0, _080498E4 @ =gSprites
- mov r9, r0
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- add r0, r9
- mov r8, r0
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _0804991C
- ldr r1, _080498E8 @ =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r5, r0, r1
- ldrh r0, [r5]
- movs r7, 0x64
- muls r0, r7
- ldr r6, _080498EC @ =gEnemyParty
- adds r0, r6
- adds r1, r4, 0
- bl CheckBattleTypeGhost
- lsls r0, 24
- cmp r0, 0
- bne _0804991C
- ldrh r0, [r5]
- muls r0, r7
- adds r0, r6
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _0804991C
- mov r1, r8
- ldrh r0, [r1, 0x38]
- lsls r0, 24
- lsrs r4, r0, 24
- mov r2, r10
- cmp r2, 0
- beq _080498F8
- movs r0, 0x46
- bl GetHealthboxElementGfxPtr
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r9
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2
- ldr r2, _080498F0 @ =0x06010000
- adds r1, r2
- ldr r2, _080498F4 @ =0x04000008
- bl CpuSet
- b _0804991C
- .align 2, 0
-_080498DC: .4byte gBattleTypeFlags
-_080498E0: .4byte 0x00010210
-_080498E4: .4byte gSprites
-_080498E8: .4byte gBattlerPartyIndexes
-_080498EC: .4byte gEnemyParty
-_080498F0: .4byte 0x06010000
-_080498F4: .4byte 0x04000008
-_080498F8:
- mov r0, r10
- str r0, [sp]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- add r0, r9
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2
- ldr r0, _0804992C @ =0x06010000
- adds r1, r0
- ldr r2, _08049930 @ =0x05000008
- mov r0, sp
- bl CpuSet
-_0804991C:
- 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
-_0804992C: .4byte 0x06010000
-_08049930: .4byte 0x05000008
- thumb_func_end sub_804981C
-
- thumb_func_start UpdateStatusIconInHealthbox
-UpdateStatusIconInHealthbox: @ 8049934
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _08049998 @ =gSprites
- mov r2, r9
- lsls r1, r2, 4
- add r1, r9
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x3A]
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r1, 0x38]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080499A4
- ldr r1, _0804999C @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080499A0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x37
- bl GetMonData
- adds r4, r0, 0
- bl IsDoubleBattle
- lsls r0, 24
- movs r3, 0x12
- mov r8, r3
- cmp r0, 0
- bne _080499C0
- movs r0, 0x1A
- mov r8, r0
- b _080499C0
- .align 2, 0
-_08049998: .4byte gSprites
-_0804999C: .4byte gBattlerPartyIndexes
-_080499A0: .4byte gPlayerParty
-_080499A4:
- ldr r1, _080499E0 @ =gBattlerPartyIndexes
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080499E4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x37
- bl GetMonData
- adds r4, r0, 0
- movs r1, 0x11
- mov r8, r1
-_080499C0:
- movs r0, 0x7
- ands r0, r4
- cmp r0, 0
- beq _080499E8
- movs r0, 0x1B
- adds r1, r7, 0
- bl GetStatusIconForBankId
- lsls r0, 24
- lsrs r0, 24
- bl GetHealthboxElementGfxPtr
- adds r6, r0, 0
- movs r0, 0x2
- b _08049AF4
- .align 2, 0
-_080499E0: .4byte gBattlerPartyIndexes
-_080499E4: .4byte gEnemyParty
-_080499E8:
- movs r0, 0x88
- ands r0, r4
- cmp r0, 0
- beq _08049A06
- movs r0, 0x15
- adds r1, r7, 0
- bl GetStatusIconForBankId
- lsls r0, 24
- lsrs r0, 24
- bl GetHealthboxElementGfxPtr
- adds r6, r0, 0
- movs r0, 0
- b _08049AF4
-_08049A06:
- movs r0, 0x10
- ands r0, r4
- cmp r0, 0
- beq _08049A24
- movs r0, 0x21
- adds r1, r7, 0
- bl GetStatusIconForBankId
- lsls r0, 24
- lsrs r0, 24
- bl GetHealthboxElementGfxPtr
- adds r6, r0, 0
- movs r0, 0x4
- b _08049AF4
-_08049A24:
- movs r0, 0x20
- ands r0, r4
- cmp r0, 0
- beq _08049A42
- movs r0, 0x1E
- adds r1, r7, 0
- bl GetStatusIconForBankId
- lsls r0, 24
- lsrs r0, 24
- bl GetHealthboxElementGfxPtr
- adds r6, r0, 0
- movs r0, 0x3
- b _08049AF4
-_08049A42:
- movs r0, 0x40
- ands r0, r4
- cmp r0, 0
- beq _08049A60
- movs r0, 0x18
- adds r1, r7, 0
- bl GetStatusIconForBankId
- lsls r0, 24
- lsrs r0, 24
- bl GetHealthboxElementGfxPtr
- adds r6, r0, 0
- movs r0, 0x1
- b _08049AF4
-_08049A60:
- movs r0, 0x27
- bl GetHealthboxElementGfxPtr
- adds r6, r0, 0
- movs r4, 0
- mov r2, r9
- lsls r0, r2, 4
- mov r3, r8
- lsls r3, 16
- mov r8, r3
- lsls r7, 2
- ldr r1, _08049AE0 @ =gSprites
- add r0, r9
- lsls r0, 2
- adds r5, r0, r1
-_08049A7E:
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- mov r2, r8
- asrs r0, r2, 16
- adds r1, r0
- adds r1, r4
- lsls r1, 5
- ldr r3, _08049AE4 @ =0x06010000
- adds r1, r3
- adds r0, r6, 0
- ldr r2, _08049AE8 @ =0x04000008
- bl CpuSet
- adds r4, 0x1
- cmp r4, 0x2
- ble _08049A7E
- ldr r0, _08049AEC @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, r7, r0
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08049AD4
- movs r0, 0x1
- bl GetHealthboxElementGfxPtr
- ldr r2, _08049AE0 @ =gSprites
- mov r3, r10
- lsls r1, r3, 4
- add r1, r10
- lsls r1, 2
- adds r1, r2
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, _08049AE4 @ =0x06010000
- adds r1, r2
- ldr r2, _08049AF0 @ =0x04000010
- bl CpuSet
-_08049AD4:
- mov r0, r9
- movs r1, 0x1
- bl sub_804981C
- b _08049BB6
- .align 2, 0
-_08049AE0: .4byte gSprites
-_08049AE4: .4byte 0x06010000
-_08049AE8: .4byte 0x04000008
-_08049AEC: .4byte gBattleSpritesDataPtr
-_08049AF0: .4byte 0x04000010
-_08049AF4:
- mov r1, r9
- lsls r5, r1, 4
- add r5, r9
- lsls r5, 2
- ldr r2, _08049BC4 @ =gSprites
- adds r5, r2
- ldrb r4, [r5, 0x5]
- lsrs r4, 4
- lsls r4, 4
- adds r4, 0xC
- adds r4, r7
- ldr r1, _08049BC8 @ =gUnknown_826055A
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- movs r3, 0x80
- lsls r3, 1
- adds r1, r4, r3
- movs r2, 0x2
- bl FillPalette
- lsls r4, 1
- ldr r0, _08049BCC @ =gPlttBufferUnfaded + 0x200
- adds r0, r4, r0
- ldr r1, _08049BD0 @ =0x05000200
- adds r4, r1
- adds r1, r4, 0
- movs r2, 0x1
- bl CpuSet
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- add r1, r8
- lsls r1, 5
- ldr r2, _08049BD4 @ =0x06010000
- mov r8, r2
- add r1, r8
- ldr r2, _08049BD8 @ =0x04000018
- adds r0, r6, 0
- bl CpuSet
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08049B62
- adds r0, r7, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08049BAE
-_08049B62:
- ldr r0, _08049BDC @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r7, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08049BAE
- movs r0, 0
- bl GetHealthboxElementGfxPtr
- mov r3, r10
- lsls r4, r3, 4
- add r4, r10
- lsls r4, 2
- ldr r1, _08049BC4 @ =gSprites
- adds r4, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- add r1, r8
- ldr r5, _08049BE0 @ =0x04000008
- adds r2, r5, 0
- bl CpuSet
- movs r0, 0x41
- bl GetHealthboxElementGfxPtr
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, 0x20
- add r1, r8
- adds r2, r5, 0
- bl CpuSet
-_08049BAE:
- mov r0, r9
- movs r1, 0
- bl sub_804981C
-_08049BB6:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08049BC4: .4byte gSprites
-_08049BC8: .4byte gUnknown_826055A
-_08049BCC: .4byte gPlttBufferUnfaded + 0x200
-_08049BD0: .4byte 0x05000200
-_08049BD4: .4byte 0x06010000
-_08049BD8: .4byte 0x04000018
-_08049BDC: .4byte gBattleSpritesDataPtr
-_08049BE0: .4byte 0x04000008
- thumb_func_end UpdateStatusIconInHealthbox
-
- thumb_func_start GetStatusIconForBankId
-GetStatusIconForBankId: @ 8049BE4
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsrs r2, r0, 24
- adds r0, r2, 0
- subs r0, 0x15
- cmp r0, 0xC
- bhi _08049CA4
- lsls r0, 2
- ldr r1, _08049C00 @ =_08049C04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08049C00: .4byte _08049C04
- .align 2, 0
-_08049C04:
- .4byte _08049C38
- .4byte _08049CA4
- .4byte _08049CA4
- .4byte _08049C4E
- .4byte _08049CA4
- .4byte _08049CA4
- .4byte _08049C64
- .4byte _08049CA4
- .4byte _08049CA4
- .4byte _08049C7A
- .4byte _08049CA4
- .4byte _08049CA4
- .4byte _08049C90
-_08049C38:
- movs r2, 0x15
- cmp r3, 0
- beq _08049CA4
- movs r2, 0x47
- cmp r3, 0x1
- beq _08049CA4
- movs r2, 0x65
- cmp r3, 0x2
- bne _08049CA4
- movs r2, 0x56
- b _08049CA4
-_08049C4E:
- movs r2, 0x18
- cmp r3, 0
- beq _08049CA4
- movs r2, 0x4A
- cmp r3, 0x1
- beq _08049CA4
- movs r2, 0x68
- cmp r3, 0x2
- bne _08049CA4
- movs r2, 0x59
- b _08049CA4
-_08049C64:
- movs r2, 0x1B
- cmp r3, 0
- beq _08049CA4
- movs r2, 0x4D
- cmp r3, 0x1
- beq _08049CA4
- movs r2, 0x6B
- cmp r3, 0x2
- bne _08049CA4
- movs r2, 0x5C
- b _08049CA4
-_08049C7A:
- movs r2, 0x1E
- cmp r3, 0
- beq _08049CA4
- movs r2, 0x50
- cmp r3, 0x1
- beq _08049CA4
- movs r2, 0x6E
- cmp r3, 0x2
- bne _08049CA4
- movs r2, 0x5F
- b _08049CA4
-_08049C90:
- movs r2, 0x21
- cmp r3, 0
- beq _08049CA4
- movs r2, 0x53
- cmp r3, 0x1
- beq _08049CA4
- movs r2, 0x71
- cmp r3, 0x2
- bne _08049CA4
- movs r2, 0x62
-_08049CA4:
- adds r0, r2, 0
- pop {r1}
- bx r1
- thumb_func_end GetStatusIconForBankId
-
- thumb_func_start UpdateSafariBallsTextOnHealthbox
-UpdateSafariBallsTextOnHealthbox: @ 8049CAC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08049D00 @ =gUnknown_83FE80C
- movs r1, 0
- movs r2, 0x3
- mov r3, sp
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r5, r0, 0
- ldr r1, _08049D04 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r4, [r0, 0x4]
- lsls r4, 22
- lsrs r4, 17
- ldr r1, _08049D08 @ =0x06010040
- adds r0, r4, r1
- adds r1, r5, 0
- movs r2, 0x6
- bl sub_804A6E8
- ldr r0, _08049D0C @ =0x06010800
- adds r4, r0
- adds r5, 0xC0
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl sub_804A6E8
- ldr r0, [sp]
- bl sub_804A6D8
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08049D00: .4byte gUnknown_83FE80C
-_08049D04: .4byte gSprites
-_08049D08: .4byte 0x06010040
-_08049D0C: .4byte 0x06010800
- thumb_func_end UpdateSafariBallsTextOnHealthbox
-
- thumb_func_start UpdateLeftNoOfBallsTextOnHealthbox
-UpdateLeftNoOfBallsTextOnHealthbox: @ 8049D10
- push {r4,r5,lr}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08049D84 @ =gText_HighlightRed_Left
- mov r0, sp
- bl StringCopy
- ldr r1, _08049D88 @ =gNumSafariBalls
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r0, 0
- mov r1, sp
- movs r2, 0
- bl GetStringWidth
- movs r1, 0x2F
- subs r1, r0
- add r3, sp, 0x10
- mov r0, sp
- movs r2, 0x3
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r5, r0, 0
- ldr r1, _08049D8C @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r4, [r0, 0x4]
- lsls r4, 22
- lsrs r4, 17
- ldr r1, _08049D90 @ =0x060102c0
- adds r0, r4, r1
- adds r1, r5, 0
- movs r2, 0x2
- bl sub_804A734
- ldr r0, _08049D94 @ =0x06010a00
- adds r4, r0
- adds r5, 0x40
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x4
- bl sub_804A734
- ldr r0, [sp, 0x10]
- bl sub_804A6D8
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08049D84: .4byte gText_HighlightRed_Left
-_08049D88: .4byte gNumSafariBalls
-_08049D8C: .4byte gSprites
-_08049D90: .4byte 0x060102c0
-_08049D94: .4byte 0x06010a00
- thumb_func_end UpdateLeftNoOfBallsTextOnHealthbox
-
- thumb_func_start UpdateHealthboxAttribute
-UpdateHealthboxAttribute: @ 8049D98
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r8, r1
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r1, _08049F44 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r7, 0
- bne _08049DD4
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08049DD4
- mov r0, r9
- bl GetBattlerSide
-_08049DD4:
- ldr r1, _08049F44 @ =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- beq _08049DF0
- b _08049F50
-_08049DF0:
- cmp r7, 0x3
- beq _08049DF8
- cmp r7, 0
- bne _08049E0C
-_08049DF8:
- mov r0, r8
- movs r1, 0x38
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl UpdateLvlInHealthbox
-_08049E0C:
- cmp r7, 0x1
- bhi _08049E26
- mov r0, r8
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r6, 0
- movs r2, 0
- bl UpdateHpTextInHealthbox
-_08049E26:
- cmp r7, 0x2
- beq _08049E2E
- cmp r7, 0
- bne _08049E44
-_08049E2E:
- mov r0, r8
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r6, 0
- movs r2, 0x1
- bl UpdateHpTextInHealthbox
-_08049E44:
- cmp r7, 0x5
- beq _08049E4C
- cmp r7, 0
- bne _08049E80
-_08049E4C:
- movs r0, 0
- bl LoadBattleBarGfx
- mov r0, r8
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- mov r0, r8
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- movs r0, 0
- str r0, [sp]
- mov r0, r9
- adds r1, r6, 0
- adds r2, r4, 0
- bl SetBattleBarStruct
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl MoveBattleBar
-_08049E80:
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0
- bne _08049F06
- cmp r7, 0x6
- beq _08049E96
- cmp r7, 0
- bne _08049F06
-_08049E96:
- movs r0, 0x3
- bl LoadBattleBarGfx
- mov r0, r8
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r0, r8
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- movs r1, 0x19
- bl GetMonData
- adds r3, r0, 0
- ldr r0, _08049F48 @ =gExperienceTables
- mov r12, r0
- lsls r1, r4, 2
- ldr r2, _08049F4C @ =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r2
- adds r1, r0
- add r1, r12
- ldr r1, [r1]
- subs r3, r1
- adds r4, 0x1
- lsls r4, 2
- adds r4, r0
- add r4, r12
- ldr r2, [r4]
- subs r2, r1
- mov r0, r10
- str r0, [sp]
- mov r0, r9
- adds r1, r6, 0
- bl SetBattleBarStruct
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0x1
- movs r3, 0
- bl MoveBattleBar
-_08049F06:
- cmp r7, 0x4
- beq _08049F0E
- cmp r7, 0
- bne _08049F16
-_08049F0E:
- adds r0, r6, 0
- mov r1, r8
- bl sub_80496C0
-_08049F16:
- cmp r7, 0x9
- beq _08049F1E
- cmp r7, 0
- bne _08049F24
-_08049F1E:
- adds r0, r6, 0
- bl UpdateStatusIconInHealthbox
-_08049F24:
- cmp r7, 0xA
- bne _08049F2E
- adds r0, r6, 0
- bl UpdateSafariBallsTextOnHealthbox
-_08049F2E:
- adds r0, r7, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08049FC6
- adds r0, r6, 0
- bl UpdateLeftNoOfBallsTextOnHealthbox
- b _08049FC6
- .align 2, 0
-_08049F44: .4byte gSprites
-_08049F48: .4byte gExperienceTables
-_08049F4C: .4byte gBaseStats
-_08049F50:
- cmp r7, 0x3
- beq _08049F58
- cmp r7, 0
- bne _08049F6C
-_08049F58:
- mov r0, r8
- movs r1, 0x38
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl UpdateLvlInHealthbox
-_08049F6C:
- cmp r7, 0x5
- beq _08049F74
- cmp r7, 0
- bne _08049FA8
-_08049F74:
- movs r0, 0
- bl LoadBattleBarGfx
- mov r0, r8
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- mov r0, r8
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- movs r0, 0
- str r0, [sp]
- mov r0, r9
- adds r1, r6, 0
- adds r2, r4, 0
- bl SetBattleBarStruct
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl MoveBattleBar
-_08049FA8:
- cmp r7, 0x4
- beq _08049FB0
- cmp r7, 0
- bne _08049FB8
-_08049FB0:
- adds r0, r6, 0
- mov r1, r8
- bl sub_80496C0
-_08049FB8:
- cmp r7, 0x9
- beq _08049FC0
- cmp r7, 0
- bne _08049FC6
-_08049FC0:
- adds r0, r6, 0
- bl UpdateStatusIconInHealthbox
-_08049FC6:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end UpdateHealthboxAttribute
-
- thumb_func_start MoveBattleBar
-MoveBattleBar: @ 8049FD8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- cmp r2, 0
- bne _0804A024
- ldr r0, _0804A020 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- mov r1, r8
- lsls r5, r1, 2
- adds r3, r5, r1
- lsls r3, 2
- adds r3, r0
- ldr r0, [r3, 0x4]
- ldr r1, [r3, 0x8]
- ldr r2, [r3, 0xC]
- adds r3, 0x10
- movs r4, 0x6
- str r4, [sp]
- movs r4, 0x1
- str r4, [sp, 0x4]
- bl sub_804A2F0
- adds r4, r0, 0
- adds r7, r5, 0
- b _0804A080
- .align 2, 0
-_0804A020: .4byte gBattleSpritesDataPtr
-_0804A024:
- ldr r2, _0804A0D0 @ =gBattleSpritesDataPtr
- mov r10, r2
- ldr r0, [r2]
- ldr r2, [r0, 0xC]
- mov r0, r8
- lsls r4, r0, 2
- adds r0, r4, r0
- lsls r6, r0, 2
- adds r2, r6, r2
- ldr r0, [r2, 0x8]
- ldr r1, [r2, 0xC]
- ldr r2, [r2, 0x4]
- movs r3, 0x8
- bl GetScaledExpFraction
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r4, 0
- cmp r5, 0
- bne _0804A04E
- movs r5, 0x1
-_0804A04E:
- mov r1, r10
- ldr r0, [r1]
- ldr r0, [r0, 0xC]
- adds r4, r6, r0
- ldr r6, [r4, 0xC]
- adds r0, r6, 0
- adds r1, r5, 0
- bl __divsi3
- cmp r0, 0
- bge _0804A066
- negs r0, r0
-_0804A066:
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [r4, 0x4]
- ldr r1, [r4, 0x8]
- adds r3, r4, 0
- adds r3, 0x10
- movs r2, 0x8
- str r2, [sp]
- str r5, [sp, 0x4]
- adds r2, r6, 0
- bl sub_804A2F0
- adds r4, r0, 0
-_0804A080:
- mov r2, r9
- cmp r2, 0x1
- beq _0804A09C
- cmp r2, 0
- bne _0804A0A4
- ldr r0, _0804A0D0 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, r7, r0
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0804A0A4
-_0804A09C:
- mov r0, r8
- mov r1, r9
- bl sub_804A0D4
-_0804A0A4:
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- bne _0804A0BE
- ldr r0, _0804A0D0 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0xC]
- mov r2, r8
- adds r0, r7, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- str r1, [r0, 0x10]
-_0804A0BE:
- adds r0, r4, 0
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0804A0D0: .4byte gBattleSpritesDataPtr
- thumb_func_end MoveBattleBar
-
- thumb_func_start sub_804A0D4
-sub_804A0D4: @ 804A0D4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _0804A0F0
- cmp r1, 0x1
- beq _0804A1D8
- b _0804A2D6
-_0804A0F0:
- ldr r0, _0804A184 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- lsls r5, r6, 2
- adds r3, r5, r6
- lsls r3, 2
- adds r3, r0
- ldr r0, [r3, 0x4]
- ldr r1, [r3, 0x8]
- ldr r2, [r3, 0xC]
- adds r3, 0x10
- add r4, sp, 0x8
- str r4, [sp]
- movs r4, 0x6
- str r4, [sp, 0x4]
- bl sub_804A3C4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- mov r9, r1
- adds r7, r5, 0
- cmp r0, 0x18
- bhi _0804A12C
- movs r2, 0x38
- mov r9, r2
- cmp r0, 0x9
- bls _0804A12C
- movs r4, 0x2F
- mov r9, r4
-_0804A12C:
- movs r5, 0
- ldr r0, _0804A188 @ =gSprites
- mov r8, r0
-_0804A132:
- ldr r0, _0804A184 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0, 0xC]
- adds r0, r7, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrh r0, [r0, 0x38]
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r5, 0x1
- bhi _0804A194
- mov r0, r9
- bl GetHealthboxElementGfxPtr
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r5, 0x2
- adds r1, r2
- lsls r1, 5
- ldr r2, _0804A18C @ =0x06010000
- adds r1, r2
- ldr r2, _0804A190 @ =0x04000008
- bl CpuSet
- b _0804A1C2
- .align 2, 0
-_0804A184: .4byte gBattleSpritesDataPtr
-_0804A188: .4byte gSprites
-_0804A18C: .4byte 0x06010000
-_0804A190: .4byte 0x04000008
-_0804A194:
- mov r0, r9
- bl GetHealthboxElementGfxPtr
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r5, r1
- lsls r1, 5
- ldr r4, _0804A1D0 @ =0x06010040
- adds r1, r4
- ldr r2, _0804A1D4 @ =0x04000008
- bl CpuSet
-_0804A1C2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0804A132
- b _0804A2D6
- .align 2, 0
-_0804A1D0: .4byte 0x06010040
-_0804A1D4: .4byte 0x04000008
-_0804A1D8:
- ldr r0, _0804A27C @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- lsls r5, r6, 2
- adds r3, r5, r6
- lsls r3, 2
- adds r3, r0
- ldr r0, [r3, 0x4]
- ldr r1, [r3, 0x8]
- ldr r2, [r3, 0xC]
- adds r3, 0x10
- add r4, sp, 0x8
- str r4, [sp]
- movs r4, 0x8
- str r4, [sp, 0x4]
- bl sub_804A3C4
- ldr r1, _0804A280 @ =gBattlerPartyIndexes
- lsls r0, r6, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0804A284 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- adds r7, r5, 0
- cmp r0, 0x64
- bne _0804A230
- movs r5, 0
- movs r1, 0
-_0804A21E:
- mov r0, sp
- adds r0, r5
- adds r0, 0x8
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _0804A21E
-_0804A230:
- movs r5, 0
- ldr r0, _0804A288 @ =gSprites
- mov r8, r0
- adds r0, r7, r6
- lsls r4, r0, 2
-_0804A23A:
- cmp r5, 0x3
- bhi _0804A294
- movs r0, 0xC
- bl GetHealthboxElementGfxPtr
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804A27C @ =gBattleSpritesDataPtr
- ldr r1, [r1]
- ldr r1, [r1, 0xC]
- adds r1, r4, r1
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r5, 0
- adds r2, 0x24
- adds r1, r2
- lsls r1, 5
- ldr r2, _0804A28C @ =0x06010000
- adds r1, r2
- ldr r2, _0804A290 @ =0x04000008
- bl CpuSet
- b _0804A2CC
- .align 2, 0
-_0804A27C: .4byte gBattleSpritesDataPtr
-_0804A280: .4byte gBattlerPartyIndexes
-_0804A284: .4byte gPlayerParty
-_0804A288: .4byte gSprites
-_0804A28C: .4byte 0x06010000
-_0804A290: .4byte 0x04000008
-_0804A294:
- movs r0, 0xC
- bl GetHealthboxElementGfxPtr
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804A2E4 @ =gBattleSpritesDataPtr
- ldr r1, [r1]
- ldr r1, [r1, 0xC]
- adds r1, r4, r1
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r5, r1
- lsls r1, 5
- ldr r2, _0804A2E8 @ =0x06010b80
- adds r1, r2
- ldr r2, _0804A2EC @ =0x04000008
- bl CpuSet
-_0804A2CC:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _0804A23A
-_0804A2D6:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A2E4: .4byte gBattleSpritesDataPtr
-_0804A2E8: .4byte 0x06010b80
-_0804A2EC: .4byte 0x04000008
- thumb_func_end sub_804A0D4
-
- thumb_func_start sub_804A2F0
-sub_804A2F0: @ 804A2F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r4, r1, 0
- mov r8, r2
- adds r5, r3, 0
- ldr r1, [sp, 0x18]
- ldr r0, [sp, 0x1C]
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 27
- lsrs r2, r1, 24
- ldr r1, [r5]
- ldr r0, _0804A31C @ =0xffff8000
- cmp r1, r0
- bne _0804A322
- cmp r7, r2
- bge _0804A320
- lsls r0, r4, 8
- str r0, [r5]
- b _0804A322
- .align 2, 0
-_0804A31C: .4byte 0xffff8000
-_0804A320:
- str r4, [r5]
-_0804A322:
- mov r0, r8
- subs r4, r0
- cmp r4, 0
- bge _0804A32E
- movs r4, 0
- b _0804A334
-_0804A32E:
- cmp r4, r7
- ble _0804A334
- adds r4, r7, 0
-_0804A334:
- cmp r7, r2
- bge _0804A350
- ldr r0, [r5]
- asrs r1, r0, 8
- adds r6, r0, 0
- cmp r4, r1
- bne _0804A35C
- movs r0, 0xFF
- ands r0, r6
- cmp r0, 0
- bne _0804A35C
- movs r0, 0x1
- negs r0, r0
- b _0804A3B8
-_0804A350:
- ldr r6, [r5]
- cmp r4, r6
- bne _0804A35C
- movs r0, 0x1
- negs r0, r0
- b _0804A3B8
-_0804A35C:
- cmp r7, r2
- bge _0804A396
- lsls r0, r7, 8
- adds r1, r2, 0
- bl __divsi3
- mov r1, r8
- cmp r1, 0
- bge _0804A37A
- adds r0, r6, r0
- str r0, [r5]
- asrs r2, r0, 8
- cmp r2, r4
- blt _0804A3B6
- b _0804A38E
-_0804A37A:
- subs r0, r6, r0
- str r0, [r5]
- asrs r2, r0, 8
- movs r1, 0xFF
- ands r0, r1
- cmp r0, 0
- ble _0804A38A
- adds r2, 0x1
-_0804A38A:
- cmp r2, r4
- bgt _0804A3B6
-_0804A38E:
- lsls r0, r4, 8
- str r0, [r5]
- adds r2, r4, 0
- b _0804A3B6
-_0804A396:
- mov r0, r8
- cmp r0, 0
- bge _0804A3A8
- ldr r0, [r5]
- adds r0, r3
- str r0, [r5]
- cmp r0, r4
- ble _0804A3B4
- b _0804A3B2
-_0804A3A8:
- ldr r0, [r5]
- subs r0, r3
- str r0, [r5]
- cmp r0, r4
- bge _0804A3B4
-_0804A3B2:
- str r4, [r5]
-_0804A3B4:
- ldr r2, [r5]
-_0804A3B6:
- adds r0, r2, 0
-_0804A3B8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804A2F0
-
- thumb_func_start sub_804A3C4
-sub_804A3C4: @ 804A3C4
- push {r4-r7,lr}
- adds r4, r0, 0
- mov r12, r3
- ldr r7, [sp, 0x14]
- ldr r0, [sp, 0x18]
- lsls r0, 24
- lsrs r6, r0, 24
- subs r5, r1, r2
- cmp r5, 0
- bge _0804A3DC
- movs r5, 0
- b _0804A3E2
-_0804A3DC:
- cmp r5, r4
- ble _0804A3E2
- adds r5, r4, 0
-_0804A3E2:
- lsls r0, r6, 27
- lsrs r3, r0, 24
- movs r1, 0
- cmp r1, r6
- bcs _0804A3FC
- movs r2, 0
-_0804A3EE:
- adds r0, r7, r1
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcc _0804A3EE
-_0804A3FC:
- cmp r4, r3
- bge _0804A410
- mov r1, r12
- ldr r0, [r1]
- muls r0, r3
- adds r1, r4, 0
- bl __divsi3
- asrs r0, 8
- b _0804A41C
-_0804A410:
- mov r1, r12
- ldr r0, [r1]
- muls r0, r3
- adds r1, r4, 0
- bl __divsi3
-_0804A41C:
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- cmp r3, 0
- bne _0804A432
- cmp r5, 0
- ble _0804A432
- movs r0, 0x1
- strb r0, [r7]
- movs r3, 0x1
- b _0804A456
-_0804A432:
- movs r1, 0
- movs r4, 0x8
-_0804A436:
- cmp r1, r6
- bcs _0804A456
- cmp r2, 0x7
- bls _0804A452
- adds r0, r7, r1
- strb r4, [r0]
- adds r0, r2, 0
- subs r0, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- b _0804A436
-_0804A452:
- adds r0, r7, r1
- strb r2, [r0]
-_0804A456:
- adds r0, r3, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804A3C4
-
- thumb_func_start sub_804A460
-sub_804A460: @ 804A460
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x8
- mov r9, r0
- mov r10, r1
- adds r6, r2, 0
- mov r8, r3
- ldr r5, [sp, 0x24]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r5, 24
- lsrs r5, 24
- mov r1, r9
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- mov r3, r9
- ldr r2, [r3, 0x8]
- movs r3, 0x6
- str r3, [sp]
- movs r3, 0x1
- str r3, [sp, 0x4]
- mov r3, r10
- bl sub_804A2F0
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- str r5, [sp]
- mov r0, r9
- mov r1, r10
- adds r2, r6, 0
- mov r3, r8
- bl sub_804A510
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_804A460
-
- thumb_func_start sub_804A4C8
-sub_804A4C8: @ 804A4C8
- push {r4,lr}
- sub sp, 0x8
- adds r3, r1, 0
- ldr r4, [r0]
- ldr r1, [r0, 0x4]
- ldr r2, [r0, 0x8]
- movs r0, 0x6
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- adds r0, r4, 0
- bl sub_804A2F0
- lsls r0, 16
- asrs r0, 16
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_804A4C8
-
- thumb_func_start sub_804A4F0
-sub_804A4F0: @ 804A4F0
- push {r4,lr}
- sub sp, 0x4
- ldr r4, [sp, 0xC]
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- bl sub_804A510
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804A4F0
-
- thumb_func_start sub_804A510
-sub_804A510: @ 804A510
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, [sp, 0x40]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- ldr r2, [r4, 0x8]
- add r3, sp, 0xC
- str r3, [sp]
- movs r3, 0x6
- str r3, [sp, 0x4]
- adds r3, r5, 0
- bl sub_804A3C4
- movs r3, 0
- add r6, sp, 0x14
- adds r7, r6, 0
- ldrb r0, [r4, 0xC]
- lsls r5, r0, 27
- ldr r4, [r4, 0x10]
-_0804A554:
- lsls r2, r3, 1
- adds r2, r7, r2
- lsrs r1, r5, 15
- mov r0, sp
- adds r0, r3
- adds r0, 0xC
- ldrb r0, [r0]
- adds r0, r4, r0
- orrs r1, r0
- strh r1, [r2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- bls _0804A554
- movs r0, 0x6
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- mov r0, r9
- adds r1, r6, 0
- mov r2, r10
- mov r3, r8
- bl CopyToBgTilemapBufferRect_ChangePalette
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_804A510
-
- thumb_func_start GetScaledExpFraction
-GetScaledExpFraction: @ 804A59C
- push {r4-r7,lr}
- adds r6, r2, 0
- lsls r3, 27
- lsrs r7, r3, 24
- subs r5, r0, r1
- cmp r5, 0
- bge _0804A5AE
- movs r5, 0
- b _0804A5B4
-_0804A5AE:
- cmp r5, r6
- ble _0804A5B4
- adds r5, r6, 0
-_0804A5B4:
- muls r0, r7
- adds r1, r6, 0
- bl __divsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- muls r0, r7
- adds r1, r6, 0
- bl __divsi3
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- subs r0, r4, r0
- cmp r0, 0
- bge _0804A5DC
- negs r0, r0
-_0804A5DC:
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end GetScaledExpFraction
-
- thumb_func_start GetScaledHPFraction
-GetScaledHPFraction: @ 804A5E8
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- muls r0, r2
- lsls r1, 16
- asrs r1, 16
- bl __divsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0804A60C
- cmp r4, 0
- ble _0804A60C
- movs r0, 0x1
-_0804A60C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetScaledHPFraction
-
- thumb_func_start GetHPBarLevel
-GetHPBarLevel: @ 804A614
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bne _0804A626
- movs r0, 0x4
- b _0804A642
-_0804A626:
- movs r2, 0x30
- bl GetScaledHPFraction
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x3
- cmp r1, 0x18
- bhi _0804A642
- movs r0, 0x2
- cmp r1, 0x9
- bhi _0804A642
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_0804A642:
- pop {r1}
- bx r1
- thumb_func_end GetHPBarLevel
-
- thumb_func_start AddTextPrinterAndCreateWindowOnHealthbox
-AddTextPrinterAndCreateWindowOnHealthbox: @ 804A648
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x20
- mov r9, r0
- adds r6, r1, 0
- mov r8, r2
- mov r10, r3
- ldr r0, _0804A6D4 @ =gUnknown_8260564
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- add r0, sp, 0x18
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, r4, 24
- lsrs r5, 24
- adds r0, r5, 0
- movs r1, 0x22
- bl FillWindowPixelBuffer
- add r1, sp, 0x14
- movs r2, 0
- movs r0, 0x2
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x3
- strb r0, [r1, 0x2]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- str r2, [sp]
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- mov r0, r9
- str r0, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r6, 0
- mov r3, r8
- bl AddTextPrinterParameterized4
- mov r0, r10
- str r4, [r0]
- adds r0, r5, 0
- movs r1, 0x7
- bl GetWindowAttribute
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0804A6D4: .4byte gUnknown_8260564
- thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox
-
- thumb_func_start sub_804A6D8
-sub_804A6D8: @ 804A6D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl RemoveWindow
- pop {r0}
- bx r0
- thumb_func_end sub_804A6D8
-
- thumb_func_start sub_804A6E8
-sub_804A6E8: @ 804A6E8
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- movs r1, 0x80
- lsls r1, 1
- adds r0, r5, r1
- adds r1, r6, r1
- lsls r2, r4, 3
- ldr r3, _0804A72C @ =0x001fffff
- ands r2, r3
- movs r3, 0x80
- lsls r3, 19
- orrs r2, r3
- bl CpuSet
- cmp r4, 0
- ble _0804A724
-_0804A70C:
- adds r0, r5, 0
- adds r0, 0x14
- adds r1, r6, 0
- adds r1, 0x14
- ldr r2, _0804A730 @ =0x04000003
- bl CpuSet
- adds r6, 0x20
- adds r5, 0x20
- subs r4, 0x1
- cmp r4, 0
- bne _0804A70C
-_0804A724:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A72C: .4byte 0x001fffff
-_0804A730: .4byte 0x04000003
- thumb_func_end sub_804A6E8
-
- thumb_func_start sub_804A734
-sub_804A734: @ 804A734
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r4, r2, 3
- ldr r0, _0804A768 @ =0x001fffff
- ands r4, r0
- movs r0, 0x80
- lsls r0, 19
- orrs r4, r0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl CpuSet
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0
- adds r6, r0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl CpuSet
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A768: .4byte 0x001fffff
- thumb_func_end sub_804A734
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/crt0.s b/asm/crt0.s
index 609845337..8530a76f5 100644
--- a/asm/crt0.s
+++ b/asm/crt0.s
@@ -1,4 +1,6 @@
.include "constants/gba_constants.inc"
+ .include "constants/misc_constants.inc"
+ .include "constants/version.inc"
.syntax unified
@@ -8,8 +10,8 @@
.arm
-Start: @ 8000000
- b Init
+_start: @ 8000000
+ b start_vector
.include "asm/rom_header.inc"
@@ -32,8 +34,6 @@ GPIOPortReadEnable: @ 80000C8
@ 80000D0
-@ TODO: figure out what this data is
-
.4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF
@@ -46,19 +46,21 @@ GPIOPortReadEnable: @ 80000C8
.4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF
+
+@ 8000100
+ .global CartIdent
+CartIdent:
+ .4byte GAME_VERSION
+ .4byte GAME_LANGUAGE
+.game_name:
.ifdef FIRERED
- .4byte 4
- .4byte 2
.ascii "pokemon red version"
- .space 13
.else
.ifdef LEAFGREEN
- .4byte 5
- .4byte 2
.ascii "pokemon green version"
- .space 11
.endif
.endif
+ .space .game_name+0x20-.
.4byte gMonFrontPicTable
.4byte gMonBackPicTable
.4byte gMonPaletteTable
@@ -118,32 +120,32 @@ GPIOPortReadEnable: @ 80000C8
.arm
.align 2, 0
- .global Init
-Init:
+ .global start_vector
+start_vector:
mov r0, PSR_IRQ_MODE
msr cpsr_cf, r0
ldr sp, sp_irq
mov r0, PSR_SYS_MODE
msr cpsr_cf, r0
- ldr sp, sp_sys
+ ldr sp, sp_usr
ldr r1, =INTR_VECTOR
- adr r0, IntrMain
+ adr r0, intr_main
str r0, [r1]
ldr r1, =AgbMain
mov lr, pc
bx r1
- b Init
+ b start_vector
.align 2, 0
-sp_sys: .word IWRAM_END - 0x1C0
+sp_usr: .word IWRAM_END - 0x1C0
sp_irq: .word IWRAM_END - 0x60
.pool
.arm
.align 2, 0
- .global IntrMain
-IntrMain:
+ .global intr_main
+intr_main:
mov r3, REG_BASE
add r3, r3, 0x200
ldr r2, [r3, OFFSET_REG_IE - 0x200]
@@ -155,56 +157,57 @@ IntrMain:
and r1, r2, r2, lsr 16
mov r12, 0
ands r0, r1, INTR_FLAG_VCOUNT
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
mov r0, 0x1
strh r0, [r3, OFFSET_REG_IME - 0x200]
ands r0, r1, INTR_FLAG_SERIAL
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER3
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_HBLANK
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_VBLANK
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER0
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER1
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_TIMER2
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA0
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA1
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA2
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_DMA3
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_KEYPAD
- bne IntrMain_FoundIntr
+ bne jump_intr
add r12, r12, 0x4
ands r0, r1, INTR_FLAG_GAMEPAK
strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200]
- bne . @ spin
-IntrMain_FoundIntr:
+loop:
+ bne loop @ spin
+jump_intr:
strh r0, [r3, OFFSET_REG_IF - 0x200]
bic r2, r2, r0
- ldr r0, =gRfuState
+ ldr r0, =gSTWIStatus
ldr r0, [r0]
ldrb r0, [r0, 0xA]
- mov r1, 0x8
+ mov r1, INTR_FLAG_TIMER0
mov r0, r1, lsl r0
orr r0, r0, INTR_FLAG_GAMEPAK
orr r1, r0, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK
@@ -218,9 +221,9 @@ IntrMain_FoundIntr:
add r1, r1, r12
ldr r0, [r1]
stmdb sp!, {lr}
- adr lr, IntrMain_RetAddr
+ adr lr, intr_return
bx r0
-IntrMain_RetAddr:
+intr_return:
ldmia sp!, {lr}
mrs r3, cpsr
bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK
diff --git a/asm/librfu.s b/asm/librfu.s
deleted file mode 100644
index 03bf3eeb8..000000000
--- a/asm/librfu.s
+++ /dev/null
@@ -1,6697 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81E05B0
-sub_81E05B0: @ 81E05B0
- push {r4-r7,lr}
- adds r4, r0, 0
- mov r12, r2
- lsls r1, 16
- lsrs r2, r1, 16
- lsls r3, 24
- lsrs r7, r3, 24
- movs r0, 0xF0
- lsls r0, 20
- ands r0, r4
- movs r1, 0x80
- lsls r1, 18
- cmp r0, r1
- bne _081E05D0
- cmp r7, 0
- bne _081E05D8
-_081E05D0:
- movs r0, 0x3
- ands r0, r4
- cmp r0, 0
- beq _081E05DC
-_081E05D8:
- movs r0, 0x2
- b _081E06C6
-_081E05DC:
- cmp r7, 0
- beq _081E05E8
- ldr r3, _081E05E4 @ =0x00000e64
- b _081E05EA
- .align 2, 0
-_081E05E4: .4byte 0x00000e64
-_081E05E8:
- ldr r3, _081E05F4 @ =0x00000504
-_081E05EA:
- cmp r2, r3
- bcs _081E05F8
- movs r0, 0x1
- b _081E06C6
- .align 2, 0
-_081E05F4: .4byte 0x00000504
-_081E05F8:
- ldr r0, _081E06CC @ =gUnknown_3007460
- str r4, [r0]
- ldr r1, _081E06D0 @ =gUnknown_3007464
- adds r0, r4, 0
- adds r0, 0xB4
- str r0, [r1]
- ldr r1, _081E06D4 @ =gUnknown_3007468
- adds r0, 0x28
- str r0, [r1]
- ldr r2, _081E06D8 @ =gUnknown_3007450
- movs r1, 0xDE
- lsls r1, 1
- adds r0, r4, r1
- str r0, [r2]
- ldr r1, _081E06DC @ =gUnknown_3007440
- movs r3, 0xDF
- lsls r3, 2
- adds r0, r4, r3
- str r0, [r1]
- movs r5, 0x1
- adds r6, r2, 0
- adds r4, r1, 0
-_081E0624:
- lsls r2, r5, 2
- adds r3, r2, r6
- subs r1, r5, 0x1
- lsls r1, 2
- adds r0, r1, r6
- ldr r0, [r0]
- adds r0, 0x70
- str r0, [r3]
- adds r2, r4
- adds r1, r4
- ldr r0, [r1]
- adds r0, 0x1C
- str r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _081E0624
- ldr r0, _081E06D4 @ =gUnknown_3007468
- ldr r1, [r0]
- adds r1, 0xDC
- ldr r4, _081E06DC @ =gUnknown_3007440
- ldr r0, [r4, 0xC]
- adds r0, 0x1C
- str r0, [r1]
- mov r1, r12
- adds r2, r7, 0
- bl STWI_init_all
- bl rfu_STC_clearAPIVariables
- movs r5, 0
- ldr r3, _081E06D8 @ =gUnknown_3007450
- movs r2, 0
-_081E0668:
- lsls r1, r5, 2
- adds r0, r1, r3
- ldr r0, [r0]
- str r2, [r0, 0x68]
- str r2, [r0, 0x6C]
- adds r1, r4
- ldr r0, [r1]
- str r2, [r0, 0x14]
- str r2, [r0, 0x18]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _081E0668
- ldr r1, _081E06E0 @ =sub_81E1B24
- movs r5, 0x2
- negs r5, r5
- ands r5, r1
- ldr r2, _081E06D4 @ =gUnknown_3007468
- ldr r0, [r2]
- adds r4, r0, 0
- adds r4, 0x8
- ldr r0, _081E06E4 @ =rfu_REQ_changeMasterSlave
- subs r0, r1
- lsls r0, 15
- lsrs r3, r0, 16
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, _081E06E8 @ =0x0000ffff
- cmp r3, r0
- beq _081E06BC
- adds r6, r0, 0
-_081E06AA:
- ldrh r0, [r5]
- strh r0, [r4]
- adds r5, 0x2
- adds r4, 0x2
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r6
- bne _081E06AA
-_081E06BC:
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x9
- str r0, [r1, 0x4]
- movs r0, 0
-_081E06C6:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081E06CC: .4byte gUnknown_3007460
-_081E06D0: .4byte gUnknown_3007464
-_081E06D4: .4byte gUnknown_3007468
-_081E06D8: .4byte gUnknown_3007450
-_081E06DC: .4byte gUnknown_3007440
-_081E06E0: .4byte sub_81E1B24
-_081E06E4: .4byte rfu_REQ_changeMasterSlave
-_081E06E8: .4byte 0x0000ffff
- thumb_func_end sub_81E05B0
-
- thumb_func_start rfu_STC_clearAPIVariables
-rfu_STC_clearAPIVariables: @ 81E06EC
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, _081E0760 @ =0x04000208
- ldrh r0, [r1]
- adds r7, r0, 0
- movs r6, 0
- strh r6, [r1]
- ldr r5, _081E0764 @ =gUnknown_3007464
- ldr r1, [r5]
- ldrb r4, [r1]
- mov r0, sp
- strh r6, [r0]
- ldr r2, _081E0768 @ =0x01000014
- bl CpuSet
- ldr r2, [r5]
- movs r0, 0x8
- ands r4, r0
- movs r1, 0
- strb r4, [r2]
- mov r0, sp
- adds r0, 0x2
- strh r1, [r0]
- ldr r4, _081E076C @ =gUnknown_3007460
- ldr r1, [r4]
- ldr r2, _081E0770 @ =0x0100005a
- bl CpuSet
- ldr r1, [r4]
- movs r0, 0x4
- strb r0, [r1, 0x9]
- ldr r0, [r5]
- strb r6, [r0, 0x6]
- ldr r1, [r4]
- movs r0, 0xFF
- strb r0, [r1]
- bl rfu_clearAllSlot
- ldr r0, [r5]
- strb r6, [r0, 0x9]
- movs r2, 0
- movs r3, 0
-_081E0740:
- ldr r0, [r5]
- lsls r1, r2, 1
- adds r0, 0x12
- adds r0, r1
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _081E0740
- ldr r0, _081E0760 @ =0x04000208
- strh r7, [r0]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E0760: .4byte 0x04000208
-_081E0764: .4byte gUnknown_3007464
-_081E0768: .4byte 0x01000014
-_081E076C: .4byte gUnknown_3007460
-_081E0770: .4byte 0x0100005a
- thumb_func_end rfu_STC_clearAPIVariables
-
- thumb_func_start rfu_REQ_PARENT_resumeRetransmitAndChange
-rfu_REQ_PARENT_resumeRetransmitAndChange: @ 81E0774
- push {lr}
- ldr r0, _081E0784 @ =rfu_STC_REQ_callback
- bl STWI_set_Callback_M
- bl STWI_send_ResumeRetransmitAndChangeREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0784: .4byte rfu_STC_REQ_callback
- thumb_func_end rfu_REQ_PARENT_resumeRetransmitAndChange
-
- thumb_func_start rfu_UNI_PARENT_getDRAC_ACK
-rfu_UNI_PARENT_getDRAC_ACK: @ 81E0788
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0
- strb r0, [r4]
- ldr r5, _081E07A0 @ =gUnknown_3007460
- ldr r0, [r5]
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081E07A4
- movs r0, 0xC0
- lsls r0, 2
- b _081E07CA
- .align 2, 0
-_081E07A0: .4byte gUnknown_3007460
-_081E07A4:
- bl rfu_getSTWIRecvBuffer
- adds r1, r0, 0
- ldrb r0, [r1]
- cmp r0, 0x28
- beq _081E07B4
- cmp r0, 0x36
- bne _081E07C8
-_081E07B4:
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _081E07C0
- ldr r0, [r5]
- ldrb r0, [r0, 0x2]
- b _081E07C2
-_081E07C0:
- ldrb r0, [r1, 0x4]
-_081E07C2:
- strb r0, [r4]
- movs r0, 0
- b _081E07CA
-_081E07C8:
- movs r0, 0x10
-_081E07CA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end rfu_UNI_PARENT_getDRAC_ACK
-
- thumb_func_start rfu_setTimerInterrupt
-rfu_setTimerInterrupt: @ 81E07D0
- push {lr}
- adds r2, r0, 0
- adds r0, r1, 0
- lsls r2, 24
- lsrs r2, 24
- adds r1, r2, 0
- bl STWI_init_timer
- pop {r0}
- bx r0
- thumb_func_end rfu_setTimerInterrupt
-
- thumb_func_start rfu_getSTWIRecvBuffer
-rfu_getSTWIRecvBuffer: @ 81E07E4
- ldr r0, _081E07F0 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_081E07F0: .4byte gUnknown_3007468
- thumb_func_end rfu_getSTWIRecvBuffer
-
- thumb_func_start rfu_setMSCCallback
-rfu_setMSCCallback: @ 81E07F4
- push {lr}
- bl STWI_set_Callback_S
- pop {r0}
- bx r0
- thumb_func_end rfu_setMSCCallback
-
- thumb_func_start rfu_setREQCallback
-rfu_setREQCallback: @ 81E0800
- push {lr}
- adds r1, r0, 0
- ldr r0, _081E0818 @ =gUnknown_3007468
- ldr r0, [r0]
- str r1, [r0]
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bl rfu_enableREQCallback
- pop {r0}
- bx r0
- .align 2, 0
-_081E0818: .4byte gUnknown_3007468
- thumb_func_end rfu_setREQCallback
-
- thumb_func_start rfu_enableREQCallback
-rfu_enableREQCallback: @ 81E081C
- push {lr}
- lsls r0, 24
- cmp r0, 0
- beq _081E0834
- ldr r0, _081E0830 @ =gUnknown_3007464
- ldr r2, [r0]
- ldrb r1, [r2]
- movs r0, 0x8
- orrs r0, r1
- b _081E083E
- .align 2, 0
-_081E0830: .4byte gUnknown_3007464
-_081E0834:
- ldr r0, _081E0844 @ =gUnknown_3007464
- ldr r2, [r0]
- ldrb r1, [r2]
- movs r0, 0xF7
- ands r0, r1
-_081E083E:
- strb r0, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_081E0844: .4byte gUnknown_3007464
- thumb_func_end rfu_enableREQCallback
-
- thumb_func_start rfu_STC_REQ_callback
-rfu_STC_REQ_callback: @ 81E0848
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r0, _081E087C @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- ldr r0, _081E0880 @ =gUnknown_3007464
- ldr r0, [r0]
- strh r4, [r0, 0x1C]
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _081E0876
- ldr r0, _081E0884 @ =gUnknown_3007468
- ldr r0, [r0]
- ldr r2, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl _call_via_r2
-_081E0876:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081E087C: .4byte rfu_CB_defaultCallback
-_081E0880: .4byte gUnknown_3007464
-_081E0884: .4byte gUnknown_3007468
- thumb_func_end rfu_STC_REQ_callback
-
- thumb_func_start rfu_CB_defaultCallback
-rfu_CB_defaultCallback: @ 81E0888
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r3, r1, 16
- cmp r0, 0xFF
- bne _081E08E4
- ldr r0, _081E08EC @ =gUnknown_3007464
- ldr r0, [r0]
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _081E08B2
- ldr r0, _081E08F0 @ =gUnknown_3007468
- ldr r0, [r0]
- ldr r2, [r0]
- movs r0, 0xFF
- adds r1, r3, 0
- bl _call_via_r2
-_081E08B2:
- ldr r0, _081E08F4 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- ldrb r0, [r0, 0x3]
- adds r5, r0, 0
- orrs r5, r1
- movs r4, 0
-_081E08C0:
- adds r0, r5, 0
- asrs r0, r4
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081E08D2
- adds r0, r4, 0
- bl rfu_STC_removeLinkData
-_081E08D2:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081E08C0
- ldr r0, _081E08F4 @ =gUnknown_3007460
- ldr r1, [r0]
- movs r0, 0xFF
- strb r0, [r1]
-_081E08E4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081E08EC: .4byte gUnknown_3007464
-_081E08F0: .4byte gUnknown_3007468
-_081E08F4: .4byte gUnknown_3007460
- thumb_func_end rfu_CB_defaultCallback
-
- thumb_func_start rfu_waitREQComplete
-rfu_waitREQComplete: @ 81E08F8
- push {lr}
- bl STWI_poll_CommandEnd
- ldr r0, _081E0908 @ =gUnknown_3007464
- ldr r0, [r0]
- ldrh r0, [r0, 0x1C]
- pop {r1}
- bx r1
- .align 2, 0
-_081E0908: .4byte gUnknown_3007464
- thumb_func_end rfu_waitREQComplete
-
- thumb_func_start rfu_REQ_RFUStatus
-rfu_REQ_RFUStatus: @ 81E090C
- push {lr}
- ldr r0, _081E091C @ =rfu_STC_REQ_callback
- bl STWI_set_Callback_M
- bl STWI_send_SystemStatusREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E091C: .4byte rfu_STC_REQ_callback
- thumb_func_end rfu_REQ_RFUStatus
-
- thumb_func_start rfu_getRFUStatus
-rfu_getRFUStatus: @ 81E0920
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _081E0938 @ =gUnknown_3007468
- ldr r0, [r5]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x93
- beq _081E093C
- movs r0, 0x10
- b _081E0956
- .align 2, 0
-_081E0938: .4byte gUnknown_3007468
-_081E093C:
- bl STWI_poll_CommandEnd
- lsls r0, 16
- cmp r0, 0
- bne _081E0950
- ldr r0, [r5]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- b _081E0952
-_081E0950:
- movs r0, 0xFF
-_081E0952:
- strb r0, [r4]
- movs r0, 0
-_081E0956:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end rfu_getRFUStatus
-
- thumb_func_start sub_81E095C
-sub_81E095C: @ 81E095C
- push {lr}
- ldr r2, _081E0964 @ =_Str_RFU_MBOOT
- ldr r3, _081E0968 @ =0x30000F0
- b _081E0976
- .align 2, 0
-_081E0964: .4byte _Str_RFU_MBOOT
-_081E0968: .4byte 0x30000F0
-_081E096C:
- ldrb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r1, r0
- bne _081E09CC
-_081E0976:
- ldrb r1, [r2]
- cmp r1, 0
- bne _081E096C
- movs r2, 0xC0
- lsls r2, 18
- movs r3, 0
- movs r1, 0
-_081E0984:
- ldrh r0, [r2]
- adds r0, r3, r0
- lsls r0, 16
- lsrs r3, r0, 16
- adds r2, 0x2
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x59
- bls _081E0984
- ldr r0, _081E09C0 @ =0x30000FA
- ldrh r0, [r0]
- cmp r3, r0
- bne _081E09CC
- movs r0, 0xC0
- lsls r0, 18
- ldr r1, _081E09C4 @ =gUnknown_3007460
- ldr r1, [r1]
- movs r2, 0x5A
- bl CpuSet
- ldr r0, _081E09C8 @ =gUnknown_3007464
- ldr r2, [r0]
- ldrb r1, [r2]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0
- b _081E09CE
- .align 2, 0
-_081E09C0: .4byte 0x30000FA
-_081E09C4: .4byte gUnknown_3007460
-_081E09C8: .4byte gUnknown_3007464
-_081E09CC:
- movs r0, 0x1
-_081E09CE:
- pop {r1}
- bx r1
- thumb_func_end sub_81E095C
-
- thumb_func_start rfu_REQ_stopMode
-rfu_REQ_stopMode: @ 81E09D4
- push {lr}
- ldr r0, _081E09F4 @ =0x04000208
- ldrh r0, [r0]
- cmp r0, 0
- bne _081E09FC
- movs r0, 0x3D
- movs r1, 0x6
- bl rfu_STC_REQ_callback
- ldr r0, _081E09F8 @ =gRfuState
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- movs r0, 0x6
- strh r0, [r1, 0x12]
- b _081E0A72
- .align 2, 0
-_081E09F4: .4byte 0x04000208
-_081E09F8: .4byte gRfuState
-_081E09FC:
- bl AgbRFU_SoftReset
- bl rfu_STC_clearAPIVariables
- movs r0, 0x8
- bl sub_81E349C
- ldr r1, _081E0A4C @ =0x00008001
- cmp r0, r1
- bne _081E0A60
- ldr r0, _081E0A50 @ =gRfuState
- ldr r0, [r0]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r2, _081E0A54 @ =0x04000100
- adds r1, r0, r2
- movs r0, 0
- str r0, [r1]
- movs r0, 0x83
- lsls r0, 16
- str r0, [r1]
- ldr r0, [r1]
- lsls r0, 16
- ldr r2, _081E0A58 @ =0x0105ffff
- ldr r3, _081E0A5C @ =rfu_CB_stopMode
- cmp r0, r2
- bhi _081E0A3A
-_081E0A32:
- ldr r0, [r1]
- lsls r0, 16
- cmp r0, r2
- bls _081E0A32
-_081E0A3A:
- movs r0, 0
- str r0, [r1]
- adds r0, r3, 0
- bl STWI_set_Callback_M
- bl STWI_send_StopModeREQ
- b _081E0A72
- .align 2, 0
-_081E0A4C: .4byte 0x00008001
-_081E0A50: .4byte gRfuState
-_081E0A54: .4byte 0x04000100
-_081E0A58: .4byte 0x0105ffff
-_081E0A5C: .4byte rfu_CB_stopMode
-_081E0A60:
- ldr r1, _081E0A78 @ =0x04000128
- movs r2, 0x80
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0x3D
- movs r1, 0
- bl rfu_STC_REQ_callback
-_081E0A72:
- pop {r0}
- bx r0
- .align 2, 0
-_081E0A78: .4byte 0x04000128
- thumb_func_end rfu_REQ_stopMode
-
- thumb_func_start rfu_CB_stopMode
-rfu_CB_stopMode: @ 81E0A7C
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r1, 16
- adds r2, r1, 0
- cmp r2, 0
- bne _081E0A96
- ldr r1, _081E0AA4 @ =0x04000128
- movs r4, 0x80
- lsls r4, 6
- adds r0, r4, 0
- strh r0, [r1]
-_081E0A96:
- adds r0, r3, 0
- adds r1, r2, 0
- bl rfu_STC_REQ_callback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081E0AA4: .4byte 0x04000128
- thumb_func_end rfu_CB_stopMode
-
- thumb_func_start rfu_REQBN_softReset_and_checkID
-rfu_REQBN_softReset_and_checkID: @ 81E0AA8
- push {lr}
- ldr r0, _081E0AB8 @ =0x04000208
- ldrh r0, [r0]
- cmp r0, 0
- bne _081E0ABC
- movs r0, 0x1
- negs r0, r0
- b _081E0ADC
- .align 2, 0
-_081E0AB8: .4byte 0x04000208
-_081E0ABC:
- bl AgbRFU_SoftReset
- bl rfu_STC_clearAPIVariables
- movs r0, 0x1E
- bl sub_81E349C
- adds r2, r0, 0
- cmp r2, 0
- bne _081E0ADA
- ldr r1, _081E0AE0 @ =0x04000128
- movs r3, 0x80
- lsls r3, 6
- adds r0, r3, 0
- strh r0, [r1]
-_081E0ADA:
- adds r0, r2, 0
-_081E0ADC:
- pop {r1}
- bx r1
- .align 2, 0
-_081E0AE0: .4byte 0x04000128
- thumb_func_end rfu_REQBN_softReset_and_checkID
-
- thumb_func_start rfu_REQ_reset
-rfu_REQ_reset: @ 81E0AE4
- push {lr}
- ldr r0, _081E0AF4 @ =rfu_CB_reset
- bl STWI_set_Callback_M
- bl STWI_send_ResetREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0AF4: .4byte rfu_CB_reset
- thumb_func_end rfu_REQ_reset
-
- thumb_func_start rfu_CB_reset
-rfu_CB_reset: @ 81E0AF8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r1, 16
- adds r4, r1, 0
- cmp r4, 0
- bne _081E0B0C
- bl rfu_STC_clearAPIVariables
-_081E0B0C:
- adds r0, r5, 0
- adds r1, r4, 0
- bl rfu_STC_REQ_callback
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end rfu_CB_reset
-
- thumb_func_start rfu_REQ_configSystem
-rfu_REQ_configSystem: @ 81E0B1C
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _081E0B54 @ =rfu_STC_REQ_callback
- bl STWI_set_Callback_M
- movs r0, 0x3
- ands r4, r0
- movs r0, 0x3C
- orrs r4, r0
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl STWI_send_SystemConfigREQ
- cmp r6, 0
- bne _081E0B5C
- ldr r0, _081E0B58 @ =gUnknown_3007464
- ldr r1, [r0]
- movs r0, 0x1
- strh r0, [r1, 0x1A]
- b _081E0B76
- .align 2, 0
-_081E0B54: .4byte rfu_STC_REQ_callback
-_081E0B58: .4byte gUnknown_3007464
-_081E0B5C:
- ldr r5, _081E0B7C @ =0x04000208
- ldrh r4, [r5]
- movs r0, 0
- strh r0, [r5]
- movs r0, 0x96
- lsls r0, 2
- adds r1, r6, 0
- bl Div
- ldr r1, _081E0B80 @ =gUnknown_3007464
- ldr r1, [r1]
- strh r0, [r1, 0x1A]
- strh r4, [r5]
-_081E0B76:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081E0B7C: .4byte 0x04000208
-_081E0B80: .4byte gUnknown_3007464
- thumb_func_end rfu_REQ_configSystem
-
- thumb_func_start rfu_REQ_configGameData
-rfu_REQ_configGameData: @ 81E0B84
- push {r4-r7,lr}
- sub sp, 0x10
- adds r4, r2, 0
- adds r7, r3, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, r1, 16
- adds r5, r4, 0
- mov r0, sp
- strb r1, [r0]
- lsrs r2, 24
- strb r2, [r0, 0x1]
- cmp r6, 0
- beq _081E0BAA
- movs r1, 0x80
- orrs r2, r1
- movs r1, 0
- orrs r2, r1
- strb r2, [r0, 0x1]
-_081E0BAA:
- movs r2, 0x2
- ldr r0, _081E0C0C @ =rfu_CB_configGameData
- mov r12, r0
-_081E0BB0:
- mov r3, sp
- adds r1, r3, r2
- ldrb r0, [r4]
- strb r0, [r1]
- adds r4, 0x1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xE
- bls _081E0BB0
- movs r3, 0
- adds r1, r7, 0
- movs r2, 0
-_081E0BCA:
- ldrb r0, [r1]
- adds r0, r3, r0
- lsls r0, 24
- adds r1, 0x1
- lsrs r0, 24
- ldrb r3, [r5]
- adds r0, r3
- lsls r0, 24
- lsrs r3, r0, 24
- adds r5, 0x1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _081E0BCA
- mov r1, sp
- mvns r0, r3
- strb r0, [r1, 0xF]
- cmp r6, 0
- beq _081E0BF6
- movs r0, 0
- strb r0, [r1, 0xE]
-_081E0BF6:
- mov r0, r12
- bl STWI_set_Callback_M
- mov r0, sp
- adds r1, r7, 0
- bl STWI_send_GameConfigREQ
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E0C0C: .4byte rfu_CB_configGameData
- thumb_func_end rfu_REQ_configGameData
-
- thumb_func_start rfu_CB_configGameData
-rfu_CB_configGameData: @ 81E0C10
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r1, 16
- lsrs r7, r1, 16
- cmp r7, 0
- bne _081E0C9A
- ldr r0, _081E0C54 @ =gRfuState
- ldr r0, [r0]
- ldr r1, [r0, 0x24]
- ldr r0, _081E0C58 @ =gUnknown_3007460
- ldr r6, [r0]
- ldrb r2, [r1, 0x4]
- adds r5, r6, 0
- adds r5, 0x98
- strh r2, [r5]
- ldrb r0, [r1, 0x5]
- lsls r3, r0, 8
- orrs r3, r2
- strh r3, [r5]
- adds r4, r1, 0x6
- movs r1, 0x80
- lsls r1, 8
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _081E0C5C
- eors r3, r1
- strh r3, [r5]
- adds r1, r6, 0
- adds r1, 0x97
- movs r0, 0x1
- b _081E0C62
- .align 2, 0
-_081E0C54: .4byte gRfuState
-_081E0C58: .4byte gUnknown_3007460
-_081E0C5C:
- adds r1, r6, 0
- adds r1, 0x97
- movs r0, 0
-_081E0C62:
- strb r0, [r1]
- movs r2, 0
- ldr r3, _081E0CA8 @ =gUnknown_3007460
-_081E0C68:
- ldr r0, [r3]
- adds r0, 0x9A
- adds r0, r2
- ldrb r1, [r4]
- strb r1, [r0]
- adds r4, 0x1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xC
- bls _081E0C68
- adds r4, 0x1
- movs r2, 0
- ldr r3, _081E0CA8 @ =gUnknown_3007460
-_081E0C84:
- ldr r0, [r3]
- adds r0, 0xA9
- adds r0, r2
- ldrb r1, [r4]
- strb r1, [r0]
- adds r4, 0x1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _081E0C84
-_081E0C9A:
- mov r0, r12
- adds r1, r7, 0
- bl rfu_STC_REQ_callback
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E0CA8: .4byte gUnknown_3007460
- thumb_func_end rfu_CB_configGameData
-
- thumb_func_start sub_81E0CAC
-sub_81E0CAC: @ 81E0CAC
- push {lr}
- ldr r0, _081E0CDC @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- bl STWI_send_SystemStatusREQ
- bl STWI_poll_CommandEnd
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081E0CE4
- ldr r0, _081E0CE0 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- bne _081E0CEA
- movs r0, 0x1
- bl rfu_STC_clearLinkStatus
- b _081E0CEA
- .align 2, 0
-_081E0CDC: .4byte rfu_CB_defaultCallback
-_081E0CE0: .4byte gUnknown_3007468
-_081E0CE4:
- movs r0, 0x19
- bl rfu_STC_REQ_callback
-_081E0CEA:
- ldr r0, _081E0CF8 @ =rfu_CB_startSearchChild
- bl STWI_set_Callback_M
- bl STWI_send_SC_StartREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0CF8: .4byte rfu_CB_startSearchChild
- thumb_func_end sub_81E0CAC
-
- thumb_func_start rfu_CB_startSearchChild
-rfu_CB_startSearchChild: @ 81E0CFC
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r1, 16
- adds r2, r1, 0
- cmp r2, 0
- bne _081E0D14
- ldr r0, _081E0D20 @ =gUnknown_3007464
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0x9]
-_081E0D14:
- adds r0, r3, 0
- adds r1, r2, 0
- bl rfu_STC_REQ_callback
- pop {r0}
- bx r0
- .align 2, 0
-_081E0D20: .4byte gUnknown_3007464
- thumb_func_end rfu_CB_startSearchChild
-
- thumb_func_start rfu_STC_clearLinkStatus
-rfu_STC_clearLinkStatus: @ 81E0D24
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl rfu_clearAllSlot
- cmp r4, 0
- beq _081E0D4C
- mov r0, sp
- movs r5, 0
- strh r5, [r0]
- ldr r4, _081E0D80 @ =gUnknown_3007460
- ldr r1, [r4]
- adds r1, 0x14
- ldr r2, _081E0D84 @ =0x01000040
- bl CpuSet
- ldr r0, [r4]
- strb r5, [r0, 0x8]
-_081E0D4C:
- movs r1, 0
- ldr r2, _081E0D80 @ =gUnknown_3007460
- adds r4, r2, 0
- movs r3, 0
-_081E0D54:
- ldr r0, [r4]
- adds r0, 0xA
- adds r0, r1
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _081E0D54
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0, 0x1]
- ldr r0, [r2]
- strb r1, [r0, 0x2]
- ldr r0, [r2]
- strb r1, [r0, 0x3]
- ldr r0, [r2]
- strb r1, [r0, 0x7]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081E0D80: .4byte gUnknown_3007460
-_081E0D84: .4byte 0x01000040
- thumb_func_end rfu_STC_clearLinkStatus
-
- thumb_func_start rfu_REQ_pollSearchChild
-rfu_REQ_pollSearchChild: @ 81E0D88
- push {lr}
- ldr r0, _081E0D98 @ =rfu_CB_pollAndEndSearchChild
- bl STWI_set_Callback_M
- bl STWI_send_SC_PollingREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0D98: .4byte rfu_CB_pollAndEndSearchChild
- thumb_func_end rfu_REQ_pollSearchChild
-
- thumb_func_start rfu_REQ_endSearchChild
-rfu_REQ_endSearchChild: @ 81E0D9C
- push {lr}
- ldr r0, _081E0DAC @ =rfu_CB_pollAndEndSearchChild
- bl STWI_set_Callback_M
- bl STWI_send_SC_EndREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0DAC: .4byte rfu_CB_pollAndEndSearchChild
- thumb_func_end rfu_REQ_endSearchChild
-
- thumb_func_start rfu_CB_pollAndEndSearchChild
-rfu_CB_pollAndEndSearchChild: @ 81E0DB0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r6, r1, 16
- cmp r6, 0
- bne _081E0DC2
- bl sub_81E0E38
-_081E0DC2:
- cmp r4, 0x1A
- bne _081E0E04
- ldr r5, _081E0DF8 @ =gUnknown_3007460
- ldr r0, [r5]
- adds r0, 0x94
- ldrh r0, [r0]
- cmp r0, 0
- bne _081E0E20
- ldr r0, _081E0DFC @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- bl STWI_send_SystemStatusREQ
- bl STWI_poll_CommandEnd
- lsls r0, 16
- cmp r0, 0
- bne _081E0E20
- ldr r1, [r5]
- ldr r0, _081E0E00 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- adds r1, 0x94
- strh r0, [r1]
- b _081E0E20
- .align 2, 0
-_081E0DF8: .4byte gUnknown_3007460
-_081E0DFC: .4byte rfu_CB_defaultCallback
-_081E0E00: .4byte gUnknown_3007468
-_081E0E04:
- cmp r4, 0x1B
- bne _081E0E20
- ldr r0, _081E0E30 @ =gUnknown_3007460
- ldr r1, [r0]
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _081E0E18
- adds r1, 0x94
- movs r0, 0
- strh r0, [r1]
-_081E0E18:
- ldr r0, _081E0E34 @ =gUnknown_3007464
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x9]
-_081E0E20:
- adds r0, r4, 0
- adds r1, r6, 0
- bl rfu_STC_REQ_callback
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081E0E30: .4byte gUnknown_3007460
-_081E0E34: .4byte gUnknown_3007464
- thumb_func_end rfu_CB_pollAndEndSearchChild
-
- thumb_func_start sub_81E0E38
-sub_81E0E38: @ 81E0E38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r1, _081E0F64 @ =gUnknown_3007468
- ldr r0, [r1]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r2, [r0, 0x1]
- mov r8, r2
- adds r4, r1, 0
- cmp r2, 0
- beq _081E0E96
- ldr r5, [r0, 0x4]
- ldr r0, _081E0F68 @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- bl STWI_send_LinkStatusREQ
- bl STWI_poll_CommandEnd
- lsls r0, 16
- cmp r0, 0
- bne _081E0E8A
- ldr r0, [r4]
- adds r0, 0xDC
- ldr r0, [r0]
- adds r4, r0, 0x4
- movs r2, 0
-_081E0E76:
- mov r0, sp
- adds r1, r0, r2
- ldrb r0, [r4]
- strb r0, [r1]
- adds r4, 0x1
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _081E0E76
-_081E0E8A:
- ldr r0, _081E0F64 @ =gUnknown_3007468
- ldr r1, [r0]
- adds r1, 0xDC
- ldr r1, [r1]
- str r5, [r1, 0x4]
- adds r4, r0, 0
-_081E0E96:
- ldr r0, [r4]
- adds r0, 0xDC
- ldr r0, [r0]
- adds r4, r0, 0x4
- mov r1, r8
- cmp r1, 0
- beq _081E0F52
- ldr r2, _081E0F6C @ =gUnknown_3007464
- mov r9, r2
- ldr r7, _081E0F70 @ =gUnknown_3007460
- mov r10, r9
-_081E0EAC:
- ldrb r2, [r4, 0x2]
- adds r5, r2, 0
- cmp r2, 0x3
- bhi _081E0F42
- ldr r1, [r7]
- ldrb r0, [r1, 0x2]
- asrs r0, r2
- movs r6, 0x1
- ands r0, r6
- cmp r0, 0
- bne _081E0F42
- ldrb r3, [r1, 0x3]
- asrs r3, r2
- ands r3, r6
- cmp r3, 0
- bne _081E0F42
- mov r1, sp
- adds r0, r1, r2
- ldrb r0, [r0]
- mov r12, r10
- cmp r0, 0
- beq _081E0EE6
- mov r0, r9
- ldr r1, [r0]
- adds r1, 0xE
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081E0EE6:
- mov r1, r9
- ldr r0, [r1]
- adds r0, 0xE
- adds r1, r0, r5
- ldrb r0, [r1]
- cmp r0, 0x3
- bls _081E0F42
- strb r3, [r1]
- ldr r0, [r7]
- adds r0, 0xA
- adds r0, r5
- movs r1, 0xFF
- strb r1, [r0]
- ldr r2, [r7]
- adds r0, r6, 0
- lsls r0, r5
- ldrb r1, [r2, 0x2]
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r1, [r7]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- ldr r1, [r7]
- lsls r3, r5, 5
- adds r1, r3
- ldrh r0, [r4]
- strh r0, [r1, 0x14]
- strb r5, [r1, 0x16]
- ldr r0, [r7]
- strb r6, [r0]
- mov r0, r12
- ldr r2, [r0]
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- mov r2, r12
- ldr r1, [r2]
- lsls r0, r5, 1
- adds r1, 0x12
- adds r1, r0
- ldr r0, [r7]
- adds r0, r3
- ldrh r0, [r0, 0x14]
- strh r0, [r1]
-_081E0F42:
- mov r0, r8
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r4, 0x4
- cmp r0, 0
- bne _081E0EAC
-_081E0F52:
- 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
-_081E0F64: .4byte gUnknown_3007468
-_081E0F68: .4byte rfu_CB_defaultCallback
-_081E0F6C: .4byte gUnknown_3007464
-_081E0F70: .4byte gUnknown_3007460
- thumb_func_end sub_81E0E38
-
- thumb_func_start rfu_REQ_startSearchParent
-rfu_REQ_startSearchParent: @ 81E0F74
- push {lr}
- ldr r0, _081E0F84 @ =rfu_CB_startSearchParent
- bl STWI_set_Callback_M
- bl STWI_send_SP_StartREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0F84: .4byte rfu_CB_startSearchParent
- thumb_func_end rfu_REQ_startSearchParent
-
- thumb_func_start rfu_CB_startSearchParent
-rfu_CB_startSearchParent: @ 81E0F88
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r1, 16
- adds r4, r1, 0
- cmp r4, 0
- bne _081E0F9E
- movs r0, 0
- bl rfu_STC_clearLinkStatus
-_081E0F9E:
- adds r0, r5, 0
- adds r1, r4, 0
- bl rfu_STC_REQ_callback
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end rfu_CB_startSearchParent
-
- thumb_func_start rfu_REQ_pollSearchParent
-rfu_REQ_pollSearchParent: @ 81E0FAC
- push {lr}
- ldr r0, _081E0FBC @ =sub_81E0FC0
- bl STWI_set_Callback_M
- bl STWI_send_SP_PollingREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0FBC: .4byte sub_81E0FC0
- thumb_func_end rfu_REQ_pollSearchParent
-
- thumb_func_start sub_81E0FC0
-sub_81E0FC0: @ 81E0FC0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r1, 16
- adds r4, r1, 0
- cmp r4, 0
- bne _081E0FD4
- bl rfu_STC_readParentCandidateList
-_081E0FD4:
- adds r0, r5, 0
- adds r1, r4, 0
- bl rfu_STC_REQ_callback
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81E0FC0
-
- thumb_func_start rfu_REQ_endSearchParent
-rfu_REQ_endSearchParent: @ 81E0FE4
- push {lr}
- ldr r0, _081E0FF4 @ =rfu_STC_REQ_callback
- bl STWI_set_Callback_M
- bl STWI_send_SP_EndREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E0FF4: .4byte rfu_STC_REQ_callback
- thumb_func_end rfu_REQ_endSearchParent
-
- thumb_func_start rfu_STC_readParentCandidateList
-rfu_STC_readParentCandidateList: @ 81E0FF8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r0, sp
- movs r4, 0
- strh r4, [r0]
- ldr r5, _081E10A0 @ =gUnknown_3007460
- ldr r1, [r5]
- adds r1, 0x14
- ldr r2, _081E10A4 @ =0x01000040
- bl CpuSet
- ldr r0, _081E10A8 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r2, [r0]
- ldrb r7, [r2, 0x1]
- adds r2, 0x4
- ldr r0, [r5]
- strb r4, [r0, 0x8]
- movs r6, 0
- cmp r7, 0
- beq _081E10FC
- mov r12, r5
- ldr r0, _081E10AC @ =0x00007fff
- mov r8, r0
-_081E102E:
- subs r0, r7, 0x7
- lsls r0, 24
- lsrs r7, r0, 24
- adds r1, r2, 0x6
- adds r2, 0x13
- ldrb r0, [r2]
- mvns r0, r0
- lsls r0, 24
- lsrs r5, r0, 24
- adds r2, 0x1
- movs r4, 0
- movs r3, 0
- adds r6, 0x1
-_081E1048:
- ldrb r0, [r2]
- adds r0, r4, r0
- lsls r0, 24
- adds r2, 0x1
- lsrs r0, 24
- ldrb r4, [r1]
- adds r0, r4
- lsls r0, 24
- lsrs r4, r0, 24
- adds r1, 0x1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x7
- bls _081E1048
- cmp r4, r5
- bne _081E10F0
- subs r2, 0x1C
- mov r0, r12
- ldr r1, [r0]
- ldrb r0, [r1, 0x8]
- lsls r0, 5
- adds r0, 0x14
- adds r4, r1, r0
- ldrh r0, [r2]
- movs r3, 0
- strh r0, [r4]
- adds r2, 0x2
- ldrb r0, [r2]
- strb r0, [r4, 0x2]
- adds r2, 0x2
- ldrh r1, [r2]
- mov r0, r8
- ands r0, r1
- strh r0, [r4, 0x4]
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _081E10B0
- movs r0, 0x1
- strb r0, [r4, 0x3]
- b _081E10B2
- .align 2, 0
-_081E10A0: .4byte gUnknown_3007460
-_081E10A4: .4byte 0x01000040
-_081E10A8: .4byte gUnknown_3007468
-_081E10AC: .4byte 0x00007fff
-_081E10B0:
- strb r3, [r4, 0x3]
-_081E10B2:
- adds r2, 0x2
- movs r3, 0
- adds r5, r4, 0
- adds r5, 0x15
- adds r4, 0x6
-_081E10BC:
- adds r1, r4, r3
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xC
- bls _081E10BC
- adds r2, 0x1
- movs r3, 0
- adds r4, r5, 0
-_081E10D4:
- adds r1, r4, r3
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x7
- bls _081E10D4
- mov r4, r12
- ldr r1, [r4]
- ldrb r0, [r1, 0x8]
- adds r0, 0x1
- strb r0, [r1, 0x8]
-_081E10F0:
- lsls r0, r6, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _081E10FC
- cmp r7, 0
- bne _081E102E
-_081E10FC:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end rfu_STC_readParentCandidateList
-
- thumb_func_start rfu_REQ_startConnectParent
-rfu_REQ_startConnectParent: @ 81E1108
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r3, 0
- movs r2, 0
- ldr r1, _081E1154 @ =gUnknown_3007460
- ldr r0, [r1]
- ldrh r0, [r0, 0x14]
- cmp r0, r4
- beq _081E1134
- adds r5, r1, 0
-_081E111E:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bhi _081E1134
- ldr r0, [r5]
- lsls r1, r2, 5
- adds r0, r1
- ldrh r0, [r0, 0x14]
- cmp r0, r4
- bne _081E111E
-_081E1134:
- cmp r2, 0x4
- bne _081E113C
- movs r3, 0x80
- lsls r3, 1
-_081E113C:
- cmp r3, 0
- bne _081E1160
- ldr r0, _081E1158 @ =gUnknown_3007464
- ldr r0, [r0]
- strh r4, [r0, 0x1E]
- ldr r0, _081E115C @ =rfu_STC_REQ_callback
- bl STWI_set_Callback_M
- adds r0, r4, 0
- bl STWI_send_CP_StartREQ
- b _081E1168
- .align 2, 0
-_081E1154: .4byte gUnknown_3007460
-_081E1158: .4byte gUnknown_3007464
-_081E115C: .4byte rfu_STC_REQ_callback
-_081E1160:
- movs r0, 0x1F
- adds r1, r3, 0
- bl rfu_STC_REQ_callback
-_081E1168:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end rfu_REQ_startConnectParent
-
- thumb_func_start rfu_REQ_pollConnectParent
-rfu_REQ_pollConnectParent: @ 81E1170
- push {lr}
- ldr r0, _081E1180 @ =rfu_CB_pollConnectParent
- bl STWI_set_Callback_M
- bl STWI_send_CP_PollingREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E1180: .4byte rfu_CB_pollConnectParent
- thumb_func_end rfu_REQ_pollConnectParent
-
- thumb_func_start rfu_CB_pollConnectParent
-rfu_CB_pollConnectParent: @ 81E1184
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x24]
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x28]
- cmp r1, 0
- bne _081E1286
- ldr r0, _081E1240 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrh r5, [r0, 0x4]
- ldrb r1, [r0, 0x6]
- mov r10, r1
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- bne _081E1286
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r1
- lsrs r2, r0, 24
- ldr r4, _081E1244 @ =gUnknown_3007460
- ldr r3, [r4]
- ldrb r1, [r3, 0x2]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _081E1286
- adds r0, r2, 0
- orrs r0, r1
- strb r0, [r3, 0x2]
- ldr r1, [r4]
- ldrb r0, [r1, 0x3]
- bics r0, r2
- strb r0, [r1, 0x3]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x94
- movs r2, 0
- strh r5, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- ldr r0, [r4]
- strb r2, [r0]
- ldr r3, _081E1248 @ =gUnknown_3007464
- ldr r2, [r3]
- ldrb r1, [r2]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r2]
- movs r5, 0
- adds r7, r4, 0
- add r6, sp, 0x20
- movs r0, 0
- mov r8, r0
-_081E1202:
- ldr r2, [r7]
- lsls r4, r5, 5
- adds r0, r2, r4
- ldr r1, [r3]
- ldrh r0, [r0, 0x14]
- ldrh r1, [r1, 0x1E]
- cmp r0, r1
- bne _081E125A
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _081E1250
- mov r9, sp
- adds r0, r4, 0
- adds r0, 0x14
- adds r0, r2, r0
- mov r1, sp
- movs r2, 0x10
- bl CpuSet
- mov r1, r8
- strh r1, [r6]
- ldr r1, [r7]
- adds r1, 0x14
- adds r0, r6, 0
- ldr r2, _081E124C @ =0x01000040
- bl CpuSet
- ldr r0, [r7]
- mov r1, r8
- strb r1, [r0, 0x8]
- b _081E1264
- .align 2, 0
-_081E1240: .4byte gUnknown_3007468
-_081E1244: .4byte gUnknown_3007460
-_081E1248: .4byte gUnknown_3007464
-_081E124C: .4byte 0x01000040
-_081E1250:
- adds r0, r4, 0
- adds r0, 0x14
- adds r2, r0
- mov r9, r2
- b _081E1264
-_081E125A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081E1202
-_081E1264:
- cmp r5, 0x3
- bhi _081E1286
- ldr r4, _081E12A0 @ =gUnknown_3007460
- mov r0, r10
- lsls r5, r0, 5
- adds r0, r5, 0
- adds r0, 0x14
- ldr r1, [r4]
- adds r1, r0
- mov r0, r9
- movs r2, 0x10
- bl CpuSet
- ldr r0, [r4]
- adds r0, r5
- mov r1, r10
- strb r1, [r0, 0x16]
-_081E1286:
- ldr r0, [sp, 0x24]
- ldr r1, [sp, 0x28]
- bl rfu_STC_REQ_callback
- 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
-_081E12A0: .4byte gUnknown_3007460
- thumb_func_end rfu_CB_pollConnectParent
-
- thumb_func_start rfu_getConnectParentStatus
-rfu_getConnectParentStatus: @ 81E12A4
- push {lr}
- adds r3, r0, 0
- movs r0, 0xFF
- strb r0, [r3]
- ldr r0, _081E12C4 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r2, [r0]
- ldrb r0, [r2]
- adds r0, 0x60
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _081E12C8
- movs r0, 0x10
- b _081E12D4
- .align 2, 0
-_081E12C4: .4byte gUnknown_3007468
-_081E12C8:
- adds r2, 0x6
- ldrb r0, [r2]
- strb r0, [r1]
- ldrb r0, [r2, 0x1]
- strb r0, [r3]
- movs r0, 0
-_081E12D4:
- pop {r1}
- bx r1
- thumb_func_end rfu_getConnectParentStatus
-
- thumb_func_start rfu_REQ_endConnectParent
-rfu_REQ_endConnectParent: @ 81E12D8
- push {lr}
- ldr r0, _081E1304 @ =rfu_CB_pollConnectParent
- bl STWI_set_Callback_M
- bl STWI_send_CP_EndREQ
- ldr r0, _081E1308 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r1, [r0]
- ldrb r0, [r1, 0x6]
- cmp r0, 0x3
- bhi _081E1300
- ldr r0, _081E130C @ =gUnknown_3007464
- ldr r0, [r0]
- adds r0, 0xA
- ldrb r1, [r1, 0x6]
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_081E1300:
- pop {r0}
- bx r0
- .align 2, 0
-_081E1304: .4byte rfu_CB_pollConnectParent
-_081E1308: .4byte gUnknown_3007468
-_081E130C: .4byte gUnknown_3007464
- thumb_func_end rfu_REQ_endConnectParent
-
- thumb_func_start rfu_syncVBlank
-rfu_syncVBlank: @ 81E1310
- push {r4,r5,lr}
- bl rfu_NI_checkCommFailCounter
- ldr r0, _081E1358 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _081E13E8
- ldr r4, _081E135C @ =gUnknown_3007464
- ldr r1, [r4]
- ldrb r0, [r1, 0x6]
- cmp r0, 0
- beq _081E132E
- subs r0, 0x1
- strb r0, [r1, 0x6]
-_081E132E:
- bl rfu_getMasterSlave
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, [r4]
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081E1360
- cmp r3, 0
- bne _081E136E
- movs r0, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r1, [r4]
- movs r0, 0xB4
- lsls r0, 1
- strh r0, [r1, 0x20]
- b _081E136A
- .align 2, 0
-_081E1358: .4byte gUnknown_3007460
-_081E135C: .4byte gUnknown_3007464
-_081E1360:
- cmp r3, 0
- beq _081E1380
- movs r0, 0xFB
- ands r0, r1
- strb r0, [r2]
-_081E136A:
- cmp r3, 0
- beq _081E1380
-_081E136E:
- ldr r3, _081E137C @ =gUnknown_3007464
- ldr r2, [r3]
- ldrb r1, [r2]
- movs r0, 0xFD
- ands r0, r1
- b _081E138A
- .align 2, 0
-_081E137C: .4byte gUnknown_3007464
-_081E1380:
- ldr r3, _081E13DC @ =gUnknown_3007464
- ldr r2, [r3]
- ldrb r1, [r2]
- movs r0, 0x2
- orrs r0, r1
-_081E138A:
- strb r0, [r2]
- ldr r3, [r3]
- ldrb r1, [r3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081E13E8
- ldrh r0, [r3, 0x20]
- cmp r0, 0
- bne _081E13E4
- movs r0, 0xFB
- ands r0, r1
- strb r0, [r3]
- ldr r0, _081E13E0 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- ldrb r0, [r0, 0x3]
- adds r5, r0, 0
- orrs r5, r1
- movs r4, 0
-_081E13B2:
- adds r0, r5, 0
- asrs r0, r4
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081E13C4
- adds r0, r4, 0
- bl rfu_STC_removeLinkData
-_081E13C4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081E13B2
- ldr r0, _081E13E0 @ =gUnknown_3007460
- ldr r1, [r0]
- movs r0, 0xFF
- strb r0, [r1]
- movs r0, 0x1
- b _081E13EA
- .align 2, 0
-_081E13DC: .4byte gUnknown_3007464
-_081E13E0: .4byte gUnknown_3007460
-_081E13E4:
- subs r0, 0x1
- strh r0, [r3, 0x20]
-_081E13E8:
- movs r0, 0
-_081E13EA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end rfu_syncVBlank
-
- thumb_func_start sub_81E13F0
-sub_81E13F0: @ 81E13F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- mov r8, r1
- str r2, [sp]
- str r3, [sp, 0x4]
- lsls r0, 16
- lsrs r5, r0, 16
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0
- str r1, [sp, 0xC]
- mov r2, r8
- strb r1, [r2]
- mov r0, sp
- ldrb r1, [r0, 0xC]
- ldr r0, [sp]
- strb r1, [r0]
- mov r2, sp
- ldrb r0, [r2, 0xC]
- ldr r2, [sp, 0x4]
- strb r0, [r2]
- ldr r4, _081E1490 @ =gUnknown_3007460
- ldr r0, [r4]
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _081E142E
- b _081E178E
-_081E142E:
- ldr r0, _081E1494 @ =gRfuState
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- cmp r0, 0
- bne _081E143A
- b _081E178E
-_081E143A:
- ldr r3, _081E1498 @ =gUnknown_3007464
- ldr r2, [r3]
- ldrb r1, [r2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081E144E
- movs r0, 0xB4
- lsls r0, 1
- strh r0, [r2, 0x20]
-_081E144E:
- ldr r1, [r3]
- ldrb r0, [r1, 0x6]
- cmp r0, 0
- bne _081E1460
- ldr r0, [r4]
- ldrb r0, [r0, 0x9]
- strb r0, [r1, 0x6]
- movs r1, 0x1
- str r1, [sp, 0x8]
-_081E1460:
- lsls r0, r5, 24
- lsrs r0, 24
- cmp r0, 0x29
- bne _081E14A0
- ldr r0, _081E149C @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r1, [r0]
- ldrb r0, [r1, 0x4]
- mov r2, r8
- strb r0, [r2]
- ldrb r0, [r1, 0x5]
- ldr r1, [sp]
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081E148A
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- strb r0, [r2]
-_081E148A:
- movs r2, 0x2
- str r2, [sp, 0x8]
- b _081E14F8
- .align 2, 0
-_081E1490: .4byte gUnknown_3007460
-_081E1494: .4byte gRfuState
-_081E1498: .4byte gUnknown_3007464
-_081E149C: .4byte gUnknown_3007468
-_081E14A0:
- movs r0, 0x9B
- lsls r0, 1
- cmp r5, r0
- bne _081E14F0
- ldr r0, _081E154C @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r6, [r0, 0x5]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- eors r6, r0
- ands r6, r0
- mov r0, r8
- strb r6, [r0]
- movs r0, 0x1
- ldr r1, [sp]
- strb r0, [r1]
- movs r5, 0
-_081E14C6:
- mov r2, r8
- ldrb r0, [r2]
- asrs r0, r5
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081E14E6
- ldr r0, _081E1550 @ =gUnknown_3007460
- ldr r0, [r0]
- adds r0, 0xA
- adds r0, r5
- movs r1, 0
- strb r1, [r0]
- adds r0, r5, 0
- bl rfu_STC_removeLinkData
-_081E14E6:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081E14C6
-_081E14F0:
- ldr r0, [sp, 0x8]
- cmp r0, 0
- bne _081E14F8
- b _081E178E
-_081E14F8:
- ldr r4, _081E154C @ =gUnknown_3007468
- ldr r0, [r4]
- adds r0, 0xDC
- ldr r0, [r0]
- ldr r1, [r0]
- str r1, [sp, 0x10]
- ldr r0, [r0, 0x4]
- str r0, [sp, 0x14]
- ldr r0, _081E1554 @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- bl STWI_send_LinkStatusREQ
- bl STWI_poll_CommandEnd
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- cmp r0, 0
- bne _081E1558
- ldr r0, [r4]
- adds r0, 0xDC
- ldr r0, [r0]
- adds r2, r0, 0x4
- movs r5, 0
- ldr r3, _081E1550 @ =gUnknown_3007460
-_081E152C:
- ldr r0, [r3]
- adds r0, 0xA
- adds r0, r5
- ldrb r1, [r2]
- strb r1, [r0]
- adds r2, 0x1
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081E152C
- movs r2, 0
- mov r9, r2
- movs r5, 0
- b _081E1564
- .align 2, 0
-_081E154C: .4byte gUnknown_3007468
-_081E1550: .4byte gUnknown_3007460
-_081E1554: .4byte rfu_CB_defaultCallback
-_081E1558:
- movs r0, 0x11
- ldr r1, [sp, 0xC]
- bl rfu_STC_REQ_callback
- ldr r0, [sp, 0xC]
- b _081E1790
-_081E1564:
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r5
- lsrs r6, r0, 24
- adds r0, r5, 0x1
- mov r10, r0
- ldr r1, [sp, 0xC]
- cmp r1, 0
- beq _081E1578
- b _081E1742
-_081E1578:
- ldr r2, [sp, 0x8]
- cmp r2, 0x1
- bne _081E164E
- ldr r4, _081E15B8 @ =gUnknown_3007460
- ldr r1, [r4]
- ldrb r0, [r1, 0x2]
- ands r0, r6
- cmp r0, 0
- beq _081E164E
- adds r0, r1, 0
- adds r0, 0xA
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _081E1640
- ldrb r0, [r1]
- cmp r0, 0x1
- bne _081E15C0
- ldr r2, _081E15BC @ =gUnknown_3007464
- ldr r1, [r2]
- adds r1, 0xA
- adds r1, r5
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0xA
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x3
- bls _081E164E
- b _081E1626
- .align 2, 0
-_081E15B8: .4byte gUnknown_3007460
-_081E15BC: .4byte gUnknown_3007464
-_081E15C0:
- bl STWI_send_SystemStatusREQ
- bl STWI_poll_CommandEnd
- lsls r0, 16
- cmp r0, 0
- bne _081E164E
- ldr r0, _081E15F0 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- bne _081E15F4
- mov r2, r8
- ldrb r1, [r2]
- adds r0, r6, 0
- orrs r0, r1
- strb r0, [r2]
- mov r0, sp
- ldrb r1, [r0, 0x8]
- ldr r0, [sp]
- b _081E164C
- .align 2, 0
-_081E15F0: .4byte gUnknown_3007468
-_081E15F4:
- ldr r2, _081E163C @ =gUnknown_3007464
- ldr r1, [r2]
- adds r1, 0xA
- adds r1, r5
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- ldr r2, [r2]
- lsrs r0, 24
- ldrh r1, [r2, 0x1A]
- cmp r0, r1
- bls _081E164E
- adds r0, r2, 0
- adds r0, 0xA
- adds r0, r5
- mov r2, sp
- ldrb r2, [r2, 0xC]
- strb r2, [r0]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- bl STWI_send_DisconnectREQ
- bl STWI_poll_CommandEnd
-_081E1626:
- mov r0, r8
- ldrb r1, [r0]
- adds r0, r6, 0
- orrs r0, r1
- mov r1, r8
- strb r0, [r1]
- mov r2, sp
- ldrb r0, [r2, 0x8]
- ldr r2, [sp]
- strb r0, [r2]
- b _081E164E
- .align 2, 0
-_081E163C: .4byte gUnknown_3007464
-_081E1640:
- ldr r0, _081E16B0 @ =gUnknown_3007464
- ldr r0, [r0]
- adds r0, 0xA
- adds r0, r5
- mov r1, sp
- ldrb r1, [r1, 0xC]
-_081E164C:
- strb r1, [r0]
-_081E164E:
- ldr r2, _081E16B4 @ =gUnknown_3007460
- mov r12, r2
- ldr r1, [r2]
- ldrb r7, [r1]
- adds r0, r5, 0x1
- mov r10, r0
- cmp r7, 0x1
- bne _081E1742
- adds r0, r1, 0
- adds r0, 0xA
- adds r4, r0, r5
- ldrb r3, [r4]
- cmp r3, 0
- beq _081E1742
- ldrb r2, [r1, 0x3]
- adds r0, r6, 0
- ands r0, r2
- cmp r0, 0
- beq _081E16BE
- cmp r3, 0xA
- bls _081E16B8
- ldr r2, [sp, 0x4]
- ldrb r1, [r2]
- adds r0, r6, 0
- orrs r0, r1
- strb r0, [r2]
- mov r0, r12
- ldr r2, [r0]
- ldrb r1, [r2, 0x2]
- adds r0, r6, 0
- orrs r0, r1
- movs r3, 0
- strb r0, [r2, 0x2]
- mov r2, r12
- ldr r1, [r2]
- ldrb r0, [r1, 0x3]
- bics r0, r6
- strb r0, [r1, 0x3]
- ldr r1, [r2]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- ldr r0, _081E16B0 @ =gUnknown_3007464
- ldr r0, [r0]
- adds r0, 0xA
- adds r0, r5
- strb r3, [r0]
- b _081E1742
- .align 2, 0
-_081E16B0: .4byte gUnknown_3007464
-_081E16B4: .4byte gUnknown_3007460
-_081E16B8:
- movs r0, 0
- strb r0, [r4]
- b _081E1742
-_081E16BE:
- ldrb r0, [r1, 0x2]
- orrs r0, r2
- ands r0, r6
- cmp r0, 0
- bne _081E1742
- bl STWI_send_SlotStatusREQ
- bl STWI_poll_CommandEnd
- ldr r0, _081E1708 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r2, [r0]
- ldrb r0, [r2, 0x1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r2, 0x8
- cmp r3, 0
- beq _081E1742
- ldrh r4, [r2]
- ldrb r0, [r2, 0x2]
- cmp r0, r5
- bne _081E1710
- ldr r0, _081E170C @ =gUnknown_3007464
- ldr r0, [r0]
- lsls r1, r5, 1
- adds r0, 0x12
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- bne _081E1710
- lsls r7, r5
- mov r0, r9
- orrs r0, r7
- lsls r0, 24
- b _081E173E
- .align 2, 0
-_081E1708: .4byte gUnknown_3007468
-_081E170C: .4byte gUnknown_3007464
-_081E1710:
- adds r2, 0x4
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _081E1742
- ldrh r4, [r2]
- ldrb r0, [r2, 0x2]
- cmp r0, r5
- bne _081E1710
- ldr r0, _081E17A0 @ =gUnknown_3007464
- ldr r0, [r0]
- lsls r1, r5, 1
- adds r0, 0x12
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- bne _081E1710
- movs r0, 0x1
- lsls r0, r5
- mov r1, r9
- orrs r1, r0
- lsls r0, r1, 24
-_081E173E:
- lsrs r0, 24
- mov r9, r0
-_081E1742:
- ldr r0, _081E17A4 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r1, [r0, 0x2]
- mov r2, r8
- ldrb r0, [r2]
- ands r0, r1
- ands r6, r0
- cmp r6, 0
- beq _081E175C
- adds r0, r5, 0
- movs r1, 0
- bl rfu_STC_removeLinkData
-_081E175C:
- mov r1, r10
- lsls r0, r1, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bhi _081E1768
- b _081E1564
-_081E1768:
- mov r2, r9
- cmp r2, 0
- beq _081E1778
- mov r0, r9
- bl STWI_send_DisconnectREQ
- bl STWI_poll_CommandEnd
-_081E1778:
- ldr r1, _081E17A8 @ =gUnknown_3007468
- ldr r0, [r1]
- adds r0, 0xDC
- ldr r0, [r0]
- ldr r2, [sp, 0x10]
- str r2, [r0]
- ldr r0, [r1]
- adds r0, 0xDC
- ldr r0, [r0]
- ldr r1, [sp, 0x14]
- str r1, [r0, 0x4]
-_081E178E:
- movs r0, 0
-_081E1790:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081E17A0: .4byte gUnknown_3007464
-_081E17A4: .4byte gUnknown_3007460
-_081E17A8: .4byte gUnknown_3007468
- thumb_func_end sub_81E13F0
-
- thumb_func_start rfu_STC_removeLinkData
-rfu_STC_removeLinkData: @ 81E17AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r12, r1
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r7
- lsrs r5, r0, 24
- ldr r1, _081E1850 @ =gUnknown_3007460
- ldr r4, [r1]
- ldrb r0, [r4, 0x2]
- ands r0, r5
- mov r8, r1
- cmp r0, 0
- beq _081E17DE
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _081E17DE
- subs r0, 0x1
- strb r0, [r4, 0x1]
-_081E17DE:
- mov r3, r8
- ldr r2, [r3]
- mvns r6, r5
- ldrb r1, [r2, 0x2]
- adds r0, r6, 0
- ands r0, r1
- strb r0, [r2, 0x2]
- ldr r2, [r3]
- ldrb r1, [r2, 0x3]
- adds r0, r5, 0
- orrs r0, r1
- strb r0, [r2, 0x3]
- ldr r3, [r3]
- ldr r0, [r3]
- ldr r1, _081E1854 @ =0x00ff00ff
- ands r0, r1
- cmp r0, 0
- bne _081E1806
- movs r0, 0xFF
- strb r0, [r3]
-_081E1806:
- mov r0, r12
- cmp r0, 0
- beq _081E1844
- mov r1, sp
- movs r4, 0
- movs r0, 0
- strh r0, [r1]
- lsls r0, r7, 5
- adds r0, 0x14
- mov r2, r8
- ldr r1, [r2]
- adds r1, r0
- ldr r2, _081E1858 @ =0x01000010
- mov r0, sp
- bl CpuSet
- mov r0, r8
- ldr r2, [r0]
- ldrb r1, [r2, 0x3]
- adds r0, r6, 0
- ands r0, r1
- strb r0, [r2, 0x3]
- mov r2, r8
- ldr r1, [r2]
- ldrb r0, [r1, 0x7]
- ands r6, r0
- strb r6, [r1, 0x7]
- ldr r0, [r2]
- adds r0, 0xA
- adds r0, r7
- strb r4, [r0]
-_081E1844:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E1850: .4byte gUnknown_3007460
-_081E1854: .4byte 0x00ff00ff
-_081E1858: .4byte 0x01000010
- thumb_func_end rfu_STC_removeLinkData
-
- thumb_func_start rfu_REQ_disconnect
-rfu_REQ_disconnect: @ 81E185C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _081E18A0 @ =gUnknown_3007460
- ldr r1, [r2]
- ldrb r0, [r1, 0x2]
- ldrb r1, [r1, 0x3]
- orrs r0, r1
- ands r0, r4
- cmp r0, 0
- beq _081E18E0
- ldr r0, _081E18A4 @ =gUnknown_3007464
- ldr r1, [r0]
- strb r4, [r1, 0x5]
- ldr r2, [r2]
- ldrb r1, [r2]
- adds r3, r0, 0
- cmp r1, 0xFF
- bne _081E18A8
- ldr r0, [r3]
- ldrb r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081E18A8
- ldrb r0, [r2, 0x3]
- ands r0, r4
- cmp r0, 0
- beq _081E18E0
- movs r0, 0x30
- movs r1, 0
- bl rfu_CB_disconnect
- b _081E18E0
- .align 2, 0
-_081E18A0: .4byte gUnknown_3007460
-_081E18A4: .4byte gUnknown_3007464
-_081E18A8:
- ldr r0, [r3]
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- beq _081E18D4
- ldr r0, _081E18D0 @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- bl STWI_send_SC_EndREQ
- bl STWI_poll_CommandEnd
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _081E18D4
- movs r0, 0x1B
- bl rfu_STC_REQ_callback
- b _081E18E0
- .align 2, 0
-_081E18D0: .4byte rfu_CB_defaultCallback
-_081E18D4:
- ldr r0, _081E18E8 @ =rfu_CB_disconnect
- bl STWI_set_Callback_M
- adds r0, r4, 0
- bl STWI_send_DisconnectREQ
-_081E18E0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081E18E8: .4byte rfu_CB_disconnect
- thumb_func_end rfu_REQ_disconnect
-
- thumb_func_start rfu_CB_disconnect
-rfu_CB_disconnect: @ 81E18EC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- cmp r5, 0x3
- bne _081E1928
- ldr r0, _081E19BC @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0
- bne _081E1928
- ldr r0, _081E19C0 @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- bl STWI_send_SystemStatusREQ
- bl STWI_poll_CommandEnd
- lsls r0, 16
- cmp r0, 0
- bne _081E1928
- ldr r0, _081E19C4 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- cmp r0, 0
- bne _081E1928
- movs r5, 0
-_081E1928:
- ldr r3, _081E19C8 @ =gUnknown_3007464
- ldr r2, [r3]
- ldr r0, _081E19BC @ =gUnknown_3007460
- ldr r1, [r0]
- ldrb r0, [r1, 0x2]
- ldrb r1, [r1, 0x3]
- orrs r0, r1
- ldrb r1, [r2, 0x5]
- ands r0, r1
- strb r0, [r2, 0x5]
- ldr r0, _081E19C4 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r1, [r0]
- ldr r0, [r3]
- ldrb r0, [r0, 0x5]
- strb r0, [r1, 0x8]
- cmp r5, 0
- bne _081E1976
- movs r4, 0
-_081E1950:
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r4
- lsrs r0, 24
- ldr r1, _081E19C8 @ =gUnknown_3007464
- ldr r1, [r1]
- ldrb r1, [r1, 0x5]
- ands r0, r1
- cmp r0, 0
- beq _081E196C
- adds r0, r4, 0
- movs r1, 0x1
- bl rfu_STC_removeLinkData
-_081E196C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081E1950
-_081E1976:
- ldr r0, _081E19BC @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- orrs r0, r1
- cmp r0, 0
- bne _081E1988
- movs r0, 0xFF
- strb r0, [r2]
-_081E1988:
- adds r0, r6, 0
- adds r1, r5, 0
- bl rfu_STC_REQ_callback
- ldr r0, _081E19C8 @ =gUnknown_3007464
- ldr r0, [r0]
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- beq _081E19B6
- ldr r0, _081E19C0 @ =rfu_CB_defaultCallback
- bl STWI_set_Callback_M
- bl STWI_send_SC_StartREQ
- bl STWI_poll_CommandEnd
- adds r5, r0, 0
- cmp r5, 0
- beq _081E19B6
- movs r0, 0x19
- adds r1, r5, 0
- bl rfu_STC_REQ_callback
-_081E19B6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081E19BC: .4byte gUnknown_3007460
-_081E19C0: .4byte rfu_CB_defaultCallback
-_081E19C4: .4byte gUnknown_3007468
-_081E19C8: .4byte gUnknown_3007464
- thumb_func_end rfu_CB_disconnect
-
- thumb_func_start rfu_REQ_CHILD_startConnectRecovery
-rfu_REQ_CHILD_startConnectRecovery: @ 81E19CC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _081E1A1C @ =gUnknown_3007464
- ldr r0, [r0]
- strb r5, [r0, 0x5]
- movs r4, 0
- movs r0, 0x1
- ands r0, r5
- ldr r2, _081E1A20 @ =rfu_STC_REQ_callback
- cmp r0, 0
- bne _081E19FA
- movs r1, 0x1
-_081E19E6:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bhi _081E19FA
- adds r0, r5, 0
- asrs r0, r4
- ands r0, r1
- cmp r0, 0
- beq _081E19E6
-_081E19FA:
- adds r0, r2, 0
- bl STWI_set_Callback_M
- ldr r0, _081E1A24 @ =gUnknown_3007460
- ldr r1, [r0]
- lsls r0, r4, 5
- adds r0, r1, r0
- ldrh r0, [r0, 0x14]
- adds r1, 0x94
- ldrh r1, [r1]
- adds r2, r5, 0
- bl STWI_send_CPR_StartREQ
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081E1A1C: .4byte gUnknown_3007464
-_081E1A20: .4byte rfu_STC_REQ_callback
-_081E1A24: .4byte gUnknown_3007460
- thumb_func_end rfu_REQ_CHILD_startConnectRecovery
-
- thumb_func_start rfu_REQ_CHILD_pollConnectRecovery
-rfu_REQ_CHILD_pollConnectRecovery: @ 81E1A28
- push {lr}
- ldr r0, _081E1A38 @ =rfu_CB_CHILD_pollConnectRecovery
- bl STWI_set_Callback_M
- bl STWI_send_CPR_PollingREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E1A38: .4byte rfu_CB_CHILD_pollConnectRecovery
- thumb_func_end rfu_REQ_CHILD_pollConnectRecovery
-
- thumb_func_start rfu_CB_CHILD_pollConnectRecovery
-rfu_CB_CHILD_pollConnectRecovery: @ 81E1A3C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 16
- lsrs r7, r1, 16
- cmp r7, 0
- bne _081E1AC0
- ldr r0, _081E1AD4 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _081E1AC0
- ldr r0, _081E1AD8 @ =gUnknown_3007464
- ldr r1, [r0]
- ldrb r1, [r1, 0x5]
- adds r6, r0, 0
- cmp r1, 0
- beq _081E1AC0
- ldr r1, _081E1ADC @ =gUnknown_3007460
- ldr r0, [r1]
- strb r7, [r0]
- movs r4, 0
- adds r5, r1, 0
- mov r12, r4
-_081E1A76:
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r4
- lsrs r3, r0, 24
- ldr r2, [r5]
- ldr r0, [r6]
- ldrb r0, [r0, 0x5]
- ands r0, r3
- ldrb r1, [r2, 0x3]
- ands r0, r1
- cmp r0, 0
- beq _081E1AB0
- ldrb r1, [r2, 0x2]
- adds r0, r3, 0
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldr r1, [r5]
- ldrb r0, [r1, 0x3]
- bics r0, r3
- strb r0, [r1, 0x3]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- ldr r0, [r6]
- adds r0, 0xA
- adds r0, r4
- mov r1, r12
- strb r1, [r0]
-_081E1AB0:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081E1A76
- ldr r1, [r6]
- movs r0, 0
- strb r0, [r1, 0x5]
-_081E1AC0:
- mov r0, r8
- adds r1, r7, 0
- bl rfu_STC_REQ_callback
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E1AD4: .4byte gUnknown_3007468
-_081E1AD8: .4byte gUnknown_3007464
-_081E1ADC: .4byte gUnknown_3007460
- thumb_func_end rfu_CB_CHILD_pollConnectRecovery
-
- thumb_func_start rfu_CHILD_getConnectRecoveryStatus
-rfu_CHILD_getConnectRecoveryStatus: @ 81E1AE0
- push {lr}
- adds r2, r0, 0
- movs r0, 0xFF
- strb r0, [r2]
- ldr r0, _081E1B00 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x4D
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _081E1B04
- movs r0, 0x10
- b _081E1B0A
- .align 2, 0
-_081E1B00: .4byte gUnknown_3007468
-_081E1B04:
- ldrb r0, [r1, 0x4]
- strb r0, [r2]
- movs r0, 0
-_081E1B0A:
- pop {r1}
- bx r1
- thumb_func_end rfu_CHILD_getConnectRecoveryStatus
-
- thumb_func_start rfu_REQ_CHILD_endConnectRecovery
-rfu_REQ_CHILD_endConnectRecovery: @ 81E1B10
- push {lr}
- ldr r0, _081E1B20 @ =rfu_CB_CHILD_pollConnectRecovery
- bl STWI_set_Callback_M
- bl STWI_send_CPR_EndREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E1B20: .4byte rfu_CB_CHILD_pollConnectRecovery
- thumb_func_end rfu_REQ_CHILD_endConnectRecovery
-
- thumb_func_start sub_81E1B24
-sub_81E1B24: @ 81E1B24
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r3, [r5]
- ldr r1, [r6]
- subs r2, 0x1
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- beq _081E1B48
- adds r4, r0, 0
-_081E1B3A:
- ldrb r0, [r3]
- strb r0, [r1]
- adds r3, 0x1
- adds r1, 0x1
- subs r2, 0x1
- cmp r2, r4
- bne _081E1B3A
-_081E1B48:
- str r3, [r5]
- str r1, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81E1B24
-
- thumb_func_start rfu_REQ_changeMasterSlave
-rfu_REQ_changeMasterSlave: @ 81E1B54
- push {lr}
- movs r0, 0x1
- bl STWI_read_status
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _081E1B74
- ldr r0, _081E1B70 @ =rfu_STC_REQ_callback
- bl STWI_set_Callback_M
- bl STWI_send_MS_ChangeREQ
- b _081E1B7C
- .align 2, 0
-_081E1B70: .4byte rfu_STC_REQ_callback
-_081E1B74:
- movs r0, 0x27
- movs r1, 0
- bl rfu_STC_REQ_callback
-_081E1B7C:
- pop {r0}
- bx r0
- thumb_func_end rfu_REQ_changeMasterSlave
-
- thumb_func_start rfu_getMasterSlave
-rfu_getMasterSlave: @ 81E1B80
- push {lr}
- movs r0, 0x1
- bl STWI_read_status
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1
- bne _081E1BAE
- ldr r0, _081E1BB4 @ =gRfuState
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x2C
- ldrb r0, [r0]
- cmp r0, 0
- beq _081E1BAE
- ldrb r0, [r1, 0x6]
- cmp r0, 0x27
- beq _081E1BAC
- cmp r0, 0x25
- beq _081E1BAC
- cmp r0, 0x37
- bne _081E1BAE
-_081E1BAC:
- movs r2, 0
-_081E1BAE:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_081E1BB4: .4byte gRfuState
- thumb_func_end rfu_getMasterSlave
-
- thumb_func_start rfu_clearAllSlot
-rfu_clearAllSlot: @ 81E1BB8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _081E1C3C @ =0x04000208
- ldrh r0, [r1]
- mov r8, r0
- movs r0, 0
- strh r0, [r1]
- movs r5, 0
- mov r0, sp
- adds r0, 0x2
- movs r7, 0
- adds r6, r0, 0
-_081E1BD4:
- mov r0, sp
- strh r7, [r0]
- ldr r0, _081E1C40 @ =gUnknown_3007450
- lsls r4, r5, 2
- adds r0, r4, r0
- ldr r1, [r0]
- mov r0, sp
- ldr r2, _081E1C44 @ =0x01000034
- bl CpuSet
- strh r7, [r6]
- ldr r0, _081E1C48 @ =gUnknown_3007440
- adds r4, r0
- ldr r1, [r4]
- adds r0, r6, 0
- ldr r2, _081E1C4C @ =0x0100000a
- bl CpuSet
- ldr r3, _081E1C50 @ =gUnknown_3007460
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r5
- movs r1, 0x10
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _081E1BD4
- ldr r2, [r3]
- movs r1, 0
- movs r0, 0x57
- strb r0, [r2, 0xF]
- ldr r0, [r3]
- strb r1, [r0, 0x4]
- ldr r0, [r3]
- strb r1, [r0, 0x5]
- ldr r0, [r3]
- strb r1, [r0, 0x6]
- ldr r0, _081E1C54 @ =gUnknown_3007464
- ldr r0, [r0]
- strb r1, [r0, 0x2]
- ldr r0, _081E1C3C @ =0x04000208
- mov r1, r8
- strh r1, [r0]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E1C3C: .4byte 0x04000208
-_081E1C40: .4byte gUnknown_3007450
-_081E1C44: .4byte 0x01000034
-_081E1C48: .4byte gUnknown_3007440
-_081E1C4C: .4byte 0x0100000a
-_081E1C50: .4byte gUnknown_3007460
-_081E1C54: .4byte gUnknown_3007464
- thumb_func_end rfu_clearAllSlot
-
- thumb_func_start rfu_STC_releaseFrame
-rfu_STC_releaseFrame: @ 81E1C58
- push {r4-r6,lr}
- adds r4, r2, 0
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r2, 0
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r0, _081E1C90 @ =gUnknown_3007464
- ldr r0, [r0]
- ldrb r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081E1C98
- ldr r6, _081E1C94 @ =gUnknown_3007460
- cmp r3, 0
- bne _081E1C84
- ldr r1, [r6]
- ldrb r0, [r1, 0xF]
- ldrh r4, [r4, 0x2E]
- adds r0, r4
- strb r0, [r1, 0xF]
-_081E1C84:
- ldr r1, [r6]
- ldrb r0, [r1, 0xF]
- adds r0, 0x3
- strb r0, [r1, 0xF]
- b _081E1CB8
- .align 2, 0
-_081E1C90: .4byte gUnknown_3007464
-_081E1C94: .4byte gUnknown_3007460
-_081E1C98:
- ldr r6, _081E1CC0 @ =gUnknown_3007460
- cmp r3, 0
- bne _081E1CAC
- ldr r1, [r6]
- adds r1, 0x10
- adds r1, r2
- ldrb r0, [r1]
- ldrh r4, [r4, 0x2E]
- adds r0, r4
- strb r0, [r1]
-_081E1CAC:
- ldr r1, [r6]
- adds r1, 0x10
- adds r1, r5
- ldrb r0, [r1]
- adds r0, 0x2
- strb r0, [r1]
-_081E1CB8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081E1CC0: .4byte gUnknown_3007460
- thumb_func_end rfu_STC_releaseFrame
-
- thumb_func_start rfu_clearSlot
-rfu_clearSlot: @ 81E1CC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- cmp r7, 0x3
- bls _081E1CE4
- movs r0, 0x80
- lsls r0, 3
- b _081E1E5C
-_081E1CE4:
- movs r0, 0xF
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- bne _081E1CF4
- movs r0, 0xC0
- lsls r0, 3
- b _081E1E5C
-_081E1CF4:
- ldr r1, _081E1D38 @ =0x04000208
- ldrh r0, [r1]
- mov r10, r0
- movs r0, 0
- strh r0, [r1]
- movs r0, 0xC
- mov r2, r8
- ands r0, r2
- cmp r0, 0
- beq _081E1DBC
- movs r3, 0
- ldr r1, _081E1D3C @ =gUnknown_3007450
- lsls r0, r7, 2
- adds r0, r1
- mov r9, r0
-_081E1D12:
- movs r4, 0
- cmp r3, 0
- bne _081E1D44
- movs r0, 0x4
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _081E1D64
- mov r2, r9
- ldr r4, [r2]
- ldr r0, _081E1D40 @ =gUnknown_3007460
- ldr r2, [r0]
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- ldrb r0, [r2, 0x4]
- bics r0, r1
- strb r0, [r2, 0x4]
- b _081E1D64
- .align 2, 0
-_081E1D38: .4byte 0x04000208
-_081E1D3C: .4byte gUnknown_3007450
-_081E1D40: .4byte gUnknown_3007460
-_081E1D44:
- movs r0, 0x8
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _081E1D64
- mov r2, r9
- ldr r0, [r2]
- adds r4, r0, 0
- adds r4, 0x34
- ldr r0, _081E1DF8 @ =gUnknown_3007460
- ldr r2, [r0]
- movs r1, 0x1
- lsls r1, r7
- ldrb r0, [r2, 0x5]
- bics r0, r1
- strb r0, [r2, 0x5]
-_081E1D64:
- adds r6, r3, 0x1
- cmp r4, 0
- beq _081E1DB4
- ldrh r0, [r4]
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081E1DA4
- lsls r1, r3, 24
- lsrs r1, 24
- adds r0, r7, 0
- adds r2, r4, 0
- bl rfu_STC_releaseFrame
- movs r1, 0
- adds r2, r4, 0
- adds r2, 0x2C
- movs r5, 0x1
- movs r3, 0
-_081E1D8E:
- ldrb r0, [r2]
- asrs r0, r1
- ands r0, r5
- cmp r0, 0
- beq _081E1D9A
- strh r3, [r4, 0x2]
-_081E1D9A:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _081E1D8E
-_081E1DA4:
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- mov r0, sp
- adds r1, r4, 0
- ldr r2, _081E1DFC @ =0x0100001a
- bl CpuSet
-_081E1DB4:
- lsls r0, r6, 16
- lsrs r3, r0, 16
- cmp r3, 0x1
- bls _081E1D12
-_081E1DBC:
- movs r0, 0x1
- mov r4, r8
- ands r0, r4
- cmp r0, 0
- beq _081E1E32
- ldr r1, _081E1E00 @ =gUnknown_3007440
- lsls r0, r7, 2
- adds r0, r1
- ldr r3, [r0]
- ldrh r1, [r3]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _081E1E24
- ldr r0, _081E1E04 @ =gUnknown_3007464
- ldr r0, [r0]
- ldrb r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081E1E08
- ldr r2, _081E1DF8 @ =gUnknown_3007460
- ldr r1, [r2]
- ldrb r0, [r1, 0xF]
- adds r0, 0x3
- ldrb r4, [r3, 0x4]
- adds r0, r4
- strb r0, [r1, 0xF]
- b _081E1E1A
- .align 2, 0
-_081E1DF8: .4byte gUnknown_3007460
-_081E1DFC: .4byte 0x0100001a
-_081E1E00: .4byte gUnknown_3007440
-_081E1E04: .4byte gUnknown_3007464
-_081E1E08:
- ldr r2, _081E1E6C @ =gUnknown_3007460
- ldr r1, [r2]
- adds r1, 0x10
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x2
- ldrb r4, [r3, 0x4]
- adds r0, r4
- strb r0, [r1]
-_081E1E1A:
- ldr r2, [r2]
- ldrb r1, [r3, 0x3]
- ldrb r0, [r2, 0x6]
- bics r0, r1
- strb r0, [r2, 0x6]
-_081E1E24:
- mov r0, sp
- movs r1, 0
- strh r1, [r0]
- ldr r2, _081E1E70 @ =0x01000006
- adds r1, r3, 0
- bl CpuSet
-_081E1E32:
- movs r0, 0x2
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _081E1E54
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, _081E1E74 @ =gUnknown_3007440
- lsls r0, r7, 2
- adds r0, r1
- ldr r1, [r0]
- adds r1, 0xC
- ldr r2, _081E1E78 @ =0x01000004
- mov r0, sp
- bl CpuSet
-_081E1E54:
- ldr r0, _081E1E7C @ =0x04000208
- mov r2, r10
- strh r2, [r0]
- movs r0, 0
-_081E1E5C:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081E1E6C: .4byte gUnknown_3007460
-_081E1E70: .4byte 0x01000006
-_081E1E74: .4byte gUnknown_3007440
-_081E1E78: .4byte 0x01000004
-_081E1E7C: .4byte 0x04000208
- thumb_func_end rfu_clearSlot
-
- thumb_func_start rfu_setRecvBuffer
-rfu_setRecvBuffer: @ 81E1E80
- push {r4-r6,lr}
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r2, r3, 0
- lsls r1, 24
- lsrs r1, 24
- adds r4, r1, 0
- cmp r1, 0x3
- bls _081E1E9C
- movs r0, 0x80
- lsls r0, 3
- b _081E1ED4
-_081E1E9C:
- movs r0, 0x20
- ands r0, r3
- cmp r0, 0
- beq _081E1EB8
- ldr r0, _081E1EB4 @ =gUnknown_3007450
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- str r5, [r0, 0x68]
- str r6, [r0, 0x6C]
- b _081E1ED2
- .align 2, 0
-_081E1EB4: .4byte gUnknown_3007450
-_081E1EB8:
- movs r0, 0x10
- ands r2, r0
- cmp r2, 0
- bne _081E1EC6
- movs r0, 0xC0
- lsls r0, 3
- b _081E1ED4
-_081E1EC6:
- ldr r0, _081E1EDC @ =gUnknown_3007440
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- str r5, [r0, 0x14]
- str r6, [r0, 0x18]
-_081E1ED2:
- movs r0, 0
-_081E1ED4:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081E1EDC: .4byte gUnknown_3007440
- thumb_func_end rfu_setRecvBuffer
-
- thumb_func_start rfu_NI_setSendData
-rfu_NI_setSendData: @ 81E1EE0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r3, [sp]
- movs r0, 0x20
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl rfu_STC_setSendData_org
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end rfu_NI_setSendData
-
- thumb_func_start rfu_UNI_setSendData
-rfu_UNI_setSendData: @ 81E1F0C
- push {lr}
- sub sp, 0x4
- adds r3, r1, 0
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _081E1F28 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081E1F2C
- adds r0, r2, 0x3
- b _081E1F2E
- .align 2, 0
-_081E1F28: .4byte gUnknown_3007460
-_081E1F2C:
- adds r0, r2, 0x2
-_081E1F2E:
- lsls r0, 24
- lsrs r2, r0, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x10
- bl rfu_STC_setSendData_org
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x4
- pop {r1}
- bx r1
- thumb_func_end rfu_UNI_setSendData
-
- thumb_func_start rfu_NI_CHILD_setSendGameName
-rfu_NI_CHILD_setSendGameName: @ 81E1F48
- push {lr}
- sub sp, 0x4
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x80
- lsls r1, 17
- lsls r1, r0
- lsrs r1, 24
- ldr r0, _081E1F78 @ =gUnknown_3007460
- ldr r3, [r0]
- adds r3, 0x98
- movs r0, 0x1A
- str r0, [sp]
- movs r0, 0x40
- bl rfu_STC_setSendData_org
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_081E1F78: .4byte gUnknown_3007460
- thumb_func_end rfu_NI_CHILD_setSendGameName
-
- thumb_func_start rfu_STC_setSendData_org
-rfu_STC_setSendData_org: @ 81E1F7C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- str r3, [sp]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r0, _081E1FA8 @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r1, [r2]
- mov r10, r0
- cmp r1, 0xFF
- bne _081E1FB0
- ldr r0, _081E1FAC @ =0x00000301
- b _081E2166
- .align 2, 0
-_081E1FA8: .4byte gUnknown_3007460
-_081E1FAC: .4byte 0x00000301
-_081E1FB0:
- movs r0, 0xF
- ands r0, r3
- cmp r0, 0
- bne _081E1FBE
- movs r0, 0x80
- lsls r0, 3
- b _081E2166
-_081E1FBE:
- ldrb r0, [r2, 0x2]
- ldrb r1, [r2, 0x3]
- orrs r0, r1
- ands r0, r3
- cmp r0, r3
- beq _081E1FD4
- ldr r0, _081E1FD0 @ =0x00000401
- b _081E2166
- .align 2, 0
-_081E1FD0: .4byte 0x00000401
-_081E1FD4:
- movs r0, 0x10
- ands r0, r6
- cmp r0, 0
- beq _081E1FE0
- ldrb r0, [r2, 0x6]
- b _081E1FE2
-_081E1FE0:
- ldrb r0, [r2, 0x4]
-_081E1FE2:
- ands r0, r3
- cmp r0, 0
- beq _081E1FF0
- ldr r0, _081E1FEC @ =0x00000402
- b _081E2166
- .align 2, 0
-_081E1FEC: .4byte 0x00000402
-_081E1FF0:
- movs r2, 0
- movs r0, 0x1
- ands r0, r3
- ldr r4, _081E2020 @ =_Str_RfuHeader
- cmp r0, 0
- bne _081E2012
- movs r1, 0x1
-_081E1FFE:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bhi _081E2012
- adds r0, r3, 0
- asrs r0, r2
- ands r0, r1
- cmp r0, 0
- beq _081E1FFE
-_081E2012:
- mov r0, r10
- ldr r1, [r0]
- ldrb r0, [r1]
- cmp r0, 0x1
- bne _081E2024
- adds r1, 0xF
- b _081E202E
- .align 2, 0
-_081E2020: .4byte _Str_RfuHeader
-_081E2024:
- cmp r0, 0
- bne _081E2030
- adds r0, r2, 0
- adds r0, 0x10
- adds r1, r0
-_081E202E:
- mov r9, r1
-_081E2030:
- mov r1, r10
- ldr r0, [r1]
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r4
- ldrb r4, [r0]
- mov r0, r9
- ldrb r0, [r0]
- cmp r8, r0
- bhi _081E2048
- cmp r8, r4
- bhi _081E204E
-_081E2048:
- movs r0, 0xA0
- lsls r0, 3
- b _081E2166
-_081E204E:
- ldr r1, _081E209C @ =0x04000208
- ldrh r0, [r1]
- str r0, [sp, 0x4]
- movs r7, 0
- strh r7, [r1]
- movs r0, 0x20
- ands r0, r6
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _081E2068
- cmp r6, 0x40
- bne _081E2124
-_081E2068:
- ldr r1, _081E20A0 @ =gUnknown_3007450
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- mov r12, r0
- movs r1, 0
- strh r1, [r0, 0x18]
- mov r1, r12
- adds r1, 0x2D
- mov r2, r12
- str r1, [r2, 0x4]
- movs r0, 0x7
- str r0, [r2, 0x14]
- mov r0, r12
- adds r0, 0x2C
- strb r3, [r0]
- strb r3, [r2, 0x1A]
- mov r2, r8
- subs r0, r2, r4
- mov r2, r12
- strh r0, [r2, 0x2E]
- cmp r5, 0
- beq _081E20A4
- strb r7, [r1]
- b _081E20A8
- .align 2, 0
-_081E209C: .4byte 0x04000208
-_081E20A0: .4byte gUnknown_3007450
-_081E20A4:
- movs r0, 0x1
- strb r0, [r1]
-_081E20A8:
- ldr r0, [sp, 0x28]
- mov r1, r12
- str r0, [r1, 0x30]
- ldr r2, [sp]
- str r2, [r1, 0x28]
- movs r1, 0
- mov r0, r12
- strb r1, [r0, 0x1F]
- adds r0, 0x20
- strb r1, [r0]
- mov r4, r12
- adds r4, 0x1B
- movs r6, 0
- mov r2, r12
- adds r2, 0x21
- movs r5, 0x1
-_081E20C8:
- adds r0, r4, r1
- strb r6, [r0]
- adds r0, r2, r1
- strb r5, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _081E20C8
- movs r2, 0
- movs r5, 0x1
- ldr r4, _081E211C @ =gUnknown_3007450
- movs r1, 0
-_081E20E2:
- adds r0, r3, 0
- asrs r0, r2
- ands r0, r5
- cmp r0, 0
- beq _081E20F4
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- strh r1, [r0, 0x2]
-_081E20F4:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _081E20E2
- mov r1, r10
- ldr r2, [r1]
- ldrb r1, [r2, 0x4]
- adds r0, r3, 0
- orrs r0, r1
- strb r0, [r2, 0x4]
- mov r2, r9
- ldrb r0, [r2]
- mov r1, r8
- subs r0, r1
- strb r0, [r2]
- ldr r0, _081E2120 @ =0x00008021
- mov r2, r12
- strh r0, [r2]
- b _081E215C
- .align 2, 0
-_081E211C: .4byte gUnknown_3007450
-_081E2120: .4byte 0x00008021
-_081E2124:
- movs r0, 0x10
- ands r0, r6
- cmp r0, 0
- beq _081E215C
- ldr r1, _081E2178 @ =gUnknown_3007440
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, [r0]
- strb r3, [r1, 0x3]
- ldr r0, [sp]
- str r0, [r1, 0x8]
- mov r2, r8
- subs r0, r2, r4
- strh r0, [r1, 0x4]
- mov r2, r9
- ldrb r0, [r2]
- mov r2, r8
- subs r0, r2
- mov r2, r9
- strb r0, [r2]
- ldr r0, _081E217C @ =0x00008024
- strh r0, [r1]
- mov r0, r10
- ldr r2, [r0]
- ldrb r1, [r2, 0x6]
- adds r0, r3, 0
- orrs r0, r1
- strb r0, [r2, 0x6]
-_081E215C:
- ldr r0, _081E2180 @ =0x04000208
- mov r1, sp
- ldrh r1, [r1, 0x4]
- strh r1, [r0]
- movs r0, 0
-_081E2166:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081E2178: .4byte gUnknown_3007440
-_081E217C: .4byte 0x00008024
-_081E2180: .4byte 0x04000208
- thumb_func_end rfu_STC_setSendData_org
-
- thumb_func_start rfu_changeSendTarget
-rfu_changeSendTarget: @ 81E2184
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- cmp r7, 0x3
- bls _081E21A8
- movs r0, 0x80
- lsls r0, 3
- b _081E22DC
-_081E21A8:
- cmp r0, 0x20
- bne _081E2248
- ldr r0, _081E2238 @ =gUnknown_3007450
- mov r12, r0
- lsls r0, r7, 2
- add r0, r12
- ldr r5, [r0]
- ldrh r2, [r5]
- ldr r1, _081E223C @ =0x00008020
- adds r0, r1, 0
- ands r0, r2
- cmp r0, r1
- bne _081E225E
- ldrb r0, [r5, 0x1A]
- adds r3, r6, 0
- eors r3, r0
- adds r2, r3, 0
- ands r2, r6
- cmp r2, 0
- bne _081E2296
- cmp r3, 0
- bne _081E21D6
- b _081E22DA
-_081E21D6:
- ldr r1, _081E2240 @ =0x04000208
- ldrh r0, [r1]
- mov r8, r0
- strh r2, [r1]
- movs r2, 0
- mvns r1, r3
- str r1, [sp]
- lsls r4, r6, 24
- mov r10, r4
- movs r0, 0x1
- mov r9, r0
- movs r1, 0
-_081E21EE:
- adds r0, r3, 0
- asrs r0, r2
- mov r4, r9
- ands r0, r4
- cmp r0, 0
- beq _081E2202
- lsls r0, r2, 2
- add r0, r12
- ldr r0, [r0]
- strh r1, [r0, 0x2]
-_081E2202:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _081E21EE
- ldr r0, _081E2244 @ =gUnknown_3007460
- ldr r1, [r0]
- ldrb r0, [r1, 0x4]
- ldr r2, [sp]
- ands r2, r0
- strb r2, [r1, 0x4]
- strb r6, [r5, 0x1A]
- mov r0, r10
- cmp r0, 0
- bne _081E222E
- adds r0, r7, 0
- movs r1, 0
- adds r2, r5, 0
- bl rfu_STC_releaseFrame
- movs r0, 0x27
- strh r0, [r5]
-_081E222E:
- ldr r0, _081E2240 @ =0x04000208
- mov r1, r8
- strh r1, [r0]
- b _081E22DA
- .align 2, 0
-_081E2238: .4byte gUnknown_3007450
-_081E223C: .4byte 0x00008020
-_081E2240: .4byte 0x04000208
-_081E2244: .4byte gUnknown_3007460
-_081E2248:
- cmp r3, 0x10
- bne _081E22D4
- ldr r3, _081E2264 @ =gUnknown_3007440
- lsls r1, r7, 2
- adds r0, r1, r3
- ldr r0, [r0]
- ldrh r2, [r0]
- ldr r0, _081E2268 @ =0x00008024
- adds r5, r3, 0
- cmp r2, r0
- beq _081E2270
-_081E225E:
- ldr r0, _081E226C @ =0x00000403
- b _081E22DC
- .align 2, 0
-_081E2264: .4byte gUnknown_3007440
-_081E2268: .4byte 0x00008024
-_081E226C: .4byte 0x00000403
-_081E2270:
- movs r3, 0
- movs r2, 0
- adds r4, r5, 0
-_081E2276:
- cmp r2, r7
- beq _081E2284
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- orrs r3, r0
-_081E2284:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _081E2276
- adds r2, r6, 0
- ands r2, r3
- cmp r2, 0
- beq _081E22A0
-_081E2296:
- ldr r0, _081E229C @ =0x00000404
- b _081E22DC
- .align 2, 0
-_081E229C: .4byte 0x00000404
-_081E22A0:
- ldr r3, _081E22CC @ =0x04000208
- ldrh r0, [r3]
- mov r8, r0
- strh r2, [r3]
- ldr r4, _081E22D0 @ =gUnknown_3007460
- ldr r2, [r4]
- adds r5, r1, r5
- ldr r0, [r5]
- ldrb r1, [r0, 0x3]
- ldrb r0, [r2, 0x6]
- bics r0, r1
- strb r0, [r2, 0x6]
- ldr r2, [r4]
- ldrb r1, [r2, 0x6]
- adds r0, r6, 0
- orrs r0, r1
- strb r0, [r2, 0x6]
- ldr r0, [r5]
- strb r6, [r0, 0x3]
- mov r2, r8
- strh r2, [r3]
- b _081E22DA
- .align 2, 0
-_081E22CC: .4byte 0x04000208
-_081E22D0: .4byte gUnknown_3007460
-_081E22D4:
- movs r0, 0xC0
- lsls r0, 3
- b _081E22DC
-_081E22DA:
- movs r0, 0
-_081E22DC:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end rfu_changeSendTarget
-
- thumb_func_start rfu_NI_stopReceivingData
-rfu_NI_stopReceivingData: @ 81E22EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _081E22FC
- movs r0, 0x80
- lsls r0, 3
- b _081E2356
-_081E22FC:
- ldr r1, _081E2328 @ =gUnknown_3007450
- lsls r0, r3, 2
- adds r0, r1
- ldr r2, [r0]
- adds r5, r2, 0
- adds r5, 0x34
- ldr r1, _081E232C @ =0x04000208
- ldrh r0, [r1]
- adds r4, r0, 0
- movs r0, 0
- strh r0, [r1]
- ldrh r1, [r2, 0x34]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _081E2350
- ldr r0, _081E2330 @ =0x00008043
- cmp r1, r0
- bne _081E2334
- movs r0, 0x48
- b _081E2336
- .align 2, 0
-_081E2328: .4byte gUnknown_3007450
-_081E232C: .4byte 0x04000208
-_081E2330: .4byte 0x00008043
-_081E2334:
- movs r0, 0x47
-_081E2336:
- strh r0, [r2, 0x34]
- ldr r0, _081E235C @ =gUnknown_3007460
- ldr r2, [r0]
- movs r1, 0x1
- lsls r1, r3
- ldrb r0, [r2, 0x5]
- bics r0, r1
- strb r0, [r2, 0x5]
- adds r0, r3, 0
- movs r1, 0x1
- adds r2, r5, 0
- bl rfu_STC_releaseFrame
-_081E2350:
- ldr r0, _081E2360 @ =0x04000208
- strh r4, [r0]
- movs r0, 0
-_081E2356:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081E235C: .4byte gUnknown_3007460
-_081E2360: .4byte 0x04000208
- thumb_func_end rfu_NI_stopReceivingData
-
- thumb_func_start rfu_UNI_changeAndReadySendData
-rfu_UNI_changeAndReadySendData: @ 81E2364
- push {r4-r7,lr}
- adds r7, r1, 0
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r0, 0x3
- bls _081E237C
- movs r0, 0x80
- lsls r0, 3
- b _081E23F0
-_081E237C:
- ldr r1, _081E2390 @ =gUnknown_3007440
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- ldrh r1, [r4]
- ldr r0, _081E2394 @ =0x00008024
- cmp r1, r0
- beq _081E239C
- ldr r0, _081E2398 @ =0x00000403
- b _081E23F0
- .align 2, 0
-_081E2390: .4byte gUnknown_3007440
-_081E2394: .4byte 0x00008024
-_081E2398: .4byte 0x00000403
-_081E239C:
- ldr r0, _081E23B0 @ =gUnknown_3007460
- ldr r1, [r0]
- ldrb r0, [r1]
- cmp r0, 0x1
- bne _081E23B4
- adds r6, r1, 0
- adds r6, 0xF
- ldrb r0, [r4, 0x4]
- ldrb r1, [r1, 0xF]
- b _081E23C2
- .align 2, 0
-_081E23B0: .4byte gUnknown_3007460
-_081E23B4:
- adds r0, r3, 0
- adds r0, 0x10
- adds r6, r1, r0
- adds r1, 0x10
- adds r1, r3
- ldrb r0, [r4, 0x4]
- ldrb r1, [r1]
-_081E23C2:
- adds r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r5
- bcc _081E23EC
- ldr r2, _081E23E8 @ =0x04000208
- ldrh r1, [r2]
- movs r0, 0
- strh r0, [r2]
- str r7, [r4, 0x8]
- subs r0, r3, r5
- strb r0, [r6]
- strh r5, [r4, 0x4]
- movs r0, 0x1
- strb r0, [r4, 0x2]
- strh r1, [r2]
- movs r0, 0
- b _081E23F0
- .align 2, 0
-_081E23E8: .4byte 0x04000208
-_081E23EC:
- movs r0, 0xA0
- lsls r0, 3
-_081E23F0:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end rfu_UNI_changeAndReadySendData
-
- thumb_func_start rfu_UNI_readySendData
-rfu_UNI_readySendData: @ 81E23F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bhi _081E2416
- ldr r1, _081E241C @ =gUnknown_3007440
- lsls r0, 2
- adds r0, r1
- ldr r2, [r0]
- ldrh r1, [r2]
- ldr r0, _081E2420 @ =0x00008024
- cmp r1, r0
- bne _081E2416
- movs r0, 0x1
- strb r0, [r2, 0x2]
-_081E2416:
- pop {r0}
- bx r0
- .align 2, 0
-_081E241C: .4byte gUnknown_3007440
-_081E2420: .4byte 0x00008024
- thumb_func_end rfu_UNI_readySendData
-
- thumb_func_start rfu_UNI_clearRecvNewDataFlag
-rfu_UNI_clearRecvNewDataFlag: @ 81E2424
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bhi _081E243A
- ldr r1, _081E2440 @ =gUnknown_3007440
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x12]
-_081E243A:
- pop {r0}
- bx r0
- .align 2, 0
-_081E2440: .4byte gUnknown_3007440
- thumb_func_end rfu_UNI_clearRecvNewDataFlag
-
- thumb_func_start rfu_REQ_sendData
-rfu_REQ_sendData: @ 81E2444
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _081E2490 @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r1, [r2]
- adds r4, r0, 0
- cmp r1, 0xFF
- bne _081E2458
- b _081E257E
-_081E2458:
- cmp r1, 0x1
- bne _081E24E8
- ldrb r0, [r2, 0x4]
- ldrb r1, [r2, 0x5]
- adds r3, r0, 0
- orrs r3, r1
- ldrb r0, [r2, 0x6]
- orrs r3, r0
- cmp r3, 0
- bne _081E24E8
- ldr r0, _081E2494 @ =gUnknown_3007464
- ldr r2, [r0]
- ldrb r1, [r2, 0x3]
- adds r4, r0, 0
- cmp r1, 0
- beq _081E2480
- movs r0, 0x10
- strb r0, [r2, 0x8]
- ldr r0, [r4]
- strb r3, [r0, 0x7]
-_081E2480:
- ldr r1, [r4]
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _081E2498
- subs r0, 0x1
- strb r0, [r1, 0x8]
- b _081E249E
- .align 2, 0
-_081E2490: .4byte gUnknown_3007460
-_081E2494: .4byte gUnknown_3007464
-_081E2498:
- ldrb r0, [r1, 0x7]
- adds r0, 0x1
- strb r0, [r1, 0x7]
-_081E249E:
- ldr r1, [r4]
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- bne _081E24B0
- ldrb r1, [r1, 0x7]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081E2542
-_081E24B0:
- ldr r4, _081E24D4 @ =gUnknown_3007468
- ldr r1, [r4]
- movs r0, 0x1
- str r0, [r1, 0x68]
- movs r0, 0xFF
- str r0, [r1, 0x78]
- ldr r0, _081E24D8 @ =sub_81E2630
- bl STWI_set_Callback_M
- cmp r5, 0
- bne _081E24DC
- ldr r0, [r4]
- adds r0, 0x68
- movs r1, 0x1
- bl STWI_send_DataTxREQ
- b _081E257E
- .align 2, 0
-_081E24D4: .4byte gUnknown_3007468
-_081E24D8: .4byte sub_81E2630
-_081E24DC:
- ldr r0, [r4]
- adds r0, 0x68
- movs r1, 0x1
- bl STWI_send_DataTxAndChangeREQ
- b _081E257E
-_081E24E8:
- ldr r0, [r4]
- ldrb r0, [r0, 0xE]
- cmp r0, 0
- bne _081E24F4
- bl rfu_constructSendLLFrame
-_081E24F4:
- ldr r0, [r4]
- ldrb r0, [r0, 0xE]
- cmp r0, 0
- beq _081E2542
- ldr r0, _081E2520 @ =rfu_CB_sendData
- bl STWI_set_Callback_M
- cmp r5, 0
- beq _081E252C
- ldr r0, _081E2524 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0x68
- ldr r1, _081E2528 @ =gUnknown_3007464
- ldr r1, [r1]
- ldr r1, [r1, 0x24]
- adds r1, 0x4
- lsls r1, 24
- lsrs r1, 24
- bl STWI_send_DataTxAndChangeREQ
- b _081E257E
- .align 2, 0
-_081E2520: .4byte rfu_CB_sendData
-_081E2524: .4byte gUnknown_3007468
-_081E2528: .4byte gUnknown_3007464
-_081E252C:
- ldr r0, _081E2564 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0x68
- ldr r1, _081E2568 @ =gUnknown_3007464
- ldr r1, [r1]
- ldr r1, [r1, 0x24]
- adds r1, 0x4
- lsls r1, 24
- lsrs r1, 24
- bl STWI_send_DataTxREQ
-_081E2542:
- cmp r5, 0
- beq _081E257E
- ldr r0, _081E256C @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081E2574
- ldr r0, _081E2570 @ =gRfuState
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- cmp r1, 0
- beq _081E257E
- movs r0, 0x27
- bl _call_via_r1
- b _081E257E
- .align 2, 0
-_081E2564: .4byte gUnknown_3007468
-_081E2568: .4byte gUnknown_3007464
-_081E256C: .4byte gUnknown_3007460
-_081E2570: .4byte gRfuState
-_081E2574:
- ldr r0, _081E2584 @ =rfu_CB_sendData2
- bl STWI_set_Callback_M
- bl STWI_send_MS_ChangeREQ
-_081E257E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081E2584: .4byte rfu_CB_sendData2
- thumb_func_end rfu_REQ_sendData
-
- thumb_func_start rfu_CB_sendData
-rfu_CB_sendData: @ 81E2588
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 16
- lsrs r7, r1, 16
- cmp r7, 0
- bne _081E25F2
- movs r6, 0
- ldr r0, _081E2610 @ =0x00008020
- mov r8, r0
-_081E259C:
- ldr r0, _081E2614 @ =gUnknown_3007440
- lsls r2, r6, 2
- adds r0, r2, r0
- ldr r1, [r0]
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _081E25AE
- movs r0, 0
- strb r0, [r1, 0x2]
-_081E25AE:
- ldr r0, _081E2618 @ =gUnknown_3007450
- adds r0, r2, r0
- ldr r4, [r0]
- ldrh r0, [r4]
- cmp r0, r8
- bne _081E25E8
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- bl rfu_STC_releaseFrame
- ldr r5, _081E261C @ =gUnknown_3007460
- ldr r2, [r5]
- ldrb r1, [r4, 0x1A]
- ldrb r0, [r2, 0x4]
- bics r0, r1
- strb r0, [r2, 0x4]
- adds r0, r4, 0
- adds r0, 0x2D
- ldrb r3, [r0]
- cmp r3, 0x1
- bne _081E25E4
- ldr r1, [r5]
- lsls r3, r6
- ldrb r0, [r1, 0x7]
- orrs r3, r0
- strb r3, [r1, 0x7]
-_081E25E4:
- movs r0, 0x26
- strh r0, [r4]
-_081E25E8:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _081E259C
-_081E25F2:
- ldr r0, _081E261C @ =gUnknown_3007460
- ldr r1, [r0]
- ldrb r0, [r1, 0xE]
- movs r0, 0
- strb r0, [r1, 0xE]
- movs r0, 0x24
- adds r1, r7, 0
- bl rfu_STC_REQ_callback
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E2610: .4byte 0x00008020
-_081E2614: .4byte gUnknown_3007440
-_081E2618: .4byte gUnknown_3007450
-_081E261C: .4byte gUnknown_3007460
- thumb_func_end rfu_CB_sendData
-
- thumb_func_start rfu_CB_sendData2
-rfu_CB_sendData2: @ 81E2620
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x24
- bl rfu_STC_REQ_callback
- pop {r0}
- bx r0
- thumb_func_end rfu_CB_sendData2
-
- thumb_func_start sub_81E2630
-sub_81E2630: @ 81E2630
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0
- beq _081E2646
- movs r0, 0x24
- bl rfu_STC_REQ_callback
- b _081E2652
-_081E2646:
- cmp r0, 0xFF
- bne _081E2652
- movs r0, 0xFF
- movs r1, 0
- bl rfu_STC_REQ_callback
-_081E2652:
- pop {r0}
- bx r0
- thumb_func_end sub_81E2630
-
- thumb_func_start rfu_constructSendLLFrame
-rfu_constructSendLLFrame: @ 81E2658
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _081E2704 @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _081E2670
- b _081E2774
-_081E2670:
- ldrb r0, [r2, 0x4]
- ldrb r1, [r2, 0x5]
- orrs r0, r1
- ldrb r1, [r2, 0x6]
- orrs r0, r1
- cmp r0, 0
- beq _081E2774
- ldrb r0, [r2, 0xE]
- movs r0, 0
- strb r0, [r2, 0xE]
- mov r8, r0
- ldr r0, _081E2708 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0x6C
- str r0, [sp]
- movs r6, 0
- movs r0, 0x80
- lsls r0, 8
- mov r9, r0
- ldr r1, _081E270C @ =0x00008024
- mov r10, r1
-_081E269A:
- movs r5, 0
- ldr r0, _081E2710 @ =gUnknown_3007450
- lsls r7, r6, 2
- adds r4, r7, r0
- ldr r2, [r4]
- ldrh r1, [r2]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- beq _081E26BA
- adds r0, r6, 0
- mov r1, sp
- bl rfu_STC_NI_constructLLSF
- lsls r0, 16
- lsrs r5, r0, 16
-_081E26BA:
- ldr r2, [r4]
- ldrh r1, [r2, 0x34]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- beq _081E26D6
- adds r2, 0x34
- adds r0, r6, 0
- mov r1, sp
- bl rfu_STC_NI_constructLLSF
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0
-_081E26D6:
- ldr r0, _081E2714 @ =gUnknown_3007440
- adds r0, r7, r0
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, r10
- bne _081E26F0
- adds r0, r6, 0
- mov r1, sp
- bl rfu_STC_UNI_constructLLSF
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0
-_081E26F0:
- cmp r5, 0
- beq _081E2724
- ldr r0, _081E2704 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081E2718
- add r8, r5
- b _081E2724
- .align 2, 0
-_081E2704: .4byte gUnknown_3007460
-_081E2708: .4byte gUnknown_3007468
-_081E270C: .4byte 0x00008024
-_081E2710: .4byte gUnknown_3007450
-_081E2714: .4byte gUnknown_3007440
-_081E2718:
- adds r0, r7, r6
- adds r0, 0x8
- lsls r5, r0
- mov r2, r8
- orrs r2, r5
- mov r8, r2
-_081E2724:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _081E269A
- ldr r6, _081E2784 @ =gUnknown_3007464
- mov r0, r8
- cmp r0, 0
- beq _081E276E
- ldr r2, [sp]
- movs r0, 0x3
- ands r0, r2
- ldr r5, _081E2788 @ =gUnknown_3007460
- ldr r1, _081E278C @ =gUnknown_3007468
- cmp r0, 0
- beq _081E2756
- movs r4, 0
- movs r3, 0x3
-_081E2748:
- strb r4, [r2]
- adds r0, r2, 0x1
- str r0, [sp]
- adds r2, r0, 0
- ands r0, r3
- cmp r0, 0
- bne _081E2748
-_081E2756:
- ldr r0, [r1]
- mov r2, r8
- str r2, [r0, 0x68]
- ldr r0, [r5]
- ldrb r0, [r0]
- cmp r0, 0
- bne _081E276E
- ldr r0, [sp]
- subs r0, 0x6C
- ldr r1, [r1]
- subs r0, r1
- mov r8, r0
-_081E276E:
- ldr r0, [r6]
- mov r1, r8
- str r1, [r0, 0x24]
-_081E2774:
- 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
-_081E2784: .4byte gUnknown_3007464
-_081E2788: .4byte gUnknown_3007460
-_081E278C: .4byte gUnknown_3007468
- thumb_func_end rfu_constructSendLLFrame
-
- thumb_func_start rfu_STC_NI_constructLLSF
-rfu_STC_NI_constructLLSF: @ 81E2790
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r12, r1
- adds r4, r2, 0
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r2, _081E280C @ =gUnknown_3007460
- ldr r0, [r2]
- ldrb r0, [r0]
- lsls r0, 4
- ldr r1, _081E2810 @ =_Str_RfuHeader
- adds r0, r1
- mov r8, r0
- ldrh r1, [r4]
- ldr r0, _081E2814 @ =0x00008022
- cmp r1, r0
- bne _081E27FA
- adds r3, r4, 0
- adds r3, 0x20
- ldrb r1, [r3]
- lsls r1, 2
- adds r5, r4, 0x4
- adds r1, r5, r1
- ldr r2, [r4, 0x28]
- ldr r0, [r4, 0x30]
- adds r2, r0
- ldr r0, [r1]
- adds r6, r3, 0
- cmp r0, r2
- bcc _081E27FA
- movs r7, 0
-_081E27D8:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _081E27E8
- strb r7, [r6]
-_081E27E8:
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r5, r1
- ldr r2, [r4, 0x28]
- ldr r0, [r4, 0x30]
- adds r2, r0
- ldr r0, [r1]
- cmp r0, r2
- bcs _081E27D8
-_081E27FA:
- ldrh r1, [r4]
- movs r0, 0x40
- ands r0, r1
- mov r9, r1
- cmp r0, 0
- beq _081E2818
- movs r5, 0
- b _081E285C
- .align 2, 0
-_081E280C: .4byte gUnknown_3007460
-_081E2810: .4byte _Str_RfuHeader
-_081E2814: .4byte 0x00008022
-_081E2818:
- ldr r0, _081E2844 @ =0x00008022
- cmp r9, r0
- bne _081E284C
- adds r3, r4, 0
- adds r3, 0x20
- ldrb r0, [r3]
- lsls r0, 2
- adds r1, r4, 0x4
- adds r1, r0
- ldrh r7, [r4, 0x2E]
- ldr r5, [r1]
- adds r2, r5, r7
- ldr r1, [r4, 0x28]
- ldr r0, [r4, 0x30]
- adds r0, r1, r0
- adds r6, r3, 0
- cmp r2, r0
- bls _081E2848
- subs r0, r5
- lsls r0, 16
- lsrs r5, r0, 16
- b _081E2860
- .align 2, 0
-_081E2844: .4byte 0x00008022
-_081E2848:
- adds r5, r7, 0
- b _081E2860
-_081E284C:
- ldrh r2, [r4, 0x2E]
- ldr r0, [r4, 0x14]
- cmp r0, r2
- bcc _081E2858
- adds r5, r2, 0
- b _081E285C
-_081E2858:
- lsls r0, 16
- lsrs r5, r0, 16
-_081E285C:
- adds r6, r4, 0
- adds r6, 0x20
-_081E2860:
- movs r3, 0xF
- mov r0, r9
- ands r3, r0
- mov r1, r8
- ldrb r1, [r1, 0x3]
- lsls r3, r1
- ldrb r0, [r4, 0x1F]
- mov r2, r8
- ldrb r2, [r2, 0x4]
- lsls r0, r2
- orrs r3, r0
- ldrb r1, [r6]
- adds r0, r1, 0
- mov r7, r8
- ldrb r7, [r7, 0x5]
- lsls r0, r7
- orrs r3, r0
- adds r0, r4, 0
- adds r0, 0x21
- adds r0, r1
- ldrb r0, [r0]
- mov r1, r8
- ldrb r1, [r1, 0x6]
- lsls r0, r1
- orrs r3, r0
- orrs r3, r5
- str r3, [sp]
- ldr r2, _081E291C @ =gUnknown_3007460
- ldr r0, [r2]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081E28A8
- ldrb r0, [r4, 0x1A]
- lsls r0, 18
- orrs r3, r0
- str r3, [sp]
-_081E28A8:
- mov r2, sp
- movs r3, 0
- mov r7, r8
- ldrb r7, [r7]
- cmp r3, r7
- bcs _081E28D2
-_081E28B4:
- mov r0, r12
- ldr r1, [r0]
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- mov r7, r12
- str r1, [r7]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- mov r0, r8
- ldrb r0, [r0]
- cmp r3, r0
- bcc _081E28B4
-_081E28D2:
- cmp r5, 0
- beq _081E28F2
- ldrb r1, [r6]
- lsls r1, 2
- adds r0, r4, 0x4
- adds r0, r1
- ldr r0, [r0]
- str r0, [sp, 0x4]
- ldr r0, _081E2920 @ =gUnknown_3007468
- ldr r1, [r0]
- add r0, sp, 0x4
- ldr r3, [r1, 0x4]
- mov r1, r12
- adds r2, r5, 0
- bl _call_via_r3
-_081E28F2:
- ldrh r1, [r4]
- ldr r0, _081E2924 @ =0x00008022
- cmp r1, r0
- bne _081E290C
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _081E290C
- movs r0, 0
- strb r0, [r6]
-_081E290C:
- ldr r0, _081E291C @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r1, [r2]
- cmp r1, 0x1
- bne _081E2928
- ldrb r0, [r2, 0xE]
- strb r1, [r2, 0xE]
- b _081E2936
- .align 2, 0
-_081E291C: .4byte gUnknown_3007460
-_081E2920: .4byte gUnknown_3007468
-_081E2924: .4byte 0x00008022
-_081E2928:
- movs r0, 0x1
- mov r1, r10
- lsls r0, r1
- ldrb r1, [r2, 0xE]
- orrs r0, r1
- ldrb r1, [r2, 0xE]
- strb r0, [r2, 0xE]
-_081E2936:
- mov r2, r8
- ldrb r0, [r2]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end rfu_STC_NI_constructLLSF
-
- thumb_func_start rfu_STC_UNI_constructLLSF
-rfu_STC_UNI_constructLLSF: @ 81E2950
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r6, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _081E2978 @ =gUnknown_3007440
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- ldrb r0, [r4, 0x2]
- cmp r0, 0
- beq _081E2974
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- bne _081E297C
-_081E2974:
- movs r0, 0
- b _081E2A18
- .align 2, 0
-_081E2978: .4byte gUnknown_3007440
-_081E297C:
- ldr r0, _081E29F4 @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r0, [r2]
- lsls r0, 4
- ldr r1, _081E29F8 @ =_Str_RfuHeader
- adds r5, r0, r1
- ldrh r0, [r4]
- movs r1, 0xF
- ands r1, r0
- ldrb r0, [r5, 0x3]
- lsls r1, r0
- ldrh r0, [r4, 0x4]
- orrs r1, r0
- str r1, [sp]
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _081E29A6
- ldrb r0, [r4, 0x3]
- lsls r0, 18
- orrs r1, r0
- str r1, [sp]
-_081E29A6:
- mov r2, sp
- movs r3, 0
- ldr r1, _081E29FC @ =gUnknown_3007468
- mov r12, r1
- add r7, sp, 0x4
- ldrb r0, [r5]
- cmp r3, r0
- bcs _081E29CE
-_081E29B6:
- ldr r1, [r6]
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- str r1, [r6]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- ldrb r1, [r5]
- cmp r3, r1
- bcc _081E29B6
-_081E29CE:
- ldr r0, [r4, 0x8]
- str r0, [sp, 0x4]
- mov r2, r12
- ldr r0, [r2]
- ldrh r2, [r4, 0x4]
- ldr r3, [r0, 0x4]
- adds r0, r7, 0
- adds r1, r6, 0
- bl _call_via_r3
- ldr r0, _081E29F4 @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _081E2A00
- ldrb r0, [r2, 0xE]
- movs r0, 0x10
- b _081E2A0C
- .align 2, 0
-_081E29F4: .4byte gUnknown_3007460
-_081E29F8: .4byte _Str_RfuHeader
-_081E29FC: .4byte gUnknown_3007468
-_081E2A00:
- movs r0, 0x10
- mov r1, r8
- lsls r0, r1
- ldrb r1, [r2, 0xE]
- orrs r0, r1
- ldrb r1, [r2, 0xE]
-_081E2A0C:
- strb r0, [r2, 0xE]
- ldrh r0, [r4, 0x4]
- ldrb r5, [r5]
- adds r0, r5
- lsls r0, 16
- lsrs r0, 16
-_081E2A18:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end rfu_STC_UNI_constructLLSF
-
- thumb_func_start rfu_REQ_recvData
-rfu_REQ_recvData: @ 81E2A24
- push {r4,lr}
- ldr r0, _081E2A58 @ =gUnknown_3007460
- ldr r4, [r0]
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _081E2A50
- ldr r2, _081E2A5C @ =gUnknown_3007464
- ldr r3, [r2]
- ldrb r0, [r4, 0x4]
- ldrb r1, [r4, 0x5]
- orrs r0, r1
- ldrb r1, [r4, 0x6]
- orrs r0, r1
- movs r1, 0
- strb r0, [r3, 0x3]
- ldr r0, [r2]
- strb r1, [r0, 0x4]
- ldr r0, _081E2A60 @ =rfu_CB_recvData
- bl STWI_set_Callback_M
- bl STWI_send_DataRxREQ
-_081E2A50:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081E2A58: .4byte gUnknown_3007460
-_081E2A5C: .4byte gUnknown_3007464
-_081E2A60: .4byte rfu_CB_recvData
- thumb_func_end rfu_REQ_recvData
-
- thumb_func_start rfu_CB_recvData
-rfu_CB_recvData: @ 81E2A64
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r7, r1, 16
- cmp r7, 0
- bne _081E2B28
- ldr r0, _081E2AA0 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _081E2B28
- ldr r0, _081E2AA4 @ =gUnknown_3007464
- ldr r0, [r0]
- strb r7, [r0, 0x1]
- ldr r0, _081E2AA8 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081E2AAC
- bl rfu_STC_PARENT_analyzeRecvPacket
- b _081E2AB0
- .align 2, 0
-_081E2AA0: .4byte gUnknown_3007468
-_081E2AA4: .4byte gUnknown_3007464
-_081E2AA8: .4byte gUnknown_3007460
-_081E2AAC:
- bl rfu_STC_CHILD_analyzeRecvPacket
-_081E2AB0:
- movs r6, 0
- ldr r0, _081E2B40 @ =0x00008043
- mov r8, r0
- ldr r3, _081E2B44 @ =gUnknown_3007460
-_081E2AB8:
- ldr r0, _081E2B48 @ =gUnknown_3007450
- lsls r1, r6, 2
- adds r1, r0
- ldr r4, [r1]
- ldrh r0, [r4, 0x34]
- cmp r0, r8
- bne _081E2B0A
- ldr r0, _081E2B4C @ =gUnknown_3007464
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- asrs r0, r6
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081E2B0A
- adds r5, r4, 0
- adds r5, 0x34
- adds r0, r4, 0
- adds r0, 0x61
- ldrb r2, [r0]
- cmp r2, 0x1
- bne _081E2AEE
- ldr r1, [r3]
- lsls r2, r6
- ldrb r0, [r1, 0x7]
- orrs r2, r0
- strb r2, [r1, 0x7]
-_081E2AEE:
- adds r0, r6, 0
- movs r1, 0x1
- adds r2, r5, 0
- str r3, [sp]
- bl rfu_STC_releaseFrame
- ldr r3, [sp]
- ldr r2, [r3]
- ldrb r1, [r5, 0x1A]
- ldrb r0, [r2, 0x5]
- bics r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x46
- strh r0, [r4, 0x34]
-_081E2B0A:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _081E2AB8
- ldr r0, _081E2B4C @ =gUnknown_3007464
- ldr r1, [r0]
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _081E2B28
- adds r7, r0, 0
- movs r1, 0xE0
- lsls r1, 3
- adds r0, r1, 0
- orrs r7, r0
-_081E2B28:
- mov r0, r9
- adds r1, r7, 0
- bl rfu_STC_REQ_callback
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E2B40: .4byte 0x00008043
-_081E2B44: .4byte gUnknown_3007460
-_081E2B48: .4byte gUnknown_3007450
-_081E2B4C: .4byte gUnknown_3007464
- thumb_func_end rfu_CB_recvData
-
- thumb_func_start rfu_STC_PARENT_analyzeRecvPacket
-rfu_STC_PARENT_analyzeRecvPacket: @ 81E2B50
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, _081E2BE0 @ =gUnknown_3007468
- ldr r0, [r1]
- adds r0, 0xDC
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- lsrs r3, r0, 8
- movs r5, 0
- mov r12, r1
- movs r7, 0x1F
- ldr r4, _081E2BE4 @ =gUnknown_3007464
- movs r6, 0x1
-_081E2B6A:
- mov r0, sp
- adds r1, r0, r5
- adds r0, r3, 0
- ands r0, r7
- strb r0, [r1]
- lsrs r3, 5
- cmp r0, 0
- bne _081E2B86
- ldr r0, [r4]
- adds r1, r6, 0
- lsls r1, r5
- ldrb r2, [r0, 0x1]
- orrs r1, r2
- strb r1, [r0, 0x1]
-_081E2B86:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081E2B6A
- mov r1, r12
- ldr r0, [r1]
- adds r0, 0xDC
- ldr r0, [r0]
- adds r6, r0, 0
- adds r6, 0x8
- movs r5, 0
-_081E2B9E:
- mov r0, sp
- adds r1, r0, r5
- ldrb r0, [r1]
- adds r7, r5, 0x1
- cmp r0, 0
- beq _081E2BD0
- adds r4, r1, 0
-_081E2BAC:
- ldrb r2, [r4]
- adds r0, r5, 0
- adds r1, r6, 0
- bl rfu_STC_analyzeLLSF
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0
- ldrb r1, [r4]
- subs r1, r0
- strb r1, [r4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081E2BD0
- lsls r0, r1, 24
- cmp r0, 0
- bne _081E2BAC
-_081E2BD0:
- lsls r0, r7, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081E2B9E
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E2BE0: .4byte gUnknown_3007468
-_081E2BE4: .4byte gUnknown_3007464
- thumb_func_end rfu_STC_PARENT_analyzeRecvPacket
-
- thumb_func_start rfu_STC_CHILD_analyzeRecvPacket
-rfu_STC_CHILD_analyzeRecvPacket: @ 81E2BE8
- push {r4-r6,lr}
- ldr r0, _081E2C38 @ =gUnknown_3007468
- ldr r0, [r0]
- adds r0, 0xDC
- ldr r1, [r0]
- ldrh r0, [r1, 0x4]
- movs r4, 0x7F
- ands r4, r0
- adds r5, r1, 0
- adds r5, 0x8
- cmp r4, 0
- bne _081E2C08
- ldr r0, _081E2C3C @ =gUnknown_3007464
- ldr r1, [r0]
- movs r0, 0xF
- strb r0, [r1, 0x1]
-_081E2C08:
- movs r0, 0x80
- lsls r0, 8
- adds r6, r0, 0
-_081E2C0E:
- cmp r4, 0
- beq _081E2C30
- movs r0, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl rfu_STC_analyzeLLSF
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0
- subs r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- ands r0, r6
- cmp r0, 0
- beq _081E2C0E
-_081E2C30:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081E2C38: .4byte gUnknown_3007468
-_081E2C3C: .4byte gUnknown_3007464
- thumb_func_end rfu_STC_CHILD_analyzeRecvPacket
-
- thumb_func_start rfu_STC_analyzeLLSF
-rfu_STC_analyzeLLSF: @ 81E2C40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r7, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r2, 16
- lsrs r3, r2, 16
- ldr r2, _081E2C74 @ =gUnknown_3007460
- ldr r0, [r2]
- ldrb r0, [r0]
- mvns r0, r0
- movs r1, 0x1
- ands r0, r1
- lsls r0, 4
- ldr r1, _081E2C78 @ =_Str_RfuHeader
- adds r6, r0, r1
- ldrb r0, [r6]
- cmp r3, r0
- bcs _081E2C7C
- adds r0, r3, 0
- b _081E2E6E
- .align 2, 0
-_081E2C74: .4byte gUnknown_3007460
-_081E2C78: .4byte _Str_RfuHeader
-_081E2C7C:
- movs r5, 0
- movs r4, 0
- ldrb r3, [r6, 0x1]
- ldrb r1, [r6, 0x7]
- mov r8, r1
- ldr r2, [sp]
- mov r9, r2
- cmp r4, r0
- bcs _081E2CA4
- adds r2, r0, 0
-_081E2C90:
- ldrb r0, [r7]
- lsls r1, r4, 3
- lsls r0, r1
- orrs r5, r0
- adds r7, 0x1
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r2
- bcc _081E2C90
-_081E2CA4:
- adds r0, r5, 0
- lsrs r0, r3
- mov r3, r8
- ands r0, r3
- ldr r1, _081E2D7C @ =0xffffff00
- mov r10, r1
- mov r3, r10
- mov r2, r9
- ands r3, r2
- orrs r3, r0
- str r3, [sp]
- adds r0, r5, 0
- ldrb r1, [r6, 0x2]
- lsrs r0, r1
- ldrb r1, [r6, 0x8]
- ands r0, r1
- lsls r0, 8
- ldr r4, _081E2D80 @ =0xffff00ff
- adds r2, r4, 0
- ands r2, r3
- orrs r2, r0
- str r2, [sp]
- adds r0, r5, 0
- ldrb r3, [r6, 0x3]
- lsrs r0, r3
- ldrb r1, [r6, 0x9]
- ands r0, r1
- lsls r0, 16
- ldr r3, _081E2D84 @ =0xff00ffff
- ands r3, r2
- orrs r3, r0
- str r3, [sp]
- adds r0, r5, 0
- ldrb r1, [r6, 0x4]
- lsrs r0, r1
- ldrb r1, [r6, 0xA]
- ands r0, r1
- lsls r0, 24
- ldr r2, _081E2D88 @ =0x00ffffff
- mov r8, r2
- mov r1, r8
- ands r1, r3
- orrs r1, r0
- mov r8, r1
- str r1, [sp]
- adds r1, r5, 0
- ldrb r2, [r6, 0x5]
- lsrs r1, r2
- ldrb r0, [r6, 0xB]
- ands r1, r0
- mov r9, sp
- ldr r2, [sp, 0x4]
- mov r3, r10
- ands r2, r3
- orrs r2, r1
- str r2, [sp, 0x4]
- adds r0, r5, 0
- ldrb r1, [r6, 0x6]
- lsrs r0, r1
- ldrb r1, [r6, 0xC]
- ands r0, r1
- lsls r0, 8
- ands r4, r2
- orrs r4, r0
- str r4, [sp, 0x4]
- ldrh r0, [r6, 0xE]
- ands r5, r0
- lsls r1, r5, 16
- ldr r0, _081E2D8C @ =0x0000ffff
- ands r0, r4
- orrs r0, r1
- str r0, [sp, 0x4]
- lsrs r0, 16
- ldrb r6, [r6]
- adds r0, r6
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- beq _081E2D4A
- b _081E2E6C
-_081E2D4A:
- ldr r2, _081E2D90 @ =gUnknown_3007460
- ldr r3, [r2]
- ldrb r2, [r3]
- cmp r2, 0x1
- bne _081E2E08
- ldrb r0, [r3, 0x2]
- mov r5, r12
- asrs r0, r5
- ands r0, r2
- cmp r0, 0
- bne _081E2D62
- b _081E2E6C
-_081E2D62:
- mov r1, r8
- lsrs r0, r1, 16
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _081E2D94
- mov r0, r12
- mov r1, sp
- adds r2, r7, 0
- bl rfu_STC_UNI_receive
- b _081E2E6C
- .align 2, 0
-_081E2D7C: .4byte 0xffffff00
-_081E2D80: .4byte 0xffff00ff
-_081E2D84: .4byte 0xff00ffff
-_081E2D88: .4byte 0x00ffffff
-_081E2D8C: .4byte 0x0000ffff
-_081E2D90: .4byte gUnknown_3007460
-_081E2D94:
- mov r5, r9
- ldrb r0, [r5, 0x3]
- cmp r0, 0
- bne _081E2DA8
- mov r0, r12
- mov r1, sp
- adds r2, r7, 0
- bl rfu_STC_NI_receive_Receiver
- b _081E2E6C
-_081E2DA8:
- movs r4, 0
- ldr r1, _081E2DC0 @ =gUnknown_3007450
- ldr r0, [r1]
- ldrb r0, [r0, 0x1A]
- mov r5, r12
- asrs r0, r5
- ands r0, r2
- cmp r0, 0
- beq _081E2DC4
- ldrb r0, [r3, 0x4]
- b _081E2DEA
- .align 2, 0
-_081E2DC0: .4byte gUnknown_3007450
-_081E2DC4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bhi _081E2E6C
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r0, [r0, 0x1A]
- mov r2, r12
- asrs r0, r2
- movs r2, 0x1
- ands r0, r2
- cmp r0, 0
- beq _081E2DC4
- ldr r3, _081E2E04 @ =gUnknown_3007460
- ldr r0, [r3]
- ldrb r0, [r0, 0x4]
- mov r5, r12
-_081E2DEA:
- asrs r0, r5
- ands r0, r2
- cmp r0, 0
- beq _081E2DC4
- cmp r4, 0x3
- bhi _081E2E6C
- adds r0, r4, 0
- mov r1, r12
- mov r2, sp
- adds r3, r7, 0
- bl rfu_STC_NI_receive_Sender
- b _081E2E6C
- .align 2, 0
-_081E2E04: .4byte gUnknown_3007460
-_081E2E08:
- ldrb r1, [r3, 0x2]
- mov r2, r9
- ldrb r0, [r2, 0x1]
- adds r5, r1, 0
- ands r5, r0
- cmp r5, 0
- beq _081E2E6C
- movs r4, 0
- movs r6, 0x1
-_081E2E1A:
- adds r0, r5, 0
- asrs r0, r4
- ands r0, r6
- cmp r0, 0
- beq _081E2E62
- mov r1, sp
- ldrb r0, [r1, 0x2]
- cmp r0, 0x4
- bne _081E2E36
- adds r0, r4, 0
- adds r2, r7, 0
- bl rfu_STC_UNI_receive
- b _081E2E62
-_081E2E36:
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- bne _081E2E48
- adds r0, r4, 0
- mov r1, sp
- adds r2, r7, 0
- bl rfu_STC_NI_receive_Receiver
- b _081E2E62
-_081E2E48:
- ldr r0, _081E2E80 @ =gUnknown_3007460
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- asrs r0, r4
- ands r0, r6
- cmp r0, 0
- beq _081E2E62
- adds r0, r4, 0
- adds r1, r4, 0
- mov r2, sp
- adds r3, r7, 0
- bl rfu_STC_NI_receive_Sender
-_081E2E62:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081E2E1A
-_081E2E6C:
- mov r0, r10
-_081E2E6E:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081E2E80: .4byte gUnknown_3007460
- thumb_func_end rfu_STC_analyzeLLSF
-
- thumb_func_start rfu_STC_UNI_receive
-rfu_STC_UNI_receive: @ 81E2E84
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r1, 0
- str r2, [sp]
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _081E2EB8 @ =gUnknown_3007440
- lsls r1, r7, 2
- adds r1, r2
- ldr r3, [r1]
- adds r5, r3, 0
- adds r5, 0xC
- movs r4, 0
- movs r0, 0
- strh r0, [r5, 0x2]
- ldr r0, [r1]
- ldr r0, [r0, 0x18]
- adds r1, r2, 0
- ldrh r2, [r6, 0x6]
- cmp r0, r2
- bcs _081E2EC0
- movs r0, 0x49
- strh r0, [r3, 0xC]
- ldr r0, _081E2EBC @ =0x00000701
- strh r0, [r5, 0x2]
- b _081E2F0E
- .align 2, 0
-_081E2EB8: .4byte gUnknown_3007440
-_081E2EBC: .4byte 0x00000701
-_081E2EC0:
- ldrb r0, [r5, 0x7]
- cmp r0, 0
- beq _081E2ED8
- ldrb r0, [r5, 0x6]
- cmp r0, 0
- beq _081E2EE4
- ldr r0, _081E2ED4 @ =0x00000709
- strh r0, [r5, 0x2]
- b _081E2F0E
- .align 2, 0
-_081E2ED4: .4byte 0x00000709
-_081E2ED8:
- ldrb r0, [r5, 0x6]
- cmp r0, 0
- beq _081E2EE4
- movs r0, 0xE1
- lsls r0, 3
- strh r0, [r5, 0x2]
-_081E2EE4:
- movs r4, 0
- ldr r0, _081E2F2C @ =0x00008042
- strh r0, [r5]
- ldrh r0, [r6, 0x6]
- strh r0, [r5, 0x4]
- ldrh r2, [r6, 0x6]
- lsls r0, r7, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r0, [r0, 0x14]
- str r0, [sp, 0x4]
- ldr r0, _081E2F30 @ =gUnknown_3007468
- ldr r0, [r0]
- add r1, sp, 0x4
- ldr r3, [r0, 0x4]
- mov r0, sp
- bl _call_via_r3
- movs r0, 0x1
- strb r0, [r5, 0x6]
- strh r4, [r5]
-_081E2F0E:
- ldrh r0, [r5, 0x2]
- cmp r0, 0
- beq _081E2F22
- ldr r0, _081E2F34 @ =gUnknown_3007464
- ldr r2, [r0]
- movs r0, 0x10
- lsls r0, r7
- ldrb r1, [r2, 0x4]
- orrs r0, r1
- strb r0, [r2, 0x4]
-_081E2F22:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E2F2C: .4byte 0x00008042
-_081E2F30: .4byte gUnknown_3007468
-_081E2F34: .4byte gUnknown_3007464
- thumb_func_end rfu_STC_UNI_receive
-
- thumb_func_start rfu_STC_NI_receive_Sender
-rfu_STC_NI_receive_Sender: @ 81E2F38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r2, 0
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r1, _081E3004 @ =gUnknown_3007450
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- mov r12, r0
- ldrh r0, [r0]
- mov r9, r0
- mov r0, r12
- adds r0, 0x21
- ldrb r2, [r6, 0x4]
- adds r0, r2
- ldrb r0, [r0]
- str r0, [sp]
- ldrb r2, [r6, 0x2]
- cmp r2, 0x2
- bne _081E2F74
- ldr r0, _081E3008 @ =0x00008022
- cmp r9, r0
- beq _081E2F8E
-_081E2F74:
- cmp r2, 0x1
- bne _081E2F7E
- ldr r0, _081E300C @ =0x00008021
- cmp r9, r0
- beq _081E2F8E
-_081E2F7E:
- movs r3, 0x1B
- add r3, r12
- mov r8, r3
- cmp r2, 0x3
- bne _081E2FB2
- ldr r0, _081E3010 @ =0x00008023
- cmp r9, r0
- bne _081E2FB2
-_081E2F8E:
- ldrb r1, [r6, 0x4]
- mov r0, r12
- adds r0, 0x21
- adds r0, r1
- ldrb r0, [r0]
- movs r7, 0x1B
- add r7, r12
- mov r8, r7
- ldrb r2, [r6, 0x5]
- cmp r0, r2
- bne _081E2FB2
- adds r0, r7, r1
- movs r1, 0x1
- mov r3, r10
- lsls r1, r3
- ldrb r2, [r0]
- orrs r1, r2
- strb r1, [r0]
-_081E2FB2:
- ldrb r2, [r6, 0x4]
- mov r7, r8
- adds r0, r7, r2
- ldrb r0, [r0]
- mov r3, r12
- ldrb r1, [r3, 0x1A]
- ands r0, r1
- cmp r0, r1
- bne _081E30AE
- adds r3, 0x21
- adds r2, r3, r2
- ldrb r0, [r2]
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- movs r1, 0
- strb r0, [r2]
- ldrb r0, [r6, 0x4]
- add r0, r8
- strb r1, [r0]
- mov r7, r12
- ldrh r1, [r7]
- ldr r2, _081E3014 @ =0x00007fdf
- adds r0, r1, r2
- lsls r0, 16
- lsrs r0, 16
- adds r5, r3, 0
- cmp r0, 0x1
- bhi _081E30A0
- ldr r0, _081E300C @ =0x00008021
- cmp r1, r0
- bne _081E3018
- ldrb r1, [r6, 0x4]
- lsls r1, 2
- subs r3, 0x1D
- adds r1, r3, r1
- ldrh r2, [r7, 0x2E]
- ldr r0, [r1]
- adds r0, r2
- str r0, [r1]
- b _081E302E
- .align 2, 0
-_081E3004: .4byte gUnknown_3007450
-_081E3008: .4byte 0x00008022
-_081E300C: .4byte 0x00008021
-_081E3010: .4byte 0x00008023
-_081E3014: .4byte 0x00007fdf
-_081E3018:
- ldrb r2, [r6, 0x4]
- lsls r2, 2
- mov r3, r12
- adds r3, 0x4
- adds r2, r3, r2
- mov r7, r12
- ldrh r1, [r7, 0x2E]
- lsls r1, 2
- ldr r0, [r2]
- adds r0, r1
- str r0, [r2]
-_081E302E:
- mov r0, r12
- ldrh r1, [r0, 0x2E]
- ldr r0, [r0, 0x14]
- subs r0, r1
- mov r1, r12
- str r0, [r1, 0x14]
- cmp r0, 0
- beq _081E3042
- cmp r0, 0
- bge _081E30AE
-_081E3042:
- mov r0, r12
- adds r0, 0x20
- movs r2, 0
- strb r2, [r0]
- mov r7, r12
- ldrh r1, [r7]
- ldr r0, _081E3084 @ =0x00008021
- cmp r1, r0
- bne _081E308C
- movs r4, 0
-_081E3056:
- adds r0, r5, r4
- movs r1, 0x1
- strb r1, [r0]
- lsls r1, r4, 2
- adds r1, r3, r1
- mov r2, r12
- ldrh r0, [r2, 0x2E]
- adds r2, r0, 0
- muls r2, r4
- mov r7, r12
- ldr r0, [r7, 0x28]
- adds r0, r2
- str r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081E3056
- ldr r0, [r7, 0x30]
- str r0, [r7, 0x14]
- ldr r0, _081E3088 @ =0x00008022
- strh r0, [r7]
- b _081E30AE
- .align 2, 0
-_081E3084: .4byte 0x00008021
-_081E3088: .4byte 0x00008022
-_081E308C:
- strb r2, [r5]
- mov r0, r12
- str r2, [r0, 0x14]
- ldr r0, _081E309C @ =0x00008023
- mov r1, r12
- strh r0, [r1]
- b _081E30AE
- .align 2, 0
-_081E309C: .4byte 0x00008023
-_081E30A0:
- lsls r1, 16
- ldr r0, _081E3110 @ =0x80230000
- cmp r1, r0
- bne _081E30AE
- ldr r0, _081E3114 @ =0x00008020
- mov r2, r12
- strh r0, [r2]
-_081E30AE:
- mov r3, r12
- ldrh r0, [r3]
- cmp r0, r9
- bne _081E30D8
- ldrb r2, [r6, 0x4]
- mov r0, r12
- adds r0, 0x21
- adds r0, r2
- ldrb r0, [r0]
- ldr r7, [sp]
- cmp r0, r7
- bne _081E30D8
- mov r1, r8
- adds r0, r1, r2
- ldrb r0, [r0]
- mov r2, r10
- asrs r0, r2
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081E30FE
-_081E30D8:
- ldr r4, _081E3118 @ =0x04000208
- ldrh r2, [r4]
- movs r0, 0
- strh r0, [r4]
- ldr r0, _081E311C @ =gUnknown_3007464
- ldr r3, [r0]
- movs r0, 0x10
- mov r7, r10
- lsls r0, r7
- ldrb r1, [r3, 0x2]
- orrs r0, r1
- movs r1, 0
- strb r0, [r3, 0x2]
- lsls r0, r7, 2
- ldr r3, _081E3120 @ =gUnknown_3007450
- adds r0, r3
- ldr r0, [r0]
- strh r1, [r0, 0x2]
- strh r2, [r4]
-_081E30FE:
- 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
-_081E3110: .4byte 0x80230000
-_081E3114: .4byte 0x00008020
-_081E3118: .4byte 0x04000208
-_081E311C: .4byte gUnknown_3007464
-_081E3120: .4byte gUnknown_3007450
- thumb_func_end rfu_STC_NI_receive_Sender
-
- thumb_func_start rfu_STC_NI_receive_Receiver
-rfu_STC_NI_receive_Receiver: @ 81E3124
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r1, 0
- str r2, [sp]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r7, 0
- ldr r1, _081E3184 @ =gUnknown_3007450
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- adds r5, r4, 0
- adds r5, 0x34
- ldrh r0, [r4, 0x34]
- mov r9, r0
- ldrb r0, [r6, 0x4]
- adds r3, r4, 0
- adds r3, 0x55
- adds r0, r3, r0
- ldrb r0, [r0]
- mov r10, r0
- ldrb r0, [r6, 0x2]
- cmp r0, 0x3
- bne _081E3194
- ldr r0, _081E3188 @ =gUnknown_3007464
- ldr r2, [r0]
- movs r0, 0x1
- mov r1, r8
- lsls r0, r1
- ldrb r1, [r2, 0x1]
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrh r1, [r4, 0x34]
- ldr r0, _081E318C @ =0x00008042
- cmp r1, r0
- bne _081E31DA
- adds r0, r4, 0
- adds r0, 0x54
- strb r7, [r0]
- strb r7, [r3]
- ldr r0, _081E3190 @ =0x00008043
- strh r0, [r4, 0x34]
- b _081E31DA
- .align 2, 0
-_081E3184: .4byte gUnknown_3007450
-_081E3188: .4byte gUnknown_3007464
-_081E318C: .4byte 0x00008042
-_081E3190: .4byte 0x00008043
-_081E3194:
- cmp r0, 0x2
- bne _081E31C0
- ldr r0, _081E31B8 @ =0x00008041
- cmp r9, r0
- bne _081E31AC
- ldr r0, [r5, 0x14]
- cmp r0, 0
- bne _081E31AC
- mov r0, r8
- adds r1, r5, 0
- bl rfu_STC_NI_initSlot_asRecvDataEntity
-_081E31AC:
- ldrh r1, [r5]
- ldr r0, _081E31BC @ =0x00008042
- cmp r1, r0
- bne _081E31DA
- b _081E31DE
- .align 2, 0
-_081E31B8: .4byte 0x00008041
-_081E31BC: .4byte 0x00008042
-_081E31C0:
- cmp r0, 0x1
- bne _081E31DA
- ldr r7, _081E328C @ =0x00008041
- cmp r9, r7
- beq _081E31DE
- mov r0, r8
- adds r1, r5, 0
- bl rfu_STC_NI_initSlot_asRecvControllData
- ldrh r0, [r4, 0x34]
- cmp r0, r7
- bne _081E327A
- movs r7, 0x1
-_081E31DA:
- cmp r7, 0
- beq _081E3234
-_081E31DE:
- ldrb r2, [r6, 0x5]
- ldrb r3, [r6, 0x4]
- adds r4, r5, 0
- adds r4, 0x21
- adds r0, r4, r3
- ldrb r0, [r0]
- adds r0, 0x1
- movs r1, 0x3
- ands r0, r1
- cmp r2, r0
- bne _081E3234
- ldr r0, _081E3290 @ =gUnknown_3007468
- ldr r0, [r0]
- lsls r1, r3, 2
- adds r1, 0x4
- adds r1, r5, r1
- ldrh r2, [r6, 0x6]
- ldr r3, [r0, 0x4]
- mov r0, sp
- bl _call_via_r3
- ldrh r1, [r5]
- ldr r0, _081E3294 @ =0x00008042
- cmp r1, r0
- bne _081E3224
- ldrb r0, [r6, 0x4]
- lsls r0, 2
- adds r2, r5, 0x4
- adds r2, r0
- ldrh r0, [r5, 0x2E]
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, [r2]
- adds r0, r1
- str r0, [r2]
-_081E3224:
- ldrh r1, [r6, 0x6]
- ldr r0, [r5, 0x14]
- subs r0, r1
- str r0, [r5, 0x14]
- ldrb r0, [r6, 0x4]
- adds r0, r4, r0
- ldrb r1, [r6, 0x5]
- strb r1, [r0]
-_081E3234:
- ldrh r0, [r5, 0x18]
- cmp r0, 0
- bne _081E327A
- ldrb r0, [r6, 0x4]
- adds r1, r5, 0
- adds r1, 0x20
- strb r0, [r1]
- ldrh r0, [r5]
- cmp r0, r9
- bne _081E325C
- adds r0, r5, 0
- adds r0, 0x21
- ldrb r2, [r6, 0x4]
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, r10
- bne _081E325C
- ldrb r6, [r6, 0x5]
- cmp r0, r6
- bne _081E327A
-_081E325C:
- ldr r3, _081E3298 @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r0, _081E329C @ =gUnknown_3007464
- ldr r4, [r0]
- movs r0, 0x1
- mov r1, r8
- lsls r0, r1
- ldrb r1, [r4, 0x2]
- orrs r0, r1
- movs r1, 0
- strb r0, [r4, 0x2]
- strh r1, [r5, 0x2]
- strh r2, [r3]
-_081E327A:
- 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
-_081E328C: .4byte 0x00008041
-_081E3290: .4byte gUnknown_3007468
-_081E3294: .4byte 0x00008042
-_081E3298: .4byte 0x04000208
-_081E329C: .4byte gUnknown_3007464
- thumb_func_end rfu_STC_NI_receive_Receiver
-
- thumb_func_start rfu_STC_NI_initSlot_asRecvControllData
-rfu_STC_NI_initSlot_asRecvControllData: @ 81E32A0
- push {r4-r7,lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081E32BC @ =gUnknown_3007460
- ldr r3, [r0]
- ldrb r1, [r3]
- mov r12, r0
- cmp r1, 0x1
- bne _081E32C0
- movs r5, 0x3
- adds r1, r3, 0
- adds r1, 0xF
- b _081E32C8
- .align 2, 0
-_081E32BC: .4byte gUnknown_3007460
-_081E32C0:
- movs r5, 0x2
- adds r0, r4, 0
- adds r0, 0x10
- adds r1, r3, r0
-_081E32C8:
- movs r7, 0x1
- adds r0, r7, 0
- lsls r0, r4
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, r6, 0
- ldrh r3, [r2]
- cmp r3, 0
- bne _081E3326
- ldrb r0, [r1]
- cmp r0, r5
- bcs _081E3300
- movs r0, 0x49
- strh r0, [r2]
- ldr r0, _081E32F8 @ =0x00000702
- strh r0, [r2, 0x18]
- ldr r0, _081E32FC @ =gUnknown_3007464
- ldr r2, [r0]
- ldrb r1, [r2, 0x4]
- adds r0, r6, 0
- orrs r0, r1
- strb r0, [r2, 0x4]
- b _081E3326
- .align 2, 0
-_081E32F8: .4byte 0x00000702
-_081E32FC: .4byte gUnknown_3007464
-_081E3300:
- strh r3, [r2, 0x18]
- ldrb r0, [r1]
- subs r0, r5
- strb r0, [r1]
- adds r0, r2, 0
- adds r0, 0x2D
- str r0, [r2, 0x4]
- movs r0, 0x7
- str r0, [r2, 0x14]
- strb r7, [r2, 0x1F]
- strh r3, [r2, 0x2E]
- strb r4, [r2, 0x1A]
- ldr r0, _081E332C @ =0x00008041
- strh r0, [r2]
- mov r0, r12
- ldr r1, [r0]
- ldrb r0, [r1, 0x5]
- orrs r4, r0
- strb r4, [r1, 0x5]
-_081E3326:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E332C: .4byte 0x00008041
- thumb_func_end rfu_STC_NI_initSlot_asRecvControllData
-
- thumb_func_start rfu_STC_NI_initSlot_asRecvDataEntity
-rfu_STC_NI_initSlot_asRecvDataEntity: @ 81E3330
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- adds r0, 0x2D
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081E3354
- ldr r0, _081E3350 @ =gUnknown_3007460
- lsls r1, r5, 5
- adds r1, 0x14
- ldr r0, [r0]
- adds r0, r1
- adds r0, 0x4
- b _081E33AA
- .align 2, 0
-_081E3350: .4byte gUnknown_3007460
-_081E3354:
- ldr r1, _081E3398 @ =gUnknown_3007450
- lsls r0, r5, 2
- adds r0, r1
- ldr r2, [r0]
- ldr r1, [r4, 0x30]
- ldr r0, [r2, 0x6C]
- cmp r1, r0
- bls _081E33A8
- movs r1, 0x80
- lsls r1, 17
- lsls r1, r5
- lsrs r1, 24
- ldr r0, _081E339C @ =gUnknown_3007464
- ldr r3, [r0]
- ldrb r2, [r3, 0x4]
- adds r0, r1, 0
- orrs r0, r2
- strb r0, [r3, 0x4]
- ldr r0, _081E33A0 @ =gUnknown_3007460
- ldr r2, [r0]
- ldrb r0, [r2, 0x5]
- bics r0, r1
- strb r0, [r2, 0x5]
- ldr r0, _081E33A4 @ =0x00000701
- strh r0, [r4, 0x18]
- movs r0, 0x47
- strh r0, [r4]
- adds r0, r5, 0
- movs r1, 0x1
- adds r2, r4, 0
- bl rfu_STC_releaseFrame
- b _081E33DC
- .align 2, 0
-_081E3398: .4byte gUnknown_3007450
-_081E339C: .4byte gUnknown_3007464
-_081E33A0: .4byte gUnknown_3007460
-_081E33A4: .4byte 0x00000701
-_081E33A8:
- ldr r0, [r2, 0x68]
-_081E33AA:
- str r0, [r4, 0x4]
- movs r3, 0
- adds r6, r4, 0
- adds r6, 0x21
- movs r7, 0
- adds r5, r4, 0x4
-_081E33B6:
- adds r0, r6, r3
- strb r7, [r0]
- lsls r1, r3, 2
- adds r1, r5, r1
- ldrh r0, [r4, 0x2E]
- adds r2, r0, 0
- muls r2, r3
- ldr r0, [r4, 0x4]
- adds r0, r2
- str r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _081E33B6
- ldr r0, [r4, 0x30]
- str r0, [r4, 0x14]
- ldr r0, _081E33E4 @ =0x00008042
- strh r0, [r4]
-_081E33DC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E33E4: .4byte 0x00008042
- thumb_func_end rfu_STC_NI_initSlot_asRecvDataEntity
-
- thumb_func_start rfu_NI_checkCommFailCounter
-rfu_NI_checkCommFailCounter: @ 81E33E8
- push {r4-r7,lr}
- ldr r2, _081E3474 @ =gUnknown_3007460
- ldr r0, [r2]
- ldrb r1, [r0, 0x4]
- ldrb r0, [r0, 0x5]
- orrs r0, r1
- cmp r0, 0
- beq _081E346E
- ldr r1, _081E3478 @ =0x04000208
- ldrh r0, [r1]
- mov r12, r0
- movs r0, 0
- strh r0, [r1]
- ldr r1, _081E347C @ =gUnknown_3007464
- ldr r0, [r1]
- ldrb r0, [r0, 0x2]
- lsrs r7, r0, 4
- movs r3, 0
- adds r6, r1, 0
- adds r5, r2, 0
- ldr r4, _081E3480 @ =gUnknown_3007450
-_081E3412:
- movs r0, 0x80
- lsls r0, 17
- lsls r0, r3
- lsrs r2, r0, 24
- ldr r0, [r5]
- ldrb r0, [r0, 0x4]
- ands r0, r2
- cmp r0, 0
- beq _081E343A
- ldr r0, [r6]
- ldrb r0, [r0, 0x2]
- ands r0, r2
- cmp r0, 0
- bne _081E343A
- lsls r0, r3, 2
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x2]
- adds r0, 0x1
- strh r0, [r1, 0x2]
-_081E343A:
- ldr r0, [r5]
- ldrb r0, [r0, 0x5]
- ands r0, r2
- cmp r0, 0
- beq _081E3458
- adds r0, r7, 0
- ands r0, r2
- cmp r0, 0
- bne _081E3458
- lsls r0, r3, 2
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x36]
- adds r0, 0x1
- strh r0, [r1, 0x36]
-_081E3458:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _081E3412
- ldr r0, [r6]
- movs r1, 0
- strb r1, [r0, 0x2]
- ldr r0, _081E3478 @ =0x04000208
- mov r1, r12
- strh r1, [r0]
-_081E346E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081E3474: .4byte gUnknown_3007460
-_081E3478: .4byte 0x04000208
-_081E347C: .4byte gUnknown_3007464
-_081E3480: .4byte gUnknown_3007450
- thumb_func_end rfu_NI_checkCommFailCounter
-
- thumb_func_start rfu_REQ_noise
-rfu_REQ_noise: @ 81E3484
- push {lr}
- ldr r0, _081E3498 @ =rfu_STC_REQ_callback
- bl STWI_set_Callback_M
- movs r0, 0x1
- movs r1, 0
- bl STWI_send_TestModeREQ
- pop {r0}
- bx r0
- .align 2, 0
-_081E3498: .4byte rfu_STC_REQ_callback
- thumb_func_end rfu_REQ_noise
-
- thumb_func_start sub_81E349C
-sub_81E349C: @ 81E349C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _081E34B4 @ =0x04000208
- ldrh r0, [r0]
- cmp r0, 0
- bne _081E34B8
- movs r0, 0x1
- negs r0, r0
- b _081E3538
- .align 2, 0
-_081E34B4: .4byte 0x04000208
-_081E34B8:
- ldr r0, _081E34E4 @ =0x04000200
- ldrh r0, [r0]
- mov r8, r0
- ldr r4, _081E34E8 @ =gRfuState
- ldr r1, [r4]
- movs r0, 0xA
- str r0, [r1]
- ldr r0, _081E34EC @ =sub_81E36B8
- bl STWI_set_Callback_ID
- bl sub_81E3550
- ldr r0, [r4]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r1, _081E34F0 @ =0x04000100
- adds r4, r0, r1
- lsls r0, r5, 27
- lsrs r5, r0, 24
- movs r7, 0
- b _081E3506
- .align 2, 0
-_081E34E4: .4byte 0x04000200
-_081E34E8: .4byte gRfuState
-_081E34EC: .4byte sub_81E36B8
-_081E34F0: .4byte 0x04000100
-_081E34F4:
- strh r6, [r4, 0x2]
- strh r6, [r4]
- movs r0, 0x83
- strh r0, [r4, 0x2]
-_081E34FC:
- ldrh r0, [r4]
- cmp r0, 0x1F
- bls _081E34FC
- strh r7, [r4, 0x2]
- strh r7, [r4]
-_081E3506:
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xFF
- beq _081E351A
- bl sub_81E35C4
- adds r6, r0, 0
- cmp r6, 0
- beq _081E34F4
-_081E351A:
- ldr r1, _081E3544 @ =0x04000208
- movs r0, 0
- strh r0, [r1]
- ldr r0, _081E3548 @ =0x04000200
- mov r2, r8
- strh r2, [r0]
- movs r0, 0x1
- strh r0, [r1]
- ldr r0, _081E354C @ =gRfuState
- ldr r1, [r0]
- movs r0, 0
- str r0, [r1]
- bl STWI_set_Callback_ID
- adds r0, r6, 0
-_081E3538:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081E3544: .4byte 0x04000208
-_081E3548: .4byte 0x04000200
-_081E354C: .4byte gRfuState
- thumb_func_end sub_81E349C
-
- thumb_func_start sub_81E3550
-sub_81E3550: @ 81E3550
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r3, _081E35A8 @ =0x04000208
- movs r4, 0
- strh r4, [r3]
- ldr r2, _081E35AC @ =0x04000200
- ldr r0, _081E35B0 @ =gRfuState
- ldr r0, [r0]
- movs r1, 0x8
- ldrb r0, [r0, 0xA]
- lsls r1, r0
- movs r5, 0x80
- orrs r1, r5
- ldrh r0, [r2]
- bics r0, r1
- strh r0, [r2]
- movs r0, 0x1
- strh r0, [r3]
- ldr r0, _081E35B4 @ =0x04000134
- strh r4, [r0]
- subs r2, 0xD8
- movs r1, 0x80
- lsls r1, 5
- adds r0, r1, 0
- strh r0, [r2]
- ldrh r0, [r2]
- movs r3, 0x81
- lsls r3, 7
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- movs r0, 0
- str r0, [sp]
- ldr r1, _081E35B8 @ =gUnknown_3007470
- ldr r2, _081E35BC @ =0x05000003
- mov r0, sp
- bl CpuSet
- ldr r0, _081E35C0 @ =0x04000202
- strh r5, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081E35A8: .4byte 0x04000208
-_081E35AC: .4byte 0x04000200
-_081E35B0: .4byte gRfuState
-_081E35B4: .4byte 0x04000134
-_081E35B8: .4byte gUnknown_3007470
-_081E35BC: .4byte 0x05000003
-_081E35C0: .4byte 0x04000202
- thumb_func_end sub_81E3550
-
- thumb_func_start sub_81E35C4
-sub_81E35C4: @ 81E35C4
- push {r4-r7,lr}
- ldr r0, _081E35D8 @ =gUnknown_3007470
- ldrb r1, [r0, 0x1]
- mov r12, r1
- adds r7, r0, 0
- cmp r1, 0
- beq _081E35DC
- cmp r1, 0x1
- beq _081E3614
- b _081E36AC
- .align 2, 0
-_081E35D8: .4byte gUnknown_3007470
-_081E35DC:
- movs r6, 0x1
- strb r6, [r7]
- ldr r3, _081E3608 @ =0x04000128
- ldrh r0, [r3]
- movs r5, 0x1
- orrs r0, r5
- strh r0, [r3]
- ldr r4, _081E360C @ =0x04000208
- mov r0, r12
- strh r0, [r4]
- ldr r2, _081E3610 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strh r0, [r2]
- strh r6, [r4]
- strb r5, [r7, 0x1]
- ldrb r0, [r3]
- orrs r0, r1
- strb r0, [r3]
- b _081E36B0
- .align 2, 0
-_081E3608: .4byte 0x04000128
-_081E360C: .4byte 0x04000208
-_081E3610: .4byte 0x04000200
-_081E3614:
- ldrh r0, [r7, 0xA]
- cmp r0, 0
- bne _081E36A8
- ldrb r0, [r7]
- cmp r0, 0x1
- bne _081E3644
- ldrh r0, [r7, 0x2]
- cmp r0, 0
- bne _081E36B0
- ldr r3, _081E363C @ =0x04000208
- strh r0, [r3]
- ldr r2, _081E3640 @ =0x04000128
- ldrh r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strh r0, [r2]
- mov r1, r12
- strh r1, [r3]
- b _081E36B0
- .align 2, 0
-_081E363C: .4byte 0x04000208
-_081E3640: .4byte 0x04000128
-_081E3644:
- ldrh r1, [r7, 0x4]
- ldr r0, _081E3690 @ =0x00008001
- cmp r1, r0
- beq _081E36B0
- ldrh r6, [r7, 0x2]
- cmp r6, 0
- bne _081E36B0
- ldr r4, _081E3694 @ =0x04000208
- strh r6, [r4]
- ldr r3, _081E3698 @ =0x04000200
- ldrh r1, [r3]
- ldr r0, _081E369C @ =0x0000ff7f
- ands r0, r1
- strh r0, [r3]
- mov r7, r12
- strh r7, [r4]
- ldr r2, _081E36A0 @ =0x04000128
- strh r6, [r2]
- movs r1, 0x80
- lsls r1, 5
- adds r0, r1, 0
- strh r0, [r2]
- ldr r0, _081E36A4 @ =0x04000202
- movs r5, 0x80
- strh r5, [r0]
- ldrh r0, [r2]
- movs r7, 0x81
- lsls r7, 7
- adds r1, r7, 0
- orrs r0, r1
- strh r0, [r2]
- strh r6, [r4]
- ldrh r0, [r3]
- orrs r0, r5
- strh r0, [r3]
- mov r0, r12
- strh r0, [r4]
- b _081E36B0
- .align 2, 0
-_081E3690: .4byte 0x00008001
-_081E3694: .4byte 0x04000208
-_081E3698: .4byte 0x04000200
-_081E369C: .4byte 0x0000ff7f
-_081E36A0: .4byte 0x04000128
-_081E36A4: .4byte 0x04000202
-_081E36A8:
- movs r0, 0x2
- strb r0, [r7, 0x1]
-_081E36AC:
- ldrh r0, [r7, 0xA]
- b _081E36B2
-_081E36B0:
- movs r0, 0
-_081E36B2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81E35C4
-
- thumb_func_start sub_81E36B8
-sub_81E36B8: @ 81E36B8
- push {r4,r5,lr}
- ldr r0, _081E3700 @ =0x04000120
- ldr r5, [r0]
- ldr r0, _081E3704 @ =gUnknown_3007470
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x1
- beq _081E36D2
- ldr r0, _081E3708 @ =0x04000128
- ldrh r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strh r1, [r0]
-_081E36D2:
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r0, r5, 0
- lsls r0, r1
- lsrs r1, r0, 16
- movs r0, 0x1
- subs r0, r2
- lsls r0, 4
- lsls r5, r0
- adds r0, r5, 0
- lsrs r5, r0, 16
- ldrh r0, [r4, 0xA]
- cmp r0, 0
- bne _081E3726
- ldrh r2, [r4, 0x6]
- cmp r1, r2
- bne _081E3724
- ldrh r3, [r4, 0x2]
- cmp r3, 0x3
- bls _081E370C
- strh r5, [r4, 0xA]
- b _081E3726
- .align 2, 0
-_081E3700: .4byte 0x04000120
-_081E3704: .4byte gUnknown_3007470
-_081E3708: .4byte 0x04000128
-_081E370C:
- ldrh r0, [r4, 0x4]
- mvns r0, r0
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bne _081E3726
- mvns r0, r2
- lsls r0, 16
- lsrs r0, 16
- cmp r5, r0
- bne _081E3726
- adds r0, r3, 0x1
-_081E3724:
- strh r0, [r4, 0x2]
-_081E3726:
- ldrh r0, [r4, 0x2]
- cmp r0, 0x3
- bhi _081E373C
- lsls r0, 1
- ldr r1, _081E3738 @ =_Str_Sio32ID
- adds r0, r1
- ldrh r0, [r0]
- b _081E373E
- .align 2, 0
-_081E3738: .4byte _Str_Sio32ID
-_081E373C:
- ldr r0, _081E3794 @ =0x00008001
-_081E373E:
- strh r0, [r4, 0x4]
- mvns r0, r5
- strh r0, [r4, 0x6]
- ldr r3, _081E3798 @ =0x04000120
- ldrh r2, [r4, 0x4]
- ldrb r1, [r4]
- movs r0, 0x1
- subs r0, r1
- lsls r0, 4
- lsls r2, r0
- ldrh r0, [r4, 0x6]
- lsls r1, 4
- lsls r0, r1
- adds r2, r0
- str r2, [r3]
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _081E378C
- ldrh r0, [r4, 0x2]
- cmp r0, 0
- bne _081E376E
- ldr r0, _081E379C @ =0x0000494e
- cmp r5, r0
- bne _081E378C
-_081E376E:
- movs r0, 0
- ldr r1, _081E37A0 @ =0x00000257
-_081E3772:
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bls _081E3772
- ldrh r0, [r4, 0xA]
- cmp r0, 0
- bne _081E378C
- ldr r0, _081E37A4 @ =0x04000128
- ldrh r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strh r1, [r0]
-_081E378C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081E3794: .4byte 0x00008001
-_081E3798: .4byte 0x04000120
-_081E379C: .4byte 0x0000494e
-_081E37A0: .4byte 0x00000257
-_081E37A4: .4byte 0x04000128
- thumb_func_end sub_81E36B8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/librfu_intr.s b/asm/librfu_intr.s
index 63aa88f3e..2cc761554 100644
--- a/asm/librfu_intr.s
+++ b/asm/librfu_intr.s
@@ -9,7 +9,7 @@
IntrSIO32: @ 81DFC50
mov r12, sp
stmdb sp!, {r11,r12,lr,pc}
- ldr r3, _081DFCB0 @ =gRfuState
+ ldr r3, _081DFCB0 @ =gSTWIStatus
ldr r0, [r3]
ldr r2, [r0]
sub r11, r12, 0x4
@@ -19,7 +19,7 @@ IntrSIO32: @ 81DFC50
cmp r0, 0
ldmdbeq r11, {r11,sp,lr}
bxeq lr
- bl sub_81E05AC
+ bl Callback_Dummy_ID
ldmdb r11, {r11,sp,lr}
bx lr
_081DFC8C:
@@ -34,7 +34,7 @@ _081DFCA4:
ldmdb r11, {r11,sp,lr}
bx lr
.align 2, 0
-_081DFCB0: .4byte gRfuState
+_081DFCB0: .4byte gSTWIStatus
arm_func_end IntrSIO32
arm_func_start sio32intr_clock_master
@@ -45,7 +45,7 @@ sio32intr_clock_master: @ 81DFCB4
sub r11, r12, 0x4
bl STWI_set_timer_in_RAM
mov r4, 0x120
- ldr r2, _081DFF28 @ =gRfuState
+ ldr r2, _081DFF28 @ =gSTWIStatus
add r4, r4, 0x4000000
ldr lr, [r4]
ldr r12, [r2]
@@ -205,10 +205,10 @@ _081DFEFC:
beq _081DFF3C
ldrh r1, [r0, 0x12]
ldrb r0, [r0, 0x6]
- bl sub_81E05A4
+ bl Callback_Dummy_M
b _081DFF3C
.align 2, 0
-_081DFF28: .4byte gRfuState
+_081DFF28: .4byte gSTWIStatus
_081DFF2C:
add r3, r5, 0x3
strh r3, [r4]
@@ -223,7 +223,7 @@ _081DFF3C:
sio32intr_clock_slave: @ 81DFF44
mov r12, sp
stmdb sp!, {r4-r6,r11,r12,lr,pc}
- ldr r4, _081E02F0 @ =gRfuState
+ ldr r4, _081E02F0 @ =gSTWIStatus
mov r0, 0x64
ldr r3, [r4]
mov r6, 0
@@ -424,7 +424,7 @@ _081E01D0:
beq _081E0348
mov r0, 0x1EC
add r0, r0, 0x2
- bl sub_81E05A8
+ bl Callback_Dummy_S
b _081E0348
_081E0244:
mov r3, 0x120
@@ -446,7 +446,7 @@ _081E0244:
ldrb r0, [r0, 0x6]
mov r1, r2
orr r0, r0, r3, lsl 8
- bl sub_81E05A8
+ bl Callback_Dummy_S
b _081E0348
_081E0298:
mov r3, 0x208
@@ -473,7 +473,7 @@ _081E02E0:
bhi _081E02E0
b _081E031C
.align 2, 0
-_081E02F0: .4byte gRfuState
+_081E02F0: .4byte gSTWIStatus
_081E02F4: .4byte 0x996601ee
_081E02F8:
mov r2, 0xFF00
@@ -510,7 +510,7 @@ handshake_wait: @ 81E0350
mov r1, 0x128
add r1, r1, 0x4000000
mov r0, r0, lsl 16
- ldr r2, _081E03B4 @ =gRfuState
+ ldr r2, _081E03B4 @ =gSTWIStatus
sub r11, r12, 0x4
mov lr, r0, lsr 14
ldr r12, [r2]
@@ -533,7 +533,7 @@ _081E03A0:
ldmdb r11, {r11,sp,lr}
bx lr
.align 2, 0
-_081E03B4: .4byte gRfuState
+_081E03B4: .4byte gSTWIStatus
arm_func_end handshake_wait
arm_func_start STWI_set_timer_in_RAM
@@ -544,7 +544,7 @@ STWI_set_timer_in_RAM: @ 81E03B8
add r1, r1, 0x4000000
mov r3, 0
sub r11, r12, 0x4
- ldr r12, _081E0470 @ =gRfuState
+ ldr r12, _081E0470 @ =gSTWIStatus
and lr, r0, 0xFF
ldr r2, [r12]
cmp lr, 0x50
@@ -589,7 +589,7 @@ _081E0458:
mov r3, 0x3
b _081E0488
.align 2, 0
-_081E0470: .4byte gRfuState
+_081E0470: .4byte gSTWIStatus
_081E0474:
mvn r3, 0x850
sub r3, r3, 0x2
@@ -621,7 +621,7 @@ STWI_stop_timer_in_RAM: @ 81E04C8
mov r12, sp
stmdb sp!, {r11,r12,lr,pc}
mov r1, 0x100
- ldr lr, _081E0514 @ =gRfuState
+ ldr lr, _081E0514 @ =gSTWIStatus
add r0, r1, 0x4000000
ldr r2, [lr]
sub r11, r12, 0x4
@@ -638,14 +638,14 @@ STWI_stop_timer_in_RAM: @ 81E04C8
ldmdb r11, {r11,sp,lr}
bx lr
.align 2, 0
-_081E0514: .4byte gRfuState
+_081E0514: .4byte gSTWIStatus
arm_func_end STWI_stop_timer_in_RAM
arm_func_start STWI_init_slave
STWI_init_slave: @ 81E0518
mov r12, sp
stmdb sp!, {r11,r12,lr,pc}
- ldr r0, _081E05A0 @ =gRfuState
+ ldr r0, _081E05A0 @ =gSTWIStatus
ldr r2, [r0]
mov r3, 0x5
str r3, [r2]
@@ -678,20 +678,20 @@ STWI_init_slave: @ 81E0518
ldmdb r11, {r11,sp,lr}
bx lr
.align 2, 0
-_081E05A0: .4byte gRfuState
+_081E05A0: .4byte gSTWIStatus
arm_func_end STWI_init_slave
- arm_func_start sub_81E05A4
-sub_81E05A4: @ 81E05A4
+ arm_func_start Callback_Dummy_M
+Callback_Dummy_M: @ 81E05A4
bx r2
- arm_func_end sub_81E05A4
+ arm_func_end Callback_Dummy_M
- arm_func_start sub_81E05A8
-sub_81E05A8: @ 81E05A8
+ arm_func_start Callback_Dummy_S
+Callback_Dummy_S: @ 81E05A8
bx r1
- arm_func_end sub_81E05A8
+ arm_func_end Callback_Dummy_S
- arm_func_start sub_81E05AC
-sub_81E05AC: @ 81E05AC
+ arm_func_start Callback_Dummy_ID
+Callback_Dummy_ID: @ 81E05AC
bx r0
- arm_func_end sub_81E05AC
+ arm_func_end Callback_Dummy_ID
diff --git a/asm/librfu_stwi.s b/asm/librfu_stwi.s
deleted file mode 100644
index 5434d037f..000000000
--- a/asm/librfu_stwi.s
+++ /dev/null
@@ -1,1560 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start STWI_init_all
-STWI_init_all: @ 81DF114
- push {r4,lr}
- adds r3, r0, 0
- lsls r2, 24
- lsrs r2, 24
- cmp r2, 0x1
- bne _081DF150
- adds r2, r3, 0
- adds r2, 0xE8
- str r2, [r1]
- ldr r1, _081DF13C @ =0x040000d4
- ldr r0, _081DF140 @ =IntrSIO32
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _081DF144 @ =0x800004b0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _081DF148 @ =gRfuState
- ldr r2, _081DF14C @ =0x00000a48
- adds r0, r3, r2
- b _081DF15A
- .align 2, 0
-_081DF13C: .4byte 0x040000d4
-_081DF140: .4byte IntrSIO32
-_081DF144: .4byte 0x800004b0
-_081DF148: .4byte gRfuState
-_081DF14C: .4byte 0x00000a48
-_081DF150:
- ldr r0, _081DF1D4 @ =IntrSIO32
- str r0, [r1]
- ldr r1, _081DF1D8 @ =gRfuState
- adds r0, r3, 0
- adds r0, 0xE8
-_081DF15A:
- str r0, [r1]
- adds r2, r1, 0
- ldr r1, [r2]
- str r3, [r1, 0x28]
- adds r0, r3, 0
- adds r0, 0x74
- str r0, [r1, 0x24]
- ldrb r0, [r1, 0x14]
- movs r4, 0
- movs r0, 0x1
- strb r0, [r1, 0x14]
- ldr r0, [r2]
- str r4, [r0]
- strb r4, [r0, 0x4]
- ldr r0, [r2]
- strb r4, [r0, 0x5]
- ldr r0, [r2]
- strb r4, [r0, 0x7]
- ldr r0, [r2]
- strb r4, [r0, 0x8]
- ldr r0, [r2]
- strb r4, [r0, 0x9]
- ldr r0, [r2]
- str r4, [r0, 0xC]
- ldrb r1, [r0, 0x10]
- strb r4, [r0, 0x10]
- ldr r0, [r2]
- ldrh r1, [r0, 0x12]
- movs r1, 0
- strh r4, [r0, 0x12]
- strb r1, [r0, 0x15]
- ldr r0, [r2]
- adds r0, 0x2C
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r1, _081DF1DC @ =0x04000134
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xC
- ldr r2, _081DF1E0 @ =0x00005003
- adds r0, r2, 0
- strh r0, [r1]
- bl STWI_init_Callback_M
- bl STWI_init_Callback_S
- ldr r3, _081DF1E4 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _081DF1E8 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x80
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF1D4: .4byte IntrSIO32
-_081DF1D8: .4byte gRfuState
-_081DF1DC: .4byte 0x04000134
-_081DF1E0: .4byte 0x00005003
-_081DF1E4: .4byte 0x04000208
-_081DF1E8: .4byte 0x04000200
- thumb_func_end STWI_init_all
-
- thumb_func_start STWI_init_timer
-STWI_init_timer: @ 81DF1EC
- push {r4,r5,lr}
- ldr r2, _081DF218 @ =STWI_intr_timer
- str r2, [r0]
- ldr r5, _081DF21C @ =gRfuState
- ldr r0, [r5]
- movs r4, 0
- strb r1, [r0, 0xA]
- ldr r3, _081DF220 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _081DF224 @ =0x04000200
- ldr r1, [r5]
- movs r0, 0x8
- ldrb r1, [r1, 0xA]
- lsls r0, r1
- ldrh r1, [r4]
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF218: .4byte STWI_intr_timer
-_081DF21C: .4byte gRfuState
-_081DF220: .4byte 0x04000208
-_081DF224: .4byte 0x04000200
- thumb_func_end STWI_init_timer
-
- thumb_func_start AgbRFU_SoftReset
-AgbRFU_SoftReset: @ 81DF228
- push {r4,r5,lr}
- ldr r5, _081DF2C0 @ =0x04000134
- movs r1, 0x80
- lsls r1, 8
- adds r0, r1, 0
- strh r0, [r5]
- ldr r2, _081DF2C4 @ =0x000080a0
- adds r0, r2, 0
- strh r0, [r5]
- ldr r1, _081DF2C8 @ =gRfuState
- ldr r0, [r1]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r3, _081DF2CC @ =0x04000100
- adds r2, r0, r3
- ldr r4, _081DF2D0 @ =0x04000102
- adds r3, r0, r4
- movs r0, 0
- strh r0, [r3]
- strh r0, [r2]
- movs r0, 0x83
- strh r0, [r3]
- ldrh r0, [r2]
- adds r4, r1, 0
- cmp r0, 0x11
- bhi _081DF268
- ldr r0, _081DF2D4 @ =0x000080a2
- adds r1, r0, 0
-_081DF260:
- strh r1, [r5]
- ldrh r0, [r2]
- cmp r0, 0x11
- bls _081DF260
-_081DF268:
- movs r0, 0x3
- strh r0, [r3]
- ldr r1, _081DF2C0 @ =0x04000134
- ldr r2, _081DF2C4 @ =0x000080a0
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xC
- ldr r3, _081DF2D8 @ =0x00005003
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, [r4]
- movs r2, 0
- str r2, [r0]
- strb r2, [r0, 0x4]
- ldr r0, [r4]
- strb r2, [r0, 0x5]
- ldr r0, [r4]
- strb r2, [r0, 0x6]
- ldr r0, [r4]
- strb r2, [r0, 0x7]
- ldr r0, [r4]
- strb r2, [r0, 0x8]
- ldr r0, [r4]
- strb r2, [r0, 0x9]
- ldr r0, [r4]
- str r2, [r0, 0xC]
- ldrb r1, [r0, 0x10]
- strb r2, [r0, 0x10]
- ldr r1, [r4]
- ldrh r0, [r1, 0x12]
- movs r3, 0
- strh r2, [r1, 0x12]
- ldrb r0, [r1, 0x14]
- movs r0, 0x1
- strb r0, [r1, 0x14]
- ldr r0, [r4]
- strb r3, [r0, 0x15]
- ldr r0, [r4]
- adds r0, 0x2C
- ldrb r1, [r0]
- strb r3, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF2C0: .4byte 0x04000134
-_081DF2C4: .4byte 0x000080a0
-_081DF2C8: .4byte gRfuState
-_081DF2CC: .4byte 0x04000100
-_081DF2D0: .4byte 0x04000102
-_081DF2D4: .4byte 0x000080a2
-_081DF2D8: .4byte 0x00005003
- thumb_func_end AgbRFU_SoftReset
-
- thumb_func_start STWI_set_MS_mode
-STWI_set_MS_mode: @ 81DF2DC
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081DF2EC @ =gRfuState
- ldr r1, [r1]
- ldrb r2, [r1, 0x14]
- strb r0, [r1, 0x14]
- bx lr
- .align 2, 0
-_081DF2EC: .4byte gRfuState
- thumb_func_end STWI_set_MS_mode
-
- thumb_func_start STWI_read_status
-STWI_read_status: @ 81DF2F0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x1
- beq _081DF31C
- cmp r0, 0x1
- bgt _081DF306
- cmp r0, 0
- beq _081DF310
- b _081DF344
-_081DF306:
- cmp r1, 0x2
- beq _081DF328
- cmp r1, 0x3
- beq _081DF338
- b _081DF344
-_081DF310:
- ldr r0, _081DF318 @ =gRfuState
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- b _081DF346
- .align 2, 0
-_081DF318: .4byte gRfuState
-_081DF31C:
- ldr r0, _081DF324 @ =gRfuState
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- b _081DF346
- .align 2, 0
-_081DF324: .4byte gRfuState
-_081DF328:
- ldr r0, _081DF334 @ =gRfuState
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r0, 16
- lsrs r0, 16
- b _081DF346
- .align 2, 0
-_081DF334: .4byte gRfuState
-_081DF338:
- ldr r0, _081DF340 @ =gRfuState
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- b _081DF346
- .align 2, 0
-_081DF340: .4byte gRfuState
-_081DF344:
- ldr r0, _081DF34C @ =0x0000ffff
-_081DF346:
- pop {r1}
- bx r1
- .align 2, 0
-_081DF34C: .4byte 0x0000ffff
- thumb_func_end STWI_read_status
-
- thumb_func_start STWI_init_Callback_M
-STWI_init_Callback_M: @ 81DF350
- push {lr}
- movs r0, 0
- bl STWI_set_Callback_M
- pop {r0}
- bx r0
- thumb_func_end STWI_init_Callback_M
-
- thumb_func_start STWI_init_Callback_S
-STWI_init_Callback_S: @ 81DF35C
- push {lr}
- movs r0, 0
- bl STWI_set_Callback_S
- pop {r0}
- bx r0
- thumb_func_end STWI_init_Callback_S
-
- thumb_func_start STWI_set_Callback_M
-STWI_set_Callback_M: @ 81DF368
- ldr r1, _081DF370 @ =gRfuState
- ldr r1, [r1]
- str r0, [r1, 0x18]
- bx lr
- .align 2, 0
-_081DF370: .4byte gRfuState
- thumb_func_end STWI_set_Callback_M
-
- thumb_func_start STWI_set_Callback_S
-STWI_set_Callback_S: @ 81DF374
- ldr r1, _081DF37C @ =gRfuState
- ldr r1, [r1]
- str r0, [r1, 0x1C]
- bx lr
- .align 2, 0
-_081DF37C: .4byte gRfuState
- thumb_func_end STWI_set_Callback_S
-
- thumb_func_start STWI_set_Callback_ID
-STWI_set_Callback_ID: @ 81DF380
- ldr r1, _081DF388 @ =gRfuState
- ldr r1, [r1]
- str r0, [r1, 0x20]
- bx lr
- .align 2, 0
-_081DF388: .4byte gRfuState
- thumb_func_end STWI_set_Callback_ID
-
- thumb_func_start STWI_poll_CommandEnd
-STWI_poll_CommandEnd: @ 81DF38C
- push {lr}
- ldr r0, _081DF3B0 @ =gRfuState
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- adds r3, r0, 0
- cmp r1, 0x1
- bne _081DF3A6
- adds r1, r2, 0
-_081DF3A0:
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _081DF3A0
-_081DF3A6:
- ldr r0, [r3]
- ldrh r0, [r0, 0x12]
- pop {r1}
- bx r1
- .align 2, 0
-_081DF3B0: .4byte gRfuState
- thumb_func_end STWI_poll_CommandEnd
-
- thumb_func_start STWI_send_ResetREQ
-STWI_send_ResetREQ: @ 81DF3B4
- push {lr}
- movs r0, 0x10
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF3CE
- ldr r0, _081DF3D4 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF3CE:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF3D4: .4byte gRfuState
- thumb_func_end STWI_send_ResetREQ
-
- thumb_func_start STWI_send_LinkStatusREQ
-STWI_send_LinkStatusREQ: @ 81DF3D8
- push {lr}
- movs r0, 0x11
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF3F2
- ldr r0, _081DF3F8 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF3F2:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF3F8: .4byte gRfuState
- thumb_func_end STWI_send_LinkStatusREQ
-
- thumb_func_start STWI_send_VersionStatusREQ
-STWI_send_VersionStatusREQ: @ 81DF3FC
- push {lr}
- movs r0, 0x12
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF416
- ldr r0, _081DF41C @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF416:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF41C: .4byte gRfuState
- thumb_func_end STWI_send_VersionStatusREQ
-
- thumb_func_start STWI_send_SystemStatusREQ
-STWI_send_SystemStatusREQ: @ 81DF420
- push {lr}
- movs r0, 0x13
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF43A
- ldr r0, _081DF440 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF43A:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF440: .4byte gRfuState
- thumb_func_end STWI_send_SystemStatusREQ
-
- thumb_func_start STWI_send_SlotStatusREQ
-STWI_send_SlotStatusREQ: @ 81DF444
- push {lr}
- movs r0, 0x14
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF45E
- ldr r0, _081DF464 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF45E:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF464: .4byte gRfuState
- thumb_func_end STWI_send_SlotStatusREQ
-
- thumb_func_start STWI_send_ConfigStatusREQ
-STWI_send_ConfigStatusREQ: @ 81DF468
- push {lr}
- movs r0, 0x15
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF482
- ldr r0, _081DF488 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF482:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF488: .4byte gRfuState
- thumb_func_end STWI_send_ConfigStatusREQ
-
- thumb_func_start STWI_send_GameConfigREQ
-STWI_send_GameConfigREQ: @ 81DF48C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x16
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF4D8
- ldr r2, _081DF4E0 @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x6
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r1, [r0, 0x24]
- adds r1, 0x4
- ldrh r0, [r4]
- strh r0, [r1]
- adds r1, 0x2
- adds r4, 0x2
- movs r2, 0xD
-_081DF4B6:
- ldrb r0, [r4]
- strb r0, [r1]
- adds r1, 0x1
- adds r4, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _081DF4B6
- movs r2, 0x7
-_081DF4C6:
- ldrb r0, [r5]
- strb r0, [r1]
- adds r1, 0x1
- adds r5, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _081DF4C6
- bl STWI_start_Command
-_081DF4D8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF4E0: .4byte gRfuState
- thumb_func_end STWI_send_GameConfigREQ
-
- thumb_func_start STWI_send_SystemConfigREQ
-STWI_send_SystemConfigREQ: @ 81DF4E4
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- movs r0, 0x17
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF51A
- ldr r2, _081DF520 @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- adds r0, 0x4
- strb r4, [r0]
- adds r0, 0x1
- strb r5, [r0]
- adds r0, 0x1
- strh r6, [r0]
- bl STWI_start_Command
-_081DF51A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF520: .4byte gRfuState
- thumb_func_end STWI_send_SystemConfigREQ
-
- thumb_func_start STWI_send_SC_StartREQ
-STWI_send_SC_StartREQ: @ 81DF524
- push {lr}
- movs r0, 0x19
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF53E
- ldr r0, _081DF544 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF53E:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF544: .4byte gRfuState
- thumb_func_end STWI_send_SC_StartREQ
-
- thumb_func_start STWI_send_SC_PollingREQ
-STWI_send_SC_PollingREQ: @ 81DF548
- push {lr}
- movs r0, 0x1A
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF562
- ldr r0, _081DF568 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF562:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF568: .4byte gRfuState
- thumb_func_end STWI_send_SC_PollingREQ
-
- thumb_func_start STWI_send_SC_EndREQ
-STWI_send_SC_EndREQ: @ 81DF56C
- push {lr}
- movs r0, 0x1B
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF586
- ldr r0, _081DF58C @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF586:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF58C: .4byte gRfuState
- thumb_func_end STWI_send_SC_EndREQ
-
- thumb_func_start STWI_send_SP_StartREQ
-STWI_send_SP_StartREQ: @ 81DF590
- push {lr}
- movs r0, 0x1C
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF5AA
- ldr r0, _081DF5B0 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF5AA:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF5B0: .4byte gRfuState
- thumb_func_end STWI_send_SP_StartREQ
-
- thumb_func_start STWI_send_SP_PollingREQ
-STWI_send_SP_PollingREQ: @ 81DF5B4
- push {lr}
- movs r0, 0x1D
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF5CE
- ldr r0, _081DF5D4 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF5CE:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF5D4: .4byte gRfuState
- thumb_func_end STWI_send_SP_PollingREQ
-
- thumb_func_start STWI_send_SP_EndREQ
-STWI_send_SP_EndREQ: @ 81DF5D8
- push {lr}
- movs r0, 0x1E
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF5F2
- ldr r0, _081DF5F8 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF5F2:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF5F8: .4byte gRfuState
- thumb_func_end STWI_send_SP_EndREQ
-
- thumb_func_start STWI_send_CP_StartREQ
-STWI_send_CP_StartREQ: @ 81DF5FC
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x1F
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF620
- ldr r2, _081DF628 @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- str r4, [r0, 0x4]
- bl STWI_start_Command
-_081DF620:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF628: .4byte gRfuState
- thumb_func_end STWI_send_CP_StartREQ
-
- thumb_func_start STWI_send_CP_PollingREQ
-STWI_send_CP_PollingREQ: @ 81DF62C
- push {lr}
- movs r0, 0x20
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF646
- ldr r0, _081DF64C @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF646:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF64C: .4byte gRfuState
- thumb_func_end STWI_send_CP_PollingREQ
-
- thumb_func_start STWI_send_CP_EndREQ
-STWI_send_CP_EndREQ: @ 81DF650
- push {lr}
- movs r0, 0x21
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF66A
- ldr r0, _081DF670 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF66A:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF670: .4byte gRfuState
- thumb_func_end STWI_send_CP_EndREQ
-
- thumb_func_start STWI_send_DataTxREQ
-STWI_send_DataTxREQ: @ 81DF674
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r5, r4, 24
- movs r0, 0x24
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF6B2
- lsrs r2, r4, 26
- movs r0, 0x3
- ands r0, r5
- cmp r0, 0
- beq _081DF694
- adds r2, 0x1
-_081DF694:
- ldr r1, _081DF6B8 @ =gRfuState
- ldr r0, [r1]
- strb r2, [r0, 0x4]
- ldr r0, [r1]
- ldr r1, [r0, 0x24]
- adds r1, 0x4
- ldrb r2, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 19
- orrs r2, r0
- adds r0, r6, 0
- bl CpuSet
- bl STWI_start_Command
-_081DF6B2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF6B8: .4byte gRfuState
- thumb_func_end STWI_send_DataTxREQ
-
- thumb_func_start STWI_send_DataTxAndChangeREQ
-STWI_send_DataTxAndChangeREQ: @ 81DF6BC
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r5, r4, 24
- movs r0, 0x25
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF6FA
- lsrs r2, r4, 26
- movs r0, 0x3
- ands r0, r5
- cmp r0, 0
- beq _081DF6DC
- adds r2, 0x1
-_081DF6DC:
- ldr r1, _081DF700 @ =gRfuState
- ldr r0, [r1]
- strb r2, [r0, 0x4]
- ldr r0, [r1]
- ldr r1, [r0, 0x24]
- adds r1, 0x4
- ldrb r2, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 19
- orrs r2, r0
- adds r0, r6, 0
- bl CpuSet
- bl STWI_start_Command
-_081DF6FA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF700: .4byte gRfuState
- thumb_func_end STWI_send_DataTxAndChangeREQ
-
- thumb_func_start STWI_send_DataRxREQ
-STWI_send_DataRxREQ: @ 81DF704
- push {lr}
- movs r0, 0x26
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF71E
- ldr r0, _081DF724 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF71E:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF724: .4byte gRfuState
- thumb_func_end STWI_send_DataRxREQ
-
- thumb_func_start STWI_send_MS_ChangeREQ
-STWI_send_MS_ChangeREQ: @ 81DF728
- push {lr}
- movs r0, 0x27
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF742
- ldr r0, _081DF748 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF742:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF748: .4byte gRfuState
- thumb_func_end STWI_send_MS_ChangeREQ
-
- thumb_func_start STWI_send_DataReadyAndChangeREQ
-STWI_send_DataReadyAndChangeREQ: @ 81DF74C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- movs r0, 0x28
- bl STWI_init
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _081DF792
- cmp r4, 0
- bne _081DF774
- ldr r0, _081DF770 @ =gRfuState
- ldr r0, [r0]
- strb r3, [r0, 0x4]
- b _081DF78E
- .align 2, 0
-_081DF770: .4byte gRfuState
-_081DF774:
- ldr r2, _081DF798 @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- adds r0, 0x4
- strb r5, [r0]
- adds r0, 0x1
- strb r3, [r0]
- adds r0, 0x1
- strb r3, [r0]
- strb r3, [r0, 0x1]
-_081DF78E:
- bl STWI_start_Command
-_081DF792:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF798: .4byte gRfuState
- thumb_func_end STWI_send_DataReadyAndChangeREQ
-
- thumb_func_start STWI_send_DisconnectedAndChangeREQ
-STWI_send_DisconnectedAndChangeREQ: @ 81DF79C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0x29
- bl STWI_init
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _081DF7D2
- ldr r2, _081DF7D8 @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- adds r0, 0x4
- strb r4, [r0]
- adds r0, 0x1
- strb r5, [r0]
- adds r0, 0x1
- strb r3, [r0]
- strb r3, [r0, 0x1]
- bl STWI_start_Command
-_081DF7D2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF7D8: .4byte gRfuState
- thumb_func_end STWI_send_DisconnectedAndChangeREQ
-
- thumb_func_start STWI_send_ResumeRetransmitAndChangeREQ
-STWI_send_ResumeRetransmitAndChangeREQ: @ 81DF7DC
- push {lr}
- movs r0, 0x37
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF7F6
- ldr r0, _081DF7FC @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF7F6:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF7FC: .4byte gRfuState
- thumb_func_end STWI_send_ResumeRetransmitAndChangeREQ
-
- thumb_func_start STWI_send_DisconnectREQ
-STWI_send_DisconnectREQ: @ 81DF800
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x30
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF824
- ldr r2, _081DF82C @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- str r4, [r0, 0x4]
- bl STWI_start_Command
-_081DF824:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF82C: .4byte gRfuState
- thumb_func_end STWI_send_DisconnectREQ
-
- thumb_func_start STWI_send_TestModeREQ
-STWI_send_TestModeREQ: @ 81DF830
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- movs r0, 0x31
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF85C
- ldr r2, _081DF864 @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r1, [r0, 0x24]
- lsls r0, r4, 8
- orrs r0, r5
- str r0, [r1, 0x4]
- bl STWI_start_Command
-_081DF85C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF864: .4byte gRfuState
- thumb_func_end STWI_send_TestModeREQ
-
- thumb_func_start STWI_send_CPR_StartREQ
-STWI_send_CPR_StartREQ: @ 81DF868
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- movs r0, 0x32
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _081DF89A
- ldr r2, _081DF8A0 @ =gRfuState
- ldr r1, [r2]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- lsls r0, r5, 16
- orrs r0, r4
- ldr r1, [r2]
- ldr r1, [r1, 0x24]
- str r0, [r1, 0x4]
- str r6, [r1, 0x8]
- bl STWI_start_Command
-_081DF89A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081DF8A0: .4byte gRfuState
- thumb_func_end STWI_send_CPR_StartREQ
-
- thumb_func_start STWI_send_CPR_PollingREQ
-STWI_send_CPR_PollingREQ: @ 81DF8A4
- push {lr}
- movs r0, 0x33
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF8BE
- ldr r0, _081DF8C4 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF8BE:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF8C4: .4byte gRfuState
- thumb_func_end STWI_send_CPR_PollingREQ
-
- thumb_func_start STWI_send_CPR_EndREQ
-STWI_send_CPR_EndREQ: @ 81DF8C8
- push {lr}
- movs r0, 0x34
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF8E2
- ldr r0, _081DF8E8 @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF8E2:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF8E8: .4byte gRfuState
- thumb_func_end STWI_send_CPR_EndREQ
-
- thumb_func_start STWI_send_StopModeREQ
-STWI_send_StopModeREQ: @ 81DF8EC
- push {lr}
- movs r0, 0x3D
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _081DF906
- ldr r0, _081DF90C @ =gRfuState
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_081DF906:
- pop {r0}
- bx r0
- .align 2, 0
-_081DF90C: .4byte gRfuState
- thumb_func_end STWI_send_StopModeREQ
-
- thumb_func_start STWI_intr_timer
-STWI_intr_timer: @ 81DF910
- push {r4,lr}
- ldr r4, _081DF928 @ =gRfuState
- ldr r1, [r4]
- ldr r0, [r1, 0xC]
- cmp r0, 0x2
- beq _081DF936
- cmp r0, 0x2
- bhi _081DF92C
- cmp r0, 0x1
- beq _081DF944
- b _081DF96C
- .align 2, 0
-_081DF928: .4byte gRfuState
-_081DF92C:
- cmp r0, 0x3
- beq _081DF94E
- cmp r0, 0x4
- beq _081DF944
- b _081DF96C
-_081DF936:
- ldrb r0, [r1, 0x10]
- movs r0, 0x1
- strb r0, [r1, 0x10]
- movs r0, 0x32
- bl STWI_set_timer
- b _081DF96C
-_081DF944:
- bl STWI_stop_timer
- bl STWI_restart_Command
- b _081DF96C
-_081DF94E:
- ldrb r0, [r1, 0x10]
- movs r0, 0x1
- strb r0, [r1, 0x10]
- bl STWI_stop_timer
- bl STWI_reset_ClockCounter
- ldr r0, [r4]
- ldr r2, [r0, 0x18]
- cmp r2, 0
- beq _081DF96C
- movs r0, 0xFF
- movs r1, 0
- bl _call_via_r2
-_081DF96C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end STWI_intr_timer
-
- thumb_func_start STWI_set_timer
-STWI_set_timer: @ 81DF974
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r5, r3, 0
- ldr r2, _081DF9A4 @ =gRfuState
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r1, _081DF9A8 @ =0x04000100
- adds r4, r0, r1
- adds r1, 0x2
- adds r7, r0, r1
- ldr r1, _081DF9AC @ =0x04000208
- movs r0, 0
- strh r0, [r1]
- adds r6, r2, 0
- cmp r3, 0x50
- beq _081DF9CC
- cmp r3, 0x50
- bgt _081DF9B0
- cmp r3, 0x32
- beq _081DF9BA
- b _081DF9F8
- .align 2, 0
-_081DF9A4: .4byte gRfuState
-_081DF9A8: .4byte 0x04000100
-_081DF9AC: .4byte 0x04000208
-_081DF9B0:
- cmp r5, 0x64
- beq _081DF9DC
- cmp r5, 0x82
- beq _081DF9EC
- b _081DF9F8
-_081DF9BA:
- ldr r1, _081DF9C8 @ =0x0000fccb
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x1
- b _081DF9F6
- .align 2, 0
-_081DF9C8: .4byte 0x0000fccb
-_081DF9CC:
- ldr r1, _081DF9D8 @ =0x0000fae0
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x2
- b _081DF9F6
- .align 2, 0
-_081DF9D8: .4byte 0x0000fae0
-_081DF9DC:
- ldr r1, _081DF9E8 @ =0x0000f996
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x3
- b _081DF9F6
- .align 2, 0
-_081DF9E8: .4byte 0x0000f996
-_081DF9EC:
- ldr r1, _081DFA14 @ =0x0000f7ad
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x4
-_081DF9F6:
- str r0, [r1, 0xC]
-_081DF9F8:
- movs r0, 0xC3
- strh r0, [r7]
- ldr r2, _081DFA18 @ =0x04000202
- ldr r1, [r6]
- movs r0, 0x8
- ldrb r1, [r1, 0xA]
- lsls r0, r1
- strh r0, [r2]
- ldr r1, _081DFA1C @ =0x04000208
- movs r0, 0x1
- strh r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081DFA14: .4byte 0x0000f7ad
-_081DFA18: .4byte 0x04000202
-_081DFA1C: .4byte 0x04000208
- thumb_func_end STWI_set_timer
-
- thumb_func_start STWI_stop_timer
-STWI_stop_timer: @ 81DFA20
- ldr r2, _081DFA40 @ =gRfuState
- ldr r0, [r2]
- movs r1, 0
- str r1, [r0, 0xC]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r3, _081DFA44 @ =0x04000100
- adds r0, r3
- strh r1, [r0]
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r2, _081DFA48 @ =0x04000102
- adds r0, r2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_081DFA40: .4byte gRfuState
-_081DFA44: .4byte 0x04000100
-_081DFA48: .4byte 0x04000102
- thumb_func_end STWI_stop_timer
-
- thumb_func_start STWI_init
-STWI_init: @ 81DFA4C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- ldr r0, _081DFA78 @ =0x04000208
- ldrh r0, [r0]
- cmp r0, 0
- bne _081DFA80
- ldr r0, _081DFA7C @ =gRfuState
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- movs r0, 0x6
- strh r0, [r1, 0x12]
- ldr r2, [r1, 0x18]
- cmp r2, 0
- beq _081DFACA
- ldrh r1, [r1, 0x12]
- adds r0, r5, 0
- bl _call_via_r2
- b _081DFACA
- .align 2, 0
-_081DFA78: .4byte 0x04000208
-_081DFA7C: .4byte gRfuState
-_081DFA80:
- ldr r4, _081DFAAC @ =gRfuState
- ldr r2, [r4]
- adds r3, r2, 0
- adds r3, 0x2C
- ldrb r0, [r3]
- cmp r0, 0x1
- bne _081DFAB0
- ldrh r0, [r2, 0x12]
- movs r1, 0
- movs r0, 0x2
- strh r0, [r2, 0x12]
- ldrb r0, [r3]
- strb r1, [r3]
- ldr r0, [r4]
- ldr r2, [r0, 0x18]
- cmp r2, 0
- beq _081DFACA
- ldrh r1, [r0, 0x12]
- adds r0, r5, 0
- bl _call_via_r2
- b _081DFACA
- .align 2, 0
-_081DFAAC: .4byte gRfuState
-_081DFAB0:
- ldrb r0, [r2, 0x14]
- cmp r0, 0
- bne _081DFACE
- ldrh r0, [r2, 0x12]
- movs r0, 0x4
- strh r0, [r2, 0x12]
- ldr r3, [r2, 0x18]
- cmp r3, 0
- beq _081DFACA
- ldrh r1, [r2, 0x12]
- adds r0, r5, 0
- bl _call_via_r3
-_081DFACA:
- movs r0, 0x1
- b _081DFB16
-_081DFACE:
- ldrb r0, [r3]
- movs r1, 0
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, [r4]
- strb r6, [r0, 0x6]
- ldr r0, [r4]
- str r1, [r0]
- strb r1, [r0, 0x4]
- ldr r0, [r4]
- strb r1, [r0, 0x5]
- ldr r0, [r4]
- strb r1, [r0, 0x7]
- ldr r0, [r4]
- strb r1, [r0, 0x8]
- ldr r0, [r4]
- strb r1, [r0, 0x9]
- ldr r0, [r4]
- str r1, [r0, 0xC]
- ldrb r2, [r0, 0x10]
- strb r1, [r0, 0x10]
- ldr r0, [r4]
- ldrh r2, [r0, 0x12]
- movs r2, 0
- strh r1, [r0, 0x12]
- strb r2, [r0, 0x15]
- ldr r1, _081DFB1C @ =0x04000134
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xC
- ldr r2, _081DFB20 @ =0x00005003
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
-_081DFB16:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081DFB1C: .4byte 0x04000134
-_081DFB20: .4byte 0x00005003
- thumb_func_end STWI_init
-
- thumb_func_start STWI_start_Command
-STWI_start_Command: @ 81DFB24
- push {r4,r5,lr}
- ldr r5, _081DFB7C @ =gRfuState
- ldr r0, [r5]
- ldr r3, [r0, 0x24]
- ldrb r1, [r0, 0x4]
- lsls r1, 8
- ldrb r0, [r0, 0x6]
- ldr r2, _081DFB80 @ =0x99660000
- orrs r0, r2
- orrs r1, r0
- str r1, [r3]
- ldr r2, _081DFB84 @ =0x04000120
- ldr r1, [r5]
- ldr r0, [r1, 0x24]
- ldr r0, [r0]
- str r0, [r2]
- movs r2, 0
- str r2, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x5]
- ldr r4, _081DFB88 @ =0x04000208
- ldrh r3, [r4]
- strh r2, [r4]
- ldr r2, _081DFB8C @ =0x04000200
- ldr r1, [r5]
- movs r0, 0x8
- ldrb r1, [r1, 0xA]
- lsls r0, r1
- ldrh r1, [r2]
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strh r0, [r2]
- strh r3, [r4]
- ldr r1, _081DFB90 @ =0x04000128
- ldr r2, _081DFB94 @ =0x00005083
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081DFB7C: .4byte gRfuState
-_081DFB80: .4byte 0x99660000
-_081DFB84: .4byte 0x04000120
-_081DFB88: .4byte 0x04000208
-_081DFB8C: .4byte 0x04000200
-_081DFB90: .4byte 0x04000128
-_081DFB94: .4byte 0x00005083
- thumb_func_end STWI_start_Command
-
- thumb_func_start STWI_restart_Command
-STWI_restart_Command: @ 81DFB98
- push {r4,lr}
- ldr r4, _081DFBB0 @ =gRfuState
- ldr r2, [r4]
- ldrb r0, [r2, 0x15]
- adds r3, r4, 0
- cmp r0, 0x1
- bhi _081DFBB4
- adds r0, 0x1
- strb r0, [r2, 0x15]
- bl STWI_start_Command
- b _081DFC0E
- .align 2, 0
-_081DFBB0: .4byte gRfuState
-_081DFBB4:
- ldrb r0, [r2, 0x6]
- cmp r0, 0x27
- beq _081DFBC6
- cmp r0, 0x25
- beq _081DFBC6
- cmp r0, 0x35
- beq _081DFBC6
- cmp r0, 0x37
- bne _081DFBE8
-_081DFBC6:
- ldr r0, [r3]
- ldrh r1, [r0, 0x12]
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0x12]
- adds r0, 0x2C
- ldrb r1, [r0]
- strb r2, [r0]
- ldr r1, [r3]
- ldr r2, [r1, 0x18]
- cmp r2, 0
- beq _081DFC0E
- ldrb r0, [r1, 0x6]
- ldrh r1, [r1, 0x12]
- bl _call_via_r2
- b _081DFC0E
-_081DFBE8:
- ldrh r0, [r2, 0x12]
- movs r1, 0
- movs r0, 0x1
- strh r0, [r2, 0x12]
- adds r0, r2, 0
- adds r0, 0x2C
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r1, [r4]
- ldr r2, [r1, 0x18]
- cmp r2, 0
- beq _081DFC08
- ldrb r0, [r1, 0x6]
- ldrh r1, [r1, 0x12]
- bl _call_via_r2
-_081DFC08:
- ldr r1, [r4]
- movs r0, 0x4
- str r0, [r1]
-_081DFC0E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end STWI_restart_Command
-
- thumb_func_start STWI_reset_ClockCounter
-STWI_reset_ClockCounter: @ 81DFC18
- ldr r3, _081DFC44 @ =gRfuState
- ldr r1, [r3]
- movs r0, 0x5
- str r0, [r1]
- movs r2, 0
- strb r2, [r1, 0x4]
- ldr r0, [r3]
- strb r2, [r0, 0x5]
- ldr r1, _081DFC48 @ =0x04000120
- movs r0, 0x80
- lsls r0, 24
- str r0, [r1]
- adds r1, 0x8
- strh r2, [r1]
- ldr r2, _081DFC4C @ =0x00005003
- adds r0, r2, 0
- strh r0, [r1]
- adds r2, 0x7F
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- bx lr
- .align 2, 0
-_081DFC44: .4byte gRfuState
-_081DFC48: .4byte 0x04000120
-_081DFC4C: .4byte 0x00005003
- thumb_func_end STWI_reset_ClockCounter
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index 7c1485466..49fe3aef5 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -50,7 +50,7 @@ rfu_REQ_sendData_wrapper: @ 80FD3F0
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, _080FD410 @ =gUnknown_3007460
+ ldr r0, _080FD410 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0
@@ -63,7 +63,7 @@ rfu_REQ_sendData_wrapper: @ 80FD3F0
movs r2, 0x1
b _080FD420
.align 2, 0
-_080FD410: .4byte gUnknown_3007460
+_080FD410: .4byte gRfuLinkStatus
_080FD414: .4byte gUnknown_3005E10
_080FD418:
ldr r0, _080FD42C @ =gUnknown_3005E10
@@ -383,7 +383,7 @@ _080FD648:
_080FD664: .4byte gUnknown_3005E10
_080FD668:
movs r2, 0
- ldr r0, _080FD6B4 @ =gUnknown_3007460
+ ldr r0, _080FD6B4 @ =gRfuLinkStatus
ldr r1, [r0]
ldrb r3, [r1, 0x8]
ldr r5, _080FD6B8 @ =gUnknown_3005E10
@@ -422,7 +422,7 @@ _080FD6A2:
movs r0, 0x3
b _080FD6E8
.align 2, 0
-_080FD6B4: .4byte gUnknown_3007460
+_080FD6B4: .4byte gRfuLinkStatus
_080FD6B8: .4byte gUnknown_3005E10
_080FD6BC:
ldrb r0, [r5, 0x4]
@@ -476,7 +476,7 @@ sub_80FD6F4: @ 80FD6F4
bics r0, r1
strb r0, [r3]
movs r4, 0
- ldr r7, _080FD75C @ =gUnknown_3007460
+ ldr r7, _080FD75C @ =gRfuLinkStatus
movs r5, 0x1
adds r3, 0x4
movs r2, 0
@@ -514,7 +514,7 @@ _080FD750:
bx r0
.align 2, 0
_080FD758: .4byte gUnknown_3005E10
-_080FD75C: .4byte gUnknown_3007460
+_080FD75C: .4byte gRfuLinkStatus
thumb_func_end sub_80FD6F4
thumb_func_start sub_80FD760
@@ -601,7 +601,7 @@ _080FD80A:
strb r0, [r5, 0x4]
ldrb r0, [r5, 0x12]
strb r0, [r5, 0x5]
- ldr r4, _080FD82C @ =gUnknown_3007460
+ ldr r4, _080FD82C @ =gRfuLinkStatus
ldr r0, [r4]
ldrb r0, [r0, 0x3]
bl sub_80FE818
@@ -613,7 +613,7 @@ _080FD80A:
bl sub_80FE7F0
b _080FD84A
.align 2, 0
-_080FD82C: .4byte gUnknown_3007460
+_080FD82C: .4byte gRfuLinkStatus
_080FD830:
movs r0, 0x12
strb r0, [r5, 0x4]
@@ -653,7 +653,7 @@ sub_80FD850: @ 80FD850
mov r1, sp
adds r2, r5, 0
adds r3, r4, 0
- bl sub_81E13F0
+ bl rfu_REQBN_watchLink
mov r0, sp
ldrb r0, [r0]
adds r7, r4, 0
@@ -743,7 +743,7 @@ _080FD90A:
_080FD91E:
bl sub_80FEAF4
_080FD922:
- ldr r0, _080FDA0C @ =gUnknown_3007460
+ ldr r0, _080FDA0C @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0x1
@@ -866,7 +866,7 @@ _080FD9FC:
pop {r1}
bx r1
.align 2, 0
-_080FDA0C: .4byte gUnknown_3007460
+_080FDA0C: .4byte gRfuLinkStatus
_080FDA10: .4byte gUnknown_3005E10
thumb_func_end sub_80FD850
@@ -1025,7 +1025,7 @@ _080FDB5C:
.align 2, 0
_080FDB70: .4byte gUnknown_3005E10
_080FDB74:
- bl sub_81E0CAC
+ bl rfu_REQ_startSearchChild
b _080FDBDA
_080FDB7A:
bl rfu_REQ_pollSearchChild
@@ -1056,13 +1056,13 @@ _080FDBAE:
bl rfu_REQ_endConnectParent
b _080FDBDA
_080FDBB4:
- ldr r0, _080FDBC0 @ =gUnknown_3007460
+ ldr r0, _080FDBC0 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x3]
bl rfu_REQ_CHILD_startConnectRecovery
b _080FDBDA
.align 2, 0
-_080FDBC0: .4byte gUnknown_3007460
+_080FDBC0: .4byte gRfuLinkStatus
_080FDBC4:
bl rfu_REQ_CHILD_pollConnectRecovery
b _080FDBDA
@@ -1089,7 +1089,7 @@ _080FDBE4:
bhi _080FDBF4
b _080FDA5A
_080FDBF4:
- ldr r0, _080FDC24 @ =gUnknown_3007460
+ ldr r0, _080FDC24 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0x1
@@ -1110,7 +1110,7 @@ _080FDC1A:
bx r0
.align 2, 0
_080FDC20: .4byte gUnknown_3005E10
-_080FDC24: .4byte gUnknown_3007460
+_080FDC24: .4byte gRfuLinkStatus
thumb_func_end sub_80FDA30
thumb_func_start sub_80FDC28
@@ -1387,7 +1387,7 @@ _080FDE64:
ldrh r0, [r4, 0x1A]
cmp r0, 0x1
beq _080FDE8A
- ldr r0, _080FDEB0 @ =gUnknown_3007460
+ ldr r0, _080FDEB0 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x8]
cmp r0, 0x4
@@ -1419,7 +1419,7 @@ _080FDEA0:
b _080FE16E
.align 2, 0
_080FDEAC: .4byte gUnknown_3005E10
-_080FDEB0: .4byte gUnknown_3007460
+_080FDEB0: .4byte gRfuLinkStatus
_080FDEB4:
cmp r6, 0
beq _080FDEBA
@@ -1563,7 +1563,7 @@ _080FDFB4:
beq _080FDFBA
b _080FE16E
_080FDFBA:
- ldr r2, _080FDFFC @ =gUnknown_3007460
+ ldr r2, _080FDFFC @ =gRfuLinkStatus
ldr r3, [r2]
ldrb r0, [r3, 0x3]
movs r1, 0
@@ -1600,7 +1600,7 @@ _080FDFEC:
beq _080FDFDC
b _080FE16E
.align 2, 0
-_080FDFFC: .4byte gUnknown_3007460
+_080FDFFC: .4byte gRfuLinkStatus
_080FE000:
cmp r6, 0
bne _080FE01E
@@ -1670,7 +1670,7 @@ _080FE078:
ldr r4, _080FE0B4 @ =gUnknown_3005E10
strb r6, [r4, 0x5]
strb r6, [r4, 0x4]
- ldr r0, _080FE0B8 @ =gUnknown_3007460
+ ldr r0, _080FE0B8 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x3]
bl sub_80FE818
@@ -1697,7 +1697,7 @@ _080FE08C:
b _080FE16E
.align 2, 0
_080FE0B4: .4byte gUnknown_3005E10
-_080FE0B8: .4byte gUnknown_3007460
+_080FE0B8: .4byte gRfuLinkStatus
_080FE0BC:
cmp r6, 0
bne _080FE16E
@@ -1758,7 +1758,7 @@ _080FE0E8:
strb r7, [r5, 0x5]
strb r7, [r5, 0x4]
bl sub_80FEAF4
- ldr r0, _080FE158 @ =gUnknown_3007460
+ ldr r0, _080FE158 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r1, [r0, 0x2]
ldrb r0, [r0, 0x3]
@@ -1772,7 +1772,7 @@ _080FE0E8:
bl sub_80FE7F0
b _080FE16E
.align 2, 0
-_080FE158: .4byte gUnknown_3007460
+_080FE158: .4byte gRfuLinkStatus
_080FE15C:
cmp r6, 0
bne _080FE16E
@@ -1811,7 +1811,7 @@ _080FE194:
ldrb r0, [r0]
cmp r0, 0
bne _080FE1CA
- ldr r4, _080FE1E0 @ =gUnknown_3007460
+ ldr r4, _080FE1E0 @ =gRfuLinkStatus
ldr r0, [r4]
ldrb r0, [r0]
cmp r0, 0
@@ -1839,7 +1839,7 @@ _080FE1D2:
_080FE1DC:
b _080FE322
.align 2, 0
-_080FE1E0: .4byte gUnknown_3007460
+_080FE1E0: .4byte gRfuLinkStatus
_080FE1E4:
mov r0, r8
cmp r0, 0x30
@@ -1906,7 +1906,7 @@ _080FE24E:
strb r0, [r3]
movs r3, 0
adds r7, r1, 0
- ldr r2, _080FE2AC @ =gUnknown_3007460
+ ldr r2, _080FE2AC @ =gRfuLinkStatus
mov r1, sp
movs r5, 0x1
adds r4, r7, 0
@@ -1947,7 +1947,7 @@ _080FE27A:
b _080FE2C2
.align 2, 0
_080FE2A8: .4byte gUnknown_3005E10
-_080FE2AC: .4byte gUnknown_3007460
+_080FE2AC: .4byte gRfuLinkStatus
_080FE2B0:
ldrb r0, [r7, 0x4]
subs r0, 0x6
@@ -1980,7 +1980,7 @@ _080FE2D6:
b _080FE322
_080FE2E6:
bl sub_80FE6F0
- ldr r0, _080FE300 @ =gUnknown_3007460
+ ldr r0, _080FE300 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0xFF
@@ -1990,7 +1990,7 @@ _080FE2E6:
bl sub_80FE7F0
b _080FE322
.align 2, 0
-_080FE300: .4byte gUnknown_3007460
+_080FE300: .4byte gRfuLinkStatus
_080FE304:
cmp r6, 0
bne _080FE326
@@ -2018,7 +2018,7 @@ _080FE326:
ldrb r0, [r7, 0x7]
cmp r0, 0x4
bne _080FE358
- ldr r2, _080FE354 @ =gUnknown_3007460
+ ldr r2, _080FE354 @ =gRfuLinkStatus
ldr r1, [r2]
movs r0, 0x1
strb r0, [r1]
@@ -2030,7 +2030,7 @@ _080FE326:
b _080FE388
.align 2, 0
_080FE350: .4byte gUnknown_3005E10
-_080FE354: .4byte gUnknown_3007460
+_080FE354: .4byte gRfuLinkStatus
_080FE358:
movs r1, 0
mov r3, r8
@@ -2075,7 +2075,7 @@ sub_80FE394: @ 80FE394
strb r0, [r4, 0xE]
movs r0, 0x1
strb r0, [r4, 0xF]
- ldr r0, _080FE3CC @ =gUnknown_3007460
+ ldr r0, _080FE3CC @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r5, [r0]
cmp r5, 0
@@ -2091,7 +2091,7 @@ sub_80FE394: @ 80FE394
b _080FE40C
.align 2, 0
_080FE3C8: .4byte gUnknown_3005E10
-_080FE3CC: .4byte gUnknown_3007460
+_080FE3CC: .4byte gRfuLinkStatus
_080FE3D0:
mov r0, sp
bl rfu_UNI_PARENT_getDRAC_ACK
@@ -2148,7 +2148,7 @@ sub_80FE418: @ 80FE418
bls _080FE436
b _080FE62A
_080FE436:
- ldr r0, _080FE4A0 @ =gUnknown_3007460
+ ldr r0, _080FE4A0 @ =gRfuLinkStatus
ldr r2, [r0]
ldrb r1, [r2, 0x2]
ldrb r0, [r3, 0xC]
@@ -2201,7 +2201,7 @@ _080FE46C:
b _080FE574
.align 2, 0
_080FE49C: .4byte gUnknown_3005E10
-_080FE4A0: .4byte gUnknown_3007460
+_080FE4A0: .4byte gRfuLinkStatus
_080FE4A4:
ldrb r1, [r7]
adds r0, r4, 0
@@ -2224,7 +2224,7 @@ _080FE4BE:
mov r10, r2
cmp r0, 0
beq _080FE574
- ldr r0, _080FE518 @ =gUnknown_3007450
+ ldr r0, _080FE518 @ =gRfuSlotStatusNI
lsls r1, r6, 2
adds r1, r0
ldr r1, [r1]
@@ -2242,7 +2242,7 @@ _080FE4BE:
ldr r0, _080FE51C @ =0x0000ffff
cmp r2, r0
beq _080FE508
- ldr r0, _080FE520 @ =gUnknown_3007460
+ ldr r0, _080FE520 @ =gRfuLinkStatus
ldr r0, [r0]
lsls r1, r6, 5
adds r0, r1
@@ -2264,9 +2264,9 @@ _080FE508:
orrs r5, r0
b _080FE53C
.align 2, 0
-_080FE518: .4byte gUnknown_3007450
+_080FE518: .4byte gRfuSlotStatusNI
_080FE51C: .4byte 0x0000ffff
-_080FE520: .4byte gUnknown_3007460
+_080FE520: .4byte gRfuLinkStatus
_080FE524:
lsls r1, r6, 1
adds r0, r3, 0
@@ -2331,7 +2331,7 @@ _080FE592:
cmp r0, 0
beq _080FE5CE
movs r5, 0x1
- ldr r0, _080FE600 @ =gUnknown_3007460
+ ldr r0, _080FE600 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x6]
cmp r0, 0
@@ -2378,7 +2378,7 @@ _080FE5CE:
.align 2, 0
_080FE5F8: .4byte 0x0000ffff
_080FE5FC: .4byte gUnknown_3005E10
-_080FE600: .4byte gUnknown_3007460
+_080FE600: .4byte gRfuLinkStatus
_080FE604:
cmp r0, 0x2
bne _080FE610
@@ -2435,7 +2435,7 @@ sub_80FE63C: @ 80FE63C
lsls r0, 16
cmp r0, 0
beq _080FE676
- ldr r1, _080FE6E8 @ =gUnknown_3007450
+ ldr r1, _080FE6E8 @ =gRfuSlotStatusNI
ldrb r0, [r4, 0x10]
lsls r0, 2
adds r0, r1
@@ -2481,7 +2481,7 @@ _080FE6B6:
bne _080FE6DA
strb r4, [r5, 0x5]
strb r4, [r5, 0x4]
- ldr r0, _080FE6EC @ =gUnknown_3007460
+ ldr r0, _080FE6EC @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r1, [r0, 0x2]
ldrb r0, [r0, 0x3]
@@ -2498,8 +2498,8 @@ _080FE6DA:
.align 2, 0
_080FE6E0: .4byte 0x04000208
_080FE6E4: .4byte gUnknown_3005E10
-_080FE6E8: .4byte gUnknown_3007450
-_080FE6EC: .4byte gUnknown_3007460
+_080FE6E8: .4byte gRfuSlotStatusNI
+_080FE6EC: .4byte gRfuLinkStatus
thumb_func_end sub_80FE63C
thumb_func_start sub_80FE6F0
@@ -2509,7 +2509,7 @@ sub_80FE6F0: @ 80FE6F0
ldrb r0, [r5, 0x4]
cmp r0, 0xF
bne _080FE73C
- ldr r1, _080FE748 @ =gUnknown_3007450
+ ldr r1, _080FE748 @ =gRfuSlotStatusNI
ldrb r2, [r5, 0x10]
lsls r0, r2, 2
adds r0, r1
@@ -2546,7 +2546,7 @@ _080FE73C:
bx r0
.align 2, 0
_080FE744: .4byte gUnknown_3005E10
-_080FE748: .4byte gUnknown_3007450
+_080FE748: .4byte gRfuSlotStatusNI
thumb_func_end sub_80FE6F0
thumb_func_start sub_80FE74C
@@ -2585,7 +2585,7 @@ sub_80FE778: @ 80FE778
push {r5-r7}
movs r6, 0
movs r5, 0
- ldr r1, _080FE7E4 @ =gUnknown_3007460
+ ldr r1, _080FE7E4 @ =gRfuLinkStatus
ldr r0, [r1]
ldrb r0, [r0, 0x8]
cmp r6, r0
@@ -2638,7 +2638,7 @@ _080FE7D4:
pop {r1}
bx r1
.align 2, 0
-_080FE7E4: .4byte gUnknown_3007460
+_080FE7E4: .4byte gRfuLinkStatus
_080FE7E8: .4byte gUnknown_3005E10
_080FE7EC: .4byte 0x0000ffff
thumb_func_end sub_80FE778
@@ -2690,14 +2690,14 @@ sub_80FE83C: @ 80FE83C
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080FE908 @ =gUnknown_3007460
+ ldr r0, _080FE908 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _080FE884
movs r4, 0
_080FE84E:
- ldr r1, _080FE90C @ =gUnknown_3007450
+ ldr r1, _080FE90C @ =gRfuSlotStatusNI
lsls r0, r4, 2
adds r0, r1
ldr r2, [r0]
@@ -2725,14 +2725,14 @@ _080FE87A:
cmp r4, 0x3
bls _080FE84E
_080FE884:
- ldr r0, _080FE908 @ =gUnknown_3007460
+ ldr r0, _080FE908 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x5]
cmp r0, 0
beq _080FE8C2
movs r4, 0
_080FE890:
- ldr r1, _080FE90C @ =gUnknown_3007450
+ ldr r1, _080FE90C @ =gRfuSlotStatusNI
lsls r0, r4, 2
adds r0, r1
ldr r2, [r0]
@@ -2758,7 +2758,7 @@ _080FE8B8:
cmp r4, 0x3
bls _080FE890
_080FE8C2:
- ldr r0, _080FE908 @ =gUnknown_3007460
+ ldr r0, _080FE908 @ =gRfuLinkStatus
ldr r3, [r0]
ldrb r2, [r3, 0x6]
cmp r2, 0
@@ -2768,7 +2768,7 @@ _080FE8C2:
ands r0, r2
strb r0, [r3, 0x6]
movs r4, 0
- ldr r7, _080FE910 @ =gUnknown_3007440
+ ldr r7, _080FE910 @ =gRfuSlotStatusUNI
ldr r6, _080FE914 @ =0x00008024
_080FE8DA:
lsls r0, r4, 2
@@ -2796,9 +2796,9 @@ _080FE900:
pop {r0}
bx r0
.align 2, 0
-_080FE908: .4byte gUnknown_3007460
-_080FE90C: .4byte gUnknown_3007450
-_080FE910: .4byte gUnknown_3007440
+_080FE908: .4byte gRfuLinkStatus
+_080FE90C: .4byte gRfuSlotStatusNI
+_080FE910: .4byte gRfuSlotStatusUNI
_080FE914: .4byte 0x00008024
thumb_func_end sub_80FE83C
@@ -2814,14 +2814,14 @@ sub_80FE918: @ 80FE918
ldrh r0, [r0, 0x18]
cmp r0, 0
beq _080FE9F4
- ldr r0, _080FEA08 @ =gUnknown_3007460
+ ldr r0, _080FEA08 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _080FE9B8
movs r6, 0
_080FE938:
- ldr r3, _080FEA0C @ =gUnknown_3007450
+ ldr r3, _080FEA0C @ =gRfuSlotStatusNI
lsls r2, r6, 2
adds r0, r2, r3
ldr r0, [r0]
@@ -2889,14 +2889,14 @@ _080FE9AE:
cmp r6, 0x3
bls _080FE938
_080FE9B8:
- ldr r0, _080FEA08 @ =gUnknown_3007460
+ ldr r0, _080FEA08 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x5]
cmp r0, 0
beq _080FE9F4
movs r6, 0
_080FE9C4:
- ldr r1, _080FEA0C @ =gUnknown_3007450
+ ldr r1, _080FEA0C @ =gRfuSlotStatusNI
lsls r0, r6, 2
adds r0, r1
ldr r2, [r0]
@@ -2931,8 +2931,8 @@ _080FE9F4:
bx r0
.align 2, 0
_080FEA04: .4byte gUnknown_3005E10
-_080FEA08: .4byte gUnknown_3007460
-_080FEA0C: .4byte gUnknown_3007450
+_080FEA08: .4byte gRfuLinkStatus
+_080FEA0C: .4byte gRfuSlotStatusNI
thumb_func_end sub_80FE918
thumb_func_start sub_80FEA10
@@ -3002,7 +3002,7 @@ sub_80FEA78: @ 80FEA78
push {lr}
lsls r0, 16
lsrs r2, r0, 16
- ldr r0, _080FEA94 @ =gUnknown_3007460
+ ldr r0, _080FEA94 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r1, [r0, 0x4]
ldrb r0, [r0, 0x5]
@@ -3014,7 +3014,7 @@ sub_80FEA78: @ 80FEA78
movs r0, 0
b _080FEAAC
.align 2, 0
-_080FEA94: .4byte gUnknown_3007460
+_080FEA94: .4byte gRfuLinkStatus
_080FEA98: .4byte gUnknown_3005E10
_080FEA9C:
ldr r1, _080FEAB0 @ =gUnknown_3005E10
diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s
index f37313210..10d4fd03d 100644
--- a/asm/link_rfu_2.s
+++ b/asm/link_rfu_2.s
@@ -132,12 +132,12 @@ _080F86F0: .4byte 0x04000208
thumb_func_start sub_80F86F4
sub_80F86F4: @ 80F86F4
push {r4,lr}
- ldr r0, _080F8728 @ =gUnknown_3001190
+ ldr r0, _080F8728 @ =gRfuAPIBuffer
ldr r1, _080F872C @ =0x00000e64
ldr r4, _080F8730 @ =gIntrTable + 0x4
adds r2, r4, 0
movs r3, 0x1
- bl sub_81E05B0
+ bl rfu_initializeAPI
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
@@ -155,7 +155,7 @@ _080F8722:
pop {r0}
bx r0
.align 2, 0
-_080F8728: .4byte gUnknown_3001190
+_080F8728: .4byte gRfuAPIBuffer
_080F872C: .4byte 0x00000e64
_080F8730: .4byte gIntrTable + 0x4
_080F8734: .4byte gLinkType
@@ -871,7 +871,7 @@ _080F8D2A:
bge _080F8D2A
bl rfu_REQ_recvData
bl rfu_waitREQComplete
- ldr r1, _080F8D94 @ =gUnknown_3007440
+ ldr r1, _080F8D94 @ =gRfuSlotStatusUNI
ldr r3, _080F8D90 @ =gUnknown_3005450
ldr r0, _080F8D98 @ =0x000008f6
adds r4, r3, r0
@@ -911,7 +911,7 @@ _080F8D84:
bx r0
.align 2, 0
_080F8D90: .4byte gUnknown_3005450
-_080F8D94: .4byte gUnknown_3007440
+_080F8D94: .4byte gRfuSlotStatusUNI
_080F8D98: .4byte 0x000008f6
_080F8D9C: .4byte 0x00000988
_080F8DA0: .4byte 0x000008f7
@@ -1074,7 +1074,7 @@ sub_80F8ECC: @ 80F8ECC
ldrh r0, [r4, 0x4]
cmp r0, 0x7
bne _080F8F08
- ldr r0, _080F8F00 @ =gUnknown_3007460
+ ldr r0, _080F8F00 @ =gRfuLinkStatus
ldr r1, [r0]
ldr r2, _080F8F04 @ =0x000008f5
adds r0, r4, r2
@@ -1093,7 +1093,7 @@ sub_80F8ECC: @ 80F8ECC
b _080F8F0A
.align 2, 0
_080F8EFC: .4byte gUnknown_3005450
-_080F8F00: .4byte gUnknown_3007460
+_080F8F00: .4byte gRfuLinkStatus
_080F8F04: .4byte 0x000008f5
_080F8F08:
movs r0, 0
@@ -1363,7 +1363,7 @@ _080F90D8: .4byte 0x000008f2
thumb_func_start IsRfuRecvQueueEmpty
IsRfuRecvQueueEmpty: @ 80F90DC
push {r4,lr}
- ldr r0, _080F90EC @ =gUnknown_3007460
+ ldr r0, _080F90EC @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x6]
cmp r0, 0
@@ -1372,7 +1372,7 @@ _080F90E8:
movs r0, 0
b _080F9110
.align 2, 0
-_080F90EC: .4byte gUnknown_3007460
+_080F90EC: .4byte gRfuLinkStatus
_080F90F0:
movs r3, 0
ldr r4, _080F9118 @ =gRecvCmds
@@ -1422,7 +1422,7 @@ _080F913C:
strb r0, [r1]
ldr r0, _080F919C @ =0x0000099a
adds r1, r6, r0
- ldr r0, _080F91A0 @ =gUnknown_3007460
+ ldr r0, _080F91A0 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r1, [r1]
ldrb r0, [r0, 0x2]
@@ -1460,7 +1460,7 @@ _080F913C:
.align 2, 0
_080F9198: .4byte 0x00000993
_080F919C: .4byte 0x0000099a
-_080F91A0: .4byte gUnknown_3007460
+_080F91A0: .4byte gRfuLinkStatus
_080F91A4: .4byte 0x00000994
_080F91A8: .4byte 0x0000099b
_080F91AC: .4byte 0x0000099c
@@ -1815,7 +1815,7 @@ _080F947E:
adds r0, r6, r1
ldrb r0, [r0]
adds r1, r0, 0
- ldr r0, _080F94A0 @ =gUnknown_3007460
+ ldr r0, _080F94A0 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x6]
cmp r0, 0
@@ -1826,7 +1826,7 @@ _080F947E:
.align 2, 0
_080F9498: .4byte 0x00000994
_080F949C: .4byte gUnknown_3005450
-_080F94A0: .4byte gUnknown_3007460
+_080F94A0: .4byte gRfuLinkStatus
_080F94A4:
movs r0, 0
b _080F94AA
@@ -1950,7 +1950,7 @@ _080F9538:
ldrb r0, [r0]
cmp r0, 0
beq _080F95E4
- ldr r0, _080F964C @ =gUnknown_3007460
+ ldr r0, _080F964C @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r1, [r0, 0x2]
ldrb r0, [r0, 0x3]
@@ -2042,7 +2042,7 @@ _080F963C: .4byte gRecvCmds
_080F9640: .4byte gUnknown_3005E10
_080F9644: .4byte gUnknown_3005450
_080F9648: .4byte 0x0000099c
-_080F964C: .4byte gUnknown_3007460
+_080F964C: .4byte gRfuLinkStatus
_080F9650: .4byte gReceivedRemoteLinkPlayers
_080F9654: .4byte 0x00000988
_080F9658: .4byte gSendCmd
@@ -2435,7 +2435,7 @@ _080F9902:
beq _080F9914
b _080F9C40
_080F9914:
- ldr r0, _080F9944 @ =gUnknown_3007460
+ ldr r0, _080F9944 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
mov r6, r8
@@ -2458,7 +2458,7 @@ _080F9924:
.align 2, 0
_080F993C: .4byte gUnknown_3005450
_080F9940: .4byte gReceivedRemoteLinkPlayers
-_080F9944: .4byte gUnknown_3007460
+_080F9944: .4byte gRfuLinkStatus
_080F9948: .4byte gRecvCmds + 2
_080F994C: .4byte gRecvCmds + 4
_080F9950: .4byte gUnknown_3005DD6
@@ -2688,7 +2688,7 @@ _080F9B00:
ldr r0, _080F9B54 @ =gRecvCmds + 2
adds r4, r5, r0
ldrh r1, [r4]
- ldr r0, _080F9B58 @ =gUnknown_3007460
+ ldr r0, _080F9B58 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0, 0x2]
ands r1, r0
@@ -2715,7 +2715,7 @@ _080F9B38:
_080F9B4C: .4byte gUnknown_3005450
_080F9B50: .4byte gReceivedRemoteLinkPlayers
_080F9B54: .4byte gRecvCmds + 2
-_080F9B58: .4byte gUnknown_3007460
+_080F9B58: .4byte gRfuLinkStatus
_080F9B5C: .4byte gRecvCmds + 4
_080F9B60: .4byte 0x0000099c
_080F9B64: .4byte gRecvCmds
@@ -3502,7 +3502,7 @@ _080FA13C: .4byte gUnknown_3005450
thumb_func_start sub_80FA140
sub_80FA140: @ 80FA140
push {lr}
- ldr r0, _080FA15C @ =gUnknown_3007460
+ ldr r0, _080FA15C @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r1, [r0, 0x2]
ldrb r0, [r0, 0x3]
@@ -3513,7 +3513,7 @@ sub_80FA140: @ 80FA140
pop {r0}
bx r0
.align 2, 0
-_080FA15C: .4byte gUnknown_3007460
+_080FA15C: .4byte gRfuLinkStatus
thumb_func_end sub_80FA140
thumb_func_start sub_80FA160
@@ -3552,7 +3552,7 @@ sub_80FA190: @ 80FA190
adds r1, r2, r0
movs r0, 0x1
strb r0, [r1]
- ldr r0, _080FA1BC @ =gUnknown_3007460
+ ldr r0, _080FA1BC @ =gRfuLinkStatus
ldr r1, [r0]
ldrb r0, [r1, 0x2]
ldrb r1, [r1, 0x3]
@@ -3565,7 +3565,7 @@ sub_80FA190: @ 80FA190
.align 2, 0
_080FA1B4: .4byte gUnknown_3005450
_080FA1B8: .4byte 0x0000099c
-_080FA1BC: .4byte gUnknown_3007460
+_080FA1BC: .4byte gRfuLinkStatus
_080FA1C0: .4byte 0x0000099b
thumb_func_end sub_80FA190
@@ -4065,7 +4065,7 @@ _080FA53A:
lsrs r0, 24
cmp r0, 0x1
bls _080FA5C2
- ldr r1, _080FA5A0 @ =gUnknown_3007450
+ ldr r1, _080FA5A0 @ =gRfuSlotStatusNI
lsls r0, r5, 2
adds r0, r1
ldr r0, [r0]
@@ -4103,7 +4103,7 @@ _080FA55E:
_080FA594: .4byte gUnknown_3005450
_080FA598: .4byte 0x000008f6
_080FA59C: .4byte 0x00000989
-_080FA5A0: .4byte gUnknown_3007450
+_080FA5A0: .4byte gRfuSlotStatusNI
_080FA5A4: .4byte 0x0000098d
_080FA5A8:
mov r2, r8
@@ -4300,7 +4300,7 @@ sub_80FA6FC: @ 80FA6FC
movs r0, 0x2
b _080FA732
_080FA718:
- ldr r1, _080FA72C @ =gUnknown_3007450
+ ldr r1, _080FA72C @ =gRfuSlotStatusNI
lsls r0, 2
adds r0, r1
ldr r0, [r0]
@@ -4310,7 +4310,7 @@ _080FA718:
movs r0, 0
b _080FA732
.align 2, 0
-_080FA72C: .4byte gUnknown_3007450
+_080FA72C: .4byte gRfuSlotStatusNI
_080FA730:
movs r0, 0x1
_080FA732:
@@ -4327,7 +4327,7 @@ sub_80FA738: @ 80FA738
ldr r1, _080FA780 @ =0x0000098d
adds r5, r0, r1
_080FA746:
- ldr r1, _080FA784 @ =gUnknown_3007450
+ ldr r1, _080FA784 @ =gRfuSlotStatusNI
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
@@ -4358,7 +4358,7 @@ _080FA770:
.align 2, 0
_080FA77C: .4byte gUnknown_3005450
_080FA780: .4byte 0x0000098d
-_080FA784: .4byte gUnknown_3007450
+_080FA784: .4byte gRfuSlotStatusNI
thumb_func_end sub_80FA738
thumb_func_start sub_80FA788
@@ -4371,7 +4371,7 @@ sub_80FA788: @ 80FA788
ldrb r0, [r0]
cmp r0, 0x8
bne _080FA7C2
- ldr r2, _080FA808 @ =gUnknown_3007450
+ ldr r2, _080FA808 @ =gRfuSlotStatusNI
ldr r0, _080FA80C @ =0x000008f6
adds r1, r0
ldrb r0, [r1]
@@ -4393,7 +4393,7 @@ _080FA7BA:
movs r0, 0x4
bl rfu_clearSlot
_080FA7C2:
- ldr r2, _080FA808 @ =gUnknown_3007450
+ ldr r2, _080FA808 @ =gRfuSlotStatusNI
ldr r5, _080FA800 @ =gUnknown_3005450
ldr r0, _080FA80C @ =0x000008f6
adds r1, r5, r0
@@ -4425,7 +4425,7 @@ _080FA7E6:
.align 2, 0
_080FA800: .4byte gUnknown_3005450
_080FA804: .4byte 0x0000093d
-_080FA808: .4byte gUnknown_3007450
+_080FA808: .4byte gRfuSlotStatusNI
_080FA80C: .4byte 0x000008f6
_080FA810: .4byte 0x0000093e
_080FA814:
@@ -5772,7 +5772,7 @@ _080FB21E:
ands r0, r1
cmp r0, 0
beq _080FB286
- ldr r0, _080FB274 @ =gUnknown_3007460
+ ldr r0, _080FB274 @ =gRfuLinkStatus
lsls r1, r5, 5
adds r1, 0x14
ldr r0, [r0]
@@ -5803,7 +5803,7 @@ _080FB21E:
_080FB268: .4byte gUnknown_3005E10
_080FB26C: .4byte gUnknown_3005450
_080FB270: .4byte 0x0000098d
-_080FB274: .4byte gUnknown_3007460
+_080FB274: .4byte gRfuLinkStatus
_080FB278: .4byte 0x00000989
_080FB27C:
mov r0, r8
@@ -6216,7 +6216,7 @@ sub_80FB5A0: @ 80FB5A0
movs r3, 0
movs r2, 0
movs r4, 0x1
- ldr r6, _080FB5E8 @ =gUnknown_3007460
+ ldr r6, _080FB5E8 @ =gRfuLinkStatus
movs r7, 0x7F
_080FB5AE:
adds r0, r5, 0
@@ -6249,7 +6249,7 @@ _080FB5D4:
pop {r1}
bx r1
.align 2, 0
-_080FB5E8: .4byte gUnknown_3007460
+_080FB5E8: .4byte gRfuLinkStatus
thumb_func_end sub_80FB5A0
thumb_func_start sub_80FB5EC
@@ -6601,7 +6601,7 @@ _080FB894:
adds r1, 0xF0
movs r0, 0x3
strb r0, [r1]
- ldr r0, _080FB8B8 @ =gUnknown_3007460
+ ldr r0, _080FB8B8 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0
@@ -6615,7 +6615,7 @@ _080FB8AA:
b _080FB9C0
.align 2, 0
_080FB8B4: .4byte gUnknown_3005450
-_080FB8B8: .4byte gUnknown_3007460
+_080FB8B8: .4byte gRfuLinkStatus
_080FB8BC: .4byte 0x000008f4
_080FB8C0:
ldr r0, _080FB900 @ =gUnknown_3005450
@@ -6674,7 +6674,7 @@ _080FB916:
movs r0, 0
bl sub_80FD760
_080FB934:
- ldr r0, _080FB96C @ =gUnknown_3007460
+ ldr r0, _080FB96C @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0xFF
@@ -6700,7 +6700,7 @@ _080FB95A:
.align 2, 0
_080FB964: .4byte 0x0000099c
_080FB968: .4byte gReceivedRemoteLinkPlayers
-_080FB96C: .4byte gUnknown_3007460
+_080FB96C: .4byte gRfuLinkStatus
_080FB970: .4byte gUnknown_3005E10
_080FB974: .4byte sub_80F8B34
_080FB978: .4byte gUnknown_3005450
@@ -7108,7 +7108,7 @@ sub_80FBC70: @ 80FBC70
movs r0, 0xFF
mov r9, r0
movs r7, 0
- ldr r1, _080FBCF4 @ =gUnknown_3007460
+ ldr r1, _080FBCF4 @ =gRfuLinkStatus
mov r8, r1
_080FBC8E:
lsls r4, r7, 5
@@ -7162,7 +7162,7 @@ _080FBCE2:
pop {r1}
bx r1
.align 2, 0
-_080FBCF4: .4byte gUnknown_3007460
+_080FBCF4: .4byte gRfuLinkStatus
thumb_func_end sub_80FBC70
thumb_func_start sub_80FBCF8
@@ -7391,7 +7391,7 @@ sub_80FBE80: @ 80FBE80
lsrs r2, r0, 24
cmp r2, 0xFF
beq _080FBF18
- ldr r0, _080FBEDC @ =gUnknown_3007460
+ ldr r0, _080FBEDC @ =gRfuLinkStatus
ldr r0, [r0]
lsls r1, r2, 5
adds r0, r1
@@ -7408,7 +7408,7 @@ sub_80FBE80: @ 80FBE80
b _080FBF10
.align 2, 0
_080FBED8: .4byte gTasks+0x8
-_080FBEDC: .4byte gUnknown_3007460
+_080FBEDC: .4byte gRfuLinkStatus
_080FBEE0: .4byte gUnknown_3005450
_080FBEE4: .4byte 0x000008f5
_080FBEE8:
@@ -7638,7 +7638,7 @@ _080FC070:
beq _080FC108
movs r1, 0xA
ldrsh r0, [r4, r1]
- ldr r7, _080FC0F4 @ =gUnknown_3007460
+ ldr r7, _080FC0F4 @ =gRfuLinkStatus
lsls r4, r2, 5
adds r2, r4, 0
adds r2, 0x14
@@ -7670,7 +7670,7 @@ _080FC0E4: .4byte gTasks
_080FC0E8: .4byte 0x00000985
_080FC0EC: .4byte gUnknown_3005E10
_080FC0F0: .4byte 0x00000119
-_080FC0F4: .4byte gUnknown_3007460
+_080FC0F4: .4byte gRfuLinkStatus
_080FC0F8:
movs r1, 0xE0
lsls r1, 7
@@ -7845,7 +7845,7 @@ sub_80FC228: @ 80FC228
movs r2, 0x13
movs r3, 0x2
bl nullsub_88
- ldr r4, _080FC2F8 @ =gUnknown_3007460
+ ldr r4, _080FC2F8 @ =gRfuLinkStatus
ldr r0, [r4]
ldrb r0, [r0, 0x2]
movs r1, 0x14
@@ -7934,7 +7934,7 @@ _080FC2CE:
bl nullsub_87
b _080FC436
.align 2, 0
-_080FC2F8: .4byte gUnknown_3007460
+_080FC2F8: .4byte gRfuLinkStatus
_080FC2FC: .4byte gUnknown_3005450
_080FC300: .4byte gUnknown_843EE64
_080FC304:
@@ -7969,7 +7969,7 @@ _080FC318:
adds r6, 0x1
cmp r6, 0x3
ble _080FC318
- ldr r5, _080FC394 @ =gUnknown_3007460
+ ldr r5, _080FC394 @ =gRfuLinkStatus
ldr r1, [r5]
ldr r4, _080FC398 @ =gUnknown_3005450
ldr r0, _080FC39C @ =0x000008f6
@@ -8004,12 +8004,12 @@ _080FC318:
.align 2, 0
_080FC38C: .4byte gUnknown_843EE47
_080FC390: .4byte gUnknown_843EE57
-_080FC394: .4byte gUnknown_3007460
+_080FC394: .4byte gRfuLinkStatus
_080FC398: .4byte gUnknown_3005450
_080FC39C: .4byte 0x000008f6
_080FC3A0:
movs r6, 0
- ldr r1, _080FC440 @ =gUnknown_3007460
+ ldr r1, _080FC440 @ =gRfuLinkStatus
ldr r0, [r1]
ldrb r0, [r0, 0x8]
cmp r6, r0
@@ -8088,7 +8088,7 @@ _080FC436:
pop {r0}
bx r0
.align 2, 0
-_080FC440: .4byte gUnknown_3007460
+_080FC440: .4byte gRfuLinkStatus
_080FC444: .4byte gUnknown_843EE47
_080FC448: .4byte gUnknown_843EE57
thumb_func_end sub_80FC228
@@ -9032,7 +9032,7 @@ sub_80FCADC: @ 80FCADC
lsls r0, 24
lsrs r5, r0, 24
movs r6, 0
- ldr r0, _080FCB04 @ =gUnknown_3007460
+ ldr r0, _080FCB04 @ =gRfuLinkStatus
ldr r4, [r0]
ldrb r2, [r4, 0x2]
ldrb r1, [r4]
@@ -9048,7 +9048,7 @@ sub_80FCADC: @ 80FCADC
ldrb r0, [r4, 0xA]
b _080FCB4C
.align 2, 0
-_080FCB04: .4byte gUnknown_3007460
+_080FCB04: .4byte gRfuLinkStatus
_080FCB08:
adds r0, r6, 0x1
lsls r0, 24
@@ -9234,7 +9234,7 @@ sub_80FCC3C: @ 80FCC3C
bne _080FCC98
movs r0, 0x1
mov r9, r0
- ldr r6, _080FCC94 @ =gUnknown_3007460
+ ldr r6, _080FCC94 @ =gRfuLinkStatus
ldr r0, [r6]
lsls r4, r5, 5
adds r0, r4
@@ -9261,11 +9261,11 @@ _080FCC78:
b _080FCCE4
.align 2, 0
_080FCC90: .4byte gUnknown_3005E10
-_080FCC94: .4byte gUnknown_3007460
+_080FCC94: .4byte gRfuLinkStatus
_080FCC98:
movs r0, 0
mov r9, r0
- ldr r6, _080FCCCC @ =gUnknown_3007460
+ ldr r6, _080FCCCC @ =gRfuLinkStatus
ldr r0, [r6]
lsls r4, r5, 5
adds r0, r4
@@ -9288,7 +9288,7 @@ _080FCCB0:
bl memcpy
b _080FCCE4
.align 2, 0
-_080FCCCC: .4byte gUnknown_3007460
+_080FCCCC: .4byte gRfuLinkStatus
_080FCCD0:
adds r0, r7, 0
movs r1, 0
@@ -9315,7 +9315,7 @@ sub_80FCCF4: @ 80FCCF4
adds r5, r1, 0
lsls r2, 24
movs r7, 0
- ldr r6, _080FCD2C @ =gUnknown_3007460
+ ldr r6, _080FCD2C @ =gRfuLinkStatus
ldr r0, [r6]
lsrs r4, r2, 19
adds r2, r0, r4
@@ -9337,7 +9337,7 @@ sub_80FCCF4: @ 80FCCF4
movs r7, 0x1
b _080FCD48
.align 2, 0
-_080FCD2C: .4byte gUnknown_3007460
+_080FCD2C: .4byte gRfuLinkStatus
_080FCD30: .4byte 0x00007f7d
_080FCD34:
adds r0, r3, 0
@@ -9388,7 +9388,7 @@ CreateWirelessStatusIndicatorSprite: @ 80FCD74
movs r3, 0xE7
movs r2, 0x8
_080FCD8A:
- ldr r0, _080FCDCC @ =gUnknown_3007460
+ ldr r0, _080FCDCC @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0x1
@@ -9420,7 +9420,7 @@ _080FCD8A:
strb r5, [r0]
b _080FCE2A
.align 2, 0
-_080FCDCC: .4byte gUnknown_3007460
+_080FCDCC: .4byte gRfuLinkStatus
_080FCDD0: .4byte gUnknown_843F284
_080FCDD4: .4byte gSprites
_080FCDD8: .4byte 0x00001234
@@ -9551,7 +9551,7 @@ _080FCEE0: .4byte gUnknown_203ACE4
thumb_func_start sub_80FCEE4
sub_80FCEE4: @ 80FCEE4
push {r4,lr}
- ldr r1, _080FCF04 @ =gUnknown_3007460
+ ldr r1, _080FCF04 @ =gRfuLinkStatus
ldr r0, [r1]
ldrb r2, [r0, 0x2]
movs r3, 0
@@ -9567,7 +9567,7 @@ _080FCEF0:
ldrb r0, [r0]
b _080FCF16
.align 2, 0
-_080FCF04: .4byte gUnknown_3007460
+_080FCF04: .4byte gRfuLinkStatus
_080FCF08:
lsrs r2, 1
adds r0, r3, 0x1
@@ -9626,7 +9626,7 @@ _080FCF5C:
adds r6, r2, 0
movs r5, 0xFF
movs r4, 0
- ldr r0, _080FCF84 @ =gUnknown_3007460
+ ldr r0, _080FCF84 @ =gRfuLinkStatus
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0x1
@@ -9641,7 +9641,7 @@ _080FCF5C:
_080FCF78: .4byte gUnknown_203ACE4
_080FCF7C: .4byte gSprites
_080FCF80: .4byte 0x00001234
-_080FCF84: .4byte gUnknown_3007460
+_080FCF84: .4byte gRfuLinkStatus
_080FCF88:
adds r0, r4, 0x1
lsls r0, 24
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index ef64c08dd..1bd5420fa 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -10493,7 +10493,7 @@ _0811AFF8:
_0811AFFA:
cmp r4, 0x3
bgt _0811B030
- ldr r0, _0811B044 @ =gUnknown_3007460
+ ldr r0, _0811B044 @ =gRfuLinkStatus
ldr r0, [r0]
lsls r1, r4, 5
adds r0, r1
@@ -10526,7 +10526,7 @@ _0811B030:
bl StringCopy
b _0811B080
.align 2, 0
-_0811B044: .4byte gUnknown_3007460
+_0811B044: .4byte gRfuLinkStatus
_0811B048: .4byte gSpeciesNames
_0811B04C: .4byte gUnknown_8457DB8
_0811B050:
diff --git a/asm/pc_screen_effect.s b/asm/pc_screen_effect.s
deleted file mode 100644
index 61c47a719..000000000
--- a/asm/pc_screen_effect.s
+++ /dev/null
@@ -1,477 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80A0A48
-sub_80A0A48: @ 80A0A48
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r3, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _080A0A6C @ =sub_80A0B0C
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80A0AC0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0A6C: .4byte sub_80A0B0C
- thumb_func_end sub_80A0A48
-
- thumb_func_start sub_80A0A70
-sub_80A0A70: @ 80A0A70
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r3, r2, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r3, 24
- lsrs r3, 24
- ldr r0, _080A0A94 @ =sub_80A0C78
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_80A0AC0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0A94: .4byte sub_80A0C78
- thumb_func_end sub_80A0A70
-
- thumb_func_start sub_80A0A98
-sub_80A0A98: @ 80A0A98
- push {lr}
- ldr r0, _080A0AA8 @ =sub_80A0B0C
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080A0AA8: .4byte sub_80A0B0C
- thumb_func_end sub_80A0A98
-
- thumb_func_start sub_80A0AAC
-sub_80A0AAC: @ 80A0AAC
- push {lr}
- ldr r0, _080A0ABC @ =sub_80A0C78
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080A0ABC: .4byte sub_80A0C78
- thumb_func_end sub_80A0AAC
-
- thumb_func_start sub_80A0AC0
-sub_80A0AC0: @ 80A0AC0
- push {r4,r5,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- adds r5, r4, 0
- lsls r3, 24
- lsrs r3, 24
- adds r1, r3, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r1, _080A0B08 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0
- strh r0, [r1, 0x8]
- movs r0, 0x10
- cmp r4, 0
- beq _080A0AEE
- adds r0, r4, 0
-_080A0AEE:
- strh r0, [r1, 0xA]
- movs r0, 0x14
- cmp r5, 0
- beq _080A0AF8
- adds r0, r5, 0
-_080A0AF8:
- strh r0, [r1, 0xC]
- ldr r1, [r1]
- adds r0, r2, 0
- bl _call_via_r1
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0B08: .4byte gTasks
- thumb_func_end sub_80A0AC0
-
- thumb_func_start sub_80A0B0C
-sub_80A0B0C: @ 80A0B0C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A0B30 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080A0B8C
- cmp r0, 0x1
- bgt _080A0B34
- cmp r0, 0
- beq _080A0B3E
- b _080A0C5A
- .align 2, 0
-_080A0B30: .4byte gTasks
-_080A0B34:
- cmp r0, 0x2
- beq _080A0BAE
- cmp r0, 0x3
- beq _080A0C10
- b _080A0C5A
-_080A0B3E:
- movs r0, 0x78
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- movs r0, 0x50
- strh r0, [r4, 0x12]
- movs r0, 0x51
- strh r0, [r4, 0x14]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- b _080A0C6A
-_080A0B8C:
- movs r0, 0x50
- bl GetGpuReg
- strh r0, [r4, 0x16]
- movs r0, 0x54
- bl GetGpuReg
- strh r0, [r4, 0x18]
- movs r0, 0x50
- movs r1, 0xBF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
- b _080A0C6A
-_080A0BAE:
- ldrh r0, [r4, 0xE]
- ldrh r1, [r4, 0xA]
- subs r0, r1
- movs r5, 0
- strh r0, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- adds r1, r2
- strh r1, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- ble _080A0BCC
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _080A0BF2
-_080A0BCC:
- strh r5, [r4, 0xE]
- movs r0, 0xF0
- strh r0, [r4, 0x10]
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldrh r1, [r4, 0x16]
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- movs r2, 0
- bl BlendPalettes
- ldr r0, _080A0C0C @ =gPlttBufferFaded
- strh r5, [r0]
-_080A0BF2:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- b _080A0C54
- .align 2, 0
-_080A0C0C: .4byte gPlttBufferFaded
-_080A0C10:
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0xC]
- subs r0, r1
- strh r0, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- adds r1, r2
- strh r1, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- ble _080A0C2C
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _080A0C3E
-_080A0C2C:
- movs r0, 0
- strh r0, [r4, 0x12]
- movs r0, 0xA0
- strh r0, [r4, 0x14]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
-_080A0C3E:
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r1, 0x12
- ldrsh r0, [r4, r1]
-_080A0C54:
- cmp r0, 0
- bne _080A0C70
- b _080A0C6A
-_080A0C5A:
- ldrh r1, [r4, 0x16]
- movs r0, 0x50
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyTask
- b _080A0C70
-_080A0C6A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080A0C70:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0B0C
-
- thumb_func_start sub_80A0C78
-sub_80A0C78: @ 80A0C78
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080A0C9C @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080A0CB4
- cmp r1, 0x1
- bgt _080A0CA0
- cmp r1, 0
- beq _080A0CAA
- b _080A0DA8
- .align 2, 0
-_080A0C9C: .4byte gTasks
-_080A0CA0:
- cmp r1, 0x2
- beq _080A0D02
- cmp r1, 0x3
- beq _080A0D54
- b _080A0DA8
-_080A0CAA:
- ldr r0, _080A0CB0 @ =gPlttBufferFaded
- strh r1, [r0]
- b _080A0DCA
- .align 2, 0
-_080A0CB0: .4byte gPlttBufferFaded
-_080A0CB4:
- movs r1, 0
- strh r1, [r4, 0xE]
- movs r0, 0xF0
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x12]
- movs r0, 0xA0
- strh r0, [r4, 0x14]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- b _080A0DCA
-_080A0D02:
- ldrh r0, [r4, 0xC]
- ldrh r2, [r4, 0x12]
- adds r1, r0, r2
- strh r1, [r4, 0x12]
- ldrh r2, [r4, 0x14]
- subs r0, r2, r0
- strh r0, [r4, 0x14]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x4F
- bgt _080A0D20
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x51
- bgt _080A0D38
-_080A0D20:
- movs r0, 0x50
- strh r0, [r4, 0x12]
- movs r0, 0x51
- strh r0, [r4, 0x14]
- movs r0, 0x50
- movs r1, 0xBF
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x10
- bl SetGpuReg
-_080A0D38:
- ldrh r1, [r4, 0x12]
- lsls r1, 8
- ldrh r0, [r4, 0x14]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- bne _080A0DD0
- b _080A0DCA
-_080A0D54:
- ldrh r0, [r4, 0xA]
- ldrh r2, [r4, 0xE]
- adds r1, r0, r2
- strh r1, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- subs r0, r2, r0
- strh r0, [r4, 0x10]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x77
- bgt _080A0D72
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- bgt _080A0D88
-_080A0D72:
- movs r0, 0x78
- strh r0, [r4, 0xE]
- strh r0, [r4, 0x10]
- subs r0, 0x79
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r1, _080A0DA4 @ =gPlttBufferFaded
- movs r0, 0
- strh r0, [r1]
-_080A0D88:
- ldrh r1, [r4, 0xE]
- lsls r1, 8
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x40
- bl SetGpuReg
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x78
- bne _080A0DD0
- b _080A0DCA
- .align 2, 0
-_080A0DA4: .4byte gPlttBufferFaded
-_080A0DA8:
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyTask
- b _080A0DD0
-_080A0DCA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080A0DD0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0C78
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 45eba1df8..d14d64ee4 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5755,7 +5755,7 @@ sub_8137578: @ 8137578
bl GetNature
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, _081375F0 @ =gNatureNames
+ ldr r1, _081375F0 @ =gNatureNamePointers
lsls r0, r6, 2
adds r0, r1
ldr r1, [r0]
@@ -5796,7 +5796,7 @@ _081375B2:
.align 2, 0
_081375E8: .4byte gUnknown_203B140
_081375EC: .4byte 0x00003290
-_081375F0: .4byte gNatureNames
+_081375F0: .4byte gNatureNamePointers
_081375F4:
ldr r0, [r7]
ldr r1, _08137614 @ =0x00003024
@@ -5952,7 +5952,7 @@ sub_8137724: @ 8137724
bl GetNature
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, _081377A8 @ =gNatureNames
+ ldr r1, _081377A8 @ =gNatureNamePointers
lsls r0, r6, 2
adds r0, r1
ldr r1, [r0]
@@ -5997,7 +5997,7 @@ _08137790:
.align 2, 0
_081377A0: .4byte gUnknown_203B140
_081377A4: .4byte 0x00003290
-_081377A8: .4byte gNatureNames
+_081377A8: .4byte gNatureNamePointers
_081377AC:
cmp r5, 0xFF
bne _081377D0
diff --git a/asm/region_map.s b/asm/region_map.s
deleted file mode 100644
index 662c65fa7..000000000
--- a/asm/region_map.s
+++ /dev/null
@@ -1,13825 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80BFE18
-sub_80BFE18: @ 80BFE18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- cmp r1, 0
- beq _080BFE92
- movs r0, 0x1F
- mov r10, r0
- mov r8, r1
-_080BFE38:
- ldrh r1, [r6]
- movs r0, 0x1F
- ands r0, r1
- lsls r1, 16
- lsrs r5, r1, 21
- mov r2, r10
- ands r5, r2
- lsrs r4, r1, 26
- ands r4, r2
- lsls r0, 8
- movs r1, 0x64
- bl __divsi3
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- asrs r7, r0, 8
- lsls r0, r5, 8
- movs r1, 0x64
- bl __divsi3
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- asrs r5, r0, 8
- lsls r0, r4, 8
- movs r1, 0x64
- bl __divsi3
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- asrs r4, r0, 8
- lsls r0, r4, 10
- lsls r1, r5, 5
- orrs r0, r1
- orrs r0, r7
- strh r0, [r6]
- adds r6, 0x2
- movs r2, 0x1
- negs r2, r2
- add r8, r2
- mov r0, r8
- cmp r0, 0
- bne _080BFE38
-_080BFE92:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BFE18
-
- thumb_func_start sub_80BFEA0
-sub_80BFEA0: @ 80BFEA0
- push {r4,lr}
- sub sp, 0x20
- ldr r4, _080BFED8 @ =gUnknown_83EF2DC + 0x40
- adds r0, r4, 0
- mov r1, sp
- movs r2, 0x10
- bl CpuSet
- mov r0, sp
- movs r1, 0x10
- movs r2, 0x5F
- bl sub_80BFE18
- mov r0, sp
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- adds r4, 0x1E
- adds r0, r4, 0
- movs r1, 0x2F
- movs r2, 0x2
- bl LoadPalette
- add sp, 0x20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFED8: .4byte gUnknown_83EF2DC + 0x40
- thumb_func_end sub_80BFEA0
-
- thumb_func_start sub_80BFEDC
-sub_80BFEDC: @ 80BFEDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BFEFC @ =gUnknown_20399D4
- ldr r0, _080BFF00 @ =0x000047c0
- bl AllocZeroed
- adds r2, r0, 0
- str r2, [r4]
- cmp r2, 0
- bne _080BFF08
- ldr r0, _080BFF04 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080BFF38
- .align 2, 0
-_080BFEFC: .4byte gUnknown_20399D4
-_080BFF00: .4byte 0x000047c0
-_080BFF04: .4byte CB2_ReturnToField
-_080BFF08:
- ldr r1, _080BFF40 @ =gUnknown_2031DE0
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080BFF44 @ =0x00004796
- adds r0, r2, r1
- movs r1, 0
- strb r5, [r0]
- ldr r0, [r4]
- ldr r2, _080BFF48 @ =0x000047a0
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- bl sub_80BFFD0
- ldr r0, _080BFF4C @ =sub_80C0100
- bl SetMainCallback2
-_080BFF38:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFF40: .4byte gUnknown_2031DE0
-_080BFF44: .4byte 0x00004796
-_080BFF48: .4byte 0x000047a0
-_080BFF4C: .4byte sub_80C0100
- thumb_func_end sub_80BFEDC
-
- thumb_func_start sub_80BFF50
-sub_80BFF50: @ 80BFF50
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080BFF70 @ =gUnknown_20399D4
- ldr r0, _080BFF74 @ =0x000047c0
- bl AllocZeroed
- adds r2, r0, 0
- str r2, [r4]
- cmp r2, 0
- bne _080BFF7C
- ldr r0, _080BFF78 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080BFFB4
- .align 2, 0
-_080BFF70: .4byte gUnknown_20399D4
-_080BFF74: .4byte 0x000047c0
-_080BFF78: .4byte CB2_ReturnToField
-_080BFF7C:
- ldr r1, _080BFFBC @ =gUnknown_2031DE0
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, _080BFFC0 @ =0x00004796
- adds r0, r2, r1
- movs r1, 0
- strb r5, [r0]
- ldr r0, [r4]
- ldr r2, _080BFFC4 @ =0x000047a0
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r2, 0x4
- adds r0, r2
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, _080BFFC8 @ =0x000047bc
- adds r0, r1
- str r6, [r0]
- bl sub_80BFFD0
- ldr r0, _080BFFCC @ =sub_80C0100
- bl SetMainCallback2
-_080BFFB4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFFBC: .4byte gUnknown_2031DE0
-_080BFFC0: .4byte 0x00004796
-_080BFFC4: .4byte 0x000047a0
-_080BFFC8: .4byte 0x000047bc
-_080BFFCC: .4byte sub_80C0100
- thumb_func_end sub_80BFF50
-
- thumb_func_start sub_80BFFD0
-sub_80BFFD0: @ 80BFFD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, _080C0000 @ =gUnknown_20399D4
- ldr r2, [r1]
- ldr r3, _080C0004 @ =0x00004796
- adds r0, r2, r3
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0
- blt _080BFFF2
- cmp r0, 0x1
- ble _080BFFF2
- cmp r0, 0x2
- beq _080C0010
-_080BFFF2:
- mov r4, r8
- ldr r0, [r4]
- ldr r1, _080C0008 @ =0x000047b8
- adds r0, r1
- ldr r1, _080C000C @ =sub_80C04E4
- str r1, [r0]
- b _080C0018
- .align 2, 0
-_080C0000: .4byte gUnknown_20399D4
-_080C0004: .4byte 0x00004796
-_080C0008: .4byte 0x000047b8
-_080C000C: .4byte sub_80C04E4
-_080C0010:
- ldr r3, _080C009C @ =0x000047b8
- adds r1, r2, r3
- ldr r0, _080C00A0 @ =sub_80C4F08
- str r0, [r1]
-_080C0018:
- movs r3, 0
- ldr r6, _080C00A4 @ =gUnknown_20399D4
- ldr r5, _080C00A8 @ =0x00004797
- ldr r4, _080C00AC @ =gUnknown_83F1B00
- ldr r2, _080C00B0 @ =0x00004796
-_080C0022:
- ldr r0, [r6]
- adds r1, r0, r5
- adds r1, r3
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _080C0022
- ldr r0, _080C00B4 @ =0x00000845
- bl FlagGet
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080C0058
- ldr r0, _080C00A4 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r4, _080C00A8 @ =0x00004797
- adds r0, r4
- strb r1, [r0]
-_080C0058:
- movs r7, 0
- movs r1, 0
- ldr r2, _080C00B8 @ =gMapHeader
- ldrb r0, [r2, 0x14]
- ldr r3, _080C00A4 @ =gUnknown_20399D4
- mov r8, r3
- cmp r0, 0x8E
- bls _080C00D8
- ldr r4, _080C00BC @ =gUnknown_83F1AA4
- mov r12, r4
- mov r10, r12
- mov r9, r2
-_080C0070:
- movs r3, 0
- lsls r0, r1, 4
- subs r0, r1
- lsls r2, r0, 1
- mov r4, r10
- adds r0, r2, r4
- ldrb r0, [r0]
- adds r5, r1, 0x1
- cmp r0, 0xC5
- beq _080C00D0
- ldr r6, _080C00BC @ =gUnknown_83F1AA4
- mov r0, r9
- ldrb r1, [r0, 0x14]
- lsls r4, r5, 24
-_080C008C:
- adds r0, r3, r2
- adds r0, r6
- ldrb r0, [r0]
- cmp r1, r0
- bne _080C00C0
- lsrs r7, r4, 24
- b _080C00D0
- .align 2, 0
-_080C009C: .4byte 0x000047b8
-_080C00A0: .4byte sub_80C4F08
-_080C00A4: .4byte gUnknown_20399D4
-_080C00A8: .4byte 0x00004797
-_080C00AC: .4byte gUnknown_83F1B00
-_080C00B0: .4byte 0x00004796
-_080C00B4: .4byte 0x00000845
-_080C00B8: .4byte gMapHeader
-_080C00BC: .4byte gUnknown_83F1AA4
-_080C00C0:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r3, r2
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0xC5
- bne _080C008C
-_080C00D0:
- lsls r0, r5, 24
- lsrs r1, r0, 24
- cmp r7, 0
- beq _080C0070
-_080C00D8:
- mov r1, r8
- ldr r0, [r1]
- ldr r2, _080C00F8 @ =0x0000479b
- adds r0, r2
- strb r7, [r0]
- ldr r0, [r1]
- ldr r3, _080C00FC @ =0x0000479c
- adds r0, r3
- strb r7, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C00F8: .4byte 0x0000479b
-_080C00FC: .4byte 0x0000479c
- thumb_func_end sub_80BFFD0
-
- thumb_func_start sub_80C0100
-sub_80C0100: @ 80C0100
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _080C011C @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0120 @ =0x000047a4
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bhi _080C0202
- lsls r0, 2
- ldr r1, _080C0124 @ =_080C0128
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C011C: .4byte gUnknown_20399D4
-_080C0120: .4byte 0x000047a4
-_080C0124: .4byte _080C0128
- .align 2, 0
-_080C0128:
- .4byte _080C014C
- .4byte _080C0152
- .4byte _080C0158
- .4byte _080C015E
- .4byte _080C016A
- .4byte _080C0180
- .4byte _080C01D4
- .4byte _080C01E0
- .4byte _080C01EC
-_080C014C:
- bl sub_80C08E0
- b _080C021A
-_080C0152:
- bl sub_80C0904
- b _080C021A
-_080C0158:
- bl sub_80C0A6C
- b _080C021A
-_080C015E:
- bl sub_80C0238
- lsls r0, 24
- cmp r0, 0
- beq _080C0228
- b _080C021A
-_080C016A:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- b _080C01BA
-_080C0180:
- ldr r4, _080C01C4 @ =gUnknown_20399D4
- ldr r1, [r4]
- ldr r2, _080C01C8 @ =0x0000479b
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r2, r0, 2
- adds r2, r0
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 4
- adds r0, 0x26
- adds r1, r0
- movs r0, 0
- bl sub_80C0CC8
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- ldr r2, _080C01CC @ =0x00004796
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C021A
- ldr r0, _080C01D0 @ =0x000012e6
- adds r1, r0
- movs r0, 0x1
- bl sub_80C0CC8
-_080C01BA:
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _080C021A
- .align 2, 0
-_080C01C4: .4byte gUnknown_20399D4
-_080C01C8: .4byte 0x0000479b
-_080C01CC: .4byte 0x00004796
-_080C01D0: .4byte 0x000012e6
-_080C01D4:
- bl sub_80C0B18
- movs r0, 0
- bl PutWindowTilemap
- b _080C021A
-_080C01E0:
- bl sub_80C0BB0
- movs r0, 0x1
- bl PutWindowTilemap
- b _080C021A
-_080C01EC:
- movs r0, 0x2
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C021A
- movs r0, 0x1
- bl sub_80C0A88
- b _080C021A
-_080C0202:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_80C03E8
- bl sub_80C08F4
-_080C021A:
- ldr r0, _080C0230 @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r2, _080C0234 @ =0x000047a4
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080C0228:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0230: .4byte gUnknown_20399D4
-_080C0234: .4byte 0x000047a4
- thumb_func_end sub_80C0100
-
- thumb_func_start sub_80C0238
-sub_80C0238: @ 80C0238
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080C0258 @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r2, _080C025C @ =0x000047a8
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _080C024C
- b _080C03B0
-_080C024C:
- lsls r0, 2
- ldr r1, _080C0260 @ =_080C0264
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C0258: .4byte gUnknown_20399D4
-_080C025C: .4byte 0x000047a8
-_080C0260: .4byte _080C0264
- .align 2, 0
-_080C0264:
- .4byte _080C0288
- .4byte _080C0298
- .4byte _080C02FC
- .4byte _080C0302
- .4byte _080C0340
- .4byte _080C034E
- .4byte _080C0364
- .4byte _080C037C
- .4byte _080C0394
-_080C0288:
- ldr r0, _080C0294 @ =gUnknown_83EF23C
- movs r1, 0xC0
- movs r2, 0x20
- bl LoadPalette
- b _080C03C8
- .align 2, 0
-_080C0294: .4byte gUnknown_83EF23C
-_080C0298:
- ldr r0, _080C02EC @ =gUnknown_83EF2DC
- movs r1, 0
- movs r2, 0xA0
- bl LoadPalette
- bl sub_80BFEA0
- ldr r0, _080C02F0 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C02F4 @ =0x00004796
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080C02B6
- b _080C03C8
-_080C02B6:
- ldr r4, _080C02F8 @ =gUnknown_83EF23C + 0x1E
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x20
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x40
- movs r2, 0x2
- bl LoadPalette
- b _080C03C8
- .align 2, 0
-_080C02EC: .4byte gUnknown_83EF2DC
-_080C02F0: .4byte gUnknown_20399D4
-_080C02F4: .4byte 0x00004796
-_080C02F8: .4byte gUnknown_83EF23C + 0x1E
-_080C02FC:
- bl ResetTempTileDataBuffers
- b _080C03C8
-_080C0302:
- ldr r1, _080C0330 @ =gUnknown_83EF61C
- movs r4, 0
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r0, _080C0334 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r2, _080C0338 @ =0x00004796
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C03C8
- ldr r1, _080C033C @ =gUnknown_83F1978
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- b _080C03C8
- .align 2, 0
-_080C0330: .4byte gUnknown_83EF61C
-_080C0334: .4byte gUnknown_20399D4
-_080C0338: .4byte 0x00004796
-_080C033C: .4byte gUnknown_83F1978
-_080C0340:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C03C8
- b _080C03D6
-_080C034E:
- ldr r0, _080C035C @ =gUnknown_83F089C
- ldr r1, _080C0360 @ =gUnknown_20399D4
- ldr r1, [r1]
- adds r1, 0x26
- bl LZ77UnCompWram
- b _080C03C8
- .align 2, 0
-_080C035C: .4byte gUnknown_83F089C
-_080C0360: .4byte gUnknown_20399D4
-_080C0364:
- ldr r0, _080C0370 @ =gUnknown_83F0AFC
- ldr r1, _080C0374 @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C0378 @ =0x000004d6
- b _080C039C
- .align 2, 0
-_080C0370: .4byte gUnknown_83F0AFC
-_080C0374: .4byte gUnknown_20399D4
-_080C0378: .4byte 0x000004d6
-_080C037C:
- ldr r0, _080C0388 @ =gUnknown_83F0C0C
- ldr r1, _080C038C @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C0390 @ =0x00000986
- b _080C039C
- .align 2, 0
-_080C0388: .4byte gUnknown_83F0C0C
-_080C038C: .4byte gUnknown_20399D4
-_080C0390: .4byte 0x00000986
-_080C0394:
- ldr r0, _080C03A4 @ =gUnknown_83F0CF0
- ldr r1, _080C03A8 @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C03AC @ =0x00000e36
-_080C039C:
- adds r1, r2
- bl LZ77UnCompWram
- b _080C03C8
- .align 2, 0
-_080C03A4: .4byte gUnknown_83F0CF0
-_080C03A8: .4byte gUnknown_20399D4
-_080C03AC: .4byte 0x00000e36
-_080C03B0:
- ldr r0, _080C03C0 @ =gUnknown_83F19A0
- ldr r2, _080C03C4 @ =0x000012e6
- adds r1, r2
- bl LZ77UnCompWram
- movs r0, 0x1
- b _080C03D8
- .align 2, 0
-_080C03C0: .4byte gUnknown_83F19A0
-_080C03C4: .4byte 0x000012e6
-_080C03C8:
- ldr r0, _080C03E0 @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r0, _080C03E4 @ =0x000047a8
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080C03D6:
- movs r0, 0
-_080C03D8:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080C03E0: .4byte gUnknown_20399D4
-_080C03E4: .4byte 0x000047a8
- thumb_func_end sub_80C0238
-
- thumb_func_start sub_80C03E8
-sub_80C03E8: @ 80C03E8
- push {lr}
- ldr r0, _080C0404 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0408 @ =0x000047b8
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- ldr r0, _080C040C @ =sub_80C08B4
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080C0404: .4byte gUnknown_20399D4
-_080C0408: .4byte 0x000047b8
-_080C040C: .4byte sub_80C08B4
- thumb_func_end sub_80C03E8
-
- thumb_func_start sub_80C0410
-sub_80C0410: @ 80C0410
- push {r4,r5,lr}
- bl sub_80C0E20
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- bl sub_80C3514
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- bl sub_80C3508
- adds r3, r0, 0
- lsls r3, 16
- asrs r3, 16
- adds r0, r5, 0
- movs r1, 0
- adds r2, r4, 0
- bl sub_80C4164
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x63
- beq _080C0446
- movs r0, 0x1
- b _080C0448
-_080C0446:
- movs r0, 0
-_080C0448:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80C0410
-
- thumb_func_start sub_80C0450
-sub_80C0450: @ 80C0450
- push {lr}
- bl sub_80C0410
- cmp r0, 0
- beq _080C04E0
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C0474
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- cmp r0, 0
- bne _080C048E
-_080C0474:
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C0494
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- cmp r0, 0
- beq _080C0494
-_080C048E:
- movs r0, 0x65
- bl PlaySE
-_080C0494:
- bl sub_80C3508
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x15
- bne _080C04C2
- bl sub_80C3514
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bne _080C04C2
- movs r0, 0
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C04C2
- movs r0, 0xE1
- bl PlaySE
- b _080C04E0
-_080C04C2:
- bl sub_80C3508
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x15
- bne _080C04E0
- bl sub_80C3514
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xD
- bne _080C04E0
- movs r0, 0xE1
- bl PlaySE
-_080C04E0:
- pop {r0}
- bx r0
- thumb_func_end sub_80C0450
-
- thumb_func_start sub_80C04E4
-sub_80C04E4: @ 80C04E4
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080C0508 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C050C @ =0x000047a0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bls _080C04FC
- b _080C07B0
-_080C04FC:
- lsls r0, 2
- ldr r1, _080C0510 @ =_080C0514
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C0508: .4byte gUnknown_20399D4
-_080C050C: .4byte 0x000047a0
-_080C0510: .4byte _080C0514
- .align 2, 0
-_080C0514:
- .4byte _080C052C
- .4byte _080C0560
- .4byte _080C05E0
- .4byte _080C0624
- .4byte _080C0760
- .4byte _080C0788
-_080C052C:
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080C0558 @ =gUnknown_20399D4
- ldr r1, [r4]
- ldr r2, _080C055C @ =0x000047b8
- adds r1, r2
- ldr r2, [r1]
- adds r1, r5, 0
- bl sub_80C4398
- movs r0, 0
- movs r1, 0
- bl sub_80C3008
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80C41D8
- ldr r1, [r4]
- b _080C079C
- .align 2, 0
-_080C0558: .4byte gUnknown_20399D4
-_080C055C: .4byte 0x000047b8
-_080C0560:
- ldr r0, _080C057C @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r2, _080C0580 @ =0x00004799
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080C0584
- adds r2, 0x1F
- adds r0, r1, r2
- ldr r1, [r0]
- adds r0, r5, 0
- bl sub_80C2208
- b _080C0798
- .align 2, 0
-_080C057C: .4byte gUnknown_20399D4
-_080C0580: .4byte 0x00004799
-_080C0584:
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- ldr r0, _080C05D8 @ =gUnknown_8418EB5
- bl sub_80C4E18
- ldr r0, _080C05DC @ =gUnknown_8418E8B
- bl sub_80C4E74
- movs r0, 0
- bl sub_80C4ED0
- movs r0, 0
- bl sub_80C4324
- movs r0, 0
- bl sub_80C3154
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0
- bl sub_80C48BC
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0
- bl sub_80C4960
- b _080C0798
- .align 2, 0
-_080C05D8: .4byte gUnknown_8418EB5
-_080C05DC: .4byte gUnknown_8418E8B
-_080C05E0:
- ldr r0, _080C0618 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C05EE
- b _080C07C2
-_080C05EE:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _080C05FA
- b _080C07C2
-_080C05FA:
- bl sub_80C0B18
- movs r0, 0
- bl PutWindowTilemap
- bl sub_80C0BB0
- movs r0, 0x1
- bl PutWindowTilemap
- ldr r0, _080C061C @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r2, _080C0620 @ =0x000047a0
- adds r1, r2
- b _080C07A0
- .align 2, 0
-_080C0618: .4byte gPaletteFade
-_080C061C: .4byte gUnknown_20399D4
-_080C0620: .4byte 0x000047a0
-_080C0624:
- bl sub_80C3400
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x5
- bls _080C0634
- b _080C07C2
-_080C0634:
- lsls r0, 2
- ldr r1, _080C0640 @ =_080C0644
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C0640: .4byte _080C0644
- .align 2, 0
-_080C0644:
- .4byte _080C065C
- .4byte _080C07C2
- .4byte _080C0662
- .4byte _080C070C
- .4byte _080C0740
- .4byte _080C0798
-_080C065C:
- bl sub_80C3178
- b _080C07C2
-_080C0662:
- bl sub_80C0B18
- bl sub_80C0BB0
- bl sub_80C0B9C
- bl sub_80C0450
- bl sub_80C3580
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC5
- beq _080C06A8
- movs r0, 0x1
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C068E
- b _080C07C2
-_080C068E:
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080C0700
- ldr r0, _080C06A4 @ =gUnknown_8418E8D
- bl sub_80C4E74
- b _080C07C2
- .align 2, 0
-_080C06A4: .4byte gUnknown_8418E8D
-_080C06A8:
- bl sub_80C3508
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x15
- bne _080C06DC
- bl sub_80C3514
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bne _080C06DC
- movs r0, 0
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C06DC
- ldr r0, _080C06D8 @ =gUnknown_8418EA7
- bl sub_80C4E74
- b _080C07C2
- .align 2, 0
-_080C06D8: .4byte gUnknown_8418EA7
-_080C06DC:
- bl sub_80C3508
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x15
- bne _080C0700
- bl sub_80C3514
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xD
- bne _080C0700
- ldr r0, _080C06FC @ =gUnknown_8418E95
- bl sub_80C4E74
- b _080C07C2
- .align 2, 0
-_080C06FC: .4byte gUnknown_8418E95
-_080C0700:
- ldr r0, _080C0708 @ =gUnknown_8418E8B
- bl sub_80C4E74
- b _080C07C2
- .align 2, 0
-_080C0708: .4byte gUnknown_8418E8B
-_080C070C:
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080C07C2
- ldr r0, _080C0734 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0738 @ =0x00004798
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080C07C2
- ldr r2, _080C073C @ =sub_80C07F8
- movs r0, 0
- adds r1, r5, 0
- bl sub_80C195C
- b _080C07C2
- .align 2, 0
-_080C0734: .4byte gUnknown_20399D4
-_080C0738: .4byte 0x00004798
-_080C073C: .4byte sub_80C07F8
-_080C0740:
- ldr r0, _080C0754 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r2, _080C0758 @ =0x0000479b
- adds r0, r2
- ldrb r0, [r0]
- ldr r2, _080C075C @ =sub_80C07F8
- adds r1, r5, 0
- bl sub_80C0E70
- b _080C07C2
- .align 2, 0
-_080C0754: .4byte gUnknown_20399D4
-_080C0758: .4byte 0x0000479b
-_080C075C: .4byte sub_80C07F8
-_080C0760:
- movs r0, 0x2
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C0776
- adds r0, r5, 0
- bl sub_80C2C1C
- b _080C0798
-_080C0776:
- ldr r0, _080C0780 @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r2, _080C0784 @ =0x000047a0
- adds r1, r2
- b _080C07A0
- .align 2, 0
-_080C0780: .4byte gUnknown_20399D4
-_080C0784: .4byte 0x000047a0
-_080C0788:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080C0798:
- ldr r0, _080C07A8 @ =gUnknown_20399D4
- ldr r1, [r0]
-_080C079C:
- ldr r0, _080C07AC @ =0x000047a0
- adds r1, r0
-_080C07A0:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C07C2
- .align 2, 0
-_080C07A8: .4byte gUnknown_20399D4
-_080C07AC: .4byte 0x000047a0
-_080C07B0:
- ldr r0, _080C07CC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080C07C2
- adds r0, r5, 0
- bl sub_80C0820
-_080C07C2:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C07CC: .4byte gPaletteFade
- thumb_func_end sub_80C04E4
-
- thumb_func_start sub_80C07D0
-sub_80C07D0: @ 80C07D0
- ldr r1, _080C07DC @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C07E0 @ =0x000047b8
- adds r1, r2
- str r0, [r1]
- bx lr
- .align 2, 0
-_080C07DC: .4byte gUnknown_20399D4
-_080C07E0: .4byte 0x000047b8
- thumb_func_end sub_80C07D0
-
- thumb_func_start sub_80C07E4
-sub_80C07E4: @ 80C07E4
- ldr r0, _080C07F0 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C07F4 @ =0x000047b8
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .align 2, 0
-_080C07F0: .4byte gUnknown_20399D4
-_080C07F4: .4byte 0x000047b8
- thumb_func_end sub_80C07E4
-
- thumb_func_start sub_80C07F8
-sub_80C07F8: @ 80C07F8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C0814 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080C0818 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r2, _080C081C @ =0x000047b8
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080C0814: .4byte gTasks
-_080C0818: .4byte gUnknown_20399D4
-_080C081C: .4byte 0x000047b8
- thumb_func_end sub_80C07F8
-
- thumb_func_start sub_80C0820
-sub_80C0820: @ 80C0820
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C0838
- bl sub_80C25BC
-_080C0838:
- bl sub_80C4A04
- bl sub_80C3188
- bl sub_80C4348
- bl sub_80C4D30
- adds r0, r4, 0
- bl DestroyTask
- bl FreeAllWindowBuffers
- ldr r0, _080C086C @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0870 @ =0x000047bc
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _080C0878
- ldr r0, _080C0874 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- b _080C087C
- .align 2, 0
-_080C086C: .4byte gUnknown_20399D4
-_080C0870: .4byte 0x000047bc
-_080C0874: .4byte gMain
-_080C0878:
- bl SetMainCallback2
-_080C087C:
- ldr r4, _080C0894 @ =gUnknown_20399D4
- ldr r0, [r4]
- cmp r0, 0
- beq _080C088C
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C088C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0894: .4byte gUnknown_20399D4
- thumb_func_end sub_80C0820
-
- thumb_func_start sub_80C0898
-sub_80C0898: @ 80C0898
- push {r4,lr}
- ldr r4, _080C08B0 @ =gUnknown_20399D4
- ldr r0, [r4]
- cmp r0, 0
- beq _080C08AA
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C08AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C08B0: .4byte gUnknown_20399D4
- thumb_func_end sub_80C0898
-
- thumb_func_start sub_80C08B4
-sub_80C08B4: @ 80C08B4
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80C08B4
-
- thumb_func_start sub_80C08CC
-sub_80C08CC: @ 80C08CC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80C08CC
-
- thumb_func_start sub_80C08E0
-sub_80C08E0: @ 80C08E0
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- pop {r0}
- bx r0
- thumb_func_end sub_80C08E0
-
- thumb_func_start sub_80C08F4
-sub_80C08F4: @ 80C08F4
- push {lr}
- ldr r0, _080C0900 @ =sub_80C08CC
- bl SetVBlankCallback
- pop {r0}
- bx r0
- .align 2, 0
-_080C0900: .4byte sub_80C08CC
- thumb_func_end sub_80C08F4
-
- thumb_func_start sub_80C0904
-sub_80C0904: @ 80C0904
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- mov r2, sp
- movs r6, 0
- ldr r1, _080C0A18 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080C0A1C @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080C092A:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _080C092A
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, _080C0A18 @ =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- mov r0, sp
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080C0A20 @ =gUnknown_83F1A50
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r0, _080C0A24 @ =gUnknown_83F1A60
- bl InitWindows
- bl DeactivateAllTextPrinters
- ldr r1, _080C0A28 @ =0x00006040
- movs r0, 0
- bl SetGpuReg
- bl sub_80C0A2C
- bl sub_80C0AB8
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0A18: .4byte 0x040000d4
-_080C0A1C: .4byte 0x81000800
-_080C0A20: .4byte gUnknown_83F1A50
-_080C0A24: .4byte gUnknown_83F1A60
-_080C0A28: .4byte 0x00006040
- thumb_func_end sub_80C0904
-
- thumb_func_start sub_80C0A2C
-sub_80C0A2C: @ 80C0A2C
- push {r4,lr}
- ldr r4, _080C0A5C @ =gUnknown_20399D4
- ldr r1, [r4]
- ldr r0, _080C0A60 @ =0x00001796
- adds r1, r0
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, _080C0A64 @ =0x00002796
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, _080C0A68 @ =0x00003796
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0A5C: .4byte gUnknown_20399D4
-_080C0A60: .4byte 0x00001796
-_080C0A64: .4byte 0x00002796
-_080C0A68: .4byte 0x00003796
- thumb_func_end sub_80C0A2C
-
- thumb_func_start sub_80C0A6C
-sub_80C0A6C: @ 80C0A6C
- push {lr}
- bl ResetSpriteData
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl ScanlineEffect_Stop
- pop {r0}
- bx r0
- thumb_func_end sub_80C0A6C
-
- thumb_func_start sub_80C0A88
-sub_80C0A88: @ 80C0A88
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080C0A98
- cmp r0, 0x1
- beq _080C0AA6
- b _080C0AB2
-_080C0A98:
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- b _080C0AB2
-_080C0AA6:
- movs r0, 0
- bl HideBg
- movs r0, 0x3
- bl HideBg
-_080C0AB2:
- pop {r0}
- bx r0
- thumb_func_end sub_80C0A88
-
- thumb_func_start sub_80C0AB8
-sub_80C0AB8: @ 80C0AB8
- push {r4,lr}
- bl sub_80C4BE4
- movs r0, 0
- movs r1, 0x11
- movs r2, 0xC0
- bl sub_80C4C2C
- movs r0, 0x6
- bl sub_80C4C48
- movs r0, 0x39
- movs r1, 0x39
- bl sub_80C4C74
- movs r0, 0x1B
- bl sub_80C4C88
- ldr r4, _080C0B14 @ =gUnknown_83F1B0C
- movs r0, 0
- adds r1, r4, 0
- bl sub_80C4CF0
- adds r4, 0x8
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_80C4CF0
- movs r0, 0
- movs r1, 0
- bl sub_80C4C9C
- bl sub_80C3580
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC5
- beq _080C0B0C
- movs r0, 0x1
- movs r1, 0
- bl sub_80C4C9C
-_080C0B0C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0B14: .4byte gUnknown_83F1B0C
- thumb_func_end sub_80C0AB8
-
- thumb_func_start sub_80C0B18
-sub_80C0B18: @ 80C0B18
- push {r4,r5,lr}
- sub sp, 0xC
- movs r0, 0
- bl ClearWindowTilemap
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- bl sub_80C3520
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC5
- bne _080C0B44
- ldr r1, _080C0B40 @ =gUnknown_83F1B1C
- movs r0, 0
- bl sub_80C4CF0
- b _080C0B88
- .align 2, 0
-_080C0B40: .4byte gUnknown_83F1B1C
-_080C0B44:
- ldr r5, _080C0B90 @ =gUnknown_20399D4
- ldr r4, [r5]
- bl sub_80C3520
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl GetMapName
- ldr r0, _080C0B94 @ =gUnknown_83F1A90
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r0, [r5]
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, _080C0B98 @ =gUnknown_83F1B0C
- movs r0, 0
- bl sub_80C4CF0
-_080C0B88:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0B90: .4byte gUnknown_20399D4
-_080C0B94: .4byte gUnknown_83F1A90
-_080C0B98: .4byte gUnknown_83F1B0C
- thumb_func_end sub_80C0B18
-
- thumb_func_start sub_80C0B9C
-sub_80C0B9C: @ 80C0B9C
- push {lr}
- ldr r1, _080C0BAC @ =gUnknown_83F1B14
- movs r0, 0x1
- bl sub_80C4CF0
- pop {r0}
- bx r0
- .align 2, 0
-_080C0BAC: .4byte gUnknown_83F1B14
- thumb_func_end sub_80C0B9C
-
- thumb_func_start sub_80C0BB0
-sub_80C0BB0: @ 80C0BB0
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r5, _080C0C84 @ =gUnknown_20399D4
- ldr r1, [r5]
- ldr r2, _080C0C88 @ =0x000047ac
- adds r0, r1, r2
- movs r6, 0
- strh r6, [r0]
- ldr r3, _080C0C8C @ =0x000047ae
- adds r2, r1, r3
- movs r0, 0x18
- strh r0, [r2]
- ldr r0, _080C0C90 @ =0x000047b0
- adds r1, r0
- movs r0, 0x20
- strh r0, [r1]
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80C4C9C
- movs r0, 0x1
- bl ClearWindowTilemap
- bl sub_80C3580
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC5
- beq _080C0C7A
- adds r4, r0, 0
- subs r4, 0x58
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x1
- movs r1, 0
- bl sub_80C4C9C
- ldr r0, [r5]
- ldr r1, _080C0C88 @ =0x000047ac
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0]
- ldr r0, _080C0C94 @ =gUnknown_83F1CAC
- lsls r4, 2
- adds r4, r0
- ldr r4, [r4]
- adds r0, r4, 0
- bl StringLength
- ldr r2, [r5]
- ldr r3, _080C0C98 @ =0x000047aa
- adds r1, r2, r3
- strh r0, [r1]
- ldrh r1, [r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- adds r0, 0x32
- adds r3, 0x4
- adds r1, r2, r3
- strh r0, [r1]
- ldr r0, _080C0C90 @ =0x000047b0
- adds r2, r0
- movs r0, 0x30
- strh r0, [r2]
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x13
- adds r1, r4, 0
- bl StringCopy
- ldr r4, _080C0C9C @ =gUnknown_83F1A9C
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 22
- subs r0, 0x8
- adds r0, r4
- ldr r0, [r0]
- str r0, [sp]
- str r6, [sp, 0x4]
- ldr r0, [r5]
- adds r0, 0x13
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0xC
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
-_080C0C7A:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0C84: .4byte gUnknown_20399D4
-_080C0C88: .4byte 0x000047ac
-_080C0C8C: .4byte 0x000047ae
-_080C0C90: .4byte 0x000047b0
-_080C0C94: .4byte gUnknown_83F1CAC
-_080C0C98: .4byte 0x000047aa
-_080C0C9C: .4byte gUnknown_83F1A9C
- thumb_func_end sub_80C0BB0
-
- thumb_func_start sub_80C0CA0
-sub_80C0CA0: @ 80C0CA0
- push {lr}
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r0}
- bx r0
- thumb_func_end sub_80C0CA0
-
- thumb_func_start sub_80C0CC8
-sub_80C0CC8: @ 80C0CC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r1, 0
- lsls r0, 24
- ldr r2, _080C0D0C @ =gUnknown_20399D4
- lsrs r0, 12
- ldr r1, _080C0D10 @ =0x00001796
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- movs r1, 0
- mov r8, r2
-_080C0CE4:
- movs r2, 0
- lsls r5, r1, 16
- asrs r1, r5, 16
- lsls r3, r1, 5
- lsls r0, r1, 4
- subs r0, r1
- lsls r4, r0, 1
-_080C0CF2:
- lsls r0, r2, 16
- asrs r1, r0, 16
- adds r2, r0, 0
- cmp r1, 0x1D
- bgt _080C0D14
- adds r0, r3, r1
- lsls r0, 1
- adds r0, r6
- adds r1, r4, r1
- lsls r1, 1
- adds r1, r7
- ldrh r1, [r1]
- b _080C0D1C
- .align 2, 0
-_080C0D0C: .4byte gUnknown_20399D4
-_080C0D10: .4byte 0x00001796
-_080C0D14:
- adds r0, r3, r1
- lsls r0, 1
- adds r0, r6
- ldrh r1, [r7]
-_080C0D1C:
- strh r1, [r0]
- movs r1, 0x80
- lsls r1, 9
- adds r0, r2, r1
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- ble _080C0CF2
- adds r0, r5, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080C0CE4
- mov r1, r8
- ldr r0, [r1]
- ldr r1, _080C0D94 @ =0x00004797
- adds r0, r1
- ldrb r5, [r0]
- cmp r5, 0x1
- bne _080C0D86
- movs r4, 0x3
- str r4, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r0, 0
- movs r1, 0xF0
- movs r2, 0x18
- movs r3, 0xE
- bl WriteSequenceToBgTilemapBuffer
- movs r1, 0x80
- lsls r1, 1
- str r4, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r0, 0
- movs r2, 0x18
- movs r3, 0xF
- bl WriteSequenceToBgTilemapBuffer
- movs r1, 0x88
- lsls r1, 1
- str r4, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- str r5, [sp, 0xC]
- movs r0, 0
- movs r2, 0x18
- movs r3, 0x10
- bl WriteSequenceToBgTilemapBuffer
-_080C0D86:
- ldr r0, _080C0D98 @ =gUnknown_20399D8
- ldr r0, [r0]
- cmp r0, 0
- beq _080C0DA0
- ldr r1, _080C0D9C @ =0x00001cca
- b _080C0DA6
- .align 2, 0
-_080C0D94: .4byte 0x00004797
-_080C0D98: .4byte gUnknown_20399D8
-_080C0D9C: .4byte 0x00001cca
-_080C0DA0:
- mov r1, r8
- ldr r0, [r1]
- ldr r1, _080C0DF8 @ =0x0000479b
-_080C0DA6:
- adds r0, r1
- ldrb r4, [r0]
- cmp r4, 0x2
- bne _080C0DCC
- ldr r0, _080C0DFC @ =0x000008b5
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _080C0DCC
- movs r0, 0x3
- str r0, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0xD
- movs r3, 0xB
- bl FillBgTilemapBufferRect_Palette0
-_080C0DCC:
- cmp r4, 0x3
- bne _080C0DEC
- ldr r0, _080C0E00 @ =0x000008c2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _080C0DEC
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0x15
- movs r3, 0x10
- bl FillBgTilemapBufferRect_Palette0
-_080C0DEC:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0DF8: .4byte 0x0000479b
-_080C0DFC: .4byte 0x000008b5
-_080C0E00: .4byte 0x000008c2
- thumb_func_end sub_80C0CC8
-
- thumb_func_start sub_80C0E04
-sub_80C0E04: @ 80C0E04
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080C0E18 @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C0E1C @ =0x00004797
- adds r1, r2
- adds r1, r0
- ldrb r0, [r1]
- bx lr
- .align 2, 0
-_080C0E18: .4byte gUnknown_20399D4
-_080C0E1C: .4byte 0x00004797
- thumb_func_end sub_80C0E04
-
- thumb_func_start sub_80C0E20
-sub_80C0E20: @ 80C0E20
- ldr r0, _080C0E2C @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0E30 @ =0x0000479b
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080C0E2C: .4byte gUnknown_20399D4
-_080C0E30: .4byte 0x0000479b
- thumb_func_end sub_80C0E20
-
- thumb_func_start sub_80C0E34
-sub_80C0E34: @ 80C0E34
- ldr r0, _080C0E40 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0E44 @ =0x0000479c
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_080C0E40: .4byte gUnknown_20399D4
-_080C0E44: .4byte 0x0000479c
- thumb_func_end sub_80C0E34
-
- thumb_func_start sub_80C0E48
-sub_80C0E48: @ 80C0E48
- ldr r1, _080C0E54 @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C0E58 @ =0x0000479b
- adds r1, r2
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080C0E54: .4byte gUnknown_20399D4
-_080C0E58: .4byte 0x0000479b
- thumb_func_end sub_80C0E48
-
- thumb_func_start sub_80C0E5C
-sub_80C0E5C: @ 80C0E5C
- ldr r1, _080C0E68 @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C0E6C @ =0x0000479c
- adds r1, r2
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080C0E68: .4byte gUnknown_20399D4
-_080C0E6C: .4byte 0x0000479c
- thumb_func_end sub_80C0E5C
-
- thumb_func_start sub_80C0E70
-sub_80C0E70: @ 80C0E70
- push {r4-r7,lr}
- adds r7, r2, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _080C0EA0 @ =gUnknown_20399D8
- movs r0, 0xE7
- lsls r0, 5
- bl AllocZeroed
- str r0, [r4]
- ldr r0, _080C0EA4 @ =0x00000846
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080C0EAC
- ldr r0, [r4]
- ldr r1, _080C0EA8 @ =0x00001ccc
- adds r0, r1
- movs r1, 0x3
- b _080C0ED2
- .align 2, 0
-_080C0EA0: .4byte gUnknown_20399D8
-_080C0EA4: .4byte 0x00000846
-_080C0EA8: .4byte 0x00001ccc
-_080C0EAC:
- ldr r0, _080C0EC4 @ =0x00000845
- bl FlagGet
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080C0ECC
- ldr r0, [r4]
- ldr r2, _080C0EC8 @ =0x00001ccc
- adds r0, r2
- movs r1, 0x1
- b _080C0ED2
- .align 2, 0
-_080C0EC4: .4byte 0x00000845
-_080C0EC8: .4byte 0x00001ccc
-_080C0ECC:
- ldr r0, [r4]
- ldr r3, _080C0F14 @ =0x00001ccc
- adds r0, r3
-_080C0ED2:
- strb r1, [r0]
- ldr r4, _080C0F18 @ =gUnknown_20399D8
- ldr r2, [r4]
- ldr r0, _080C0F1C @ =0x000018b8
- adds r1, r2, r0
- movs r0, 0x58
- strh r0, [r1]
- ldr r3, _080C0F20 @ =0x00001cc4
- adds r1, r2, r3
- movs r0, 0x98
- strh r0, [r1]
- ldr r1, _080C0F14 @ =0x00001ccc
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _080C0F2C
- cmp r0, 0x2
- bgt _080C0F4C
- cmp r0, 0x1
- bne _080C0F4C
- ldr r0, _080C0F24 @ =gUnknown_83F1084
- movs r3, 0x80
- lsls r3, 5
- adds r1, r2, r3
- bl LZ77UnCompWram
- ldr r0, [r4]
- ldr r1, _080C0F28 @ =0x00001cce
- adds r0, r1
- movs r1, 0x6
- strh r1, [r0]
- b _080C0F64
- .align 2, 0
-_080C0F14: .4byte 0x00001ccc
-_080C0F18: .4byte gUnknown_20399D8
-_080C0F1C: .4byte 0x000018b8
-_080C0F20: .4byte 0x00001cc4
-_080C0F24: .4byte gUnknown_83F1084
-_080C0F28: .4byte 0x00001cce
-_080C0F2C:
- ldr r0, _080C0F44 @ =gUnknown_83F1190
- movs r3, 0x80
- lsls r3, 5
- adds r1, r2, r3
- bl LZ77UnCompWram
- ldr r0, [r4]
- ldr r1, _080C0F48 @ =0x00001cce
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0]
- b _080C0F64
- .align 2, 0
-_080C0F44: .4byte gUnknown_83F1190
-_080C0F48: .4byte 0x00001cce
-_080C0F4C:
- ldr r0, _080C0FB4 @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r3, _080C0FB8 @ =0x00001cce
- adds r2, r1, r3
- movs r0, 0x3
- strh r0, [r2]
- ldr r0, _080C0FBC @ =gUnknown_83F0F1C
- movs r2, 0x80
- lsls r2, 5
- adds r1, r2
- bl LZ77UnCompWram
-_080C0F64:
- ldr r0, _080C0FC0 @ =gUnknown_83F0580
- ldr r4, _080C0FB4 @ =gUnknown_20399D8
- ldr r1, [r4]
- bl LZ77UnCompWram
- ldr r0, [r4]
- ldr r3, _080C0FC4 @ =0x00001cc8
- adds r0, r3
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, _080C0FC8 @ =0x00001cca
- adds r0, r1
- strb r6, [r0]
- ldr r0, [r4]
- ldr r2, _080C0FCC @ =0x00001cd0
- adds r0, r2
- str r7, [r0]
- bl sub_80C0E34
- ldr r1, [r4]
- ldr r3, _080C0FD0 @ =0x00001ccb
- adds r1, r3
- strb r0, [r1]
- movs r0, 0
- bl sub_80C4AAC
- ldr r0, _080C0FD4 @ =gUnknown_8418EB0
- bl sub_80C4E74
- ldr r1, _080C0FD8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080C0FDC @ =sub_80C1098
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0FB4: .4byte gUnknown_20399D8
-_080C0FB8: .4byte 0x00001cce
-_080C0FBC: .4byte gUnknown_83F0F1C
-_080C0FC0: .4byte gUnknown_83F0580
-_080C0FC4: .4byte 0x00001cc8
-_080C0FC8: .4byte 0x00001cca
-_080C0FCC: .4byte 0x00001cd0
-_080C0FD0: .4byte 0x00001ccb
-_080C0FD4: .4byte gUnknown_8418EB0
-_080C0FD8: .4byte gTasks
-_080C0FDC: .4byte sub_80C1098
- thumb_func_end sub_80C0E70
-
- thumb_func_start sub_80C0FE0
-sub_80C0FE0: @ 80C0FE0
- push {lr}
- bl sub_80C4BE4
- movs r0, 0x1B
- movs r1, 0x4
- movs r2, 0x40
- bl sub_80C4C2C
- ldr r0, _080C100C @ =gUnknown_20399D8
- ldr r0, [r0]
- ldr r1, _080C1010 @ =0x00001ccd
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl sub_80C4C5C
- pop {r0}
- bx r0
- .align 2, 0
-_080C100C: .4byte gUnknown_20399D8
-_080C1010: .4byte 0x00001ccd
- thumb_func_end sub_80C0FE0
-
- thumb_func_start sub_80C1014
-sub_80C1014: @ 80C1014
- push {r4,lr}
- ldr r4, _080C1028 @ =gUnknown_20399D8
- ldr r0, [r4]
- ldr r2, _080C102C @ =0x00001ccd
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xF
- bls _080C1030
- movs r0, 0x1
- b _080C104C
- .align 2, 0
-_080C1028: .4byte gUnknown_20399D8
-_080C102C: .4byte 0x00001ccd
-_080C1030:
- ldrb r1, [r1]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl sub_80C4C5C
- ldr r1, [r4]
- ldr r0, _080C1054 @ =0x00001ccd
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x2
- strb r0, [r1]
- movs r0, 0
-_080C104C:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080C1054: .4byte 0x00001ccd
- thumb_func_end sub_80C1014
-
- thumb_func_start sub_80C1058
-sub_80C1058: @ 80C1058
- push {lr}
- ldr r2, _080C106C @ =gUnknown_20399D8
- ldr r0, [r2]
- ldr r3, _080C1070 @ =0x00001ccd
- adds r1, r0, r3
- ldrb r0, [r1]
- cmp r0, 0x1
- bhi _080C1074
- movs r0, 0x1
- b _080C108E
- .align 2, 0
-_080C106C: .4byte gUnknown_20399D8
-_080C1070: .4byte 0x00001ccd
-_080C1074:
- subs r0, 0x2
- strb r0, [r1]
- ldr r0, [r2]
- ldr r1, _080C1094 @ =0x00001ccd
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl sub_80C4C5C
- movs r0, 0
-_080C108E:
- pop {r1}
- bx r1
- .align 2, 0
-_080C1094: .4byte 0x00001ccd
- thumb_func_end sub_80C1058
-
- thumb_func_start sub_80C1098
-sub_80C1098: @ 80C1098
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C10BC @ =gUnknown_20399D8
- ldr r0, [r1]
- ldr r3, _080C10C0 @ =0x00001cc8
- adds r0, r3
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0xC
- bls _080C10B0
- b _080C1274
-_080C10B0:
- lsls r0, 2
- ldr r1, _080C10C4 @ =_080C10C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C10BC: .4byte gUnknown_20399D8
-_080C10C0: .4byte 0x00001cc8
-_080C10C4: .4byte _080C10C8
- .align 2, 0
-_080C10C8:
- .4byte _080C10FC
- .4byte _080C111C
- .4byte _080C112E
- .4byte _080C1146
- .4byte _080C115C
- .4byte _080C1168
- .4byte _080C1180
- .4byte _080C1192
- .4byte _080C11B0
- .4byte _080C11BE
- .4byte _080C1220
- .4byte _080C1236
- .4byte _080C1254
-_080C10FC:
- bl sub_80C08E0
- ldr r0, _080C1110 @ =gUnknown_8418EBC
- bl sub_80C4E18
- ldr r0, _080C1114 @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r0, _080C1118 @ =0x00001cc8
- adds r1, r0
- b _080C1262
- .align 2, 0
-_080C1110: .4byte gUnknown_8418EBC
-_080C1114: .4byte gUnknown_20399D8
-_080C1118: .4byte 0x00001cc8
-_080C111C:
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 5
- movs r0, 0x2
- movs r3, 0
- bl LoadBgTiles
- ldr r1, [r4]
- b _080C125E
-_080C112E:
- ldr r1, [r4]
- movs r0, 0x80
- lsls r0, 5
- adds r1, r0
- movs r0, 0x2
- bl sub_80C1324
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- b _080C125E
-_080C1146:
- bl sub_80C0CA0
- ldr r0, _080C1154 @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r0, _080C1158 @ =0x00001cc8
- adds r1, r0
- b _080C1262
- .align 2, 0
-_080C1154: .4byte gUnknown_20399D8
-_080C1158: .4byte 0x00001cc8
-_080C115C:
- bl sub_80C0FE0
- movs r0, 0x2
- bl ShowBg
- b _080C125A
-_080C1168:
- bl sub_80C08F4
- ldr r0, _080C1178 @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r0, _080C117C @ =0x00001cc8
- adds r1, r0
- b _080C1262
- .align 2, 0
-_080C1178: .4byte gUnknown_20399D8
-_080C117C: .4byte 0x00001cc8
-_080C1180:
- bl sub_80C1014
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C127A
- bl sub_80C1390
- b _080C125A
-_080C1192:
- bl sub_80C144C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C127A
- ldr r0, _080C11A8 @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r0, _080C11AC @ =0x00001cc8
- adds r1, r0
- b _080C1262
- .align 2, 0
-_080C11A8: .4byte gUnknown_20399D8
-_080C11AC: .4byte 0x00001cc8
-_080C11B0:
- bl sub_80C16D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C127A
- b _080C125A
-_080C11BE:
- bl sub_80C1478
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C127A
- ldr r5, _080C1214 @ =gUnknown_20399D8
- ldr r0, [r5]
- ldr r4, _080C1218 @ =0x00001cca
- adds r0, r4
- ldrb r0, [r0]
- bl sub_80C0E48
- bl sub_80C0E34
- ldr r1, [r5]
- adds r1, r4
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C120C
- movs r0, 0
- bl sub_80C4324
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0
- bl sub_80C48BC
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0
- bl sub_80C4960
-_080C120C:
- ldr r1, [r5]
- ldr r0, _080C121C @ =0x00001cc8
- adds r1, r0
- b _080C1262
- .align 2, 0
-_080C1214: .4byte gUnknown_20399D8
-_080C1218: .4byte 0x00001cca
-_080C121C: .4byte 0x00001cc8
-_080C1220:
- bl sub_80C12EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C127A
- bl sub_80C1880
- bl sub_80C0FE0
- b _080C125A
-_080C1236:
- bl sub_80C1058
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C127A
- ldr r0, _080C124C @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r0, _080C1250 @ =0x00001cc8
- adds r1, r0
- b _080C1262
- .align 2, 0
-_080C124C: .4byte gUnknown_20399D8
-_080C1250: .4byte 0x00001cc8
-_080C1254:
- movs r0, 0
- bl sub_80C3154
-_080C125A:
- ldr r0, _080C126C @ =gUnknown_20399D8
- ldr r1, [r0]
-_080C125E:
- ldr r3, _080C1270 @ =0x00001cc8
- adds r1, r3
-_080C1262:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C127A
- .align 2, 0
-_080C126C: .4byte gUnknown_20399D8
-_080C1270: .4byte 0x00001cc8
-_080C1274:
- adds r0, r2, 0
- bl sub_80C1280
-_080C127A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80C1098
-
- thumb_func_start sub_80C1280
-sub_80C1280: @ 80C1280
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C12D4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r4, _080C12D8 @ =gUnknown_20399D8
- ldr r0, [r4]
- ldr r2, _080C12DC @ =0x00001cd0
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- movs r0, 0x2
- bl HideBg
- ldr r0, _080C12E0 @ =gUnknown_8418EB5
- bl sub_80C4E18
- ldr r0, _080C12E4 @ =gUnknown_8418EA7
- bl sub_80C4E74
- bl sub_80C0AB8
- bl sub_80C0B9C
- ldr r1, _080C12E8 @ =gUnknown_83F1B1C
- movs r0, 0
- bl sub_80C4CF0
- ldr r0, [r4]
- cmp r0, 0
- beq _080C12CC
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C12CC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C12D4: .4byte gTasks
-_080C12D8: .4byte gUnknown_20399D8
-_080C12DC: .4byte 0x00001cd0
-_080C12E0: .4byte gUnknown_8418EB5
-_080C12E4: .4byte gUnknown_8418EA7
-_080C12E8: .4byte gUnknown_83F1B1C
- thumb_func_end sub_80C1280
-
- thumb_func_start sub_80C12EC
-sub_80C12EC: @ 80C12EC
- push {lr}
- ldr r0, _080C1308 @ =gUnknown_20399D8
- ldr r0, [r0]
- ldr r2, _080C130C @ =0x00001cdc
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0
- bne _080C1310
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1
- b _080C131E
- .align 2, 0
-_080C1308: .4byte gUnknown_20399D8
-_080C130C: .4byte 0x00001cdc
-_080C1310:
- subs r0, 0x1
- strh r0, [r1]
- ldrh r1, [r1]
- movs r0, 0x54
- bl SetGpuReg
- movs r0, 0
-_080C131E:
- pop {r1}
- bx r1
- thumb_func_end sub_80C12EC
-
- thumb_func_start sub_80C1324
-sub_80C1324: @ 80C1324
- push {r4-r7,lr}
- adds r7, r1, 0
- lsls r0, 24
- ldr r1, _080C1360 @ =gUnknown_20399D4
- lsrs r0, 12
- ldr r2, _080C1364 @ =0x00001796
- adds r0, r2
- ldr r1, [r1]
- adds r6, r1, r0
- movs r1, 0
-_080C1338:
- movs r2, 0
- lsls r5, r1, 16
- asrs r1, r5, 16
- lsls r3, r1, 5
- lsls r0, r1, 4
- subs r0, r1
- lsls r4, r0, 1
-_080C1346:
- lsls r0, r2, 16
- asrs r1, r0, 16
- adds r2, r0, 0
- cmp r1, 0x1D
- bgt _080C1368
- adds r0, r3, r1
- lsls r0, 1
- adds r0, r6
- adds r1, r4, r1
- lsls r1, 1
- adds r1, r7
- ldrh r1, [r1]
- b _080C1370
- .align 2, 0
-_080C1360: .4byte gUnknown_20399D4
-_080C1364: .4byte 0x00001796
-_080C1368:
- adds r0, r3, r1
- lsls r0, 1
- adds r0, r6
- ldrh r1, [r7]
-_080C1370:
- strh r1, [r0]
- movs r1, 0x80
- lsls r1, 9
- adds r0, r2, r1
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- ble _080C1346
- adds r0, r5, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080C1338
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C1324
-
- thumb_func_start sub_80C1390
-sub_80C1390: @ 80C1390
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _080C1428 @ =gUnknown_20399D8
- ldr r2, [r0]
- ldr r1, _080C142C @ =0x00001cd4
- adds r0, r2, r1
- movs r1, 0x48
- strh r1, [r0]
- ldr r5, _080C1430 @ =0xffff0000
- ldr r0, [sp]
- ands r0, r5
- orrs r0, r1
- str r0, [sp]
- ldr r0, _080C1434 @ =0x00001cce
- adds r3, r2, r0
- ldr r1, _080C1438 @ =0x00001cca
- adds r0, r2, r1
- ldrb r1, [r0]
- lsls r1, 2
- ldrh r3, [r3]
- adds r1, r3
- lsls r1, 3
- ldr r0, _080C143C @ =0x00001cd6
- adds r4, r2, r0
- strh r1, [r4]
- lsls r1, 16
- ldr r3, _080C1440 @ =0x0000ffff
- ldr r0, [sp]
- ands r0, r3
- orrs r0, r1
- str r0, [sp]
- ldr r1, _080C1444 @ =0x00001cd8
- adds r0, r2, r1
- movs r1, 0xA8
- strh r1, [r0]
- ldr r0, [sp, 0x4]
- ands r0, r5
- orrs r0, r1
- str r0, [sp, 0x4]
- ldrh r1, [r4]
- adds r1, 0x20
- ldr r0, _080C1448 @ =0x00001cda
- adds r2, r0
- strh r1, [r2]
- ands r1, r3
- lsls r1, 16
- ldr r0, [sp, 0x4]
- ands r0, r3
- orrs r0, r1
- str r0, [sp, 0x4]
- bl sub_80C4BE4
- movs r0, 0
- movs r1, 0x15
- movs r2, 0xC0
- bl sub_80C4C2C
- movs r0, 0x1F
- movs r1, 0x15
- bl sub_80C4C74
- movs r0, 0x3F
- bl sub_80C4C88
- movs r0, 0x1
- movs r1, 0
- bl sub_80C4C9C
- movs r0, 0x1
- mov r1, sp
- bl sub_80C4CF0
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1428: .4byte gUnknown_20399D8
-_080C142C: .4byte 0x00001cd4
-_080C1430: .4byte 0xffff0000
-_080C1434: .4byte 0x00001cce
-_080C1438: .4byte 0x00001cca
-_080C143C: .4byte 0x00001cd6
-_080C1440: .4byte 0x0000ffff
-_080C1444: .4byte 0x00001cd8
-_080C1448: .4byte 0x00001cda
- thumb_func_end sub_80C1390
-
- thumb_func_start sub_80C144C
-sub_80C144C: @ 80C144C
- push {lr}
- ldr r0, _080C1460 @ =gUnknown_20399D8
- ldr r0, [r0]
- ldr r2, _080C1464 @ =0x00001cdc
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0x5
- bls _080C1468
- movs r0, 0x1
- b _080C1474
- .align 2, 0
-_080C1460: .4byte gUnknown_20399D8
-_080C1464: .4byte 0x00001cdc
-_080C1468:
- adds r0, 0x1
- strh r0, [r1]
- ldrh r0, [r1]
- bl sub_80C4C48
- movs r0, 0
-_080C1474:
- pop {r1}
- bx r1
- thumb_func_end sub_80C144C
-
- thumb_func_start sub_80C1478
-sub_80C1478: @ 80C1478
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r6, 0
- ldr r0, _080C1574 @ =gUnknown_20399D8
- mov r8, r0
- ldr r5, [r0]
- ldr r1, _080C1578 @ =0x00001cd4
- adds r0, r5, r1
- movs r1, 0x48
- strh r1, [r0]
- ldr r4, _080C157C @ =0xffff0000
- ldr r0, [sp]
- ands r0, r4
- orrs r0, r1
- str r0, [sp]
- ldr r3, _080C1580 @ =0x00001cce
- adds r2, r5, r3
- ldr r7, _080C1584 @ =0x00001cca
- adds r0, r5, r7
- ldrb r1, [r0]
- lsls r1, 2
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 3
- ldr r0, _080C1588 @ =0x00001cd6
- adds r3, r5, r0
- strh r1, [r3]
- lsls r1, 16
- ldr r2, _080C158C @ =0x0000ffff
- ldr r0, [sp]
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldr r1, _080C1590 @ =0x00001cd8
- adds r0, r5, r1
- movs r1, 0xA8
- strh r1, [r0]
- ldr r0, [sp, 0x4]
- ands r0, r4
- orrs r0, r1
- str r0, [sp, 0x4]
- ldrh r1, [r3]
- adds r1, 0x20
- ldr r3, _080C1594 @ =0x00001cda
- adds r0, r5, r3
- strh r1, [r0]
- ands r1, r2
- lsls r1, 16
- ldr r0, [sp, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x4]
- ldr r0, _080C1598 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080C150E
- adds r1, r7, 0
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C150E
- movs r0, 0xF5
- bl PlaySE
- mov r2, r8
- ldr r1, [r2]
- adds r1, r7
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- movs r6, 0x1
-_080C150E:
- ldr r0, _080C1598 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C1542
- ldr r4, _080C1574 @ =gUnknown_20399D8
- ldr r0, [r4]
- ldr r3, _080C1584 @ =0x00001cca
- adds r1, r0, r3
- ldr r2, _080C159C @ =0x00001ccc
- adds r0, r2
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcs _080C1542
- movs r0, 0xF5
- bl PlaySE
- ldr r1, [r4]
- ldr r3, _080C1584 @ =0x00001cca
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r6, 0x1
-_080C1542:
- ldr r2, _080C1598 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- ldr r4, _080C1574 @ =gUnknown_20399D8
- cmp r0, 0
- beq _080C15A8
- ldr r0, [r4]
- ldr r1, _080C15A0 @ =0x00001cdc
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x6
- bne _080C15A8
- movs r0, 0xC7
- bl PlaySE
- ldr r0, [r4]
- ldr r2, _080C1584 @ =0x00001cca
- adds r1, r0, r2
- ldrb r1, [r1]
- ldr r3, _080C15A4 @ =0x00001ccb
- adds r0, r3
- strb r1, [r0]
- movs r0, 0x1
- b _080C16AC
- .align 2, 0
-_080C1574: .4byte gUnknown_20399D8
-_080C1578: .4byte 0x00001cd4
-_080C157C: .4byte 0xffff0000
-_080C1580: .4byte 0x00001cce
-_080C1584: .4byte 0x00001cca
-_080C1588: .4byte 0x00001cd6
-_080C158C: .4byte 0x0000ffff
-_080C1590: .4byte 0x00001cd8
-_080C1594: .4byte 0x00001cda
-_080C1598: .4byte gMain
-_080C159C: .4byte 0x00001ccc
-_080C15A0: .4byte 0x00001cdc
-_080C15A4: .4byte 0x00001ccb
-_080C15A8:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080C1604
- ldr r0, [r4]
- ldr r2, _080C15FC @ =0x00001ccb
- adds r1, r0, r2
- ldrb r1, [r1]
- subs r2, 0x1
- adds r0, r2
- strb r1, [r0]
- ldr r3, _080C1600 @ =gUnknown_20399D4
- ldr r0, [r4]
- adds r0, r2
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 4
- adds r0, 0x26
- ldr r1, [r3]
- adds r1, r0
- movs r0, 0
- bl sub_80C0CC8
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C48BC
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C4960
- movs r0, 0x1
- b _080C16AC
- .align 2, 0
-_080C15FC: .4byte 0x00001ccb
-_080C1600: .4byte gUnknown_20399D4
-_080C1604:
- cmp r6, 0
- beq _080C166C
- ldr r2, _080C168C @ =gUnknown_20399D4
- ldr r5, _080C1690 @ =gUnknown_20399D8
- ldr r0, [r5]
- ldr r4, _080C1694 @ =0x00001cca
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 4
- adds r0, 0x26
- ldr r1, [r2]
- adds r1, r0
- movs r0, 0
- bl sub_80C0CC8
- ldr r0, _080C1698 @ =gUnknown_8418EB0
- bl sub_80C4E74
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C48BC
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C4960
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0
- bl sub_80C48BC
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x19
- movs r2, 0
- bl sub_80C4960
-_080C166C:
- ldr r0, _080C1690 @ =gUnknown_20399D8
- ldr r4, [r0]
- ldr r3, _080C1694 @ =0x00001cca
- adds r4, r3
- bl sub_80C0E34
- ldrb r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r1, r0
- beq _080C169C
- movs r0, 0x1
- bl sub_80C4324
- b _080C16A2
- .align 2, 0
-_080C168C: .4byte gUnknown_20399D4
-_080C1690: .4byte gUnknown_20399D8
-_080C1694: .4byte 0x00001cca
-_080C1698: .4byte gUnknown_8418EB0
-_080C169C:
- movs r0, 0
- bl sub_80C4324
-_080C16A2:
- movs r0, 0x1
- mov r1, sp
- bl sub_80C4CF0
- movs r0, 0
-_080C16AC:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80C1478
-
- thumb_func_start sub_80C16B8
-sub_80C16B8: @ 80C16B8
- ldr r1, _080C16C8 @ =gUnknown_20399D8
- ldr r1, [r1]
- ldr r2, _080C16CC @ =0x00001cd6
- adds r1, r2
- ldrh r1, [r1]
- adds r1, 0x10
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080C16C8: .4byte gUnknown_20399D8
-_080C16CC: .4byte 0x00001cd6
- thumb_func_end sub_80C16B8
-
- thumb_func_start sub_80C16D0
-sub_80C16D0: @ 80C16D0
- push {lr}
- ldr r0, _080C16EC @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r2, _080C16F0 @ =0x00001cc9
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080C1708
- cmp r0, 0x1
- bgt _080C16F4
- cmp r0, 0
- beq _080C16FA
- b _080C1732
- .align 2, 0
-_080C16EC: .4byte gUnknown_20399D8
-_080C16F0: .4byte 0x00001cc9
-_080C16F4:
- cmp r0, 0x2
- beq _080C171C
- b _080C1732
-_080C16FA:
- ldr r0, _080C1700 @ =gUnknown_83EF3C4
- ldr r2, _080C1704 @ =0x000014b0
- b _080C170C
- .align 2, 0
-_080C1700: .4byte gUnknown_83EF3C4
-_080C1704: .4byte 0x000014b0
-_080C1708:
- ldr r0, _080C1714 @ =gUnknown_83EF450
- ldr r2, _080C1718 @ =0x000018bc
-_080C170C:
- adds r1, r2
- bl LZ77UnCompWram
- b _080C1736
- .align 2, 0
-_080C1714: .4byte gUnknown_83EF450
-_080C1718: .4byte 0x000018bc
-_080C171C:
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x2
- bl sub_80C1754
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x3
- bl sub_80C1754
- b _080C1736
-_080C1732:
- movs r0, 0x1
- b _080C1746
-_080C1736:
- ldr r0, _080C174C @ =gUnknown_20399D8
- ldr r1, [r0]
- ldr r0, _080C1750 @ =0x00001cc9
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_080C1746:
- pop {r1}
- bx r1
- .align 2, 0
-_080C174C: .4byte gUnknown_20399D8
-_080C1750: .4byte 0x00001cc9
- thumb_func_end sub_80C16D0
-
- thumb_func_start sub_80C1754
-sub_80C1754: @ 80C1754
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- bl sub_80C176C
- pop {r0}
- bx r0
- thumb_func_end sub_80C1754
-
- thumb_func_start sub_80C176C
-sub_80C176C: @ 80C176C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r3, _080C1848 @ =gUnknown_20399D8
- mov r8, r3
- lsls r5, r0, 6
- adds r5, r0
- lsls r5, 2
- subs r5, r0
- lsls r5, 2
- ldr r4, _080C184C @ =0x000014b0
- adds r0, r5, r4
- ldr r3, [r3]
- adds r0, r3, r0
- str r0, [sp, 0x18]
- movs r4, 0x80
- lsls r4, 3
- add r0, sp, 0x18
- lsrs r6, r1, 16
- mov r9, r6
- orrs r1, r4
- str r1, [r0, 0x4]
- ldr r1, _080C1850 @ =gUnknown_83EF384
- str r1, [sp, 0x20]
- ldr r4, _080C1854 @ =0xffff0000
- add r6, sp, 0x20
- ldr r1, [r6, 0x4]
- ands r1, r4
- orrs r1, r2
- str r1, [r6, 0x4]
- mov r1, sp
- movs r4, 0
- mov r7, r9
- strh r7, [r1]
- strh r2, [r1, 0x2]
- ldr r1, _080C1858 @ =gUnknown_83F1B24
- str r1, [sp, 0x4]
- ldr r1, _080C185C @ =gUnknown_83F1B38
- str r1, [sp, 0x8]
- str r4, [sp, 0xC]
- ldr r1, _080C1860 @ =gDummySpriteAffineAnimTable
- str r1, [sp, 0x10]
- ldr r1, _080C1864 @ =sub_80C16B8
- str r1, [sp, 0x14]
- adds r3, r5
- ldr r4, _080C1868 @ =0x000018b4
- adds r1, r3, r4
- strh r7, [r1]
- ldr r1, _080C186C @ =0x000018b6
- adds r3, r1
- strh r2, [r3]
- bl LoadSpriteSheet
- adds r0, r6, 0
- bl LoadSpritePalette
- mov r3, r8
- ldr r2, [r3]
- adds r0, r2, r5
- adds r4, 0x4
- adds r0, r4
- movs r6, 0
- ldrsh r1, [r0, r6]
- ldr r7, _080C1870 @ =0x00001cce
- adds r0, r2, r7
- ldr r3, _080C1874 @ =0x00001cca
- adds r2, r3
- ldrb r2, [r2]
- lsls r2, 2
- ldrh r0, [r0]
- adds r2, r0
- lsls r2, 19
- asrs r2, 16
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r4, r8
- ldr r2, [r4]
- ldr r6, _080C1878 @ =0x000018b0
- adds r2, r6
- adds r2, r5
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080C187C @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1848: .4byte gUnknown_20399D8
-_080C184C: .4byte 0x000014b0
-_080C1850: .4byte gUnknown_83EF384
-_080C1854: .4byte 0xffff0000
-_080C1858: .4byte gUnknown_83F1B24
-_080C185C: .4byte gUnknown_83F1B38
-_080C1860: .4byte gDummySpriteAffineAnimTable
-_080C1864: .4byte sub_80C16B8
-_080C1868: .4byte 0x000018b4
-_080C186C: .4byte 0x000018b6
-_080C1870: .4byte 0x00001cce
-_080C1874: .4byte 0x00001cca
-_080C1878: .4byte 0x000018b0
-_080C187C: .4byte gSprites
- thumb_func_end sub_80C176C
-
- thumb_func_start sub_80C1880
-sub_80C1880: @ 80C1880
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _080C18D0 @ =gUnknown_20399D8
-_080C1886:
- ldr r1, [r6]
- lsls r0, r5, 6
- adds r0, r5
- lsls r0, 2
- subs r0, r5
- lsls r4, r0, 2
- ldr r0, _080C18D4 @ =0x000018b0
- adds r1, r0
- adds r1, r4
- ldr r0, [r1]
- cmp r0, 0
- beq _080C18BE
- bl DestroySprite
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _080C18D8 @ =0x000018b4
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _080C18DC @ =0x000018b6
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C18BE:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _080C1886
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C18D0: .4byte gUnknown_20399D8
-_080C18D4: .4byte 0x000018b0
-_080C18D8: .4byte 0x000018b4
-_080C18DC: .4byte 0x000018b6
- thumb_func_end sub_80C1880
-
- thumb_func_start sub_80C18E0
-sub_80C18E0: @ 80C18E0
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0
- ldr r3, _080C1904 @ =gUnknown_83F1B3C
- adds r5, r3, 0
- adds r5, 0x8
-_080C18EE:
- lsls r0, r2, 1
- adds r0, r2
- lsls r1, r0, 2
- adds r0, r1, r3
- ldrh r0, [r0]
- cmp r0, r4
- bne _080C1908
- adds r0, r1, r5
- ldr r0, [r0]
- b _080C1914
- .align 2, 0
-_080C1904: .4byte gUnknown_83F1B3C
-_080C1908:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x12
- bls _080C18EE
- ldr r0, _080C191C @ =gUnknown_8418EC3
-_080C1914:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080C191C: .4byte gUnknown_8418EC3
- thumb_func_end sub_80C18E0
-
- thumb_func_start sub_80C1920
-sub_80C1920: @ 80C1920
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0
- ldr r3, _080C1940 @ =gUnknown_83F1B3C
- adds r5, r3, 0x4
-_080C192C:
- lsls r0, r2, 1
- adds r0, r2
- lsls r1, r0, 2
- adds r0, r1, r3
- ldrh r0, [r0]
- cmp r0, r4
- bne _080C1944
- adds r0, r1, r5
- ldr r0, [r0]
- b _080C1950
- .align 2, 0
-_080C1940: .4byte gUnknown_83F1B3C
-_080C1944:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x12
- bls _080C192C
- ldr r0, _080C1958 @ =gUnknown_8418EC3
-_080C1950:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080C1958: .4byte gUnknown_8418EC3
- thumb_func_end sub_80C1920
-
- thumb_func_start sub_80C195C
-sub_80C195C: @ 80C195C
- push {r4-r6,lr}
- adds r6, r2, 0
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _080C19E0 @ =gUnknown_20399DC
- ldr r0, _080C19E4 @ =0x00003e28
- bl AllocZeroed
- str r0, [r4]
- bl sub_80C3580
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB8
- bne _080C197C
- movs r0, 0xBC
-_080C197C:
- bl sub_80F8544
- ldr r1, [r4]
- movs r2, 0xF5
- lsls r2, 6
- adds r1, r2
- str r0, [r1]
- cmp r0, 0
- bne _080C199E
- movs r0, 0x8A
- bl sub_80F8544
- ldr r1, [r4]
- movs r3, 0xF5
- lsls r3, 6
- adds r1, r3
- str r0, [r1]
-_080C199E:
- ldr r0, [r4]
- ldr r1, _080C19E8 @ =0x00003d48
- adds r0, r1
- movs r2, 0
- strb r2, [r0]
- ldr r0, [r4]
- ldr r3, _080C19EC @ =0x00003d4a
- adds r0, r3
- strb r2, [r0]
- ldr r0, [r4]
- subs r3, 0x6
- adds r1, r0, r3
- str r6, [r1]
- ldr r1, _080C19F0 @ =0x00003e14
- adds r0, r1
- strh r2, [r0]
- movs r0, 0
- bl sub_80C4AAC
- bl sub_80C4BE4
- bl sub_80C0CA0
- ldr r1, _080C19F4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080C19F8 @ =sub_80C1A94
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C19E0: .4byte gUnknown_20399DC
-_080C19E4: .4byte 0x00003e28
-_080C19E8: .4byte 0x00003d48
-_080C19EC: .4byte 0x00003d4a
-_080C19F0: .4byte 0x00003e14
-_080C19F4: .4byte gTasks
-_080C19F8: .4byte sub_80C1A94
- thumb_func_end sub_80C195C
-
- thumb_func_start sub_80C19FC
-sub_80C19FC: @ 80C19FC
- push {lr}
- ldr r0, _080C1A18 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r2, _080C1A1C @ =0x00003d4a
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080C1A3A
- cmp r0, 0x1
- bgt _080C1A20
- cmp r0, 0
- beq _080C1A2A
- b _080C1A72
- .align 2, 0
-_080C1A18: .4byte gUnknown_20399DC
-_080C1A1C: .4byte 0x00003d4a
-_080C1A20:
- cmp r0, 0x2
- beq _080C1A50
- cmp r0, 0x3
- beq _080C1A5E
- b _080C1A72
-_080C1A2A:
- movs r2, 0xF5
- lsls r2, 6
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- bl LZ77UnCompWram
- b _080C1A76
-_080C1A3A:
- movs r2, 0xF5
- lsls r2, 6
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- movs r2, 0xE1
- lsls r2, 6
- adds r1, r2
- bl LZ77UnCompWram
- b _080C1A76
-_080C1A50:
- movs r2, 0xE1
- lsls r2, 6
- movs r0, 0x2
- movs r3, 0
- bl LoadBgTiles
- b _080C1A76
-_080C1A5E:
- movs r2, 0xF5
- lsls r2, 6
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- movs r1, 0xD0
- movs r2, 0x60
- bl LoadPalette
- b _080C1A76
-_080C1A72:
- movs r0, 0x1
- b _080C1A86
-_080C1A76:
- ldr r0, _080C1A8C @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1A90 @ =0x00003d4a
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_080C1A86:
- pop {r1}
- bx r1
- .align 2, 0
-_080C1A8C: .4byte gUnknown_20399DC
-_080C1A90: .4byte 0x00003d4a
- thumb_func_end sub_80C19FC
-
- thumb_func_start sub_80C1A94
-sub_80C1A94: @ 80C1A94
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C1AB8 @ =gUnknown_20399DC
- ldr r0, [r1]
- ldr r3, _080C1ABC @ =0x00003d48
- adds r0, r3
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x9
- bls _080C1AAC
- b _080C1BD0
-_080C1AAC:
- lsls r0, 2
- ldr r1, _080C1AC0 @ =_080C1AC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1AB8: .4byte gUnknown_20399DC
-_080C1ABC: .4byte 0x00003d48
-_080C1AC0: .4byte _080C1AC4
- .align 2, 0
-_080C1AC4:
- .4byte _080C1AEC
- .4byte _080C1B04
- .4byte _080C1B12
- .4byte _080C1B34
- .4byte _080C1B54
- .4byte _080C1B5C
- .4byte _080C1B74
- .4byte _080C1B84
- .4byte _080C1B9C
- .4byte _080C1BBC
-_080C1AEC:
- bl sub_80C08E0
- ldr r0, _080C1AFC @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1B00 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1AFC: .4byte gUnknown_20399DC
-_080C1B00: .4byte 0x00003d48
-_080C1B04:
- bl sub_80C19FC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C1BD0
- b _080C1BC2
-_080C1B12:
- bl sub_80C1E94
- ldr r0, _080C1B28 @ =gUnknown_8418E9E
- bl sub_80C4E74
- ldr r0, _080C1B2C @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1B30 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1B28: .4byte gUnknown_8418E9E
-_080C1B2C: .4byte gUnknown_20399DC
-_080C1B30: .4byte 0x00003d48
-_080C1B34:
- ldr r1, [r4]
- movs r3, 0xE1
- lsls r3, 6
- adds r1, r3
- movs r0, 0x2
- bl sub_80C1E78
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- ldr r0, _080C1B50 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1B50: .4byte 0x00003d48
-_080C1B54:
- movs r0, 0x2
- bl ShowBg
- b _080C1BC2
-_080C1B5C:
- bl sub_80C08F4
- ldr r0, _080C1B6C @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1B70 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1B6C: .4byte gUnknown_20399DC
-_080C1B70: .4byte 0x00003d48
-_080C1B74:
- movs r0, 0
- bl sub_80C1F80
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C1BD0
- b _080C1BC2
-_080C1B84:
- ldr r0, _080C1B94 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _080C1B98 @ =sub_80C1BE0
- str r0, [r1]
- b _080C1BD0
- .align 2, 0
-_080C1B94: .4byte gTasks
-_080C1B98: .4byte sub_80C1BE0
-_080C1B9C:
- movs r0, 0x1
- bl sub_80C1F80
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C1BD0
- ldr r0, _080C1BB4 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1BB8 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1BB4: .4byte gUnknown_20399DC
-_080C1BB8: .4byte 0x00003d48
-_080C1BBC:
- adds r0, r2, 0
- bl sub_80C1E14
-_080C1BC2:
- ldr r0, _080C1BD8 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r3, _080C1BDC @ =0x00003d48
- adds r1, r3
-_080C1BCA:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080C1BD0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1BD8: .4byte gUnknown_20399DC
-_080C1BDC: .4byte 0x00003d48
- thumb_func_end sub_80C1A94
-
- thumb_func_start sub_80C1BE0
-sub_80C1BE0: @ 80C1BE0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C1C08 @ =gUnknown_20399DC
- ldr r0, [r1]
- ldr r3, _080C1C0C @ =0x00003d49
- adds r0, r3
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x4
- bls _080C1BFE
- b _080C1DF0
-_080C1BFE:
- lsls r0, 2
- ldr r1, _080C1C10 @ =_080C1C14
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1C08: .4byte gUnknown_20399DC
-_080C1C0C: .4byte 0x00003d49
-_080C1C10: .4byte _080C1C14
- .align 2, 0
-_080C1C14:
- .4byte _080C1C28
- .4byte _080C1C58
- .4byte _080C1C80
- .4byte _080C1CA8
- .4byte _080C1DA0
-_080C1C28:
- ldr r1, [r3]
- ldr r0, _080C1C48 @ =0x00003e0e
- adds r2, r1, r0
- ldr r0, _080C1C4C @ =0x00000133
- strh r0, [r2]
- ldr r3, _080C1C50 @ =0x00003e10
- adds r2, r1, r3
- subs r0, 0x33
- strh r0, [r2]
- ldr r0, _080C1C54 @ =0x00003e12
- adds r2, r1, r0
- movs r0, 0xF0
- strh r0, [r2]
- subs r3, 0xC7
- b _080C1DD6
- .align 2, 0
-_080C1C48: .4byte 0x00003e0e
-_080C1C4C: .4byte 0x00000133
-_080C1C50: .4byte 0x00003e10
-_080C1C54: .4byte 0x00003e12
-_080C1C58:
- ldr r0, [r3]
- ldr r1, _080C1C7C @ =0x00003d4c
- adds r0, r1
- ldrb r1, [r0]
- adds r2, r1, 0x1
- strb r2, [r0]
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x28
- bhi _080C1C6E
- b _080C1DFE
-_080C1C6E:
- ldr r0, [r3]
- ldr r1, _080C1C7C @ =0x00003d4c
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r1, [r3]
- b _080C1DD4
- .align 2, 0
-_080C1C7C: .4byte 0x00003d4c
-_080C1C80:
- movs r0, 0x2
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x2
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x2
- bl PutWindowTilemap
- ldr r0, _080C1CA0 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1CA4 @ =0x00003d49
- adds r1, r0
- b _080C1DD8
- .align 2, 0
-_080C1CA0: .4byte gUnknown_20399DC
-_080C1CA4: .4byte 0x00003d49
-_080C1CA8:
- ldr r7, _080C1D10 @ =gUnknown_20399DC
- ldr r2, [r7]
- ldr r1, _080C1D14 @ =0x00003d4c
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x19
- bls _080C1D24
- bl sub_80C3580
- lsls r0, 16
- lsrs r0, 16
- bl sub_80C1920
- ldr r1, _080C1D18 @ =gUnknown_83F1A94
- str r1, [sp]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0
- bl AddTextPrinterParameterized3
- bl sub_80C3580
- lsls r0, 16
- lsrs r0, 16
- bl sub_80C18E0
- ldr r1, _080C1D1C @ =gUnknown_83F1A90
- str r1, [sp]
- str r4, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0xE
- bl AddTextPrinterParameterized3
- movs r0, 0x2
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, [r7]
- ldr r3, _080C1D20 @ =0x00003d49
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C1D80
- .align 2, 0
-_080C1D10: .4byte gUnknown_20399DC
-_080C1D14: .4byte 0x00003d4c
-_080C1D18: .4byte gUnknown_83F1A94
-_080C1D1C: .4byte gUnknown_83F1A90
-_080C1D20: .4byte 0x00003d49
-_080C1D24:
- cmp r0, 0x14
- bls _080C1D80
- ldr r6, _080C1D88 @ =0x00003e0e
- adds r1, r2, r6
- ldrh r0, [r1]
- subs r0, 0x6
- strh r0, [r1]
- ldr r4, _080C1D8C @ =0x00003e10
- adds r1, r2, r4
- ldrh r0, [r1]
- subs r0, 0x5
- strh r0, [r1]
- ldr r0, _080C1D90 @ =0x00003e12
- mov r8, r0
- adds r1, r2, r0
- ldrh r0, [r1]
- subs r0, 0x5
- strh r0, [r1]
- movs r1, 0xF5
- lsls r1, 6
- adds r0, r2, r1
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- ldr r5, _080C1D94 @ =0x00003d4e
- adds r1, r2, r5
- movs r2, 0x30
- bl CpuSet
- ldr r1, [r7]
- adds r0, r1, r5
- adds r6, r1, r6
- ldrh r2, [r6]
- adds r4, r1, r4
- ldrh r3, [r4]
- add r1, r8
- ldrh r1, [r1]
- str r1, [sp]
- movs r1, 0x30
- bl TintPalette_CustomTone
- ldr r0, [r7]
- adds r0, r5
- movs r1, 0xD0
- movs r2, 0x60
- bl LoadPalette
-_080C1D80:
- ldr r0, _080C1D98 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r3, _080C1D9C @ =0x00003d4c
- b _080C1DD6
- .align 2, 0
-_080C1D88: .4byte 0x00003e0e
-_080C1D8C: .4byte 0x00003e10
-_080C1D90: .4byte 0x00003e12
-_080C1D94: .4byte 0x00003d4e
-_080C1D98: .4byte gUnknown_20399DC
-_080C1D9C: .4byte 0x00003d4c
-_080C1DA0:
- ldr r0, _080C1DE0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080C1DB4
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080C1DFE
-_080C1DB4:
- movs r0, 0x2
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x2
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r2, _080C1DE4 @ =gUnknown_20399DC
- ldr r1, [r2]
- ldr r0, _080C1DE8 @ =0x00003d48
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r2]
-_080C1DD4:
- ldr r3, _080C1DEC @ =0x00003d49
-_080C1DD6:
- adds r1, r3
-_080C1DD8:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C1DFE
- .align 2, 0
-_080C1DE0: .4byte gMain
-_080C1DE4: .4byte gUnknown_20399DC
-_080C1DE8: .4byte 0x00003d48
-_080C1DEC: .4byte 0x00003d49
-_080C1DF0:
- ldr r0, _080C1E0C @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _080C1E10 @ =sub_80C1A94
- str r0, [r1]
-_080C1DFE:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1E0C: .4byte gTasks
-_080C1E10: .4byte sub_80C1A94
- thumb_func_end sub_80C1BE0
-
- thumb_func_start sub_80C1E14
-sub_80C1E14: @ 80C1E14
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C1E68 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r4, _080C1E6C @ =gUnknown_20399DC
- ldr r0, [r4]
- ldr r2, _080C1E70 @ =0x00003d44
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- movs r0, 0x2
- bl HideBg
- movs r0, 0
- bl sub_80C4B30
- bl sub_80C0B18
- bl sub_80C0BB0
- bl sub_80C0AB8
- bl sub_80C0B9C
- ldr r0, _080C1E74 @ =gUnknown_8418E8D
- bl sub_80C4E74
- ldr r0, [r4]
- cmp r0, 0
- beq _080C1E60
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C1E60:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1E68: .4byte gTasks
-_080C1E6C: .4byte gUnknown_20399DC
-_080C1E70: .4byte 0x00003d44
-_080C1E74: .4byte gUnknown_8418E8D
- thumb_func_end sub_80C1E14
-
- thumb_func_start sub_80C1E78
-sub_80C1E78: @ 80C1E78
- push {lr}
- sub sp, 0x8
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_80C1E78
-
- thumb_func_start sub_80C1E94
-sub_80C1E94: @ 80C1E94
- push {r4-r6,lr}
- bl sub_80C4BE4
- movs r0, 0
- movs r1, 0x11
- movs r2, 0xC0
- bl sub_80C4C2C
- ldr r5, _080C1F58 @ =gUnknown_20399DC
- ldr r0, [r5]
- ldr r1, _080C1F5C @ =0x00003e14
- adds r0, r1
- ldrh r0, [r0]
- bl sub_80C4C48
- movs r0, 0
- movs r1, 0xD
- bl sub_80C4C74
- movs r0, 0x3B
- bl sub_80C4C88
- movs r0, 0x1
- movs r1, 0
- bl sub_80C4C9C
- bl sub_80C3508
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl sub_80C3514
- lsls r0, 16
- ldr r5, [r5]
- lsls r4, 3
- adds r4, 0x20
- ldr r2, _080C1F60 @ =0x00003e16
- adds r1, r5, r2
- strh r4, [r1]
- lsrs r0, 13
- adds r0, 0x18
- ldr r3, _080C1F64 @ =0x00003e18
- adds r2, r5, r3
- strh r0, [r2]
- ldrh r0, [r1]
- adds r0, 0x8
- ldr r4, _080C1F68 @ =0x00003e1a
- adds r3, r5, r4
- strh r0, [r3]
- ldrh r0, [r2]
- adds r0, 0x8
- ldr r6, _080C1F6C @ =0x00003e1c
- adds r4, r5, r6
- strh r0, [r4]
- ldrh r1, [r1]
- movs r0, 0x10
- subs r0, r1
- cmp r0, 0
- bge _080C1F0E
- adds r0, 0x7
-_080C1F0E:
- asrs r1, r0, 3
- ldr r6, _080C1F70 @ =0x00003e1e
- adds r0, r5, r6
- strh r1, [r0]
- ldrh r1, [r2]
- movs r0, 0x20
- subs r0, r1
- cmp r0, 0
- bge _080C1F22
- adds r0, 0x7
-_080C1F22:
- asrs r1, r0, 3
- ldr r2, _080C1F74 @ =0x00003e20
- adds r0, r5, r2
- strh r1, [r0]
- ldrh r1, [r3]
- movs r0, 0xE0
- subs r0, r1
- cmp r0, 0
- bge _080C1F36
- adds r0, 0x7
-_080C1F36:
- asrs r1, r0, 3
- ldr r3, _080C1F78 @ =0x00003e22
- adds r0, r5, r3
- strh r1, [r0]
- ldrh r1, [r4]
- movs r0, 0x88
- subs r0, r1
- cmp r0, 0
- bge _080C1F4A
- adds r0, 0x7
-_080C1F4A:
- asrs r1, r0, 3
- ldr r4, _080C1F7C @ =0x00003e24
- adds r0, r5, r4
- strh r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1F58: .4byte gUnknown_20399DC
-_080C1F5C: .4byte 0x00003e14
-_080C1F60: .4byte 0x00003e16
-_080C1F64: .4byte 0x00003e18
-_080C1F68: .4byte 0x00003e1a
-_080C1F6C: .4byte 0x00003e1c
-_080C1F70: .4byte 0x00003e1e
-_080C1F74: .4byte 0x00003e20
-_080C1F78: .4byte 0x00003e22
-_080C1F7C: .4byte 0x00003e24
- thumb_func_end sub_80C1E94
-
- thumb_func_start sub_80C1F80
-sub_80C1F80: @ 80C1F80
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- cmp r0, 0
- bne _080C2014
- ldr r1, _080C1FF0 @ =gUnknown_20399DC
- ldr r2, [r1]
- ldr r0, _080C1FF4 @ =0x00003d4b
- adds r3, r2, r0
- ldrb r0, [r3]
- adds r6, r1, 0
- cmp r0, 0x7
- bhi _080C2024
- ldr r4, _080C1FF8 @ =0x00003e16
- adds r1, r2, r4
- adds r4, 0x8
- adds r0, r2, r4
- ldrh r0, [r0]
- ldrh r4, [r1]
- adds r0, r4
- strh r0, [r1]
- ldr r0, _080C1FFC @ =0x00003e18
- adds r1, r2, r0
- ldr r4, _080C2000 @ =0x00003e20
- adds r0, r2, r4
- ldrh r0, [r0]
- ldrh r4, [r1]
- adds r0, r4
- strh r0, [r1]
- ldr r0, _080C2004 @ =0x00003e1a
- adds r1, r2, r0
- ldr r4, _080C2008 @ =0x00003e22
- adds r0, r2, r4
- ldrh r0, [r0]
- ldrh r4, [r1]
- adds r0, r4
- strh r0, [r1]
- ldr r0, _080C200C @ =0x00003e1c
- adds r1, r2, r0
- ldr r4, _080C2010 @ =0x00003e24
- adds r0, r2, r4
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldr r0, [r6]
- subs r4, 0x10
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, 0x5
- bhi _080C2086
- adds r0, 0x1
- b _080C2084
- .align 2, 0
-_080C1FF0: .4byte gUnknown_20399DC
-_080C1FF4: .4byte 0x00003d4b
-_080C1FF8: .4byte 0x00003e16
-_080C1FFC: .4byte 0x00003e18
-_080C2000: .4byte 0x00003e20
-_080C2004: .4byte 0x00003e1a
-_080C2008: .4byte 0x00003e22
-_080C200C: .4byte 0x00003e1c
-_080C2010: .4byte 0x00003e24
-_080C2014:
- ldr r1, _080C2028 @ =gUnknown_20399DC
- ldr r3, [r1]
- ldr r0, _080C202C @ =0x00003d4b
- adds r5, r3, r0
- ldrb r0, [r5]
- adds r6, r1, 0
- cmp r0, 0
- bne _080C2030
-_080C2024:
- movs r0, 0x1
- b _080C20DE
- .align 2, 0
-_080C2028: .4byte gUnknown_20399DC
-_080C202C: .4byte 0x00003d4b
-_080C2030:
- ldr r1, _080C20E8 @ =0x00003e16
- adds r2, r3, r1
- ldr r4, _080C20EC @ =0x00003e1e
- adds r1, r3, r4
- ldrh r0, [r2]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2]
- ldr r0, _080C20F0 @ =0x00003e18
- adds r2, r3, r0
- adds r4, 0x2
- adds r1, r3, r4
- ldrh r0, [r2]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2]
- ldr r0, _080C20F4 @ =0x00003e1a
- adds r2, r3, r0
- adds r4, 0x2
- adds r1, r3, r4
- ldrh r0, [r2]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2]
- ldr r0, _080C20F8 @ =0x00003e1c
- adds r2, r3, r0
- adds r4, 0x2
- adds r1, r3, r4
- ldrh r0, [r2]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2]
- ldrb r0, [r5]
- subs r0, 0x1
- strb r0, [r5]
- ldr r0, [r6]
- ldr r2, _080C20FC @ =0x00003e14
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0
- beq _080C2086
- subs r0, 0x1
-_080C2084:
- strh r0, [r1]
-_080C2086:
- ldr r4, [r6]
- ldr r1, _080C20E8 @ =0x00003e16
- adds r0, r4, r1
- ldrh r0, [r0]
- ldr r5, _080C2100 @ =0xffff0000
- ldr r2, [sp]
- ands r2, r5
- orrs r2, r0
- str r2, [sp]
- adds r1, 0x2
- adds r0, r4, r1
- ldrh r1, [r0]
- lsls r1, 16
- ldr r3, _080C2104 @ =0x0000ffff
- adds r0, r3, 0
- ands r0, r2
- orrs r0, r1
- str r0, [sp]
- ldr r2, _080C20F4 @ =0x00003e1a
- adds r4, r2
- ldrh r0, [r4]
- ldr r1, [sp, 0x4]
- ands r1, r5
- orrs r1, r0
- str r1, [sp, 0x4]
- ldr r0, [r6]
- ldr r4, _080C20F8 @ =0x00003e1c
- adds r0, r4
- ldrh r0, [r0]
- lsls r0, 16
- ands r3, r1
- orrs r3, r0
- str r3, [sp, 0x4]
- movs r0, 0x1
- mov r1, sp
- bl sub_80C4CF0
- ldr r0, [r6]
- ldr r1, _080C20FC @ =0x00003e14
- adds r0, r1
- ldrh r0, [r0]
- bl sub_80C4C48
- movs r0, 0
-_080C20DE:
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080C20E8: .4byte 0x00003e16
-_080C20EC: .4byte 0x00003e1e
-_080C20F0: .4byte 0x00003e18
-_080C20F4: .4byte 0x00003e1a
-_080C20F8: .4byte 0x00003e1c
-_080C20FC: .4byte 0x00003e14
-_080C2100: .4byte 0xffff0000
-_080C2104: .4byte 0x0000ffff
- thumb_func_end sub_80C1F80
-
- thumb_func_start nullsub_63
-nullsub_63: @ 80C2108
- bx lr
- thumb_func_end nullsub_63
-
- thumb_func_start sub_80C210C
-sub_80C210C: @ 80C210C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- adds r5, r0, 0
- lsls r5, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _080C21E0 @ =gUnknown_20399E0
- mov r9, r0
- ldr r6, [r0]
- lsrs r5, 22
- adds r6, r5
- ldr r0, [r6]
- str r0, [sp, 0x18]
- movs r3, 0x80
- lsls r3, 3
- mov r10, r3
- add r0, sp, 0x18
- lsls r3, r1, 16
- mov r4, r10
- orrs r3, r4
- str r3, [r0, 0x4]
- ldr r3, _080C21E4 @ =gUnknown_83EF3A4
- str r3, [sp, 0x20]
- ldr r4, _080C21E8 @ =0xffff0000
- add r7, sp, 0x20
- mov r8, r7
- ldr r3, [r7, 0x4]
- ands r3, r4
- orrs r3, r2
- str r3, [r7, 0x4]
- mov r3, sp
- movs r4, 0
- strh r1, [r3]
- strh r2, [r3, 0x2]
- ldr r3, _080C21EC @ =gUnknown_83F1C20
- str r3, [sp, 0x4]
- ldr r3, _080C21F0 @ =gUnknown_83F1C30
- str r3, [sp, 0x8]
- str r4, [sp, 0xC]
- ldr r3, _080C21F4 @ =gDummySpriteAffineAnimTable
- str r3, [sp, 0x10]
- ldr r3, _080C21F8 @ =nullsub_63
- str r3, [sp, 0x14]
- ldr r3, [r6]
- movs r4, 0x81
- lsls r4, 3
- adds r3, r4
- strh r1, [r3]
- ldr r1, [r6]
- ldr r7, _080C21FC @ =0x0000040a
- adds r1, r7
- strh r2, [r1]
- bl LoadSpriteSheet
- mov r0, r8
- bl LoadSpritePalette
- mov r1, r9
- ldr r0, [r1]
- adds r0, r5
- ldr r0, [r0]
- ldr r2, _080C2200 @ =0x00000404
- adds r1, r0, r2
- movs r3, 0
- ldrsh r1, [r1, r3]
- subs r4, 0x2
- adds r0, r4
- movs r7, 0
- ldrsh r2, [r0, r7]
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r2, r9
- ldr r1, [r2]
- adds r1, r5
- ldr r2, [r1]
- add r2, r10
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080C2204 @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C21E0: .4byte gUnknown_20399E0
-_080C21E4: .4byte gUnknown_83EF3A4
-_080C21E8: .4byte 0xffff0000
-_080C21EC: .4byte gUnknown_83F1C20
-_080C21F0: .4byte gUnknown_83F1C30
-_080C21F4: .4byte gDummySpriteAffineAnimTable
-_080C21F8: .4byte nullsub_63
-_080C21FC: .4byte 0x0000040a
-_080C2200: .4byte 0x00000404
-_080C2204: .4byte gSprites
- thumb_func_end sub_80C210C
-
- thumb_func_start sub_80C2208
-sub_80C2208: @ 80C2208
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r4, _080C22A4 @ =gUnknown_20399E0
- ldr r0, _080C22A8 @ =0x00000cd4
- bl AllocZeroed
- str r0, [r4]
- movs r6, 0
-_080C2224:
- ldr r0, _080C22AC @ =0x0000040c
- bl AllocZeroed
- adds r5, r0, 0
- ldr r7, _080C22A4 @ =gUnknown_20399E0
- ldr r4, [r7]
- lsls r0, r6, 2
- adds r4, r0
- str r5, [r4]
- adds r0, r6, 0
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 19
- adds r0, 0x68
- ldr r1, _080C22B0 @ =0x00000404
- adds r5, r1
- strh r0, [r5]
- ldr r4, [r4]
- adds r0, r6, 0
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 18
- adds r0, 0x28
- ldr r2, _080C22B4 @ =0x00000406
- adds r4, r2
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x5
- bls _080C2224
- movs r0, 0
- bl sub_80C4AAC
- bl sub_80C4BE4
- bl sub_80C24BC
- movs r0, 0x1
- bl sub_80C0A88
- ldr r0, [r7]
- ldr r1, _080C22B8 @ =0x00000cc8
- adds r0, r1
- mov r2, r9
- str r2, [r0]
- ldr r1, _080C22BC @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _080C22C0 @ =sub_80C267C
- str r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C22A4: .4byte gUnknown_20399E0
-_080C22A8: .4byte 0x00000cd4
-_080C22AC: .4byte 0x0000040c
-_080C22B0: .4byte 0x00000404
-_080C22B4: .4byte 0x00000406
-_080C22B8: .4byte 0x00000cc8
-_080C22BC: .4byte gTasks
-_080C22C0: .4byte sub_80C267C
- thumb_func_end sub_80C2208
-
- thumb_func_start sub_80C22C4
-sub_80C22C4: @ 80C22C4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r2, 0x6
- bne _080C2310
- movs r3, 0
- ldr r7, _080C230C @ =gUnknown_20399E0
- movs r6, 0x80
- lsls r6, 3
- movs r1, 0x1
- adds r0, r4, 0
- ands r0, r1
- lsls r4, r0, 2
- movs r5, 0x5
- negs r5, r5
-_080C22E6:
- ldr r0, [r7]
- lsls r1, r3, 2
- adds r0, r1
- ldr r0, [r0]
- adds r0, r6
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r5, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- bls _080C22E6
- b _080C2338
- .align 2, 0
-_080C230C: .4byte gUnknown_20399E0
-_080C2310:
- ldr r0, _080C2340 @ =gUnknown_20399E0
- ldr r0, [r0]
- lsls r1, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- adds r0, r1
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080C2338:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C2340: .4byte gUnknown_20399E0
- thumb_func_end sub_80C22C4
-
- thumb_func_start sub_80C2344
-sub_80C2344: @ 80C2344
- push {lr}
- ldr r0, _080C2360 @ =gUnknown_20399E0
- ldr r0, [r0]
- ldr r1, _080C2364 @ =0x00000ccd
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _080C2356
- b _080C249C
-_080C2356:
- lsls r0, 2
- ldr r1, _080C2368 @ =_080C236C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C2360: .4byte gUnknown_20399E0
-_080C2364: .4byte 0x00000ccd
-_080C2368: .4byte _080C236C
- .align 2, 0
-_080C236C:
- .4byte _080C2390
- .4byte _080C23B0
- .4byte _080C23D0
- .4byte _080C23F0
- .4byte _080C2410
- .4byte _080C2430
- .4byte _080C2450
- .4byte _080C2468
- .4byte _080C2484
-_080C2390:
- ldr r0, _080C23A8 @ =gUnknown_83F12CC
- ldr r1, _080C23AC @ =gUnknown_20399E0
- ldr r1, [r1]
- ldr r1, [r1]
- bl LZ77UnCompWram
- movs r0, 0
- movs r1, 0x4
- movs r2, 0x4
- bl sub_80C210C
- b _080C24A0
- .align 2, 0
-_080C23A8: .4byte gUnknown_83F12CC
-_080C23AC: .4byte gUnknown_20399E0
-_080C23B0:
- ldr r0, _080C23C8 @ =gUnknown_83F1550
- ldr r1, _080C23CC @ =gUnknown_20399E0
- ldr r1, [r1]
- ldr r1, [r1, 0x4]
- bl LZ77UnCompWram
- movs r0, 0x1
- movs r1, 0x5
- movs r2, 0x5
- bl sub_80C210C
- b _080C24A0
- .align 2, 0
-_080C23C8: .4byte gUnknown_83F1550
-_080C23CC: .4byte gUnknown_20399E0
-_080C23D0:
- ldr r0, _080C23E8 @ =gUnknown_83F1738
- ldr r1, _080C23EC @ =gUnknown_20399E0
- ldr r1, [r1]
- ldr r1, [r1, 0x8]
- bl LZ77UnCompWram
- movs r0, 0x2
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80C210C
- b _080C24A0
- .align 2, 0
-_080C23E8: .4byte gUnknown_83F1738
-_080C23EC: .4byte gUnknown_20399E0
-_080C23F0:
- ldr r0, _080C2408 @ =gUnknown_83F13EC
- ldr r1, _080C240C @ =gUnknown_20399E0
- ldr r1, [r1]
- ldr r1, [r1, 0xC]
- bl LZ77UnCompWram
- movs r0, 0x3
- movs r1, 0x7
- movs r2, 0x7
- bl sub_80C210C
- b _080C24A0
- .align 2, 0
-_080C2408: .4byte gUnknown_83F13EC
-_080C240C: .4byte gUnknown_20399E0
-_080C2410:
- ldr r0, _080C2428 @ =gUnknown_83F1640
- ldr r1, _080C242C @ =gUnknown_20399E0
- ldr r1, [r1]
- ldr r1, [r1, 0x10]
- bl LZ77UnCompWram
- movs r0, 0x4
- movs r1, 0x8
- movs r2, 0x8
- bl sub_80C210C
- b _080C24A0
- .align 2, 0
-_080C2428: .4byte gUnknown_83F1640
-_080C242C: .4byte gUnknown_20399E0
-_080C2430:
- ldr r0, _080C2448 @ =gUnknown_83F1804
- ldr r1, _080C244C @ =gUnknown_20399E0
- ldr r1, [r1]
- ldr r1, [r1, 0x14]
- bl LZ77UnCompWram
- movs r0, 0x5
- movs r1, 0x9
- movs r2, 0x9
- bl sub_80C210C
- b _080C24A0
- .align 2, 0
-_080C2448: .4byte gUnknown_83F1804
-_080C244C: .4byte gUnknown_20399E0
-_080C2450:
- ldr r0, _080C2460 @ =gUnknown_83F0330
- ldr r1, _080C2464 @ =gUnknown_20399E0
- ldr r1, [r1]
- adds r1, 0x18
- bl LZ77UnCompWram
- b _080C24A0
- .align 2, 0
-_080C2460: .4byte gUnknown_83F0330
-_080C2464: .4byte gUnknown_20399E0
-_080C2468:
- ldr r0, _080C2478 @ =gUnknown_83F0E0C
- ldr r1, _080C247C @ =gUnknown_20399E0
- ldr r1, [r1]
- ldr r2, _080C2480 @ =0x00000818
- adds r1, r2
- bl LZ77UnCompWram
- b _080C24A0
- .align 2, 0
-_080C2478: .4byte gUnknown_83F0E0C
-_080C247C: .4byte gUnknown_20399E0
-_080C2480: .4byte 0x00000818
-_080C2484:
- ldr r0, _080C2498 @ =gUnknown_20399E0
- ldr r1, [r0]
- adds r1, 0x18
- movs r2, 0x80
- lsls r2, 4
- movs r0, 0x1
- movs r3, 0
- bl LoadBgTiles
- b _080C24A0
- .align 2, 0
-_080C2498: .4byte gUnknown_20399E0
-_080C249C:
- movs r0, 0x1
- b _080C24B0
-_080C24A0:
- ldr r0, _080C24B4 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C24B8 @ =0x00000ccd
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_080C24B0:
- pop {r1}
- bx r1
- .align 2, 0
-_080C24B4: .4byte gUnknown_20399E0
-_080C24B8: .4byte 0x00000ccd
- thumb_func_end sub_80C2344
-
- thumb_func_start sub_80C24BC
-sub_80C24BC: @ 80C24BC
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _080C252C @ =gUnknown_20399E0
- ldr r3, [r0]
- ldr r0, [r3]
- ldr r2, _080C2530 @ =0x00000404
- adds r0, r2
- ldrh r0, [r0]
- adds r0, 0x8
- lsls r0, 16
- ldr r4, _080C2534 @ =0xffff0000
- ldr r5, _080C2538 @ =0x0000ffff
- lsrs r0, 16
- movs r1, 0x80
- lsls r1, 13
- orrs r0, r1
- str r0, [sp]
- ldr r0, [r3, 0xC]
- adds r0, r2
- ldrh r1, [r0]
- subs r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x4]
- ands r0, r4
- orrs r0, r1
- ands r0, r5
- movs r1, 0xA0
- lsls r1, 16
- orrs r0, r1
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_80C4C2C
- movs r0, 0x12
- movs r1, 0
- bl sub_80C4C74
- movs r0, 0x10
- bl sub_80C4C88
- movs r0, 0
- mov r1, sp
- bl sub_80C4CF0
- movs r0, 0
- movs r1, 0
- bl sub_80C4C9C
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C252C: .4byte gUnknown_20399E0
-_080C2530: .4byte 0x00000404
-_080C2534: .4byte 0xffff0000
-_080C2538: .4byte 0x0000ffff
- thumb_func_end sub_80C24BC
-
- thumb_func_start sub_80C253C
-sub_80C253C: @ 80C253C
- push {lr}
- sub sp, 0x8
- ldr r0, _080C258C @ =gUnknown_83F1C34
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- bl sub_80C4BE4
- movs r0, 0x2
- movs r1, 0x29
- movs r2, 0x80
- bl sub_80C4C2C
- ldr r0, _080C2590 @ =gUnknown_20399E0
- ldr r0, [r0]
- movs r1, 0xCD
- lsls r1, 4
- adds r0, r1
- ldrb r0, [r0]
- bl sub_80C4C48
- movs r0, 0x37
- movs r1, 0
- bl sub_80C4C74
- movs r0, 0x12
- bl sub_80C4C88
- movs r0, 0
- mov r1, sp
- bl sub_80C4CF0
- movs r0, 0
- movs r1, 0
- bl sub_80C4C9C
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_080C258C: .4byte gUnknown_83F1C34
-_080C2590: .4byte gUnknown_20399E0
- thumb_func_end sub_80C253C
-
- thumb_func_start sub_80C2594
-sub_80C2594: @ 80C2594
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C25B0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080C25B4 @ =gUnknown_20399E0
- ldr r0, [r0]
- ldr r2, _080C25B8 @ =0x00000cc8
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080C25B0: .4byte gTasks
-_080C25B4: .4byte gUnknown_20399E0
-_080C25B8: .4byte 0x00000cc8
- thumb_func_end sub_80C2594
-
- thumb_func_start sub_80C25BC
-sub_80C25BC: @ 80C25BC
- push {r4-r6,lr}
- bl sub_80C2604
- movs r5, 0
- ldr r6, _080C2600 @ =gUnknown_20399E0
-_080C25C6:
- ldr r0, [r6]
- lsls r4, r5, 2
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080C25DE
- bl Free
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_080C25DE:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _080C25C6
- ldr r4, _080C2600 @ =gUnknown_20399E0
- ldr r0, [r4]
- cmp r0, 0
- beq _080C25F8
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C25F8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C2600: .4byte gUnknown_20399E0
- thumb_func_end sub_80C25BC
-
- thumb_func_start sub_80C2604
-sub_80C2604: @ 80C2604
- push {r4-r7,lr}
- movs r5, 0
- ldr r7, _080C2670 @ =gUnknown_20399E0
- movs r6, 0x80
- lsls r6, 3
-_080C260E:
- ldr r2, [r7]
- lsls r4, r5, 2
- adds r2, r4
- ldr r1, [r2]
- adds r0, r1, r6
- ldr r0, [r0]
- ldrh r0, [r0, 0x20]
- ldr r3, _080C2674 @ =0x00000404
- adds r1, r3
- strh r0, [r1]
- ldr r1, [r2]
- adds r0, r1, r6
- ldr r0, [r0]
- ldrh r0, [r0, 0x22]
- adds r3, 0x2
- adds r1, r3
- strh r0, [r1]
- ldr r0, [r2]
- adds r0, r6
- ldr r0, [r0]
- cmp r0, 0
- beq _080C2660
- bl DestroySprite
- ldr r0, [r7]
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0x81
- lsls r1, 3
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r7]
- adds r0, r4
- ldr r0, [r0]
- ldr r3, _080C2678 @ =0x0000040a
- adds r0, r3
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C2660:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _080C260E
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C2670: .4byte gUnknown_20399E0
-_080C2674: .4byte 0x00000404
-_080C2678: .4byte 0x0000040a
- thumb_func_end sub_80C2604
-
- thumb_func_start sub_80C267C
-sub_80C267C: @ 80C267C
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080C26A0 @ =gUnknown_20399E0
- ldr r0, [r1]
- ldr r2, _080C26A4 @ =0x00000ccc
- adds r0, r2
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0xD
- bls _080C2696
- b _080C2990
-_080C2696:
- lsls r0, 2
- ldr r1, _080C26A8 @ =_080C26AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C26A0: .4byte gUnknown_20399E0
-_080C26A4: .4byte 0x00000ccc
-_080C26A8: .4byte _080C26AC
- .align 2, 0
-_080C26AC:
- .4byte _080C26E4
- .4byte _080C26FC
- .4byte _080C270C
- .4byte _080C272C
- .4byte _080C2768
- .4byte _080C2788
- .4byte _080C27B4
- .4byte _080C27C4
- .4byte _080C27E4
- .4byte _080C281E
- .4byte _080C2868
- .4byte _080C28A4
- .4byte _080C2928
- .4byte _080C296C
-_080C26E4:
- bl sub_80C08E0
- ldr r0, _080C26F4 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C26F8 @ =0x00000ccc
- adds r1, r0
- b _080C297E
- .align 2, 0
-_080C26F4: .4byte gUnknown_20399E0
-_080C26F8: .4byte 0x00000ccc
-_080C26FC:
- bl sub_80C2344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C270A
- b _080C299A
-_080C270A:
- b _080C2976
-_080C270C:
- ldr r1, [r4]
- ldr r0, _080C2728 @ =0x00000818
- adds r1, r0
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect
- ldr r1, [r4]
- b _080C297A
- .align 2, 0
-_080C2728: .4byte 0x00000818
-_080C272C:
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_80C08F4
- ldr r0, _080C2760 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2764 @ =0x00000ccc
- adds r1, r0
- b _080C297E
- .align 2, 0
-_080C2760: .4byte gUnknown_20399E0
-_080C2764: .4byte 0x00000ccc
-_080C2768:
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x6
- movs r1, 0
- bl sub_80C22C4
- bl sub_80C2B48
- b _080C2976
-_080C2788:
- ldr r0, _080C27AC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C2796
- b _080C299A
-_080C2796:
- ldr r1, [r4]
- ldr r0, _080C27B0 @ =0x00000ccc
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0xF4
- bl PlaySE
- b _080C299A
- .align 2, 0
-_080C27AC: .4byte gPaletteFade
-_080C27B0: .4byte 0x00000ccc
-_080C27B4:
- bl sub_80C29A4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C27C2
- b _080C299A
-_080C27C2:
- b _080C2976
-_080C27C4:
- movs r0, 0
- bl sub_80C4324
- movs r0, 0
- bl sub_80C3154
- ldr r0, _080C27DC @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C27E0 @ =0x00000ccc
- adds r1, r0
- b _080C297E
- .align 2, 0
-_080C27DC: .4byte gUnknown_20399E0
-_080C27E0: .4byte 0x00000ccc
-_080C27E4:
- ldr r0, [r4]
- movs r1, 0xCD
- lsls r1, 4
- adds r0, r1
- movs r1, 0xF
- strb r1, [r0]
- bl sub_80C253C
- movs r0, 0
- bl sub_80C0A88
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0
- bl sub_80C48BC
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0
- bl sub_80C4960
- ldr r1, [r4]
- b _080C297A
-_080C281E:
- ldr r0, _080C283C @ =gUnknown_8418EB5
- bl sub_80C4E18
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080C2844
- ldr r0, _080C2840 @ =gUnknown_8418E8B
- bl sub_80C4E74
- b _080C284A
- .align 2, 0
-_080C283C: .4byte gUnknown_8418EB5
-_080C2840: .4byte gUnknown_8418E8B
-_080C2844:
- ldr r0, _080C285C @ =gUnknown_8418E8D
- bl sub_80C4E74
-_080C284A:
- movs r0, 0
- bl sub_80C4ED0
- ldr r0, _080C2860 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2864 @ =0x00000ccc
- adds r1, r0
- b _080C297E
- .align 2, 0
-_080C285C: .4byte gUnknown_8418E8D
-_080C2860: .4byte gUnknown_20399E0
-_080C2864: .4byte 0x00000ccc
-_080C2868:
- ldr r4, _080C28A0 @ =gUnknown_83EF23C + 0x1E
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x20
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x40
- movs r2, 0x2
- bl LoadPalette
- b _080C2976
- .align 2, 0
-_080C28A0: .4byte gUnknown_83EF23C + 0x1E
-_080C28A4:
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0x2
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x1
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x3E
- movs r2, 0x1C
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x3F
- movs r2, 0x1D
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r0, 0x1A
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x3D
- movs r2, 0x2
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0xF4
- bl m4aSongNumStop
- movs r0, 0x2A
- bl PlaySE
- ldr r0, _080C2920 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2924 @ =0x00000ccc
- adds r1, r0
- b _080C297E
- .align 2, 0
-_080C2920: .4byte gUnknown_20399E0
-_080C2924: .4byte 0x00000ccc
-_080C2928:
- ldr r0, [r4]
- movs r2, 0xCD
- lsls r2, 4
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0x2
- bne _080C2958
- movs r0, 0x6
- movs r1, 0x1
- bl sub_80C22C4
- ldr r1, [r4]
- ldr r0, _080C2954 @ =0x00000ccc
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- bl sub_80C4C48
- b _080C299A
- .align 2, 0
-_080C2954: .4byte 0x00000ccc
-_080C2958:
- subs r0, 0x1
- strb r0, [r1]
- ldr r0, [r4]
- movs r1, 0xCD
- lsls r1, 4
- adds r0, r1
- ldrb r0, [r0]
- bl sub_80C4C48
- b _080C299A
-_080C296C:
- movs r0, 0
- bl sub_80C4B30
- bl sub_80C0BB0
-_080C2976:
- ldr r0, _080C2988 @ =gUnknown_20399E0
- ldr r1, [r0]
-_080C297A:
- ldr r2, _080C298C @ =0x00000ccc
- adds r1, r2
-_080C297E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C299A
- .align 2, 0
-_080C2988: .4byte gUnknown_20399E0
-_080C298C: .4byte 0x00000ccc
-_080C2990:
- bl sub_80C2604
- adds r0, r5, 0
- bl sub_80C2594
-_080C299A:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80C267C
-
- thumb_func_start sub_80C29A4
-sub_80C29A4: @ 80C29A4
- push {r4,r5,lr}
- bl sub_80C2B48
- ldr r0, _080C29C8 @ =gUnknown_20399E0
- ldr r2, [r0]
- ldr r0, [r2]
- movs r4, 0x80
- lsls r4, 3
- adds r0, r4
- ldr r1, [r0]
- ldrh r3, [r1, 0x20]
- movs r5, 0x20
- ldrsh r0, [r1, r5]
- cmp r0, 0
- bne _080C29CC
- movs r0, 0x1
- b _080C2B3A
- .align 2, 0
-_080C29C8: .4byte gUnknown_20399E0
-_080C29CC:
- ldr r5, _080C2A18 @ =0x00000cce
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, 0x11
- bls _080C2A1C
- subs r0, r3, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- b _080C2B28
- .align 2, 0
-_080C2A18: .4byte 0x00000cce
-_080C2A1C:
- cmp r0, 0xE
- bls _080C2A60
- subs r0, r3, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x2
- b _080C2B28
-_080C2A60:
- cmp r0, 0xA
- bls _080C2AA4
- subs r0, r3, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x3
- b _080C2B28
-_080C2AA4:
- cmp r0, 0x6
- bls _080C2AE8
- subs r0, r3, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x5
- b _080C2B28
-_080C2AE8:
- adds r0, r3, 0
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x8
-_080C2B28:
- strh r0, [r1, 0x20]
- ldr r0, _080C2B40 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2B44 @ =0x00000cce
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_080C2B3A:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080C2B40: .4byte gUnknown_20399E0
-_080C2B44: .4byte 0x00000cce
- thumb_func_end sub_80C29A4
-
- thumb_func_start sub_80C2B48
-sub_80C2B48: @ 80C2B48
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _080C2B90 @ =gUnknown_20399E0
- ldr r3, [r0]
- ldr r0, [r3]
- movs r2, 0x80
- lsls r2, 3
- adds r0, r2
- ldr r0, [r0]
- ldr r4, _080C2B94 @ =0xffff0000
- ldr r5, _080C2B98 @ =0x0000ffff
- ldrh r0, [r0, 0x20]
- movs r1, 0x80
- lsls r1, 13
- orrs r0, r1
- str r0, [sp]
- ldr r0, [r3, 0xC]
- adds r0, r2
- ldr r0, [r0]
- ldrh r1, [r0, 0x20]
- ldr r0, [sp, 0x4]
- ands r0, r4
- orrs r0, r1
- ands r0, r5
- movs r1, 0xA0
- lsls r1, 16
- orrs r0, r1
- str r0, [sp, 0x4]
- movs r0, 0
- mov r1, sp
- bl sub_80C4CF0
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C2B90: .4byte gUnknown_20399E0
-_080C2B94: .4byte 0xffff0000
-_080C2B98: .4byte 0x0000ffff
- thumb_func_end sub_80C2B48
-
- thumb_func_start sub_80C2B9C
-sub_80C2B9C: @ 80C2B9C
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _080C2C0C @ =gUnknown_20399E0
- ldr r3, [r0]
- ldr r0, [r3]
- ldr r2, _080C2C10 @ =0x00000404
- adds r0, r2
- ldrh r0, [r0]
- adds r0, 0x10
- lsls r0, 16
- ldr r4, _080C2C14 @ =0xffff0000
- ldr r5, _080C2C18 @ =0x0000ffff
- lsrs r0, 16
- movs r1, 0x80
- lsls r1, 13
- orrs r0, r1
- str r0, [sp]
- ldr r0, [r3, 0xC]
- adds r0, r2
- ldrh r1, [r0]
- subs r1, 0x10
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x4]
- ands r0, r4
- orrs r0, r1
- ands r0, r5
- movs r1, 0xA0
- lsls r1, 16
- orrs r0, r1
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_80C4C2C
- movs r0, 0x12
- movs r1, 0
- bl sub_80C4C74
- movs r0, 0x10
- bl sub_80C4C88
- movs r0, 0
- mov r1, sp
- bl sub_80C4CF0
- movs r0, 0
- movs r1, 0
- bl sub_80C4C9C
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C2C0C: .4byte gUnknown_20399E0
-_080C2C10: .4byte 0x00000404
-_080C2C14: .4byte 0xffff0000
-_080C2C18: .4byte 0x0000ffff
- thumb_func_end sub_80C2B9C
-
- thumb_func_start sub_80C2C1C
-sub_80C2C1C: @ 80C2C1C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C2C30 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080C2C34 @ =sub_80C2C7C
- str r0, [r1]
- bx lr
- .align 2, 0
-_080C2C30: .4byte gTasks
-_080C2C34: .4byte sub_80C2C7C
- thumb_func_end sub_80C2C1C
-
- thumb_func_start sub_80C2C38
-sub_80C2C38: @ 80C2C38
- push {lr}
- movs r0, 0
- movs r1, 0x4
- movs r2, 0x4
- bl sub_80C210C
- movs r0, 0x1
- movs r1, 0x5
- movs r2, 0x5
- bl sub_80C210C
- movs r0, 0x2
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80C210C
- movs r0, 0x3
- movs r1, 0x7
- movs r2, 0x7
- bl sub_80C210C
- movs r0, 0x4
- movs r1, 0x8
- movs r2, 0x8
- bl sub_80C210C
- movs r0, 0x5
- movs r1, 0x9
- movs r2, 0x9
- bl sub_80C210C
- pop {r0}
- bx r0
- thumb_func_end sub_80C2C38
-
- thumb_func_start sub_80C2C7C
-sub_80C2C7C: @ 80C2C7C
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C2CA0 @ =gUnknown_20399E0
- ldr r3, [r1]
- ldr r4, _080C2CA4 @ =0x00000ccf
- adds r0, r3, r4
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x7
- bls _080C2C94
- b _080C2DFC
-_080C2C94:
- lsls r0, 2
- ldr r1, _080C2CA8 @ =_080C2CAC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C2CA0: .4byte gUnknown_20399E0
-_080C2CA4: .4byte 0x00000ccf
-_080C2CA8: .4byte _080C2CAC
- .align 2, 0
-_080C2CAC:
- .4byte _080C2CCC
- .4byte _080C2CF4
- .4byte _080C2CFA
- .4byte _080C2D1C
- .4byte _080C2D6C
- .4byte _080C2D84
- .4byte _080C2DB8
- .4byte _080C2DD8
-_080C2CCC:
- movs r0, 0x1
- bl sub_80C4ED0
- movs r0, 0x3
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x4
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _080C2CEC @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2CF0 @ =0x00000ccf
- adds r1, r0
- b _080C2DEC
- .align 2, 0
-_080C2CEC: .4byte gUnknown_20399E0
-_080C2CF0: .4byte 0x00000ccf
-_080C2CF4:
- bl sub_80C2C38
- b _080C2DE4
-_080C2CFA:
- ldr r0, _080C2D10 @ =gUnknown_83EF2DC
- movs r1, 0
- movs r2, 0xA0
- bl LoadPalette
- ldr r0, _080C2D14 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r3, _080C2D18 @ =0x00000ccf
- adds r1, r3
- b _080C2DEC
- .align 2, 0
-_080C2D10: .4byte gUnknown_83EF2DC
-_080C2D14: .4byte gUnknown_20399E0
-_080C2D18: .4byte 0x00000ccf
-_080C2D1C:
- movs r0, 0x6
- movs r1, 0
- bl sub_80C22C4
- movs r0, 0x1
- bl sub_80C4324
- movs r0, 0x1
- bl sub_80C3154
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C4960
- movs r0, 0xFF
- movs r1, 0x19
- movs r2, 0x1
- bl sub_80C48BC
- ldr r1, _080C2D64 @ =gUnknown_20399E0
- ldr r0, [r1]
- ldr r4, _080C2D68 @ =0x00000cce
- adds r0, r4
- movs r2, 0
- strb r2, [r0]
- ldr r0, [r1]
- movs r3, 0xCD
- lsls r3, 4
- adds r0, r3
- strb r2, [r0]
- ldr r1, [r1]
- adds r4, 0x1
- adds r1, r4
- b _080C2DEC
- .align 2, 0
-_080C2D64: .4byte gUnknown_20399E0
-_080C2D68: .4byte 0x00000cce
-_080C2D6C:
- bl sub_80C253C
- ldr r0, _080C2D7C @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2D80 @ =0x00000ccf
- adds r1, r0
- b _080C2DEC
- .align 2, 0
-_080C2D7C: .4byte gUnknown_20399E0
-_080C2D80: .4byte 0x00000ccf
-_080C2D84:
- ldr r0, [r4]
- movs r2, 0xCD
- lsls r2, 4
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xF
- bne _080C2DA4
- ldrb r0, [r1]
- bl sub_80C4C48
- ldr r1, [r4]
- ldr r3, _080C2DA0 @ =0x00000ccf
- adds r1, r3
- b _080C2DEC
- .align 2, 0
-_080C2DA0: .4byte 0x00000ccf
-_080C2DA4:
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r4]
- movs r4, 0xCD
- lsls r4, 4
- adds r0, r4
- ldrb r0, [r0]
- bl sub_80C4C48
- b _080C2E0E
-_080C2DB8:
- bl sub_80C2B9C
- bl sub_80C2B48
- movs r0, 0xF3
- bl PlaySE
- ldr r0, _080C2DD0 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2DD4 @ =0x00000ccf
- adds r1, r0
- b _080C2DEC
- .align 2, 0
-_080C2DD0: .4byte gUnknown_20399E0
-_080C2DD4: .4byte 0x00000ccf
-_080C2DD8:
- bl sub_80C2E1C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C2E0E
-_080C2DE4:
- ldr r0, _080C2DF4 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r2, _080C2DF8 @ =0x00000ccf
- adds r1, r2
-_080C2DEC:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C2E0E
- .align 2, 0
-_080C2DF4: .4byte gUnknown_20399E0
-_080C2DF8: .4byte 0x00000ccf
-_080C2DFC:
- ldr r1, _080C2E14 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldr r4, _080C2E18 @ =0x00000cc8
- adds r1, r3, r4
- ldr r1, [r1]
- str r1, [r0]
-_080C2E0E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C2E14: .4byte gTasks
-_080C2E18: .4byte 0x00000cc8
- thumb_func_end sub_80C2C7C
-
- thumb_func_start sub_80C2E1C
-sub_80C2E1C: @ 80C2E1C
- push {r4,r5,lr}
- bl sub_80C2B48
- ldr r0, _080C2E40 @ =gUnknown_20399E0
- ldr r2, [r0]
- ldr r0, [r2]
- movs r4, 0x80
- lsls r4, 3
- adds r0, r4
- ldr r1, [r0]
- ldrh r3, [r1, 0x20]
- movs r5, 0x20
- ldrsh r0, [r1, r5]
- cmp r0, 0x68
- bne _080C2E44
- movs r0, 0x1
- b _080C2FB2
- .align 2, 0
-_080C2E40: .4byte gUnknown_20399E0
-_080C2E44:
- ldr r5, _080C2E90 @ =0x00000cce
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, 0x11
- bls _080C2E94
- adds r0, r3, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x1
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x1
- b _080C2FA0
- .align 2, 0
-_080C2E90: .4byte 0x00000cce
-_080C2E94:
- cmp r0, 0xE
- bls _080C2ED8
- adds r0, r3, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x2
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x2
- b _080C2FA0
-_080C2ED8:
- cmp r0, 0xA
- bls _080C2F1C
- adds r0, r3, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x3
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x3
- b _080C2FA0
-_080C2F1C:
- cmp r0, 0x6
- bls _080C2F60
- adds r0, r3, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x5
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x5
- b _080C2FA0
-_080C2F60:
- adds r0, r3, 0
- adds r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x4]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x8]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- adds r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0xC]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x10]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r0, [r2, 0x14]
- adds r0, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
-_080C2FA0:
- strh r0, [r1, 0x20]
- ldr r0, _080C2FB8 @ =gUnknown_20399E0
- ldr r1, [r0]
- ldr r0, _080C2FBC @ =0x00000cce
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_080C2FB2:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080C2FB8: .4byte gUnknown_20399E0
-_080C2FBC: .4byte 0x00000cce
- thumb_func_end sub_80C2E1C
-
- thumb_func_start sub_80C2FC0
-sub_80C2FC0: @ 80C2FC0
- push {lr}
- adds r1, r0, 0
- ldr r0, _080C2FE8 @ =gUnknown_20399E4
- ldr r2, [r0]
- ldrh r0, [r2, 0xC]
- cmp r0, 0
- beq _080C2FEC
- ldrh r0, [r2, 0x8]
- ldrh r3, [r1, 0x20]
- adds r0, r3
- strh r0, [r1, 0x20]
- ldrh r0, [r2, 0xA]
- ldrh r3, [r1, 0x22]
- adds r0, r3
- strh r0, [r1, 0x22]
- ldrh r0, [r2, 0xC]
- subs r0, 0x1
- strh r0, [r2, 0xC]
- b _080C3004
- .align 2, 0
-_080C2FE8: .4byte gUnknown_20399E4
-_080C2FEC:
- ldr r1, [r2, 0x1C]
- movs r3, 0
- ldrsh r0, [r2, r3]
- lsls r0, 3
- adds r0, 0x24
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x1C]
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- lsls r0, 3
- adds r0, 0x24
- strh r0, [r1, 0x22]
-_080C3004:
- pop {r0}
- bx r0
- thumb_func_end sub_80C2FC0
-
- thumb_func_start sub_80C3008
-sub_80C3008: @ 80C3008
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _080C3090 @ =gUnknown_20399E4
- movs r0, 0x92
- lsls r0, 1
- bl AllocZeroed
- adds r1, r0, 0
- str r1, [r6]
- ldr r0, _080C3094 @ =gUnknown_83EF4E0
- adds r1, 0x24
- bl LZ77UnCompWram
- ldr r0, [r6]
- strh r4, [r0, 0x20]
- strh r5, [r0, 0x22]
- bl sub_80C3D40
- ldr r1, [r6]
- movs r2, 0
- ldrsh r0, [r1, r2]
- lsls r0, 3
- adds r0, 0x24
- strh r0, [r1, 0x4]
- movs r3, 0x2
- ldrsh r0, [r1, r3]
- lsls r0, 3
- adds r0, 0x24
- strh r0, [r1, 0x6]
- ldr r0, _080C3098 @ =sub_80C31C0
- str r0, [r1, 0x10]
- ldrb r0, [r1, 0x14]
- bl sub_80C35DC
- ldr r1, [r6]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x16]
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r6]
- movs r4, 0x2
- ldrsh r2, [r1, r4]
- movs r4, 0
- ldrsh r3, [r1, r4]
- movs r1, 0x1
- bl sub_80C4164
- lsls r0, 24
- lsrs r0, 24
- bl sub_80C3878
- ldr r1, [r6]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x18]
- bl sub_80C309C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C3090: .4byte gUnknown_20399E4
-_080C3094: .4byte gUnknown_83EF4E0
-_080C3098: .4byte sub_80C31C0
- thumb_func_end sub_80C3008
-
- thumb_func_start sub_80C309C
-sub_80C309C: @ 80C309C
- push {r4-r6,lr}
- sub sp, 0x40
- ldr r6, _080C3134 @ =gUnknown_20399E4
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x24
- str r0, [sp, 0x30]
- movs r1, 0x80
- lsls r1, 1
- add r5, sp, 0x30
- str r1, [r5, 0x4]
- ldrh r0, [r2, 0x20]
- lsls r0, 16
- orrs r0, r1
- str r0, [r5, 0x4]
- ldr r0, _080C3138 @ =gUnknown_83EF25C
- str r0, [sp, 0x38]
- ldrh r3, [r2, 0x22]
- ldr r1, _080C313C @ =0xffff0000
- add r4, sp, 0x38
- ldr r0, [r4, 0x4]
- ands r0, r1
- orrs r0, r3
- str r0, [r4, 0x4]
- ldrh r0, [r2, 0x20]
- add r1, sp, 0x18
- movs r3, 0
- strh r0, [r1]
- ldrh r2, [r2, 0x22]
- mov r0, sp
- adds r0, 0x1A
- strh r2, [r0]
- ldr r0, _080C3140 @ =gUnknown_83F1C3C
- str r0, [sp, 0x1C]
- ldr r0, _080C3144 @ =gUnknown_83F1C50
- str r0, [sp, 0x20]
- str r3, [sp, 0x24]
- ldr r0, _080C3148 @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x28]
- ldr r0, _080C314C @ =sub_80C2FC0
- str r0, [sp, 0x2C]
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- adds r0, r5, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- ldr r0, [r6]
- movs r2, 0x4
- ldrsh r1, [r0, r2]
- movs r3, 0x6
- ldrsh r2, [r0, r3]
- mov r0, sp
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r6]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080C3150 @ =gSprites
- adds r1, r0
- str r1, [r2, 0x1C]
- movs r0, 0x1
- bl sub_80C3154
- add sp, 0x40
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C3134: .4byte gUnknown_20399E4
-_080C3138: .4byte gUnknown_83EF25C
-_080C313C: .4byte 0xffff0000
-_080C3140: .4byte gUnknown_83F1C3C
-_080C3144: .4byte gUnknown_83F1C50
-_080C3148: .4byte gDummySpriteAffineAnimTable
-_080C314C: .4byte sub_80C2FC0
-_080C3150: .4byte gSprites
- thumb_func_end sub_80C309C
-
- thumb_func_start sub_80C3154
-sub_80C3154: @ 80C3154
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080C3174 @ =gUnknown_20399E4
- ldr r1, [r1]
- ldr r2, [r1, 0x1C]
- adds r2, 0x3E
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- ldrb r3, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r0
- strb r1, [r2]
- bx lr
- .align 2, 0
-_080C3174: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3154
-
- thumb_func_start sub_80C3178
-sub_80C3178: @ 80C3178
- ldr r0, _080C3184 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0xE]
- bx lr
- .align 2, 0
-_080C3184: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3178
-
- thumb_func_start sub_80C3188
-sub_80C3188: @ 80C3188
- push {r4,lr}
- ldr r4, _080C31BC @ =gUnknown_20399E4
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _080C31A8
- bl DestroySprite
- ldr r0, [r4]
- ldrh r0, [r0, 0x20]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- ldrh r0, [r0, 0x22]
- bl FreeSpritePaletteByTag
-_080C31A8:
- ldr r0, [r4]
- cmp r0, 0
- beq _080C31B6
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C31B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C31BC: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3188
-
- thumb_func_start sub_80C31C0
-sub_80C31C0: @ 80C31C0
- push {r4-r6,lr}
- movs r5, 0
- ldr r3, _080C3278 @ =gUnknown_20399E4
- ldr r4, [r3]
- strh r5, [r4, 0x8]
- strh r5, [r4, 0xA]
- ldr r2, _080C327C @ =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- adds r6, r3, 0
- cmp r0, 0
- beq _080C31E8
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _080C31E8
- ldr r0, _080C3280 @ =0x0000fffe
- strh r0, [r4, 0xA]
- movs r5, 0x1
-_080C31E8:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C3202
- ldr r1, [r6]
- movs r3, 0x2
- ldrsh r0, [r1, r3]
- cmp r0, 0xD
- bgt _080C3202
- movs r0, 0x2
- strh r0, [r1, 0xA]
- movs r5, 0x1
-_080C3202:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080C321C
- ldr r1, [r6]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0x14
- bgt _080C321C
- movs r0, 0x2
- strh r0, [r1, 0x8]
- movs r5, 0x1
-_080C321C:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080C3236
- ldr r1, [r6]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _080C3236
- ldr r0, _080C3280 @ =0x0000fffe
- strh r0, [r1, 0x8]
- movs r5, 0x1
-_080C3236:
- ldrh r3, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _080C328C
- movs r5, 0x4
- ldr r0, [r6]
- ldr r1, [r0]
- ldr r0, _080C3284 @ =0x000d0015
- cmp r1, r0
- bne _080C3254
- movs r0, 0xF0
- bl PlaySE
- movs r5, 0x6
-_080C3254:
- ldr r0, [r6]
- ldr r1, [r0]
- ldr r0, _080C3288 @ =0x000b0015
- cmp r1, r0
- bne _080C331A
- movs r0, 0
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C331A
- movs r0, 0xF0
- bl PlaySE
- movs r5, 0x5
- b _080C331A
- .align 2, 0
-_080C3278: .4byte gUnknown_20399E4
-_080C327C: .4byte gMain
-_080C3280: .4byte 0x0000fffe
-_080C3284: .4byte 0x000d0015
-_080C3288: .4byte 0x000b0015
-_080C328C:
- movs r0, 0x2
- ands r0, r3
- cmp r0, 0
- bne _080C3318
- ldrh r1, [r2, 0x30]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080C3300
- bl sub_80C3418
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080C32FC @ =gUnknown_20399E4
- ldr r1, [r4]
- movs r5, 0x2
- ldrsh r2, [r1, r5]
- movs r5, 0
- ldrsh r3, [r1, r5]
- movs r1, 0
- bl sub_80C4164
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x14]
- bl sub_80C35DC
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x16]
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- movs r3, 0x2
- ldrsh r2, [r1, r3]
- movs r5, 0
- ldrsh r3, [r1, r5]
- movs r1, 0x1
- bl sub_80C4164
- lsls r0, 24
- lsrs r0, 24
- bl sub_80C3878
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x18]
- movs r0, 0x3
- b _080C332C
- .align 2, 0
-_080C32FC: .4byte gUnknown_20399E4
-_080C3300:
- movs r0, 0x4
- ands r0, r3
- cmp r0, 0
- beq _080C331A
- ldr r0, _080C3334 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C3338 @ =0x000047bc
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _080C333C @ =CB2_ReturnToField
- cmp r1, r0
- bne _080C331A
-_080C3318:
- movs r5, 0x6
-_080C331A:
- cmp r5, 0x1
- bne _080C332A
- ldr r0, _080C3340 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x4
- strh r0, [r1, 0xC]
- ldr r0, _080C3344 @ =sub_80C3348
- str r0, [r1, 0x10]
-_080C332A:
- adds r0, r5, 0
-_080C332C:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080C3334: .4byte gUnknown_20399D4
-_080C3338: .4byte 0x000047bc
-_080C333C: .4byte CB2_ReturnToField
-_080C3340: .4byte gUnknown_20399E4
-_080C3344: .4byte sub_80C3348
- thumb_func_end sub_80C31C0
-
- thumb_func_start sub_80C3348
-sub_80C3348: @ 80C3348
- push {r4,r5,lr}
- ldr r4, _080C3358 @ =gUnknown_20399E4
- ldr r1, [r4]
- ldrh r0, [r1, 0xC]
- cmp r0, 0
- beq _080C335C
- movs r0, 0x2
- b _080C33F4
- .align 2, 0
-_080C3358: .4byte gUnknown_20399E4
-_080C335C:
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- ble _080C336A
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080C336A:
- ldr r1, [r4]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bge _080C337A
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080C337A:
- ldr r1, [r4]
- movs r5, 0xA
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _080C338A
- ldrh r0, [r1, 0x2]
- adds r0, 0x1
- strh r0, [r1, 0x2]
-_080C338A:
- ldr r1, [r4]
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bge _080C339A
- ldrh r0, [r1, 0x2]
- subs r0, 0x1
- strh r0, [r1, 0x2]
-_080C339A:
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- movs r3, 0x2
- ldrsh r2, [r1, r3]
- movs r5, 0
- ldrsh r3, [r1, r5]
- movs r1, 0
- bl sub_80C4164
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x14]
- bl sub_80C35DC
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x16]
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- movs r3, 0x2
- ldrsh r2, [r1, r3]
- movs r5, 0
- ldrsh r3, [r1, r5]
- movs r1, 0x1
- bl sub_80C4164
- lsls r0, 24
- lsrs r0, 24
- bl sub_80C3878
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x18]
- ldr r0, _080C33FC @ =sub_80C31C0
- str r0, [r1, 0x10]
- movs r0, 0x3
-_080C33F4:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080C33FC: .4byte sub_80C31C0
- thumb_func_end sub_80C3348
-
- thumb_func_start sub_80C3400
-sub_80C3400: @ 80C3400
- push {lr}
- ldr r0, _080C3414 @ =gUnknown_20399E4
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080C3414: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3400
-
- thumb_func_start sub_80C3418
-sub_80C3418: @ 80C3418
- push {r4,r5,lr}
- movs r0, 0
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C3482
- ldr r5, _080C3474 @ =gUnknown_20399E4
- ldr r1, [r5]
- ldrb r0, [r1, 0xE]
- adds r0, 0x1
- strb r0, [r1, 0xE]
- ldr r4, [r5]
- ldrb r0, [r4, 0xE]
- movs r1, 0x3
- bl __umodsi3
- strb r0, [r4, 0xE]
- ldr r0, [r5]
- ldrb r0, [r0, 0xE]
- cmp r0, 0
- bne _080C3460
- bl sub_80C0E20
- adds r4, r0, 0
- bl sub_80C0E34
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _080C3460
- ldr r1, [r5]
- ldrb r0, [r1, 0xE]
- adds r0, 0x1
- strb r0, [r1, 0xE]
-_080C3460:
- ldr r4, _080C3474 @ =gUnknown_20399E4
- ldr r1, [r4]
- ldrb r0, [r1, 0xE]
- cmp r0, 0x1
- beq _080C3478
- cmp r0, 0x1
- ble _080C34A2
- cmp r0, 0x2
- beq _080C34B8
- b _080C34A2
- .align 2, 0
-_080C3474: .4byte gUnknown_20399E4
-_080C3478:
- movs r0, 0x15
- strh r0, [r1]
- movs r0, 0xB
- strh r0, [r1, 0x2]
- b _080C34C0
-_080C3482:
- ldr r4, _080C34B4 @ =gUnknown_20399E4
- ldr r1, [r4]
- ldrb r0, [r1, 0xE]
- adds r0, 0x1
- strb r0, [r1, 0xE]
- ldr r2, [r4]
- ldrb r0, [r2, 0xE]
- movs r1, 0x1
- ands r0, r1
- strb r0, [r2, 0xE]
- ldr r1, [r4]
- ldrb r0, [r1, 0xE]
- cmp r0, 0
- beq _080C34A2
- cmp r0, 0x1
- beq _080C34B8
-_080C34A2:
- bl sub_80C4380
- ldr r1, [r4]
- strh r0, [r1]
- bl sub_80C438C
- ldr r1, [r4]
- strh r0, [r1, 0x2]
- b _080C34C0
- .align 2, 0
-_080C34B4: .4byte gUnknown_20399E4
-_080C34B8:
- movs r0, 0xD
- strh r0, [r1, 0x2]
- movs r0, 0x15
- strh r0, [r1]
-_080C34C0:
- ldr r4, _080C3504 @ =gUnknown_20399E4
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- movs r3, 0
- ldrsh r0, [r1, r3]
- lsls r0, 3
- adds r0, 0x24
- strh r0, [r2, 0x20]
- ldr r2, [r1, 0x1C]
- movs r5, 0x2
- ldrsh r0, [r1, r5]
- lsls r0, 3
- adds r0, 0x24
- strh r0, [r2, 0x22]
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- movs r3, 0x2
- ldrsh r2, [r1, r3]
- movs r5, 0
- ldrsh r3, [r1, r5]
- movs r1, 0
- bl sub_80C4164
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x14]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C3504: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3418
-
- thumb_func_start sub_80C3508
-sub_80C3508: @ 80C3508
- ldr r0, _080C3510 @ =gUnknown_20399E4
- ldr r0, [r0]
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_080C3510: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3508
-
- thumb_func_start sub_80C3514
-sub_80C3514: @ 80C3514
- ldr r0, _080C351C @ =gUnknown_20399E4
- ldr r0, [r0]
- ldrh r0, [r0, 0x2]
- bx lr
- .align 2, 0
-_080C351C: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3514
-
- thumb_func_start sub_80C3520
-sub_80C3520: @ 80C3520
- push {r4,lr}
- ldr r4, _080C353C @ =gUnknown_20399E4
- ldr r1, [r4]
- ldrh r0, [r1, 0x2]
- cmp r0, 0xE
- bhi _080C3538
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- blt _080C3538
- cmp r0, 0x15
- ble _080C3540
-_080C3538:
- movs r0, 0xC5
- b _080C3574
- .align 2, 0
-_080C353C: .4byte gUnknown_20399E4
-_080C3540:
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- movs r3, 0x2
- ldrsh r2, [r1, r3]
- movs r4, 0
- ldrsh r3, [r1, r4]
- movs r1, 0
- bl sub_80C4164
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xAE
- beq _080C3564
- cmp r4, 0xBB
- bne _080C3572
-_080C3564:
- ldr r0, _080C357C @ =0x000008b5
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _080C3572
- movs r4, 0xC5
-_080C3572:
- adds r0, r4, 0
-_080C3574:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080C357C: .4byte 0x000008b5
- thumb_func_end sub_80C3520
-
- thumb_func_start sub_80C3580
-sub_80C3580: @ 80C3580
- push {r4,lr}
- ldr r4, _080C359C @ =gUnknown_20399E4
- ldr r1, [r4]
- ldrh r0, [r1, 0x2]
- cmp r0, 0xE
- bhi _080C3598
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- blt _080C3598
- cmp r0, 0x15
- ble _080C35A0
-_080C3598:
- movs r0, 0xC5
- b _080C35D0
- .align 2, 0
-_080C359C: .4byte gUnknown_20399E4
-_080C35A0:
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- movs r3, 0x2
- ldrsh r2, [r1, r3]
- movs r4, 0
- ldrsh r3, [r1, r4]
- movs r1, 0x1
- bl sub_80C4164
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8D
- bne _080C35CE
- ldr r0, _080C35D8 @ =0x00000844
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _080C35CE
- movs r4, 0xC5
-_080C35CE:
- adds r0, r4, 0
-_080C35D0:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080C35D8: .4byte 0x00000844
- thumb_func_end sub_80C3580
-
- thumb_func_start sub_80C35DC
-sub_80C35DC: @ 80C35DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x58
- cmp r0, 0x6D
- bls _080C35EA
- b _080C3870
-_080C35EA:
- lsls r0, 2
- ldr r1, _080C35F4 @ =_080C35F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C35F4: .4byte _080C35F8
- .align 2, 0
-_080C35F8:
- .4byte _080C37B0
- .4byte _080C37B6
- .4byte _080C37C0
- .4byte _080C37C8
- .4byte _080C37D0
- .4byte _080C37D8
- .4byte _080C37E0
- .4byte _080C37E8
- .4byte _080C37F0
- .4byte _080C37F8
- .4byte _080C3800
- .4byte _080C3840
- .4byte _080C3858
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3808
- .4byte _080C3810
- .4byte _080C3818
- .4byte _080C3820
- .4byte _080C3828
- .4byte _080C3830
- .4byte _080C3836
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C3870
- .4byte _080C384C
-_080C37B0:
- movs r0, 0x89
- lsls r0, 4
- b _080C385A
-_080C37B6:
- ldr r0, _080C37BC @ =0x00000891
- b _080C385A
- .align 2, 0
-_080C37BC: .4byte 0x00000891
-_080C37C0:
- ldr r0, _080C37C4 @ =0x00000892
- b _080C385A
- .align 2, 0
-_080C37C4: .4byte 0x00000892
-_080C37C8:
- ldr r0, _080C37CC @ =0x00000893
- b _080C385A
- .align 2, 0
-_080C37CC: .4byte 0x00000893
-_080C37D0:
- ldr r0, _080C37D4 @ =0x00000894
- b _080C385A
- .align 2, 0
-_080C37D4: .4byte 0x00000894
-_080C37D8:
- ldr r0, _080C37DC @ =0x00000895
- b _080C385A
- .align 2, 0
-_080C37DC: .4byte 0x00000895
-_080C37E0:
- ldr r0, _080C37E4 @ =0x00000896
- b _080C385A
- .align 2, 0
-_080C37E4: .4byte 0x00000896
-_080C37E8:
- ldr r0, _080C37EC @ =0x00000897
- b _080C385A
- .align 2, 0
-_080C37EC: .4byte 0x00000897
-_080C37F0:
- ldr r0, _080C37F4 @ =0x00000898
- b _080C385A
- .align 2, 0
-_080C37F4: .4byte 0x00000898
-_080C37F8:
- ldr r0, _080C37FC @ =0x00000899
- b _080C385A
- .align 2, 0
-_080C37FC: .4byte 0x00000899
-_080C3800:
- ldr r0, _080C3804 @ =0x0000089a
- b _080C385A
- .align 2, 0
-_080C3804: .4byte 0x0000089a
-_080C3808:
- ldr r0, _080C380C @ =0x0000089b
- b _080C385A
- .align 2, 0
-_080C380C: .4byte 0x0000089b
-_080C3810:
- ldr r0, _080C3814 @ =0x0000089c
- b _080C385A
- .align 2, 0
-_080C3814: .4byte 0x0000089c
-_080C3818:
- ldr r0, _080C381C @ =0x0000089d
- b _080C385A
- .align 2, 0
-_080C381C: .4byte 0x0000089d
-_080C3820:
- ldr r0, _080C3824 @ =0x0000089e
- b _080C385A
- .align 2, 0
-_080C3824: .4byte 0x0000089e
-_080C3828:
- ldr r0, _080C382C @ =0x0000089f
- b _080C385A
- .align 2, 0
-_080C382C: .4byte 0x0000089f
-_080C3830:
- movs r0, 0x8A
- lsls r0, 4
- b _080C385A
-_080C3836:
- ldr r0, _080C383C @ =0x000008a1
- b _080C385A
- .align 2, 0
-_080C383C: .4byte 0x000008a1
-_080C3840:
- movs r0, 0x3
- bl sub_80C0E04
- lsls r0, 24
- cmp r0, 0
- bne _080C3850
-_080C384C:
- movs r0, 0
- b _080C3872
-_080C3850:
- ldr r0, _080C3854 @ =0x000008a2
- b _080C385A
- .align 2, 0
-_080C3854: .4byte 0x000008a2
-_080C3858:
- ldr r0, _080C386C @ =0x000008a3
-_080C385A:
- bl FlagGet
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _080C3868
- movs r1, 0x2
-_080C3868:
- adds r0, r1, 0
- b _080C3872
- .align 2, 0
-_080C386C: .4byte 0x000008a3
-_080C3870:
- movs r0, 0x1
-_080C3872:
- pop {r1}
- bx r1
- thumb_func_end sub_80C35DC
-
- thumb_func_start sub_80C3878
-sub_80C3878: @ 80C3878
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x7E
- cmp r0, 0x47
- bls _080C3886
- b _080C3AC0
-_080C3886:
- lsls r0, 2
- ldr r1, _080C3890 @ =_080C3894
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C3890: .4byte _080C3894
- .align 2, 0
-_080C3894:
- .4byte _080C39B8
- .4byte _080C39C0
- .4byte _080C39C8
- .4byte _080C39D0
- .4byte _080C39D8
- .4byte _080C39E0
- .4byte _080C39E8
- .4byte _080C39F0
- .4byte _080C39F8
- .4byte _080C3A00
- .4byte _080C3A08
- .4byte _080C3A10
- .4byte _080C3A18
- .4byte _080C3A1E
- .4byte _080C3A28
- .4byte _080C3A30
- .4byte _080C3A38
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3A40
- .4byte _080C3A48
- .4byte _080C3A50
- .4byte _080C3A58
- .4byte _080C3A60
- .4byte _080C3A68
- .4byte _080C3A70
- .4byte _080C3A78
- .4byte _080C3A80
- .4byte _080C3A88
- .4byte _080C3A90
- .4byte _080C3A98
- .4byte _080C3A9E
- .4byte _080C3AA8
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C3AC0
- .4byte _080C39B4
-_080C39B4:
- movs r0, 0
- b _080C3AC2
-_080C39B8:
- ldr r0, _080C39BC @ =0x000008a4
- b _080C3AAA
- .align 2, 0
-_080C39BC: .4byte 0x000008a4
-_080C39C0:
- ldr r0, _080C39C4 @ =0x000008a5
- b _080C3AAA
- .align 2, 0
-_080C39C4: .4byte 0x000008a5
-_080C39C8:
- ldr r0, _080C39CC @ =0x000008a6
- b _080C3AAA
- .align 2, 0
-_080C39CC: .4byte 0x000008a6
-_080C39D0:
- ldr r0, _080C39D4 @ =0x000008a7
- b _080C3AAA
- .align 2, 0
-_080C39D4: .4byte 0x000008a7
-_080C39D8:
- ldr r0, _080C39DC @ =0x000008a8
- b _080C3AAA
- .align 2, 0
-_080C39DC: .4byte 0x000008a8
-_080C39E0:
- ldr r0, _080C39E4 @ =0x000008a9
- b _080C3AAA
- .align 2, 0
-_080C39E4: .4byte 0x000008a9
-_080C39E8:
- ldr r0, _080C39EC @ =0x000008aa
- b _080C3AAA
- .align 2, 0
-_080C39EC: .4byte 0x000008aa
-_080C39F0:
- ldr r0, _080C39F4 @ =0x000008ab
- b _080C3AAA
- .align 2, 0
-_080C39F4: .4byte 0x000008ab
-_080C39F8:
- ldr r0, _080C39FC @ =0x000008ac
- b _080C3AAA
- .align 2, 0
-_080C39FC: .4byte 0x000008ac
-_080C3A00:
- ldr r0, _080C3A04 @ =0x000008ad
- b _080C3AAA
- .align 2, 0
-_080C3A04: .4byte 0x000008ad
-_080C3A08:
- ldr r0, _080C3A0C @ =0x000008ae
- b _080C3AAA
- .align 2, 0
-_080C3A0C: .4byte 0x000008ae
-_080C3A10:
- ldr r0, _080C3A14 @ =0x000008af
- b _080C3AAA
- .align 2, 0
-_080C3A14: .4byte 0x000008af
-_080C3A18:
- movs r0, 0x8B
- lsls r0, 4
- b _080C3AAA
-_080C3A1E:
- ldr r0, _080C3A24 @ =0x000008b1
- b _080C3AAA
- .align 2, 0
-_080C3A24: .4byte 0x000008b1
-_080C3A28:
- ldr r0, _080C3A2C @ =0x000008b2
- b _080C3AAA
- .align 2, 0
-_080C3A2C: .4byte 0x000008b2
-_080C3A30:
- ldr r0, _080C3A34 @ =0x000008b3
- b _080C3AAA
- .align 2, 0
-_080C3A34: .4byte 0x000008b3
-_080C3A38:
- ldr r0, _080C3A3C @ =0x000008b4
- b _080C3AAA
- .align 2, 0
-_080C3A3C: .4byte 0x000008b4
-_080C3A40:
- ldr r0, _080C3A44 @ =0x000008b5
- b _080C3AAA
- .align 2, 0
-_080C3A44: .4byte 0x000008b5
-_080C3A48:
- ldr r0, _080C3A4C @ =0x000008b6
- b _080C3AAA
- .align 2, 0
-_080C3A4C: .4byte 0x000008b6
-_080C3A50:
- ldr r0, _080C3A54 @ =0x000008b7
- b _080C3AAA
- .align 2, 0
-_080C3A54: .4byte 0x000008b7
-_080C3A58:
- ldr r0, _080C3A5C @ =0x000008b8
- b _080C3AAA
- .align 2, 0
-_080C3A5C: .4byte 0x000008b8
-_080C3A60:
- ldr r0, _080C3A64 @ =0x000008b9
- b _080C3AAA
- .align 2, 0
-_080C3A64: .4byte 0x000008b9
-_080C3A68:
- ldr r0, _080C3A6C @ =0x000008ba
- b _080C3AAA
- .align 2, 0
-_080C3A6C: .4byte 0x000008ba
-_080C3A70:
- ldr r0, _080C3A74 @ =0x000008bb
- b _080C3AAA
- .align 2, 0
-_080C3A74: .4byte 0x000008bb
-_080C3A78:
- ldr r0, _080C3A7C @ =0x000008bc
- b _080C3AAA
- .align 2, 0
-_080C3A7C: .4byte 0x000008bc
-_080C3A80:
- ldr r0, _080C3A84 @ =0x000008bd
- b _080C3AAA
- .align 2, 0
-_080C3A84: .4byte 0x000008bd
-_080C3A88:
- ldr r0, _080C3A8C @ =0x000008be
- b _080C3AAA
- .align 2, 0
-_080C3A8C: .4byte 0x000008be
-_080C3A90:
- ldr r0, _080C3A94 @ =0x000008bf
- b _080C3AAA
- .align 2, 0
-_080C3A94: .4byte 0x000008bf
-_080C3A98:
- movs r0, 0x8C
- lsls r0, 4
- b _080C3AAA
-_080C3A9E:
- ldr r0, _080C3AA4 @ =0x000008c1
- b _080C3AAA
- .align 2, 0
-_080C3AA4: .4byte 0x000008c1
-_080C3AA8:
- ldr r0, _080C3ABC @ =0x000008c2
-_080C3AAA:
- bl FlagGet
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _080C3AB8
- movs r1, 0x2
-_080C3AB8:
- adds r0, r1, 0
- b _080C3AC2
- .align 2, 0
-_080C3ABC: .4byte 0x000008c2
-_080C3AC0:
- movs r0, 0x1
-_080C3AC2:
- pop {r1}
- bx r1
- thumb_func_end sub_80C3878
-
- thumb_func_start sub_80C3AC8
-sub_80C3AC8: @ 80C3AC8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080C3AE4
- cmp r0, 0x1
- beq _080C3AF0
- ldr r0, _080C3AE0 @ =gUnknown_20399E4
- ldr r0, [r0]
- ldrb r0, [r0, 0x16]
- b _080C3AF6
- .align 2, 0
-_080C3AE0: .4byte gUnknown_20399E4
-_080C3AE4:
- ldr r0, _080C3AEC @ =gUnknown_20399E4
- ldr r0, [r0]
- ldrb r0, [r0, 0x16]
- b _080C3AF6
- .align 2, 0
-_080C3AEC: .4byte gUnknown_20399E4
-_080C3AF0:
- ldr r0, _080C3AFC @ =gUnknown_20399E4
- ldr r0, [r0]
- ldrb r0, [r0, 0x18]
-_080C3AF6:
- pop {r1}
- bx r1
- .align 2, 0
-_080C3AFC: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3AC8
-
- thumb_func_start sub_80C3B00
-sub_80C3B00: @ 80C3B00
- push {lr}
- ldr r0, _080C3B24 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- ldrb r0, [r0, 0x14]
- pop {r1}
- bx r1
- .align 2, 0
-_080C3B24: .4byte gSaveBlock1Ptr
- thumb_func_end sub_80C3B00
-
- thumb_func_start sub_80C3B28
-sub_80C3B28: @ 80C3B28
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _080C3B58 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- bl get_map_light_level_by_bank_and_number
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x8
- bhi _080C3B84
- lsls r0, 2
- ldr r1, _080C3B5C @ =_080C3B60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C3B58: .4byte gSaveBlock1Ptr
-_080C3B5C: .4byte _080C3B60
- .align 2, 0
-_080C3B60:
- .4byte _080C3B84
- .4byte _080C3B84
- .4byte _080C3B84
- .4byte _080C3BAC
- .4byte _080C3B84
- .4byte _080C3B84
- .4byte _080C3BAC
- .4byte _080C3C2C
- .4byte _080C3BF0
-_080C3B84:
- ldr r0, _080C3BA0 @ =gUnknown_20399E4
- ldr r2, [r0]
- ldr r1, _080C3BA4 @ =gMapHeader
- ldrb r0, [r1, 0x14]
- strh r0, [r2, 0x14]
- ldr r0, [r1]
- ldrh r1, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldr r0, _080C3BA8 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r4, [r0]
- ldrh r5, [r0, 0x2]
- b _080C3C9A
- .align 2, 0
-_080C3BA0: .4byte gUnknown_20399E4
-_080C3BA4: .4byte gMapHeader
-_080C3BA8: .4byte gSaveBlock1Ptr
-_080C3BAC:
- ldr r4, _080C3BE8 @ =gSaveBlock1Ptr
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x25
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r2, r0, 0
- ldr r0, _080C3BEC @ =gUnknown_20399E4
- ldr r1, [r0]
- ldrb r0, [r2, 0x14]
- strh r0, [r1, 0x14]
- ldr r0, [r2]
- ldrh r1, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldr r0, [r4]
- ldrh r4, [r0, 0x28]
- ldrh r5, [r0, 0x2A]
- b _080C3C9A
- .align 2, 0
-_080C3BE8: .4byte gSaveBlock1Ptr
-_080C3BEC: .4byte gUnknown_20399E4
-_080C3BF0:
- ldr r4, _080C3C24 @ =gSaveBlock1Ptr
- ldr r1, [r4]
- movs r0, 0x14
- ldrsb r0, [r1, r0]
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r1, 0x15]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r2, r0, 0
- ldr r0, _080C3C28 @ =gUnknown_20399E4
- ldr r1, [r0]
- ldrb r0, [r2, 0x14]
- strh r0, [r1, 0x14]
- ldr r0, [r2]
- ldrh r1, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldr r0, [r4]
- ldrh r4, [r0, 0x18]
- ldrh r5, [r0, 0x1A]
- b _080C3C9A
- .align 2, 0
-_080C3C24: .4byte gSaveBlock1Ptr
-_080C3C28: .4byte gUnknown_20399E4
-_080C3C2C:
- ldr r4, _080C3C5C @ =gUnknown_20399E4
- ldr r0, [r4]
- ldr r1, _080C3C60 @ =gMapHeader
- ldrb r1, [r1, 0x14]
- strh r1, [r0, 0x14]
- cmp r1, 0xC4
- beq _080C3C68
- ldr r0, _080C3C64 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r5, r0, 0
- adds r5, 0x24
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r5, r1]
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r2, r0, 0
- b _080C3C8E
- .align 2, 0
-_080C3C5C: .4byte gUnknown_20399E4
-_080C3C60: .4byte gMapHeader
-_080C3C64: .4byte gSaveBlock1Ptr
-_080C3C68:
- ldr r0, _080C3D30 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- adds r5, r0, 0
- adds r5, 0x14
- ldrb r0, [r0, 0x14]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r5, r1]
- lsls r1, 16
- lsrs r1, 16
- bl Overworld_GetMapHeaderByGroupAndId
- adds r2, r0, 0
- ldr r1, [r4]
- ldrb r0, [r2, 0x14]
- strh r0, [r1, 0x14]
-_080C3C8E:
- ldr r0, [r2]
- ldrh r1, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldrh r4, [r5, 0x4]
- ldrh r5, [r5, 0x6]
-_080C3C9A:
- ldr r0, _080C3D34 @ =gUnknown_20399E4
- ldr r7, [r0]
- ldrh r0, [r7, 0x14]
- subs r0, 0x58
- strh r0, [r7, 0x14]
- ldr r0, _080C3D38 @ =gUnknown_83F2178
- mov r10, r0
- ldrh r0, [r7, 0x14]
- lsls r0, 2
- mov r9, r0
- add r0, r10
- ldrh r6, [r0]
- adds r0, r1, 0
- adds r1, r6, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _080C3CC4
- movs r1, 0x1
-_080C3CC4:
- adds r0, r4, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r6
- bcc _080C3CD8
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080C3CD8:
- mov r0, r10
- adds r0, 0x2
- add r0, r9
- ldrh r6, [r0]
- mov r0, r8
- adds r1, r6, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _080C3CF2
- movs r1, 0x1
-_080C3CF2:
- adds r0, r5, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r6
- bcc _080C3D06
- subs r0, r6, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080C3D06:
- ldr r1, _080C3D3C @ =gUnknown_83F1E60
- mov r2, r9
- adds r0, r2, r1
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r7]
- ldrh r0, [r7, 0x14]
- lsls r0, 2
- adds r1, 0x2
- adds r0, r1
- ldrh r0, [r0]
- adds r0, r5, r0
- strh r0, [r7, 0x2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C3D30: .4byte gSaveBlock1Ptr
-_080C3D34: .4byte gUnknown_20399E4
-_080C3D38: .4byte gUnknown_83F2178
-_080C3D3C: .4byte gUnknown_83F1E60
- thumb_func_end sub_80C3B28
-
- thumb_func_start sub_80C3D40
-sub_80C3D40: @ 80C3D40
- push {r4,r5,lr}
- bl sub_80C3B00
- lsls r0, 16
- lsrs r0, 16
- subs r0, 0x66
- cmp r0, 0x5C
- bls _080C3D52
- b _080C4132
-_080C3D52:
- lsls r0, 2
- ldr r1, _080C3D5C @ =_080C3D60
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C3D5C: .4byte _080C3D60
- .align 2, 0
-_080C3D60:
- .4byte _080C4034
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C40A0
- .4byte _080C40C4
- .4byte _080C40E8
- .4byte _080C4108
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4064
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4028
- .4byte _080C4132
- .4byte _080C3F24
- .4byte _080C3F50
- .4byte _080C3F78
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C3F44
- .4byte _080C3EE4
- .4byte _080C3EF0
- .4byte _080C3ED4
- .4byte _080C3F38
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C3F04
- .4byte _080C4132
- .4byte _080C3F10
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C3FB0
- .4byte _080C3FC8
- .4byte _080C3FD4
- .4byte _080C4132
- .4byte _080C3FF4
- .4byte _080C3FBC
- .4byte _080C4014
- .4byte _080C4132
- .4byte _080C3FE0
- .4byte _080C4132
- .4byte _080C4008
- .4byte _080C4132
- .4byte _080C4132
- .4byte _080C3FA4
- .4byte _080C4008
- .4byte _080C4008
- .4byte _080C4008
- .4byte _080C4008
- .4byte _080C4008
- .4byte _080C4008
- .4byte _080C4008
-_080C3ED4:
- ldr r0, _080C3EE0 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xC
- strh r0, [r1]
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C3EE0: .4byte gUnknown_20399E4
-_080C3EE4:
- ldr r0, _080C3EEC @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xE
- b _080C411C
- .align 2, 0
-_080C3EEC: .4byte gUnknown_20399E4
-_080C3EF0:
- ldr r0, _080C3F00 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x4
- strh r0, [r1]
- movs r0, 0xE
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C3F00: .4byte gUnknown_20399E4
-_080C3F04:
- ldr r0, _080C3F0C @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x12
- b _080C411C
- .align 2, 0
-_080C3F0C: .4byte gUnknown_20399E4
-_080C3F10:
- ldr r0, _080C3F20 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x12
- strh r0, [r1]
- movs r0, 0x4
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C3F20: .4byte gUnknown_20399E4
-_080C3F24:
- ldr r0, _080C3F34 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xE
- strh r0, [r1]
- movs r0, 0x9
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C3F34: .4byte gUnknown_20399E4
-_080C3F38:
- ldr r0, _080C3F40 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x2
- b _080C3FE6
- .align 2, 0
-_080C3F40: .4byte gUnknown_20399E4
-_080C3F44:
- ldr r0, _080C3F4C @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xB
- b _080C411C
- .align 2, 0
-_080C3F4C: .4byte gUnknown_20399E4
-_080C3F50:
- ldr r0, _080C3F70 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r2, 0xE
- strh r2, [r1]
- movs r0, 0x7
- strh r0, [r1, 0x2]
- ldr r0, _080C3F74 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1E
- beq _080C3F6C
- b _080C4136
-_080C3F6C:
- b _080C40B6
- .align 2, 0
-_080C3F70: .4byte gUnknown_20399E4
-_080C3F74: .4byte gSaveBlock1Ptr
-_080C3F78:
- ldr r0, _080C3F9C @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xC
- strh r0, [r1]
- movs r2, 0x6
- strh r2, [r1, 0x2]
- ldr r0, _080C3FA0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x23
- beq _080C3F94
- b _080C4136
-_080C3F94:
- movs r0, 0xF
- strh r0, [r1]
- b _080C4136
- .align 2, 0
-_080C3F9C: .4byte gUnknown_20399E4
-_080C3FA0: .4byte gSaveBlock1Ptr
-_080C3FA4:
- ldr r0, _080C3FAC @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x12
- b _080C4092
- .align 2, 0
-_080C3FAC: .4byte gUnknown_20399E4
-_080C3FB0:
- ldr r0, _080C3FB8 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xA
- b _080C401A
- .align 2, 0
-_080C3FB8: .4byte gUnknown_20399E4
-_080C3FBC:
- ldr r0, _080C3FC4 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x5
- b _080C411C
- .align 2, 0
-_080C3FC4: .4byte gUnknown_20399E4
-_080C3FC8:
- ldr r0, _080C3FD0 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x2
- b _080C3FE6
- .align 2, 0
-_080C3FD0: .4byte gUnknown_20399E4
-_080C3FD4:
- ldr r0, _080C3FDC @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xE
- b _080C4078
- .align 2, 0
-_080C3FDC: .4byte gUnknown_20399E4
-_080C3FE0:
- ldr r0, _080C3FF0 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x11
-_080C3FE6:
- strh r0, [r1]
- movs r0, 0x3
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C3FF0: .4byte gUnknown_20399E4
-_080C3FF4:
- ldr r0, _080C4004 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x11
- strh r0, [r1]
- movs r0, 0xB
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C4004: .4byte gUnknown_20399E4
-_080C4008:
- ldr r0, _080C4010 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x9
- b _080C4078
- .align 2, 0
-_080C4010: .4byte gUnknown_20399E4
-_080C4014:
- ldr r0, _080C4024 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x10
-_080C401A:
- strh r0, [r1]
- movs r0, 0x8
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C4024: .4byte gUnknown_20399E4
-_080C4028:
- ldr r0, _080C4030 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x4
- b _080C411C
- .align 2, 0
-_080C4030: .4byte gUnknown_20399E4
-_080C4034:
- ldr r0, _080C404C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _080C4054
- ldr r0, _080C4050 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x4
- b _080C40D8
- .align 2, 0
-_080C404C: .4byte gSaveBlock1Ptr
-_080C4050: .4byte gUnknown_20399E4
-_080C4054:
- cmp r0, 0x3
- bne _080C412C
- ldr r0, _080C4060 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x4
- b _080C40B4
- .align 2, 0
-_080C4060: .4byte gUnknown_20399E4
-_080C4064:
- ldr r0, _080C4080 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x27
- bne _080C4088
- ldr r0, _080C4084 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x4
-_080C4078:
- strh r0, [r1]
- movs r0, 0xC
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C4080: .4byte gSaveBlock1Ptr
-_080C4084: .4byte gUnknown_20399E4
-_080C4088:
- cmp r0, 0x28
- bne _080C4136
- ldr r0, _080C409C @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0x4
-_080C4092:
- strh r0, [r1]
- movs r0, 0xD
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C409C: .4byte gUnknown_20399E4
-_080C40A0:
- ldr r0, _080C40BC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _080C412C
- ldr r0, _080C40C0 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xE
-_080C40B4:
- strh r0, [r1]
-_080C40B6:
- movs r0, 0x5
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C40BC: .4byte gSaveBlock1Ptr
-_080C40C0: .4byte gUnknown_20399E4
-_080C40C4:
- ldr r0, _080C40E0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _080C412C
- ldr r0, _080C40E4 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xE
-_080C40D8:
- strh r0, [r1]
- movs r0, 0x7
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C40E0: .4byte gSaveBlock1Ptr
-_080C40E4: .4byte gUnknown_20399E4
-_080C40E8:
- ldr r0, _080C4100 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _080C412C
- ldr r0, _080C4104 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xD
- b _080C411C
- .align 2, 0
-_080C4100: .4byte gSaveBlock1Ptr
-_080C4104: .4byte gUnknown_20399E4
-_080C4108:
- ldr r0, _080C4124 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _080C412C
- ldr r0, _080C4128 @ =gUnknown_20399E4
- ldr r1, [r0]
- movs r0, 0xF
-_080C411C:
- strh r0, [r1]
- movs r0, 0x6
- strh r0, [r1, 0x2]
- b _080C4136
- .align 2, 0
-_080C4124: .4byte gSaveBlock1Ptr
-_080C4128: .4byte gUnknown_20399E4
-_080C412C:
- bl sub_80C3B28
- b _080C4136
-_080C4132:
- bl sub_80C3B28
-_080C4136:
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080C4160 @ =gUnknown_20399E4
- ldr r1, [r4]
- movs r3, 0x2
- ldrsh r2, [r1, r3]
- movs r5, 0
- ldrsh r3, [r1, r5]
- movs r1, 0
- bl sub_80C4164
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x14]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4160: .4byte gUnknown_20399E4
- thumb_func_end sub_80C3D40
-
- thumb_func_start sub_80C4164
-sub_80C4164: @ 80C4164
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r1, r3, 16
- cmp r0, 0x1
- beq _080C4198
- cmp r0, 0x1
- bgt _080C4186
- cmp r0, 0
- beq _080C4190
- b _080C41D0
-_080C4186:
- cmp r5, 0x2
- beq _080C41A0
- cmp r5, 0x3
- beq _080C41A8
- b _080C41D0
-_080C4190:
- ldr r3, _080C4194 @ =gUnknown_83F2490
- b _080C41AA
- .align 2, 0
-_080C4194: .4byte gUnknown_83F2490
-_080C4198:
- ldr r3, _080C419C @ =gUnknown_83F2724
- b _080C41AA
- .align 2, 0
-_080C419C: .4byte gUnknown_83F2724
-_080C41A0:
- ldr r3, _080C41A4 @ =gUnknown_83F29B8
- b _080C41AA
- .align 2, 0
-_080C41A4: .4byte gUnknown_83F29B8
-_080C41A8:
- ldr r3, _080C41CC @ =gUnknown_83F2C4C
-_080C41AA:
- lsls r1, 16
- asrs r1, 16
- lsls r0, r2, 16
- asrs r0, 16
- movs r2, 0x16
- muls r0, r2
- adds r1, r0
- lsls r0, r4, 2
- adds r0, r4
- lsls r2, r0, 5
- adds r0, r2
- lsls r0, 1
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- b _080C41D2
- .align 2, 0
-_080C41CC: .4byte gUnknown_83F2C4C
-_080C41D0:
- movs r0, 0xC5
-_080C41D2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80C4164
-
- thumb_func_start sub_80C41D8
-sub_80C41D8: @ 80C41D8
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r4, _080C4204 @ =gUnknown_20399E8
- movs r0, 0x8C
- bl AllocZeroed
- adds r1, r0, 0
- str r1, [r4]
- ldr r0, _080C4208 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _080C4210
- ldr r0, _080C420C @ =gUnknown_83EF59C
- adds r1, 0xC
- bl LZ77UnCompWram
- b _080C4218
- .align 2, 0
-_080C4204: .4byte gUnknown_20399E8
-_080C4208: .4byte gSaveBlock2Ptr
-_080C420C: .4byte gUnknown_83EF59C
-_080C4210:
- ldr r0, _080C423C @ =gUnknown_83EF524
- adds r1, 0xC
- bl LZ77UnCompWram
-_080C4218:
- ldr r4, _080C4240 @ =gUnknown_20399E8
- ldr r0, [r4]
- strh r6, [r0, 0x8]
- strh r5, [r0, 0xA]
- bl sub_80C3508
- ldr r1, [r4]
- strh r0, [r1]
- bl sub_80C3514
- ldr r1, [r4]
- strh r0, [r1, 0x2]
- bl sub_80C4244
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C423C: .4byte gUnknown_83EF524
-_080C4240: .4byte gUnknown_20399E8
- thumb_func_end sub_80C41D8
-
- thumb_func_start sub_80C4244
-sub_80C4244: @ 80C4244
- push {r4-r6,lr}
- sub sp, 0x40
- ldr r6, _080C42FC @ =gUnknown_20399E8
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0xC
- str r0, [sp, 0x30]
- movs r1, 0x80
- add r5, sp, 0x30
- str r1, [r5, 0x4]
- ldrh r0, [r2, 0x8]
- lsls r0, 16
- orrs r0, r1
- str r0, [r5, 0x4]
- ldr r0, _080C4300 @ =gUnknown_83EF27C
- str r0, [sp, 0x38]
- ldrh r3, [r2, 0xA]
- ldr r1, _080C4304 @ =0xffff0000
- add r4, sp, 0x38
- ldr r0, [r4, 0x4]
- ands r0, r1
- orrs r0, r3
- str r0, [r4, 0x4]
- ldrh r0, [r2, 0x8]
- add r1, sp, 0x18
- movs r3, 0
- strh r0, [r1]
- ldrh r2, [r2, 0xA]
- mov r0, sp
- adds r0, 0x1A
- strh r2, [r0]
- ldr r0, _080C4308 @ =gUnknown_83F1C54
- str r0, [sp, 0x1C]
- ldr r0, _080C430C @ =gUnknown_83F1C64
- str r0, [sp, 0x20]
- str r3, [sp, 0x24]
- ldr r0, _080C4310 @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x28]
- ldr r0, _080C4314 @ =SpriteCallbackDummy
- str r0, [sp, 0x2C]
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- ldr r0, _080C4318 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _080C42AA
- ldr r0, _080C431C @ =gUnknown_83EF29C
- str r0, [sp, 0x38]
-_080C42AA:
- adds r0, r5, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- ldr r0, [r6]
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r1, 19
- movs r3, 0x90
- lsls r3, 14
- adds r1, r3
- asrs r1, 16
- movs r3, 0x2
- ldrsh r2, [r0, r3]
- lsls r2, 19
- movs r0, 0x90
- lsls r0, 14
- adds r2, r0
- asrs r2, 16
- mov r0, sp
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r6]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080C4320 @ =gSprites
- adds r1, r0
- str r1, [r2, 0x4]
- movs r0, 0x1
- bl sub_80C4324
- add sp, 0x40
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C42FC: .4byte gUnknown_20399E8
-_080C4300: .4byte gUnknown_83EF27C
-_080C4304: .4byte 0xffff0000
-_080C4308: .4byte gUnknown_83F1C54
-_080C430C: .4byte gUnknown_83F1C64
-_080C4310: .4byte gDummySpriteAffineAnimTable
-_080C4314: .4byte SpriteCallbackDummy
-_080C4318: .4byte gSaveBlock2Ptr
-_080C431C: .4byte gUnknown_83EF29C
-_080C4320: .4byte gSprites
- thumb_func_end sub_80C4244
-
- thumb_func_start sub_80C4324
-sub_80C4324: @ 80C4324
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080C4344 @ =gUnknown_20399E8
- ldr r1, [r1]
- ldr r2, [r1, 0x4]
- adds r2, 0x3E
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- ldrb r3, [r2]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r0
- strb r1, [r2]
- bx lr
- .align 2, 0
-_080C4344: .4byte gUnknown_20399E8
- thumb_func_end sub_80C4324
-
- thumb_func_start sub_80C4348
-sub_80C4348: @ 80C4348
- push {r4,lr}
- ldr r4, _080C437C @ =gUnknown_20399E8
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- cmp r0, 0
- beq _080C4368
- bl DestroySprite
- ldr r0, [r4]
- ldrh r0, [r0, 0x8]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- ldrh r0, [r0, 0xA]
- bl FreeSpritePaletteByTag
-_080C4368:
- ldr r0, [r4]
- cmp r0, 0
- beq _080C4376
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C4376:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C437C: .4byte gUnknown_20399E8
- thumb_func_end sub_80C4348
-
- thumb_func_start sub_80C4380
-sub_80C4380: @ 80C4380
- ldr r0, _080C4388 @ =gUnknown_20399E8
- ldr r0, [r0]
- ldrh r0, [r0]
- bx lr
- .align 2, 0
-_080C4388: .4byte gUnknown_20399E8
- thumb_func_end sub_80C4380
-
- thumb_func_start sub_80C438C
-sub_80C438C: @ 80C438C
- ldr r0, _080C4394 @ =gUnknown_20399E8
- ldr r0, [r0]
- ldrh r0, [r0, 0x2]
- bx lr
- .align 2, 0
-_080C4394: .4byte gUnknown_20399E8
- thumb_func_end sub_80C438C
-
- thumb_func_start sub_80C4398
-sub_80C4398: @ 80C4398
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r5, _080C43F4 @ =gUnknown_20399EC
- ldr r0, _080C43F8 @ =0x0000046c
- bl AllocZeroed
- str r0, [r5]
- movs r2, 0x8D
- lsls r2, 3
- adds r1, r0, r2
- mov r2, r8
- str r2, [r1]
- movs r1, 0x8C
- lsls r1, 3
- adds r0, r1
- strb r4, [r0]
- ldr r0, _080C43FC @ =gUnknown_83F18D8
- ldr r1, [r5]
- bl LZ77UnCompWram
- ldr r0, _080C4400 @ =gUnknown_83F1908
- ldr r1, [r5]
- adds r1, 0x40
- bl LZ77UnCompWram
- ldr r1, _080C4404 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _080C4408 @ =sub_80C440C
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C43F4: .4byte gUnknown_20399EC
-_080C43F8: .4byte 0x0000046c
-_080C43FC: .4byte gUnknown_83F18D8
-_080C4400: .4byte gUnknown_83F1908
-_080C4404: .4byte gTasks
-_080C4408: .4byte sub_80C440C
- thumb_func_end sub_80C4398
-
- thumb_func_start sub_80C440C
-sub_80C440C: @ 80C440C
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080C442C @ =gUnknown_20399EC
- ldr r0, [r0]
- ldr r1, _080C4430 @ =0x00000463
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _080C44BC
- lsls r0, 2
- ldr r1, _080C4434 @ =_080C4438
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C442C: .4byte gUnknown_20399EC
-_080C4430: .4byte 0x00000463
-_080C4434: .4byte _080C4438
- .align 2, 0
-_080C4438:
- .4byte _080C444C
- .4byte _080C4452
- .4byte _080C4468
- .4byte _080C446E
- .4byte _080C44A0
-_080C444C:
- bl sub_80C08E0
- b _080C44A4
-_080C4452:
- bl sub_80C47F0
- ldr r0, _080C4460 @ =gUnknown_20399EC
- ldr r1, [r0]
- ldr r0, _080C4464 @ =0x00000463
- adds r1, r0
- b _080C44AC
- .align 2, 0
-_080C4460: .4byte gUnknown_20399EC
-_080C4464: .4byte 0x00000463
-_080C4468:
- bl sub_80C4750
- b _080C44A4
-_080C446E:
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _080C4498 @ =gUnknown_20399EC
- ldr r1, [r0]
- ldr r0, _080C449C @ =0x00000463
- adds r1, r0
- b _080C44AC
- .align 2, 0
-_080C4498: .4byte gUnknown_20399EC
-_080C449C: .4byte 0x00000463
-_080C44A0:
- bl sub_80C08F4
-_080C44A4:
- ldr r0, _080C44B4 @ =gUnknown_20399EC
- ldr r1, [r0]
- ldr r2, _080C44B8 @ =0x00000463
- adds r1, r2
-_080C44AC:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C44DC
- .align 2, 0
-_080C44B4: .4byte gUnknown_20399EC
-_080C44B8: .4byte 0x00000463
-_080C44BC:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl sub_80C44E4
-_080C44DC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80C440C
-
- thumb_func_start sub_80C44E4
-sub_80C44E4: @ 80C44E4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C4504 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080C4508 @ =gUnknown_20399EC
- ldr r0, [r0]
- movs r2, 0x8D
- lsls r2, 3
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080C4504: .4byte gTasks
-_080C4508: .4byte gUnknown_20399EC
- thumb_func_end sub_80C44E4
-
- thumb_func_start sub_80C450C
-sub_80C450C: @ 80C450C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- mov r10, r0
- mov r9, r1
- adds r4, r2, 0
- adds r5, r3, 0
- ldr r3, [sp, 0x4C]
- ldr r6, [sp, 0x50]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- str r5, [sp, 0x28]
- lsls r3, 24
- lsrs r3, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r7, _080C45F4 @ =gUnknown_20399EC
- ldr r0, [r7]
- adds r0, 0x40
- str r0, [sp, 0x18]
- movs r2, 0x80
- lsls r2, 1
- add r0, sp, 0x18
- lsls r1, r3, 16
- orrs r1, r2
- str r1, [r0, 0x4]
- ldr r1, _080C45F8 @ =gUnknown_83EF2BC
- str r1, [sp, 0x20]
- ldr r2, _080C45FC @ =0xffff0000
- add r5, sp, 0x20
- mov r8, r5
- ldr r1, [r5, 0x4]
- ands r1, r2
- orrs r1, r6
- str r1, [r5, 0x4]
- mov r1, sp
- movs r2, 0
- strh r3, [r1]
- strh r6, [r1, 0x2]
- ldr r1, _080C4600 @ =gUnknown_83F1C68
- str r1, [sp, 0x4]
- ldr r1, _080C4604 @ =gUnknown_83F1C94
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r1, _080C4608 @ =gDummySpriteAffineAnimTable
- str r1, [sp, 0x10]
- ldr r1, _080C460C @ =SpriteCallbackDummy
- str r1, [sp, 0x14]
- bl LoadSpriteSheet
- mov r0, r8
- bl LoadSpritePalette
- lsls r4, 19
- movs r0, 0x90
- lsls r0, 14
- adds r4, r0
- asrs r4, 16
- ldr r1, [sp, 0x28]
- lsls r5, r1, 19
- adds r5, r0
- asrs r5, 16
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r7]
- mov r5, r9
- lsls r5, 4
- mov r9, r5
- movs r1, 0xB6
- lsls r1, 2
- adds r2, r1
- add r2, r9
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080C4610 @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r0, [r7]
- add r0, r9
- movs r2, 0xB5
- lsls r2, 2
- adds r0, r2
- mov r5, r10
- strb r5, [r0]
- 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
-_080C45F4: .4byte gUnknown_20399EC
-_080C45F8: .4byte gUnknown_83EF2BC
-_080C45FC: .4byte 0xffff0000
-_080C4600: .4byte gUnknown_83F1C68
-_080C4604: .4byte gUnknown_83F1C94
-_080C4608: .4byte gDummySpriteAffineAnimTable
-_080C460C: .4byte SpriteCallbackDummy
-_080C4610: .4byte gSprites
- thumb_func_end sub_80C450C
-
- thumb_func_start sub_80C4614
-sub_80C4614: @ 80C4614
- 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]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x28]
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r7, 0
- ldr r0, _080C4730 @ =gUnknown_20399EC
- ldr r0, [r0]
- str r0, [sp, 0x18]
- movs r2, 0x40
- add r0, sp, 0x18
- lsls r1, r4, 16
- orrs r1, r2
- str r1, [r0, 0x4]
- ldr r1, _080C4734 @ =gUnknown_83EF2BC
- str r1, [sp, 0x20]
- ldr r2, _080C4738 @ =0xffff0000
- add r6, sp, 0x20
- ldr r1, [r6, 0x4]
- ands r1, r2
- orrs r1, r5
- str r1, [r6, 0x4]
- mov r1, sp
- strh r4, [r1]
- strh r5, [r1, 0x2]
- ldr r1, _080C473C @ =gUnknown_83F1C70
- str r1, [sp, 0x4]
- ldr r1, _080C4740 @ =gUnknown_83F1C98
- str r1, [sp, 0x8]
- str r7, [sp, 0xC]
- ldr r1, _080C4744 @ =gDummySpriteAffineAnimTable
- str r1, [sp, 0x10]
- ldr r1, _080C4748 @ =SpriteCallbackDummy
- str r1, [sp, 0x14]
- bl LoadSpriteSheet
- adds r0, r6, 0
- bl LoadSpritePalette
- mov r0, r9
- lsls r2, r0, 16
- asrs r2, 16
- mov r1, r8
- lsls r3, r1, 16
- asrs r3, 16
- mov r0, r10
- movs r1, 0
- bl sub_80C4164
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- adds r0, r4, 0
- bl sub_80C35DC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080C46BE
- adds r0, r4, 0
- bl sub_80C35DC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _080C46C4
-_080C46BE:
- cmp r5, 0x64
- beq _080C46C4
- movs r7, 0x2
-_080C46C4:
- mov r3, r8
- lsls r1, r3, 3
- lsls r0, r7, 16
- asrs r0, 16
- adds r0, 0x24
- adds r1, r0
- lsls r1, 16
- asrs r1, 16
- mov r3, r9
- lsls r2, r3, 3
- adds r2, r0
- lsls r2, 16
- asrs r2, 16
- mov r0, sp
- movs r3, 0x3
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080C4730 @ =gUnknown_20399EC
- ldr r2, [r4]
- ldr r1, [sp, 0x28]
- lsls r3, r1, 4
- movs r1, 0xA4
- lsls r1, 1
- adds r2, r1
- adds r2, r3
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080C474C @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, r3
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r3
- mov r1, r10
- strb r1, [r0]
- 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
-_080C4730: .4byte gUnknown_20399EC
-_080C4734: .4byte gUnknown_83EF2BC
-_080C4738: .4byte 0xffff0000
-_080C473C: .4byte gUnknown_83F1C70
-_080C4740: .4byte gUnknown_83F1C98
-_080C4744: .4byte gDummySpriteAffineAnimTable
-_080C4748: .4byte SpriteCallbackDummy
-_080C474C: .4byte gSprites
- thumb_func_end sub_80C4614
-
- thumb_func_start sub_80C4750
-sub_80C4750: @ 80C4750
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r7, 0
- movs r0, 0x3
- bl sub_80C0E04
- lsls r0, 24
- cmp r0, 0
- beq _080C47E0
- movs r1, 0
-_080C476C:
- movs r5, 0
- lsls r0, r1, 24
- adds r1, 0x1
- mov r10, r1
- lsrs r0, 24
- str r0, [sp, 0x8]
-_080C4778:
- movs r4, 0
- lsls r0, r5, 16
- mov r8, r0
- adds r1, r5, 0x1
- mov r9, r1
-_080C4782:
- lsls r3, r4, 16
- asrs r3, 16
- ldr r0, [sp, 0x8]
- movs r1, 0
- mov r6, r8
- asrs r2, r6, 16
- bl sub_80C4164
- lsls r0, 24
- lsrs r0, 24
- bl sub_80C35DC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080C47C2
- adds r0, r7, 0
- adds r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xA
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x8]
- adds r1, r7, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_80C450C
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_080C47C2:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x15
- bls _080C4782
- mov r1, r9
- lsls r0, r1, 16
- lsrs r5, r0, 16
- cmp r5, 0xE
- bls _080C4778
- mov r6, r10
- lsls r0, r6, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _080C476C
-_080C47E0:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C4750
-
- thumb_func_start sub_80C47F0
-sub_80C47F0: @ 80C47F0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r6, 0
- movs r1, 0
-_080C4800:
- movs r7, 0
- lsls r0, r1, 24
- adds r1, 0x1
- str r1, [sp, 0x8]
- lsrs r0, 24
- mov r8, r0
-_080C480C:
- movs r5, 0
- lsls r0, r7, 16
- mov r9, r0
- adds r1, r7, 0x1
- mov r10, r1
-_080C4816:
- lsls r3, r5, 16
- asrs r3, 16
- mov r0, r8
- movs r1, 0x1
- mov r4, r9
- asrs r2, r4, 16
- bl sub_80C4164
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- cmp r0, 0xC5
- beq _080C4884
- cmp r0, 0x8D
- bne _080C4840
- ldr r0, _080C48B4 @ =0x00000844
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080C4884
-_080C4840:
- adds r0, r6, 0
- adds r0, 0x23
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xA
- str r0, [sp, 0x4]
- mov r0, r8
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r7, 0
- bl sub_80C4614
- adds r0, r4, 0
- bl sub_80C3878
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080C487E
- ldr r0, _080C48B8 @ =gUnknown_20399EC
- ldr r0, [r0]
- lsls r1, r6, 4
- movs r2, 0xA4
- lsls r2, 1
- adds r0, r2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x1
- bl StartSpriteAnim
-_080C487E:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_080C4884:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x15
- bls _080C4816
- mov r4, r10
- lsls r0, r4, 16
- lsrs r7, r0, 16
- cmp r7, 0xE
- bls _080C480C
- ldr r1, [sp, 0x8]
- lsls r0, r1, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _080C4800
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C48B4: .4byte 0x00000844
-_080C48B8: .4byte gUnknown_20399EC
- thumb_func_end sub_80C47F0
-
- thumb_func_start sub_80C48BC
-sub_80C48BC: @ 80C48BC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r1, 0x19
- bne _080C4920
- movs r3, 0
- ldr r0, _080C491C @ =gUnknown_20399EC
- mov r12, r0
- movs r1, 0x1
- adds r0, r5, 0
- ands r0, r1
- lsls r5, r0, 2
- movs r6, 0x5
- negs r6, r6
-_080C48E0:
- mov r7, r12
- ldr r1, [r7]
- lsls r2, r3, 4
- adds r0, r1, r2
- movs r7, 0xB5
- lsls r7, 2
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, r4
- beq _080C48F8
- cmp r4, 0xFF
- bne _080C490E
-_080C48F8:
- movs r7, 0xB6
- lsls r7, 2
- adds r0, r1, r7
- adds r0, r2
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1]
-_080C490E:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x18
- bls _080C48E0
- b _080C4954
- .align 2, 0
-_080C491C: .4byte gUnknown_20399EC
-_080C4920:
- ldr r0, _080C495C @ =gUnknown_20399EC
- ldr r2, [r0]
- lsls r1, 4
- adds r0, r2, r1
- movs r3, 0xB5
- lsls r3, 2
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, r4
- bne _080C4954
- movs r7, 0xB6
- lsls r7, 2
- adds r0, r2, r7
- adds r0, r1
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080C4954:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C495C: .4byte gUnknown_20399EC
- thumb_func_end sub_80C48BC
-
- thumb_func_start sub_80C4960
-sub_80C4960: @ 80C4960
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r1, 0x19
- bne _080C49C4
- movs r3, 0
- ldr r0, _080C49C0 @ =gUnknown_20399EC
- mov r12, r0
- movs r1, 0x1
- adds r0, r5, 0
- ands r0, r1
- lsls r5, r0, 2
- movs r6, 0x5
- negs r6, r6
-_080C4984:
- mov r7, r12
- ldr r1, [r7]
- lsls r2, r3, 4
- adds r0, r1, r2
- movs r7, 0xA2
- lsls r7, 1
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, r4
- beq _080C499C
- cmp r4, 0xFF
- bne _080C49B2
-_080C499C:
- movs r7, 0xA4
- lsls r7, 1
- adds r0, r1, r7
- adds r0, r2
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1]
-_080C49B2:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x18
- bls _080C4984
- b _080C49F8
- .align 2, 0
-_080C49C0: .4byte gUnknown_20399EC
-_080C49C4:
- ldr r0, _080C4A00 @ =gUnknown_20399EC
- ldr r2, [r0]
- lsls r1, 4
- adds r0, r2, r1
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, r4
- beq _080C49F8
- movs r7, 0xA4
- lsls r7, 1
- adds r0, r2, r7
- adds r0, r1
- ldr r2, [r0]
- adds r2, 0x3E
- movs r0, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080C49F8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4A00: .4byte gUnknown_20399EC
- thumb_func_end sub_80C4960
-
- thumb_func_start sub_80C4A04
-sub_80C4A04: @ 80C4A04
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _080C4AA4 @ =gUnknown_20399EC
-_080C4A0A:
- ldr r0, [r6]
- lsls r4, r5, 4
- movs r1, 0xB6
- lsls r1, 2
- adds r0, r1
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080C4A3E
- bl DestroySprite
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xB7
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _080C4AA8 @ =0x000002de
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C4A3E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x18
- bls _080C4A0A
- movs r5, 0
- ldr r6, _080C4AA4 @ =gUnknown_20399EC
-_080C4A4C:
- ldr r0, [r6]
- lsls r4, r5, 4
- movs r1, 0xA4
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080C4A82
- bl DestroySprite
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xA6
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r6]
- adds r0, r4
- movs r1, 0xA7
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080C4A82:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x18
- bls _080C4A4C
- ldr r4, _080C4AA4 @ =gUnknown_20399EC
- ldr r0, [r4]
- cmp r0, 0
- beq _080C4A9C
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C4A9C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4AA4: .4byte gUnknown_20399EC
-_080C4AA8: .4byte 0x000002de
- thumb_func_end sub_80C4A04
-
- thumb_func_start sub_80C4AAC
-sub_80C4AAC: @ 80C4AAC
- push {r4,lr}
- lsls r0, 24
- ldr r1, _080C4B24 @ =gUnknown_20399F0
- lsrs r0, 22
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- bne _080C4B28
- movs r0, 0x14
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0x50
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1]
- movs r0, 0x54
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x2]
- movs r0, 0x52
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x4]
- movs r0, 0x48
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x6]
- movs r0, 0x4A
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x8]
- movs r0, 0x40
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0xA]
- movs r0, 0x42
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0xC]
- movs r0, 0x44
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0xE]
- movs r0, 0x46
- bl GetGpuReg
- ldr r1, [r4]
- strh r0, [r1, 0x10]
- movs r0, 0x1
- b _080C4B2A
- .align 2, 0
-_080C4B24: .4byte gUnknown_20399F0
-_080C4B28:
- movs r0, 0
-_080C4B2A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C4AAC
-
- thumb_func_start sub_80C4B30
-sub_80C4B30: @ 80C4B30
- push {r4,lr}
- lsls r0, 24
- ldr r1, _080C4B44 @ =gUnknown_20399F0
- lsrs r0, 22
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- bne _080C4B48
- movs r0, 0
- b _080C4BB0
- .align 2, 0
-_080C4B44: .4byte gUnknown_20399F0
-_080C4B48:
- ldrh r1, [r0]
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x2]
- movs r0, 0x54
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x4]
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x6]
- movs r0, 0x48
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x8]
- movs r0, 0x4A
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0xA]
- movs r0, 0x40
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0xC]
- movs r0, 0x42
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0xE]
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x10]
- movs r0, 0x46
- bl SetGpuReg
- ldr r0, [r4]
- cmp r0, 0
- beq _080C4BAE
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C4BAE:
- movs r0, 0x1
-_080C4BB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C4B30
-
- thumb_func_start sub_80C4BB8
-sub_80C4BB8: @ 80C4BB8
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _080C4BE0 @ =gUnknown_20399F0
-_080C4BBE:
- lsls r0, r5, 2
- adds r4, r0, r6
- ldr r0, [r4]
- cmp r0, 0
- beq _080C4BD0
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C4BD0:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080C4BBE
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4BE0: .4byte gUnknown_20399F0
- thumb_func_end sub_80C4BB8
-
- thumb_func_start sub_80C4BE4
-sub_80C4BE4: @ 80C4BE4
- push {lr}
- sub sp, 0x8
- movs r0, 0
- movs r1, 0
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0
- bl sub_80C4C2C
- movs r0, 0
- bl sub_80C4C48
- movs r0, 0
- mov r1, sp
- bl sub_80C4CF0
- movs r0, 0x1
- mov r1, sp
- bl sub_80C4CF0
- movs r0, 0
- movs r1, 0
- bl sub_80C4C74
- movs r0, 0
- movs r1, 0x1
- bl sub_80C4C9C
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80C4C9C
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_80C4BE4
-
- thumb_func_start sub_80C4C2C
-sub_80C4C2C: @ 80C4C2C
- push {lr}
- adds r3, r0, 0
- lsls r1, 16
- lsls r2, 16
- lsls r3, 24
- orrs r3, r1
- orrs r3, r2
- lsrs r3, 16
- movs r0, 0x50
- adds r1, r3, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_80C4C2C
-
- thumb_func_start sub_80C4C48
-sub_80C4C48: @ 80C4C48
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x54
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_80C4C48
-
- thumb_func_start sub_80C4C5C
-sub_80C4C5C: @ 80C4C5C
- push {lr}
- adds r2, r0, 0
- lsls r1, 16
- lsls r2, 24
- orrs r2, r1
- lsrs r2, 16
- movs r0, 0x52
- adds r1, r2, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_80C4C5C
-
- thumb_func_start sub_80C4C74
-sub_80C4C74: @ 80C4C74
- push {lr}
- lsls r0, 16
- lsls r1, 24
- orrs r1, r0
- lsrs r1, 16
- movs r0, 0x48
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_80C4C74
-
- thumb_func_start sub_80C4C88
-sub_80C4C88: @ 80C4C88
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4A
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_80C4C88
-
- thumb_func_start sub_80C4C9C
-sub_80C4C9C: @ 80C4C9C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r1, _080C4CBC @ =gUnknown_83F1CA0
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- cmp r4, 0
- beq _080C4CC0
- cmp r4, 0x1
- beq _080C4CDC
- b _080C4CE8
- .align 2, 0
-_080C4CBC: .4byte gUnknown_83F1CA0
-_080C4CC0:
- movs r0, 0
- bl GetGpuReg
- adds r1, r0, 0
- lsls r0, r5, 1
- add r0, sp
- ldrh r0, [r0]
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0
- bl SetGpuReg
- b _080C4CE8
-_080C4CDC:
- lsls r0, r5, 1
- add r0, sp
- ldrh r1, [r0]
- movs r0, 0
- bl ClearGpuRegBits
-_080C4CE8:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80C4C9C
-
- thumb_func_start sub_80C4CF0
-sub_80C4CF0: @ 80C4CF0
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r4, 24
- ldr r5, _080C4D2C @ =gUnknown_83F1CA4
- lsrs r4, 23
- adds r0, r4, r5
- ldrb r0, [r0]
- ldrh r1, [r6, 0x2]
- lsls r1, 8
- ldrh r2, [r6, 0x6]
- orrs r1, r2
- lsls r1, 16
- lsrs r1, 16
- bl SetGpuReg
- adds r5, 0x1
- adds r4, r5
- ldrb r0, [r4]
- ldrh r1, [r6]
- lsls r1, 8
- ldrh r2, [r6, 0x4]
- orrs r1, r2
- lsls r1, 16
- lsrs r1, 16
- bl SetGpuReg
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4D2C: .4byte gUnknown_83F1CA4
- thumb_func_end sub_80C4CF0
-
- thumb_func_start sub_80C4D30
-sub_80C4D30: @ 80C4D30
- push {lr}
- bl sub_80C4BB8
- bl sub_80C4BE4
- pop {r0}
- bx r0
- thumb_func_end sub_80C4D30
-
- thumb_func_start sub_80C4D40
-sub_80C4D40: @ 80C4D40
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080C4D68 @ =gUnknown_20399D4
- ldr r0, [r0]
- cmp r0, 0
- bne _080C4D70
- cmp r1, 0x5E
- bne _080C4D70
- ldr r0, _080C4D6C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0xA
- bne _080C4D70
- ldrb r0, [r1, 0x5]
- cmp r0, 0x6
- bhi _080C4D70
- movs r0, 0x1
- b _080C4D72
- .align 2, 0
-_080C4D68: .4byte gUnknown_20399D4
-_080C4D6C: .4byte gSaveBlock1Ptr
-_080C4D70:
- movs r0, 0
-_080C4D72:
- pop {r1}
- bx r1
- thumb_func_end sub_80C4D40
-
- thumb_func_start GetMapName
-GetMapName: @ 80C4D78
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsls r2, 16
- lsrs r4, r2, 16
- lsrs r0, r1, 16
- ldr r2, _080C4D9C @ =0xffa80000
- adds r1, r2
- lsrs r5, r1, 16
- cmp r5, 0x6C
- bhi _080C4DBC
- bl sub_80C4D40
- cmp r0, 0x1
- bne _080C4DA4
- ldr r1, _080C4DA0 @ =gMapSecName_CeladonDept
- b _080C4DAC
- .align 2, 0
-_080C4D9C: .4byte 0xffa80000
-_080C4DA0: .4byte gMapSecName_CeladonDept
-_080C4DA4:
- ldr r0, _080C4DB8 @ =gUnknown_83F1CAC
- lsls r1, r5, 2
- adds r1, r0
- ldr r1, [r1]
-_080C4DAC:
- adds r0, r6, 0
- bl StringCopy
- adds r1, r0, 0
- b _080C4DCE
- .align 2, 0
-_080C4DB8: .4byte gUnknown_83F1CAC
-_080C4DBC:
- cmp r4, 0
- bne _080C4DC2
- movs r4, 0x12
-_080C4DC2:
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- bl StringFill
- b _080C4DF2
-_080C4DCE:
- cmp r4, 0
- beq _080C4DF0
- subs r0, r1, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcs _080C4DEC
- movs r2, 0
-_080C4DDE:
- strb r2, [r1]
- adds r1, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcc _080C4DDE
-_080C4DEC:
- movs r0, 0xFF
- strb r0, [r1]
-_080C4DF0:
- adds r0, r1, 0
-_080C4DF2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetMapName
-
- thumb_func_start GetMapNameGeneric
-GetMapNameGeneric: @ 80C4DF8
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0
- bl GetMapName
- pop {r1}
- bx r1
- thumb_func_end GetMapNameGeneric
-
- thumb_func_start sub_80C4E08
-sub_80C4E08: @ 80C4E08
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl GetMapNameGeneric
- pop {r1}
- bx r1
- thumb_func_end sub_80C4E08
-
- thumb_func_start sub_80C4E18
-sub_80C4E18: @ 80C4E18
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r0, _080C4E38 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C4E3C @ =0x00004799
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080C4E40
- movs r0, 0x3
- movs r1, 0
- bl FillWindowPixelBuffer
- b _080C4E48
- .align 2, 0
-_080C4E38: .4byte gUnknown_20399D4
-_080C4E3C: .4byte 0x00004799
-_080C4E40:
- movs r0, 0x3
- movs r1, 0xFF
- bl FillWindowPixelBuffer
-_080C4E48:
- ldr r0, _080C4E70 @ =gUnknown_83F1CA8
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AddTextPrinterParameterized3
- movs r0, 0x3
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4E70: .4byte gUnknown_83F1CA8
- thumb_func_end sub_80C4E18
-
- thumb_func_start sub_80C4E74
-sub_80C4E74: @ 80C4E74
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r0, _080C4E94 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C4E98 @ =0x00004799
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080C4E9C
- movs r0, 0x4
- movs r1, 0
- bl FillWindowPixelBuffer
- b _080C4EA4
- .align 2, 0
-_080C4E94: .4byte gUnknown_20399D4
-_080C4E98: .4byte 0x00004799
-_080C4E9C:
- movs r0, 0x4
- movs r1, 0xFF
- bl FillWindowPixelBuffer
-_080C4EA4:
- ldr r0, _080C4ECC @ =gUnknown_83F1CA8
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x4
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AddTextPrinterParameterized3
- movs r0, 0x4
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C4ECC: .4byte gUnknown_83F1CA8
- thumb_func_end sub_80C4E74
-
- thumb_func_start sub_80C4ED0
-sub_80C4ED0: @ 80C4ED0
- push {lr}
- lsls r0, 24
- cmp r0, 0
- bne _080C4EE6
- movs r0, 0x3
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- b _080C4EF2
-_080C4EE6:
- movs r0, 0x3
- bl ClearWindowTilemap
- movs r0, 0x4
- bl ClearWindowTilemap
-_080C4EF2:
- pop {r0}
- bx r0
- thumb_func_end sub_80C4ED0
-
- thumb_func_start MCB2_FlyMap
-MCB2_FlyMap: @ 80C4EF8
- push {lr}
- bl sub_80C51E8
- movs r0, 0x2
- bl sub_80BFEDC
- pop {r0}
- bx r0
- thumb_func_end MCB2_FlyMap
-
- thumb_func_start sub_80C4F08
-sub_80C4F08: @ 80C4F08
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080C4F28 @ =gUnknown_20399FC
- ldr r2, [r0]
- ldrb r0, [r2]
- cmp r0, 0x6
- bls _080C4F1C
- b _080C51B8
-_080C4F1C:
- lsls r0, 2
- ldr r1, _080C4F2C @ =_080C4F30
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C4F28: .4byte gUnknown_20399FC
-_080C4F2C: .4byte _080C4F30
- .align 2, 0
-_080C4F30:
- .4byte _080C4F4C
- .4byte _080C4F92
- .4byte _080C4FEC
- .4byte _080C5000
- .4byte _080C5028
- .4byte _080C5180
- .4byte _080C5196
-_080C4F4C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_80C0E20
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_80C07E4
- adds r2, r0, 0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80C4398
- movs r0, 0
- movs r1, 0
- bl sub_80C3008
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80C41D8
- movs r0, 0
- bl sub_80C3154
- movs r0, 0
- bl sub_80C4324
- b _080C51A6
-_080C4F92:
- movs r0, 0x2
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C4FAE
- bl sub_80C07E4
- adds r1, r0, 0
- adds r0, r5, 0
- bl sub_80C2208
- b _080C51A6
-_080C4FAE:
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- ldr r0, _080C4FE8 @ =gUnknown_8418EB5
- bl sub_80C4E18
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0
- bl sub_80C48BC
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x19
- movs r2, 0
- bl sub_80C4960
- b _080C51A6
- .align 2, 0
-_080C4FE8: .4byte gUnknown_8418EB5
-_080C4FEC:
- ldr r0, _080C4FFC @ =gUnknown_8418EB0
- bl sub_80C4E74
- movs r0, 0
- bl sub_80C4ED0
- b _080C51A6
- .align 2, 0
-_080C4FFC: .4byte gUnknown_8418EB0
-_080C5000:
- ldr r0, _080C5024 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080C500E
- b _080C51DC
-_080C500E:
- bl sub_80C0B18
- movs r0, 0
- bl PutWindowTilemap
- bl sub_80C0BB0
- movs r0, 0x1
- bl PutWindowTilemap
- b _080C51A6
- .align 2, 0
-_080C5024: .4byte gPaletteFade
-_080C5028:
- bl sub_80C3400
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x5
- bls _080C5038
- b _080C51DC
-_080C5038:
- lsls r0, 2
- ldr r1, _080C5044 @ =_080C5048
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C5044: .4byte _080C5048
- .align 2, 0
-_080C5048:
- .4byte _080C51DC
- .4byte _080C51DC
- .4byte _080C5070
- .4byte _080C50F8
- .4byte _080C5168
- .4byte _080C5060
-_080C5060:
- ldr r0, _080C506C @ =gUnknown_20399FC
- ldr r1, [r0]
- movs r0, 0x6
- strb r0, [r1]
- b _080C51DC
- .align 2, 0
-_080C506C: .4byte gUnknown_20399FC
-_080C5070:
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080C5086
- movs r0, 0x66
- bl PlaySE
- b _080C508A
-_080C5086:
- bl sub_80C0450
-_080C508A:
- bl sub_80C3178
- bl sub_80C0B18
- bl sub_80C0BB0
- bl sub_80C0B9C
- bl sub_80C3508
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x15
- bne _080C50C4
- bl sub_80C3514
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xD
- bne _080C50C4
- movs r0, 0xE1
- bl PlaySE
- ldr r0, _080C50C0 @ =gUnknown_8418E95
- bl sub_80C4E74
- b _080C51DC
- .align 2, 0
-_080C50C0: .4byte gUnknown_8418E95
-_080C50C4:
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080C50E0
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _080C50EC
-_080C50E0:
- ldr r0, _080C50E8 @ =gUnknown_8418EB0
- bl sub_80C4E74
- b _080C51DC
- .align 2, 0
-_080C50E8: .4byte gUnknown_8418EB0
-_080C50EC:
- ldr r0, _080C50F4 @ =gUnknown_8418E8B
- bl sub_80C4E74
- b _080C51DC
- .align 2, 0
-_080C50F4: .4byte gUnknown_8418E8B
-_080C50F8:
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080C5114
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _080C51DC
-_080C5114:
- movs r0, 0x3
- bl sub_80C0E04
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _080C51DC
- ldr r0, _080C514C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- bl get_map_light_level_by_bank_and_number
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _080C5140
- cmp r0, 0x8
- bne _080C5154
-_080C5140:
- ldr r2, _080C5150 @ =gUnknown_20399FC
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1, 0x2]
- ldr r1, [r2]
- b _080C51AA
- .align 2, 0
-_080C514C: .4byte gSaveBlock1Ptr
-_080C5150: .4byte gUnknown_20399FC
-_080C5154:
- movs r0, 0x1
- bl PlaySE
- ldr r1, _080C5164 @ =gUnknown_20399FC
- ldr r0, [r1]
- strb r4, [r0, 0x2]
- ldr r1, [r1]
- b _080C51AA
- .align 2, 0
-_080C5164: .4byte gUnknown_20399FC
-_080C5168:
- bl sub_80C0E20
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C517C @ =sub_80C07F8
- adds r1, r5, 0
- bl sub_80C0E70
- b _080C51DC
- .align 2, 0
-_080C517C: .4byte sub_80C07F8
-_080C5180:
- movs r0, 0x2
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C51A6
- adds r0, r5, 0
- bl sub_80C2C1C
- b _080C51A6
-_080C5196:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080C51A6:
- ldr r0, _080C51B4 @ =gUnknown_20399FC
- ldr r1, [r0]
-_080C51AA:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080C51DC
- .align 2, 0
-_080C51B4: .4byte gUnknown_20399FC
-_080C51B8:
- ldr r0, _080C51E4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080C51DC
- ldrb r0, [r2, 0x2]
- cmp r0, 0x1
- bne _080C51D6
- bl sub_80C3520
- lsls r0, 16
- lsrs r0, 16
- bl sub_80C527C
-_080C51D6:
- adds r0, r5, 0
- bl sub_80C5208
-_080C51DC:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C51E4: .4byte gPaletteFade
- thumb_func_end sub_80C4F08
-
- thumb_func_start sub_80C51E8
-sub_80C51E8: @ 80C51E8
- push {r4,lr}
- ldr r4, _080C5204 @ =gUnknown_20399FC
- movs r0, 0x4
- bl AllocZeroed
- str r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- strb r1, [r0, 0x1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5204: .4byte gUnknown_20399FC
- thumb_func_end sub_80C51E8
-
- thumb_func_start sub_80C5208
-sub_80C5208: @ 80C5208
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x2
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C5220
- bl sub_80C25BC
-_080C5220:
- bl sub_80C4A04
- bl sub_80C3188
- bl sub_80C4348
- bl sub_80C4D30
- bl sub_80C0898
- adds r0, r4, 0
- bl DestroyTask
- bl FreeAllWindowBuffers
- ldr r0, _080C5250 @ =gUnknown_20399FC
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x1
- bne _080C5258
- ldr r0, _080C5254 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _080C525E
- .align 2, 0
-_080C5250: .4byte gUnknown_20399FC
-_080C5254: .4byte CB2_ReturnToField
-_080C5258:
- ldr r0, _080C5274 @ =CB2_ReturnToPartyMenuFromFlyMap
- bl SetMainCallback2
-_080C525E:
- ldr r4, _080C5278 @ =gUnknown_20399FC
- ldr r0, [r4]
- cmp r0, 0
- beq _080C526E
- bl Free
- movs r0, 0
- str r0, [r4]
-_080C526E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5274: .4byte CB2_ReturnToPartyMenuFromFlyMap
-_080C5278: .4byte gUnknown_20399FC
- thumb_func_end sub_80C5208
-
- thumb_func_start sub_80C527C
-sub_80C527C: @ 80C527C
- push {r4,r5,lr}
- lsls r0, 16
- ldr r1, _080C52A4 @ =0xffa80000
- adds r0, r1
- lsrs r0, 16
- ldr r5, _080C52A8 @ =gUnknown_83F2EE0
- lsls r1, r0, 1
- adds r4, r1, r0
- adds r0, r5, 0x2
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080C52AC
- bl sub_805546C
- adds r0, r4, r5
- bl sub_8124C1C
- b _080C52C6
- .align 2, 0
-_080C52A4: .4byte 0xffa80000
-_080C52A8: .4byte gUnknown_83F2EE0
-_080C52AC:
- adds r0, r4, r5
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r5, 0x1
- adds r1, r4, r1
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- bl warp1_set_2
-_080C52C6:
- bl sub_80842C8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80C527C
-
- thumb_func_start sub_80C52D0
-sub_80C52D0: @ 80C52D0
- push {lr}
- ldr r2, _080C5318 @ =gUnknown_3005334
- ldr r1, [r0, 0x4]
- str r1, [r2]
- ldr r2, _080C531C @ =gUnknown_3005348
- ldrb r1, [r0, 0x1F]
- strb r1, [r2]
- ldr r2, _080C5320 @ =gUnknown_3005330
- ldrb r1, [r0, 0x19]
- strb r1, [r2]
- ldr r2, _080C5324 @ =gUnknown_3005344
- ldrb r1, [r0, 0x1A]
- strb r1, [r2]
- ldr r2, _080C5328 @ =gUnknown_3005340
- ldrb r1, [r0, 0x1B]
- strb r1, [r2]
- ldr r2, _080C532C @ =gUnknown_3005338
- ldrb r1, [r0, 0x1C]
- strb r1, [r2]
- ldr r2, _080C5330 @ =gUnknown_300534C
- ldrb r1, [r0, 0x1D]
- strb r1, [r2]
- ldr r2, _080C5334 @ =gUnknown_300533C
- ldrb r1, [r0, 0x1E]
- strb r1, [r2]
- ldrb r0, [r0]
- subs r0, 0x2
- cmp r0, 0x22
- bls _080C530C
- b _080C5458
-_080C530C:
- lsls r0, 2
- ldr r1, _080C5338 @ =_080C533C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C5318: .4byte gUnknown_3005334
-_080C531C: .4byte gUnknown_3005348
-_080C5320: .4byte gUnknown_3005330
-_080C5324: .4byte gUnknown_3005344
-_080C5328: .4byte gUnknown_3005340
-_080C532C: .4byte gUnknown_3005338
-_080C5330: .4byte gUnknown_300534C
-_080C5334: .4byte gUnknown_300533C
-_080C5338: .4byte _080C533C
- .align 2, 0
-_080C533C:
- .4byte _080C53C8
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5428
- .4byte _080C5458
- .4byte _080C53CE
- .4byte _080C53D4
- .4byte _080C53E8
- .4byte _080C53FA
- .4byte _080C5458
- .4byte _080C5410
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5416
- .4byte _080C53F4
- .4byte _080C541C
- .4byte _080C5422
- .4byte _080C5458
- .4byte _080C5458
- .4byte _080C5434
-_080C53C8:
- bl sub_80C55D4
- b _080C5458
-_080C53CE:
- bl sub_80C568C
- b _080C5458
-_080C53D4:
- bl sub_80C5884
- ldr r0, _080C53E4 @ =gUnknown_3005348
- ldrb r0, [r0]
- bl sub_80C5748
- b _080C5458
- .align 2, 0
-_080C53E4: .4byte gUnknown_3005348
-_080C53E8:
- bl sub_80C5884
- bl sub_80C59D4
- bl sub_80C57EC
-_080C53F4:
- bl sub_80C59D4
- b _080C5458
-_080C53FA:
- bl sub_80C5884
- bl sub_80C5B9C
- bl sub_80C5B9C
- bl sub_80C5C44
- bl sub_80C57EC
- b _080C5458
-_080C5410:
- bl sub_80C5A6C
- b _080C5458
-_080C5416:
- bl sub_80C5884
- b _080C5458
-_080C541C:
- bl sub_80C5B9C
- b _080C5458
-_080C5422:
- bl sub_80C5C44
- b _080C5458
-_080C5428:
- bl sub_80C55F4
- movs r0, 0x3
- bl sub_80C545C
- b _080C5458
-_080C5434:
- bl sub_80C5884
- bl sub_80C5B9C
- bl sub_80C5C44
- bl sub_80C57EC
- bl sub_80C568C
- bl sub_80C568C
- movs r0, 0x2
- bl sub_80C545C
- movs r0, 0x4
- bl sub_80C5514
-_080C5458:
- pop {r0}
- bx r0
- thumb_func_end sub_80C52D0
-
- thumb_func_start sub_80C545C
-sub_80C545C: @ 80C545C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r2, 0
- ldr r0, _080C54FC @ =gUnknown_3005338
- mov r8, r0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C54EE
- ldr r1, _080C5500 @ =gUnknown_3005340
- mov r12, r1
- ldr r3, _080C5504 @ =gUnknown_300534C
- mov r10, r3
- ldr r0, _080C5508 @ =gUnknown_3005330
- mov r9, r0
-_080C5482:
- ldr r1, _080C550C @ =gUnknown_3005344
- ldrb r0, [r1]
- adds r0, r2
- mov r3, r10
- ldrb r1, [r3]
- muls r0, r1
- lsls r0, 1
- ldr r3, _080C5510 @ =gUnknown_3005334
- ldr r1, [r3]
- adds r1, r0
- mov r3, r9
- ldrb r0, [r3]
- lsls r0, 1
- adds r3, r1, r0
- movs r4, 0
- adds r5, r2, 0x1
- mov r0, r12
- ldrb r0, [r0]
- cmp r4, r0
- bcs _080C54E2
- movs r6, 0x80
- lsls r6, 8
-_080C54AE:
- ldrh r1, [r3]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- bne _080C54D2
- movs r0, 0x1F
- ands r0, r1
- adds r0, r7
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _080C54C8
- movs r2, 0x1F
-_080C54C8:
- lsls r0, r2, 10
- lsls r1, r2, 5
- orrs r0, r1
- orrs r0, r2
- strh r0, [r3]
-_080C54D2:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r3, 0x2
- mov r1, r12
- ldrb r1, [r1]
- cmp r4, r1
- bcc _080C54AE
-_080C54E2:
- lsls r0, r5, 24
- lsrs r2, r0, 24
- mov r3, r8
- ldrb r3, [r3]
- cmp r2, r3
- bcc _080C5482
-_080C54EE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C54FC: .4byte gUnknown_3005338
-_080C5500: .4byte gUnknown_3005340
-_080C5504: .4byte gUnknown_300534C
-_080C5508: .4byte gUnknown_3005330
-_080C550C: .4byte gUnknown_3005344
-_080C5510: .4byte gUnknown_3005334
- thumb_func_end sub_80C545C
-
- thumb_func_start sub_80C5514
-sub_80C5514: @ 80C5514
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0
- ldr r0, _080C55BC @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C55AC
- ldr r1, _080C55C0 @ =gUnknown_3005340
- mov r10, r1
-_080C5532:
- ldr r3, _080C55C4 @ =gUnknown_3005344
- ldrb r0, [r3]
- adds r0, r2
- ldr r3, _080C55C8 @ =gUnknown_300534C
- ldrb r1, [r3]
- muls r0, r1
- lsls r0, 1
- ldr r3, _080C55CC @ =gUnknown_3005334
- ldr r1, [r3]
- adds r1, r0
- ldr r3, _080C55D0 @ =gUnknown_3005330
- ldrb r0, [r3]
- lsls r0, 1
- adds r3, r1, r0
- movs r5, 0
- adds r7, r2, 0x1
- mov r0, r10
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080C55A0
- movs r1, 0x80
- lsls r1, 8
- mov r9, r1
- movs r0, 0x1F
- mov r12, r0
- mov r1, r8
- subs r6, r0, r1
-_080C5568:
- ldrh r1, [r3]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080C5590
- movs r4, 0x1F
- mov r2, r12
- ands r2, r1
- cmp r2, r6
- ble _080C5586
- mov r1, r8
- lsrs r0, r1, 1
- subs r0, r4, r0
- lsls r0, 24
- lsrs r2, r0, 24
-_080C5586:
- lsls r0, r2, 10
- lsls r1, r2, 5
- orrs r0, r1
- orrs r0, r2
- strh r0, [r3]
-_080C5590:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r3, 0x2
- mov r0, r10
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080C5568
-_080C55A0:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r1, _080C55BC @ =gUnknown_3005338
- ldrb r1, [r1]
- cmp r2, r1
- bcc _080C5532
-_080C55AC:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C55BC: .4byte gUnknown_3005338
-_080C55C0: .4byte gUnknown_3005340
-_080C55C4: .4byte gUnknown_3005344
-_080C55C8: .4byte gUnknown_300534C
-_080C55CC: .4byte gUnknown_3005334
-_080C55D0: .4byte gUnknown_3005330
- thumb_func_end sub_80C5514
-
- thumb_func_start sub_80C55D4
-sub_80C55D4: @ 80C55D4
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _080C55F0 @ =0x00000c7f
-_080C55DA:
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_80C5CF8
- adds r4, 0x1
- cmp r4, r5
- bls _080C55DA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C55F0: .4byte 0x00000c7f
- thumb_func_end sub_80C55D4
-
- thumb_func_start sub_80C55F4
-sub_80C55F4: @ 80C55F4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080C5674 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C5666
- ldr r0, _080C5678 @ =gUnknown_3005334
- mov r8, r0
- ldr r3, _080C567C @ =gUnknown_3005340
-_080C560C:
- ldr r0, _080C5680 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C5684 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080C5688 @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080C565A
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080C5638:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080C564C
- adds r0, r4, 0
- str r3, [sp]
- bl sub_80C5ECC
- strh r0, [r4]
- ldr r3, [sp]
-_080C564C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080C5638
-_080C565A:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080C5674 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C560C
-_080C5666:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5674: .4byte gUnknown_3005338
-_080C5678: .4byte gUnknown_3005334
-_080C567C: .4byte gUnknown_3005340
-_080C5680: .4byte gUnknown_3005344
-_080C5684: .4byte gUnknown_300534C
-_080C5688: .4byte gUnknown_3005330
- thumb_func_end sub_80C55F4
-
- thumb_func_start sub_80C568C
-sub_80C568C: @ 80C568C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r2, 0
- ldr r0, _080C5730 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C5722
- ldr r0, _080C5734 @ =gUnknown_3005334
- mov r8, r0
- ldr r3, _080C5738 @ =gUnknown_300534C
-_080C56A4:
- ldr r0, _080C573C @ =gUnknown_3005344
- ldrb r1, [r0]
- ldrb r0, [r3]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080C5740 @ =gUnknown_3005330
- ldrb r0, [r0]
- adds r0, r2
- lsls r0, 1
- adds r4, r1, r0
- ldrh r1, [r4]
- mov r0, sp
- strh r1, [r0]
- movs r5, 0x1
- ldrb r0, [r3]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080C5744 @ =gUnknown_3005338
- ldrb r0, [r0]
- subs r0, 0x1
- adds r7, r2, 0x1
- cmp r5, r0
- bge _080C5716
- ldr r6, _080C5738 @ =gUnknown_300534C
-_080C56DA:
- ldrh r0, [r4]
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080C5700
- ldrb r2, [r6]
- lsls r2, 1
- adds r2, r4, r2
- mov r0, sp
- adds r1, r4, 0
- str r3, [sp, 0x4]
- bl sub_80C61BC
- strh r0, [r4]
- mov r1, sp
- strh r0, [r1]
- ldr r3, [sp, 0x4]
-_080C5700:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r6]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080C5744 @ =gUnknown_3005338
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r5, r0
- blt _080C56DA
-_080C5716:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080C5730 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C56A4
-_080C5722:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5730: .4byte gUnknown_3005340
-_080C5734: .4byte gUnknown_3005334
-_080C5738: .4byte gUnknown_300534C
-_080C573C: .4byte gUnknown_3005344
-_080C5740: .4byte gUnknown_3005330
-_080C5744: .4byte gUnknown_3005338
- thumb_func_end sub_80C568C
-
- thumb_func_start sub_80C5748
-sub_80C5748: @ 80C5748
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0
- ldr r0, _080C57D4 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C57C4
- ldr r0, _080C57D8 @ =gUnknown_3005334
- mov r9, r0
- ldr r3, _080C57DC @ =gUnknown_3005340
-_080C5768:
- ldr r0, _080C57E0 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C57E4 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r9
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080C57E8 @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080C57B8
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080C5794:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080C57AA
- adds r0, r4, 0
- mov r1, r8
- str r3, [sp]
- bl sub_80C5F00
- strh r0, [r4]
- ldr r3, [sp]
-_080C57AA:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080C5794
-_080C57B8:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080C57D4 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C5768
-_080C57C4:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C57D4: .4byte gUnknown_3005338
-_080C57D8: .4byte gUnknown_3005334
-_080C57DC: .4byte gUnknown_3005340
-_080C57E0: .4byte gUnknown_3005344
-_080C57E4: .4byte gUnknown_300534C
-_080C57E8: .4byte gUnknown_3005330
- thumb_func_end sub_80C5748
-
- thumb_func_start sub_80C57EC
-sub_80C57EC: @ 80C57EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080C586C @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C585E
- ldr r0, _080C5870 @ =gUnknown_3005334
- mov r8, r0
- ldr r3, _080C5874 @ =gUnknown_3005340
-_080C5804:
- ldr r0, _080C5878 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C587C @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080C5880 @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080C5852
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080C5830:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080C5844
- adds r0, r4, 0
- str r3, [sp]
- bl sub_80C600C
- strh r0, [r4]
- ldr r3, [sp]
-_080C5844:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080C5830
-_080C5852:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080C586C @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C5804
-_080C585E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C586C: .4byte gUnknown_3005338
-_080C5870: .4byte gUnknown_3005334
-_080C5874: .4byte gUnknown_3005340
-_080C5878: .4byte gUnknown_3005344
-_080C587C: .4byte gUnknown_300534C
-_080C5880: .4byte gUnknown_3005330
- thumb_func_end sub_80C57EC
-
- thumb_func_start sub_80C5884
-sub_80C5884: @ 80C5884
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r7, 0
- ldr r0, _080C59BC @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r7, r0
- bcs _080C5910
- ldr r0, _080C59C0 @ =gUnknown_3005334
- mov r8, r0
-_080C589A:
- ldr r0, _080C59C4 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r7
- ldr r0, _080C59C8 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r2, r8
- ldr r1, [r2]
- adds r1, r0
- ldr r0, _080C59CC @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r5, r1, r0
- adds r4, r5, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80C603C
- strh r0, [r5]
- movs r6, 0x1
- adds r5, r4, 0
- ldr r0, _080C59D0 @ =gUnknown_3005340
- ldrb r0, [r0]
- subs r0, 0x1
- adds r7, 0x1
- cmp r6, r0
- bge _080C58FA
-_080C58D2:
- adds r4, r5, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80C603C
- strh r0, [r5]
- subs r1, r5, 0x2
- adds r0, r5, 0
- bl sub_80C603C
- strh r0, [r5]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r5, r4, 0
- ldr r0, _080C59D0 @ =gUnknown_3005340
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r6, r0
- blt _080C58D2
-_080C58FA:
- subs r1, r5, 0x2
- adds r0, r5, 0
- bl sub_80C603C
- strh r0, [r5]
- lsls r0, r7, 24
- lsrs r7, r0, 24
- ldr r0, _080C59BC @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r7, r0
- bcc _080C589A
-_080C5910:
- movs r6, 0
- ldr r0, _080C59D0 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r6, r0
- bcs _080C59B0
- ldr r3, _080C59C0 @ =gUnknown_3005334
- mov r9, r3
- ldr r0, _080C59C8 @ =gUnknown_300534C
- mov r8, r0
-_080C5922:
- ldr r0, _080C59C4 @ =gUnknown_3005344
- ldrb r0, [r0]
- mov r2, r8
- ldrb r1, [r2]
- muls r0, r1
- lsls r0, 1
- mov r3, r9
- ldr r2, [r3]
- adds r2, r0
- ldr r0, _080C59CC @ =gUnknown_3005330
- ldrb r0, [r0]
- adds r0, r6
- lsls r0, 1
- adds r5, r2, r0
- lsls r1, 1
- adds r1, r5, r1
- adds r0, r5, 0
- bl sub_80C603C
- strh r0, [r5]
- movs r7, 0x1
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 1
- adds r5, r0
- ldr r0, _080C59BC @ =gUnknown_3005338
- ldrb r0, [r0]
- subs r0, 0x1
- adds r6, 0x1
- cmp r7, r0
- bge _080C5994
- ldr r4, _080C59C8 @ =gUnknown_300534C
-_080C5962:
- ldrb r1, [r4]
- lsls r1, 1
- adds r1, r5, r1
- adds r0, r5, 0
- bl sub_80C603C
- strh r0, [r5]
- ldrb r1, [r4]
- lsls r1, 1
- subs r1, r5, r1
- adds r0, r5, 0
- bl sub_80C603C
- strh r0, [r5]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r4]
- lsls r0, 1
- adds r5, r0
- ldr r0, _080C59BC @ =gUnknown_3005338
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r7, r0
- blt _080C5962
-_080C5994:
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 1
- subs r1, r5, r1
- adds r0, r5, 0
- bl sub_80C603C
- strh r0, [r5]
- lsls r0, r6, 24
- lsrs r6, r0, 24
- ldr r0, _080C59D0 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r6, r0
- bcc _080C5922
-_080C59B0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C59BC: .4byte gUnknown_3005338
-_080C59C0: .4byte gUnknown_3005334
-_080C59C4: .4byte gUnknown_3005344
-_080C59C8: .4byte gUnknown_300534C
-_080C59CC: .4byte gUnknown_3005330
-_080C59D0: .4byte gUnknown_3005340
- thumb_func_end sub_80C5884
-
- thumb_func_start sub_80C59D4
-sub_80C59D4: @ 80C59D4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080C5A54 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C5A46
- ldr r0, _080C5A58 @ =gUnknown_3005334
- mov r8, r0
- ldr r3, _080C5A5C @ =gUnknown_3005340
-_080C59EC:
- ldr r0, _080C5A60 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C5A64 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080C5A68 @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080C5A3A
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080C5A18:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080C5A2C
- adds r0, r4, 0
- str r3, [sp]
- bl sub_80C606C
- strh r0, [r4]
- ldr r3, [sp]
-_080C5A2C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080C5A18
-_080C5A3A:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080C5A54 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C59EC
-_080C5A46:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5A54: .4byte gUnknown_3005338
-_080C5A58: .4byte gUnknown_3005334
-_080C5A5C: .4byte gUnknown_3005340
-_080C5A60: .4byte gUnknown_3005344
-_080C5A64: .4byte gUnknown_300534C
-_080C5A68: .4byte gUnknown_3005330
- thumb_func_end sub_80C59D4
-
- thumb_func_start sub_80C5A6C
-sub_80C5A6C: @ 80C5A6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _080C5B98 @ =gUnknown_3005334
- ldr r4, [r0]
- movs r6, 0
- movs r0, 0x80
- lsls r0, 8
- adds r5, r0, 0
-_080C5A84:
- movs r7, 0
-_080C5A86:
- ldrh r0, [r4]
- ands r0, r5
- cmp r0, 0
- bne _080C5A96
- adds r0, r4, 0
- bl sub_80C606C
- strh r0, [r4]
-_080C5A96:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r4, 0x2
- cmp r7, 0x3F
- bls _080C5A86
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3F
- bls _080C5A84
- movs r7, 0
- ldr r1, _080C5B98 @ =gUnknown_3005334
- mov r10, r1
- mov r3, sp
- movs r2, 0x80
- lsls r2, 8
- mov r9, r2
-_080C5ABA:
- lsls r0, r7, 1
- mov r2, r10
- ldr r1, [r2]
- adds r4, r1, r0
- ldrh r1, [r4]
- strh r1, [r3]
- mov r1, r9
- strh r1, [r4]
- movs r6, 0x1
- adds r4, 0x80
- adds r5, r0, 0
-_080C5AD0:
- ldrh r0, [r4]
- movs r2, 0x80
- lsls r2, 8
- ands r0, r2
- cmp r0, 0
- bne _080C5AF0
- adds r2, r4, 0
- adds r2, 0x80
- mov r0, sp
- adds r1, r4, 0
- str r3, [sp, 0x4]
- bl sub_80C62DC
- strh r0, [r4]
- ldr r3, [sp, 0x4]
- strh r0, [r3]
-_080C5AF0:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, 0x80
- cmp r6, 0x3E
- bls _080C5AD0
- mov r0, r9
- strh r0, [r4]
- mov r1, r10
- ldr r0, [r1]
- adds r4, r0, r5
- ldrh r0, [r4]
- strh r0, [r3]
- mov r2, r9
- strh r2, [r4]
- movs r6, 0x1
- adds r4, 0x80
- movs r0, 0x80
- lsls r0, 8
- mov r8, r0
-_080C5B18:
- ldrh r0, [r4]
- mov r1, r8
- ands r0, r1
- adds r5, r4, 0
- adds r5, 0x80
- cmp r0, 0
- bne _080C5B38
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- str r3, [sp, 0x4]
- bl sub_80C62DC
- strh r0, [r4]
- ldr r3, [sp, 0x4]
- strh r0, [r3]
-_080C5B38:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, r5, 0
- cmp r6, 0x3E
- bls _080C5B18
- mov r2, r9
- strh r2, [r4]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x3F
- bls _080C5ABA
- ldr r0, _080C5B98 @ =gUnknown_3005334
- ldr r4, [r0]
- movs r6, 0
- movs r0, 0x80
- lsls r0, 8
- mov r8, r0
-_080C5B5E:
- movs r7, 0
- adds r5, r6, 0x1
-_080C5B62:
- ldrh r0, [r4]
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- bne _080C5B74
- adds r0, r4, 0
- bl sub_80C606C
- strh r0, [r4]
-_080C5B74:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r4, 0x2
- cmp r7, 0x3F
- bls _080C5B62
- lsls r0, r5, 24
- lsrs r6, r0, 24
- cmp r6, 0x3F
- bls _080C5B5E
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5B98: .4byte gUnknown_3005334
- thumb_func_end sub_80C5A6C
-
- thumb_func_start sub_80C5B9C
-sub_80C5B9C: @ 80C5B9C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080C5C2C @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C5C1E
- ldr r0, _080C5C30 @ =gUnknown_3005334
- mov r8, r0
-_080C5BB2:
- ldr r0, _080C5C34 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C5C38 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080C5C3C @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- ldrh r1, [r4]
- mov r0, sp
- strh r1, [r0]
- movs r5, 0x1
- adds r4, 0x2
- ldr r0, _080C5C40 @ =gUnknown_3005340
- ldrb r0, [r0]
- subs r0, 0x1
- adds r6, r2, 0x1
- cmp r5, r0
- bge _080C5C12
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080C5BEA:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080C5C00
- mov r0, sp
- adds r1, r4, 0
- bl sub_80C6098
- strh r0, [r4]
- mov r1, sp
- strh r0, [r1]
-_080C5C00:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080C5C40 @ =gUnknown_3005340
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r5, r0
- blt _080C5BEA
-_080C5C12:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080C5C2C @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C5BB2
-_080C5C1E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5C2C: .4byte gUnknown_3005338
-_080C5C30: .4byte gUnknown_3005334
-_080C5C34: .4byte gUnknown_3005344
-_080C5C38: .4byte gUnknown_300534C
-_080C5C3C: .4byte gUnknown_3005330
-_080C5C40: .4byte gUnknown_3005340
- thumb_func_end sub_80C5B9C
-
- thumb_func_start sub_80C5C44
-sub_80C5C44: @ 80C5C44
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r2, 0
- ldr r0, _080C5CE0 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C5CD2
- ldr r0, _080C5CE4 @ =gUnknown_3005334
- mov r8, r0
- ldr r7, _080C5CE8 @ =gUnknown_300534C
-_080C5C5C:
- ldr r0, _080C5CEC @ =gUnknown_3005344
- ldrb r1, [r0]
- ldrb r0, [r7]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080C5CF0 @ =gUnknown_3005330
- ldrb r0, [r0]
- adds r0, r2
- lsls r0, 1
- adds r4, r1, r0
- ldrh r1, [r4]
- mov r0, sp
- strh r1, [r0]
- movs r5, 0x1
- ldrb r0, [r7]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080C5CF4 @ =gUnknown_3005338
- ldrb r0, [r0]
- subs r0, 0x1
- adds r6, r2, 0x1
- cmp r5, r0
- bge _080C5CC6
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080C5C96:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- bne _080C5CB0
- mov r0, sp
- adds r1, r4, 0
- str r2, [sp, 0x4]
- bl sub_80C6098
- strh r0, [r4]
- mov r1, sp
- strh r0, [r1]
- ldr r2, [sp, 0x4]
-_080C5CB0:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r7]
- lsls r0, 1
- adds r4, r0
- ldr r0, _080C5CF4 @ =gUnknown_3005338
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r5, r0
- blt _080C5C96
-_080C5CC6:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080C5CE0 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C5C5C
-_080C5CD2:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C5CE0: .4byte gUnknown_3005340
-_080C5CE4: .4byte gUnknown_3005334
-_080C5CE8: .4byte gUnknown_300534C
-_080C5CEC: .4byte gUnknown_3005344
-_080C5CF0: .4byte gUnknown_3005330
-_080C5CF4: .4byte gUnknown_3005338
- thumb_func_end sub_80C5C44
-
- thumb_func_start sub_80C5CF8
-sub_80C5CF8: @ 80C5CF8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- mov r2, sp
- ldr r3, _080C5D64 @ =gUnknown_83F3024
- lsls r1, r0, 1
- add r1, r10
- adds r0, r1, r3
- ldrb r0, [r0]
- strb r0, [r2]
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- strb r0, [r2, 0x1]
- mov r5, sp
- adds r0, r3, 0x2
- adds r1, r0
- ldrb r4, [r1]
- lsls r2, r4, 24
- lsrs r1, r2, 27
- movs r0, 0x7
- ands r1, r0
- strh r1, [r5, 0x2]
- lsrs r2, 25
- mov r9, r2
- movs r0, 0x3
- ands r2, r0
- mov r9, r2
- movs r5, 0x1
- ands r5, r4
- movs r4, 0x1
- mov r8, r4
- cmp r8, r1
- bcs _080C5DAA
- mov r3, sp
-_080C5D4A:
- cmp r5, 0
- bne _080C5D68
- mov r0, r8
- lsls r2, r0, 2
- mov r4, sp
- adds r1, r4, r2
- ldrb r0, [r3]
- mov r4, r8
- subs r0, r4
- strb r0, [r1]
- ldrb r0, [r3, 0x1]
- add r0, r8
- b _080C5D7A
- .align 2, 0
-_080C5D64: .4byte gUnknown_83F3024
-_080C5D68:
- mov r0, r8
- lsls r2, r0, 2
- mov r4, sp
- adds r1, r4, r2
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r1]
- ldrb r0, [r3, 0x1]
- subs r0, 0x1
-_080C5D7A:
- strb r0, [r1, 0x1]
- add r2, sp
- ldrb r0, [r2]
- cmp r0, 0x3F
- bhi _080C5D8A
- ldrb r0, [r2, 0x1]
- cmp r0, 0x3F
- bls _080C5D92
-_080C5D8A:
- mov r0, r8
- subs r0, 0x1
- strh r0, [r3, 0x2]
- b _080C5DAA
-_080C5D92:
- ldrh r0, [r3, 0x2]
- mov r1, r8
- subs r0, r1
- strh r0, [r2, 0x2]
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrh r0, [r3, 0x2]
- cmp r8, r0
- bcc _080C5D4A
-_080C5DAA:
- movs r2, 0
- mov r8, r2
- mov r0, sp
- ldrh r0, [r0, 0x2]
- cmp r8, r0
- bcc _080C5DB8
- b _080C5EBA
-_080C5DB8:
- movs r3, 0x1F
-_080C5DBA:
- ldr r1, _080C5E18 @ =gUnknown_3005334
- mov r4, r8
- lsls r0, r4, 2
- mov r2, sp
- adds r6, r2, r0
- ldrb r0, [r6, 0x1]
- lsls r0, 7
- ldr r1, [r1]
- adds r1, r0
- ldrb r0, [r6]
- lsls r0, 1
- adds r2, r1, r0
- ldrh r1, [r2]
- movs r4, 0x80
- lsls r4, 8
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _080C5EA6
- movs r7, 0x1F
- ands r7, r1
- lsls r0, r1, 16
- lsrs r5, r0, 21
- ands r5, r3
- lsrs r4, r0, 26
- ands r4, r3
- mov r0, r9
- cmp r0, 0
- blt _080C5E9C
- cmp r0, 0x1
- ble _080C5E1C
- cmp r0, 0x3
- bgt _080C5E9C
- ldrh r0, [r6, 0x2]
- adds r1, r7, r0
- lsls r1, 16
- lsrs r7, r1, 16
- adds r1, r5, r0
- lsls r1, 16
- lsrs r5, r1, 16
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r7, 0x1F
- bls _080C5E90
- movs r7, 0x1F
- b _080C5E90
- .align 2, 0
-_080C5E18: .4byte gUnknown_3005334
-_080C5E1C:
- mov r1, r10
- lsls r0, r1, 1
- add r0, r10
- ldr r1, _080C5E50 @ =gUnknown_83F3024
- adds r1, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsrs r0, 3
- movs r1, 0x7
- ands r0, r1
- movs r1, 0x3
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- cmp r0, 0x1
- beq _080C5E6C
- cmp r0, 0x1
- bgt _080C5E54
- cmp r0, 0
- beq _080C5E5A
- b _080C5E9C
- .align 2, 0
-_080C5E50: .4byte gUnknown_83F3024
-_080C5E54:
- cmp r0, 0x2
- beq _080C5E7E
- b _080C5E9C
-_080C5E5A:
- ldrh r0, [r6, 0x2]
- cmp r7, r0
- bcc _080C5E68
- subs r0, r7, r0
- lsls r0, 16
- lsrs r7, r0, 16
- b _080C5E9C
-_080C5E68:
- movs r7, 0
- b _080C5E9C
-_080C5E6C:
- ldrh r0, [r6, 0x2]
- cmp r5, r0
- bcc _080C5E7A
- subs r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- b _080C5E9C
-_080C5E7A:
- movs r5, 0
- b _080C5E9C
-_080C5E7E:
- ldrh r0, [r6, 0x2]
- cmp r4, r0
- bcc _080C5E8C
- subs r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- b _080C5E9C
-_080C5E8C:
- movs r4, 0
- b _080C5E9C
-_080C5E90:
- cmp r5, 0x1F
- bls _080C5E96
- movs r5, 0x1F
-_080C5E96:
- cmp r4, 0x1F
- bls _080C5E9C
- movs r4, 0x1F
-_080C5E9C:
- lsls r0, r4, 10
- lsls r1, r5, 5
- orrs r0, r1
- orrs r7, r0
- strh r7, [r2]
-_080C5EA6:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, sp
- ldrh r0, [r0, 0x2]
- cmp r8, r0
- bcs _080C5EBA
- b _080C5DBA
-_080C5EBA:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C5CF8
-
- thumb_func_start sub_80C5ECC
-sub_80C5ECC: @ 80C5ECC
- push {lr}
- ldrh r1, [r0]
- movs r3, 0x1F
- movs r0, 0x1F
- ands r0, r1
- lsls r1, 16
- lsrs r2, r1, 21
- ands r2, r3
- lsrs r1, 26
- ands r1, r3
- adds r0, r2
- adds r0, r1
- movs r1, 0x3
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r0, r1, 10
- lsls r2, r1, 5
- orrs r0, r2
- orrs r0, r1
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80C5ECC
-
- thumb_func_start sub_80C5F00
-sub_80C5F00: @ 80C5F00
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldrh r0, [r0]
- movs r2, 0x1F
- movs r1, 0x1F
- ands r1, r0
- lsls r0, 16
- lsrs r3, r0, 21
- ands r3, r2
- lsrs r0, 26
- ands r0, r2
- cmp r1, 0x10
- bhi _080C5F30
- cmp r3, 0x10
- bhi _080C5F30
- cmp r0, 0x10
- bhi _080C5F30
- adds r0, r4, 0
- bl sub_80C5F3C
- lsls r0, 16
- lsrs r0, 16
- b _080C5F32
-_080C5F30:
- ldr r0, _080C5F38 @ =0x00007fff
-_080C5F32:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080C5F38: .4byte 0x00007fff
- thumb_func_end sub_80C5F00
-
- thumb_func_start sub_80C5F3C
-sub_80C5F3C: @ 80C5F3C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- mov r8, r0
- movs r6, 0
- movs r7, 0
- adds r0, r4, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _080C5FF4
- lsls r0, 2
- ldr r1, _080C5F80 @ =_080C5F84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C5F80: .4byte _080C5F84
- .align 2, 0
-_080C5F84:
- .4byte _080C5F9C
- .4byte _080C5FAC
- .4byte _080C5FBC
- .4byte _080C5FCA
- .4byte _080C5FD8
- .4byte _080C5FE6
-_080C5F9C:
- movs r0, 0x15
- subs r0, r5
- lsls r0, 16
- lsrs r6, r0, 16
- adds r7, r6, 0
- movs r1, 0
- mov r8, r1
- b _080C5FF4
-_080C5FAC:
- movs r7, 0
- movs r0, 0x15
- subs r0, r5
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- mov r6, r8
- b _080C5FF4
-_080C5FBC:
- movs r0, 0x15
- subs r0, r5
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- mov r8, r7
- b _080C5FF4
-_080C5FCA:
- movs r7, 0
- movs r6, 0
- movs r0, 0x17
- subs r0, r5
- lsls r0, 16
- lsrs r0, 16
- b _080C5FF2
-_080C5FD8:
- movs r0, 0x17
- subs r0, r5
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- mov r8, r6
- b _080C5FF4
-_080C5FE6:
- movs r7, 0
- movs r0, 0x17
- subs r0, r5
- lsls r0, 16
- lsrs r6, r0, 16
- movs r0, 0
-_080C5FF2:
- mov r8, r0
-_080C5FF4:
- lsls r0, r7, 10
- lsls r1, r6, 5
- orrs r0, r1
- mov r1, r8
- orrs r1, r0
- lsls r0, r1, 16
- lsrs r0, 16
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80C5F3C
-
- thumb_func_start sub_80C600C
-sub_80C600C: @ 80C600C
- push {lr}
- ldrh r0, [r0]
- movs r2, 0x1F
- movs r1, 0x1F
- ands r1, r0
- lsls r0, 16
- lsrs r3, r0, 21
- ands r3, r2
- lsrs r0, 26
- ands r0, r2
- cmp r1, 0x10
- bhi _080C6030
- cmp r3, 0x10
- bhi _080C6030
- cmp r0, 0x10
- bhi _080C6030
- movs r0, 0
- b _080C6032
-_080C6030:
- ldr r0, _080C6038 @ =0x00007fff
-_080C6032:
- pop {r1}
- bx r1
- .align 2, 0
-_080C6038: .4byte 0x00007fff
- thumb_func_end sub_80C600C
-
- thumb_func_start sub_80C603C
-sub_80C603C: @ 80C603C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r3, [r4]
- cmp r3, 0
- beq _080C6064
- movs r2, 0x80
- lsls r2, 8
- adds r0, r2, 0
- ands r0, r3
- cmp r0, 0
- beq _080C6056
- adds r0, r2, 0
- b _080C6066
-_080C6056:
- ldrh r1, [r1]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080C6064
- ldrh r0, [r4]
- b _080C6066
-_080C6064:
- movs r0, 0
-_080C6066:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C603C
-
- thumb_func_start sub_80C606C
-sub_80C606C: @ 80C606C
- push {r4,lr}
- ldrh r1, [r0]
- movs r0, 0x1F
- movs r3, 0x1F
- ands r3, r1
- lsls r1, 16
- lsrs r2, r1, 21
- lsrs r1, 26
- subs r3, r0, r3
- adds r4, r0, 0
- bics r4, r2
- adds r2, r4, 0
- bics r0, r1
- lsls r0, 10
- lsls r2, 5
- orrs r0, r2
- orrs r0, r3
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C606C
-
- thumb_func_start sub_80C6098
-sub_80C6098: @ 80C6098
- push {r4-r7,lr}
- sub sp, 0x14
- adds r7, r1, 0
- ldrh r4, [r0]
- ldrh r5, [r7]
- lsls r6, r4, 16
- lsls r0, r5, 16
- mov r12, r0
- cmp r4, r5
- beq _080C610A
- mov r2, sp
- movs r3, 0x1F
- movs r1, 0x1F
- adds r0, r1, 0
- ands r0, r4
- strh r0, [r2]
- lsrs r0, r6, 21
- ands r0, r3
- strh r0, [r2, 0x2]
- lsrs r0, r6, 26
- ands r0, r3
- strh r0, [r2, 0x4]
- mov r0, sp
- ands r1, r5
- strh r1, [r0, 0x6]
- mov r1, sp
- mov r2, r12
- lsrs r0, r2, 21
- ands r0, r3
- strh r0, [r1, 0x8]
- lsrs r0, r2, 26
- ands r0, r3
- strh r0, [r1, 0xA]
- mov r0, sp
- ldrh r0, [r0]
- cmp r0, 0x19
- bls _080C60F2
- mov r0, sp
- ldrh r0, [r0, 0x2]
- cmp r0, 0x19
- bls _080C60F2
- mov r0, sp
- ldrh r0, [r0, 0x4]
- cmp r0, 0x19
- bhi _080C610A
-_080C60F2:
- mov r0, sp
- ldrh r0, [r0, 0x6]
- cmp r0, 0x19
- bls _080C610E
- mov r0, sp
- ldrh r0, [r0, 0x8]
- cmp r0, 0x19
- bls _080C610E
- mov r0, sp
- ldrh r0, [r0, 0xA]
- cmp r0, 0x19
- bls _080C610E
-_080C610A:
- ldrh r0, [r7]
- b _080C61B4
-_080C610E:
- movs r4, 0
- add r6, sp, 0xC
- mov r7, sp
- adds r7, 0x6
- adds r5, r6, 0
-_080C6118:
- lsls r2, r4, 1
- mov r1, sp
- adds r0, r1, r2
- adds r1, r7, r2
- ldrh r3, [r0]
- ldrh r0, [r1]
- cmp r3, r0
- bls _080C612E
- adds r1, r5, r2
- subs r0, r3, r0
- b _080C6132
-_080C612E:
- adds r1, r5, r2
- subs r0, r3
-_080C6132:
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _080C6118
- adds r1, r6, 0
- ldrh r0, [r1, 0x2]
- ldrh r3, [r1]
- cmp r3, r0
- bcc _080C6158
- ldrh r2, [r1, 0x4]
- cmp r3, r2
- bcc _080C6152
- adds r2, r3, 0
- b _080C616C
-_080C6152:
- cmp r0, r2
- bcs _080C615E
- b _080C6166
-_080C6158:
- ldrh r2, [r1, 0x4]
- cmp r0, r2
- bcc _080C6162
-_080C615E:
- ldrh r2, [r1, 0x2]
- b _080C616C
-_080C6162:
- cmp r2, r3
- bcc _080C616A
-_080C6166:
- ldrh r2, [r1, 0x4]
- b _080C616C
-_080C616A:
- ldrh r2, [r6]
-_080C616C:
- mov r0, sp
- ldrh r1, [r0, 0x6]
- lsrs r0, r2, 1
- movs r6, 0x1F
- subs r6, r0
- adds r0, r1, 0
- muls r0, r6
- movs r1, 0x1F
- bl __divsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r0, sp
- ldrh r0, [r0, 0x8]
- muls r0, r6
- movs r1, 0x1F
- bl __divsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r0, sp
- ldrh r0, [r0, 0xA]
- muls r0, r6
- movs r1, 0x1F
- bl __divsi3
- lsls r0, 16
- lsrs r0, 6
- lsls r4, 5
- orrs r0, r4
- orrs r5, r0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r5, 0
-_080C61B4:
- add sp, 0x14
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80C6098
-
- thumb_func_start sub_80C61BC
-sub_80C61BC: @ 80C61BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r3, r0, 0
- mov r10, r1
- str r2, [sp]
- ldrh r1, [r3]
- mov r0, r10
- ldrh r0, [r0]
- cmp r1, r0
- bne _080C61E4
- ldrh r0, [r2]
- cmp r0, r1
- bne _080C61E4
- mov r1, r10
- ldrh r0, [r1]
- b _080C62CC
-_080C61E4:
- mov r2, r10
- ldrh r0, [r2]
- movs r1, 0x1F
- mov r9, r1
- movs r4, 0x1F
- adds r5, r4, 0
- ands r5, r0
- lsls r0, 16
- lsrs r2, r0, 21
- mov r1, r9
- ands r1, r2
- mov r8, r1
- lsrs r0, 26
- mov r2, r9
- ands r2, r0
- str r2, [sp, 0x4]
- ldrh r2, [r3]
- adds r0, r4, 0
- ands r0, r2
- lsls r2, 16
- lsrs r1, r2, 21
- mov r3, r9
- ands r1, r3
- adds r0, r1
- lsrs r2, 26
- ands r2, r3
- adds r0, r2
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r7, r0, 16
- mov r1, r8
- adds r0, r5, r1
- ldr r2, [sp, 0x4]
- adds r0, r2
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, [sp]
- ldrh r1, [r3]
- ands r4, r1
- lsls r1, 16
- lsrs r0, r1, 21
- mov r2, r9
- ands r0, r2
- adds r4, r0
- lsrs r1, 26
- ands r1, r2
- adds r4, r1
- adds r0, r4, 0
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r7, r6
- bne _080C6266
- cmp r1, r6
- bne _080C6266
- mov r3, r10
- ldrh r0, [r3]
- b _080C62CC
-_080C6266:
- cmp r7, r6
- bls _080C626E
- subs r0, r7, r6
- b _080C6270
-_080C626E:
- subs r0, r6, r7
-_080C6270:
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r1, r6
- bls _080C627C
- subs r0, r1, r6
- b _080C627E
-_080C627C:
- subs r0, r6, r1
-_080C627E:
- lsls r0, 16
- lsrs r0, 16
- cmp r2, r0
- bcc _080C6288
- adds r0, r2, 0
-_080C6288:
- lsrs r0, 1
- movs r4, 0x1F
- subs r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- muls r0, r4
- movs r1, 0x1F
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- mov r0, r8
- muls r0, r4
- movs r1, 0x1F
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r1, [sp, 0x4]
- adds r0, r1, 0
- muls r0, r4
- movs r1, 0x1F
- bl __divsi3
- lsls r0, 16
- lsrs r0, 6
- mov r2, r8
- lsls r1, r2, 5
- orrs r0, r1
- orrs r5, r0
- lsls r0, r5, 16
- lsrs r0, 16
-_080C62CC:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80C61BC
-
- thumb_func_start sub_80C62DC
-sub_80C62DC: @ 80C62DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r3, r0, 0
- mov r10, r1
- str r2, [sp]
- ldrh r1, [r3]
- mov r0, r10
- ldrh r0, [r0]
- cmp r1, r0
- bne _080C6304
- ldrh r0, [r2]
- cmp r0, r1
- bne _080C6304
- mov r1, r10
- ldrh r0, [r1]
- b _080C63EA
-_080C6304:
- mov r2, r10
- ldrh r0, [r2]
- movs r1, 0x1F
- mov r9, r1
- movs r4, 0x1F
- adds r5, r4, 0
- ands r5, r0
- lsls r0, 16
- lsrs r2, r0, 21
- mov r1, r9
- ands r1, r2
- mov r8, r1
- lsrs r0, 26
- mov r2, r9
- ands r2, r0
- str r2, [sp, 0x4]
- ldrh r2, [r3]
- adds r0, r4, 0
- ands r0, r2
- lsls r2, 16
- lsrs r1, r2, 21
- mov r3, r9
- ands r1, r3
- adds r0, r1
- lsrs r2, 26
- ands r2, r3
- adds r0, r2
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r7, r0, 16
- mov r1, r8
- adds r0, r5, r1
- ldr r2, [sp, 0x4]
- adds r0, r2
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, [sp]
- ldrh r1, [r3]
- ands r4, r1
- lsls r1, 16
- lsrs r0, r1, 21
- mov r2, r9
- ands r0, r2
- adds r4, r0
- lsrs r1, 26
- ands r1, r2
- adds r4, r1
- adds r0, r4, 0
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r7, r6
- bne _080C6386
- cmp r1, r6
- bne _080C6386
- mov r3, r10
- ldrh r0, [r3]
- b _080C63EA
-_080C6386:
- cmp r7, r6
- bls _080C638E
- subs r0, r7, r6
- b _080C6390
-_080C638E:
- subs r0, r6, r7
-_080C6390:
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r1, r6
- bls _080C639C
- subs r0, r1, r6
- b _080C639E
-_080C639C:
- subs r0, r6, r1
-_080C639E:
- lsls r0, 16
- lsrs r0, 16
- cmp r2, r0
- bcc _080C63A8
- adds r0, r2, 0
-_080C63A8:
- movs r4, 0x1F
- subs r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- muls r0, r4
- movs r1, 0x1F
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- mov r0, r8
- muls r0, r4
- movs r1, 0x1F
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r1, [sp, 0x4]
- adds r0, r1, 0
- muls r0, r4
- movs r1, 0x1F
- bl __divsi3
- lsls r0, 16
- lsrs r0, 6
- mov r2, r8
- lsls r1, r2, 5
- orrs r0, r1
- orrs r5, r0
- lsls r0, r5, 16
- lsrs r0, 16
-_080C63EA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80C62DC
-
- thumb_func_start sub_80C63FC
-sub_80C63FC: @ 80C63FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldrb r1, [r0, 0x1D]
- lsrs r5, r1, 3
- ldrb r1, [r0, 0x1E]
- lsrs r1, 3
- str r1, [sp, 0x8]
- ldr r1, [r0, 0x4]
- str r1, [sp]
- ldr r2, [r0, 0x10]
- str r2, [sp, 0x4]
- ldrh r0, [r0, 0x16]
- cmp r0, 0x2
- bne _080C64AC
- movs r1, 0
- ldr r0, [sp, 0x8]
- cmp r1, r0
- bcc _080C642A
- b _080C6538
-_080C642A:
- movs r0, 0
- adds r2, r1, 0x1
- mov r10, r2
- cmp r0, r5
- bcs _080C649E
- adds r2, r1, 0
- muls r2, r5
- mov r9, r2
- lsls r1, 3
- mov r8, r1
-_080C643E:
- movs r4, 0
- lsls r6, r0, 4
- adds r7, r0, 0x1
- add r0, r9
- lsls r0, 6
- ldr r1, [sp, 0x4]
- adds r1, r0
- mov r12, r1
-_080C644E:
- lsls r0, r4, 3
- mov r2, r12
- adds r3, r2, r0
- mov r1, r8
- adds r0, r1, r4
- lsls r0, 3
- muls r0, r5
- lsls r0, 1
- ldr r2, [sp]
- adds r0, r2, r0
- adds r2, r0, r6
- ldrh r0, [r2, 0x2]
- lsls r0, 8
- ldrh r1, [r2]
- orrs r0, r1
- strh r0, [r3]
- ldrh r0, [r2, 0x6]
- lsls r0, 8
- ldrh r1, [r2, 0x4]
- orrs r0, r1
- strh r0, [r3, 0x2]
- ldrh r0, [r2, 0xA]
- lsls r0, 8
- ldrh r1, [r2, 0x8]
- orrs r0, r1
- strh r0, [r3, 0x4]
- ldrh r0, [r2, 0xE]
- lsls r0, 8
- ldrh r1, [r2, 0xC]
- orrs r0, r1
- strh r0, [r3, 0x6]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x7
- bls _080C644E
- lsls r0, r7, 16
- lsrs r0, 16
- cmp r0, r5
- bcc _080C643E
-_080C649E:
- mov r1, r10
- lsls r0, r1, 16
- lsrs r1, r0, 16
- ldr r2, [sp, 0x8]
- cmp r1, r2
- bcc _080C642A
- b _080C6538
-_080C64AC:
- movs r1, 0
- ldr r0, [sp, 0x8]
- cmp r1, r0
- bcs _080C6538
-_080C64B4:
- movs r0, 0
- adds r2, r1, 0x1
- mov r10, r2
- cmp r0, r5
- bcs _080C652C
- adds r2, r1, 0
- muls r2, r5
- mov r9, r2
- lsls r1, 3
- mov r8, r1
-_080C64C8:
- movs r4, 0
- lsls r6, r0, 4
- adds r7, r0, 0x1
- add r0, r9
- lsls r0, 5
- ldr r1, [sp, 0x4]
- adds r1, r0
- mov r12, r1
-_080C64D8:
- lsls r0, r4, 2
- mov r2, r12
- adds r3, r2, r0
- mov r1, r8
- adds r0, r1, r4
- lsls r0, 3
- muls r0, r5
- lsls r0, 1
- ldr r2, [sp]
- adds r0, r2, r0
- adds r2, r0, r6
- ldrh r1, [r2, 0x2]
- lsls r1, 4
- ldrh r0, [r2]
- orrs r1, r0
- ldrh r0, [r2, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrh r0, [r2, 0x6]
- lsls r0, 12
- orrs r1, r0
- strh r1, [r3]
- ldrh r1, [r2, 0xA]
- lsls r1, 4
- ldrh r0, [r2, 0x8]
- orrs r1, r0
- ldrh r0, [r2, 0xC]
- lsls r0, 8
- orrs r1, r0
- ldrh r0, [r2, 0xE]
- lsls r0, 12
- orrs r1, r0
- strh r1, [r3, 0x2]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x7
- bls _080C64D8
- lsls r0, r7, 16
- lsrs r0, 16
- cmp r0, r5
- bcc _080C64C8
-_080C652C:
- mov r1, r10
- lsls r0, r1, 16
- lsrs r1, r0, 16
- ldr r2, [sp, 0x8]
- cmp r1, r2
- bcc _080C64B4
-_080C6538:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80C63FC
-
- thumb_func_start sub_80C6548
-sub_80C6548: @ 80C6548
- push {lr}
- ldr r2, _080C6598 @ =gUnknown_3005354
- ldrb r1, [r0, 0x18]
- lsls r1, 4
- strh r1, [r2]
- ldr r3, _080C659C @ =gUnknown_3005350
- ldrh r2, [r2]
- lsls r2, 1
- ldr r1, [r0, 0x8]
- adds r1, r2
- str r1, [r3]
- ldr r2, _080C65A0 @ =gUnknown_3005334
- ldr r1, [r0, 0x4]
- str r1, [r2]
- ldr r2, _080C65A4 @ =gUnknown_3005330
- ldrb r1, [r0, 0x19]
- strb r1, [r2]
- ldr r2, _080C65A8 @ =gUnknown_3005344
- ldrb r1, [r0, 0x1A]
- strb r1, [r2]
- ldr r2, _080C65AC @ =gUnknown_3005340
- ldrb r1, [r0, 0x1B]
- strb r1, [r2]
- ldr r2, _080C65B0 @ =gUnknown_3005338
- ldrb r1, [r0, 0x1C]
- strb r1, [r2]
- ldr r2, _080C65B4 @ =gUnknown_300534C
- ldrb r1, [r0, 0x1D]
- strb r1, [r2]
- ldr r2, _080C65B8 @ =gUnknown_300533C
- ldrb r1, [r0, 0x1E]
- strb r1, [r2]
- ldrh r0, [r0, 0x14]
- cmp r0, 0x5
- bhi _080C660E
- lsls r0, 2
- ldr r1, _080C65BC @ =_080C65C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C6598: .4byte gUnknown_3005354
-_080C659C: .4byte gUnknown_3005350
-_080C65A0: .4byte gUnknown_3005334
-_080C65A4: .4byte gUnknown_3005330
-_080C65A8: .4byte gUnknown_3005344
-_080C65AC: .4byte gUnknown_3005340
-_080C65B0: .4byte gUnknown_3005338
-_080C65B4: .4byte gUnknown_300534C
-_080C65B8: .4byte gUnknown_300533C
-_080C65BC: .4byte _080C65C0
- .align 2, 0
-_080C65C0:
- .4byte _080C65D8
- .4byte _080C65E0
- .4byte _080C65E8
- .4byte _080C65F2
- .4byte _080C65FC
- .4byte _080C6606
-_080C65D8:
- movs r0, 0
- bl sub_80C6748
- b _080C660E
-_080C65E0:
- movs r0, 0x1
- bl sub_80C6748
- b _080C660E
-_080C65E8:
- bl sub_80C6614
- bl sub_80C6AB8
- b _080C660E
-_080C65F2:
- bl sub_80C6714
- bl sub_80C6A08
- b _080C660E
-_080C65FC:
- bl sub_80C66D8
- bl sub_80C6958
- b _080C660E
-_080C6606:
- bl sub_80C66BC
- bl sub_80C68A0
-_080C660E:
- pop {r0}
- bx r0
- thumb_func_end sub_80C6548
-
- thumb_func_start sub_80C6614
-sub_80C6614: @ 80C6614
- ldr r2, _080C667C @ =gUnknown_3005350
- ldr r1, [r2]
- movs r0, 0
- strh r0, [r1]
- ldr r0, [r2]
- ldr r2, _080C6680 @ =0x000018c6
- adds r1, r2, 0
- strh r1, [r0, 0x2]
- ldr r2, _080C6684 @ =0x000077bd
- adds r1, r2, 0
- strh r1, [r0, 0x4]
- ldr r2, _080C6688 @ =0x00002d6b
- adds r1, r2, 0
- strh r1, [r0, 0x6]
- ldr r2, _080C668C @ =0x000018dd
- adds r1, r2, 0
- strh r1, [r0, 0x8]
- ldr r2, _080C6690 @ =0x00001ba6
- adds r1, r2, 0
- strh r1, [r0, 0xA]
- ldr r2, _080C6694 @ =0x000074c6
- adds r1, r2, 0
- strh r1, [r0, 0xC]
- ldr r2, _080C6698 @ =0x00001bbd
- adds r1, r2, 0
- strh r1, [r0, 0xE]
- ldr r2, _080C669C @ =0x000074dd
- adds r1, r2, 0
- strh r1, [r0, 0x10]
- ldr r2, _080C66A0 @ =0x000077a6
- adds r1, r2, 0
- strh r1, [r0, 0x12]
- ldr r2, _080C66A4 @ =0x0000197d
- adds r1, r2, 0
- strh r1, [r0, 0x14]
- ldr r2, _080C66A8 @ =0x00001bab
- adds r1, r2, 0
- strh r1, [r0, 0x16]
- ldr r2, _080C66AC @ =0x00007566
- adds r1, r2, 0
- strh r1, [r0, 0x18]
- ldr r2, _080C66B0 @ =0x00002cdd
- adds r1, r2, 0
- strh r1, [r0, 0x1A]
- ldr r2, _080C66B4 @ =0x00002fa6
- adds r1, r2, 0
- strh r1, [r0, 0x1C]
- ldr r2, _080C66B8 @ =0x000074cb
- adds r1, r2, 0
- strh r1, [r0, 0x1E]
- bx lr
- .align 2, 0
-_080C667C: .4byte gUnknown_3005350
-_080C6680: .4byte 0x000018c6
-_080C6684: .4byte 0x000077bd
-_080C6688: .4byte 0x00002d6b
-_080C668C: .4byte 0x000018dd
-_080C6690: .4byte 0x00001ba6
-_080C6694: .4byte 0x000074c6
-_080C6698: .4byte 0x00001bbd
-_080C669C: .4byte 0x000074dd
-_080C66A0: .4byte 0x000077a6
-_080C66A4: .4byte 0x0000197d
-_080C66A8: .4byte 0x00001bab
-_080C66AC: .4byte 0x00007566
-_080C66B0: .4byte 0x00002cdd
-_080C66B4: .4byte 0x00002fa6
-_080C66B8: .4byte 0x000074cb
- thumb_func_end sub_80C6614
-
- thumb_func_start sub_80C66BC
-sub_80C66BC: @ 80C66BC
- ldr r2, _080C66D0 @ =gUnknown_3005350
- ldr r0, [r2]
- movs r1, 0
- strh r1, [r0]
- ldr r2, [r2]
- strh r1, [r2, 0x2]
- ldr r1, _080C66D4 @ =0x00007fff
- adds r0, r1, 0
- strh r0, [r2, 0x4]
- bx lr
- .align 2, 0
-_080C66D0: .4byte gUnknown_3005350
-_080C66D4: .4byte 0x00007fff
- thumb_func_end sub_80C66BC
-
- thumb_func_start sub_80C66D8
-sub_80C66D8: @ 80C66D8
- push {r4,r5,lr}
- ldr r1, _080C6710 @ =gUnknown_3005350
- ldr r0, [r1]
- movs r2, 0
- strh r2, [r0]
- ldr r0, [r1]
- strh r2, [r0, 0x2]
- movs r4, 0
- adds r5, r1, 0
-_080C66EA:
- ldr r0, [r5]
- lsls r2, r4, 1
- adds r2, r0
- adds r0, r4, 0x2
- lsls r3, r0, 1
- lsls r1, r0, 11
- lsls r0, 6
- orrs r1, r0
- orrs r1, r3
- strh r1, [r2, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xD
- bls _080C66EA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C6710: .4byte gUnknown_3005350
- thumb_func_end sub_80C66D8
-
- thumb_func_start sub_80C6714
-sub_80C6714: @ 80C6714
- push {r4,lr}
- ldr r2, _080C6744 @ =gUnknown_3005350
- ldr r1, [r2]
- movs r0, 0
- strh r0, [r1]
- movs r3, 0
- adds r4, r2, 0
-_080C6722:
- ldr r0, [r4]
- lsls r2, r3, 1
- adds r2, r0
- lsls r0, r3, 10
- lsls r1, r3, 5
- orrs r0, r1
- orrs r0, r3
- strh r0, [r2, 0x2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _080C6722
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C6744: .4byte gUnknown_3005350
- thumb_func_end sub_80C6714
-
- thumb_func_start sub_80C6748
-sub_80C6748: @ 80C6748
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- movs r1, 0xDF
- mov r9, r1
- cmp r0, 0
- bne _080C6760
- movs r2, 0xFF
- mov r9, r2
-_080C6760:
- movs r6, 0
- ldr r3, _080C67E4 @ =gUnknown_3005350
- mov r12, r3
- mov r0, r9
- lsls r4, r0, 1
- ldr r5, _080C67E8 @ =gUnknown_3005338
- cmp r6, r9
- bcs _080C6784
- movs r2, 0
-_080C6772:
- ldr r0, [r3]
- lsls r1, r6, 1
- adds r1, r0
- strh r2, [r1]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r9
- bcc _080C6772
-_080C6784:
- mov r1, r12
- ldr r0, [r1]
- adds r0, r4, r0
- ldr r2, _080C67EC @ =0x00003def
- adds r1, r2, 0
- strh r1, [r0]
- movs r3, 0
- ldrb r5, [r5]
- cmp r3, r5
- bcs _080C6888
-_080C6798:
- ldr r2, _080C67F0 @ =gUnknown_3005334
- ldr r0, _080C67F4 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r3
- ldr r0, _080C67F8 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- ldr r1, [r2]
- adds r1, r0
- ldr r0, _080C67FC @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r6, 0
- ldr r0, _080C6800 @ =gUnknown_3005340
- adds r2, r0, 0
- adds r3, 0x1
- mov r10, r3
- ldrb r3, [r2]
- cmp r6, r3
- bcs _080C687A
- ldr r0, _080C6804 @ =gUnknown_3005354
- mov r8, r0
-_080C67C8:
- ldrh r0, [r4]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080C6808
- mov r1, r8
- ldrh r0, [r1]
- strh r0, [r4]
- adds r6, 0x1
- adds r7, r4, 0x2
- b _080C686E
- .align 2, 0
-_080C67E4: .4byte gUnknown_3005350
-_080C67E8: .4byte gUnknown_3005338
-_080C67EC: .4byte 0x00003def
-_080C67F0: .4byte gUnknown_3005334
-_080C67F4: .4byte gUnknown_3005344
-_080C67F8: .4byte gUnknown_300534C
-_080C67FC: .4byte gUnknown_3005330
-_080C6800: .4byte gUnknown_3005340
-_080C6804: .4byte gUnknown_3005354
-_080C6808:
- adds r0, r4, 0
- bl sub_80C6B68
- lsls r0, 16
- lsrs r5, r0, 16
- movs r3, 0x1
- adds r6, 0x1
- adds r7, r4, 0x2
- cmp r3, r9
- bcs _080C6864
- ldr r0, _080C6834 @ =gUnknown_3005350
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- mov r12, r0
- cmp r1, 0
- bne _080C6838
- strh r5, [r2, 0x2]
- mov r2, r8
- ldrh r0, [r2]
- adds r0, 0x1
- b _080C6862
- .align 2, 0
-_080C6834: .4byte gUnknown_3005350
-_080C6838:
- mov r2, r12
- ldr r1, [r2]
- lsls r0, r3, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _080C685C
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r9
- bcs _080C6864
- lsls r0, r3, 1
- adds r1, r0, r1
- ldrh r0, [r1]
- cmp r0, 0
- bne _080C6838
- strh r5, [r1]
-_080C685C:
- mov r1, r8
- ldrh r0, [r1]
- adds r0, r3
-_080C6862:
- strh r0, [r4]
-_080C6864:
- ldr r2, _080C6898 @ =gUnknown_3005340
- cmp r3, r9
- bne _080C686E
- mov r3, r9
- strh r3, [r4]
-_080C686E:
- lsls r0, r6, 24
- lsrs r6, r0, 24
- adds r4, r7, 0
- ldrb r0, [r2]
- cmp r6, r0
- bcc _080C67C8
-_080C687A:
- mov r1, r10
- lsls r0, r1, 24
- lsrs r3, r0, 24
- ldr r0, _080C689C @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r3, r0
- bcc _080C6798
-_080C6888:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C6898: .4byte gUnknown_3005340
-_080C689C: .4byte gUnknown_3005338
- thumb_func_end sub_80C6748
-
- thumb_func_start sub_80C68A0
-sub_80C68A0: @ 80C68A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r2, 0
- ldr r0, _080C68F4 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C6944
- ldr r0, _080C68F8 @ =gUnknown_3005334
- mov r8, r0
-_080C68B4:
- ldr r0, _080C68FC @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C6900 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080C6904 @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r6, 0
- ldr r0, _080C6908 @ =gUnknown_3005340
- adds r3, r0, 0
- adds r7, r2, 0x1
- ldrb r0, [r3]
- cmp r6, r0
- bcs _080C6938
- ldr r5, _080C690C @ =gUnknown_3005354
-_080C68E0:
- ldrh r0, [r4]
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _080C6910
- ldrh r0, [r5]
- strh r0, [r4]
- b _080C692A
- .align 2, 0
-_080C68F4: .4byte gUnknown_3005338
-_080C68F8: .4byte gUnknown_3005334
-_080C68FC: .4byte gUnknown_3005344
-_080C6900: .4byte gUnknown_300534C
-_080C6904: .4byte gUnknown_3005330
-_080C6908: .4byte gUnknown_3005340
-_080C690C: .4byte gUnknown_3005354
-_080C6910:
- adds r0, r4, 0
- bl sub_80C600C
- lsls r0, 16
- cmp r0, 0
- bne _080C6922
- ldrh r0, [r5]
- adds r0, 0x1
- b _080C6926
-_080C6922:
- ldrh r0, [r5]
- adds r0, 0x2
-_080C6926:
- strh r0, [r4]
- ldr r3, _080C6950 @ =gUnknown_3005340
-_080C692A:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r6, r0
- bcc _080C68E0
-_080C6938:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080C6954 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C68B4
-_080C6944:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C6950: .4byte gUnknown_3005340
-_080C6954: .4byte gUnknown_3005338
- thumb_func_end sub_80C68A0
-
- thumb_func_start sub_80C6958
-sub_80C6958: @ 80C6958
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080C69AC @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C69F4
- ldr r0, _080C69B0 @ =gUnknown_3005334
- mov r8, r0
-_080C696E:
- ldr r0, _080C69B4 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C69B8 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080C69BC @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- ldr r0, _080C69C0 @ =gUnknown_3005340
- adds r7, r2, 0x1
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080C69E8
- ldr r6, _080C69C4 @ =gUnknown_3005354
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080C699E:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- beq _080C69C8
- ldrh r0, [r6]
- strh r0, [r4]
- b _080C69D8
- .align 2, 0
-_080C69AC: .4byte gUnknown_3005338
-_080C69B0: .4byte gUnknown_3005334
-_080C69B4: .4byte gUnknown_3005344
-_080C69B8: .4byte gUnknown_300534C
-_080C69BC: .4byte gUnknown_3005330
-_080C69C0: .4byte gUnknown_3005340
-_080C69C4: .4byte gUnknown_3005354
-_080C69C8:
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80C6CAC
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r4]
- ldr r2, [sp]
-_080C69D8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080C6A00 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080C699E
-_080C69E8:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080C6A04 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C696E
-_080C69F4:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C6A00: .4byte gUnknown_3005340
-_080C6A04: .4byte gUnknown_3005338
- thumb_func_end sub_80C6958
-
- thumb_func_start sub_80C6A08
-sub_80C6A08: @ 80C6A08
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080C6A5C @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C6AA4
- ldr r0, _080C6A60 @ =gUnknown_3005334
- mov r8, r0
-_080C6A1E:
- ldr r0, _080C6A64 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C6A68 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080C6A6C @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- ldr r0, _080C6A70 @ =gUnknown_3005340
- adds r7, r2, 0x1
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080C6A98
- ldr r6, _080C6A74 @ =gUnknown_3005354
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080C6A4E:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- beq _080C6A78
- ldrh r0, [r6]
- strh r0, [r4]
- b _080C6A88
- .align 2, 0
-_080C6A5C: .4byte gUnknown_3005338
-_080C6A60: .4byte gUnknown_3005334
-_080C6A64: .4byte gUnknown_3005344
-_080C6A68: .4byte gUnknown_300534C
-_080C6A6C: .4byte gUnknown_3005330
-_080C6A70: .4byte gUnknown_3005340
-_080C6A74: .4byte gUnknown_3005354
-_080C6A78:
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80C6CE0
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r4]
- ldr r2, [sp]
-_080C6A88:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080C6AB0 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080C6A4E
-_080C6A98:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080C6AB4 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C6A1E
-_080C6AA4:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C6AB0: .4byte gUnknown_3005340
-_080C6AB4: .4byte gUnknown_3005338
- thumb_func_end sub_80C6A08
-
- thumb_func_start sub_80C6AB8
-sub_80C6AB8: @ 80C6AB8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080C6B0C @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080C6B54
- ldr r0, _080C6B10 @ =gUnknown_3005334
- mov r8, r0
-_080C6ACE:
- ldr r0, _080C6B14 @ =gUnknown_3005344
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080C6B18 @ =gUnknown_300534C
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r3, r8
- ldr r1, [r3]
- adds r1, r0
- ldr r0, _080C6B1C @ =gUnknown_3005330
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- ldr r0, _080C6B20 @ =gUnknown_3005340
- adds r7, r2, 0x1
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080C6B48
- ldr r6, _080C6B24 @ =gUnknown_3005354
- movs r0, 0x80
- lsls r0, 8
- adds r2, r0, 0
-_080C6AFE:
- ldrh r0, [r4]
- ands r0, r2
- cmp r0, 0
- beq _080C6B28
- ldrh r0, [r6]
- strh r0, [r4]
- b _080C6B38
- .align 2, 0
-_080C6B0C: .4byte gUnknown_3005338
-_080C6B10: .4byte gUnknown_3005334
-_080C6B14: .4byte gUnknown_3005344
-_080C6B18: .4byte gUnknown_300534C
-_080C6B1C: .4byte gUnknown_3005330
-_080C6B20: .4byte gUnknown_3005340
-_080C6B24: .4byte gUnknown_3005354
-_080C6B28:
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80C6BDC
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r4]
- ldr r2, [sp]
-_080C6B38:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldr r0, _080C6B60 @ =gUnknown_3005340
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080C6AFE
-_080C6B48:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r0, _080C6B64 @ =gUnknown_3005338
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080C6ACE
-_080C6B54:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C6B60: .4byte gUnknown_3005340
-_080C6B64: .4byte gUnknown_3005338
- thumb_func_end sub_80C6AB8
-
- thumb_func_start sub_80C6B68
-sub_80C6B68: @ 80C6B68
- push {r4,lr}
- ldrh r0, [r0]
- movs r1, 0x1F
- movs r4, 0x1F
- ands r4, r0
- lsls r0, 16
- lsrs r3, r0, 21
- ands r3, r1
- lsrs r2, r0, 26
- ands r2, r1
- movs r1, 0x3
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080C6B8C
- movs r0, 0x1C
- ands r0, r4
- adds r4, r0, 0x4
-_080C6B8C:
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080C6B9A
- movs r0, 0x1C
- ands r0, r3
- adds r3, r0, 0x4
-_080C6B9A:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _080C6BA8
- movs r0, 0x1C
- ands r0, r2
- adds r2, r0, 0x4
-_080C6BA8:
- cmp r4, 0x5
- bhi _080C6BAE
- movs r4, 0x6
-_080C6BAE:
- cmp r4, 0x1E
- bls _080C6BB4
- movs r4, 0x1E
-_080C6BB4:
- cmp r3, 0x5
- bhi _080C6BBA
- movs r3, 0x6
-_080C6BBA:
- cmp r3, 0x1E
- bls _080C6BC0
- movs r3, 0x1E
-_080C6BC0:
- cmp r2, 0x5
- bhi _080C6BC6
- movs r2, 0x6
-_080C6BC6:
- cmp r2, 0x1E
- bls _080C6BCC
- movs r2, 0x1E
-_080C6BCC:
- lsls r0, r2, 10
- lsls r1, r3, 5
- orrs r0, r1
- orrs r4, r0
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80C6B68
-
- thumb_func_start sub_80C6BDC
-sub_80C6BDC: @ 80C6BDC
- push {lr}
- ldrh r0, [r0]
- movs r1, 0x1F
- movs r3, 0x1F
- ands r3, r0
- lsls r0, 16
- lsrs r2, r0, 21
- ands r2, r1
- lsrs r0, 26
- ands r0, r1
- cmp r3, 0xB
- bhi _080C6C00
- cmp r2, 0xA
- bhi _080C6C00
- cmp r0, 0xA
- bhi _080C6C00
- movs r0, 0x1
- b _080C6CA6
-_080C6C00:
- cmp r3, 0x13
- bls _080C6C24
- cmp r2, 0x13
- bls _080C6C0C
- cmp r0, 0x13
- bhi _080C6C30
-_080C6C0C:
- cmp r3, 0x13
- bls _080C6C24
- cmp r2, 0x13
- bls _080C6C1A
- cmp r0, 0xE
- bhi _080C6C30
- b _080C6C68
-_080C6C1A:
- cmp r0, 0x13
- bls _080C6C24
- cmp r2, 0xE
- bhi _080C6C30
- b _080C6C44
-_080C6C24:
- cmp r2, 0x13
- bls _080C6C34
- cmp r0, 0x13
- bls _080C6C34
- cmp r3, 0xE
- bls _080C6C8C
-_080C6C30:
- movs r0, 0x2
- b _080C6CA6
-_080C6C34:
- cmp r3, 0x13
- bls _080C6C58
- cmp r2, 0xB
- bls _080C6C4C
- cmp r0, 0xB
- bls _080C6C48
- cmp r2, r0
- bcs _080C6C68
-_080C6C44:
- movs r0, 0x8
- b _080C6CA6
-_080C6C48:
- movs r0, 0xA
- b _080C6CA6
-_080C6C4C:
- cmp r0, 0xB
- bls _080C6C54
- movs r0, 0xD
- b _080C6CA6
-_080C6C54:
- movs r0, 0x4
- b _080C6CA6
-_080C6C58:
- cmp r2, 0x13
- bls _080C6C7C
- cmp r3, 0xB
- bls _080C6C70
- cmp r0, 0xB
- bls _080C6C6C
- cmp r3, r0
- bcc _080C6C8C
-_080C6C68:
- movs r0, 0x7
- b _080C6CA6
-_080C6C6C:
- movs r0, 0xB
- b _080C6CA6
-_080C6C70:
- cmp r0, 0xB
- bls _080C6C78
- movs r0, 0xE
- b _080C6CA6
-_080C6C78:
- movs r0, 0x5
- b _080C6CA6
-_080C6C7C:
- cmp r0, 0x13
- bls _080C6CA4
- cmp r3, 0xB
- bls _080C6C90
- cmp r2, 0xB
- bls _080C6C98
- cmp r3, r2
- bcs _080C6C44
-_080C6C8C:
- movs r0, 0x9
- b _080C6CA6
-_080C6C90:
- cmp r2, 0xB
- bls _080C6C98
- movs r0, 0xC
- b _080C6CA6
-_080C6C98:
- cmp r0, 0xB
- bls _080C6CA0
- movs r0, 0xF
- b _080C6CA6
-_080C6CA0:
- movs r0, 0x6
- b _080C6CA6
-_080C6CA4:
- movs r0, 0x3
-_080C6CA6:
- pop {r1}
- bx r1
- thumb_func_end sub_80C6BDC
-
- thumb_func_start sub_80C6CAC
-sub_80C6CAC: @ 80C6CAC
- push {lr}
- ldrh r1, [r0]
- movs r3, 0x1F
- movs r0, 0x1F
- ands r0, r1
- lsls r1, 16
- lsrs r2, r1, 21
- ands r2, r3
- lsrs r1, 26
- ands r1, r3
- adds r0, r2
- adds r0, r1
- movs r1, 0x3
- bl __divsi3
- movs r1, 0x1E
- ands r0, r1
- lsls r0, 16
- cmp r0, 0
- beq _080C6CD8
- lsrs r0, 17
- b _080C6CDA
-_080C6CD8:
- movs r0, 0x1
-_080C6CDA:
- pop {r1}
- bx r1
- thumb_func_end sub_80C6CAC
-
- thumb_func_start sub_80C6CE0
-sub_80C6CE0: @ 80C6CE0
- push {lr}
- ldrh r1, [r0]
- movs r3, 0x1F
- movs r0, 0x1F
- ands r0, r1
- lsls r1, 16
- lsrs r2, r1, 21
- ands r2, r3
- lsrs r1, 26
- ands r1, r3
- adds r0, r2
- adds r0, r1
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80C6CE0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s
deleted file mode 100644
index 17385cd01..000000000
--- a/asm/script_pokemon_util_80A0058.s
+++ /dev/null
@@ -1,535 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start HealPlayerParty
-HealPlayerParty: @ 80A0058
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r8, r0
- ldr r0, _080A0114 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r8, r0
- bcs _080A0104
- ldr r1, _080A0118 @ =gPlayerParty
- mov r10, r1
- mov r6, sp
-_080A0076:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- add r4, r10
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- lsls r1, r0, 16
- strb r0, [r6]
- lsrs r1, 24
- strb r1, [r6, 0x1]
- adds r0, r4, 0
- movs r1, 0x39
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x15
- bl GetMonData
- lsls r0, 24
- lsrs r7, r0, 24
- movs r5, 0
- movs r1, 0x1
- add r1, r8
- mov r9, r1
-_080A00AC:
- adds r1, r5, 0
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r7, 0
- adds r2, r5, 0
- bl CalculatePPWithBonus
- strb r0, [r6]
- adds r1, r5, 0
- adds r1, 0x11
- adds r0, r4, 0
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080A00AC
- movs r0, 0
- strb r0, [r6]
- strb r0, [r6, 0x1]
- strb r0, [r6, 0x2]
- strb r0, [r6, 0x3]
- movs r1, 0x64
- mov r0, r8
- muls r0, r1
- add r0, r10
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- mov r1, r9
- lsls r0, r1, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _080A0114 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r8, r0
- bcc _080A0076
-_080A0104:
- 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
-_080A0114: .4byte gPlayerPartyCount
-_080A0118: .4byte gPlayerParty
- thumb_func_end HealPlayerParty
-
- thumb_func_start ScriptGiveMon
-ScriptGiveMon: @ 80A011C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r6, 16
- lsrs r6, 16
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r0, r5, 16
- mov r8, r0
- movs r0, 0x64
- bl AllocZeroed
- adds r7, r0, 0
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r4, 0
- movs r3, 0x20
- bl CreateMon
- add r0, sp, 0x10
- mov r1, r8
- strb r1, [r0]
- lsrs r5, 24
- strb r5, [r0, 0x1]
- adds r0, r7, 0
- movs r1, 0xC
- add r2, sp, 0x10
- bl SetMonData
- adds r0, r7, 0
- bl GiveMonToPlayer
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r6, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r4, 0x1
- bgt _080A0196
- cmp r4, 0
- blt _080A0196
- adds r0, r5, 0
- movs r1, 0x2
- bl GetSetPokedexFlag
- adds r0, r5, 0
- movs r1, 0x3
- bl GetSetPokedexFlag
-_080A0196:
- adds r0, r7, 0
- bl Free
- adds r0, r4, 0
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ScriptGiveMon
-
- thumb_func_start ScriptGiveEgg
-ScriptGiveEgg: @ 80A01AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x64
- bl AllocZeroed
- adds r5, r0, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl CreateEgg
- movs r1, 0x1
- mov r0, sp
- strb r1, [r0]
- adds r0, r5, 0
- movs r1, 0x2D
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- bl GiveMonToPlayer
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl Free
- adds r0, r4, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ScriptGiveEgg
-
- thumb_func_start HasEnoughMonsForDoubleBattle
-HasEnoughMonsForDoubleBattle: @ 80A01F4
- push {lr}
- bl GetMonsStateToDoubles
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- beq _080A0210
- cmp r1, 0x1
- bgt _080A020C
- cmp r1, 0
- beq _080A0210
- b _080A0214
-_080A020C:
- cmp r1, 0x2
- bne _080A0214
-_080A0210:
- ldr r0, _080A0218 @ =gSpecialVar_Result
- strh r1, [r0]
-_080A0214:
- pop {r0}
- bx r0
- .align 2, 0
-_080A0218: .4byte gSpecialVar_Result
- thumb_func_end HasEnoughMonsForDoubleBattle
-
- thumb_func_start CheckPartyMonHasHeldItem
-CheckPartyMonHasHeldItem: @ 80A021C
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- movs r5, 0
- movs r7, 0xCE
- lsls r7, 1
-_080A0228:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _080A0258 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080A025C
- cmp r0, r7
- beq _080A025C
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- cmp r0, r6
- bne _080A025C
- movs r0, 0x1
- b _080A0264
- .align 2, 0
-_080A0258: .4byte gPlayerParty
-_080A025C:
- adds r5, 0x1
- cmp r5, 0x5
- ble _080A0228
- movs r0, 0
-_080A0264:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CheckPartyMonHasHeldItem
-
- thumb_func_start GetNameOfEnigmaBerryInPlayerParty
-GetNameOfEnigmaBerryInPlayerParty: @ 80A026C
- push {r4,lr}
- movs r0, 0xAF
- bl CheckPartyMonHasHeldItem
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- cmp r4, 0x1
- bne _080A028E
- movs r0, 0xAF
- bl ItemIdToBerryType
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080A0298 @ =gStringVar1
- bl GetBerryNameByBerryType
-_080A028E:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080A0298: .4byte gStringVar1
- thumb_func_end GetNameOfEnigmaBerryInPlayerParty
-
- thumb_func_start CreateScriptedWildMon
-CreateScriptedWildMon: @ 80A029C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r7, r2, 16
- lsrs r6, r7, 16
- bl ZeroEnemyPartyMons
- ldr r0, _080A02F8 @ =gEnemyParty
- mov r8, r0
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- mov r0, r8
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x20
- bl CreateMon
- cmp r6, 0
- beq _080A02EA
- add r0, sp, 0x10
- strb r6, [r0]
- adds r1, r0, 0
- lsrs r0, r7, 24
- strb r0, [r1, 0x1]
- mov r0, r8
- movs r1, 0xC
- add r2, sp, 0x10
- bl SetMonData
-_080A02EA:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A02F8: .4byte gEnemyParty
- thumb_func_end CreateScriptedWildMon
-
- thumb_func_start ScriptSetMonMoveSlot
-ScriptSetMonMoveSlot: @ 80A02FC
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r2, 24
- cmp r3, 0x6
- bls _080A0318
- ldr r0, _080A032C @ =gPlayerPartyCount
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080A0318:
- movs r0, 0x64
- muls r0, r3
- ldr r1, _080A0330 @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl SetMonMoveSlot
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A032C: .4byte gPlayerPartyCount
-_080A0330: .4byte gPlayerParty
- thumb_func_end ScriptSetMonMoveSlot
-
- thumb_func_start ChooseHalfPartyForBattle
-ChooseHalfPartyForBattle: @ 80A0334
- push {lr}
- ldr r1, _080A0348 @ =gMain
- ldr r0, _080A034C @ =sub_80A0350
- str r0, [r1, 0x8]
- movs r0, 0
- bl InitChooseHalfPartyForBattle
- pop {r0}
- bx r0
- .align 2, 0
-_080A0348: .4byte gMain
-_080A034C: .4byte sub_80A0350
- thumb_func_end ChooseHalfPartyForBattle
-
- thumb_func_start sub_80A0350
-sub_80A0350: @ 80A0350
- push {lr}
- ldr r0, _080A0360 @ =gSelectedOrderFromParty
- ldrb r1, [r0]
- cmp r1, 0
- bne _080A0368
- ldr r0, _080A0364 @ =gSpecialVar_Result
- strh r1, [r0]
- b _080A036E
- .align 2, 0
-_080A0360: .4byte gSelectedOrderFromParty
-_080A0364: .4byte gSpecialVar_Result
-_080A0368:
- ldr r1, _080A0378 @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
-_080A036E:
- ldr r0, _080A037C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080A0378: .4byte gSpecialVar_Result
-_080A037C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end sub_80A0350
-
- thumb_func_start ChooseBattleTowerPlayerParty
-ChooseBattleTowerPlayerParty: @ 80A0380
- push {lr}
- ldr r1, _080A0394 @ =gMain
- ldr r0, _080A0398 @ =sub_80A039C
- str r0, [r1, 0x8]
- movs r0, 0x1
- bl InitChooseHalfPartyForBattle
- pop {r0}
- bx r0
- .align 2, 0
-_080A0394: .4byte gMain
-_080A0398: .4byte sub_80A039C
- thumb_func_end ChooseBattleTowerPlayerParty
-
- thumb_func_start sub_80A039C
-sub_80A039C: @ 80A039C
- push {r4,lr}
- ldr r0, _080A03B0 @ =gSelectedOrderFromParty
- ldrb r4, [r0]
- cmp r4, 0
- bne _080A03B8
- bl LoadPlayerParty
- ldr r0, _080A03B4 @ =gSpecialVar_Result
- strh r4, [r0]
- b _080A03C2
- .align 2, 0
-_080A03B0: .4byte gSelectedOrderFromParty
-_080A03B4: .4byte gSpecialVar_Result
-_080A03B8:
- bl ReducePlayerPartyToThree
- ldr r1, _080A03D0 @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
-_080A03C2:
- ldr r0, _080A03D4 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080A03D0: .4byte gSpecialVar_Result
-_080A03D4: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_end sub_80A039C
-
- thumb_func_start ReducePlayerPartyToThree
-ReducePlayerPartyToThree: @ 80A03D8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r0, 0x96
- lsls r0, 1
- bl AllocZeroed
- adds r7, r0, 0
- movs r5, 0
- movs r0, 0x64
- mov r8, r0
- ldr r6, _080A0454 @ =gPlayerParty
- adds r4, r7, 0
-_080A03F4:
- ldr r0, _080A0458 @ =gSelectedOrderFromParty
- adds r1, r5, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080A040E
- subs r0, 0x1
- mov r1, r8
- muls r1, r0
- adds r1, r6
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
-_080A040E:
- adds r4, 0x64
- adds r5, 0x1
- cmp r5, 0x2
- ble _080A03F4
- movs r0, 0
- str r0, [sp]
- ldr r4, _080A0454 @ =gPlayerParty
- ldr r2, _080A045C @ =0x05000096
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- adds r5, r7, 0
- adds r6, r7, 0
- adds r6, 0xC8
-_080A042C:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r5, 0x64
- adds r4, 0x64
- cmp r5, r6
- ble _080A042C
- bl CalculatePlayerPartyCount
- adds r0, r7, 0
- bl Free
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0454: .4byte gPlayerParty
-_080A0458: .4byte gSelectedOrderFromParty
-_080A045C: .4byte 0x05000096
- thumb_func_end ReducePlayerPartyToThree
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_pokemon_util_80BF8FC.s b/asm/script_pokemon_util_80BF8FC.s
deleted file mode 100644
index a909758c2..000000000
--- a/asm/script_pokemon_util_80BF8FC.s
+++ /dev/null
@@ -1,422 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start Special_ChooseMonFromParty
-Special_ChooseMonFromParty: @ 80BF8FC
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080BF934 @ =sub_80BF97C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BF938 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x3
- strh r0, [r1, 0x8]
- subs r0, 0x4
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080BF934: .4byte sub_80BF97C
-_080BF938: .4byte gTasks
- thumb_func_end Special_ChooseMonFromParty
-
- thumb_func_start SelectMoveTutorMon
-SelectMoveTutorMon: @ 80BF93C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _080BF974 @ =sub_80BF97C
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BF978 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x7
- strh r0, [r1, 0x8]
- subs r0, 0x8
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080BF974: .4byte sub_80BF97C
-_080BF978: .4byte gTasks
- thumb_func_end SelectMoveTutorMon
-
- thumb_func_start sub_80BF97C
-sub_80BF97C: @ 80BF97C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _080BF9B4 @ =gPaletteFade
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BF9AC
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r1, _080BF9B8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x8]
- bl ChoosePartyMonByMenuType
- adds r0, r4, 0
- bl DestroyTask
-_080BF9AC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF9B4: .4byte gPaletteFade
-_080BF9B8: .4byte gTasks
- thumb_func_end sub_80BF97C
-
- thumb_func_start SelectMove
-SelectMove: @ 80BF9BC
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080BF9F0 @ =gPlayerParty
- ldr r1, _080BF9F4 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- ldr r2, _080BF9F8 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _080BF9FC @ =CB2_ReturnToField
- movs r4, 0
- str r4, [sp]
- bl ShowSelectMovePokemonSummaryScreen
- movs r0, 0x3
- bl sub_8138B38
- ldr r1, _080BFA00 @ =gFieldCallback
- ldr r0, _080BFA04 @ =FieldCallback_ReturnToEventScript2
- str r0, [r1]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF9F0: .4byte gPlayerParty
-_080BF9F4: .4byte gSpecialVar_0x8004
-_080BF9F8: .4byte gPlayerPartyCount
-_080BF9FC: .4byte CB2_ReturnToField
-_080BFA00: .4byte gFieldCallback
-_080BFA04: .4byte FieldCallback_ReturnToEventScript2
- thumb_func_end SelectMove
-
- thumb_func_start ScrSpecial_CountPokemonMoves
-ScrSpecial_CountPokemonMoves: @ 80BFA08
- push {r4,r5,lr}
- ldr r1, _080BFA44 @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- movs r4, 0
- adds r5, r1, 0
-_080BFA14:
- ldr r0, _080BFA48 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BFA4C @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0xD
- bl GetMonData
- cmp r0, 0
- beq _080BFA32
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_080BFA32:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080BFA14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFA44: .4byte gSpecialVar_Result
-_080BFA48: .4byte gSpecialVar_0x8004
-_080BFA4C: .4byte gPlayerParty
- thumb_func_end ScrSpecial_CountPokemonMoves
-
- thumb_func_start ScrSpecial_GetPokemonNicknameAndMoveName
-ScrSpecial_GetPokemonNicknameAndMoveName: @ 80BFA50
- push {r4,r5,lr}
- ldr r0, _080BFA90 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, _080BFA94 @ =gPlayerParty
- adds r5, r0
- ldr r0, _080BFA98 @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- adds r1, 0xD
- adds r0, r5, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r1, _080BFA9C @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r0, _080BFAA0 @ =gStringVar2
- movs r1, 0xD
- muls r1, r4
- ldr r2, _080BFAA4 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFA90: .4byte gSpecialVar_0x8004
-_080BFA94: .4byte gPlayerParty
-_080BFA98: .4byte gSpecialVar_0x8005
-_080BFA9C: .4byte gStringVar1
-_080BFAA0: .4byte gStringVar2
-_080BFAA4: .4byte gMoveNames
- thumb_func_end ScrSpecial_GetPokemonNicknameAndMoveName
-
- thumb_func_start sub_80BFAA8
-sub_80BFAA8: @ 80BFAA8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- mov r8, r0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r0, 0xD
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r1, [sp, 0x8]
- bl GetMonData
- mov r1, sp
- adds r1, 0x2
- str r1, [sp, 0x14]
- strh r0, [r1]
- adds r3, r4, 0
- adds r3, 0xD
- str r3, [sp, 0xC]
- mov r0, r8
- adds r1, r3, 0
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r7, r5, 0
- adds r7, 0x11
- str r7, [sp, 0x10]
- mov r0, r8
- adds r1, r7, 0
- bl GetMonData
- mov r1, sp
- adds r1, 0x5
- str r1, [sp, 0x18]
- strb r0, [r1]
- adds r3, r4, 0
- adds r3, 0x11
- str r3, [sp, 0x1C]
- mov r0, r8
- adds r1, r3, 0
- bl GetMonData
- add r7, sp, 0x4
- mov r10, r7
- strb r0, [r7]
- mov r0, r8
- movs r1, 0x15
- bl GetMonData
- mov r6, sp
- adds r6, 0x6
- strb r0, [r6]
- ldr r1, _080BFBA4 @ =gPPUpGetMask
- adds r0, r5, r1
- ldrb r0, [r0]
- mov r9, r0
- ldrb r0, [r6]
- adds r2, r0, 0
- mov r3, r9
- ands r2, r3
- lsls r5, 1
- asrs r2, r5
- lsls r2, 24
- lsrs r2, 24
- adds r1, r4, r1
- ldrb r3, [r1]
- adds r1, r0, 0
- ands r1, r3
- lsls r4, 1
- asrs r1, r4
- lsls r1, 24
- lsrs r1, 24
- mov r7, r9
- bics r0, r7
- strb r0, [r6]
- ldrb r0, [r6]
- bics r0, r3
- strb r0, [r6]
- lsls r2, r4
- lsls r1, r5
- adds r2, r1
- ldrb r0, [r6]
- orrs r0, r2
- strb r0, [r6]
- mov r0, r8
- ldr r1, [sp, 0x8]
- mov r2, sp
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0xC]
- ldr r2, [sp, 0x14]
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0x10]
- mov r2, r10
- bl SetMonData
- mov r0, r8
- ldr r1, [sp, 0x1C]
- ldr r2, [sp, 0x18]
- bl SetMonData
- mov r0, r8
- movs r1, 0x15
- adds r2, r6, 0
- bl SetMonData
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFBA4: .4byte gPPUpGetMask
- thumb_func_end sub_80BFAA8
-
- thumb_func_start DeleteMonMove
-DeleteMonMove: @ 80BFBA8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _080BFC08 @ =gSpecialVar_0x8004
- mov r8, r0
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _080BFC0C @ =gPlayerParty
- adds r0, r5
- ldr r4, _080BFC10 @ =gSpecialVar_0x8005
- ldrb r2, [r4]
- movs r1, 0
- bl SetMonMoveSlot
- mov r1, r8
- ldrh r0, [r1]
- muls r0, r6
- adds r0, r5
- ldrb r1, [r4]
- bl RemoveMonPPBonus
- ldrh r4, [r4]
- cmp r4, 0x2
- bhi _080BFBFC
-_080BFBDA:
- ldr r0, _080BFC08 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BFC0C @ =gPlayerParty
- adds r0, r1
- lsls r1, r4, 24
- lsrs r1, 24
- adds r4, 0x1
- lsls r2, r4, 24
- lsrs r2, 24
- bl sub_80BFAA8
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x2
- bls _080BFBDA
-_080BFBFC:
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFC08: .4byte gSpecialVar_0x8004
-_080BFC0C: .4byte gPlayerParty
-_080BFC10: .4byte gSpecialVar_0x8005
- thumb_func_end DeleteMonMove
-
- thumb_func_start IsSelectedMonEgg
-IsSelectedMonEgg: @ 80BFC14
- push {lr}
- ldr r0, _080BFC38 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BFC3C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- beq _080BFC44
- ldr r1, _080BFC40 @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- b _080BFC48
- .align 2, 0
-_080BFC38: .4byte gSpecialVar_0x8004
-_080BFC3C: .4byte gPlayerParty
-_080BFC40: .4byte gSpecialVar_Result
-_080BFC44:
- ldr r0, _080BFC4C @ =gSpecialVar_Result
- strh r1, [r0]
-_080BFC48:
- pop {r0}
- bx r0
- .align 2, 0
-_080BFC4C: .4byte gSpecialVar_Result
- thumb_func_end IsSelectedMonEgg
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/berry_fix/payload/asm/crt0.s b/berry_fix/payload/asm/crt0.s
index edbb83328..9a0e75c77 100644
--- a/berry_fix/payload/asm/crt0.s
+++ b/berry_fix/payload/asm/crt0.s
@@ -16,7 +16,7 @@ Init:
msr cpsr_cf, r0
ldr sp, sp_sys
ldr r1, =INTR_VECTOR
- ldr r0, =IntrMain
+ ldr r0, =intr_main
str r0, [r1]
ldr r1, =AgbMain + 1
mov lr, pc
@@ -32,8 +32,8 @@ sp_irq: .word IWRAM_END - 0x60
.arm
.align 2, 0
- .global IntrMain
-IntrMain: @ 0x2010048
+ .global intr_main
+intr_main: @ 0x2010048
mov ip, REG_BASE
add r3, ip, OFFSET_REG_IE
ldr r2, [r3]
@@ -79,4 +79,4 @@ _020100DC:
ldr r0, [r1]
bx r0
.pool
- .size IntrMain, .-IntrMain
+ .size intr_main, .-intr_main
diff --git a/berry_fix/payload/src/main.c b/berry_fix/payload/src/main.c
index 325d3830e..a017e8f69 100644
--- a/berry_fix/payload/src/main.c
+++ b/berry_fix/payload/src/main.c
@@ -17,7 +17,7 @@ u32 gGameVersion;
EWRAM_DATA u8 gSharedMem[0x8000] = {};
-void IntrMain(void);
+void intr_main(void);
void ReadKeys(void);
void dummy_intr_0(void);
void dummy_intr_1(void);
@@ -62,7 +62,7 @@ void AgbMain(void)
{
RegisterRamReset(0x1E);
DmaCopy32(3, gIntrFuncPointers, gIntrTable, sizeof gIntrFuncPointers);
- DmaCopy32(3, IntrMain, gIntrVector, sizeof(gIntrVector));
+ DmaCopy32(3, intr_main, gIntrVector, sizeof(gIntrVector));
INTR_VECTOR = gIntrVector;
REG_IE = INTR_FLAG_VBLANK;
if (*RomHeaderMagic == 0x96 && *(u32 *)RomHeaderGameCode == *(u32 *)gBerryFixGameCode)
diff --git a/common_syms/image_processing_effects.txt b/common_syms/image_processing_effects.txt
new file mode 100644
index 000000000..134f7e88b
--- /dev/null
+++ b/common_syms/image_processing_effects.txt
@@ -0,0 +1,10 @@
+gCanvasColumnStart
+gCanvasPixels
+gCanvasRowEnd
+gCanvasHeight
+gCanvasColumnEnd
+gCanvasRowStart
+gCanvasMonPersonality
+gCanvasWidth
+gCanvasPalette
+gCanvasPaletteStart
diff --git a/common_syms/librfu_rfu.txt b/common_syms/librfu_rfu.txt
new file mode 100644
index 000000000..4b742dcd2
--- /dev/null
+++ b/common_syms/librfu_rfu.txt
@@ -0,0 +1,5 @@
+gRfuSlotStatusUNI
+gRfuSlotStatusNI
+gRfuLinkStatus
+gRfuStatic
+gRfuFixed
diff --git a/common_syms/librfu_sio32id.txt b/common_syms/librfu_sio32id.txt
new file mode 100644
index 000000000..97395e84b
--- /dev/null
+++ b/common_syms/librfu_sio32id.txt
@@ -0,0 +1 @@
+gRfuSIO32Id
diff --git a/common_syms/librfu_stwi.txt b/common_syms/librfu_stwi.txt
new file mode 100644
index 000000000..a1f773553
--- /dev/null
+++ b/common_syms/librfu_stwi.txt
@@ -0,0 +1 @@
+gSTWIStatus
diff --git a/constants/version.inc b/constants/version.inc
index c93e439f4..07c3bfa29 100644
--- a/constants/version.inc
+++ b/constants/version.inc
@@ -1,91 +1,5 @@
- .ifdef SAPPHIRE
- .equiv GAME_VERSION, 1
+ .ifdef FIRERED
+ .equiv GAME_VERSION, 4
.else
- .equiv GAME_VERSION, 2
- .endif
-
- .ifdef SAPPHIRE
- .set BGM_EVIL_TEAM, BGM_AQA_0
- .set BGM_GOOD_TEAM, BGM_MGM0
- .else
- .set BGM_EVIL_TEAM, BGM_MGM0
- .set BGM_GOOD_TEAM, BGM_AQA_0
- .endc
-
- .ifdef SAPPHIRE
- .set ITEM_RED_OR_BLUE_ORB, ITEM_BLUE_ORB
- .else
- .set ITEM_RED_OR_BLUE_ORB, ITEM_RED_ORB
- .endif
-
- .ifdef SAPPHIRE
- .set SPECIES_GROUDON_OR_KYOGRE, SPECIES_KYOGRE
- .else
- .set SPECIES_GROUDON_OR_KYOGRE, SPECIES_GROUDON
- .endif
-
- .ifdef SAPPHIRE
- .set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIOS
- .else
- .set SPECIES_LATIAS_OR_LATIOS, SPECIES_LATIAS
- .endif
-
- .ifdef SAPPHIRE
- .set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_9
- .set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_15
- .set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_19
- .set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_20
- .set OPPONENT_514, OPPONENT_HECTOR_1
- .set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_MATT_2
- .set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_13
- .set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_1
- .set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_2
- .set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_3
- .set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_26
- .set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_MATT_1
- .set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_4
- .set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_27
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_5
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_6
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_SHELLY_2
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_7
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_ARCHIE_2
- .set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_ARCHIE_3
- .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_22
- .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_23
- .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_24
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_16
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_25
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_17
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_18
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_SHELLY_1
- .else
- .set OPPONENT_PETALBURG_WOODS_GRUNT, OPPONENT_GRUNT_36
- .set OPPONENT_RUSTURF_TUNNEL_GRUNT, OPPONENT_GRUNT_42
- .set OPPONENT_MUSEUM_2F_GRUNT_1, OPPONENT_GRUNT_46
- .set OPPONENT_MUSEUM_2F_GRUNT_2, OPPONENT_GRUNT_47
- .set OPPONENT_514, OPPONENT_HECTOR_2
- .set OPPONENT_MT_CHIMNEY_GRUNT_1, OPPONENT_TABITHA_2
- .set OPPONENT_MT_CHIMNEY_GRUNT_2, OPPONENT_GRUNT_40
- .set OPPONENT_HIDEOUT_1F_GRUNT, OPPONENT_GRUNT_28
- .set OPPONENT_HIDEOUT_B1F_GRUNT_1, OPPONENT_GRUNT_29
- .set OPPONENT_HIDEOUT_B1F_GRUNT_2, OPPONENT_GRUNT_30
- .set OPPONENT_HIDEOUT_B1F_GRUNT_3, OPPONENT_GRUNT_53
- .set OPPONENT_HIDEOUT_B2F_GRUNT_1, OPPONENT_TABITHA_1
- .set OPPONENT_HIDEOUT_B2F_GRUNT_2, OPPONENT_GRUNT_31
- .set OPPONENT_HIDEOUT_B2F_GRUNT_3, OPPONENT_GRUNT_54
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_1, OPPONENT_GRUNT_32
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_2, OPPONENT_GRUNT_33
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_3, OPPONENT_COURTNEY_2
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_4, OPPONENT_GRUNT_34
- .set OPPONENT_SEAFLOOR_CAVERN_GRUNT_5, OPPONENT_MAXIE_2
- .set OPPONENT_MT_CHIMNEY_GRUNT_3, OPPONENT_MAXIE_3
- .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_1, OPPONENT_GRUNT_49
- .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_2, OPPONENT_GRUNT_50
- .set OPPONENT_MT_PYRE_SUMMIT_GRUNT_3, OPPONENT_GRUNT_51
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_1, OPPONENT_GRUNT_43
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_2, OPPONENT_GRUNT_52
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_3, OPPONENT_GRUNT_44
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_4, OPPONENT_GRUNT_45
- .set OPPONENT_WEATHER_INSTITUTE_GRUNT_5, OPPONENT_COURTNEY_1
+ .equiv GAME_VERSION, 5
.endif
diff --git a/data/battle_interface.s b/data/battle_interface.s
deleted file mode 100644
index f8cf4a4b9..000000000
--- a/data/battle_interface.s
+++ /dev/null
@@ -1,164 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/trainer_classes.h"
-#include "constants/songs.h"
-#include "constants/flags.h"
-#include "constants/region_map.h"
-#include "constants/maps.h"
-#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_8260270:: @ 8260270
- .4byte 0xc0004000, 0x00000400
-
-gUnknown_8260278:: @ 8260278
- spr_template 55039, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
- spr_template 55040, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_82602A8:: @ 82602A8
- spr_template 55041, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
- spr_template 55042, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_82602D8:: @ 82602D8
- spr_template 55051, 55039, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_82602F0::
- .4byte 0x40004000, 0x00000400
-
-gUnknown_82602F8:: @ 82602F8
- spr_template 55044, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
- spr_template 55045, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
- spr_template 55046, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
- spr_template 55047, 55044, gUnknown_82602F0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80480B8
-
-gUnknown_8260358::
- subsprite 240, 0, 1, 0x0000, 64x32
- subsprite 48, 0, 1, 0x0020, 32x32
- subsprite 240, 32, 1, 0x0030, 32x8
- subsprite 16, 32, 1, 0x0034, 32x8
- subsprite 48, 32, 1, 0x0038, 32x8
-
-gUnknown_826036C::
- subsprite 240, 0, 1, 0x0040, 64x32
- subsprite 48, 0, 1, 0x0060, 32x32
- subsprite 240, 32, 1, 0x0070, 32x8
- subsprite 16, 32, 1, 0x0074, 32x8
- subsprite 48, 32, 1, 0x0078, 32x8
-
-gUnknown_8260380::
- subsprite 240, 0, 1, 0x0000, 64x32
- subsprite 48, 0, 1, 0x0020, 32x32
-
-gUnknown_8260388::
- subsprite 240, 0, 1, 0x0000, 64x32
- subsprite 48, 0, 1, 0x0020, 32x32
-
-gUnknown_8260390::
- subsprite 240, 0, 1, 0x0000, 32x8
- subsprite 16, 0, 1, 0x0004, 32x8
-
-gUnknown_8260398::
- subsprite 240, 0, 1, 0x0000, 32x8
- subsprite 16, 0, 1, 0x0004, 32x8
- subsprite 224, 0, 1, 0x0008, 8x8
-
-gUnknown_82603A4::
- .4byte 5, gUnknown_8260358
- .4byte 2, gUnknown_8260380
- .4byte 5, gUnknown_826036C
- .4byte 2, gUnknown_8260388
-
-gUnknown_82603C4:: @ 82603C4
- .4byte 2, gUnknown_8260390
- .4byte 3, gUnknown_8260398
-
-gUnknown_82603D4::
- subsprite 160, 0, 1, 0x0000, 32x8
- subsprite 192, 0, 1, 0x0004, 32x8
- subsprite 224, 0, 1, 0x0008, 32x8
- subsprite 0, 0, 1, 0x000c, 32x8
-
-gUnknown_82603E4::
- subsprite 160, 0, 1, 0x0000, 32x8
- subsprite 192, 0, 1, 0x0004, 32x8
- subsprite 224, 0, 1, 0x0008, 32x8
- subsprite 0, 0, 1, 0x0008, 32x8
- subsprite 32, 0, 1, 0x0008, 32x8
- subsprite 64, 0, 1, 0x000c, 32x8
-
-gUnknown_82603FC:: @ 82603FC
- .4byte 4, gUnknown_82603D4
-
-gUnknown_8260404:: @ 8260404
- .4byte 6, gUnknown_82603E4
-
-gUnknown_26040C::
- .incbin "graphics/battle_interface/unk_826404C.4bpp"
-
-gUnknown_826046C:: @ 826046C
- obj_tiles gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55052
- obj_tiles gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55053
-
-gUnknown_826047C:: @ 826047C
- obj_pal gBattleInterface_BallStatusBarPal, 55056
- obj_pal gBattleInterface_BallStatusBarPal, 55057
-
-gUnknown_826048C:: @ 826048C
- obj_pal gBattleInterface_BallDisplayPal, 55058
- obj_pal gBattleInterface_BallDisplayPal, 55059
-
-gUnknown_826049C:: @ 826049C
- obj_tiles gUnknown_8D12404, 0x0080, 55060
- obj_tiles gUnknown_8D12404, 0x0080, 55061
-
-gUnknown_82604AC::
- .4byte 0xc0004000, 0x00000400
-
-gUnknown_82604B4::
- .4byte 0x00000000, 0x00000400
-
-gUnknown_82604BC:: @ 82604BC
- spr_template 55052, 55056, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBar
- spr_template 55053, 55057, gUnknown_8260270, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBar
-
-gUnknown_82604EC:: @ 82604EC
- spr_template 55060, 55058, gUnknown_82604B4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBallsOnBattleStart
- spr_template 55061, 55059, gUnknown_82604B4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_StatusSummaryBallsOnBattleStart
-
-gUnknown_826051C:: @ 826051C
- .string "{LV_2}$", 16
-
-gUnknown_826052C:: @ 826052C
- .string "{COLOR 01}{HIGHLIGHT 02}", 20
-
-gUnknown_8260540:: @ 8260540
- .string "/$"
-
-gUnknown_8260542:: @ 8260542
- .string "{COLOR 01}{HIGHLIGHT 00}", 20
-
-gUnknown_8260556:: @ 8260556
- .string "{HIGHLIGHT 02}$"
-
-gUnknown_826055A:: @ 826055A
- .2byte RGB(24, 12, 24)
- .2byte RGB(23, 23, 3)
- .2byte RGB(20, 20, 17)
- .2byte RGB(17, 22, 28)
- .2byte RGB(28, 14, 10)
-
-gUnknown_8260564:: @ 8260564
- .byte 0, 0, 0, 8, 2, 0
- .2byte 0x0000
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0000
- @ }
diff --git a/data/librfu_rodata.s b/data/librfu_rodata.s
deleted file mode 100644
index c6ca84f4b..000000000
--- a/data/librfu_rodata.s
+++ /dev/null
@@ -1,28 +0,0 @@
- .section .rodata
-
- .set VERSION_MAJOR, 1
- .set VERSION_MINOR, 0
- .set VERSION_REVISION, 24
-
- .align 2
-_Str_RfuHeader::
- .byte 2, 14, 0, 10, 9, 5, 7, 2
- .byte 0, 15, 1, 3, 3, 0, 31, 0
- .byte 3, 22, 18, 14, 13, 9, 11, 3
- .byte 15, 15, 1, 3, 3, 0, 0x7f, 0
-
- .ascii "RFU_V"
- .byte VERSION_MAJOR + 0x30
- .byte VERSION_MINOR + 0x30
- .byte (VERSION_REVISION / 10) + 0x30
- .byte (VERSION_REVISION % 10) + 0x30
- .byte 0
-
- .align 2
-_Str_RFU_MBOOT::
- .asciz "RFU-MBOOT"
-
- .align 2
-_Str_Sio32ID::
- .asciz "NINTENDOSio32ID_030820"
-
diff --git a/data/maps/FuchsiaCity_House3/scripts.inc b/data/maps/FuchsiaCity_House3/scripts.inc
index 6558a43ee..5eb556a79 100644
--- a/data/maps/FuchsiaCity_House3/scripts.inc
+++ b/data/maps/FuchsiaCity_House3/scripts.inc
@@ -16,19 +16,19 @@ EventScript_16D8B0:: @ 816D8B0
waitstate
compare VAR_0x8004, 6
goto_if_ge EventScript_16D941
- special IsSelectedMonEgg
+ special Special_IsSelectedMonEgg
compare VAR_RESULT, 1
goto_if_eq EventScript_16D937
- special ScrSpecial_CountPokemonMoves
+ special Special_GetNumMovesSelectedMonHas
compare VAR_RESULT, 1
goto_if_eq EventScript_16D92A
msgbox gUnknown_8199445
fadescreen FADE_TO_BLACK
- special SelectMove
+ special Special_SelectMove
fadescreen FADE_FROM_BLACK
compare VAR_0x8005, 4
goto_if_eq EventScript_16D8B0
- special ScrSpecial_GetPokemonNicknameAndMoveName
+ special Special_BufferMoveDeleterNicknameAndMove
msgbox gUnknown_8199485, MSGBOX_YESNO
compare VAR_RESULT, YES
goto_if_eq EventScript_16D919
@@ -36,7 +36,7 @@ EventScript_16D8B0:: @ 816D8B0
end
EventScript_16D919:: @ 816D919
- special DeleteMonMove
+ special Special_MoveDeleterForgetMove
playfanfare MUS_ME_WASURE
waitfanfare
msgbox gUnknown_81994B1
@@ -44,7 +44,7 @@ EventScript_16D919:: @ 816D919
end
EventScript_16D92A:: @ 816D92A
- special ScrSpecial_GetPokemonNicknameAndMoveName
+ special Special_BufferMoveDeleterNicknameAndMove
msgbox gUnknown_8199465
release
end
diff --git a/data/maps/TwoIsland_House/scripts.inc b/data/maps/TwoIsland_House/scripts.inc
index d8c530847..f6268567d 100644
--- a/data/maps/TwoIsland_House/scripts.inc
+++ b/data/maps/TwoIsland_House/scripts.inc
@@ -48,11 +48,11 @@ EventScript_1716A5:: @ 81716A5
EventScript_1716BE:: @ 81716BE
msgbox gUnknown_81A2CC3
- special SelectMoveTutorMon
+ special Special_SelectMoveTutorMon
waitstate
compare VAR_0x8004, 6
goto_if_ge EventScript_17179E
- special IsSelectedMonEgg
+ special Special_IsSelectedMonEgg
compare VAR_RESULT, 1
goto_if_eq EventScript_171790
compare VAR_0x8005, 0
diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s
index ff732f5ae..3400c9ae0 100644
--- a/data/pokemon_summary_screen.s
+++ b/data/pokemon_summary_screen.s
@@ -266,7 +266,7 @@ gUnknown_8463E57:: @ 8463E57
.string "QUIRKY$"
.align 2
-gNatureNames:: @ 8463E60 dataptr
+gNatureNamePointers:: @ 8463E60 dataptr
.4byte gUnknown_8463DBC
.4byte gUnknown_8463DC2
.4byte gUnknown_8463DC9
diff --git a/data/region_map.s b/data/region_map.s
deleted file mode 100644
index 5d28f9503..000000000
--- a/data/region_map.s
+++ /dev/null
@@ -1,4370 +0,0 @@
-#include "constants/maps.h"
-#include "constants/species.h"
-#include "constants/region_map.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
- .include "data/text/map_section_names.inc"
-
-gUnknown_83EF23C:: @ 83EF23C gbapal
- .incbin "graphics/region_map/unk_83EF23C.gbapal"
-
-gUnknown_83EF25C:: @ 83EF25C gbapal
- .incbin "graphics/region_map/unk_83EF25C.gbapal"
-
-gUnknown_83EF27C:: @ 83EF27C gbapal
- .incbin "graphics/region_map/unk_83EF27C.gbapal"
-
-gUnknown_83EF29C:: @ 83EF29C gbapal
- .incbin "graphics/region_map/unk_83EF29C.gbapal"
-
-gUnknown_83EF2BC:: @ 83EF2BC gbapal
- .incbin "graphics/region_map/unk_83EF2BC.gbapal"
-
-gUnknown_83EF2DC:: @ 83EF2DC gbapal
- .incbin "graphics/region_map/unk_83EF2DC.gbapal"
-
- .2byte 0x7c00, 0x7d80, 0x7fff, 0x7fff
-
-gUnknown_83EF384:: @ 83EF384 gbapal
- .incbin "graphics/region_map/unk_83EF384.gbapal"
-
-gUnknown_83EF3A4:: @ 83EF3A4 gbapal
- .incbin "graphics/region_map/unk_83EF3A4.gbapal"
-
-gUnknown_83EF3C4:: @ 83EF3C4 pal=gUnknown_83EF384
- .incbin "graphics/region_map/unk_83EF3C4.4bpp.lz"
-
-gUnknown_83EF450:: @ 83EF450 pal=gUnknown_83EF384
- .incbin "graphics/region_map/unk_83EF450.4bpp.lz"
-
-gUnknown_83EF4E0:: @ 83EF4E0 pal=gUnknown_83EF25C
- .incbin "graphics/region_map/unk_83EF4E0.4bpp.lz"
-
-gUnknown_83EF524:: @ 83EF524 pal=gUnknown_83EF27C
- .incbin "graphics/region_map/unk_83EF524.4bpp.lz"
-
-gUnknown_83EF59C:: @ 83EF59C pal=gUnknown_83EF29C
- .incbin "graphics/region_map/unk_83EF59C.4bpp.lz"
-
-gUnknown_83EF61C:: @ 83EF61C
- .incbin "graphics/region_map/unk_83EF61C.4bpp.lz"
-
-gUnknown_83F0330:: @ 83F0330
- .incbin "graphics/region_map/unk_83F0330.4bpp.lz"
-
-gUnknown_83F0580:: @ 83F0580
- .incbin "graphics/region_map/unk_83F0580.bin.lz"
-
-gUnknown_83F089C:: @ 83F089C
- .incbin "graphics/region_map/unk_83F089C.bin.lz"
-
-gUnknown_83F0AFC:: @ 83F0AFC
- .incbin "graphics/region_map/unk_83F0AFC.bin.lz"
-
-gUnknown_83F0C0C:: @ 83F0C0C
- .incbin "graphics/region_map/unk_83F0C0C.bin.lz"
-
-gUnknown_83F0CF0:: @ 83F0CF0
- .incbin "graphics/region_map/unk_83F0CF0.bin.lz"
-
-gUnknown_83F0E0C:: @ 83F0E0C
- .incbin "graphics/region_map/unk_83F0E0C.bin.lz"
-
-gUnknown_83F0F1C:: @ 83F0F1C
- .incbin "graphics/region_map/unk_83F0F1C.bin.lz"
-
-gUnknown_83F1084:: @ 83F1084
- .incbin "graphics/region_map/unk_83F1084.bin.lz"
-
-gUnknown_83F1190:: @ 83F1190
- .incbin "graphics/region_map/unk_83F1190.bin.lz"
-
-gUnknown_83F12CC:: @ 83F12CC pal=gUnknown_83EF3A4
- .incbin "graphics/region_map/unk_83F12CC.4bpp.lz"
-
-gUnknown_83F13EC:: @ 83F13EC pal=gUnknown_83EF3A4
- .incbin "graphics/region_map/unk_83F13EC.4bpp.lz"
-
-gUnknown_83F1550:: @ 83F1550 pal=gUnknown_83EF3A4
- .incbin "graphics/region_map/unk_83F1550.4bpp.lz"
-
-gUnknown_83F1640:: @ 83F1640 pal=gUnknown_83EF3A4
- .incbin "graphics/region_map/unk_83F1640.4bpp.lz"
-
-gUnknown_83F1738:: @ 83F1738 pal=gUnknown_83EF3A4
- .incbin "graphics/region_map/unk_83F1738.4bpp.lz"
-
-gUnknown_83F1804:: @ 83F1804 pal=gUnknown_83EF3A4
- .incbin "graphics/region_map/unk_83F1804.4bpp.lz"
-
-gUnknown_83F18D8:: @ 83F18D8 pal=gUnknown_83EF2BC
- .incbin "graphics/region_map/unk_83F18D8.4bpp.lz"
-
-gUnknown_83F1908:: @ 83F1908 pal=gUnknown_83EF2BC
- .incbin "graphics/region_map/unk_83F1908.4bpp.lz"
-
-gUnknown_83F1978:: @ 83F1978
- .incbin "graphics/region_map/unk_83F1978.4bpp.lz"
-
-gUnknown_83F19A0:: @ 83F19A0
- .incbin "graphics/region_map/unk_83F19A0.bin.lz"
-
-gUnknown_83F1A50:: @ 83F1A50
- .4byte 0x000021e0
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 30,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000030f5
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 1,
- @ .mapBaseIndex = 15,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x0000117a
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 23,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000001ff
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 3,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_83F1A60:: @ 83F1A60
- .byte 3, 3, 2, 15, 2, 12
- .2byte 0x0001
- @ {
- @ .bg = 3,
- @ .tilemapLeft = 3,
- @ .tilemapTop = 2,
- @ .width = 15,
- @ .height = 2,
- @ .paletteNum = 12,
- @ .baseBlock = 0x0001
- @ }
- .byte 3, 3, 4, 15, 2, 12
- .2byte 0x001f
- @ {
- @ .bg = 3,
- @ .tilemapLeft = 3,
- @ .tilemapTop = 4,
- @ .width = 15,
- @ .height = 2,
- @ .paletteNum = 12,
- @ .baseBlock = 0x001f
- @ }
- .byte 3, 3, 6, 25, 11, 12
- .2byte 0x003d
- @ {
- @ .bg = 3,
- @ .tilemapLeft = 3,
- @ .tilemapTop = 6,
- @ .width = 25,
- @ .height = 11,
- @ .paletteNum = 12,
- @ .baseBlock = 0x003d
- @ }
- .byte 3, 18, 0, 5, 2, 12
- .2byte 0x0150
- @ {
- @ .bg = 3,
- @ .tilemapLeft = 18,
- @ .tilemapTop = 0,
- @ .width = 5,
- @ .height = 2,
- @ .paletteNum = 12,
- @ .baseBlock = 0x0150
- @ }
- .byte 3, 24, 0, 5, 2, 12
- .2byte 0x015a
- @ {
- @ .bg = 3,
- @ .tilemapLeft = 24,
- @ .tilemapTop = 0,
- @ .width = 5,
- @ .height = 2,
- @ .paletteNum = 12,
- @ .baseBlock = 0x015a
- @ }
- .byte 255, 0, 0, 0, 0, 0
- .2byte 0x0000
- @ {
- @ .bg = 255,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 0,
- @ .height = 0,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0000
- @ }
-
-gUnknown_83F1A90:: @ 83F1A90
- .byte 0, 1, 2
-
- .align 2
-gUnknown_83F1A94:: @ 83F1A94
- .byte 0, 7, 2
-
- .align 2
-gUnknown_83F1A98:: @ 83F1A98
- .byte 0, 10, 2
-
- .align 2
-gUnknown_83F1A9C:: @ 83F1A9C
- .4byte gUnknown_83F1A94
- .4byte gUnknown_83F1A98
-
-gUnknown_83F1AA4:: @ 83F1AA4
- .byte 0x8f, 0x90, 0x91, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xaf, 0xb0, 0xb9, 0xc3, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .byte 0x92, 0x93, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xae, 0xb1, 0xb2, 0xb5, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .byte 0x94, 0x95, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xb3, 0xb4, 0xb6, 0xb7, 0xb8, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc5, 0x00, 0x00
-
- .align 2
-gUnknown_83F1B00:: @ 83F1B00
- .byte 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
-
-gUnknown_83F1B0C:: @ 83F1B0C
- .2byte 0x0018, 0x0010, 0x0090, 0x0020
-
-gUnknown_83F1B14:: @ 83F1B14
- .2byte 0x0018, 0x0020, 0x0090, 0x0030
-
-gUnknown_83F1B1C:: @ 83F1B1C
- .2byte 0x0000, 0x0000, 0x0000, 0x0000
-
-gUnknown_83F1B24:: @ 83F1B24
- .4byte 0x80000000, 0x00000000
-
-gAnimCmd_83F1B2C::
- obj_image_anim_frame 0x00, 20
- obj_image_anim_frame 0x10, 20
- obj_image_anim_jump 0
-
-gUnknown_83F1B38:: @ 83F1B38
- .4byte gAnimCmd_83F1B2C
-
-gUnknown_83F1B3C:: @ 83F1B3C
- .2byte MAPSEC_VIRIDIAN_FOREST
- .align 2
- .4byte gMapSecName_ViridianForest
- .4byte gUnknown_8418ECB
- .2byte MAPSEC_MT_MOON
- .align 2
- .4byte gMapSecName_MtMoon
- .4byte gUnknown_8418F3A
- .2byte MAPSEC_DIGLETTS_CAVE
- .align 2
- .4byte gMapSecName_DiglettsCave
- .4byte gUnknown_8418FB8
- .2byte MAPSEC_KANTO_VICTORY_ROAD
- .align 2
- .4byte gMapSecName_VictoryRoad
- .4byte gUnknown_841901C
- .2byte MAPSEC_POKEMON_MANSION
- .align 2
- .4byte gMapSecName_PokemonMansion
- .4byte gUnknown_841908E
- .2byte MAPSEC_KANTO_SAFARI_ZONE
- .align 2
- .4byte gMapSecName_SafariZone
- .4byte gUnknown_8419103
- .2byte MAPSEC_ROCK_TUNNEL
- .align 2
- .4byte gMapSecName_RockTunnel
- .4byte gUnknown_841917D
- .2byte MAPSEC_SEAFOAM_ISLANDS
- .align 2
- .4byte gMapSecName_SeafoamIslands
- .4byte gUnknown_8419201
- .2byte MAPSEC_POKEMON_TOWER
- .align 2
- .4byte gMapSecName_PokemonTower
- .4byte gUnknown_841926D
- .2byte MAPSEC_CERULEAN_CAVE
- .align 2
- .4byte gMapSecName_CeruleanCave
- .4byte gUnknown_84192E2
- .2byte MAPSEC_POWER_PLANT
- .align 2
- .4byte gMapSecName_PowerPlant
- .4byte gUnknown_841935B
- .2byte MAPSEC_MT_EMBER
- .align 2
- .4byte gMapSecName_MtEmber
- .4byte gUnknown_84193D5
- .2byte MAPSEC_BERRY_FOREST
- .align 2
- .4byte gMapSecName_BerryForest
- .4byte gUnknown_8419444
- .2byte MAPSEC_ICEFALL_CAVE
- .align 2
- .4byte gMapSecName_IcefallCave
- .4byte gUnknown_84194C9
- .2byte MAPSEC_LOST_CAVE
- .align 2
- .4byte gMapSecName_LostCave
- .4byte gUnknown_841953F
- .2byte MAPSEC_TANOBY_CHAMBERS
- .align 2
- .4byte gMapSecName_TanobyChambers
- .4byte gUnknown_84195AC
- .2byte MAPSEC_ALTERING_CAVE
- .align 2
- .4byte gMapSecName_AlteringCave
- .4byte gUnknown_8419629
- .2byte MAPSEC_PATTERN_BUSH
- .align 2
- .4byte gMapSecName_PatternBush
- .4byte gUnknown_841969D
- .2byte MAPSEC_DOTTED_HOLE
- .align 2
- .4byte gMapSecName_DottedHole
- .4byte gUnknown_841971A
-
-gUnknown_83F1C20:: @ 83F1C20
- .4byte 0xc0008000, 0x00000000
-
-gAnimCmd_83f1c28::
- obj_image_anim_frame 0, 0
- obj_image_anim_jump 0
-
-gUnknown_83F1C30:: @ 83F1C30
- .4byte gAnimCmd_83f1c28
-
-gUnknown_83F1C34:: @ 83F1C34
- .2byte 0x0018, 0x0010, 0x00d8, 0x00a0
-
-gUnknown_83F1C3C:: @ 83F1C3C
- .4byte 0x40000000, 0x00000800
-
-gAnimCmd_83F1C44::
- obj_image_anim_frame 0, 20
- obj_image_anim_frame 4, 20
- obj_image_anim_jump 0
-
-gUnknown_83F1C50:: @ 83F1C50
- .4byte gAnimCmd_83F1C44
-
-gUnknown_83F1C54:: @ 83F1C54
- .4byte 0x40000000, 0x00000800
-
-gAnimCmd_83F1C5C::
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
-gUnknown_83F1C64:: @ 83F1C64
- .4byte gAnimCmd_83F1C5C
-
-gUnknown_83F1C68:: @ 83F1C68
- .4byte 0x40000000, 0x00000800
-
-gUnknown_83F1C70:: @ 83F1C70
- .4byte 0x00000000, 0x00000800
-
-gAnimCmd_83F1C78::
- obj_image_anim_frame 0, 30
- obj_image_anim_frame 4, 60
- obj_image_anim_jump 0
-
-gAnimCmd_83F1C84::
- obj_image_anim_frame 1, 20
- obj_image_anim_jump 0
-
-gAnimCmd_83F1C8C::
- obj_image_anim_frame 0, 20
- obj_image_anim_jump 0
-
-gUnknown_83F1C94:: @ 83F1C94
- .4byte gAnimCmd_83F1C78
-
-gUnknown_83F1C98:: @ 83F1C98
- .4byte gAnimCmd_83F1C84
- .4byte gAnimCmd_83F1C8C
-
-gUnknown_83F1CA0:: @ 83F1CA0
- .2byte 0x2000, 0x4000
-
-gUnknown_83F1CA4:: @ 83F1CA4
- .2byte 0x4044, 0x4246
-
-gUnknown_83F1CA8:: @ 83F1CA8
- .byte 15, 1, 2
-
- .align 2
-gUnknown_83F1CAC:: @ 83F1CAC
- .4byte gMapSecName_PalletTown
- .4byte gMapSecName_ViridianCity
- .4byte gMapSecName_PewterCity
- .4byte gMapSecName_CeruleanCity
- .4byte gMapSecName_LavenderTown
- .4byte gMapSecName_VermilionCity
- .4byte gMapSecName_CeladonCity
- .4byte gMapSecName_FuchsiaCity
- .4byte gMapSecName_CinnabarIsland
- .4byte gMapSecName_IndigoPlateau
- .4byte gMapSecName_SaffronCity
- .4byte gMapSecName_Route4
- .4byte gMapSecName_Route10
- .4byte gMapSecName_Route1
- .4byte gMapSecName_Route2
- .4byte gMapSecName_Route3
- .4byte gMapSecName_Route4_2
- .4byte gMapSecName_Route5
- .4byte gMapSecName_Route6
- .4byte gMapSecName_Route7
- .4byte gMapSecName_Route8
- .4byte gMapSecName_Route9
- .4byte gMapSecName_Route10_2
- .4byte gMapSecName_Route11
- .4byte gMapSecName_Route12
- .4byte gMapSecName_Route13
- .4byte gMapSecName_Route14
- .4byte gMapSecName_Route15
- .4byte gMapSecName_Route16
- .4byte gMapSecName_Route17
- .4byte gMapSecName_Route18
- .4byte gMapSecName_Route19
- .4byte gMapSecName_Route20
- .4byte gMapSecName_Route21
- .4byte gMapSecName_Route22
- .4byte gMapSecName_Route23
- .4byte gMapSecName_Route24
- .4byte gMapSecName_Route25
- .4byte gMapSecName_ViridianForest
- .4byte gMapSecName_MtMoon
- .4byte gMapSecName_SSAnne
- .4byte gMapSecName_UndergroundPath
- .4byte gMapSecName_UndergroundPath_2
- .4byte gMapSecName_DiglettsCave
- .4byte gMapSecName_VictoryRoad
- .4byte gMapSecName_RocketHideout
- .4byte gMapSecName_SilphCo
- .4byte gMapSecName_PokemonMansion
- .4byte gMapSecName_SafariZone
- .4byte gMapSecName_PokemonLeague
- .4byte gMapSecName_RockTunnel
- .4byte gMapSecName_SeafoamIslands
- .4byte gMapSecName_PokemonTower
- .4byte gMapSecName_CeruleanCave
- .4byte gMapSecName_PowerPlant
- .4byte gMapSecName_OneIsland
- .4byte gMapSecName_TwoIsland
- .4byte gMapSecName_ThreeIsland
- .4byte gMapSecName_FourIsland
- .4byte gMapSecName_FiveIsland
- .4byte gMapSecName_SevenIsland
- .4byte gMapSecName_SixIsland
- .4byte gMapSecName_KindleRoad
- .4byte gMapSecName_TreasureBeach
- .4byte gMapSecName_CapeBrink
- .4byte gMapSecName_BondBridge
- .4byte gMapSecName_ThreeIslePort
- .4byte gMapSecName_SeviiIsle6
- .4byte gMapSecName_SeviiIsle7
- .4byte gMapSecName_SeviiIsle8
- .4byte gMapSecName_SeviiIsle9
- .4byte gMapSecName_ResortGorgeous
- .4byte gMapSecName_WaterLabyrinth
- .4byte gMapSecName_FiveIsleMeadow
- .4byte gMapSecName_MemorialPillar
- .4byte gMapSecName_OutcastIsland
- .4byte gMapSecName_GreenPath
- .4byte gMapSecName_WaterPath
- .4byte gMapSecName_RuinValley
- .4byte gMapSecName_TrainerTower
- .4byte gMapSecName_CanyonEntrance
- .4byte gMapSecName_SevaultCanyon
- .4byte gMapSecName_TanobyRuins
- .4byte gMapSecName_SeviiIsle22
- .4byte gMapSecName_SeviiIsle23
- .4byte gMapSecName_SeviiIsle24
- .4byte gMapSecName_NavelRock
- .4byte gMapSecName_MtEmber
- .4byte gMapSecName_BerryForest
- .4byte gMapSecName_IcefallCave
- .4byte gMapSecName_RocketWarehouse
- .4byte gMapSecName_TrainerTower_2
- .4byte gMapSecName_DottedHole
- .4byte gMapSecName_LostCave
- .4byte gMapSecName_PatternBush
- .4byte gMapSecName_AlteringCave
- .4byte gMapSecName_TanobyChambers
- .4byte gMapSecName_ThreeIslePath
- .4byte gMapSecName_TanobyKey
- .4byte gMapSecName_BirthIsland
- .4byte gMapSecName_MoneanChamber
- .4byte gMapSecName_LiptooChamber
- .4byte gMapSecName_WeepthChamber
- .4byte gMapSecName_DilfordChamber
- .4byte gMapSecName_ScufibChamber
- .4byte gMapSecName_RixyChamber
- .4byte gMapSecName_ViapoisChamber
- .4byte gMapSecName_EmberSpa
- .4byte gMapSecName_CeladonDept
-
-gUnknown_83F1E60:: @ 83F1E60
- .2byte 0x04, 0x0b
- .2byte 0x04, 0x08
- .2byte 0x04, 0x04
- .2byte 0x0e, 0x03
- .2byte 0x12, 0x06
- .2byte 0x0e, 0x09
- .2byte 0x0b, 0x06
- .2byte 0x0c, 0x0c
- .2byte 0x04, 0x0e
- .2byte 0x02, 0x03
- .2byte 0x0e, 0x06
- .2byte 0x08, 0x03
- .2byte 0x12, 0x03
- .2byte 0x04, 0x09
- .2byte 0x04, 0x05
- .2byte 0x05, 0x04
- .2byte 0x08, 0x03
- .2byte 0x0e, 0x04
- .2byte 0x0e, 0x07
- .2byte 0x0c, 0x06
- .2byte 0x0f, 0x06
- .2byte 0x0f, 0x03
- .2byte 0x12, 0x03
- .2byte 0x0f, 0x09
- .2byte 0x12, 0x07
- .2byte 0x10, 0x0b
- .2byte 0x0f, 0x0b
- .2byte 0x0d, 0x0c
- .2byte 0x07, 0x06
- .2byte 0x07, 0x07
- .2byte 0x07, 0x0c
- .2byte 0x0c, 0x0d
- .2byte 0x05, 0x0e
- .2byte 0x04, 0x0c
- .2byte 0x02, 0x08
- .2byte 0x02, 0x04
- .2byte 0x0e, 0x01
- .2byte 0x0f, 0x01
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x01, 0x08
- .2byte 0x09, 0x09
- .2byte 0x12, 0x0c
- .2byte 0x03, 0x04
- .2byte 0x10, 0x0b
- .2byte 0x05, 0x08
- .2byte 0x11, 0x05
- .2byte 0x02, 0x03
- .2byte 0x01, 0x09
- .2byte 0x09, 0x07
- .2byte 0x0d, 0x0c
- .2byte 0x12, 0x0d
- .2byte 0x04, 0x03
- .2byte 0x05, 0x04
- .2byte 0x01, 0x04
- .2byte 0x04, 0x05
- .2byte 0x10, 0x09
- .2byte 0x0e, 0x0a
- .2byte 0x11, 0x0a
- .2byte 0x12, 0x0c
- .2byte 0x0f, 0x00
- .2byte 0x0f, 0x03
- .2byte 0x12, 0x03
- .2byte 0x10, 0x07
- .2byte 0x05, 0x06
- .2byte 0x05, 0x09
- .2byte 0x06, 0x09
- .2byte 0x03, 0x0c
- .2byte 0x09, 0x0c
- .2byte 0x03, 0x0e
- .2byte 0x02, 0x0c
- .2byte 0x0a, 0x08
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x12, 0x0d
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
-
-gUnknown_83F2178:: @ 83F2178
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x02
- .2byte 0x01, 0x03
- .2byte 0x04, 0x01
- .2byte 0x06, 0x01
- .2byte 0x01, 0x02
- .2byte 0x01, 0x02
- .2byte 0x02, 0x01
- .2byte 0x03, 0x01
- .2byte 0x03, 0x01
- .2byte 0x01, 0x03
- .2byte 0x03, 0x01
- .2byte 0x01, 0x05
- .2byte 0x02, 0x01
- .2byte 0x01, 0x02
- .2byte 0x02, 0x01
- .2byte 0x04, 0x01
- .2byte 0x01, 0x05
- .2byte 0x05, 0x01
- .2byte 0x01, 0x02
- .2byte 0x07, 0x01
- .2byte 0x01, 0x02
- .2byte 0x02, 0x01
- .2byte 0x01, 0x04
- .2byte 0x01, 0x02
- .2byte 0x02, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x06
- .2byte 0x01, 0x02
- .2byte 0x01, 0x02
- .2byte 0x04, 0x01
- .2byte 0x02, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x03, 0x01
- .2byte 0x01, 0x02
- .2byte 0x03, 0x01
- .2byte 0x03, 0x01
- .2byte 0x01, 0x03
- .2byte 0x01, 0x03
- .2byte 0x01, 0x03
- .2byte 0x03, 0x01
- .2byte 0x01, 0x05
- .2byte 0x02, 0x02
- .2byte 0x01, 0x02
- .2byte 0x01, 0x01
- .2byte 0x01, 0x03
- .2byte 0x07, 0x01
- .2byte 0x01, 0x03
- .2byte 0x06, 0x01
- .2byte 0x01, 0x03
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x01, 0x01
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
- .2byte 0x00, 0x00
-
-gUnknown_83F2490:: @ 83F2490
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_ROUTE_25, MAPSEC_ROUTE_25, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_INDIGO_PLATEAU, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_4_FLYDUP, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_CERULEAN_CITY, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_10_FLYDUP, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_PEWTER_CITY, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_CELADON_CITY, MAPSEC_ROUTE_7, MAPSEC_ROUTE_7, MAPSEC_SAFFRON_CITY, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_LAVENDER_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_22, MAPSEC_ROUTE_22, MAPSEC_VIRIDIAN_CITY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERMILION_CITY, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PALLET_TOWN, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_14, MAPSEC_ROUTE_13, MAPSEC_ROUTE_13, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_FUCHSIA_CITY, MAPSEC_ROUTE_15, MAPSEC_ROUTE_15, MAPSEC_ROUTE_14, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CINNABAR_ISLAND, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_MOON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CERULEAN_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROCK_TUNNEL, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_VICTORY_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POWER_PLANT, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VIRIDIAN_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_MANSION, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEAFOAM_ISLANDS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
-
-gUnknown_83F2724:: @ 83F2724
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_ONE_ISLAND, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TWO_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_THREE_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_THREE_ISLE_PORT, MAPSEC_THREE_ISLE_PORT, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_EMBER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BERRY_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
-
-gUnknown_83F29B8:: @ 83F29B8
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FOUR_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NAVEL_ROCK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLAND, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ICEFALL_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LOST_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
-
-gUnknown_83F2C4C:: @ 83F2C4C
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SIX_ISLAND, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVEN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CANYON_ENTRANCE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BIRTH_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ALTERING_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PATTERN_BUSH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DOTTED_HOLE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_CHAMBERS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
- .byte MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE
-
-gUnknown_83F2EE0:: @ 83F2EE0
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x01
- .byte MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY), 0x02
- .byte MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY), 0x03
- .byte MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY), 0x04
- .byte MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN), 0x05
- .byte MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY), 0x06
- .byte MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY), 0x07
- .byte MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY), 0x08
- .byte MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND), 0x09
- .byte MAP_GROUP(INDIGO_PLATEAU_EXTERIOR), MAP_NUM(INDIGO_PLATEAU_EXTERIOR), 0x0a
- .byte MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY), 0x0b
- .byte MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), 0x0c
- .byte MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), 0x0d
- .byte MAP_GROUP(ROUTE1), MAP_NUM(ROUTE1), 0x00
- .byte MAP_GROUP(ROUTE2), MAP_NUM(ROUTE2), 0x00
- .byte MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3), 0x00
- .byte MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), 0x00
- .byte MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5), 0x00
- .byte MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6), 0x00
- .byte MAP_GROUP(ROUTE7), MAP_NUM(ROUTE7), 0x00
- .byte MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8), 0x00
- .byte MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9), 0x00
- .byte MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), 0x00
- .byte MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11), 0x00
- .byte MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12), 0x00
- .byte MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13), 0x00
- .byte MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14), 0x00
- .byte MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15), 0x00
- .byte MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16), 0x00
- .byte MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17), 0x00
- .byte MAP_GROUP(ROUTE18), MAP_NUM(ROUTE18), 0x00
- .byte MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19), 0x00
- .byte MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20), 0x00
- .byte MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH), 0x00
- .byte MAP_GROUP(ROUTE22), MAP_NUM(ROUTE22), 0x00
- .byte MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23), 0x00
- .byte MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24), 0x00
- .byte MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(ONE_ISLAND), MAP_NUM(ONE_ISLAND), 0x0e
- .byte MAP_GROUP(TWO_ISLAND), MAP_NUM(TWO_ISLAND), 0x0f
- .byte MAP_GROUP(THREE_ISLAND), MAP_NUM(THREE_ISLAND), 0x10
- .byte MAP_GROUP(FOUR_ISLAND), MAP_NUM(FOUR_ISLAND), 0x11
- .byte MAP_GROUP(FIVE_ISLAND), MAP_NUM(FIVE_ISLAND), 0x12
- .byte MAP_GROUP(SEVEN_ISLAND), MAP_NUM(SEVEN_ISLAND), 0x13
- .byte MAP_GROUP(SIX_ISLAND), MAP_NUM(SIX_ISLAND), 0x14
- .byte MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD), 0x00
- .byte MAP_GROUP(ONE_ISLAND_TREASURE_BEACH), MAP_NUM(ONE_ISLAND_TREASURE_BEACH), 0x00
- .byte MAP_GROUP(TWO_ISLAND_CAPE_BRINK), MAP_NUM(TWO_ISLAND_CAPE_BRINK), 0x00
- .byte MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE), 0x00
- .byte MAP_GROUP(THREE_ISLAND_PORT), MAP_NUM(THREE_ISLAND_PORT), 0x00
- .byte MAP_GROUP(UNKNOWN_MAP_03_50), MAP_NUM(UNKNOWN_MAP_03_50), 0x00
- .byte MAP_GROUP(UNKNOWN_MAP_03_51), MAP_NUM(UNKNOWN_MAP_03_51), 0x00
- .byte MAP_GROUP(UNKNOWN_MAP_03_52), MAP_NUM(UNKNOWN_MAP_03_52), 0x00
- .byte MAP_GROUP(UNKNOWN_MAP_03_53), MAP_NUM(UNKNOWN_MAP_03_53), 0x00
- .byte MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS), 0x00
- .byte MAP_GROUP(FIVE_ISLAND_WATER_LABYRINTH), MAP_NUM(FIVE_ISLAND_WATER_LABYRINTH), 0x00
- .byte MAP_GROUP(FIVE_ISLAND_MEADOW), MAP_NUM(FIVE_ISLAND_MEADOW), 0x00
- .byte MAP_GROUP(FIVE_ISLAND_MEMORIAL_PILLAR), MAP_NUM(FIVE_ISLAND_MEMORIAL_PILLAR), 0x00
- .byte MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND), 0x00
- .byte MAP_GROUP(SIX_ISLAND_GREEN_PATH), MAP_NUM(SIX_ISLAND_GREEN_PATH), 0x00
- .byte MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH), 0x00
- .byte MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY), 0x00
- .byte MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER), MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER), 0x00
- .byte MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), 0x00
- .byte MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON), 0x00
- .byte MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(NAVEL_ROCK_EXTERIOR), MAP_NUM(NAVEL_ROCK_EXTERIOR), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(BIRTH_ISLAND_EXTERIOR), MAP_NUM(BIRTH_ISLAND_EXTERIOR), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
- .byte MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0x00
-
-gUnknown_83F3024:: @ 83F3024
- .byte 0x00, 0x1d, 0x1c
- .byte 0x0e, 0x1e, 0x1b
- .byte 0x00, 0x01, 0x32
- .byte 0x2e, 0x1e, 0x37
- .byte 0x0a, 0x22, 0x1f
- .byte 0x05, 0x26, 0x2e
- .byte 0x12, 0x17, 0x1e
- .byte 0x1a, 0x03, 0x11
- .byte 0x05, 0x11, 0x18
- .byte 0x05, 0x27, 0x2f
- .byte 0x1a, 0x3f, 0x12
- .byte 0x22, 0x3f, 0x16
- .byte 0x2b, 0x2f, 0x2e
- .byte 0x11, 0x02, 0x2d
- .byte 0x23, 0x0d, 0x28
- .byte 0x17, 0x0c, 0x19
- .byte 0x2f, 0x0e, 0x13
- .byte 0x30, 0x18, 0x20
- .byte 0x2d, 0x28, 0x22
- .byte 0x01, 0x03, 0x19
- .byte 0x0e, 0x2a, 0x2b
- .byte 0x22, 0x15, 0x25
- .byte 0x22, 0x0a, 0x26
- .byte 0x39, 0x06, 0x23
- .byte 0x16, 0x07, 0x2f
- .byte 0x22, 0x3a, 0x1b
- .byte 0x3b, 0x36, 0x35
- .byte 0x0a, 0x2b, 0x24
- .byte 0x36, 0x09, 0x12
- .byte 0x1c, 0x2f, 0x23
- .byte 0x2e, 0x38, 0x2c
- .byte 0x05, 0x2a, 0x20
- .byte 0x07, 0x14, 0x32
- .byte 0x31, 0x08, 0x17
- .byte 0x1a, 0x24, 0x2d
- .byte 0x22, 0x0a, 0x16
- .byte 0x1b, 0x26, 0x2b
- .byte 0x29, 0x16, 0x11
- .byte 0x35, 0x08, 0x14
- .byte 0x1e, 0x08, 0x14
- .byte 0x05, 0x31, 0x14
- .byte 0x38, 0x31, 0x17
- .byte 0x34, 0x33, 0x12
- .byte 0x11, 0x09, 0x1f
- .byte 0x28, 0x3d, 0x32
- .byte 0x35, 0x03, 0x1e
- .byte 0x3c, 0x2b, 0x2e
- .byte 0x10, 0x01, 0x17
- .byte 0x03, 0x3e, 0x22
- .byte 0x17, 0x18, 0x34
- .byte 0x08, 0x29, 0x19
- .byte 0x03, 0x24, 0x28
- .byte 0x3d, 0x33, 0x2f
- .byte 0x31, 0x24, 0x19
- .byte 0x1b, 0x18, 0x26
- .byte 0x07, 0x0d, 0x25
- .byte 0x2d, 0x3f, 0x12
- .byte 0x2f, 0x15, 0x25
- .byte 0x29, 0x0f, 0x12
- .byte 0x07, 0x2c, 0x12
- .byte 0x2c, 0x0b, 0x26
- .byte 0x12, 0x1a, 0x16
- .byte 0x00, 0x0b, 0x2f
- .byte 0x16, 0x35, 0x24
- .byte 0x1f, 0x1c, 0x22
- .byte 0x29, 0x33, 0x27
- .byte 0x3b, 0x30, 0x17
- .byte 0x11, 0x06, 0x35
- .byte 0x3e, 0x31, 0x2f
- .byte 0x11, 0x3a, 0x25
- .byte 0x2a, 0x02, 0x19
- .byte 0x33, 0x18, 0x35
- .byte 0x2a, 0x20, 0x21
- .byte 0x2e, 0x32, 0x1b
- .byte 0x3b, 0x1f, 0x23
- .byte 0x39, 0x29, 0x2a
- .byte 0x2e, 0x31, 0x29
- .byte 0x2a, 0x0e, 0x2d
- .byte 0x2d, 0x00, 0x1f
- .byte 0x38, 0x28, 0x1b
- .byte 0x14, 0x3b, 0x2b
- .byte 0x2e, 0x04, 0x26
- .byte 0x36, 0x30, 0x11
- .byte 0x3b, 0x21, 0x2d
- .byte 0x2b, 0x3f, 0x1b
- .byte 0x20, 0x13, 0x31
- .byte 0x33, 0x0c, 0x30
- .byte 0x22, 0x2b, 0x2b
- .byte 0x16, 0x02, 0x1e
- .byte 0x1c, 0x12, 0x1c
- .byte 0x0f, 0x3c, 0x36
- .byte 0x38, 0x10, 0x2d
- .byte 0x18, 0x2f, 0x2d
- .byte 0x35, 0x3b, 0x11
- .byte 0x37, 0x31, 0x13
- .byte 0x13, 0x3d, 0x2f
- .byte 0x1e, 0x2c, 0x33
- .byte 0x2e, 0x37, 0x12
- .byte 0x3c, 0x1f, 0x33
- .byte 0x32, 0x2a, 0x27
- .byte 0x0d, 0x3b, 0x1c
- .byte 0x35, 0x2a, 0x27
- .byte 0x09, 0x3d, 0x27
- .byte 0x12, 0x0b, 0x18
- .byte 0x0c, 0x15, 0x1d
- .byte 0x20, 0x01, 0x1c
- .byte 0x08, 0x3b, 0x1c
- .byte 0x12, 0x37, 0x33
- .byte 0x15, 0x03, 0x2c
- .byte 0x2a, 0x3b, 0x31
- .byte 0x0f, 0x04, 0x35
- .byte 0x08, 0x17, 0x33
- .byte 0x38, 0x3d, 0x2a
- .byte 0x2f, 0x35, 0x16
- .byte 0x10, 0x35, 0x16
- .byte 0x23, 0x13, 0x2c
- .byte 0x2f, 0x06, 0x20
- .byte 0x27, 0x3a, 0x24
- .byte 0x00, 0x1c, 0x2a
- .byte 0x03, 0x39, 0x1d
- .byte 0x28, 0x07, 0x1a
- .byte 0x20, 0x0a, 0x37
- .byte 0x07, 0x35, 0x2d
- .byte 0x15, 0x2f, 0x2c
- .byte 0x10, 0x2c, 0x23
- .byte 0x3f, 0x29, 0x14
- .byte 0x2a, 0x21, 0x36
- .byte 0x34, 0x1a, 0x2c
- .byte 0x1c, 0x3d, 0x33
- .byte 0x38, 0x2b, 0x22
- .byte 0x35, 0x28, 0x1f
- .byte 0x3d, 0x0f, 0x1c
- .byte 0x1e, 0x3e, 0x1b
- .byte 0x0c, 0x3e, 0x1f
- .byte 0x2b, 0x31, 0x2c
- .byte 0x32, 0x39, 0x11
- .byte 0x05, 0x09, 0x11
- .byte 0x04, 0x38, 0x2a
- .byte 0x32, 0x00, 0x16
- .byte 0x13, 0x0b, 0x31
- .byte 0x34, 0x2a, 0x13
- .byte 0x2c, 0x22, 0x21
- .byte 0x39, 0x2f, 0x15
- .byte 0x37, 0x28, 0x1e
- .byte 0x07, 0x3b, 0x2d
- .byte 0x11, 0x03, 0x28
- .byte 0x2d, 0x30, 0x1e
- .byte 0x31, 0x11, 0x11
- .byte 0x23, 0x01, 0x1e
- .byte 0x3d, 0x31, 0x34
- .byte 0x1c, 0x02, 0x34
- .byte 0x21, 0x0e, 0x25
- .byte 0x3d, 0x07, 0x17
- .byte 0x33, 0x15, 0x10
- .byte 0x29, 0x32, 0x32
- .byte 0x18, 0x1f, 0x30
- .byte 0x2d, 0x3b, 0x30
- .byte 0x27, 0x3e, 0x16
- .byte 0x31, 0x15, 0x12
- .byte 0x30, 0x25, 0x17
- .byte 0x33, 0x06, 0x34
- .byte 0x00, 0x29, 0x18
- .byte 0x3c, 0x03, 0x12
- .byte 0x2c, 0x0c, 0x11
- .byte 0x09, 0x30, 0x30
- .byte 0x10, 0x0e, 0x11
- .byte 0x27, 0x16, 0x1b
- .byte 0x0c, 0x3b, 0x2e
- .byte 0x2b, 0x33, 0x1e
- .byte 0x13, 0x2d, 0x2d
- .byte 0x11, 0x24, 0x29
- .byte 0x34, 0x3e, 0x2b
- .byte 0x24, 0x1e, 0x21
- .byte 0x27, 0x1a, 0x2d
- .byte 0x04, 0x39, 0x16
- .byte 0x3e, 0x33, 0x26
- .byte 0x1b, 0x2e, 0x25
- .byte 0x0c, 0x06, 0x19
- .byte 0x25, 0x19, 0x18
- .byte 0x1d, 0x33, 0x33
- .byte 0x1d, 0x28, 0x2d
- .byte 0x1c, 0x10, 0x2a
- .byte 0x1f, 0x35, 0x1e
- .byte 0x34, 0x02, 0x10
- .byte 0x2b, 0x3a, 0x14
- .byte 0x0d, 0x0b, 0x15
- .byte 0x0c, 0x2c, 0x10
- .byte 0x37, 0x3a, 0x19
- .byte 0x06, 0x13, 0x17
- .byte 0x24, 0x10, 0x25
- .byte 0x24, 0x04, 0x1e
- .byte 0x00, 0x35, 0x34
- .byte 0x3a, 0x00, 0x37
- .byte 0x3c, 0x07, 0x1a
- .byte 0x2b, 0x28, 0x36
- .byte 0x34, 0x39, 0x2f
- .byte 0x28, 0x09, 0x1f
- .byte 0x38, 0x31, 0x30
- .byte 0x16, 0x25, 0x31
- .byte 0x18, 0x28, 0x31
- .byte 0x18, 0x0c, 0x22
- .byte 0x06, 0x39, 0x2d
- .byte 0x3d, 0x20, 0x24
- .byte 0x2e, 0x27, 0x21
- .byte 0x3e, 0x18, 0x18
- .byte 0x15, 0x3c, 0x24
- .byte 0x06, 0x1b, 0x26
- .byte 0x15, 0x0e, 0x22
- .byte 0x0a, 0x0d, 0x1f
- .byte 0x18, 0x16, 0x34
- .byte 0x10, 0x28, 0x21
- .byte 0x20, 0x11, 0x11
- .byte 0x36, 0x32, 0x15
- .byte 0x3b, 0x2e, 0x24
- .byte 0x1f, 0x2d, 0x12
- .byte 0x36, 0x2e, 0x20
- .byte 0x0b, 0x17, 0x33
- .byte 0x26, 0x03, 0x1f
- .byte 0x08, 0x19, 0x31
- .byte 0x2a, 0x18, 0x25
- .byte 0x35, 0x2d, 0x2d
- .byte 0x30, 0x38, 0x18
- .byte 0x1c, 0x25, 0x14
- .byte 0x1c, 0x22, 0x28
- .byte 0x08, 0x23, 0x21
- .byte 0x26, 0x1e, 0x30
- .byte 0x19, 0x0f, 0x15
- .byte 0x10, 0x2f, 0x22
- .byte 0x12, 0x02, 0x25
- .byte 0x3c, 0x01, 0x1d
- .byte 0x0e, 0x14, 0x18
- .byte 0x0d, 0x18, 0x17
- .byte 0x22, 0x0b, 0x31
- .byte 0x13, 0x34, 0x21
- .byte 0x0f, 0x2d, 0x36
- .byte 0x39, 0x1f, 0x25
- .byte 0x18, 0x10, 0x1f
- .byte 0x2d, 0x20, 0x20
- .byte 0x19, 0x0b, 0x31
- .byte 0x33, 0x13, 0x14
- .byte 0x2e, 0x11, 0x21
- .byte 0x2d, 0x0a, 0x37
- .byte 0x07, 0x15, 0x1b
- .byte 0x32, 0x04, 0x32
- .byte 0x06, 0x18, 0x1b
- .byte 0x13, 0x24, 0x12
- .byte 0x36, 0x22, 0x16
- .byte 0x1d, 0x29, 0x1c
- .byte 0x35, 0x17, 0x21
- .byte 0x36, 0x17, 0x2b
- .byte 0x35, 0x32, 0x19
- .byte 0x2a, 0x0f, 0x2e
- .byte 0x10, 0x00, 0x34
- .byte 0x02, 0x0e, 0x28
- .byte 0x31, 0x32, 0x32
- .byte 0x3b, 0x05, 0x20
- .byte 0x36, 0x26, 0x12
- .byte 0x34, 0x06, 0x34
- .byte 0x1e, 0x31, 0x32
- .byte 0x35, 0x05, 0x34
- .byte 0x1e, 0x13, 0x15
- .byte 0x15, 0x14, 0x2c
- .byte 0x29, 0x1c, 0x18
- .byte 0x24, 0x24, 0x12
- .byte 0x22, 0x29, 0x18
- .byte 0x34, 0x36, 0x30
- .byte 0x1e, 0x01, 0x23
- .byte 0x0c, 0x3c, 0x24
- .byte 0x0a, 0x3d, 0x16
- .byte 0x27, 0x1e, 0x23
- .byte 0x15, 0x02, 0x12
- .byte 0x11, 0x19, 0x2a
- .byte 0x1d, 0x31, 0x15
- .byte 0x03, 0x3b, 0x2a
- .byte 0x21, 0x19, 0x2c
- .byte 0x0a, 0x23, 0x11
- .byte 0x25, 0x11, 0x1a
- .byte 0x1a, 0x0a, 0x34
- .byte 0x3b, 0x0b, 0x33
- .byte 0x21, 0x0b, 0x37
- .byte 0x01, 0x31, 0x28
- .byte 0x35, 0x1d, 0x27
- .byte 0x2c, 0x30, 0x31
- .byte 0x2e, 0x39, 0x2d
- .byte 0x30, 0x05, 0x2c
- .byte 0x12, 0x2a, 0x2b
- .byte 0x39, 0x22, 0x20
- .byte 0x15, 0x34, 0x1c
- .byte 0x1c, 0x01, 0x15
- .byte 0x20, 0x16, 0x22
- .byte 0x13, 0x04, 0x18
- .byte 0x1e, 0x13, 0x10
- .byte 0x25, 0x33, 0x15
- .byte 0x39, 0x03, 0x31
- .byte 0x3f, 0x36, 0x18
- .byte 0x14, 0x23, 0x10
- .byte 0x2f, 0x1e, 0x1f
- .byte 0x1f, 0x17, 0x2c
- .byte 0x02, 0x16, 0x31
- .byte 0x20, 0x18, 0x30
- .byte 0x2e, 0x18, 0x37
- .byte 0x3b, 0x0e, 0x30
- .byte 0x10, 0x39, 0x24
- .byte 0x26, 0x39, 0x1e
- .byte 0x30, 0x26, 0x2e
- .byte 0x12, 0x01, 0x14
- .byte 0x37, 0x2a, 0x2e
- .byte 0x21, 0x06, 0x1d
- .byte 0x2a, 0x16, 0x32
- .byte 0x09, 0x38, 0x1c
- .byte 0x07, 0x22, 0x17
- .byte 0x3b, 0x2d, 0x15
- .byte 0x07, 0x1e, 0x2e
- .byte 0x1b, 0x2e, 0x1d
- .byte 0x04, 0x09, 0x30
- .byte 0x30, 0x2d, 0x37
- .byte 0x2d, 0x34, 0x24
- .byte 0x18, 0x24, 0x25
- .byte 0x0e, 0x2d, 0x26
- .byte 0x23, 0x0a, 0x16
- .byte 0x12, 0x2d, 0x11
- .byte 0x21, 0x28, 0x2e
- .byte 0x0f, 0x01, 0x21
- .byte 0x01, 0x31, 0x12
- .byte 0x3f, 0x1b, 0x1e
- .byte 0x21, 0x25, 0x2b
- .byte 0x26, 0x18, 0x13
- .byte 0x15, 0x2d, 0x34
- .byte 0x23, 0x21, 0x36
- .byte 0x0e, 0x2e, 0x1c
- .byte 0x14, 0x22, 0x1c
- .byte 0x2c, 0x0b, 0x28
- .byte 0x1a, 0x18, 0x21
- .byte 0x21, 0x07, 0x1a
- .byte 0x24, 0x26, 0x29
- .byte 0x2b, 0x0a, 0x34
- .byte 0x3e, 0x27, 0x33
- .byte 0x12, 0x34, 0x1b
- .byte 0x1f, 0x01, 0x2a
- .byte 0x2e, 0x06, 0x23
- .byte 0x2f, 0x1f, 0x14
- .byte 0x18, 0x06, 0x26
- .byte 0x31, 0x1f, 0x2b
- .byte 0x22, 0x26, 0x2e
- .byte 0x1e, 0x15, 0x16
- .byte 0x20, 0x22, 0x28
- .byte 0x15, 0x37, 0x12
- .byte 0x25, 0x04, 0x2c
- .byte 0x1f, 0x04, 0x2e
- .byte 0x0c, 0x13, 0x18
- .byte 0x07, 0x0b, 0x36
- .byte 0x1d, 0x1c, 0x2a
- .byte 0x30, 0x22, 0x1c
- .byte 0x2e, 0x12, 0x2f
- .byte 0x2b, 0x21, 0x1e
- .byte 0x16, 0x38, 0x30
- .byte 0x04, 0x02, 0x16
- .byte 0x05, 0x14, 0x20
- .byte 0x38, 0x3c, 0x33
- .byte 0x21, 0x1b, 0x2f
- .byte 0x14, 0x2a, 0x27
- .byte 0x38, 0x14, 0x1b
- .byte 0x2b, 0x1f, 0x2b
- .byte 0x29, 0x2b, 0x25
- .byte 0x27, 0x36, 0x21
- .byte 0x11, 0x22, 0x1b
- .byte 0x29, 0x03, 0x1b
- .byte 0x18, 0x24, 0x28
- .byte 0x21, 0x2d, 0x36
- .byte 0x3c, 0x2c, 0x24
- .byte 0x33, 0x17, 0x1f
- .byte 0x2a, 0x3a, 0x21
- .byte 0x0a, 0x23, 0x37
- .byte 0x00, 0x0b, 0x21
- .byte 0x11, 0x38, 0x19
- .byte 0x0f, 0x0e, 0x1c
- .byte 0x1f, 0x0f, 0x37
- .byte 0x3c, 0x10, 0x37
- .byte 0x38, 0x31, 0x35
- .byte 0x07, 0x15, 0x28
- .byte 0x1e, 0x2e, 0x19
- .byte 0x26, 0x10, 0x33
- .byte 0x3d, 0x35, 0x2f
- .byte 0x3a, 0x04, 0x34
- .byte 0x0d, 0x18, 0x1a
- .byte 0x01, 0x2d, 0x15
- .byte 0x3d, 0x1a, 0x17
- .byte 0x17, 0x3f, 0x32
- .byte 0x0b, 0x21, 0x11
- .byte 0x1e, 0x26, 0x2b
- .byte 0x0d, 0x19, 0x24
- .byte 0x2e, 0x04, 0x1b
- .byte 0x1b, 0x33, 0x20
- .byte 0x15, 0x21, 0x1d
- .byte 0x1f, 0x04, 0x21
- .byte 0x0f, 0x12, 0x1f
- .byte 0x2d, 0x2a, 0x32
- .byte 0x03, 0x37, 0x1f
- .byte 0x35, 0x07, 0x27
- .byte 0x24, 0x1f, 0x31
- .byte 0x2f, 0x30, 0x15
- .byte 0x06, 0x00, 0x24
- .byte 0x0b, 0x22, 0x1a
- .byte 0x0c, 0x3b, 0x29
- .byte 0x14, 0x1a, 0x17
- .byte 0x37, 0x20, 0x25
- .byte 0x3f, 0x26, 0x37
- .byte 0x3a, 0x3e, 0x10
- .byte 0x22, 0x04, 0x11
- .byte 0x28, 0x12, 0x1c
- .byte 0x03, 0x2e, 0x2e
- .byte 0x0e, 0x38, 0x28
- .byte 0x01, 0x29, 0x22
- .byte 0x1e, 0x33, 0x19
- .byte 0x06, 0x21, 0x27
- .byte 0x33, 0x19, 0x1a
- .byte 0x02, 0x05, 0x17
- .byte 0x11, 0x11, 0x2c
- .byte 0x1f, 0x26, 0x1e
- .byte 0x39, 0x1f, 0x28
- .byte 0x2e, 0x2f, 0x12
- .byte 0x22, 0x34, 0x13
- .byte 0x3b, 0x26, 0x2f
- .byte 0x34, 0x00, 0x14
- .byte 0x10, 0x31, 0x11
- .byte 0x1d, 0x2d, 0x2a
- .byte 0x08, 0x08, 0x37
- .byte 0x15, 0x18, 0x34
- .byte 0x04, 0x2b, 0x24
- .byte 0x2f, 0x1e, 0x27
- .byte 0x22, 0x2a, 0x24
- .byte 0x07, 0x14, 0x25
- .byte 0x01, 0x27, 0x19
- .byte 0x29, 0x0a, 0x29
- .byte 0x3d, 0x1c, 0x2f
- .byte 0x0d, 0x1f, 0x1c
- .byte 0x24, 0x3d, 0x32
- .byte 0x36, 0x1d, 0x24
- .byte 0x14, 0x21, 0x16
- .byte 0x1a, 0x0d, 0x29
- .byte 0x3f, 0x2b, 0x2a
- .byte 0x1a, 0x3e, 0x35
- .byte 0x11, 0x28, 0x18
- .byte 0x32, 0x05, 0x15
- .byte 0x21, 0x2e, 0x34
- .byte 0x2d, 0x14, 0x2a
- .byte 0x3c, 0x08, 0x37
- .byte 0x3f, 0x34, 0x1e
- .byte 0x27, 0x24, 0x1c
- .byte 0x16, 0x16, 0x33
- .byte 0x29, 0x3b, 0x19
- .byte 0x36, 0x2f, 0x1c
- .byte 0x03, 0x25, 0x2c
- .byte 0x0b, 0x16, 0x36
- .byte 0x1c, 0x1d, 0x1b
- .byte 0x2c, 0x27, 0x1b
- .byte 0x0b, 0x1f, 0x2b
- .byte 0x08, 0x10, 0x27
- .byte 0x3f, 0x25, 0x2f
- .byte 0x33, 0x13, 0x1f
- .byte 0x04, 0x31, 0x37
- .byte 0x0e, 0x2f, 0x12
- .byte 0x08, 0x23, 0x20
- .byte 0x3a, 0x1a, 0x1e
- .byte 0x2f, 0x0b, 0x1f
- .byte 0x1e, 0x20, 0x19
- .byte 0x23, 0x3b, 0x14
- .byte 0x25, 0x00, 0x27
- .byte 0x14, 0x04, 0x25
- .byte 0x36, 0x1a, 0x2b
- .byte 0x27, 0x21, 0x15
- .byte 0x28, 0x13, 0x2c
- .byte 0x0e, 0x3c, 0x35
- .byte 0x0c, 0x2d, 0x2b
- .byte 0x37, 0x16, 0x15
- .byte 0x29, 0x15, 0x1d
- .byte 0x17, 0x34, 0x36
- .byte 0x09, 0x0a, 0x31
- .byte 0x37, 0x22, 0x28
- .byte 0x17, 0x2b, 0x35
- .byte 0x14, 0x2b, 0x12
- .byte 0x08, 0x13, 0x1f
- .byte 0x31, 0x13, 0x28
- .byte 0x06, 0x07, 0x35
- .byte 0x23, 0x3a, 0x29
- .byte 0x0f, 0x24, 0x2e
- .byte 0x07, 0x35, 0x26
- .byte 0x0e, 0x12, 0x15
- .byte 0x23, 0x33, 0x2c
- .byte 0x0e, 0x21, 0x26
- .byte 0x1c, 0x12, 0x25
- .byte 0x23, 0x1d, 0x2f
- .byte 0x04, 0x35, 0x33
- .byte 0x16, 0x01, 0x24
- .byte 0x3d, 0x2c, 0x2e
- .byte 0x35, 0x0a, 0x25
- .byte 0x11, 0x13, 0x25
- .byte 0x1b, 0x1b, 0x15
- .byte 0x15, 0x39, 0x10
- .byte 0x0b, 0x35, 0x24
- .byte 0x3a, 0x27, 0x30
- .byte 0x2e, 0x2f, 0x15
- .byte 0x10, 0x1f, 0x35
- .byte 0x1b, 0x28, 0x35
- .byte 0x26, 0x30, 0x37
- .byte 0x34, 0x37, 0x2b
- .byte 0x0f, 0x30, 0x29
- .byte 0x2e, 0x3f, 0x2b
- .byte 0x38, 0x34, 0x2b
- .byte 0x2b, 0x2f, 0x25
- .byte 0x0d, 0x28, 0x2a
- .byte 0x33, 0x18, 0x10
- .byte 0x21, 0x12, 0x11
- .byte 0x1f, 0x22, 0x34
- .byte 0x11, 0x25, 0x23
- .byte 0x21, 0x3f, 0x11
- .byte 0x26, 0x27, 0x25
- .byte 0x28, 0x36, 0x12
- .byte 0x15, 0x26, 0x32
- .byte 0x11, 0x18, 0x24
- .byte 0x32, 0x25, 0x37
- .byte 0x27, 0x3a, 0x33
- .byte 0x35, 0x07, 0x1c
- .byte 0x1a, 0x0e, 0x2a
- .byte 0x1e, 0x2f, 0x1f
- .byte 0x00, 0x2e, 0x21
- .byte 0x1b, 0x3c, 0x14
- .byte 0x2f, 0x3a, 0x2f
- .byte 0x3e, 0x38, 0x15
- .byte 0x1a, 0x13, 0x2f
- .byte 0x29, 0x0d, 0x2f
- .byte 0x37, 0x17, 0x18
- .byte 0x30, 0x1c, 0x35
- .byte 0x15, 0x34, 0x14
- .byte 0x28, 0x11, 0x2c
- .byte 0x2c, 0x25, 0x2a
- .byte 0x20, 0x3f, 0x28
- .byte 0x0c, 0x34, 0x1b
- .byte 0x30, 0x2e, 0x25
- .byte 0x37, 0x1c, 0x24
- .byte 0x1f, 0x25, 0x26
- .byte 0x0c, 0x19, 0x34
- .byte 0x18, 0x10, 0x35
- .byte 0x0a, 0x13, 0x11
- .byte 0x25, 0x13, 0x20
- .byte 0x13, 0x19, 0x11
- .byte 0x20, 0x28, 0x1d
- .byte 0x3e, 0x30, 0x1b
- .byte 0x23, 0x24, 0x21
- .byte 0x0d, 0x23, 0x23
- .byte 0x1d, 0x28, 0x2e
- .byte 0x2d, 0x12, 0x1f
- .byte 0x0e, 0x2e, 0x2b
- .byte 0x0b, 0x31, 0x32
- .byte 0x24, 0x3c, 0x2c
- .byte 0x13, 0x3c, 0x12
- .byte 0x28, 0x16, 0x2a
- .byte 0x05, 0x0c, 0x32
- .byte 0x39, 0x0b, 0x32
- .byte 0x21, 0x04, 0x14
- .byte 0x10, 0x31, 0x32
- .byte 0x12, 0x1f, 0x23
- .byte 0x39, 0x2e, 0x2e
- .byte 0x22, 0x3d, 0x27
- .byte 0x0c, 0x1e, 0x18
- .byte 0x25, 0x00, 0x17
- .byte 0x06, 0x31, 0x14
- .byte 0x13, 0x21, 0x1a
- .byte 0x14, 0x20, 0x35
- .byte 0x0a, 0x3b, 0x25
- .byte 0x33, 0x08, 0x28
- .byte 0x3d, 0x02, 0x33
- .byte 0x23, 0x00, 0x13
- .byte 0x22, 0x21, 0x28
- .byte 0x30, 0x14, 0x2e
- .byte 0x14, 0x32, 0x36
- .byte 0x39, 0x23, 0x1e
- .byte 0x1c, 0x11, 0x30
- .byte 0x37, 0x16, 0x30
- .byte 0x15, 0x31, 0x1f
- .byte 0x34, 0x28, 0x2c
- .byte 0x35, 0x05, 0x29
- .byte 0x37, 0x33, 0x2a
- .byte 0x1c, 0x17, 0x2e
- .byte 0x10, 0x06, 0x16
- .byte 0x32, 0x1f, 0x2f
- .byte 0x00, 0x29, 0x1e
- .byte 0x04, 0x01, 0x16
- .byte 0x3b, 0x23, 0x1e
- .byte 0x1b, 0x34, 0x2a
- .byte 0x30, 0x11, 0x2b
- .byte 0x03, 0x00, 0x1f
- .byte 0x1d, 0x37, 0x1a
- .byte 0x3a, 0x18, 0x25
- .byte 0x1c, 0x16, 0x2c
- .byte 0x04, 0x3f, 0x33
- .byte 0x26, 0x23, 0x2d
- .byte 0x15, 0x2c, 0x27
- .byte 0x02, 0x35, 0x27
- .byte 0x07, 0x35, 0x33
- .byte 0x1a, 0x0c, 0x10
- .byte 0x28, 0x26, 0x2c
- .byte 0x2f, 0x36, 0x16
- .byte 0x37, 0x0b, 0x27
- .byte 0x1b, 0x3d, 0x18
- .byte 0x27, 0x1f, 0x20
- .byte 0x2b, 0x2a, 0x33
- .byte 0x0b, 0x0f, 0x20
- .byte 0x35, 0x3c, 0x2f
- .byte 0x33, 0x21, 0x15
- .byte 0x2d, 0x26, 0x34
- .byte 0x1f, 0x1a, 0x21
- .byte 0x2f, 0x2c, 0x2a
- .byte 0x1a, 0x32, 0x1a
- .byte 0x3b, 0x3f, 0x21
- .byte 0x13, 0x3f, 0x13
- .byte 0x0f, 0x24, 0x22
- .byte 0x14, 0x1b, 0x10
- .byte 0x21, 0x06, 0x28
- .byte 0x25, 0x34, 0x10
- .byte 0x2e, 0x0e, 0x14
- .byte 0x3c, 0x3e, 0x25
- .byte 0x16, 0x06, 0x30
- .byte 0x0b, 0x04, 0x1f
- .byte 0x3e, 0x02, 0x24
- .byte 0x0c, 0x17, 0x25
- .byte 0x2b, 0x3c, 0x2d
- .byte 0x15, 0x36, 0x33
- .byte 0x18, 0x23, 0x2a
- .byte 0x1d, 0x10, 0x2a
- .byte 0x35, 0x17, 0x28
- .byte 0x00, 0x37, 0x24
- .byte 0x0a, 0x3b, 0x15
- .byte 0x1d, 0x0b, 0x1f
- .byte 0x3c, 0x31, 0x25
- .byte 0x1d, 0x0f, 0x1d
- .byte 0x20, 0x13, 0x34
- .byte 0x11, 0x2b, 0x2e
- .byte 0x23, 0x0c, 0x2e
- .byte 0x24, 0x02, 0x14
- .byte 0x31, 0x16, 0x19
- .byte 0x0e, 0x23, 0x35
- .byte 0x1a, 0x10, 0x16
- .byte 0x14, 0x04, 0x19
- .byte 0x2d, 0x27, 0x37
- .byte 0x33, 0x02, 0x31
- .byte 0x02, 0x04, 0x16
- .byte 0x0d, 0x22, 0x25
- .byte 0x25, 0x00, 0x16
- .byte 0x2a, 0x3f, 0x26
- .byte 0x20, 0x0c, 0x12
- .byte 0x2f, 0x2e, 0x35
- .byte 0x1b, 0x0d, 0x22
- .byte 0x1e, 0x01, 0x34
- .byte 0x05, 0x22, 0x21
- .byte 0x34, 0x2a, 0x32
- .byte 0x0b, 0x09, 0x1d
- .byte 0x3f, 0x32, 0x2f
- .byte 0x3d, 0x18, 0x2d
- .byte 0x0b, 0x38, 0x36
- .byte 0x39, 0x17, 0x28
- .byte 0x34, 0x04, 0x24
- .byte 0x36, 0x0e, 0x2a
- .byte 0x38, 0x01, 0x14
- .byte 0x3c, 0x24, 0x22
- .byte 0x21, 0x03, 0x18
- .byte 0x32, 0x2f, 0x12
- .byte 0x29, 0x24, 0x31
- .byte 0x0a, 0x3b, 0x12
- .byte 0x1a, 0x1c, 0x20
- .byte 0x30, 0x31, 0x1b
- .byte 0x1a, 0x21, 0x10
- .byte 0x05, 0x29, 0x10
- .byte 0x26, 0x2d, 0x13
- .byte 0x16, 0x0c, 0x1d
- .byte 0x2b, 0x06, 0x1b
- .byte 0x06, 0x12, 0x14
- .byte 0x38, 0x0f, 0x35
- .byte 0x23, 0x3a, 0x2c
- .byte 0x00, 0x19, 0x33
- .byte 0x29, 0x14, 0x2d
- .byte 0x2a, 0x21, 0x29
- .byte 0x14, 0x31, 0x14
- .byte 0x1a, 0x06, 0x1e
- .byte 0x18, 0x1b, 0x28
- .byte 0x3b, 0x16, 0x29
- .byte 0x15, 0x1e, 0x12
- .byte 0x34, 0x0a, 0x14
- .byte 0x1b, 0x05, 0x27
- .byte 0x0b, 0x01, 0x26
- .byte 0x2a, 0x22, 0x35
- .byte 0x21, 0x20, 0x18
- .byte 0x20, 0x37, 0x17
- .byte 0x14, 0x1f, 0x11
- .byte 0x1d, 0x11, 0x25
- .byte 0x24, 0x2b, 0x2f
- .byte 0x07, 0x3f, 0x1f
- .byte 0x2c, 0x25, 0x25
- .byte 0x2a, 0x29, 0x18
- .byte 0x11, 0x24, 0x28
- .byte 0x31, 0x2c, 0x2a
- .byte 0x39, 0x0b, 0x26
- .byte 0x28, 0x10, 0x26
- .byte 0x22, 0x06, 0x16
- .byte 0x09, 0x2c, 0x13
- .byte 0x34, 0x19, 0x15
- .byte 0x3a, 0x12, 0x21
- .byte 0x1d, 0x38, 0x23
- .byte 0x12, 0x25, 0x24
- .byte 0x21, 0x30, 0x12
- .byte 0x37, 0x1a, 0x12
- .byte 0x24, 0x3b, 0x25
- .byte 0x32, 0x15, 0x23
- .byte 0x0d, 0x1a, 0x10
- .byte 0x16, 0x2e, 0x26
- .byte 0x1d, 0x14, 0x16
- .byte 0x3e, 0x2e, 0x1f
- .byte 0x0a, 0x16, 0x10
- .byte 0x1d, 0x30, 0x2b
- .byte 0x04, 0x3a, 0x19
- .byte 0x08, 0x2d, 0x2e
- .byte 0x28, 0x1e, 0x33
- .byte 0x0a, 0x12, 0x2e
- .byte 0x0d, 0x03, 0x2f
- .byte 0x26, 0x3a, 0x1e
- .byte 0x35, 0x3b, 0x2a
- .byte 0x03, 0x1a, 0x18
- .byte 0x3f, 0x0b, 0x27
- .byte 0x04, 0x05, 0x34
- .byte 0x36, 0x0b, 0x27
- .byte 0x3b, 0x17, 0x11
- .byte 0x0d, 0x27, 0x26
- .byte 0x2c, 0x1f, 0x20
- .byte 0x26, 0x10, 0x20
- .byte 0x25, 0x23, 0x2d
- .byte 0x37, 0x09, 0x13
- .byte 0x14, 0x17, 0x2d
- .byte 0x2e, 0x3d, 0x23
- .byte 0x1d, 0x1a, 0x1f
- .byte 0x21, 0x33, 0x2e
- .byte 0x28, 0x17, 0x13
- .byte 0x26, 0x3c, 0x36
- .byte 0x14, 0x1a, 0x33
- .byte 0x32, 0x20, 0x2b
- .byte 0x19, 0x3e, 0x20
- .byte 0x0c, 0x02, 0x2d
- .byte 0x3c, 0x3c, 0x2a
- .byte 0x30, 0x30, 0x28
- .byte 0x25, 0x3f, 0x1e
- .byte 0x03, 0x17, 0x1e
- .byte 0x35, 0x11, 0x1c
- .byte 0x1b, 0x14, 0x2a
- .byte 0x28, 0x3a, 0x23
- .byte 0x0e, 0x1f, 0x12
- .byte 0x36, 0x21, 0x20
- .byte 0x07, 0x3b, 0x10
- .byte 0x23, 0x19, 0x34
- .byte 0x0d, 0x2e, 0x18
- .byte 0x3f, 0x20, 0x25
- .byte 0x3e, 0x3b, 0x15
- .byte 0x0b, 0x2e, 0x12
- .byte 0x37, 0x0b, 0x23
- .byte 0x3d, 0x32, 0x1f
- .byte 0x16, 0x03, 0x27
- .byte 0x14, 0x0c, 0x21
- .byte 0x18, 0x03, 0x30
- .byte 0x3e, 0x21, 0x13
- .byte 0x0f, 0x00, 0x32
- .byte 0x3f, 0x23, 0x16
- .byte 0x0e, 0x31, 0x1d
- .byte 0x18, 0x1c, 0x1d
- .byte 0x30, 0x0e, 0x1e
- .byte 0x21, 0x20, 0x23
- .byte 0x3f, 0x0c, 0x1e
- .byte 0x14, 0x33, 0x22
- .byte 0x22, 0x21, 0x15
- .byte 0x36, 0x05, 0x1e
- .byte 0x1d, 0x31, 0x14
- .byte 0x20, 0x11, 0x37
- .byte 0x0d, 0x33, 0x19
- .byte 0x25, 0x05, 0x36
- .byte 0x1e, 0x31, 0x20
- .byte 0x35, 0x3a, 0x2f
- .byte 0x32, 0x2f, 0x30
- .byte 0x14, 0x23, 0x2d
- .byte 0x35, 0x1e, 0x29
- .byte 0x05, 0x05, 0x1b
- .byte 0x09, 0x1f, 0x26
- .byte 0x2f, 0x0b, 0x15
- .byte 0x15, 0x11, 0x13
- .byte 0x29, 0x1b, 0x18
- .byte 0x1c, 0x13, 0x35
- .byte 0x34, 0x31, 0x23
- .byte 0x27, 0x3f, 0x2f
- .byte 0x09, 0x30, 0x19
- .byte 0x23, 0x12, 0x34
- .byte 0x02, 0x2a, 0x21
- .byte 0x09, 0x3c, 0x1d
- .byte 0x0c, 0x02, 0x10
- .byte 0x22, 0x05, 0x17
- .byte 0x22, 0x08, 0x1b
- .byte 0x0a, 0x0f, 0x15
- .byte 0x02, 0x11, 0x13
- .byte 0x01, 0x21, 0x22
- .byte 0x16, 0x39, 0x33
- .byte 0x24, 0x38, 0x34
- .byte 0x0f, 0x1e, 0x2b
- .byte 0x2b, 0x15, 0x15
- .byte 0x20, 0x22, 0x2e
- .byte 0x3a, 0x3f, 0x31
- .byte 0x1a, 0x27, 0x2b
- .byte 0x29, 0x34, 0x14
- .byte 0x16, 0x39, 0x2f
- .byte 0x13, 0x3e, 0x16
- .byte 0x36, 0x21, 0x30
- .byte 0x00, 0x24, 0x2b
- .byte 0x24, 0x21, 0x30
- .byte 0x15, 0x31, 0x13
- .byte 0x10, 0x37, 0x24
- .byte 0x08, 0x07, 0x23
- .byte 0x21, 0x09, 0x25
- .byte 0x05, 0x3c, 0x32
- .byte 0x19, 0x03, 0x25
- .byte 0x0f, 0x29, 0x2b
- .byte 0x16, 0x07, 0x13
- .byte 0x3e, 0x3d, 0x25
- .byte 0x36, 0x0b, 0x28
- .byte 0x2e, 0x2b, 0x16
- .byte 0x0c, 0x31, 0x11
- .byte 0x30, 0x13, 0x2d
- .byte 0x26, 0x3e, 0x37
- .byte 0x29, 0x2f, 0x2e
- .byte 0x15, 0x3d, 0x17
- .byte 0x1c, 0x2e, 0x21
- .byte 0x33, 0x2f, 0x10
- .byte 0x0d, 0x05, 0x1d
- .byte 0x1c, 0x1a, 0x12
- .byte 0x0e, 0x18, 0x37
- .byte 0x1b, 0x11, 0x14
- .byte 0x06, 0x14, 0x21
- .byte 0x31, 0x0e, 0x27
- .byte 0x1a, 0x03, 0x10
- .byte 0x00, 0x34, 0x31
- .byte 0x3f, 0x0b, 0x1d
- .byte 0x0f, 0x12, 0x1f
- .byte 0x1a, 0x15, 0x10
- .byte 0x0f, 0x00, 0x24
- .byte 0x3e, 0x0a, 0x2a
- .byte 0x30, 0x2b, 0x24
- .byte 0x26, 0x31, 0x10
- .byte 0x2d, 0x2f, 0x2f
- .byte 0x3f, 0x0c, 0x13
- .byte 0x12, 0x0b, 0x16
- .byte 0x15, 0x07, 0x1f
- .byte 0x28, 0x10, 0x32
- .byte 0x0f, 0x17, 0x15
- .byte 0x0b, 0x27, 0x33
- .byte 0x34, 0x1d, 0x10
- .byte 0x1c, 0x3a, 0x12
- .byte 0x2c, 0x27, 0x37
- .byte 0x0a, 0x1a, 0x32
- .byte 0x05, 0x1f, 0x21
- .byte 0x24, 0x0d, 0x1f
- .byte 0x1c, 0x17, 0x24
- .byte 0x2f, 0x3b, 0x32
- .byte 0x3b, 0x25, 0x10
- .byte 0x03, 0x2f, 0x21
- .byte 0x0c, 0x10, 0x23
- .byte 0x0e, 0x3a, 0x2c
- .byte 0x33, 0x03, 0x2c
- .byte 0x12, 0x06, 0x1c
- .byte 0x2a, 0x37, 0x30
- .byte 0x3f, 0x01, 0x1e
- .byte 0x35, 0x16, 0x37
- .byte 0x2c, 0x32, 0x35
- .byte 0x05, 0x11, 0x22
- .byte 0x29, 0x09, 0x20
- .byte 0x2b, 0x0d, 0x1f
- .byte 0x18, 0x0d, 0x20
- .byte 0x23, 0x39, 0x16
- .byte 0x0f, 0x3a, 0x18
- .byte 0x21, 0x35, 0x2b
- .byte 0x36, 0x26, 0x2b
- .byte 0x23, 0x05, 0x2f
- .byte 0x1b, 0x08, 0x17
- .byte 0x3e, 0x09, 0x16
- .byte 0x2d, 0x3a, 0x37
- .byte 0x15, 0x35, 0x35
- .byte 0x29, 0x0a, 0x12
- .byte 0x02, 0x39, 0x1f
- .byte 0x14, 0x34, 0x33
- .byte 0x17, 0x1d, 0x18
- .byte 0x16, 0x1d, 0x1a
- .byte 0x01, 0x39, 0x22
- .byte 0x1e, 0x27, 0x36
- .byte 0x32, 0x14, 0x26
- .byte 0x0a, 0x39, 0x36
- .byte 0x1f, 0x0d, 0x1e
- .byte 0x0b, 0x0a, 0x19
- .byte 0x35, 0x1d, 0x34
- .byte 0x03, 0x12, 0x16
- .byte 0x0c, 0x13, 0x2e
- .byte 0x0c, 0x34, 0x1e
- .byte 0x10, 0x14, 0x1e
- .byte 0x23, 0x32, 0x27
- .byte 0x02, 0x10, 0x29
- .byte 0x35, 0x18, 0x33
- .byte 0x33, 0x1d, 0x1a
- .byte 0x3c, 0x15, 0x23
- .byte 0x3e, 0x3f, 0x22
- .byte 0x2a, 0x02, 0x2c
- .byte 0x28, 0x0a, 0x2f
- .byte 0x1a, 0x06, 0x35
- .byte 0x3c, 0x17, 0x2b
- .byte 0x03, 0x12, 0x17
- .byte 0x2f, 0x0a, 0x26
- .byte 0x12, 0x38, 0x11
- .byte 0x36, 0x1b, 0x23
- .byte 0x01, 0x39, 0x35
- .byte 0x19, 0x19, 0x17
- .byte 0x09, 0x28, 0x22
- .byte 0x1e, 0x27, 0x2c
- .byte 0x35, 0x33, 0x2c
- .byte 0x27, 0x25, 0x31
- .byte 0x06, 0x31, 0x2d
- .byte 0x1a, 0x39, 0x28
- .byte 0x2d, 0x04, 0x1e
- .byte 0x24, 0x3e, 0x1c
- .byte 0x3c, 0x30, 0x1b
- .byte 0x3f, 0x3e, 0x37
- .byte 0x22, 0x36, 0x11
- .byte 0x00, 0x01, 0x1c
- .byte 0x12, 0x1a, 0x10
- .byte 0x12, 0x1e, 0x2c
- .byte 0x1f, 0x12, 0x2a
- .byte 0x2f, 0x06, 0x19
- .byte 0x35, 0x1a, 0x18
- .byte 0x3b, 0x09, 0x36
- .byte 0x34, 0x1d, 0x13
- .byte 0x02, 0x07, 0x10
- .byte 0x20, 0x2f, 0x1d
- .byte 0x0b, 0x03, 0x33
- .byte 0x1c, 0x16, 0x31
- .byte 0x05, 0x13, 0x1b
- .byte 0x29, 0x06, 0x13
- .byte 0x30, 0x2d, 0x36
- .byte 0x2a, 0x2d, 0x2c
- .byte 0x19, 0x34, 0x1c
- .byte 0x0f, 0x15, 0x12
- .byte 0x36, 0x15, 0x2c
- .byte 0x3a, 0x06, 0x1c
- .byte 0x12, 0x1d, 0x26
- .byte 0x03, 0x38, 0x1d
- .byte 0x01, 0x01, 0x2d
- .byte 0x17, 0x2e, 0x10
- .byte 0x14, 0x17, 0x1c
- .byte 0x34, 0x0f, 0x28
- .byte 0x09, 0x37, 0x1b
- .byte 0x28, 0x1d, 0x26
- .byte 0x29, 0x2d, 0x36
- .byte 0x1e, 0x17, 0x28
- .byte 0x15, 0x0f, 0x1c
- .byte 0x20, 0x2d, 0x10
- .byte 0x27, 0x16, 0x2e
- .byte 0x14, 0x09, 0x12
- .byte 0x3b, 0x3d, 0x21
- .byte 0x25, 0x1a, 0x2c
- .byte 0x00, 0x22, 0x36
- .byte 0x0d, 0x30, 0x10
- .byte 0x17, 0x19, 0x1b
- .byte 0x00, 0x3b, 0x21
- .byte 0x2a, 0x28, 0x34
- .byte 0x2d, 0x0f, 0x16
- .byte 0x0a, 0x30, 0x28
- .byte 0x06, 0x00, 0x25
- .byte 0x31, 0x2e, 0x2a
- .byte 0x14, 0x33, 0x28
- .byte 0x36, 0x10, 0x2e
- .byte 0x05, 0x2e, 0x19
- .byte 0x19, 0x1a, 0x15
- .byte 0x2c, 0x14, 0x17
- .byte 0x37, 0x0f, 0x13
- .byte 0x32, 0x17, 0x1b
- .byte 0x39, 0x18, 0x32
- .byte 0x2e, 0x32, 0x1e
- .byte 0x24, 0x1d, 0x31
- .byte 0x12, 0x1d, 0x2b
- .byte 0x14, 0x0c, 0x27
- .byte 0x36, 0x2e, 0x32
- .byte 0x06, 0x0a, 0x1a
- .byte 0x28, 0x28, 0x20
- .byte 0x3a, 0x3a, 0x17
- .byte 0x08, 0x27, 0x36
- .byte 0x18, 0x1a, 0x10
- .byte 0x1e, 0x26, 0x1b
- .byte 0x1f, 0x33, 0x1f
- .byte 0x21, 0x17, 0x2f
- .byte 0x01, 0x08, 0x20
- .byte 0x35, 0x03, 0x19
- .byte 0x3b, 0x02, 0x20
- .byte 0x02, 0x2d, 0x23
- .byte 0x0e, 0x17, 0x32
- .byte 0x31, 0x29, 0x11
- .byte 0x22, 0x17, 0x22
- .byte 0x3a, 0x2c, 0x23
- .byte 0x34, 0x20, 0x18
- .byte 0x00, 0x3a, 0x22
- .byte 0x25, 0x33, 0x21
- .byte 0x33, 0x04, 0x27
- .byte 0x04, 0x18, 0x32
- .byte 0x2c, 0x0c, 0x2f
- .byte 0x28, 0x14, 0x2c
- .byte 0x3f, 0x30, 0x2b
- .byte 0x30, 0x21, 0x1d
- .byte 0x01, 0x25, 0x32
- .byte 0x05, 0x23, 0x34
- .byte 0x24, 0x10, 0x30
- .byte 0x3d, 0x14, 0x1b
- .byte 0x3f, 0x38, 0x2f
- .byte 0x22, 0x1b, 0x32
- .byte 0x25, 0x07, 0x37
- .byte 0x0a, 0x0c, 0x1d
- .byte 0x03, 0x1e, 0x1a
- .byte 0x0f, 0x3c, 0x12
- .byte 0x11, 0x18, 0x1d
- .byte 0x00, 0x35, 0x2f
- .byte 0x32, 0x18, 0x14
- .byte 0x23, 0x30, 0x1b
- .byte 0x11, 0x3d, 0x12
- .byte 0x1a, 0x16, 0x35
- .byte 0x28, 0x05, 0x24
- .byte 0x17, 0x3d, 0x37
- .byte 0x2e, 0x09, 0x2e
- .byte 0x18, 0x1d, 0x17
- .byte 0x20, 0x1f, 0x18
- .byte 0x23, 0x2c, 0x2f
- .byte 0x20, 0x3f, 0x16
- .byte 0x3f, 0x29, 0x2e
- .byte 0x23, 0x3b, 0x29
- .byte 0x18, 0x39, 0x13
- .byte 0x1e, 0x32, 0x35
- .byte 0x14, 0x1d, 0x2a
- .byte 0x35, 0x01, 0x1d
- .byte 0x3e, 0x3b, 0x1e
- .byte 0x22, 0x1e, 0x16
- .byte 0x18, 0x22, 0x12
- .byte 0x3e, 0x29, 0x33
- .byte 0x2f, 0x14, 0x19
- .byte 0x3b, 0x07, 0x15
- .byte 0x06, 0x3d, 0x29
- .byte 0x35, 0x37, 0x23
- .byte 0x34, 0x1d, 0x2d
- .byte 0x18, 0x12, 0x1b
- .byte 0x0b, 0x13, 0x24
- .byte 0x13, 0x38, 0x1c
- .byte 0x1f, 0x0b, 0x1b
- .byte 0x13, 0x21, 0x1c
- .byte 0x06, 0x39, 0x32
- .byte 0x37, 0x3d, 0x26
- .byte 0x29, 0x26, 0x15
- .byte 0x3c, 0x33, 0x27
- .byte 0x00, 0x01, 0x2e
- .byte 0x15, 0x18, 0x31
- .byte 0x0d, 0x2c, 0x13
- .byte 0x27, 0x3b, 0x20
- .byte 0x2d, 0x01, 0x26
- .byte 0x23, 0x15, 0x30
- .byte 0x24, 0x00, 0x17
- .byte 0x37, 0x3f, 0x33
- .byte 0x25, 0x24, 0x31
- .byte 0x06, 0x3b, 0x37
- .byte 0x03, 0x18, 0x1a
- .byte 0x2c, 0x34, 0x14
- .byte 0x1d, 0x36, 0x18
- .byte 0x3a, 0x04, 0x23
- .byte 0x12, 0x26, 0x15
- .byte 0x2b, 0x19, 0x1a
- .byte 0x29, 0x2c, 0x36
- .byte 0x01, 0x19, 0x1d
- .byte 0x2f, 0x06, 0x2b
- .byte 0x0c, 0x12, 0x26
- .byte 0x36, 0x32, 0x1d
- .byte 0x0d, 0x12, 0x28
- .byte 0x03, 0x28, 0x13
- .byte 0x29, 0x06, 0x17
- .byte 0x03, 0x38, 0x21
- .byte 0x30, 0x2c, 0x10
- .byte 0x22, 0x00, 0x28
- .byte 0x24, 0x3b, 0x1c
- .byte 0x20, 0x3e, 0x13
- .byte 0x02, 0x0c, 0x19
- .byte 0x29, 0x2c, 0x1a
- .byte 0x39, 0x30, 0x22
- .byte 0x2a, 0x1f, 0x22
- .byte 0x14, 0x34, 0x2c
- .byte 0x14, 0x25, 0x1b
- .byte 0x06, 0x3b, 0x15
- .byte 0x06, 0x1c, 0x13
- .byte 0x15, 0x03, 0x18
- .byte 0x1e, 0x2a, 0x1b
- .byte 0x17, 0x25, 0x2f
- .byte 0x1c, 0x29, 0x2e
- .byte 0x02, 0x32, 0x1e
- .byte 0x1d, 0x28, 0x35
- .byte 0x36, 0x03, 0x34
- .byte 0x16, 0x3d, 0x2a
- .byte 0x12, 0x0d, 0x13
- .byte 0x1d, 0x2d, 0x21
- .byte 0x32, 0x17, 0x2e
- .byte 0x1a, 0x15, 0x26
- .byte 0x22, 0x2f, 0x15
- .byte 0x3c, 0x0e, 0x20
- .byte 0x2f, 0x27, 0x13
- .byte 0x04, 0x09, 0x32
- .byte 0x1e, 0x01, 0x34
- .byte 0x06, 0x16, 0x1e
- .byte 0x2e, 0x1b, 0x1c
- .byte 0x28, 0x13, 0x2a
- .byte 0x30, 0x34, 0x12
- .byte 0x12, 0x32, 0x18
- .byte 0x1d, 0x1d, 0x35
- .byte 0x07, 0x1c, 0x16
- .byte 0x2d, 0x3d, 0x35
- .byte 0x1c, 0x1b, 0x24
- .byte 0x21, 0x2d, 0x1e
- .byte 0x10, 0x09, 0x14
- .byte 0x3d, 0x11, 0x12
- .byte 0x25, 0x02, 0x26
- .byte 0x23, 0x02, 0x19
- .byte 0x19, 0x05, 0x14
- .byte 0x0b, 0x21, 0x1a
- .byte 0x09, 0x02, 0x2c
- .byte 0x18, 0x28, 0x2d
- .byte 0x1e, 0x10, 0x12
- .byte 0x2e, 0x18, 0x2e
- .byte 0x1f, 0x02, 0x2c
- .byte 0x14, 0x17, 0x24
- .byte 0x39, 0x08, 0x32
- .byte 0x16, 0x14, 0x22
- .byte 0x16, 0x28, 0x21
- .byte 0x11, 0x10, 0x2c
- .byte 0x23, 0x36, 0x2b
- .byte 0x39, 0x21, 0x26
- .byte 0x0e, 0x06, 0x2d
- .byte 0x3c, 0x3e, 0x26
- .byte 0x2a, 0x1b, 0x1f
- .byte 0x00, 0x3c, 0x33
- .byte 0x35, 0x3f, 0x14
- .byte 0x00, 0x0b, 0x10
- .byte 0x34, 0x3c, 0x17
- .byte 0x2d, 0x07, 0x1f
- .byte 0x24, 0x39, 0x27
- .byte 0x16, 0x00, 0x1d
- .byte 0x33, 0x2b, 0x1e
- .byte 0x0f, 0x08, 0x31
- .byte 0x3a, 0x09, 0x13
- .byte 0x0c, 0x21, 0x1c
- .byte 0x2a, 0x17, 0x34
- .byte 0x29, 0x27, 0x10
- .byte 0x37, 0x1b, 0x18
- .byte 0x15, 0x08, 0x2f
- .byte 0x1f, 0x16, 0x12
- .byte 0x1f, 0x28, 0x34
- .byte 0x1c, 0x20, 0x22
- .byte 0x12, 0x01, 0x12
- .byte 0x21, 0x31, 0x10
- .byte 0x22, 0x26, 0x1e
- .byte 0x01, 0x3d, 0x11
- .byte 0x1e, 0x27, 0x25
- .byte 0x3d, 0x30, 0x24
- .byte 0x1d, 0x11, 0x22
- .byte 0x36, 0x30, 0x16
- .byte 0x1f, 0x3e, 0x2a
- .byte 0x3c, 0x27, 0x1b
- .byte 0x1f, 0x29, 0x10
- .byte 0x1e, 0x05, 0x2a
- .byte 0x0a, 0x10, 0x14
- .byte 0x1f, 0x00, 0x2e
- .byte 0x0b, 0x3b, 0x18
- .byte 0x0a, 0x39, 0x30
- .byte 0x37, 0x0b, 0x1f
- .byte 0x1d, 0x0a, 0x29
- .byte 0x3e, 0x1c, 0x33
- .byte 0x13, 0x2e, 0x28
- .byte 0x27, 0x1b, 0x1e
- .byte 0x1d, 0x02, 0x1c
- .byte 0x01, 0x25, 0x14
- .byte 0x3a, 0x10, 0x1c
- .byte 0x12, 0x05, 0x2a
- .byte 0x30, 0x20, 0x26
- .byte 0x2f, 0x2e, 0x2e
- .byte 0x03, 0x07, 0x24
- .byte 0x36, 0x04, 0x2b
- .byte 0x11, 0x25, 0x2d
- .byte 0x28, 0x0e, 0x2e
- .byte 0x0f, 0x1d, 0x15
- .byte 0x1c, 0x28, 0x30
- .byte 0x1f, 0x23, 0x26
- .byte 0x36, 0x12, 0x37
- .byte 0x3a, 0x31, 0x10
- .byte 0x2c, 0x2c, 0x2f
- .byte 0x1a, 0x0d, 0x15
- .byte 0x3f, 0x3c, 0x32
- .byte 0x35, 0x1c, 0x16
- .byte 0x33, 0x16, 0x28
- .byte 0x1d, 0x3f, 0x21
- .byte 0x2c, 0x3e, 0x2b
- .byte 0x24, 0x23, 0x2f
- .byte 0x32, 0x15, 0x2a
- .byte 0x1b, 0x10, 0x35
- .byte 0x18, 0x37, 0x10
- .byte 0x3b, 0x1e, 0x11
- .byte 0x2b, 0x16, 0x24
- .byte 0x1d, 0x16, 0x26
- .byte 0x3c, 0x2d, 0x11
- .byte 0x15, 0x28, 0x28
- .byte 0x27, 0x27, 0x27
- .byte 0x3b, 0x3a, 0x16
- .byte 0x1a, 0x0c, 0x1a
- .byte 0x15, 0x08, 0x25
- .byte 0x0b, 0x10, 0x22
- .byte 0x1a, 0x3e, 0x17
- .byte 0x28, 0x1f, 0x1e
- .byte 0x01, 0x1e, 0x1e
- .byte 0x1c, 0x2f, 0x10
- .byte 0x25, 0x0b, 0x34
- .byte 0x3e, 0x0c, 0x1a
- .byte 0x1b, 0x10, 0x2a
- .byte 0x0f, 0x14, 0x17
- .byte 0x0f, 0x3f, 0x17
- .byte 0x03, 0x15, 0x1f
- .byte 0x02, 0x36, 0x17
- .byte 0x15, 0x1d, 0x18
- .byte 0x08, 0x36, 0x10
- .byte 0x14, 0x0d, 0x2b
- .byte 0x0a, 0x05, 0x1d
- .byte 0x26, 0x12, 0x1e
- .byte 0x3e, 0x18, 0x19
- .byte 0x36, 0x18, 0x37
- .byte 0x17, 0x39, 0x2e
- .byte 0x0d, 0x04, 0x19
- .byte 0x16, 0x22, 0x15
- .byte 0x3e, 0x26, 0x1f
- .byte 0x00, 0x06, 0x17
- .byte 0x33, 0x22, 0x1d
- .byte 0x2b, 0x39, 0x2b
- .byte 0x3e, 0x31, 0x1c
- .byte 0x22, 0x3f, 0x13
- .byte 0x30, 0x1c, 0x31
- .byte 0x07, 0x2b, 0x14
- .byte 0x32, 0x35, 0x1e
- .byte 0x02, 0x07, 0x20
- .byte 0x0f, 0x3b, 0x11
- .byte 0x20, 0x07, 0x12
- .byte 0x2a, 0x30, 0x1d
- .byte 0x28, 0x38, 0x36
- .byte 0x20, 0x01, 0x17
- .byte 0x15, 0x20, 0x21
- .byte 0x3a, 0x1b, 0x1e
- .byte 0x38, 0x12, 0x24
- .byte 0x03, 0x3e, 0x1f
- .byte 0x29, 0x1d, 0x13
- .byte 0x20, 0x27, 0x19
- .byte 0x12, 0x25, 0x20
- .byte 0x32, 0x33, 0x2b
- .byte 0x3f, 0x05, 0x31
- .byte 0x35, 0x3c, 0x2d
- .byte 0x2d, 0x02, 0x2e
- .byte 0x10, 0x2a, 0x16
- .byte 0x17, 0x08, 0x31
- .byte 0x17, 0x2e, 0x2b
- .byte 0x30, 0x1e, 0x15
- .byte 0x31, 0x15, 0x26
- .byte 0x08, 0x10, 0x33
- .byte 0x15, 0x01, 0x27
- .byte 0x12, 0x07, 0x2f
- .byte 0x29, 0x27, 0x34
- .byte 0x3f, 0x08, 0x31
- .byte 0x1c, 0x20, 0x1a
- .byte 0x33, 0x0c, 0x13
- .byte 0x18, 0x31, 0x24
- .byte 0x37, 0x2d, 0x2e
- .byte 0x21, 0x18, 0x24
- .byte 0x3a, 0x27, 0x31
- .byte 0x35, 0x3e, 0x30
- .byte 0x3a, 0x14, 0x33
- .byte 0x0f, 0x1a, 0x2d
- .byte 0x30, 0x2e, 0x11
- .byte 0x1a, 0x31, 0x1d
- .byte 0x17, 0x3c, 0x18
- .byte 0x33, 0x31, 0x23
- .byte 0x1d, 0x39, 0x2d
- .byte 0x10, 0x1d, 0x2f
- .byte 0x24, 0x15, 0x1c
- .byte 0x25, 0x01, 0x2b
- .byte 0x22, 0x16, 0x2e
- .byte 0x1b, 0x25, 0x35
- .byte 0x37, 0x10, 0x26
- .byte 0x39, 0x01, 0x36
- .byte 0x17, 0x2b, 0x14
- .byte 0x09, 0x16, 0x17
- .byte 0x20, 0x28, 0x23
- .byte 0x26, 0x3a, 0x26
- .byte 0x27, 0x2a, 0x24
- .byte 0x36, 0x02, 0x2c
- .byte 0x29, 0x30, 0x35
- .byte 0x36, 0x01, 0x1f
- .byte 0x28, 0x3b, 0x1d
- .byte 0x23, 0x1e, 0x2d
- .byte 0x11, 0x1e, 0x2c
- .byte 0x2f, 0x32, 0x19
- .byte 0x3f, 0x26, 0x31
- .byte 0x38, 0x1e, 0x17
- .byte 0x05, 0x18, 0x2e
- .byte 0x00, 0x2e, 0x12
- .byte 0x34, 0x3f, 0x34
- .byte 0x16, 0x10, 0x29
- .byte 0x20, 0x3d, 0x36
- .byte 0x2f, 0x16, 0x25
- .byte 0x12, 0x17, 0x10
- .byte 0x21, 0x37, 0x35
- .byte 0x25, 0x37, 0x2d
- .byte 0x01, 0x08, 0x27
- .byte 0x03, 0x1f, 0x29
- .byte 0x0d, 0x2a, 0x16
- .byte 0x3a, 0x3f, 0x33
- .byte 0x2b, 0x19, 0x1d
- .byte 0x2a, 0x1f, 0x29
- .byte 0x28, 0x2c, 0x10
- .byte 0x28, 0x30, 0x10
- .byte 0x39, 0x14, 0x1b
- .byte 0x00, 0x18, 0x21
- .byte 0x28, 0x0c, 0x37
- .byte 0x11, 0x10, 0x11
- .byte 0x3c, 0x33, 0x32
- .byte 0x33, 0x36, 0x1a
- .byte 0x36, 0x00, 0x1c
- .byte 0x31, 0x1b, 0x1d
- .byte 0x38, 0x1d, 0x10
- .byte 0x3c, 0x39, 0x27
- .byte 0x3a, 0x3f, 0x14
- .byte 0x19, 0x12, 0x14
- .byte 0x0d, 0x1f, 0x18
- .byte 0x00, 0x25, 0x18
- .byte 0x28, 0x1c, 0x32
- .byte 0x27, 0x03, 0x1a
- .byte 0x26, 0x2d, 0x2a
- .byte 0x29, 0x28, 0x27
- .byte 0x0a, 0x2a, 0x18
- .byte 0x0a, 0x1a, 0x30
- .byte 0x20, 0x1a, 0x2e
- .byte 0x06, 0x0b, 0x1d
- .byte 0x0f, 0x0c, 0x1c
- .byte 0x35, 0x28, 0x1c
- .byte 0x3d, 0x16, 0x23
- .byte 0x21, 0x1c, 0x31
- .byte 0x14, 0x1c, 0x2e
- .byte 0x22, 0x32, 0x35
- .byte 0x09, 0x29, 0x30
- .byte 0x20, 0x1a, 0x10
- .byte 0x31, 0x3f, 0x2c
- .byte 0x0a, 0x3d, 0x37
- .byte 0x0b, 0x2e, 0x2d
- .byte 0x1f, 0x22, 0x31
- .byte 0x06, 0x07, 0x29
- .byte 0x22, 0x17, 0x2d
- .byte 0x30, 0x11, 0x18
- .byte 0x0c, 0x19, 0x15
- .byte 0x07, 0x0a, 0x34
- .byte 0x18, 0x29, 0x27
- .byte 0x33, 0x0c, 0x30
- .byte 0x03, 0x1a, 0x37
- .byte 0x06, 0x01, 0x2d
- .byte 0x0f, 0x3b, 0x2b
- .byte 0x11, 0x1f, 0x37
- .byte 0x2b, 0x21, 0x36
- .byte 0x3f, 0x23, 0x17
- .byte 0x17, 0x07, 0x2b
- .byte 0x2b, 0x0e, 0x30
- .byte 0x11, 0x39, 0x1d
- .byte 0x29, 0x03, 0x33
- .byte 0x30, 0x03, 0x2f
- .byte 0x3c, 0x20, 0x26
- .byte 0x03, 0x22, 0x14
- .byte 0x3a, 0x28, 0x35
- .byte 0x01, 0x28, 0x2b
- .byte 0x3e, 0x15, 0x18
- .byte 0x30, 0x07, 0x17
- .byte 0x3b, 0x2c, 0x30
- .byte 0x15, 0x07, 0x2c
- .byte 0x17, 0x27, 0x1d
- .byte 0x3f, 0x1e, 0x33
- .byte 0x0d, 0x17, 0x10
- .byte 0x15, 0x0e, 0x30
- .byte 0x09, 0x05, 0x30
- .byte 0x2d, 0x20, 0x15
- .byte 0x3c, 0x3d, 0x30
- .byte 0x0c, 0x17, 0x1c
- .byte 0x1a, 0x0d, 0x25
- .byte 0x2b, 0x2b, 0x2a
- .byte 0x02, 0x16, 0x2d
- .byte 0x17, 0x31, 0x17
- .byte 0x00, 0x08, 0x13
- .byte 0x37, 0x35, 0x21
- .byte 0x1e, 0x1c, 0x1f
- .byte 0x2b, 0x32, 0x1c
- .byte 0x10, 0x2a, 0x16
- .byte 0x3a, 0x33, 0x31
- .byte 0x17, 0x2b, 0x2a
- .byte 0x0c, 0x3d, 0x11
- .byte 0x28, 0x0a, 0x30
- .byte 0x23, 0x0a, 0x26
- .byte 0x0a, 0x14, 0x24
- .byte 0x0b, 0x0f, 0x30
- .byte 0x1b, 0x1e, 0x29
- .byte 0x02, 0x35, 0x28
- .byte 0x3b, 0x02, 0x14
- .byte 0x00, 0x0f, 0x35
- .byte 0x1c, 0x3c, 0x2e
- .byte 0x28, 0x38, 0x19
- .byte 0x1b, 0x11, 0x12
- .byte 0x09, 0x16, 0x10
- .byte 0x2e, 0x0d, 0x20
- .byte 0x3d, 0x04, 0x32
- .byte 0x16, 0x2c, 0x25
- .byte 0x02, 0x3d, 0x18
- .byte 0x0b, 0x13, 0x1c
- .byte 0x22, 0x2a, 0x1c
- .byte 0x20, 0x27, 0x22
- .byte 0x05, 0x26, 0x22
- .byte 0x12, 0x1d, 0x2c
- .byte 0x08, 0x05, 0x2e
- .byte 0x3f, 0x1c, 0x17
- .byte 0x24, 0x0d, 0x33
- .byte 0x36, 0x08, 0x24
- .byte 0x10, 0x22, 0x29
- .byte 0x1c, 0x0a, 0x11
- .byte 0x25, 0x0f, 0x10
- .byte 0x24, 0x38, 0x2f
- .byte 0x25, 0x32, 0x1e
- .byte 0x06, 0x2a, 0x29
- .byte 0x3e, 0x3a, 0x28
- .byte 0x34, 0x17, 0x33
- .byte 0x18, 0x33, 0x17
- .byte 0x07, 0x14, 0x1f
- .byte 0x11, 0x17, 0x20
- .byte 0x13, 0x0e, 0x14
- .byte 0x3b, 0x1c, 0x12
- .byte 0x2a, 0x13, 0x37
- .byte 0x2a, 0x35, 0x32
- .byte 0x30, 0x02, 0x25
- .byte 0x00, 0x07, 0x1f
- .byte 0x0c, 0x04, 0x2c
- .byte 0x37, 0x37, 0x30
- .byte 0x25, 0x12, 0x25
- .byte 0x12, 0x22, 0x21
- .byte 0x22, 0x35, 0x33
- .byte 0x07, 0x20, 0x2d
- .byte 0x27, 0x0e, 0x30
- .byte 0x34, 0x19, 0x1a
- .byte 0x0a, 0x3c, 0x25
- .byte 0x07, 0x1d, 0x2b
- .byte 0x31, 0x3a, 0x12
- .byte 0x1a, 0x3d, 0x37
- .byte 0x16, 0x15, 0x16
- .byte 0x39, 0x13, 0x15
- .byte 0x2d, 0x03, 0x2e
- .byte 0x06, 0x39, 0x2c
- .byte 0x16, 0x00, 0x13
- .byte 0x35, 0x2a, 0x35
- .byte 0x24, 0x01, 0x18
- .byte 0x24, 0x37, 0x28
- .byte 0x25, 0x1b, 0x34
- .byte 0x25, 0x19, 0x17
- .byte 0x27, 0x2f, 0x1b
- .byte 0x27, 0x0d, 0x10
- .byte 0x36, 0x3c, 0x30
- .byte 0x3c, 0x33, 0x23
- .byte 0x3e, 0x27, 0x1e
- .byte 0x25, 0x2d, 0x29
- .byte 0x1f, 0x12, 0x21
- .byte 0x37, 0x32, 0x1f
- .byte 0x11, 0x21, 0x35
- .byte 0x30, 0x0c, 0x19
- .byte 0x25, 0x3d, 0x26
- .byte 0x17, 0x02, 0x1d
- .byte 0x14, 0x2e, 0x11
- .byte 0x38, 0x13, 0x30
- .byte 0x0a, 0x2b, 0x20
- .byte 0x1e, 0x10, 0x15
- .byte 0x37, 0x30, 0x2e
- .byte 0x1e, 0x04, 0x2c
- .byte 0x14, 0x34, 0x19
- .byte 0x08, 0x14, 0x18
- .byte 0x0e, 0x1c, 0x30
- .byte 0x1a, 0x2e, 0x1b
- .byte 0x1f, 0x39, 0x31
- .byte 0x0c, 0x1c, 0x28
- .byte 0x3e, 0x33, 0x23
- .byte 0x0f, 0x13, 0x16
- .byte 0x25, 0x39, 0x2f
- .byte 0x14, 0x1b, 0x1a
- .byte 0x28, 0x3e, 0x21
- .byte 0x2d, 0x19, 0x11
- .byte 0x0c, 0x34, 0x32
- .byte 0x39, 0x31, 0x19
- .byte 0x1a, 0x08, 0x34
- .byte 0x09, 0x2f, 0x11
- .byte 0x30, 0x04, 0x1c
- .byte 0x02, 0x3b, 0x1b
- .byte 0x33, 0x21, 0x33
- .byte 0x38, 0x02, 0x1a
- .byte 0x31, 0x38, 0x32
- .byte 0x1f, 0x1d, 0x16
- .byte 0x17, 0x10, 0x1b
- .byte 0x32, 0x20, 0x17
- .byte 0x00, 0x33, 0x12
- .byte 0x21, 0x0f, 0x27
- .byte 0x14, 0x19, 0x27
- .byte 0x24, 0x2c, 0x37
- .byte 0x25, 0x05, 0x2f
- .byte 0x3d, 0x25, 0x11
- .byte 0x12, 0x30, 0x1a
- .byte 0x16, 0x03, 0x1a
- .byte 0x14, 0x09, 0x13
- .byte 0x02, 0x23, 0x22
- .byte 0x01, 0x3c, 0x10
- .byte 0x3f, 0x2d, 0x23
- .byte 0x31, 0x3f, 0x23
- .byte 0x17, 0x00, 0x33
- .byte 0x3f, 0x0f, 0x2f
- .byte 0x26, 0x07, 0x15
- .byte 0x21, 0x2b, 0x2a
- .byte 0x38, 0x39, 0x1e
- .byte 0x09, 0x25, 0x2b
- .byte 0x3b, 0x30, 0x25
- .byte 0x12, 0x2d, 0x13
- .byte 0x32, 0x19, 0x28
- .byte 0x24, 0x1c, 0x2d
- .byte 0x35, 0x32, 0x26
- .byte 0x0d, 0x23, 0x1e
- .byte 0x1d, 0x07, 0x21
- .byte 0x0b, 0x34, 0x17
- .byte 0x2d, 0x32, 0x32
- .byte 0x3a, 0x3c, 0x35
- .byte 0x1a, 0x10, 0x33
- .byte 0x1a, 0x07, 0x22
- .byte 0x3b, 0x1b, 0x2a
- .byte 0x33, 0x1f, 0x26
- .byte 0x0e, 0x35, 0x1a
- .byte 0x3b, 0x0a, 0x1c
- .byte 0x11, 0x07, 0x11
- .byte 0x0d, 0x3c, 0x2d
- .byte 0x1e, 0x37, 0x29
- .byte 0x11, 0x05, 0x12
- .byte 0x15, 0x2f, 0x1c
- .byte 0x24, 0x31, 0x16
- .byte 0x2b, 0x21, 0x1b
- .byte 0x23, 0x10, 0x31
- .byte 0x02, 0x14, 0x29
- .byte 0x26, 0x20, 0x16
- .byte 0x10, 0x17, 0x10
- .byte 0x0b, 0x0f, 0x33
- .byte 0x01, 0x2e, 0x14
- .byte 0x21, 0x0e, 0x37
- .byte 0x1a, 0x1d, 0x2f
- .byte 0x1e, 0x30, 0x24
- .byte 0x04, 0x14, 0x2d
- .byte 0x11, 0x00, 0x30
- .byte 0x08, 0x2a, 0x1d
- .byte 0x1d, 0x22, 0x21
- .byte 0x24, 0x2c, 0x37
- .byte 0x24, 0x11, 0x12
- .byte 0x04, 0x2e, 0x28
- .byte 0x1d, 0x18, 0x23
- .byte 0x3c, 0x16, 0x16
- .byte 0x10, 0x17, 0x31
- .byte 0x20, 0x21, 0x12
- .byte 0x33, 0x3e, 0x34
- .byte 0x06, 0x13, 0x13
- .byte 0x17, 0x38, 0x2b
- .byte 0x14, 0x0d, 0x15
- .byte 0x24, 0x3b, 0x2b
- .byte 0x34, 0x3b, 0x1e
- .byte 0x18, 0x07, 0x34
- .byte 0x37, 0x1d, 0x1f
- .byte 0x0b, 0x29, 0x20
- .byte 0x12, 0x1e, 0x1d
- .byte 0x1a, 0x24, 0x24
- .byte 0x3d, 0x28, 0x24
- .byte 0x0b, 0x12, 0x33
- .byte 0x1b, 0x3a, 0x22
- .byte 0x14, 0x13, 0x2a
- .byte 0x31, 0x38, 0x15
- .byte 0x37, 0x2b, 0x2e
- .byte 0x19, 0x1e, 0x2c
- .byte 0x3f, 0x1b, 0x2a
- .byte 0x33, 0x1f, 0x33
- .byte 0x3f, 0x15, 0x29
- .byte 0x01, 0x1e, 0x18
- .byte 0x1f, 0x22, 0x19
- .byte 0x33, 0x3c, 0x34
- .byte 0x1e, 0x12, 0x22
- .byte 0x0d, 0x37, 0x2c
- .byte 0x0f, 0x08, 0x31
- .byte 0x2e, 0x09, 0x36
- .byte 0x01, 0x05, 0x1e
- .byte 0x1c, 0x04, 0x1e
- .byte 0x0c, 0x01, 0x1c
- .byte 0x29, 0x28, 0x2f
- .byte 0x39, 0x2d, 0x14
- .byte 0x09, 0x22, 0x36
- .byte 0x04, 0x37, 0x37
- .byte 0x2d, 0x2f, 0x35
- .byte 0x24, 0x23, 0x1b
- .byte 0x08, 0x20, 0x32
- .byte 0x20, 0x1f, 0x34
- .byte 0x02, 0x31, 0x19
- .byte 0x18, 0x13, 0x36
- .byte 0x06, 0x2b, 0x1e
- .byte 0x0e, 0x1b, 0x10
- .byte 0x2f, 0x0e, 0x1c
- .byte 0x11, 0x38, 0x13
- .byte 0x01, 0x37, 0x19
- .byte 0x14, 0x11, 0x26
- .byte 0x31, 0x3d, 0x33
- .byte 0x1d, 0x1b, 0x34
- .byte 0x25, 0x31, 0x2f
- .byte 0x11, 0x0a, 0x2f
- .byte 0x39, 0x17, 0x1b
- .byte 0x05, 0x0e, 0x13
- .byte 0x29, 0x25, 0x22
- .byte 0x15, 0x0d, 0x20
- .byte 0x2b, 0x27, 0x21
- .byte 0x3e, 0x24, 0x27
- .byte 0x2a, 0x2b, 0x16
- .byte 0x24, 0x3d, 0x15
- .byte 0x15, 0x30, 0x31
- .byte 0x0f, 0x33, 0x24
- .byte 0x06, 0x16, 0x13
- .byte 0x06, 0x31, 0x10
- .byte 0x2e, 0x3f, 0x10
- .byte 0x05, 0x0d, 0x2f
- .byte 0x3c, 0x1f, 0x19
- .byte 0x12, 0x13, 0x24
- .byte 0x0f, 0x33, 0x36
- .byte 0x15, 0x3b, 0x33
- .byte 0x03, 0x0f, 0x2a
- .byte 0x3b, 0x3c, 0x2c
- .byte 0x36, 0x09, 0x29
- .byte 0x11, 0x3b, 0x27
- .byte 0x28, 0x2b, 0x31
- .byte 0x1a, 0x0e, 0x2f
- .byte 0x39, 0x2c, 0x31
- .byte 0x0e, 0x3c, 0x35
- .byte 0x2c, 0x24, 0x33
- .byte 0x3d, 0x11, 0x2b
- .byte 0x07, 0x3c, 0x37
- .byte 0x14, 0x18, 0x13
- .byte 0x1d, 0x3f, 0x2e
- .byte 0x30, 0x12, 0x25
- .byte 0x26, 0x1d, 0x11
- .byte 0x07, 0x11, 0x1e
- .byte 0x34, 0x01, 0x11
- .byte 0x0b, 0x39, 0x21
- .byte 0x29, 0x02, 0x29
- .byte 0x15, 0x10, 0x1a
- .byte 0x30, 0x1f, 0x35
- .byte 0x3c, 0x2b, 0x2a
- .byte 0x30, 0x3b, 0x36
- .byte 0x20, 0x1a, 0x23
- .byte 0x32, 0x24, 0x2b
- .byte 0x15, 0x20, 0x1c
- .byte 0x25, 0x3d, 0x36
- .byte 0x2d, 0x14, 0x31
- .byte 0x18, 0x23, 0x17
- .byte 0x18, 0x05, 0x13
- .byte 0x34, 0x30, 0x37
- .byte 0x0e, 0x39, 0x23
- .byte 0x1d, 0x1f, 0x17
- .byte 0x01, 0x15, 0x2f
- .byte 0x0b, 0x3e, 0x1b
- .byte 0x0d, 0x19, 0x2e
- .byte 0x31, 0x38, 0x1c
- .byte 0x15, 0x34, 0x15
- .byte 0x13, 0x19, 0x29
- .byte 0x19, 0x14, 0x27
- .byte 0x15, 0x18, 0x23
- .byte 0x29, 0x0c, 0x27
- .byte 0x2d, 0x0e, 0x17
- .byte 0x34, 0x18, 0x10
- .byte 0x3b, 0x1e, 0x29
- .byte 0x34, 0x2c, 0x22
- .byte 0x31, 0x08, 0x13
- .byte 0x1d, 0x18, 0x1a
- .byte 0x1c, 0x0b, 0x2a
- .byte 0x19, 0x1e, 0x1a
- .byte 0x23, 0x27, 0x17
- .byte 0x3b, 0x0e, 0x37
- .byte 0x19, 0x2b, 0x16
- .byte 0x2f, 0x08, 0x21
- .byte 0x37, 0x02, 0x20
- .byte 0x0b, 0x32, 0x30
- .byte 0x16, 0x05, 0x30
- .byte 0x13, 0x05, 0x1a
- .byte 0x07, 0x39, 0x19
- .byte 0x0c, 0x3b, 0x2a
- .byte 0x15, 0x05, 0x30
- .byte 0x30, 0x05, 0x19
- .byte 0x13, 0x00, 0x12
- .byte 0x27, 0x16, 0x2a
- .byte 0x0f, 0x28, 0x27
- .byte 0x0c, 0x23, 0x2f
- .byte 0x39, 0x28, 0x2a
- .byte 0x24, 0x25, 0x1f
- .byte 0x18, 0x29, 0x14
- .byte 0x16, 0x05, 0x1a
- .byte 0x35, 0x2f, 0x26
- .byte 0x0a, 0x3a, 0x29
- .byte 0x34, 0x2c, 0x36
- .byte 0x2e, 0x3a, 0x15
- .byte 0x1a, 0x0a, 0x2d
- .byte 0x16, 0x14, 0x2e
- .byte 0x35, 0x28, 0x2a
- .byte 0x35, 0x0f, 0x11
- .byte 0x11, 0x32, 0x19
- .byte 0x20, 0x1a, 0x28
- .byte 0x17, 0x1a, 0x28
- .byte 0x16, 0x33, 0x25
- .byte 0x13, 0x2c, 0x29
- .byte 0x09, 0x16, 0x33
- .byte 0x1d, 0x27, 0x26
- .byte 0x15, 0x0c, 0x2f
- .byte 0x22, 0x1c, 0x19
- .byte 0x29, 0x33, 0x10
- .byte 0x2d, 0x11, 0x1b
- .byte 0x16, 0x19, 0x2e
- .byte 0x0d, 0x0c, 0x28
- .byte 0x37, 0x3a, 0x34
- .byte 0x2a, 0x1d, 0x37
- .byte 0x30, 0x0a, 0x36
- .byte 0x24, 0x39, 0x1b
- .byte 0x39, 0x0a, 0x32
- .byte 0x11, 0x03, 0x2d
- .byte 0x32, 0x1d, 0x30
- .byte 0x38, 0x1e, 0x27
- .byte 0x2e, 0x17, 0x18
- .byte 0x16, 0x17, 0x2a
- .byte 0x36, 0x3b, 0x31
- .byte 0x17, 0x04, 0x19
- .byte 0x3a, 0x25, 0x2d
- .byte 0x00, 0x36, 0x27
- .byte 0x25, 0x12, 0x33
- .byte 0x06, 0x0a, 0x14
- .byte 0x11, 0x05, 0x2f
- .byte 0x03, 0x35, 0x2f
- .byte 0x0b, 0x34, 0x29
- .byte 0x00, 0x31, 0x13
- .byte 0x27, 0x0f, 0x1c
- .byte 0x1d, 0x06, 0x2d
- .byte 0x1c, 0x30, 0x27
- .byte 0x2f, 0x2a, 0x27
- .byte 0x16, 0x20, 0x31
- .byte 0x33, 0x2b, 0x2b
- .byte 0x05, 0x30, 0x36
- .byte 0x29, 0x23, 0x35
- .byte 0x10, 0x16, 0x2f
- .byte 0x2d, 0x20, 0x29
- .byte 0x37, 0x13, 0x24
- .byte 0x2d, 0x0e, 0x25
- .byte 0x08, 0x0a, 0x18
- .byte 0x0f, 0x03, 0x1b
- .byte 0x31, 0x0c, 0x37
- .byte 0x1e, 0x34, 0x31
- .byte 0x1b, 0x0e, 0x25
- .byte 0x1a, 0x07, 0x34
- .byte 0x0d, 0x3c, 0x33
- .byte 0x00, 0x3a, 0x36
- .byte 0x04, 0x27, 0x12
- .byte 0x23, 0x18, 0x24
- .byte 0x0d, 0x0b, 0x18
- .byte 0x31, 0x32, 0x37
- .byte 0x00, 0x0d, 0x21
- .byte 0x32, 0x10, 0x12
- .byte 0x26, 0x0d, 0x19
- .byte 0x29, 0x24, 0x2b
- .byte 0x3d, 0x21, 0x1f
- .byte 0x1e, 0x1b, 0x28
- .byte 0x0d, 0x12, 0x28
- .byte 0x35, 0x1e, 0x23
- .byte 0x0a, 0x2e, 0x22
- .byte 0x27, 0x27, 0x35
- .byte 0x01, 0x0e, 0x20
- .byte 0x31, 0x39, 0x29
- .byte 0x3b, 0x24, 0x36
- .byte 0x14, 0x10, 0x33
- .byte 0x18, 0x2c, 0x26
- .byte 0x04, 0x2d, 0x15
- .byte 0x1a, 0x11, 0x37
- .byte 0x0f, 0x0b, 0x14
- .byte 0x0e, 0x2c, 0x2c
- .byte 0x21, 0x17, 0x2c
- .byte 0x16, 0x21, 0x35
- .byte 0x3e, 0x10, 0x10
- .byte 0x0a, 0x05, 0x1e
- .byte 0x3b, 0x09, 0x13
- .byte 0x26, 0x18, 0x1e
- .byte 0x23, 0x0c, 0x1a
- .byte 0x33, 0x37, 0x1f
- .byte 0x09, 0x12, 0x35
- .byte 0x3d, 0x0d, 0x15
- .byte 0x36, 0x06, 0x24
- .byte 0x33, 0x30, 0x29
- .byte 0x3b, 0x0f, 0x28
- .byte 0x34, 0x2a, 0x2c
- .byte 0x02, 0x12, 0x35
- .byte 0x09, 0x22, 0x31
- .byte 0x3b, 0x31, 0x1c
- .byte 0x33, 0x22, 0x27
- .byte 0x3d, 0x34, 0x15
- .byte 0x14, 0x22, 0x28
- .byte 0x28, 0x10, 0x1e
- .byte 0x21, 0x31, 0x10
- .byte 0x2d, 0x16, 0x21
- .byte 0x1e, 0x05, 0x33
- .byte 0x0f, 0x30, 0x31
- .byte 0x0e, 0x1a, 0x35
- .byte 0x38, 0x2e, 0x28
- .byte 0x26, 0x37, 0x1e
- .byte 0x2b, 0x13, 0x33
- .byte 0x1f, 0x1e, 0x37
- .byte 0x0a, 0x28, 0x24
- .byte 0x32, 0x1c, 0x1a
- .byte 0x1f, 0x3f, 0x19
- .byte 0x39, 0x39, 0x29
- .byte 0x2c, 0x1b, 0x14
- .byte 0x15, 0x2a, 0x17
- .byte 0x32, 0x0f, 0x21
- .byte 0x30, 0x21, 0x18
- .byte 0x23, 0x2a, 0x27
- .byte 0x3d, 0x07, 0x10
- .byte 0x0b, 0x3f, 0x2f
- .byte 0x31, 0x02, 0x2e
- .byte 0x08, 0x39, 0x2f
- .byte 0x3f, 0x20, 0x18
- .byte 0x2d, 0x34, 0x11
- .byte 0x2e, 0x34, 0x10
- .byte 0x26, 0x12, 0x23
- .byte 0x25, 0x0a, 0x37
- .byte 0x34, 0x09, 0x25
- .byte 0x0a, 0x3e, 0x16
- .byte 0x1a, 0x17, 0x11
- .byte 0x38, 0x1c, 0x20
- .byte 0x11, 0x21, 0x26
- .byte 0x05, 0x0f, 0x18
- .byte 0x26, 0x2b, 0x32
- .byte 0x0a, 0x0c, 0x16
- .byte 0x03, 0x29, 0x1d
- .byte 0x29, 0x3b, 0x23
- .byte 0x16, 0x1b, 0x29
- .byte 0x07, 0x09, 0x17
- .byte 0x17, 0x2c, 0x1c
- .byte 0x35, 0x33, 0x30
- .byte 0x17, 0x12, 0x1e
- .byte 0x3d, 0x1a, 0x2b
- .byte 0x21, 0x1d, 0x10
- .byte 0x0a, 0x08, 0x17
- .byte 0x14, 0x3c, 0x36
- .byte 0x28, 0x36, 0x36
- .byte 0x3b, 0x20, 0x1b
- .byte 0x13, 0x22, 0x1d
- .byte 0x13, 0x3a, 0x15
- .byte 0x02, 0x23, 0x2c
- .byte 0x3e, 0x19, 0x14
- .byte 0x39, 0x3c, 0x1a
- .byte 0x10, 0x08, 0x1e
- .byte 0x0a, 0x13, 0x29
- .byte 0x3f, 0x38, 0x2c
- .byte 0x07, 0x23, 0x1f
- .byte 0x19, 0x2a, 0x24
- .byte 0x14, 0x3c, 0x1f
- .byte 0x0d, 0x04, 0x37
- .byte 0x1a, 0x2f, 0x28
- .byte 0x2a, 0x1d, 0x1e
- .byte 0x11, 0x37, 0x29
- .byte 0x28, 0x27, 0x12
- .byte 0x0d, 0x00, 0x26
- .byte 0x0a, 0x3c, 0x26
- .byte 0x1f, 0x1c, 0x33
- .byte 0x04, 0x3a, 0x2c
- .byte 0x24, 0x3d, 0x2b
- .byte 0x26, 0x31, 0x2f
- .byte 0x13, 0x1c, 0x21
- .byte 0x3e, 0x12, 0x23
- .byte 0x36, 0x0a, 0x1a
- .byte 0x2d, 0x1e, 0x19
- .byte 0x05, 0x1f, 0x1b
- .byte 0x1e, 0x0a, 0x1f
- .byte 0x20, 0x08, 0x24
- .byte 0x2c, 0x0c, 0x33
- .byte 0x1d, 0x1f, 0x11
- .byte 0x0e, 0x12, 0x10
- .byte 0x27, 0x12, 0x19
- .byte 0x2a, 0x13, 0x31
- .byte 0x1c, 0x04, 0x30
- .byte 0x1a, 0x38, 0x1f
- .byte 0x2c, 0x35, 0x25
- .byte 0x07, 0x0b, 0x33
- .byte 0x2d, 0x02, 0x1a
- .byte 0x2a, 0x35, 0x35
- .byte 0x16, 0x2f, 0x14
- .byte 0x11, 0x31, 0x33
- .byte 0x2c, 0x31, 0x1e
- .byte 0x3c, 0x3a, 0x27
- .byte 0x3c, 0x2b, 0x12
- .byte 0x27, 0x1d, 0x12
- .byte 0x36, 0x2c, 0x2b
- .byte 0x25, 0x3b, 0x35
- .byte 0x12, 0x3d, 0x27
- .byte 0x13, 0x23, 0x19
- .byte 0x33, 0x2c, 0x26
- .byte 0x09, 0x3c, 0x12
- .byte 0x15, 0x1a, 0x23
- .byte 0x21, 0x07, 0x1a
- .byte 0x22, 0x25, 0x20
- .byte 0x19, 0x1b, 0x2c
- .byte 0x3a, 0x19, 0x35
- .byte 0x05, 0x26, 0x1d
- .byte 0x23, 0x22, 0x25
- .byte 0x0e, 0x1e, 0x11
- .byte 0x13, 0x30, 0x12
- .byte 0x2c, 0x22, 0x25
- .byte 0x0a, 0x1d, 0x18
- .byte 0x23, 0x3e, 0x1d
- .byte 0x02, 0x28, 0x25
- .byte 0x21, 0x0e, 0x20
- .byte 0x21, 0x22, 0x37
- .byte 0x18, 0x33, 0x27
- .byte 0x23, 0x23, 0x31
- .byte 0x24, 0x1a, 0x1a
- .byte 0x3e, 0x25, 0x24
- .byte 0x24, 0x01, 0x18
- .byte 0x34, 0x10, 0x22
- .byte 0x07, 0x00, 0x37
- .byte 0x06, 0x20, 0x20
- .byte 0x3a, 0x02, 0x2b
- .byte 0x07, 0x2c, 0x2c
- .byte 0x09, 0x2f, 0x2a
- .byte 0x01, 0x32, 0x2c
- .byte 0x00, 0x35, 0x13
- .byte 0x2b, 0x3c, 0x1f
- .byte 0x36, 0x37, 0x1e
- .byte 0x20, 0x35, 0x1d
- .byte 0x0c, 0x07, 0x33
- .byte 0x16, 0x08, 0x12
- .byte 0x3f, 0x36, 0x11
- .byte 0x0b, 0x1f, 0x2d
- .byte 0x21, 0x20, 0x33
- .byte 0x17, 0x1a, 0x2e
- .byte 0x16, 0x01, 0x2f
- .byte 0x2f, 0x1c, 0x34
- .byte 0x29, 0x31, 0x2e
- .byte 0x3b, 0x38, 0x31
- .byte 0x0d, 0x16, 0x12
- .byte 0x07, 0x29, 0x24
- .byte 0x33, 0x3c, 0x34
- .byte 0x3e, 0x1e, 0x18
- .byte 0x30, 0x02, 0x34
- .byte 0x2a, 0x34, 0x1b
- .byte 0x2e, 0x23, 0x18
- .byte 0x34, 0x00, 0x1f
- .byte 0x20, 0x0e, 0x28
- .byte 0x15, 0x33, 0x37
- .byte 0x27, 0x35, 0x23
- .byte 0x37, 0x3e, 0x11
- .byte 0x32, 0x2e, 0x36
- .byte 0x3a, 0x02, 0x2b
- .byte 0x00, 0x36, 0x1d
- .byte 0x13, 0x29, 0x16
- .byte 0x08, 0x2b, 0x37
- .byte 0x08, 0x02, 0x27
- .byte 0x32, 0x2d, 0x34
- .byte 0x30, 0x36, 0x29
- .byte 0x2e, 0x10, 0x12
- .byte 0x3c, 0x2e, 0x2a
- .byte 0x04, 0x33, 0x30
- .byte 0x3f, 0x01, 0x22
- .byte 0x37, 0x14, 0x1d
- .byte 0x27, 0x00, 0x2f
- .byte 0x0c, 0x39, 0x26
- .byte 0x27, 0x04, 0x21
- .byte 0x19, 0x08, 0x1d
- .byte 0x01, 0x04, 0x1e
- .byte 0x27, 0x1b, 0x2b
- .byte 0x31, 0x17, 0x1f
- .byte 0x07, 0x01, 0x2d
- .byte 0x2e, 0x3b, 0x1f
- .byte 0x34, 0x24, 0x31
- .byte 0x32, 0x2b, 0x24
- .byte 0x0e, 0x07, 0x1e
- .byte 0x0f, 0x33, 0x10
- .byte 0x16, 0x21, 0x32
- .byte 0x39, 0x02, 0x1a
- .byte 0x33, 0x3d, 0x22
- .byte 0x0c, 0x25, 0x1a
- .byte 0x29, 0x29, 0x28
- .byte 0x3a, 0x32, 0x26
- .byte 0x0b, 0x13, 0x22
- .byte 0x1f, 0x0f, 0x1c
- .byte 0x04, 0x2c, 0x20
- .byte 0x39, 0x1a, 0x1b
- .byte 0x1a, 0x2a, 0x1f
- .byte 0x24, 0x13, 0x1a
- .byte 0x31, 0x3b, 0x33
- .byte 0x39, 0x23, 0x28
- .byte 0x31, 0x07, 0x31
- .byte 0x1f, 0x10, 0x20
- .byte 0x29, 0x17, 0x32
- .byte 0x26, 0x3b, 0x2d
- .byte 0x02, 0x3c, 0x1c
- .byte 0x0e, 0x00, 0x20
- .byte 0x14, 0x3e, 0x37
- .byte 0x01, 0x0f, 0x2d
- .byte 0x06, 0x12, 0x27
- .byte 0x30, 0x13, 0x19
- .byte 0x00, 0x33, 0x2a
- .byte 0x0c, 0x07, 0x27
- .byte 0x11, 0x3a, 0x1c
- .byte 0x15, 0x0a, 0x13
- .byte 0x1f, 0x0d, 0x2a
- .byte 0x37, 0x07, 0x2a
- .byte 0x34, 0x35, 0x34
- .byte 0x28, 0x16, 0x27
- .byte 0x06, 0x02, 0x36
- .byte 0x09, 0x23, 0x30
- .byte 0x14, 0x02, 0x28
- .byte 0x39, 0x32, 0x34
- .byte 0x24, 0x35, 0x12
- .byte 0x12, 0x22, 0x26
- .byte 0x09, 0x07, 0x33
- .byte 0x0f, 0x3e, 0x1e
- .byte 0x00, 0x3c, 0x33
- .byte 0x10, 0x37, 0x14
- .byte 0x3a, 0x03, 0x25
- .byte 0x2d, 0x1e, 0x24
- .byte 0x36, 0x36, 0x26
- .byte 0x1f, 0x3c, 0x1a
- .byte 0x37, 0x33, 0x25
- .byte 0x23, 0x13, 0x1f
- .byte 0x33, 0x0d, 0x13
- .byte 0x25, 0x30, 0x1e
- .byte 0x17, 0x03, 0x18
- .byte 0x18, 0x18, 0x14
- .byte 0x30, 0x07, 0x22
- .byte 0x3e, 0x33, 0x21
- .byte 0x14, 0x37, 0x16
- .byte 0x16, 0x00, 0x12
- .byte 0x2c, 0x12, 0x2f
- .byte 0x25, 0x3f, 0x1e
- .byte 0x24, 0x19, 0x16
- .byte 0x16, 0x0f, 0x35
- .byte 0x2d, 0x10, 0x11
- .byte 0x24, 0x2a, 0x28
- .byte 0x19, 0x25, 0x2e
- .byte 0x0c, 0x16, 0x1f
- .byte 0x38, 0x21, 0x36
- .byte 0x3d, 0x1a, 0x2f
- .byte 0x3b, 0x32, 0x12
- .byte 0x36, 0x13, 0x29
- .byte 0x0e, 0x30, 0x31
- .byte 0x19, 0x07, 0x2f
- .byte 0x25, 0x23, 0x28
- .byte 0x20, 0x08, 0x29
- .byte 0x2a, 0x00, 0x30
- .byte 0x30, 0x38, 0x23
- .byte 0x1e, 0x0f, 0x1f
- .byte 0x3b, 0x1b, 0x30
- .byte 0x3a, 0x37, 0x2f
- .byte 0x39, 0x37, 0x35
- .byte 0x39, 0x2d, 0x2f
- .byte 0x1f, 0x2e, 0x1e
- .byte 0x1a, 0x2b, 0x1e
- .byte 0x14, 0x17, 0x20
- .byte 0x2f, 0x03, 0x11
- .byte 0x1d, 0x00, 0x30
- .byte 0x17, 0x2b, 0x1d
- .byte 0x35, 0x28, 0x25
- .byte 0x3b, 0x0f, 0x11
- .byte 0x09, 0x04, 0x2e
- .byte 0x23, 0x11, 0x1e
- .byte 0x13, 0x37, 0x1e
- .byte 0x37, 0x37, 0x1e
- .byte 0x07, 0x01, 0x32
- .byte 0x14, 0x06, 0x32
- .byte 0x11, 0x0c, 0x2e
- .byte 0x36, 0x2e, 0x24
- .byte 0x15, 0x2a, 0x1c
- .byte 0x22, 0x15, 0x34
- .byte 0x2c, 0x1e, 0x35
- .byte 0x22, 0x27, 0x33
- .byte 0x19, 0x3f, 0x2d
- .byte 0x21, 0x33, 0x15
- .byte 0x26, 0x1a, 0x11
- .byte 0x16, 0x3e, 0x12
- .byte 0x2b, 0x24, 0x15
- .byte 0x3c, 0x0f, 0x2d
- .byte 0x31, 0x15, 0x36
- .byte 0x3f, 0x24, 0x1d
- .byte 0x25, 0x01, 0x37
- .byte 0x33, 0x16, 0x1a
- .byte 0x1f, 0x0e, 0x10
- .byte 0x2f, 0x0b, 0x12
- .byte 0x2a, 0x1a, 0x25
- .byte 0x17, 0x0a, 0x35
- .byte 0x09, 0x28, 0x35
- .byte 0x02, 0x13, 0x36
- .byte 0x34, 0x2f, 0x17
- .byte 0x03, 0x04, 0x31
- .byte 0x3e, 0x26, 0x11
- .byte 0x35, 0x33, 0x31
- .byte 0x22, 0x17, 0x23
- .byte 0x1d, 0x05, 0x2b
- .byte 0x2e, 0x27, 0x20
- .byte 0x03, 0x2b, 0x1d
- .byte 0x01, 0x19, 0x1e
- .byte 0x0e, 0x05, 0x18
- .byte 0x16, 0x25, 0x17
- .byte 0x02, 0x28, 0x18
- .byte 0x19, 0x0b, 0x24
- .byte 0x3e, 0x35, 0x16
- .byte 0x2e, 0x29, 0x25
- .byte 0x3e, 0x38, 0x1e
- .byte 0x3a, 0x2f, 0x12
- .byte 0x14, 0x17, 0x2d
- .byte 0x11, 0x12, 0x30
- .byte 0x15, 0x31, 0x18
- .byte 0x08, 0x0b, 0x29
- .byte 0x2d, 0x00, 0x33
- .byte 0x2c, 0x06, 0x1a
- .byte 0x14, 0x1c, 0x2e
- .byte 0x04, 0x08, 0x12
- .byte 0x1b, 0x2b, 0x2d
- .byte 0x2a, 0x37, 0x33
- .byte 0x10, 0x27, 0x2c
- .byte 0x1d, 0x0e, 0x34
- .byte 0x20, 0x02, 0x12
- .byte 0x1e, 0x1a, 0x2e
- .byte 0x07, 0x0b, 0x10
- .byte 0x36, 0x1e, 0x33
- .byte 0x2b, 0x28, 0x1b
- .byte 0x31, 0x25, 0x1f
- .byte 0x38, 0x3a, 0x2f
- .byte 0x39, 0x30, 0x2f
- .byte 0x12, 0x09, 0x14
- .byte 0x0e, 0x08, 0x19
- .byte 0x00, 0x0d, 0x2c
- .byte 0x1b, 0x0e, 0x34
- .byte 0x11, 0x25, 0x15
- .byte 0x0c, 0x2d, 0x26
- .byte 0x36, 0x2c, 0x16
- .byte 0x31, 0x31, 0x2c
- .byte 0x03, 0x1a, 0x16
- .byte 0x1c, 0x32, 0x14
- .byte 0x0a, 0x3e, 0x36
- .byte 0x33, 0x1b, 0x27
- .byte 0x1f, 0x32, 0x18
- .byte 0x33, 0x26, 0x33
- .byte 0x1a, 0x13, 0x1a
- .byte 0x0f, 0x34, 0x1c
- .byte 0x35, 0x2c, 0x2f
- .byte 0x38, 0x03, 0x18
- .byte 0x15, 0x0f, 0x27
- .byte 0x31, 0x29, 0x20
- .byte 0x28, 0x0e, 0x28
- .byte 0x31, 0x2c, 0x2e
- .byte 0x15, 0x19, 0x1b
- .byte 0x10, 0x03, 0x2f
- .byte 0x2e, 0x2a, 0x32
- .byte 0x2a, 0x27, 0x1b
- .byte 0x36, 0x04, 0x1e
- .byte 0x3b, 0x04, 0x21
- .byte 0x07, 0x2f, 0x19
- .byte 0x27, 0x1d, 0x1d
- .byte 0x3c, 0x3d, 0x2e
- .byte 0x25, 0x08, 0x32
- .byte 0x3b, 0x34, 0x2a
- .byte 0x0c, 0x10, 0x13
- .byte 0x25, 0x35, 0x1a
- .byte 0x2f, 0x19, 0x28
- .byte 0x17, 0x00, 0x2b
- .byte 0x0a, 0x1c, 0x17
- .byte 0x0a, 0x11, 0x1b
- .byte 0x35, 0x13, 0x37
- .byte 0x29, 0x1c, 0x28
- .byte 0x0c, 0x31, 0x35
- .byte 0x3c, 0x10, 0x1a
- .byte 0x1b, 0x3a, 0x2d
- .byte 0x3a, 0x1c, 0x18
- .byte 0x22, 0x10, 0x2d
- .byte 0x1c, 0x3c, 0x12
- .byte 0x17, 0x18, 0x2a
- .byte 0x0b, 0x2b, 0x2f
- .byte 0x2d, 0x04, 0x2e
- .byte 0x3c, 0x13, 0x23
- .byte 0x01, 0x1c, 0x2e
- .byte 0x14, 0x16, 0x22
- .byte 0x0c, 0x24, 0x13
- .byte 0x35, 0x37, 0x34
- .byte 0x1b, 0x30, 0x1e
- .byte 0x3a, 0x1c, 0x20
- .byte 0x06, 0x06, 0x36
- .byte 0x09, 0x15, 0x1a
- .byte 0x1b, 0x1a, 0x27
- .byte 0x0f, 0x33, 0x35
- .byte 0x37, 0x06, 0x23
- .byte 0x3a, 0x12, 0x1d
- .byte 0x00, 0x16, 0x29
- .byte 0x0e, 0x1d, 0x35
- .byte 0x3f, 0x38, 0x16
- .byte 0x2a, 0x3c, 0x34
- .byte 0x13, 0x32, 0x10
- .byte 0x17, 0x2c, 0x37
- .byte 0x29, 0x2a, 0x1e
- .byte 0x35, 0x2f, 0x2d
- .byte 0x3c, 0x2a, 0x11
- .byte 0x28, 0x13, 0x21
- .byte 0x19, 0x1e, 0x34
- .byte 0x0c, 0x06, 0x2d
- .byte 0x09, 0x04, 0x1c
- .byte 0x1d, 0x2f, 0x26
- .byte 0x39, 0x07, 0x16
- .byte 0x14, 0x04, 0x2d
- .byte 0x3a, 0x2f, 0x2e
- .byte 0x29, 0x15, 0x35
- .byte 0x24, 0x02, 0x36
- .byte 0x3f, 0x02, 0x1a
- .byte 0x0f, 0x18, 0x24
- .byte 0x16, 0x1d, 0x19
- .byte 0x14, 0x16, 0x10
- .byte 0x29, 0x1b, 0x13
- .byte 0x15, 0x0e, 0x19
- .byte 0x3a, 0x2e, 0x2b
- .byte 0x08, 0x30, 0x15
- .byte 0x35, 0x16, 0x30
- .byte 0x2e, 0x18, 0x35
- .byte 0x3b, 0x0b, 0x1c
- .byte 0x3a, 0x18, 0x13
- .byte 0x29, 0x13, 0x1e
- .byte 0x20, 0x13, 0x27
- .byte 0x04, 0x1d, 0x34
- .byte 0x00, 0x38, 0x19
- .byte 0x08, 0x39, 0x32
- .byte 0x20, 0x10, 0x26
- .byte 0x08, 0x02, 0x28
- .byte 0x3f, 0x0f, 0x16
- .byte 0x30, 0x1f, 0x19
- .byte 0x20, 0x2d, 0x10
- .byte 0x38, 0x17, 0x1c
- .byte 0x18, 0x31, 0x27
- .byte 0x33, 0x38, 0x30
- .byte 0x16, 0x33, 0x23
- .byte 0x00, 0x01, 0x36
- .byte 0x0d, 0x02, 0x23
- .byte 0x39, 0x04, 0x1f
- .byte 0x0e, 0x30, 0x24
- .byte 0x06, 0x01, 0x2c
- .byte 0x34, 0x33, 0x35
- .byte 0x16, 0x34, 0x2e
- .byte 0x32, 0x16, 0x24
- .byte 0x26, 0x39, 0x34
- .byte 0x1f, 0x3c, 0x1d
- .byte 0x28, 0x1d, 0x37
- .byte 0x17, 0x15, 0x2b
- .byte 0x27, 0x39, 0x30
- .byte 0x0b, 0x1b, 0x18
- .byte 0x35, 0x20, 0x2d
- .byte 0x0b, 0x35, 0x1c
- .byte 0x03, 0x0e, 0x21
- .byte 0x06, 0x0c, 0x20
- .byte 0x02, 0x18, 0x34
- .byte 0x1e, 0x36, 0x2d
- .byte 0x16, 0x0c, 0x19
- .byte 0x25, 0x09, 0x2c
- .byte 0x37, 0x05, 0x2e
- .byte 0x2e, 0x2b, 0x2c
- .byte 0x24, 0x1a, 0x14
- .byte 0x27, 0x04, 0x10
- .byte 0x32, 0x38, 0x33
- .byte 0x37, 0x15, 0x35
- .byte 0x11, 0x3f, 0x1d
- .byte 0x23, 0x23, 0x1f
- .byte 0x29, 0x3f, 0x1d
- .byte 0x1a, 0x3c, 0x2b
- .byte 0x1b, 0x2c, 0x2c
- .byte 0x38, 0x3b, 0x36
- .byte 0x04, 0x13, 0x33
- .byte 0x2c, 0x14, 0x12
- .byte 0x1a, 0x09, 0x1b
- .byte 0x36, 0x11, 0x24
- .byte 0x3a, 0x3f, 0x11
- .byte 0x01, 0x0e, 0x2b
- .byte 0x3b, 0x03, 0x2a
- .byte 0x08, 0x0d, 0x2b
- .byte 0x2b, 0x13, 0x27
- .byte 0x3a, 0x3c, 0x1c
- .byte 0x3a, 0x15, 0x2a
- .byte 0x24, 0x00, 0x17
- .byte 0x3e, 0x0a, 0x15
- .byte 0x0c, 0x29, 0x2d
- .byte 0x1f, 0x15, 0x30
- .byte 0x35, 0x18, 0x19
- .byte 0x3d, 0x37, 0x37
- .byte 0x12, 0x38, 0x1b
- .byte 0x3b, 0x02, 0x20
- .byte 0x08, 0x21, 0x19
- .byte 0x2e, 0x36, 0x1d
- .byte 0x15, 0x3d, 0x24
- .byte 0x22, 0x0c, 0x27
- .byte 0x36, 0x3f, 0x33
- .byte 0x33, 0x12, 0x11
- .byte 0x1a, 0x19, 0x1f
- .byte 0x2b, 0x24, 0x12
- .byte 0x11, 0x2a, 0x18
- .byte 0x25, 0x32, 0x2a
- .byte 0x2c, 0x1a, 0x12
- .byte 0x26, 0x06, 0x10
- .byte 0x11, 0x29, 0x33
- .byte 0x2c, 0x09, 0x14
- .byte 0x2b, 0x12, 0x2b
- .byte 0x1d, 0x03, 0x24
- .byte 0x00, 0x12, 0x15
- .byte 0x22, 0x3d, 0x26
- .byte 0x15, 0x37, 0x1a
- .byte 0x0f, 0x12, 0x37
- .byte 0x24, 0x01, 0x18
- .byte 0x2a, 0x17, 0x13
- .byte 0x14, 0x3b, 0x29
- .byte 0x2a, 0x19, 0x32
- .byte 0x2d, 0x17, 0x17
- .byte 0x0b, 0x2c, 0x33
- .byte 0x07, 0x2d, 0x34
- .byte 0x07, 0x38, 0x1d
- .byte 0x1f, 0x36, 0x22
- .byte 0x11, 0x0a, 0x17
- .byte 0x14, 0x11, 0x13
- .byte 0x2a, 0x17, 0x25
- .byte 0x01, 0x3a, 0x1c
- .byte 0x26, 0x27, 0x30
- .byte 0x2d, 0x3b, 0x35
- .byte 0x3a, 0x30, 0x34
- .byte 0x06, 0x3a, 0x1c
- .byte 0x2d, 0x05, 0x13
- .byte 0x21, 0x32, 0x12
- .byte 0x3e, 0x1e, 0x2c
- .byte 0x3a, 0x3f, 0x2d
- .byte 0x20, 0x2a, 0x34
- .byte 0x26, 0x03, 0x1a
- .byte 0x19, 0x27, 0x2e
- .byte 0x31, 0x04, 0x26
- .byte 0x2a, 0x3f, 0x30
- .byte 0x25, 0x23, 0x2a
- .byte 0x08, 0x08, 0x35
- .byte 0x2c, 0x30, 0x1e
- .byte 0x08, 0x05, 0x18
- .byte 0x06, 0x09, 0x2d
- .byte 0x19, 0x00, 0x27
- .byte 0x0d, 0x10, 0x19
- .byte 0x1c, 0x00, 0x13
- .byte 0x3d, 0x0b, 0x24
- .byte 0x2e, 0x1f, 0x16
- .byte 0x3d, 0x18, 0x34
- .byte 0x12, 0x1e, 0x15
- .byte 0x15, 0x39, 0x25
- .byte 0x33, 0x0f, 0x17
- .byte 0x1a, 0x1c, 0x1b
- .byte 0x37, 0x29, 0x1b
- .byte 0x3b, 0x38, 0x12
- .byte 0x1d, 0x22, 0x34
- .byte 0x26, 0x0a, 0x31
- .byte 0x16, 0x2d, 0x13
- .byte 0x0d, 0x20, 0x27
- .byte 0x24, 0x1d, 0x16
- .byte 0x2e, 0x2b, 0x18
- .byte 0x16, 0x2a, 0x1b
- .byte 0x24, 0x17, 0x36
- .byte 0x02, 0x05, 0x2b
- .byte 0x37, 0x1a, 0x17
- .byte 0x11, 0x3d, 0x2c
- .byte 0x1e, 0x2f, 0x22
- .byte 0x2c, 0x29, 0x1a
- .byte 0x2f, 0x04, 0x25
- .byte 0x36, 0x0c, 0x35
- .byte 0x30, 0x3e, 0x12
- .byte 0x11, 0x30, 0x37
- .byte 0x12, 0x21, 0x2e
- .byte 0x21, 0x30, 0x17
- .byte 0x2c, 0x3d, 0x24
- .byte 0x11, 0x23, 0x14
- .byte 0x1a, 0x32, 0x17
- .byte 0x39, 0x27, 0x18
- .byte 0x0f, 0x24, 0x19
- .byte 0x00, 0x3d, 0x37
- .byte 0x2c, 0x3c, 0x1c
- .byte 0x0b, 0x39, 0x23
- .byte 0x0e, 0x04, 0x1f
- .byte 0x1c, 0x31, 0x14
- .byte 0x00, 0x04, 0x15
- .byte 0x26, 0x2a, 0x2a
- .byte 0x20, 0x25, 0x2a
- .byte 0x0b, 0x3c, 0x33
- .byte 0x11, 0x0b, 0x2e
- .byte 0x37, 0x22, 0x2e
- .byte 0x0e, 0x22, 0x26
- .byte 0x18, 0x2d, 0x27
- .byte 0x06, 0x0c, 0x1c
- .byte 0x26, 0x18, 0x2f
- .byte 0x3a, 0x01, 0x2a
- .byte 0x2f, 0x31, 0x34
- .byte 0x1f, 0x34, 0x1a
- .byte 0x31, 0x05, 0x10
- .byte 0x2e, 0x17, 0x34
- .byte 0x18, 0x22, 0x23
- .byte 0x23, 0x21, 0x32
- .byte 0x07, 0x08, 0x22
- .byte 0x26, 0x1c, 0x22
- .byte 0x31, 0x12, 0x2f
- .byte 0x08, 0x1f, 0x10
- .byte 0x27, 0x15, 0x2a
- .byte 0x1f, 0x0b, 0x26
- .byte 0x2f, 0x14, 0x35
- .byte 0x24, 0x1f, 0x26
- .byte 0x3b, 0x23, 0x33
- .byte 0x20, 0x3e, 0x2d
- .byte 0x17, 0x0c, 0x15
- .byte 0x13, 0x39, 0x1a
- .byte 0x30, 0x14, 0x25
- .byte 0x09, 0x07, 0x17
- .byte 0x38, 0x38, 0x1f
- .byte 0x29, 0x24, 0x27
- .byte 0x17, 0x27, 0x28
- .byte 0x1b, 0x12, 0x2a
- .byte 0x2b, 0x3d, 0x2d
- .byte 0x19, 0x34, 0x1c
- .byte 0x01, 0x1d, 0x10
- .byte 0x08, 0x39, 0x11
- .byte 0x0e, 0x36, 0x1b
- .byte 0x26, 0x13, 0x10
- .byte 0x16, 0x28, 0x1e
- .byte 0x3c, 0x28, 0x17
- .byte 0x3e, 0x39, 0x34
- .byte 0x0a, 0x03, 0x2e
- .byte 0x37, 0x1a, 0x13
- .byte 0x2b, 0x33, 0x26
- .byte 0x13, 0x2c, 0x21
- .byte 0x25, 0x14, 0x10
- .byte 0x16, 0x0b, 0x35
- .byte 0x1d, 0x35, 0x33
- .byte 0x21, 0x08, 0x33
- .byte 0x28, 0x21, 0x1a
- .byte 0x12, 0x0c, 0x1b
- .byte 0x36, 0x2a, 0x19
- .byte 0x2c, 0x2b, 0x23
- .byte 0x01, 0x0f, 0x26
- .byte 0x17, 0x0c, 0x18
- .byte 0x09, 0x0f, 0x11
- .byte 0x2b, 0x24, 0x1c
- .byte 0x09, 0x09, 0x15
- .byte 0x36, 0x08, 0x13
- .byte 0x20, 0x39, 0x21
- .byte 0x00, 0x3a, 0x1f
- .byte 0x2b, 0x36, 0x31
- .byte 0x02, 0x37, 0x13
- .byte 0x04, 0x34, 0x35
- .byte 0x37, 0x3d, 0x1a
- .byte 0x17, 0x3d, 0x13
- .byte 0x2b, 0x36, 0x2f
- .byte 0x13, 0x1e, 0x13
- .byte 0x3e, 0x11, 0x33
- .byte 0x27, 0x3a, 0x2d
- .byte 0x1e, 0x31, 0x1a
- .byte 0x03, 0x03, 0x2d
- .byte 0x25, 0x37, 0x1f
- .byte 0x11, 0x01, 0x22
- .byte 0x1c, 0x12, 0x17
- .byte 0x30, 0x3a, 0x30
- .byte 0x17, 0x1d, 0x29
- .byte 0x0e, 0x13, 0x27
- .byte 0x1a, 0x2e, 0x24
- .byte 0x2d, 0x00, 0x1c
- .byte 0x17, 0x28, 0x1d
- .byte 0x09, 0x1f, 0x2e
- .byte 0x1a, 0x2d, 0x26
- .byte 0x0a, 0x13, 0x32
- .byte 0x3e, 0x00, 0x27
- .byte 0x0b, 0x3b, 0x30
- .byte 0x08, 0x3a, 0x2d
- .byte 0x22, 0x12, 0x1e
- .byte 0x34, 0x1d, 0x2b
- .byte 0x26, 0x22, 0x35
- .byte 0x17, 0x2c, 0x17
- .byte 0x29, 0x13, 0x2d
- .byte 0x2d, 0x10, 0x10
- .byte 0x20, 0x31, 0x23
- .byte 0x1e, 0x33, 0x18
- .byte 0x33, 0x06, 0x2d
- .byte 0x26, 0x14, 0x27
- .byte 0x22, 0x1d, 0x2a
- .byte 0x2d, 0x06, 0x18
- .byte 0x07, 0x09, 0x2e
- .byte 0x21, 0x15, 0x2e
- .byte 0x21, 0x38, 0x23
- .byte 0x35, 0x0b, 0x34
- .byte 0x24, 0x0b, 0x22
- .byte 0x1e, 0x01, 0x17
- .byte 0x0b, 0x24, 0x11
- .byte 0x17, 0x07, 0x20
- .byte 0x14, 0x25, 0x32
- .byte 0x1a, 0x0e, 0x2f
- .byte 0x35, 0x17, 0x1f
- .byte 0x0c, 0x08, 0x21
- .byte 0x30, 0x35, 0x1f
- .byte 0x0c, 0x0b, 0x20
- .byte 0x04, 0x10, 0x11
- .byte 0x35, 0x11, 0x1e
- .byte 0x33, 0x3d, 0x16
- .byte 0x1e, 0x2b, 0x1d
- .byte 0x1a, 0x19, 0x10
- .byte 0x04, 0x06, 0x22
- .byte 0x03, 0x3d, 0x24
- .byte 0x2a, 0x0e, 0x35
- .byte 0x03, 0x3e, 0x17
- .byte 0x0b, 0x18, 0x36
- .byte 0x3d, 0x0d, 0x26
- .byte 0x35, 0x12, 0x20
- .byte 0x1f, 0x0d, 0x16
- .byte 0x23, 0x32, 0x1a
- .byte 0x00, 0x3d, 0x26
- .byte 0x30, 0x19, 0x36
- .byte 0x12, 0x0e, 0x23
- .byte 0x01, 0x23, 0x28
- .byte 0x3b, 0x31, 0x11
- .byte 0x2d, 0x1c, 0x36
- .byte 0x2a, 0x05, 0x16
- .byte 0x14, 0x0e, 0x30
- .byte 0x3a, 0x37, 0x19
- .byte 0x1f, 0x30, 0x25
- .byte 0x10, 0x26, 0x2f
- .byte 0x22, 0x11, 0x1f
- .byte 0x2e, 0x2b, 0x1e
- .byte 0x16, 0x16, 0x21
- .byte 0x32, 0x18, 0x35
- .byte 0x23, 0x32, 0x1a
- .byte 0x3d, 0x0d, 0x19
- .byte 0x39, 0x09, 0x23
- .byte 0x30, 0x2e, 0x24
- .byte 0x1e, 0x0f, 0x24
- .byte 0x09, 0x21, 0x31
- .byte 0x05, 0x03, 0x11
- .byte 0x05, 0x22, 0x2a
- .byte 0x03, 0x07, 0x37
- .byte 0x04, 0x08, 0x13
- .byte 0x05, 0x10, 0x34
- .byte 0x37, 0x14, 0x29
- .byte 0x0a, 0x24, 0x32
- .byte 0x34, 0x1e, 0x1b
- .byte 0x12, 0x17, 0x2e
- .byte 0x01, 0x02, 0x13
- .byte 0x0a, 0x0c, 0x11
- .byte 0x02, 0x14, 0x13
- .byte 0x0d, 0x25, 0x23
- .byte 0x00, 0x07, 0x1a
- .byte 0x1c, 0x28, 0x35
- .byte 0x08, 0x0e, 0x2c
- .byte 0x1b, 0x3c, 0x15
- .byte 0x1c, 0x19, 0x1d
- .byte 0x32, 0x13, 0x1a
- .byte 0x1c, 0x00, 0x37
- .byte 0x22, 0x1b, 0x35
- .byte 0x39, 0x3e, 0x14
- .byte 0x32, 0x06, 0x31
- .byte 0x17, 0x05, 0x2b
- .byte 0x01, 0x0f, 0x20
- .byte 0x1e, 0x0f, 0x34
- .byte 0x18, 0x03, 0x1f
- .byte 0x2b, 0x00, 0x14
- .byte 0x15, 0x3a, 0x30
- .byte 0x25, 0x30, 0x21
- .byte 0x0b, 0x00, 0x37
- .byte 0x24, 0x37, 0x1d
- .byte 0x29, 0x21, 0x16
- .byte 0x24, 0x0f, 0x2c
- .byte 0x3e, 0x15, 0x36
- .byte 0x3c, 0x2d, 0x23
- .byte 0x3d, 0x3c, 0x17
- .byte 0x1a, 0x1c, 0x13
- .byte 0x0a, 0x29, 0x22
- .byte 0x25, 0x3f, 0x26
- .byte 0x3b, 0x39, 0x2f
- .byte 0x1d, 0x08, 0x16
- .byte 0x0b, 0x19, 0x14
- .byte 0x12, 0x01, 0x2c
- .byte 0x35, 0x11, 0x2a
- .byte 0x02, 0x00, 0x13
- .byte 0x39, 0x2a, 0x35
- .byte 0x07, 0x1a, 0x11
- .byte 0x24, 0x0e, 0x1e
- .byte 0x0e, 0x2c, 0x15
- .byte 0x08, 0x31, 0x1b
- .byte 0x21, 0x1d, 0x26
- .byte 0x1d, 0x1c, 0x2a
- .byte 0x1d, 0x24, 0x13
- .byte 0x01, 0x00, 0x18
- .byte 0x28, 0x2a, 0x37
- .byte 0x15, 0x0f, 0x13
- .byte 0x10, 0x32, 0x36
- .byte 0x22, 0x13, 0x31
- .byte 0x13, 0x05, 0x1e
- .byte 0x17, 0x35, 0x35
- .byte 0x3b, 0x0e, 0x24
- .byte 0x35, 0x3a, 0x1d
- .byte 0x1b, 0x36, 0x1b
- .byte 0x03, 0x1d, 0x24
- .byte 0x0f, 0x16, 0x30
- .byte 0x2d, 0x09, 0x25
- .byte 0x05, 0x21, 0x13
- .byte 0x0a, 0x27, 0x36
- .byte 0x04, 0x0d, 0x1c
- .byte 0x06, 0x3e, 0x21
- .byte 0x2a, 0x27, 0x33
- .byte 0x28, 0x0e, 0x15
- .byte 0x0b, 0x17, 0x1d
- .byte 0x1d, 0x32, 0x2d
- .byte 0x08, 0x3d, 0x29
- .byte 0x21, 0x32, 0x17
- .byte 0x33, 0x31, 0x22
- .byte 0x0e, 0x03, 0x21
- .byte 0x0d, 0x0b, 0x16
- .byte 0x3e, 0x2a, 0x2e
- .byte 0x19, 0x36, 0x2a
- .byte 0x0d, 0x00, 0x14
- .byte 0x22, 0x07, 0x36
- .byte 0x0a, 0x09, 0x15
- .byte 0x14, 0x10, 0x22
- .byte 0x07, 0x16, 0x2c
- .byte 0x36, 0x13, 0x15
- .byte 0x09, 0x2f, 0x1b
- .byte 0x20, 0x3b, 0x2e
- .byte 0x3a, 0x3a, 0x16
- .byte 0x0d, 0x15, 0x2a
- .byte 0x39, 0x13, 0x2b
- .byte 0x0b, 0x01, 0x2a
- .byte 0x13, 0x17, 0x1e
- .byte 0x08, 0x17, 0x1e
- .byte 0x0c, 0x0f, 0x34
- .byte 0x1f, 0x31, 0x12
- .byte 0x07, 0x3a, 0x1d
- .byte 0x35, 0x1e, 0x12
- .byte 0x24, 0x2c, 0x15
- .byte 0x0e, 0x21, 0x19
- .byte 0x34, 0x3b, 0x33
- .byte 0x19, 0x0f, 0x28
- .byte 0x10, 0x2f, 0x2e
- .byte 0x23, 0x27, 0x31
- .byte 0x39, 0x2e, 0x18
- .byte 0x3c, 0x3f, 0x24
- .byte 0x07, 0x23, 0x30
- .byte 0x28, 0x13, 0x35
- .byte 0x13, 0x0a, 0x10
- .byte 0x35, 0x19, 0x33
- .byte 0x23, 0x28, 0x29
- .byte 0x13, 0x2f, 0x1a
- .byte 0x3a, 0x19, 0x14
- .byte 0x37, 0x36, 0x26
- .byte 0x20, 0x3b, 0x15
- .byte 0x37, 0x39, 0x10
- .byte 0x3c, 0x21, 0x34
- .byte 0x1c, 0x38, 0x30
- .byte 0x15, 0x07, 0x26
- .byte 0x27, 0x21, 0x19
- .byte 0x18, 0x11, 0x23
- .byte 0x30, 0x28, 0x37
- .byte 0x32, 0x2d, 0x1f
- .byte 0x2c, 0x3f, 0x30
- .byte 0x1d, 0x2f, 0x26
- .byte 0x01, 0x11, 0x1c
- .byte 0x3b, 0x0f, 0x12
- .byte 0x2a, 0x17, 0x27
- .byte 0x05, 0x00, 0x1b
- .byte 0x25, 0x1c, 0x32
- .byte 0x04, 0x22, 0x2d
- .byte 0x10, 0x0f, 0x25
- .byte 0x0d, 0x39, 0x30
- .byte 0x0b, 0x2e, 0x27
- .byte 0x2d, 0x34, 0x15
- .byte 0x3e, 0x30, 0x36
- .byte 0x16, 0x26, 0x2a
- .byte 0x05, 0x3f, 0x2b
- .byte 0x20, 0x3b, 0x2e
- .byte 0x3b, 0x1c, 0x2f
- .byte 0x01, 0x18, 0x16
- .byte 0x16, 0x3d, 0x10
- .byte 0x0a, 0x1f, 0x18
- .byte 0x17, 0x0f, 0x22
- .byte 0x06, 0x13, 0x11
- .byte 0x38, 0x21, 0x17
- .byte 0x17, 0x0a, 0x37
- .byte 0x1c, 0x19, 0x30
- .byte 0x16, 0x38, 0x31
- .byte 0x30, 0x10, 0x36
- .byte 0x31, 0x2f, 0x26
- .byte 0x3c, 0x1b, 0x23
- .byte 0x33, 0x2f, 0x19
- .byte 0x16, 0x35, 0x25
- .byte 0x3a, 0x18, 0x1f
- .byte 0x37, 0x01, 0x1e
- .byte 0x0d, 0x18, 0x12
- .byte 0x1f, 0x1c, 0x1b
- .byte 0x07, 0x34, 0x2d
- .byte 0x0b, 0x3f, 0x33
- .byte 0x1e, 0x34, 0x1d
- .byte 0x2c, 0x13, 0x2c
- .byte 0x20, 0x20, 0x13
- .byte 0x20, 0x0f, 0x31
- .byte 0x08, 0x0f, 0x24
- .byte 0x18, 0x3d, 0x1c
- .byte 0x36, 0x34, 0x27
- .byte 0x33, 0x2a, 0x25
- .byte 0x2d, 0x30, 0x26
- .byte 0x3d, 0x37, 0x26
- .byte 0x25, 0x11, 0x11
- .byte 0x03, 0x05, 0x18
- .byte 0x10, 0x04, 0x29
- .byte 0x07, 0x2e, 0x36
- .byte 0x2a, 0x29, 0x15
- .byte 0x3a, 0x0e, 0x33
- .byte 0x2a, 0x06, 0x29
- .byte 0x3d, 0x01, 0x29
- .byte 0x27, 0x0e, 0x16
- .byte 0x1d, 0x28, 0x1b
- .byte 0x10, 0x33, 0x2b
- .byte 0x0c, 0x14, 0x1d
- .byte 0x15, 0x3f, 0x25
- .byte 0x37, 0x23, 0x1e
- .byte 0x04, 0x2c, 0x1c
- .byte 0x15, 0x34, 0x2a
- .byte 0x09, 0x2f, 0x15
- .byte 0x02, 0x3f, 0x14
- .byte 0x19, 0x2c, 0x33
- .byte 0x39, 0x32, 0x20
- .byte 0x2a, 0x18, 0x32
- .byte 0x17, 0x23, 0x21
- .byte 0x0b, 0x2d, 0x25
- .byte 0x24, 0x3a, 0x2d
- .byte 0x31, 0x3f, 0x34
- .byte 0x18, 0x19, 0x24
- .byte 0x1e, 0x15, 0x1a
- .byte 0x17, 0x33, 0x2b
- .byte 0x23, 0x09, 0x26
- .byte 0x1b, 0x0d, 0x15
- .byte 0x36, 0x26, 0x28
- .byte 0x3a, 0x1c, 0x14
- .byte 0x0c, 0x3e, 0x10
- .byte 0x18, 0x06, 0x35
- .byte 0x37, 0x26, 0x36
- .byte 0x21, 0x26, 0x17
- .byte 0x3d, 0x1c, 0x2c
- .byte 0x16, 0x25, 0x1d
- .byte 0x1e, 0x0b, 0x1e
- .byte 0x1d, 0x0d, 0x32
- .byte 0x08, 0x1f, 0x1b
- .byte 0x12, 0x1c, 0x12
- .byte 0x20, 0x2a, 0x28
- .byte 0x06, 0x3b, 0x35
- .byte 0x39, 0x0e, 0x1e
- .byte 0x31, 0x30, 0x28
- .byte 0x02, 0x21, 0x14
- .byte 0x06, 0x1e, 0x29
- .byte 0x16, 0x09, 0x1c
- .byte 0x27, 0x32, 0x2d
- .byte 0x39, 0x03, 0x27
- .byte 0x29, 0x09, 0x1e
- .byte 0x1b, 0x11, 0x1c
- .byte 0x28, 0x3a, 0x2c
- .byte 0x03, 0x03, 0x18
- .byte 0x23, 0x09, 0x2f
- .byte 0x30, 0x17, 0x23
- .byte 0x0f, 0x25, 0x33
- .byte 0x06, 0x24, 0x37
- .byte 0x22, 0x09, 0x33
- .byte 0x2c, 0x09, 0x2a
- .byte 0x0c, 0x12, 0x2a
- .byte 0x28, 0x20, 0x10
- .byte 0x15, 0x29, 0x33
- .byte 0x0f, 0x1a, 0x13
- .byte 0x13, 0x18, 0x36
- .byte 0x2e, 0x16, 0x13
- .byte 0x3c, 0x1a, 0x15
- .byte 0x3a, 0x11, 0x32
- .byte 0x02, 0x0a, 0x2c
- .byte 0x19, 0x39, 0x11
- .byte 0x31, 0x3e, 0x1d
- .byte 0x32, 0x14, 0x32
- .byte 0x12, 0x2e, 0x34
- .byte 0x3e, 0x36, 0x23
- .byte 0x37, 0x3e, 0x15
- .byte 0x15, 0x35, 0x34
- .byte 0x01, 0x3a, 0x2c
- .byte 0x26, 0x25, 0x22
- .byte 0x01, 0x2b, 0x37
- .byte 0x1c, 0x3d, 0x33
- .byte 0x3e, 0x10, 0x1c
- .byte 0x26, 0x33, 0x19
- .byte 0x05, 0x19, 0x17
- .byte 0x12, 0x38, 0x1c
- .byte 0x15, 0x3c, 0x32
- .byte 0x3f, 0x0f, 0x37
- .byte 0x02, 0x39, 0x32
- .byte 0x13, 0x00, 0x1d
- .byte 0x1d, 0x2c, 0x10
- .byte 0x39, 0x13, 0x31
- .byte 0x0f, 0x37, 0x19
- .byte 0x09, 0x0d, 0x2a
- .byte 0x20, 0x2f, 0x32
- .byte 0x3b, 0x34, 0x22
- .byte 0x26, 0x14, 0x10
- .byte 0x24, 0x3d, 0x22
- .byte 0x0b, 0x31, 0x23
- .byte 0x2f, 0x2d, 0x2a
- .byte 0x30, 0x04, 0x35
- .byte 0x19, 0x20, 0x2a
- .byte 0x16, 0x36, 0x37
- .byte 0x14, 0x28, 0x37
- .byte 0x11, 0x0b, 0x27
- .byte 0x1d, 0x06, 0x29
- .byte 0x35, 0x16, 0x2e
- .byte 0x24, 0x2e, 0x29
- .byte 0x36, 0x14, 0x2a
- .byte 0x21, 0x0c, 0x1f
- .byte 0x3f, 0x39, 0x19
- .byte 0x27, 0x10, 0x2a
- .byte 0x1e, 0x12, 0x34
- .byte 0x10, 0x24, 0x34
- .byte 0x1d, 0x13, 0x1d
- .byte 0x17, 0x16, 0x37
- .byte 0x27, 0x1b, 0x27
- .byte 0x07, 0x24, 0x21
- .byte 0x37, 0x21, 0x11
- .byte 0x37, 0x28, 0x24
- .byte 0x19, 0x02, 0x1c
- .byte 0x14, 0x12, 0x1d
- .byte 0x1b, 0x24, 0x2e
- .byte 0x2e, 0x3a, 0x15
- .byte 0x37, 0x34, 0x21
- .byte 0x33, 0x2d, 0x29
- .byte 0x2f, 0x1e, 0x34
- .byte 0x29, 0x3c, 0x12
- .byte 0x05, 0x15, 0x20
- .byte 0x05, 0x3e, 0x19
- .byte 0x18, 0x0b, 0x30
- .byte 0x2f, 0x02, 0x27
- .byte 0x14, 0x1c, 0x34
- .byte 0x12, 0x20, 0x30
- .byte 0x2b, 0x22, 0x1b
- .byte 0x06, 0x31, 0x28
- .byte 0x15, 0x2d, 0x12
- .byte 0x01, 0x0e, 0x13
- .byte 0x13, 0x0c, 0x28
- .byte 0x07, 0x2a, 0x14
- .byte 0x1d, 0x36, 0x14
- .byte 0x15, 0x2b, 0x26
- .byte 0x03, 0x25, 0x15
- .byte 0x3e, 0x3b, 0x20
- .byte 0x35, 0x0c, 0x25
- .byte 0x2b, 0x16, 0x35
- .byte 0x1e, 0x31, 0x2c
- .byte 0x06, 0x03, 0x29
- .byte 0x24, 0x07, 0x1f
- .byte 0x32, 0x2f, 0x19
- .byte 0x25, 0x21, 0x31
- .byte 0x22, 0x26, 0x1d
- .byte 0x00, 0x1b, 0x18
- .byte 0x2a, 0x24, 0x31
- .byte 0x20, 0x06, 0x2f
- .byte 0x1e, 0x32, 0x26
- .byte 0x32, 0x39, 0x12
- .byte 0x20, 0x01, 0x19
- .byte 0x0f, 0x15, 0x15
- .byte 0x27, 0x10, 0x2e
- .byte 0x09, 0x25, 0x19
- .byte 0x29, 0x37, 0x30
- .byte 0x13, 0x1c, 0x1d
- .byte 0x29, 0x2d, 0x26
- .byte 0x02, 0x1a, 0x16
- .byte 0x1d, 0x2b, 0x1c
- .byte 0x18, 0x04, 0x34
- .byte 0x28, 0x2a, 0x21
- .byte 0x15, 0x1b, 0x2e
- .byte 0x16, 0x01, 0x10
- .byte 0x05, 0x09, 0x14
- .byte 0x22, 0x03, 0x22
- .byte 0x02, 0x1b, 0x34
- .byte 0x29, 0x2a, 0x23
- .byte 0x26, 0x36, 0x13
- .byte 0x23, 0x3d, 0x1a
- .byte 0x1d, 0x10, 0x24
- .byte 0x25, 0x2b, 0x37
- .byte 0x19, 0x24, 0x26
- .byte 0x28, 0x13, 0x16
- .byte 0x17, 0x14, 0x19
- .byte 0x0b, 0x2f, 0x25
- .byte 0x37, 0x34, 0x37
- .byte 0x39, 0x21, 0x1b
- .byte 0x0f, 0x3d, 0x2d
- .byte 0x0d, 0x10, 0x20
- .byte 0x05, 0x0b, 0x2d
- .byte 0x01, 0x12, 0x24
- .byte 0x18, 0x3d, 0x32
- .byte 0x09, 0x21, 0x26
- .byte 0x1a, 0x0e, 0x1f
- .byte 0x30, 0x06, 0x1f
- .byte 0x0b, 0x3c, 0x29
- .byte 0x07, 0x3e, 0x27
- .byte 0x13, 0x1e, 0x1a
- .byte 0x13, 0x07, 0x23
- .byte 0x10, 0x34, 0x1e
- .byte 0x32, 0x17, 0x23
- .byte 0x35, 0x16, 0x31
- .byte 0x32, 0x2e, 0x1b
- .byte 0x28, 0x0e, 0x22
- .byte 0x14, 0x3a, 0x23
- .byte 0x22, 0x03, 0x29
- .byte 0x2a, 0x10, 0x20
- .byte 0x3e, 0x3c, 0x27
- .byte 0x16, 0x20, 0x12
- .byte 0x3f, 0x24, 0x31
- .byte 0x0d, 0x2e, 0x32
- .byte 0x2f, 0x17, 0x2d
- .byte 0x36, 0x3b, 0x17
- .byte 0x24, 0x23, 0x18
- .byte 0x37, 0x1d, 0x13
- .byte 0x17, 0x3a, 0x1a
- .byte 0x0a, 0x3d, 0x1e
- .byte 0x05, 0x12, 0x16
- .byte 0x33, 0x32, 0x25
- .byte 0x1d, 0x1f, 0x29
- .byte 0x34, 0x2c, 0x26
- .byte 0x20, 0x29, 0x35
- .byte 0x0e, 0x32, 0x17
- .byte 0x01, 0x39, 0x2d
- .byte 0x27, 0x24, 0x23
- .byte 0x28, 0x3f, 0x18
- .byte 0x39, 0x38, 0x25
- .byte 0x23, 0x11, 0x11
- .byte 0x19, 0x2c, 0x29
- .byte 0x30, 0x08, 0x28
- .byte 0x25, 0x27, 0x1d
- .byte 0x17, 0x25, 0x21
- .byte 0x09, 0x3d, 0x16
- .byte 0x1b, 0x0f, 0x2c
- .byte 0x1b, 0x12, 0x22
- .byte 0x28, 0x3e, 0x26
- .byte 0x34, 0x10, 0x1b
- .byte 0x02, 0x34, 0x15
- .byte 0x1a, 0x29, 0x19
- .byte 0x29, 0x11, 0x31
- .byte 0x12, 0x27, 0x17
- .byte 0x27, 0x27, 0x2f
- .byte 0x34, 0x27, 0x24
- .byte 0x03, 0x19, 0x36
- .byte 0x17, 0x1d, 0x33
- .byte 0x19, 0x25, 0x1a
- .byte 0x2b, 0x39, 0x13
- .byte 0x3b, 0x33, 0x1d
- .byte 0x27, 0x31, 0x34
- .byte 0x28, 0x33, 0x37
- .byte 0x09, 0x30, 0x1b
- .byte 0x03, 0x3a, 0x27
- .byte 0x19, 0x11, 0x1f
- .byte 0x0b, 0x1a, 0x34
- .byte 0x3d, 0x2a, 0x15
- .byte 0x04, 0x24, 0x36
- .byte 0x30, 0x23, 0x30
- .byte 0x0f, 0x22, 0x1b
- .byte 0x3d, 0x3d, 0x24
- .byte 0x29, 0x1d, 0x12
- .byte 0x16, 0x19, 0x2e
- .byte 0x03, 0x12, 0x17
- .byte 0x18, 0x25, 0x33
- .byte 0x2f, 0x23, 0x1a
- .byte 0x1a, 0x35, 0x27
- .byte 0x21, 0x26, 0x19
- .byte 0x1b, 0x30, 0x18
- .byte 0x2b, 0x22, 0x2d
- .byte 0x2c, 0x1a, 0x34
- .byte 0x3e, 0x12, 0x19
- .byte 0x28, 0x27, 0x15
- .byte 0x1b, 0x11, 0x12
- .byte 0x17, 0x15, 0x10
- .byte 0x34, 0x37, 0x25
- .byte 0x12, 0x3f, 0x15
- .byte 0x31, 0x0d, 0x37
- .byte 0x3e, 0x2a, 0x2d
- .byte 0x0f, 0x24, 0x24
- .byte 0x3c, 0x3f, 0x1f
- .byte 0x1d, 0x34, 0x17
- .byte 0x1a, 0x23, 0x1f
- .byte 0x37, 0x0f, 0x10
- .byte 0x32, 0x34, 0x35
- .byte 0x19, 0x05, 0x22
- .byte 0x33, 0x16, 0x34
- .byte 0x1e, 0x14, 0x1e
- .byte 0x08, 0x13, 0x29
- .byte 0x3a, 0x37, 0x30
- .byte 0x1d, 0x36, 0x15
- .byte 0x29, 0x2e, 0x1d
- .byte 0x32, 0x2e, 0x23
- .byte 0x35, 0x17, 0x1c
- .byte 0x36, 0x1d, 0x13
- .byte 0x23, 0x34, 0x34
- .byte 0x24, 0x1a, 0x37
- .byte 0x2f, 0x26, 0x2e
- .byte 0x1e, 0x17, 0x1a
- .byte 0x1f, 0x15, 0x1f
- .byte 0x2b, 0x1f, 0x19
- .byte 0x0a, 0x33, 0x1a
- .byte 0x35, 0x31, 0x24
- .byte 0x2d, 0x17, 0x2c
- .byte 0x0c, 0x21, 0x36
- .byte 0x2c, 0x35, 0x35
- .byte 0x1b, 0x03, 0x27
- .byte 0x01, 0x0d, 0x1d
- .byte 0x1c, 0x0e, 0x11
- .byte 0x11, 0x2b, 0x10
- .byte 0x25, 0x3b, 0x20
- .byte 0x1f, 0x17, 0x19
- .byte 0x20, 0x08, 0x36
- .byte 0x13, 0x38, 0x19
- .byte 0x1b, 0x2b, 0x24
- .byte 0x0b, 0x1f, 0x29
- .byte 0x27, 0x15, 0x2c
- .byte 0x37, 0x39, 0x10
- .byte 0x3a, 0x15, 0x2e
- .byte 0x2f, 0x11, 0x36
- .byte 0x24, 0x04, 0x20
- .byte 0x3b, 0x2a, 0x35
- .byte 0x27, 0x35, 0x34
- .byte 0x0d, 0x1b, 0x20
- .byte 0x10, 0x22, 0x37
- .byte 0x1f, 0x38, 0x27
- .byte 0x31, 0x0f, 0x28
- .byte 0x28, 0x25, 0x15
- .byte 0x00, 0x1d, 0x25
- .byte 0x31, 0x28, 0x28
- .byte 0x0b, 0x3a, 0x1d
- .byte 0x2d, 0x13, 0x1b
- .byte 0x03, 0x37, 0x2e
- .byte 0x1d, 0x28, 0x19
- .byte 0x08, 0x2d, 0x22
- .byte 0x27, 0x39, 0x32
- .byte 0x3f, 0x2f, 0x1d
- .byte 0x33, 0x34, 0x28
- .byte 0x18, 0x08, 0x31
- .byte 0x23, 0x1f, 0x13
- .byte 0x0d, 0x2c, 0x23
- .byte 0x3a, 0x2d, 0x1a
- .byte 0x02, 0x25, 0x13
- .byte 0x20, 0x36, 0x34
- .byte 0x12, 0x2b, 0x2d
- .byte 0x35, 0x35, 0x34
- .byte 0x23, 0x20, 0x21
- .byte 0x3a, 0x19, 0x1b
- .byte 0x1f, 0x2b, 0x19
- .byte 0x35, 0x0e, 0x19
- .byte 0x26, 0x24, 0x37
- .byte 0x18, 0x08, 0x10
- .byte 0x0c, 0x16, 0x2d
- .byte 0x1f, 0x34, 0x21
- .byte 0x05, 0x38, 0x19
- .byte 0x14, 0x21, 0x24
- .byte 0x11, 0x31, 0x14
- .byte 0x3e, 0x38, 0x29
- .byte 0x3f, 0x08, 0x25
- .byte 0x2a, 0x1f, 0x25
- .byte 0x25, 0x06, 0x28
- .byte 0x0b, 0x1e, 0x14
- .byte 0x1a, 0x38, 0x22
- .byte 0x24, 0x18, 0x29
- .byte 0x1a, 0x11, 0x20
- .byte 0x3b, 0x3a, 0x1e
- .byte 0x1c, 0x26, 0x1a
- .byte 0x05, 0x32, 0x19
- .byte 0x39, 0x2a, 0x31
- .byte 0x09, 0x07, 0x25
- .byte 0x05, 0x3e, 0x16
- .byte 0x34, 0x26, 0x14
- .byte 0x1b, 0x32, 0x26
- .byte 0x05, 0x08, 0x37
- .byte 0x0f, 0x03, 0x20
- .byte 0x2a, 0x39, 0x31
- .byte 0x08, 0x01, 0x1e
- .byte 0x1d, 0x23, 0x31
- .byte 0x28, 0x1b, 0x28
- .byte 0x1e, 0x37, 0x14
- .byte 0x13, 0x0e, 0x28
- .byte 0x2a, 0x3b, 0x37
- .byte 0x2f, 0x1c, 0x28
- .byte 0x30, 0x30, 0x1a
- .byte 0x36, 0x1f, 0x16
- .byte 0x3e, 0x0d, 0x15
- .byte 0x2e, 0x16, 0x18
- .byte 0x15, 0x37, 0x20
- .byte 0x2a, 0x33, 0x30
- .byte 0x2b, 0x0e, 0x25
- .byte 0x18, 0x20, 0x16
- .byte 0x02, 0x19, 0x25
- .byte 0x0a, 0x2e, 0x30
- .byte 0x16, 0x03, 0x11
- .byte 0x04, 0x27, 0x25
- .byte 0x1b, 0x1c, 0x21
- .byte 0x29, 0x04, 0x27
- .byte 0x3d, 0x20, 0x1e
- .byte 0x28, 0x33, 0x31
- .byte 0x1e, 0x39, 0x10
- .byte 0x31, 0x29, 0x1e
- .byte 0x06, 0x25, 0x28
- .byte 0x19, 0x3b, 0x12
- .byte 0x0b, 0x1b, 0x1c
- .byte 0x3e, 0x37, 0x20
- .byte 0x0a, 0x37, 0x33
- .byte 0x02, 0x2c, 0x25
- .byte 0x15, 0x18, 0x14
- .byte 0x3b, 0x20, 0x1c
- .byte 0x22, 0x3b, 0x1c
- .byte 0x24, 0x34, 0x35
- .byte 0x0f, 0x2f, 0x31
- .byte 0x3b, 0x17, 0x35
- .byte 0x30, 0x39, 0x37
- .byte 0x0d, 0x15, 0x11
- .byte 0x10, 0x03, 0x1e
- .byte 0x1a, 0x39, 0x33
- .byte 0x2f, 0x2e, 0x28
- .byte 0x1c, 0x28, 0x36
- .byte 0x28, 0x18, 0x1f
- .byte 0x15, 0x01, 0x30
- .byte 0x3e, 0x32, 0x28
- .byte 0x34, 0x2f, 0x23
- .byte 0x07, 0x0c, 0x36
- .byte 0x28, 0x2c, 0x34
- .byte 0x2a, 0x0c, 0x1f
- .byte 0x3f, 0x20, 0x13
- .byte 0x2b, 0x17, 0x27
- .byte 0x28, 0x29, 0x2a
- .byte 0x3c, 0x13, 0x36
- .byte 0x26, 0x2d, 0x2a
- .byte 0x0a, 0x06, 0x1e
- .byte 0x20, 0x04, 0x1a
- .byte 0x02, 0x07, 0x35
- .byte 0x0e, 0x18, 0x30
- .byte 0x00, 0x34, 0x34
- .byte 0x2f, 0x14, 0x37
- .byte 0x21, 0x30, 0x1f
- .byte 0x15, 0x37, 0x1b
- .byte 0x3a, 0x0b, 0x32
- .byte 0x22, 0x22, 0x21
- .byte 0x1b, 0x35, 0x23
- .byte 0x0d, 0x03, 0x1c
- .byte 0x23, 0x3b, 0x13
- .byte 0x0e, 0x1d, 0x1f
- .byte 0x1d, 0x3f, 0x2e
- .byte 0x39, 0x27, 0x2e
- .byte 0x0f, 0x38, 0x20
- .byte 0x31, 0x3c, 0x35
- .byte 0x0b, 0x0f, 0x2e
- .byte 0x06, 0x06, 0x28
- .byte 0x25, 0x39, 0x23
- .byte 0x0a, 0x32, 0x15
- .byte 0x0f, 0x1d, 0x25
- .byte 0x0c, 0x0d, 0x34
- .byte 0x12, 0x2e, 0x21
- .byte 0x36, 0x18, 0x1f
- .byte 0x1f, 0x34, 0x1b
- .byte 0x05, 0x3a, 0x36
- .byte 0x2b, 0x01, 0x17
- .byte 0x0e, 0x16, 0x2b
- .byte 0x0e, 0x0b, 0x26
- .byte 0x0d, 0x2d, 0x10
- .byte 0x21, 0x11, 0x27
- .byte 0x3d, 0x13, 0x32
- .byte 0x15, 0x25, 0x2a
- .byte 0x1b, 0x2d, 0x35
- .byte 0x2c, 0x2b, 0x26
- .byte 0x26, 0x1f, 0x20
- .byte 0x22, 0x2b, 0x12
- .byte 0x3f, 0x3d, 0x27
- .byte 0x30, 0x0a, 0x36
- .byte 0x35, 0x1f, 0x17
- .byte 0x21, 0x08, 0x29
- .byte 0x1d, 0x20, 0x33
- .byte 0x34, 0x11, 0x16
- .byte 0x05, 0x38, 0x2d
diff --git a/data/specials.inc b/data/specials.inc
index 811844759..9d37955c4 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -227,11 +227,11 @@ gSpecials:: @ 815FD60
def_special Special_GetElevatorFloor
def_special nullsub_75
def_special nullsub_75
- def_special SelectMoveTutorMon
- def_special SelectMove
- def_special DeleteMonMove
- def_special ScrSpecial_GetPokemonNicknameAndMoveName
- def_special ScrSpecial_CountPokemonMoves
+ def_special Special_SelectMoveTutorMon
+ def_special Special_SelectMove
+ def_special Special_MoveDeleterForgetMove
+ def_special Special_BufferMoveDeleterNicknameAndMove
+ def_special Special_GetNumMovesSelectedMonHas
def_special DisplayMoveTutorMenu
def_special nullsub_75
def_special nullsub_75
@@ -336,7 +336,7 @@ gSpecials:: @ 815FD60
def_special nullsub_75
def_special nullsub_75
def_special Special_GetSpeciesOfPartySlot_x8004
- def_special IsSelectedMonEgg
+ def_special Special_IsSelectedMonEgg
def_special nullsub_75
def_special nullsub_75
def_special LoadPlayerBag
diff --git a/data/strings.s b/data/strings.s
index 4e77b6063..50b329490 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -2524,161 +2524,142 @@ gUnknown_8418E77:: @ 8418E77
gUnknown_8418E8A:: @ 8418E8A
.string "$"
-gUnknown_8418E8B:: @ 8418E8B
+gText_RegionMap_Space:: @ 8418E8B
.string " $"
-gUnknown_8418E8D:: @ 8418E8D
+gText_RegionMap_AButtonGuide:: @ 8418E8D
.string "{A_BUTTON}GUIDE$"
-gUnknown_8418E95:: @ 8418E95
+gText_RegionMap_AButtonCancel:: @ 8418E95
.string "{A_BUTTON}CANCEL$"
-gUnknown_8418E9E:: @ 8418E9E
+gText_RegionMap_AButtonCancel2:: @ 8418E9E
.string "{A_BUTTON}CANCEL$"
-gUnknown_8418EA7:: @ 8418EA7
+gText_RegionMap_AButtonSwitch:: @ 8418EA7
.string "{A_BUTTON}SWITCH$"
-gUnknown_8418EB0:: @ 8418EB0
+gText_RegionMap_AButtonOK:: @ 8418EB0
.string "{A_BUTTON}OK$"
-gUnknown_8418EB5:: @ 8418EB5
+gText_RegionMap_DPadMove:: @ 8418EB5
.string "{DPAD_ANY}MOVE$"
-gUnknown_8418EBC:: @ 8418EBC
+gText_RegionMap_UpDownPick:: @ 8418EBC
.string "{DPAD_UPDOWN}PICK$"
-gUnknown_8418EC3:: @ 8418EC3
+gText_RegionMap_NoData:: @ 8418EC3
.string "No data$"
-gUnknown_8418ECB:: @ 8418ECB
- @ Viridian Forest
+gText_RegionMap_AreaDesc_ViridianForest::
.string "A deep and sprawling forest that\n"
.string "extends around VIRIDIAN CITY.\n"
.string "A natural maze, many people\n"
.string "become lost inside.$"
-gUnknown_8418F3A:: @ 8418F3A
- @ Mt. Moon
+gText_RegionMap_AreaDesc_MtMoon::
.string "A mystical mountain that is known\n"
.string "for its frequent meteor falls.\n"
.string "The shards of stars that fall\n"
.string "here are known as MOON STONES.$"
-gUnknown_8418FB8:: @ 8418FB8
- @ Diglett's Cave
+gText_RegionMap_AreaDesc_DiglettsCave::
.string "A seemingly plain tunnel that was\n"
.string "dug by wild DIGLETT.\n"
.string "It is famous for connecting\n"
.string "ROUTES 2 and 11.$"
-gUnknown_841901C:: @ 841901C
- @ Victory Road
+gText_RegionMap_AreaDesc_VictoryRoad::
.string "A tunnel situated on ROUTE 23.\n"
.string "It earned its name because it\n"
.string "must be traveled by all TRAINERS\n"
.string "aiming for the top.$"
-gUnknown_841908E:: @ 841908E
- @ Pokémon Mansion
+gText_RegionMap_AreaDesc_PokemonMansion::
.string "A decrepit, burned-down mansion\n"
.string "on CINNABAR ISLAND.\n"
.string "It got its name because a famous\n"
.string "POKéMON researcher lived there.$"
-gUnknown_8419103:: @ 8419103
- @ Safari Zone
+gText_RegionMap_AreaDesc_SafariZone::
.string "An amusement park outside FUCHSIA\n"
.string "CITY where many rare POKéMON can\n"
.string "be observed in the wild.\n"
.string "Catch them in a popular game!$"
-gUnknown_841917D:: @ 841917D
- @ Rock Tunnel
+gText_RegionMap_AreaDesc_RockTunnel::
.string "A naturally formed underground\n"
.string "tunnel. Because it has not been\n"
.string "developed, it is inky dark inside.\n"
.string "A light is needed to get through.$"
-gUnknown_8419201:: @ 8419201
- @ Seafoam Islands
+gText_RegionMap_AreaDesc_SeafoamIslands::
.string "A pair of islands that is situated\n"
.string "on ROUTE 20.\n"
.string "The two islands are shaped the\n"
.string "same, as if they were twins.$"
-gUnknown_841926D:: @ 841926D
- @ Pokémon Tower
+gText_RegionMap_AreaDesc_PokemonTower::
.string "A tower that houses the graves of\n"
.string "countless POKéMON.\n"
.string "Many people visit it daily to pay\n"
.string "their respects to the fallen.$"
-gUnknown_84192E2:: @ 84192E2
- @ Cerulean Cave
+gText_RegionMap_AreaDesc_CeruleanCave::
.string "A mysterious cave that is filled\n"
.string "with terribly tough POKéMON.\n"
.string "It is so dangerous, the POKéMON\n"
.string "LEAGUE is in charge of it.$"
-gUnknown_841935B:: @ 841935B
- @ Power Plant
+gText_RegionMap_AreaDesc_PowerPlant::
.string "A power plant that was abandoned\n"
.string "years ago, though some of the\n"
.string "machines still work. It is infested\n"
.string "with electric POKéMON.$"
-gUnknown_84193D5:: @ 84193D5
- @ Mt. Ember
+gText_RegionMap_AreaDesc_MtEmber::
.string "Supposedly an inactive volcano.\n"
.string "However, there are persistent\n"
.string "reports that the peak blazes\n"
.string "with fire at night.$"
-gUnknown_8419444:: @ 8419444
- @ Berry Forest
+gText_RegionMap_AreaDesc_BerryForest::
.string "A forest on a small islet off the\n"
.string "coast of THREE ISLAND. BERRIES\n"
.string "grow wildly in profusion, quickly\n"
.string "replenishing those that fall off.$"
-gUnknown_84194C9:: @ 84194C9
- @ Icefall Cave
+gText_RegionMap_AreaDesc_IcefallCave::
.string "A cave which is covered by water\n"
.string "and ice on FOUR ISLAND.\n"
.string "It seems like the end of the cave\n"
.string "is connected to the ocean.$"
-gUnknown_841953F:: @ 841953F
- @ Lost Cave
+gText_RegionMap_AreaDesc_LostCave::
.string "A bewildering cave off the coast\n"
.string "of RESORT GORGEOUS.\n"
.string "Some curious thrill seekers have\n"
.string "never emerged from it.$"
-gUnknown_84195AC:: @ 84195AC
- @ Tanoby Ruins
+gText_RegionMap_AreaDesc_TanobyRuins::
.string "An ancient ruin that is rumored to\n"
.string "be home to a peculiar POKéMON.\n"
.string "However, so far, the POKéMON\n"
.string "remains an unconfirmed rumor.$"
-gUnknown_8419629:: @ 8419629
- @ Altering Cave
+gText_RegionMap_AreaDesc_AlteringCave::
.string "This island has been known by this\n"
.string "name since the distant past.\n"
.string "No one today knows where it got\n"
.string "this name, however.$"
-gUnknown_841969D:: @ 841969D
- @ Pattern Bush
+gText_RegionMap_AreaDesc_PatternBush::
.string "A lush and bush-like area. \n"
.string "In it are patterns where no grass\n"
.string "grows. Some study it in the belief\n"
.string "that a secret is concealed.$"
-gUnknown_841971A:: @ 841971A
- @ Dotted Hole
+gText_RegionMap_AreaDesc_DottedHole::
.string "A mysterious, just-discovered\n"
.string "ruin from an ancient time.\n"
.string "It got its name from the six dots\n"
diff --git a/data/text/map_section_names.inc b/data/text/map_section_names.inc
deleted file mode 100644
index 070375510..000000000
--- a/data/text/map_section_names.inc
+++ /dev/null
@@ -1,327 +0,0 @@
-gMapSecName_PalletTown::
- .string "PALLET TOWN$"
-
-gMapSecName_ViridianCity::
- .string "VIRIDIAN CITY$"
-
-gMapSecName_PewterCity::
- .string "PEWTER CITY$"
-
-gMapSecName_CeruleanCity::
- .string "CERULEAN CITY$"
-
-gMapSecName_LavenderTown::
- .string "LAVENDER TOWN$"
-
-gMapSecName_VermilionCity::
- .string "VERMILION CITY$"
-
-gMapSecName_CeladonCity::
- .string "CELADON CITY$"
-
-gMapSecName_FuchsiaCity::
- .string "FUCHSIA CITY$"
-
-gMapSecName_CinnabarIsland::
- .string "CINNABAR ISLAND$"
-
-gMapSecName_IndigoPlateau::
- .string "INDIGO PLATEAU$"
-
-gMapSecName_SaffronCity::
- .string "SAFFRON CITY$"
-
-gMapSecName_Route4::
- .string "ROUTE 4$"
-
-gMapSecName_Route10::
- .string "ROUTE 10$"
-
-gMapSecName_Route1::
- .string "ROUTE 1$"
-
-gMapSecName_Route2::
- .string "ROUTE 2$"
-
-gMapSecName_Route3::
- .string "ROUTE 3$"
-
-gMapSecName_Route4_2::
- .string "ROUTE 4$"
-
-gMapSecName_Route5::
- .string "ROUTE 5$"
-
-gMapSecName_Route6::
- .string "ROUTE 6$"
-
-gMapSecName_Route7::
- .string "ROUTE 7$"
-
-gMapSecName_Route8::
- .string "ROUTE 8$"
-
-gMapSecName_Route9::
- .string "ROUTE 9$"
-
-gMapSecName_Route10_2::
- .string "ROUTE 10$"
-
-gMapSecName_Route11::
- .string "ROUTE 11$"
-
-gMapSecName_Route12::
- .string "ROUTE 12$"
-
-gMapSecName_Route13::
- .string "ROUTE 13$"
-
-gMapSecName_Route14::
- .string "ROUTE 14$"
-
-gMapSecName_Route15::
- .string "ROUTE 15$"
-
-gMapSecName_Route16::
- .string "ROUTE 16$"
-
-gMapSecName_Route17::
- .string "ROUTE 17$"
-
-gMapSecName_Route18::
- .string "ROUTE 18$"
-
-gMapSecName_Route19::
- .string "ROUTE 19$"
-
-gMapSecName_Route20::
- .string "ROUTE 20$"
-
-gMapSecName_Route21::
- .string "ROUTE 21$"
-
-gMapSecName_Route22::
- .string "ROUTE 22$"
-
-gMapSecName_Route23::
- .string "ROUTE 23$"
-
-gMapSecName_Route24::
- .string "ROUTE 24$"
-
-gMapSecName_Route25::
- .string "ROUTE 25$"
-
-gMapSecName_ViridianForest::
- .string "VIRIDIAN FOREST$"
-
-gMapSecName_MtMoon::
- .string "MT. MOON$"
-
-gMapSecName_SSAnne::
- .string "S.S. ANNE$"
-
-gMapSecName_UndergroundPath::
- .string "UNDERGROUND PATH$"
-
-gMapSecName_UndergroundPath_2::
- .string "UNDERGROUND PATH$"
-
-gMapSecName_DiglettsCave::
- .string "DIGLETT'S CAVE$"
-
-gMapSecName_VictoryRoad::
- .string "VICTORY ROAD$"
-
-gMapSecName_RocketHideout::
- .string "ROCKET HIDEOUT$"
-
-gMapSecName_SilphCo::
- .string "SILPH CO.$"
-
-gMapSecName_PokemonMansion::
- .string "POKéMON MANSION$"
-
-gMapSecName_SafariZone::
- .string "SAFARI ZONE$"
-
-gMapSecName_PokemonLeague::
- .string "POKéMON LEAGUE$"
-
-gMapSecName_RockTunnel::
- .string "ROCK TUNNEL$"
-
-gMapSecName_SeafoamIslands::
- .string "SEAFOAM ISLANDS$"
-
-gMapSecName_PokemonTower::
- .string "POKéMON TOWER$"
-
-gMapSecName_CeruleanCave::
- .string "CERULEAN CAVE$"
-
-gMapSecName_PowerPlant::
- .string "POWER PLANT$"
-
-gMapSecName_OneIsland::
- .string "ONE ISLAND$"
-
-gMapSecName_TwoIsland::
- .string "TWO ISLAND$"
-
-gMapSecName_ThreeIsland::
- .string "THREE ISLAND$"
-
-gMapSecName_FourIsland::
- .string "FOUR ISLAND$"
-
-gMapSecName_FiveIsland::
- .string "FIVE ISLAND$"
-
-gMapSecName_SevenIsland::
- .string "SEVEN ISLAND$"
-
-gMapSecName_SixIsland::
- .string "SIX ISLAND$"
-
-gMapSecName_KindleRoad::
- .string "KINDLE ROAD$"
-
-gMapSecName_TreasureBeach::
- .string "TREASURE BEACH$"
-
-gMapSecName_CapeBrink::
- .string "CAPE BRINK$"
-
-gMapSecName_BondBridge::
- .string "BOND BRIDGE$"
-
-gMapSecName_ThreeIslePort::
- .string "THREE ISLE PORT$"
-
-gMapSecName_SeviiIsle6::
- .string "SEVII ISLE 6$"
-
-gMapSecName_SeviiIsle7::
- .string "SEVII ISLE 7$"
-
-gMapSecName_SeviiIsle8::
- .string "SEVII ISLE 8$"
-
-gMapSecName_SeviiIsle9::
- .string "SEVII ISLE 9$"
-
-gMapSecName_ResortGorgeous::
- .string "RESORT GORGEOUS$"
-
-gMapSecName_WaterLabyrinth::
- .string "WATER LABYRINTH$"
-
-gMapSecName_FiveIsleMeadow::
- .string "FIVE ISLE MEADOW$"
-
-gMapSecName_MemorialPillar::
- .string "MEMORIAL PILLAR$"
-
-gMapSecName_OutcastIsland::
- .string "OUTCAST ISLAND$"
-
-gMapSecName_GreenPath::
- .string "GREEN PATH$"
-
-gMapSecName_WaterPath::
- .string "WATER PATH$"
-
-gMapSecName_RuinValley::
- .string "RUIN VALLEY$"
-
-gMapSecName_TrainerTower::
- .string "TRAINER TOWER$"
-
-gMapSecName_CanyonEntrance::
- .string "CANYON ENTRANCE$"
-
-gMapSecName_SevaultCanyon::
- .string "SEVAULT CANYON$"
-
-gMapSecName_TanobyRuins::
- .string "TANOBY RUINS$"
-
-gMapSecName_SeviiIsle22::
- .string "SEVII ISLE 22$"
-
-gMapSecName_SeviiIsle23::
- .string "SEVII ISLE 23$"
-
-gMapSecName_SeviiIsle24::
- .string "SEVII ISLE 24$"
-
-gMapSecName_NavelRock::
- .string "NAVEL ROCK$"
-
-gMapSecName_MtEmber::
- .string "MT. EMBER$"
-
-gMapSecName_BerryForest::
- .string "BERRY FOREST$"
-
-gMapSecName_IcefallCave::
- .string "ICEFALL CAVE$"
-
-gMapSecName_RocketWarehouse::
- .string "ROCKET WAREHOUSE$"
-
-gMapSecName_TrainerTower_2::
- .string "TRAINER TOWER$"
-
-gMapSecName_DottedHole::
- .string "DOTTED HOLE$"
-
-gMapSecName_LostCave::
- .string "LOST CAVE$"
-
-gMapSecName_PatternBush::
- .string "PATTERN BUSH$"
-
-gMapSecName_AlteringCave::
- .string "ALTERING CAVE$"
-
-gMapSecName_TanobyChambers::
- .string "TANOBY CHAMBERS$"
-
-gMapSecName_ThreeIslePath::
- .string "THREE ISLE PATH$"
-
-gMapSecName_TanobyKey::
- .string "TANOBY KEY$"
-
-gMapSecName_BirthIsland::
- .string "BIRTH ISLAND$"
-
-gMapSecName_MoneanChamber::
- .string "MONEAN CHAMBER$"
-
-gMapSecName_LiptooChamber::
- .string "LIPTOO CHAMBER$"
-
-gMapSecName_WeepthChamber::
- .string "WEEPTH CHAMBER$"
-
-gMapSecName_DilfordChamber::
- .string "DILFORD CHAMBER$"
-
-gMapSecName_ScufibChamber::
- .string "SCUFIB CHAMBER$"
-
-gMapSecName_RixyChamber::
- .string "RIXY CHAMBER$"
-
-gMapSecName_ViapoisChamber::
- .string "VIAPOIS CHAMBER$"
-
-gMapSecName_EmberSpa::
- .string "EMBER SPA$"
-
-gMapSecName_CeladonDept::
- .string "CELADON DEPT.$"
-
diff --git a/include/battle_interface.h b/include/battle_interface.h
index 162faa8cb..01f3c4b29 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -79,8 +79,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
u8 GetHPBarLevel(s16 hp, s16 maxhp);
-void sub_80496C0(u8 spriteId, struct Pokemon *mon);
-void sub_804981C(u8 spriteId, u8);
+void UpdateNickInHealthbox(u8 spriteId, struct Pokemon *mon);
+void TryAddPokeballIconToHealthbox(u8 spriteId, u8);
s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
#endif // GUARD_BATTLE_INTERFACE_H
diff --git a/include/battle_message.h b/include/battle_message.h
index 612b253cf..2e2baa278 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -248,4 +248,7 @@ extern const u8 gUnknown_83FE85C[];
extern const u8 gUnknown_83FE860[];
extern const u8 gUnknown_83FE864[];
+extern const u8 gText_SafariBalls[];
+extern const u8 gText_HighlightRed_Left[];
+
#endif // GUARD_BATTLE_MESSAGE_H
diff --git a/include/constants/region_map.h b/include/constants/region_map.h
index 0957a72ee..bd087bd60 100644
--- a/include/constants/region_map.h
+++ b/include/constants/region_map.h
@@ -89,6 +89,9 @@
#define MAPSEC_SKY_PILLAR 0x55
#define MAPSEC_SECRET_BASE 0x56
#define MAPSEC_DYNAMIC 0x57
+
+#define MAPSECS_KANTO 0x58
+
#define MAPSEC_PALLET_TOWN 0x58
#define MAPSEC_VIRIDIAN_CITY 0x59
#define MAPSEC_PEWTER_CITY 0x5A
@@ -144,6 +147,9 @@
#define MAPSEC_POKEMON_TOWER 0x8C
#define MAPSEC_CERULEAN_CAVE 0x8D
#define MAPSEC_POWER_PLANT 0x8E
+
+#define MAPSECS_SEVII_123 0x8F
+
#define MAPSEC_ONE_ISLAND 0x8F
#define MAPSEC_TWO_ISLAND 0x90
#define MAPSEC_THREE_ISLAND 0x91
diff --git a/include/constants/trade.h b/include/constants/trade.h
index b1371caab..b22cd26d2 100644
--- a/include/constants/trade.h
+++ b/include/constants/trade.h
@@ -1,4 +1,4 @@
- #ifndef GUARD_CONSTANTS_TRADE_H
+#ifndef GUARD_CONSTANTS_TRADE_H
#define GUARD_CONSTANTS_TRADE_H
// TODO: document trade.c and trade_scene.c with corresponding macros
@@ -115,4 +115,4 @@
#define CANT_REGISTER_MON 1
#define CANT_REGISTER_EGG 2
-#endif //GUARD_CONSTANTS_TRADE_H
+#endif // GUARD_CONSTANTS_TRADE_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 4afc5cace..c2d14d43c 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -23,5 +23,6 @@ void sub_80853CC(u8 a0);
void sub_8083598(u8 a0);
void sub_8083A5C(struct Sprite * sprite, u8 spriteId);
u8 sub_8083970(u16 species, s16 x, s16 y, bool8 unused);
+void sub_80842C8(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 6d54bc5fb..548e27163 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -137,6 +137,8 @@
#define REG_OFFSET_DMA3CNT_H 0xde
#define REG_OFFSET_TMCNT 0x100
+#define REG_OFFSET_TMCNT_L 0x100
+#define REG_OFFSET_TMCNT_H 0x102
#define REG_OFFSET_TM0CNT 0x100
#define REG_OFFSET_TM0CNT_L 0x100
#define REG_OFFSET_TM0CNT_H 0x102
@@ -298,6 +300,8 @@
#define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H)
#define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT)
+#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L)
+#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H)
#define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT)
#define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L)
#define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H)
@@ -457,7 +461,9 @@
#define REG_DMA3CNT_L (*(vu16 *)REG_ADDR_DMA3CNT_L)
#define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H)
-#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4)))
+#define REG_TMCNT(n) (*(vu32 *)(REG_ADDR_TMCNT + ((n) * 4)))
+#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4)))
+#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4)))
#define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT)
#define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L)
#define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H)
diff --git a/include/gba/macro.h b/include/gba/macro.h
index e416c3577..a3e870210 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -105,7 +105,7 @@
} \
}
-#define DmaClearLarge(dmaNum, dest, size, block, bit) \
+#define DmaClearLarge(dmaNum, dest, size, block, bit) \
{ \
u32 _size = size; \
while (1) \
@@ -170,4 +170,14 @@
#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16)
#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32)
+#define IntrEnable(flags) \
+{ \
+ u16 imeTemp; \
+ \
+ imeTemp = REG_IME; \
+ REG_IME = 0; \
+ REG_IE |= flags; \
+ REG_IME = imeTemp; \
+}
+
#endif // GUARD_GBA_MACRO_H
diff --git a/include/gba/syscall.h b/include/gba/syscall.h
index deddec5ba..22fdf09fa 100644
--- a/include/gba/syscall.h
+++ b/include/gba/syscall.h
@@ -45,4 +45,6 @@ void RLUnCompVram(const void *src, void *dest);
int MultiBoot(struct MultiBootParam *mp);
+s32 Div(s32 num, s32 denom);
+
#endif // GUARD_GBA_SYSCALL_H
diff --git a/include/graphics.h b/include/graphics.h
index dc0389420..a668364bd 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4854,4 +4854,11 @@ extern const u32 gFireRedTrainerCard_Gfx[];
extern const u16 gEmeraldTrainerCard_Pal[];
extern const u32 gEmeraldTrainerCard_Gfx[];
+// battle_interface
+extern const u32 gFile_graphics_battle_interface_ball_status_bar_sheet[];
+extern const u8 gHealthboxElementsGfxTable[][32];
+extern const u16 gBattleInterface_BallStatusBarPal[];
+extern const u16 gBattleInterface_BallDisplayPal[];
+extern const u16 gUnknown_8D12404[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/image_processing_effects.h b/include/image_processing_effects.h
new file mode 100644
index 000000000..7f726707c
--- /dev/null
+++ b/include/image_processing_effects.h
@@ -0,0 +1,53 @@
+#ifndef GUARD_IMAGE_PROCESSING_EFFECTS_H
+#define GUARD_IMAGE_PROCESSING_EFFECTS_H
+
+enum
+{
+ IMAGE_EFFECT_POINTILLISM = 2,
+ IMAGE_EFFECT_GRAYSCALE_LIGHT = 6,
+ IMAGE_EFFECT_BLUR = 8,
+ IMAGE_EFFECT_OUTLINE_COLORED = 9,
+ IMAGE_EFFECT_INVERT_BLACK_WHITE = 10,
+ IMAGE_EFFECT_THICK_BLACK_WHITE = 11,
+ IMAGE_EFFECT_SHIMMER = 13,
+ IMAGE_EFFECT_OUTLINE = 30,
+ IMAGE_EFFECT_INVERT = 31,
+ IMAGE_EFFECT_BLUR_RIGHT = 32,
+ IMAGE_EFFECT_BLUR_DOWN = 33,
+ IMAGE_EFFECT_CHARCOAL = 36,
+};
+
+enum
+{
+ QUANTIZE_EFFECT_STANDARD,
+ QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS,
+ QUANTIZE_EFFECT_PRIMARY_COLORS,
+ QUANTIZE_EFFECT_GRAYSCALE,
+ QUANTIZE_EFFECT_GRAYSCALE_SMALL,
+ QUANTIZE_EFFECT_BLACK_WHITE,
+};
+
+struct ImageProcessingContext
+{
+ u8 effect;
+ void *canvasPixels;
+ u16 *canvasPalette;
+ u8 fillerC[0x4];
+ void *dest;
+ u16 quantizeEffect;
+ u16 var_16;
+ u8 paletteStart;
+ u8 columnStart;
+ u8 rowStart;
+ u8 columnEnd;
+ u8 rowEnd;
+ u8 canvasWidth;
+ u8 canvasHeight;
+ u8 personality;
+};
+
+void ApplyImageProcessingEffects(struct ImageProcessingContext *);
+void ApplyImageProcessingQuantization(struct ImageProcessingContext *);
+void ConvertImageProcessingToGBA(struct ImageProcessingContext *);
+
+#endif
diff --git a/include/intro.h b/include/intro.h
index f01c81a9e..19cdcd032 100644
--- a/include/intro.h
+++ b/include/intro.h
@@ -2,5 +2,6 @@
#define GUARD_INTRO_H
void sub_80EC864(void);
+void c2_copyright_1(void);
#endif //GUARD_INTRO_H
diff --git a/include/librfu.h b/include/librfu.h
index 69f0bb695..cf409ca69 100644
--- a/include/librfu.h
+++ b/include/librfu.h
@@ -1,84 +1,290 @@
#ifndef GUARD_LIBRFU_H
#define GUARD_LIBRFU_H
+#include "global.h"
#include "main.h"
-enum
-{
- RFU_RESET = 0x10,
- RFU_LINK_STATUS,
- RFU_VERSION_STATUS,
- RFU_SYSTEM_STATUS,
- RFU_SLOT_STATUS,
- RFU_CONFIG_STATUS,
- RFU_GAME_CONFIG,
- RFU_SYSTEM_CONFIG,
- RFU_UNK18,
- RFU_SC_START,
- RFU_SC_POLLING,
- RFU_SC_END,
- RFU_SP_START,
- RFU_SP_POLLING,
- RFU_SP_END,
- RFU_CP_START,
- RFU_CP_POLLING,
- RFU_CP_END,
- RFU_UNK22,
- RFU_UNK23,
- RFU_DATA_TX,
- RFU_DATA_TX_AND_CHANGE,
- RFU_DATA_RX,
- RFU_MS_CHANGE,
- RFU_DATA_READY_AND_CHANGE,
- RFU_DISCONNECTED_AND_CHANGE,
- RFU_UNK2A,
- RFU_UNK2B,
- RFU_UNK2C,
- RFU_UNK2D,
- RFU_UNK2E,
- RFU_UNK2F,
- RFU_DISCONNECT,
- RFU_TEST_MODE,
- RFU_CPR_START,
- RFU_CPR_POLLING,
- RFU_CPR_END,
- RFU_UNK35,
- RFU_UNK36,
- RFU_RESUME_RETRANSMIT_AND_CHANGE,
- RFU_UNK38,
- RFU_UNK39,
- RFU_UNK3A,
- RFU_UNK3B,
- RFU_UNK3C,
- RFU_STOP_MODE, //3D
-};
+/* TODOs:
+ * - split files
+ * - documentation
+ * - decompile librfu_intr.s once arm support is back again
+ (for internal structs not documented in SDK)
+ * - check if any field needs to be volatile
+ * - check if field names make sense
+ */
-struct RfuPacket8
-{
- u8 data[0x74];
-};
+// --------------------------------------------------------------------------
+//
+// Restrictions When Using RFU
+//
+// --------------------------------------------------------------------------
+/*
+ The following restrictions apply when using RFU.
-struct RfuPacket32
-{
- u32 command;
- u32 data[0x1C];
-};
+ <Restrictions for Direct Sound>
+ (a) The timer for Sound DMA uses only 0
+ (b) The prescaler for the timer count for the Sound DMA uses 59.5 ns.
+ (c) The sound sampling rate is Max36.314KHz.
-union RfuPacket
-{
- struct RfuPacket32 rfuPacket32;
- struct RfuPacket8 rfuPacket8;
-};
+ <Restrictions for H-DMA or DMA started with V-Blank>
+ These types of DMA can be operated on a maximum CPU cycle of 42 cycles.
+ Calculate the number of the transferable DMA count based on this 42 cycles and the access cycles of the destination and source.
+ For example, if both the CPU internal RAM --> VRAM have a one cycle access, then a 21 count DMA can occur.
+
+
+ If RFU is used outside of these restrictions, problems, such as the loss of data caused by the failure of the AGB, as a clock slave,
+ to notify that data has been received from the RFU, will occur.
+ When this problem occurs, the REQ callback will send a REQ_commandID=ID_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA_REQ notification.
+ (When using Link Manager, the LMAN call back will send a LMAN_msg=LMAN_MSG_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA notification.)
+
+*/
+
+// REQ-COMMAND (STWI) ID CODE LIST
+
+// REQ Command ID returned by the REQ callback
+#define ID_RESET_REQ 0x0010
+#define ID_LINK_STATUS_REQ 0x0011
+#define ID_VERSION_STATUS_REQ 0x0012 // not defined in SDK header
+#define ID_SYSTEM_STATUS_REQ 0x0013
+#define ID_SLOT_STATUS_REQ 0x0014 // not defined in SDK header
+#define ID_CONFIG_STATUS_REQ 0x0015 // not defined in SDK header
+#define ID_GAME_CONFIG_REQ 0x0016
+#define ID_SYSTEM_CONFIG_REQ 0x0017
+#define ID_SC_START_REQ 0x0019
+#define ID_SC_POLL_REQ 0x001a
+#define ID_SC_END_REQ 0x001b
+#define ID_SP_START_REQ 0x001c
+#define ID_SP_POLL_REQ 0x001d
+#define ID_SP_END_REQ 0x001e
+#define ID_CP_START_REQ 0x001f
+#define ID_CP_POLL_REQ 0x0020
+#define ID_CP_END_REQ 0x0021
+#define ID_DATA_TX_REQ 0x0024
+#define ID_DATA_TX_AND_CHANGE_REQ 0x0025
+#define ID_DATA_RX_REQ 0x0026
+#define ID_MS_CHANGE_REQ 0x0027 // When returned by the REQ callback, this ID indicates that execution of rfu_REQ_changeMasterSlave has finished.
+ // This ID is returned by both the REQ callback and the MSC callback.
+ // When returned by the MSC callback, this is notification that after the AGB has been made into the clock slave, the MC_Timer expired and the RFU returned the AGB to be the clock master.
+#define ID_DISCONNECT_REQ 0x0030
+#define ID_TEST_MODE_REQ 0x0031 // not defined in SDK header
+#define ID_CPR_START_REQ 0x0032
+#define ID_CPR_POLL_REQ 0x0033
+#define ID_CPR_END_REQ 0x0034
+#define ID_UNK35_REQ 0x0035 // not defined in SDK header
+#define ID_RESUME_RETRANSMIT_AND_CHANGE_REQ 0x0037
+#define ID_STOP_MODE_REQ 0x003d
+#define ID_CLOCK_SLAVE_MS_CHANGE_ERROR_BY_DMA_REQ 0x00ff // When the AGB is the clock slave, the RFU generates an informational notice, and an automatically started DMA, such as HDMA, is generated at the instant the AGB is being returned as the clock master. This ID is notified by a REQ callback when the exchange of this information (REQ command) fails.
+
+// REQ Command ID returned by the MSC callback
+#define ID_DISCONNECTED_AND_CHANGE_REQ 0x0029
+#define ID_DATA_READY_AND_CHANGE_REQ 0x0028
+#define ID_DRAC_REQ_WITH_ACK_FLAG 0x0128
+
+// --------------------------------------------------------------------------
+//
+// Data Definitions
+//
+// --------------------------------------------------------------------------
+
+#define RFU_ID 0x00008001 // ID number of AGB-RFU device: ID returned by execution of rfu_REQBN_softReset_and_checkID.
+
+#define RFU_MBOOT_DOWNLOADER_SERIAL_NO 0x0000 // The game serial number of the multi-boot downloader (programs that boot without a Game Pak)
+
+#define RFU_API_BUFF_SIZE_RAM 0x0e8c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in RAM)
+#define RFU_API_BUFF_SIZE_ROM 0x052c // Necessary size for buffer specified by rfu_initializeAPI (fast communication version that operates the library SIO interrupt routines in ROM)
+
+#define RFU_CHILD_MAX 4 // Maximum number of slaves that can be connected to one parent device
+
+#define RFU_GAME_NAME_LENGTH 13 // Possible length of game name set by rfu_REQB_configGameData
+#define RFU_USER_NAME_LENGTH 8 // Possible length of user name set by rfu_REQB_configGameData
+
+#define RFU_H_DMA_MAX_CPU_CYCLE 42 // Maximum number of CPU cycles for H-DMA or DMA that starts with V-Blank that can operate when using RFU
+
+// Value to determine the level of the icon that displays the link strength of the wireless status (value of rfuLinkStatus->strength[0-3])
+#define RFU_LINK_ICON_LEVEL4_MAX 255 // 90% -100% (If the value is betwen 229 and 255, the icon level is 4)
+#define RFU_LINK_ICON_LEVEL4_MIN 229
+#define RFU_LINK_ICON_LEVEL3_MAX 228 // 50% - 89% (If the value is betwen 127 and 228, the icon level is 3)
+#define RFU_LINK_ICON_LEVEL3_MIN 127
+#define RFU_LINK_ICON_LEVEL2_MAX 126 // 10% - 49% (If the value is betwen 25 and 126, the icon level is 2)
+#define RFU_LINK_ICON_LEVEL2_MIN 25
+#define RFU_LINK_ICON_LEVEL1_MAX 24 // 0% - 9% (If the value is betwen 0 and 24, the icon level is 1)
+#define RFU_LINK_ICON_LEVEL1_MIN 0
+
+
+// *******************************************************
+// Definition Data for Arguments Used in Library Functions
+// *******************************************************
+// Specified by u16 mbootFlag in rfu_REQ_configGameData
+#define RFU_MBOOT_FLAG 0x01 // Enabling this flag, allows connection to a multi-boot program.
+
+// AvailSlot (number of slots available for connection) used in u16 availSlotFlag in rfu_REQ_configSystem
+#define AVAIL_SLOT4 0x0000
+#define AVAIL_SLOT3 0x0001
+#define AVAIL_SLOT2 0x0002
+#define AVAIL_SLOT1 0x0003
+
+// u8 connTypeFlag specified by rfu_setRecvBuffer
+#define TYPE_UNI 0x10 // UNI-type
+#define TYPE_NI 0x20 // NI-type
+
+// u8 connTypeFlag specified by rfu_clearSlot
+#define TYPE_UNI_SEND 0x01 // UNI-type send
+#define TYPE_UNI_RECV 0x02 // UNI-type receive
+#define TYPE_NI_SEND 0x04 // NI-type send
+#define TYPE_NI_RECV 0x08 // NI-type receive
+
+// *******************************************************
+// Definition Data Returned by Return Values for Library Functions
+// *******************************************************
+
+// The function doesn't have return value.
+// Value of u8 *status for rfu_REQ_pollConnectParent (Connection Trial Status)
+// #define CP_STATUS_DONE 0x00 // Connection successful
+// #define CP_STATUS_IN_PROCESS 0x01 // Connecting
+// #define CP_STATUS_SLOT_CLOSED 0x02 // Parent device is not in connection mode with child device
+// #define CP_STATUS_DISCONNECTED 0x03 // Disconnected by parent device while connecting
+// #define CP_STATUS_UNKNOWN 0xff // Cannot read status due to REQ-API execution error
+
+// The function doesn't exist.
+// Value of u8 *status argument for rfu_REQ_pollRecoveryConnect (Link Restore Status)
+// #define RC_STATUS_DONE 0x00 // Connection restore successful
+// #define RC_STATUS_FAILED 0x01 // Connection restore failure (meaningless to try anymore)
+// #define RC_STATUS_SEARCHING_PARENT 0x02 // Searching for parent device
+// #define RC_STATUS_UNKNOWN 0xff // Cannot read status due to REQ-API execution error
+
+// Value of u8 *linkLossReason argument for rfu_REQBN_watchLink (Reason for Link Loss)
+#define REASON_DISCONNECTED 0x00 // State of complete disconnection with rfuLL_disconnect and no possibility of restoring the link (can detect only child device)
+#define REASON_LINK_LOSS 0x01 // State of link loss that allows for the possibility for the link to be restored
+
+
+// *******************************************************
+// Definition Data Returned with Return Values for Library Functions
+// *******************************************************
+
+// Value returned by rfu_getMasterSlave
+#define AGB_CLK_SLAVE 0 // AGB clock slave
+#define AGB_CLK_MASTER 1 // AGB clock master
+
+// *******************************************************
+// Error Code Group for Library Functions
+// *******************************************************
+
+// Error codes returned by u16 REQ_result with a REQ callback when a REQ-API function is executed
+#define ERR_REQ_CMD 0x0000
+#define ERR_REQ_CMD_CLOCK_DRIFT (ERR_REQ_CMD | 0x0001) // Clock drift occurs when a REQ command is sent
+#define ERR_REQ_CMD_SENDING (ERR_REQ_CMD | 0x0002) // The next command cannot be issued because a REQ command is being sent
+#define ERR_REQ_CMD_ACK_REJECTION (ERR_REQ_CMD | 0x0003) // The REQ command was refused when issued
+#define ERR_REQ_CMD_CLOCK_SLAVE (ERR_REQ_CMD | 0x0004) // Issuing the REQ command was attempted but failed because the AGB is the clock slave
+#define ERR_REQ_CMD_IME_DISABLE (ERR_REQ_CMD | 0x0006) // Issuing the REQ command was attempted but failed because the IME register is 0
+
+#define ERR_PID_NOT_FOUND 0x0100 // The specified PID does not exist in the gRfuLinkStatus->partner[0-3].id list
+
+// Error code returned by the return value of rfu_initializeAPI
+#define ERR_RFU_API_BUFF_SIZE 0x0001
+#define ERR_RFU_API_BUFF_ADR 0x0002
+
+// Error codes returned by return values for rfu_REQBN_softReset_and_checkID
+#define ERR_ID_CHECK_IME_DISABLE 0xffffffff // ID check could not be executed because REG_IME=0 when executing rfu_REQBN_softReset_and_checkID
+
+// Error codes returned by rfu_getConnectParentStatus and rfu_CHILD_getConnectRecoveryStatus
+#define ERR_REQ_CMD_ID (ERR_REQ_CMD | 0x0010) // A required REQ command was not executed within this function execution
+
+// Error codes returned by rfu_NI_setSendData, rfu_UNI_setSendData, and rfu_NI_CHILD_setSendGameName
+#define ERR_MODE 0x0300
+#define ERR_MODE_NOT_PARENT (ERR_MODE | 0x0000) // not in SDK
+#define ERR_MODE_NOT_CONNECTED (ERR_MODE | 0x0001) // RFU is not in connection mode (parent or child)
+
+#define ERR_SLOT 0x0400
+#define ERR_SLOT_NO (ERR_SLOT | 0x0000) // The specified slot number is not right
+#define ERR_SLOT_NOT_CONNECTED (ERR_SLOT | 0x0001) // The specified slot is not connected
+#define ERR_SLOT_BUSY (ERR_SLOT | 0x0002) // The specified slot is already communicating
+#define ERR_SLOT_NOT_SENDING (ERR_SLOT | 0x0003) // The specified slot is not currently sending (Note: This is returned by rfu_UNI_re_setSendData)
+#define ERR_SLOT_TARGET (ERR_SLOT | 0x0004) // The specified target slot is not right
+
+#define ERR_SUBFRAME_SIZE 0x0500 // The specified subframe size is either larger than the remaining communication frame size or smaller than the link layer subframe header size
+
+// Error code returned by rfu_clearSlot, rfu_setRecvBuffer, and rfu_changeSendTarget
+#define ERR_COMM_TYPE 0x0600 // The specified communication format is not right
+
+// Error code returned by rfu_REQ_recvData (when receiving NI-type or UNI-type data)
+#define ERR_DATA_RECV 0x0700 // Error notification is issued in the following format.
+ // "ERR_DATA_RECV | (slot number issuing error with 0x0010<<UNI) | (slot number issuing error with 0x0001<<NI)"
+ // The actual error code is stored in gRfuSlotStatusNI or gRfuSlotStatusUNI[x]->recv.errorCode.
+
+// Error code during NI-type communication (code entered into gRfuSlotStatusNI[x]->recv.errorCode)
+#define ERR_RECV_BUFF_OVER (ERR_DATA_RECV | 0x0001) // The receive data size is larger than the receive buffer (Note: This error is used for both NI and UNI)
+#define ERR_RECV_REPLY_SUBFRAME_SIZE (ERR_DATA_RECV | 0x0002) // All frames are already in use by other communications, and a subframe for reception response could not be secured
+
+// Error code during UNI-type communication (code entered into gRfuSlotStatusUNI[x]->recv.errorCode)
+#define ERR_RECV_DATA_OVERWRITED (ERR_DATA_RECV | 0x0008) // Received new data when gRfuSlotStatusUNI[x]->recv.newDataFlag=1
+
+// not in SDK header
+#define ERR_RECV_UNK (ERR_DATA_RECV | 0x0001 | 0x0008)
+
+// *******************************************************
+// Definition Data Used by Global Variables in the Library
+// *******************************************************
+
+// gRfuLinkStatus-------------------------------------------
+// Connection status (refer to gRfuLinkStatus->parentChild)
+#define MODE_NEUTRAL 0xff // Initialization
+#define MODE_CHILD 0x00 // Child
+#define MODE_PARENT 0x01 // Parent
+
+
+// gRfuSlotStatusNI,UNI-----------------------------------
+// Definition data for NI-(Numbered Information) and UNI-(Un-Numbered Information) type communication
+
+// Definition data common to NI- and UNI-type communication
+#define LLF_P_SIZE 87 // Maximum link layer communication frame size for the Parent (Maximum number of bytes per transmission)
+#define LLF_C_SIZE 16 // " " for the Child
+#define LLSF_P_HEADER_SIZE 3 // Header size used by one link layer subframe (NI or UNI frame) for the Parent
+#define LLSF_C_HEADER_SIZE 2 // " " for the Child
+
+// Link Layer Communication Code
+#define LCOM_NULL 0x0000
+#define LCOM_NI_START 0x0001
+#define LCOM_NI 0x0002
+#define LCOM_NI_END 0x0003
+#define LCOM_UNI 0x0004
+// Flag for Slot Status Data
+#define SLOT_BUSY_FLAG 0x8000 // Slot in use
+#define SLOT_SEND_FLAG 0x0020 // Send
+#define SLOT_RECV_FLAG 0x0040 // Receive
+
+// NI- and UNI-type shared slot stand-by data (same state as gRfuSlotStatusNI[x]->send or ->recv.state or gRfuSlotStatusUNI)
+#define SLOT_STATE_READY 0x0000 // Slot initialization
+
+// Status data for NI-type communication (gRfuSlotStatusNI[x]->send or ->recv.state)
+#define SLOT_STATE_SEND_START (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI_START) // Start transmission
+#define SLOT_STATE_SENDING (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI) // Transmitting
+#define SLOT_STATE_SEND_LAST (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NI_END) // Verify transmission end
+#define SLOT_STATE_SEND_NULL (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_NULL) // Send NULL subframe to notify end of transmission
+#define SLOT_STATE_SEND_SUCCESS ( SLOT_SEND_FLAG | 0x006) // Transmission successful
+#define SLOT_STATE_SEND_FAILED ( SLOT_SEND_FLAG | 0x007) // Transmission failed
+ // Distinction of slot where transmission succeeded/failed compares gRfuSlotStatusNI[x]->send.bmSlot and same bmSlot_org
+#define SLOT_STATE_RECV_START (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI_START) // Start reception
+#define SLOT_STATE_RECEIVING (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI) // Receiving
+#define SLOT_STATE_RECV_LAST (SLOT_BUSY_FLAG | SLOT_RECV_FLAG | LCOM_NI_END) // Verify reception end
+#define SLOT_STATE_RECV_SUCCESS ( SLOT_RECV_FLAG | 0x006) // Reception successful
+#define SLOT_STATE_RECV_FAILED ( SLOT_RECV_FLAG | 0x007) // Reception failed
+#define SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN (SLOT_RECV_FLAG | 0x008) // The data was received successful, but because the end of the communication was incomplete, whether the transmission side status is successful or failed is unknown
+#define SLOT_STATE_RECV_IGNORE ( SLOT_RECV_FLAG | 0x009) // Ignore reception (refer to gRfuSlotStatusNI[x]->recv.errorCode for reason for ignoring)
+
+// Status data for UNI-type communication (refer to gRfuSlotStatusUNI[x]->send.state)
+#define SLOT_STATE_SEND_UNI (SLOT_BUSY_FLAG | SLOT_SEND_FLAG | LCOM_UNI) // Transmitting
+
+// TODO: move the 2 structs to some other header as they're declared by GF
struct UnkLinkRfuStruct_02022B14Substruct
{
u16 unk_00_0:4;
u16 unk_00_4:1;
u16 unk_00_5:1;
u16 unk_00_6:1;
- u16 unk_00_7:1;
- u16 unk_01_0:1;
- u16 unk_01_1:1;
+ u16 isChampion:1;
+ u16 hasNationalDex:1;
+ u16 gameClear:1;
u16 unk_01_2:4;
u16 unk_01_6:2;
u8 playerTrainerId[2];
@@ -93,176 +299,386 @@ struct __attribute__((packed, aligned(2))) UnkLinkRfuStruct_02022B14
u8 unk_0a_0:7;
u8 unk_0a_7:1;
u8 playerGender:1;
- u8 unk_0b_1:7;
+ u8 level:7;
u8 unk_0c;
};
-struct RfuStruct
+// the following structs are not documented in SDK
+struct RfuPacket8
+{
+ u8 data[0x74];
+};
+
+struct RfuPacket32
+{
+ u32 command;
+ u32 data[0x1C];
+};
+
+union RfuPacket
+{
+ struct RfuPacket32 rfuPacket32;
+ struct RfuPacket8 rfuPacket8;
+};
+
+struct STWIStatus
{
- vs32 unk_0;
- u8 txParams;
- u8 unk_5;
- u8 activeCommand;
- u8 unk_7;
- u8 unk_8;
- u8 unk_9;
+ vs32 state;
+ u8 reqLength;
+ u8 reqNext;
+ u8 reqActiveCommand;
+ u8 ackLength;
+ u8 ackNext;
+ u8 ackActiveCommand;
u8 timerSelect;
u8 unk_b;
- int timerState;
+ u32 timerState; // this field is s32 in emerald
vu8 timerActive;
u8 unk_11;
- vu16 unk_12;
+ vu16 error;
vu8 msMode;
- u8 unk_15;
+ u8 recoveryCount;
u8 unk_16;
u8 unk_17;
void (*callbackM)();
- void (*callbackS)();
- u32 callbackID;
- union RfuPacket * txPacket;
- union RfuPacket * rxPacket;
+ void (*callbackS)(u16);
+ void (*unk_20)(void);
+ union RfuPacket *txPacket;
+ union RfuPacket *rxPacket;
vu8 unk_2c;
- u8 padding[3];
};
+// This struct is used as u8 array in SDK.
struct RfuIntrStruct
{
- u8 rxPacketAlloc[0x74];
- u8 txPacketAlloc[0x74];
- u8 block1[0x960];
- u8 block2[0x30];
+ union RfuPacket rxPacketAlloc;
+ union RfuPacket txPacketAlloc;
+ u8 block1[0x960]; // size of librfu_intr.s binary
+ struct STWIStatus block2;
};
-struct RfuUnk1
+// Data Structure for Transmitting UNI-Type Data
+struct UNISend
{
- u16 unk_0;
- u8 unk_2;
- u8 unk_3;
- u8 fill_4[14];
- u8 unk_12;
- u32 unk_14;
- u32 unk_18;
- struct RfuIntrStruct unk_1c;
+ u16 state; // Slot communication state (SLOT_STATE_READY, SLOT_STATE_SEND_UNI)
+ u8 dataReadyFlag; // Flag indicating transmission data is prepared (0: data sent; 1: transmission data ready)
+ // Set with rfu_UNI_re_setSendData or rfu_UNI_readySendData, cleared when data is sent with rfu_REQ_sendData.
+ u8 bmSlot; // Expresses transmission destination slot as bits
+ u16 payloadSize; // Payload size of 1 transmission. "size" specified by rfu_UNI_setSendData or rfu_UNI_re_setSendData is used.
+ const void *src; // Beginning address of transmission data
};
-struct RfuUnk2
+// Data Structure for Receiving UNI Data
+struct UNIRecv
{
- u16 unk_0;
- u16 unk_2;
- u8 fill_4[0x16];
- u8 unk_1a;
- u8 fill_1b[0x19];
- u16 unk_34;
- u16 unk_36;
- u8 fill_38[0x16];
- u8 unk_4e;
- u8 fill_4f[0x12];
- u8 unk_61;
- u8 fill_62[6];
- void *unk_68;
- void *unk_6c;
- u8 unk_70[0x70];
+ u16 state; // Slot communication state (SLOT_STATE_READY, SLOT_STATE_RECEIVING, SLOT_STATE_RECV_IGNORE)
+ u16 errorCode; // Error code during reception
+ u16 dataSize; // Size of receive data
+ u8 newDataFlag; // Flag indicating whether receive data has newly arrived (0: no newly arrived data; 1: newly arrived data)
+ // The flag is cleared with rfu_UNI_clearRecvNewDataFlag; it is set when data is received with rfu_REQ_recvData.
+ u8 dataBlockFlag; // Flag for unreferenced receive data overwrite block (default is 0 Note: not used)
};
-struct RfuUnk3
+// Slot Status Data Structure for UNI-Type Communication
+struct RfuSlotStatusUNI
{
- u32 unk_0;
- u32 unk_4;
- u8 unk_8[0xD4];
- u32 unk_dc;
+ struct UNISend send; // Transmission Status
+ struct UNIRecv recv; // Reception Status
+ void *recvBuffer; // Reception Buffer Address
+ u32 recvBufferSize; // Reception Buffer Size
};
-struct RfuUnk5Sub
+#define WINDOW_COUNT 4
+
+struct NIComm
{
- u16 unk_00;
- u8 unk_02;
- u16 unk_04;
- struct UnkLinkRfuStruct_02022B14 unk_06;
- u8 fill_13[1];
- u8 playerName[PLAYER_NAME_LENGTH + 1];
+ u16 state; // Communication state of slot
+ u16 failCounter; // Count of failed transmissions/receptions (Count is increased when transmission/reception of data does not succeed within 1PF=16.7 ms)
+ const u8 *now_p[WINDOW_COUNT]; // Address of current send/receive (The data is divided into WINDOW_COUNT blocks and sent in payloadSize units.)
+ // remainSize is u32 in SDK. This is a hack to match ASM
+ s32 remainSize; // Size of remaining communication data
+ u16 errorCode; // Error code
+ u8 bmSlot; // Expresses the current communication slot in bits
+ // (When sending from the Master, because multiple slaves can be specified with bmSlot, communications are terminated based on the failCounter for each child device)
+ // Parameters used inside the Library
+ u8 recvAckFlag[WINDOW_COUNT];
+ u8 ack;
+ u8 phase;
+ u8 n[WINDOW_COUNT];
+ // Parameters indicating the current communication content
+ const void *src; // Start address transmission data (valid only for transmitting device)
+ u8 bmSlotOrg; // Expresses the communication source slot at the beginning of the transmission in bits (valid only for transmitting device)
+ u8 dataType; // Transmission/reception data type (0: User data; 1: Game identification information)
+ u16 payloadSize; // Payload size for one transmission
+ u32 dataSize; // Size of transmission/reception data
+ // Calculated by subtracting link layer header size from subFrameSize specified by the rfu_NI_setSendData function
};
-struct RfuUnk5
+struct RfuSlotStatusNI
{
- u8 unk_00;
- u8 unk_01;
- u8 unk_02;
- u8 unk_03;
- u8 unk_04;
- u8 unk_05;
- u8 unk_06;
- u8 unk_07;
- u8 unk_08;
- u8 filler_09[1];
- u8 unk_0a[4];
- u8 filler_0e[6];
- struct RfuUnk5Sub unk_14[4];
+ struct NIComm send; // Transmission Status
+ struct NIComm recv; // Reception Status
+ void *recvBuffer; // Reception Buffer Address
+ u32 recvBufferSize; // Reception Buffer Size
};
-extern struct RfuStruct * gRfuState;
+// Game Identification Information Data Structure
+struct RfuTgtData
+{
+ u16 id; // ID of parent candidate ID of connection partner
+ u8 slot; // Slot number where parent candidate can enter Connection slot number
+ u8 mbootFlag; // Flag to indicate whether or not the parent candidate Flag to indicate whether or not the connection partner
+ // is multiboot program for download is multiboot program for download
+ u16 serialNo; // Game serial number of parent candidate Game serial number of connection partner
+ u8 gname[RFU_GAME_NAME_LENGTH + 2]; // Game name of parent candidate Game name of connection partner
+ u8 uname[RFU_USER_NAME_LENGTH + 1]; // User name for parent candidate User name for connection partner
+};
+
+struct RfuLinkStatus
+{
+ u8 parentChild; // Connection status (0x01:MODE_PARENT 0x00:MODE_CHILD 0xff:MODE_NEUTRAL)
+ u8 connCount; // Number of connections
+ u8 connSlotFlag; // Flag to indicate in bits the connection slot (0x01<<Connection slot number)
+ u8 linkLossSlotFlag; // Flag to indicate in bits the slot where the link loss was generated (")
+ u8 sendSlotNIFlag; // Flag to indicate in bits the slot where NI-type send is occurring (")
+ u8 recvSlotNIFlag; // Flag to indicate in bits the slot where NI-type receive is occurring (")
+ u8 sendSlotUNIFlag; // Flag to indicate in bits the slot where UNI-type send is occurring (")
+ u8 getNameFlag; // Parent: Flag to indicate whether or not game identification information was obtained from the child connected to this slot (")
+ // Child: Flag to indicate whether or not game identification information was sent to the parent connected to this slot (")
+ u8 findParentCount; // Number of parent candidates discovered with rfu_REQ_xxxSearchParent, valid only with a child device
+ u8 watchInterval; // Link monitor execution interval (16.7 ms unit AGB picture frame)
+ u8 strength[RFU_CHILD_MAX]; // Link strength value (0x00 - 0xff; 0x00 is link loss. Updates with rfu_REQBN_watchLink)
+ vu8 LLFReadyFlag; // Indicates whether the link layer frame to send next has be constructed (Flag is on when calling rfu_constructLLFrame, flag is cleared when sending by rfu_REQ_sendData.)
+ u8 remainLLFrameSizeParent; // Remaining size of the link layer communication frame for the parent device
+ u8 remainLLFrameSizeChild[RFU_CHILD_MAX]; // Remaining size of the link layer communication frame for each slot for child device
+ struct RfuTgtData partner[RFU_CHILD_MAX]; // Parent, Child: When there is a connection, the matrix element corresponding to the number of the connected slot
+ // stores the game identification information for the connection partner.
+ // Child: Stores the game identification information for the parent candidate discovered when executing rfu_REQ_xxxxSearchParent.
+ struct RfuTgtData my; // The device's own game identification information (unrelated to the element slot value)
+};
+
+// the following structs are not documented in SDK
+struct RfuFixed
+{
+ void (*reqCallback)(u16, u16);
+ void (*fastCopyPtr)(const u8 **, u8 **, s32);
+ u16 fastCopyBuffer[24];
+ u32 fastCopyBuffer2[12];
+ u32 LLFBuffer[29];
+ struct RfuIntrStruct *STWIBuffer;
+};
-extern struct RfuUnk5 * gUnknown_3007460;
-extern u32 *gUnknown_3007464;
-extern struct RfuUnk3 * gUnknown_3007468;
-extern struct RfuUnk2 * gUnknown_3007450[4];
-extern struct RfuUnk1 * gUnknown_3007440[4];
-extern struct {
+struct RfuStatic
+{
+ u8 flags;
+ u8 NIEndRecvFlag;
+ u8 recvRenewalFlag;
+ u8 commExistFlag;
+ u8 recvErrorFlag;
+ u8 recoveryBmSlot;
+ u8 nowWatchInterval;
+ u8 nullFrameCount;
+ u8 emberCount;
+ u8 SCStartFlag;
+ u8 linkEmergencyFlag[4];
+ u8 lsFixedCount[4];
+ u16 cidBak[4];
+ u16 unk_1a;
+ u16 reqResult;
+ u16 tryPid;
+ u16 watchdogTimer;
+ u32 totalPacketSize;
+};
+
+struct RfuSIO32Id
+{
u8 unk0;
u8 unk1;
u16 unk2;
u16 unk4;
- u8 fill6[4];
+ u16 unk6;
+ u16 unk8; // unused
u16 unkA;
-} gUnknown_3007470;
+};
-extern void rfu_STC_clearAPIVariables(void);
+struct RfuAPIBuffer
+{
+ struct RfuLinkStatus linkStatus;
+ struct RfuStatic static_;
+ struct RfuFixed fixed;
+ struct RfuSlotStatusNI NI[RFU_CHILD_MAX];
+ struct RfuSlotStatusUNI UNI[RFU_CHILD_MAX];
+ struct RfuIntrStruct intr;
+};
-void STWI_init_all(struct RfuIntrStruct * interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
-void rfu_REQ_stopMode(void);
-void rfu_waitREQComplete(void);
+extern struct STWIStatus *gSTWIStatus;
+extern struct RfuLinkStatus *gRfuLinkStatus;
+extern struct RfuStatic *gRfuStatic;
+extern struct RfuFixed *gRfuFixed;
+extern struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX];
+extern struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX];
+extern struct RfuSIO32Id gRfuSIO32Id;
+
+// librfu_s32id
+s32 AgbRFU_checkID(u8);
+
+// Arguments with "bm..." specify slots of the form (0x01 << slot number) that are the object of a function operation.
+
+// librfu_rfu
+// API Initialization and Initial Settings
+ // API Initialization
+u16 rfu_initializeAPI(struct RfuAPIBuffer *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p, bool8 copyInterruptToRam);
+ // Set Timer Interrupt
+void rfu_setTimerInterrupt(u8 timerNo, IntrFunc *timerIntrTable_p);
+ // Resident Function called from within a V-Blank Interrupt
+u16 rfu_syncVBlank(void);
+ // Specify REQ Callback function
+void rfu_setREQCallback(void (*callback)(u16 reqCommandId, u16 reqResult));
+ // REQ-API Execution Completion Wait
+u16 rfu_waitREQComplete(void);
+
+// RFU Initialization and Initial Settings
+ // RFU Startup and ID Check (Forced RFU reset occurs simultaneously)
u32 rfu_REQBN_softReset_and_checkID(void);
-void rfu_REQ_sendData(u8);
-void rfu_setMSCCallback(void (*func)(u16));
-void rfu_setREQCallback(void (*func)(u16, u16));
-bool8 rfu_getMasterSlave(void);
-void rfu_REQBN_watchLink(u16 a0, u8 *a1, u8 *a2, u8 *a3);
-bool16 rfu_syncVBlank(void);
+ // RFU Reset
void rfu_REQ_reset(void);
-void rfu_REQ_configSystem(u16, u8, u8);
-void rfu_REQ_configGameData(u8, u16, struct UnkLinkRfuStruct_02022B14 *, u8 *);
+ // Set RFU to Stop Mode (Power Down)
+void rfu_REQ_stopMode(void);
+ // RFU Hardware Settings
+void rfu_REQ_configSystem(u16 availSlotFlag, u8 maxMFrame, u8 mcTimer);
+ // Game Identification Information Configuration
+void rfu_REQ_configGameData(u8 mbootFlag, u16 serialNo, const u8 *gname, const u8 *uname);
+
+// RFU Connection Process
+ // Operate as parent device; search for and connect to child device
void rfu_REQ_startSearchChild(void);
void rfu_REQ_pollSearchChild(void);
void rfu_REQ_endSearchChild(void);
+ // Operate as child device; search for parent device
void rfu_REQ_startSearchParent(void);
void rfu_REQ_pollSearchParent(void);
void rfu_REQ_endSearchParent(void);
-void rfu_REQ_startConnectParent(u16);
+ // Operate as child device; connect to specified parent device
+void rfu_REQ_startConnectParent(u16 pid);
void rfu_REQ_pollConnectParent(void);
void rfu_REQ_endConnectParent(void);
-void rfu_REQ_CHILD_startConnectRecovery(u8);
+u16 rfu_getConnectParentStatus(u8 *status,u8 *connectSlotNo);
+ // Restore link from child device
+void rfu_REQ_CHILD_startConnectRecovery(u8 bmRecoverySlot);
void rfu_REQ_CHILD_pollConnectRecovery(void);
void rfu_REQ_CHILD_endConnectRecovery(void);
+u16 rfu_CHILD_getConnectRecoveryStatus(u8 *status);
+
+// RFU Link Management
+ // Link Monitoring
+u16 rfu_REQBN_watchLink(u16 reqCommandId, u8 *bmLinkLossSlot, u8 *linkLossReason, u8 *parentBmLinkRecoverySlot);
+ // Link Disconnect
+void rfu_REQ_disconnect(u8 bmDisconnectSlot);
+
+// Relation of clock between AGB and RFU
+ // Switch to AGB clock slave
void rfu_REQ_changeMasterSlave(void);
-void rfu_REQ_RFUStatus(void);
-void rfu_getRFUStatus(u8 *status);
-u8 *rfu_getSTWIRecvBuffer(void);
-u8 rfu_NI_CHILD_setSendGameName(u8 a0, u8 a1);
-void rfu_clearSlot(u8 a0, u8 a1);
+ // Acquire either the master or slave clock from the current AGB-RFU
+bool8 rfu_getMasterSlave(void);
+
+// Communication Configuration
+ // MSC Callback Configuration
+void rfu_setMSCCallback(void (*callback)(u16 reqCommandId));
+ // Shared by NI- and UNI-type communications
+ // Clear Communication Status
void rfu_clearAllSlot(void);
-bool16 rfu_CHILD_getConnectRecoveryStatus(u8 *status);
-bool16 rfu_getConnectParentStatus(u8 *status, u8 *a1);
-bool16 rfu_UNI_PARENT_getDRAC_ACK(u8 *a0);
-void rfu_REQ_disconnect(u8 who);
-void rfu_changeSendTarget(u8 a0, u8 who, u8 a2);
-void rfu_NI_stopReceivingData(u8 who);
-u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam);
-void rfu_setTimerInterrupt(u8 which, IntrFunc *intr);
-void rfu_setRecvBuffer(u8 a0, u8 a1, void *a2, size_t a3);
-bool16 rfu_UNI_setSendData(u8 flag, void *ptr, u8 size);
-void rfu_REQ_recvData(void);
-void rfu_UNI_readySendData(u8 a0);
-void rfu_UNI_clearRecvNewDataFlag(u8 a0);
+u16 rfu_clearSlot(u8 connTypeFlag, u8 slotStatusIndex);
+ // Set Receive Buffer
+u16 rfu_setRecvBuffer(u8 connType, u8 slotNo, void *buffer, u32 buffSize);
+
+// Receive/Send Data
+ // UNI-type communication
+ // Set transmission data
+u16 rfu_UNI_setSendData(u8 bmSendSlot, const void *src, u8 size);
+ // Enable transmission data
+void rfu_UNI_readySendData(u8 slotStatusIndex);
+ // Change address or size of transmission data and enable transmission data
+u16 rfu_UNI_changeAndReadySendData(u8 slotStatusIndex, const void *src, u8 size);
+ // Used only by parent device. At the beginning of a MSC Callback that received notification that the data transmission completed, an ACK flag is obtained.
+u16 rfu_UNI_PARENT_getDRAC_ACK(u8 *ackFlag);
+ // Clear the flag that indicates newly arrived reception data
+void rfu_UNI_clearRecvNewDataFlag(u8 slotStatusIndex);
+ // NI-type Communication
+ // Set transmission data
+u16 rfu_NI_setSendData(u8 bmSendSlot, u8 subFrameSize, const void *src, u32 size);
+ // Used only by child device. After establishing connection at the RFU level, configure transmission of child device game identification information in order to authenticate connection
+u16 rfu_NI_CHILD_setSendGameName(u8 slotNo, u8 subFrameSize);
+ // Stop the NI data currently being received
+u16 rfu_NI_stopReceivingData(u8 slotStatusIndex);
+ // Shared by NI- and UNI-type communications
+ // Narrow transmission targets for transmission data.
+u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot);
+
+ // Functions for sending/receiving data to RFU
+ // Data transmission
+void rfu_REQ_sendData(u8 clockChangeFlag);
+ // Used only by parent device. Resend previous sent data (packet)
void rfu_REQ_PARENT_resumeRetransmitAndChange(void);
-void rfu_NI_setSendData(u8, u8, const void *, u32);
+ // Read receive data
+void rfu_REQ_recvData(void);
+
+// For Multi-boot
+ // Inherits the information about the link established by the downloader just after the program downloaded with multiboot starts up.
+u16 rfu_MBOOT_CHILD_inheritanceLinkStatus(void);
+
+// For Debug
+ // Obtain address of the SWTI-layer receive buffer
+struct RfuIntrStruct *rfu_getSTWIRecvBuffer(void);
+ // Obtain RFU state
+void rfu_REQ_RFUStatus(void);
+u16 rfu_getRFUStatus(u8 *rfuState);
+ // Using RFU, generate noise (jamming radio waves) for other RFUs
+void rfu_REQ_noise(void);
+
+// librfu_intr
+void IntrSIO32(void);
+
+// librfu_stwi
+void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
+void STWI_set_MS_mode(u8 mode);
+void STWI_init_Callback_M(void);
+void STWI_init_Callback_S(void);
+void STWI_set_Callback_M(void *callbackM);
+void STWI_set_Callback_S(void (*callbackS)(u16));
+void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect);
+void AgbRFU_SoftReset(void);
+void STWI_set_Callback_ID(void (*func)(void));
+u16 STWI_read_status(u8 index);
+u16 STWI_poll_CommandEnd(void);
+void STWI_send_DataRxREQ(void);
+void STWI_send_MS_ChangeREQ(void);
+void STWI_send_StopModeREQ(void);
+void STWI_send_SystemStatusREQ(void);
+void STWI_send_GameConfigREQ(const u8 *unk1, const u8 *data);
+void STWI_send_ResetREQ(void);
+void STWI_send_LinkStatusREQ(void);
+void STWI_send_VersionStatusREQ(void);
+void STWI_send_SlotStatusREQ(void);
+void STWI_send_ConfigStatusREQ(void);
+void STWI_send_ResumeRetransmitAndChangeREQ(void);
+void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3);
+void STWI_send_SC_StartREQ(void);
+void STWI_send_SC_PollingREQ(void);
+void STWI_send_SC_EndREQ(void);
+void STWI_send_SP_StartREQ(void);
+void STWI_send_SP_PollingREQ(void);
+void STWI_send_SP_EndREQ(void);
+void STWI_send_CP_StartREQ(u16 unk1);
+void STWI_send_CP_PollingREQ(void);
+void STWI_send_CP_EndREQ(void);
+void STWI_send_DataTxREQ(const void *in, u8 size);
+void STWI_send_DataTxAndChangeREQ(const void *in, u8 size);
+void STWI_send_DataReadyAndChangeREQ(u8 unk);
+void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1);
+void STWI_send_DisconnectREQ(u8 unk);
+void STWI_send_TestModeREQ(u8 unk0, u8 unk1);
+void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2);
+void STWI_send_CPR_PollingREQ(void);
+void STWI_send_CPR_EndREQ(void);
#endif // GUARD_LIBRFU_H
diff --git a/include/link.h b/include/link.h
index 9465f0404..d61152d8a 100644
--- a/include/link.h
+++ b/include/link.h
@@ -259,5 +259,7 @@ void sub_80FA42C(void);
void sub_800B284(struct LinkPlayer * linkPlayer);
bool8 IsWirelessAdapterConnected(void);
bool8 sub_800A474(u8 a0);
+void LinkVSync(void);
+bool8 HandleLinkConnection(void);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index d1bc2b2bc..033f4c8d4 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -46,6 +46,8 @@ void sub_80FBB20(void);
bool8 sub_80FA484(bool32 a0);
void var_800D_set_xB(void);
struct UnkLinkRfuStruct_02022B14 *sub_80F9800(void);
+void sub_80FCF34(void);
+void InitRFU(void);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/include/load_save.h b/include/load_save.h
index 10d1083a8..20df691e5 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -4,6 +4,8 @@
#include "global.h"
extern bool32 gFlashMemoryPresent;
+extern struct SaveBlock1 gSaveBlock1;
+extern struct SaveBlock2 gSaveBlock2;
void ClearSav2(void);
void ClearSav1(void);
diff --git a/include/m4a.h b/include/m4a.h
index 2bb7f2124..ee23d917a 100644
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -9,6 +9,7 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_SE3;
+extern struct SoundInfo gSoundInfo;
void m4aSoundVSync(void);
void m4aSoundVSyncOn(void);
diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h
index 5ab5584e5..ea85baf71 100644
--- a/include/map_preview_screen.h
+++ b/include/map_preview_screen.h
@@ -49,5 +49,6 @@ void sub_80F85BC(u16 a0);
u16 sub_80F856C(u8 id);
bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime);
bool32 sub_80F83B0(void);
+const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec);
#endif //GUARD_MAP_PREVIEW_SCREEN_H
diff --git a/include/overworld.h b/include/overworld.h
index 04d28701c..69c1e964f 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -149,5 +149,8 @@ void sub_8055778(int);
void sub_8055738(u8 loc);
void sub_8056078(void *, void *);
+void sub_805546C(u8 a0);
+bool32 sub_80582E0(void);
+bool32 sub_8058274(void);
#endif //GUARD_OVERWORLD_H
diff --git a/include/pokemon.h b/include/pokemon.h
index aa75a27fd..ae909018c 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -509,6 +509,7 @@ extern const u16 *const gLevelUpLearnsets[];
extern const u8 gFacilityClassToPicIndex[];
extern const u8 gFacilityClassToTrainerClass[];
extern const struct SpriteTemplate gUnknown_825DEF0[];
+extern const u8 gPPUpGetMask[];
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 3695d46df..2b8f96316 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -34,5 +34,6 @@ enum PokemonSummaryScreenPage
s32 GetLastViewedMonIndex(void);
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
+void sub_8138B38(u8);
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/region_map.h b/include/region_map.h
index 67287b6c4..dd4fe491b 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -24,77 +24,25 @@ enum {
MAPSECTYPE_CITY_CANTFLY,
};
-struct RegionMap {
- /*0x000*/ u16 mapSecId;
- /*0x002*/ u8 iconDrawType;
- /*0x003*/ u8 posWithinMapSec;
- /*0x004*/ u8 mapSecName[0x14];
- /*0x018*/ u8 (*inputCallback)(void);
- /*0x01c*/ struct Sprite *cursorSprite;
- /*0x020*/ struct Sprite *playerIconSprite;
- /*0x024*/ s32 bg2x;
- /*0x028*/ s32 bg2y;
- /*0x02c*/ u32 bg2pa;
- /*0x034*/ u32 bg2pc;
- /*0x030*/ u32 bg2pb;
- /*0x038*/ u32 bg2pd;
- /*0x03c*/ s32 unk_03c;
- /*0x040*/ s32 unk_040;
- /*0x044*/ s32 unk_044;
- /*0x048*/ s32 unk_048;
- /*0x04c*/ s32 unk_04c;
- /*0x050*/ s32 unk_050;
- /*0x054*/ u16 cursorPosX;
- /*0x056*/ u16 cursorPosY;
- /*0x058*/ u16 cursorTileTag;
- /*0x05a*/ u16 cursorPaletteTag;
- /*0x05c*/ s16 scrollX;
- /*0x05e*/ s16 scrollY;
- /*0x060*/ s16 unk_060;
- /*0x062*/ s16 unk_062;
- /*0x064*/ u16 zoomedCursorPosX;
- /*0x066*/ u16 zoomedCursorPosY;
- /*0x068*/ s16 zoomedCursorDeltaY;
- /*0x06a*/ s16 zoomedCursorDeltaX;
- /*0x06c*/ u16 zoomedCursorMovementFrameCounter;
- /*0x06e*/ u16 unk_06e;
- /*0x070*/ u16 playerIconTileTag;
- /*0x072*/ u16 playerIconPaletteTag;
- /*0x074*/ u16 playerIconSpritePosX;
- /*0x076*/ u16 playerIconSpritePosY;
- /*0x078*/ bool8 zoomed;
- /*0x079*/ u8 initStep;
- /*0x07a*/ s8 cursorMovementFrameCounter;
- /*0x07b*/ s8 cursorDeltaX;
- /*0x07c*/ s8 cursorDeltaY;
- /*0x07d*/ bool8 needUpdateVideoRegs;
- /*0x07e*/ bool8 blinkPlayerIcon;
- /*0x07f*/ bool8 playerIsInCave;
- /*0x080*/ u8 bgNum;
- /*0x081*/ u8 charBaseIdx;
- /*0x082*/ u8 mapBaseIdx;
- /*0x083*/ bool8 bgManaged;
- /*0x084*/ u8 filler_084[0x100];
- /*0x184*/ u8 cursorSmallImage[0x100];
- /*0x284*/ u8 cursorLargeImage[0x600];
-}; // size = 0x884
+enum {
+ MAPPERM_0,
+ MAPPERM_1,
+ MAPPERM_2,
+ MAPPERM_3
+};
+
+enum {
+ REGIONMAP_KANTO,
+ REGIONMAP_SEVII123,
+ REGIONMAP_SEVII45,
+ REGIONMAP_SEVII67
+};
// Exported RAM declarations
// Exported ROM declarations
-void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed);
-bool8 sub_8122DB0(void);
-void UpdateRegionMapVideoRegs(void);
-void InitRegionMap(struct RegionMap *regionMap, u8 argument);
-u8 sub_81230AC(void);
-bool8 sub_8123514(void);
-void FreeRegionMapIconResources(void);
-u16 GetRegionMapSectionIdAt(u16 x, u16 y);
-void CreateRegionMapPlayerIcon(u16 x, u16 y);
-void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
-u8 *GetMapName(u8 *, u16, u16);
-bool32 sub_8124668(u8 mapSecId);
-void GetMapNameGeneric(u8 *, u8);
+u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill);
+u8 *GetMapNameGeneric(u8 *dest, u16 mapsec);
void sub_80BFF50(u8 a0, void (*a1)(void));
void MCB2_FlyMap(void);
diff --git a/include/save_failed_screen.h b/include/save_failed_screen.h
index feffa2014..5950430d2 100644
--- a/include/save_failed_screen.h
+++ b/include/save_failed_screen.h
@@ -2,5 +2,7 @@
#define GUARD_SAVE_FAILED_SCREEN_H
extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
+void sub_80F50F4(void);
+bool32 sub_80F5118(void);
#endif //GUARD_SAVE_FAILED_SCREEN_H
diff --git a/include/script_pokemon_80F8.h b/include/script_pokemon_80F8.h
deleted file mode 100644
index 8a5bb12e1..000000000
--- a/include/script_pokemon_80F8.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef GUARD_SCRIPTPOKE80F8_H
-#define GUARD_SCRIPTPOKE80F8_H
-
-#include "global.h"
-
-void ShowContestWinner(void);
-u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
-u8 ScriptGiveEgg(u16);
-void CreateScriptedWildMon(u16, u8, u16);
-void ScriptSetMonMoveSlot(u8, u16, u8);
-
-#endif
diff --git a/include/script_pokemon_81B9.h b/include/script_pokemon_81B9.h
deleted file mode 100644
index d49095fcc..000000000
--- a/include/script_pokemon_81B9.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef GUARD_SCRIPTPOKE81B9_H
-#define GUARD_SCRIPTPOKE81B9_H
-
-#include "global.h"
-
-void sub_81B9404(void);
-
-#endif
diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util.h
index d0b8949e4..5f7dc4306 100644
--- a/include/script_pokemon_util_80A0058.h
+++ b/include/script_pokemon_util.h
@@ -1,10 +1,11 @@
-#ifndef GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
-#define GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
+#ifndef GUARD_SCRIPT_POKEMON_UTIL_H
+#define GUARD_SCRIPT_POKEMON_UTIL_H
bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3);
bool8 ScriptGiveEgg(u16 species);
void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot);
void HealPlayerParty(void);
void ReducePlayerPartyToThree(void);
+void CreateScriptedWildMon(u16 species, u8 level, u16 item);
-#endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H
+#endif //GUARD_SCRIPT_POKEMON_UTIL_H
diff --git a/include/strings.h b/include/strings.h
index 33650663d..5b75da174 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1003,4 +1003,34 @@ extern const u8 gText_UnionRoomTradesBattles[];
extern const u8 gText_LinkBattles[];
extern const u8 gText_LinkCableBattles[];
+// region_map
+extern const u8 gText_RegionMap_DPadMove[];
+extern const u8 gText_RegionMap_Space[];
+extern const u8 gText_RegionMap_AButtonGuide[];
+extern const u8 gText_RegionMap_AButtonCancel[];
+extern const u8 gText_RegionMap_AButtonCancel2[];
+extern const u8 gText_RegionMap_AButtonSwitch[];
+extern const u8 gText_RegionMap_AButtonOK[];
+extern const u8 gText_RegionMap_UpDownPick[];
+extern const u8 gText_RegionMap_NoData[];
+extern const u8 gText_RegionMap_AreaDesc_ViridianForest[];
+extern const u8 gText_RegionMap_AreaDesc_MtMoon[];
+extern const u8 gText_RegionMap_AreaDesc_DiglettsCave[];
+extern const u8 gText_RegionMap_AreaDesc_VictoryRoad[];
+extern const u8 gText_RegionMap_AreaDesc_PokemonMansion[];
+extern const u8 gText_RegionMap_AreaDesc_SafariZone[];
+extern const u8 gText_RegionMap_AreaDesc_RockTunnel[];
+extern const u8 gText_RegionMap_AreaDesc_SeafoamIslands[];
+extern const u8 gText_RegionMap_AreaDesc_PokemonTower[];
+extern const u8 gText_RegionMap_AreaDesc_CeruleanCave[];
+extern const u8 gText_RegionMap_AreaDesc_PowerPlant[];
+extern const u8 gText_RegionMap_AreaDesc_MtEmber[];
+extern const u8 gText_RegionMap_AreaDesc_BerryForest[];
+extern const u8 gText_RegionMap_AreaDesc_IcefallCave[];
+extern const u8 gText_RegionMap_AreaDesc_LostCave[];
+extern const u8 gText_RegionMap_AreaDesc_TanobyRuins[];
+extern const u8 gText_RegionMap_AreaDesc_AlteringCave[];
+extern const u8 gText_RegionMap_AreaDesc_PatternBush[];
+extern const u8 gText_RegionMap_AreaDesc_DottedHole[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/text.h b/include/text.h
index 578a0d735..e538123fd 100644
--- a/include/text.h
+++ b/include/text.h
@@ -250,12 +250,11 @@ u16 RenderText(struct TextPrinter *textPrinter);
s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
s32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
-u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str);
+u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7);
u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
u8 GetKeypadIconTileOffset(u8 keypadIconId);
u8 GetKeypadIconWidth(u8 keypadIconId);
u8 GetKeypadIconHeight(u8 keypadIconId);
-void SetDefaultFontsPointer(void);
u8 GetFontAttribute(u8 fontId, u8 attributeId);
u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension);
void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese);
diff --git a/ld_script.txt b/ld_script.txt
index e3ac7b14c..2544f8d42 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -1,5 +1,3 @@
-ENTRY(Start)
-
gNumMusicPlayers = 4;
gMaxLines = 0;
@@ -81,7 +79,7 @@ SECTIONS {
src/util.o(.text);
src/blend_palette.o(.text);
src/daycare.o(.text);
- asm/battle_interface.o(.text);
+ src/battle_interface.o(.text);
asm/smokescreen.o(.text);
src/pokeball.o(.text);
src/load_save.o(.text);
@@ -147,10 +145,10 @@ SECTIONS {
src/script_menu.o(.text);
asm/naming_screen.o(.text);
src/money.o(.text);
- asm/script_pokemon_util_80A0058.o(.text);
+ src/script_pokemon_util.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
- asm/pc_screen_effect.o(.text);
+ src/pc_screen_effect.o(.text);
src/fldeff_poison.o(.text);
src/fldeff_berrytree.o(.text);
src/field_special_scene.o(.text);
@@ -180,9 +178,10 @@ SECTIONS {
src/mon_markings.o(.text);
src/mail.o(.text);
src/menu_helpers.o(.text);
- asm/script_pokemon_util_80BF8FC.o(.text);
+ src/party_menu_specials.o(.text);
src/heal_location.o(.text);
- asm/region_map.o(.text);
+ src/region_map.o(.text);
+ src/image_processing_effects.o(.text);
src/battle_ai_script_commands.o(.text);
src/fldeff_rocksmash.o(.text);
src/fldeff_dig.o(.text);
@@ -318,9 +317,10 @@ SECTIONS {
src/agb_flash_1m.o(.text);
src/agb_flash_mx.o(.text);
src/agb_flash_le.o(.text);
- asm/librfu_stwi.o(.text);
+ src/librfu_stwi.o(.text);
asm/librfu_intr.o(.text);
- asm/librfu.o(.text);
+ src/librfu_rfu.o(.text);
+ src/librfu_sio32id.o(.text);
src/isagbprn.o(.text);
asm/libagbsyscall.o(.text);
*libgcc.a:_call_via_rX.o(.text);
@@ -405,7 +405,7 @@ SECTIONS {
src/util.o(.rodata);
src/daycare.o(.rodata);
src/battle_gfx_sfx_util.o(.rodata);
- data/battle_interface.o(.rodata);
+ src/battle_interface.o(.rodata);
src/pokeball.o(.rodata);
src/trade.o(.rodata);
src/trade_scene.o(.rodata);
@@ -479,7 +479,8 @@ SECTIONS {
src/mon_markings.o(.rodata);
src/mail.o(.rodata);
src/heal_location.o(.rodata);
- data/region_map.o(.rodata);
+ src/region_map.o(.rodata);
+ src/image_processing_effects.o(.rodata);
src/battle_ai_script_commands.o(.rodata);
data/fldeff_flash.o(.rodata);
src/field_specials.o(.rodata);
@@ -939,7 +940,8 @@ SECTIONS {
src/agb_flash_1m.o(.rodata);
src/agb_flash_mx.o(.rodata);
src/agb_flash_le.o(.rodata);
- data/librfu_rodata.o(.rodata);
+ src/librfu_rfu.o(.rodata);
+ src/librfu_sio32id.o(.rodata);
src/isagbprn.o(.rodata);
*libgcc.a:_divdi3.o(.rodata);
*libgcc.a:_udivdi3.o(.rodata);
diff --git a/src/agb_flash.c b/src/agb_flash.c
index 5b171abcb..7eb4ae737 100644
--- a/src/agb_flash.c
+++ b/src/agb_flash.c
@@ -74,7 +74,7 @@ u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void))
return 1;
sTimerNum = timerNum;
- sTimerReg = &REG_TMCNT(sTimerNum);
+ sTimerReg = &REG_TMCNT_L(sTimerNum);
*intrFunc = FlashTimerIntr;
return 0;
}
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index d7bccb298..60cff27be 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -687,8 +687,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 notTransform)
gSprites[gBattlerSpriteIds[battlerAtk]].pos1.y = GetBattlerSpriteDefault_Y(battlerAtk);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleMonForms[battlerAtk]);
SetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_NICKNAME, gSpeciesNames[targetSpecies]);
- sub_80496C0(gHealthboxSpriteIds[battlerAtk], &gEnemyParty[gBattlerPartyIndexes[battlerAtk]]);
- sub_804981C(gHealthboxSpriteIds[battlerAtk], 1);
+ UpdateNickInHealthbox(gHealthboxSpriteIds[battlerAtk], &gEnemyParty[gBattlerPartyIndexes[battlerAtk]]);
+ TryAddPokeballIconToHealthbox(gHealthboxSpriteIds[battlerAtk], 1);
}
else if (notTransform)
{
diff --git a/src/battle_interface.c b/src/battle_interface.c
new file mode 100644
index 000000000..6d16c0902
--- /dev/null
+++ b/src/battle_interface.c
@@ -0,0 +1,2800 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "battle_interface.h"
+#include "battle_message.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "menu.h"
+#include "palette.h"
+#include "pokedex.h"
+#include "pokemon_summary_screen.h"
+#include "safari_zone.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "window.h"
+#include "constants/songs.h"
+
+#define GetStringRightAlignXOffset(fontId, string, destWidth) ({ \
+ s32 w = GetStringWidth(fontId, string, 0); \
+ destWidth - w; \
+})
+
+#define abs(a) ((a) < 0 ? -(a) : (a))
+
+#define Q_24_8(n) ((s32)((n) * 256))
+#define Q_24_8_TO_INT(n) ((int)((n) >> 8))
+
+struct TestingBar
+{
+ s32 maxValue;
+ s32 oldValue;
+ s32 receivedValue;
+ u32 pal:5;
+ u32 tileOffset;
+};
+
+enum
+{ // Corresponds to gHealthboxElementsGfxTable (and the tables after it) in graphics.c
+ // These are indexes into the tables, which are filled with 8x8 square pixel data.
+ HEALTHBOX_GFX_0, //hp bar [black section]
+ HEALTHBOX_GFX_1, //hp bar "H"
+ HEALTHBOX_GFX_2, //hp bar "P"
+ HEALTHBOX_GFX_HP_BAR_GREEN, //hp bar [0 pixels]
+ HEALTHBOX_GFX_4, //hp bar [1 pixels]
+ HEALTHBOX_GFX_5, //hp bar [2 pixels]
+ HEALTHBOX_GFX_6, //hp bar [3 pixels]
+ HEALTHBOX_GFX_7, //hp bar [4 pixels]
+ HEALTHBOX_GFX_8, //hp bar [5 pixels]
+ HEALTHBOX_GFX_9, //hp bar [6 pixels]
+ HEALTHBOX_GFX_10, //hp bar [7 pixels]
+ HEALTHBOX_GFX_11, //hp bar [8 pixels]
+ HEALTHBOX_GFX_12, //exp bar [0 pixels]
+ HEALTHBOX_GFX_13, //exp bar [1 pixels]
+ HEALTHBOX_GFX_14, //exp bar [2 pixels]
+ HEALTHBOX_GFX_15, //exp bar [3 pixels]
+ HEALTHBOX_GFX_16, //exp bar [4 pixels]
+ HEALTHBOX_GFX_17, //exp bar [5 pixels]
+ HEALTHBOX_GFX_18, //exp bar [6 pixels]
+ HEALTHBOX_GFX_19, //exp bar [7 pixels]
+ HEALTHBOX_GFX_20, //exp bar [8 pixels]
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER0, //status psn "(P"
+ HEALTHBOX_GFX_22, //status psn "SN"
+ HEALTHBOX_GFX_23, //status psn "|)""
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, //status prz
+ HEALTHBOX_GFX_25,
+ HEALTHBOX_GFX_26,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER0, //status slp
+ HEALTHBOX_GFX_28,
+ HEALTHBOX_GFX_29,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, //status frz
+ HEALTHBOX_GFX_31,
+ HEALTHBOX_GFX_32,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn
+ HEALTHBOX_GFX_34,
+ HEALTHBOX_GFX_35,
+ HEALTHBOX_GFX_36, //misc [Black section]
+ HEALTHBOX_GFX_37, //misc [Black section]
+ HEALTHBOX_GFX_38, //misc [Black section]
+ HEALTHBOX_GFX_39, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_40, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_41, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_42, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_43, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_44, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_45, //misc [Top of Health Window?]
+ HEALTHBOX_GFX_46, //misc [Blank Health Window?]
+ HEALTHBOX_GFX_HP_BAR_YELLOW, //hp bar yellow [0 pixels]
+ HEALTHBOX_GFX_48, //hp bar yellow [1 pixels]
+ HEALTHBOX_GFX_49, //hp bar yellow [2 pixels]
+ HEALTHBOX_GFX_50, //hp bar yellow [3 pixels]
+ HEALTHBOX_GFX_51, //hp bar yellow [4 pixels]
+ HEALTHBOX_GFX_52, //hp bar yellow [5 pixels]
+ HEALTHBOX_GFX_53, //hp bar yellow [6 pixels]
+ HEALTHBOX_GFX_54, //hp bar yellow [7 pixels]
+ HEALTHBOX_GFX_55, //hp bar yellow [8 pixels]
+ HEALTHBOX_GFX_HP_BAR_RED, //hp bar red [0 pixels]
+ HEALTHBOX_GFX_57, //hp bar red [1 pixels]
+ HEALTHBOX_GFX_58, //hp bar red [2 pixels]
+ HEALTHBOX_GFX_59, //hp bar red [3 pixels]
+ HEALTHBOX_GFX_60, //hp bar red [4 pixels]
+ HEALTHBOX_GFX_61, //hp bar red [5 pixels]
+ HEALTHBOX_GFX_62, //hp bar red [6 pixels]
+ HEALTHBOX_GFX_63, //hp bar red [7 pixels]
+ HEALTHBOX_GFX_64, //hp bar red [8 pixels]
+ HEALTHBOX_GFX_65, //hp bar frame end
+ HEALTHBOX_GFX_66, //status ball [full]
+ HEALTHBOX_GFX_67, //status ball [empty]
+ HEALTHBOX_GFX_68, //status ball [fainted]
+ HEALTHBOX_GFX_69, //status ball [statused]
+ HEALTHBOX_GFX_70, //status ball [unused extra]
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER1, //status2 "PSN"
+ HEALTHBOX_GFX_72,
+ HEALTHBOX_GFX_73,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER1, //status2 "PRZ"
+ HEALTHBOX_GFX_75,
+ HEALTHBOX_GFX_76,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER1, //status2 "SLP"
+ HEALTHBOX_GFX_78,
+ HEALTHBOX_GFX_79,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER1, //status2 "FRZ"
+ HEALTHBOX_GFX_81,
+ HEALTHBOX_GFX_82,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN"
+ HEALTHBOX_GFX_84,
+ HEALTHBOX_GFX_85,
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN"
+ HEALTHBOX_GFX_87,
+ HEALTHBOX_GFX_88,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER2, //status3 "PRZ"
+ HEALTHBOX_GFX_90,
+ HEALTHBOX_GFX_91,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER2, //status3 "SLP"
+ HEALTHBOX_GFX_93,
+ HEALTHBOX_GFX_94,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER2, //status3 "FRZ"
+ HEALTHBOX_GFX_96,
+ HEALTHBOX_GFX_97,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN"
+ HEALTHBOX_GFX_99,
+ HEALTHBOX_GFX_100,
+ HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN"
+ HEALTHBOX_GFX_102,
+ HEALTHBOX_GFX_103,
+ HEALTHBOX_GFX_STATUS_PRZ_BATTLER3, //status4 "PRZ"
+ HEALTHBOX_GFX_105,
+ HEALTHBOX_GFX_106,
+ HEALTHBOX_GFX_STATUS_SLP_BATTLER3, //status4 "SLP"
+ HEALTHBOX_GFX_108,
+ HEALTHBOX_GFX_109,
+ HEALTHBOX_GFX_STATUS_FRZ_BATTLER3, //status4 "FRZ"
+ HEALTHBOX_GFX_111,
+ HEALTHBOX_GFX_112,
+ HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN"
+ HEALTHBOX_GFX_114,
+ HEALTHBOX_GFX_115,
+ HEALTHBOX_GFX_116, //unknown_D12FEC
+ HEALTHBOX_GFX_117, //unknown_D1300C
+};
+
+static void SpriteCB_HealthBoxOther(struct Sprite * sprite);
+static void SpriteCB_HealthBar(struct Sprite * sprite);
+static const u8 *GetHealthboxElementGfxPtr(u8 which);
+static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
+static void sub_8049388(u8 taskId);
+static void sub_80493E4(u8 taskId);
+static void sub_8049568(struct Sprite * sprite);
+static void sub_8049630(struct Sprite * sprite);
+static void sub_804948C(u8 taskId);
+static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite * sprite);
+static void UpdateStatusIconInHealthbox(u8 spriteId);
+static void SpriteCB_StatusSummaryBar(struct Sprite * sprite);
+static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite * sprite);
+static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId);
+static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar);
+static u8 GetScaledExpFraction(s32 oldValue, s32 receivedValue, s32 maxValue, u8 scale);
+static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale);
+static s32 CalcNewBarValue(s32 maxValue, s32 currValue, s32 receivedValue, s32 *arg3, u8 arg4, u16 arg5);
+static void sub_804A510(struct TestingBar *barInfo, s32 *currValue, u8 bg, u8 x, u8 y);
+static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth);
+static u8 *AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 *windowId);
+static void RemoveWindowOnHealthbox(u32 windowId);
+static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth);
+
+static const struct OamData gOamData_8260270 = {
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
+ .priority = 1
+};
+
+static const struct SpriteTemplate sHealthboxPlayerSpriteTemplates[] = {
+ {
+ .tileTag = 55039,
+ .paletteTag = 55039,
+ .oam = &gOamData_8260270,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ }, {
+ .tileTag = 55040,
+ .paletteTag = 55039,
+ .oam = &gOamData_8260270,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ }
+};
+
+static const struct SpriteTemplate sHealthboxOpponentSpriteTemplates[] = {
+ {
+ .tileTag = 55041,
+ .paletteTag = 55039,
+ .oam = &gOamData_8260270,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ }, {
+ .tileTag = 55042,
+ .paletteTag = 55039,
+ .oam = &gOamData_8260270,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ }
+};
+
+static const struct SpriteTemplate sHealthboxSafariSpriteTemplate =
+{
+ .tileTag = 55051,
+ .paletteTag = 55039,
+ .oam = &gOamData_8260270,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct OamData gUnknown_82602F0 = {
+ .shape = SPRITE_SHAPE(32x8),
+ .size = SPRITE_SIZE(32x8),
+ .priority = 1
+};
+
+static const struct SpriteTemplate gUnknown_82602F8[] = {
+ {
+ .tileTag = 55044,
+ .paletteTag = 55044,
+ .oam = &gUnknown_82602F0,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_HealthBar
+ }, {
+ .tileTag = 55045,
+ .paletteTag = 55044,
+ .oam = &gUnknown_82602F0,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_HealthBar
+ }, {
+ .tileTag = 55046,
+ .paletteTag = 55044,
+ .oam = &gUnknown_82602F0,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_HealthBar
+ }, {
+ .tileTag = 55047,
+ .paletteTag = 55044,
+ .oam = &gUnknown_82602F0,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_HealthBar
+ }
+};
+
+static const struct Subsprite gUnknown_8260358[] = {
+ { 240, 0, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), 0x0000, 1 },
+ { 48, 0, SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), 0x0020, 1 },
+ { 240, 32, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0030, 1 },
+ { 16, 32, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0034, 1 },
+ { 48, 32, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0038, 1 }
+};
+
+static const struct Subsprite gUnknown_826036C[] = {
+ { 240, 0, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), 0x0040, 1 },
+ { 48, 0, SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), 0x0060, 1 },
+ { 240, 32, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0070, 1 },
+ { 16, 32, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0074, 1 },
+ { 48, 32, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0078, 1 }
+};
+
+static const struct Subsprite gUnknown_8260380[] = {
+ { 240, 0, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), 0x0000, 1 },
+ { 48, 0, SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), 0x0020, 1 }
+};
+
+static const struct Subsprite gUnknown_8260388[] = {
+ { 240, 0, SPRITE_SHAPE(64x32), SPRITE_SIZE(64x32), 0x0000, 1 },
+ { 48, 0, SPRITE_SHAPE(32x32), SPRITE_SIZE(32x32), 0x0020, 1 }
+};
+
+static const struct Subsprite gUnknown_8260390[] = {
+ { 240, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0000, 1 },
+ { 16, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0004, 1 }
+};
+
+static const struct Subsprite gUnknown_8260398[] = {
+ { 240, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0000, 1 },
+ { 16, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0004, 1 },
+ { 224, 0, SPRITE_SHAPE(8x8), SPRITE_SIZE(8x8), 0x0008, 1 }
+};
+
+static const struct SubspriteTable gUnknown_82603A4[] = {
+ {NELEMS(gUnknown_8260358), gUnknown_8260358},
+ {NELEMS(gUnknown_8260380), gUnknown_8260380},
+ {NELEMS(gUnknown_826036C), gUnknown_826036C},
+ {NELEMS(gUnknown_8260388), gUnknown_8260388}
+};
+
+static const struct SubspriteTable gUnknown_82603C4[] = {
+ {NELEMS(gUnknown_8260390), gUnknown_8260390},
+ {NELEMS(gUnknown_8260398), gUnknown_8260398}
+};
+
+static const struct Subsprite gUnknown_82603D4[] = {
+ { 160, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0000, 1 },
+ { 192, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0004, 1 },
+ { 224, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0008, 1 },
+ { 0, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x000c, 1 }
+};
+
+static const struct Subsprite gUnknown_82603E4[] = {
+ { 160, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0000, 1 },
+ { 192, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0004, 1 },
+ { 224, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0008, 1 },
+ { 0, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0008, 1 },
+ { 32, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x0008, 1 },
+ { 64, 0, SPRITE_SHAPE(32x8), SPRITE_SIZE(32x8), 0x000c, 1 }
+};
+
+static const struct SubspriteTable sStatusSummaryBar_SubspriteTable[] =
+{
+ {NELEMS(gUnknown_82603D4), gUnknown_82603D4}
+};
+
+static const struct SubspriteTable gUnknown_8260404[] = {
+ {NELEMS(gUnknown_82603E4), gUnknown_82603E4}
+};
+
+static const u16 gUnknown_26040C[] = INCBIN_U16("graphics/battle_interface/unk_826404C.4bpp");
+
+static const struct CompressedSpriteSheet sStatusSummaryBarSpriteSheets[] = {
+ {gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55052},
+ {gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55053}
+};
+
+static const struct SpritePalette sStatusSummaryBarSpritePals[] = {
+ {gBattleInterface_BallStatusBarPal, 55056},
+ {gBattleInterface_BallStatusBarPal, 55057}
+};
+
+static const struct SpritePalette sStatusSummaryBallsSpritePals[] = {
+ {gBattleInterface_BallDisplayPal, 55058},
+ {gBattleInterface_BallDisplayPal, 55059}
+};
+
+static const struct SpriteSheet sStatusSummaryBallsSpriteSheets[] = {
+ {gUnknown_8D12404, 0x0080, 55060},
+ {gUnknown_8D12404, 0x0080, 55061}
+};
+
+static const struct OamData gUnknown_82604AC = {
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
+ .priority = 1
+};
+
+static const struct OamData gUnknown_82604B4 = {
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .priority = 1
+};
+
+static const struct SpriteTemplate sStatusSummaryBarSpriteTemplates[] = {
+ {
+ .tileTag = 55052,
+ .paletteTag = 55056,
+ .oam = &gOamData_8260270,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBar
+ }, {
+ .tileTag = 55053,
+ .paletteTag = 55057,
+ .oam = &gOamData_8260270,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBar
+ }
+};
+
+static const struct SpriteTemplate sStatusSummaryBallsSpriteTemplates[] = {
+ {
+ .tileTag = 55060,
+ .paletteTag = 55058,
+ .oam = &gUnknown_82604B4,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBallsOnBattleStart
+ }, {
+ .tileTag = 55061,
+ .paletteTag = 55059,
+ .oam = &gUnknown_82604B4,
+ .anims = gDummySpriteAnimTable,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBallsOnBattleStart
+ }
+};
+
+static void sub_8047B0C(s16 number, u16 *dest, bool8 unk)
+{
+ s8 i, j;
+ u8 buff[4];
+
+ for (i = 0; i < 4; i++)
+ {
+ buff[i] = 0;
+ }
+
+ for (i = 3; ; i--)
+ {
+ if (number > 0)
+ {
+ buff[i] = number % 10;
+ number /= 10;
+ }
+ else
+ {
+ for (; i > -1; i--)
+ {
+ buff[i] = 0xFF;
+ }
+ if (buff[3] == 0xFF)
+ buff[3] = 0;
+ break;
+ }
+ }
+
+
+
+ if (!unk)
+ {
+ for (i = 0, j = 0; i < 4; i++)
+ {
+ if (buff[j] == 0xFF)
+ {
+ dest[j + 0x00] &= 0xFC00;
+ dest[j + 0x00] |= 0x1E;
+ dest[i + 0x20] &= 0xFC00;
+ dest[i + 0x20] |= 0x1E;
+ }
+ else
+ {
+ dest[j + 0x00] &= 0xFC00;
+ dest[j + 0x00] |= 0x14 + buff[j];
+ dest[i + 0x20] &= 0xFC00;
+ dest[i + 0x20] |= 0x34 + buff[i];
+ }
+ j++;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (buff[i] == 0xFF)
+ {
+ dest[i + 0x00] &= 0xFC00;
+ dest[i + 0x00] |= 0x1E;
+ dest[i + 0x20] &= 0xFC00;
+ dest[i + 0x20] |= 0x1E;
+ }
+ else
+ {
+ dest[i + 0x00] &= 0xFC00;
+ dest[i + 0x00] |= 0x14 + buff[i];
+ dest[i + 0x20] &= 0xFC00;
+ dest[i + 0x20] |= 0x34 + buff[i];
+ }
+ }
+ }
+}
+
+static void sub_8047CAC(s16 num1, s16 num2, u16 *dest)
+{
+ dest[4] = 0x1E;
+ sub_8047B0C(num2, &dest[0], FALSE);
+ sub_8047B0C(num1, &dest[5], TRUE);
+}
+
+// Because the healthbox is too large to fit into one sprite, it is divided into two sprites.
+// healthboxLeft or healthboxMain is the left part that is used as the 'main' sprite.
+// healthboxRight or healthboxOther is the right part of the healthbox.
+// There's also the third sprite under name of healthbarSprite that refers to the healthbar visible on the healtbox.
+
+// data fields for healthboxMain
+// oam.affineParam holds healthboxRight spriteId
+#define hMain_HealthBarSpriteId data[5]
+#define hMain_Battler data[6]
+#define hMain_Data7 data[7]
+
+// data fields for healthboxRight
+#define hOther_HealthBoxSpriteId data[5]
+
+// data fields for healthbar
+#define hBar_HealthBoxSpriteId data[5]
+#define hBar_Data6 data[6]
+
+u8 CreateBattlerHealthboxSprites(u8 a)
+{
+ s16 data6 = 0;
+ u8 healthboxLeftSpriteId;
+ u8 healthboxRightSpriteId;
+ u8 healthbarSpriteId;
+ struct Sprite *sprite;
+
+ if (!IsDoubleBattle())
+ {
+ if (GetBattlerSide(a) == B_SIDE_PLAYER)
+ {
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
+
+ gSprites[healthboxLeftSpriteId].oam.shape = SPRITE_SHAPE(64x64);
+ gSprites[healthboxRightSpriteId].oam.shape = SPRITE_SHAPE(64x64);
+ gSprites[healthboxRightSpriteId].oam.tileNum += 64;
+ }
+ else
+ {
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1);
+
+ gSprites[healthboxRightSpriteId].oam.tileNum += 32;
+ data6 = 2;
+ }
+
+ gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
+ gSprites[healthboxRightSpriteId].hBar_HealthBoxSpriteId = healthboxLeftSpriteId;
+ gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther;
+ }
+ else
+ {
+ if (GetBattlerSide(a) == B_SIDE_PLAYER)
+ {
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(a) / 2], 240, 160, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(a) / 2], 240, 160, 1);
+
+ gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
+ gSprites[healthboxRightSpriteId].hBar_HealthBoxSpriteId = healthboxLeftSpriteId;
+ gSprites[healthboxRightSpriteId].oam.tileNum += 32;
+ gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther;
+ data6 = 1;
+ }
+ else
+ {
+ healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(a) / 2], 240, 160, 1);
+ healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(a) / 2], 240, 160, 1);
+
+ gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
+ gSprites[healthboxRightSpriteId].hBar_HealthBoxSpriteId = healthboxLeftSpriteId;
+ gSprites[healthboxRightSpriteId].oam.tileNum += 32;
+ gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther;
+ data6 = 2;
+ }
+ }
+ healthbarSpriteId = CreateSpriteAtEnd(&gUnknown_82602F8[gBattlerPositions[a]], 140, 60, 0);
+ sprite = &gSprites[healthbarSpriteId];
+ SetSubspriteTables(sprite, &gUnknown_82603C4[GetBattlerSide(a)]);
+ sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
+ sprite->oam.priority = 1;
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), OBJ_VRAM0 + sprite->oam.tileNum * 32, 64);
+
+ gSprites[healthboxLeftSpriteId].hBar_HealthBoxSpriteId = healthbarSpriteId;
+ gSprites[healthboxLeftSpriteId].hBar_Data6 = a;
+ gSprites[healthboxLeftSpriteId].invisible = TRUE;
+ gSprites[healthboxRightSpriteId].invisible = TRUE;
+ sprite->data[5] = healthboxLeftSpriteId;
+ sprite->data[6] = data6;
+ sprite->invisible = TRUE;
+
+ return healthboxLeftSpriteId;
+}
+
+u8 CreateSafariPlayerHealthboxSprites(void)
+{
+ u8 healthboxLeftSpriteId = CreateSprite(&sHealthboxSafariSpriteTemplate, 240, 160, 1);
+ u8 healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxSafariSpriteTemplate, 240, 160, 1);
+
+ gSprites[healthboxLeftSpriteId].oam.shape = SPRITE_SHAPE(64x64);
+ gSprites[healthboxRightSpriteId].oam.shape = SPRITE_SHAPE(64x64);
+ gSprites[healthboxRightSpriteId].oam.tileNum += 0x40;
+ gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
+ gSprites[healthboxRightSpriteId].hBar_HealthBoxSpriteId = healthboxLeftSpriteId;
+ gSprites[healthboxRightSpriteId].callback = SpriteCB_HealthBoxOther;
+ return healthboxLeftSpriteId;
+}
+
+static const u8 *GetHealthboxElementGfxPtr(u8 elementId)
+{
+ return gHealthboxElementsGfxTable[elementId];
+}
+
+// Syncs the position of healthbar accordingly with the healthbox.
+static void SpriteCB_HealthBar(struct Sprite *sprite)
+{
+ u8 r5 = sprite->data[5];
+
+ switch (sprite->data[6])
+ {
+ case 0:
+ sprite->pos1.x = gSprites[r5].pos1.x + 16;
+ sprite->pos1.y = gSprites[r5].pos1.y;
+ break;
+ case 1:
+ sprite->pos1.x = gSprites[r5].pos1.x + 16;
+ sprite->pos1.y = gSprites[r5].pos1.y;
+ break;
+ default:
+ case 2:
+ sprite->pos1.x = gSprites[r5].pos1.x + 8;
+ sprite->pos1.y = gSprites[r5].pos1.y;
+ break;
+ }
+ sprite->pos2.x = gSprites[r5].pos2.x;
+ sprite->pos2.y = gSprites[r5].pos2.y;
+}
+
+static void SpriteCB_HealthBoxOther(struct Sprite *sprite)
+{
+ u8 healthboxMainSpriteId = sprite->hOther_HealthBoxSpriteId;
+
+ sprite->pos1.x = gSprites[healthboxMainSpriteId].pos1.x + 64;
+ sprite->pos1.y = gSprites[healthboxMainSpriteId].pos1.y;
+
+ sprite->pos2.x = gSprites[healthboxMainSpriteId].pos2.x;
+ sprite->pos2.y = gSprites[healthboxMainSpriteId].pos2.y;
+}
+
+void SetBattleBarStruct(u8 battlerId, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue)
+{
+ gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId = healthboxSpriteId;
+ gBattleSpritesDataPtr->battleBars[battlerId].maxValue = maxVal;
+ gBattleSpritesDataPtr->battleBars[battlerId].oldValue = oldVal;
+ gBattleSpritesDataPtr->battleBars[battlerId].receivedValue = receivedValue;
+ gBattleSpritesDataPtr->battleBars[battlerId].currValue = -32768;
+}
+
+void SetHealthboxSpriteInvisible(u8 healthboxSpriteId)
+{
+ gSprites[healthboxSpriteId].invisible = TRUE;
+ gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = TRUE;
+ gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = TRUE;
+}
+
+void SetHealthboxSpriteVisible(u8 healthboxSpriteId)
+{
+ gSprites[healthboxSpriteId].invisible = FALSE;
+ gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId].invisible = FALSE;
+ gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = FALSE;
+}
+
+static void UpdateSpritePos(u8 spriteId, s16 x, s16 y)
+{
+ gSprites[spriteId].pos1.x = x;
+ gSprites[spriteId].pos1.y = y;
+}
+
+void DestoryHealthboxSprite(u8 healthboxSpriteId)
+{
+ DestroySprite(&gSprites[gSprites[healthboxSpriteId].oam.affineParam]);
+ DestroySprite(&gSprites[gSprites[healthboxSpriteId].hMain_HealthBarSpriteId]);
+ DestroySprite(&gSprites[healthboxSpriteId]);
+}
+
+void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBattlerOnly)
+{
+
+}
+
+void UpdateOamPriorityInAllHealthboxes(u8 priority)
+{
+ s32 i;
+
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ u8 healthboxLeftSpriteId = gHealthboxSpriteIds[i];
+ u8 healthboxRightSpriteId = gSprites[gHealthboxSpriteIds[i]].oam.affineParam;
+ u8 healthbarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId;
+
+ gSprites[healthboxLeftSpriteId].oam.priority = priority;
+ gSprites[healthboxRightSpriteId].oam.priority = priority;
+ gSprites[healthbarSpriteId].oam.priority = priority;
+ }
+}
+
+void InitBattlerHealthboxCoords(u8 battler)
+{
+ s16 x = 0, y = 0;
+
+ if (!IsDoubleBattle())
+ {
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ x = 44, y = 30;
+ else
+ x = 158, y = 88;
+ }
+ else
+ {
+ switch (GetBattlerPosition(battler))
+ {
+ case B_POSITION_PLAYER_LEFT:
+ x = 159, y = 75;
+ break;
+ case B_POSITION_PLAYER_RIGHT:
+ x = 171, y = 100;
+ break;
+ case B_POSITION_OPPONENT_LEFT:
+ x = 44, y = 19;
+ break;
+ case B_POSITION_OPPONENT_RIGHT:
+ x = 32, y = 44;
+ break;
+ }
+ }
+
+ UpdateSpritePos(gHealthboxSpriteIds[battler], x, y);
+}
+
+static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u8 text[16] = _("{LV_2}");
+ u32 xPos, var1;
+ void *objVram;
+
+ xPos = (u32) ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
+ // Alright, that part was unmatchable. It's basically doing:
+ // xPos = 5 * (3 - (u32)(&text[2]));
+ xPos--;
+ xPos--;
+ xPos -= ((u32)(text));
+ var1 = (3 - xPos);
+ xPos = 4 * var1;
+ xPos += var1;
+
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
+
+ if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER)
+ {
+ objVram = (void*)(OBJ_VRAM0);
+ if (!IsDoubleBattle())
+ objVram += spriteTileNum + 0x820;
+ else
+ objVram += spriteTileNum + 0x420;
+ }
+ else
+ {
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0x400;
+ }
+ TextIntoHealthboxObject(objVram, windowTileData, 3);
+ RemoveWindowOnHealthbox(windowId);
+}
+
+void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u8 *strptr;
+ void *objVram;
+
+ if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER && !IsDoubleBattle())
+ {
+ u8 text[8];
+ if (maxOrCurrent != HP_CURRENT) // singles, max
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum;
+ TextIntoHealthboxObject( (void*)(OBJ_VRAM0) + spriteTileNum * TILE_SIZE_4BPP + 0xA40, windowTileData, 2);
+ RemoveWindowOnHealthbox(windowId);
+ }
+ else // singles, current
+ {
+ strptr = ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ *strptr++ = CHAR_SLASH;
+ *strptr++ = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum;
+ TextIntoHealthboxObject((void *)(OBJ_VRAM0) + spriteTileNum * TILE_SIZE_4BPP + 0x2E0, windowTileData, 1);
+ TextIntoHealthboxObject((void *)(OBJ_VRAM0) + spriteTileNum * TILE_SIZE_4BPP + 0xA00, windowTileData + 0x20, 2);
+ RemoveWindowOnHealthbox(windowId);
+ }
+ }
+ else
+ {
+ u8 battler;
+
+ u8 text[20] = __("{COLOR 01}{HIGHLIGHT 02}");
+ battler = gSprites[healthboxSpriteId].hMain_Battler;
+ if (IsDoubleBattle() == TRUE || GetBattlerSide(battler) == B_SIDE_OPPONENT)
+ {
+ UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent);
+ }
+ else
+ {
+ u32 var;
+ u8 i;
+
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
+ {
+ if (maxOrCurrent == HP_CURRENT)
+ var = 29;
+ else
+ var = 89;
+ }
+ else
+ {
+ if (maxOrCurrent == HP_CURRENT)
+ var = 20;
+ else
+ var = 48;
+ }
+
+ ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ for (i = 0; i < 3; i++)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32],
+ (void*)((OBJ_VRAM0) + TILE_SIZE_4BPP * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
+ 0x20);
+ }
+ }
+ }
+}
+
+static const u8 gUnknown_8260540[] = _("/");
+
+static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ void *objVram;
+
+ u8 battlerId;
+
+ u8 text[20] = __("{COLOR 01}{HIGHLIGHT 00}");
+ battlerId = gSprites[healthboxSpriteId].hMain_Battler;
+
+ if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) // don't print text if only bars are visible
+ {
+ u8 var = 4;
+ u8 r7;
+ u8 *txtPtr;
+ u8 i;
+
+ if (maxOrCurrent == HP_CURRENT)
+ var = 0;
+
+ r7 = gSprites[healthboxSpriteId].data[5];
+ txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ if (!maxOrCurrent)
+ StringCopy(txtPtr, gUnknown_8260540);
+ RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ for (i = var; i < var + 3; i++)
+ {
+ if (i < 3)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0) + 32 * (1 + gSprites[r7].oam.tileNum + i)),
+ 0x20);
+ }
+ else
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[r7].oam.tileNum)),
+ 0x20);
+ }
+ }
+
+ if (maxOrCurrent == HP_CURRENT)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224],
+ (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * TILE_SIZE_4BPP)),
+ 0x20);
+ CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * TILE_SIZE_4BPP)), 0x20);
+ }
+ else
+ {
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) // Impossible to reach part, because the battlerId is from the opponent's side.
+ {
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
+ (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * TILE_SIZE_4BPP),
+ 0x20);
+ }
+ }
+ }
+}
+
+// Prints mon's nature, catch and flee rate. Probably used to test pokeblock-related features.
+static void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
+{
+ u8 text[20] = __("{COLOR 01}{HIGHLIGHT 02}");
+ s32 j, spriteTileNum;
+ u8 *barFontGfx;
+ u8 i, var, nature, healthBarSpriteId;
+
+ barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBattlerPosition(gSprites[healthboxSpriteId].hMain_Battler) * 384)];
+ var = 5;
+ nature = GetNature(mon);
+ StringCopy(text + 6, gNatureNamePointers[nature]);
+ RenderTextFont9(barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ for (j = 6, i = 0; i < var; i++, j++)
+ {
+ u8 elementId;
+
+ if ((text[j] >= 55 && text[j] <= 74) || (text[j] >= 135 && text[j] <= 154))
+ elementId = HEALTHBOX_GFX_44;
+ else if ((text[j] >= 75 && text[j] <= 79) || (text[j] >= 155 && text[j] <= 159))
+ elementId = HEALTHBOX_GFX_45;
+ else
+ elementId = HEALTHBOX_GFX_43;
+
+ CpuCopy32(GetHealthboxElementGfxPtr(elementId), barFontGfx + (i * 64), 0x20);
+ }
+
+ for (j = 1; j < var + 1; j++)
+ {
+ spriteTileNum = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
+ CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
+ barFontGfx += 0x20;
+
+ spriteTileNum = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
+ CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
+ barFontGfx += 0x20;
+ }
+
+ healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
+ ConvertIntToDecimalStringN(text + 6, gBattleStruct->safariCatchFactor, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(text + 9, gBattleStruct->safariEscapeFactor, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ text[5] = CHAR_SPACE;
+ text[8] = CHAR_SLASH;
+ RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ j = healthBarSpriteId; // Needed to match for some reason.
+ for (j = 0; j < 5; j++)
+ {
+ if (j <= 1)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
+ (void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * TILE_SIZE_4BPP,
+ 32);
+ }
+ else
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
+ (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * TILE_SIZE_4BPP,
+ 32);
+ }
+ }
+}
+
+void SwapHpBarsWithHpText(void)
+{
+ s32 i;
+ u8 healthBarSpriteId;
+
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ if (gSprites[gHealthboxSpriteIds[i]].callback == SpriteCallbackDummy
+ && GetBattlerSide(i) != B_SIDE_OPPONENT
+ && (IsDoubleBattle() || GetBattlerSide(i) != B_SIDE_PLAYER))
+ {
+ bool8 noBars;
+
+ gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars ^= 1;
+ noBars = gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars;
+ if (GetBattlerSide(i) == B_SIDE_PLAYER)
+ {
+ if (!IsDoubleBattle())
+ continue;
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ continue;
+
+ if (noBars == TRUE) // bars to text
+ {
+ healthBarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId;
+
+ CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 0x100);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX);
+ }
+ else // text to bars
+ {
+ UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32);
+ }
+ }
+ else
+ {
+ if (noBars == TRUE) // bars to text
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ {
+ // Most likely a debug function.
+ PrintSafariMonInfo(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]]);
+ }
+ else
+ {
+ healthBarSpriteId = gSprites[gHealthboxSpriteIds[i]].hMain_HealthBarSpriteId;
+
+ CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * 32), 0x100);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX);
+ }
+ }
+ else // text to bars
+ {
+ UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_NICK);
+ }
+ }
+ gSprites[gHealthboxSpriteIds[i]].hMain_Data7 ^= 1;
+ }
+ }
+}
+
+#define tBattler data[0]
+#define tSummaryBarSpriteId data[1]
+#define tBallIconSpriteId(n) data[3 + n]
+#define tIsBattleStart data[10]
+#define tData15 data[15]
+
+#ifdef NONMATCHING
+static u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart)
+{
+ bool8 isOpponent;
+ s8 sp14;
+ s16 bar_X, bar_Y, bar_pos2_X, bar_data0;
+ s32 i;
+ u8 summaryBarSpriteId;
+ u8 ballIconSpritesIds[PARTY_SIZE];
+ u8 taskId;
+
+ if (!arg2 || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT)
+ {
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ {
+ isOpponent = FALSE;
+ bar_X = 136, bar_Y = 96;
+ bar_pos2_X = 100;
+ bar_data0 = -5;
+ }
+ else
+ {
+ isOpponent = TRUE;
+
+ if (!arg2 || !IsDoubleBattle())
+ bar_X = 104, bar_Y = 40;
+ else
+ bar_X = 104, bar_Y = 16;
+
+ bar_pos2_X = -100;
+ bar_data0 = 5;
+ }
+ }
+ else
+ {
+ isOpponent = TRUE;
+ bar_X = 104, bar_Y = 40;
+ bar_pos2_X = -100;
+ bar_data0 = 5;
+ }
+
+ for (i = 0, sp14 = 0; i < PARTY_SIZE; i++)
+ {
+ if (partyInfo[i].hp != 0xFFFF)
+ sp14++;
+ }
+
+ LoadCompressedSpriteSheetUsingHeap(&sStatusSummaryBarSpriteSheets[isOpponent]);
+ LoadSpriteSheet(&sStatusSummaryBallsSpriteSheets[isOpponent]);
+ LoadSpritePalette(&sStatusSummaryBarSpritePals[isOpponent]);
+ LoadSpritePalette(&sStatusSummaryBallsSpritePals[isOpponent]);
+
+ summaryBarSpriteId = CreateSprite(&sStatusSummaryBarSpriteTemplates[isOpponent], bar_X, bar_Y, 10);
+ SetSubspriteTables(&gSprites[summaryBarSpriteId], sStatusSummaryBar_SubspriteTable);
+ gSprites[summaryBarSpriteId].pos2.x = bar_pos2_X;
+ gSprites[summaryBarSpriteId].data[0] = bar_data0;
+
+ if (isOpponent)
+ {
+ gSprites[summaryBarSpriteId].pos1.x -= 96;
+ gSprites[summaryBarSpriteId].oam.matrixNum = ST_OAM_HFLIP;
+ }
+ else
+ {
+ gSprites[summaryBarSpriteId].pos1.x += 96;
+ }
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ ballIconSpritesIds[i] = CreateSpriteAtEnd(&sStatusSummaryBallsSpriteTemplates[isOpponent], bar_X, bar_Y - 4, 9);
+
+ if (!isBattleStart)
+ gSprites[ballIconSpritesIds[i]].callback = SpriteCB_StatusSummaryBallsOnSwitchout;
+
+ if (!isOpponent)
+ {
+ gSprites[ballIconSpritesIds[i]].pos2.x = 0;
+ gSprites[ballIconSpritesIds[i]].pos2.y = 0;
+ }
+
+ gSprites[ballIconSpritesIds[i]].data[0] = summaryBarSpriteId;
+
+ if (!isOpponent)
+ {
+ gSprites[ballIconSpritesIds[i]].pos1.x += 10 * i + 24;
+ gSprites[ballIconSpritesIds[i]].data[1] = i * 7 + 10;
+ gSprites[ballIconSpritesIds[i]].pos2.x = 120;
+ }
+ else
+ {
+ gSprites[ballIconSpritesIds[i]].pos1.x -= 10 * (5 - i) + 24;
+ gSprites[ballIconSpritesIds[i]].data[1] = (6 - i) * 7 + 10;
+ gSprites[ballIconSpritesIds[i]].pos2.x = -120;
+ }
+
+ gSprites[ballIconSpritesIds[i]].data[2] = isOpponent;
+ }
+
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ {
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[i]].data[7] = 1;
+ }
+ else if (partyInfo[i].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
+ }
+ else if (partyInfo[i].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 2;
+ }
+ }
+ else
+ {
+ if (i >= sp14) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[i]].data[7] = 1;
+ }
+ else if (partyInfo[i].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
+ }
+ else if (partyInfo[i].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 2;
+ }
+ }
+ }
+ }
+ else
+ {
+ /*
+ * FIXME: r4 and r5 are loaded correctly but in the wrong
+ * order.
+ */
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[5 - i]].data[7] = 1;
+ }
+ else if (partyInfo[i].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 3;
+ }
+ else if (partyInfo[i].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 2;
+ }
+ }
+ else
+ {
+ if (i >= sp14) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[5 - i]].data[7] = 1;
+ }
+ else if (partyInfo[i].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 3;
+ }
+ else if (partyInfo[i].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 2;
+ }
+ }
+ }
+ }
+
+ taskId = CreateTask(TaskDummy, 5);
+ gTasks[taskId].tBattler = battlerId;
+ gTasks[taskId].tSummaryBarSpriteId = summaryBarSpriteId;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ gTasks[taskId].tBallIconSpriteId(i) = ballIconSpritesIds[i];
+
+ gTasks[taskId].tIsBattleStart = isBattleStart;
+ PlaySE12WithPanning(SE_TB_START, 0);
+ return taskId;
+}
+#else
+NAKED
+u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x28\n"
+ "\tstr r1, [sp, 0xC]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tadds r4, r2, 0\n"
+ "\tlsls r3, 24\n"
+ "\tlsrs r3, 24\n"
+ "\tstr r3, [sp, 0x10]\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _08048D44\n"
+ "\tbl GetBattlerPosition\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x3\n"
+ "\tbeq _08048D88\n"
+ "_08048D44:\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08048D64\n"
+ "\tmovs r7, 0\n"
+ "\tmovs r1, 0x88\n"
+ "\tmovs r2, 0x60\n"
+ "\tmovs r0, 0x64\n"
+ "\tmov r8, r0\n"
+ "\tldr r5, _08048D60 @ =0x0000fffb\n"
+ "\tb _08048D94\n"
+ "\t.align 2, 0\n"
+ "_08048D60: .4byte 0x0000fffb\n"
+ "_08048D64:\n"
+ "\tmovs r7, 0x1\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _08048D74\n"
+ "\tbl IsDoubleBattle\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08048D7A\n"
+ "_08048D74:\n"
+ "\tmovs r1, 0x68\n"
+ "\tmovs r2, 0x28\n"
+ "\tb _08048D7E\n"
+ "_08048D7A:\n"
+ "\tmovs r1, 0x68\n"
+ "\tmovs r2, 0x10\n"
+ "_08048D7E:\n"
+ "\tldr r3, _08048D84 @ =0x0000ff9c\n"
+ "\tmov r8, r3\n"
+ "\tb _08048D92\n"
+ "\t.align 2, 0\n"
+ "_08048D84: .4byte 0x0000ff9c\n"
+ "_08048D88:\n"
+ "\tmovs r7, 0x1\n"
+ "\tmovs r1, 0x68\n"
+ "\tmovs r2, 0x28\n"
+ "\tldr r5, _08048E40 @ =0x0000ff9c\n"
+ "\tmov r8, r5\n"
+ "_08048D92:\n"
+ "\tmovs r5, 0x5\n"
+ "_08048D94:\n"
+ "\tmovs r6, 0\n"
+ "\tstr r6, [sp, 0x14]\n"
+ "\tlsls r4, r7, 3\n"
+ "\tldr r0, _08048E44 @ =sStatusSummaryBarSpriteSheets\n"
+ "\tmov r10, r0\n"
+ "\tlsls r3, r7, 1\n"
+ "\tmov r9, r3\n"
+ "\tlsls r1, 16\n"
+ "\tstr r1, [sp, 0x20]\n"
+ "\tlsls r2, 16\n"
+ "\tstr r2, [sp, 0x24]\n"
+ "\tldr r2, _08048E48 @ =0x0000ffff\n"
+ "\tldr r1, [sp, 0xC]\n"
+ "\tmovs r6, 0x5\n"
+ "_08048DB0:\n"
+ "\tldrh r0, [r1]\n"
+ "\tcmp r0, r2\n"
+ "\tbeq _08048DC4\n"
+ "\tldr r3, [sp, 0x14]\n"
+ "\tlsls r0, r3, 24\n"
+ "\tmovs r3, 0x80\n"
+ "\tlsls r3, 17\n"
+ "\tadds r0, r3\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0x14]\n"
+ "_08048DC4:\n"
+ "\tadds r1, 0x8\n"
+ "\tsubs r6, 0x1\n"
+ "\tcmp r6, 0\n"
+ "\tbge _08048DB0\n"
+ "\tmov r6, r10\n"
+ "\tadds r0, r4, r6\n"
+ "\tbl LoadCompressedSpriteSheetUsingHeap\n"
+ "\tldr r0, _08048E4C @ =sStatusSummaryBallsSpriteSheets\n"
+ "\tadds r0, r4, r0\n"
+ "\tbl LoadSpriteSheet\n"
+ "\tldr r0, _08048E50 @ =sStatusSummaryBarSpritePals\n"
+ "\tadds r0, r4, r0\n"
+ "\tbl LoadSpritePalette\n"
+ "\tldr r0, _08048E54 @ =sStatusSummaryBallsSpritePals\n"
+ "\tadds r0, r4, r0\n"
+ "\tbl LoadSpritePalette\n"
+ "\tmov r1, r9\n"
+ "\tadds r0, r1, r7\n"
+ "\tlsls r0, 3\n"
+ "\tldr r1, _08048E58 @ =sStatusSummaryBarSpriteTemplates\n"
+ "\tadds r0, r1\n"
+ "\tldr r2, [sp, 0x20]\n"
+ "\tasrs r1, r2, 16\n"
+ "\tldr r3, [sp, 0x24]\n"
+ "\tasrs r2, r3, 16\n"
+ "\tmovs r3, 0xA\n"
+ "\tbl CreateSprite\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0x18]\n"
+ "\tlsls r0, 4\n"
+ "\tldr r6, [sp, 0x18]\n"
+ "\tadds r0, r6\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _08048E5C @ =gSprites\n"
+ "\tadds r4, r0, r1\n"
+ "\tldr r1, _08048E60 @ =sStatusSummaryBar_SubspriteTable\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl SetSubspriteTables\n"
+ "\tmov r0, r8\n"
+ "\tstrh r0, [r4, 0x24]\n"
+ "\tstrh r5, [r4, 0x2E]\n"
+ "\tcmp r7, 0\n"
+ "\tbeq _08048E64\n"
+ "\tldrh r0, [r4, 0x20]\n"
+ "\tsubs r0, 0x60\n"
+ "\tstrh r0, [r4, 0x20]\n"
+ "\tldrb r1, [r4, 0x3]\n"
+ "\tmovs r0, 0x3F\n"
+ "\tnegs r0, r0\n"
+ "\tands r0, r1\n"
+ "\tmovs r1, 0x10\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r4, 0x3]\n"
+ "\tb _08048E6A\n"
+ "\t.align 2, 0\n"
+ "_08048E40: .4byte 0x0000ff9c\n"
+ "_08048E44: .4byte sStatusSummaryBarSpriteSheets\n"
+ "_08048E48: .4byte 0x0000ffff\n"
+ "_08048E4C: .4byte sStatusSummaryBallsSpriteSheets\n"
+ "_08048E50: .4byte sStatusSummaryBarSpritePals\n"
+ "_08048E54: .4byte sStatusSummaryBallsSpritePals\n"
+ "_08048E58: .4byte sStatusSummaryBarSpriteTemplates\n"
+ "_08048E5C: .4byte gSprites\n"
+ "_08048E60: .4byte sStatusSummaryBar_SubspriteTable\n"
+ "_08048E64:\n"
+ "\tldrh r0, [r4, 0x20]\n"
+ "\tadds r0, 0x60\n"
+ "\tstrh r0, [r4, 0x20]\n"
+ "_08048E6A:\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _08048F14 @ =gSprites\n"
+ "\tmov r10, r1\n"
+ "\tmov r4, sp\n"
+ "\tmov r2, r9\n"
+ "\tadds r0, r2, r7\n"
+ "\tlsls r0, 3\n"
+ "\tstr r0, [sp, 0x1C]\n"
+ "\tmovs r3, 0xA\n"
+ "\tmov r9, r3\n"
+ "\tmov r8, r6\n"
+ "_08048E80:\n"
+ "\tldr r0, _08048F18 @ =sStatusSummaryBallsSpriteTemplates\n"
+ "\tldr r5, [sp, 0x24]\n"
+ "\tldr r1, _08048F1C @ =0xfffc0000\n"
+ "\tadds r2, r5, r1\n"
+ "\tldr r3, [sp, 0x1C]\n"
+ "\tadds r0, r3, r0\n"
+ "\tldr r5, [sp, 0x20]\n"
+ "\tasrs r1, r5, 16\n"
+ "\tasrs r2, 16\n"
+ "\tmovs r3, 0x9\n"
+ "\tbl CreateSpriteAtEnd\n"
+ "\tstrb r0, [r4]\n"
+ "\tldr r0, [sp, 0x10]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08048EB0\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r1, r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 2\n"
+ "\tldr r2, _08048F20 @ =gSprites + 0x1C\n"
+ "\tadds r1, r2\n"
+ "\tldr r0, _08048F24 @ =SpriteCB_StatusSummaryBallsOnSwitchout\n"
+ "\tstr r0, [r1]\n"
+ "_08048EB0:\n"
+ "\tldr r5, _08048F14 @ =gSprites\n"
+ "\tcmp r7, 0\n"
+ "\tbne _08048ECE\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r10\n"
+ "\tstrh r7, [r0, 0x24]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r10\n"
+ "\tstrh r7, [r0, 0x26]\n"
+ "_08048ECE:\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0\n"
+ "\tmov r3, sp\n"
+ "\tldrh r3, [r3, 0x18]\n"
+ "\tstrh r3, [r0, 0x2E]\n"
+ "\tcmp r7, 0\n"
+ "\tbne _08048F28\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r1, r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r5\n"
+ "\tldrh r0, [r1, 0x20]\n"
+ "\tadds r0, 0x18\n"
+ "\tadd r0, r8\n"
+ "\tstrh r0, [r1, 0x20]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tmov r1, r9\n"
+ "\tstrh r1, [r0, 0x30]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0x78\n"
+ "\tb _08048F66\n"
+ "\t.align 2, 0\n"
+ "_08048F14: .4byte gSprites\n"
+ "_08048F18: .4byte sStatusSummaryBallsSpriteTemplates\n"
+ "_08048F1C: .4byte 0xfffc0000\n"
+ "_08048F20: .4byte gSprites + 0x1C\n"
+ "_08048F24: .4byte SpriteCB_StatusSummaryBallsOnSwitchout\n"
+ "_08048F28:\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r5\n"
+ "\tldrh r3, [r2, 0x20]\n"
+ "\tsubs r3, 0x18\n"
+ "\tmovs r1, 0x5\n"
+ "\tsubs r1, r6\n"
+ "\tlsls r0, r1, 2\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 1\n"
+ "\tsubs r3, r0\n"
+ "\tstrh r3, [r2, 0x20]\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r5\n"
+ "\tmovs r1, 0x6\n"
+ "\tsubs r1, r6\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tadds r0, 0xA\n"
+ "\tstrh r0, [r2, 0x30]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tldr r1, _08048FD4 @ =0x0000ff88\n"
+ "_08048F66:\n"
+ "\tstrh r1, [r0, 0x24]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r5\n"
+ "\tstrh r7, [r0, 0x32]\n"
+ "\tadds r4, 0x1\n"
+ "\tmovs r2, 0x7\n"
+ "\tadd r9, r2\n"
+ "\tmovs r3, 0xA\n"
+ "\tadd r8, r3\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tbgt _08048F86\n"
+ "\tb _08048E80\n"
+ "_08048F86:\n"
+ "\tldr r0, [sp, 0x8]\n"
+ "\tbl GetBattlerSide\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804906E\n"
+ "\tmovs r6, 0\n"
+ "\tldr r5, _08048FD8 @ =gBattleTypeFlags\n"
+ "\tmov r10, r5\n"
+ "\tldr r0, _08048FDC @ =0x0000ffff\n"
+ "\tmov r9, r0\n"
+ "\tldr r7, _08048FE0 @ =gSprites\n"
+ "\tldr r1, _08048FE4 @ =0x000003ff\n"
+ "\tmov r12, r1\n"
+ "\tldr r2, _08048FE8 @ =0xfffffc00\n"
+ "\tmov r8, r2\n"
+ "\tmov r4, sp\n"
+ "\tldr r5, [sp, 0xC]\n"
+ "_08048FAA:\n"
+ "\tmov r3, r10\n"
+ "\tldr r0, [r3]\n"
+ "\tmovs r1, 0x40\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08048FEC\n"
+ "\tldrh r0, [r5]\n"
+ "\tcmp r0, r9\n"
+ "\tbeq _08048FF6\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804903E\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x3\n"
+ "\tb _08049056\n"
+ "\t.align 2, 0\n"
+ "_08048FD4: .4byte 0x0000ff88\n"
+ "_08048FD8: .4byte gBattleTypeFlags\n"
+ "_08048FDC: .4byte 0x0000ffff\n"
+ "_08048FE0: .4byte gSprites\n"
+ "_08048FE4: .4byte 0x000003ff\n"
+ "_08048FE8: .4byte 0xfffffc00\n"
+ "_08048FEC:\n"
+ "\tldr r1, [sp, 0x14]\n"
+ "\tlsls r0, r1, 24\n"
+ "\tasrs r0, 24\n"
+ "\tcmp r6, r0\n"
+ "\tblt _08049024\n"
+ "_08048FF6:\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x1\n"
+ "\tmov r0, r12\n"
+ "\tands r1, r0\n"
+ "\tmov r0, r8\n"
+ "\tands r0, r3\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2, 0x4]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tmovs r1, 0x1\n"
+ "\tstrh r1, [r0, 0x3C]\n"
+ "\tb _08049062\n"
+ "_08049024:\n"
+ "\tldrh r0, [r5]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804903E\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x3\n"
+ "\tb _08049056\n"
+ "_0804903E:\n"
+ "\tldr r0, [r5, 0x4]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08049062\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x2\n"
+ "_08049056:\n"
+ "\tmov r0, r12\n"
+ "\tands r1, r0\n"
+ "\tmov r0, r8\n"
+ "\tands r0, r3\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2, 0x4]\n"
+ "_08049062:\n"
+ "\tadds r4, 0x1\n"
+ "\tadds r5, 0x8\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _08048FAA\n"
+ "\tb _08049148\n"
+ "_0804906E:\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _080490B4 @ =gBattleTypeFlags\n"
+ "\tmov r10, r1\n"
+ "\tldr r2, _080490B8 @ =0x0000ffff\n"
+ "\tmov r9, r2\n"
+ "\tldr r7, _080490BC @ =gSprites\n"
+ "\tldr r3, _080490C0 @ =0x000003ff\n"
+ "\tmov r12, r3\n"
+ "\tldr r5, _080490C4 @ =0xfffffc00\n"
+ "\tmov r8, r5\n"
+ "\tldr r5, [sp, 0xC]\n"
+ "\tmov r4, sp\n"
+ "\tadds r4, 0x5\n"
+ "_08049088:\n"
+ "\tmov r1, r10\n"
+ "\tldr r0, [r1]\n"
+ "\tmovs r1, 0x40\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080490C8\n"
+ "\tldrh r0, [r5]\n"
+ "\tcmp r0, r9\n"
+ "\tbeq _080490D2\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804911A\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x3\n"
+ "\tb _08049132\n"
+ "\t.align 2, 0\n"
+ "_080490B4: .4byte gBattleTypeFlags\n"
+ "_080490B8: .4byte 0x0000ffff\n"
+ "_080490BC: .4byte gSprites\n"
+ "_080490C0: .4byte 0x000003ff\n"
+ "_080490C4: .4byte 0xfffffc00\n"
+ "_080490C8:\n"
+ "\tldr r1, [sp, 0x14]\n"
+ "\tlsls r0, r1, 24\n"
+ "\tasrs r0, 24\n"
+ "\tcmp r6, r0\n"
+ "\tblt _08049100\n"
+ "_080490D2:\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x1\n"
+ "\tmov r0, r12\n"
+ "\tands r1, r0\n"
+ "\tmov r0, r8\n"
+ "\tands r0, r3\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2, 0x4]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tmovs r1, 0x1\n"
+ "\tstrh r1, [r0, 0x3C]\n"
+ "\tb _0804913E\n"
+ "_08049100:\n"
+ "\tldrh r0, [r5]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804911A\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x3\n"
+ "\tb _08049132\n"
+ "_0804911A:\n"
+ "\tldr r0, [r5, 0x4]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804913E\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tldrh r3, [r2, 0x4]\n"
+ "\tlsls r1, r3, 22\n"
+ "\tlsrs r1, 22\n"
+ "\tadds r1, 0x2\n"
+ "_08049132:\n"
+ "\tmov r0, r12\n"
+ "\tands r1, r0\n"
+ "\tmov r0, r8\n"
+ "\tands r0, r3\n"
+ "\torrs r0, r1\n"
+ "\tstrh r0, [r2, 0x4]\n"
+ "_0804913E:\n"
+ "\tsubs r4, 0x1\n"
+ "\tadds r5, 0x8\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _08049088\n"
+ "_08049148:\n"
+ "\tldr r0, _080491A8 @ =TaskDummy\n"
+ "\tmovs r1, 0x5\n"
+ "\tbl CreateTask\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tldr r2, _080491AC @ =gTasks\n"
+ "\tlsls r3, r4, 2\n"
+ "\tadds r1, r3, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r0, r1, r2\n"
+ "\tmov r5, sp\n"
+ "\tldrh r5, [r5, 0x8]\n"
+ "\tstrh r5, [r0, 0x8]\n"
+ "\tmov r6, sp\n"
+ "\tldrh r6, [r6, 0x18]\n"
+ "\tstrh r6, [r0, 0xA]\n"
+ "\tmovs r6, 0\n"
+ "\tadds r0, r2, 0\n"
+ "\tadds r0, 0xE\n"
+ "\tadds r1, r0\n"
+ "_08049172:\n"
+ "\tmov r5, sp\n"
+ "\tadds r0, r5, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r1, 0x2\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _08049172\n"
+ "\tadds r0, r3, r4\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r2\n"
+ "\tldrh r6, [r5, 0x10]\n"
+ "\tstrh r6, [r0, 0x1C]\n"
+ "\tmovs r0, 0x6B\n"
+ "\tmovs r1, 0\n"
+ "\tbl PlaySE12WithPanning\n"
+ "\tadds r0, r4, 0\n"
+ "\tadd sp, 0x28\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_080491A8: .4byte TaskDummy\n"
+ "_080491AC: .4byte gTasks");
+}
+#endif //NONMATCHING
+
+void Task_HidePartyStatusSummary(u8 taskId)
+{
+ u8 ballIconSpriteIds[PARTY_SIZE];
+ bool8 isBattleStart;
+ u8 summaryBarSpriteId;
+ u8 battlerId;
+ s32 i;
+
+ isBattleStart = gTasks[taskId].tIsBattleStart;
+ summaryBarSpriteId = gTasks[taskId].tSummaryBarSpriteId;
+ battlerId = gTasks[taskId].tBattler;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ ballIconSpriteIds[i] = gTasks[taskId].tBallIconSpriteId(i);
+
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0));
+
+ gTasks[taskId].tData15 = 16;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ gSprites[ballIconSpriteIds[i]].oam.objMode = ST_OAM_OBJ_BLEND;
+
+ gSprites[summaryBarSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
+
+ if (isBattleStart)
+ {
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ {
+ gSprites[ballIconSpriteIds[5 - i]].data[1] = 7 * i;
+ gSprites[ballIconSpriteIds[5 - i]].data[3] = 0;
+ gSprites[ballIconSpriteIds[5 - i]].data[4] = 0;
+ gSprites[ballIconSpriteIds[5 - i]].callback = sub_8049630;
+ }
+ else
+ {
+ gSprites[ballIconSpriteIds[i]].data[1] = 7 * i;
+ gSprites[ballIconSpriteIds[i]].data[3] = 0;
+ gSprites[ballIconSpriteIds[i]].data[4] = 0;
+ gSprites[ballIconSpriteIds[i]].callback = sub_8049630;
+ }
+ }
+ gSprites[summaryBarSpriteId].data[0] /= 2;
+ gSprites[summaryBarSpriteId].data[1] = 0;
+ gSprites[summaryBarSpriteId].callback = sub_8049568;
+ SetSubspriteTables(&gSprites[summaryBarSpriteId], gUnknown_8260404);
+ gTasks[taskId].func = sub_8049388;
+ }
+ else
+ {
+ gTasks[taskId].func = sub_804948C;
+ }
+}
+
+static void sub_8049388(u8 taskId)
+{
+ if ((gTasks[taskId].data[11]++ % 2) == 0)
+ {
+ if (--gTasks[taskId].tData15 < 0)
+ return;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[15], 16 - gTasks[taskId].data[15]));
+ }
+ if (gTasks[taskId].tData15 == 0)
+ gTasks[taskId].func = sub_80493E4;
+}
+
+static void sub_80493E4(u8 taskId)
+{
+ u8 ballIconSpriteIds[PARTY_SIZE];
+ s32 i;
+
+ u8 battlerId = gTasks[taskId].tBattler;
+ if (--gTasks[taskId].tData15 == -1)
+ {
+ u8 summaryBarSpriteId = gTasks[taskId].tSummaryBarSpriteId;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ ballIconSpriteIds[i] = gTasks[taskId].tBallIconSpriteId(i);
+
+ DestroySpriteAndFreeResources(&gSprites[summaryBarSpriteId]);
+ DestroySpriteAndFreeResources(&gSprites[ballIconSpriteIds[0]]);
+
+ for (i = 1; i < PARTY_SIZE; i++)
+ DestroySprite(&gSprites[ballIconSpriteIds[i]]);
+ }
+ else if (gTasks[taskId].tData15 == -3)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_804948C(u8 taskId)
+{
+ u8 ballIconSpriteIds[PARTY_SIZE];
+ s32 i;
+ u8 battlerId = gTasks[taskId].tBattler;
+
+ if (--gTasks[taskId].tData15 >= 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[15], 16 - gTasks[taskId].data[15]));
+ }
+ else if (gTasks[taskId].tData15 == -1)
+ {
+ u8 summaryBarSpriteId = gTasks[taskId].tSummaryBarSpriteId;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ ballIconSpriteIds[i] = gTasks[taskId].tBallIconSpriteId(i);
+
+ DestroySpriteAndFreeResources(&gSprites[summaryBarSpriteId]);
+ DestroySpriteAndFreeResources(&gSprites[ballIconSpriteIds[0]]);
+
+ for (i = 1; i < PARTY_SIZE; i++)
+ DestroySprite(&gSprites[ballIconSpriteIds[i]]);
+ }
+ else if (gTasks[taskId].tData15 == -3)
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyTask(taskId);
+ }
+}
+
+#undef tBattler
+#undef tSummaryBarSpriteId
+#undef tBallIconSpriteId
+#undef tIsBattleStart
+#undef tData15
+
+static void SpriteCB_StatusSummaryBar(struct Sprite *sprite)
+{
+ if (sprite->pos2.x != 0)
+ sprite->pos2.x += sprite->data[0];
+}
+
+static void sub_8049568(struct Sprite *sprite)
+{
+ sprite->data[1] += 32;
+ if (sprite->data[0] > 0)
+ sprite->pos2.x += sprite->data[1] >> 4;
+ else
+ sprite->pos2.x -= sprite->data[1] >> 4;
+ sprite->data[1] &= 0xF;
+}
+
+static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
+{
+ u8 var1;
+ u16 var2;
+ s8 pan;
+
+ if (sprite->data[1] > 0)
+ {
+ sprite->data[1]--;
+ return;
+ }
+
+ var1 = sprite->data[2];
+ var2 = sprite->data[3];
+ var2 += 56;
+ sprite->data[3] = var2 & 0xFFF0;
+
+ if (var1 != 0)
+ {
+ sprite->pos2.x += var2 >> 4;
+ if (sprite->pos2.x > 0)
+ sprite->pos2.x = 0;
+ }
+ else
+ {
+ sprite->pos2.x -= var2 >> 4;
+ if (sprite->pos2.x < 0)
+ sprite->pos2.x = 0;
+ }
+
+ if (sprite->pos2.x == 0)
+ {
+ pan = SOUND_PAN_TARGET;
+ if (var1 != 0)
+ pan = SOUND_PAN_ATTACKER;
+
+ if (sprite->data[7] != 0)
+ PlaySE2WithPanning(SE_TB_KARA, pan);
+ else
+ PlaySE1WithPanning(SE_TB_KON, pan);
+
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_8049630(struct Sprite *sprite)
+{
+ u8 var1;
+ u16 var2;
+
+ if (sprite->data[1] > 0)
+ {
+ sprite->data[1]--;
+ return;
+ }
+ var1 = sprite->data[2];
+ var2 = sprite->data[3];
+ var2 += 56;
+ sprite->data[3] = var2 & 0xFFF0;
+ if (var1 != 0)
+ sprite->pos2.x += var2 >> 4;
+ else
+ sprite->pos2.x -= var2 >> 4;
+ if (sprite->pos2.x + sprite->pos1.x > 248
+ || sprite->pos2.x + sprite->pos1.x < -8)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite)
+{
+ u8 barSpriteId = sprite->data[0];
+
+ sprite->pos2.x = gSprites[barSpriteId].pos2.x;
+ sprite->pos2.y = gSprites[barSpriteId].pos2.y;
+}
+
+static const u8 gUnknown_8260556[] = _("{HIGHLIGHT 02}");
+
+void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
+{
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ u8 *ptr;
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u16 species;
+ u8 gender;
+
+ ptr = StringCopy(gDisplayedStringBattle, gUnknown_8260556);
+ GetMonData(mon, MON_DATA_NICKNAME, nickname);
+ StringGetEnd10(nickname);
+ ptr = StringCopy(ptr, nickname);
+ *ptr++ = EXT_CTRL_CODE_BEGIN;
+ *ptr++ = EXT_CTRL_CODE_COLOR;
+
+ gender = GetMonGender(mon);
+ species = GetMonData(mon, MON_DATA_SPECIES);
+
+ if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && StringCompare(nickname, gSpeciesNames[species]) == 0)
+ gender = 100;
+
+ if (CheckBattleTypeGhost(mon, gSprites[healthboxSpriteId].hMain_Battler))
+ gender = 100;
+
+ // AddTextPrinterAndCreateWindowOnHealthbox's arguments are the same in all 3 cases.
+ // It's possible they may have been different in early development phases.
+ switch (gender)
+ {
+ default:
+ *ptr++ = TEXT_DYNAMIC_COLOR_2;
+ *ptr++ = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, &windowId);
+ break;
+ case MON_MALE:
+ *ptr++ = TEXT_DYNAMIC_COLOR_2;
+ *ptr++ = CHAR_MALE;
+ *ptr++ = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, &windowId);
+ break;
+ case MON_FEMALE:
+ *ptr++ = TEXT_DYNAMIC_COLOR_1;
+ *ptr++ = CHAR_FEMALE;
+ *ptr++ = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, &windowId);
+ break;
+ }
+
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
+
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
+ {
+ TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x40 + spriteTileNum), windowTileData, 6);
+ ptr = (void*)(OBJ_VRAM0);
+ if (!IsDoubleBattle())
+ ptr += spriteTileNum + 0x800;
+ else
+ ptr += spriteTileNum + 0x400;
+ TextIntoHealthboxObject(ptr, windowTileData + 0xC0, 1);
+ }
+ else
+ {
+ TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x20 + spriteTileNum), windowTileData, 7);
+ }
+
+ RemoveWindowOnHealthbox(windowId);
+}
+void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
+{
+ u8 battlerId, healthBarSpriteId;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_OLD_MAN_TUTORIAL | BATTLE_TYPE_POKEDUDE))
+ return;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ return;
+
+ battlerId = gSprites[healthboxSpriteId].hMain_Battler;
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ return;
+ if (CheckBattleTypeGhost(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId))
+ return;
+ if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
+ return;
+
+ healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
+
+ if (noStatus)
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32);
+ else
+ CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 8) * TILE_SIZE_4BPP), 32);
+}
+
+enum
+{
+ PAL_STATUS_PSN,
+ PAL_STATUS_PAR,
+ PAL_STATUS_SLP,
+ PAL_STATUS_FRZ,
+ PAL_STATUS_BRN
+};
+
+static const u16 sStatusIconColors[] = {
+ [PAL_STATUS_PSN] = RGB(24, 12, 24),
+ [PAL_STATUS_PAR] = RGB(23, 23, 3),
+ [PAL_STATUS_SLP] = RGB(20, 20, 17),
+ [PAL_STATUS_FRZ] = RGB(17, 22, 28),
+ [PAL_STATUS_BRN] = RGB(28, 14, 10)
+};
+
+static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
+{
+ s32 i;
+ u8 battlerId, healthBarSpriteId;
+ u32 status, pltAdder;
+ const u8 *statusGfxPtr;
+ s16 tileNumAdder;
+ u8 statusPalId;
+
+ battlerId = gSprites[healthboxSpriteId].hMain_Battler;
+ healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ {
+ status = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS);
+ if (!IsDoubleBattle())
+ tileNumAdder = 0x1A;
+ else
+ tileNumAdder = 0x12;
+ }
+ else
+ {
+ status = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS);
+ tileNumAdder = 0x11;
+ }
+
+ if (status & STATUS1_SLEEP)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_SLP_BATTLER0, battlerId));
+ statusPalId = PAL_STATUS_SLP;
+ }
+ else if (status & STATUS1_PSN_ANY)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PSN_BATTLER0, battlerId));
+ statusPalId = PAL_STATUS_PSN;
+ }
+ else if (status & STATUS1_BURN)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_BRN_BATTLER0, battlerId));
+ statusPalId = PAL_STATUS_BRN;
+ }
+ else if (status & STATUS1_FREEZE)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battlerId));
+ statusPalId = PAL_STATUS_FRZ;
+ }
+ else if (status & STATUS1_PARALYSIS)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battlerId));
+ statusPalId = PAL_STATUS_PAR;
+ }
+ else
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(HEALTHBOX_GFX_39);
+
+ for (i = 0; i < 3; i++)
+ CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * TILE_SIZE_4BPP), 32);
+
+ if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 64);
+
+ TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
+ return;
+ }
+
+ pltAdder = gSprites[healthboxSpriteId].oam.paletteNum * 16;
+ pltAdder += battlerId + 12;
+
+ FillPalette(sStatusIconColors[statusPalId], pltAdder + 0x100, 2);
+ CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2);
+ CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96);
+ if (IsDoubleBattle() == TRUE || GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
+ {
+ if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
+ {
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 32);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * TILE_SIZE_4BPP), 32);
+ }
+ }
+ TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
+}
+
+static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId)
+{
+ u8 ret = statusElementId;
+
+ switch (statusElementId)
+ {
+ case HEALTHBOX_GFX_STATUS_PSN_BATTLER0:
+ if (battlerId == 0)
+ ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER0;
+ else if (battlerId == 1)
+ ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER1;
+ else if (battlerId == 2)
+ ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER3;
+ break;
+ case HEALTHBOX_GFX_STATUS_PRZ_BATTLER0:
+ if (battlerId == 0)
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER0;
+ else if (battlerId == 1)
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER1;
+ else if (battlerId == 2)
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER3;
+ break;
+ case HEALTHBOX_GFX_STATUS_SLP_BATTLER0:
+ if (battlerId == 0)
+ ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER0;
+ else if (battlerId == 1)
+ ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER1;
+ else if (battlerId == 2)
+ ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER3;
+ break;
+ case HEALTHBOX_GFX_STATUS_FRZ_BATTLER0:
+ if (battlerId == 0)
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER0;
+ else if (battlerId == 1)
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER1;
+ else if (battlerId == 2)
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER3;
+ break;
+ case HEALTHBOX_GFX_STATUS_BRN_BATTLER0:
+ if (battlerId == 0)
+ ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER0;
+ else if (battlerId == 1)
+ ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER1;
+ else if (battlerId == 2)
+ ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER3;
+ break;
+ }
+ return ret;
+}
+
+static void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
+ TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6);
+ TextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2);
+ RemoveWindowOnHealthbox(windowId);
+}
+
+static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId)
+{
+ u8 text[16];
+ u8 *txtPtr;
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+
+ txtPtr = StringCopy(text, gText_HighlightRed_Left);
+ ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2);
+
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, text, 0x2F), 3, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP;
+ SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0x2C0) + spriteTileNum, windowTileData, 2);
+ SafariTextIntoHealthboxObject((void*)(OBJ_VRAM0 + 0xA00) + spriteTileNum, windowTileData + 0x40, 4);
+ RemoveWindowOnHealthbox(windowId);
+}
+
+void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId)
+{
+ s32 maxHp, currHp;
+ u8 battlerId = gSprites[healthboxSpriteId].hMain_Battler;
+
+ if (elementId == HEALTHBOX_ALL && !IsDoubleBattle())
+ GetBattlerSide(battlerId); // Pointless function call.
+
+ if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER)
+ {
+ u8 isDoubles;
+
+ if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
+ UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
+ if (elementId == HEALTHBOX_CURRENT_HP || elementId == HEALTHBOX_ALL)
+ UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), HP_CURRENT);
+ if (elementId == HEALTHBOX_MAX_HP || elementId == HEALTHBOX_ALL)
+ UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), HP_MAX);
+ if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
+ {
+ LoadBattleBarGfx(0);
+ maxHp = GetMonData(mon, MON_DATA_MAX_HP);
+ currHp = GetMonData(mon, MON_DATA_HP);
+ SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0);
+ MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0);
+ }
+ isDoubles = IsDoubleBattle();
+ if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL))
+ {
+ u16 species;
+ u32 exp, currLevelExp;
+ s32 currExpBarValue, maxExpBarValue;
+ u8 level;
+
+ LoadBattleBarGfx(3);
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ level = GetMonData(mon, MON_DATA_LEVEL);
+ exp = GetMonData(mon, MON_DATA_EXP);
+ currLevelExp = gExperienceTables[gBaseStats[species].growthRate][level];
+ currExpBarValue = exp - currLevelExp;
+ maxExpBarValue = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLevelExp;
+ SetBattleBarStruct(battlerId, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles);
+ MoveBattleBar(battlerId, healthboxSpriteId, EXP_BAR, 0);
+ }
+ if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
+ UpdateNickInHealthbox(healthboxSpriteId, mon);
+ if (elementId == HEALTHBOX_STATUS_ICON || elementId == HEALTHBOX_ALL)
+ UpdateStatusIconInHealthbox(healthboxSpriteId);
+ if (elementId == HEALTHBOX_SAFARI_ALL_TEXT)
+ UpdateSafariBallsTextOnHealthbox(healthboxSpriteId);
+ if (elementId == HEALTHBOX_SAFARI_ALL_TEXT || elementId == HEALTHBOX_SAFARI_BALLS_TEXT)
+ UpdateLeftNoOfBallsTextOnHealthbox(healthboxSpriteId);
+ }
+ else
+ {
+ if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
+ UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
+ if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
+ {
+ LoadBattleBarGfx(0);
+ maxHp = GetMonData(mon, MON_DATA_MAX_HP);
+ currHp = GetMonData(mon, MON_DATA_HP);
+ SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0);
+ MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0);
+ }
+ if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
+ UpdateNickInHealthbox(healthboxSpriteId, mon);
+ if (elementId == HEALTHBOX_STATUS_ICON || elementId == HEALTHBOX_ALL)
+ UpdateStatusIconInHealthbox(healthboxSpriteId);
+ }
+}
+
+#define B_EXPBAR_PIXELS 64
+#define B_HEALTHBAR_PIXELS 48
+
+s32 MoveBattleBar(u8 battlerId, u8 healthboxSpriteId, u8 whichBar, u8 unused)
+{
+ s32 currentBarValue;
+
+ if (whichBar == HEALTH_BAR) // health bar
+ {
+ currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ B_HEALTHBAR_PIXELS / 8, 1);
+ }
+ else // exp bar
+ {
+ u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].maxValue, 8);
+ if (expFraction == 0)
+ expFraction = 1;
+ expFraction = abs(gBattleSpritesDataPtr->battleBars[battlerId].receivedValue / expFraction);
+
+ currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ B_EXPBAR_PIXELS / 8, expFraction);
+ }
+
+ if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars))
+ MoveBattleBarGraphically(battlerId, whichBar);
+
+ if (currentBarValue == -1)
+ gBattleSpritesDataPtr->battleBars[battlerId].currValue = 0;
+
+ return currentBarValue;
+}
+
+static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
+{
+ u8 array[8];
+ u8 filledPixelsCount, level;
+ u8 barElementId;
+ u8 i;
+
+ switch (whichBar)
+ {
+ case HEALTH_BAR:
+ filledPixelsCount = CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ array, B_HEALTHBAR_PIXELS / 8);
+
+ if (filledPixelsCount > (B_HEALTHBAR_PIXELS * 50 / 100)) // more than 50 % hp
+ barElementId = HEALTHBOX_GFX_HP_BAR_GREEN;
+ else if (filledPixelsCount > (B_HEALTHBAR_PIXELS * 20 / 100)) // more than 20% hp
+ barElementId = HEALTHBOX_GFX_HP_BAR_YELLOW;
+ else
+ barElementId = HEALTHBOX_GFX_HP_BAR_RED; // 20 % or less
+
+ for (i = 0; i < 6; i++)
+ {
+ u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].hMain_HealthBarSpriteId;
+ if (i < 2)
+ CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * TILE_SIZE_4BPP), 32);
+ else
+ CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthbarSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
+ }
+ break;
+ case EXP_BAR:
+ CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
+ gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
+ &gBattleSpritesDataPtr->battleBars[battlerId].currValue,
+ array, B_EXPBAR_PIXELS / 8);
+ level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_LEVEL);
+ if (level == MAX_LEVEL)
+ {
+ for (i = 0; i < 8; i++)
+ array[i] = 0;
+ }
+ for (i = 0; i < 8; i++)
+ {
+ if (i < 4)
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32);
+ else
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
+ }
+ break;
+ }
+}
+static s32 CalcNewBarValue(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 scale, u16 toAdd)
+{
+ s32 ret, newValue;
+ scale *= 8;
+
+ if (*currValue == -32768) // first function call
+ {
+ if (maxValue < scale)
+ *currValue = Q_24_8(oldValue);
+ else
+ *currValue = oldValue;
+ }
+
+ newValue = oldValue - receivedValue;
+ if (newValue < 0)
+ newValue = 0;
+ else if (newValue > maxValue)
+ newValue = maxValue;
+
+ if (maxValue < scale)
+ {
+ if (newValue == Q_24_8_TO_INT(*currValue) && (*currValue & 0xFF) == 0)
+ return -1;
+ }
+ else
+ {
+ if (newValue == *currValue) // we're done, the bar's value has been updated
+ return -1;
+ }
+
+ if (maxValue < scale) // handle cases of max var having less pixels than the whole bar
+ {
+ s32 toAdd_ = Q_24_8(maxValue) / scale;
+
+ if (receivedValue < 0) // fill bar right
+ {
+ *currValue += toAdd_;
+ ret = Q_24_8_TO_INT(*currValue);
+ if (ret >= newValue)
+ {
+ *currValue = Q_24_8(newValue);
+ ret = newValue;
+ }
+ }
+ else // move bar left
+ {
+ *currValue -= toAdd_;
+ ret = Q_24_8_TO_INT(*currValue);
+ // try round up
+ if ((*currValue & 0xFF) > 0)
+ ret++;
+ if (ret <= newValue)
+ {
+ *currValue = Q_24_8(newValue);
+ ret = newValue;
+ }
+ }
+ }
+ else
+ {
+ if (receivedValue < 0) // fill bar right
+ {
+ *currValue += toAdd;
+ if (*currValue > newValue)
+ *currValue = newValue;
+ ret = *currValue;
+ }
+ else // move bar left
+ {
+ *currValue -= toAdd;
+ if (*currValue < newValue)
+ *currValue = newValue;
+ ret = *currValue;
+ }
+ }
+
+ return ret;
+}
+
+static u8 CalcBarFilledPixels(s32 maxValue, s32 oldValue, s32 receivedValue, s32 *currValue, u8 *arg4, u8 scale)
+{
+ u8 pixels, filledPixels, totalPixels;
+ u8 i;
+
+ s32 newValue = oldValue - receivedValue;
+ if (newValue < 0)
+ newValue = 0;
+ else if (newValue > maxValue)
+ newValue = maxValue;
+
+ totalPixels = scale * 8;
+
+ for (i = 0; i < scale; i++)
+ arg4[i] = 0;
+
+ if (maxValue < totalPixels)
+ pixels = (*currValue * totalPixels / maxValue) >> 8;
+ else
+ pixels = *currValue * totalPixels / maxValue;
+
+ filledPixels = pixels;
+
+ if (filledPixels == 0 && newValue > 0)
+ {
+ arg4[0] = 1;
+ filledPixels = 1;
+ }
+ else
+ {
+ for (i = 0; i < scale; i++)
+ {
+ if (pixels >= 8)
+ {
+ arg4[i] = 8;
+ }
+ else
+ {
+ arg4[i] = pixels;
+ break;
+ }
+ pixels -= 8;
+ }
+ }
+
+ return filledPixels;
+}
+
+// These functions seem as if they were made for testing the health bar.
+static s16 sub_804A460(struct TestingBar *barInfo, s32 *currValue, u8 bg, u8 x, u8 y)
+{
+ s16 ret;
+
+ ret = CalcNewBarValue(barInfo->maxValue,
+ barInfo->oldValue,
+ barInfo->receivedValue,
+ currValue, B_HEALTHBAR_PIXELS / 8, 1);
+
+ sub_804A510(barInfo, currValue, bg, x, y);
+
+ return ret;
+}
+
+static s16 sub_804A4C8(struct TestingBar *barInfo, s32 *currValue)
+{
+ s16 ret;
+
+ ret = CalcNewBarValue(barInfo->maxValue,
+ barInfo->oldValue,
+ barInfo->receivedValue,
+ currValue, B_HEALTHBAR_PIXELS / 8, 1);
+
+ return ret;
+}
+
+static void sub_804A4F0(struct TestingBar *barInfo, s32 *currValue, u8 bg, u8 x, u8 y)
+{
+ sub_804A510(barInfo, currValue, bg, x, y);
+}
+
+static void sub_804A510(struct TestingBar *barInfo, s32 *currValue, u8 bg, u8 x, u8 y)
+{
+ u8 spC[B_HEALTHBAR_PIXELS / 8];
+ u16 tiles[B_HEALTHBAR_PIXELS / 8];
+ u8 i;
+
+ CalcBarFilledPixels(barInfo->maxValue,
+ barInfo->oldValue,
+ barInfo->receivedValue,
+ currValue, spC, B_HEALTHBAR_PIXELS / 8);
+
+ for (i = 0; i < B_HEALTHBAR_PIXELS / 8; i++)
+ {
+ tiles[i] = (barInfo->pal << 12) | (barInfo->tileOffset + spC[i]);
+ }
+
+ CopyToBgTilemapBufferRect_ChangePalette(bg, tiles, x, y, 6, 1, 17);
+}
+
+static u8 GetScaledExpFraction(s32 oldValue, s32 receivedValue, s32 maxValue, u8 scale)
+{
+ s32 newVal, result;
+ s8 oldToMax, newToMax;
+
+ scale *= 8;
+ newVal = oldValue - receivedValue;
+
+ if (newVal < 0)
+ newVal = 0;
+ else if (newVal > maxValue)
+ newVal = maxValue;
+
+ oldToMax = oldValue * scale / maxValue;
+ newToMax = newVal * scale / maxValue;
+ result = oldToMax - newToMax;
+
+ return abs(result);
+}
+
+u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale)
+{
+ u8 result = hp * scale / maxhp;
+
+ if (result == 0 && hp > 0)
+ return 1;
+
+ return result;
+}
+
+u8 GetHPBarLevel(s16 hp, s16 maxhp)
+{
+ u8 result;
+
+ if (hp == maxhp)
+ {
+ result = HP_BAR_FULL;
+ }
+ else
+ {
+ u8 fraction = GetScaledHPFraction(hp, maxhp, B_HEALTHBAR_PIXELS);
+ if (fraction > (B_HEALTHBAR_PIXELS * 50 / 100)) // more than 50 % hp
+ result = HP_BAR_GREEN;
+ else if (fraction > (B_HEALTHBAR_PIXELS * 20 / 100)) // more than 20% hp
+ result = HP_BAR_YELLOW;
+ else if (fraction > 0)
+ result = HP_BAR_RED;
+ else
+ result = HP_BAR_EMPTY;
+ }
+
+ return result;
+}
+
+static const struct WindowTemplate sHealthboxWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x000
+};
+
+
+static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 *windowId)
+{
+ u16 winId;
+ u8 color[3];
+ struct WindowTemplate winTemplate = sHealthboxWindowTemplate;
+
+ winId = AddWindow(&winTemplate);
+ FillWindowPixelBuffer(winId, PIXEL_FILL(2));
+
+ color[0] = 2;
+ color[1] = 1;
+ color[2] = 3;
+
+ AddTextPrinterParameterized4(winId, 0, x, y, 0, 0, color, -1, str);
+
+ *windowId = winId;
+ return (u8*)(GetWindowAttribute(winId, WINDOW_TILE_DATA));
+}
+
+static void RemoveWindowOnHealthbox(u32 windowId)
+{
+ RemoveWindow(windowId);
+}
+
+static void TextIntoHealthboxObject(void *dest, u8 *windowTileData, s32 windowWidth)
+{
+ CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP);
+// + 256 as that prevents the top 4 blank rows of sHealthboxWindowTemplate from being copied
+ if (windowWidth > 0)
+ {
+ do
+ {
+ CpuCopy32(windowTileData + 20, dest + 20, 12);
+ dest += 32, windowTileData += 32;
+ windowWidth--;
+ } while (windowWidth != 0);
+ }
+}
+
+static void SafariTextIntoHealthboxObject(void *dest, u8 *windowTileData, u32 windowWidth)
+{
+ CpuCopy32(windowTileData, dest, windowWidth * TILE_SIZE_4BPP);
+ CpuCopy32(windowTileData + 256, dest + 256, windowWidth * TILE_SIZE_4BPP);
+}
diff --git a/src/battle_message.c b/src/battle_message.c
index 396c4c7f0..2513aaff6 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1254,7 +1254,7 @@ const u8 *const gUnknown_83FE7F4[] = {
sText_Speed
};
-const u8 gUnknown_83FE80C[] = _("{HIGHLIGHT 2}SAFARI BALLS"); //
+const u8 gText_SafariBalls[] = _("{HIGHLIGHT 2}SAFARI BALLS"); //
const u8 gText_HighlightRed_Left[] = _("{HIGHLIGHT 2}Left: ");
const u8 gText_HighlightRed[] = _("{HIGHLIGHT 2}");
const u8 gText_Sleep[] = _("sleep");
diff --git a/src/battle_setup.c b/src/battle_setup.c
index dee0c492b..056fe9273 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -9,7 +9,7 @@
#include "safari_zone.h"
#include "quest_log.h"
#include "script.h"
-#include "script_pokemon_util_80A0058.h"
+#include "script_pokemon_util.h"
#include "strings.h"
#include "string_util.h"
#include "event_data.h"
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 86ed75273..cecc05e29 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -18,7 +18,7 @@
#include "new_game.h"
#include "save.h"
#include "item.h"
-#include "script_pokemon_util_80A0058.h"
+#include "script_pokemon_util.h"
#include "constants/species.h"
#include "constants/items.h"
#include "constants/moves.h"
diff --git a/src/data/text/map_section_names.h b/src/data/text/map_section_names.h
new file mode 100644
index 000000000..5a18fa7c9
--- /dev/null
+++ b/src/data/text/map_section_names.h
@@ -0,0 +1,109 @@
+const u8 gMapSecName_PalletTown[] = _("PALLET TOWN");
+const u8 gMapSecName_ViridianCity[] = _("VIRIDIAN CITY");
+const u8 gMapSecName_PewterCity[] = _("PEWTER CITY");
+const u8 gMapSecName_CeruleanCity[] = _("CERULEAN CITY");
+const u8 gMapSecName_LavenderTown[] = _("LAVENDER TOWN");
+const u8 gMapSecName_VermilionCity[] = _("VERMILION CITY");
+const u8 gMapSecName_CeladonCity[] = _("CELADON CITY");
+const u8 gMapSecName_FuchsiaCity[] = _("FUCHSIA CITY");
+const u8 gMapSecName_CinnabarIsland[] = _("CINNABAR ISLAND");
+const u8 gMapSecName_IndigoPlateau[] = _("INDIGO PLATEAU");
+const u8 gMapSecName_SaffronCity[] = _("SAFFRON CITY");
+const u8 gMapSecName_Route4[] = _("ROUTE 4");
+const u8 gMapSecName_Route10[] = _("ROUTE 10");
+const u8 gMapSecName_Route1[] = _("ROUTE 1");
+const u8 gMapSecName_Route2[] = _("ROUTE 2");
+const u8 gMapSecName_Route3[] = _("ROUTE 3");
+const u8 gMapSecName_Route4_2[] = _("ROUTE 4");
+const u8 gMapSecName_Route5[] = _("ROUTE 5");
+const u8 gMapSecName_Route6[] = _("ROUTE 6");
+const u8 gMapSecName_Route7[] = _("ROUTE 7");
+const u8 gMapSecName_Route8[] = _("ROUTE 8");
+const u8 gMapSecName_Route9[] = _("ROUTE 9");
+const u8 gMapSecName_Route10_2[] = _("ROUTE 10");
+const u8 gMapSecName_Route11[] = _("ROUTE 11");
+const u8 gMapSecName_Route12[] = _("ROUTE 12");
+const u8 gMapSecName_Route13[] = _("ROUTE 13");
+const u8 gMapSecName_Route14[] = _("ROUTE 14");
+const u8 gMapSecName_Route15[] = _("ROUTE 15");
+const u8 gMapSecName_Route16[] = _("ROUTE 16");
+const u8 gMapSecName_Route17[] = _("ROUTE 17");
+const u8 gMapSecName_Route18[] = _("ROUTE 18");
+const u8 gMapSecName_Route19[] = _("ROUTE 19");
+const u8 gMapSecName_Route20[] = _("ROUTE 20");
+const u8 gMapSecName_Route21[] = _("ROUTE 21");
+const u8 gMapSecName_Route22[] = _("ROUTE 22");
+const u8 gMapSecName_Route23[] = _("ROUTE 23");
+const u8 gMapSecName_Route24[] = _("ROUTE 24");
+const u8 gMapSecName_Route25[] = _("ROUTE 25");
+const u8 gMapSecName_ViridianForest[] = _("VIRIDIAN FOREST");
+const u8 gMapSecName_MtMoon[] = _("MT. MOON");
+const u8 gMapSecName_SSAnne[] = _("S.S. ANNE");
+const u8 gMapSecName_UndergroundPath[] = _("UNDERGROUND PATH");
+const u8 gMapSecName_UndergroundPath_2[] = _("UNDERGROUND PATH");
+const u8 gMapSecName_DiglettsCave[] = _("DIGLETT'S CAVE");
+const u8 gMapSecName_VictoryRoad[] = _("VICTORY ROAD");
+const u8 gMapSecName_RocketHideout[] = _("ROCKET HIDEOUT");
+const u8 gMapSecName_SilphCo[] = _("SILPH CO.");
+const u8 gMapSecName_PokemonMansion[] = _("POKéMON MANSION");
+const u8 gMapSecName_SafariZone[] = _("SAFARI ZONE");
+const u8 gMapSecName_PokemonLeague[] = _("POKéMON LEAGUE");
+const u8 gMapSecName_RockTunnel[] = _("ROCK TUNNEL");
+const u8 gMapSecName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
+const u8 gMapSecName_PokemonTower[] = _("POKéMON TOWER");
+const u8 gMapSecName_CeruleanCave[] = _("CERULEAN CAVE");
+const u8 gMapSecName_PowerPlant[] = _("POWER PLANT");
+const u8 gMapSecName_OneIsland[] = _("ONE ISLAND");
+const u8 gMapSecName_TwoIsland[] = _("TWO ISLAND");
+const u8 gMapSecName_ThreeIsland[] = _("THREE ISLAND");
+const u8 gMapSecName_FourIsland[] = _("FOUR ISLAND");
+const u8 gMapSecName_FiveIsland[] = _("FIVE ISLAND");
+const u8 gMapSecName_SevenIsland[] = _("SEVEN ISLAND");
+const u8 gMapSecName_SixIsland[] = _("SIX ISLAND");
+const u8 gMapSecName_KindleRoad[] = _("KINDLE ROAD");
+const u8 gMapSecName_TreasureBeach[] = _("TREASURE BEACH");
+const u8 gMapSecName_CapeBrink[] = _("CAPE BRINK");
+const u8 gMapSecName_BondBridge[] = _("BOND BRIDGE");
+const u8 gMapSecName_ThreeIslePort[] = _("THREE ISLE PORT");
+const u8 gMapSecName_SeviiIsle6[] = _("SEVII ISLE 6");
+const u8 gMapSecName_SeviiIsle7[] = _("SEVII ISLE 7");
+const u8 gMapSecName_SeviiIsle8[] = _("SEVII ISLE 8");
+const u8 gMapSecName_SeviiIsle9[] = _("SEVII ISLE 9");
+const u8 gMapSecName_ResortGorgeous[] = _("RESORT GORGEOUS");
+const u8 gMapSecName_WaterLabyrinth[] = _("WATER LABYRINTH");
+const u8 gMapSecName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
+const u8 gMapSecName_MemorialPillar[] = _("MEMORIAL PILLAR");
+const u8 gMapSecName_OutcastIsland[] = _("OUTCAST ISLAND");
+const u8 gMapSecName_GreenPath[] = _("GREEN PATH");
+const u8 gMapSecName_WaterPath[] = _("WATER PATH");
+const u8 gMapSecName_RuinValley[] = _("RUIN VALLEY");
+const u8 gMapSecName_TrainerTower[] = _("TRAINER TOWER");
+const u8 gMapSecName_CanyonEntrance[] = _("CANYON ENTRANCE");
+const u8 gMapSecName_SevaultCanyon[] = _("SEVAULT CANYON");
+const u8 gMapSecName_TanobyRuins[] = _("TANOBY RUINS");
+const u8 gMapSecName_SeviiIsle22[] = _("SEVII ISLE 22");
+const u8 gMapSecName_SeviiIsle23[] = _("SEVII ISLE 23");
+const u8 gMapSecName_SeviiIsle24[] = _("SEVII ISLE 24");
+const u8 gMapSecName_NavelRock[] = _("NAVEL ROCK");
+const u8 gMapSecName_MtEmber[] = _("MT. EMBER");
+const u8 gMapSecName_BerryForest[] = _("BERRY FOREST");
+const u8 gMapSecName_IcefallCave[] = _("ICEFALL CAVE");
+const u8 gMapSecName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
+const u8 gMapSecName_TrainerTower_2[] = _("TRAINER TOWER");
+const u8 gMapSecName_DottedHole[] = _("DOTTED HOLE");
+const u8 gMapSecName_LostCave[] = _("LOST CAVE");
+const u8 gMapSecName_PatternBush[] = _("PATTERN BUSH");
+const u8 gMapSecName_AlteringCave[] = _("ALTERING CAVE");
+const u8 gMapSecName_TanobyChambers[] = _("TANOBY CHAMBERS");
+const u8 gMapSecName_ThreeIslePath[] = _("THREE ISLE PATH");
+const u8 gMapSecName_TanobyKey[] = _("TANOBY KEY");
+const u8 gMapSecName_BirthIsland[] = _("BIRTH ISLAND");
+const u8 gMapSecName_MoneanChamber[] = _("MONEAN CHAMBER");
+const u8 gMapSecName_LiptooChamber[] = _("LIPTOO CHAMBER");
+const u8 gMapSecName_WeepthChamber[] = _("WEEPTH CHAMBER");
+const u8 gMapSecName_DilfordChamber[] = _("DILFORD CHAMBER");
+const u8 gMapSecName_ScufibChamber[] = _("SCUFIB CHAMBER");
+const u8 gMapSecName_RixyChamber[] = _("RIXY CHAMBER");
+const u8 gMapSecName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
+const u8 gMapSecName_EmberSpa[] = _("EMBER SPA");
+const u8 gMapSecName_CeladonDept[] = _("CELADON DEPT.");
diff --git a/src/image_processing_effects.c b/src/image_processing_effects.c
new file mode 100644
index 000000000..fdd62f7a5
--- /dev/null
+++ b/src/image_processing_effects.c
@@ -0,0 +1,4425 @@
+#include "global.h"
+#include "image_processing_effects.h"
+
+// IWRAM common
+u8 gCanvasColumnStart;
+u16 (*gCanvasPixels)[][32];
+u8 gCanvasRowEnd;
+u8 gCanvasHeight;
+u8 gCanvasColumnEnd;
+u8 gCanvasRowStart;
+u8 gCanvasMonPersonality;
+u8 gCanvasWidth;
+u16 *gCanvasPalette;
+u16 gCanvasPaletteStart;
+
+static void ApplyImageEffect_Pointillism(void);
+static void ApplyImageEffect_Blur(void);
+static void ApplyImageEffect_BlackOutline(void);
+static void ApplyImageEffect_Invert(void);
+static void ApplyImageEffect_BlackAndWhite(void);
+static void ApplyImageEffect_BlurRight(void);
+static void ApplyImageEffect_BlurDown(void);
+static void ApplyImageEffect_Shimmer(void);
+static void ApplyImageEffect_Grayscale(void);
+static void ApplyImageEffect_PersonalityColor(u8);
+static void ApplyImageEffect_RedChannelGrayscale(u8);
+static void ApplyImageEffect_RedChannelGrayscaleHighlight(u8);
+static void AddPointillismPoints(u16);
+static u16 ConvertColorToGrayscale(u16*);
+static u16 QuantizePixel_Blur(u16*, u16*, u16*);
+static u16 QuantizePixel_PersonalityColor(u16*, u8);
+static u16 QuantizePixel_BlackAndWhite(u16*);
+static u16 QuantizePixel_BlackOutline(u16*, u16*);
+static u16 QuantizePixel_Invert(u16*);
+static u16 QuantizePixel_BlurHard(u16*, u16*, u16*);
+static u16 QuantizePixel_MotionBlur(u16*, u16*);
+static u16 GetColorFromPersonality(u8);
+static void QuantizePalette_Standard(bool8);
+static void SetPresetPalette_PrimaryColors(void);
+static void QuantizePalette_PrimaryColors(void);
+static void SetPresetPalette_Grayscale(void);
+static void QuantizePalette_Grayscale(void);
+static void SetPresetPalette_GrayscaleSmall(void);
+static void QuantizePalette_GrayscaleSmall(void);
+static void SetPresetPalette_BlackAndWhite(void);
+static void QuantizePalette_BlackAndWhite(void);
+static u16 QuantizePixel_Standard(u16*);
+static u16 QuantizePixel_GrayscaleSmall(u16*);
+static u16 QuantizePixel_Grayscale(u16*);
+static u16 QuantizePixel_PrimaryColors(u16*);
+
+static const u8 sPointillismPoints[][3] = {
+ {0x00, 0x1d, 0x1c},
+ {0x0e, 0x1e, 0x1b},
+ {0x00, 0x01, 0x32},
+ {0x2e, 0x1e, 0x37},
+ {0x0a, 0x22, 0x1f},
+ {0x05, 0x26, 0x2e},
+ {0x12, 0x17, 0x1e},
+ {0x1a, 0x03, 0x11},
+ {0x05, 0x11, 0x18},
+ {0x05, 0x27, 0x2f},
+ {0x1a, 0x3f, 0x12},
+ {0x22, 0x3f, 0x16},
+ {0x2b, 0x2f, 0x2e},
+ {0x11, 0x02, 0x2d},
+ {0x23, 0x0d, 0x28},
+ {0x17, 0x0c, 0x19},
+ {0x2f, 0x0e, 0x13},
+ {0x30, 0x18, 0x20},
+ {0x2d, 0x28, 0x22},
+ {0x01, 0x03, 0x19},
+ {0x0e, 0x2a, 0x2b},
+ {0x22, 0x15, 0x25},
+ {0x22, 0x0a, 0x26},
+ {0x39, 0x06, 0x23},
+ {0x16, 0x07, 0x2f},
+ {0x22, 0x3a, 0x1b},
+ {0x3b, 0x36, 0x35},
+ {0x0a, 0x2b, 0x24},
+ {0x36, 0x09, 0x12},
+ {0x1c, 0x2f, 0x23},
+ {0x2e, 0x38, 0x2c},
+ {0x05, 0x2a, 0x20},
+ {0x07, 0x14, 0x32},
+ {0x31, 0x08, 0x17},
+ {0x1a, 0x24, 0x2d},
+ {0x22, 0x0a, 0x16},
+ {0x1b, 0x26, 0x2b},
+ {0x29, 0x16, 0x11},
+ {0x35, 0x08, 0x14},
+ {0x1e, 0x08, 0x14},
+ {0x05, 0x31, 0x14},
+ {0x38, 0x31, 0x17},
+ {0x34, 0x33, 0x12},
+ {0x11, 0x09, 0x1f},
+ {0x28, 0x3d, 0x32},
+ {0x35, 0x03, 0x1e},
+ {0x3c, 0x2b, 0x2e},
+ {0x10, 0x01, 0x17},
+ {0x03, 0x3e, 0x22},
+ {0x17, 0x18, 0x34},
+ {0x08, 0x29, 0x19},
+ {0x03, 0x24, 0x28},
+ {0x3d, 0x33, 0x2f},
+ {0x31, 0x24, 0x19},
+ {0x1b, 0x18, 0x26},
+ {0x07, 0x0d, 0x25},
+ {0x2d, 0x3f, 0x12},
+ {0x2f, 0x15, 0x25},
+ {0x29, 0x0f, 0x12},
+ {0x07, 0x2c, 0x12},
+ {0x2c, 0x0b, 0x26},
+ {0x12, 0x1a, 0x16},
+ {0x00, 0x0b, 0x2f},
+ {0x16, 0x35, 0x24},
+ {0x1f, 0x1c, 0x22},
+ {0x29, 0x33, 0x27},
+ {0x3b, 0x30, 0x17},
+ {0x11, 0x06, 0x35},
+ {0x3e, 0x31, 0x2f},
+ {0x11, 0x3a, 0x25},
+ {0x2a, 0x02, 0x19},
+ {0x33, 0x18, 0x35},
+ {0x2a, 0x20, 0x21},
+ {0x2e, 0x32, 0x1b},
+ {0x3b, 0x1f, 0x23},
+ {0x39, 0x29, 0x2a},
+ {0x2e, 0x31, 0x29},
+ {0x2a, 0x0e, 0x2d},
+ {0x2d, 0x00, 0x1f},
+ {0x38, 0x28, 0x1b},
+ {0x14, 0x3b, 0x2b},
+ {0x2e, 0x04, 0x26},
+ {0x36, 0x30, 0x11},
+ {0x3b, 0x21, 0x2d},
+ {0x2b, 0x3f, 0x1b},
+ {0x20, 0x13, 0x31},
+ {0x33, 0x0c, 0x30},
+ {0x22, 0x2b, 0x2b},
+ {0x16, 0x02, 0x1e},
+ {0x1c, 0x12, 0x1c},
+ {0x0f, 0x3c, 0x36},
+ {0x38, 0x10, 0x2d},
+ {0x18, 0x2f, 0x2d},
+ {0x35, 0x3b, 0x11},
+ {0x37, 0x31, 0x13},
+ {0x13, 0x3d, 0x2f},
+ {0x1e, 0x2c, 0x33},
+ {0x2e, 0x37, 0x12},
+ {0x3c, 0x1f, 0x33},
+ {0x32, 0x2a, 0x27},
+ {0x0d, 0x3b, 0x1c},
+ {0x35, 0x2a, 0x27},
+ {0x09, 0x3d, 0x27},
+ {0x12, 0x0b, 0x18},
+ {0x0c, 0x15, 0x1d},
+ {0x20, 0x01, 0x1c},
+ {0x08, 0x3b, 0x1c},
+ {0x12, 0x37, 0x33},
+ {0x15, 0x03, 0x2c},
+ {0x2a, 0x3b, 0x31},
+ {0x0f, 0x04, 0x35},
+ {0x08, 0x17, 0x33},
+ {0x38, 0x3d, 0x2a},
+ {0x2f, 0x35, 0x16},
+ {0x10, 0x35, 0x16},
+ {0x23, 0x13, 0x2c},
+ {0x2f, 0x06, 0x20},
+ {0x27, 0x3a, 0x24},
+ {0x00, 0x1c, 0x2a},
+ {0x03, 0x39, 0x1d},
+ {0x28, 0x07, 0x1a},
+ {0x20, 0x0a, 0x37},
+ {0x07, 0x35, 0x2d},
+ {0x15, 0x2f, 0x2c},
+ {0x10, 0x2c, 0x23},
+ {0x3f, 0x29, 0x14},
+ {0x2a, 0x21, 0x36},
+ {0x34, 0x1a, 0x2c},
+ {0x1c, 0x3d, 0x33},
+ {0x38, 0x2b, 0x22},
+ {0x35, 0x28, 0x1f},
+ {0x3d, 0x0f, 0x1c},
+ {0x1e, 0x3e, 0x1b},
+ {0x0c, 0x3e, 0x1f},
+ {0x2b, 0x31, 0x2c},
+ {0x32, 0x39, 0x11},
+ {0x05, 0x09, 0x11},
+ {0x04, 0x38, 0x2a},
+ {0x32, 0x00, 0x16},
+ {0x13, 0x0b, 0x31},
+ {0x34, 0x2a, 0x13},
+ {0x2c, 0x22, 0x21},
+ {0x39, 0x2f, 0x15},
+ {0x37, 0x28, 0x1e},
+ {0x07, 0x3b, 0x2d},
+ {0x11, 0x03, 0x28},
+ {0x2d, 0x30, 0x1e},
+ {0x31, 0x11, 0x11},
+ {0x23, 0x01, 0x1e},
+ {0x3d, 0x31, 0x34},
+ {0x1c, 0x02, 0x34},
+ {0x21, 0x0e, 0x25},
+ {0x3d, 0x07, 0x17},
+ {0x33, 0x15, 0x10},
+ {0x29, 0x32, 0x32},
+ {0x18, 0x1f, 0x30},
+ {0x2d, 0x3b, 0x30},
+ {0x27, 0x3e, 0x16},
+ {0x31, 0x15, 0x12},
+ {0x30, 0x25, 0x17},
+ {0x33, 0x06, 0x34},
+ {0x00, 0x29, 0x18},
+ {0x3c, 0x03, 0x12},
+ {0x2c, 0x0c, 0x11},
+ {0x09, 0x30, 0x30},
+ {0x10, 0x0e, 0x11},
+ {0x27, 0x16, 0x1b},
+ {0x0c, 0x3b, 0x2e},
+ {0x2b, 0x33, 0x1e},
+ {0x13, 0x2d, 0x2d},
+ {0x11, 0x24, 0x29},
+ {0x34, 0x3e, 0x2b},
+ {0x24, 0x1e, 0x21},
+ {0x27, 0x1a, 0x2d},
+ {0x04, 0x39, 0x16},
+ {0x3e, 0x33, 0x26},
+ {0x1b, 0x2e, 0x25},
+ {0x0c, 0x06, 0x19},
+ {0x25, 0x19, 0x18},
+ {0x1d, 0x33, 0x33},
+ {0x1d, 0x28, 0x2d},
+ {0x1c, 0x10, 0x2a},
+ {0x1f, 0x35, 0x1e},
+ {0x34, 0x02, 0x10},
+ {0x2b, 0x3a, 0x14},
+ {0x0d, 0x0b, 0x15},
+ {0x0c, 0x2c, 0x10},
+ {0x37, 0x3a, 0x19},
+ {0x06, 0x13, 0x17},
+ {0x24, 0x10, 0x25},
+ {0x24, 0x04, 0x1e},
+ {0x00, 0x35, 0x34},
+ {0x3a, 0x00, 0x37},
+ {0x3c, 0x07, 0x1a},
+ {0x2b, 0x28, 0x36},
+ {0x34, 0x39, 0x2f},
+ {0x28, 0x09, 0x1f},
+ {0x38, 0x31, 0x30},
+ {0x16, 0x25, 0x31},
+ {0x18, 0x28, 0x31},
+ {0x18, 0x0c, 0x22},
+ {0x06, 0x39, 0x2d},
+ {0x3d, 0x20, 0x24},
+ {0x2e, 0x27, 0x21},
+ {0x3e, 0x18, 0x18},
+ {0x15, 0x3c, 0x24},
+ {0x06, 0x1b, 0x26},
+ {0x15, 0x0e, 0x22},
+ {0x0a, 0x0d, 0x1f},
+ {0x18, 0x16, 0x34},
+ {0x10, 0x28, 0x21},
+ {0x20, 0x11, 0x11},
+ {0x36, 0x32, 0x15},
+ {0x3b, 0x2e, 0x24},
+ {0x1f, 0x2d, 0x12},
+ {0x36, 0x2e, 0x20},
+ {0x0b, 0x17, 0x33},
+ {0x26, 0x03, 0x1f},
+ {0x08, 0x19, 0x31},
+ {0x2a, 0x18, 0x25},
+ {0x35, 0x2d, 0x2d},
+ {0x30, 0x38, 0x18},
+ {0x1c, 0x25, 0x14},
+ {0x1c, 0x22, 0x28},
+ {0x08, 0x23, 0x21},
+ {0x26, 0x1e, 0x30},
+ {0x19, 0x0f, 0x15},
+ {0x10, 0x2f, 0x22},
+ {0x12, 0x02, 0x25},
+ {0x3c, 0x01, 0x1d},
+ {0x0e, 0x14, 0x18},
+ {0x0d, 0x18, 0x17},
+ {0x22, 0x0b, 0x31},
+ {0x13, 0x34, 0x21},
+ {0x0f, 0x2d, 0x36},
+ {0x39, 0x1f, 0x25},
+ {0x18, 0x10, 0x1f},
+ {0x2d, 0x20, 0x20},
+ {0x19, 0x0b, 0x31},
+ {0x33, 0x13, 0x14},
+ {0x2e, 0x11, 0x21},
+ {0x2d, 0x0a, 0x37},
+ {0x07, 0x15, 0x1b},
+ {0x32, 0x04, 0x32},
+ {0x06, 0x18, 0x1b},
+ {0x13, 0x24, 0x12},
+ {0x36, 0x22, 0x16},
+ {0x1d, 0x29, 0x1c},
+ {0x35, 0x17, 0x21},
+ {0x36, 0x17, 0x2b},
+ {0x35, 0x32, 0x19},
+ {0x2a, 0x0f, 0x2e},
+ {0x10, 0x00, 0x34},
+ {0x02, 0x0e, 0x28},
+ {0x31, 0x32, 0x32},
+ {0x3b, 0x05, 0x20},
+ {0x36, 0x26, 0x12},
+ {0x34, 0x06, 0x34},
+ {0x1e, 0x31, 0x32},
+ {0x35, 0x05, 0x34},
+ {0x1e, 0x13, 0x15},
+ {0x15, 0x14, 0x2c},
+ {0x29, 0x1c, 0x18},
+ {0x24, 0x24, 0x12},
+ {0x22, 0x29, 0x18},
+ {0x34, 0x36, 0x30},
+ {0x1e, 0x01, 0x23},
+ {0x0c, 0x3c, 0x24},
+ {0x0a, 0x3d, 0x16},
+ {0x27, 0x1e, 0x23},
+ {0x15, 0x02, 0x12},
+ {0x11, 0x19, 0x2a},
+ {0x1d, 0x31, 0x15},
+ {0x03, 0x3b, 0x2a},
+ {0x21, 0x19, 0x2c},
+ {0x0a, 0x23, 0x11},
+ {0x25, 0x11, 0x1a},
+ {0x1a, 0x0a, 0x34},
+ {0x3b, 0x0b, 0x33},
+ {0x21, 0x0b, 0x37},
+ {0x01, 0x31, 0x28},
+ {0x35, 0x1d, 0x27},
+ {0x2c, 0x30, 0x31},
+ {0x2e, 0x39, 0x2d},
+ {0x30, 0x05, 0x2c},
+ {0x12, 0x2a, 0x2b},
+ {0x39, 0x22, 0x20},
+ {0x15, 0x34, 0x1c},
+ {0x1c, 0x01, 0x15},
+ {0x20, 0x16, 0x22},
+ {0x13, 0x04, 0x18},
+ {0x1e, 0x13, 0x10},
+ {0x25, 0x33, 0x15},
+ {0x39, 0x03, 0x31},
+ {0x3f, 0x36, 0x18},
+ {0x14, 0x23, 0x10},
+ {0x2f, 0x1e, 0x1f},
+ {0x1f, 0x17, 0x2c},
+ {0x02, 0x16, 0x31},
+ {0x20, 0x18, 0x30},
+ {0x2e, 0x18, 0x37},
+ {0x3b, 0x0e, 0x30},
+ {0x10, 0x39, 0x24},
+ {0x26, 0x39, 0x1e},
+ {0x30, 0x26, 0x2e},
+ {0x12, 0x01, 0x14},
+ {0x37, 0x2a, 0x2e},
+ {0x21, 0x06, 0x1d},
+ {0x2a, 0x16, 0x32},
+ {0x09, 0x38, 0x1c},
+ {0x07, 0x22, 0x17},
+ {0x3b, 0x2d, 0x15},
+ {0x07, 0x1e, 0x2e},
+ {0x1b, 0x2e, 0x1d},
+ {0x04, 0x09, 0x30},
+ {0x30, 0x2d, 0x37},
+ {0x2d, 0x34, 0x24},
+ {0x18, 0x24, 0x25},
+ {0x0e, 0x2d, 0x26},
+ {0x23, 0x0a, 0x16},
+ {0x12, 0x2d, 0x11},
+ {0x21, 0x28, 0x2e},
+ {0x0f, 0x01, 0x21},
+ {0x01, 0x31, 0x12},
+ {0x3f, 0x1b, 0x1e},
+ {0x21, 0x25, 0x2b},
+ {0x26, 0x18, 0x13},
+ {0x15, 0x2d, 0x34},
+ {0x23, 0x21, 0x36},
+ {0x0e, 0x2e, 0x1c},
+ {0x14, 0x22, 0x1c},
+ {0x2c, 0x0b, 0x28},
+ {0x1a, 0x18, 0x21},
+ {0x21, 0x07, 0x1a},
+ {0x24, 0x26, 0x29},
+ {0x2b, 0x0a, 0x34},
+ {0x3e, 0x27, 0x33},
+ {0x12, 0x34, 0x1b},
+ {0x1f, 0x01, 0x2a},
+ {0x2e, 0x06, 0x23},
+ {0x2f, 0x1f, 0x14},
+ {0x18, 0x06, 0x26},
+ {0x31, 0x1f, 0x2b},
+ {0x22, 0x26, 0x2e},
+ {0x1e, 0x15, 0x16},
+ {0x20, 0x22, 0x28},
+ {0x15, 0x37, 0x12},
+ {0x25, 0x04, 0x2c},
+ {0x1f, 0x04, 0x2e},
+ {0x0c, 0x13, 0x18},
+ {0x07, 0x0b, 0x36},
+ {0x1d, 0x1c, 0x2a},
+ {0x30, 0x22, 0x1c},
+ {0x2e, 0x12, 0x2f},
+ {0x2b, 0x21, 0x1e},
+ {0x16, 0x38, 0x30},
+ {0x04, 0x02, 0x16},
+ {0x05, 0x14, 0x20},
+ {0x38, 0x3c, 0x33},
+ {0x21, 0x1b, 0x2f},
+ {0x14, 0x2a, 0x27},
+ {0x38, 0x14, 0x1b},
+ {0x2b, 0x1f, 0x2b},
+ {0x29, 0x2b, 0x25},
+ {0x27, 0x36, 0x21},
+ {0x11, 0x22, 0x1b},
+ {0x29, 0x03, 0x1b},
+ {0x18, 0x24, 0x28},
+ {0x21, 0x2d, 0x36},
+ {0x3c, 0x2c, 0x24},
+ {0x33, 0x17, 0x1f},
+ {0x2a, 0x3a, 0x21},
+ {0x0a, 0x23, 0x37},
+ {0x00, 0x0b, 0x21},
+ {0x11, 0x38, 0x19},
+ {0x0f, 0x0e, 0x1c},
+ {0x1f, 0x0f, 0x37},
+ {0x3c, 0x10, 0x37},
+ {0x38, 0x31, 0x35},
+ {0x07, 0x15, 0x28},
+ {0x1e, 0x2e, 0x19},
+ {0x26, 0x10, 0x33},
+ {0x3d, 0x35, 0x2f},
+ {0x3a, 0x04, 0x34},
+ {0x0d, 0x18, 0x1a},
+ {0x01, 0x2d, 0x15},
+ {0x3d, 0x1a, 0x17},
+ {0x17, 0x3f, 0x32},
+ {0x0b, 0x21, 0x11},
+ {0x1e, 0x26, 0x2b},
+ {0x0d, 0x19, 0x24},
+ {0x2e, 0x04, 0x1b},
+ {0x1b, 0x33, 0x20},
+ {0x15, 0x21, 0x1d},
+ {0x1f, 0x04, 0x21},
+ {0x0f, 0x12, 0x1f},
+ {0x2d, 0x2a, 0x32},
+ {0x03, 0x37, 0x1f},
+ {0x35, 0x07, 0x27},
+ {0x24, 0x1f, 0x31},
+ {0x2f, 0x30, 0x15},
+ {0x06, 0x00, 0x24},
+ {0x0b, 0x22, 0x1a},
+ {0x0c, 0x3b, 0x29},
+ {0x14, 0x1a, 0x17},
+ {0x37, 0x20, 0x25},
+ {0x3f, 0x26, 0x37},
+ {0x3a, 0x3e, 0x10},
+ {0x22, 0x04, 0x11},
+ {0x28, 0x12, 0x1c},
+ {0x03, 0x2e, 0x2e},
+ {0x0e, 0x38, 0x28},
+ {0x01, 0x29, 0x22},
+ {0x1e, 0x33, 0x19},
+ {0x06, 0x21, 0x27},
+ {0x33, 0x19, 0x1a},
+ {0x02, 0x05, 0x17},
+ {0x11, 0x11, 0x2c},
+ {0x1f, 0x26, 0x1e},
+ {0x39, 0x1f, 0x28},
+ {0x2e, 0x2f, 0x12},
+ {0x22, 0x34, 0x13},
+ {0x3b, 0x26, 0x2f},
+ {0x34, 0x00, 0x14},
+ {0x10, 0x31, 0x11},
+ {0x1d, 0x2d, 0x2a},
+ {0x08, 0x08, 0x37},
+ {0x15, 0x18, 0x34},
+ {0x04, 0x2b, 0x24},
+ {0x2f, 0x1e, 0x27},
+ {0x22, 0x2a, 0x24},
+ {0x07, 0x14, 0x25},
+ {0x01, 0x27, 0x19},
+ {0x29, 0x0a, 0x29},
+ {0x3d, 0x1c, 0x2f},
+ {0x0d, 0x1f, 0x1c},
+ {0x24, 0x3d, 0x32},
+ {0x36, 0x1d, 0x24},
+ {0x14, 0x21, 0x16},
+ {0x1a, 0x0d, 0x29},
+ {0x3f, 0x2b, 0x2a},
+ {0x1a, 0x3e, 0x35},
+ {0x11, 0x28, 0x18},
+ {0x32, 0x05, 0x15},
+ {0x21, 0x2e, 0x34},
+ {0x2d, 0x14, 0x2a},
+ {0x3c, 0x08, 0x37},
+ {0x3f, 0x34, 0x1e},
+ {0x27, 0x24, 0x1c},
+ {0x16, 0x16, 0x33},
+ {0x29, 0x3b, 0x19},
+ {0x36, 0x2f, 0x1c},
+ {0x03, 0x25, 0x2c},
+ {0x0b, 0x16, 0x36},
+ {0x1c, 0x1d, 0x1b},
+ {0x2c, 0x27, 0x1b},
+ {0x0b, 0x1f, 0x2b},
+ {0x08, 0x10, 0x27},
+ {0x3f, 0x25, 0x2f},
+ {0x33, 0x13, 0x1f},
+ {0x04, 0x31, 0x37},
+ {0x0e, 0x2f, 0x12},
+ {0x08, 0x23, 0x20},
+ {0x3a, 0x1a, 0x1e},
+ {0x2f, 0x0b, 0x1f},
+ {0x1e, 0x20, 0x19},
+ {0x23, 0x3b, 0x14},
+ {0x25, 0x00, 0x27},
+ {0x14, 0x04, 0x25},
+ {0x36, 0x1a, 0x2b},
+ {0x27, 0x21, 0x15},
+ {0x28, 0x13, 0x2c},
+ {0x0e, 0x3c, 0x35},
+ {0x0c, 0x2d, 0x2b},
+ {0x37, 0x16, 0x15},
+ {0x29, 0x15, 0x1d},
+ {0x17, 0x34, 0x36},
+ {0x09, 0x0a, 0x31},
+ {0x37, 0x22, 0x28},
+ {0x17, 0x2b, 0x35},
+ {0x14, 0x2b, 0x12},
+ {0x08, 0x13, 0x1f},
+ {0x31, 0x13, 0x28},
+ {0x06, 0x07, 0x35},
+ {0x23, 0x3a, 0x29},
+ {0x0f, 0x24, 0x2e},
+ {0x07, 0x35, 0x26},
+ {0x0e, 0x12, 0x15},
+ {0x23, 0x33, 0x2c},
+ {0x0e, 0x21, 0x26},
+ {0x1c, 0x12, 0x25},
+ {0x23, 0x1d, 0x2f},
+ {0x04, 0x35, 0x33},
+ {0x16, 0x01, 0x24},
+ {0x3d, 0x2c, 0x2e},
+ {0x35, 0x0a, 0x25},
+ {0x11, 0x13, 0x25},
+ {0x1b, 0x1b, 0x15},
+ {0x15, 0x39, 0x10},
+ {0x0b, 0x35, 0x24},
+ {0x3a, 0x27, 0x30},
+ {0x2e, 0x2f, 0x15},
+ {0x10, 0x1f, 0x35},
+ {0x1b, 0x28, 0x35},
+ {0x26, 0x30, 0x37},
+ {0x34, 0x37, 0x2b},
+ {0x0f, 0x30, 0x29},
+ {0x2e, 0x3f, 0x2b},
+ {0x38, 0x34, 0x2b},
+ {0x2b, 0x2f, 0x25},
+ {0x0d, 0x28, 0x2a},
+ {0x33, 0x18, 0x10},
+ {0x21, 0x12, 0x11},
+ {0x1f, 0x22, 0x34},
+ {0x11, 0x25, 0x23},
+ {0x21, 0x3f, 0x11},
+ {0x26, 0x27, 0x25},
+ {0x28, 0x36, 0x12},
+ {0x15, 0x26, 0x32},
+ {0x11, 0x18, 0x24},
+ {0x32, 0x25, 0x37},
+ {0x27, 0x3a, 0x33},
+ {0x35, 0x07, 0x1c},
+ {0x1a, 0x0e, 0x2a},
+ {0x1e, 0x2f, 0x1f},
+ {0x00, 0x2e, 0x21},
+ {0x1b, 0x3c, 0x14},
+ {0x2f, 0x3a, 0x2f},
+ {0x3e, 0x38, 0x15},
+ {0x1a, 0x13, 0x2f},
+ {0x29, 0x0d, 0x2f},
+ {0x37, 0x17, 0x18},
+ {0x30, 0x1c, 0x35},
+ {0x15, 0x34, 0x14},
+ {0x28, 0x11, 0x2c},
+ {0x2c, 0x25, 0x2a},
+ {0x20, 0x3f, 0x28},
+ {0x0c, 0x34, 0x1b},
+ {0x30, 0x2e, 0x25},
+ {0x37, 0x1c, 0x24},
+ {0x1f, 0x25, 0x26},
+ {0x0c, 0x19, 0x34},
+ {0x18, 0x10, 0x35},
+ {0x0a, 0x13, 0x11},
+ {0x25, 0x13, 0x20},
+ {0x13, 0x19, 0x11},
+ {0x20, 0x28, 0x1d},
+ {0x3e, 0x30, 0x1b},
+ {0x23, 0x24, 0x21},
+ {0x0d, 0x23, 0x23},
+ {0x1d, 0x28, 0x2e},
+ {0x2d, 0x12, 0x1f},
+ {0x0e, 0x2e, 0x2b},
+ {0x0b, 0x31, 0x32},
+ {0x24, 0x3c, 0x2c},
+ {0x13, 0x3c, 0x12},
+ {0x28, 0x16, 0x2a},
+ {0x05, 0x0c, 0x32},
+ {0x39, 0x0b, 0x32},
+ {0x21, 0x04, 0x14},
+ {0x10, 0x31, 0x32},
+ {0x12, 0x1f, 0x23},
+ {0x39, 0x2e, 0x2e},
+ {0x22, 0x3d, 0x27},
+ {0x0c, 0x1e, 0x18},
+ {0x25, 0x00, 0x17},
+ {0x06, 0x31, 0x14},
+ {0x13, 0x21, 0x1a},
+ {0x14, 0x20, 0x35},
+ {0x0a, 0x3b, 0x25},
+ {0x33, 0x08, 0x28},
+ {0x3d, 0x02, 0x33},
+ {0x23, 0x00, 0x13},
+ {0x22, 0x21, 0x28},
+ {0x30, 0x14, 0x2e},
+ {0x14, 0x32, 0x36},
+ {0x39, 0x23, 0x1e},
+ {0x1c, 0x11, 0x30},
+ {0x37, 0x16, 0x30},
+ {0x15, 0x31, 0x1f},
+ {0x34, 0x28, 0x2c},
+ {0x35, 0x05, 0x29},
+ {0x37, 0x33, 0x2a},
+ {0x1c, 0x17, 0x2e},
+ {0x10, 0x06, 0x16},
+ {0x32, 0x1f, 0x2f},
+ {0x00, 0x29, 0x1e},
+ {0x04, 0x01, 0x16},
+ {0x3b, 0x23, 0x1e},
+ {0x1b, 0x34, 0x2a},
+ {0x30, 0x11, 0x2b},
+ {0x03, 0x00, 0x1f},
+ {0x1d, 0x37, 0x1a},
+ {0x3a, 0x18, 0x25},
+ {0x1c, 0x16, 0x2c},
+ {0x04, 0x3f, 0x33},
+ {0x26, 0x23, 0x2d},
+ {0x15, 0x2c, 0x27},
+ {0x02, 0x35, 0x27},
+ {0x07, 0x35, 0x33},
+ {0x1a, 0x0c, 0x10},
+ {0x28, 0x26, 0x2c},
+ {0x2f, 0x36, 0x16},
+ {0x37, 0x0b, 0x27},
+ {0x1b, 0x3d, 0x18},
+ {0x27, 0x1f, 0x20},
+ {0x2b, 0x2a, 0x33},
+ {0x0b, 0x0f, 0x20},
+ {0x35, 0x3c, 0x2f},
+ {0x33, 0x21, 0x15},
+ {0x2d, 0x26, 0x34},
+ {0x1f, 0x1a, 0x21},
+ {0x2f, 0x2c, 0x2a},
+ {0x1a, 0x32, 0x1a},
+ {0x3b, 0x3f, 0x21},
+ {0x13, 0x3f, 0x13},
+ {0x0f, 0x24, 0x22},
+ {0x14, 0x1b, 0x10},
+ {0x21, 0x06, 0x28},
+ {0x25, 0x34, 0x10},
+ {0x2e, 0x0e, 0x14},
+ {0x3c, 0x3e, 0x25},
+ {0x16, 0x06, 0x30},
+ {0x0b, 0x04, 0x1f},
+ {0x3e, 0x02, 0x24},
+ {0x0c, 0x17, 0x25},
+ {0x2b, 0x3c, 0x2d},
+ {0x15, 0x36, 0x33},
+ {0x18, 0x23, 0x2a},
+ {0x1d, 0x10, 0x2a},
+ {0x35, 0x17, 0x28},
+ {0x00, 0x37, 0x24},
+ {0x0a, 0x3b, 0x15},
+ {0x1d, 0x0b, 0x1f},
+ {0x3c, 0x31, 0x25},
+ {0x1d, 0x0f, 0x1d},
+ {0x20, 0x13, 0x34},
+ {0x11, 0x2b, 0x2e},
+ {0x23, 0x0c, 0x2e},
+ {0x24, 0x02, 0x14},
+ {0x31, 0x16, 0x19},
+ {0x0e, 0x23, 0x35},
+ {0x1a, 0x10, 0x16},
+ {0x14, 0x04, 0x19},
+ {0x2d, 0x27, 0x37},
+ {0x33, 0x02, 0x31},
+ {0x02, 0x04, 0x16},
+ {0x0d, 0x22, 0x25},
+ {0x25, 0x00, 0x16},
+ {0x2a, 0x3f, 0x26},
+ {0x20, 0x0c, 0x12},
+ {0x2f, 0x2e, 0x35},
+ {0x1b, 0x0d, 0x22},
+ {0x1e, 0x01, 0x34},
+ {0x05, 0x22, 0x21},
+ {0x34, 0x2a, 0x32},
+ {0x0b, 0x09, 0x1d},
+ {0x3f, 0x32, 0x2f},
+ {0x3d, 0x18, 0x2d},
+ {0x0b, 0x38, 0x36},
+ {0x39, 0x17, 0x28},
+ {0x34, 0x04, 0x24},
+ {0x36, 0x0e, 0x2a},
+ {0x38, 0x01, 0x14},
+ {0x3c, 0x24, 0x22},
+ {0x21, 0x03, 0x18},
+ {0x32, 0x2f, 0x12},
+ {0x29, 0x24, 0x31},
+ {0x0a, 0x3b, 0x12},
+ {0x1a, 0x1c, 0x20},
+ {0x30, 0x31, 0x1b},
+ {0x1a, 0x21, 0x10},
+ {0x05, 0x29, 0x10},
+ {0x26, 0x2d, 0x13},
+ {0x16, 0x0c, 0x1d},
+ {0x2b, 0x06, 0x1b},
+ {0x06, 0x12, 0x14},
+ {0x38, 0x0f, 0x35},
+ {0x23, 0x3a, 0x2c},
+ {0x00, 0x19, 0x33},
+ {0x29, 0x14, 0x2d},
+ {0x2a, 0x21, 0x29},
+ {0x14, 0x31, 0x14},
+ {0x1a, 0x06, 0x1e},
+ {0x18, 0x1b, 0x28},
+ {0x3b, 0x16, 0x29},
+ {0x15, 0x1e, 0x12},
+ {0x34, 0x0a, 0x14},
+ {0x1b, 0x05, 0x27},
+ {0x0b, 0x01, 0x26},
+ {0x2a, 0x22, 0x35},
+ {0x21, 0x20, 0x18},
+ {0x20, 0x37, 0x17},
+ {0x14, 0x1f, 0x11},
+ {0x1d, 0x11, 0x25},
+ {0x24, 0x2b, 0x2f},
+ {0x07, 0x3f, 0x1f},
+ {0x2c, 0x25, 0x25},
+ {0x2a, 0x29, 0x18},
+ {0x11, 0x24, 0x28},
+ {0x31, 0x2c, 0x2a},
+ {0x39, 0x0b, 0x26},
+ {0x28, 0x10, 0x26},
+ {0x22, 0x06, 0x16},
+ {0x09, 0x2c, 0x13},
+ {0x34, 0x19, 0x15},
+ {0x3a, 0x12, 0x21},
+ {0x1d, 0x38, 0x23},
+ {0x12, 0x25, 0x24},
+ {0x21, 0x30, 0x12},
+ {0x37, 0x1a, 0x12},
+ {0x24, 0x3b, 0x25},
+ {0x32, 0x15, 0x23},
+ {0x0d, 0x1a, 0x10},
+ {0x16, 0x2e, 0x26},
+ {0x1d, 0x14, 0x16},
+ {0x3e, 0x2e, 0x1f},
+ {0x0a, 0x16, 0x10},
+ {0x1d, 0x30, 0x2b},
+ {0x04, 0x3a, 0x19},
+ {0x08, 0x2d, 0x2e},
+ {0x28, 0x1e, 0x33},
+ {0x0a, 0x12, 0x2e},
+ {0x0d, 0x03, 0x2f},
+ {0x26, 0x3a, 0x1e},
+ {0x35, 0x3b, 0x2a},
+ {0x03, 0x1a, 0x18},
+ {0x3f, 0x0b, 0x27},
+ {0x04, 0x05, 0x34},
+ {0x36, 0x0b, 0x27},
+ {0x3b, 0x17, 0x11},
+ {0x0d, 0x27, 0x26},
+ {0x2c, 0x1f, 0x20},
+ {0x26, 0x10, 0x20},
+ {0x25, 0x23, 0x2d},
+ {0x37, 0x09, 0x13},
+ {0x14, 0x17, 0x2d},
+ {0x2e, 0x3d, 0x23},
+ {0x1d, 0x1a, 0x1f},
+ {0x21, 0x33, 0x2e},
+ {0x28, 0x17, 0x13},
+ {0x26, 0x3c, 0x36},
+ {0x14, 0x1a, 0x33},
+ {0x32, 0x20, 0x2b},
+ {0x19, 0x3e, 0x20},
+ {0x0c, 0x02, 0x2d},
+ {0x3c, 0x3c, 0x2a},
+ {0x30, 0x30, 0x28},
+ {0x25, 0x3f, 0x1e},
+ {0x03, 0x17, 0x1e},
+ {0x35, 0x11, 0x1c},
+ {0x1b, 0x14, 0x2a},
+ {0x28, 0x3a, 0x23},
+ {0x0e, 0x1f, 0x12},
+ {0x36, 0x21, 0x20},
+ {0x07, 0x3b, 0x10},
+ {0x23, 0x19, 0x34},
+ {0x0d, 0x2e, 0x18},
+ {0x3f, 0x20, 0x25},
+ {0x3e, 0x3b, 0x15},
+ {0x0b, 0x2e, 0x12},
+ {0x37, 0x0b, 0x23},
+ {0x3d, 0x32, 0x1f},
+ {0x16, 0x03, 0x27},
+ {0x14, 0x0c, 0x21},
+ {0x18, 0x03, 0x30},
+ {0x3e, 0x21, 0x13},
+ {0x0f, 0x00, 0x32},
+ {0x3f, 0x23, 0x16},
+ {0x0e, 0x31, 0x1d},
+ {0x18, 0x1c, 0x1d},
+ {0x30, 0x0e, 0x1e},
+ {0x21, 0x20, 0x23},
+ {0x3f, 0x0c, 0x1e},
+ {0x14, 0x33, 0x22},
+ {0x22, 0x21, 0x15},
+ {0x36, 0x05, 0x1e},
+ {0x1d, 0x31, 0x14},
+ {0x20, 0x11, 0x37},
+ {0x0d, 0x33, 0x19},
+ {0x25, 0x05, 0x36},
+ {0x1e, 0x31, 0x20},
+ {0x35, 0x3a, 0x2f},
+ {0x32, 0x2f, 0x30},
+ {0x14, 0x23, 0x2d},
+ {0x35, 0x1e, 0x29},
+ {0x05, 0x05, 0x1b},
+ {0x09, 0x1f, 0x26},
+ {0x2f, 0x0b, 0x15},
+ {0x15, 0x11, 0x13},
+ {0x29, 0x1b, 0x18},
+ {0x1c, 0x13, 0x35},
+ {0x34, 0x31, 0x23},
+ {0x27, 0x3f, 0x2f},
+ {0x09, 0x30, 0x19},
+ {0x23, 0x12, 0x34},
+ {0x02, 0x2a, 0x21},
+ {0x09, 0x3c, 0x1d},
+ {0x0c, 0x02, 0x10},
+ {0x22, 0x05, 0x17},
+ {0x22, 0x08, 0x1b},
+ {0x0a, 0x0f, 0x15},
+ {0x02, 0x11, 0x13},
+ {0x01, 0x21, 0x22},
+ {0x16, 0x39, 0x33},
+ {0x24, 0x38, 0x34},
+ {0x0f, 0x1e, 0x2b},
+ {0x2b, 0x15, 0x15},
+ {0x20, 0x22, 0x2e},
+ {0x3a, 0x3f, 0x31},
+ {0x1a, 0x27, 0x2b},
+ {0x29, 0x34, 0x14},
+ {0x16, 0x39, 0x2f},
+ {0x13, 0x3e, 0x16},
+ {0x36, 0x21, 0x30},
+ {0x00, 0x24, 0x2b},
+ {0x24, 0x21, 0x30},
+ {0x15, 0x31, 0x13},
+ {0x10, 0x37, 0x24},
+ {0x08, 0x07, 0x23},
+ {0x21, 0x09, 0x25},
+ {0x05, 0x3c, 0x32},
+ {0x19, 0x03, 0x25},
+ {0x0f, 0x29, 0x2b},
+ {0x16, 0x07, 0x13},
+ {0x3e, 0x3d, 0x25},
+ {0x36, 0x0b, 0x28},
+ {0x2e, 0x2b, 0x16},
+ {0x0c, 0x31, 0x11},
+ {0x30, 0x13, 0x2d},
+ {0x26, 0x3e, 0x37},
+ {0x29, 0x2f, 0x2e},
+ {0x15, 0x3d, 0x17},
+ {0x1c, 0x2e, 0x21},
+ {0x33, 0x2f, 0x10},
+ {0x0d, 0x05, 0x1d},
+ {0x1c, 0x1a, 0x12},
+ {0x0e, 0x18, 0x37},
+ {0x1b, 0x11, 0x14},
+ {0x06, 0x14, 0x21},
+ {0x31, 0x0e, 0x27},
+ {0x1a, 0x03, 0x10},
+ {0x00, 0x34, 0x31},
+ {0x3f, 0x0b, 0x1d},
+ {0x0f, 0x12, 0x1f},
+ {0x1a, 0x15, 0x10},
+ {0x0f, 0x00, 0x24},
+ {0x3e, 0x0a, 0x2a},
+ {0x30, 0x2b, 0x24},
+ {0x26, 0x31, 0x10},
+ {0x2d, 0x2f, 0x2f},
+ {0x3f, 0x0c, 0x13},
+ {0x12, 0x0b, 0x16},
+ {0x15, 0x07, 0x1f},
+ {0x28, 0x10, 0x32},
+ {0x0f, 0x17, 0x15},
+ {0x0b, 0x27, 0x33},
+ {0x34, 0x1d, 0x10},
+ {0x1c, 0x3a, 0x12},
+ {0x2c, 0x27, 0x37},
+ {0x0a, 0x1a, 0x32},
+ {0x05, 0x1f, 0x21},
+ {0x24, 0x0d, 0x1f},
+ {0x1c, 0x17, 0x24},
+ {0x2f, 0x3b, 0x32},
+ {0x3b, 0x25, 0x10},
+ {0x03, 0x2f, 0x21},
+ {0x0c, 0x10, 0x23},
+ {0x0e, 0x3a, 0x2c},
+ {0x33, 0x03, 0x2c},
+ {0x12, 0x06, 0x1c},
+ {0x2a, 0x37, 0x30},
+ {0x3f, 0x01, 0x1e},
+ {0x35, 0x16, 0x37},
+ {0x2c, 0x32, 0x35},
+ {0x05, 0x11, 0x22},
+ {0x29, 0x09, 0x20},
+ {0x2b, 0x0d, 0x1f},
+ {0x18, 0x0d, 0x20},
+ {0x23, 0x39, 0x16},
+ {0x0f, 0x3a, 0x18},
+ {0x21, 0x35, 0x2b},
+ {0x36, 0x26, 0x2b},
+ {0x23, 0x05, 0x2f},
+ {0x1b, 0x08, 0x17},
+ {0x3e, 0x09, 0x16},
+ {0x2d, 0x3a, 0x37},
+ {0x15, 0x35, 0x35},
+ {0x29, 0x0a, 0x12},
+ {0x02, 0x39, 0x1f},
+ {0x14, 0x34, 0x33},
+ {0x17, 0x1d, 0x18},
+ {0x16, 0x1d, 0x1a},
+ {0x01, 0x39, 0x22},
+ {0x1e, 0x27, 0x36},
+ {0x32, 0x14, 0x26},
+ {0x0a, 0x39, 0x36},
+ {0x1f, 0x0d, 0x1e},
+ {0x0b, 0x0a, 0x19},
+ {0x35, 0x1d, 0x34},
+ {0x03, 0x12, 0x16},
+ {0x0c, 0x13, 0x2e},
+ {0x0c, 0x34, 0x1e},
+ {0x10, 0x14, 0x1e},
+ {0x23, 0x32, 0x27},
+ {0x02, 0x10, 0x29},
+ {0x35, 0x18, 0x33},
+ {0x33, 0x1d, 0x1a},
+ {0x3c, 0x15, 0x23},
+ {0x3e, 0x3f, 0x22},
+ {0x2a, 0x02, 0x2c},
+ {0x28, 0x0a, 0x2f},
+ {0x1a, 0x06, 0x35},
+ {0x3c, 0x17, 0x2b},
+ {0x03, 0x12, 0x17},
+ {0x2f, 0x0a, 0x26},
+ {0x12, 0x38, 0x11},
+ {0x36, 0x1b, 0x23},
+ {0x01, 0x39, 0x35},
+ {0x19, 0x19, 0x17},
+ {0x09, 0x28, 0x22},
+ {0x1e, 0x27, 0x2c},
+ {0x35, 0x33, 0x2c},
+ {0x27, 0x25, 0x31},
+ {0x06, 0x31, 0x2d},
+ {0x1a, 0x39, 0x28},
+ {0x2d, 0x04, 0x1e},
+ {0x24, 0x3e, 0x1c},
+ {0x3c, 0x30, 0x1b},
+ {0x3f, 0x3e, 0x37},
+ {0x22, 0x36, 0x11},
+ {0x00, 0x01, 0x1c},
+ {0x12, 0x1a, 0x10},
+ {0x12, 0x1e, 0x2c},
+ {0x1f, 0x12, 0x2a},
+ {0x2f, 0x06, 0x19},
+ {0x35, 0x1a, 0x18},
+ {0x3b, 0x09, 0x36},
+ {0x34, 0x1d, 0x13},
+ {0x02, 0x07, 0x10},
+ {0x20, 0x2f, 0x1d},
+ {0x0b, 0x03, 0x33},
+ {0x1c, 0x16, 0x31},
+ {0x05, 0x13, 0x1b},
+ {0x29, 0x06, 0x13},
+ {0x30, 0x2d, 0x36},
+ {0x2a, 0x2d, 0x2c},
+ {0x19, 0x34, 0x1c},
+ {0x0f, 0x15, 0x12},
+ {0x36, 0x15, 0x2c},
+ {0x3a, 0x06, 0x1c},
+ {0x12, 0x1d, 0x26},
+ {0x03, 0x38, 0x1d},
+ {0x01, 0x01, 0x2d},
+ {0x17, 0x2e, 0x10},
+ {0x14, 0x17, 0x1c},
+ {0x34, 0x0f, 0x28},
+ {0x09, 0x37, 0x1b},
+ {0x28, 0x1d, 0x26},
+ {0x29, 0x2d, 0x36},
+ {0x1e, 0x17, 0x28},
+ {0x15, 0x0f, 0x1c},
+ {0x20, 0x2d, 0x10},
+ {0x27, 0x16, 0x2e},
+ {0x14, 0x09, 0x12},
+ {0x3b, 0x3d, 0x21},
+ {0x25, 0x1a, 0x2c},
+ {0x00, 0x22, 0x36},
+ {0x0d, 0x30, 0x10},
+ {0x17, 0x19, 0x1b},
+ {0x00, 0x3b, 0x21},
+ {0x2a, 0x28, 0x34},
+ {0x2d, 0x0f, 0x16},
+ {0x0a, 0x30, 0x28},
+ {0x06, 0x00, 0x25},
+ {0x31, 0x2e, 0x2a},
+ {0x14, 0x33, 0x28},
+ {0x36, 0x10, 0x2e},
+ {0x05, 0x2e, 0x19},
+ {0x19, 0x1a, 0x15},
+ {0x2c, 0x14, 0x17},
+ {0x37, 0x0f, 0x13},
+ {0x32, 0x17, 0x1b},
+ {0x39, 0x18, 0x32},
+ {0x2e, 0x32, 0x1e},
+ {0x24, 0x1d, 0x31},
+ {0x12, 0x1d, 0x2b},
+ {0x14, 0x0c, 0x27},
+ {0x36, 0x2e, 0x32},
+ {0x06, 0x0a, 0x1a},
+ {0x28, 0x28, 0x20},
+ {0x3a, 0x3a, 0x17},
+ {0x08, 0x27, 0x36},
+ {0x18, 0x1a, 0x10},
+ {0x1e, 0x26, 0x1b},
+ {0x1f, 0x33, 0x1f},
+ {0x21, 0x17, 0x2f},
+ {0x01, 0x08, 0x20},
+ {0x35, 0x03, 0x19},
+ {0x3b, 0x02, 0x20},
+ {0x02, 0x2d, 0x23},
+ {0x0e, 0x17, 0x32},
+ {0x31, 0x29, 0x11},
+ {0x22, 0x17, 0x22},
+ {0x3a, 0x2c, 0x23},
+ {0x34, 0x20, 0x18},
+ {0x00, 0x3a, 0x22},
+ {0x25, 0x33, 0x21},
+ {0x33, 0x04, 0x27},
+ {0x04, 0x18, 0x32},
+ {0x2c, 0x0c, 0x2f},
+ {0x28, 0x14, 0x2c},
+ {0x3f, 0x30, 0x2b},
+ {0x30, 0x21, 0x1d},
+ {0x01, 0x25, 0x32},
+ {0x05, 0x23, 0x34},
+ {0x24, 0x10, 0x30},
+ {0x3d, 0x14, 0x1b},
+ {0x3f, 0x38, 0x2f},
+ {0x22, 0x1b, 0x32},
+ {0x25, 0x07, 0x37},
+ {0x0a, 0x0c, 0x1d},
+ {0x03, 0x1e, 0x1a},
+ {0x0f, 0x3c, 0x12},
+ {0x11, 0x18, 0x1d},
+ {0x00, 0x35, 0x2f},
+ {0x32, 0x18, 0x14},
+ {0x23, 0x30, 0x1b},
+ {0x11, 0x3d, 0x12},
+ {0x1a, 0x16, 0x35},
+ {0x28, 0x05, 0x24},
+ {0x17, 0x3d, 0x37},
+ {0x2e, 0x09, 0x2e},
+ {0x18, 0x1d, 0x17},
+ {0x20, 0x1f, 0x18},
+ {0x23, 0x2c, 0x2f},
+ {0x20, 0x3f, 0x16},
+ {0x3f, 0x29, 0x2e},
+ {0x23, 0x3b, 0x29},
+ {0x18, 0x39, 0x13},
+ {0x1e, 0x32, 0x35},
+ {0x14, 0x1d, 0x2a},
+ {0x35, 0x01, 0x1d},
+ {0x3e, 0x3b, 0x1e},
+ {0x22, 0x1e, 0x16},
+ {0x18, 0x22, 0x12},
+ {0x3e, 0x29, 0x33},
+ {0x2f, 0x14, 0x19},
+ {0x3b, 0x07, 0x15},
+ {0x06, 0x3d, 0x29},
+ {0x35, 0x37, 0x23},
+ {0x34, 0x1d, 0x2d},
+ {0x18, 0x12, 0x1b},
+ {0x0b, 0x13, 0x24},
+ {0x13, 0x38, 0x1c},
+ {0x1f, 0x0b, 0x1b},
+ {0x13, 0x21, 0x1c},
+ {0x06, 0x39, 0x32},
+ {0x37, 0x3d, 0x26},
+ {0x29, 0x26, 0x15},
+ {0x3c, 0x33, 0x27},
+ {0x00, 0x01, 0x2e},
+ {0x15, 0x18, 0x31},
+ {0x0d, 0x2c, 0x13},
+ {0x27, 0x3b, 0x20},
+ {0x2d, 0x01, 0x26},
+ {0x23, 0x15, 0x30},
+ {0x24, 0x00, 0x17},
+ {0x37, 0x3f, 0x33},
+ {0x25, 0x24, 0x31},
+ {0x06, 0x3b, 0x37},
+ {0x03, 0x18, 0x1a},
+ {0x2c, 0x34, 0x14},
+ {0x1d, 0x36, 0x18},
+ {0x3a, 0x04, 0x23},
+ {0x12, 0x26, 0x15},
+ {0x2b, 0x19, 0x1a},
+ {0x29, 0x2c, 0x36},
+ {0x01, 0x19, 0x1d},
+ {0x2f, 0x06, 0x2b},
+ {0x0c, 0x12, 0x26},
+ {0x36, 0x32, 0x1d},
+ {0x0d, 0x12, 0x28},
+ {0x03, 0x28, 0x13},
+ {0x29, 0x06, 0x17},
+ {0x03, 0x38, 0x21},
+ {0x30, 0x2c, 0x10},
+ {0x22, 0x00, 0x28},
+ {0x24, 0x3b, 0x1c},
+ {0x20, 0x3e, 0x13},
+ {0x02, 0x0c, 0x19},
+ {0x29, 0x2c, 0x1a},
+ {0x39, 0x30, 0x22},
+ {0x2a, 0x1f, 0x22},
+ {0x14, 0x34, 0x2c},
+ {0x14, 0x25, 0x1b},
+ {0x06, 0x3b, 0x15},
+ {0x06, 0x1c, 0x13},
+ {0x15, 0x03, 0x18},
+ {0x1e, 0x2a, 0x1b},
+ {0x17, 0x25, 0x2f},
+ {0x1c, 0x29, 0x2e},
+ {0x02, 0x32, 0x1e},
+ {0x1d, 0x28, 0x35},
+ {0x36, 0x03, 0x34},
+ {0x16, 0x3d, 0x2a},
+ {0x12, 0x0d, 0x13},
+ {0x1d, 0x2d, 0x21},
+ {0x32, 0x17, 0x2e},
+ {0x1a, 0x15, 0x26},
+ {0x22, 0x2f, 0x15},
+ {0x3c, 0x0e, 0x20},
+ {0x2f, 0x27, 0x13},
+ {0x04, 0x09, 0x32},
+ {0x1e, 0x01, 0x34},
+ {0x06, 0x16, 0x1e},
+ {0x2e, 0x1b, 0x1c},
+ {0x28, 0x13, 0x2a},
+ {0x30, 0x34, 0x12},
+ {0x12, 0x32, 0x18},
+ {0x1d, 0x1d, 0x35},
+ {0x07, 0x1c, 0x16},
+ {0x2d, 0x3d, 0x35},
+ {0x1c, 0x1b, 0x24},
+ {0x21, 0x2d, 0x1e},
+ {0x10, 0x09, 0x14},
+ {0x3d, 0x11, 0x12},
+ {0x25, 0x02, 0x26},
+ {0x23, 0x02, 0x19},
+ {0x19, 0x05, 0x14},
+ {0x0b, 0x21, 0x1a},
+ {0x09, 0x02, 0x2c},
+ {0x18, 0x28, 0x2d},
+ {0x1e, 0x10, 0x12},
+ {0x2e, 0x18, 0x2e},
+ {0x1f, 0x02, 0x2c},
+ {0x14, 0x17, 0x24},
+ {0x39, 0x08, 0x32},
+ {0x16, 0x14, 0x22},
+ {0x16, 0x28, 0x21},
+ {0x11, 0x10, 0x2c},
+ {0x23, 0x36, 0x2b},
+ {0x39, 0x21, 0x26},
+ {0x0e, 0x06, 0x2d},
+ {0x3c, 0x3e, 0x26},
+ {0x2a, 0x1b, 0x1f},
+ {0x00, 0x3c, 0x33},
+ {0x35, 0x3f, 0x14},
+ {0x00, 0x0b, 0x10},
+ {0x34, 0x3c, 0x17},
+ {0x2d, 0x07, 0x1f},
+ {0x24, 0x39, 0x27},
+ {0x16, 0x00, 0x1d},
+ {0x33, 0x2b, 0x1e},
+ {0x0f, 0x08, 0x31},
+ {0x3a, 0x09, 0x13},
+ {0x0c, 0x21, 0x1c},
+ {0x2a, 0x17, 0x34},
+ {0x29, 0x27, 0x10},
+ {0x37, 0x1b, 0x18},
+ {0x15, 0x08, 0x2f},
+ {0x1f, 0x16, 0x12},
+ {0x1f, 0x28, 0x34},
+ {0x1c, 0x20, 0x22},
+ {0x12, 0x01, 0x12},
+ {0x21, 0x31, 0x10},
+ {0x22, 0x26, 0x1e},
+ {0x01, 0x3d, 0x11},
+ {0x1e, 0x27, 0x25},
+ {0x3d, 0x30, 0x24},
+ {0x1d, 0x11, 0x22},
+ {0x36, 0x30, 0x16},
+ {0x1f, 0x3e, 0x2a},
+ {0x3c, 0x27, 0x1b},
+ {0x1f, 0x29, 0x10},
+ {0x1e, 0x05, 0x2a},
+ {0x0a, 0x10, 0x14},
+ {0x1f, 0x00, 0x2e},
+ {0x0b, 0x3b, 0x18},
+ {0x0a, 0x39, 0x30},
+ {0x37, 0x0b, 0x1f},
+ {0x1d, 0x0a, 0x29},
+ {0x3e, 0x1c, 0x33},
+ {0x13, 0x2e, 0x28},
+ {0x27, 0x1b, 0x1e},
+ {0x1d, 0x02, 0x1c},
+ {0x01, 0x25, 0x14},
+ {0x3a, 0x10, 0x1c},
+ {0x12, 0x05, 0x2a},
+ {0x30, 0x20, 0x26},
+ {0x2f, 0x2e, 0x2e},
+ {0x03, 0x07, 0x24},
+ {0x36, 0x04, 0x2b},
+ {0x11, 0x25, 0x2d},
+ {0x28, 0x0e, 0x2e},
+ {0x0f, 0x1d, 0x15},
+ {0x1c, 0x28, 0x30},
+ {0x1f, 0x23, 0x26},
+ {0x36, 0x12, 0x37},
+ {0x3a, 0x31, 0x10},
+ {0x2c, 0x2c, 0x2f},
+ {0x1a, 0x0d, 0x15},
+ {0x3f, 0x3c, 0x32},
+ {0x35, 0x1c, 0x16},
+ {0x33, 0x16, 0x28},
+ {0x1d, 0x3f, 0x21},
+ {0x2c, 0x3e, 0x2b},
+ {0x24, 0x23, 0x2f},
+ {0x32, 0x15, 0x2a},
+ {0x1b, 0x10, 0x35},
+ {0x18, 0x37, 0x10},
+ {0x3b, 0x1e, 0x11},
+ {0x2b, 0x16, 0x24},
+ {0x1d, 0x16, 0x26},
+ {0x3c, 0x2d, 0x11},
+ {0x15, 0x28, 0x28},
+ {0x27, 0x27, 0x27},
+ {0x3b, 0x3a, 0x16},
+ {0x1a, 0x0c, 0x1a},
+ {0x15, 0x08, 0x25},
+ {0x0b, 0x10, 0x22},
+ {0x1a, 0x3e, 0x17},
+ {0x28, 0x1f, 0x1e},
+ {0x01, 0x1e, 0x1e},
+ {0x1c, 0x2f, 0x10},
+ {0x25, 0x0b, 0x34},
+ {0x3e, 0x0c, 0x1a},
+ {0x1b, 0x10, 0x2a},
+ {0x0f, 0x14, 0x17},
+ {0x0f, 0x3f, 0x17},
+ {0x03, 0x15, 0x1f},
+ {0x02, 0x36, 0x17},
+ {0x15, 0x1d, 0x18},
+ {0x08, 0x36, 0x10},
+ {0x14, 0x0d, 0x2b},
+ {0x0a, 0x05, 0x1d},
+ {0x26, 0x12, 0x1e},
+ {0x3e, 0x18, 0x19},
+ {0x36, 0x18, 0x37},
+ {0x17, 0x39, 0x2e},
+ {0x0d, 0x04, 0x19},
+ {0x16, 0x22, 0x15},
+ {0x3e, 0x26, 0x1f},
+ {0x00, 0x06, 0x17},
+ {0x33, 0x22, 0x1d},
+ {0x2b, 0x39, 0x2b},
+ {0x3e, 0x31, 0x1c},
+ {0x22, 0x3f, 0x13},
+ {0x30, 0x1c, 0x31},
+ {0x07, 0x2b, 0x14},
+ {0x32, 0x35, 0x1e},
+ {0x02, 0x07, 0x20},
+ {0x0f, 0x3b, 0x11},
+ {0x20, 0x07, 0x12},
+ {0x2a, 0x30, 0x1d},
+ {0x28, 0x38, 0x36},
+ {0x20, 0x01, 0x17},
+ {0x15, 0x20, 0x21},
+ {0x3a, 0x1b, 0x1e},
+ {0x38, 0x12, 0x24},
+ {0x03, 0x3e, 0x1f},
+ {0x29, 0x1d, 0x13},
+ {0x20, 0x27, 0x19},
+ {0x12, 0x25, 0x20},
+ {0x32, 0x33, 0x2b},
+ {0x3f, 0x05, 0x31},
+ {0x35, 0x3c, 0x2d},
+ {0x2d, 0x02, 0x2e},
+ {0x10, 0x2a, 0x16},
+ {0x17, 0x08, 0x31},
+ {0x17, 0x2e, 0x2b},
+ {0x30, 0x1e, 0x15},
+ {0x31, 0x15, 0x26},
+ {0x08, 0x10, 0x33},
+ {0x15, 0x01, 0x27},
+ {0x12, 0x07, 0x2f},
+ {0x29, 0x27, 0x34},
+ {0x3f, 0x08, 0x31},
+ {0x1c, 0x20, 0x1a},
+ {0x33, 0x0c, 0x13},
+ {0x18, 0x31, 0x24},
+ {0x37, 0x2d, 0x2e},
+ {0x21, 0x18, 0x24},
+ {0x3a, 0x27, 0x31},
+ {0x35, 0x3e, 0x30},
+ {0x3a, 0x14, 0x33},
+ {0x0f, 0x1a, 0x2d},
+ {0x30, 0x2e, 0x11},
+ {0x1a, 0x31, 0x1d},
+ {0x17, 0x3c, 0x18},
+ {0x33, 0x31, 0x23},
+ {0x1d, 0x39, 0x2d},
+ {0x10, 0x1d, 0x2f},
+ {0x24, 0x15, 0x1c},
+ {0x25, 0x01, 0x2b},
+ {0x22, 0x16, 0x2e},
+ {0x1b, 0x25, 0x35},
+ {0x37, 0x10, 0x26},
+ {0x39, 0x01, 0x36},
+ {0x17, 0x2b, 0x14},
+ {0x09, 0x16, 0x17},
+ {0x20, 0x28, 0x23},
+ {0x26, 0x3a, 0x26},
+ {0x27, 0x2a, 0x24},
+ {0x36, 0x02, 0x2c},
+ {0x29, 0x30, 0x35},
+ {0x36, 0x01, 0x1f},
+ {0x28, 0x3b, 0x1d},
+ {0x23, 0x1e, 0x2d},
+ {0x11, 0x1e, 0x2c},
+ {0x2f, 0x32, 0x19},
+ {0x3f, 0x26, 0x31},
+ {0x38, 0x1e, 0x17},
+ {0x05, 0x18, 0x2e},
+ {0x00, 0x2e, 0x12},
+ {0x34, 0x3f, 0x34},
+ {0x16, 0x10, 0x29},
+ {0x20, 0x3d, 0x36},
+ {0x2f, 0x16, 0x25},
+ {0x12, 0x17, 0x10},
+ {0x21, 0x37, 0x35},
+ {0x25, 0x37, 0x2d},
+ {0x01, 0x08, 0x27},
+ {0x03, 0x1f, 0x29},
+ {0x0d, 0x2a, 0x16},
+ {0x3a, 0x3f, 0x33},
+ {0x2b, 0x19, 0x1d},
+ {0x2a, 0x1f, 0x29},
+ {0x28, 0x2c, 0x10},
+ {0x28, 0x30, 0x10},
+ {0x39, 0x14, 0x1b},
+ {0x00, 0x18, 0x21},
+ {0x28, 0x0c, 0x37},
+ {0x11, 0x10, 0x11},
+ {0x3c, 0x33, 0x32},
+ {0x33, 0x36, 0x1a},
+ {0x36, 0x00, 0x1c},
+ {0x31, 0x1b, 0x1d},
+ {0x38, 0x1d, 0x10},
+ {0x3c, 0x39, 0x27},
+ {0x3a, 0x3f, 0x14},
+ {0x19, 0x12, 0x14},
+ {0x0d, 0x1f, 0x18},
+ {0x00, 0x25, 0x18},
+ {0x28, 0x1c, 0x32},
+ {0x27, 0x03, 0x1a},
+ {0x26, 0x2d, 0x2a},
+ {0x29, 0x28, 0x27},
+ {0x0a, 0x2a, 0x18},
+ {0x0a, 0x1a, 0x30},
+ {0x20, 0x1a, 0x2e},
+ {0x06, 0x0b, 0x1d},
+ {0x0f, 0x0c, 0x1c},
+ {0x35, 0x28, 0x1c},
+ {0x3d, 0x16, 0x23},
+ {0x21, 0x1c, 0x31},
+ {0x14, 0x1c, 0x2e},
+ {0x22, 0x32, 0x35},
+ {0x09, 0x29, 0x30},
+ {0x20, 0x1a, 0x10},
+ {0x31, 0x3f, 0x2c},
+ {0x0a, 0x3d, 0x37},
+ {0x0b, 0x2e, 0x2d},
+ {0x1f, 0x22, 0x31},
+ {0x06, 0x07, 0x29},
+ {0x22, 0x17, 0x2d},
+ {0x30, 0x11, 0x18},
+ {0x0c, 0x19, 0x15},
+ {0x07, 0x0a, 0x34},
+ {0x18, 0x29, 0x27},
+ {0x33, 0x0c, 0x30},
+ {0x03, 0x1a, 0x37},
+ {0x06, 0x01, 0x2d},
+ {0x0f, 0x3b, 0x2b},
+ {0x11, 0x1f, 0x37},
+ {0x2b, 0x21, 0x36},
+ {0x3f, 0x23, 0x17},
+ {0x17, 0x07, 0x2b},
+ {0x2b, 0x0e, 0x30},
+ {0x11, 0x39, 0x1d},
+ {0x29, 0x03, 0x33},
+ {0x30, 0x03, 0x2f},
+ {0x3c, 0x20, 0x26},
+ {0x03, 0x22, 0x14},
+ {0x3a, 0x28, 0x35},
+ {0x01, 0x28, 0x2b},
+ {0x3e, 0x15, 0x18},
+ {0x30, 0x07, 0x17},
+ {0x3b, 0x2c, 0x30},
+ {0x15, 0x07, 0x2c},
+ {0x17, 0x27, 0x1d},
+ {0x3f, 0x1e, 0x33},
+ {0x0d, 0x17, 0x10},
+ {0x15, 0x0e, 0x30},
+ {0x09, 0x05, 0x30},
+ {0x2d, 0x20, 0x15},
+ {0x3c, 0x3d, 0x30},
+ {0x0c, 0x17, 0x1c},
+ {0x1a, 0x0d, 0x25},
+ {0x2b, 0x2b, 0x2a},
+ {0x02, 0x16, 0x2d},
+ {0x17, 0x31, 0x17},
+ {0x00, 0x08, 0x13},
+ {0x37, 0x35, 0x21},
+ {0x1e, 0x1c, 0x1f},
+ {0x2b, 0x32, 0x1c},
+ {0x10, 0x2a, 0x16},
+ {0x3a, 0x33, 0x31},
+ {0x17, 0x2b, 0x2a},
+ {0x0c, 0x3d, 0x11},
+ {0x28, 0x0a, 0x30},
+ {0x23, 0x0a, 0x26},
+ {0x0a, 0x14, 0x24},
+ {0x0b, 0x0f, 0x30},
+ {0x1b, 0x1e, 0x29},
+ {0x02, 0x35, 0x28},
+ {0x3b, 0x02, 0x14},
+ {0x00, 0x0f, 0x35},
+ {0x1c, 0x3c, 0x2e},
+ {0x28, 0x38, 0x19},
+ {0x1b, 0x11, 0x12},
+ {0x09, 0x16, 0x10},
+ {0x2e, 0x0d, 0x20},
+ {0x3d, 0x04, 0x32},
+ {0x16, 0x2c, 0x25},
+ {0x02, 0x3d, 0x18},
+ {0x0b, 0x13, 0x1c},
+ {0x22, 0x2a, 0x1c},
+ {0x20, 0x27, 0x22},
+ {0x05, 0x26, 0x22},
+ {0x12, 0x1d, 0x2c},
+ {0x08, 0x05, 0x2e},
+ {0x3f, 0x1c, 0x17},
+ {0x24, 0x0d, 0x33},
+ {0x36, 0x08, 0x24},
+ {0x10, 0x22, 0x29},
+ {0x1c, 0x0a, 0x11},
+ {0x25, 0x0f, 0x10},
+ {0x24, 0x38, 0x2f},
+ {0x25, 0x32, 0x1e},
+ {0x06, 0x2a, 0x29},
+ {0x3e, 0x3a, 0x28},
+ {0x34, 0x17, 0x33},
+ {0x18, 0x33, 0x17},
+ {0x07, 0x14, 0x1f},
+ {0x11, 0x17, 0x20},
+ {0x13, 0x0e, 0x14},
+ {0x3b, 0x1c, 0x12},
+ {0x2a, 0x13, 0x37},
+ {0x2a, 0x35, 0x32},
+ {0x30, 0x02, 0x25},
+ {0x00, 0x07, 0x1f},
+ {0x0c, 0x04, 0x2c},
+ {0x37, 0x37, 0x30},
+ {0x25, 0x12, 0x25},
+ {0x12, 0x22, 0x21},
+ {0x22, 0x35, 0x33},
+ {0x07, 0x20, 0x2d},
+ {0x27, 0x0e, 0x30},
+ {0x34, 0x19, 0x1a},
+ {0x0a, 0x3c, 0x25},
+ {0x07, 0x1d, 0x2b},
+ {0x31, 0x3a, 0x12},
+ {0x1a, 0x3d, 0x37},
+ {0x16, 0x15, 0x16},
+ {0x39, 0x13, 0x15},
+ {0x2d, 0x03, 0x2e},
+ {0x06, 0x39, 0x2c},
+ {0x16, 0x00, 0x13},
+ {0x35, 0x2a, 0x35},
+ {0x24, 0x01, 0x18},
+ {0x24, 0x37, 0x28},
+ {0x25, 0x1b, 0x34},
+ {0x25, 0x19, 0x17},
+ {0x27, 0x2f, 0x1b},
+ {0x27, 0x0d, 0x10},
+ {0x36, 0x3c, 0x30},
+ {0x3c, 0x33, 0x23},
+ {0x3e, 0x27, 0x1e},
+ {0x25, 0x2d, 0x29},
+ {0x1f, 0x12, 0x21},
+ {0x37, 0x32, 0x1f},
+ {0x11, 0x21, 0x35},
+ {0x30, 0x0c, 0x19},
+ {0x25, 0x3d, 0x26},
+ {0x17, 0x02, 0x1d},
+ {0x14, 0x2e, 0x11},
+ {0x38, 0x13, 0x30},
+ {0x0a, 0x2b, 0x20},
+ {0x1e, 0x10, 0x15},
+ {0x37, 0x30, 0x2e},
+ {0x1e, 0x04, 0x2c},
+ {0x14, 0x34, 0x19},
+ {0x08, 0x14, 0x18},
+ {0x0e, 0x1c, 0x30},
+ {0x1a, 0x2e, 0x1b},
+ {0x1f, 0x39, 0x31},
+ {0x0c, 0x1c, 0x28},
+ {0x3e, 0x33, 0x23},
+ {0x0f, 0x13, 0x16},
+ {0x25, 0x39, 0x2f},
+ {0x14, 0x1b, 0x1a},
+ {0x28, 0x3e, 0x21},
+ {0x2d, 0x19, 0x11},
+ {0x0c, 0x34, 0x32},
+ {0x39, 0x31, 0x19},
+ {0x1a, 0x08, 0x34},
+ {0x09, 0x2f, 0x11},
+ {0x30, 0x04, 0x1c},
+ {0x02, 0x3b, 0x1b},
+ {0x33, 0x21, 0x33},
+ {0x38, 0x02, 0x1a},
+ {0x31, 0x38, 0x32},
+ {0x1f, 0x1d, 0x16},
+ {0x17, 0x10, 0x1b},
+ {0x32, 0x20, 0x17},
+ {0x00, 0x33, 0x12},
+ {0x21, 0x0f, 0x27},
+ {0x14, 0x19, 0x27},
+ {0x24, 0x2c, 0x37},
+ {0x25, 0x05, 0x2f},
+ {0x3d, 0x25, 0x11},
+ {0x12, 0x30, 0x1a},
+ {0x16, 0x03, 0x1a},
+ {0x14, 0x09, 0x13},
+ {0x02, 0x23, 0x22},
+ {0x01, 0x3c, 0x10},
+ {0x3f, 0x2d, 0x23},
+ {0x31, 0x3f, 0x23},
+ {0x17, 0x00, 0x33},
+ {0x3f, 0x0f, 0x2f},
+ {0x26, 0x07, 0x15},
+ {0x21, 0x2b, 0x2a},
+ {0x38, 0x39, 0x1e},
+ {0x09, 0x25, 0x2b},
+ {0x3b, 0x30, 0x25},
+ {0x12, 0x2d, 0x13},
+ {0x32, 0x19, 0x28},
+ {0x24, 0x1c, 0x2d},
+ {0x35, 0x32, 0x26},
+ {0x0d, 0x23, 0x1e},
+ {0x1d, 0x07, 0x21},
+ {0x0b, 0x34, 0x17},
+ {0x2d, 0x32, 0x32},
+ {0x3a, 0x3c, 0x35},
+ {0x1a, 0x10, 0x33},
+ {0x1a, 0x07, 0x22},
+ {0x3b, 0x1b, 0x2a},
+ {0x33, 0x1f, 0x26},
+ {0x0e, 0x35, 0x1a},
+ {0x3b, 0x0a, 0x1c},
+ {0x11, 0x07, 0x11},
+ {0x0d, 0x3c, 0x2d},
+ {0x1e, 0x37, 0x29},
+ {0x11, 0x05, 0x12},
+ {0x15, 0x2f, 0x1c},
+ {0x24, 0x31, 0x16},
+ {0x2b, 0x21, 0x1b},
+ {0x23, 0x10, 0x31},
+ {0x02, 0x14, 0x29},
+ {0x26, 0x20, 0x16},
+ {0x10, 0x17, 0x10},
+ {0x0b, 0x0f, 0x33},
+ {0x01, 0x2e, 0x14},
+ {0x21, 0x0e, 0x37},
+ {0x1a, 0x1d, 0x2f},
+ {0x1e, 0x30, 0x24},
+ {0x04, 0x14, 0x2d},
+ {0x11, 0x00, 0x30},
+ {0x08, 0x2a, 0x1d},
+ {0x1d, 0x22, 0x21},
+ {0x24, 0x2c, 0x37},
+ {0x24, 0x11, 0x12},
+ {0x04, 0x2e, 0x28},
+ {0x1d, 0x18, 0x23},
+ {0x3c, 0x16, 0x16},
+ {0x10, 0x17, 0x31},
+ {0x20, 0x21, 0x12},
+ {0x33, 0x3e, 0x34},
+ {0x06, 0x13, 0x13},
+ {0x17, 0x38, 0x2b},
+ {0x14, 0x0d, 0x15},
+ {0x24, 0x3b, 0x2b},
+ {0x34, 0x3b, 0x1e},
+ {0x18, 0x07, 0x34},
+ {0x37, 0x1d, 0x1f},
+ {0x0b, 0x29, 0x20},
+ {0x12, 0x1e, 0x1d},
+ {0x1a, 0x24, 0x24},
+ {0x3d, 0x28, 0x24},
+ {0x0b, 0x12, 0x33},
+ {0x1b, 0x3a, 0x22},
+ {0x14, 0x13, 0x2a},
+ {0x31, 0x38, 0x15},
+ {0x37, 0x2b, 0x2e},
+ {0x19, 0x1e, 0x2c},
+ {0x3f, 0x1b, 0x2a},
+ {0x33, 0x1f, 0x33},
+ {0x3f, 0x15, 0x29},
+ {0x01, 0x1e, 0x18},
+ {0x1f, 0x22, 0x19},
+ {0x33, 0x3c, 0x34},
+ {0x1e, 0x12, 0x22},
+ {0x0d, 0x37, 0x2c},
+ {0x0f, 0x08, 0x31},
+ {0x2e, 0x09, 0x36},
+ {0x01, 0x05, 0x1e},
+ {0x1c, 0x04, 0x1e},
+ {0x0c, 0x01, 0x1c},
+ {0x29, 0x28, 0x2f},
+ {0x39, 0x2d, 0x14},
+ {0x09, 0x22, 0x36},
+ {0x04, 0x37, 0x37},
+ {0x2d, 0x2f, 0x35},
+ {0x24, 0x23, 0x1b},
+ {0x08, 0x20, 0x32},
+ {0x20, 0x1f, 0x34},
+ {0x02, 0x31, 0x19},
+ {0x18, 0x13, 0x36},
+ {0x06, 0x2b, 0x1e},
+ {0x0e, 0x1b, 0x10},
+ {0x2f, 0x0e, 0x1c},
+ {0x11, 0x38, 0x13},
+ {0x01, 0x37, 0x19},
+ {0x14, 0x11, 0x26},
+ {0x31, 0x3d, 0x33},
+ {0x1d, 0x1b, 0x34},
+ {0x25, 0x31, 0x2f},
+ {0x11, 0x0a, 0x2f},
+ {0x39, 0x17, 0x1b},
+ {0x05, 0x0e, 0x13},
+ {0x29, 0x25, 0x22},
+ {0x15, 0x0d, 0x20},
+ {0x2b, 0x27, 0x21},
+ {0x3e, 0x24, 0x27},
+ {0x2a, 0x2b, 0x16},
+ {0x24, 0x3d, 0x15},
+ {0x15, 0x30, 0x31},
+ {0x0f, 0x33, 0x24},
+ {0x06, 0x16, 0x13},
+ {0x06, 0x31, 0x10},
+ {0x2e, 0x3f, 0x10},
+ {0x05, 0x0d, 0x2f},
+ {0x3c, 0x1f, 0x19},
+ {0x12, 0x13, 0x24},
+ {0x0f, 0x33, 0x36},
+ {0x15, 0x3b, 0x33},
+ {0x03, 0x0f, 0x2a},
+ {0x3b, 0x3c, 0x2c},
+ {0x36, 0x09, 0x29},
+ {0x11, 0x3b, 0x27},
+ {0x28, 0x2b, 0x31},
+ {0x1a, 0x0e, 0x2f},
+ {0x39, 0x2c, 0x31},
+ {0x0e, 0x3c, 0x35},
+ {0x2c, 0x24, 0x33},
+ {0x3d, 0x11, 0x2b},
+ {0x07, 0x3c, 0x37},
+ {0x14, 0x18, 0x13},
+ {0x1d, 0x3f, 0x2e},
+ {0x30, 0x12, 0x25},
+ {0x26, 0x1d, 0x11},
+ {0x07, 0x11, 0x1e},
+ {0x34, 0x01, 0x11},
+ {0x0b, 0x39, 0x21},
+ {0x29, 0x02, 0x29},
+ {0x15, 0x10, 0x1a},
+ {0x30, 0x1f, 0x35},
+ {0x3c, 0x2b, 0x2a},
+ {0x30, 0x3b, 0x36},
+ {0x20, 0x1a, 0x23},
+ {0x32, 0x24, 0x2b},
+ {0x15, 0x20, 0x1c},
+ {0x25, 0x3d, 0x36},
+ {0x2d, 0x14, 0x31},
+ {0x18, 0x23, 0x17},
+ {0x18, 0x05, 0x13},
+ {0x34, 0x30, 0x37},
+ {0x0e, 0x39, 0x23},
+ {0x1d, 0x1f, 0x17},
+ {0x01, 0x15, 0x2f},
+ {0x0b, 0x3e, 0x1b},
+ {0x0d, 0x19, 0x2e},
+ {0x31, 0x38, 0x1c},
+ {0x15, 0x34, 0x15},
+ {0x13, 0x19, 0x29},
+ {0x19, 0x14, 0x27},
+ {0x15, 0x18, 0x23},
+ {0x29, 0x0c, 0x27},
+ {0x2d, 0x0e, 0x17},
+ {0x34, 0x18, 0x10},
+ {0x3b, 0x1e, 0x29},
+ {0x34, 0x2c, 0x22},
+ {0x31, 0x08, 0x13},
+ {0x1d, 0x18, 0x1a},
+ {0x1c, 0x0b, 0x2a},
+ {0x19, 0x1e, 0x1a},
+ {0x23, 0x27, 0x17},
+ {0x3b, 0x0e, 0x37},
+ {0x19, 0x2b, 0x16},
+ {0x2f, 0x08, 0x21},
+ {0x37, 0x02, 0x20},
+ {0x0b, 0x32, 0x30},
+ {0x16, 0x05, 0x30},
+ {0x13, 0x05, 0x1a},
+ {0x07, 0x39, 0x19},
+ {0x0c, 0x3b, 0x2a},
+ {0x15, 0x05, 0x30},
+ {0x30, 0x05, 0x19},
+ {0x13, 0x00, 0x12},
+ {0x27, 0x16, 0x2a},
+ {0x0f, 0x28, 0x27},
+ {0x0c, 0x23, 0x2f},
+ {0x39, 0x28, 0x2a},
+ {0x24, 0x25, 0x1f},
+ {0x18, 0x29, 0x14},
+ {0x16, 0x05, 0x1a},
+ {0x35, 0x2f, 0x26},
+ {0x0a, 0x3a, 0x29},
+ {0x34, 0x2c, 0x36},
+ {0x2e, 0x3a, 0x15},
+ {0x1a, 0x0a, 0x2d},
+ {0x16, 0x14, 0x2e},
+ {0x35, 0x28, 0x2a},
+ {0x35, 0x0f, 0x11},
+ {0x11, 0x32, 0x19},
+ {0x20, 0x1a, 0x28},
+ {0x17, 0x1a, 0x28},
+ {0x16, 0x33, 0x25},
+ {0x13, 0x2c, 0x29},
+ {0x09, 0x16, 0x33},
+ {0x1d, 0x27, 0x26},
+ {0x15, 0x0c, 0x2f},
+ {0x22, 0x1c, 0x19},
+ {0x29, 0x33, 0x10},
+ {0x2d, 0x11, 0x1b},
+ {0x16, 0x19, 0x2e},
+ {0x0d, 0x0c, 0x28},
+ {0x37, 0x3a, 0x34},
+ {0x2a, 0x1d, 0x37},
+ {0x30, 0x0a, 0x36},
+ {0x24, 0x39, 0x1b},
+ {0x39, 0x0a, 0x32},
+ {0x11, 0x03, 0x2d},
+ {0x32, 0x1d, 0x30},
+ {0x38, 0x1e, 0x27},
+ {0x2e, 0x17, 0x18},
+ {0x16, 0x17, 0x2a},
+ {0x36, 0x3b, 0x31},
+ {0x17, 0x04, 0x19},
+ {0x3a, 0x25, 0x2d},
+ {0x00, 0x36, 0x27},
+ {0x25, 0x12, 0x33},
+ {0x06, 0x0a, 0x14},
+ {0x11, 0x05, 0x2f},
+ {0x03, 0x35, 0x2f},
+ {0x0b, 0x34, 0x29},
+ {0x00, 0x31, 0x13},
+ {0x27, 0x0f, 0x1c},
+ {0x1d, 0x06, 0x2d},
+ {0x1c, 0x30, 0x27},
+ {0x2f, 0x2a, 0x27},
+ {0x16, 0x20, 0x31},
+ {0x33, 0x2b, 0x2b},
+ {0x05, 0x30, 0x36},
+ {0x29, 0x23, 0x35},
+ {0x10, 0x16, 0x2f},
+ {0x2d, 0x20, 0x29},
+ {0x37, 0x13, 0x24},
+ {0x2d, 0x0e, 0x25},
+ {0x08, 0x0a, 0x18},
+ {0x0f, 0x03, 0x1b},
+ {0x31, 0x0c, 0x37},
+ {0x1e, 0x34, 0x31},
+ {0x1b, 0x0e, 0x25},
+ {0x1a, 0x07, 0x34},
+ {0x0d, 0x3c, 0x33},
+ {0x00, 0x3a, 0x36},
+ {0x04, 0x27, 0x12},
+ {0x23, 0x18, 0x24},
+ {0x0d, 0x0b, 0x18},
+ {0x31, 0x32, 0x37},
+ {0x00, 0x0d, 0x21},
+ {0x32, 0x10, 0x12},
+ {0x26, 0x0d, 0x19},
+ {0x29, 0x24, 0x2b},
+ {0x3d, 0x21, 0x1f},
+ {0x1e, 0x1b, 0x28},
+ {0x0d, 0x12, 0x28},
+ {0x35, 0x1e, 0x23},
+ {0x0a, 0x2e, 0x22},
+ {0x27, 0x27, 0x35},
+ {0x01, 0x0e, 0x20},
+ {0x31, 0x39, 0x29},
+ {0x3b, 0x24, 0x36},
+ {0x14, 0x10, 0x33},
+ {0x18, 0x2c, 0x26},
+ {0x04, 0x2d, 0x15},
+ {0x1a, 0x11, 0x37},
+ {0x0f, 0x0b, 0x14},
+ {0x0e, 0x2c, 0x2c},
+ {0x21, 0x17, 0x2c},
+ {0x16, 0x21, 0x35},
+ {0x3e, 0x10, 0x10},
+ {0x0a, 0x05, 0x1e},
+ {0x3b, 0x09, 0x13},
+ {0x26, 0x18, 0x1e},
+ {0x23, 0x0c, 0x1a},
+ {0x33, 0x37, 0x1f},
+ {0x09, 0x12, 0x35},
+ {0x3d, 0x0d, 0x15},
+ {0x36, 0x06, 0x24},
+ {0x33, 0x30, 0x29},
+ {0x3b, 0x0f, 0x28},
+ {0x34, 0x2a, 0x2c},
+ {0x02, 0x12, 0x35},
+ {0x09, 0x22, 0x31},
+ {0x3b, 0x31, 0x1c},
+ {0x33, 0x22, 0x27},
+ {0x3d, 0x34, 0x15},
+ {0x14, 0x22, 0x28},
+ {0x28, 0x10, 0x1e},
+ {0x21, 0x31, 0x10},
+ {0x2d, 0x16, 0x21},
+ {0x1e, 0x05, 0x33},
+ {0x0f, 0x30, 0x31},
+ {0x0e, 0x1a, 0x35},
+ {0x38, 0x2e, 0x28},
+ {0x26, 0x37, 0x1e},
+ {0x2b, 0x13, 0x33},
+ {0x1f, 0x1e, 0x37},
+ {0x0a, 0x28, 0x24},
+ {0x32, 0x1c, 0x1a},
+ {0x1f, 0x3f, 0x19},
+ {0x39, 0x39, 0x29},
+ {0x2c, 0x1b, 0x14},
+ {0x15, 0x2a, 0x17},
+ {0x32, 0x0f, 0x21},
+ {0x30, 0x21, 0x18},
+ {0x23, 0x2a, 0x27},
+ {0x3d, 0x07, 0x10},
+ {0x0b, 0x3f, 0x2f},
+ {0x31, 0x02, 0x2e},
+ {0x08, 0x39, 0x2f},
+ {0x3f, 0x20, 0x18},
+ {0x2d, 0x34, 0x11},
+ {0x2e, 0x34, 0x10},
+ {0x26, 0x12, 0x23},
+ {0x25, 0x0a, 0x37},
+ {0x34, 0x09, 0x25},
+ {0x0a, 0x3e, 0x16},
+ {0x1a, 0x17, 0x11},
+ {0x38, 0x1c, 0x20},
+ {0x11, 0x21, 0x26},
+ {0x05, 0x0f, 0x18},
+ {0x26, 0x2b, 0x32},
+ {0x0a, 0x0c, 0x16},
+ {0x03, 0x29, 0x1d},
+ {0x29, 0x3b, 0x23},
+ {0x16, 0x1b, 0x29},
+ {0x07, 0x09, 0x17},
+ {0x17, 0x2c, 0x1c},
+ {0x35, 0x33, 0x30},
+ {0x17, 0x12, 0x1e},
+ {0x3d, 0x1a, 0x2b},
+ {0x21, 0x1d, 0x10},
+ {0x0a, 0x08, 0x17},
+ {0x14, 0x3c, 0x36},
+ {0x28, 0x36, 0x36},
+ {0x3b, 0x20, 0x1b},
+ {0x13, 0x22, 0x1d},
+ {0x13, 0x3a, 0x15},
+ {0x02, 0x23, 0x2c},
+ {0x3e, 0x19, 0x14},
+ {0x39, 0x3c, 0x1a},
+ {0x10, 0x08, 0x1e},
+ {0x0a, 0x13, 0x29},
+ {0x3f, 0x38, 0x2c},
+ {0x07, 0x23, 0x1f},
+ {0x19, 0x2a, 0x24},
+ {0x14, 0x3c, 0x1f},
+ {0x0d, 0x04, 0x37},
+ {0x1a, 0x2f, 0x28},
+ {0x2a, 0x1d, 0x1e},
+ {0x11, 0x37, 0x29},
+ {0x28, 0x27, 0x12},
+ {0x0d, 0x00, 0x26},
+ {0x0a, 0x3c, 0x26},
+ {0x1f, 0x1c, 0x33},
+ {0x04, 0x3a, 0x2c},
+ {0x24, 0x3d, 0x2b},
+ {0x26, 0x31, 0x2f},
+ {0x13, 0x1c, 0x21},
+ {0x3e, 0x12, 0x23},
+ {0x36, 0x0a, 0x1a},
+ {0x2d, 0x1e, 0x19},
+ {0x05, 0x1f, 0x1b},
+ {0x1e, 0x0a, 0x1f},
+ {0x20, 0x08, 0x24},
+ {0x2c, 0x0c, 0x33},
+ {0x1d, 0x1f, 0x11},
+ {0x0e, 0x12, 0x10},
+ {0x27, 0x12, 0x19},
+ {0x2a, 0x13, 0x31},
+ {0x1c, 0x04, 0x30},
+ {0x1a, 0x38, 0x1f},
+ {0x2c, 0x35, 0x25},
+ {0x07, 0x0b, 0x33},
+ {0x2d, 0x02, 0x1a},
+ {0x2a, 0x35, 0x35},
+ {0x16, 0x2f, 0x14},
+ {0x11, 0x31, 0x33},
+ {0x2c, 0x31, 0x1e},
+ {0x3c, 0x3a, 0x27},
+ {0x3c, 0x2b, 0x12},
+ {0x27, 0x1d, 0x12},
+ {0x36, 0x2c, 0x2b},
+ {0x25, 0x3b, 0x35},
+ {0x12, 0x3d, 0x27},
+ {0x13, 0x23, 0x19},
+ {0x33, 0x2c, 0x26},
+ {0x09, 0x3c, 0x12},
+ {0x15, 0x1a, 0x23},
+ {0x21, 0x07, 0x1a},
+ {0x22, 0x25, 0x20},
+ {0x19, 0x1b, 0x2c},
+ {0x3a, 0x19, 0x35},
+ {0x05, 0x26, 0x1d},
+ {0x23, 0x22, 0x25},
+ {0x0e, 0x1e, 0x11},
+ {0x13, 0x30, 0x12},
+ {0x2c, 0x22, 0x25},
+ {0x0a, 0x1d, 0x18},
+ {0x23, 0x3e, 0x1d},
+ {0x02, 0x28, 0x25},
+ {0x21, 0x0e, 0x20},
+ {0x21, 0x22, 0x37},
+ {0x18, 0x33, 0x27},
+ {0x23, 0x23, 0x31},
+ {0x24, 0x1a, 0x1a},
+ {0x3e, 0x25, 0x24},
+ {0x24, 0x01, 0x18},
+ {0x34, 0x10, 0x22},
+ {0x07, 0x00, 0x37},
+ {0x06, 0x20, 0x20},
+ {0x3a, 0x02, 0x2b},
+ {0x07, 0x2c, 0x2c},
+ {0x09, 0x2f, 0x2a},
+ {0x01, 0x32, 0x2c},
+ {0x00, 0x35, 0x13},
+ {0x2b, 0x3c, 0x1f},
+ {0x36, 0x37, 0x1e},
+ {0x20, 0x35, 0x1d},
+ {0x0c, 0x07, 0x33},
+ {0x16, 0x08, 0x12},
+ {0x3f, 0x36, 0x11},
+ {0x0b, 0x1f, 0x2d},
+ {0x21, 0x20, 0x33},
+ {0x17, 0x1a, 0x2e},
+ {0x16, 0x01, 0x2f},
+ {0x2f, 0x1c, 0x34},
+ {0x29, 0x31, 0x2e},
+ {0x3b, 0x38, 0x31},
+ {0x0d, 0x16, 0x12},
+ {0x07, 0x29, 0x24},
+ {0x33, 0x3c, 0x34},
+ {0x3e, 0x1e, 0x18},
+ {0x30, 0x02, 0x34},
+ {0x2a, 0x34, 0x1b},
+ {0x2e, 0x23, 0x18},
+ {0x34, 0x00, 0x1f},
+ {0x20, 0x0e, 0x28},
+ {0x15, 0x33, 0x37},
+ {0x27, 0x35, 0x23},
+ {0x37, 0x3e, 0x11},
+ {0x32, 0x2e, 0x36},
+ {0x3a, 0x02, 0x2b},
+ {0x00, 0x36, 0x1d},
+ {0x13, 0x29, 0x16},
+ {0x08, 0x2b, 0x37},
+ {0x08, 0x02, 0x27},
+ {0x32, 0x2d, 0x34},
+ {0x30, 0x36, 0x29},
+ {0x2e, 0x10, 0x12},
+ {0x3c, 0x2e, 0x2a},
+ {0x04, 0x33, 0x30},
+ {0x3f, 0x01, 0x22},
+ {0x37, 0x14, 0x1d},
+ {0x27, 0x00, 0x2f},
+ {0x0c, 0x39, 0x26},
+ {0x27, 0x04, 0x21},
+ {0x19, 0x08, 0x1d},
+ {0x01, 0x04, 0x1e},
+ {0x27, 0x1b, 0x2b},
+ {0x31, 0x17, 0x1f},
+ {0x07, 0x01, 0x2d},
+ {0x2e, 0x3b, 0x1f},
+ {0x34, 0x24, 0x31},
+ {0x32, 0x2b, 0x24},
+ {0x0e, 0x07, 0x1e},
+ {0x0f, 0x33, 0x10},
+ {0x16, 0x21, 0x32},
+ {0x39, 0x02, 0x1a},
+ {0x33, 0x3d, 0x22},
+ {0x0c, 0x25, 0x1a},
+ {0x29, 0x29, 0x28},
+ {0x3a, 0x32, 0x26},
+ {0x0b, 0x13, 0x22},
+ {0x1f, 0x0f, 0x1c},
+ {0x04, 0x2c, 0x20},
+ {0x39, 0x1a, 0x1b},
+ {0x1a, 0x2a, 0x1f},
+ {0x24, 0x13, 0x1a},
+ {0x31, 0x3b, 0x33},
+ {0x39, 0x23, 0x28},
+ {0x31, 0x07, 0x31},
+ {0x1f, 0x10, 0x20},
+ {0x29, 0x17, 0x32},
+ {0x26, 0x3b, 0x2d},
+ {0x02, 0x3c, 0x1c},
+ {0x0e, 0x00, 0x20},
+ {0x14, 0x3e, 0x37},
+ {0x01, 0x0f, 0x2d},
+ {0x06, 0x12, 0x27},
+ {0x30, 0x13, 0x19},
+ {0x00, 0x33, 0x2a},
+ {0x0c, 0x07, 0x27},
+ {0x11, 0x3a, 0x1c},
+ {0x15, 0x0a, 0x13},
+ {0x1f, 0x0d, 0x2a},
+ {0x37, 0x07, 0x2a},
+ {0x34, 0x35, 0x34},
+ {0x28, 0x16, 0x27},
+ {0x06, 0x02, 0x36},
+ {0x09, 0x23, 0x30},
+ {0x14, 0x02, 0x28},
+ {0x39, 0x32, 0x34},
+ {0x24, 0x35, 0x12},
+ {0x12, 0x22, 0x26},
+ {0x09, 0x07, 0x33},
+ {0x0f, 0x3e, 0x1e},
+ {0x00, 0x3c, 0x33},
+ {0x10, 0x37, 0x14},
+ {0x3a, 0x03, 0x25},
+ {0x2d, 0x1e, 0x24},
+ {0x36, 0x36, 0x26},
+ {0x1f, 0x3c, 0x1a},
+ {0x37, 0x33, 0x25},
+ {0x23, 0x13, 0x1f},
+ {0x33, 0x0d, 0x13},
+ {0x25, 0x30, 0x1e},
+ {0x17, 0x03, 0x18},
+ {0x18, 0x18, 0x14},
+ {0x30, 0x07, 0x22},
+ {0x3e, 0x33, 0x21},
+ {0x14, 0x37, 0x16},
+ {0x16, 0x00, 0x12},
+ {0x2c, 0x12, 0x2f},
+ {0x25, 0x3f, 0x1e},
+ {0x24, 0x19, 0x16},
+ {0x16, 0x0f, 0x35},
+ {0x2d, 0x10, 0x11},
+ {0x24, 0x2a, 0x28},
+ {0x19, 0x25, 0x2e},
+ {0x0c, 0x16, 0x1f},
+ {0x38, 0x21, 0x36},
+ {0x3d, 0x1a, 0x2f},
+ {0x3b, 0x32, 0x12},
+ {0x36, 0x13, 0x29},
+ {0x0e, 0x30, 0x31},
+ {0x19, 0x07, 0x2f},
+ {0x25, 0x23, 0x28},
+ {0x20, 0x08, 0x29},
+ {0x2a, 0x00, 0x30},
+ {0x30, 0x38, 0x23},
+ {0x1e, 0x0f, 0x1f},
+ {0x3b, 0x1b, 0x30},
+ {0x3a, 0x37, 0x2f},
+ {0x39, 0x37, 0x35},
+ {0x39, 0x2d, 0x2f},
+ {0x1f, 0x2e, 0x1e},
+ {0x1a, 0x2b, 0x1e},
+ {0x14, 0x17, 0x20},
+ {0x2f, 0x03, 0x11},
+ {0x1d, 0x00, 0x30},
+ {0x17, 0x2b, 0x1d},
+ {0x35, 0x28, 0x25},
+ {0x3b, 0x0f, 0x11},
+ {0x09, 0x04, 0x2e},
+ {0x23, 0x11, 0x1e},
+ {0x13, 0x37, 0x1e},
+ {0x37, 0x37, 0x1e},
+ {0x07, 0x01, 0x32},
+ {0x14, 0x06, 0x32},
+ {0x11, 0x0c, 0x2e},
+ {0x36, 0x2e, 0x24},
+ {0x15, 0x2a, 0x1c},
+ {0x22, 0x15, 0x34},
+ {0x2c, 0x1e, 0x35},
+ {0x22, 0x27, 0x33},
+ {0x19, 0x3f, 0x2d},
+ {0x21, 0x33, 0x15},
+ {0x26, 0x1a, 0x11},
+ {0x16, 0x3e, 0x12},
+ {0x2b, 0x24, 0x15},
+ {0x3c, 0x0f, 0x2d},
+ {0x31, 0x15, 0x36},
+ {0x3f, 0x24, 0x1d},
+ {0x25, 0x01, 0x37},
+ {0x33, 0x16, 0x1a},
+ {0x1f, 0x0e, 0x10},
+ {0x2f, 0x0b, 0x12},
+ {0x2a, 0x1a, 0x25},
+ {0x17, 0x0a, 0x35},
+ {0x09, 0x28, 0x35},
+ {0x02, 0x13, 0x36},
+ {0x34, 0x2f, 0x17},
+ {0x03, 0x04, 0x31},
+ {0x3e, 0x26, 0x11},
+ {0x35, 0x33, 0x31},
+ {0x22, 0x17, 0x23},
+ {0x1d, 0x05, 0x2b},
+ {0x2e, 0x27, 0x20},
+ {0x03, 0x2b, 0x1d},
+ {0x01, 0x19, 0x1e},
+ {0x0e, 0x05, 0x18},
+ {0x16, 0x25, 0x17},
+ {0x02, 0x28, 0x18},
+ {0x19, 0x0b, 0x24},
+ {0x3e, 0x35, 0x16},
+ {0x2e, 0x29, 0x25},
+ {0x3e, 0x38, 0x1e},
+ {0x3a, 0x2f, 0x12},
+ {0x14, 0x17, 0x2d},
+ {0x11, 0x12, 0x30},
+ {0x15, 0x31, 0x18},
+ {0x08, 0x0b, 0x29},
+ {0x2d, 0x00, 0x33},
+ {0x2c, 0x06, 0x1a},
+ {0x14, 0x1c, 0x2e},
+ {0x04, 0x08, 0x12},
+ {0x1b, 0x2b, 0x2d},
+ {0x2a, 0x37, 0x33},
+ {0x10, 0x27, 0x2c},
+ {0x1d, 0x0e, 0x34},
+ {0x20, 0x02, 0x12},
+ {0x1e, 0x1a, 0x2e},
+ {0x07, 0x0b, 0x10},
+ {0x36, 0x1e, 0x33},
+ {0x2b, 0x28, 0x1b},
+ {0x31, 0x25, 0x1f},
+ {0x38, 0x3a, 0x2f},
+ {0x39, 0x30, 0x2f},
+ {0x12, 0x09, 0x14},
+ {0x0e, 0x08, 0x19},
+ {0x00, 0x0d, 0x2c},
+ {0x1b, 0x0e, 0x34},
+ {0x11, 0x25, 0x15},
+ {0x0c, 0x2d, 0x26},
+ {0x36, 0x2c, 0x16},
+ {0x31, 0x31, 0x2c},
+ {0x03, 0x1a, 0x16},
+ {0x1c, 0x32, 0x14},
+ {0x0a, 0x3e, 0x36},
+ {0x33, 0x1b, 0x27},
+ {0x1f, 0x32, 0x18},
+ {0x33, 0x26, 0x33},
+ {0x1a, 0x13, 0x1a},
+ {0x0f, 0x34, 0x1c},
+ {0x35, 0x2c, 0x2f},
+ {0x38, 0x03, 0x18},
+ {0x15, 0x0f, 0x27},
+ {0x31, 0x29, 0x20},
+ {0x28, 0x0e, 0x28},
+ {0x31, 0x2c, 0x2e},
+ {0x15, 0x19, 0x1b},
+ {0x10, 0x03, 0x2f},
+ {0x2e, 0x2a, 0x32},
+ {0x2a, 0x27, 0x1b},
+ {0x36, 0x04, 0x1e},
+ {0x3b, 0x04, 0x21},
+ {0x07, 0x2f, 0x19},
+ {0x27, 0x1d, 0x1d},
+ {0x3c, 0x3d, 0x2e},
+ {0x25, 0x08, 0x32},
+ {0x3b, 0x34, 0x2a},
+ {0x0c, 0x10, 0x13},
+ {0x25, 0x35, 0x1a},
+ {0x2f, 0x19, 0x28},
+ {0x17, 0x00, 0x2b},
+ {0x0a, 0x1c, 0x17},
+ {0x0a, 0x11, 0x1b},
+ {0x35, 0x13, 0x37},
+ {0x29, 0x1c, 0x28},
+ {0x0c, 0x31, 0x35},
+ {0x3c, 0x10, 0x1a},
+ {0x1b, 0x3a, 0x2d},
+ {0x3a, 0x1c, 0x18},
+ {0x22, 0x10, 0x2d},
+ {0x1c, 0x3c, 0x12},
+ {0x17, 0x18, 0x2a},
+ {0x0b, 0x2b, 0x2f},
+ {0x2d, 0x04, 0x2e},
+ {0x3c, 0x13, 0x23},
+ {0x01, 0x1c, 0x2e},
+ {0x14, 0x16, 0x22},
+ {0x0c, 0x24, 0x13},
+ {0x35, 0x37, 0x34},
+ {0x1b, 0x30, 0x1e},
+ {0x3a, 0x1c, 0x20},
+ {0x06, 0x06, 0x36},
+ {0x09, 0x15, 0x1a},
+ {0x1b, 0x1a, 0x27},
+ {0x0f, 0x33, 0x35},
+ {0x37, 0x06, 0x23},
+ {0x3a, 0x12, 0x1d},
+ {0x00, 0x16, 0x29},
+ {0x0e, 0x1d, 0x35},
+ {0x3f, 0x38, 0x16},
+ {0x2a, 0x3c, 0x34},
+ {0x13, 0x32, 0x10},
+ {0x17, 0x2c, 0x37},
+ {0x29, 0x2a, 0x1e},
+ {0x35, 0x2f, 0x2d},
+ {0x3c, 0x2a, 0x11},
+ {0x28, 0x13, 0x21},
+ {0x19, 0x1e, 0x34},
+ {0x0c, 0x06, 0x2d},
+ {0x09, 0x04, 0x1c},
+ {0x1d, 0x2f, 0x26},
+ {0x39, 0x07, 0x16},
+ {0x14, 0x04, 0x2d},
+ {0x3a, 0x2f, 0x2e},
+ {0x29, 0x15, 0x35},
+ {0x24, 0x02, 0x36},
+ {0x3f, 0x02, 0x1a},
+ {0x0f, 0x18, 0x24},
+ {0x16, 0x1d, 0x19},
+ {0x14, 0x16, 0x10},
+ {0x29, 0x1b, 0x13},
+ {0x15, 0x0e, 0x19},
+ {0x3a, 0x2e, 0x2b},
+ {0x08, 0x30, 0x15},
+ {0x35, 0x16, 0x30},
+ {0x2e, 0x18, 0x35},
+ {0x3b, 0x0b, 0x1c},
+ {0x3a, 0x18, 0x13},
+ {0x29, 0x13, 0x1e},
+ {0x20, 0x13, 0x27},
+ {0x04, 0x1d, 0x34},
+ {0x00, 0x38, 0x19},
+ {0x08, 0x39, 0x32},
+ {0x20, 0x10, 0x26},
+ {0x08, 0x02, 0x28},
+ {0x3f, 0x0f, 0x16},
+ {0x30, 0x1f, 0x19},
+ {0x20, 0x2d, 0x10},
+ {0x38, 0x17, 0x1c},
+ {0x18, 0x31, 0x27},
+ {0x33, 0x38, 0x30},
+ {0x16, 0x33, 0x23},
+ {0x00, 0x01, 0x36},
+ {0x0d, 0x02, 0x23},
+ {0x39, 0x04, 0x1f},
+ {0x0e, 0x30, 0x24},
+ {0x06, 0x01, 0x2c},
+ {0x34, 0x33, 0x35},
+ {0x16, 0x34, 0x2e},
+ {0x32, 0x16, 0x24},
+ {0x26, 0x39, 0x34},
+ {0x1f, 0x3c, 0x1d},
+ {0x28, 0x1d, 0x37},
+ {0x17, 0x15, 0x2b},
+ {0x27, 0x39, 0x30},
+ {0x0b, 0x1b, 0x18},
+ {0x35, 0x20, 0x2d},
+ {0x0b, 0x35, 0x1c},
+ {0x03, 0x0e, 0x21},
+ {0x06, 0x0c, 0x20},
+ {0x02, 0x18, 0x34},
+ {0x1e, 0x36, 0x2d},
+ {0x16, 0x0c, 0x19},
+ {0x25, 0x09, 0x2c},
+ {0x37, 0x05, 0x2e},
+ {0x2e, 0x2b, 0x2c},
+ {0x24, 0x1a, 0x14},
+ {0x27, 0x04, 0x10},
+ {0x32, 0x38, 0x33},
+ {0x37, 0x15, 0x35},
+ {0x11, 0x3f, 0x1d},
+ {0x23, 0x23, 0x1f},
+ {0x29, 0x3f, 0x1d},
+ {0x1a, 0x3c, 0x2b},
+ {0x1b, 0x2c, 0x2c},
+ {0x38, 0x3b, 0x36},
+ {0x04, 0x13, 0x33},
+ {0x2c, 0x14, 0x12},
+ {0x1a, 0x09, 0x1b},
+ {0x36, 0x11, 0x24},
+ {0x3a, 0x3f, 0x11},
+ {0x01, 0x0e, 0x2b},
+ {0x3b, 0x03, 0x2a},
+ {0x08, 0x0d, 0x2b},
+ {0x2b, 0x13, 0x27},
+ {0x3a, 0x3c, 0x1c},
+ {0x3a, 0x15, 0x2a},
+ {0x24, 0x00, 0x17},
+ {0x3e, 0x0a, 0x15},
+ {0x0c, 0x29, 0x2d},
+ {0x1f, 0x15, 0x30},
+ {0x35, 0x18, 0x19},
+ {0x3d, 0x37, 0x37},
+ {0x12, 0x38, 0x1b},
+ {0x3b, 0x02, 0x20},
+ {0x08, 0x21, 0x19},
+ {0x2e, 0x36, 0x1d},
+ {0x15, 0x3d, 0x24},
+ {0x22, 0x0c, 0x27},
+ {0x36, 0x3f, 0x33},
+ {0x33, 0x12, 0x11},
+ {0x1a, 0x19, 0x1f},
+ {0x2b, 0x24, 0x12},
+ {0x11, 0x2a, 0x18},
+ {0x25, 0x32, 0x2a},
+ {0x2c, 0x1a, 0x12},
+ {0x26, 0x06, 0x10},
+ {0x11, 0x29, 0x33},
+ {0x2c, 0x09, 0x14},
+ {0x2b, 0x12, 0x2b},
+ {0x1d, 0x03, 0x24},
+ {0x00, 0x12, 0x15},
+ {0x22, 0x3d, 0x26},
+ {0x15, 0x37, 0x1a},
+ {0x0f, 0x12, 0x37},
+ {0x24, 0x01, 0x18},
+ {0x2a, 0x17, 0x13},
+ {0x14, 0x3b, 0x29},
+ {0x2a, 0x19, 0x32},
+ {0x2d, 0x17, 0x17},
+ {0x0b, 0x2c, 0x33},
+ {0x07, 0x2d, 0x34},
+ {0x07, 0x38, 0x1d},
+ {0x1f, 0x36, 0x22},
+ {0x11, 0x0a, 0x17},
+ {0x14, 0x11, 0x13},
+ {0x2a, 0x17, 0x25},
+ {0x01, 0x3a, 0x1c},
+ {0x26, 0x27, 0x30},
+ {0x2d, 0x3b, 0x35},
+ {0x3a, 0x30, 0x34},
+ {0x06, 0x3a, 0x1c},
+ {0x2d, 0x05, 0x13},
+ {0x21, 0x32, 0x12},
+ {0x3e, 0x1e, 0x2c},
+ {0x3a, 0x3f, 0x2d},
+ {0x20, 0x2a, 0x34},
+ {0x26, 0x03, 0x1a},
+ {0x19, 0x27, 0x2e},
+ {0x31, 0x04, 0x26},
+ {0x2a, 0x3f, 0x30},
+ {0x25, 0x23, 0x2a},
+ {0x08, 0x08, 0x35},
+ {0x2c, 0x30, 0x1e},
+ {0x08, 0x05, 0x18},
+ {0x06, 0x09, 0x2d},
+ {0x19, 0x00, 0x27},
+ {0x0d, 0x10, 0x19},
+ {0x1c, 0x00, 0x13},
+ {0x3d, 0x0b, 0x24},
+ {0x2e, 0x1f, 0x16},
+ {0x3d, 0x18, 0x34},
+ {0x12, 0x1e, 0x15},
+ {0x15, 0x39, 0x25},
+ {0x33, 0x0f, 0x17},
+ {0x1a, 0x1c, 0x1b},
+ {0x37, 0x29, 0x1b},
+ {0x3b, 0x38, 0x12},
+ {0x1d, 0x22, 0x34},
+ {0x26, 0x0a, 0x31},
+ {0x16, 0x2d, 0x13},
+ {0x0d, 0x20, 0x27},
+ {0x24, 0x1d, 0x16},
+ {0x2e, 0x2b, 0x18},
+ {0x16, 0x2a, 0x1b},
+ {0x24, 0x17, 0x36},
+ {0x02, 0x05, 0x2b},
+ {0x37, 0x1a, 0x17},
+ {0x11, 0x3d, 0x2c},
+ {0x1e, 0x2f, 0x22},
+ {0x2c, 0x29, 0x1a},
+ {0x2f, 0x04, 0x25},
+ {0x36, 0x0c, 0x35},
+ {0x30, 0x3e, 0x12},
+ {0x11, 0x30, 0x37},
+ {0x12, 0x21, 0x2e},
+ {0x21, 0x30, 0x17},
+ {0x2c, 0x3d, 0x24},
+ {0x11, 0x23, 0x14},
+ {0x1a, 0x32, 0x17},
+ {0x39, 0x27, 0x18},
+ {0x0f, 0x24, 0x19},
+ {0x00, 0x3d, 0x37},
+ {0x2c, 0x3c, 0x1c},
+ {0x0b, 0x39, 0x23},
+ {0x0e, 0x04, 0x1f},
+ {0x1c, 0x31, 0x14},
+ {0x00, 0x04, 0x15},
+ {0x26, 0x2a, 0x2a},
+ {0x20, 0x25, 0x2a},
+ {0x0b, 0x3c, 0x33},
+ {0x11, 0x0b, 0x2e},
+ {0x37, 0x22, 0x2e},
+ {0x0e, 0x22, 0x26},
+ {0x18, 0x2d, 0x27},
+ {0x06, 0x0c, 0x1c},
+ {0x26, 0x18, 0x2f},
+ {0x3a, 0x01, 0x2a},
+ {0x2f, 0x31, 0x34},
+ {0x1f, 0x34, 0x1a},
+ {0x31, 0x05, 0x10},
+ {0x2e, 0x17, 0x34},
+ {0x18, 0x22, 0x23},
+ {0x23, 0x21, 0x32},
+ {0x07, 0x08, 0x22},
+ {0x26, 0x1c, 0x22},
+ {0x31, 0x12, 0x2f},
+ {0x08, 0x1f, 0x10},
+ {0x27, 0x15, 0x2a},
+ {0x1f, 0x0b, 0x26},
+ {0x2f, 0x14, 0x35},
+ {0x24, 0x1f, 0x26},
+ {0x3b, 0x23, 0x33},
+ {0x20, 0x3e, 0x2d},
+ {0x17, 0x0c, 0x15},
+ {0x13, 0x39, 0x1a},
+ {0x30, 0x14, 0x25},
+ {0x09, 0x07, 0x17},
+ {0x38, 0x38, 0x1f},
+ {0x29, 0x24, 0x27},
+ {0x17, 0x27, 0x28},
+ {0x1b, 0x12, 0x2a},
+ {0x2b, 0x3d, 0x2d},
+ {0x19, 0x34, 0x1c},
+ {0x01, 0x1d, 0x10},
+ {0x08, 0x39, 0x11},
+ {0x0e, 0x36, 0x1b},
+ {0x26, 0x13, 0x10},
+ {0x16, 0x28, 0x1e},
+ {0x3c, 0x28, 0x17},
+ {0x3e, 0x39, 0x34},
+ {0x0a, 0x03, 0x2e},
+ {0x37, 0x1a, 0x13},
+ {0x2b, 0x33, 0x26},
+ {0x13, 0x2c, 0x21},
+ {0x25, 0x14, 0x10},
+ {0x16, 0x0b, 0x35},
+ {0x1d, 0x35, 0x33},
+ {0x21, 0x08, 0x33},
+ {0x28, 0x21, 0x1a},
+ {0x12, 0x0c, 0x1b},
+ {0x36, 0x2a, 0x19},
+ {0x2c, 0x2b, 0x23},
+ {0x01, 0x0f, 0x26},
+ {0x17, 0x0c, 0x18},
+ {0x09, 0x0f, 0x11},
+ {0x2b, 0x24, 0x1c},
+ {0x09, 0x09, 0x15},
+ {0x36, 0x08, 0x13},
+ {0x20, 0x39, 0x21},
+ {0x00, 0x3a, 0x1f},
+ {0x2b, 0x36, 0x31},
+ {0x02, 0x37, 0x13},
+ {0x04, 0x34, 0x35},
+ {0x37, 0x3d, 0x1a},
+ {0x17, 0x3d, 0x13},
+ {0x2b, 0x36, 0x2f},
+ {0x13, 0x1e, 0x13},
+ {0x3e, 0x11, 0x33},
+ {0x27, 0x3a, 0x2d},
+ {0x1e, 0x31, 0x1a},
+ {0x03, 0x03, 0x2d},
+ {0x25, 0x37, 0x1f},
+ {0x11, 0x01, 0x22},
+ {0x1c, 0x12, 0x17},
+ {0x30, 0x3a, 0x30},
+ {0x17, 0x1d, 0x29},
+ {0x0e, 0x13, 0x27},
+ {0x1a, 0x2e, 0x24},
+ {0x2d, 0x00, 0x1c},
+ {0x17, 0x28, 0x1d},
+ {0x09, 0x1f, 0x2e},
+ {0x1a, 0x2d, 0x26},
+ {0x0a, 0x13, 0x32},
+ {0x3e, 0x00, 0x27},
+ {0x0b, 0x3b, 0x30},
+ {0x08, 0x3a, 0x2d},
+ {0x22, 0x12, 0x1e},
+ {0x34, 0x1d, 0x2b},
+ {0x26, 0x22, 0x35},
+ {0x17, 0x2c, 0x17},
+ {0x29, 0x13, 0x2d},
+ {0x2d, 0x10, 0x10},
+ {0x20, 0x31, 0x23},
+ {0x1e, 0x33, 0x18},
+ {0x33, 0x06, 0x2d},
+ {0x26, 0x14, 0x27},
+ {0x22, 0x1d, 0x2a},
+ {0x2d, 0x06, 0x18},
+ {0x07, 0x09, 0x2e},
+ {0x21, 0x15, 0x2e},
+ {0x21, 0x38, 0x23},
+ {0x35, 0x0b, 0x34},
+ {0x24, 0x0b, 0x22},
+ {0x1e, 0x01, 0x17},
+ {0x0b, 0x24, 0x11},
+ {0x17, 0x07, 0x20},
+ {0x14, 0x25, 0x32},
+ {0x1a, 0x0e, 0x2f},
+ {0x35, 0x17, 0x1f},
+ {0x0c, 0x08, 0x21},
+ {0x30, 0x35, 0x1f},
+ {0x0c, 0x0b, 0x20},
+ {0x04, 0x10, 0x11},
+ {0x35, 0x11, 0x1e},
+ {0x33, 0x3d, 0x16},
+ {0x1e, 0x2b, 0x1d},
+ {0x1a, 0x19, 0x10},
+ {0x04, 0x06, 0x22},
+ {0x03, 0x3d, 0x24},
+ {0x2a, 0x0e, 0x35},
+ {0x03, 0x3e, 0x17},
+ {0x0b, 0x18, 0x36},
+ {0x3d, 0x0d, 0x26},
+ {0x35, 0x12, 0x20},
+ {0x1f, 0x0d, 0x16},
+ {0x23, 0x32, 0x1a},
+ {0x00, 0x3d, 0x26},
+ {0x30, 0x19, 0x36},
+ {0x12, 0x0e, 0x23},
+ {0x01, 0x23, 0x28},
+ {0x3b, 0x31, 0x11},
+ {0x2d, 0x1c, 0x36},
+ {0x2a, 0x05, 0x16},
+ {0x14, 0x0e, 0x30},
+ {0x3a, 0x37, 0x19},
+ {0x1f, 0x30, 0x25},
+ {0x10, 0x26, 0x2f},
+ {0x22, 0x11, 0x1f},
+ {0x2e, 0x2b, 0x1e},
+ {0x16, 0x16, 0x21},
+ {0x32, 0x18, 0x35},
+ {0x23, 0x32, 0x1a},
+ {0x3d, 0x0d, 0x19},
+ {0x39, 0x09, 0x23},
+ {0x30, 0x2e, 0x24},
+ {0x1e, 0x0f, 0x24},
+ {0x09, 0x21, 0x31},
+ {0x05, 0x03, 0x11},
+ {0x05, 0x22, 0x2a},
+ {0x03, 0x07, 0x37},
+ {0x04, 0x08, 0x13},
+ {0x05, 0x10, 0x34},
+ {0x37, 0x14, 0x29},
+ {0x0a, 0x24, 0x32},
+ {0x34, 0x1e, 0x1b},
+ {0x12, 0x17, 0x2e},
+ {0x01, 0x02, 0x13},
+ {0x0a, 0x0c, 0x11},
+ {0x02, 0x14, 0x13},
+ {0x0d, 0x25, 0x23},
+ {0x00, 0x07, 0x1a},
+ {0x1c, 0x28, 0x35},
+ {0x08, 0x0e, 0x2c},
+ {0x1b, 0x3c, 0x15},
+ {0x1c, 0x19, 0x1d},
+ {0x32, 0x13, 0x1a},
+ {0x1c, 0x00, 0x37},
+ {0x22, 0x1b, 0x35},
+ {0x39, 0x3e, 0x14},
+ {0x32, 0x06, 0x31},
+ {0x17, 0x05, 0x2b},
+ {0x01, 0x0f, 0x20},
+ {0x1e, 0x0f, 0x34},
+ {0x18, 0x03, 0x1f},
+ {0x2b, 0x00, 0x14},
+ {0x15, 0x3a, 0x30},
+ {0x25, 0x30, 0x21},
+ {0x0b, 0x00, 0x37},
+ {0x24, 0x37, 0x1d},
+ {0x29, 0x21, 0x16},
+ {0x24, 0x0f, 0x2c},
+ {0x3e, 0x15, 0x36},
+ {0x3c, 0x2d, 0x23},
+ {0x3d, 0x3c, 0x17},
+ {0x1a, 0x1c, 0x13},
+ {0x0a, 0x29, 0x22},
+ {0x25, 0x3f, 0x26},
+ {0x3b, 0x39, 0x2f},
+ {0x1d, 0x08, 0x16},
+ {0x0b, 0x19, 0x14},
+ {0x12, 0x01, 0x2c},
+ {0x35, 0x11, 0x2a},
+ {0x02, 0x00, 0x13},
+ {0x39, 0x2a, 0x35},
+ {0x07, 0x1a, 0x11},
+ {0x24, 0x0e, 0x1e},
+ {0x0e, 0x2c, 0x15},
+ {0x08, 0x31, 0x1b},
+ {0x21, 0x1d, 0x26},
+ {0x1d, 0x1c, 0x2a},
+ {0x1d, 0x24, 0x13},
+ {0x01, 0x00, 0x18},
+ {0x28, 0x2a, 0x37},
+ {0x15, 0x0f, 0x13},
+ {0x10, 0x32, 0x36},
+ {0x22, 0x13, 0x31},
+ {0x13, 0x05, 0x1e},
+ {0x17, 0x35, 0x35},
+ {0x3b, 0x0e, 0x24},
+ {0x35, 0x3a, 0x1d},
+ {0x1b, 0x36, 0x1b},
+ {0x03, 0x1d, 0x24},
+ {0x0f, 0x16, 0x30},
+ {0x2d, 0x09, 0x25},
+ {0x05, 0x21, 0x13},
+ {0x0a, 0x27, 0x36},
+ {0x04, 0x0d, 0x1c},
+ {0x06, 0x3e, 0x21},
+ {0x2a, 0x27, 0x33},
+ {0x28, 0x0e, 0x15},
+ {0x0b, 0x17, 0x1d},
+ {0x1d, 0x32, 0x2d},
+ {0x08, 0x3d, 0x29},
+ {0x21, 0x32, 0x17},
+ {0x33, 0x31, 0x22},
+ {0x0e, 0x03, 0x21},
+ {0x0d, 0x0b, 0x16},
+ {0x3e, 0x2a, 0x2e},
+ {0x19, 0x36, 0x2a},
+ {0x0d, 0x00, 0x14},
+ {0x22, 0x07, 0x36},
+ {0x0a, 0x09, 0x15},
+ {0x14, 0x10, 0x22},
+ {0x07, 0x16, 0x2c},
+ {0x36, 0x13, 0x15},
+ {0x09, 0x2f, 0x1b},
+ {0x20, 0x3b, 0x2e},
+ {0x3a, 0x3a, 0x16},
+ {0x0d, 0x15, 0x2a},
+ {0x39, 0x13, 0x2b},
+ {0x0b, 0x01, 0x2a},
+ {0x13, 0x17, 0x1e},
+ {0x08, 0x17, 0x1e},
+ {0x0c, 0x0f, 0x34},
+ {0x1f, 0x31, 0x12},
+ {0x07, 0x3a, 0x1d},
+ {0x35, 0x1e, 0x12},
+ {0x24, 0x2c, 0x15},
+ {0x0e, 0x21, 0x19},
+ {0x34, 0x3b, 0x33},
+ {0x19, 0x0f, 0x28},
+ {0x10, 0x2f, 0x2e},
+ {0x23, 0x27, 0x31},
+ {0x39, 0x2e, 0x18},
+ {0x3c, 0x3f, 0x24},
+ {0x07, 0x23, 0x30},
+ {0x28, 0x13, 0x35},
+ {0x13, 0x0a, 0x10},
+ {0x35, 0x19, 0x33},
+ {0x23, 0x28, 0x29},
+ {0x13, 0x2f, 0x1a},
+ {0x3a, 0x19, 0x14},
+ {0x37, 0x36, 0x26},
+ {0x20, 0x3b, 0x15},
+ {0x37, 0x39, 0x10},
+ {0x3c, 0x21, 0x34},
+ {0x1c, 0x38, 0x30},
+ {0x15, 0x07, 0x26},
+ {0x27, 0x21, 0x19},
+ {0x18, 0x11, 0x23},
+ {0x30, 0x28, 0x37},
+ {0x32, 0x2d, 0x1f},
+ {0x2c, 0x3f, 0x30},
+ {0x1d, 0x2f, 0x26},
+ {0x01, 0x11, 0x1c},
+ {0x3b, 0x0f, 0x12},
+ {0x2a, 0x17, 0x27},
+ {0x05, 0x00, 0x1b},
+ {0x25, 0x1c, 0x32},
+ {0x04, 0x22, 0x2d},
+ {0x10, 0x0f, 0x25},
+ {0x0d, 0x39, 0x30},
+ {0x0b, 0x2e, 0x27},
+ {0x2d, 0x34, 0x15},
+ {0x3e, 0x30, 0x36},
+ {0x16, 0x26, 0x2a},
+ {0x05, 0x3f, 0x2b},
+ {0x20, 0x3b, 0x2e},
+ {0x3b, 0x1c, 0x2f},
+ {0x01, 0x18, 0x16},
+ {0x16, 0x3d, 0x10},
+ {0x0a, 0x1f, 0x18},
+ {0x17, 0x0f, 0x22},
+ {0x06, 0x13, 0x11},
+ {0x38, 0x21, 0x17},
+ {0x17, 0x0a, 0x37},
+ {0x1c, 0x19, 0x30},
+ {0x16, 0x38, 0x31},
+ {0x30, 0x10, 0x36},
+ {0x31, 0x2f, 0x26},
+ {0x3c, 0x1b, 0x23},
+ {0x33, 0x2f, 0x19},
+ {0x16, 0x35, 0x25},
+ {0x3a, 0x18, 0x1f},
+ {0x37, 0x01, 0x1e},
+ {0x0d, 0x18, 0x12},
+ {0x1f, 0x1c, 0x1b},
+ {0x07, 0x34, 0x2d},
+ {0x0b, 0x3f, 0x33},
+ {0x1e, 0x34, 0x1d},
+ {0x2c, 0x13, 0x2c},
+ {0x20, 0x20, 0x13},
+ {0x20, 0x0f, 0x31},
+ {0x08, 0x0f, 0x24},
+ {0x18, 0x3d, 0x1c},
+ {0x36, 0x34, 0x27},
+ {0x33, 0x2a, 0x25},
+ {0x2d, 0x30, 0x26},
+ {0x3d, 0x37, 0x26},
+ {0x25, 0x11, 0x11},
+ {0x03, 0x05, 0x18},
+ {0x10, 0x04, 0x29},
+ {0x07, 0x2e, 0x36},
+ {0x2a, 0x29, 0x15},
+ {0x3a, 0x0e, 0x33},
+ {0x2a, 0x06, 0x29},
+ {0x3d, 0x01, 0x29},
+ {0x27, 0x0e, 0x16},
+ {0x1d, 0x28, 0x1b},
+ {0x10, 0x33, 0x2b},
+ {0x0c, 0x14, 0x1d},
+ {0x15, 0x3f, 0x25},
+ {0x37, 0x23, 0x1e},
+ {0x04, 0x2c, 0x1c},
+ {0x15, 0x34, 0x2a},
+ {0x09, 0x2f, 0x15},
+ {0x02, 0x3f, 0x14},
+ {0x19, 0x2c, 0x33},
+ {0x39, 0x32, 0x20},
+ {0x2a, 0x18, 0x32},
+ {0x17, 0x23, 0x21},
+ {0x0b, 0x2d, 0x25},
+ {0x24, 0x3a, 0x2d},
+ {0x31, 0x3f, 0x34},
+ {0x18, 0x19, 0x24},
+ {0x1e, 0x15, 0x1a},
+ {0x17, 0x33, 0x2b},
+ {0x23, 0x09, 0x26},
+ {0x1b, 0x0d, 0x15},
+ {0x36, 0x26, 0x28},
+ {0x3a, 0x1c, 0x14},
+ {0x0c, 0x3e, 0x10},
+ {0x18, 0x06, 0x35},
+ {0x37, 0x26, 0x36},
+ {0x21, 0x26, 0x17},
+ {0x3d, 0x1c, 0x2c},
+ {0x16, 0x25, 0x1d},
+ {0x1e, 0x0b, 0x1e},
+ {0x1d, 0x0d, 0x32},
+ {0x08, 0x1f, 0x1b},
+ {0x12, 0x1c, 0x12},
+ {0x20, 0x2a, 0x28},
+ {0x06, 0x3b, 0x35},
+ {0x39, 0x0e, 0x1e},
+ {0x31, 0x30, 0x28},
+ {0x02, 0x21, 0x14},
+ {0x06, 0x1e, 0x29},
+ {0x16, 0x09, 0x1c},
+ {0x27, 0x32, 0x2d},
+ {0x39, 0x03, 0x27},
+ {0x29, 0x09, 0x1e},
+ {0x1b, 0x11, 0x1c},
+ {0x28, 0x3a, 0x2c},
+ {0x03, 0x03, 0x18},
+ {0x23, 0x09, 0x2f},
+ {0x30, 0x17, 0x23},
+ {0x0f, 0x25, 0x33},
+ {0x06, 0x24, 0x37},
+ {0x22, 0x09, 0x33},
+ {0x2c, 0x09, 0x2a},
+ {0x0c, 0x12, 0x2a},
+ {0x28, 0x20, 0x10},
+ {0x15, 0x29, 0x33},
+ {0x0f, 0x1a, 0x13},
+ {0x13, 0x18, 0x36},
+ {0x2e, 0x16, 0x13},
+ {0x3c, 0x1a, 0x15},
+ {0x3a, 0x11, 0x32},
+ {0x02, 0x0a, 0x2c},
+ {0x19, 0x39, 0x11},
+ {0x31, 0x3e, 0x1d},
+ {0x32, 0x14, 0x32},
+ {0x12, 0x2e, 0x34},
+ {0x3e, 0x36, 0x23},
+ {0x37, 0x3e, 0x15},
+ {0x15, 0x35, 0x34},
+ {0x01, 0x3a, 0x2c},
+ {0x26, 0x25, 0x22},
+ {0x01, 0x2b, 0x37},
+ {0x1c, 0x3d, 0x33},
+ {0x3e, 0x10, 0x1c},
+ {0x26, 0x33, 0x19},
+ {0x05, 0x19, 0x17},
+ {0x12, 0x38, 0x1c},
+ {0x15, 0x3c, 0x32},
+ {0x3f, 0x0f, 0x37},
+ {0x02, 0x39, 0x32},
+ {0x13, 0x00, 0x1d},
+ {0x1d, 0x2c, 0x10},
+ {0x39, 0x13, 0x31},
+ {0x0f, 0x37, 0x19},
+ {0x09, 0x0d, 0x2a},
+ {0x20, 0x2f, 0x32},
+ {0x3b, 0x34, 0x22},
+ {0x26, 0x14, 0x10},
+ {0x24, 0x3d, 0x22},
+ {0x0b, 0x31, 0x23},
+ {0x2f, 0x2d, 0x2a},
+ {0x30, 0x04, 0x35},
+ {0x19, 0x20, 0x2a},
+ {0x16, 0x36, 0x37},
+ {0x14, 0x28, 0x37},
+ {0x11, 0x0b, 0x27},
+ {0x1d, 0x06, 0x29},
+ {0x35, 0x16, 0x2e},
+ {0x24, 0x2e, 0x29},
+ {0x36, 0x14, 0x2a},
+ {0x21, 0x0c, 0x1f},
+ {0x3f, 0x39, 0x19},
+ {0x27, 0x10, 0x2a},
+ {0x1e, 0x12, 0x34},
+ {0x10, 0x24, 0x34},
+ {0x1d, 0x13, 0x1d},
+ {0x17, 0x16, 0x37},
+ {0x27, 0x1b, 0x27},
+ {0x07, 0x24, 0x21},
+ {0x37, 0x21, 0x11},
+ {0x37, 0x28, 0x24},
+ {0x19, 0x02, 0x1c},
+ {0x14, 0x12, 0x1d},
+ {0x1b, 0x24, 0x2e},
+ {0x2e, 0x3a, 0x15},
+ {0x37, 0x34, 0x21},
+ {0x33, 0x2d, 0x29},
+ {0x2f, 0x1e, 0x34},
+ {0x29, 0x3c, 0x12},
+ {0x05, 0x15, 0x20},
+ {0x05, 0x3e, 0x19},
+ {0x18, 0x0b, 0x30},
+ {0x2f, 0x02, 0x27},
+ {0x14, 0x1c, 0x34},
+ {0x12, 0x20, 0x30},
+ {0x2b, 0x22, 0x1b},
+ {0x06, 0x31, 0x28},
+ {0x15, 0x2d, 0x12},
+ {0x01, 0x0e, 0x13},
+ {0x13, 0x0c, 0x28},
+ {0x07, 0x2a, 0x14},
+ {0x1d, 0x36, 0x14},
+ {0x15, 0x2b, 0x26},
+ {0x03, 0x25, 0x15},
+ {0x3e, 0x3b, 0x20},
+ {0x35, 0x0c, 0x25},
+ {0x2b, 0x16, 0x35},
+ {0x1e, 0x31, 0x2c},
+ {0x06, 0x03, 0x29},
+ {0x24, 0x07, 0x1f},
+ {0x32, 0x2f, 0x19},
+ {0x25, 0x21, 0x31},
+ {0x22, 0x26, 0x1d},
+ {0x00, 0x1b, 0x18},
+ {0x2a, 0x24, 0x31},
+ {0x20, 0x06, 0x2f},
+ {0x1e, 0x32, 0x26},
+ {0x32, 0x39, 0x12},
+ {0x20, 0x01, 0x19},
+ {0x0f, 0x15, 0x15},
+ {0x27, 0x10, 0x2e},
+ {0x09, 0x25, 0x19},
+ {0x29, 0x37, 0x30},
+ {0x13, 0x1c, 0x1d},
+ {0x29, 0x2d, 0x26},
+ {0x02, 0x1a, 0x16},
+ {0x1d, 0x2b, 0x1c},
+ {0x18, 0x04, 0x34},
+ {0x28, 0x2a, 0x21},
+ {0x15, 0x1b, 0x2e},
+ {0x16, 0x01, 0x10},
+ {0x05, 0x09, 0x14},
+ {0x22, 0x03, 0x22},
+ {0x02, 0x1b, 0x34},
+ {0x29, 0x2a, 0x23},
+ {0x26, 0x36, 0x13},
+ {0x23, 0x3d, 0x1a},
+ {0x1d, 0x10, 0x24},
+ {0x25, 0x2b, 0x37},
+ {0x19, 0x24, 0x26},
+ {0x28, 0x13, 0x16},
+ {0x17, 0x14, 0x19},
+ {0x0b, 0x2f, 0x25},
+ {0x37, 0x34, 0x37},
+ {0x39, 0x21, 0x1b},
+ {0x0f, 0x3d, 0x2d},
+ {0x0d, 0x10, 0x20},
+ {0x05, 0x0b, 0x2d},
+ {0x01, 0x12, 0x24},
+ {0x18, 0x3d, 0x32},
+ {0x09, 0x21, 0x26},
+ {0x1a, 0x0e, 0x1f},
+ {0x30, 0x06, 0x1f},
+ {0x0b, 0x3c, 0x29},
+ {0x07, 0x3e, 0x27},
+ {0x13, 0x1e, 0x1a},
+ {0x13, 0x07, 0x23},
+ {0x10, 0x34, 0x1e},
+ {0x32, 0x17, 0x23},
+ {0x35, 0x16, 0x31},
+ {0x32, 0x2e, 0x1b},
+ {0x28, 0x0e, 0x22},
+ {0x14, 0x3a, 0x23},
+ {0x22, 0x03, 0x29},
+ {0x2a, 0x10, 0x20},
+ {0x3e, 0x3c, 0x27},
+ {0x16, 0x20, 0x12},
+ {0x3f, 0x24, 0x31},
+ {0x0d, 0x2e, 0x32},
+ {0x2f, 0x17, 0x2d},
+ {0x36, 0x3b, 0x17},
+ {0x24, 0x23, 0x18},
+ {0x37, 0x1d, 0x13},
+ {0x17, 0x3a, 0x1a},
+ {0x0a, 0x3d, 0x1e},
+ {0x05, 0x12, 0x16},
+ {0x33, 0x32, 0x25},
+ {0x1d, 0x1f, 0x29},
+ {0x34, 0x2c, 0x26},
+ {0x20, 0x29, 0x35},
+ {0x0e, 0x32, 0x17},
+ {0x01, 0x39, 0x2d},
+ {0x27, 0x24, 0x23},
+ {0x28, 0x3f, 0x18},
+ {0x39, 0x38, 0x25},
+ {0x23, 0x11, 0x11},
+ {0x19, 0x2c, 0x29},
+ {0x30, 0x08, 0x28},
+ {0x25, 0x27, 0x1d},
+ {0x17, 0x25, 0x21},
+ {0x09, 0x3d, 0x16},
+ {0x1b, 0x0f, 0x2c},
+ {0x1b, 0x12, 0x22},
+ {0x28, 0x3e, 0x26},
+ {0x34, 0x10, 0x1b},
+ {0x02, 0x34, 0x15},
+ {0x1a, 0x29, 0x19},
+ {0x29, 0x11, 0x31},
+ {0x12, 0x27, 0x17},
+ {0x27, 0x27, 0x2f},
+ {0x34, 0x27, 0x24},
+ {0x03, 0x19, 0x36},
+ {0x17, 0x1d, 0x33},
+ {0x19, 0x25, 0x1a},
+ {0x2b, 0x39, 0x13},
+ {0x3b, 0x33, 0x1d},
+ {0x27, 0x31, 0x34},
+ {0x28, 0x33, 0x37},
+ {0x09, 0x30, 0x1b},
+ {0x03, 0x3a, 0x27},
+ {0x19, 0x11, 0x1f},
+ {0x0b, 0x1a, 0x34},
+ {0x3d, 0x2a, 0x15},
+ {0x04, 0x24, 0x36},
+ {0x30, 0x23, 0x30},
+ {0x0f, 0x22, 0x1b},
+ {0x3d, 0x3d, 0x24},
+ {0x29, 0x1d, 0x12},
+ {0x16, 0x19, 0x2e},
+ {0x03, 0x12, 0x17},
+ {0x18, 0x25, 0x33},
+ {0x2f, 0x23, 0x1a},
+ {0x1a, 0x35, 0x27},
+ {0x21, 0x26, 0x19},
+ {0x1b, 0x30, 0x18},
+ {0x2b, 0x22, 0x2d},
+ {0x2c, 0x1a, 0x34},
+ {0x3e, 0x12, 0x19},
+ {0x28, 0x27, 0x15},
+ {0x1b, 0x11, 0x12},
+ {0x17, 0x15, 0x10},
+ {0x34, 0x37, 0x25},
+ {0x12, 0x3f, 0x15},
+ {0x31, 0x0d, 0x37},
+ {0x3e, 0x2a, 0x2d},
+ {0x0f, 0x24, 0x24},
+ {0x3c, 0x3f, 0x1f},
+ {0x1d, 0x34, 0x17},
+ {0x1a, 0x23, 0x1f},
+ {0x37, 0x0f, 0x10},
+ {0x32, 0x34, 0x35},
+ {0x19, 0x05, 0x22},
+ {0x33, 0x16, 0x34},
+ {0x1e, 0x14, 0x1e},
+ {0x08, 0x13, 0x29},
+ {0x3a, 0x37, 0x30},
+ {0x1d, 0x36, 0x15},
+ {0x29, 0x2e, 0x1d},
+ {0x32, 0x2e, 0x23},
+ {0x35, 0x17, 0x1c},
+ {0x36, 0x1d, 0x13},
+ {0x23, 0x34, 0x34},
+ {0x24, 0x1a, 0x37},
+ {0x2f, 0x26, 0x2e},
+ {0x1e, 0x17, 0x1a},
+ {0x1f, 0x15, 0x1f},
+ {0x2b, 0x1f, 0x19},
+ {0x0a, 0x33, 0x1a},
+ {0x35, 0x31, 0x24},
+ {0x2d, 0x17, 0x2c},
+ {0x0c, 0x21, 0x36},
+ {0x2c, 0x35, 0x35},
+ {0x1b, 0x03, 0x27},
+ {0x01, 0x0d, 0x1d},
+ {0x1c, 0x0e, 0x11},
+ {0x11, 0x2b, 0x10},
+ {0x25, 0x3b, 0x20},
+ {0x1f, 0x17, 0x19},
+ {0x20, 0x08, 0x36},
+ {0x13, 0x38, 0x19},
+ {0x1b, 0x2b, 0x24},
+ {0x0b, 0x1f, 0x29},
+ {0x27, 0x15, 0x2c},
+ {0x37, 0x39, 0x10},
+ {0x3a, 0x15, 0x2e},
+ {0x2f, 0x11, 0x36},
+ {0x24, 0x04, 0x20},
+ {0x3b, 0x2a, 0x35},
+ {0x27, 0x35, 0x34},
+ {0x0d, 0x1b, 0x20},
+ {0x10, 0x22, 0x37},
+ {0x1f, 0x38, 0x27},
+ {0x31, 0x0f, 0x28},
+ {0x28, 0x25, 0x15},
+ {0x00, 0x1d, 0x25},
+ {0x31, 0x28, 0x28},
+ {0x0b, 0x3a, 0x1d},
+ {0x2d, 0x13, 0x1b},
+ {0x03, 0x37, 0x2e},
+ {0x1d, 0x28, 0x19},
+ {0x08, 0x2d, 0x22},
+ {0x27, 0x39, 0x32},
+ {0x3f, 0x2f, 0x1d},
+ {0x33, 0x34, 0x28},
+ {0x18, 0x08, 0x31},
+ {0x23, 0x1f, 0x13},
+ {0x0d, 0x2c, 0x23},
+ {0x3a, 0x2d, 0x1a},
+ {0x02, 0x25, 0x13},
+ {0x20, 0x36, 0x34},
+ {0x12, 0x2b, 0x2d},
+ {0x35, 0x35, 0x34},
+ {0x23, 0x20, 0x21},
+ {0x3a, 0x19, 0x1b},
+ {0x1f, 0x2b, 0x19},
+ {0x35, 0x0e, 0x19},
+ {0x26, 0x24, 0x37},
+ {0x18, 0x08, 0x10},
+ {0x0c, 0x16, 0x2d},
+ {0x1f, 0x34, 0x21},
+ {0x05, 0x38, 0x19},
+ {0x14, 0x21, 0x24},
+ {0x11, 0x31, 0x14},
+ {0x3e, 0x38, 0x29},
+ {0x3f, 0x08, 0x25},
+ {0x2a, 0x1f, 0x25},
+ {0x25, 0x06, 0x28},
+ {0x0b, 0x1e, 0x14},
+ {0x1a, 0x38, 0x22},
+ {0x24, 0x18, 0x29},
+ {0x1a, 0x11, 0x20},
+ {0x3b, 0x3a, 0x1e},
+ {0x1c, 0x26, 0x1a},
+ {0x05, 0x32, 0x19},
+ {0x39, 0x2a, 0x31},
+ {0x09, 0x07, 0x25},
+ {0x05, 0x3e, 0x16},
+ {0x34, 0x26, 0x14},
+ {0x1b, 0x32, 0x26},
+ {0x05, 0x08, 0x37},
+ {0x0f, 0x03, 0x20},
+ {0x2a, 0x39, 0x31},
+ {0x08, 0x01, 0x1e},
+ {0x1d, 0x23, 0x31},
+ {0x28, 0x1b, 0x28},
+ {0x1e, 0x37, 0x14},
+ {0x13, 0x0e, 0x28},
+ {0x2a, 0x3b, 0x37},
+ {0x2f, 0x1c, 0x28},
+ {0x30, 0x30, 0x1a},
+ {0x36, 0x1f, 0x16},
+ {0x3e, 0x0d, 0x15},
+ {0x2e, 0x16, 0x18},
+ {0x15, 0x37, 0x20},
+ {0x2a, 0x33, 0x30},
+ {0x2b, 0x0e, 0x25},
+ {0x18, 0x20, 0x16},
+ {0x02, 0x19, 0x25},
+ {0x0a, 0x2e, 0x30},
+ {0x16, 0x03, 0x11},
+ {0x04, 0x27, 0x25},
+ {0x1b, 0x1c, 0x21},
+ {0x29, 0x04, 0x27},
+ {0x3d, 0x20, 0x1e},
+ {0x28, 0x33, 0x31},
+ {0x1e, 0x39, 0x10},
+ {0x31, 0x29, 0x1e},
+ {0x06, 0x25, 0x28},
+ {0x19, 0x3b, 0x12},
+ {0x0b, 0x1b, 0x1c},
+ {0x3e, 0x37, 0x20},
+ {0x0a, 0x37, 0x33},
+ {0x02, 0x2c, 0x25},
+ {0x15, 0x18, 0x14},
+ {0x3b, 0x20, 0x1c},
+ {0x22, 0x3b, 0x1c},
+ {0x24, 0x34, 0x35},
+ {0x0f, 0x2f, 0x31},
+ {0x3b, 0x17, 0x35},
+ {0x30, 0x39, 0x37},
+ {0x0d, 0x15, 0x11},
+ {0x10, 0x03, 0x1e},
+ {0x1a, 0x39, 0x33},
+ {0x2f, 0x2e, 0x28},
+ {0x1c, 0x28, 0x36},
+ {0x28, 0x18, 0x1f},
+ {0x15, 0x01, 0x30},
+ {0x3e, 0x32, 0x28},
+ {0x34, 0x2f, 0x23},
+ {0x07, 0x0c, 0x36},
+ {0x28, 0x2c, 0x34},
+ {0x2a, 0x0c, 0x1f},
+ {0x3f, 0x20, 0x13},
+ {0x2b, 0x17, 0x27},
+ {0x28, 0x29, 0x2a},
+ {0x3c, 0x13, 0x36},
+ {0x26, 0x2d, 0x2a},
+ {0x0a, 0x06, 0x1e},
+ {0x20, 0x04, 0x1a},
+ {0x02, 0x07, 0x35},
+ {0x0e, 0x18, 0x30},
+ {0x00, 0x34, 0x34},
+ {0x2f, 0x14, 0x37},
+ {0x21, 0x30, 0x1f},
+ {0x15, 0x37, 0x1b},
+ {0x3a, 0x0b, 0x32},
+ {0x22, 0x22, 0x21},
+ {0x1b, 0x35, 0x23},
+ {0x0d, 0x03, 0x1c},
+ {0x23, 0x3b, 0x13},
+ {0x0e, 0x1d, 0x1f},
+ {0x1d, 0x3f, 0x2e},
+ {0x39, 0x27, 0x2e},
+ {0x0f, 0x38, 0x20},
+ {0x31, 0x3c, 0x35},
+ {0x0b, 0x0f, 0x2e},
+ {0x06, 0x06, 0x28},
+ {0x25, 0x39, 0x23},
+ {0x0a, 0x32, 0x15},
+ {0x0f, 0x1d, 0x25},
+ {0x0c, 0x0d, 0x34},
+ {0x12, 0x2e, 0x21},
+ {0x36, 0x18, 0x1f},
+ {0x1f, 0x34, 0x1b},
+ {0x05, 0x3a, 0x36},
+ {0x2b, 0x01, 0x17},
+ {0x0e, 0x16, 0x2b},
+ {0x0e, 0x0b, 0x26},
+ {0x0d, 0x2d, 0x10},
+ {0x21, 0x11, 0x27},
+ {0x3d, 0x13, 0x32},
+ {0x15, 0x25, 0x2a},
+ {0x1b, 0x2d, 0x35},
+ {0x2c, 0x2b, 0x26},
+ {0x26, 0x1f, 0x20},
+ {0x22, 0x2b, 0x12},
+ {0x3f, 0x3d, 0x27},
+ {0x30, 0x0a, 0x36},
+ {0x35, 0x1f, 0x17},
+ {0x21, 0x08, 0x29},
+ {0x1d, 0x20, 0x33},
+ {0x34, 0x11, 0x16},
+ {0x05, 0x38, 0x2d}
+};
+
+void ApplyImageProcessingEffects(struct ImageProcessingContext *context)
+{
+ gCanvasPixels = context->canvasPixels;
+ gCanvasMonPersonality = context->personality;
+ gCanvasColumnStart = context->columnStart;
+ gCanvasRowStart = context->rowStart;
+ gCanvasColumnEnd = context->columnEnd;
+ gCanvasRowEnd = context->rowEnd;
+ gCanvasWidth = context->canvasWidth;
+ gCanvasHeight = context->canvasHeight;
+
+ switch (context->effect)
+ {
+ case IMAGE_EFFECT_POINTILLISM:
+ ApplyImageEffect_Pointillism();
+ break;
+ case IMAGE_EFFECT_BLUR:
+ ApplyImageEffect_Blur();
+ break;
+ case IMAGE_EFFECT_OUTLINE_COLORED:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_PersonalityColor(gCanvasMonPersonality);
+ break;
+ case IMAGE_EFFECT_INVERT_BLACK_WHITE:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_Invert();
+ ApplyImageEffect_BlackAndWhite();
+ case IMAGE_EFFECT_INVERT:
+ ApplyImageEffect_Invert();
+ break;
+ case IMAGE_EFFECT_THICK_BLACK_WHITE:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_BlurRight();
+ ApplyImageEffect_BlurRight();
+ ApplyImageEffect_BlurDown();
+ ApplyImageEffect_BlackAndWhite();
+ break;
+ case IMAGE_EFFECT_SHIMMER:
+ ApplyImageEffect_Shimmer();
+ break;
+ case IMAGE_EFFECT_OUTLINE:
+ ApplyImageEffect_BlackOutline();
+ break;
+ case IMAGE_EFFECT_BLUR_RIGHT:
+ ApplyImageEffect_BlurRight();
+ break;
+ case IMAGE_EFFECT_BLUR_DOWN:
+ ApplyImageEffect_BlurDown();
+ break;
+ case IMAGE_EFFECT_GRAYSCALE_LIGHT:
+ ApplyImageEffect_Grayscale();
+ ApplyImageEffect_RedChannelGrayscale(3);
+ break;
+ case IMAGE_EFFECT_CHARCOAL:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_BlurRight();
+ ApplyImageEffect_BlurDown();
+ ApplyImageEffect_BlackAndWhite();
+ ApplyImageEffect_Blur();
+ ApplyImageEffect_Blur();
+ ApplyImageEffect_RedChannelGrayscale(2);
+ ApplyImageEffect_RedChannelGrayscaleHighlight(4);
+ break;
+ }
+}
+
+static void ApplyImageEffect_RedChannelGrayscale(u8 delta)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ {
+ // Gets the grayscale value, based on the pixel's red channel.
+ // Also adds a delta to skew lighter or darker.
+ u8 grayValue = (31 & *pixel);
+ grayValue += delta;
+ if (grayValue > 31)
+ grayValue = 31;
+
+ *pixel = RGB2(grayValue, grayValue, grayValue);
+ }
+ }
+ }
+}
+
+static void ApplyImageEffect_RedChannelGrayscaleHighlight(u8 highlight)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ {
+ u8 grayValue = (31 & *pixel);
+ if (grayValue > 31 - highlight)
+ grayValue = 31 - (highlight >> 1);
+
+ *pixel = RGB2(grayValue, grayValue, grayValue);
+ }
+ }
+ }
+}
+
+static void ApplyImageEffect_Pointillism(void)
+{
+ u32 i;
+ for (i = 0; i < NELEMS(sPointillismPoints); i++)
+ AddPointillismPoints(i);
+}
+
+static void ApplyImageEffect_Grayscale(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ *pixel = ConvertColorToGrayscale(pixel);
+ }
+ }
+}
+
+static void ApplyImageEffect_Blur(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gCanvasColumnEnd; i++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart + i];
+ u16 prevPixel = *pixel;
+
+ j = 1;
+ pixel += gCanvasWidth;
+ while (j < gCanvasRowEnd - 1)
+ {
+ if (!(0x8000 & *pixel))
+ {
+ *pixel = QuantizePixel_Blur(&prevPixel, pixel, pixel + gCanvasWidth);
+ prevPixel = *pixel;
+ }
+
+ j++;
+ pixel += gCanvasWidth;
+ }
+ }
+}
+
+static void ApplyImageEffect_PersonalityColor(u8 personality)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ *pixel = QuantizePixel_PersonalityColor(pixel, personality);
+ }
+ }
+}
+
+static void ApplyImageEffect_BlackAndWhite(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ *pixel = QuantizePixel_BlackAndWhite(pixel);
+ }
+ }
+}
+
+static void ApplyImageEffect_BlackOutline(void)
+{
+ u8 i, j;
+ u16 *pixel;
+
+ // Handle top row of pixels first.
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ pixel = &pixelRow[gCanvasColumnStart];
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1);
+ for (i = 1, pixel++; i < gCanvasColumnEnd - 1; i++, pixel++)
+ {
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1);
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1);
+ }
+
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1);
+ }
+
+ // Handle each column from left to right.
+ for (i = 0; i < gCanvasColumnEnd; i++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth];
+ pixel = &pixelRow[gCanvasColumnStart + i];
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth);
+ for (j = 1, pixel += gCanvasWidth; j < gCanvasRowEnd - 1; j++, pixel += gCanvasWidth)
+ {
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth);
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth);
+ }
+
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth);
+ }
+}
+
+static void ApplyImageEffect_Invert(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ *pixel = QuantizePixel_Invert(pixel);
+ }
+ }
+}
+
+static void ApplyImageEffect_Shimmer(void)
+{
+ u8 i, j;
+ u16 *pixel;
+ u16 prevPixel;
+
+ // First, invert all of the colors.
+ pixel = (*gCanvasPixels)[0];
+ for (i = 0; i < 64; i++)
+ {
+ for (j = 0; j < 64; j++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ *pixel = QuantizePixel_Invert(pixel);
+ }
+ }
+
+ // Blur the pixels twice.
+ for (j = 0; j < 64; j++)
+ {
+ pixel = &(*gCanvasPixels)[0][j];
+ prevPixel = *pixel;
+ *pixel = 0x8000;
+ for (i = 1, pixel += 64; i < 63; i++, pixel += 64)
+ {
+ if (!(0x8000 & *pixel))
+ {
+ *pixel = QuantizePixel_BlurHard(&prevPixel, pixel, pixel + 64);
+ prevPixel = *pixel;
+ }
+ }
+
+ *pixel = 0x8000;
+ pixel = &(*gCanvasPixels)[0][j];
+ prevPixel = *pixel;
+ *pixel = 0x8000;
+ for (i = 1, pixel += 64; i < 63; i++, pixel += 64)
+ {
+ if (!(0x8000 & *pixel))
+ {
+ *pixel = QuantizePixel_BlurHard(&prevPixel, pixel, pixel + 64);
+ prevPixel = *pixel;
+ }
+ }
+
+ *pixel = 0x8000;
+ }
+
+ // Finally, invert colors back to the original color space.
+ // The above blur causes the outline areas to darken, which makes
+ // this inversion give the effect of light outlines.
+ pixel = (*gCanvasPixels)[0];
+ for (i = 0; i < 64; i++)
+ {
+ for (j = 0; j < 64; j++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ *pixel = QuantizePixel_Invert(pixel);
+ }
+ }
+}
+
+static void ApplyImageEffect_BlurRight(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ u16 prevPixel = *pixel;
+ for (i = 1, pixel++; i < gCanvasColumnEnd - 1; i++, pixel++)
+ {
+ if (!(0x8000 & *pixel))
+ {
+ *pixel = QuantizePixel_MotionBlur(&prevPixel, pixel);
+ prevPixel = *pixel;
+ }
+ }
+ }
+}
+
+static void ApplyImageEffect_BlurDown(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gCanvasColumnEnd; i++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][gCanvasRowStart * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart + i];
+ u16 prevPixel = *pixel;
+ for (j = 1, pixel += gCanvasWidth; j < gCanvasRowEnd - 1; j++, pixel += gCanvasWidth)
+ {
+ if (!(0x8000 & *pixel))
+ {
+ *pixel = QuantizePixel_MotionBlur(&prevPixel, pixel);
+ prevPixel = *pixel;
+ }
+ }
+ }
+}
+
+struct PointillismPoint
+{
+ u8 column;
+ u8 row;
+ u16 delta;
+};
+
+static void AddPointillismPoints(u16 arg0)
+{
+ u8 i;
+ bool8 offsetDownLeft;
+ u8 colorType;
+ struct PointillismPoint points[6];
+
+ points[0].column = sPointillismPoints[arg0][0];
+ points[0].row = sPointillismPoints[arg0][1];
+ points[0].delta = (sPointillismPoints[arg0][2] >> 3) & 7;
+
+ colorType = (sPointillismPoints[arg0][2] >> 1) & 3;
+ offsetDownLeft = sPointillismPoints[arg0][2] & 1;
+ for (i = 1; i < points[0].delta; i++)
+ {
+ if (!offsetDownLeft)
+ {
+ points[i].column = points[0].column - i;
+ points[i].row = points[0].row + i;
+ }
+ else
+ {
+ points[i].column = points[0].column + 1;
+ points[i].row = points[0].row - 1;
+ }
+
+ if (points[i].column > 63 || points[i].row > 63)
+ {
+ points[0].delta = i - 1;
+ break;
+ }
+
+ points[i].delta = points[0].delta - i;
+ }
+
+ for (i = 0; i < points[0].delta; i++)
+ {
+ u16 *pixel = &(*gCanvasPixels)[points[i].row * 2][points[i].column];
+
+ if (!(0x8000 & *pixel))
+ {
+ u16 red = (*pixel) & 0x1F;
+ u16 green = (*pixel >> 5) & 0x1F;
+ u16 blue = (*pixel >> 10) & 0x1F;
+
+ switch (colorType)
+ {
+ case 0:
+ case 1:
+ switch (((sPointillismPoints[arg0][2] >> 3) & 7) % 3)
+ {
+ case 0:
+ if (red >= points[i].delta)
+ red -= points[i].delta;
+ else
+ red = 0;
+ break;
+ case 1:
+ if (green >= points[i].delta)
+ green -= points[i].delta;
+ else
+ green = 0;
+ break;
+ case 2:
+ if (blue >= points[i].delta)
+ blue -= points[i].delta;
+ else
+ blue = 0;
+ break;
+ }
+ break;
+ case 2:
+ case 3:
+ red += points[i].delta;
+ green += points[i].delta;
+ blue += points[i].delta;
+ if (red > 31)
+ red = 31;
+ if (green > 31)
+ green = 31;
+ if (blue > 31)
+ blue = 31;
+ break;
+ }
+
+ *pixel = RGB2(red, green, blue);
+ }
+ }
+}
+
+static u16 ConvertColorToGrayscale(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+
+ u16 gray = (red + green + blue) / 3;
+ return RGB2(gray, gray, gray);
+}
+
+// The dark colors are the colored edges of the Cool painting effect.
+// Everything else is white.
+static u16 QuantizePixel_PersonalityColor(u16 *color, u8 personality)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+
+ if (red < 17 && green < 17 && blue < 17)
+ return GetColorFromPersonality(personality);
+ else
+ return RGB_WHITE;
+}
+
+// Based on the given value, which comes from the first 8 bits of
+// the mon's personality value, return a color.
+static u16 GetColorFromPersonality(u8 personality)
+{
+ u16 red = 0;
+ u16 green = 0;
+ u16 blue = 0;
+ u8 strength = (personality / 6) % 3;
+ u8 colorType = personality % 6;
+
+ switch (colorType)
+ {
+ case 0:
+ // Teal color
+ green = 21 - strength;
+ blue = green;
+ red = 0;
+ break;
+ case 1:
+ // Yellow color
+ blue = 0;
+ red = 21 - strength;
+ green = red;
+ break;
+ case 2:
+ // Purple color
+ blue = 21 - strength;
+ green = 0;
+ red = blue;
+ break;
+ case 3:
+ // Red color
+ blue = 0;
+ green = 0;
+ red = 23 - strength;
+ break;
+ case 4:
+ // Blue color
+ blue = 23 - strength;
+ green = 0;
+ red = 0;
+ break;
+ case 5:
+ // Green color
+ blue = 0;
+ green = 23 - strength;
+ red = 0;
+ break;
+ }
+
+ return RGB2(red, green, blue);
+}
+
+static u16 QuantizePixel_BlackAndWhite(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+
+ if (red < 17 && green < 17 && blue < 17)
+ return RGB_BLACK;
+ else
+ return RGB_WHITE;
+}
+
+static u16 QuantizePixel_BlackOutline(u16 *pixelA, u16 *pixelB)
+{
+ if (*pixelA != RGB_BLACK)
+ {
+ if (*pixelA & 0x8000)
+ return 0x8000;
+ if (*pixelB & 0x8000)
+ return RGB_BLACK;
+
+ return *pixelA;
+ }
+
+ return RGB_BLACK;
+}
+
+static u16 QuantizePixel_Invert(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+
+ red = 31 - red;
+ green = 31 - green;
+ blue = 31 - blue;
+
+ return RGB2(red, green, blue);
+}
+
+static u16 QuantizePixel_MotionBlur(u16 *prevPixel, u16 *curPixel)
+{
+ u16 pixelChannels[2][3];
+ u16 diffs[3];
+ u8 i;
+ u16 largestDiff;
+ u16 red, green, blue;
+
+ if (*prevPixel == *curPixel)
+ return *curPixel;
+
+ pixelChannels[0][0] = (*prevPixel >> 0) & 0x1F;
+ pixelChannels[0][1] = (*prevPixel >> 5) & 0x1F;
+ pixelChannels[0][2] = (*prevPixel >> 10) & 0x1F;
+ pixelChannels[1][0] = (*curPixel >> 0) & 0x1F;
+ pixelChannels[1][1] = (*curPixel >> 5) & 0x1F;
+ pixelChannels[1][2] = (*curPixel >> 10) & 0x1F;
+
+ // Don't blur light colors.
+ if (pixelChannels[0][0] > 25 && pixelChannels[0][1] > 25 && pixelChannels[0][2] > 25)
+ return *curPixel;
+ if (pixelChannels[1][0] > 25 && pixelChannels[1][1] > 25 && pixelChannels[1][2] > 25)
+ return *curPixel;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (pixelChannels[0][i] > pixelChannels[1][i])
+ diffs[i] = pixelChannels[0][i] - pixelChannels[1][i];
+ else
+ diffs[i] = pixelChannels[1][i] - pixelChannels[0][i];
+ }
+
+ // Find the largest diff of any of the color channels.
+ if (diffs[0] >= diffs[1])
+ {
+ if (diffs[0] >= diffs[2])
+ largestDiff = diffs[0];
+ else if (diffs[1] >= diffs[2])
+ largestDiff = diffs[1];
+ else
+ largestDiff = diffs[2];
+ }
+ else
+ {
+ if (diffs[1] >= diffs[2])
+ largestDiff = diffs[1];
+ else if (diffs[2] >= diffs[0])
+ largestDiff = diffs[2];
+ else
+ largestDiff = diffs[0];
+ }
+
+ red = (pixelChannels[1][0] * (31 - largestDiff / 2)) / 31;
+ green = (pixelChannels[1][1] * (31 - largestDiff / 2)) / 31;
+ blue = (pixelChannels[1][2] * (31 - largestDiff / 2)) / 31;
+ return RGB2(red, green, blue);
+}
+
+static u16 QuantizePixel_Blur(u16 *prevPixel, u16 *curPixel, u16 *nextPixel)
+{
+ u16 red, green, blue;
+ u16 prevAvg, curAvg, nextAvg;
+ u16 prevDiff, nextDiff;
+ u32 diff;
+ u16 factor;
+
+ if (*prevPixel == *curPixel && *nextPixel == *curPixel)
+ return *curPixel;
+
+ red = (*curPixel >> 0) & 0x1F;
+ green = (*curPixel >> 5) & 0x1F;
+ blue = (*curPixel >> 10) & 0x1F;
+
+ prevAvg = (((*prevPixel >> 0) & 0x1F) + ((*prevPixel >> 5) & 0x1F) + ((*prevPixel >> 10) & 0x1F)) / 3;
+ curAvg = (((*curPixel >> 0) & 0x1F) + ((*curPixel >> 5) & 0x1F) + ((*curPixel >> 10) & 0x1F)) / 3;
+ nextAvg = (((*nextPixel >> 0) & 0x1F) + ((*nextPixel >> 5) & 0x1F) + ((*nextPixel >> 10) & 0x1F)) / 3;
+
+ if (prevAvg == curAvg && nextAvg == curAvg)
+ return *curPixel;
+
+ if (prevAvg > curAvg)
+ prevDiff = prevAvg - curAvg;
+ else
+ prevDiff = curAvg - prevAvg;
+
+ if (nextAvg > curAvg)
+ nextDiff = nextAvg - curAvg;
+ else
+ nextDiff = curAvg - nextAvg;
+
+ if (prevDiff >= nextDiff)
+ diff = prevDiff;
+ else
+ diff = nextDiff;
+
+ factor = 31 - diff / 2;
+ red = (red * factor) / 31;
+ green = (green * factor) / 31;
+ blue = (blue * factor) / 31;
+ return RGB2(red, green, blue);
+}
+
+static u16 QuantizePixel_BlurHard(u16 *prevPixel, u16 *curPixel, u16 *nextPixel)
+{
+ u16 red, green, blue;
+ u16 prevAvg, curAvg, nextAvg;
+ u16 prevDiff, nextDiff;
+ u32 diff;
+ u16 factor;
+
+ if (*prevPixel == *curPixel && *nextPixel == *curPixel)
+ return *curPixel;
+
+ red = (*curPixel >> 0) & 0x1F;
+ green = (*curPixel >> 5) & 0x1F;
+ blue = (*curPixel >> 10) & 0x1F;
+
+ prevAvg = (((*prevPixel >> 0) & 0x1F) + ((*prevPixel >> 5) & 0x1F) + ((*prevPixel >> 10) & 0x1F)) / 3;
+ curAvg = (((*curPixel >> 0) & 0x1F) + ((*curPixel >> 5) & 0x1F) + ((*curPixel >> 10) & 0x1F)) / 3;
+ nextAvg = (((*nextPixel >> 0) & 0x1F) + ((*nextPixel >> 5) & 0x1F) + ((*nextPixel >> 10) & 0x1F)) / 3;
+
+ if (prevAvg == curAvg && nextAvg == curAvg)
+ return *curPixel;
+
+ if (prevAvg > curAvg)
+ prevDiff = prevAvg - curAvg;
+ else
+ prevDiff = curAvg - prevAvg;
+
+ if (nextAvg > curAvg)
+ nextDiff = nextAvg - curAvg;
+ else
+ nextDiff = curAvg - nextAvg;
+
+ if (prevDiff >= nextDiff)
+ diff = prevDiff;
+ else
+ diff = nextDiff;
+
+ factor = 31 - diff;
+ red = (red * factor) / 31;
+ green = (green * factor) / 31;
+ blue = (blue * factor) / 31;
+ return RGB2(red, green, blue);
+}
+
+void ConvertImageProcessingToGBA(struct ImageProcessingContext *context)
+{
+ u16 i, j, k;
+ u16 *src, *dest, *src_, *dest_;
+ u16 width, height;
+
+ width = context->canvasWidth >> 3;
+ height = context->canvasHeight >> 3;
+ src_ = context->canvasPixels;
+ dest_ = context->dest;
+
+ if (context->var_16 == 2)
+ {
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ for (k = 0; k < 8; k++)
+ {
+ dest = dest_ + ((i * width + j) << 5) + (k << 2);
+ src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3);
+
+ dest[0] = src[0] | (src[1] << 8);
+ dest[1] = src[2] | (src[3] << 8);
+ dest[2] = src[4] | (src[5] << 8);
+ dest[3] = src[6] | (src[7] << 8);
+ }
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ for (k = 0; k < 8; k++)
+ {
+ dest = dest_ + ((i * width + j) << 4) + (k << 1);
+ src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3);
+
+ dest[0] = src[0] | (src[1] << 4) | (src[2] << 8) | (src[3] << 0xC);
+ dest[1] = src[4] | (src[5] << 4) | (src[6] << 8) | (src[7] << 0xC);
+ }
+ }
+ }
+ }
+}
+
+void ApplyImageProcessingQuantization(struct ImageProcessingContext *context)
+{
+ gCanvasPaletteStart = context->paletteStart * 16;
+ gCanvasPalette = &context->canvasPalette[gCanvasPaletteStart];
+ gCanvasPixels = context->canvasPixels;
+ gCanvasColumnStart = context->columnStart;
+ gCanvasRowStart = context->rowStart;
+ gCanvasColumnEnd = context->columnEnd;
+ gCanvasRowEnd = context->rowEnd;
+ gCanvasWidth = context->canvasWidth;
+ gCanvasHeight = context->canvasHeight;
+
+ switch (context->quantizeEffect)
+ {
+ case QUANTIZE_EFFECT_STANDARD:
+ QuantizePalette_Standard(FALSE);
+ break;
+ case QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS:
+ QuantizePalette_Standard(TRUE);
+ break;
+ case QUANTIZE_EFFECT_PRIMARY_COLORS:
+ SetPresetPalette_PrimaryColors();
+ QuantizePalette_PrimaryColors();
+ break;
+ case QUANTIZE_EFFECT_GRAYSCALE:
+ SetPresetPalette_Grayscale();
+ QuantizePalette_Grayscale();
+ break;
+ case QUANTIZE_EFFECT_GRAYSCALE_SMALL:
+ SetPresetPalette_GrayscaleSmall();
+ QuantizePalette_GrayscaleSmall();
+ break;
+ case QUANTIZE_EFFECT_BLACK_WHITE:
+ SetPresetPalette_BlackAndWhite();
+ QuantizePalette_BlackAndWhite();
+ break;
+ }
+}
+
+static void SetPresetPalette_PrimaryColors(void)
+{
+ gCanvasPalette[0] = RGB2(0, 0, 0);
+ gCanvasPalette[1] = RGB2(6, 6, 6);
+ gCanvasPalette[2] = RGB2(29, 29, 29);
+ gCanvasPalette[3] = RGB2(11, 11, 11);
+ gCanvasPalette[4] = RGB2(29, 6, 6);
+ gCanvasPalette[5] = RGB2(6, 29, 6);
+ gCanvasPalette[6] = RGB2(6, 6, 29);
+ gCanvasPalette[7] = RGB2(29, 29, 6);
+ gCanvasPalette[8] = RGB2(29, 6, 29);
+ gCanvasPalette[9] = RGB2(6, 29, 29);
+ gCanvasPalette[10] = RGB2(29, 11, 6);
+ gCanvasPalette[11] = RGB2(11, 29, 6);
+ gCanvasPalette[12] = RGB2(6, 11, 29);
+ gCanvasPalette[13] = RGB2(29, 6, 11);
+ gCanvasPalette[14] = RGB2(6, 29, 11);
+ gCanvasPalette[15] = RGB2(11, 6, 29);
+}
+
+static void SetPresetPalette_BlackAndWhite(void)
+{
+ gCanvasPalette[0] = RGB2(0, 0, 0);
+ gCanvasPalette[1] = RGB2(0, 0, 0);
+ gCanvasPalette[2] = RGB2(31, 31, 31);
+}
+
+static void SetPresetPalette_GrayscaleSmall(void)
+{
+ u8 i;
+
+ gCanvasPalette[0] = RGB2(0, 0, 0);
+ gCanvasPalette[1] = RGB2(0, 0, 0);
+ for (i = 0; i < 14; i++)
+ gCanvasPalette[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2));
+}
+
+static void SetPresetPalette_Grayscale(void)
+{
+ u8 i;
+
+ gCanvasPalette[0] = RGB2(0, 0, 0);
+ for (i = 0; i < 32; i++)
+ gCanvasPalette[i + 1] = RGB2(i, i, i);
+}
+
+static void QuantizePalette_Standard(bool8 useLimitedPalette)
+{
+ u8 i, j;
+ u16 maxIndex;
+
+ maxIndex = 0xDF;
+ if (!useLimitedPalette)
+ maxIndex = 0xFF;
+
+ for (i = 0; i < maxIndex; i++)
+ gCanvasPalette[i] = RGB_BLACK;
+
+ gCanvasPalette[maxIndex] = RGB2(15, 15, 15);
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (*pixel & 0x8000)
+ {
+ *pixel = gCanvasPaletteStart;
+ }
+ else
+ {
+ u16 quantizedColor = QuantizePixel_Standard(pixel);
+ u8 curIndex = 1;
+ if (curIndex < maxIndex)
+ {
+ if (gCanvasPalette[curIndex] == RGB_BLACK)
+ {
+ // The quantized color does not match any existing color in the
+ // palette, so we add it to the palette.
+ // This if block seems pointless because the below while loop handles
+ // this same logic.
+ gCanvasPalette[curIndex] = quantizedColor;
+ *pixel = gCanvasPaletteStart + curIndex;
+ }
+ else
+ {
+ while (curIndex < maxIndex)
+ {
+ if (gCanvasPalette[curIndex] == RGB_BLACK)
+ {
+ // The quantized color does not match any existing color in the
+ // palette, so we add it to the palette.
+ gCanvasPalette[curIndex] = quantizedColor;
+ *pixel = gCanvasPaletteStart + curIndex;
+ break;
+ }
+
+ if (gCanvasPalette[curIndex] == quantizedColor)
+ {
+ // The quantized color matches this existing color in the
+ // palette, so we use this existing color for the pixel.
+ *pixel = gCanvasPaletteStart + curIndex;
+ break;
+ }
+
+ curIndex++;
+ }
+ }
+ }
+
+ if (curIndex == maxIndex)
+ {
+ // The entire palette's colors are already in use, which means
+ // the base image has too many colors to handle. This error is handled
+ // by marking such pixels as gray color.
+ curIndex = maxIndex;
+ *pixel = curIndex;
+ }
+ }
+ }
+ }
+}
+
+static void QuantizePalette_BlackAndWhite(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (*pixel & 0x8000)
+ {
+ *pixel = gCanvasPaletteStart;
+ }
+ else
+ {
+ if (QuantizePixel_BlackAndWhite(pixel) == RGB_BLACK)
+ {
+ // Black is the first color in the quantized palette.
+ *pixel = gCanvasPaletteStart + 1;
+ }
+ else
+ {
+ // White is the second color in the quantized palette.
+ *pixel = gCanvasPaletteStart + 2;
+ }
+ }
+ }
+ }
+}
+
+static void QuantizePalette_GrayscaleSmall(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (*pixel & 0x8000)
+ *pixel = gCanvasPaletteStart;
+ else
+ *pixel = QuantizePixel_GrayscaleSmall(pixel) + gCanvasPaletteStart;
+ }
+ }
+}
+
+static void QuantizePalette_Grayscale(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (*pixel & 0x8000)
+ *pixel = gCanvasPaletteStart;
+ else
+ *pixel = QuantizePixel_Grayscale(pixel) + gCanvasPaletteStart;
+ }
+ }
+}
+
+static void QuantizePalette_PrimaryColors(void)
+{
+ u8 i, j;
+
+ for (j = 0; j < gCanvasRowEnd; j++)
+ {
+ u16 *pixelRow = &(*gCanvasPixels)[0][(gCanvasRowStart + j) * gCanvasWidth];
+ u16 *pixel = &pixelRow[gCanvasColumnStart];
+ for (i = 0; i < gCanvasColumnEnd; i++, pixel++)
+ {
+ if (*pixel & 0x8000)
+ *pixel = gCanvasPaletteStart;
+ else
+ *pixel = QuantizePixel_PrimaryColors(pixel) + gCanvasPaletteStart;
+ }
+ }
+}
+
+// Quantizes the pixel's color channels to nearest multiple of 4, and clamps to [6, 30].
+static u16 QuantizePixel_Standard(u16 *pixel)
+{
+ u16 red = *pixel & 0x1F;
+ u16 green = (*pixel >> 5) & 0x1F;
+ u16 blue = (*pixel >> 10) & 0x1F;
+
+ // Quantize color channels to muliples of 4, rounding up.
+ if (red & 3)
+ red = (red & 0x1C) + 4;
+ if (green & 3)
+ green = (green & 0x1C) + 4;
+ if (blue & 3)
+ blue = (blue & 0x1C) + 4;
+
+ // Clamp channels to [6, 30].
+ if (red < 6)
+ red = 6;
+ if (red > 30)
+ red = 30;
+ if (green < 6)
+ green = 6;
+ if (green > 30)
+ green = 30;
+ if (blue < 6)
+ blue = 6;
+ if (blue > 30)
+ blue = 30;
+
+ return RGB2(red, green, blue);
+}
+
+static u16 QuantizePixel_PrimaryColors(u16* color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+
+ if (red < 12 && green < 11 && blue < 11)
+ return 1;
+
+ if (red > 19 && green > 19 && blue > 19)
+ return 2;
+
+ if (red > 19)
+ {
+ if (green > 19)
+ {
+ if (blue > 14)
+ return 2;
+ else
+ return 7;
+ }
+ else if (blue > 19)
+ {
+ if (green > 14)
+ return 2;
+ else
+ return 8;
+ }
+ }
+
+ if (green > 19 && blue > 19)
+ {
+ if (red > 14)
+ return 2;
+ else
+ return 9;
+ }
+
+ if (red > 19)
+ {
+ if (green > 11)
+ {
+ if (blue > 11)
+ {
+ if (green < blue)
+ return 8;
+ else
+ return 7;
+ }
+ else
+ {
+ return 10;
+ }
+ }
+ else if (blue > 11)
+ {
+ return 13;
+ }
+ else
+ {
+ return 4;
+ }
+ }
+
+ if (green > 19)
+ {
+ if (red > 11)
+ {
+ if (blue > 11)
+ {
+ if (red < blue)
+ return 9;
+ else
+ return 7;
+ }
+ else
+ {
+ return 11;
+ }
+ }
+ else
+ {
+ if (blue > 11)
+ return 14;
+ else
+ return 5;
+ }
+ }
+
+ if (blue > 19)
+ {
+ if (red > 11)
+ {
+ if (green > 11)
+ {
+ if (red < green)
+ return 9;
+ else
+ return 8;
+ }
+ }
+ else if (green > 11)
+ {
+ return 12;
+ }
+
+ if (blue > 11)
+ return 15;
+ else
+ return 6;
+ }
+
+ return 3;
+}
+
+static u16 QuantizePixel_GrayscaleSmall(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ u16 average = ((red + green + blue) / 3) & 0x1E;
+ if (average == 0)
+ return 1;
+ else
+ return average / 2;
+}
+
+static u16 QuantizePixel_Grayscale(u16 *color)
+{
+ u16 red = *color & 0x1F;
+ u16 green = (*color >> 5) & 0x1F;
+ u16 blue = (*color >> 10) & 0x1F;
+ u16 average = (red + green + blue) / 3;
+ return average + 1;
+}
diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c
new file mode 100644
index 000000000..96de99c2a
--- /dev/null
+++ b/src/librfu_rfu.c
@@ -0,0 +1,2222 @@
+#include "librfu.h"
+
+struct LLSFStruct
+{
+ u8 unk00;
+ u8 unk01;
+ u8 unk02;
+ u8 unk03;
+ u8 unk04;
+ u8 unk05;
+ u8 unk06;
+ u8 unk07;
+ u8 unk08;
+ u8 unk09;
+ u8 unk0A;
+ u8 unk0B;
+ u8 unk0C;
+ u16 unk0E;
+};
+
+struct RfuLocalStruct
+{
+ u8 unk00;
+ u8 unk01;
+ u8 unk02;
+ u8 unk03;
+ u8 unk04;
+ u8 unk05;
+ u16 unk06;
+};
+
+static void rfu_CB_defaultCallback(u8, u16);
+static void rfu_CB_reset(u8, u16);
+static void rfu_CB_configGameData(u8, u16);
+static void rfu_CB_stopMode(u8, u16);
+static void rfu_CB_startSearchChild(u8, u16);
+static void rfu_CB_pollAndEndSearchChild(u8, u16);
+static void rfu_CB_startSearchParent(u8, u16);
+static void rfu_CB_pollSearchParent(u8, u16);
+static void rfu_CB_pollConnectParent(u8, u16);
+static void rfu_CB_pollConnectParent(u8, u16);
+static void rfu_CB_disconnect(u8, u16);
+static void rfu_CB_CHILD_pollConnectRecovery(u8, u16);
+static void rfu_CB_sendData(UNUSED u8, u16);
+static void rfu_CB_sendData2(UNUSED u8, u16);
+static void rfu_CB_sendData3(u8, u16);
+static void rfu_CB_recvData(u8, u16);
+static void rfu_enableREQCallback(bool8);
+static void rfu_STC_clearAPIVariables(void);
+static void rfu_STC_readChildList(void);
+static void rfu_STC_readParentCandidateList(void);
+static void rfu_STC_REQ_callback(u8, u16);
+static void rfu_STC_removeLinkData(u8, u8);
+static void rfu_STC_fastCopy(const u8 **, u8 **, s32);
+static void rfu_STC_clearLinkStatus(u8);
+static void rfu_NI_checkCommFailCounter(void);
+static u16 rfu_STC_setSendData_org(u8, u8, u8, const void *, u32);
+static void rfu_constructSendLLFrame(void);
+static u16 rfu_STC_NI_constructLLSF(u8, u8 **, struct NIComm *);
+static u16 rfu_STC_UNI_constructLLSF(u8, u8 **);
+static void rfu_STC_PARENT_analyzeRecvPacket(void);
+static void rfu_STC_CHILD_analyzeRecvPacket(void);
+static u16 rfu_STC_analyzeLLSF(u8, const u8 *, u16);
+static void rfu_STC_UNI_receive(u8, const struct RfuLocalStruct *, const u8 *);
+static void rfu_STC_NI_receive_Receiver(u8, const struct RfuLocalStruct *, const u8 *);
+static void rfu_STC_NI_receive_Sender(u8, u8, const struct RfuLocalStruct *, UNUSED const u8 *);
+static void rfu_STC_NI_initSlot_asRecvDataEntity(u8, struct NIComm *);
+static void rfu_STC_NI_initSlot_asRecvControllData(u8, struct NIComm *);
+
+struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX];
+struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX];
+struct RfuLinkStatus *gRfuLinkStatus;
+struct RfuStatic *gRfuStatic;
+struct RfuFixed *gRfuFixed;
+
+static const struct LLSFStruct llsf_struct[2] = {
+ {
+ 2, 14, 0, 10, 9, 5, 7, 2,
+ 0, 15, 1, 3, 3, 0x1f
+ }, {
+ 3, 22, 18, 14, 13, 9, 11, 3,
+ 15, 15, 1, 3, 3, 0x7f
+ }
+};
+
+#ifdef EMERALD
+static const char lib_ver[] = "RFU_V1026";
+#else
+static const char lib_ver[] = "RFU_V1024";
+#endif
+
+static const char str_checkMbootLL[] = "RFU-MBOOT";
+
+u16 rfu_initializeAPI(struct RfuAPIBuffer *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p, bool8 copyInterruptToRam)
+{
+ u16 i;
+ u16 *dst;
+ const u16 *src;
+ u16 r3;
+
+ // is in EWRAM?
+ if (((u32)APIBuffer & 0xF000000) == 0x2000000 && copyInterruptToRam)
+ return ERR_RFU_API_BUFF_ADR;
+ // is not 4-byte aligned?
+ if ((u32)APIBuffer & 3)
+ return ERR_RFU_API_BUFF_ADR;
+ if (copyInterruptToRam)
+ {
+ // An assert/debug print may have existed before, ie
+ // printf("%s %u < %u", "somefile.c:12345", buffByteSize, num)
+ // to push this into r3?
+ r3 = sizeof(struct RfuAPIBuffer);
+ if (buffByteSize < r3)
+ return ERR_RFU_API_BUFF_SIZE;
+ }
+ if (!copyInterruptToRam)
+ {
+ r3 = 0x504; // same issue as above
+ if (buffByteSize < r3)
+ return ERR_RFU_API_BUFF_SIZE;
+ }
+ gRfuLinkStatus = &APIBuffer->linkStatus;
+ gRfuStatic = &APIBuffer->static_;
+ gRfuFixed = &APIBuffer->fixed;
+ gRfuSlotStatusNI[0] = &APIBuffer->NI[0];
+ gRfuSlotStatusUNI[0] = &APIBuffer->UNI[0];
+ for (i = 1; i < RFU_CHILD_MAX; ++i)
+ {
+ gRfuSlotStatusNI[i] = &gRfuSlotStatusNI[i - 1][1];
+ gRfuSlotStatusUNI[i] = &gRfuSlotStatusUNI[i - 1][1];
+ }
+ // TODO: Is it possible to fix the following 2 statements?
+ // It's equivalent to:
+ // gRfuFixed->STWIBuffer = &APIBuffer->intr;
+ // STWI_init_all(&APIBuffer->intr, sioIntrTable_p, copyInterruptToRam);
+ gRfuFixed->STWIBuffer = (struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1];
+ STWI_init_all((struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1], sioIntrTable_p, copyInterruptToRam);
+ rfu_STC_clearAPIVariables();
+ for (i = 0; i < RFU_CHILD_MAX; ++i)
+ {
+ gRfuSlotStatusNI[i]->recvBuffer = NULL;
+ gRfuSlotStatusNI[i]->recvBufferSize = 0;
+ gRfuSlotStatusUNI[i]->recvBuffer = NULL;
+ gRfuSlotStatusUNI[i]->recvBufferSize = 0;
+ }
+ src = (const u16 *)((u32)&rfu_STC_fastCopy & ~1);
+ dst = gRfuFixed->fastCopyBuffer;
+ // rfu_REQ_changeMasterSlave is the function next to rfu_STC_fastCopy
+ for (r3 = ((void *)rfu_REQ_changeMasterSlave - (void *)rfu_STC_fastCopy) / sizeof(u16), --r3; r3 != 0xFFFF; --r3)
+ *dst++ = *src++;
+ gRfuFixed->fastCopyPtr = (void *)gRfuFixed->fastCopyBuffer + 1;
+ return 0;
+}
+
+static void rfu_STC_clearAPIVariables(void)
+{
+ u16 IMEBackup = REG_IME;
+ u8 i, r4;
+
+ REG_IME = 0;
+ r4 = gRfuStatic->flags;
+ CpuFill16(0, gRfuStatic, sizeof(struct RfuStatic));
+ gRfuStatic->flags = r4 & 8;
+ CpuFill16(0, gRfuLinkStatus, sizeof(struct RfuLinkStatus));
+ gRfuLinkStatus->watchInterval = 4;
+ gRfuStatic->nowWatchInterval = 0;
+ gRfuLinkStatus->parentChild = MODE_NEUTRAL;
+ rfu_clearAllSlot();
+ gRfuStatic->SCStartFlag = 0;
+ for (i = 0; i < NELEMS(gRfuStatic->cidBak); ++i)
+ gRfuStatic->cidBak[i] = 0;
+ REG_IME = IMEBackup;
+}
+
+void rfu_REQ_PARENT_resumeRetransmitAndChange(void)
+{
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ STWI_send_ResumeRetransmitAndChangeREQ();
+}
+
+u16 rfu_UNI_PARENT_getDRAC_ACK(u8 *ackFlag)
+{
+ struct RfuIntrStruct *buf;
+
+ *ackFlag = 0;
+ if (gRfuLinkStatus->parentChild != MODE_PARENT)
+ return ERR_MODE_NOT_PARENT;
+ buf = rfu_getSTWIRecvBuffer();
+ switch (buf->rxPacketAlloc.rfuPacket8.data[0])
+ {
+ case 40:
+ case 54:
+ if (buf->rxPacketAlloc.rfuPacket8.data[1] == 0)
+ *ackFlag = gRfuLinkStatus->connSlotFlag;
+ else
+ *ackFlag = buf->rxPacketAlloc.rfuPacket8.data[4];
+ return 0;
+ default:
+ return ERR_REQ_CMD_ID;
+ }
+}
+
+void rfu_setTimerInterrupt(u8 timerNo, IntrFunc *timerIntrTable_p)
+{
+ STWI_init_timer(timerIntrTable_p, timerNo);
+}
+
+struct RfuIntrStruct *rfu_getSTWIRecvBuffer(void)
+{
+ return gRfuFixed->STWIBuffer;
+}
+
+void rfu_setMSCCallback(void (*callback)(u16 reqCommandId))
+{
+ STWI_set_Callback_S(callback);
+}
+
+void rfu_setREQCallback(void (*callback)(u16 reqCommandId, u16 reqResult))
+{
+ gRfuFixed->reqCallback = callback;
+ rfu_enableREQCallback(callback != NULL);
+}
+
+static void rfu_enableREQCallback(bool8 enable)
+{
+ if (enable)
+ gRfuStatic->flags |= 8;
+ else
+ gRfuStatic->flags &= 0xF7;
+}
+
+static void rfu_STC_REQ_callback(u8 r5, u16 reqResult)
+{
+ STWI_set_Callback_M(rfu_CB_defaultCallback);
+ gRfuStatic->reqResult = reqResult;
+ if (gRfuStatic->flags & 8)
+ gRfuFixed->reqCallback(r5, reqResult);
+}
+
+static void rfu_CB_defaultCallback(u8 r0, u16 reqResult)
+{
+ s32 r5;
+ u8 i;
+
+ if (r0 == 0xFF)
+ {
+ if (gRfuStatic->flags & 8)
+ gRfuFixed->reqCallback(r0, reqResult);
+ r5 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag;
+ for (i = 0; i < RFU_CHILD_MAX; ++i)
+ if ((r5 >> i) & 1)
+ rfu_STC_removeLinkData(i, 1);
+ gRfuLinkStatus->parentChild = MODE_NEUTRAL;
+ }
+}
+
+u16 rfu_waitREQComplete(void)
+{
+ STWI_poll_CommandEnd();
+ return gRfuStatic->reqResult;
+}
+
+void rfu_REQ_RFUStatus(void)
+{
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ STWI_send_SystemStatusREQ();
+}
+
+u16 rfu_getRFUStatus(u8 *rfuState)
+{
+ if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[0] != 0x93)
+ return ERR_REQ_CMD_ID;
+ if (STWI_poll_CommandEnd() == 0)
+ *rfuState = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7];
+ else
+ *rfuState = 0xFF;
+ return 0;
+}
+
+u16 rfu_MBOOT_CHILD_inheritanceLinkStatus(void)
+{
+ const char *s1 = str_checkMbootLL;
+ char *s2 = (char *)0x30000F0;
+ u16 checksum;
+ u16 *r2;
+ u8 i;
+
+ while (*s1 != '\0')
+ if (*s1++ != *s2++)
+ return 1;
+ r2 = (u16 *)0x3000000;
+ checksum = 0;
+ for (i = 0; i < 90; ++i)
+ checksum += *r2++;
+ if (checksum != *(u16 *)0x30000FA)
+ return 1;
+ CpuCopy16((u16 *)0x3000000, gRfuLinkStatus, sizeof(struct RfuLinkStatus));
+ gRfuStatic->flags |= 0x80;
+ return 0;
+}
+
+void rfu_REQ_stopMode(void)
+{
+ vu32 *timerReg;
+
+ if (REG_IME == 0)
+ {
+ rfu_STC_REQ_callback(61, 6);
+ gSTWIStatus->error = ERR_REQ_CMD_IME_DISABLE;
+ }
+ else
+ {
+ AgbRFU_SoftReset();
+ rfu_STC_clearAPIVariables();
+ if (AgbRFU_checkID(8) == 0x8001)
+ {
+ timerReg = &REG_TMCNT(gSTWIStatus->timerSelect);
+ *timerReg = 0;
+ *timerReg = (TIMER_ENABLE | TIMER_1024CLK) << 16;
+ while (*timerReg << 16 < 262 << 16)
+ ;
+ *timerReg = 0;
+ STWI_set_Callback_M(rfu_CB_stopMode);
+ STWI_send_StopModeREQ();
+ }
+ else
+ {
+ REG_SIOCNT = SIO_MULTI_MODE;
+ rfu_STC_REQ_callback(61, 0);
+ }
+ }
+}
+
+static void rfu_CB_stopMode(u8 a1, u16 reqResult)
+{
+ if (reqResult == 0)
+ REG_SIOCNT = SIO_MULTI_MODE;
+ rfu_STC_REQ_callback(a1, reqResult);
+}
+
+u32 rfu_REQBN_softReset_and_checkID(void)
+{
+ u32 r2;
+
+ if (REG_IME == 0)
+ return ERR_ID_CHECK_IME_DISABLE;
+ AgbRFU_SoftReset();
+ rfu_STC_clearAPIVariables();
+ if ((r2 = AgbRFU_checkID(30)) == 0)
+ REG_SIOCNT = SIO_MULTI_MODE;
+ return r2;
+}
+
+void rfu_REQ_reset(void)
+{
+ STWI_set_Callback_M(rfu_CB_reset);
+ STWI_send_ResetREQ();
+}
+
+static void rfu_CB_reset(u8 a1, u16 reqResult)
+{
+ if (reqResult == 0)
+ rfu_STC_clearAPIVariables();
+ rfu_STC_REQ_callback(a1, reqResult);
+}
+
+void rfu_REQ_configSystem(u16 availSlotFlag, u8 maxMFrame, u8 mcTimer)
+{
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ STWI_send_SystemConfigREQ((availSlotFlag & AVAIL_SLOT1) | 0x3C, maxMFrame, mcTimer);
+ if (mcTimer == 0)
+ {
+ gRfuStatic->unk_1a = 1;
+ }
+ else
+ {
+ u16 IMEBackup = REG_IME;
+
+ REG_IME = 0;
+ gRfuStatic->unk_1a = Div(600, mcTimer);
+ REG_IME = IMEBackup;
+ }
+}
+
+void rfu_REQ_configGameData(u8 mbootFlag, u16 serialNo, const u8 *gname, const u8 *uname)
+{
+ u8 sp[16];
+ u8 i;
+ u8 r3;
+ const u8 *gnameBackup = gname;
+ const u8 *unameBackup;
+
+ sp[0] = serialNo;
+ sp[1] = serialNo >> 8;
+ if (mbootFlag != 0)
+ sp[1] = (serialNo >> 8) | 0x80;
+ for (i = 2; i < 15; ++i)
+ sp[i] = *gname++;
+ r3 = 0;
+ unameBackup = uname;
+ for (i = 0; i < 8; ++i)
+ {
+ r3 += *unameBackup++;
+ r3 += *gnameBackup++;
+ }
+ sp[15] = ~r3;
+ if (mbootFlag != 0)
+ sp[14] = 0;
+ STWI_set_Callback_M(rfu_CB_configGameData);
+ STWI_send_GameConfigREQ(sp, uname);
+}
+
+static void rfu_CB_configGameData(u8 ip, u16 r7)
+{
+ s32 r2, r3;
+ u8 *r4;
+ u8 i;
+ u8 *r1;
+
+ if (r7 == 0)
+ {
+ r1 = gSTWIStatus->txPacket->rfuPacket8.data;
+ r2 = gRfuLinkStatus->my.serialNo = r1[4];
+ gRfuLinkStatus->my.serialNo = (r1[5] << 8) | r2;
+ r4 = &r1[6];
+ if (gRfuLinkStatus->my.serialNo & 0x8000)
+ {
+ gRfuLinkStatus->my.serialNo = gRfuLinkStatus->my.serialNo ^ 0x8000;
+ gRfuLinkStatus->my.mbootFlag = 1;
+ }
+ else
+ {
+ gRfuLinkStatus->my.mbootFlag = 0;
+ }
+ for (i = 0; i < RFU_GAME_NAME_LENGTH; ++i)
+ gRfuLinkStatus->my.gname[i] = *r4++;
+ ++r4;
+ for (i = 0; i < RFU_USER_NAME_LENGTH; ++i)
+ gRfuLinkStatus->my.uname[i] = *r4++;
+ }
+ rfu_STC_REQ_callback(ip, r7);
+}
+
+void rfu_REQ_startSearchChild(void)
+{
+ u16 r1;
+
+ STWI_set_Callback_M(rfu_CB_defaultCallback);
+ STWI_send_SystemStatusREQ();
+ r1 = STWI_poll_CommandEnd();
+ if (r1 == 0)
+ {
+ if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0)
+ rfu_STC_clearLinkStatus(1);
+ }
+ else
+ {
+ rfu_STC_REQ_callback(25, r1);
+ }
+ STWI_set_Callback_M(rfu_CB_startSearchChild);
+ STWI_send_SC_StartREQ();
+}
+
+static void rfu_CB_startSearchChild(u8 r3, u16 reqResult)
+{
+ if (reqResult == 0)
+ gRfuStatic->SCStartFlag = 1;
+ rfu_STC_REQ_callback(r3, reqResult);
+}
+
+static void rfu_STC_clearLinkStatus(u8 r4)
+{
+ u8 i;
+
+ rfu_clearAllSlot();
+ if (r4 != 0)
+ {
+ CpuFill16(0, gRfuLinkStatus->partner, sizeof(gRfuLinkStatus->partner));
+ gRfuLinkStatus->findParentCount = 0;
+ }
+ for (i = 0; i < RFU_CHILD_MAX; ++i)
+ gRfuLinkStatus->strength[i] = 0;
+ gRfuLinkStatus->connCount = 0;
+ gRfuLinkStatus->connSlotFlag = 0;
+ gRfuLinkStatus->linkLossSlotFlag = 0;
+ gRfuLinkStatus->getNameFlag = 0;
+}
+
+void rfu_REQ_pollSearchChild(void)
+{
+ STWI_set_Callback_M(rfu_CB_pollAndEndSearchChild);
+ STWI_send_SC_PollingREQ();
+}
+
+void rfu_REQ_endSearchChild(void)
+{
+ STWI_set_Callback_M(rfu_CB_pollAndEndSearchChild);
+ STWI_send_SC_EndREQ();
+}
+
+static void rfu_CB_pollAndEndSearchChild(u8 r4, u16 reqResult)
+{
+ if (reqResult == 0)
+ rfu_STC_readChildList();
+ if (r4 == 26)
+ {
+ if (gRfuLinkStatus->my.id == 0)
+ {
+ STWI_set_Callback_M(rfu_CB_defaultCallback);
+ STWI_send_SystemStatusREQ();
+ if (STWI_poll_CommandEnd() == 0)
+ gRfuLinkStatus->my.id = *(u16 *)&gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0];
+ }
+ }
+ else if (r4 == 27)
+ {
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL)
+ gRfuLinkStatus->my.id = 0;
+ gRfuStatic->SCStartFlag = 0;
+ }
+ rfu_STC_REQ_callback(r4, reqResult);
+}
+
+static void rfu_STC_readChildList(void)
+{
+ u32 r5;
+ u8 r8 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[1];
+ u8 *r4;
+ u8 i;
+ u8 sp[4];
+ u8 r2;
+
+ if (r8 != 0)
+ {
+ r5 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0];
+ STWI_set_Callback_M(rfu_CB_defaultCallback);
+ STWI_send_LinkStatusREQ();
+ if (STWI_poll_CommandEnd() == 0)
+ {
+ r4 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4];
+ for (i = 0; i < NELEMS(sp); ++i)
+ sp[i] = *r4++;
+ }
+ gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0] = r5;
+ }
+ for (r4 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4];
+ r8 != 0;
+ r4 += 4)
+ {
+ r2 = r4[2];
+ if (r2 < RFU_CHILD_MAX && !((gRfuLinkStatus->connSlotFlag >> r2) & 1) && !((gRfuLinkStatus->linkLossSlotFlag >> r2) & 1))
+ {
+ if (sp[r2] != 0)
+ ++gRfuStatic->lsFixedCount[r2];
+ if (gRfuStatic->lsFixedCount[r2] >= 4)
+ {
+ gRfuStatic->lsFixedCount[r2] = 0;
+ gRfuLinkStatus->strength[r2] = 0xFF;
+ gRfuLinkStatus->connSlotFlag |= 1 << r2;
+ ++gRfuLinkStatus->connCount;
+ gRfuLinkStatus->partner[r2].id = *(u16 *)r4;
+ gRfuLinkStatus->partner[r2].slot = r2;
+ gRfuLinkStatus->parentChild = MODE_PARENT;
+ gRfuStatic->flags &= 0x7F;
+ gRfuStatic->cidBak[r2] = gRfuLinkStatus->partner[r2].id;
+ }
+ }
+ --r8;
+ }
+}
+
+void rfu_REQ_startSearchParent(void)
+{
+ STWI_set_Callback_M(rfu_CB_startSearchParent);
+ STWI_send_SP_StartREQ();
+}
+
+static void rfu_CB_startSearchParent(u8 r5, u16 reqResult)
+{
+ if (reqResult == 0)
+ rfu_STC_clearLinkStatus(0);
+ rfu_STC_REQ_callback(r5, reqResult);
+}
+
+void rfu_REQ_pollSearchParent(void)
+{
+ STWI_set_Callback_M(rfu_CB_pollSearchParent);
+ STWI_send_SP_PollingREQ();
+}
+
+static void rfu_CB_pollSearchParent(u8 r5, u16 reqResult)
+{
+ if (reqResult == 0)
+ rfu_STC_readParentCandidateList();
+ rfu_STC_REQ_callback(r5, reqResult);
+}
+
+void rfu_REQ_endSearchParent(void)
+{
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ STWI_send_SP_EndREQ();
+}
+
+static void rfu_STC_readParentCandidateList(void)
+{
+ u8 r7, r6, r5, r4, r3;
+ u8 *r1, *r2;
+ struct RfuTgtData *r4_;
+
+ CpuFill16(0, gRfuLinkStatus->partner, sizeof(gRfuLinkStatus->partner));
+ r2 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[0];
+ r7 = r2[1];
+ r2 += 4;
+ gRfuLinkStatus->findParentCount = 0;
+ for (r6 = 0; r6 < 4 && r7 != 0; ++r6)
+ {
+ r7 -= 7;
+ r1 = r2 + 6;
+ r2 += 19;
+ r5 = ~*r2;
+ ++r2;
+ r4 = 0;
+ for (r3 = 0; r3 < 8; ++r3)
+ {
+ r4 += *r2++;
+ r4 += *r1++;
+ }
+ if (r4 == r5)
+ {
+ r2 -= 28;
+ r4_ = &gRfuLinkStatus->partner[gRfuLinkStatus->findParentCount];
+ r4_->id = *(u16 *)r2;
+ r2 += 2;
+ r4_->slot = *r2;
+ r2 += 2;
+ r4_->serialNo = *(u16 *)r2 & 0x7FFF;
+ if (*(u16 *)r2 & 0x8000)
+ r4_->mbootFlag = 1;
+ else
+ r4_->mbootFlag = 0;
+ r2 += 2;
+ for (r3 = 0; r3 < RFU_GAME_NAME_LENGTH; ++r3)
+ r4_->gname[r3] = *r2++;
+ ++r2;
+ for (r3 = 0; r3 < RFU_USER_NAME_LENGTH; ++r3)
+ r4_->uname[r3] = *r2++;
+ ++gRfuLinkStatus->findParentCount;
+ }
+ }
+}
+
+void rfu_REQ_startConnectParent(u16 pid)
+{
+ u16 r3 = 0;
+ u8 i;
+ for (i = 0; i < RFU_CHILD_MAX && gRfuLinkStatus->partner[i].id != pid; ++i)
+ ;
+ if (i == 4)
+ r3 = 256;
+ if (r3 == 0)
+ {
+ gRfuStatic->tryPid = pid;
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ STWI_send_CP_StartREQ(pid);
+ }
+ else
+ {
+ rfu_STC_REQ_callback(31, r3);
+ }
+}
+
+void rfu_REQ_pollConnectParent(void)
+{
+ STWI_set_Callback_M(rfu_CB_pollConnectParent);
+ STWI_send_CP_PollingREQ();
+}
+
+static void rfu_CB_pollConnectParent(u8 sp24, u16 sp28)
+{
+ u16 id;
+ u8 slot;
+ u8 r2, r5;
+ struct RfuTgtData *r9;
+ struct RfuTgtData sp;
+
+ if (sp28 == 0)
+ {
+ id = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0];
+ slot = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[6];
+ if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0)
+ {
+ r2 = 1 << slot;
+ if (!(r2 & gRfuLinkStatus->connSlotFlag))
+ {
+ gRfuLinkStatus->connSlotFlag |= r2;
+ gRfuLinkStatus->linkLossSlotFlag &= ~r2;
+ gRfuLinkStatus->my.id = id;
+ ++gRfuLinkStatus->connCount;
+ gRfuLinkStatus->parentChild = MODE_CHILD;
+ gRfuStatic->flags |= 0x80;
+ for (r5 = 0; r5 < RFU_CHILD_MAX; ++r5)
+ {
+ if (gRfuLinkStatus->partner[r5].id == gRfuStatic->tryPid)
+ {
+ if (gRfuLinkStatus->findParentCount != 0)
+ {
+ r9 = &sp;
+ CpuCopy16(&gRfuLinkStatus->partner[r5], &sp, sizeof(struct RfuTgtData));
+ CpuFill16(0, gRfuLinkStatus->partner, sizeof(gRfuLinkStatus->partner));
+ gRfuLinkStatus->findParentCount = 0;
+ }
+ else
+ {
+ r9 = &gRfuLinkStatus->partner[r5];
+ }
+ break;
+ }
+ }
+ if (r5 < RFU_CHILD_MAX)
+ {
+ CpuCopy16(r9, &gRfuLinkStatus->partner[slot], sizeof(struct RfuTgtData));
+ gRfuLinkStatus->partner[slot].slot = slot;
+ }
+ }
+ }
+ }
+ rfu_STC_REQ_callback(sp24, sp28);
+}
+
+u16 rfu_getConnectParentStatus(u8 *status, u8 *connectSlotNo)
+{
+ u8 r0, *r2;
+
+ *status = 0xFF;
+ r2 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data;
+ r0 = r2[0] + 96;
+ if (r0 <= 1)
+ {
+ r2 += 6;
+ *connectSlotNo = r2[0];
+ *status = r2[1];
+ return 0;
+ }
+ return ERR_REQ_CMD_ID;
+}
+
+void rfu_REQ_endConnectParent(void)
+{
+ STWI_set_Callback_M(rfu_CB_pollConnectParent);
+ STWI_send_CP_EndREQ();
+ if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[6] < 4)
+ gRfuStatic->linkEmergencyFlag[gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[6]] = 0;
+}
+
+u16 rfu_syncVBlank(void)
+{
+ u8 r3, r4;
+ s32 r5;
+
+ rfu_NI_checkCommFailCounter();
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL)
+ return 0;
+ if (gRfuStatic->nowWatchInterval != 0)
+ --gRfuStatic->nowWatchInterval;
+ r3 = rfu_getMasterSlave();
+ if (!(gRfuStatic->flags & 2))
+ {
+ if (r3 == 0)
+ {
+ gRfuStatic->flags |= 4;
+ gRfuStatic->watchdogTimer = 360;
+ }
+ }
+ else if (r3 != 0)
+ {
+ gRfuStatic->flags &= 0xFB;
+ }
+ if (r3 != 0)
+ gRfuStatic->flags &= 0xFD;
+ else
+ gRfuStatic->flags |= 2;
+ if (!(gRfuStatic->flags & 4))
+ return 0;
+ if (gRfuStatic->watchdogTimer == 0)
+ {
+ gRfuStatic->flags &= 0xFB;
+ r5 = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag;
+ for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4)
+ if ((r5 >> r4) & 1)
+ rfu_STC_removeLinkData(r4, 1);
+ gRfuLinkStatus->parentChild = MODE_NEUTRAL;
+ return 1;
+ }
+ --gRfuStatic->watchdogTimer;
+ return 0;
+}
+
+u16 rfu_REQBN_watchLink(u16 reqCommandId, u8 *bmLinkLossSlot, u8 *linkLossReason, u8 *parentBmLinkRecoverySlot)
+{
+ u8 sp08 = 0;
+ u8 sp0C = 0;
+ u8 i;
+ s32 sp10, sp14;
+ u8 *r2;
+ u8 r9, r6, r3, connSlotFlag, r0;
+
+ *bmLinkLossSlot = 0;
+ *linkLossReason = REASON_DISCONNECTED;
+ *parentBmLinkRecoverySlot = 0;
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL || gSTWIStatus->msMode == 0)
+ return 0;
+ if (gRfuStatic->flags & 4)
+ gRfuStatic->watchdogTimer = 360;
+ if (gRfuStatic->nowWatchInterval == 0)
+ {
+ gRfuStatic->nowWatchInterval = gRfuLinkStatus->watchInterval;
+ sp08 = 1;
+ }
+ if ((u8)reqCommandId == 41)
+ {
+ u8 *r1 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data;
+
+ *bmLinkLossSlot = r1[4];
+ *linkLossReason = r1[5];
+ if (*linkLossReason == REASON_LINK_LOSS)
+ *bmLinkLossSlot = gRfuLinkStatus->connSlotFlag;
+ sp08 = 2;
+ }
+ else
+ {
+ if (reqCommandId == 310)
+ {
+ r6 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[5];
+ r6 ^= gRfuLinkStatus->connSlotFlag;
+ *bmLinkLossSlot = r6 & gRfuLinkStatus->connSlotFlag;
+ *linkLossReason = REASON_LINK_LOSS;
+ for (i = 0; i < RFU_CHILD_MAX; ++i)
+ {
+ if ((*bmLinkLossSlot >> i) & 1)
+ {
+ gRfuLinkStatus->strength[i] = 0;
+ rfu_STC_removeLinkData(i, 0);
+ }
+ }
+ }
+ if (sp08 == 0)
+ return 0;
+ }
+ sp10 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.command;
+ sp14 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0];
+ STWI_set_Callback_M(rfu_CB_defaultCallback);
+ STWI_send_LinkStatusREQ();
+ sp0C = STWI_poll_CommandEnd();
+ if (sp0C == 0)
+ {
+ r2 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4];
+ for (i = 0; i < RFU_CHILD_MAX; ++i)
+ gRfuLinkStatus->strength[i] = *r2++;
+ r9 = 0;
+ i = 0;
+ }
+ else
+ {
+ rfu_STC_REQ_callback(17, sp0C);
+ return sp0C;
+ }
+ for (; i < RFU_CHILD_MAX; ++i)
+ {
+ r6 = 1 << i;
+ if (sp0C == 0)
+ {
+ if (sp08 == 1 && (gRfuLinkStatus->connSlotFlag & r6))
+ {
+ if (gRfuLinkStatus->strength[i] == 0)
+ {
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ ++gRfuStatic->linkEmergencyFlag[i];
+ if (gRfuStatic->linkEmergencyFlag[i] > 3)
+ {
+ *bmLinkLossSlot |= r6;
+ *linkLossReason = sp08; // why not directly use REASON_LINK_LOSS?
+ }
+ }
+ else
+ {
+ STWI_send_SystemStatusREQ();
+ if (STWI_poll_CommandEnd() == 0)
+ {
+ if (gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0)
+ {
+ *bmLinkLossSlot |= r6;
+ *linkLossReason = sp08; // why not directly use REASON_LINK_LOSS?
+ }
+ else
+ {
+ if (++gRfuStatic->linkEmergencyFlag[i] > gRfuStatic->unk_1a)
+ {
+ gRfuStatic->linkEmergencyFlag[i] = 0;
+ STWI_send_DisconnectREQ(gRfuLinkStatus->connSlotFlag);
+ STWI_poll_CommandEnd();
+ *bmLinkLossSlot |= r6;
+ *linkLossReason = sp08; // why not directly use REASON_LINK_LOSS?
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ gRfuStatic->linkEmergencyFlag[i] = sp0C; // why not directly use 0?
+ }
+ }
+ if (gRfuLinkStatus->parentChild == MODE_PARENT && gRfuLinkStatus->strength[i] != 0)
+ {
+ if (r6 & gRfuLinkStatus->linkLossSlotFlag)
+ {
+ if (gRfuLinkStatus->strength[i] > 10)
+ {
+ *parentBmLinkRecoverySlot |= r6;
+ gRfuLinkStatus->connSlotFlag |= r6;
+ gRfuLinkStatus->linkLossSlotFlag &= ~r6;
+ ++gRfuLinkStatus->connCount;
+ gRfuStatic->linkEmergencyFlag[i] = 0;
+ }
+ else
+ {
+ gRfuLinkStatus->strength[i] = 0;
+ }
+ }
+ else
+ {
+ if (!((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) & r6))
+ {
+ STWI_send_SlotStatusREQ();
+ STWI_poll_CommandEnd();
+ r2 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data;
+ r3 = r2[1] - 1;
+ for (r2 += 8; r3 != 0; r2 += 4, --r3)
+ {
+ u16 r4 = *(u16 *)r2;
+
+ if (r2[2] == i && r4 == gRfuStatic->cidBak[i])
+ {
+ r9 |= 1 << i;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ connSlotFlag = gRfuLinkStatus->connSlotFlag;
+ r0 = *bmLinkLossSlot;
+ r0 &= connSlotFlag;
+ if (r6 & r0)
+ rfu_STC_removeLinkData(i, 0);
+ }
+ if (r9 != 0)
+ {
+ STWI_send_DisconnectREQ(r9);
+ STWI_poll_CommandEnd();
+ }
+ // equivalent to:
+ // gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.command = sp10;
+ *(u32 *)gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data = sp10;
+ gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0] = sp14;
+ return 0;
+}
+
+static void rfu_STC_removeLinkData(u8 r7, u8 r12)
+{
+ u8 r5 = 1 << r7;
+ s32 r6;
+
+ if ((gRfuLinkStatus->connSlotFlag & r5) && gRfuLinkStatus->connCount != 0)
+ --gRfuLinkStatus->connCount;
+ gRfuLinkStatus->connSlotFlag &= r6 = ~r5;
+ gRfuLinkStatus->linkLossSlotFlag |= r5;
+ if ((*(u32 *)gRfuLinkStatus & 0xFF00FF) == 0)
+ gRfuLinkStatus->parentChild = MODE_NEUTRAL;
+ if (r12 != 0)
+ {
+ CpuFill16(0, &gRfuLinkStatus->partner[r7], sizeof(struct RfuTgtData));
+ gRfuLinkStatus->linkLossSlotFlag &= r6;
+ gRfuLinkStatus->getNameFlag &= r6;
+ gRfuLinkStatus->strength[r7] = 0;
+ }
+}
+
+void rfu_REQ_disconnect(u8 bmDisconnectSlot)
+{
+ u16 r1;
+
+ if ((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) & bmDisconnectSlot)
+ {
+ gRfuStatic->recoveryBmSlot = bmDisconnectSlot;
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL && gRfuStatic->flags & 0x80)
+ {
+ if (gRfuLinkStatus->linkLossSlotFlag & bmDisconnectSlot)
+ rfu_CB_disconnect(48, 0);
+ }
+ else if (gRfuStatic->SCStartFlag
+ && (STWI_set_Callback_M(rfu_CB_defaultCallback),
+ STWI_send_SC_EndREQ(),
+ (r1 = STWI_poll_CommandEnd()) != 0))
+ {
+ rfu_STC_REQ_callback(27, r1);
+ }
+ else
+ {
+ STWI_set_Callback_M(rfu_CB_disconnect);
+ STWI_send_DisconnectREQ(bmDisconnectSlot);
+ }
+ }
+}
+
+static void rfu_CB_disconnect(u8 r6, u16 r5)
+{
+ u8 r4, r0;
+
+ if (r5 == 3 && gRfuLinkStatus->parentChild == MODE_CHILD)
+ {
+ STWI_set_Callback_M(rfu_CB_defaultCallback);
+ STWI_send_SystemStatusREQ();
+ if (STWI_poll_CommandEnd() == 0 && gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[7] == 0)
+ r5 = 0;
+ }
+ gRfuStatic->recoveryBmSlot &= gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag;
+ gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[8] = gRfuStatic->recoveryBmSlot;
+ if (r5 == 0)
+ {
+ for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4)
+ {
+ r0 = 1 << r4;
+ if (r0 & gRfuStatic->recoveryBmSlot)
+ rfu_STC_removeLinkData(r4, 1);
+ }
+ }
+ if ((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) == 0)
+ gRfuLinkStatus->parentChild = MODE_NEUTRAL;
+ rfu_STC_REQ_callback(r6, r5);
+ if (gRfuStatic->SCStartFlag)
+ {
+ STWI_set_Callback_M(rfu_CB_defaultCallback);
+ STWI_send_SC_StartREQ();
+ r5 = STWI_poll_CommandEnd();
+ if (r5 != 0)
+ rfu_STC_REQ_callback(25, r5);
+ }
+}
+
+void rfu_REQ_CHILD_startConnectRecovery(u8 bmRecoverySlot)
+{
+ u8 i;
+
+ gRfuStatic->recoveryBmSlot = bmRecoverySlot;
+ for (i = 0; i < RFU_CHILD_MAX && !((bmRecoverySlot >> i) & 1); ++i)
+ ;
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ // if i == 4, gRfuLinkStatus->partner[i].id becomes gRfuLinkStatus->my.id
+ STWI_send_CPR_StartREQ(gRfuLinkStatus->partner[i].id, gRfuLinkStatus->my.id, bmRecoverySlot);
+}
+
+void rfu_REQ_CHILD_pollConnectRecovery(void)
+{
+ STWI_set_Callback_M(rfu_CB_CHILD_pollConnectRecovery);
+ STWI_send_CPR_PollingREQ();
+}
+
+static void rfu_CB_CHILD_pollConnectRecovery(u8 r8, u16 r7)
+{
+ u8 r3, r4;
+ struct RfuLinkStatus *r2;
+
+ if (r7 == 0 && gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4] == 0 && gRfuStatic->recoveryBmSlot)
+ {
+ gRfuLinkStatus->parentChild = MODE_CHILD;
+ for (r4 = 0; r4 < NELEMS(gRfuStatic->linkEmergencyFlag); ++r4)
+ {
+ r3 = 1 << r4;
+ r2 = gRfuLinkStatus; // ???
+ if (gRfuStatic->recoveryBmSlot & r3 & r2->linkLossSlotFlag)
+ {
+ gRfuLinkStatus->connSlotFlag |= r3;
+ gRfuLinkStatus->linkLossSlotFlag &= ~r3;
+ ++gRfuLinkStatus->connCount;
+ gRfuStatic->linkEmergencyFlag[r4] = 0;
+ }
+ }
+ gRfuStatic->recoveryBmSlot = 0;
+ }
+ rfu_STC_REQ_callback(r8, r7);
+}
+
+u16 rfu_CHILD_getConnectRecoveryStatus(u8 *status)
+{
+ u8 r0;
+
+ *status = 0xFF;
+ r0 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[0] + 77;
+ if (r0 <= 1)
+ {
+ *status = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4];
+ return 0;
+ }
+ return ERR_REQ_CMD_ID;
+}
+
+void rfu_REQ_CHILD_endConnectRecovery(void)
+{
+ STWI_set_Callback_M(rfu_CB_CHILD_pollConnectRecovery);
+ STWI_send_CPR_EndREQ();
+}
+
+static void rfu_STC_fastCopy(const u8 **src_p, u8 **dst_p, s32 size)
+{
+ const u8 *src = *src_p;
+ u8 *dst = *dst_p;
+ s32 i;
+
+ for (i = size - 1; i != -1; --i)
+ *dst++ = *src++;
+ *src_p = src;
+ *dst_p = dst;
+}
+
+void rfu_REQ_changeMasterSlave(void)
+{
+ if (STWI_read_status(1) == 1)
+ {
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ STWI_send_MS_ChangeREQ();
+ }
+ else
+ {
+ rfu_STC_REQ_callback(39, 0);
+ }
+}
+
+bool8 rfu_getMasterSlave(void)
+{
+ bool8 masterSlave = STWI_read_status(1);
+
+ if (masterSlave == AGB_CLK_MASTER)
+ {
+ if (gSTWIStatus->unk_2c)
+ {
+ if (gSTWIStatus->reqActiveCommand == 39
+ || gSTWIStatus->reqActiveCommand == 37
+ || gSTWIStatus->reqActiveCommand == 55)
+ masterSlave = AGB_CLK_SLAVE;
+ }
+ }
+ return masterSlave;
+}
+
+void rfu_clearAllSlot(void)
+{
+ u16 i;
+ u16 IMEBackup = REG_IME;
+
+ REG_IME = 0;
+ for (i = 0; i < RFU_CHILD_MAX; ++i)
+ {
+ CpuFill16(0, gRfuSlotStatusNI[i], 2 * sizeof(struct NIComm));
+ CpuFill16(0, gRfuSlotStatusUNI[i], sizeof(struct UNISend) + sizeof(struct UNIRecv));
+ gRfuLinkStatus->remainLLFrameSizeChild[i] = 16;
+ }
+ gRfuLinkStatus->remainLLFrameSizeParent = LLF_P_SIZE;
+ gRfuLinkStatus->sendSlotNIFlag = 0;
+ gRfuLinkStatus->recvSlotNIFlag = 0;
+ gRfuLinkStatus->sendSlotUNIFlag = 0;
+ gRfuStatic->recvRenewalFlag = 0;
+ REG_IME = IMEBackup;
+}
+
+static void rfu_STC_releaseFrame(u8 r5, u8 r3, struct NIComm *r4)
+{
+
+ if (!(gRfuStatic->flags & 0x80))
+ {
+ if (r3 == 0)
+ gRfuLinkStatus->remainLLFrameSizeParent += r4->payloadSize;
+ gRfuLinkStatus->remainLLFrameSizeParent += 3;
+ }
+ else
+ {
+ if (r3 == 0)
+ gRfuLinkStatus->remainLLFrameSizeChild[r5] += r4->payloadSize;
+ gRfuLinkStatus->remainLLFrameSizeChild[r5] += 2;
+ }
+}
+
+u16 rfu_clearSlot(u8 connTypeFlag, u8 slotStatusIndex)
+{
+ u16 r10, r3, r1;
+ struct NIComm *r4;
+
+ if (slotStatusIndex >= RFU_CHILD_MAX)
+ return ERR_SLOT_NO;
+ if (!(connTypeFlag & (TYPE_UNI_SEND | TYPE_UNI_RECV | TYPE_NI_SEND | TYPE_NI_RECV)))
+ return ERR_COMM_TYPE;
+ r10 = REG_IME;
+ REG_IME = 0;
+ if (connTypeFlag & (TYPE_NI_SEND | TYPE_NI_RECV))
+ {
+ for (r3 = 0; r3 < 2; ++r3)
+ {
+ r4 = NULL;
+ if (r3 == 0)
+ {
+ if (connTypeFlag & TYPE_NI_SEND)
+ {
+ r4 = &gRfuSlotStatusNI[slotStatusIndex]->send;
+ gRfuLinkStatus->sendSlotNIFlag &= ~r4->bmSlotOrg;
+ }
+ }
+ else
+ {
+ if (connTypeFlag & TYPE_NI_RECV)
+ {
+ r4 = &gRfuSlotStatusNI[slotStatusIndex]->recv;
+ gRfuLinkStatus->recvSlotNIFlag &= ~(1 << slotStatusIndex);
+ }
+ }
+ if (r4 != NULL)
+ {
+ if (r4->state & SLOT_BUSY_FLAG)
+ {
+ rfu_STC_releaseFrame(slotStatusIndex, r3, r4);
+ for (r1 = 0; r1 < RFU_CHILD_MAX; ++r1)
+ if ((r4->bmSlotOrg >> r1) & 1)
+ r4->failCounter = 0;
+ }
+ CpuFill16(0, r4, sizeof(struct NIComm));
+ }
+ }
+ }
+ if (connTypeFlag & TYPE_UNI_SEND)
+ {
+ struct RfuSlotStatusUNI *r3 = gRfuSlotStatusUNI[slotStatusIndex];
+
+ if (r3->send.state & SLOT_BUSY_FLAG)
+ {
+ if (!(gRfuStatic->flags & 0x80))
+ gRfuLinkStatus->remainLLFrameSizeParent += 3 + (u8)r3->send.payloadSize;
+ else
+ gRfuLinkStatus->remainLLFrameSizeChild[slotStatusIndex] += 2 + (u8)r3->send.payloadSize;
+ gRfuLinkStatus->sendSlotUNIFlag &= ~r3->send.bmSlot;
+ }
+ CpuFill16(0, &r3->send, sizeof(struct UNISend));
+ }
+ if (connTypeFlag & TYPE_UNI_RECV)
+ {
+ CpuFill16(0, &gRfuSlotStatusUNI[slotStatusIndex]->recv, sizeof(struct UNIRecv));
+ }
+ REG_IME = r10;
+ return 0;
+}
+
+u16 rfu_setRecvBuffer(u8 connType, u8 slotNo, void *buffer, u32 buffSize)
+{
+ if (slotNo >= RFU_CHILD_MAX)
+ return ERR_SLOT_NO;
+ if (connType & TYPE_NI)
+ {
+ gRfuSlotStatusNI[slotNo]->recvBuffer = buffer;
+ gRfuSlotStatusNI[slotNo]->recvBufferSize = buffSize;
+ }
+ else if (!(connType & TYPE_UNI))
+ {
+ return ERR_COMM_TYPE;
+ }
+ else
+ {
+ gRfuSlotStatusUNI[slotNo]->recvBuffer = buffer;
+ gRfuSlotStatusUNI[slotNo]->recvBufferSize = buffSize;
+ }
+ return 0;
+}
+
+u16 rfu_NI_setSendData(u8 bmSendSlot, u8 subFrameSize, const void *src, u32 size)
+{
+ return rfu_STC_setSendData_org(32, bmSendSlot, subFrameSize, src, size);
+}
+
+u16 rfu_UNI_setSendData(u8 bmSendSlot, const void *src, u8 size)
+{
+ u8 subFrameSize;
+
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ subFrameSize = size + 3;
+ else
+ subFrameSize = size + 2;
+ return rfu_STC_setSendData_org(16, bmSendSlot, subFrameSize, src, 0);
+}
+
+u16 rfu_NI_CHILD_setSendGameName(u8 slotNo, u8 subFrameSize)
+{
+ return rfu_STC_setSendData_org(64, 1 << slotNo, subFrameSize, &gRfuLinkStatus->my.serialNo, 26);
+}
+
+static u16 rfu_STC_setSendData_org(u8 r6, u8 bmSendSlot, u8 subFrameSize, const void *src, u32 sp28)
+{
+ u8 r2, r0;
+ u8 r4;
+ u8 *r9;
+ u8 r5;
+ u8 i;
+ u16 sp04;
+ struct RfuSlotStatusUNI *r1;
+ struct RfuSlotStatusNI *r12;
+
+ if (gRfuLinkStatus->parentChild == MODE_NEUTRAL)
+ return ERR_MODE_NOT_CONNECTED;
+ if (!(bmSendSlot & 0xF))
+ return ERR_SLOT_NO;
+ if (((gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag) & bmSendSlot) != bmSendSlot)
+ return ERR_SLOT_NOT_CONNECTED;
+ if (r6 & 0x10)
+ r0 = gRfuLinkStatus->sendSlotUNIFlag;
+ else
+ r0 = gRfuLinkStatus->sendSlotNIFlag;
+ if (r0 & bmSendSlot)
+ return ERR_SLOT_BUSY;
+ for (r2 = 0; r2 < RFU_CHILD_MAX && !((bmSendSlot >> r2) & 1); ++r2)
+ ;
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ r9 = &gRfuLinkStatus->remainLLFrameSizeParent;
+ else if (gRfuLinkStatus->parentChild == MODE_CHILD)
+ r9 = &gRfuLinkStatus->remainLLFrameSizeChild[r2];
+ r4 = llsf_struct[gRfuLinkStatus->parentChild].unk00;
+ if (subFrameSize > *r9 || subFrameSize <= r4)
+ return ERR_SUBFRAME_SIZE;
+ sp04 = REG_IME;
+ REG_IME = 0;
+ r5 = r6 & 0x20;
+ if (r5 || r6 == 0x40)
+ {
+ u8 *r1; // a hack to swap instructions
+
+ r12 = gRfuSlotStatusNI[r2];
+ r1 = NULL;
+ r12->send.errorCode = 0;
+ *r12->send.now_p = r1 = &r12->send.dataType;
+ r12->send.remainSize = 7;
+ r12->send.bmSlotOrg = bmSendSlot;
+ r12->send.bmSlot = bmSendSlot;
+ r12->send.payloadSize = subFrameSize - r4;
+ if (r5 != 0)
+ *r1 = 0;
+ else
+ *r1 = 1;
+ r12->send.dataSize = sp28;
+ r12->send.src = src;
+ r12->send.ack = 0;
+ r12->send.phase = 0;
+ #ifndef NONMATCHING // to fix r2, r3, r4, r5 register roulette
+ asm("":::"r2");
+ #endif
+ for (i = 0; i < WINDOW_COUNT; ++i)
+ {
+ r12->send.recvAckFlag[i] = 0;
+ r12->send.n[i] = 1;
+ }
+ for (r2 = 0; r2 < RFU_CHILD_MAX; ++r2)
+ if ((bmSendSlot >> r2) & 1)
+ gRfuSlotStatusNI[r2]->send.failCounter = 0;
+ gRfuLinkStatus->sendSlotNIFlag |= bmSendSlot;
+ *r9 -= subFrameSize;
+ r12->send.state = SLOT_STATE_SEND_START;
+ }
+ else if (r6 & 0x10)
+ {
+ r1 = gRfuSlotStatusUNI[r2];
+ r1->send.bmSlot = bmSendSlot;
+ r1->send.src = src;
+ r1->send.payloadSize = subFrameSize - r4;
+ *r9 -= subFrameSize;
+ r1->send.state = SLOT_STATE_SEND_UNI;
+ gRfuLinkStatus->sendSlotUNIFlag |= bmSendSlot;
+ }
+ REG_IME = sp04;
+ return 0;
+}
+
+u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot)
+{
+ struct RfuSlotStatusNI *r5;
+ u16 r8;
+ u8 r2;
+
+ if (slotStatusIndex >= RFU_CHILD_MAX)
+ return ERR_SLOT_NO;
+ if (connType == 0x20)
+ {
+ r5 = gRfuSlotStatusNI[slotStatusIndex];
+ if ((r5->send.state & SLOT_BUSY_FLAG)
+ && (r5->send.state & SLOT_SEND_FLAG))
+ {
+ connType = bmNewTgtSlot ^ r5->send.bmSlot;
+
+ if (!(connType & bmNewTgtSlot))
+ {
+ if (connType)
+ {
+ r8 = REG_IME;
+ REG_IME = 0;
+ for (r2 = 0; r2 < RFU_CHILD_MAX; ++r2)
+ {
+ if ((connType >> r2) & 1)
+ gRfuSlotStatusNI[r2]->send.failCounter = 0;
+ }
+ gRfuLinkStatus->sendSlotNIFlag &= ~connType;
+ r5->send.bmSlot = bmNewTgtSlot;
+ if (r5->send.bmSlot == 0)
+ {
+ rfu_STC_releaseFrame(slotStatusIndex, 0, &r5->send);
+ r5->send.state = SLOT_STATE_SEND_FAILED;
+ }
+ REG_IME = r8;
+ }
+ }
+ else
+ {
+ return ERR_SLOT_TARGET;
+ }
+ }
+ else
+ {
+ return ERR_SLOT_NOT_SENDING;
+ }
+ }
+ else
+ {
+ if (connType == 16)
+ {
+ s32 r3;
+
+ if (gRfuSlotStatusUNI[slotStatusIndex]->send.state != SLOT_STATE_SEND_UNI)
+ return ERR_SLOT_NOT_SENDING;
+ for (r3 = 0, r2 = 0; r2 < RFU_CHILD_MAX; ++r2)
+ if (r2 != slotStatusIndex)
+ r3 |= gRfuSlotStatusUNI[r2]->send.bmSlot;
+ if (bmNewTgtSlot & r3)
+ return ERR_SLOT_TARGET;
+ r8 = REG_IME;
+ REG_IME = 0;
+ gRfuLinkStatus->sendSlotUNIFlag &= ~gRfuSlotStatusUNI[slotStatusIndex]->send.bmSlot;
+ gRfuLinkStatus->sendSlotUNIFlag |= bmNewTgtSlot;
+ gRfuSlotStatusUNI[slotStatusIndex]->send.bmSlot = bmNewTgtSlot;
+ REG_IME = r8;
+ }
+ else
+ {
+ return ERR_COMM_TYPE;
+ }
+ }
+ return 0;
+}
+
+u16 rfu_NI_stopReceivingData(u8 slotStatusIndex)
+{
+ struct NIComm *r5;
+ u16 r4, r1;
+
+ if (slotStatusIndex >= RFU_CHILD_MAX)
+ return ERR_SLOT_NO;
+ r5 = &gRfuSlotStatusNI[slotStatusIndex]->recv;
+ r4 = REG_IME;
+ ++r4; --r4; // fix r4, r5 register swap
+ REG_IME = 0;
+ if (gRfuSlotStatusNI[slotStatusIndex]->recv.state & SLOT_BUSY_FLAG)
+ {
+ if (gRfuSlotStatusNI[slotStatusIndex]->recv.state == SLOT_STATE_RECV_LAST)
+ gRfuSlotStatusNI[slotStatusIndex]->recv.state = SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN;
+ else
+ gRfuSlotStatusNI[slotStatusIndex]->recv.state = SLOT_STATE_RECV_FAILED;
+ gRfuLinkStatus->recvSlotNIFlag &= ~(1 << slotStatusIndex);
+ rfu_STC_releaseFrame(slotStatusIndex, 1, r5);
+ }
+ REG_IME = r4;
+ return 0;
+}
+
+u16 rfu_UNI_changeAndReadySendData(u8 slotStatusIndex, const void *src, u8 size)
+{
+ struct UNISend *r4;
+ u8 *r6;
+ u16 r1;
+ u8 r3_;
+
+ if (slotStatusIndex >= RFU_CHILD_MAX)
+ return ERR_SLOT_NO;
+ r4 = &gRfuSlotStatusUNI[slotStatusIndex]->send;
+ if (r4->state != SLOT_STATE_SEND_UNI)
+ return ERR_SLOT_NOT_SENDING;
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ r6 = &gRfuLinkStatus->remainLLFrameSizeParent;
+ r3_ = gRfuLinkStatus->remainLLFrameSizeParent + (u8)r4->payloadSize;
+ }
+ else
+ {
+ r6 = &gRfuLinkStatus->remainLLFrameSizeChild[slotStatusIndex];
+ r3_ = gRfuLinkStatus->remainLLFrameSizeChild[slotStatusIndex] + (u8)r4->payloadSize;
+ }
+ if (r3_ < size)
+ return ERR_SUBFRAME_SIZE;
+ r1 = REG_IME;
+ REG_IME = 0;
+ r4->src = src;
+ *r6 = r3_ - size;
+ r4->payloadSize = size;
+ r4->dataReadyFlag = 1;
+ REG_IME = r1;
+ return 0;
+}
+
+void rfu_UNI_readySendData(u8 slotStatusIndex)
+{
+ if (slotStatusIndex < RFU_CHILD_MAX)
+ {
+ if (gRfuSlotStatusUNI[slotStatusIndex]->send.state == SLOT_STATE_SEND_UNI)
+ gRfuSlotStatusUNI[slotStatusIndex]->send.dataReadyFlag = 1;
+ }
+}
+
+void rfu_UNI_clearRecvNewDataFlag(u8 slotStatusIndex)
+{
+ if (slotStatusIndex < RFU_CHILD_MAX)
+ gRfuSlotStatusUNI[slotStatusIndex]->recv.newDataFlag = 0;
+}
+
+void rfu_REQ_sendData(u8 clockChangeFlag)
+{
+ if (gRfuLinkStatus->parentChild != MODE_NEUTRAL)
+ {
+ if (gRfuLinkStatus->parentChild == 1
+ && !(gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag))
+ {
+ if (gRfuStatic->commExistFlag)
+ {
+ gRfuStatic->emberCount = 16;
+ gRfuStatic->nullFrameCount = 0;
+ }
+ if (gRfuStatic->emberCount)
+ --gRfuStatic->emberCount;
+ else
+ ++gRfuStatic->nullFrameCount;
+ if (gRfuStatic->emberCount
+ || !(gRfuStatic->nullFrameCount & 0xF))
+ {
+ gRfuFixed->LLFBuffer[0] = 1;
+ gRfuFixed->LLFBuffer[4] = 0xFF;
+ STWI_set_Callback_M(rfu_CB_sendData3);
+ if (clockChangeFlag == 0)
+ STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, 1);
+ else
+ STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, 1);
+ return;
+ }
+ }
+ else
+ {
+ if (!gRfuLinkStatus->LLFReadyFlag)
+ rfu_constructSendLLFrame();
+ if (gRfuLinkStatus->LLFReadyFlag)
+ {
+ STWI_set_Callback_M(rfu_CB_sendData);
+ if (clockChangeFlag != 0)
+ {
+ STWI_send_DataTxAndChangeREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4);
+ return;
+ }
+ STWI_send_DataTxREQ(gRfuFixed->LLFBuffer, gRfuStatic->totalPacketSize + 4);
+ }
+ }
+ if (clockChangeFlag != 0)
+ {
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ if (gSTWIStatus->callbackS != NULL)
+ gSTWIStatus->callbackS(39);
+ }
+ else
+ {
+ STWI_set_Callback_M(rfu_CB_sendData2);
+ STWI_send_MS_ChangeREQ();
+ }
+ }
+ }
+}
+
+static void rfu_CB_sendData(UNUSED u8 r0, u16 r7)
+{
+ u8 r6;
+ struct NIComm *r4;
+
+ if (r7 == 0)
+ {
+ for (r6 = 0; r6 < RFU_CHILD_MAX; ++r6)
+ {
+ if (gRfuSlotStatusUNI[r6]->send.dataReadyFlag)
+ gRfuSlotStatusUNI[r6]->send.dataReadyFlag = 0;
+ r4 = &gRfuSlotStatusNI[r6]->send;
+ if (r4->state == SLOT_STATE_SEND_NULL)
+ {
+ rfu_STC_releaseFrame(r6, 0, r4);
+ gRfuLinkStatus->sendSlotNIFlag &= ~r4->bmSlot;
+ if (r4->dataType == 1)
+ gRfuLinkStatus->getNameFlag |= 1 << r6;
+ r4->state = SLOT_STATE_SEND_SUCCESS;
+ }
+ }
+ }
+ gRfuLinkStatus->LLFReadyFlag = 0;
+ rfu_STC_REQ_callback(36, r7);
+}
+
+static void rfu_CB_sendData2(UNUSED u8 r0, u16 r1)
+{
+ rfu_STC_REQ_callback(36, r1);
+}
+
+static void rfu_CB_sendData3(u8 r0, u16 r1)
+{
+ if (r1 != 0)
+ rfu_STC_REQ_callback(36, r1);
+ else if (r0 == 0xFF)
+ rfu_STC_REQ_callback(0xFF, 0);
+}
+
+static void rfu_constructSendLLFrame(void)
+{
+ u32 r8, r5;
+ u8 r6;
+ u8 *sp00;
+ struct RfuSlotStatusNI *r2;
+
+ if (gRfuLinkStatus->parentChild != MODE_NEUTRAL
+ && gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag)
+ {
+ gRfuLinkStatus->LLFReadyFlag = 0;
+ r8 = 0;
+ sp00 = (u8 *)&gRfuFixed->LLFBuffer[1];
+ for (r6 = 0; r6 < RFU_CHILD_MAX; ++r6)
+ {
+ r5 = 0;
+ if (gRfuSlotStatusNI[r6]->send.state & SLOT_BUSY_FLAG)
+ r5 = rfu_STC_NI_constructLLSF(r6, &sp00, &gRfuSlotStatusNI[r6]->send);
+ if (gRfuSlotStatusNI[r6]->recv.state & SLOT_BUSY_FLAG)
+ r5 += rfu_STC_NI_constructLLSF(r6, &sp00, &gRfuSlotStatusNI[r6]->recv);
+ if (gRfuSlotStatusUNI[r6]->send.state == SLOT_STATE_SEND_UNI)
+ r5 += rfu_STC_UNI_constructLLSF(r6, &sp00);
+ if (r5 != 0)
+ {
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ r8 += r5;
+ else
+ r8 |= r5 << (5 * r6 + 8);
+ }
+ }
+ if (r8 != 0)
+ {
+ while ((u32)sp00 & 3)
+ *sp00++ = 0;
+ gRfuFixed->LLFBuffer[0] = r8;
+ if (gRfuLinkStatus->parentChild == MODE_CHILD)
+ {
+ u8 *r0 = sp00 - offsetof(struct RfuFixed, LLFBuffer[1]);
+
+ // Does the volatile qualifier make sense?
+ // It's the same as:
+ // asm("":::"memory");
+ r8 = r0 - *(u8 *volatile *)&gRfuFixed;
+ }
+ }
+ gRfuStatic->totalPacketSize = r8;
+ }
+}
+
+static u16 rfu_STC_NI_constructLLSF(u8 r10, u8 **r12, struct NIComm *r4)
+{
+ u16 r5;
+ u32 sp00;
+ u8 i;
+ u8 *r2;
+ const struct LLSFStruct *r8 = &llsf_struct[gRfuLinkStatus->parentChild];
+
+ if (r4->state == SLOT_STATE_SENDING)
+ {
+ while (r4->now_p[r4->phase] >= (const u8 *)r4->src + r4->dataSize)
+ {
+ ++r4->phase;
+ if (r4->phase == 4)
+ r4->phase = 0;
+ }
+ }
+ if (r4->state & SLOT_RECV_FLAG)
+ {
+ r5 = 0;
+ }
+ else if (r4->state == SLOT_STATE_SENDING)
+ {
+ if (r4->now_p[r4->phase] + r4->payloadSize > (const u8 *)r4->src + r4->dataSize)
+ r5 = (const u8 *)r4->src + r4->dataSize - r4->now_p[r4->phase];
+ else
+ r5 = r4->payloadSize;
+ }
+ else
+ {
+ if ((u32)r4->remainSize >= r4->payloadSize)
+ r5 = r4->payloadSize;
+ else
+ r5 = r4->remainSize;
+ }
+ sp00 = (r4->state & 0xF) << r8->unk03
+ | r4->ack << r8->unk04
+ | r4->phase << r8->unk05
+ | r4->n[r4->phase] << r8->unk06
+ | r5;
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ sp00 |= r4->bmSlot << 18;
+ r2 = (u8 *)&sp00;
+ for (i = 0; i < r8->unk00; ++i)
+ *(*r12)++ = *r2++;
+ if (r5 != 0)
+ {
+ const u8 *sp04 = r4->now_p[r4->phase];
+
+ gRfuFixed->fastCopyPtr(&sp04, r12, r5);
+ }
+ if (r4->state == SLOT_STATE_SENDING)
+ {
+ ++r4->phase;
+ if (r4->phase == 4)
+ r4->phase = 0;
+ }
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ gRfuLinkStatus->LLFReadyFlag = 1;
+ else
+ gRfuLinkStatus->LLFReadyFlag |= 1 << r10;
+ return r5 + r8->unk00;
+}
+
+static u16 rfu_STC_UNI_constructLLSF(u8 r8, u8 **r6)
+{
+ const struct LLSFStruct *r5;
+ const u8 *sp04;
+ u32 sp00;
+ u8 *r2;
+ u8 i;
+ struct UNISend *r4 = &gRfuSlotStatusUNI[r8]->send;
+
+ if (!r4->dataReadyFlag || !r4->bmSlot)
+ return 0;
+ r5 = &llsf_struct[gRfuLinkStatus->parentChild];
+ sp00 = (r4->state & 0xF) << r5->unk03
+ | r4->payloadSize;
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ sp00 |= r4->bmSlot << 18;
+ r2 = (u8 *)&sp00;
+ for (i = 0; i < r5->unk00; ++i)
+ *(*r6)++ = *r2++;
+ sp04 = r4->src;
+ gRfuFixed->fastCopyPtr(&sp04, r6, r4->payloadSize);
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ gRfuLinkStatus->LLFReadyFlag = 16;
+ else
+ gRfuLinkStatus->LLFReadyFlag |= 16 << r8;
+ return r5->unk00 + r4->payloadSize;
+}
+
+void rfu_REQ_recvData(void)
+{
+ if (gRfuLinkStatus->parentChild != MODE_NEUTRAL)
+ {
+ gRfuStatic->commExistFlag = gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag | gRfuLinkStatus->sendSlotUNIFlag;
+ gRfuStatic->recvErrorFlag = 0;
+ STWI_set_Callback_M(rfu_CB_recvData);
+ STWI_send_DataRxREQ();
+ }
+}
+
+static void rfu_CB_recvData(u8 r9, u16 r7)
+{
+ u8 r6;
+ struct RfuSlotStatusNI *r4;
+ struct NIComm *r5;
+
+ if (r7 == 0 && gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[1])
+ {
+ gRfuStatic->NIEndRecvFlag = 0;
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ rfu_STC_PARENT_analyzeRecvPacket();
+ else
+ rfu_STC_CHILD_analyzeRecvPacket();
+ for (r6 = 0; r6 < RFU_CHILD_MAX; ++r6)
+ {
+ r4 = gRfuSlotStatusNI[r6];
+ if (r4->recv.state == SLOT_STATE_RECV_LAST && !((gRfuStatic->NIEndRecvFlag >> r6) & 1))
+ {
+ r5 = &r4->recv;
+ if (r5->dataType == 1)
+ gRfuLinkStatus->getNameFlag |= 1 << r6;
+ rfu_STC_releaseFrame(r6, 1, r5);
+ gRfuLinkStatus->recvSlotNIFlag &= ~r5->bmSlot;
+ r4->recv.state = SLOT_STATE_RECV_SUCCESS;
+ }
+ }
+ if (gRfuStatic->recvErrorFlag)
+ r7 = gRfuStatic->recvErrorFlag | ERR_DATA_RECV;
+ }
+ rfu_STC_REQ_callback(r9, r7);
+}
+
+static void rfu_STC_PARENT_analyzeRecvPacket(void)
+{
+ u32 r3;
+ u8 r5;
+ u8 sp[4];
+ u8 *r6;
+
+ r3 = gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0] >> 8;
+ for (r5 = 0; r5 < NELEMS(sp); ++r5)
+ {
+ sp[r5] = r3 & 0x1F;
+ r3 >>= 5;
+ if (sp[r5] == 0)
+ gRfuStatic->NIEndRecvFlag |= 1 << r5;
+ }
+ r6 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[8];
+ for (r5 = 0; r5 < NELEMS(sp); ++r5)
+ {
+ if (sp[r5])
+ {
+ u8 *r4 = &sp[r5];
+
+ do
+ {
+ u8 r0 = rfu_STC_analyzeLLSF(r5, r6, *r4);
+
+ r6 += r0;
+ *r4 -= r0;
+ } while (!(*r4 & 0x80) && (*r4));
+ }
+ }
+}
+
+static void rfu_STC_CHILD_analyzeRecvPacket(void)
+{
+ u16 r4;
+ u8 *r5;
+ u16 r0;
+
+ r4 = *(u16 *)&gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4] & 0x7F;
+ r5 = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[8];
+ if (r4 == 0)
+ gRfuStatic->NIEndRecvFlag = 15;
+ do
+ {
+ if (r4 == 0)
+ break;
+ r0 = rfu_STC_analyzeLLSF(0, r5, r4);
+ r5 += r0;
+ r4 -= r0;
+ } while (!(r4 & 0x8000));
+}
+
+static u16 rfu_STC_analyzeLLSF(u8 r12, const u8 *r7, u16 r3)
+{
+ struct RfuLocalStruct sp00;
+ const struct LLSFStruct *r6;
+ u32 r5;
+ u8 r4;
+ u32 r0;
+ u16 r10;
+
+ r6 = &llsf_struct[~gRfuLinkStatus->parentChild & (MODE_NEUTRAL & MODE_PARENT)];
+ if (r3 < r6->unk00)
+ return r3;
+ r5 = 0;
+ for (r4 = 0; r4 < r6->unk00; ++r4)
+ r5 |= *r7++ << 8 * r4;
+ sp00.unk00 = (r5 >> r6->unk01) & r6->unk07;
+ sp00.unk01 = (r5 >> r6->unk02) & r6->unk08;
+ sp00.unk02 = (r5 >> r6->unk03) & r6->unk09;
+ sp00.unk03 = (r5 >> r6->unk04) & r6->unk0A;
+ sp00.unk04 = (r5 >> r6->unk05) & r6->unk0B;
+ sp00.unk05 = (r5 >> r6->unk06) & r6->unk0C;
+ sp00.unk06 = (r5 & r6->unk0E) & r5;
+ r10 = sp00.unk06 + r6->unk00;
+ if (sp00.unk00 == 0)
+ {
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ if ((gRfuLinkStatus->connSlotFlag >> r12) & 1)
+ {
+ if (sp00.unk02 == 4)
+ {
+ rfu_STC_UNI_receive(r12, &sp00, r7);
+ }
+ else if (sp00.unk03 == 0)
+ {
+ rfu_STC_NI_receive_Receiver(r12, &sp00, r7);
+ }
+ else
+ {
+ for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4)
+ if (((gRfuSlotStatusNI[r4]->send.bmSlot >> r12) & 1)
+ && ((gRfuLinkStatus->sendSlotNIFlag >> r12) & 1))
+ break;
+ if (r4 <= 3)
+ rfu_STC_NI_receive_Sender(r4, r12, &sp00, r7);
+ }
+ }
+ }
+ else
+ {
+ s32 r5 = gRfuLinkStatus->connSlotFlag & sp00.unk01;
+
+ if (r5)
+ {
+ for (r4 = 0; r4 < RFU_CHILD_MAX; ++r4)
+ {
+ if ((r5 >> r4) & 1)
+ {
+ if (sp00.unk02 == 4)
+ rfu_STC_UNI_receive(r4, &sp00, r7);
+ else if (sp00.unk03 == 0)
+ rfu_STC_NI_receive_Receiver(r4, &sp00, r7);
+ else if ((gRfuLinkStatus->sendSlotNIFlag >> r4) & 1)
+ rfu_STC_NI_receive_Sender(r4, r4, &sp00, r7);
+ }
+ }
+ }
+ }
+ }
+ return r10;
+}
+
+static void rfu_STC_UNI_receive(u8 r7, const struct RfuLocalStruct *r6, const u8 *sp00)
+{
+ u8 *sp04;
+ u32 r2;
+ struct RfuSlotStatusUNI *r3 = gRfuSlotStatusUNI[r7];
+ struct UNIRecv *r5 = &r3->recv;
+
+ r5->errorCode = 0;
+ if (gRfuSlotStatusUNI[r7]->recvBufferSize < r6->unk06)
+ {
+ r3->recv.state = SLOT_STATE_RECV_IGNORE;
+ r5->errorCode = ERR_RECV_BUFF_OVER;
+ }
+ else
+ {
+ if (r5->dataBlockFlag)
+ {
+ if (r5->newDataFlag)
+ {
+ r5->errorCode = ERR_RECV_UNK;
+ goto _081E2F0E;
+ }
+ }
+ else
+ {
+ if (r5->newDataFlag)
+ r5->errorCode = ERR_RECV_DATA_OVERWRITED;
+ }
+ r5->state = SLOT_STATE_RECEIVING;
+ r2 = r5->dataSize = r6->unk06;
+ sp04 = gRfuSlotStatusUNI[r7]->recvBuffer;
+ gRfuFixed->fastCopyPtr(&sp00, &sp04, r2);
+ r5->newDataFlag = 1;
+ r5->state = 0;
+ }
+_081E2F0E:
+ if (r5->errorCode)
+ gRfuStatic->recvErrorFlag |= 16 << r7;
+}
+
+static void rfu_STC_NI_receive_Sender(u8 r0, u8 r10, const struct RfuLocalStruct *r6, const u8 *r3)
+{
+ struct NIComm *r12 = &gRfuSlotStatusNI[r0]->send;
+ u16 r9 = r12->state;
+ u8 sp00 = r12->n[r6->unk04];
+ u8 *r8;
+ u8 r4;
+ u16 r2;
+
+ if ((r6->unk02 == 2 && r9 == SLOT_STATE_SENDING)
+ || (r6->unk02 == 1 && r9 == SLOT_STATE_SEND_START)
+ || (r6->unk02 == 3 && r9 == SLOT_STATE_SEND_LAST))
+ {
+ if (r12->n[r6->unk04] == r6->unk05)
+ r12->recvAckFlag[r6->unk04] |= 1 << r10;
+ }
+ if ((r12->recvAckFlag[r6->unk04] & r12->bmSlot) == r12->bmSlot)
+ {
+ r12->n[r6->unk04] = (r12->n[r6->unk04] + 1) & 3;
+ r12->recvAckFlag[r6->unk04] = 0;
+ if ((u16)(r12->state + ~SLOT_STATE_SEND_NULL) <= 1)
+ {
+ if (r12->state == SLOT_STATE_SEND_START)
+ r12->now_p[r6->unk04] += r12->payloadSize;
+ else
+ r12->now_p[r6->unk04] += r12->payloadSize << 2;
+ r12->remainSize -= r12->payloadSize;
+ if (r12->remainSize != 0)
+ if (r12->remainSize >= 0)
+ goto _081E30AE;
+ // Above is a hack to avoid optimization over comparison.
+ // rfu_STC_NI_constructLLSF uses this field as u32.
+ // It's equivalent to the following condition:
+ // if (r12->remainSize == 0 || r12->remainSize < 0)
+ {
+ r12->phase = 0;
+ if (r12->state == SLOT_STATE_SEND_START)
+ {
+ for (r4 = 0; r4 < WINDOW_COUNT; ++r4)
+ {
+ r12->n[r4] = 1;
+ r12->now_p[r4] = r12->src + r12->payloadSize * r4;
+ }
+ r12->remainSize = r12->dataSize;
+ r12->state = SLOT_STATE_SENDING;
+ }
+ else
+ {
+ r12->n[0] = 0;
+ r12->remainSize = 0;
+ r12->state = SLOT_STATE_SEND_LAST;
+ }
+ }
+ _081E30AE:
+ }
+ else if (r12->state == SLOT_STATE_SEND_LAST)
+ {
+ r12->state = SLOT_STATE_SEND_NULL;
+ }
+ }
+ if (r12->state != r9
+ || r12->n[r6->unk04] != sp00
+ || (r12->recvAckFlag[r6->unk04] >> r10) & 1)
+ {
+ r2 = REG_IME;
+ REG_IME = 0;
+ gRfuStatic->recvRenewalFlag |= 16 << r10;
+ gRfuSlotStatusNI[r10]->send.failCounter = 0;
+ REG_IME = r2;
+ }
+}
+
+static void rfu_STC_NI_receive_Receiver(u8 r8, const struct RfuLocalStruct *r6, const u8 *sp00)
+{
+ u16 r2;
+ u32 r7 = 0;
+ struct RfuSlotStatusNI *r4 = gRfuSlotStatusNI[r8];
+ struct NIComm *r5 = &r4->recv;
+ u16 r9 = r4->recv.state;
+ u8 r10 = r4->recv.n[r6->unk04];
+
+ if (r6->unk02 == 3)
+ {
+ gRfuStatic->NIEndRecvFlag |= 1 << r8;
+ if (r4->recv.state == SLOT_STATE_RECEIVING)
+ {
+ r4->recv.phase = 0;
+ r4->recv.n[0] = 0;
+ r4->recv.state = SLOT_STATE_RECV_LAST;
+ }
+ }
+ else if (r6->unk02 == 2)
+ {
+ if (r9 == SLOT_STATE_RECV_START && !r5->remainSize)
+ rfu_STC_NI_initSlot_asRecvDataEntity(r8, r5);
+ if (r5->state == SLOT_STATE_RECEIVING)
+ r7 = 1;
+ }
+ else if (r6->unk02 == 1)
+ {
+ if (r9 == SLOT_STATE_RECV_START)
+ {
+ r7 = 1;
+ }
+ else
+ {
+ rfu_STC_NI_initSlot_asRecvControllData(r8, r5);
+ if (r4->recv.state != SLOT_STATE_RECV_START)
+ return;
+ r7 = 1;
+ }
+ }
+ if (r7 != 0)
+ {
+ if (r6->unk05 == ((r5->n[r6->unk04] + 1) & 3))
+ {
+ gRfuFixed->fastCopyPtr(&sp00, (u8 **)&r5->now_p[r6->unk04], r6->unk06);
+ if (r5->state == SLOT_STATE_RECEIVING)
+ r5->now_p[r6->unk04] += 3 * r5->payloadSize;
+ r5->remainSize -= r6->unk06;
+ r5->n[r6->unk04] = r6->unk05;
+ }
+ }
+ if (r5->errorCode == 0)
+ {
+ r5->phase = r6->unk04;
+ if (r5->state != r9 || r5->n[r6->unk04] != r10 || r5->n[r6->unk04] == r6->unk05)
+ {
+ r2 = REG_IME;
+ REG_IME = 0;
+ gRfuStatic->recvRenewalFlag |= 1 << r8;
+ r5->failCounter = 0;
+ REG_IME = r2;
+ }
+ }
+}
+
+static void rfu_STC_NI_initSlot_asRecvControllData(u8 r4, struct NIComm *r2)
+{
+ u8 *r1;
+ u32 r5;
+ u8 r6;
+
+ if (gRfuLinkStatus->parentChild == MODE_PARENT)
+ {
+ r5 = 3;
+ r1 = &gRfuLinkStatus->remainLLFrameSizeParent;
+ }
+ else
+ {
+ r5 = 2;
+ r1 = &gRfuLinkStatus->remainLLFrameSizeChild[r4];
+ }
+ r6 = 1 << r4;
+ if (r2->state == 0)
+ {
+ if (*r1 < r5)
+ {
+ r2->state = SLOT_STATE_RECV_IGNORE;
+ r2->errorCode = ERR_RECV_REPLY_SUBFRAME_SIZE;
+ gRfuStatic->recvErrorFlag |= r6;
+ }
+ else
+ {
+ r2->errorCode = 0;
+ *r1 -= r5;
+ r2->now_p[0] = &r2->dataType;
+ r2->remainSize = 7;
+ r2->ack = 1;
+ r2->payloadSize = 0;
+ r2->bmSlot = r6;
+ r2->state = SLOT_STATE_RECV_START;
+ gRfuLinkStatus->recvSlotNIFlag |= r6;
+ }
+ }
+}
+
+static void rfu_STC_NI_initSlot_asRecvDataEntity(u8 r5, struct NIComm *r4)
+{
+ u8 r1, r3;
+
+ if (r4->dataType == 1)
+ {
+ r4->now_p[0] = (void *)&gRfuLinkStatus->partner[r5].serialNo;
+ }
+ else
+ {
+ if (r4->dataSize > gRfuSlotStatusNI[r5]->recvBufferSize)
+ {
+ r1 = 1 << r5;
+ gRfuStatic->recvErrorFlag |= r1;
+ gRfuLinkStatus->recvSlotNIFlag &= ~r1;
+ r4->errorCode = ERR_RECV_BUFF_OVER;
+ r4->state = SLOT_STATE_RECV_FAILED;
+ rfu_STC_releaseFrame(r5, 1, r4);
+ return;
+ }
+ r4->now_p[0] = gRfuSlotStatusNI[r5]->recvBuffer;
+ }
+ for (r3 = 0; r3 < WINDOW_COUNT; ++r3)
+ {
+ r4->n[r3] = 0;
+ r4->now_p[r3] = &r4->now_p[0][r4->payloadSize * r3];
+ }
+ r4->remainSize = r4->dataSize;
+ r4->state = SLOT_STATE_RECEIVING;
+}
+
+static void rfu_NI_checkCommFailCounter(void)
+{
+ u16 r12;
+ u32 r7;
+ u8 r2, r3;
+
+ if (gRfuLinkStatus->sendSlotNIFlag | gRfuLinkStatus->recvSlotNIFlag)
+ {
+ r12 = REG_IME;
+ REG_IME = 0;
+ r7 = gRfuStatic->recvRenewalFlag >> 4;
+ for (r3 = 0; r3 < RFU_CHILD_MAX; ++r3)
+ {
+ r2 = 1 << r3;
+ if (gRfuLinkStatus->sendSlotNIFlag & r2
+ && !(gRfuStatic->recvRenewalFlag & r2))
+ ++gRfuSlotStatusNI[r3]->send.failCounter;
+ if (gRfuLinkStatus->recvSlotNIFlag & r2
+ && !(r7 & r2))
+ ++gRfuSlotStatusNI[r3]->recv.failCounter;
+ }
+ gRfuStatic->recvRenewalFlag = 0;
+ REG_IME = r12;
+ }
+}
+
+void rfu_REQ_noise(void)
+{
+ STWI_set_Callback_M(rfu_STC_REQ_callback);
+ STWI_send_TestModeREQ(1, 0);
+}
diff --git a/src/librfu_sio32id.c b/src/librfu_sio32id.c
new file mode 100644
index 000000000..fc5701986
--- /dev/null
+++ b/src/librfu_sio32id.c
@@ -0,0 +1,164 @@
+#include "librfu.h"
+
+static void Sio32IDIntr(void);
+static void Sio32IDInit(void);
+static s32 Sio32IDMain(void);
+
+struct RfuSIO32Id gRfuSIO32Id;
+
+static const u16 Sio32ConnectionData[] = { 0x494e, 0x544e, 0x4e45, 0x4f44 }; // NINTENDO
+static const char Sio32IDLib_Var[] = "Sio32ID_030820";
+
+s32 AgbRFU_checkID(u8 r5)
+{
+ u16 r8;
+ vu16 *r4;
+ s32 r6;
+
+ if (REG_IME == 0)
+ return -1;
+ r8 = REG_IE;
+ gSTWIStatus->state = 10;
+ STWI_set_Callback_ID(Sio32IDIntr);
+ Sio32IDInit();
+ r4 = &REG_TMCNT_L(gSTWIStatus->timerSelect);
+ r5 *= 8;
+ while (--r5 != 0xFF)
+ {
+ r6 = Sio32IDMain();
+ if (r6 != 0)
+ break;
+ r4[1] = 0;
+ r4[0] = 0;
+ r4[1] = TIMER_1024CLK | TIMER_ENABLE;
+ while (r4[0] < 32)
+ ;
+ r4[1] = 0;
+ r4[0] = 0;
+ }
+ REG_IME = 0;
+ REG_IE = r8;
+ REG_IME = 1;
+ gSTWIStatus->state = 0;
+ STWI_set_Callback_ID(NULL);
+ return r6;
+}
+
+static void Sio32IDInit(void)
+{
+ REG_IME = 0;
+ REG_IE &= ~((8 << gSTWIStatus->timerSelect) | INTR_FLAG_SERIAL);
+ REG_IME = 1;
+ REG_RCNT = 0;
+ REG_SIOCNT = SIO_32BIT_MODE;
+ REG_SIOCNT |= SIO_INTR_ENABLE | SIO_ENABLE;
+ CpuFill32(0, &gRfuSIO32Id, sizeof(struct RfuSIO32Id));
+ REG_IF = INTR_FLAG_SERIAL;
+}
+
+static s32 Sio32IDMain(void)
+{
+ u8 r12;
+
+ switch (r12 = gRfuSIO32Id.unk1)
+ {
+ case 0:
+ gRfuSIO32Id.unk0 = 1;
+ REG_SIOCNT |= SIO_38400_BPS;
+ REG_IME = r12;
+ REG_IE |= INTR_FLAG_SERIAL;
+ REG_IME = 1;
+ gRfuSIO32Id.unk1 = 1;
+ *(vu8 *)&REG_SIOCNT |= SIO_ENABLE;
+ break;
+ case 1:
+ if (gRfuSIO32Id.unkA == 0)
+ {
+ if (gRfuSIO32Id.unk0 == 1)
+ {
+ if (gRfuSIO32Id.unk2 == 0)
+ {
+ REG_IME = gRfuSIO32Id.unk2;
+ REG_SIOCNT |= SIO_ENABLE;
+ REG_IME = r12;
+ }
+ }
+ else if (gRfuSIO32Id.unk4 != 0x8001 && !gRfuSIO32Id.unk2)
+ {
+ REG_IME = gRfuSIO32Id.unk2;
+ REG_IE &= ~INTR_FLAG_SERIAL;
+ REG_IME = r12;
+ REG_SIOCNT = gRfuSIO32Id.unk2;
+ REG_SIOCNT = SIO_32BIT_MODE;
+ REG_IF = INTR_FLAG_SERIAL;
+ REG_SIOCNT |= SIO_INTR_ENABLE | SIO_ENABLE;
+ REG_IME = gRfuSIO32Id.unk2;
+ REG_IE |= INTR_FLAG_SERIAL;
+ REG_IME = r12;
+ }
+ break;
+ }
+ else
+ {
+ gRfuSIO32Id.unk1 = 2;
+ // fallthrough
+ }
+ default:
+ return gRfuSIO32Id.unkA;
+ }
+ return 0;
+}
+
+static void Sio32IDIntr(void)
+{
+ u32 r5;
+ u16 r0;
+#ifndef NONMATCHING
+ register u32 r1 asm("r1");
+ register u16 r0_ asm("r0");
+#else
+ u32 r1;
+ u16 r0_;
+#endif
+
+ r5 = REG_SIODATA32;
+ if (gRfuSIO32Id.unk0 != 1)
+ REG_SIOCNT |= SIO_ENABLE;
+ r1 = 16 * gRfuSIO32Id.unk0; // to handle side effect of inline asm
+ r1 = (r5 << r1) >> 16;
+ r5 = (r5 << 16 * (1 - gRfuSIO32Id.unk0)) >> 16;
+ if (gRfuSIO32Id.unkA == 0)
+ {
+ if (r1 == gRfuSIO32Id.unk6)
+ {
+ if (gRfuSIO32Id.unk2 > 3)
+ {
+ gRfuSIO32Id.unkA = r5;
+ }
+ else if (r1 == (u16)~gRfuSIO32Id.unk4)
+ {
+ r0_ = ~gRfuSIO32Id.unk6;
+ if (r5 == r0_)
+ ++gRfuSIO32Id.unk2;
+ }
+ }
+ else
+ {
+ gRfuSIO32Id.unk2 = gRfuSIO32Id.unkA;
+ }
+ }
+ if (gRfuSIO32Id.unk2 < 4)
+ gRfuSIO32Id.unk4 = *(gRfuSIO32Id.unk2 + Sio32ConnectionData);
+ else
+ gRfuSIO32Id.unk4 = 0x8001;
+ gRfuSIO32Id.unk6 = ~r5;
+ REG_SIODATA32 = (gRfuSIO32Id.unk4 << 16 * (1 - gRfuSIO32Id.unk0))
+ + (gRfuSIO32Id.unk6 << 16 * gRfuSIO32Id.unk0);
+ if (gRfuSIO32Id.unk0 == 1 && (gRfuSIO32Id.unk2 || r5 == 0x494E))
+ {
+ for (r0 = 0; r0 < 600; ++r0)
+ ;
+ if (gRfuSIO32Id.unkA == 0)
+ REG_SIOCNT |= SIO_ENABLE;
+ }
+}
diff --git a/src/librfu_stwi.c b/src/librfu_stwi.c
new file mode 100644
index 000000000..b88f21737
--- /dev/null
+++ b/src/librfu_stwi.c
@@ -0,0 +1,647 @@
+#include "librfu.h"
+
+static void STWI_intr_timer(void);
+static u16 STWI_init(u8 request);
+static s32 STWI_start_Command(void);
+static void STWI_set_timer(u8 unk);
+static void STWI_stop_timer(void);
+static s32 STWI_restart_Command(void);
+static s32 STWI_reset_ClockCounter(void);
+
+struct STWIStatus *gSTWIStatus;
+
+void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam)
+{
+ // If we're copying our interrupt into RAM, DMA it to block1 and use
+ // block2 for our STWIStatus, otherwise block1 holds the STWIStatus.
+ // interrupt usually is a pointer to gIntrTable[1]
+ if (copyInterruptToRam == TRUE)
+ {
+ *interrupt = (IntrFunc)interruptStruct->block1;
+ DmaCopy16(3, &IntrSIO32, interruptStruct->block1, sizeof(interruptStruct->block1));
+ gSTWIStatus = &interruptStruct->block2;
+ }
+ else
+ {
+ *interrupt = IntrSIO32;
+ gSTWIStatus = (struct STWIStatus *)interruptStruct->block1;
+ }
+ gSTWIStatus->rxPacket = &interruptStruct->rxPacketAlloc;
+ gSTWIStatus->txPacket = &interruptStruct->txPacketAlloc;
+ gSTWIStatus->msMode = 1;
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
+ gSTWIStatus->ackLength = 0;
+ gSTWIStatus->ackNext = 0;
+ gSTWIStatus->ackActiveCommand = 0;
+ gSTWIStatus->timerState = 0;
+ gSTWIStatus->timerActive = 0;
+ gSTWIStatus->error = 0;
+ gSTWIStatus->recoveryCount = 0;
+ gSTWIStatus->unk_2c = 0;
+ REG_RCNT = 0x100; // TODO: mystery bit?
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+ STWI_init_Callback_M();
+ STWI_init_Callback_S();
+ IntrEnable(INTR_FLAG_SERIAL);
+}
+
+void STWI_init_timer(IntrFunc *interrupt, s32 timerSelect)
+{
+ *interrupt = STWI_intr_timer;
+ gSTWIStatus->timerSelect = timerSelect;
+ IntrEnable(INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect);
+}
+
+void AgbRFU_SoftReset(void)
+{
+ vu16 *timerL;
+ vu16 *timerH;
+
+ REG_RCNT = 0x8000;
+ REG_RCNT = 0x80A0; // all these bits are undocumented
+ timerL = &REG_TMCNT_L(gSTWIStatus->timerSelect);
+ timerH = &REG_TMCNT_H(gSTWIStatus->timerSelect);
+ *timerH = 0;
+ *timerL = 0;
+ *timerH = TIMER_ENABLE | TIMER_1024CLK;
+ while (*timerL <= 0x11)
+ REG_RCNT = 0x80A2;
+ *timerH = 3;
+ REG_RCNT = 0x80A0;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
+ gSTWIStatus->reqActiveCommand = 0;
+ gSTWIStatus->ackLength = 0;
+ gSTWIStatus->ackNext = 0;
+ gSTWIStatus->ackActiveCommand = 0;
+ gSTWIStatus->timerState = 0;
+ gSTWIStatus->timerActive = 0;
+ gSTWIStatus->error = 0;
+ gSTWIStatus->msMode = 1;
+ gSTWIStatus->recoveryCount = 0;
+ gSTWIStatus->unk_2c = 0;
+}
+
+void STWI_set_MS_mode(u8 mode)
+{
+ gSTWIStatus->msMode = mode;
+}
+
+u16 STWI_read_status(u8 index)
+{
+ switch (index)
+ {
+ case 0:
+ return gSTWIStatus->error;
+ case 1:
+ return gSTWIStatus->msMode;
+ case 2:
+ return gSTWIStatus->state;
+ case 3:
+ return gSTWIStatus->reqActiveCommand;
+ default:
+ return 0xFFFF;
+ }
+}
+
+void STWI_init_Callback_M(void)
+{
+ STWI_set_Callback_M(NULL);
+}
+
+void STWI_init_Callback_S(void)
+{
+ STWI_set_Callback_S(NULL);
+}
+
+// The callback can take 2 or 3 arguments.
+void STWI_set_Callback_M(void *callbackM)
+{
+ gSTWIStatus->callbackM = callbackM;
+}
+
+void STWI_set_Callback_S(void (*callbackS)(u16))
+{
+ gSTWIStatus->callbackS = callbackS;
+}
+
+void STWI_set_Callback_ID(void (*func)(void)) // name in SDK, but is actually setting a function pointer
+{
+ gSTWIStatus->unk_20 = func;
+}
+
+u16 STWI_poll_CommandEnd(void)
+{
+ while (gSTWIStatus->unk_2c == TRUE)
+ ;
+ return gSTWIStatus->error;
+}
+
+void STWI_send_ResetREQ(void)
+{
+ if (!STWI_init(ID_RESET_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_LinkStatusREQ(void)
+{
+ if (!STWI_init(ID_LINK_STATUS_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_VersionStatusREQ(void)
+{
+ if (!STWI_init(ID_VERSION_STATUS_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SystemStatusREQ(void)
+{
+ if (!STWI_init(ID_SYSTEM_STATUS_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SlotStatusREQ(void)
+{
+ if (!STWI_init(ID_SLOT_STATUS_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_ConfigStatusREQ(void)
+{
+ if (!STWI_init(ID_CONFIG_STATUS_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_GameConfigREQ(const u8 *unk1, const u8 *data)
+{
+ u8 *packetBytes;
+ s32 i;
+
+ if (!STWI_init(ID_GAME_CONFIG_REQ))
+ {
+ gSTWIStatus->reqLength = 6;
+ // TODO: what is unk1
+ packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+ *(u16 *)packetBytes = *(u16 *)unk1;
+ packetBytes += sizeof(u16);
+ unk1 += sizeof(u16);
+ for (i = 0; i < 14; ++i)
+ {
+ *packetBytes = *unk1;
+ ++packetBytes;
+ ++unk1;
+ }
+ for (i = 0; i < 8; ++i)
+ {
+ *packetBytes = *data;
+ ++packetBytes;
+ ++data;
+ }
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3)
+{
+ if (!STWI_init(ID_SYSTEM_CONFIG_REQ))
+ {
+ u8 *packetBytes;
+
+ gSTWIStatus->reqLength = 1;
+ packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+ *packetBytes++ = unk3;
+ *packetBytes++ = unk2;
+ *(u16*)packetBytes = unk1;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SC_StartREQ(void)
+{
+ if (!STWI_init(ID_SC_START_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SC_PollingREQ(void)
+{
+ if (!STWI_init(ID_SC_POLL_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SC_EndREQ(void)
+{
+ if (!STWI_init(ID_SC_END_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SP_StartREQ(void)
+{
+ if (!STWI_init(ID_SP_START_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SP_PollingREQ(void)
+{
+ if (!STWI_init(ID_SP_POLL_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SP_EndREQ(void)
+{
+ if (!STWI_init(ID_SP_END_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CP_StartREQ(u16 unk1)
+{
+ if (!STWI_init(ID_CP_START_REQ))
+ {
+ gSTWIStatus->reqLength = 1;
+ gSTWIStatus->txPacket->rfuPacket32.data[0] = unk1;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CP_PollingREQ(void)
+{
+ if (!STWI_init(ID_CP_POLL_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CP_EndREQ(void)
+{
+ if (!STWI_init(ID_CP_END_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataTxREQ(const void *in, u8 size)
+{
+ if (!STWI_init(ID_DATA_TX_REQ))
+ {
+ u8 reqLength = (size / sizeof(u32));
+ if (size & (sizeof(u32) - 1))
+ reqLength += 1;
+ gSTWIStatus->reqLength = reqLength;
+ CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32));
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataTxAndChangeREQ(const void *in, u8 size)
+{
+ if (!STWI_init(ID_DATA_TX_AND_CHANGE_REQ))
+ {
+ u8 reqLength = (size / sizeof(u32));
+ if (size & (sizeof(u32) - 1))
+ reqLength += 1;
+ gSTWIStatus->reqLength = reqLength;
+ CpuCopy32(in, gSTWIStatus->txPacket->rfuPacket32.data, gSTWIStatus->reqLength * sizeof(u32));
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataRxREQ(void)
+{
+ if (!STWI_init(ID_DATA_RX_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_MS_ChangeREQ(void)
+{
+ if (!STWI_init(ID_MS_CHANGE_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataReadyAndChangeREQ(u8 unk)
+{
+ if (!STWI_init(ID_DATA_READY_AND_CHANGE_REQ))
+ {
+ if (!unk)
+ {
+ gSTWIStatus->reqLength = 0;
+ }
+ else
+ {
+ u8 *packetBytes;
+
+ gSTWIStatus->reqLength = 1;
+ packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+ *packetBytes++ = unk;
+ *packetBytes++ = 0;
+ *packetBytes++ = 0;
+ *packetBytes = 0;
+ }
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1)
+{
+ if (!STWI_init(ID_DISCONNECTED_AND_CHANGE_REQ))
+ {
+ u8 *packetBytes;
+
+ gSTWIStatus->reqLength = 1;
+ packetBytes = gSTWIStatus->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+ *packetBytes++ = unk0;
+ *packetBytes++ = unk1;
+ *packetBytes++ = 0;
+ *packetBytes = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_ResumeRetransmitAndChangeREQ(void)
+{
+ if (!STWI_init(ID_RESUME_RETRANSMIT_AND_CHANGE_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DisconnectREQ(u8 unk)
+{
+ if (!STWI_init(ID_DISCONNECT_REQ))
+ {
+ gSTWIStatus->reqLength = 1;
+ gSTWIStatus->txPacket->rfuPacket32.data[0] = unk;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_TestModeREQ(u8 unk0, u8 unk1)
+{
+ if (!STWI_init(ID_TEST_MODE_REQ))
+ {
+ gSTWIStatus->reqLength = 1;
+ gSTWIStatus->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8);
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2)
+{
+ u32 *packetData;
+ u32 arg1;
+
+ if (!STWI_init(ID_CPR_START_REQ))
+ {
+ gSTWIStatus->reqLength = 2;
+ arg1 = unk1 | (unk0 << 16);
+ packetData = gSTWIStatus->txPacket->rfuPacket32.data;
+ packetData[0] = arg1;
+ packetData[1] = unk2;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CPR_PollingREQ(void)
+{
+ if (!STWI_init(ID_CPR_POLL_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CPR_EndREQ(void)
+{
+ if (!STWI_init(ID_CPR_END_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_StopModeREQ(void)
+{
+ if (!STWI_init(ID_STOP_MODE_REQ))
+ {
+ gSTWIStatus->reqLength = 0;
+ STWI_start_Command();
+ }
+}
+
+static void STWI_intr_timer(void)
+{
+ switch (gSTWIStatus->timerState)
+ {
+ // TODO: Make an enum for these
+ case 2:
+ gSTWIStatus->timerActive = 1;
+ STWI_set_timer(50);
+ break;
+ case 1:
+ case 4:
+ STWI_stop_timer();
+ STWI_restart_Command();
+ break;
+ case 3:
+ gSTWIStatus->timerActive = 1;
+ STWI_stop_timer();
+ STWI_reset_ClockCounter();
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(255, 0);
+ break;
+ }
+}
+
+static void STWI_set_timer(u8 unk)
+{
+ vu16 *timerL;
+ vu16 *timerH;
+
+ timerL = &REG_TMCNT_L(gSTWIStatus->timerSelect);
+ timerH = &REG_TMCNT_H(gSTWIStatus->timerSelect);
+ REG_IME = 0;
+ switch (unk)
+ {
+ case 50:
+ *timerL = 0xFCCB;
+ gSTWIStatus->timerState = 1;
+ break;
+ case 80:
+ *timerL = 0xFAE0;
+ gSTWIStatus->timerState = 2;
+ break;
+ case 100:
+ *timerL = 0xF996;
+ gSTWIStatus->timerState = 3;
+ break;
+ case 130:
+ *timerL = 0xF7AD;
+ gSTWIStatus->timerState = 4;
+ break;
+ }
+ *timerH = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK;
+ REG_IF = INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect;
+ REG_IME = 1;
+}
+
+static void STWI_stop_timer(void)
+{
+ gSTWIStatus->timerState = 0;
+ REG_TMCNT_L(gSTWIStatus->timerSelect) = 0;
+ REG_TMCNT_H(gSTWIStatus->timerSelect) = 0;
+}
+
+static u16 STWI_init(u8 request)
+{
+ if (!REG_IME)
+ {
+ gSTWIStatus->error = ERR_REQ_CMD_IME_DISABLE;
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(request, gSTWIStatus->error);
+ return TRUE;
+ }
+ else if (gSTWIStatus->unk_2c == TRUE)
+ {
+ gSTWIStatus->error = ERR_REQ_CMD_SENDING;
+ gSTWIStatus->unk_2c = FALSE;
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(request, gSTWIStatus->error);
+ return TRUE;
+ }
+ else if(!gSTWIStatus->msMode)
+ {
+ gSTWIStatus->error = ERR_REQ_CMD_CLOCK_SLAVE;
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(request, gSTWIStatus->error, gSTWIStatus);
+ return TRUE;
+ }
+ else
+ {
+ gSTWIStatus->unk_2c = TRUE;
+ gSTWIStatus->reqActiveCommand = request;
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
+ gSTWIStatus->ackLength = 0;
+ gSTWIStatus->ackNext = 0;
+ gSTWIStatus->ackActiveCommand = 0;
+ gSTWIStatus->timerState = 0;
+ gSTWIStatus->timerActive = 0;
+ gSTWIStatus->error = 0;
+ gSTWIStatus->recoveryCount = 0;
+ REG_RCNT = 0x100;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+ return FALSE;
+ }
+}
+
+static s32 STWI_start_Command(void)
+{
+ u16 imeTemp;
+
+ // equivalent to gSTWIStatus->txPacket->rfuPacket32.command,
+ // but the cast here is required to avoid register issue
+ *(u32 *)gSTWIStatus->txPacket->rfuPacket8.data = 0x99660000 | (gSTWIStatus->reqLength << 8) | gSTWIStatus->reqActiveCommand;
+ REG_SIODATA32 = gSTWIStatus->txPacket->rfuPacket32.command;
+ gSTWIStatus->state = 0;
+ gSTWIStatus->reqNext = 1;
+ imeTemp = REG_IME;
+ REG_IME = 0;
+ REG_IE |= (INTR_FLAG_TIMER0 << gSTWIStatus->timerSelect);
+ REG_IE |= INTR_FLAG_SERIAL;
+ REG_IME = imeTemp;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_MULTI_BUSY | SIO_115200_BPS;
+ return 0;
+}
+
+static s32 STWI_restart_Command(void)
+{
+ if (gSTWIStatus->recoveryCount <= 1)
+ {
+ ++gSTWIStatus->recoveryCount;
+ STWI_start_Command();
+ }
+ else
+ {
+ if (gSTWIStatus->reqActiveCommand == ID_MS_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_DATA_TX_AND_CHANGE_REQ || gSTWIStatus->reqActiveCommand == ID_UNK35_REQ || gSTWIStatus->reqActiveCommand == ID_RESUME_RETRANSMIT_AND_CHANGE_REQ)
+ {
+ gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT;
+ gSTWIStatus->unk_2c = 0;
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error);
+ }
+ else
+ {
+ gSTWIStatus->error = ERR_REQ_CMD_CLOCK_DRIFT;
+ gSTWIStatus->unk_2c = 0;
+ if (gSTWIStatus->callbackM != NULL)
+ gSTWIStatus->callbackM(gSTWIStatus->reqActiveCommand, gSTWIStatus->error);
+ gSTWIStatus->state = 4; // TODO: what's 4
+ }
+ }
+ return 0;
+}
+
+static s32 STWI_reset_ClockCounter(void)
+{
+ gSTWIStatus->state = 5; // TODO: what is 5
+ gSTWIStatus->reqLength = 0;
+ gSTWIStatus->reqNext = 0;
+ REG_SIODATA32 = (1 << 31);
+ REG_SIOCNT = 0;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+ REG_SIOCNT = (SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS) + 0x7F;
+ return 0;
+}
diff --git a/src/main.c b/src/main.c
index c96e4cc3a..5d2db95be 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,4 +1,9 @@
#include "global.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "load_save.h"
#include "main.h"
#include "m4a.h"
#include "random.h"
@@ -6,48 +11,20 @@
#include "gba/flash_internal.h"
#include "battle.h"
#include "help_system.h"
+#include "sound.h"
+#include "new_menu_helpers.h"
+#include "malloc.h"
+#include "overworld.h"
+#include "sprite.h"
+#include "play_time.h"
+#include "pokemon.h"
+#include "intro.h"
+#include "battle_controllers.h"
+#include "scanline_effect.h"
+#include "save_failed_screen.h"
+#include "battle.h"
-extern u16 GetGpuReg(u8);
-extern void SetGpuReg(u8, u16);
-extern void RFUVSync(void);
-extern void LinkVSync(void);
-extern void sub_80FCF34(void);
-extern void LinkVSync(void);
-extern void InitGpuRegManager(void);
-extern void InitRFU(void);
-extern void CheckForFlashMemory(void);
-extern void InitMapMusic(void);
-extern void ResetBgs(void);
-extern void SetDefaultFontsPointer(void);
-extern void InitHeap(void *heapStart, u32 heapSize); // malloc.h
-extern void rfu_REQ_stopMode(void);
-extern void rfu_waitREQComplete(void);
-extern bool32 sub_80582E0(void);
-extern bool32 sub_8058274(void);
-extern void ClearSpriteCopyRequests(void);
-extern void PlayTimeCounter_Update(void);
-extern void MapMusicMain(void);
-extern void EnableInterrupts(u16);
-extern void sub_800DD28(void);
-extern u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
-extern void ScanlineEffect_Stop(void);
-extern void sub_80F50F4(void);
-extern bool32 sub_80F5118(void);
-
-extern struct SoundInfo gSoundInfo;
-extern u32 gFlashMemoryPresent;
-extern u32 IntrMain[];
-extern u8 gHeap[];
-extern struct SaveBlock1 gSaveBlock1;
-extern struct SaveBlock2 gSaveBlock2;
-extern struct PokemonStorage gPokemonStorage;
-extern u32 gBattleTypeFlags;
-extern u8 gUnknown_03002748;
-extern u32 *gUnknown_0203CF5C;
-
-void Timer3Intr(void);
-bool8 HandleLinkConnection(void);
-void c2_copyright_1(void);
+extern u32 intr_main[];
static void VBlankIntr(void);
static void HBlankIntr(void);
@@ -313,7 +290,7 @@ void InitIntrHandlers(void)
for (i = 0; i < INTR_COUNT; i++)
gIntrTable[i] = gIntrTableTemplate[i];
- DmaCopy32(3, IntrMain, IntrMain_Buffer, sizeof(IntrMain_Buffer));
+ DmaCopy32(3, intr_main, IntrMain_Buffer, sizeof(IntrMain_Buffer));
INTR_VECTOR = IntrMain_Buffer;
diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c
index 0747e8ade..c5b41a7c1 100644
--- a/src/map_preview_screen.c
+++ b/src/map_preview_screen.c
@@ -552,7 +552,7 @@ static void sub_80F83D0(u8 taskId)
}
}
-const struct MapPreviewScreen * sub_80F8544(u8 mapsec)
+const struct MapPreviewScreen * GetDungeonMapPreviewScreenInfo(u8 mapsec)
{
u8 idx;
diff --git a/src/party_menu.c b/src/party_menu.c
index 399794b2d..6e0b411bf 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -4201,7 +4201,7 @@ static void sub_8124BB0(struct Pokemon *mon, u8 fieldMove)
Free(ptr);
}
-void sub_8124C1C(const u8 *healLocCtrlData) // TODO: confirm the type of data chunk at 0x83F2EE0
+void sub_8124C1C(const u8 *healLocCtrlData)
{
const struct MapHeader *mapHeader;
struct FieldMoveWarpParams *ptr2;
diff --git a/src/party_menu_specials.c b/src/party_menu_specials.c
new file mode 100644
index 000000000..751684bd5
--- /dev/null
+++ b/src/party_menu_specials.c
@@ -0,0 +1,111 @@
+#include "global.h"
+#include "data.h"
+#include "script.h"
+#include "overworld.h"
+#include "battle.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "party_menu.h"
+#include "field_fadetransition.h"
+#include "pokemon_summary_screen.h"
+#include "event_data.h"
+#include "string_util.h"
+#include "constants/moves.h"
+
+static void sub_80BF97C(u8 taskId);
+
+void Special_ChooseMonFromParty(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask(sub_80BF97C, 10);
+ gTasks[taskId].data[0] = PARTY_MENU_TYPE_CHOOSE_MON;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
+}
+
+void Special_SelectMoveTutorMon(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ taskId = CreateTask(sub_80BF97C, 10);
+ gTasks[taskId].data[0] = PARTY_MENU_TYPE_MOVE_RELEARNER;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
+}
+
+static void sub_80BF97C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ ChoosePartyMonByMenuType((u8)gTasks[taskId].data[0]);
+ DestroyTask(taskId);
+ }
+}
+
+void Special_SelectMove(void)
+{
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField, 0);
+ sub_8138B38(3);
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
+}
+
+void Special_GetNumMovesSelectedMonHas(void)
+{
+ u8 i;
+
+ gSpecialVar_Result = 0;
+ for (i = 0; i < MAX_MON_MOVES; ++i)
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i) != MOVE_NONE)
+ ++gSpecialVar_Result;
+}
+
+void Special_BufferMoveDeleterNicknameAndMove(void)
+{
+ struct Pokemon *mon = &gPlayerParty[gSpecialVar_0x8004];
+ u16 move = GetMonData(mon, MON_DATA_MOVE1 + gSpecialVar_0x8005);
+
+ GetMonNickname(mon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[move]);
+}
+
+static void ShiftMoveSlot(struct Pokemon *mon, u8 slotTo, u8 slotFrom)
+{
+ u16 move1 = GetMonData(mon, MON_DATA_MOVE1 + slotTo);
+ u16 move0 = GetMonData(mon, MON_DATA_MOVE1 + slotFrom);
+ u8 pp1 = GetMonData(mon, MON_DATA_PP1 + slotTo);
+ u8 pp0 = GetMonData(mon, MON_DATA_PP1 + slotFrom);
+ u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
+ u8 ppBonusMask1 = gPPUpGetMask[slotTo];
+ u8 ppBonusMove1 = (ppBonuses & ppBonusMask1) >> (slotTo * 2);
+ u8 ppBonusMask2 = gPPUpGetMask[slotFrom];
+ u8 ppBonusMove2 = (ppBonuses & ppBonusMask2) >> (slotFrom * 2);
+
+ ppBonuses &= ~ppBonusMask1;
+ ppBonuses &= ~ppBonusMask2;
+ ppBonuses |= (ppBonusMove1 << (slotFrom * 2)) + (ppBonusMove2 << (slotTo * 2));
+ SetMonData(mon, MON_DATA_MOVE1 + slotTo, &move0);
+ SetMonData(mon, MON_DATA_MOVE1 + slotFrom, &move1);
+ SetMonData(mon, MON_DATA_PP1 + slotTo, &pp0);
+ SetMonData(mon, MON_DATA_PP1 + slotFrom, &pp1);
+ SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses);
+}
+
+void Special_MoveDeleterForgetMove(void)
+{
+ u16 i;
+
+ SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], MOVE_NONE, gSpecialVar_0x8005);
+ RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
+ for (i = gSpecialVar_0x8005; i < MAX_MON_MOVES - 1; ++i)
+ ShiftMoveSlot(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
+}
+
+void Special_IsSelectedMonEgg(void)
+{
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_IS_EGG))
+ gSpecialVar_Result = TRUE;
+ else
+ gSpecialVar_Result = FALSE;
+}
diff --git a/src/pc_screen_effect.c b/src/pc_screen_effect.c
new file mode 100644
index 000000000..5cc09df71
--- /dev/null
+++ b/src/pc_screen_effect.c
@@ -0,0 +1,156 @@
+#include "global.h"
+#include "task.h"
+#include "gpu_regs.h"
+#include "palette.h"
+
+static void sub_80A0AC0(TaskFunc func, u16 a2, UNUSED u16 a3, u8 priority);
+static void sub_80A0B0C(u8 taskId);
+static void sub_80A0C78(u8 taskId);
+
+void sub_80A0A48(u16 a1, u16 a2, u8 a3)
+{
+ sub_80A0AC0(sub_80A0B0C, a1, a2, a3);
+}
+
+void sub_80A0A70(u16 a1, u16 a2, u8 a3)
+{
+ sub_80A0AC0(sub_80A0C78, a1, a2, a3);
+}
+
+bool8 sub_80A0A98(void)
+{
+ return FuncIsActiveTask(sub_80A0B0C);
+}
+
+bool8 sub_80A0AAC(void)
+{
+ return FuncIsActiveTask(sub_80A0C78);
+}
+
+static void sub_80A0AC0(TaskFunc func, u16 a2, UNUSED u16 a3, u8 priority)
+{
+ u8 taskId = CreateTask(func, priority);
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = a2 == 0 ? 16 : a2;
+ gTasks[taskId].data[2] = a2 == 0 ? 20 : a2;
+ gTasks[taskId].func(taskId);
+}
+
+static void sub_80A0B0C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[3] = 120;
+ task->data[4] = 120;
+ task->data[5] = 80;
+ task->data[6] = 81;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ break;
+ case 1:
+ task->data[7] = GetGpuReg(REG_OFFSET_BLDCNT);
+ task->data[8] = GetGpuReg(REG_OFFSET_BLDY);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_LIGHTEN);
+ SetGpuReg(REG_OFFSET_BLDY, 16);
+ break;
+ case 2:
+ task->data[3] -= task->data[1];
+ task->data[4] += task->data[1];
+ if (task->data[3] <= 0 || task->data[4] >= DISPLAY_WIDTH)
+ {
+ task->data[3] = 0;
+ task->data[4] = DISPLAY_WIDTH;
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ BlendPalettes(0xFFFFFFFF, 0, RGB_BLACK);
+ gPlttBufferFaded[0] = 0;
+ }
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ if (task->data[3])
+ return;
+ break;
+ case 3:
+ task->data[5] -= task->data[2];
+ task->data[6] += task->data[2];
+ if (task->data[5] <= 0 || task->data[6] >= DISPLAY_HEIGHT)
+ {
+ task->data[5] = 0;
+ task->data[6] = DISPLAY_HEIGHT;
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ if (task->data[5])
+ return;
+ break;
+ default:
+ SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ DestroyTask(taskId);
+ return;
+ }
+ ++task->data[0];
+}
+
+static void sub_80A0C78(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ gPlttBufferFaded[0] = 0;
+ break;
+ case 1:
+ task->data[3] = 0;
+ task->data[4] = DISPLAY_WIDTH;
+ task->data[5] = 0;
+ task->data[6] = DISPLAY_HEIGHT;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ break;
+ case 2:
+ task->data[5] += task->data[2];
+ task->data[6] -= task->data[2];
+ if (task->data[5] >= 80 || task->data[6] <= 81)
+ {
+ task->data[5] = 80;
+ task->data[6] = 81;
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_LIGHTEN);
+ SetGpuReg(REG_OFFSET_BLDY, 16);
+ }
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ if (task->data[5] != 80)
+ return;
+ break;
+ case 3:
+ task->data[3] += task->data[1];
+ task->data[4] -= task->data[1];
+ if (task->data[3] >= 120 || task->data[4] <= 120)
+ {
+ task->data[3] = 120;
+ task->data[4] = 120;
+ BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
+ gPlttBufferFaded[0] = 0;
+ }
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ if (task->data[3] != 120)
+ return;
+ break;
+ default:
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ DestroyTask(taskId);
+ return;
+ }
+ ++task->data[0];
+}
diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c
index 1e61b9b77..112889710 100644
--- a/src/post_battle_event_funcs.c
+++ b/src/post_battle_event_funcs.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "script_pokemon_util_80A0058.h"
+#include "script_pokemon_util.h"
#include "event_data.h"
#include "credits.h"
#include "overworld.h"
diff --git a/src/quest_log.c b/src/quest_log.c
index 970071a0f..4d94c78ad 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -3119,7 +3119,7 @@ static const u16 *sub_8113FBC(const u16 *a0)
StringCopy(gStringVar1, ItemId_GetName(r5[0]));
if (r5[0] == ITEM_ESCAPE_ROPE)
{
- GetMapNameGeneric(gStringVar2, r5[2]);
+ GetMapNameGeneric(gStringVar2, (u8)r5[2]);
StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6);
}
else if (r5[1] != 0xFFFF)
@@ -4373,7 +4373,7 @@ static u16 *sub_81157DC(u16 *a0, const u16 *a1)
static const u16 *sub_8115800(const u16 *a0)
{
const u16 *r4 = sub_8113E88(42, a0);
- GetMapNameGeneric(gStringVar1, r4[0]);
+ GetMapNameGeneric(gStringVar1, (u8)r4[0]);
StringExpandPlaceholders(gStringVar4, gUnknown_841B064);
return r4 + 1;
}
diff --git a/src/region_map.c b/src/region_map.c
new file mode 100644
index 000000000..271ce548f
--- /dev/null
+++ b/src/region_map.c
@@ -0,0 +1,4399 @@
+#include "global.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "m4a.h"
+#include "malloc.h"
+#include "overworld.h"
+#include "event_data.h"
+#include "region_map.h"
+#include "window.h"
+#include "sound.h"
+#include "party_menu.h"
+#include "field_effect.h"
+#include "new_menu_helpers.h"
+#include "menu.h"
+#include "string_util.h"
+#include "strings.h"
+#include "map_preview_screen.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+#include "constants/region_map.h"
+#include "constants/spawn_points.h"
+#include "constants/maps.h"
+
+#define FREE_IF_NOT_NULL(ptr) ({ \
+ if (ptr) { \
+ FREE_AND_SET_NULL(ptr); \
+ } \
+})
+
+struct UnkStruct_20399D4
+{
+ u8 field_0000[19];
+ u8 field_0013[19];
+ u16 layouts[5][600];
+ // Inefficiency: these should be u8 or have half the elements each
+ u16 bgTilemapBuffers[3][BG_SCREEN_SIZE];
+ u8 mapType;
+ bool8 regionMapPermissions[4];
+ u8 field_479B;
+ u8 field_479C;
+ u8 ALIGNED(4) field_47A0;
+ u8 ALIGNED(4) field_47A4;
+ u8 ALIGNED(4) field_47A8;
+ u16 field_47AA;
+ u16 field_47AC;
+ u16 field_47AE;
+ u16 field_47B0;
+ u8 filler_47B2[6];
+ TaskFunc field_47B8;
+ MainCallback savedCallback;
+}; // size = 0x47C0
+
+struct SelectionCursorSubspriteData
+{
+ u8 tiles[0x400];
+ struct Sprite * sprite;
+ u16 tileTag;
+ u16 paletteTag;
+ s16 xCoord;
+};
+
+struct UnkStruct_20399D8
+{
+ u8 bgTiles[0x1000];
+ u16 tileMap[0x258];
+ struct SelectionCursorSubspriteData selectionCursorSubspriteData[2];
+ u8 field_1CC8;
+ u8 selectionCursorLoadState;
+ u8 field_1CCA;
+ u8 field_1CCB;
+ u8 field_1CCC;
+ u8 field_1CCD;
+ u16 field_1CCE;
+ TaskFunc field_1CD0;
+ u16 field_1CD4[4];
+ u16 field_1CDC;
+}; // size = 0x1CE0
+
+struct GpuWindowParams
+{
+ u16 v0;
+ u16 v2;
+ u16 v4;
+ u16 v6;
+};
+
+struct UnkStruct_83F1B3C
+{
+ u16 id;
+ const u8 *name;
+ const u8 *desc;
+};
+
+struct DungeonMapPreviewManagerStruct
+{
+ u16 tiles[0x1C20];
+ u16 tilemap[0x280];
+ const struct MapPreviewScreen * mapPreviewInfo;
+ TaskFunc savedTask;
+ u8 dungeonMapPreviewPrepState;
+ u8 dungeonMapPreviewDrawState;
+ u8 field_3D4A;
+ u8 field_3D4B;
+ u8 field_3D4C;
+ u16 field_3D4E[0x30];
+ u8 filler_3DAE[0x60];
+ u16 field_3E0E;
+ u16 field_3E10;
+ u16 field_3E12;
+ u16 field_3E14;
+ u16 field_3E16;
+ u16 field_3E18;
+ u16 field_3E1A;
+ u16 field_3E1C;
+ u16 field_3E1E;
+ u16 field_3E20;
+ u16 field_3E22;
+ u16 field_3E24;
+}; // size = 0x3E28
+
+struct UnkStruct_20399E0_000
+{
+ u16 field_000[0x200];
+ struct Sprite * field_400;
+ s16 field_404;
+ s16 field_406;
+ u16 field_408;
+ u16 field_40A;
+};
+
+struct UnkStruct_20399E0
+{
+ struct UnkStruct_20399E0_000 * field_000[6];
+ u16 field_018[0x400];
+ u16 field_818[0x258];
+ TaskFunc field_CC8;
+ u8 field_CCC;
+ u8 field_CCD;
+ u8 field_CCE;
+ u8 field_CCF;
+ u8 field_CD0;
+}; // size = 0xCD4
+
+struct UnkStruct_20399E4
+{
+ s16 field_000;
+ s16 field_002;
+ u16 field_004;
+ u16 field_006;
+ s16 field_008;
+ s16 field_00A;
+ u16 field_00C;
+ u8 field_00E;
+ u8 (*field_010)(void);
+ u16 field_014;
+ u16 field_016;
+ u16 field_018;
+ struct Sprite * field_01C;
+ u16 field_020;
+ u16 field_022;
+ u16 field_024[0x80];
+}; // size = 0x124
+
+struct UnkStruct_20399E8
+{
+ s16 field_00;
+ s16 field_02;
+ struct Sprite * field_04;
+ u16 field_08;
+ u16 field_0A;
+ u16 field_0C[0x40];
+}; // size = 0x8C
+
+struct UnkStruct_20399EC_140
+{
+ u8 filler_0[4];
+ u8 field_4;
+ struct Sprite * field_8;
+ u16 field_C;
+ u16 field_E;
+};
+
+struct UnkStruct_20399EC
+{
+ u8 field_000[0x40];
+ u8 field_040[0x100];
+ struct UnkStruct_20399EC_140 field_140[25];
+ struct UnkStruct_20399EC_140 field_2D0[25];
+ u8 field_460;
+ u8 filler_461[2];
+ u8 field_463;
+ u8 filler_464[4];
+ TaskFunc field_468;
+}; // size = 0x46C
+
+struct UnkStruct_20399F0
+{
+ u16 bldcnt;
+ u16 bldy;
+ u16 bldalpha;
+ u16 winin;
+ u16 winout;
+ u16 win0h;
+ u16 win1h;
+ u16 win0v;
+ u16 win1v;
+};
+
+struct UnkStruct_20399FC
+{
+ u8 field_0;
+ u8 field_1;
+ u8 field_2;
+};
+
+static EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL;
+static EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL;
+static EWRAM_DATA struct DungeonMapPreviewManagerStruct * sDungeonMapPreviewManager = NULL;
+static EWRAM_DATA struct UnkStruct_20399E0 * gUnknown_20399E0 = NULL;
+static EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL;
+static EWRAM_DATA struct UnkStruct_20399E8 * gUnknown_20399E8 = NULL;
+static EWRAM_DATA struct UnkStruct_20399EC * gUnknown_20399EC = NULL;
+static EWRAM_DATA struct UnkStruct_20399F0 * gUnknown_20399F0[3] = {};
+static EWRAM_DATA struct UnkStruct_20399FC * gUnknown_20399FC = NULL;
+
+static void sub_80BFFD0(void);
+static void CB2_OpenRegionMap(void);
+static bool8 HandleLoadRegionMapGfx(void);
+static void sub_80C03E8(void);
+static void sub_80C04E4(u8 taskId);
+static void sub_80C07F8(u8 taskId);
+static void sub_80C0820(u8 taskId);
+static void sub_80C08B4(void);
+static void NullVBlankHBlankCallbacks(void);
+static void sub_80C08F4(void);
+static void ResetGpu(void);
+static void SetBgTilemapBuffers(void);
+static void ResetOamForRegionMap(void);
+static void SetBg0andBg3Visibility(u8 a0);
+static void sub_80C0AB8(void);
+static void sub_80C0B18(void);
+static void sub_80C0B9C(void);
+static void sub_80C0BB0(void);
+static void sub_80C0CC8(u8 bg, u16 *map);
+static bool8 GetRegionMapPermission(u8 a0);
+static u8 GetWhichRegionMap(void);
+static void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc);
+static void sub_80C1098(u8 taskId);
+static void sub_80C1280(u8 taskId);
+static bool8 sub_80C12EC(void);
+static void sub_80C1324(u8 bg, u16 *map);
+static void sub_80C1390(void);
+static bool8 sub_80C144C(void);
+static bool8 sub_80C1478(void);
+static bool8 LoadAndCreateSelectionCursorSpriteGfx(void);
+static void CreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag);
+static void RealCreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag);
+static void DestroySelectionCursorSprites(void);
+static void RegionMapCreateDungeonMapPreview(u8 a0, u8 taskId, TaskFunc taskFunc);
+static void Task_PrepDungeonMapPreviewAndFlavorText(u8 taskId);
+static void Task_DrawDungeonMapPreviewAndFlavorText(u8 taskId);
+static void DestroyMapPreviewAssets(u8 taskId);
+static void sub_80C1E94(void);
+static void CopyMapPreviewTilemapToBgTilemapBuffer(u8 bgId, const u16 * tilemap);
+static bool8 sub_80C1F80(bool8 a0);
+static void sub_80C2208(u8 taskId, TaskFunc taskFunc);
+static void sub_80C24BC(void);
+static void sub_80C267C(u8 taskId);
+static void sub_80C25BC(void);
+static void sub_80C2604(void);
+static bool8 sub_80C29A4(void);
+static void sub_80C2B48(void);
+static void sub_80C2C1C(u8 taskId);
+static void sub_80C2C7C(u8 taskId);
+static bool8 sub_80C2E1C(void);
+static void sub_80C3008(u16 a0, u16 a1);
+static void sub_80C309C(void);
+static void sub_80C3154(bool8 a0);
+static void sub_80C3178(void);
+static void sub_80C3188(void);
+static u8 sub_80C31C0(void);
+static u8 sub_80C3348(void);
+static u8 sub_80C3400(void);
+static void sub_80C3418(void);
+static u16 GetMapCursorX(void);
+static u16 GetMapCursorY(void);
+static u16 sub_80C3520(void);
+static u16 GetMapSecUnderCursor(void);
+static u8 sub_80C35DC(u8 a0);
+static u8 sub_80C3878(u8 a0);
+static u8 sub_80C3AC8(u8 a0);
+static void GetPlayerPositionOnRegionMap_HandleOverrides(void);
+static u8 GetSelectedMapSection(u8 a0, u8 a1, s16 a2, s16 a3);
+static void sub_80C41D8(u16 a0, u16 a1);
+static void sub_80C4244(void);
+static void sub_80C4324(bool8 a0);
+static void sub_80C4348(void);
+static u16 sub_80C4380(void);
+static u16 sub_80C438C(void);
+static void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
+static void sub_80C440C(u8 taskId);
+static void sub_80C44E4(u8 taskId);
+static void sub_80C4750(void);
+static void sub_80C47F0(void);
+static void sub_80C48BC(u8 a0, u8 a1, bool8 a2);
+static void sub_80C4960(u8 a0, u8 a1, bool8 a2);
+static void sub_80C4A04(void);
+static bool8 sub_80C4AAC(u8 a0);
+static bool8 sub_80C4B30(u8 a0);
+static void sub_80C4BE4(void);
+static void sub_80C4C2C(u8 a0, u16 a1, u16 a2);
+static void sub_80C4C48(u16 a0);
+static void sub_80C4C5C(u16 a0, u16 a1);
+static void sub_80C4C74(u16 a0, u16 a1);
+static void sub_80C4C88(u16 a0);
+static void sub_80C4C9C(u8 a0, u8 a1);
+static void SetGpuWindowDims(u8 a0, const struct GpuWindowParams *a1);
+static void sub_80C4D30(void);
+static void sub_80C4E18(const u8 *str);
+static void sub_80C4E74(const u8 *str);
+static void sub_80C4ED0(bool8 a0);
+static void sub_80C4F08(u8 taskId);
+static void sub_80C51E8(void);
+static void sub_80C5208(u8 taskId);
+static void sub_80C527C(u16 a0);
+
+#include "data/text/map_section_names.h"
+
+static const u16 gUnknown_83EF23C[] = INCBIN_U16("graphics/region_map/unk_83EF23C.gbapal");
+static const u16 gUnknown_83EF25C[] = INCBIN_U16("graphics/region_map/unk_83EF25C.gbapal");
+static const u16 gUnknown_83EF27C[] = INCBIN_U16("graphics/region_map/unk_83EF27C.gbapal");
+static const u16 gUnknown_83EF29C[] = INCBIN_U16("graphics/region_map/unk_83EF29C.gbapal");
+static const u16 gUnknown_83EF2BC[] = INCBIN_U16("graphics/region_map/unk_83EF2BC.gbapal");
+static const u16 gUnknown_83EF2DC[] = INCBIN_U16("graphics/region_map/unk_83EF2DC.gbapal");
+static const u16 unref_83EF37C[] = {
+ RGB(0, 0, 31),
+ RGB(0, 12, 31),
+ RGB_WHITE,
+ RGB_WHITE
+};
+static const u16 sSelectionCursorPals[] = INCBIN_U16("graphics/region_map/unk_83EF384.gbapal");
+static const u16 gUnknown_83EF3A4[] = INCBIN_U16("graphics/region_map/unk_83EF3A4.gbapal");
+static const u32 sSelectionCursorLeftTiles[] = INCBIN_U32("graphics/region_map/unk_83EF3C4.4bpp.lz");
+static const u32 sSelectionCursorRightTiles[] = INCBIN_U32("graphics/region_map/unk_83EF450.4bpp.lz");
+static const u32 gUnknown_83EF4E0[] = INCBIN_U32("graphics/region_map/unk_83EF4E0.4bpp.lz");
+static const u32 gUnknown_83EF524[] = INCBIN_U32("graphics/region_map/unk_83EF524.4bpp.lz");
+static const u32 gUnknown_83EF59C[] = INCBIN_U32("graphics/region_map/unk_83EF59C.4bpp.lz");
+static const u32 gUnknown_83EF61C[] = INCBIN_U32("graphics/region_map/unk_83EF61C.4bpp.lz");
+static const u32 gUnknown_83F0330[] = INCBIN_U32("graphics/region_map/unk_83F0330.4bpp.lz");
+static const u32 gUnknown_83F0580[] = INCBIN_U32("graphics/region_map/unk_83F0580.bin.lz");
+static const u32 sRegionMapLayout_Kanto[] = INCBIN_U32("graphics/region_map/unk_83F089C.bin.lz");
+static const u32 sRegionMapLayout_Sevii123[] = INCBIN_U32("graphics/region_map/unk_83F0AFC.bin.lz");
+static const u32 sRegionMapLayout_Sevii45[] = INCBIN_U32("graphics/region_map/unk_83F0C0C.bin.lz");
+static const u32 sRegionMapLayout_Sevii67[] = INCBIN_U32("graphics/region_map/unk_83F0CF0.bin.lz");
+static const u32 gUnknown_83F0E0C[] = INCBIN_U32("graphics/region_map/unk_83F0E0C.bin.lz");
+static const u32 gUnknown_83F0F1C[] = INCBIN_U32("graphics/region_map/unk_83F0F1C.bin.lz");
+static const u32 gUnknown_83F1084[] = INCBIN_U32("graphics/region_map/unk_83F1084.bin.lz");
+static const u32 gUnknown_83F1190[] = INCBIN_U32("graphics/region_map/unk_83F1190.bin.lz");
+static const u32 gUnknown_83F12CC[] = INCBIN_U32("graphics/region_map/unk_83F12CC.4bpp.lz");
+static const u32 gUnknown_83F13EC[] = INCBIN_U32("graphics/region_map/unk_83F13EC.4bpp.lz");
+static const u32 gUnknown_83F1550[] = INCBIN_U32("graphics/region_map/unk_83F1550.4bpp.lz");
+static const u32 gUnknown_83F1640[] = INCBIN_U32("graphics/region_map/unk_83F1640.4bpp.lz");
+static const u32 gUnknown_83F1738[] = INCBIN_U32("graphics/region_map/unk_83F1738.4bpp.lz");
+static const u32 gUnknown_83F1804[] = INCBIN_U32("graphics/region_map/unk_83F1804.4bpp.lz");
+static const u32 gUnknown_83F18D8[] = INCBIN_U32("graphics/region_map/unk_83F18D8.4bpp.lz");
+static const u32 gUnknown_83F1908[] = INCBIN_U32("graphics/region_map/unk_83F1908.4bpp.lz");
+static const u32 gUnknown_83F1978[] = INCBIN_U32("graphics/region_map/unk_83F1978.4bpp.lz");
+static const u32 gUnknown_83F19A0[] = INCBIN_U32("graphics/region_map/unk_83F19A0.bin.lz");
+
+static const struct BgTemplate gUnknown_83F1A50[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 23,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }
+};
+
+static const struct WindowTemplate gUnknown_83F1A60[] = {
+ {
+ .bg = 3,
+ .tilemapLeft = 3,
+ .tilemapTop = 2,
+ .width = 15,
+ .height = 2,
+ .paletteNum = 12,
+ .baseBlock = 0x001
+ }, {
+ .bg = 3,
+ .tilemapLeft = 3,
+ .tilemapTop = 4,
+ .width = 15,
+ .height = 2,
+ .paletteNum = 12,
+ .baseBlock = 0x01f
+ }, {
+ .bg = 3,
+ .tilemapLeft = 3,
+ .tilemapTop = 6,
+ .width = 25,
+ .height = 11,
+ .paletteNum = 12,
+ .baseBlock = 0x03d
+ }, {
+ .bg = 3,
+ .tilemapLeft = 18,
+ .tilemapTop = 0,
+ .width = 5,
+ .height = 2,
+ .paletteNum = 12,
+ .baseBlock = 0x150
+ }, {
+ .bg = 3,
+ .tilemapLeft = 24,
+ .tilemapTop = 0,
+ .width = 5,
+ .height = 2,
+ .paletteNum = 12,
+ .baseBlock = 0x15a
+ }, DUMMY_WIN_TEMPLATE
+};
+
+ALIGNED(4) const u8 sTextColor_White[] = {0, 1, 2};
+ALIGNED(4) const u8 sTextColor_Green[] = {0, 7, 2};
+ALIGNED(4) const u8 gUnknown_83F1A98[] = {0, 10, 2};
+
+static const u8 *const gUnknown_83F1A9C[] = {
+ sTextColor_Green,
+ gUnknown_83F1A98
+};
+
+static const u8 sSeviiMapsecs[3][30] = {
+ {
+ MAPSEC_ONE_ISLAND,
+ MAPSEC_TWO_ISLAND,
+ MAPSEC_THREE_ISLAND,
+ MAPSEC_KINDLE_ROAD,
+ MAPSEC_TREASURE_BEACH,
+ MAPSEC_CAPE_BRINK,
+ MAPSEC_BOND_BRIDGE,
+ MAPSEC_THREE_ISLE_PORT,
+ MAPSEC_MT_EMBER,
+ MAPSEC_BERRY_FOREST,
+ MAPSEC_THREE_ISLE_PATH,
+ MAPSEC_EMBER_SPA,
+ MAPSEC_NONE
+ }, {
+ MAPSEC_FOUR_ISLAND,
+ MAPSEC_FIVE_ISLAND,
+ MAPSEC_SEVII_ISLE_6,
+ MAPSEC_SEVII_ISLE_7,
+ MAPSEC_SEVII_ISLE_8,
+ MAPSEC_SEVII_ISLE_9,
+ MAPSEC_RESORT_GORGEOUS,
+ MAPSEC_WATER_LABYRINTH,
+ MAPSEC_FIVE_ISLE_MEADOW,
+ MAPSEC_MEMORIAL_PILLAR,
+ MAPSEC_NAVEL_ROCK,
+ MAPSEC_ICEFALL_CAVE,
+ MAPSEC_ROCKET_WAREHOUSE,
+ MAPSEC_LOST_CAVE,
+ MAPSEC_NONE
+ }, {
+ MAPSEC_SEVEN_ISLAND,
+ MAPSEC_SIX_ISLAND,
+ MAPSEC_OUTCAST_ISLAND,
+ MAPSEC_GREEN_PATH,
+ MAPSEC_WATER_PATH,
+ MAPSEC_RUIN_VALLEY,
+ MAPSEC_TRAINER_TOWER,
+ MAPSEC_CANYON_ENTRANCE,
+ MAPSEC_SEVAULT_CANYON,
+ MAPSEC_TANOBY_RUINS,
+ MAPSEC_SEVII_ISLE_22,
+ MAPSEC_SEVII_ISLE_23,
+ MAPSEC_SEVII_ISLE_24,
+ MAPSEC_TRAINER_TOWER_2,
+ MAPSEC_DOTTED_HOLE,
+ MAPSEC_PATTERN_BUSH,
+ MAPSEC_ALTERING_CAVE,
+ MAPSEC_TANOBY_CHAMBERS,
+ MAPSEC_TANOBY_KEY,
+ MAPSEC_BIRTH_ISLAND,
+ MAPSEC_MONEAN_CHAMBER,
+ MAPSEC_LIPTOO_CHAMBER,
+ MAPSEC_WEEPTH_CHAMBER,
+ MAPSEC_DILFORD_CHAMBER,
+ MAPSEC_SCUFIB_CHAMBER,
+ MAPSEC_RIXY_CHAMBER,
+ MAPSEC_VIAPOIS_CHAMBER,
+ MAPSEC_NONE
+ }
+};
+
+ALIGNED(4) const bool8 sRegionMapPermissions[3][4] = {
+ {TRUE , TRUE , TRUE , FALSE},
+ {FALSE, FALSE, FALSE, FALSE},
+ {FALSE, FALSE, FALSE, TRUE }
+};
+
+static const struct GpuWindowParams sStdWindowDims[3] = {
+ {0x18, 0x10, 0x90, 0x20},
+ {0x18, 0x20, 0x90, 0x30},
+ {0x00, 0x00, 0x00, 0x00}
+};
+
+static const struct OamData sSelectionCursorOam = {
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32)
+};
+
+static const union AnimCmd gUnknown_83F1B2C[] = {
+ ANIMCMD_FRAME(0x00, 20),
+ ANIMCMD_FRAME(0x10, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSelectionCursorAnims[] = {
+ gUnknown_83F1B2C
+};
+
+static const struct UnkStruct_83F1B3C sDungeonHighlights[] = {
+ {
+ .id = MAPSEC_VIRIDIAN_FOREST,
+ .name = gMapSecName_ViridianForest,
+ .desc = gText_RegionMap_AreaDesc_ViridianForest
+ }, {
+ .id = MAPSEC_MT_MOON,
+ .name = gMapSecName_MtMoon,
+ .desc = gText_RegionMap_AreaDesc_MtMoon
+ }, {
+ .id = MAPSEC_DIGLETTS_CAVE,
+ .name = gMapSecName_DiglettsCave,
+ .desc = gText_RegionMap_AreaDesc_DiglettsCave
+ }, {
+ .id = MAPSEC_KANTO_VICTORY_ROAD,
+ .name = gMapSecName_VictoryRoad,
+ .desc = gText_RegionMap_AreaDesc_VictoryRoad
+ }, {
+ .id = MAPSEC_POKEMON_MANSION,
+ .name = gMapSecName_PokemonMansion,
+ .desc = gText_RegionMap_AreaDesc_PokemonMansion
+ }, {
+ .id = MAPSEC_KANTO_SAFARI_ZONE,
+ .name = gMapSecName_SafariZone,
+ .desc = gText_RegionMap_AreaDesc_SafariZone
+ }, {
+ .id = MAPSEC_ROCK_TUNNEL,
+ .name = gMapSecName_RockTunnel,
+ .desc = gText_RegionMap_AreaDesc_RockTunnel
+ }, {
+ .id = MAPSEC_SEAFOAM_ISLANDS,
+ .name = gMapSecName_SeafoamIslands,
+ .desc = gText_RegionMap_AreaDesc_SeafoamIslands
+ }, {
+ .id = MAPSEC_POKEMON_TOWER,
+ .name = gMapSecName_PokemonTower,
+ .desc = gText_RegionMap_AreaDesc_PokemonTower
+ }, {
+ .id = MAPSEC_CERULEAN_CAVE,
+ .name = gMapSecName_CeruleanCave,
+ .desc = gText_RegionMap_AreaDesc_CeruleanCave
+ }, {
+ .id = MAPSEC_POWER_PLANT,
+ .name = gMapSecName_PowerPlant,
+ .desc = gText_RegionMap_AreaDesc_PowerPlant
+ }, {
+ .id = MAPSEC_MT_EMBER,
+ .name = gMapSecName_MtEmber,
+ .desc = gText_RegionMap_AreaDesc_MtEmber
+ }, {
+ .id = MAPSEC_BERRY_FOREST,
+ .name = gMapSecName_BerryForest,
+ .desc = gText_RegionMap_AreaDesc_BerryForest
+ }, {
+ .id = MAPSEC_ICEFALL_CAVE,
+ .name = gMapSecName_IcefallCave,
+ .desc = gText_RegionMap_AreaDesc_IcefallCave
+ }, {
+ .id = MAPSEC_LOST_CAVE,
+ .name = gMapSecName_LostCave,
+ .desc = gText_RegionMap_AreaDesc_LostCave
+ }, {
+ .id = MAPSEC_TANOBY_CHAMBERS,
+ .name = gMapSecName_TanobyChambers,
+ .desc = gText_RegionMap_AreaDesc_TanobyRuins
+ }, {
+ .id = MAPSEC_ALTERING_CAVE,
+ .name = gMapSecName_AlteringCave,
+ .desc = gText_RegionMap_AreaDesc_AlteringCave
+ }, {
+ .id = MAPSEC_PATTERN_BUSH,
+ .name = gMapSecName_PatternBush,
+ .desc = gText_RegionMap_AreaDesc_PatternBush
+ }, {
+ .id = MAPSEC_DOTTED_HOLE,
+ .name = gMapSecName_DottedHole,
+ .desc = gText_RegionMap_AreaDesc_DottedHole
+ }
+};
+
+static const struct OamData gUnknown_83F1C20 = {
+ .shape = SPRITE_SHAPE(32x64),
+ .size = SPRITE_SIZE(32x64)
+};
+
+static const union AnimCmd gAnimCmd_83F1C28[] = {
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const gUnknown_83F1C30[] = {
+ gAnimCmd_83F1C28
+};
+
+static const struct GpuWindowParams gUnknown_83F1C34 = {
+ 0x18, 0x10, 0xD8, 0xA0
+};
+
+static const struct OamData gUnknown_83F1C3C = {
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .priority = 2
+};
+
+static const union AnimCmd gAnimCmd_83F1C44[] = {
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const gUnknown_83F1C50[] = {
+ gAnimCmd_83F1C44
+};
+
+static const struct OamData gUnknown_83F1C54 = {
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .priority = 2
+};
+
+static const union AnimCmd gAnimCmd_83F1C5C[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gUnknown_83F1C64[] = {
+ gAnimCmd_83F1C5C
+};
+
+static const struct OamData gUnknown_83F1C68 = {
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16),
+ .priority = 2
+};
+
+static const struct OamData gUnknown_83F1C70 = {
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8),
+ .priority = 2
+};
+
+static const union AnimCmd gAnimCmd_83F1C78[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_FRAME(4, 60),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gAnimCmd_83F1C84[] = {
+ ANIMCMD_FRAME(1, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd gAnimCmd_83F1C8C[] = {
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const gUnknown_83F1C94[] = {
+ gAnimCmd_83F1C78
+};
+
+static const union AnimCmd *const gUnknown_83F1C98[] = {
+ gAnimCmd_83F1C84,
+ gAnimCmd_83F1C8C
+};
+
+static const u16 sWinFlags[] = {
+ DISPCNT_WIN0_ON,
+ DISPCNT_WIN1_ON
+};
+
+static const u8 sWinRegs[][2] = {
+ {REG_OFFSET_WIN0V, REG_OFFSET_WIN0H},
+ {REG_OFFSET_WIN1V, REG_OFFSET_WIN1H}
+};
+
+static const u8 gUnknown_83F1CA8[] = {15, 1, 2};
+
+static const u8 *const sMapNames[] = {
+ [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = gMapSecName_PalletTown,
+ [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = gMapSecName_ViridianCity,
+ [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = gMapSecName_PewterCity,
+ [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = gMapSecName_CeruleanCity,
+ [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = gMapSecName_LavenderTown,
+ [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = gMapSecName_VermilionCity,
+ [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = gMapSecName_CeladonCity,
+ [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = gMapSecName_FuchsiaCity,
+ [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = gMapSecName_CinnabarIsland,
+ [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = gMapSecName_IndigoPlateau,
+ [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = gMapSecName_SaffronCity,
+ [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = gMapSecName_Route4,
+ [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = gMapSecName_Route10,
+ [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = gMapSecName_Route1,
+ [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = gMapSecName_Route2,
+ [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = gMapSecName_Route3,
+ [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = gMapSecName_Route4_2,
+ [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = gMapSecName_Route5,
+ [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = gMapSecName_Route6,
+ [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = gMapSecName_Route7,
+ [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = gMapSecName_Route8,
+ [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = gMapSecName_Route9,
+ [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = gMapSecName_Route10_2,
+ [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = gMapSecName_Route11,
+ [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = gMapSecName_Route12,
+ [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = gMapSecName_Route13,
+ [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = gMapSecName_Route14,
+ [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = gMapSecName_Route15,
+ [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = gMapSecName_Route16,
+ [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = gMapSecName_Route17,
+ [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = gMapSecName_Route18,
+ [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = gMapSecName_Route19,
+ [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = gMapSecName_Route20,
+ [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = gMapSecName_Route21,
+ [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = gMapSecName_Route22,
+ [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = gMapSecName_Route23,
+ [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = gMapSecName_Route24,
+ [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = gMapSecName_Route25,
+ [MAPSEC_VIRIDIAN_FOREST - MAPSECS_KANTO] = gMapSecName_ViridianForest,
+ [MAPSEC_MT_MOON - MAPSECS_KANTO] = gMapSecName_MtMoon,
+ [MAPSEC_S_S_ANNE - MAPSECS_KANTO] = gMapSecName_SSAnne,
+ [MAPSEC_UNDERGROUND_PATH - MAPSECS_KANTO] = gMapSecName_UndergroundPath,
+ [MAPSEC_UNDERGROUND_PATH_2 - MAPSECS_KANTO] = gMapSecName_UndergroundPath_2,
+ [MAPSEC_DIGLETTS_CAVE - MAPSECS_KANTO] = gMapSecName_DiglettsCave,
+ [MAPSEC_KANTO_VICTORY_ROAD - MAPSECS_KANTO] = gMapSecName_VictoryRoad,
+ [MAPSEC_ROCKET_HIDEOUT - MAPSECS_KANTO] = gMapSecName_RocketHideout,
+ [MAPSEC_SILPH_CO - MAPSECS_KANTO] = gMapSecName_SilphCo,
+ [MAPSEC_POKEMON_MANSION - MAPSECS_KANTO] = gMapSecName_PokemonMansion,
+ [MAPSEC_KANTO_SAFARI_ZONE - MAPSECS_KANTO] = gMapSecName_SafariZone,
+ [MAPSEC_POKEMON_LEAGUE - MAPSECS_KANTO] = gMapSecName_PokemonLeague,
+ [MAPSEC_ROCK_TUNNEL - MAPSECS_KANTO] = gMapSecName_RockTunnel,
+ [MAPSEC_SEAFOAM_ISLANDS - MAPSECS_KANTO] = gMapSecName_SeafoamIslands,
+ [MAPSEC_POKEMON_TOWER - MAPSECS_KANTO] = gMapSecName_PokemonTower,
+ [MAPSEC_CERULEAN_CAVE - MAPSECS_KANTO] = gMapSecName_CeruleanCave,
+ [MAPSEC_POWER_PLANT - MAPSECS_KANTO] = gMapSecName_PowerPlant,
+ [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = gMapSecName_OneIsland,
+ [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = gMapSecName_TwoIsland,
+ [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = gMapSecName_ThreeIsland,
+ [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = gMapSecName_FourIsland,
+ [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = gMapSecName_FiveIsland,
+ [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = gMapSecName_SevenIsland,
+ [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = gMapSecName_SixIsland,
+ [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = gMapSecName_KindleRoad,
+ [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = gMapSecName_TreasureBeach,
+ [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = gMapSecName_CapeBrink,
+ [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = gMapSecName_BondBridge,
+ [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = gMapSecName_ThreeIslePort,
+ [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = gMapSecName_SeviiIsle6,
+ [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = gMapSecName_SeviiIsle7,
+ [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = gMapSecName_SeviiIsle8,
+ [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = gMapSecName_SeviiIsle9,
+ [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = gMapSecName_ResortGorgeous,
+ [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = gMapSecName_WaterLabyrinth,
+ [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = gMapSecName_FiveIsleMeadow,
+ [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = gMapSecName_MemorialPillar,
+ [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = gMapSecName_OutcastIsland,
+ [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = gMapSecName_GreenPath,
+ [MAPSEC_WATER_PATH - MAPSECS_KANTO] = gMapSecName_WaterPath,
+ [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = gMapSecName_RuinValley,
+ [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = gMapSecName_TrainerTower,
+ [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = gMapSecName_CanyonEntrance,
+ [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = gMapSecName_SevaultCanyon,
+ [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = gMapSecName_TanobyRuins,
+ [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = gMapSecName_SeviiIsle22,
+ [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = gMapSecName_SeviiIsle23,
+ [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = gMapSecName_SeviiIsle24,
+ [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = gMapSecName_NavelRock,
+ [MAPSEC_MT_EMBER - MAPSECS_KANTO] = gMapSecName_MtEmber,
+ [MAPSEC_BERRY_FOREST - MAPSECS_KANTO] = gMapSecName_BerryForest,
+ [MAPSEC_ICEFALL_CAVE - MAPSECS_KANTO] = gMapSecName_IcefallCave,
+ [MAPSEC_ROCKET_WAREHOUSE - MAPSECS_KANTO] = gMapSecName_RocketWarehouse,
+ [MAPSEC_TRAINER_TOWER_2 - MAPSECS_KANTO] = gMapSecName_TrainerTower_2,
+ [MAPSEC_DOTTED_HOLE - MAPSECS_KANTO] = gMapSecName_DottedHole,
+ [MAPSEC_LOST_CAVE - MAPSECS_KANTO] = gMapSecName_LostCave,
+ [MAPSEC_PATTERN_BUSH - MAPSECS_KANTO] = gMapSecName_PatternBush,
+ [MAPSEC_ALTERING_CAVE - MAPSECS_KANTO] = gMapSecName_AlteringCave,
+ [MAPSEC_TANOBY_CHAMBERS - MAPSECS_KANTO] = gMapSecName_TanobyChambers,
+ [MAPSEC_THREE_ISLE_PATH - MAPSECS_KANTO] = gMapSecName_ThreeIslePath,
+ [MAPSEC_TANOBY_KEY - MAPSECS_KANTO] = gMapSecName_TanobyKey,
+ [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = gMapSecName_BirthIsland,
+ [MAPSEC_MONEAN_CHAMBER - MAPSECS_KANTO] = gMapSecName_MoneanChamber,
+ [MAPSEC_LIPTOO_CHAMBER - MAPSECS_KANTO] = gMapSecName_LiptooChamber,
+ [MAPSEC_WEEPTH_CHAMBER - MAPSECS_KANTO] = gMapSecName_WeepthChamber,
+ [MAPSEC_DILFORD_CHAMBER - MAPSECS_KANTO] = gMapSecName_DilfordChamber,
+ [MAPSEC_SCUFIB_CHAMBER - MAPSECS_KANTO] = gMapSecName_ScufibChamber,
+ [MAPSEC_RIXY_CHAMBER - MAPSECS_KANTO] = gMapSecName_RixyChamber,
+ [MAPSEC_VIAPOIS_CHAMBER - MAPSECS_KANTO] = gMapSecName_ViapoisChamber,
+ [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = gMapSecName_EmberSpa,
+ [MAPSEC_SPECIAL_AREA - MAPSECS_KANTO] = gMapSecName_CeladonDept
+};
+
+static const u16 sMapSectionTopLeftCorners[0xC6][2] = {
+ [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x04, 0x0b},
+ [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x04, 0x08},
+ [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x04, 0x04},
+ [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = {0x0e, 0x03},
+ [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = {0x12, 0x06},
+ [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = {0x0e, 0x09},
+ [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = {0x0b, 0x06},
+ [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = {0x0c, 0x0c},
+ [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = {0x04, 0x0e},
+ [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = {0x02, 0x03},
+ [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = {0x0e, 0x06},
+ [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = {0x08, 0x03},
+ [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = {0x12, 0x03},
+ [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = {0x04, 0x09},
+ [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = {0x04, 0x05},
+ [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = {0x05, 0x04},
+ [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = {0x08, 0x03},
+ [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = {0x0e, 0x04},
+ [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = {0x0e, 0x07},
+ [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = {0x0c, 0x06},
+ [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = {0x0f, 0x06},
+ [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = {0x0f, 0x03},
+ [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = {0x12, 0x03},
+ [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = {0x0f, 0x09},
+ [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = {0x12, 0x07},
+ [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = {0x10, 0x0b},
+ [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = {0x0f, 0x0b},
+ [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = {0x0d, 0x0c},
+ [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = {0x07, 0x06},
+ [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = {0x07, 0x07},
+ [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = {0x07, 0x0c},
+ [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = {0x0c, 0x0d},
+ [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = {0x05, 0x0e},
+ [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = {0x04, 0x0c},
+ [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = {0x02, 0x08},
+ [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = {0x02, 0x04},
+ [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = {0x0e, 0x01},
+ [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = {0x0f, 0x01},
+ [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = {0x01, 0x08},
+ [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = {0x09, 0x09},
+ [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = {0x12, 0x0c},
+ [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = {0x03, 0x04},
+ [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = {0x10, 0x0b},
+ [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = {0x05, 0x08},
+ [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = {0x11, 0x05},
+ [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = {0x02, 0x03},
+ [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = {0x01, 0x09},
+ [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = {0x09, 0x07},
+ [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = {0x0d, 0x0c},
+ [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = {0x12, 0x0d},
+ [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = {0x04, 0x03},
+ [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = {0x05, 0x04},
+ [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = {0x01, 0x04},
+ [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = {0x04, 0x05},
+ [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = {0x10, 0x09},
+ [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = {0x0e, 0x0a},
+ [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = {0x11, 0x0a},
+ [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = {0x12, 0x0c},
+ [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = {0x0f, 0x00},
+ [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = {0x0f, 0x03},
+ [MAPSEC_WATER_PATH - MAPSECS_KANTO] = {0x12, 0x03},
+ [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = {0x10, 0x07},
+ [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = {0x05, 0x06},
+ [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = {0x05, 0x09},
+ [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = {0x06, 0x09},
+ [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = {0x03, 0x0c},
+ [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = {0x09, 0x0c},
+ [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = {0x03, 0x0e},
+ [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = {0x02, 0x0c},
+ [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = {0x0a, 0x08},
+ [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {0x12, 0x0d},
+};
+
+static const u16 sMapSectionDimensions[0xC6][2] = {
+ [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = {0x04, 0x01},
+ [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = {0x06, 0x01},
+ [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = {0x02, 0x01},
+ [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = {0x03, 0x01},
+ [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = {0x03, 0x01},
+ [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = {0x03, 0x01},
+ [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = {0x01, 0x05},
+ [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = {0x02, 0x01},
+ [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = {0x02, 0x01},
+ [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = {0x04, 0x01},
+ [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = {0x01, 0x05},
+ [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = {0x05, 0x01},
+ [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = {0x07, 0x01},
+ [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = {0x02, 0x01},
+ [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = {0x01, 0x04},
+ [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = {0x02, 0x01},
+ [MAPSEC_VIRIDIAN_FOREST - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_MT_MOON - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_S_S_ANNE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_UNDERGROUND_PATH - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_UNDERGROUND_PATH_2 - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_DIGLETTS_CAVE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_KANTO_VICTORY_ROAD - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ROCKET_HIDEOUT - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SILPH_CO - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_POKEMON_MANSION - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_KANTO_SAFARI_ZONE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_POKEMON_LEAGUE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ROCK_TUNNEL - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SEAFOAM_ISLANDS - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_POKEMON_TOWER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_CERULEAN_CAVE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_POWER_PLANT - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = {0x01, 0x06},
+ [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = {0x04, 0x01},
+ [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = {0x02, 0x01},
+ [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = {0x03, 0x01},
+ [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = {0x03, 0x01},
+ [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = {0x03, 0x01},
+ [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = {0x03, 0x01},
+ [MAPSEC_WATER_PATH - MAPSECS_KANTO] = {0x01, 0x05},
+ [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = {0x02, 0x02},
+ [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = {0x01, 0x02},
+ [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = {0x07, 0x01},
+ [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = {0x06, 0x01},
+ [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = {0x01, 0x03},
+ [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_MT_EMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_BERRY_FOREST - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ICEFALL_CAVE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ROCKET_WAREHOUSE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_TRAINER_TOWER_2 - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_DOTTED_HOLE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_LOST_CAVE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_PATTERN_BUSH - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_ALTERING_CAVE - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_TANOBY_CHAMBERS - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_THREE_ISLE_PATH - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_TANOBY_KEY - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_MONEAN_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_LIPTOO_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_WEEPTH_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_DILFORD_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_SCUFIB_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_RIXY_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_VIAPOIS_CHAMBER - MAPSECS_KANTO] = {0x01, 0x01},
+ [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = {0x01, 0x01}
+};
+
+static const u8 sRegionMapSections_Kanto[][15][22] = {
+ {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_ROUTE_25,
+ MAPSEC_ROUTE_25, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_24, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_INDIGO_PLATEAU, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_ROUTE_4_FLYDUP, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4, MAPSEC_ROUTE_4,
+ MAPSEC_ROUTE_4, MAPSEC_CERULEAN_CITY, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_9, MAPSEC_ROUTE_10_FLYDUP,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_PEWTER_CITY, MAPSEC_ROUTE_3, MAPSEC_ROUTE_3,
+ MAPSEC_ROUTE_3, MAPSEC_ROUTE_3, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_5, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_5, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_10, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_ROUTE_16, MAPSEC_CELADON_CITY, MAPSEC_ROUTE_7,
+ MAPSEC_ROUTE_7, MAPSEC_SAFFRON_CITY, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_ROUTE_8, MAPSEC_LAVENDER_TOWN,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_23, MAPSEC_NONE, MAPSEC_ROUTE_2, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_22, MAPSEC_ROUTE_22, MAPSEC_VIRIDIAN_CITY, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_6,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VERMILION_CITY,
+ MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_11, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_1, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_17,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PALLET_TOWN, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_17, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_ROUTE_14, MAPSEC_ROUTE_13, MAPSEC_ROUTE_13, MAPSEC_ROUTE_12, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_18,
+ MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_ROUTE_18, MAPSEC_FUCHSIA_CITY, MAPSEC_ROUTE_15,
+ MAPSEC_ROUTE_15, MAPSEC_ROUTE_14, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_21, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROUTE_19, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CINNABAR_ISLAND, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20,
+ MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_20, MAPSEC_ROUTE_19,
+ MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE,
+ MAPSEC_NONE}
+ }, {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_MOON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CERULEAN_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ROCK_TUNNEL, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_VICTORY_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POWER_PLANT, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_VIRIDIAN_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DIGLETTS_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KANTO_SAFARI_ZONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_POKEMON_MANSION, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEAFOAM_ISLANDS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
+ }
+};
+
+static const u8 sRegionMapSections_Sevii123[][15][22] = {
+ {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_ONE_ISLAND, MAPSEC_KINDLE_ROAD, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CAPE_BRINK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TWO_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_TREASURE_BEACH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_BOND_BRIDGE, MAPSEC_THREE_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_THREE_ISLE_PORT, MAPSEC_THREE_ISLE_PORT, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
+ }, {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MT_EMBER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BERRY_FOREST, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
+ }
+};
+
+static const u8 sRegionMapSections_Sevii45[][15][22] = {
+ {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FOUR_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NAVEL_ROCK, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_RESORT_GORGEOUS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_WATER_LABYRINTH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLAND, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_FIVE_ISLE_MEADOW, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_MEMORIAL_PILLAR, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
+ }, {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ICEFALL_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_LOST_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
+ }
+};
+
+static const u8 sRegionMapSections_Sevii67[][15][22] = {
+ {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_OUTCAST_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_GREEN_PATH, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SIX_ISLAND, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TRAINER_TOWER, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_WATER_PATH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVEN_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_RUIN_VALLEY, MAPSEC_RUIN_VALLEY, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_CANYON_ENTRANCE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_SEVAULT_CANYON, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_TANOBY_RUINS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_BIRTH_ISLAND, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
+ }, {
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_ALTERING_CAVE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_PATTERN_BUSH, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_DOTTED_HOLE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_TANOBY_CHAMBERS, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE},
+ {MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE, MAPSEC_NONE}
+ }
+};
+
+static const u8 sMapsecToSpawn[][3] = {
+ [MAPSEC_PALLET_TOWN - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), SPAWN_PALLET_TOWN},
+ [MAPSEC_VIRIDIAN_CITY - MAPSECS_KANTO] = {MAP_GROUP(VIRIDIAN_CITY), MAP_NUM(VIRIDIAN_CITY), SPAWN_VIRIDIAN_CITY},
+ [MAPSEC_PEWTER_CITY - MAPSECS_KANTO] = {MAP_GROUP(PEWTER_CITY), MAP_NUM(PEWTER_CITY), SPAWN_PEWTER_CITY},
+ [MAPSEC_CERULEAN_CITY - MAPSECS_KANTO] = {MAP_GROUP(CERULEAN_CITY), MAP_NUM(CERULEAN_CITY), SPAWN_CERULEAN_CITY},
+ [MAPSEC_LAVENDER_TOWN - MAPSECS_KANTO] = {MAP_GROUP(LAVENDER_TOWN), MAP_NUM(LAVENDER_TOWN), SPAWN_LAVENDER_TOWN},
+ [MAPSEC_VERMILION_CITY - MAPSECS_KANTO] = {MAP_GROUP(VERMILION_CITY), MAP_NUM(VERMILION_CITY), SPAWN_VERMILION_CITY},
+ [MAPSEC_CELADON_CITY - MAPSECS_KANTO] = {MAP_GROUP(CELADON_CITY), MAP_NUM(CELADON_CITY), SPAWN_CELADON_CITY},
+ [MAPSEC_FUCHSIA_CITY - MAPSECS_KANTO] = {MAP_GROUP(FUCHSIA_CITY), MAP_NUM(FUCHSIA_CITY), SPAWN_FUCHSIA_CITY},
+ [MAPSEC_CINNABAR_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(CINNABAR_ISLAND), MAP_NUM(CINNABAR_ISLAND), SPAWN_CINNABAR_ISLAND},
+ [MAPSEC_INDIGO_PLATEAU - MAPSECS_KANTO] = {MAP_GROUP(INDIGO_PLATEAU_EXTERIOR), MAP_NUM(INDIGO_PLATEAU_EXTERIOR), SPAWN_INDIGO_PLATEAU},
+ [MAPSEC_SAFFRON_CITY - MAPSECS_KANTO] = {MAP_GROUP(SAFFRON_CITY), MAP_NUM(SAFFRON_CITY), SPAWN_SAFFRON_CITY},
+ [MAPSEC_ROUTE_4_FLYDUP - MAPSECS_KANTO] = {MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), SPAWN_ROUTE4},
+ [MAPSEC_ROUTE_10_FLYDUP - MAPSECS_KANTO] = {MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), SPAWN_ROUTE10},
+ [MAPSEC_ROUTE_1 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE1), MAP_NUM(ROUTE1), 0},
+ [MAPSEC_ROUTE_2 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE2), MAP_NUM(ROUTE2), 0},
+ [MAPSEC_ROUTE_3 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE3), MAP_NUM(ROUTE3), 0},
+ [MAPSEC_ROUTE_4 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE4), MAP_NUM(ROUTE4), 0},
+ [MAPSEC_ROUTE_5 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE5), MAP_NUM(ROUTE5), 0},
+ [MAPSEC_ROUTE_6 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE6), MAP_NUM(ROUTE6), 0},
+ [MAPSEC_ROUTE_7 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE7), MAP_NUM(ROUTE7), 0},
+ [MAPSEC_ROUTE_8 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE8), MAP_NUM(ROUTE8), 0},
+ [MAPSEC_ROUTE_9 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE9), MAP_NUM(ROUTE9), 0},
+ [MAPSEC_ROUTE_10 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE10), MAP_NUM(ROUTE10), 0},
+ [MAPSEC_ROUTE_11 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE11), MAP_NUM(ROUTE11), 0},
+ [MAPSEC_ROUTE_12 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE12), MAP_NUM(ROUTE12), 0},
+ [MAPSEC_ROUTE_13 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE13), MAP_NUM(ROUTE13), 0},
+ [MAPSEC_ROUTE_14 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE14), MAP_NUM(ROUTE14), 0},
+ [MAPSEC_ROUTE_15 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE15), MAP_NUM(ROUTE15), 0},
+ [MAPSEC_ROUTE_16 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE16), MAP_NUM(ROUTE16), 0},
+ [MAPSEC_ROUTE_17 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE17), MAP_NUM(ROUTE17), 0},
+ [MAPSEC_ROUTE_18 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE18), MAP_NUM(ROUTE18), 0},
+ [MAPSEC_ROUTE_19 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE19), MAP_NUM(ROUTE19), 0},
+ [MAPSEC_ROUTE_20 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE20), MAP_NUM(ROUTE20), 0},
+ [MAPSEC_ROUTE_21 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE21_NORTH), MAP_NUM(ROUTE21_NORTH), 0},
+ [MAPSEC_ROUTE_22 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE22), MAP_NUM(ROUTE22), 0},
+ [MAPSEC_ROUTE_23 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE23), MAP_NUM(ROUTE23), 0},
+ [MAPSEC_ROUTE_24 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE24), MAP_NUM(ROUTE24), 0},
+ [MAPSEC_ROUTE_25 - MAPSECS_KANTO] = {MAP_GROUP(ROUTE25), MAP_NUM(ROUTE25), 0},
+ [MAPSEC_VIRIDIAN_FOREST - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_MT_MOON - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_S_S_ANNE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_UNDERGROUND_PATH - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_UNDERGROUND_PATH_2 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_DIGLETTS_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_KANTO_VICTORY_ROAD - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_ROCKET_HIDEOUT - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_SILPH_CO - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_POKEMON_MANSION - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_KANTO_SAFARI_ZONE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_POKEMON_LEAGUE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_ROCK_TUNNEL - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_SEAFOAM_ISLANDS - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_POKEMON_TOWER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_CERULEAN_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_POWER_PLANT - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_ONE_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(ONE_ISLAND), MAP_NUM(ONE_ISLAND), SPAWN_ONE_ISLAND},
+ [MAPSEC_TWO_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(TWO_ISLAND), MAP_NUM(TWO_ISLAND), SPAWN_TWO_ISLAND},
+ [MAPSEC_THREE_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(THREE_ISLAND), MAP_NUM(THREE_ISLAND), SPAWN_THREE_ISLAND},
+ [MAPSEC_FOUR_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(FOUR_ISLAND), MAP_NUM(FOUR_ISLAND), SPAWN_FOUR_ISLAND},
+ [MAPSEC_FIVE_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND), MAP_NUM(FIVE_ISLAND), SPAWN_FIVE_ISLAND},
+ [MAPSEC_SEVEN_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND), MAP_NUM(SEVEN_ISLAND), SPAWN_SEVEN_ISLAND},
+ [MAPSEC_SIX_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND), MAP_NUM(SIX_ISLAND), SPAWN_SIX_ISLAND},
+ [MAPSEC_KINDLE_ROAD - MAPSECS_KANTO] = {MAP_GROUP(ONE_ISLAND_KINDLE_ROAD), MAP_NUM(ONE_ISLAND_KINDLE_ROAD), 0},
+ [MAPSEC_TREASURE_BEACH - MAPSECS_KANTO] = {MAP_GROUP(ONE_ISLAND_TREASURE_BEACH), MAP_NUM(ONE_ISLAND_TREASURE_BEACH), 0},
+ [MAPSEC_CAPE_BRINK - MAPSECS_KANTO] = {MAP_GROUP(TWO_ISLAND_CAPE_BRINK), MAP_NUM(TWO_ISLAND_CAPE_BRINK), 0},
+ [MAPSEC_BOND_BRIDGE - MAPSECS_KANTO] = {MAP_GROUP(THREE_ISLAND_BOND_BRIDGE), MAP_NUM(THREE_ISLAND_BOND_BRIDGE), 0},
+ [MAPSEC_THREE_ISLE_PORT - MAPSECS_KANTO] = {MAP_GROUP(THREE_ISLAND_PORT), MAP_NUM(THREE_ISLAND_PORT), 0},
+ [MAPSEC_SEVII_ISLE_6 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_50), MAP_NUM(UNKNOWN_MAP_03_50), 0},
+ [MAPSEC_SEVII_ISLE_7 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_51), MAP_NUM(UNKNOWN_MAP_03_51), 0},
+ [MAPSEC_SEVII_ISLE_8 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_52), MAP_NUM(UNKNOWN_MAP_03_52), 0},
+ [MAPSEC_SEVII_ISLE_9 - MAPSECS_KANTO] = {MAP_GROUP(UNKNOWN_MAP_03_53), MAP_NUM(UNKNOWN_MAP_03_53), 0},
+ [MAPSEC_RESORT_GORGEOUS - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_RESORT_GORGEOUS), MAP_NUM(FIVE_ISLAND_RESORT_GORGEOUS), 0},
+ [MAPSEC_WATER_LABYRINTH - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_WATER_LABYRINTH), MAP_NUM(FIVE_ISLAND_WATER_LABYRINTH), 0},
+ [MAPSEC_FIVE_ISLE_MEADOW - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_MEADOW), MAP_NUM(FIVE_ISLAND_MEADOW), 0},
+ [MAPSEC_MEMORIAL_PILLAR - MAPSECS_KANTO] = {MAP_GROUP(FIVE_ISLAND_MEMORIAL_PILLAR), MAP_NUM(FIVE_ISLAND_MEMORIAL_PILLAR), 0},
+ [MAPSEC_OUTCAST_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_OUTCAST_ISLAND), MAP_NUM(SIX_ISLAND_OUTCAST_ISLAND), 0},
+ [MAPSEC_GREEN_PATH - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_GREEN_PATH), MAP_NUM(SIX_ISLAND_GREEN_PATH), 0},
+ [MAPSEC_WATER_PATH - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_WATER_PATH), MAP_NUM(SIX_ISLAND_WATER_PATH), 0},
+ [MAPSEC_RUIN_VALLEY - MAPSECS_KANTO] = {MAP_GROUP(SIX_ISLAND_RUIN_VALLEY), MAP_NUM(SIX_ISLAND_RUIN_VALLEY), 0},
+ [MAPSEC_TRAINER_TOWER - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER), MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER), 0},
+ [MAPSEC_CANYON_ENTRANCE - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE), 0},
+ [MAPSEC_SEVAULT_CANYON - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_SEVAULT_CANYON), MAP_NUM(SEVEN_ISLAND_SEVAULT_CANYON), 0},
+ [MAPSEC_TANOBY_RUINS - MAPSECS_KANTO] = {MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS), 0},
+ [MAPSEC_SEVII_ISLE_22 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_SEVII_ISLE_23 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_SEVII_ISLE_24 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_NAVEL_ROCK - MAPSECS_KANTO] = {MAP_GROUP(NAVEL_ROCK_EXTERIOR), MAP_NUM(NAVEL_ROCK_EXTERIOR), 0},
+ [MAPSEC_MT_EMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_BERRY_FOREST - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_ICEFALL_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_ROCKET_WAREHOUSE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_TRAINER_TOWER_2 - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_DOTTED_HOLE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_LOST_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_PATTERN_BUSH - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_ALTERING_CAVE - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_TANOBY_CHAMBERS - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_THREE_ISLE_PATH - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_TANOBY_KEY - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_BIRTH_ISLAND - MAPSECS_KANTO] = {MAP_GROUP(BIRTH_ISLAND_EXTERIOR), MAP_NUM(BIRTH_ISLAND_EXTERIOR), 0},
+ [MAPSEC_MONEAN_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_LIPTOO_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_WEEPTH_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_DILFORD_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_SCUFIB_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_RIXY_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_VIAPOIS_CHAMBER - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+ [MAPSEC_EMBER_SPA - MAPSECS_KANTO] = {MAP_GROUP(PALLET_TOWN), MAP_NUM(PALLET_TOWN), 0},
+};
+
+static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint)
+{
+ int i;
+ int r, g, b;
+
+ for (i = 0; i < size; i++)
+ {
+ r = (*pal) & 0x1F;
+ g = ((*pal) >> 5) & 0x1F;
+ b = ((*pal) >> 10) & 0x1F;
+
+ r = (((r << 8) / 100) * tint) >> 8;
+ g = (((g << 8) / 100) * tint) >> 8;
+ b = (((b << 8) / 100) * tint) >> 8;
+
+ *pal = RGB2(r, g, b);
+ pal++;
+ }
+}
+
+static void sub_80BFEA0(void)
+{
+ u16 pal[16];
+ CpuCopy16(&gUnknown_83EF2DC[0x20], pal, sizeof(pal));
+ RegionMap_DarkenPalette(pal, NELEMS(pal), 95);
+ LoadPalette(pal, 0x20, 0x20);
+ LoadPalette(&gUnknown_83EF2DC[0x2F], 0x2F, sizeof(u16));
+}
+
+static void sub_80BFEDC(u8 kind)
+{
+ gUnknown_20399D4 = AllocZeroed(sizeof(struct UnkStruct_20399D4));
+ if (gUnknown_20399D4 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ else
+ {
+ gUnknown_2031DE0 = TRUE;
+ gUnknown_20399D4->mapType = kind;
+ gUnknown_20399D4->field_47A0 = 0;
+ gUnknown_20399D4->field_47A4 = 0;
+ gUnknown_20399D4->field_47A8 = 0;
+ sub_80BFFD0();
+ SetMainCallback2(CB2_OpenRegionMap);
+ }
+}
+
+void sub_80BFF50(u8 kind, MainCallback cb)
+{
+ gUnknown_20399D4 = AllocZeroed(sizeof(struct UnkStruct_20399D4));
+ if (gUnknown_20399D4 == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ else
+ {
+ gUnknown_2031DE0 = TRUE;
+ gUnknown_20399D4->mapType = kind;
+ gUnknown_20399D4->field_47A0 = 0;
+ gUnknown_20399D4->field_47A4 = 0;
+ gUnknown_20399D4->field_47A8 = 0;
+ gUnknown_20399D4->savedCallback = cb;
+ sub_80BFFD0();
+ SetMainCallback2(CB2_OpenRegionMap);
+ }
+}
+
+static void sub_80BFFD0(void)
+{
+ u8 i;
+ u8 j;
+ u8 r7;
+
+ switch (gUnknown_20399D4->mapType)
+ {
+ default:
+ case 0:
+ case 1:
+ gUnknown_20399D4->field_47B8 = sub_80C04E4;
+ break;
+ case 2:
+ gUnknown_20399D4->field_47B8 = sub_80C4F08;
+ break;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_20399D4->regionMapPermissions[i] = sRegionMapPermissions[gUnknown_20399D4->mapType][i];
+ }
+ if (!FlagGet(FLAG_SYS_SEVII_MAP_123))
+ gUnknown_20399D4->regionMapPermissions[MAPPERM_0] = FALSE;
+ r7 = 0;
+ j = 0;
+ if (gMapHeader.regionMapSectionId >= MAPSECS_SEVII_123)
+ {
+ while (r7 == 0)
+ {
+ for (i = 0; sSeviiMapsecs[j][i] != MAPSEC_NONE; i++)
+ {
+ if (gMapHeader.regionMapSectionId == sSeviiMapsecs[j][i])
+ {
+ r7 = j + 1;
+ break;
+ }
+ }
+ j++;
+ }
+ }
+ gUnknown_20399D4->field_479B = r7;
+ gUnknown_20399D4->field_479C = r7;
+}
+
+static void CB2_OpenRegionMap(void)
+{
+ switch (gUnknown_20399D4->field_47A4)
+ {
+ case 0:
+ NullVBlankHBlankCallbacks();
+ break;
+ case 1:
+ ResetGpu();
+ break;
+ case 2:
+ ResetOamForRegionMap();
+ break;
+ case 3:
+ if (!HandleLoadRegionMapGfx())
+ return;
+ break;
+ case 4:
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 5:
+ sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D4->field_479B]);
+ CopyBgTilemapBufferToVram(0);
+ if (gUnknown_20399D4->mapType != 0)
+ {
+ sub_80C0CC8(1, gUnknown_20399D4->layouts[4]);
+ CopyBgTilemapBufferToVram(1);
+ }
+ break;
+ case 6:
+ sub_80C0B18();
+ PutWindowTilemap(0);
+ break;
+ case 7:
+ sub_80C0BB0();
+ PutWindowTilemap(1);
+ break;
+ case 8:
+ if (GetRegionMapPermission(MAPPERM_2) == TRUE)
+ SetBg0andBg3Visibility(1);
+ break;
+ default:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sub_80C03E8();
+ sub_80C08F4();
+ break;
+ }
+ gUnknown_20399D4->field_47A4++;
+}
+
+static bool8 HandleLoadRegionMapGfx(void)
+{
+ switch (gUnknown_20399D4->field_47A8)
+ {
+ case 0:
+ LoadPalette(gUnknown_83EF23C, 0xC0, 0x20);
+ break;
+ case 1:
+ LoadPalette(gUnknown_83EF2DC, 0x00, 0xA0);
+ sub_80BFEA0();
+ if (gUnknown_20399D4->mapType != 0)
+ {
+ LoadPalette(&gUnknown_83EF23C[15], 0x00, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x10, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x20, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x30, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x40, 0x02);
+ }
+ break;
+ case 2:
+ ResetTempTileDataBuffers();
+ break;
+ case 3:
+ DecompressAndCopyTileDataToVram(0, gUnknown_83EF61C, 0, 0, 0);
+ if (gUnknown_20399D4->mapType != 0)
+ {
+ DecompressAndCopyTileDataToVram(1, gUnknown_83F1978, 0, 0, 0);
+ }
+ break;
+ case 4:
+ if (FreeTempTileDataBuffersIfPossible() == TRUE)
+ return FALSE;
+ break;
+ case 5:
+ LZ77UnCompWram(sRegionMapLayout_Kanto, gUnknown_20399D4->layouts[0]);
+ break;
+ case 6:
+ LZ77UnCompWram(sRegionMapLayout_Sevii123, gUnknown_20399D4->layouts[1]);
+ break;
+ case 7:
+ LZ77UnCompWram(sRegionMapLayout_Sevii45, gUnknown_20399D4->layouts[2]);
+ break;
+ case 8:
+ LZ77UnCompWram(sRegionMapLayout_Sevii67, gUnknown_20399D4->layouts[3]);
+ break;
+ default:
+ LZ77UnCompWram(gUnknown_83F19A0, gUnknown_20399D4->layouts[4]);
+ return TRUE;
+ }
+ gUnknown_20399D4->field_47A8++;
+ return FALSE;
+}
+
+static void sub_80C03E8(void)
+{
+ CreateTask(gUnknown_20399D4->field_47B8, 0);
+ SetMainCallback2(sub_80C08B4);
+}
+
+static bool32 sub_80C0410(void)
+{
+ if (GetSelectedMapSection(GetWhichRegionMap(), 0, GetMapCursorY(), GetMapCursorX()) == 99)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void sub_80C0450(void)
+{
+ if (sub_80C0410())
+ {
+ if ((sub_80C3AC8(0) != 1 && sub_80C3AC8(0) != 0) || (sub_80C3AC8(1) != 1 && sub_80C3AC8(1) != 0))
+ PlaySE(SE_Z_SCROLL);
+ if (GetMapCursorX() == 21 && GetMapCursorY() == 11 && GetRegionMapPermission(MAPPERM_0) == TRUE)
+ PlaySE(SE_W255);
+ else if (GetMapCursorX() == 21 && GetMapCursorY() == 13)
+ PlaySE(SE_W255);
+ }
+}
+
+static void sub_80C04E4(u8 taskId)
+{
+ switch (gUnknown_20399D4->field_47A0)
+ {
+ case 0:
+ sub_80C4398(GetWhichRegionMap(), taskId, gUnknown_20399D4->field_47B8);
+ sub_80C3008(0, 0);
+ sub_80C41D8(1, 1);
+ gUnknown_20399D4->field_47A0++;
+ break;
+ case 1:
+ if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE)
+ {
+ sub_80C2208(taskId, gUnknown_20399D4->field_47B8);
+ }
+ else
+ {
+ ShowBg(0);
+ ShowBg(3);
+ ShowBg(1);
+ sub_80C4E18(gText_RegionMap_DPadMove);
+ sub_80C4E74(gText_RegionMap_Space);
+ sub_80C4ED0(FALSE);
+ sub_80C4324(FALSE);
+ sub_80C3154(FALSE);
+ sub_80C48BC(GetWhichRegionMap(), 25, FALSE);
+ sub_80C4960(GetWhichRegionMap(), 25, FALSE);
+ }
+ gUnknown_20399D4->field_47A0++;
+ break;
+ case 2:
+ if (!gPaletteFade.active && !IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_80C0B18();
+ PutWindowTilemap(0);
+ sub_80C0BB0();
+ PutWindowTilemap(1);
+ gUnknown_20399D4->field_47A0++;
+ }
+ break;
+ case 3:
+ switch (sub_80C3400())
+ {
+ case 1:
+ sub_80C3178();
+ break;
+ case 2:
+ break;
+ case 3:
+ sub_80C0B18();
+ sub_80C0BB0();
+ sub_80C0B9C();
+ sub_80C0450();
+ if (GetMapSecUnderCursor() != MAPSEC_NONE)
+ {
+ if (GetRegionMapPermission(MAPPERM_1) == TRUE)
+ {
+ if (sub_80C3AC8(1) == 2)
+ {
+ sub_80C4E74(gText_RegionMap_AButtonGuide);
+ }
+ else
+ {
+ sub_80C4E74(gText_RegionMap_Space);
+ }
+ }
+ }
+ else
+ {
+ if (GetMapCursorX() == 21 && GetMapCursorY() == 11 && GetRegionMapPermission(MAPPERM_0) == TRUE)
+ {
+ sub_80C4E74(gText_RegionMap_AButtonSwitch);
+ }
+ else if (GetMapCursorX() == 21 && GetMapCursorY() == 13)
+ {
+ sub_80C4E74(gText_RegionMap_AButtonCancel);
+ }
+ else
+ {
+ sub_80C4E74(gText_RegionMap_Space);
+ }
+ }
+ break;
+ case 4:
+ if (sub_80C3AC8(1) == 2 && gUnknown_20399D4->regionMapPermissions[MAPPERM_1] == TRUE)
+ {
+ RegionMapCreateDungeonMapPreview(0, taskId, sub_80C07F8);
+ }
+ break;
+ case 5:
+ sub_80C0E70(gUnknown_20399D4->field_479B, taskId, sub_80C07F8);
+ break;
+ case 6:
+ gUnknown_20399D4->field_47A0++;
+ break;
+ }
+ break;
+ case 4:
+ if (GetRegionMapPermission(MAPPERM_2) == 1)
+ {
+ sub_80C2C1C(taskId);
+ // FIXME: goto required to match
+ // gUnknown_20399D4->field_47A0++;
+ goto _080C0798;
+ }
+ else
+ {
+ gUnknown_20399D4->field_47A0++;
+ }
+ break;
+ case 5:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ _080C0798:
+ gUnknown_20399D4->field_47A0++;
+ break;
+ default:
+ if (!gPaletteFade.active)
+ {
+ sub_80C0820(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80C07D0(TaskFunc taskFunc)
+{
+ gUnknown_20399D4->field_47B8 = taskFunc;
+}
+
+TaskFunc sub_80C07E4(void)
+{
+ return gUnknown_20399D4->field_47B8;
+}
+
+static void sub_80C07F8(u8 taskId)
+{
+ gTasks[taskId].func = gUnknown_20399D4->field_47B8;
+}
+
+static void sub_80C0820(u8 taskId)
+{
+ if (GetRegionMapPermission(MAPPERM_2) == TRUE)
+ sub_80C25BC();
+ sub_80C4A04();
+ sub_80C3188();
+ sub_80C4348();
+ sub_80C4D30();
+ DestroyTask(taskId);
+ FreeAllWindowBuffers();
+ if (gUnknown_20399D4->savedCallback == NULL)
+ SetMainCallback2(gMain.savedCallback);
+ else
+ SetMainCallback2(gUnknown_20399D4->savedCallback);
+ FREE_IF_NOT_NULL(gUnknown_20399D4);
+}
+
+static void sub_80C0898(void)
+{
+ FREE_IF_NOT_NULL(gUnknown_20399D4);
+}
+
+static void sub_80C08B4(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_80C08CC(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void NullVBlankHBlankCallbacks(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+}
+
+static void sub_80C08F4(void)
+{
+ SetVBlankCallback(sub_80C08CC);
+}
+
+static void ResetGpu(void)
+{
+ DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, gUnknown_83F1A50, NELEMS(gUnknown_83F1A50));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ InitWindows(gUnknown_83F1A60);
+ DeactivateAllTextPrinters();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+ SetBgTilemapBuffers();
+ sub_80C0AB8();
+}
+
+static void SetBgTilemapBuffers(void)
+{
+ SetBgTilemapBuffer(0, gUnknown_20399D4->bgTilemapBuffers[0]);
+ SetBgTilemapBuffer(1, gUnknown_20399D4->bgTilemapBuffers[1]);
+ SetBgTilemapBuffer(2, gUnknown_20399D4->bgTilemapBuffers[2]);
+}
+
+static void ResetOamForRegionMap(void)
+{
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ScanlineEffect_Stop();
+}
+
+static void SetBg0andBg3Visibility(u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ ShowBg(0);
+ ShowBg(3);
+ break;
+ case 1:
+ HideBg(0);
+ HideBg(3);
+ break;
+ }
+}
+
+static void sub_80C0AB8(void)
+{
+ sub_80C4BE4();
+ sub_80C4C2C(0, 0x11, 0xc0);
+ sub_80C4C48(6);
+ sub_80C4C74(0x39, 0x39);
+ sub_80C4C88(0x1b);
+ SetGpuWindowDims(0, &sStdWindowDims[0]);
+ SetGpuWindowDims(1, &sStdWindowDims[1]);
+ sub_80C4C9C(0, 0);
+ if (GetMapSecUnderCursor() != MAPSEC_NONE)
+ sub_80C4C9C(1, 0);
+}
+
+static void sub_80C0B18(void)
+{
+ ClearWindowTilemap(0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ if (sub_80C3520() == MAPSEC_NONE)
+ {
+ SetGpuWindowDims(0, &sStdWindowDims[2]);
+ }
+ else
+ {
+ GetMapName(gUnknown_20399D4->field_0000, sub_80C3520(), 0);
+ AddTextPrinterParameterized3(0, 2, 2, 2, sTextColor_White, 0, gUnknown_20399D4->field_0000);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 2);
+ SetGpuWindowDims(0, &sStdWindowDims[0]);
+ }
+}
+
+static void sub_80C0B9C(void)
+{
+ SetGpuWindowDims(1, &sStdWindowDims[1]);
+}
+
+static void sub_80C0BB0(void)
+{
+ u16 mapsecId;
+ u16 descOffset;
+ gUnknown_20399D4->field_47AC = 0;
+ gUnknown_20399D4->field_47AE = 24;
+ gUnknown_20399D4->field_47B0 = 32;
+ sub_80C4C9C(1, 1);
+ ClearWindowTilemap(1);
+ mapsecId = GetMapSecUnderCursor();
+ if (mapsecId != MAPSEC_NONE)
+ {
+ descOffset = mapsecId - MAPSECS_KANTO;
+ sub_80C4C9C(1, 0);
+ gUnknown_20399D4->field_47AC = 1;
+ gUnknown_20399D4->field_47AA = StringLength(sMapNames[descOffset]);
+ gUnknown_20399D4->field_47AE = gUnknown_20399D4->field_47AA * 10 + 50;
+ gUnknown_20399D4->field_47B0 = 48;
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ StringCopy(gUnknown_20399D4->field_0013, sMapNames[descOffset]);
+ AddTextPrinterParameterized3(1, 2, 12, 2, gUnknown_83F1A9C[sub_80C3AC8(1) - 2], 0, gUnknown_20399D4->field_0013);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+ }
+}
+
+static void sub_80C0CA0(void)
+{
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ CopyWindowToVram(0, 3);
+ FillWindowPixelBuffer(1, PIXEL_FILL(0));
+ CopyWindowToVram(1, 3);
+}
+
+static void sub_80C0CC8(u8 bg, u16 *map)
+{
+ s16 i;
+ s16 j;
+ u8 r4;
+ u16 *buffer = gUnknown_20399D4->bgTilemapBuffers[bg];
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ if (j < 30)
+ buffer[32 * i + j] = map[30 * i + j];
+ else
+ buffer[32 * i + j] = map[0];
+ }
+ }
+ if (gUnknown_20399D4->regionMapPermissions[MAPPERM_0] == TRUE)
+ {
+ WriteSequenceToBgTilemapBuffer(0, 0x0F0, 0x18, 0x0E, 3, 1, 0x3, 0x001);
+ WriteSequenceToBgTilemapBuffer(0, 0x100, 0x18, 0x0F, 3, 1, 0x3, 0x001);
+ WriteSequenceToBgTilemapBuffer(0, 0x110, 0x18, 0x10, 3, 1, 0x3, 0x001);
+ }
+ if (gUnknown_20399D8 != NULL)
+ r4 = gUnknown_20399D8->field_1CCA;
+ else
+ r4 = gUnknown_20399D4->field_479B;
+ if (r4 == REGIONMAP_SEVII45 && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR))
+ FillBgTilemapBufferRect_Palette0(0, 0x003, 13, 11, 3, 2);
+ if (r4 == REGIONMAP_SEVII67 && !FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR))
+ FillBgTilemapBufferRect_Palette0(0, 0x003, 21, 16, 3, 3);
+}
+
+static bool8 GetRegionMapPermission(u8 attr)
+{
+ return gUnknown_20399D4->regionMapPermissions[attr];
+}
+
+static u8 GetWhichRegionMap(void)
+{
+ return gUnknown_20399D4->field_479B;
+}
+
+static u8 sub_80C0E34(void)
+{
+ return gUnknown_20399D4->field_479C;
+}
+
+static void SetWhichRegionMap(u8 a0)
+{
+ gUnknown_20399D4->field_479B = a0;
+}
+
+static void sub_80C0E5C(u8 a0)
+{
+ gUnknown_20399D4->field_479C = a0;
+}
+
+static void sub_80C0E70(u8 a0, u8 taskId, TaskFunc taskFunc)
+{
+ gUnknown_20399D8 = AllocZeroed(sizeof(struct UnkStruct_20399D8));
+ if (FlagGet(FLAG_SYS_SEVII_MAP_4567))
+ gUnknown_20399D8->field_1CCC = 3;
+ else if (FlagGet(FLAG_SYS_SEVII_MAP_123))
+ gUnknown_20399D8->field_1CCC = 1;
+ else
+ gUnknown_20399D8->field_1CCC = 0;
+ gUnknown_20399D8->selectionCursorSubspriteData[0].xCoord = 0x58;
+ gUnknown_20399D8->selectionCursorSubspriteData[1].xCoord = 0x98;
+ switch (gUnknown_20399D8->field_1CCC)
+ {
+ case 1:
+ LZ77UnCompWram(gUnknown_83F1084, gUnknown_20399D8->tileMap);
+ gUnknown_20399D8->field_1CCE = 6;
+ break;
+ case 2: // never reached
+ LZ77UnCompWram(gUnknown_83F1190, gUnknown_20399D8->tileMap);
+ gUnknown_20399D8->field_1CCE = 4;
+ break;
+ case 3:
+ default:
+ gUnknown_20399D8->field_1CCE = 3;
+ LZ77UnCompWram(gUnknown_83F0F1C, gUnknown_20399D8->tileMap);
+ break;
+ }
+ LZ77UnCompWram(gUnknown_83F0580, gUnknown_20399D8->bgTiles);
+ gUnknown_20399D8->field_1CC8 = 0;
+ gUnknown_20399D8->field_1CCA = a0;
+ gUnknown_20399D8->field_1CD0 = taskFunc;
+ gUnknown_20399D8->field_1CCB = sub_80C0E34();
+ sub_80C4AAC(0);
+ sub_80C4E74(gText_RegionMap_AButtonOK);
+ gTasks[taskId].func = sub_80C1098;
+}
+
+static void sub_80C0FE0(void)
+{
+ sub_80C4BE4();
+ sub_80C4C2C(27, 4, 64);
+ sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD);
+}
+
+static bool8 sub_80C1014(void)
+{
+ if (gUnknown_20399D8->field_1CCD < 16)
+ {
+ sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD);
+ gUnknown_20399D8->field_1CCD += 2;
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static bool8 sub_80C1058(void)
+{
+ if (gUnknown_20399D8->field_1CCD >= 2)
+ {
+ gUnknown_20399D8->field_1CCD -= 2;
+ sub_80C4C5C(16 - gUnknown_20399D8->field_1CCD, gUnknown_20399D8->field_1CCD);
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static void sub_80C1098(u8 taskId)
+{
+ switch (gUnknown_20399D8->field_1CC8)
+ {
+ case 0:
+ NullVBlankHBlankCallbacks();
+ sub_80C4E18(gText_RegionMap_UpDownPick);
+ gUnknown_20399D8->field_1CC8++;
+ break;
+ case 1:
+ LoadBgTiles(2, gUnknown_20399D8->bgTiles, 0x1000, 0x000);
+ gUnknown_20399D8->field_1CC8++;
+ break;
+ case 2:
+ sub_80C1324(2, gUnknown_20399D8->tileMap);
+ CopyBgTilemapBufferToVram(2);
+ gUnknown_20399D8->field_1CC8++;
+ break;
+ case 3:
+ sub_80C0CA0();
+ gUnknown_20399D8->field_1CC8++;
+ break;
+ case 4:
+ sub_80C0FE0();
+ ShowBg(2);
+ gUnknown_20399D8->field_1CC8++;
+ break;
+ case 5:
+ sub_80C08F4();
+ gUnknown_20399D8->field_1CC8++;
+ break;
+ case 6:
+ if (sub_80C1014() == TRUE)
+ {
+ sub_80C1390();
+ gUnknown_20399D8->field_1CC8++;
+ }
+ break;
+ case 7:
+ if (sub_80C144C() == TRUE)
+ {
+ gUnknown_20399D8->field_1CC8++;
+ }
+ break;
+ case 8:
+ if (LoadAndCreateSelectionCursorSpriteGfx() == TRUE)
+ {
+ gUnknown_20399D8->field_1CC8++;
+ }
+ break;
+ case 9:
+ if (sub_80C1478() == TRUE)
+ {
+ SetWhichRegionMap(gUnknown_20399D8->field_1CCA);
+ if (sub_80C0E34() == gUnknown_20399D8->field_1CCA)
+ {
+ sub_80C4324(FALSE);
+ sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, FALSE);
+ sub_80C4960(gUnknown_20399D8->field_1CCA, 25, FALSE);
+ }
+ gUnknown_20399D8->field_1CC8++;
+ }
+ break;
+ case 10:
+ if (sub_80C12EC() == TRUE)
+ {
+ DestroySelectionCursorSprites();
+ sub_80C0FE0();
+ gUnknown_20399D8->field_1CC8++;
+ }
+ break;
+ case 11:
+ if (sub_80C1058() == TRUE)
+ {
+ gUnknown_20399D8->field_1CC8++;
+ }
+ break;
+ case 12:
+ sub_80C3154(FALSE);
+ gUnknown_20399D8->field_1CC8++;
+ break;
+ default:
+ sub_80C1280(taskId);
+ break;
+ }
+}
+
+static void sub_80C1280(u8 taskId)
+{
+ gTasks[taskId].func = gUnknown_20399D8->field_1CD0;
+ HideBg(2);
+ sub_80C4E18(gText_RegionMap_DPadMove);
+ sub_80C4E74(gText_RegionMap_AButtonSwitch);
+ sub_80C0AB8();
+ sub_80C0B9C();
+ SetGpuWindowDims(0, &sStdWindowDims[2]);
+ FREE_IF_NOT_NULL(gUnknown_20399D8);
+}
+
+static bool8 sub_80C12EC(void)
+{
+ if (gUnknown_20399D8->field_1CDC != 0)
+ {
+ gUnknown_20399D8->field_1CDC--;
+ SetGpuReg(REG_OFFSET_BLDY, gUnknown_20399D8->field_1CDC);
+ return FALSE;
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ return TRUE;
+ }
+}
+
+static void sub_80C1324(u8 bg, u16 *map)
+{
+ s16 i;
+ s16 j;
+ u16 *buffer = gUnknown_20399D4->bgTilemapBuffers[bg];
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ if (j < 30)
+ buffer[32 * i + j] = map[30 * i + j];
+ else
+ buffer[32 * i + j] = map[0];
+ }
+ }
+}
+
+static void sub_80C1390(void)
+{
+ struct GpuWindowParams data;
+ data.v0 = gUnknown_20399D8->field_1CD4[0] = 0x48;
+ data.v2 = gUnknown_20399D8->field_1CD4[1] = 8 * (gUnknown_20399D8->field_1CCE + 4 * gUnknown_20399D8->field_1CCA);
+ data.v4 = gUnknown_20399D8->field_1CD4[2] = 0xA8;
+ data.v6 = gUnknown_20399D8->field_1CD4[3] = gUnknown_20399D8->field_1CD4[1] + 32;
+ sub_80C4BE4();
+ sub_80C4C2C(0, 0x15, 0xc0);
+ sub_80C4C74(0x1f, 0x15);
+ sub_80C4C88(0x3f);
+ sub_80C4C9C(1, 0);
+ SetGpuWindowDims(1, &data);
+}
+
+static bool8 sub_80C144C(void)
+{
+ if (gUnknown_20399D8->field_1CDC < 6)
+ {
+ gUnknown_20399D8->field_1CDC++;
+ sub_80C4C48(gUnknown_20399D8->field_1CDC);
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static bool8 sub_80C1478(void)
+{
+ bool8 r6 = FALSE;
+ struct GpuWindowParams data;
+ data.v0 = gUnknown_20399D8->field_1CD4[0] = 0x48;
+ data.v2 = gUnknown_20399D8->field_1CD4[1] = 8 * (gUnknown_20399D8->field_1CCE + 4 * gUnknown_20399D8->field_1CCA);
+ data.v4 = gUnknown_20399D8->field_1CD4[2] = 0xA8;
+ data.v6 = gUnknown_20399D8->field_1CD4[3] = gUnknown_20399D8->field_1CD4[1] + 32;
+ if (JOY_NEW(DPAD_UP) && gUnknown_20399D8->field_1CCA != 0)
+ {
+ PlaySE(SE_BAG1);
+ gUnknown_20399D8->field_1CCA--;
+ r6 = TRUE;
+ }
+ if (JOY_NEW(DPAD_DOWN) && gUnknown_20399D8->field_1CCA < gUnknown_20399D8->field_1CCC)
+ {
+ PlaySE(SE_BAG1);
+ gUnknown_20399D8->field_1CCA++;
+ r6 = TRUE;
+ }
+ if (JOY_NEW(A_BUTTON) && gUnknown_20399D8->field_1CDC == 6)
+ {
+ PlaySE(SE_W129);
+ gUnknown_20399D8->field_1CCB = gUnknown_20399D8->field_1CCA;
+ return TRUE;
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ gUnknown_20399D8->field_1CCA = gUnknown_20399D8->field_1CCB;
+ sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D8->field_1CCA]);
+ CopyBgTilemapBufferToVram(0);
+ sub_80C48BC(255, 25, TRUE);
+ sub_80C4960(255, 25, TRUE);
+ return TRUE;
+ }
+ if (r6)
+ {
+ sub_80C0CC8(0, gUnknown_20399D4->layouts[gUnknown_20399D8->field_1CCA]);
+ sub_80C4E74(gText_RegionMap_AButtonOK);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(3);
+ sub_80C48BC(255, 25, TRUE);
+ sub_80C4960(255, 25, TRUE);
+ sub_80C48BC(gUnknown_20399D8->field_1CCA, 25, FALSE);
+ sub_80C4960(gUnknown_20399D8->field_1CCA, 25, FALSE);
+ }
+ if (gUnknown_20399D8->field_1CCA != sub_80C0E34())
+ sub_80C4324(TRUE);
+ else
+ sub_80C4324(FALSE);
+ SetGpuWindowDims(1, &data);
+ return FALSE;
+}
+
+static void SpriteCB_SelectionCursor(struct Sprite * sprite)
+{
+ sprite->pos1.y = gUnknown_20399D8->field_1CD4[1] + 16;
+}
+
+static bool8 LoadAndCreateSelectionCursorSpriteGfx(void)
+{
+ switch (gUnknown_20399D8->selectionCursorLoadState)
+ {
+ case 0:
+ LZ77UnCompWram(sSelectionCursorLeftTiles, gUnknown_20399D8->selectionCursorSubspriteData[0].tiles);
+ break;
+ case 1:
+ LZ77UnCompWram(sSelectionCursorRightTiles, gUnknown_20399D8->selectionCursorSubspriteData[1].tiles);
+ break;
+ case 2:
+ CreateSelectionCursorSubsprite(0, 2, 2);
+ CreateSelectionCursorSubsprite(1, 3, 3);
+ break;
+ default:
+ return TRUE;
+ }
+ gUnknown_20399D8->selectionCursorLoadState++;
+ return FALSE;
+}
+
+static void CreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag)
+{
+ RealCreateSelectionCursorSubsprite(whichSprite, tileTag, paletteTag);
+}
+
+static void RealCreateSelectionCursorSubsprite(u8 whichSprite, u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].tiles,
+ .size = 0x400,
+ .tag = tileTag
+ };
+ struct SpritePalette spritePalette = {
+ .data = sSelectionCursorPals,
+ .tag = paletteTag
+ };
+ struct SpriteTemplate template = {
+ .tileTag = tileTag,
+ .paletteTag = paletteTag,
+ .oam = &sSelectionCursorOam,
+ .anims = sSelectionCursorAnims,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_SelectionCursor
+ };
+
+ gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].tileTag = tileTag;
+ gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].paletteTag = paletteTag;
+
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+
+ spriteId = CreateSprite(&template, gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].xCoord, 8 * (gUnknown_20399D8->field_1CCE + 4 * gUnknown_20399D8->field_1CCA), 0);
+ gUnknown_20399D8->selectionCursorSubspriteData[whichSprite].sprite = &gSprites[spriteId];
+ gSprites[spriteId].invisible = FALSE;
+}
+
+static void DestroySelectionCursorSprites(void)
+{
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ if (gUnknown_20399D8->selectionCursorSubspriteData[i].sprite != NULL)
+ {
+ DestroySprite(gUnknown_20399D8->selectionCursorSubspriteData[i].sprite);
+ FreeSpriteTilesByTag(gUnknown_20399D8->selectionCursorSubspriteData[i].tileTag);
+ FreeSpritePaletteByTag(gUnknown_20399D8->selectionCursorSubspriteData[i].paletteTag);
+ }
+ }
+}
+
+static const u8 *GetDungeonFlavorText(u16 mapsec)
+{
+ u8 i;
+ for (i = 0; i < NELEMS(sDungeonHighlights); i++)
+ {
+ if (sDungeonHighlights[i].id == mapsec)
+ return sDungeonHighlights[i].desc;
+ }
+ return gText_RegionMap_NoData;
+}
+
+static const u8 *GetDungeonName(u16 mapsec)
+{
+ u8 i;
+ for (i = 0; i < NELEMS(sDungeonHighlights); i++)
+ {
+ if (sDungeonHighlights[i].id == mapsec)
+ return sDungeonHighlights[i].name;
+ }
+ return gText_RegionMap_NoData;
+}
+
+static void RegionMapCreateDungeonMapPreview(u8 a0, u8 taskId, TaskFunc taskFunc)
+{
+ u8 r0;
+ sDungeonMapPreviewManager = AllocZeroed(sizeof(struct DungeonMapPreviewManagerStruct));
+ r0 = GetMapSecUnderCursor();
+ if (r0 == MAPSEC_TANOBY_CHAMBERS)
+ r0 = MAPSEC_MONEAN_CHAMBER;
+ sDungeonMapPreviewManager->mapPreviewInfo = GetDungeonMapPreviewScreenInfo(r0);
+ if (sDungeonMapPreviewManager->mapPreviewInfo == NULL)
+ sDungeonMapPreviewManager->mapPreviewInfo = GetDungeonMapPreviewScreenInfo(MAPSEC_ROCK_TUNNEL);
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState = 0;
+ sDungeonMapPreviewManager->field_3D4A = 0;
+ sDungeonMapPreviewManager->savedTask = taskFunc;
+ sDungeonMapPreviewManager->field_3E14 = 0;
+ sub_80C4AAC(0);
+ sub_80C4BE4();
+ sub_80C0CA0();
+ gTasks[taskId].func = Task_PrepDungeonMapPreviewAndFlavorText;
+}
+
+static bool8 HandleLoadMapPreviewScreenGfx(void)
+{
+ switch (sDungeonMapPreviewManager->field_3D4A)
+ {
+ case 0:
+ LZ77UnCompWram(sDungeonMapPreviewManager->mapPreviewInfo->tilesptr, sDungeonMapPreviewManager->tiles);
+ break;
+ case 1:
+ LZ77UnCompWram(sDungeonMapPreviewManager->mapPreviewInfo->tilemapptr, sDungeonMapPreviewManager->tilemap);
+ break;
+ case 2:
+ LoadBgTiles(2, sDungeonMapPreviewManager->tiles, 0x3840, 0x000);
+ break;
+ case 3:
+ LoadPalette(sDungeonMapPreviewManager->mapPreviewInfo->palptr, 0xD0, 0x60);
+ break;
+ default:
+ return TRUE;
+ }
+ sDungeonMapPreviewManager->field_3D4A++;
+ return FALSE;
+}
+
+static void Task_PrepDungeonMapPreviewAndFlavorText(u8 taskId)
+{
+ switch (sDungeonMapPreviewManager->dungeonMapPreviewPrepState)
+ {
+ case 0:
+ NullVBlankHBlankCallbacks();
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ case 1:
+ if (HandleLoadMapPreviewScreenGfx() == TRUE)
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ case 2:
+ sub_80C1E94();
+ sub_80C4E74(gText_RegionMap_AButtonCancel2);
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ case 3:
+ CopyMapPreviewTilemapToBgTilemapBuffer(2, sDungeonMapPreviewManager->tilemap);
+ CopyBgTilemapBufferToVram(2);
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ case 4:
+ ShowBg(2);
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ case 5:
+ sub_80C08F4();
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ case 6:
+ if (sub_80C1F80(FALSE) == TRUE)
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ case 7:
+ gTasks[taskId].func = Task_DrawDungeonMapPreviewAndFlavorText;
+ break;
+ case 8:
+ if (sub_80C1F80(TRUE) == TRUE)
+ {
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ }
+ break;
+ case 9:
+ DestroyMapPreviewAssets(taskId);
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ break;
+ }
+}
+
+static void Task_DrawDungeonMapPreviewAndFlavorText(u8 taskId)
+{
+ switch (sDungeonMapPreviewManager->dungeonMapPreviewDrawState)
+ {
+ case 0:
+ sDungeonMapPreviewManager->field_3E0E = 0x0133;
+ sDungeonMapPreviewManager->field_3E10 = 0x0100;
+ sDungeonMapPreviewManager->field_3E12 = 0x00F0;
+ sDungeonMapPreviewManager->dungeonMapPreviewDrawState++;
+ break;
+ case 1:
+ if (sDungeonMapPreviewManager->field_3D4C++ > 40)
+ {
+ sDungeonMapPreviewManager->field_3D4C = 0;
+ sDungeonMapPreviewManager->dungeonMapPreviewDrawState++;
+ }
+ break;
+ case 2:
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
+ CopyWindowToVram(2, 3);
+ PutWindowTilemap(2);
+ sDungeonMapPreviewManager->dungeonMapPreviewDrawState++;
+ break;
+ case 3:
+ if (sDungeonMapPreviewManager->field_3D4C > 25)
+ {
+ AddTextPrinterParameterized3(2, 2, 4, 0, sTextColor_Green, -1, GetDungeonName(GetMapSecUnderCursor()));
+ AddTextPrinterParameterized3(2, 2, 2, 14, sTextColor_White, -1, GetDungeonFlavorText(GetMapSecUnderCursor()));
+ CopyWindowToVram(2, 3);
+ sDungeonMapPreviewManager->dungeonMapPreviewDrawState++;
+ }
+ else if (sDungeonMapPreviewManager->field_3D4C > 20)
+ {
+ sDungeonMapPreviewManager->field_3E0E -= 6;
+ sDungeonMapPreviewManager->field_3E10 -= 5;
+ sDungeonMapPreviewManager->field_3E12 -= 5;
+ CpuCopy16(sDungeonMapPreviewManager->mapPreviewInfo->palptr, sDungeonMapPreviewManager->field_3D4E, 0x60);
+ TintPalette_CustomTone(sDungeonMapPreviewManager->field_3D4E, 0x30, sDungeonMapPreviewManager->field_3E0E, sDungeonMapPreviewManager->field_3E10, sDungeonMapPreviewManager->field_3E12);
+ LoadPalette(sDungeonMapPreviewManager->field_3D4E, 0xD0, 0x60);
+ }
+ sDungeonMapPreviewManager->field_3D4C++;
+ break;
+ case 4:
+ if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON))
+ {
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
+ CopyWindowToVram(2, 3);
+ sDungeonMapPreviewManager->dungeonMapPreviewPrepState++;
+ sDungeonMapPreviewManager->dungeonMapPreviewDrawState++;
+ }
+ break;
+ default:
+ gTasks[taskId].func = Task_PrepDungeonMapPreviewAndFlavorText;
+ break;
+ }
+}
+
+static void DestroyMapPreviewAssets(u8 taskId)
+{
+ gTasks[taskId].func = sDungeonMapPreviewManager->savedTask;
+ HideBg(2);
+ sub_80C4B30(0);
+ sub_80C0B18();
+ sub_80C0BB0();
+ sub_80C0AB8();
+ sub_80C0B9C();
+ sub_80C4E74(gText_RegionMap_AButtonGuide);
+ FREE_IF_NOT_NULL(sDungeonMapPreviewManager);
+}
+
+static void CopyMapPreviewTilemapToBgTilemapBuffer(u8 bgId, const u16 * tilemap)
+{
+ CopyToBgTilemapBufferRect(2, tilemap, 0, 0, 32, 20);
+}
+
+static void sub_80C1E94(void)
+{
+ u16 r4;
+ u16 r0;
+ sub_80C4BE4();
+ sub_80C4C2C(0, 17, 192);
+ sub_80C4C48(sDungeonMapPreviewManager->field_3E14);
+ sub_80C4C74(0, 13);
+ sub_80C4C88(59);
+ sub_80C4C9C(1, 0);
+ r4 = GetMapCursorX();
+ r0 = GetMapCursorY();
+ sDungeonMapPreviewManager->field_3E16 = 8 * r4 + 32;
+ sDungeonMapPreviewManager->field_3E18 = 8 * r0 + 24;
+ sDungeonMapPreviewManager->field_3E1A = sDungeonMapPreviewManager->field_3E16 + 8;
+ sDungeonMapPreviewManager->field_3E1C = sDungeonMapPreviewManager->field_3E18 + 8;
+ sDungeonMapPreviewManager->field_3E1E = (0x10 - sDungeonMapPreviewManager->field_3E16) / 8;
+ sDungeonMapPreviewManager->field_3E20 = (0x20 - sDungeonMapPreviewManager->field_3E18) / 8;
+ sDungeonMapPreviewManager->field_3E22 = (0xE0 - sDungeonMapPreviewManager->field_3E1A) / 8;
+ sDungeonMapPreviewManager->field_3E24 = (0x88 - sDungeonMapPreviewManager->field_3E1C) / 8;
+}
+
+static bool8 sub_80C1F80(bool8 a0)
+{
+ struct GpuWindowParams data;
+
+ if (!a0)
+ {
+ if (sDungeonMapPreviewManager->field_3D4B < 8)
+ {
+ sDungeonMapPreviewManager->field_3E16 += sDungeonMapPreviewManager->field_3E1E;
+ sDungeonMapPreviewManager->field_3E18 += sDungeonMapPreviewManager->field_3E20;
+ sDungeonMapPreviewManager->field_3E1A += sDungeonMapPreviewManager->field_3E22;
+ sDungeonMapPreviewManager->field_3E1C += sDungeonMapPreviewManager->field_3E24;
+ sDungeonMapPreviewManager->field_3D4B++;
+ if (sDungeonMapPreviewManager->field_3E14 < 6)
+ sDungeonMapPreviewManager->field_3E14++;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ if (sDungeonMapPreviewManager->field_3D4B == 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ sDungeonMapPreviewManager->field_3E16 -= sDungeonMapPreviewManager->field_3E1E;
+ sDungeonMapPreviewManager->field_3E18 -= sDungeonMapPreviewManager->field_3E20;
+ sDungeonMapPreviewManager->field_3E1A -= sDungeonMapPreviewManager->field_3E22;
+ sDungeonMapPreviewManager->field_3E1C -= sDungeonMapPreviewManager->field_3E24;
+ sDungeonMapPreviewManager->field_3D4B--;
+ if (sDungeonMapPreviewManager->field_3E14 > 0)
+ sDungeonMapPreviewManager->field_3E14--;
+ }
+ }
+ data.v0 = sDungeonMapPreviewManager->field_3E16;
+ data.v2 = sDungeonMapPreviewManager->field_3E18;
+ data.v4 = sDungeonMapPreviewManager->field_3E1A;
+ data.v6 = sDungeonMapPreviewManager->field_3E1C;
+ SetGpuWindowDims(1, &data);
+ sub_80C4C48(sDungeonMapPreviewManager->field_3E14);
+ return FALSE;
+}
+
+static void nullsub_63(struct Sprite * sprite)
+{
+
+}
+
+static void sub_80C210C(u8 a0, u8 a1, u8 a2)
+{
+ u8 spriteId;
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_20399E0->field_000[a0],
+ .size = 0x400,
+ .tag = a1
+ };
+ struct SpritePalette spritePalette = {
+ .data = gUnknown_83EF3A4,
+ .tag = a2
+ };
+ struct SpriteTemplate template = {
+ .tileTag = a1,
+ .paletteTag = a2,
+ .oam = &gUnknown_83F1C20,
+ .anims = gUnknown_83F1C30,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_63
+ };
+
+ gUnknown_20399E0->field_000[a0]->field_408 = a1;
+ gUnknown_20399E0->field_000[a0]->field_40A = a2;
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&template, gUnknown_20399E0->field_000[a0]->field_404, gUnknown_20399E0->field_000[a0]->field_406, 0);
+ gUnknown_20399E0->field_000[a0]->field_400 = &gSprites[spriteId];
+ gSprites[spriteId].invisible = TRUE;
+}
+
+static void sub_80C2208(u8 taskId, TaskFunc taskFunc)
+{
+ u8 i;
+
+ gUnknown_20399E0 = AllocZeroed(sizeof(struct UnkStruct_20399E0));
+ for (i = 0; i < 6; i++)
+ {
+ gUnknown_20399E0->field_000[i] = AllocZeroed(sizeof(struct UnkStruct_20399E0_000));
+ gUnknown_20399E0->field_000[i]->field_404 = 32 * (i / 3) + 0x68;
+ gUnknown_20399E0->field_000[i]->field_406 = 64 * (i % 3) + 0x28;
+ }
+ sub_80C4AAC(0);
+ sub_80C4BE4();
+ sub_80C24BC();
+ SetBg0andBg3Visibility(1);
+ gUnknown_20399E0->field_CC8 = taskFunc;
+ gTasks[taskId].func = sub_80C267C;
+}
+
+static void sub_80C22C4(u8 a0, bool8 a1)
+{
+ u8 i;
+ if (a0 == 6)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ gUnknown_20399E0->field_000[i]->field_400->invisible = a1;
+ }
+ }
+ else
+ {
+ gUnknown_20399E0->field_000[a0]->field_400->invisible = a1;
+ }
+}
+
+static bool8 sub_80C2344(void)
+{
+ switch (gUnknown_20399E0->field_CCD)
+ {
+ case 0:
+ LZ77UnCompWram(gUnknown_83F12CC, gUnknown_20399E0->field_000[0]->field_000);
+ sub_80C210C(0, 4, 4);
+ break;
+ case 1:
+ LZ77UnCompWram(gUnknown_83F1550, gUnknown_20399E0->field_000[1]->field_000);
+ sub_80C210C(1, 5, 5);
+ break;
+ case 2:
+ LZ77UnCompWram(gUnknown_83F1738, gUnknown_20399E0->field_000[2]->field_000);
+ sub_80C210C(2, 6, 6);
+ break;
+ case 3:
+ LZ77UnCompWram(gUnknown_83F13EC, gUnknown_20399E0->field_000[3]->field_000);
+ sub_80C210C(3, 7, 7);
+ break;
+ case 4:
+ LZ77UnCompWram(gUnknown_83F1640, gUnknown_20399E0->field_000[4]->field_000);
+ sub_80C210C(4, 8, 8);
+ break;
+ case 5:
+ LZ77UnCompWram(gUnknown_83F1804, gUnknown_20399E0->field_000[5]->field_000);
+ sub_80C210C(5, 9, 9);
+ break;
+ case 6:
+ LZ77UnCompWram(gUnknown_83F0330, gUnknown_20399E0->field_018);
+ break;
+ case 7:
+ LZ77UnCompWram(gUnknown_83F0E0C, gUnknown_20399E0->field_818);
+ break;
+ case 8:
+ LoadBgTiles(1, gUnknown_20399E0->field_018, BG_SCREEN_SIZE, 0x000);
+ break;
+ default:
+ return TRUE;
+ }
+ gUnknown_20399E0->field_CCD++;
+ return FALSE;
+}
+
+static void sub_80C24BC(void)
+{
+ struct GpuWindowParams data;
+ data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 8;
+ data.v2 = 0x10;
+ data.v4 = gUnknown_20399E0->field_000[3]->field_404 - 8;
+ data.v6 = 0xA0;
+ sub_80C4C2C(0, 2, 0);
+ sub_80C4C74(18, 0);
+ sub_80C4C88(16);
+ SetGpuWindowDims(0, &data);
+ sub_80C4C9C(0, 0);
+}
+
+static void sub_80C253C(void)
+{
+ struct GpuWindowParams data = gUnknown_83F1C34;
+ sub_80C4BE4();
+ sub_80C4C2C(2, 41, 128);
+ sub_80C4C48(gUnknown_20399E0->field_CD0);
+ sub_80C4C74(55, 0);
+ sub_80C4C88(18);
+ SetGpuWindowDims(0, &data);
+ sub_80C4C9C(0, 0);
+}
+
+static void sub_80C2594(u8 taskId)
+{
+ gTasks[taskId].func = gUnknown_20399E0->field_CC8;
+}
+
+static void sub_80C25BC(void)
+{
+ u8 i;
+ sub_80C2604();
+ for (i = 0; i < 6; i++)
+ {
+ FREE_IF_NOT_NULL(gUnknown_20399E0->field_000[i]);
+ }
+ FREE_IF_NOT_NULL(gUnknown_20399E0);
+}
+
+static void sub_80C2604(void)
+{
+ u8 i;
+ for (i = 0; i < 6; i++)
+ {
+ gUnknown_20399E0->field_000[i]->field_404 = gUnknown_20399E0->field_000[i]->field_400->pos1.x;
+ gUnknown_20399E0->field_000[i]->field_406 = gUnknown_20399E0->field_000[i]->field_400->pos1.y;
+ if (gUnknown_20399E0->field_000[i]->field_400 != NULL)
+ {
+ DestroySprite(gUnknown_20399E0->field_000[i]->field_400);
+ FreeSpriteTilesByTag(gUnknown_20399E0->field_000[i]->field_408);
+ FreeSpritePaletteByTag(gUnknown_20399E0->field_000[i]->field_40A);
+ }
+ }
+}
+
+static void sub_80C267C(u8 taskId)
+{
+ switch (gUnknown_20399E0->field_CCC)
+ {
+ case 0:
+ NullVBlankHBlankCallbacks();
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 1:
+ if (sub_80C2344() == TRUE)
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 2:
+ CopyToBgTilemapBufferRect(1, gUnknown_20399E0->field_818, 0, 0, 30, 20);
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 3:
+ CopyBgTilemapBufferToVram(1);
+ BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sub_80C08F4();
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 4:
+ ShowBg(0);
+ ShowBg(3);
+ ShowBg(1);
+ sub_80C22C4(6, FALSE);
+ sub_80C2B48();
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ {
+ gUnknown_20399E0->field_CCC++;
+ PlaySE(SE_CARD3);
+ }
+ break;
+ case 6:
+ if (sub_80C29A4() == TRUE)
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 7:
+ sub_80C4324(FALSE);
+ sub_80C3154(FALSE);
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 8:
+ gUnknown_20399E0->field_CD0 = 15;
+ sub_80C253C();
+ SetBg0andBg3Visibility(0);
+ sub_80C48BC(GetWhichRegionMap(), 25, FALSE);
+ sub_80C4960(GetWhichRegionMap(), 25, FALSE);
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 9:
+ sub_80C4E18(gText_RegionMap_DPadMove);
+ if (sub_80C3AC8(1) != 2)
+ sub_80C4E74(gText_RegionMap_Space);
+ else
+ sub_80C4E74(gText_RegionMap_AButtonGuide);
+ sub_80C4ED0(FALSE);
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 10:
+ LoadPalette(&gUnknown_83EF23C[15], 0x00, 2);
+ LoadPalette(&gUnknown_83EF23C[15], 0x10, 2);
+ LoadPalette(&gUnknown_83EF23C[15], 0x20, 2);
+ LoadPalette(&gUnknown_83EF23C[15], 0x30, 2);
+ LoadPalette(&gUnknown_83EF23C[15], 0x40, 2);
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 11:
+ FillBgTilemapBufferRect(1, 0x002, 0, 1, 1, 1, 0x2);
+ FillBgTilemapBufferRect(1, 0x003, 1, 1, 1, 1, 0x2);
+ FillBgTilemapBufferRect(1, 0x03E, 28, 1, 1, 1, 0x2);
+ FillBgTilemapBufferRect(1, 0x03F, 29, 1, 1, 1, 0x2);
+ FillBgTilemapBufferRect(1, 0x03D, 2, 1, 26, 1, 0x2);
+ CopyBgTilemapBufferToVram(1);
+ m4aSongNumStop(SE_CARD3);
+ PlaySE(SE_HI_TURUN);
+ gUnknown_20399E0->field_CCC++;
+ break;
+ case 12:
+ if (gUnknown_20399E0->field_CD0 == 2)
+ {
+ sub_80C22C4(6, TRUE);
+ gUnknown_20399E0->field_CCC++;
+ sub_80C4C48(0);
+ }
+ else
+ {
+ gUnknown_20399E0->field_CD0--;
+ sub_80C4C48(gUnknown_20399E0->field_CD0);
+ }
+ break;
+ case 13:
+ sub_80C4B30(0);
+ sub_80C0BB0();
+ gUnknown_20399E0->field_CCC++;
+ break;
+ default:
+ sub_80C2604();
+ sub_80C2594(taskId);
+ break;
+ }
+}
+
+static bool8 sub_80C29A4(void)
+{
+ sub_80C2B48();
+ if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 0)
+ {
+ return TRUE;
+ }
+ else if (gUnknown_20399E0->field_CCE > 17)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 1;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 1;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 1;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x += 1;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x += 1;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x += 1;
+ }
+ else if (gUnknown_20399E0->field_CCE > 14)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 2;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 2;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 2;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x += 2;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x += 2;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x += 2;
+ }
+ else if (gUnknown_20399E0->field_CCE > 10)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 3;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 3;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 3;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x += 3;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x += 3;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x += 3;
+ }
+ else if (gUnknown_20399E0->field_CCE > 6)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 5;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 5;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 5;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x += 5;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x += 5;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x += 5;
+ }
+ else
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 8;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 8;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 8;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x += 8;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x += 8;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x += 8;
+ }
+ gUnknown_20399E0->field_CCE++;
+ return FALSE;
+}
+
+static void sub_80C2B48(void)
+{
+ struct GpuWindowParams data;
+ data.v0 = gUnknown_20399E0->field_000[0]->field_400->pos1.x;
+ data.v2 = 0x10;
+ data.v4 = gUnknown_20399E0->field_000[3]->field_400->pos1.x;
+ data.v6 = 0xA0;
+ SetGpuWindowDims(0, &data);
+}
+
+static void sub_80C2B9C(void)
+{
+ struct GpuWindowParams data;
+ data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 16;
+ data.v2 = 0x10;
+ data.v4 = gUnknown_20399E0->field_000[3]->field_404 - 16;
+ data.v6 = 0xA0;
+ sub_80C4C2C(0, 2, 0);
+ sub_80C4C74(18, 0);
+ sub_80C4C88(16);
+ SetGpuWindowDims(0, &data);
+ sub_80C4C9C(0, 0);
+}
+
+static void sub_80C2C1C(u8 taskId)
+{
+ gTasks[taskId].func = sub_80C2C7C;
+}
+
+static void sub_80C2C38(void)
+{
+ sub_80C210C(0, 4, 4);
+ sub_80C210C(1, 5, 5);
+ sub_80C210C(2, 6, 6);
+ sub_80C210C(3, 7, 7);
+ sub_80C210C(4, 8, 8);
+ sub_80C210C(5, 9, 9);
+}
+
+static void sub_80C2C7C(u8 taskId)
+{
+ switch (gUnknown_20399E0->field_CCF)
+ {
+ case 0:
+ sub_80C4ED0(TRUE);
+ CopyWindowToVram(3, 3);
+ CopyWindowToVram(4, 3);
+ gUnknown_20399E0->field_CCF++;
+ break;
+ case 1:
+ sub_80C2C38();
+ gUnknown_20399E0->field_CCF++;
+ break;
+ case 2:
+ LoadPalette(gUnknown_83EF2DC, 0x00, 0xA0);
+ gUnknown_20399E0->field_CCF++;
+ break;
+ case 3:
+ sub_80C22C4(6, FALSE);
+ sub_80C4324(TRUE);
+ sub_80C3154(TRUE);
+ sub_80C4960(255, 25, TRUE);
+ sub_80C48BC(255, 25, TRUE);
+ gUnknown_20399E0->field_CCE = 0;
+ gUnknown_20399E0->field_CD0 = 0;
+ gUnknown_20399E0->field_CCF++;
+ break;
+ case 4:
+ sub_80C253C();
+ gUnknown_20399E0->field_CCF++;
+ break;
+ case 5:
+ if (gUnknown_20399E0->field_CD0 == 15)
+ {
+ sub_80C4C48(gUnknown_20399E0->field_CD0);
+ gUnknown_20399E0->field_CCF++;
+ }
+ else
+ {
+ gUnknown_20399E0->field_CD0++;
+ sub_80C4C48(gUnknown_20399E0->field_CD0);
+ }
+ break;
+ case 6:
+ sub_80C2B9C();
+ sub_80C2B48();
+ PlaySE(SE_CARD2);
+ gUnknown_20399E0->field_CCF++;
+ break;
+ case 7:
+ if (sub_80C2E1C() == TRUE)
+ gUnknown_20399E0->field_CCF++;
+ break;
+ default:
+ gTasks[taskId].func = gUnknown_20399E0->field_CC8;
+ break;
+ }
+}
+
+
+static bool8 sub_80C2E1C(void)
+{
+ sub_80C2B48();
+ if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 104)
+ {
+ return TRUE;
+ }
+ else if (gUnknown_20399E0->field_CCE > 17)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x += 1;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x += 1;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x += 1;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 1;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 1;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 1;
+ }
+ else if (gUnknown_20399E0->field_CCE > 14)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x += 2;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x += 2;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x += 2;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 2;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 2;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 2;
+ }
+ else if (gUnknown_20399E0->field_CCE > 10)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x += 3;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x += 3;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x += 3;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 3;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 3;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 3;
+ }
+ else if (gUnknown_20399E0->field_CCE > 6)
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x += 5;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x += 5;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x += 5;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 5;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 5;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 5;
+ }
+ else
+ {
+ gUnknown_20399E0->field_000[0]->field_400->pos1.x += 8;
+ gUnknown_20399E0->field_000[1]->field_400->pos1.x += 8;
+ gUnknown_20399E0->field_000[2]->field_400->pos1.x += 8;
+ gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 8;
+ gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 8;
+ gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 8;
+ }
+ gUnknown_20399E0->field_CCE++;
+ return FALSE;
+}
+
+static void sub_80C2FC0(struct Sprite * sprite)
+{
+ if (gUnknown_20399E4->field_00C != 0)
+ {
+ sprite->pos1.x += gUnknown_20399E4->field_008;
+ sprite->pos1.y += gUnknown_20399E4->field_00A;
+ gUnknown_20399E4->field_00C--;
+ }
+ else
+ {
+ gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36;
+ gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36;
+ }
+}
+
+static void sub_80C3008(u16 a0, u16 a1)
+{
+ gUnknown_20399E4 = AllocZeroed(sizeof(struct UnkStruct_20399E4));
+ LZ77UnCompWram(gUnknown_83EF4E0, gUnknown_20399E4->field_024);
+ gUnknown_20399E4->field_020 = a0;
+ gUnknown_20399E4->field_022 = a1;
+ GetPlayerPositionOnRegionMap_HandleOverrides();
+ gUnknown_20399E4->field_004 = 8 * gUnknown_20399E4->field_000 + 36;
+ gUnknown_20399E4->field_006 = 8 * gUnknown_20399E4->field_002 + 36;
+ gUnknown_20399E4->field_010 = sub_80C31C0;
+ gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014);
+ gUnknown_20399E4->field_018 = sub_80C3878(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000));
+ sub_80C309C();
+}
+
+static void sub_80C309C(void)
+{
+ u8 spriteId;
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_20399E4->field_024,
+ .size = 0x100,
+ .tag = gUnknown_20399E4->field_020
+ };
+ struct SpritePalette spritePalette = {
+ .data = gUnknown_83EF25C,
+ .tag = gUnknown_20399E4->field_022
+ };
+ struct SpriteTemplate template = {
+ .tileTag = gUnknown_20399E4->field_020,
+ .paletteTag = gUnknown_20399E4->field_022,
+ .oam = &gUnknown_83F1C3C,
+ .anims = gUnknown_83F1C50,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80C2FC0
+ };
+
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&template, gUnknown_20399E4->field_004, gUnknown_20399E4->field_006, 0);
+ gUnknown_20399E4->field_01C = &gSprites[spriteId];
+ sub_80C3154(TRUE);
+}
+
+static void sub_80C3154(bool8 a0)
+{
+ gUnknown_20399E4->field_01C->invisible = a0;
+}
+
+static void sub_80C3178(void)
+{
+ gUnknown_20399E4->field_00E = 0;
+}
+
+static void sub_80C3188(void)
+{
+ if (gUnknown_20399E4->field_01C != NULL)
+ {
+ DestroySprite(gUnknown_20399E4->field_01C);
+ FreeSpriteTilesByTag(gUnknown_20399E4->field_020);
+ FreeSpritePaletteByTag(gUnknown_20399E4->field_022);
+ }
+ FREE_IF_NOT_NULL(gUnknown_20399E4);
+}
+
+static u8 sub_80C31C0(void)
+{
+ u8 ret = 0;
+ gUnknown_20399E4->field_008 = 0;
+ gUnknown_20399E4->field_00A = 0;
+
+ if (JOY_HELD(DPAD_UP))
+ {
+ if (gUnknown_20399E4->field_002 > 0)
+ {
+ gUnknown_20399E4->field_00A = -2;
+ ret = 1;
+ }
+ }
+ if (JOY_HELD(DPAD_DOWN))
+ {
+ if (gUnknown_20399E4->field_002 < 14)
+ {
+ gUnknown_20399E4->field_00A = 2;
+ ret = 1;
+ }
+ }
+ if (JOY_HELD(DPAD_RIGHT))
+ {
+ if (gUnknown_20399E4->field_000 < 21)
+ {
+ gUnknown_20399E4->field_008 = 2;
+ ret = 1;
+ }
+ }
+ if (JOY_HELD(DPAD_LEFT))
+ {
+ if (gUnknown_20399E4->field_000 > 0)
+ {
+ gUnknown_20399E4->field_008 = -2;
+ ret = 1;
+ }
+ }
+ if (JOY_NEW(A_BUTTON))
+ {
+ ret = 4;
+ if (gUnknown_20399E4->field_000 == 21 && gUnknown_20399E4->field_002 == 13)
+ {
+ PlaySE(SE_W063B);
+ ret = 6;
+ }
+ if (gUnknown_20399E4->field_000 == 21 && gUnknown_20399E4->field_002 == 11)
+ {
+ if (GetRegionMapPermission(MAPPERM_0) == TRUE)
+ {
+ PlaySE(SE_W063B);
+ ret = 5;
+ }
+ }
+ }
+ else if (!JOY_NEW(B_BUTTON))
+ {
+ if (JOY_REPT(START_BUTTON))
+ {
+ sub_80C3418();
+ gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+ gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014);
+ gUnknown_20399E4->field_018 = sub_80C3878(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000));
+ return 3;
+ }
+ else if (JOY_NEW(SELECT_BUTTON) && gUnknown_20399D4->savedCallback == CB2_ReturnToField)
+ {
+ ret = 6;
+ }
+ }
+ else
+ {
+ ret = 6;
+ }
+ if (ret == 1)
+ {
+ gUnknown_20399E4->field_00C = 4;
+ gUnknown_20399E4->field_010 = sub_80C3348;
+ }
+ return ret;
+}
+
+static u8 sub_80C3348(void)
+{
+ if (gUnknown_20399E4->field_00C != 0)
+ return 2;
+ if (gUnknown_20399E4->field_008 > 0)
+ gUnknown_20399E4->field_000++;
+ if (gUnknown_20399E4->field_008 < 0)
+ gUnknown_20399E4->field_000--;
+ if (gUnknown_20399E4->field_00A > 0)
+ gUnknown_20399E4->field_002++;
+ if (gUnknown_20399E4->field_00A < 0)
+ gUnknown_20399E4->field_002--;
+ gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+ gUnknown_20399E4->field_016 = sub_80C35DC(gUnknown_20399E4->field_014);
+ gUnknown_20399E4->field_018 = sub_80C3878(GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000));
+ gUnknown_20399E4->field_010 = sub_80C31C0;
+ return 3;
+}
+
+static u8 sub_80C3400(void)
+{
+ return gUnknown_20399E4->field_010();
+}
+
+static void sub_80C3418(void)
+{
+ if (GetRegionMapPermission(MAPPERM_0) == 1)
+ {
+ gUnknown_20399E4->field_00E++;
+ gUnknown_20399E4->field_00E %= 3;
+ if (gUnknown_20399E4->field_00E == 0 && GetWhichRegionMap() != sub_80C0E34())
+ {
+ gUnknown_20399E4->field_00E++;
+ }
+ switch (gUnknown_20399E4->field_00E)
+ {
+ case 0:
+ default:
+ gUnknown_20399E4->field_000 = sub_80C4380();
+ gUnknown_20399E4->field_002 = sub_80C438C();
+ break;
+ case 1:
+ gUnknown_20399E4->field_000 = 21;
+ gUnknown_20399E4->field_002 = 11;
+ break;
+ case 2:
+ gUnknown_20399E4->field_002 = 13;
+ gUnknown_20399E4->field_000 = 21;
+ break;
+ }
+ }
+ else
+ {
+ gUnknown_20399E4->field_00E++;
+ gUnknown_20399E4->field_00E %= 2;
+ switch (gUnknown_20399E4->field_00E)
+ {
+ case 0:
+ default:
+ gUnknown_20399E4->field_000 = sub_80C4380();
+ gUnknown_20399E4->field_002 = sub_80C438C();
+ break;
+ case 1:
+ gUnknown_20399E4->field_002 = 13;
+ gUnknown_20399E4->field_000 = 21;
+ break;
+ }
+ }
+ gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36;
+ gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36;
+ gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+}
+
+static u16 GetMapCursorX(void)
+{
+ return gUnknown_20399E4->field_000;
+}
+
+static u16 GetMapCursorY(void)
+{
+ return gUnknown_20399E4->field_002;
+}
+
+static u16 sub_80C3520(void)
+{
+ u8 ret;
+ if (gUnknown_20399E4->field_002 < 0
+ || gUnknown_20399E4->field_002 > 14
+ || gUnknown_20399E4->field_000 < 0
+ || gUnknown_20399E4->field_000 > 21)
+ return MAPSEC_NONE;
+
+ ret = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+ if ((ret == MAPSEC_NAVEL_ROCK || ret == MAPSEC_BIRTH_ISLAND) && !FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR))
+ ret = MAPSEC_NONE;
+ return ret;
+}
+
+static u16 GetMapSecUnderCursor(void)
+{
+ u8 ret;
+ if (gUnknown_20399E4->field_002 < 0
+ || gUnknown_20399E4->field_002 > 14
+ || gUnknown_20399E4->field_000 < 0
+ || gUnknown_20399E4->field_000 > 21)
+ return MAPSEC_NONE;
+
+ ret = GetSelectedMapSection(GetWhichRegionMap(), 1, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+ if (ret == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS))
+ ret = MAPSEC_NONE;
+ return ret;
+}
+
+static u8 sub_80C35DC(u8 mapsec)
+{
+ switch (mapsec)
+ {
+ case MAPSEC_PALLET_TOWN:
+ return FlagGet(FLAG_WORLD_MAP_PALLET_TOWN) ? 2 : 3;
+ case MAPSEC_VIRIDIAN_CITY:
+ return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_CITY) ? 2 : 3;
+ case MAPSEC_PEWTER_CITY:
+ return FlagGet(FLAG_WORLD_MAP_PEWTER_CITY) ? 2 : 3;
+ case MAPSEC_CERULEAN_CITY:
+ return FlagGet(FLAG_WORLD_MAP_CERULEAN_CITY) ? 2 : 3;
+ case MAPSEC_LAVENDER_TOWN:
+ return FlagGet(FLAG_WORLD_MAP_LAVENDER_TOWN) ? 2 : 3;
+ case MAPSEC_VERMILION_CITY:
+ return FlagGet(FLAG_WORLD_MAP_VERMILION_CITY) ? 2 : 3;
+ case MAPSEC_CELADON_CITY:
+ return FlagGet(FLAG_WORLD_MAP_CELADON_CITY) ? 2 : 3;
+ case MAPSEC_FUCHSIA_CITY:
+ return FlagGet(FLAG_WORLD_MAP_FUCHSIA_CITY) ? 2 : 3;
+ case MAPSEC_CINNABAR_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_CINNABAR_ISLAND) ? 2 : 3;
+ case MAPSEC_INDIGO_PLATEAU:
+ return FlagGet(FLAG_WORLD_MAP_INDIGO_PLATEAU_EXTERIOR) ? 2 : 3;
+ case MAPSEC_SAFFRON_CITY:
+ return FlagGet(FLAG_WORLD_MAP_SAFFRON_CITY) ? 2 : 3;
+ case MAPSEC_ONE_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_ONE_ISLAND) ? 2 : 3;
+ case MAPSEC_TWO_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_TWO_ISLAND) ? 2 : 3;
+ case MAPSEC_THREE_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_THREE_ISLAND) ? 2 : 3;
+ case MAPSEC_FOUR_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_FOUR_ISLAND) ? 2 : 3;
+ case MAPSEC_FIVE_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND) ? 2 : 3;
+ case MAPSEC_SEVEN_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND) ? 2 : 3;
+ case MAPSEC_SIX_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND) ? 2 : 3;
+ case MAPSEC_ROUTE_4_FLYDUP:
+ if (!GetRegionMapPermission(MAPPERM_3))
+ return 0;
+ return FlagGet(FLAG_WORLD_MAP_ROUTE4_POKEMON_CENTER_1F) ? 2 : 3;
+ case MAPSEC_ROUTE_10_FLYDUP:
+ return FlagGet(FLAG_WORLD_MAP_ROUTE10_POKEMON_CENTER_1F) ? 2 : 3;
+ case MAPSEC_NONE:
+ return 0;
+ default:
+ return 1;
+ }
+}
+
+static u8 sub_80C3878(u8 mapsec)
+{
+ switch (mapsec)
+ {
+ case MAPSEC_NONE:
+ return 0;
+ case MAPSEC_VIRIDIAN_FOREST:
+ return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_FOREST) ? 2 : 3;
+ case MAPSEC_MT_MOON:
+ return FlagGet(FLAG_WORLD_MAP_MT_MOON_1F) ? 2 : 3;
+ case MAPSEC_S_S_ANNE:
+ return FlagGet(FLAG_WORLD_MAP_SSANNE_EXTERIOR) ? 2 : 3;
+ case MAPSEC_UNDERGROUND_PATH:
+ return FlagGet(FLAG_WORLD_MAP_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL) ? 2 : 3;
+ case MAPSEC_UNDERGROUND_PATH_2:
+ return FlagGet(FLAG_WORLD_MAP_UNDERGROUND_PATH_EAST_WEST_TUNNEL) ? 2 : 3;
+ case MAPSEC_DIGLETTS_CAVE:
+ return FlagGet(FLAG_WORLD_MAP_DIGLETTS_CAVE_B1F) ? 2 : 3;
+ case MAPSEC_KANTO_VICTORY_ROAD:
+ return FlagGet(FLAG_WORLD_MAP_VICTORY_ROAD_1F) ? 2 : 3;
+ case MAPSEC_ROCKET_HIDEOUT:
+ return FlagGet(FLAG_WORLD_MAP_ROCKET_HIDEOUT_B1F) ? 2 : 3;
+ case MAPSEC_SILPH_CO:
+ return FlagGet(FLAG_WORLD_MAP_SILPH_CO_1F) ? 2 : 3;
+ case MAPSEC_POKEMON_MANSION:
+ return FlagGet(FLAG_WORLD_MAP_POKEMON_MANSION_1F) ? 2 : 3;
+ case MAPSEC_KANTO_SAFARI_ZONE:
+ return FlagGet(FLAG_WORLD_MAP_SAFARI_ZONE_CENTER) ? 2 : 3;
+ case MAPSEC_POKEMON_LEAGUE:
+ return FlagGet(FLAG_WORLD_MAP_POKEMON_LEAGUE_LORELEIS_ROOM) ? 2 : 3;
+ case MAPSEC_ROCK_TUNNEL:
+ return FlagGet(FLAG_WORLD_MAP_ROCK_TUNNEL_1F) ? 2 : 3;
+ case MAPSEC_SEAFOAM_ISLANDS:
+ return FlagGet(FLAG_WORLD_MAP_SEAFOAM_ISLANDS_1F) ? 2 : 3;
+ case MAPSEC_POKEMON_TOWER:
+ return FlagGet(FLAG_WORLD_MAP_POKEMON_TOWER_1F) ? 2 : 3;
+ case MAPSEC_CERULEAN_CAVE:
+ return FlagGet(FLAG_WORLD_MAP_CERULEAN_CAVE_1F) ? 2 : 3;
+ case MAPSEC_POWER_PLANT:
+ return FlagGet(FLAG_WORLD_MAP_POWER_PLANT) ? 2 : 3;
+ case MAPSEC_NAVEL_ROCK:
+ return FlagGet(FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR) ? 2 : 3;
+ case MAPSEC_MT_EMBER:
+ return FlagGet(FLAG_WORLD_MAP_MT_EMBER_EXTERIOR) ? 2 : 3;
+ case MAPSEC_BERRY_FOREST:
+ return FlagGet(FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST) ? 2 : 3;
+ case MAPSEC_ICEFALL_CAVE:
+ return FlagGet(FLAG_WORLD_MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE) ? 2 : 3;
+ case MAPSEC_ROCKET_WAREHOUSE:
+ return FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND_ROCKET_WAREHOUSE) ? 2 : 3;
+ case MAPSEC_TRAINER_TOWER_2:
+ return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY) ? 2 : 3;
+ case MAPSEC_DOTTED_HOLE:
+ return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F) ? 2 : 3;
+ case MAPSEC_LOST_CAVE:
+ return FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE) ? 2 : 3;
+ case MAPSEC_PATTERN_BUSH:
+ return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND_PATTERN_BUSH) ? 2 : 3;
+ case MAPSEC_ALTERING_CAVE:
+ return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND_ALTERING_CAVE) ? 2 : 3;
+ case MAPSEC_TANOBY_CHAMBERS:
+ return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER) ? 2 : 3;
+ case MAPSEC_THREE_ISLE_PATH:
+ return FlagGet(FLAG_WORLD_MAP_THREE_ISLAND_DUNSPARCE_TUNNEL) ? 2 : 3;
+ case MAPSEC_TANOBY_KEY:
+ return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY) ? 2 : 3;
+ case MAPSEC_BIRTH_ISLAND:
+ return FlagGet(FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR) ? 2 : 3;
+ default:
+ return 1;
+ }
+}
+
+static u8 sub_80C3AC8(u8 a0)
+{
+ switch (a0)
+ {
+ default:
+ return gUnknown_20399E4->field_016;
+ case 0:
+ return gUnknown_20399E4->field_016;
+ case 1:
+ return gUnknown_20399E4->field_018;
+ }
+}
+
+static u16 GetPlayerCurrentMapSectionId(void)
+{
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)->regionMapSectionId;
+}
+
+static void GetPlayerPositionOnRegionMap(void)
+{
+ u16 width;
+ u32 divisor;
+ u16 height;
+ u16 x;
+ u16 y;
+ u32 r6;
+ const struct MapHeader * mapHeader;
+ struct WarpData * warp;
+
+ switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
+ {
+ default:
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 6:
+ gUnknown_20399E4->field_014 = gMapHeader.regionMapSectionId;
+ width = gMapHeader.mapLayout->width;
+ height = gMapHeader.mapLayout->height;
+ x = gSaveBlock1Ptr->pos.x;
+ y = gSaveBlock1Ptr->pos.y;
+ break;
+ case 4:
+ case 7:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
+ gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId;
+ width = mapHeader->mapLayout->width;
+ height = mapHeader->mapLayout->height;
+ x = gSaveBlock1Ptr->escapeWarp.x;
+ y = gSaveBlock1Ptr->escapeWarp.y;
+ break;
+ case 9:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->warp2.mapGroup, gSaveBlock1Ptr->warp2.mapNum);
+ gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId;
+ width = mapHeader->mapLayout->width;
+ height = mapHeader->mapLayout->height;
+ x = gSaveBlock1Ptr->warp2.x;
+ y = gSaveBlock1Ptr->warp2.y;
+ break;
+ case 8:
+ if ((gUnknown_20399E4->field_014 = gMapHeader.regionMapSectionId) != MAPSEC_SPECIAL_AREA)
+ {
+ warp = &gSaveBlock1Ptr->escapeWarp;
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
+ }
+ else
+ {
+ warp = &gSaveBlock1Ptr->warp2;
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
+ gUnknown_20399E4->field_014 = mapHeader->regionMapSectionId;
+ }
+ width = mapHeader->mapLayout->width;
+ height = mapHeader->mapLayout->height;
+ x = warp->x;
+ y = warp->y;
+ break;
+ }
+
+ gUnknown_20399E4->field_014 -= MAPSECS_KANTO;
+ divisor = width / sMapSectionDimensions[gUnknown_20399E4->field_014][0];
+ if (divisor == 0)
+ divisor = 1;
+ x /= divisor;
+ if (x >= sMapSectionDimensions[gUnknown_20399E4->field_014][0])
+ x = sMapSectionDimensions[gUnknown_20399E4->field_014][0] - 1;
+ divisor = height / sMapSectionDimensions[gUnknown_20399E4->field_014][1];
+ if (divisor == 0)
+ divisor = 1;
+ y /= divisor;
+ if (y >= sMapSectionDimensions[gUnknown_20399E4->field_014][1])
+ y = sMapSectionDimensions[gUnknown_20399E4->field_014][1] - 1;
+ gUnknown_20399E4->field_000 = x + sMapSectionTopLeftCorners[gUnknown_20399E4->field_014][0];
+ gUnknown_20399E4->field_002 = y + sMapSectionTopLeftCorners[gUnknown_20399E4->field_014][1];
+}
+
+static void GetPlayerPositionOnRegionMap_HandleOverrides(void)
+{
+ switch (GetPlayerCurrentMapSectionId())
+ {
+ case MAPSEC_KANTO_SAFARI_ZONE:
+ gUnknown_20399E4->field_000 = 12;
+ gUnknown_20399E4->field_002 = 12;
+ break;
+ case MAPSEC_SILPH_CO:
+ gUnknown_20399E4->field_000 = 14;
+ gUnknown_20399E4->field_002 = 6;
+ break;
+ case MAPSEC_POKEMON_MANSION:
+ gUnknown_20399E4->field_000 = 4;
+ gUnknown_20399E4->field_002 = 14;
+ break;
+ case MAPSEC_POKEMON_TOWER:
+ gUnknown_20399E4->field_000 = 18;
+ gUnknown_20399E4->field_002 = 6;
+ break;
+ case MAPSEC_POWER_PLANT:
+ gUnknown_20399E4->field_000 = 18;
+ gUnknown_20399E4->field_002 = 4;
+ break;
+ case MAPSEC_S_S_ANNE:
+ gUnknown_20399E4->field_000 = 14;
+ gUnknown_20399E4->field_002 = 9;
+ break;
+ case MAPSEC_POKEMON_LEAGUE:
+ gUnknown_20399E4->field_000 = 2;
+ gUnknown_20399E4->field_002 = 3;
+ break;
+ case MAPSEC_ROCKET_HIDEOUT:
+ gUnknown_20399E4->field_000 = 11;
+ gUnknown_20399E4->field_002 = 6;
+ break;
+ case MAPSEC_UNDERGROUND_PATH:
+ gUnknown_20399E4->field_000 = 14;
+ gUnknown_20399E4->field_002 = 7;
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNDERGROUND_PATH_NORTH_ENTRANCE))
+ {
+ gUnknown_20399E4->field_000 = 14; // optimized out but required to match
+ gUnknown_20399E4->field_002 = 5;
+ }
+ break;
+ case MAPSEC_UNDERGROUND_PATH_2:
+ gUnknown_20399E4->field_000 = 12;
+ gUnknown_20399E4->field_002 = 6;
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNDERGROUND_PATH_EAST_ENTRANCE))
+ {
+ gUnknown_20399E4->field_000 = 15;
+ gUnknown_20399E4->field_002 = 6; // optimized out but required to match
+ }
+ break;
+ case MAPSEC_BIRTH_ISLAND:
+ gUnknown_20399E4->field_000 = 18;
+ gUnknown_20399E4->field_002 = 13;
+ break;
+ case MAPSEC_NAVEL_ROCK:
+ gUnknown_20399E4->field_000 = 10;
+ gUnknown_20399E4->field_002 = 8;
+ break;
+ case MAPSEC_TRAINER_TOWER_2:
+ gUnknown_20399E4->field_000 = 5;
+ gUnknown_20399E4->field_002 = 6;
+ break;
+ case MAPSEC_MT_EMBER:
+ gUnknown_20399E4->field_000 = 2;
+ gUnknown_20399E4->field_002 = 3;
+ break;
+ case MAPSEC_BERRY_FOREST:
+ gUnknown_20399E4->field_000 = 14;
+ gUnknown_20399E4->field_002 = 12;
+ break;
+ case MAPSEC_PATTERN_BUSH:
+ gUnknown_20399E4->field_000 = 17;
+ gUnknown_20399E4->field_002 = 3;
+ break;
+ case MAPSEC_ROCKET_WAREHOUSE:
+ gUnknown_20399E4->field_000 = 17;
+ gUnknown_20399E4->field_002 = 11;
+ break;
+ case MAPSEC_DILFORD_CHAMBER:
+ case MAPSEC_LIPTOO_CHAMBER:
+ case MAPSEC_MONEAN_CHAMBER:
+ case MAPSEC_RIXY_CHAMBER:
+ case MAPSEC_SCUFIB_CHAMBER:
+ case MAPSEC_TANOBY_CHAMBERS:
+ case MAPSEC_VIAPOIS_CHAMBER:
+ case MAPSEC_WEEPTH_CHAMBER:
+ gUnknown_20399E4->field_000 = 9;
+ gUnknown_20399E4->field_002 = 12;
+ break;
+ case MAPSEC_DOTTED_HOLE:
+ gUnknown_20399E4->field_000 = 16;
+ gUnknown_20399E4->field_002 = 8;
+ break;
+ case MAPSEC_VIRIDIAN_FOREST:
+ gUnknown_20399E4->field_000 = 4;
+ gUnknown_20399E4->field_002 = 6;
+ break;
+ case MAPSEC_ROUTE_2:
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN))
+ {
+ gUnknown_20399E4->field_000 = 4;
+ gUnknown_20399E4->field_002 = 7;
+ }
+ else if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(CERULEAN_CITY))
+ {
+ gUnknown_20399E4->field_000 = 4;
+ gUnknown_20399E4->field_002 = 5;
+ }
+ else
+ {
+ GetPlayerPositionOnRegionMap();
+ }
+ break;
+ case MAPSEC_ROUTE_21:
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE21_NORTH))
+ {
+ gUnknown_20399E4->field_000 = 4;
+ gUnknown_20399E4->field_002 = 12;
+ }
+ else if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE21_SOUTH))
+ {
+ gUnknown_20399E4->field_000 = 4;
+ gUnknown_20399E4->field_002 = 13;
+ }
+ break;
+ case MAPSEC_ROUTE_5:
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_CITY))
+ {
+ gUnknown_20399E4->field_000 = 14;
+ gUnknown_20399E4->field_002 = 5;
+ }
+ else
+ {
+ GetPlayerPositionOnRegionMap();
+ }
+ break;
+ case MAPSEC_ROUTE_6:
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN))
+ {
+ gUnknown_20399E4->field_000 = 14;
+ gUnknown_20399E4->field_002 = 7;
+ }
+ else
+ {
+ GetPlayerPositionOnRegionMap();
+ }
+ break;
+ case MAPSEC_ROUTE_7:
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN))
+ {
+ gUnknown_20399E4->field_000 = 13;
+ gUnknown_20399E4->field_002 = 6;
+ }
+ else
+ {
+ GetPlayerPositionOnRegionMap();
+ }
+ break;
+ case MAPSEC_ROUTE_8:
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN))
+ {
+ gUnknown_20399E4->field_000 = 15;
+ gUnknown_20399E4->field_002 = 6;
+ }
+ else
+ {
+ GetPlayerPositionOnRegionMap();
+ }
+ break;
+ default:
+ GetPlayerPositionOnRegionMap();
+ break;
+ }
+ gUnknown_20399E4->field_014 = GetSelectedMapSection(GetWhichRegionMap(), 0, gUnknown_20399E4->field_002, gUnknown_20399E4->field_000);
+}
+
+static u8 GetSelectedMapSection(u8 whichMap, u8 layer, s16 y, s16 x)
+{
+ switch (whichMap)
+ {
+ case 0:
+ return sRegionMapSections_Kanto[layer][y][x];
+ case 1:
+ return sRegionMapSections_Sevii123[layer][y][x];
+ case 2:
+ return sRegionMapSections_Sevii45[layer][y][x];
+ case 3:
+ return sRegionMapSections_Sevii67[layer][y][x];
+ default:
+ return MAPSEC_NONE;
+ }
+}
+
+static void sub_80C41D8(u16 a0, u16 a1)
+{
+ gUnknown_20399E8 = AllocZeroed(sizeof(struct UnkStruct_20399E8));
+ if (gSaveBlock2Ptr->playerGender == FEMALE)
+ LZ77UnCompWram(gUnknown_83EF59C, gUnknown_20399E8->field_0C);
+ else
+ LZ77UnCompWram(gUnknown_83EF524, gUnknown_20399E8->field_0C);
+ gUnknown_20399E8->field_08 = a0;
+ gUnknown_20399E8->field_0A = a1;
+ gUnknown_20399E8->field_00 = GetMapCursorX();
+ gUnknown_20399E8->field_02 = GetMapCursorY();
+ sub_80C4244();
+}
+
+static void sub_80C4244(void)
+{
+ u8 spriteId;
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_20399E8->field_0C,
+ .size = 0x80,
+ .tag = gUnknown_20399E8->field_08
+ };
+ struct SpritePalette spritePalette = {
+ .data = gUnknown_83EF27C,
+ .tag = gUnknown_20399E8->field_0A
+ };
+ struct SpriteTemplate template = {
+ .tileTag = gUnknown_20399E8->field_08,
+ .paletteTag = gUnknown_20399E8->field_0A,
+ .oam = &gUnknown_83F1C54,
+ .anims = gUnknown_83F1C64,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ };
+
+ if (gSaveBlock2Ptr->playerGender == FEMALE)
+ spritePalette.data = gUnknown_83EF29C;
+
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&template, 8 * gUnknown_20399E8->field_00 + 36, 8 * gUnknown_20399E8->field_02 + 36, 2);
+ gUnknown_20399E8->field_04 = &gSprites[spriteId];
+ sub_80C4324(TRUE);
+}
+
+static void sub_80C4324(bool8 a0)
+{
+ gUnknown_20399E8->field_04->invisible = a0;
+}
+
+static void sub_80C4348(void)
+{
+ if (gUnknown_20399E8->field_04 != NULL)
+ {
+ DestroySprite(gUnknown_20399E8->field_04);
+ FreeSpriteTilesByTag(gUnknown_20399E8->field_08);
+ FreeSpritePaletteByTag(gUnknown_20399E8->field_0A);
+ }
+ FREE_IF_NOT_NULL(gUnknown_20399E8);
+}
+
+static u16 sub_80C4380(void)
+{
+ return gUnknown_20399E8->field_00;
+}
+
+static u16 sub_80C438C(void)
+{
+ return gUnknown_20399E8->field_02;
+}
+
+static void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc)
+{
+ gUnknown_20399EC = AllocZeroed(sizeof(struct UnkStruct_20399EC));
+ gUnknown_20399EC->field_468 = taskFunc;
+ gUnknown_20399EC->field_460 = a0;
+ LZ77UnCompWram(gUnknown_83F18D8, gUnknown_20399EC->field_000);
+ LZ77UnCompWram(gUnknown_83F1908, gUnknown_20399EC->field_040);
+ gTasks[taskId].func = sub_80C440C;
+}
+
+static void sub_80C440C(u8 taskId)
+{
+ switch (gUnknown_20399EC->field_463)
+ {
+ case 0:
+ NullVBlankHBlankCallbacks();
+ gUnknown_20399EC->field_463++;
+ break;
+ case 1:
+ sub_80C47F0();
+ gUnknown_20399EC->field_463++;
+ break;
+ case 2:
+ sub_80C4750();
+ gUnknown_20399EC->field_463++;
+ break;
+ case 3:
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gUnknown_20399EC->field_463++;
+ break;
+ case 4:
+ sub_80C08F4();
+ gUnknown_20399EC->field_463++;
+ break;
+ default:
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | DISPCNT_OBJ_ON);
+ sub_80C44E4(taskId);
+ break;
+ }
+}
+
+static void sub_80C44E4(u8 taskId)
+{
+ gTasks[taskId].func = gUnknown_20399EC->field_468;
+}
+
+static void sub_80C450C(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5)
+{
+ u8 spriteId;
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_20399EC->field_040,
+ .size = 0x100,
+ .tag = a4
+ };
+ struct SpritePalette spritePalette = {
+ .data = gUnknown_83EF2BC,
+ .tag = a5
+ };
+ struct SpriteTemplate template = {
+ .tileTag = a4,
+ .paletteTag = a5,
+ .oam = &gUnknown_83F1C68,
+ .anims = gUnknown_83F1C94,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ };
+
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&template, 8 * a2 + 36, 8 * a3 + 36, 1);
+ gUnknown_20399EC->field_2D0[a1].field_8 = &gSprites[spriteId];
+ gSprites[spriteId].invisible = TRUE;
+ gUnknown_20399EC->field_2D0[a1].field_4 = a0;
+}
+
+static void sub_80C4614(u8 a0, u8 a1, u16 a2, u16 a3, u8 a4, u8 a5)
+{
+ u8 spriteId;
+ u8 r4;
+ s16 r7 = 0;
+ struct SpriteSheet spriteSheet = {
+ .data = gUnknown_20399EC->field_000,
+ .size = 0x40,
+ .tag = a4
+ };
+ struct SpritePalette spritePalette = {
+ .data = gUnknown_83EF2BC,
+ .tag = a5
+ };
+ struct SpriteTemplate template = {
+ .tileTag = a4,
+ .paletteTag = a5,
+ .oam = &gUnknown_83F1C70,
+ .anims = gUnknown_83F1C98,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ };
+
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ r4 = GetSelectedMapSection(a0, 0, a3, a2);
+ if ((sub_80C35DC(r4) == 2 || sub_80C35DC(r4) == 3) && r4 != MAPSEC_ROUTE_10_FLYDUP)
+ r7 = 2;
+ spriteId = CreateSprite(&template, 8 * a2 + 36 + r7, 8 * a3 + 36 + r7, 3);
+ gUnknown_20399EC->field_140[a1].field_8 = &gSprites[spriteId];
+ gSprites[spriteId].invisible = TRUE;
+ gUnknown_20399EC->field_140[a1].field_4 = a0;
+}
+
+static void sub_80C4750(void)
+{
+ u16 i, j, k;
+ u8 r7 = 0;
+ if (GetRegionMapPermission(MAPPERM_3))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 15; j++)
+ {
+ for (k = 0; k < 22; k++)
+ {
+ if (sub_80C35DC(GetSelectedMapSection(i, 0, j, k)) == 2)
+ {
+ sub_80C450C(i, r7, k, j, r7 + 10, 10);
+ r7++;
+ }
+ }
+ }
+ }
+ }
+}
+
+static void sub_80C47F0(void)
+{
+ u16 i, j, k;
+ u8 r6 = 0;
+ u8 mapsec;
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 15; j++)
+ {
+ for (k = 0; k < 22; k++)
+ {
+ mapsec = GetSelectedMapSection(i, 1, j, k);
+ if (mapsec == MAPSEC_NONE)
+ continue;
+ if (mapsec == MAPSEC_CERULEAN_CAVE && !FlagGet(FLAG_SYS_CAN_LINK_WITH_RS))
+ continue;
+ sub_80C4614(i, r6, k, j, r6 + 35, 10);
+ if (sub_80C3878(mapsec) != 2)
+ {
+ StartSpriteAnim(gUnknown_20399EC->field_140[r6].field_8, 1);
+ }
+ r6++;
+ }
+ }
+ }
+}
+
+static void sub_80C48BC(u8 a0, u8 a1, bool8 a2)
+{
+ u8 i;
+ if (a1 == 25)
+ {
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_2D0[i].field_4 == a0 || a0 == 0xFF)
+ gUnknown_20399EC->field_2D0[i].field_8->invisible = a2;
+ }
+ }
+ else
+ {
+ if (gUnknown_20399EC->field_2D0[a1].field_4 == a0)
+ gUnknown_20399EC->field_2D0[a1].field_8->invisible = a2;
+ }
+}
+
+static void sub_80C4960(u8 a0, u8 a1, bool8 a2)
+{
+ u8 i;
+ if (a1 == 25)
+ {
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_140[i].field_4 == a0 || a0 == 0xFF)
+ gUnknown_20399EC->field_140[i].field_8->invisible = a2;
+ }
+ }
+ else
+ {
+ if (gUnknown_20399EC->field_140[a1].field_4 != a0)
+ gUnknown_20399EC->field_140[a1].field_8->invisible = a2;
+ }
+}
+
+static void sub_80C4A04(void)
+{
+ u8 i;
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_2D0[i].field_8 != NULL)
+ {
+ DestroySprite(gUnknown_20399EC->field_2D0[i].field_8);
+ FreeSpriteTilesByTag(gUnknown_20399EC->field_2D0[i].field_C);
+ FreeSpritePaletteByTag(gUnknown_20399EC->field_2D0[i].field_E);
+ }
+ }
+ for (i = 0; i < 25; i++)
+ {
+ if (gUnknown_20399EC->field_140[i].field_8 != NULL)
+ {
+ DestroySprite(gUnknown_20399EC->field_140[i].field_8);
+ FreeSpriteTilesByTag(gUnknown_20399EC->field_140[i].field_C);
+ FreeSpritePaletteByTag(gUnknown_20399EC->field_140[i].field_E);
+ }
+ }
+ FREE_IF_NOT_NULL(gUnknown_20399EC);
+}
+
+static bool8 sub_80C4AAC(u8 a0)
+{
+ if (gUnknown_20399F0[a0] != NULL)
+ return FALSE;
+ gUnknown_20399F0[a0] = AllocZeroed(sizeof(struct UnkStruct_20399F0));
+ gUnknown_20399F0[a0]->bldcnt = GetGpuReg(REG_OFFSET_BLDCNT);
+ gUnknown_20399F0[a0]->bldy = GetGpuReg(REG_OFFSET_BLDY);
+ gUnknown_20399F0[a0]->bldalpha = GetGpuReg(REG_OFFSET_BLDALPHA);
+ gUnknown_20399F0[a0]->winin = GetGpuReg(REG_OFFSET_WININ);
+ gUnknown_20399F0[a0]->winout = GetGpuReg(REG_OFFSET_WINOUT);
+ gUnknown_20399F0[a0]->win0h = GetGpuReg(REG_OFFSET_WIN0H);
+ gUnknown_20399F0[a0]->win1h = GetGpuReg(REG_OFFSET_WIN1H);
+ gUnknown_20399F0[a0]->win0v = GetGpuReg(REG_OFFSET_WIN0V);
+ gUnknown_20399F0[a0]->win1v = GetGpuReg(REG_OFFSET_WIN1V);
+ return TRUE;
+}
+
+static bool8 sub_80C4B30(u8 a0)
+{
+ if (gUnknown_20399F0[a0] == NULL)
+ return FALSE;
+ SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_20399F0[a0]->bldcnt);
+ SetGpuReg(REG_OFFSET_BLDY, gUnknown_20399F0[a0]->bldy);
+ SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_20399F0[a0]->bldalpha);
+ SetGpuReg(REG_OFFSET_WININ, gUnknown_20399F0[a0]->winin);
+ SetGpuReg(REG_OFFSET_WINOUT, gUnknown_20399F0[a0]->winout);
+ SetGpuReg(REG_OFFSET_WIN0H, gUnknown_20399F0[a0]->win0h);
+ SetGpuReg(REG_OFFSET_WIN1H, gUnknown_20399F0[a0]->win1h);
+ SetGpuReg(REG_OFFSET_WIN0V, gUnknown_20399F0[a0]->win0v);
+ SetGpuReg(REG_OFFSET_WIN1V, gUnknown_20399F0[a0]->win1v);
+ FREE_IF_NOT_NULL(gUnknown_20399F0[a0]);
+ return TRUE;
+}
+
+static void sub_80C4BB8(void)
+{
+ u8 i;
+ for (i = 0; i < 3; i++)
+ {
+ FREE_IF_NOT_NULL(gUnknown_20399F0[i]);
+ }
+}
+
+static void sub_80C4BE4(void)
+{
+ struct GpuWindowParams data = {};
+ sub_80C4C2C(0, 0, 0);
+ sub_80C4C48(0);
+ SetGpuWindowDims(0, &data);
+ SetGpuWindowDims(1, &data);
+ sub_80C4C74(0, 0);
+ sub_80C4C9C(0, 1);
+ sub_80C4C9C(1, 1);
+}
+
+static void sub_80C4C2C(u8 a0, u16 a1, u16 a2)
+{
+ u16 regval = a0 << 8;
+ regval |= a1;
+ regval |= a2;
+ SetGpuReg(REG_OFFSET_BLDCNT, regval);
+}
+
+static void sub_80C4C48(u16 a0)
+{
+ SetGpuReg(REG_OFFSET_BLDY, a0);
+}
+
+static void sub_80C4C5C(u16 a0, u16 a1)
+{
+ u16 regval = a0 << 8;
+ regval |= a1;
+ SetGpuReg(REG_OFFSET_BLDALPHA, regval);
+}
+
+static void sub_80C4C74(u16 a0, u16 a1)
+{
+ u16 regval = a1 << 8;
+ regval |= a0;
+ SetGpuReg(REG_OFFSET_WININ, regval);
+}
+
+static void sub_80C4C88(u16 a0)
+{
+ SetGpuReg(REG_OFFSET_WINOUT, a0);
+}
+
+static void sub_80C4C9C(u8 a0, u8 a1)
+{
+ u16 data[2];
+ memcpy(data, sWinFlags, 4);
+ switch (a1)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | data[a0]);
+ break;
+ case 1:
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, data[a0]);
+ break;
+ }
+}
+
+static void SetGpuWindowDims(u8 winIdx, const struct GpuWindowParams *data)
+{
+ SetGpuReg(sWinRegs[winIdx][0], (data->v2 << 8) | data->v6);
+ SetGpuReg(sWinRegs[winIdx][1], (data->v0 << 8) | data->v4);
+}
+
+static void sub_80C4D30(void)
+{
+ sub_80C4BB8();
+ sub_80C4BE4();
+}
+
+static bool32 sub_80C4D40(u16 a0)
+{
+ if (gUnknown_20399D4 != NULL)
+ return FALSE;
+ if (a0 != MAPSEC_CELADON_CITY)
+ return FALSE;
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_1F))
+ return FALSE;
+ if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_1F)
+ && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_2F)
+ && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_3F)
+ && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_4F)
+ && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_5F)
+ && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ROOF)
+ && gSaveBlock1Ptr->location.mapNum != MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ELEVATOR))
+ return FALSE;
+ return TRUE;
+}
+
+u8 *GetMapName(u8 *dst0, u16 mapsec, u16 fill)
+{
+ u8 *dst;
+ u16 i;
+ u16 idx;;
+ if ((idx = mapsec - MAPSECS_KANTO) <= MAPSEC_SPECIAL_AREA - MAPSECS_KANTO)
+ {
+ if (sub_80C4D40(mapsec) == TRUE)
+ dst = StringCopy(dst0, gMapSecName_CeladonDept);
+ else
+ dst = StringCopy(dst0, sMapNames[idx]);
+ }
+ else
+ {
+ if (fill == 0)
+ fill = 18;
+ return StringFill(dst0, CHAR_SPACE, fill);
+ }
+ if (fill != 0)
+ {
+ for (i = dst - dst0; i < fill; i++)
+ *dst++ = CHAR_SPACE;
+ *dst = EOS;
+ }
+ return dst;
+}
+
+u8 *GetMapNameGeneric(u8 *dest, u16 mapsec)
+{
+ return GetMapName(dest, mapsec, 0);
+}
+
+u8 *sub_80C4E08(u8 *dest, u16 mapsec)
+{
+ return GetMapNameGeneric(dest, mapsec);
+}
+
+static void sub_80C4E18(const u8 *str)
+{
+ if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE)
+ FillWindowPixelBuffer(3, PIXEL_FILL(0));
+ else
+ FillWindowPixelBuffer(3, PIXEL_FILL(15));
+ AddTextPrinterParameterized3(3, 0, 0, 0, gUnknown_83F1CA8, 0, str);
+ CopyWindowToVram(3, 2);
+}
+
+static void sub_80C4E74(const u8 *str)
+{
+ if (gUnknown_20399D4->regionMapPermissions[MAPPERM_2] == TRUE)
+ FillWindowPixelBuffer(4, PIXEL_FILL(0));
+ else
+ FillWindowPixelBuffer(4, PIXEL_FILL(15));
+ AddTextPrinterParameterized3(4, 0, 0, 0, gUnknown_83F1CA8, 0, str);
+ CopyWindowToVram(4, 3);
+}
+
+static void sub_80C4ED0(bool8 mode)
+{
+ if (!mode)
+ {
+ PutWindowTilemap(3);
+ PutWindowTilemap(4);
+ }
+ else
+ {
+ ClearWindowTilemap(3);
+ ClearWindowTilemap(4);
+ }
+}
+
+void MCB2_FlyMap(void)
+{
+ sub_80C51E8();
+ sub_80BFEDC(2);
+}
+
+static void sub_80C4F08(u8 taskId)
+{
+ switch (gUnknown_20399FC->field_0)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sub_80C4398(GetWhichRegionMap(), taskId, sub_80C07E4());
+ sub_80C3008(0, 0);
+ sub_80C41D8(1, 1);
+ sub_80C3154(FALSE);
+ sub_80C4324(FALSE);
+ gUnknown_20399FC->field_0++;
+ break;
+ case 1:
+ if (GetRegionMapPermission(MAPPERM_2) == TRUE)
+ {
+ sub_80C2208(taskId, sub_80C07E4());
+ }
+ else
+ {
+ ShowBg(0);
+ ShowBg(3);
+ ShowBg(1);
+ sub_80C4E18(gText_RegionMap_DPadMove);
+ sub_80C48BC(GetWhichRegionMap(), 25, FALSE);
+ sub_80C4960(GetWhichRegionMap(), 25, FALSE);
+ }
+ gUnknown_20399FC->field_0++;
+ break;
+ case 2:
+ sub_80C4E74(gText_RegionMap_AButtonOK);
+ sub_80C4ED0(FALSE);
+ gUnknown_20399FC->field_0++;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ sub_80C0B18();
+ PutWindowTilemap(0);
+ sub_80C0BB0();
+ PutWindowTilemap(1);
+ gUnknown_20399FC->field_0++;
+ }
+ break;
+ case 4:
+ switch (sub_80C3400())
+ {
+ case 1:
+ case 2:
+ break;
+ case 6:
+ gUnknown_20399FC->field_0 = 6;
+ break;
+ case 3:
+ if (sub_80C3AC8(0) == 2)
+ PlaySE(SE_Z_PAGE);
+ else
+ sub_80C0450();
+ sub_80C3178();
+ sub_80C0B18();
+ sub_80C0BB0();
+ sub_80C0B9C();
+ if (GetMapCursorX() == 21 && GetMapCursorY() == 13)
+ {
+ PlaySE(SE_W255);
+ sub_80C4E74(gText_RegionMap_AButtonCancel);
+ }
+ else if (sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4)
+ {
+ sub_80C4E74(gText_RegionMap_AButtonOK);
+ }
+ else
+ {
+ sub_80C4E74(gText_RegionMap_Space);
+ }
+ break;
+ case 4:
+ if ((sub_80C3AC8(0) == 2 || sub_80C3AC8(0) == 4) && GetRegionMapPermission(MAPPERM_3) == TRUE)
+ {
+ switch (get_map_light_level_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
+ {
+ case 4:
+ case 8:
+ gUnknown_20399FC->field_2 = FALSE;
+ gUnknown_20399FC->field_0++;
+ break;
+ default:
+ PlaySE(SE_KAIFUKU);
+ gUnknown_20399FC->field_2 = TRUE;
+ gUnknown_20399FC->field_0++;
+ break;
+ }
+ }
+ break;
+ case 5:
+ sub_80C0E70(GetWhichRegionMap(), taskId, sub_80C07F8);
+ break;
+ }
+ break;
+ case 5:
+ if (GetRegionMapPermission(MAPPERM_2) == TRUE)
+ sub_80C2C1C(taskId);
+ gUnknown_20399FC->field_0++;
+ break;
+ case 6:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gUnknown_20399FC->field_0++;
+ break;
+ default:
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_20399FC->field_2 == TRUE)
+ sub_80C527C(sub_80C3520());
+ sub_80C5208(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_80C51E8(void)
+{
+ gUnknown_20399FC = AllocZeroed(sizeof(struct UnkStruct_20399FC));
+ gUnknown_20399FC->field_0 = 0;
+ gUnknown_20399FC->field_1 = 0;
+}
+
+static void sub_80C5208(u8 taskId)
+{
+ if (GetRegionMapPermission(MAPPERM_2) == TRUE)
+ sub_80C25BC();
+ sub_80C4A04();
+ sub_80C3188();
+ sub_80C4348();
+ sub_80C4D30();
+ sub_80C0898();
+ DestroyTask(taskId);
+ FreeAllWindowBuffers();
+ if (gUnknown_20399FC->field_2 == TRUE)
+ SetMainCallback2(CB2_ReturnToField);
+ else
+ SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap);
+ FREE_IF_NOT_NULL(gUnknown_20399FC);
+}
+
+static void sub_80C527C(u16 mapsec)
+{
+ u16 idx = mapsec - MAPSECS_KANTO;
+ if (sMapsecToSpawn[idx][2])
+ {
+ sub_805546C(sMapsecToSpawn[idx][2]);
+ sub_8124C1C(sMapsecToSpawn[idx]);
+ }
+ else
+ {
+ warp1_set_2(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1);
+ }
+ sub_80842C8();
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index fad30a6a8..4eaea9cef 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -27,14 +27,13 @@
#include "data.h"
#include "field_specials.h"
#include "constants/items.h"
-#include "script_pokemon_util_80A0058.h"
+#include "script_pokemon_util.h"
#include "pokemon_storage_system.h"
#include "party_menu.h"
#include "money.h"
#include "coins.h"
#include "battle_setup.h"
#include "shop.h"
-#include "script_pokemon_80F8.h"
#include "slot_machine.h"
#include "field_effect.h"
#include "fieldmap.h"
diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c
new file mode 100644
index 000000000..e12b809c6
--- /dev/null
+++ b/src/script_pokemon_util.c
@@ -0,0 +1,218 @@
+#include "global.h"
+#include "battle.h"
+#include "berry.h"
+#include "daycare.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "load_save.h"
+#include "malloc.h"
+#include "overworld.h"
+#include "party_menu.h"
+#include "pokedex.h"
+#include "script_pokemon_util.h"
+#include "constants/items.h"
+#include "constants/species.h"
+#include "constants/pokemon.h"
+
+static void CB2_ReturnFromChooseHalfParty(void);
+static void CB2_ReturnFromChooseBattleTowerParty(void);
+
+void HealPlayerParty(void)
+{
+ u8 i, j;
+ u8 ppBonuses;
+ u8 arg[4];
+
+ // restore HP.
+ for(i = 0; i < gPlayerPartyCount; i++)
+ {
+ u16 maxHP = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
+ arg[0] = maxHP;
+ arg[1] = maxHP >> 8;
+ SetMonData(&gPlayerParty[i], MON_DATA_HP, arg);
+ ppBonuses = GetMonData(&gPlayerParty[i], MON_DATA_PP_BONUSES);
+
+ // restore PP.
+ for(j = 0; j < MAX_MON_MOVES; j++)
+ {
+ arg[0] = CalculatePPWithBonus(GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j), ppBonuses, j);
+ SetMonData(&gPlayerParty[i], MON_DATA_PP1 + j, arg);
+ }
+
+ // since status is u32, the four 0 assignments here are probably for safety to prevent undefined data from reaching SetMonData.
+ arg[0] = 0;
+ arg[1] = 0;
+ arg[2] = 0;
+ arg[3] = 0;
+ SetMonData(&gPlayerParty[i], MON_DATA_STATUS, arg);
+ }
+}
+
+u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3)
+{
+ u16 nationalDexNum;
+ int sentToPc;
+ u8 heldItem[2];
+ struct Pokemon *mon = AllocZeroed(sizeof(struct Pokemon));
+
+ CreateMon(mon, species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
+ sentToPc = GiveMonToPlayer(mon);
+ nationalDexNum = SpeciesToNationalPokedexNum(species);
+
+ switch(sentToPc)
+ {
+ case MON_GIVEN_TO_PARTY:
+ case MON_GIVEN_TO_PC:
+ GetSetPokedexFlag(nationalDexNum, FLAG_SET_SEEN);
+ GetSetPokedexFlag(nationalDexNum, FLAG_SET_CAUGHT);
+ break;
+ }
+
+ Free(mon);
+ return sentToPc;
+}
+
+u8 ScriptGiveEgg(u16 species)
+{
+ struct Pokemon *mon = AllocZeroed(sizeof(struct Pokemon));
+ bool8 isEgg;
+ bool8 sentToPc;
+
+ CreateEgg(mon, species, TRUE);
+ isEgg = TRUE;
+ SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
+
+ sentToPc = GiveMonToPlayer(mon);
+ Free(mon);
+ return sentToPc;
+}
+
+void HasEnoughMonsForDoubleBattle(void)
+{
+ switch (GetMonsStateToDoubles())
+ {
+ case PLAYER_HAS_TWO_USABLE_MONS:
+ gSpecialVar_Result = PLAYER_HAS_TWO_USABLE_MONS;
+ break;
+ case PLAYER_HAS_ONE_MON:
+ gSpecialVar_Result = PLAYER_HAS_ONE_MON;
+ break;
+ case PLAYER_HAS_ONE_USABLE_MON:
+ gSpecialVar_Result = PLAYER_HAS_ONE_USABLE_MON;
+ break;
+ }
+}
+
+static bool8 CheckPartyMonHasHeldItem(u16 item)
+{
+ int i;
+
+ for(i = 0; i < PARTY_SIZE; i++)
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == item)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 GetNameOfEnigmaBerryInPlayerParty(void)
+{
+ bool8 hasItem = CheckPartyMonHasHeldItem(ITEM_ENIGMA_BERRY);
+ if (hasItem == TRUE)
+ GetBerryNameByBerryType(ItemIdToBerryType(ITEM_ENIGMA_BERRY), gStringVar1);
+
+ return hasItem;
+}
+
+void CreateScriptedWildMon(u16 species, u8 level, u16 item)
+{
+ u8 heldItem[2];
+
+ ZeroEnemyPartyMons();
+ CreateMon(&gEnemyParty[0], species, level, 32, 0, 0, OT_ID_PLAYER_ID, 0);
+ if (item)
+ {
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
+ }
+}
+
+void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot)
+{
+ if (monIndex > PARTY_SIZE)
+ monIndex = gPlayerPartyCount - 1;
+
+ SetMonMoveSlot(&gPlayerParty[monIndex], move, slot);
+}
+
+// Note: When control returns to the event script, gSpecialVar_Result will be
+// TRUE if the party selection was successful.
+void ChooseHalfPartyForBattle(void)
+{
+ gMain.savedCallback = CB2_ReturnFromChooseHalfParty;
+// VarSet(VAR_FRONTIER_FACILITY, FACILITY_MULTI_OR_EREADER);
+ InitChooseHalfPartyForBattle(0);
+}
+
+static void CB2_ReturnFromChooseHalfParty(void)
+{
+ switch (gSelectedOrderFromParty[0])
+ {
+ case 0:
+ gSpecialVar_Result = FALSE;
+ break;
+ default:
+ gSpecialVar_Result = TRUE;
+ break;
+ }
+
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void ChooseBattleTowerPlayerParty(void)
+{
+ gMain.savedCallback = CB2_ReturnFromChooseBattleTowerParty;
+ InitChooseHalfPartyForBattle(1);
+}
+
+static void CB2_ReturnFromChooseBattleTowerParty(void)
+{
+ switch (gSelectedOrderFromParty[0])
+ {
+ case 0:
+ LoadPlayerParty();
+ gSpecialVar_Result = FALSE;
+ break;
+ default:
+ ReducePlayerPartyToThree();
+ gSpecialVar_Result = TRUE;
+ break;
+ }
+
+ SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
+}
+
+void ReducePlayerPartyToThree(void)
+{
+ struct Pokemon * party = AllocZeroed(3 * sizeof(struct Pokemon));
+ int i;
+
+ // copy the selected pokemon according to the order.
+ for (i = 0; i < 3; i++)
+ if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop
+ party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal
+
+ CpuFill32(0, gPlayerParty, sizeof gPlayerParty);
+
+ // overwrite the first 3 with the order copied to.
+ for (i = 0; i < 3; i++)
+ gPlayerParty[i] = party[i];
+
+ CalculatePlayerPartyCount();
+ Free(party);
+}
diff --git a/src/text.c b/src/text.c
index 93a35a07d..a0da0399f 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1180,7 +1180,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
return width;
}
-u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
+u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7)
{
u8 shadowColor;
u8 *strLocal;
diff --git a/src/trade.c b/src/trade.c
index 2f48928ec..10ed51d69 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -2765,10 +2765,10 @@ static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet)
int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet)
{
- u8 r9 = a0.unk_01_0;
- u8 r4 = a0.unk_00_7;
- u8 r10 = a1.unk_01_0;
- u8 r0 = a1.unk_00_7;
+ u8 r9 = a0.hasNationalDex;
+ u8 r4 = a0.isChampion;
+ u8 r10 = a1.hasNationalDex;
+ u8 r0 = a1.isChampion;
u8 r1 = a1.unk_01_2;
u8 r2;
@@ -2845,7 +2845,7 @@ int GetUnionRoomTradeMessageId(struct UnkLinkRfuStruct_02022B14Substruct a0, str
int CanRegisterMonForTradingBoard(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3)
{
- u8 canTradeEggAndNational = a0.unk_01_0;
+ u8 canTradeEggAndNational = a0.hasNationalDex;
if (IsDeoxysOrMewUntradable(a2, a3))
{
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index 8478e2114..7d288865c 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -637,7 +637,6 @@ void sub_810C444(void)
}
}
-#ifdef NONMATCHING
bool8 sub_810C4EC(void)
{
if (CheckBagHasItem(ITEM_VS_SEEKER, 1) == TRUE)
@@ -648,18 +647,18 @@ bool8 sub_810C4EC(void)
if (FlagGet(FLAG_SYS_VS_SEEKER_CHARGING) == TRUE)
{
- u16 x;
- do {
- x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
- } while (0);
+ u8 x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
+ u32 r4 = 0xFF;
+
if (x < 100)
{
x++;
- gSaveBlock1Ptr->trainerRematchStepCounter = ((u16)(x << 8)) | (gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF);
+ #ifndef NONMATCHING // fool the compiler that r4 has been changed
+ asm("":"=r"(r4));
+ #endif
+ gSaveBlock1Ptr->trainerRematchStepCounter = (gSaveBlock1Ptr->trainerRematchStepCounter & 0xFF) | (x << 8);
}
- do {
- x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & 0xFF;
- } while (0);
+ x = (gSaveBlock1Ptr->trainerRematchStepCounter >> 8) & r4;
if (x == 100)
{
FlagClear(FLAG_SYS_VS_SEEKER_CHARGING);
@@ -671,80 +670,6 @@ bool8 sub_810C4EC(void)
return FALSE;
}
-#else
-NAKED
-bool8 sub_810C4EC(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmovs r0, 0xB5\n"
- "\tlsls r0, 1\n"
- "\tmovs r1, 0x1\n"
- "\tbl CheckBagHasItem\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x1\n"
- "\tbne _0810C516\n"
- "\tldr r0, _0810C568 @ =gSaveBlock1Ptr\n"
- "\tldr r0, [r0]\n"
- "\tmovs r2, 0xC7\n"
- "\tlsls r2, 3\n"
- "\tadds r1, r0, r2\n"
- "\tldrh r2, [r1]\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0x63\n"
- "\tbhi _0810C516\n"
- "\tadds r0, r2, 0x1\n"
- "\tstrh r0, [r1]\n"
- "_0810C516:\n"
- "\tldr r7, _0810C56C @ =0x00000801\n"
- "\tadds r0, r7, 0\n"
- "\tbl FlagGet\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x1\n"
- "\tbne _0810C570\n"
- "\tldr r6, _0810C568 @ =gSaveBlock1Ptr\n"
- "\tldr r0, [r6]\n"
- "\tmovs r5, 0xC7\n"
- "\tlsls r5, 3\n"
- "\tadds r3, r0, r5\n"
- "\tldrh r2, [r3]\n"
- "\tlsrs r1, r2, 8\n"
- "\tmovs r4, 0xFF\n"
- "\tcmp r1, 0x63\n"
- "\tbhi _0810C548\n"
- "\tadds r1, 0x1\n"
- "\tlsls r1, 24\n"
- "\tmovs r0, 0xFF\n"
- "\tands r0, r2\n"
- "\tlsrs r1, 16\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r3]\n"
- "_0810C548:\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tldrh r0, [r0]\n"
- "\tlsrs r0, 8\n"
- "\tands r0, r4\n"
- "\tcmp r0, 0x64\n"
- "\tbne _0810C570\n"
- "\tadds r0, r7, 0\n"
- "\tbl FlagClear\n"
- "\tbl sub_810C640\n"
- "\tbl sub_810D0D0\n"
- "\tmovs r0, 0x1\n"
- "\tb _0810C572\n"
- "\t.align 2, 0\n"
- "_0810C568: .4byte gSaveBlock1Ptr\n"
- "_0810C56C: .4byte 0x00000801\n"
- "_0810C570:\n"
- "\tmovs r0, 0\n"
- "_0810C572:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1");
-}
-#endif
void sub_810C578(void)
{
@@ -920,13 +845,17 @@ u8 CanUseVsSeeker(void)
}
}
-// Nonmatching due to register roulette
-#ifdef NONMATCHING
static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
{
u16 r8 = 0;
u8 sp0 = 0;
s32 vsSeekerIdx;
+ u8 *r2;
+#ifndef NONMATCHING
+ register u32 r3 asm("r3");
+ register s32 r0_ asm("r0");
+ asm("":::"r10", "r8", "r6", "r4");
+#endif
for (vsSeekerIdx = 0; sVsSeeker->trainerInfo[vsSeekerIdx].localId != 0xFF; vsSeekerIdx++)
{
@@ -936,6 +865,7 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
if (!HasTrainerBeenFought(r8))
{
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], gUnknown_8453F60);
+ sVsSeeker->trainerInfo[vsSeekerIdx].trainerIdx += 0;
sVsSeeker->trainerHasNotYetBeenFought = 1;
}
else
@@ -944,7 +874,15 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
if (r7 == 0)
{
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch);
+ #ifdef NONMATCHING
sVsSeeker->trainerDoesNotWantRematch = 1;
+ #else
+ r2 = (u8 *)sVsSeeker;
+ r3 = 0x431;
+ asm("":::"r1");
+ r2 = &r2[r3];
+ *(r2) |= 2;
+ #endif
}
else
{
@@ -957,7 +895,15 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
if (rval < 30)
{
StartTrainerObjectMovementScript(&sVsSeeker->trainerInfo[vsSeekerIdx], sMovementScript_TrainerNoRematch);
+ #ifdef NONMATCHING
sVsSeeker->trainerDoesNotWantRematch = 1;
+ #else
+ r2 = (u8 *)sVsSeeker;
+ r0_ = 0x431;
+ asm("":::"r1");
+ r2 = &r2[r0_];
+ *(r2) |= 2;
+ #endif
}
else
{
@@ -985,242 +931,6 @@ static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
return 1;
return 0;
}
-#else
-NAKED
-static u8 GetVsSeekerResponseInArea(const VsSeekerData * a0)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0x8\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tmovs r0, 0\n"
- "\tmov r8, r0\n"
- "\tmov r0, sp\n"
- "\tmov r1, r8\n"
- "\tstrb r1, [r0]\n"
- "\tmovs r2, 0\n"
- "\tmov r9, r2\n"
- "\tldr r4, _0810CA14 @ =sVsSeeker\n"
- "\tldr r0, [r4]\n"
- "\tldrb r0, [r0, 0x6]\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _0810C9D0\n"
- "\tb _0810CB2C\n"
- "_0810C9D0:\n"
- "\tadds r6, r4, 0\n"
- "\tmovs r3, 0x86\n"
- "\tlsls r3, 3\n"
- "\tmov r10, r3\n"
- "\tmovs r5, 0\n"
- "_0810C9DA:\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tbl IsTrainerVisibleOnScreen\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x1\n"
- "\tbeq _0810C9EC\n"
- "\tb _0810CB18\n"
- "_0810C9EC:\n"
- "\tldr r0, [r4]\n"
- "\tadds r0, r5\n"
- "\tldrh r0, [r0, 0x4]\n"
- "\tmov r8, r0\n"
- "\tbl HasTrainerBeenFought\n"
- "\tlsls r0, 24\n"
- "\tcmp r0, 0\n"
- "\tbne _0810CA20\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tldr r1, _0810CA18 @ =gUnknown_8453F60\n"
- "\tbl StartTrainerObjectMovementScript\n"
- "\tldr r2, [r6]\n"
- "\tldr r0, _0810CA1C @ =0x00000431\n"
- "\tadds r2, r0\n"
- "\tldrb r0, [r2]\n"
- "\tmovs r1, 0x1\n"
- "\tb _0810CB14\n"
- "\t.align 2, 0\n"
- "_0810CA14: .4byte sVsSeeker\n"
- "_0810CA18: .4byte gUnknown_8453F60\n"
- "_0810CA1C: .4byte 0x00000431\n"
- "_0810CA20:\n"
- "\tldr r0, [sp, 0x4]\n"
- "\tmov r1, r8\n"
- "\tmov r2, sp\n"
- "\tbl GetNextAvailableRematchTrainer\n"
- "\tlsls r0, 24\n"
- "\tlsrs r7, r0, 24\n"
- "\tcmp r7, 0\n"
- "\tbne _0810CA50\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tldr r1, _0810CA48 @ =sMovementScript_TrainerNoRematch\n"
- "\tbl StartTrainerObjectMovementScript\n"
- "\tldr r2, [r6]\n"
- "\tldr r3, _0810CA4C @ =0x00000431\n"
- "\tadds r2, r3\n"
- "\tldrb r0, [r2]\n"
- "\tmovs r1, 0x2\n"
- "\tb _0810CB14\n"
- "\t.align 2, 0\n"
- "_0810CA48: .4byte sMovementScript_TrainerNoRematch\n"
- "_0810CA4C: .4byte 0x00000431\n"
- "_0810CA50:\n"
- "\tbl Random\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmovs r1, 0x64\n"
- "\tbl __umodsi3\n"
- "\tlsls r0, 16\n"
- "\tlsrs r4, r0, 16\n"
- "\tmov r0, r9\n"
- "\tmov r1, r8\n"
- "\tbl GetCurVsSeekerResponse\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x2\n"
- "\tbne _0810CA76\n"
- "\tmovs r4, 0x64\n"
- "\tb _0810CA7C\n"
- "_0810CA76:\n"
- "\tcmp r0, 0x1\n"
- "\tbne _0810CA7C\n"
- "\tmovs r4, 0\n"
- "_0810CA7C:\n"
- "\tcmp r4, 0x1D\n"
- "\tbhi _0810CAA0\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tldr r1, _0810CA98 @ =sMovementScript_TrainerNoRematch\n"
- "\tbl StartTrainerObjectMovementScript\n"
- "\tldr r2, [r6]\n"
- "\tldr r0, _0810CA9C @ =0x00000431\n"
- "\tadds r2, r0\n"
- "\tldrb r0, [r2]\n"
- "\tmovs r1, 0x2\n"
- "\tb _0810CB14\n"
- "\t.align 2, 0\n"
- "_0810CA98: .4byte sMovementScript_TrainerNoRematch\n"
- "_0810CA9C: .4byte 0x00000431\n"
- "_0810CAA0:\n"
- "\tldr r0, _0810CB54 @ =gSaveBlock1Ptr\n"
- "\tldr r1, [r0]\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tldr r2, _0810CB58 @ =0x0000063a\n"
- "\tadds r1, r2\n"
- "\tldrb r0, [r0, 0x6]\n"
- "\tadds r1, r0\n"
- "\tstrb r7, [r1]\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tldrb r1, [r0, 0x7]\n"
- "\tlsls r0, r1, 3\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 2\n"
- "\tldr r1, _0810CB5C @ =gObjectEvents\n"
- "\tadds r0, r1\n"
- "\tbl npc_coords_shift_still\n"
- "\tldr r0, [r6]\n"
- "\tadds r0, r5\n"
- "\tldr r1, _0810CB60 @ =sMovementScript_TrainerRematch\n"
- "\tbl StartTrainerObjectMovementScript\n"
- "\tldr r2, [r6]\n"
- "\tmov r3, r10\n"
- "\tadds r0, r2, r3\n"
- "\tldrb r1, [r0]\n"
- "\tlsls r1, 1\n"
- "\tmovs r3, 0x80\n"
- "\tlsls r3, 3\n"
- "\tadds r0, r2, r3\n"
- "\tadds r0, r1\n"
- "\tmov r1, r8\n"
- "\tstrh r1, [r0]\n"
- "\tadds r2, r5\n"
- "\tldrb r0, [r2, 0xC]\n"
- "\tbl GetRunningBehaviorFromGraphicsId\n"
- "\tldr r1, [r6]\n"
- "\tmov r3, r10\n"
- "\tadds r2, r1, r3\n"
- "\tmovs r3, 0x84\n"
- "\tlsls r3, 3\n"
- "\tadds r1, r3\n"
- "\tldrb r2, [r2]\n"
- "\tadds r1, r2\n"
- "\tstrb r0, [r1]\n"
- "\tldr r1, [r6]\n"
- "\tadd r1, r10\n"
- "\tldrb r0, [r1]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r1]\n"
- "\tldr r2, [r6]\n"
- "\tldr r0, _0810CB64 @ =0x00000431\n"
- "\tadds r2, r0\n"
- "\tldrb r0, [r2]\n"
- "\tmovs r1, 0x4\n"
- "_0810CB14:\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r2]\n"
- "_0810CB18:\n"
- "\tadds r5, 0x10\n"
- "\tmovs r1, 0x1\n"
- "\tadd r9, r1\n"
- "\tldr r4, _0810CB68 @ =sVsSeeker\n"
- "\tldr r0, [r4]\n"
- "\tadds r0, r5\n"
- "\tldrb r0, [r0, 0x6]\n"
- "\tcmp r0, 0xFF\n"
- "\tbeq _0810CB2C\n"
- "\tb _0810C9DA\n"
- "_0810CB2C:\n"
- "\tldr r2, _0810CB68 @ =sVsSeeker\n"
- "\tldr r0, [r2]\n"
- "\tldr r3, _0810CB64 @ =0x00000431\n"
- "\tadds r0, r3\n"
- "\tldrb r1, [r0]\n"
- "\tmovs r0, 0x4\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbeq _0810CB70\n"
- "\tmovs r0, 0x15\n"
- "\tbl PlaySE\n"
- "\tldr r0, _0810CB6C @ =0x00000801\n"
- "\tbl FlagSet\n"
- "\tbl sub_810C640\n"
- "\tmovs r0, 0x2\n"
- "\tb _0810CB7E\n"
- "\t.align 2, 0\n"
- "_0810CB54: .4byte gSaveBlock1Ptr\n"
- "_0810CB58: .4byte 0x0000063a\n"
- "_0810CB5C: .4byte gObjectEvents\n"
- "_0810CB60: .4byte sMovementScript_TrainerRematch\n"
- "_0810CB64: .4byte 0x00000431\n"
- "_0810CB68: .4byte sVsSeeker\n"
- "_0810CB6C: .4byte 0x00000801\n"
- "_0810CB70:\n"
- "\tmovs r0, 0x1\n"
- "\tands r0, r1\n"
- "\tcmp r0, 0\n"
- "\tbne _0810CB7C\n"
- "\tmovs r0, 0\n"
- "\tb _0810CB7E\n"
- "_0810CB7C:\n"
- "\tmovs r0, 0x1\n"
- "_0810CB7E:\n"
- "\tadd sp, 0x8\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1");
-}
-#endif
void sub_810CB90(void)
{
diff --git a/sym_bss.txt b/sym_bss.txt
index 06502497e..08f390b01 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -74,7 +74,7 @@ gUnknown_3000FE8: @ 3000FE8
gUnknown_3001188: @ 3001188
.space 0x8
-gUnknown_3001190: @ 3001190
+gRfuAPIBuffer: @ 3001190
.space 0xE68
gUnknown_3001FF8: @ 3001FF8
diff --git a/sym_common.txt b/sym_common.txt
index 17f0cd306..753ce9ebd 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -61,37 +61,8 @@ gUnknown_3005078: @ 3005078
@ what is this?
.space 0x20
-
-gUnknown_3005330: @ 3005330
- .space 0x4
-
-gUnknown_3005334: @ 3005334
- .space 0x4
-
-gUnknown_3005338: @ 3005338
- .space 0x4
-
-gUnknown_300533C: @ 300533C
- .space 0x4
-
-gUnknown_3005340: @ 3005340
- .space 0x4
-
-gUnknown_3005344: @ 3005344
- .space 0x4
-
-gUnknown_3005348: @ 3005348
- .space 0x4
-
-gUnknown_300534C: @ 300534C
- .space 0x4
-
-gUnknown_3005350: @ 3005350
- .space 0x4
-
-gUnknown_3005354: @ 3005354
- .space 0xC
-
+ .align 2
+ .include "image_processing_effects.o"
.align 2
.include "field_specials.o"
.align 2
@@ -188,24 +159,9 @@ gUnknown_3005E94: @ 3005E94
.include "berry_fix_program.o"
.include "m4a.o"
.include "agb_flash.o"
-
-gRfuState: @ 3007438
- .space 0x8
-
-gUnknown_3007440: @ 3007440
- .space 0x10
-
-gUnknown_3007450: @ 3007450
- .space 0x10
-
-gUnknown_3007460: @ 3007460
- .space 0x4
-
-gUnknown_3007464: @ 3007464
- .space 0x4
-
-gUnknown_3007468: @ 3007468
- .space 0x8
-
-gUnknown_3007470: @ 3007470
- .space 0xC
+ .align 2
+ .include "librfu_stwi.o"
+ .align 4
+ .include "librfu_rfu.o"
+ .align 4
+ .include "librfu_sio32id.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 963159658..9e5e91782 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -267,35 +267,10 @@ gUnknown_203998C: @ 203998C
.include "src/mail.o"
.align 2
.include "src/menu_helpers.o"
-
.align 2
-gUnknown_20399D4: @ 20399D4
- .space 0x4
-
-gUnknown_20399D8: @ 20399D8
- .space 0x4
-
-gUnknown_20399DC: @ 20399DC
- .space 0x4
-
-gUnknown_20399E0: @ 20399E0
- .space 0x4
-
-gUnknown_20399E4: @ 20399E4
- .space 0x4
-
-gUnknown_20399E8: @ 20399E8
- .space 0x4
-
-gUnknown_20399EC: @ 20399EC
- .space 0x4
-
-gUnknown_20399F0: @ 20399F0
- .space 0xC
-
-gUnknown_20399FC: @ 20399FC
- .space 0x4
+ .include "src/region_map.o"
+ .align 2
gAIScriptPtr: @ 2039A00
.space 0x4