summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL.md56
-rw-r--r--README.md43
-rw-r--r--asm/battle_1.s42
-rw-r--r--asm/battle_2.s184
-rw-r--r--asm/battle_anim.s80
-rw-r--r--asm/battle_anim_80A22E8.s736
-rw-r--r--asm/battle_anim_80DE2C0.s186
-rw-r--r--asm/battle_anim_80EEC0C.s12
-rw-r--r--asm/battle_controller_link_opponent.s8
-rw-r--r--asm/battle_controller_link_partner.s8
-rw-r--r--asm/battle_controller_oak.s24
-rw-r--r--asm/battle_controller_opponent.s8
-rw-r--r--asm/battle_controller_player.s72
-rw-r--r--asm/battle_controller_pokedude.s36
-rw-r--r--asm/battle_controller_safari.s16
-rw-r--r--asm/battle_message.s2
-rw-r--r--asm/battle_records.s2
-rw-r--r--asm/battle_script_commands.s44
-rw-r--r--asm/battle_transition.s312
-rw-r--r--asm/berry_fix_program.s2
-rw-r--r--asm/berry_pouch.s6
-rw-r--r--asm/buy_menu_helpers.s2
-rw-r--r--asm/cable_club.s2
-rw-r--r--asm/coord_event_weather.s105
-rw-r--r--asm/credits.s4
-rw-r--r--asm/daycare.s6
-rw-r--r--asm/diploma.s2
-rw-r--r--asm/egg_hatch.s2
-rw-r--r--asm/evolution_scene.s234
-rw-r--r--asm/field_effect.s4
-rw-r--r--asm/field_map_obj.s8
-rw-r--r--asm/field_message_box.s6
-rw-r--r--asm/field_player_avatar.s4
-rw-r--r--asm/field_screen_effect.s26
-rw-r--r--asm/field_specials.s24
-rw-r--r--asm/field_weather.s4
-rw-r--r--asm/field_weather_effects.s12
-rw-r--r--asm/hall_of_fame.s38
-rw-r--r--asm/help_system_812B1E0.s24
-rw-r--r--asm/intro.s34
-rw-r--r--asm/item_menu.s10
-rw-r--r--asm/item_pc.s8
-rw-r--r--asm/item_use.s2
-rw-r--r--asm/itemfinder.s4
-rw-r--r--asm/learn_move.s2
-rw-r--r--asm/link.s2
-rw-r--r--asm/link_rfu_3.s36
-rw-r--r--asm/list_menu.s2
-rw-r--r--asm/macros.inc5
-rw-r--r--asm/mail.s6
-rw-r--r--asm/main_menu.s4
-rw-r--r--asm/menu.s28
-rw-r--r--asm/menu2.s563
-rw-r--r--asm/menu_indicators.s12
-rw-r--r--asm/mystery_gift_menu.s2
-rw-r--r--asm/naming_screen.s10
-rw-r--r--asm/new_game.s2
-rw-r--r--asm/new_menu_helpers.s58
-rw-r--r--asm/oak_speech.s5728
-rw-r--r--asm/option_menu.s4
-rw-r--r--asm/overworld.s18
-rw-r--r--asm/party_menu.s10
-rw-r--r--asm/player_pc.s32
-rw-r--r--asm/pokeball.s4
-rw-r--r--asm/pokedex_screen.s4
-rw-r--r--asm/pokemon_3.s6
-rw-r--r--asm/pokemon_special_anim.s10
-rw-r--r--asm/pokemon_storage_system.s30
-rw-r--r--asm/pokemon_summary_screen.s10
-rw-r--r--asm/region_map.s2
-rw-r--r--asm/reshow_battle_screen.s42
-rw-r--r--asm/roamer.s531
-rw-r--r--asm/script_menu.s6
-rw-r--r--asm/seagallop.s2
-rw-r--r--asm/shop.s4
-rw-r--r--asm/slot_machine.s8
-rw-r--r--asm/start_menu.s22
-rw-r--r--asm/teachy_tv.s4
-rw-r--r--asm/title_screen.s38
-rw-r--r--asm/tm_case.s6
-rw-r--r--asm/trade.s2
-rw-r--r--asm/trainer_card.s42
-rw-r--r--asm/trig.s8
-rw-r--r--asm/union_room_chat.s28
-rw-r--r--asm/unk_8147AA8.s4
-rw-r--r--asm/unk_814BB4C.s14
-rw-r--r--asm/unk_814D5C8.s6
-rw-r--r--asm/unk_81507FC.s6
-rw-r--r--asm/unk_815F138.s8
-rw-r--r--asm/unknown_task.s644
-rw-r--r--asm/wild_encounter.s8
-rw-r--r--asm/wild_pokemon_area.s4
-rw-r--r--asm/wireless_communication_status_screen.s4
-rw-r--r--charmap.txt77
-rw-r--r--data/battle_anim.s271
-rw-r--r--data/berry_pouch.s59
-rw-r--r--data/buy_menu_helpers.s14
-rw-r--r--data/data.s2
-rw-r--r--data/data_835B488.s931
-rw-r--r--data/data_83F5738.s2
-rw-r--r--data/data_83FECCC.s41
-rw-r--r--data/data_845FD54.s600
-rw-r--r--data/event_scripts.s250
-rw-r--r--data/field_door.s17
-rw-r--r--data/field_ground_effect.s34
-rw-r--r--data/field_map_obj.s508
-rw-r--r--data/field_player_avatar.s73
-rw-r--r--data/field_tasks.s7
-rw-r--r--data/field_weather.s101
-rw-r--r--data/help_system.s8
-rw-r--r--data/itemfinder.s7
-rw-r--r--data/link_rfu_4.s54
-rw-r--r--data/map_obj_80688E4.s30
-rw-r--r--data/menu_indicators.s46
-rw-r--r--data/mystery_gift_menu.s14
-rw-r--r--data/oak_speech/help_docs_page2_tilemap.binbin0 -> 160 bytes
-rw-r--r--data/oak_speech/help_docs_page3_tilemap.binbin0 -> 160 bytes
-rw-r--r--data/oak_speech/help_docs_palette.pal67
-rw-r--r--data/oak_speech/new_game_adventure_intro_tilemap.bin2
-rw-r--r--data/oak_speech/oak_speech_background_tilemap.binbin0 -> 1280 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_game_start_help_u_i.pngbin0 -> 1118 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_grass_platform.pngbin0 -> 341 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_leaf_pal.pal35
-rw-r--r--data/oak_speech/oak_speech_gfx_leaf_pic.pngbin0 -> 1219 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_oak_pal.pal35
-rw-r--r--data/oak_speech/oak_speech_gfx_oak_pic.pngbin0 -> 1172 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_pika1.pngbin0 -> 414 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_pika2.pngbin0 -> 297 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_pika_eyes.pngbin0 -> 187 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_red_pal.pal35
-rw-r--r--data/oak_speech/oak_speech_gfx_red_pic.pngbin0 -> 1087 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_rival_pal.pal35
-rw-r--r--data/oak_speech/oak_speech_gfx_rival_pic.pngbin0 -> 970 bytes
-rw-r--r--data/oak_speech/oak_speech_gfx_solid_colors.pngbin0 -> 110 bytes
-rw-r--r--data/oak_speech/oak_speech_grass_platform_palette.pal19
-rw-r--r--data/oak_speech/oak_speech_pika_palette.pal19
-rw-r--r--data/palette.s7
-rw-r--r--data/pokedex_area_markers.s14
-rw-r--r--data/pokemon_summary_screen.s134
-rw-r--r--data/slot_machine.s94
-rw-r--r--data/specials.inc4
-rw-r--r--data/start_menu.s28
-rw-r--r--data/tileset_anims.s25
-rw-r--r--data/title_screen.s34
-rw-r--r--data/tm_case.s50
-rw-r--r--data/unk_text_util.s5
-rw-r--r--data/wild_pokemon_area.s14
-rw-r--r--include/constants/songs.h163
-rw-r--r--include/constants/species.h3
-rw-r--r--include/constants/vars.h2
-rw-r--r--include/decompress.h2
-rw-r--r--include/event_scripts.h67
-rw-r--r--include/field_specials.h1
-rw-r--r--include/help_system.h1
-rw-r--r--include/math_util.h6
-rw-r--r--include/menu.h10
-rw-r--r--include/new_menu_helpers.h13
-rw-r--r--include/oak_speech.h6
-rw-r--r--include/overworld.h1
-rw-r--r--include/pokeball.h3
-rw-r--r--include/pokemon.h1
-rw-r--r--include/pokemon_3.h3
-rw-r--r--include/scanline_effect.h46
-rw-r--r--include/text.h2
-rw-r--r--include/unknown_task.h24
-rw-r--r--include/wild_encounter.h1
-rw-r--r--ld_script.txt44
-rw-r--r--src/coord_event_weather.c47
-rw-r--r--src/fame_checker.c8
-rw-r--r--src/main.c4
-rw-r--r--src/menews_jisan.c136
-rw-r--r--src/menu2.c851
-rw-r--r--src/mevent_8145654.c4
-rw-r--r--src/oak_speech.c1891
-rw-r--r--src/roamer.c238
-rw-r--r--src/scanline_effect.c262
-rw-r--r--src/scrcmd.c6
-rw-r--r--src/sound.c18
-rw-r--r--src/text.c6
-rw-r--r--src/trainer_tower.c2
-rw-r--r--src/vs_seeker.c2
-rw-r--r--sym_ewram.txt49
-rw-r--r--tools/gbafix/gbafix.c2
-rw-r--r--tools/gbagfx/Makefile7
-rw-r--r--tools/gbagfx/gfx.c197
-rw-r--r--tools/gbagfx/gfx.h17
-rw-r--r--tools/gbagfx/huff.c398
-rw-r--r--tools/gbagfx/huff.h38
-rw-r--r--tools/gbagfx/main.c118
-rw-r--r--tools/gbagfx/options.h2
-rwxr-xr-xtools/mapjson/.gitignore1
-rw-r--r--tools/mapjson/Makefile15
-rw-r--r--tools/mapjson/json11.cpp786
-rw-r--r--tools/mapjson/json11.h230
-rw-r--r--tools/mapjson/mapjson.cpp538
-rw-r--r--tools/mapjson/mapjson.h31
-rw-r--r--tools/scaninc/Makefile4
-rw-r--r--tools/scaninc/asm_file.cpp3
-rw-r--r--tools/scaninc/c_file.cpp2
-rw-r--r--tools/scaninc/scaninc.cpp88
-rw-r--r--tools/scaninc/source_file.cpp125
-rw-r--r--tools/scaninc/source_file.h71
202 files changed, 9657 insertions, 11216 deletions
diff --git a/INSTALL.md b/INSTALL.md
index 745f70007..fc08af81b 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -1,51 +1,43 @@
-Run the following commands (first, see [this](#macos) if you are on **macOS** or [this](#old-windows) if you are on **old Windows**):
+## Prerequisites
- git clone https://github.com/pret/pokefirered
- git clone https://github.com/pikalaxalt/agbcc -b new_layout_with_libs
-
- cd agbcc
- make
- make install prefix=../pokefirered
-
- cd ../pokefirered
-
-To build **pokefirered.gba**:
-
- make -j$(nproc)
+Until further notice, this repository requires a **baserom.gba** file, which must be [a legitimate copy of English Pokémon FireRed v1.0](https://datomatic.no-intro.org/?page=show_record&s=23&n=1616). See [this article](https://www.howtogeek.com/67241/htg-explains-what-are-md5-sha-1-hashes-and-how-do-i-check-them/) for help on how to verify the checksum.
-If you have only changed `.c` or `.s` files, you can turn off the dependency scanning temporarily. Changes to any other files will be ignored, and the build will either fail or not reflect those changes.
+----
- make -j$(nproc) NODEP=1
+**Linux:** Proceed to [Installation](#installation).
+**macOS:** Get the [Xcode command-line tools](https://developer.apple.com/library/archive/technotes/tn2339/_index.html#//apple_ref/doc/uid/DTS40014588-CH1-DOWNLOADING_COMMAND_LINE_TOOLS_IS_NOT_AVAILABLE_IN_XCODE_FOR_MACOS_10_9__HOW_CAN_I_INSTALL_THEM_ON_MY_MACHINE_).
-## macOS
+**Windows 10 (1709+):** Get the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/install-win10).
-Run `xcode-select --install` in Terminal, then proceed by executing the commands.
+**Windows Vista, 7, 8, 8.1, and 10 (1507, 1511, 1607, 1703):** Get [Cygwin](https://cygwin.com/install.html) and [include](https://cygwin.com/cygwin-ug-net/setup-net.html#setup-packages) the `make`, `git`, `gcc-core`, `gcc-g++`, and `libpng-devel` packages. If you're on Windows 10 1607 or 1703 and use [the prerelease version of the Linux subsystem](https://docs.microsoft.com/windows/wsl/install-legacy), consider uninstalling it.
-## Old Windows
+## Installation
-*For Windows 8.1 and earlier*
+To set up the repository:
-Download and run the [Cygwin](https://www.cygwin.com/install.html) setup, leaving the default settings intact. At "Select Packages", set the view to "Full" and choose to install the following:
+ git clone https://github.com/pret/pokefirered
+ git clone https://github.com/luckytyphlosion/agbcc -b new_layout_with_libs
-- `make`
-- `git`
-- `gcc-core`
-- `gcc-g++`
-- `libpng-devel`
+ cd ./agbcc
+ make
+ make install prefix=../pokefirered
+ make install-sdk prefix=../pokefirered
-In the Cygwin command prompt, enter the commands.
+ cd ../pokefirered
+ ./build_tools.sh
-If the command for building pokefirered.gba does not work, run `nproc` and use that value instead of `$(nproc)` for `make`.
+To build **pokefirered.gba**:
+ make -j$(nproc)
-## Windows 10
+To confirm it matches the official ROM image while building, do this instead:
-Install the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/install-win10), and run the commands.
+ make compare -j$(nproc)
-## Important note for all users
+**Note:** If only `.c` or `.s` files were changed, turn off the dependency scanning temporarily. Changes to any other files will be ignored and the build will either fail or not reflect those changes.
-Until further notice, this repository is dependent on `baserom.gba`, which is a copy of Pokémon FireRed (U)(1.0) bearing the SHA1 sum `41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc`. If you attempt to build and get the following error or similar, it's because `baserom.gba` is missing.
+ make -j$(nproc) NODEP=1
- No rule to make target 'build/firered/data/librfu_rodata.o', needed by 'pokefirered.elf'. Stop.
+**Note 2:** If the build command is not recognized on Linux, including the Linux environment used within Windows, run `nproc` and replace `$(nproc)` with the returned value (e.g.: `make -j4`). Because `nproc` is not available on macOS, the alternative is `sysctl -n hw.ncpu`.
diff --git a/README.md b/README.md
index e1ba89794..b8b9aa233 100644
--- a/README.md
+++ b/README.md
@@ -4,31 +4,28 @@ This is a disassembly of Pokémon FireRed and LeafGreen.
It builds the following ROM:
-* pokefirered.gba `sha1: 41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc`
+* **pokefirered.gba** `sha1: 41cb23d8dccc8ebd7c649cd8fbb58eeace6e2fdc`
-To set up the repository, see [**INSTALL.md**](INSTALL.md).
+To set up the repository, see [INSTALL.md](INSTALL.md).
## See also
-* Disassembly of [**Pokémon Red and Blue**][pokered]
-* Disassembly of [**Pokémon Yellow**][pokeyellow]
-* Disassembly of [**Pokémon Gold and Silver**][pokegold]
-* Disassembly of [**Pokémon Crystal**][pokecrystal]
-* Disassembly of [**Pokémon Pinball**][pokepinball]
-* Disassembly of [**Pokémon TCG**][poketcg]
-* Disassembly of [**Pokémon Ruby and Sapphire**][pokeruby]
-* Disassembly of [**Pokémon Emerald**][pokeemerald]
-* Discord: [**pret**][Discord]
-* irc: **irc.freenode.net** [**#pret**][irc]
-
-[pokered]: https://github.com/pret/pokered
-[pokeyellow]: https://github.com/pret/pokeyellow
-[pokegold]: https://github.com/pret/pokegold
-[pokecrystal]: https://github.com/pret/pokecrystal
-[pokepinball]: https://github.com/pret/pokepinball
-[poketcg]: https://github.com/pret/poketcg
-[pokeruby]: https://github.com/pret/pokeruby
-[pokeemerald]: https://github.com/pret/pokeemerald
-[Discord]: https://discord.gg/6EuWgX9
-[irc]: https://kiwiirc.com/client/irc.freenode.net/?#pret
+Other disassembly and/or decompilation projects:
+* [**Pokémon Red and Blue**](https://github.com/pret/pokered)
+* [**Pokémon Gold and Silver (Space World '97 demo)**](https://github.com/pret/pokegold-spaceworld)
+* [**Pokémon Yellow**](https://github.com/pret/pokeyellow)
+* [**Pokémon Trading Card Game**](https://github.com/pret/poketcg)
+* [**Pokémon Pinball**](https://github.com/pret/pokepinball)
+* [**Pokémon Stadium**](https://github.com/pret/pokestadium)
+* [**Pokémon Gold and Silver**](https://github.com/pret/pokegold)
+* [**Pokémon Crystal**](https://github.com/pret/pokecrystal)
+* [**Pokémon Ruby and Sapphire**](https://github.com/pret/pokeruby)
+* [**Pokémon Pinball: Ruby & Sapphire**](https://github.com/pret/pokepinballrs)
+* [**Pokémon Mystery Dungeon: Red Rescue Team**](https://github.com/pret/pmd-red)
+* [**Pokémon Emerald**](https://github.com/pret/pokeemerald)
+
+
+## Contacts
+
+You can find us on [Discord](https://discord.gg/6EuWgX9) and [IRC](https://kiwiirc.com/client/irc.freenode.net/?#pret).
diff --git a/asm/battle_1.s b/asm/battle_1.s
index 72f5fe901..6ae993e27 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -253,7 +253,7 @@ sub_800F380: @ 800F380
cmp r0, 0
beq _0800F3EA
movs r0, 0x70
- bl sub_80F77CC
+ bl Menu_LoadStdPalAt
movs r0, 0
movs r1, 0x30
movs r2, 0x70
@@ -908,7 +908,7 @@ _0800F8F0:
ldrsh r0, [r5, r1]
cmp r0, 0
beq _0800F958
- ldr r4, _0800F944 @ =gUnknown_2022978
+ ldr r4, _0800F944 @ =gBattle_BG1_X
ldrh r0, [r5, 0xA]
bl Sin2
lsls r0, 16
@@ -923,7 +923,7 @@ _0800F90A:
adds r0, r2, 0
subs r0, r1
strh r0, [r4]
- ldr r4, _0800F948 @ =gUnknown_202297C
+ ldr r4, _0800F948 @ =gBattle_BG2_X
ldrh r0, [r5, 0xC]
bl Sin2
lsls r0, 16
@@ -938,21 +938,21 @@ _0800F928:
adds r0, r3, 0
subs r0, r1
strh r0, [r4]
- ldr r0, _0800F94C @ =gUnknown_202297A
+ ldr r0, _0800F94C @ =gBattle_BG1_Y
ldr r2, _0800F950 @ =0x0000ffdc
adds r1, r2, 0
strh r1, [r0]
- ldr r0, _0800F954 @ =gUnknown_202297E
+ ldr r0, _0800F954 @ =gBattle_BG2_Y
strh r1, [r0]
b _0800F9C4
.align 2, 0
-_0800F944: .4byte gUnknown_2022978
-_0800F948: .4byte gUnknown_202297C
-_0800F94C: .4byte gUnknown_202297A
+_0800F944: .4byte gBattle_BG1_X
+_0800F948: .4byte gBattle_BG2_X
+_0800F94C: .4byte gBattle_BG1_Y
_0800F950: .4byte 0x0000ffdc
-_0800F954: .4byte gUnknown_202297E
+_0800F954: .4byte gBattle_BG2_Y
_0800F958:
- ldr r4, _0800F9E8 @ =gUnknown_2022978
+ ldr r4, _0800F9E8 @ =gBattle_BG1_X
ldrh r0, [r5, 0xA]
bl Sin2
lsls r0, 16
@@ -967,7 +967,7 @@ _0800F96A:
adds r0, r3, 0
subs r0, r1
strh r0, [r4]
- ldr r4, _0800F9EC @ =gUnknown_202297A
+ ldr r4, _0800F9EC @ =gBattle_BG1_Y
ldrh r0, [r5, 0xA]
bl Cos2
lsls r0, 16
@@ -979,7 +979,7 @@ _0800F988:
asrs r0, 5
subs r0, 0xA4
strh r0, [r4]
- ldr r4, _0800F9F0 @ =gUnknown_202297C
+ ldr r4, _0800F9F0 @ =gBattle_BG2_X
ldrh r0, [r5, 0xC]
bl Sin2
lsls r0, 16
@@ -994,7 +994,7 @@ _0800F9A0:
adds r0, r2, 0
subs r0, r1
strh r0, [r4]
- ldr r4, _0800F9F4 @ =gUnknown_202297E
+ ldr r4, _0800F9F4 @ =gBattle_BG2_Y
ldrh r0, [r5, 0xC]
bl Cos2
lsls r0, 16
@@ -1025,10 +1025,10 @@ _0800F9C4:
strh r0, [r1, 0xA]
b _0800FAC4
.align 2, 0
-_0800F9E8: .4byte gUnknown_2022978
-_0800F9EC: .4byte gUnknown_202297A
-_0800F9F0: .4byte gUnknown_202297C
-_0800F9F4: .4byte gUnknown_202297E
+_0800F9E8: .4byte gBattle_BG1_X
+_0800F9EC: .4byte gBattle_BG1_Y
+_0800F9F0: .4byte gBattle_BG2_X
+_0800F9F4: .4byte gBattle_BG2_Y
_0800F9F8: .4byte gTasks
_0800F9FC:
movs r3, 0x12
@@ -1190,11 +1190,11 @@ sub_800FAE0: @ 800FAE0
movs r0, 0x4A
movs r1, 0x36
bl SetGpuReg
- ldr r0, _0800FB84 @ =gUnknown_202297A
+ ldr r0, _0800FB84 @ =gBattle_BG1_Y
ldr r2, _0800FB88 @ =0x0000ff5c
adds r1, r2, 0
strh r1, [r0]
- ldr r0, _0800FB8C @ =gUnknown_202297E
+ ldr r0, _0800FB8C @ =gBattle_BG2_Y
strh r1, [r0]
ldr r0, _0800FB90 @ =gUnknown_8248318
bl sub_800F034
@@ -1208,9 +1208,9 @@ _0800FB74: .4byte 0x06010000
_0800FB78: .4byte gFile_graphics_battle_transitions_vs_frame_palette
_0800FB7C: .4byte 0x00005c04
_0800FB80: .4byte gFile_graphics_battle_transitions_vs_frame_tilemap
-_0800FB84: .4byte gUnknown_202297A
+_0800FB84: .4byte gBattle_BG1_Y
_0800FB88: .4byte 0x0000ff5c
-_0800FB8C: .4byte gUnknown_202297E
+_0800FB8C: .4byte gBattle_BG2_Y
_0800FB90: .4byte gUnknown_8248318
_0800FB94:
movs r0, 0x80
diff --git a/asm/battle_2.s b/asm/battle_2.s
index 1ecfe6ad3..ec9fa32a3 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -45,11 +45,11 @@ _0800FDD8:
cmp r1, 0
beq _0800FDFE
movs r0, 0x19
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0800FE1C
_0800FDFE:
movs r0, 0x18
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0800FE1C
_0800FE06:
movs r0, 0x80
@@ -57,11 +57,11 @@ _0800FE06:
cmp r1, 0
beq _0800FE16
movs r0, 0x1A
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0800FE1C
_0800FE16:
movs r0, 0x17
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_0800FE1C:
pop {r4}
pop {r0}
@@ -104,8 +104,8 @@ sub_800FE24: @ 800FE24
strh r0, [r1]
ldr r0, _0800FF34 @ =gUnknown_2022986
strh r4, [r0]
- bl dp12_8087EA4
- ldr r0, _0800FF38 @ =gUnknown_2038700
+ bl ScanlineEffect_Clear
+ ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers
movs r3, 0xF0
movs r1, 0xF0
lsls r1, 3
@@ -121,7 +121,7 @@ _0800FE88:
bge _0800FE88
movs r1, 0x50
ldr r4, _0800FF3C @ =gUnknown_824EFE4
- ldr r0, _0800FF38 @ =gUnknown_2038700
+ ldr r0, _0800FF38 @ =gScanlineEffectRegBuffers
ldr r3, _0800FF40 @ =0x0000ff10
movs r5, 0x82
lsls r5, 4
@@ -138,24 +138,24 @@ _0800FEA6:
ldr r0, [r4]
ldr r1, [r4, 0x4]
ldr r2, [r4, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
bl ResetPaletteFade
- ldr r0, _0800FF44 @ =gUnknown_2022974
+ ldr r0, _0800FF44 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _0800FF48 @ =gUnknown_2022976
+ ldr r0, _0800FF48 @ =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, _0800FF4C @ =gUnknown_2022978
+ ldr r0, _0800FF4C @ =gBattle_BG1_X
strh r1, [r0]
- ldr r0, _0800FF50 @ =gUnknown_202297A
+ ldr r0, _0800FF50 @ =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, _0800FF54 @ =gUnknown_202297C
+ ldr r0, _0800FF54 @ =gBattle_BG2_X
strh r1, [r0]
- ldr r0, _0800FF58 @ =gUnknown_202297E
+ ldr r0, _0800FF58 @ =gBattle_BG2_Y
strh r1, [r0]
- ldr r0, _0800FF5C @ =gUnknown_2022980
+ ldr r0, _0800FF5C @ =gBattle_BG3_X
strh r1, [r0]
- ldr r0, _0800FF60 @ =gUnknown_2022982
+ ldr r0, _0800FF60 @ =gBattle_BG3_Y
strh r1, [r0]
bl sub_807FC5C
ldr r1, _0800FF64 @ =gUnknown_2022B50
@@ -186,17 +186,17 @@ _0800FF28: .4byte 0x05006000
_0800FF2C: .4byte 0x00005051
_0800FF30: .4byte gUnknown_2022984
_0800FF34: .4byte gUnknown_2022986
-_0800FF38: .4byte gUnknown_2038700
+_0800FF38: .4byte gScanlineEffectRegBuffers
_0800FF3C: .4byte gUnknown_824EFE4
_0800FF40: .4byte 0x0000ff10
-_0800FF44: .4byte gUnknown_2022974
-_0800FF48: .4byte gUnknown_2022976
-_0800FF4C: .4byte gUnknown_2022978
-_0800FF50: .4byte gUnknown_202297A
-_0800FF54: .4byte gUnknown_202297C
-_0800FF58: .4byte gUnknown_202297E
-_0800FF5C: .4byte gUnknown_2022980
-_0800FF60: .4byte gUnknown_2022982
+_0800FF44: .4byte gBattle_BG0_X
+_0800FF48: .4byte gBattle_BG0_Y
+_0800FF4C: .4byte gBattle_BG1_X
+_0800FF50: .4byte gBattle_BG1_Y
+_0800FF54: .4byte gBattle_BG2_X
+_0800FF58: .4byte gBattle_BG2_Y
+_0800FF5C: .4byte gBattle_BG3_X
+_0800FF60: .4byte gBattle_BG3_Y
_0800FF64: .4byte gUnknown_2022B50
_0800FF68: .4byte gReservedSpritePaletteCount
_0800FF6C: .4byte sub_80116F4
@@ -2410,7 +2410,7 @@ FreeRestoreBattleData: @ 8011174
ldr r0, _080111B0 @ =gUnknown_3004F80
ldr r0, [r0]
str r0, [r1]
- ldr r2, _080111B4 @ =gUnknown_2039600
+ ldr r2, _080111B4 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r2, 0x15]
ldr r0, _080111B8 @ =0x00000439
@@ -2431,7 +2431,7 @@ FreeRestoreBattleData: @ 8011174
.align 2, 0
_080111AC: .4byte gMain
_080111B0: .4byte gUnknown_3004F80
-_080111B4: .4byte gUnknown_2039600
+_080111B4: .4byte gScanlineEffect
_080111B8: .4byte 0x00000439
thumb_func_end FreeRestoreBattleData
@@ -3125,35 +3125,35 @@ _080116F0: .4byte 0x04000008
sub_80116F4: @ 80116F4
push {lr}
bl Random
- ldr r0, _08011788 @ =gUnknown_2022974
+ ldr r0, _08011788 @ =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, _0801178C @ =gUnknown_2022976
+ ldr r0, _0801178C @ =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, _08011790 @ =gUnknown_2022978
+ ldr r0, _08011790 @ =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, _08011794 @ =gUnknown_202297A
+ ldr r0, _08011794 @ =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, _08011798 @ =gUnknown_202297C
+ ldr r0, _08011798 @ =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, _0801179C @ =gUnknown_202297E
+ ldr r0, _0801179C @ =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
- ldr r0, _080117A0 @ =gUnknown_2022980
+ ldr r0, _080117A0 @ =gBattle_BG3_X
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
- ldr r0, _080117A4 @ =gUnknown_2022982
+ ldr r0, _080117A4 @ =gBattle_BG3_Y
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
@@ -3176,18 +3176,18 @@ sub_80116F4: @ 80116F4
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_8087F54
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
.align 2, 0
-_08011788: .4byte gUnknown_2022974
-_0801178C: .4byte gUnknown_2022976
-_08011790: .4byte gUnknown_2022978
-_08011794: .4byte gUnknown_202297A
-_08011798: .4byte gUnknown_202297C
-_0801179C: .4byte gUnknown_202297E
-_080117A0: .4byte gUnknown_2022980
-_080117A4: .4byte gUnknown_2022982
+_08011788: .4byte gBattle_BG0_X
+_0801178C: .4byte gBattle_BG0_Y
+_08011790: .4byte gBattle_BG1_X
+_08011794: .4byte gBattle_BG1_Y
+_08011798: .4byte gBattle_BG2_X
+_0801179C: .4byte gBattle_BG2_Y
+_080117A0: .4byte gBattle_BG3_X
+_080117A4: .4byte gBattle_BG3_Y
_080117A8: .4byte gUnknown_2022984
_080117AC: .4byte gUnknown_2022986
_080117B0: .4byte gUnknown_2022988
@@ -3548,8 +3548,8 @@ sub_8011A1C: @ 8011A1C
strh r0, [r1]
ldr r0, _08011B4C @ =gUnknown_2022986
strh r4, [r0]
- bl dp12_8087EA4
- ldr r0, _08011B50 @ =gUnknown_2038700
+ bl ScanlineEffect_Clear
+ ldr r0, _08011B50 @ =gScanlineEffectRegBuffers
movs r3, 0xF0
movs r1, 0xF0
lsls r1, 3
@@ -3564,7 +3564,7 @@ _08011A80:
cmp r1, 0
bge _08011A80
movs r1, 0x50
- ldr r0, _08011B50 @ =gUnknown_2038700
+ ldr r0, _08011B50 @ =gScanlineEffectRegBuffers
ldr r3, _08011B54 @ =0x0000ff10
movs r4, 0x82
lsls r4, 4
@@ -3579,22 +3579,22 @@ _08011A9C:
cmp r1, 0x9F
ble _08011A9C
bl ResetPaletteFade
- ldr r0, _08011B58 @ =gUnknown_2022974
+ ldr r0, _08011B58 @ =gBattle_BG0_X
movs r4, 0
strh r4, [r0]
- ldr r0, _08011B5C @ =gUnknown_2022976
+ ldr r0, _08011B5C @ =gBattle_BG0_Y
strh r4, [r0]
- ldr r0, _08011B60 @ =gUnknown_2022978
+ ldr r0, _08011B60 @ =gBattle_BG1_X
strh r4, [r0]
- ldr r0, _08011B64 @ =gUnknown_202297A
+ ldr r0, _08011B64 @ =gBattle_BG1_Y
strh r4, [r0]
- ldr r0, _08011B68 @ =gUnknown_202297C
+ ldr r0, _08011B68 @ =gBattle_BG2_X
strh r4, [r0]
- ldr r0, _08011B6C @ =gUnknown_202297E
+ ldr r0, _08011B6C @ =gBattle_BG2_Y
strh r4, [r0]
- ldr r0, _08011B70 @ =gUnknown_2022980
+ ldr r0, _08011B70 @ =gBattle_BG3_X
strh r4, [r0]
- ldr r0, _08011B74 @ =gUnknown_2022982
+ ldr r0, _08011B74 @ =gBattle_BG3_Y
strh r4, [r0]
bl sub_800F34C
ldr r0, _08011B78 @ =gUnknown_8D004D8
@@ -3645,16 +3645,16 @@ _08011B40: .4byte 0x05006000
_08011B44: .4byte 0x00005051
_08011B48: .4byte gUnknown_2022984
_08011B4C: .4byte gUnknown_2022986
-_08011B50: .4byte gUnknown_2038700
+_08011B50: .4byte gScanlineEffectRegBuffers
_08011B54: .4byte 0x0000ff10
-_08011B58: .4byte gUnknown_2022974
-_08011B5C: .4byte gUnknown_2022976
-_08011B60: .4byte gUnknown_2022978
-_08011B64: .4byte gUnknown_202297A
-_08011B68: .4byte gUnknown_202297C
-_08011B6C: .4byte gUnknown_202297E
-_08011B70: .4byte gUnknown_2022980
-_08011B74: .4byte gUnknown_2022982
+_08011B58: .4byte gBattle_BG0_X
+_08011B5C: .4byte gBattle_BG0_Y
+_08011B60: .4byte gBattle_BG1_X
+_08011B64: .4byte gBattle_BG1_Y
+_08011B68: .4byte gBattle_BG2_X
+_08011B6C: .4byte gBattle_BG2_Y
+_08011B70: .4byte gBattle_BG3_X
+_08011B74: .4byte gBattle_BG3_Y
_08011B78: .4byte gUnknown_8D004D8
_08011B7C: .4byte gReservedSpritePaletteCount
_08011B80: .4byte sub_80116F4
@@ -12610,10 +12610,10 @@ sub_8016374: @ 8016374
adds r0, r1
ldrb r0, [r0]
strb r0, [r3]
- ldr r0, _080163EC @ =gUnknown_2022974
+ ldr r0, _080163EC @ =gBattle_BG0_X
movs r2, 0
strh r2, [r0]
- ldr r0, _080163F0 @ =gUnknown_2022976
+ ldr r0, _080163F0 @ =gBattle_BG0_Y
strh r2, [r0]
ldr r1, _080163F4 @ =gUnknown_2023FF8
ldrb r0, [r3]
@@ -12661,8 +12661,8 @@ _080163DA:
_080163E0: .4byte sBattler_AI
_080163E4: .4byte gUnknown_2023BDE
_080163E8: .4byte gUnknown_2023BE2
-_080163EC: .4byte gUnknown_2022974
-_080163F0: .4byte gUnknown_2022976
+_080163EC: .4byte gBattle_BG0_X
+_080163F0: .4byte gBattle_BG0_Y
_080163F4: .4byte gUnknown_2023FF8
_080163F8: .4byte gUnknown_2023FFC
_080163FC: .4byte gBattleTextBuff1
@@ -12690,10 +12690,10 @@ sub_8016418: @ 8016418
ldrb r0, [r0]
strb r0, [r2]
strb r0, [r4]
- ldr r0, _08016484 @ =gUnknown_2022974
+ ldr r0, _08016484 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _08016488 @ =gUnknown_2022976
+ ldr r0, _08016488 @ =gBattle_BG0_Y
strh r1, [r0]
ldrb r0, [r4]
bl ClearFuryCutterDestinyBondGrudge
@@ -12726,8 +12726,8 @@ _08016474: .4byte sBattler_AI
_08016478: .4byte gBattlerTarget
_0801647C: .4byte gUnknown_2023BDE
_08016480: .4byte gUnknown_2023BE2
-_08016484: .4byte gUnknown_2022974
-_08016488: .4byte gUnknown_2022976
+_08016484: .4byte gBattle_BG0_X
+_08016488: .4byte gBattle_BG0_Y
_0801648C: .4byte gUnknown_2023D68
_08016490: .4byte gUnknown_20233C4
_08016494: .4byte gUnknown_2023D74
@@ -13391,10 +13391,10 @@ sub_80169E8: @ 80169E8
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
- ldr r0, _08016A50 @ =gUnknown_2022974
+ ldr r0, _08016A50 @ =gBattle_BG0_X
movs r5, 0
strh r5, [r0]
- ldr r0, _08016A54 @ =gUnknown_2022976
+ ldr r0, _08016A54 @ =gBattle_BG0_Y
strh r5, [r0]
ldr r4, _08016A58 @ =gBattleStruct
ldr r1, [r4]
@@ -13431,8 +13431,8 @@ sub_80169E8: @ 80169E8
_08016A44: .4byte sBattler_AI
_08016A48: .4byte gUnknown_2023BDE
_08016A4C: .4byte gUnknown_2023BE2
-_08016A50: .4byte gUnknown_2022974
-_08016A54: .4byte gUnknown_2022976
+_08016A50: .4byte gBattle_BG0_X
+_08016A54: .4byte gBattle_BG0_Y
_08016A58: .4byte gBattleStruct
_08016A5C: .4byte gEnemyParty
_08016A60: .4byte gBaseStats
@@ -13492,10 +13492,10 @@ sub_8016AC0: @ 8016AC0
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
- ldr r0, _08016B04 @ =gUnknown_2022974
+ ldr r0, _08016B04 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _08016B08 @ =gUnknown_2022976
+ ldr r0, _08016B08 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r1, _08016B0C @ =gUnknown_2039994
ldrb r0, [r1]
@@ -13516,8 +13516,8 @@ sub_8016AC0: @ 8016AC0
_08016AF8: .4byte sBattler_AI
_08016AFC: .4byte gUnknown_2023BDE
_08016B00: .4byte gUnknown_2023BE2
-_08016B04: .4byte gUnknown_2022974
-_08016B08: .4byte gUnknown_2022976
+_08016B04: .4byte gBattle_BG0_X
+_08016B08: .4byte gBattle_BG0_Y
_08016B0C: .4byte gUnknown_2039994
_08016B10: .4byte gUnknown_2023D68
_08016B14: .4byte gUnknown_2023D74
@@ -13535,10 +13535,10 @@ sub_8016B20: @ 8016B20
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
- ldr r0, _08016BA8 @ =gUnknown_2022974
+ ldr r0, _08016BA8 @ =gBattle_BG0_X
movs r7, 0
strh r7, [r0]
- ldr r0, _08016BAC @ =gUnknown_2022976
+ ldr r0, _08016BAC @ =gBattle_BG0_Y
strh r7, [r0]
bl Random
ldr r6, _08016BB0 @ =gBattleStruct
@@ -13592,8 +13592,8 @@ _08016B86:
_08016B9C: .4byte sBattler_AI
_08016BA0: .4byte gUnknown_2023BDE
_08016BA4: .4byte gUnknown_2023BE2
-_08016BA8: .4byte gUnknown_2022974
-_08016BAC: .4byte gUnknown_2022976
+_08016BA8: .4byte gBattle_BG0_X
+_08016BAC: .4byte gBattle_BG0_Y
_08016BB0: .4byte gBattleStruct
_08016BB4: .4byte gUnknown_2023D74
_08016BB8: .4byte gUnknown_81D9A04
@@ -13610,10 +13610,10 @@ sub_8016BC0: @ 8016BC0
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
- ldr r0, _08016C48 @ =gUnknown_2022974
+ ldr r0, _08016C48 @ =gBattle_BG0_X
movs r7, 0
strh r7, [r0]
- ldr r0, _08016C4C @ =gUnknown_2022976
+ ldr r0, _08016C4C @ =gBattle_BG0_Y
strh r7, [r0]
bl Random
ldr r6, _08016C50 @ =gBattleStruct
@@ -13667,8 +13667,8 @@ _08016C26:
_08016C3C: .4byte sBattler_AI
_08016C40: .4byte gUnknown_2023BDE
_08016C44: .4byte gUnknown_2023BE2
-_08016C48: .4byte gUnknown_2022974
-_08016C4C: .4byte gUnknown_2022976
+_08016C48: .4byte gBattle_BG0_X
+_08016C4C: .4byte gBattle_BG0_Y
_08016C50: .4byte gBattleStruct
_08016C54: .4byte gUnknown_2023D74
_08016C58: .4byte gUnknown_81D9A04
@@ -13713,10 +13713,10 @@ HandleAction_Action9: @ 8016C9C
adds r0, r1
ldrb r2, [r0]
strb r2, [r3]
- ldr r0, _08016CF4 @ =gUnknown_2022974
+ ldr r0, _08016CF4 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _08016CF8 @ =gUnknown_2022976
+ ldr r0, _08016CF8 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r1, _08016CFC @ =gBattleTextBuff1
movs r0, 0xFD
@@ -13747,8 +13747,8 @@ HandleAction_Action9: @ 8016C9C
_08016CE8: .4byte sBattler_AI
_08016CEC: .4byte gUnknown_2023BDE
_08016CF0: .4byte gUnknown_2023BE2
-_08016CF4: .4byte gUnknown_2022974
-_08016CF8: .4byte gUnknown_2022976
+_08016CF4: .4byte gBattle_BG0_X
+_08016CF8: .4byte gBattle_BG0_Y
_08016CFC: .4byte gBattleTextBuff1
_08016D00: .4byte gBattlerPartyIndexes
_08016D04: .4byte gUnknown_2023D74
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 085b11f09..f65b9b705 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -1037,10 +1037,10 @@ _08072C88:
strh r1, [r2, 0xC]
cmp r7, 0
bne _08072CF4
- ldr r0, _08072CEC @ =gUnknown_2022978
+ ldr r0, _08072CEC @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r2, 0xE]
- ldr r0, _08072CF0 @ =gUnknown_202297A
+ ldr r0, _08072CF0 @ =gBattle_BG1_Y
b _08072CFC
.align 2, 0
_08072CD8: .4byte gUnknown_2037F1B
@@ -1048,13 +1048,13 @@ _08072CDC: .4byte gUnknown_2023D44
_08072CE0: .4byte task_pA_ma0A_obj_to_bg_pal
_08072CE4: .4byte gTasks
_08072CE8: .4byte gSprites
-_08072CEC: .4byte gUnknown_2022978
-_08072CF0: .4byte gUnknown_202297A
+_08072CEC: .4byte gBattle_BG1_X
+_08072CF0: .4byte gBattle_BG1_Y
_08072CF4:
- ldr r0, _08072D8C @ =gUnknown_202297C
+ ldr r0, _08072D8C @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r2, 0xE]
- ldr r0, _08072D90 @ =gUnknown_202297E
+ ldr r0, _08072D90 @ =gBattle_BG2_Y
_08072CFC:
ldrh r0, [r0]
strh r0, [r2, 0x10]
@@ -1121,26 +1121,26 @@ _08072D3E:
strh r1, [r2, 0xC]
cmp r7, 0
bne _08072DB0
- ldr r0, _08072DA8 @ =gUnknown_2022978
+ ldr r0, _08072DA8 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r2, 0xE]
- ldr r0, _08072DAC @ =gUnknown_202297A
+ ldr r0, _08072DAC @ =gBattle_BG1_Y
b _08072DB8
.align 2, 0
-_08072D8C: .4byte gUnknown_202297C
-_08072D90: .4byte gUnknown_202297E
+_08072D8C: .4byte gBattle_BG2_X
+_08072D90: .4byte gBattle_BG2_Y
_08072D94: .4byte gTasks
_08072D98: .4byte gUnknown_2037F14
_08072D9C: .4byte gUnknown_2023D44
_08072DA0: .4byte task_pA_ma0A_obj_to_bg_pal
_08072DA4: .4byte gSprites
-_08072DA8: .4byte gUnknown_2022978
-_08072DAC: .4byte gUnknown_202297A
+_08072DA8: .4byte gBattle_BG1_X
+_08072DAC: .4byte gBattle_BG1_Y
_08072DB0:
- ldr r0, _08072DDC @ =gUnknown_202297C
+ ldr r0, _08072DDC @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r2, 0xE]
- ldr r0, _08072DE0 @ =gUnknown_202297E
+ ldr r0, _08072DE0 @ =gBattle_BG2_Y
_08072DB8:
ldrh r0, [r0]
strh r0, [r2, 0x10]
@@ -1162,8 +1162,8 @@ _08072DCE:
pop {r0}
bx r0
.align 2, 0
-_08072DDC: .4byte gUnknown_202297C
-_08072DE0: .4byte gUnknown_202297E
+_08072DDC: .4byte gBattle_BG2_X
+_08072DE0: .4byte gBattle_BG2_Y
_08072DE4: .4byte gTasks
_08072DE8: .4byte gUnknown_2037F14
_08072DEC: .4byte gUnknown_2037ED4
@@ -1271,7 +1271,7 @@ _08072E5E:
ldr r2, _08072F6C @ =gUnknown_2023D44
adds r2, r7, r2
ldrb r0, [r2]
- ldr r5, _08072F70 @ =gUnknown_2022978
+ ldr r5, _08072F70 @ =gBattle_BG1_X
ldr r3, _08072F74 @ =gSprites
lsls r1, r0, 4
adds r1, r0
@@ -1283,7 +1283,7 @@ _08072E5E:
negs r0, r0
adds r0, 0x20
strh r0, [r5]
- ldr r4, _08072F78 @ =gUnknown_202297A
+ ldr r4, _08072F78 @ =gBattle_BG1_Y
ldrh r0, [r1, 0x26]
ldrh r1, [r1, 0x22]
adds r0, r1
@@ -1350,9 +1350,9 @@ _08072F60: .4byte 0x0600e000
_08072F64: .4byte 0x01000800
_08072F68: .4byte 0x01000400
_08072F6C: .4byte gUnknown_2023D44
-_08072F70: .4byte gUnknown_2022978
+_08072F70: .4byte gBattle_BG1_X
_08072F74: .4byte gSprites
-_08072F78: .4byte gUnknown_202297A
+_08072F78: .4byte gBattle_BG1_Y
_08072F7C: .4byte gPlttBufferUnfaded + 0x200
_08072F80: .4byte 0x04000008
_08072F84:
@@ -1404,7 +1404,7 @@ _08072F84:
ldr r2, _080730A4 @ =gUnknown_2023D44
adds r2, r7, r2
ldrb r0, [r2]
- ldr r5, _080730A8 @ =gUnknown_202297C
+ ldr r5, _080730A8 @ =gBattle_BG2_X
ldr r3, _080730AC @ =gSprites
lsls r1, r0, 4
adds r1, r0
@@ -1416,7 +1416,7 @@ _08072F84:
negs r0, r0
adds r0, 0x20
strh r0, [r5]
- ldr r4, _080730B0 @ =gUnknown_202297E
+ ldr r4, _080730B0 @ =gBattle_BG2_Y
ldrh r0, [r1, 0x26]
ldrh r1, [r1, 0x22]
adds r0, r1
@@ -1484,9 +1484,9 @@ _08073098: .4byte 0x0600f000
_0807309C: .4byte 0x01000800
_080730A0: .4byte 0x01000400
_080730A4: .4byte gUnknown_2023D44
-_080730A8: .4byte gUnknown_202297C
+_080730A8: .4byte gBattle_BG2_X
_080730AC: .4byte gSprites
-_080730B0: .4byte gUnknown_202297E
+_080730B0: .4byte gBattle_BG2_Y
_080730B4: .4byte gPlttBufferUnfaded + 0x200
_080730B8: .4byte 0x05000120
_080730BC: .4byte 0x04000008
@@ -1563,21 +1563,21 @@ sub_8073128: @ 8073128
bne _08073154
movs r0, 0x1
bl sub_8075358
- ldr r0, _0807314C @ =gUnknown_2022978
+ ldr r0, _0807314C @ =gBattle_BG1_X
strh r4, [r0]
- ldr r0, _08073150 @ =gUnknown_202297A
+ ldr r0, _08073150 @ =gBattle_BG1_Y
strh r4, [r0]
b _08073164
.align 2, 0
-_0807314C: .4byte gUnknown_2022978
-_08073150: .4byte gUnknown_202297A
+_0807314C: .4byte gBattle_BG1_X
+_08073150: .4byte gBattle_BG1_Y
_08073154:
movs r0, 0x2
bl sub_8075358
- ldr r0, _0807316C @ =gUnknown_202297C
+ ldr r0, _0807316C @ =gBattle_BG2_X
movs r1, 0
strh r1, [r0]
- ldr r0, _08073170 @ =gUnknown_202297E
+ ldr r0, _08073170 @ =gBattle_BG2_Y
strh r1, [r0]
_08073164:
add sp, 0x10
@@ -1585,8 +1585,8 @@ _08073164:
pop {r0}
bx r0
.align 2, 0
-_0807316C: .4byte gUnknown_202297C
-_08073170: .4byte gUnknown_202297E
+_0807316C: .4byte gBattle_BG2_X
+_08073170: .4byte gBattle_BG2_Y
thumb_func_end sub_8073128
thumb_func_start task_pA_ma0A_obj_to_bg_pal
@@ -1627,13 +1627,13 @@ task_pA_ma0A_obj_to_bg_pal: @ 8073174
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0807320C
- ldr r1, _080731F8 @ =gUnknown_2022978
+ ldr r1, _080731F8 @ =gBattle_BG1_X
lsls r0, r3, 16
asrs r0, 16
ldrh r3, [r5, 0xE]
adds r0, r3
strh r0, [r1]
- ldr r1, _080731FC @ =gUnknown_202297A
+ ldr r1, _080731FC @ =gBattle_BG1_Y
lsls r0, r2, 16
asrs r0, 16
ldrh r5, [r5, 0x10]
@@ -1654,19 +1654,19 @@ task_pA_ma0A_obj_to_bg_pal: @ 8073174
.align 2, 0
_080731F0: .4byte gTasks
_080731F4: .4byte gSprites
-_080731F8: .4byte gUnknown_2022978
-_080731FC: .4byte gUnknown_202297A
+_080731F8: .4byte gBattle_BG1_X
+_080731FC: .4byte gBattle_BG1_Y
_08073200: .4byte gPlttBufferFaded + 0x200
_08073204: .4byte 0xfffffe00
_08073208: .4byte 0x04000008
_0807320C:
- ldr r1, _0807323C @ =gUnknown_202297C
+ ldr r1, _0807323C @ =gBattle_BG2_X
lsls r0, r3, 16
asrs r0, 16
ldrh r3, [r5, 0xE]
adds r0, r3
strh r0, [r1]
- ldr r1, _08073240 @ =gUnknown_202297E
+ ldr r1, _08073240 @ =gBattle_BG2_Y
lsls r0, r2, 16
asrs r0, 16
ldrh r5, [r5, 0x10]
@@ -1684,8 +1684,8 @@ _08073232:
pop {r0}
bx r0
.align 2, 0
-_0807323C: .4byte gUnknown_202297C
-_08073240: .4byte gUnknown_202297E
+_0807323C: .4byte gBattle_BG2_X
+_08073240: .4byte gBattle_BG2_Y
_08073244: .4byte gPlttBufferFaded + 0x200
_08073248: .4byte 0x04000008
thumb_func_end task_pA_ma0A_obj_to_bg_pal
diff --git a/asm/battle_anim_80A22E8.s b/asm/battle_anim_80A22E8.s
index e64654d57..bf7f547f6 100644
--- a/asm/battle_anim_80A22E8.s
+++ b/asm/battle_anim_80A22E8.s
@@ -3962,7 +3962,7 @@ sub_80A414C: @ 80A414C
strh r0, [r4, 0x3C]
movs r1, 0x30
ldrsh r2, [r4, r1]
- ldr r1, _080A41A0 @ =gUnknown_825E074
+ ldr r1, _080A41A0 @ =gSineTable
movs r5, 0x2E
ldrsh r0, [r4, r5]
lsls r0, 1
@@ -3995,7 +3995,7 @@ sub_80A414C: @ 80A414C
ble _080A41BC
b _080A41B6
.align 2, 0
-_080A41A0: .4byte gUnknown_825E074
+_080A41A0: .4byte gSineTable
_080A41A4:
movs r1, 0x24
ldrsh r0, [r4, r1]
@@ -8720,7 +8720,7 @@ _080A6558:
.align 2, 0
_080A657C: .4byte gTasks
_080A6580:
- ldr r4, _080A65C8 @ =gUnknown_825E074
+ ldr r4, _080A65C8 @ =gSineTable
movs r1, 0x2E
ldrsh r0, [r5, r1]
lsls r0, 1
@@ -8755,7 +8755,7 @@ _080A65C2:
pop {r0}
bx r0
.align 2, 0
-_080A65C8: .4byte gUnknown_825E074
+_080A65C8: .4byte gSineTable
thumb_func_end sub_80A653C
thumb_func_start sub_80A65CC
@@ -9762,7 +9762,7 @@ _080A6D62:
adds r1, 0x43
strb r0, [r1]
_080A6D72:
- ldr r1, _080A6D8C @ =gUnknown_825E074
+ ldr r1, _080A6D8C @ =gSineTable
movs r3, 0x30
ldrsh r0, [r2, r3]
lsls r0, 1
@@ -9777,7 +9777,7 @@ _080A6D88:
pop {r0}
bx r0
.align 2, 0
-_080A6D8C: .4byte gUnknown_825E074
+_080A6D8C: .4byte gSineTable
thumb_func_end sub_80A6D20
thumb_func_start sub_80A6D90
@@ -13284,7 +13284,7 @@ sub_80A8874: @ 80A8874
lsrs r0, 24
cmp r0, 0x1
bne _080A88D4
- ldr r0, _080A88CC @ =gUnknown_2022978
+ ldr r0, _080A88CC @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r5, 0x14]
ldr r0, _080A88D0 @ =0x04000014
@@ -13292,10 +13292,10 @@ sub_80A8874: @ 80A8874
.align 2, 0
_080A88C4: .4byte gTasks
_080A88C8: .4byte gUnknown_2037F1B
-_080A88CC: .4byte gUnknown_2022978
+_080A88CC: .4byte gBattle_BG1_X
_080A88D0: .4byte 0x04000014
_080A88D4:
- ldr r0, _080A8940 @ =gUnknown_202297C
+ ldr r0, _080A8940 @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r5, 0x14]
ldr r0, _080A8944 @ =0x04000018
@@ -13308,7 +13308,7 @@ _080A88DC:
lsls r0, 16
cmp r2, r0
bgt _080A891A
- ldr r4, _080A8948 @ =gUnknown_2038700
+ ldr r4, _080A8948 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r4, r0
@@ -13345,7 +13345,7 @@ _080A891A:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
ldr r0, _080A8950 @ =sub_80A8954
str r0, [r5]
add sp, 0xC
@@ -13353,9 +13353,9 @@ _080A891A:
pop {r0}
bx r0
.align 2, 0
-_080A8940: .4byte gUnknown_202297C
+_080A8940: .4byte gBattle_BG2_X
_080A8944: .4byte 0x04000018
-_080A8948: .4byte gUnknown_2038700
+_080A8948: .4byte gScanlineEffectRegBuffers
_080A894C: .4byte 0xa2600001
_080A8950: .4byte sub_80A8954
thumb_func_end sub_80A8874
@@ -13431,7 +13431,7 @@ _080A89CC:
ldrsh r0, [r3, r1]
cmp r0, 0
blt _080A89F0
- ldr r2, _080A8A14 @ =gUnknown_2038700
+ ldr r2, _080A8A14 @ =gScanlineEffectRegBuffers
lsls r0, 1
adds r0, r2
ldrh r1, [r3, 0x14]
@@ -13455,7 +13455,7 @@ _080A89F0:
ldrsh r1, [r3, r2]
cmp r0, r1
blt _080A8A0E
- ldr r1, _080A8A18 @ =gUnknown_2039600
+ ldr r1, _080A8A18 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
adds r0, r4, 0
@@ -13465,8 +13465,8 @@ _080A8A0E:
pop {r0}
bx r0
.align 2, 0
-_080A8A14: .4byte gUnknown_2038700
-_080A8A18: .4byte gUnknown_2039600
+_080A8A14: .4byte gScanlineEffectRegBuffers
+_080A8A18: .4byte gScanlineEffect
thumb_func_end sub_80A8954
thumb_func_start sub_80A8A1C
@@ -15940,10 +15940,10 @@ sub_80A9CE8: @ 80A9CE8
movs r2, 0x1
bl SetAnimBgAttribute
_080A9D2A:
- ldr r0, _080A9DA4 @ =gUnknown_2022978
+ ldr r0, _080A9DA4 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, _080A9DA8 @ =gUnknown_202297A
+ ldr r4, _080A9DA8 @ =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -15993,8 +15993,8 @@ _080A9D88:
bx r0
.align 2, 0
_080A9DA0: .4byte 0x00003f42
-_080A9DA4: .4byte gUnknown_2022978
-_080A9DA8: .4byte gUnknown_202297A
+_080A9DA4: .4byte gBattle_BG1_X
+_080A9DA8: .4byte gBattle_BG1_Y
_080A9DAC: .4byte gFile_graphics_battle_anims_backgrounds_attract_tilemap
_080A9DB0: .4byte gFile_graphics_battle_anims_backgrounds_attract_sheet
_080A9DB4: .4byte gFile_graphics_battle_anims_backgrounds_attract_palette
@@ -16197,10 +16197,10 @@ sub_80A9F10: @ 80A9F10
movs r2, 0x1
bl SetAnimBgAttribute
_080A9F52:
- ldr r0, _080A9F8C @ =gUnknown_2022978
+ ldr r0, _080A9F8C @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, _080A9F90 @ =gUnknown_202297A
+ ldr r4, _080A9F90 @ =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -16220,8 +16220,8 @@ _080A9F52:
b _080A9FC6
.align 2, 0
_080A9F88: .4byte 0x00003f42
-_080A9F8C: .4byte gUnknown_2022978
-_080A9F90: .4byte gUnknown_202297A
+_080A9F8C: .4byte gBattle_BG1_X
+_080A9F90: .4byte gBattle_BG1_Y
_080A9F94: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_contest_tilemap
_080A9F98:
ldr r0, _080A9FB4 @ =gUnknown_2037F1B
@@ -18959,11 +18959,11 @@ _080AB476:
beq _080AB4F8
ldr r1, _080AB4EC @ =0x0000ffb0
adds r0, r1, 0
- ldr r2, _080AB4F0 @ =gUnknown_2022978
+ ldr r2, _080AB4F0 @ =gBattle_BG1_X
strh r0, [r2]
adds r1, 0x20
adds r0, r1, 0
- ldr r2, _080AB4F4 @ =gUnknown_202297A
+ ldr r2, _080AB4F4 @ =gBattle_BG1_Y
strh r0, [r2]
movs r0, 0x2
strh r0, [r6, 0x8]
@@ -18977,8 +18977,8 @@ _080AB4E0: .4byte gFile_graphics_battle_anims_backgrounds_water_muddy_palette
_080AB4E4: .4byte sub_80AB79C
_080AB4E8: .4byte gTasks
_080AB4EC: .4byte 0x0000ffb0
-_080AB4F0: .4byte gUnknown_2022978
-_080AB4F4: .4byte gUnknown_202297A
+_080AB4F0: .4byte gBattle_BG1_X
+_080AB4F4: .4byte gBattle_BG1_Y
_080AB4F8:
ldr r0, _080AB528 @ =gUnknown_2037F1A
ldrb r0, [r0]
@@ -18989,12 +18989,12 @@ _080AB4F8:
bne _080AB53C
ldr r2, _080AB52C @ =0x0000ff20
adds r0, r2, 0
- ldr r2, _080AB530 @ =gUnknown_2022978
+ ldr r2, _080AB530 @ =gBattle_BG1_X
strh r0, [r2]
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
- ldr r2, _080AB534 @ =gUnknown_202297A
+ ldr r2, _080AB534 @ =gBattle_BG1_Y
strh r0, [r2]
movs r0, 0x2
strh r0, [r6, 0x8]
@@ -19005,15 +19005,15 @@ _080AB4F8:
.align 2, 0
_080AB528: .4byte gUnknown_2037F1A
_080AB52C: .4byte 0x0000ff20
-_080AB530: .4byte gUnknown_2022978
-_080AB534: .4byte gUnknown_202297A
+_080AB530: .4byte gBattle_BG1_X
+_080AB534: .4byte gBattle_BG1_Y
_080AB538: .4byte 0x0000ffff
_080AB53C:
- ldr r0, _080AB584 @ =gUnknown_2022978
+ ldr r0, _080AB584 @ =gBattle_BG1_X
strh r4, [r0]
ldr r1, _080AB588 @ =0x0000ffd0
adds r0, r1, 0
- ldr r2, _080AB58C @ =gUnknown_202297A
+ ldr r2, _080AB58C @ =gBattle_BG1_Y
strh r0, [r2]
ldr r0, _080AB590 @ =0x0000fffe
strh r0, [r6, 0x8]
@@ -19021,11 +19021,11 @@ _080AB53C:
strh r0, [r6, 0xA]
strh r4, [r7, 0xE]
_080AB552:
- ldr r0, _080AB584 @ =gUnknown_2022978
+ ldr r0, _080AB584 @ =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r2, _080AB58C @ =gUnknown_202297A
+ ldr r2, _080AB58C @ =gBattle_BG1_Y
ldrh r1, [r2]
movs r0, 0x16
bl SetGpuReg
@@ -19044,9 +19044,9 @@ _080AB552:
movs r0, 0x70
b _080AB59C
.align 2, 0
-_080AB584: .4byte gUnknown_2022978
+_080AB584: .4byte gBattle_BG1_X
_080AB588: .4byte 0x0000ffd0
-_080AB58C: .4byte gUnknown_202297A
+_080AB58C: .4byte gBattle_BG1_Y
_080AB590: .4byte 0x0000fffe
_080AB594: .4byte gTasks
_080AB598:
@@ -19082,8 +19082,8 @@ sub_80AB5C8: @ 80AB5C8
sub sp, 0x10
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, _080AB6F4 @ =gUnknown_2022978
- ldr r2, _080AB6F8 @ =gUnknown_202297A
+ ldr r1, _080AB6F4 @ =gBattle_BG1_X
+ ldr r2, _080AB6F8 @ =gBattle_BG1_Y
ldr r0, _080AB6FC @ =gTasks
lsls r4, r5, 2
adds r4, r5
@@ -19233,8 +19233,8 @@ _080AB6EC:
pop {r0}
bx r0
.align 2, 0
-_080AB6F4: .4byte gUnknown_2022978
-_080AB6F8: .4byte gUnknown_202297A
+_080AB6F4: .4byte gBattle_BG1_X
+_080AB6F8: .4byte gBattle_BG1_Y
_080AB6FC: .4byte gTasks
_080AB700: .4byte gPlttBufferFaded
_080AB704: .4byte sub_80AB708
@@ -19248,8 +19248,8 @@ sub_80AB708: @ 80AB708
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
- ldr r7, _080AB740 @ =gUnknown_2022978
- ldr r0, _080AB744 @ =gUnknown_202297A
+ ldr r7, _080AB740 @ =gBattle_BG1_X
+ ldr r0, _080AB744 @ =gBattle_BG1_Y
mov r8, r0
ldr r6, _080AB748 @ =gTasks
lsls r0, r5, 2
@@ -19269,8 +19269,8 @@ sub_80AB708: @ 80AB708
strh r0, [r4, 0x8]
b _080AB78E
.align 2, 0
-_080AB740: .4byte gUnknown_2022978
-_080AB744: .4byte gUnknown_202297A
+_080AB740: .4byte gBattle_BG1_X
+_080AB744: .4byte gBattle_BG1_Y
_080AB748: .4byte gTasks
_080AB74C:
bl sub_8073788
@@ -19346,7 +19346,7 @@ _080AB7D0:
movs r3, 0
movs r2, 0x10
ldrsh r0, [r4, r2]
- ldr r1, _080AB8A0 @ =gUnknown_2038700
+ ldr r1, _080AB8A0 @ =gScanlineEffectRegBuffers
mov r12, r1
cmp r3, r0
bge _080AB80E
@@ -19383,7 +19383,7 @@ _080AB80E:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080AB848
- ldr r5, _080AB8A0 @ =gUnknown_2038700
+ ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -19412,7 +19412,7 @@ _080AB848:
asrs r0, r2, 16
cmp r0, 0x9F
bgt _080AB87E
- ldr r5, _080AB8A0 @ =gUnknown_2038700
+ ldr r5, _080AB8A0 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -19453,7 +19453,7 @@ _080AB87E:
ldrh r0, [r4, 0xA]
b _080AB8BE
.align 2, 0
-_080AB8A0: .4byte gUnknown_2038700
+_080AB8A0: .4byte gScanlineEffectRegBuffers
_080AB8A4: .4byte 0x0000ffff
_080AB8A8:
lsls r0, r3, 16
@@ -19482,7 +19482,7 @@ _080AB8BE:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
@@ -19521,8 +19521,8 @@ _080AB91C:
ldrsh r0, [r4, r1]
cmp r3, r0
bge _080AB950
- ldr r6, _080AB9B4 @ =gUnknown_2038700
- ldr r5, _080AB9B8 @ =gUnknown_2039600
+ ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
+ ldr r5, _080AB9B8 @ =gScanlineEffect
_080AB92A:
lsls r1, r3, 16
asrs r1, 16
@@ -19551,8 +19551,8 @@ _080AB950:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080AB984
- ldr r6, _080AB9B4 @ =gUnknown_2038700
- ldr r5, _080AB9B8 @ =gUnknown_2039600
+ ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
+ ldr r5, _080AB9B8 @ =gScanlineEffect
_080AB962:
asrs r3, r2, 16
lsls r2, r3, 1
@@ -19577,8 +19577,8 @@ _080AB984:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080ABA66
- ldr r6, _080AB9B4 @ =gUnknown_2038700
- ldr r5, _080AB9B8 @ =gUnknown_2039600
+ ldr r6, _080AB9B4 @ =gScanlineEffectRegBuffers
+ ldr r5, _080AB9B8 @ =gScanlineEffect
_080AB992:
asrs r3, r1, 16
lsls r2, r3, 1
@@ -19597,16 +19597,16 @@ _080AB992:
ble _080AB992
b _080ABA66
.align 2, 0
-_080AB9B4: .4byte gUnknown_2038700
-_080AB9B8: .4byte gUnknown_2039600
+_080AB9B4: .4byte gScanlineEffectRegBuffers
+_080AB9B8: .4byte gScanlineEffect
_080AB9BC:
movs r3, 0
movs r1, 0x10
ldrsh r0, [r4, r1]
cmp r3, r0
bge _080AB9F0
- ldr r6, _080ABA70 @ =gUnknown_2038700
- ldr r5, _080ABA74 @ =gUnknown_2039600
+ ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
+ ldr r5, _080ABA74 @ =gScanlineEffect
_080AB9CA:
lsls r1, r3, 16
asrs r1, 16
@@ -19635,8 +19635,8 @@ _080AB9F0:
ldrsh r0, [r4, r3]
cmp r1, r0
bge _080ABA24
- ldr r6, _080ABA70 @ =gUnknown_2038700
- ldr r5, _080ABA74 @ =gUnknown_2039600
+ ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
+ ldr r5, _080ABA74 @ =gScanlineEffect
_080ABA02:
asrs r3, r2, 16
lsls r2, r3, 1
@@ -19661,8 +19661,8 @@ _080ABA24:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080ABA50
- ldr r6, _080ABA70 @ =gUnknown_2038700
- ldr r5, _080ABA74 @ =gUnknown_2039600
+ ldr r6, _080ABA70 @ =gScanlineEffectRegBuffers
+ ldr r5, _080ABA74 @ =gScanlineEffect
_080ABA32:
asrs r3, r1, 16
lsls r2, r3, 1
@@ -19686,7 +19686,7 @@ _080ABA50:
negs r0, r0
cmp r1, r0
bne _080ABA66
- bl remove_some_task
+ bl ScanlineEffect_Stop
adds r0, r7, 0
bl DestroyTask
_080ABA66:
@@ -19695,8 +19695,8 @@ _080ABA66:
pop {r0}
bx r0
.align 2, 0
-_080ABA70: .4byte gUnknown_2038700
-_080ABA74: .4byte gUnknown_2039600
+_080ABA70: .4byte gScanlineEffectRegBuffers
+_080ABA74: .4byte gScanlineEffect
thumb_func_end sub_80AB79C
thumb_func_start sub_80ABA78
@@ -20603,7 +20603,7 @@ sub_80AC160: @ 80AC160
adds r4, r0, 0
lsls r1, 24
lsrs r6, r1, 24
- ldr r1, _080AC1EC @ =gUnknown_825E074
+ ldr r1, _080AC1EC @ =gSineTable
movs r2, 0x18
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -20668,7 +20668,7 @@ _080AC1BA:
pop {r0}
bx r0
.align 2, 0
-_080AC1EC: .4byte gUnknown_825E074
+_080AC1EC: .4byte gSineTable
_080AC1F0: .4byte gUnknown_83E5AE0
_080AC1F4: .4byte gSprites
_080AC1F8: .4byte sub_80AC204
@@ -24355,7 +24355,7 @@ _080ADE02:
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r7, _080ADEA0 @ =gUnknown_825E074
+ ldr r7, _080ADEA0 @ =gSineTable
ldr r6, _080ADEA4 @ =gUnknown_2037F02
movs r1, 0
ldrsh r0, [r6, r1]
@@ -24430,7 +24430,7 @@ _080ADE66:
pop {r0}
bx r0
.align 2, 0
-_080ADEA0: .4byte gUnknown_825E074
+_080ADEA0: .4byte gSineTable
_080ADEA4: .4byte gUnknown_2037F02
_080ADEA8: .4byte gOamMatrices
_080ADEAC: .4byte sub_80B1D3C
@@ -28140,10 +28140,10 @@ sub_80AFAE4: @ 80AFAE4
movs r2, 0x1
bl SetAnimBgAttribute
_080AFB26:
- ldr r0, _080AFBA4 @ =gUnknown_2022978
+ ldr r0, _080AFBA4 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, _080AFBA8 @ =gUnknown_202297A
+ ldr r4, _080AFBA8 @ =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -28195,8 +28195,8 @@ _080AFB88:
bx r0
.align 2, 0
_080AFBA0: .4byte 0x00003f42
-_080AFBA4: .4byte gUnknown_2022978
-_080AFBA8: .4byte gUnknown_202297A
+_080AFBA4: .4byte gBattle_BG1_X
+_080AFBA8: .4byte gBattle_BG1_Y
_080AFBAC: .4byte gUnknown_83C3540
_080AFBB0: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
_080AFBB4: .4byte gUnknown_83C2CE0
@@ -28210,7 +28210,7 @@ sub_80AFBC0: @ 80AFBC0
sub sp, 0x10
lsls r0, 24
lsrs r4, r0, 24
- ldr r1, _080AFBF4 @ =gUnknown_2022978
+ ldr r1, _080AFBF4 @ =gBattle_BG1_X
ldr r2, _080AFBF8 @ =0x0000ffff
adds r0, r2, 0
ldrh r2, [r1]
@@ -28234,7 +28234,7 @@ _080AFBEA:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080AFBF4: .4byte gUnknown_2022978
+_080AFBF4: .4byte gBattle_BG1_X
_080AFBF8: .4byte 0x0000ffff
_080AFBFC: .4byte gTasks
_080AFC00: .4byte _080AFC04
@@ -28366,10 +28366,10 @@ _080AFCF8:
movs r2, 0
bl SetAnimBgAttribute
_080AFD0C:
- ldr r0, _080AFD44 @ =gUnknown_2022978
+ ldr r0, _080AFD44 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080AFD48 @ =gUnknown_202297A
+ ldr r0, _080AFD48 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -28390,8 +28390,8 @@ _080AFD36:
bx r0
.align 2, 0
_080AFD40: .4byte gTasks
-_080AFD44: .4byte gUnknown_2022978
-_080AFD48: .4byte gUnknown_202297A
+_080AFD44: .4byte gBattle_BG1_X
+_080AFD48: .4byte gBattle_BG1_Y
thumb_func_end sub_80AFBC0
thumb_func_start sub_80AFD4C
@@ -28451,10 +28451,10 @@ sub_80AFD80: @ 80AFD80
movs r2, 0x1
bl SetAnimBgAttribute
_080AFDC2:
- ldr r0, _080AFE44 @ =gUnknown_2022978
+ ldr r0, _080AFE44 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, _080AFE48 @ =gUnknown_202297A
+ ldr r4, _080AFE48 @ =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -28508,8 +28508,8 @@ _080AFE24:
bx r0
.align 2, 0
_080AFE40: .4byte 0x00003f42
-_080AFE44: .4byte gUnknown_2022978
-_080AFE48: .4byte gUnknown_202297A
+_080AFE44: .4byte gBattle_BG1_X
+_080AFE48: .4byte gBattle_BG1_Y
_080AFE4C: .4byte gUnknown_83C3540
_080AFE50: .4byte gFile_graphics_battle_anims_backgrounds_fog_tilemap
_080AFE54: .4byte gUnknown_83C2CE0
@@ -28524,7 +28524,7 @@ sub_80AFE64: @ 80AFE64
sub sp, 0x10
lsls r0, 24
lsrs r4, r0, 24
- ldr r2, _080AFE94 @ =gUnknown_2022978
+ ldr r2, _080AFE94 @ =gBattle_BG1_X
ldr r3, _080AFE98 @ =gTasks
lsls r1, r4, 2
adds r1, r4
@@ -28546,7 +28546,7 @@ _080AFE8A:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080AFE94: .4byte gUnknown_2022978
+_080AFE94: .4byte gBattle_BG1_X
_080AFE98: .4byte gTasks
_080AFE9C: .4byte _080AFEA0
.align 2, 0
@@ -28667,10 +28667,10 @@ _080AFF80:
movs r2, 0
bl SetAnimBgAttribute
_080AFF94:
- ldr r0, _080AFFCC @ =gUnknown_2022978
+ ldr r0, _080AFFCC @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080AFFD0 @ =gUnknown_202297A
+ ldr r0, _080AFFD0 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -28691,8 +28691,8 @@ _080AFFBE:
bx r0
.align 2, 0
_080AFFC8: .4byte gTasks
-_080AFFCC: .4byte gUnknown_2022978
-_080AFFD0: .4byte gUnknown_202297A
+_080AFFCC: .4byte gBattle_BG1_X
+_080AFFD0: .4byte gBattle_BG1_Y
thumb_func_end sub_80AFE64
thumb_func_start sub_80AFFD4
@@ -28898,7 +28898,7 @@ _080B0168:
_080B016A:
adds r0, r4, 0
bl sub_80755E0
- ldr r1, _080B0194 @ =gUnknown_825E074
+ ldr r1, _080B0194 @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -28917,7 +28917,7 @@ _080B016A:
subs r0, 0x8
b _080B019C
.align 2, 0
-_080B0194: .4byte gUnknown_825E074
+_080B0194: .4byte gSineTable
_080B0198:
ldrh r0, [r4, 0x38]
adds r0, 0x8
@@ -28974,7 +28974,7 @@ _080B0200:
_080B0202:
movs r0, 0
strh r0, [r4, 0x26]
- ldr r1, _080B022C @ =gUnknown_825E074
+ ldr r1, _080B022C @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -28992,11 +28992,11 @@ _080B0202:
bl obj_translate_based_on_private_1_2_3_4
b _080B0380
.align 2, 0
-_080B022C: .4byte gUnknown_825E074
+_080B022C: .4byte gSineTable
_080B0230:
adds r0, r4, 0
bl sub_80755E0
- ldr r1, _080B028C @ =gUnknown_825E074
+ ldr r1, _080B028C @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -29038,7 +29038,7 @@ _080B0230:
asrs r1, 24
b _080B0298
.align 2, 0
-_080B028C: .4byte gUnknown_825E074
+_080B028C: .4byte gSineTable
_080B0290:
ldrh r1, [r4, 0x3C]
lsls r1, 16
@@ -31514,7 +31514,7 @@ _080B158E:
lsls r0, 24
cmp r0, 0
bne _080B15C4
- ldr r1, _080B15C0 @ =gUnknown_2022980
+ ldr r1, _080B15C0 @ =gBattle_BG3_X
ldrh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 24
@@ -31525,9 +31525,9 @@ _080B158E:
b _080B15D4
.align 2, 0
_080B15BC: .4byte gUnknown_2037F1B
-_080B15C0: .4byte gUnknown_2022980
+_080B15C0: .4byte gBattle_BG3_X
_080B15C4:
- ldr r2, _080B1614 @ =gUnknown_2022980
+ ldr r2, _080B1614 @ =gBattle_BG3_X
ldrh r1, [r4, 0x1A]
lsls r1, 16
asrs r1, 24
@@ -31536,7 +31536,7 @@ _080B15C4:
strh r0, [r2]
adds r7, r2, 0
_080B15D4:
- ldr r3, _080B1618 @ =gUnknown_2022982
+ ldr r3, _080B1618 @ =gBattle_BG3_Y
ldrh r2, [r4, 0x1C]
lsls r0, r2, 16
asrs r0, 24
@@ -31567,8 +31567,8 @@ _080B160C:
pop {r0}
bx r0
.align 2, 0
-_080B1614: .4byte gUnknown_2022980
-_080B1618: .4byte gUnknown_2022982
+_080B1614: .4byte gBattle_BG3_X
+_080B1618: .4byte gBattle_BG3_Y
_080B161C: .4byte gUnknown_2037F02
thumb_func_end sub_80B1530
@@ -32731,7 +32731,7 @@ _080B1F1E:
ands r0, r2
orrs r0, r1
strb r0, [r5]
- ldr r3, _080B1F88 @ =gUnknown_825E074
+ ldr r3, _080B1F88 @ =gSineTable
ldrh r0, [r5, 0x2]
lsls r0, 1
adds r0, r3
@@ -32777,7 +32777,7 @@ _080B1F1E:
pop {r0}
bx r0
.align 2, 0
-_080B1F88: .4byte gUnknown_825E074
+_080B1F88: .4byte gSineTable
_080B1F8C: .4byte gOamMatrices
_080B1F90: .4byte sub_80B1F94
thumb_func_end sub_80B1D88
@@ -33395,7 +33395,7 @@ _080B23F0:
adds r0, 0xC
adds r0, r1
ldrb r1, [r0]
- ldr r3, _080B2478 @ =gUnknown_825E074
+ ldr r3, _080B2478 @ =gSineTable
mov r2, r12
lsls r0, r2, 1
adds r0, r3
@@ -33456,7 +33456,7 @@ _080B23F0:
strh r0, [r4, 0x2]
b _080B2490
.align 2, 0
-_080B2478: .4byte gUnknown_825E074
+_080B2478: .4byte gSineTable
_080B247C: .4byte gOamMatrices
_080B2480:
ldrh r0, [r4, 0x4]
@@ -33629,7 +33629,7 @@ _080B25C4:
adds r0, r5
strh r0, [r4, 0x3C]
_080B25D8:
- ldr r5, _080B2680 @ =gUnknown_825E074
+ ldr r5, _080B2680 @ =gSineTable
ldrh r3, [r4, 0x30]
movs r1, 0xFF
ands r1, r3
@@ -33714,7 +33714,7 @@ _080B2672:
bx r0
.align 2, 0
_080B267C: .4byte gUnknown_2037F1B
-_080B2680: .4byte gUnknown_825E074
+_080B2680: .4byte gSineTable
_080B2684: .4byte gOamMatrices
_080B2688: .4byte sub_80B268C
thumb_func_end sub_80B2514
@@ -36385,17 +36385,17 @@ _080B3AD6:
lsrs r0, 24
cmp r0, 0x1
bne _080B3AFC
- ldr r0, _080B3AF4 @ =gUnknown_2022978
+ ldr r0, _080B3AF4 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r4, 0x1C]
ldr r0, _080B3AF8 @ =0x04000014
b _080B3B04
.align 2, 0
_080B3AF0: .4byte gUnknown_2037F1B
-_080B3AF4: .4byte gUnknown_2022978
+_080B3AF4: .4byte gBattle_BG1_X
_080B3AF8: .4byte 0x04000014
_080B3AFC:
- ldr r0, _080B3B64 @ =gUnknown_202297C
+ ldr r0, _080B3B64 @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r4, 0x1C]
ldr r0, _080B3B68 @ =0x04000018
@@ -36409,7 +36409,7 @@ _080B3B04:
adds r0, 0x40
cmp r1, r0
bgt _080B3B3E
- ldr r5, _080B3B6C @ =gUnknown_2038700
+ ldr r5, _080B3B6C @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -36442,7 +36442,7 @@ _080B3B3E:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
ldr r0, _080B3B74 @ =sub_80B3B78
str r0, [r4]
add sp, 0xC
@@ -36450,9 +36450,9 @@ _080B3B3E:
pop {r0}
bx r0
.align 2, 0
-_080B3B64: .4byte gUnknown_202297C
+_080B3B64: .4byte gBattle_BG2_X
_080B3B68: .4byte 0x04000018
-_080B3B6C: .4byte gUnknown_2038700
+_080B3B6C: .4byte gScanlineEffectRegBuffers
_080B3B70: .4byte 0xa2600001
_080B3B74: .4byte sub_80B3B78
thumb_func_end sub_80B3A58
@@ -36494,10 +36494,10 @@ _080B3BAA:
ldrsh r0, [r5, r2]
cmp r1, r0
bgt _080B3C42
- ldr r0, _080B3BF4 @ =gUnknown_825E074
+ ldr r0, _080B3BF4 @ =gSineTable
mov r9, r0
movs r7, 0x3
- ldr r1, _080B3BF8 @ =gUnknown_2038700
+ ldr r1, _080B3BF8 @ =gScanlineEffectRegBuffers
mov r12, r1
movs r2, 0xF0
lsls r2, 3
@@ -36524,8 +36524,8 @@ _080B3BCC:
adds r0, r3, r0
b _080B3C08
.align 2, 0
-_080B3BF4: .4byte gUnknown_825E074
-_080B3BF8: .4byte gUnknown_2038700
+_080B3BF4: .4byte gSineTable
+_080B3BF8: .4byte gScanlineEffectRegBuffers
_080B3BFC:
cmp r3, 0
bge _080B3C0C
@@ -36574,7 +36574,7 @@ _080B3C42:
ble _080B3C6A
b _080B3C58
_080B3C52:
- ldr r1, _080B3C60 @ =gUnknown_2039600
+ ldr r1, _080B3C60 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B3C58:
@@ -36583,7 +36583,7 @@ _080B3C58:
strh r0, [r5, 0x8]
b _080B3C6A
.align 2, 0
-_080B3C60: .4byte gUnknown_2039600
+_080B3C60: .4byte gScanlineEffect
_080B3C64:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -36749,7 +36749,7 @@ _080B3DAA:
ldrh r0, [r4, 0xA]
adds r0, 0x4
strh r0, [r4, 0xA]
- ldr r1, _080B3DF8 @ =gUnknown_825E074
+ ldr r1, _080B3DF8 @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -36783,12 +36783,12 @@ _080B3DAA:
bne _080B3E7C
b _080B3E5E
.align 2, 0
-_080B3DF8: .4byte gUnknown_825E074
+_080B3DF8: .4byte gSineTable
_080B3DFC:
ldrh r0, [r4, 0xA]
subs r0, 0x4
strh r0, [r4, 0xA]
- ldr r1, _080B3E48 @ =gUnknown_825E074
+ ldr r1, _080B3E48 @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -36822,7 +36822,7 @@ _080B3DFC:
bne _080B3E7C
b _080B3E5E
.align 2, 0
-_080B3E48: .4byte gUnknown_825E074
+_080B3E48: .4byte gSineTable
_080B3E4C:
movs r0, 0x26
ldrsh r1, [r4, r0]
@@ -38086,9 +38086,9 @@ do_boulder_dust: @ 80B4810
movs r2, 0x1
bl SetAnimBgAttribute
_080B4854:
- ldr r0, _080B48E8 @ =gUnknown_2022978
+ ldr r0, _080B48E8 @ =gBattle_BG1_X
strh r5, [r0]
- ldr r4, _080B48EC @ =gUnknown_202297A
+ ldr r4, _080B48EC @ =gBattle_BG1_Y
strh r5, [r4]
movs r0, 0x14
movs r1, 0
@@ -38152,8 +38152,8 @@ _080B48CA:
bx r0
.align 2, 0
_080B48E4: .4byte 0x00003f42
-_080B48E8: .4byte gUnknown_2022978
-_080B48EC: .4byte gUnknown_202297A
+_080B48E8: .4byte gBattle_BG1_X
+_080B48EC: .4byte gBattle_BG1_Y
_080B48F0: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_tilemap
_080B48F4: .4byte gFile_graphics_battle_anims_backgrounds_sandstorm_brew_sheet
_080B48F8: .4byte gFile_graphics_battle_anims_sprites_261_palette
@@ -38179,7 +38179,7 @@ sub_80B490C: @ 80B490C
adds r2, r1, 0
cmp r0, 0
bne _080B4940
- ldr r1, _080B4938 @ =gUnknown_2022978
+ ldr r1, _080B4938 @ =gBattle_BG1_X
ldr r3, _080B493C @ =0x0000fffa
adds r0, r3, 0
ldrh r3, [r1]
@@ -38187,15 +38187,15 @@ sub_80B490C: @ 80B490C
b _080B4946
.align 2, 0
_080B4934: .4byte gTasks
-_080B4938: .4byte gUnknown_2022978
+_080B4938: .4byte gBattle_BG1_X
_080B493C: .4byte 0x0000fffa
_080B4940:
- ldr r1, _080B4974 @ =gUnknown_2022978
+ ldr r1, _080B4974 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
_080B4946:
strh r0, [r1]
- ldr r1, _080B4978 @ =gUnknown_202297A
+ ldr r1, _080B4978 @ =gBattle_BG1_Y
ldr r3, _080B497C @ =0x0000ffff
adds r0, r3, 0
ldrh r3, [r1]
@@ -38218,8 +38218,8 @@ _080B4968:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080B4974: .4byte gUnknown_2022978
-_080B4978: .4byte gUnknown_202297A
+_080B4974: .4byte gBattle_BG1_X
+_080B4978: .4byte gBattle_BG1_Y
_080B497C: .4byte 0x0000ffff
_080B4980: .4byte _080B4984
.align 2, 0
@@ -38336,10 +38336,10 @@ _080B4A58:
movs r2, 0
bl SetAnimBgAttribute
_080B4A6C:
- ldr r0, _080B4AA0 @ =gUnknown_2022978
+ ldr r0, _080B4AA0 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080B4AA4 @ =gUnknown_202297A
+ ldr r0, _080B4AA4 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -38359,8 +38359,8 @@ _080B4A96:
pop {r0}
bx r0
.align 2, 0
-_080B4AA0: .4byte gUnknown_2022978
-_080B4AA4: .4byte gUnknown_202297A
+_080B4AA0: .4byte gBattle_BG1_X
+_080B4AA4: .4byte gBattle_BG1_Y
thumb_func_end sub_80B490C
thumb_func_start sub_80B4AA8
@@ -39279,7 +39279,7 @@ sub_80B5188: @ 80B5188
movs r0, 0xC8
strh r0, [r5, 0xA]
_080B51AA:
- ldr r4, _080B51E8 @ =gUnknown_2022982
+ ldr r4, _080B51E8 @ =gBattle_BG3_Y
movs r1, 0xA
ldrsh r0, [r5, r1]
movs r1, 0xA
@@ -39307,7 +39307,7 @@ _080B51D6:
bx r0
.align 2, 0
_080B51E4: .4byte gTasks
-_080B51E8: .4byte gUnknown_2022982
+_080B51E8: .4byte gBattle_BG3_Y
thumb_func_end sub_80B5188
thumb_func_start sub_80B51EC
@@ -39330,7 +39330,7 @@ sub_80B51EC: @ 80B51EC
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, _080B525C @ =gUnknown_2022982
+ ldr r0, _080B525C @ =gBattle_BG3_Y
ldrh r0, [r0]
strh r0, [r4, 0xC]
_080B5218:
@@ -39339,7 +39339,7 @@ _080B5218:
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0xA]
- ldr r6, _080B525C @ =gUnknown_2022982
+ ldr r6, _080B525C @ =gBattle_BG3_Y
movs r2, 0xA
ldrsh r1, [r4, r2]
movs r0, 0x4
@@ -39365,7 +39365,7 @@ _080B5250:
bx r0
.align 2, 0
_080B5258: .4byte gTasks
-_080B525C: .4byte gUnknown_2022982
+_080B525C: .4byte gBattle_BG3_Y
_080B5260: .4byte gUnknown_2037F02
_080B5264: .4byte 0x00000fff
thumb_func_end sub_80B51EC
@@ -40713,7 +40713,7 @@ _080B5CB0:
_080B5CC8:
movs r2, 0x2
movs r3, 0x6
- bl sub_8088230
+ bl ScanlineEffect_InitWave
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x1C]
@@ -40789,7 +40789,7 @@ sub_80B5D38: @ 80B5D38
strh r0, [r4, 0x12]
cmp r0, 0
bne _080B5D70
- ldr r1, _080B5DC4 @ =gUnknown_825E074
+ ldr r1, _080B5DC4 @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -40804,7 +40804,7 @@ _080B5D70:
ldrsh r0, [r4, r2]
cmp r0, 0x1
bne _080B5D92
- ldr r1, _080B5DC4 @ =gUnknown_825E074
+ ldr r1, _080B5DC4 @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -40841,7 +40841,7 @@ _080B5DBA:
bx r0
.align 2, 0
_080B5DC0: .4byte gTasks
-_080B5DC4: .4byte gUnknown_825E074
+_080B5DC4: .4byte gSineTable
_080B5DC8: .4byte sub_80B5DCC
thumb_func_end sub_80B5D38
@@ -40877,7 +40877,7 @@ _080B5E04:
beq _080B5E4C
b _080B5EB4
_080B5E0A:
- ldr r1, _080B5E28 @ =gUnknown_2039600
+ ldr r1, _080B5E28 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0x1
@@ -40891,7 +40891,7 @@ _080B5E0A:
lsls r1, 2
b _080B5E30
.align 2, 0
-_080B5E28: .4byte gUnknown_2039600
+_080B5E28: .4byte gScanlineEffect
_080B5E2C:
movs r1, 0x80
lsls r1, 3
@@ -42784,10 +42784,10 @@ _080B6D28:
movs r1, 0
movs r2, 0
bl SetAnimBgAttribute
- ldr r0, _080B6D7C @ =gUnknown_202297C
+ ldr r0, _080B6D7C @ =gBattle_BG2_X
movs r1, 0
strh r1, [r0]
- ldr r4, _080B6D80 @ =gUnknown_202297E
+ ldr r4, _080B6D80 @ =gBattle_BG2_Y
strh r1, [r4]
movs r0, 0x18
movs r1, 0
@@ -42812,8 +42812,8 @@ _080B6D28:
bl LoadCompressedPalette
b _080B6F1E
.align 2, 0
-_080B6D7C: .4byte gUnknown_202297C
-_080B6D80: .4byte gUnknown_202297E
+_080B6D7C: .4byte gBattle_BG2_X
+_080B6D80: .4byte gBattle_BG2_Y
_080B6D84: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_sheet
_080B6D88: .4byte gFile_graphics_battle_anims_backgrounds_scary_face_palette
_080B6D8C:
@@ -42979,7 +42979,7 @@ _080B6EC4:
movs r2, 0x4
_080B6EDE:
movs r3, 0x8
- bl sub_8088230
+ bl ScanlineEffect_InitWave
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x1C]
@@ -43041,7 +43041,7 @@ sub_80B6F30: @ 80B6F30
strh r0, [r4, 0x18]
cmp r0, 0
bne _080B6F68
- ldr r1, _080B6FBC @ =gUnknown_825E074
+ ldr r1, _080B6FBC @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -43056,7 +43056,7 @@ _080B6F68:
ldrsh r0, [r4, r2]
cmp r0, 0x1
bne _080B6F8A
- ldr r1, _080B6FBC @ =gUnknown_825E074
+ ldr r1, _080B6FBC @ =gSineTable
movs r2, 0xA
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -43093,7 +43093,7 @@ _080B6FB2:
bx r0
.align 2, 0
_080B6FB8: .4byte gTasks
-_080B6FBC: .4byte gUnknown_825E074
+_080B6FBC: .4byte gSineTable
_080B6FC0: .4byte sub_80B6FC4
thumb_func_end sub_80B6F30
@@ -43130,7 +43130,7 @@ _080B6FF0:
.4byte _080B709C
.4byte _080B70E8
_080B7008:
- ldr r1, _080B701C @ =gUnknown_2039600
+ ldr r1, _080B701C @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
ldrh r0, [r6, 0x16]
@@ -43140,7 +43140,7 @@ _080B7008:
bl BlendPalette
b _080B7148
.align 2, 0
-_080B701C: .4byte gUnknown_2039600
+_080B701C: .4byte gScanlineEffect
_080B7020: .4byte 0x000066e0
_080B7024:
ldr r1, _080B7040 @ =0x00003f44
@@ -43879,17 +43879,17 @@ sub_80B75E0: @ 80B75E0
bne _080B761C
ldr r0, _080B7614 @ =0x04000014
str r0, [sp]
- ldr r0, _080B7618 @ =gUnknown_2022978
+ ldr r0, _080B7618 @ =gBattle_BG1_X
b _080B7622
.align 2, 0
_080B760C: .4byte gTasks
_080B7610: .4byte gUnknown_2037F1A
_080B7614: .4byte 0x04000014
-_080B7618: .4byte gUnknown_2022978
+_080B7618: .4byte gBattle_BG1_X
_080B761C:
ldr r0, _080B7698 @ =0x04000018
str r0, [sp]
- ldr r0, _080B769C @ =gUnknown_202297C
+ ldr r0, _080B769C @ =gBattle_BG2_X
_080B7622:
ldrh r0, [r0]
strh r0, [r4, 0xC]
@@ -43920,7 +43920,7 @@ _080B7652:
ldrsh r0, [r4, r1]
cmp r3, r0
bgt _080B7680
- ldr r5, _080B76A8 @ =gUnknown_2038700
+ ldr r5, _080B76A8 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -43943,7 +43943,7 @@ _080B7680:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
ldr r0, _080B76AC @ =sub_80B76B0
str r0, [r4]
add sp, 0xC
@@ -43952,10 +43952,10 @@ _080B7680:
bx r0
.align 2, 0
_080B7698: .4byte 0x04000018
-_080B769C: .4byte gUnknown_202297C
+_080B769C: .4byte gBattle_BG2_X
_080B76A0: .4byte 0xa2600001
_080B76A4: .4byte gUnknown_2037F1A
-_080B76A8: .4byte gUnknown_2038700
+_080B76A8: .4byte gScanlineEffectRegBuffers
_080B76AC: .4byte sub_80B76B0
thumb_func_end sub_80B75E0
@@ -44040,7 +44040,7 @@ _080B7746:
bl sub_80B776C
b _080B7766
_080B774E:
- ldr r1, _080B775C @ =gUnknown_2039600
+ ldr r1, _080B775C @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
ldrh r0, [r2, 0x8]
@@ -44048,7 +44048,7 @@ _080B774E:
strh r0, [r2, 0x8]
b _080B7766
.align 2, 0
-_080B775C: .4byte gUnknown_2039600
+_080B775C: .4byte gScanlineEffect
_080B7760:
adds r0, r3, 0
bl DestroyAnimVisualTask
@@ -44069,11 +44069,11 @@ sub_80B776C: @ 80B776C
ldrsh r0, [r5, r1]
cmp r4, r0
bgt _080B77C2
- ldr r7, _080B77D8 @ =gUnknown_2038700
+ ldr r7, _080B77D8 @ =gScanlineEffectRegBuffers
mov r12, r7
- ldr r0, _080B77DC @ =gUnknown_825E074
+ ldr r0, _080B77DC @ =gSineTable
mov r8, r0
- ldr r6, _080B77E0 @ =gUnknown_2039600
+ ldr r6, _080B77E0 @ =gScanlineEffect
_080B778A:
lsls r2, r4, 1
ldrb r1, [r6, 0x14]
@@ -44115,9 +44115,9 @@ _080B77C2:
pop {r0}
bx r0
.align 2, 0
-_080B77D8: .4byte gUnknown_2038700
-_080B77DC: .4byte gUnknown_825E074
-_080B77E0: .4byte gUnknown_2039600
+_080B77D8: .4byte gScanlineEffectRegBuffers
+_080B77DC: .4byte gSineTable
+_080B77E0: .4byte gScanlineEffect
thumb_func_end sub_80B776C
thumb_func_start sub_80B77E4
@@ -44926,7 +44926,7 @@ _080B7E16:
add r4, sp, 0xC
adds r0, r4, 0
bl sub_80752A0
- ldr r0, _080B7E68 @ =gUnknown_202297A
+ ldr r0, _080B7E68 @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
ldr r1, _080B7E6C @ =0x00003f42
@@ -44944,17 +44944,17 @@ _080B7E16:
lsls r0, 24
cmp r0, 0
bne _080B7EA8
- ldr r1, _080B7E74 @ =gUnknown_202297C
+ ldr r1, _080B7E74 @ =gBattle_BG2_X
b _080B7EA2
.align 2, 0
_080B7E60: .4byte 0x0000ffc0
_080B7E64: .4byte gUnknown_2037F1A
-_080B7E68: .4byte gUnknown_202297A
+_080B7E68: .4byte gBattle_BG1_Y
_080B7E6C: .4byte 0x00003f42
_080B7E70: .4byte 0x04000016
-_080B7E74: .4byte gUnknown_202297C
+_080B7E74: .4byte gBattle_BG2_X
_080B7E78:
- ldr r0, _080B7F30 @ =gUnknown_202297E
+ ldr r0, _080B7F30 @ =gBattle_BG2_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
ldr r1, _080B7F34 @ =0x00003f44
@@ -44971,7 +44971,7 @@ _080B7E78:
lsls r0, 24
cmp r0, 0
bne _080B7EA8
- ldr r1, _080B7F3C @ =gUnknown_2022978
+ ldr r1, _080B7F3C @ =gBattle_BG1_X
_080B7EA2:
ldrh r0, [r1]
adds r0, 0xF0
@@ -44994,7 +44994,7 @@ _080B7EA8:
movs r0, 0x3
bl sub_80B856C
movs r3, 0
- ldr r4, _080B7F44 @ =gUnknown_2038700
+ ldr r4, _080B7F44 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r4, r0
@@ -45014,7 +45014,7 @@ _080B7ED4:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
movs r0, 0x3F
eors r7, r0
movs r1, 0xFC
@@ -45043,12 +45043,12 @@ _080B7ED4:
pop {r0}
bx r0
.align 2, 0
-_080B7F30: .4byte gUnknown_202297E
+_080B7F30: .4byte gBattle_BG2_Y
_080B7F34: .4byte 0x00003f44
_080B7F38: .4byte 0x0400001a
-_080B7F3C: .4byte gUnknown_2022978
+_080B7F3C: .4byte gBattle_BG1_X
_080B7F40: .4byte 0xa2600001
-_080B7F44: .4byte gUnknown_2038700
+_080B7F44: .4byte gScanlineEffectRegBuffers
_080B7F48: .4byte 0x00003f3f
_080B7F4C: .4byte gUnknown_2022984
_080B7F50: .4byte gUnknown_2022986
@@ -45182,7 +45182,7 @@ _080B8036:
.align 2, 0
_080B804C: .4byte gUnknown_2022984
_080B8050:
- ldr r1, _080B8060 @ =gUnknown_2039600
+ ldr r1, _080B8060 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B8056:
@@ -45191,7 +45191,7 @@ _080B8056:
strh r0, [r4, 0x8]
b _080B806A
.align 2, 0
-_080B8060: .4byte gUnknown_2039600
+_080B8060: .4byte gScanlineEffect
_080B8064:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -45270,17 +45270,17 @@ _080B80F0:
ldr r1, _080B8114 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
- ldr r1, _080B8118 @ =gUnknown_202297C
+ ldr r1, _080B8118 @ =gBattle_BG2_X
b _080B8126
.align 2, 0
_080B8110: .4byte gUnknown_2037F1B
_080B8114: .4byte 0x00003f42
-_080B8118: .4byte gUnknown_202297C
+_080B8118: .4byte gBattle_BG2_X
_080B811C:
ldr r1, _080B8130 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
- ldr r1, _080B8134 @ =gUnknown_2022978
+ ldr r1, _080B8134 @ =gBattle_BG1_X
_080B8126:
ldrh r0, [r1]
adds r0, 0xF0
@@ -45288,7 +45288,7 @@ _080B8126:
b _080B823C
.align 2, 0
_080B8130: .4byte 0x00003f44
-_080B8134: .4byte gUnknown_2022978
+_080B8134: .4byte gBattle_BG1_X
_080B8138:
movs r1, 0xE
ldrsh r0, [r5, r1]
@@ -45296,7 +45296,7 @@ _080B8138:
bne _080B8160
mov r0, sp
bl sub_80752A0
- ldr r0, _080B815C @ =gUnknown_202297A
+ ldr r0, _080B815C @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
mov r0, sp
@@ -45307,9 +45307,9 @@ _080B8138:
bl FillPalette
b _080B8170
.align 2, 0
-_080B815C: .4byte gUnknown_202297A
+_080B815C: .4byte gBattle_BG1_Y
_080B8160:
- ldr r0, _080B8178 @ =gUnknown_202297E
+ ldr r0, _080B8178 @ =gBattle_BG2_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
movs r0, 0
@@ -45321,7 +45321,7 @@ _080B8170:
bl sub_80B856C
b _080B823C
.align 2, 0
-_080B8178: .4byte gUnknown_202297E
+_080B8178: .4byte gBattle_BG2_Y
_080B817C:
ldr r4, _080B81C8 @ =gUnknown_2037F1B
ldrb r0, [r4]
@@ -45389,7 +45389,7 @@ _080B81FA:
str r0, [sp, 0x10]
movs r3, 0
add r4, sp, 0x10
- ldr r6, _080B8248 @ =gUnknown_2038700
+ ldr r6, _080B8248 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r7, r6, r0
@@ -45418,7 +45418,7 @@ _080B8208:
strb r2, [r4, 0x9]
ldr r0, [sp, 0x10]
ldr r2, [r4, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
_080B823C:
ldrh r0, [r5, 0x8]
adds r0, 0x1
@@ -45426,7 +45426,7 @@ _080B823C:
b _080B829E
.align 2, 0
_080B8244: .4byte 0x0400001a
-_080B8248: .4byte gUnknown_2038700
+_080B8248: .4byte gScanlineEffectRegBuffers
_080B824C: .4byte 0xa2600001
_080B8250:
movs r1, 0xE
@@ -45640,7 +45640,7 @@ _080B83D2:
bne _080B842A
b _080B83FC
_080B83F6:
- ldr r1, _080B8404 @ =gUnknown_2039600
+ ldr r1, _080B8404 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B83FC:
@@ -45649,7 +45649,7 @@ _080B83FC:
strh r0, [r4, 0x8]
b _080B842A
.align 2, 0
-_080B8404: .4byte gUnknown_2039600
+_080B8404: .4byte gScanlineEffect
_080B8408:
ldr r0, _080B8430 @ =gUnknown_2022984
movs r1, 0
@@ -45699,9 +45699,9 @@ sub_80B843C: @ 80B843C
movs r4, 0
cmp r0, 0
ble _080B849C
- ldr r0, _080B8528 @ =gUnknown_2038700
+ ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _080B852C @ =gUnknown_2039600
+ ldr r7, _080B852C @ =gScanlineEffect
_080B8470:
lsls r2, r4, 16
asrs r2, 16
@@ -45733,9 +45733,9 @@ _080B849C:
ldrsh r0, [r6, r2]
cmp r1, r0
bgt _080B84E6
- ldr r0, _080B8528 @ =gUnknown_2038700
+ ldr r0, _080B8528 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _080B852C @ =gUnknown_2039600
+ ldr r7, _080B852C @ =gScanlineEffect
_080B84B0:
asrs r4, r3, 16
cmp r4, 0
@@ -45776,8 +45776,8 @@ _080B84E6:
ldrsh r0, [r6, r3]
cmp r1, r0
bge _080B855E
- ldr r7, _080B8528 @ =gUnknown_2038700
- ldr r4, _080B852C @ =gUnknown_2039600
+ ldr r7, _080B8528 @ =gScanlineEffectRegBuffers
+ ldr r4, _080B852C @ =gScanlineEffect
_080B84FE:
asrs r3, r2, 16
cmp r3, 0
@@ -45801,15 +45801,15 @@ _080B8516:
blt _080B84FE
b _080B855E
.align 2, 0
-_080B8528: .4byte gUnknown_2038700
-_080B852C: .4byte gUnknown_2039600
+_080B8528: .4byte gScanlineEffectRegBuffers
+_080B852C: .4byte gScanlineEffect
_080B8530:
movs r1, 0x1C
ldrsh r0, [r6, r1]
adds r5, r0, 0
adds r5, 0x9F
movs r4, 0
- ldr r3, _080B8568 @ =gUnknown_2038700
+ ldr r3, _080B8568 @ =gScanlineEffectRegBuffers
movs r2, 0xF0
lsls r2, 3
adds r6, r3, r2
@@ -45835,7 +45835,7 @@ _080B855E:
pop {r0}
bx r0
.align 2, 0
-_080B8568: .4byte gUnknown_2038700
+_080B8568: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80B843C
thumb_func_start sub_80B856C
@@ -46204,7 +46204,7 @@ _080B8828:
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
- ldr r2, _080B88D0 @ =gUnknown_2022978
+ ldr r2, _080B88D0 @ =gBattle_BG1_X
ldr r0, _080B88D4 @ =gSprites
lsls r1, r4, 4
adds r1, r4
@@ -46214,7 +46214,7 @@ _080B8828:
negs r0, r0
adds r0, 0x60
strh r0, [r2]
- ldr r2, _080B88D8 @ =gUnknown_202297A
+ ldr r2, _080B88D8 @ =gBattle_BG1_Y
ldrh r0, [r1, 0x22]
negs r0, r0
adds r0, 0x20
@@ -46239,9 +46239,9 @@ _080B88C0: .4byte gUnknown_2037F1A
_080B88C4: .4byte gFile_graphics_battle_anims_masks_metal_shine_tilemap
_080B88C8: .4byte gFile_graphics_battle_anims_masks_metal_shine_sheet
_080B88CC: .4byte gFile_graphics_battle_anims_masks_metal_shine_palette
-_080B88D0: .4byte gUnknown_2022978
+_080B88D0: .4byte gBattle_BG1_X
_080B88D4: .4byte gSprites
-_080B88D8: .4byte gUnknown_202297A
+_080B88D8: .4byte gBattle_BG1_Y
_080B88DC: .4byte gUnknown_2037F02
_080B88E0:
lsls r0, r1, 4
@@ -46292,7 +46292,7 @@ sub_80B8920: @ 80B8920
adds r0, 0x4
movs r5, 0
strh r0, [r4, 0x1C]
- ldr r2, _080B89EC @ =gUnknown_2022978
+ ldr r2, _080B89EC @ =gBattle_BG1_X
ldrh r3, [r2]
subs r1, r3, 0x4
strh r1, [r2]
@@ -46376,7 +46376,7 @@ _080B8990:
b _080B8A5E
.align 2, 0
_080B89E8: .4byte gTasks
-_080B89EC: .4byte gUnknown_2022978
+_080B89EC: .4byte gBattle_BG1_X
_080B89F0: .4byte gSprites
_080B89F4: .4byte gUnknown_2023D44
_080B89F8: .4byte gUnknown_2037F1A
@@ -47039,20 +47039,20 @@ _080B8F14:
strh r0, [r4, 0x1E]
cmp r0, 0x1
bne _080B8F48
- ldr r0, _080B8F40 @ =gUnknown_2022978
+ ldr r0, _080B8F40 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r4, 0x20]
- ldr r0, _080B8F44 @ =gUnknown_202297A
+ ldr r0, _080B8F44 @ =gBattle_BG1_Y
b _080B8F50
.align 2, 0
_080B8F3C: .4byte gUnknown_2037F1A
-_080B8F40: .4byte gUnknown_2022978
-_080B8F44: .4byte gUnknown_202297A
+_080B8F40: .4byte gBattle_BG1_X
+_080B8F44: .4byte gBattle_BG1_Y
_080B8F48:
- ldr r0, _080B8F8C @ =gUnknown_202297C
+ ldr r0, _080B8F8C @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r4, 0x20]
- ldr r0, _080B8F90 @ =gUnknown_202297E
+ ldr r0, _080B8F90 @ =gBattle_BG2_Y
_080B8F50:
ldrh r0, [r0]
strh r0, [r4, 0x22]
@@ -47085,8 +47085,8 @@ _080B8F72:
strb r1, [r0]
b _080B9056
.align 2, 0
-_080B8F8C: .4byte gUnknown_202297C
-_080B8F90: .4byte gUnknown_202297E
+_080B8F8C: .4byte gBattle_BG2_X
+_080B8F90: .4byte gBattle_BG2_Y
_080B8F94: .4byte gUnknown_2037F1A
_080B8F98: .4byte gSprites
_080B8F9C:
@@ -47116,7 +47116,7 @@ _080B8FAC:
adds r0, 0x1
strh r0, [r4, 0xE]
_080B8FCE:
- ldr r1, _080B8FF0 @ =gUnknown_825E074
+ ldr r1, _080B8FF0 @ =gSineTable
movs r2, 0xC
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -47131,13 +47131,13 @@ _080B8FCE:
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _080B8FF8
- ldr r1, _080B8FF4 @ =gUnknown_202297A
+ ldr r1, _080B8FF4 @ =gBattle_BG1_Y
b _080B8FFA
.align 2, 0
-_080B8FF0: .4byte gUnknown_825E074
-_080B8FF4: .4byte gUnknown_202297A
+_080B8FF0: .4byte gSineTable
+_080B8FF4: .4byte gBattle_BG1_Y
_080B8FF8:
- ldr r1, _080B901C @ =gUnknown_202297E
+ ldr r1, _080B901C @ =gBattle_BG2_Y
_080B8FFA:
ldrh r0, [r4, 0x22]
subs r0, r2
@@ -47154,13 +47154,13 @@ _080B8FFA:
ldrsh r0, [r4, r3]
cmp r0, 0x1
bne _080B9024
- ldr r1, _080B9020 @ =gUnknown_202297A
+ ldr r1, _080B9020 @ =gBattle_BG1_Y
b _080B9026
.align 2, 0
-_080B901C: .4byte gUnknown_202297E
-_080B9020: .4byte gUnknown_202297A
+_080B901C: .4byte gBattle_BG2_Y
+_080B9020: .4byte gBattle_BG1_Y
_080B9024:
- ldr r1, _080B9048 @ =gUnknown_202297E
+ ldr r1, _080B9048 @ =gBattle_BG2_Y
_080B9026:
ldrh r0, [r4, 0x22]
subs r0, r2
@@ -47180,10 +47180,10 @@ _080B9026:
strh r0, [r1, 0x24]
b _080B9056
.align 2, 0
-_080B9048: .4byte gUnknown_202297E
+_080B9048: .4byte gBattle_BG2_Y
_080B904C: .4byte gSprites
_080B9050:
- ldr r1, _080B9060 @ =gUnknown_2039600
+ ldr r1, _080B9060 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B9056:
@@ -47192,7 +47192,7 @@ _080B9056:
strh r0, [r4, 0x8]
b _080B9082
.align 2, 0
-_080B9060: .4byte gUnknown_2039600
+_080B9060: .4byte gScanlineEffect
_080B9064:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -47246,14 +47246,14 @@ sub_80B908C: @ 80B908C
lsrs r0, 24
cmp r0, 0x1
bne _080B90D8
- ldr r0, _080B90D4 @ =gUnknown_202297A
+ ldr r0, _080B90D4 @ =gBattle_BG1_Y
b _080B90DA
.align 2, 0
_080B90CC: .4byte gSprites
_080B90D0: .4byte gUnknown_2037F1A
-_080B90D4: .4byte gUnknown_202297A
+_080B90D4: .4byte gBattle_BG1_Y
_080B90D8:
- ldr r0, _080B90E8 @ =gUnknown_202297E
+ ldr r0, _080B90E8 @ =gBattle_BG2_Y
_080B90DA:
strh r4, [r0]
adds r0, r5, 0
@@ -47262,7 +47262,7 @@ _080B90DA:
pop {r0}
bx r0
.align 2, 0
-_080B90E8: .4byte gUnknown_202297E
+_080B90E8: .4byte gBattle_BG2_Y
thumb_func_end sub_80B908C
thumb_func_start sub_80B90EC
@@ -47412,13 +47412,13 @@ _080B91F0:
strh r0, [r4, 0x1E]
cmp r0, 0x1
bne _080B921C
- ldr r0, _080B9218 @ =gUnknown_2022978
+ ldr r0, _080B9218 @ =gBattle_BG1_X
b _080B921E
.align 2, 0
_080B9214: .4byte gUnknown_2037F1A
-_080B9218: .4byte gUnknown_2022978
+_080B9218: .4byte gBattle_BG1_X
_080B921C:
- ldr r0, _080B923C @ =gUnknown_202297C
+ ldr r0, _080B923C @ =gBattle_BG2_X
_080B921E:
ldrh r0, [r0]
strh r0, [r4, 0x20]
@@ -47434,7 +47434,7 @@ _080B921E:
strh r0, [r4, 0x26]
b _080B929A
.align 2, 0
-_080B923C: .4byte gUnknown_202297C
+_080B923C: .4byte gBattle_BG2_X
_080B9240: .4byte gUnknown_2037F1A
_080B9244:
ldrb r0, [r4, 0x1E]
@@ -47477,7 +47477,7 @@ _080B926C:
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080B92B2
- ldr r1, _080B92A8 @ =gUnknown_2039600
+ ldr r1, _080B92A8 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080B929A:
@@ -47487,7 +47487,7 @@ _080B929A:
b _080B92B2
.align 2, 0
_080B92A4: .4byte gSprites
-_080B92A8: .4byte gUnknown_2039600
+_080B92A8: .4byte gScanlineEffect
_080B92AC:
adds r0, r2, 0
bl DestroyAnimVisualTask
@@ -47509,15 +47509,15 @@ sub_80B92B8: @ 80B92B8
lsrs r4, r2, 16
cmp r0, 0x1
bne _080B92DC
- ldr r0, _080B92D4 @ =gUnknown_2022978
+ ldr r0, _080B92D4 @ =gBattle_BG1_X
ldrh r3, [r0]
ldr r0, _080B92D8 @ =0x04000014
b _080B92E2
.align 2, 0
-_080B92D4: .4byte gUnknown_2022978
+_080B92D4: .4byte gBattle_BG1_X
_080B92D8: .4byte 0x04000014
_080B92DC:
- ldr r0, _080B9368 @ =gUnknown_202297C
+ ldr r0, _080B9368 @ =gBattle_BG2_X
ldrh r3, [r0]
ldr r0, _080B936C @ =0x04000018
_080B92E2:
@@ -47532,7 +47532,7 @@ _080B92EC:
asrs r4, r0, 16
cmp r2, r0
bge _080B9318
- ldr r5, _080B9370 @ =gUnknown_2038700
+ ldr r5, _080B9370 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -47555,7 +47555,7 @@ _080B9318:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _080B9346
- ldr r4, _080B9370 @ =gUnknown_2038700
+ ldr r4, _080B9370 @ =gScanlineEffectRegBuffers
lsls r0, r3, 16
asrs r0, 16
adds r3, r0, 0
@@ -47587,15 +47587,15 @@ _080B9346:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
add sp, 0xC
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080B9368: .4byte gUnknown_202297C
+_080B9368: .4byte gBattle_BG2_X
_080B936C: .4byte 0x04000018
-_080B9370: .4byte gUnknown_2038700
+_080B9370: .4byte gScanlineEffectRegBuffers
_080B9374: .4byte 0xa2600001
thumb_func_end sub_80B92B8
@@ -47795,14 +47795,14 @@ _080B94EC:
beq _080B9518
cmp r0, 0x5
bne _080B9558
- ldr r0, _080B9510 @ =gUnknown_2022980
+ ldr r0, _080B9510 @ =gBattle_BG3_X
ldrh r0, [r0]
strh r0, [r4, 0x22]
ldr r0, _080B9514 @ =sub_80B9584
b _080B9576
.align 2, 0
_080B950C: .4byte gUnknown_2037EEC
-_080B9510: .4byte gUnknown_2022980
+_080B9510: .4byte gBattle_BG3_X
_080B9514: .4byte sub_80B9584
_080B9518:
movs r0, 0
@@ -47903,16 +47903,16 @@ _080B95B2:
ands r0, r1
cmp r0, 0
bne _080B95DC
- ldr r1, _080B95D8 @ =gUnknown_2022980
+ ldr r1, _080B95D8 @ =gBattle_BG3_X
ldrh r0, [r3, 0x26]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080B95E6
.align 2, 0
-_080B95D8: .4byte gUnknown_2022980
+_080B95D8: .4byte gBattle_BG3_X
_080B95DC:
- ldr r0, _080B9604 @ =gUnknown_2022980
+ ldr r0, _080B9604 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x26]
subs r1, r2
@@ -47934,7 +47934,7 @@ _080B95E6:
strh r0, [r3, 0x24]
b _080B965C
.align 2, 0
-_080B9604: .4byte gUnknown_2022980
+_080B9604: .4byte gBattle_BG3_X
_080B9608:
ldrh r0, [r3, 0xA]
adds r0, 0x1
@@ -47949,16 +47949,16 @@ _080B9608:
ands r1, r0
cmp r1, 0
bne _080B9634
- ldr r1, _080B9630 @ =gUnknown_2022980
+ ldr r1, _080B9630 @ =gBattle_BG3_X
ldrh r0, [r3, 0x24]
ldrh r2, [r3, 0x22]
adds r0, r2
strh r0, [r1]
b _080B963E
.align 2, 0
-_080B9630: .4byte gUnknown_2022980
+_080B9630: .4byte gBattle_BG3_X
_080B9634:
- ldr r0, _080B9664 @ =gUnknown_2022980
+ ldr r0, _080B9664 @ =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x24]
subs r1, r2
@@ -47985,9 +47985,9 @@ _080B965C:
strh r0, [r3, 0x8]
b _080B9674
.align 2, 0
-_080B9664: .4byte gUnknown_2022980
+_080B9664: .4byte gBattle_BG3_X
_080B9668:
- ldr r1, _080B9678 @ =gUnknown_2022980
+ ldr r1, _080B9678 @ =gBattle_BG3_X
ldrh r0, [r3, 0x22]
strh r0, [r1]
adds r0, r2, 0
@@ -47996,7 +47996,7 @@ _080B9674:
pop {r0}
bx r0
.align 2, 0
-_080B9678: .4byte gUnknown_2022980
+_080B9678: .4byte gBattle_BG3_X
thumb_func_end sub_80B9584
thumb_func_start sub_80B967C
@@ -48271,10 +48271,10 @@ _080B9832:
movs r0, 0xFF
ands r1, r0
strh r1, [r4, 0xC]
- ldr r2, _080B98A0 @ =gUnknown_2022980
+ ldr r2, _080B98A0 @ =gBattle_BG3_X
ldrh r0, [r4, 0xA]
strh r0, [r2]
- ldr r0, _080B98A4 @ =gUnknown_2022982
+ ldr r0, _080B98A4 @ =gBattle_BG3_Y
strh r1, [r0]
ldrh r0, [r6, 0x4]
strh r0, [r4, 0xE]
@@ -48288,8 +48288,8 @@ _080B9890: .4byte gUnknown_2037F1A
_080B9894: .4byte sub_80B98A8
_080B9898: .4byte gTasks
_080B989C: .4byte 0x000001ff
-_080B98A0: .4byte gUnknown_2022980
-_080B98A4: .4byte gUnknown_2022982
+_080B98A0: .4byte gBattle_BG3_X
+_080B98A4: .4byte gBattle_BG3_Y
thumb_func_end sub_80B9800
thumb_func_start sub_80B98A8
@@ -48309,10 +48309,10 @@ sub_80B98A8: @ 80B98A8
ldrsh r0, [r2, r4]
cmp r1, r0
bne _080B98E8
- ldr r0, _080B98E0 @ =gUnknown_2022980
+ ldr r0, _080B98E0 @ =gBattle_BG3_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080B98E4 @ =gUnknown_2022982
+ ldr r0, _080B98E4 @ =gBattle_BG3_Y
strh r1, [r0]
adds r0, r3, 0
bl DestroyTask
@@ -48320,13 +48320,13 @@ sub_80B98A8: @ 80B98A8
.align 2, 0
_080B98D8: .4byte gTasks
_080B98DC: .4byte gUnknown_2037F02
-_080B98E0: .4byte gUnknown_2022980
-_080B98E4: .4byte gUnknown_2022982
+_080B98E0: .4byte gBattle_BG3_X
+_080B98E4: .4byte gBattle_BG3_Y
_080B98E8:
- ldr r1, _080B98FC @ =gUnknown_2022980
+ ldr r1, _080B98FC @ =gBattle_BG3_X
ldrh r0, [r2, 0xA]
strh r0, [r1]
- ldr r1, _080B9900 @ =gUnknown_2022982
+ ldr r1, _080B9900 @ =gBattle_BG3_Y
ldrh r0, [r2, 0xC]
strh r0, [r1]
_080B98F4:
@@ -48334,8 +48334,8 @@ _080B98F4:
pop {r0}
bx r0
.align 2, 0
-_080B98FC: .4byte gUnknown_2022980
-_080B9900: .4byte gUnknown_2022982
+_080B98FC: .4byte gBattle_BG3_X
+_080B9900: .4byte gBattle_BG3_Y
thumb_func_end sub_80B98A8
thumb_func_start sub_80B9904
@@ -49629,15 +49629,15 @@ _080BA2B4:
beq _080BA2CC
b _080BA2DC
_080BA2BA:
- ldr r1, _080BA2C0 @ =gUnknown_2022980
+ ldr r1, _080BA2C0 @ =gBattle_BG3_X
b _080BA2CE
.align 2, 0
-_080BA2C0: .4byte gUnknown_2022980
+_080BA2C0: .4byte gBattle_BG3_X
_080BA2C4:
- ldr r1, _080BA2C8 @ =gUnknown_2022982
+ ldr r1, _080BA2C8 @ =gBattle_BG3_Y
b _080BA2CE
.align 2, 0
-_080BA2C8: .4byte gUnknown_2022982
+_080BA2C8: .4byte gBattle_BG3_Y
_080BA2CC:
ldr r1, _080BA2D8 @ =gSpriteCoordOffsetX
_080BA2CE:
@@ -49883,10 +49883,10 @@ sub_80BA47C: @ 80BA47C
strh r1, [r2, 0xE]
ldrh r1, [r3, 0x6]
strh r1, [r2, 0x18]
- ldr r4, _080BA4C4 @ =gUnknown_2022980
+ ldr r4, _080BA4C4 @ =gBattle_BG3_X
ldrh r1, [r3]
strh r1, [r4]
- ldr r4, _080BA4C8 @ =gUnknown_2022982
+ ldr r4, _080BA4C8 @ =gBattle_BG3_Y
ldrh r1, [r3, 0x2]
strh r1, [r4]
ldr r1, _080BA4CC @ =sub_80BA4D0
@@ -49898,8 +49898,8 @@ sub_80BA47C: @ 80BA47C
.align 2, 0
_080BA4BC: .4byte gTasks
_080BA4C0: .4byte gUnknown_2037F02
-_080BA4C4: .4byte gUnknown_2022980
-_080BA4C8: .4byte gUnknown_2022982
+_080BA4C4: .4byte gBattle_BG3_X
+_080BA4C8: .4byte gBattle_BG3_Y
_080BA4CC: .4byte sub_80BA4D0
thumb_func_end sub_80BA47C
@@ -49919,7 +49919,7 @@ sub_80BA4D0: @ 80BA4D0
mov r12, r1
cmp r0, 0
bne _080BA556
- ldr r0, _080BA504 @ =gUnknown_2022980
+ ldr r0, _080BA504 @ =gBattle_BG3_X
ldrh r2, [r0]
movs r7, 0x8
ldrsh r1, [r3, r7]
@@ -49931,12 +49931,12 @@ sub_80BA4D0: @ 80BA4D0
b _080BA50A
.align 2, 0
_080BA500: .4byte gTasks
-_080BA504: .4byte gUnknown_2022980
+_080BA504: .4byte gBattle_BG3_X
_080BA508:
ldrh r0, [r3, 0x8]
_080BA50A:
strh r0, [r6]
- ldr r2, _080BA528 @ =gUnknown_2022982
+ ldr r2, _080BA528 @ =gBattle_BG3_Y
ldrh r3, [r2]
lsls r1, r5, 2
adds r0, r1, r5
@@ -49950,7 +49950,7 @@ _080BA50A:
movs r0, 0
b _080BA530
.align 2, 0
-_080BA528: .4byte gUnknown_2022982
+_080BA528: .4byte gBattle_BG3_Y
_080BA52C:
ldrh r0, [r4, 0xA]
negs r0, r0
@@ -51171,7 +51171,7 @@ _080BAEAC:
adds r1, 0x1
movs r2, 0x2
bl LoadPalette
- ldr r2, _080BAF24 @ =gUnknown_2022978
+ ldr r2, _080BAF24 @ =gBattle_BG1_X
ldr r0, _080BAF28 @ =gSprites
lsls r1, r5, 4
adds r1, r5
@@ -51181,7 +51181,7 @@ _080BAEAC:
negs r0, r0
adds r0, 0x20
strh r0, [r2]
- ldr r2, _080BAF2C @ =gUnknown_202297A
+ ldr r2, _080BAF2C @ =gBattle_BG1_Y
ldrh r0, [r1, 0x22]
negs r0, r0
adds r0, 0x20
@@ -51210,9 +51210,9 @@ _080BAF14: .4byte gUnknown_2037F1A
_080BAF18: .4byte gFile_graphics_battle_anims_masks_curse_tilemap
_080BAF1C: .4byte gFile_graphics_battle_anims_masks_curse_sheet
_080BAF20: .4byte gUnknown_83E7CC8
-_080BAF24: .4byte gUnknown_2022978
+_080BAF24: .4byte gBattle_BG1_X
_080BAF28: .4byte gSprites
-_080BAF2C: .4byte gUnknown_202297A
+_080BAF2C: .4byte gBattle_BG1_Y
_080BAF30: .4byte gTasks
_080BAF34: .4byte sub_80BAF38
thumb_func_end sub_80BACEC
@@ -51236,7 +51236,7 @@ sub_80BAF38: @ 80BAF38
movs r1, 0
mov r8, r1
strh r0, [r5, 0x1C]
- ldr r7, _080BB06C @ =gUnknown_202297A
+ ldr r7, _080BB06C @ =gBattle_BG1_Y
ldrh r2, [r7]
subs r1, r2, 0x4
strh r1, [r7]
@@ -51360,7 +51360,7 @@ _080BB05A:
bx r0
.align 2, 0
_080BB068: .4byte gTasks
-_080BB06C: .4byte gUnknown_202297A
+_080BB06C: .4byte gBattle_BG1_Y
_080BB070: .4byte gUnknown_2022984
_080BB074: .4byte gUnknown_2022986
_080BB078: .4byte 0x00003f3f
@@ -51763,10 +51763,10 @@ _080BB3C4:
movs r2, 0x20
bl LoadCompressedPalette
_080BB3D2:
- ldr r3, _080BB400 @ =gUnknown_2022978
+ ldr r3, _080BB400 @ =gBattle_BG1_X
movs r2, 0
strh r2, [r3]
- ldr r0, _080BB404 @ =gUnknown_202297A
+ ldr r0, _080BB404 @ =gBattle_BG1_Y
strh r2, [r0]
ldr r1, _080BB408 @ =gUnknown_20399B4
ldr r0, [r1]
@@ -51786,8 +51786,8 @@ _080BB3D2:
b _080BB420
.align 2, 0
_080BB3FC: .4byte gFile_graphics_battle_anims_masks_stat5_palette
-_080BB400: .4byte gUnknown_2022978
-_080BB404: .4byte gUnknown_202297A
+_080BB400: .4byte gBattle_BG1_X
+_080BB404: .4byte gBattle_BG1_Y
_080BB408: .4byte gUnknown_20399B4
_080BB40C: .4byte gTasks
_080BB410: .4byte 0x0000fffd
@@ -51880,7 +51880,7 @@ sub_80BB4B8: @ 80BB4B8
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r2, _080BB4E4 @ =gUnknown_202297A
+ ldr r2, _080BB4E4 @ =gBattle_BG1_Y
ldr r1, _080BB4E8 @ =gTasks
lsls r0, r6, 2
adds r0, r6
@@ -51900,7 +51900,7 @@ sub_80BB4B8: @ 80BB4B8
beq _080BB4F6
b _080BB644
.align 2, 0
-_080BB4E4: .4byte gUnknown_202297A
+_080BB4E4: .4byte gBattle_BG1_Y
_080BB4E8: .4byte gTasks
_080BB4EC:
cmp r2, 0x2
@@ -52406,13 +52406,13 @@ sub_80BB8A4: @ 80BB8A4
ldrh r7, [r1, 0x1E]
adds r2, r7
strh r2, [r1, 0x1E]
- ldr r6, _080BB914 @ =gUnknown_2022980
+ ldr r6, _080BB914 @ =gBattle_BG3_X
lsls r0, r3, 16
asrs r0, 24
ldrh r4, [r6]
adds r0, r4
strh r0, [r6]
- ldr r4, _080BB918 @ =gUnknown_2022982
+ ldr r4, _080BB918 @ =gBattle_BG3_Y
lsls r0, r2, 16
asrs r0, 24
ldrh r7, [r4]
@@ -52443,8 +52443,8 @@ _080BB90A:
bx r0
.align 2, 0
_080BB910: .4byte gTasks
-_080BB914: .4byte gUnknown_2022980
-_080BB918: .4byte gUnknown_2022982
+_080BB914: .4byte gBattle_BG3_X
+_080BB918: .4byte gBattle_BG3_Y
_080BB91C: .4byte gUnknown_2037F02
thumb_func_end sub_80BB8A4
@@ -52772,10 +52772,10 @@ _080BBBA8:
ldr r0, [sp, 0x5C]
movs r2, 0x20
bl LoadCompressedPalette
- ldr r0, _080BBC1C @ =gUnknown_2022978
+ ldr r0, _080BBC1C @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080BBC20 @ =gUnknown_202297A
+ ldr r0, _080BBC20 @ =gBattle_BG1_Y
strh r1, [r0]
ldr r1, _080BBC24 @ =gTasks
mov r2, r9
@@ -52814,8 +52814,8 @@ _080BBBA8:
_080BBC10: .4byte gBattlerPartyIndexes
_080BBC14: .4byte gPlayerParty
_080BBC18: .4byte gUnknown_2023D44
-_080BBC1C: .4byte gUnknown_2022978
-_080BBC20: .4byte gUnknown_202297A
+_080BBC1C: .4byte gBattle_BG1_X
+_080BBC20: .4byte gBattle_BG1_Y
_080BBC24: .4byte gTasks
_080BBC28: .4byte sub_80BBC2C
thumb_func_end sub_80BBA20
@@ -52845,7 +52845,7 @@ _080BBC4A:
ldrsh r0, [r3, r1]
cmp r0, 0
bge _080BBC70
- ldr r2, _080BBC6C @ =gUnknown_202297A
+ ldr r2, _080BBC6C @ =gBattle_BG1_Y
lsls r1, r4, 16
asrs r1, 24
ldrh r0, [r2]
@@ -52854,9 +52854,9 @@ _080BBC4A:
b _080BBC7C
.align 2, 0
_080BBC68: .4byte gTasks
-_080BBC6C: .4byte gUnknown_202297A
+_080BBC6C: .4byte gBattle_BG1_Y
_080BBC70:
- ldr r1, _080BBCA0 @ =gUnknown_202297A
+ ldr r1, _080BBCA0 @ =gBattle_BG1_Y
lsls r0, r4, 16
asrs r0, 24
ldrh r2, [r1]
@@ -52882,7 +52882,7 @@ _080BBC7C:
beq _080BBCAA
b _080BBDD8
.align 2, 0
-_080BBCA0: .4byte gUnknown_202297A
+_080BBCA0: .4byte gBattle_BG1_Y
_080BBCA4:
cmp r0, 0x2
beq _080BBD00
@@ -53860,14 +53860,14 @@ sub_80BC41C: @ 80BC41C
lsls r0, 24
lsrs r0, 24
bl DestroyTask
- ldr r0, _080BC468 @ =gUnknown_2022978
+ ldr r0, _080BC468 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080BC46C @ =gUnknown_202297A
+ ldr r0, _080BC46C @ =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, _080BC470 @ =gUnknown_202297C
+ ldr r0, _080BC470 @ =gBattle_BG2_X
strh r1, [r0]
- ldr r0, _080BC474 @ =gUnknown_202297E
+ ldr r0, _080BC474 @ =gBattle_BG2_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -53889,10 +53889,10 @@ sub_80BC41C: @ 80BC41C
pop {r0}
bx r0
.align 2, 0
-_080BC468: .4byte gUnknown_2022978
-_080BC46C: .4byte gUnknown_202297A
-_080BC470: .4byte gUnknown_202297C
-_080BC474: .4byte gUnknown_202297E
+_080BC468: .4byte gBattle_BG1_X
+_080BC46C: .4byte gBattle_BG1_Y
+_080BC470: .4byte gBattle_BG2_X
+_080BC474: .4byte gBattle_BG2_Y
_080BC478: .4byte 0x00003f3f
thumb_func_end sub_80BC41C
@@ -53905,7 +53905,7 @@ task_battle_intro_80BC47C: @ 80BC47C
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
- ldr r1, _080BC4B4 @ =gUnknown_2022978
+ ldr r1, _080BC4B4 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
strh r0, [r1]
@@ -53927,7 +53927,7 @@ _080BC4A8:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080BC4B4: .4byte gUnknown_2022978
+_080BC4B4: .4byte gBattle_BG1_X
_080BC4B8: .4byte gTasks
_080BC4BC: .4byte _080BC4C0
.align 2, 0
@@ -54040,7 +54040,7 @@ _080BC590:
ldrsh r0, [r2, r1]
cmp r0, 0x1
bne _080BC5B0
- ldr r2, _080BC5A8 @ =gUnknown_202297A
+ ldr r2, _080BC5A8 @ =gBattle_BG1_Y
ldrh r1, [r2]
ldr r0, _080BC5AC @ =0x0000ffb0
cmp r1, r0
@@ -54048,10 +54048,10 @@ _080BC590:
subs r0, r1, 0x2
b _080BC5BC
.align 2, 0
-_080BC5A8: .4byte gUnknown_202297A
+_080BC5A8: .4byte gBattle_BG1_Y
_080BC5AC: .4byte 0x0000ffb0
_080BC5B0:
- ldr r2, _080BC690 @ =gUnknown_202297A
+ ldr r2, _080BC690 @ =gBattle_BG1_Y
ldrh r1, [r2]
ldr r0, _080BC694 @ =0x0000ffc8
cmp r1, r0
@@ -54085,9 +54085,9 @@ _080BC5D2:
strh r0, [r1, 0xC]
_080BC5EA:
movs r3, 0
- ldr r5, _080BC6A0 @ =gUnknown_2039600
+ ldr r5, _080BC6A0 @ =gScanlineEffect
mov r9, r5
- ldr r7, _080BC6A4 @ =gUnknown_2038700
+ ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
mov r6, r9
adds r5, r1, 0
_080BC5F6:
@@ -54105,8 +54105,8 @@ _080BC5F6:
ble _080BC5F6
cmp r3, 0x9F
bgt _080BC63A
- ldr r7, _080BC6A4 @ =gUnknown_2038700
- ldr r6, _080BC6A0 @ =gUnknown_2039600
+ ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
+ ldr r6, _080BC6A0 @ =gScanlineEffect
ldr r1, _080BC6A8 @ =gTasks
mov r2, r12
adds r0, r2, r4
@@ -54165,12 +54165,12 @@ _080BC63A:
bl SetGpuReg
b _080BC6BA
.align 2, 0
-_080BC690: .4byte gUnknown_202297A
+_080BC690: .4byte gBattle_BG1_Y
_080BC694: .4byte 0x0000ffc8
_080BC698: .4byte gUnknown_2022986
_080BC69C: .4byte 0xfffffc04
-_080BC6A0: .4byte gUnknown_2039600
-_080BC6A4: .4byte gUnknown_2038700
+_080BC6A0: .4byte gScanlineEffect
+_080BC6A4: .4byte gScanlineEffectRegBuffers
_080BC6A8: .4byte gTasks
_080BC6AC: .4byte 0x0600e000
_080BC6B0: .4byte 0x05000200
@@ -54216,14 +54216,14 @@ _080BC6F8:
cmp r0, 0x4
bne _080BC710
_080BC6FC:
- ldr r1, _080BC704 @ =gUnknown_2022978
+ ldr r1, _080BC704 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x8
b _080BC70E
.align 2, 0
-_080BC704: .4byte gUnknown_2022978
+_080BC704: .4byte gBattle_BG1_X
_080BC708:
- ldr r1, _080BC74C @ =gUnknown_2022978
+ ldr r1, _080BC74C @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
_080BC70E:
@@ -54238,7 +54238,7 @@ _080BC710:
adds r6, r0, 0
cmp r1, 0x4
bne _080BC774
- ldr r7, _080BC750 @ =gUnknown_202297A
+ ldr r7, _080BC750 @ =gBattle_BG1_Y
ldrh r0, [r4, 0x14]
bl Cos2
lsls r0, 16
@@ -54259,8 +54259,8 @@ _080BC736:
adds r0, r1, 0x4
b _080BC75A
.align 2, 0
-_080BC74C: .4byte gUnknown_2022978
-_080BC750: .4byte gUnknown_202297A
+_080BC74C: .4byte gBattle_BG1_X
+_080BC750: .4byte gBattle_BG1_Y
_080BC754: .4byte 0x000001ff
_080BC758:
adds r0, r1, 0x6
@@ -54459,9 +54459,9 @@ _080BC8CC:
strh r0, [r1, 0xC]
_080BC8E2:
movs r3, 0
- ldr r0, _080BC994 @ =gUnknown_2039600
+ ldr r0, _080BC994 @ =gScanlineEffect
mov r8, r0
- ldr r2, _080BC998 @ =gUnknown_2038700
+ ldr r2, _080BC998 @ =gScanlineEffectRegBuffers
mov r12, r2
mov r7, r8
adds r4, r1, 0
@@ -54480,9 +54480,9 @@ _080BC8F0:
ble _080BC8F0
cmp r3, 0x9F
bgt _080BC934
- ldr r0, _080BC998 @ =gUnknown_2038700
+ ldr r0, _080BC998 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _080BC994 @ =gUnknown_2039600
+ ldr r7, _080BC994 @ =gScanlineEffect
ldr r1, _080BC990 @ =gTasks
adds r0, r6, r5
lsls r0, 3
@@ -54542,8 +54542,8 @@ _080BC934:
_080BC988: .4byte gUnknown_2022986
_080BC98C: .4byte 0xfffffc04
_080BC990: .4byte gTasks
-_080BC994: .4byte gUnknown_2039600
-_080BC998: .4byte gUnknown_2038700
+_080BC994: .4byte gScanlineEffect
+_080BC998: .4byte gScanlineEffectRegBuffers
_080BC99C: .4byte 0x0600e000
_080BC9A0: .4byte 0x05000200
_080BC9A4:
@@ -54580,7 +54580,7 @@ task_battle_intro_anim: @ 80BC9D4
sub sp, 0x4
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, _080BCA08 @ =gUnknown_2022978
+ ldr r1, _080BCA08 @ =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x8
strh r0, [r1]
@@ -54602,7 +54602,7 @@ _080BC9FE:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_080BCA08: .4byte gUnknown_2022978
+_080BCA08: .4byte gBattle_BG1_X
_080BCA0C: .4byte gTasks
_080BCA10: .4byte _080BCA14
.align 2, 0
@@ -54768,9 +54768,9 @@ _080BCB46:
strh r0, [r1, 0xC]
_080BCB5C:
movs r3, 0
- ldr r6, _080BCC08 @ =gUnknown_2039600
+ ldr r6, _080BCC08 @ =gScanlineEffect
mov r8, r6
- ldr r7, _080BCC0C @ =gUnknown_2038700
+ ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
adds r4, r1, 0
_080BCB66:
lsls r2, r3, 1
@@ -54787,8 +54787,8 @@ _080BCB66:
ble _080BCB66
cmp r3, 0x9F
bgt _080BCBAA
- ldr r7, _080BCC0C @ =gUnknown_2038700
- ldr r6, _080BCC08 @ =gUnknown_2039600
+ ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
+ ldr r6, _080BCC08 @ =gScanlineEffect
ldr r1, _080BCC10 @ =gTasks
mov r2, r12
adds r0, r2, r5
@@ -54849,8 +54849,8 @@ _080BCBAA:
.align 2, 0
_080BCC00: .4byte gUnknown_2022986
_080BCC04: .4byte 0xfffffc04
-_080BCC08: .4byte gUnknown_2039600
-_080BCC0C: .4byte gUnknown_2038700
+_080BCC08: .4byte gScanlineEffect
+_080BCC0C: .4byte gScanlineEffectRegBuffers
_080BCC10: .4byte gTasks
_080BCC14: .4byte 0x0600e000
_080BCC18: .4byte 0x05000200
@@ -54903,7 +54903,7 @@ sub_80BCC4C: @ 80BCC4C
ldrsh r0, [r7, r2]
cmp r0, 0
bne _080BCCC2
- ldr r2, _080BCC9C @ =gUnknown_2022978
+ ldr r2, _080BCC9C @ =gBattle_BG1_X
ldrh r1, [r2]
movs r0, 0x80
lsls r0, 8
@@ -54917,15 +54917,15 @@ sub_80BCC4C: @ 80BCC4C
_080BCC8A:
adds r0, r1, 0x3
strh r0, [r2]
- ldr r1, _080BCCA0 @ =gUnknown_202297C
+ ldr r1, _080BCCA0 @ =gBattle_BG2_X
ldrh r0, [r1]
subs r0, 0x3
strh r0, [r1]
b _080BCCC2
.align 2, 0
_080BCC98: .4byte gTasks
-_080BCC9C: .4byte gUnknown_2022978
-_080BCCA0: .4byte gUnknown_202297C
+_080BCC9C: .4byte gBattle_BG1_X
+_080BCCA0: .4byte gBattle_BG2_X
_080BCCA4:
str r5, [sp]
ldr r1, _080BCCE4 @ =0x0600e000
@@ -55120,9 +55120,9 @@ _080BCE1C:
strh r0, [r1, 0xC]
_080BCE32:
movs r3, 0
- ldr r0, _080BCED4 @ =gUnknown_2039600
+ ldr r0, _080BCED4 @ =gScanlineEffect
mov r12, r0
- ldr r2, _080BCED8 @ =gUnknown_2038700
+ ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers
mov r8, r2
mov r7, r12
adds r4, r1, 0
@@ -55141,9 +55141,9 @@ _080BCE40:
ble _080BCE40
cmp r3, 0x9F
bgt _080BCE84
- ldr r0, _080BCED8 @ =gUnknown_2038700
+ ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers
mov r8, r0
- ldr r7, _080BCED4 @ =gUnknown_2039600
+ ldr r7, _080BCED4 @ =gScanlineEffect
ldr r1, _080BCEDC @ =gTasks
adds r0, r5, r6
lsls r0, 3
@@ -55197,8 +55197,8 @@ _080BCE84:
.align 2, 0
_080BCECC: .4byte gUnknown_2022986
_080BCED0: .4byte 0xfffffc04
-_080BCED4: .4byte gUnknown_2039600
-_080BCED8: .4byte gUnknown_2038700
+_080BCED4: .4byte gScanlineEffect
+_080BCED8: .4byte gScanlineEffectRegBuffers
_080BCEDC: .4byte gTasks
_080BCEE0:
adds r0, r6, 0
diff --git a/asm/battle_anim_80DE2C0.s b/asm/battle_anim_80DE2C0.s
index f3ddeb0b1..603005d78 100644
--- a/asm/battle_anim_80DE2C0.s
+++ b/asm/battle_anim_80DE2C0.s
@@ -1644,7 +1644,7 @@ sub_80DEF38: @ 80DEF38
movs r1, 0xFF
ands r0, r1
strh r0, [r2, 0x30]
- ldr r1, _080DEF80 @ =gUnknown_825E074
+ ldr r1, _080DEF80 @ =gSineTable
movs r3, 0x30
ldrsh r0, [r2, r3]
lsls r0, 1
@@ -1671,7 +1671,7 @@ sub_80DEF38: @ 80DEF38
bl DestroyAnimSprite
b _080DEF96
.align 2, 0
-_080DEF80: .4byte gUnknown_825E074
+_080DEF80: .4byte gSineTable
_080DEF84:
lsls r0, r1, 16
asrs r0, 16
@@ -1742,14 +1742,14 @@ _080DEFF4:
strh r2, [r5, 0x16]
cmp r7, 0x1
bne _080DF01C
- ldr r0, _080DF018 @ =gUnknown_2022978
+ ldr r0, _080DF018 @ =gBattle_BG1_X
b _080DF01E
.align 2, 0
_080DF010: .4byte gUnknown_2037F1B
_080DF014: .4byte gUnknown_2037F02
-_080DF018: .4byte gUnknown_2022978
+_080DF018: .4byte gBattle_BG1_X
_080DF01C:
- ldr r0, _080DF03C @ =gUnknown_202297C
+ ldr r0, _080DF03C @ =gBattle_BG2_X
_080DF01E:
ldrh r2, [r0]
strh r2, [r5, 0x18]
@@ -1766,7 +1766,7 @@ _080DF01E:
ldrh r3, [r5, 0x18]
b _080DF044
.align 2, 0
-_080DF03C: .4byte gUnknown_202297C
+_080DF03C: .4byte gBattle_BG2_X
_080DF040:
strh r2, [r5, 0x1E]
ldrh r3, [r5, 0x1A]
@@ -1780,7 +1780,7 @@ _080DF044:
ldrsh r0, [r5, r6]
cmp r1, r0
bgt _080DF07A
- ldr r4, _080DF084 @ =gUnknown_2038700
+ ldr r4, _080DF084 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r4
@@ -1805,7 +1805,7 @@ _080DF07A:
ldr r0, _080DF088 @ =0x04000014
b _080DF08E
.align 2, 0
-_080DF084: .4byte gUnknown_2038700
+_080DF084: .4byte gScanlineEffectRegBuffers
_080DF088: .4byte 0x04000014
_080DF08C:
ldr r0, _080DF0B8 @ =0x04000018
@@ -1822,7 +1822,7 @@ _080DF08E:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
ldr r0, _080DF0C0 @ =sub_80DF0C4
str r0, [r5]
add sp, 0xC
@@ -1917,7 +1917,7 @@ _080DF148:
ldrsh r0, [r4, r2]
cmp r1, r0
bge _080DF17C
- ldr r5, _080DF1D4 @ =gUnknown_2038700
+ ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1945,7 +1945,7 @@ _080DF17C:
ldrsh r0, [r4, r2]
cmp r1, r0
bgt _080DF1B0
- ldr r5, _080DF1D4 @ =gUnknown_2038700
+ ldr r5, _080DF1D4 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r6, r5, r0
@@ -1974,7 +1974,7 @@ _080DF1B0:
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080DF1C6
- ldr r1, _080DF1D8 @ =gUnknown_2039600
+ ldr r1, _080DF1D8 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_080DF1C6:
@@ -1985,8 +1985,8 @@ _080DF1CC:
pop {r0}
bx r0
.align 2, 0
-_080DF1D4: .4byte gUnknown_2038700
-_080DF1D8: .4byte gUnknown_2039600
+_080DF1D4: .4byte gScanlineEffectRegBuffers
+_080DF1D8: .4byte gScanlineEffect
thumb_func_end sub_80DF0C4
thumb_func_start sub_80DF1DC
@@ -3434,7 +3434,7 @@ _080DFCCE:
movs r2, 0
movs r3, 0
bl sub_80730C0
- ldr r1, _080DFD28 @ =gUnknown_2022978
+ ldr r1, _080DFD28 @ =gBattle_BG1_X
ldr r3, _080DFD2C @ =0x0000ffc8
b _080DFD58
.align 2, 0
@@ -3442,7 +3442,7 @@ _080DFD18: .4byte 0x00003f42
_080DFD1C: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
_080DFD20: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
_080DFD24: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
-_080DFD28: .4byte gUnknown_2022978
+_080DFD28: .4byte gBattle_BG1_X
_080DFD2C: .4byte 0x0000ffc8
_080DFD30:
ldr r0, _080DFD48 @ =gUnknown_2037F1A
@@ -3451,22 +3451,22 @@ _080DFD30:
lsls r0, 24
cmp r0, 0
beq _080DFD54
- ldr r1, _080DFD4C @ =gUnknown_2022978
+ ldr r1, _080DFD4C @ =gBattle_BG1_X
ldr r2, _080DFD50 @ =0x0000ff79
adds r0, r2, 0
b _080DFD5A
.align 2, 0
_080DFD48: .4byte gUnknown_2037F1A
-_080DFD4C: .4byte gUnknown_2022978
+_080DFD4C: .4byte gBattle_BG1_X
_080DFD50: .4byte 0x0000ff79
_080DFD54:
- ldr r1, _080DFD80 @ =gUnknown_2022978
+ ldr r1, _080DFD80 @ =gBattle_BG1_X
ldr r3, _080DFD84 @ =0x0000fff6
_080DFD58:
adds r0, r3, 0
_080DFD5A:
strh r0, [r1]
- ldr r1, _080DFD88 @ =gUnknown_202297A
+ ldr r1, _080DFD88 @ =gBattle_BG1_Y
movs r0, 0
strh r0, [r1]
ldr r0, _080DFD8C @ =gTasks
@@ -3474,19 +3474,19 @@ _080DFD5A:
adds r1, r4
lsls r1, 3
adds r1, r0
- ldr r0, _080DFD80 @ =gUnknown_2022978
+ ldr r0, _080DFD80 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r1, 0x1C]
- ldr r0, _080DFD88 @ =gUnknown_202297A
+ ldr r0, _080DFD88 @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r1, 0x1E]
ldrh r0, [r1, 0x8]
adds r0, 0x1
b _080DFE66
.align 2, 0
-_080DFD80: .4byte gUnknown_2022978
+_080DFD80: .4byte gBattle_BG1_X
_080DFD84: .4byte 0x0000fff6
-_080DFD88: .4byte gUnknown_202297A
+_080DFD88: .4byte gBattle_BG1_Y
_080DFD8C: .4byte gTasks
_080DFD90:
lsls r0, r4, 2
@@ -3557,7 +3557,7 @@ _080DFDF8:
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080DFECA
- ldr r2, _080DFE3C @ =gUnknown_2022978
+ ldr r2, _080DFE3C @ =gBattle_BG1_X
ldr r1, _080DFE40 @ =gUnknown_83FF240
movs r3, 0xC
ldrsh r0, [r4, r3]
@@ -3578,7 +3578,7 @@ _080DFDF8:
strh r0, [r4, 0x8]
b _080DFECA
.align 2, 0
-_080DFE3C: .4byte gUnknown_2022978
+_080DFE3C: .4byte gBattle_BG1_X
_080DFE40: .4byte gUnknown_83FF240
_080DFE44:
movs r0, 0x3
@@ -3629,10 +3629,10 @@ _080DFEA0:
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
- ldr r0, _080DFED4 @ =gUnknown_2022978
+ ldr r0, _080DFED4 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080DFED8 @ =gUnknown_202297A
+ ldr r0, _080DFED8 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -3648,8 +3648,8 @@ _080DFECA:
pop {r0}
bx r0
.align 2, 0
-_080DFED4: .4byte gUnknown_2022978
-_080DFED8: .4byte gUnknown_202297A
+_080DFED4: .4byte gBattle_BG1_X
+_080DFED8: .4byte gBattle_BG1_Y
thumb_func_end sub_80DFC50
thumb_func_start sub_80DFEDC
@@ -4076,7 +4076,7 @@ _080E01FC:
movs r2, 0
movs r3, 0
bl sub_80730C0
- ldr r1, _080E025C @ =gUnknown_2022978
+ ldr r1, _080E025C @ =gBattle_BG1_X
ldr r3, _080E0260 @ =0x0000ffc8
adds r0, r3, 0
b _080E02CE
@@ -4086,7 +4086,7 @@ _080E024C: .4byte 0x00000d03
_080E0250: .4byte gFile_graphics_battle_anims_masks_morning_sun_tilemap
_080E0254: .4byte gFile_graphics_battle_anims_masks_morning_sun_sheet
_080E0258: .4byte gFile_graphics_battle_anims_masks_morning_sun_palette
-_080E025C: .4byte gUnknown_2022978
+_080E025C: .4byte gBattle_BG1_X
_080E0260: .4byte 0x0000ffc8
_080E0264:
ldr r0, _080E02A4 @ =gUnknown_2037F1B
@@ -4099,7 +4099,7 @@ _080E0264:
lsrs r0, 24
cmp r0, 0x1
bne _080E02B8
- ldr r1, _080E02A8 @ =gUnknown_2022978
+ ldr r1, _080E02A8 @ =gBattle_BG1_X
cmp r4, 0x1
bne _080E0288
ldr r2, _080E02AC @ =0x0000ff65
@@ -4119,33 +4119,33 @@ _080E0292:
_080E029A:
cmp r4, 0x2
bne _080E02D0
- ldr r1, _080E02A8 @ =gUnknown_2022978
+ ldr r1, _080E02A8 @ =gBattle_BG1_X
ldr r2, _080E02B4 @ =0x0000ffec
b _080E02CC
.align 2, 0
_080E02A4: .4byte gUnknown_2037F1B
-_080E02A8: .4byte gUnknown_2022978
+_080E02A8: .4byte gBattle_BG1_X
_080E02AC: .4byte 0x0000ff65
_080E02B0: .4byte 0x0000ff8d
_080E02B4: .4byte 0x0000ffec
_080E02B8:
cmp r4, 0x1
bne _080E02C4
- ldr r1, _080E02F0 @ =gUnknown_2022978
+ ldr r1, _080E02F0 @ =gBattle_BG1_X
ldr r3, _080E02F4 @ =0x0000ff79
adds r0, r3, 0
strh r0, [r1]
_080E02C4:
cmp r4, 0
bne _080E02D0
- ldr r1, _080E02F0 @ =gUnknown_2022978
+ ldr r1, _080E02F0 @ =gBattle_BG1_X
ldr r2, _080E02F8 @ =0x0000fff6
_080E02CC:
adds r0, r2, 0
_080E02CE:
strh r0, [r1]
_080E02D0:
- ldr r1, _080E02FC @ =gUnknown_202297A
+ ldr r1, _080E02FC @ =gBattle_BG1_Y
movs r0, 0
strh r0, [r1]
ldr r0, _080E0300 @ =gTasks
@@ -4153,18 +4153,18 @@ _080E02D0:
adds r1, r6
lsls r1, 3
adds r1, r0
- ldr r0, _080E02F0 @ =gUnknown_2022978
+ ldr r0, _080E02F0 @ =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r1, 0x1C]
- ldr r0, _080E02FC @ =gUnknown_202297A
+ ldr r0, _080E02FC @ =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r1, 0x1E]
b _080E0384
.align 2, 0
-_080E02F0: .4byte gUnknown_2022978
+_080E02F0: .4byte gBattle_BG1_X
_080E02F4: .4byte 0x0000ff79
_080E02F8: .4byte 0x0000fff6
-_080E02FC: .4byte gUnknown_202297A
+_080E02FC: .4byte gBattle_BG1_Y
_080E0300: .4byte gTasks
_080E0304:
ldr r1, _080E0338 @ =gTasks
@@ -4181,7 +4181,7 @@ _080E0304:
lsrs r0, 24
cmp r0, 0x1
bne _080E0348
- ldr r2, _080E0340 @ =gUnknown_2022978
+ ldr r2, _080E0340 @ =gBattle_BG1_X
ldr r1, _080E0344 @ =gUnknown_83FF284
movs r3, 0xC
ldrsh r0, [r5, r3]
@@ -4195,10 +4195,10 @@ _080E0304:
.align 2, 0
_080E0338: .4byte gTasks
_080E033C: .4byte gUnknown_2037F1B
-_080E0340: .4byte gUnknown_2022978
+_080E0340: .4byte gBattle_BG1_X
_080E0344: .4byte gUnknown_83FF284
_080E0348:
- ldr r2, _080E0378 @ =gUnknown_2022978
+ ldr r2, _080E0378 @ =gBattle_BG1_X
ldr r1, _080E037C @ =gUnknown_83FF284
movs r3, 0xC
ldrsh r0, [r5, r3]
@@ -4223,7 +4223,7 @@ _080E035A:
strh r0, [r1, 0x8]
b _080E0476
.align 2, 0
-_080E0378: .4byte gUnknown_2022978
+_080E0378: .4byte gBattle_BG1_X
_080E037C: .4byte gUnknown_83FF284
_080E0380: .4byte gTasks
_080E0384:
@@ -4332,10 +4332,10 @@ _080E044C:
movs r1, 0x4
movs r2, 0x1
bl SetAnimBgAttribute
- ldr r0, _080E0480 @ =gUnknown_2022978
+ ldr r0, _080E0480 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080E0484 @ =gUnknown_202297A
+ ldr r0, _080E0484 @ =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -4351,8 +4351,8 @@ _080E0476:
pop {r0}
bx r0
.align 2, 0
-_080E0480: .4byte gUnknown_2022978
-_080E0484: .4byte gUnknown_202297A
+_080E0480: .4byte gBattle_BG1_X
+_080E0484: .4byte gBattle_BG1_Y
thumb_func_end sub_80E017C
thumb_func_start sub_80E0488
@@ -6291,31 +6291,31 @@ _080E136C:
ldr r1, _080E13B0 @ =0x00003f42
movs r0, 0x50
bl SetGpuReg
- ldr r0, _080E13B4 @ =gUnknown_2022978
+ ldr r0, _080E13B4 @ =gBattle_BG1_X
ldrh r5, [r0]
- ldr r0, _080E13B8 @ =gUnknown_202297A
+ ldr r0, _080E13B8 @ =gBattle_BG1_Y
b _080E13CE
.align 2, 0
_080E13A4: .4byte gUnknown_2037F1B
_080E13A8: .4byte gUnknown_2037F02
_080E13AC: .4byte 0x04000014
_080E13B0: .4byte 0x00003f42
-_080E13B4: .4byte gUnknown_2022978
-_080E13B8: .4byte gUnknown_202297A
+_080E13B4: .4byte gBattle_BG1_X
+_080E13B8: .4byte gBattle_BG1_Y
_080E13BC:
ldr r0, _080E1434 @ =0x04000018
str r0, [sp]
ldr r1, _080E1438 @ =0x00003f44
movs r0, 0x50
bl SetGpuReg
- ldr r0, _080E143C @ =gUnknown_202297C
+ ldr r0, _080E143C @ =gBattle_BG2_X
ldrh r5, [r0]
- ldr r0, _080E1440 @ =gUnknown_202297E
+ ldr r0, _080E1440 @ =gBattle_BG2_Y
_080E13CE:
ldrh r3, [r0]
movs r7, 0
movs r2, 0
- ldr r6, _080E1444 @ =gUnknown_2038700
+ ldr r6, _080E1444 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r0, r6
@@ -6356,7 +6356,7 @@ _080E13DE:
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
ldr r0, _080E144C @ =sub_80E1450
str r0, [r4]
add sp, 0xC
@@ -6366,9 +6366,9 @@ _080E13DE:
.align 2, 0
_080E1434: .4byte 0x04000018
_080E1438: .4byte 0x00003f44
-_080E143C: .4byte gUnknown_202297C
-_080E1440: .4byte gUnknown_202297E
-_080E1444: .4byte gUnknown_2038700
+_080E143C: .4byte gBattle_BG2_X
+_080E1440: .4byte gBattle_BG2_Y
+_080E1444: .4byte gScanlineEffectRegBuffers
_080E1448: .4byte 0xa6600001
_080E144C: .4byte sub_80E1450
thumb_func_end sub_80E12F8
@@ -6394,20 +6394,20 @@ sub_80E1450: @ 80E1450
lsrs r0, 24
cmp r0, 0x1
bne _080E1490
- ldr r0, _080E1488 @ =gUnknown_2022978
+ ldr r0, _080E1488 @ =gBattle_BG1_X
ldrh r0, [r0]
str r0, [sp, 0x4]
- ldr r0, _080E148C @ =gUnknown_202297A
+ ldr r0, _080E148C @ =gBattle_BG1_Y
b _080E1498
.align 2, 0
_080E1484: .4byte gTasks
-_080E1488: .4byte gUnknown_2022978
-_080E148C: .4byte gUnknown_202297A
+_080E1488: .4byte gBattle_BG1_X
+_080E148C: .4byte gBattle_BG1_Y
_080E1490:
- ldr r0, _080E14B0 @ =gUnknown_202297C
+ ldr r0, _080E14B0 @ =gBattle_BG2_X
ldrh r0, [r0]
str r0, [sp, 0x4]
- ldr r0, _080E14B4 @ =gUnknown_202297E
+ ldr r0, _080E14B4 @ =gBattle_BG2_Y
_080E1498:
ldrh r0, [r0]
str r0, [sp, 0x8]
@@ -6423,8 +6423,8 @@ _080E14A6:
beq _080E14C6
b _080E16F4
.align 2, 0
-_080E14B0: .4byte gUnknown_202297C
-_080E14B4: .4byte gUnknown_202297E
+_080E14B0: .4byte gBattle_BG2_X
+_080E14B4: .4byte gBattle_BG2_Y
_080E14B8:
cmp r0, 0x2
bne _080E14BE
@@ -6480,7 +6480,7 @@ _080E14C6:
ldrsh r0, [r6, r3]
cmp r1, r0
ble _080E15E6
- ldr r0, _080E163C @ =gUnknown_2039600
+ ldr r0, _080E163C @ =gScanlineEffect
mov r10, r0
ldr r1, [sp, 0x4]
lsls r0, r1, 16
@@ -6501,7 +6501,7 @@ _080E1536:
subs r0, r1
lsls r0, 7
adds r2, r0
- ldr r0, _080E1640 @ =gUnknown_2038700
+ ldr r0, _080E1640 @ =gScanlineEffectRegBuffers
adds r2, r0
lsls r4, 16
asrs r4, 16
@@ -6519,7 +6519,7 @@ _080E1536:
subs r0, r1
lsls r0, 7
adds r3, r0
- ldr r1, _080E1640 @ =gUnknown_2038700
+ ldr r1, _080E1640 @ =gScanlineEffectRegBuffers
adds r3, r1
lsls r1, r7, 16
asrs r1, 16
@@ -6529,7 +6529,7 @@ _080E1536:
lsls r2, r7, 16
asrs r2, 16
lsls r0, r2, 1
- ldr r7, _080E1644 @ =gUnknown_825E074
+ ldr r7, _080E1644 @ =gSineTable
adds r0, r7
ldrh r0, [r0]
lsls r0, 16
@@ -6583,7 +6583,7 @@ _080E15E6:
lsls r1, r2, 17
cmp r1, 0
blt _080E1612
- ldr r4, _080E1640 @ =gUnknown_2038700
+ ldr r4, _080E1640 @ =gScanlineEffectRegBuffers
ldr r7, [sp, 0x4]
lsls r0, r7, 16
asrs r0, 16
@@ -6625,9 +6625,9 @@ _080E1612:
strh r0, [r6, 0xE]
b _080E1652
.align 2, 0
-_080E163C: .4byte gUnknown_2039600
-_080E1640: .4byte gUnknown_2038700
-_080E1644: .4byte gUnknown_825E074
+_080E163C: .4byte gScanlineEffect
+_080E1640: .4byte gScanlineEffectRegBuffers
+_080E1644: .4byte gSineTable
_080E1648: .4byte 0xffff0000
_080E164C:
ldrh r0, [r6, 0x10]
@@ -6667,14 +6667,14 @@ _080E1684:
asrs r0, 16
cmp r0, 0xC
ble _080E16F4
- ldr r1, _080E16A0 @ =gUnknown_2039600
+ ldr r1, _080E16A0 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0
strh r0, [r6, 0xC]
b _080E16E6
.align 2, 0
-_080E16A0: .4byte gUnknown_2039600
+_080E16A0: .4byte gScanlineEffect
_080E16A4:
ldrh r0, [r6, 0xC]
adds r0, 0x1
@@ -9427,7 +9427,7 @@ _080E2B80:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r3, _080E2BBC @ =gUnknown_825E074
+ ldr r3, _080E2BBC @ =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
@@ -9448,7 +9448,7 @@ _080E2B80:
_080E2BB8:
b _080E2CAE
.align 2, 0
-_080E2BBC: .4byte gUnknown_825E074
+_080E2BBC: .4byte gSineTable
_080E2BC0:
ldrh r0, [r4, 0x30]
adds r0, 0x1
@@ -9471,7 +9471,7 @@ _080E2BD2:
ldrh r0, [r4, 0x22]
subs r0, r1
strh r0, [r4, 0x22]
- ldr r3, _080E2C0C @ =gUnknown_825E074
+ ldr r3, _080E2C0C @ =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
@@ -9490,7 +9490,7 @@ _080E2BD2:
bne _080E2CDC
b _080E2CB2
.align 2, 0
-_080E2C0C: .4byte gUnknown_825E074
+_080E2C0C: .4byte gSineTable
_080E2C10:
ldrh r2, [r4, 0x30]
adds r2, 0x1
@@ -9502,7 +9502,7 @@ _080E2C10:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r3, _080E2C68 @ =gUnknown_825E074
+ ldr r3, _080E2C68 @ =gSineTable
movs r0, 0x30
ldrsh r1, [r4, r0]
lsls r0, r1, 2
@@ -9537,7 +9537,7 @@ _080E2C5C:
bne _080E2CDC
b _080E2CAE
.align 2, 0
-_080E2C68: .4byte gUnknown_825E074
+_080E2C68: .4byte gSineTable
_080E2C6C: .4byte 0x000003ff
_080E2C70: .4byte 0xfffffc00
_080E2C74:
@@ -10738,7 +10738,7 @@ _080E3588:
adds r1, 0x4
movs r5, 0
strh r1, [r4, 0x30]
- ldr r2, _080E35C4 @ =gUnknown_825E074
+ ldr r2, _080E35C4 @ =gSineTable
movs r3, 0x30
ldrsh r0, [r4, r3]
lsls r0, 1
@@ -10763,13 +10763,13 @@ _080E3588:
strh r5, [r4, 0x26]
b _080E361C
.align 2, 0
-_080E35C4: .4byte gUnknown_825E074
+_080E35C4: .4byte gSineTable
_080E35C8:
ldrh r1, [r4, 0x30]
adds r1, 0x6
movs r3, 0
strh r1, [r4, 0x30]
- ldr r2, _080E35F4 @ =gUnknown_825E074
+ ldr r2, _080E35F4 @ =gSineTable
movs r5, 0x30
ldrsh r0, [r4, r5]
lsls r0, 1
@@ -10787,7 +10787,7 @@ _080E35C8:
strh r3, [r4, 0x26]
b _080E361C
.align 2, 0
-_080E35F4: .4byte gUnknown_825E074
+_080E35F4: .4byte gSineTable
_080E35F8:
ldrh r0, [r4, 0x30]
adds r0, 0x1
@@ -12322,7 +12322,7 @@ _080E4206:
adds r1, r0
lsls r1, 2
adds r1, r5
- ldr r3, _080E427C @ =gUnknown_825E074
+ ldr r3, _080E427C @ =gSineTable
movs r6, 0x1E
ldrsh r0, [r4, r6]
lsls r0, 1
@@ -12368,7 +12368,7 @@ _080E4206:
b _080E42C0
.align 2, 0
_080E4278: .4byte gSprites
-_080E427C: .4byte gUnknown_825E074
+_080E427C: .4byte gSineTable
_080E4280:
ldrh r0, [r4, 0x1E]
adds r0, 0x8
@@ -12382,7 +12382,7 @@ _080E4280:
adds r1, r0
lsls r1, 2
adds r1, r3
- ldr r2, _080E42CC @ =gUnknown_825E074
+ ldr r2, _080E42CC @ =gSineTable
movs r5, 0x1E
ldrsh r0, [r4, r5]
lsls r0, 1
@@ -12409,7 +12409,7 @@ _080E42C0:
b _080E42D6
.align 2, 0
_080E42C8: .4byte gSprites
-_080E42CC: .4byte gUnknown_825E074
+_080E42CC: .4byte gSineTable
_080E42D0:
adds r0, r2, 0
bl DestroyAnimVisualTask
diff --git a/asm/battle_anim_80EEC0C.s b/asm/battle_anim_80EEC0C.s
index 82179f2e0..dbcc63093 100644
--- a/asm/battle_anim_80EEC0C.s
+++ b/asm/battle_anim_80EEC0C.s
@@ -168,12 +168,12 @@ sub_80EEC0C: @ 80EEC0C
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
- ldr r1, _080EEDE4 @ =gUnknown_2022978
+ ldr r1, _080EEDE4 @ =gBattle_BG1_X
ldrh r0, [r7, 0x20]
negs r0, r0
adds r0, 0x20
strh r0, [r1]
- ldr r1, _080EEDE8 @ =gUnknown_202297A
+ ldr r1, _080EEDE8 @ =gBattle_BG1_Y
ldrh r0, [r7, 0x22]
negs r0, r0
subs r0, 0x20
@@ -215,8 +215,8 @@ _080EEDD4: .4byte SpriteCallbackDummy
_080EEDD8: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_tilemap
_080EEDDC: .4byte gFile_graphics_battle_anims_masks_unknown_D2EC24_sheet
_080EEDE0: .4byte gFile_graphics_battle_anims_masks_cure_bubbles_palette
-_080EEDE4: .4byte gUnknown_2022978
-_080EEDE8: .4byte gUnknown_202297A
+_080EEDE4: .4byte gBattle_BG1_X
+_080EEDE8: .4byte gBattle_BG1_Y
_080EEDEC: .4byte gTasks
_080EEDF0: .4byte sub_80EEDF4
thumb_func_end sub_80EEC0C
@@ -241,7 +241,7 @@ sub_80EEDF4: @ 80EEDF4
adds r1, r0
movs r3, 0
strh r1, [r5, 0x22]
- ldr r2, _080EEE44 @ =gUnknown_202297A
+ ldr r2, _080EEE44 @ =gBattle_BG1_Y
lsls r0, r1, 16
lsrs r0, 24
ldrh r4, [r2]
@@ -262,7 +262,7 @@ sub_80EEDF4: @ 80EEDF4
.align 2, 0
_080EEE3C: .4byte gUnknown_2037F1A
_080EEE40: .4byte gTasks
-_080EEE44: .4byte gUnknown_202297A
+_080EEE44: .4byte gBattle_BG1_Y
_080EEE48:
cmp r0, 0x2
beq _080EEE9C
diff --git a/asm/battle_controller_link_opponent.s b/asm/battle_controller_link_opponent.s
index d5a9b8ae6..e2c52a592 100644
--- a/asm/battle_controller_link_opponent.s
+++ b/asm/battle_controller_link_opponent.s
@@ -4952,10 +4952,10 @@ _0803CF40:
thumb_func_start sub_803CF50
sub_803CF50: @ 803CF50
push {r4,lr}
- ldr r0, _0803CF84 @ =gUnknown_2022974
+ ldr r0, _0803CF84 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _0803CF88 @ =gUnknown_2022976
+ ldr r0, _0803CF88 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _0803CF8C @ =gActiveBattler
ldrb r4, [r0]
@@ -4974,8 +4974,8 @@ sub_803CF50: @ 803CF50
bl sub_80D87BC
b _0803CFA0
.align 2, 0
-_0803CF84: .4byte gUnknown_2022974
-_0803CF88: .4byte gUnknown_2022976
+_0803CF84: .4byte gBattle_BG0_X
+_0803CF88: .4byte gBattle_BG0_Y
_0803CF8C: .4byte gActiveBattler
_0803CF90: .4byte gUnknown_2022BC6
_0803CF94: .4byte gDisplayedStringBattle
diff --git a/asm/battle_controller_link_partner.s b/asm/battle_controller_link_partner.s
index 7480e8b12..0087859c4 100644
--- a/asm/battle_controller_link_partner.s
+++ b/asm/battle_controller_link_partner.s
@@ -4573,10 +4573,10 @@ _080D67BC:
thumb_func_start sub_80D67CC
sub_80D67CC: @ 80D67CC
push {r4,lr}
- ldr r0, _080D6800 @ =gUnknown_2022974
+ ldr r0, _080D6800 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080D6804 @ =gUnknown_2022976
+ ldr r0, _080D6804 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _080D6808 @ =gActiveBattler
ldrb r4, [r0]
@@ -4595,8 +4595,8 @@ sub_80D67CC: @ 80D67CC
bl sub_80D87BC
b _080D681C
.align 2, 0
-_080D6800: .4byte gUnknown_2022974
-_080D6804: .4byte gUnknown_2022976
+_080D6800: .4byte gBattle_BG0_X
+_080D6804: .4byte gBattle_BG0_Y
_080D6808: .4byte gActiveBattler
_080D680C: .4byte gUnknown_2022BC6
_080D6810: .4byte gDisplayedStringBattle
diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s
index 91931bb63..7ccd33f5d 100644
--- a/asm/battle_controller_oak.s
+++ b/asm/battle_controller_oak.s
@@ -5776,10 +5776,10 @@ _080EA520:
thumb_func_start sub_80EA52C
sub_80EA52C: @ 80EA52C
push {r4,lr}
- ldr r0, _080EA55C @ =gUnknown_2022974
+ ldr r0, _080EA55C @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080EA560 @ =gUnknown_2022976
+ ldr r0, _080EA560 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _080EA564 @ =gActiveBattler
ldrb r0, [r0]
@@ -5799,8 +5799,8 @@ sub_80EA52C: @ 80EA52C
bl WallyBufferExecCompleted
b _080EA65A
.align 2, 0
-_080EA55C: .4byte gUnknown_2022974
-_080EA560: .4byte gUnknown_2022976
+_080EA55C: .4byte gBattle_BG0_X
+_080EA560: .4byte gBattle_BG0_Y
_080EA564: .4byte gActiveBattler
_080EA568: .4byte gUnknown_2022BC6
_080EA56C: .4byte gBattleTypeFlags
@@ -5951,9 +5951,9 @@ sub_80EA690: @ 80EA690
lsrs r1, r0, 24
cmp r1, 0
bne _080EA6EA
- ldr r0, _080EA6C4 @ =gUnknown_2022974
+ ldr r0, _080EA6C4 @ =gBattle_BG0_X
strh r1, [r0]
- ldr r1, _080EA6C8 @ =gUnknown_2022976
+ ldr r1, _080EA6C8 @ =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
ldr r0, _080EA6CC @ =gBattleTypeFlags
@@ -5970,8 +5970,8 @@ sub_80EA690: @ 80EA690
ldr r1, _080EA6D8 @ =sub_80E763C
b _080EA6E8
.align 2, 0
-_080EA6C4: .4byte gUnknown_2022974
-_080EA6C8: .4byte gUnknown_2022976
+_080EA6C4: .4byte gBattle_BG0_X
+_080EA6C8: .4byte gBattle_BG0_Y
_080EA6CC: .4byte gBattleTypeFlags
_080EA6D0: .4byte gUnknown_3004FE0
_080EA6D4: .4byte gActiveBattler
@@ -6074,9 +6074,9 @@ sub_80EA798: @ 80EA798
lsrs r1, r0, 24
cmp r1, 0
bne _080EA7C2
- ldr r0, _080EA7C8 @ =gUnknown_2022974
+ ldr r0, _080EA7C8 @ =gBattle_BG0_X
strh r1, [r0]
- ldr r1, _080EA7CC @ =gUnknown_2022976
+ ldr r1, _080EA7CC @ =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -6092,8 +6092,8 @@ _080EA7C2:
pop {r0}
bx r0
.align 2, 0
-_080EA7C8: .4byte gUnknown_2022974
-_080EA7CC: .4byte gUnknown_2022976
+_080EA7C8: .4byte gBattle_BG0_X
+_080EA7CC: .4byte gBattle_BG0_Y
_080EA7D0: .4byte gUnknown_3004FE0
_080EA7D4: .4byte gActiveBattler
_080EA7D8: .4byte sub_80E7988
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 0405efdf1..12185d562 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -5113,10 +5113,10 @@ _080384AC:
thumb_func_start sub_80384BC
sub_80384BC: @ 80384BC
push {r4,lr}
- ldr r0, _080384F0 @ =gUnknown_2022974
+ ldr r0, _080384F0 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080384F4 @ =gUnknown_2022976
+ ldr r0, _080384F4 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _080384F8 @ =gActiveBattler
ldrb r0, [r0]
@@ -5135,8 +5135,8 @@ sub_80384BC: @ 80384BC
bl sub_80D87BC
b _0803850C
.align 2, 0
-_080384F0: .4byte gUnknown_2022974
-_080384F4: .4byte gUnknown_2022976
+_080384F0: .4byte gBattle_BG0_X
+_080384F4: .4byte gBattle_BG0_Y
_080384F8: .4byte gActiveBattler
_080384FC: .4byte gUnknown_2022BC6
_08038500: .4byte gDisplayedStringBattle
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index d83245653..9a2ef0f7d 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -1354,10 +1354,10 @@ _0802EDF6:
beq _0802EE18
movs r0, 0x5
bl PlaySE
- ldr r1, _0802EF44 @ =gUnknown_2022974
+ ldr r1, _0802EF44 @ =gBattle_BG0_X
movs r0, 0
strh r0, [r1]
- ldr r1, _0802EF48 @ =gUnknown_2022976
+ ldr r1, _0802EF48 @ =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -1505,8 +1505,8 @@ _0802EF36:
bx r1
.align 2, 0
_0802EF40: .4byte gMain
-_0802EF44: .4byte gUnknown_2022974
-_0802EF48: .4byte gUnknown_2022976
+_0802EF44: .4byte gBattle_BG0_X
+_0802EF48: .4byte gBattle_BG0_Y
_0802EF4C: .4byte gUnknown_2023FFC
_0802EF50: .4byte gActiveBattler
_0802EF54: .4byte gUnknown_3004FF8
@@ -4051,19 +4051,19 @@ _08030428:
bne _0803051C
cmp r6, 0
bne _0803044C
- ldr r1, _08030444 @ =gUnknown_2022978
+ ldr r1, _08030444 @ =gBattle_BG1_X
ldrh r0, [r1]
strh r0, [r5, 0x1C]
- ldr r2, _08030448 @ =gUnknown_202297A
+ ldr r2, _08030448 @ =gBattle_BG1_Y
b _08030454
.align 2, 0
-_08030444: .4byte gUnknown_2022978
-_08030448: .4byte gUnknown_202297A
+_08030444: .4byte gBattle_BG1_X
+_08030448: .4byte gBattle_BG1_Y
_0803044C:
- ldr r1, _08030474 @ =gUnknown_202297C
+ ldr r1, _08030474 @ =gBattle_BG2_X
ldrh r0, [r1]
strh r0, [r5, 0x1C]
- ldr r2, _08030478 @ =gUnknown_202297E
+ ldr r2, _08030478 @ =gBattle_BG2_Y
_08030454:
ldrh r0, [r2]
strh r0, [r5, 0x1A]
@@ -4081,8 +4081,8 @@ _08030454:
strh r0, [r2]
b _080304E0
.align 2, 0
-_08030474: .4byte gUnknown_202297C
-_08030478: .4byte gUnknown_202297E
+_08030474: .4byte gBattle_BG2_X
+_08030478: .4byte gBattle_BG2_Y
_0803047C:
adds r0, r7, 0
adds r1, r6, 0
@@ -4138,19 +4138,19 @@ _080304E0:
_080304E8:
cmp r6, 0
bne _08030500
- ldr r1, _080304F8 @ =gUnknown_2022978
+ ldr r1, _080304F8 @ =gBattle_BG1_X
ldrh r0, [r5, 0x1C]
strh r0, [r1]
- ldr r1, _080304FC @ =gUnknown_202297A
+ ldr r1, _080304FC @ =gBattle_BG1_Y
b _08030508
.align 2, 0
-_080304F8: .4byte gUnknown_2022978
-_080304FC: .4byte gUnknown_202297A
+_080304F8: .4byte gBattle_BG1_X
+_080304FC: .4byte gBattle_BG1_Y
_08030500:
- ldr r1, _08030528 @ =gUnknown_202297C
+ ldr r1, _08030528 @ =gBattle_BG2_X
ldrh r0, [r5, 0x1C]
strh r0, [r1]
- ldr r1, _0803052C @ =gUnknown_202297E
+ ldr r1, _0803052C @ =gBattle_BG2_Y
_08030508:
ldrh r0, [r5, 0x1A]
strh r0, [r1]
@@ -4169,8 +4169,8 @@ _0803051C:
pop {r0}
bx r0
.align 2, 0
-_08030528: .4byte gUnknown_202297C
-_0803052C: .4byte gUnknown_202297E
+_08030528: .4byte gBattle_BG2_X
+_0803052C: .4byte gBattle_BG2_Y
_08030530: .4byte gUnknown_3004FE0
_08030534: .4byte sub_802FE94
thumb_func_end sub_80303A8
@@ -4964,10 +4964,10 @@ PrintLinkStandbyMsg: @ 8030B5C
ands r0, r1
cmp r0, 0
beq _08030B7C
- ldr r0, _08030B84 @ =gUnknown_2022974
+ ldr r0, _08030B84 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _08030B88 @ =gUnknown_2022976
+ ldr r0, _08030B88 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _08030B8C @ =gUnknown_83FE714
movs r1, 0
@@ -4977,8 +4977,8 @@ _08030B7C:
bx r0
.align 2, 0
_08030B80: .4byte gBattleTypeFlags
-_08030B84: .4byte gUnknown_2022974
-_08030B88: .4byte gUnknown_2022976
+_08030B84: .4byte gBattle_BG0_X
+_08030B88: .4byte gBattle_BG0_Y
_08030B8C: .4byte gUnknown_83FE714
thumb_func_end PrintLinkStandbyMsg
@@ -8747,10 +8747,10 @@ _08032AEC:
thumb_func_start sub_8032AFC
sub_8032AFC: @ 8032AFC
push {r4,lr}
- ldr r0, _08032B30 @ =gUnknown_2022974
+ ldr r0, _08032B30 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _08032B34 @ =gUnknown_2022976
+ ldr r0, _08032B34 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _08032B38 @ =gActiveBattler
ldrb r4, [r0]
@@ -8769,8 +8769,8 @@ sub_8032AFC: @ 8032AFC
bl sub_80D87BC
b _08032B4C
.align 2, 0
-_08032B30: .4byte gUnknown_2022974
-_08032B34: .4byte gUnknown_2022976
+_08032B30: .4byte gBattle_BG0_X
+_08032B34: .4byte gBattle_BG0_Y
_08032B38: .4byte gActiveBattler
_08032B3C: .4byte gUnknown_2022BC6
_08032B40: .4byte gDisplayedStringBattle
@@ -8824,9 +8824,9 @@ sub_8032B94: @ 8032B94
lsrs r1, r0, 24
cmp r1, 0
bne _08032BBA
- ldr r0, _08032BC0 @ =gUnknown_2022974
+ ldr r0, _08032BC0 @ =gBattle_BG0_X
strh r1, [r0]
- ldr r1, _08032BC4 @ =gUnknown_2022976
+ ldr r1, _08032BC4 @ =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, _08032BC8 @ =gUnknown_3004FE0
@@ -8840,8 +8840,8 @@ _08032BBA:
pop {r0}
bx r0
.align 2, 0
-_08032BC0: .4byte gUnknown_2022974
-_08032BC4: .4byte gUnknown_2022976
+_08032BC0: .4byte gBattle_BG0_X
+_08032BC4: .4byte gBattle_BG0_Y
_08032BC8: .4byte gUnknown_3004FE0
_08032BCC: .4byte gActiveBattler
_08032BD0: .4byte sub_802E438
@@ -8910,9 +8910,9 @@ sub_8032C4C: @ 8032C4C
lsrs r1, r0, 24
cmp r1, 0
bne _08032C76
- ldr r0, _08032C7C @ =gUnknown_2022974
+ ldr r0, _08032C7C @ =gBattle_BG0_X
strh r1, [r0]
- ldr r1, _08032C80 @ =gUnknown_2022976
+ ldr r1, _08032C80 @ =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -8928,8 +8928,8 @@ _08032C76:
pop {r0}
bx r0
.align 2, 0
-_08032C7C: .4byte gUnknown_2022974
-_08032C80: .4byte gUnknown_2022976
+_08032C7C: .4byte gBattle_BG0_X
+_08032C80: .4byte gBattle_BG0_Y
_08032C84: .4byte gUnknown_3004FE0
_08032C88: .4byte gActiveBattler
_08032C8C: .4byte sub_802EA10
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s
index 58fad294a..957a6f658 100644
--- a/asm/battle_controller_pokedude.s
+++ b/asm/battle_controller_pokedude.s
@@ -5055,10 +5055,10 @@ _08158A7C:
thumb_func_start sub_8158A88
sub_8158A88: @ 8158A88
push {r4,lr}
- ldr r0, _08158ABC @ =gUnknown_2022974
+ ldr r0, _08158ABC @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _08158AC0 @ =gUnknown_2022976
+ ldr r0, _08158AC0 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _08158AC4 @ =gActiveBattler
ldrb r4, [r0]
@@ -5077,8 +5077,8 @@ sub_8158A88: @ 8158A88
bl sub_80D87BC
b _08158AD8
.align 2, 0
-_08158ABC: .4byte gUnknown_2022974
-_08158AC0: .4byte gUnknown_2022976
+_08158ABC: .4byte gBattle_BG0_X
+_08158AC0: .4byte gBattle_BG0_Y
_08158AC4: .4byte gActiveBattler
_08158AC8: .4byte gUnknown_2022BC6
_08158ACC: .4byte gDisplayedStringBattle
@@ -5132,9 +5132,9 @@ sub_8158B20: @ 8158B20
lsrs r1, r0, 24
cmp r1, 0
bne _08158B46
- ldr r0, _08158B4C @ =gUnknown_2022974
+ ldr r0, _08158B4C @ =gBattle_BG0_X
strh r1, [r0]
- ldr r1, _08158B50 @ =gUnknown_2022976
+ ldr r1, _08158B50 @ =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, _08158B54 @ =gUnknown_3004FE0
@@ -5148,8 +5148,8 @@ _08158B46:
pop {r0}
bx r0
.align 2, 0
-_08158B4C: .4byte gUnknown_2022974
-_08158B50: .4byte gUnknown_2022976
+_08158B4C: .4byte gBattle_BG0_X
+_08158B50: .4byte gBattle_BG0_Y
_08158B54: .4byte gUnknown_3004FE0
_08158B58: .4byte gActiveBattler
_08158B5C: .4byte sub_8156140
@@ -5238,9 +5238,9 @@ sub_8158C04: @ 8158C04
lsrs r1, r0, 24
cmp r1, 0
bne _08158C2E
- ldr r0, _08158C34 @ =gUnknown_2022974
+ ldr r0, _08158C34 @ =gBattle_BG0_X
strh r1, [r0]
- ldr r1, _08158C38 @ =gUnknown_2022976
+ ldr r1, _08158C38 @ =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -5256,8 +5256,8 @@ _08158C2E:
pop {r0}
bx r0
.align 2, 0
-_08158C34: .4byte gUnknown_2022974
-_08158C38: .4byte gUnknown_2022976
+_08158C34: .4byte gBattle_BG0_X
+_08158C38: .4byte gBattle_BG0_Y
_08158C3C: .4byte gUnknown_3004FE0
_08158C40: .4byte gActiveBattler
_08158C44: .4byte sub_81564E4
@@ -7250,7 +7250,7 @@ _08159C14:
lsls r0, 2
adds r0, r5
ldr r1, [r0]
- ldr r0, _08159C40 @ =gUnknown_2022976
+ ldr r0, _08159C40 @ =gBattle_BG0_Y
ldrh r0, [r0]
strb r0, [r1, 0x4]
bl sub_80EB30C
@@ -7260,9 +7260,9 @@ _08159C14:
b _08159C9E
.align 2, 0
_08159C3C: .4byte gPaletteFade
-_08159C40: .4byte gUnknown_2022976
+_08159C40: .4byte gBattle_BG0_Y
_08159C44:
- ldr r1, _08159C5C @ =gUnknown_2022976
+ ldr r1, _08159C5C @ =gBattle_BG0_Y
movs r0, 0
strh r0, [r1]
bl sub_8159EF0
@@ -7272,7 +7272,7 @@ _08159C44:
bl sub_80D87BC
b _08159C94
.align 2, 0
-_08159C5C: .4byte gUnknown_2022976
+_08159C5C: .4byte gBattle_BG0_Y
_08159C60: .4byte gDisplayedStringBattle
_08159C64:
movs r0, 0x18
@@ -7331,7 +7331,7 @@ _08159CB4:
ldr r0, _08159CFC @ =0x00000137
bl PlayBGM
_08159CD8:
- ldr r1, _08159D00 @ =gUnknown_2022976
+ ldr r1, _08159D00 @ =gBattle_BG0_Y
ldrb r0, [r4]
lsls r0, 2
adds r0, r5
@@ -7348,7 +7348,7 @@ _08159CEE:
.align 2, 0
_08159CF8: .4byte gPaletteFade
_08159CFC: .4byte 0x00000137
-_08159D00: .4byte gUnknown_2022976
+_08159D00: .4byte gBattle_BG0_Y
thumb_func_end sub_8159BA8
thumb_func_start sub_8159D04
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index 405d4c45b..e8edcb7fd 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -849,10 +849,10 @@ sub_80DDB94: @ 80DDB94
thumb_func_start sub_80DDBA0
sub_80DDBA0: @ 80DDBA0
push {r4,lr}
- ldr r0, _080DDBD4 @ =gUnknown_2022974
+ ldr r0, _080DDBD4 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080DDBD8 @ =gUnknown_2022976
+ ldr r0, _080DDBD8 @ =gBattle_BG0_Y
strh r1, [r0]
ldr r0, _080DDBDC @ =gActiveBattler
ldrb r4, [r0]
@@ -871,8 +871,8 @@ sub_80DDBA0: @ 80DDBA0
bl sub_80D87BC
b _080DDBF0
.align 2, 0
-_080DDBD4: .4byte gUnknown_2022974
-_080DDBD8: .4byte gUnknown_2022976
+_080DDBD4: .4byte gBattle_BG0_X
+_080DDBD8: .4byte gBattle_BG0_Y
_080DDBDC: .4byte gActiveBattler
_080DDBE0: .4byte gUnknown_2022BC6
_080DDBE4: .4byte gDisplayedStringBattle
@@ -926,9 +926,9 @@ sub_80DDC38: @ 80DDC38
lsrs r1, r0, 24
cmp r1, 0
bne _080DDC5E
- ldr r0, _080DDC64 @ =gUnknown_2022974
+ ldr r0, _080DDC64 @ =gBattle_BG0_X
strh r1, [r0]
- ldr r1, _080DDC68 @ =gUnknown_2022976
+ ldr r1, _080DDC68 @ =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, _080DDC6C @ =gUnknown_3004FE0
@@ -942,8 +942,8 @@ _080DDC5E:
pop {r0}
bx r0
.align 2, 0
-_080DDC64: .4byte gUnknown_2022974
-_080DDC68: .4byte gUnknown_2022976
+_080DDC64: .4byte gBattle_BG0_X
+_080DDC68: .4byte gBattle_BG0_Y
_080DDC6C: .4byte gUnknown_3004FE0
_080DDC70: .4byte gActiveBattler
_080DDC74: .4byte HandleInputChooseAction_0
diff --git a/asm/battle_message.s b/asm/battle_message.s
index 183306f97..9505d542b 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -2863,7 +2863,7 @@ _080D894A:
movs r3, 0x1
b _080D8960
_080D8958:
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r3, r0, 24
_080D8960:
diff --git a/asm/battle_records.s b/asm/battle_records.s
index 392161676..c407a988a 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -471,7 +471,7 @@ _080CD604: .4byte 0x81000800
thumb_func_start sub_80CD608
sub_80CD608: @ 80CD608
push {lr}
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl dp13_810BB8C
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
index ed0e6cb50..b01533468 100644
--- a/asm/battle_script_commands.s
+++ b/asm/battle_script_commands.s
@@ -17358,7 +17358,7 @@ _08026244:
.4byte _08026380
.4byte _080263C4
_0802626C:
- ldr r1, _08026290 @ =gUnknown_202297E
+ ldr r1, _08026290 @ =gBattle_BG2_Y
movs r0, 0x60
strh r0, [r1]
movs r0, 0x2
@@ -17373,7 +17373,7 @@ _0802626C:
strb r0, [r1, 0x1E]
b _080263F6
.align 2, 0
-_08026290: .4byte gUnknown_202297E
+_08026290: .4byte gBattle_BG2_Y
_08026294: .4byte gBattleScripting
_08026298:
bl sub_80264D0
@@ -17389,10 +17389,10 @@ _080262A4:
.align 2, 0
_080262AC: .4byte gBattleScripting
_080262B0:
- ldr r1, _080262F8 @ =gUnknown_2022978
+ ldr r1, _080262F8 @ =gBattle_BG1_X
movs r0, 0
strh r0, [r1]
- ldr r1, _080262FC @ =gUnknown_202297A
+ ldr r1, _080262FC @ =gBattle_BG1_Y
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
@@ -17421,8 +17421,8 @@ _080262B0:
strb r0, [r1, 0x1E]
b _080263F6
.align 2, 0
-_080262F8: .4byte gUnknown_2022978
-_080262FC: .4byte gUnknown_202297A
+_080262F8: .4byte gBattle_BG1_X
+_080262FC: .4byte gBattle_BG1_Y
_08026300: .4byte gBattleScripting
_08026304:
bl sub_8026404
@@ -17438,11 +17438,11 @@ _08026318:
lsrs r1, r0, 24
cmp r1, 0
bne _080263F6
- ldr r0, _0802632C @ =gUnknown_202297A
+ ldr r0, _0802632C @ =gBattle_BG1_Y
strh r1, [r0]
b _0802636E
.align 2, 0
-_0802632C: .4byte gUnknown_202297A
+_0802632C: .4byte gBattle_BG1_Y
_08026330:
ldr r0, _0802634C @ =gMain
ldrh r0, [r0, 0x2E]
@@ -17601,10 +17601,10 @@ _0802647C: .4byte gPlayerParty
thumb_func_start sub_8026480
sub_8026480: @ 8026480
push {lr}
- ldr r1, _080264C0 @ =gUnknown_202297E
+ ldr r1, _080264C0 @ =gBattle_BG2_Y
movs r0, 0
strh r0, [r1]
- ldr r1, _080264C4 @ =gUnknown_202297C
+ ldr r1, _080264C4 @ =gBattle_BG2_X
movs r2, 0xD0
lsls r2, 1
adds r0, r2, 0
@@ -17627,8 +17627,8 @@ sub_8026480: @ 8026480
pop {r0}
bx r0
.align 2, 0
-_080264C0: .4byte gUnknown_202297E
-_080264C4: .4byte gUnknown_202297C
+_080264C0: .4byte gBattle_BG2_Y
+_080264C4: .4byte gBattle_BG2_X
_080264C8: .4byte gUnknown_82506D0
_080264CC: .4byte gUnknown_82506F0
thumb_func_end sub_8026480
@@ -17643,7 +17643,7 @@ sub_80264D0: @ 80264D0
movs r0, 0x1
b _0802651A
_080264E0:
- ldr r4, _080264F0 @ =gUnknown_202297C
+ ldr r4, _080264F0 @ =gBattle_BG2_X
ldrh r1, [r4]
movs r5, 0x80
lsls r5, 2
@@ -17652,7 +17652,7 @@ _080264E0:
movs r0, 0
b _0802651A
.align 2, 0
-_080264F0: .4byte gUnknown_202297C
+_080264F0: .4byte gBattle_BG2_X
_080264F4:
movs r0, 0xD0
lsls r0, 1
@@ -17823,7 +17823,7 @@ _08026624:
thumb_func_start sub_8026648
sub_8026648: @ 8026648
push {lr}
- ldr r0, _0802665C @ =gUnknown_202297C
+ ldr r0, _0802665C @ =gBattle_BG2_X
ldrh r1, [r0]
movs r3, 0xD0
lsls r3, 1
@@ -17833,7 +17833,7 @@ sub_8026648: @ 8026648
movs r0, 0
b _08026684
.align 2, 0
-_0802665C: .4byte gUnknown_202297C
+_0802665C: .4byte gBattle_BG2_X
_08026660:
ldrh r0, [r2]
adds r1, r0, 0
@@ -17930,7 +17930,7 @@ PutMonIconOnLvlUpBox: @ 8026688
adds r1, r2
movs r0, 0
strh r0, [r1, 0x2E]
- ldr r0, _08026750 @ =gUnknown_202297C
+ ldr r0, _08026750 @ =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r1, 0x30]
add sp, 0x10
@@ -17948,14 +17948,14 @@ _08026740: .4byte 0xd75a0000
_08026744: .4byte 0x0000d75a
_08026748: .4byte gUnknown_82507C8
_0802674C: .4byte gSprites
-_08026750: .4byte gUnknown_202297C
+_08026750: .4byte gBattle_BG2_X
thumb_func_end PutMonIconOnLvlUpBox
thumb_func_start SpriteCB_MonIconOnLvlUpBox
SpriteCB_MonIconOnLvlUpBox: @ 8026754
push {r4,lr}
adds r2, r0, 0
- ldr r0, _08026770 @ =gUnknown_202297C
+ ldr r0, _08026770 @ =gBattle_BG2_X
ldrh r1, [r2, 0x30]
ldrh r0, [r0]
subs r1, r0
@@ -17967,7 +17967,7 @@ SpriteCB_MonIconOnLvlUpBox: @ 8026754
strh r0, [r2, 0x2E]
b _08026790
.align 2, 0
-_08026770: .4byte gUnknown_202297C
+_08026770: .4byte gBattle_BG2_X
_08026774:
movs r1, 0x2E
ldrsh r0, [r2, r1]
@@ -32507,14 +32507,14 @@ _0802DAC4: .4byte sub_80116F4
_0802DAC8:
bl sub_800F34C
bl LoadBattleTextboxAndBackground
- ldr r1, _0802DADC @ =gUnknown_2022980
+ ldr r1, _0802DADC @ =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
b _0802DB34
.align 2, 0
-_0802DADC: .4byte gUnknown_2022980
+_0802DADC: .4byte gBattle_BG3_X
_0802DAE0:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index ae1c7fa08..195d67c8c 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -463,7 +463,7 @@ sub_80D0C0C: @ 80D0C0C
sub sp, 0x8
adds r5, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
movs r0, 0x1
negs r0, r0
movs r4, 0
@@ -472,7 +472,7 @@ sub_80D0C0C: @ 80D0C0C
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
- ldr r0, _080D0C68 @ =gUnknown_2038E80
+ ldr r0, _080D0C68 @ =gScanlineEffectRegBuffers + 0x780
ldr r1, _080D0C6C @ =gUnknown_2039A2C
ldr r1, [r1]
movs r2, 0x14
@@ -498,7 +498,7 @@ sub_80D0C0C: @ 80D0C0C
pop {r1}
bx r1
.align 2, 0
-_080D0C68: .4byte gUnknown_2038E80
+_080D0C68: .4byte gScanlineEffectRegBuffers + 0x780
_080D0C6C: .4byte gUnknown_2039A2C
_080D0C70: .4byte sub_80D0CF0
_080D0C74: .4byte sub_80D0D28
@@ -519,7 +519,7 @@ sub_80D0C78: @ 80D0C78
ldrh r1, [r0, 0xC]
adds r1, 0x8
strh r1, [r0, 0xC]
- ldr r3, _080D0CE4 @ =gUnknown_2038700
+ ldr r3, _080D0CE4 @ =gScanlineEffectRegBuffers
ldr r1, [r4]
movs r2, 0x14
ldrsh r1, [r1, r2]
@@ -557,7 +557,7 @@ _080D0CCA:
bx r1
.align 2, 0
_080D0CE0: .4byte gUnknown_2039A2C
-_080D0CE4: .4byte gUnknown_2038700
+_080D0CE4: .4byte gScanlineEffectRegBuffers
_080D0CE8: .4byte gPaletteFade
_080D0CEC: .4byte sub_80D0BD4
thumb_func_end sub_80D0C78
@@ -572,7 +572,7 @@ sub_80D0CF0: @ 80D0CF0
cmp r0, 0
beq _080D0D14
ldr r1, _080D0D1C @ =0x040000d4
- ldr r0, _080D0D20 @ =gUnknown_2038700
+ ldr r0, _080D0D20 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -587,13 +587,13 @@ _080D0D14:
.align 2, 0
_080D0D18: .4byte gUnknown_2039A2C
_080D0D1C: .4byte 0x040000d4
-_080D0D20: .4byte gUnknown_2038700
+_080D0D20: .4byte gScanlineEffectRegBuffers
_080D0D24: .4byte 0x800000a0
thumb_func_end sub_80D0CF0
thumb_func_start sub_80D0D28
sub_80D0D28: @ 80D0D28
- ldr r1, _080D0D48 @ =gUnknown_2038700
+ ldr r1, _080D0D48 @ =gScanlineEffectRegBuffers
ldr r0, _080D0D4C @ =0x04000006
ldrh r0, [r0]
lsls r0, 1
@@ -610,7 +610,7 @@ sub_80D0D28: @ 80D0D28
strh r1, [r0]
bx lr
.align 2, 0
-_080D0D48: .4byte gUnknown_2038700
+_080D0D48: .4byte gScanlineEffectRegBuffers
_080D0D4C: .4byte 0x04000006
_080D0D50: .4byte 0x04000014
thumb_func_end sub_80D0D28
@@ -651,7 +651,7 @@ sub_80D0D8C: @ 80D0D8C
sub sp, 0x4
adds r4, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
movs r0, 0x1
negs r0, r0
movs r1, 0
@@ -662,7 +662,7 @@ sub_80D0D8C: @ 80D0D8C
bl BeginNormalPaletteFade
ldr r0, _080D0DE0 @ =gUnknown_2039A2C
ldr r1, [r0]
- ldr r0, _080D0DE4 @ =gUnknown_2038E80
+ ldr r0, _080D0DE4 @ =gScanlineEffectRegBuffers + 0x780
movs r2, 0x16
ldrsh r1, [r1, r2]
movs r2, 0xA0
@@ -684,7 +684,7 @@ sub_80D0D8C: @ 80D0D8C
bx r1
.align 2, 0
_080D0DE0: .4byte gUnknown_2039A2C
-_080D0DE4: .4byte gUnknown_2038E80
+_080D0DE4: .4byte gScanlineEffectRegBuffers + 0x780
_080D0DE8: .4byte sub_80D0E80
_080D0DEC: .4byte sub_80D0EB8
thumb_func_end sub_80D0D8C
@@ -715,7 +715,7 @@ _080D0E18:
lsrs r0, r4, 8
asrs r1, r7, 16
bl Sin
- ldr r1, _080D0E74 @ =gUnknown_2038700
+ ldr r1, _080D0E74 @ =gScanlineEffectRegBuffers
lsls r2, r5, 1
adds r2, r1
ldr r6, _080D0E70 @ =gUnknown_2039A2C
@@ -756,7 +756,7 @@ _080D0E5E:
bx r1
.align 2, 0
_080D0E70: .4byte gUnknown_2039A2C
-_080D0E74: .4byte gUnknown_2038700
+_080D0E74: .4byte gScanlineEffectRegBuffers
_080D0E78: .4byte gPaletteFade
_080D0E7C: .4byte sub_80D0D54
thumb_func_end sub_80D0DF0
@@ -771,7 +771,7 @@ sub_80D0E80: @ 80D0E80
cmp r0, 0
beq _080D0EA4
ldr r1, _080D0EAC @ =0x040000d4
- ldr r0, _080D0EB0 @ =gUnknown_2038700
+ ldr r0, _080D0EB0 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -786,13 +786,13 @@ _080D0EA4:
.align 2, 0
_080D0EA8: .4byte gUnknown_2039A2C
_080D0EAC: .4byte 0x040000d4
-_080D0EB0: .4byte gUnknown_2038700
+_080D0EB0: .4byte gScanlineEffectRegBuffers
_080D0EB4: .4byte 0x800000a0
thumb_func_end sub_80D0E80
thumb_func_start sub_80D0EB8
sub_80D0EB8: @ 80D0EB8
- ldr r1, _080D0ED8 @ =gUnknown_2038700
+ ldr r1, _080D0ED8 @ =gScanlineEffectRegBuffers
ldr r0, _080D0EDC @ =0x04000006
ldrh r0, [r0]
lsls r0, 1
@@ -809,7 +809,7 @@ sub_80D0EB8: @ 80D0EB8
strh r1, [r0]
bx lr
.align 2, 0
-_080D0ED8: .4byte gUnknown_2038700
+_080D0ED8: .4byte gScanlineEffectRegBuffers
_080D0EDC: .4byte 0x04000006
_080D0EE0: .4byte 0x04000016
thumb_func_end sub_80D0EB8
@@ -850,7 +850,7 @@ sub_80D0F1C: @ 80D0F1C
sub sp, 0xC
adds r4, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
movs r1, 0
movs r0, 0x10
strh r0, [r4, 0xA]
@@ -878,7 +878,7 @@ sub_80D0F1C: @ 80D0F1C
movs r1, 0
add r5, sp, 0x4
add r6, sp, 0x8
- ldr r3, _080D0FC0 @ =gUnknown_2038E80
+ ldr r3, _080D0FC0 @ =gScanlineEffectRegBuffers + 0x780
movs r2, 0xF0
_080D0F64:
lsls r0, r1, 1
@@ -921,7 +921,7 @@ _080D0F64:
.align 2, 0
_080D0FB8: .4byte gUnknown_2039A2C
_080D0FBC: .4byte 0x00003f41
-_080D0FC0: .4byte gUnknown_2038E80
+_080D0FC0: .4byte gScanlineEffectRegBuffers + 0x780
_080D0FC4: .4byte sub_80D1370
_080D0FC8: .4byte 0x01000400
_080D0FCC: .4byte gUnknown_83F87A0
@@ -943,7 +943,7 @@ sub_80D0FD4: @ 80D0FD4
movs r1, 0
ldr r0, [sp, 0x8]
mov r9, r0
- ldr r6, _080D1060 @ =gUnknown_2038700
+ ldr r6, _080D1060 @ =gScanlineEffectRegBuffers
mov r8, r6
movs r0, 0xF0
lsls r0, 8
@@ -1000,7 +1000,7 @@ _080D1000:
bx r1
.align 2, 0
_080D105C: .4byte gUnknown_83FA784
-_080D1060: .4byte gUnknown_2038700
+_080D1060: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D0FD4
thumb_func_start sub_80D1064
@@ -1053,7 +1053,7 @@ _080D10AE:
ldrh r5, [r3, 0x12]
adds r1, r5
strh r1, [r3, 0x12]
- ldr r0, _080D10F4 @ =gUnknown_2038700
+ ldr r0, _080D10F4 @ =gScanlineEffectRegBuffers
movs r5, 0x10
ldrsh r2, [r3, r5]
lsls r1, 16
@@ -1077,7 +1077,7 @@ _080D10AE:
.align 2, 0
_080D10EC: .4byte gUnknown_2039A2C
_080D10F0: .4byte 0xfffffe80
-_080D10F4: .4byte gUnknown_2038700
+_080D10F4: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D1064
thumb_func_start sub_80D10F8
@@ -1139,7 +1139,7 @@ _080D1160:
movs r0, 0
_080D1162:
strh r0, [r3, 0x12]
- ldr r0, _080D1194 @ =gUnknown_2038700
+ ldr r0, _080D1194 @ =gScanlineEffectRegBuffers
movs r1, 0x10
ldrsh r2, [r3, r1]
ldrh r1, [r3, 0x12]
@@ -1163,7 +1163,7 @@ _080D1162:
pop {r1}
bx r1
.align 2, 0
-_080D1194: .4byte gUnknown_2038700
+_080D1194: .4byte gScanlineEffectRegBuffers
_080D1198: .4byte gUnknown_2039A2C
thumb_func_end sub_80D10F8
@@ -1195,7 +1195,7 @@ _080D11C8: .4byte 0xfffffe80
_080D11CC:
strh r2, [r4, 0x12]
_080D11CE:
- ldr r0, _080D1218 @ =gUnknown_2038700
+ ldr r0, _080D1218 @ =gScanlineEffectRegBuffers
movs r3, 0x10
ldrsh r2, [r4, r3]
ldrh r1, [r4, 0x12]
@@ -1233,7 +1233,7 @@ _080D1202:
pop {r1}
bx r1
.align 2, 0
-_080D1218: .4byte gUnknown_2038700
+_080D1218: .4byte gScanlineEffectRegBuffers
_080D121C: .4byte gUnknown_2039A2C
thumb_func_end sub_80D119C
@@ -1272,7 +1272,7 @@ _080D1242:
bge _080D125E
strh r3, [r4, 0xA]
_080D125E:
- ldr r0, _080D12CC @ =gUnknown_2038700
+ ldr r0, _080D12CC @ =gScanlineEffectRegBuffers
movs r1, 0xA
ldrsh r3, [r4, r1]
movs r1, 0x78
@@ -1322,7 +1322,7 @@ _080D12AE:
.align 2, 0
_080D12C4: .4byte gUnknown_2039A2C
_080D12C8: .4byte 0x000007ff
-_080D12CC: .4byte gUnknown_2038700
+_080D12CC: .4byte gScanlineEffectRegBuffers
_080D12D0: .4byte 0x040000b0
_080D12D4: .4byte 0x0000c5ff
_080D12D8: .4byte 0x00007fff
@@ -1350,7 +1350,7 @@ sub_80D12E4: @ 80D12E4
cmp r0, 0
beq _080D131C
ldr r1, _080D1364 @ =0x040000d4
- ldr r0, _080D1368 @ =gUnknown_2038700
+ ldr r0, _080D1368 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -1389,7 +1389,7 @@ _080D1358: .4byte 0x0000c5ff
_080D135C: .4byte 0x00007fff
_080D1360: .4byte gUnknown_2039A2C
_080D1364: .4byte 0x040000d4
-_080D1368: .4byte gUnknown_2038700
+_080D1368: .4byte gScanlineEffectRegBuffers
_080D136C: .4byte 0x800000a0
thumb_func_end sub_80D12E4
@@ -1398,7 +1398,7 @@ sub_80D1370: @ 80D1370
push {lr}
bl sub_80D12E4
ldr r1, _080D138C @ =0x040000b0
- ldr r0, _080D1390 @ =gUnknown_2038E80
+ ldr r0, _080D1390 @ =gScanlineEffectRegBuffers + 0x780
str r0, [r1]
ldr r0, _080D1394 @ =0x04000010
str r0, [r1, 0x4]
@@ -1409,7 +1409,7 @@ sub_80D1370: @ 80D1370
bx r0
.align 2, 0
_080D138C: .4byte 0x040000b0
-_080D1390: .4byte gUnknown_2038E80
+_080D1390: .4byte gScanlineEffectRegBuffers + 0x780
_080D1394: .4byte 0x04000010
_080D1398: .4byte 0xa2400001
thumb_func_end sub_80D1370
@@ -1419,7 +1419,7 @@ sub_80D139C: @ 80D139C
push {lr}
bl sub_80D12E4
ldr r1, _080D13B8 @ =0x040000b0
- ldr r0, _080D13BC @ =gUnknown_2038E80
+ ldr r0, _080D13BC @ =gScanlineEffectRegBuffers + 0x780
str r0, [r1]
ldr r0, _080D13C0 @ =0x04000040
str r0, [r1, 0x4]
@@ -1430,7 +1430,7 @@ sub_80D139C: @ 80D139C
bx r0
.align 2, 0
_080D13B8: .4byte 0x040000b0
-_080D13BC: .4byte gUnknown_2038E80
+_080D13BC: .4byte gScanlineEffectRegBuffers + 0x780
_080D13C0: .4byte 0x04000040
_080D13C4: .4byte 0xa2400001
thumb_func_end sub_80D139C
@@ -1782,7 +1782,7 @@ sub_80D1670: @ 80D1670
push {r4,lr}
adds r4, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
ldr r0, _080D16C4 @ =gUnknown_2039A2C
ldr r1, [r0]
movs r0, 0
@@ -1794,7 +1794,7 @@ sub_80D1670: @ 80D1670
movs r0, 0xA0
strh r0, [r1, 0x8]
movs r1, 0
- ldr r3, _080D16CC @ =gUnknown_2038E80
+ ldr r3, _080D16CC @ =gScanlineEffectRegBuffers + 0x780
ldr r2, _080D16D0 @ =0x0000f3f4
_080D1696:
lsls r0, r1, 1
@@ -1821,7 +1821,7 @@ _080D1696:
.align 2, 0
_080D16C4: .4byte gUnknown_2039A2C
_080D16C8: .4byte 0x0000f0f1
-_080D16CC: .4byte gUnknown_2038E80
+_080D16CC: .4byte gScanlineEffectRegBuffers + 0x780
_080D16D0: .4byte 0x0000f3f4
_080D16D4: .4byte sub_80D1ABC
thumb_func_end sub_80D1670
@@ -1850,7 +1850,7 @@ sub_80D16D8: @ 80D16D8
movs r1, 0x78
movs r2, 0x50
bl sub_80D4088
- ldr r5, _080D1764 @ =gUnknown_2038700
+ ldr r5, _080D1764 @ =gScanlineEffectRegBuffers
_080D1708:
ldr r4, _080D1760 @ =gUnknown_2039A2C
ldr r0, [r4]
@@ -1898,7 +1898,7 @@ _080D174C:
bx r1
.align 2, 0
_080D1760: .4byte gUnknown_2039A2C
-_080D1764: .4byte gUnknown_2038700
+_080D1764: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D16D8
thumb_func_start sub_80D1768
@@ -1947,7 +1947,7 @@ _080D17A6:
ldrh r1, [r3, 0x28]
movs r4, 0xF0
_080D17BE:
- ldr r6, _080D17F0 @ =gUnknown_2038700
+ ldr r6, _080D17F0 @ =gScanlineEffectRegBuffers
movs r0, 0x2A
ldrsh r2, [r3, r0]
lsls r2, 1
@@ -1970,7 +1970,7 @@ _080D17BE:
b _080D17A6
.align 2, 0
_080D17EC: .4byte gUnknown_2039A2C
-_080D17F0: .4byte gUnknown_2038700
+_080D17F0: .4byte gScanlineEffectRegBuffers
_080D17F4:
ldr r1, [r7]
ldrh r0, [r1, 0x2E]
@@ -2051,7 +2051,7 @@ sub_80D185C: @ 80D185C
movs r1, 0x78
movs r2, 0x50
bl sub_80D4088
- ldr r5, _080D18E0 @ =gUnknown_2038700
+ ldr r5, _080D18E0 @ =gScanlineEffectRegBuffers
_080D188A:
ldr r4, _080D18DC @ =gUnknown_2039A2C
ldr r0, [r4]
@@ -2096,7 +2096,7 @@ _080D18C8:
bx r1
.align 2, 0
_080D18DC: .4byte gUnknown_2039A2C
-_080D18E0: .4byte gUnknown_2038700
+_080D18E0: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D185C
thumb_func_start sub_80D18E4
@@ -2129,7 +2129,7 @@ sub_80D18E4: @ 80D18E4
movs r2, 0x50
movs r3, 0
bl sub_80D4088
- ldr r7, _080D1970 @ =gUnknown_2038700
+ ldr r7, _080D1970 @ =gScanlineEffectRegBuffers
mov r10, r7
ldr r0, _080D196C @ =gUnknown_2039A2C
mov r8, r0
@@ -2171,7 +2171,7 @@ _080D1948:
b _080D1928
.align 2, 0
_080D196C: .4byte gUnknown_2039A2C
-_080D1970: .4byte gUnknown_2038700
+_080D1970: .4byte gScanlineEffectRegBuffers
_080D1974:
mov r0, r8
ldr r2, [r0]
@@ -2193,7 +2193,7 @@ _080D1992:
ldrsh r0, [r2, r4]
cmp r0, r3
ble _080D19BC
- ldr r6, _080D19DC @ =gUnknown_2038700
+ ldr r6, _080D19DC @ =gScanlineEffectRegBuffers
adds r3, r1, 0
ldr r5, _080D19E0 @ =gUnknown_2039A2C
_080D19A0:
@@ -2228,7 +2228,7 @@ _080D19BC:
pop {r1}
bx r1
.align 2, 0
-_080D19DC: .4byte gUnknown_2038700
+_080D19DC: .4byte gScanlineEffectRegBuffers
_080D19E0: .4byte gUnknown_2039A2C
thumb_func_end sub_80D18E4
@@ -2254,7 +2254,7 @@ sub_80D19E4: @ 80D19E4
movs r1, 0x78
movs r2, 0x50
bl sub_80D4088
- ldr r6, _080D1A78 @ =gUnknown_2038700
+ ldr r6, _080D1A78 @ =gScanlineEffectRegBuffers
_080D1A10:
movs r2, 0x78
ldr r5, _080D1A74 @ =gUnknown_2039A2C
@@ -2308,7 +2308,7 @@ _080D1A5E:
bx r1
.align 2, 0
_080D1A74: .4byte gUnknown_2039A2C
-_080D1A78: .4byte gUnknown_2038700
+_080D1A78: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D19E4
thumb_func_start sub_80D1A7C
@@ -2360,7 +2360,7 @@ sub_80D1ABC: @ 80D1ABC
cmp r0, 0
beq _080D1AF4
ldr r1, _080D1B44 @ =0x040000d4
- ldr r0, _080D1B48 @ =gUnknown_2038700
+ ldr r0, _080D1B48 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -2382,7 +2382,7 @@ _080D1AF4:
ldrh r1, [r0, 0x8]
movs r0, 0x44
bl SetGpuReg
- ldr r4, _080D1B48 @ =gUnknown_2038700
+ ldr r4, _080D1B48 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r4, r0
@@ -2404,7 +2404,7 @@ _080D1B38: .4byte 0x0000c5ff
_080D1B3C: .4byte 0x00007fff
_080D1B40: .4byte gUnknown_2039A2C
_080D1B44: .4byte 0x040000d4
-_080D1B48: .4byte gUnknown_2038700
+_080D1B48: .4byte gScanlineEffectRegBuffers
_080D1B4C: .4byte 0x800000a0
_080D1B50: .4byte 0x04000040
_080D1B54: .4byte 0xa2400001
@@ -2445,9 +2445,9 @@ sub_80D1B90: @ 80D1B90
push {r4,r5,lr}
adds r5, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
movs r2, 0
- ldr r4, _080D1BD8 @ =gUnknown_2038E80
+ ldr r4, _080D1BD8 @ =gScanlineEffectRegBuffers + 0x780
ldr r3, _080D1BDC @ =gUnknown_2039A2C
_080D1BA2:
lsls r1, r2, 1
@@ -2474,7 +2474,7 @@ _080D1BA2:
pop {r1}
bx r1
.align 2, 0
-_080D1BD8: .4byte gUnknown_2038E80
+_080D1BD8: .4byte gScanlineEffectRegBuffers + 0x780
_080D1BDC: .4byte gUnknown_2039A2C
_080D1BE0: .4byte sub_80D1CC8
_080D1BE4: .4byte sub_80D1D00
@@ -2519,7 +2519,7 @@ _080D1C28:
lsrs r0, r4, 8
asrs r1, r7, 16
bl Sin
- ldr r1, _080D1CBC @ =gUnknown_2038700
+ ldr r1, _080D1CBC @ =gScanlineEffectRegBuffers
lsls r2, r5, 1
adds r2, r1
ldr r1, _080D1CB4 @ =gUnknown_2039A2C
@@ -2587,7 +2587,7 @@ _080D1C9A:
.align 2, 0
_080D1CB4: .4byte gUnknown_2039A2C
_080D1CB8: .4byte 0x1fff0000
-_080D1CBC: .4byte gUnknown_2038700
+_080D1CBC: .4byte gScanlineEffectRegBuffers
_080D1CC0: .4byte gPaletteFade
_080D1CC4: .4byte sub_80D1B58
thumb_func_end sub_80D1BE8
@@ -2602,7 +2602,7 @@ sub_80D1CC8: @ 80D1CC8
cmp r0, 0
beq _080D1CEC
ldr r1, _080D1CF4 @ =0x040000d4
- ldr r0, _080D1CF8 @ =gUnknown_2038700
+ ldr r0, _080D1CF8 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -2617,13 +2617,13 @@ _080D1CEC:
.align 2, 0
_080D1CF0: .4byte gUnknown_2039A2C
_080D1CF4: .4byte 0x040000d4
-_080D1CF8: .4byte gUnknown_2038700
+_080D1CF8: .4byte gScanlineEffectRegBuffers
_080D1CFC: .4byte 0x800000a0
thumb_func_end sub_80D1CC8
thumb_func_start sub_80D1D00
sub_80D1D00: @ 80D1D00
- ldr r1, _080D1D20 @ =gUnknown_2038700
+ ldr r1, _080D1D20 @ =gScanlineEffectRegBuffers
ldr r0, _080D1D24 @ =0x04000006
ldrh r0, [r0]
lsls r0, 1
@@ -2640,7 +2640,7 @@ sub_80D1D00: @ 80D1D00
strh r1, [r0]
bx lr
.align 2, 0
-_080D1D20: .4byte gUnknown_2038700
+_080D1D20: .4byte gScanlineEffectRegBuffers
_080D1D24: .4byte 0x04000006
_080D1D28: .4byte 0x04000016
thumb_func_end sub_80D1D00
@@ -2680,7 +2680,7 @@ sub_80D1D64: @ 80D1D64
push {r4,lr}
adds r4, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
ldr r0, _080D1DB0 @ =gUnknown_2039A2C
ldr r1, [r0]
movs r2, 0
@@ -2692,7 +2692,7 @@ sub_80D1D64: @ 80D1D64
movs r0, 0xA0
strh r0, [r1, 0x8]
movs r1, 0
- ldr r3, _080D1DB4 @ =gUnknown_2038E80
+ ldr r3, _080D1DB4 @ =gScanlineEffectRegBuffers + 0x780
movs r2, 0xF2
_080D1D8A:
lsls r0, r1, 1
@@ -2714,7 +2714,7 @@ _080D1D8A:
bx r1
.align 2, 0
_080D1DB0: .4byte gUnknown_2039A2C
-_080D1DB4: .4byte gUnknown_2038E80
+_080D1DB4: .4byte gScanlineEffectRegBuffers + 0x780
_080D1DB8: .4byte sub_80D1E98
thumb_func_end sub_80D1D64
@@ -2729,7 +2729,7 @@ sub_80D1DBC: @ 80D1DBC
ldrb r0, [r1]
movs r0, 0
strb r0, [r1]
- ldr r7, _080D1E54 @ =gUnknown_2038700
+ ldr r7, _080D1E54 @ =gScanlineEffectRegBuffers
ldrh r0, [r4, 0xC]
ldrb r5, [r4, 0xC]
adds r0, 0x10
@@ -2799,7 +2799,7 @@ _080D1E36:
bx r1
.align 2, 0
_080D1E50: .4byte gUnknown_2039A2C
-_080D1E54: .4byte gUnknown_2038700
+_080D1E54: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D1DBC
thumb_func_start sub_80D1E58
@@ -2851,7 +2851,7 @@ sub_80D1E98: @ 80D1E98
cmp r0, 0
beq _080D1ED0
ldr r1, _080D1F14 @ =0x040000d4
- ldr r0, _080D1F18 @ =gUnknown_2038700
+ ldr r0, _080D1F18 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -2873,7 +2873,7 @@ _080D1ED0:
ldrh r1, [r0, 0x8]
movs r0, 0x44
bl SetGpuReg
- ldr r0, _080D1F20 @ =gUnknown_2038E80
+ ldr r0, _080D1F20 @ =gScanlineEffectRegBuffers + 0x780
str r0, [r4]
ldr r0, _080D1F24 @ =0x04000040
str r0, [r4, 0x4]
@@ -2889,9 +2889,9 @@ _080D1F08: .4byte 0x0000c5ff
_080D1F0C: .4byte 0x00007fff
_080D1F10: .4byte gUnknown_2039A2C
_080D1F14: .4byte 0x040000d4
-_080D1F18: .4byte gUnknown_2038700
+_080D1F18: .4byte gScanlineEffectRegBuffers
_080D1F1C: .4byte 0x800000a0
-_080D1F20: .4byte gUnknown_2038E80
+_080D1F20: .4byte gScanlineEffectRegBuffers + 0x780
_080D1F24: .4byte 0x04000040
_080D1F28: .4byte 0xa2400001
thumb_func_end sub_80D1E98
@@ -2946,7 +2946,7 @@ sub_80D1F64: @ 80D1F64
mov r10, r0
movs r1, 0xA0
lsls r1, 17
- ldr r4, _080D1FD8 @ =gUnknown_2038E80
+ ldr r4, _080D1FD8 @ =gScanlineEffectRegBuffers + 0x780
ldr r3, _080D1FDC @ =0x000003bf
movs r2, 0x78
_080D1F8E:
@@ -2988,7 +2988,7 @@ _080D1FAE:
adds r0, r1, 0
b _080D1FE6
.align 2, 0
-_080D1FD8: .4byte gUnknown_2038E80
+_080D1FD8: .4byte gScanlineEffectRegBuffers + 0x780
_080D1FDC: .4byte 0x000003bf
_080D1FE0:
lsls r0, r3, 16
@@ -3104,7 +3104,7 @@ _080D2092:
lsls r4, 1
adds r0, r2, r4
lsls r0, 1
- ldr r1, _080D20E8 @ =gUnknown_2038E80
+ ldr r1, _080D20E8 @ =gScanlineEffectRegBuffers + 0x780
adds r0, r1
strh r7, [r0]
lsls r0, r5, 16
@@ -3131,7 +3131,7 @@ _080D20C4:
subs r0, r2, 0x1
b _080D20FC
.align 2, 0
-_080D20E8: .4byte gUnknown_2038E80
+_080D20E8: .4byte gScanlineEffectRegBuffers + 0x780
_080D20EC:
lsls r0, r3, 16
asrs r0, 16
@@ -3150,7 +3150,7 @@ _080D2100:
cmp r1, 0
bge _080D212C
asrs r2, r6, 16
- ldr r3, _080D2128 @ =gUnknown_2038E80
+ ldr r3, _080D2128 @ =gScanlineEffectRegBuffers + 0x780
_080D210C:
asrs r1, r0, 16
adds r0, r2, r1
@@ -3166,12 +3166,12 @@ _080D210C:
blt _080D210C
b _080D21F8
.align 2, 0
-_080D2128: .4byte gUnknown_2038E80
+_080D2128: .4byte gScanlineEffectRegBuffers + 0x780
_080D212C:
cmp r1, 0
ble _080D21F8
asrs r2, r6, 16
- ldr r3, _080D2154 @ =gUnknown_2038E80
+ ldr r3, _080D2154 @ =gScanlineEffectRegBuffers + 0x780
_080D2134:
lsls r1, r5, 16
asrs r1, 16
@@ -3189,13 +3189,13 @@ _080D2134:
bgt _080D2134
b _080D21F8
.align 2, 0
-_080D2154: .4byte gUnknown_2038E80
+_080D2154: .4byte gScanlineEffectRegBuffers + 0x780
_080D2158:
movs r1, 0xF0
lsls r1, 1
adds r0, r2, r1
lsls r0, 1
- ldr r2, _080D2190 @ =gUnknown_2038E80
+ ldr r2, _080D2190 @ =gScanlineEffectRegBuffers + 0x780
adds r0, r2
strh r7, [r0]
lsls r0, r5, 16
@@ -3220,7 +3220,7 @@ _080D2158:
subs r0, r2, 0x1
b _080D21A4
.align 2, 0
-_080D2190: .4byte gUnknown_2038E80
+_080D2190: .4byte gScanlineEffectRegBuffers + 0x780
_080D2194:
lsls r0, r3, 16
asrs r0, 16
@@ -3239,7 +3239,7 @@ _080D21A8:
cmp r1, 0
bge _080D21D4
asrs r2, r6, 16
- ldr r3, _080D21D0 @ =gUnknown_2038E80
+ ldr r3, _080D21D0 @ =gScanlineEffectRegBuffers + 0x780
_080D21B4:
asrs r1, r0, 16
adds r0, r2, r1
@@ -3255,12 +3255,12 @@ _080D21B4:
blt _080D21B4
b _080D21F8
.align 2, 0
-_080D21D0: .4byte gUnknown_2038E80
+_080D21D0: .4byte gScanlineEffectRegBuffers + 0x780
_080D21D4:
cmp r1, 0
ble _080D21F8
asrs r2, r6, 16
- ldr r3, _080D2270 @ =gUnknown_2038E80
+ ldr r3, _080D2270 @ =gScanlineEffectRegBuffers + 0x780
_080D21DC:
lsls r1, r5, 16
asrs r1, 16
@@ -3307,7 +3307,7 @@ _080D221A:
_080D222C:
movs r2, 0
mov r9, r2
- ldr r4, _080D2270 @ =gUnknown_2038E80
+ ldr r4, _080D2270 @ =gScanlineEffectRegBuffers + 0x780
movs r5, 0xA0
lsls r5, 1
_080D2236:
@@ -3341,7 +3341,7 @@ _080D2236:
ble _080D2236
b _080D251C
.align 2, 0
-_080D2270: .4byte gUnknown_2038E80
+_080D2270: .4byte gScanlineEffectRegBuffers + 0x780
_080D2274:
ldr r1, [sp, 0xC]
asrs r4, r1, 16
@@ -3396,7 +3396,7 @@ _080D22CA:
adds r0, r5, r0
movs r3, 0
ldrsh r4, [r0, r3]
- ldr r6, _080D2324 @ =gUnknown_2038E80
+ ldr r6, _080D2324 @ =gScanlineEffectRegBuffers + 0x780
_080D22D4:
ldr r0, _080D2328 @ =gUnknown_2039A2C
ldr r5, [r0]
@@ -3437,7 +3437,7 @@ _080D22D4:
b _080D2334
.align 2, 0
_080D2320: .4byte gUnknown_83FA444
-_080D2324: .4byte gUnknown_2038E80
+_080D2324: .4byte gScanlineEffectRegBuffers + 0x780
_080D2328: .4byte gUnknown_2039A2C
_080D232C:
ldrh r0, [r3]
@@ -3474,7 +3474,7 @@ _080D2360:
adds r0, r5, r0
movs r3, 0
ldrsh r4, [r0, r3]
- ldr r6, _080D23C0 @ =gUnknown_2038E80
+ ldr r6, _080D23C0 @ =gScanlineEffectRegBuffers + 0x780
_080D236A:
ldr r0, _080D23C4 @ =gUnknown_2039A2C
ldr r3, [r0]
@@ -3519,7 +3519,7 @@ _080D23A6:
b _080D24DA
.align 2, 0
_080D23BC: .4byte gUnknown_83FA444
-_080D23C0: .4byte gUnknown_2038E80
+_080D23C0: .4byte gScanlineEffectRegBuffers + 0x780
_080D23C4: .4byte gUnknown_2039A2C
_080D23C8: .4byte 0xffff0000
_080D23CC:
@@ -3539,7 +3539,7 @@ _080D23DA:
adds r0, r5, r0
movs r6, 0
ldrsh r4, [r0, r6]
- ldr r6, _080D2440 @ =gUnknown_2038E80
+ ldr r6, _080D2440 @ =gScanlineEffectRegBuffers + 0x780
_080D23EC:
ldr r0, _080D2444 @ =gUnknown_2039A2C
ldr r5, [r0]
@@ -3581,7 +3581,7 @@ _080D23EC:
.align 2, 0
_080D2438: .4byte 0x0000ffb1
_080D243C: .4byte gUnknown_83FA444
-_080D2440: .4byte gUnknown_2038E80
+_080D2440: .4byte gScanlineEffectRegBuffers + 0x780
_080D2444: .4byte gUnknown_2039A2C
_080D2448:
ldrh r0, [r3]
@@ -3619,7 +3619,7 @@ _080D2474:
ldrsh r4, [r0, r3]
ldr r6, _080D2534 @ =gUnknown_2039A2C
mov r8, r6
- ldr r6, _080D2538 @ =gUnknown_2038E80
+ ldr r6, _080D2538 @ =gScanlineEffectRegBuffers + 0x780
_080D248A:
mov r0, r8
ldr r3, [r0]
@@ -3665,7 +3665,7 @@ _080D24C6:
_080D24DA:
movs r4, 0
mov r9, r4
- ldr r4, _080D2538 @ =gUnknown_2038E80
+ ldr r4, _080D2538 @ =gScanlineEffectRegBuffers + 0x780
movs r5, 0xA0
lsls r5, 1
_080D24E4:
@@ -3710,7 +3710,7 @@ _080D251C:
_080D252C: .4byte 0x0000ffb1
_080D2530: .4byte gUnknown_83FA444
_080D2534: .4byte gUnknown_2039A2C
-_080D2538: .4byte gUnknown_2038E80
+_080D2538: .4byte gScanlineEffectRegBuffers + 0x780
thumb_func_end sub_80D1F64
thumb_func_start sub_80D253C
@@ -3718,7 +3718,7 @@ sub_80D253C: @ 80D253C
push {r4,r5,lr}
adds r5, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
ldr r0, _080D25A0 @ =gUnknown_2039A2C
ldr r1, [r0]
movs r4, 0
@@ -3741,7 +3741,7 @@ sub_80D253C: @ 80D253C
movs r2, 0x1
bl sub_80D1F64
ldr r1, _080D25B0 @ =0x040000d4
- ldr r0, _080D25B4 @ =gUnknown_2038E80
+ ldr r0, _080D25B4 @ =gScanlineEffectRegBuffers + 0x780
str r0, [r1]
ldr r2, _080D25B8 @ =0xfffff880
adds r0, r2
@@ -3766,7 +3766,7 @@ _080D25A4: .4byte 0x00007878
_080D25A8: .4byte 0x00003070
_080D25AC: .4byte 0x00001090
_080D25B0: .4byte 0x040000d4
-_080D25B4: .4byte gUnknown_2038E80
+_080D25B4: .4byte gScanlineEffectRegBuffers + 0x780
_080D25B8: .4byte 0xfffff880
_080D25BC: .4byte 0x80000140
_080D25C0: .4byte sub_80D2698
@@ -3919,7 +3919,7 @@ _080D26E4:
cmp r0, 0
beq _080D2700
ldr r1, _080D274C @ =0x040000d4
- ldr r0, _080D2750 @ =gUnknown_2038E80
+ ldr r0, _080D2750 @ =gScanlineEffectRegBuffers + 0x780
str r0, [r1]
ldr r6, _080D2754 @ =0xfffff880
adds r0, r6
@@ -3946,7 +3946,7 @@ _080D2700:
ldrh r1, [r0, 0xC]
movs r0, 0x46
bl SetGpuReg
- ldr r4, _080D275C @ =gUnknown_2038700
+ ldr r4, _080D275C @ =gScanlineEffectRegBuffers
ldrh r1, [r4]
movs r0, 0x40
bl SetGpuReg
@@ -3965,10 +3965,10 @@ _080D2746:
bx r0
.align 2, 0
_080D274C: .4byte 0x040000d4
-_080D2750: .4byte gUnknown_2038E80
+_080D2750: .4byte gScanlineEffectRegBuffers + 0x780
_080D2754: .4byte 0xfffff880
_080D2758: .4byte 0x80000140
-_080D275C: .4byte gUnknown_2038700
+_080D275C: .4byte gScanlineEffectRegBuffers
_080D2760: .4byte 0x04000040
_080D2764: .4byte 0xa6400001
thumb_func_end sub_80D2698
@@ -4103,7 +4103,7 @@ Phase2_Mugshot_Func1: @ 80D2840
push {r4,lr}
adds r4, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
adds r0, r4, 0
bl sub_80D2EA4
movs r0, 0
@@ -4121,7 +4121,7 @@ Phase2_Mugshot_Func1: @ 80D2840
movs r0, 0xA0
strh r0, [r1, 0x8]
movs r1, 0
- ldr r3, _080D289C @ =gUnknown_2038E80
+ ldr r3, _080D289C @ =gScanlineEffectRegBuffers + 0x780
ldr r2, _080D28A0 @ =0x0000f0f1
_080D2874:
lsls r0, r1, 1
@@ -4143,7 +4143,7 @@ _080D2874:
bx r1
.align 2, 0
_080D2898: .4byte gUnknown_2039A2C
-_080D289C: .4byte gUnknown_2038E80
+_080D289C: .4byte gScanlineEffectRegBuffers + 0x780
_080D28A0: .4byte 0x0000f0f1
_080D28A4: .4byte sub_80D2D50
thumb_func_end Phase2_Mugshot_Func1
@@ -4248,7 +4248,7 @@ sub_80D2968: @ 80D2968
ldrb r0, [r1]
movs r0, 0
strb r0, [r1]
- ldr r7, _080D2A50 @ =gUnknown_2038700
+ ldr r7, _080D2A50 @ =gScanlineEffectRegBuffers
ldrh r0, [r4, 0xA]
ldrb r5, [r4, 0xA]
adds r0, 0x10
@@ -4364,7 +4364,7 @@ _080D2A2A:
bx r1
.align 2, 0
_080D2A4C: .4byte gUnknown_2039A2C
-_080D2A50: .4byte gUnknown_2038700
+_080D2A50: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D2968
thumb_func_start sub_80D2A54
@@ -4376,7 +4376,7 @@ sub_80D2A54: @ 80D2A54
ldrb r0, [r1]
movs r0, 0
strb r0, [r1]
- ldr r1, _080D2ACC @ =gUnknown_2038700
+ ldr r1, _080D2ACC @ =gScanlineEffectRegBuffers
adds r5, r2, 0
movs r2, 0xF0
_080D2A68:
@@ -4425,7 +4425,7 @@ _080D2A68:
bx r1
.align 2, 0
_080D2AC8: .4byte gUnknown_2039A2C
-_080D2ACC: .4byte gUnknown_2038700
+_080D2ACC: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D2A54
thumb_func_start sub_80D2AD0
@@ -4499,7 +4499,7 @@ sub_80D2B0C: @ 80D2B0C
ands r0, r2
strh r0, [r1, 0xA]
ldrh r0, [r1, 0xA]
- ldr r4, _080D2BBC @ =gUnknown_2038700
+ ldr r4, _080D2BBC @ =gScanlineEffectRegBuffers
movs r5, 0xA0
lsls r5, 1
adds r0, r4, 0
@@ -4542,7 +4542,7 @@ _080D2BAC: .4byte gUnknown_2039A2C
_080D2BB0: .4byte 0x040000b0
_080D2BB4: .4byte 0x0000c5ff
_080D2BB8: .4byte 0x00007fff
-_080D2BBC: .4byte gUnknown_2038700
+_080D2BBC: .4byte gScanlineEffectRegBuffers
_080D2BC0: .4byte sub_80D2DEC
thumb_func_end sub_80D2B0C
@@ -4593,7 +4593,7 @@ _080D2BFE:
cmp r0, 0
blt _080D2C60
movs r7, 0x50
- ldr r5, _080D2C88 @ =gUnknown_2038700
+ ldr r5, _080D2C88 @ =gScanlineEffectRegBuffers
_080D2C1C:
lsls r0, r2, 16
asrs r3, r0, 16
@@ -4652,7 +4652,7 @@ _080D2C6E:
bx r1
.align 2, 0
_080D2C84: .4byte gUnknown_2039A2C
-_080D2C88: .4byte gUnknown_2038700
+_080D2C88: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D2BC4
thumb_func_start sub_80D2C8C
@@ -4697,7 +4697,7 @@ sub_80D2CC4: @ 80D2CC4
ldrh r0, [r4, 0xE]
adds r0, 0x1
strh r0, [r4, 0xE]
- ldr r0, _080D2D0C @ =gUnknown_2038700
+ ldr r0, _080D2D0C @ =gScanlineEffectRegBuffers
movs r2, 0xE
ldrsh r1, [r4, r2]
movs r2, 0xA0
@@ -4722,7 +4722,7 @@ _080D2CF4:
bx r1
.align 2, 0
_080D2D08: .4byte gUnknown_2039A2C
-_080D2D0C: .4byte gUnknown_2038700
+_080D2D0C: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D2CC4
thumb_func_start sub_80D2D10
@@ -4775,7 +4775,7 @@ sub_80D2D50: @ 80D2D50
cmp r0, 0
beq _080D2D88
ldr r1, _080D2DD4 @ =0x040000d4
- ldr r0, _080D2DD8 @ =gUnknown_2038700
+ ldr r0, _080D2DD8 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -4801,7 +4801,7 @@ _080D2D88:
ldrh r1, [r0, 0x8]
movs r0, 0x44
bl SetGpuReg
- ldr r0, _080D2DE0 @ =gUnknown_2038E80
+ ldr r0, _080D2DE0 @ =gScanlineEffectRegBuffers + 0x780
str r0, [r4]
ldr r0, _080D2DE4 @ =0x04000040
str r0, [r4, 0x4]
@@ -4817,9 +4817,9 @@ _080D2DC8: .4byte 0x0000c5ff
_080D2DCC: .4byte 0x00007fff
_080D2DD0: .4byte gUnknown_2039A2C
_080D2DD4: .4byte 0x040000d4
-_080D2DD8: .4byte gUnknown_2038700
+_080D2DD8: .4byte gScanlineEffectRegBuffers
_080D2DDC: .4byte 0x800000a0
-_080D2DE0: .4byte gUnknown_2038E80
+_080D2DE0: .4byte gScanlineEffectRegBuffers + 0x780
_080D2DE4: .4byte 0x04000040
_080D2DE8: .4byte 0xa2400001
thumb_func_end sub_80D2D50
@@ -4844,7 +4844,7 @@ sub_80D2DEC: @ 80D2DEC
cmp r0, 0
beq _080D2E24
ldr r1, _080D2E54 @ =0x040000d4
- ldr r0, _080D2E58 @ =gUnknown_2038700
+ ldr r0, _080D2E58 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r3, 0xF0
lsls r3, 3
@@ -4858,7 +4858,7 @@ _080D2E24:
ldrh r1, [r0, 0xE]
movs r0, 0x50
bl SetGpuReg
- ldr r0, _080D2E60 @ =gUnknown_2038E80
+ ldr r0, _080D2E60 @ =gScanlineEffectRegBuffers + 0x780
str r0, [r4]
ldr r0, _080D2E64 @ =0x04000054
str r0, [r4, 0x4]
@@ -4874,9 +4874,9 @@ _080D2E48: .4byte 0x0000c5ff
_080D2E4C: .4byte 0x00007fff
_080D2E50: .4byte gUnknown_2039A2C
_080D2E54: .4byte 0x040000d4
-_080D2E58: .4byte gUnknown_2038700
+_080D2E58: .4byte gScanlineEffectRegBuffers
_080D2E5C: .4byte 0x800000a0
-_080D2E60: .4byte gUnknown_2038E80
+_080D2E60: .4byte gScanlineEffectRegBuffers + 0x780
_080D2E64: .4byte 0x04000054
_080D2E68: .4byte 0xa2400001
thumb_func_end sub_80D2DEC
@@ -5321,7 +5321,7 @@ sub_80D31A4: @ 80D31A4
push {r4-r6,lr}
adds r5, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
movs r3, 0
movs r0, 0x80
lsls r0, 1
@@ -5335,7 +5335,7 @@ sub_80D31A4: @ 80D31A4
strh r3, [r1, 0x4]
movs r0, 0xA0
strh r0, [r1, 0x8]
- ldr r4, _080D3214 @ =gUnknown_2038E80
+ ldr r4, _080D3214 @ =gScanlineEffectRegBuffers + 0x780
adds r6, r2, 0
movs r2, 0xF0
_080D31D0:
@@ -5369,7 +5369,7 @@ _080D31D0:
bx r1
.align 2, 0
_080D3210: .4byte gUnknown_2039A2C
-_080D3214: .4byte gUnknown_2038E80
+_080D3214: .4byte gScanlineEffectRegBuffers + 0x780
_080D3218: .4byte sub_80D332C
_080D321C: .4byte sub_80D33C0
thumb_func_end sub_80D31A4
@@ -5417,7 +5417,7 @@ _080D325E:
strh r0, [r3, 0xE]
_080D326A:
movs r5, 0
- ldr r7, _080D32A4 @ =gUnknown_2038700
+ ldr r7, _080D32A4 @ =gScanlineEffectRegBuffers
movs r1, 0xA0
lsls r1, 1
adds r1, r7
@@ -5444,7 +5444,7 @@ _080D3278:
.align 2, 0
_080D329C: .4byte gUnknown_2039A2C
_080D32A0: .4byte 0x00000fff
-_080D32A4: .4byte gUnknown_2038700
+_080D32A4: .4byte gScanlineEffectRegBuffers
_080D32A8:
ldr r0, [r6]
ldrh r0, [r0, 0x14]
@@ -5545,7 +5545,7 @@ sub_80D332C: @ 80D332C
cmp r0, 0
beq _080D3382
ldr r1, _080D33A8 @ =0x040000d4
- ldr r0, _080D33AC @ =gUnknown_2038700
+ ldr r0, _080D33AC @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -5555,7 +5555,7 @@ sub_80D332C: @ 80D332C
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
_080D3382:
- ldr r0, _080D33B4 @ =gUnknown_2038FC0
+ ldr r0, _080D33B4 @ =gScanlineEffectRegBuffers + 0x8C0
str r0, [r5]
ldr r0, _080D33B8 @ =0x04000040
str r0, [r5, 0x4]
@@ -5571,16 +5571,16 @@ _080D339C: .4byte 0x0000c5ff
_080D33A0: .4byte 0x00007fff
_080D33A4: .4byte gUnknown_2039A2C
_080D33A8: .4byte 0x040000d4
-_080D33AC: .4byte gUnknown_2038700
+_080D33AC: .4byte gScanlineEffectRegBuffers
_080D33B0: .4byte 0x80000140
-_080D33B4: .4byte gUnknown_2038FC0
+_080D33B4: .4byte gScanlineEffectRegBuffers + 0x8C0
_080D33B8: .4byte 0x04000040
_080D33BC: .4byte 0xa2400001
thumb_func_end sub_80D332C
thumb_func_start sub_80D33C0
sub_80D33C0: @ 80D33C0
- ldr r1, _080D33E0 @ =gUnknown_2038700
+ ldr r1, _080D33E0 @ =gScanlineEffectRegBuffers
ldr r0, _080D33E4 @ =0x04000006
ldrh r0, [r0]
lsls r0, 1
@@ -5597,7 +5597,7 @@ sub_80D33C0: @ 80D33C0
strh r1, [r0]
bx lr
.align 2, 0
-_080D33E0: .4byte gUnknown_2038700
+_080D33E0: .4byte gScanlineEffectRegBuffers
_080D33E4: .4byte 0x04000006
_080D33E8: .4byte 0x04000014
thumb_func_end sub_80D33C0
@@ -5637,7 +5637,7 @@ sub_80D3424: @ 80D3424
push {r4,r5,lr}
adds r5, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
ldr r0, _080D348C @ =gUnknown_2039A2C
ldr r1, [r0]
movs r2, 0
@@ -5651,7 +5651,7 @@ sub_80D3424: @ 80D3424
movs r0, 0xA0
strh r0, [r1, 0x8]
movs r1, 0
- ldr r2, _080D3490 @ =gUnknown_2038E80
+ ldr r2, _080D3490 @ =gScanlineEffectRegBuffers + 0x780
movs r4, 0
movs r3, 0xF0
_080D3450:
@@ -5683,7 +5683,7 @@ _080D3450:
bx r1
.align 2, 0
_080D348C: .4byte gUnknown_2039A2C
-_080D3490: .4byte gUnknown_2038E80
+_080D3490: .4byte gScanlineEffectRegBuffers + 0x780
_080D3494: .4byte sub_80D36E0
_080D3498: .4byte sub_80D35F4
thumb_func_end sub_80D3424
@@ -5896,7 +5896,7 @@ sub_80D35F4: @ 80D35F4
cmp r0, 0
beq _080D3654
ldr r1, _080D3678 @ =0x040000d4
- ldr r0, _080D367C @ =gUnknown_2038700
+ ldr r0, _080D367C @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -5906,7 +5906,7 @@ sub_80D35F4: @ 80D35F4
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
_080D3654:
- ldr r0, _080D3684 @ =gUnknown_2038FC0
+ ldr r0, _080D3684 @ =gScanlineEffectRegBuffers + 0x8C0
str r0, [r5]
ldr r0, _080D3688 @ =0x04000040
str r0, [r5, 0x4]
@@ -5922,9 +5922,9 @@ _080D366C: .4byte 0x0000c5ff
_080D3670: .4byte 0x00007fff
_080D3674: .4byte gUnknown_2039A2C
_080D3678: .4byte 0x040000d4
-_080D367C: .4byte gUnknown_2038700
+_080D367C: .4byte gScanlineEffectRegBuffers
_080D3680: .4byte 0x80000140
-_080D3684: .4byte gUnknown_2038FC0
+_080D3684: .4byte gScanlineEffectRegBuffers + 0x8C0
_080D3688: .4byte 0x04000040
_080D368C: .4byte 0xa2400001
thumb_func_end sub_80D35F4
@@ -5981,7 +5981,7 @@ sub_80D36E0: @ 80D36E0
strh r0, [r1]
_080D36F8:
ldr r2, _080D3718 @ =0x04000054
- ldr r1, _080D371C @ =gUnknown_2038700
+ ldr r1, _080D371C @ =gScanlineEffectRegBuffers
mov r0, sp
ldrh r0, [r0]
lsls r0, 1
@@ -5997,7 +5997,7 @@ _080D36F8:
.align 2, 0
_080D3714: .4byte 0x04000006
_080D3718: .4byte 0x04000054
-_080D371C: .4byte gUnknown_2038700
+_080D371C: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_80D36E0
thumb_func_start sub_80D3720
@@ -6027,7 +6027,7 @@ _080D374C:
movs r2, 0x22
ldrsh r0, [r3, r2]
lsls r0, 1
- ldr r1, _080D3810 @ =gUnknown_2038700
+ ldr r1, _080D3810 @ =gScanlineEffectRegBuffers
adds r7, r0, r1
movs r2, 0xA0
lsls r2, 1
@@ -6131,7 +6131,7 @@ _080D380A:
pop {r0}
bx r0
.align 2, 0
-_080D3810: .4byte gUnknown_2038700
+_080D3810: .4byte gScanlineEffectRegBuffers
_080D3814: .4byte gUnknown_2039A2C
thumb_func_end sub_80D3720
@@ -6308,7 +6308,7 @@ sub_80D3960: @ 80D3960
push {r4,r5,lr}
adds r5, r0, 0
bl sub_80D3DD0
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
ldr r0, _080D39B8 @ =gUnknown_2039A2C
ldr r1, [r0]
movs r2, 0
@@ -6318,7 +6318,7 @@ sub_80D3960: @ 80D3960
movs r0, 0xA0
strh r0, [r1, 0x8]
movs r1, 0
- ldr r2, _080D39BC @ =gUnknown_2038700
+ ldr r2, _080D39BC @ =gScanlineEffectRegBuffers
movs r3, 0xF0
adds r4, r2, 0
_080D3984:
@@ -6347,7 +6347,7 @@ _080D3984:
bx r1
.align 2, 0
_080D39B8: .4byte gUnknown_2039A2C
-_080D39BC: .4byte gUnknown_2038700
+_080D39BC: .4byte gScanlineEffectRegBuffers
_080D39C0: .4byte sub_80D3BA4
thumb_func_end sub_80D3960
@@ -6428,10 +6428,10 @@ sub_80D3A40: @ 80D3A40
strb r0, [r1]
mov r8, r0
movs r7, 0
- ldr r0, _080D3A94 @ =gUnknown_2038700
+ ldr r0, _080D3A94 @ =gScanlineEffectRegBuffers
mov r9, r0
_080D3A5C:
- ldr r1, _080D3A94 @ =gUnknown_2038700
+ ldr r1, _080D3A94 @ =gScanlineEffectRegBuffers
ldr r0, _080D3A90 @ =gUnknown_2039A2C
ldr r2, [r0]
movs r3, 0x2A
@@ -6460,7 +6460,7 @@ _080D3A84:
b _080D3AB0
.align 2, 0
_080D3A90: .4byte gUnknown_2039A2C
-_080D3A94: .4byte gUnknown_2038700
+_080D3A94: .4byte gScanlineEffectRegBuffers
_080D3A98:
lsls r0, r5, 16
asrs r0, 16
@@ -6626,7 +6626,7 @@ sub_80D3BA4: @ 80D3BA4
cmp r0, 0
beq _080D3BDC
ldr r1, _080D3C2C @ =0x040000d4
- ldr r0, _080D3C30 @ =gUnknown_2038700
+ ldr r0, _080D3C30 @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -6648,7 +6648,7 @@ _080D3BDC:
ldrh r1, [r0, 0x8]
movs r0, 0x44
bl SetGpuReg
- ldr r4, _080D3C30 @ =gUnknown_2038700
+ ldr r4, _080D3C30 @ =gScanlineEffectRegBuffers
movs r0, 0xF0
lsls r0, 3
adds r4, r0
@@ -6670,7 +6670,7 @@ _080D3C20: .4byte 0x0000c5ff
_080D3C24: .4byte 0x00007fff
_080D3C28: .4byte gUnknown_2039A2C
_080D3C2C: .4byte 0x040000d4
-_080D3C30: .4byte gUnknown_2038700
+_080D3C30: .4byte gScanlineEffectRegBuffers
_080D3C34: .4byte 0x800000a0
_080D3C38: .4byte 0x04000040
_080D3C3C: .4byte 0xa2400001
diff --git a/asm/berry_fix_program.s b/asm/berry_fix_program.s
index ec40e1d98..e24fa6c3c 100644
--- a/asm/berry_fix_program.s
+++ b/asm/berry_fix_program.s
@@ -90,7 +90,7 @@ sub_815F74C: @ 815F74C
ldr r0, [r0, 0x8]
bl ResetSpriteData
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r0, _0815F7D4 @ =gUnknown_3005ECC
strb r4, [r0]
ldr r0, _0815F7D8 @ =sub_815F7F0
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 146a71788..8b639487f 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -187,7 +187,7 @@ _0813CED0:
bl clear_scheduled_bg_copies_to_vram
b _0813CFD2
_0813CEDA:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _0813CFD2
_0813CEE0:
bl FreeAllSpritePalettes
@@ -1974,7 +1974,7 @@ _0813DC86:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0x6
bl sub_813EA08
adds r4, r0, 0
@@ -3642,7 +3642,7 @@ sub_813EB20: @ 813EB20
bl AddWindow
strb r0, [r4, 0x5]
_0813EB44:
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4, 0x5]
diff --git a/asm/buy_menu_helpers.s b/asm/buy_menu_helpers.s
index 734e648b3..224bfa20c 100644
--- a/asm/buy_menu_helpers.s
+++ b/asm/buy_menu_helpers.s
@@ -141,7 +141,7 @@ sub_813F75C: @ 813F75C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
str r4, [sp]
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 45967283c..a403aa659 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -91,7 +91,7 @@ sub_80807E8: @ 80807E8
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
diff --git a/asm/coord_event_weather.s b/asm/coord_event_weather.s
deleted file mode 100644
index 8c987c6e2..000000000
--- a/asm/coord_event_weather.s
+++ /dev/null
@@ -1,105 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_27
-nullsub_27: @ 806E7A8
- bx lr
- thumb_func_end nullsub_27
-
- thumb_func_start nullsub_28
-nullsub_28: @ 806E7AC
- bx lr
- thumb_func_end nullsub_28
-
- thumb_func_start nullsub_29
-nullsub_29: @ 806E7B0
- bx lr
- thumb_func_end nullsub_29
-
- thumb_func_start nullsub_30
-nullsub_30: @ 806E7B4
- bx lr
- thumb_func_end nullsub_30
-
- thumb_func_start nullsub_31
-nullsub_31: @ 806E7B8
- bx lr
- thumb_func_end nullsub_31
-
- thumb_func_start nullsub_32
-nullsub_32: @ 806E7BC
- bx lr
- thumb_func_end nullsub_32
-
- thumb_func_start nullsub_33
-nullsub_33: @ 806E7C0
- bx lr
- thumb_func_end nullsub_33
-
- thumb_func_start nullsub_34
-nullsub_34: @ 806E7C4
- bx lr
- thumb_func_end nullsub_34
-
- thumb_func_start nullsub_35
-nullsub_35: @ 806E7C8
- bx lr
- thumb_func_end nullsub_35
-
- thumb_func_start nullsub_36
-nullsub_36: @ 806E7CC
- bx lr
- thumb_func_end nullsub_36
-
- thumb_func_start nullsub_37
-nullsub_37: @ 806E7D0
- bx lr
- thumb_func_end nullsub_37
-
- thumb_func_start nullsub_38
-nullsub_38: @ 806E7D4
- bx lr
- thumb_func_end nullsub_38
-
- thumb_func_start nullsub_39
-nullsub_39: @ 806E7D8
- bx lr
- thumb_func_end nullsub_39
-
- thumb_func_start trigger_activate_weather
-trigger_activate_weather: @ 806E7DC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r2, 0
- ldr r3, _0806E7FC @ =gUnknown_83A72A8
-_0806E7E6:
- lsls r1, r2, 3
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r4
- bne _0806E800
- adds r0, r3, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- bl _call_via_r0
- b _0806E80A
- .align 2, 0
-_0806E7FC: .4byte gUnknown_83A72A8
-_0806E800:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xC
- bls _0806E7E6
-_0806E80A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end trigger_activate_weather
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/credits.s b/asm/credits.s
index bf8c5eeac..0413aac97 100644
--- a/asm/credits.s
+++ b/asm/credits.s
@@ -241,7 +241,7 @@ _080F3B5E:
bl sub_80F3A74
bl sub_80F3AA4
movs r0, 0xF0
- bl sub_80F77CC
+ bl Menu_LoadStdPalAt
ldr r0, _080F3BC8 @ =gPlttBufferUnfaded
movs r2, 0xFF
lsls r2, 1
@@ -325,7 +325,7 @@ _080F3C64:
bl sub_80F3AA4
bl sub_80F3AC4
movs r0, 0xF0
- bl sub_80F77CC
+ bl Menu_LoadStdPalAt
ldr r0, _080F3C8C @ =gPlttBufferUnfaded
movs r2, 0xFF
lsls r2, 1
diff --git a/asm/daycare.s b/asm/daycare.s
index 3b7d7ffe0..c19aa1bdf 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -3011,7 +3011,7 @@ _08046A46:
bl sub_810713C
ldrb r0, [r4, 0xA]
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r4, 0xA]
bl RemoveWindow
adds r0, r5, 0
@@ -3035,7 +3035,7 @@ _08046A7C:
bl sub_810713C
ldrb r0, [r4, 0xA]
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r4, 0xA]
bl RemoveWindow
adds r0, r5, 0
@@ -3060,7 +3060,7 @@ ShowDaycareLevelMenu: @ 8046AB8
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
mov r1, sp
ldr r0, _08046B1C @ =gUnknown_825F814
ldm r0!, {r2,r3,r5}
diff --git a/asm/diploma.s b/asm/diploma.s
index d0b652619..31f0d368d 100644
--- a/asm/diploma.s
+++ b/asm/diploma.s
@@ -279,7 +279,7 @@ sub_80F4E24: @ 80F4E24
bl ResetPaletteFade
bl FreeAllSpritePalettes
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
pop {r0}
bx r0
thumb_func_end sub_80F4E24
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
index eef234a71..aa5b2d8f6 100644
--- a/asm/egg_hatch.s
+++ b/asm/egg_hatch.s
@@ -621,7 +621,7 @@ _08047090:
bl FreeAllSpritePalettes
bl ResetSpriteData
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl m4aSoundVSyncOn
b _0804724A
.align 2, 0
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index d343c68d4..c02eef927 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -171,25 +171,25 @@ EvolutionScene: @ 80CDDF4
movs r1, 0
bl SetGpuReg
bl ResetPaletteFade
- ldr r0, _080CE080 @ =gUnknown_2022974
+ ldr r0, _080CE080 @ =gBattle_BG0_X
movs r2, 0
strh r2, [r0]
- ldr r0, _080CE084 @ =gUnknown_2022976
+ ldr r0, _080CE084 @ =gBattle_BG0_Y
strh r2, [r0]
- ldr r0, _080CE088 @ =gUnknown_2022978
+ ldr r0, _080CE088 @ =gBattle_BG1_X
strh r2, [r0]
- ldr r0, _080CE08C @ =gUnknown_202297A
+ ldr r0, _080CE08C @ =gBattle_BG1_Y
strh r2, [r0]
- ldr r0, _080CE090 @ =gUnknown_202297C
+ ldr r0, _080CE090 @ =gBattle_BG2_X
strh r2, [r0]
- ldr r0, _080CE094 @ =gUnknown_202297E
+ ldr r0, _080CE094 @ =gBattle_BG2_Y
strh r2, [r0]
- ldr r1, _080CE098 @ =gUnknown_2022980
+ ldr r1, _080CE098 @ =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r0, _080CE09C @ =gUnknown_2022982
+ ldr r0, _080CE09C @ =gBattle_BG3_Y
movs r1, 0
strh r1, [r0]
ldr r1, _080CE0A0 @ =gUnknown_2022B50
@@ -198,7 +198,7 @@ EvolutionScene: @ 80CDDF4
bl sub_800F34C
bl LoadBattleTextboxAndBackground
bl ResetSpriteData
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl FreeAllSpritePalettes
ldr r0, _080CE0A4 @ =gReservedSpritePaletteCount
@@ -401,14 +401,14 @@ EvolutionScene: @ 80CDDF4
bx r0
.align 2, 0
_080CE07C: .4byte 0x05006000
-_080CE080: .4byte gUnknown_2022974
-_080CE084: .4byte gUnknown_2022976
-_080CE088: .4byte gUnknown_2022978
-_080CE08C: .4byte gUnknown_202297A
-_080CE090: .4byte gUnknown_202297C
-_080CE094: .4byte gUnknown_202297E
-_080CE098: .4byte gUnknown_2022980
-_080CE09C: .4byte gUnknown_2022982
+_080CE080: .4byte gBattle_BG0_X
+_080CE084: .4byte gBattle_BG0_Y
+_080CE088: .4byte gBattle_BG1_X
+_080CE08C: .4byte gBattle_BG1_Y
+_080CE090: .4byte gBattle_BG2_X
+_080CE094: .4byte gBattle_BG2_Y
+_080CE098: .4byte gBattle_BG3_X
+_080CE09C: .4byte gBattle_BG3_Y
_080CE0A0: .4byte gUnknown_2022B50
_080CE0A4: .4byte gReservedSpritePaletteCount
_080CE0A8: .4byte gUnknown_2039A20
@@ -494,24 +494,24 @@ CB2_EvolutionSceneLoadGraphics: @ 80CE0E8
movs r1, 0
bl SetGpuReg
bl ResetPaletteFade
- ldr r0, _080CE290 @ =gUnknown_2022974
+ ldr r0, _080CE290 @ =gBattle_BG0_X
strh r4, [r0]
- ldr r0, _080CE294 @ =gUnknown_2022976
+ ldr r0, _080CE294 @ =gBattle_BG0_Y
strh r4, [r0]
- ldr r0, _080CE298 @ =gUnknown_2022978
+ ldr r0, _080CE298 @ =gBattle_BG1_X
strh r4, [r0]
- ldr r0, _080CE29C @ =gUnknown_202297A
+ ldr r0, _080CE29C @ =gBattle_BG1_Y
strh r4, [r0]
- ldr r0, _080CE2A0 @ =gUnknown_202297C
+ ldr r0, _080CE2A0 @ =gBattle_BG2_X
strh r4, [r0]
- ldr r0, _080CE2A4 @ =gUnknown_202297E
+ ldr r0, _080CE2A4 @ =gBattle_BG2_Y
strh r4, [r0]
- ldr r1, _080CE2A8 @ =gUnknown_2022980
+ ldr r1, _080CE2A8 @ =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r0, _080CE2AC @ =gUnknown_2022982
+ ldr r0, _080CE2AC @ =gBattle_BG3_Y
strh r4, [r0]
ldr r1, _080CE2B0 @ =gUnknown_2022B50
movs r0, 0x9
@@ -608,14 +608,14 @@ _080CE280: .4byte gTasks
_080CE284: .4byte gUnknown_2039A20
_080CE288: .4byte gPlayerParty
_080CE28C: .4byte 0x05006000
-_080CE290: .4byte gUnknown_2022974
-_080CE294: .4byte gUnknown_2022976
-_080CE298: .4byte gUnknown_2022978
-_080CE29C: .4byte gUnknown_202297A
-_080CE2A0: .4byte gUnknown_202297C
-_080CE2A4: .4byte gUnknown_202297E
-_080CE2A8: .4byte gUnknown_2022980
-_080CE2AC: .4byte gUnknown_2022982
+_080CE290: .4byte gBattle_BG0_X
+_080CE294: .4byte gBattle_BG0_Y
+_080CE298: .4byte gBattle_BG1_X
+_080CE29C: .4byte gBattle_BG1_Y
+_080CE2A0: .4byte gBattle_BG2_X
+_080CE2A4: .4byte gBattle_BG2_Y
+_080CE2A8: .4byte gBattle_BG3_X
+_080CE2AC: .4byte gBattle_BG3_Y
_080CE2B0: .4byte gUnknown_2022B50
_080CE2B4: .4byte gReservedSpritePaletteCount
_080CE2B8: .4byte gUnknown_82350AC
@@ -691,37 +691,37 @@ _080CE34C:
ldr r1, _080CE398 @ =gReservedSpritePaletteCount
movs r0, 0x4
strb r0, [r1]
- ldr r0, _080CE39C @ =gUnknown_2022974
+ ldr r0, _080CE39C @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080CE3A0 @ =gUnknown_2022976
+ ldr r0, _080CE3A0 @ =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, _080CE3A4 @ =gUnknown_2022978
+ ldr r0, _080CE3A4 @ =gBattle_BG1_X
strh r1, [r0]
- ldr r0, _080CE3A8 @ =gUnknown_202297A
+ ldr r0, _080CE3A8 @ =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, _080CE3AC @ =gUnknown_202297C
+ ldr r0, _080CE3AC @ =gBattle_BG2_X
strh r1, [r0]
- ldr r0, _080CE3B0 @ =gUnknown_202297E
+ ldr r0, _080CE3B0 @ =gBattle_BG2_Y
strh r1, [r0]
- ldr r2, _080CE3B4 @ =gUnknown_2022980
+ ldr r2, _080CE3B4 @ =gBattle_BG3_X
movs r3, 0x80
lsls r3, 1
adds r0, r3, 0
strh r0, [r2]
- ldr r0, _080CE3B8 @ =gUnknown_2022982
+ ldr r0, _080CE3B8 @ =gBattle_BG3_Y
strh r1, [r0]
b _080CE4EC
.align 2, 0
_080CE398: .4byte gReservedSpritePaletteCount
-_080CE39C: .4byte gUnknown_2022974
-_080CE3A0: .4byte gUnknown_2022976
-_080CE3A4: .4byte gUnknown_2022978
-_080CE3A8: .4byte gUnknown_202297A
-_080CE3AC: .4byte gUnknown_202297C
-_080CE3B0: .4byte gUnknown_202297E
-_080CE3B4: .4byte gUnknown_2022980
-_080CE3B8: .4byte gUnknown_2022982
+_080CE39C: .4byte gBattle_BG0_X
+_080CE3A0: .4byte gBattle_BG0_Y
+_080CE3A4: .4byte gBattle_BG1_X
+_080CE3A8: .4byte gBattle_BG1_Y
+_080CE3AC: .4byte gBattle_BG2_X
+_080CE3B0: .4byte gBattle_BG2_Y
+_080CE3B4: .4byte gBattle_BG3_X
+_080CE3B8: .4byte gBattle_BG3_Y
_080CE3BC:
bl ResetPaletteFade
ldr r0, _080CE3D8 @ =nullsub_76
@@ -1027,24 +1027,24 @@ TradeEvolutionScene: @ 80CE540
mov r1, sp
ldrh r1, [r1, 0x14]
strh r1, [r0, 0x1C]
- ldr r0, _080CE6E4 @ =gUnknown_2022974
+ ldr r0, _080CE6E4 @ =gBattle_BG0_X
strh r4, [r0]
- ldr r0, _080CE6E8 @ =gUnknown_2022976
+ ldr r0, _080CE6E8 @ =gBattle_BG0_Y
strh r4, [r0]
- ldr r0, _080CE6EC @ =gUnknown_2022978
+ ldr r0, _080CE6EC @ =gBattle_BG1_X
strh r4, [r0]
- ldr r0, _080CE6F0 @ =gUnknown_202297A
+ ldr r0, _080CE6F0 @ =gBattle_BG1_Y
strh r4, [r0]
- ldr r0, _080CE6F4 @ =gUnknown_202297C
+ ldr r0, _080CE6F4 @ =gBattle_BG2_X
strh r4, [r0]
- ldr r0, _080CE6F8 @ =gUnknown_202297E
+ ldr r0, _080CE6F8 @ =gBattle_BG2_Y
strh r4, [r0]
- ldr r1, _080CE6FC @ =gUnknown_2022980
+ ldr r1, _080CE6FC @ =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r0, _080CE700 @ =gUnknown_2022982
+ ldr r0, _080CE700 @ =gBattle_BG3_Y
strh r4, [r0]
ldr r2, _080CE704 @ =gTextFlags
ldrb r0, [r2]
@@ -1077,14 +1077,14 @@ _080CE6D4: .4byte gSprites
_080CE6D8: .4byte nullsub_10
_080CE6DC: .4byte sub_80CF53C
_080CE6E0: .4byte gTasks
-_080CE6E4: .4byte gUnknown_2022974
-_080CE6E8: .4byte gUnknown_2022976
-_080CE6EC: .4byte gUnknown_2022978
-_080CE6F0: .4byte gUnknown_202297A
-_080CE6F4: .4byte gUnknown_202297C
-_080CE6F8: .4byte gUnknown_202297E
-_080CE6FC: .4byte gUnknown_2022980
-_080CE700: .4byte gUnknown_2022982
+_080CE6E4: .4byte gBattle_BG0_X
+_080CE6E8: .4byte gBattle_BG0_Y
+_080CE6EC: .4byte gBattle_BG1_X
+_080CE6F0: .4byte gBattle_BG1_Y
+_080CE6F4: .4byte gBattle_BG2_X
+_080CE6F8: .4byte gBattle_BG2_Y
+_080CE6FC: .4byte gBattle_BG3_X
+_080CE700: .4byte gBattle_BG3_Y
_080CE704: .4byte gTextFlags
_080CE708: .4byte sub_80D00D8
_080CE70C: .4byte sub_80CE72C
@@ -3981,105 +3981,105 @@ nullsub_76: @ 80D004C
thumb_func_start sub_80D0050
sub_80D0050: @ 80D0050
push {lr}
- ldr r0, _080D00B8 @ =gUnknown_2022974
+ ldr r0, _080D00B8 @ =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, _080D00BC @ =gUnknown_2022976
+ ldr r0, _080D00BC @ =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, _080D00C0 @ =gUnknown_2022978
+ ldr r0, _080D00C0 @ =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, _080D00C4 @ =gUnknown_202297A
+ ldr r0, _080D00C4 @ =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, _080D00C8 @ =gUnknown_202297C
+ ldr r0, _080D00C8 @ =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, _080D00CC @ =gUnknown_202297E
+ ldr r0, _080D00CC @ =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
- ldr r0, _080D00D0 @ =gUnknown_2022980
+ ldr r0, _080D00D0 @ =gBattle_BG3_X
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
- ldr r0, _080D00D4 @ =gUnknown_2022982
+ ldr r0, _080D00D4 @ =gBattle_BG3_Y
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_8087F54
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
.align 2, 0
-_080D00B8: .4byte gUnknown_2022974
-_080D00BC: .4byte gUnknown_2022976
-_080D00C0: .4byte gUnknown_2022978
-_080D00C4: .4byte gUnknown_202297A
-_080D00C8: .4byte gUnknown_202297C
-_080D00CC: .4byte gUnknown_202297E
-_080D00D0: .4byte gUnknown_2022980
-_080D00D4: .4byte gUnknown_2022982
+_080D00B8: .4byte gBattle_BG0_X
+_080D00BC: .4byte gBattle_BG0_Y
+_080D00C0: .4byte gBattle_BG1_X
+_080D00C4: .4byte gBattle_BG1_Y
+_080D00C8: .4byte gBattle_BG2_X
+_080D00CC: .4byte gBattle_BG2_Y
+_080D00D0: .4byte gBattle_BG3_X
+_080D00D4: .4byte gBattle_BG3_Y
thumb_func_end sub_80D0050
thumb_func_start sub_80D00D8
sub_80D00D8: @ 80D00D8
push {lr}
- ldr r0, _080D0140 @ =gUnknown_2022974
+ ldr r0, _080D0140 @ =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, _080D0144 @ =gUnknown_2022976
+ ldr r0, _080D0144 @ =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, _080D0148 @ =gUnknown_2022978
+ ldr r0, _080D0148 @ =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, _080D014C @ =gUnknown_202297A
+ ldr r0, _080D014C @ =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, _080D0150 @ =gUnknown_202297C
+ ldr r0, _080D0150 @ =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, _080D0154 @ =gUnknown_202297E
+ ldr r0, _080D0154 @ =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
- ldr r0, _080D0158 @ =gUnknown_2022980
+ ldr r0, _080D0158 @ =gBattle_BG3_X
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
- ldr r0, _080D015C @ =gUnknown_2022982
+ ldr r0, _080D015C @ =gBattle_BG3_Y
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_8087F54
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
.align 2, 0
-_080D0140: .4byte gUnknown_2022974
-_080D0144: .4byte gUnknown_2022976
-_080D0148: .4byte gUnknown_2022978
-_080D014C: .4byte gUnknown_202297A
-_080D0150: .4byte gUnknown_202297C
-_080D0154: .4byte gUnknown_202297E
-_080D0158: .4byte gUnknown_2022980
-_080D015C: .4byte gUnknown_2022982
+_080D0140: .4byte gBattle_BG0_X
+_080D0144: .4byte gBattle_BG0_Y
+_080D0148: .4byte gBattle_BG1_X
+_080D014C: .4byte gBattle_BG1_Y
+_080D0150: .4byte gBattle_BG2_X
+_080D0154: .4byte gBattle_BG2_Y
+_080D0158: .4byte gBattle_BG3_X
+_080D015C: .4byte gBattle_BG3_Y
thumb_func_end sub_80D00D8
thumb_func_start sub_80D0160
@@ -4225,9 +4225,9 @@ sub_80D025C: @ 80D025C
push {r6,r7}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080D0288 @ =gUnknown_2022978
+ ldr r0, _080D0288 @ =gBattle_BG1_X
mov r8, r0
- ldr r1, _080D028C @ =gUnknown_202297A
+ ldr r1, _080D028C @ =gBattle_BG1_Y
mov r9, r1
ldr r1, _080D0290 @ =gTasks
lsls r0, r5, 2
@@ -4238,18 +4238,18 @@ sub_80D025C: @ 80D025C
ldrsh r0, [r0, r2]
cmp r0, 0
bne _080D029C
- ldr r7, _080D0294 @ =gUnknown_202297C
- ldr r6, _080D0298 @ =gUnknown_202297E
+ ldr r7, _080D0294 @ =gBattle_BG2_X
+ ldr r6, _080D0298 @ =gBattle_BG2_Y
b _080D02A0
.align 2, 0
-_080D0288: .4byte gUnknown_2022978
-_080D028C: .4byte gUnknown_202297A
+_080D0288: .4byte gBattle_BG1_X
+_080D028C: .4byte gBattle_BG1_Y
_080D0290: .4byte gTasks
-_080D0294: .4byte gUnknown_202297C
-_080D0298: .4byte gUnknown_202297E
+_080D0294: .4byte gBattle_BG2_X
+_080D0298: .4byte gBattle_BG2_Y
_080D029C:
- ldr r7, _080D0328 @ =gUnknown_2022980
- ldr r6, _080D032C @ =gUnknown_2022982
+ ldr r7, _080D0328 @ =gBattle_BG3_X
+ ldr r6, _080D032C @ =gBattle_BG3_Y
_080D02A0:
lsls r4, r5, 2
adds r4, r5
@@ -4314,8 +4314,8 @@ _080D031A:
pop {r0}
bx r0
.align 2, 0
-_080D0328: .4byte gUnknown_2022980
-_080D032C: .4byte gUnknown_2022982
+_080D0328: .4byte gBattle_BG3_X
+_080D032C: .4byte gBattle_BG3_Y
_080D0330: .4byte sub_80D0160
thumb_func_end sub_80D025C
@@ -4527,12 +4527,12 @@ sub_80D04E8: @ 80D04E8
movs r0, 0x50
movs r1, 0
bl SetGpuReg
- ldr r0, _080D0544 @ =gUnknown_2022978
+ ldr r0, _080D0544 @ =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080D0548 @ =gUnknown_202297A
+ ldr r0, _080D0548 @ =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, _080D054C @ =gUnknown_202297C
+ ldr r0, _080D054C @ =gBattle_BG2_X
strh r1, [r0]
movs r0, 0x1
movs r1, 0x5
@@ -4562,9 +4562,9 @@ sub_80D04E8: @ 80D04E8
pop {r0}
bx r0
.align 2, 0
-_080D0544: .4byte gUnknown_2022978
-_080D0548: .4byte gUnknown_202297A
-_080D054C: .4byte gUnknown_202297C
+_080D0544: .4byte gBattle_BG1_X
+_080D0548: .4byte gBattle_BG1_Y
+_080D054C: .4byte gBattle_BG2_X
_080D0550: .4byte gUnknown_2039A24
thumb_func_end sub_80D04E8
diff --git a/asm/field_effect.s b/asm/field_effect.s
index 5aa0772dd..785e36266 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -2542,7 +2542,7 @@ sub_8084708: @ 8084708
movs r0, 0x8
bl SetPlayerAvatarTransitionFlags
movs r0, 0x16
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_08084760:
ldr r0, _08084780 @ =sub_8084484
bl FindTaskIdByFunc
@@ -7213,7 +7213,7 @@ sub_8086B30: @ 8086B30
lsrs r0, 24
bl DestroyTask
movs r0, 0x16
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_08086B96:
pop {r4,r5}
pop {r0}
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index ef1c75939..145521094 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -21605,7 +21605,7 @@ _080677EA:
ands r0, r1
strb r0, [r5, 0x1]
_08067822:
- ldr r1, _08067850 @ =gUnknown_825E074
+ ldr r1, _08067850 @ =gSineTable
movs r2, 0x3A
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -21629,7 +21629,7 @@ _08067822:
strb r0, [r5]
b _080678B6
.align 2, 0
-_08067850: .4byte gUnknown_825E074
+_08067850: .4byte gSineTable
_08067854:
ldrh r0, [r4, 0x36]
adds r0, 0x1
@@ -21697,7 +21697,7 @@ sub_80678C0: @ 80678C0
movs r0, 0xFF
ands r2, r0
strh r2, [r1, 0x3C]
- ldr r3, _080678EC @ =gUnknown_825E074
+ ldr r3, _080678EC @ =gSineTable
movs r4, 0x3C
ldrsh r0, [r1, r4]
lsls r0, 1
@@ -21715,7 +21715,7 @@ _080678E6:
pop {r1}
bx r1
.align 2, 0
-_080678EC: .4byte gUnknown_825E074
+_080678EC: .4byte gSineTable
thumb_func_end sub_80678C0
thumb_func_start sub_80678F0
diff --git a/asm/field_message_box.s b/asm/field_message_box.s
index 78a5f8c8c..46f4c3f8e 100644
--- a/asm/field_message_box.s
+++ b/asm/field_message_box.s
@@ -83,7 +83,7 @@ _080693D4:
_080693DA:
movs r0, 0
movs r1, 0x1
- bl sub_80F6EE4
+ bl DrawDialogueFrame
_080693E2:
ldrh r0, [r5, 0x8]
adds r0, 0x1
@@ -250,7 +250,7 @@ HideFieldMessageBox: @ 80694F4
bl task_del_textbox
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
ldr r1, _0806950C @ =gUnknown_203709C
movs r0, 0
strb r0, [r1]
@@ -293,7 +293,7 @@ sub_8069538: @ 8069538
bl task_del_textbox
movs r0, 0
movs r1, 0x1
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldr r1, _08069550 @ =gUnknown_203709C
movs r0, 0
strb r0, [r1]
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index df2588587..b7824ee84 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -4769,7 +4769,7 @@ _0805D748:
strh r6, [r0, 0x26]
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
ldrh r0, [r5, 0xA]
adds r0, 0x1
strh r0, [r5, 0xA]
@@ -5043,7 +5043,7 @@ sub_805D980: @ 805D980
bl UnfreezeMapObjects
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
ldr r0, _0805D9C0 @ =sub_805D304
bl FindTaskIdByFunc
lsls r0, 24
diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s
index a8477a33f..24ca7a19a 100644
--- a/asm/field_screen_effect.s
+++ b/asm/field_screen_effect.s
@@ -135,12 +135,12 @@ _0807EEE0:
beq _0807EF6C
b _0807EF76
_0807EEE6:
- ldr r0, _0807EF0C @ =gUnknown_2039600
+ ldr r0, _0807EF0C @ =gScanlineEffect
ldrb r1, [r0, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
- ldr r1, _0807EF10 @ =gUnknown_2038700
+ ldr r1, _0807EF10 @ =gScanlineEffectRegBuffers
adds r0, r1
movs r2, 0x2
ldrsh r1, [r4, r2]
@@ -153,15 +153,15 @@ _0807EEE6:
strh r0, [r4]
b _0807EF76
.align 2, 0
-_0807EF0C: .4byte gUnknown_2039600
-_0807EF10: .4byte gUnknown_2038700
+_0807EF0C: .4byte gScanlineEffect
+_0807EF10: .4byte gScanlineEffectRegBuffers
_0807EF14:
- ldr r0, _0807EF5C @ =gUnknown_2039600
+ ldr r0, _0807EF5C @ =gScanlineEffect
ldrb r1, [r0, 0x14]
lsls r0, r1, 4
subs r0, r1
lsls r0, 7
- ldr r1, _0807EF60 @ =gUnknown_2038700
+ ldr r1, _0807EF60 @ =gScanlineEffectRegBuffers
adds r0, r1
movs r6, 0x2
ldrsh r1, [r4, r6]
@@ -186,19 +186,19 @@ _0807EF14:
ldrsh r0, [r4, r3]
cmp r0, 0x1
bne _0807EF64
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0x2
strh r0, [r4]
b _0807EF76
.align 2, 0
-_0807EF5C: .4byte gUnknown_2039600
-_0807EF60: .4byte gUnknown_2038700
+_0807EF5C: .4byte gScanlineEffect
+_0807EF60: .4byte gScanlineEffectRegBuffers
_0807EF64:
adds r0, r5, 0
bl DestroyTask
b _0807EF76
_0807EF6C:
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
adds r0, r5, 0
bl DestroyTask
_0807EF76:
@@ -344,7 +344,7 @@ sub_807F074: @ 807F074
lsrs r0, 24
cmp r0, 0
beq _0807F0A2
- ldr r4, _0807F0A8 @ =gUnknown_2038700
+ ldr r4, _0807F0A8 @ =gScanlineEffectRegBuffers
ldr r1, _0807F0AC @ =gUnknown_83C68D4
lsls r0, 1
adds r0, r1
@@ -365,7 +365,7 @@ _0807F0A2:
pop {r0}
bx r0
.align 2, 0
-_0807F0A8: .4byte gUnknown_2038700
+_0807F0A8: .4byte gScanlineEffectRegBuffers
_0807F0AC: .4byte gUnknown_83C68D4
thumb_func_end sub_807F074
@@ -869,7 +869,7 @@ _0807F4A8:
adds r7, r0, r1
strh r5, [r7, 0xA]
movs r0, 0xF0
- bl sub_80F77CC
+ bl Menu_LoadStdPalAt
adds r0, r5, 0
movs r1, 0
bl FillWindowPixelBuffer
diff --git a/asm/field_specials.s b/asm/field_specials.s
index 4c0b97151..e930a2ee7 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -756,7 +756,7 @@ sub_80CAB78: @ 80CAB78
bl VarGet
lsls r0, 16
lsrs r0, 16
- bl sub_80CBD94
+ bl GetStarterPokemon
lsls r0, 16
lsrs r6, r0, 16
bl CalculatePlayerPartyCount
@@ -3078,15 +3078,15 @@ _080CBD7C: .4byte gTasks
sub_80CBD80: @ 80CBD80
push {lr}
movs r0, 0x16
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
movs r0, 0x8
bl SetPlayerAvatarTransitionFlags
pop {r0}
bx r0
thumb_func_end sub_80CBD80
- thumb_func_start sub_80CBD94
-sub_80CBD94: @ 80CBD94
+ thumb_func_start GetStarterPokemon
+GetStarterPokemon: @ 80CBD94
push {lr}
lsls r0, 16
lsrs r1, r0, 16
@@ -3094,31 +3094,31 @@ sub_80CBD94: @ 80CBD94
bls _080CBDA0
movs r1, 0
_080CBDA0:
- ldr r0, _080CBDAC @ =gUnknown_83F5D2C
+ ldr r0, _080CBDAC @ =sStarterMon
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
pop {r1}
bx r1
.align 2, 0
-_080CBDAC: .4byte gUnknown_83F5D2C
- thumb_func_end sub_80CBD94
+_080CBDAC: .4byte sStarterMon
+ thumb_func_end GetStarterPokemon
- thumb_func_start sub_80CBDB0
-sub_80CBDB0: @ 80CBDB0
+ thumb_func_start ScrSpecial_GetStarter
+ScrSpecial_GetStarter: @ 80CBDB0
push {lr}
ldr r0, _080CBDC8 @ =0x00004031
bl VarGet
lsls r0, 16
lsrs r0, 16
- bl sub_80CBD94
+ bl GetStarterPokemon
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_080CBDC8: .4byte 0x00004031
- thumb_func_end sub_80CBDB0
+ thumb_func_end ScrSpecial_GetStarter
thumb_func_start sub_80CBDCC
sub_80CBDCC: @ 80CBDCC
@@ -5542,7 +5542,7 @@ sub_80CD098: @ 80CD098
str r3, [sp]
movs r0, 0
movs r3, 0
- bl sub_8006300
+ bl CreateTextCursorSpriteForOakSpeech
ldr r1, _080CD0DC @ =gUnknown_2039A1B
strb r0, [r1]
b _080CD0E8
diff --git a/asm/field_weather.s b/asm/field_weather.s
index 49a1ed95b..416fd90d4 100644
--- a/asm/field_weather.s
+++ b/asm/field_weather.s
@@ -2250,7 +2250,7 @@ _0807AD14:
movs r1, 0x7F
ands r0, r1
strh r0, [r2]
- ldr r1, _0807AD5C @ =gUnknown_825E074
+ ldr r1, _0807AD5C @ =gSineTable
movs r3, 0
ldrsh r0, [r2, r3]
lsls r0, 1
@@ -2278,7 +2278,7 @@ _0807AD54:
strh r0, [r4]
b _0807ADA0
.align 2, 0
-_0807AD5C: .4byte gUnknown_825E074
+_0807AD5C: .4byte gSineTable
_0807AD60: .4byte 0x0000073c
_0807AD64: .4byte 0x0000073e
_0807AD68:
diff --git a/asm/field_weather_effects.s b/asm/field_weather_effects.s
index fd9b2361a..0330bcbaf 100644
--- a/asm/field_weather_effects.s
+++ b/asm/field_weather_effects.s
@@ -1972,7 +1972,7 @@ sub_807C1AC: @ 807C1AC
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x34]
- ldr r1, _0807C224 @ =gUnknown_825E074
+ ldr r1, _0807C224 @ =gSineTable
movs r3, 0x34
ldrsh r0, [r4, r3]
lsls r0, 1
@@ -2020,7 +2020,7 @@ _0807C210:
subs r0, r1
b _0807C23C
.align 2, 0
-_0807C224: .4byte gUnknown_825E074
+_0807C224: .4byte gSineTable
_0807C228: .4byte gSpriteCoordOffsetX
_0807C22C: .4byte 0x000001ff
_0807C230: .4byte 0xffffff00
@@ -4417,7 +4417,7 @@ sub_807D4C4: @ 807D4C4
ldr r2, [r0]
ldr r0, _0807D52C @ =0x00000704
adds r4, r2, r0
- ldr r6, _0807D530 @ =gUnknown_825E074
+ ldr r6, _0807D530 @ =gSineTable
ldr r1, _0807D534 @ =0x00000712
adds r5, r2, r1
ldrh r0, [r5]
@@ -4465,7 +4465,7 @@ sub_807D4C4: @ 807D4C4
.align 2, 0
_0807D528: .4byte gUnknown_83C2BBC
_0807D52C: .4byte 0x00000704
-_0807D530: .4byte gUnknown_825E074
+_0807D530: .4byte gSineTable
_0807D534: .4byte 0x00000712
_0807D538: .4byte gSpriteCoordOffsetX
_0807D53C: .4byte 0x0000070e
@@ -4856,7 +4856,7 @@ SandstormSpriteCallback3: @ 807D81C
_0807D83A:
movs r0, 0x2E
ldrsh r4, [r5, r0]
- ldr r3, _0807D88C @ =gUnknown_825E074
+ ldr r3, _0807D88C @ =gSineTable
movs r2, 0x30
ldrsh r1, [r5, r2]
lsls r0, r1, 1
@@ -4897,7 +4897,7 @@ _0807D886:
pop {r0}
bx r0
.align 2, 0
-_0807D88C: .4byte gUnknown_825E074
+_0807D88C: .4byte gSineTable
thumb_func_end SandstormSpriteCallback3
thumb_func_start Weather11_InitVars
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index 43ec5eede..c74165999 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -508,7 +508,7 @@ _080F21B2:
bl memcpy
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r2, _080F2214 @ =gUnknown_8419F54
movs r0, 0
str r0, [sp]
@@ -723,7 +723,7 @@ _080F22F2:
strh r0, [r1]
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
adds r4, r5
ldr r0, _080F239C @ =sub_80F23A0
str r0, [r4]
@@ -1265,7 +1265,7 @@ _080F27AC:
bl sub_80F33DC
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r2, _080F27FC @ =gUnknown_84160C8
str r5, [sp]
movs r0, 0x2
@@ -1607,7 +1607,7 @@ sub_80F2AA4: @ 80F2AA4
movs r1, 0x1E
movs r2, 0
movs r3, 0xC
- bl sub_810F558
+ bl CreateWindow_SnapRight_StdPal
movs r0, 0x3
bl Save_LoadGameData
lsls r0, 24
@@ -1888,13 +1888,13 @@ _080F2CB4:
ldrsh r0, [r4, r1]
cmp r0, 0
bgt _080F2D24
- ldr r1, _080F2D20 @ =gUnknown_8415D78
+ ldr r1, _080F2D20 @ =gText_UPDOWNPick_ABUTTONBBUTTONCancel
movs r0, 0x1
str r0, [sp]
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl sub_810F650
+ bl Menu_PrintHelpSystemUIHeader
b _080F2D34
.align 2, 0
_080F2D08: .4byte 0xffff0000
@@ -1903,15 +1903,15 @@ _080F2D10: .4byte gStringVar1
_080F2D14: .4byte gTasks
_080F2D18: .4byte gStringVar4
_080F2D1C: .4byte gUnknown_84160B4
-_080F2D20: .4byte gUnknown_8415D78
+_080F2D20: .4byte gText_UPDOWNPick_ABUTTONBBUTTONCancel
_080F2D24:
- ldr r1, _080F2D54 @ =gUnknown_8415D60
+ ldr r1, _080F2D54 @ =gText_UPDOWNPick_ABUTTONNext_BBUTTONBack
movs r0, 0x1
str r0, [sp]
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl sub_810F650
+ bl Menu_PrintHelpSystemUIHeader
_080F2D34:
ldr r0, _080F2D58 @ =gTasks
ldr r1, [sp, 0x14]
@@ -1929,7 +1929,7 @@ _080F2D34:
pop {r0}
bx r0
.align 2, 0
-_080F2D54: .4byte gUnknown_8415D60
+_080F2D54: .4byte gText_UPDOWNPick_ABUTTONNext_BBUTTONBack
_080F2D58: .4byte gTasks
_080F2D5C: .4byte Task_HofPC_PrintMonInfo
thumb_func_end sub_80F2B6C
@@ -2339,13 +2339,13 @@ sub_80F30A4: @ 80F30A4
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080F30FC @ =gUnknown_8415D8C
+ ldr r0, _080F30FC @ =gText_ABUTTONExit
movs r1, 0x8
movs r2, 0x1
- bl sub_810F5E8
+ bl PrintTextOnRightSnappedWindow
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r2, _080F3100 @ =gUnknown_8416090
movs r0, 0
str r0, [sp]
@@ -2374,7 +2374,7 @@ sub_80F30A4: @ 80F30A4
pop {r0}
bx r0
.align 2, 0
-_080F30FC: .4byte gUnknown_8415D8C
+_080F30FC: .4byte gText_ABUTTONExit
_080F3100: .4byte gUnknown_8416090
_080F3104: .4byte gTasks
_080F3108: .4byte Task_HofPC_ExitOnButtonPress
@@ -3070,7 +3070,7 @@ _080F36B8: .4byte gUnknown_840C39C
thumb_func_start sub_80F36BC
sub_80F36BC: @ 80F36BC
push {lr}
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl reset_temp_tile_data_buffers
@@ -3223,8 +3223,8 @@ _080F37C8:
bl CopyBgTilemapBufferToVram
b _080F3854
_080F381E:
- bl sub_80F6C6C
- bl sub_80F6C98
+ bl InitStandardTextBoxWindows
+ bl ResetBg0
b _080F3854
_080F3828:
movs r1, 0x82
@@ -3353,7 +3353,7 @@ _080F38EE:
movs r1, 0x3
ands r0, r1
adds r0, 0x8
- ldr r1, _080F392C @ =gUnknown_825E074
+ ldr r1, _080F392C @ =gSineTable
lsls r4, 1
adds r4, r1
movs r2, 0
@@ -3373,7 +3373,7 @@ _080F3926:
pop {r0}
bx r0
.align 2, 0
-_080F392C: .4byte gUnknown_825E074
+_080F392C: .4byte gSineTable
thumb_func_end sub_80F38D8
thumb_func_start sub_80F3930
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s
index bca296e67..b88a86b47 100644
--- a/asm/help_system_812B1E0.s
+++ b/asm/help_system_812B1E0.s
@@ -16,8 +16,8 @@ sub_812B1E0: @ 812B1E0
_0812B1EC: .4byte gUnknown_203B0EC
thumb_func_end sub_812B1E0
- thumb_func_start sub_812B1F0
-sub_812B1F0: @ 812B1F0
+ thumb_func_start HelpSystem_SetSomeVariable2
+HelpSystem_SetSomeVariable2: @ 812B1F0
push {lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -44,7 +44,7 @@ _0812B218:
bx r0
.align 2, 0
_0812B21C: .4byte gUnknown_203B0EC
- thumb_func_end sub_812B1F0
+ thumb_func_end HelpSystem_SetSomeVariable2
thumb_func_start sub_812B220
sub_812B220: @ 812B220
@@ -240,7 +240,7 @@ sub_812B35C: @ 812B35C
cmp r0, 0
beq _0812B376
movs r0, 0x16
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
_0812B376:
bl sub_812B2C4
@@ -248,7 +248,7 @@ _0812B376:
cmp r0, 0
beq _0812B388
movs r0, 0x15
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
_0812B388:
ldr r0, _0812B3B0 @ =gMapHeader
@@ -268,7 +268,7 @@ _0812B388:
bne _0812B3B8
_0812B3A8:
movs r0, 0xE
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
.align 2, 0
_0812B3B0: .4byte gMapHeader
@@ -279,36 +279,36 @@ _0812B3B8:
cmp r1, r0
bne _0812B3C8
movs r0, 0xF
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
_0812B3C8:
bl IsCurMapPokeCenter
cmp r0, 0x1
bne _0812B3D8
movs r0, 0x10
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
_0812B3D8:
bl sub_812B25C
cmp r0, 0x1
bne _0812B3E8
movs r0, 0x11
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
_0812B3E8:
bl sub_812B26C
cmp r0, 0x1
bne _0812B3F8
movs r0, 0x12
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
_0812B3F8:
movs r0, 0x13
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0812B406
_0812B400:
movs r0, 0x14
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_0812B406:
pop {r0}
bx r0
diff --git a/asm/intro.s b/asm/intro.s
index af5104da3..309b636c8 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -166,7 +166,7 @@ _080EC65E:
movs r0, 0
movs r2, 0
bl load_copyright_graphics
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
@@ -898,7 +898,7 @@ _080ECCF6:
movs r1, 0x10
movs r2, 0x10
movs r3, 0
- bl sub_812E944
+ bl StartBlendTask
b _080ECD36
.align 2, 0
_080ECD14: .4byte 0x00003f44
@@ -907,7 +907,7 @@ _080ECD18:
bl ShowBg
b _080ECD36
_080ECD20:
- bl sub_812E9E4
+ bl IsBlendTaskActive
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
@@ -980,7 +980,7 @@ _080ECD9C:
movs r1, 0x10
movs r2, 0x10
movs r3, 0
- bl sub_812E944
+ bl StartBlendTask
strh r4, [r6, 0x8]
strh r5, [r6, 0xA]
strh r4, [r6, 0x12]
@@ -992,7 +992,7 @@ _080ECDC4:
str r0, [r6, 0x14]
b _080ECE70
_080ECDCC:
- bl sub_812E9E4
+ bl IsBlendTaskActive
lsls r0, 24
cmp r0, 0
bne _080ECE96
@@ -1051,10 +1051,10 @@ _080ECE26:
movs r1, 0
movs r2, 0
movs r3, 0x10
- bl sub_812E944
+ bl StartBlendTask
b _080ECE70
_080ECE52:
- bl sub_812E9E4
+ bl IsBlendTaskActive
lsls r0, 24
cmp r0, 0
bne _080ECE96
@@ -3369,7 +3369,7 @@ _080EE114:
_080EE11C:
movs r4, 0x6
ldrsh r3, [r5, r4]
- ldr r4, _080EE15C @ =gUnknown_825E074
+ ldr r4, _080EE15C @ =gSineTable
adds r0, r3, 0
adds r0, 0x40
lsls r0, 1
@@ -3400,7 +3400,7 @@ _080EE156:
pop {r0}
bx r0
.align 2, 0
-_080EE15C: .4byte gUnknown_825E074
+_080EE15C: .4byte gSineTable
thumb_func_end sub_80EE024
thumb_func_start sub_80EE160
@@ -3587,7 +3587,7 @@ sub_80EE29C: @ 80EE29C
lsls r1, 16
asrs r1, 20
strh r1, [r5, 0x22]
- ldr r1, _080EE340 @ =gUnknown_825E074
+ ldr r1, _080EE340 @ =gSineTable
lsls r0, 16
asrs r0, 20
adds r0, 0x40
@@ -3646,7 +3646,7 @@ _080EE336:
pop {r0}
bx r0
.align 2, 0
-_080EE340: .4byte gUnknown_825E074
+_080EE340: .4byte gSineTable
_080EE344: .4byte gUnknown_203AB16
_080EE348: .4byte 0x41c64e6d
_080EE34C: .4byte 0x00006073
@@ -4208,7 +4208,7 @@ _080EE740:
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x24]
- ldr r1, _080EE7B0 @ =gUnknown_825E074
+ ldr r1, _080EE7B0 @ =gSineTable
movs r3, 0x34
ldrsh r0, [r4, r3]
lsls r0, 1
@@ -4253,7 +4253,7 @@ _080EE78C:
strh r0, [r4, 0x3C]
b _080EE818
.align 2, 0
-_080EE7B0: .4byte gUnknown_825E074
+_080EE7B0: .4byte gSineTable
_080EE7B4: .4byte gUnknown_203AB04
_080EE7B8: .4byte gUnknown_203AB08
_080EE7BC: .4byte gUnknown_203AB06
@@ -4585,7 +4585,7 @@ _080EEA08:
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x24]
- ldr r1, _080EEA48 @ =gUnknown_825E074
+ ldr r1, _080EEA48 @ =gSineTable
lsls r0, 16
asrs r0, 20
lsls r0, 1
@@ -4599,7 +4599,7 @@ _080EEA08:
strh r0, [r4, 0x26]
b _080EEA88
.align 2, 0
-_080EEA48: .4byte gUnknown_825E074
+_080EEA48: .4byte gSineTable
_080EEA4C:
ldrh r0, [r4, 0x32]
lsrs r0, 4
@@ -4775,7 +4775,7 @@ _080EEB84:
asrs r0, 20
negs r1, r0
strh r1, [r4, 0x24]
- ldr r1, _080EEBD4 @ =gUnknown_825E074
+ ldr r1, _080EEBD4 @ =gSineTable
lsls r0, 1
adds r0, r1
movs r3, 0
@@ -4810,7 +4810,7 @@ _080EEBCE:
pop {r0}
bx r0
.align 2, 0
-_080EEBD4: .4byte gUnknown_825E074
+_080EEBD4: .4byte gSineTable
_080EEBD8: .4byte gUnknown_203AB04
_080EEBDC: .4byte gUnknown_203AB08
_080EEBE0: .4byte SpriteCallbackDummy
diff --git a/asm/item_menu.s b/asm/item_menu.s
index d08021d15..dcc74bafd 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -257,7 +257,7 @@ _08107FB0:
bl clear_scheduled_bg_copies_to_vram
b _08108104
_08107FBA:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _08108104
_08107FC0:
bl FreeAllSpritePalettes
@@ -400,13 +400,13 @@ _081080DE:
cmp r0, 0x3
bne _081080F4
movs r0, 0x1D
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _081080FA
.align 2, 0
_081080F0: .4byte gUnknown_203ACFC
_081080F4:
movs r0, 0x9
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_081080FA:
ldr r2, _08108114 @ =gPaletteFade
ldrb r1, [r2, 0x8]
@@ -2177,7 +2177,7 @@ sub_8108E70: @ 8108E70
strh r0, [r4, 0x14]
movs r1, 0x11
bl FillWindowPixelBuffer
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4, 0x14]
@@ -3715,7 +3715,7 @@ _08109AD4:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0x6
movs r1, 0
bl sub_810B9DC
diff --git a/asm/item_pc.s b/asm/item_pc.s
index 8d36ccc81..f4a4176d9 100644
--- a/asm/item_pc.s
+++ b/asm/item_pc.s
@@ -162,7 +162,7 @@ _0810D53C:
bl clear_scheduled_bg_copies_to_vram
b _0810D674
_0810D546:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _0810D674
_0810D54C:
bl FreeAllSpritePalettes
@@ -257,7 +257,7 @@ _0810D608:
b _0810D674
_0810D60E:
movs r0, 0x1D
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0810D674
_0810D616:
ldr r0, _0810D62C @ =gUnknown_203ADCC
@@ -1880,7 +1880,7 @@ sub_810E274: @ 810E274
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
ldrh r0, [r6, 0x2]
bl sub_810DD68
lsls r0, 16
@@ -2884,7 +2884,7 @@ sub_810EB30: @ 810EB30
adds r6, r2, 0
lsls r4, 24
lsrs r4, 24
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
movs r2, 0xEB
diff --git a/asm/item_use.s b/asm/item_use.s
index fce57bc88..2b425dec2 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -203,7 +203,7 @@ sub_80A112C: @ 80A112C
lsrs r4, 24
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
adds r0, r4, 0
bl DestroyTask
bl sub_80696C0
diff --git a/asm/itemfinder.s b/asm/itemfinder.s
index bf3e78ebc..e510252ab 100644
--- a/asm/itemfinder.s
+++ b/asm/itemfinder.s
@@ -81,7 +81,7 @@ sub_813ED18: @ 813ED18
lsrs r4, 24
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
bl sub_80696C0
bl ScriptContext2_Disable
adds r0, r4, 0
@@ -970,7 +970,7 @@ sub_813F380: @ 813F380
bl sub_813F3FC
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
bl sub_80696C0
bl ScriptContext2_Disable
adds r0, r4, 0
diff --git a/asm/learn_move.s b/asm/learn_move.s
index 5068e6d16..fbb31d196 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -296,7 +296,7 @@ sub_80E48C0: @ 80E48C0
ldr r4, _080E48F0 @ =gStringVar4
adds r0, r4, 0
bl StringExpandPlaceholders
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
str r0, [sp]
diff --git a/asm/link.s b/asm/link.s
index a0ba7f9cb..13305edde 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -3252,7 +3252,7 @@ c2_800ACD4: @ 800ACD4
movs r2, 0x2
bl FillPalette
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r1, _0800ADF0 @ =gWirelessCommType
ldrb r0, [r1]
cmp r0, 0
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 01e93a41d..514e386ed 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -401,7 +401,7 @@ _08115B5C:
bl CopyWindowToVram
ldrb r0, [r5, 0xF]
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldr r0, _08115C58 @ =gUnknown_3005E70
adds r2, r0, 0
ldr r1, _08115C5C @ =gUnknown_8456D34
@@ -417,7 +417,7 @@ _08115B5C:
strb r0, [r5, 0x12]
ldrb r0, [r5, 0x11]
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldrb r0, [r5, 0x11]
bl PutWindowTilemap
ldrb r0, [r5, 0x11]
@@ -1135,7 +1135,7 @@ sub_81161E4: @ 81161E4
bl ClearWindowTilemap
ldrb r0, [r4, 0x11]
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r4, 0x12]
movs r1, 0
movs r2, 0
@@ -1144,7 +1144,7 @@ sub_81161E4: @ 81161E4
bl ClearWindowTilemap
ldrb r0, [r4, 0xF]
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r4, 0x11]
@@ -1919,7 +1919,7 @@ _08116838:
bl CopyWindowToVram
ldrb r0, [r6, 0xB]
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldr r0, _081168FC @ =gUnknown_3005E70
adds r2, r0, 0
ldr r1, _08116900 @ =gUnknown_8456DDC
@@ -1935,7 +1935,7 @@ _08116838:
strb r0, [r6, 0xE]
ldrb r0, [r6, 0xD]
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldrb r0, [r6, 0xD]
bl PutWindowTilemap
ldrb r0, [r6, 0xD]
@@ -2318,7 +2318,7 @@ _08116C10:
bl ClearWindowTilemap
ldrb r0, [r6, 0xD]
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r6, 0xE]
movs r1, 0
movs r2, 0
@@ -2327,7 +2327,7 @@ _08116C10:
bl ClearWindowTilemap
ldrb r0, [r6, 0xB]
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
movs r0, 0
bl CopyBgTilemapBufferToVram
ldrb r0, [r6, 0xD]
@@ -8485,7 +8485,7 @@ sub_811A0B4: @ 811A0B4
bl sub_80F6E9C
movs r0, 0
movs r1, 0x1
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r0, _0811A0DC @ =gStringVar4
adds r1, r4, 0
bl StringExpandPlaceholders
@@ -8531,7 +8531,7 @@ _0811A10A:
bl sub_80F6E9C
movs r0, 0
movs r1, 0x1
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r0, _0811A12C @ =gStringVar4
adds r1, r5, 0
bl StringExpandPlaceholders
@@ -8624,7 +8624,7 @@ sub_811A1AC: @ 811A1AC
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
adds r0, r4, 0
movs r1, 0xFF
bl FillWindowPixelBuffer
@@ -8659,7 +8659,7 @@ sub_811A1FC: @ 811A1FC
lsrs r4, 24
adds r0, r4, 0
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
adds r0, r4, 0
bl RemoveWindow
pop {r4}
@@ -8688,7 +8688,7 @@ _0811A234:
strb r0, [r5]
ldrb r0, [r5]
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldr r0, _0811A270 @ =gUnknown_3005E70
adds r2, r0, 0
ldr r1, [sp, 0x1C]
@@ -8729,7 +8729,7 @@ _0811A274:
bl sub_810713C
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r5]
bl RemoveWindow
movs r0, 0
@@ -8750,7 +8750,7 @@ _0811A2B0:
bl sub_810713C
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r5]
bl RemoveWindow
strb r4, [r7]
@@ -8794,7 +8794,7 @@ _0811A308:
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldr r0, _0811A354 @ =gUnknown_3005E70
adds r2, r0, 0
ldr r1, [sp, 0x20]
@@ -8845,7 +8845,7 @@ _0811A37E:
bl sub_810713C
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r4]
bl RemoveWindow
ldrb r0, [r7]
@@ -8870,7 +8870,7 @@ _0811A3AC:
bl sub_810713C
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r4]
bl RemoveWindow
ldrb r0, [r7]
diff --git a/asm/list_menu.s b/asm/list_menu.s
index 3475b0914..f0a609fcd 100644
--- a/asm/list_menu.s
+++ b/asm/list_menu.s
@@ -126,7 +126,7 @@ _08106FA8:
bgt _08106FBA
ldrb r0, [r5, 0x5]
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
_08106FBA:
ldr r0, _08106FC8 @ =gUnknown_203ACF4
ldrb r0, [r0, 0x5]
diff --git a/asm/macros.inc b/asm/macros.inc
index 6d8657892..324a8de02 100644
--- a/asm/macros.inc
+++ b/asm/macros.inc
@@ -147,3 +147,8 @@
.2byte MAP_\map_name
.space 2
.endm
+
+ .macro window_template bg, top, left, height, width, palno, baseBlock
+ .byte \bg, \top, \left, \height, \width, \palno
+ .2byte \baseBlock
+ .endm
diff --git a/asm/mail.s b/asm/mail.s
index 1ecaf17cc..dac4bf6f8 100644
--- a/asm/mail.s
+++ b/asm/mail.s
@@ -200,7 +200,7 @@ _080BED40:
_080BED8C:
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0
movs r1, 0
bl SetGpuReg
@@ -209,13 +209,13 @@ _080BED8C:
cmp r0, 0
bne _080BEDB4
movs r0, 0x22
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080BF0F4
.align 2, 0
_080BEDB0: .4byte gUnknown_203AAC4
_080BEDB4:
movs r0, 0x1E
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080BF0F4
_080BEDBC:
add r1, sp, 0x8
diff --git a/asm/main_menu.s b/asm/main_menu.s
index ae0a4c69b..b170db136 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -113,7 +113,7 @@ sub_800C318: @ 800C318
ldr r0, _0800C4B0 @ =0x810001ff
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
@@ -983,7 +983,7 @@ _0800CB2E:
bl FreeAllWindowBuffers
adds r0, r6, 0
bl DestroyTask
- bl sub_812EB2C
+ bl StartNewGameScene
b _0800CB84
.align 2, 0
_0800CB44: .4byte gUnknown_2031DE0
diff --git a/asm/menu.s b/asm/menu.s
index e593eef1c..a6d3d183b 100644
--- a/asm/menu.s
+++ b/asm/menu.s
@@ -933,8 +933,8 @@ sub_810F510: @ 810F510
bx r0
thumb_func_end sub_810F510
- thumb_func_start sub_810F558
-sub_810F558: @ 810F558
+ thumb_func_start CreateWindow_SnapRight_StdPal
+CreateWindow_SnapRight_StdPal: @ 810F558
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1005,10 +1005,10 @@ _0810F5C4:
bx r1
.align 2, 0
_0810F5E4: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F558
+ thumb_func_end CreateWindow_SnapRight_StdPal
- thumb_func_start sub_810F5E8
-sub_810F5E8: @ 810F5E8
+ thumb_func_start PrintTextOnRightSnappedWindow
+PrintTextOnRightSnappedWindow: @ 810F5E8
push {r4-r6,lr}
sub sp, 0xC
adds r5, r0, 0
@@ -1055,10 +1055,10 @@ _0810F63E:
.align 2, 0
_0810F648: .4byte gUnknown_203ADF4
_0810F64C: .4byte gUnknown_8456618
- thumb_func_end sub_810F5E8
+ thumb_func_end PrintTextOnRightSnappedWindow
- thumb_func_start sub_810F650
-sub_810F650: @ 810F650
+ thumb_func_start Menu_PrintHelpSystemUIHeader
+Menu_PrintHelpSystemUIHeader: @ 810F650
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1145,7 +1145,7 @@ _0810F6F6:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_810F650
+ thumb_func_end Menu_PrintHelpSystemUIHeader
thumb_func_start sub_810F704
sub_810F704: @ 810F704
@@ -1264,8 +1264,8 @@ _0810F7BE:
_0810F7D4: .4byte gUnknown_203ADE4
thumb_func_end sub_810F774
- thumb_func_start sub_810F7D8
-sub_810F7D8: @ 810F7D8
+ thumb_func_start ProgramAndPlaceMenuCursorOnWindow
+ProgramAndPlaceMenuCursorOnWindow: @ 810F7D8
push {r4-r6,lr}
sub sp, 0x10
ldr r4, [sp, 0x20]
@@ -1297,7 +1297,7 @@ sub_810F7D8: @ 810F7D8
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_810F7D8
+ thumb_func_end ProgramAndPlaceMenuCursorOnWindow
thumb_func_start sub_810F818
sub_810F818: @ 810F818
@@ -1336,7 +1336,7 @@ sub_810F818: @ 810F818
adds r1, r6, 0
ldr r2, [sp, 0xC]
ldr r3, [sp, 0x10]
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
lsls r0, 24
lsrs r0, 24
add sp, 0x14
@@ -2410,7 +2410,7 @@ sub_810FF60: @ 810FF60
adds r1, r6, 0
mov r2, r8
mov r3, r9
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
add sp, 0x1C
pop {r3-r5}
mov r8, r3
diff --git a/asm/menu2.s b/asm/menu2.s
deleted file mode 100644
index c196f77b4..000000000
--- a/asm/menu2.s
+++ /dev/null
@@ -1,563 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start box_print
-box_print: @ 812E51C
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r1, 0
- ldr r6, [sp, 0x20]
- ldr r5, [sp, 0x24]
- ldr r1, [sp, 0x28]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r1, [sp]
- mov r1, sp
- strb r0, [r1, 0x4]
- mov r0, sp
- strb r4, [r0, 0x5]
- strb r2, [r0, 0x6]
- strb r3, [r0, 0x7]
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- adds r0, r4, 0
- movs r1, 0x2
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xA]
- adds r0, r4, 0
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xB]
- mov r3, sp
- ldrb r2, [r3, 0xC]
- movs r1, 0x10
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3, 0xC]
- mov r2, sp
- ldrb r0, [r6, 0x1]
- lsls r0, 4
- movs r4, 0xF
- strb r0, [r2, 0xC]
- ldrb r2, [r6]
- adds r0, r4, 0
- ands r0, r2
- ldrb r2, [r3, 0xD]
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- mov r2, sp
- ldrb r0, [r6, 0x2]
- lsls r0, 4
- ands r1, r4
- orrs r1, r0
- strb r1, [r2, 0xD]
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end box_print
-
- thumb_func_start AddTextPrinterParametrized2
-AddTextPrinterParametrized2: @ 812E5A4
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- adds r5, r1, 0
- ldr r1, [sp, 0x28]
- mov r8, r1
- ldr r1, [sp, 0x2C]
- mov r9, r1
- ldr r6, [sp, 0x30]
- ldr r1, [sp, 0x34]
- ldr r4, [sp, 0x38]
- str r4, [sp]
- mov r4, sp
- strb r0, [r4, 0x4]
- mov r0, sp
- strb r5, [r0, 0x5]
- strb r2, [r0, 0x6]
- strb r3, [r0, 0x7]
- mov r2, sp
- ldrb r0, [r0, 0x6]
- strb r0, [r2, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x7]
- strb r0, [r2, 0x9]
- mov r0, sp
- mov r2, r8
- strb r2, [r0, 0xA]
- mov r2, r9
- strb r2, [r0, 0xB]
- ldrb r3, [r4, 0xC]
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r4, 0xC]
- mov r3, sp
- ldrb r0, [r6, 0x1]
- lsls r0, 4
- movs r5, 0xF
- strb r0, [r3, 0xC]
- ldrb r3, [r6]
- adds r0, r5, 0
- ands r0, r3
- ldrb r3, [r4, 0xD]
- ands r2, r3
- orrs r2, r0
- strb r2, [r4, 0xD]
- mov r3, sp
- ldrb r0, [r6, 0x2]
- lsls r0, 4
- ands r2, r5
- orrs r2, r0
- strb r2, [r3, 0xD]
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end AddTextPrinterParametrized2
-
- thumb_func_start sub_812E62C
-sub_812E62C: @ 812E62C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r6, r1, 0
- ldr r4, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- mov r8, r1
- ldr r7, [sp, 0x34]
- ldr r5, [sp, 0x38]
- ldr r1, [sp, 0x3C]
- mov r9, r1
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- str r2, [sp]
- mov r1, sp
- strb r0, [r1, 0x4]
- mov r0, sp
- strb r6, [r0, 0x5]
- strb r3, [r0, 0x6]
- strb r4, [r0, 0x7]
- strb r3, [r0, 0x8]
- strb r4, [r0, 0x9]
- strb r5, [r0, 0xA]
- mov r1, r9
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r5, 0x10
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- strb r0, [r2, 0xC]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r4, 0xF
- adds r1, r4, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- mov r2, sp
- adds r1, r4, 0
- ands r1, r0
- ldrb r0, [r2, 0xD]
- ands r5, r0
- orrs r5, r1
- strb r5, [r2, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- mov r2, sp
- lsls r0, 4
- ldrb r1, [r2, 0xD]
- ands r4, r1
- orrs r4, r0
- strb r4, [r2, 0xD]
- mov r0, sp
- mov r1, r8
- adds r2, r7, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812E62C
-
- thumb_func_start sub_812E6DC
-sub_812E6DC: @ 812E6DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r2, 16
- lsrs r5, r2, 16
- lsls r3, 16
- lsrs r6, r3, 16
- movs r4, 0
- ldr r0, _0812E734 @ =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r2]
- ldr r7, _0812E738 @ =gStringVar4
- cmp r0, 0xFF
- beq _0812E70A
-_0812E700:
- adds r4, 0x1
- adds r0, r2, r4
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812E700
-_0812E70A:
- adds r0, r7, 0
- bl StringExpandPlaceholders
- cmp r4, 0x5
- beq _0812E73C
- lsls r3, r5, 24
- lsrs r3, 24
- lsls r0, r6, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r8
- movs r1, 0x2
- adds r2, r7, 0
- bl AddTextPrinterParameterized
- b _0812E75C
- .align 2, 0
-_0812E734: .4byte gSaveBlock2Ptr
-_0812E738: .4byte gStringVar4
-_0812E73C:
- lsls r3, r5, 24
- lsrs r3, 24
- lsls r0, r6, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- str r0, [sp, 0x10]
- mov r0, r8
- movs r1, 0x2
- adds r2, r7, 0
- bl sub_812E62C
-_0812E75C:
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812E6DC
-
- thumb_func_start sub_812E768
-sub_812E768: @ 812E768
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, [sp, 0x48]
- ldr r4, [sp, 0x4C]
- ldr r1, [sp, 0x50]
- ldr r5, [sp, 0x54]
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x8]
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- lsls r4, 16
- lsrs r4, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r2, [sp, 0x4]
- ldrh r0, [r2, 0x4]
- ldr r2, [sp, 0xC]
- subs r0, r2
- ldr r2, [sp, 0x8]
- adds r2, r1, r2
- str r2, [sp, 0x10]
- cmp r0, r1
- bge _0812E7B4
- ldr r1, [sp, 0x8]
- adds r0, r1
- str r0, [sp, 0x10]
-_0812E7B4:
- ldr r2, [sp, 0x4]
- ldrh r1, [r2, 0x6]
- subs r0, r1, r4
- cmp r0, r5
- bge _0812E7C6
- adds r0, r3, r1
- subs r0, r4
- str r0, [sp, 0x14]
- b _0812E7CA
-_0812E7C6:
- adds r5, r3, r5
- str r5, [sp, 0x14]
-_0812E7CA:
- ldr r0, [sp]
- ldrh r1, [r0, 0x4]
- movs r2, 0x7
- adds r0, r1, 0
- ands r0, r2
- adds r1, r0
- asrs r1, 3
- str r1, [sp, 0x18]
- ldr r0, [sp, 0x4]
- ldrh r1, [r0, 0x4]
- adds r0, r1, 0
- ands r0, r2
- adds r1, r0
- asrs r1, 3
- str r1, [sp, 0x1C]
- mov r12, r3
- mov r8, r4
- ldr r1, [sp, 0x14]
- cmp r12, r1
- blt _0812E7F4
- b _0812E932
-_0812E7F4:
- ldr r5, [sp, 0x8]
- ldr r6, [sp, 0xC]
- mov r2, r12
- adds r2, 0x1
- str r2, [sp, 0x20]
- mov r0, r8
- adds r0, 0x1
- str r0, [sp, 0x24]
- ldr r1, [sp, 0x10]
- cmp r5, r1
- blt _0812E80C
- b _0812E922
-_0812E80C:
- movs r7, 0x1
- movs r2, 0xF0
- mov r10, r2
- movs r0, 0xF
- mov r9, r0
-_0812E816:
- asrs r0, r5, 1
- movs r1, 0x3
- ands r0, r1
- ldr r2, [sp]
- ldr r1, [r2]
- adds r1, r0
- asrs r0, r5, 3
- lsls r0, 5
- adds r1, r0
- mov r2, r12
- asrs r0, r2, 3
- ldr r2, [sp, 0x18]
- muls r0, r2
- lsls r0, 5
- adds r1, r0
- mov r2, r12
- lsls r0, r2, 29
- lsrs r0, 27
- adds r3, r1, r0
- asrs r0, r6, 1
- movs r1, 0x3
- ands r0, r1
- ldr r2, [sp, 0x4]
- ldr r1, [r2]
- adds r1, r0
- asrs r0, r6, 3
- lsls r0, 5
- adds r1, r0
- mov r2, r8
- asrs r0, r2, 3
- ldr r2, [sp, 0x1C]
- muls r0, r2
- lsls r0, 5
- adds r1, r0
- mov r2, r8
- lsls r0, r2, 29
- lsrs r0, 27
- adds r4, r1, r0
- adds r0, r4, 0
- ands r0, r7
- cmp r0, 0
- beq _0812E8C2
- subs r4, 0x1
- adds r0, r6, 0
- ands r0, r7
- cmp r0, 0
- beq _0812E89A
- ldrh r0, [r4]
- ldr r2, _0812E88C @ =0x00000fff
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0812E890
- ldrb r1, [r3]
- mov r0, r10
- ands r0, r1
- lsls r0, 8
- b _0812E912
- .align 2, 0
-_0812E88C: .4byte 0x00000fff
-_0812E890:
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- lsls r0, 12
- b _0812E912
-_0812E89A:
- ldrh r0, [r4]
- ldr r2, _0812E8B4 @ =0x0000f0ff
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0812E8B8
- ldrb r1, [r3]
- mov r0, r10
- ands r0, r1
- lsls r0, 4
- b _0812E912
- .align 2, 0
-_0812E8B4: .4byte 0x0000f0ff
-_0812E8B8:
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- lsls r0, 8
- b _0812E912
-_0812E8C2:
- adds r0, r6, 0
- ands r0, r7
- cmp r0, 0
- beq _0812E8EE
- ldrh r0, [r4]
- ldr r2, _0812E8E0 @ =0x0000ff0f
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0812E8E4
- ldrb r1, [r3]
- mov r0, r10
- b _0812E910
- .align 2, 0
-_0812E8E0: .4byte 0x0000ff0f
-_0812E8E4:
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- lsls r0, 4
- b _0812E912
-_0812E8EE:
- ldrh r0, [r4]
- ldr r2, _0812E908 @ =0x0000fff0
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0812E90C
- ldrb r1, [r3]
- mov r0, r10
- ands r0, r1
- lsrs r0, 4
- b _0812E912
- .align 2, 0
-_0812E908: .4byte 0x0000fff0
-_0812E90C:
- ldrb r1, [r3]
- mov r0, r9
-_0812E910:
- ands r0, r1
-_0812E912:
- orrs r2, r0
- strh r2, [r4]
- adds r5, 0x1
- adds r6, 0x1
- ldr r0, [sp, 0x10]
- cmp r5, r0
- bge _0812E922
- b _0812E816
-_0812E922:
- ldr r1, [sp, 0x20]
- mov r12, r1
- ldr r2, [sp, 0x24]
- mov r8, r2
- ldr r0, [sp, 0x14]
- cmp r12, r0
- bge _0812E932
- b _0812E7F4
-_0812E932:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812E768
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/menu_indicators.s b/asm/menu_indicators.s
index 0dad7d3c1..5ae7a46c4 100644
--- a/asm/menu_indicators.s
+++ b/asm/menu_indicators.s
@@ -38,7 +38,7 @@ _0813392A:
_0813393A:
movs r0, 0x34
ldrsh r3, [r4, r0]
- ldr r1, _0813395C @ =gUnknown_825E074
+ ldr r1, _0813395C @ =gSineTable
ldrh r2, [r4, 0x38]
lsls r0, r2, 24
lsrs r0, 23
@@ -54,11 +54,11 @@ _08133954:
strh r0, [r4, 0x24]
b _0813397E
.align 2, 0
-_0813395C: .4byte gUnknown_825E074
+_0813395C: .4byte gSineTable
_08133960:
movs r0, 0x34
ldrsh r3, [r4, r0]
- ldr r1, _0813398C @ =gUnknown_825E074
+ ldr r1, _0813398C @ =gSineTable
ldrh r2, [r4, 0x38]
lsls r0, r2, 24
lsrs r0, 23
@@ -81,7 +81,7 @@ _08133984:
pop {r0}
bx r0
.align 2, 0
-_0813398C: .4byte gUnknown_825E074
+_0813398C: .4byte gSineTable
thumb_func_end sub_8133904
thumb_func_start AddScrollIndicatorArrowObject
@@ -959,7 +959,7 @@ _0813403C: .4byte gSprites
ObjectCB_RedArrowCursor: @ 8134040
push {lr}
adds r2, r0, 0
- ldr r1, _08134068 @ =gUnknown_825E074
+ ldr r1, _08134068 @ =gSineTable
ldrh r3, [r2, 0x2E]
lsls r0, r3, 24
lsrs r0, 23
@@ -978,7 +978,7 @@ _08134058:
pop {r0}
bx r0
.align 2, 0
-_08134068: .4byte gUnknown_825E074
+_08134068: .4byte gSineTable
thumb_func_end ObjectCB_RedArrowCursor
thumb_func_start nullsub_95
diff --git a/asm/mystery_gift_menu.s b/asm/mystery_gift_menu.s
index 790c3c0b2..d6be6db09 100644
--- a/asm/mystery_gift_menu.s
+++ b/asm/mystery_gift_menu.s
@@ -64,7 +64,7 @@ _081420D6:
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0x1
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _081421E0 @ =gUnknown_8466D60
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
index b3c9d1f73..01217d92f 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -401,8 +401,8 @@ _0809DBD6:
movs r1, 0
movs r2, 0
bl ChangeBgY
- bl sub_80F6C6C
- bl sub_80F6C98
+ bl InitStandardTextBoxWindows
+ bl ResetBg0
_0809DCA4:
lsls r0, r4, 3
ldr r1, _0809DD50 @ =gUnknown_83E22A0
@@ -493,7 +493,7 @@ sub_809DD60: @ 809DD60
bl SetMainCallback2
bl sub_812B234
movs r0, 0x3
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
pop {r0}
bx r0
.align 2, 0
@@ -959,13 +959,13 @@ _0809E156:
bl StringExpandPlaceholders
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r2, _0809E1D0 @ =gTextFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/new_game.s b/asm/new_game.s
index cec2b2c9a..d1d5a1487 100644
--- a/asm/new_game.s
+++ b/asm/new_game.s
@@ -257,7 +257,7 @@ sub_8054A60: @ 8054A60
strb r5, [r0]
bl ZeroPlayerPartyMons
bl sub_808C7E0
- bl sub_8141C54
+ bl ClearRoamerData
ldr r0, [r6]
ldr r1, _08054B68 @ =0x00000296
adds r0, r1
diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s
index b3844a165..bf2578249 100644
--- a/asm/new_menu_helpers.s
+++ b/asm/new_menu_helpers.s
@@ -672,8 +672,8 @@ sub_80F6C14: @ 80F6C14
bx r0
thumb_func_end sub_80F6C14
- thumb_func_start sub_80F6C6C
-sub_80F6C6C: @ 80F6C6C
+ thumb_func_start InitStandardTextBoxWindows
+InitStandardTextBoxWindows: @ 80F6C6C
push {lr}
ldr r0, _080F6C84 @ =gUnknown_841F42C
bl InitWindows
@@ -686,7 +686,7 @@ sub_80F6C6C: @ 80F6C6C
.align 2, 0
_080F6C84: .4byte gUnknown_841F42C
_080F6C88: .4byte gUnknown_203ABE0
- thumb_func_end sub_80F6C6C
+ thumb_func_end InitStandardTextBoxWindows
thumb_func_start sub_80F6C8C
sub_80F6C8C: @ 80F6C8C
@@ -696,8 +696,8 @@ sub_80F6C8C: @ 80F6C8C
bx r0
thumb_func_end sub_80F6C8C
- thumb_func_start sub_80F6C98
-sub_80F6C98: @ 80F6C98
+ thumb_func_start ResetBg0
+ResetBg0: @ 80F6C98
push {lr}
movs r0, 0
movs r1, 0
@@ -711,7 +711,7 @@ sub_80F6C98: @ 80F6C98
bl sub_80F6E9C
pop {r0}
bx r0
- thumb_func_end sub_80F6C98
+ thumb_func_end ResetBg0
thumb_func_start sub_80F6CBC
sub_80F6CBC: @ 80F6CBC
@@ -819,7 +819,7 @@ sub_80F6D5C: @ 80F6D5C
lsrs r0, 24
cmp r0, 0
bne _080F6DB0
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -840,7 +840,7 @@ _080F6DAC: .4byte gStringVar4
_080F6DB0:
cmp r0, 0x1
bne _080F6DDC
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -858,7 +858,7 @@ _080F6DB0:
.align 2, 0
_080F6DD8: .4byte gStringVar4
_080F6DDC:
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -896,7 +896,7 @@ sub_80F6E08: @ 80F6E08
ands r1, r2
orrs r1, r0
strb r1, [r3]
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -995,8 +995,8 @@ _080F6ED4:
bx r0
thumb_func_end sub_80F6E9C
- thumb_func_start sub_80F6EE4
-sub_80F6EE4: @ 80F6EE4
+ thumb_func_start DrawDialogueFrame
+DrawDialogueFrame: @ 80F6EE4
push {r4,r5,lr}
adds r4, r1, 0
lsls r0, 24
@@ -1022,10 +1022,10 @@ _080F6F12:
bx r0
.align 2, 0
_080F6F18: .4byte sub_80F7124
- thumb_func_end sub_80F6EE4
+ thumb_func_end DrawDialogueFrame
- thumb_func_start sub_80F6F1C
-sub_80F6F1C: @ 80F6F1C
+ thumb_func_start DrawStdWindowFrame
+DrawStdWindowFrame: @ 80F6F1C
push {r4,r5,lr}
adds r4, r1, 0
lsls r0, 24
@@ -1051,10 +1051,10 @@ _080F6F4A:
bx r0
.align 2, 0
_080F6F50: .4byte sub_80F6FD4
- thumb_func_end sub_80F6F1C
+ thumb_func_end DrawStdWindowFrame
- thumb_func_start sub_80F6F54
-sub_80F6F54: @ 80F6F54
+ thumb_func_start ClearDialogWindowAndFrame
+ClearDialogWindowAndFrame: @ 80F6F54
push {r4,r5,lr}
adds r4, r1, 0
lsls r0, 24
@@ -1087,10 +1087,10 @@ _080F6F8E:
.align 2, 0
_080F6F94: .4byte sub_80F76CC
_080F6F98: .4byte gUnknown_203ADFA
- thumb_func_end sub_80F6F54
+ thumb_func_end ClearDialogWindowAndFrame
- thumb_func_start sub_80F6F9C
-sub_80F6F9C: @ 80F6F9C
+ thumb_func_start ClearStdWindowAndFrame
+ClearStdWindowAndFrame: @ 80F6F9C
push {r4,r5,lr}
adds r4, r1, 0
lsls r0, 24
@@ -1116,7 +1116,7 @@ _080F6FCA:
bx r0
.align 2, 0
_080F6FD0: .4byte sub_80F7684
- thumb_func_end sub_80F6F9C
+ thumb_func_end ClearStdWindowAndFrame
thumb_func_start sub_80F6FD4
sub_80F6FD4: @ 80F6FD4
@@ -2059,8 +2059,8 @@ sub_80F77B8: @ 80F77B8
_080F77C8: .4byte gUnknown_841F408
thumb_func_end sub_80F77B8
- thumb_func_start sub_80F77CC
-sub_80F77CC: @ 80F77CC
+ thumb_func_start Menu_LoadStdPalAt
+Menu_LoadStdPalAt: @ 80F77CC
push {lr}
adds r1, r0, 0
lsls r1, 16
@@ -2072,7 +2072,7 @@ sub_80F77CC: @ 80F77CC
bx r0
.align 2, 0
_080F77E0: .4byte gUnknown_841F408
- thumb_func_end sub_80F77CC
+ thumb_func_end Menu_LoadStdPalAt
thumb_func_start sub_80F77E4
sub_80F77E4: @ 80F77E4
@@ -2116,7 +2116,7 @@ DisplayItemMessageOnField: @ 80F7808
lsls r4, 24
lsrs r4, 24
bl sub_80F6E9C
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
@@ -2187,8 +2187,8 @@ sub_80F7880: @ 80F7880
_080F78A4: .4byte gUnknown_841F43C
thumb_func_end sub_80F7880
- thumb_func_start sub_80F78A8
-sub_80F78A8: @ 80F78A8
+ thumb_func_start GetTextSpeedSetting
+GetTextSpeedSetting: @ 80F78A8
push {lr}
ldr r3, _080F78D8 @ =gSaveBlock2Ptr
ldr r2, [r3]
@@ -2216,7 +2216,7 @@ _080F78C4:
.align 2, 0
_080F78D8: .4byte gSaveBlock2Ptr
_080F78DC: .4byte gUnknown_841F428
- thumb_func_end sub_80F78A8
+ thumb_func_end GetTextSpeedSetting
thumb_func_start sub_80F78E0
sub_80F78E0: @ 80F78E0
diff --git a/asm/oak_speech.s b/asm/oak_speech.s
deleted file mode 100644
index 5f2326487..000000000
--- a/asm/oak_speech.s
+++ /dev/null
@@ -1,5728 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_812E944
-sub_812E944: @ 812E944
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r0
- adds r0, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r1, [sp, 0x20]
- mov r8, r1
- ldr r1, [sp, 0x24]
- mov r2, r10
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0812E9DC @ =sub_812E9F8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0812E9E0 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- mov r1, r10
- lsls r0, r1, 8
- strh r0, [r4, 0x8]
- lsls r2, r7, 8
- mov r9, r2
- strh r2, [r4, 0xA]
- strh r5, [r4, 0xC]
- strh r6, [r4, 0xE]
- subs r5, r1
- lsls r5, 8
- adds r0, r5, 0
- mov r1, r8
- bl __divsi3
- strh r0, [r4, 0x10]
- subs r6, r7
- lsls r6, 8
- adds r0, r6, 0
- mov r1, r8
- bl __divsi3
- strh r0, [r4, 0x12]
- mov r0, r8
- strh r0, [r4, 0x18]
- mov r1, r9
- mov r2, r10
- orrs r1, r2
- mov r9, r1
- movs r0, 0x52
- bl SetGpuReg
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812E9DC: .4byte sub_812E9F8
-_0812E9E0: .4byte gTasks
- thumb_func_end sub_812E944
-
- thumb_func_start sub_812E9E4
-sub_812E9E4: @ 812E9E4
- push {lr}
- ldr r0, _0812E9F4 @ =sub_812E9F8
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0812E9F4: .4byte sub_812E9F8
- thumb_func_end sub_812E9E4
-
- thumb_func_start sub_812E9F8
-sub_812E9F8: @ 812E9F8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0812EA28 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r1, [r4, 0x10]
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0812EA6E
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0812EA2C
- ldrh r0, [r4, 0x8]
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r4]
- movs r0, 0x1
- b _0812EA4C
- .align 2, 0
-_0812EA28: .4byte gTasks+0x8
-_0812EA2C:
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- beq _0812EA3E
- ldrh r0, [r4, 0xA]
- ldrh r2, [r4, 0x2]
- adds r0, r2
- b _0812EA48
-_0812EA3E:
- ldrh r0, [r4, 0x4]
- lsls r0, 8
- strh r0, [r4]
- ldrh r0, [r4, 0x6]
- lsls r0, 8
-_0812EA48:
- strh r0, [r4, 0x2]
- movs r0, 0
-_0812EA4C:
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x2]
- ldr r1, _0812EA74 @ =0xffffff00
- ands r1, r0
- ldrh r0, [r4]
- lsrs r0, 8
- orrs r1, r0
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0812EA6E
- adds r0, r5, 0
- bl DestroyTask
-_0812EA6E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812EA74: .4byte 0xffffff00
- thumb_func_end sub_812E9F8
-
- thumb_func_start sub_812EA78
-sub_812EA78: @ 812EA78
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r2, 24
- lsrs r5, r2, 24
- cmp r4, 0xC9
- bne _0812EAB8
- adds r0, r1, 0
- bl sub_8082AB8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1A
- beq _0812EAA4
- cmp r0, 0x1A
- bgt _0812EA9E
- cmp r0, 0
- beq _0812EAB8
- b _0812EAB4
-_0812EA9E:
- cmp r0, 0x1B
- beq _0812EAAA
- b _0812EAB4
-_0812EAA4:
- movs r4, 0xCE
- lsls r4, 1
- b _0812EABC
-_0812EAAA:
- ldr r4, _0812EAB0 @ =0x0000019d
- b _0812EABC
- .align 2, 0
-_0812EAB0: .4byte 0x0000019d
-_0812EAB4:
- adds r4, r0, 0
- adds r4, 0xFB
-_0812EAB8:
- cmp r4, 0
- beq _0812EAD6
-_0812EABC:
- cmp r5, 0x4
- bhi _0812EAD6
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r1, _0812EAE0 @ =gUnknown_845FD54
- lsls r0, r4, 2
- adds r0, r4
- adds r0, r5, r0
- adds r2, r0, r1
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _0812EAD8
-_0812EAD6:
- movs r0, 0x20
-_0812EAD8:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812EAE0: .4byte gUnknown_845FD54
- thumb_func_end sub_812EA78
-
- thumb_func_start sub_812EAE4
-sub_812EAE4: @ 812EAE4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r2, 24
- lsrs r2, 24
- bl sub_812EA78
- subs r0, 0x20
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_812EAE4
-
- thumb_func_start sub_812EAFC
-sub_812EAFC: @ 812EAFC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_812EAFC
-
- thumb_func_start sub_812EB10
-sub_812EB10: @ 812EB10
- push {lr}
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_812EB10
-
- thumb_func_start sub_812EB2C
-sub_812EB2C: @ 812EB2C
- push {lr}
- ldr r0, _0812EB48 @ =gPlttBufferUnfaded
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0812EB4C @ =gPlttBufferFaded
- strh r1, [r0]
- ldr r0, _0812EB50 @ =sub_812EB58
- bl CreateTask
- ldr r0, _0812EB54 @ =sub_812EB10
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0812EB48: .4byte gPlttBufferUnfaded
-_0812EB4C: .4byte gPlttBufferFaded
-_0812EB50: .4byte sub_812EB58
-_0812EB54: .4byte sub_812EB10
- thumb_func_end sub_812EB2C
-
- thumb_func_start sub_812EB58
-sub_812EB58: @ 812EB58
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0812EB7C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xA
- bls _0812EB70
- b _0812EE94
-_0812EB70:
- lsls r0, 2
- ldr r1, _0812EB80 @ =_0812EB84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812EB7C: .4byte gMain
-_0812EB80: .4byte _0812EB84
- .align 2, 0
-_0812EB84:
- .4byte _0812EBB0
- .4byte _0812EC28
- .4byte _0812EC44
- .4byte _0812EC8E
- .4byte _0812ED00
- .4byte _0812ED3C
- .4byte _0812ED6C
- .4byte _0812ED9A
- .4byte _0812EE94
- .4byte _0812EE94
- .4byte _0812EE30
-_0812EBB0:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- add r1, sp, 0x8
- movs r0, 0
- strh r0, [r1]
- ldr r1, _0812EC14 @ =0x040000d4
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _0812EC18 @ =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0
- str r2, [sp, 0xC]
- add r0, sp, 0xC
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _0812EC1C @ =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x8
- strh r2, [r0]
- str r0, [r1]
- ldr r0, _0812EC20 @ =0x05000002
- str r0, [r1, 0x4]
- ldr r0, _0812EC24 @ =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- bl remove_some_task
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl reset_temp_tile_data_buffers
- movs r0, 0x2
- bl sub_812B1F0
- b _0812EE94
- .align 2, 0
-_0812EC14: .4byte 0x040000d4
-_0812EC18: .4byte 0x8100c000
-_0812EC1C: .4byte 0x85000100
-_0812EC20: .4byte 0x05000002
-_0812EC24: .4byte 0x810001ff
-_0812EC28:
- ldr r4, _0812EC3C @ =gUnknown_203B108
- ldr r0, _0812EC40 @ =0x00002420
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0x1
- movs r1, 0x1
- bl sub_8044AF0
- b _0812EE94
- .align 2, 0
-_0812EC3C: .4byte gUnknown_203B108
-_0812EC40: .4byte 0x00002420
-_0812EC44:
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x46
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- b _0812EE94
-_0812EC8E:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0812ECF0 @ =gUnknown_8462E58
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, _0812ECF4 @ =gUnknown_203B108
- ldr r1, [r4]
- movs r0, 0xE1
- lsls r0, 5
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- movs r0, 0xC1
- lsls r0, 5
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r0, _0812ECF8 @ =gSpriteCoordOffsetX
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0812ECFC @ =gSpriteCoordOffsetY
- strh r1, [r0]
- b _0812EE94
- .align 2, 0
-_0812ECF0: .4byte gUnknown_8462E58
-_0812ECF4: .4byte gUnknown_203B108
-_0812ECF8: .4byte gSpriteCoordOffsetX
-_0812ECFC: .4byte gSpriteCoordOffsetY
-_0812ED00:
- ldr r2, _0812ED34 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- bl sub_80F6C6C
- bl sub_80F6C98
- movs r0, 0xD0
- bl sub_80F77CC
- ldr r0, _0812ED38 @ =gUnknown_8460568
- movs r1, 0
- movs r2, 0x80
- bl LoadPalette
- movs r0, 0x2
- bl stdpal_get
- adds r0, 0x1E
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- b _0812EE94
- .align 2, 0
-_0812ED34: .4byte gPaletteFade
-_0812ED38: .4byte gUnknown_8460568
-_0812ED3C:
- bl sub_80F78A8
- ldr r1, _0812ED60 @ =gUnknown_203B108
- ldr r1, [r1]
- movs r3, 0
- strb r0, [r1, 0x1F]
- ldr r2, _0812ED64 @ =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0812ED68 @ =gUnknown_84605E8
- str r3, [sp]
- movs r0, 0x1
- movs r2, 0
- bl decompress_and_copy_tile_data_to_vram
- b _0812EE94
- .align 2, 0
-_0812ED60: .4byte gUnknown_203B108
-_0812ED64: .4byte gTextFlags
-_0812ED68: .4byte gUnknown_84605E8
-_0812ED6C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _0812ED78
- b _0812EEA2
-_0812ED78:
- movs r0, 0
- movs r1, 0x1
- bl sub_80F6F54
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _0812EE94
-_0812ED9A:
- movs r0, 0xE2
- lsls r0, 1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x1E
- movs r2, 0
- movs r3, 0xD
- bl sub_810F558
- ldr r1, _0812EE1C @ =0x0000d00f
- movs r4, 0x1E
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _0812EE20 @ =0x0000d002
- str r4, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _0812EE24 @ =0x0000d00e
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0x13
- bl FillBgTilemapBufferRect_Palette0
- bl sub_812EEB0
- ldr r2, _0812EE28 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0
- str r0, [sp]
- movs r1, 0xE6
- movs r2, 0x95
- movs r3, 0
- bl sub_8006300
- ldr r2, _0812EE2C @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x12]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- b _0812EE94
- .align 2, 0
-_0812EE1C: .4byte 0x0000d00f
-_0812EE20: .4byte 0x0000d002
-_0812EE24: .4byte 0x0000d00e
-_0812EE28: .4byte gPaletteFade
-_0812EE2C: .4byte gTasks
-_0812EE30:
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- ldr r0, _0812EE80 @ =sub_812EAFC
- bl SetVBlankCallback
- ldr r0, _0812EE84 @ =0x00000143
- bl PlayBGM
- ldr r1, _0812EE88 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812EE8C @ =sub_812F0B0
- str r1, [r0]
- ldr r0, _0812EE90 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- strb r4, [r0]
- b _0812EEA2
- .align 2, 0
-_0812EE80: .4byte sub_812EAFC
-_0812EE84: .4byte 0x00000143
-_0812EE88: .4byte gTasks
-_0812EE8C: .4byte sub_812F0B0
-_0812EE90: .4byte gMain
-_0812EE94:
- ldr r1, _0812EEAC @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0812EEA2:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812EEAC: .4byte gMain
- thumb_func_end sub_812EB58
-
- thumb_func_start sub_812EEB0
-sub_812EEB0: @ 812EEB0
- push {r4-r6,lr}
- sub sp, 0x14
- ldr r0, _0812EF38 @ =gUnknown_8415D2C
- ldr r1, _0812EF3C @ =gUnknown_8415D48
- movs r5, 0x1
- str r5, [sp]
- movs r2, 0
- movs r3, 0
- bl sub_810F650
- ldr r1, _0812EF40 @ =gUnknown_8462EB4
- ldr r4, _0812EF44 @ =gUnknown_203B108
- ldr r0, [r4]
- ldrh r0, [r0, 0x12]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl AddWindow
- ldr r1, [r4]
- movs r6, 0
- strh r0, [r1, 0x14]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldr r0, [r4]
- ldrb r0, [r0, 0x14]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r4]
- ldrb r0, [r0, 0x14]
- str r5, [sp]
- str r5, [sp, 0x4]
- ldr r1, _0812EF48 @ =gUnknown_8462EE8
- str r1, [sp, 0x8]
- str r6, [sp, 0xC]
- ldr r1, _0812EF4C @ =gUnknown_81C582D
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0x2
- movs r3, 0
- bl AddTextPrinterParametrized2
- ldr r0, [r4]
- ldrb r0, [r0, 0x14]
- movs r1, 0x3
- bl CopyWindowToVram
- movs r1, 0xC0
- lsls r1, 6
- movs r0, 0x5
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0x1
- movs r3, 0x3
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812EF38: .4byte gUnknown_8415D2C
-_0812EF3C: .4byte gUnknown_8415D48
-_0812EF40: .4byte gUnknown_8462EB4
-_0812EF44: .4byte gUnknown_203B108
-_0812EF48: .4byte gUnknown_8462EE8
-_0812EF4C: .4byte gUnknown_81C582D
- thumb_func_end sub_812EEB0
-
- thumb_func_start sub_812EF50
-sub_812EF50: @ 812EF50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r6, 0
- ldr r4, _0812EF80 @ =gUnknown_203B108
- ldr r0, [r4]
- ldrh r1, [r0, 0x12]
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r1, 0
- bne _0812EF84
- bl sub_812EEB0
- mov r0, r8
- lsls r0, 2
- mov r10, r0
- b _0812F06A
- .align 2, 0
-_0812EF80: .4byte gUnknown_203B108
-_0812EF84:
- ldr r0, _0812F038 @ =gUnknown_8415D50
- movs r1, 0
- movs r2, 0x1
- bl sub_810F5E8
- lsls r1, r7, 1
- mov r9, r1
- mov r3, r8
- lsls r3, 2
- mov r10, r3
- adds r5, r4, 0
-_0812EF9A:
- ldr r1, _0812F03C @ =gUnknown_8462EB4
- ldr r0, [r5]
- ldrh r0, [r0, 0x12]
- lsls r0, 2
- adds r0, r1
- lsls r1, r6, 3
- ldr r0, [r0]
- adds r0, r1
- bl AddWindow
- ldr r1, [r5]
- lsls r4, r6, 1
- adds r1, 0x14
- adds r1, r4
- strh r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x1
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r1, _0812F040 @ =gUnknown_8462EE8
- str r1, [sp, 0x8]
- movs r1, 0
- str r1, [sp, 0xC]
- ldr r2, _0812F044 @ =gUnknown_8463074
- mov r3, r9
- adds r1, r3, r7
- adds r1, r6, r1
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0x6
- movs r3, 0
- bl AddTextPrinterParametrized2
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bls _0812EF9A
- ldr r0, _0812F048 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- cmp r0, 0x1
- bne _0812F050
- ldr r1, _0812F04C @ =gUnknown_8460D94
- movs r0, 0x5
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0x1
- movs r3, 0x3
- bl CopyToBgTilemapBufferRect
- b _0812F064
- .align 2, 0
-_0812F038: .4byte gUnknown_8415D50
-_0812F03C: .4byte gUnknown_8462EB4
-_0812F040: .4byte gUnknown_8462EE8
-_0812F044: .4byte gUnknown_8463074
-_0812F048: .4byte gUnknown_203B108
-_0812F04C: .4byte gUnknown_8460D94
-_0812F050:
- ldr r1, _0812F0A0 @ =gUnknown_8460E34
- movs r0, 0x5
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0x1
- movs r3, 0x3
- bl CopyToBgTilemapBufferRect
-_0812F064:
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
-_0812F06A:
- movs r0, 0x2
- bl stdpal_get
- ldrh r2, [r0, 0x1E]
- ldr r0, _0812F0A4 @ =0xffffdfff
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, _0812F0A8 @ =gTasks
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812F0AC @ =sub_812F0B0
- str r1, [r0]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F0A0: .4byte gUnknown_8460E34
-_0812F0A4: .4byte 0xffffdfff
-_0812F0A8: .4byte gTasks
-_0812F0AC: .4byte sub_812F0B0
- thumb_func_end sub_812EF50
-
- thumb_func_start sub_812F0B0
-sub_812F0B0: @ 812F0B0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0812F10C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812F162
- ldr r0, _0812F110 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0812F162
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0812F120
- ldr r1, _0812F114 @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r0, r1
- strh r3, [r0, 0x26]
- ldr r0, _0812F118 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- adds r4, r2, 0
- cmp r0, 0x1
- bhi _0812F150
- movs r0, 0x2
- bl stdpal_get
- ldrh r2, [r0, 0x1E]
- ldr r0, _0812F11C @ =0xffffdfff
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0812F150
- .align 2, 0
-_0812F10C: .4byte gPaletteFade
-_0812F110: .4byte gMain
-_0812F114: .4byte gTasks
-_0812F118: .4byte gUnknown_203B108
-_0812F11C: .4byte 0xffffdfff
-_0812F120:
- ldr r0, _0812F16C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- cmp r0, 0
- beq _0812F162
- ldr r1, _0812F170 @ =gTasks
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812F174 @ =0x0000ffff
- strh r1, [r0, 0x26]
- movs r0, 0x2
- bl stdpal_get
- ldrh r2, [r0, 0x1E]
- ldr r0, _0812F178 @ =0xffffdfff
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0812F150:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0812F170 @ =gTasks
- adds r1, r4, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812F17C @ =sub_812F180
- str r0, [r1]
-_0812F162:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F16C: .4byte gUnknown_203B108
-_0812F170: .4byte gTasks
-_0812F174: .4byte 0x0000ffff
-_0812F178: .4byte 0xffffdfff
-_0812F17C: .4byte sub_812F180
- thumb_func_end sub_812F0B0
-
- thumb_func_start sub_812F180
-sub_812F180: @ 812F180
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0
- mov r8, r0
- ldr r0, _0812F1B0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812F260
- ldr r1, _0812F1B4 @ =gUnknown_203B108
- ldr r0, [r1]
- ldrh r0, [r0, 0x12]
- adds r5, r1, 0
- cmp r0, 0
- bne _0812F1B8
- movs r1, 0x1
- mov r8, r1
- b _0812F1C4
- .align 2, 0
-_0812F1B0: .4byte gPaletteFade
-_0812F1B4: .4byte gUnknown_203B108
-_0812F1B8:
- cmp r0, 0
- blt _0812F1C4
- cmp r0, 0x2
- bgt _0812F1C4
- movs r2, 0x3
- mov r8, r2
-_0812F1C4:
- ldr r2, [r5]
- ldr r1, _0812F244 @ =gTasks
- lsls r3, r7, 2
- adds r0, r3, r7
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x26]
- ldrh r1, [r2, 0x12]
- adds r0, r1
- movs r1, 0
- strh r0, [r2, 0x12]
- lsls r0, 16
- lsrs r0, 16
- mov r9, r3
- cmp r0, 0x2
- bhi _0812F24C
- movs r6, 0
- cmp r1, r8
- bcs _0812F234
-_0812F1EA:
- ldr r0, [r5]
- lsls r4, r6, 1
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- movs r1, 0
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r8
- bcc _0812F1EA
-_0812F234:
- ldr r0, _0812F244 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812F248 @ =sub_812EF50
- str r0, [r1]
- b _0812F260
- .align 2, 0
-_0812F244: .4byte gTasks
-_0812F248: .4byte sub_812EF50
-_0812F24C:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0812F270 @ =sub_812F274
- str r0, [r4]
-_0812F260:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F270: .4byte sub_812F274
- thumb_func_end sub_812F180
-
- thumb_func_start sub_812F274
-sub_812F274: @ 812F274
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r6, 0
- ldr r0, _0812F32C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812F320
- ldr r5, _0812F330 @ =gUnknown_203B108
-_0812F292:
- ldr r0, [r5]
- lsls r4, r6, 1
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl ClearWindowTilemap
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- ldrb r0, [r0]
- bl RemoveWindow
- ldr r0, [r5]
- adds r0, 0x14
- adds r0, r4
- movs r7, 0
- strh r7, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bls _0812F292
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x12
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, _0812F334 @ =gTasks
- mov r1, r8
- lsls r4, r1, 2
- add r4, r8
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x12]
- bl sub_8006398
- ldr r0, _0812F330 @ =gUnknown_203B108
- ldr r0, [r0]
- strh r7, [r0, 0x14]
- adds r0, 0x14
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- movs r0, 0x20
- strh r0, [r4, 0xE]
- ldr r0, _0812F338 @ =sub_812F33C
- str r0, [r4]
-_0812F320:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F32C: .4byte gPaletteFade
-_0812F330: .4byte gUnknown_203B108
-_0812F334: .4byte gTasks
-_0812F338: .4byte sub_812F33C
- thumb_func_end sub_812F274
-
- thumb_func_start sub_812F33C
-sub_812F33C: @ 812F33C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- mov r8, r0
- ldr r0, _0812F370 @ =gTasks+0x8
- mov r9, r0
- mov r5, r8
- add r5, r9
- movs r0, 0
- str r0, [sp, 0x14]
- ldrh r0, [r5, 0x6]
- movs r1, 0x6
- ldrsh r6, [r5, r1]
- cmp r6, 0
- beq _0812F374
- subs r0, 0x1
- strh r0, [r5, 0x6]
- b _0812F476
- .align 2, 0
-_0812F370: .4byte gTasks+0x8
-_0812F374:
- movs r0, 0xA2
- lsls r0, 1
- bl PlayBGM
- bl sub_810F71C
- ldr r0, _0812F484 @ =gUnknown_8415D48
- movs r1, 0
- movs r2, 0x1
- bl sub_810F5E8
- ldr r0, _0812F488 @ =gUnknown_8460BA8
- add r1, sp, 0x14
- bl malloc_and_decompress
- adds r1, r0, 0
- ldr r4, _0812F48C @ =gUnknown_203B108
- ldr r0, [r4]
- str r1, [r0, 0x8]
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x13
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0x2
- bl CopyToBgTilemapBufferRect
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, [r4]
- ldr r0, [r0, 0x8]
- bl Free
- ldr r0, [r4]
- str r6, [r0, 0x8]
- ldr r0, _0812F490 @ =gUnknown_8462EC0
- bl AddWindow
- strh r0, [r5, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldrb r0, [r5, 0x1C]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x1C]
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r4]
- movs r1, 0
- strh r6, [r0, 0x12]
- ldr r0, _0812F494 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- strb r1, [r0]
- movs r0, 0x10
- strh r0, [r5, 0x1E]
- ldrb r0, [r5, 0x1C]
- movs r1, 0x1
- str r1, [sp]
- str r6, [sp, 0x4]
- ldr r1, _0812F498 @ =gUnknown_8462EEC
- str r1, [sp, 0x8]
- str r6, [sp, 0xC]
- ldr r1, _0812F49C @ =gUnknown_8462EF0
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x5
- bl AddTextPrinterParametrized2
- str r6, [sp]
- movs r0, 0
- movs r1, 0xE2
- movs r2, 0x91
- movs r3, 0
- bl sub_8006300
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xA]
- ldr r4, _0812F4A0 @ =gSprites
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x1]
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- ands r3, r1
- strb r3, [r0, 0x5]
- adds r0, r7, 0
- movs r1, 0
- bl sub_8130FD4
- movs r0, 0x1
- negs r0, r0
- str r6, [sp]
- movs r1, 0x2
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, _0812F4A4 @ =sub_812F4A8
- str r1, [r0]
-_0812F476:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F484: .4byte gUnknown_8415D48
-_0812F488: .4byte gUnknown_8460BA8
-_0812F48C: .4byte gUnknown_203B108
-_0812F490: .4byte gUnknown_8462EC0
-_0812F494: .4byte gMain
-_0812F498: .4byte gUnknown_8462EEC
-_0812F49C: .4byte gUnknown_8462EF0
-_0812F4A0: .4byte gSprites
-_0812F4A4: .4byte sub_812F4A8
- thumb_func_end sub_812F33C
-
- thumb_func_start sub_812F4A8
-sub_812F4A8: @ 812F4A8
- push {r4-r7,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r6, r0, 3
- ldr r7, _0812F4D8 @ =gTasks+0x8
- adds r5, r6, r7
- ldr r0, _0812F4DC @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r3, r0, r1
- ldrb r1, [r3]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _0812F4CC
- b _0812F6C0
-_0812F4CC:
- lsls r0, r1, 2
- ldr r1, _0812F4E0 @ =_0812F4E4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812F4D8: .4byte gTasks+0x8
-_0812F4DC: .4byte gMain
-_0812F4E0: .4byte _0812F4E4
- .align 2, 0
-_0812F4E4:
- .4byte _0812F4F8
- .4byte _0812F538
- .4byte _0812F5B4
- .4byte _0812F644
- .4byte _0812F688
-_0812F4F8:
- ldr r0, _0812F534 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0812F506
- b _0812F71C
-_0812F506:
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- movs r1, 0x85
- lsls r1, 5
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x1F
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- b _0812F676
- .align 2, 0
-_0812F534: .4byte gPaletteFade
-_0812F538:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0812F544
- b _0812F71C
-_0812F544:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812F55C
- ldr r0, _0812F558 @ =gUnknown_203B108
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- b _0812F56A
- .align 2, 0
-_0812F558: .4byte gUnknown_203B108
-_0812F55C:
- ldr r0, _0812F58C @ =gUnknown_203B108
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- cmp r0, 0
- bne _0812F568
- b _0812F71C
-_0812F568:
- subs r0, 0x1
-_0812F56A:
- strh r0, [r1, 0x12]
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0812F58C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- cmp r0, 0x3
- bne _0812F594
- ldr r0, _0812F590 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- b _0812F71C
- .align 2, 0
-_0812F58C: .4byte gUnknown_203B108
-_0812F590: .4byte gMain
-_0812F594:
- ldr r1, _0812F5B0 @ =0x00000241
- movs r0, 0x50
- bl SetGpuReg
- ldrh r0, [r5, 0x1E]
- movs r1, 0x10
- subs r1, r0
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _0812F6A2
- .align 2, 0
-_0812F5B0: .4byte 0x00000241
-_0812F5B4:
- ldrh r1, [r5, 0x1E]
- subs r1, 0x2
- strh r1, [r5, 0x1E]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- ble _0812F5D6
- b _0812F71C
-_0812F5D6:
- ldrb r0, [r5, 0x1C]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x1C]
- movs r1, 0x1
- str r1, [sp]
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r1, _0812F620 @ =gUnknown_8462EEC
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r2, _0812F624 @ =gUnknown_8462EF0
- ldr r4, _0812F628 @ =gUnknown_203B108
- ldr r1, [r4]
- ldrh r1, [r1, 0x12]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- str r1, [sp, 0x10]
- movs r1, 0x2
- movs r2, 0x3
- movs r3, 0x5
- bl AddTextPrinterParametrized2
- ldr r0, [r4]
- ldrh r0, [r0, 0x12]
- cmp r0, 0
- bne _0812F630
- bl sub_810F71C
- ldr r0, _0812F62C @ =gUnknown_8415D48
- movs r1, 0
- movs r2, 0x1
- bl sub_810F5E8
- b _0812F6A2
- .align 2, 0
-_0812F620: .4byte gUnknown_8462EEC
-_0812F624: .4byte gUnknown_8462EF0
-_0812F628: .4byte gUnknown_203B108
-_0812F62C: .4byte gUnknown_8415D48
-_0812F630:
- bl sub_810F71C
- ldr r0, _0812F640 @ =gUnknown_8415D50
- movs r1, 0
- movs r2, 0x1
- bl sub_810F5E8
- b _0812F6A2
- .align 2, 0
-_0812F640: .4byte gUnknown_8415D50
-_0812F644:
- ldrh r1, [r5, 0x1E]
- adds r1, 0x2
- strh r1, [r5, 0x1E]
- movs r4, 0x10
- subs r0, r4, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- cmp r0, 0xF
- ble _0812F71C
- strh r4, [r5, 0x1E]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
-_0812F676:
- ldr r0, _0812F684 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _0812F71C
- .align 2, 0
-_0812F684: .4byte gMain
-_0812F688:
- ldr r1, _0812F6B4 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x12]
- bl sub_8006398
- ldr r0, _0812F6B8 @ =0x00000145
- bl PlayBGM
- movs r0, 0x18
- strh r0, [r5, 0x1E]
-_0812F6A2:
- ldr r1, _0812F6BC @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0812F71C
- .align 2, 0
-_0812F6B4: .4byte gTasks
-_0812F6B8: .4byte 0x00000145
-_0812F6BC: .4byte gMain
-_0812F6C0:
- ldrh r0, [r5, 0x1E]
- movs r1, 0x1E
- ldrsh r4, [r5, r1]
- cmp r4, 0
- beq _0812F6D0
- subs r0, 0x1
- strh r0, [r5, 0x1E]
- b _0812F71C
-_0812F6D0:
- strb r4, [r3]
- ldr r0, _0812F724 @ =gUnknown_203B108
- ldr r0, [r0]
- strh r4, [r0, 0x12]
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0812F728 @ =sub_812F72C
- str r1, [r0]
-_0812F71C:
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F724: .4byte gUnknown_203B108
-_0812F728: .4byte sub_812F72C
- thumb_func_end sub_812F4A8
-
- thumb_func_start sub_812F72C
-sub_812F72C: @ 812F72C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r7, r0, 3
- ldr r0, _0812F7B4 @ =gTasks+0x8
- mov r8, r0
- adds r4, r7, r0
- ldr r0, _0812F7B8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _0812F7A6
- bl sub_810F740
- ldrb r0, [r4, 0x1C]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x1C]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0x1C]
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4, 0x1C]
- bl RemoveWindow
- strh r6, [r4, 0x1C]
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- adds r0, r5, 0
- movs r1, 0
- bl sub_8131168
- movs r0, 0x50
- strh r0, [r4, 0x6]
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0812F7BC @ =sub_812F7C0
- str r1, [r0]
-_0812F7A6:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F7B4: .4byte gTasks+0x8
-_0812F7B8: .4byte gPaletteFade
-_0812F7BC: .4byte sub_812F7C0
- thumb_func_end sub_812F72C
-
- thumb_func_start sub_812F7C0
-sub_812F7C0: @ 812F7C0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r7, r0, 3
- ldr r0, _0812F7EC @ =gTasks+0x8
- mov r8, r0
- adds r5, r7, r0
- movs r0, 0
- str r0, [sp, 0x4]
- ldrh r0, [r5, 0x6]
- movs r1, 0x6
- ldrsh r6, [r5, r1]
- cmp r6, 0
- beq _0812F7F0
- subs r0, 0x1
- strh r0, [r5, 0x6]
- b _0812F862
- .align 2, 0
-_0812F7EC: .4byte gTasks+0x8
-_0812F7F0:
- ldr r0, _0812F870 @ =gUnknown_8460CA4
- add r1, sp, 0x4
- bl malloc_and_decompress
- adds r1, r0, 0
- ldr r0, _0812F874 @ =gUnknown_203B108
- ldr r0, [r0]
- str r1, [r0]
- ldr r2, [sp, 0x4]
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- movs r3, 0
- bl LoadBgTiles
- ldr r1, _0812F878 @ =gUnknown_8460CE8
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- adds r0, r4, 0
- bl sub_8130F2C
- movs r0, 0x3
- movs r1, 0
- bl sub_81311F4
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8130FD4
- movs r0, 0x92
- lsls r0, 1
- bl PlayBGM
- movs r0, 0x1
- negs r0, r0
- str r6, [sp]
- movs r1, 0x5
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x50
- strh r0, [r5, 0x6]
- movs r0, 0x2
- bl ShowBg
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0812F87C @ =sub_812F880
- str r1, [r0]
-_0812F862:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F870: .4byte gUnknown_8460CA4
-_0812F874: .4byte gUnknown_203B108
-_0812F878: .4byte gUnknown_8460CE8
-_0812F87C: .4byte sub_812F880
- thumb_func_end sub_812F7C0
-
- thumb_func_start sub_812F880
-sub_812F880: @ 812F880
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0812F8B0 @ =gTasks+0x8
- adds r2, r0, r1
- ldr r0, _0812F8B4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812F92E
- ldrh r0, [r2, 0x6]
- movs r1, 0x6
- ldrsh r4, [r2, r1]
- cmp r4, 0
- beq _0812F8B8
- subs r0, 0x1
- strh r0, [r2, 0x6]
- b _0812F92E
- .align 2, 0
-_0812F8B0: .4byte gTasks+0x8
-_0812F8B4: .4byte gPaletteFade
-_0812F8B8:
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0812F8F0 @ =gUnknown_81C5C78
- ldr r5, _0812F8F4 @ =gStringVar4
- cmp r2, r5
- beq _0812F8FC
- adds r0, r5, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _0812F8F8 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r5, 0
- bl AddTextPrinterParametrized
- b _0812F918
- .align 2, 0
-_0812F8F0: .4byte gUnknown_81C5C78
-_0812F8F4: .4byte gStringVar4
-_0812F8F8: .4byte gUnknown_203B108
-_0812F8FC:
- ldr r0, _0812F938 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_0812F918:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _0812F93C @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812F940 @ =sub_812F944
- str r0, [r1]
-_0812F92E:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F938: .4byte gUnknown_203B108
-_0812F93C: .4byte gTasks
-_0812F940: .4byte sub_812F944
- thumb_func_end sub_812F880
-
- thumb_func_start sub_812F944
-sub_812F944: @ 812F944
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- bne _0812F9D6
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0812F994 @ =gUnknown_81C5D06
- ldr r5, _0812F998 @ =gStringVar4
- cmp r2, r5
- beq _0812F9A0
- adds r0, r5, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _0812F99C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r5, 0
- bl AddTextPrinterParametrized
- b _0812F9BC
- .align 2, 0
-_0812F994: .4byte gUnknown_81C5D06
-_0812F998: .4byte gStringVar4
-_0812F99C: .4byte gUnknown_203B108
-_0812F9A0:
- ldr r0, _0812F9E0 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_0812F9BC:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, _0812F9E4 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1E
- strh r1, [r0, 0xE]
- ldr r1, _0812F9E8 @ =sub_812F9EC
- str r1, [r0]
-_0812F9D6:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812F9E0: .4byte gUnknown_203B108
-_0812F9E4: .4byte gTasks
-_0812F9E8: .4byte sub_812F9EC
- thumb_func_end sub_812F944
-
- thumb_func_start sub_812F9EC
-sub_812F9EC: @ 812F9EC
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _0812FA68 @ =gTasks+0x8
- adds r4, r6, r7
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _0812FA5E
- ldrh r1, [r4, 0x6]
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0812FA1A
- subs r0, r1, 0x1
- strh r0, [r4, 0x6]
-_0812FA1A:
- adds r4, r7, 0
- subs r4, 0x8
- adds r4, r6, r4
- ldrb r0, [r4, 0x10]
- ldr r1, _0812FA6C @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- movs r3, 0x3E
- adds r3, r2
- mov r12, r3
- ldrb r3, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- mov r3, r12
- strb r1, [r3]
- strh r5, [r2, 0x2E]
- ldrb r1, [r2, 0x5]
- lsrs r1, 4
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r2, 0x20
- str r2, [sp, 0x8]
- ldr r2, _0812FA70 @ =0xffff1fff
- str r2, [sp, 0xC]
- movs r2, 0x64
- movs r3, 0x42
- bl CreatePokeballSpriteToReleaseMon
- ldr r0, _0812FA74 @ =sub_812FA78
- str r0, [r4]
- strh r5, [r4, 0xE]
-_0812FA5E:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FA68: .4byte gTasks+0x8
-_0812FA6C: .4byte gSprites
-_0812FA70: .4byte 0xffff1fff
-_0812FA74: .4byte sub_812FA78
- thumb_func_end sub_812F9EC
-
- thumb_func_start sub_812FA78
-sub_812FA78: @ 812FA78
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- beq _0812FAA0
- ldr r0, _0812FAFC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0x5F
- ble _0812FAA0
- ldr r0, _0812FB00 @ =sub_812FB4C
- str r0, [r1]
-_0812FAA0:
- ldr r1, _0812FAFC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r3, [r2, 0xE]
- movs r0, 0xE
- ldrsh r1, [r2, r0]
- ldr r0, _0812FB04 @ =0x00003fff
- cmp r1, r0
- bgt _0812FB40
- adds r0, r3, 0x1
- movs r5, 0
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _0812FB40
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0812FB08 @ =gUnknown_81C5D12
- ldr r4, _0812FB0C @ =gStringVar4
- cmp r2, r4
- beq _0812FB14
- adds r0, r4, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _0812FB10 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r4, 0
- bl AddTextPrinterParametrized
- b _0812FB30
- .align 2, 0
-_0812FAFC: .4byte gTasks
-_0812FB00: .4byte sub_812FB4C
-_0812FB04: .4byte 0x00003fff
-_0812FB08: .4byte gUnknown_81C5D12
-_0812FB0C: .4byte gStringVar4
-_0812FB10: .4byte gUnknown_203B108
-_0812FB14:
- ldr r0, _0812FB48 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_0812FB30:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1D
- movs r1, 0
- bl PlayCry1
-_0812FB40:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FB48: .4byte gUnknown_203B108
- thumb_func_end sub_812FA78
-
- thumb_func_start sub_812FB4C
-sub_812FB4C: @ 812FB4C
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- bne _0812FBDA
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0812FB9C @ =gUnknown_81C5D4B
- ldr r5, _0812FBA0 @ =gStringVar4
- cmp r2, r5
- beq _0812FBA8
- adds r0, r5, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _0812FBA4 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r5, 0
- bl AddTextPrinterParametrized
- b _0812FBC4
- .align 2, 0
-_0812FB9C: .4byte gUnknown_81C5D4B
-_0812FBA0: .4byte gStringVar4
-_0812FBA4: .4byte gUnknown_203B108
-_0812FBA8:
- ldr r0, _0812FBE4 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_0812FBC4:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _0812FBE8 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812FBEC @ =sub_812FBF0
- str r0, [r1]
-_0812FBDA:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FBE4: .4byte gUnknown_203B108
-_0812FBE8: .4byte gTasks
-_0812FBEC: .4byte sub_812FBF0
- thumb_func_end sub_812FB4C
-
- thumb_func_start sub_812FBF0
-sub_812FBF0: @ 812FBF0
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _0812FC4E
- movs r0, 0
- movs r1, 0x1
- bl sub_80F6F54
- ldr r0, _0812FC58 @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r0
- ldrb r0, [r4, 0x10]
- ldr r2, _0812FC5C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r2, 0x20
- str r2, [sp, 0x8]
- ldr r2, _0812FC60 @ =0xffff1f3f
- str r2, [sp, 0xC]
- movs r2, 0x64
- movs r3, 0x42
- bl sub_804BB98
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x14]
- movs r0, 0x30
- strh r0, [r4, 0xE]
- movs r0, 0x40
- strh r0, [r4, 0x8]
- ldr r0, _0812FC64 @ =sub_812FC68
- str r0, [r4]
-_0812FC4E:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FC58: .4byte gTasks
-_0812FC5C: .4byte gSprites
-_0812FC60: .4byte 0xffff1f3f
-_0812FC64: .4byte sub_812FC68
- thumb_func_end sub_812FBF0
-
- thumb_func_start sub_812FC68
-sub_812FC68: @ 812FC68
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0812FCA4 @ =gTasks+0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0812FCAC
- cmp r0, 0x17
- bgt _0812FC9A
- ldr r2, _0812FCA8 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
-_0812FC9A:
- ldrh r0, [r5]
- subs r0, 0x1
- strh r0, [r5]
- b _0812FD62
- .align 2, 0
-_0812FCA4: .4byte gTasks+0x8
-_0812FCA8: .4byte gSprites
-_0812FCAC:
- movs r1, 0x6
- ldrsh r0, [r5, r1]
- cmp r0, 0x30
- bne _0812FCD6
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0812FCE8 @ =gSprites
- adds r0, r4
- bl DestroySprite
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
-_0812FCD6:
- ldrh r0, [r5, 0x6]
- movs r1, 0x6
- ldrsh r4, [r5, r1]
- cmp r4, 0
- beq _0812FCEC
- subs r0, 0x1
- strh r0, [r5, 0x6]
- b _0812FD62
- .align 2, 0
-_0812FCE8: .4byte gSprites
-_0812FCEC:
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0812FD24 @ =gUnknown_81C5DBD
- ldr r5, _0812FD28 @ =gStringVar4
- cmp r2, r5
- beq _0812FD30
- adds r0, r5, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _0812FD2C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r5, 0
- bl AddTextPrinterParametrized
- b _0812FD4C
- .align 2, 0
-_0812FD24: .4byte gUnknown_81C5DBD
-_0812FD28: .4byte gStringVar4
-_0812FD2C: .4byte gUnknown_203B108
-_0812FD30:
- ldr r0, _0812FD6C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_0812FD4C:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _0812FD70 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812FD74 @ =sub_812FD78
- str r0, [r1]
-_0812FD62:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FD6C: .4byte gUnknown_203B108
-_0812FD70: .4byte gTasks
-_0812FD74: .4byte sub_812FD78
- thumb_func_end sub_812FC68
-
- thumb_func_start sub_812FD78
-sub_812FD78: @ 812FD78
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r5, r0, 3
- ldr r7, _0812FDB8 @ =gTasks+0x8
- adds r6, r5, r7
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _0812FDB2
- movs r0, 0
- movs r1, 0x1
- bl sub_80F6F54
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_813144C
- movs r0, 0x30
- strh r0, [r6, 0x6]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, _0812FDBC @ =sub_812FDC0
- str r1, [r0]
-_0812FDB2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FDB8: .4byte gTasks+0x8
-_0812FDBC: .4byte sub_812FDC0
- thumb_func_end sub_812FD78
-
- thumb_func_start sub_812FDC0
-sub_812FDC0: @ 812FDC0
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _0812FDEC @ =gTasks+0x8
- adds r1, r0, r1
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0812FE72
- ldrh r0, [r1, 0x6]
- movs r2, 0x6
- ldrsh r4, [r1, r2]
- cmp r4, 0
- beq _0812FDF0
- subs r0, 0x1
- strh r0, [r1, 0x6]
- b _0812FE72
- .align 2, 0
-_0812FDEC: .4byte gTasks+0x8
-_0812FDF0:
- movs r2, 0x3C
- negs r2, r2
- adds r0, r2, 0
- strh r0, [r1, 0x2]
- bl sub_8131310
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0812FE34 @ =gUnknown_81C59D5
- ldr r5, _0812FE38 @ =gStringVar4
- cmp r2, r5
- beq _0812FE40
- adds r0, r5, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _0812FE3C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r5, 0
- bl AddTextPrinterParametrized
- b _0812FE5C
- .align 2, 0
-_0812FE34: .4byte gUnknown_81C59D5
-_0812FE38: .4byte gStringVar4
-_0812FE3C: .4byte gUnknown_203B108
-_0812FE40:
- ldr r0, _0812FE7C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_0812FE5C:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _0812FE80 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812FE84 @ =sub_812FE88
- str r0, [r1]
-_0812FE72:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FE7C: .4byte gUnknown_203B108
-_0812FE80: .4byte gTasks
-_0812FE84: .4byte sub_812FE88
- thumb_func_end sub_812FDC0
-
- thumb_func_start sub_812FE88
-sub_812FE88: @ 812FE88
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0
- bne _0812FF7E
- ldr r0, _0812FF8C @ =gUnknown_8462EC8
- bl AddWindow
- ldr r1, _0812FF90 @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r1
- strh r0, [r5, 0x22]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldrh r4, [r5, 0x22]
- lsls r4, 24
- lsrs r4, 24
- bl sub_80F796C
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r4, 0
- movs r1, 0x1
- movs r3, 0xE
- bl SetWindowBorderStyle
- ldrh r0, [r5, 0x22]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r4, _0812FF94 @ =gUnknown_203B108
- ldr r0, [r4]
- movs r1, 0x1
- mov r9, r1
- mov r1, r9
- strb r1, [r0, 0x1C]
- ldr r0, [r4]
- movs r6, 0x2
- strb r6, [r0, 0x1D]
- ldr r0, [r4]
- movs r1, 0x3
- mov r8, r1
- mov r1, r8
- strb r1, [r0, 0x1E]
- ldrh r0, [r5, 0x22]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x1C
- str r1, [sp]
- str r7, [sp, 0x4]
- ldr r1, _0812FF98 @ =gUnknown_8415D93
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x8
- movs r3, 0x1
- bl box_print
- ldr r0, [r4]
- mov r1, r9
- strb r1, [r0, 0x1C]
- ldr r0, [r4]
- strb r6, [r0, 0x1D]
- ldr r0, [r4]
- mov r1, r8
- strb r1, [r0, 0x1E]
- ldrh r0, [r5, 0x22]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x1C
- str r1, [sp]
- str r7, [sp, 0x4]
- ldr r1, _0812FF9C @ =gUnknown_8415D97
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0x8
- movs r3, 0x11
- bl box_print
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x22]
- lsls r1, 24
- lsrs r1, 24
- str r0, [sp]
- str r6, [sp, 0x4]
- str r7, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x1
- bl sub_810F7D8
- ldrh r0, [r5, 0x22]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _0812FFA0 @ =sub_812FFA4
- str r0, [r5]
-_0812FF7E:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FF8C: .4byte gUnknown_8462EC8
-_0812FF90: .4byte gTasks
-_0812FF94: .4byte gUnknown_203B108
-_0812FF98: .4byte gUnknown_8415D93
-_0812FF9C: .4byte gUnknown_8415D97
-_0812FFA0: .4byte sub_812FFA4
- thumb_func_end sub_812FE88
-
- thumb_func_start sub_812FFA4
-sub_812FFA4: @ 812FFA4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0812FFC8
- cmp r1, 0
- bgt _0812FFC4
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- blt _0812FFCE
- b _0812FFDC
-_0812FFC4:
- cmp r1, 0x1
- bne _0812FFCE
-_0812FFC8:
- ldr r0, _0812FFE4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- strb r1, [r0, 0x8]
-_0812FFCE:
- ldr r0, _0812FFE8 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812FFEC @ =sub_812FFF0
- str r0, [r1]
-_0812FFDC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812FFE4: .4byte gSaveBlock2Ptr
-_0812FFE8: .4byte gTasks
-_0812FFEC: .4byte sub_812FFF0
- thumb_func_end sub_812FFA4
-
- thumb_func_start sub_812FFF0
-sub_812FFF0: @ 812FFF0
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r5, r0, 2
- adds r5, r0
- lsls r5, 3
- ldr r6, _08130048 @ =gTasks+0x8
- adds r4, r5, r6
- ldrb r0, [r4, 0x1A]
- movs r1, 0x1
- bl sub_810F4D8
- ldrb r0, [r4, 0x1A]
- bl RemoveWindow
- movs r0, 0
- strh r0, [r4, 0x1A]
- movs r0, 0
- movs r1, 0x1
- bl sub_80F6F54
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- subs r6, 0x8
- adds r5, r6
- ldr r0, _0813004C @ =sub_8130050
- str r0, [r5]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08130048: .4byte gTasks+0x8
-_0813004C: .4byte sub_8130050
- thumb_func_end sub_812FFF0
-
- thumb_func_start sub_8130050
-sub_8130050: @ 8130050
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0813006C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08130070
- movs r0, 0
- movs r1, 0
- bl sub_81311F4
- b _08130078
- .align 2, 0
-_0813006C: .4byte gSaveBlock2Ptr
-_08130070:
- movs r0, 0x1
- movs r1, 0
- bl sub_81311F4
-_08130078:
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_81315CC
- ldr r1, _08130098 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x20
- strh r1, [r0, 0xE]
- ldr r1, _0813009C @ =sub_81300A0
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130098: .4byte gTasks
-_0813009C: .4byte sub_81300A0
- thumb_func_end sub_8130050
-
- thumb_func_start sub_81300A0
-sub_81300A0: @ 81300A0
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _081300CC @ =gTasks+0x8
- adds r1, r0, r1
- movs r2, 0x4
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0813014A
- ldrh r0, [r1, 0x6]
- movs r2, 0x6
- ldrsh r4, [r1, r2]
- cmp r4, 0
- beq _081300D0
- subs r0, 0x1
- strh r0, [r1, 0x6]
- b _0813014A
- .align 2, 0
-_081300CC: .4byte gTasks+0x8
-_081300D0:
- strh r4, [r1, 0x2]
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0813010C @ =gUnknown_81C5DEA
- ldr r5, _08130110 @ =gStringVar4
- cmp r2, r5
- beq _08130118
- adds r0, r5, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _08130114 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r5, 0
- bl AddTextPrinterParametrized
- b _08130134
- .align 2, 0
-_0813010C: .4byte gUnknown_81C5DEA
-_08130110: .4byte gStringVar4
-_08130114: .4byte gUnknown_203B108
-_08130118:
- ldr r0, _08130154 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_08130134:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _08130158 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0813015C @ =sub_8130160
- str r0, [r1]
-_0813014A:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08130154: .4byte gUnknown_203B108
-_08130158: .4byte gTasks
-_0813015C: .4byte sub_8130160
- thumb_func_end sub_81300A0
-
- thumb_func_start sub_8130160
-sub_8130160: @ 8130160
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- bne _0813019A
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _081301A4 @ =gUnknown_203B108
- ldr r0, [r0]
- strh r4, [r0, 0x10]
- ldr r1, _081301A8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _081301AC @ =sub_81303B4
- str r1, [r0]
-_0813019A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081301A4: .4byte gUnknown_203B108
-_081301A8: .4byte gTasks
-_081301AC: .4byte sub_81303B4
- thumb_func_end sub_8130160
-
- thumb_func_start sub_81301B0
-sub_81301B0: @ 81301B0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _081301F8 @ =gTasks+0x8
- adds r4, r6, r7
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _08130218
- ldrh r2, [r4, 0x2]
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- movs r1, 0x3C
- negs r1, r1
- cmp r0, r1
- ble _08130200
- subs r0, r2, 0x2
- strh r0, [r4, 0x2]
- ldr r1, _081301FC @ =gSpriteCoordOffsetX
- ldrh r0, [r1]
- adds r0, 0x2
- strh r0, [r1]
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0x2
- movs r2, 0x2
- bl ChangeBgX
- b _08130218
- .align 2, 0
-_081301F8: .4byte gTasks+0x8
-_081301FC: .4byte gSpriteCoordOffsetX
-_08130200:
- strh r1, [r4, 0x2]
- ldr r0, _08130220 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- adds r0, r5, 0
- bl sub_8131660
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _08130224 @ =sub_8130324
- str r1, [r0]
-_08130218:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08130220: .4byte gUnknown_203B108
-_08130224: .4byte sub_8130324
- thumb_func_end sub_81301B0
-
- thumb_func_start sub_8130228
-sub_8130228: @ 8130228
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _08130278 @ =gUnknown_203B108
- ldr r0, [r4]
- ldrb r1, [r0, 0x10]
- adds r0, r6, 0
- bl sub_8131660
- ldr r0, [r4]
- ldrh r4, [r0, 0x10]
- cmp r4, 0
- bne _081302A6
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _0813027C @ =gUnknown_81C5DEA
- ldr r5, _08130280 @ =gStringVar4
- cmp r2, r5
- beq _08130284
- adds r0, r5, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r5, 0
- movs r3, 0
- bl AddTextPrinterParametrized
- b _0813029C
- .align 2, 0
-_08130278: .4byte gUnknown_203B108
-_0813027C: .4byte gUnknown_81C5DEA
-_08130280: .4byte gStringVar4
-_08130284:
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- movs r3, 0
- bl AddTextPrinterParametrized
-_0813029C:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- b _08130306
-_081302A6:
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _081302DC @ =gUnknown_81C5E91
- ldr r4, _081302E0 @ =gStringVar4
- cmp r2, r4
- beq _081302E4
- adds r0, r4, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r4, 0
- movs r3, 0
- bl AddTextPrinterParametrized
- b _081302FE
- .align 2, 0
-_081302DC: .4byte gUnknown_81C5E91
-_081302E0: .4byte gStringVar4
-_081302E4:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- movs r3, 0
- bl AddTextPrinterParametrized
-_081302FE:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08130306:
- ldr r0, _0813031C @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _08130320 @ =sub_8130324
- str r0, [r1]
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0813031C: .4byte gTasks
-_08130320: .4byte sub_8130324
- thumb_func_end sub_8130228
-
- thumb_func_start sub_8130324
-sub_8130324: @ 8130324
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _0813037C @ =gTasks+0x8
- adds r5, r6, r7
- bl ProcessMenuInput
- lsls r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _08130388
- cmp r4, 0
- ble _081303A8
- cmp r4, 0x4
- bgt _081303A8
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r5, 0x1A]
- movs r1, 0x1
- bl sub_810F4D8
- ldrb r0, [r5, 0x1A]
- bl RemoveWindow
- ldr r0, _08130380 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r0, [r0, 0x10]
- subs r1, r4, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl sub_8131754
- movs r0, 0x1
- strh r0, [r5, 0x1E]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _08130384 @ =sub_8130464
- b _081303A6
- .align 2, 0
-_0813037C: .4byte gTasks+0x8
-_08130380: .4byte gUnknown_203B108
-_08130384: .4byte sub_8130464
-_08130388:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _081303B0 @ =sub_81303B4
-_081303A6:
- str r1, [r0]
-_081303A8:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081303B0: .4byte sub_81303B4
- thumb_func_end sub_8130324
-
- thumb_func_start sub_81303B4
-sub_81303B4: @ 81303B4
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _081303F8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0813044C
- ldr r4, _081303FC @ =gUnknown_203B108
- ldr r0, [r4]
- ldrb r0, [r0, 0x10]
- movs r1, 0
- bl sub_8131754
- ldr r0, [r4]
- ldrh r0, [r0, 0x10]
- cmp r0, 0
- bne _08130408
- ldr r0, _08130400 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r2, [r1, 0x8]
- str r5, [sp]
- ldr r0, _08130404 @ =sub_8130C64
- str r0, [sp, 0x4]
- movs r0, 0
- movs r3, 0
- bl DoNamingScreen
- b _08130440
- .align 2, 0
-_081303F8: .4byte gPaletteFade
-_081303FC: .4byte gUnknown_203B108
-_08130400: .4byte gSaveBlock2Ptr
-_08130404: .4byte sub_8130C64
-_08130408:
- ldr r0, _08130454 @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x22]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_810F4D8
- ldrh r0, [r4, 0x22]
- lsls r0, 24
- lsrs r0, 24
- bl RemoveWindow
- ldr r0, _08130458 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, _0813045C @ =0x00003a4c
- adds r1, r0
- str r5, [sp]
- ldr r0, _08130460 @ =sub_8130C64
- str r0, [sp, 0x4]
- movs r0, 0x4
- movs r2, 0
- movs r3, 0
- bl DoNamingScreen
-_08130440:
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_8131168
- bl FreeAllWindowBuffers
-_0813044C:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08130454: .4byte gTasks
-_08130458: .4byte gSaveBlock1Ptr
-_0813045C: .4byte 0x00003a4c
-_08130460: .4byte sub_8130C64
- thumb_func_end sub_81303B4
-
- thumb_func_start sub_8130464
-sub_8130464: @ 8130464
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, _081304A0 @ =gTasks+0x8
- adds r5, r6, r7
- ldr r0, _081304A4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08130544
- movs r1, 0x1E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _08130500
- ldr r0, _081304A8 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrh r0, [r0, 0x10]
- cmp r0, 0
- bne _081304B4
- ldr r0, _081304AC @ =gStringVar4
- ldr r1, _081304B0 @ =gUnknown_81C5E13
- bl StringExpandPlaceholders
- b _081304BC
- .align 2, 0
-_081304A0: .4byte gTasks+0x8
-_081304A4: .4byte gPaletteFade
-_081304A8: .4byte gUnknown_203B108
-_081304AC: .4byte gStringVar4
-_081304B0: .4byte gUnknown_81C5E13
-_081304B4:
- ldr r0, _081304F4 @ =gStringVar4
- ldr r1, _081304F8 @ =gUnknown_81C5EB5
- bl StringExpandPlaceholders
-_081304BC:
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _081304F4 @ =gStringVar4
- ldr r0, _081304FC @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- movs r4, 0
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- strh r4, [r5, 0x1E]
- movs r0, 0x19
- strh r0, [r5, 0x6]
- b _08130544
- .align 2, 0
-_081304F4: .4byte gStringVar4
-_081304F8: .4byte gUnknown_81C5EB5
-_081304FC: .4byte gUnknown_203B108
-_08130500:
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _08130544
- ldrh r0, [r5, 0x6]
- movs r1, 0x6
- ldrsh r4, [r5, r1]
- cmp r4, 0
- beq _0813051C
- subs r0, 0x1
- strh r0, [r5, 0x6]
- b _08130544
-_0813051C:
- bl sub_80F796C
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0813054C @ =gUnknown_8462ED0
- str r0, [sp]
- movs r0, 0xE
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl sub_810FF60
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _08130550 @ =sub_8130554
- str r1, [r0]
-_08130544:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813054C: .4byte gUnknown_8462ED0
-_08130550: .4byte sub_8130554
- thumb_func_end sub_8130464
-
- thumb_func_start sub_8130554
-sub_8130554: @ 8130554
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r5, r0, 24
- cmp r5, 0
- beq _0813057C
- cmp r5, 0
- bgt _08130576
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _08130604
- b _0813063E
-_08130576:
- cmp r5, 0x1
- beq _08130604
- b _0813063E
-_0813057C:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _081305B0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r6, r0, r1
- movs r0, 0x28
- strh r0, [r6, 0xE]
- ldr r7, _081305B4 @ =gUnknown_203B108
- ldr r0, [r7]
- ldrh r0, [r0, 0x10]
- cmp r0, 0
- bne _081305BC
- movs r0, 0
- movs r1, 0x1
- bl sub_80F6F54
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_813144C
- ldr r0, _081305B8 @ =sub_8130650
- str r0, [r6]
- b _0813063E
- .align 2, 0
-_081305B0: .4byte gTasks
-_081305B4: .4byte gUnknown_203B108
-_081305B8: .4byte sub_8130650
-_081305BC:
- ldr r4, _081305F8 @ =gStringVar4
- ldr r1, _081305FC @ =gUnknown_81C5EC5
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r0, [r7]
- ldrb r3, [r0, 0x1F]
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r4, 0
- bl AddTextPrinterParametrized
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _08130600 @ =sub_8130694
- str r0, [r6]
- b _0813063E
- .align 2, 0
-_081305F8: .4byte gStringVar4
-_081305FC: .4byte gUnknown_81C5EC5
-_08130600: .4byte sub_8130694
-_08130604:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08130624 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrh r0, [r0, 0x10]
- cmp r0, 0
- bne _08130630
- ldr r0, _08130628 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0813062C @ =sub_8130160
- b _0813063C
- .align 2, 0
-_08130624: .4byte gUnknown_203B108
-_08130628: .4byte gTasks
-_0813062C: .4byte sub_8130160
-_08130630:
- ldr r0, _08130648 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0813064C @ =sub_8130228
-_0813063C:
- str r0, [r1]
-_0813063E:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08130648: .4byte gTasks
-_0813064C: .4byte sub_8130228
- thumb_func_end sub_8130554
-
- thumb_func_start sub_8130650
-sub_8130650: @ 8130650
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r5, r1, 3
- ldr r6, _0813067C @ =gTasks+0x8
- adds r4, r5, r6
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0813068A
- bl sub_8131310
- ldrh r1, [r4, 0x6]
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08130680
- subs r0, r1, 0x1
- strh r0, [r4, 0x6]
- b _0813068A
- .align 2, 0
-_0813067C: .4byte gTasks+0x8
-_08130680:
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, _08130690 @ =sub_81306D4
- str r1, [r0]
-_0813068A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08130690: .4byte sub_81306D4
- thumb_func_end sub_8130650
-
- thumb_func_start sub_8130694
-sub_8130694: @ 8130694
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _081306C4
- movs r0, 0
- movs r1, 0x1
- bl sub_80F6F54
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_813144C
- ldr r0, _081306CC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _081306D0 @ =sub_81307D0
- str r0, [r1]
-_081306C4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081306CC: .4byte gTasks
-_081306D0: .4byte sub_81307D0
- thumb_func_end sub_8130694
-
- thumb_func_start sub_81306D4
-sub_81306D4: @ 81306D4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- ldr r0, _08130710 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r1, 0
- strh r1, [r4, 0xA]
- ldr r0, _08130714 @ =gSpriteCoordOffsetX
- strh r1, [r0]
- movs r0, 0x2
- bl sub_81311F4
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_81315CC
- ldr r0, _08130718 @ =sub_813071C
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08130710: .4byte gTasks
-_08130714: .4byte gSpriteCoordOffsetX
-_08130718: .4byte sub_813071C
- thumb_func_end sub_81306D4
-
- thumb_func_start sub_813071C
-sub_813071C: @ 813071C
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08130770 @ =gTasks+0x8
- adds r0, r1
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _081307BC
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r2, _08130774 @ =gUnknown_81C5E2E
- ldr r4, _08130778 @ =gStringVar4
- cmp r2, r4
- beq _08130780
- adds r0, r4, 0
- adds r1, r2, 0
- bl StringExpandPlaceholders
- ldr r0, _0813077C @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r4, 0
- bl AddTextPrinterParametrized
- b _0813079E
- .align 2, 0
-_08130770: .4byte gTasks+0x8
-_08130774: .4byte gUnknown_81C5E2E
-_08130778: .4byte gStringVar4
-_0813077C: .4byte gUnknown_203B108
-_08130780:
- ldr r0, _081307C4 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- bl AddTextPrinterParametrized
-_0813079E:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _081307C4 @ =gUnknown_203B108
- ldr r1, [r0]
- movs r0, 0x1
- strh r0, [r1, 0x10]
- ldr r1, _081307C8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _081307CC @ =sub_81301B0
- str r1, [r0]
-_081307BC:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081307C4: .4byte gUnknown_203B108
-_081307C8: .4byte gTasks
-_081307CC: .4byte sub_81301B0
- thumb_func_end sub_813071C
-
- thumb_func_start sub_81307D0
-sub_81307D0: @ 81307D0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _081307FC @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08130846
- bl sub_8131310
- ldrh r1, [r4, 0x6]
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08130800
- subs r0, r1, 0x1
- strh r0, [r4, 0x6]
- b _08130846
- .align 2, 0
-_081307FC: .4byte gTasks+0x8
-_08130800:
- ldr r0, _08130814 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08130818
- movs r0, 0
- movs r1, 0
- bl sub_81311F4
- b _08130820
- .align 2, 0
-_08130814: .4byte gSaveBlock2Ptr
-_08130818:
- movs r0, 0x1
- movs r1, 0
- bl sub_81311F4
-_08130820:
- ldr r0, _0813084C @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- movs r1, 0
- strh r1, [r4, 0xA]
- ldr r0, _08130850 @ =gSpriteCoordOffsetX
- strh r1, [r0]
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgX
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_81315CC
- ldr r0, _08130854 @ =sub_8130858
- str r0, [r4]
-_08130846:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813084C: .4byte gTasks
-_08130850: .4byte gSpriteCoordOffsetX
-_08130854: .4byte sub_8130858
- thumb_func_end sub_81307D0
-
- thumb_func_start sub_8130858
-sub_8130858: @ 8130858
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081308BC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081308B4
- ldr r4, _081308C0 @ =gStringVar4
- ldr r1, _081308C4 @ =gUnknown_81C5EF4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0
- bl sub_80F6EE4
- ldr r0, _081308C8 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrb r3, [r0, 0x1F]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x4
- adds r2, r4, 0
- bl AddTextPrinterParametrized
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1E
- strh r0, [r5, 0xE]
- ldr r0, _081308CC @ =sub_81308D0
- str r0, [r5]
-_081308B4:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081308BC: .4byte gTasks
-_081308C0: .4byte gStringVar4
-_081308C4: .4byte gUnknown_81C5EF4
-_081308C8: .4byte gUnknown_203B108
-_081308CC: .4byte sub_81308D0
- thumb_func_end sub_8130858
-
- thumb_func_start sub_81308D0
-sub_81308D0: @ 81308D0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _0813090A
- ldr r0, _081308FC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r4, r1, r0
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08130900
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _0813090A
- .align 2, 0
-_081308FC: .4byte gTasks
-_08130900:
- movs r0, 0x4
- bl FadeOutBGM
- ldr r0, _08130910 @ =sub_8130914
- str r0, [r4]
-_0813090A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130910: .4byte sub_8130914
- thumb_func_end sub_81308D0
-
- thumb_func_start sub_8130914
-sub_8130914: @ 8130914
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0813093C @ =gUnknown_203B108
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1, 0x12]
- adds r0, r4, 0
- bl sub_8130A38
- adds r0, r4, 0
- bl sub_8130ADC
- adds r0, r4, 0
- bl sub_8130940
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0813093C: .4byte gUnknown_203B108
- thumb_func_end sub_8130914
-
- thumb_func_start sub_8130940
-sub_8130940: @ 8130940
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r6, _08130978 @ =gTasks+0x8
- adds r5, r4, r6
- movs r0, 0x2
- movs r1, 0x6
- movs r2, 0x1
- bl SetBgAttribute
- movs r1, 0
- strh r1, [r5]
- strh r1, [r5, 0x2]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r5, 0x4]
- strh r1, [r5, 0x1E]
- subs r6, 0x8
- adds r4, r6
- ldr r0, _0813097C @ =sub_8130980
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08130978: .4byte gTasks+0x8
-_0813097C: .4byte sub_8130980
- thumb_func_end sub_8130940
-
- thumb_func_start sub_8130980
-sub_8130980: @ 8130980
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r7, r1, 3
- ldr r0, _08130A2C @ =gTasks+0x8
- mov r8, r0
- adds r5, r7, r0
- ldr r0, _08130A30 @ =gUnknown_203B108
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- ldrh r4, [r1, 0x12]
- adds r0, r4, 0
- movs r1, 0x14
- bl __umodsi3
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0
- bne _08130A1E
- cmp r4, 0x28
- bne _081309BE
- movs r0, 0x27
- bl PlaySE
-_081309BE:
- ldrh r0, [r5, 0x4]
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r5, 0x4]
- subs r0, 0x8
- lsls r0, 16
- asrs r0, 16
- bl sub_80D8B90
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrh r0, [r5, 0x4]
- subs r0, 0x10
- lsls r0, 16
- asrs r0, 16
- bl sub_80D8B90
- movs r1, 0xF0
- lsls r1, 7
- movs r2, 0xA8
- lsls r2, 7
- movs r3, 0x54
- str r3, [sp]
- lsls r4, 16
- asrs r4, 16
- str r4, [sp, 0x4]
- lsls r0, 16
- asrs r0, 16
- str r0, [sp, 0x8]
- str r6, [sp, 0xC]
- movs r0, 0x2
- movs r3, 0x78
- bl SetBgAffine
- movs r1, 0x4
- ldrsh r0, [r5, r1]
- cmp r0, 0x60
- bgt _08130A1E
- movs r0, 0x1
- strh r0, [r5, 0x1E]
- movs r0, 0x24
- strh r0, [r5]
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _08130A34 @ =sub_8130BA8
- str r1, [r0]
-_08130A1E:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08130A2C: .4byte gTasks+0x8
-_08130A30: .4byte gUnknown_203B108
-_08130A34: .4byte sub_8130BA8
- thumb_func_end sub_8130980
-
- thumb_func_start sub_8130A38
-sub_8130A38: @ 8130A38
- push {lr}
- sub sp, 0x4
- ldr r0, _08130A74 @ =sub_8130A80
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08130A78 @ =gTasks+0x8
- adds r1, r0
- movs r0, 0
- strh r0, [r1]
- strh r0, [r1, 0x2]
- strh r0, [r1, 0x4]
- strh r0, [r1, 0x1E]
- ldr r0, _08130A7C @ =0xffff0fcf
- movs r1, 0
- str r1, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08130A74: .4byte sub_8130A80
-_08130A78: .4byte gTasks+0x8
-_08130A7C: .4byte 0xffff0fcf
- thumb_func_end sub_8130A38
-
- thumb_func_start sub_8130A80
-sub_8130A80: @ 8130A80
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08130AB8 @ =gTasks+0x8
- adds r2, r0, r1
- ldr r0, _08130ABC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08130AD4
- ldrh r0, [r2, 0x2]
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- cmp r1, 0
- beq _08130AC0
- adds r0, r4, 0
- bl DestroyTask
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8131168
- b _08130AD4
- .align 2, 0
-_08130AB8: .4byte gTasks+0x8
-_08130ABC: .4byte gPaletteFade
-_08130AC0:
- adds r0, 0x1
- strh r0, [r2, 0x2]
- movs r0, 0xF0
- lsls r0, 8
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08130AD4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8130A80
-
- thumb_func_start sub_8130ADC
-sub_8130ADC: @ 8130ADC
- push {lr}
- ldr r0, _08130B08 @ =sub_8130B10
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08130B0C @ =gTasks+0x8
- adds r1, r0
- movs r2, 0x8
- strh r2, [r1]
- movs r0, 0
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- strh r0, [r1, 0x1C]
- strh r0, [r1, 0x1E]
- pop {r0}
- bx r0
- .align 2, 0
-_08130B08: .4byte sub_8130B10
-_08130B0C: .4byte gTasks+0x8
- thumb_func_end sub_8130ADC
-
- thumb_func_start sub_8130B10
-sub_8130B10: @ 8130B10
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08130B30 @ =gTasks+0x8
- adds r4, r0, r1
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08130B34
- subs r0, r1, 0x1
- strh r0, [r4]
- b _08130B96
- .align 2, 0
-_08130B30: .4byte gTasks+0x8
-_08130B34:
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bgt _08130B4A
- ldrh r1, [r4, 0x4]
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08130B4A
- subs r0, r1, 0x1
- strh r0, [r4, 0x4]
-_08130B4A:
- ldrb r2, [r4, 0x1C]
- ldr r7, _08130B9C @ =0x00007fff
- movs r0, 0x40
- movs r1, 0x20
- adds r3, r7, 0
- bl BlendPalette
- ldrh r1, [r4, 0x1C]
- adds r1, 0x1
- strh r1, [r4, 0x1C]
- ldrh r0, [r4, 0x2]
- subs r0, 0x1
- strh r0, [r4, 0x2]
- ldrh r0, [r4, 0x4]
- strh r0, [r4]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xE
- ble _08130B96
- movs r2, 0
- ldr r6, _08130BA0 @ =gPlttBufferFaded
- adds r3, r7, 0
- ldr r4, _08130BA4 @ =gPlttBufferUnfaded
-_08130B78:
- adds r0, r2, 0
- adds r0, 0x40
- lsls r0, 1
- adds r1, r0, r6
- strh r3, [r1]
- adds r0, r4
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _08130B78
- adds r0, r5, 0
- bl DestroyTask
-_08130B96:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08130B9C: .4byte 0x00007fff
-_08130BA0: .4byte gPlttBufferFaded
-_08130BA4: .4byte gPlttBufferUnfaded
- thumb_func_end sub_8130B10
-
- thumb_func_start sub_8130BA8
-sub_8130BA8: @ 8130BA8
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08130BCC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- cmp r1, 0
- beq _08130BD0
- subs r0, 0x1
- strh r0, [r4, 0x8]
- b _08130BE2
- .align 2, 0
-_08130BCC: .4byte gTasks
-_08130BD0:
- str r1, [sp]
- movs r0, 0x30
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08130BEC @ =sub_8130BF0
- str r0, [r4]
-_08130BE2:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08130BEC: .4byte sub_8130BF0
- thumb_func_end sub_8130BA8
-
- thumb_func_start sub_8130BF0
-sub_8130BF0: @ 8130BF0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08130C14 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08130C10
- ldr r0, _08130C18 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _08130C1C @ =sub_8130C20
- str r0, [r1]
-_08130C10:
- pop {r0}
- bx r0
- .align 2, 0
-_08130C14: .4byte gPaletteFade
-_08130C18: .4byte gTasks
-_08130C1C: .4byte sub_8130C20
- thumb_func_end sub_8130BF0
-
- thumb_func_start sub_8130C20
-sub_8130C20: @ 8130C20
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl FreeAllWindowBuffers
- bl sub_8044D80
- ldr r5, _08130C58 @ =gUnknown_203B108
- ldr r0, [r5]
- bl Free
- movs r0, 0
- str r0, [r5]
- ldr r2, _08130C5C @ =gTextFlags
- ldrb r1, [r2]
- subs r0, 0x2
- ands r0, r1
- strb r0, [r2]
- ldr r0, _08130C60 @ =CB2_NewGame
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08130C58: .4byte gUnknown_203B108
-_08130C5C: .4byte gTextFlags
-_08130C60: .4byte CB2_NewGame
- thumb_func_end sub_8130C20
-
- thumb_func_start sub_8130C64
-sub_8130C64: @ 8130C64
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r0, _08130C84 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _08130C78
- b _08130F10
-_08130C78:
- lsls r0, 2
- ldr r1, _08130C88 @ =_08130C8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08130C84: .4byte gMain
-_08130C88: .4byte _08130C8C
- .align 2, 0
-_08130C8C:
- .4byte _08130CAC
- .4byte _08130D18
- .4byte _08130D78
- .4byte _08130DB2
- .4byte _08130DD0
- .4byte _08130DE8
- .4byte _08130E38
- .4byte _08130EB8
-_08130CAC:
- movs r0, 0
- bl SetVBlankCallback
- add r1, sp, 0x8
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08130D04 @ =0x040000d4
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _08130D08 @ =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0
- str r2, [sp, 0xC]
- add r0, sp, 0xC
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _08130D0C @ =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x8
- strh r2, [r0]
- str r0, [r1]
- ldr r0, _08130D10 @ =0x05000002
- str r0, [r1, 0x4]
- ldr r0, _08130D14 @ =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- bl remove_some_task
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl reset_temp_tile_data_buffers
- b _08130F10
- .align 2, 0
-_08130D04: .4byte 0x040000d4
-_08130D08: .4byte 0x8100c000
-_08130D0C: .4byte 0x85000100
-_08130D10: .4byte 0x05000002
-_08130D14: .4byte 0x810001ff
-_08130D18:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08130D70 @ =gUnknown_8462E58
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, _08130D74 @ =gUnknown_203B108
- ldr r1, [r4]
- movs r0, 0xE1
- lsls r0, 5
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- movs r0, 0xC1
- lsls r0, 5
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- b _08130F10
- .align 2, 0
-_08130D70: .4byte gUnknown_8462E58
-_08130D74: .4byte gUnknown_203B108
-_08130D78:
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- b _08130F10
-_08130DB2:
- bl FreeAllWindowBuffers
- bl sub_80F6C6C
- bl sub_80F6C98
- ldr r0, _08130DCC @ =gUnknown_8460568
- movs r1, 0
- movs r2, 0xE0
- bl LoadPalette
- b _08130F10
- .align 2, 0
-_08130DCC: .4byte gUnknown_8460568
-_08130DD0:
- ldr r1, _08130DE4 @ =gUnknown_8460CA4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _08130F10
- .align 2, 0
-_08130DE4: .4byte gUnknown_8460CA4
-_08130DE8:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _08130DF4
- b _08130F1E
-_08130DF4:
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r1, _08130E34 @ =gUnknown_8460CE8
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- b _08130F10
- .align 2, 0
-_08130E34: .4byte gUnknown_8460CE8
-_08130E38:
- ldr r0, _08130E5C @ =sub_8130464
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08130E60 @ =gUnknown_203B108
- ldr r0, [r0]
- ldrh r0, [r0, 0x10]
- cmp r0, 0
- bne _08130E72
- ldr r0, _08130E64 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08130E68
- movs r0, 0
- b _08130E6A
- .align 2, 0
-_08130E5C: .4byte sub_8130464
-_08130E60: .4byte gUnknown_203B108
-_08130E64: .4byte gSaveBlock2Ptr
-_08130E68:
- movs r0, 0x1
-_08130E6A:
- movs r1, 0
- bl sub_81311F4
- b _08130E7A
-_08130E72:
- movs r0, 0x2
- movs r1, 0
- bl sub_81311F4
-_08130E7A:
- ldr r0, _08130EA8 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldr r0, _08130EAC @ =0x0000ffc4
- strh r0, [r4, 0xA]
- ldr r1, _08130EB0 @ =gSpriteCoordOffsetX
- ldrh r0, [r1]
- adds r0, 0x3C
- strh r0, [r1]
- ldr r1, _08130EB4 @ =0xffffc400
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgX
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8130FD4
- movs r0, 0x1
- strh r0, [r4, 0x26]
- b _08130F10
- .align 2, 0
-_08130EA8: .4byte gTasks
-_08130EAC: .4byte 0x0000ffc4
-_08130EB0: .4byte gSpriteCoordOffsetX
-_08130EB4: .4byte 0xffffc400
-_08130EB8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, _08130F04 @ =sub_812EAFC
- bl SetVBlankCallback
- ldr r2, _08130F08 @ =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08130F0C @ =sub_812EB10
- bl SetMainCallback2
- b _08130F1E
- .align 2, 0
-_08130F04: .4byte sub_812EAFC
-_08130F08: .4byte gTextFlags
-_08130F0C: .4byte sub_812EB10
-_08130F10:
- ldr r1, _08130F28 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08130F1E:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08130F28: .4byte gMain
- thumb_func_end sub_8130C64
-
- thumb_func_start sub_8130F2C
-sub_8130F2C: @ 8130F2C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _08130FA0 @ =gUnknown_8235194
- movs r0, 0
- bl sub_8044E00
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1D
- bl DecompressPicFromTable
- ldr r0, _08130FA4 @ =gUnknown_82373F4
- bl sub_800F078
- movs r0, 0x1D
- movs r1, 0
- bl sub_803F7D4
- ldr r0, _08130FA8 @ =gMultiuseSpriteTemplate
- movs r1, 0x60
- movs r2, 0x60
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08130FAC @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r1, r2, r1
- ldr r3, _08130FB0 @ =SpriteCallbackDummy
- str r3, [r1]
- adds r2, r4
- ldrb r3, [r2, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- movs r3, 0x4
- orrs r1, r3
- strb r1, [r2, 0x5]
- adds r2, 0x3E
- ldrb r1, [r2]
- orrs r1, r3
- strb r1, [r2]
- ldr r2, _08130FB4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0x10]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08130FA0: .4byte gUnknown_8235194
-_08130FA4: .4byte gUnknown_82373F4
-_08130FA8: .4byte gMultiuseSpriteTemplate
-_08130FAC: .4byte gSprites
-_08130FB0: .4byte SpriteCallbackDummy
-_08130FB4: .4byte gTasks
- thumb_func_end sub_8130F2C
-
- thumb_func_start sub_8130FB8
-sub_8130FB8: @ 8130FB8
- ldr r3, _08130FD0 @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- adds r1, 0x2B
- ldrb r1, [r1]
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_08130FD0: .4byte gSprites
- thumb_func_end sub_8130FB8
-
- thumb_func_start sub_8130FD4
-sub_8130FD4: @ 8130FD4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- movs r4, 0
- cmp r1, 0
- beq _08130FF4
- cmp r1, 0x1
- beq _081310C8
- b _08131146
-_08130FF4:
- ldr r4, _081310B0 @ =gUnknown_8462EFC
- adds r0, r4, 0
- bl LoadCompressedObjectPic
- adds r0, r4, 0
- adds r0, 0x8
- bl LoadCompressedObjectPic
- adds r4, 0x10
- adds r0, r4, 0
- bl LoadCompressedObjectPic
- ldr r0, _081310B4 @ =gUnknown_8462F1C
- bl LoadSpritePalette
- ldr r0, _081310B8 @ =gUnknown_846302C
- mov r8, r0
- movs r1, 0x10
- movs r2, 0x11
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r6, _081310BC @ =gSprites
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x5]
- movs r5, 0xD
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1, 0x5]
- ldr r0, _081310C0 @ =gTasks
- mov r1, r9
- lsls r4, r1, 2
- add r4, r9
- lsls r4, 3
- adds r4, r0
- strh r7, [r4, 0x16]
- mov r0, r8
- adds r0, 0x18
- movs r1, 0x10
- movs r2, 0x9
- movs r3, 0x3
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- adds r2, r1, r6
- ldrb r3, [r2, 0x5]
- adds r0, r5, 0
- ands r0, r3
- strb r0, [r2, 0x5]
- ldrh r0, [r4, 0x16]
- strh r0, [r2, 0x2E]
- movs r2, 0x1C
- adds r2, r6
- mov r10, r2
- add r1, r10
- ldr r3, _081310C4 @ =sub_8130FB8
- mov r9, r3
- str r3, [r1]
- strh r7, [r4, 0x18]
- movs r0, 0x30
- add r8, r0
- mov r0, r8
- movs r1, 0x18
- movs r2, 0xD
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r6, r0, r6
- ldrb r1, [r6, 0x5]
- ands r5, r1
- strb r5, [r6, 0x5]
- ldrh r1, [r4, 0x16]
- strh r1, [r6, 0x2E]
- add r0, r10
- mov r1, r9
- str r1, [r0]
- strh r7, [r4, 0x1A]
- b _08131146
- .align 2, 0
-_081310B0: .4byte gUnknown_8462EFC
-_081310B4: .4byte gUnknown_8462F1C
-_081310B8: .4byte gUnknown_846302C
-_081310BC: .4byte gSprites
-_081310C0: .4byte gTasks
-_081310C4: .4byte sub_8130FB8
-_081310C8:
- ldr r0, _08131154 @ =gUnknown_8462F14
- bl LoadCompressedObjectPic
- ldr r0, _08131158 @ =gUnknown_8462F24
- bl LoadSpritePalette
- mov r2, r9
- lsls r5, r2, 2
- ldr r3, _0813115C @ =gTasks+0x8
- mov r8, r3
- ldr r6, _08131160 @ =gSprites
-_081310DE:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r1, _08131164 @ =gUnknown_8462F50
- adds r0, r1
- lsls r1, r4, 21
- movs r2, 0xB0
- lsls r2, 15
- adds r1, r2
- asrs r1, 16
- movs r2, 0x70
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r2, r6
- ldrb r1, [r2, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r0, r3, 0
- ands r1, r0
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r2, 0x5]
- adds r3, r2, 0
- adds r3, 0x2C
- ldrb r0, [r3]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3]
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- adds r1, r4, 0x7
- lsls r1, 1
- mov r2, r9
- adds r0, r5, r2
- lsls r0, 3
- adds r1, r0
- add r1, r8
- strh r7, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _081310DE
-_08131146:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08131154: .4byte gUnknown_8462F14
-_08131158: .4byte gUnknown_8462F24
-_0813115C: .4byte gTasks+0x8
-_08131160: .4byte gSprites
-_08131164: .4byte gUnknown_8462F50
- thumb_func_end sub_8130FD4
-
- thumb_func_start sub_8131168
-sub_8131168: @ 8131168
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- movs r4, 0
- lsls r1, r0, 2
- adds r1, r0
- lsls r5, r1, 3
- ldr r7, _081311AC @ =gTasks+0x8
-_0813117C:
- adds r0, r4, 0x7
- lsls r0, 1
- adds r0, r5
- adds r0, r7
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081311B0 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0813117C
- cmp r6, 0
- beq _081311B4
- cmp r6, 0x1
- beq _081311DC
- b _081311EC
- .align 2, 0
-_081311AC: .4byte gTasks+0x8
-_081311B0: .4byte gSprites
-_081311B4:
- ldr r0, _081311D0 @ =0x00001003
- bl FreeSpriteTilesByTag
- ldr r0, _081311D4 @ =0x00001002
- bl FreeSpriteTilesByTag
- ldr r4, _081311D8 @ =0x00001001
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- b _081311EC
- .align 2, 0
-_081311D0: .4byte 0x00001003
-_081311D4: .4byte 0x00001002
-_081311D8: .4byte 0x00001001
-_081311DC:
- movs r4, 0x80
- lsls r4, 5
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
-_081311EC:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8131168
-
- thumb_func_start sub_81311F4
-sub_81311F4: @ 81311F4
- push {r4-r6,lr}
- sub sp, 0x24
- lsls r0, 16
- lsrs r0, 16
- adds r2, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- cmp r0, 0x1
- beq _08131230
- cmp r0, 0x1
- bgt _08131210
- cmp r0, 0
- beq _0813121A
- b _081312F6
-_08131210:
- cmp r2, 0x2
- beq _08131248
- cmp r2, 0x3
- beq _0813126C
- b _081312F6
-_0813121A:
- ldr r0, _08131228 @ =gUnknown_84615FC
- movs r1, 0x40
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _0813122C @ =gUnknown_846163C
- b _08131254
- .align 2, 0
-_08131228: .4byte gUnknown_84615FC
-_0813122C: .4byte gUnknown_846163C
-_08131230:
- ldr r0, _08131240 @ =gUnknown_8460ED4
- movs r1, 0x40
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _08131244 @ =gUnknown_8460F14
- b _08131254
- .align 2, 0
-_08131240: .4byte gUnknown_8460ED4
-_08131244: .4byte gUnknown_8460F14
-_08131248:
- ldr r0, _08131260 @ =gUnknown_84623AC
- movs r1, 0x60
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _08131264 @ =gUnknown_84623EC
-_08131254:
- ldr r2, _08131268 @ =0x06000600
- adds r1, r4, r2
- bl LZ77UnCompVram
- b _08131280
- .align 2, 0
-_08131260: .4byte gUnknown_84623AC
-_08131264: .4byte gUnknown_84623EC
-_08131268: .4byte 0x06000600
-_0813126C:
- ldr r0, _08131300 @ =gUnknown_8461CD4
- movs r1, 0x60
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _08131304 @ =gUnknown_8461D14
- ldr r2, _08131308 @ =0x06000600
- adds r1, r4, r2
- bl LZ77UnCompVram
-_08131280:
- movs r0, 0x60
- bl AllocZeroed
- ldr r2, _0813130C @ =gUnknown_203B108
- ldr r1, [r2]
- str r0, [r1, 0x4]
- movs r1, 0
- lsrs r6, r4, 6
-_08131290:
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r0, r1
- strb r1, [r0]
- adds r1, 0x1
- cmp r1, 0x5F
- bls _08131290
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r5, 0x10
- str r5, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r4, _0813130C @ =gUnknown_203B108
- ldr r0, [r4]
- ldr r1, [r0, 0x4]
- movs r3, 0x8
- str r3, [sp]
- movs r2, 0xC
- str r2, [sp, 0x4]
- movs r0, 0xB
- str r0, [sp, 0x8]
- movs r0, 0x2
- str r0, [sp, 0xC]
- str r3, [sp, 0x10]
- str r2, [sp, 0x14]
- str r5, [sp, 0x18]
- adds r0, r6, 0
- adds r0, 0x18
- str r0, [sp, 0x1C]
- movs r5, 0
- str r5, [sp, 0x20]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyRectToBgTilemapBufferRect
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- bl Free
- ldr r0, [r4]
- str r5, [r0, 0x4]
-_081312F6:
- add sp, 0x24
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08131300: .4byte gUnknown_8461CD4
-_08131304: .4byte gUnknown_8461D14
-_08131308: .4byte 0x06000600
-_0813130C: .4byte gUnknown_203B108
- thumb_func_end sub_81311F4
-
- thumb_func_start sub_8131310
-sub_8131310: @ 8131310
- push {lr}
- sub sp, 0xC
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- movs r0, 0x10
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0xB
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_8131310
-
- thumb_func_start sub_8131338
-sub_8131338: @ 8131338
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r1, _081313A8 @ =gTasks
- lsls r0, r6, 2
- mov r9, r0
- adds r0, r6
- lsls r5, r0, 3
- adds r2, r5, r1
- ldrh r3, [r2, 0xA]
- movs r7, 0xA
- ldrsh r0, [r2, r7]
- mov r8, r1
- cmp r0, 0
- bne _081313B0
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- add r1, r8
- movs r0, 0x1
- strh r0, [r1, 0xC]
- adds r0, r6, 0
- bl DestroyTask
- ldr r6, _081313AC @ =gSprites
- adds r2, r5, 0
- mov r5, r8
- adds r5, 0x8
- movs r3, 0x4
-_08131380:
- adds r0, r4, 0x7
- lsls r0, 1
- adds r0, r2
- adds r0, r5
- movs r7, 0
- ldrsh r1, [r0, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08131380
- b _0813143A
- .align 2, 0
-_081313A8: .4byte gTasks
-_081313AC: .4byte gSprites
-_081313B0:
- ldrh r1, [r2, 0x10]
- movs r7, 0x10
- ldrsh r0, [r2, r7]
- cmp r0, 0
- beq _081313C0
- subs r0, r1, 0x1
- strh r0, [r2, 0x10]
- b _0813143A
-_081313C0:
- ldrh r0, [r2, 0xE]
- strh r0, [r2, 0x10]
- subs r1, r3, 0x1
- strh r1, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- lsls r1, 16
- asrs r1, 16
- mov r12, r9
- cmp r1, 0x8
- bne _0813141E
- adds r7, r5, 0
- movs r0, 0x8
- add r0, r8
- mov r10, r0
- movs r5, 0x1
- movs r1, 0x5
- negs r1, r1
- mov r9, r1
-_081313E8:
- adds r0, r4, 0x7
- lsls r0, 1
- adds r0, r7
- add r0, r10
- movs r2, 0
- ldrsh r0, [r0, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08131448 @ =gSprites
- adds r2, r0
- adds r2, 0x3E
- ldrb r3, [r2]
- lsls r1, r3, 29
- lsrs r1, 31
- eors r1, r5
- ands r1, r5
- lsls r1, 2
- mov r0, r9
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _081313E8
-_0813141E:
- mov r1, r12
- adds r0, r1, r6
- lsls r0, 3
- add r0, r8
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- lsls r1, 8
- ldrh r0, [r0, 0xA]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_0813143A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08131448: .4byte gSprites
- thumb_func_end sub_8131338
-
- thumb_func_start sub_813144C
-sub_813144C: @ 813144C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- movs r7, 0
- ldr r1, _081314D0 @ =0x00001244
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r0, _081314D4 @ =gTasks
- mov r8, r0
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r0, r5, r0
- strh r7, [r0, 0xC]
- ldr r0, _081314D8 @ =sub_8131338
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- mov r1, r8
- adds r0, r2, r1
- strh r4, [r0, 0x8]
- movs r1, 0x10
- strh r1, [r0, 0xA]
- strh r7, [r0, 0xC]
- strh r6, [r0, 0xE]
- strh r6, [r0, 0x10]
- mov r3, r8
- adds r3, 0x8
-_081314AC:
- adds r0, r7, 0x7
- lsls r0, 1
- adds r1, r0, r2
- adds r1, r3
- adds r0, r5
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _081314AC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081314D0: .4byte 0x00001244
-_081314D4: .4byte gTasks
-_081314D8: .4byte sub_8131338
- thumb_func_end sub_813144C
-
- thumb_func_start sub_81314DC
-sub_81314DC: @ 81314DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- ldr r1, _08131528 @ =gTasks
- lsls r5, r6, 2
- adds r0, r5, r6
- lsls r0, 3
- mov r9, r0
- adds r2, r0, r1
- ldrh r3, [r2, 0xA]
- movs r7, 0xA
- ldrsh r0, [r2, r7]
- mov r12, r1
- cmp r0, 0x10
- bne _08131530
- ldr r0, _0813152C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081315BA
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- add r1, r12
- movs r0, 0x1
- strh r0, [r1, 0xC]
- adds r0, r6, 0
- bl DestroyTask
- b _081315BA
- .align 2, 0
-_08131528: .4byte gTasks
-_0813152C: .4byte gPaletteFade
-_08131530:
- ldrh r1, [r2, 0x10]
- movs r7, 0x10
- ldrsh r0, [r2, r7]
- cmp r0, 0
- beq _08131540
- subs r0, r1, 0x1
- strh r0, [r2, 0x10]
- b _081315BA
-_08131540:
- ldrh r0, [r2, 0xE]
- strh r0, [r2, 0x10]
- adds r1, r3, 0x2
- strh r1, [r2, 0xA]
- ldrh r0, [r2, 0xC]
- subs r0, 0x2
- strh r0, [r2, 0xC]
- lsls r1, 16
- asrs r1, 16
- mov r8, r5
- cmp r1, 0x8
- bne _0813159E
- mov r7, r9
- movs r0, 0x8
- add r0, r12
- mov r10, r0
- movs r5, 0x1
- movs r1, 0x5
- negs r1, r1
- mov r9, r1
-_08131568:
- adds r0, r4, 0x7
- lsls r0, 1
- adds r0, r7
- add r0, r10
- movs r2, 0
- ldrsh r0, [r0, r2]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081315C8 @ =gSprites
- adds r2, r0
- adds r2, 0x3E
- ldrb r3, [r2]
- lsls r1, r3, 29
- lsrs r1, 31
- eors r1, r5
- ands r1, r5
- lsls r1, 2
- mov r0, r9
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08131568
-_0813159E:
- mov r1, r8
- adds r0, r1, r6
- lsls r0, 3
- add r0, r12
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- lsls r1, 8
- ldrh r0, [r0, 0xA]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_081315BA:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081315C8: .4byte gSprites
- thumb_func_end sub_81314DC
-
- thumb_func_start sub_81315CC
-sub_81315CC: @ 81315CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r6, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- movs r7, 0
- ldr r1, _08131654 @ =0x00001244
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x80
- lsls r1, 5
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r0, _08131658 @ =gTasks
- mov r8, r0
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r0, r5, r0
- strh r7, [r0, 0xC]
- ldr r0, _0813165C @ =sub_81314DC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- mov r1, r8
- adds r0, r2, r1
- strh r4, [r0, 0x8]
- strh r7, [r0, 0xA]
- movs r1, 0x10
- strh r1, [r0, 0xC]
- strh r6, [r0, 0xE]
- strh r6, [r0, 0x10]
- mov r3, r8
- adds r3, 0x8
-_0813162E:
- adds r0, r7, 0x7
- lsls r0, 1
- adds r1, r0, r2
- adds r1, r3
- adds r0, r5
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x2
- bls _0813162E
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08131654: .4byte 0x00001244
-_08131658: .4byte gTasks
-_0813165C: .4byte sub_81314DC
- thumb_func_end sub_81315CC
-
- thumb_func_start sub_8131660
-sub_8131660: @ 8131660
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- mov r8, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r5, _081316DC @ =gTasks+0x8
- adds r7, r4, r5
- ldr r0, _081316E0 @ =gUnknown_8462ED8
- bl AddWindow
- strh r0, [r7, 0x1A]
- lsls r0, 24
- lsrs r0, 24
- bl PutWindowTilemap
- ldrb r6, [r7, 0x1A]
- bl sub_80F796C
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- movs r1, 0x1
- movs r3, 0xE
- bl SetWindowBorderStyle
- adds r5, r4
- ldrb r0, [r5, 0x1A]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r7, 0x1A]
- ldr r2, _081316E4 @ =gUnknown_81C574F
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0x8
- bl AddTextPrinterParameterized
- mov r0, r8
- cmp r0, 0
- bne _081316F4
- ldr r0, _081316E8 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- ldr r6, _081316EC @ =gUnknown_84630D8
- cmp r0, 0
- bne _081316F6
- ldr r6, _081316F0 @ =gUnknown_846308C
- b _081316F6
- .align 2, 0
-_081316DC: .4byte gTasks+0x8
-_081316E0: .4byte gUnknown_8462ED8
-_081316E4: .4byte gUnknown_81C574F
-_081316E8: .4byte gSaveBlock2Ptr
-_081316EC: .4byte gUnknown_84630D8
-_081316F0: .4byte gUnknown_846308C
-_081316F4:
- ldr r6, _08131750 @ =gUnknown_8463124
-_081316F6:
- movs r4, 0
- movs r5, 0
-_081316FA:
- ldrb r0, [r7, 0x1A]
- lsls r1, r4, 2
- adds r1, r6
- ldr r2, [r1]
- adds r4, 0x1
- lsls r1, r4, 4
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0x8
- bl AddTextPrinterParameterized
- lsls r4, 24
- lsrs r4, 24
- cmp r4, 0x3
- bls _081316FA
- ldrb r0, [r7, 0x1A]
- movs r1, 0x10
- str r1, [sp]
- movs r1, 0x5
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x1
- bl sub_810F7D8
- ldrb r0, [r7, 0x1A]
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08131750: .4byte gUnknown_8463124
- thumb_func_end sub_8131660
-
- thumb_func_start sub_8131754
-sub_8131754: @ 8131754
- push {r4,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- cmp r0, 0
- bne _081317A0
- ldr r0, _08131770 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08131778
- ldr r4, _08131774 @ =gUnknown_846308C
- b _0813177A
- .align 2, 0
-_08131770: .4byte gSaveBlock2Ptr
-_08131774: .4byte gUnknown_846308C
-_08131778:
- ldr r4, _08131798 @ =gUnknown_84630D8
-_0813177A:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x13
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 14
- adds r0, r4
- ldr r3, [r0]
- ldr r0, _0813179C @ =gSaveBlock2Ptr
- ldr r4, [r0]
- b _081317B0
- .align 2, 0
-_08131798: .4byte gUnknown_84630D8
-_0813179C: .4byte gSaveBlock2Ptr
-_081317A0:
- ldr r1, _081317EC @ =gUnknown_8463124
- lsls r0, r2, 2
- adds r0, r1
- ldr r3, [r0]
- ldr r0, _081317F0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _081317F4 @ =0x00003a4c
- adds r4, r0, r1
-_081317B0:
- movs r2, 0
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _081317D2
-_081317B8:
- adds r1, r4, r2
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x6
- bhi _081317D2
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _081317B8
-_081317D2:
- cmp r2, 0x7
- bhi _081317E6
- movs r1, 0xFF
-_081317D8:
- adds r0, r4, r2
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _081317D8
-_081317E6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081317EC: .4byte gUnknown_8463124
-_081317F0: .4byte gSaveBlock1Ptr
-_081317F4: .4byte 0x00003a4c
- thumb_func_end sub_8131754
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/option_menu.s b/asm/option_menu.s
index 7ee737053..cff6f1f25 100644
--- a/asm/option_menu.s
+++ b/asm/option_menu.s
@@ -93,7 +93,7 @@ _080883FA:
cmp r3, 0x5
bls _080883E6
movs r0, 0xD
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
ldr r0, _0808842C @ =sub_8088454
bl SetMainCallback2
pop {r4-r6}
@@ -431,7 +431,7 @@ sub_80886D4: @ 80886D4
bl ResetPaletteFade
bl FreeAllSpritePalettes
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
pop {r0}
bx r0
thumb_func_end sub_80886D4
diff --git a/asm/overworld.s b/asm/overworld.s
index 679203034..e44855b46 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -3117,8 +3117,8 @@ sub_80562B0: @ 80562B0
ldr r1, [r5]
movs r0, 0x3
bl SetBgTilemapBuffer
- bl sub_80F6C6C
- bl sub_80F6C98
+ bl InitStandardTextBoxWindows
+ bl ResetBg0
bl sub_8069348
pop {r3}
mov r8, r3
@@ -3181,8 +3181,8 @@ sub_8056354: @ 8056354
ldr r1, [r5]
movs r0, 0x3
bl SetBgTilemapBuffer
- bl sub_80F6C6C
- bl sub_80F6C98
+ bl InitStandardTextBoxWindows
+ bl ResetBg0
bl sub_8069348
pop {r3}
mov r8, r3
@@ -3933,7 +3933,7 @@ VBlankCB_Field: @ 8056A14
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
- bl sub_8087F54
+ bl ScanlineEffect_InitHBlankDmaTransfer
bl FieldUpdateBgTilemapScroll
bl TransferPlttBuffer
bl TransferTilesetAnimsBuffer
@@ -3954,7 +3954,7 @@ sub_8056A34: @ 8056A34
ldr r0, [r2]
ldr r1, [r2, 0x4]
ldr r2, [r2, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
_08056A52:
pop {r0}
bx r0
@@ -4451,7 +4451,7 @@ sub_8056E80: @ 8056E80
movs r0, 0
movs r1, 0
bl SetGpuReg
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r2, _08056EF8 @ =0x05000002
mov r1, sp
movs r0, 0
@@ -4630,7 +4630,7 @@ sub_8057024: @ 8057024
bl ResetTasks
bl ResetSpriteData
bl ResetPaletteFade
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
bl dp13_810BB8C
bl ResetCameraUpdateInfo
bl InstallCameraPanAheadCallback
@@ -5395,7 +5395,7 @@ _08057690:
bl sub_8055920
b _0805772A
_0805769C:
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
bl dp13_810BB8C
bl ResetCameraUpdateInfo
bl InstallCameraPanAheadCallback
diff --git a/asm/party_menu.s b/asm/party_menu.s
index c0e4a79f4..085d0da85 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -281,7 +281,7 @@ _0811EC80:
bl clear_scheduled_bg_copies_to_vram
b _0811EDFC
_0811EC8E:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _0811EDFC
_0811EC94:
bl ResetPaletteFade
@@ -420,7 +420,7 @@ _0811ED96:
_0811EDA8: .4byte gUnknown_203B09C
_0811EDAC:
movs r0, 0x5
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _0811EDFC
_0811EDB4:
ldr r4, _0811EDCC @ =gUnknown_203B09C
@@ -6888,7 +6888,7 @@ sub_8121FC0: @ 8121FC0
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -6990,7 +6990,7 @@ sub_8122084: @ 8122084
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -13684,7 +13684,7 @@ _08125680:
mov r1, r8
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0x2
bl schedule_bg_copy_tilemap_to_vram
add sp, 0x10
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 4fea7bea1..6d998daaa 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -187,7 +187,7 @@ _080EB77E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
ldr r1, _080EB814 @ =gTasks
@@ -361,11 +361,11 @@ _080EB940:
cmp r0, 0
bne _080EB95C
movs r0, 0x22
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080EB962
_080EB95C:
movs r0, 0x1E
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_080EB962:
ldr r0, _080EB990 @ =gUnknown_203AAC4
ldrb r0, [r0, 0x5]
@@ -376,7 +376,7 @@ _080EB962:
bne _080EB99C
movs r0, 0
movs r1, 0
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
adds r0, r5, 0
bl sub_80EBEB0
ldr r0, _080EB994 @ =gTasks
@@ -449,14 +449,14 @@ sub_80EB9E8: @ 80EB9E8
cmp r0, 0
bne _080EBA18
movs r0, 0x21
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080EBA1E
.align 2, 0
_080EBA10: .4byte gTasks+0x8
_080EBA14: .4byte gUnknown_203AAC4
_080EBA18:
movs r0, 0x1D
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_080EBA1E:
ldr r0, _080EBA80 @ =gUnknown_8402258
bl AddWindow
@@ -488,7 +488,7 @@ _080EBA1E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
ldr r1, _080EBA88 @ =gUnknown_84021DC
@@ -513,7 +513,7 @@ sub_80EBA8C: @ 80EBA8C
adds r4, r0, 0
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
movs r0, 0x1
str r0, [sp]
movs r0, 0
@@ -702,7 +702,7 @@ sub_80EBC0C: @ 80EBC0C
bl sub_80F6E9C
movs r0, 0
movs r1, 0x1
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r0, _080EBC34 @ =sub_80EBBDC
movs r1, 0
bl CreateTask
@@ -777,7 +777,7 @@ sub_80EBCAC: @ 80EBCAC
bl sub_80F6E9C
movs r0, 0
movs r1, 0x1
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r0, _080EBCD4 @ =sub_80EBBDC
movs r1, 0
bl CreateTask
@@ -1341,7 +1341,7 @@ sub_80EC0D8: @ 80EC0D8
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
ldr r1, _080EC154 @ =gTasks
@@ -1503,13 +1503,13 @@ sub_80EC260: @ 80EC260
cmp r0, 0
bne _080EC278
movs r0, 0x22
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080EC27E
.align 2, 0
_080EC274: .4byte gUnknown_203AAC4
_080EC278:
movs r0, 0x1E
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_080EC27E:
bl sub_80F6E9C
ldr r0, _080EC2A8 @ =sub_80EC230
@@ -1773,13 +1773,13 @@ sub_80EC474: @ 80EC474
cmp r0, 0
bne _080EC48C
movs r0, 0x22
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080EC492
.align 2, 0
_080EC488: .4byte gUnknown_203AAC4
_080EC48C:
movs r0, 0x1E
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_080EC492:
ldr r0, _080EC4E8 @ =sub_80EC230
movs r1, 0
@@ -1871,7 +1871,7 @@ sub_80EC53C: @ 80EC53C
lsrs r4, 24
movs r0, 0
movs r1, 0
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
adds r0, r4, 0
bl sub_80EBEB0
movs r0, 0
diff --git a/asm/pokeball.s b/asm/pokeball.s
index 11572c80f..58c9ac77c 100644
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -2276,7 +2276,7 @@ _0804BB22:
ldrsh r0, [r4, r7]
cmp r0, 0x7F
bgt _0804BB64
- ldr r1, _0804BB60 @ =gUnknown_825E074
+ ldr r1, _0804BB60 @ =gSineTable
lsls r0, r2, 24
lsrs r0, 23
adds r0, r1
@@ -2297,7 +2297,7 @@ _0804BB48:
b _0804BB72
.align 2, 0
_0804BB5C: .4byte gSprites
-_0804BB60: .4byte gUnknown_825E074
+_0804BB60: .4byte gSineTable
_0804BB64:
ldrh r0, [r4, 0x38]
strh r0, [r5, 0x20]
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 3d3ca02ea..bd18d2e76 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -58,7 +58,7 @@ sub_810250C: @ 810250C
bl ResetPaletteFade
bl ResetSpriteData
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0x1
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _08102598 @ =gUnknown_8451EBC
@@ -309,7 +309,7 @@ sub_810275C: @ 810275C
ldr r0, _08102794 @ =sub_81024D4
bl SetMainCallback2
movs r0, 0x4
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
pop {r0}
bx r0
.align 2, 0
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index 0d4ee1bcb..416c996bb 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -785,8 +785,8 @@ _08044AE8: .4byte gUnknown_825E05C
_08044AEC: .4byte gUnknown_82349BC
thumb_func_end sub_8044A40
- thumb_func_start sub_8044AF0
-sub_8044AF0: @ 8044AF0
+ thumb_func_start SetUpMonSpriteManagerMaybe
+SetUpMonSpriteManagerMaybe: @ 8044AF0
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1124,7 +1124,7 @@ _08044D70:
bx r1
.align 2, 0
_08044D7C: .4byte gUnknown_20244F4
- thumb_func_end sub_8044AF0
+ thumb_func_end SetUpMonSpriteManagerMaybe
thumb_func_start sub_8044D80
sub_8044D80: @ 8044D80
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index fa72d3c8e..33f64b00b 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -1727,7 +1727,7 @@ sub_811D2EC: @ 811D2EC
lsrs r7, r0, 16
movs r0, 0
mov r8, r0
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
mov r9, r0
@@ -3400,7 +3400,7 @@ sub_811DFC0: @ 811DFC0
strh r0, [r3, 0x4]
movs r5, 0x4
ldrsh r1, [r3, r5]
- ldr r2, _0811E018 @ =gUnknown_825E074
+ ldr r2, _0811E018 @ =gSineTable
movs r5, 0x2
ldrsh r0, [r3, r5]
adds r0, 0x40
@@ -3424,7 +3424,7 @@ sub_811DFC0: @ 811DFC0
strh r0, [r4, 0x26]
b _0811E036
.align 2, 0
-_0811E018: .4byte gUnknown_825E074
+_0811E018: .4byte gSineTable
_0811E01C:
ldr r2, _0811E03C @ =gTasks
movs r5, 0xE
@@ -3958,7 +3958,7 @@ _0811E3E0:
lsls r0, 16
lsrs r0, 16
adds r0, 0x46
- ldr r3, _0811E4BC @ =gUnknown_825E074
+ ldr r3, _0811E4BC @ =gSineTable
movs r4, 0xA
ldrsh r2, [r5, r4]
adds r1, r2, 0
@@ -4035,7 +4035,7 @@ _0811E4A4:
strh r0, [r5]
b _0811E4DC
.align 2, 0
-_0811E4BC: .4byte gUnknown_825E074
+_0811E4BC: .4byte gSineTable
_0811E4C0: .4byte gUnknown_8459B30
_0811E4C4: .4byte gSprites
_0811E4C8:
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index c40afefde..826e2f9e4 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1412,7 +1412,7 @@ _0808C3CC:
.4byte _0808C680
_0808C3E0:
movs r0, 0x1C
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
ldrb r0, [r5, 0xA]
adds r1, r5, 0
adds r1, 0x26
@@ -1420,7 +1420,7 @@ _0808C3E0:
bl sub_80F6E9C
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -1557,12 +1557,12 @@ _0808C508: .4byte gUnknown_83CDA20
_0808C50C:
movs r0, 0
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrh r0, [r5, 0x26]
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
bl ScriptContext2_Disable
bl EnableBothScriptContexts
adds r0, r4, 0
@@ -1833,7 +1833,7 @@ sub_808C72C: @ 808C72C
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
movs r0, 0x2
movs r1, 0
bl GetMenuCursorDimensionByFont
@@ -1861,7 +1861,7 @@ sub_808C72C: @ 808C72C
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
mov r0, r10
strh r5, [r0]
add sp, 0xC
@@ -2716,7 +2716,7 @@ _0808CE18:
ldr r1, [r4]
strb r0, [r1, 0x4]
movs r0, 0x1C
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
bl StorageGetCurrentBox
ldr r1, _0808CE58 @ =gUnknown_20397B8
strb r0, [r1]
@@ -2767,7 +2767,7 @@ _0808CE8C:
ldr r1, [r4]
strb r0, [r1, 0x4]
movs r0, 0x1C
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
ldr r0, _0808CEC4 @ =c2_Box
bl SetMainCallback2
_0808CEB6:
@@ -10686,7 +10686,7 @@ _08090EC6:
ldr r0, [r4]
ldr r0, [r0]
mov r8, r0
- ldr r5, _08090FB8 @ =gUnknown_825E074
+ ldr r5, _08090FB8 @ =gSineTable
mov r0, r9
adds r1, r3, r0
ldrb r0, [r1]
@@ -10803,7 +10803,7 @@ _08090FA0:
_08090FAC: .4byte 0x00000c59
_08090FB0: .4byte 0x00000afc
_08090FB4: .4byte 0x00000a68
-_08090FB8: .4byte gUnknown_825E074
+_08090FB8: .4byte gSineTable
_08090FBC: .4byte sub_80911B0
_08090FC0: .4byte SpriteCallbackDummy
thumb_func_end sub_8090E74
@@ -18961,7 +18961,7 @@ sub_8094E88: @ 8094E88
movs r1, 0x1
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
ldr r0, [r5]
@@ -22569,7 +22569,7 @@ _08096AA2:
lsls r0, 16
asrs r0, 20
strh r0, [r4, 0x22]
- ldr r1, _08096B08 @ =gUnknown_825E074
+ ldr r1, _08096B08 @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
lsls r0, 4
@@ -22605,7 +22605,7 @@ _08096B00:
pop {r0}
bx r0
.align 2, 0
-_08096B08: .4byte gUnknown_825E074
+_08096B08: .4byte gSineTable
_08096B0C: .4byte sub_80969BC
thumb_func_end sub_8096A74
@@ -22650,7 +22650,7 @@ _08096B3E:
lsls r1, 16
asrs r1, 20
strh r1, [r4, 0x22]
- ldr r1, _08096BA4 @ =gUnknown_825E074
+ ldr r1, _08096BA4 @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
lsls r0, 4
@@ -22687,7 +22687,7 @@ _08096B9E:
pop {r0}
bx r0
.align 2, 0
-_08096BA4: .4byte gUnknown_825E074
+_08096BA4: .4byte gSineTable
_08096BA8: .4byte SpriteCallbackDummy
thumb_func_end sub_8096B10
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 65fc2cb45..385e5fb84 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -107,7 +107,7 @@ _081345D0:
beq _08134604
_081345D4:
movs r0, 0x6
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
ldr r2, _081345F8 @ =gUnknown_203B140
ldr r0, [r2]
ldr r3, _081345FC @ =0x00003214
@@ -128,7 +128,7 @@ _081345FC: .4byte 0x00003214
_08134600: .4byte 0x00003234
_08134604:
movs r0, 0x6
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
ldr r0, [r4]
ldr r3, _08134628 @ =0x00003214
adds r0, r3
@@ -149,7 +149,7 @@ _0813462C: .4byte 0x0000321c
_08134630: .4byte 0x00003234
_08134634:
movs r0, 0x8
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
ldr r0, [r4]
ldr r3, _08134710 @ =0x00003214
adds r0, r3
@@ -4567,7 +4567,7 @@ sub_8136BAC: @ 8136BAC
bl ResetSpriteData
bl ResetPaletteFade
bl FreeAllSpritePalettes
- bl remove_some_task
+ bl ScanlineEffect_Stop
pop {r0}
bx r0
thumb_func_end sub_8136BAC
@@ -7608,7 +7608,7 @@ _0813846C:
_08138470:
movs r0, 0x7
_08138472:
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_08138476:
pop {r0}
bx r0
diff --git a/asm/region_map.s b/asm/region_map.s
index 168ca47c3..1072e3068 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -1487,7 +1487,7 @@ sub_80C0A6C: @ 80C0A6C
bl ResetPaletteFade
bl FreeAllSpritePalettes
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
pop {r0}
bx r0
thumb_func_end sub_80C0A6C
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
index 6fb09f439..d88ecf578 100644
--- a/asm/reshow_battle_screen.s
+++ b/asm/reshow_battle_screen.s
@@ -45,7 +45,7 @@ sub_8077764: @ 8077764
cmp r1, 0
beq _080777BC
movs r0, 0x19
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080777DA
.align 2, 0
_080777B0: .4byte gPaletteFade
@@ -53,7 +53,7 @@ _080777B4: .4byte gBattleScripting
_080777B8: .4byte gBattleTypeFlags
_080777BC:
movs r0, 0x18
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080777DA
_080777C4:
movs r0, 0x80
@@ -61,11 +61,11 @@ _080777C4:
cmp r1, 0
beq _080777D4
movs r0, 0x1A
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
b _080777DA
_080777D4:
movs r0, 0x17
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
_080777DA:
ldr r0, _080777E4 @ =sub_80777E8
bl SetMainCallback2
@@ -123,7 +123,7 @@ _08077860:
_08077866:
movs r0, 0
bl SetVBlankCallback
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
bl sub_800F324
movs r0, 0x1
movs r1, 0x1
@@ -142,33 +142,33 @@ _08077866:
movs r0, 0x3
bl ShowBg
bl ResetPaletteFade
- ldr r0, _080778C8 @ =gUnknown_2022974
+ ldr r0, _080778C8 @ =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, _080778CC @ =gUnknown_2022976
+ ldr r0, _080778CC @ =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, _080778D0 @ =gUnknown_2022978
+ ldr r0, _080778D0 @ =gBattle_BG1_X
strh r1, [r0]
- ldr r0, _080778D4 @ =gUnknown_202297A
+ ldr r0, _080778D4 @ =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, _080778D8 @ =gUnknown_202297C
+ ldr r0, _080778D8 @ =gBattle_BG2_X
strh r1, [r0]
- ldr r0, _080778DC @ =gUnknown_202297E
+ ldr r0, _080778DC @ =gBattle_BG2_Y
strh r1, [r0]
- ldr r0, _080778E0 @ =gUnknown_2022980
+ ldr r0, _080778E0 @ =gBattle_BG3_X
strh r1, [r0]
- ldr r0, _080778E4 @ =gUnknown_2022982
+ ldr r0, _080778E4 @ =gBattle_BG3_Y
strh r1, [r0]
b _08077A8A
.align 2, 0
-_080778C8: .4byte gUnknown_2022974
-_080778CC: .4byte gUnknown_2022976
-_080778D0: .4byte gUnknown_2022978
-_080778D4: .4byte gUnknown_202297A
-_080778D8: .4byte gUnknown_202297C
-_080778DC: .4byte gUnknown_202297E
-_080778E0: .4byte gUnknown_2022980
-_080778E4: .4byte gUnknown_2022982
+_080778C8: .4byte gBattle_BG0_X
+_080778CC: .4byte gBattle_BG0_Y
+_080778D0: .4byte gBattle_BG1_X
+_080778D4: .4byte gBattle_BG1_Y
+_080778D8: .4byte gBattle_BG2_X
+_080778DC: .4byte gBattle_BG2_Y
+_080778E0: .4byte gBattle_BG3_X
+_080778E4: .4byte gBattle_BG3_Y
_080778E8:
movs r0, 0
str r0, [sp, 0x4]
diff --git a/asm/roamer.s b/asm/roamer.s
deleted file mode 100644
index d42b34293..000000000
--- a/asm/roamer.s
+++ /dev/null
@@ -1,531 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8141C54
-sub_8141C54: @ 8141C54
- push {lr}
- ldr r0, _08141C84 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08141C88 @ =0x000030d0
- adds r0, r1
- movs r1, 0
- movs r2, 0x1C
- bl memset
- ldr r1, _08141C8C @ =gUnknown_203F3AE
- movs r0, 0
- strb r0, [r1]
- strb r0, [r1, 0x1]
- movs r1, 0
- movs r2, 0
- ldr r0, _08141C90 @ =gUnknown_203F3A8
-_08141C74:
- strb r2, [r0]
- strb r2, [r0, 0x1]
- adds r0, 0x2
- adds r1, 0x1
- cmp r1, 0x2
- bls _08141C74
- pop {r0}
- bx r0
- .align 2, 0
-_08141C84: .4byte gSaveBlock1Ptr
-_08141C88: .4byte 0x000030d0
-_08141C8C: .4byte gUnknown_203F3AE
-_08141C90: .4byte gUnknown_203F3A8
- thumb_func_end sub_8141C54
-
- thumb_func_start sub_8141C94
-sub_8141C94: @ 8141C94
- push {r4-r7,lr}
- sub sp, 0x10
- ldr r7, _08141CB0 @ =gEnemyParty
- bl sub_80CBDB0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _08141CB4
- cmp r0, 0x4
- beq _08141CB8
- movs r6, 0xF3
- b _08141CBA
- .align 2, 0
-_08141CB0: .4byte gEnemyParty
-_08141CB4:
- movs r6, 0xF4
- b _08141CBA
-_08141CB8:
- movs r6, 0xF5
-_08141CBA:
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0x32
- movs r3, 0x20
- bl CreateMon
- ldr r5, _08141D8C @ =gSaveBlock1Ptr
- ldr r1, [r5]
- ldr r4, _08141D90 @ =0x000030d0
- adds r1, r4
- movs r2, 0
- strh r6, [r1, 0x8]
- movs r0, 0x32
- strb r0, [r1, 0xC]
- ldr r0, [r5]
- adds r0, r4
- strb r2, [r0, 0xD]
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0x1
- strb r1, [r0, 0x13]
- adds r0, r7, 0
- movs r1, 0x42
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- str r0, [r1]
- adds r0, r7, 0
- movs r1, 0
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- str r0, [r1, 0x4]
- adds r0, r7, 0
- movs r1, 0x3A
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strh r0, [r1, 0xA]
- adds r0, r7, 0
- movs r1, 0x16
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1, 0xE]
- adds r0, r7, 0
- movs r1, 0x17
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1, 0xF]
- adds r0, r7, 0
- movs r1, 0x18
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1, 0x10]
- adds r0, r7, 0
- movs r1, 0x21
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1, 0x11]
- adds r0, r7, 0
- movs r1, 0x2F
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1, 0x12]
- ldr r5, _08141D94 @ =gUnknown_203F3AE
- movs r0, 0x3
- strb r0, [r5]
- bl Random
- ldr r4, _08141D98 @ =gUnknown_8466C58
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x19
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 3
- subs r1, r0
- adds r1, r4
- ldrb r0, [r1]
- strb r0, [r5, 0x1]
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08141D8C: .4byte gSaveBlock1Ptr
-_08141D90: .4byte 0x000030d0
-_08141D94: .4byte gUnknown_203F3AE
-_08141D98: .4byte gUnknown_8466C58
- thumb_func_end sub_8141C94
-
- thumb_func_start sub_8141D9C
-sub_8141D9C: @ 8141D9C
- push {lr}
- bl sub_8141C54
- bl sub_8141C94
- pop {r0}
- bx r0
- thumb_func_end sub_8141D9C
-
- thumb_func_start UpdateLocationHistoryForRoamer
-UpdateLocationHistoryForRoamer: @ 8141DAC
- ldr r0, _08141DCC @ =gUnknown_203F3A8
- ldrb r1, [r0, 0x2]
- strb r1, [r0, 0x4]
- ldrb r1, [r0, 0x3]
- strb r1, [r0, 0x5]
- ldrb r1, [r0]
- strb r1, [r0, 0x2]
- ldrb r1, [r0, 0x1]
- strb r1, [r0, 0x3]
- ldr r1, _08141DD0 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x4]
- strb r1, [r0]
- ldrb r1, [r2, 0x5]
- strb r1, [r0, 0x1]
- bx lr
- .align 2, 0
-_08141DCC: .4byte gUnknown_203F3A8
-_08141DD0: .4byte gSaveBlock1Ptr
- thumb_func_end UpdateLocationHistoryForRoamer
-
- thumb_func_start RoamerMoveToOtherLocationSet
-RoamerMoveToOtherLocationSet: @ 8141DD4
- push {r4,r5,lr}
- ldr r0, _08141E18 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08141E1C @ =0x000030d0
- adds r0, r1
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08141E10
- ldr r1, _08141E20 @ =gUnknown_203F3AE
- movs r0, 0x3
- strb r0, [r1]
- ldr r5, _08141E24 @ =gUnknown_8466C58
- adds r4, r1, 0
-_08141DEE:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x19
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 3
- subs r1, r0
- adds r1, r5
- ldrb r1, [r1]
- ldrb r0, [r4, 0x1]
- cmp r0, r1
- beq _08141DEE
- strb r1, [r4, 0x1]
-_08141E10:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08141E18: .4byte gSaveBlock1Ptr
-_08141E1C: .4byte 0x000030d0
-_08141E20: .4byte gUnknown_203F3AE
-_08141E24: .4byte gUnknown_8466C58
- thumb_func_end RoamerMoveToOtherLocationSet
-
- thumb_func_start RoamerMove
-RoamerMove: @ 8141E28
- push {r4-r7,lr}
- movs r4, 0
- bl Random
- lsls r0, 16
- movs r1, 0xF0
- lsls r1, 12
- ands r1, r0
- cmp r1, 0
- bne _08141E42
- bl RoamerMoveToOtherLocationSet
- b _08141EB2
-_08141E42:
- ldr r0, _08141E94 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08141E98 @ =0x000030d0
- adds r0, r1
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08141EB2
- ldr r7, _08141E9C @ =gUnknown_203F3AE
-_08141E52:
- ldr r3, _08141EA0 @ =gUnknown_8466C58
- lsls r0, r4, 3
- subs r2, r0, r4
- adds r1, r2, r3
- ldrb r0, [r7, 0x1]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08141EA8
- adds r6, r3, 0
- adds r5, r2, 0x1
- ldr r4, _08141EA4 @ =gUnknown_203F3A8
-_08141E68:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, r5
- adds r0, r6
- ldrb r1, [r0]
- ldrb r0, [r4, 0x4]
- cmp r0, 0x3
- bne _08141E8C
- ldrb r0, [r4, 0x5]
- cmp r0, r1
- beq _08141E68
-_08141E8C:
- cmp r1, 0xFF
- beq _08141E68
- strb r1, [r7, 0x1]
- b _08141EB2
- .align 2, 0
-_08141E94: .4byte gSaveBlock1Ptr
-_08141E98: .4byte 0x000030d0
-_08141E9C: .4byte gUnknown_203F3AE
-_08141EA0: .4byte gUnknown_8466C58
-_08141EA4: .4byte gUnknown_203F3A8
-_08141EA8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x18
- bls _08141E52
-_08141EB2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end RoamerMove
-
- thumb_func_start IsRoamerAt
-IsRoamerAt: @ 8141EB8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08141EE4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, _08141EE8 @ =0x000030d0
- adds r0, r3
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08141EF0
- ldr r0, _08141EEC @ =gUnknown_203F3AE
- ldrb r3, [r0]
- cmp r2, r3
- bne _08141EF0
- ldrb r0, [r0, 0x1]
- cmp r1, r0
- bne _08141EF0
- movs r0, 0x1
- b _08141EF2
- .align 2, 0
-_08141EE4: .4byte gSaveBlock1Ptr
-_08141EE8: .4byte 0x000030d0
-_08141EEC: .4byte gUnknown_203F3AE
-_08141EF0:
- movs r0, 0
-_08141EF2:
- pop {r1}
- bx r1
- thumb_func_end IsRoamerAt
-
- thumb_func_start CreateRoamerMonInstance
-CreateRoamerMonInstance: @ 8141EF8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08141F84 @ =gEnemyParty
- bl ZeroEnemyPartyMons
- ldr r4, _08141F88 @ =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, _08141F8C @ =0x000030d0
- adds r0, r1
- ldrh r1, [r0, 0x8]
- ldrb r2, [r0, 0xC]
- ldr r3, [r0]
- ldr r0, [r0, 0x4]
- str r0, [sp]
- adds r0, r5, 0
- bl CreateMonWithIVsPersonality
- ldr r2, [r4]
- ldr r0, _08141F90 @ =0x000030dd
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x37
- bl SetMonData
- ldr r2, [r4]
- ldr r1, _08141F94 @ =0x000030da
- adds r2, r1
- adds r0, r5, 0
- movs r1, 0x39
- bl SetMonData
- ldr r2, [r4]
- ldr r0, _08141F98 @ =0x000030de
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x16
- bl SetMonData
- ldr r2, [r4]
- ldr r1, _08141F9C @ =0x000030df
- adds r2, r1
- adds r0, r5, 0
- movs r1, 0x17
- bl SetMonData
- ldr r2, [r4]
- ldr r0, _08141FA0 @ =0x000030e0
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x18
- bl SetMonData
- ldr r2, [r4]
- ldr r1, _08141FA4 @ =0x000030e1
- adds r2, r1
- adds r0, r5, 0
- movs r1, 0x21
- bl SetMonData
- ldr r2, [r4]
- ldr r0, _08141FA8 @ =0x000030e2
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x2F
- bl SetMonData
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08141F84: .4byte gEnemyParty
-_08141F88: .4byte gSaveBlock1Ptr
-_08141F8C: .4byte 0x000030d0
-_08141F90: .4byte 0x000030dd
-_08141F94: .4byte 0x000030da
-_08141F98: .4byte 0x000030de
-_08141F9C: .4byte 0x000030df
-_08141FA0: .4byte 0x000030e0
-_08141FA4: .4byte 0x000030e1
-_08141FA8: .4byte 0x000030e2
- thumb_func_end CreateRoamerMonInstance
-
- thumb_func_start TryStartRoamerEncounter
-TryStartRoamerEncounter: @ 8141FAC
- push {lr}
- ldr r0, _08141FDC @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldrb r0, [r1, 0x4]
- ldrb r1, [r1, 0x5]
- bl IsRoamerAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08141FE0
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- cmp r1, 0
- bne _08141FE0
- bl CreateRoamerMonInstance
- movs r0, 0x1
- b _08141FE2
- .align 2, 0
-_08141FDC: .4byte gSaveBlock1Ptr
-_08141FE0:
- movs r0, 0
-_08141FE2:
- pop {r1}
- bx r1
- thumb_func_end TryStartRoamerEncounter
-
- thumb_func_start UpdateRoamerHPStatus
-UpdateRoamerHPStatus: @ 8141FE8
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x39
- bl GetMonData
- ldr r5, _08142014 @ =gSaveBlock1Ptr
- ldr r1, [r5]
- ldr r4, _08142018 @ =0x000030d0
- adds r1, r4
- strh r0, [r1, 0xA]
- adds r0, r6, 0
- movs r1, 0x37
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1, 0xD]
- bl RoamerMoveToOtherLocationSet
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08142014: .4byte gSaveBlock1Ptr
-_08142018: .4byte 0x000030d0
- thumb_func_end UpdateRoamerHPStatus
-
- thumb_func_start SetRoamerInactive
-SetRoamerInactive: @ 814201C
- ldr r0, _0814202C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08142030 @ =0x000030d0
- adds r0, r1
- movs r1, 0
- strb r1, [r0, 0x13]
- bx lr
- .align 2, 0
-_0814202C: .4byte gSaveBlock1Ptr
-_08142030: .4byte 0x000030d0
- thumb_func_end SetRoamerInactive
-
- thumb_func_start GetRoamerLocation
-GetRoamerLocation: @ 8142034
- ldr r3, _08142040 @ =gUnknown_203F3AE
- ldrb r2, [r3]
- strb r2, [r0]
- ldrb r0, [r3, 0x1]
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08142040: .4byte gUnknown_203F3AE
- thumb_func_end GetRoamerLocation
-
- thumb_func_start sub_8142044
-sub_8142044: @ 8142044
- push {lr}
- ldr r0, _08142064 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _08142068 @ =0x000030d0
- adds r0, r1
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08142070
- ldr r1, _0814206C @ =gUnknown_203F3AE
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl get_mapheader_by_bank_and_number
- ldrb r0, [r0, 0x14]
- b _08142072
- .align 2, 0
-_08142064: .4byte gSaveBlock1Ptr
-_08142068: .4byte 0x000030d0
-_0814206C: .4byte gUnknown_203F3AE
-_08142070:
- movs r0, 0xC5
-_08142072:
- pop {r1}
- bx r1
- thumb_func_end sub_8142044
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 438f715fa..11b9feee2 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -301,7 +301,7 @@ _0809CB7A:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
ldr r0, [sp, 0x18]
adds r1, r7, 0
adds r2, r5, 0
@@ -1138,7 +1138,7 @@ _0809D1FA:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0
mov r1, r9
adds r2, r6, 0
@@ -1946,7 +1946,7 @@ _0809D844:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0
mov r1, r9
adds r2, r7, 0
diff --git a/asm/seagallop.s b/asm/seagallop.s
index f54d0d986..c4bf6cccf 100644
--- a/asm/seagallop.s
+++ b/asm/seagallop.s
@@ -533,7 +533,7 @@ _081472F8: .4byte 0x81000800
thumb_func_start sub_81472FC
sub_81472FC: @ 81472FC
push {lr}
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl dp13_810BB8C
diff --git a/asm/shop.s b/asm/shop.s
index aed90ff85..67d30d52a 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -74,7 +74,7 @@ _0809AAF8:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
ldrb r0, [r4]
bl PutWindowTilemap
ldrb r0, [r4]
@@ -522,7 +522,7 @@ _0809AEAC:
ldr r2, _0809AF4C @ =0x01000100
add r0, sp, 0x8
bl CpuFastSet
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl reset_temp_tile_data_buffers
bl FreeAllSpritePalettes
bl ResetPaletteFade
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 07483bb5e..48cb65638 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -4424,7 +4424,7 @@ _08141984:
ldrsh r0, [r5, r2]
cmp r0, 0
bne _081419C4
- ldr r1, _081419BC @ =gUnknown_825E074
+ ldr r1, _081419BC @ =gSineTable
movs r2, 0x4
ldrsh r0, [r5, r2]
lsls r0, 1
@@ -4447,7 +4447,7 @@ _08141984:
movs r0, 0x8
b _081419C6
.align 2, 0
-_081419BC: .4byte gUnknown_825E074
+_081419BC: .4byte gSineTable
_081419C0: .4byte gUnknown_84664DC
_081419C4:
subs r0, r1, 0x1
@@ -4462,7 +4462,7 @@ _081419C6:
movs r1, 0x7F
ands r0, r1
strh r0, [r5, 0x8]
- ldr r1, _081419FC @ =gUnknown_825E074
+ ldr r1, _081419FC @ =gSineTable
movs r2, 0x8
ldrsh r0, [r5, r2]
lsls r0, 1
@@ -4478,7 +4478,7 @@ _081419C6:
bl BlendPalettes
b _08141A2C
.align 2, 0
-_081419FC: .4byte gUnknown_825E074
+_081419FC: .4byte gSineTable
_08141A00:
ldrh r0, [r5, 0x8]
adds r0, 0x1
diff --git a/asm/start_menu.s b/asm/start_menu.s
index cfd970001..65a1e4402 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -158,7 +158,7 @@ sub_806EE7C: @ 806EE7C
bl PutWindowTilemap
ldrb r0, [r4]
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldr r0, _0806EEFC @ =gStringVar1
ldr r1, _0806EF00 @ =gUnknown_2039996
ldrh r1, [r1]
@@ -390,7 +390,7 @@ _0806F06C:
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl sub_80F6F1C
+ bl DrawStdWindowFrame
ldr r1, _0806F08C @ =gUnknown_20370FF
b _0806F0B8
.align 2, 0
@@ -438,7 +438,7 @@ _0806F0C4:
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
strb r0, [r4]
bl sub_80BF708
lsls r0, 24
@@ -1049,7 +1049,7 @@ sub_806F5A4: @ 806F5A4
push {lr}
bl sub_812B234
movs r0, 0xC
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
bl sub_806F624
ldr r1, _0806F5C0 @ =gUnknown_20370F0
ldr r0, _0806F5C4 @ =sub_806F5C8
@@ -1156,7 +1156,7 @@ sub_806F67C: @ 806F67C
push {lr}
bl sub_812B234
movs r0, 0xC
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
bl sub_806F624
ldr r0, _0806F698 @ =task50_save_game
movs r1, 0x50
@@ -1239,7 +1239,7 @@ sub_806F71C: @ 806F71C
push {lr}
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
pop {r0}
bx r0
thumb_func_end sub_806F71C
@@ -1328,7 +1328,7 @@ sub_806F7A8: @ 806F7A8
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
bl remove_start_menu_window_maybe
movs r0, 0
bl sub_8112EDC
@@ -1713,7 +1713,7 @@ _0806FA88:
bl SetGpuReg
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r2, 0xA0
lsls r2, 19
mov r1, sp
@@ -1767,7 +1767,7 @@ _0806FB00:
bl ResetSpriteData
bl ResetTasks
bl ResetPaletteFade
- bl dp12_8087EA4
+ bl ScanlineEffect_Clear
b _0806FB64
_0806FB12:
movs r0, 0
@@ -2178,7 +2178,7 @@ sub_806FE84: @ 806FE84
ldr r4, _0806FE9C @ =gUnknown_2037104
ldrb r0, [r4]
movs r1, 0
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
ldrb r0, [r4]
bl RemoveWindow
pop {r4}
@@ -2197,7 +2197,7 @@ sub_806FEA0: @ 806FEA0
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_80F6F9C
+ bl ClearStdWindowAndFrame
bl remove_start_menu_window_maybe
bl sub_80696C0
bl ScriptContext2_Disable
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s
index 5e2b048e2..b9bf09d46 100644
--- a/asm/teachy_tv.s
+++ b/asm/teachy_tv.s
@@ -122,7 +122,7 @@ _0815AC48:
strb r1, [r0]
bl sub_80BF768
bl clear_scheduled_bg_copies_to_vram
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl ResetSpriteData
@@ -774,7 +774,7 @@ sub_815B1DC: @ 815B1DC
negs r0, r0
ands r0, r1
strb r0, [r2]
- bl sub_80F78A8
+ bl GetTextSpeedSetting
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/title_screen.s b/asm/title_screen.s
index c07978623..c8261c1d3 100644
--- a/asm/title_screen.s
+++ b/asm/title_screen.s
@@ -292,7 +292,7 @@ sub_8078BB4: @ 8078BB4
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_8087F54
+ bl ScanlineEffect_InitHBlankDmaTransfer
ldr r1, _08078BE4 @ =gUnknown_2037F30
ldrb r0, [r1]
cmp r0, 0xFF
@@ -433,7 +433,7 @@ sub_8078C9C: @ 8078C9C
strb r5, [r0, 0x9]
add r0, sp, 0xC
strh r5, [r0]
- ldr r4, _08078D1C @ =gUnknown_2038700
+ ldr r4, _08078D1C @ =gScanlineEffectRegBuffers
ldr r6, _08078D20 @ =0x010000a0
adds r1, r4, 0
adds r2, r6, 0
@@ -450,7 +450,7 @@ sub_8078C9C: @ 8078C9C
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
mov r0, r8
movs r1, 0x1
bl sub_8078C90
@@ -463,7 +463,7 @@ sub_8078C9C: @ 8078C9C
.align 2, 0
_08078D14: .4byte 0x04000054
_08078D18: .4byte 0xa2600001
-_08078D1C: .4byte gUnknown_2038700
+_08078D1C: .4byte gScanlineEffectRegBuffers
_08078D20: .4byte 0x010000a0
thumb_func_end sub_8078C9C
@@ -507,7 +507,7 @@ _08078D5C:
ldrsh r0, [r4, r1]
cmp r0, 0
bge _08078D9C
- ldr r1, _08078D80 @ =gUnknown_2039600
+ ldr r1, _08078D80 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
_08078D78:
@@ -516,7 +516,7 @@ _08078D78:
strh r0, [r4, 0x2]
b _08078D9C
.align 2, 0
-_08078D80: .4byte gUnknown_2039600
+_08078D80: .4byte gScanlineEffect
_08078D84:
movs r0, 0x50
movs r1, 0
@@ -809,7 +809,7 @@ sub_8078FC4: @ 8078FC4
b _08079094
_08078FD6:
movs r0, 0x1
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
ldr r0, _0807902C @ =sub_807941C
movs r1, 0
bl CreateTask
@@ -1481,9 +1481,9 @@ sub_8079550: @ 8079550
asrs r4, r5, 16
cmp r4, 0
blt _08079574
- ldr r3, _08079618 @ =gUnknown_2038700
+ ldr r3, _08079618 @ =gScanlineEffectRegBuffers
lsls r2, r4, 1
- ldr r0, _0807961C @ =gUnknown_2039600
+ ldr r0, _0807961C @ =gScanlineEffect
ldrb r1, [r0, 0x14]
lsls r0, r1, 4
subs r0, r1
@@ -1496,9 +1496,9 @@ _08079574:
movs r3, 0
mov r8, r5
adds r6, r4, 0
- ldr r0, _08079618 @ =gUnknown_2038700
+ ldr r0, _08079618 @ =gScanlineEffectRegBuffers
mov r12, r0
- ldr r7, _0807961C @ =gUnknown_2039600
+ ldr r7, _0807961C @ =gScanlineEffect
movs r5, 0xF
lsls r2, r6, 1
adds r4, r2, 0
@@ -1537,8 +1537,8 @@ _080795AE:
adds r3, 0x10
cmp r3, 0x9F
bgt _080795E6
- ldr r6, _08079618 @ =gUnknown_2038700
- ldr r5, _0807961C @ =gUnknown_2039600
+ ldr r6, _08079618 @ =gScanlineEffectRegBuffers
+ ldr r5, _0807961C @ =gScanlineEffect
movs r4, 0
_080795CC:
cmp r3, 0
@@ -1562,8 +1562,8 @@ _080795E6:
subs r3, 0x10
cmp r3, 0
blt _0807960E
- ldr r6, _08079618 @ =gUnknown_2038700
- ldr r5, _0807961C @ =gUnknown_2039600
+ ldr r6, _08079618 @ =gScanlineEffectRegBuffers
+ ldr r5, _0807961C @ =gScanlineEffect
movs r4, 0
_080795F8:
lsls r2, r3, 1
@@ -1584,14 +1584,14 @@ _0807960E:
pop {r0}
bx r0
.align 2, 0
-_08079618: .4byte gUnknown_2038700
-_0807961C: .4byte gUnknown_2039600
+_08079618: .4byte gScanlineEffectRegBuffers
+_0807961C: .4byte gScanlineEffect
thumb_func_end sub_8079550
thumb_func_start sub_8079620
sub_8079620: @ 8079620
push {lr}
- ldr r1, _08079644 @ =gUnknown_2039600
+ ldr r1, _08079644 @ =gScanlineEffect
ldrb r0, [r1, 0x15]
cmp r0, 0
beq _0807962E
@@ -1607,7 +1607,7 @@ _0807962E:
pop {r0}
bx r0
.align 2, 0
-_08079644: .4byte gUnknown_2039600
+_08079644: .4byte gScanlineEffect
thumb_func_end sub_8079620
thumb_func_start sub_8079648
diff --git a/asm/tm_case.s b/asm/tm_case.s
index e942bbc32..ac58fa0a2 100644
--- a/asm/tm_case.s
+++ b/asm/tm_case.s
@@ -152,7 +152,7 @@ _08131934:
bl clear_scheduled_bg_copies_to_vram
b _08131A52
_0813193E:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _08131A52
_08131944:
bl FreeAllSpritePalettes
@@ -1586,7 +1586,7 @@ _08132468:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0x80
lsls r0, 1
bl Alloc
@@ -3291,7 +3291,7 @@ sub_813337C: @ 813337C
lsrs r5, 24
lsls r4, 24
lsrs r4, 24
- bl sub_80F78A8
+ bl GetTextSpeedSetting
lsls r0, 24
lsrs r0, 24
str r4, [sp]
diff --git a/asm/trade.s b/asm/trade.s
index a96350fd6..9dc1c2bf3 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -3390,7 +3390,7 @@ _0804E208:
movs r1, 0x3
movs r2, 0
movs r3, 0
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0x1
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index e44503915..0b0d6c2cf 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -18,7 +18,7 @@ sub_8088FF0: @ 8088FF0
cmp r0, 0
beq _08089020
ldr r1, _08089028 @ =0x040000d4
- ldr r0, _0808902C @ =gUnknown_2038700
+ ldr r0, _0808902C @ =gScanlineEffectRegBuffers
str r0, [r1]
movs r2, 0xF0
lsls r2, 3
@@ -33,7 +33,7 @@ _08089020:
.align 2, 0
_08089024: .4byte gUnknown_20397A4
_08089028: .4byte 0x040000d4
-_0808902C: .4byte gUnknown_2038700
+_0808902C: .4byte gScanlineEffectRegBuffers
_08089030: .4byte 0x800000a0
thumb_func_end sub_8088FF0
@@ -44,7 +44,7 @@ sub_8089034: @ 8089034
ldrh r3, [r4]
movs r0, 0
strh r0, [r4]
- ldr r1, _08089064 @ =gUnknown_2038700
+ ldr r1, _08089064 @ =gScanlineEffectRegBuffers
ldr r0, _08089068 @ =0x04000006
ldrh r2, [r0]
movs r0, 0xFF
@@ -63,7 +63,7 @@ sub_8089034: @ 8089034
bx r0
.align 2, 0
_08089060: .4byte 0x04000208
-_08089064: .4byte gUnknown_2038700
+_08089064: .4byte gScanlineEffectRegBuffers
_08089068: .4byte 0x04000006
_0808906C: .4byte 0x04000012
thumb_func_end sub_8089034
@@ -291,7 +291,7 @@ _0808924A:
cmp r0, 0
beq _08089280
movs r0, 0xB
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
bl sub_808B1D4
movs r0, 0xF2
bl PlaySE
@@ -387,7 +387,7 @@ _0808931C: .4byte gMain
_08089320: .4byte gReceivedRemoteLinkPlayers
_08089324:
movs r0, 0xA
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
bl sub_808B1D4
ldr r0, _08089340 @ =gUnknown_20397A4
ldr r1, [r0]
@@ -431,7 +431,7 @@ _0808937A:
bl sub_800AAC0
movs r0, 0
movs r1, 0x1
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r2, _080893B0 @ =gUnknown_8419D89
movs r0, 0x1
str r0, [sp]
@@ -1647,7 +1647,7 @@ sub_8089D8C: @ 8089D8C
ldr r0, _08089DA0 @ =sub_8089070
bl SetMainCallback2
movs r0, 0xA
- bl sub_812B1F0
+ bl HelpSystem_SetSomeVariable2
pop {r0}
bx r0
.align 2, 0
@@ -1658,7 +1658,7 @@ _08089DA0: .4byte sub_8089070
sub_8089DA4: @ 8089DA4
push {lr}
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r0, _08089DC4 @ =sub_80890C0
movs r1, 0
bl CreateTask
@@ -4179,10 +4179,10 @@ sub_808B254: @ 808B254
bl HideBg
movs r0, 0x3
bl HideBg
- bl remove_some_task
- bl dp12_8087EA4
+ bl ScanlineEffect_Stop
+ bl ScanlineEffect_Clear
movs r1, 0
- ldr r0, _0808B290 @ =gUnknown_2038700
+ ldr r0, _0808B290 @ =gScanlineEffectRegBuffers
movs r2, 0
movs r3, 0xF0
lsls r3, 3
@@ -4201,7 +4201,7 @@ _0808B278:
pop {r1}
bx r1
.align 2, 0
-_0808B290: .4byte gUnknown_2038700
+_0808B290: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_808B254
thumb_func_start sub_808B294
@@ -4271,7 +4271,7 @@ _0808B2CA:
movs r2, 0
cmp r2, r7
bcs _0808B334
- ldr r3, _0808B3C0 @ =gUnknown_2038700
+ ldr r3, _0808B3C0 @ =gScanlineEffectRegBuffers
_0808B31C:
lsls r0, r2, 16
asrs r0, 16
@@ -4296,7 +4296,7 @@ _0808B334:
lsrs r7, r4, 16
cmp r1, r0
bge _0808B36C
- ldr r0, _0808B3C0 @ =gUnknown_2038700
+ ldr r0, _0808B3C0 @ =gScanlineEffectRegBuffers
mov r12, r0
adds r4, r3, 0
_0808B34E:
@@ -4321,7 +4321,7 @@ _0808B36C:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _0808B38A
- ldr r2, _0808B3C0 @ =gUnknown_2038700
+ ldr r2, _0808B3C0 @ =gScanlineEffectRegBuffers
_0808B378:
asrs r0, r1, 16
lsls r1, r0, 1
@@ -4359,7 +4359,7 @@ _0808B3A2:
_0808B3B4: .4byte gUnknown_20397A4
_0808B3B8: .4byte 0x00007bcc
_0808B3BC: .4byte 0xffff0000
-_0808B3C0: .4byte gUnknown_2038700
+_0808B3C0: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_808B294
thumb_func_start sub_808B3C4
@@ -4612,7 +4612,7 @@ _0808B572:
movs r2, 0
cmp r2, r7
bcs _0808B5DC
- ldr r3, _0808B668 @ =gUnknown_2038700
+ ldr r3, _0808B668 @ =gScanlineEffectRegBuffers
_0808B5C4:
lsls r0, r2, 16
asrs r0, 16
@@ -4637,7 +4637,7 @@ _0808B5DC:
lsrs r7, r4, 16
cmp r1, r0
bge _0808B612
- ldr r0, _0808B668 @ =gUnknown_2038700
+ ldr r0, _0808B668 @ =gScanlineEffectRegBuffers
mov r12, r0
adds r4, r3, 0
_0808B5F6:
@@ -4661,7 +4661,7 @@ _0808B612:
asrs r0, r1, 16
cmp r0, 0x9F
bgt _0808B630
- ldr r2, _0808B668 @ =gUnknown_2038700
+ ldr r2, _0808B668 @ =gScanlineEffectRegBuffers
_0808B61E:
asrs r0, r1, 16
lsls r1, r0, 1
@@ -4699,7 +4699,7 @@ _0808B648:
_0808B65C: .4byte gUnknown_20397A4
_0808B660: .4byte 0x00007bcc
_0808B664: .4byte 0xffff0000
-_0808B668: .4byte gUnknown_2038700
+_0808B668: .4byte gScanlineEffectRegBuffers
thumb_func_end sub_808B540
thumb_func_start sub_808B66C
diff --git a/asm/trig.s b/asm/trig.s
index ca1993b60..1a82afd65 100644
--- a/asm/trig.s
+++ b/asm/trig.s
@@ -9,7 +9,7 @@
Sin: @ 8044E30
lsls r1, 16
asrs r1, 16
- ldr r2, _08044E48 @ =gUnknown_825E074
+ ldr r2, _08044E48 @ =gSineTable
lsls r0, 16
asrs r0, 15
adds r0, r2
@@ -20,14 +20,14 @@ Sin: @ 8044E30
asrs r0, 16
bx lr
.align 2, 0
-_08044E48: .4byte gUnknown_825E074
+_08044E48: .4byte gSineTable
thumb_func_end Sin
thumb_func_start Cos
Cos: @ 8044E4C
lsls r1, 16
asrs r1, 16
- ldr r2, _08044E68 @ =gUnknown_825E074
+ ldr r2, _08044E68 @ =gSineTable
lsls r0, 16
asrs r0, 15
adds r0, 0x80
@@ -39,7 +39,7 @@ Cos: @ 8044E4C
asrs r0, 16
bx lr
.align 2, 0
-_08044E68: .4byte gUnknown_825E074
+_08044E68: .4byte gSineTable
thumb_func_end Cos
thumb_func_start Sin2
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index c61c9a3d8..194066e70 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -200,7 +200,7 @@ sub_81285B4: @ 81285B4
bl TransferPlttBuffer
bl LoadOam
bl ProcessSpriteCopyRequests
- bl sub_8087F54
+ bl ScanlineEffect_InitHBlankDmaTransfer
pop {r0}
bx r0
thumb_func_end sub_81285B4
@@ -3046,7 +3046,7 @@ sub_8129B88: @ 8129B88
str r0, [r4]
_08129B9E:
bl FreeAllWindowBuffers
- ldr r1, _08129BB4 @ =gUnknown_2039600
+ ldr r1, _08129BB4 @ =gScanlineEffect
movs r0, 0x3
strb r0, [r1, 0x15]
pop {r4}
@@ -3054,7 +3054,7 @@ _08129B9E:
bx r0
.align 2, 0
_08129BB0: .4byte gUnknown_203B0E4
-_08129BB4: .4byte gUnknown_2039600
+_08129BB4: .4byte gScanlineEffect
thumb_func_end sub_8129B88
thumb_func_start sub_8129BB8
@@ -4299,7 +4299,7 @@ sub_812A424: @ 812A424
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
_0812A4F0:
add sp, 0x14
pop {r3}
@@ -5000,7 +5000,7 @@ sub_812AA10: @ 812AA10
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl sub_810F7D8
+ bl ProgramAndPlaceMenuCursorOnWindow
movs r0, 0x3
bl PutWindowTilemap
add sp, 0xC
@@ -5384,13 +5384,13 @@ sub_812AD50: @ 812AD50
strh r1, [r0, 0x20]
str r1, [sp, 0xC]
add r0, sp, 0xC
- ldr r1, _0812AD98 @ =gUnknown_2038700
+ ldr r1, _0812AD98 @ =gScanlineEffectRegBuffers
ldr r2, _0812AD9C @ =0x010003c0
bl CpuFastSet
ldr r0, [sp]
ldr r1, [sp, 0x4]
ldr r2, [sp, 0x8]
- bl sub_8087EE4
+ bl ScanlineEffect_SetParams
add sp, 0x10
pop {r0}
bx r0
@@ -5398,7 +5398,7 @@ sub_812AD50: @ 812AD50
_0812AD8C: .4byte 0xa2600001
_0812AD90: .4byte 0x04000014
_0812AD94: .4byte gUnknown_203B0E4
-_0812AD98: .4byte gUnknown_2038700
+_0812AD98: .4byte gScanlineEffectRegBuffers
_0812AD9C: .4byte 0x010003c0
thumb_func_end sub_812AD50
@@ -5410,12 +5410,12 @@ sub_812ADA0: @ 812ADA0
lsrs r0, 16
mov r1, sp
strh r0, [r1]
- ldr r5, _0812ADE8 @ =gUnknown_2039600
+ ldr r5, _0812ADE8 @ =gScanlineEffect
ldrb r0, [r5, 0x14]
lsls r1, r0, 4
subs r1, r0
lsls r1, 7
- ldr r4, _0812ADEC @ =gUnknown_2038700
+ ldr r4, _0812ADEC @ =gScanlineEffectRegBuffers
adds r1, r4
ldr r2, _0812ADF0 @ =0x01000090
mov r0, sp
@@ -5439,8 +5439,8 @@ sub_812ADA0: @ 812ADA0
pop {r0}
bx r0
.align 2, 0
-_0812ADE8: .4byte gUnknown_2039600
-_0812ADEC: .4byte gUnknown_2038700
+_0812ADE8: .4byte gScanlineEffect
+_0812ADEC: .4byte gScanlineEffectRegBuffers
_0812ADF0: .4byte 0x01000090
_0812ADF4: .4byte 0x01000010
thumb_func_end sub_812ADA0
@@ -5457,7 +5457,7 @@ sub_812ADF8: @ 812ADF8
lsrs r4, 16
mov r0, sp
strh r4, [r0]
- ldr r5, _0812AE64 @ =gUnknown_2038700
+ ldr r5, _0812AE64 @ =gScanlineEffectRegBuffers
ldr r0, _0812AE68 @ =0x01000090
mov r9, r0
mov r0, sp
@@ -5498,7 +5498,7 @@ sub_812ADF8: @ 812ADF8
pop {r0}
bx r0
.align 2, 0
-_0812AE64: .4byte gUnknown_2038700
+_0812AE64: .4byte gScanlineEffectRegBuffers
_0812AE68: .4byte 0x01000090
_0812AE6C: .4byte 0x01000010
thumb_func_end sub_812ADF8
diff --git a/asm/unk_8147AA8.s b/asm/unk_8147AA8.s
index c495dc281..36b8940ab 100644
--- a/asm/unk_8147AA8.s
+++ b/asm/unk_8147AA8.s
@@ -7393,7 +7393,7 @@ _0814B1EC:
movs r0, 0
strh r0, [r5, 0x30]
_0814B1FE:
- ldr r1, _0814B22C @ =gUnknown_825E074
+ ldr r1, _0814B22C @ =gSineTable
movs r2, 0x30
ldrsh r0, [r5, r2]
lsls r0, 1
@@ -7417,7 +7417,7 @@ _0814B1FE:
strh r1, [r5, 0x2E]
b _0814B234
.align 2, 0
-_0814B22C: .4byte gUnknown_825E074
+_0814B22C: .4byte gSineTable
_0814B230:
ldr r0, _0814B23C @ =SpriteCallbackDummy
str r0, [r5, 0x1C]
diff --git a/asm/unk_814BB4C.s b/asm/unk_814BB4C.s
index 9c0e0503b..5ad566185 100644
--- a/asm/unk_814BB4C.s
+++ b/asm/unk_814BB4C.s
@@ -201,7 +201,7 @@ _0814BC98:
_0814BCA2:
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldrb r1, [r5, 0x1]
movs r0, 0x2
mov r8, r0
@@ -287,7 +287,7 @@ _0814BD48:
beq _0814BD5A
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
_0814BD5A:
ldrb r0, [r7, 0xE]
movs r1, 0x1
@@ -597,7 +597,7 @@ _0814BFA0: .4byte gUnknown_83DFC9C
_0814BFA4:
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
movs r0, 0xA
movs r1, 0x1
movs r2, 0
@@ -2855,7 +2855,7 @@ _0814D106:
beq _0814D17E
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r2, _0814D148 @ =gUnknown_8419F54
movs r0, 0
str r0, [sp]
@@ -2979,7 +2979,7 @@ _0814D204:
_0814D206:
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
movs r4, 0
str r4, [sp]
adds r0, r6, 0
@@ -3159,7 +3159,7 @@ _0814D34A:
_0814D356:
movs r0, 0
movs r1, 0x1
- bl sub_80F6F54
+ bl ClearDialogWindowAndFrame
adds r0, r5, 0
bl sub_814DA04
movs r0, 0x1
@@ -3217,7 +3217,7 @@ _0814D3BA:
_0814D3C0:
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldrh r1, [r5, 0x14]
cmp r1, 0x3
bne _0814D3F0
diff --git a/asm/unk_814D5C8.s b/asm/unk_814D5C8.s
index 4c78d4459..422d34f07 100644
--- a/asm/unk_814D5C8.s
+++ b/asm/unk_814D5C8.s
@@ -49,7 +49,7 @@ _0814D61C:
movs r0, 0
movs r1, 0
bl SetGpuReg
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl reset_temp_tile_data_buffers
b _0814D878
_0814D63A:
@@ -186,8 +186,8 @@ _0814D768:
beq _0814D774
b _0814D87E
_0814D774:
- bl sub_80F6C6C
- bl sub_80F6C98
+ bl InitStandardTextBoxWindows
+ bl ResetBg0
adds r0, r5, 0
bl sub_814EB38
adds r0, r5, 0
diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s
index e0448643e..324a6b48c 100644
--- a/asm/unk_81507FC.s
+++ b/asm/unk_81507FC.s
@@ -10657,7 +10657,7 @@ _08155A9C:
_08155AA6:
movs r0, 0
movs r1, 0
- bl sub_80F6EE4
+ bl DrawDialogueFrame
ldr r2, _08155ACC @ =gUnknown_8419F54
str r4, [sp]
movs r0, 0x2
@@ -11276,8 +11276,8 @@ _08155EC6:
movs r1, 0
movs r2, 0
bl ChangeBgY
- bl sub_80F6C6C
- bl sub_80F6C98
+ bl InitStandardTextBoxWindows
+ bl ResetBg0
movs r1, 0x82
lsls r1, 5
movs r0, 0
diff --git a/asm/unk_815F138.s b/asm/unk_815F138.s
index eaca7d2a4..3a1d49e81 100644
--- a/asm/unk_815F138.s
+++ b/asm/unk_815F138.s
@@ -500,7 +500,7 @@ _0815F4DC:
adds r0, 0x1
strh r0, [r4]
_0815F4FA:
- ldr r0, _0815F50C @ =gUnknown_825E074
+ ldr r0, _0815F50C @ =gSineTable
movs r2, 0x2
ldrsh r1, [r4, r2]
lsls r1, 1
@@ -510,7 +510,7 @@ _0815F4FA:
asrs r0, 4
b _0815F53E
.align 2, 0
-_0815F50C: .4byte gUnknown_825E074
+_0815F50C: .4byte gSineTable
_0815F510:
ldrh r0, [r4, 0x2]
adds r0, 0x10
@@ -527,7 +527,7 @@ _0815F510:
adds r0, 0x1
strh r0, [r4]
_0815F52E:
- ldr r1, _0815F544 @ =gUnknown_825E074
+ ldr r1, _0815F544 @ =gSineTable
movs r2, 0x2
ldrsh r0, [r4, r2]
lsls r0, 1
@@ -540,7 +540,7 @@ _0815F53E:
strh r0, [r5, 0x26]
b _0815F55A
.align 2, 0
-_0815F544: .4byte gUnknown_825E074
+_0815F544: .4byte gSineTable
_0815F548:
ldrh r0, [r4, 0x2]
adds r0, 0x1
diff --git a/asm/unknown_task.s b/asm/unknown_task.s
deleted file mode 100644
index 6f417a4a1..000000000
--- a/asm/unknown_task.s
+++ /dev/null
@@ -1,644 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start remove_some_task
-remove_some_task: @ 8087E64
- push {r4,lr}
- ldr r4, _08087E94 @ =gUnknown_2039600
- movs r0, 0
- strb r0, [r4, 0x15]
- ldr r1, _08087E98 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _08087E9C @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _08087EA0 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldrb r0, [r4, 0x18]
- cmp r0, 0xFF
- beq _08087E8E
- bl DestroyTask
- movs r0, 0xFF
- strb r0, [r4, 0x18]
-_08087E8E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08087E94: .4byte gUnknown_2039600
-_08087E98: .4byte 0x040000b0
-_08087E9C: .4byte 0x0000c5ff
-_08087EA0: .4byte 0x00007fff
- thumb_func_end remove_some_task
-
- thumb_func_start dp12_8087EA4
-dp12_8087EA4: @ 8087EA4
- push {r4,lr}
- sub sp, 0x4
- mov r0, sp
- movs r4, 0
- strh r4, [r0]
- ldr r1, _08087ED8 @ =gUnknown_2038700
- ldr r2, _08087EDC @ =0x01000780
- bl CpuSet
- ldr r0, _08087EE0 @ =gUnknown_2039600
- 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
-_08087ED8: .4byte gUnknown_2038700
-_08087EDC: .4byte 0x01000780
-_08087EE0: .4byte gUnknown_2039600
- thumb_func_end dp12_8087EA4
-
- thumb_func_start sub_8087EE4
-sub_8087EE4: @ 8087EE4
- push {lr}
- sub sp, 0xC
- str r0, [sp]
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- ldr r0, _08087F08 @ =0xa2600001
- cmp r1, r0
- bne _08087F18
- ldr r0, _08087F0C @ =gUnknown_2039600
- ldr r1, _08087F10 @ =gUnknown_2038702
- str r1, [r0]
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- str r1, [r0, 0x4]
- ldr r1, _08087F14 @ =sub_8087FE0
- b _08087F28
- .align 2, 0
-_08087F08: .4byte 0xa2600001
-_08087F0C: .4byte gUnknown_2039600
-_08087F10: .4byte gUnknown_2038702
-_08087F14: .4byte sub_8087FE0
-_08087F18:
- ldr r0, _08087F48 @ =gUnknown_2039600
- ldr r1, _08087F4C @ =gUnknown_2038704
- str r1, [r0]
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- str r1, [r0, 0x4]
- ldr r1, _08087F50 @ =sub_8088000
-_08087F28:
- 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
-_08087F48: .4byte gUnknown_2039600
-_08087F4C: .4byte gUnknown_2038704
-_08087F50: .4byte sub_8088000
- thumb_func_end sub_8087EE4
-
- thumb_func_start sub_8087F54
-sub_8087F54: @ 8087F54
- push {r4,lr}
- ldr r4, _08087F84 @ =gUnknown_2039600
- ldrb r0, [r4, 0x15]
- cmp r0, 0
- beq _08087FCE
- cmp r0, 0x3
- bne _08087F98
- movs r0, 0
- strb r0, [r4, 0x15]
- ldr r1, _08087F88 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _08087F8C @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _08087F90 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldr r1, _08087F94 @ =gUnknown_203961C
- movs r0, 0x1
- strb r0, [r1]
- b _08087FCE
- .align 2, 0
-_08087F84: .4byte gUnknown_2039600
-_08087F88: .4byte 0x040000b0
-_08087F8C: .4byte 0x0000c5ff
-_08087F90: .4byte 0x00007fff
-_08087F94: .4byte gUnknown_203961C
-_08087F98:
- ldr r1, _08087FD4 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _08087FD8 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _08087FDC @ =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]
-_08087FCE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08087FD4: .4byte 0x040000b0
-_08087FD8: .4byte 0x0000c5ff
-_08087FDC: .4byte 0x00007fff
- thumb_func_end sub_8087F54
-
- thumb_func_start sub_8087FE0
-sub_8087FE0: @ 8087FE0
- ldr r0, _08087FF8 @ =gUnknown_2039600
- ldr r2, [r0, 0x8]
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _08087FFC @ =gUnknown_2038700
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- bx lr
- .align 2, 0
-_08087FF8: .4byte gUnknown_2039600
-_08087FFC: .4byte gUnknown_2038700
- thumb_func_end sub_8087FE0
-
- thumb_func_start sub_8088000
-sub_8088000: @ 8088000
- ldr r0, _08088018 @ =gUnknown_2039600
- ldr r2, [r0, 0x8]
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _0808801C @ =gUnknown_2038700
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- bx lr
- .align 2, 0
-_08088018: .4byte gUnknown_2039600
-_0808801C: .4byte gUnknown_2038700
- thumb_func_end sub_8088000
-
- thumb_func_start task00_for_dp12
-task00_for_dp12: @ 8088020
- 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, _08088048 @ =gUnknown_203961C
- ldrb r0, [r0]
- cmp r0, 0
- beq _08088050
- mov r0, r12
- bl DestroyTask
- ldr r1, _0808804C @ =gUnknown_2039600
- movs r0, 0xFF
- strb r0, [r1, 0x18]
- b _080881D0
- .align 2, 0
-_08088048: .4byte gUnknown_203961C
-_0808804C: .4byte gUnknown_2039600
-_08088050:
- ldr r1, _0808807C @ =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 _080880FC
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- cmp r0, 0xE
- bhi _080880FC
- lsls r0, 2
- ldr r1, _08088080 @ =_08088084
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0808807C: .4byte gTasks
-_08088080: .4byte _08088084
- .align 2, 0
-_08088084:
- .4byte _080880C0
- .4byte _080880FC
- .4byte _080880C8
- .4byte _080880FC
- .4byte _080880D0
- .4byte _080880FC
- .4byte _080880D8
- .4byte _080880FC
- .4byte _080880E0
- .4byte _080880FC
- .4byte _080880E8
- .4byte _080880FC
- .4byte _080880F0
- .4byte _080880FC
- .4byte _080880F8
-_080880C0:
- ldr r0, _080880C4 @ =gUnknown_2022974
- b _080880FA
- .align 2, 0
-_080880C4: .4byte gUnknown_2022974
-_080880C8:
- ldr r0, _080880CC @ =gUnknown_2022976
- b _080880FA
- .align 2, 0
-_080880CC: .4byte gUnknown_2022976
-_080880D0:
- ldr r0, _080880D4 @ =gUnknown_2022978
- b _080880FA
- .align 2, 0
-_080880D4: .4byte gUnknown_2022978
-_080880D8:
- ldr r0, _080880DC @ =gUnknown_202297A
- b _080880FA
- .align 2, 0
-_080880DC: .4byte gUnknown_202297A
-_080880E0:
- ldr r0, _080880E4 @ =gUnknown_202297C
- b _080880FA
- .align 2, 0
-_080880E4: .4byte gUnknown_202297C
-_080880E8:
- ldr r0, _080880EC @ =gUnknown_202297E
- b _080880FA
- .align 2, 0
-_080880EC: .4byte gUnknown_202297E
-_080880F0:
- ldr r0, _080880F4 @ =gUnknown_2022980
- b _080880FA
- .align 2, 0
-_080880F4: .4byte gUnknown_2022980
-_080880F8:
- ldr r0, _0808815C @ =gUnknown_2022982
-_080880FA:
- ldrh r6, [r0]
-_080880FC:
- 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 _08088168
- 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 _080881D0
- ldr r5, _08088160 @ =gUnknown_2038700
- ldr r0, _08088164 @ =gUnknown_2039600
- mov r8, r0
- adds r7, r1, 0
- lsls r0, r2, 1
- adds r4, r0, r5
-_08088136:
- 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 _08088136
- b _080881D0
- .align 2, 0
-_0808815C: .4byte gUnknown_2022982
-_08088160: .4byte gUnknown_2038700
-_08088164: .4byte gUnknown_2039600
-_08088168:
- 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 _080881B0
- ldr r5, _080881E0 @ =gUnknown_2038700
- adds r7, r1, 0
- lsls r0, r2, 1
- adds r4, r0, r5
- ldr r0, _080881E4 @ =gUnknown_2039600
- mov r8, r0
-_0808818E:
- 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 _0808818E
-_080881B0:
- 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 _080881D0
- movs r0, 0
- strh r0, [r2, 0xE]
-_080881D0:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080881E0: .4byte gUnknown_2038700
-_080881E4: .4byte gUnknown_2039600
- thumb_func_end task00_for_dp12
-
- thumb_func_start sub_80881E8
-sub_80881E8: @ 80881E8
- 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, _0808822C @ =gUnknown_825E074
- mov r12, r0
-_080881FC:
- 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 _08088210
- adds r0, 0xFF
-_08088210:
- 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 _080881FC
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808822C: .4byte gUnknown_825E074
- thumb_func_end sub_80881E8
-
- thumb_func_start sub_8088230
-sub_8088230: @ 8088230
- 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, _0808833C @ =0x04000010
- add r0, r9
- str r0, [sp]
- ldr r0, _08088340 @ =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_8087EE4
- ldr r0, _08088344 @ =task00_for_dp12
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08088348 @ =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, _0808834C @ =gUnknown_2039600
- strb r7, [r0, 0x18]
- ldr r0, _08088350 @ =gUnknown_203961C
- movs r1, 0
- strb r1, [r0]
- ldr r4, _08088354 @ =gUnknown_2038980
- 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_80881E8
- ldr r0, [sp, 0xC]
- cmp r5, r0
- bge _0808832A
- ldr r1, _08088358 @ =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
-_08088316:
- 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 _08088316
-_0808832A:
- 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
-_0808833C: .4byte 0x04000010
-_08088340: .4byte 0xa2600001
-_08088344: .4byte task00_for_dp12
-_08088348: .4byte gTasks
-_0808834C: .4byte gUnknown_2039600
-_08088350: .4byte gUnknown_203961C
-_08088354: .4byte gUnknown_2038980
-_08088358: .4byte 0xfffffd80
- thumb_func_end sub_8088230
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s
index 67c159abc..21b97c942 100644
--- a/asm/wild_encounter.s
+++ b/asm/wild_encounter.s
@@ -482,7 +482,7 @@ _08082A8E:
lsrs r0, 16
orrs r4, r0
adds r0, r4, 0
- bl sub_8082AB8
+ bl GetUnownLetterByPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, r5
@@ -493,8 +493,8 @@ _08082A8E:
bx r1
thumb_func_end sub_8082A88
- thumb_func_start sub_8082AB8
-sub_8082AB8: @ 8082AB8
+ thumb_func_start GetUnownLetterByPersonality
+GetUnownLetterByPersonality: @ 8082AB8
push {lr}
adds r2, r0, 0
movs r0, 0xC0
@@ -520,7 +520,7 @@ sub_8082AB8: @ 8082AB8
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end sub_8082AB8
+ thumb_func_end GetUnownLetterByPersonality
thumb_func_start sub_8082AEC
sub_8082AEC: @ 8082AEC
diff --git a/asm/wild_pokemon_area.s b/asm/wild_pokemon_area.s
index 26c908a14..71d8ac8dc 100644
--- a/asm/wild_pokemon_area.s
+++ b/asm/wild_pokemon_area.s
@@ -221,13 +221,13 @@ sub_813CB5C: @ 813CB5C
ldr r0, _0813CBBC @ =gUnknown_84642F4
lsls r4, 2
adds r4, r0
- bl sub_80CBDB0
+ bl ScrSpecial_GetStarter
ldrh r1, [r4, 0x2]
lsls r0, 16
lsrs r0, 16
cmp r1, r0
bne _0813CBC4
- bl sub_8142044
+ bl GetRoamerLocationMapSectionId
lsls r0, 16
lsrs r0, 16
movs r1, 0
diff --git a/asm/wireless_communication_status_screen.s b/asm/wireless_communication_status_screen.s
index b4aecb9a5..72368171f 100644
--- a/asm/wireless_communication_status_screen.s
+++ b/asm/wireless_communication_status_screen.s
@@ -92,7 +92,7 @@ sub_814F1E4: @ 814F1E4
bl ResetPaletteFade
bl ResetSpriteData
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl m4aSoundVSyncOn
ldr r0, _0814F31C @ =sub_814F1C0
bl SetVBlankCallback
@@ -130,7 +130,7 @@ sub_814F1E4: @ 814F1E4
movs r2, 0x20
bl LoadPalette
movs r0, 0xF0
- bl sub_80F77CC
+ bl Menu_LoadStdPalAt
bl UnkTextUtil_Reset
movs r0, 0x20
str r0, [sp]
diff --git a/charmap.txt b/charmap.txt
index ad4062731..f8161e87d 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -534,6 +534,83 @@ SE_TB_START = 72 00
SE_TB_KON = 73 00
SE_TB_KARA = 74 00
SE_BIDORO = 75 00
+
+BGM_FRLG_FOLLOW_ME = 10 01
+BGM_FRLG_GAMECORNER = 11 01
+BGM_FRLG_ROCKET_HIDEOUT = 12 01
+BGM_FRLG_GYM = 13 01
+BGM_FRLG_JIGGLYPUFF = 14 01
+BGM_FRLG_OPENING = 15 01
+BGM_FRLG_TITLE = 16 01
+BGM_FRLG_CINNABAR_ISLAND = 17 01
+BGM_FRLG_LAVENDER_TOWN = 18 01
+BGM_FRLG_HEALING_TEST = 19 01
+BGM_FRLG_BICYCLE = 1A 01
+BGM_FRLG_SUSPICIOUS_EYE = 1B 01
+BGM_FRLG_GIRL_EYE = 1C 01
+BGM_FRLG_BOY_EYE = 1D 01
+BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME = 1E 01
+BGM_FRLG_VIRIDIAN_FOREST = 1F 01
+BGM_FRLG_MT_MOON = 20 01
+BGM_FRLG_POKEMON_MANSION = 21 01
+BGM_FRLG_CREDITS = 22 01
+BGM_FRLG_ROUTE_1 = 23 01
+BGM_FRLG_ROUTE_24 = 24 01
+BGM_FRLG_ROUTE_3 = 25 01
+BGM_FRLG_ROUTE_11 = 26 01
+BGM_FRLG_INDIGO_PLATEAU = 27 01
+BGM_FRLG_BATTLE_LEADER = 28 01
+BGM_FRLG_BATTLE_TRAINER = 29 01
+BGM_FRLG_BATTLE_WILD_POKEMON = 2A 01
+BGM_FRLG_BATTLE_CHAMPION = 2B 01
+BGM_FRLG_PALLET_TOWN = 2C 01
+BGM_FRLG_OAK_LAB = 2D 01
+BGM_FRLG_PROF_OAK = 2E 01
+BGM_FRLG_POKEMON_CENTER = 2F 01
+BGM_FRLG_SS_ANNE = 30 01
+BGM_FRLG_SURF = 31 01
+BGM_FRLG_POKEMON_TOWER = 32 01
+BGM_FRLG_SILPH = 33 01
+BGM_FRLG_CERULEAN_CITY = 34 01
+BGM_FRLG_CELADON_CITY = 35 01
+BGM_FRLG_KACHI_TRAINER = 36 01
+BGM_FRLG_KACHI_WILD_POKEMON = 37 01
+BGM_FRLG_KACHI_LEADER = 38 01
+BGM_FRLG_VERMILION_CITY = 39 01
+BGM_FRLG_VIRIDIAN_CITY = 3A 01
+BGM_FRLG_RIVAL = 3B 01
+BGM_FRLG_RIVAL_POSTBATTLE = 3C 01
+BGM_FRLG_ME_POKEDEX_EVAL = 3D 01
+BGM_FRLG_ME_KEYITEM = 3E 01
+BGM_FRLG_FANFA_POKEMON_CAUGHT = 3F 01
+BGM_FRLG_FANFA_TRAINERCARD_PHOTO = 40 01
+BGM_FRLG_GAMEFREAK_LOGO = 41 01
+BGM_FRLG_CAUGHT_POKEMON = 42 01
+BGM_FRLG_GAME_EXPLANATION_START = 43 01
+BGM_FRLG_GAME_EXPLANATION_MIDDLE = 44 01
+BGM_FRLG_GAME_EXPLANATION_END = 45 01
+BGM_FRLG_POKEMON_JUMP = 46 01
+BGM_FRLG_UNION_ROOM = 47 01
+BGM_FRLG_POKEMON_NETWORK_CENTER = 48 01
+BGM_FRLG_MYSTERY_GIFT = 49 01
+BGM_FRLG_DODRIO_BERRY_PICK = 4A 01
+BGM_FRLG_MT_EMBER = 4B 01
+BGM_FRLG_TEACHY_TV_EPISODE = 4C 01
+BGM_FRLG_SEVII_ISLANDS = 4D 01
+BGM_FRLG_TANOBY_RUINS = 4E 01
+BGM_FRLG_ISLAND_ONE = 4F 01
+BGM_FRLG_ISLAND_FOUR = 50 01
+BGM_FRLG_ISLAND_SIX = 51 01
+BGM_FRLG_FLUTE = 52 01
+BGM_FRLG_BATTLE_DEOXYS = 53 01
+BGM_FRLG_BATTLE_MEWTWO = 54 01
+BGM_FRLG_BATTLE_LEGENDARY = 55 01
+BGM_FRLG_LEADER_EYE = 56 01
+BGM_FRLG_DEOXYS_EYE = 57 01
+BGM_FRLG_TRAINER_TOWER = 58 01
+BGM_FRLG_HALL_OF_FAME_PALLET_TOWN = 59 01
+BGM_FRLG_TEACHY_TV = 5A 01
+
BGM_STOP = 5D 01
BGM_TETSUJI = 5E 01
BGM_FIELD13 = 5F 01
diff --git a/data/battle_anim.s b/data/battle_anim.s
new file mode 100644
index 000000000..21f3e5158
--- /dev/null
+++ b/data/battle_anim.s
@@ -0,0 +1,271 @@
+ .section .rodata
+ .align 2
+gOamData_83AC9C8::
+ .4byte 0x00000000, 0x00000800
+
+gOamData_83AC9D0::
+ .4byte 0x40000000, 0x00000800
+
+gOamData_83AC9D8::
+ .4byte 0x80000000, 0x00000800
+
+gOamData_83AC9E0::
+ .4byte 0xc0000000, 0x00000800
+
+gOamData_83AC9E8::
+ .4byte 0x00004000, 0x00000800
+
+gOamData_83AC9F0::
+ .4byte 0x40004000, 0x00000800
+
+gOamData_83AC9F8::
+ .4byte 0x80004000, 0x00000800
+
+gOamData_83ACA00::
+ .4byte 0xc0004000, 0x00000800
+
+gOamData_83ACA08::
+ .4byte 0x00008000, 0x00000800
+
+gOamData_83ACA10::
+ .4byte 0x40008000, 0x00000800
+
+gOamData_83ACA18::
+ .4byte 0x80008000, 0x00000800
+
+gOamData_83ACA20::
+ .4byte 0xc0008000, 0x00000800
+
+gOamData_83ACA28::
+ .4byte 0x00000100, 0x00000800
+
+gOamData_83ACA30::
+ .4byte 0x40000100, 0x00000800
+
+gOamData_83ACA38::
+ .4byte 0x80000100, 0x00000800
+
+gOamData_83ACA40::
+ .4byte 0xc0000100, 0x00000800
+
+gOamData_83ACA48::
+ .4byte 0x00004100, 0x00000800
+
+gOamData_83ACA50::
+ .4byte 0x40004100, 0x00000800
+
+gOamData_83ACA58::
+ .4byte 0x80004100, 0x00000800
+
+gOamData_83ACA60::
+ .4byte 0xc0004100, 0x00000800
+
+gOamData_83ACA68::
+ .4byte 0x00008100, 0x00000800
+
+gOamData_83ACA70::
+ .4byte 0x40008100, 0x00000800
+
+gOamData_83ACA78::
+ .4byte 0x80008100, 0x00000800
+
+gOamData_83ACA80::
+ .4byte 0xc0008100, 0x00000800
+
+gOamData_83ACA88::
+ .4byte 0x00000300, 0x00000800
+
+gOamData_83ACA90::
+ .4byte 0x40000300, 0x00000800
+
+gOamData_83ACA98::
+ .4byte 0x80000300, 0x00000800
+
+gOamData_83ACAA0::
+ .4byte 0xc0000300, 0x00000800
+
+gOamData_83ACAA8::
+ .4byte 0x00004300, 0x00000800
+
+gOamData_83ACAB0::
+ .4byte 0x40004300, 0x00000800
+
+gOamData_83ACAB8::
+ .4byte 0x80004300, 0x00000800
+
+gOamData_83ACAC0::
+ .4byte 0xc0004300, 0x00000800
+
+gOamData_83ACAC8::
+ .4byte 0x00008300, 0x00000800
+
+gOamData_83ACAD0::
+ .4byte 0x40008300, 0x00000800
+
+gOamData_83ACAD8::
+ .4byte 0x80008300, 0x00000800
+
+gOamData_83ACAE0::
+ .4byte 0xc0008300, 0x00000800
+
+gOamData_83ACAE8::
+ .4byte 0x00000400, 0x00000800
+
+gOamData_83ACAF0::
+ .4byte 0x40000400, 0x00000800
+
+gOamData_83ACAF8::
+ .4byte 0x80000400, 0x00000800
+
+gOamData_83ACB00::
+ .4byte 0xc0000400, 0x00000800
+
+gOamData_83ACB08::
+ .4byte 0x00004400, 0x00000800
+
+gOamData_83ACB10::
+ .4byte 0x40004400, 0x00000800
+
+gOamData_83ACB18::
+ .4byte 0x80004400, 0x00000800
+
+gOamData_83ACB20::
+ .4byte 0xc0004400, 0x00000800
+
+gOamData_83ACB28::
+ .4byte 0x00008400, 0x00000800
+
+gOamData_83ACB30::
+ .4byte 0x40008400, 0x00000800
+
+gOamData_83ACB38::
+ .4byte 0x80008400, 0x00000800
+
+gOamData_83ACB40::
+ .4byte 0xc0008400, 0x00000800
+
+gOamData_83ACB48::
+ .4byte 0x00000500, 0x00000800
+
+gOamData_83ACB50::
+ .4byte 0x40000500, 0x00000800
+
+gOamData_83ACB58::
+ .4byte 0x80000500, 0x00000800
+
+gOamData_83ACB60::
+ .4byte 0xc0000500, 0x00000800
+
+gOamData_83ACB68::
+ .4byte 0x00004500, 0x00000800
+
+gOamData_83ACB70::
+ .4byte 0x40004500, 0x00000800
+
+gOamData_83ACB78::
+ .4byte 0x80004500, 0x00000800
+
+gOamData_83ACB80::
+ .4byte 0xc0004500, 0x00000800
+
+gOamData_83ACB88::
+ .4byte 0x00008500, 0x00000800
+
+gOamData_83ACB90::
+ .4byte 0x40008500, 0x00000800
+
+gOamData_83ACB98::
+ .4byte 0x80008500, 0x00000800
+
+gOamData_83ACBA0::
+ .4byte 0xc0008500, 0x00000800
+
+gOamData_83ACBA8::
+ .4byte 0x00000700, 0x00000800
+
+gOamData_83ACBB0::
+ .4byte 0x40000700, 0x00000800
+
+gOamData_83ACBB8::
+ .4byte 0x80000700, 0x00000800
+
+gOamData_83ACBC0::
+ .4byte 0xc0000700, 0x00000800
+
+gOamData_83ACBC8::
+ .4byte 0x00004700, 0x00000800
+
+gOamData_83ACBD0::
+ .4byte 0x40004700, 0x00000800
+
+gOamData_83ACBD8::
+ .4byte 0x80004700, 0x00000800
+
+gOamData_83ACBE0::
+ .4byte 0xc0004700, 0x00000800
+
+gOamData_83ACBE8::
+ .4byte 0x00008700, 0x00000800
+
+gOamData_83ACBF0::
+ .4byte 0x40008700, 0x00000800
+
+gOamData_83ACBF8::
+ .4byte 0x80008700, 0x00000800
+
+gOamData_83ACC00::
+ .4byte 0xc0008700, 0x00000800
+
+gUnknown_83ACC08:: @ 83ACC08
+ .incbin "baserom.gba", 0x3ACC08, 0x440
+
+gUnknown_83AD048:: @ 83AD048
+ .incbin "baserom.gba", 0x3AD048, 0x308
+
+gUnknown_83AD350:: @ 83AD350
+ .incbin "baserom.gba", 0x3AD350, 0x120
+
+gUnknown_83AD470:: @ 83AD470
+ .incbin "baserom.gba", 0x3AD470, 0x4E0
+
+gUnknown_83AD950:: @ 83AD950
+ .incbin "baserom.gba", 0x3AD950, 0x308
+
+gUnknown_83ADC58:: @ 83ADC58
+ .incbin "baserom.gba", 0x3ADC58, 0x120
+
+gUnknown_83ADD78:: @ 83ADD78
+ .incbin "baserom.gba", 0x3ADD78, 0xA0
+
+gUnknown_83ADE18:: @ 83ADE18
+ .incbin "baserom.gba", 0x3ADE18, 0x144
+
+gUnknown_83ADF5C:: @ 83ADF5C
+ .incbin "baserom.gba", 0x3ADF5C, 0xC0
+
+gUnknown_83AE01C:: @ 83AE01C
+ .incbin "baserom.gba", 0x3AE01C, 0x20
+
+gUnknown_83AE03C:: @ 83AE03C
+ .incbin "baserom.gba", 0x3AE03C, 0x10
+
+gUnknown_83AE04C:: @ 83AE04C
+ .incbin "baserom.gba", 0x3AE04C, 0x4
+
+gUnknown_83AE050:: @ 83AE050
+ .incbin "baserom.gba", 0x3AE050, 0x4
+
+gUnknown_83AE054:: @ 83AE054
+ .incbin "baserom.gba", 0x3AE054, 0x30
+
+gUnknown_83AE084:: @ 83AE084
+ .incbin "baserom.gba", 0x3AE084, 0x114D0
+
+gUnknown_83BF554:: @ 83BF554
+ .incbin "baserom.gba", 0x3BF554, 0x8
+
+gUnknown_83BF55C:: @ 83BF55C
+ .incbin "baserom.gba", 0x3BF55C, 0x18
+
+gUnknown_83BF574:: @ 83BF574
+ .incbin "baserom.gba", 0x3BF574, 0x18
diff --git a/data/berry_pouch.s b/data/berry_pouch.s
new file mode 100644
index 000000000..172443b5e
--- /dev/null
+++ b/data/berry_pouch.s
@@ -0,0 +1,59 @@
+ .section .rodata
+ .align 2
+
+gUnknown_846434C:: @ 846434C
+ .incbin "baserom.gba", 0x46434C, 0xC
+
+gUnknown_8464358:: @ 8464358
+ .incbin "baserom.gba", 0x464358, 0x14
+
+gUnknown_846436C:: @ 846436C
+ .incbin "baserom.gba", 0x46436C, 0x8
+
+gUnknown_8464374:: @ 8464374
+ .incbin "baserom.gba", 0x464374, 0x8
+
+gUnknown_846437C:: @ 846437C
+ .incbin "baserom.gba", 0x46437C, 0x28
+
+gUnknown_84643A4:: @ 84643A4
+ .incbin "baserom.gba", 0x4643A4, 0x4
+
+gUnknown_84643A8:: @ 84643A8
+ .incbin "baserom.gba", 0x4643A8, 0x4
+
+gUnknown_84643AC:: @ 84643AC
+ .incbin "baserom.gba", 0x4643AC, 0x4
+
+gUnknown_84643B0:: @ 84643B0
+ .incbin "baserom.gba", 0x4643B0, 0x4
+
+gUnknown_84643B4:: @ 84643B4
+ .incbin "baserom.gba", 0x4643B4, 0x4
+
+gUnknown_84643B8:: @ 84643B8
+ .incbin "baserom.gba", 0x4643B8, 0x20
+
+gUnknown_84643D8:: @ 84643D8
+ .incbin "baserom.gba", 0x4643D8, 0x18
+
+gUnknown_84643F0:: @ 84643F0
+ .incbin "baserom.gba", 0x4643F0, 0x8
+
+gUnknown_84643F8:: @ 84643F8
+ .incbin "baserom.gba", 0x4643F8, 0x8
+
+gUnknown_8464400:: @ 8464400
+ .incbin "baserom.gba", 0x464400, 0x48
+
+gUnknown_8464448:: @ 8464448
+ .incbin "baserom.gba", 0x464448, 0x60
+
+gUnknown_84644A8:: @ 84644A8
+ .incbin "baserom.gba", 0x4644A8, 0x8
+
+gUnknown_84644B0:: @ 84644B0
+ .incbin "baserom.gba", 0x4644B0, 0x8
+
+gUnknown_84644B8:: @ 84644B8
+ .incbin "baserom.gba", 0x4644B8, 0x32C
diff --git a/data/buy_menu_helpers.s b/data/buy_menu_helpers.s
new file mode 100644
index 000000000..a59b8e069
--- /dev/null
+++ b/data/buy_menu_helpers.s
@@ -0,0 +1,14 @@
+ .section .rodata
+ .align 2
+
+gUnknown_8464804:: @ 8464804
+ .incbin "baserom.gba", 0x464804, 0x38
+
+gUnknown_846483C:: @ 846483C
+ .incbin "baserom.gba", 0x46483C, 0x40
+
+gUnknown_846487C:: @ 846487C
+ .incbin "baserom.gba", 0x46487C, 0x8
+
+gUnknown_8464884:: @ 8464884
+ .incbin "baserom.gba", 0x464884, 0xC
diff --git a/data/data.s b/data/data.s
index c819fd011..236090c17 100644
--- a/data/data.s
+++ b/data/data.s
@@ -544,7 +544,7 @@ gUnknown_825E032:: @ 825E032
gUnknown_825E05C:: @ 825E05C
.incbin "baserom.gba", 0x25E05C, 0x18
-gUnknown_825E074:: @ 825E074
+gSineTable:: @ 825E074
.incbin "baserom.gba", 0x25E074, 0x280
gUnknown_825E2F4:: @ 825E2F4
diff --git a/data/data_835B488.s b/data/data_835B488.s
index 71e98b2ba..1377d8599 100644
--- a/data/data_835B488.s
+++ b/data/data_835B488.s
@@ -1,936 +1,5 @@
.section .rodata
-
- .align 2
-gUnknown_835B488:: @ 835B488
- .incbin "baserom.gba", 0x35B488, 0x14
-
-gUnknown_835B49C:: @ 835B49C
- .incbin "baserom.gba", 0x35B49C, 0x14
-
-gUnknown_835B4B0:: @ 835B4B0
- .incbin "baserom.gba", 0x35B4B0, 0x14
-
-gUnknown_835B4C4:: @ 835B4C4
- .incbin "baserom.gba", 0x35B4C4, 0x114
-
-gUnknown_835B5D8:: @ 835B5D8
- .incbin "baserom.gba", 0x35B5D8, 0x18C
-
-gUnknown_835B764:: @ 835B764
- .incbin "baserom.gba", 0x35B764, 0xB0
-
-gUnknown_835B814:: @ 835B814
- .incbin "baserom.gba", 0x35B814, 0xC
-
-gUnknown_835B820:: @ 835B820
- .incbin "baserom.gba", 0x35B820, 0x8
-
-gUnknown_835B828:: @ 835B828
- .incbin "baserom.gba", 0x35B828, 0x14
-
-gUnknown_835B83C:: @ 835B83C
- .incbin "baserom.gba", 0x35B83C, 0x8
-
-gUnknown_835B844:: @ 835B844
- .incbin "baserom.gba", 0x35B844, 0x20
-
-gUnknown_835B864:: @ 835B864
- .incbin "baserom.gba", 0x35B864, 0x10
-
-gUnknown_835B874:: @ 835B874
- .incbin "baserom.gba", 0x35B874, 0xC
-
-gUnknown_835B880:: @ 835B880
- .incbin "baserom.gba", 0x35B880, 0x2
-
-gUnknown_835B882:: @ 835B882
- .incbin "baserom.gba", 0x35B882, 0xC
-
-gUnknown_835B88E:: @ 835B88E
- .incbin "baserom.gba", 0x35B88E, 0x2
-
-gUnknown_835B890:: @ 835B890
- .incbin "baserom.gba", 0x35B890, 0x10
-
-gUnknown_835B8A0:: @ 835B8A0
- .incbin "baserom.gba", 0x35B8A0, 0xC
-
-gUnknown_835B8AC:: @ 835B8AC
- .incbin "baserom.gba", 0x35B8AC, 0x4
-
-gUnknown_835B8B0:: @ 835B8B0
- .incbin "baserom.gba", 0x35B8B0, 0x10
-
-gUnknown_835B8C0:: @ 835B8C0
- .incbin "baserom.gba", 0x35B8C0, 0x4
-
-gUnknown_835B8C4:: @ 835B8C4
- .incbin "baserom.gba", 0x35B8C4, 0x8
-
-gUnknown_835B8CC:: @ 835B8CC
- .incbin "baserom.gba", 0x35B8CC, 0x40
-
-gUnknown_835B90C:: @ 835B90C
- .incbin "baserom.gba", 0x35B90C, 0x6
-
-gUnknown_835B912:: @ 835B912
- .incbin "baserom.gba", 0x35B912, 0x6
-
-gUnknown_835B918:: @ 835B918
- .incbin "baserom.gba", 0x35B918, 0x2
-
-gUnknown_835B91A:: @ 835B91A
- .incbin "baserom.gba", 0x35B91A, 0x6
-
-gUnknown_835B920:: @ 835B920
- .incbin "baserom.gba", 0x35B920, 0xC
-
-gUnknown_835B92C:: @ 835B92C
- .incbin "baserom.gba", 0x35B92C, 0x8
-
-gUnknown_835B934:: @ 835B934
- .incbin "baserom.gba", 0x35B934, 0x10
-
-gUnknown_835B944:: @ 835B944
- .incbin "baserom.gba", 0x35B944, 0x18
-
-gUnknown_835B95C:: @ 835B95C
- .incbin "baserom.gba", 0x35B95C, 0x3DA2C
-
-gUnknown_8399388:: @ 8399388
- .incbin "baserom.gba", 0x399388, 0x908
-
-gUnknown_8399C90:: @ 8399C90
- .incbin "baserom.gba", 0x399C90, 0x5F38
-
-gUnknown_839FBC8:: @ 839FBC8
- .incbin "baserom.gba", 0x39FBC8, 0x144
-
-gUnknown_839FD0C:: @ 839FD0C
- .incbin "baserom.gba", 0x39FD0C, 0x51
-
-gUnknown_839FD5D:: @ 839FD5D
- .incbin "baserom.gba", 0x39FD5D, 0x53
-
-gUnknown_839FDB0:: @ 839FDB0
- .incbin "baserom.gba", 0x39FDB0, 0x260
-
-gUnknown_83A0010:: @ 83A0010
- .incbin "baserom.gba", 0x3A0010, 0x3688
-
-gUnknown_83A3698:: @ 83A3698
- .incbin "baserom.gba", 0x3A3698, 0x1AC0
-
-gUnknown_83A5158:: @ 83A5158
- .incbin "baserom.gba", 0x3A5158, 0xB0
-
-gUnknown_83A5208:: @ 83A5208
- .incbin "baserom.gba", 0x3A5208, 0x70
-
-gUnknown_83A5278:: @ 83A5278
- .incbin "baserom.gba", 0x3A5278, 0xB8
-
-gUnknown_83A5330:: @ 83A5330
- .incbin "baserom.gba", 0x3A5330, 0x18
-
-gUnknown_83A5348:: @ 83A5348
- .incbin "baserom.gba", 0x3A5348, 0xCB8
-
-gUnknown_83A6000:: @ 83A6000
- .incbin "baserom.gba", 0x3A6000, 0x10
-
-gUnknown_83A6010:: @ 83A6010
- .incbin "baserom.gba", 0x3A6010, 0x8
-
-gUnknown_83A6018:: @ 83A6018
- .incbin "baserom.gba", 0x3A6018, 0x1C
-
-gUnknown_83A6034:: @ 83A6034
- .incbin "baserom.gba", 0x3A6034, 0x1C
-
-gUnknown_83A6050:: @ 83A6050
- .incbin "baserom.gba", 0x3A6050, 0x4
-
-gUnknown_83A6054:: @ 83A6054
- .incbin "baserom.gba", 0x3A6054, 0x2C
-
-gUnknown_83A6080:: @ 83A6080
- .incbin "baserom.gba", 0x3A6080, 0x14
-
-gUnknown_83A6094:: @ 83A6094
- .incbin "baserom.gba", 0x3A6094, 0x1C
-
-gUnknown_83A60B0:: @ 83A60B0
- .incbin "baserom.gba", 0x3A60B0, 0x4
-
-gUnknown_83A60B4:: @ 83A60B4
- .incbin "baserom.gba", 0x3A60B4, 0x1C
-
-gUnknown_83A60D0:: @ 83A60D0
- .incbin "baserom.gba", 0x3A60D0, 0x4
-
-gUnknown_83A60D4:: @ 83A60D4
- .incbin "baserom.gba", 0x3A60D4, 0xC
-
-gUnknown_83A60E0:: @ 83A60E0
- .incbin "baserom.gba", 0x3A60E0, 0x14
-
-gUnknown_83A60F4:: @ 83A60F4
- .incbin "baserom.gba", 0x3A60F4, 0x14
-
-gUnknown_83A6108:: @ 83A6108
- .incbin "baserom.gba", 0x3A6108, 0x14
-
-gUnknown_83A611C:: @ 83A611C
- .incbin "baserom.gba", 0x3A611C, 0x4
-
-gUnknown_83A6120:: @ 83A6120
- .incbin "baserom.gba", 0x3A6120, 0x14
-
-gUnknown_83A6134:: @ 83A6134
- .incbin "baserom.gba", 0x3A6134, 0x4
-
-gUnknown_83A6138:: @ 83A6138
- .incbin "baserom.gba", 0x3A6138, 0x14
-
-gUnknown_83A614C:: @ 83A614C
- .incbin "baserom.gba", 0x3A614C, 0x4
-
-gUnknown_83A6150:: @ 83A6150
- .incbin "baserom.gba", 0x3A6150, 0x14
-
-gUnknown_83A6164:: @ 83A6164
- .incbin "baserom.gba", 0x3A6164, 0x4
-
-gUnknown_83A6168:: @ 83A6168
- .incbin "baserom.gba", 0x3A6168, 0x14
-
-gUnknown_83A617C:: @ 83A617C
- .incbin "baserom.gba", 0x3A617C, 0x4
-
-gUnknown_83A6180:: @ 83A6180
- .incbin "baserom.gba", 0x3A6180, 0x14
-
-gUnknown_83A6194:: @ 83A6194
- .incbin "baserom.gba", 0x3A6194, 0x4
-
-gUnknown_83A6198:: @ 83A6198
- .incbin "baserom.gba", 0x3A6198, 0x14
-
-gUnknown_83A61AC:: @ 83A61AC
- .incbin "baserom.gba", 0x3A61AC, 0x4
-
-gUnknown_83A61B0:: @ 83A61B0
- .incbin "baserom.gba", 0x3A61B0, 0x14
-
-gUnknown_83A61C4:: @ 83A61C4
- .incbin "baserom.gba", 0x3A61C4, 0x4
-
-gUnknown_83A61C8:: @ 83A61C8
- .incbin "baserom.gba", 0x3A61C8, 0x10
-
-gUnknown_83A61D8:: @ 83A61D8
- .incbin "baserom.gba", 0x3A61D8, 0x8
-
-gUnknown_83A61E0:: @ 83A61E0
- .incbin "baserom.gba", 0x3A61E0, 0x10
-
-gUnknown_83A61F0:: @ 83A61F0
- .incbin "baserom.gba", 0x3A61F0, 0x8
-
-gUnknown_83A61F8:: @ 83A61F8
- .incbin "baserom.gba", 0x3A61F8, 0x10
-
-gUnknown_83A6208:: @ 83A6208
- .incbin "baserom.gba", 0x3A6208, 0xC
-
-gUnknown_83A6214:: @ 83A6214
- .incbin "baserom.gba", 0x3A6214, 0x4
-
-gUnknown_83A6218:: @ 83A6218
- .incbin "baserom.gba", 0x3A6218, 0xC
-
-gUnknown_83A6224:: @ 83A6224
- .incbin "baserom.gba", 0x3A6224, 0x4
-
-gUnknown_83A6228:: @ 83A6228
- .incbin "baserom.gba", 0x3A6228, 0xC
-
-gUnknown_83A6234:: @ 83A6234
- .incbin "baserom.gba", 0x3A6234, 0x4
-
-gUnknown_83A6238:: @ 83A6238
- .incbin "baserom.gba", 0x3A6238, 0xC
-
-gUnknown_83A6244:: @ 83A6244
- .incbin "baserom.gba", 0x3A6244, 0x4
-
-gUnknown_83A6248:: @ 83A6248
- .incbin "baserom.gba", 0x3A6248, 0xC
-
-gUnknown_83A6254:: @ 83A6254
- .incbin "baserom.gba", 0x3A6254, 0x4
-
-gUnknown_83A6258:: @ 83A6258
- .incbin "baserom.gba", 0x3A6258, 0xC
-
-gUnknown_83A6264:: @ 83A6264
- .incbin "baserom.gba", 0x3A6264, 0x4
-
-gUnknown_83A6268:: @ 83A6268
- .incbin "baserom.gba", 0x3A6268, 0xC
-
-gUnknown_83A6274:: @ 83A6274
- .incbin "baserom.gba", 0x3A6274, 0xC
-
-gUnknown_83A6280:: @ 83A6280
- .incbin "baserom.gba", 0x3A6280, 0x4
-
-gUnknown_83A6284:: @ 83A6284
- .incbin "baserom.gba", 0x3A6284, 0xC
-
-gUnknown_83A6290:: @ 83A6290
- .incbin "baserom.gba", 0x3A6290, 0x4
-
-gUnknown_83A6294:: @ 83A6294
- .incbin "baserom.gba", 0x3A6294, 0xC
-
-gUnknown_83A62A0:: @ 83A62A0
- .incbin "baserom.gba", 0x3A62A0, 0x4
-
-gUnknown_83A62A4:: @ 83A62A4
- .incbin "baserom.gba", 0x3A62A4, 0xC
-
-gUnknown_83A62B0:: @ 83A62B0
- .incbin "baserom.gba", 0x3A62B0, 0x4
-
-gUnknown_83A62B4:: @ 83A62B4
- .incbin "baserom.gba", 0x3A62B4, 0xC
-
-gUnknown_83A62C0:: @ 83A62C0
- .incbin "baserom.gba", 0x3A62C0, 0x4
-
-gUnknown_83A62C4:: @ 83A62C4
- .incbin "baserom.gba", 0x3A62C4, 0xC
-
-gUnknown_83A62D0:: @ 83A62D0
- .incbin "baserom.gba", 0x3A62D0, 0x4
-
-gUnknown_83A62D4:: @ 83A62D4
- .incbin "baserom.gba", 0x3A62D4, 0xC
-
-gUnknown_83A62E0:: @ 83A62E0
- .incbin "baserom.gba", 0x3A62E0, 0x4
-
-gUnknown_83A62E4:: @ 83A62E4
- .incbin "baserom.gba", 0x3A62E4, 0xC
-
-gUnknown_83A62F0:: @ 83A62F0
- .incbin "baserom.gba", 0x3A62F0, 0x4
-
-gUnknown_83A62F4:: @ 83A62F4
- .incbin "baserom.gba", 0x3A62F4, 0xC
-
-gUnknown_83A6300:: @ 83A6300
- .incbin "baserom.gba", 0x3A6300, 0x4
-
-gUnknown_83A6304:: @ 83A6304
- .incbin "baserom.gba", 0x3A6304, 0xC
-
-gUnknown_83A6310:: @ 83A6310
- .incbin "baserom.gba", 0x3A6310, 0x4
-
-gUnknown_83A6314:: @ 83A6314
- .incbin "baserom.gba", 0x3A6314, 0xC
-
-gUnknown_83A6320:: @ 83A6320
- .incbin "baserom.gba", 0x3A6320, 0x4
-
-gUnknown_83A6324:: @ 83A6324
- .incbin "baserom.gba", 0x3A6324, 0xC
-
-gUnknown_83A6330:: @ 83A6330
- .incbin "baserom.gba", 0x3A6330, 0x4
-
-gUnknown_83A6334:: @ 83A6334
- .incbin "baserom.gba", 0x3A6334, 0xC
-
-gUnknown_83A6340:: @ 83A6340
- .incbin "baserom.gba", 0x3A6340, 0x4
-
-gUnknown_83A6344:: @ 83A6344
- .incbin "baserom.gba", 0x3A6344, 0xC
-
-gUnknown_83A6350:: @ 83A6350
- .incbin "baserom.gba", 0x3A6350, 0x4
-
-gUnknown_83A6354:: @ 83A6354
- .incbin "baserom.gba", 0x3A6354, 0xC
-
-gUnknown_83A6360:: @ 83A6360
- .incbin "baserom.gba", 0x3A6360, 0x4
-
-gUnknown_83A6364:: @ 83A6364
- .incbin "baserom.gba", 0x3A6364, 0xC
-
-gUnknown_83A6370:: @ 83A6370
- .incbin "baserom.gba", 0x3A6370, 0x4
-
-gUnknown_83A6374:: @ 83A6374
- .incbin "baserom.gba", 0x3A6374, 0xC
-
-gUnknown_83A6380:: @ 83A6380
- .incbin "baserom.gba", 0x3A6380, 0x4
-
-gUnknown_83A6384:: @ 83A6384
- .incbin "baserom.gba", 0x3A6384, 0xC
-
-gUnknown_83A6390:: @ 83A6390
- .incbin "baserom.gba", 0x3A6390, 0x2C
-
-gUnknown_83A63BC:: @ 83A63BC
- .incbin "baserom.gba", 0x3A63BC, 0xC
-
-gUnknown_83A63C8:: @ 83A63C8
- .incbin "baserom.gba", 0x3A63C8, 0x4
-
-gUnknown_83A63CC:: @ 83A63CC
- .incbin "baserom.gba", 0x3A63CC, 0x8
-
-gUnknown_83A63D4:: @ 83A63D4
- .incbin "baserom.gba", 0x3A63D4, 0x8
-
-gUnknown_83A63DC:: @ 83A63DC
- .incbin "baserom.gba", 0x3A63DC, 0x8
-
-gUnknown_83A63E4:: @ 83A63E4
- .incbin "baserom.gba", 0x3A63E4, 0xC
-
-gUnknown_83A63F0:: @ 83A63F0
- .incbin "baserom.gba", 0x3A63F0, 0xC
-
-gUnknown_83A63FC:: @ 83A63FC
- .incbin "baserom.gba", 0x3A63FC, 0x8
-
-gUnknown_83A6404:: @ 83A6404
- .incbin "baserom.gba", 0x3A6404, 0x8
-
-gUnknown_83A640C:: @ 83A640C
- .incbin "baserom.gba", 0x3A640C, 0x9
-
-gUnknown_83A6415:: @ 83A6415
- .incbin "baserom.gba", 0x3A6415, 0x9
-
-gUnknown_83A641E:: @ 83A641E
- .incbin "baserom.gba", 0x3A641E, 0x9
-
-gUnknown_83A6427:: @ 83A6427
- .incbin "baserom.gba", 0x3A6427, 0x9
-
-gUnknown_83A6430:: @ 83A6430
- .incbin "baserom.gba", 0x3A6430, 0x9
-
-gUnknown_83A6439:: @ 83A6439
- .incbin "baserom.gba", 0x3A6439, 0x9
-
-gUnknown_83A6442:: @ 83A6442
- .incbin "baserom.gba", 0x3A6442, 0x9
-
-gUnknown_83A644B:: @ 83A644B
- .incbin "baserom.gba", 0x3A644B, 0x9
-
-gUnknown_83A6454:: @ 83A6454
- .incbin "baserom.gba", 0x3A6454, 0x9
-
-gUnknown_83A645D:: @ 83A645D
- .incbin "baserom.gba", 0x3A645D, 0x9
-
-gUnknown_83A6466:: @ 83A6466
- .incbin "baserom.gba", 0x3A6466, 0x9
-
-gUnknown_83A646F:: @ 83A646F
- .incbin "baserom.gba", 0x3A646F, 0x9
-
-gUnknown_83A6478:: @ 83A6478
- .incbin "baserom.gba", 0x3A6478, 0x9
-
-gUnknown_83A6481:: @ 83A6481
- .incbin "baserom.gba", 0x3A6481, 0x9
-
-gUnknown_83A648A:: @ 83A648A
- .incbin "baserom.gba", 0x3A648A, 0x9
-
-gUnknown_83A6493:: @ 83A6493
- .incbin "baserom.gba", 0x3A6493, 0x9
-
-gUnknown_83A649C:: @ 83A649C
- .incbin "baserom.gba", 0x3A649C, 0xC
-
-gUnknown_83A64A8:: @ 83A64A8
- .incbin "baserom.gba", 0x3A64A8, 0x10
-
-gUnknown_83A64B8:: @ 83A64B8
- .incbin "baserom.gba", 0x3A64B8, 0x10
-
-gUnknown_83A64C8:: @ 83A64C8
- .incbin "baserom.gba", 0x3A64C8, 0x24
-
-gUnknown_83A64EC:: @ 83A64EC
- .incbin "baserom.gba", 0x3A64EC, 0x5
-
-gUnknown_83A64F1:: @ 83A64F1
- .incbin "baserom.gba", 0x3A64F1, 0x5
-
-gUnknown_83A64F6:: @ 83A64F6
- .incbin "baserom.gba", 0x3A64F6, 0x5
-
-gUnknown_83A64FB:: @ 83A64FB
- .incbin "baserom.gba", 0x3A64FB, 0x5
-
-gUnknown_83A6500:: @ 83A6500
- .incbin "baserom.gba", 0x3A6500, 0x5
-
-gUnknown_83A6505:: @ 83A6505
- .incbin "baserom.gba", 0x3A6505, 0x5
-
-gUnknown_83A650A:: @ 83A650A
- .incbin "baserom.gba", 0x3A650A, 0x5
-
-gUnknown_83A650F:: @ 83A650F
- .incbin "baserom.gba", 0x3A650F, 0x5
-
-gUnknown_83A6514:: @ 83A6514
- .incbin "baserom.gba", 0x3A6514, 0x5
-
-gUnknown_83A6519:: @ 83A6519
- .incbin "baserom.gba", 0x3A6519, 0x5
-
-gUnknown_83A651E:: @ 83A651E
- .incbin "baserom.gba", 0x3A651E, 0x5
-
-gUnknown_83A6523:: @ 83A6523
- .incbin "baserom.gba", 0x3A6523, 0x5
-
-gUnknown_83A6528:: @ 83A6528
- .incbin "baserom.gba", 0x3A6528, 0x5
-
-gUnknown_83A652D:: @ 83A652D
- .incbin "baserom.gba", 0x3A652D, 0x5
-
-gUnknown_83A6532:: @ 83A6532
- .incbin "baserom.gba", 0x3A6532, 0x5
-
-gUnknown_83A6537:: @ 83A6537
- .incbin "baserom.gba", 0x3A6537, 0x5
-
-gUnknown_83A653C:: @ 83A653C
- .incbin "baserom.gba", 0x3A653C, 0x5
-
-gUnknown_83A6541:: @ 83A6541
- .incbin "baserom.gba", 0x3A6541, 0x5
-
-gUnknown_83A6546:: @ 83A6546
- .incbin "baserom.gba", 0x3A6546, 0x5
-
-gUnknown_83A654B:: @ 83A654B
- .incbin "baserom.gba", 0x3A654B, 0x5
-
-gUnknown_83A6550:: @ 83A6550
- .incbin "baserom.gba", 0x3A6550, 0x5
-
-gUnknown_83A6555:: @ 83A6555
- .incbin "baserom.gba", 0x3A6555, 0x5
-
-gUnknown_83A655A:: @ 83A655A
- .incbin "baserom.gba", 0x3A655A, 0x5
-
-gUnknown_83A655F:: @ 83A655F
- .incbin "baserom.gba", 0x3A655F, 0x5
-
-gUnknown_83A6564:: @ 83A6564
- .incbin "baserom.gba", 0x3A6564, 0x5
-
-gUnknown_83A6569:: @ 83A6569
- .incbin "baserom.gba", 0x3A6569, 0x5
-
-gUnknown_83A656E:: @ 83A656E
- .incbin "baserom.gba", 0x3A656E, 0x5
-
-gUnknown_83A6573:: @ 83A6573
- .incbin "baserom.gba", 0x3A6573, 0x5
-
-gUnknown_83A6578:: @ 83A6578
- .incbin "baserom.gba", 0x3A6578, 0x5
-
-gUnknown_83A657D:: @ 83A657D
- .incbin "baserom.gba", 0x3A657D, 0x5
-
-gUnknown_83A6582:: @ 83A6582
- .incbin "baserom.gba", 0x3A6582, 0x5
-
-gUnknown_83A6587:: @ 83A6587
- .incbin "baserom.gba", 0x3A6587, 0x5
-
-gUnknown_83A658C:: @ 83A658C
- .incbin "baserom.gba", 0x3A658C, 0x5
-
-gUnknown_83A6591:: @ 83A6591
- .incbin "baserom.gba", 0x3A6591, 0x8
-
-gUnknown_83A6599:: @ 83A6599
- .incbin "baserom.gba", 0x3A6599, 0x10
-
-gUnknown_83A65A9:: @ 83A65A9
- .incbin "baserom.gba", 0x3A65A9, 0x13
-
-gUnknown_83A65BC:: @ 83A65BC
- .incbin "baserom.gba", 0x3A65BC, 0x2C8
-
-gUnknown_83A6884:: @ 83A6884
- .incbin "baserom.gba", 0x3A6884, 0xD4
-
-gUnknown_83A6958:: @ 83A6958
- .incbin "baserom.gba", 0x3A6958, 0x6
-
-gUnknown_83A695E:: @ 83A695E
- .incbin "baserom.gba", 0x3A695E, 0x6C6
-
-gUnknown_83A7024:: @ 83A7024
- .incbin "baserom.gba", 0x3A7024, 0x8
-
-gUnknown_83A702C:: @ 83A702C
- .incbin "baserom.gba", 0x3A702C, 0x18
-
-gUnknown_83A7044:: @ 83A7044
- .incbin "baserom.gba", 0x3A7044, 0x18
-
-gUnknown_83A705C:: @ 83A705C
- .incbin "baserom.gba", 0x3A705C, 0x10
-
-gUnknown_83A706C:: @ 83A706C
- .incbin "baserom.gba", 0x3A706C, 0x10
-
-gUnknown_83A707C:: @ 83A707C
- .incbin "baserom.gba", 0x3A707C, 0x10
-
-gUnknown_83A708C:: @ 83A708C
- .incbin "baserom.gba", 0x3A708C, 0x10
-
-gUnknown_83A709C:: @ 83A709C
- .incbin "baserom.gba", 0x3A709C, 0xC
-
-gUnknown_83A70A8:: @ 83A70A8
- .incbin "baserom.gba", 0x3A70A8, 0x4
-
-gUnknown_83A70AC:: @ 83A70AC
- .incbin "baserom.gba", 0x3A70AC, 0x10
-
-gUnknown_83A70BC:: @ 83A70BC
- .incbin "baserom.gba", 0x3A70BC, 0xE0
-
-gUnknown_83A719C:: @ 83A719C
- .incbin "baserom.gba", 0x3A719C, 0x14
-
-gUnknown_83A71B0:: @ 83A71B0
- .incbin "baserom.gba", 0x3A71B0, 0x3C
-
-gUnknown_83A71EC:: @ 83A71EC
- .incbin "baserom.gba", 0x3A71EC, 0xC
-
-gUnknown_83A71F8:: @ 83A71F8
- .incbin "baserom.gba", 0x3A71F8, 0x6
-
-gUnknown_83A71FE:: @ 83A71FE
- .incbin "baserom.gba", 0x3A71FE, 0x4
-
-gUnknown_83A7202:: @ 83A7202
- .incbin "baserom.gba", 0x3A7202, 0x6
-
-gUnknown_83A7208:: @ 83A7208
- .incbin "baserom.gba", 0x3A7208, 0x4
-
- .align 2
-gUnknown_83A720C:: @ 83A720C
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/evobjmv.c"
-
.align 2
-gUnknown_83A7240:: @ 83A7240
- .asciz "0"
-
- .section .rodata.83A72A0
-
-gUnknown_83A72A0:: @ 83A72A0
- .string "S$"
-
-gUnknown_83A72A2:: @ 83A72A2
- .string "IES$"
-
-gUnknown_83A72A6:: @ 83A72A6
- .string " "
-
-gUnknown_83A72A8:: @ 83A72A8
- .incbin "baserom.gba", 0x3A72A8, 0x68
-
-gUnknown_83A7310:: @ 83A7310
- .incbin "baserom.gba", 0x3A7310, 0x20
-
-gUnknown_83A7330:: @ 83A7330
- .incbin "baserom.gba", 0x3A7330, 0x14
-
-gUnknown_83A7344:: @ 83A7344
- .incbin "baserom.gba", 0x3A7344, 0x48
-
-gUnknown_83A738C:: @ 83A738C
- .incbin "baserom.gba", 0x3A738C, 0x8
-
-gUnknown_83A7394:: @ 83A7394
- .incbin "baserom.gba", 0x3A7394, 0x24
-
-gUnknown_83A73B8:: @ 83A73B8
- .incbin "baserom.gba", 0x3A73B8, 0x4
-
-gUnknown_83A73BC:: @ 83A73BC
- .incbin "baserom.gba", 0x3A73BC, 0x10
-
-gUnknown_83A73CC:: @ 83A73CC
- .incbin "baserom.gba", 0x3A73CC, 0x8
-
-gUnknown_83A73D4:: @ 83A73D4
- .incbin "baserom.gba", 0x3A73D4, 0x4
-
-gUnknown_83A73D8:: @ 83A73D8
- .incbin "baserom.gba", 0x3A73D8, 0x4
-
-gUnknown_83A73DC:: @ 83A73DC
- .incbin "baserom.gba", 0x3A73DC, 0x284
-
-gUnknown_83A7660:: @ 83A7660
- .incbin "baserom.gba", 0x3A7660, 0x2FF4
-
-gUnknown_83AA654:: @ 83AA654
- .incbin "baserom.gba", 0x3AA654, 0x1220
-
-gUnknown_83AB874:: @ 83AB874
- .incbin "baserom.gba", 0x3AB874, 0x540
-
-gUnknown_83ABDB4:: @ 83ABDB4
- .incbin "baserom.gba", 0x3ABDB4, 0x434
-
-gUnknown_83AC1E8:: @ 83AC1E8
- .incbin "baserom.gba", 0x3AC1E8, 0x410
-
-gUnknown_83AC5F8:: @ 83AC5F8
- .incbin "baserom.gba", 0x3AC5F8, 0x1D0
-
-gUnknown_83AC7C8:: @ 83AC7C8
- .incbin "baserom.gba", 0x3AC7C8, 0x188
-
-gUnknown_83AC950:: @ 83AC950
- .incbin "baserom.gba", 0x3AC950, 0x10
-
-gUnknown_83AC960:: @ 83AC960
- .incbin "baserom.gba", 0x3AC960, 0x10
-
-gUnknown_83AC970:: @ 83AC970
- .incbin "baserom.gba", 0x3AC970, 0x20
-
-sFanfares:: @ 83AC990
- .incbin "baserom.gba", 0x3AC990, 0x40
-
-gUnknown_83AC9D0:: @ 83AC9D0
- .incbin "baserom.gba", 0x3AC9D0, 0x28
-
-gUnknown_83AC9F8::
- .incbin "baserom.gba", 0x3AC9F8, 0x8
-
-gUnknown_83ACA00::
- .incbin "baserom.gba", 0x3ACA00, 0x208
-
-gUnknown_83ACC08:: @ 83ACC08
- .incbin "baserom.gba", 0x3ACC08, 0x440
-
-gUnknown_83AD048:: @ 83AD048
- .incbin "baserom.gba", 0x3AD048, 0x308
-
-gUnknown_83AD350:: @ 83AD350
- .incbin "baserom.gba", 0x3AD350, 0x120
-
-gUnknown_83AD470:: @ 83AD470
- .incbin "baserom.gba", 0x3AD470, 0x4E0
-
-gUnknown_83AD950:: @ 83AD950
- .incbin "baserom.gba", 0x3AD950, 0x308
-
-gUnknown_83ADC58:: @ 83ADC58
- .incbin "baserom.gba", 0x3ADC58, 0x120
-
-gUnknown_83ADD78:: @ 83ADD78
- .incbin "baserom.gba", 0x3ADD78, 0xA0
-
-gUnknown_83ADE18:: @ 83ADE18
- .incbin "baserom.gba", 0x3ADE18, 0x144
-
-gUnknown_83ADF5C:: @ 83ADF5C
- .incbin "baserom.gba", 0x3ADF5C, 0xC0
-
-gUnknown_83AE01C:: @ 83AE01C
- .incbin "baserom.gba", 0x3AE01C, 0x20
-
-gUnknown_83AE03C:: @ 83AE03C
- .incbin "baserom.gba", 0x3AE03C, 0x10
-
-gUnknown_83AE04C:: @ 83AE04C
- .incbin "baserom.gba", 0x3AE04C, 0x4
-
-gUnknown_83AE050:: @ 83AE050
- .incbin "baserom.gba", 0x3AE050, 0x4
-
-gUnknown_83AE054:: @ 83AE054
- .incbin "baserom.gba", 0x3AE054, 0x30
-
-gUnknown_83AE084:: @ 83AE084
- .incbin "baserom.gba", 0x3AE084, 0x114D0
-
-gUnknown_83BF554:: @ 83BF554
- .incbin "baserom.gba", 0x3BF554, 0x8
-
-gUnknown_83BF55C:: @ 83BF55C
- .incbin "baserom.gba", 0x3BF55C, 0x18
-
-gUnknown_83BF574:: @ 83BF574
- .incbin "baserom.gba", 0x3BF574, 0x18
-
-gUnknown_83BF58C:: @ 83BF58C
- .incbin "baserom.gba", 0x3BF58C, 0x1C
-
-gUnknown_83BF5A8:: @ 83BF5A8
- .incbin "baserom.gba", 0x3BF5A8, 0x55C
-
-gUnknown_83BFB04:: @ 83BFB04
- .incbin "baserom.gba", 0x3BFB04, 0x18
-
-gUnknown_83BFB1C:: @ 83BFB1C
- .incbin "baserom.gba", 0x3BFB1C, 0x20
-
-gUnknown_83BFB3C:: @ 83BFB3C
- .incbin "baserom.gba", 0x3BFB3C, 0x20
-
-gUnknown_83BFB5C:: @ 83BFB5C
- .incbin "baserom.gba", 0x3BFB5C, 0x18
-
-gUnknown_83BFB74:: @ 83BFB74
- .incbin "baserom.gba", 0x3BFB74, 0x10
-
-gUnknown_83BFB84:: @ 83BFB84
- .incbin "baserom.gba", 0x3BFB84, 0x18
-
-gUnknown_83BFB9C:: @ 83BFB9C
- .incbin "baserom.gba", 0x3BFB9C, 0x20
-
-gUnknown_83BFBBC:: @ 83BFBBC
- .incbin "baserom.gba", 0x3BFBBC, 0x18
-
-gUnknown_83BFBD4:: @ 83BFBD4
- .incbin "baserom.gba", 0x3BFBD4, 0x2FE8
-
-gUnknown_83C2BBC:: @ 83C2BBC
- .incbin "baserom.gba", 0x3C2BBC, 0x4
-
-gUnknown_83C2BC0:: @ 83C2BC0
- .incbin "baserom.gba", 0x3C2BC0, 0xF0
-
-gUnknown_83C2CB0:: @ 83C2CB0
- .incbin "baserom.gba", 0x3C2CB0, 0x10
-
-gUnknown_83C2CC0:: @ 83C2CC0
- .incbin "baserom.gba", 0x3C2CC0, 0x20
-
-gUnknown_83C2CE0:: @ 83C2CE0
- .incbin "baserom.gba", 0x3C2CE0, 0x20
-
-gUnknown_83C2D00:: @ 83C2D00
- .incbin "baserom.gba", 0x3C2D00, 0x20
-
-gUnknown_83C2D20:: @ 83C2D20
- .incbin "baserom.gba", 0x3C2D20, 0x820
-
-gUnknown_83C3540:: @ 83C3540
- .incbin "baserom.gba", 0x3C3540, 0x3080
-
-gUnknown_83C65C0:: @ 83C65C0
- .incbin "baserom.gba", 0x3C65C0, 0x4
-
-gUnknown_83C65C4:: @ 83C65C4
- .incbin "baserom.gba", 0x3C65C4, 0x4
-
-gUnknown_83C65C8:: @ 83C65C8
- .incbin "baserom.gba", 0x3C65C8, 0xC
-
-gUnknown_83C65D4:: @ 83C65D4
- .incbin "baserom.gba", 0x3C65D4, 0x1C
-
-gUnknown_83C65F0:: @ 83C65F0
- .incbin "baserom.gba", 0x3C65F0, 0x18
-
-gUnknown_83C6608:: @ 83C6608
- .incbin "baserom.gba", 0x3C6608, 0x9C
-
-gUnknown_83C66A4:: @ 83C66A4
- .incbin "baserom.gba", 0x3C66A4, 0x18
-
-gUnknown_83C66BC:: @ 83C66BC
- .incbin "baserom.gba", 0x3C66BC, 0x8
-
-gUnknown_83C66C4:: @ 83C66C4
- .incbin "baserom.gba", 0x3C66C4, 0x8
-
-gUnknown_83C66CC:: @ 83C66CC
- .incbin "baserom.gba", 0x3C66CC, 0x38
-
-gUnknown_83C6704:: @ 83C6704
- .incbin "baserom.gba", 0x3C6704, 0x8C
-
-gUnknown_83C6790:: @ 83C6790
- .incbin "baserom.gba", 0x3C6790, 0x18
-
-gUnknown_83C67A8:: @ 83C67A8
- .incbin "baserom.gba", 0x3C67A8, 0x8
-
-gUnknown_83C67B0:: @ 83C67B0
- .incbin "baserom.gba", 0x3C67B0, 0x20
-
-gUnknown_83C67D0:: @ 83C67D0
- .incbin "baserom.gba", 0x3C67D0, 0x18
-
-gUnknown_83C67E8:: @ 83C67E8
- .incbin "baserom.gba", 0x3C67E8, 0x1C
-
-gUnknown_83C6804:: @ 83C6804
- .incbin "baserom.gba", 0x3C6804, 0x38
-
-gUnknown_83C683C:: @ 83C683C
- .incbin "baserom.gba", 0x3C683C, 0x18
-
-gUnknown_83C6854:: @ 83C6854
- .incbin "baserom.gba", 0x3C6854, 0x8
-
-gUnknown_83C685C:: @ 83C685C
- .incbin "baserom.gba", 0x3C685C, 0xC
-
-gUnknown_83C6868:: @ 83C6868
- .incbin "baserom.gba", 0x3C6868, 0x8
-
-gUnknown_83C6870:: @ 83C6870
- .incbin "baserom.gba", 0x3C6870, 0x8
-
-gUnknown_83C6878:: @ 83C6878
- .incbin "baserom.gba", 0x3C6878, 0x44
-
-gUnknown_83C68BC:: @ 83C68BC
- .incbin "baserom.gba", 0x3C68BC, 0x18
-
-gUnknown_83C68D4:: @ 83C68D4
- .incbin "baserom.gba", 0x3C68D4, 0xC
gUnknown_83C68E0:: @ 83C68E0
.incbin "baserom.gba", 0x3C68E0, 0x4
diff --git a/data/data_83F5738.s b/data/data_83F5738.s
index e6f026d0e..c14edc5c8 100644
--- a/data/data_83F5738.s
+++ b/data/data_83F5738.s
@@ -55,7 +55,7 @@ gUnknown_83F5BCC:: @ 83F5BCC
gUnknown_83F5D1C:: @ 83F5D1C
.incbin "baserom.gba", 0x3F5D1C, 0x10
-gUnknown_83F5D2C:: @ 83F5D2C
+sStarterMon:: @ 83F5D2C
.incbin "baserom.gba", 0x3F5D2C, 0x6
gUnknown_83F5D32:: @ 83F5D32
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index a96e9ff70..682877f7e 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -586,29 +586,38 @@ gUnknown_8415C64:: @ 8415C64
gUnknown_8415CE8:: @ 8415CE8
.incbin "baserom.gba", 0x415CE8, 0x44
-gUnknown_8415D2C:: @ 8415D2C
- .incbin "baserom.gba", 0x415D2C, 0x1C
+gText_Controls:: @ 8415D2C
+ .string "CONTROLS$"
-gUnknown_8415D48:: @ 8415D48
- .incbin "baserom.gba", 0x415D48, 0x8
+ .align 2
+gUnknown_8415D38:: @ 8415D2C
+ .string "{KEYGFX_DPAD_UP_DOWN}えらぶ {KEYGFX_A_BUTTON}けってい$"
-gUnknown_8415D50:: @ 8415D50
- .incbin "baserom.gba", 0x415D50, 0x10
+ .align 2
+gText_ABUTTONNext:: @ 8415D48
+ .string "{KEYGFX_A_BUTTON}NEXT$"
-gUnknown_8415D60:: @ 8415D60
- .incbin "baserom.gba", 0x415D60, 0x18
+ .align 2
+gText_ABUTTONNext_BBUTTONBack:: @ 8415D50
+ .string "{KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}BACK$"
-gUnknown_8415D78:: @ 8415D78
- .incbin "baserom.gba", 0x415D78, 0x14
+ .align 2
+gText_UPDOWNPick_ABUTTONNext_BBUTTONBack:: @ 8415D60
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}NEXT {KEYGFX_B_BUTTON}CANCEL$"
-gUnknown_8415D8C:: @ 8415D8C
- .incbin "baserom.gba", 0x415D8C, 0x7
+ .align 2
+gText_UPDOWNPick_ABUTTONBBUTTONCancel:: @ 8415D78
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
+
+ .align 2
+gText_ABUTTONExit:: @ 8415D8C
+ .string "{KEYGFX_A_BUTTON}EXIT$"
-gUnknown_8415D93:: @ 8415D93
- .incbin "baserom.gba", 0x415D93, 0x4
+gText_Boy:: @ 8415D93
+ .string "BOY$"
-gUnknown_8415D97:: @ 8415D97
- .incbin "baserom.gba", 0x415D97, 0x5
+gText_Girl:: @ 8415D97
+ .string "GIRL$"
gUnknown_8415D9C:: @ 8415D9C
.incbin "baserom.gba", 0x415D9C, 0x1C
diff --git a/data/data_845FD54.s b/data/data_845FD54.s
deleted file mode 100644
index d05e14570..000000000
--- a/data/data_845FD54.s
+++ /dev/null
@@ -1,600 +0,0 @@
- .section .rodata
-
- .align 2
- // oak_speech
-gUnknown_845FD54:: @ 845FD54
- .incbin "baserom.gba", 0x45FD54, 0x814
-
-gUnknown_8460568:: @ 8460568
- .incbin "baserom.gba", 0x460568, 0x80
-
-gUnknown_84605E8:: @ 84605E8
- .incbin "baserom.gba", 0x4605E8, 0x5C0
-
-gUnknown_8460BA8:: @ 8460BA8
- .incbin "baserom.gba", 0x460BA8, 0xFC
-
-gUnknown_8460CA4:: @ 8460CA4
- .incbin "baserom.gba", 0x460CA4, 0x44
-
-gUnknown_8460CE8:: @ 8460CE8
- .incbin "baserom.gba", 0x460CE8, 0xAC
-
-gUnknown_8460D94:: @ 8460D94
- .incbin "baserom.gba", 0x460D94, 0xA0
-
-gUnknown_8460E34:: @ 8460E34
- .incbin "baserom.gba", 0x460E34, 0xA0
-
-gUnknown_8460ED4:: @ 8460ED4
- .incbin "baserom.gba", 0x460ED4, 0x40
-
-gUnknown_8460F14:: @ 8460F14
- .incbin "baserom.gba", 0x460F14, 0x6E8
-
-gUnknown_84615FC:: @ 84615FC
- .incbin "baserom.gba", 0x4615FC, 0x40
-
-gUnknown_846163C:: @ 846163C
- .incbin "baserom.gba", 0x46163C, 0x698
-
-gUnknown_8461CD4:: @ 8461CD4
- .incbin "baserom.gba", 0x461CD4, 0x40
-
-gUnknown_8461D14:: @ 8461D14
- .incbin "baserom.gba", 0x461D14, 0x698
-
-gUnknown_84623AC:: @ 84623AC
- .incbin "baserom.gba", 0x4623AC, 0x40
-
-gUnknown_84623EC:: @ 84623EC
- .incbin "baserom.gba", 0x4623EC, 0xA6C
-
-gUnknown_8462E58:: @ 8462E58
- .incbin "baserom.gba", 0x462E58, 0x5C
-
-gUnknown_8462EB4:: @ 8462EB4
- .incbin "baserom.gba", 0x462EB4, 0xC
-
-gUnknown_8462EC0:: @ 8462EC0
- .incbin "baserom.gba", 0x462EC0, 0x8
-
-gUnknown_8462EC8:: @ 8462EC8
- .incbin "baserom.gba", 0x462EC8, 0x8
-
-gUnknown_8462ED0:: @ 8462ED0
- .incbin "baserom.gba", 0x462ED0, 0x8
-
-gUnknown_8462ED8:: @ 8462ED8
- .incbin "baserom.gba", 0x462ED8, 0x10
-
-gUnknown_8462EE8:: @ 8462EE8
- .incbin "baserom.gba", 0x462EE8, 0x4
-
-gUnknown_8462EEC:: @ 8462EEC
- .incbin "baserom.gba", 0x462EEC, 0x4
-
-gUnknown_8462EF0:: @ 8462EF0
- .incbin "baserom.gba", 0x462EF0, 0xC
-
-gUnknown_8462EFC:: @ 8462EFC
- .incbin "baserom.gba", 0x462EFC, 0x18
-
-gUnknown_8462F14:: @ 8462F14
- .incbin "baserom.gba", 0x462F14, 0x8
-
-gUnknown_8462F1C:: @ 8462F1C
- .incbin "baserom.gba", 0x462F1C, 0x8
-
-gUnknown_8462F24:: @ 8462F24
- .incbin "baserom.gba", 0x462F24, 0x2C
-
-gUnknown_8462F50:: @ 8462F50
- .incbin "baserom.gba", 0x462F50, 0xDC
-
-gUnknown_846302C:: @ 846302C
- .incbin "baserom.gba", 0x46302C, 0x48
-
-gUnknown_8463074:: @ 8463074
- .incbin "baserom.gba", 0x463074, 0x18
-
-gUnknown_846308C:: @ 846308C
- .incbin "baserom.gba", 0x46308C, 0x4C
-
-gUnknown_84630D8:: @ 84630D8
- .incbin "baserom.gba", 0x4630D8, 0x4C
-
-gUnknown_8463124:: @ 8463124
- .incbin "baserom.gba", 0x463124, 0x10
-
-gUnknown_8463134:: @ 8463134
- .incbin "baserom.gba", 0x463134, 0xC
-
-gUnknown_8463140:: @ 8463140
- .incbin "baserom.gba", 0x463140, 0x10
-
-gUnknown_8463150:: @ 8463150
- .incbin "baserom.gba", 0x463150, 0x18
-
-gUnknown_8463168:: @ 8463168
- .incbin "baserom.gba", 0x463168, 0x3
-
-gUnknown_846316B:: @ 846316B
- .incbin "baserom.gba", 0x46316B, 0x5
-
-gUnknown_8463170:: @ 8463170
- .incbin "baserom.gba", 0x463170, 0x8
-
-gUnknown_8463178:: @ 8463178
- .incbin "baserom.gba", 0x463178, 0x4
-
-gUnknown_846317C:: @ 846317C
- .incbin "baserom.gba", 0x46317C, 0x4
-
-gUnknown_8463180:: @ 8463180
- .incbin "baserom.gba", 0x463180, 0x4
-
-gUnknown_8463184:: @ 8463184
- .incbin "baserom.gba", 0x463184, 0xC
-
-gUnknown_8463190:: @ 8463190
- .incbin "baserom.gba", 0x463190, 0x50
-
-gUnknown_84631E0:: @ 84631E0
- .incbin "baserom.gba", 0x4631E0, 0x8
-
-gUnknown_84631E8:: @ 84631E8
- .incbin "baserom.gba", 0x4631E8, 0x30
-
-gUnknown_8463218:: @ 8463218
- .incbin "baserom.gba", 0x463218, 0x8
-
-gUnknown_8463220:: @ 8463220
- .incbin "baserom.gba", 0x463220, 0x18
-
-gUnknown_8463238:: @ 8463238
- .incbin "baserom.gba", 0x463238, 0x24
-
-gUnknown_846325C:: @ 846325C
- .incbin "baserom.gba", 0x46325C, 0x48
-
-gUnknown_84632A4:: @ 84632A4
- .incbin "baserom.gba", 0x4632A4, 0x18
-
-gUnknown_84632BC:: @ 84632BC
- .incbin "baserom.gba", 0x4632BC, 0x4
-
-gUnknown_84632C0:: @ 84632C0
- .incbin "baserom.gba", 0x4632C0, 0x4
-
-gUnknown_84632C4:: @ 84632C4
- .incbin "baserom.gba", 0x4632C4, 0x4
-
-gUnknown_84632C8:: @ 84632C8
- .incbin "baserom.gba", 0x4632C8, 0x4
-
-gUnknown_84632CC:: @ 84632CC
- .incbin "baserom.gba", 0x4632CC, 0x4
-
-gUnknown_84632D0:: @ 84632D0
- .incbin "baserom.gba", 0x4632D0, 0x4
-
-gUnknown_84632D4:: @ 84632D4
- .incbin "baserom.gba", 0x4632D4, 0x4
-
-gUnknown_84632D8:: @ 84632D8
- .incbin "baserom.gba", 0x4632D8, 0x18
-
-gUnknown_84632F0:: @ 84632F0
- .incbin "baserom.gba", 0x4632F0, 0x18
-
-gUnknown_8463308:: @ 8463308
- .incbin "baserom.gba", 0x463308, 0x20
-
-gUnknown_8463328:: @ 8463328
- .incbin "baserom.gba", 0x463328, 0x70
-
-gUnknown_8463398:: @ 8463398
- .incbin "baserom.gba", 0x463398, 0x40
-
-gUnknown_84633D8:: @ 84633D8
- .incbin "baserom.gba", 0x4633D8, 0x44
-
-gUnknown_846341C:: @ 846341C
- .incbin "baserom.gba", 0x46341C, 0x20
-
-gUnknown_846343C:: @ 846343C
- .incbin "baserom.gba", 0x46343C, 0x128
-
-gUnknown_8463564:: @ 8463564
- .incbin "baserom.gba", 0x463564, 0x1C
-
-gUnknown_8463580:: @ 8463580
- .incbin "baserom.gba", 0x463580, 0x140
-
-gUnknown_84636C0:: @ 84636C0
- .incbin "baserom.gba", 0x4636C0, 0x20
-
-gUnknown_84636E0:: @ 84636E0
- .incbin "baserom.gba", 0x4636E0, 0x20
-
-gUnknown_8463700:: @ 8463700
- .incbin "baserom.gba", 0x463700, 0x20
-
-gUnknown_8463720:: @ 8463720
- .incbin "baserom.gba", 0x463720, 0x20
-
-gUnknown_8463740:: @ 8463740
- .incbin "baserom.gba", 0x463740, 0x12C
-
-gUnknown_846386C:: @ 846386C
- .incbin "baserom.gba", 0x46386C, 0x120
-
-gUnknown_846398C:: @ 846398C
- .incbin "baserom.gba", 0x46398C, 0x18
-
-gUnknown_84639A4:: @ 84639A4
- .incbin "baserom.gba", 0x4639A4, 0x8
-
-gUnknown_84639AC:: @ 84639AC
- .incbin "baserom.gba", 0x4639AC, 0x48
-
-gUnknown_84639F4:: @ 84639F4
- .incbin "baserom.gba", 0x4639F4, 0x20
-
-gUnknown_8463A14:: @ 8463A14
- .incbin "baserom.gba", 0x463A14, 0x68
-
-gUnknown_8463A7C:: @ 8463A7C
- .incbin "baserom.gba", 0x463A7C, 0x70
-
-gUnknown_8463AEC:: @ 8463AEC
- .incbin "baserom.gba", 0x463AEC, 0x10
-
-gUnknown_8463AFC:: @ 8463AFC
- .incbin "baserom.gba", 0x463AFC, 0x4
-
-gUnknown_8463B00:: @ 8463B00
- .incbin "baserom.gba", 0x463B00, 0x20
-
-gUnknown_8463B20:: @ 8463B20
- .incbin "baserom.gba", 0x463B20, 0x10
-
-gUnknown_8463B30:: @ 8463B30
- .incbin "baserom.gba", 0x463B30, 0x10
-
-gUnknown_8463B40:: @ 8463B40
- .incbin "baserom.gba", 0x463B40, 0x4
-
-gUnknown_8463B44:: @ 8463B44
- .incbin "baserom.gba", 0x463B44, 0x20
-
-gUnknown_8463B64:: @ 8463B64
- .incbin "baserom.gba", 0x463B64, 0x24
-
-gUnknown_8463B88:: @ 8463B88
- .incbin "baserom.gba", 0x463B88, 0xF8
-
-gUnknown_8463C80:: @ 8463C80
- .incbin "baserom.gba", 0x463C80, 0x1E0
-
-gUnknown_8463E60:: @ 8463E60
- .incbin "baserom.gba", 0x463E60, 0x64
-
-gUnknown_8463EC4:: @ 8463EC4
- .incbin "baserom.gba", 0x463EC4, 0x10
-
-gUnknown_8463ED4:: @ 8463ED4
- .incbin "baserom.gba", 0x463ED4, 0x1C
-
-gUnknown_8463EF0:: @ 8463EF0
- .incbin "baserom.gba", 0x463EF0, 0xC
-
-gUnknown_8463EFC:: @ 8463EFC
- .incbin "baserom.gba", 0x463EFC, 0x10
-
-gUnknown_8463F0C:: @ 8463F0C
- .incbin "baserom.gba", 0x463F0C, 0x18
-
-gUnknown_8463F24:: @ 8463F24
- .incbin "baserom.gba", 0x463F24, 0x18
-
-gUnknown_8463F3C:: @ 8463F3C
- .incbin "baserom.gba", 0x463F3C, 0x20
-
-gUnknown_8463F5C:: @ 8463F5C
- .incbin "baserom.gba", 0x463F5C, 0x20
-
-gUnknown_8463F7C:: @ 8463F7C
- .incbin "baserom.gba", 0x463F7C, 0x20
-
-gUnknown_8463F9C:: @ 8463F9C
- .incbin "baserom.gba", 0x463F9C, 0x8
-
-gUnknown_8463FA4:: @ 8463FA4
- .incbin "baserom.gba", 0x463FA4, 0x3
-
-gUnknown_8463FA7:: @ 8463FA7
- .incbin "baserom.gba", 0x463FA7, 0x11
-
-gUnknown_8463FB8:: @ 8463FB8
- .incbin "baserom.gba", 0x463FB8, 0x6
-
-gUnknown_8463FBE:: @ 8463FBE
- .incbin "baserom.gba", 0x463FBE, 0x3
-
-gUnknown_8463FC1:: @ 8463FC1
- .incbin "baserom.gba", 0x463FC1, 0x5
-
-gUnknown_8463FC6:: @ 8463FC6
- .incbin "baserom.gba", 0x463FC6, 0x7
-
-gUnknown_8463FCD:: @ 8463FCD
- .incbin "baserom.gba", 0x463FCD, 0x7
-
-gUnknown_8463FD4:: @ 8463FD4
- .incbin "baserom.gba", 0x463FD4, 0xB
-
-gUnknown_8463FDF:: @ 8463FDF
- .incbin "baserom.gba", 0x463FDF, 0xB
-
-gUnknown_8463FEA:: @ 8463FEA
- .incbin "baserom.gba", 0x463FEA, 0x12
-
-gUnknown_8463FFC:: @ 8463FFC
- .incbin "baserom.gba", 0x463FFC, 0xC
-
-gUnknown_8464008:: @ 8464008
- .incbin "baserom.gba", 0x464008, 0x120
-
-gUnknown_8464128:: @ 8464128
- .incbin "baserom.gba", 0x464128, 0x20
-
-gUnknown_8464148:: @ 8464148
- .incbin "baserom.gba", 0x464148, 0x174
-
-gUnknown_84642BC:: @ 84642BC
- .incbin "baserom.gba", 0x4642BC, 0x4
-
-gUnknown_84642C0:: @ 84642C0
- .incbin "baserom.gba", 0x4642C0, 0x34
-
-gUnknown_84642F4:: @ 84642F4
- .incbin "baserom.gba", 0x4642F4, 0xC
-
-gUnknown_8464300:: @ 8464300
- .incbin "baserom.gba", 0x464300, 0x4C
-
-gUnknown_846434C:: @ 846434C
- .incbin "baserom.gba", 0x46434C, 0xC
-
-gUnknown_8464358:: @ 8464358
- .incbin "baserom.gba", 0x464358, 0x14
-
-gUnknown_846436C:: @ 846436C
- .incbin "baserom.gba", 0x46436C, 0x8
-
-gUnknown_8464374:: @ 8464374
- .incbin "baserom.gba", 0x464374, 0x8
-
-gUnknown_846437C:: @ 846437C
- .incbin "baserom.gba", 0x46437C, 0x28
-
-gUnknown_84643A4:: @ 84643A4
- .incbin "baserom.gba", 0x4643A4, 0x4
-
-gUnknown_84643A8:: @ 84643A8
- .incbin "baserom.gba", 0x4643A8, 0x4
-
-gUnknown_84643AC:: @ 84643AC
- .incbin "baserom.gba", 0x4643AC, 0x4
-
-gUnknown_84643B0:: @ 84643B0
- .incbin "baserom.gba", 0x4643B0, 0x4
-
-gUnknown_84643B4:: @ 84643B4
- .incbin "baserom.gba", 0x4643B4, 0x4
-
-gUnknown_84643B8:: @ 84643B8
- .incbin "baserom.gba", 0x4643B8, 0x20
-
-gUnknown_84643D8:: @ 84643D8
- .incbin "baserom.gba", 0x4643D8, 0x18
-
-gUnknown_84643F0:: @ 84643F0
- .incbin "baserom.gba", 0x4643F0, 0x8
-
-gUnknown_84643F8:: @ 84643F8
- .incbin "baserom.gba", 0x4643F8, 0x8
-
-gUnknown_8464400:: @ 8464400
- .incbin "baserom.gba", 0x464400, 0x48
-
-gUnknown_8464448:: @ 8464448
- .incbin "baserom.gba", 0x464448, 0x60
-
-gUnknown_84644A8:: @ 84644A8
- .incbin "baserom.gba", 0x4644A8, 0x8
-
-gUnknown_84644B0:: @ 84644B0
- .incbin "baserom.gba", 0x4644B0, 0x8
-
-gUnknown_84644B8:: @ 84644B8
- .incbin "baserom.gba", 0x4644B8, 0x32C
-
-gUnknown_84647E4:: @ 84647E4
- .incbin "baserom.gba", 0x4647E4, 0x18
-
-gUnknown_84647FC:: @ 84647FC
- .incbin "baserom.gba", 0x4647FC, 0x8
-
-gUnknown_8464804:: @ 8464804
- .incbin "baserom.gba", 0x464804, 0x38
-
-gUnknown_846483C:: @ 846483C
- .incbin "baserom.gba", 0x46483C, 0x40
-
-gUnknown_846487C:: @ 846487C
- .incbin "baserom.gba", 0x46487C, 0x8
-
-gUnknown_8464884:: @ 8464884
- .incbin "baserom.gba", 0x464884, 0xC
-
-gUnknown_8464890:: @ 8464890
- .incbin "baserom.gba", 0x464890, 0x1E
-
-gUnknown_84648AE:: @ 84648AE
- .incbin "baserom.gba", 0x4648AE, 0xF
-
-gUnknown_84648BD:: @ 84648BD
- .incbin "baserom.gba", 0x4648BD, 0x15
-
-gUnknown_84648D2:: @ 84648D2
- .incbin "baserom.gba", 0x4648D2, 0x54
-
-gUnknown_8464926:: @ 8464926
- .incbin "baserom.gba", 0x464926, 0x40
-
-gUnknown_8464966:: @ 8464966
- .incbin "baserom.gba", 0x464966, 0xC4A
-
-gUnknown_84655B0:: @ 84655B0
- .incbin "baserom.gba", 0x4655B0, 0x18
-
-gUnknown_84655C8:: @ 84655C8
- .incbin "baserom.gba", 0x4655C8, 0x40
-
-gUnknown_8465608:: @ 8465608
- .incbin "baserom.gba", 0x465608, 0xE
-
-gUnknown_8465616:: @ 8465616
- .incbin "baserom.gba", 0x465616, 0xC0
-
-gUnknown_84656D6:: @ 84656D6
- .incbin "baserom.gba", 0x4656D6, 0x10E
-
-gUnknown_84657E4:: @ 84657E4
- .incbin "baserom.gba", 0x4657E4, 0x98
-
-gUnknown_846587C:: @ 846587C
- .incbin "baserom.gba", 0x46587C, 0x5C
-
-gUnknown_84658D8:: @ 84658D8
- .incbin "baserom.gba", 0x4658D8, 0x18
-
-gUnknown_84658F0:: @ 84658F0
- .incbin "baserom.gba", 0x4658F0, 0x40
-
-gUnknown_8465930:: @ 8465930
- .incbin "baserom.gba", 0x465930, 0x20
-
-gUnknown_8465950:: @ 8465950
- .incbin "baserom.gba", 0x465950, 0x80
-
-gUnknown_84659D0:: @ 84659D0
- .incbin "baserom.gba", 0x4659D0, 0x804
-
-gUnknown_84661D4:: @ 84661D4
- .incbin "baserom.gba", 0x4661D4, 0x2E8
-
-gUnknown_84664BC:: @ 84664BC
- .incbin "baserom.gba", 0x4664BC, 0x20
-
-gUnknown_84664DC:: @ 84664DC
- .incbin "baserom.gba", 0x4664DC, 0x60
-
-gUnknown_846653C:: @ 846653C
- .incbin "baserom.gba", 0x46653C, 0x84
-
-gUnknown_84665C0:: @ 84665C0
- .incbin "baserom.gba", 0x4665C0, 0x60
-
-gUnknown_8466620:: @ 8466620
- .incbin "baserom.gba", 0x466620, 0x378
-
-gUnknown_8466998:: @ 8466998
- .incbin "baserom.gba", 0x466998, 0x178
-
-gUnknown_8466B10:: @ 8466B10
- .incbin "baserom.gba", 0x466B10, 0x10
-
-gUnknown_8466B20:: @ 8466B20
- .incbin "baserom.gba", 0x466B20, 0xEC
-
-gUnknown_8466C0C:: @ 8466C0C
- .incbin "baserom.gba", 0x466C0C, 0x28
-
-gUnknown_8466C34:: @ 8466C34
- .incbin "baserom.gba", 0x466C34, 0x4
-
-gUnknown_8466C38:: @ 8466C38
- .incbin "baserom.gba", 0x466C38, 0x8
-
-gUnknown_8466C40:: @ 8466C40
- .incbin "baserom.gba", 0x466C40, 0x18
-
-gUnknown_8466C58:: @ 8466C58
- .incbin "baserom.gba", 0x466C58, 0xB8
-
-gUnknown_8466D10:: @ 8466D10
- .incbin "baserom.gba", 0x466D10, 0x20
-
-gUnknown_8466D30:: @ 8466D30
- .incbin "baserom.gba", 0x466D30, 0x30
-
-gUnknown_8466D60:: @ 8466D60
- .incbin "baserom.gba", 0x466D60, 0x10
-
-gUnknown_8466D70:: @ 8466D70
- .incbin "baserom.gba", 0x466D70, 0x20
-
-gUnknown_8466D90:: @ 8466D90
- .incbin "baserom.gba", 0x466D90, 0x8
-
-gUnknown_8466D98:: @ 8466D98
- .incbin "baserom.gba", 0x466D98, 0x8
-
-gUnknown_8466DA0:: @ 8466DA0
- .incbin "baserom.gba", 0x466DA0, 0x8
-
-gUnknown_8466DA8:: @ 8466DA8
- .incbin "baserom.gba", 0x466DA8, 0x8
-
-gUnknown_8466DB0:: @ 8466DB0
- .incbin "baserom.gba", 0x466DB0, 0x8
-
-gUnknown_8466DB8:: @ 8466DB8
- .incbin "baserom.gba", 0x466DB8, 0x8
-
-gUnknown_8466DC0:: @ 8466DC0
- .incbin "baserom.gba", 0x466DC0, 0x8
-
-gUnknown_8466DC8:: @ 8466DC8
- .incbin "baserom.gba", 0x466DC8, 0x8
-
-gUnknown_8466DD0:: @ 8466DD0
- .incbin "baserom.gba", 0x466DD0, 0x18
-
-gUnknown_8466DE8:: @ 8466DE8
- .incbin "baserom.gba", 0x466DE8, 0x18
-
-gUnknown_8466E00:: @ 8466E00
- .incbin "baserom.gba", 0x466E00, 0x78
-
-gUnknown_8466E78:: @ 8466E78
- .incbin "baserom.gba", 0x466E78, 0x18
-
-gUnknown_8466E90:: @ 8466E90
- .incbin "baserom.gba", 0x466E90, 0x18
-
-gUnknown_8466EA8:: @ 8466EA8
- .incbin "baserom.gba", 0x466EA8, 0x18
-
-gUnknown_8466EC0:: @ 8466EC0
- .incbin "baserom.gba", 0x466EC0, 0x28
-
-gUnknown_8466EE8:: @ 8466EE8
- .incbin "baserom.gba", 0x466EE8, 0x8
-
-gUnknown_8466EF0:: @ 8466EF0
- .incbin "baserom.gba", 0x466EF0, 0x10
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 23f6ad5a9..95fcf7a92 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -428,50 +428,240 @@ gUnknown_81C5647:: @ 81C5647
gUnknown_81C566A:: @ 81C566A
.incbin "baserom.gba", 0x1C566A, 0xE5
-gUnknown_81C574F:: @ 81C574F
- .incbin "baserom.gba", 0x1C574F, 0xDE
+gOtherText_NewName:: @ 81C574F
+ .string "NEW NAME$"
-gUnknown_81C582D:: @ 81C582D
- .incbin "baserom.gba", 0x1C582D, 0x1A8
+gNameChoice_Green:: @ 81C5758
+ .string "GREEN$"
-gUnknown_81C59D5:: @ 81C59D5
- .incbin "baserom.gba", 0x1C59D5, 0x2A3
+gNameChoice_Red:: @ 81C575E
+ .string "RED$"
-gUnknown_81C5C78:: @ 81C5C78
- .incbin "baserom.gba", 0x1C5C78, 0x8E
+gNameChoice_Leaf:: @ 81C5762
+ .string "LEAF$"
-gUnknown_81C5D06:: @ 81C5D06
- .incbin "baserom.gba", 0x1C5D06, 0xC
+gNameChoice_Fire:: @ 81C5767
+ .string "FIRE$"
-gUnknown_81C5D12:: @ 81C5D12
- .incbin "baserom.gba", 0x1C5D12, 0x39
+gNameChoice_Gary:: @ 81C576C
+ .string "GARY$"
-gUnknown_81C5D4B:: @ 81C5D4B
- .incbin "baserom.gba", 0x1C5D4B, 0x72
+gNameChoice_Kaz:: @ 81C5771
+ .string "KAZ$"
-gUnknown_81C5DBD:: @ 81C5DBD
- .incbin "baserom.gba", 0x1C5DBD, 0x2D
+gNameChoice_Toru:: @ 81C5775
+ .string "TORU$"
-gUnknown_81C5DEA:: @ 81C5DEA
- .incbin "baserom.gba", 0x1C5DEA, 0x29
+gNameChoice_Ash:: @ 81C577A
+ .string "ASH$"
-gUnknown_81C5E13:: @ 81C5E13
- .incbin "baserom.gba", 0x1C5E13, 0x1B
+gNameChoice_Kene:: @ 81C577E
+ .string "KENE$"
-gUnknown_81C5E2E:: @ 81C5E2E
- .incbin "baserom.gba", 0x1C5E2E, 0x63
+gNameChoice_Geki:: @ 81C5783
+ .string "GEKI$"
-gUnknown_81C5E91:: @ 81C5E91
- .incbin "baserom.gba", 0x1C5E91, 0x24
+gNameChoice_Jak:: @ 81C5788
+ .string "JAK$"
-gUnknown_81C5EB5:: @ 81C5EB5
- .incbin "baserom.gba", 0x1C5EB5, 0x10
+gNameChoice_Janne:: @ 81C578C
+ .string "JANNE$"
-gUnknown_81C5EC5:: @ 81C5EC5
- .incbin "baserom.gba", 0x1C5EC5, 0x2F
+gNameChoice_Jonn:: @ 81C5792
+ .string "JONN$"
-gUnknown_81C5EF4:: @ 81C5EF4
- .incbin "baserom.gba", 0x1C5EF4, 0x75
+gNameChoice_Kamon:: @ 81C5797
+ .string "KAMON$"
+
+gNameChoice_Karl:: @ 81C579D
+ .string "KARL$"
+
+gNameChoice_Taylor:: @ 81C57A2
+ .string "TAYLOR$"
+
+gNameChoice_Oscar:: @ 81C57A9
+ .string "OSCAR$"
+
+gNameChoice_Hiro:: @ 81C57AF
+ .string "HIRO$"
+
+gNameChoice_Max:: @ 81C57B4
+ .string "MAX$"
+
+gNameChoice_Jon:: @ 81C57B8
+ .string "JON$"
+
+gNameChoice_Ralph:: @ 81C57BC
+ .string "RALPH$"
+
+gNameChoice_Kay:: @ 81C57C2
+ .string "KAY$"
+
+gNameChoice_Tosh:: @ 81C57C6
+ .string "TOSH$"
+
+gNameChoice_Roak:: @ 81C57CB
+ .string "ROAK$"
+
+gNameChoice_Omi:: @ 81C57D0
+ .string "OMI$"
+
+gNameChoice_Jodi:: @ 81C57D4
+ .string "JODI$"
+
+gNameChoice_Amanda:: @ 81C57D9
+ .string "AMANDA$"
+
+gNameChoice_Hillary:: @ 81C57E0
+ .string "HILLARY$"
+
+gNameChoice_Makey:: @ 81C57E8
+ .string "MAKEY$"
+
+gNameChoice_Michi:: @ 81C57EE
+ .string "MICHI$"
+
+gNameChoice_Paula:: @ 81C57F4
+ .string "PAULA$"
+
+gNameChoice_June:: @ 81C57FA
+ .string "JUNE$"
+
+gNameChoice_Cassie:: @ 81C57FF
+ .string "CASSIE$"
+
+gNameChoice_Rey:: @ 81C5806
+ .string "REY$"
+
+gNameChoice_Seda:: @ 81C580A
+ .string "SEDA$"
+
+gNameChoice_Kiko:: @ 81C580F
+ .string "KIKO$"
+
+gNameChoice_Mina:: @ 81C5814
+ .string "MINA$"
+
+gNameChoice_Norie:: @ 81C5819
+ .string "NORIE$"
+
+gNameChoice_Sai:: @ 81C581F
+ .string "SAI$"
+
+gNameChoice_Momo:: @ 81C5823
+ .string "MOMO$"
+
+gNameChoice_Suzi:: @ 81C5828
+ .string "SUZI$"
+
+gNewGame_HelpDocs1:: @ 81C582D
+ .string "The various buttons will be explained in\n"
+ .string "the order of their importance.$"
+
+gNewGame_HelpDocs2:: @ 81C5875
+ .string "Moves the main character.\n"
+ .string "Also used to choose various data\n"
+ .string "headings.$"
+
+gNewGame_HelpDocs3:: @ 81C58BA
+ .string "Used to confirm a choice, check\n"
+ .string "things, chat, and scroll text.$"
+
+gNewGame_HelpDocs4:: @ 81C58F9
+ .string "Used to exit, cancel a choice,\n"
+ .string "and cancel a mode.$"
+
+gNewGame_HelpDocs5:: @ 81C592B
+ .string "Press this button to open the\n"
+ .string "MENU.$"
+
+gNewGame_HelpDocs6:: @ 81C594F
+ .string "Used to shift items and to use\n"
+ .string "a registered item.$"
+
+gNewGame_HelpDocs7:: @ 81C5981
+ .string "If you need help playing the\n"
+ .string "game, or on how to do things,\n"
+ .string "press the L or R Button.$"
+
+gOakText_AskPlayerGender:: @ 81C59D5
+ .string "Now tell me. Are you a boy?\n"
+ .string "Or are you a girl?$"
+
+gNewGameAdventureIntro1::
+ .string "In the world which you are about to\n"
+ .string "enter, you will embark on a grand\n"
+ .string "adventure with you as the hero.\n"
+ .string "\n"
+ .string "Speak to people and check things\n"
+ .string "wherever you go, be it towns, roads,\n"
+ .string "or caves. Gather information and\n"
+ .string "hints from every source.$"
+
+gNewGameAdventureIntro2::
+ .string "New paths will open to you by helping\n"
+ .string "people in need, overcoming challenges,\n"
+ .string "and solving mysteries.\n"
+ .string "\n"
+ .string "At times, you will be challenged by\n"
+ .string "others and attacked by wild creatures.\n"
+ .string "Be brave and keep pushing on.$"
+
+gNewGameAdventureIntro3::
+ .string "Through your adventure, we hope\n"
+ .string "that you will interact with all sorts\n"
+ .string "of people and achieve personal growth.\n"
+ .string "That is our biggest objective.\n"
+ .string "\n"
+ .string "Press the A Button, and let your\n"
+ .string "adventure begin!$"
+
+gOakText_WelcomeToTheWorld:: @ 81C5C78
+ .string "Hello, there!\n"
+ .string "Glad to meet you!\pWelcome to the world of POKéMON!\pMy name is OAK.\pPeople affectionately refer to me\n"
+ .string "as the POKéMON PROFESSOR.\p$"
+
+gOakText_WorldInhabited1:: @ 81C5D06
+ .string "This world…$"
+
+gOakText_WorldInhabited2:: @ 81C5D12
+ .string "…is inhabited far and wide by\n"
+ .string "creatures called POKéMON.\p$"
+
+gOakText_PetsBattlingStudy:: @ 81C5D4B
+ .string "For some people, POKéMON are pets.\n"
+ .string "Others use them for battling.\pAs for myself…\pI study POKéMON as a profession.\p$"
+
+gOakText_TellMeALittleAboutYourself:: @ 81C5DBD
+ .string "But first, tell me a little about\n"
+ .string "yourself.\p$"
+
+gOakText_AskPlayerName:: @ 81C5DEA
+ .string "Let’s begin with your name.\n"
+ .string "What is it?\p$"
+
+gOakText_FinalizePlayerName:: @ 81C5E13
+ .string "Right…\n"
+ .string "So your name is {PLAYER}.$"
+
+gOakText_IntroduceRival:: @ 81C5E2E
+ .string "This is my grandson.\pHe’s been your rival since you both\n"
+ .string "were babies.\p…Erm, what was his name now?$"
+
+gOakText_AskRivalName:: @ 81C5E91
+ .string "Your rival’s name, what was it now?$"
+
+gOakText_ConfirmRivalName:: @ 81C5EB5
+ .string "…Er, was it {RIVAL}?$"
+
+gOakText_RememberRivalName:: @ 81C5EC5
+ .string "That’s right! I remember now!\n"
+ .string "His name is {RIVAL}!\p$"
+
+gOakText_LegendAboutToUnfold:: @ 81C5EF4
+ .string "{PLAYER}!\pYour very own POKéMON legend is\n"
+ .string "about to unfold!\pA world of dreams and adventures\n"
+ .string "with POKéMON awaits! Let’s go!$"
@ pokedude data
.incbin "baserom.gba", 0x1C5F69, 0x983
diff --git a/data/field_door.s b/data/field_door.s
new file mode 100644
index 000000000..a29cf3e24
--- /dev/null
+++ b/data/field_door.s
@@ -0,0 +1,17 @@
+ .section .rodata
+
+ .align 2
+gUnknown_835B488:: @ 835B488
+ .incbin "baserom.gba", 0x35B488, 0x14
+
+gUnknown_835B49C:: @ 835B49C
+ .incbin "baserom.gba", 0x35B49C, 0x14
+
+gUnknown_835B4B0:: @ 835B4B0
+ .incbin "baserom.gba", 0x35B4B0, 0x14
+
+gUnknown_835B4C4:: @ 835B4C4
+ .incbin "baserom.gba", 0x35B4C4, 0x114
+
+gUnknown_835B5D8:: @ 835B5D8
+ .incbin "baserom.gba", 0x35B5D8, 0x18C
diff --git a/data/field_ground_effect.s b/data/field_ground_effect.s
new file mode 100644
index 000000000..7979c7522
--- /dev/null
+++ b/data/field_ground_effect.s
@@ -0,0 +1,34 @@
+ .section .rodata
+ .align 2
+gUnknown_83A7024:: @ 83A7024
+ .incbin "baserom.gba", 0x3A7024, 0x8
+
+gUnknown_83A702C:: @ 83A702C
+ .incbin "baserom.gba", 0x3A702C, 0x18
+
+gUnknown_83A7044:: @ 83A7044
+ .incbin "baserom.gba", 0x3A7044, 0x18
+
+gUnknown_83A705C:: @ 83A705C
+ .incbin "baserom.gba", 0x3A705C, 0x10
+
+gUnknown_83A706C:: @ 83A706C
+ .incbin "baserom.gba", 0x3A706C, 0x10
+
+gUnknown_83A707C:: @ 83A707C
+ .incbin "baserom.gba", 0x3A707C, 0x10
+
+gUnknown_83A708C:: @ 83A708C
+ .incbin "baserom.gba", 0x3A708C, 0x10
+
+gUnknown_83A709C:: @ 83A709C
+ .incbin "baserom.gba", 0x3A709C, 0xC
+
+gUnknown_83A70A8:: @ 83A70A8
+ .incbin "baserom.gba", 0x3A70A8, 0x4
+
+gUnknown_83A70AC:: @ 83A70AC
+ .incbin "baserom.gba", 0x3A70AC, 0x10
+
+gUnknown_83A70BC:: @ 83A70BC
+ .incbin "baserom.gba", 0x3A70BC, 0xE0
diff --git a/data/field_map_obj.s b/data/field_map_obj.s
new file mode 100644
index 000000000..d12de7aa9
--- /dev/null
+++ b/data/field_map_obj.s
@@ -0,0 +1,508 @@
+ .section .rodata
+ .align 2
+gUnknown_835B934:: @ 835B934
+ .incbin "baserom.gba", 0x35B934, 0x10
+
+gUnknown_835B944:: @ 835B944
+ .incbin "baserom.gba", 0x35B944, 0x18
+
+gUnknown_835B95C:: @ 835B95C
+ .incbin "baserom.gba", 0x35B95C, 0x3DA2C
+
+gUnknown_8399388:: @ 8399388
+ .incbin "baserom.gba", 0x399388, 0x908
+
+gUnknown_8399C90:: @ 8399C90
+ .incbin "baserom.gba", 0x399C90, 0x5F38
+
+gUnknown_839FBC8:: @ 839FBC8
+ .incbin "baserom.gba", 0x39FBC8, 0x144
+
+gUnknown_839FD0C:: @ 839FD0C
+ .incbin "baserom.gba", 0x39FD0C, 0x51
+
+gUnknown_839FD5D:: @ 839FD5D
+ .incbin "baserom.gba", 0x39FD5D, 0x53
+
+gUnknown_839FDB0:: @ 839FDB0
+ .incbin "baserom.gba", 0x39FDB0, 0x260
+
+gUnknown_83A0010:: @ 83A0010
+ .incbin "baserom.gba", 0x3A0010, 0x3688
+
+gUnknown_83A3698:: @ 83A3698
+ .incbin "baserom.gba", 0x3A3698, 0x1AC0
+
+gUnknown_83A5158:: @ 83A5158
+ .incbin "baserom.gba", 0x3A5158, 0xB0
+
+gUnknown_83A5208:: @ 83A5208
+ .incbin "baserom.gba", 0x3A5208, 0x70
+
+gUnknown_83A5278:: @ 83A5278
+ .incbin "baserom.gba", 0x3A5278, 0xB8
+
+gUnknown_83A5330:: @ 83A5330
+ .incbin "baserom.gba", 0x3A5330, 0x18
+
+gUnknown_83A5348:: @ 83A5348
+ .incbin "baserom.gba", 0x3A5348, 0xCB8
+
+gUnknown_83A6000:: @ 83A6000
+ .incbin "baserom.gba", 0x3A6000, 0x10
+
+gUnknown_83A6010:: @ 83A6010
+ .incbin "baserom.gba", 0x3A6010, 0x8
+
+gUnknown_83A6018:: @ 83A6018
+ .incbin "baserom.gba", 0x3A6018, 0x1C
+
+gUnknown_83A6034:: @ 83A6034
+ .incbin "baserom.gba", 0x3A6034, 0x1C
+
+gUnknown_83A6050:: @ 83A6050
+ .incbin "baserom.gba", 0x3A6050, 0x4
+
+gUnknown_83A6054:: @ 83A6054
+ .incbin "baserom.gba", 0x3A6054, 0x2C
+
+gUnknown_83A6080:: @ 83A6080
+ .incbin "baserom.gba", 0x3A6080, 0x14
+
+gUnknown_83A6094:: @ 83A6094
+ .incbin "baserom.gba", 0x3A6094, 0x1C
+
+gUnknown_83A60B0:: @ 83A60B0
+ .incbin "baserom.gba", 0x3A60B0, 0x4
+
+gUnknown_83A60B4:: @ 83A60B4
+ .incbin "baserom.gba", 0x3A60B4, 0x1C
+
+gUnknown_83A60D0:: @ 83A60D0
+ .incbin "baserom.gba", 0x3A60D0, 0x4
+
+gUnknown_83A60D4:: @ 83A60D4
+ .incbin "baserom.gba", 0x3A60D4, 0xC
+
+gUnknown_83A60E0:: @ 83A60E0
+ .incbin "baserom.gba", 0x3A60E0, 0x14
+
+gUnknown_83A60F4:: @ 83A60F4
+ .incbin "baserom.gba", 0x3A60F4, 0x14
+
+gUnknown_83A6108:: @ 83A6108
+ .incbin "baserom.gba", 0x3A6108, 0x14
+
+gUnknown_83A611C:: @ 83A611C
+ .incbin "baserom.gba", 0x3A611C, 0x4
+
+gUnknown_83A6120:: @ 83A6120
+ .incbin "baserom.gba", 0x3A6120, 0x14
+
+gUnknown_83A6134:: @ 83A6134
+ .incbin "baserom.gba", 0x3A6134, 0x4
+
+gUnknown_83A6138:: @ 83A6138
+ .incbin "baserom.gba", 0x3A6138, 0x14
+
+gUnknown_83A614C:: @ 83A614C
+ .incbin "baserom.gba", 0x3A614C, 0x4
+
+gUnknown_83A6150:: @ 83A6150
+ .incbin "baserom.gba", 0x3A6150, 0x14
+
+gUnknown_83A6164:: @ 83A6164
+ .incbin "baserom.gba", 0x3A6164, 0x4
+
+gUnknown_83A6168:: @ 83A6168
+ .incbin "baserom.gba", 0x3A6168, 0x14
+
+gUnknown_83A617C:: @ 83A617C
+ .incbin "baserom.gba", 0x3A617C, 0x4
+
+gUnknown_83A6180:: @ 83A6180
+ .incbin "baserom.gba", 0x3A6180, 0x14
+
+gUnknown_83A6194:: @ 83A6194
+ .incbin "baserom.gba", 0x3A6194, 0x4
+
+gUnknown_83A6198:: @ 83A6198
+ .incbin "baserom.gba", 0x3A6198, 0x14
+
+gUnknown_83A61AC:: @ 83A61AC
+ .incbin "baserom.gba", 0x3A61AC, 0x4
+
+gUnknown_83A61B0:: @ 83A61B0
+ .incbin "baserom.gba", 0x3A61B0, 0x14
+
+gUnknown_83A61C4:: @ 83A61C4
+ .incbin "baserom.gba", 0x3A61C4, 0x4
+
+gUnknown_83A61C8:: @ 83A61C8
+ .incbin "baserom.gba", 0x3A61C8, 0x10
+
+gUnknown_83A61D8:: @ 83A61D8
+ .incbin "baserom.gba", 0x3A61D8, 0x8
+
+gUnknown_83A61E0:: @ 83A61E0
+ .incbin "baserom.gba", 0x3A61E0, 0x10
+
+gUnknown_83A61F0:: @ 83A61F0
+ .incbin "baserom.gba", 0x3A61F0, 0x8
+
+gUnknown_83A61F8:: @ 83A61F8
+ .incbin "baserom.gba", 0x3A61F8, 0x10
+
+gUnknown_83A6208:: @ 83A6208
+ .incbin "baserom.gba", 0x3A6208, 0xC
+
+gUnknown_83A6214:: @ 83A6214
+ .incbin "baserom.gba", 0x3A6214, 0x4
+
+gUnknown_83A6218:: @ 83A6218
+ .incbin "baserom.gba", 0x3A6218, 0xC
+
+gUnknown_83A6224:: @ 83A6224
+ .incbin "baserom.gba", 0x3A6224, 0x4
+
+gUnknown_83A6228:: @ 83A6228
+ .incbin "baserom.gba", 0x3A6228, 0xC
+
+gUnknown_83A6234:: @ 83A6234
+ .incbin "baserom.gba", 0x3A6234, 0x4
+
+gUnknown_83A6238:: @ 83A6238
+ .incbin "baserom.gba", 0x3A6238, 0xC
+
+gUnknown_83A6244:: @ 83A6244
+ .incbin "baserom.gba", 0x3A6244, 0x4
+
+gUnknown_83A6248:: @ 83A6248
+ .incbin "baserom.gba", 0x3A6248, 0xC
+
+gUnknown_83A6254:: @ 83A6254
+ .incbin "baserom.gba", 0x3A6254, 0x4
+
+gUnknown_83A6258:: @ 83A6258
+ .incbin "baserom.gba", 0x3A6258, 0xC
+
+gUnknown_83A6264:: @ 83A6264
+ .incbin "baserom.gba", 0x3A6264, 0x4
+
+gUnknown_83A6268:: @ 83A6268
+ .incbin "baserom.gba", 0x3A6268, 0xC
+
+gUnknown_83A6274:: @ 83A6274
+ .incbin "baserom.gba", 0x3A6274, 0xC
+
+gUnknown_83A6280:: @ 83A6280
+ .incbin "baserom.gba", 0x3A6280, 0x4
+
+gUnknown_83A6284:: @ 83A6284
+ .incbin "baserom.gba", 0x3A6284, 0xC
+
+gUnknown_83A6290:: @ 83A6290
+ .incbin "baserom.gba", 0x3A6290, 0x4
+
+gUnknown_83A6294:: @ 83A6294
+ .incbin "baserom.gba", 0x3A6294, 0xC
+
+gUnknown_83A62A0:: @ 83A62A0
+ .incbin "baserom.gba", 0x3A62A0, 0x4
+
+gUnknown_83A62A4:: @ 83A62A4
+ .incbin "baserom.gba", 0x3A62A4, 0xC
+
+gUnknown_83A62B0:: @ 83A62B0
+ .incbin "baserom.gba", 0x3A62B0, 0x4
+
+gUnknown_83A62B4:: @ 83A62B4
+ .incbin "baserom.gba", 0x3A62B4, 0xC
+
+gUnknown_83A62C0:: @ 83A62C0
+ .incbin "baserom.gba", 0x3A62C0, 0x4
+
+gUnknown_83A62C4:: @ 83A62C4
+ .incbin "baserom.gba", 0x3A62C4, 0xC
+
+gUnknown_83A62D0:: @ 83A62D0
+ .incbin "baserom.gba", 0x3A62D0, 0x4
+
+gUnknown_83A62D4:: @ 83A62D4
+ .incbin "baserom.gba", 0x3A62D4, 0xC
+
+gUnknown_83A62E0:: @ 83A62E0
+ .incbin "baserom.gba", 0x3A62E0, 0x4
+
+gUnknown_83A62E4:: @ 83A62E4
+ .incbin "baserom.gba", 0x3A62E4, 0xC
+
+gUnknown_83A62F0:: @ 83A62F0
+ .incbin "baserom.gba", 0x3A62F0, 0x4
+
+gUnknown_83A62F4:: @ 83A62F4
+ .incbin "baserom.gba", 0x3A62F4, 0xC
+
+gUnknown_83A6300:: @ 83A6300
+ .incbin "baserom.gba", 0x3A6300, 0x4
+
+gUnknown_83A6304:: @ 83A6304
+ .incbin "baserom.gba", 0x3A6304, 0xC
+
+gUnknown_83A6310:: @ 83A6310
+ .incbin "baserom.gba", 0x3A6310, 0x4
+
+gUnknown_83A6314:: @ 83A6314
+ .incbin "baserom.gba", 0x3A6314, 0xC
+
+gUnknown_83A6320:: @ 83A6320
+ .incbin "baserom.gba", 0x3A6320, 0x4
+
+gUnknown_83A6324:: @ 83A6324
+ .incbin "baserom.gba", 0x3A6324, 0xC
+
+gUnknown_83A6330:: @ 83A6330
+ .incbin "baserom.gba", 0x3A6330, 0x4
+
+gUnknown_83A6334:: @ 83A6334
+ .incbin "baserom.gba", 0x3A6334, 0xC
+
+gUnknown_83A6340:: @ 83A6340
+ .incbin "baserom.gba", 0x3A6340, 0x4
+
+gUnknown_83A6344:: @ 83A6344
+ .incbin "baserom.gba", 0x3A6344, 0xC
+
+gUnknown_83A6350:: @ 83A6350
+ .incbin "baserom.gba", 0x3A6350, 0x4
+
+gUnknown_83A6354:: @ 83A6354
+ .incbin "baserom.gba", 0x3A6354, 0xC
+
+gUnknown_83A6360:: @ 83A6360
+ .incbin "baserom.gba", 0x3A6360, 0x4
+
+gUnknown_83A6364:: @ 83A6364
+ .incbin "baserom.gba", 0x3A6364, 0xC
+
+gUnknown_83A6370:: @ 83A6370
+ .incbin "baserom.gba", 0x3A6370, 0x4
+
+gUnknown_83A6374:: @ 83A6374
+ .incbin "baserom.gba", 0x3A6374, 0xC
+
+gUnknown_83A6380:: @ 83A6380
+ .incbin "baserom.gba", 0x3A6380, 0x4
+
+gUnknown_83A6384:: @ 83A6384
+ .incbin "baserom.gba", 0x3A6384, 0xC
+
+gUnknown_83A6390:: @ 83A6390
+ .incbin "baserom.gba", 0x3A6390, 0x2C
+
+gUnknown_83A63BC:: @ 83A63BC
+ .incbin "baserom.gba", 0x3A63BC, 0xC
+
+gUnknown_83A63C8:: @ 83A63C8
+ .incbin "baserom.gba", 0x3A63C8, 0x4
+
+gUnknown_83A63CC:: @ 83A63CC
+ .incbin "baserom.gba", 0x3A63CC, 0x8
+
+gUnknown_83A63D4:: @ 83A63D4
+ .incbin "baserom.gba", 0x3A63D4, 0x8
+
+gUnknown_83A63DC:: @ 83A63DC
+ .incbin "baserom.gba", 0x3A63DC, 0x8
+
+gUnknown_83A63E4:: @ 83A63E4
+ .incbin "baserom.gba", 0x3A63E4, 0xC
+
+gUnknown_83A63F0:: @ 83A63F0
+ .incbin "baserom.gba", 0x3A63F0, 0xC
+
+gUnknown_83A63FC:: @ 83A63FC
+ .incbin "baserom.gba", 0x3A63FC, 0x8
+
+gUnknown_83A6404:: @ 83A6404
+ .incbin "baserom.gba", 0x3A6404, 0x8
+
+gUnknown_83A640C:: @ 83A640C
+ .incbin "baserom.gba", 0x3A640C, 0x9
+
+gUnknown_83A6415:: @ 83A6415
+ .incbin "baserom.gba", 0x3A6415, 0x9
+
+gUnknown_83A641E:: @ 83A641E
+ .incbin "baserom.gba", 0x3A641E, 0x9
+
+gUnknown_83A6427:: @ 83A6427
+ .incbin "baserom.gba", 0x3A6427, 0x9
+
+gUnknown_83A6430:: @ 83A6430
+ .incbin "baserom.gba", 0x3A6430, 0x9
+
+gUnknown_83A6439:: @ 83A6439
+ .incbin "baserom.gba", 0x3A6439, 0x9
+
+gUnknown_83A6442:: @ 83A6442
+ .incbin "baserom.gba", 0x3A6442, 0x9
+
+gUnknown_83A644B:: @ 83A644B
+ .incbin "baserom.gba", 0x3A644B, 0x9
+
+gUnknown_83A6454:: @ 83A6454
+ .incbin "baserom.gba", 0x3A6454, 0x9
+
+gUnknown_83A645D:: @ 83A645D
+ .incbin "baserom.gba", 0x3A645D, 0x9
+
+gUnknown_83A6466:: @ 83A6466
+ .incbin "baserom.gba", 0x3A6466, 0x9
+
+gUnknown_83A646F:: @ 83A646F
+ .incbin "baserom.gba", 0x3A646F, 0x9
+
+gUnknown_83A6478:: @ 83A6478
+ .incbin "baserom.gba", 0x3A6478, 0x9
+
+gUnknown_83A6481:: @ 83A6481
+ .incbin "baserom.gba", 0x3A6481, 0x9
+
+gUnknown_83A648A:: @ 83A648A
+ .incbin "baserom.gba", 0x3A648A, 0x9
+
+gUnknown_83A6493:: @ 83A6493
+ .incbin "baserom.gba", 0x3A6493, 0x9
+
+gUnknown_83A649C:: @ 83A649C
+ .incbin "baserom.gba", 0x3A649C, 0xC
+
+gUnknown_83A64A8:: @ 83A64A8
+ .incbin "baserom.gba", 0x3A64A8, 0x10
+
+gUnknown_83A64B8:: @ 83A64B8
+ .incbin "baserom.gba", 0x3A64B8, 0x10
+
+gUnknown_83A64C8:: @ 83A64C8
+ .incbin "baserom.gba", 0x3A64C8, 0x24
+
+gUnknown_83A64EC:: @ 83A64EC
+ .incbin "baserom.gba", 0x3A64EC, 0x5
+
+gUnknown_83A64F1:: @ 83A64F1
+ .incbin "baserom.gba", 0x3A64F1, 0x5
+
+gUnknown_83A64F6:: @ 83A64F6
+ .incbin "baserom.gba", 0x3A64F6, 0x5
+
+gUnknown_83A64FB:: @ 83A64FB
+ .incbin "baserom.gba", 0x3A64FB, 0x5
+
+gUnknown_83A6500:: @ 83A6500
+ .incbin "baserom.gba", 0x3A6500, 0x5
+
+gUnknown_83A6505:: @ 83A6505
+ .incbin "baserom.gba", 0x3A6505, 0x5
+
+gUnknown_83A650A:: @ 83A650A
+ .incbin "baserom.gba", 0x3A650A, 0x5
+
+gUnknown_83A650F:: @ 83A650F
+ .incbin "baserom.gba", 0x3A650F, 0x5
+
+gUnknown_83A6514:: @ 83A6514
+ .incbin "baserom.gba", 0x3A6514, 0x5
+
+gUnknown_83A6519:: @ 83A6519
+ .incbin "baserom.gba", 0x3A6519, 0x5
+
+gUnknown_83A651E:: @ 83A651E
+ .incbin "baserom.gba", 0x3A651E, 0x5
+
+gUnknown_83A6523:: @ 83A6523
+ .incbin "baserom.gba", 0x3A6523, 0x5
+
+gUnknown_83A6528:: @ 83A6528
+ .incbin "baserom.gba", 0x3A6528, 0x5
+
+gUnknown_83A652D:: @ 83A652D
+ .incbin "baserom.gba", 0x3A652D, 0x5
+
+gUnknown_83A6532:: @ 83A6532
+ .incbin "baserom.gba", 0x3A6532, 0x5
+
+gUnknown_83A6537:: @ 83A6537
+ .incbin "baserom.gba", 0x3A6537, 0x5
+
+gUnknown_83A653C:: @ 83A653C
+ .incbin "baserom.gba", 0x3A653C, 0x5
+
+gUnknown_83A6541:: @ 83A6541
+ .incbin "baserom.gba", 0x3A6541, 0x5
+
+gUnknown_83A6546:: @ 83A6546
+ .incbin "baserom.gba", 0x3A6546, 0x5
+
+gUnknown_83A654B:: @ 83A654B
+ .incbin "baserom.gba", 0x3A654B, 0x5
+
+gUnknown_83A6550:: @ 83A6550
+ .incbin "baserom.gba", 0x3A6550, 0x5
+
+gUnknown_83A6555:: @ 83A6555
+ .incbin "baserom.gba", 0x3A6555, 0x5
+
+gUnknown_83A655A:: @ 83A655A
+ .incbin "baserom.gba", 0x3A655A, 0x5
+
+gUnknown_83A655F:: @ 83A655F
+ .incbin "baserom.gba", 0x3A655F, 0x5
+
+gUnknown_83A6564:: @ 83A6564
+ .incbin "baserom.gba", 0x3A6564, 0x5
+
+gUnknown_83A6569:: @ 83A6569
+ .incbin "baserom.gba", 0x3A6569, 0x5
+
+gUnknown_83A656E:: @ 83A656E
+ .incbin "baserom.gba", 0x3A656E, 0x5
+
+gUnknown_83A6573:: @ 83A6573
+ .incbin "baserom.gba", 0x3A6573, 0x5
+
+gUnknown_83A6578:: @ 83A6578
+ .incbin "baserom.gba", 0x3A6578, 0x5
+
+gUnknown_83A657D:: @ 83A657D
+ .incbin "baserom.gba", 0x3A657D, 0x5
+
+gUnknown_83A6582:: @ 83A6582
+ .incbin "baserom.gba", 0x3A6582, 0x5
+
+gUnknown_83A6587:: @ 83A6587
+ .incbin "baserom.gba", 0x3A6587, 0x5
+
+gUnknown_83A658C:: @ 83A658C
+ .incbin "baserom.gba", 0x3A658C, 0x5
+
+gUnknown_83A6591:: @ 83A6591
+ .incbin "baserom.gba", 0x3A6591, 0x8
+
+gUnknown_83A6599:: @ 83A6599
+ .incbin "baserom.gba", 0x3A6599, 0x10
+
+gUnknown_83A65A9:: @ 83A65A9
+ .incbin "baserom.gba", 0x3A65A9, 0x13
+
+gUnknown_83A65BC:: @ 83A65BC
+ .incbin "baserom.gba", 0x3A65BC, 0x2C8
+
+gUnknown_83A6884:: @ 83A6884
+ .incbin "baserom.gba", 0x3A6884, 0xD4
+
+gUnknown_83A6958:: @ 83A6958
+ .incbin "baserom.gba", 0x3A6958, 0x6
+
+gUnknown_83A695E:: @ 83A695E
+ .incbin "baserom.gba", 0x3A695E, 0x6C6
diff --git a/data/field_player_avatar.s b/data/field_player_avatar.s
new file mode 100644
index 000000000..c11bc74b3
--- /dev/null
+++ b/data/field_player_avatar.s
@@ -0,0 +1,73 @@
+ .section .rodata
+ .align 2
+gUnknown_835B764:: @ 835B764
+ .incbin "baserom.gba", 0x35B764, 0xB0
+
+gUnknown_835B814:: @ 835B814
+ .incbin "baserom.gba", 0x35B814, 0xC
+
+gUnknown_835B820:: @ 835B820
+ .incbin "baserom.gba", 0x35B820, 0x8
+
+gUnknown_835B828:: @ 835B828
+ .incbin "baserom.gba", 0x35B828, 0x14
+
+gUnknown_835B83C:: @ 835B83C
+ .incbin "baserom.gba", 0x35B83C, 0x8
+
+gUnknown_835B844:: @ 835B844
+ .incbin "baserom.gba", 0x35B844, 0x20
+
+gUnknown_835B864:: @ 835B864
+ .incbin "baserom.gba", 0x35B864, 0x10
+
+gUnknown_835B874:: @ 835B874
+ .incbin "baserom.gba", 0x35B874, 0xC
+
+gUnknown_835B880:: @ 835B880
+ .incbin "baserom.gba", 0x35B880, 0x2
+
+gUnknown_835B882:: @ 835B882
+ .incbin "baserom.gba", 0x35B882, 0xC
+
+gUnknown_835B88E:: @ 835B88E
+ .incbin "baserom.gba", 0x35B88E, 0x2
+
+gUnknown_835B890:: @ 835B890
+ .incbin "baserom.gba", 0x35B890, 0x10
+
+gUnknown_835B8A0:: @ 835B8A0
+ .incbin "baserom.gba", 0x35B8A0, 0xC
+
+gUnknown_835B8AC:: @ 835B8AC
+ .incbin "baserom.gba", 0x35B8AC, 0x4
+
+gUnknown_835B8B0:: @ 835B8B0
+ .incbin "baserom.gba", 0x35B8B0, 0x10
+
+gUnknown_835B8C0:: @ 835B8C0
+ .incbin "baserom.gba", 0x35B8C0, 0x4
+
+gUnknown_835B8C4:: @ 835B8C4
+ .incbin "baserom.gba", 0x35B8C4, 0x8
+
+gUnknown_835B8CC:: @ 835B8CC
+ .incbin "baserom.gba", 0x35B8CC, 0x40
+
+gUnknown_835B90C:: @ 835B90C
+ .incbin "baserom.gba", 0x35B90C, 0x6
+
+gUnknown_835B912:: @ 835B912
+ .incbin "baserom.gba", 0x35B912, 0x6
+
+gUnknown_835B918:: @ 835B918
+ .incbin "baserom.gba", 0x35B918, 0x2
+
+gUnknown_835B91A:: @ 835B91A
+ .incbin "baserom.gba", 0x35B91A, 0x6
+
+gUnknown_835B920:: @ 835B920
+ .incbin "baserom.gba", 0x35B920, 0xC
+
+gUnknown_835B92C:: @ 835B92C
+ .incbin "baserom.gba", 0x35B92C, 0x8
diff --git a/data/field_tasks.s b/data/field_tasks.s
new file mode 100644
index 000000000..a91e6cec9
--- /dev/null
+++ b/data/field_tasks.s
@@ -0,0 +1,7 @@
+ .section .rodata
+ .align 2
+gUnknown_83A7310:: @ 83A7310
+ .incbin "baserom.gba", 0x3A7310, 0x20
+
+gUnknown_83A7330:: @ 83A7330
+ .incbin "baserom.gba", 0x3A7330, 0x14
diff --git a/data/field_weather.s b/data/field_weather.s
new file mode 100644
index 000000000..a25e44344
--- /dev/null
+++ b/data/field_weather.s
@@ -0,0 +1,101 @@
+ .section .rodata
+ .align 2
+
+gUnknown_83C2BBC:: @ 83C2BBC
+ .incbin "baserom.gba", 0x3C2BBC, 0x4
+
+gUnknown_83C2BC0:: @ 83C2BC0
+ .incbin "baserom.gba", 0x3C2BC0, 0xF0
+
+gUnknown_83C2CB0:: @ 83C2CB0
+ .incbin "baserom.gba", 0x3C2CB0, 0x10
+
+gUnknown_83C2CC0:: @ 83C2CC0
+ .incbin "baserom.gba", 0x3C2CC0, 0x20
+
+gUnknown_83C2CE0:: @ 83C2CE0
+ .incbin "baserom.gba", 0x3C2CE0, 0x20
+
+gUnknown_83C2D00:: @ 83C2D00
+ .incbin "baserom.gba", 0x3C2D00, 0x20
+
+gUnknown_83C2D20:: @ 83C2D20
+ .incbin "baserom.gba", 0x3C2D20, 0x820
+
+gUnknown_83C3540:: @ 83C3540
+ .incbin "baserom.gba", 0x3C3540, 0x3080
+
+gUnknown_83C65C0:: @ 83C65C0
+ .incbin "baserom.gba", 0x3C65C0, 0x4
+
+gUnknown_83C65C4:: @ 83C65C4
+ .incbin "baserom.gba", 0x3C65C4, 0x4
+
+gUnknown_83C65C8:: @ 83C65C8
+ .incbin "baserom.gba", 0x3C65C8, 0xC
+
+gUnknown_83C65D4:: @ 83C65D4
+ .incbin "baserom.gba", 0x3C65D4, 0x1C
+
+gUnknown_83C65F0:: @ 83C65F0
+ .incbin "baserom.gba", 0x3C65F0, 0x18
+
+gUnknown_83C6608:: @ 83C6608
+ .incbin "baserom.gba", 0x3C6608, 0x9C
+
+gUnknown_83C66A4:: @ 83C66A4
+ .incbin "baserom.gba", 0x3C66A4, 0x18
+
+gUnknown_83C66BC:: @ 83C66BC
+ .incbin "baserom.gba", 0x3C66BC, 0x8
+
+gUnknown_83C66C4:: @ 83C66C4
+ .incbin "baserom.gba", 0x3C66C4, 0x8
+
+gUnknown_83C66CC:: @ 83C66CC
+ .incbin "baserom.gba", 0x3C66CC, 0x38
+
+gUnknown_83C6704:: @ 83C6704
+ .incbin "baserom.gba", 0x3C6704, 0x8C
+
+gUnknown_83C6790:: @ 83C6790
+ .incbin "baserom.gba", 0x3C6790, 0x18
+
+gUnknown_83C67A8:: @ 83C67A8
+ .incbin "baserom.gba", 0x3C67A8, 0x8
+
+gUnknown_83C67B0:: @ 83C67B0
+ .incbin "baserom.gba", 0x3C67B0, 0x20
+
+gUnknown_83C67D0:: @ 83C67D0
+ .incbin "baserom.gba", 0x3C67D0, 0x18
+
+gUnknown_83C67E8:: @ 83C67E8
+ .incbin "baserom.gba", 0x3C67E8, 0x1C
+
+gUnknown_83C6804:: @ 83C6804
+ .incbin "baserom.gba", 0x3C6804, 0x38
+
+gUnknown_83C683C:: @ 83C683C
+ .incbin "baserom.gba", 0x3C683C, 0x18
+
+gUnknown_83C6854:: @ 83C6854
+ .incbin "baserom.gba", 0x3C6854, 0x8
+
+gUnknown_83C685C:: @ 83C685C
+ .incbin "baserom.gba", 0x3C685C, 0xC
+
+gUnknown_83C6868:: @ 83C6868
+ .incbin "baserom.gba", 0x3C6868, 0x8
+
+gUnknown_83C6870:: @ 83C6870
+ .incbin "baserom.gba", 0x3C6870, 0x8
+
+gUnknown_83C6878:: @ 83C6878
+ .incbin "baserom.gba", 0x3C6878, 0x44
+
+gUnknown_83C68BC:: @ 83C68BC
+ .incbin "baserom.gba", 0x3C68BC, 0x18
+
+gUnknown_83C68D4:: @ 83C68D4
+ .incbin "baserom.gba", 0x3C68D4, 0xC
diff --git a/data/help_system.s b/data/help_system.s
new file mode 100644
index 000000000..3031f4c7f
--- /dev/null
+++ b/data/help_system.s
@@ -0,0 +1,8 @@
+ .section .rodata
+ .align 2
+
+gUnknown_8464008:: @ 8464008
+ .incbin "baserom.gba", 0x464008, 0x120
+
+gUnknown_8464128:: @ 8464128
+ .incbin "baserom.gba", 0x464128, 0x20
diff --git a/data/itemfinder.s b/data/itemfinder.s
new file mode 100644
index 000000000..3a955deeb
--- /dev/null
+++ b/data/itemfinder.s
@@ -0,0 +1,7 @@
+ .section .rodata
+ .align 2
+gUnknown_84647E4:: @ 84647E4
+ .incbin "baserom.gba", 0x4647E4, 0x18
+
+gUnknown_84647FC:: @ 84647FC
+ .incbin "baserom.gba", 0x4647FC, 0x8
diff --git a/data/link_rfu_4.s b/data/link_rfu_4.s
new file mode 100644
index 000000000..20f235a80
--- /dev/null
+++ b/data/link_rfu_4.s
@@ -0,0 +1,54 @@
+ .section .rodata
+
+ .align 2
+
+gUnknown_8466D90:: @ 8466D90
+ .incbin "baserom.gba", 0x466D90, 0x8
+
+gUnknown_8466D98:: @ 8466D98
+ .incbin "baserom.gba", 0x466D98, 0x8
+
+gUnknown_8466DA0:: @ 8466DA0
+ .incbin "baserom.gba", 0x466DA0, 0x8
+
+gUnknown_8466DA8:: @ 8466DA8
+ .incbin "baserom.gba", 0x466DA8, 0x8
+
+gUnknown_8466DB0:: @ 8466DB0
+ .incbin "baserom.gba", 0x466DB0, 0x8
+
+gUnknown_8466DB8:: @ 8466DB8
+ .incbin "baserom.gba", 0x466DB8, 0x8
+
+gUnknown_8466DC0:: @ 8466DC0
+ .incbin "baserom.gba", 0x466DC0, 0x8
+
+gUnknown_8466DC8:: @ 8466DC8
+ .incbin "baserom.gba", 0x466DC8, 0x8
+
+gUnknown_8466DD0:: @ 8466DD0
+ .incbin "baserom.gba", 0x466DD0, 0x18
+
+gUnknown_8466DE8:: @ 8466DE8
+ .incbin "baserom.gba", 0x466DE8, 0x18
+
+gUnknown_8466E00:: @ 8466E00
+ .incbin "baserom.gba", 0x466E00, 0x78
+
+gUnknown_8466E78:: @ 8466E78
+ .incbin "baserom.gba", 0x466E78, 0x18
+
+gUnknown_8466E90:: @ 8466E90
+ .incbin "baserom.gba", 0x466E90, 0x18
+
+gUnknown_8466EA8:: @ 8466EA8
+ .incbin "baserom.gba", 0x466EA8, 0x18
+
+gUnknown_8466EC0:: @ 8466EC0
+ .incbin "baserom.gba", 0x466EC0, 0x28
+
+gUnknown_8466EE8:: @ 8466EE8
+ .incbin "baserom.gba", 0x466EE8, 0x8
+
+gUnknown_8466EF0:: @ 8466EF0
+ .incbin "baserom.gba", 0x466EF0, 0x10
diff --git a/data/map_obj_80688E4.s b/data/map_obj_80688E4.s
new file mode 100644
index 000000000..9010be906
--- /dev/null
+++ b/data/map_obj_80688E4.s
@@ -0,0 +1,30 @@
+ .section .rodata
+ .align 2
+gUnknown_83A719C:: @ 83A719C
+ .incbin "baserom.gba", 0x3A719C, 0x14
+
+gUnknown_83A71B0:: @ 83A71B0
+ .incbin "baserom.gba", 0x3A71B0, 0x3C
+
+gUnknown_83A71EC:: @ 83A71EC
+ .incbin "baserom.gba", 0x3A71EC, 0xC
+
+gUnknown_83A71F8:: @ 83A71F8
+ .incbin "baserom.gba", 0x3A71F8, 0x6
+
+gUnknown_83A71FE:: @ 83A71FE
+ .incbin "baserom.gba", 0x3A71FE, 0x4
+
+gUnknown_83A7202:: @ 83A7202
+ .incbin "baserom.gba", 0x3A7202, 0x6
+
+gUnknown_83A7208:: @ 83A7208
+ .incbin "baserom.gba", 0x3A7208, 0x4
+
+ .align 2
+gUnknown_83A720C:: @ 83A720C
+ .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/evobjmv.c"
+
+ .align 2
+gUnknown_83A7240:: @ 83A7240
+ .asciz "0"
diff --git a/data/menu_indicators.s b/data/menu_indicators.s
new file mode 100644
index 000000000..dd8911c7d
--- /dev/null
+++ b/data/menu_indicators.s
@@ -0,0 +1,46 @@
+ .section .rodata
+ .align 2
+gUnknown_846325C:: @ 846325C
+ .incbin "baserom.gba", 0x46325C, 0x48
+
+gUnknown_84632A4:: @ 84632A4
+ .incbin "baserom.gba", 0x4632A4, 0x18
+
+gUnknown_84632BC:: @ 84632BC
+ .incbin "baserom.gba", 0x4632BC, 0x4
+
+gUnknown_84632C0:: @ 84632C0
+ .incbin "baserom.gba", 0x4632C0, 0x4
+
+gUnknown_84632C4:: @ 84632C4
+ .incbin "baserom.gba", 0x4632C4, 0x4
+
+gUnknown_84632C8:: @ 84632C8
+ .incbin "baserom.gba", 0x4632C8, 0x4
+
+gUnknown_84632CC:: @ 84632CC
+ .incbin "baserom.gba", 0x4632CC, 0x4
+
+gUnknown_84632D0:: @ 84632D0
+ .incbin "baserom.gba", 0x4632D0, 0x4
+
+gUnknown_84632D4:: @ 84632D4
+ .incbin "baserom.gba", 0x4632D4, 0x4
+
+gUnknown_84632D8:: @ 84632D8
+ .incbin "baserom.gba", 0x4632D8, 0x18
+
+gUnknown_84632F0:: @ 84632F0
+ .incbin "baserom.gba", 0x4632F0, 0x18
+
+gUnknown_8463308:: @ 8463308
+ .incbin "baserom.gba", 0x463308, 0x20
+
+gUnknown_8463328:: @ 8463328
+ .incbin "baserom.gba", 0x463328, 0x70
+
+gUnknown_8463398:: @ 8463398
+ .incbin "baserom.gba", 0x463398, 0x40
+
+gUnknown_84633D8:: @ 84633D8
+ .incbin "baserom.gba", 0x4633D8, 0x44
diff --git a/data/mystery_gift_menu.s b/data/mystery_gift_menu.s
new file mode 100644
index 000000000..9caee4467
--- /dev/null
+++ b/data/mystery_gift_menu.s
@@ -0,0 +1,14 @@
+ .section .rodata
+ .align 2
+
+gUnknown_8466D10:: @ 8466D10
+ .incbin "baserom.gba", 0x466D10, 0x20
+
+gUnknown_8466D30:: @ 8466D30
+ .incbin "baserom.gba", 0x466D30, 0x30
+
+gUnknown_8466D60:: @ 8466D60
+ .incbin "baserom.gba", 0x466D60, 0x10
+
+gUnknown_8466D70:: @ 8466D70
+ .incbin "baserom.gba", 0x466D70, 0x20
diff --git a/data/oak_speech/help_docs_page2_tilemap.bin b/data/oak_speech/help_docs_page2_tilemap.bin
new file mode 100644
index 000000000..6d3cd42f1
--- /dev/null
+++ b/data/oak_speech/help_docs_page2_tilemap.bin
Binary files differ
diff --git a/data/oak_speech/help_docs_page3_tilemap.bin b/data/oak_speech/help_docs_page3_tilemap.bin
new file mode 100644
index 000000000..24805c96e
--- /dev/null
+++ b/data/oak_speech/help_docs_page3_tilemap.bin
Binary files differ
diff --git a/data/oak_speech/help_docs_palette.pal b/data/oak_speech/help_docs_palette.pal
new file mode 100644
index 000000000..b6905b913
--- /dev/null
+++ b/data/oak_speech/help_docs_palette.pal
@@ -0,0 +1,67 @@
+JASC-PAL
+0100
+64
+16 115 230
+65 139 131
+82 148 139
+106 164 156
+131 180 172
+156 197 189
+180 213 205
+205 230 222
+230 246 238
+255 0 255
+255 0 255
+0 90 16
+255 0 0
+49 82 205
+255 255 255
+32 32 32
+16 115 230
+255 255 164
+255 255 106
+222 222 90
+189 189 74
+156 156 57
+156 156 57
+123 123 49
+90 90 32
+57 57 16
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+0 0 0
+238 230 172
+115 180 197
+156 213 238
+205 238 246
+246 255 255
+230 246 246
+106 106 106
+74 82 106
+82 98 180
+230 246 246
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 74 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 0 255
+123 123 123
+172 172 156
+197 197 197
+222 222 222
+238 238 238
+255 255 255
diff --git a/data/oak_speech/new_game_adventure_intro_tilemap.bin b/data/oak_speech/new_game_adventure_intro_tilemap.bin
new file mode 100644
index 000000000..ad1c8216c
--- /dev/null
+++ b/data/oak_speech/new_game_adventure_intro_tilemap.bin
@@ -0,0 +1,2 @@
+^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^                                ` `   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` `   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (`   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (`   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` `   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `   ` ` a b c d e f   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (p q r s t u v   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` g h i j k l m   ` ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (w x y z { | }   ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` n o   ` ~   
+ \ No newline at end of file
diff --git a/data/oak_speech/oak_speech_background_tilemap.bin b/data/oak_speech/oak_speech_background_tilemap.bin
new file mode 100644
index 000000000..64374cd24
--- /dev/null
+++ b/data/oak_speech/oak_speech_background_tilemap.bin
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_game_start_help_u_i.png b/data/oak_speech/oak_speech_gfx_game_start_help_u_i.png
new file mode 100644
index 000000000..419858b1b
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_game_start_help_u_i.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_grass_platform.png b/data/oak_speech/oak_speech_gfx_grass_platform.png
new file mode 100644
index 000000000..2c8e425d2
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_grass_platform.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_leaf_pal.pal b/data/oak_speech/oak_speech_gfx_leaf_pal.pal
new file mode 100644
index 000000000..feb1214a1
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_leaf_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+115 197 164
+255 238 205
+246 205 180
+213 164 148
+172 131 106
+106 74 65
+205 164 139
+164 123 98
+115 74 49
+74 41 16
+222 222 222
+180 180 180
+131 131 131
+82 82 90
+41 41 49
+255 255 255
+0 0 0
+131 189 213
+106 156 180
+82 131 156
+49 90 115
+32 65 90
+0 0 255
+255 255 189
+222 222 82
+172 172 57
+98 98 0
+213 131 123
+189 106 98
+164 82 74
+139 57 49
+98 24 16
diff --git a/data/oak_speech/oak_speech_gfx_leaf_pic.png b/data/oak_speech/oak_speech_gfx_leaf_pic.png
new file mode 100644
index 000000000..1825f9960
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_leaf_pic.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_oak_pal.pal b/data/oak_speech/oak_speech_gfx_oak_pal.pal
new file mode 100644
index 000000000..a0b648b2b
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_oak_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+115 197 164
+255 230 205
+222 189 156
+197 148 115
+106 74 65
+238 222 148
+205 189 115
+172 156 90
+139 123 65
+98 90 49
+255 0 255
+205 205 222
+123 131 156
+57 74 106
+255 255 255
+0 0 0
+0 0 255
+172 148 222
+131 115 172
+82 65 115
+230 222 180
+205 197 156
+180 172 139
+164 156 123
+123 115 90
+82 57 49
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/oak_speech/oak_speech_gfx_oak_pic.png b/data/oak_speech/oak_speech_gfx_oak_pic.png
new file mode 100644
index 000000000..9ac602944
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_oak_pic.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_pika1.png b/data/oak_speech/oak_speech_gfx_pika1.png
new file mode 100644
index 000000000..71644c355
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_pika1.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_pika2.png b/data/oak_speech/oak_speech_gfx_pika2.png
new file mode 100644
index 000000000..e85cbfa9c
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_pika2.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_pika_eyes.png b/data/oak_speech/oak_speech_gfx_pika_eyes.png
new file mode 100644
index 000000000..5e2fd80c0
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_pika_eyes.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_red_pal.pal b/data/oak_speech/oak_speech_gfx_red_pal.pal
new file mode 100644
index 000000000..7eec09831
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_red_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+115 197 164
+255 230 205
+222 189 156
+197 148 131
+148 106 90
+106 74 65
+205 164 139
+164 123 98
+115 74 49
+82 65 32
+222 222 222
+180 180 180
+131 131 131
+82 82 90
+57 57 65
+255 255 255
+0 0 0
+131 189 213
+106 156 180
+82 131 156
+49 90 115
+32 65 90
+0 0 255
+238 238 74
+205 205 49
+164 164 32
+98 98 0
+213 131 123
+189 106 98
+164 82 74
+139 57 49
+98 24 16
diff --git a/data/oak_speech/oak_speech_gfx_red_pic.png b/data/oak_speech/oak_speech_gfx_red_pic.png
new file mode 100644
index 000000000..edf5cf9b1
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_red_pic.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_rival_pal.pal b/data/oak_speech/oak_speech_gfx_rival_pal.pal
new file mode 100644
index 000000000..8240527a6
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_rival_pal.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+115 197 164
+255 230 205
+222 189 156
+197 148 115
+106 74 65
+238 189 74
+213 156 57
+189 123 41
+139 82 41
+164 123 106
+222 222 222
+197 197 197
+139 139 139
+98 98 98
+65 65 65
+255 255 255
+0 0 0
+180 148 180
+139 106 139
+106 74 106
+82 49 82
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+246 131 131
+205 82 82
diff --git a/data/oak_speech/oak_speech_gfx_rival_pic.png b/data/oak_speech/oak_speech_gfx_rival_pic.png
new file mode 100644
index 000000000..317cbc038
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_rival_pic.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_gfx_solid_colors.png b/data/oak_speech/oak_speech_gfx_solid_colors.png
new file mode 100644
index 000000000..30066cdd8
--- /dev/null
+++ b/data/oak_speech/oak_speech_gfx_solid_colors.png
Binary files differ
diff --git a/data/oak_speech/oak_speech_grass_platform_palette.pal b/data/oak_speech/oak_speech_grass_platform_palette.pal
new file mode 100644
index 000000000..4fb339128
--- /dev/null
+++ b/data/oak_speech/oak_speech_grass_platform_palette.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+189 189 164
+65 139 131
+82 148 139
+106 164 156
+131 180 172
+156 197 189
+180 213 205
+205 230 222
+230 246 238
+0 0 0
+255 0 255
+139 189 164
+156 205 172
+180 222 197
+205 238 222
+115 172 156
diff --git a/data/oak_speech/oak_speech_pika_palette.pal b/data/oak_speech/oak_speech_pika_palette.pal
new file mode 100644
index 000000000..4d2e92c74
--- /dev/null
+++ b/data/oak_speech/oak_speech_pika_palette.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 205 180
+255 255 255
+255 246 106
+246 213 0
+238 172 0
+197 139 0
+131 82 0
+255 0 255
+255 0 255
+180 180 180
+255 74 74
+230 0 0
+180 0 0
+106 106 106
+16 16 16
+255 0 255
diff --git a/data/palette.s b/data/palette.s
new file mode 100644
index 000000000..67a6fcb0c
--- /dev/null
+++ b/data/palette.s
@@ -0,0 +1,7 @@
+ .section .rodata
+ .align 2
+gUnknown_83AC960:: @ 83AC960
+ .incbin "baserom.gba", 0x3AC960, 0x10
+
+gUnknown_83AC970:: @ 83AC970
+ .incbin "baserom.gba", 0x3AC970, 0x20
diff --git a/data/pokedex_area_markers.s b/data/pokedex_area_markers.s
new file mode 100644
index 000000000..bf63a3210
--- /dev/null
+++ b/data/pokedex_area_markers.s
@@ -0,0 +1,14 @@
+ .section .rodata
+ .align 2
+
+gUnknown_846341C:: @ 846341C
+ .incbin "baserom.gba", 0x46341C, 0x20
+
+gUnknown_846343C:: @ 846343C
+ .incbin "baserom.gba", 0x46343C, 0x128
+
+gUnknown_8463564:: @ 8463564
+ .incbin "baserom.gba", 0x463564, 0x1C
+
+gUnknown_8463580:: @ 8463580
+ .incbin "baserom.gba", 0x463580, 0x140
diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s
new file mode 100644
index 000000000..be7c0de93
--- /dev/null
+++ b/data/pokemon_summary_screen.s
@@ -0,0 +1,134 @@
+ .section .rodata
+ .align 2
+
+gUnknown_84636C0:: @ 84636C0
+ .incbin "baserom.gba", 0x4636C0, 0x20
+
+gUnknown_84636E0:: @ 84636E0
+ .incbin "baserom.gba", 0x4636E0, 0x20
+
+gUnknown_8463700:: @ 8463700
+ .incbin "baserom.gba", 0x463700, 0x20
+
+gUnknown_8463720:: @ 8463720
+ .incbin "baserom.gba", 0x463720, 0x20
+
+gUnknown_8463740:: @ 8463740
+ .incbin "baserom.gba", 0x463740, 0x12C
+
+gUnknown_846386C:: @ 846386C
+ .incbin "baserom.gba", 0x46386C, 0x120
+
+gUnknown_846398C:: @ 846398C
+ .incbin "baserom.gba", 0x46398C, 0x18
+
+gUnknown_84639A4:: @ 84639A4
+ .incbin "baserom.gba", 0x4639A4, 0x8
+
+gUnknown_84639AC:: @ 84639AC
+ .incbin "baserom.gba", 0x4639AC, 0x48
+
+gUnknown_84639F4:: @ 84639F4
+ .incbin "baserom.gba", 0x4639F4, 0x20
+
+gUnknown_8463A14:: @ 8463A14
+ .incbin "baserom.gba", 0x463A14, 0x68
+
+gUnknown_8463A7C:: @ 8463A7C
+ .incbin "baserom.gba", 0x463A7C, 0x70
+
+gUnknown_8463AEC:: @ 8463AEC
+ .incbin "baserom.gba", 0x463AEC, 0x10
+
+gUnknown_8463AFC:: @ 8463AFC
+ .incbin "baserom.gba", 0x463AFC, 0x4
+
+gUnknown_8463B00:: @ 8463B00
+ .incbin "baserom.gba", 0x463B00, 0x20
+
+gUnknown_8463B20:: @ 8463B20
+ .incbin "baserom.gba", 0x463B20, 0x10
+
+gUnknown_8463B30:: @ 8463B30
+ .incbin "baserom.gba", 0x463B30, 0x10
+
+gUnknown_8463B40:: @ 8463B40
+ .incbin "baserom.gba", 0x463B40, 0x4
+
+gUnknown_8463B44:: @ 8463B44
+ .incbin "baserom.gba", 0x463B44, 0x20
+
+gUnknown_8463B64:: @ 8463B64
+ .incbin "baserom.gba", 0x463B64, 0x24
+
+gUnknown_8463B88:: @ 8463B88
+ .incbin "baserom.gba", 0x463B88, 0xF8
+
+gUnknown_8463C80:: @ 8463C80
+ .incbin "baserom.gba", 0x463C80, 0x1E0
+
+gUnknown_8463E60:: @ 8463E60
+ .incbin "baserom.gba", 0x463E60, 0x64
+
+gUnknown_8463EC4:: @ 8463EC4
+ .incbin "baserom.gba", 0x463EC4, 0x10
+
+gUnknown_8463ED4:: @ 8463ED4
+ .incbin "baserom.gba", 0x463ED4, 0x1C
+
+gUnknown_8463EF0:: @ 8463EF0
+ .incbin "baserom.gba", 0x463EF0, 0xC
+
+gUnknown_8463EFC:: @ 8463EFC
+ .incbin "baserom.gba", 0x463EFC, 0x10
+
+gUnknown_8463F0C:: @ 8463F0C
+ .incbin "baserom.gba", 0x463F0C, 0x18
+
+gUnknown_8463F24:: @ 8463F24
+ .incbin "baserom.gba", 0x463F24, 0x18
+
+gUnknown_8463F3C:: @ 8463F3C
+ .incbin "baserom.gba", 0x463F3C, 0x20
+
+gUnknown_8463F5C:: @ 8463F5C
+ .incbin "baserom.gba", 0x463F5C, 0x20
+
+gUnknown_8463F7C:: @ 8463F7C
+ .incbin "baserom.gba", 0x463F7C, 0x20
+
+gUnknown_8463F9C:: @ 8463F9C
+ .incbin "baserom.gba", 0x463F9C, 0x8
+
+gUnknown_8463FA4:: @ 8463FA4
+ .incbin "baserom.gba", 0x463FA4, 0x3
+
+gUnknown_8463FA7:: @ 8463FA7
+ .incbin "baserom.gba", 0x463FA7, 0x11
+
+gUnknown_8463FB8:: @ 8463FB8
+ .incbin "baserom.gba", 0x463FB8, 0x6
+
+gUnknown_8463FBE:: @ 8463FBE
+ .incbin "baserom.gba", 0x463FBE, 0x3
+
+gUnknown_8463FC1:: @ 8463FC1
+ .incbin "baserom.gba", 0x463FC1, 0x5
+
+gUnknown_8463FC6:: @ 8463FC6
+ .incbin "baserom.gba", 0x463FC6, 0x7
+
+gUnknown_8463FCD:: @ 8463FCD
+ .incbin "baserom.gba", 0x463FCD, 0x7
+
+gUnknown_8463FD4:: @ 8463FD4
+ .incbin "baserom.gba", 0x463FD4, 0xB
+
+gUnknown_8463FDF:: @ 8463FDF
+ .incbin "baserom.gba", 0x463FDF, 0xB
+
+gUnknown_8463FEA:: @ 8463FEA
+ .incbin "baserom.gba", 0x463FEA, 0x12
+
+gUnknown_8463FFC:: @ 8463FFC
+ .incbin "baserom.gba", 0x463FFC, 0xC
diff --git a/data/slot_machine.s b/data/slot_machine.s
new file mode 100644
index 000000000..dac396602
--- /dev/null
+++ b/data/slot_machine.s
@@ -0,0 +1,94 @@
+ .section .rodata
+ .align 2
+gUnknown_8464890:: @ 8464890
+ .incbin "baserom.gba", 0x464890, 0x1E
+
+gUnknown_84648AE:: @ 84648AE
+ .incbin "baserom.gba", 0x4648AE, 0xF
+
+gUnknown_84648BD:: @ 84648BD
+ .incbin "baserom.gba", 0x4648BD, 0x15
+
+gUnknown_84648D2:: @ 84648D2
+ .incbin "baserom.gba", 0x4648D2, 0x54
+
+gUnknown_8464926:: @ 8464926
+ .incbin "baserom.gba", 0x464926, 0x40
+
+gUnknown_8464966:: @ 8464966
+ .incbin "baserom.gba", 0x464966, 0xC4A
+
+gUnknown_84655B0:: @ 84655B0
+ .incbin "baserom.gba", 0x4655B0, 0x18
+
+gUnknown_84655C8:: @ 84655C8
+ .incbin "baserom.gba", 0x4655C8, 0x40
+
+gUnknown_8465608:: @ 8465608
+ .incbin "baserom.gba", 0x465608, 0xE
+
+gUnknown_8465616:: @ 8465616
+ .incbin "baserom.gba", 0x465616, 0xC0
+
+gUnknown_84656D6:: @ 84656D6
+ .incbin "baserom.gba", 0x4656D6, 0x10E
+
+gUnknown_84657E4:: @ 84657E4
+ .incbin "baserom.gba", 0x4657E4, 0x98
+
+gUnknown_846587C:: @ 846587C
+ .incbin "baserom.gba", 0x46587C, 0x5C
+
+gUnknown_84658D8:: @ 84658D8
+ .incbin "baserom.gba", 0x4658D8, 0x18
+
+gUnknown_84658F0:: @ 84658F0
+ .incbin "baserom.gba", 0x4658F0, 0x40
+
+gUnknown_8465930:: @ 8465930
+ .incbin "baserom.gba", 0x465930, 0x20
+
+gUnknown_8465950:: @ 8465950
+ .incbin "baserom.gba", 0x465950, 0x80
+
+gUnknown_84659D0:: @ 84659D0
+ .incbin "baserom.gba", 0x4659D0, 0x804
+
+gUnknown_84661D4:: @ 84661D4
+ .incbin "baserom.gba", 0x4661D4, 0x2E8
+
+gUnknown_84664BC:: @ 84664BC
+ .incbin "baserom.gba", 0x4664BC, 0x20
+
+gUnknown_84664DC:: @ 84664DC
+ .incbin "baserom.gba", 0x4664DC, 0x60
+
+gUnknown_846653C:: @ 846653C
+ .incbin "baserom.gba", 0x46653C, 0x84
+
+gUnknown_84665C0:: @ 84665C0
+ .incbin "baserom.gba", 0x4665C0, 0x60
+
+gUnknown_8466620:: @ 8466620
+ .incbin "baserom.gba", 0x466620, 0x378
+
+gUnknown_8466998:: @ 8466998
+ .incbin "baserom.gba", 0x466998, 0x178
+
+gUnknown_8466B10:: @ 8466B10
+ .incbin "baserom.gba", 0x466B10, 0x10
+
+gUnknown_8466B20:: @ 8466B20
+ .incbin "baserom.gba", 0x466B20, 0xEC
+
+gUnknown_8466C0C:: @ 8466C0C
+ .incbin "baserom.gba", 0x466C0C, 0x28
+
+gUnknown_8466C34:: @ 8466C34
+ .incbin "baserom.gba", 0x466C34, 0x4
+
+gUnknown_8466C38:: @ 8466C38
+ .incbin "baserom.gba", 0x466C38, 0x8
+
+gUnknown_8466C40:: @ 8466C40
+ .incbin "baserom.gba", 0x466C40, 0x18
diff --git a/data/specials.inc b/data/specials.inc
index 56b666207..33cc5736b 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -306,7 +306,7 @@ gSpecials:: @ 815FD60
def_special ScrSpecial_AreLeadMonEVsMaxedOut
def_special sub_8069740
def_special sub_8069768
- def_special sub_8141D9C
+ def_special InitRoamer
def_special nullsub_75
def_special sub_80CA804
def_special nullsub_75
@@ -363,7 +363,7 @@ gSpecials:: @ 815FD60
def_special GetDaycarePokemonCount
def_special sub_80CB63C
def_special sub_80CBD80
- def_special sub_80CBDB0
+ def_special ScrSpecial_GetStarter
def_special sub_80CBDCC
def_special sub_810C444
def_special sub_80CC7B4
diff --git a/data/start_menu.s b/data/start_menu.s
new file mode 100644
index 000000000..e004a6628
--- /dev/null
+++ b/data/start_menu.s
@@ -0,0 +1,28 @@
+ .section .rodata
+ .align 2
+gUnknown_83A7344:: @ 83A7344
+ .incbin "baserom.gba", 0x3A7344, 0x48
+
+gUnknown_83A738C:: @ 83A738C
+ .incbin "baserom.gba", 0x3A738C, 0x8
+
+gUnknown_83A7394:: @ 83A7394
+ .incbin "baserom.gba", 0x3A7394, 0x24
+
+gUnknown_83A73B8:: @ 83A73B8
+ .incbin "baserom.gba", 0x3A73B8, 0x4
+
+gUnknown_83A73BC:: @ 83A73BC
+ .incbin "baserom.gba", 0x3A73BC, 0x10
+
+gUnknown_83A73CC:: @ 83A73CC
+ .incbin "baserom.gba", 0x3A73CC, 0x8
+
+gUnknown_83A73D4:: @ 83A73D4
+ .incbin "baserom.gba", 0x3A73D4, 0x4
+
+gUnknown_83A73D8:: @ 83A73D8
+ .incbin "baserom.gba", 0x3A73D8, 0x4
+
+gUnknown_83A73DC:: @ 83A73DC
+ .incbin "baserom.gba", 0x3A73DC, 0x284
diff --git a/data/tileset_anims.s b/data/tileset_anims.s
new file mode 100644
index 000000000..9881cdd3f
--- /dev/null
+++ b/data/tileset_anims.s
@@ -0,0 +1,25 @@
+ .section .rodata
+ .align 2
+gUnknown_83A7660:: @ 83A7660
+ .incbin "baserom.gba", 0x3A7660, 0x2FF4
+
+gUnknown_83AA654:: @ 83AA654
+ .incbin "baserom.gba", 0x3AA654, 0x1220
+
+gUnknown_83AB874:: @ 83AB874
+ .incbin "baserom.gba", 0x3AB874, 0x540
+
+gUnknown_83ABDB4:: @ 83ABDB4
+ .incbin "baserom.gba", 0x3ABDB4, 0x434
+
+gUnknown_83AC1E8:: @ 83AC1E8
+ .incbin "baserom.gba", 0x3AC1E8, 0x410
+
+gUnknown_83AC5F8:: @ 83AC5F8
+ .incbin "baserom.gba", 0x3AC5F8, 0x1D0
+
+gUnknown_83AC7C8:: @ 83AC7C8
+ .incbin "baserom.gba", 0x3AC7C8, 0x188
+
+gUnknown_83AC950:: @ 83AC950
+ .incbin "baserom.gba", 0x3AC950, 0x10
diff --git a/data/title_screen.s b/data/title_screen.s
new file mode 100644
index 000000000..93d0f2f83
--- /dev/null
+++ b/data/title_screen.s
@@ -0,0 +1,34 @@
+ .section .rodata
+ .align 2
+gUnknown_83BF58C:: @ 83BF58C
+ .incbin "baserom.gba", 0x3BF58C, 0x1C
+
+gUnknown_83BF5A8:: @ 83BF5A8
+ .incbin "baserom.gba", 0x3BF5A8, 0x55C
+
+gUnknown_83BFB04:: @ 83BFB04
+ .incbin "baserom.gba", 0x3BFB04, 0x18
+
+gUnknown_83BFB1C:: @ 83BFB1C
+ .incbin "baserom.gba", 0x3BFB1C, 0x20
+
+gUnknown_83BFB3C:: @ 83BFB3C
+ .incbin "baserom.gba", 0x3BFB3C, 0x20
+
+gUnknown_83BFB5C:: @ 83BFB5C
+ .incbin "baserom.gba", 0x3BFB5C, 0x18
+
+gUnknown_83BFB74:: @ 83BFB74
+ .incbin "baserom.gba", 0x3BFB74, 0x10
+
+gUnknown_83BFB84:: @ 83BFB84
+ .incbin "baserom.gba", 0x3BFB84, 0x18
+
+gUnknown_83BFB9C:: @ 83BFB9C
+ .incbin "baserom.gba", 0x3BFB9C, 0x20
+
+gUnknown_83BFBBC:: @ 83BFBBC
+ .incbin "baserom.gba", 0x3BFBBC, 0x18
+
+gUnknown_83BFBD4:: @ 83BFBD4
+ .incbin "baserom.gba", 0x3BFBD4, 0x2FE8
diff --git a/data/tm_case.s b/data/tm_case.s
new file mode 100644
index 000000000..5720087d7
--- /dev/null
+++ b/data/tm_case.s
@@ -0,0 +1,50 @@
+ .section .rodata
+
+ .align 2
+gUnknown_8463134:: @ 8463134
+ .incbin "baserom.gba", 0x463134, 0xC
+
+gUnknown_8463140:: @ 8463140
+ .incbin "baserom.gba", 0x463140, 0x10
+
+gUnknown_8463150:: @ 8463150
+ .incbin "baserom.gba", 0x463150, 0x18
+
+gUnknown_8463168:: @ 8463168
+ .incbin "baserom.gba", 0x463168, 0x3
+
+gUnknown_846316B:: @ 846316B
+ .incbin "baserom.gba", 0x46316B, 0x5
+
+gUnknown_8463170:: @ 8463170
+ .incbin "baserom.gba", 0x463170, 0x8
+
+gUnknown_8463178:: @ 8463178
+ .incbin "baserom.gba", 0x463178, 0x4
+
+gUnknown_846317C:: @ 846317C
+ .incbin "baserom.gba", 0x46317C, 0x4
+
+gUnknown_8463180:: @ 8463180
+ .incbin "baserom.gba", 0x463180, 0x4
+
+gUnknown_8463184:: @ 8463184
+ .incbin "baserom.gba", 0x463184, 0xC
+
+gUnknown_8463190:: @ 8463190
+ .incbin "baserom.gba", 0x463190, 0x50
+
+gUnknown_84631E0:: @ 84631E0
+ .incbin "baserom.gba", 0x4631E0, 0x8
+
+gUnknown_84631E8:: @ 84631E8
+ .incbin "baserom.gba", 0x4631E8, 0x30
+
+gUnknown_8463218:: @ 8463218
+ .incbin "baserom.gba", 0x463218, 0x8
+
+gUnknown_8463220:: @ 8463220
+ .incbin "baserom.gba", 0x463220, 0x18
+
+gUnknown_8463238:: @ 8463238
+ .incbin "baserom.gba", 0x463238, 0x24
diff --git a/data/unk_text_util.s b/data/unk_text_util.s
new file mode 100644
index 000000000..5e5ce1a5d
--- /dev/null
+++ b/data/unk_text_util.s
@@ -0,0 +1,5 @@
+ .section .rodata
+ .align 2
+
+gUnknown_8464300:: @ 8464300
+ .incbin "baserom.gba", 0x464300, 0x4C
diff --git a/data/wild_pokemon_area.s b/data/wild_pokemon_area.s
new file mode 100644
index 000000000..26913b7c6
--- /dev/null
+++ b/data/wild_pokemon_area.s
@@ -0,0 +1,14 @@
+ .section .rodata
+ .align 2
+
+gUnknown_8464148:: @ 8464148
+ .incbin "baserom.gba", 0x464148, 0x174
+
+gUnknown_84642BC:: @ 84642BC
+ .incbin "baserom.gba", 0x4642BC, 0x4
+
+gUnknown_84642C0:: @ 84642C0
+ .incbin "baserom.gba", 0x4642C0, 0x34
+
+gUnknown_84642F4:: @ 84642F4
+ .incbin "baserom.gba", 0x4642F4, 0xC
diff --git a/include/constants/songs.h b/include/constants/songs.h
index e31a38fdc..b216ac988 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -250,6 +250,93 @@
#define SE_W287B 245
#define SE_W114 246
#define SE_W063B 247
+#define MUS_ME_ASA 256
+#define MUS_FANFA1 257
+#define MUS_FANFA4 258
+#define MUS_FANFA5 259
+#define MUS_ME_BACHI 260
+#define MUS_ME_WAZA 261
+#define MUS_ME_KINOMI 262
+#define MUS_ME_B_BIG 268
+#define MUS_ME_B_SMALL 269
+#define MUS_ME_WASURE 270
+#define MUS_ME_ZANNEN 271
+#define BGM_FRLG_FOLLOW_ME 272
+#define BGM_FRLG_GAMECORNER 273
+#define BGM_FRLG_ROCKET_HIDEOUT 274
+#define BGM_FRLG_GYM 275
+#define BGM_FRLG_JIGGLYPUFF 276
+#define BGM_FRLG_OPENING 277
+#define BGM_FRLG_TITLE 278
+#define BGM_FRLG_CINNABAR_ISLAND 279
+#define BGM_FRLG_LAVENDER_TOWN 280
+#define BGM_FRLG_HEALING_TEST 281
+#define BGM_FRLG_BICYCLE 282
+#define BGM_FRLG_SUSPICIOUS_EYE 283
+#define BGM_FRLG_GIRL_EYE 284
+#define BGM_FRLG_BOY_EYE 285
+#define BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME 286
+#define BGM_FRLG_VIRIDIAN_FOREST 287
+#define BGM_FRLG_MT_MOON 288
+#define BGM_FRLG_POKEMON_MANSION 289
+#define BGM_FRLG_CREDITS 290
+#define BGM_FRLG_ROUTE_1 291
+#define BGM_FRLG_ROUTE_24 292
+#define BGM_FRLG_ROUTE_3 293
+#define BGM_FRLG_ROUTE_11 294
+#define BGM_FRLG_INDIGO_PLATEAU 295
+#define BGM_FRLG_BATTLE_LEADER 296
+#define BGM_FRLG_BATTLE_TRAINER 297
+#define BGM_FRLG_BATTLE_WILD_POKEMON 298
+#define BGM_FRLG_BATTLE_CHAMPION 299
+#define BGM_FRLG_PALLET_TOWN 300
+#define BGM_FRLG_OAK_LAB 301
+#define BGM_FRLG_PROF_OAK 302
+#define BGM_FRLG_POKEMON_CENTER 303
+#define BGM_FRLG_SS_ANNE 304
+#define BGM_FRLG_SURF 305
+#define BGM_FRLG_POKEMON_TOWER 306
+#define BGM_FRLG_SILPH 307
+#define BGM_FRLG_CERULEAN_CITY 308
+#define BGM_FRLG_CELADON_CITY 309
+#define BGM_FRLG_KACHI_TRAINER 310
+#define BGM_FRLG_KACHI_WILD_POKEMON 311
+#define BGM_FRLG_KACHI_LEADER 312
+#define BGM_FRLG_VERMILION_CITY 313
+#define BGM_FRLG_VIRIDIAN_CITY 314
+#define BGM_FRLG_RIVAL 315
+#define BGM_FRLG_RIVAL_POSTBATTLE 316
+#define BGM_FRLG_ME_POKEDEX_EVAL 317
+#define BGM_FRLG_ME_KEYITEM 318
+#define BGM_FRLG_FANFA_POKEMON_CAUGHT 319
+#define BGM_FRLG_FANFA_TRAINERCARD_PHOTO 320
+#define BGM_FRLG_GAMEFREAK_LOGO 321
+#define BGM_FRLG_CAUGHT_POKEMON 322
+#define BGM_FRLG_GAME_EXPLANATION_START 323
+#define BGM_FRLG_GAME_EXPLANATION_MIDDLE 324
+#define BGM_FRLG_GAME_EXPLANATION_END 325
+#define BGM_FRLG_POKEMON_JUMP 326
+#define BGM_FRLG_UNION_ROOM 327
+#define BGM_FRLG_POKEMON_NETWORK_CENTER 328
+#define BGM_FRLG_MYSTERY_GIFT 329
+#define BGM_FRLG_DODRIO_BERRY_PICK 330
+#define BGM_FRLG_MT_EMBER 331
+#define BGM_FRLG_TEACHY_TV_EPISODE 332
+#define BGM_FRLG_SEVII_ISLANDS 333
+#define BGM_FRLG_TANOBY_RUINS 334
+#define BGM_FRLG_ISLAND_ONE 335
+#define BGM_FRLG_ISLAND_FOUR 336
+#define BGM_FRLG_ISLAND_SIX 337
+#define BGM_FRLG_FLUTE 338
+#define BGM_FRLG_BATTLE_DEOXYS 339
+#define BGM_FRLG_BATTLE_MEWTWO 340
+#define BGM_FRLG_BATTLE_LEGENDARY 341
+#define BGM_FRLG_LEADER_EYE 342
+#define BGM_FRLG_DEOXYS_EYE 343
+#define BGM_FRLG_TRAINER_TOWER 344
+#define BGM_FRLG_HALL_OF_FAME_PALLET_TOWN 345
+#define BGM_FRLG_TEACHY_TV 346
+
#define BGM_STOP 349
#define BGM_TETSUJI 350
#define BGM_FIELD13 351
@@ -385,82 +472,6 @@
#define BGM_BATTLE35 481
#define BGM_BATTLE38 482
#define BGM_BATTLE30 483
-#define BGM_FRLG_FOLLOW_ME 484
-#define BGM_FRLG_GAMECORNER 485
-#define BGM_FRLG_ROCKET_HIDEOUT 486
-#define BGM_FRLG_GYM 487
-#define BGM_FRLG_JIGGLYPUFF 488
-#define BGM_FRLG_OPENING 489
-#define BGM_FRLG_TITLE 490
-#define BGM_FRLG_CINNABAR_ISLAND 491
-#define BGM_FRLG_LAVENDER_TOWN 492
-#define BGM_FRLG_HEALING_TEST 493
-#define BGM_FRLG_BICYCLE 494
-#define BGM_FRLG_SUSPICIOUS_EYE 495
-#define BGM_FRLG_GIRL_EYE 496
-#define BGM_FRLG_BOY_EYE 497
-#define BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME 498
-#define BGM_FRLG_VIRIDIAN_FOREST 499
-#define BGM_FRLG_MT_MOON 500
-#define BGM_FRLG_POKEMON_MANSION 501
-#define BGM_FRLG_CREDITS 502
-#define BGM_FRLG_ROUTE_1 503
-#define BGM_FRLG_ROUTE_24 504
-#define BGM_FRLG_ROUTE_3 505
-#define BGM_FRLG_ROUTE_11 506
-#define BGM_FRLG_INDIGO_PLATEAU 507
-#define BGM_FRLG_BATTLE_LEADER 508
-#define BGM_FRLG_BATTLE_TRAINER 509
-#define BGM_FRLG_BATTLE_WILD_POKEMON 510
-#define BGM_FRLG_BATTLE_CHAMPION 511
-#define BGM_FRLG_PALLET_TOWN 512
-#define BGM_FRLG_OAK_LAB 513
-#define BGM_FRLG_PROF_OAK 514
-#define BGM_FRLG_POKEMON_CENTER 515
-#define BGM_FRLG_SS_ANNE 516
-#define BGM_FRLG_SURF 517
-#define BGM_FRLG_POKEMON_TOWER 518
-#define BGM_FRLG_SILPH 519
-#define BGM_FRLG_CERULEAN_CITY 520
-#define BGM_FRLG_CELADON_CITY 521
-#define BGM_FRLG_KACHI_TRAINER 522
-#define BGM_FRLG_KACHI_WILD_POKEMON 523
-#define BGM_FRLG_KACHI_LEADER 524
-#define BGM_FRLG_VERMILION_CITY 525
-#define BGM_FRLG_VIRIDIAN_CITY 526
-#define BGM_FRLG_RIVAL 527
-#define BGM_FRLG_RIVAL_POSTBATTLE 528
-#define BGM_FRLG_ME_POKEDEX_EVAL 529
-#define BGM_FRLG_ME_KEYITEM 530
-#define BGM_FRLG_FANFA_POKEMON_CAUGHT 531
-#define BGM_FRLG_FANFA_TRAINERCARD_PHOTO 532
-#define BGM_FRLG_GAMEFREAK_LOGO 533
-#define BGM_FRLG_CAUGHT_POKEMON 534
-#define BGM_FRLG_GAME_EXPLANATION_START 535
-#define BGM_FRLG_GAME_EXPLANATION_MIDDLE 536
-#define BGM_FRLG_GAME_EXPLANATION_END 537
-#define BGM_FRLG_POKEMON_JUMP 538
-#define BGM_FRLG_UNION_ROOM 539
-#define BGM_FRLG_POKEMON_NETWORK_CENTER 540
-#define BGM_FRLG_MYSTERY_GIFT 541
-#define BGM_FRLG_DODRIO_BERRY_PICK 542
-#define BGM_FRLG_MT_EMBER 543
-#define BGM_FRLG_TEACHY_TV_EPISODE 544
-#define BGM_FRLG_SEVII_ISLANDS 545
-#define BGM_FRLG_TANOBY_RUINS 546
-#define BGM_FRLG_ISLAND_ONE 547
-#define BGM_FRLG_ISLAND_FOUR 548
-#define BGM_FRLG_ISLAND_SIX 549
-#define BGM_FRLG_FLUTE 550
-#define BGM_FRLG_BATTLE_DEOXYS 551
-#define BGM_FRLG_BATTLE_MEWTWO 552
-#define BGM_FRLG_BATTLE_LEGENDARY 553
-#define BGM_FRLG_LEADER_EYE 554
-#define BGM_FRLG_DEOXYS_EYE 555
-#define BGM_FRLG_TRAINER_TOWER 556
-#define BGM_FRLG_HALL_OF_FAME_PALLET_TOWN 557
-#define BGM_FRLG_TEACHY_TV 558
-
#define BGM_ROUTE_118 0x7FFF // What is this for?
#endif // GUARD_CONSTANTS_SONGS_H
diff --git a/include/constants/species.h b/include/constants/species.h
index f698ada14..9cb239799 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -445,6 +445,9 @@
#define SPECIES_UNOWN_EMARK 438
#define SPECIES_UNOWN_QMARK 439
+#define SPECIES_OLD_UNOWN_EMARK 412
+#define SPECIES_OLD_UNOWN_QMARK 413
+
#define NUM_SPECIES SPECIES_EGG
#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 886bae93c..2f817fb02 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -54,7 +54,7 @@
#define VAR_0x402F 0x402F
#define VAR_0x4030 0x4030
-#define VAR_0x4031 0x4031
+#define VAR_STARTER_MON 0x4031
#define VAR_0x4032 0x4032
#define VAR_ENIGMA_BERRY_AVAILABLE 0x4033
diff --git a/include/decompress.h b/include/decompress.h
index 36672dcfd..c2c4f0e1c 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -18,6 +18,8 @@ void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);
void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
bool8 LoadCompressedObjectPaletteUsingHeap(const struct CompressedSpritePalette *src);
+bool8 sub_800F078(const struct CompressedSpritePalette *src);
+
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index b909566d0..1762faf8e 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -705,4 +705,71 @@ extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni3[];
extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni4[];
extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni5[];
+extern const u8 gOtherText_NewName[];
+extern const u8 gNameChoice_Green[];
+extern const u8 gNameChoice_Red[];
+extern const u8 gNameChoice_Red[];
+extern const u8 gNameChoice_Fire[];
+extern const u8 gNameChoice_Fire[];
+extern const u8 gNameChoice_Gary[];
+extern const u8 gNameChoice_Kaz[];
+extern const u8 gNameChoice_Toru[];
+extern const u8 gNameChoice_Ash[];
+extern const u8 gNameChoice_Kene[];
+extern const u8 gNameChoice_Geki[];
+extern const u8 gNameChoice_Jak[];
+extern const u8 gNameChoice_Janne[];
+extern const u8 gNameChoice_Jonn[];
+extern const u8 gNameChoice_Kamon[];
+extern const u8 gNameChoice_Karl[];
+extern const u8 gNameChoice_Taylor[];
+extern const u8 gNameChoice_Oscar[];
+extern const u8 gNameChoice_Hiro[];
+extern const u8 gNameChoice_Max[];
+extern const u8 gNameChoice_Jon[];
+extern const u8 gNameChoice_Ralph[];
+extern const u8 gNameChoice_Kay[];
+extern const u8 gNameChoice_Tosh[];
+extern const u8 gNameChoice_Roak[];
+extern const u8 gNameChoice_Omi[];
+extern const u8 gNameChoice_Jodi[];
+extern const u8 gNameChoice_Amanda[];
+extern const u8 gNameChoice_Hillary[];
+extern const u8 gNameChoice_Makey[];
+extern const u8 gNameChoice_Michi[];
+extern const u8 gNameChoice_Paula[];
+extern const u8 gNameChoice_June[];
+extern const u8 gNameChoice_Cassie[];
+extern const u8 gNameChoice_Rey[];
+extern const u8 gNameChoice_Seda[];
+extern const u8 gNameChoice_Kiko[];
+extern const u8 gNameChoice_Mina[];
+extern const u8 gNameChoice_Norie[];
+extern const u8 gNameChoice_Sai[];
+extern const u8 gNameChoice_Momo[];
+extern const u8 gNameChoice_Suzi[];
+extern const u8 gNewGame_HelpDocs1[];
+extern const u8 gNewGame_HelpDocs2[];
+extern const u8 gNewGame_HelpDocs3[];
+extern const u8 gNewGame_HelpDocs4[];
+extern const u8 gNewGame_HelpDocs5[];
+extern const u8 gNewGame_HelpDocs6[];
+extern const u8 gNewGame_HelpDocs7[];
+extern const u8 gOakText_AskPlayerGender[];
+extern const u8 gNewGameAdventureIntro1[];
+extern const u8 gNewGameAdventureIntro2[];
+extern const u8 gNewGameAdventureIntro3[];
+extern const u8 gOakText_WelcomeToTheWorld[];
+extern const u8 gOakText_WorldInhabited1[];
+extern const u8 gOakText_WorldInhabited2[];
+extern const u8 gOakText_PetsBattlingStudy[];
+extern const u8 gOakText_TellMeALittleAboutYourself[];
+extern const u8 gOakText_AskPlayerName[];
+extern const u8 gOakText_FinalizePlayerName[];
+extern const u8 gOakText_IntroduceRival[];
+extern const u8 gOakText_AskRivalName[];
+extern const u8 gOakText_ConfirmRivalName[];
+extern const u8 gOakText_RememberRivalName[];
+extern const u8 gOakText_LegendAboutToUnfold[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 2d495fdd5..c1bc8e8c9 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -6,5 +6,6 @@
u8 GetLeadMonIndex(void);
u8 CountDigits(u16 number);
void TV_PrintIntToStringVar(u8, int);
+u16 ScrSpecial_GetStarter(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/help_system.h b/include/help_system.h
index 632788148..3ef5f53e4 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -6,5 +6,6 @@
extern bool8 gUnknown_3005ECC;
void sub_812B484(void);
+void HelpSystem_SetSomeVariable2(u8);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/math_util.h b/include/math_util.h
new file mode 100644
index 000000000..74dbbe98e
--- /dev/null
+++ b/include/math_util.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_MATH_UTIL_H
+#define GUARD_MATH_UTIL_H
+
+s16 sub_80D8B90(s16 y);
+
+#endif //GUARD_MATH_UTIL_H
diff --git a/include/menu.h b/include/menu.h
index b5078df5e..f26c7efde 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -38,5 +38,15 @@ void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSp
void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
void sub_810F4D8(u8 windowId, bool32 someBool);
void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void CreateWindow_SnapRight_StdPal(u8, u8, u8, u8, u16);
+void Menu_PrintHelpSystemUIHeader(const u8 *, const u8 *, u8, u32, u8);
+void PrintTextOnRightSnappedWindow(const u8 *, u32, u8);
+void sub_810F71C(void);
+void sub_810F740(void);
+u8 ProgramAndPlaceMenuCursorOnWindow(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPosition);
+void sub_810FF60(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8);
+
+void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
+bool8 IsBlendTaskActive(void);
#endif // GUARD_MENU_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index e22f89f44..fe8b5b754 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -15,14 +15,19 @@ void sub_8197434(u8 a0, u8 a1);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void sub_8197930(void);
u8 GetPlayerTextSpeed(void);
-void sub_80F6F54(u8, u8);
-u8 sub_80F78A8(void);
+void ClearDialogWindowAndFrame(u8, u8);
+u8 GetTextSpeedSetting(void);
void sub_80F6E9C(void);
-void sub_80F6EE4(u8 windowId, bool8 transfer);
+void DrawDialogueFrame(u8 windowId, bool8 transfer);
void sub_80F7974(const u8 *);
u8 GetStartMenuWindowId(void);
void sub_80F7998(void);
void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void sub_80F6F1C(u8 windowId, bool8 copyNow);
+void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
+void InitStandardTextBoxWindows(void);
+void ResetBg0(void);
+void Menu_LoadStdPalAt(u16);
+void * malloc_and_decompress(const void * src, u32 * size);
+u16 sub_80F796C(void);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/oak_speech.h b/include/oak_speech.h
new file mode 100644
index 000000000..d5d94bc83
--- /dev/null
+++ b/include/oak_speech.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_OAK_SPEECH_H
+#define GUARD_OAK_SPEECH_H
+
+void StartNewGameScene(void);
+
+#endif //GUARD_OAK_SPEECH_H
diff --git a/include/overworld.h b/include/overworld.h
index b32d9cf48..8c32d3e06 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -99,5 +99,6 @@ extern u8 gUnknown_2036E28;
extern bool8 (* gUnknown_3005024)(void);
void SetLastHealLocationWarp(u8 healLocaionId);
void sub_8055864(u8 mapGroup, u8 mapNum);
+void CB2_NewGame(void);
#endif //GUARD_ROM4_H
diff --git a/include/pokeball.h b/include/pokeball.h
index 10a9529b9..5545f8870 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -24,7 +24,8 @@ enum
#define POKEBALL_OPPONENT_SENDOUT 0xFE
u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow);
-void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species);
+void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h);
+u8 sub_804BB98(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h);
u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
void sub_8076918(u8 bank);
void DoHitAnimHealthboxEffect(u8 bank);
diff --git a/include/pokemon.h b/include/pokemon.h
index f1f04c9eb..c08f37b5f 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -673,5 +673,6 @@ void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
void PlayMapChosenOrBattleBGM(u16 songId);
u8 GetMonsStateToDoubles(void);
void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src);
+void sub_803F7D4(u16 trainerSpriteId, u8 battlerPosition);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
index cffc9780b..e65bc85fc 100644
--- a/include/pokemon_3.h
+++ b/include/pokemon_3.h
@@ -5,5 +5,8 @@
const u8* GetTrainerClassNameFromId(u16 trainerId);
const u8* GetTrainerNameFromId(u16 trainerId);
+void * SetUpMonSpriteManagerMaybe(u8, u8);
+void sub_8044D80(void);
+void * sub_8044E00(u8 buffId);
#endif // GUARD_POKEMON_3_H
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
index d49f5b4d6..711ed7da8 100644
--- a/include/scanline_effect.h
+++ b/include/scanline_effect.h
@@ -1,6 +1,48 @@
#ifndef GUARD_SCANLINE_EFFECT_H
#define GUARD_SCANLINE_EFFECT_H
-void remove_some_task(void);
+// DMA control value to transfer a single 16-bit value at HBlank
+#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1)
+#define SCANLINE_EFFECT_DMACNT_32BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_32BIT | DMA_DEST_RELOAD) << 16) | 1)
-#endif //GUARD_SCANLINE_EFFECT_H
+#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG1HOFS (REG_ADDR_BG1HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG1VOFS (REG_ADDR_BG1VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG2HOFS (REG_ADDR_BG2HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG2VOFS (REG_ADDR_BG2VOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG3HOFS (REG_ADDR_BG3HOFS - REG_ADDR_BG0HOFS)
+#define SCANLINE_EFFECT_REG_BG3VOFS (REG_ADDR_BG3VOFS - REG_ADDR_BG0HOFS)
+
+struct ScanlineEffectParams
+{
+ volatile void *dmaDest;
+ u32 dmaControl;
+ u8 initState;
+ u8 unused9;
+};
+
+struct ScanlineEffect
+{
+ void *dmaSrcBuffers[2];
+ volatile void *dmaDest;
+ u32 dmaControl;
+ void (*setFirstScanlineReg)(void);
+ u8 srcBuffer;
+ u8 state;
+ u8 unused16;
+ u8 unused17;
+ u8 waveTaskId;
+};
+
+extern struct ScanlineEffect gScanlineEffect;
+
+extern u16 gScanlineEffectRegBuffers[2][0x3C0];
+
+void ScanlineEffect_Stop(void);
+void ScanlineEffect_Clear(void);
+void ScanlineEffect_SetParams(struct ScanlineEffectParams);
+void ScanlineEffect_InitHBlankDmaTransfer(void);
+u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7);
+
+#endif // GUARD_SCANLINE_EFFECT_H \ No newline at end of file
diff --git a/include/text.h b/include/text.h
index e127f103a..d2c2ecf42 100644
--- a/include/text.h
+++ b/include/text.h
@@ -250,5 +250,7 @@ s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese);
s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
void sub_80062B0(struct Sprite *sprite);
+u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
+void sub_8006398(u8 spriteId);
#endif // GUARD_TEXT_H
diff --git a/include/unknown_task.h b/include/unknown_task.h
deleted file mode 100644
index 429e58aad..000000000
--- a/include/unknown_task.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef GUARD_unknown_task_H
-#define GUARD_unknown_task_H
-
-#include "global.h"
-
-// Exported type declarations
-struct UnknownTaskStruct
-{
- volatile void *dest;
- u32 control;
- u8 unk8;
- u8 unk9;
-};
-
-extern struct UnknownTaskStruct gUnknown_0831AC70;
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-void remove_some_task(void);
-void sub_80BA038(struct UnknownTaskStruct arg0);
-void sub_80BA0A8(void);
-
-#endif // GUARD_unknown_task_H
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index 2186e0b4f..b4c42116a 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -43,5 +43,6 @@ u16 GetLocalWildMon(bool8 *isWaterMon);
u16 GetLocalWaterMon(void);
bool8 UpdateRepelCounter(void);
void sub_8082740(u8);
+u8 GetUnownLetterByPersonality(u32 personality);
#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/ld_script.txt b/ld_script.txt
index b342f0b8a..090b18fa1 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -106,7 +106,7 @@ SECTIONS {
src/scrcmd.o(.text);
asm/field_control_avatar.o(.text);
asm/event_data.o(.text);
- asm/coord_event_weather.o(.text);
+ src/coord_event_weather.o(.text);
asm/field_tasks.o(.text);
asm/start_menu.o(.text);
asm/tileset_anims.o(.text);
@@ -128,7 +128,7 @@ SECTIONS {
asm/trainer_see.o(.text);
asm/wild_encounter.o(.text);
asm/field_effect.o(.text);
- asm/unknown_task.o(.text);
+ src/scanline_effect.o(.text);
asm/option_menu.o(.text);
asm/pokedex.o(.text);
asm/trainer_card.o(.text);
@@ -227,8 +227,8 @@ SECTIONS {
asm/help_system_812B1E0.o(.text);
src/quest_log_battle.o(.text);
src/fame_checker.o(.text);
- asm/menu2.o(.text);
- asm/oak_speech.o(.text);
+ src/menu2.o(.text);
+ src/oak_speech.o(.text);
asm/tm_case.o(.text);
asm/menu_indicators.o(.text);
asm/pokedex_area_markers.o(.text);
@@ -240,7 +240,7 @@ SECTIONS {
asm/itemfinder.o(.text);
asm/buy_menu_helpers.o(.text);
asm/slot_machine.o(.text);
- asm/roamer.o(.text);
+ src/roamer.o(.text);
asm/mystery_gift_menu.o(.text);
asm/link_rfu_4.o(.text);
src/mevent.o(.text);
@@ -370,9 +370,22 @@ SECTIONS {
src/fieldmap.o(.rodata);
src/metatile_behavior.o(.rodata);
data/metatile_behavior.o(.rodata);
- data/data_835B488.o(.rodata);
+ data/field_door.o(.rodata);
+ data/field_player_avatar.o(.rodata);
+ data/field_map_obj.o(.rodata);
+ data/field_ground_effect.o(.rodata);
+ data/map_obj_80688E4.o(.rodata);
src/scrcmd.o(.rodata);
- data/data_835B488.o(.rodata.83A72A0);
+ src/coord_event_weather.o(.rodata);
+ data/field_tasks.o(.rodata);
+ data/start_menu.o(.rodata);
+ data/tileset_anims.o(.rodata);
+ data/palette.o(.rodata);
+ src/sound.o(.rodata);
+ data/battle_anim.o(.rodata);
+ data/title_screen.o(.rodata);
+ data/field_weather.o(.rodata);
+ data/data_835B488.o(.rodata);
src/battle_ai_script_commands.o(.rodata);
data/data_83F5738.o(.rodata);
src/save.o(.rodata);
@@ -382,7 +395,22 @@ SECTIONS {
src/quest_log.o(.rodata);
data/data_83FECCC.o(.rodata.8456C74);
src/fame_checker.o(.rodata);
- data/data_845FD54.o(.rodata);
+ src/menu2.o(.rodata);
+ src/oak_speech.o(.rodata);
+ data/tm_case.o(.rodata);
+ data/menu_indicators.o(.rodata);
+ data/pokedex_area_markers.o(.rodata);
+ data/pokemon_summary_screen.o(.rodata);
+ data/help_system.o(.rodata);
+ data/wild_pokemon_area.o(.rodata);
+ data/unk_text_util.o(.rodata);
+ data/berry_pouch.o(.rodata);
+ data/itemfinder.o(.rodata);
+ data/buy_menu_helpers.o(.rodata);
+ data/slot_machine.o(.rodata);
+ src/roamer.o(.rodata);
+ data/mystery_gift_menu.o(.rodata);
+ data/link_rfu_4.o(.rodata);
src/mevent.o(.rodata);
src/mevent_server_helpers.o(.rodata);
src/mevent_server.o(.rodata);
diff --git a/src/coord_event_weather.c b/src/coord_event_weather.c
new file mode 100644
index 000000000..4dbdd574b
--- /dev/null
+++ b/src/coord_event_weather.c
@@ -0,0 +1,47 @@
+#include "global.h"
+
+void nullsub_27(void) {}
+void nullsub_28(void) {}
+void nullsub_29(void) {}
+void nullsub_30(void) {}
+void nullsub_31(void) {}
+void nullsub_32(void) {}
+void nullsub_33(void) {}
+void nullsub_34(void) {}
+void nullsub_35(void) {}
+void nullsub_36(void) {}
+void nullsub_37(void) {}
+void nullsub_38(void) {}
+void nullsub_39(void) {}
+
+struct {
+ u8 weatherId;
+ void (*callback)(void);
+} const gUnknown_83A72A8[] = {
+ {0x01, nullsub_27},
+ {0x02, nullsub_28},
+ {0x03, nullsub_29},
+ {0x04, nullsub_30},
+ {0x05, nullsub_31},
+ {0x06, nullsub_32},
+ {0x07, nullsub_33},
+ {0x08, nullsub_34},
+ {0x09, nullsub_35},
+ {0x0a, nullsub_36},
+ {0x0b, nullsub_37},
+ {0x14, nullsub_38},
+ {0x15, nullsub_39}
+};
+
+void trigger_activate_weather(u8 weatherId)
+{
+ u8 i;
+ for (i = 0; i < NELEMS(gUnknown_83A72A8); i++)
+ {
+ if (gUnknown_83A72A8[i].weatherId == weatherId)
+ {
+ gUnknown_83A72A8[i].callback();
+ return;
+ }
+ }
+}
diff --git a/src/fame_checker.c b/src/fame_checker.c
index bbbe02c58..29b888a32 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -779,7 +779,7 @@ static void GetPickModeText(void)
if (HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE)
offset = NUM_FAMECHECKER_PERSONS;
StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[who] + offset]);
- AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3);
+ AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
}
}
@@ -790,7 +790,7 @@ static void PrintSelectedNameInBrightGreen(u8 taskId)
u16 cursorPos = FameCheckerGetCursorY();
FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
StringExpandPlaceholders(gStringVar4, sFameCheckerFlavorTextPointers[sFameCheckerData->unlockedPersons[cursorPos] * 6 + data[1]]);
- AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3);
+ AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
}
@@ -803,7 +803,7 @@ static void WipeMsgBoxAndTransfer(void)
static void Setup_DrawMsgAndListBoxes(void)
{
sub_80F6E9C();
- sub_80F6EE4(FCWINDOWID_MSGBOX, TRUE);
+ DrawDialogueFrame(FCWINDOWID_MSGBOX, TRUE);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_LIST);
}
@@ -1009,7 +1009,7 @@ static void FCSetup_ClearVideoRegisters(void)
static void FCSetup_ResetTasksAndSpriteResources(void)
{
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
dp13_810BB8C();
diff --git a/src/main.c b/src/main.c
index 068cc8578..bfab49c49 100644
--- a/src/main.c
+++ b/src/main.c
@@ -29,7 +29,7 @@ extern void MapMusicMain(void);
extern void EnableInterrupts(u16);
extern void sub_800DD28(void);
extern u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
-extern void remove_some_task(void);
+extern void ScanlineEffect_Stop(void);
extern void sub_80F50F4(void);
extern bool32 sub_80F5118(void);
extern bool8 sub_813B870(void);
@@ -441,7 +441,7 @@ void DoSoftReset(void)
{
REG_IME = 0;
m4aSoundVSyncOff();
- remove_some_task();
+ ScanlineEffect_Stop();
DmaStop(1);
DmaStop(2);
DmaStop(3);
diff --git a/src/menews_jisan.c b/src/menews_jisan.c
index b4fe080bf..530762990 100644
--- a/src/menews_jisan.c
+++ b/src/menews_jisan.c
@@ -10,76 +10,24 @@ static u32 sub_8146E0C(struct MysteryEventStruct *);
static void sub_8146DA0(struct MysteryEventStruct *);
static void sub_8146D94(struct MysteryEventStruct *);
-#ifdef NONMATCHING
void sub_8146C30(u32 a0)
{
struct MysteryEventStruct *r5 = sub_8143D94();
r5->unk_0_0 = a0;
- asm_comment("The switch logic does not match. Specifically, the \"bhi\" is replaced with a \"bls\" and the comparisons with 1 and 3 are swapped chronologically.");
switch (a0)
{
- case 0:
- r5->unk_1 = (Random() % 15) + 16;
- break;
- case 1:
- break;
- case 2:
- break;
- case 3:
- r5->unk_1 = (Random() % 15) + 1;
- break;
+ case 0:
+ break;
+ case 1:
+ case 2:
+ r5->unk_1 = (Random() % 15) + 16;
+ break;
+ case 3:
+ r5->unk_1 = (Random() % 15) + 1;
+ break;
}
}
-#else
-NAKED
-void sub_8146C30(u32 a0)
-{
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tadds r4, r0, 0\n"
- "\tbl sub_8143D94\n"
- "\tadds r5, r0, 0\n"
- "\tmovs r0, 0x3\n"
- "\tadds r1, r4, 0\n"
- "\tands r1, r0\n"
- "\tldrb r2, [r5]\n"
- "\tmovs r0, 0x4\n"
- "\tnegs r0, r0\n"
- "\tands r0, r2\n"
- "\torrs r0, r1\n"
- "\tstrb r0, [r5]\n"
- "\tcmp r4, 0x2\n"
- "\tbhi _08146C56\n"
- "\tcmp r4, 0x1\n"
- "\tbcs _08146C5C\n"
- "\tb _08146C80\n"
- "_08146C56:\n"
- "\tcmp r4, 0x3\n"
- "\tbeq _08146C6E\n"
- "\tb _08146C80\n"
- "_08146C5C:\n"
- "\tbl Random\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmovs r1, 0xF\n"
- "\tbl __umodsi3\n"
- "\tadds r0, 0x10\n"
- "\tb _08146C7E\n"
- "_08146C6E:\n"
- "\tbl Random\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tmovs r1, 0xF\n"
- "\tbl __umodsi3\n"
- "\tadds r0, 0x1\n"
- "_08146C7E:\n"
- "\tstrb r0, [r5, 0x1]\n"
- "_08146C80:\n"
- "\tpop {r4,r5}\n"
- "\tpop {r0}\n"
- "\tbx r0");
-}
-#endif
void sub_8146C88(void)
{
@@ -118,26 +66,26 @@ u16 sub_8146CE8(void)
switch (r5)
{
- case 0:
- break;
- case 1:
- *r6 = sub_8146D74(r4);
- break;
- case 2:
- *r6 = sub_8146D74(r4);
- break;
- case 3:
- break;
- case 4:
- *r6 = sub_8146D74(r4);
- sub_8146DA0(r4);
- break;
- case 5:
- *r6 = sub_8146D74(r4);
- sub_8146D94(r4);
- break;
- case 6:
- break;
+ case 0:
+ break;
+ case 1:
+ *r6 = sub_8146D74(r4);
+ break;
+ case 2:
+ *r6 = sub_8146D74(r4);
+ break;
+ case 3:
+ break;
+ case 4:
+ *r6 = sub_8146D74(r4);
+ sub_8146DA0(r4);
+ break;
+ case 5:
+ *r6 = sub_8146D74(r4);
+ sub_8146D94(r4);
+ break;
+ case 6:
+ break;
}
return r5;
@@ -182,18 +130,18 @@ static u32 sub_8146E0C(struct MysteryEventStruct *a0)
r0 = *a0;
switch (r0.unk_0_0)
{
- case 0:
- return 3;
- case 1:
- return 1;
- case 2:
- return 2;
- case 3:
- if ((u8)r0.unk_0_2 < 3)
- return 4;
- return 5;
- default:
- AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/menews_jisan.c", 383);
- return 0;
+ case 0:
+ return 3;
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 3:
+ if ((u8)r0.unk_0_2 < 3)
+ return 4;
+ return 5;
+ default:
+ AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/menews_jisan.c", 383);
+ return 0;
}
}
diff --git a/src/menu2.c b/src/menu2.c
new file mode 100644
index 000000000..ec244b8f7
--- /dev/null
+++ b/src/menu2.c
@@ -0,0 +1,851 @@
+#include "global.h"
+#include "text.h"
+#include "gpu_regs.h"
+#include "task.h"
+#include "wild_encounter.h"
+#include "string_util.h"
+#include "constants/species.h"
+
+static void Task_SmoothBlendLayers(u8 taskId);
+
+static const u8 gUnknown_845FD54[][5] = {
+ [SPECIES_BULBASAUR - 1] = {0x16, 0x1b, 0x30, 0x16, 0x29},
+ [SPECIES_IVYSAUR - 1] = {0x14, 0x1b, 0x30, 0x15, 0x2a},
+ [SPECIES_VENUSAUR - 1] = {0x1b, 0x20, 0x20, 0x1b, 0x33},
+ [SPECIES_CHARMANDER - 1] = {0x14, 0x0f, 0x38, 0x13, 0x1e},
+ [SPECIES_CHARMELEON - 1] = {0x0d, 0x11, 0x30, 0x0f, 0x22},
+ [SPECIES_CHARIZARD - 1] = {0x1b, 0x07, 0x28, 0x1a, 0x19},
+ [SPECIES_SQUIRTLE - 1] = {0x19, 0x13, 0x30, 0x1a, 0x22},
+ [SPECIES_WARTORTLE - 1] = {0x16, 0x13, 0x30, 0x17, 0x21},
+ [SPECIES_BLASTOISE - 1] = {0x12, 0x08, 0x28, 0x15, 0x19},
+ [SPECIES_CATERPIE - 1] = {0x15, 0x14, 0x30, 0x13, 0x24},
+ [SPECIES_METAPOD - 1] = {0x13, 0x1d, 0x30, 0x18, 0x2a},
+ [SPECIES_BUTTERFREE - 1] = {0x12, 0x1b, 0x08, 0x12, 0x2a},
+ [SPECIES_WEEDLE - 1] = {0x16, 0x1c, 0x30, 0x15, 0x2b},
+ [SPECIES_KAKUNA - 1] = {0x19, 0x13, 0x30, 0x1a, 0x24},
+ [SPECIES_BEEDRILL - 1] = {0x19, 0x16, 0x08, 0x19, 0x25},
+ [SPECIES_PIDGEY - 1] = {0x15, 0x12, 0x30, 0x12, 0x1e},
+ [SPECIES_PIDGEOTTO - 1] = {0x24, 0x0e, 0x30, 0x1f, 0x1e},
+ [SPECIES_PIDGEOT - 1] = {0x0c, 0x13, 0x08, 0x0a, 0x23},
+ [SPECIES_RATTATA - 1] = {0x17, 0x1e, 0x30, 0x18, 0x2d},
+ [SPECIES_RATICATE - 1] = {0x12, 0x14, 0x30, 0x10, 0x26},
+ [SPECIES_SPEAROW - 1] = {0x15, 0x14, 0x30, 0x15, 0x1f},
+ [SPECIES_FEAROW - 1] = {0x0c, 0x27, 0x00, 0x0b, 0x3f},
+ [SPECIES_EKANS - 1] = {0x11, 0x0f, 0x30, 0x14, 0x1d},
+ [SPECIES_ARBOK - 1] = {0x1b, 0x01, 0x28, 0x1d, 0x10},
+ [SPECIES_PIKACHU - 1] = {0x19, 0x13, 0x30, 0x1a, 0x1f},
+ [SPECIES_RAICHU - 1] = {0x19, 0x14, 0x28, 0x1c, 0x22},
+ [SPECIES_SANDSHREW - 1] = {0x17, 0x16, 0x30, 0x18, 0x25},
+ [SPECIES_SANDSLASH - 1] = {0x11, 0x13, 0x28, 0x13, 0x22},
+ [SPECIES_NIDORAN_F - 1] = {0x16, 0x15, 0x30, 0x18, 0x21},
+ [SPECIES_NIDORINA - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x28},
+ [SPECIES_NIDOQUEEN - 1] = {0x10, 0x0b, 0x28, 0x13, 0x1c},
+ [SPECIES_NIDORAN_M - 1] = {0x15, 0x22, 0x28, 0x15, 0x31},
+ [SPECIES_NIDORINO - 1] = {0x13, 0x1e, 0x28, 0x1b, 0x2d},
+ [SPECIES_NIDOKING - 1] = {0x12, 0x15, 0x28, 0x13, 0x27},
+ [SPECIES_CLEFAIRY - 1] = {0x19, 0x14, 0x30, 0x1b, 0x24},
+ [SPECIES_CLEFABLE - 1] = {0x1c, 0x12, 0x30, 0x1d, 0x21},
+ [SPECIES_VULPIX - 1] = {0x10, 0x16, 0x30, 0x0e, 0x25},
+ [SPECIES_NINETALES - 1] = {0x28, 0x10, 0x28, 0x27, 0x1e},
+ [SPECIES_JIGGLYPUFF - 1] = {0x1d, 0x15, 0x30, 0x1e, 0x25},
+ [SPECIES_WIGGLYTUFF - 1] = {0x1a, 0x12, 0x30, 0x1c, 0x22},
+ [SPECIES_ZUBAT - 1] = {0x14, 0x1d, 0x08, 0x14, 0x29},
+ [SPECIES_GOLBAT - 1] = {0x23, 0x1a, 0x00, 0x21, 0x2e},
+ [SPECIES_ODDISH - 1] = {0x1d, 0x20, 0x28, 0x1d, 0x2b},
+ [SPECIES_GLOOM - 1] = {0x1c, 0x18, 0x28, 0x1c, 0x27},
+ [SPECIES_VILEPLUME - 1] = {0x1c, 0x1e, 0x28, 0x1d, 0x2a},
+ [SPECIES_PARAS - 1] = {0x1d, 0x1a, 0x30, 0x1c, 0x27},
+ [SPECIES_PARASECT - 1] = {0x1e, 0x1c, 0x28, 0x20, 0x2e},
+ [SPECIES_VENONAT - 1] = {0x1b, 0x16, 0x10, 0x1a, 0x29},
+ [SPECIES_VENOMOTH - 1] = {0x12, 0x19, 0x08, 0x16, 0x27},
+ [SPECIES_DIGLETT - 1] = {0x1e, 0x16, 0x30, 0x1c, 0x23},
+ [SPECIES_DUGTRIO - 1] = {0x1a, 0x11, 0x30, 0x1a, 0x1f},
+ [SPECIES_MEOWTH - 1] = {0x1c, 0x16, 0x30, 0x1c, 0x23},
+ [SPECIES_PERSIAN - 1] = {0x13, 0x13, 0x30, 0x13, 0x21},
+ [SPECIES_PSYDUCK - 1] = {0x1c, 0x13, 0x30, 0x17, 0x29},
+ [SPECIES_GOLDUCK - 1] = {0x17, 0x12, 0x28, 0x17, 0x22},
+ [SPECIES_MANKEY - 1] = {0x1c, 0x15, 0x30, 0x1b, 0x23},
+ [SPECIES_PRIMEAPE - 1] = {0x1e, 0x16, 0x30, 0x1a, 0x27},
+ [SPECIES_GROWLITHE - 1] = {0x14, 0x17, 0x30, 0x14, 0x24},
+ [SPECIES_ARCANINE - 1] = {0x0f, 0x09, 0x28, 0x0c, 0x19},
+ [SPECIES_POLIWAG - 1] = {0x15, 0x14, 0x30, 0x13, 0x1f},
+ [SPECIES_POLIWHIRL - 1] = {0x1f, 0x10, 0x30, 0x1e, 0x17},
+ [SPECIES_POLIWRATH - 1] = {0x22, 0x0c, 0x30, 0x21, 0x18},
+ [SPECIES_ABRA - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x21},
+ [SPECIES_KADABRA - 1] = {0x1b, 0x12, 0x30, 0x1c, 0x25},
+ [SPECIES_ALAKAZAM - 1] = {0x1c, 0x11, 0x28, 0x1d, 0x26},
+ [SPECIES_MACHOP - 1] = {0x1b, 0x11, 0x30, 0x1b, 0x1e},
+ [SPECIES_MACHOKE - 1] = {0x1d, 0x11, 0x30, 0x1d, 0x1f},
+ [SPECIES_MACHAMP - 1] = {0x1a, 0x0d, 0x28, 0x1c, 0x1b},
+ [SPECIES_BELLSPROUT - 1] = {0x15, 0x0e, 0x30, 0x0e, 0x1c},
+ [SPECIES_WEEPINBELL - 1] = {0x1a, 0x1c, 0x10, 0x15, 0x32},
+ [SPECIES_VICTREEBEL - 1] = {0x1e, 0x0f, 0x30, 0x1c, 0x1b},
+ [SPECIES_TENTACOOL - 1] = {0x1a, 0x15, 0x30, 0x1e, 0x26},
+ [SPECIES_TENTACRUEL - 1] = {0x1b, 0x10, 0x28, 0x1c, 0x26},
+ [SPECIES_GEODUDE - 1] = {0x1c, 0x20, 0x28, 0x1d, 0x2d},
+ [SPECIES_GRAVELER - 1] = {0x1d, 0x19, 0x28, 0x1e, 0x26},
+ [SPECIES_GOLEM - 1] = {0x19, 0x1b, 0x28, 0x1c, 0x27},
+ [SPECIES_PONYTA - 1] = {0x0f, 0x11, 0x30, 0x0e, 0x23},
+ [SPECIES_RAPIDASH - 1] = {0x2f, 0x0f, 0x28, 0x2b, 0x1e},
+ [SPECIES_SLOWPOKE - 1] = {0x14, 0x1f, 0x28, 0x15, 0x2f},
+ [SPECIES_SLOWBRO - 1] = {0x0e, 0x0d, 0x28, 0x0c, 0x1f},
+ [SPECIES_MAGNEMITE - 1] = {0x20, 0x1b, 0x10, 0x1f, 0x29},
+ [SPECIES_MAGNETON - 1] = {0x1f, 0x14, 0x08, 0x1f, 0x22},
+ [SPECIES_FARFETCHD - 1] = {0x16, 0x14, 0x30, 0x16, 0x29},
+ [SPECIES_DODUO - 1] = {0x11, 0x16, 0x30, 0x0d, 0x2c},
+ [SPECIES_DODRIO - 1] = {0x1d, 0x04, 0x28, 0x0e, 0x07},
+ [SPECIES_SEEL - 1] = {0x1b, 0x24, 0x20, 0x17, 0x35},
+ [SPECIES_DEWGONG - 1] = {0x12, 0x0a, 0x30, 0x0e, 0x1a},
+ [SPECIES_GRIMER - 1] = {0x1f, 0x10, 0x30, 0x1d, 0x25},
+ [SPECIES_MUK - 1] = {0x17, 0x0f, 0x30, 0x19, 0x22},
+ [SPECIES_SHELLDER - 1] = {0x1a, 0x18, 0x30, 0x17, 0x29},
+ [SPECIES_CLOYSTER - 1] = {0x19, 0x1e, 0x28, 0x1d, 0x2c},
+ [SPECIES_GASTLY - 1] = {0x1a, 0x1f, 0x08, 0x19, 0x30},
+ [SPECIES_HAUNTER - 1] = {0x20, 0x14, 0x08, 0x1d, 0x26},
+ [SPECIES_GENGAR - 1] = {0x1a, 0x16, 0x30, 0x19, 0x28},
+ [SPECIES_ONIX - 1] = {0x1f, 0x24, 0x20, 0x28, 0x36},
+ [SPECIES_DROWZEE - 1] = {0x1a, 0x0e, 0x30, 0x1a, 0x1e},
+ [SPECIES_HYPNO - 1] = {0x1c, 0x12, 0x30, 0x19, 0x24},
+ [SPECIES_KRABBY - 1] = {0x1d, 0x1d, 0x30, 0x1a, 0x2b},
+ [SPECIES_KINGLER - 1] = {0x1e, 0x1f, 0x28, 0x1c, 0x30},
+ [SPECIES_VOLTORB - 1] = {0x1c, 0x1b, 0x30, 0x1b, 0x2b},
+ [SPECIES_ELECTRODE - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x2e},
+ [SPECIES_EXEGGCUTE - 1] = {0x21, 0x17, 0x30, 0x20, 0x24},
+ [SPECIES_EXEGGUTOR - 1] = {0x1c, 0x17, 0x28, 0x1b, 0x25},
+ [SPECIES_CUBONE - 1] = {0x1b, 0x12, 0x30, 0x1b, 0x22},
+ [SPECIES_MAROWAK - 1] = {0x14, 0x0f, 0x30, 0x11, 0x23},
+ [SPECIES_HITMONLEE - 1] = {0x2e, 0x11, 0x30, 0x28, 0x22},
+ [SPECIES_HITMONCHAN - 1] = {0x22, 0x0e, 0x30, 0x1e, 0x1d},
+ [SPECIES_LICKITUNG - 1] = {0x14, 0x11, 0x30, 0x14, 0x24},
+ [SPECIES_KOFFING - 1] = {0x1e, 0x14, 0x10, 0x1d, 0x20},
+ [SPECIES_WEEZING - 1] = {0x11, 0x0d, 0x10, 0x0f, 0x1c},
+ [SPECIES_RHYHORN - 1] = {0x0e, 0x23, 0x20, 0x14, 0x33},
+ [SPECIES_RHYDON - 1] = {0x0d, 0x12, 0x28, 0x17, 0x22},
+ [SPECIES_CHANSEY - 1] = {0x1a, 0x0d, 0x30, 0x1a, 0x1a},
+ [SPECIES_TANGELA - 1] = {0x1c, 0x18, 0x30, 0x1d, 0x29},
+ [SPECIES_KANGASKHAN - 1] = {0x1b, 0x06, 0x28, 0x1c, 0x14},
+ [SPECIES_HORSEA - 1] = {0x1c, 0x14, 0x30, 0x16, 0x23},
+ [SPECIES_SEADRA - 1] = {0x10, 0x17, 0x30, 0x09, 0x2a},
+ [SPECIES_GOLDEEN - 1] = {0x16, 0x23, 0x20, 0x15, 0x34},
+ [SPECIES_SEAKING - 1] = {0x16, 0x0f, 0x30, 0x10, 0x18},
+ [SPECIES_STARYU - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x26},
+ [SPECIES_STARMIE - 1] = {0x1d, 0x13, 0x30, 0x1b, 0x20},
+ [SPECIES_MR_MIME - 1] = {0x24, 0x11, 0x30, 0x25, 0x1e},
+ [SPECIES_SCYTHER - 1] = {0x10, 0x19, 0x28, 0x12, 0x27},
+ [SPECIES_JYNX - 1] = {0x1b, 0x0f, 0x30, 0x19, 0x1c},
+ [SPECIES_ELECTABUZZ - 1] = {0x14, 0x11, 0x30, 0x17, 0x20},
+ [SPECIES_MAGMAR - 1] = {0x10, 0x0e, 0x30, 0x0b, 0x19},
+ [SPECIES_PINSIR - 1] = {0x1d, 0x1c, 0x28, 0x20, 0x2b},
+ [SPECIES_TAUROS - 1] = {0x11, 0x1d, 0x28, 0x13, 0x2e},
+ [SPECIES_MAGIKARP - 1] = {0x16, 0x15, 0x30, 0x13, 0x23},
+ [SPECIES_GYARADOS - 1] = {0x0b, 0x18, 0x28, 0x16, 0x29},
+ [SPECIES_LAPRAS - 1] = {0x16, 0x08, 0x28, 0x15, 0x16},
+ [SPECIES_DITTO - 1] = {0x24, 0x12, 0x30, 0x1f, 0x20},
+ [SPECIES_EEVEE - 1] = {0x16, 0x16, 0x30, 0x16, 0x23},
+ [SPECIES_VAPOREON - 1] = {0x18, 0x23, 0x28, 0x18, 0x30},
+ [SPECIES_JOLTEON - 1] = {0x14, 0x1b, 0x30, 0x16, 0x28},
+ [SPECIES_FLAREON - 1] = {0x16, 0x17, 0x30, 0x14, 0x25},
+ [SPECIES_PORYGON - 1] = {0x18, 0x12, 0x30, 0x10, 0x23},
+ [SPECIES_OMANYTE - 1] = {0x1d, 0x1d, 0x30, 0x1c, 0x2b},
+ [SPECIES_OMASTAR - 1] = {0x16, 0x1a, 0x30, 0x19, 0x2d},
+ [SPECIES_KABUTO - 1] = {0x1b, 0x16, 0x30, 0x1a, 0x27},
+ [SPECIES_KABUTOPS - 1] = {0x15, 0x11, 0x30, 0x15, 0x1f},
+ [SPECIES_AERODACTYL - 1] = {0x13, 0x1d, 0x00, 0x14, 0x30},
+ [SPECIES_SNORLAX - 1] = {0x35, 0x09, 0x30, 0x2e, 0x14},
+ [SPECIES_ARTICUNO - 1] = {0x18, 0x0b, 0x18, 0x17, 0x17},
+ [SPECIES_ZAPDOS - 1] = {0x0e, 0x0e, 0x10, 0x04, 0x28},
+ [SPECIES_MOLTRES - 1] = {0x0b, 0x2a, 0x08, 0x0b, 0x38},
+ [SPECIES_DRATINI - 1] = {0x0d, 0x12, 0x30, 0x0b, 0x21},
+ [SPECIES_DRAGONAIR - 1] = {0x18, 0x0e, 0x30, 0x13, 0x1c},
+ [SPECIES_DRAGONITE - 1] = {0x1b, 0x07, 0x18, 0x19, 0x17},
+ [SPECIES_MEWTWO - 1] = {0x2b, 0x09, 0x28, 0x2c, 0x18},
+ [SPECIES_MEW - 1] = {0x19, 0x14, 0x10, 0x1f, 0x21},
+ [SPECIES_CHIKORITA - 1] = {0x1b, 0x17, 0x30, 0x1b, 0x24},
+ [SPECIES_BAYLEEF - 1] = {0x1d, 0x10, 0x30, 0x20, 0x1d},
+ [SPECIES_MEGANIUM - 1] = {0x05, 0x0d, 0x28, 0x0d, 0x1b},
+ [SPECIES_CYNDAQUIL - 1] = {0x11, 0x1b, 0x30, 0x14, 0x27},
+ [SPECIES_QUILAVA - 1] = {0x25, 0x18, 0x30, 0x27, 0x26},
+ [SPECIES_TYPHLOSION - 1] = {0x09, 0x10, 0x28, 0x10, 0x1c},
+ [SPECIES_TOTODILE - 1] = {0x16, 0x10, 0x30, 0x19, 0x20},
+ [SPECIES_CROCONAW - 1] = {0x16, 0x10, 0x30, 0x18, 0x21},
+ [SPECIES_FERALIGATR - 1] = {0x0e, 0x0a, 0x28, 0x08, 0x1a},
+ [SPECIES_SENTRET - 1] = {0x1e, 0x0a, 0x30, 0x1d, 0x15},
+ [SPECIES_FURRET - 1] = {0x21, 0x0e, 0x30, 0x21, 0x19},
+ [SPECIES_HOOTHOOT - 1] = {0x1d, 0x15, 0x30, 0x1c, 0x24},
+ [SPECIES_NOCTOWL - 1] = {0x19, 0x0e, 0x30, 0x18, 0x1c},
+ [SPECIES_LEDYBA - 1] = {0x1b, 0x15, 0x30, 0x1c, 0x24},
+ [SPECIES_LEDIAN - 1] = {0x18, 0x12, 0x10, 0x1c, 0x21},
+ [SPECIES_SPINARAK - 1] = {0x20, 0x20, 0x28, 0x20, 0x2d},
+ [SPECIES_ARIADOS - 1] = {0x17, 0x23, 0x28, 0x15, 0x30},
+ [SPECIES_CROBAT - 1] = {0x22, 0x1e, 0x08, 0x23, 0x2b},
+ [SPECIES_CHINCHOU - 1] = {0x1f, 0x1d, 0x30, 0x1f, 0x29},
+ [SPECIES_LANTURN - 1] = {0x10, 0x23, 0x28, 0x19, 0x33},
+ [SPECIES_PICHU - 1] = {0x1e, 0x17, 0x30, 0x1e, 0x24},
+ [SPECIES_CLEFFA - 1] = {0x1c, 0x18, 0x30, 0x1e, 0x26},
+ [SPECIES_IGGLYBUFF - 1] = {0x1f, 0x19, 0x30, 0x1f, 0x24},
+ [SPECIES_TOGEPI - 1] = {0x21, 0x15, 0x30, 0x1f, 0x20},
+ [SPECIES_TOGETIC - 1] = {0x1b, 0x10, 0x30, 0x1c, 0x1c},
+ [SPECIES_NATU - 1] = {0x1c, 0x17, 0x30, 0x15, 0x21},
+ [SPECIES_XATU - 1] = {0x1b, 0x08, 0x30, 0x19, 0x14},
+ [SPECIES_MAREEP - 1] = {0x16, 0x15, 0x30, 0x15, 0x24},
+ [SPECIES_FLAAFFY - 1] = {0x19, 0x12, 0x30, 0x18, 0x21},
+ [SPECIES_AMPHAROS - 1] = {0x0f, 0x0a, 0x30, 0x10, 0x1b},
+ [SPECIES_BELLOSSOM - 1] = {0x1f, 0x13, 0x30, 0x1f, 0x20},
+ [SPECIES_MARILL - 1] = {0x1d, 0x15, 0x30, 0x1d, 0x22},
+ [SPECIES_AZUMARILL - 1] = {0x1a, 0x12, 0x30, 0x17, 0x1f},
+ [SPECIES_SUDOWOODO - 1] = {0x20, 0x10, 0x30, 0x20, 0x1f},
+ [SPECIES_POLITOED - 1] = {0x1d, 0x0f, 0x30, 0x1e, 0x20},
+ [SPECIES_HOPPIP - 1] = {0x23, 0x25, 0x08, 0x25, 0x33},
+ [SPECIES_SKIPLOOM - 1] = {0x1e, 0x18, 0x08, 0x1c, 0x27},
+ [SPECIES_JUMPLUFF - 1] = {0x1d, 0x21, 0x08, 0x20, 0x2f},
+ [SPECIES_AIPOM - 1] = {0x1e, 0x29, 0x18, 0x1e, 0x35},
+ [SPECIES_SUNKERN - 1] = {0x1f, 0x20, 0x08, 0x24, 0x2e},
+ [SPECIES_SUNFLORA - 1] = {0x1c, 0x0c, 0x30, 0x1b, 0x19},
+ [SPECIES_YANMA - 1] = {0x1b, 0x28, 0x08, 0x16, 0x35},
+ [SPECIES_WOOPER - 1] = {0x1d, 0x13, 0x30, 0x1f, 0x21},
+ [SPECIES_QUAGSIRE - 1] = {0x15, 0x09, 0x30, 0x12, 0x18},
+ [SPECIES_ESPEON - 1] = {0x11, 0x1b, 0x30, 0x11, 0x29},
+ [SPECIES_UMBREON - 1] = {0x23, 0x15, 0x30, 0x23, 0x22},
+ [SPECIES_MURKROW - 1] = {0x24, 0x13, 0x30, 0x20, 0x22},
+ [SPECIES_SLOWKING - 1] = {0x1e, 0x13, 0x28, 0x1d, 0x25},
+ [SPECIES_MISDREAVUS - 1] = {0x28, 0x21, 0x08, 0x26, 0x2e},
+ [SPECIES_UNOWN - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21},
+ [SPECIES_WOBBUFFET - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x1a},
+ [SPECIES_GIRAFARIG - 1] = {0x0b, 0x0d, 0x28, 0x11, 0x1d},
+ [SPECIES_PINECO - 1] = {0x1d, 0x12, 0x10, 0x19, 0x25},
+ [SPECIES_FORRETRESS - 1] = {0x19, 0x17, 0x08, 0x1e, 0x26},
+ [SPECIES_DUNSPARCE - 1] = {0x10, 0x1b, 0x30, 0x0c, 0x2d},
+ [SPECIES_GLIGAR - 1] = {0x1e, 0x13, 0x08, 0x1d, 0x23},
+ [SPECIES_STEELIX - 1] = {0x0c, 0x0d, 0x28, 0x0d, 0x1c},
+ [SPECIES_SNUBBULL - 1] = {0x1b, 0x15, 0x30, 0x1a, 0x23},
+ [SPECIES_GRANBULL - 1] = {0x1c, 0x09, 0x30, 0x19, 0x18},
+ [SPECIES_QWILFISH - 1] = {0x1f, 0x26, 0x20, 0x1d, 0x33},
+ [SPECIES_SCIZOR - 1] = {0x15, 0x0f, 0x10, 0x1a, 0x1a},
+ [SPECIES_SHUCKLE - 1] = {0x25, 0x0a, 0x30, 0x24, 0x18},
+ [SPECIES_HERACROSS - 1] = {0x18, 0x19, 0x28, 0x1a, 0x26},
+ [SPECIES_SNEASEL - 1] = {0x1c, 0x13, 0x30, 0x1d, 0x24},
+ [SPECIES_TEDDIURSA - 1] = {0x1e, 0x12, 0x30, 0x1b, 0x23},
+ [SPECIES_URSARING - 1] = {0x1e, 0x04, 0x28, 0x1d, 0x14},
+ [SPECIES_SLUGMA - 1] = {0x20, 0x18, 0x30, 0x20, 0x28},
+ [SPECIES_MAGCARGO - 1] = {0x16, 0x11, 0x30, 0x17, 0x23},
+ [SPECIES_SWINUB - 1] = {0x1c, 0x18, 0x30, 0x1b, 0x25},
+ [SPECIES_PILOSWINE - 1] = {0x18, 0x23, 0x20, 0x18, 0x36},
+ [SPECIES_CORSOLA - 1] = {0x19, 0x1d, 0x28, 0x19, 0x2b},
+ [SPECIES_REMORAID - 1] = {0x15, 0x1f, 0x28, 0x13, 0x2b},
+ [SPECIES_OCTILLERY - 1] = {0x1c, 0x11, 0x30, 0x1a, 0x20},
+ [SPECIES_DELIBIRD - 1] = {0x1d, 0x11, 0x30, 0x1b, 0x1f},
+ [SPECIES_MANTINE - 1] = {0x16, 0x1e, 0x28, 0x1f, 0x27},
+ [SPECIES_SKARMORY - 1] = {0x1e, 0x00, 0x28, 0x13, 0x07},
+ [SPECIES_HOUNDOUR - 1] = {0x25, 0x11, 0x30, 0x25, 0x1f},
+ [SPECIES_HOUNDOOM - 1] = {0x0d, 0x13, 0x30, 0x0d, 0x24},
+ [SPECIES_KINGDRA - 1] = {0x0e, 0x13, 0x28, 0x0a, 0x2c},
+ [SPECIES_PHANPY - 1] = {0x1b, 0x11, 0x30, 0x19, 0x24},
+ [SPECIES_DONPHAN - 1] = {0x11, 0x15, 0x30, 0x19, 0x2c},
+ [SPECIES_PORYGON2 - 1] = {0x18, 0x11, 0x30, 0x11, 0x20},
+ [SPECIES_STANTLER - 1] = {0x15, 0x15, 0x28, 0x17, 0x28},
+ [SPECIES_SMEARGLE - 1] = {0x18, 0x10, 0x30, 0x1b, 0x25},
+ [SPECIES_TYROGUE - 1] = {0x1e, 0x12, 0x30, 0x1f, 0x1f},
+ [SPECIES_HITMONTOP - 1] = {0x1a, 0x39, 0x10, 0x1a, 0x2b},
+ [SPECIES_SMOOCHUM - 1] = {0x20, 0x18, 0x30, 0x21, 0x26},
+ [SPECIES_ELEKID - 1] = {0x1d, 0x14, 0x30, 0x1d, 0x23},
+ [SPECIES_MAGBY - 1] = {0x1c, 0x15, 0x30, 0x1a, 0x24},
+ [SPECIES_MILTANK - 1] = {0x18, 0x0e, 0x30, 0x18, 0x1e},
+ [SPECIES_BLISSEY - 1] = {0x1d, 0x09, 0x30, 0x1d, 0x19},
+ [SPECIES_RAIKOU - 1] = {0x29, 0x0c, 0x28, 0x27, 0x1e},
+ [SPECIES_ENTEI - 1] = {0x08, 0x09, 0x28, 0x0b, 0x18},
+ [SPECIES_SUICUNE - 1] = {0x23, 0x1d, 0x28, 0x26, 0x2c},
+ [SPECIES_LARVITAR - 1] = {0x1c, 0x18, 0x30, 0x1a, 0x24},
+ [SPECIES_PUPITAR - 1] = {0x1b, 0x19, 0x30, 0x1b, 0x28},
+ [SPECIES_TYRANITAR - 1] = {0x06, 0x0b, 0x28, 0x0d, 0x19},
+ [SPECIES_LUGIA - 1] = {0x08, 0x2a, 0x08, 0x14, 0x34},
+ [SPECIES_HO_OH - 1] = {0x0d, 0x25, 0x08, 0x0e, 0x34},
+ [SPECIES_CELEBI - 1] = {0x15, 0x21, 0x08, 0x1a, 0x2b},
+ [SPECIES_OLD_UNOWN_B - 1] = {0x1f, 0x12, 0x08, 0x1e, 0x1c},
+ [SPECIES_OLD_UNOWN_C - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21},
+ [SPECIES_OLD_UNOWN_D - 1] = {0x1c, 0x19, 0x08, 0x1b, 0x23},
+ [SPECIES_OLD_UNOWN_E - 1] = {0x21, 0x19, 0x08, 0x20, 0x23},
+ [SPECIES_OLD_UNOWN_F - 1] = {0x1b, 0x13, 0x08, 0x1a, 0x1d},
+ [SPECIES_OLD_UNOWN_G - 1] = {0x20, 0x16, 0x08, 0x1f, 0x21},
+ [SPECIES_OLD_UNOWN_H - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23},
+ [SPECIES_OLD_UNOWN_I - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23},
+ [SPECIES_OLD_UNOWN_J - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20},
+ [SPECIES_OLD_UNOWN_K - 1] = {0x1d, 0x1a, 0x08, 0x1c, 0x24},
+ [SPECIES_OLD_UNOWN_L - 1] = {0x20, 0x16, 0x08, 0x1f, 0x1f},
+ [SPECIES_OLD_UNOWN_M - 1] = {0x20, 0x1c, 0x08, 0x1f, 0x26},
+ [SPECIES_OLD_UNOWN_N - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23},
+ [SPECIES_OLD_UNOWN_O - 1] = {0x20, 0x1a, 0x08, 0x1f, 0x23},
+ [SPECIES_OLD_UNOWN_P - 1] = {0x20, 0x16, 0x08, 0x1f, 0x20},
+ [SPECIES_OLD_UNOWN_Q - 1] = {0x1d, 0x16, 0x08, 0x1c, 0x20},
+ [SPECIES_OLD_UNOWN_R - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f},
+ [SPECIES_OLD_UNOWN_S - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23},
+ [SPECIES_OLD_UNOWN_T - 1] = {0x20, 0x1e, 0x08, 0x1f, 0x28},
+ [SPECIES_OLD_UNOWN_U - 1] = {0x20, 0x17, 0x08, 0x1f, 0x21},
+ [SPECIES_OLD_UNOWN_V - 1] = {0x1e, 0x1e, 0x08, 0x1d, 0x28},
+ [SPECIES_OLD_UNOWN_W - 1] = {0x20, 0x1d, 0x08, 0x1f, 0x27},
+ [SPECIES_OLD_UNOWN_X - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23},
+ [SPECIES_OLD_UNOWN_Y - 1] = {0x20, 0x15, 0x08, 0x1f, 0x1f},
+ [SPECIES_OLD_UNOWN_Z - 1] = {0x20, 0x19, 0x08, 0x1f, 0x23},
+ [SPECIES_TREECKO - 1] = {0x1a, 0x0f, 0x30, 0x19, 0x20},
+ [SPECIES_GROVYLE - 1] = {0x0d, 0x05, 0x10, 0x05, 0x13},
+ [SPECIES_SCEPTILE - 1] = {0x10, 0x04, 0x28, 0x0c, 0x12},
+ [SPECIES_TORCHIC - 1] = {0x17, 0x18, 0x30, 0x15, 0x25},
+ [SPECIES_COMBUSKEN - 1] = {0x20, 0x12, 0x28, 0x1e, 0x20},
+ [SPECIES_BLAZIKEN - 1] = {0x1a, 0x07, 0x28, 0x1d, 0x13},
+ [SPECIES_MUDKIP - 1] = {0x1b, 0x1d, 0x28, 0x19, 0x2c},
+ [SPECIES_MARSHTOMP - 1] = {0x1d, 0x11, 0x30, 0x1c, 0x20},
+ [SPECIES_SWAMPERT - 1] = {0x1b, 0x11, 0x28, 0x1b, 0x23},
+ [SPECIES_POOCHYENA - 1] = {0x14, 0x12, 0x30, 0x0f, 0x20},
+ [SPECIES_MIGHTYENA - 1] = {0x09, 0x0d, 0x28, 0x09, 0x1c},
+ [SPECIES_ZIGZAGOON - 1] = {0x0b, 0x1a, 0x30, 0x09, 0x2b},
+ [SPECIES_LINOONE - 1] = {0x0d, 0x28, 0x18, 0x0b, 0x37},
+ [SPECIES_WURMPLE - 1] = {0x21, 0x17, 0x30, 0x1f, 0x26},
+ [SPECIES_SILCOON - 1] = {0x13, 0x1c, 0x30, 0x11, 0x2a},
+ [SPECIES_BEAUTIFLY - 1] = {0x0f, 0x1b, 0x08, 0x0e, 0x28},
+ [SPECIES_CASCOON - 1] = {0x14, 0x1d, 0x30, 0x11, 0x2c},
+ [SPECIES_DUSTOX - 1] = {0x14, 0x19, 0x08, 0x16, 0x26},
+ [SPECIES_LOTAD - 1] = {0x19, 0x25, 0x28, 0x17, 0x32},
+ [SPECIES_LOMBRE - 1] = {0x22, 0x10, 0x30, 0x29, 0x1d},
+ [SPECIES_LUDICOLO - 1] = {0x1c, 0x0f, 0x28, 0x1b, 0x24},
+ [SPECIES_SEEDOT - 1] = {0x1b, 0x17, 0x30, 0x18, 0x28},
+ [SPECIES_NUZLEAF - 1] = {0x20, 0x0d, 0x30, 0x1a, 0x1d},
+ [SPECIES_SHIFTRY - 1] = {0x32, 0x11, 0x28, 0x2e, 0x23},
+ [SPECIES_NINCADA - 1] = {0x18, 0x1a, 0x30, 0x17, 0x28},
+ [SPECIES_NINJASK - 1] = {0x17, 0x21, 0x00, 0x17, 0x2f},
+ [SPECIES_SHEDINJA - 1] = {0x16, 0x19, 0x08, 0x18, 0x2a},
+ [SPECIES_TAILLOW - 1] = {0x17, 0x10, 0x30, 0x14, 0x1e},
+ [SPECIES_SWELLOW - 1] = {0x0c, 0x0a, 0x28, 0x05, 0x16},
+ [SPECIES_SHROOMISH - 1] = {0x1f, 0x16, 0x30, 0x1d, 0x23},
+ [SPECIES_BRELOOM - 1] = {0x25, 0x0c, 0x30, 0x23, 0x19},
+ [SPECIES_SPINDA - 1] = {0x21, 0x16, 0x30, 0x1f, 0x27},
+ [SPECIES_WINGULL - 1] = {0x1a, 0x16, 0x10, 0x15, 0x26},
+ [SPECIES_PELIPPER - 1] = {0x1d, 0x0a, 0x10, 0x09, 0x1b},
+ [SPECIES_SURSKIT - 1] = {0x1d, 0x16, 0x30, 0x1c, 0x25},
+ [SPECIES_MASQUERAIN - 1] = {0x1a, 0x21, 0x08, 0x14, 0x30},
+ [SPECIES_WAILMER - 1] = {0x17, 0x17, 0x30, 0x16, 0x28},
+ [SPECIES_WAILORD - 1] = {0x17, 0x03, 0x30, 0x09, 0x13},
+ [SPECIES_SKITTY - 1] = {0x24, 0x1a, 0x30, 0x22, 0x2a},
+ [SPECIES_DELCATTY - 1] = {0x1e, 0x12, 0x30, 0x1c, 0x21},
+ [SPECIES_KECLEON - 1] = {0x19, 0x10, 0x30, 0x13, 0x1e},
+ [SPECIES_BALTOY - 1] = {0x1d, 0x15, 0x30, 0x1b, 0x22},
+ [SPECIES_CLAYDOL - 1] = {0x1e, 0x0d, 0x28, 0x1d, 0x24},
+ [SPECIES_NOSEPASS - 1] = {0x1f, 0x10, 0x30, 0x15, 0x23},
+ [SPECIES_TORKOAL - 1] = {0x0e, 0x19, 0x28, 0x0a, 0x27},
+ [SPECIES_SABLEYE - 1] = {0x1e, 0x16, 0x30, 0x1d, 0x27},
+ [SPECIES_BARBOACH - 1] = {0x17, 0x12, 0x30, 0x15, 0x1e},
+ [SPECIES_WHISCASH - 1] = {0x18, 0x20, 0x28, 0x17, 0x31},
+ [SPECIES_LUVDISC - 1] = {0x19, 0x0f, 0x30, 0x13, 0x1c},
+ [SPECIES_CORPHISH - 1] = {0x1f, 0x14, 0x30, 0x1d, 0x23},
+ [SPECIES_CRAWDAUNT - 1] = {0x14, 0x0c, 0x28, 0x18, 0x23},
+ [SPECIES_FEEBAS - 1] = {0x18, 0x1e, 0x28, 0x16, 0x2f},
+ [SPECIES_MILOTIC - 1] = {0x20, 0x0c, 0x28, 0x1f, 0x1d},
+ [SPECIES_CARVANHA - 1] = {0x16, 0x19, 0x30, 0x13, 0x22},
+ [SPECIES_SHARPEDO - 1] = {0x19, 0x0c, 0x28, 0x17, 0x27},
+ [SPECIES_TRAPINCH - 1] = {0x29, 0x13, 0x30, 0x17, 0x18},
+ [SPECIES_VIBRAVA - 1] = {0x10, 0x27, 0x20, 0x0e, 0x34},
+ [SPECIES_FLYGON - 1] = {0x22, 0x07, 0x10, 0x21, 0x13},
+ [SPECIES_MAKUHITA - 1] = {0x22, 0x13, 0x30, 0x1c, 0x23},
+ [SPECIES_HARIYAMA - 1] = {0x24, 0x0f, 0x28, 0x26, 0x1c},
+ [SPECIES_ELECTRIKE - 1] = {0x11, 0x18, 0x30, 0x14, 0x27},
+ [SPECIES_MANECTRIC - 1] = {0x2f, 0x18, 0x28, 0x2e, 0x29},
+ [SPECIES_NUMEL - 1] = {0x10, 0x1a, 0x30, 0x0d, 0x2a},
+ [SPECIES_CAMERUPT - 1] = {0x0d, 0x22, 0x28, 0x0e, 0x36},
+ [SPECIES_SPHEAL - 1] = {0x1e, 0x0f, 0x30, 0x18, 0x1f},
+ [SPECIES_SEALEO - 1] = {0x1c, 0x09, 0x30, 0x1a, 0x18},
+ [SPECIES_WALREIN - 1] = {0x19, 0x01, 0x28, 0x10, 0x16},
+ [SPECIES_CACNEA - 1] = {0x1f, 0x17, 0x30, 0x1d, 0x29},
+ [SPECIES_CACTURNE - 1] = {0x1d, 0x0e, 0x28, 0x1d, 0x1b},
+ [SPECIES_SNORUNT - 1] = {0x1e, 0x16, 0x30, 0x1e, 0x26},
+ [SPECIES_GLALIE - 1] = {0x1a, 0x1c, 0x08, 0x1a, 0x31},
+ [SPECIES_LUNATONE - 1] = {0x1c, 0x16, 0x08, 0x19, 0x2c},
+ [SPECIES_SOLROCK - 1] = {0x18, 0x18, 0x10, 0x17, 0x31},
+ [SPECIES_AZURILL - 1] = {0x1b, 0x10, 0x30, 0x18, 0x1f},
+ [SPECIES_SPOINK - 1] = {0x21, 0x14, 0x30, 0x1b, 0x28},
+ [SPECIES_GRUMPIG - 1] = {0x14, 0x10, 0x30, 0x15, 0x20},
+ [SPECIES_PLUSLE - 1] = {0x1c, 0x16, 0x08, 0x1d, 0x25},
+ [SPECIES_MINUN - 1] = {0x21, 0x16, 0x08, 0x1f, 0x26},
+ [SPECIES_MAWILE - 1] = {0x2d, 0x14, 0x30, 0x2f, 0x24},
+ [SPECIES_MEDITITE - 1] = {0x1f, 0x17, 0x30, 0x1e, 0x25},
+ [SPECIES_MEDICHAM - 1] = {0x21, 0x0f, 0x28, 0x1e, 0x1d},
+ [SPECIES_SWABLU - 1] = {0x1b, 0x16, 0x10, 0x17, 0x23},
+ [SPECIES_ALTARIA - 1] = {0x1d, 0x0b, 0x10, 0x1a, 0x1a},
+ [SPECIES_WYNAUT - 1] = {0x1a, 0x15, 0x30, 0x1b, 0x26},
+ [SPECIES_DUSKULL - 1] = {0x10, 0x18, 0x08, 0x14, 0x2e},
+ [SPECIES_DUSCLOPS - 1] = {0x1c, 0x0f, 0x30, 0x1a, 0x28},
+ [SPECIES_ROSELIA - 1] = {0x1e, 0x11, 0x30, 0x1d, 0x20},
+ [SPECIES_SLAKOTH - 1] = {0x19, 0x1e, 0x30, 0x18, 0x2f},
+ [SPECIES_VIGOROTH - 1] = {0x10, 0x12, 0x28, 0x14, 0x24},
+ [SPECIES_SLAKING - 1] = {0x37, 0x0f, 0x30, 0x29, 0x21},
+ [SPECIES_GULPIN - 1] = {0x1b, 0x18, 0x30, 0x17, 0x26},
+ [SPECIES_SWALOT - 1] = {0x1f, 0x06, 0x30, 0x15, 0x13},
+ [SPECIES_TROPIUS - 1] = {0x18, 0x0a, 0x28, 0x20, 0x18},
+ [SPECIES_WHISMUR - 1] = {0x1f, 0x19, 0x30, 0x1d, 0x29},
+ [SPECIES_LOUDRED - 1] = {0x1c, 0x12, 0x28, 0x22, 0x27},
+ [SPECIES_EXPLOUD - 1] = {0x10, 0x10, 0x28, 0x1a, 0x2a},
+ [SPECIES_CLAMPERL - 1] = {0x20, 0x1a, 0x30, 0x1e, 0x26},
+ [SPECIES_HUNTAIL - 1] = {0x13, 0x1e, 0x28, 0x15, 0x33},
+ [SPECIES_GOREBYSS - 1] = {0x0d, 0x1f, 0x28, 0x03, 0x32},
+ [SPECIES_ABSOL - 1] = {0x2a, 0x11, 0x28, 0x2a, 0x22},
+ [SPECIES_SHUPPET - 1] = {0x16, 0x19, 0x08, 0x17, 0x27},
+ [SPECIES_BANETTE - 1] = {0x1c, 0x14, 0x08, 0x1b, 0x23},
+ [SPECIES_SEVIPER - 1] = {0x0e, 0x0d, 0x30, 0x0b, 0x1e},
+ [SPECIES_ZANGOOSE - 1] = {0x18, 0x0c, 0x28, 0x15, 0x1a},
+ [SPECIES_RELICANTH - 1] = {0x0c, 0x1f, 0x30, 0x09, 0x2d},
+ [SPECIES_ARON - 1] = {0x18, 0x1c, 0x30, 0x1a, 0x2c},
+ [SPECIES_LAIRON - 1] = {0x0b, 0x21, 0x30, 0x12, 0x2f},
+ [SPECIES_AGGRON - 1] = {0x10, 0x0b, 0x28, 0x16, 0x1b},
+ [SPECIES_CASTFORM - 1] = {0x1d, 0x18, 0x08, 0x1b, 0x26},
+ [SPECIES_VOLBEAT - 1] = {0x25, 0x15, 0x08, 0x21, 0x25},
+ [SPECIES_ILLUMISE - 1] = {0x20, 0x12, 0x08, 0x1f, 0x20},
+ [SPECIES_LILEEP - 1] = {0x1e, 0x11, 0x30, 0x1f, 0x1e},
+ [SPECIES_CRADILY - 1] = {0x12, 0x16, 0x28, 0x15, 0x28},
+ [SPECIES_ANORITH - 1] = {0x1c, 0x1e, 0x30, 0x1b, 0x2b},
+ [SPECIES_ARMALDO - 1] = {0x15, 0x05, 0x28, 0x14, 0x13},
+ [SPECIES_RALTS - 1] = {0x1f, 0x17, 0x30, 0x20, 0x23},
+ [SPECIES_KIRLIA - 1] = {0x1c, 0x12, 0x30, 0x1f, 0x1e},
+ [SPECIES_GARDEVOIR - 1] = {0x35, 0x07, 0x28, 0x32, 0x14},
+ [SPECIES_BAGON - 1] = {0x17, 0x13, 0x30, 0x16, 0x26},
+ [SPECIES_SHELGON - 1] = {0x19, 0x1b, 0x30, 0x19, 0x2c},
+ [SPECIES_SALAMENCE - 1] = {0x09, 0x11, 0x30, 0x0a, 0x21},
+ [SPECIES_BELDUM - 1] = {0x16, 0x19, 0x08, 0x18, 0x23},
+ [SPECIES_METANG - 1] = {0x22, 0x0f, 0x10, 0x1f, 0x21},
+ [SPECIES_METAGROSS - 1] = {0x24, 0x1b, 0x28, 0x22, 0x2b},
+ [SPECIES_REGIROCK - 1] = {0x16, 0x07, 0x28, 0x14, 0x12},
+ [SPECIES_REGICE - 1] = {0x19, 0x0c, 0x28, 0x17, 0x19},
+ [SPECIES_REGISTEEL - 1] = {0x19, 0x0d, 0x28, 0x19, 0x19},
+ [SPECIES_KYOGRE - 1] = {0x0e, 0x19, 0x28, 0x0b, 0x26},
+ [SPECIES_GROUDON - 1] = {0x04, 0x0b, 0x28, 0x0a, 0x19},
+ [SPECIES_RAYQUAZA - 1] = {0x0c, 0x0e, 0x10, 0x0e, 0x1f},
+ [SPECIES_LATIAS - 1] = {0x1e, 0x0c, 0x10, 0x23, 0x19},
+ [SPECIES_LATIOS - 1] = {0x05, 0x0e, 0x10, 0x05, 0x1d},
+ [SPECIES_JIRACHI - 1] = {0x1c, 0x15, 0x08, 0x1e, 0x22},
+ [SPECIES_DEOXYS - 1] = {0x1b, 0x08, 0x28, 0x1c, 0x16},
+ [SPECIES_CHIMECHO - 1] = {0x1d, 0x0c, 0x08, 0x1c, 0x1a},
+ [SPECIES_OLD_UNOWN_EMARK - 1] = {0x20, 0x21, 0x08, 0x20, 0x2b},
+ [SPECIES_OLD_UNOWN_QMARK - 1] = {0x20, 0x23, 0x08, 0x20, 0x2d}
+};
+
+void box_print(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = x;
+ printer.y = y;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ printer.letterSpacing = GetFontAttribute(fontId, 2);
+ printer.lineSpacing = GetFontAttribute(fontId, 3);
+ printer.fontColor_l = 0;
+ printer.fontColor_h = color->bgColor;
+ printer.bgColor = color->fgColor;
+ printer.shadowColor = color->shadowColor;
+ AddTextPrinter(&printer, speed, NULL);
+}
+
+void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = x;
+ printer.y = y;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = lineSpacing;
+ printer.fontColor_l = 0;
+ printer.fontColor_h = color->bgColor;
+ printer.bgColor = color->fgColor;
+ printer.shadowColor = color->shadowColor;
+ AddTextPrinter(&printer, speed, NULL);
+}
+
+void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 letterSpacing, u8 lineSpacing)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = x;
+ printer.y = y;
+ printer.currentX = x;
+ printer.currentY = y;
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = lineSpacing;
+ printer.fontColor_l = 0;
+ printer.fontColor_h = GetFontAttribute(fontId, 5);
+ printer.bgColor = GetFontAttribute(fontId, 6);
+ printer.shadowColor = GetFontAttribute(fontId, 7);
+ AddTextPrinter(&printer, speed, callback);
+}
+
+void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y)
+{
+ s32 i;
+
+ for (i = 0; gSaveBlock2Ptr->playerName[i] != EOS; i++)
+ ;
+
+ StringExpandPlaceholders(gStringVar4, src);
+ if (i != 5)
+ {
+ AddTextPrinterParameterized(windowId, 2, gStringVar4, x, y, 0xFF, NULL);
+ }
+ else
+ {
+ sub_812E62C(windowId, 2, gStringVar4, x, y, 0xFF, NULL, 0, 0);
+ }
+}
+
+// Yeah, no, I'm not bothering with this
+NAKED
+void sub_819A080(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x28\n"
+ "\tstr r0, [sp]\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tldr r0, [sp, 0x48]\n"
+ "\tldr r4, [sp, 0x4C]\n"
+ "\tldr r1, [sp, 0x50]\n"
+ "\tldr r5, [sp, 0x54]\n"
+ "\tlsls r2, 16\n"
+ "\tlsrs r2, 16\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tlsls r3, 16\n"
+ "\tlsrs r3, 16\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tstr r0, [sp, 0xC]\n"
+ "\tlsls r4, 16\n"
+ "\tlsrs r4, 16\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tlsls r5, 16\n"
+ "\tlsrs r5, 16\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tldrh r0, [r2, 0x4]\n"
+ "\tldr r2, [sp, 0xC]\n"
+ "\tsubs r0, r2\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tadds r2, r1, r2\n"
+ "\tstr r2, [sp, 0x10]\n"
+ "\tcmp r0, r1\n"
+ "\tbge _0812E7B4\n"
+ "\tldr r1, [sp, 0x8]\n"
+ "\tadds r0, r1\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "_0812E7B4:\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tldrh r1, [r2, 0x6]\n"
+ "\tsubs r0, r1, r4\n"
+ "\tcmp r0, r5\n"
+ "\tbge _0812E7C6\n"
+ "\tadds r0, r3, r1\n"
+ "\tsubs r0, r4\n"
+ "\tstr r0, [sp, 0x14]\n"
+ "\tb _0812E7CA\n"
+ "_0812E7C6:\n"
+ "\tadds r5, r3, r5\n"
+ "\tstr r5, [sp, 0x14]\n"
+ "_0812E7CA:\n"
+ "\tldr r0, [sp]\n"
+ "\tldrh r1, [r0, 0x4]\n"
+ "\tmovs r2, 0x7\n"
+ "\tadds r0, r1, 0\n"
+ "\tands r0, r2\n"
+ "\tadds r1, r0\n"
+ "\tasrs r1, 3\n"
+ "\tstr r1, [sp, 0x18]\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tldrh r1, [r0, 0x4]\n"
+ "\tadds r0, r1, 0\n"
+ "\tands r0, r2\n"
+ "\tadds r1, r0\n"
+ "\tasrs r1, 3\n"
+ "\tstr r1, [sp, 0x1C]\n"
+ "\tmov r12, r3\n"
+ "\tmov r8, r4\n"
+ "\tldr r1, [sp, 0x14]\n"
+ "\tcmp r12, r1\n"
+ "\tblt _0812E7F4\n"
+ "\tb _0812E932\n"
+ "_0812E7F4:\n"
+ "\tldr r5, [sp, 0x8]\n"
+ "\tldr r6, [sp, 0xC]\n"
+ "\tmov r2, r12\n"
+ "\tadds r2, 0x1\n"
+ "\tstr r2, [sp, 0x20]\n"
+ "\tmov r0, r8\n"
+ "\tadds r0, 0x1\n"
+ "\tstr r0, [sp, 0x24]\n"
+ "\tldr r1, [sp, 0x10]\n"
+ "\tcmp r5, r1\n"
+ "\tblt _0812E80C\n"
+ "\tb _0812E922\n"
+ "_0812E80C:\n"
+ "\tmovs r7, 0x1\n"
+ "\tmovs r2, 0xF0\n"
+ "\tmov r10, r2\n"
+ "\tmovs r0, 0xF\n"
+ "\tmov r9, r0\n"
+ "_0812E816:\n"
+ "\tasrs r0, r5, 1\n"
+ "\tmovs r1, 0x3\n"
+ "\tands r0, r1\n"
+ "\tldr r2, [sp]\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, r0\n"
+ "\tasrs r0, r5, 3\n"
+ "\tlsls r0, 5\n"
+ "\tadds r1, r0\n"
+ "\tmov r2, r12\n"
+ "\tasrs r0, r2, 3\n"
+ "\tldr r2, [sp, 0x18]\n"
+ "\tmuls r0, r2\n"
+ "\tlsls r0, 5\n"
+ "\tadds r1, r0\n"
+ "\tmov r2, r12\n"
+ "\tlsls r0, r2, 29\n"
+ "\tlsrs r0, 27\n"
+ "\tadds r3, r1, r0\n"
+ "\tasrs r0, r6, 1\n"
+ "\tmovs r1, 0x3\n"
+ "\tands r0, r1\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, r0\n"
+ "\tasrs r0, r6, 3\n"
+ "\tlsls r0, 5\n"
+ "\tadds r1, r0\n"
+ "\tmov r2, r8\n"
+ "\tasrs r0, r2, 3\n"
+ "\tldr r2, [sp, 0x1C]\n"
+ "\tmuls r0, r2\n"
+ "\tlsls r0, 5\n"
+ "\tadds r1, r0\n"
+ "\tmov r2, r8\n"
+ "\tlsls r0, r2, 29\n"
+ "\tlsrs r0, 27\n"
+ "\tadds r4, r1, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tands r0, r7\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812E8C2\n"
+ "\tsubs r4, 0x1\n"
+ "\tadds r0, r6, 0\n"
+ "\tands r0, r7\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812E89A\n"
+ "\tldrh r0, [r4]\n"
+ "\tldr r2, _0812E88C @ =0x00000fff\n"
+ "\tands r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tands r0, r7\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812E890\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r10\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 8\n"
+ "\tb _0812E912\n"
+ "\t.align 2, 0\n"
+ "_0812E88C: .4byte 0x00000fff\n"
+ "_0812E890:\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r9\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 12\n"
+ "\tb _0812E912\n"
+ "_0812E89A:\n"
+ "\tldrh r0, [r4]\n"
+ "\tldr r2, _0812E8B4 @ =0x0000f0ff\n"
+ "\tands r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tands r0, r7\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812E8B8\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r10\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 4\n"
+ "\tb _0812E912\n"
+ "\t.align 2, 0\n"
+ "_0812E8B4: .4byte 0x0000f0ff\n"
+ "_0812E8B8:\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r9\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 8\n"
+ "\tb _0812E912\n"
+ "_0812E8C2:\n"
+ "\tadds r0, r6, 0\n"
+ "\tands r0, r7\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812E8EE\n"
+ "\tldrh r0, [r4]\n"
+ "\tldr r2, _0812E8E0 @ =0x0000ff0f\n"
+ "\tands r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tands r0, r7\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812E8E4\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r10\n"
+ "\tb _0812E910\n"
+ "\t.align 2, 0\n"
+ "_0812E8E0: .4byte 0x0000ff0f\n"
+ "_0812E8E4:\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r9\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 4\n"
+ "\tb _0812E912\n"
+ "_0812E8EE:\n"
+ "\tldrh r0, [r4]\n"
+ "\tldr r2, _0812E908 @ =0x0000fff0\n"
+ "\tands r2, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tands r0, r7\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812E90C\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r10\n"
+ "\tands r0, r1\n"
+ "\tlsrs r0, 4\n"
+ "\tb _0812E912\n"
+ "\t.align 2, 0\n"
+ "_0812E908: .4byte 0x0000fff0\n"
+ "_0812E90C:\n"
+ "\tldrb r1, [r3]\n"
+ "\tmov r0, r9\n"
+ "_0812E910:\n"
+ "\tands r0, r1\n"
+ "_0812E912:\n"
+ "\torrs r2, r0\n"
+ "\tstrh r2, [r4]\n"
+ "\tadds r5, 0x1\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [sp, 0x10]\n"
+ "\tcmp r5, r0\n"
+ "\tbge _0812E922\n"
+ "\tb _0812E816\n"
+ "_0812E922:\n"
+ "\tldr r1, [sp, 0x20]\n"
+ "\tmov r12, r1\n"
+ "\tldr r2, [sp, 0x24]\n"
+ "\tmov r8, r2\n"
+ "\tldr r0, [sp, 0x14]\n"
+ "\tcmp r12, r0\n"
+ "\tbge _0812E932\n"
+ "\tb _0812E7F4\n"
+ "_0812E932:\n"
+ "\tadd sp, 0x28\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+
+#define tEvA data[0]
+#define tEvB data[1]
+#define tEvAEnd data[2]
+#define tEvBEnd data[3]
+#define tEvADelta data[4]
+#define tEvBDelta data[5]
+#define tEvWhich data[6]
+#define tEvStepCount data[8]
+
+void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority)
+{
+ u8 taskId = CreateTask(Task_SmoothBlendLayers, priority);
+ gTasks[taskId].tEvA = eva_start << 8;
+ gTasks[taskId].tEvB = evb_start << 8;
+ gTasks[taskId].tEvAEnd = eva_end;
+ gTasks[taskId].tEvBEnd = evb_end;
+ gTasks[taskId].tEvADelta = (eva_end - eva_start) * 256 / ev_step;
+ gTasks[taskId].tEvBDelta = (evb_end - evb_start) * 256 / ev_step;
+ gTasks[taskId].tEvStepCount = ev_step;
+ SetGpuReg(REG_OFFSET_BLDALPHA, (evb_start << 8) | eva_start);
+}
+
+bool8 IsBlendTaskActive(void)
+{
+ return FuncIsActiveTask(Task_SmoothBlendLayers);
+}
+
+static void Task_SmoothBlendLayers(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (tEvStepCount != 0)
+ {
+ if (tEvWhich == 0)
+ {
+ tEvA += tEvADelta;
+ tEvWhich = 1;
+ }
+ else
+ {
+ if (--tEvStepCount != 0)
+ {
+ tEvB += tEvBDelta;
+ }
+ else
+ {
+ tEvA = tEvAEnd << 8;
+ tEvB = tEvBEnd << 8;
+ }
+ tEvWhich = 0;
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, (tEvB & ~0xFF) | ((u16)tEvA >> 8));
+ if (tEvStepCount == 0)
+ DestroyTask(taskId);
+ }
+}
+
+u8 sub_812EA78(u16 species, u32 personality, u8 a2)
+{
+ if (species == SPECIES_UNOWN)
+ {
+ u8 unownLetter = GetUnownLetterByPersonality(personality);
+ switch (unownLetter)
+ {
+ case 0:
+ break;
+ case 26:
+ species = SPECIES_OLD_UNOWN_EMARK;
+ break;
+ case 27:
+ species = SPECIES_OLD_UNOWN_QMARK;
+ break;
+ default:
+ species = SPECIES_OLD_UNOWN_B + unownLetter - 1;
+ break;
+ }
+ }
+ if (species != SPECIES_NONE && a2 < 5)
+ {
+ species--;
+ if (gUnknown_845FD54[species][a2] != 0xFF)
+ return gUnknown_845FD54[species][a2];
+ }
+ return 32;
+}
+
+s8 sub_812EAE4(u16 species, u32 personality, u8 a2)
+{
+ return sub_812EA78(species, personality, a2) - 32;
+}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index c39d76f25..65f515d1b 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -58,7 +58,7 @@ void sub_8145D18(u8 whichWindow);
void sub_8146060(void);
void sub_81461D8(void);
-extern const struct OamData gUnknown_83AC9F8;
+extern const struct OamData gOamData_83AC9F8;
const struct TextColor gUnknown_8467068[] = {
{0, 2, 3},
@@ -113,7 +113,7 @@ const struct SpritePalette gUnknown_8467F60[] = {
{gUnknown_8467ED4, 0x8000}
};
const struct SpriteTemplate gUnknown_8467FA0 = {
- 0x8000, 0x8000, &gUnknown_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ 0x8000, 0x8000, &gOamData_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
};
const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = {
{1, 0, 0, 0, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C},
diff --git a/src/oak_speech.c b/src/oak_speech.c
new file mode 100644
index 000000000..f00d683cf
--- /dev/null
+++ b/src/oak_speech.c
@@ -0,0 +1,1891 @@
+#include "global.h"
+#include "main.h"
+#include "decompress.h"
+#include "task.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "wild_encounter.h"
+#include "palette.h"
+#include "blend_palette.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "bg.h"
+#include "menu.h"
+#include "help_system.h"
+#include "new_menu_helpers.h"
+#include "pokemon_3.h"
+#include "sound.h"
+#include "event_scripts.h"
+#include "scanline_effect.h"
+#include "string_util.h"
+#include "pokeball.h"
+#include "naming_screen.h"
+#include "math_util.h"
+#include "overworld.h"
+#include "random.h"
+#include "oak_speech.h"
+#include "constants/species.h"
+#include "constants/songs.h"
+
+struct OakSpeechResources
+{
+ void * solidColorsGfx;
+ void * trainerPicTilemapBuffer;
+ void * unk_0008;
+ u8 filler_000C[4];
+ u16 unk_0010;
+ u16 unk_0012;
+ u16 unk_0014[4];
+ u8 unk_001C[3];
+ u8 textSpeed;
+ u8 filler_0020[0x1800];
+ u8 bg2TilemapBuffer[0x400];
+ u8 bg1TilemapBuffer[0x800];
+}; //size=0x2420
+
+EWRAM_DATA struct OakSpeechResources * sOakSpeechResources = NULL;
+
+static void Task_OaksSpeech1(u8 taskId);
+static void CreateHelpDocsPage1(void);
+static void Task_OaksSpeech2(u8 taskId);
+static void Task_OakSpeech3(u8 taskId);
+static void Task_OakSpeech5(u8 taskId);
+static void Task_OakSpeech6(u8 taskId);
+static void Task_OakSpeech7(u8 taskId);
+static void Task_OakSpeech8(u8 taskId);
+static void Task_OakSpeech9(u8 taskId);
+static void Task_OakSpeech10(u8 taskId);
+static void Task_OakSpeech10(u8 taskId);
+static void Task_OakSpeech11(u8 taskId);
+static void Task_OakSpeech12(u8 taskId);
+static void Task_OakSpeech13(u8 taskId);
+static void Task_OakSpeech14(u8 taskId);
+static void Task_OakSpeech15(u8 taskId);
+static void Task_OakSpeech16(u8 taskId);
+static void Task_OakSpeech17(u8 taskId);
+static void Task_OakSpeech18(u8 taskId);
+static void Task_OakSpeech19(u8 taskId);
+static void Task_OakSpeech20(u8 taskId);
+static void Task_OakSpeech21(u8 taskId);
+static void Task_OakSpeech22(u8 taskId);
+static void Task_OakSpeech23(u8 taskId);
+static void Task_OakSpeech24(u8 taskId);
+static void Task_OakSpeech29(u8 taskId);
+static void Task_OakSpeech25(u8 taskId);
+static void Task_OakSpeech26(u8 taskId);
+static void Task_OakSpeech27(u8 taskId);
+static void Task_OakSpeech30(u8 taskId);
+static void Task_OakSpeech31(u8 taskId);
+static void Task_OakSpeech32(u8 taskId);
+static void Task_OakSpeech34(u8 taskId);
+static void Task_OakSpeech33(u8 taskId);
+static void Task_OakSpeech36(u8 taskId);
+static void Task_OakSpeech37(u8 taskId);
+static void Task_OakSpeech38(u8 taskId);
+static void Task_OakSpeech38_3(u8 taskId);
+static void Task_OakSpeech39(u8 taskId);
+static void Task_OakSpeech38_1(u8 taskId);
+static void Task_OakSpeech38_sub1(u8 taskId);
+static void Task_OakSpeech38_2(u8 taskId);
+static void Task_OakSpeech38_sub2(u8 taskId);
+static void Task_OakSpeech40(u8 taskId);
+static void Task_OakSpeech41(u8 taskId);
+static void Task_OakSpeech42(u8 taskId);
+
+static void CB2_ReturnFromNamingScreen(void);
+static void CreateNidoranFSprite(u8 taskId);
+static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 state);
+static void DestroyLinkedPikaOrGrassPlatformSprites(u8 taskId, u8 state);
+static void LoadOaksSpeechTrainerPic(u16 whichPic, u16 tileOffset);
+static void DestroyOaksSpeechTrainerPic(void);
+static void CreateFadeInTask(u8 taskId, u8 state);
+static void CreateFadeOutTask(u8 taskId, u8 state);
+static void PrintNameChoiceOptions(u8 taskId, u8 state);
+static void GetDefaultName(u8 arg0, u8 namePick);
+
+extern const u8 gText_Controls[];
+extern const u8 gText_ABUTTONNext[];
+extern const u8 gText_ABUTTONNext_BBUTTONBack[];
+extern const u8 gText_Boy[];
+extern const u8 gText_Girl[];
+
+extern const struct CompressedSpriteSheet gUnknown_8235194[];
+extern const struct CompressedSpritePalette gUnknown_82373F4;
+
+ALIGNED(4) static const u16 sHelpDocsPalette[] = INCBIN_U16("data/oak_speech/help_docs_palette.gbapal");
+static const u32 sOakSpeechGfx_GameStartHelpUI[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_game_start_help_u_i.4bpp.lz");
+static const u32 sNewGameAdventureIntroTilemap[] = INCBIN_U32("data/oak_speech/new_game_adventure_intro_tilemap.bin.lz");
+static const u32 sOakSpeechGfx_SolidColors[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_solid_colors.4bpp.lz");
+static const u32 sOakSpeech_BackgroundTilemap[] = INCBIN_U32("data/oak_speech/oak_speech_background_tilemap.bin.lz");
+static const u16 sHelpDocsPage2Tilemap[] = INCBIN_U16("data/oak_speech/help_docs_page2_tilemap.bin");
+static const u16 sHelpDocsPage3Tilemap[] = INCBIN_U16("data/oak_speech/help_docs_page3_tilemap.bin");
+static const u16 sOakSpeechGfx_LeafPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_leaf_pal.gbapal");
+static const u32 sOakSpeechGfx_LeafPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_leaf_pic.8bpp.lz");
+static const u16 sOakSpeechGfx_RedPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_red_pal.gbapal");
+static const u32 sOakSpeechGfx_RedPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_red_pic.8bpp.lz");
+static const u16 sOakSpeechGfx_OakPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_oak_pal.gbapal");
+static const u32 sOakSpeechGfx_OakPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_oak_pic.8bpp.lz");
+static const u16 sOakSpeechGfx_RivalPal[] = INCBIN_U16("data/oak_speech/oak_speech_gfx_rival_pal.gbapal");
+static const u32 sOakSpeechGfx_RivalPic[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_rival_pic.8bpp.lz");
+static const u16 sOakSpeech_GrassPlatformPalette[] = INCBIN_U16("data/oak_speech/oak_speech_grass_platform_palette.gbapal");
+static const u16 sOakSpeech_PikaPalette[] = INCBIN_U16("data/oak_speech/oak_speech_pika_palette.gbapal");
+static const u32 sOakSpeechGfx_GrassPlatform[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_grass_platform.4bpp.lz");
+static const u32 sOakSpeechGfx_Pika1[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_pika1.4bpp.lz");
+static const u32 sOakSpeechGfx_Pika2[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_pika2.4bpp.lz");
+static const u32 sOakSpeechGfx_PikaEyes[] = INCBIN_U32("data/oak_speech/oak_speech_gfx_pika_eyes.4bpp.lz");
+
+static const struct BgTemplate sBgTemplates[3] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 1,
+ .paletteMode = 1,
+ .priority = 1,
+ .baseTile = 0x000
+ }
+};
+
+static const struct WindowTemplate sHelpDocsWindowTemplates1[] = {
+ {
+ .priority = 0x00,
+ .tilemapLeft = 0x00,
+ .tilemapTop = 0x07,
+ .width = 0x1e,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sHelpDocsWindowTemplates2[] = {
+ {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x03,
+ .width = 0x18,
+ .height = 0x06,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0a,
+ .width = 0x18,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0092
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0f,
+ .width = 0x18,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x00f3
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sHelpDocsWindowTemplates3[] = {
+ {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x03,
+ .width = 0x18,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x08,
+ .width = 0x18,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0062
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x06,
+ .tilemapTop = 0x0d,
+ .width = 0x18,
+ .height = 0x06,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x00c3
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate *const sHelpDocsWindowTemplatePtrs[3] = {
+ sHelpDocsWindowTemplates1,
+ sHelpDocsWindowTemplates2,
+ sHelpDocsWindowTemplates3
+};
+
+static const struct WindowTemplate sNewGameAdventureIntroWindowTemplates[] = {
+ {
+ .priority = 0x00,
+ .tilemapLeft = 0x01,
+ .tilemapTop = 0x04,
+ .width = 0x1c,
+ .height = 0x0f,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x12,
+ .tilemapTop = 0x09,
+ .width = 0x09,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0174
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x02,
+ .tilemapTop = 0x02,
+ .width = 0x06,
+ .height = 0x04,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0180
+ }, {
+ .priority = 0x00,
+ .tilemapLeft = 0x02,
+ .tilemapTop = 0x02,
+ .width = 0x0c,
+ .height = 0x0a,
+ .paletteNum = 0x0f,
+ .baseBlock = 0x0001
+ }, DUMMY_WIN_TEMPLATE
+};
+
+ALIGNED(4) const struct TextColor sTextColor_HelpSystem = {
+ 0x00, 0x01, 0x02
+};
+
+ALIGNED(4) const struct TextColor sTextColor_OakSpeech = {
+ 0x00, 0x02, 0x03
+};
+
+static const u8 *const sNewGameAdventureIntroTextPointers[] = {
+ gNewGameAdventureIntro1,
+ gNewGameAdventureIntro2,
+ gNewGameAdventureIntro3
+};
+
+static const struct CompressedSpriteSheet sOakSpeech_PikaSpriteSheets[3] = {
+ { (const void *)sOakSpeechGfx_Pika1, 0x0400, 0x1001 },
+ { (const void *)sOakSpeechGfx_Pika2, 0x0200, 0x1002 },
+ { (const void *)sOakSpeechGfx_PikaEyes, 0x0080, 0x1003 },
+};
+
+static const struct CompressedSpriteSheet sOakSpeech_GrassPlatformSpriteSheet = {
+ (const void *)sOakSpeechGfx_GrassPlatform, 0x0600, 0x1000
+};
+
+static const struct SpritePalette sOakSpeech_PikaSpritePal = {
+ (const void *)sOakSpeech_PikaPalette, 0x1001
+};
+
+static const struct SpritePalette sOakSpeech_GrassPlatformSpritePal = {
+ (const void *)sOakSpeech_GrassPlatformPalette, 0x1000
+};
+
+static const union AnimCmd sGrassPlatformAnim1[] = {
+ ANIMCMD_FRAME( 0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sGrassPlatformAnim2[] = {
+ ANIMCMD_FRAME(16, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sGrassPlatformAnim3[] = {
+ ANIMCMD_FRAME(32, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sGrassPlatformAnims1[] = {
+ sGrassPlatformAnim1
+};
+static const union AnimCmd *const sGrassPlatformAnims2[] = {
+ sGrassPlatformAnim2
+};
+static const union AnimCmd *const sGrassPlatformAnims3[] = {
+ sGrassPlatformAnim3
+};
+
+extern const struct OamData gOamData_83ACAF8;
+
+static const struct SpriteTemplate sOakSpeech_GrassPlatformSpriteTemplates[3] = {
+ { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy },
+ { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy },
+ { 0x1000, 0x1000, &gOamData_83ACAF8, sGrassPlatformAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy },
+};
+
+static const union AnimCmd sPikaAnim1[] = {
+ ANIMCMD_FRAME( 0, 30),
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sPikaAnim2[] = {
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_FRAME(0, 12),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_FRAME(0, 12),
+ ANIMCMD_FRAME(8, 12),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd sPikaAnim3[] = {
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sPikaAnims1[] = {
+ sPikaAnim1
+};
+static const union AnimCmd *const sPikaAnims2[] = {
+ sPikaAnim2
+};
+static const union AnimCmd *const sPikaAnims3[] = {
+ sPikaAnim3
+};
+
+extern const struct OamData gOamData_83AC9D8;
+extern const struct OamData gOamData_83AC9F8;
+extern const struct OamData gOamData_83AC9E8;
+
+static const struct SpriteTemplate sOakSpeech_PikaSpriteTemplates[3] = {
+ { 0x1001, 0x1001, &gOamData_83AC9D8, sPikaAnims1, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy },
+ { 0x1002, 0x1001, &gOamData_83AC9F8, sPikaAnims2, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy },
+ { 0x1003, 0x1001, &gOamData_83AC9E8, sPikaAnims3, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }
+};
+
+static const u8 *const sHelpDocsPtrs[] = {
+ gNewGame_HelpDocs2, gNewGame_HelpDocs3, gNewGame_HelpDocs4,
+ gNewGame_HelpDocs5, gNewGame_HelpDocs6, gNewGame_HelpDocs7
+};
+
+static const u8 *const sMaleNameChoices[] = {
+ gNameChoice_Red,
+ gNameChoice_Fire,
+ gNameChoice_Ash,
+ gNameChoice_Kene,
+ gNameChoice_Geki,
+ gNameChoice_Jak,
+ gNameChoice_Janne,
+ gNameChoice_Jonn,
+ gNameChoice_Kamon,
+ gNameChoice_Karl,
+ gNameChoice_Taylor,
+ gNameChoice_Oscar,
+ gNameChoice_Hiro,
+ gNameChoice_Max,
+ gNameChoice_Jon,
+ gNameChoice_Ralph,
+ gNameChoice_Kay,
+ gNameChoice_Tosh,
+ gNameChoice_Roak
+};
+
+static const u8 *const sFemaleNameChoices[] = {
+ gNameChoice_Red,
+ gNameChoice_Fire,
+ gNameChoice_Omi,
+ gNameChoice_Jodi,
+ gNameChoice_Amanda,
+ gNameChoice_Hillary,
+ gNameChoice_Makey,
+ gNameChoice_Michi,
+ gNameChoice_Paula,
+ gNameChoice_June,
+ gNameChoice_Cassie,
+ gNameChoice_Rey,
+ gNameChoice_Seda,
+ gNameChoice_Kiko,
+ gNameChoice_Mina,
+ gNameChoice_Norie,
+ gNameChoice_Sai,
+ gNameChoice_Momo,
+ gNameChoice_Suzi
+};
+
+static const u8 *const sRivalNameChoices[] = {
+ gNameChoice_Green,
+ gNameChoice_Gary,
+ gNameChoice_Kaz,
+ gNameChoice_Toru
+};
+
+static void VBlankCB_NewGameOaksSpeech(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_NewGameOaksSpeech(void)
+{
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void StartNewGameScene(void)
+{
+ gPlttBufferUnfaded[0] = RGB_BLACK;
+ gPlttBufferFaded[0] = RGB_BLACK;
+ CreateTask(Task_OaksSpeech1, 0);
+ SetMainCallback2(CB2_NewGameOaksSpeech);
+}
+
+static void Task_OaksSpeech1(u8 taskId)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT + sizeof(u16), PLTT_SIZE - 2);
+ ResetPaletteFade();
+ ScanlineEffect_Stop();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ reset_temp_tile_data_buffers();
+ HelpSystem_SetSomeVariable2(2);
+ break;
+ case 1:
+ sOakSpeechResources = AllocZeroed(sizeof(*sOakSpeechResources));
+ SetUpMonSpriteManagerMaybe(1, 1);
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ break;
+ case 3:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, sBgTemplates, NELEMS(sBgTemplates));
+ SetBgTilemapBuffer(1, sOakSpeechResources->bg1TilemapBuffer);
+ SetBgTilemapBuffer(2, sOakSpeechResources->bg2TilemapBuffer);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ gSpriteCoordOffsetX = 0;
+ gSpriteCoordOffsetY = 0;
+ break;
+ case 4:
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ InitStandardTextBoxWindows();
+ ResetBg0();
+ Menu_LoadStdPalAt(0xD0);
+ LoadPalette(sHelpDocsPalette, 0x000, 0x080);
+ LoadPalette(stdpal_get(2) + 15, 0x000, 0x002);
+ break;
+ case 5:
+ sOakSpeechResources->textSpeed = GetTextSpeedSetting();
+ gTextFlags.flag_0 = TRUE;
+ decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_GameStartHelpUI, 0, 0, 0);
+ break;
+ case 6:
+ if (free_temp_tile_data_buffers_if_possible())
+ return;
+ ClearDialogWindowAndFrame(0, 1);
+ FillBgTilemapBufferRect_Palette0(1, 0x0000, 0, 0, 32, 32);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 7:
+ CreateWindow_SnapRight_StdPal(0, 30, 0, 13, 0x1C4);
+ FillBgTilemapBufferRect_Palette0(1, 0xD00F, 0, 0, 30, 2);
+ FillBgTilemapBufferRect_Palette0(1, 0xD002, 0, 2, 30, 1);
+ FillBgTilemapBufferRect_Palette0(1, 0xD00E, 0, 19, 30, 1);
+ CreateHelpDocsPage1();
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gTasks[taskId].data[5] = CreateTextCursorSpriteForOakSpeech(0, 0xE6, 0x95, 0, 0);
+ BlendPalettes(0xFFFFFFFF, 0x10, 0x00);
+ break;
+ case 10:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ SetVBlankCallback(VBlankCB_NewGameOaksSpeech);
+ PlayBGM(BGM_FRLG_GAME_EXPLANATION_START);
+ gTasks[taskId].func = Task_OaksSpeech2;
+ gMain.state = 0;
+ return;
+ }
+
+ gMain.state++;
+}
+
+static void CreateHelpDocsPage1(void)
+{
+ Menu_PrintHelpSystemUIHeader(gText_Controls, gText_ABUTTONNext, 0, 0, 1);
+ sOakSpeechResources->unk_0014[0] = AddWindow(sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012]);
+ PutWindowTilemap(sOakSpeechResources->unk_0014[0]);
+ FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00);
+ AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[0], 2, 2, 0, 1, 1, &sTextColor_HelpSystem, 0, gNewGame_HelpDocs1);
+ CopyWindowToVram(sOakSpeechResources->unk_0014[0], 3);
+ FillBgTilemapBufferRect_Palette0(1, 0x3000, 1, 3, 5, 16);
+ CopyBgTilemapBufferToVram(1);
+}
+
+static void Task_OakSpeech4(u8 taskId)
+{
+ u8 i = 0;
+ u8 r7 = sOakSpeechResources->unk_0012 - 1;
+ if (sOakSpeechResources->unk_0012 == 0)
+ {
+ CreateHelpDocsPage1();
+ }
+ else
+ {
+ PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ for (i = 0; i < 3; i++)
+ {
+ sOakSpeechResources->unk_0014[i] = AddWindow(&sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012][i]);
+ PutWindowTilemap(sOakSpeechResources->unk_0014[i]);
+ FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00);
+ AddTextPrinterParametrized2(sOakSpeechResources->unk_0014[i], 2, 6, 0, 1, 1, &sTextColor_HelpSystem, 0, sHelpDocsPtrs[i + r7 * 3]);
+ CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3);
+ }
+
+ if (sOakSpeechResources->unk_0012 == 1)
+ {
+ CopyToBgTilemapBufferRect(1, sHelpDocsPage2Tilemap, 1, 3, 5, 16);
+ }
+ else
+ {
+ CopyToBgTilemapBufferRect(1, sHelpDocsPage3Tilemap, 1, 3, 5, 16);
+ }
+ CopyBgTilemapBufferToVram(1);
+ }
+ BeginNormalPaletteFade(0xFFFFDFFF, -1, 16, 0, stdpal_get(2)[15]);
+ gTasks[taskId].func = Task_OaksSpeech2;
+}
+
+static void Task_OaksSpeech2(u8 taskId)
+{
+ if (!gPaletteFade.active && JOY_NEW((A_BUTTON | B_BUTTON)))
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ gTasks[taskId].data[15] = 1;
+ if (sOakSpeechResources->unk_0012 < 2)
+ {
+ BeginNormalPaletteFade(0xFFFFDFFF, -1, 0, 16, stdpal_get(2)[15]);
+ }
+ }
+ else
+ {
+ if (sOakSpeechResources->unk_0012 != 0)
+ {
+ gTasks[taskId].data[15] = -1;
+ BeginNormalPaletteFade(0xFFFFDFFF, -1, 0, 16, stdpal_get(2)[15]);
+ }
+ else
+ return;
+ }
+ }
+ else
+ return;
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = Task_OakSpeech3;
+}
+
+static void Task_OakSpeech3(u8 taskId)
+{
+ u8 r8 = 0;
+ u8 i;
+
+ if (!gPaletteFade.active)
+ {
+ switch (sOakSpeechResources->unk_0012) {
+ case 0:
+ r8 = 1;
+ break;
+ case 1:
+ case 2:
+ r8 = 3;
+ break;
+ }
+ sOakSpeechResources->unk_0012 += gTasks[taskId].data[15];
+ if (sOakSpeechResources->unk_0012 < 3)
+ {
+ for (i = 0; i < r8; i++)
+ {
+ FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00);
+ ClearWindowTilemap(sOakSpeechResources->unk_0014[i]);
+ CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3);
+ RemoveWindow(sOakSpeechResources->unk_0014[i]);
+ sOakSpeechResources->unk_0014[i] = 0;
+ }
+ gTasks[taskId].func = Task_OakSpeech4;
+ }
+ else
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ gTasks[taskId].func = Task_OakSpeech5;
+ }
+ }
+}
+
+static void Task_OakSpeech5(u8 taskId)
+{
+ u8 i = 0;
+
+ if (!gPaletteFade.active)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ FillWindowPixelBuffer(sOakSpeechResources->unk_0014[i], 0x00);
+ ClearWindowTilemap(sOakSpeechResources->unk_0014[i]);
+ CopyWindowToVram(sOakSpeechResources->unk_0014[i], 3);
+ RemoveWindow(sOakSpeechResources->unk_0014[i]);
+ sOakSpeechResources->unk_0014[i] = 0;
+ }
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 18);
+ CopyBgTilemapBufferToVram(1);
+ sub_8006398(gTasks[taskId].data[5]);
+ sOakSpeechResources->unk_0014[0] = RGB_BLACK;
+ LoadPalette(sOakSpeechResources->unk_0014, 0, 2);
+ gTasks[taskId].data[3] = 32;
+ gTasks[taskId].func = Task_OakSpeech6;
+ }
+}
+
+static void Task_OakSpeech6(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u32 sp14 = 0;
+
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ PlayBGM(BGM_FRLG_GAME_EXPLANATION_MIDDLE);
+ sub_810F71C();
+ PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
+ sOakSpeechResources->unk_0008 = malloc_and_decompress(sNewGameAdventureIntroTilemap, &sp14);
+ CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19);
+ CopyBgTilemapBufferToVram(1);
+ Free(sOakSpeechResources->unk_0008);
+ sOakSpeechResources->unk_0008 = NULL;
+ data[14] = AddWindow(&sNewGameAdventureIntroWindowTemplates[0]);
+ PutWindowTilemap(data[14]);
+ FillWindowPixelBuffer(data[14], 0x00);
+ CopyWindowToVram(data[14], 3);
+ sOakSpeechResources->unk_0012 = 0;
+ gMain.state = 0;
+ data[15] = 16;
+ AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[0]);
+ data[5] = CreateTextCursorSpriteForOakSpeech(0, 0xe2, 0x91, 0, 0);
+ gSprites[data[5]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[data[5]].oam.priority = 0;
+ CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(taskId, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 16, 0, 0);
+ gTasks[taskId].func = Task_OakSpeech7;
+ }
+}
+
+static void Task_OakSpeech7(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ switch (gMain.state)
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ SetGpuReg(REG_OFFSET_WIN0H, 0x00F0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x10A0);
+ SetGpuReg(REG_OFFSET_WININ, 0x003F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x001F);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ gMain.state = 1;
+ }
+ break;
+ case 1:
+ if (JOY_NEW((A_BUTTON | B_BUTTON)))
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ sOakSpeechResources->unk_0012++;
+ }
+ else if (sOakSpeechResources->unk_0012 != 0)
+ {
+ sOakSpeechResources->unk_0012--;
+ }
+ else
+ {
+ break;
+ }
+ PlaySE(SE_SELECT);
+ if (sOakSpeechResources->unk_0012 == 3)
+ {
+ gMain.state = 4;
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1);
+ SetGpuReg(REG_OFFSET_BLDALPHA, (16 - data[15]) | data[15]);
+ gMain.state++;
+ }
+ }
+ break;
+ case 2:
+ data[15] -= 2;
+ SetGpuReg(REG_OFFSET_BLDALPHA, ((16 - data[15]) << 8) | data[15]);
+ if (data[15] <= 0)
+ {
+ FillWindowPixelBuffer(data[14], 0x00);
+ AddTextPrinterParametrized2(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]);
+ if (sOakSpeechResources->unk_0012 == 0)
+ {
+ sub_810F71C();
+ PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
+ }
+ else
+ {
+ sub_810F71C();
+ PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ }
+ gMain.state++;
+ }
+ break;
+ case 3:
+ data[15] += 2;
+ SetGpuReg(REG_OFFSET_BLDALPHA, ((16 - data[15]) << 8) | data[15]);
+ if (data[15] >= 16)
+ {
+ data[15] = 16;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ gMain.state = 1;
+ }
+ break;
+ case 4:
+ sub_8006398(gTasks[taskId].data[5]);
+ PlayBGM(BGM_FRLG_GAME_EXPLANATION_END);
+ data[15] = 24;
+ gMain.state++;
+ break;
+ default:
+ if (data[15] != 0)
+ data[15]--;
+ else
+ {
+ gMain.state = 0;
+ sOakSpeechResources->unk_0012 = 0;
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_OakSpeech8;
+ }
+ break;
+ }
+}
+
+static void Task_OakSpeech8(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ sub_810F740();
+ FillWindowPixelBuffer(data[14], 0x00);
+ ClearWindowTilemap(data[14]);
+ CopyWindowToVram(data[14], 3);
+ RemoveWindow(data[14]);
+ data[14] = 0;
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(1);
+ DestroyLinkedPikaOrGrassPlatformSprites(taskId, 0);
+ data[3] = 80;
+ gTasks[taskId].func = Task_OakSpeech9;
+ }
+}
+
+static void Task_OakSpeech9(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u32 size = 0;
+
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ sOakSpeechResources->solidColorsGfx = malloc_and_decompress(sOakSpeechGfx_SolidColors, &size);
+ LoadBgTiles(1, sOakSpeechResources->solidColorsGfx, size, 0);
+ CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0);
+ CopyBgTilemapBufferToVram(1);
+ CreateNidoranFSprite(taskId);
+ LoadOaksSpeechTrainerPic(3, 0);
+ CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(taskId, 1);
+ PlayBGM(BGM_FRLG_ROUTE_24);
+ BeginNormalPaletteFade(0xFFFFFFFF, 5, 16, 0, RGB_BLACK);
+ data[3] = 80;
+ ShowBg(2);
+ gTasks[taskId].func = Task_OakSpeech10;
+ }
+}
+
+#define OaksSpeechPrintMessage(str, speed) ({ \
+ DrawDialogueFrame(0, FALSE);\
+ if (str != gStringVar4) \
+ { \
+ StringExpandPlaceholders(gStringVar4, str); \
+ AddTextPrinterParametrized(0, 4, gStringVar4, speed, NULL, 2, 1, 3); \
+ } \
+ else \
+ { \
+ AddTextPrinterParametrized(0, 4, str, speed, NULL, 2, 1, 3); \
+ } \
+ CopyWindowToVram(0, 3); \
+})
+
+static void Task_OakSpeech10(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ OaksSpeechPrintMessage(gOakText_WelcomeToTheWorld, sOakSpeechResources->textSpeed);
+ gTasks[taskId].func = Task_OakSpeech11;
+ }
+ }
+}
+
+static void Task_OakSpeech11(u8 taskId)
+{
+ if (!IsTextPrinterActive(0))
+ {
+ OaksSpeechPrintMessage(gOakText_WorldInhabited1, sOakSpeechResources->textSpeed);
+ gTasks[taskId].data[3] = 30;
+ gTasks[taskId].func = Task_OakSpeech12;
+ }
+}
+
+static void Task_OakSpeech12(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 spriteId;
+
+ if (!IsTextPrinterActive(0))
+ {
+ if (data[3] != 0)
+ data[3]--;
+ // else {
+ spriteId = gTasks[taskId].data[4];
+ gSprites[spriteId].invisible = FALSE;
+ gSprites[spriteId].data[0] = 0;
+ CreatePokeballSpriteToReleaseMon(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1FFF);
+ gTasks[taskId].func = Task_OakSpeech13;
+ gTasks[taskId].data[3] = 0;
+ // }
+ }
+}
+
+static void Task_OakSpeech13(u8 taskId)
+{
+ if (IsCryFinished())
+ {
+ if (gTasks[taskId].data[3] >= 96)
+ gTasks[taskId].func = Task_OakSpeech14;
+ }
+ if (gTasks[taskId].data[3] < 0x4000)
+ {
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == 32)
+ {
+ OaksSpeechPrintMessage(gOakText_WorldInhabited2, sOakSpeechResources->textSpeed);
+ PlayCry1(SPECIES_NIDORAN_F, 0);
+ }
+ }
+}
+
+static void Task_OakSpeech14(u8 taskId)
+{
+ if (!IsTextPrinterActive(0))
+ {
+ OaksSpeechPrintMessage(gOakText_PetsBattlingStudy, sOakSpeechResources->textSpeed);
+ gTasks[taskId].func = Task_OakSpeech15;
+ }
+}
+
+static void Task_OakSpeech15(u8 taskId)
+{
+ u8 spriteId;
+
+ if (!IsTextPrinterActive(0))
+ {
+ ClearDialogWindowAndFrame(0, 1);
+ spriteId = gTasks[taskId].data[4];
+ gTasks[taskId].data[6] = sub_804BB98(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1F3F);
+ gTasks[taskId].data[3] = 48;
+ gTasks[taskId].data[0] = 64;
+ gTasks[taskId].func = Task_OakSpeech16;
+ }
+}
+
+static void Task_OakSpeech16(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[0] != 0)
+ {
+ if (data[0] < 24)
+ {
+ gSprites[data[4]].pos1.y--;
+ }
+ data[0]--;
+ }
+ else
+ {
+ if (data[3] == 48)
+ {
+ DestroySprite(&gSprites[data[4]]);
+ DestroySprite(&gSprites[data[6]]);
+ }
+ if (data[3] != 0)
+ {
+ data[3]--;
+ }
+ else
+ {
+ OaksSpeechPrintMessage(gOakText_TellMeALittleAboutYourself, sOakSpeechResources->textSpeed);
+ gTasks[taskId].func = Task_OakSpeech17;
+ }
+ }
+}
+
+static void Task_OakSpeech17(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!IsTextPrinterActive(0))
+ {
+ ClearDialogWindowAndFrame(0, 1);
+ CreateFadeInTask(taskId, 2);
+ data[3] = 48;
+ gTasks[taskId].func = Task_OakSpeech18;
+ }
+}
+
+static void Task_OakSpeech18(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[2] != 0)
+ {
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ data[1] = -60;
+ DestroyOaksSpeechTrainerPic();
+ OaksSpeechPrintMessage(gOakText_AskPlayerGender, sOakSpeechResources->textSpeed);
+ gTasks[taskId].func = Task_OakSpeech19;
+ }
+ }
+}
+
+static void Task_OakSpeech19(u8 taskId)
+{
+ if (!IsTextPrinterActive(0))
+ {
+ gTasks[taskId].data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[1]);
+ PutWindowTilemap(gTasks[taskId].data[13]);
+ SetWindowBorderStyle(gTasks[taskId].data[13], 1, sub_80F796C(), 14);
+ FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
+ sOakSpeechResources->unk_001C[0] = 1;
+ sOakSpeechResources->unk_001C[1] = 2;
+ sOakSpeechResources->unk_001C[2] = 3;
+ box_print(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->unk_001C, 0, gText_Boy);
+ sOakSpeechResources->unk_001C[0] = 1;
+ sOakSpeechResources->unk_001C[1] = 2;
+ sOakSpeechResources->unk_001C[2] = 3;
+ box_print(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->unk_001C, 0, gText_Girl);
+ ProgramAndPlaceMenuCursorOnWindow(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0);
+ CopyWindowToVram(gTasks[taskId].data[13], 3);
+ gTasks[taskId].func = Task_OakSpeech20;
+ }
+}
+
+static void Task_OakSpeech20(u8 taskId)
+{
+ s8 input = ProcessMenuInputNoWrapAround();
+ switch (input)
+ {
+ case 0:
+ gSaveBlock2Ptr->playerGender = MALE;
+ break;
+ case 1:
+ gSaveBlock2Ptr->playerGender = FEMALE;
+ break;
+ case -1:
+ case -2:
+ return;
+ }
+ gTasks[taskId].func = Task_OakSpeech21;
+
+}
+
+static void Task_OakSpeech21(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ sub_810F4D8(data[13], 1);
+ RemoveWindow(data[13]);
+ data[13] = 0;
+ ClearDialogWindowAndFrame(0, 1);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ gTasks[taskId].func = Task_OakSpeech22;
+}
+
+static void Task_OakSpeech22(u8 taskId)
+{
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ LoadOaksSpeechTrainerPic(MALE, 0);
+ else
+ LoadOaksSpeechTrainerPic(FEMALE, 0);
+ CreateFadeOutTask(taskId, 2);
+ gTasks[taskId].data[3] = 32;
+ gTasks[taskId].func = Task_OakSpeech23;
+}
+
+static void Task_OakSpeech23(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[2] != 0)
+ {
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ data[1] = 0;
+ OaksSpeechPrintMessage(gOakText_AskPlayerName, sOakSpeechResources->textSpeed);
+ gTasks[taskId].func = Task_OakSpeech24;
+ }
+ }
+}
+
+static void Task_OakSpeech24(u8 taskId)
+{
+ if (!IsTextPrinterActive(0))
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sOakSpeechResources->unk_0010 = 0;
+ gTasks[taskId].func = Task_OakSpeech25;
+ }
+}
+static void Task_OakSpeech35(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!IsTextPrinterActive(0))
+ {
+ if (data[1] > -60)
+ {
+ data[1] -= 2;
+ gSpriteCoordOffsetX += 2;
+ ChangeBgX(2, 0x200, 2);
+ }
+ else
+ {
+ data[1] = -60;
+ PrintNameChoiceOptions(taskId, sOakSpeechResources->unk_0010);
+ gTasks[taskId].func = Task_OakSpeech29;
+ }
+ }
+}
+
+static void Task_OakSpeech28(u8 taskId)
+{
+ PrintNameChoiceOptions(taskId, sOakSpeechResources->unk_0010);
+ if (sOakSpeechResources->unk_0010 == 0)
+ {
+ OaksSpeechPrintMessage(gOakText_AskPlayerName, 0);
+ }
+ else
+ {
+ OaksSpeechPrintMessage(gOakText_AskRivalName, 0);
+ }
+ gTasks[taskId].func = Task_OakSpeech29;
+}
+
+static void Task_OakSpeech29(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s8 input = ProcessMenuInput();
+ switch (input)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ PlaySE(SE_SELECT);
+ sub_810F4D8(data[13], TRUE);
+ RemoveWindow(data[13]);
+ GetDefaultName(sOakSpeechResources->unk_0010, input - 1);
+ data[15] = 1;
+ gTasks[taskId].func = Task_OakSpeech26;
+ break;
+ case 0:
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_OakSpeech25;
+ break;
+ case -1:
+ break;
+ }
+}
+
+static void Task_OakSpeech25(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ GetDefaultName(sOakSpeechResources->unk_0010, 0);
+ if (sOakSpeechResources->unk_0010 == 0)
+ {
+ DoNamingScreen(0, gSaveBlock2Ptr->playerName, gSaveBlock2Ptr->playerGender, 0, 0, CB2_ReturnFromNamingScreen);
+ }
+ else
+ {
+ sub_810F4D8(gTasks[taskId].data[13], 1);
+ RemoveWindow(gTasks[taskId].data[13]);
+ DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen);
+ }
+ DestroyLinkedPikaOrGrassPlatformSprites(taskId, 1);
+ FreeAllWindowBuffers();
+ }
+}
+
+static void Task_OakSpeech26(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (!gPaletteFade.active)
+ {
+ if (data[15] == 1)
+ {
+ if (sOakSpeechResources->unk_0010 == 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gOakText_FinalizePlayerName);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOakText_ConfirmRivalName);
+ }
+ OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->textSpeed);
+ data[15] = 0;
+ data[3] = 25;
+ }
+ else if (!IsTextPrinterActive(0))
+ {
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ sub_810FF60(&sNewGameAdventureIntroWindowTemplates[2], 2, 0, 2, sub_80F796C(), 14, 0);
+ gTasks[taskId].func = Task_OakSpeech27;
+ }
+ }
+ }
+}
+
+static void Task_OakSpeech27(u8 taskId)
+{
+ s8 input = ProcessMenuInputNoWrap_();
+ switch (input)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ gTasks[taskId].data[3] = 40;
+ if (sOakSpeechResources->unk_0010 == 0)
+ {
+ ClearDialogWindowAndFrame(0, 1);
+ CreateFadeInTask(taskId, 2);
+ gTasks[taskId].func = Task_OakSpeech30;
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOakText_RememberRivalName);
+ OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->textSpeed);
+ gTasks[taskId].func = Task_OakSpeech31;
+ }
+ break;
+ case 1:
+ case -1:
+ PlaySE(SE_SELECT);
+ if (sOakSpeechResources->unk_0010 == 0)
+ gTasks[taskId].func = Task_OakSpeech24;
+ else
+ gTasks[taskId].func = Task_OakSpeech28;
+ break;
+ }
+}
+
+static void Task_OakSpeech30(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[2] != 0)
+ {
+ DestroyOaksSpeechTrainerPic();
+ if (data[3] != 0)
+ data[3]--;
+ else
+ gTasks[taskId].func = Task_OakSpeech32;
+ }
+}
+
+static void Task_OakSpeech31(u8 taskId)
+{
+ if (!IsTextPrinterActive(0))
+ {
+ ClearDialogWindowAndFrame(0, 1);
+ CreateFadeInTask(taskId, 2);
+ gTasks[taskId].func = Task_OakSpeech33;
+ }
+}
+
+static void Task_OakSpeech32(u8 taskId)
+{
+ ChangeBgX(2, 0, 0);
+ gTasks[taskId].data[1] = 0;
+ gSpriteCoordOffsetX = 0;
+ LoadOaksSpeechTrainerPic(2, 0);
+ CreateFadeOutTask(taskId, 2);
+ gTasks[taskId].func = Task_OakSpeech34;
+}
+
+static void Task_OakSpeech34(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[2] != 0)
+ {
+ OaksSpeechPrintMessage(gOakText_IntroduceRival, sOakSpeechResources->textSpeed);
+ sOakSpeechResources->unk_0010 = 1;
+ gTasks[taskId].func = Task_OakSpeech35;
+ }
+}
+
+static void Task_OakSpeech33(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ if (data[2] != 0)
+ {
+ DestroyOaksSpeechTrainerPic();
+ if (data[3] != 0)
+ data[3]--;
+ else
+ {
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ LoadOaksSpeechTrainerPic(MALE, 0);
+ else
+ LoadOaksSpeechTrainerPic(FEMALE, 0);
+ gTasks[taskId].data[1] = 0;
+ gSpriteCoordOffsetX = 0;
+ ChangeBgX(2, 0, 0);
+ CreateFadeOutTask(taskId, 2);
+ gTasks[taskId].func = Task_OakSpeech36;
+ }
+ }
+}
+
+static void Task_OakSpeech36(u8 taskId)
+{
+ if (gTasks[taskId].data[2] != 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gOakText_LegendAboutToUnfold);
+ OaksSpeechPrintMessage(gStringVar4, sOakSpeechResources->textSpeed);
+ gTasks[taskId].data[3] = 30;
+ gTasks[taskId].func = Task_OakSpeech37;
+ }
+}
+
+static void Task_OakSpeech37(u8 taskId)
+{
+ if (!IsTextPrinterActive(0))
+ {
+ if (gTasks[taskId].data[3] != 0)
+ gTasks[taskId].data[3]--;
+ else
+ {
+ FadeOutBGM(4);
+ gTasks[taskId].func = Task_OakSpeech38;
+ }
+ }
+}
+
+static void Task_OakSpeech38(u8 taskId)
+{
+ sOakSpeechResources->unk_0012 = 0;
+ Task_OakSpeech38_1(taskId);
+ Task_OakSpeech38_2(taskId);
+ Task_OakSpeech38_3(taskId);
+}
+
+static void Task_OakSpeech38_3(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ SetBgAttribute(2, 6, 1);
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = 256;
+ data[15] = 0;
+ gTasks[taskId].func = Task_OakSpeech39;
+}
+
+static void Task_OakSpeech39(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ s16 x, y;
+ u16 r0;
+
+ sOakSpeechResources->unk_0012++;
+ if (sOakSpeechResources->unk_0012 % 20 == 0)
+ {
+ if (sOakSpeechResources->unk_0012 == 40)
+ PlaySE(SE_FU_ZUZUZU);
+ r0 = data[2];
+ data[2] -= 32;
+ x = sub_80D8B90(r0 - 8);
+ y = sub_80D8B90(data[2] - 16);
+ SetBgAffine(2, 0x7800, 0x5400, 0x78, 0x54, x, y, 0);
+ if (data[2] <= 96)
+ {
+ data[15] = 1;
+ data[0] = 36;
+ gTasks[taskId].func = Task_OakSpeech40;
+ }
+ }
+}
+
+static void Task_OakSpeech38_1(u8 taskId)
+{
+ u8 taskId2 = CreateTask(Task_OakSpeech38_sub1, 1);
+ s16 * data = gTasks[taskId2].data;
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = 0;
+ data[15] = 0;
+ BeginNormalPaletteFade(0xFFFF0FCF, 4, 0, 16, RGB_BLACK);
+}
+
+static void Task_OakSpeech38_sub1(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ if (data[1] != 0)
+ {
+ DestroyTask(taskId);
+ DestroyLinkedPikaOrGrassPlatformSprites(taskId, 1);
+ }
+ else
+ {
+ data[1]++;
+ BeginNormalPaletteFade(0x0000F000, 0, 0, 16, RGB_BLACK);
+ }
+ }
+}
+
+static void Task_OakSpeech38_2(u8 taskId)
+{
+ u8 taskId2 = CreateTask(Task_OakSpeech38_sub2, 2);
+ s16 * data = gTasks[taskId2].data;
+ data[0] = 8;
+ data[1] = 0;
+ data[2] = 8;
+ data[14] = 0;
+ data[15] = 0;
+}
+
+static void Task_OakSpeech38_sub2(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+ u8 i;
+
+ if (data[0] != 0)
+ data[0]--;
+ else
+ {
+ if (data[1] <= 0 && data[2] != 0)
+ data[2]--;
+ BlendPalette(0x40, 0x20, data[14], RGB_WHITE);
+ data[14]++;
+ data[1]--;
+ data[0] = data[2];
+ if (data[14] > 14)
+ {
+ for (i = 0; i < 32; i++)
+ {
+ gPlttBufferFaded[i + 0x40] = RGB_WHITE;
+ gPlttBufferUnfaded[i + 0x40] = RGB_WHITE;
+ }
+ DestroyTask(taskId);
+ }
+ }
+}
+
+static void Task_OakSpeech40(u8 taskId)
+{
+ if (gTasks[taskId].data[0] != 0)
+ gTasks[taskId].data[0]--;
+ else
+ {
+ BeginNormalPaletteFade(0x00000030, 2, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_OakSpeech41;
+ }
+}
+
+static void Task_OakSpeech41(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].func = Task_OakSpeech42;
+ }
+}
+
+static void Task_OakSpeech42(u8 taskId)
+{
+ FreeAllWindowBuffers();
+ sub_8044D80();
+ Free(sOakSpeechResources);
+ sOakSpeechResources = NULL;
+ gTextFlags.flag_0 = FALSE;
+ SetMainCallback2(CB2_NewGame);
+ DestroyTask(taskId);
+}
+
+static void CB2_ReturnFromNamingScreen(void)
+{
+ u8 taskId;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, RGB_BLACK, PLTT + sizeof(u16), PLTT_SIZE - sizeof(u16));
+ ResetPaletteFade();
+ ScanlineEffect_Stop();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ reset_temp_tile_data_buffers();
+ break;
+ case 1:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, sBgTemplates, NELEMS(sBgTemplates));
+ SetBgTilemapBuffer(1, sOakSpeechResources->bg1TilemapBuffer);
+ SetBgTilemapBuffer(2, sOakSpeechResources->bg2TilemapBuffer);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ break;
+ case 3:
+ FreeAllWindowBuffers();
+ InitStandardTextBoxWindows();
+ ResetBg0();
+ LoadPalette(sHelpDocsPalette, 0, 0xe0);
+ break;
+ case 4:
+ decompress_and_copy_tile_data_to_vram(1, sOakSpeechGfx_SolidColors, 0, 0, 0);
+ break;
+ case 5:
+ if (free_temp_tile_data_buffers_if_possible())
+ return;
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ CopyToBgTilemapBuffer(1, sOakSpeech_BackgroundTilemap, 0, 0);
+ FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 6:
+ taskId = CreateTask(Task_OakSpeech26, 0);
+ if (sOakSpeechResources->unk_0010 == 0)
+ {
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ LoadOaksSpeechTrainerPic(MALE, 0);
+ else
+ LoadOaksSpeechTrainerPic(FEMALE, 0);
+ }
+ else
+ LoadOaksSpeechTrainerPic(2, 0);
+ gTasks[taskId].data[1] = -60;
+ gSpriteCoordOffsetX += 60;
+ ChangeBgX(2, -0x3C00, 0);
+ CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(taskId, 1);
+ gTasks[taskId].data[15] = 1;
+ break;
+ case 7:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetVBlankCallback(VBlankCB_NewGameOaksSpeech);
+ gTextFlags.flag_0 = TRUE;
+ SetMainCallback2(CB2_NewGameOaksSpeech);
+ return;
+ }
+
+ gMain.state++;
+}
+
+static void CreateNidoranFSprite(u8 taskId)
+{
+ u8 spriteId;
+
+ DecompressPicFromTable(gUnknown_8235194, sub_8044E00(0), SPECIES_NIDORAN_F);
+ sub_800F078(&gUnknown_82373F4);
+ sub_803F7D4(SPECIES_NIDORAN_F, 0);
+ spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x60, 0x60, 1);
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.priority = 1;
+ gSprites[spriteId].invisible = TRUE;
+ gTasks[taskId].data[4] = spriteId;
+}
+
+static void SpriteCB_PikaSync(struct Sprite * sprite)
+{
+ sprite->pos2.y = gSprites[sprite->data[0]].animCmdIndex;
+}
+
+static void CreatePikaOrGrassPlatformSpriteAndLinkToCurrentTask(u8 taskId, u8 state)
+{
+ u8 spriteId;
+ u8 i = 0;
+
+ switch (state)
+ {
+ case 0:
+ LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[0]);
+ LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[1]);
+ LoadCompressedObjectPic(&sOakSpeech_PikaSpriteSheets[2]);
+ LoadSpritePalette(&sOakSpeech_PikaSpritePal);
+ spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[0], 0x10, 0x11, 2);
+ gSprites[spriteId].oam.priority = 0;
+ gTasks[taskId].data[7] = spriteId;
+ spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[1], 0x10, 0x09, 3);
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].data[0] = gTasks[taskId].data[7];
+ gSprites[spriteId].callback = SpriteCB_PikaSync;
+ gTasks[taskId].data[8] = spriteId;
+ spriteId = CreateSprite(&sOakSpeech_PikaSpriteTemplates[2], 0x18, 0x0D, 1);
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].data[0] = gTasks[taskId].data[7];
+ gSprites[spriteId].callback = SpriteCB_PikaSync;
+ gTasks[taskId].data[9] = spriteId;
+ break;
+ case 1:
+ LoadCompressedObjectPic(&sOakSpeech_GrassPlatformSpriteSheet);
+ LoadSpritePalette(&sOakSpeech_GrassPlatformSpritePal);
+ for (i = 0; i < 3; i++)
+ {
+ spriteId = CreateSprite(&sOakSpeech_GrassPlatformSpriteTemplates[i], i * 32 + 88, 0x70, 1);
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].animPaused = TRUE;
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gTasks[taskId].data[7 + i] = spriteId;
+ }
+ break;
+ }
+}
+
+static void DestroyLinkedPikaOrGrassPlatformSprites(u8 taskId, u8 state)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ DestroySprite(&gSprites[gTasks[taskId].data[7 + i]]);
+ }
+
+ switch (state)
+ {
+ case 0:
+ FreeSpriteTilesByTag(0x1003);
+ FreeSpriteTilesByTag(0x1002);
+ FreeSpriteTilesByTag(0x1001);
+ FreeSpritePaletteByTag(0x1001);
+ break;
+ case 1:
+ FreeSpriteTilesByTag(0x1000);
+ FreeSpritePaletteByTag(0x1000);
+ break;
+ }
+}
+
+static void LoadOaksSpeechTrainerPic(u16 whichPic, u16 tileOffset)
+{
+ u32 i;
+
+ switch (whichPic)
+ {
+ case 0: // FIRE
+ LoadPalette(sOakSpeechGfx_RedPal, 0x40, 0x40);
+ LZ77UnCompVram(sOakSpeechGfx_RedPic, (void *)0x06000600 + tileOffset);
+ break;
+ case 1: // LEAF
+ LoadPalette(sOakSpeechGfx_LeafPal, 0x40, 0x40);
+ LZ77UnCompVram(sOakSpeechGfx_LeafPic, (void *)0x06000600 + tileOffset);
+ break;
+ case 2: // BLUE
+ LoadPalette(sOakSpeechGfx_RivalPal, 0x60, 0x40);
+ LZ77UnCompVram(sOakSpeechGfx_RivalPic, (void *)0x06000600 + tileOffset);
+ break;
+ case 3: // OAK
+ LoadPalette(sOakSpeechGfx_OakPal, 0x60, 0x40);
+ LZ77UnCompVram(sOakSpeechGfx_OakPic, (void *)0x06000600 + tileOffset);
+ break;
+ default:
+ return;
+ }
+
+ sOakSpeechResources->trainerPicTilemapBuffer = AllocZeroed(0x60);
+ for (i = 0; i < 0x60; i++)
+ ((u8 *)sOakSpeechResources->trainerPicTilemapBuffer)[i] = i;
+ FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x10);
+ CopyRectToBgTilemapBufferRect(2, sOakSpeechResources->trainerPicTilemapBuffer, 0, 0, 8, 12, 11, 2, 8, 12, 0x10, (tileOffset / 64) + 0x18, 0x00);
+ CopyBgTilemapBufferToVram(2);
+ Free(sOakSpeechResources->trainerPicTilemapBuffer);
+ sOakSpeechResources->trainerPicTilemapBuffer = 0;
+}
+
+static void DestroyOaksSpeechTrainerPic(void)
+{
+ FillBgTilemapBufferRect(2, 0x000, 11, 1, 8, 12, 0x10);
+ CopyBgTilemapBufferToVram(2);
+}
+
+static void Task_SlowFadeIn(u8 taskId)
+{
+ u8 i = 0;
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gTasks[gTasks[taskId].data[0]].data[2] = 1;
+ DestroyTask(taskId);
+ for (i = 0; i < 3; i++)
+ {
+ gSprites[gTasks[taskId].data[7 + i]].invisible = TRUE;
+ }
+ }
+ else
+ {
+ if (gTasks[taskId].data[4] != 0)
+ gTasks[taskId].data[4]--;
+ else
+ {
+ gTasks[taskId].data[4] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1]--;
+ gTasks[taskId].data[2]++;
+ if (gTasks[taskId].data[1] == 8)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ gSprites[gTasks[taskId].data[7 + i]].invisible ^= TRUE;
+ }
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[2] * 256) + gTasks[taskId].data[1]);
+ }
+ }
+}
+
+static void CreateFadeInTask(u8 taskId, u8 state)
+{
+ u8 taskId2;
+ u8 i = 0;
+
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x10);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ gTasks[taskId].data[2] = 0;
+ taskId2 = CreateTask(Task_SlowFadeIn, 0);
+ gTasks[taskId2].data[0] = taskId;
+ gTasks[taskId2].data[1] = 16;
+ gTasks[taskId2].data[2] = 0;
+ gTasks[taskId2].data[3] = state;
+ gTasks[taskId2].data[4] = state;
+ for (i = 0; i < 3; i++)
+ {
+ gTasks[taskId2].data[7 + i] = gTasks[taskId].data[7 + i];
+ }
+}
+
+static void Task_SlowFadeOut(u8 taskId)
+{
+ u8 i = 0;
+
+ if (gTasks[taskId].data[1] == 16)
+ {
+ if (!gPaletteFade.active)
+ {
+ gTasks[gTasks[taskId].data[0]].data[2] = 1;
+ DestroyTask(taskId);
+ }
+ }
+ else
+ {
+ if (gTasks[taskId].data[4] != 0)
+ gTasks[taskId].data[4]--;
+ else
+ {
+ gTasks[taskId].data[4] = gTasks[taskId].data[3];
+ gTasks[taskId].data[1] += 2;
+ gTasks[taskId].data[2] -= 2;
+ if (gTasks[taskId].data[1] == 8)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ gSprites[gTasks[taskId].data[7 + i]].invisible ^= TRUE;
+ }
+ }
+ SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[2] * 256) + gTasks[taskId].data[1]);
+ }
+ }
+}
+
+static void CreateFadeOutTask(u8 taskId, u8 state)
+{
+ u8 taskId2;
+ u8 i = 0;
+
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_OBJ);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x1000);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ gTasks[taskId].data[2] = 0;
+ taskId2 = CreateTask(Task_SlowFadeOut, 0);
+ gTasks[taskId2].data[0] = taskId;
+ gTasks[taskId2].data[1] = 0;
+ gTasks[taskId2].data[2] = 16;
+ gTasks[taskId2].data[3] = state;
+ gTasks[taskId2].data[4] = state;
+ for (i = 0; i < 3; i++)
+ {
+ gTasks[taskId2].data[7 + i] = gTasks[taskId].data[7 + i];
+ }
+}
+
+static void PrintNameChoiceOptions(u8 taskId, u8 state)
+{
+ s16 * data = gTasks[taskId].data;
+ const u8 *const * textPtrs;
+ u8 i;
+
+ data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[3]);
+ PutWindowTilemap(data[13]);
+ SetWindowBorderStyle(data[13], 1, sub_80F796C(), 14);
+ FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
+ AddTextPrinterParameterized(data[13], 2, gOtherText_NewName, 8, 1, 0, NULL);
+ if (state == 0)
+ textPtrs = gSaveBlock2Ptr->playerGender == MALE ? sMaleNameChoices : sFemaleNameChoices;
+ else
+ textPtrs = sRivalNameChoices;
+ for (i = 0; i < 4; i++)
+ {
+ AddTextPrinterParameterized(data[13], 2, textPtrs[i], 8, 16 * (i + 1) + 1, 0, NULL);
+ }
+ ProgramAndPlaceMenuCursorOnWindow(data[13], 2, 0, 1, 16, 5, 0);
+ CopyWindowToVram(data[13], 3);
+}
+
+static void GetDefaultName(u8 arg0, u8 namePick)
+{
+ const u8 * src;
+ u8 * dest;
+ u8 i;
+
+ if (arg0 == 0)
+ {
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ src = sMaleNameChoices[Random() % 19];
+ else
+ src = sFemaleNameChoices[Random() % 19];
+ dest = gSaveBlock2Ptr->playerName;
+ }
+ else
+ {
+ src = sRivalNameChoices[namePick];
+ dest = gSaveBlock1Ptr->rivalName;
+ }
+ for (i = 0; i < PLAYER_NAME_LENGTH - 1 && src[i] != EOS; i++)
+ dest[i] = src[i];
+ for (; i < PLAYER_NAME_LENGTH; i++)
+ dest[i] = EOS;
+}
diff --git a/src/roamer.c b/src/roamer.c
new file mode 100644
index 000000000..6ad009e8b
--- /dev/null
+++ b/src/roamer.c
@@ -0,0 +1,238 @@
+#include "global.h"
+#include "roamer.h"
+#include "random.h"
+#include "overworld.h"
+#include "field_specials.h"
+#include "constants/species.h"
+
+EWRAM_DATA u8 sLocationHistory[3][2] = {};
+EWRAM_DATA u8 sRoamerLocation[2] = {};
+
+#define saveRoamer (*(&gSaveBlock1Ptr->roamer))
+
+enum
+{
+ MAP_GRP = 0, // map group
+ MAP_NUM = 1, // map number
+};
+
+const u8 sRoamerLocations[][7] = {
+ {0x13, 0x14, 0x27, 0x29, 0xff, 0xff, 0xff},
+ {0x14, 0x13, 0x15, 0x29, 0xff, 0xff, 0xff},
+ {0x15, 0x14, 0x16, 0xff, 0xff, 0xff, 0xff},
+ {0x16, 0x15, 0x17, 0x1b, 0x2b, 0xff, 0xff},
+ {0x17, 0x16, 0x18, 0x19, 0x1a, 0x1b, 0x2b},
+ {0x18, 0x17, 0x19, 0x1a, 0x1d, 0xff, 0xff},
+ {0x19, 0x17, 0x18, 0x1a, 0x22, 0xff, 0xff},
+ {0x1a, 0x17, 0x18, 0x19, 0x1c, 0x1e, 0xff},
+ {0x1b, 0x16, 0x17, 0x1c, 0x2b, 0xff, 0xff},
+ {0x1c, 0x1a, 0x1b, 0x1e, 0xff, 0xff, 0xff},
+ {0x1d, 0x18, 0x1e, 0xff, 0xff, 0xff, 0xff},
+ {0x1e, 0x1c, 0x1d, 0x1f, 0xff, 0xff, 0xff},
+ {0x1f, 0x1e, 0x20, 0xff, 0xff, 0xff, 0xff},
+ {0x20, 0x1f, 0x21, 0xff, 0xff, 0xff, 0xff},
+ {0x21, 0x20, 0x24, 0x25, 0xff, 0xff, 0xff},
+ {0x22, 0x19, 0x23, 0xff, 0xff, 0xff, 0xff},
+ {0x23, 0x22, 0x24, 0xff, 0xff, 0xff, 0xff},
+ {0x24, 0x21, 0x23, 0x25, 0xff, 0xff, 0xff},
+ {0x25, 0x21, 0x24, 0x26, 0xff, 0xff, 0xff},
+ {0x26, 0x25, 0x27, 0xff, 0xff, 0xff, 0xff},
+ {0x27, 0x13, 0x26, 0xff, 0xff, 0xff, 0xff},
+ {0x29, 0x13, 0x14, 0x2a, 0xff, 0xff, 0xff},
+ {0x2a, 0x29, 0x14, 0xff, 0xff, 0xff, 0xff},
+ {0x2b, 0x16, 0x17, 0x1b, 0xff, 0xff, 0xff},
+ {0x2c, 0x2b, 0x1b, 0xff, 0xff, 0xff, 0xff},
+ {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
+};
+
+void ClearRoamerData(void)
+{
+ u32 i;
+ gSaveBlock1Ptr->roamer = (struct Roamer){};
+ sRoamerLocation[MAP_GRP] = 0;
+ sRoamerLocation[MAP_NUM] = 0;
+ for (i = 0; i < 3; i++)
+ {
+ sLocationHistory[i][MAP_GRP] = 0;
+ sLocationHistory[i][MAP_NUM] = 0;
+ }
+}
+
+#define GetRoamerSpecies() ({\
+ u16 a;\
+ switch (ScrSpecial_GetStarter())\
+ {\
+ default:\
+ a = SPECIES_RAIKOU;\
+ break;\
+ case SPECIES_BULBASAUR:\
+ a = SPECIES_ENTEI;\
+ break;\
+ case SPECIES_CHARMANDER:\
+ a = SPECIES_SUICUNE;\
+ break;\
+ }\
+ a;\
+})
+
+void CreateInitialRoamerMon(void)
+{
+ struct Pokemon * tmpMon = &gEnemyParty[0];
+ u16 roamerMon;
+
+ CreateMon(tmpMon, (roamerMon = GetRoamerSpecies()), 50, 0x20, 0, 0, 0, 0);
+ saveRoamer.species = roamerMon;
+ saveRoamer.level = 50;
+ saveRoamer.status = 0;
+ saveRoamer.active = TRUE;
+ saveRoamer.ivs = GetMonData(tmpMon, MON_DATA_IVS);
+ saveRoamer.personality = GetMonData(tmpMon, MON_DATA_PERSONALITY);
+ saveRoamer.hp = GetMonData(tmpMon, MON_DATA_MAX_HP);
+ saveRoamer.cool = GetMonData(tmpMon, MON_DATA_COOL);
+ saveRoamer.beauty = GetMonData(tmpMon, MON_DATA_BEAUTY);
+ saveRoamer.cute = GetMonData(tmpMon, MON_DATA_CUTE);
+ saveRoamer.smart = GetMonData(tmpMon, MON_DATA_SMART);
+ saveRoamer.tough = GetMonData(tmpMon, MON_DATA_TOUGH);
+ sRoamerLocation[MAP_GRP] = 3;
+ sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0];
+}
+
+void InitRoamer(void)
+{
+ ClearRoamerData();
+ CreateInitialRoamerMon();
+}
+
+void UpdateLocationHistoryForRoamer(void)
+{
+ sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP];
+ sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM];
+ sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP];
+ sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM];
+ sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup;
+ sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum;
+}
+
+void RoamerMoveToOtherLocationSet(void)
+{
+ u8 mapNum = 0;
+ struct Roamer *roamer = &saveRoamer;
+
+ if (!roamer->active)
+ return;
+
+ sRoamerLocation[MAP_GRP] = 3;
+
+ while (1)
+ {
+ mapNum = sRoamerLocations[Random() % (ARRAY_COUNT(sRoamerLocations) - 1)][0];
+ if (sRoamerLocation[MAP_NUM] != mapNum)
+ {
+ sRoamerLocation[MAP_NUM] = mapNum;
+ return;
+ }
+ }
+}
+
+
+void RoamerMove(void)
+{
+ u8 locSet = 0;
+
+ if ((Random() % 16) == 0)
+ {
+ RoamerMoveToOtherLocationSet();
+ }
+ else
+ {
+ struct Roamer *roamer = &saveRoamer;
+
+ if (!roamer->active)
+ return;
+
+ while (locSet < (ARRAY_COUNT(sRoamerLocations) - 1))
+ {
+ if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0])
+ {
+ u8 mapNum;
+ while (1)
+ {
+ mapNum = sRoamerLocations[locSet][(Random() % 6) + 1];
+ if (!(sLocationHistory[2][MAP_GRP] == 3 && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != 0xFF)
+ break;
+ }
+ sRoamerLocation[MAP_NUM] = mapNum;
+ return;
+ }
+ locSet++;
+ }
+ }
+}
+
+bool8 IsRoamerAt(u8 mapGroup, u8 mapNum)
+{
+ struct Roamer *roamer = &saveRoamer;
+
+ if (roamer->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM])
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void CreateRoamerMonInstance(void)
+{
+ struct Pokemon *mon;
+ struct Roamer *roamer;
+
+ mon = &gEnemyParty[0];
+ ZeroEnemyPartyMons();
+ roamer = &saveRoamer;
+ CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality);
+ SetMonData(mon, MON_DATA_STATUS, &gSaveBlock1Ptr->roamer.status);
+ SetMonData(mon, MON_DATA_HP, &gSaveBlock1Ptr->roamer.hp);
+ SetMonData(mon, MON_DATA_COOL, &gSaveBlock1Ptr->roamer.cool);
+ SetMonData(mon, MON_DATA_BEAUTY, &gSaveBlock1Ptr->roamer.beauty);
+ SetMonData(mon, MON_DATA_CUTE, &gSaveBlock1Ptr->roamer.cute);
+ SetMonData(mon, MON_DATA_SMART, &gSaveBlock1Ptr->roamer.smart);
+ SetMonData(mon, MON_DATA_TOUGH, &gSaveBlock1Ptr->roamer.tough);
+}
+
+bool8 TryStartRoamerEncounter(void)
+{
+ if (IsRoamerAt(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum) == TRUE && (Random() % 4) == 0)
+ {
+ CreateRoamerMonInstance();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+void UpdateRoamerHPStatus(struct Pokemon *mon)
+{
+ saveRoamer.hp = GetMonData(mon, MON_DATA_HP);
+ saveRoamer.status = GetMonData(mon, MON_DATA_STATUS);
+
+ RoamerMoveToOtherLocationSet();
+}
+
+void SetRoamerInactive(void)
+{
+ struct Roamer *roamer = &saveRoamer;
+ roamer->active = FALSE;
+}
+
+void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
+{
+ *mapGroup = sRoamerLocation[MAP_GRP];
+ *mapNum = sRoamerLocation[MAP_NUM];
+}
+
+u16 GetRoamerLocationMapSectionId(void)
+{
+ struct Roamer *roamer = &saveRoamer;
+ if (!saveRoamer.active)
+ return 0xC5;
+ return get_mapheader_by_bank_and_number(sRoamerLocation[MAP_GRP], sRoamerLocation[MAP_NUM])->regionMapSectionId;
+}
diff --git a/src/scanline_effect.c b/src/scanline_effect.c
new file mode 100644
index 000000000..22699b96d
--- /dev/null
+++ b/src/scanline_effect.c
@@ -0,0 +1,262 @@
+#include "global.h"
+#include "battle.h"
+#include "task.h"
+#include "trig.h"
+#include "scanline_effect.h"
+
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
+
+static void CopyValue16Bit(void);
+static void CopyValue32Bit(void);
+
+// EWRAM vars
+
+// Per-scanline register values.
+// This is double buffered so that it can be safely written to at any time
+// without overwriting the buffer that the DMA is currently reading
+EWRAM_DATA u16 gScanlineEffectRegBuffers[2][0x3C0] = {0};
+
+EWRAM_DATA struct ScanlineEffect gScanlineEffect = {0};
+EWRAM_DATA static bool8 sShouldStopWaveTask = FALSE;
+
+void ScanlineEffect_Stop(void)
+{
+ gScanlineEffect.state = 0;
+ DmaStop(0);
+ if (gScanlineEffect.waveTaskId != 0xFF)
+ {
+ DestroyTask(gScanlineEffect.waveTaskId);
+ gScanlineEffect.waveTaskId = 0xFF;
+ }
+}
+
+void ScanlineEffect_Clear(void)
+{
+ CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
+ gScanlineEffect.dmaSrcBuffers[0] = NULL;
+ gScanlineEffect.dmaSrcBuffers[1] = NULL;
+ gScanlineEffect.dmaDest = NULL;
+ gScanlineEffect.dmaControl = 0;
+ gScanlineEffect.srcBuffer = 0;
+ gScanlineEffect.state = 0;
+ gScanlineEffect.unused16 = 0;
+ gScanlineEffect.unused17 = 0;
+ gScanlineEffect.waveTaskId = 0xFF;
+}
+
+void ScanlineEffect_SetParams(struct ScanlineEffectParams params)
+{
+ if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-bit
+ {
+ // Set the DMA src to the value for the second scanline because the
+ // first DMA transfer occurs in HBlank *after* the first scanline is drawn
+ gScanlineEffect.dmaSrcBuffers[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1;
+ gScanlineEffect.dmaSrcBuffers[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1;
+ gScanlineEffect.setFirstScanlineReg = CopyValue16Bit;
+ }
+ else // assume 32-bit
+ {
+ // Set the DMA src to the value for the second scanline because the
+ // first DMA transfer occurs in HBlank *after* the first scanline is drawn
+ gScanlineEffect.dmaSrcBuffers[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1;
+ gScanlineEffect.dmaSrcBuffers[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1;
+ gScanlineEffect.setFirstScanlineReg = CopyValue32Bit;
+ }
+
+ gScanlineEffect.dmaControl = params.dmaControl;
+ gScanlineEffect.dmaDest = params.dmaDest;
+ gScanlineEffect.state = params.initState;
+ gScanlineEffect.unused16 = params.unused9;
+ gScanlineEffect.unused17 = params.unused9;
+}
+
+void ScanlineEffect_InitHBlankDmaTransfer(void)
+{
+ if (gScanlineEffect.state == 0)
+ {
+ return;
+ }
+ else if (gScanlineEffect.state == 3)
+ {
+ gScanlineEffect.state = 0;
+ DmaStop(0);
+ sShouldStopWaveTask = TRUE;
+ }
+ else
+ {
+ DmaStop(0);
+ // Set DMA to copy to dest register on each HBlank for the next frame.
+ // The HBlank DMA transfers do not occurr during VBlank, so the transfer
+ // will begin on the HBlank after the first scanline
+ DmaSet(0, gScanlineEffect.dmaSrcBuffers[gScanlineEffect.srcBuffer], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl);
+ // Manually set the reg for the first scanline
+ gScanlineEffect.setFirstScanlineReg();
+ // Swap current buffer
+ gScanlineEffect.srcBuffer ^= 1;
+ }
+}
+
+// These two functions are used to copy the register for the first scanline,
+// depending whether it is a 16-bit register or a 32-bit register.
+
+static void CopyValue16Bit(void)
+{
+ u16 *dest = (u16 *)gScanlineEffect.dmaDest;
+ u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+
+ *dest = *src;
+}
+
+static void CopyValue32Bit(void)
+{
+ u32 *dest = (u32 *)gScanlineEffect.dmaDest;
+ u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer];
+
+ *dest = *src;
+}
+
+#define tStartLine data[0]
+#define tEndLine data[1]
+#define tWaveLength data[2]
+#define tSrcBufferOffset data[3]
+#define tFramesUntilMove data[4]
+#define tDelayInterval data[5]
+#define tRegOffset data[6]
+#define tApplyBattleBgOffsets data[7]
+
+static void TaskFunc_UpdateWavePerFrame(u8 taskId)
+{
+ int value = 0;
+ int i;
+ int offset;
+
+ if (sShouldStopWaveTask)
+ {
+ DestroyTask(taskId);
+ gScanlineEffect.waveTaskId = 0xFF;
+ }
+ else
+ {
+ if (gTasks[taskId].tApplyBattleBgOffsets)
+ {
+ switch (gTasks[taskId].tRegOffset)
+ {
+ case SCANLINE_EFFECT_REG_BG0HOFS:
+ value = gBattle_BG0_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG0VOFS:
+ value = gBattle_BG0_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG1HOFS:
+ value = gBattle_BG1_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG1VOFS:
+ value = gBattle_BG1_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG2HOFS:
+ value = gBattle_BG2_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG2VOFS:
+ value = gBattle_BG2_Y;
+ break;
+ case SCANLINE_EFFECT_REG_BG3HOFS:
+ value = gBattle_BG3_X;
+ break;
+ case SCANLINE_EFFECT_REG_BG3VOFS:
+ value = gBattle_BG3_Y;
+ break;
+ }
+ }
+ if (gTasks[taskId].tFramesUntilMove != 0)
+ {
+ gTasks[taskId].tFramesUntilMove--;
+ offset = gTasks[taskId].tSrcBufferOffset + 320;
+ for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value;
+ offset++;
+ }
+ }
+ else
+ {
+ gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval;
+ offset = gTasks[taskId].tSrcBufferOffset + 320;
+ for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++)
+ {
+ gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value;
+ offset++;
+ }
+
+ // increment src buffer offset
+ gTasks[taskId].tSrcBufferOffset++;
+ if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength)
+ gTasks[taskId].tSrcBufferOffset = 0;
+ }
+ }
+}
+
+static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused)
+{
+ u16 i = 0;
+ u8 theta = 0;
+
+ while (i < 256)
+ {
+ buffer[i] = (gSineTable[theta] * amplitude) / 256;
+ theta += frequency;
+ i++;
+ }
+}
+
+// Initializes a background "wave" effect that affects scanlines startLine (inclusive) to endLine (exclusive).
+// 'frequency' and 'amplitude' control the frequency and amplitude of the wave.
+// 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames.
+// 'regOffset' is the offset of the video register to modify.
+u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets)
+{
+ int i;
+ int offset;
+ struct ScanlineEffectParams params;
+ u8 taskId;
+
+ ScanlineEffect_Clear();
+
+ params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset);
+ params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT;
+ params.initState = 1;
+ params.unused9 = 0;
+ ScanlineEffect_SetParams(params);
+
+ taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0);
+
+ gTasks[taskId].tStartLine = startLine;
+ gTasks[taskId].tEndLine = endLine;
+ gTasks[taskId].tWaveLength = 256 / frequency;
+ gTasks[taskId].tSrcBufferOffset = 0;
+ gTasks[taskId].tFramesUntilMove = delayInterval;
+ gTasks[taskId].tDelayInterval = delayInterval;
+ gTasks[taskId].tRegOffset = regOffset;
+ gTasks[taskId].tApplyBattleBgOffsets = applyBattleBgOffsets;
+
+ gScanlineEffect.waveTaskId = taskId;
+ sShouldStopWaveTask = FALSE;
+
+ GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine);
+
+ offset = 320;
+ for (i = startLine; i < endLine; i++)
+ {
+ gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset];
+ gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset];
+ offset++;
+ }
+
+ return taskId;
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 12b35daa4..e7c61db1f 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1567,7 +1567,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
ptr = (u8 *)ctx->data[0];
sub_80F6E9C();
- sub_80F6EE4(0, 1);
+ DrawDialogueFrame(0, 1);
AddTextPrinterParameterized(0, 6, ptr, 0, 1, 0, NULL);
return FALSE;
}
@@ -1636,8 +1636,8 @@ bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx)
return FALSE;
}
-extern const u8 gUnknown_83A72A0[];
-extern const u8 gUnknown_83A72A2[];
+const u8 gUnknown_83A72A0[] = _("S");
+const u8 gUnknown_83A72A2[] = _("IES");
bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx)
{
diff --git a/src/sound.c b/src/sound.c
index f94e44506..ba6511d1c 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -40,7 +40,23 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_SE3;
extern struct ToneData gCryTable[];
extern struct ToneData gCryTable2[];
-extern const struct Fanfare sFanfares[];
+
+static const struct Fanfare sFanfares[] = {
+ { MUS_FANFA1, 80 },
+ { MUS_FANFA4, 160 },
+ { MUS_FANFA5, 220 },
+ { MUS_ME_WAZA, 220 },
+ { MUS_ME_ASA, 160 },
+ { MUS_ME_BACHI, 340 },
+ { MUS_ME_WASURE, 180 },
+ { MUS_ME_KINOMI, 120 },
+ { MUS_ME_B_BIG, 250 },
+ { MUS_ME_B_SMALL, 150 },
+ { MUS_ME_ZANNEN, 160 },
+ { BGM_FRLG_FLUTE, 450 },
+ { BGM_FRLG_ME_KEYITEM, 170 },
+ { BGM_FRLG_ME_POKEDEX_EVAL, 196 }
+};
extern u16 SpeciesToCryId(u16);
diff --git a/src/text.c b/src/text.c
index 874e12fd5..d83b36f88 100644
--- a/src/text.c
+++ b/src/text.c
@@ -9,7 +9,7 @@
extern u8 gGlyphInfo[0x90];
extern u8 gUnknown_203ADFA;
extern u16 gUnknown_841F408[];
-extern const struct OamData gUnknown_83AC9D0;
+extern const struct OamData gOamData_83AC9D0;
extern void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
@@ -60,7 +60,7 @@ const struct SpriteTemplate gUnknown_81EA6B4 =
{
.tileTag = 0x8000,
.paletteTag = 0x8000,
- .oam = &gUnknown_83AC9D0,
+ .oam = &gOamData_83AC9D0,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
@@ -1791,7 +1791,7 @@ void sub_80062B0(struct Sprite *sprite)
}
}
-u8 sub_8006300(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority)
+u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority)
{
u8 spriteId;
LoadSpriteSheet(&gUnknown_81EA68C[sheetId & 1]);
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index ef34c1629..e914d7ac6 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -1336,7 +1336,7 @@ void sub_815E720(void)
sub_815EC0C();
windowId = AddWindow(gUnknown_847A218);
sub_80F6E9C();
- sub_80F6F1C(windowId, FALSE);
+ DrawStdWindowFrame(windowId, FALSE);
AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL);
for (i = 0; i < 4; i++)
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index 579800576..9cf6a6e04 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -663,7 +663,7 @@ static void Task_VsSeeker_3(u8 taskId)
{
if (sVsSeeker->responseCode == 2)
StartAllRespondantIdleMovements();
- sub_80F6F54(0, 1);
+ ClearDialogWindowAndFrame(0, 1);
sub_80696C0();
ScriptContext2_Disable();
DestroyTask(taskId);
diff --git a/sym_ewram.txt b/sym_ewram.txt
index b978e59c4..36b7c991c 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -116,28 +116,28 @@ gUnknown_2022870: @ 2022870
gUnknown_2022874: @ 2022874
.space 0x100
-gUnknown_2022974: @ 2022974
+gBattle_BG0_X: @ 2022974
.space 0x2
-gUnknown_2022976: @ 2022976
+gBattle_BG0_Y: @ 2022976
.space 0x2
-gUnknown_2022978: @ 2022978
+gBattle_BG1_X: @ 2022978
.space 0x2
-gUnknown_202297A: @ 202297A
+gBattle_BG1_Y: @ 202297A
.space 0x2
-gUnknown_202297C: @ 202297C
+gBattle_BG2_X: @ 202297C
.space 0x2
-gUnknown_202297E: @ 202297E
+gBattle_BG2_Y: @ 202297E
.space 0x2
-gUnknown_2022980: @ 2022980
+gBattle_BG3_X: @ 2022980
.space 0x2
-gUnknown_2022982: @ 2022982
+gBattle_BG3_Y: @ 2022982
.space 0x2
gUnknown_2022984: @ 2022984
@@ -869,30 +869,9 @@ gUnknown_20386DC: @ 20386DC
gFieldEffectArguments: @ 20386E0
.space 0x20
-gUnknown_2038700: @ 2038700
- .space 0x2
-
-gUnknown_2038702: @ 2038702
- .space 0x2
-
-gUnknown_2038704: @ 2038704
- .space 0x27C
-
-gUnknown_2038980: @ 2038980
- .space 0x500
-
-gUnknown_2038E80: @ 2038E80
- .space 0x140
-
-gUnknown_2038FC0: @ 2038FC0
- .space 0x640
-
-gUnknown_2039600: @ 2039600
- .space 0x1C
-
-gUnknown_203961C: @ 203961C
- .space 0x4
+ .include "src/scanline_effect.o"
+ .align 2
gUnknown_2039620: @ 2039620
.space 0x4
@@ -1531,9 +1510,7 @@ gUnknown_203B0EE: @ 203B0EE
.space 0x2
.include "src/fame_checker.o"
-
-gUnknown_203B108: @ 203B108
- .space 0x4
+ .include "src/oak_speech.o"
gUnknown_203B10C: @ 203B10C
.space 0xA
@@ -1661,10 +1638,10 @@ gUnknown_203F3A0: @ 203F3A0
gUnknown_203F3A4: @ 203F3A4
.space 0x4
-gUnknown_203F3A8: @ 203F3A8
+sLocationHistory: @ 203F3A8
.space 0x6
-gUnknown_203F3AE: @ 203F3AE
+sRoamerLocation: @ 203F3AE
.space 0x2
gUnknown_203F3B0: @ 203F3B0
diff --git a/tools/gbafix/gbafix.c b/tools/gbafix/gbafix.c
index d5e2f62ab..81c8c04c0 100644
--- a/tools/gbafix/gbafix.c
+++ b/tools/gbafix/gbafix.c
@@ -160,7 +160,7 @@ int main(int argc, char *argv[])
// get filename
for (arg=1; arg<argc; arg++)
{
- if ((ARGV[0] != '-')) { argfile=ARGV; }
+ if (ARGV[0] != '-') { argfile=ARGV; }
if (strncmp("--silent", &ARGV[0], 7) == 0) { silent = 1; }
}
diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile
index 339585b92..93bea4bdc 100644
--- a/tools/gbagfx/Makefile
+++ b/tools/gbagfx/Makefile
@@ -1,16 +1,19 @@
CC = gcc
-CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
+CFLAGS = -Wall -Wextra -Werror -Wno-sign-compare -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK
LIBS = -lpng -lz
-SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c
+SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c huff.c
.PHONY: all clean
all: gbagfx
@:
+gbagfx-debug: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h rl.h util.h font.h
+ $(CC) $(CFLAGS) -DDEBUG $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
+
gbagfx: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h rl.h util.h font.h
$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
diff --git a/tools/gbagfx/gfx.c b/tools/gbagfx/gfx.c
index da92771b9..f927deed9 100644
--- a/tools/gbagfx/gfx.c
+++ b/tools/gbagfx/gfx.c
@@ -4,7 +4,6 @@
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
-#include <string.h>
#include "global.h"
#include "gfx.h"
#include "util.h"
@@ -19,140 +18,6 @@
#define DOWNCONVERT_BIT_DEPTH(x) ((x) / 8)
-static inline void swap_bytes(unsigned char * orig, unsigned char * dest) {
- unsigned char tmp = *orig;
- *orig = *dest;
- *dest = tmp;
-}
-
-static inline unsigned char swap_nybbles(unsigned char orig)
-{
- return (orig >> 4) | (orig << 4);
-}
-
-static inline void swap_bytes_nybswap(unsigned char * orig, unsigned char * dest) {
- unsigned char tmp = swap_nybbles(*orig);
- *orig = swap_nybbles(*dest);
- *dest = tmp;
-}
-
-static inline unsigned char reverse_bits(unsigned char orig) {
- unsigned char dest = 0;
- for (int i = 0; i < 8; i++)
- {
- dest <<= 1;
- dest |= orig & 1;
- orig >>= 1;
- }
- return dest;
-}
-
-static void vflip(unsigned char * tile, int bitDepth) {
- for (int x = 0; x < bitDepth; x++)
- {
- unsigned char * col = tile + x;
- swap_bytes(col + 0 * bitDepth, col + 7 * bitDepth);
- swap_bytes(col + 1 * bitDepth, col + 6 * bitDepth);
- swap_bytes(col + 2 * bitDepth, col + 5 * bitDepth);
- swap_bytes(col + 3 * bitDepth, col + 4 * bitDepth);
- }
-}
-
-static void hflip(unsigned char * tile, int bitDepth) {
- for (int y = 0; y < 8; y++)
- {
- unsigned char * row = tile + y * bitDepth;
- switch (bitDepth)
- {
- case 1:
- *row = reverse_bits(*row);
- break;
- case 4:
- swap_bytes_nybswap(row + 0, row + 3);
- swap_bytes_nybswap(row + 1, row + 2);
- break;
- case 8:
- swap_bytes(row + 0, row + 56);
- swap_bytes(row + 8, row + 48);
- swap_bytes(row + 16, row + 40);
- swap_bytes(row + 24, row + 32);
- break;
- }
- }
-}
-
-static unsigned char * ApplyTilemap(struct Image *image, unsigned char * buffer, int bitDepth)
-{
- int tileSize = bitDepth * 8;
- unsigned char * tiles = calloc(image->tileMap.numTiles, tileSize);
- int i;
- struct Tile tileInfo;
-
- for (i = 0; i < image->tileMap.numTiles; i++) {
- tileInfo = image->tileMap.data[i];
- unsigned char * tile = tiles + i * tileSize;
- memcpy(tile, buffer + tileInfo.index * tileSize, tileSize);
- if (tileInfo.xflip)
- hflip(tile, bitDepth);
- if (tileInfo.yflip)
- vflip(tile, bitDepth);
- }
- free(buffer);
- return tiles;
-}
-
-static unsigned char * BuildTilemap(struct Image *image, unsigned char * buffer, int * bufferSize)
-{
- int tileSize = image->bitDepth * 8;
- unsigned char * outputPixels = calloc(1024, tileSize);
- int nTilesIn = image->height * image->width / 64;
- image->tileMap.data = calloc(nTilesIn, sizeof(struct Tilemap));
- image->tileMap.numTiles = nTilesIn;
- int nTilesOut = 0;
- unsigned char curTile1[tileSize];
- unsigned char curTile2[tileSize];
-
- for (int i = 0; i < nTilesIn; i++) {
- bool xflip = false;
- bool yflip = false;
- int j;
- memcpy(curTile1, buffer + i * tileSize, tileSize);
-
- for (j = 0; j < nTilesOut; j++) {
- memcpy(curTile2, outputPixels + j * tileSize, tileSize);
- if (memcmp(curTile1, curTile2, tileSize) == 0)
- break;
- xflip = true;
- hflip(curTile2, image->bitDepth);
- if (memcmp(curTile1, curTile2, tileSize) == 0)
- break;
- yflip = true;
- vflip(curTile2, image->bitDepth);
- if (memcmp(curTile1, curTile2, tileSize) == 0)
- break;
- xflip = false;
- hflip(curTile2, image->bitDepth);
- if (memcmp(curTile1, curTile2, tileSize) == 0)
- break;
- yflip = false;
- }
- image->tileMap.data[i].index = j;
- image->tileMap.data[i].xflip = xflip;
- image->tileMap.data[i].yflip = yflip;
- image->tileMap.data[i].palno = 0;
- if (j >= nTilesOut) {
- if (nTilesOut >= 1024)
- FATAL_ERROR("Cannot reduce image to 1024 or fewer tiles.\n");
- memcpy(outputPixels + nTilesOut * tileSize, curTile1, tileSize);
- nTilesOut++;
- }
- }
-
- free(buffer);
- *bufferSize = nTilesOut * tileSize;
- return outputPixels;
-}
-
static void AdvanceMetatilePosition(int *subTileX, int *subTileY, int *metatileX, int *metatileY, int metatilesWide, int metatileWidth, int metatileHeight)
{
(*subTileX)++;
@@ -345,21 +210,15 @@ void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int
int fileSize;
unsigned char *buffer = ReadWholeFile(path, &fileSize);
- int numTiles;
- if (image->hasTilemap) {
- buffer = ApplyTilemap(image, buffer, bitDepth);
- numTiles = image->tileMap.numTiles;
- }
- else
- numTiles = fileSize / tileSize;
+ int numTiles = fileSize / tileSize;
int tilesHeight = (numTiles + tilesWidth - 1) / tilesWidth;
if (tilesWidth % metatileWidth != 0)
- FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)\n", tilesWidth, metatileWidth);
+ FATAL_ERROR("The width in tiles (%d) isn't a multiple of the specified metatile width (%d)", tilesWidth, metatileWidth);
if (tilesHeight % metatileHeight != 0)
- FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)\n", tilesHeight, metatileHeight);
+ FATAL_ERROR("The height in tiles (%d) isn't a multiple of the specified metatile height (%d)", tilesHeight, metatileHeight);
image->width = tilesWidth * 8;
image->height = tilesHeight * 8;
@@ -432,9 +291,6 @@ void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int m
break;
}
- if (image->hasTilemap)
- buffer = BuildTilemap(image, buffer, &bufferSize);
-
WriteWholeFile(path, buffer, bufferSize);
free(buffer);
@@ -444,11 +300,6 @@ void FreeImage(struct Image *image)
{
free(image->pixels);
image->pixels = NULL;
- if (image->hasTilemap && image->tileMap.data != NULL) {
- free(image->tileMap.data);
- image->tileMap.data = NULL;
- image->tileMap.numTiles = 0;
- }
}
void ReadGbaPalette(char *path, struct Palette *palette)
@@ -491,45 +342,3 @@ void WriteGbaPalette(char *path, struct Palette *palette)
fclose(fp);
}
-
-void ReadGbaTilemap(char *path, struct Tilemap *tileMap)
-{
- int fileSize;
- unsigned char *data = ReadWholeFile(path, &fileSize);
-
- if (fileSize % 2 != 0)
- FATAL_ERROR("The file size (%d) is not a multiple of 2.\n", fileSize);
-
- tileMap->numTiles = fileSize / 2;
- tileMap->data = malloc(tileMap->numTiles * sizeof(struct Tile));
-
- for (int i = 0; i < tileMap->numTiles; i++)
- {
- uint16_t raw = data[2 * i + 0] | (data[2 * i + 1] << 8);
- tileMap->data[i].index = raw & 0x3FF;
- tileMap->data[i].xflip = raw & 0x400 ? 1 : 0;
- tileMap->data[i].yflip = raw & 0x800 ? 1 : 0;
- tileMap->data[i].palno = raw >> 12;
- }
-
- free(data);
-}
-
-void WriteGbaTilemap(char *path, struct Tilemap *tileMap)
-{
- FILE *fp = fopen(path, "wb");
-
- if (fp == NULL)
- FATAL_ERROR("Failed to open \"%s\" for writing.\n", path);
-
- for (int i = 0; i < tileMap->numTiles; i++) {
- uint16_t raw = tileMap->data[i].index
- | (tileMap->data[i].xflip << 10)
- | (tileMap->data[i].yflip << 11)
- | (tileMap->data[i].palno << 12);
- fputc(raw & 0xFF, fp);
- fputc(raw >> 8, fp);
- }
-
- fclose(fp);
-}
diff --git a/tools/gbagfx/gfx.h b/tools/gbagfx/gfx.h
index 15a3c6a6c..5355ced85 100644
--- a/tools/gbagfx/gfx.h
+++ b/tools/gbagfx/gfx.h
@@ -17,18 +17,6 @@ struct Palette {
int numColors;
};
-struct __attribute__((packed)) Tile {
- unsigned short index:10;
- unsigned short xflip:1;
- unsigned short yflip:1;
- unsigned short palno:4;
-};
-
-struct Tilemap {
- struct Tile *data;
- int numTiles;
-};
-
struct Image {
int width;
int height;
@@ -37,9 +25,6 @@ struct Image {
bool hasPalette;
struct Palette palette;
bool hasTransparency;
- struct Tilemap tileMap;
- bool hasTilemap;
-
};
void ReadImage(char *path, int tilesWidth, int bitDepth, int metatileWidth, int metatileHeight, struct Image *image, bool invertColors);
@@ -47,7 +32,5 @@ void WriteImage(char *path, int numTiles, int bitDepth, int metatileWidth, int m
void FreeImage(struct Image *image);
void ReadGbaPalette(char *path, struct Palette *palette);
void WriteGbaPalette(char *path, struct Palette *palette);
-void ReadGbaTilemap(char *path, struct Tilemap *tileMap);
-void WriteGbaTilemap(char *path, struct Tilemap *tileMap);
#endif // GFX_H
diff --git a/tools/gbagfx/huff.c b/tools/gbagfx/huff.c
new file mode 100644
index 000000000..143ed79be
--- /dev/null
+++ b/tools/gbagfx/huff.c
@@ -0,0 +1,398 @@
+#include <stdbool.h>
+#include <string.h>
+#include <assert.h>
+#include <stdio.h>
+#include <stdint.h>
+#include "global.h"
+#include "huff.h"
+
+static int cmp_tree(const void * a0, const void * b0) {
+ return ((struct HuffData *)a0)->value - ((struct HuffData *)b0)->value;
+}
+
+typedef int (*cmpfun)(const void *, const void *);
+
+int msort_r(void * data, size_t count, size_t size, cmpfun cmp, void * buffer) {
+ /*
+ * Out-of-place mergesort (stable sort)
+ * Returns 1 on success, 0 on failure
+ */
+ void * leftPtr;
+ void * rightPtr;
+ void * leftEnd;
+ void * rightEnd;
+ int i;
+
+ switch (count) {
+ case 0:
+ // Should never be here
+ return 0;
+
+ case 1:
+ // Nothing to do here
+ break;
+
+ case 2:
+ // Swap the two entries if the right one compares higher.
+ if (cmp(data, data + size) > 0) {
+ memcpy(buffer, data, size);
+ memcpy(data, data + size, size);
+ memcpy(data + size, buffer, size);
+ }
+ break;
+ default:
+ // Merge sort out-of-place.
+ leftPtr = data;
+ leftEnd = rightPtr = data + count / 2 * size;
+ rightEnd = data + count * size;
+
+ // Sort the left half
+ if (!msort_r(leftPtr, count / 2, size, cmp, buffer))
+ return 0;
+
+ // Sort the right half
+ if (!msort_r(rightPtr, count / 2 + (count & 1), size, cmp, buffer))
+ return 0;
+
+ // Merge the sorted halves out of place
+ i = 0;
+ do {
+ if (cmp(leftPtr, rightPtr) <= 0) {
+ memcpy(buffer + i * size, leftPtr, size);
+ leftPtr += size;
+ } else {
+ memcpy(buffer + i * size, rightPtr, size);
+ rightPtr += size;
+ }
+
+ } while (++i < count && leftPtr < leftEnd && rightPtr < rightEnd);
+
+ // Copy the remainder
+ if (i < count) {
+ if (leftPtr < leftEnd) {
+ memcpy(buffer + i * size, leftPtr, leftEnd - leftPtr);
+ }
+ else {
+ memcpy(buffer + i * size, rightPtr, rightEnd - rightPtr);
+ }
+ }
+
+ // Copy the merged data back
+ memcpy(data, buffer, count * size);
+ break;
+ }
+
+ return 1;
+}
+
+int msort(void * data, size_t count, size_t size, cmpfun cmp) {
+ void * buffer = malloc(count * size);
+ if (buffer == NULL) return 0;
+ int result = msort_r(data, count, size, cmp, buffer);
+ free(buffer);
+ return result;
+}
+
+static void write_tree(unsigned char * dest, HuffNode_t * tree, int nitems, struct BitEncoding * encoding) {
+ /*
+ * The example used to guide this function encodes the tree in a
+ * breadth-first manner. We attempt to emulate that here.
+ */
+
+ int i, j, k;
+
+ // There are (2 * nitems - 1) nodes in the binary tree. Allocate that.
+ HuffNode_t * traversal = calloc(2 * nitems - 1, sizeof(HuffNode_t));
+ if (traversal == NULL)
+ FATAL_ERROR("Fatal error while compressing Huff file.\n");
+
+ // The first node is the root of the tree.
+ traversal[0] = *tree;
+ i = 1;
+
+ // Copy the tree into a breadth-first ordering using brute force.
+ for (int depth = 1; i < 2 * nitems - 1; depth++) {
+ // Consider every possible path up to the current depth.
+ for (j = 0; i < 2 * nitems - 1 && j < 1 << depth; j++) {
+ // The index of the path is used to encode the path itself.
+ // Start from the most significant relevant bit and work our way down.
+ // Keep track of the current and previous nodes.
+ HuffNode_t * currNode = traversal;
+ HuffNode_t * parent = NULL;
+ for (k = 0; k < depth; k++) {
+ if (currNode->header.isLeaf)
+ break;
+ parent = currNode;
+ if ((j >> (depth - k - 1)) & 1)
+ currNode = currNode->branch.right;
+ else
+ currNode = currNode->branch.left;
+ }
+ // Check that the length of the current path equals the current depth.
+ if (k == depth) {
+ // Make sure we can encode the current branch.
+ // Bail here if we cannot.
+ // This is only applicable for 8-bit encodings.
+ if (traversal + i - parent > 128)
+ FATAL_ERROR("Fatal error while compressing Huff file: unable to encode binary tree.\n");
+ // Copy the current node, and update its parent.
+ traversal[i] = *currNode;
+ if (parent != NULL) {
+ if ((j & 1) == 1)
+ parent->branch.right = traversal + i;
+ else
+ parent->branch.left = traversal + i;
+ }
+ // Encode the path through the tree in the lookup table
+ if (traversal[i].header.isLeaf) {
+ encoding[traversal[i].leaf.key].nbits = depth;
+ encoding[traversal[i].leaf.key].bitstring = j;
+ }
+ i++;
+ }
+ }
+ }
+
+ // Encode the size of the tree.
+ // This is used by the decompressor to skip the tree.
+ dest[4] = nitems - 1;
+
+ // Encode each node in the tree.
+ for (i = 0; i < 2 * nitems - 1; i++) {
+ HuffNode_t * currNode = traversal + i;
+ if (currNode->header.isLeaf) {
+ dest[5 + i] = traversal[i].leaf.key;
+ } else {
+ dest[5 + i] = (((currNode->branch.right - traversal - i) / 2) - 1);
+ if (currNode->branch.left->header.isLeaf)
+ dest[5 + i] |= 0x80;
+ if (currNode->branch.right->header.isLeaf)
+ dest[5 + i] |= 0x40;
+ }
+ }
+
+ free(traversal);
+}
+
+static inline void write_32_le(unsigned char * dest, int * destPos, uint32_t * buff, int * buffPos) {
+ dest[*destPos] = *buff;
+ dest[*destPos + 1] = *buff >> 8;
+ dest[*destPos + 2] = *buff >> 16;
+ dest[*destPos + 3] = *buff >> 24;
+ *destPos += 4;
+ *buff = 0;
+ *buffPos = 0;
+}
+
+static inline void read_32_le(unsigned char * src, int * srcPos, uint32_t * buff) {
+ uint32_t tmp = src[*srcPos];
+ tmp |= src[*srcPos + 1] << 8;
+ tmp |= src[*srcPos + 2] << 16;
+ tmp |= src[*srcPos + 3] << 24;
+ *srcPos += 4;
+ *buff = tmp;
+}
+
+static void write_bits(unsigned char * dest, int * destPos, struct BitEncoding * encoding, int value, uint32_t * buff, int * buffBits) {
+ int nbits = encoding[value].nbits;
+ uint32_t bitstring = encoding[value].bitstring;
+
+ if (*buffBits + nbits >= 32) {
+ int diff = *buffBits + nbits - 32;
+ *buff <<= nbits - diff;
+ *buff |= bitstring >> diff;
+ bitstring &= ~(1 << diff);
+ nbits = diff;
+ write_32_le(dest, destPos, buff, buffBits);
+ }
+ if (nbits != 0) {
+ *buff <<= nbits;
+ *buff |= bitstring;
+ *buffBits += nbits;
+ }
+}
+
+/*
+=======================================
+MAIN COMPRESSION/DECOMPRESSION ROUTINES
+=======================================
+ */
+
+unsigned char * HuffCompress(unsigned char * src, int srcSize, int * compressedSize_p, int bitDepth) {
+ if (srcSize <= 0)
+ goto fail;
+
+ int worstCaseDestSize = 4 + (2 << bitDepth) + srcSize * 3;
+
+ unsigned char *dest = malloc(worstCaseDestSize);
+ if (dest == NULL)
+ goto fail;
+
+ int nitems = 1 << bitDepth;
+
+ HuffNode_t * freqs = calloc(nitems, sizeof(HuffNode_t));
+ if (freqs == NULL)
+ goto fail;
+
+ struct BitEncoding * encoding = calloc(nitems, sizeof(struct BitEncoding));
+ if (encoding == NULL)
+ goto fail;
+
+ // Set up the frequencies table. This will inform the tree.
+ for (int i = 0; i < nitems; i++) {
+ freqs[i].header.isLeaf = 1;
+ freqs[i].header.value = 0;
+ freqs[i].leaf.key = i;
+ }
+
+ // Count each nybble or byte.
+ for (int i = 0; i < srcSize; i++) {
+ if (bitDepth == 8) {
+ freqs[src[i]].header.value++;
+ } else {
+ freqs[src[i] >> 4].header.value++;
+ freqs[src[i] & 0xF].header.value++;
+ }
+ }
+
+#ifdef DEBUG
+ for (int i = 0; i < nitems; i++) {
+ fprintf(stderr, "%d: %d\n", i, freqs[i].header.value);
+ }
+#endif // DEBUG
+
+ // Sort the frequency table.
+ if (!msort(freqs, nitems, sizeof(HuffNode_t), cmp_tree))
+ goto fail;
+
+ // Prune zero-frequency values.
+ for (int i = 0; i < nitems; i++) {
+ if (freqs[i].header.value != 0) {
+ if (i > 0) {
+ for (int j = i; j < nitems; j++) {
+ freqs[j - i] = freqs[j];
+ }
+ nitems -= i;
+ }
+ break;
+ }
+ // This should never happen:
+ if (i == nitems - 1)
+ goto fail;
+ }
+
+ HuffNode_t * tree = calloc(nitems * 2 - 1, sizeof(HuffNode_t));
+ if (tree == NULL)
+ goto fail;
+
+ // Iteratively collapse the two least frequent nodes.
+ HuffNode_t * endptr = freqs + nitems - 2;
+
+ for (int i = 0; i < nitems - 1; i++) {
+ HuffNode_t * left = freqs;
+ HuffNode_t * right = freqs + 1;
+ tree[i * 2] = *right;
+ tree[i * 2 + 1] = *left;
+ for (int j = 0; j < nitems - i - 2; j++)
+ freqs[j] = freqs[j + 2];
+ endptr->header.isLeaf = 0;
+ endptr->header.value = tree[i * 2].header.value + tree[i * 2 + 1].header.value;
+ endptr->branch.left = tree + i * 2;
+ endptr->branch.right = tree + i * 2 + 1;
+ endptr--;
+ if (i < nitems - 2 && !msort(freqs, nitems - i - 1, sizeof(HuffNode_t), cmp_tree))
+ goto fail;
+ }
+
+ // Write the tree breadth-first, and create the path lookup table.
+ write_tree(dest, freqs, nitems, encoding);
+
+ free(tree);
+ free(freqs);
+
+ // Encode the data itself.
+ int destPos = 4 + nitems * 2;
+ uint32_t destBuf = 0;
+ uint32_t srcBuf = 0;
+ int destBitPos = 0;
+
+ for (int srcPos = 0; srcPos < srcSize;) {
+ read_32_le(src, &srcPos, &srcBuf);
+ for (int i = 0; i < 32 / bitDepth; i++) {
+ write_bits(dest, &destPos, encoding, srcBuf & (0xFF >> (8 - bitDepth)), &destBuf, &destBitPos);
+ srcBuf >>= bitDepth;
+ }
+ }
+
+ if (destBitPos != 0) {
+ write_32_le(dest, &destPos, &destBuf, &destBitPos);
+ }
+
+ free(encoding);
+
+ // Write the header.
+ dest[0] = bitDepth | 0x20;
+ dest[1] = srcSize;
+ dest[2] = srcSize >> 8;
+ dest[3] = srcSize >> 16;
+ *compressedSize_p = (destPos + 3) & ~3;
+ return dest;
+
+fail:
+ FATAL_ERROR("Fatal error while compressing Huff file.\n");
+}
+
+unsigned char * HuffDecompress(unsigned char * src, int srcSize, int * uncompressedSize_p) {
+ if (srcSize < 4)
+ goto fail;
+
+ int bitDepth = *src & 15;
+ if (bitDepth != 4 && bitDepth != 8)
+ goto fail;
+
+ int destSize = (src[3] << 16) | (src[2] << 8) | src[1];
+
+ unsigned char *dest = malloc(destSize);
+
+ if (dest == NULL)
+ goto fail;
+
+ int treePos = 5;
+ int treeSize = (src[4] + 1) * 2;
+ int srcPos = 4 + treeSize;
+ int destPos = 0;
+ int curValPos = 0;
+ uint32_t destTmp = 0;
+ uint32_t window;
+
+ for (;;)
+ {
+ if (srcPos >= srcSize)
+ goto fail;
+ read_32_le(src, &srcPos, &window);
+ for (int i = 0; i < 32; i++) {
+ int curBit = (window >> 31) & 1;
+ unsigned char treeView = src[treePos];
+ bool isLeaf = ((treeView << curBit) & 0x80) != 0;
+ treePos &= ~1; // align
+ treePos += ((treeView & 0x3F) + 1) * 2 + curBit;
+ if (isLeaf) {
+ destTmp >>= bitDepth;
+ destTmp |= (src[treePos] << (32 - bitDepth));
+ curValPos++;
+ if (curValPos == 32 / bitDepth) {
+ write_32_le(dest, &destPos, &destTmp, &curValPos);
+ if (destPos == destSize) {
+ *uncompressedSize_p = destSize;
+ return dest;
+ }
+ }
+ treePos = 5;
+ }
+ window <<= 1;
+ }
+ }
+
+fail:
+ FATAL_ERROR("Fatal error while decompressing Huff file.\n");
+}
diff --git a/tools/gbagfx/huff.h b/tools/gbagfx/huff.h
new file mode 100644
index 000000000..6002fe954
--- /dev/null
+++ b/tools/gbagfx/huff.h
@@ -0,0 +1,38 @@
+#ifndef HUFF_H
+#define HUFF_H
+
+union HuffNode;
+
+struct HuffData {
+ unsigned value:31;
+ unsigned isLeaf:1;
+};
+
+struct HuffLeaf {
+ struct HuffData header;
+ unsigned char key;
+};
+
+struct HuffBranch {
+ struct HuffData header;
+ union HuffNode * left;
+ union HuffNode * right;
+};
+
+union HuffNode {
+ struct HuffData header;
+ struct HuffLeaf leaf;
+ struct HuffBranch branch;
+};
+
+typedef union HuffNode HuffNode_t;
+
+struct BitEncoding {
+ unsigned long long nbits:6;
+ unsigned long long bitstring:58;
+};
+
+unsigned char * HuffCompress(unsigned char * buffer, int srcSize, int * compressedSize_p, int bitDepth);
+unsigned char * HuffDecompress(unsigned char * buffer, int srcSize, int * uncompressedSize_p);
+
+#endif //HUFF_H
diff --git a/tools/gbagfx/main.c b/tools/gbagfx/main.c
index 2174e37a5..aa0681fb6 100644
--- a/tools/gbagfx/main.c
+++ b/tools/gbagfx/main.c
@@ -12,6 +12,7 @@
#include "lz.h"
#include "rl.h"
#include "font.h"
+#include "huff.h"
struct CommandHandler
{
@@ -34,17 +35,6 @@ void ConvertGbaToPng(char *inputPath, char *outputPath, struct GbaToPngOptions *
image.hasPalette = false;
}
- if (options->tilemapFilePath != NULL)
- {
- ReadGbaTilemap(options->tilemapFilePath, &image.tileMap);
- image.hasTilemap = true;
- }
- else
- {
- image.tileMap.data = NULL;
- image.hasTilemap = false;
- }
-
ReadImage(inputPath, options->width, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette);
image.hasTransparency = options->hasTransparency;
@@ -59,17 +49,11 @@ void ConvertPngToGba(char *inputPath, char *outputPath, struct PngToGbaOptions *
struct Image image;
image.bitDepth = options->bitDepth;
- image.hasTilemap = options->tilemapFilePath == NULL ? false : true;
- image.tileMap.data = NULL;
- image.tileMap.numTiles = 0;
ReadPng(inputPath, &image);
WriteImage(outputPath, options->numTiles, options->bitDepth, options->metatileWidth, options->metatileHeight, &image, !image.hasPalette);
- if (image.hasTilemap)
- WriteGbaTilemap(options->tilemapFilePath, &image.tileMap);
-
FreeImage(&image);
}
@@ -78,7 +62,6 @@ void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **a
char *inputFileExtension = GetFileExtension(inputPath);
struct GbaToPngOptions options;
options.paletteFilePath = NULL;
- options.tilemapFilePath = NULL;
options.bitDepth = inputFileExtension[0] - '0';
options.hasTransparency = false;
options.width = 1;
@@ -98,15 +81,6 @@ void HandleGbaToPngCommand(char *inputPath, char *outputPath, int argc, char **a
options.paletteFilePath = argv[i];
}
- else if (strcmp(option, "-tilemap") == 0)
- {
- if (i + 1 >= argc)
- FATAL_ERROR("No tilemap file path following \"-tilemap\".\n");
-
- i++;
-
- options.tilemapFilePath = argv[i];
- }
else if (strcmp(option, "-object") == 0)
{
options.hasTransparency = true;
@@ -171,7 +145,6 @@ void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **a
options.bitDepth = bitDepth;
options.metatileWidth = 1;
options.metatileHeight = 1;
- options.tilemapFilePath = NULL;
for (int i = 3; i < argc; i++)
{
@@ -190,14 +163,6 @@ void HandlePngToGbaCommand(char *inputPath, char *outputPath, int argc, char **a
if (options.numTiles < 1)
FATAL_ERROR("Number of tiles must be positive.\n");
}
- else if (strcmp(option, "-tilemap") == 0)
- {
- if (i + 1 >= argc)
- FATAL_ERROR("No tilemap path following \"-tilemap\".\n");
-
- i++;
- options.tilemapFilePath = argv[i];
- }
else if (strcmp(option, "-mwidth") == 0)
{
if (i + 1 >= argc)
@@ -290,10 +255,6 @@ void HandleLatinFontToPngCommand(char *inputPath, char *outputPath, int argc UNU
{
struct Image image;
- image.hasTilemap = false;
- image.tileMap.data = NULL;
- image.tileMap.numTiles = 0;
-
ReadLatinFont(inputPath, &image);
WritePng(outputPath, &image);
@@ -304,10 +265,6 @@ void HandlePngToLatinFontCommand(char *inputPath, char *outputPath, int argc UNU
{
struct Image image;
- image.hasTilemap = false;
- image.tileMap.data = NULL;
- image.tileMap.numTiles = 0;
-
image.bitDepth = 2;
ReadPng(inputPath, &image);
@@ -320,10 +277,6 @@ void HandleHalfwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath,
{
struct Image image;
- image.hasTilemap = false;
- image.tileMap.data = NULL;
- image.tileMap.numTiles = 0;
-
ReadHalfwidthJapaneseFont(inputPath, &image);
WritePng(outputPath, &image);
@@ -334,10 +287,6 @@ void HandlePngToHalfwidthJapaneseFontCommand(char *inputPath, char *outputPath,
{
struct Image image;
- image.hasTilemap = false;
- image.tileMap.data = NULL;
- image.tileMap.numTiles = 0;
-
image.bitDepth = 2;
ReadPng(inputPath, &image);
@@ -350,10 +299,6 @@ void HandleFullwidthJapaneseFontToPngCommand(char *inputPath, char *outputPath,
{
struct Image image;
- image.hasTilemap = false;
- image.tileMap.data = NULL;
- image.tileMap.numTiles = 0;
-
ReadFullwidthJapaneseFont(inputPath, &image);
WritePng(outputPath, &image);
@@ -364,10 +309,6 @@ void HandlePngToFullwidthJapaneseFontCommand(char *inputPath, char *outputPath,
{
struct Image image;
- image.hasTilemap = false;
- image.tileMap.data = NULL;
- image.tileMap.numTiles = 0;
-
image.bitDepth = 2;
ReadPng(inputPath, &image);
@@ -485,6 +426,61 @@ void HandleRLDecompressCommand(char *inputPath, char *outputPath, int argc UNUSE
free(uncompressedData);
}
+void HandleHuffCompressCommand(char *inputPath, char *outputPath, int argc, char **argv)
+{
+ int fileSize;
+ int bitDepth = 4;
+
+ for (int i = 3; i < argc; i++)
+ {
+ char *option = argv[i];
+
+ if (strcmp(option, "-depth") == 0)
+ {
+ if (i + 1 >= argc)
+ FATAL_ERROR("No size following \"-depth\".\n");
+
+ i++;
+
+ if (!ParseNumber(argv[i], NULL, 10, &bitDepth))
+ FATAL_ERROR("Failed to parse bit depth.\n");
+
+ if (bitDepth != 4 && bitDepth != 8)
+ FATAL_ERROR("GBA only supports bit depth of 4 or 8.\n");
+ }
+ else
+ {
+ FATAL_ERROR("Unrecognized option \"%s\".\n", option);
+ }
+ }
+
+ unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
+
+ int compressedSize;
+ unsigned char *compressedData = HuffCompress(buffer, fileSize, &compressedSize, bitDepth);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, compressedData, compressedSize);
+
+ free(compressedData);
+}
+
+void HandleHuffDecompressCommand(char *inputPath, char *outputPath, int argc UNUSED, char **argv UNUSED)
+{
+ int fileSize;
+ unsigned char *buffer = ReadWholeFile(inputPath, &fileSize);
+
+ int uncompressedSize;
+ unsigned char *uncompressedData = HuffDecompress(buffer, fileSize, &uncompressedSize);
+
+ free(buffer);
+
+ WriteWholeFile(outputPath, uncompressedData, uncompressedSize);
+
+ free(uncompressedData);
+}
+
int main(int argc, char **argv)
{
if (argc < 3)
@@ -507,7 +503,9 @@ int main(int argc, char **argv)
{ "png", "hwjpnfont", HandlePngToHalfwidthJapaneseFontCommand },
{ "fwjpnfont", "png", HandleFullwidthJapaneseFontToPngCommand },
{ "png", "fwjpnfont", HandlePngToFullwidthJapaneseFontCommand },
+ { NULL, "huff", HandleHuffCompressCommand },
{ NULL, "lz", HandleLZCompressCommand },
+ { "huff", NULL, HandleHuffDecompressCommand },
{ "lz", NULL, HandleLZDecompressCommand },
{ NULL, "rl", HandleRLCompressCommand },
{ "rl", NULL, HandleRLDecompressCommand },
diff --git a/tools/gbagfx/options.h b/tools/gbagfx/options.h
index 463ee2455..2ff3967a4 100644
--- a/tools/gbagfx/options.h
+++ b/tools/gbagfx/options.h
@@ -7,7 +7,6 @@
struct GbaToPngOptions {
char *paletteFilePath;
- char *tilemapFilePath;
int bitDepth;
bool hasTransparency;
int width;
@@ -16,7 +15,6 @@ struct GbaToPngOptions {
};
struct PngToGbaOptions {
- char *tilemapFilePath;
int numTiles;
int bitDepth;
int metatileWidth;
diff --git a/tools/mapjson/.gitignore b/tools/mapjson/.gitignore
new file mode 100755
index 000000000..a5d568479
--- /dev/null
+++ b/tools/mapjson/.gitignore
@@ -0,0 +1 @@
+mapjson
diff --git a/tools/mapjson/Makefile b/tools/mapjson/Makefile
new file mode 100644
index 000000000..d09acad50
--- /dev/null
+++ b/tools/mapjson/Makefile
@@ -0,0 +1,15 @@
+CXX := g++
+
+CXXFLAGS := -Wall -std=c++11 -O2
+
+SRCS := json11.cpp mapjson.cpp
+
+HEADERS := mapjson.h
+
+.PHONY: clean
+
+mapjson: $(SRCS) $(HEADERS)
+ $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS)
+
+clean:
+ $(RM) mapjson mapjson.exe
diff --git a/tools/mapjson/json11.cpp b/tools/mapjson/json11.cpp
new file mode 100644
index 000000000..1da530206
--- /dev/null
+++ b/tools/mapjson/json11.cpp
@@ -0,0 +1,786 @@
+/* Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "json11.h"
+#include <cassert>
+#include <cmath>
+#include <cstdlib>
+#include <cstdio>
+#include <limits>
+
+namespace json11 {
+
+static const int max_depth = 200;
+
+using std::string;
+using std::vector;
+using std::map;
+using std::make_shared;
+using std::initializer_list;
+using std::move;
+
+/* Helper for representing null - just a do-nothing struct, plus comparison
+ * operators so the helpers in JsonValue work. We can't use nullptr_t because
+ * it may not be orderable.
+ */
+struct NullStruct {
+ bool operator==(NullStruct) const { return true; }
+ bool operator<(NullStruct) const { return false; }
+};
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Serialization
+ */
+
+static void dump(NullStruct, string &out) {
+ out += "null";
+}
+
+static void dump(double value, string &out) {
+ if (std::isfinite(value)) {
+ char buf[32];
+ snprintf(buf, sizeof buf, "%.17g", value);
+ out += buf;
+ } else {
+ out += "null";
+ }
+}
+
+static void dump(int value, string &out) {
+ char buf[32];
+ snprintf(buf, sizeof buf, "%d", value);
+ out += buf;
+}
+
+static void dump(bool value, string &out) {
+ out += value ? "true" : "false";
+}
+
+static void dump(const string &value, string &out) {
+ out += '"';
+ for (size_t i = 0; i < value.length(); i++) {
+ const char ch = value[i];
+ if (ch == '\\') {
+ out += "\\\\";
+ } else if (ch == '"') {
+ out += "\\\"";
+ } else if (ch == '\b') {
+ out += "\\b";
+ } else if (ch == '\f') {
+ out += "\\f";
+ } else if (ch == '\n') {
+ out += "\\n";
+ } else if (ch == '\r') {
+ out += "\\r";
+ } else if (ch == '\t') {
+ out += "\\t";
+ } else if (static_cast<uint8_t>(ch) <= 0x1f) {
+ char buf[8];
+ snprintf(buf, sizeof buf, "\\u%04x", ch);
+ out += buf;
+ } else if (static_cast<uint8_t>(ch) == 0xe2 && static_cast<uint8_t>(value[i+1]) == 0x80
+ && static_cast<uint8_t>(value[i+2]) == 0xa8) {
+ out += "\\u2028";
+ i += 2;
+ } else if (static_cast<uint8_t>(ch) == 0xe2 && static_cast<uint8_t>(value[i+1]) == 0x80
+ && static_cast<uint8_t>(value[i+2]) == 0xa9) {
+ out += "\\u2029";
+ i += 2;
+ } else {
+ out += ch;
+ }
+ }
+ out += '"';
+}
+
+static void dump(const Json::array &values, string &out) {
+ bool first = true;
+ out += "[";
+ for (const auto &value : values) {
+ if (!first)
+ out += ", ";
+ value.dump(out);
+ first = false;
+ }
+ out += "]";
+}
+
+static void dump(const Json::object &values, string &out) {
+ bool first = true;
+ out += "{";
+ for (const auto &kv : values) {
+ if (!first)
+ out += ", ";
+ dump(kv.first, out);
+ out += ": ";
+ kv.second.dump(out);
+ first = false;
+ }
+ out += "}";
+}
+
+void Json::dump(string &out) const {
+ m_ptr->dump(out);
+}
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Value wrappers
+ */
+
+template <Json::Type tag, typename T>
+class Value : public JsonValue {
+protected:
+
+ // Constructors
+ explicit Value(const T &value) : m_value(value) {}
+ explicit Value(T &&value) : m_value(move(value)) {}
+
+ // Get type tag
+ Json::Type type() const override {
+ return tag;
+ }
+
+ // Comparisons
+ bool equals(const JsonValue * other) const override {
+ return m_value == static_cast<const Value<tag, T> *>(other)->m_value;
+ }
+ bool less(const JsonValue * other) const override {
+ return m_value < static_cast<const Value<tag, T> *>(other)->m_value;
+ }
+
+ const T m_value;
+ void dump(string &out) const override { json11::dump(m_value, out); }
+};
+
+class JsonDouble final : public Value<Json::NUMBER, double> {
+ double number_value() const override { return m_value; }
+ int int_value() const override { return static_cast<int>(m_value); }
+ bool equals(const JsonValue * other) const override { return m_value == other->number_value(); }
+ bool less(const JsonValue * other) const override { return m_value < other->number_value(); }
+public:
+ explicit JsonDouble(double value) : Value(value) {}
+};
+
+class JsonInt final : public Value<Json::NUMBER, int> {
+ double number_value() const override { return m_value; }
+ int int_value() const override { return m_value; }
+ bool equals(const JsonValue * other) const override { return m_value == other->number_value(); }
+ bool less(const JsonValue * other) const override { return m_value < other->number_value(); }
+public:
+ explicit JsonInt(int value) : Value(value) {}
+};
+
+class JsonBoolean final : public Value<Json::BOOL, bool> {
+ bool bool_value() const override { return m_value; }
+public:
+ explicit JsonBoolean(bool value) : Value(value) {}
+};
+
+class JsonString final : public Value<Json::STRING, string> {
+ const string &string_value() const override { return m_value; }
+public:
+ explicit JsonString(const string &value) : Value(value) {}
+ explicit JsonString(string &&value) : Value(move(value)) {}
+};
+
+class JsonArray final : public Value<Json::ARRAY, Json::array> {
+ const Json::array &array_items() const override { return m_value; }
+ const Json & operator[](size_t i) const override;
+public:
+ explicit JsonArray(const Json::array &value) : Value(value) {}
+ explicit JsonArray(Json::array &&value) : Value(move(value)) {}
+};
+
+class JsonObject final : public Value<Json::OBJECT, Json::object> {
+ const Json::object &object_items() const override { return m_value; }
+ const Json & operator[](const string &key) const override;
+public:
+ explicit JsonObject(const Json::object &value) : Value(value) {}
+ explicit JsonObject(Json::object &&value) : Value(move(value)) {}
+};
+
+class JsonNull final : public Value<Json::NUL, NullStruct> {
+public:
+ JsonNull() : Value({}) {}
+};
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Static globals - static-init-safe
+ */
+struct Statics {
+ const std::shared_ptr<JsonValue> null = make_shared<JsonNull>();
+ const std::shared_ptr<JsonValue> t = make_shared<JsonBoolean>(true);
+ const std::shared_ptr<JsonValue> f = make_shared<JsonBoolean>(false);
+ const string empty_string;
+ const vector<Json> empty_vector;
+ const map<string, Json> empty_map;
+ Statics() {}
+};
+
+static const Statics & statics() {
+ static const Statics s {};
+ return s;
+}
+
+static const Json & static_null() {
+ // This has to be separate, not in Statics, because Json() accesses statics().null.
+ static const Json json_null;
+ return json_null;
+}
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Constructors
+ */
+
+Json::Json() noexcept : m_ptr(statics().null) {}
+Json::Json(std::nullptr_t) noexcept : m_ptr(statics().null) {}
+Json::Json(double value) : m_ptr(make_shared<JsonDouble>(value)) {}
+Json::Json(int value) : m_ptr(make_shared<JsonInt>(value)) {}
+Json::Json(bool value) : m_ptr(value ? statics().t : statics().f) {}
+Json::Json(const string &value) : m_ptr(make_shared<JsonString>(value)) {}
+Json::Json(string &&value) : m_ptr(make_shared<JsonString>(move(value))) {}
+Json::Json(const char * value) : m_ptr(make_shared<JsonString>(value)) {}
+Json::Json(const Json::array &values) : m_ptr(make_shared<JsonArray>(values)) {}
+Json::Json(Json::array &&values) : m_ptr(make_shared<JsonArray>(move(values))) {}
+Json::Json(const Json::object &values) : m_ptr(make_shared<JsonObject>(values)) {}
+Json::Json(Json::object &&values) : m_ptr(make_shared<JsonObject>(move(values))) {}
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Accessors
+ */
+
+Json::Type Json::type() const { return m_ptr->type(); }
+double Json::number_value() const { return m_ptr->number_value(); }
+int Json::int_value() const { return m_ptr->int_value(); }
+bool Json::bool_value() const { return m_ptr->bool_value(); }
+const string & Json::string_value() const { return m_ptr->string_value(); }
+const vector<Json> & Json::array_items() const { return m_ptr->array_items(); }
+const map<string, Json> & Json::object_items() const { return m_ptr->object_items(); }
+const Json & Json::operator[] (size_t i) const { return (*m_ptr)[i]; }
+const Json & Json::operator[] (const string &key) const { return (*m_ptr)[key]; }
+
+double JsonValue::number_value() const { return 0; }
+int JsonValue::int_value() const { return 0; }
+bool JsonValue::bool_value() const { return false; }
+const string & JsonValue::string_value() const { return statics().empty_string; }
+const vector<Json> & JsonValue::array_items() const { return statics().empty_vector; }
+const map<string, Json> & JsonValue::object_items() const { return statics().empty_map; }
+const Json & JsonValue::operator[] (size_t) const { return static_null(); }
+const Json & JsonValue::operator[] (const string &) const { return static_null(); }
+
+const Json & JsonObject::operator[] (const string &key) const {
+ auto iter = m_value.find(key);
+ return (iter == m_value.end()) ? static_null() : iter->second;
+}
+const Json & JsonArray::operator[] (size_t i) const {
+ if (i >= m_value.size()) return static_null();
+ else return m_value[i];
+}
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Comparison
+ */
+
+bool Json::operator== (const Json &other) const {
+ if (m_ptr == other.m_ptr)
+ return true;
+ if (m_ptr->type() != other.m_ptr->type())
+ return false;
+
+ return m_ptr->equals(other.m_ptr.get());
+}
+
+bool Json::operator< (const Json &other) const {
+ if (m_ptr == other.m_ptr)
+ return false;
+ if (m_ptr->type() != other.m_ptr->type())
+ return m_ptr->type() < other.m_ptr->type();
+
+ return m_ptr->less(other.m_ptr.get());
+}
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Parsing
+ */
+
+/* esc(c)
+ *
+ * Format char c suitable for printing in an error message.
+ */
+static inline string esc(char c) {
+ char buf[12];
+ if (static_cast<uint8_t>(c) >= 0x20 && static_cast<uint8_t>(c) <= 0x7f) {
+ snprintf(buf, sizeof buf, "'%c' (%d)", c, c);
+ } else {
+ snprintf(buf, sizeof buf, "(%d)", c);
+ }
+ return string(buf);
+}
+
+static inline bool in_range(long x, long lower, long upper) {
+ return (x >= lower && x <= upper);
+}
+
+namespace {
+/* JsonParser
+ *
+ * Object that tracks all state of an in-progress parse.
+ */
+struct JsonParser final {
+
+ /* State
+ */
+ const string &str;
+ size_t i;
+ string &err;
+ bool failed;
+ const JsonParse strategy;
+
+ /* fail(msg, err_ret = Json())
+ *
+ * Mark this parse as failed.
+ */
+ Json fail(string &&msg) {
+ return fail(move(msg), Json());
+ }
+
+ template <typename T>
+ T fail(string &&msg, const T err_ret) {
+ if (!failed)
+ err = std::move(msg);
+ failed = true;
+ return err_ret;
+ }
+
+ /* consume_whitespace()
+ *
+ * Advance until the current character is non-whitespace.
+ */
+ void consume_whitespace() {
+ while (str[i] == ' ' || str[i] == '\r' || str[i] == '\n' || str[i] == '\t')
+ i++;
+ }
+
+ /* consume_comment()
+ *
+ * Advance comments (c-style inline and multiline).
+ */
+ bool consume_comment() {
+ bool comment_found = false;
+ if (str[i] == '/') {
+ i++;
+ if (i == str.size())
+ return fail("unexpected end of input after start of comment", false);
+ if (str[i] == '/') { // inline comment
+ i++;
+ // advance until next line, or end of input
+ while (i < str.size() && str[i] != '\n') {
+ i++;
+ }
+ comment_found = true;
+ }
+ else if (str[i] == '*') { // multiline comment
+ i++;
+ if (i > str.size()-2)
+ return fail("unexpected end of input inside multi-line comment", false);
+ // advance until closing tokens
+ while (!(str[i] == '*' && str[i+1] == '/')) {
+ i++;
+ if (i > str.size()-2)
+ return fail(
+ "unexpected end of input inside multi-line comment", false);
+ }
+ i += 2;
+ comment_found = true;
+ }
+ else
+ return fail("malformed comment", false);
+ }
+ return comment_found;
+ }
+
+ /* consume_garbage()
+ *
+ * Advance until the current character is non-whitespace and non-comment.
+ */
+ void consume_garbage() {
+ consume_whitespace();
+ if(strategy == JsonParse::COMMENTS) {
+ bool comment_found = false;
+ do {
+ comment_found = consume_comment();
+ if (failed) return;
+ consume_whitespace();
+ }
+ while(comment_found);
+ }
+ }
+
+ /* get_next_token()
+ *
+ * Return the next non-whitespace character. If the end of the input is reached,
+ * flag an error and return 0.
+ */
+ char get_next_token() {
+ consume_garbage();
+ if (failed) return static_cast<char>(0);
+ if (i == str.size())
+ return fail("unexpected end of input", static_cast<char>(0));
+
+ return str[i++];
+ }
+
+ /* encode_utf8(pt, out)
+ *
+ * Encode pt as UTF-8 and add it to out.
+ */
+ void encode_utf8(long pt, string & out) {
+ if (pt < 0)
+ return;
+
+ if (pt < 0x80) {
+ out += static_cast<char>(pt);
+ } else if (pt < 0x800) {
+ out += static_cast<char>((pt >> 6) | 0xC0);
+ out += static_cast<char>((pt & 0x3F) | 0x80);
+ } else if (pt < 0x10000) {
+ out += static_cast<char>((pt >> 12) | 0xE0);
+ out += static_cast<char>(((pt >> 6) & 0x3F) | 0x80);
+ out += static_cast<char>((pt & 0x3F) | 0x80);
+ } else {
+ out += static_cast<char>((pt >> 18) | 0xF0);
+ out += static_cast<char>(((pt >> 12) & 0x3F) | 0x80);
+ out += static_cast<char>(((pt >> 6) & 0x3F) | 0x80);
+ out += static_cast<char>((pt & 0x3F) | 0x80);
+ }
+ }
+
+ /* parse_string()
+ *
+ * Parse a string, starting at the current position.
+ */
+ string parse_string() {
+ string out;
+ long last_escaped_codepoint = -1;
+ while (true) {
+ if (i == str.size())
+ return fail("unexpected end of input in string", "");
+
+ char ch = str[i++];
+
+ if (ch == '"') {
+ encode_utf8(last_escaped_codepoint, out);
+ return out;
+ }
+
+ if (in_range(ch, 0, 0x1f))
+ return fail("unescaped " + esc(ch) + " in string", "");
+
+ // The usual case: non-escaped characters
+ if (ch != '\\') {
+ encode_utf8(last_escaped_codepoint, out);
+ last_escaped_codepoint = -1;
+ out += ch;
+ continue;
+ }
+
+ // Handle escapes
+ if (i == str.size())
+ return fail("unexpected end of input in string", "");
+
+ ch = str[i++];
+
+ if (ch == 'u') {
+ // Extract 4-byte escape sequence
+ string esc = str.substr(i, 4);
+ // Explicitly check length of the substring. The following loop
+ // relies on std::string returning the terminating NUL when
+ // accessing str[length]. Checking here reduces brittleness.
+ if (esc.length() < 4) {
+ return fail("bad \\u escape: " + esc, "");
+ }
+ for (size_t j = 0; j < 4; j++) {
+ if (!in_range(esc[j], 'a', 'f') && !in_range(esc[j], 'A', 'F')
+ && !in_range(esc[j], '0', '9'))
+ return fail("bad \\u escape: " + esc, "");
+ }
+
+ long codepoint = strtol(esc.data(), nullptr, 16);
+
+ // JSON specifies that characters outside the BMP shall be encoded as a pair
+ // of 4-hex-digit \u escapes encoding their surrogate pair components. Check
+ // whether we're in the middle of such a beast: the previous codepoint was an
+ // escaped lead (high) surrogate, and this is a trail (low) surrogate.
+ if (in_range(last_escaped_codepoint, 0xD800, 0xDBFF)
+ && in_range(codepoint, 0xDC00, 0xDFFF)) {
+ // Reassemble the two surrogate pairs into one astral-plane character, per
+ // the UTF-16 algorithm.
+ encode_utf8((((last_escaped_codepoint - 0xD800) << 10)
+ | (codepoint - 0xDC00)) + 0x10000, out);
+ last_escaped_codepoint = -1;
+ } else {
+ encode_utf8(last_escaped_codepoint, out);
+ last_escaped_codepoint = codepoint;
+ }
+
+ i += 4;
+ continue;
+ }
+
+ encode_utf8(last_escaped_codepoint, out);
+ last_escaped_codepoint = -1;
+
+ if (ch == 'b') {
+ out += '\b';
+ } else if (ch == 'f') {
+ out += '\f';
+ } else if (ch == 'n') {
+ out += '\n';
+ } else if (ch == 'r') {
+ out += '\r';
+ } else if (ch == 't') {
+ out += '\t';
+ } else if (ch == '"' || ch == '\\' || ch == '/') {
+ out += ch;
+ } else {
+ return fail("invalid escape character " + esc(ch), "");
+ }
+ }
+ }
+
+ /* parse_number()
+ *
+ * Parse a double.
+ */
+ Json parse_number() {
+ size_t start_pos = i;
+
+ if (str[i] == '-')
+ i++;
+
+ // Integer part
+ if (str[i] == '0') {
+ i++;
+ if (in_range(str[i], '0', '9'))
+ return fail("leading 0s not permitted in numbers");
+ } else if (in_range(str[i], '1', '9')) {
+ i++;
+ while (in_range(str[i], '0', '9'))
+ i++;
+ } else {
+ return fail("invalid " + esc(str[i]) + " in number");
+ }
+
+ if (str[i] != '.' && str[i] != 'e' && str[i] != 'E'
+ && (i - start_pos) <= static_cast<size_t>(std::numeric_limits<int>::digits10)) {
+ return std::atoi(str.c_str() + start_pos);
+ }
+
+ // Decimal part
+ if (str[i] == '.') {
+ i++;
+ if (!in_range(str[i], '0', '9'))
+ return fail("at least one digit required in fractional part");
+
+ while (in_range(str[i], '0', '9'))
+ i++;
+ }
+
+ // Exponent part
+ if (str[i] == 'e' || str[i] == 'E') {
+ i++;
+
+ if (str[i] == '+' || str[i] == '-')
+ i++;
+
+ if (!in_range(str[i], '0', '9'))
+ return fail("at least one digit required in exponent");
+
+ while (in_range(str[i], '0', '9'))
+ i++;
+ }
+
+ return std::strtod(str.c_str() + start_pos, nullptr);
+ }
+
+ /* expect(str, res)
+ *
+ * Expect that 'str' starts at the character that was just read. If it does, advance
+ * the input and return res. If not, flag an error.
+ */
+ Json expect(const string &expected, Json res) {
+ assert(i != 0);
+ i--;
+ if (str.compare(i, expected.length(), expected) == 0) {
+ i += expected.length();
+ return res;
+ } else {
+ return fail("parse error: expected " + expected + ", got " + str.substr(i, expected.length()));
+ }
+ }
+
+ /* parse_json()
+ *
+ * Parse a JSON object.
+ */
+ Json parse_json(int depth) {
+ if (depth > max_depth) {
+ return fail("exceeded maximum nesting depth");
+ }
+
+ char ch = get_next_token();
+ if (failed)
+ return Json();
+
+ if (ch == '-' || (ch >= '0' && ch <= '9')) {
+ i--;
+ return parse_number();
+ }
+
+ if (ch == 't')
+ return expect("true", true);
+
+ if (ch == 'f')
+ return expect("false", false);
+
+ if (ch == 'n')
+ return expect("null", Json());
+
+ if (ch == '"')
+ return parse_string();
+
+ if (ch == '{') {
+ map<string, Json> data;
+ ch = get_next_token();
+ if (ch == '}')
+ return data;
+
+ while (1) {
+ if (ch != '"')
+ return fail("expected '\"' in object, got " + esc(ch));
+
+ string key = parse_string();
+ if (failed)
+ return Json();
+
+ ch = get_next_token();
+ if (ch != ':')
+ return fail("expected ':' in object, got " + esc(ch));
+
+ data[std::move(key)] = parse_json(depth + 1);
+ if (failed)
+ return Json();
+
+ ch = get_next_token();
+ if (ch == '}')
+ break;
+ if (ch != ',')
+ return fail("expected ',' in object, got " + esc(ch));
+
+ ch = get_next_token();
+ }
+ return data;
+ }
+
+ if (ch == '[') {
+ vector<Json> data;
+ ch = get_next_token();
+ if (ch == ']')
+ return data;
+
+ while (1) {
+ i--;
+ data.push_back(parse_json(depth + 1));
+ if (failed)
+ return Json();
+
+ ch = get_next_token();
+ if (ch == ']')
+ break;
+ if (ch != ',')
+ return fail("expected ',' in list, got " + esc(ch));
+
+ ch = get_next_token();
+ (void)ch;
+ }
+ return data;
+ }
+
+ return fail("expected value, got " + esc(ch));
+ }
+};
+}//namespace {
+
+Json Json::parse(const string &in, string &err, JsonParse strategy) {
+ JsonParser parser { in, 0, err, false, strategy };
+ Json result = parser.parse_json(0);
+
+ // Check for any trailing garbage
+ parser.consume_garbage();
+ if (parser.failed)
+ return Json();
+ if (parser.i != in.size())
+ return parser.fail("unexpected trailing " + esc(in[parser.i]));
+
+ return result;
+}
+
+// Documented in json11.hpp
+vector<Json> Json::parse_multi(const string &in,
+ std::string::size_type &parser_stop_pos,
+ string &err,
+ JsonParse strategy) {
+ JsonParser parser { in, 0, err, false, strategy };
+ parser_stop_pos = 0;
+ vector<Json> json_vec;
+ while (parser.i != in.size() && !parser.failed) {
+ json_vec.push_back(parser.parse_json(0));
+ if (parser.failed)
+ break;
+
+ // Check for another object
+ parser.consume_garbage();
+ if (parser.failed)
+ break;
+ parser_stop_pos = parser.i;
+ }
+ return json_vec;
+}
+
+/* * * * * * * * * * * * * * * * * * * *
+ * Shape-checking
+ */
+
+bool Json::has_shape(const shape & types, string & err) const {
+ if (!is_object()) {
+ err = "expected JSON object, got " + dump();
+ return false;
+ }
+
+ for (auto & item : types) {
+ if ((*this)[item.first].type() != item.second) {
+ err = "bad type for " + item.first + " in " + dump();
+ return false;
+ }
+ }
+
+ return true;
+}
+
+} // namespace json11
diff --git a/tools/mapjson/json11.h b/tools/mapjson/json11.h
new file mode 100644
index 000000000..c04c4362f
--- /dev/null
+++ b/tools/mapjson/json11.h
@@ -0,0 +1,230 @@
+/* json11
+ *
+ * json11 is a tiny JSON library for C++11, providing JSON parsing and serialization.
+ *
+ * The core object provided by the library is json11::Json. A Json object represents any JSON
+ * value: null, bool, number (int or double), string (std::string), array (std::vector), or
+ * object (std::map).
+ *
+ * Json objects act like values: they can be assigned, copied, moved, compared for equality or
+ * order, etc. There are also helper methods Json::dump, to serialize a Json to a string, and
+ * Json::parse (static) to parse a std::string as a Json object.
+ *
+ * Internally, the various types of Json object are represented by the JsonValue class
+ * hierarchy.
+ *
+ * A note on numbers - JSON specifies the syntax of number formatting but not its semantics,
+ * so some JSON implementations distinguish between integers and floating-point numbers, while
+ * some don't. In json11, we choose the latter. Because some JSON implementations (namely
+ * Javascript itself) treat all numbers as the same type, distinguishing the two leads
+ * to JSON that will be *silently* changed by a round-trip through those implementations.
+ * Dangerous! To avoid that risk, json11 stores all numbers as double internally, but also
+ * provides integer helpers.
+ *
+ * Fortunately, double-precision IEEE754 ('double') can precisely store any integer in the
+ * range +/-2^53, which includes every 'int' on most systems. (Timestamps often use int64
+ * or long long to avoid the Y2038K problem; a double storing microseconds since some epoch
+ * will be exact for +/- 275 years.)
+ */
+
+/* Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#pragma once
+
+#include <string>
+#include <vector>
+#include <map>
+#include <memory>
+#include <initializer_list>
+
+#ifdef _MSC_VER
+ #if _MSC_VER <= 1800 // VS 2013
+ #ifndef noexcept
+ #define noexcept throw()
+ #endif
+
+ #ifndef snprintf
+ #define snprintf _snprintf_s
+ #endif
+ #endif
+#endif
+
+namespace json11 {
+
+enum JsonParse {
+ STANDARD, COMMENTS
+};
+
+class JsonValue;
+
+class Json final {
+public:
+ // Types
+ enum Type {
+ NUL, NUMBER, BOOL, STRING, ARRAY, OBJECT
+ };
+
+ // Array and object typedefs
+ typedef std::vector<Json> array;
+ typedef std::map<std::string, Json> object;
+
+ // Constructors for the various types of JSON value.
+ Json() noexcept; // NUL
+ Json(std::nullptr_t) noexcept; // NUL
+ Json(double value); // NUMBER
+ Json(int value); // NUMBER
+ Json(bool value); // BOOL
+ Json(const std::string &value); // STRING
+ Json(std::string &&value); // STRING
+ Json(const char * value); // STRING
+ Json(const array &values); // ARRAY
+ Json(array &&values); // ARRAY
+ Json(const object &values); // OBJECT
+ Json(object &&values); // OBJECT
+
+ // Implicit constructor: anything with a to_json() function.
+ template <class T, class = decltype(&T::to_json)>
+ Json(const T & t) : Json(t.to_json()) {}
+
+ // Implicit constructor: map-like objects (std::map, std::unordered_map, etc)
+ template <class M, typename std::enable_if<
+ std::is_constructible<std::string, decltype(std::declval<M>().begin()->first)>::value
+ && std::is_constructible<Json, decltype(std::declval<M>().begin()->second)>::value,
+ int>::type = 0>
+ Json(const M & m) : Json(object(m.begin(), m.end())) {}
+
+ // Implicit constructor: vector-like objects (std::list, std::vector, std::set, etc)
+ template <class V, typename std::enable_if<
+ std::is_constructible<Json, decltype(*std::declval<V>().begin())>::value,
+ int>::type = 0>
+ Json(const V & v) : Json(array(v.begin(), v.end())) {}
+
+ // This prevents Json(some_pointer) from accidentally producing a bool. Use
+ // Json(bool(some_pointer)) if that behavior is desired.
+ Json(void *) = delete;
+
+ // Accessors
+ Type type() const;
+
+ bool is_null() const { return type() == NUL; }
+ bool is_number() const { return type() == NUMBER; }
+ bool is_bool() const { return type() == BOOL; }
+ bool is_string() const { return type() == STRING; }
+ bool is_array() const { return type() == ARRAY; }
+ bool is_object() const { return type() == OBJECT; }
+
+ // Return the enclosed value if this is a number, 0 otherwise. Note that json11 does not
+ // distinguish between integer and non-integer numbers - number_value() and int_value()
+ // can both be applied to a NUMBER-typed object.
+ double number_value() const;
+ int int_value() const;
+
+ // Return the enclosed value if this is a boolean, false otherwise.
+ bool bool_value() const;
+ // Return the enclosed string if this is a string, "" otherwise.
+ const std::string &string_value() const;
+ // Return the enclosed std::vector if this is an array, or an empty vector otherwise.
+ const array &array_items() const;
+ // Return the enclosed std::map if this is an object, or an empty map otherwise.
+ const object &object_items() const;
+
+ // Return a reference to arr[i] if this is an array, Json() otherwise.
+ const Json & operator[](size_t i) const;
+ // Return a reference to obj[key] if this is an object, Json() otherwise.
+ const Json & operator[](const std::string &key) const;
+
+ // Serialize.
+ void dump(std::string &out) const;
+ std::string dump() const {
+ std::string out;
+ dump(out);
+ return out;
+ }
+
+ // Parse. If parse fails, return Json() and assign an error message to err.
+ static Json parse(const std::string & in,
+ std::string & err,
+ JsonParse strategy = JsonParse::STANDARD);
+ static Json parse(const char * in,
+ std::string & err,
+ JsonParse strategy = JsonParse::STANDARD) {
+ if (in) {
+ return parse(std::string(in), err, strategy);
+ } else {
+ err = "null input";
+ return nullptr;
+ }
+ }
+ // Parse multiple objects, concatenated or separated by whitespace
+ static std::vector<Json> parse_multi(
+ const std::string & in,
+ std::string::size_type & parser_stop_pos,
+ std::string & err,
+ JsonParse strategy = JsonParse::STANDARD);
+
+ static inline std::vector<Json> parse_multi(
+ const std::string & in,
+ std::string & err,
+ JsonParse strategy = JsonParse::STANDARD) {
+ std::string::size_type parser_stop_pos;
+ return parse_multi(in, parser_stop_pos, err, strategy);
+ }
+
+ bool operator== (const Json &rhs) const;
+ bool operator< (const Json &rhs) const;
+ bool operator!= (const Json &rhs) const { return !(*this == rhs); }
+ bool operator<= (const Json &rhs) const { return !(rhs < *this); }
+ bool operator> (const Json &rhs) const { return (rhs < *this); }
+ bool operator>= (const Json &rhs) const { return !(*this < rhs); }
+
+ /* has_shape(types, err)
+ *
+ * Return true if this is a JSON object and, for each item in types, has a field of
+ * the given type. If not, return false and set err to a descriptive message.
+ */
+ typedef std::initializer_list<std::pair<std::string, Type>> shape;
+ bool has_shape(const shape & types, std::string & err) const;
+
+private:
+ std::shared_ptr<JsonValue> m_ptr;
+};
+
+// Internal class hierarchy - JsonValue objects are not exposed to users of this API.
+class JsonValue {
+protected:
+ friend class Json;
+ friend class JsonInt;
+ friend class JsonDouble;
+ virtual Json::Type type() const = 0;
+ virtual bool equals(const JsonValue * other) const = 0;
+ virtual bool less(const JsonValue * other) const = 0;
+ virtual void dump(std::string &out) const = 0;
+ virtual double number_value() const;
+ virtual int int_value() const;
+ virtual bool bool_value() const;
+ virtual const std::string &string_value() const;
+ virtual const Json::array &array_items() const;
+ virtual const Json &operator[](size_t i) const;
+ virtual const Json::object &object_items() const;
+ virtual const Json &operator[](const std::string &key) const;
+ virtual ~JsonValue() {}
+};
+
+} // namespace json11
diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp
new file mode 100644
index 000000000..1cf196fda
--- /dev/null
+++ b/tools/mapjson/mapjson.cpp
@@ -0,0 +1,538 @@
+// mapjson.cpp
+
+#include <iostream>
+using std::cout; using std::endl;
+
+#include <string>
+using std::string;
+
+#include <vector>
+using std::vector;
+
+#include <algorithm>
+using std::sort; using std::find;
+
+#include <map>
+using std::map;
+
+#include <fstream>
+using std::ofstream; using std::ifstream;
+
+#include <sstream>
+using std::ostringstream;
+
+#include <limits>
+using std::numeric_limits;
+
+#include "json11.h"
+using json11::Json;
+
+#include "mapjson.h"
+
+
+string read_text_file(string filepath) {
+ ifstream in_file(filepath);
+
+ if (!in_file.is_open())
+ FATAL_ERROR("Cannot open file %s for reading.\n", filepath.c_str());
+
+ string text;
+
+ in_file.seekg(0, std::ios::end);
+ text.resize(in_file.tellg());
+
+ in_file.seekg(0, std::ios::beg);
+ in_file.read(&text[0], text.size());
+
+ in_file.close();
+
+ return text;
+}
+
+void write_text_file(string filepath, string text) {
+ ofstream out_file(filepath, std::ofstream::binary);
+
+ if (!out_file.is_open())
+ FATAL_ERROR("Cannot open file %s for writing.\n", filepath.c_str());
+
+ out_file << text;
+
+ out_file.close();
+}
+
+string generate_map_header_text(Json map_data, Json layouts_data, string version) {
+ string map_layout_id = map_data["layout"].string_value();
+
+ vector<Json> matched;
+
+ for (auto &field : layouts_data["layouts"].array_items()) {
+ if (map_layout_id == field["id"].string_value())
+ matched.push_back(field);
+ }
+
+ if (matched.size() != 1)
+ FATAL_ERROR("Failed to find matching layout for %s.\n", map_layout_id.c_str());
+
+ Json layout = matched[0];
+
+ ostringstream text;
+
+ text << map_data["name"].string_value() << ":\n"
+ << "\t.4byte " << layout["name"].string_value() << "\n";
+
+ if (map_data.object_items().find("shared_events_map") != map_data.object_items().end())
+ text << "\t.4byte " << map_data["shared_events_map"].string_value() << "_MapEvents\n";
+ else
+ text << "\t.4byte " << map_data["name"].string_value() << "_MapEvents\n";
+
+ if (map_data.object_items().find("shared_scripts_map") != map_data.object_items().end())
+ text << "\t.4byte " << map_data["shared_scripts_map"].string_value() << "_MapScripts\n";
+ else
+ text << "\t.4byte " << map_data["name"].string_value() << "_MapScripts\n";
+
+ if (map_data.object_items().find("connections") != map_data.object_items().end()
+ && map_data["connections"].array_items().size() > 0)
+ text << "\t.4byte " << map_data["name"].string_value() << "_MapConnections\n";
+ else
+ text << "\t.4byte 0x0\n";
+
+ text << "\t.2byte " << map_data["music"].string_value() << "\n"
+ << "\t.2byte " << layout["id"].string_value() << "\n"
+ << "\t.byte " << map_data["region_map_section"].string_value() << "\n"
+ << "\t.byte " << map_data["requires_flash"].bool_value() << "\n"
+ << "\t.byte " << map_data["weather"].string_value() << "\n"
+ << "\t.byte " << map_data["map_type"].string_value() << "\n"
+ << "\t.2byte 0\n";
+
+ if (version == "ruby")
+ text << "\t.byte " << map_data["show_map_name"].bool_value() << "\n";
+ else if (version == "emerald")
+ text << "\tmap_header_flags "
+ << "allow_bike=" << map_data["allow_bike"].bool_value() << ", "
+ << "allow_escape_rope=" << map_data["allow_escape_rope"].bool_value() << ", "
+ << "allow_run=" << map_data["allow_running"].bool_value() << ", "
+ << "show_map_name=" << map_data["show_map_name"].bool_value() << "\n";
+
+ text << "\t.byte " << map_data["battle_scene"].string_value() << "\n\n";
+
+ return text.str();
+}
+
+string generate_map_connections_text(Json map_data) {
+ if (map_data["connections"] == Json())
+ return string("\n");
+
+ ostringstream text;
+
+ text << map_data["name"].string_value() << "_MapConnectionsList:\n";
+
+ for (auto &connection : map_data["connections"].array_items()) {
+ text << "\tconnection "
+ << connection["direction"].string_value() << ", "
+ << connection["offset"].int_value() << ", "
+ << connection["map"].string_value() << "\n";
+ }
+
+ text << "\n" << map_data["name"].string_value() << "_MapConnections:\n"
+ << "\t.4byte " << map_data["connections"].array_items().size() << "\n"
+ << "\t.4byte " << map_data["name"].string_value() << "_MapConnectionsList\n\n";
+
+ return text.str();
+}
+
+string generate_map_events_text(Json map_data) {
+ if (map_data.object_items().find("shared_events_map") != map_data.object_items().end())
+ return string("\n");
+
+ ostringstream text;
+
+ string objects_label, warps_label, coords_label, bgs_label;
+
+ if (map_data["object_events"].array_items().size() > 0) {
+ objects_label = map_data["name"].string_value() + "_EventObjects";
+ text << objects_label << ":\n";
+ for (unsigned int i = 0; i < map_data["object_events"].array_items().size(); i++) {
+ auto obj_event = map_data["object_events"].array_items()[i];
+ text << "\tobject_event " << i + 1 << ", "
+ << obj_event["graphics_id"].string_value() << ", 0, "
+ << obj_event["x"].int_value() << ", "
+ << obj_event["y"].int_value() << ", "
+ << obj_event["elevation"].int_value() << ", "
+ << obj_event["movement_type"].string_value() << ", "
+ << obj_event["movement_range_x"].int_value() << ", "
+ << obj_event["movement_range_y"].int_value() << ", "
+ << obj_event["trainer_type"].string_value() << ", "
+ << obj_event["trainer_sight_or_berry_tree_id"].string_value() << ", "
+ << obj_event["script"].string_value() << ", "
+ << obj_event["flag"].string_value() << "\n";
+ }
+ text << "\n";
+ } else {
+ objects_label = "0x0";
+ }
+
+ if (map_data["warp_events"].array_items().size() > 0) {
+ warps_label = map_data["name"].string_value() + "_MapWarps";
+ text << warps_label << ":\n";
+ for (auto &warp_event : map_data["warp_events"].array_items()) {
+ text << "\twarp_def "
+ << warp_event["x"].int_value() << ", "
+ << warp_event["y"].int_value() << ", "
+ << warp_event["elevation"].int_value() << ", "
+ << warp_event["dest_warp_id"].int_value() << ", "
+ << warp_event["dest_map"].string_value() << "\n";
+ }
+ text << "\n";
+ } else {
+ warps_label = "0x0";
+ }
+
+ if (map_data["coord_events"].array_items().size() > 0) {
+ coords_label = map_data["name"].string_value() + "_MapCoordEvents";
+ text << coords_label << ":\n";
+ for (auto &coord_event : map_data["coord_events"].array_items()) {
+ if (coord_event["type"].string_value() == "trigger") {
+ text << "\tcoord_event "
+ << coord_event["x"].int_value() << ", "
+ << coord_event["y"].int_value() << ", "
+ << coord_event["elevation"].int_value() << ", "
+ << coord_event["var"].string_value() << ", "
+ << coord_event["var_value"].string_value() << ", "
+ << coord_event["script"].string_value() << "\n";
+ }
+ else if (coord_event["type"] == "weather") {
+ text << "\tcoord_weather_event "
+ << coord_event["x"].int_value() << ", "
+ << coord_event["y"].int_value() << ", "
+ << coord_event["elevation"].int_value() << ", "
+ << coord_event["weather"].string_value() << "\n";
+ }
+ }
+ text << "\n";
+ } else {
+ coords_label = "0x0";
+ }
+
+ if (map_data["bg_events"].array_items().size() > 0) {
+ bgs_label = map_data["name"].string_value() + "_MapBGEvents";
+ text << bgs_label << ":\n";
+ for (auto &bg_event : map_data["bg_events"].array_items()) {
+ if (bg_event["type"] == "sign") {
+ text << "\tbg_event "
+ << bg_event["x"].int_value() << ", "
+ << bg_event["y"].int_value() << ", "
+ << bg_event["elevation"].int_value() << ", "
+ << bg_event["player_facing_dir"].string_value() << ", "
+ << bg_event["script"].string_value() << "\n";
+ }
+ else if (bg_event["type"] == "hidden_item") {
+ text << "\tbg_hidden_item_event "
+ << bg_event["x"].int_value() << ", "
+ << bg_event["y"].int_value() << ", "
+ << bg_event["elevation"].int_value() << ", "
+ << bg_event["item"].string_value() << ", "
+ << bg_event["flag"].string_value() << "\n";
+ }
+ else if (bg_event["type"] == "secret_base") {
+ text << "\tbg_secret_base_event "
+ << bg_event["x"].int_value() << ", "
+ << bg_event["y"].int_value() << ", "
+ << bg_event["elevation"].int_value() << ", "
+ << bg_event["secret_base_id"].string_value() << "\n";
+ }
+ }
+ text << "\n";
+ } else {
+ bgs_label = "0x0";
+ }
+
+ text << map_data["name"].string_value() << "_MapEvents::\n"
+ << "\tmap_events " << objects_label << ", " << warps_label << ", "
+ << coords_label << ", " << bgs_label << "\n\n";
+
+ return text.str();
+}
+
+string get_directory_name(string filename) {
+ size_t dir_pos = filename.find_last_of("/\\");
+
+ return filename.substr(0, dir_pos + 1);
+}
+
+void process_map(string map_filepath, string layouts_filepath, string version) {
+ string mapdata_err, layouts_err;
+
+ string mapdata_json_text = read_text_file(map_filepath);
+ string layouts_json_text = read_text_file(layouts_filepath);
+
+ Json map_data = Json::parse(mapdata_json_text, mapdata_err);
+ if (map_data == Json())
+ FATAL_ERROR("%s\n", mapdata_err.c_str());
+
+ Json layouts_data = Json::parse(layouts_json_text, layouts_err);
+ if (layouts_data == Json())
+ FATAL_ERROR("%s\n", layouts_err.c_str());
+
+ string header_text = generate_map_header_text(map_data, layouts_data, version);
+ string events_text = generate_map_events_text(map_data);
+ string connections_text = generate_map_connections_text(map_data);
+
+ string files_dir = get_directory_name(map_filepath);
+ write_text_file(files_dir + "header.inc", header_text);
+ write_text_file(files_dir + "events.inc", events_text);
+ write_text_file(files_dir + "connections.inc", connections_text);
+}
+
+string generate_groups_text(Json groups_data) {
+ ostringstream text;
+
+ for (auto &key : groups_data["group_order"].array_items()) {
+ string group = key.string_value();
+ text << group << "::\n";
+ auto maps = groups_data[group].array_items();
+ for (Json &map_name : maps)
+ text << "\t.4byte " << map_name.string_value() << "\n";
+ text << "\n";
+ }
+
+ text << "\t.align 2\n" << "gMapGroups::\n";
+ for (auto &group : groups_data["group_order"].array_items())
+ text << "\t.4byte " << group.string_value() << "\n";
+ text << "\n";
+
+ return text.str();
+}
+
+string generate_connections_text(Json groups_data) {
+ vector<Json> map_names;
+
+ for (auto &group : groups_data["group_order"].array_items())
+ for (auto map_name : groups_data[group.string_value()].array_items())
+ map_names.push_back(map_name);
+
+ vector<Json> connections_include_order = groups_data["connections_include_order"].array_items();
+
+ if (connections_include_order.size() > 0)
+ sort(map_names.begin(), map_names.end(), [connections_include_order](const Json &a, const Json &b) {
+ auto iter_a = find(connections_include_order.begin(), connections_include_order.end(), a);
+ if (iter_a == connections_include_order.end())
+ iter_a = connections_include_order.begin() + numeric_limits<int>::max();
+ auto iter_b = find(connections_include_order.begin(), connections_include_order.end(), b);
+ if (iter_b == connections_include_order.end())
+ iter_b = connections_include_order.begin() + numeric_limits<int>::max();
+ return iter_a < iter_b;
+ });
+
+ ostringstream text;
+
+ for (Json map_name : map_names)
+ text << "\t.include \"data/maps/" << map_name.string_value() << "/connections.inc\"\n";
+
+ return text.str();
+}
+
+string generate_headers_text(Json groups_data) {
+ vector<string> map_names;
+
+ for (auto &group : groups_data["group_order"].array_items())
+ for (auto map_name : groups_data[group.string_value()].array_items())
+ map_names.push_back(map_name.string_value());
+
+ ostringstream text;
+
+ for (string map_name : map_names)
+ text << "\t.include \"data/maps/" << map_name << "/header.inc\"\n";
+
+ return text.str();
+}
+
+string generate_events_text(Json groups_data) {
+ vector<string> map_names;
+
+ for (auto &group : groups_data["group_order"].array_items())
+ for (auto map_name : groups_data[group.string_value()].array_items())
+ map_names.push_back(map_name.string_value());
+
+ ostringstream text;
+
+ for (string map_name : map_names)
+ text << "\t.include \"data/maps/" << map_name << "/events.inc\"\n";
+
+ return text.str();
+}
+
+string generate_map_constants_text(string groups_filepath, Json groups_data) {
+ string file_dir = get_directory_name(groups_filepath);
+ char dir_separator = file_dir.back();
+
+ ostringstream text;
+
+ text << "#ifndef GUARD_CONSTANTS_MAP_GROUPS_H\n"
+ << "#define GUARD_CONSTANTS_MAP_GROUPS_H\n\n";
+
+ int group_num = 0;
+
+ for (auto &group : groups_data["group_order"].array_items()) {
+ text << "// Map Group " << group_num << "\n";
+ vector<Json> map_ids;
+ size_t max_length = 0;
+
+ for (auto &map_name : groups_data[group.string_value()].array_items()) {
+ string header_filepath = file_dir + map_name.string_value() + dir_separator + "map.json";
+ string err_str;
+ Json map_data = Json::parse(read_text_file(header_filepath), err_str);
+ map_ids.push_back(map_data["id"]);
+ if (map_data["id"].string_value().length() > max_length)
+ max_length = map_data["id"].string_value().length();
+ }
+
+ int map_id_num = 0;
+ for (Json map_id : map_ids) {
+ text << "#define " << map_id.string_value() << string((max_length - map_id.string_value().length() + 1), ' ')
+ << "(" << map_id_num++ << " | (" << group_num << " << 8))\n";
+ }
+ text << "\n";
+
+ group_num++;
+ }
+
+ text << "#define MAP_GROUPS_COUNT " << group_num << "\n\n";
+ text << "#endif // GUARD_CONSTANTS_MAP_GROUPS_H\n";
+
+ return text.str();
+}
+
+void process_groups(string groups_filepath) {
+ string err;
+ Json groups_data = Json::parse(read_text_file(groups_filepath), err);
+
+ if (groups_data == Json())
+ FATAL_ERROR("%s\n", err.c_str());
+
+ string groups_text = generate_groups_text(groups_data);
+ string connections_text = generate_connections_text(groups_data);
+ string headers_text = generate_headers_text(groups_data);
+ string events_text = generate_events_text(groups_data);
+ string map_header_text = generate_map_constants_text(groups_filepath, groups_data);
+
+ string file_dir = get_directory_name(groups_filepath);
+ char s = file_dir.back();
+
+ write_text_file(file_dir + "groups.inc", groups_text);
+ write_text_file(file_dir + "connections.inc", connections_text);
+ write_text_file(file_dir + "headers.inc", headers_text);
+ write_text_file(file_dir + "events.inc", events_text);
+ write_text_file(file_dir + ".." + s + ".." + s + "include" + s + "constants" + s + "map_groups.h", map_header_text);
+}
+
+string generate_layout_headers_text(Json layouts_data) {
+ ostringstream text;
+
+ for (auto &layout : layouts_data["layouts"].array_items()) {
+ string border_label = layout["name"].string_value() + "_Border";
+ string blockdata_label = layout["name"].string_value() + "_Blockdata";
+ text << border_label << "::\n"
+ << "\t.incbin \"" << layout["border_filepath"].string_value() << "\"\n\n"
+ << blockdata_label << "::\n"
+ << "\t.incbin \"" << layout["blockdata_filepath"].string_value() << "\"\n\n"
+ << "\t.align 2\n"
+ << layout["name"].string_value() << "::\n"
+ << "\t.4byte " << layout["width"].int_value() << "\n"
+ << "\t.4byte " << layout["height"].int_value() << "\n"
+ << "\t.4byte " << border_label << "\n"
+ << "\t.4byte " << blockdata_label << "\n"
+ << "\t.4byte " << layout["primary_tileset"].string_value() << "\n"
+ << "\t.4byte " << layout["secondary_tileset"].string_value() << "\n\n";
+ }
+
+ return text.str();
+}
+
+string generate_layouts_table_text(Json layouts_data) {
+ ostringstream text;
+
+ text << "\t.align 2\n"
+ << layouts_data["layouts_table_label"].string_value() << "::\n";
+
+ for (auto &layout : layouts_data["layouts"].array_items())
+ text << "\t.4byte " << layout["name"].string_value() << "\n";
+
+ return text.str();
+}
+
+string generate_layouts_constants_text(Json layouts_data) {
+ ostringstream text;
+
+ text << "#ifndef GUARD_CONSTANTS_LAYOUTS_H\n"
+ << "#define GUARD_CONSTANTS_LAYOUTS_H\n\n";
+
+ int i = 0;
+ for (auto &layout : layouts_data["layouts"].array_items())
+ text << "#define " << layout["id"].string_value() << " " << ++i << "\n";
+
+ text << "\n#endif // GUARD_CONSTANTS_LAYOUTS_H\n";
+
+ return text.str();
+}
+
+void process_layouts(string layouts_filepath) {
+ string err;
+ Json layouts_data = Json::parse(read_text_file(layouts_filepath), err);
+
+ if (layouts_data == Json())
+ FATAL_ERROR("%s\n", err.c_str());
+
+ string layout_headers_text = generate_layout_headers_text(layouts_data);
+ string layouts_table_text = generate_layouts_table_text(layouts_data);
+ string layouts_constants_text = generate_layouts_constants_text(layouts_data);
+
+ string file_dir = get_directory_name(layouts_filepath);
+ char s = file_dir.back();
+
+ write_text_file(file_dir + "layouts.inc", layout_headers_text);
+ write_text_file(file_dir + "layouts_table.inc", layouts_table_text);
+ write_text_file(file_dir + ".." + s + ".." + s + "include" + s + "constants" + s + "layouts.h", layouts_constants_text);
+}
+
+int main(int argc, char *argv[]) {
+ if (argc < 3)
+ FATAL_ERROR("USAGE: mapjson <mode> <game-version> [options]\n");
+
+ char *version_arg = argv[2];
+ string version(version_arg);
+ if (version != "emerald" && version != "ruby")
+ FATAL_ERROR("ERROR: <game-version> must be 'emerald' or 'ruby'.\n");
+
+ char *mode_arg = argv[1];
+ string mode(mode_arg);
+ if (mode != "layouts" && mode != "map" && mode != "groups")
+ FATAL_ERROR("ERROR: <mode> must be 'layouts', 'map', or 'groups'.\n");
+
+ if (mode == "map") {
+ if (argc != 5)
+ FATAL_ERROR("USAGE: mapjson map <game-version> <map_file> <layouts_file>\n");
+
+ string filepath(argv[3]);
+ string layouts_filepath(argv[4]);
+
+ process_map(filepath, layouts_filepath, version);
+ }
+ else if (mode == "groups") {
+ if (argc != 4)
+ FATAL_ERROR("USAGE: mapjson groups <game-version> <groups_file>\n");
+
+ string filepath(argv[3]);
+
+ process_groups(filepath);
+ }
+ else if (mode == "layouts") {
+ if (argc != 4)
+ FATAL_ERROR("USAGE: mapjson layouts <game-version> <layouts_file>\n");
+
+ string filepath(argv[3]);
+
+ process_layouts(filepath);
+ }
+
+ return 0;
+}
diff --git a/tools/mapjson/mapjson.h b/tools/mapjson/mapjson.h
new file mode 100644
index 000000000..6e961a28e
--- /dev/null
+++ b/tools/mapjson/mapjson.h
@@ -0,0 +1,31 @@
+// mapjson.h
+
+#ifndef MAPJSON_H
+#define MAPJSON_H
+
+#include <cstdio>
+using std::fprintf; using std::exit;
+
+#include <cstdlib>
+
+#ifdef _MSC_VER
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, __VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#else
+
+#define FATAL_ERROR(format, ...) \
+do \
+{ \
+ fprintf(stderr, format, ##__VA_ARGS__); \
+ exit(1); \
+} while (0)
+
+#endif // _MSC_VER
+
+#endif // MAPJSON_H
diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile
index 367a3350b..53c9d0060 100644
--- a/tools/scaninc/Makefile
+++ b/tools/scaninc/Makefile
@@ -2,9 +2,9 @@ CXX = g++
CXXFLAGS = -Wall -Werror -std=c++11 -O2
-SRCS = scaninc.cpp c_file.cpp asm_file.cpp
+SRCS = scaninc.cpp c_file.cpp asm_file.cpp source_file.cpp
-HEADERS := scaninc.h asm_file.h c_file.h
+HEADERS := scaninc.h asm_file.h c_file.h source_file.h
.PHONY: clean
diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp
index 6322749e2..109e604a2 100644
--- a/tools/scaninc/asm_file.cpp
+++ b/tools/scaninc/asm_file.cpp
@@ -64,7 +64,8 @@ IncDirectiveType AsmFile::ReadUntilIncDirective(std::string &path)
IncDirectiveType incDirectiveType = IncDirectiveType::None;
- if (PeekChar() == '.')
+ char c = PeekChar();
+ if (c == '.' || c == '#')
{
m_pos++;
diff --git a/tools/scaninc/c_file.cpp b/tools/scaninc/c_file.cpp
index d470f959d..595f366cb 100644
--- a/tools/scaninc/c_file.cpp
+++ b/tools/scaninc/c_file.cpp
@@ -134,7 +134,7 @@ bool CFile::ConsumeComment()
if (m_buffer[m_pos] == '/' && m_buffer[m_pos + 1] == '*')
{
m_pos += 2;
- while (m_buffer[m_pos] != '*' && m_buffer[m_pos + 1] != '/')
+ while (m_buffer[m_pos] != '*' || m_buffer[m_pos + 1] != '/')
{
if (m_buffer[m_pos] == 0)
return false;
diff --git a/tools/scaninc/scaninc.cpp b/tools/scaninc/scaninc.cpp
index 3dc221479..b95cbd033 100644
--- a/tools/scaninc/scaninc.cpp
+++ b/tools/scaninc/scaninc.cpp
@@ -25,8 +25,7 @@
#include <set>
#include <string>
#include "scaninc.h"
-#include "asm_file.h"
-#include "c_file.h"
+#include "source_file.h"
bool CanOpenFile(std::string path)
{
@@ -46,7 +45,7 @@ int main(int argc, char **argv)
std::queue<std::string> filesToProcess;
std::set<std::string> dependencies;
- std::list<std::string> includeDirs;
+ std::vector<std::string> includeDirs;
argc--;
argv++;
@@ -63,7 +62,7 @@ int main(int argc, char **argv)
argv++;
includeDir = std::string(argv[0]);
}
- if (includeDir.back() != '/')
+ if (!includeDir.empty() && includeDir.back() != '/')
{
includeDir += '/';
}
@@ -83,79 +82,36 @@ int main(int argc, char **argv)
std::string initialPath(argv[0]);
- std::size_t pos = initialPath.find_last_of('.');
+ filesToProcess.push(initialPath);
- if (pos == std::string::npos)
- FATAL_ERROR("no file extension in path \"%s\"\n", initialPath.c_str());
-
- std::string extension = initialPath.substr(pos + 1);
-
- std::string srcDir("");
- std::size_t slash = initialPath.rfind('/');
- if (slash != std::string::npos)
- {
- srcDir = initialPath.substr(0, slash + 1);
- }
- includeDirs.push_back(srcDir);
-
- if (extension == "c" || extension == "h")
+ while (!filesToProcess.empty())
{
- filesToProcess.push(initialPath);
+ std::string filePath = filesToProcess.front();
+ SourceFile file(filePath);
+ filesToProcess.pop();
- while (!filesToProcess.empty())
+ includeDirs.push_back(file.GetSrcDir());
+ for (auto incbin : file.GetIncbins())
{
- CFile file(filesToProcess.front());
- filesToProcess.pop();
-
- file.FindIncbins();
- for (auto incbin : file.GetIncbins())
- {
- dependencies.insert(incbin);
- }
- for (auto include : file.GetIncludes())
+ dependencies.insert(incbin);
+ }
+ for (auto include : file.GetIncludes())
+ {
+ for (auto includeDir : includeDirs)
{
- for (auto includeDir : includeDirs)
+ std::string path(includeDir + include);
+ if (CanOpenFile(path))
{
- std::string path(includeDir + include);
- if (CanOpenFile(path))
+ bool inserted = dependencies.insert(path).second;
+ if (inserted)
{
- bool inserted = dependencies.insert(path).second;
- if (inserted)
- {
- filesToProcess.push(path);
- }
- break;
+ filesToProcess.push(path);
}
+ break;
}
}
}
- }
- else if (extension == "s" || extension == "inc")
- {
- filesToProcess.push(initialPath);
-
- while (!filesToProcess.empty())
- {
- AsmFile file(filesToProcess.front());
-
- filesToProcess.pop();
-
- IncDirectiveType incDirectiveType;
- std::string path;
-
- while ((incDirectiveType = file.ReadUntilIncDirective(path)) != IncDirectiveType::None)
- {
- bool inserted = dependencies.insert(path).second;
- if (inserted
- && incDirectiveType == IncDirectiveType::Include
- && CanOpenFile(path))
- filesToProcess.push(path);
- }
- }
- }
- else
- {
- FATAL_ERROR("unknown extension \"%s\"\n", extension.c_str());
+ includeDirs.pop_back();
}
for (const std::string &path : dependencies)
diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp
new file mode 100644
index 000000000..f23ff6db6
--- /dev/null
+++ b/tools/scaninc/source_file.cpp
@@ -0,0 +1,125 @@
+// Copyright(c) 2019 Phlosioneer
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#include <new>
+#include "source_file.h"
+
+
+SourceFileType GetFileType(std::string& path)
+{
+ std::size_t pos = path.find_last_of('.');
+
+ if (pos == std::string::npos)
+ FATAL_ERROR("no file extension in path \"%s\"\n", path.c_str());
+
+ std::string extension = path.substr(pos + 1);
+
+ if (extension == "c")
+ return SourceFileType::Cpp;
+ else if (extension == "s")
+ return SourceFileType::Asm;
+ else if (extension == "h")
+ return SourceFileType::Header;
+ else if (extension == "inc")
+ return SourceFileType::Inc;
+ else
+ FATAL_ERROR("Unrecognized extension \"%s\"\n", extension.c_str());
+
+ // Unreachable
+ return SourceFileType::Cpp;
+}
+
+std::string GetDir(std::string& path)
+{
+ std::size_t slash = path.rfind('/');
+
+ if (slash != std::string::npos)
+ return path.substr(0, slash + 1);
+ else
+ return std::string("");
+}
+
+SourceFile::SourceFile(std::string path)
+{
+ m_file_type = GetFileType(path);
+
+ m_src_dir = GetDir(path);
+
+ if (m_file_type == SourceFileType::Cpp
+ || m_file_type == SourceFileType::Header)
+ {
+ new (&m_source_file.c_file) CFile(path);
+ m_source_file.c_file.FindIncbins();
+ }
+ else
+ {
+ AsmFile file(path);
+ std::set<std::string> incbins;
+ std::set<std::string> includes;
+
+ IncDirectiveType incDirectiveType;
+ std::string outputPath;
+
+ while ((incDirectiveType = file.ReadUntilIncDirective(outputPath)) != IncDirectiveType::None)
+ {
+ if (incDirectiveType == IncDirectiveType::Include)
+ includes.insert(outputPath);
+ else
+ incbins.insert(outputPath);
+ }
+
+ new (&m_source_file.asm_wrapper) SourceFile::InnerUnion::AsmWrapper{incbins, includes};
+ }
+}
+
+SourceFile::~SourceFile()
+{
+ if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header)
+ {
+ m_source_file.c_file.~CFile();
+ }
+ else
+ {
+ m_source_file.asm_wrapper.asm_incbins.~set();
+ m_source_file.asm_wrapper.asm_includes.~set();
+ }
+}
+
+const std::set<std::string>& SourceFile::GetIncbins()
+{
+ if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header)
+ return m_source_file.c_file.GetIncbins();
+ else
+ return m_source_file.asm_wrapper.asm_incbins;
+}
+
+const std::set<std::string>& SourceFile::GetIncludes()
+{
+ if (m_file_type == SourceFileType::Cpp || m_file_type == SourceFileType::Header)
+ return m_source_file.c_file.GetIncludes();
+ else
+ return m_source_file.asm_wrapper.asm_includes;
+}
+
+std::string& SourceFile::GetSrcDir()
+{
+ return m_src_dir;
+}
+
diff --git a/tools/scaninc/source_file.h b/tools/scaninc/source_file.h
new file mode 100644
index 000000000..f7b6412bd
--- /dev/null
+++ b/tools/scaninc/source_file.h
@@ -0,0 +1,71 @@
+// Copyright(c) 2019 Phlosioneer
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#ifndef SOURCE_FILE_H
+#define SOURCE_FILE_H
+
+#include <string>
+#include "scaninc.h"
+#include "asm_file.h"
+#include "c_file.h"
+
+enum class SourceFileType
+{
+ Cpp,
+ Header,
+ Asm,
+ Inc
+};
+
+SourceFileType GetFileType(std::string& path);
+
+class SourceFile
+{
+public:
+
+ SourceFile(std::string path);
+ ~SourceFile();
+ SourceFile(SourceFile const&) = delete;
+ SourceFile(SourceFile&&) = delete;
+ SourceFile& operator =(SourceFile const&) = delete;
+ SourceFile& operator =(SourceFile&&) = delete;
+ bool HasIncbins();
+ const std::set<std::string>& GetIncbins();
+ const std::set<std::string>& GetIncludes();
+ std::string& GetSrcDir();
+
+private:
+ union InnerUnion {
+ CFile c_file;
+ struct AsmWrapper {
+ std::set<std::string> asm_incbins;
+ std::set<std::string> asm_includes;
+ } asm_wrapper;
+
+ // Construction and destruction handled by SourceFile.
+ InnerUnion() {};
+ ~InnerUnion() {};
+ } m_source_file;
+ SourceFileType m_file_type;
+ std::string m_src_dir;
+};
+
+#endif // SOURCE_FILE_H
+