summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-07-20 22:42:32 -0500
committerGitHub <noreply@github.com>2017-07-20 22:42:32 -0500
commit959f78fe146e75f9ce02b318eb6a8d97652a9996 (patch)
treec3100c9cb3ac199ced8b28203878fac7c2a76994
parentb23014cfa0573e53a104f433cf2d75f350340d60 (diff)
parent7d960d219fae9d0a14ef1974c11231f8de55b89c (diff)
Merge branch 'master' into master
-rw-r--r--asm/battle_records.s868
-rw-r--r--asm/cable_club.s2
-rw-r--r--asm/field_screen_effect.s789
-rw-r--r--asm/pokedex_area_screen.s12
-rw-r--r--asm/pokemon_menu.s4
-rw-r--r--asm/pokenav.s10
-rw-r--r--asm/record_mixing.s543
-rw-r--r--asm/region_map.s3969
-rw-r--r--asm/unknown_task.s645
-rw-r--r--data-de/region_map_locations.inc327
-rw-r--r--data/record_mixing.s68
-rw-r--r--data/region_map.s259
-rw-r--r--data/region_map_locations.inc327
-rw-r--r--data/region_map_sections.inc16
-rw-r--r--data/rom_8080874.s18
-rw-r--r--data/trainer_card.s62
-rw-r--r--graphics/pokenav/fly_target_icons.pal (renamed from graphics/pokenav/map_misc.pal)0
-rw-r--r--graphics/pokenav/fly_target_icons.png (renamed from graphics/pokenav/map_misc.png)bin291 -> 291 bytes
-rw-r--r--graphics/pokenav/region_map.pal226
-rw-r--r--include/battle_records.h5
-rw-r--r--include/field_effect.h2
-rw-r--r--include/flags.h24
-rw-r--r--include/global.fieldmap.h2
-rw-r--r--include/global.h23
-rw-r--r--include/graphics.h11
-rw-r--r--include/menu.h4
-rw-r--r--include/pokemon_menu.h1
-rw-r--r--include/record_mixing.h10
-rw-r--r--include/region_map.h73
-rw-r--r--include/rom4.h6
-rw-r--r--include/save.h2
-rw-r--r--include/secret_base.h1
-rw-r--r--include/trainer_card.h16
-rw-r--r--include/vars.h1
-rw-r--r--ld_script.txt17
-rw-r--r--src/battle_records.c316
-rw-r--r--src/data/region_map_layout.h42
-rw-r--r--src/data/region_map_names_de.h79
-rw-r--r--src/data/region_map_names_en.h79
-rw-r--r--src/field_region_map.c13
-rw-r--r--src/field_screen_effect.c339
-rw-r--r--src/field_specials.c2
-rw-r--r--src/map_name_popup.c2
-rw-r--r--src/menu.c4
-rw-r--r--src/pokemon_1.c41
-rw-r--r--src/record_mixing.c882
-rw-r--r--src/region_map.c1847
-rw-r--r--src/rom4.c4
-rw-r--r--src/save.c6
-rw-r--r--src/save_menu_util.c2
-rw-r--r--src/secret_base.c2
-rw-r--r--src/trainer_card.c903
-rw-r--r--src/tv.c18
-rw-r--r--src/unknown_debug_menu.c4
-rw-r--r--src/unknown_task.c255
-rw-r--r--sym_ewram.txt2
56 files changed, 4201 insertions, 8984 deletions
diff --git a/asm/battle_records.s b/asm/battle_records.s
deleted file mode 100644
index cfe822acc..000000000
--- a/asm/battle_records.s
+++ /dev/null
@@ -1,868 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810FF78
-sub_810FF78: @ 810FF78
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r2, _0810FFA4 @ =0x01000008
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810FFA4: .4byte 0x01000008
- thumb_func_end sub_810FF78
-
- thumb_func_start InitLinkBattleRecords_
-InitLinkBattleRecords_: @ 810FFA8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0x4
-_0810FFAE:
- adds r0, r4, 0
- bl sub_810FF78
- adds r4, 0x10
- subs r5, 0x1
- cmp r5, 0
- bge _0810FFAE
- movs r0, 0x17
- movs r1, 0
- bl SetGameStat
- movs r0, 0x18
- movs r1, 0
- bl SetGameStat
- movs r0, 0x19
- movs r1, 0
- bl SetGameStat
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end InitLinkBattleRecords_
-
- thumb_func_start sub_810FFDC
-sub_810FFDC: @ 810FFDC
- adds r1, r0, 0
- ldrh r0, [r1, 0xA]
- ldrh r2, [r1, 0xC]
- adds r0, r2
- ldrh r1, [r1, 0xE]
- adds r0, r1
- bx lr
- thumb_func_end sub_810FFDC
-
- thumb_func_start sub_810FFEC
-sub_810FFEC: @ 810FFEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- lsls r2, 16
- lsrs r7, r2, 16
- movs r5, 0
- ldr r6, _08110024 @ =gStringVar1
- adds r4, r0, 0
-_0810FFFE:
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x7
- bl memcpy
- movs r0, 0xFF
- strb r0, [r6, 0x7]
- adds r0, r6, 0
- mov r1, r8
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _08110028
- ldrh r0, [r4, 0x8]
- cmp r0, r7
- bne _08110028
- adds r0, r5, 0
- b _08110032
- .align 2, 0
-_08110024: .4byte gStringVar1
-_08110028:
- adds r4, 0x10
- adds r5, 0x1
- cmp r5, 0x4
- ble _0810FFFE
- movs r0, 0x5
-_08110032:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810FFEC
-
- thumb_func_start sub_811003C
-sub_811003C: @ 811003C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r8, r0
- movs r0, 0x4
-_0811004A:
- subs r2, r0, 0x1
- mov r9, r2
- cmp r2, 0
- blt _081100A4
- lsls r0, 4
- mov r1, r8
- adds r6, r1, r0
- lsls r0, r2, 4
- adds r5, r0, r1
-_0811005C:
- adds r0, r6, 0
- str r2, [sp, 0x10]
- bl sub_810FFDC
- adds r4, r0, 0
- adds r0, r5, 0
- bl sub_810FFDC
- ldr r2, [sp, 0x10]
- cmp r4, r0
- ble _08110096
- mov r1, sp
- adds r0, r6, 0
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
- adds r1, r6, 0
- adds r0, r5, 0
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
- adds r1, r5, 0
- mov r0, sp
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
-_08110096:
- subs r5, 0x10
- movs r0, 0x1
- negs r0, r0
- add r9, r0
- mov r1, r9
- cmp r1, 0
- bge _0811005C
-_081100A4:
- adds r0, r2, 0
- cmp r0, 0
- bgt _0811004A
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811003C
-
- thumb_func_start sub_81100B8
-sub_81100B8: @ 81100B8
- push {lr}
- adds r2, r0, 0
- cmp r1, 0x2
- beq _081100E8
- cmp r1, 0x2
- bgt _081100CA
- cmp r1, 0x1
- beq _081100D0
- b _08110112
-_081100CA:
- cmp r1, 0x3
- beq _08110100
- b _08110112
-_081100D0:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081100E4 @ =0x0000270f
- cmp r0, r1
- bls _08110112
- strh r1, [r2, 0xA]
- b _08110112
- .align 2, 0
-_081100E4: .4byte 0x0000270f
-_081100E8:
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081100FC @ =0x0000270f
- cmp r0, r1
- bls _08110112
- strh r1, [r2, 0xC]
- b _08110112
- .align 2, 0
-_081100FC: .4byte 0x0000270f
-_08110100:
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08110118 @ =0x0000270f
- cmp r0, r1
- bls _08110112
- strh r1, [r2, 0xE]
-_08110112:
- pop {r0}
- bx r0
- .align 2, 0
-_08110118: .4byte 0x0000270f
- thumb_func_end sub_81100B8
-
- thumb_func_start sub_811011C
-sub_811011C: @ 811011C
- push {r4,lr}
- cmp r0, 0x2
- beq _08110136
- cmp r0, 0x2
- bgt _0811012C
- cmp r0, 0x1
- beq _08110132
- b _0811014E
-_0811012C:
- cmp r0, 0x3
- beq _0811013A
- b _0811014E
-_08110132:
- movs r4, 0x17
- b _0811013C
-_08110136:
- movs r4, 0x18
- b _0811013C
-_0811013A:
- movs r4, 0x19
-_0811013C:
- adds r0, r4, 0
- bl GetGameStat
- ldr r1, _08110154 @ =0x0000270e
- cmp r0, r1
- bhi _0811014E
- adds r0, r4, 0
- bl IncrementGameStat
-_0811014E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110154: .4byte 0x0000270e
- thumb_func_end sub_811011C
-
- thumb_func_start sub_8110158
-sub_8110158: @ 8110158
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r0, 0
- adds r7, r1, 0
- mov r10, r3
- ldr r0, [sp, 0x20]
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r10
- bl sub_811011C
- adds r0, r5, 0
- bl sub_811003C
- adds r0, r5, 0
- adds r1, r7, 0
- mov r2, r9
- bl sub_810FFEC
- adds r6, r0, 0
- cmp r6, 0x5
- bne _081101CC
- movs r6, 0x4
- adds r4, r5, 0
- adds r4, 0x40
- adds r0, r4, 0
- bl sub_810FF78
- mov r0, r8
- cmp r0, 0x1
- bne _081101BA
- movs r0, 0xFC
- strb r0, [r4]
- movs r0, 0x15
- strb r0, [r4, 0x1]
- adds r0, r5, 0
- adds r0, 0x42
- adds r1, r7, 0
- movs r2, 0x5
- bl StringCopyN
- b _081101C4
-_081101BA:
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x7
- bl StringCopyN
-_081101C4:
- lsls r0, r6, 4
- adds r0, r5, r0
- mov r1, r9
- strh r1, [r0, 0x8]
-_081101CC:
- lsls r0, r6, 4
- adds r0, r5, r0
- mov r1, r10
- bl sub_81100B8
- adds r0, r5, 0
- bl sub_811003C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8110158
-
- thumb_func_start InitLinkBattleRecords
-InitLinkBattleRecords: @ 81101EC
- push {lr}
- ldr r0, _081101F8 @ =gSaveBlock1 + 0x30B8
- bl InitLinkBattleRecords_
- pop {r0}
- bx r0
- .align 2, 0
-_081101F8: .4byte gSaveBlock1 + 0x30B8
- thumb_func_end InitLinkBattleRecords
-
- thumb_func_start sub_81101FC
-sub_81101FC: @ 81101FC
- push {lr}
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 3
- ldr r0, _08110220 @ =gTrainerCards + 0x14
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08110224 @ =0x0000270f
- cmp r0, r2
- bls _0811021A
- strh r2, [r1]
-_0811021A:
- pop {r0}
- bx r0
- .align 2, 0
-_08110220: .4byte gTrainerCards + 0x14
-_08110224: .4byte 0x0000270f
- thumb_func_end sub_81101FC
-
- thumb_func_start sub_8110228
-sub_8110228: @ 8110228
- push {lr}
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 3
- ldr r0, _0811024C @ =gTrainerCards + 0x16
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08110250 @ =0x0000270f
- cmp r0, r2
- bls _08110246
- strh r2, [r1]
-_08110246:
- pop {r0}
- bx r0
- .align 2, 0
-_0811024C: .4byte gTrainerCards + 0x16
-_08110250: .4byte 0x0000270f
- thumb_func_end sub_8110228
-
- thumb_func_start sub_8110254
-sub_8110254: @ 8110254
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08110268 @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0811026C
- cmp r0, 0x2
- beq _0811027A
- b _08110288
- .align 2, 0
-_08110268: .4byte gBattleOutcome
-_0811026C:
- eors r0, r4
- bl sub_81101FC
- adds r0, r4, 0
- bl sub_8110228
- b _08110288
-_0811027A:
- movs r0, 0x1
- eors r0, r4
- bl sub_8110228
- adds r0, r4, 0
- bl sub_81101FC
-_08110288:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8110254
-
- thumb_func_start sub_8110290
-sub_8110290: @ 8110290
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl sub_8110254
- ldr r0, _081102D4 @ =gSaveBlock1 + 0x30B8
- lsls r2, r4, 3
- subs r2, r4
- lsls r2, 3
- ldr r3, _081102D8 @ =gTrainerCards + 0x30
- adds r1, r2, r3
- subs r3, 0x30
- adds r2, r3
- ldrh r2, [r2, 0xE]
- ldr r3, _081102DC @ =gBattleOutcome
- ldrb r3, [r3]
- ldr r6, _081102E0 @ =gLinkPlayers
- ldr r5, _081102E4 @ =gLinkPlayerMapObjects
- lsls r4, 2
- adds r4, r5
- ldrb r5, [r4, 0x1]
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- adds r4, r6
- ldrb r4, [r4, 0x1A]
- str r4, [sp]
- bl sub_8110158
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081102D4: .4byte gSaveBlock1 + 0x30B8
-_081102D8: .4byte gTrainerCards + 0x30
-_081102DC: .4byte gBattleOutcome
-_081102E0: .4byte gLinkPlayers
-_081102E4: .4byte gLinkPlayerMapObjects
- thumb_func_end sub_8110290
-
- thumb_func_start PrintLinkBattleWinsLossesDraws
-PrintLinkBattleWinsLossesDraws: @ 81102E8
- push {r4,lr}
- ldr r4, _08110338 @ =gStringVar1
- movs r0, 0x17
- bl GetGameStat
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN_DigitWidth6
- ldr r4, _0811033C @ =gStringVar2
- movs r0, 0x18
- bl GetGameStat
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN_DigitWidth6
- ldr r4, _08110340 @ =gStringVar3
- movs r0, 0x19
- bl GetGameStat
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN_DigitWidth6
- ldr r0, _08110344 @ =gOtherText_WinRecord
- movs r1, 0x3
- movs r2, 0x3
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110338: .4byte gStringVar1
-_0811033C: .4byte gStringVar2
-_08110340: .4byte gStringVar3
-_08110344: .4byte gOtherText_WinRecord
- thumb_func_end PrintLinkBattleWinsLossesDraws
-
- thumb_func_start PrintLinkBattleRecord
-PrintLinkBattleRecord: @ 8110348
- push {r4-r7,lr}
- sub sp, 0x10
- adds r7, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- ldrh r0, [r7, 0xA]
- cmp r0, 0
- bne _081103C0
- ldr r0, [r7, 0xC]
- cmp r0, 0
- bne _081103C0
- mov r0, sp
- movs r2, 0xFC
- strb r2, [r0]
- mov r1, sp
- movs r0, 0x14
- strb r0, [r1, 0x1]
- movs r0, 0x6
- strb r0, [r1, 0x2]
- mov r0, sp
- strb r2, [r0, 0x3]
- movs r0, 0x11
- strb r0, [r1, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0x5]
- mov r4, sp
- adds r4, 0x6
- ldr r1, _081103B8 @ =gOtherText_SevenDashes
- adds r0, r4, 0
- bl StringCopy
- mov r0, sp
- movs r1, 0x3
- adds r2, r6, 0
- bl MenuPrint
- ldr r1, _081103BC @ =gOtherText_FourDashes
- adds r0, r4, 0
- bl StringCopy
- mov r0, sp
- movs r1, 0xB
- adds r2, r6, 0
- bl MenuPrint
- mov r0, sp
- movs r1, 0x11
- adds r2, r6, 0
- bl MenuPrint
- mov r0, sp
- movs r1, 0x17
- adds r2, r6, 0
- bl MenuPrint
- b _0811042E
- .align 2, 0
-_081103B8: .4byte gOtherText_SevenDashes
-_081103BC: .4byte gOtherText_FourDashes
-_081103C0:
- ldr r4, _08110438 @ =gStringVar1
- adds r0, r4, 0
- movs r1, 0x8
- bl StringFillWithTerminator
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x7
- bl StringCopyN
- adds r0, r4, 0
- movs r1, 0x3
- adds r2, r6, 0
- bl MenuPrint
- movs r0, 0xFC
- strb r0, [r4]
- movs r0, 0x14
- strb r0, [r4, 0x1]
- movs r0, 0x6
- strb r0, [r4, 0x2]
- adds r5, r4, 0x3
- ldrh r1, [r7, 0xA]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0xB
- adds r2, r6, 0
- bl MenuPrint
- ldrh r1, [r7, 0xC]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0x11
- adds r2, r6, 0
- bl MenuPrint
- ldrh r1, [r7, 0xE]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0x17
- adds r2, r6, 0
- bl MenuPrint
-_0811042E:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08110438: .4byte gStringVar1
- thumb_func_end PrintLinkBattleRecord
-
-.section .text_8110494
-
- thumb_func_start sub_8110494
-sub_8110494: @ 8110494
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081104B4 @ =gSaveBlock2 + 0xA8
- ldr r2, _081104B8 @ =0x000004ae
- adds r1, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x6
- bhi _081104E0
- lsls r0, 2
- ldr r1, _081104BC @ =_081104C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081104B4: .4byte gSaveBlock2 + 0xA8
-_081104B8: .4byte 0x000004ae
-_081104BC: .4byte _081104C0
- .align 2, 0
-_081104C0:
- .4byte _081104E0
- .4byte _081104E0
- .4byte _081104DC
- .4byte _081104DC
- .4byte _081104E0
- .4byte _081104E0
- .4byte _081104DC
-_081104DC:
- movs r0, 0x1
- b _081104E2
-_081104E0:
- movs r0, 0
-_081104E2:
- pop {r1}
- bx r1
- thumb_func_end sub_8110494
-
- thumb_func_start sub_81104E8
-sub_81104E8: @ 81104E8
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r2, 24
- adds r5, r2, 0
- lsls r3, 24
- lsrs r3, 24
- adds r6, r3, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint
- ldr r0, _0811052C @ =0x0000270f
- cmp r4, r0
- bls _0811050A
- adds r4, r0, 0
-_0811050A:
- ldr r0, _08110530 @ =gStringVar1
- adds r1, r4, 0
- movs r2, 0x18
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _08110534 @ =gOtherText_WinStreak
- adds r1, r5, 0x7
- lsls r1, 24
- lsrs r1, 24
- adds r2, r6, 0
- bl MenuPrint
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811052C: .4byte 0x0000270f
-_08110530: .4byte gStringVar1
-_08110534: .4byte gOtherText_WinStreak
- thumb_func_end sub_81104E8
-
- thumb_func_start sub_8110538
-sub_8110538: @ 8110538
- push {r4,lr}
- adds r4, r1, 0
- adds r3, r2, 0
- lsls r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r1, _08110564 @ =gSaveBlock2 + 0xA8
- lsrs r0, 23
- movs r2, 0x97
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _08110568 @ =gOtherText_Record
- adds r2, r4, 0
- bl sub_81104E8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110564: .4byte gSaveBlock2 + 0xA8
-_08110568: .4byte gOtherText_Record
- thumb_func_end sub_8110538
-
- thumb_func_start sub_811056C
-sub_811056C: @ 811056C
- push {lr}
- lsls r0, 24
- ldr r1, _08110588 @ =gSaveBlock2
- lsrs r0, 23
- ldr r2, _0811058C @ =0x00000574
- adds r1, r2
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _08110590 @ =0x0000270f
- cmp r0, r1
- bls _08110584
- adds r0, r1, 0
-_08110584:
- pop {r1}
- bx r1
- .align 2, 0
-_08110588: .4byte gSaveBlock2
-_0811058C: .4byte 0x00000574
-_08110590: .4byte 0x0000270f
- thumb_func_end sub_811056C
-
- thumb_func_start sub_8110594
-sub_8110594: @ 8110594
- push {r4-r7,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- adds r0, r4, 0
- bl sub_811056C
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl sub_8110494
- cmp r0, 0x1
- bne _081105CC
- ldr r0, _081105C8 @ =gOtherText_Current
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_81104E8
- b _081105D8
- .align 2, 0
-_081105C8: .4byte gOtherText_Current
-_081105CC:
- ldr r0, _081105E0 @ =gOtherText_Prev
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_81104E8
-_081105D8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081105E0: .4byte gOtherText_Prev
- thumb_func_end sub_8110594
-
- thumb_func_start ShowBattleTowerRecords
-ShowBattleTowerRecords: @ 81105E4
- push {r4,lr}
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0x1B
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _08110658 @ =gOtherText_BattleTowerResults
- movs r1, 0x3
- movs r2, 0x2
- movs r3, 0xC8
- bl sub_8072BD8
- ldr r0, _0811065C @ =gOtherText_Lv50
- movs r1, 0x5
- movs r2, 0x6
- bl MenuPrint
- ldr r0, _08110660 @ =gOtherText_Lv100
- movs r1, 0x5
- movs r2, 0xC
- bl MenuPrint
- movs r4, 0x5
-_08110614:
- lsls r1, r4, 24
- lsrs r1, 24
- movs r0, 0xAE
- movs r2, 0xA
- bl sub_8071F60
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x19
- bls _08110614
- movs r0, 0
- movs r1, 0xA
- movs r2, 0x6
- bl sub_8110594
- movs r0, 0
- movs r1, 0xA
- movs r2, 0x8
- bl sub_8110538
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0xC
- bl sub_8110594
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0xE
- bl sub_8110538
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110658: .4byte gOtherText_BattleTowerResults
-_0811065C: .4byte gOtherText_Lv50
-_08110660: .4byte gOtherText_Lv100
- thumb_func_end ShowBattleTowerRecords
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 7e5d19c24..68804ca21 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -1215,7 +1215,7 @@ sub_8083958: @ 8083958
ldrb r1, [r0]
movs r0, 0x1
eors r0, r1
- bl sub_8110290
+ bl UpdateLinkBattleRecords
_0808397E:
ldr r0, _08083998 @ =gMain
ldr r1, _0808399C @ =sub_805465C
diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s
deleted file mode 100644
index 4fbfae1a2..000000000
--- a/asm/field_screen_effect.s
+++ /dev/null
@@ -1,789 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_808136C
-sub_808136C: @ 808136C
- push {lr}
- cmp r1, 0xA0
- bhi _08081394
- cmp r2, 0
- bge _08081378
- movs r2, 0
-_08081378:
- cmp r2, 0xFF
- ble _0808137E
- movs r2, 0xFF
-_0808137E:
- cmp r3, 0
- bge _08081384
- movs r3, 0
-_08081384:
- cmp r3, 0xFF
- ble _0808138A
- movs r3, 0xFF
-_0808138A:
- lsls r1, 1
- adds r1, r0
- lsls r0, r2, 8
- orrs r0, r3
- strh r0, [r1]
-_08081394:
- pop {r0}
- bx r0
- thumb_func_end sub_808136C
-
- thumb_func_start sub_8081398
-sub_8081398: @ 8081398
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- mov r10, r1
- mov r9, r2
- adds r6, r3, 0
- mov r8, r6
- movs r7, 0
- cmp r6, 0
- blt _08081414
-_080813B4:
- mov r0, r9
- subs r1, r0, r7
- mov r0, r10
- subs r4, r0, r6
- adds r5, r0, r6
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_808136C
- mov r0, r9
- adds r1, r0, r7
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_808136C
- mov r0, r9
- subs r1, r0, r6
- mov r0, r10
- subs r4, r0, r7
- adds r5, r0, r7
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_808136C
- mov r0, r9
- adds r1, r0, r6
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_808136C
- mov r1, r8
- adds r1, 0x1
- lsls r0, r7, 1
- subs r1, r0
- mov r8, r1
- adds r7, 0x1
- cmp r1, 0
- bge _08081410
- subs r1, r6, 0x1
- lsls r0, r1, 1
- add r8, r0
- adds r6, r1, 0
-_08081410:
- cmp r6, r7
- bge _080813B4
-_08081414:
- 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_8081398
-
- thumb_func_start sub_8081424
-sub_8081424: @ 8081424
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08081448 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081480
- cmp r0, 0x1
- bgt _0808144C
- cmp r0, 0
- beq _08081452
- b _080814E2
- .align 2, 0
-_08081448: .4byte gTasks + 0x8
-_0808144C:
- cmp r0, 0x2
- beq _080814D8
- b _080814E2
-_08081452:
- ldr r0, _08081478 @ =gUnknown_03004DC0
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _0808147C @ =gUnknown_03004DE0
- adds r0, r1
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r5, 0x6
- ldrsh r3, [r4, r5]
- bl sub_8081398
- movs r0, 0x1
- strh r0, [r4]
- b _080814E2
- .align 2, 0
-_08081478: .4byte gUnknown_03004DC0
-_0808147C: .4byte gUnknown_03004DE0
-_08081480:
- ldr r0, _080814C8 @ =gUnknown_03004DC0
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _080814CC @ =gUnknown_03004DE0
- adds r0, r1
- movs r6, 0x2
- ldrsh r1, [r4, r6]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r6, 0x6
- ldrsh r3, [r4, r6]
- bl sub_8081398
- movs r0, 0
- strh r0, [r4]
- ldrh r0, [r4, 0xA]
- ldrh r1, [r4, 0x6]
- adds r0, r1
- strh r0, [r4, 0x6]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- cmp r0, r1
- ble _080814E2
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080814D0
- bl remove_some_task
- movs r0, 0x2
- strh r0, [r4]
- b _080814E2
- .align 2, 0
-_080814C8: .4byte gUnknown_03004DC0
-_080814CC: .4byte gUnknown_03004DE0
-_080814D0:
- adds r0, r5, 0
- bl DestroyTask
- b _080814E2
-_080814D8:
- bl dp12_8087EA4
- adds r0, r5, 0
- bl DestroyTask
-_080814E2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8081424
-
- thumb_func_start sub_80814E8
-sub_80814E8: @ 80814E8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808150C @ =sub_8081424
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08081504
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_08081504:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808150C: .4byte sub_8081424
- thumb_func_end sub_80814E8
-
- thumb_func_start sub_8081510
-sub_8081510: @ 8081510
- push {r4,lr}
- ldr r4, _08081530 @ =sub_80814E8
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08081528
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
-_08081528:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08081530: .4byte sub_80814E8
- thumb_func_end sub_8081510
-
- thumb_func_start sub_8081534
-sub_8081534: @ 8081534
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- mov r9, r1
- adds r5, r2, 0
- adds r4, r3, 0
- ldr r6, [sp, 0x1C]
- ldr r0, [sp, 0x20]
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08081578 @ =sub_8081424
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _0808157C @ =gTasks + 0x8
- adds r1, r0, r1
- strh r5, [r1, 0x6]
- strh r4, [r1, 0x8]
- mov r0, r8
- strh r0, [r1, 0x2]
- mov r0, r9
- strh r0, [r1, 0x4]
- strh r6, [r1, 0xC]
- cmp r5, r4
- bge _08081580
- strh r7, [r1, 0xA]
- b _08081584
- .align 2, 0
-_08081578: .4byte sub_8081424
-_0808157C: .4byte gTasks + 0x8
-_08081580:
- negs r0, r7
- strh r0, [r1, 0xA]
-_08081584:
- adds r0, r2, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8081534
-
- thumb_func_start sub_8081594
-sub_8081594: @ 8081594
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- bl sav1_get_flash_used_on_map
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- cmp r4, 0
- bne _080815AE
- movs r5, 0x1
-_080815AE:
- ldr r1, _080815DC @ =gUnknown_0839ACDC
- lsls r0, 1
- adds r0, r1
- ldrh r2, [r0]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r3, [r0]
- str r5, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x78
- movs r1, 0x50
- bl sub_8081534
- bl sub_8081510
- bl ScriptContext2_Enable
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080815DC: .4byte gUnknown_0839ACDC
- thumb_func_end sub_8081594
-
- thumb_func_start sub_80815E0
-sub_80815E0: @ 80815E0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0808160E
- ldr r4, _08081614 @ =gUnknown_03004DE0
- ldr r1, _08081618 @ =gUnknown_0839ACDC
- lsls r0, 1
- adds r0, r1
- ldrh r3, [r0]
- adds r0, r4, 0
- movs r1, 0x78
- movs r2, 0x50
- bl sub_8081398
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r4, r0
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r4, 0
- bl CpuFastSet
-_0808160E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08081614: .4byte gUnknown_03004DE0
-_08081618: .4byte gUnknown_0839ACDC
- thumb_func_end sub_80815E0
-
- thumb_func_start sub_808161C
-sub_808161C: @ 808161C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- cmp r0, 0
- bne _0808162A
- movs r1, 0x1F
- b _08081630
-_0808162A:
- movs r0, 0xF8
- lsls r0, 7
- adds r1, r0, 0
-_08081630:
- mov r0, sp
- strh r1, [r0]
- movs r5, 0
- movs r4, 0xF0
- lsls r4, 16
-_0808163A:
- lsrs r1, r4, 16
- mov r0, sp
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x80
- lsls r0, 9
- adds r4, r0
- adds r5, 0x1
- cmp r5, 0xF
- ble _0808163A
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808161C
-
- thumb_func_start sub_8081658
-sub_8081658: @ 8081658
- push {lr}
- lsls r0, 16
- ldr r2, _08081678 @ =REG_BLDALPHA
- ldrh r1, [r2]
- lsls r1, 24
- lsrs r3, r1, 24
- ldrh r1, [r2]
- lsrs r2, r1, 8
- cmp r0, 0
- beq _0808167C
- cmp r3, 0
- beq _08081686
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- b _08081686
- .align 2, 0
-_08081678: .4byte REG_BLDALPHA
-_0808167C:
- cmp r2, 0xF
- bhi _08081686
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_08081686:
- ldr r1, _0808169C @ =REG_BLDALPHA
- lsls r0, r2, 8
- orrs r0, r3
- strh r0, [r1]
- cmp r3, 0
- bne _080816A0
- cmp r2, 0x10
- bne _080816A0
- movs r0, 0x1
- b _080816A2
- .align 2, 0
-_0808169C: .4byte REG_BLDALPHA
-_080816A0:
- movs r0, 0
-_080816A2:
- pop {r1}
- bx r1
- thumb_func_end sub_8081658
-
- thumb_func_start sub_80816A8
-sub_80816A8: @ 80816A8
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080816D0 @ =gTasks + 0x8
- adds r7, r0, r1
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0x7
- bls _080816C4
- b _08081892
-_080816C4:
- lsls r0, 2
- ldr r1, _080816D4 @ =_080816D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080816D0: .4byte gTasks + 0x8
-_080816D4: .4byte _080816D8
- .align 2, 0
-_080816D8:
- .4byte _080816F8
- .4byte _08081790
- .4byte _080817BC
- .4byte _080817D8
- .4byte _080817EE
- .4byte _08081852
- .4byte _08081818
- .4byte _08081826
-_080816F8:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- strh r0, [r7, 0xC]
- ldr r3, _0808176C @ =REG_BLDCNT
- ldrh r0, [r3]
- strh r0, [r7, 0xE]
- ldr r6, _08081770 @ =REG_BLDALPHA
- ldrh r0, [r6]
- strh r0, [r7, 0x10]
- ldr r5, _08081774 @ =REG_WININ
- ldrh r0, [r5]
- strh r0, [r7, 0x12]
- ldr r4, _08081778 @ =REG_WINOUT
- ldrh r0, [r4]
- strh r0, [r7, 0x14]
- ldrh r1, [r2]
- ldr r0, _0808177C @ =0x0000bfff
- ands r0, r1
- strh r0, [r2]
- ldr r1, _08081780 @ =gUnknown_081E29E8
- ldrh r0, [r3]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r3]
- ldr r2, _08081784 @ =0x0000070c
- adds r0, r2, 0
- strh r0, [r6]
- movs r0, 0x3F
- strh r0, [r5]
- movs r0, 0x1E
- strh r0, [r4]
- ldr r4, _08081788 @ =gUnknown_03004DE0
- movs r0, 0x4
- ldrsh r1, [r7, r0]
- movs r0, 0x6
- ldrsh r2, [r7, r0]
- adds r0, r4, 0
- movs r3, 0x1
- bl sub_8081398
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r4, r2
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r4, 0
- bl CpuFastSet
- ldr r2, _0808178C @ =gUnknown_0839ACEC
- ldr r0, [r2]
- ldr r1, [r2, 0x4]
- ldr r2, [r2, 0x8]
- bl sub_80895F8
- movs r0, 0x1
- strh r0, [r7]
- b _08081892
- .align 2, 0
-_0808176C: .4byte REG_BLDCNT
-_08081770: .4byte REG_BLDALPHA
-_08081774: .4byte REG_WININ
-_08081778: .4byte REG_WINOUT
-_0808177C: .4byte 0x0000bfff
-_08081780: .4byte gUnknown_081E29E8
-_08081784: .4byte 0x0000070c
-_08081788: .4byte gUnknown_03004DE0
-_0808178C: .4byte gUnknown_0839ACEC
-_08081790:
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuFillWindowRectWithBlankTile
- ldrb r0, [r7, 0x2]
- bl sub_808161C
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- movs r2, 0x6
- ldrsh r1, [r7, r2]
- movs r2, 0x1
- str r2, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r3, 0xA0
- bl sub_8081534
- strh r4, [r7]
- b _08081892
-_080817BC:
- ldr r0, _080817D4 @ =sub_8081424
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08081892
- bl EnableBothScriptContexts
- movs r0, 0x3
- strh r0, [r7]
- b _08081892
- .align 2, 0
-_080817D4: .4byte sub_8081424
-_080817D8:
- bl InstallCameraPanAheadCallback
- movs r0, 0
- bl SetCameraPanningCallback
- movs r0, 0
- strh r0, [r7, 0xA]
- movs r0, 0x4
- strh r0, [r7, 0x8]
- strh r0, [r7]
- b _08081892
-_080817EE:
- ldrh r0, [r7, 0x8]
- subs r0, 0x1
- strh r0, [r7, 0x8]
- lsls r0, 16
- cmp r0, 0
- bne _08081892
- movs r0, 0x4
- strh r0, [r7, 0x8]
- ldrh r0, [r7, 0xA]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r7, 0xA]
- movs r1, 0x4
- negs r1, r1
- cmp r0, 0
- beq _08081810
- movs r1, 0x4
-_08081810:
- movs r0, 0
- bl SetCameraPanning
- b _08081892
-_08081818:
- bl InstallCameraPanAheadCallback
- movs r0, 0x8
- strh r0, [r7, 0x8]
- movs r0, 0x7
- strh r0, [r7]
- b _08081892
-_08081826:
- ldrh r0, [r7, 0x8]
- subs r0, 0x1
- strh r0, [r7, 0x8]
- lsls r0, 16
- cmp r0, 0
- bne _08081892
- movs r0, 0x8
- strh r0, [r7, 0x8]
- ldrh r0, [r7, 0xA]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r7, 0xA]
- ldrh r0, [r7, 0xA]
- bl sub_8081658
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08081892
- movs r0, 0x5
- strh r0, [r7]
- b _08081892
-_08081852:
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r0, _0808189C @ =gWindowConfig_81E6CE4
- bl LoadFontDefaultPalette
- ldr r1, _080818A0 @ =REG_WIN0H
- movs r0, 0xFF
- strh r0, [r1]
- subs r1, 0x40
- ldrh r0, [r7, 0xC]
- strh r0, [r1]
- adds r1, 0x50
- ldrh r0, [r7, 0xE]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r7, 0x10]
- strh r0, [r1]
- subs r1, 0xA
- ldrh r0, [r7, 0x12]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r7, 0x14]
- strh r0, [r1]
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_08081892:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808189C: .4byte gWindowConfig_81E6CE4
-_080818A0: .4byte REG_WIN0H
- thumb_func_end sub_80816A8
-
- thumb_func_start sub_80818A4
-sub_80818A4: @ 80818A4
- push {lr}
- ldr r0, _080818CC @ =sub_80816A8
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080818D0 @ =gTasks + 0x8
- adds r1, r0
- ldr r0, _080818D4 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080818D8
- strh r0, [r1, 0x2]
- movs r0, 0x68
- b _080818F0
- .align 2, 0
-_080818CC: .4byte sub_80816A8
-_080818D0: .4byte gTasks + 0x8
-_080818D4: .4byte gScriptResult
-_080818D8:
- cmp r0, 0x1
- bne _080818E2
- strh r0, [r1, 0x2]
- movs r0, 0x68
- b _080818F0
-_080818E2:
- cmp r0, 0x2
- bne _080818EA
- movs r0, 0
- b _080818EC
-_080818EA:
- movs r0, 0x1
-_080818EC:
- strh r0, [r1, 0x2]
- movs r0, 0x78
-_080818F0:
- strh r0, [r1, 0x4]
- movs r0, 0x50
- strh r0, [r1, 0x6]
- pop {r0}
- bx r0
- thumb_func_end sub_80818A4
-
- thumb_func_start sub_80818FC
-sub_80818FC: @ 80818FC
- push {lr}
- ldr r0, _0808191C @ =sub_80816A8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08081920 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x6
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0808191C: .4byte sub_80816A8
-_08081920: .4byte gTasks
- thumb_func_end sub_80818FC
-
- thumb_func_start sub_8081924
-sub_8081924: @ 8081924
- push {lr}
- bl sub_8054044
- ldr r0, _08081938 @ =task50_0807F0C8
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08081938: .4byte task50_0807F0C8
- thumb_func_end sub_8081924
-
- thumb_func_start task50_0807F0C8
-task50_0807F0C8: @ 808193C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8054034
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08081958
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_08081958:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task50_0807F0C8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index bd8db8a2c..542eed201 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -92,7 +92,7 @@ _08110720:
ldr r4, _0811073C @ =0x020006e8
adds r0, r4, 0
movs r1, 0
- bl sub_80FA8EC
+ bl InitRegionMap
movs r0, 0x88
lsls r0, 4
adds r4, r0
@@ -115,7 +115,7 @@ _08110746:
_08110752:
movs r0, 0x1
movs r1, 0x1
- bl sub_80FBCF0
+ bl CreateRegionMapPlayerIcon
movs r1, 0x8
negs r1, r1
movs r0, 0
@@ -1700,7 +1700,7 @@ _08111344:
lsls r0, 24
cmp r0, 0
bne _08111358
- bl sub_80FAB10
+ bl FreeRegionMapIconResources
ldr r0, [r4, 0x4]
bl SetMainCallback2
_08111358:
@@ -1740,7 +1740,7 @@ _08111390:
lsls r0, 24
cmp r0, 0
bne _081113A4
- bl sub_80FAB10
+ bl FreeRegionMapIconResources
ldr r0, [r4, 0x8]
bl SetMainCallback2
_081113A4:
@@ -1859,7 +1859,7 @@ _08111496:
ldr r4, _081114B4 @ =0x020006e8
adds r0, r4, 0
movs r1, 0
- bl sub_80FA8EC
+ bl InitRegionMap
movs r0, 0x88
lsls r0, 4
adds r4, r0
@@ -1882,7 +1882,7 @@ _081114BE:
_081114CA:
movs r0, 0x1
movs r1, 0x1
- bl sub_80FBCF0
+ bl CreateRegionMapPlayerIcon
movs r1, 0x8
negs r1, r1
movs r0, 0
diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s
index 3a1552f70..fe1b41724 100644
--- a/asm/pokemon_menu.s
+++ b/asm/pokemon_menu.s
@@ -2093,7 +2093,7 @@ _0808AB6C: .4byte gPaletteFade
_0808AB70: .4byte gTasks
_0808AB74: .4byte c2_exit_to_overworld_2_switch
_0808AB78:
- ldr r0, _0808AB8C @ =sub_80FC074
+ ldr r0, _0808AB8C @ =CB2_InitFlyRegionMap
bl SetMainCallback2
_0808AB7E:
adds r0, r4, 0
@@ -2103,7 +2103,7 @@ _0808AB84:
pop {r0}
bx r0
.align 2, 0
-_0808AB8C: .4byte sub_80FC074
+_0808AB8C: .4byte CB2_InitFlyRegionMap
thumb_func_end sub_808AB34
thumb_func_start sub_808AB90
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 757a2a5a2..cb6a40450 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -340,7 +340,7 @@ sub_80EBD30: @ 80EBD30
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_80FB260
+ bl UpdateRegionMapVideoRegs
bl sub_80EFE7C
pop {r0}
bx r0
@@ -10523,7 +10523,7 @@ sub_80F0FFC: @ 80F0FFC
ldrh r1, [r0]
adds r0, r5, 0
movs r2, 0
- bl sub_80FBFB4
+ bl GetMapSectionName
ldr r0, _080F1054 @ =gWindowConfig_81E710C
bl BasicInitMenuWindow
adds r0, r5, 0
@@ -14321,10 +14321,10 @@ sub_80F2DD8: @ 80F2DD8
push {lr}
movs r0, 0x7
movs r1, 0x7
- bl sub_80FBB3C
+ bl CreateRegionMapCursor
movs r0, 0x8
movs r1, 0x8
- bl sub_80FBCF0
+ bl CreateRegionMapPlayerIcon
bl sub_80FBF94
pop {r0}
bx r0
@@ -14333,7 +14333,7 @@ sub_80F2DD8: @ 80F2DD8
thumb_func_start sub_80F2DF4
sub_80F2DF4: @ 80F2DF4
push {lr}
- bl sub_80FAB10
+ bl FreeRegionMapIconResources
pop {r0}
bx r0
thumb_func_end sub_80F2DF4
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
deleted file mode 100644
index ce0121a40..000000000
--- a/asm/record_mixing.s
+++ /dev/null
@@ -1,543 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B9C6C
-sub_80B9C6C: @ 80B9C6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x58
- str r0, [sp, 0x2C]
- str r1, [sp, 0x30]
- str r3, [sp, 0x38]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x34]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x40]
- ldr r0, _080B9DA8 @ =gLinkPlayers
- ldrh r0, [r0, 0x4]
- bl SeedRng
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r3, 0
- add r0, sp, 0x1C
- mov r9, r0
- movs r1, 0x1D
- add r1, sp
- mov r10, r1
- mov r2, sp
- adds r2, 0xC
- str r2, [sp, 0x4C]
- movs r7, 0xFF
- add r4, sp, 0x8
- movs r2, 0
- mov r6, r9
- mov r5, r10
-_080B9CBC:
- mov r1, sp
- adds r1, r3
- adds r1, 0x4
- ldrb r0, [r1]
- orrs r0, r7
- strb r0, [r1]
- adds r0, r4, r3
- strb r2, [r0]
- lsls r1, r3, 1
- adds r0, r6, r1
- strb r2, [r0]
- adds r1, r5, r1
- strb r2, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080B9CBC
- movs r4, 0
- str r4, [sp, 0x3C]
- movs r3, 0
- mov r1, r8
- lsls r0, r1, 16
- lsrs r1, r0, 16
- str r0, [sp, 0x50]
- ldr r4, [sp, 0x30]
- ldr r0, [sp, 0x34]
- adds r2, r4, 0
- muls r2, r0
- str r2, [sp, 0x48]
- ldr r2, [sp, 0x3C]
- cmp r2, r1
- bcs _080B9D46
- mov r8, r1
-_080B9D00:
- ldr r4, [sp, 0x30]
- adds r0, r4, 0
- muls r0, r3
- ldr r1, [sp, 0x2C]
- adds r6, r1, r0
- ldr r0, [r6, 0x70]
- cmp r0, 0
- beq _080B9D3C
- movs r7, 0
- cmp r7, r0
- bcs _080B9D3C
- adds r4, r6, 0
- adds r4, 0x74
- mov r2, r9
- lsls r1, r3, 1
- movs r5, 0x1
-_080B9D20:
- lsls r0, r7, 1
- adds r0, r4, r0
- ldrh r0, [r0]
- cmp r0, 0
- bne _080B9D30
- adds r0, r7, r1
- adds r0, r2, r0
- strb r5, [r0]
-_080B9D30:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r0, [r6, 0x70]
- cmp r7, r0
- bcc _080B9D20
-_080B9D3C:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r8
- bcc _080B9D00
-_080B9D46:
- movs r7, 0
- movs r3, 0
- ldr r2, [sp, 0x50]
- cmp r2, 0
- beq _080B9E3E
- mov r4, sp
- adds r4, 0x24
- str r4, [sp, 0x44]
- movs r0, 0x25
- add r0, sp
- mov r8, r0
-_080B9D5C:
- ldr r1, [sp, 0x30]
- adds r0, r1, 0
- muls r0, r3
- ldr r2, [sp, 0x2C]
- adds r6, r2, r0
- lsls r1, r3, 1
- mov r4, r9
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080B9D7C
- mov r2, r10
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9D86
-_080B9D7C:
- ldr r0, [sp, 0x3C]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x3C]
-_080B9D86:
- mov r4, r9
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9DAC
- mov r2, r10
- adds r0, r2, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _080B9DAC
-_080B9D9A:
- lsls r1, r7, 1
- ldr r4, [sp, 0x44]
- adds r0, r4, r1
- strb r3, [r0]
- add r1, r8
- strb r2, [r1]
- b _080B9E2C
- .align 2, 0
-_080B9DA8: .4byte gLinkPlayers
-_080B9DAC:
- mov r2, r9
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B9DC0
- mov r4, r10
- adds r0, r4, r1
- ldrb r2, [r0]
- cmp r2, 0x1
- beq _080B9D9A
-_080B9DC0:
- mov r2, r9
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9E32
- mov r4, r10
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9E32
- lsls r5, r7, 1
- ldr r1, [sp, 0x44]
- adds r0, r1, r5
- strb r3, [r0]
- adds r0, r6, 0
- str r3, [sp, 0x54]
- bl sub_80B9BBC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- adds r0, 0x38
- bl sub_80B9BBC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, [sp, 0x54]
- cmp r4, 0
- bne _080B9E0A
- cmp r1, 0
- beq _080B9E0E
- mov r2, r8
- adds r1, r2, r5
- movs r0, 0x1
- strb r0, [r1]
- b _080B9E2C
-_080B9E0A:
- cmp r1, 0
- beq _080B9E26
-_080B9E0E:
- str r3, [sp, 0x54]
- bl Random
- mov r4, r8
- adds r2, r4, r5
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- strb r0, [r2]
- ldr r3, [sp, 0x54]
- b _080B9E2C
-_080B9E26:
- mov r2, r8
- adds r0, r2, r5
- strb r1, [r0]
-_080B9E2C:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
-_080B9E32:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r4, [sp, 0x50]
- cmp r0, r4
- bcc _080B9D5C
-_080B9E3E:
- movs r3, 0
- ldr r1, [sp, 0x48]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 3
- ldr r2, [sp, 0x2C]
- adds r6, r2, r0
- ldr r1, [sp, 0x4C]
-_080B9E4E:
- lsls r0, r3, 2
- adds r0, r1, r0
- str r6, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080B9E4E
- ldr r0, [sp, 0x38]
- bl sub_80B9C4C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r4, [sp, 0x3C]
- cmp r4, 0x3
- beq _080B9E9C
- cmp r4, 0x3
- bgt _080B9E82
- cmp r4, 0x2
- beq _080B9E8A
- b _080B9EF0
-_080B9E82:
- ldr r0, [sp, 0x3C]
- cmp r0, 0x4
- beq _080B9EBC
- b _080B9EF0
-_080B9E8A:
- add r2, sp, 0x24
- movs r0, 0x1
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- movs r3, 0
- bl sub_80B9BC4
- b _080B9EF0
-_080B9E9C:
- ldr r0, _080B9EB8 @ =gUnknown_083D02B4
- lsls r1, 1
- adds r2, r1, r0
- ldrb r3, [r2]
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- add r2, sp, 0x24
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- bl sub_80B9BC4
- b _080B9EF0
- .align 2, 0
-_080B9EB8: .4byte gUnknown_083D02B4
-_080B9EBC:
- add r6, sp, 0x24
- ldr r4, _080B9F2C @ =gUnknown_083D02BA
- lsls r5, r1, 2
- adds r0, r5, r4
- ldrb r3, [r0]
- adds r0, r4, 0x1
- adds r0, r5, r0
- ldrb r0, [r0]
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- adds r2, r6, 0
- bl sub_80B9BC4
- adds r0, r4, 0x2
- adds r0, r5, r0
- ldrb r3, [r0]
- adds r4, 0x3
- adds r5, r4
- ldrb r0, [r5]
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- adds r2, r6, 0
- bl sub_80B9BC4
-_080B9EF0:
- ldr r1, [sp, 0x2C]
- ldr r2, [sp, 0x48]
- adds r6, r1, r2
- ldr r4, _080B9F30 @ =gSaveBlock1
- ldr r1, _080B9F34 @ =0x0000303c
- adds r0, r4, r1
- adds r1, r6, 0
- movs r2, 0x38
- bl memcpy
- ldr r2, _080B9F38 @ =0x00003074
- adds r4, r2
- adds r1, r6, 0
- adds r1, 0x38
- adds r0, r4, 0
- movs r2, 0x38
- bl memcpy
- ldr r0, [sp, 0x40]
- bl SeedRng
- add sp, 0x58
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9F2C: .4byte gUnknown_083D02BA
-_080B9F30: .4byte gSaveBlock1
-_080B9F34: .4byte 0x0000303c
-_080B9F38: .4byte 0x00003074
- thumb_func_end sub_80B9C6C
-
- thumb_func_start sub_80B9F3C
-sub_80B9F3C: @ 80B9F3C
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- cmp r1, 0
- beq _080BA000
- ldrh r0, [r4]
- cmp r0, 0
- beq _080BA000
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _080B9FC8
- ldrh r0, [r4]
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- bne _080B9FB8
- ldrh r0, [r4]
- movs r1, 0x1
- bl CheckPCHasItem
- lsls r0, 24
- cmp r0, 0
- bne _080B9FB8
- ldrh r0, [r4]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- beq _080B9FB8
- ldr r0, _080B9FA4 @ =0x00004001
- ldrh r1, [r4]
- bl VarSet
- ldr r0, _080B9FA8 @ =gStringVar1
- ldr r1, _080B9FAC @ =gLinkPlayers + 0x8
- bl StringCopy
- ldrh r1, [r4]
- ldr r0, _080B9FB0 @ =0x00000113
- cmp r1, r0
- bne _080BA000
- ldr r0, _080B9FB4 @ =0x00000853
- bl FlagSet
- b _080BA000
- .align 2, 0
-_080B9FA4: .4byte 0x00004001
-_080B9FA8: .4byte gStringVar1
-_080B9FAC: .4byte gLinkPlayers + 0x8
-_080B9FB0: .4byte 0x00000113
-_080B9FB4: .4byte 0x00000853
-_080B9FB8:
- ldr r0, _080B9FC4 @ =0x00004001
- movs r1, 0
- bl VarSet
- b _080BA000
- .align 2, 0
-_080B9FC4: .4byte 0x00004001
-_080B9FC8:
- ldrh r0, [r4]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B9FF8
- ldr r0, _080B9FEC @ =0x00004001
- ldrh r1, [r4]
- bl VarSet
- ldr r0, _080B9FF0 @ =gStringVar1
- ldr r1, _080B9FF4 @ =gLinkPlayers + 0x8
- bl StringCopy
- b _080BA000
- .align 2, 0
-_080B9FEC: .4byte 0x00004001
-_080B9FF0: .4byte gStringVar1
-_080B9FF4: .4byte gLinkPlayers + 0x8
-_080B9FF8:
- ldr r0, _080BA008 @ =0x00004001
- movs r1, 0
- bl VarSet
-_080BA000:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA008: .4byte 0x00004001
- thumb_func_end sub_80B9F3C
-
- thumb_func_start sub_80BA00C
-sub_80BA00C: @ 80BA00C
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080BA030 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bhi _080BA09C
- lsls r0, 2
- ldr r1, _080BA034 @ =_080BA038
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BA030: .4byte gTasks
-_080BA034: .4byte _080BA038
- .align 2, 0
-_080BA038:
- .4byte _080BA086
- .4byte _080BA086
- .4byte _080BA050
- .4byte _080BA05A
- .4byte _080BA074
- .4byte _080BA08E
-_080BA050:
- bl SetSecretBase2Field_9_AndHideBG
- bl sub_8125E2C
- b _080BA086
-_080BA05A:
- bl sub_8125E6C
- lsls r0, 24
- cmp r0, 0
- beq _080BA09C
- bl ClearSecretBase2Field_9_2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- b _080BA09C
-_080BA074:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- ble _080BA09C
- bl sub_800832C
-_080BA086:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080BA09C
-_080BA08E:
- ldr r0, _080BA0A4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080BA09C
- adds r0, r2, 0
- bl DestroyTask
-_080BA09C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA0A4: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80BA00C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/region_map.s b/asm/region_map.s
deleted file mode 100644
index 44d6a4e91..000000000
--- a/asm/region_map.s
+++ /dev/null
@@ -1,3969 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80FA8EC
-sub_80FA8EC: @ 80FA8EC
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- bl sub_80FA904
-_080FA8F6:
- bl sub_80FA940
- lsls r0, 24
- cmp r0, 0
- bne _080FA8F6
- pop {r0}
- bx r0
- thumb_func_end sub_80FA8EC
-
- thumb_func_start sub_80FA904
-sub_80FA904: @ 80FA904
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _080FA928 @ =gUnknown_020388CC
- str r0, [r3]
- movs r2, 0x79
- adds r2, r0
- mov r12, r2
- movs r2, 0
- mov r4, r12
- strb r2, [r4]
- adds r0, 0x78
- strb r1, [r0]
- ldr r3, [r3]
- cmp r1, 0
- bne _080FA930
- ldr r0, _080FA92C @ =sub_80FAB78
- b _080FA932
- .align 2, 0
-_080FA928: .4byte gUnknown_020388CC
-_080FA92C: .4byte sub_80FAB78
-_080FA930:
- ldr r0, _080FA93C @ =sub_80FAD04
-_080FA932:
- str r0, [r3, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA93C: .4byte sub_80FAD04
- thumb_func_end sub_80FA904
-
- thumb_func_start sub_80FA940
-sub_80FA940: @ 80FA940
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, _080FA95C @ =gUnknown_020388CC
- ldr r0, [r0]
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _080FA952
- b _080FAAE2
-_080FA952:
- lsls r0, 2
- ldr r1, _080FA960 @ =_080FA964
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FA95C: .4byte gUnknown_020388CC
-_080FA960: .4byte _080FA964
- .align 2, 0
-_080FA964:
- .4byte _080FA984
- .4byte _080FA998
- .4byte _080FA9AC
- .4byte _080FA9BC
- .4byte _080FA9D8
- .4byte _080FA9F4
- .4byte _080FAA38
- .4byte _080FAAB4
-_080FA984:
- ldr r0, _080FA990 @ =gUnknown_083E5DA0
- ldr r1, _080FA994 @ =0x06008000
- bl LZ77UnCompVram
- b _080FAAF4
- .align 2, 0
-_080FA990: .4byte gUnknown_083E5DA0
-_080FA994: .4byte 0x06008000
-_080FA998:
- ldr r0, _080FA9A4 @ =gUnknown_083E6B04
- ldr r1, _080FA9A8 @ =0x0600e000
- bl LZ77UnCompVram
- b _080FAAF4
- .align 2, 0
-_080FA9A4: .4byte gUnknown_083E6B04
-_080FA9A8: .4byte 0x0600e000
-_080FA9AC:
- ldr r0, _080FA9B8 @ =gUnknown_083E5D60
- movs r1, 0x70
- movs r2, 0x60
- bl LoadPalette
- b _080FAAF4
- .align 2, 0
-_080FA9B8: .4byte gUnknown_083E5D60
-_080FA9BC:
- ldr r0, _080FA9D0 @ =gUnknown_083E5AF0
- ldr r1, _080FA9D4 @ =gUnknown_020388CC
- ldr r1, [r1]
- movs r2, 0xC0
- lsls r2, 1
- adds r1, r2
- bl LZ77UnCompWram
- b _080FAAF4
- .align 2, 0
-_080FA9D0: .4byte gUnknown_083E5AF0
-_080FA9D4: .4byte gUnknown_020388CC
-_080FA9D8:
- ldr r0, _080FA9EC @ =gUnknown_083E5B34
- ldr r1, _080FA9F0 @ =gUnknown_020388CC
- ldr r1, [r1]
- movs r3, 0xA0
- lsls r3, 2
- adds r1, r3
- bl LZ77UnCompWram
- b _080FAAF4
- .align 2, 0
-_080FA9EC: .4byte gUnknown_083E5B34
-_080FA9F0: .4byte gUnknown_020388CC
-_080FA9F4:
- bl sub_80FB32C
- ldr r4, _080FAA34 @ =gUnknown_020388CC
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x54
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- subs r0, 0x1E
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x76
- strh r0, [r1]
- ldrh r0, [r2, 0x14]
- bl sub_80FB758
- ldr r1, [r4]
- strb r0, [r1, 0x16]
- ldr r0, [r4]
- ldrh r0, [r0, 0x14]
- bl sub_80FB9C0
- adds r1, r0, 0
- ldr r0, [r4]
- strh r1, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
- b _080FAAF4
- .align 2, 0
-_080FAA34: .4byte gUnknown_020388CC
-_080FAA38:
- ldr r0, _080FAA60 @ =gUnknown_020388CC
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x78
- ldrb r1, [r0]
- cmp r1, 0
- bne _080FAA64
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80FB170
- b _080FAAF4
- .align 2, 0
-_080FAA60: .4byte gUnknown_020388CC
-_080FAA64:
- adds r1, r4, 0
- adds r1, 0x54
- ldrh r0, [r1]
- lsls r0, 3
- subs r0, 0x34
- adds r2, r4, 0
- adds r2, 0x5C
- movs r3, 0
- strh r0, [r2]
- movs r5, 0x56
- adds r5, r4
- mov r12, r5
- ldrh r0, [r5]
- lsls r0, 3
- subs r0, 0x44
- adds r5, r4, 0
- adds r5, 0x5E
- strh r0, [r5]
- ldrh r1, [r1]
- adds r0, r4, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r0, 0x66
- strh r1, [r0]
- movs r1, 0
- ldrsh r0, [r2, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r2, 0x80
- str r2, [sp]
- str r2, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_80FB170
- b _080FAAF4
-_080FAAB4:
- bl sub_80FBA18
- bl sub_80FB260
- ldr r2, _080FAAE8 @ =gUnknown_020388CC
- ldr r0, [r2]
- movs r1, 0
- str r1, [r0, 0x1C]
- str r1, [r0, 0x20]
- adds r0, 0x7A
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, _080FAAEC @ =REG_BG2CNT
- ldr r3, _080FAAF0 @ =0x0000bc8a
- adds r0, r3, 0
- strh r0, [r1]
- ldr r1, [r2]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080FAAE2:
- movs r0, 0
- b _080FAB02
- .align 2, 0
-_080FAAE8: .4byte gUnknown_020388CC
-_080FAAEC: .4byte REG_BG2CNT
-_080FAAF0: .4byte 0x0000bc8a
-_080FAAF4:
- ldr r0, _080FAB0C @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
-_080FAB02:
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAB0C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FA940
-
- thumb_func_start sub_80FAB10
-sub_80FAB10: @ 80FAB10
- push {r4,lr}
- ldr r4, _080FAB5C @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _080FAB34
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080FAB34:
- ldr r0, [r4]
- ldr r0, [r0, 0x20]
- cmp r0, 0
- beq _080FAB54
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x70
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x72
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080FAB54:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAB5C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FAB10
-
- thumb_func_start sub_80FAB60
-sub_80FAB60: @ 80FAB60
- push {lr}
- ldr r0, _080FAB74 @ =gUnknown_020388CC
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080FAB74: .4byte gUnknown_020388CC
- thumb_func_end sub_80FAB60
-
- thumb_func_start sub_80FAB78
-sub_80FAB78: @ 80FAB78
- push {r4,lr}
- movs r4, 0
- ldr r2, _080FAC14 @ =gUnknown_020388CC
- ldr r0, [r2]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r2]
- adds r0, 0x7C
- strb r4, [r0]
- ldr r3, _080FAC18 @ =gMain
- ldrh r1, [r3, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FABAA
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0x2
- bls _080FABAA
- adds r1, 0x7C
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_080FABAA:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FABC8
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0xF
- bhi _080FABC8
- adds r1, 0x7C
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_080FABC8:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FABE6
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1
- bls _080FABE6
- adds r1, 0x7B
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_080FABE6:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080FAC04
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1B
- bhi _080FAC04
- adds r1, 0x7B
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_080FAC04:
- ldrh r3, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _080FAC1C
- movs r4, 0x4
- b _080FAC26
- .align 2, 0
-_080FAC14: .4byte gUnknown_020388CC
-_080FAC18: .4byte gMain
-_080FAC1C:
- movs r0, 0x2
- ands r0, r3
- cmp r0, 0
- beq _080FAC26
- movs r4, 0x5
-_080FAC26:
- cmp r4, 0x1
- bne _080FAC38
- ldr r0, [r2]
- adds r0, 0x7A
- movs r1, 0x4
- strb r1, [r0]
- ldr r1, [r2]
- ldr r0, _080FAC40 @ =_swiopen
- str r0, [r1, 0x18]
-_080FAC38:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAC40: .4byte _swiopen
- thumb_func_end sub_80FAB78
-
- thumb_func_start _swiopen
-_swiopen: @ 80FAC44
- push {r4,r5,lr}
- ldr r5, _080FAC5C @ =gUnknown_020388CC
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _080FAC60
- movs r0, 0x2
- b _080FACFA
- .align 2, 0
-_080FAC5C: .4byte gUnknown_020388CC
-_080FAC60:
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080FAC76
- adds r1, 0x54
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080FAC76:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080FAC8E
- adds r1, 0x54
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080FAC8E:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080FACA6
- adds r1, 0x56
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080FACA6:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080FACBE
- adds r1, 0x56
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080FACBE:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- adds r1, 0x56
- ldrh r1, [r1]
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_80FB758
- ldr r1, [r5]
- strb r0, [r1, 0x16]
- ldr r0, [r5]
- ldrh r1, [r0, 0x14]
- cmp r4, r1
- beq _080FACEE
- strh r4, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
-_080FACEE:
- bl sub_80FBA18
- ldr r1, [r5]
- ldr r0, _080FAD00 @ =sub_80FAB78
- str r0, [r1, 0x18]
- movs r0, 0x3
-_080FACFA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAD00: .4byte sub_80FAB78
- thumb_func_end _swiopen
-
- thumb_func_start sub_80FAD04
-sub_80FAD04: @ 80FAD04
- push {r4-r6,lr}
- movs r4, 0
- ldr r3, _080FADD4 @ =gUnknown_020388CC
- ldr r0, [r3]
- mov r12, r0
- adds r0, 0x6A
- strh r4, [r0]
- mov r5, r12
- adds r5, 0x68
- strh r4, [r5]
- ldr r2, _080FADD8 @ =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- adds r6, r3, 0
- adds r3, r2, 0
- cmp r0, 0
- beq _080FAD3E
- mov r0, r12
- adds r0, 0x5E
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x34
- negs r0, r0
- cmp r1, r0
- ble _080FAD3E
- ldr r0, _080FADDC @ =0x0000ffff
- strh r0, [r5]
- movs r4, 0x1
-_080FAD3E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FAD5E
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5E
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0x3B
- bgt _080FAD5E
- adds r1, 0x68
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_080FAD5E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FAD84
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x5C
- movs r5, 0
- ldrsh r1, [r0, r5]
- movs r0, 0x2C
- negs r0, r0
- cmp r1, r0
- ble _080FAD84
- adds r1, r2, 0
- adds r1, 0x6A
- ldr r0, _080FADDC @ =0x0000ffff
- strh r0, [r1]
- movs r4, 0x1
-_080FAD84:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080FADA4
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0xAB
- bgt _080FADA4
- adds r1, 0x6A
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_080FADA4:
- ldrh r2, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _080FADB0
- movs r4, 0x4
-_080FADB0:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080FADBA
- movs r4, 0x5
-_080FADBA:
- cmp r4, 0x1
- bne _080FADCA
- ldr r0, [r6]
- ldr r1, _080FADE0 @ =sub_80FADE4
- str r1, [r0, 0x18]
- adds r0, 0x6C
- movs r1, 0
- strh r1, [r0]
-_080FADCA:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FADD4: .4byte gUnknown_020388CC
-_080FADD8: .4byte gMain
-_080FADDC: .4byte 0x0000ffff
-_080FADE0: .4byte sub_80FADE4
- thumb_func_end sub_80FAD04
-
- thumb_func_start sub_80FADE4
-sub_80FADE4: @ 80FADE4
- push {r4,r5,lr}
- ldr r5, _080FAEB4 @ =gUnknown_020388CC
- ldr r2, [r5]
- adds r3, r2, 0
- adds r3, 0x5E
- adds r0, r2, 0
- adds r0, 0x68
- ldrh r0, [r0]
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x5C
- adds r0, r2, 0
- adds r0, 0x6A
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- movs r2, 0
- ldrsh r1, [r3, r2]
- bl sub_80FB238
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x6C
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bne _080FAEBC
- adds r0, r2, 0
- adds r0, 0x5C
- movs r3, 0
- ldrsh r1, [r0, r3]
- adds r0, r1, 0
- adds r0, 0x2C
- cmp r0, 0
- bge _080FAE3C
- adds r0, 0x7
-_080FAE3C:
- asrs r0, 3
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r2, 0
- adds r0, 0x5E
- movs r4, 0
- ldrsh r1, [r0, r4]
- adds r0, r1, 0
- adds r0, 0x34
- cmp r0, 0
- bge _080FAE56
- adds r0, 0x7
-_080FAE56:
- asrs r0, 3
- adds r0, 0x2
- lsls r0, 16
- lsrs r1, r0, 16
- adds r4, r2, 0
- adds r4, 0x64
- adds r0, r2, 0
- adds r0, 0x66
- ldrh r2, [r4]
- cmp r3, r2
- bne _080FAE72
- ldrh r2, [r0]
- cmp r1, r2
- beq _080FAEA0
-_080FAE72:
- strh r3, [r4]
- strh r1, [r0]
- adds r0, r3, 0
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_80FB758
- ldr r1, [r5]
- strb r0, [r1, 0x16]
- ldr r0, [r5]
- ldrh r3, [r0, 0x14]
- cmp r4, r3
- beq _080FAE9C
- strh r4, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
-_080FAE9C:
- bl sub_80FBA18
-_080FAEA0:
- ldr r0, _080FAEB4 @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x6C
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080FAEB8 @ =sub_80FAD04
- str r0, [r2, 0x18]
- movs r0, 0x3
- b _080FAEBE
- .align 2, 0
-_080FAEB4: .4byte gUnknown_020388CC
-_080FAEB8: .4byte sub_80FAD04
-_080FAEBC:
- movs r0, 0x2
-_080FAEBE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FADE4
-
- thumb_func_start sub_80FAEC4
-sub_80FAEC4: @ 80FAEC4
- push {r4-r6,lr}
- ldr r1, _080FAF40 @ =gUnknown_020388CC
- ldr r2, [r1]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- adds r5, r1, 0
- cmp r3, 0
- bne _080FAF48
- subs r0, 0x1A
- strh r3, [r0]
- subs r0, 0x2
- strh r3, [r0]
- str r3, [r2, 0x40]
- str r3, [r2, 0x3C]
- adds r4, r2, 0
- adds r4, 0x54
- ldrh r0, [r4]
- lsls r0, 3
- subs r0, 0x34
- adds r1, r2, 0
- adds r1, 0x60
- strh r0, [r1]
- movs r0, 0x56
- adds r0, r2
- mov r12, r0
- ldrh r0, [r0]
- lsls r0, 3
- subs r0, 0x44
- adds r3, r2, 0
- adds r3, 0x62
- strh r0, [r3]
- movs r6, 0
- ldrsh r0, [r1, r6]
- lsls r0, 8
- cmp r0, 0
- bge _080FAF10
- adds r0, 0xF
-_080FAF10:
- asrs r0, 4
- str r0, [r2, 0x44]
- movs r1, 0
- ldrsh r0, [r3, r1]
- lsls r0, 8
- cmp r0, 0
- bge _080FAF20
- adds r0, 0xF
-_080FAF20:
- asrs r0, 4
- str r0, [r2, 0x48]
- ldrh r1, [r4]
- adds r0, r2, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r3, r12
- ldrh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x66
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 9
- str r0, [r2, 0x4C]
- ldr r0, _080FAF44 @ =0xfffff800
- b _080FAFA6
- .align 2, 0
-_080FAF40: .4byte gUnknown_020388CC
-_080FAF44: .4byte 0xfffff800
-_080FAF48:
- adds r0, r2, 0
- adds r0, 0x5C
- movs r6, 0
- ldrsh r0, [r0, r6]
- lsls r0, 8
- str r0, [r2, 0x3C]
- adds r0, r2, 0
- adds r0, 0x5E
- movs r1, 0
- ldrsh r0, [r0, r1]
- lsls r0, 8
- str r0, [r2, 0x40]
- adds r0, r2, 0
- adds r0, 0x60
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r0, [r2, 0x3C]
- cmp r0, 0
- bge _080FAF74
- adds r0, 0xF
-_080FAF74:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x44]
- ldr r0, [r2, 0x40]
- cmp r0, 0
- bge _080FAF82
- adds r0, 0xF
-_080FAF82:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x48]
- adds r0, r2, 0
- adds r0, 0x64
- ldrh r1, [r0]
- subs r0, 0x10
- strh r1, [r0]
- adds r0, 0x12
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x56
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 8
- str r0, [r2, 0x4C]
- movs r0, 0x80
- lsls r0, 4
-_080FAFA6:
- str r0, [r2, 0x50]
- ldr r0, [r5]
- adds r0, 0x6E
- movs r1, 0
- strh r1, [r0]
- bl sub_80FBCA0
- bl sub_80FBDF8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80FAEC4
-
- thumb_func_start sub_80FAFC0
-sub_80FAFC0: @ 80FAFC0
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, _080FAFD8 @ =gUnknown_020388CC
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x6E
- ldrh r1, [r2]
- adds r5, r0, 0
- cmp r1, 0xF
- bls _080FAFDC
- movs r0, 0
- b _080FB164
- .align 2, 0
-_080FAFD8: .4byte gUnknown_020388CC
-_080FAFDC:
- adds r0, r1, 0x1
- movs r1, 0
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bne _080FB050
- str r1, [r3, 0x44]
- str r1, [r3, 0x48]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r1, [r0]
- subs r0, 0x4
- strh r1, [r0]
- adds r0, 0x6
- ldrh r0, [r0]
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- adds r1, 0x1A
- ldrb r0, [r1]
- movs r2, 0x80
- lsls r2, 9
- cmp r0, 0
- bne _080FB012
- movs r2, 0x80
- lsls r2, 8
-_080FB012:
- str r2, [r3, 0x4C]
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _080FB01E
- movs r2, 0x1
-_080FB01E:
- strb r2, [r1]
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- ldr r2, _080FB048 @ =sub_80FAD04
- cmp r0, 0
- bne _080FB030
- ldr r2, _080FB04C @ =sub_80FAB78
-_080FB030:
- str r2, [r1, 0x18]
- adds r0, r1, 0
- adds r0, 0x58
- ldrh r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- bl sub_80FBB3C
- bl sub_80FBE24
- movs r4, 0
- b _080FB132
- .align 2, 0
-_080FB048: .4byte sub_80FAD04
-_080FB04C: .4byte sub_80FAB78
-_080FB050:
- ldr r2, [r3, 0x3C]
- ldr r0, [r3, 0x44]
- adds r2, r0
- str r2, [r3, 0x3C]
- ldr r0, [r3, 0x40]
- ldr r1, [r3, 0x48]
- adds r0, r1
- str r0, [r3, 0x40]
- asrs r2, 8
- adds r4, r3, 0
- adds r4, 0x5C
- strh r2, [r4]
- ldr r0, [r3, 0x40]
- asrs r0, 8
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- ldr r0, [r3, 0x4C]
- ldr r1, [r3, 0x50]
- adds r0, r1
- str r0, [r3, 0x4C]
- ldr r2, [r3, 0x44]
- cmp r2, 0
- bge _080FB090
- adds r0, r3, 0
- adds r0, 0x60
- movs r6, 0
- ldrsh r1, [r4, r6]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- blt _080FB0A4
-_080FB090:
- cmp r2, 0
- ble _080FB0B4
- adds r0, r3, 0
- adds r0, 0x60
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _080FB0B4
-_080FB0A4:
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r2, [r0]
- subs r0, 0x4
- movs r1, 0
- strh r2, [r0]
- str r1, [r3, 0x44]
-_080FB0B4:
- ldr r2, [r5]
- ldr r4, [r2, 0x48]
- cmp r4, 0
- bge _080FB0D0
- adds r0, r2, 0
- adds r0, 0x5E
- adds r3, r2, 0
- adds r3, 0x62
- movs r6, 0
- ldrsh r1, [r0, r6]
- movs r6, 0
- ldrsh r0, [r3, r6]
- cmp r1, r0
- blt _080FB0E8
-_080FB0D0:
- cmp r4, 0
- ble _080FB0FA
- adds r1, r2, 0
- adds r1, 0x5E
- adds r0, r2, 0
- adds r0, 0x62
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _080FB0FA
-_080FB0E8:
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x62
- ldrh r1, [r0]
- adds r3, r2, 0
- adds r3, 0x5E
- movs r0, 0
- strh r1, [r3]
- str r0, [r2, 0x48]
-_080FB0FA:
- ldr r0, _080FB118 @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- cmp r3, 0
- bne _080FB120
- ldr r1, [r2, 0x4C]
- ldr r0, _080FB11C @ =0x00007fff
- cmp r1, r0
- bgt _080FB130
- adds r0, 0x1
- str r0, [r2, 0x4C]
- str r3, [r2, 0x50]
- b _080FB130
- .align 2, 0
-_080FB118: .4byte gUnknown_020388CC
-_080FB11C: .4byte 0x00007fff
-_080FB120:
- ldr r0, [r2, 0x4C]
- movs r1, 0x80
- lsls r1, 9
- cmp r0, r1
- ble _080FB130
- str r1, [r2, 0x4C]
- movs r0, 0
- str r0, [r2, 0x50]
-_080FB130:
- movs r4, 0x1
-_080FB132:
- ldr r0, _080FB16C @ =gUnknown_020388CC
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x5C
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r1, r3, 0
- adds r1, 0x5E
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_80FB170
- adds r0, r4, 0
-_080FB164:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FB16C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FAFC0
-
- thumb_func_start sub_80FB170
-sub_80FB170: @ 80FB170
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r7, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r4, 16
- lsrs r4, 16
- mov r8, r4
- lsls r7, 16
- adds r4, r7, 0
- lsrs r4, 16
- mov r9, r4
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080FB230 @ =gUnknown_020388CC
- ldr r6, [r4]
- ldr r7, _080FB234 @ =gSineTable
- mov r12, r7
- adds r4, r5, 0
- adds r4, 0x40
- lsls r4, 1
- add r4, r12
- movs r7, 0
- ldrsh r4, [r4, r7]
- str r4, [sp]
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r10, r4
- str r4, [r6, 0x2C]
- lsls r5, 1
- add r5, r12
- movs r7, 0
- ldrsh r5, [r5, r7]
- negs r4, r5
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r12, r4
- str r4, [r6, 0x30]
- mov r7, r9
- muls r7, r5
- adds r5, r7, 0
- asrs r5, 8
- str r5, [r6, 0x34]
- ldr r7, [sp]
- mov r4, r9
- muls r4, r7
- asrs r4, 8
- mov r8, r4
- str r4, [r6, 0x38]
- lsls r0, 16
- asrs r0, 8
- lsls r2, 16
- asrs r2, 16
- lsls r4, r2, 8
- adds r0, r4
- lsls r3, 16
- asrs r3, 16
- adds r4, r3, 0
- muls r4, r5
- mov r5, r10
- muls r5, r2
- adds r4, r5
- subs r0, r4
- str r0, [r6, 0x24]
- lsls r1, 16
- asrs r1, 8
- lsls r0, r3, 8
- adds r1, r0
- mov r0, r8
- muls r0, r3
- mov r3, r12
- muls r3, r2
- adds r2, r3, 0
- adds r0, r2
- subs r1, r0
- str r1, [r6, 0x28]
- adds r6, 0x7D
- movs r0, 0x1
- strb r0, [r6]
- 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
-_080FB230: .4byte gUnknown_020388CC
-_080FB234: .4byte gSineTable
- thumb_func_end sub_80FB170
-
- thumb_func_start sub_80FB238
-sub_80FB238: @ 80FB238
- ldr r2, _080FB25C @ =gUnknown_020388CC
- ldr r2, [r2]
- lsls r0, 16
- asrs r0, 8
- movs r3, 0xE0
- lsls r3, 5
- adds r0, r3
- str r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 8
- movs r0, 0x90
- lsls r0, 6
- adds r1, r0
- str r1, [r2, 0x28]
- adds r2, 0x7D
- movs r0, 0x1
- strb r0, [r2]
- bx lr
- .align 2, 0
-_080FB25C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FB238
-
- thumb_func_start sub_80FB260
-sub_80FB260: @ 80FB260
- push {lr}
- ldr r0, _080FB29C @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r3, r2, 0
- adds r3, 0x7D
- ldrb r0, [r3]
- cmp r0, 0
- beq _080FB298
- ldr r1, _080FB2A0 @ =REG_BG2PA
- ldr r0, [r2, 0x2C]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x34]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x30]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x38]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x24]
- str r0, [r1]
- adds r1, 0x4
- ldr r0, [r2, 0x28]
- str r0, [r1]
- movs r0, 0
- strb r0, [r3]
-_080FB298:
- pop {r0}
- bx r0
- .align 2, 0
-_080FB29C: .4byte gUnknown_020388CC
-_080FB2A0: .4byte REG_BG2PA
- thumb_func_end sub_80FB260
-
- thumb_func_start sub_80FB2A4
-sub_80FB2A4: @ 80FB2A4
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x38
- movs r3, 0x48
- bl sub_80FB170
- bl sub_80FB260
- ldr r0, _080FB2E8 @ =gUnknown_020388CC
- ldr r2, [r0]
- ldr r1, [r2, 0x20]
- cmp r1, 0
- beq _080FB2E0
- negs r0, r4
- strh r0, [r1, 0x24]
- ldr r1, [r2, 0x20]
- negs r0, r5
- strh r0, [r1, 0x26]
-_080FB2E0:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB2E8: .4byte gUnknown_020388CC
- thumb_func_end sub_80FB2A4
-
- thumb_func_start GetRegionMapSectionAt
-GetRegionMapSectionAt: @ 80FB2EC
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- ldr r0, _080FB30C @ =0xfffe0000
- adds r1, r0
- lsrs r2, r1, 16
- cmp r2, 0xE
- bhi _080FB306
- cmp r3, 0
- beq _080FB306
- cmp r3, 0x1C
- bls _080FB310
-_080FB306:
- movs r0, 0x58
- b _080FB324
- .align 2, 0
-_080FB30C: .4byte 0xfffe0000
-_080FB310:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r1, _080FB328 @ =gRegionMapSections
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r1
- ldrb r0, [r0]
-_080FB324:
- pop {r1}
- bx r1
- .align 2, 0
-_080FB328: .4byte gRegionMapSections
- thumb_func_end GetRegionMapSectionAt
-
- thumb_func_start sub_80FB32C
-sub_80FB32C: @ 80FB32C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080FB358 @ =gSaveBlock1
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- adds r2, r0, 0
- cmp r1, 0x19
- bne _080FB35C
- ldrb r0, [r2, 0x5]
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _080FB35C
- bl sub_80FB600
- b _080FB5E8
- .align 2, 0
-_080FB358: .4byte gSaveBlock1
-_080FB35C:
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- movs r1, 0x5
- ldrsb r1, [r2, r1]
- bl get_map_light_level_by_bank_and_number
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x8
- bhi _080FB3A4
- lsls r0, 2
- ldr r1, _080FB37C @ =_080FB380
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FB37C: .4byte _080FB380
- .align 2, 0
-_080FB380:
- .4byte _080FB3A4
- .4byte _080FB3A4
- .4byte _080FB3A4
- .4byte _080FB3E0
- .4byte _080FB3A4
- .4byte _080FB3A4
- .4byte _080FB3E0
- .4byte _080FB464
- .4byte _080FB428
-_080FB3A4:
- ldr r4, _080FB3D4 @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r3, _080FB3D8 @ =gMapHeader
- ldrb r1, [r3, 0x14]
- movs r2, 0
- strh r1, [r0, 0x14]
- adds r0, 0x7F
- strb r2, [r0]
- ldr r0, [r3]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldr r0, _080FB3DC @ =gSaveBlock1
- ldrh r6, [r0]
- ldrh r3, [r0, 0x2]
- ldr r1, [r4]
- ldrh r0, [r1, 0x14]
- cmp r0, 0x45
- beq _080FB3CC
- b _080FB4CC
-_080FB3CC:
- adds r1, 0x7F
- movs r0, 0x1
- strb r0, [r1]
- b _080FB4CC
- .align 2, 0
-_080FB3D4: .4byte gUnknown_020388CC
-_080FB3D8: .4byte gMapHeader
-_080FB3DC: .4byte gSaveBlock1
-_080FB3E0:
- ldr r4, _080FB420 @ =gSaveBlock1
- adds r0, r4, 0
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- adds r1, 0x25
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- ldr r0, _080FB424 @ =gUnknown_020388CC
- ldr r0, [r0]
- ldrb r1, [r2, 0x14]
- strh r1, [r0, 0x14]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r2]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldrh r6, [r4, 0x28]
- ldrh r3, [r4, 0x2A]
- b _080FB4CC
- .align 2, 0
-_080FB420: .4byte gSaveBlock1
-_080FB424: .4byte gUnknown_020388CC
-_080FB428:
- ldr r4, _080FB45C @ =gSaveBlock1
- movs r0, 0x14
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x15
- ldrsb r1, [r4, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- ldr r0, _080FB460 @ =gUnknown_020388CC
- ldr r0, [r0]
- ldrb r1, [r2, 0x14]
- strh r1, [r0, 0x14]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r2]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldrh r6, [r4, 0x18]
- ldrh r3, [r4, 0x1A]
- b _080FB4CC
- .align 2, 0
-_080FB45C: .4byte gSaveBlock1
-_080FB460: .4byte gUnknown_020388CC
-_080FB464:
- ldr r5, _080FB48C @ =gUnknown_020388CC
- ldr r0, [r5]
- ldr r1, _080FB490 @ =gMapHeader
- ldrb r1, [r1, 0x14]
- strh r1, [r0, 0x14]
- cmp r1, 0x57
- beq _080FB498
- ldr r4, _080FB494 @ =gSaveBlock1 + 0x24
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r4, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- b _080FB4B6
- .align 2, 0
-_080FB48C: .4byte gUnknown_020388CC
-_080FB490: .4byte gMapHeader
-_080FB494: .4byte gSaveBlock1 + 0x24
-_080FB498:
- ldr r4, _080FB548 @ =gSaveBlock1 + 0x14
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r4, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- ldr r1, [r5]
- ldrb r0, [r2, 0x14]
- strh r0, [r1, 0x14]
-_080FB4B6:
- ldr r0, _080FB54C @ =gUnknown_020388CC
- ldr r0, [r0]
- adds r0, 0x7F
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldrh r6, [r4, 0x4]
- ldrh r3, [r4, 0x6]
-_080FB4CC:
- mov r9, r6
- ldr r4, _080FB54C @ =gUnknown_020388CC
- ldr r0, [r4]
- ldrh r5, [r0, 0x14]
- lsls r0, r5, 3
- ldr r1, _080FB550 @ =gRegionMapLocations
- adds r0, r1
- mov r10, r0
- ldrb r7, [r0, 0x2]
- adds r0, r2, 0
- adds r1, r7, 0
- str r3, [sp]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp]
- cmp r1, 0
- bne _080FB4F4
- movs r1, 0x1
-_080FB4F4:
- adds r0, r6, 0
- str r3, [sp]
- bl __udivsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, [sp]
- cmp r6, r7
- bcc _080FB50C
- subs r0, r7, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB50C:
- mov r2, r10
- ldrb r4, [r2, 0x3]
- mov r0, r8
- adds r1, r4, 0
- str r3, [sp]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp]
- cmp r1, 0
- bne _080FB526
- movs r1, 0x1
-_080FB526:
- adds r0, r3, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r4
- bcc _080FB53A
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
-_080FB53A:
- cmp r5, 0x24
- beq _080FB59C
- cmp r5, 0x24
- bgt _080FB554
- cmp r5, 0x1D
- beq _080FB55E
- b _080FB5BE
- .align 2, 0
-_080FB548: .4byte gSaveBlock1 + 0x14
-_080FB54C: .4byte gUnknown_020388CC
-_080FB550: .4byte gRegionMapLocations
-_080FB554:
- cmp r5, 0x29
- beq _080FB566
- cmp r5, 0x33
- beq _080FB566
- b _080FB5BE
-_080FB55E:
- cmp r3, 0
- beq _080FB5BE
- movs r6, 0
- b _080FB5BE
-_080FB566:
- movs r6, 0
- ldr r1, _080FB598 @ =gSaveBlock1
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x20
- ble _080FB574
- movs r6, 0x1
-_080FB574:
- cmp r0, 0x33
- ble _080FB57E
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB57E:
- movs r3, 0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- cmp r0, 0x25
- ble _080FB58A
- movs r3, 0x1
-_080FB58A:
- cmp r0, 0x38
- ble _080FB5BE
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- b _080FB5BE
- .align 2, 0
-_080FB598: .4byte gSaveBlock1
-_080FB59C:
- movs r6, 0
- mov r0, r9
- cmp r0, 0xE
- bls _080FB5A6
- movs r6, 0x1
-_080FB5A6:
- mov r1, r9
- cmp r1, 0x1C
- bls _080FB5B2
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB5B2:
- mov r2, r9
- cmp r2, 0x36
- bls _080FB5BE
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB5BE:
- ldr r0, _080FB5F8 @ =gUnknown_020388CC
- ldr r2, [r0]
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- ldr r1, _080FB5FC @ =gRegionMapLocations
- adds r0, r1
- ldrb r0, [r0]
- adds r0, r6, r0
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- ldr r1, _080FB5FC @ =gRegionMapLocations
- adds r0, r1
- ldrb r0, [r0, 0x1]
- adds r0, r3, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
-_080FB5E8:
- 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
-_080FB5F8: .4byte gUnknown_020388CC
-_080FB5FC: .4byte gRegionMapLocations
- thumb_func_end sub_80FB32C
-
- thumb_func_start sub_80FB600
-sub_80FB600: @ 80FB600
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r7, 0
- movs r0, 0
- mov r8, r0
- mov r4, sp
- adds r4, 0x1
- mov r5, sp
- adds r5, 0x2
- add r6, sp, 0x4
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl GetSSTidalLocation
- lsls r0, 24
- lsrs r0, 24
- mov r10, r5
- cmp r0, 0x4
- bhi _080FB694
- lsls r0, 2
- ldr r1, _080FB63C @ =_080FB640
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FB63C: .4byte _080FB640
- .align 2, 0
-_080FB640:
- .4byte _080FB694
- .4byte _080FB654
- .4byte _080FB664
- .4byte _080FB674
- .4byte _080FB684
-_080FB654:
- ldr r2, _080FB660 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0x8
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB660: .4byte gUnknown_020388CC
-_080FB664:
- ldr r2, _080FB670 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0xC
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB670: .4byte gUnknown_020388CC
-_080FB674:
- ldr r2, _080FB680 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0x27
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB680: .4byte gUnknown_020388CC
-_080FB684:
- ldr r2, _080FB690 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0x2E
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB690: .4byte gUnknown_020388CC
-_080FB694:
- mov r0, sp
- ldrb r0, [r0]
- ldrb r1, [r4]
- bl get_mapheader_by_bank_and_number
- ldr r1, _080FB750 @ =gUnknown_020388CC
- mov r9, r1
- ldr r2, [r1]
- ldrb r1, [r0, 0x14]
- strh r1, [r2, 0x14]
- ldr r6, [r0]
- ldr r1, _080FB754 @ =gRegionMapLocations
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- adds r5, r0, r1
- ldrb r4, [r5, 0x2]
- ldr r0, [r6]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _080FB6C6
- movs r1, 0x1
-_080FB6C6:
- mov r2, r10
- movs r3, 0
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r8, r4
- bcc _080FB6E2
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
-_080FB6E2:
- ldrb r4, [r5, 0x3]
- ldr r0, [r6, 0x4]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _080FB6F6
- movs r1, 0x1
-_080FB6F6:
- mov r2, sp
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r7, r0, 16
- mov r2, r9
- cmp r7, r4
- bcc _080FB710
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
-_080FB710:
- ldr r0, [r2]
- adds r0, 0x7F
- movs r1, 0
- strb r1, [r0]
- ldr r2, [r2]
- ldr r3, _080FB754 @ =gRegionMapLocations
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0]
- add r0, r8
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r0, r7, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
- 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
-_080FB750: .4byte gUnknown_020388CC
-_080FB754: .4byte gRegionMapLocations
- thumb_func_end sub_80FB600
-
- thumb_func_start sub_80FB758
-sub_80FB758: @ 80FB758
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x58
- bls _080FB764
- b _080FB9A0
-_080FB764:
- lsls r0, 2
- ldr r1, _080FB770 @ =_080FB774
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FB770: .4byte _080FB774
- .align 2, 0
-_080FB774:
- .4byte _080FB8DC
- .4byte _080FB8E4
- .4byte _080FB8EA
- .4byte _080FB8F4
- .4byte _080FB8FC
- .4byte _080FB904
- .4byte _080FB90C
- .4byte _080FB914
- .4byte _080FB91C
- .4byte _080FB924
- .4byte _080FB92C
- .4byte _080FB934
- .4byte _080FB93C
- .4byte _080FB944
- .4byte _080FB94C
- .4byte _080FB954
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB96C
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB988
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB8D8
-_080FB8D8:
- movs r0, 0
- b _080FB9A2
-_080FB8DC:
- ldr r0, _080FB8E0 @ =0x0000080f
- b _080FB956
- .align 2, 0
-_080FB8E0: .4byte 0x0000080f
-_080FB8E4:
- movs r0, 0x81
- lsls r0, 4
- b _080FB956
-_080FB8EA:
- ldr r0, _080FB8F0 @ =0x00000811
- b _080FB956
- .align 2, 0
-_080FB8F0: .4byte 0x00000811
-_080FB8F4:
- ldr r0, _080FB8F8 @ =0x00000812
- b _080FB956
- .align 2, 0
-_080FB8F8: .4byte 0x00000812
-_080FB8FC:
- ldr r0, _080FB900 @ =0x00000813
- b _080FB956
- .align 2, 0
-_080FB900: .4byte 0x00000813
-_080FB904:
- ldr r0, _080FB908 @ =0x00000814
- b _080FB956
- .align 2, 0
-_080FB908: .4byte 0x00000814
-_080FB90C:
- ldr r0, _080FB910 @ =0x00000815
- b _080FB956
- .align 2, 0
-_080FB910: .4byte 0x00000815
-_080FB914:
- ldr r0, _080FB918 @ =0x00000816
- b _080FB956
- .align 2, 0
-_080FB918: .4byte 0x00000816
-_080FB91C:
- ldr r0, _080FB920 @ =0x00000817
- b _080FB956
- .align 2, 0
-_080FB920: .4byte 0x00000817
-_080FB924:
- ldr r0, _080FB928 @ =0x00000818
- b _080FB956
- .align 2, 0
-_080FB928: .4byte 0x00000818
-_080FB92C:
- ldr r0, _080FB930 @ =0x00000819
- b _080FB956
- .align 2, 0
-_080FB930: .4byte 0x00000819
-_080FB934:
- ldr r0, _080FB938 @ =0x0000081a
- b _080FB956
- .align 2, 0
-_080FB938: .4byte 0x0000081a
-_080FB93C:
- ldr r0, _080FB940 @ =0x0000081b
- b _080FB956
- .align 2, 0
-_080FB940: .4byte 0x0000081b
-_080FB944:
- ldr r0, _080FB948 @ =0x0000081c
- b _080FB956
- .align 2, 0
-_080FB948: .4byte 0x0000081c
-_080FB94C:
- ldr r0, _080FB950 @ =0x0000081d
- b _080FB956
- .align 2, 0
-_080FB950: .4byte 0x0000081d
-_080FB954:
- ldr r0, _080FB968 @ =0x0000081e
-_080FB956:
- bl FlagGet
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _080FB964
- movs r1, 0x2
-_080FB964:
- adds r0, r1, 0
- b _080FB9A2
- .align 2, 0
-_080FB968: .4byte 0x0000081e
-_080FB96C:
- ldr r0, _080FB984 @ =0x00000848
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- movs r1, 0x4
- ands r0, r1
- b _080FB9A2
- .align 2, 0
-_080FB984: .4byte 0x00000848
-_080FB988:
- ldr r0, _080FB99C @ =0x00000849
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _080FB9A2
- .align 2, 0
-_080FB99C: .4byte 0x00000849
-_080FB9A0:
- movs r0, 0x1
-_080FB9A2:
- pop {r1}
- bx r1
- thumb_func_end sub_80FB758
-
- thumb_func_start GetRegionMapSectionAt_
-GetRegionMapSectionAt_: @ 80FB9A8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end GetRegionMapSectionAt_
-
- thumb_func_start sub_80FB9C0
-sub_80FB9C0: @ 80FB9C0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r0, _080FB9E8 @ =gUnknown_083E7684
- ldrh r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x58
- beq _080FB9FC
- adds r5, r4, 0
- adds r6, r4, 0x2
-_080FB9D6:
- lsls r1, r2, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- cmp r0, r3
- bne _080FB9EC
- adds r0, r1, r6
- ldrh r0, [r0]
- b _080FB9FE
- .align 2, 0
-_080FB9E8: .4byte gUnknown_083E7684
-_080FB9EC:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r0, r2, 2
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x58
- bne _080FB9D6
-_080FB9FC:
- adds r0, r3, 0
-_080FB9FE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80FB9C0
-
- thumb_func_start sub_80FBA04
-sub_80FBA04: @ 80FBA04
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_80FB9C0
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80FBA04
-
- thumb_func_start sub_80FBA18
-sub_80FBA18: @ 80FBA18
- push {r4-r6,lr}
- ldr r0, _080FBA2C @ =gUnknown_020388CC
- ldr r1, [r0]
- ldrh r0, [r1, 0x14]
- cmp r0, 0x58
- bne _080FBA30
- movs r0, 0
- strb r0, [r1, 0x17]
- b _080FBA96
- .align 2, 0
-_080FBA2C: .4byte gUnknown_020388CC
-_080FBA30:
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FBA40
- adds r0, r1, 0
- adds r0, 0x54
- b _080FBA44
-_080FBA40:
- adds r0, r1, 0
- adds r0, 0x64
-_080FBA44:
- ldrh r4, [r0]
- adds r0, 0x2
- ldrh r5, [r0]
- movs r6, 0
- b _080FBA70
-_080FBA4E:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetRegionMapSectionAt
- ldr r1, _080FBA8C @ =gUnknown_020388CC
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1, 0x14]
- cmp r0, r1
- bne _080FBA70
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FBA70:
- cmp r4, 0x1
- bhi _080FBA4E
- adds r0, r5, 0
- bl sub_80FBAA0
- lsls r0, 24
- cmp r0, 0
- beq _080FBA90
- subs r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- movs r4, 0x1D
- b _080FBA70
- .align 2, 0
-_080FBA8C: .4byte gUnknown_020388CC
-_080FBA90:
- ldr r0, _080FBA9C @ =gUnknown_020388CC
- ldr r0, [r0]
- strb r6, [r0, 0x17]
-_080FBA96:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBA9C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBA18
-
- thumb_func_start sub_80FBAA0
-sub_80FBAA0: @ 80FBAA0
- push {r4,r5,lr}
- lsls r0, 16
- ldr r1, _080FBAB4 @ =0xffff0000
- adds r0, r1
- lsrs r5, r0, 16
- ldr r0, _080FBAB8 @ =0x0000ffff
- cmp r5, r0
- bne _080FBAC0
- b _080FBAE2
- .align 2, 0
-_080FBAB4: .4byte 0xffff0000
-_080FBAB8: .4byte 0x0000ffff
-_080FBABC:
- movs r0, 0x1
- b _080FBAE4
-_080FBAC0:
- movs r4, 0x1
-_080FBAC2:
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetRegionMapSectionAt
- ldr r1, _080FBAEC @ =gUnknown_020388CC
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1, 0x14]
- cmp r0, r1
- beq _080FBABC
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1C
- bls _080FBAC2
-_080FBAE2:
- movs r0, 0
-_080FBAE4:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FBAEC: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBAA0
-
- thumb_func_start sub_80FBAF0
-sub_80FBAF0: @ 80FBAF0
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, _080FBB34 @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x7A
- movs r0, 0
- ldrsb r0, [r3, r0]
- cmp r0, 0
- beq _080FBB2E
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r4, [r2, 0x20]
- adds r0, r4
- strh r0, [r2, 0x20]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r1, [r2, 0x22]
- adds r0, r1
- strh r0, [r2, 0x22]
- ldrb r0, [r3]
- subs r0, 0x1
- strb r0, [r3]
-_080FBB2E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBB34: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBAF0
-
- thumb_func_start nullsub_66
-nullsub_66: @ 80FBB38
- bx lr
- thumb_func_end nullsub_66
-
- thumb_func_start sub_80FBB3C
-sub_80FBB3C: @ 80FBB3C
- push {r4-r7,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, _080FBBAC @ =gUnknown_083E76E8
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [sp, 0x20]
- str r2, [sp, 0x24]
- mov r2, sp
- ldr r1, _080FBBB0 @ =gSpriteTemplate_83E76F0
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- lsrs r3, r0, 16
- add r2, sp, 0x18
- ldrh r1, [r2, 0x4]
- orrs r1, r0
- str r1, [r2, 0x4]
- mov r0, sp
- strh r3, [r0]
- ldr r0, _080FBBB4 @ =gUnknown_020388CC
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x58
- strh r3, [r0]
- ldr r5, _080FBBB8 @ =0xffff0000
- add r1, sp, 0x20
- ldr r0, [r1, 0x4]
- ands r0, r5
- orrs r0, r6
- str r0, [r1, 0x4]
- mov r0, sp
- strh r6, [r0, 0x2]
- adds r3, r4, 0
- adds r0, r3, 0
- adds r0, 0x5A
- strh r6, [r0]
- adds r0, 0x1E
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- bne _080FBBC0
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r3, r1
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- subs r1, 0x80
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, _080FBBBC @ =sub_80FBAF0
- b _080FBBD6
- .align 2, 0
-_080FBBAC: .4byte gUnknown_083E76E8
-_080FBBB0: .4byte gSpriteTemplate_83E76F0
-_080FBBB4: .4byte gUnknown_020388CC
-_080FBBB8: .4byte 0xffff0000
-_080FBBBC: .4byte sub_80FBAF0
-_080FBBC0:
- movs r3, 0xA0
- lsls r3, 2
- adds r0, r4, r3
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, _080FBC38 @ =nullsub_66
-_080FBBD6:
- str r0, [sp, 0x14]
- adds r0, r2, 0
- bl LoadSpriteSheet
- adds r0, r7, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0x38
- movs r2, 0x48
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080FBC90
- ldr r4, _080FBC3C @ =gUnknown_020388CC
- ldr r2, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080FBC40 @ =gSprites
- adds r3, r0, r1
- str r3, [r2, 0x1C]
- adds r2, 0x78
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _080FBC44
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r2, [r4]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x22]
- subs r0, 0x8
- strh r0, [r1, 0x22]
- ldr r0, [r2, 0x1C]
- movs r1, 0x1
- bl StartSpriteAnim
- b _080FBC6C
- .align 2, 0
-_080FBC38: .4byte nullsub_66
-_080FBC3C: .4byte gUnknown_020388CC
-_080FBC40: .4byte gSprites
-_080FBC44:
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x20]
- ldr r2, [r1, 0x1C]
- adds r1, 0x56
- ldrh r0, [r1]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x22]
-_080FBC6C:
- ldr r4, _080FBC98 @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r1, [r0, 0x1C]
- movs r0, 0x2
- strh r0, [r1, 0x30]
- adds r0, r6, 0
- bl IndexOfSpritePaletteTag
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- lsls r0, 24
- lsrs r0, 20
- ldr r4, _080FBC9C @ =0x00000101
- adds r0, r4
- strh r0, [r2, 0x32]
- ldr r1, [r1, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
-_080FBC90:
- add sp, 0x28
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBC98: .4byte gUnknown_020388CC
-_080FBC9C: .4byte 0x00000101
- thumb_func_end sub_80FBB3C
-
- thumb_func_start sub_80FBCA0
-sub_80FBCA0: @ 80FBCA0
- push {r4,lr}
- ldr r4, _080FBCCC @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _080FBCC4
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080FBCC4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBCCC: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBCA0
-
- thumb_func_start unref_sub_80FBCD0
-unref_sub_80FBCD0: @ 80FBCD0
- ldr r0, _080FBCDC @ =gUnknown_020388CC
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
- bx lr
- .align 2, 0
-_080FBCDC: .4byte gUnknown_020388CC
- thumb_func_end unref_sub_80FBCD0
-
- thumb_func_start unref_sub_80FBCE0
-unref_sub_80FBCE0: @ 80FBCE0
- ldr r0, _080FBCEC @ =gUnknown_020388CC
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x34]
- bx lr
- .align 2, 0
-_080FBCEC: .4byte gUnknown_020388CC
- thumb_func_end unref_sub_80FBCE0
-
- thumb_func_start sub_80FBCF0
-sub_80FBCF0: @ 80FBCF0
- push {r4,r5,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080FBD98 @ =gRegionMapBrendanIconTiles
- str r2, [sp, 0x18]
- movs r2, 0x80
- add r5, sp, 0x18
- lsrs r3, r0, 16
- orrs r0, r2
- str r0, [r5, 0x4]
- ldr r0, _080FBD9C @ =gRegionMapBrendanIconPalette
- str r0, [sp, 0x20]
- ldr r2, _080FBDA0 @ =0xffff0000
- add r4, sp, 0x20
- ldr r0, [r4, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- movs r2, 0
- strh r3, [r0]
- strh r1, [r0, 0x2]
- ldr r0, _080FBDA4 @ =gOamData_083E7708
- str r0, [sp, 0x4]
- ldr r0, _080FBDA8 @ =gSpriteAnimTable_083E7718
- str r0, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r0, _080FBDAC @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, _080FBDB0 @ =SpriteCallbackDummy
- str r0, [sp, 0x14]
- ldr r0, _080FBDB4 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _080FBD42
- ldr r0, _080FBDB8 @ =gRegionMapMayIconTiles
- str r0, [sp, 0x18]
- ldr r0, _080FBDBC @ =gRegionMapMayIconPalette
- str r0, [sp, 0x20]
-_080FBD42:
- adds r0, r5, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080FBDC0 @ =gUnknown_020388CC
- ldr r2, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080FBDC4 @ =gSprites
- adds r1, r0
- str r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FBDCC
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, _080FBDC8 @ =sub_80FBF34
- b _080FBDEA
- .align 2, 0
-_080FBD98: .4byte gRegionMapBrendanIconTiles
-_080FBD9C: .4byte gRegionMapBrendanIconPalette
-_080FBDA0: .4byte 0xffff0000
-_080FBDA4: .4byte gOamData_083E7708
-_080FBDA8: .4byte gSpriteAnimTable_083E7718
-_080FBDAC: .4byte gDummySpriteAffineAnimTable
-_080FBDB0: .4byte SpriteCallbackDummy
-_080FBDB4: .4byte gSaveBlock2
-_080FBDB8: .4byte gRegionMapMayIconTiles
-_080FBDBC: .4byte gRegionMapMayIconPalette
-_080FBDC0: .4byte gUnknown_020388CC
-_080FBDC4: .4byte gSprites
-_080FBDC8: .4byte sub_80FBF34
-_080FBDCC:
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, _080FBDF4 @ =sub_80FBEA4
-_080FBDEA:
- str r0, [r1, 0x1C]
- add sp, 0x28
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBDF4: .4byte sub_80FBEA4
- thumb_func_end sub_80FBCF0
-
- thumb_func_start sub_80FBDF8
-sub_80FBDF8: @ 80FBDF8
- push {lr}
- ldr r3, _080FBE1C @ =gUnknown_020388CC
- ldr r0, [r3]
- ldr r2, [r0, 0x20]
- cmp r2, 0
- beq _080FBE16
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- ldr r1, [r0, 0x20]
- ldr r0, _080FBE20 @ =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_080FBE16:
- pop {r0}
- bx r0
- .align 2, 0
-_080FBE1C: .4byte gUnknown_020388CC
-_080FBE20: .4byte SpriteCallbackDummy
- thumb_func_end sub_80FBDF8
-
- thumb_func_start sub_80FBE24
-sub_80FBE24: @ 80FBE24
- push {lr}
- ldr r0, _080FBE5C @ =gUnknown_020388CC
- ldr r3, [r0]
- ldr r1, [r3, 0x20]
- cmp r1, 0
- beq _080FBE9A
- adds r0, r3, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FBE64
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r3, 0x20]
- ldr r0, _080FBE60 @ =sub_80FBEA4
- b _080FBE8C
- .align 2, 0
-_080FBE5C: .4byte gUnknown_020388CC
-_080FBE60: .4byte sub_80FBEA4
-_080FBE64:
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- movs r2, 0
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x24]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x26]
- ldr r1, [r3, 0x20]
- ldr r0, _080FBEA0 @ =sub_80FBF34
-_080FBE8C:
- str r0, [r1, 0x1C]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_080FBE9A:
- pop {r0}
- bx r0
- .align 2, 0
-_080FBEA0: .4byte sub_80FBF34
- thumb_func_end sub_80FBE24
-
- thumb_func_start sub_80FBEA4
-sub_80FBEA4: @ 80FBEA4
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, _080FBF08 @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r4, 0
- ldrsh r2, [r0, r4]
- lsls r2, 1
- negs r2, r2
- strh r2, [r3, 0x24]
- adds r1, 0x5E
- movs r4, 0
- ldrsh r0, [r1, r4]
- lsls r0, 1
- negs r0, r0
- strh r0, [r3, 0x26]
- ldrh r1, [r3, 0x22]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x20]
- adds r1, r2
- adds r2, r3, 0
- adds r2, 0x28
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- adds r2, r1
- strh r2, [r3, 0x30]
- adds r0, 0x8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB0
- bhi _080FBF04
- lsls r0, r2, 16
- asrs r2, r0, 16
- movs r0, 0x8
- negs r0, r0
- cmp r2, r0
- blt _080FBF04
- cmp r2, 0xF8
- ble _080FBF0C
-_080FBF04:
- movs r0, 0
- b _080FBF0E
- .align 2, 0
-_080FBF08: .4byte gUnknown_020388CC
-_080FBF0C:
- movs r0, 0x1
-_080FBF0E:
- strh r0, [r3, 0x32]
- movs r1, 0x32
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _080FBF20
- adds r0, r3, 0
- bl sub_80FBF40
- b _080FBF2C
-_080FBF20:
- adds r0, r3, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080FBF2C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FBEA4
-
- thumb_func_start sub_80FBF34
-sub_80FBF34: @ 80FBF34
- push {lr}
- bl sub_80FBF40
- pop {r0}
- bx r0
- thumb_func_end sub_80FBF34
-
- thumb_func_start sub_80FBF40
-sub_80FBF40: @ 80FBF40
- push {lr}
- adds r2, r0, 0
- ldr r0, _080FBF80 @ =gUnknown_020388CC
- ldr r0, [r0]
- adds r0, 0x7E
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FBF84
- ldrh r0, [r2, 0x3C]
- adds r0, 0x1
- strh r0, [r2, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080FBF90
- movs r0, 0
- strh r0, [r2, 0x3C]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080FBF90
- .align 2, 0
-_080FBF80: .4byte gUnknown_020388CC
-_080FBF84:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080FBF90:
- pop {r0}
- bx r0
- thumb_func_end sub_80FBF40
-
- thumb_func_start sub_80FBF94
-sub_80FBF94: @ 80FBF94
- push {lr}
- ldr r0, _080FBFB0 @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x7F
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FBFAA
- adds r1, 0x7E
- movs r0, 0x1
- strb r0, [r1]
-_080FBFAA:
- pop {r0}
- bx r0
- .align 2, 0
-_080FBFB0: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBF94
-
- thumb_func_start sub_80FBFB4
-sub_80FBFB4: @ 80FBFB4
- push {lr}
- adds r3, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- cmp r1, 0x56
- bne _080FBFCA
- bl GetSecretBaseMapName
- b _080FBFF2
-_080FBFCA:
- cmp r1, 0x57
- bhi _080FBFE4
- ldr r0, _080FBFE0 @ =gRegionMapLocations
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r3, 0
- bl StringCopy
- b _080FBFF2
- .align 2, 0
-_080FBFE0: .4byte gRegionMapLocations
-_080FBFE4:
- cmp r2, 0
- bne _080FBFEA
- movs r2, 0x12
-_080FBFEA:
- adds r0, r3, 0
- movs r1, 0
- bl StringFill
-_080FBFF2:
- pop {r1}
- bx r1
- thumb_func_end sub_80FBFB4
-
- thumb_func_start CopyMapName
-CopyMapName: @ 80FBFF8
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x56
- beq _080FC014
- cmp r1, 0x57
- bne _080FC020
- ldr r1, _080FC010 @ =gOtherText_Ferry
- bl StringCopy
- b _080FC026
- .align 2, 0
-_080FC010: .4byte gOtherText_Ferry
-_080FC014:
- ldr r1, _080FC01C @ =gOtherText_SecretBase
- bl StringCopy
- b _080FC026
- .align 2, 0
-_080FC01C: .4byte gOtherText_SecretBase
-_080FC020:
- movs r2, 0
- bl sub_80FBFB4
-_080FC026:
- pop {r1}
- bx r1
- thumb_func_end CopyMapName
-
- thumb_func_start CopyLocationName
-CopyLocationName: @ 80FC02C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x42
- beq _080FC03C
- bl CopyMapName
- b _080FC042
-_080FC03C:
- ldr r1, _080FC048 @ =gOtherText_Hideout
- bl StringCopy
-_080FC042:
- pop {r1}
- bx r1
- .align 2, 0
-_080FC048: .4byte gOtherText_Hideout
- thumb_func_end CopyLocationName
-
- thumb_func_start sub_80FC04C
-sub_80FC04C: @ 80FC04C
- push {r4,r5,lr}
- ldr r5, [sp, 0xC]
- lsls r0, 16
- ldr r4, _080FC070 @ =gRegionMapLocations
- lsrs r0, 13
- adds r0, r4
- ldrb r4, [r0]
- strh r4, [r1]
- ldrb r1, [r0, 0x1]
- strh r1, [r2]
- ldrb r1, [r0, 0x2]
- strh r1, [r3]
- ldrb r0, [r0, 0x3]
- strh r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC070: .4byte gRegionMapLocations
- thumb_func_end sub_80FC04C
-
- thumb_func_start sub_80FC074
-sub_80FC074: @ 80FC074
- push {r4,lr}
- ldr r0, _080FC090 @ =gMain
- ldr r1, _080FC094 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x9
- bls _080FC084
- b _080FC1F2
-_080FC084:
- lsls r0, 2
- ldr r1, _080FC098 @ =_080FC09C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FC090: .4byte gMain
-_080FC094: .4byte 0x0000043c
-_080FC098: .4byte _080FC09C
- .align 2, 0
-_080FC09C:
- .4byte _080FC0C4
- .4byte _080FC104
- .4byte _080FC110
- .4byte _080FC120
- .4byte _080FC15C
- .4byte _080FC170
- .4byte _080FC184
- .4byte _080FC1A4
- .4byte _080FC1AA
- .4byte _080FC1C4
-_080FC0C4:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x10
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeSpriteTileRanges
- bl FreeAllSpritePalettes
- b _080FC1E6
-_080FC104:
- ldr r0, _080FC10C @ =gWindowConfig_81E7224
- bl SetUpWindowConfig
- b _080FC1E6
- .align 2, 0
-_080FC10C: .4byte gWindowConfig_81E7224
-_080FC110:
- ldr r0, _080FC11C @ =gWindowConfig_81E7224
- bl InitMenuWindow
- bl MenuZeroFillScreen
- b _080FC1E6
- .align 2, 0
-_080FC11C: .4byte gWindowConfig_81E7224
-_080FC120:
- ldr r4, _080FC158 @ =0x02000008
- adds r0, r4, 0
- movs r1, 0
- bl sub_80FA8EC
- movs r0, 0
- movs r1, 0
- bl sub_80FBB3C
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80FBCF0
- adds r1, r4, 0
- subs r1, 0x8
- ldrh r0, [r1, 0x1C]
- strh r0, [r1, 0x6]
- movs r2, 0xA4
- lsls r2, 4
- adds r4, r2
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xC
- bl StringFill
- bl sub_80FC254
- b _080FC1E6
- .align 2, 0
-_080FC158: .4byte 0x02000008
-_080FC15C:
- ldr r0, _080FC168 @ =gUnknown_083E773C
- ldr r1, _080FC16C @ =0x0600c000
- bl LZ77UnCompVram
- b _080FC1E6
- .align 2, 0
-_080FC168: .4byte gUnknown_083E773C
-_080FC16C: .4byte 0x0600c000
-_080FC170:
- ldr r0, _080FC17C @ =gUnknown_083E7774
- ldr r1, _080FC180 @ =0x0600f000
- bl LZ77UnCompVram
- b _080FC1E6
- .align 2, 0
-_080FC17C: .4byte gUnknown_083E7774
-_080FC180: .4byte 0x0600f000
-_080FC184:
- ldr r0, _080FC19C @ =gUnknown_083E771C
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080FC1A0 @ =gOtherText_FlyToWhere
- movs r1, 0x1
- movs r2, 0x90
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- b _080FC1E6
- .align 2, 0
-_080FC19C: .4byte gUnknown_083E771C
-_080FC1A0: .4byte gOtherText_FlyToWhere
-_080FC1A4:
- bl sub_80FC31C
- b _080FC1E6
-_080FC1AA:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, _080FC1C0 @ =sub_80FC214
- bl SetVBlankCallback
- b _080FC1E6
- .align 2, 0
-_080FC1C0: .4byte sub_80FC214
-_080FC1C4:
- ldr r1, _080FC1F8 @ =REG_BLDCNT
- movs r0, 0
- strh r0, [r1]
- subs r1, 0x46
- ldr r2, _080FC1FC @ =0x00001e0d
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- ldr r2, _080FC200 @ =0x00001741
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _080FC204 @ =sub_80FC5B4
- bl sub_80FC244
- ldr r0, _080FC208 @ =sub_80FC228
- bl SetMainCallback2
-_080FC1E6:
- ldr r1, _080FC20C @ =gMain
- ldr r0, _080FC210 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080FC1F2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC1F8: .4byte REG_BLDCNT
-_080FC1FC: .4byte 0x00001e0d
-_080FC200: .4byte 0x00001741
-_080FC204: .4byte sub_80FC5B4
-_080FC208: .4byte sub_80FC228
-_080FC20C: .4byte gMain
-_080FC210: .4byte 0x0000043c
- thumb_func_end sub_80FC074
-
- thumb_func_start sub_80FC214
-sub_80FC214: @ 80FC214
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80FC214
-
- thumb_func_start sub_80FC228
-sub_80FC228: @ 80FC228
- push {lr}
- ldr r0, _080FC240 @ =0x02000000
- ldr r0, [r0]
- bl _call_via_r0
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r0}
- bx r0
- .align 2, 0
-_080FC240: .4byte 0x02000000
- thumb_func_end sub_80FC228
-
- thumb_func_start sub_80FC244
-sub_80FC244: @ 80FC244
- ldr r1, _080FC250 @ =0x02000000
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_080FC250: .4byte 0x02000000
- thumb_func_end sub_80FC244
-
- thumb_func_start sub_80FC254
-sub_80FC254: @ 80FC254
- push {r4,r5,lr}
- ldr r4, _080FC2AC @ =0x02000000
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x2
- beq _080FC262
- cmp r0, 0x4
- bne _080FC2EC
-_080FC262:
- movs r1, 0
- ldr r2, _080FC2B0 @ =gUnknown_083E79C0
- adds r5, r4, 0
-_080FC268:
- lsls r0, r1, 3
- adds r4, r0, r2
- ldrh r0, [r5, 0x1C]
- ldrh r3, [r4, 0x4]
- cmp r0, r3
- bne _080FC2B4
- ldrh r0, [r4, 0x6]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080FC2BE
- movs r0, 0x10
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- adds r0, r5, 0
- adds r0, 0x8
- movs r1, 0x11
- movs r2, 0xF
- bl MenuPrint
- ldrb r0, [r5, 0x1F]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x1D
- movs r2, 0x11
- bl MenuPrint_RightAligned
- b _080FC310
- .align 2, 0
-_080FC2AC: .4byte 0x02000000
-_080FC2B0: .4byte gUnknown_083E79C0
-_080FC2B4:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080FC268
-_080FC2BE:
- movs r0, 0
- cmp r0, 0
- bne _080FC310
- movs r0, 0x10
- movs r1, 0x10
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _080FC2E8 @ =0x02000008
- movs r1, 0x11
- movs r2, 0x11
- bl MenuPrint
- movs r0, 0x10
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0xF
- bl MenuZeroFillWindowRect
- b _080FC310
- .align 2, 0
-_080FC2E8: .4byte 0x02000008
-_080FC2EC:
- movs r0, 0x10
- movs r1, 0x10
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r1, _080FC318 @ =0x00000a48
- adds r0, r4, r1
- movs r1, 0x11
- movs r2, 0x11
- bl MenuPrint
- movs r0, 0x10
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0xF
- bl MenuZeroFillWindowRect
-_080FC310:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC318: .4byte 0x00000a48
- thumb_func_end sub_80FC254
-
- thumb_func_start sub_80FC31C
-sub_80FC31C: @ 80FC31C
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _080FC360 @ =gUnknown_083E784C
- ldr r4, _080FC364 @ =0x02000888
- adds r1, r4, 0
- bl LZ77UnCompWram
- str r4, [sp]
- ldr r1, _080FC368 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xE0
- lsls r1, 1
- orrs r0, r1
- ldr r1, _080FC36C @ =0x0000ffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 10
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldr r0, _080FC370 @ =gUnknown_083E79CC
- bl LoadSpritePalette
- bl sub_80FC374
- bl sub_80FC484
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC360: .4byte gUnknown_083E784C
-_080FC364: .4byte 0x02000888
-_080FC368: .4byte 0xffff0000
-_080FC36C: .4byte 0x0000ffff
-_080FC370: .4byte gUnknown_083E79CC
- thumb_func_end sub_80FC31C
-
- thumb_func_start sub_80FC374
-sub_80FC374: @ 80FC374
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r0, _080FC3D4 @ =0x0000080f
- str r0, [sp, 0xC]
- movs r1, 0
- mov r9, r1
- mov r2, sp
- adds r2, 0x6
- str r2, [sp, 0x14]
- mov r3, sp
- adds r3, 0xA
- str r3, [sp, 0x18]
- mov r0, sp
- adds r0, 0x8
- str r0, [sp, 0x10]
- add r1, sp, 0x4
- mov r10, r1
-_080FC39E:
- ldr r2, [sp, 0x18]
- str r2, [sp]
- mov r0, r9
- add r1, sp, 0x4
- mov r2, sp
- adds r2, 0x6
- ldr r3, [sp, 0x10]
- bl sub_80FC04C
- mov r3, r10
- ldrh r0, [r3]
- adds r0, 0x1
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r3]
- mov r1, sp
- ldrh r0, [r1, 0x6]
- adds r0, 0x2
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x6]
- ldr r2, [sp, 0x10]
- ldrh r0, [r2]
- cmp r0, 0x2
- bne _080FC3D8
- movs r7, 0x1
- b _080FC3E4
- .align 2, 0
-_080FC3D4: .4byte 0x0000080f
-_080FC3D8:
- ldr r3, [sp, 0x18]
- ldrh r0, [r3]
- movs r7, 0
- cmp r0, 0x2
- bne _080FC3E4
- movs r7, 0x2
-_080FC3E4:
- mov r0, r10
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldr r3, [sp, 0x14]
- movs r0, 0
- ldrsh r2, [r3, r0]
- ldr r0, _080FC430 @ =gSpriteTemplate_83E7A38
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _080FC458
- ldr r1, _080FC434 @ =gSprites
- mov r8, r1
- lsls r4, r5, 4
- adds r0, r4, r5
- lsls r6, r0, 2
- adds r2, r6, r1
- lsls r3, r7, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- ldr r0, [sp, 0xC]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080FC43C
- mov r0, r8
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, _080FC438 @ =sub_80FC55C
- str r1, [r0]
- b _080FC442
- .align 2, 0
-_080FC430: .4byte gSpriteTemplate_83E7A38
-_080FC434: .4byte gSprites
-_080FC438: .4byte sub_80FC55C
-_080FC43C:
- adds r0, r7, 0x3
- lsls r0, 16
- lsrs r7, r0, 16
-_080FC442:
- adds r4, r5
- lsls r4, 2
- ldr r0, _080FC480 @ =gSprites
- adds r4, r0
- lsls r1, r7, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- mov r2, r9
- strh r2, [r4, 0x2E]
-_080FC458:
- ldr r0, [sp, 0xC]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0xF
- bls _080FC39E
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC480: .4byte gSprites
- thumb_func_end sub_80FC374
-
- thumb_func_start sub_80FC484
-sub_80FC484: @ 80FC484
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r0, 0
- mov r8, r0
- ldr r6, _080FC54C @ =gUnknown_083E79D4
- ldrh r0, [r6, 0x2]
- cmp r0, 0x58
- beq _080FC53C
- mov r5, sp
- adds r5, 0x6
- add r7, sp, 0x4
- ldr r1, _080FC550 @ =gSprites
- mov r9, r1
- movs r0, 0x1C
- add r0, r9
- mov r10, r0
-_080FC4AC:
- mov r1, r8
- lsls r4, r1, 2
- adds r0, r4, r6
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080FC524
- adds r0, r6, 0x2
- adds r0, r4, r0
- ldrh r6, [r0]
- mov r0, sp
- adds r0, 0xA
- str r0, [sp]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- add r3, sp, 0x8
- bl sub_80FC04C
- ldrh r0, [r7]
- adds r0, 0x1
- lsls r0, 3
- strh r0, [r7]
- ldrh r0, [r5]
- adds r0, 0x2
- lsls r0, 3
- strh r0, [r5]
- movs r0, 0
- ldrsh r1, [r7, r0]
- movs r0, 0
- ldrsh r2, [r5, r0]
- ldr r0, _080FC554 @ =gSpriteTemplate_83E7A38
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080FC524
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- mov r1, r9
- adds r4, r2, r1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r4, 0x3]
- add r2, r10
- ldr r0, _080FC558 @ =sub_80FC55C
- str r0, [r2]
- adds r0, r4, 0
- movs r1, 0x6
- bl StartSpriteAnim
- strh r6, [r4, 0x2E]
-_080FC524:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r6, _080FC54C @ =gUnknown_083E79D4
- lsls r0, 2
- adds r1, r6, 0x2
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x58
- bne _080FC4AC
-_080FC53C:
- 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
-_080FC54C: .4byte gUnknown_083E79D4
-_080FC550: .4byte gSprites
-_080FC554: .4byte gSpriteTemplate_83E7A38
-_080FC558: .4byte sub_80FC55C
- thumb_func_end sub_80FC484
-
- thumb_func_start sub_80FC55C
-sub_80FC55C: @ 80FC55C
- push {lr}
- adds r2, r0, 0
- ldr r0, _080FC59C @ =0x02000000
- ldrh r1, [r0, 0x1C]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bne _080FC5A0
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080FC5AE
- movs r0, 0
- strh r0, [r2, 0x30]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsrs r1, r2, 2
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _080FC5AE
- .align 2, 0
-_080FC59C: .4byte 0x02000000
-_080FC5A0:
- movs r0, 0x10
- strh r0, [r2, 0x30]
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x15
- ands r0, r1
- strb r0, [r2]
-_080FC5AE:
- pop {r0}
- bx r0
- thumb_func_end sub_80FC55C
-
- thumb_func_start sub_80FC5B4
-sub_80FC5B4: @ 80FC5B4
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080FC5C8 @ =0x02000000
- ldrh r1, [r4, 0x4]
- cmp r1, 0
- beq _080FC5CC
- cmp r1, 0x1
- beq _080FC5E4
- b _080FC5F4
- .align 2, 0
-_080FC5C8: .4byte 0x02000000
-_080FC5CC:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- b _080FC5F4
-_080FC5E4:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080FC5F4
- ldr r0, _080FC5FC @ =sub_80FC600
- bl sub_80FC244
-_080FC5F4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC5FC: .4byte sub_80FC600
- thumb_func_end sub_80FC5B4
-
- thumb_func_start sub_80FC600
-sub_80FC600: @ 80FC600
- push {r4,lr}
- ldr r0, _080FC620 @ =0x02000000
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _080FC68A
- bl sub_80FAB60
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _080FC68A
- lsls r0, 2
- ldr r1, _080FC624 @ =_080FC628
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FC620: .4byte 0x02000000
-_080FC624: .4byte _080FC628
- .align 2, 0
-_080FC628:
- .4byte _080FC68A
- .4byte _080FC68A
- .4byte _080FC68A
- .4byte _080FC640
- .4byte _080FC646
- .4byte _080FC674
-_080FC640:
- bl sub_80FC254
- b _080FC68A
-_080FC646:
- ldr r4, _080FC668 @ =0x02000000
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x2
- beq _080FC652
- cmp r0, 0x4
- bne _080FC68A
-_080FC652:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r1, _080FC66C @ =0x00000a6e
- adds r0, r4, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _080FC670 @ =sub_80FC69C
- bl sub_80FC244
- b _080FC68A
- .align 2, 0
-_080FC668: .4byte 0x02000000
-_080FC66C: .4byte 0x00000a6e
-_080FC670: .4byte sub_80FC69C
-_080FC674:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r0, _080FC690 @ =0x02000000
- ldr r1, _080FC694 @ =0x00000a6e
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080FC698 @ =sub_80FC69C
- bl sub_80FC244
-_080FC68A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC690: .4byte 0x02000000
-_080FC694: .4byte 0x00000a6e
-_080FC698: .4byte sub_80FC69C
- thumb_func_end sub_80FC600
-
- thumb_func_start sub_80FC69C
-sub_80FC69C: @ 80FC69C
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080FC6B0 @ =0x02000000
- ldrh r1, [r4, 0x4]
- cmp r1, 0
- beq _080FC6B4
- cmp r1, 0x1
- beq _080FC6CC
- b _080FC792
- .align 2, 0
-_080FC6B0: .4byte 0x02000000
-_080FC6B4:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- b _080FC792
-_080FC6CC:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080FC792
- bl sub_80FAB10
- ldr r1, _080FC6F4 @ =0x00000a6e
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FC78C
- ldrh r0, [r4, 0x1C]
- cmp r0, 0xF
- beq _080FC724
- cmp r0, 0xF
- bgt _080FC6F8
- cmp r0, 0
- beq _080FC710
- b _080FC748
- .align 2, 0
-_080FC6F4: .4byte 0x00000a6e
-_080FC6F8:
- cmp r0, 0x3A
- beq _080FC708
- cmp r0, 0x49
- bne _080FC748
- movs r0, 0x16
- bl sub_8053538
- b _080FC786
-_080FC708:
- movs r0, 0x15
- bl sub_8053538
- b _080FC786
-_080FC710:
- ldr r0, _080FC720 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- movs r1, 0xD
- cmp r0, 0
- bne _080FC73A
- movs r1, 0xC
- b _080FC73A
- .align 2, 0
-_080FC720: .4byte gSaveBlock2
-_080FC724:
- ldr r0, _080FC744 @ =0x00000854
- bl FlagGet
- lsls r0, 24
- movs r1, 0xB
- cmp r0, 0
- beq _080FC73A
- ldrb r0, [r4, 0x1F]
- cmp r0, 0
- bne _080FC73A
- movs r1, 0x14
-_080FC73A:
- adds r0, r1, 0
- bl sub_8053538
- b _080FC786
- .align 2, 0
-_080FC744: .4byte 0x00000854
-_080FC748:
- ldr r3, _080FC764 @ =gUnknown_083E7920
- ldr r0, _080FC768 @ =0x02000000
- ldrh r1, [r0, 0x1C]
- lsls r0, r1, 1
- adds r2, r0, r1
- adds r0, r3, 0x2
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080FC76C
- bl sub_8053538
- b _080FC786
- .align 2, 0
-_080FC764: .4byte gUnknown_083E7920
-_080FC768: .4byte 0x02000000
-_080FC76C:
- adds r0, r2, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- bl warp1_set_2
-_080FC786:
- bl sub_80865BC
- b _080FC792
-_080FC78C:
- ldr r0, _080FC79C @ =sub_808AD58
- bl SetMainCallback2
-_080FC792:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC79C: .4byte sub_808AD58
- thumb_func_end sub_80FC69C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unknown_task.s b/asm/unknown_task.s
deleted file mode 100644
index 39f1497ef..000000000
--- a/asm/unknown_task.s
+++ /dev/null
@@ -1,645 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start remove_some_task
-remove_some_task: @ 8089578
- push {r4,lr}
- ldr r4, _080895A8 @ =gUnknown_03004DC0
- movs r0, 0
- strb r0, [r4, 0x15]
- ldr r1, _080895AC @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _080895B0 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _080895B4 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldrb r0, [r4, 0x18]
- cmp r0, 0xFF
- beq _080895A2
- bl DestroyTask
- movs r0, 0xFF
- strb r0, [r4, 0x18]
-_080895A2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080895A8: .4byte gUnknown_03004DC0
-_080895AC: .4byte 0x040000b0
-_080895B0: .4byte 0x0000c5ff
-_080895B4: .4byte 0x00007fff
- thumb_func_end remove_some_task
-
- thumb_func_start dp12_8087EA4
-dp12_8087EA4: @ 80895B8
- push {r4,lr}
- sub sp, 0x4
- mov r0, sp
- movs r4, 0
- strh r4, [r0]
- ldr r1, _080895EC @ =gUnknown_03004DE0
- ldr r2, _080895F0 @ =0x01000780
- bl CpuSet
- ldr r0, _080895F4 @ =gUnknown_03004DC0
- movs r1, 0
- str r1, [r0]
- str r1, [r0, 0x4]
- str r1, [r0, 0x8]
- str r1, [r0, 0xC]
- strb r4, [r0, 0x14]
- strb r4, [r0, 0x15]
- strb r4, [r0, 0x16]
- strb r4, [r0, 0x17]
- movs r1, 0xFF
- strb r1, [r0, 0x18]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080895EC: .4byte gUnknown_03004DE0
-_080895F0: .4byte 0x01000780
-_080895F4: .4byte gUnknown_03004DC0
- thumb_func_end dp12_8087EA4
-
- thumb_func_start sub_80895F8
-sub_80895F8: @ 80895F8
- push {lr}
- sub sp, 0xC
- str r0, [sp]
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- ldr r0, _0808961C @ =0xa2600001
- cmp r1, r0
- bne _0808962C
- ldr r0, _08089620 @ =gUnknown_03004DC0
- ldr r1, _08089624 @ =gUnknown_03004DE2
- str r1, [r0]
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- str r1, [r0, 0x4]
- ldr r1, _08089628 @ =sub_80896F4
- b _0808963C
- .align 2, 0
-_0808961C: .4byte 0xa2600001
-_08089620: .4byte gUnknown_03004DC0
-_08089624: .4byte gUnknown_03004DE2
-_08089628: .4byte sub_80896F4
-_0808962C:
- ldr r0, _0808965C @ =gUnknown_03004DC0
- ldr r1, _08089660 @ =gUnknown_03004DE4
- str r1, [r0]
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- str r1, [r0, 0x4]
- ldr r1, _08089664 @ =sub_8089714
-_0808963C:
- str r1, [r0, 0x10]
- adds r1, r0, 0
- ldr r0, [sp, 0x4]
- str r0, [r1, 0xC]
- ldr r0, [sp]
- str r0, [r1, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x8]
- strb r0, [r1, 0x15]
- mov r0, sp
- ldrb r0, [r0, 0x9]
- strb r0, [r1, 0x16]
- strb r0, [r1, 0x17]
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_0808965C: .4byte gUnknown_03004DC0
-_08089660: .4byte gUnknown_03004DE4
-_08089664: .4byte sub_8089714
- thumb_func_end sub_80895F8
-
- thumb_func_start sub_8089668
-sub_8089668: @ 8089668
- push {r4,lr}
- ldr r4, _08089698 @ =gUnknown_03004DC0
- ldrb r0, [r4, 0x15]
- cmp r0, 0
- beq _080896E2
- cmp r0, 0x3
- bne _080896AC
- movs r0, 0
- strb r0, [r4, 0x15]
- ldr r1, _0808969C @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _080896A0 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _080896A4 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldr r1, _080896A8 @ =gUnknown_0202FFA4
- movs r0, 0x1
- strb r0, [r1]
- b _080896E2
- .align 2, 0
-_08089698: .4byte gUnknown_03004DC0
-_0808969C: .4byte 0x040000b0
-_080896A0: .4byte 0x0000c5ff
-_080896A4: .4byte 0x00007fff
-_080896A8: .4byte gUnknown_0202FFA4
-_080896AC:
- ldr r1, _080896E8 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _080896EC @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _080896F0 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldrb r0, [r4, 0x14]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- ldr r0, [r4, 0x8]
- str r0, [r1, 0x4]
- ldr r0, [r4, 0xC]
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r0, [r4, 0x10]
- bl _call_via_r0
- ldrb r0, [r4, 0x14]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4, 0x14]
-_080896E2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080896E8: .4byte 0x040000b0
-_080896EC: .4byte 0x0000c5ff
-_080896F0: .4byte 0x00007fff
- thumb_func_end sub_8089668
-
- thumb_func_start sub_80896F4
-sub_80896F4: @ 80896F4
- ldr r0, _0808970C @ =gUnknown_03004DC0
- ldr r2, [r0, 0x8]
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _08089710 @ =gUnknown_03004DE0
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- bx lr
- .align 2, 0
-_0808970C: .4byte gUnknown_03004DC0
-_08089710: .4byte gUnknown_03004DE0
- thumb_func_end sub_80896F4
-
- thumb_func_start sub_8089714
-sub_8089714: @ 8089714
- ldr r0, _0808972C @ =gUnknown_03004DC0
- ldr r2, [r0, 0x8]
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _08089730 @ =gUnknown_03004DE0
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- bx lr
- .align 2, 0
-_0808972C: .4byte gUnknown_03004DC0
-_08089730: .4byte gUnknown_03004DE0
- thumb_func_end sub_8089714
-
- thumb_func_start task00_for_dp12
-task00_for_dp12: @ 8089734
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- movs r6, 0
- ldr r0, _0808975C @ =gUnknown_0202FFA4
- ldrb r0, [r0]
- cmp r0, 0
- beq _08089764
- mov r0, r12
- bl DestroyTask
- ldr r1, _08089760 @ =gUnknown_03004DC0
- movs r0, 0xFF
- strb r0, [r1, 0x18]
- b _080898E4
- .align 2, 0
-_0808975C: .4byte gUnknown_0202FFA4
-_08089760: .4byte gUnknown_03004DC0
-_08089764:
- ldr r1, _08089790 @ =gTasks
- mov r0, r12
- lsls r2, r0, 2
- adds r0, r2, r0
- lsls r0, 3
- adds r3, r0, r1
- movs r4, 0x16
- ldrsh r0, [r3, r4]
- mov r10, r1
- mov r9, r2
- cmp r0, 0
- beq _08089810
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- cmp r0, 0xE
- bhi _08089810
- lsls r0, 2
- ldr r1, _08089794 @ =_08089798
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08089790: .4byte gTasks
-_08089794: .4byte _08089798
- .align 2, 0
-_08089798:
- .4byte _080897D4
- .4byte _08089810
- .4byte _080897DC
- .4byte _08089810
- .4byte _080897E4
- .4byte _08089810
- .4byte _080897EC
- .4byte _08089810
- .4byte _080897F4
- .4byte _08089810
- .4byte _080897FC
- .4byte _08089810
- .4byte _08089804
- .4byte _08089810
- .4byte _0808980C
-_080897D4:
- ldr r0, _080897D8 @ =gUnknown_030042A4
- b _0808980E
- .align 2, 0
-_080897D8: .4byte gUnknown_030042A4
-_080897DC:
- ldr r0, _080897E0 @ =gUnknown_030042A0
- b _0808980E
- .align 2, 0
-_080897E0: .4byte gUnknown_030042A0
-_080897E4:
- ldr r0, _080897E8 @ =gUnknown_030042C0
- b _0808980E
- .align 2, 0
-_080897E8: .4byte gUnknown_030042C0
-_080897EC:
- ldr r0, _080897F0 @ =gUnknown_030041B4
- b _0808980E
- .align 2, 0
-_080897F0: .4byte gUnknown_030041B4
-_080897F4:
- ldr r0, _080897F8 @ =gUnknown_03004288
- b _0808980E
- .align 2, 0
-_080897F8: .4byte gUnknown_03004288
-_080897FC:
- ldr r0, _08089800 @ =gUnknown_03004280
- b _0808980E
- .align 2, 0
-_08089800: .4byte gUnknown_03004280
-_08089804:
- ldr r0, _08089808 @ =gUnknown_030041B0
- b _0808980E
- .align 2, 0
-_08089808: .4byte gUnknown_030041B0
-_0808980C:
- ldr r0, _08089870 @ =gUnknown_030041B8
-_0808980E:
- ldrh r6, [r0]
-_08089810:
- mov r0, r9
- add r0, r12
- lsls r0, 3
- mov r2, r10
- adds r1, r0, r2
- ldrh r2, [r1, 0x10]
- movs r3, 0x10
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0808987C
- subs r0, r2, 0x1
- strh r0, [r1, 0x10]
- movs r4, 0xE
- ldrsh r0, [r1, r4]
- movs r3, 0xA0
- lsls r3, 1
- adds r2, r0, r3
- movs r4, 0x8
- ldrsh r3, [r1, r4]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r3, r0
- bge _080898E4
- ldr r5, _08089874 @ =gUnknown_03004DE0
- ldr r0, _08089878 @ =gUnknown_03004DC0
- mov r8, r0
- adds r7, r1, 0
- lsls r0, r2, 1
- adds r4, r0, r5
-_0808984A:
- lsls r2, r3, 1
- mov r0, r8
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r5
- ldrh r0, [r4]
- adds r0, r6
- strh r0, [r2]
- adds r4, 0x2
- adds r3, 0x1
- movs r1, 0xA
- ldrsh r0, [r7, r1]
- cmp r3, r0
- blt _0808984A
- b _080898E4
- .align 2, 0
-_08089870: .4byte gUnknown_030041B8
-_08089874: .4byte gUnknown_03004DE0
-_08089878: .4byte gUnknown_03004DC0
-_0808987C:
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x10]
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- movs r3, 0xA0
- lsls r3, 1
- adds r2, r0, r3
- movs r4, 0x8
- ldrsh r3, [r1, r4]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r3, r0
- bge _080898C4
- ldr r5, _080898F4 @ =gUnknown_03004DE0
- adds r7, r1, 0
- lsls r0, r2, 1
- adds r4, r0, r5
- ldr r0, _080898F8 @ =gUnknown_03004DC0
- mov r8, r0
-_080898A2:
- lsls r2, r3, 1
- mov r0, r8
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r5
- ldrh r0, [r4]
- adds r0, r6
- strh r0, [r2]
- adds r4, 0x2
- adds r3, 0x1
- movs r1, 0xA
- ldrsh r0, [r7, r1]
- cmp r3, r0
- blt _080898A2
-_080898C4:
- mov r0, r9
- add r0, r12
- lsls r0, 3
- mov r3, r10
- adds r2, r0, r3
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bne _080898E4
- movs r0, 0
- strh r0, [r2, 0xE]
-_080898E4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080898F4: .4byte gUnknown_03004DE0
-_080898F8: .4byte gUnknown_03004DC0
- thumb_func_end task00_for_dp12
-
- thumb_func_start sub_80898FC
-sub_80898FC: @ 80898FC
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- movs r1, 0
- movs r2, 0
- ldr r0, _08089940 @ =gSineTable
- mov r12, r0
-_08089910:
- lsls r0, r1, 1
- adds r3, r0, r6
- lsls r0, r2, 1
- add r0, r12
- movs r7, 0
- ldrsh r0, [r0, r7]
- muls r0, r4
- cmp r0, 0
- bge _08089924
- adds r0, 0xFF
-_08089924:
- asrs r0, 8
- strh r0, [r3]
- adds r0, r2, r5
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xFF
- bls _08089910
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08089940: .4byte gSineTable
- thumb_func_end sub_80898FC
-
- thumb_func_start sub_8089944
-sub_8089944: @ 8089944
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- adds r5, r0, 0
- str r1, [sp, 0x10]
- ldr r0, [sp, 0x40]
- mov r8, r0
- ldr r1, [sp, 0x44]
- mov r9, r1
- ldr r0, [sp, 0x48]
- mov r10, r0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, [sp, 0x10]
- lsls r1, 24
- str r1, [sp, 0x14]
- lsrs r0, r1, 24
- str r0, [sp, 0xC]
- lsls r1, r2, 24
- lsrs r1, 24
- str r1, [sp, 0x18]
- lsls r2, r3, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r3, r9
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- bl dp12_8087EA4
- ldr r0, _08089A50 @ =REG_BG0HOFS
- add r0, r9
- str r0, [sp]
- ldr r0, _08089A54 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl sub_80895F8
- ldr r0, _08089A58 @ =task00_for_dp12
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08089A5C @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- strh r5, [r4, 0x8]
- mov r3, sp
- ldrh r3, [r3, 0xC]
- strh r3, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- ldr r1, [sp, 0x18]
- bl __divsi3
- strh r0, [r4, 0xC]
- movs r0, 0
- strh r0, [r4, 0xE]
- mov r1, r8
- strh r1, [r4, 0x10]
- strh r1, [r4, 0x12]
- mov r3, r9
- strh r3, [r4, 0x14]
- mov r0, r10
- strh r0, [r4, 0x16]
- ldr r0, _08089A60 @ =gUnknown_03004DC0
- strb r7, [r0, 0x18]
- ldr r0, _08089A64 @ =gUnknown_0202FFA4
- movs r1, 0
- strb r1, [r0]
- ldr r4, _08089A68 @ =gUnknown_03005060
- ldr r3, [sp, 0xC]
- subs r6, r3, r5
- lsls r3, r6, 24
- lsrs r3, 24
- adds r0, r4, 0
- ldr r1, [sp, 0x18]
- ldr r2, [sp, 0x1C]
- bl sub_80898FC
- ldr r0, [sp, 0xC]
- cmp r5, r0
- bge _08089A3E
- ldr r1, _08089A6C @ =0xfffffd80
- adds r2, r4, r1
- lsls r1, r5, 1
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r1, r3
- adds r3, r0, r2
- adds r1, r2
- adds r2, r4, 0
- adds r5, r6, 0
-_08089A2A:
- ldrh r0, [r2]
- strh r0, [r1]
- ldrh r0, [r2]
- strh r0, [r3]
- adds r2, 0x2
- adds r3, 0x2
- adds r1, 0x2
- subs r5, 0x1
- cmp r5, 0
- bne _08089A2A
-_08089A3E:
- adds r0, r7, 0
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08089A50: .4byte REG_BG0HOFS
-_08089A54: .4byte 0xa2600001
-_08089A58: .4byte task00_for_dp12
-_08089A5C: .4byte gTasks
-_08089A60: .4byte gUnknown_03004DC0
-_08089A64: .4byte gUnknown_0202FFA4
-_08089A68: .4byte gUnknown_03005060
-_08089A6C: .4byte 0xfffffd80
- thumb_func_end sub_8089944
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data-de/region_map_locations.inc b/data-de/region_map_locations.inc
deleted file mode 100644
index 1f4863206..000000000
--- a/data-de/region_map_locations.inc
+++ /dev/null
@@ -1,327 +0,0 @@
-gMapName_LittlerootTown: @ 83E6FF4
- .string "WURZELHEIM$"
-
-gMapName_OldaleTown: @ 83E7006
- .string "ROSALTSTADT$"
-
-gMapName_DewfordTown: @ 83E7014
- .string "FAUSTAUHAVEN$"
-
-gMapName_LavaridgeTown: @ 83E7023
- .string "BAD LAVASTADT$"
-
-gMapName_FallarborTown: @ 83E7034
- .string "LAUBWECHSEL{NAME_END}FELD$"
-
-gMapName_VerdanturfTown: @ 83E7045
- .string "WIESENFLUR$"
-
-gMapName_PacifidlogTown: @ 83E7057
- .string "FLOSSBRUNN$"
-
-gMapName_PetalburgCity: @ 83E7069
- .string "BLÜTENBURG{NAME_END} CITY$"
-
-gMapName_SlateportCity: @ 83E707A
- .string "GRAPHITPORT{NAME_END} CITY$"
-
-gMapName_MauvilleCity: @ 83E708B
- .string "MALVENFROH{NAME_END} CITY$"
-
-gMapName_RustboroCity: @ 83E709B
- .string "METAROST{NAME_END} CITY$"
-
-gMapName_FortreeCity: @ 83E70AB
- .string "BAUMHAUSEN{NAME_END} CITY$"
-
-gMapName_LilycoveCity: @ 83E70BA
- .string "SEEGRASULB{NAME_END} CITY$"
-
-gMapName_MossdeepCity: @ 83E70CA
- .string "MOOSBACH{NAME_END} CITY$"
-
-gMapName_SootopolisCity: @ 83E70DA
- .string "XENEROVILLE$"
-
-gMapName_EverGrandeCity: @ 83E70EC
- .string "PRACHTPOLIS{NAME_END} CITY$"
-
-gMapName_Route101: @ 83E70FF
- .string "ROUTE 101$"
-
-gMapName_Route102: @ 83E7109
- .string "ROUTE 102$"
-
-gMapName_Route103: @ 83E7113
- .string "ROUTE 103$"
-
-gMapName_Route104: @ 83E711D
- .string "ROUTE 104$"
-
-gMapName_Route105: @ 83E7127
- .string "ROUTE 105$"
-
-gMapName_Route106: @ 83E7131
- .string "ROUTE 106$"
-
-gMapName_Route107: @ 83E713B
- .string "ROUTE 107$"
-
-gMapName_Route108: @ 83E7145
- .string "ROUTE 108$"
-
-gMapName_Route109: @ 83E714F
- .string "ROUTE 109$"
-
-gMapName_Route110: @ 83E7159
- .string "ROUTE 110$"
-
-gMapName_Route111: @ 83E7163
- .string "ROUTE 111$"
-
-gMapName_Route112: @ 83E716D
- .string "ROUTE 112$"
-
-gMapName_Route113: @ 83E7177
- .string "ROUTE 113$"
-
-gMapName_Route114: @ 83E7181
- .string "ROUTE 114$"
-
-gMapName_Route115: @ 83E718B
- .string "ROUTE 115$"
-
-gMapName_Route116: @ 83E7195
- .string "ROUTE 116$"
-
-gMapName_Route117: @ 83E719F
- .string "ROUTE 117$"
-
-gMapName_Route118: @ 83E71A9
- .string "ROUTE 118$"
-
-gMapName_Route119: @ 83E71B3
- .string "ROUTE 119$"
-
-gMapName_Route120: @ 83E71BD
- .string "ROUTE 120$"
-
-gMapName_Route121: @ 83E71C7
- .string "ROUTE 121$"
-
-gMapName_Route122: @ 83E71D1
- .string "ROUTE 122$"
-
-gMapName_Route123: @ 83E71DB
- .string "ROUTE 123$"
-
-gMapName_Route124: @ 83E71E5
- .string "ROUTE 124$"
-
-gMapName_Route125: @ 83E71EF
- .string "ROUTE 125$"
-
-gMapName_Route126: @ 83E71F9
- .string "ROUTE 126$"
-
-gMapName_Route127: @ 83E7203
- .string "ROUTE 127$"
-
-gMapName_Route128: @ 83E720D
- .string "ROUTE 128$"
-
-gMapName_Route129: @ 83E7217
- .string "ROUTE 129$"
-
-gMapName_Route130: @ 83E7221
- .string "ROUTE 130$"
-
-gMapName_Route131: @ 83E722B
- .string "ROUTE 131$"
-
-gMapName_Route132: @ 83E7235
- .string "ROUTE 132$"
-
-gMapName_Route133: @ 83E723F
- .string "ROUTE 133$"
-
-gMapName_Route134: @ 83E7249
- .string "ROUTE 134$"
-
-gMapName_Underwater: @ 83E7253
- .string "UNTERWASSER$"
-
-gMapName_GraniteCave: @ 83E725E
- .string "GRANITHÖHLE$"
-
-gMapName_MtChimney: @ 83E726B
- .string "SCHLOTBERG$"
-
-gMapName_SafariZone: @ 83E7277
- .string "SAFARI-ZONE$"
-
-gMapName_BattleTower: @ 83E7283
- .string "DUELLTURM$"
-
-gMapName_PetalburgWoods: @ 83E7290
- .string "BLÜTENBURGWALD$"
-
-gMapName_RusturfTunnel: @ 83E72A0
- .string "METAFLURTUNNEL$"
-
-gMapName_AbandonedShip: @ 83E72AF
- .string "SCHIFFSWRACK$"
-
-gMapName_NewMauville: @ 83E72BE
- .string "NEU MALVENFROH$"
-
-gMapName_MeteorFalls: @ 83E72CB
- .string "METEORFÄLLE$"
-
-gMapName_MtPyre: @ 83E72D8
- .string "PYROBERG$"
-
-gMapName_EvilTeamHideout: @ 83E72E1
- .string "{EVIL_TEAM}s VERSTECK$"
-
-gMapName_ShoalCave: @ 83E72EC
- .string "KÜSTENHÖHLE$"
-
-gMapName_SeafloorCavern: @ 83E72F7
- .string "TIEFSEEHÖHLE$"
-
-gMapName_VictoryRoad: @ 83E7307
- .string "SIEGESSTRASSE$"
-
-gMapName_MirageIsland: @ 83E7314
- .string "WUNDEREILAND$"
-
-gMapName_CaveOfOrigin: @ 83E7322
- .string "URZEITHÖHLE$"
-
-gMapName_SouthernIsland: @ 83E7331
- .string "INSEL IM SÜDEN$"
-
-gMapName_FieryPath: @ 83E7341
- .string "FEURIGER PFAD$"
-
-gMapName_JaggedPass: @ 83E734C
- .string "STEILPASS$"
-
-gMapName_SealedChamber: @ 83E7358
- .string "SIEGELKAMMER$"
-
-gMapName_ScorchedSlab: @ 83E7367
- .string "SONNENGROTTE$"
-
-gMapName_IslandCave: @ 83E7375
- .string "INSELHÖHLE$"
-
-gMapName_DesertRuins: @ 83E7381
- .string "WÜSTENRUINE$"
-
-gMapName_AncientTomb: @ 83E738E
- .string "GRABMAL$"
-
-gMapName_InsideOfTruck: @ 83E739B
- .string "IM MÖBELWAGEN$"
-
-gMapName_SkyPillar: @ 83E73AB
- .string "HIMMELTURM$"
-
-gMapName_SecretBase: @ 83E73B6
- .string "GEHEIMBASIS$"
-
-gMapName_None: @ 83E73C2
- .string "$"
-
- .align 2
-gRegionMapLocations:: @ 83E73C4
- region_map_location 4, 11, 1, 1, LittlerootTown
- region_map_location 4, 9, 1, 1, OldaleTown
- region_map_location 2, 14, 1, 1, DewfordTown
- region_map_location 5, 3, 1, 1, LavaridgeTown
- region_map_location 3, 0, 1, 1, FallarborTown
- region_map_location 4, 6, 1, 1, VerdanturfTown
- region_map_location 17, 10, 1, 1, PacifidlogTown
- region_map_location 1, 9, 1, 1, PetalburgCity
- region_map_location 8, 10, 1, 2, SlateportCity
- region_map_location 8, 6, 2, 1, MauvilleCity
- region_map_location 0, 5, 1, 2, RustboroCity
- region_map_location 12, 0, 1, 1, FortreeCity
- region_map_location 18, 3, 2, 1, LilycoveCity
- region_map_location 24, 5, 2, 1, MossdeepCity
- region_map_location 21, 7, 1, 1, SootopolisCity
- region_map_location 27, 8, 1, 2, EverGrandeCity
- region_map_location 4, 10, 1, 1, Route101
- region_map_location 2, 9, 2, 1, Route102
- region_map_location 4, 8, 4, 1, Route103
- region_map_location 0, 7, 1, 3, Route104
- region_map_location 0, 10, 1, 3, Route105
- region_map_location 0, 13, 2, 1, Route106
- region_map_location 3, 14, 3, 1, Route107
- region_map_location 6, 14, 2, 1, Route108
- region_map_location 8, 12, 1, 3, Route109
- region_map_location 8, 7, 1, 3, Route110
- region_map_location 8, 0, 1, 6, Route111
- region_map_location 6, 3, 2, 1, Route112
- region_map_location 4, 0, 4, 1, Route113
- region_map_location 1, 0, 2, 3, Route114
- region_map_location 0, 2, 1, 3, Route115
- region_map_location 1, 5, 4, 1, Route116
- region_map_location 5, 6, 3, 1, Route117
- region_map_location 10, 6, 2, 1, Route118
- region_map_location 11, 0, 1, 6, Route119
- region_map_location 13, 0, 1, 4, Route120
- region_map_location 14, 3, 4, 1, Route121
- region_map_location 16, 4, 1, 2, Route122
- region_map_location 12, 6, 5, 1, Route123
- region_map_location 20, 3, 4, 3, Route124
- region_map_location 24, 3, 2, 2, Route125
- region_map_location 20, 6, 3, 3, Route126
- region_map_location 23, 6, 3, 3, Route127
- region_map_location 23, 9, 4, 1, Route128
- region_map_location 24, 10, 2, 1, Route129
- region_map_location 21, 10, 3, 1, Route130
- region_map_location 18, 10, 3, 1, Route131
- region_map_location 15, 10, 2, 1, Route132
- region_map_location 12, 10, 3, 1, Route133
- region_map_location 9, 10, 3, 1, Route134
- region_map_location 20, 3, 4, 3, Underwater
- region_map_location 20, 6, 3, 3, Underwater
- region_map_location 23, 6, 3, 3, Underwater
- region_map_location 23, 9, 4, 1, Underwater
- region_map_location 21, 7, 1, 1, Underwater
- region_map_location 1, 13, 1, 1, GraniteCave
- region_map_location 6, 2, 1, 1, MtChimney
- region_map_location 16, 2, 1, 1, SafariZone
- region_map_location 22, 12, 1, 1, BattleTower
- region_map_location 0, 8, 1, 1, PetalburgWoods
- region_map_location 2, 5, 1, 1, RusturfTunnel
- region_map_location 6, 14, 1, 1, AbandonedShip
- region_map_location 8, 7, 1, 1, NewMauville
- region_map_location 0, 3, 1, 1, MeteorFalls
- region_map_location 1, 2, 1, 1, MeteorFalls
- region_map_location 16, 4, 1, 1, MtPyre
- region_map_location 19, 3, 1, 1, EvilTeamHideout
- region_map_location 24, 4, 1, 1, ShoalCave
- region_map_location 24, 9, 1, 1, SeafloorCavern
- region_map_location 24, 9, 1, 1, Underwater
- region_map_location 27, 9, 1, 1, VictoryRoad
- region_map_location 17, 10, 1, 1, MirageIsland
- region_map_location 21, 7, 1, 1, CaveOfOrigin
- region_map_location 12, 14, 1, 1, SouthernIsland
- region_map_location 6, 3, 1, 1, FieryPath
- region_map_location 7, 3, 1, 1, FieryPath
- region_map_location 6, 3, 1, 1, JaggedPass
- region_map_location 7, 2, 1, 1, JaggedPass
- region_map_location 11, 10, 1, 1, SealedChamber
- region_map_location 11, 10, 1, 1, Underwater
- region_map_location 13, 0, 1, 1, ScorchedSlab
- region_map_location 0, 10, 1, 1, IslandCave
- region_map_location 8, 3, 1, 1, DesertRuins
- region_map_location 13, 2, 1, 1, AncientTomb
- region_map_location 0, 0, 1, 1, InsideOfTruck
- region_map_location 19, 10, 1, 1, SkyPillar
- region_map_location 0, 0, 1, 1, SecretBase
- region_map_location 0, 0, 1, 1, None
diff --git a/data/record_mixing.s b/data/record_mixing.s
deleted file mode 100644
index 8b46e1ed3..000000000
--- a/data/record_mixing.s
+++ /dev/null
@@ -1,68 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-recordMixingSecretBases:: @ 83D026C
- @ gSaveBlock1.secretBases
- .4byte gSaveBlock1 + 0x1A08
-
- .align 2
-recordMixingTvShows:: @ 83D0270
- @ gSaveBlock1.tvShows
- .4byte gSaveBlock1 + 0x2738
-
- .align 2
-gUnknown_083D0274:: @ 83D0274
- .4byte gSaveBlock1 + 0x2ABC
-
- .align 2
-gUnknown_083D0278:: @ 83D0278
- .4byte gSaveBlock1 + 0x2D94
-
- .align 2
-recordMixingEasyChatPairs:: @ 83D027C
- @ gSaveBlock1.easyChatPairs
- .4byte gSaveBlock1 + 0x2DD4
-
- .align 2
-gUnknown_083D0280:: @ 83D0280
- .4byte gUnknown_02038738
-
- .align 2
-gUnknown_083D0284:: @ 83D0284
- .4byte gSaveBlock2+0xA8
-
-gUnknown_083D0288:: @ 83D0288
- .byte 1, 0
-
-gUnknown_083D028A:: @ 83D028A
- .byte 1, 2, 0
- .byte 2, 0, 1
-
-gUnknown_083D0290:: @ 83D0290
- .byte 1, 0, 3, 2
- .byte 3, 0, 1, 2
- .byte 2, 0, 3, 1
- .byte 1, 3, 0, 2
- .byte 2, 3, 0, 1
- .byte 3, 2, 0, 1
- .byte 1, 2, 3, 0
- .byte 2, 3, 1, 0
- .byte 3, 2, 1, 0
-
-gUnknown_083D02B4:: @ 83D02B4
- .byte 0, 1
- .byte 1, 2
- .byte 2, 0
-
-gUnknown_083D02BA:: @ 83D02BA
- .byte 0, 1
- .byte 2, 3
-
- .byte 0, 2
- .byte 1, 3
-
- .byte 0, 3
- .byte 2, 1
diff --git a/data/region_map.s b/data/region_map.s
deleted file mode 100644
index d4d13f194..000000000
--- a/data/region_map.s
+++ /dev/null
@@ -1,259 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gPokenavCursor_Pal::
- .incbin "graphics/pokenav/cursor.gbapal"
-
- .align 2
-gUnknown_083E5AF0:: @ 83E5AF0
- .incbin "graphics/pokenav/cursor_small.4bpp.lz"
-
- .align 2
-gUnknown_083E5B34:: @ 83E5B34
- .incbin "graphics/pokenav/cursor_large.4bpp.lz"
-
- .align 2
-gRegionMapBrendanIconPalette:: @ 83E5C20
- .incbin "graphics/pokenav/brendan_icon.gbapal"
-
- .align 2
-gRegionMapBrendanIconTiles:: @ 83E5C40
- .incbin "graphics/pokenav/brendan_icon.4bpp"
-
- .align 2
-gRegionMapMayIconPalette:: @ 83E5CC0
- .incbin "graphics/pokenav/may_icon.gbapal"
-
- .align 2
-gRegionMapMayIconTiles:: @ 83E5CE0
- .incbin "graphics/pokenav/may_icon.4bpp"
-
- .align 2
-gUnknown_083E5D60:: @ 83E5D60
- .incbin "graphics/pokenav/region_map.gbapal", 0xE0, 0x40
-
- .align 2
-gUnknown_083E5DA0:: @ 83E5DA0
- .incbin "graphics/pokenav/region_map.8bpp.lz"
-
- .align 2
-gUnknown_083E6B04:: @ 83E6B04
- .incbin "graphics/pokenav/region_map_map.bin.lz"
-
-@ 83E6E50
- .include "data/region_map_sections.inc"
-
-@ 83E6FF4
- .include "data/region_map_locations.inc"
-
-gUnknown_083E7684:: @ 83E7684
- .2byte 50, 39
- .2byte 51, 41
- .2byte 52, 42
- .2byte 53, 43
- .2byte 54, 14
- .2byte 69, 43
- .2byte 66, 12
- .2byte 79, 49
- .2byte 59, 19
- .2byte 76, 27
- .2byte 65, 37
- .2byte 85, 46
- .2byte 88, 88
-
- .align 2
-gOamData_83E76B8:: @ 83E76B8
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_83E76C0:: @ 83E76C0
- obj_image_anim_frame 0, 20
- obj_image_anim_frame 4, 20
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83E76CC:: @ 83E76CC
- obj_image_anim_frame 0, 10
- obj_image_anim_frame 16, 10
- obj_image_anim_frame 32, 10
- obj_image_anim_frame 16, 10
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_83E76E0:: @ 83E76E0
- .4byte gSpriteAnim_83E76C0
- .4byte gSpriteAnim_83E76CC
-
- .align 2
-gUnknown_083E76E8:: @ 83E76E8
- obj_pal gPokenavCursor_Pal, 0x0000
-
- .align 2
-gSpriteTemplate_83E76F0:: @ 83E76F0
- spr_template 0, 0, gOamData_83E76B8, gSpriteAnimTable_83E76E0, NULL, gDummySpriteAffineAnimTable, sub_80FBAF0
-
- .align 2
-gOamData_083E7708:: @ 83E7708
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83E7710: @ 83E7710
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
-gSpriteAnimTable_083E7718:: @ 83E7718 ANIMCMD
- .4byte gSpriteAnim_83E7710
-
-gUnknown_083E771C:: @ 83E771C
- .incbin "graphics/pokenav/map_frame.gbapal"
-
-gUnknown_083E773C:: @ 83E773C
- .incbin "graphics/pokenav/map_frame.4bpp.lz"
-
-gUnknown_083E7774:: @ 83E7774
- .incbin "graphics/pokenav/map_frame.bin.lz"
-
- .align 2
-gPokenavMapMisc_Pal::
- .incbin "graphics/pokenav/map_misc.gbapal"
-
-gUnknown_083E784C:: @ 83E784C
- .incbin "graphics/pokenav/map_misc.4bpp.lz"
-
-gUnknown_083E7920:: @ 83E7920
- .byte 0, 9, 1
- .byte 0, 10, 14
- .byte 0, 11, 15
- .byte 0, 12, 16
- .byte 0, 13, 17
- .byte 0, 14, 18
- .byte 0, 15, 19
- .byte 0, 0, 3
- .byte 0, 1, 4
- .byte 0, 2, 5
- .byte 0, 3, 6
- .byte 0, 4, 7
- .byte 0, 5, 8
- .byte 0, 6, 9
- .byte 0, 7, 10
- .byte 0, 8, 11
- .byte 0, 16, 0
- .byte 0, 17, 0
- .byte 0, 18, 0
- .byte 0, 19, 0
- .byte 0, 20, 0
- .byte 0, 21, 0
- .byte 0, 22, 0
- .byte 0, 23, 0
- .byte 0, 24, 0
- .byte 0, 25, 0
- .byte 0, 26, 0
- .byte 0, 27, 0
- .byte 0, 28, 0
- .byte 0, 29, 0
- .byte 0, 30, 0
- .byte 0, 31, 0
- .byte 0, 32, 0
- .byte 0, 33, 0
- .byte 0, 34, 0
- .byte 0, 35, 0
- .byte 0, 36, 0
- .byte 0, 37, 0
- .byte 0, 38, 0
- .byte 0, 39, 0
- .byte 0, 40, 0
- .byte 0, 41, 0
- .byte 0, 42, 0
- .byte 0, 43, 0
- .byte 0, 44, 0
- .byte 0, 45, 0
- .byte 0, 46, 0
- .byte 0, 47, 0
- .byte 0, 48, 0
- .byte 0, 49, 0
-
- .align 2
-Unknown_3E79B8: @ 83E79B8
- .4byte OtherText_PokeLeague
- .4byte OtherText_PokeCenter
-
- .align 2
-gUnknown_083E79C0:: @ 83E79C0
- .4byte Unknown_3E79B8
- .2byte 0xF
- .2byte 0x854
-
-@ XXX: what is this?
- .align 2
- .4byte 0x2000000
-
- .align 2
-gUnknown_083E79CC:: @ 83E79CC
- obj_pal gPokenavMapMisc_Pal, 0x0002
-
- .align 2
-gUnknown_083E79D4:: @ 83E79D4
- .2byte 2120, 58
- .2byte 65535, 88
-
- .align 2
-gOamData_83E79DC:: @ 83E79DC
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83E79E4:: @ 83E79E4
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E79EC:: @ 83E79EC
- obj_image_anim_frame 1, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E79F4:: @ 83E79F4
- obj_image_anim_frame 3, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E79FC:: @ 83E79FC
- obj_image_anim_frame 5, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E7A04:: @ 83E7A04
- obj_image_anim_frame 6, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E7A0C:: @ 83E7A0C
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E7A14:: @ 83E7A14
- obj_image_anim_frame 10, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83E7A1C:: @ 83E7A1C
- .4byte gSpriteAnim_83E79E4
- .4byte gSpriteAnim_83E79EC
- .4byte gSpriteAnim_83E79F4
- .4byte gSpriteAnim_83E79FC
- .4byte gSpriteAnim_83E7A04
- .4byte gSpriteAnim_83E7A0C
- .4byte gSpriteAnim_83E7A14
-
- .align 2
-gSpriteTemplate_83E7A38:: @ 83E7A38
- spr_template 2, 2, gOamData_83E79DC, gSpriteAnimTable_83E7A1C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/data/region_map_locations.inc b/data/region_map_locations.inc
deleted file mode 100644
index 389b5aa0c..000000000
--- a/data/region_map_locations.inc
+++ /dev/null
@@ -1,327 +0,0 @@
-gMapName_LittlerootTown: @ 83E6FF4
- .string "LITTLEROOT{NAME_END} TOWN$"
-
-gMapName_OldaleTown: @ 83E7006
- .string "OLDALE{NAME_END} TOWN$"
-
-gMapName_DewfordTown: @ 83E7014
- .string "DEWFORD{NAME_END} TOWN$"
-
-gMapName_LavaridgeTown: @ 83E7023
- .string "LAVARIDGE{NAME_END} TOWN$"
-
-gMapName_FallarborTown: @ 83E7034
- .string "FALLARBOR{NAME_END} TOWN$"
-
-gMapName_VerdanturfTown: @ 83E7045
- .string "VERDANTURF{NAME_END} TOWN$"
-
-gMapName_PacifidlogTown: @ 83E7057
- .string "PACIFIDLOG{NAME_END} TOWN$"
-
-gMapName_PetalburgCity: @ 83E7069
- .string "PETALBURG{NAME_END} CITY$"
-
-gMapName_SlateportCity: @ 83E707A
- .string "SLATEPORT{NAME_END} CITY$"
-
-gMapName_MauvilleCity: @ 83E708B
- .string "MAUVILLE{NAME_END} CITY$"
-
-gMapName_RustboroCity: @ 83E709B
- .string "RUSTBORO{NAME_END} CITY$"
-
-gMapName_FortreeCity: @ 83E70AB
- .string "FORTREE{NAME_END} CITY$"
-
-gMapName_LilycoveCity: @ 83E70BA
- .string "LILYCOVE{NAME_END} CITY$"
-
-gMapName_MossdeepCity: @ 83E70CA
- .string "MOSSDEEP{NAME_END} CITY$"
-
-gMapName_SootopolisCity: @ 83E70DA
- .string "SOOTOPOLIS{NAME_END} CITY$"
-
-gMapName_EverGrandeCity: @ 83E70EC
- .string "EVER GRANDE{NAME_END} CITY$"
-
-gMapName_Route101: @ 83E70FF
- .string "ROUTE 101$"
-
-gMapName_Route102: @ 83E7109
- .string "ROUTE 102$"
-
-gMapName_Route103: @ 83E7113
- .string "ROUTE 103$"
-
-gMapName_Route104: @ 83E711D
- .string "ROUTE 104$"
-
-gMapName_Route105: @ 83E7127
- .string "ROUTE 105$"
-
-gMapName_Route106: @ 83E7131
- .string "ROUTE 106$"
-
-gMapName_Route107: @ 83E713B
- .string "ROUTE 107$"
-
-gMapName_Route108: @ 83E7145
- .string "ROUTE 108$"
-
-gMapName_Route109: @ 83E714F
- .string "ROUTE 109$"
-
-gMapName_Route110: @ 83E7159
- .string "ROUTE 110$"
-
-gMapName_Route111: @ 83E7163
- .string "ROUTE 111$"
-
-gMapName_Route112: @ 83E716D
- .string "ROUTE 112$"
-
-gMapName_Route113: @ 83E7177
- .string "ROUTE 113$"
-
-gMapName_Route114: @ 83E7181
- .string "ROUTE 114$"
-
-gMapName_Route115: @ 83E718B
- .string "ROUTE 115$"
-
-gMapName_Route116: @ 83E7195
- .string "ROUTE 116$"
-
-gMapName_Route117: @ 83E719F
- .string "ROUTE 117$"
-
-gMapName_Route118: @ 83E71A9
- .string "ROUTE 118$"
-
-gMapName_Route119: @ 83E71B3
- .string "ROUTE 119$"
-
-gMapName_Route120: @ 83E71BD
- .string "ROUTE 120$"
-
-gMapName_Route121: @ 83E71C7
- .string "ROUTE 121$"
-
-gMapName_Route122: @ 83E71D1
- .string "ROUTE 122$"
-
-gMapName_Route123: @ 83E71DB
- .string "ROUTE 123$"
-
-gMapName_Route124: @ 83E71E5
- .string "ROUTE 124$"
-
-gMapName_Route125: @ 83E71EF
- .string "ROUTE 125$"
-
-gMapName_Route126: @ 83E71F9
- .string "ROUTE 126$"
-
-gMapName_Route127: @ 83E7203
- .string "ROUTE 127$"
-
-gMapName_Route128: @ 83E720D
- .string "ROUTE 128$"
-
-gMapName_Route129: @ 83E7217
- .string "ROUTE 129$"
-
-gMapName_Route130: @ 83E7221
- .string "ROUTE 130$"
-
-gMapName_Route131: @ 83E722B
- .string "ROUTE 131$"
-
-gMapName_Route132: @ 83E7235
- .string "ROUTE 132$"
-
-gMapName_Route133: @ 83E723F
- .string "ROUTE 133$"
-
-gMapName_Route134: @ 83E7249
- .string "ROUTE 134$"
-
-gMapName_Underwater: @ 83E7253
- .string "UNDERWATER$"
-
-gMapName_GraniteCave: @ 83E725E
- .string "GRANITE CAVE$"
-
-gMapName_MtChimney: @ 83E726B
- .string "MT. CHIMNEY$"
-
-gMapName_SafariZone: @ 83E7277
- .string "SAFARI ZONE$"
-
-gMapName_BattleTower: @ 83E7283
- .string "BATTLE TOWER$"
-
-gMapName_PetalburgWoods: @ 83E7290
- .string "PETALBURG WOODS$"
-
-gMapName_RusturfTunnel: @ 83E72A0
- .string "RUSTURF TUNNEL$"
-
-gMapName_AbandonedShip: @ 83E72AF
- .string "ABANDONED SHIP$"
-
-gMapName_NewMauville: @ 83E72BE
- .string "NEW MAUVILLE$"
-
-gMapName_MeteorFalls: @ 83E72CB
- .string "METEOR FALLS$"
-
-gMapName_MtPyre: @ 83E72D8
- .string "MT. PYRE$"
-
-gMapName_EvilTeamHideout: @ 83E72E1
- .string "{EVIL_TEAM} HIDEOUT$"
-
-gMapName_ShoalCave: @ 83E72EC
- .string "SHOAL CAVE$"
-
-gMapName_SeafloorCavern: @ 83E72F7
- .string "SEAFLOOR CAVERN$"
-
-gMapName_VictoryRoad: @ 83E7307
- .string "VICTORY ROAD$"
-
-gMapName_MirageIsland: @ 83E7314
- .string "MIRAGE ISLAND$"
-
-gMapName_CaveOfOrigin: @ 83E7322
- .string "CAVE OF ORIGIN$"
-
-gMapName_SouthernIsland: @ 83E7331
- .string "SOUTHERN ISLAND$"
-
-gMapName_FieryPath: @ 83E7341
- .string "FIERY PATH$"
-
-gMapName_JaggedPass: @ 83E734C
- .string "JAGGED PASS$"
-
-gMapName_SealedChamber: @ 83E7358
- .string "SEALED CHAMBER$"
-
-gMapName_ScorchedSlab: @ 83E7367
- .string "SCORCHED SLAB$"
-
-gMapName_IslandCave: @ 83E7375
- .string "ISLAND CAVE$"
-
-gMapName_DesertRuins: @ 83E7381
- .string "DESERT RUINS$"
-
-gMapName_AncientTomb: @ 83E738E
- .string "ANCIENT TOMB$"
-
-gMapName_InsideOfTruck: @ 83E739B
- .string "INSIDE OF TRUCK$"
-
-gMapName_SkyPillar: @ 83E73AB
- .string "SKY PILLAR$"
-
-gMapName_SecretBase: @ 83E73B6
- .string "SECRET BASE$"
-
-gMapName_None: @ 83E73C2
- .string "$"
-
- .align 2
-gRegionMapLocations:: @ 83E73C4
- region_map_location 4, 11, 1, 1, LittlerootTown
- region_map_location 4, 9, 1, 1, OldaleTown
- region_map_location 2, 14, 1, 1, DewfordTown
- region_map_location 5, 3, 1, 1, LavaridgeTown
- region_map_location 3, 0, 1, 1, FallarborTown
- region_map_location 4, 6, 1, 1, VerdanturfTown
- region_map_location 17, 10, 1, 1, PacifidlogTown
- region_map_location 1, 9, 1, 1, PetalburgCity
- region_map_location 8, 10, 1, 2, SlateportCity
- region_map_location 8, 6, 2, 1, MauvilleCity
- region_map_location 0, 5, 1, 2, RustboroCity
- region_map_location 12, 0, 1, 1, FortreeCity
- region_map_location 18, 3, 2, 1, LilycoveCity
- region_map_location 24, 5, 2, 1, MossdeepCity
- region_map_location 21, 7, 1, 1, SootopolisCity
- region_map_location 27, 8, 1, 2, EverGrandeCity
- region_map_location 4, 10, 1, 1, Route101
- region_map_location 2, 9, 2, 1, Route102
- region_map_location 4, 8, 4, 1, Route103
- region_map_location 0, 7, 1, 3, Route104
- region_map_location 0, 10, 1, 3, Route105
- region_map_location 0, 13, 2, 1, Route106
- region_map_location 3, 14, 3, 1, Route107
- region_map_location 6, 14, 2, 1, Route108
- region_map_location 8, 12, 1, 3, Route109
- region_map_location 8, 7, 1, 3, Route110
- region_map_location 8, 0, 1, 6, Route111
- region_map_location 6, 3, 2, 1, Route112
- region_map_location 4, 0, 4, 1, Route113
- region_map_location 1, 0, 2, 3, Route114
- region_map_location 0, 2, 1, 3, Route115
- region_map_location 1, 5, 4, 1, Route116
- region_map_location 5, 6, 3, 1, Route117
- region_map_location 10, 6, 2, 1, Route118
- region_map_location 11, 0, 1, 6, Route119
- region_map_location 13, 0, 1, 4, Route120
- region_map_location 14, 3, 4, 1, Route121
- region_map_location 16, 4, 1, 2, Route122
- region_map_location 12, 6, 5, 1, Route123
- region_map_location 20, 3, 4, 3, Route124
- region_map_location 24, 3, 2, 2, Route125
- region_map_location 20, 6, 3, 3, Route126
- region_map_location 23, 6, 3, 3, Route127
- region_map_location 23, 9, 4, 1, Route128
- region_map_location 24, 10, 2, 1, Route129
- region_map_location 21, 10, 3, 1, Route130
- region_map_location 18, 10, 3, 1, Route131
- region_map_location 15, 10, 2, 1, Route132
- region_map_location 12, 10, 3, 1, Route133
- region_map_location 9, 10, 3, 1, Route134
- region_map_location 20, 3, 4, 3, Underwater
- region_map_location 20, 6, 3, 3, Underwater
- region_map_location 23, 6, 3, 3, Underwater
- region_map_location 23, 9, 4, 1, Underwater
- region_map_location 21, 7, 1, 1, Underwater
- region_map_location 1, 13, 1, 1, GraniteCave
- region_map_location 6, 2, 1, 1, MtChimney
- region_map_location 16, 2, 1, 1, SafariZone
- region_map_location 22, 12, 1, 1, BattleTower
- region_map_location 0, 8, 1, 1, PetalburgWoods
- region_map_location 2, 5, 1, 1, RusturfTunnel
- region_map_location 6, 14, 1, 1, AbandonedShip
- region_map_location 8, 7, 1, 1, NewMauville
- region_map_location 0, 3, 1, 1, MeteorFalls
- region_map_location 1, 2, 1, 1, MeteorFalls
- region_map_location 16, 4, 1, 1, MtPyre
- region_map_location 19, 3, 1, 1, EvilTeamHideout
- region_map_location 24, 4, 1, 1, ShoalCave
- region_map_location 24, 9, 1, 1, SeafloorCavern
- region_map_location 24, 9, 1, 1, Underwater
- region_map_location 27, 9, 1, 1, VictoryRoad
- region_map_location 17, 10, 1, 1, MirageIsland
- region_map_location 21, 7, 1, 1, CaveOfOrigin
- region_map_location 12, 14, 1, 1, SouthernIsland
- region_map_location 6, 3, 1, 1, FieryPath
- region_map_location 7, 3, 1, 1, FieryPath
- region_map_location 6, 3, 1, 1, JaggedPass
- region_map_location 7, 2, 1, 1, JaggedPass
- region_map_location 11, 10, 1, 1, SealedChamber
- region_map_location 11, 10, 1, 1, Underwater
- region_map_location 13, 0, 1, 1, ScorchedSlab
- region_map_location 0, 10, 1, 1, IslandCave
- region_map_location 8, 3, 1, 1, DesertRuins
- region_map_location 13, 2, 1, 1, AncientTomb
- region_map_location 0, 0, 1, 1, InsideOfTruck
- region_map_location 19, 10, 1, 1, SkyPillar
- region_map_location 0, 0, 1, 1, SecretBase
- region_map_location 0, 0, 1, 1, None
diff --git a/data/region_map_sections.inc b/data/region_map_sections.inc
deleted file mode 100644
index 6336eac0e..000000000
--- a/data/region_map_sections.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-gRegionMapSections:: @ 83E6E50
- .byte 0x58,0x1D,0x1D,0x04,0x1C,0x1C,0x1C,0x1C,0x1A,0x58,0x58,0x22,0x0B,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x58,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x1E,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x39,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x1E,0x58,0x58,0x58,0x58,0x03,0x1B,0x1B,0x1A,0x58,0x58,0x22,0x58,0x23,0x24,0x24,0x24,0x24,0x0C,0x0C,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58
- .byte 0x1E,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58
- .byte 0x0A,0x1F,0x1F,0x1F,0x1F,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x0D,0x0D,0x58,0x58
- .byte 0x0A,0x58,0x58,0x58,0x05,0x20,0x20,0x20,0x09,0x09,0x21,0x21,0x26,0x26,0x26,0x26,0x26,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x58
- .byte 0x13,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x0E,0x29,0x2A,0x2A,0x2A,0x58,0x58
- .byte 0x13,0x58,0x58,0x58,0x12,0x12,0x12,0x12,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x0F
- .byte 0x13,0x07,0x11,0x11,0x01,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x2B,0x2B,0x2B,0x2B,0x0F
- .byte 0x14,0x58,0x58,0x58,0x10,0x58,0x58,0x58,0x08,0x31,0x31,0x31,0x30,0x30,0x30,0x2F,0x2F,0x06,0x2E,0x2E,0x2E,0x2D,0x2D,0x2D,0x2C,0x2C,0x58,0x58
- .byte 0x14,0x58,0x58,0x58,0x00,0x58,0x58,0x58,0x08,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x14,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x3A,0x58,0x58,0x58,0x58,0x58
- .byte 0x15,0x15,0x15,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x58,0x58,0x02,0x16,0x16,0x16,0x17,0x17,0x18,0x58,0x58,0x58,0x49,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
diff --git a/data/rom_8080874.s b/data/rom_8080874.s
deleted file mode 100644
index 220ec5f96..000000000
--- a/data/rom_8080874.s
+++ /dev/null
@@ -1,18 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 1
-gUnknown_0839ACDC:: @ 839ACDC
- .2byte 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0
-
- .align 2
-gUnknown_0839ACE8:: @ 839ACE8
- .4byte 4
-
- .align 2
-gUnknown_0839ACEC:: @ 839ACEC
- .4byte REG_WIN0H
- .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
- .4byte 1
diff --git a/data/trainer_card.s b/data/trainer_card.s
deleted file mode 100644
index 75e0041dd..000000000
--- a/data/trainer_card.s
+++ /dev/null
@@ -1,62 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gBadgesTiles:: @ 83B5AB8
- .incbin "graphics/trainer_card/badges.4bpp"
-
-@ XXX: what is this?
- .align 2
- .4byte 0x2000000
-
- .align 2
-gUnknown_083B5EBC:: @ 83B5EBC
- .4byte sub_8093864
- .4byte sub_80938A8
- .4byte sub_80938CC
- .4byte sub_8093918
- .4byte sub_8093938
- .4byte sub_8093954
- .4byte sub_8093980
-
- .align 2
-gUnknown_083B5ED8:: @ 83B5ED8
- .4byte sub_8093AA0
- .4byte sub_8093AF0
- .4byte sub_8093C0C
- .4byte sub_8093C38
- .4byte sub_8093D50
-
- .align 2
-gUnknown_083B5EEC:: @ 83B5EEC
- .4byte gUnknown_08E8CAC0
- .4byte gUnknown_08E8D4C0
-
-gUnknown_083B5EF4:: @ 83B5EF4
- .string " : $"
-
- .align 2
-gUnknown_083B5EF8:: @ 83B5EF8
- .4byte gMenuTrainerCard0Star_Pal
- .4byte gMenuTrainerCard1Star_Pal
- .4byte gMenuTrainerCard2Star_Pal
- .4byte gMenuTrainerCard3Star_Pal
- .4byte gMenuTrainerCard4Star_Pal
-
-gUnknown_083B5F0C:: @ 83B5F0C
- .incbin "graphics/trainer_card/83B5F0C.gbapal"
-
- .align 2
-gBadgesPalette:: @ 83B5F2C
- .incbin "graphics/trainer_card/badges.gbapal"
-
-gUnknown_083B5F4C:: @ 83B5F4C
- .incbin "graphics/trainer_card/83B5F4C.gbapal"
-
-gUnknown_083B5F6C:: @ 83B5F6C
- .incbin "graphics/trainer_card/83B5F6C.gbapal"
-
-gUnknown_083B5F8C:: @ 83B5F8C
- .incbin "graphics/trainer_card/83B5F8C_map.bin"
diff --git a/graphics/pokenav/map_misc.pal b/graphics/pokenav/fly_target_icons.pal
index c0f2cc4e9..c0f2cc4e9 100644
--- a/graphics/pokenav/map_misc.pal
+++ b/graphics/pokenav/fly_target_icons.pal
diff --git a/graphics/pokenav/map_misc.png b/graphics/pokenav/fly_target_icons.png
index 7a997afc5..7a997afc5 100644
--- a/graphics/pokenav/map_misc.png
+++ b/graphics/pokenav/fly_target_icons.png
Binary files differ
diff --git a/graphics/pokenav/region_map.pal b/graphics/pokenav/region_map.pal
index 4fca67ade..78ffc009a 100644
--- a/graphics/pokenav/region_map.pal
+++ b/graphics/pokenav/region_map.pal
@@ -1,118 +1,6 @@
JASC-PAL
0100
-256
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
+32
0 0 0
156 213 255
164 180 255
@@ -145,115 +33,3 @@ JASC-PAL
0 0 0
0 0 0
0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/include/battle_records.h b/include/battle_records.h
index f0c1a101b..ac6c3cbdb 100644
--- a/include/battle_records.h
+++ b/include/battle_records.h
@@ -2,7 +2,8 @@
#define GUARD_BATTLE_RECORDS_H
void InitLinkBattleRecords(void);
-void PrintLinkBattleWinsLossesDraws(void *);
-void PrintLinkBattleRecord(void *, u8);
+void UpdateLinkBattleRecords(int id);
+void ShowLinkBattleRecords(void);
+void ShowBattleTowerRecords(void);
#endif // GUARD_BATTLE_RECORDS_H
diff --git a/include/field_effect.h b/include/field_effect.h
index cd84652b1..5edca21dc 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -109,6 +109,8 @@ void SpriteCB_PokeballGlow(struct Sprite *);
void SpriteCB_PokecenterMonitor(struct Sprite *);
void SpriteCB_HallOfFameMonitor(struct Sprite *);
+void sub_80865BC(void);
+
void PokecenterHealEffect_0(struct Task *);
void PokecenterHealEffect_1(struct Task *);
void PokecenterHealEffect_2(struct Task *);
diff --git a/include/flags.h b/include/flags.h
index 0e408a833..a60de6ea0 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -22,6 +22,24 @@
#define BADGE07_GET 0x80D
#define BADGE08_GET 0x80E
+// cities and towns
+#define FLAG_VISITED_LITTLEROOT_TOWN 0x80F
+#define FLAG_VISITED_OLDALE_TOWN 0x810
+#define FLAG_VISITED_DEWFORD_TOWN 0x811
+#define FLAG_VISITED_LAVARIDGE_TOWN 0x812
+#define FLAG_VISITED_FALLARBOR_TOWN 0x813
+#define FLAG_VISITED_VERDANTURF_TOWN 0x814
+#define FLAG_VISITED_PACIFIDLOG_TOWN 0x815
+#define FLAG_VISITED_PETALBURG_CITY 0x816
+#define FLAG_VISITED_SLATEPORT_CITY 0x817
+#define FLAG_VISITED_MAUVILLE_CITY 0x818
+#define FLAG_VISITED_RUSTBORO_CITY 0x819
+#define FLAG_VISITED_FORTREE_CITY 0x81A
+#define FLAG_VISITED_LILYCOVE_CITY 0x81B
+#define FLAG_VISITED_MOSSDEEP_CITY 0x81C
+#define FLAG_VISITED_SOOTOPOLIS_CITY 0x81D
+#define FLAG_VISITED_EVER_GRANDE_CITY 0x81E
+
#define SYS_USE_FLASH 0x828
#define SYS_USE_STRENGTH 0x829
#define SYS_WEATHER_CTRL 0x82A
@@ -42,6 +60,9 @@
#define SYS_SHOAL_TIDE 0x83A
#define SYS_RIBBON_GET 0x83B
+#define FLAG_UNLOCK_BATTLE_TOWER 0x848
+#define FLAG_UNLOCK_SOUTHERN_ISLAND 0x849
+
#define SYS_PC_LANETTE 0x84B
#define SYS_EXDATA_ENABLE 0x84C
#define SYS_ENC_UP_ITEM 0x84D
@@ -50,6 +71,9 @@
#define SYS_BRAILLE_STRENGTH 0x850
#define SYS_BRAILLE_WAIT 0x851
#define SYS_BRAILLE_FLY 0x852
+#define SYS_HAS_EON_TICKET 0x853
+
+#define SYS_POKEMON_LEAGUE_FLY 0x854
#define SYS_TV_LATI 0x85D
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 7589de029..4029132e8 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -166,7 +166,7 @@ struct MapHeader
/* 0x0C */ struct MapConnections *connections;
/* 0x10 */ u16 music;
/* 0x12 */ u16 mapDataId;
- /* 0x14 */ u8 name;
+ /* 0x14 */ u8 regionMapSectionId;
/* 0x15 */ u8 cave;
/* 0x16 */ u8 weather;
/* 0x17 */ u8 mapType;
diff --git a/include/global.h b/include/global.h
index c29797638..73f73093d 100644
--- a/include/global.h
+++ b/include/global.h
@@ -536,7 +536,9 @@ struct GabbyAndTyData
struct RecordMixing_UnknownStructSub
{
- u8 data[0x38];
+ u32 unk0;
+ u8 data[0x34];
+ //u8 data[0x38];
};
struct RecordMixing_UnknownStruct
@@ -546,6 +548,15 @@ struct RecordMixing_UnknownStruct
u16 unk74[0x2];
};
+struct LinkBattleRecord
+{
+ u8 name[8];
+ u16 trainerId;
+ u16 wins;
+ u16 losses;
+ u16 draws;
+};
+
struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
@@ -624,7 +635,7 @@ struct SaveBlock1 /* 0x02025734 */
/*0x30AC*/ u8 filler_30B4[0x2];
/*0x30B6*/ u8 filler_30B6;
/*0x30B7*/ u8 filler_30B7[1];
- /*0x30B8*/ u8 linkBattleRecords[5][16];
+ /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x3108*/ u8 filler_3108[8];
/*0x3110*/ u8 giftRibbons[7];
/*0x3117*/ u8 filler_311B[0x2D];
@@ -666,16 +677,16 @@ struct SaveBlock2_Sub
/*0x03DC, 0x0484*/ u8 filler_3DC[0xD0];
/*0x04AC, 0x0554*/ u8 var_4AC;
/*0x04AD, 0x0555*/ u8 var_4AD;
- /*0x04AE, 0x0556*/ u8 var_4AE;
- /*0x04AF, 0x0557*/ u8 var_4AF;
+ /*0x04AE, 0x0556*/ u8 var_4AE[2];
/*0x04B0, 0x0558*/ u16 var_4B0;
/*0x04B2, 0x055A*/ u16 var_4B2;
/*0x04B4, 0x055C*/ u16 var_4B4;
/*0x04B6, 0x055E*/ u16 var_4B6;
- /*0x04B8, 0x0560*/ u8 filler_4B8[0x10];
+ /*0x04B8, 0x0560*/ u16 recordWinStreak[2];
+ /*0x04BC, 0x0564*/ u8 filler_4BC[0xC];
/*0x04C8, 0x0570*/ u16 var_4C8;
/*0x04CA, 0x0572*/ u16 var_4CA;
- /*0x04CC, 0x0574*/ u8 filler_4CC[4];
+ /*0x04CC, 0x0574*/ u16 winStreak[2];
/*0x04D0, 0x0578*/ u8 var_4D0;
/*0x04D1, 0x0579*/ u8 filler_4D1[0x317];
};
diff --git a/include/graphics.h b/include/graphics.h
index fb9781147..fa6a85513 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2549,4 +2549,15 @@ extern const u8 gBerryPalette_Enigma[];
extern const u8 gUnknown_08E96EC8[];
+extern const u8 gMenuTrainerCard_Gfx[];
+extern const u16 gMenuTrainerCard0Star_Pal[];
+extern const u16 gMenuTrainerCard1Star_Pal[];
+extern const u16 gMenuTrainerCard2Star_Pal[];
+extern const u16 gMenuTrainerCard3Star_Pal[];
+extern const u16 gMenuTrainerCard4Star_Pal[];
+extern const u8 gUnknown_08E8CAC0[];
+extern const u8 gUnknown_08E8CFC0[];
+extern const u8 gUnknown_08E8D4C0[];
+extern const u8 gUnknown_08E8D9C0[];
+
#endif // GUARD_GRAPHICS_H
diff --git a/include/menu.h b/include/menu.h
index 9b48ab79b..e1bb4f1e4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -38,7 +38,7 @@ void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8);
void MenuZeroFillScreen(void);
void MenuDrawTextWindow(u8, u8, u8, u8);
void sub_8071F40(const u8 *);
-void sub_8071F60(u8, u8, u8, u8);
+void sub_8071F60(u8, u8, u8);
u16 unref_sub_8071F98(u8, u8);
void unref_sub_8071FBC(u16, u8, u8, u8, u8);
void MenuDisplayMessageBox(void);
@@ -67,7 +67,7 @@ u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8);
u8 sub_8072A18(const u8 *, u8, u16, u8, u32);
u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32);
int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32);
-void MenuPrint_RightAligned(u8 *, u8, u8);
+void MenuPrint_RightAligned(const u8 *, u8, u8);
void sub_8072B80(const u8 *, u8, u8, const u8 *);
void sub_8072BD8(const u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h
index d22dbb708..fc43a44c6 100644
--- a/include/pokemon_menu.h
+++ b/include/pokemon_menu.h
@@ -6,6 +6,7 @@ void sub_808A004();
void sub_808AB90(void);
void sub_808AB90(void); // unknown args
void sub_808AB90(void);
+void sub_808AD58(void);
void sub_808B020(void);
void sub_808B0C0(u8);
void sub_808B508(u8);
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 103f5ad64..ca60b04a7 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -14,8 +14,8 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId);
void sub_80B99B4(u8 taskId);
void Task_RecordMixing_ReceivePacket(u8 taskId);
void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId);
-void *LoadPtrFromTaskData(u16 *ptr);
-void StorePtrInTaskData(void *ptr, u16 *data);
+void *LoadPtrFromTaskData(u16 *);
+void StorePtrInTaskData(void *, u16 *);
u8 GetMultiplayerId_(void);
u16 *GetPlayerRecvBuffer(u8 player);
void sub_80B9A78(void);
@@ -23,12 +23,12 @@ void sub_80B9A88(u8 *a);
void sub_80B9B1C(u8 *a, size_t size, u8 index);
void sub_80B9B70(u8 *a, size_t size, u8 index);
u8 sub_80B9BBC(u16 *a);
-void sub_80B9BC4(struct RecordMixing_UnknownStruct *, size_t, u8 [][2], u8, u8);
+void sub_80B9BC4(u8 *, size_t, u8[][2], u8 d, u8 e);
u8 sub_80B9C4C(u8 *a);
// ASM
-void sub_80B9C6C(struct RecordMixing_UnknownStruct *, u32, u8, void *);
-void sub_80B9F3C(void *, u8);
+void sub_80B9C6C(u8 *, u32, u8, void *);
+void sub_80B9F3C(u16 *, u8);
void sub_80BA00C(u8);
#endif // GUARD_RECORD_MIXING_H
diff --git a/include/region_map.h b/include/region_map.h
index 6dfa4dcf0..3d970fa0a 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -1,13 +1,72 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
-void sub_80FA8EC(u32, u8);
-void sub_80FAB10(void);
+struct RegionMap
+{
+ u8 mapSecName[0x14];
+ u16 mapSecId;
+ u8 unk16;
+ u8 everGrandeCityArea;
+ u8 (*inputCallback)(void);
+ struct Sprite *cursorSprite;
+ struct Sprite *playerIconSprite;
+ s32 bg2x;
+ s32 bg2y;
+ u32 unk2C; //
+ u32 unk30; // Map rotation parameters
+ u32 unk34; // Likely a scrapped feature
+ u32 unk38; //
+ s32 unk3C;
+ s32 unk40;
+ s32 unk44;
+ s32 unk48;
+ s32 unk4C;
+ s32 unk50;
+ u16 cursorPosX;
+ u16 cursorPosY;
+ u16 cursorTileTag;
+ u16 cursorPaletteTag;
+ s16 scrollX;
+ s16 scrollY;
+ s16 unk60;
+ s16 unk62;
+ u16 unk64;
+ u16 unk66;
+ u16 unk68;
+ u16 unk6A;
+ u16 unk6C;
+ u16 unk6E;
+ u16 playerIconTileTag;
+ u16 playerIconPaletteTag;
+ u16 unk74;
+ u16 unk76;
+ bool8 zoomed;
+ u8 initStep;
+ s8 unk7A;
+ s8 cursorDeltaX;
+ s8 cursorDeltaY;
+ bool8 needUpdateVideoRegs;
+ bool8 blinkPlayerIcon;
+ bool8 playerIsInCave;
+ /*0x080*/ u8 filler80[0x100];
+ /*0x180*/ u8 cursorSmallImage[0x100];
+ /*0x280*/ u8 cursorLargeImage[0x600];
+};
+
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed);
+void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed);
+bool8 sub_80FA940(void);
+void FreeRegionMapIconResources(void);
u8 sub_80FAB60(void);
-void sub_80FBB3C(u16, u16);
-void sub_80FBCF0(u32, u8);
-void sub_80FBFB4(u8 *str, u16 region, u8);
-void CopyMapName();
-u8 *CopyLocationName(u8 *dest, u8 location);
+void sub_80FAEC4(void);
+u8 sub_80FAFC0(void);
+void UpdateRegionMapVideoRegs(void);
+void sub_80FB2A4(s16, s16);
+u16 sub_80FBA04(u16 mapSecId);
+void CreateRegionMapCursor(u16, u16);
+void CreateRegionMapPlayerIcon(u16, u16);
+const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length);
+const u8 *CopyMapName(u8 *dest, u16 b);
+const u8 *CopyLocationName(u8 *dest, u16 b);
#endif // GUARD_REGION_MAP_H
diff --git a/include/rom4.h b/include/rom4.h
index 803a38162..fabd25302 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -55,7 +55,7 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
-// sub_8053538
+void sub_8053538(u8);
void sub_8053570(void);
void sub_8053588(u8);
void sub_80535C4(s16 a1, s16 a2);
@@ -100,8 +100,8 @@ void sub_8053F84(void);
void sub_8053FB0(u16);
// is_warp1_light_level_8_or_9
// sub_8053FF8
-// sub_8054034
-// sub_8054044
+bool8 sub_8054034(void);
+void sub_8054044(void);
// sub_8054050
void sub_80540D0(s16 *, u16 *);
void sub_8054164(void);
diff --git a/include/save.h b/include/save.h
index 3feaa1f3d..6c47c6f60 100644
--- a/include/save.h
+++ b/include/save.h
@@ -74,7 +74,7 @@ bool8 sub_8125DA8(void);
u8 sub_8125DDC(void);
u8 sub_8125E04(void);
u8 sub_8125E2C(void);
-u8 sub_8125E6C(void);
+bool8 sub_8125E6C(void);
u8 sub_8125EC8(u8 a1);
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
u8 unref_sub_8125FA0(void);
diff --git a/include/secret_base.h b/include/secret_base.h
index 3ea75ce27..bb747bb02 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -7,6 +7,7 @@ u8 sub_80BBB24(void);
void sub_80BBCCC(u8);
void sub_80BC038();
u8 sub_80BC050();
+u8 *GetSecretBaseMapName(u8 *);
void sub_80BC300();
const u8 sub_80BCCA4(u8);
u8 *sub_80BCCE8(void);
diff --git a/include/trainer_card.h b/include/trainer_card.h
index bd0c808dd..b9d3ca081 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -33,20 +33,6 @@ void sub_8093130(u8, void (*)(void));
void sub_8093390(struct TrainerCard *);
u8 sub_80934C4(u8 id);
-// gUnknown_083B5EBC:: @ 83B5EBC
-bool8 sub_8093864();
-bool8 sub_80938A8();
-bool8 sub_80938CC();
-bool8 sub_8093918();
-bool8 sub_8093938();
-bool8 sub_8093954();
-bool8 sub_8093980();
-
-// gUnknown_083B5ED8:: @ 83B5ED8
-bool8 sub_8093AA0();
-bool8 sub_8093AF0();
-bool8 sub_8093C0C(struct TrainerCard *trainerCard);
-bool8 sub_8093C38();
-bool8 sub_8093D50(void);
+extern struct TrainerCard gTrainerCards[4];
#endif // GUARD_TRAINER_CARD_H
diff --git a/include/vars.h b/include/vars.h
index e08f344d4..efbb462a4 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,6 +1,7 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
+#define VAR_0x4000 0x4000
#define VAR_0x4001 0x4001
#define VAR_0x4002 0x4002
#define VAR_0x4003 0x4003
diff --git a/ld_script.txt b/ld_script.txt
index ddc08c49d..96edbd0e3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -128,7 +128,7 @@ SECTIONS {
asm/field_weather.o(.text);
src/field_fadetransition.o(.text);
asm/field_fadetransition.o(.text);
- asm/field_screen_effect.o(.text);
+ src/field_screen_effect.o(.text);
src/battle_setup.o(.text);
asm/cable_club.o(.text);
src/cable_club.o(.text);
@@ -137,7 +137,7 @@ SECTIONS {
src/trainer_see.o(.text);
src/wild_encounter.o(.text);
src/field_effect.o(.text);
- asm/unknown_task.o(.text);
+ src/unknown_task.o(.text);
asm/pokemon_menu.o(.text);
src/option_menu.o(.text);
src/pokedex.o(.text);
@@ -168,7 +168,6 @@ SECTIONS {
src/money.o(.text);
asm/contest_effect.o(.text);
src/record_mixing.o(.text);
- asm/record_mixing.o(.text);
src/sound_check_menu.o(.text);
src/secret_base.o(.text);
asm/secret_base.o(.text_80BC1D0);
@@ -199,7 +198,7 @@ SECTIONS {
src/script_pokemon_util_80F99CC.o(.text);
src/dewford_trend.o(.text);
src/heal_location.o(.text);
- asm/region_map.o(.text);
+ src/region_map.o(.text);
asm/cute_sketch.o(.text);
src/decoration.o(.text);
asm/slot_machine.o(.text);
@@ -219,9 +218,7 @@ SECTIONS {
src/birch_pc.o(.text);
src/hof_pc.o(.text);
src/field_specials.o(.text);
- asm/battle_records.o(.text);
src/battle_records.o(.text);
- asm/battle_records.o(.text_8110494);
asm/pokedex_area_screen.o(.text);
asm/evolution_scene.o(.text);
asm/roulette.o(.text);
@@ -380,7 +377,7 @@ SECTIONS {
data/battle_anim_807B69C.o(.rodata);
src/title_screen.o(.rodata);
data/field_weather.o(.rodata);
- data/rom_8080874.o(.rodata);
+ src/field_screen_effect.o(.rodata);
src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/mori_debug_menu.o(.rodata);
@@ -392,7 +389,6 @@ SECTIONS {
src/option_menu.o(.rodata);
src/pokedex.o(.rodata);
src/trainer_card.o(.rodata);
- data/trainer_card.o(.rodata);
src/battle_party_menu.o(.rodata);
data/pokemon_storage_system.o(.rodata);
data/pokemon_icon.o(.rodata);
@@ -410,7 +406,8 @@ SECTIONS {
data/naming_screen.o(.rodata);
data/money.o(.rodata);
data/contest_effect.o(.rodata);
- data/record_mixing.o(.rodata);
+ src/record_mixing.o(.data);
+ src/record_mixing.o(.rodata);
src/sound_check_menu.o(.rodata);
data/secret_base.o(.rodata);
data/tv.o(.rodata);
@@ -430,7 +427,7 @@ SECTIONS {
data/mail.o(.rodata);
src/menu_helpers.o(.rodata);
src/heal_location.o(.rodata);
- data/region_map.o(.rodata);
+ src/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
src/decoration.o(.rodata);
data/slot_machine.o(.rodata);
diff --git a/src/battle_records.c b/src/battle_records.c
index cf86787f0..61dc09792 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -1,7 +1,244 @@
#include "global.h"
#include "battle_records.h"
+#include "game_stat.h"
+#include "link.h"
#include "menu.h"
+#include "rom4.h"
+#include "string_util.h"
#include "strings2.h"
+#include "trainer_card.h"
+
+extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
+extern u8 gBattleOutcome;
+
+static void InitLinkBattleRecord(struct LinkBattleRecord *record)
+{
+ CpuFill16(0, record, sizeof(struct LinkBattleRecord));
+ record->name[0] = 0xFF;
+ record->trainerId = 0;
+ record->wins = 0;
+ record->losses = 0;
+ record->draws = 0;
+}
+
+static void InitLinkBattleRecords_(struct LinkBattleRecord *records)
+{
+ int i;
+ for (i = 0; i < 5; i++)
+ {
+ InitLinkBattleRecord(records + i);
+ }
+ SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0);
+ SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0);
+ SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0);
+}
+
+static int GetLinkBattleRecordTotalBattles(struct LinkBattleRecord *record)
+{
+ return record->wins + record->losses + record->draws;
+}
+
+static int FindLinkBattleRecord(struct LinkBattleRecord *records, u8 *name, u16 trainerId)
+{
+ int i;
+
+ for (i = 0; i < 5; i++)
+ {
+ memcpy(gStringVar1, records[i].name, 7);
+ gStringVar1[7] = EOS;
+ if (!StringCompareWithoutExtCtrlCodes(gStringVar1, name) && records[i].trainerId == trainerId)
+ return i;
+ }
+
+ return 5;
+}
+
+static void SortLinkBattleRecords(struct LinkBattleRecord *records)
+{
+ int i, j;
+
+ for (i = 4; i > 0; i--)
+ {
+ for (j = i - 1; j >= 0; j--)
+ {
+ int totalBattlesI = GetLinkBattleRecordTotalBattles(records + i);
+ int totalBattlesJ = GetLinkBattleRecordTotalBattles(records + j);
+
+ if (totalBattlesI > totalBattlesJ)
+ {
+ struct LinkBattleRecord temp = *(records + i);
+ *(records + i) = *(records + j);
+ *(records + j) = temp;
+ }
+ }
+ }
+}
+
+static void UpdateLinkBattleRecord(struct LinkBattleRecord *record, int battleOutcome)
+{
+ switch (battleOutcome)
+ {
+ case 1:
+ record->wins++;
+ if (record->wins > 9999)
+ record->wins = 9999;
+ break;
+ case 2:
+ record->losses++;
+ if (record->losses > 9999)
+ record->losses = 9999;
+ break;
+ case 3:
+ record->draws++;
+ if (record->draws > 9999)
+ record->draws = 9999;
+ break;
+ }
+}
+
+static void UpdateLinkBattleGameStats(int battleOutcome)
+{
+ u8 stat;
+
+ switch (battleOutcome)
+ {
+ case 1:
+ stat = GAME_STAT_LINK_BATTLE_WINS;
+ break;
+ case 2:
+ stat = GAME_STAT_LINK_BATTLE_LOSSES;
+ break;
+ case 3:
+ stat = GAME_STAT_LINK_BATTLE_DRAWS;
+ break;
+ default:
+ return;
+ }
+
+ if (GetGameStat(stat) < 9999)
+ IncrementGameStat(stat);
+}
+
+static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, u8 *name, u16 trainerId, int battleOutcome, u8 language)
+{
+ int index;
+ UpdateLinkBattleGameStats(battleOutcome);
+ SortLinkBattleRecords(records);
+ index = FindLinkBattleRecord(records, name, trainerId);
+ if (index == 5)
+ {
+ index = 4;
+ InitLinkBattleRecord(records + index);
+ if (language == LANGUAGE_JAPANESE)
+ {
+ records[index].name[0] = EXT_CTRL_CODE_BEGIN;
+ records[index].name[1] = 0x15;
+ StringCopyN(records[index].name + 2, name, 5);
+ }
+ else
+ {
+ StringCopyN(records[index].name, name, 7);
+ }
+
+ // needed block to match
+ {
+ struct LinkBattleRecord *record = records + index;
+ record->trainerId = trainerId;
+ }
+ }
+ UpdateLinkBattleRecord(records + index, battleOutcome);
+ SortLinkBattleRecords(records);
+}
+
+void InitLinkBattleRecords(void)
+{
+ InitLinkBattleRecords_(gSaveBlock1.linkBattleRecords);
+}
+
+static void IncTrainerCardWins(int id)
+{
+ u16 *wins = &gTrainerCards[id].linkBattleWins;
+ (*wins)++;
+ if (*wins > 9999)
+ *wins = 9999;
+}
+
+static void IncTrainerCardLosses(int id)
+{
+ u16 *losses = &gTrainerCards[id].linkBattleLosses;
+ (*losses)++;
+ if (*losses > 9999)
+ *losses = 9999;
+}
+
+static void UpdateTrainerCardWinsLosses(int id)
+{
+ switch (gBattleOutcome)
+ {
+ case 1:
+ IncTrainerCardWins(id ^ 1);
+ IncTrainerCardLosses(id);
+ break;
+ case 2:
+ IncTrainerCardLosses(id ^ 1);
+ IncTrainerCardWins(id);
+ break;
+ }
+}
+
+void UpdateLinkBattleRecords(int id)
+{
+ UpdateTrainerCardWinsLosses(id);
+ UpdateLinkBattleRecords_(
+ gSaveBlock1.linkBattleRecords,
+ gTrainerCards[id].playerName,
+ gTrainerCards[id].trainerId,
+ gBattleOutcome,
+ gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
+}
+
+static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records)
+{
+ ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ ConvertIntToDecimalStringN_DigitWidth6(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ ConvertIntToDecimalStringN_DigitWidth6(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gOtherText_WinRecord, 3, 3);
+}
+
+static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
+{
+ if (!record->wins && !record->losses && !record->draws)
+ {
+ u8 buffer[16];
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x14;
+ buffer[2] = 6;
+ buffer[3] = EXT_CTRL_CODE_BEGIN;
+ buffer[4] = 0x11;
+ buffer[5] = 1;
+ StringCopy(buffer + 6, gOtherText_SevenDashes);
+ MenuPrint(buffer, 3, y);
+ StringCopy(buffer + 6, gOtherText_FourDashes);
+ MenuPrint(buffer, 11, y);
+ MenuPrint(buffer, 17, y);
+ MenuPrint(buffer, 23, y);
+ }
+ else
+ {
+ StringFillWithTerminator(gStringVar1, 8);
+ StringCopyN(gStringVar1, record->name, 7);
+ MenuPrint(gStringVar1, 3, y);
+ gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
+ gStringVar1[1] = 0x14;
+ gStringVar1[2] = 6;
+ ConvertIntToDecimalStringN(gStringVar1 + 3, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gStringVar1, 11, y);
+ ConvertIntToDecimalStringN(gStringVar1 + 3, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gStringVar1, 17, y);
+ ConvertIntToDecimalStringN(gStringVar1 + 3, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gStringVar1, 23, y);
+ }
+}
void ShowLinkBattleRecords(void) {
s32 i;
@@ -12,11 +249,86 @@ void ShowLinkBattleRecords(void) {
#if ENGLISH
MenuPrint(gOtherText_WinLoseDraw, 12, 6);
#elif GERMAN
- MenuPrint_PixelCoords((u8 *) gOtherText_WinLoseDraw, 88, 48, 1);
+ MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1);
#endif
for (i = 0; i < 5; i++)
{
- PrintLinkBattleRecord(gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2);
+ PrintLinkBattleRecord(&gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2);
+ }
+}
+
+static bool32 sub_8110494(u8 level)
+{
+ struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8;
+
+ switch (sb2sub->var_4AE[level])
+ {
+ case 0:
+ return FALSE;
+ case 1:
+ return FALSE;
+ case 2:
+ return TRUE;
+ case 4:
+ return FALSE;
+ case 3:
+ return TRUE;
+ case 5:
+ return FALSE;
+ case 6:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top)
+{
+ MenuPrint(str, left, top);
+ if (streak > 9999)
+ streak = 9999;
+ sub_8072C14(gStringVar1, streak, 24, 1);
+ MenuPrint(gOtherText_WinStreak, left + 7, top);
+}
+
+static void PrintRecordWinStreak(u8 level, u8 left, u8 top)
+{
+ struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8;
+ u16 winStreak = sb2sub->recordWinStreak[level];
+ PrintWinStreak(gOtherText_Record, winStreak, left, top);
+}
+
+static u16 GetLastWinStreak(u8 level)
+{
+ u16 result = gSaveBlock2.filler_A8.winStreak[level];
+ if (result > 9999)
+ result = 9999;
+ return result;
+}
+
+static void PrintLastWinStreak(u8 level, u8 left, u8 top)
+{
+ u16 winStreak = GetLastWinStreak(level);
+ if (sub_8110494(level) == TRUE)
+ PrintWinStreak(gOtherText_Current, winStreak, left, top);
+ else
+ PrintWinStreak(gOtherText_Prev, winStreak, left, top);
+}
+
+void ShowBattleTowerRecords(void)
+{
+ u16 i;
+ MenuDrawTextWindow(3, 1, 27, 17);
+ sub_8072BD8(gOtherText_BattleTowerResults, 3, 2, 0xC8);
+ MenuPrint(gOtherText_Lv50, 5, 6);
+ MenuPrint(gOtherText_Lv100, 5, 12);
+ for (i = 5; i < 26; i++)
+ {
+ sub_8071F60(CHAR_HYPHEN, i, 10);
}
+ PrintLastWinStreak(0, 10, 6);
+ PrintRecordWinStreak(0, 10, 8);
+ PrintLastWinStreak(1, 10, 12);
+ PrintRecordWinStreak(1, 10, 14);
}
diff --git a/src/data/region_map_layout.h b/src/data/region_map_layout.h
new file mode 100644
index 000000000..ca33ef37a
--- /dev/null
+++ b/src/data/region_map_layout.h
@@ -0,0 +1,42 @@
+// Abbreviated definitions to make the map layout more visual
+#define R(routeNum) MAPSEC_ROUTE_##routeNum
+#define LITT_T MAPSEC_LITTLEROOT_TOWN
+#define OLDA_T MAPSEC_OLDALE_TOWN
+#define DEWF_T MAPSEC_DEWFORD_TOWN
+#define LAVA_T MAPSEC_LAVARIDGE_TOWN
+#define FALL_T MAPSEC_FALLARBOR_TOWN
+#define VERD_T MAPSEC_VERDANTURF_TOWN
+#define PACI_T MAPSEC_PACIFIDLOG_TOWN
+#define PETA_C MAPSEC_PETALBURG_CITY
+#define SLAT_C MAPSEC_SLATEPORT_CITY
+#define MAUV_C MAPSEC_MAUVILLE_CITY
+#define RUST_C MAPSEC_RUSTBORO_CITY
+#define FORT_C MAPSEC_FORTREE_CITY
+#define LILY_C MAPSEC_LILYCOVE_CITY
+#define MOSS_C MAPSEC_MOSSDEEP_CITY
+#define SOOT_C MAPSEC_SOOTOPOLIS_CITY
+#define EVER_C MAPSEC_EVER_GRANDE_CITY
+#define MTCHIM MAPSEC_MT_CHIMNEY
+#define SAFARI MAPSEC_SAFARI_ZONE
+#define BTLTWR MAPSEC_BATTLE_TOWER
+#define S_ISLD MAPSEC_SOUTHERN_ISLAND
+#define ______ MAPSEC_NONE
+
+static const u8 sRegionMapLayout[] =
+{
+ ______, R(114), R(114), FALL_T, R(113), R(113), R(113), R(113), R(111), ______, ______, R(119), FORT_C, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ ______, R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ R(115), R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, SAFARI, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ R(115), ______, ______, ______, ______, LAVA_T, R(112), R(112), R(111), ______, ______, R(119), ______, R(120), R(121), R(121), R(121), R(121), LILY_C, LILY_C, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______,
+ R(115), ______, ______, ______, ______, ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______,
+ RUST_C, R(116), R(116), R(116), R(116), ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), MOSS_C, MOSS_C, ______, ______,
+ RUST_C, ______, ______, ______, VERD_T, R(117), R(117), R(117), MAUV_C, MAUV_C, R(118), R(118), R(123), R(123), R(123), R(123), R(123), ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, ______,
+ R(104), ______, ______, ______, ______, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), SOOT_C, R(126), R(127), R(127), R(127), ______, ______,
+ R(104), ______, ______, ______, R(103), R(103), R(103), R(103), R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, EVER_C,
+ R(104), PETA_C, R(102), R(102), OLDA_T, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(128), R(128), R(128), R(128), EVER_C,
+ R(105), ______, ______, ______, R(101), ______, ______, ______, SLAT_C, R(134), R(134), R(134), R(133), R(133), R(133), R(132), R(132), PACI_T, R(131), R(131), R(131), R(130), R(130), R(130), R(129), R(129), ______, ______,
+ R(105), ______, ______, ______, LITT_T, ______, ______, ______, SLAT_C, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ R(105), ______, ______, ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, BTLTWR, ______, ______, ______, ______, ______,
+ R(106), R(106), R(106), ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ ______, ______, DEWF_T, R(107), R(107), R(107), R(108), R(108), R(109), ______, ______, ______, S_ISLD, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+};
diff --git a/src/data/region_map_names_de.h b/src/data/region_map_names_de.h
new file mode 100644
index 000000000..10f53c8ba
--- /dev/null
+++ b/src/data/region_map_names_de.h
@@ -0,0 +1,79 @@
+const u8 gMapName_LittlerootTown[] = _("WURZELHEIM");
+const u8 gMapName_OldaleTown[] = _("ROSALTSTADT");
+const u8 gMapName_DewfordTown[] = _("FAUSTAUHAVEN");
+const u8 gMapName_LavaridgeTown[] = _("BAD LAVASTADT");
+const u8 gMapName_FallarborTown[] = _("LAUBWECHSEL{NAME_END}FELD");
+const u8 gMapName_VerdanturfTown[] = _("WIESENFLUR");
+const u8 gMapName_PacifidlogTown[] = _("FLOSSBRUNN");
+const u8 gMapName_PetalburgCity[] = _("BLÜTENBURG{NAME_END} CITY");
+const u8 gMapName_SlateportCity[] = _("GRAPHITPORT{NAME_END} CITY");
+const u8 gMapName_MauvilleCity[] = _("MALVENFROH{NAME_END} CITY");
+const u8 gMapName_RustboroCity[] = _("METAROST{NAME_END} CITY");
+const u8 gMapName_FortreeCity[] = _("BAUMHAUSEN{NAME_END} CITY");
+const u8 gMapName_LilycoveCity[] = _("SEEGRASULB{NAME_END} CITY");
+const u8 gMapName_MossdeepCity[] = _("MOOSBACH{NAME_END} CITY");
+const u8 gMapName_SootopolisCity[] = _("XENEROVILLE");
+const u8 gMapName_EverGrandeCity[] = _("PRACHTPOLIS{NAME_END} CITY");
+const u8 gMapName_Route101[] = _("ROUTE 101");
+const u8 gMapName_Route102[] = _("ROUTE 102");
+const u8 gMapName_Route103[] = _("ROUTE 103");
+const u8 gMapName_Route104[] = _("ROUTE 104");
+const u8 gMapName_Route105[] = _("ROUTE 105");
+const u8 gMapName_Route106[] = _("ROUTE 106");
+const u8 gMapName_Route107[] = _("ROUTE 107");
+const u8 gMapName_Route108[] = _("ROUTE 108");
+const u8 gMapName_Route109[] = _("ROUTE 109");
+const u8 gMapName_Route110[] = _("ROUTE 110");
+const u8 gMapName_Route111[] = _("ROUTE 111");
+const u8 gMapName_Route112[] = _("ROUTE 112");
+const u8 gMapName_Route113[] = _("ROUTE 113");
+const u8 gMapName_Route114[] = _("ROUTE 114");
+const u8 gMapName_Route115[] = _("ROUTE 115");
+const u8 gMapName_Route116[] = _("ROUTE 116");
+const u8 gMapName_Route117[] = _("ROUTE 117");
+const u8 gMapName_Route118[] = _("ROUTE 118");
+const u8 gMapName_Route119[] = _("ROUTE 119");
+const u8 gMapName_Route120[] = _("ROUTE 120");
+const u8 gMapName_Route121[] = _("ROUTE 121");
+const u8 gMapName_Route122[] = _("ROUTE 122");
+const u8 gMapName_Route123[] = _("ROUTE 123");
+const u8 gMapName_Route124[] = _("ROUTE 124");
+const u8 gMapName_Route125[] = _("ROUTE 125");
+const u8 gMapName_Route126[] = _("ROUTE 126");
+const u8 gMapName_Route127[] = _("ROUTE 127");
+const u8 gMapName_Route128[] = _("ROUTE 128");
+const u8 gMapName_Route129[] = _("ROUTE 129");
+const u8 gMapName_Route130[] = _("ROUTE 130");
+const u8 gMapName_Route131[] = _("ROUTE 131");
+const u8 gMapName_Route132[] = _("ROUTE 132");
+const u8 gMapName_Route133[] = _("ROUTE 133");
+const u8 gMapName_Route134[] = _("ROUTE 134");
+const u8 gMapName_Underwater[] = _("UNTERWASSER");
+const u8 gMapName_GraniteCave[] = _("GRANITHÖHLE");
+const u8 gMapName_MtChimney[] = _("SCHLOTBERG");
+const u8 gMapName_SafariZone[] = _("SAFARI-ZONE");
+const u8 gMapName_BattleTower[] = _("DUELLTURM");
+const u8 gMapName_PetalburgWoods[] = _("BLÜTENBURGWALD");
+const u8 gMapName_RusturfTunnel[] = _("METAFLURTUNNEL");
+const u8 gMapName_AbandonedShip[] = _("SCHIFFSWRACK");
+const u8 gMapName_NewMauville[] = _("NEU MALVENFROH");
+const u8 gMapName_MeteorFalls[] = _("METEORFÄLLE");
+const u8 gMapName_MtPyre[] = _("PYROBERG");
+const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM}s VERSTECK");
+const u8 gMapName_ShoalCave[] = _("KÜSTENHÖHLE");
+const u8 gMapName_SeafloorCavern[] = _("TIEFSEEHÖHLE");
+const u8 gMapName_VictoryRoad[] = _("SIEGESSTRASSE");
+const u8 gMapName_MirageIsland[] = _("WUNDEREILAND");
+const u8 gMapName_CaveOfOrigin[] = _("URZEITHÖHLE");
+const u8 gMapName_SouthernIsland[] = _("INSEL IM SÜDEN");
+const u8 gMapName_FieryPath[] = _("FEURIGER PFAD");
+const u8 gMapName_JaggedPass[] = _("STEILPASS");
+const u8 gMapName_SealedChamber[] = _("SIEGELKAMMER");
+const u8 gMapName_ScorchedSlab[] = _("SONNENGROTTE");
+const u8 gMapName_IslandCave[] = _("INSELHÖHLE");
+const u8 gMapName_DesertRuins[] = _("WÜSTENRUINE");
+const u8 gMapName_AncientTomb[] = _("GRABMAL");
+const u8 gMapName_InsideOfTruck[] = _("IM MÖBELWAGEN");
+const u8 gMapName_SkyPillar[] = _("HIMMELTURM");
+const u8 gMapName_SecretBase[] = _("GEHEIMBASIS");
+const u8 gMapName_None[] = _("");
diff --git a/src/data/region_map_names_en.h b/src/data/region_map_names_en.h
new file mode 100644
index 000000000..9dde3d71a
--- /dev/null
+++ b/src/data/region_map_names_en.h
@@ -0,0 +1,79 @@
+const u8 gMapName_LittlerootTown[] = _("LITTLEROOT{NAME_END} TOWN");
+const u8 gMapName_OldaleTown[] = _("OLDALE{NAME_END} TOWN");
+const u8 gMapName_DewfordTown[] = _("DEWFORD{NAME_END} TOWN");
+const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE{NAME_END} TOWN");
+const u8 gMapName_FallarborTown[] = _("FALLARBOR{NAME_END} TOWN");
+const u8 gMapName_VerdanturfTown[] = _("VERDANTURF{NAME_END} TOWN");
+const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG{NAME_END} TOWN");
+const u8 gMapName_PetalburgCity[] = _("PETALBURG{NAME_END} CITY");
+const u8 gMapName_SlateportCity[] = _("SLATEPORT{NAME_END} CITY");
+const u8 gMapName_MauvilleCity[] = _("MAUVILLE{NAME_END} CITY");
+const u8 gMapName_RustboroCity[] = _("RUSTBORO{NAME_END} CITY");
+const u8 gMapName_FortreeCity[] = _("FORTREE{NAME_END} CITY");
+const u8 gMapName_LilycoveCity[] = _("LILYCOVE{NAME_END} CITY");
+const u8 gMapName_MossdeepCity[] = _("MOSSDEEP{NAME_END} CITY");
+const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS{NAME_END} CITY");
+const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE{NAME_END} CITY");
+const u8 gMapName_Route101[] = _("ROUTE 101");
+const u8 gMapName_Route102[] = _("ROUTE 102");
+const u8 gMapName_Route103[] = _("ROUTE 103");
+const u8 gMapName_Route104[] = _("ROUTE 104");
+const u8 gMapName_Route105[] = _("ROUTE 105");
+const u8 gMapName_Route106[] = _("ROUTE 106");
+const u8 gMapName_Route107[] = _("ROUTE 107");
+const u8 gMapName_Route108[] = _("ROUTE 108");
+const u8 gMapName_Route109[] = _("ROUTE 109");
+const u8 gMapName_Route110[] = _("ROUTE 110");
+const u8 gMapName_Route111[] = _("ROUTE 111");
+const u8 gMapName_Route112[] = _("ROUTE 112");
+const u8 gMapName_Route113[] = _("ROUTE 113");
+const u8 gMapName_Route114[] = _("ROUTE 114");
+const u8 gMapName_Route115[] = _("ROUTE 115");
+const u8 gMapName_Route116[] = _("ROUTE 116");
+const u8 gMapName_Route117[] = _("ROUTE 117");
+const u8 gMapName_Route118[] = _("ROUTE 118");
+const u8 gMapName_Route119[] = _("ROUTE 119");
+const u8 gMapName_Route120[] = _("ROUTE 120");
+const u8 gMapName_Route121[] = _("ROUTE 121");
+const u8 gMapName_Route122[] = _("ROUTE 122");
+const u8 gMapName_Route123[] = _("ROUTE 123");
+const u8 gMapName_Route124[] = _("ROUTE 124");
+const u8 gMapName_Route125[] = _("ROUTE 125");
+const u8 gMapName_Route126[] = _("ROUTE 126");
+const u8 gMapName_Route127[] = _("ROUTE 127");
+const u8 gMapName_Route128[] = _("ROUTE 128");
+const u8 gMapName_Route129[] = _("ROUTE 129");
+const u8 gMapName_Route130[] = _("ROUTE 130");
+const u8 gMapName_Route131[] = _("ROUTE 131");
+const u8 gMapName_Route132[] = _("ROUTE 132");
+const u8 gMapName_Route133[] = _("ROUTE 133");
+const u8 gMapName_Route134[] = _("ROUTE 134");
+const u8 gMapName_Underwater[] = _("UNDERWATER");
+const u8 gMapName_GraniteCave[] = _("GRANITE CAVE");
+const u8 gMapName_MtChimney[] = _("MT. CHIMNEY");
+const u8 gMapName_SafariZone[] = _("SAFARI ZONE");
+const u8 gMapName_BattleTower[] = _("BATTLE TOWER");
+const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS");
+const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL");
+const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP");
+const u8 gMapName_NewMauville[] = _("NEW MAUVILLE");
+const u8 gMapName_MeteorFalls[] = _("METEOR FALLS");
+const u8 gMapName_MtPyre[] = _("MT. PYRE");
+const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM} HIDEOUT");
+const u8 gMapName_ShoalCave[] = _("SHOAL CAVE");
+const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN");
+const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD");
+const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND");
+const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN");
+const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND");
+const u8 gMapName_FieryPath[] = _("FIERY PATH");
+const u8 gMapName_JaggedPass[] = _("JAGGED PASS");
+const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER");
+const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB");
+const u8 gMapName_IslandCave[] = _("ISLAND CAVE");
+const u8 gMapName_DesertRuins[] = _("DESERT RUINS");
+const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB");
+const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK");
+const u8 gMapName_SkyPillar[] = _("SKY PILLAR");
+const u8 gMapName_SecretBase[] = _("SECRET BASE");
+const u8 gMapName_None[] = _("");
diff --git a/src/field_region_map.c b/src/field_region_map.c
index 58b0e37bc..7cb22e5df 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -19,11 +19,13 @@ struct UnkStruct
{
MainCallback callback;
u8 filler[4];
+ // This should be RegionMap, but I can't do that because it overlaps unk888.
struct RegionMapStruct unk8;
u16 unk888;
};
-extern struct UnkStruct unk_2000000;
+extern u8 ewram[];
+#define unk_2000000 (*(struct UnkStruct *)(ewram))
void FieldInitRegionMap(MainCallback callback)
{
@@ -46,9 +48,10 @@ void CB2_FieldInitRegionMap(void)
REG_BG3VOFS = 0;
ResetSpriteData();
FreeAllSpritePalettes();
- sub_80FA8EC((u32)&unk_2000000.unk8, 0);
- sub_80FBCF0(0, 0);
- sub_80FBB3C(1, 1);
+ // TODO: remove this cast
+ InitRegionMap((void *)&unk_2000000.unk8, 0);
+ CreateRegionMapPlayerIcon(0, 0);
+ CreateRegionMapCursor(1, 1);
SetUpWindowConfig(&gWindowConfig_81E709C);
InitMenuWindow(&gWindowConfig_81E709C);
MenuZeroFillScreen();
@@ -107,7 +110,7 @@ void sub_813EFDC(void)
case 4:
if (!gPaletteFade.active)
{
- sub_80FAB10();
+ FreeRegionMapIconResources();
SetMainCallback2(unk_2000000.callback);
}
break;
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
new file mode 100644
index 000000000..c6bd8cb77
--- /dev/null
+++ b/src/field_screen_effect.c
@@ -0,0 +1,339 @@
+#include "global.h"
+#include "field_camera.h"
+#include "menu.h"
+#include "palette.h"
+#include "rom4.h"
+#include "script.h"
+#include "task.h"
+#include "text.h"
+#include "unknown_task.h"
+
+struct UnknownStruct1
+{
+ u8 filler0[0x14];
+ u8 unk14;
+ u8 filler15[0xB];
+};
+extern struct UnknownStruct1 gUnknown_03004DC0;
+
+extern u16 gUnknown_03004DE0[][0x3C0];
+
+const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 };
+
+const s32 gUnknown_0839ACE8 = 4;
+
+const static u32 gUnknown_0839ACEC[3] =
+{
+ REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1
+};
+
+static void sub_808136C(u16 *dest, u32 a2, s32 a3, s32 a4)
+{
+ if (a2 <= 0xA0)
+ {
+ if (a3 < 0)
+ a3 = 0;
+ if (a3 > 255)
+ a3 = 255;
+ if (a4 < 0)
+ a4 = 0;
+ if (a4 > 255)
+ a4 = 255;
+ dest[a2] = (a3 << 8) | a4;
+ }
+}
+
+static void sub_8081398(u16 *dest, s32 a2, s32 a3, s32 a4)
+{
+ s32 v1 = a4;
+ s32 v2 = a4;
+ s32 v3 = 0;
+ while (v1 >= v3)
+ {
+ sub_808136C(dest, a3 - v3, a2 - v1, a2 + v1);
+ sub_808136C(dest, a3 + v3, a2 - v1, a2 + v1);
+ sub_808136C(dest, a3 - v1, a2 - v3, a2 + v3);
+ sub_808136C(dest, a3 + v1, a2 - v3, a2 + v3);
+ v2 -= (v3 * 2) - 1;
+ v3++;
+ if (v2 < 0)
+ {
+ v2 += 2 * (v1 - 1);
+ v1--;
+ }
+ }
+}
+
+static void sub_8081424(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]);
+ data[0] = 1;
+ break;
+ case 1:
+ sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]);
+ data[0] = 0;
+ data[3] += data[5];
+ if (data[3] > data[4])
+ {
+ if (data[6] == 1)
+ {
+ remove_some_task();
+ data[0] = 2;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ }
+ }
+ break;
+ case 2:
+ dp12_8087EA4();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_80814E8(u8 taskId)
+{
+ if (!FuncIsActiveTask(sub_8081424))
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8081510(void)
+{
+ if (!FuncIsActiveTask(sub_80814E8))
+ CreateTask(sub_80814E8, 80);
+}
+
+static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6)
+{
+ u8 taskId = CreateTask(sub_8081424, 80);
+ s16 *data = gTasks[taskId].data;
+
+ data[3] = a3;
+ data[4] = a4;
+ data[1] = a1;
+ data[2] = a2;
+ data[6] = a5;
+
+ if (a3 < a4)
+ data[5] = a6;
+ else
+ data[5] = -a6;
+
+ return taskId;
+}
+
+void sub_8081594(u8 a1)
+{
+ u8 index = sav1_get_flash_used_on_map();
+ u8 value = 0;
+ if (!a1)
+ value = 1;
+ sub_8081534(120, 80, gUnknown_0839ACDC[index], gUnknown_0839ACDC[a1], value, 1);
+ sub_8081510();
+ ScriptContext2_Enable();
+}
+
+void sub_80815E0(u8 a1)
+{
+ if (a1)
+ {
+ sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]);
+ CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
+ }
+}
+
+static void sub_808161C(u8 a1)
+{
+ int i;
+ u16 color[1];
+
+ if (!a1)
+ color[0] = 0x1F;
+ else
+ color[0] = 0x7C00;
+
+ for (i = 0; i < 16; i++)
+ {
+ LoadPalette(color, 0xF0 + i, 2);
+ }
+}
+
+static bool8 sub_8081658(u16 a1)
+{
+ u8 lo = REG_BLDALPHA & 0xFF;
+ u8 hi = REG_BLDALPHA >> 8;
+
+ if (a1)
+ {
+ if (lo)
+ {
+ lo--;
+ }
+ }
+ else
+ {
+ if (hi < 0x10)
+ {
+ hi++;
+ }
+ }
+
+ REG_BLDALPHA = (hi << 8) | lo;
+
+ if (lo == 0 && hi == 0x10)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_80816A8(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[6] = REG_DISPCNT;
+ data[7] = REG_BLDCNT;
+ data[8] = REG_BLDALPHA;
+ data[9] = REG_WININ;
+ data[10] = REG_WINOUT;
+ REG_DISPCNT &= 0xBFFF;
+ REG_BLDCNT |= gUnknown_081E29E8[0];
+ REG_BLDALPHA = 1804;
+ REG_WININ = 63;
+ REG_WINOUT = 30;
+ sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1);
+ CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
+ sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
+ data[0] = 1;
+ break;
+ case 1:
+ MenuFillWindowRectWithBlankTile(0, 0, 29, 19);
+ sub_808161C(data[1]);
+ sub_8081534(data[2], data[3], 1, 160, 1, 2);
+ data[0] = 2;
+ break;
+ case 2:
+ if (!FuncIsActiveTask(sub_8081424))
+ {
+ EnableBothScriptContexts();
+ data[0] = 3;
+ }
+ break;
+ case 3:
+ InstallCameraPanAheadCallback();
+ SetCameraPanningCallback(NULL);
+ data[5] = 0;
+ data[4] = 4;
+ data[0] = 4;
+ break;
+ case 4:
+ data[4]--;
+ if (!data[4])
+ {
+ s32 panning;
+ data[4] = 4;
+ data[5] ^= 1;
+ if (data[5])
+ panning = 4;
+ else
+ panning = -4;
+ SetCameraPanning(0, panning);
+ }
+ break;
+ case 6:
+ InstallCameraPanAheadCallback();
+ data[4] = 8;
+ data[0] = 7;
+ break;
+ case 7:
+ data[4]--;
+ if (!data[4])
+ {
+ data[4] = 8;
+ data[5] ^= 1;
+ if (sub_8081658(data[5]) == TRUE)
+ data[0] = 5;
+ }
+ break;
+ case 5:
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ LoadFontDefaultPalette(&gWindowConfig_81E6CE4);
+ REG_WIN0H = 255;
+ REG_DISPCNT = data[6];
+ REG_BLDCNT = data[7];
+ REG_BLDALPHA = data[8];
+ REG_WININ = data[9];
+ REG_WINOUT = data[10];
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80818A4(void)
+{
+ u8 taskId = CreateTask(sub_80816A8, 80);
+ s16 *data = gTasks[taskId].data;
+
+ if (gScriptResult == 0)
+ {
+ data[1] = 0;
+ data[2] = 104;
+ }
+ else if (gScriptResult == 1)
+ {
+ data[1] = 1;
+ data[2] = 104;
+ }
+ else if (gScriptResult == 2)
+ {
+ data[1] = 0;
+ data[2] = 120;
+ }
+ else
+ {
+ data[1] = 1;
+ data[2] = 120;
+ }
+
+ data[3] = 80;
+}
+
+void sub_80818FC(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80816A8);
+ gTasks[taskId].data[0] = 6;
+}
+
+static void task50_0807F0C8(u8);
+
+void sub_8081924(void)
+{
+ sub_8054044();
+ CreateTask(task50_0807F0C8, 80);
+}
+
+static void task50_0807F0C8(u8 taskId)
+{
+ if (sub_8054034() == TRUE)
+ {
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
diff --git a/src/field_specials.c b/src/field_specials.c
index 2b505bbfe..71de04f55 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1761,7 +1761,7 @@ u8 GetPokeblockNameByMonNature(void)
void GetSecretBaseNearbyMapName(void)
{
- sub_80FBFB4(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0);
+ GetMapSectionName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0);
}
u16 sub_810F404(void)
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index 303cc3d07..01105d0db 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -101,7 +101,7 @@ void DrawMapNamePopup(void)
u8 name[20];
MenuLoadTextWindowGraphics_OverrideFrameType(0);
- sub_80FBFB4(name, gMapHeader.name, 0);
+ GetMapSectionName(name, gMapHeader.regionMapSectionId, 0);
MenuDrawTextWindow(0, 0, 13, 3);
sub_8072BD8(name, 1, 1, 0x60);
}
diff --git a/src/menu.c b/src/menu.c
index d532fc602..ef458124b 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -180,7 +180,7 @@ void sub_8071F40(const u8 *str)
MenuPrint(str, 3, 15);
}
-void sub_8071F60(u8 a1, u8 a2, u8 a3, u8 a4)
+void sub_8071F60(u8 a1, u8 a2, u8 a3)
{
sub_8003490(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3);
}
@@ -710,7 +710,7 @@ _08072B3E:\n\
}
#endif
-void MenuPrint_RightAligned(u8 *str, u8 left, u8 top)
+void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top)
{
sub_8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index c55105ef3..231fc33ed 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -249,29 +249,30 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread)
{
s32 i;
- register u32 temp asm("r4");
s32 statCount = 0;
u16 evAmount;
- register u32 mask1 asm("r1");
- u8 mask2;
+ u8 temp;
CreateMon(mon, species, level, fixedIV, 0, 0, 0, 0);
+
temp = evSpread;
- mask1 = 1;
- for (i = 5; i >= 0; i--)
+
+ for (i = 0; i < 6; i++)
{
- if (temp & mask1)
+ if (temp & 1)
statCount++;
temp >>= 1;
}
evAmount = 510 / statCount;
- mask2 = 1;
+
+ temp = 1;
+
for (i = 0; i < 6; i++)
{
- if (evSpread & mask2)
+ if (evSpread & temp)
SetMonData(mon, MON_DATA_HP_EV + i, (u8 *)&evAmount);
- mask2 <<= 1;
+ temp <<= 1;
}
CalculateMonStats(mon);
@@ -443,23 +444,21 @@ void CalculateMonStats(struct Pokemon *mon)
if (species == SPECIES_SHEDINJA)
{
if (currentHP != 0 || oldMaxHP == 0)
- {
currentHP = 1;
- goto set_hp;
- }
+ else
+ return;
}
else
{
- if (currentHP != 0 || oldMaxHP == 0)
- {
- if (currentHP != 0)
- currentHP += newMaxHP - oldMaxHP;
- else if (oldMaxHP == 0)
- currentHP = newMaxHP;
- set_hp:
- SetMonData(mon, MON_DATA_HP, (u8 *)&currentHP);
- }
+ if (currentHP == 0 && oldMaxHP == 0)
+ currentHP = newMaxHP;
+ else if (currentHP != 0)
+ currentHP += newMaxHP - oldMaxHP;
+ else
+ return;
}
+
+ SetMonData(mon, MON_DATA_HP, (u8 *)&currentHP);
}
void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest)
diff --git a/src/record_mixing.c b/src/record_mixing.c
index e1a72cf2e..a8daa9220 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -6,11 +6,16 @@
#include "dewford_trend.h"
#include "event_data.h"
#include "fldeff_80C5CD4.h"
+#include "item.h"
+#include "items.h"
+#include "load_save.h"
#include "link.h"
#include "mauville_old_man.h"
#include "menu.h"
#include "mystery_event_script.h"
+#include "rng.h"
#include "rom4.h"
+#include "save.h"
#include "script.h"
#include "secret_base.h"
#include "songs.h"
@@ -20,25 +25,25 @@
#include "task.h"
#include "tv.h"
+extern u8 ewram[];
+#define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000))
+#define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000))
-extern void *recordMixingSecretBases;
-extern void *recordMixingTvShows;
-extern void *gUnknown_083D0274;
-extern void *gUnknown_083D0278;
-extern void *recordMixingEasyChatPairs;
-extern void *gUnknown_083D0284;
-extern u8 gUnknown_083D0288[2];
-extern u8 gUnknown_083D028A[2][3];
-extern u8 gUnknown_083D0290[9][4];
-
-extern struct RecordMixing_UnknownStruct gUnknown_02038738; //Don't know what type this points to
-extern struct RecordMixing_UnknownStruct *gUnknown_083D0280;
+extern struct RecordMixing_UnknownStruct gUnknown_02038738;
extern u16 gSpecialVar_0x8005;
extern u32 gUnknown_03005D2C;
extern u8 gUnknown_03000718;
extern u8 gUnknown_0300071C[];
extern bool8 gReceivedRemoteLinkPlayers;
+void *recordMixingSecretBases = &gSaveBlock1.secretBases;
+void *recordMixingTvShows = &gSaveBlock1.tvShows;
+void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC;
+void *gUnknown_083D0278 = &gSaveBlock1.oldMan;
+void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs;
+struct RecordMixing_UnknownStruct *gUnknown_083D0280 = &gUnknown_02038738;
+void *gUnknown_083D0284 = &gSaveBlock2.filler_A8;
+
#define BUFFER_CHUNK_SIZE 200
void sub_80B929C(void)
@@ -46,7 +51,8 @@ void sub_80B929C(void)
sub_8083A84(Task_RecordMixing_Main);
}
-struct PlayerRecords {
+struct PlayerRecords
+{
struct SecretBaseRecord secretBases[20];
TVShow tvShows[25];
u8 filler1004[0x40];
@@ -57,9 +63,6 @@ struct PlayerRecords {
u16 filler11C8[0x34];
};
-extern struct PlayerRecords unk_2008000;
-extern struct PlayerRecords unk_2018000;
-
void RecordMixing_PrepareExchangePacket(void)
{
sub_80BC300();
@@ -67,14 +70,14 @@ void RecordMixing_PrepareExchangePacket(void)
memcpy(unk_2018000.secretBases, recordMixingSecretBases, sizeof(unk_2018000.secretBases));
memcpy(unk_2018000.tvShows, recordMixingTvShows, sizeof(unk_2018000.tvShows));
- memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40);
- memcpy(unk_2018000.filler1044, gUnknown_083D0278, 0x40);
- memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28);
+ memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004));
+ memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044));
+ memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs));
gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0];
gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1];
sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738);
memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct));
- memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4);
+ memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124));
if (GetMultiplayerId() == 0)
unk_2018000.filler11C8[0] = sub_8126338();
@@ -86,71 +89,77 @@ void RecordMixing_ReceiveExchangePacket(u32 a)
sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a);
sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a);
sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a);
- //UB: Too many arguments for function "sub_80FA4E4"
sub_80FA4E4(unk_2008000.easyChatPairs, sizeof(struct PlayerRecords), a);
- sub_80B9C6C(&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows);
+ sub_80B9C6C((u8 *)&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows);
sub_80B9B70(unk_2008000.filler1124, sizeof(struct PlayerRecords), a);
sub_80B9F3C(unk_2008000.filler11C8, a);
}
+#define tCounter data[0]
+
void Task_RecordMixing_SoundEffect(u8 taskId)
{
- gTasks[taskId].data[0]++;
- if (gTasks[taskId].data[0] == 50)
+ gTasks[taskId].tCounter++;
+ if (gTasks[taskId].tCounter == 50)
{
PlaySE(SE_W213);
- gTasks[taskId].data[0] = 0;
+ gTasks[taskId].tCounter = 0;
}
}
-#define TD_STATE 0
+#undef tCounter
+
+
+#define tState data[0]
+#define tSndEffTaskId data[15]
+
void Task_RecordMixing_Main(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
- switch (taskData[TD_STATE])
+ switch (tState)
{
case 0: // init
sub_8007270(gSpecialVar_0x8005);
- VarSet(0x4000, 1);
+ VarSet(VAR_0x4000, 1);
gUnknown_03000718 = 0;
RecordMixing_PrepareExchangePacket();
CreateRecordMixingSprite();
- taskData[TD_STATE] = 1;
- taskData[10] = CreateTask(sub_80B95F0, 0x50);
- taskData[15] = CreateTask(Task_RecordMixing_SoundEffect, 0x51);
+ tState = 1;
+ data[10] = CreateTask(sub_80B95F0, 0x50);
+ tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 0x51);
break;
case 1: // wait for sub_80B95F0
- if (!gTasks[taskData[10]].isActive)
+ if (!gTasks[data[10]].isActive)
{
- taskData[TD_STATE] = 2;
+ tState = 2;
FlagSet(SYS_MIX_RECORD);
DestroyRecordMixingSprite();
- DestroyTask(taskData[15]);
+ DestroyTask(tSndEffTaskId);
}
break;
case 2:
- taskData[10] = CreateTask(sub_80BA00C, 10);
- taskData[TD_STATE] = 3;
+ data[10] = CreateTask(sub_80BA00C, 10);
+ tState = 3;
PlaySE(SE_W226);
break;
case 3: // wait for sub_80BA00C
- if (!gTasks[taskData[10]].isActive)
+ if (!gTasks[data[10]].isActive)
{
- taskData[TD_STATE] = 4;
- taskData[10] = sub_8083664();
+ tState = 4;
+ data[10] = sub_8083664();
sub_80720B0();
MenuPrint(gOtherText_MixingComplete, 2, 15);
- taskData[8] = 0;
+ data[8] = 0;
}
break;
case 4: // wait 60 frames
- taskData[8]++;
- if (taskData[8] > 60)
- taskData[TD_STATE] = 5;
+ data[8]++;
+ if (data[8] > 60)
+ tState = 5;
break;
case 5:
- if (!gTasks[taskData[10]].isActive)
+ if (!gTasks[data[10]].isActive)
{
sub_8055588();
MenuZeroFillScreen();
@@ -165,14 +174,14 @@ void sub_80B95F0(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[TD_STATE])
+ switch (task->tState)
{
case 0:
sub_80B9A78();
MenuDisplayMessageBox();
MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15);
task->data[8] = 0x708;
- task->data[TD_STATE] = 400;
+ task->tState = 400;
ClearLinkCallback_2();
break;
case 100: // wait 20 frames
@@ -180,48 +189,48 @@ void sub_80B95F0(u8 taskId)
if (task->data[12] > 20)
{
task->data[12] = 0;
- task->data[TD_STATE] = 101;
+ task->tState = 101;
}
break;
case 101:
- {
- u8 players = GetLinkPlayerCount_2();
-
- if (IsLinkMaster() == 1)
{
- if (players == sub_800820C())
+ u8 players = GetLinkPlayerCount_2();
+
+ if (IsLinkMaster() == 1)
{
- PlaySE(0x15);
- task->data[TD_STATE] = 201;
- task->data[12] = 0;
+ if (players == sub_800820C())
+ {
+ PlaySE(SE_PIN);
+ task->tState = 201;
+ task->data[12] = 0;
+ }
+ }
+ else
+ {
+ PlaySE(SE_BOO);
+ task->tState = 301;
}
- }
- else
- {
- PlaySE(0x16);
- task->data[TD_STATE] = 301;
}
break;
- }
case 201:
if (sub_800820C() == GetLinkPlayerCount_2())
{
if (++task->data[12] > GetLinkPlayerCount_2() * 30)
{
sub_8007F4C();
- task->data[TD_STATE] = 1;
+ task->tState = 1;
}
}
break;
case 301:
if (sub_800820C() == GetLinkPlayerCount_2())
- task->data[TD_STATE] = 1;
+ task->tState = 1;
break;
case 400: // wait 20 frames
task->data[12]++;
if (task->data[12] > 20)
{
- task->data[TD_STATE] = 1;
+ task->tState = 1;
task->data[12] = 0;
}
break;
@@ -229,31 +238,30 @@ void sub_80B95F0(u8 taskId)
if (gReceivedRemoteLinkPlayers)
{
ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2);
- task->data[TD_STATE] = 5;
+ task->tState = 5;
}
break;
case 2:
- {
- u8 subTaskId;
-
- task->data[6] = GetLinkPlayerCount_2();
- task->data[TD_STATE] = 0;
- task->data[5] = GetMultiplayerId_();
- task->func = Task_RecordMixing_SendPacket;
- StorePtrInTaskData(&unk_2018000, &task->data[2]);
- subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50);
- task->data[10] = subTaskId;
- gTasks[subTaskId].data[0] = taskId;
- //StorePtrInTaskData((void*)0x2008000, &gTasks[subTaskId].data[5]);
- StorePtrInTaskData((u8 *)&unk_2018000 - 0x10000, &gTasks[subTaskId].data[5]);
+ {
+ u8 subTaskId;
+
+ task->data[6] = GetLinkPlayerCount_2();
+ task->tState = 0;
+ task->data[5] = GetMultiplayerId_();
+ task->func = Task_RecordMixing_SendPacket;
+ StorePtrInTaskData(&unk_2018000, &task->data[2]);
+ subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50);
+ task->data[10] = subTaskId;
+ gTasks[subTaskId].data[0] = taskId;
+ StorePtrInTaskData((u8 *)&unk_2008000, &gTasks[subTaskId].data[5]);
+ }
break;
- }
case 5: // wait 60 frames
task->data[10]++;
if (task->data[10] > 60)
{
task->data[10] = 0;
- task->data[TD_STATE] = 2;
+ task->tState = 2;
}
break;
}
@@ -264,29 +272,29 @@ void Task_RecordMixing_SendPacket(u8 taskId)
struct Task *task = &gTasks[taskId];
// does this send the data 24 times?
- switch (task->data[TD_STATE])
+ switch (task->tState)
{
case 0: //Copy record data to send buffer
- {
- void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4];
+ {
+ void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4];
- memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
- task->data[TD_STATE]++;
+ memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
+ task->tState++;
+ }
break;
- }
case 1:
if (GetMultiplayerId() == 0)
sub_8007E9C(1);
- task->data[TD_STATE]++;
+ task->tState++;
break;
case 2:
break;
case 3:
task->data[4]++;
if ((u16)task->data[4] == 24)
- task->data[TD_STATE]++;
+ task->tState++;
else
- task->data[TD_STATE] = 0;
+ task->tState = 0;
break;
case 4:
if (!gTasks[task->data[10]].isActive)
@@ -325,7 +333,6 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId)
}
gTasks[task->data[0]].data[0]++;
}
- //_080B998A
if (handledPlayers == GetLinkPlayerCount())
DestroyTask(taskId);
}
@@ -353,15 +360,15 @@ void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId)
gUnknown_03000718 = 1;
}
-void *LoadPtrFromTaskData(u16 *ptr)
+void *LoadPtrFromTaskData(u16 *taskData)
{
- return (void *)(*ptr | *(ptr + 1) << 16);
+ return (void *)(taskData[0] | (taskData[1] << 16));
}
-void StorePtrInTaskData(void *ptr, u16 *data)
+void StorePtrInTaskData(void *ptr, u16 *taskData)
{
- *data = (u32)ptr;
- *(data + 1) = (u32)ptr >> 16;
+ taskData[0] = (u32)ptr;
+ taskData[1] = (u32)ptr >> 16;
}
u8 GetMultiplayerId_(void)
@@ -379,6 +386,27 @@ void sub_80B9A78(void)
gUnknown_03005D2C = sizeof(struct PlayerRecords);
}
+const u8 gUnknown_083D0288[2] = {1, 0};
+
+const u8 gUnknown_083D028A[2][3] =
+{
+ {1, 2, 0},
+ {2, 0, 1},
+};
+
+const u8 gUnknown_083D0290[9][4] =
+{
+ {1, 0, 3, 2},
+ {3, 0, 1, 2},
+ {2, 0, 3, 1},
+ {1, 3, 0, 2},
+ {2, 3, 0, 1},
+ {3, 2, 0, 1},
+ {1, 2, 3, 0},
+ {2, 3, 1, 0},
+ {3, 2, 1, 0},
+};
+
void sub_80B9A88(u8 *a)
{
u32 i;
@@ -430,101 +458,627 @@ u8 sub_80B9BBC(u16 *a)
return a[16];
}
-#undef NONMATCHING
-#ifdef NONMATCHING
+void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e)
+{
+ struct RecordMixing_UnknownStructSub *r6 = (struct RecordMixing_UnknownStructSub *)(a + b * c[d][0]);
+ struct RecordMixing_UnknownStructSub *src = r6 + c[d][1];
+ struct RecordMixing_UnknownStructSub sp0 = *src;
+ struct RecordMixing_UnknownStructSub *r8 = (struct RecordMixing_UnknownStructSub *)(a + b * c[e][0]);
-void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e)
+ r6 += c[d][1];
+ *r6 = *(r8 + c[e][1]);
+
+ r8 += c[e][1];
+ *r8 = sp0;
+}
+
+u8 sub_80B9C4C(u8 *a)
{
- struct RecordMixing_UnknownStructSub *offA;
- struct RecordMixing_UnknownStructSub *offB;
- struct RecordMixing_UnknownStructSub v0;
- v0 = (offA = ((struct RecordMixing_UnknownStruct *)(b * c[d][0] + (u32)&a))->data)[c[d][1]];
- offA[c[d][1]] = (offB = ((struct RecordMixing_UnknownStruct *)(b * c[e][0] + (u32)&a))->data)[c[e][1]];
- offB[c[e][1]] = v0;
- //ToDo: Figure out what this strange stack usage is
+ int i;
+ u8 r2 = 0;
+
+ for (i = 0; i < 0x100; i++)
+ r2 += a[i];
+ return r2;
}
+const u8 gUnknown_083D02B4[][2] =
+{
+ {0, 1},
+ {1, 2},
+ {2, 0},
+};
+
+const u8 gUnknown_083D02BA[3][4] =
+{
+ {0, 1, 2, 3},
+ {0, 2, 1, 3},
+ {0, 3, 2, 1},
+};
+
+#ifdef NONMATCHING
+void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
+{
+ u8 r8;
+ u8 sp4[4];
+ u8 sp8[4];
+ void *spC[4];
+ u8 sp1C[4][2];
+ u8 sp24[4][2];
+ u8 sp3C;
+ u16 sp40 = Random();
+ u16 i; // r3
+ u16 r7;
+ u8 r1;
+ struct RecordMixing_UnknownStruct *r6;
+
+ //asm("":::"r8");
+ SeedRng(gLinkPlayers[0].trainerId);
+ r8 = GetLinkPlayerCount();
+ for (i = 0; i < 4; i++)
+ {
+ sp4[i] = 0xFF;
+ sp8[i] = 0;
+ sp1C[i][0] = 0;
+ sp1C[i][1] = 0;
+ }
+ sp3C = 0;
+ for (i = 0; i < r8; i++)
+ {
+ r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ if (r6->unk70 != 0)
+ {
+ for (r7 = 0; r7 < r6->unk70; r7++)
+ {
+ if (r6->unk74[r7] == 0)
+ sp1C[i][r7] = 1;
+ }
+ }
+ //_080B9D3C
+ }
+ //_080B9D46
+ for (r7 = 0, i = 0; i < r8; i++)
+ {
+ r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ if (sp1C[i][0] == 1 || sp1C[i][1] == 1)
+ sp3C++;
+ if (sp1C[i][0] == 1 && sp1C[i][1] == 0)
+ {
+ sp24[r7][0] = i;
+ sp24[r7][1] = 0;
+ r7++;
+ }
+ else if (sp1C[i][0] == 0 && sp1C[i][1] == 1)
+ {
+ sp24[r7][0] = i;
+ sp24[r7][1] = 0;
+ r7++;
+ }
+ //else if (sp1C[i][0] == 1 + 1 && sp1C[i][1] + 1 == 1 + 1)
+ else if (sp1C[i][0] == 1 && sp1C[i][1] == 1)
+ {
+ u8 r4, r1;
+
+ sp24[r7][0] = i;
+ r4 = sub_80B9BBC((u16 *)&r6->data[0]);
+ r1 = sub_80B9BBC((u16 *)&r6->data[1]);
+
+ asm("");
+ if (r4 == 0 && r1 != 0)
+ sp24[r7][1] = 1;
+ else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0))
+ sp24[r7][1] = Random() % 2;
+ else
+ sp24[r7][1] = 0;
+ /*
+ if (r4 == 0 && r1 != 0)
+ sp24[r7][1] = 1;
+ else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0))
+ sp24[r7][1] = Random() % 2;
+ else
+ sp24[r7][1] = 0;
+ */
+
+ /*
+ if (r4 == 0 && r1 != 0)
+ sp24[r7][1] = 1;
+ else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0))
+ //sp24[r7][1] = ((Random() << 16) >> 16) % 2;
+ sp24[r7][1] = Random() % 2;
+ else
+ sp24[r7][1] = 0;
+ */
+ //_080B9E2C:
+ r7++;
+ }
+ }
+ //_080B9E3E
+ for (i = 0; i < 4; i++)
+ {
+ r6 = (struct RecordMixing_UnknownStruct *)a + b * c;
+ spC[i] = r6;
+ }
+ r1 = sub_80B9C4C(d) % 3;
+ switch (sp3C)
+ {
+ case 2:
+ sub_80B9BC4(a, b, (u8 *)sp24, 0, 1);
+ break;
+ case 3:
+ {
+ u8 var1 = gUnknown_083D02B4[r1][0];
+ u8 var2 = gUnknown_083D02B4[r1][1];
+ sub_80B9BC4(a, b, (u8 *)sp24, var1, var2);
+ }
+ break;
+ case 4:
+ {
+ u8 *r6 = (u8 *)sp24;
+ u8 var1 = gUnknown_083D02BA[r1][0];
+ u8 var2 = gUnknown_083D02BA[r1][1];
+ sub_80B9BC4(a, b, r6, var1, var2);
+ }
+ {
+ u8 *r6 = (u8 *)sp24;
+ u8 var1 = gUnknown_083D02BA[r1][2];
+ u8 var2 = gUnknown_083D02BA[r1][3];
+ sub_80B9BC4(a, b, r6, var1, var2);
+ }
+ break;
+ }
+ //_080B9EF0
+ //memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38);
+ //memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38);
+ r6 = (struct RecordMixing_UnknownStruct *)(a + b * c);
+ gSaveBlock1.filler_303C.data[0] = r6->data[0];
+ gSaveBlock1.filler_303C.data[1] = r6->data[1];
+ //memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38);
+ //memcpy(&gSaveBlock1.filler_303C.data[1], &r6->data[1], 0x38);
+ SeedRng(sp40);
+}
#else
__attribute__((naked))
-void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e)
+void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- mov r6, r10\n\
- mov r5, r9\n\
- mov r4, r8\n\
- push {r4-r6}\n\
- sub sp, 0x38\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x58\n\
+ str r0, [sp, 0x2C]\n\
+ str r1, [sp, 0x30]\n\
+ str r3, [sp, 0x38]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x34]\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x40]\n\
+ ldr r0, _080B9DA8 @ =gLinkPlayers\n\
+ ldrh r0, [r0, 0x4]\n\
+ bl SeedRng\n\
+ bl GetLinkPlayerCount\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
mov r8, r0\n\
+ movs r3, 0\n\
+ add r0, sp, 0x1C\n\
+ mov r9, r0\n\
+ movs r1, 0x1D\n\
+ add r1, sp\n\
mov r10, r1\n\
- mov r9, r2\n\
- adds r4, r3, 0\n\
- ldr r5, [sp, 0x54]\n\
- lsls r4, 24\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- lsrs r4, 23\n\
- add r4, r9\n\
- ldrb r0, [r4]\n\
- mov r6, r10\n\
- muls r6, r0\n\
- add r6, r8\n\
- ldrb r0, [r4, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- adds r1, r6, r1\n\
- mov r0, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- lsls r5, 1\n\
- add r5, r9\n\
- ldrb r0, [r5]\n\
- mov r1, r10\n\
- muls r1, r0\n\
+ mov r2, sp\n\
+ adds r2, 0xC\n\
+ str r2, [sp, 0x4C]\n\
+ movs r7, 0xFF\n\
+ add r4, sp, 0x8\n\
+ movs r2, 0\n\
+ mov r6, r9\n\
+ mov r5, r10\n\
+_080B9CBC:\n\
+ mov r1, sp\n\
+ adds r1, r3\n\
+ adds r1, 0x4\n\
+ ldrb r0, [r1]\n\
+ orrs r0, r7\n\
+ strb r0, [r1]\n\
+ adds r0, r4, r3\n\
+ strb r2, [r0]\n\
+ lsls r1, r3, 1\n\
+ adds r0, r6, r1\n\
+ strb r2, [r0]\n\
+ adds r1, r5, r1\n\
+ strb r2, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x3\n\
+ bls _080B9CBC\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x3C]\n\
+ movs r3, 0\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r1, r0, 16\n\
+ str r0, [sp, 0x50]\n\
+ ldr r4, [sp, 0x30]\n\
+ ldr r0, [sp, 0x34]\n\
+ adds r2, r4, 0\n\
+ muls r2, r0\n\
+ str r2, [sp, 0x48]\n\
+ ldr r2, [sp, 0x3C]\n\
+ cmp r2, r1\n\
+ bcs _080B9D46\n\
+ mov r8, r1\n\
+_080B9D00:\n\
+ ldr r4, [sp, 0x30]\n\
+ adds r0, r4, 0\n\
+ muls r0, r3\n\
+ ldr r1, [sp, 0x2C]\n\
+ adds r6, r1, r0\n\
+ ldr r0, [r6, 0x70]\n\
+ cmp r0, 0\n\
+ beq _080B9D3C\n\
+ movs r7, 0\n\
+ cmp r7, r0\n\
+ bcs _080B9D3C\n\
+ adds r4, r6, 0\n\
+ adds r4, 0x74\n\
+ mov r2, r9\n\
+ lsls r1, r3, 1\n\
+ movs r5, 0x1\n\
+_080B9D20:\n\
+ lsls r0, r7, 1\n\
+ adds r0, r4, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080B9D30\n\
+ adds r0, r7, r1\n\
+ adds r0, r2, r0\n\
+ strb r5, [r0]\n\
+_080B9D30:\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ ldr r0, [r6, 0x70]\n\
+ cmp r7, r0\n\
+ bcc _080B9D20\n\
+_080B9D3C:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, r8\n\
+ bcc _080B9D00\n\
+_080B9D46:\n\
+ movs r7, 0\n\
+ movs r3, 0\n\
+ ldr r2, [sp, 0x50]\n\
+ cmp r2, 0\n\
+ beq _080B9E3E\n\
+ mov r4, sp\n\
+ adds r4, 0x24\n\
+ str r4, [sp, 0x44]\n\
+ movs r0, 0x25\n\
+ add r0, sp\n\
+ mov r8, r0\n\
+_080B9D5C:\n\
+ ldr r1, [sp, 0x30]\n\
adds r0, r1, 0\n\
- add r8, r0\n\
- ldrb r1, [r4, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- adds r6, r0\n\
- ldrb r0, [r5, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
+ muls r0, r3\n\
+ ldr r2, [sp, 0x2C]\n\
+ adds r6, r2, r0\n\
+ lsls r1, r3, 1\n\
+ mov r4, r9\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ beq _080B9D7C\n\
+ mov r2, r10\n\
+ adds r0, r2, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9D86\n\
+_080B9D7C:\n\
+ ldr r0, [sp, 0x3C]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x3C]\n\
+_080B9D86:\n\
+ mov r4, r9\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9DAC\n\
+ mov r2, r10\n\
+ adds r0, r2, r1\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0\n\
+ bne _080B9DAC\n\
+_080B9D9A:\n\
+ lsls r1, r7, 1\n\
+ ldr r4, [sp, 0x44]\n\
+ adds r0, r4, r1\n\
+ strb r3, [r0]\n\
add r1, r8\n\
+ strb r2, [r1]\n\
+ b _080B9E2C\n\
+ .align 2, 0\n\
+_080B9DA8: .4byte gLinkPlayers\n\
+_080B9DAC:\n\
+ mov r2, r9\n\
+ adds r0, r2, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080B9DC0\n\
+ mov r4, r10\n\
+ adds r0, r4, r1\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0x1\n\
+ beq _080B9D9A\n\
+_080B9DC0:\n\
+ mov r2, r9\n\
+ adds r0, r2, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9E32\n\
+ mov r4, r10\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9E32\n\
+ lsls r5, r7, 1\n\
+ ldr r1, [sp, 0x44]\n\
+ adds r0, r1, r5\n\
+ strb r3, [r0]\n\
adds r0, r6, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r0, r1, 3\n\
+ str r3, [sp, 0x54]\n\
+ bl sub_80B9BBC\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x38\n\
+ bl sub_80B9BBC\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ ldr r3, [sp, 0x54]\n\
+ cmp r4, 0\n\
+ bne _080B9E0A\n\
+ cmp r1, 0\n\
+ beq _080B9E0E\n\
+ mov r2, r8\n\
+ adds r1, r2, r5\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _080B9E2C\n\
+_080B9E0A:\n\
+ cmp r1, 0\n\
+ beq _080B9E26\n\
+_080B9E0E:\n\
+ str r3, [sp, 0x54]\n\
+ bl Random\n\
+ mov r4, r8\n\
+ adds r2, r4, r5\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r3, [sp, 0x54]\n\
+ b _080B9E2C\n\
+_080B9E26:\n\
+ mov r2, r8\n\
+ adds r0, r2, r5\n\
+ strb r1, [r0]\n\
+_080B9E2C:\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+_080B9E32:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ ldr r4, [sp, 0x50]\n\
+ cmp r0, r4\n\
+ bcc _080B9D5C\n\
+_080B9E3E:\n\
+ movs r3, 0\n\
+ ldr r1, [sp, 0x48]\n\
+ lsls r0, r1, 4\n\
subs r0, r1\n\
lsls r0, 3\n\
- add r8, r0\n\
- mov r0, r8\n\
- mov r1, sp\n\
+ ldr r2, [sp, 0x2C]\n\
+ adds r6, r2, r0\n\
+ ldr r1, [sp, 0x4C]\n\
+_080B9E4E:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r1, r0\n\
+ str r6, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x3\n\
+ bls _080B9E4E\n\
+ ldr r0, [sp, 0x38]\n\
+ bl sub_80B9C4C\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ ldr r4, [sp, 0x3C]\n\
+ cmp r4, 0x3\n\
+ beq _080B9E9C\n\
+ cmp r4, 0x3\n\
+ bgt _080B9E82\n\
+ cmp r4, 0x2\n\
+ beq _080B9E8A\n\
+ b _080B9EF0\n\
+_080B9E82:\n\
+ ldr r0, [sp, 0x3C]\n\
+ cmp r0, 0x4\n\
+ beq _080B9EBC\n\
+ b _080B9EF0\n\
+_080B9E8A:\n\
+ add r2, sp, 0x24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ movs r3, 0\n\
+ bl sub_80B9BC4\n\
+ b _080B9EF0\n\
+_080B9E9C:\n\
+ ldr r0, _080B9EB8 @ =gUnknown_083D02B4\n\
+ lsls r1, 1\n\
+ adds r2, r1, r0\n\
+ ldrb r3, [r2]\n\
+ adds r0, 0x1\n\
+ adds r1, r0\n\
+ ldrb r0, [r1]\n\
+ add r2, sp, 0x24\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ bl sub_80B9BC4\n\
+ b _080B9EF0\n\
+ .align 2, 0\n\
+_080B9EB8: .4byte gUnknown_083D02B4\n\
+_080B9EBC:\n\
+ add r6, sp, 0x24\n\
+ ldr r4, _080B9F2C @ =gUnknown_083D02BA\n\
+ lsls r5, r1, 2\n\
+ adds r0, r5, r4\n\
+ ldrb r3, [r0]\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r5, r0\n\
+ ldrb r0, [r0]\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ adds r2, r6, 0\n\
+ bl sub_80B9BC4\n\
+ adds r0, r4, 0x2\n\
+ adds r0, r5, r0\n\
+ ldrb r3, [r0]\n\
+ adds r4, 0x3\n\
+ adds r5, r4\n\
+ ldrb r0, [r5]\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ adds r2, r6, 0\n\
+ bl sub_80B9BC4\n\
+_080B9EF0:\n\
+ ldr r1, [sp, 0x2C]\n\
+ ldr r2, [sp, 0x48]\n\
+ adds r6, r1, r2\n\
+ ldr r4, _080B9F30 @ =gSaveBlock1\n\
+ ldr r1, _080B9F34 @ =0x0000303c\n\
+ adds r0, r4, r1\n\
+ adds r1, r6, 0\n\
movs r2, 0x38\n\
bl memcpy\n\
- add sp, 0x38\n\
+ ldr r2, _080B9F38 @ =0x00003074\n\
+ adds r4, r2\n\
+ adds r1, r6, 0\n\
+ adds r1, 0x38\n\
+ adds r0, r4, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r0, [sp, 0x40]\n\
+ bl SeedRng\n\
+ add sp, 0x58\n\
pop {r3-r5}\n\
mov r8, r3\n\
mov r9, r4\n\
mov r10, r5\n\
- pop {r4-r6}\n\
+ pop {r4-r7}\n\
pop {r0}\n\
bx r0\n\
+ .align 2, 0\n\
+_080B9F2C: .4byte gUnknown_083D02BA\n\
+_080B9F30: .4byte gSaveBlock1\n\
+_080B9F34: .4byte 0x0000303c\n\
+_080B9F38: .4byte 0x00003074\n\
.syntax divided\n");
}
#endif
-u8 sub_80B9C4C(u8 *a)
+void sub_80B9F3C(u16 *a, u8 b)
{
- int i;
- u8 r2 = 0;
-
- for (i = 0; i < 0x100; i++)
- r2 += a[i];
- return r2;
+ if (b != 0 && *a != 0)
+ {
+ if (GetPocketByItemId(*a) == 5)
+ {
+ if (!CheckBagHasItem(*a, 1) && !CheckPCHasItem(*a, 1) && AddBagItem(*a, 1))
+ {
+ VarSet(VAR_0x4001, *a);
+ StringCopy(gStringVar1, gLinkPlayers[0].name);
+ if (*a == ITEM_EON_TICKET)
+ FlagSet(SYS_HAS_EON_TICKET);
+ }
+ else
+ {
+ VarSet(VAR_0x4001, ITEM_NONE);
+ }
+ }
+ else
+ {
+ if (AddBagItem(*a, 1) == TRUE)
+ {
+ VarSet(VAR_0x4001, *a);
+ StringCopy(gStringVar1, gLinkPlayers[0].name);
+ }
+ else
+ {
+ VarSet(VAR_0x4001, ITEM_NONE);
+ }
+ }
+ }
}
+void sub_80BA00C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[0]++;
+ break;
+ case 1:
+ task->data[0]++;
+ break;
+ case 2:
+ SetSecretBase2Field_9_AndHideBG();
+ sub_8125E2C();
+ task->data[0]++;
+ break;
+ case 3:
+ if (sub_8125E6C() != 0)
+ {
+ ClearSecretBase2Field_9_2();
+ task->data[0]++;
+ task->data[1] = 0;
+ }
+ break;
+ case 4:
+ task->data[1]++;
+ if (task->data[1] > 10)
+ {
+ sub_800832C();
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ if (!gReceivedRemoteLinkPlayers)
+ DestroyTask(taskId);
+ break;
+ }
+}
diff --git a/src/region_map.c b/src/region_map.c
new file mode 100644
index 000000000..097417357
--- /dev/null
+++ b/src/region_map.c
@@ -0,0 +1,1847 @@
+#include "global.h"
+#include "event_data.h"
+#include "field_effect.h"
+#include "field_specials.h"
+#include "m4a.h"
+#include "main.h"
+#include "map_constants.h"
+#include "menu.h"
+#include "palette.h"
+#include "pokemon_menu.h"
+#include "region_map.h"
+#include "rom4.h"
+#include "secret_base.h"
+#include "songs.h"
+#include "sprite.h"
+#include "strings.h"
+#include "string_util.h"
+#include "text.h"
+#include "trig.h"
+
+// Map Section IDs
+#define MAPSEC_LITTLEROOT_TOWN 0
+#define MAPSEC_OLDALE_TOWN 1
+#define MAPSEC_DEWFORD_TOWN 2
+#define MAPSEC_LAVARIDGE_TOWN 3
+#define MAPSEC_FALLARBOR_TOWN 4
+#define MAPSEC_VERDANTURF_TOWN 5
+#define MAPSEC_PACIFIDLOG_TOWN 6
+#define MAPSEC_PETALBURG_CITY 7
+#define MAPSEC_SLATEPORT_CITY 8
+#define MAPSEC_MAUVILLE_CITY 9
+#define MAPSEC_RUSTBORO_CITY 10
+#define MAPSEC_FORTREE_CITY 11
+#define MAPSEC_LILYCOVE_CITY 12
+#define MAPSEC_MOSSDEEP_CITY 13
+#define MAPSEC_SOOTOPOLIS_CITY 14
+#define MAPSEC_EVER_GRANDE_CITY 15
+#define MAPSEC_ROUTE_101 0x10
+#define MAPSEC_ROUTE_102 0x11
+#define MAPSEC_ROUTE_103 0x12
+#define MAPSEC_ROUTE_104 0x13
+#define MAPSEC_ROUTE_105 0x14
+#define MAPSEC_ROUTE_106 0x15
+#define MAPSEC_ROUTE_107 0x16
+#define MAPSEC_ROUTE_108 0x17
+#define MAPSEC_ROUTE_109 0x18
+#define MAPSEC_ROUTE_110 0x19
+#define MAPSEC_ROUTE_111 0x1A
+#define MAPSEC_ROUTE_112 0x1B
+#define MAPSEC_ROUTE_113 0x1C
+#define MAPSEC_ROUTE_114 0x1D
+#define MAPSEC_ROUTE_115 0x1E
+#define MAPSEC_ROUTE_116 0x1F
+#define MAPSEC_ROUTE_117 0x20
+#define MAPSEC_ROUTE_118 0x21
+#define MAPSEC_ROUTE_119 0x22
+#define MAPSEC_ROUTE_120 0x23
+#define MAPSEC_ROUTE_121 0x24
+#define MAPSEC_ROUTE_122 0x25
+#define MAPSEC_ROUTE_123 0x26
+#define MAPSEC_ROUTE_124 0x27
+#define MAPSEC_ROUTE_125 0x28
+#define MAPSEC_ROUTE_126 0x29
+#define MAPSEC_ROUTE_127 0x2A
+#define MAPSEC_ROUTE_128 0x2B
+#define MAPSEC_ROUTE_129 0x2C
+#define MAPSEC_ROUTE_130 0x2D
+#define MAPSEC_ROUTE_131 0x2E
+#define MAPSEC_ROUTE_132 0x2F
+#define MAPSEC_ROUTE_133 0x30
+#define MAPSEC_ROUTE_134 0x31
+#define MAPSEC_UNDERWATER1 0x32
+#define MAPSEC_UNDERWATER2 0x33
+#define MAPSEC_UNDERWATER3 0x34
+#define MAPSEC_UNDERWATER4 0x35
+#define MAPSEC_UNDERWATER5 0x36
+#define MAPSEC_GRANITE_CAVE 0x37
+#define MAPSEC_MT_CHIMNEY 0x38
+#define MAPSEC_SAFARI_ZONE 0x39
+#define MAPSEC_BATTLE_TOWER 0x3A
+#define MAPSEC_PETALBURG_WOODS 0x3B
+#define MAPSEC_RUSTURF_TUNNEL 0x3C
+#define MAPSEC_ABANDONED_SHIP 0x3D
+#define MAPSEC_NEW_MAUVILLE 0x3E
+#define MAPSEC_METEOR_FALLS_1 0x3F
+#define MAPSEC_METEOR_FALLS_2 0x40
+#define MAPSEC_MT_PYRE 0x41
+#define MAPSEC_EVIL_TEAM_HIDEOUT 0x42
+#define MAPSEC_SHOAL_CAVE 0x43
+#define MAPSEC_SEAFLOOR_CAVERN 0x44
+#define MAPSEC_UNDERWATER6 0x45
+#define MAPSEC_VICTORY_ROAD 0x46
+#define MAPSEC_MIRAGE_ISLAND 0x47
+#define MAPSEC_CAVE_OF_ORIGIN 0x48
+#define MAPSEC_SOUTHERN_ISLAND 0x49
+#define MAPSEC_FIERY_PATH_1 0x4A
+#define MAPSEC_FIERY_PATH_2 0x4B
+#define MAPSEC_JAGGED_PASS_1 0x4C
+#define MAPSEC_JAGGED_PASS_2 0x4D
+#define MAPSEC_SEALED_CHAMBER 0x4E
+#define MAPSEC_UNDERWATER7 0x4F
+#define MAPSEC_SCORCHED_SLAB 0x50
+#define MAPSEC_ISLAND_CAVE 0x51
+#define MAPSEC_DESERT_RUINS 0x52
+#define MAPSEC_ANCIENT_TOMB 0x53
+#define MAPSEC_INSIDE_OF_TRUCK 0x54
+#define MAPSEC_SKY_PILLAR 0x55
+#define MAPSEC_SECRET_BASE 0x56
+#define MAPSEC_UNK_0x57 0x57
+#define MAPSEC_NONE 0x58
+
+#define MAP_WIDTH 28
+#define MAP_HEIGHT 15
+#define MAPCURSOR_X_MIN 1
+#define MAPCURSOR_Y_MIN 2
+#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1)
+#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1)
+
+// Input events
+enum
+{
+ INPUT_EVENT_NONE,
+ INPUT_EVENT_DPAD,
+ INPUT_EVENT_2,
+ INPUT_EVENT_3,
+ INPUT_EVENT_A_BUTTON,
+ INPUT_EVENT_B_BUTTON,
+};
+
+extern struct RegionMap *gRegionMap;
+
+static const u16 sRegionMapCursor_Pal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal");
+static const u8 sRegionMapCursorSmall_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz");
+static const u8 sRegionMapCursorLarge_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz");
+static const u16 sRegionMapBrendanIcon_Pal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal");
+static const u8 sRegionMapBrendanIcon_Image[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp");
+static const u16 sRegionMapMayIcon_Pal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal");
+static const u8 sRegionMapMayIcon_Image[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp");
+static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal");
+static const u8 sRegionMapBkgnd_ImageLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz");
+static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz");
+
+#include "data/region_map_layout.h"
+
+#if ENGLISH
+#include "data/region_map_names_en.h"
+#elif GERMAN
+#include "data/region_map_names_de.h"
+#endif
+
+struct RegionMapLocation
+{
+ u8 x, y;
+ u8 width, height;
+ const u8 *regionMapSectionId;
+};
+
+const struct RegionMapLocation gRegionMapLocations[] =
+{
+ { 4, 11, 1, 1, gMapName_LittlerootTown},
+ { 4, 9, 1, 1, gMapName_OldaleTown},
+ { 2, 14, 1, 1, gMapName_DewfordTown},
+ { 5, 3, 1, 1, gMapName_LavaridgeTown},
+ { 3, 0, 1, 1, gMapName_FallarborTown},
+ { 4, 6, 1, 1, gMapName_VerdanturfTown},
+ {17, 10, 1, 1, gMapName_PacifidlogTown},
+ { 1, 9, 1, 1, gMapName_PetalburgCity},
+ { 8, 10, 1, 2, gMapName_SlateportCity},
+ { 8, 6, 2, 1, gMapName_MauvilleCity},
+ { 0, 5, 1, 2, gMapName_RustboroCity},
+ {12, 0, 1, 1, gMapName_FortreeCity},
+ {18, 3, 2, 1, gMapName_LilycoveCity},
+ {24, 5, 2, 1, gMapName_MossdeepCity},
+ {21, 7, 1, 1, gMapName_SootopolisCity},
+ {27, 8, 1, 2, gMapName_EverGrandeCity},
+ { 4, 10, 1, 1, gMapName_Route101},
+ { 2, 9, 2, 1, gMapName_Route102},
+ { 4, 8, 4, 1, gMapName_Route103},
+ { 0, 7, 1, 3, gMapName_Route104},
+ { 0, 10, 1, 3, gMapName_Route105},
+ { 0, 13, 2, 1, gMapName_Route106},
+ { 3, 14, 3, 1, gMapName_Route107},
+ { 6, 14, 2, 1, gMapName_Route108},
+ { 8, 12, 1, 3, gMapName_Route109},
+ { 8, 7, 1, 3, gMapName_Route110},
+ { 8, 0, 1, 6, gMapName_Route111},
+ { 6, 3, 2, 1, gMapName_Route112},
+ { 4, 0, 4, 1, gMapName_Route113},
+ { 1, 0, 2, 3, gMapName_Route114},
+ { 0, 2, 1, 3, gMapName_Route115},
+ { 1, 5, 4, 1, gMapName_Route116},
+ { 5, 6, 3, 1, gMapName_Route117},
+ {10, 6, 2, 1, gMapName_Route118},
+ {11, 0, 1, 6, gMapName_Route119},
+ {13, 0, 1, 4, gMapName_Route120},
+ {14, 3, 4, 1, gMapName_Route121},
+ {16, 4, 1, 2, gMapName_Route122},
+ {12, 6, 5, 1, gMapName_Route123},
+ {20, 3, 4, 3, gMapName_Route124},
+ {24, 3, 2, 2, gMapName_Route125},
+ {20, 6, 3, 3, gMapName_Route126},
+ {23, 6, 3, 3, gMapName_Route127},
+ {23, 9, 4, 1, gMapName_Route128},
+ {24, 10, 2, 1, gMapName_Route129},
+ {21, 10, 3, 1, gMapName_Route130},
+ {18, 10, 3, 1, gMapName_Route131},
+ {15, 10, 2, 1, gMapName_Route132},
+ {12, 10, 3, 1, gMapName_Route133},
+ { 9, 10, 3, 1, gMapName_Route134},
+ {20, 3, 4, 3, gMapName_Underwater},
+ {20, 6, 3, 3, gMapName_Underwater},
+ {23, 6, 3, 3, gMapName_Underwater},
+ {23, 9, 4, 1, gMapName_Underwater},
+ {21, 7, 1, 1, gMapName_Underwater},
+ { 1, 13, 1, 1, gMapName_GraniteCave},
+ { 6, 2, 1, 1, gMapName_MtChimney},
+ {16, 2, 1, 1, gMapName_SafariZone},
+ {22, 12, 1, 1, gMapName_BattleTower},
+ { 0, 8, 1, 1, gMapName_PetalburgWoods},
+ { 2, 5, 1, 1, gMapName_RusturfTunnel},
+ { 6, 14, 1, 1, gMapName_AbandonedShip},
+ { 8, 7, 1, 1, gMapName_NewMauville},
+ { 0, 3, 1, 1, gMapName_MeteorFalls},
+ { 1, 2, 1, 1, gMapName_MeteorFalls},
+ {16, 4, 1, 1, gMapName_MtPyre},
+ {19, 3, 1, 1, gMapName_EvilTeamHideout},
+ {24, 4, 1, 1, gMapName_ShoalCave},
+ {24, 9, 1, 1, gMapName_SeafloorCavern},
+ {24, 9, 1, 1, gMapName_Underwater},
+ {27, 9, 1, 1, gMapName_VictoryRoad},
+ {17, 10, 1, 1, gMapName_MirageIsland},
+ {21, 7, 1, 1, gMapName_CaveOfOrigin},
+ {12, 14, 1, 1, gMapName_SouthernIsland},
+ { 6, 3, 1, 1, gMapName_FieryPath},
+ { 7, 3, 1, 1, gMapName_FieryPath},
+ { 6, 3, 1, 1, gMapName_JaggedPass},
+ { 7, 2, 1, 1, gMapName_JaggedPass},
+ {11, 10, 1, 1, gMapName_SealedChamber},
+ {11, 10, 1, 1, gMapName_Underwater},
+ {13, 0, 1, 1, gMapName_ScorchedSlab},
+ {0, 10, 1, 1, gMapName_IslandCave},
+ { 8, 3, 1, 1, gMapName_DesertRuins},
+ {13, 2, 1, 1, gMapName_AncientTomb},
+ { 0, 0, 1, 1, gMapName_InsideOfTruck},
+ {19, 10, 1, 1, gMapName_SkyPillar},
+ { 0, 0, 1, 1, gMapName_SecretBase},
+ { 0, 0, 1, 1, gMapName_None},
+};
+
+static const u16 gUnknown_083E7684[][2] =
+{
+ {MAPSEC_UNDERWATER1, MAPSEC_ROUTE_124},
+ {MAPSEC_UNDERWATER2, MAPSEC_ROUTE_126},
+ {MAPSEC_UNDERWATER3, MAPSEC_ROUTE_127},
+ {MAPSEC_UNDERWATER4, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER5, MAPSEC_SOOTOPOLIS_CITY},
+ {MAPSEC_UNDERWATER6, MAPSEC_ROUTE_128},
+ {MAPSEC_EVIL_TEAM_HIDEOUT, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_UNDERWATER7, MAPSEC_ROUTE_134},
+ {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
+ {MAPSEC_JAGGED_PASS_1, MAPSEC_ROUTE_112},
+ {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
+ {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
+ {MAPSEC_NONE, MAPSEC_NONE},
+};
+
+static u8 sub_80FAB78(void);
+static u8 _swiopen(void);
+static u8 sub_80FAD04(void);
+static u8 sub_80FADE4(void);
+static void CalcZoomScrollParams(s16, s16, s16, s16, u16, u16, u8);
+static void sub_80FB238(s16, s16);
+void UpdateRegionMapVideoRegs(void);
+static u16 GetRegionMapSectionAt(u16, u16);
+static void InitializeCursorPosition(void);
+static void sub_80FB600(void);
+static u16 sub_80FB758(u16);
+static u16 sub_80FB9C0(u16);
+static void sub_80FBA18(void);
+static bool8 sub_80FBAA0(u16);
+void CreateRegionMapCursor(u16, u16);
+static void sub_80FBCA0(void);
+static void sub_80FBDF8(void);
+static void sub_80FBE24(void);
+static void SpriteCB_PlayerIconZoomedOut(struct Sprite *);
+static void UpdateIconBlink(struct Sprite *);
+static void SpriteCB_PlayerIconZoomedIn(struct Sprite *);
+const u8 *GetMapSectionName(u8 *, u16, u16);
+static void VBlankCB_FlyRegionMap(void);
+static void CB2_FlyRegionMap(void);
+static void sub_80FC244(void (*func)(void));
+static void PrintFlyTargetName(void);
+static void CreateFlyTargetGraphics(void);
+static void CreateCityTownFlyTargetIcons(void);
+static void CreateSpecialAreaFlyTargetIcons(void);
+static void SpriteCB_FlyTargetIcons(struct Sprite *);
+static void sub_80FC5B4(void);
+static void sub_80FC600(void);
+static void sub_80FC69C(void);
+
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
+{
+ sub_80FA904(regionMap, zoomed);
+ while (sub_80FA940())
+ ;
+}
+
+void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed)
+{
+ gRegionMap = regionMap;
+ gRegionMap->initStep = 0;
+ gRegionMap->zoomed = zoomed;
+ gRegionMap->inputCallback = (zoomed == 0) ? sub_80FAB78 : sub_80FAD04;
+}
+
+bool8 sub_80FA940(void)
+{
+ switch (gRegionMap->initStep)
+ {
+ case 0:
+ LZ77UnCompVram(sRegionMapBkgnd_ImageLZ, (void *)(VRAM + 0x8000));
+ break;
+ case 1:
+ LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (void *)(VRAM + 0xE000));
+ break;
+ case 2:
+ LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60); // Why isn't this the right size?
+ break;
+ case 3:
+ LZ77UnCompWram(sRegionMapCursorSmall_ImageLZ, gRegionMap->cursorSmallImage);
+ break;
+ case 4:
+ LZ77UnCompWram(sRegionMapCursorLarge_ImageLZ, gRegionMap->cursorLargeImage);
+ break;
+ case 5:
+ InitializeCursorPosition();
+ gRegionMap->unk74 = gRegionMap->cursorPosX;
+ gRegionMap->unk76 = gRegionMap->cursorPosY;
+ gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSecId);
+ gRegionMap->mapSecId = sub_80FB9C0(gRegionMap->mapSecId);
+ GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ break;
+ case 6:
+ if (gRegionMap->zoomed == FALSE)
+ {
+ CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0);
+ }
+ else
+ {
+ gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 52;
+ gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 68;
+ gRegionMap->unk64 = gRegionMap->cursorPosX;
+ gRegionMap->unk66 = gRegionMap->cursorPosY;
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0);
+ }
+ break;
+ case 7:
+ sub_80FBA18();
+ UpdateRegionMapVideoRegs();
+ gRegionMap->cursorSprite = NULL;
+ gRegionMap->playerIconSprite = NULL;
+ gRegionMap->unk7A = 0;
+ gRegionMap->blinkPlayerIcon = FALSE;
+ REG_BG2CNT = 0xBC8A;
+ gRegionMap->initStep++;
+ default:
+ return FALSE;
+ }
+ gRegionMap->initStep++;
+ return TRUE;
+}
+
+void FreeRegionMapIconResources(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ DestroySprite(gRegionMap->playerIconSprite);
+ FreeSpriteTilesByTag(gRegionMap->playerIconTileTag);
+ FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag);
+ }
+}
+
+u8 sub_80FAB60(void)
+{
+ return gRegionMap->inputCallback();
+}
+
+static u8 sub_80FAB78(void)
+{
+ u8 event = INPUT_EVENT_NONE;
+
+ gRegionMap->cursorDeltaX = 0;
+ gRegionMap->cursorDeltaY = 0;
+ if ((gMain.heldKeys & DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
+ {
+ gRegionMap->cursorDeltaY = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
+ {
+ gRegionMap->cursorDeltaY = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
+ {
+ gRegionMap->cursorDeltaX = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
+ {
+ gRegionMap->cursorDeltaX = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ event = INPUT_EVENT_A_BUTTON;
+ else if (gMain.newKeys & B_BUTTON)
+ event = INPUT_EVENT_B_BUTTON;
+
+ if (event == INPUT_EVENT_DPAD)
+ {
+ gRegionMap->unk7A = 4;
+ gRegionMap->inputCallback = _swiopen;
+ }
+ return event;
+}
+
+static u8 _swiopen(void)
+{
+ u16 mapSecId;
+
+ if (gRegionMap->unk7A != 0)
+ return INPUT_EVENT_2;
+
+ if (gRegionMap->cursorDeltaX > 0)
+ gRegionMap->cursorPosX++;
+
+ if (gRegionMap->cursorDeltaX < 0)
+ gRegionMap->cursorPosX--;
+
+ if (gRegionMap->cursorDeltaY > 0)
+ gRegionMap->cursorPosY++;
+
+ if (gRegionMap->cursorDeltaY < 0)
+ gRegionMap->cursorPosY--;
+
+ mapSecId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
+ gRegionMap->unk16 = sub_80FB758(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ sub_80FBA18();
+ gRegionMap->inputCallback = sub_80FAB78;
+ return INPUT_EVENT_3;
+}
+
+static u8 sub_80FAD04(void)
+{
+ u8 event = INPUT_EVENT_NONE;
+
+ gRegionMap->unk6A = 0;
+ gRegionMap->unk68 = 0;
+ if ((gMain.heldKeys & DPAD_UP) && gRegionMap->scrollY > -52)
+ {
+ gRegionMap->unk68 = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->scrollY < 60)
+ {
+ gRegionMap->unk68 = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->scrollX > -44)
+ {
+ gRegionMap->unk6A = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->scrollX < 172)
+ {
+ gRegionMap->unk6A = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ event = INPUT_EVENT_A_BUTTON;
+ if (gMain.newKeys & B_BUTTON)
+ event = INPUT_EVENT_B_BUTTON;
+
+ if (event == INPUT_EVENT_DPAD)
+ {
+ gRegionMap->inputCallback = sub_80FADE4;
+ gRegionMap->unk6C = 0;
+ }
+ return event;
+}
+
+static u8 sub_80FADE4(void)
+{
+ gRegionMap->scrollY += gRegionMap->unk68;
+ gRegionMap->scrollX += gRegionMap->unk6A;
+ sub_80FB238(gRegionMap->scrollX, gRegionMap->scrollY);
+ gRegionMap->unk6C++;
+ if (gRegionMap->unk6C == 8)
+ {
+ u16 r3 = (gRegionMap->scrollX + 44) / 8 + 1;
+ u16 r1 = (gRegionMap->scrollY + 52) / 8 + 2;
+
+ if (r3 != gRegionMap->unk64 || r1 != gRegionMap->unk66)
+ {
+ u16 mapSecId;
+
+ gRegionMap->unk64 = r3;
+ gRegionMap->unk66 = r1;
+ mapSecId = GetRegionMapSectionAt(r3, r1);
+ gRegionMap->unk16 = sub_80FB758(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ sub_80FBA18();
+ }
+ gRegionMap->unk6C = 0;
+ gRegionMap->inputCallback = sub_80FAD04;
+ return INPUT_EVENT_3;
+ }
+ return INPUT_EVENT_2;
+}
+
+void sub_80FAEC4(void)
+{
+ if (gRegionMap->zoomed == FALSE)
+ {
+ gRegionMap->scrollY = 0;
+ gRegionMap->scrollX = 0;
+ gRegionMap->unk40 = 0;
+ gRegionMap->unk3C = 0;
+ gRegionMap->unk60 = gRegionMap->cursorPosX * 8 - 52;
+ gRegionMap->unk62 = gRegionMap->cursorPosY * 8 - 68;
+ gRegionMap->unk44 = (gRegionMap->unk60 << 8) / 16;
+ gRegionMap->unk48 = (gRegionMap->unk62 << 8) / 16;
+ gRegionMap->unk64 = gRegionMap->cursorPosX;
+ gRegionMap->unk66 = gRegionMap->cursorPosY;
+ gRegionMap->unk4C = (256 << 8);
+ gRegionMap->unk50 = -0x800;
+ }
+ else
+ {
+ gRegionMap->unk3C = gRegionMap->scrollX * 256;
+ gRegionMap->unk40 = gRegionMap->scrollY * 256;
+ gRegionMap->unk60 = 0;
+ gRegionMap->unk62 = 0;
+ gRegionMap->unk44 = -(gRegionMap->unk3C / 16);
+ gRegionMap->unk48 = -(gRegionMap->unk40 / 16);
+ gRegionMap->cursorPosX = gRegionMap->unk64;
+ gRegionMap->cursorPosY = gRegionMap->unk66;
+ gRegionMap->unk4C = (128 << 8);
+ gRegionMap->unk50 = 0x800;
+ }
+ gRegionMap->unk6E = 0;
+ sub_80FBCA0();
+ sub_80FBDF8();
+}
+
+u8 sub_80FAFC0(void)
+{
+ u8 r4;
+
+ if (gRegionMap->unk6E >= 16)
+ return 0;
+ gRegionMap->unk6E++;
+ if (gRegionMap->unk6E == 16)
+ {
+ gRegionMap->unk44 = 0;
+ gRegionMap->unk48 = 0;
+ gRegionMap->scrollX = gRegionMap->unk60;
+ gRegionMap->scrollY = gRegionMap->unk62;
+ gRegionMap->unk4C = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8);
+ gRegionMap->zoomed = !gRegionMap->zoomed;
+ gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? sub_80FAB78 : sub_80FAD04;
+ CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag);
+ sub_80FBE24();
+ r4 = 0;
+ }
+ else
+ {
+ gRegionMap->unk3C += gRegionMap->unk44;
+ gRegionMap->unk40 += gRegionMap->unk48;
+ gRegionMap->scrollX = gRegionMap->unk3C >> 8;
+ gRegionMap->scrollY = gRegionMap->unk40 >> 8;
+ gRegionMap->unk4C += gRegionMap->unk50;
+ if ((gRegionMap->unk44 < 0 && gRegionMap->scrollX < gRegionMap->unk60)
+ || (gRegionMap->unk44 > 0 && gRegionMap->scrollX > gRegionMap->unk60))
+ {
+ gRegionMap->scrollX = gRegionMap->unk60;
+ gRegionMap->unk44 = 0;
+ }
+ if ((gRegionMap->unk48 < 0 && gRegionMap->scrollY < gRegionMap->unk62)
+ || (gRegionMap->unk48 > 0 && gRegionMap->scrollY > gRegionMap->unk62))
+ {
+ gRegionMap->scrollY = gRegionMap->unk62;
+ gRegionMap->unk48 = 0;
+ }
+ if (gRegionMap->zoomed == FALSE)
+ {
+ if (gRegionMap->unk4C < (128 << 8))
+ {
+ gRegionMap->unk4C = (128 << 8);
+ gRegionMap->unk50 = 0;
+ }
+ }
+ else
+ {
+ if (gRegionMap->unk4C > (256 << 8))
+ {
+ gRegionMap->unk4C = (256 << 8);
+ gRegionMap->unk50 = 0;
+ }
+ }
+ r4 = 1;
+ }
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk4C >> 8, gRegionMap->unk4C >> 8, 0);
+ return r4;
+}
+
+static void CalcZoomScrollParams(s16 a, s16 b, s16 c, s16 d, u16 e, u16 f, u8 rotation)
+{
+ s32 var1;
+ s32 var2;
+ s32 var3;
+ s32 var4;
+
+ gRegionMap->unk2C = e * gSineTable[rotation + 64] >> 8;
+ gRegionMap->unk30 = e * -gSineTable[rotation] >> 8;
+ gRegionMap->unk34 = f * gSineTable[rotation] >> 8;
+ gRegionMap->unk38 = f * gSineTable[rotation + 64] >> 8;
+
+ var1 = (a << 8) + (c << 8);
+ var2 = d * gRegionMap->unk34 + gRegionMap->unk2C * c;
+ gRegionMap->bg2x = var1 - var2;
+
+ var3 = (b << 8) + (d << 8);
+ var4 = gRegionMap->unk38 * d + gRegionMap->unk30 * c;
+ gRegionMap->bg2y = var3 - var4;
+
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+static void sub_80FB238(s16 x, s16 y)
+{
+ gRegionMap->bg2x = (0x1C << 8) + (x << 8);
+ gRegionMap->bg2y = (0x24 << 8) + (y << 8);
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+void UpdateRegionMapVideoRegs(void)
+{
+ if (gRegionMap->needUpdateVideoRegs)
+ {
+ REG_BG2PA = gRegionMap->unk2C;
+ REG_BG2PB = gRegionMap->unk34;
+ REG_BG2PC = gRegionMap->unk30;
+ REG_BG2PD = gRegionMap->unk38;
+ REG_BG2X = gRegionMap->bg2x;
+ REG_BG2Y = gRegionMap->bg2y;
+ gRegionMap->needUpdateVideoRegs = FALSE;
+ }
+}
+
+void sub_80FB2A4(s16 a, s16 b)
+{
+ CalcZoomScrollParams(a, b, 0x38, 0x48, 0x100, 0x100, 0);
+ UpdateRegionMapVideoRegs();
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->pos2.x = -a;
+ gRegionMap->playerIconSprite->pos2.y = -b;
+ }
+}
+
+static u16 GetRegionMapSectionAt(u16 x, u16 y)
+{
+ if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
+ return MAPSEC_NONE;
+ y -= MAPCURSOR_Y_MIN;
+ x -= MAPCURSOR_X_MIN;
+ return sRegionMapLayout[x + y * 28];
+}
+
+static void InitializeCursorPosition(void)
+{
+ struct MapHeader *mapHeader;
+ u16 mapWidth;
+ u16 mapHeight;
+ u16 x;
+ u16 y;
+ u16 r1;
+ u16 r9;
+
+ if (gSaveBlock1.location.mapGroup == 25
+ && (gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR
+ || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK
+ || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_ROOMS))
+ {
+ sub_80FB600();
+ return;
+ }
+
+ switch (get_map_light_level_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1)
+ {
+ default:
+ case 0:
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->playerIsInCave = FALSE;
+ mapWidth = gMapHeader.mapData->width;
+ mapHeight = gMapHeader.mapData->height;
+ x = gSaveBlock1.pos.x;
+ y = gSaveBlock1.pos.y;
+ if (gRegionMap->mapSecId == MAPSEC_UNDERWATER6)
+ gRegionMap->playerIsInCave = TRUE;
+ break;
+ case 3:
+ case 6:
+ mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1.warp4.x;
+ y = gSaveBlock1.warp4.y;
+ break;
+ case 8:
+ mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1.warp2.x;
+ y = gSaveBlock1.warp2.y;
+ break;
+ case 7:
+ {
+ struct WarpData *r4;
+
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ if (gRegionMap->mapSecId != MAPSEC_UNK_0x57)
+ {
+ r4 = &gSaveBlock1.warp4;
+ mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ }
+ else
+ {
+ r4 = &gSaveBlock1.warp2;
+ mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ }
+ gRegionMap->playerIsInCave = FALSE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = r4->x;
+ y = r4->y;
+ }
+ break;
+ }
+
+ r9 = x;
+
+ r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSecId].width;
+ if (r1 == 0)
+ r1 = 1;
+ x /= r1;
+ if (x >= gRegionMapLocations[gRegionMap->mapSecId].width)
+ x = gRegionMapLocations[gRegionMap->mapSecId].width - 1;
+
+ r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSecId].height;
+ if (r1 == 0)
+ r1 = 1;
+ y /= r1;
+ if (y >= gRegionMapLocations[gRegionMap->mapSecId].height)
+ y = gRegionMapLocations[gRegionMap->mapSecId].height - 1;
+
+ switch (gRegionMap->mapSecId)
+ {
+ case MAPSEC_ROUTE_114:
+ if (y != 0)
+ x = 0;
+ break;
+ case MAPSEC_ROUTE_126:
+ case MAPSEC_UNDERWATER2:
+ x = 0;
+ if (gSaveBlock1.pos.x > 32)
+ x = 1;
+ if (gSaveBlock1.pos.x > 0x33)
+ x++;
+ y = 0;
+ if (gSaveBlock1.pos.y > 0x25)
+ y = 1;
+ if (gSaveBlock1.pos.y > 0x38)
+ y++;
+ break;
+ case MAPSEC_ROUTE_121:
+ x = 0;
+ if (r9 > 14)
+ x = 1;
+ if (r9 > 0x1C)
+ x++;
+ if (r9 > 0x36)
+ x++;
+ break;
+ }
+ gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static void sub_80FB600(void)
+{
+ u16 y = 0;
+ u16 x = 0;
+ u8 mapGroup;
+ u8 mapNum;
+ s16 sp2;
+ s16 sp4;
+
+ switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4))
+ {
+ case 1:
+ gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
+ break;
+ case 2:
+ gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
+ break;
+ case 3:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_124;
+ break;
+ case 4:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_131;
+ break;
+ default:
+ case 0:
+ {
+ struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+ u16 r1;
+
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSecId].width;
+ if (r1 == 0)
+ r1 = 1;
+ x = sp2 / r1;
+ if (x >= gRegionMapLocations[gRegionMap->mapSecId].width)
+ x = gRegionMapLocations[gRegionMap->mapSecId].width - 1;
+
+ r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSecId].height;
+ if (r1 == 0)
+ r1 = 1;
+ y = sp4 / r1;
+ if (y >= gRegionMapLocations[gRegionMap->mapSecId].height)
+ y = gRegionMapLocations[gRegionMap->mapSecId].height - 1;
+ }
+ break;
+ }
+ gRegionMap->playerIsInCave = FALSE;
+ gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static u16 sub_80FB758(u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_NONE:
+ return 0;
+ case MAPSEC_LITTLEROOT_TOWN:
+ return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3;
+ case MAPSEC_OLDALE_TOWN:
+ return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? 2 : 3;
+ case MAPSEC_DEWFORD_TOWN:
+ return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? 2 : 3;
+ case MAPSEC_LAVARIDGE_TOWN:
+ return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? 2 : 3;
+ case MAPSEC_FALLARBOR_TOWN:
+ return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? 2 : 3;
+ case MAPSEC_VERDANTURF_TOWN:
+ return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? 2 : 3;
+ case MAPSEC_PACIFIDLOG_TOWN:
+ return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? 2 : 3;
+ case MAPSEC_PETALBURG_CITY:
+ return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? 2 : 3;
+ case MAPSEC_SLATEPORT_CITY:
+ return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? 2 : 3;
+ case MAPSEC_MAUVILLE_CITY:
+ return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? 2 : 3;
+ case MAPSEC_RUSTBORO_CITY:
+ return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? 2 : 3;
+ case MAPSEC_FORTREE_CITY:
+ return FlagGet(FLAG_VISITED_FORTREE_CITY) ? 2 : 3;
+ case MAPSEC_LILYCOVE_CITY:
+ return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? 2 : 3;
+ case MAPSEC_MOSSDEEP_CITY:
+ return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? 2 : 3;
+ case MAPSEC_SOOTOPOLIS_CITY:
+ return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? 2 : 3;
+ case MAPSEC_EVER_GRANDE_CITY:
+ return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? 2 : 3;
+
+ case MAPSEC_BATTLE_TOWER:
+ return FlagGet(FLAG_UNLOCK_BATTLE_TOWER) ? 4 : 0;
+ case MAPSEC_SOUTHERN_ISLAND:
+ return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? 1 : 0;
+ default:
+ return 1;
+ }
+}
+
+u16 GetRegionMapSectionAt_(u16 x, u16 y)
+{
+ return GetRegionMapSectionAt(x, y);
+}
+
+static u16 sub_80FB9C0(u16 mapSecId)
+{
+ u16 i;
+
+ for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++)
+ {
+ if (gUnknown_083E7684[i][0] == mapSecId)
+ return gUnknown_083E7684[i][1];
+ }
+ return mapSecId;
+}
+
+u16 sub_80FBA04(u16 mapSecId)
+{
+ return sub_80FB9C0(mapSecId);
+}
+
+static void sub_80FBA18(void)
+{
+ u16 x;
+ u16 y;
+ u16 i;
+
+ if (gRegionMap->mapSecId == MAPSEC_NONE)
+ {
+ gRegionMap->everGrandeCityArea = 0;
+ return;
+ }
+
+ if (gRegionMap->zoomed == FALSE)
+ {
+ x = gRegionMap->cursorPosX;
+ y = gRegionMap->cursorPosY;
+ }
+ else
+ {
+ x = gRegionMap->unk64;
+ y = gRegionMap->unk66;
+ }
+
+ i = 0;
+ while (1)
+ {
+ if (x <= 1)
+ {
+ if (sub_80FBAA0(y))
+ {
+ y--;
+ x = 0x1D;
+ }
+ else
+ {
+ break;
+ }
+ }
+ else
+ {
+ x--;
+ if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId)
+ i++;
+ }
+ }
+
+ gRegionMap->everGrandeCityArea = i;
+}
+
+static bool8 sub_80FBAA0(u16 a)
+{
+ u16 x;
+ u16 y;
+
+ y = a - 1;
+ if (y == 0xFFFF)
+ return FALSE;
+
+ for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++)
+ {
+ if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static const struct OamData sCursorOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sCursorAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sCursorAnimSeq1[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_FRAME(32, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const sCursorAnimTable[] =
+{
+ sCursorAnimSeq0,
+ sCursorAnimSeq1,
+};
+
+static void SpriteCB_Cursor(struct Sprite *sprite)
+{
+ if (gRegionMap->unk7A != 0)
+ {
+ sprite->pos1.x += gRegionMap->cursorDeltaX * 2;
+ sprite->pos1.y += gRegionMap->cursorDeltaY * 2;
+ gRegionMap->unk7A--;
+ }
+}
+
+static void nullsub_66(struct Sprite *sprite)
+{
+}
+
+void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteSheet spriteSheet;
+ struct SpritePalette spritePalette =
+ {
+ .data = sRegionMapCursor_Pal,
+ };
+ struct SpriteTemplate spriteTemplate =
+ {
+ .oam = &sCursorOamData,
+ .anims = sCursorAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_Cursor,
+ };
+
+ spriteSheet.tag = tileTag;
+ spriteTemplate.tileTag = tileTag;
+ gRegionMap->cursorTileTag = tileTag;
+
+ spritePalette.tag = paletteTag;
+ spriteTemplate.paletteTag = paletteTag;
+ gRegionMap->cursorPaletteTag = paletteTag;
+
+ if (gRegionMap->zoomed == FALSE)
+ {
+ spriteSheet.data = gRegionMap->cursorSmallImage;
+ spriteSheet.size = 0x100;
+ spriteTemplate.callback = SpriteCB_Cursor;
+ }
+ else
+ {
+ spriteSheet.data = gRegionMap->cursorLargeImage;
+ spriteSheet.size = 0x600;
+ spriteTemplate.callback = nullsub_66;
+ }
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&spriteTemplate, 0x38, 0x48, 0);
+ if (spriteId != 64)
+ {
+ gRegionMap->cursorSprite = &gSprites[spriteId];
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->cursorSprite->oam.size = 2;
+ gRegionMap->cursorSprite->pos1.x -= 8;
+ gRegionMap->cursorSprite->pos1.y -= 8;
+ StartSpriteAnim(gRegionMap->cursorSprite, 1);
+ }
+ else
+ {
+ gRegionMap->cursorSprite->oam.size = 1;
+ gRegionMap->cursorSprite->pos1.x = gRegionMap->cursorPosX * 8 + 4;
+ gRegionMap->cursorSprite->pos1.y = gRegionMap->cursorPosY * 8 + 4;
+ }
+ gRegionMap->cursorSprite->data1 = 2;
+ gRegionMap->cursorSprite->data2 = IndexOfSpritePaletteTag(paletteTag) * 16 + 0x0101;
+ gRegionMap->cursorSprite->data3 = 1;
+ }
+}
+
+static void sub_80FBCA0(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+}
+
+void unref_sub_80FBCD0(void)
+{
+ gRegionMap->cursorSprite->data3 = 1;
+}
+
+void unref_sub_80FBCE0(void)
+{
+ gRegionMap->cursorSprite->data3 = 0;
+}
+
+static const struct OamData sPlayerIconOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sPlayerIconAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sPlayerIconAnimTable[] =
+{
+ sPlayerIconAnimSeq0,
+};
+
+void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteSheet playerIconSpriteSheet =
+ {
+ .data = sRegionMapBrendanIcon_Image,
+ .size = 128,
+ .tag = tileTag,
+ };
+ struct SpritePalette playerIconSpritePalette =
+ {
+ .data = sRegionMapBrendanIcon_Pal,
+ .tag = paletteTag,
+ };
+ struct SpriteTemplate playerIconSpriteTemplate =
+ {
+ .tileTag = tileTag,
+ .paletteTag = paletteTag,
+ .oam = &sPlayerIconOamData,
+ .anims = sPlayerIconAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ if (gSaveBlock2.playerGender == FEMALE)
+ {
+ playerIconSpriteSheet.data = sRegionMapMayIcon_Image;
+ playerIconSpritePalette.data = sRegionMapMayIcon_Pal;
+ }
+ LoadSpriteSheet(&playerIconSpriteSheet);
+ LoadSpritePalette(&playerIconSpritePalette);
+ spriteId = CreateSprite(&playerIconSpriteTemplate, 0, 0, 1);
+ gRegionMap->playerIconSprite = &gSprites[spriteId];
+ if (gRegionMap->zoomed == FALSE)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn;
+ }
+}
+
+static void sub_80FBDF8(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->invisible = TRUE;
+ gRegionMap->playerIconSprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_80FBE24(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4;
+ gRegionMap->playerIconSprite->pos2.x = 0;
+ gRegionMap->playerIconSprite->pos2.y = 0;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ }
+}
+
+static void SpriteCB_PlayerIconZoomedIn(struct Sprite *sprite)
+{
+ sprite->pos2.x = -(gRegionMap->scrollX * 2);
+ sprite->pos2.y = -(gRegionMap->scrollY * 2);
+ sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+
+ // Determine if sprite is on screen
+ if (sprite->data0 < -8 || sprite->data0 > 0xA8 || sprite->data1 < -8 || sprite->data1 > 0xF8)
+ sprite->data2 = FALSE;
+ else
+ sprite->data2 = TRUE;
+
+ if (sprite->data2 == TRUE)
+ UpdateIconBlink(sprite);
+ else
+ sprite->invisible = TRUE;
+}
+
+static void SpriteCB_PlayerIconZoomedOut(struct Sprite *sprite)
+{
+ UpdateIconBlink(sprite);
+}
+
+static void UpdateIconBlink(struct Sprite *sprite)
+{
+ if (gRegionMap->blinkPlayerIcon)
+ {
+ // Toggle visibility every 16 frames
+ sprite->data7++;
+ if (sprite->data7 > 16)
+ {
+ sprite->data7 = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ }
+}
+
+void sub_80FBF94(void)
+{
+ if (gRegionMap->playerIsInCave)
+ gRegionMap->blinkPlayerIcon = TRUE;
+}
+
+const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length)
+{
+ if (mapSecId == MAPSEC_SECRET_BASE)
+ return GetSecretBaseMapName(dest);
+ if (mapSecId < MAPSEC_NONE)
+ return StringCopy(dest, gRegionMapLocations[mapSecId].regionMapSectionId);
+ if (length == 0)
+ length = 18;
+ return StringFill(dest, CHAR_SPACE, length);
+}
+
+const u8 *CopyMapName(u8 *dest, u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_UNK_0x57:
+ return StringCopy(dest, gOtherText_Ferry);
+ case MAPSEC_SECRET_BASE:
+ return StringCopy(dest, gOtherText_SecretBase);
+ default:
+ return GetMapSectionName(dest, mapSecId, 0);
+ }
+}
+
+const u8 *CopyLocationName(u8 *dest, u16 mapSecId)
+{
+ if (mapSecId == MAPSEC_EVIL_TEAM_HIDEOUT)
+ return StringCopy(dest, gOtherText_Hideout);
+ else
+ return CopyMapName(dest, mapSecId);
+}
+
+static void GetRegionMapLocationPosition(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
+{
+ *x = gRegionMapLocations[mapSecId].x;
+ *y = gRegionMapLocations[mapSecId].y;
+ *width = gRegionMapLocations[mapSecId].width;
+ *height = gRegionMapLocations[mapSecId].height;
+}
+
+struct UnknownStruct3
+{
+ void (*unk0)(void);
+ u16 unk4;
+ u16 unk6;
+ struct RegionMap regionMap;
+};
+
+extern u8 ewram[];
+#define ewram0 (*(struct UnknownStruct3 *)(ewram + 0))
+#define ewram888 (ewram + 0x888)
+#define ewramA6E (ewram[0xA6E])
+#define ewramBlankMapName (ewram + 0xA48)
+
+static const u16 sFlyRegionMapFrame_Pal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal");
+static const u8 sFlyRegionMapFrame_ImageLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz");
+static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz");
+static const u16 sFlyTargetIcons_Pal[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
+static const u8 sFlyTargetIcons_ImageLZ[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz");
+
+static const u8 sUnknown_083E7920[][3] =
+{
+ {0, 9, 1},
+ {0, 10, 14},
+ {0, 11, 15},
+ {0, 12, 16},
+ {0, 13, 17},
+ {0, 14, 18},
+ {0, 15, 19},
+ {0, 0, 3},
+ {0, 1, 4},
+ {0, 2, 5},
+ {0, 3, 6},
+ {0, 4, 7},
+ {0, 5, 8},
+ {0, 6, 9},
+ {0, 7, 10},
+ {0, 8, 11},
+ {0, 16, 0},
+ {0, 17, 0},
+ {0, 18, 0},
+ {0, 19, 0},
+ {0, 20, 0},
+ {0, 21, 0},
+ {0, 22, 0},
+ {0, 23, 0},
+ {0, 24, 0},
+ {0, 25, 0},
+ {0, 26, 0},
+ {0, 27, 0},
+ {0, 28, 0},
+ {0, 29, 0},
+ {0, 30, 0},
+ {0, 31, 0},
+ {0, 32, 0},
+ {0, 33, 0},
+ {0, 34, 0},
+ {0, 35, 0},
+ {0, 36, 0},
+ {0, 37, 0},
+ {0, 38, 0},
+ {0, 39, 0},
+ {0, 40, 0},
+ {0, 41, 0},
+ {0, 42, 0},
+ {0, 43, 0},
+ {0, 44, 0},
+ {0, 45, 0},
+ {0, 46, 0},
+ {0, 47, 0},
+ {0, 48, 0},
+ {0, 49, 0},
+};
+
+struct UnknownStruct4
+{
+ const u8 *const *unk0;
+ u16 mapSecId;
+ u16 flag;
+};
+
+static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter};
+
+static const struct UnknownStruct4 sUnknown_083E79C0[1] =
+{
+ {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, SYS_POKEMON_LEAGUE_FLY},
+};
+
+// XXX: what is this?
+static u8 *const ewram_ = ewram;
+
+static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2};
+
+// Fly targets that are not cities or towns
+static const u16 sSpecialFlyAreas[][2] =
+{
+ // flag, mapSecId
+ {0x848, MAPSEC_BATTLE_TOWER},
+ {0xFFFF, MAPSEC_NONE},
+};
+
+static const struct OamData sFlyTargetOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq1[] =
+{
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq2[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq3[] =
+{
+ ANIMCMD_FRAME(5, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq4[] =
+{
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq5[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq6[] =
+{
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sFlyTargetAnimTable[] =
+{
+ sFlyTargetAnimSeq0,
+ sFlyTargetAnimSeq1,
+ sFlyTargetAnimSeq2,
+ sFlyTargetAnimSeq3,
+ sFlyTargetAnimSeq4,
+ sFlyTargetAnimSeq5,
+ sFlyTargetAnimSeq6,
+};
+
+static const struct SpriteTemplate gFlyTargetSpriteTemplate =
+{
+ .tileTag = 2,
+ .paletteTag = 2,
+ .oam = &sFlyTargetOamData,
+ .anims = sFlyTargetAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+void CB2_InitFlyRegionMap(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E7224);
+ break;
+ case 2:
+ InitMenuWindow(&gWindowConfig_81E7224);
+ MenuZeroFillScreen();
+ break;
+ case 3:
+ InitRegionMap(&ewram0.regionMap, 0);
+ CreateRegionMapCursor(0, 0);
+ CreateRegionMapPlayerIcon(1, 1);
+ ewram0.unk6 = ewram0.regionMap.mapSecId;
+ StringFill(ewramBlankMapName, CHAR_SPACE, 12);
+ PrintFlyTargetName();
+ break;
+ case 4:
+ LZ77UnCompVram(sFlyRegionMapFrame_ImageLZ, (void *)(VRAM + 0xC000));
+ break;
+ case 5:
+ LZ77UnCompVram(sFlyRegionMapFrame_TilemapLZ, (void *)(VRAM + 0xF000));
+ break;
+ case 6:
+ LoadPalette(sFlyRegionMapFrame_Pal, 16, 32);
+ MenuPrint_PixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1);
+ break;
+ case 7:
+ CreateFlyTargetGraphics();
+ break;
+ case 8:
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ SetVBlankCallback(VBlankCB_FlyRegionMap);
+ break;
+ case 9:
+ REG_BLDCNT = 0;
+ REG_BG1CNT = 0x1E0D;
+ REG_DISPCNT = 0x1741;
+ sub_80FC244(sub_80FC5B4);
+ SetMainCallback2(CB2_FlyRegionMap);
+ break;
+ default:
+ return;
+ }
+ gMain.state++;
+}
+
+static void VBlankCB_FlyRegionMap(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_FlyRegionMap(void)
+{
+ ewram0.unk0();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+static void sub_80FC244(void (*func)(void))
+{
+ ewram0.unk0 = func;
+ ewram0.unk4 = 0;
+}
+
+static void PrintFlyTargetName(void)
+{
+ if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4)
+ {
+ u16 i = 0;
+ int zero;
+
+ for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++)
+ {
+ const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i];
+
+ if (ewram0.regionMap.mapSecId == r4->mapSecId)
+ {
+ if (FlagGet(r4->flag))
+ {
+ MenuDrawTextWindow(16, 14, 29, 19);
+ MenuPrint(ewram0.regionMap.mapSecName, 17, 15);
+ MenuPrint_RightAligned(r4->unk0[ewram0.regionMap.everGrandeCityArea], 29, 17);
+ return;
+ }
+ break;
+ }
+ }
+ // This check is always true, but somehow the compiler still performed it.
+ asm("mov %0, #0\n":"=r"(zero)); // zero = 0
+ if (zero == 0)
+ {
+ MenuDrawTextWindow(16, 16, 29, 19);
+ MenuPrint(ewram0.regionMap.mapSecName, 17, 17);
+ MenuZeroFillWindowRect(16, 14, 29, 15);
+ }
+ }
+ else
+ {
+ MenuDrawTextWindow(16, 16, 29, 19);
+ MenuPrint(ewramBlankMapName, 17, 17);
+ MenuZeroFillWindowRect(16, 14, 29, 15);
+ }
+}
+
+static void CreateFlyTargetGraphics(void)
+{
+ struct SpriteSheet spriteSheet;
+
+ LZ77UnCompWram(sFlyTargetIcons_ImageLZ, ewram888);
+ spriteSheet.data = ewram888;
+ spriteSheet.size = 0x1C0;
+ spriteSheet.tag = 2;
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&sFlyTargetIconSpritePalette);
+ CreateCityTownFlyTargetIcons();
+ CreateSpecialAreaFlyTargetIcons();
+}
+
+// Draws a light overlay on cities and towns that the player can fly to
+static void CreateCityTownFlyTargetIcons(void)
+{
+ u16 canFlyFlag = 0x80F;
+ u16 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+ u16 r7;
+ u8 spriteId;
+
+ GetRegionMapLocationPosition(i, &x, &y, &width, &height);
+ x = (x + 1) * 8 + 4;
+ y = (y + 2) * 8 + 4;
+ if (width == 2)
+ r7 = 1;
+ else if (height == 2)
+ r7 = 2;
+ else
+ r7 = 0;
+ spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10);
+ if (spriteId != 64)
+ {
+ gSprites[spriteId].oam.shape = r7;
+ if (FlagGet(canFlyFlag))
+ gSprites[spriteId].callback = SpriteCB_FlyTargetIcons;
+ else
+ r7 += 3;
+ StartSpriteAnim(&gSprites[spriteId], r7);
+ gSprites[spriteId].data0 = i;
+ }
+ canFlyFlag++;
+ }
+}
+
+// Draws a red box on other fly targets
+// The Battle Tower is the only one of these
+static void CreateSpecialAreaFlyTargetIcons(void)
+{
+ u16 i;
+
+ for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NONE; i++)
+ {
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+
+ if (FlagGet(sSpecialFlyAreas[i][0]))
+ {
+ u16 mapSecId = sSpecialFlyAreas[i][1];
+ u8 spriteId;
+
+ GetRegionMapLocationPosition(mapSecId, &x, &y, &width, &height);
+ x = (x + 1) * 8;
+ y = (y + 2) * 8;
+ spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10);
+ if (spriteId != 64)
+ {
+ gSprites[spriteId].oam.size = 1;
+ gSprites[spriteId].callback = SpriteCB_FlyTargetIcons;
+ StartSpriteAnim(&gSprites[spriteId], 6);
+ gSprites[spriteId].data0 = mapSecId;
+ }
+ }
+ }
+}
+
+static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
+{
+ // Blink if our mapSecId is the one selected on the map
+ if (ewram0.regionMap.mapSecId == sprite->data0)
+ {
+ // Toggle visibility every 16 frames
+ sprite->data1++;
+ if (sprite->data1 > 16)
+ {
+ sprite->data1 = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ }
+ else
+ {
+ sprite->data1 = 16;
+ sprite->invisible = FALSE;
+ }
+}
+
+static void sub_80FC5B4(void)
+{
+ switch (ewram0.unk4)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ ewram0.unk4++;
+ break;
+ case 1:
+ if (UpdatePaletteFade() != 0)
+ break;
+ sub_80FC244(sub_80FC600);
+ break;
+ }
+}
+
+static void sub_80FC600(void)
+{
+ if (ewram0.unk4 == 0)
+ {
+ switch (sub_80FAB60())
+ {
+ case INPUT_EVENT_NONE:
+ case INPUT_EVENT_DPAD:
+ case INPUT_EVENT_2:
+ break;
+ case INPUT_EVENT_3:
+ PrintFlyTargetName();
+ break;
+ case INPUT_EVENT_A_BUTTON:
+ if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4)
+ {
+ m4aSongNumStart(SE_SELECT);
+ ewramA6E = 1;
+ sub_80FC244(sub_80FC69C);
+ }
+ break;
+ case INPUT_EVENT_B_BUTTON:
+ m4aSongNumStart(SE_SELECT);
+ ewramA6E = 0;
+ sub_80FC244(sub_80FC69C);
+ break;
+ }
+ }
+}
+
+static void sub_80FC69C(void)
+{
+ switch (ewram0.unk4)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ ewram0.unk4++;
+ break;
+ case 1:
+ if (UpdatePaletteFade() != 0)
+ break;
+ FreeRegionMapIconResources();
+ if (ewramA6E != 0)
+ {
+ switch (ewram0.regionMap.mapSecId)
+ {
+ case MAPSEC_SOUTHERN_ISLAND:
+ sub_8053538(22);
+ break;
+ case MAPSEC_BATTLE_TOWER:
+ sub_8053538(21);
+ break;
+ case MAPSEC_LITTLEROOT_TOWN:
+ sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13);
+ break;
+ case MAPSEC_EVER_GRANDE_CITY:
+ sub_8053538((FlagGet(0x854) && ewram0.regionMap.everGrandeCityArea == 0) ? 20 : 11);
+ break;
+ default:
+ if (sUnknown_083E7920[ewram0.regionMap.mapSecId][2] != 0)
+ sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSecId][2]);
+ else
+ warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSecId][0], sUnknown_083E7920[ewram0.regionMap.mapSecId][1], -1);
+ break;
+ }
+ sub_80865BC();
+ }
+ else
+ {
+ SetMainCallback2(sub_808AD58);
+ }
+ break;
+ }
+}
diff --git a/src/rom4.c b/src/rom4.c
index bfc8e0e44..b2e30e292 100644
--- a/src/rom4.c
+++ b/src/rom4.c
@@ -993,12 +993,12 @@ bool8 is_light_level_8_or_9(u8 a1)
u8 unref_sub_8054260(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->name;
+ return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_name(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->name;
+ return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_battletype(void)
diff --git a/src/save.c b/src/save.c
index 570210fb0..46094746a 100644
--- a/src/save.c
+++ b/src/save.c
@@ -672,9 +672,9 @@ u8 sub_8125E2C(void)
return 0;
}
-u8 sub_8125E6C(void)
+bool8 sub_8125E6C(void)
{
- u8 retVal = 0;
+ u8 retVal = FALSE;
u16 val = ++gUnknown_03005EB4;
if (val <= 4)
{
@@ -684,7 +684,7 @@ u8 sub_8125E6C(void)
else
{
sub_81257F0(val, gSaveSectionLocations);
- retVal = 1;
+ retVal = TRUE;
}
if (gDamagedSaveSectors)
DoSaveFailedScreen(1);
diff --git a/src/save_menu_util.c b/src/save_menu_util.c
index b2dd662d6..a2d17bd36 100644
--- a/src/save_menu_util.c
+++ b/src/save_menu_util.c
@@ -70,7 +70,7 @@ void PrintSaveMapName(s16 x, s16 y)
{
char name[32];
- CopyMapName(name, gMapHeader.name);
+ CopyMapName(name, gMapHeader.regionMapSectionId);
MenuPrint(name, x, y);
}
diff --git a/src/secret_base.c b/src/secret_base.c
index d88d2c66a..4e8331f5c 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -205,7 +205,7 @@ void sub_80BB8CC(void)
memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7);
StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength);
gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender;
- VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name);
+ VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId);
}
void sub_80BB970(struct MapEvents *events)
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 876a3b426..f7afd9cec 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -3,6 +3,7 @@
#include "easy_chat.h"
#include "event_data.h"
#include "field_effect.h"
+#include "graphics.h"
#include "link.h"
#include "main.h"
#include "menu.h"
@@ -54,22 +55,55 @@ extern struct TrainerCard gTrainerCards[4];
struct UnknownStruct1
{
- u8 filler0[0x780];
+ u16 filler0[0x3C0];
u16 unk780[160];
};
extern struct UnknownStruct1 gUnknown_03004DE0;
-extern u8 gUnknown_083B5EF4[];
-extern u16 *gUnknown_083B5EF8[5];
-extern u16 gUnknown_083B5F0C[];
-extern u16 gBadgesPalette[];
-extern u16 gUnknown_083B5F4C[];
+extern const u8 gBadgesTiles[];
+extern const u16 gUnknown_083B5F0C[];
+extern const u16 gBadgesPalette[];
+extern const u16 gUnknown_083B5F4C[];
+extern const u16 gUnknown_083B5F6C[];
+extern const u16 gUnknown_083B5F8C[][4];
+
+const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp");
+// XXX: what is this?
+u8 *const ewram_ = ewram;
+
+bool8 sub_8093864(struct Task *);
+bool8 sub_80938A8(struct Task *);
+bool8 sub_80938CC(struct Task *);
+bool8 sub_8093918(struct Task *);
+bool8 sub_8093938(struct Task *);
+bool8 sub_8093954(struct Task *);
+bool8 sub_8093980(struct Task *);
+
+bool8 (*const gUnknown_083B5EBC[])(struct Task *) =
+{
+ sub_8093864,
+ sub_80938A8,
+ sub_80938CC,
+ sub_8093918,
+ sub_8093938,
+ sub_8093954,
+ sub_8093980,
+};
-extern u16 gUnknown_08E8CFC0[];
-extern u16 gUnknown_08E8D9C0[];
+bool8 sub_8093AA0(struct Task *);
+bool8 sub_8093AF0(struct Task *);
+bool8 sub_8093C0C(struct Task *);
+bool8 sub_8093C38(struct Task *);
+bool8 sub_8093D50(struct Task *);
-extern bool8 (*const gUnknown_083B5EBC[])(struct Task *);
-extern bool8 (*const gUnknown_083B5ED8[])(struct Task *);
+bool8 (*const gUnknown_083B5ED8[])(struct Task *) =
+{
+ sub_8093AA0,
+ sub_8093AF0,
+ sub_8093C0C,
+ sub_8093C38,
+ sub_8093D50,
+};
// FIXME: Other signature than on save_menu_util.h
void FormatPlayTime(u8 *playtime, u16 hours, u16 minutes, s16 colon);
@@ -171,38 +205,35 @@ static void sub_8093174(void)
case 0:
sub_8093534();
sub_8093688();
- gMain.state += 1;
+ gMain.state++;
break;
case 1:
sub_8093598();
- gMain.state += 1;
+ gMain.state++;
break;
case 2:
sub_80935EC();
- gMain.state += 1;
+ gMain.state++;
break;
case 3:
sub_8093610();
sub_80937A4();
- gMain.state += 1;
+ gMain.state++;
break;
case 4:
sub_80937BC();
- gMain.state += 1;
+ gMain.state++;
case 5:
- if (MultistepInitMenuWindowContinue() == FALSE)
- {
- return;
- }
- gMain.state += 1;
+ if (MultistepInitMenuWindowContinue())
+ gMain.state++;
break;
case 6:
sub_80937F0();
- gMain.state += 1;
+ gMain.state++;
break;
case 7:
sub_80937D8();
- gMain.state += 1;
+ gMain.state++;
break;
case 8:
nullsub_15();
@@ -376,22 +407,22 @@ static u8 sub_80934F4(struct TrainerCard *trainerCard)
if (trainerCard->firstHallOfFameA != 0 || trainerCard->firstHallOfFameB != 0 || trainerCard->firstHallOfFameC != 0)
{
- value += 1;
+ value++;
}
if (trainerCard->var_3)
{
- value += 1;
+ value++;
}
if (trainerCard->battleTowerLosses > 49)
{
- value += 1;
+ value++;
}
if (trainerCard->var_4)
{
- value += 1;
+ value++;
}
return value;
@@ -470,21 +501,14 @@ static void sub_8093688(void)
u8 i;
sub_8093324();
-
- ewram0.var_0 = FALSE;
- ewram0.var_3 = FALSE;
+ ewram0.var_0 = 0;
+ ewram0.var_3 = 0;
ewram0.var_4 = FALSE;
-
ewram0.var_2 = ewram0.var_64.stars;
-
- ewram0.var_5 = FALSE;
- ewram0.var_6 = FALSE;
-
+ ewram0.var_5 = 0;
+ ewram0.var_6 = 0;
for (i = 0; i < 4; i++)
- {
sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]);
- }
-
sub_80936D4();
}
@@ -497,61 +521,43 @@ void sub_80936D4(void)
ewram0.var_b = 0;
ewram0.var_c = 0;
ewram0.var_d = 0;
-
memset(ewram0.var_e, 0, sizeof(ewram0.var_e));
if (ewram0.var_64.hasPokedex)
- {
- ewram0.var_7 += 1;
- }
+ ewram0.var_7++;
- if (ewram0.var_64.firstHallOfFameA != 0 || ewram0.var_64.firstHallOfFameB != 0 ||
- ewram0.var_64.firstHallOfFameC != 0)
- {
- ewram0.var_8 += 1;
- }
+ if (ewram0.var_64.firstHallOfFameA != 0
+ || ewram0.var_64.firstHallOfFameB != 0
+ || ewram0.var_64.firstHallOfFameC != 0)
+ ewram0.var_8++;
if (ewram0.var_64.linkBattleWins != 0 || ewram0.var_64.linkBattleLosses != 0)
- {
- ewram0.var_9 += 1;
- }
+ ewram0.var_9++;
if (ewram0.var_64.battleTowerWins != 0 || ewram0.var_64.battleTowerLosses != 0)
- {
- ewram0.var_a += 1;
- }
+ ewram0.var_a++;
if (ewram0.var_64.contestsWithFriends != 0)
- {
- ewram0.var_b += 1;
- }
+ ewram0.var_b++;
if (ewram0.var_64.pokeblocksWithFriends != 0)
- {
- ewram0.var_c += 1;
- }
+ ewram0.var_c++;
if (ewram0.var_64.pokemonTrades != 0)
- {
- ewram0.var_d += 1;
- }
+ ewram0.var_d++;
if (!ewram0.var_1)
{
u32 badgeFlag;
- int i;
+ int i = 0;
- i = 0;
badgeFlag = BADGE01_GET;
while (1)
{
if (FlagGet(badgeFlag))
- {
- ewram0.var_e[i] += 1;
- }
-
- badgeFlag += 1;
- i += 1;
+ ewram0.var_e[i]++;
+ badgeFlag++;
+ i++;
if (badgeFlag > BADGE08_GET)
{
break;
@@ -616,14 +622,14 @@ bool8 sub_8093864(struct Task *task)
ewram0.var_6 = gSaveBlock2.playTimeVBlanks;
sub_80939A4();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- ewram0.var_0 += 1;
+ ewram0.var_0++;
return FALSE;
}
bool8 sub_80938A8(struct Task *task)
{
if (!gPaletteFade.active)
- ewram0.var_0 += 1;
+ ewram0.var_0++;
return FALSE;
}
@@ -639,16 +645,14 @@ bool8 sub_80938CC(struct Task *task)
if (ewram0.var_3 != 0)
{
ewram0.var_0 = 5;
- return TRUE;
}
else
{
ewram0.var_3 ^= 1;
ewram0.var_0 = 3;
- return TRUE;
}
+ return TRUE;
}
-
return FALSE;
}
@@ -656,19 +660,14 @@ bool8 sub_8093918(struct Task *task)
{
sub_8093A28();
PlaySE(SE_CARD);
-
- ewram0.var_0 += 1;
-
+ ewram0.var_0++;
return FALSE;
}
bool8 sub_8093938(struct Task *task)
{
if (sub_8093A48())
- {
ewram0.var_0 = 2;
- }
-
return FALSE;
}
@@ -676,17 +675,14 @@ bool8 sub_8093954(struct Task *task)
{
sub_80939C0();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- ewram0.var_0 += 1;
+ ewram0.var_0++;
return FALSE;
}
bool8 sub_8093980(struct Task *task)
{
if (!gPaletteFade.active)
- {
SetMainCallback2((MainCallback)ewram0.var_60);
- }
-
return FALSE;
}
@@ -698,28 +694,22 @@ static void sub_80939A4(void)
static void sub_80939C0(void)
{
- u8 taskId;
-
- taskId = FindTaskIdByFunc(sub_80939DC);
+ u8 taskId = FindTaskIdByFunc(sub_80939DC);
if (taskId != 0xFF)
- {
DestroyTask(taskId);
- }
}
static void sub_80939DC(u8 taskId)
{
u8 buffer[32];
- struct Task *task;
- task = &gTasks[taskId];
+ struct Task *task = &gTasks[taskId];
if (ewram0.var_5 != task->data[TD_1])
{
task->data[TD_1] = ewram0.var_5;
task->data[TD_0] ^= TRUE;
}
-
TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]);
MenuPrint(buffer, 10, 12);
}
@@ -750,18 +740,66 @@ bool8 sub_8093AA0(struct Task *task)
{
s32 i;
- ewram0.var_4 = 0;
+ ewram0.var_4 = FALSE;
dp12_8087EA4();
for (i = 0; i < ARRAY_COUNT(gUnknown_03004DE0.unk780); i++)
gUnknown_03004DE0.unk780[i] = -4;
SetHBlankCallback(sub_8093D7C);
- ewram0.var_4 = 1;
+ ewram0.var_4 = TRUE;
task->data[0]++;
return FALSE;
}
+/*
+bool8 sub_8093AF0(struct Task *task)
+{
+ u32 r7;
+ u16 r9;
+ u32 r6;
+ u32 r5;
+ u32 r4;
+ u32 r10;
+ u32 sp0;
+ s16 i;
+
+ ewram0.var_4 = 0;
+ task->data[1] += 3;
+ if (task->data[1] > 79)
+ task->data[1] = 79;
+
+ r7 = task->data[1];
+ r9 = 160 - r7;
+ r4 = r9 - r7;
+ r6 = -r7 << 16;
+ r5 = (160 << 16) / r4;
+ r5 -= 1 << 16;
+ r10 = r5 * r4 + r6;
+ sp0 = r5 / r4;
+ r5 *= 2;
+
+ for (i = 0; i < r7; i++)
+ {
+ gUnknown_03004DE0.filler0[i] = -4 - (u32)i;
+ }
+ //_08093B74
+ for (; i < r9; i++)
+ {
+ u16 var = r6 >> 16;
+ r6 += r5;
+ r5 -= sp0;
+ gUnknown_03004DE0.filler0[i] = -4 + var;
+ }
+ for (; i < 160; i++)
+ gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16);
+ ewram0.var_4 = 1;
+ if (task->data[1] > 0x4A)
+ task->data[0]++;
+ return FALSE;
+}
+*/
+
__attribute__((naked))
-bool8 sub_8093AF0()
+bool8 sub_8093AF0(struct Task *task)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -912,23 +950,18 @@ _08093C08: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093C0C(struct TrainerCard *trainerCard)
+bool8 sub_8093C0C(struct Task *task)
{
sub_80939C0();
sub_8093DAC();
-
if (!ewram0.var_3)
- {
sub_80939A4();
- }
-
- trainerCard->firstHallOfFameB += 1;
-
+ task->data[0]++;
return TRUE;
}
__attribute__((naked))
-bool8 sub_8093C38()
+bool8 sub_8093C38(struct Task *task)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -1077,59 +1110,33 @@ _08093D4C: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093D50(void)
+bool8 sub_8093D50(struct Task *task)
{
u8 taskId;
ewram0.var_4 = FALSE;
SetHBlankCallback(NULL);
sub_8093E04();
-
taskId = FindTaskIdByFunc(sub_8093A68);
DestroyTask(taskId);
-
return FALSE;
}
-__attribute__((naked))
void sub_8093D7C(void)
{
- asm(".syntax unified\n\
- ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
- ldr r0, _08093DA4 @ =REG_VCOUNT\n\
- ldrh r2, [r0]\n\
- movs r0, 0xFF\n\
- ands r0, r2\n\
- lsls r0, 1\n\
- movs r2, 0xF0\n\
- lsls r2, 3\n\
- adds r1, r2\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
-_08093DA0: .4byte gUnknown_03004DE0\n\
-_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\
-_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\
- .syntax divided\n");
+ u16 bgVOffset = gUnknown_03004DE0.unk780[REG_VCOUNT & 0xFF];
+
+ REG_BG0VOFS = bgVOffset;
+ REG_BG1VOFS = bgVOffset;
+ REG_BG2VOFS = bgVOffset;
}
static void sub_8093DAC(void)
{
if (ewram0.var_3)
- {
sub_8093DEC();
- }
else
- {
sub_8093DC8();
- }
}
static void sub_8093DC8(void)
@@ -1151,99 +1158,55 @@ static void sub_8093DEC(void)
sub_8094188();
}
-__attribute__((naked))
-static void sub_8093E04()
+static void sub_8093E04(void)
{
- asm(".syntax unified\n\
- ldr r0, _08093E20 @ =REG_BG0VOFS\n\
- ldr r2, _08093E24 @ =0x0000fffc\n\
- adds r1, r2, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- movs r2, 0\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
-_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\
-_08093E24: .4byte 0x0000fffc\n\
- .syntax divided\n");
+ REG_BG0VOFS = -4;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = -4;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = -4;
}
-__attribute__((naked))
static void sub_8093E28(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- bl sub_8093EA0\n\
- ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
- movs r1, 0xE0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
- movs r4, 0xC0\n\
- lsls r4, 19\n\
- movs r5, 0xA4\n\
- lsls r5, 5\n\
- ldr r1, _08093E8C @ =0x040000d4\n\
- ldr r6, _08093E90 @ =0x80000800\n\
- movs r2, 0x80\n\
- lsls r2, 5\n\
- movs r7, 0x80\n\
- lsls r7, 24\n\
-_08093E4E:\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- str r6, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r3, r2\n\
- adds r4, r2\n\
- subs r5, r2\n\
- cmp r5, r2\n\
- bhi _08093E4E\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- lsrs r0, r5, 1\n\
- orrs r0, r7\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- ldr r1, _08093E94 @ =gBadgesTiles\n\
- ldr r2, _08093E98 @ =0x06001480\n\
- ldr r0, _08093E8C @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _08093E9C @ =0x80000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093E84: .4byte gUnknown_083B5F6C\n\
-_08093E88: .4byte gMenuTrainerCard_Gfx\n\
-_08093E8C: .4byte 0x040000d4\n\
-_08093E90: .4byte 0x80000800\n\
-_08093E94: .4byte gBadgesTiles\n\
-_08093E98: .4byte 0x06001480\n\
-_08093E9C: .4byte 0x80000200\n\
- .syntax divided\n");
+ const u8 *src;
+ u8 *dst;
+ u32 size;
+
+ sub_8093EA0();
+ LoadPalette(gUnknown_083B5F6C, 0xE0, 32);
+ src = gMenuTrainerCard_Gfx;
+ dst = (void *)VRAM;
+ size = 0x1480;
+ while (1)
+ {
+ DmaCopy16(3, src, dst, 0x1000);
+ src += 0x1000;
+ dst += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, src, dst, size);
+ break;
+ }
+ }
+ {
+ const void *src = gBadgesTiles;
+ void *dst = (void *)(VRAM + 0x1480);
+
+ DmaCopy16(3, src, dst, 0x400);
+ }
}
+extern const u16 *const gUnknown_083B5EF8[];
+
void sub_8093EA0(void)
{
LoadPalette(gUnknown_083B5EF8[ewram0.var_2], 0, 48 * 2);
LoadPalette(gBadgesPalette, 48, 16 * 2);
LoadPalette(gUnknown_083B5F4C, 64, 16 * 2);
-
if (ewram0.var_64.gender != MALE)
- {
LoadPalette(gUnknown_083B5F0C, 16, 16 * 2);
- }
}
static void sub_8093EF8(void)
@@ -1251,36 +1214,32 @@ static void sub_8093EF8(void)
LoadTrainerGfx_TrainerCard(ewram0.var_64.gender, 80, (void *)(VRAM + 0x1880));
}
-__attribute__((naked))
static void sub_8093F14(void)
{
- asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x8\n\
- ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
- ldr r1, [r0, 0x4]\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- ldr r0, _08093F40 @ =0x02000000\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r0, [r0]\n\
- ldr r1, _08093F44 @ =0x06004800\n\
- movs r2, 0xA0\n\
- lsls r2, 1\n\
- bl CpuFastSet\n\
- add sp, 0x8\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093F3C: .4byte gUnknown_083B5EEC\n\
-_08093F40: .4byte 0x02000000\n\
-_08093F44: .4byte 0x06004800\n\
- .syntax divided\n");
+ const void *arr[] = {gUnknown_08E8CAC0, gUnknown_08E8D4C0};
+
+ CpuFastSet(arr[ewram0.var_1], (void *)(VRAM + 0x4800), 0x140);
}
+// I don't really know where to put the data. It's in such a weird order.
+
+const u8 gUnknown_083B5EF4[] = _(" : ");
+
+const u16 *const gUnknown_083B5EF8[] =
+{
+ gMenuTrainerCard0Star_Pal,
+ gMenuTrainerCard1Star_Pal,
+ gMenuTrainerCard2Star_Pal,
+ gMenuTrainerCard3Star_Pal,
+ gMenuTrainerCard4Star_Pal,
+};
+
+const u16 gUnknown_083B5F0C[] = INCBIN_U16("graphics/trainer_card/83B5F0C.gbapal");
+const u16 gBadgesPalette[] = INCBIN_U16("graphics/trainer_card/badges.gbapal");
+const u16 gUnknown_083B5F4C[] = INCBIN_U16("graphics/trainer_card/83B5F4C.gbapal");
+const u16 gUnknown_083B5F6C[] = INCBIN_U16("graphics/trainer_card/83B5F6C.gbapal");
+const u16 gUnknown_083B5F8C[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin");
+
static void sub_8093F48(void)
{
CpuFastSet(gUnknown_08E8CFC0, (void *)(VRAM + 0x4800), 320);
@@ -1291,266 +1250,79 @@ static void sub_8093F64(void)
CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320);
}
-__attribute__((naked))
static void sub_8093F80(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- movs r5, 0xC4\n\
- ldr r7, _08093FCC @ =0x06004000\n\
- movs r1, 0x5\n\
- movs r0, 0xA0\n\
- lsls r0, 7\n\
- adds r6, r0, 0\n\
-_08093F8E:\n\
- movs r0, 0x13\n\
- lsls r3, r1, 16\n\
- asrs r4, r3, 11\n\
-_08093F94:\n\
- lsls r2, r0, 16\n\
- asrs r2, 16\n\
- adds r1, r4, r2\n\
- lsls r1, 1\n\
- adds r1, r7\n\
- adds r0, r5, 0\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- lsrs r0, r2, 16\n\
- asrs r2, 16\n\
- cmp r2, 0x1A\n\
- ble _08093F94\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r3, r1\n\
- lsrs r1, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xC\n\
- ble _08093F8E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093FCC: .4byte 0x06004000\n\
- .syntax divided\n");
+ u16 r5 = 0xC4;
+ u16 *ptr = (u16 *)(VRAM + 0x4000);
+ s16 i;
+ s16 j;
+
+ for (i = 5; i < 13; i++)
+ {
+ for (j = 19; j < 27; j++, r5++)
+ ptr[i * 32 + j] = r5 | 0x5000;
+ }
}
-__attribute__((naked))
static void sub_8093FD0(void)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r4, _0809402C @ =0x06004000\n\
- movs r2, 0xF\n\
- ldr r0, _08094030 @ =0x02000000\n\
- ldrb r0, [r0, 0x2]\n\
- adds r0, 0xF\n\
- cmp r2, r0\n\
- bge _08094002\n\
- movs r6, 0xC0\n\
- lsls r6, 1\n\
- ldr r1, _08094034 @ =0x0000408f\n\
- adds r5, r1, 0\n\
- adds r3, r0, 0\n\
-_08093FEA:\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- adds r0, r6\n\
- strh r5, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r2, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, r3\n\
- blt _08093FEA\n\
-_08094002:\n\
- lsls r1, r2, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- bgt _08094024\n\
- movs r3, 0xC0\n\
- lsls r3, 1\n\
- movs r2, 0\n\
-_08094010:\n\
- asrs r0, r1, 16\n\
- lsls r1, r0, 1\n\
- adds r1, r4\n\
- adds r1, r3\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r1, r0, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- ble _08094010\n\
-_08094024:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0809402C: .4byte 0x06004000\n\
-_08094030: .4byte 0x02000000\n\
-_08094034: .4byte 0x0000408f\n\
- .syntax divided\n");
+ u16 *ptr = (u16 *)(VRAM + 0x4000);
+ s16 i = 15;
+ s16 var = 15 + ewram0.var_2;
+
+ while (i < var)
+ {
+ ptr[6 * 32 + i] = 0x408F;
+ i++;
+ }
+ while (i < 0x13)
+ {
+ ptr[6 * 32 + i] = 0;
+ i++;
+ }
}
-__attribute__((naked))
static void sub_8094038(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- ldr r1, _080940D0 @ =0x02000000\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _080940C2\n\
- ldr r0, _080940D4 @ =0x06004000\n\
- mov r9, r0\n\
- movs r0, 0\n\
- movs r2, 0x4\n\
- adds r1, 0xE\n\
- mov r8, r1\n\
- ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
- movs r1, 0xC0\n\
- lsls r1, 6\n\
- adds r6, r1, 0\n\
- adds r1, r7, 0x6\n\
- mov r12, r1\n\
-_08094060:\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- mov r1, r8\n\
- adds r0, r4, r1\n\
- ldrb r0, [r0]\n\
- lsls r5, r2, 16\n\
- cmp r0, 0\n\
- beq _080940AE\n\
- asrs r1, r5, 15\n\
- add r1, r9\n\
- movs r2, 0xF0\n\
- lsls r2, 2\n\
- adds r3, r1, r2\n\
- lsls r2, r4, 3\n\
- adds r0, r2, r7\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940DC @ =0x000003c2\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x2\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x4\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940E0 @ =0x00000402\n\
- adds r1, r0\n\
- add r2, r12\n\
- ldrh r0, [r2]\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
-_080940AE:\n\
- adds r1, r4, 0x1\n\
- lsls r1, 16\n\
- movs r2, 0xC0\n\
- lsls r2, 10\n\
- adds r0, r5, r2\n\
- lsrs r2, r0, 16\n\
- lsrs r0, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x7\n\
- ble _08094060\n\
-_080940C2:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080940D0: .4byte 0x02000000\n\
-_080940D4: .4byte 0x06004000\n\
-_080940D8: .4byte gUnknown_083B5F8C\n\
-_080940DC: .4byte 0x000003c2\n\
-_080940E0: .4byte 0x00000402\n\
- .syntax divided\n");
+ if (ewram0.var_1 == 0)
+ {
+ u16 *ptr = (u16 *)(VRAM + 0x4000);
+ s16 i;
+ s16 r2;
+
+ for (i = 0, r2 = 4; i < 8; i++, r2 += 3)
+ {
+ if (ewram0.var_e[i] != 0)
+ {
+ ptr[15 * 32 + r2 + 0] = gUnknown_083B5F8C[i][0] | 0x3000;
+ ptr[15 * 32 + r2 + 1] = gUnknown_083B5F8C[i][1] | 0x3000;
+ ptr[16 * 32 + r2 + 0] = gUnknown_083B5F8C[i][2] | 0x3000;
+ ptr[16 * 32 + r2 + 1] = gUnknown_083B5F8C[i][3] | 0x3000;
+ }
+ }
+ }
}
-__attribute__((naked))
-static void sub_80940E4()
+static void sub_80940E4(void)
{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- movs r2, 0\n\
- ldr r1, _08094108 @ =0x06004000\n\
- movs r4, 0\n\
- ldr r3, _0809410C @ =0x000003ff\n\
-_080940EE:\n\
- strh r4, [r1]\n\
- lsls r0, r2, 16\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r0, r2\n\
- adds r1, 0x2\n\
- lsrs r2, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- ble _080940EE\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08094108: .4byte 0x06004000\n\
-_0809410C: .4byte 0x000003ff\n\
- .syntax divided\n");
+ s16 i;
+ u16 *ptr;
+
+ for (i = 0, ptr = (u16 *)(VRAM + 0x4000); i < 0x400; i++, ptr++)
+ *ptr = 0;
}
-__attribute__((naked))
-static void sub_8094110()
+static void sub_8094110(void)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r6, _0809413C @ =0x06004800\n\
- movs r2, 0x3\n\
- movs r5, 0xA0\n\
- lsls r5, 2\n\
- movs r3, 0x1\n\
- movs r4, 0xB0\n\
- lsls r4, 2\n\
-_08094120:\n\
- lsls r0, r2, 1\n\
- adds r0, r6\n\
- adds r1, r0, r5\n\
- strh r3, [r1]\n\
- adds r0, r4\n\
- strh r3, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x10\n\
- bls _08094120\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0809413C: .4byte 0x06004800\n\
- .syntax divided\n");
-}
+ u16 *ptr = (u16 *)(VRAM + 0x4800);
+ u16 i;
+ for (i = 3; i < 17; i++)
+ {
+ ptr[10 * 32 + i] = 1;
+ ptr[11 * 32 + i] = 1;
+ }
+}
static void sub_8094140(void)
{
@@ -1609,11 +1381,12 @@ static void TrainerCard_Front_PrintPokedexCount(void)
if (ewram0.var_7 == FALSE)
{
sub_8094110();
- return;
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
- MenuPrint_RightAligned(buffer, 16, 10);
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
+ MenuPrint_RightAligned(buffer, 16, 10);
+ }
}
static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
@@ -1624,13 +1397,11 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
playTimeHours = gSaveBlock2.playTimeHours;
playTimeMinutes = gSaveBlock2.playTimeMinutes;
-
if (ewram0.var_1 != 0)
{
playTimeHours = ewram0.var_64.playTimeHours;
playTimeMinutes = ewram0.var_64.playTimeMinutes;
}
-
FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon);
sub_8072C74(arg1, buffer, 48, 1);
}
@@ -1639,24 +1410,22 @@ static void sub_809429C(void)
{
u8 *str;
- if (ewram0.var_1 == FALSE)
+ if (ewram0.var_1 != 0)
{
- return;
+ str = gStringVar1;
+ str = StringCopy(str, ewram0.var_20[0]);
+ str[0] = 00;
+ str++;
+ str = StringCopy(str, ewram0.var_20[1]);
+ MenuPrint(gStringVar1, 2, 14);
+
+ str = gStringVar1;
+ str = StringCopy(str, ewram0.var_20[2]);
+ str[0] = 00;
+ str++;
+ str = StringCopy(str, ewram0.var_20[3]);
+ MenuPrint(gStringVar1, 2, 16);
}
-
- str = gStringVar1;
- str = StringCopy(str, ewram0.var_20[0]);
- str[0] = 00;
- str++;
- str = StringCopy(str, ewram0.var_20[1]);
- MenuPrint(gStringVar1, 2, 14);
-
- str = gStringVar1;
- str = StringCopy(str, ewram0.var_20[2]);
- str[0] = 00;
- str++;
- str = StringCopy(str, ewram0.var_20[3]);
- MenuPrint(gStringVar1, 2, 16);
}
static void TrainerCard_Back_PrintName(void)
@@ -1678,152 +1447,115 @@ static void TrainerCard_Back_PrintName(void)
static void TrainerCard_Back_PrintHallOfFameTime_Label(void)
{
- if (ewram0.var_8 == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_FirstHOF, 3, 5);
+ if (ewram0.var_8 != 0)
+ MenuPrint(gOtherText_FirstHOF, 3, 5);
}
static void TrainerCard_Back_PrintHallOfFameTime(void)
{
u8 *str;
- if (ewram0.var_8 == FALSE)
+ if (ewram0.var_8 != 0)
{
- return;
+ str = gStringVar1;
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = StringCopy(str, gUnknown_083B5EF4);
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = StringCopy(str, gUnknown_083B5EF4);
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
+ MenuPrint_RightAligned(gStringVar1, 28, 5);
}
-
- str = gStringVar1;
- str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
- str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
- str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
-
- MenuPrint_RightAligned(gStringVar1, 28, 5);
}
static void TrainerCard_Back_PrintLinkBattlesLabel(void)
{
- if (ewram0.var_9 == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_LinkCableBattles, 3, 7);
+ if (ewram0.var_9 != 0)
+ MenuPrint(gOtherText_LinkCableBattles, 3, 7);
}
static void TrainerCard_Back_PrintLinkBattles(void)
{
u8 buffer[16];
- if (ewram0.var_9 == FALSE)
+ if (ewram0.var_9 != 0)
{
- return;
- }
+ ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins);
+ MenuPrint_RightAligned(buffer, 22, 7);
- ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins);
- MenuPrint_RightAligned(buffer, 22, 7);
-
- ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses);
- MenuPrint_RightAligned(buffer, 28, 7);
+ ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses);
+ MenuPrint_RightAligned(buffer, 28, 7);
+ }
}
static void TrainerCard_Back_PrintBattleTower_Label(void)
{
- if (ewram0.var_a == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15);
+ if (ewram0.var_a != 0)
+ MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15);
}
static void TrainerCard_Back_PrintBattleTower(void)
{
u8 buffer[16];
- if (ewram0.var_a == FALSE)
+ if (ewram0.var_a != 0)
{
- return;
- }
+ sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1);
+ MenuPrint_PixelCoords(buffer, 112, 120, 0);
- sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1);
- MenuPrint_PixelCoords(buffer, 112, 120, 0);
-
- sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1);
- MenuPrint_PixelCoords(buffer, 149, 120, 0);
+ sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1);
+ MenuPrint_PixelCoords(buffer, 149, 120, 0);
+ }
}
static void TrainerCard_Back_PrintLinkContests_Label(void)
{
- if (ewram0.var_b == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_ContestRecord, 3, 13);
+ if (ewram0.var_b != 0)
+ MenuPrint(gOtherText_ContestRecord, 3, 13);
}
static void TrainerCard_Back_PrintLinkContests(void)
{
u8 buffer[8];
- if (ewram0.var_b == FALSE)
+ if (ewram0.var_b != 0)
{
- return;
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ MenuPrint_RightAligned(buffer, 28, 13);
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
- MenuPrint_RightAligned(buffer, 28, 13);
}
static void TrainerCard_Back_PrintLinkPokeblocks_Label(void)
{
- if (ewram0.var_c == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_MixingRecord, 3, 11);
+ if (ewram0.var_c != 0)
+ MenuPrint(gOtherText_MixingRecord, 3, 11);
}
static void TrainerCard_Back_PrintLinkPokeblocks(void)
{
u8 buffer[8];
- if (ewram0.var_c == FALSE)
+ if (ewram0.var_c != 0)
{
- return;
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ MenuPrint_RightAligned(buffer, 28, 11);
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
- MenuPrint_RightAligned(buffer, 28, 11);
}
static void TrainerCard_Back_PrintPokemonTrades_Label(void)
{
- if (ewram0.var_d == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_TradeRecord, 3, 9);
+ if (ewram0.var_d != 0)
+ MenuPrint(gOtherText_TradeRecord, 3, 9);
}
static void TrainerCard_Back_PrintPokemonTrades(void)
{
u8 buffer[8];
- if (ewram0.var_d == FALSE)
+ if (ewram0.var_d != 0)
{
- return;
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ MenuPrint_RightAligned(buffer, 28, 9);
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
- MenuPrint_RightAligned(buffer, 28, 9);
}
void unref_sub_8094588(u16 left, u16 top)
@@ -1831,9 +1563,6 @@ void unref_sub_8094588(u16 left, u16 top)
const u8 *text = gOtherText_Boy;
if (gSaveBlock2.playerGender == FEMALE)
- {
text = gOtherText_Girl;
- }
-
- MenuPrint(text, (u8)left, (u8)top);
+ MenuPrint(text, left, top);
}
diff --git a/src/tv.c b/src/tv.c
index 016595a33..9b62c7a51 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -365,7 +365,7 @@ void sub_80BDC14(void)
gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2;
gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3;
gSaveBlock1.gabbyAndTyData.valA_4 = 1;
- gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.name;
+ gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId;
IncrementGameStat(GAME_STAT_GOT_INTERVIEWED);
}
@@ -556,7 +556,7 @@ void sub_80BE028(void)
worldOfMasters->var02++;
worldOfMasters->var04 = gBattleResults.caughtPoke;
worldOfMasters->var08 = gBattleResults.poke1Species;
- worldOfMasters->var0a = gMapHeader.name;
+ worldOfMasters->var0a = gMapHeader.regionMapSectionId;
}
void sub_80BE074(void)
@@ -585,7 +585,7 @@ void sub_80BE074(void)
pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies;
pokemonTodayFailed->var10 = total;
pokemonTodayFailed->var11 = gBattleOutcome;
- pokemonTodayFailed->var12 = gMapHeader.name;
+ pokemonTodayFailed->var12 = gMapHeader.regionMapSectionId;
StringCopy(pokemonTodayFailed->playerName, gSaveBlock2.playerName);
sub_80BE138((TVShow *)pokemonTodayFailed);
pokemonTodayFailed->language = GAME_LANGUAGE;
@@ -710,7 +710,7 @@ void sub_80BE3BC(void)
smartShopper->var00 = TVSHOW_SMART_SHOPPER;
smartShopper->var01 = rval;
- smartShopper->shopLocation = gMapHeader.name;
+ smartShopper->shopLocation = gMapHeader.regionMapSectionId;
for (i=0; i<3; i++)
{
smartShopper->itemIds[i] = gUnknown_02038724[i].item_id;
@@ -2720,7 +2720,7 @@ void DoTVShowTodaysSmartShopper(void)
{
case 0:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
- sub_80FBFB4(gStringVar2, smartShopper->shopLocation, 0);
+ GetMapSectionName(gStringVar2, smartShopper->shopLocation, 0);
if (smartShopper->itemAmounts[0] >= 0xff)
gUnknown_020387E8 = 11;
else
@@ -2978,7 +2978,7 @@ void DoTVShowPokemonTodayFailedCapture(void)
break;
case 1:
TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
- sub_80FBFB4(gStringVar2, pokemonTodayFailed->var12, 0);
+ GetMapSectionName(gStringVar2, pokemonTodayFailed->var12, 0);
StringCopy(gStringVar3, gSpeciesNames[pokemonTodayFailed->species2]);
if (pokemonTodayFailed->var11 == 1)
gUnknown_020387E8 = 3;
@@ -3133,7 +3133,7 @@ void DoTVShowPokemonNewsMassOutbreak(void)
{
struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak;
- sub_80FBFB4(gStringVar1, massOutbreak->locationMapNum, 0);
+ GetMapSectionName(gStringVar1, massOutbreak->locationMapNum, 0);
StringCopy(gStringVar2, gSpeciesNames[massOutbreak->species]);
TVShowDone();
StartMassOutbreak();
@@ -3149,7 +3149,7 @@ void DoTVShowInSearchOfTrainers(void)
switch (state)
{
case 0:
- sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
+ GetMapSectionName(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
if (gSaveBlock1.gabbyAndTyData.battleNum > 1)
gUnknown_020387E8 = 1;
else
@@ -3246,7 +3246,7 @@ void DoTVShowTheWorldOfMasters(void)
case 2:
TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName,
worldOfMasters->language);
- sub_80FBFB4(gStringVar2, worldOfMasters->var0a, 0);
+ GetMapSectionName(gStringVar2, worldOfMasters->var0a, 0);
StringCopy(gStringVar3, gSpeciesNames[worldOfMasters->var04]);
TVShowDone();
break;
diff --git a/src/unknown_debug_menu.c b/src/unknown_debug_menu.c
index 6a8bad0d4..a81625f2a 100644
--- a/src/unknown_debug_menu.c
+++ b/src/unknown_debug_menu.c
@@ -41,8 +41,8 @@ static u8 sub_814A464(void)
u8 sub_814A4B8(void)
{
- gSaveBlock2.filler_A8.var_4AE = 3;
- gSaveBlock2.filler_A8.var_4AF = 3;
+ gSaveBlock2.filler_A8.var_4AE[0] = 3;
+ gSaveBlock2.filler_A8.var_4AE[1] = 3;
gSaveBlock2.filler_A8.var_4B4 = gBattleCommunication[0] + 1;
gSaveBlock2.filler_A8.var_4B6 = gBattleCommunication[0] + 1;
gSaveBlock2.filler_A8.var_4B0 = 1;
diff --git a/src/unknown_task.c b/src/unknown_task.c
new file mode 100644
index 000000000..81b89ef92
--- /dev/null
+++ b/src/unknown_task.c
@@ -0,0 +1,255 @@
+#include "global.h"
+#include "data2.h"
+#include "task.h"
+#include "trig.h"
+
+struct UnknownStruct1
+{
+ void *src[2];
+ void *dest;
+ u32 unkC;
+ void (*unk10)(void);
+ u8 srcBank;
+ u8 unk15;
+ u8 unk16;
+ u8 unk17;
+ u8 taskId;
+ u8 filler19[0x7];
+};
+
+struct UnknownStruct2
+{
+ void *dest;
+ u32 control;
+ u8 unk8;
+ u8 unk9;
+};
+
+static void sub_80896F4(void);
+static void sub_8089714(void);
+
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042C0;
+
+extern u8 gUnknown_0202FFA4;
+
+extern struct UnknownStruct1 gUnknown_03004DC0;
+
+extern u16 gUnknown_03004DE0[][0x3C0];
+
+void remove_some_task(void)
+{
+ gUnknown_03004DC0.unk15 = 0;
+ DmaStop(0);
+ if (gUnknown_03004DC0.taskId != 0xFF)
+ {
+ DestroyTask(gUnknown_03004DC0.taskId);
+ gUnknown_03004DC0.taskId = 0xFF;
+ }
+}
+
+void dp12_8087EA4(void)
+{
+ CpuFill16(0, gUnknown_03004DE0, 0x780 * 2);
+ gUnknown_03004DC0.src[0] = 0;
+ gUnknown_03004DC0.src[1] = 0;
+ gUnknown_03004DC0.dest = 0;
+ gUnknown_03004DC0.unkC = 0;
+ gUnknown_03004DC0.srcBank = 0;
+ gUnknown_03004DC0.unk15 = 0;
+ gUnknown_03004DC0.unk16 = 0;
+ gUnknown_03004DC0.unk17 = 0;
+ gUnknown_03004DC0.taskId = 0xFF;
+}
+
+void sub_80895F8(struct UnknownStruct2 unk)
+{
+ if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1))
+ {
+ gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1];
+ gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1];
+ gUnknown_03004DC0.unk10 = sub_80896F4;
+ }
+ else
+ {
+ gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2];
+ gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2];
+ gUnknown_03004DC0.unk10 = sub_8089714;
+ }
+
+ gUnknown_03004DC0.unkC = unk.control;
+ gUnknown_03004DC0.dest = unk.dest;
+ gUnknown_03004DC0.unk15 = unk.unk8;
+ gUnknown_03004DC0.unk16 = unk.unk9;
+ gUnknown_03004DC0.unk17 = unk.unk9;
+}
+
+void sub_8089668(void)
+{
+ if (gUnknown_03004DC0.unk15)
+ {
+ if (gUnknown_03004DC0.unk15 == 3)
+ {
+ gUnknown_03004DC0.unk15 = 0;
+ DmaStop(0);
+ gUnknown_0202FFA4 = 1;
+ }
+ else
+ {
+ DmaStop(0);
+ DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC);
+ gUnknown_03004DC0.unk10();
+ gUnknown_03004DC0.srcBank ^= 1;
+ }
+ }
+}
+
+static void sub_80896F4(void)
+{
+ u16 *dest = (u16 *)gUnknown_03004DC0.dest;
+ u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
+ *dest = *src;
+}
+
+static void sub_8089714(void)
+{
+ u32 *dest = (u32 *)gUnknown_03004DC0.dest;
+ u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
+ *dest = *src;
+}
+
+static void task00_for_dp12(u8 taskId)
+{
+ int value = 0;
+
+ if (gUnknown_0202FFA4)
+ {
+ DestroyTask(taskId);
+ gUnknown_03004DC0.taskId = 0xFF;
+ }
+ else
+ {
+ if (gTasks[taskId].data[7])
+ {
+ switch (gTasks[taskId].data[6])
+ {
+ case 0x0:
+ value = gUnknown_030042A4;
+ break;
+ case 0x2:
+ value = gUnknown_030042A0;
+ break;
+ case 0x4:
+ value = gUnknown_030042C0;
+ break;
+ case 0x6:
+ value = gUnknown_030041B4;
+ break;
+ case 0x8:
+ value = gUnknown_03004288;
+ break;
+ case 0xA:
+ value = gUnknown_03004280;
+ break;
+ case 0xC:
+ value = gUnknown_030041B0;
+ break;
+ case 0xE:
+ value = gUnknown_030041B8;
+ break;
+ }
+ }
+ if (gTasks[taskId].data[4])
+ {
+ int i;
+ int offset;
+ gTasks[taskId].data[4]--;
+ offset = gTasks[taskId].data[3] + 320;
+ for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++)
+ {
+ gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value;
+ offset++;
+ }
+ }
+ else
+ {
+ int i;
+ int offset;
+ gTasks[taskId].data[4] = gTasks[taskId].data[5];
+ offset = gTasks[taskId].data[3] + 320;
+ for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++)
+ {
+ gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value;
+ offset++;
+ }
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[3] = 0;
+ }
+ }
+ }
+}
+
+static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4)
+{
+ u16 i = 0;
+ u8 offset = 0;
+
+ while (i < 0x100)
+ {
+ a1[i] = (gSineTable[offset] * a3) / 256;
+ offset += a2;
+ i++;
+ }
+}
+
+u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7)
+{
+ int i;
+ int offset;
+ struct UnknownStruct2 unk;
+ u8 taskId;
+
+ dp12_8087EA4();
+
+ unk.dest = (void *)(REG_ADDR_BG0HOFS + a6);
+ unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1;
+ unk.unk8 = 1;
+ unk.unk9 = 0;
+
+ sub_80895F8(unk);
+
+ taskId = CreateTask(task00_for_dp12, 0);
+
+ gTasks[taskId].data[0] = a1;
+ gTasks[taskId].data[1] = a2;
+ gTasks[taskId].data[2] = 256 / a3;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = a5;
+ gTasks[taskId].data[5] = a5;
+ gTasks[taskId].data[6] = a6;
+ gTasks[taskId].data[7] = a7;
+
+ gUnknown_03004DC0.taskId = taskId;
+ gUnknown_0202FFA4 = 0;
+
+ sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1);
+
+ offset = 320;
+
+ for (i = a1; i < a2; i++)
+ {
+ gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset];
+ gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset];
+ offset++;
+ }
+
+ return taskId;
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index c5745a199..b44263a1e 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -755,7 +755,7 @@ gUnknown_020388BC: @ 20388BC
.include "src/menu_helpers.o"
.align 2
-gUnknown_020388CC: @ 20388CC
+gRegionMap: @ 20388CC
.space 0x4
gUnknown_020388D0: @ 20388D0