summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.github/calcrom/webhook.sh2
-rw-r--r--berry_fix/payload/include/global.fieldmap.h16
-rw-r--r--charmap.txt2
-rw-r--r--common_syms/ereader_screen.txt2
-rw-r--r--data/battle_ai_scripts.s4
-rw-r--r--data/battle_anim_scripts.s66
-rw-r--r--data/battle_scripts_1.s14
-rw-r--r--data/ereader_link_data.bin (renamed from data/unknown_serial_data.bin)bin12512 -> 12512 bytes
-rw-r--r--data/ereader_link_data.s6
-rw-r--r--data/event_scripts.s2
-rw-r--r--data/maps/BattleFrontier_RankingHall/scripts.inc20
-rw-r--r--data/maps/PetalburgCity_PokemonCenter_1F/map.json2
-rw-r--r--data/scripts/mystery_event_club.inc170
-rw-r--r--data/scripts/profile_man.inc170
-rw-r--r--data/unknown_serial_data.s5
-rw-r--r--gflib/string_util.c4
-rw-r--r--gflib/text.c8
-rw-r--r--gflib/text.h2
-rw-r--r--graphics/battle_anims/backgrounds/solarbeam.bin (renamed from graphics/unknown/unknown_E6BC04.bin)bin1280 -> 1280 bytes
-rw-r--r--graphics/battle_anims/sprites/black_ball.binbin0 -> 36 bytes
-rw-r--r--graphics/battle_anims/unused/goosuto.bin (renamed from graphics/unused/goosuto.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/unused/goosuto.png (renamed from graphics/unused/goosuto.png)bin290 -> 290 bytes
-rw-r--r--graphics/battle_anims/unused/lights.bin (renamed from graphics/unknown/unknown_D1C060.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/battle_anims/unused/lights.png (renamed from graphics/unknown/unknown_D1C060.png)bin159 -> 159 bytes
-rw-r--r--graphics/battle_anims/unused/line_sketch.png (renamed from graphics/unused/line_sketch.png)bin328 -> 328 bytes
-rw-r--r--graphics/battle_anims/unused/line_sketch_2.bin (renamed from graphics/unused/line_sketch_2.bin)bin1024 -> 1024 bytes
-rw-r--r--graphics/battle_anims/unused/line_sketch_2.png (renamed from graphics/unused/line_sketch_2.png)bin154 -> 154 bytes
-rw-r--r--graphics/battle_anims/unused/line_sketch_2_pal.bin (renamed from graphics/unknown/unknown_C0CAE0.bin)bin32 -> 32 bytes
-rw-r--r--graphics/battle_anims/unused/metronome_hand_small.png (renamed from graphics/unused/metronome_hand_small.png)bin202 -> 202 bytes
-rw-r--r--graphics/battle_anims/unused/music_notes.pal (renamed from graphics/unused/battle_anim_023.pal)0
-rw-r--r--graphics/battle_anims/unused/music_notes.png (renamed from graphics/unused/music_notes.png)bin310 -> 310 bytes
-rw-r--r--graphics/battle_anims/unused/old_beatup.png (renamed from graphics/unused/old_beatup.png)bin220 -> 220 bytes
-rw-r--r--graphics/battle_anims/unused/spinning_ball.png (renamed from graphics/unknown/unknown_C06D98.png)bin181 -> 181 bytes
-rw-r--r--graphics/battle_anims/unused/spinning_ball_2.pal (renamed from graphics/unknown/unknown_C06D98_2.pal)0
-rwxr-xr-xgraphics/battle_anims/unused/unknown.pal (renamed from graphics/battle_anims/unused.pal)0
-rw-r--r--graphics/battle_anims/unused/unknown_1.bin (renamed from graphics/unknown/unknown_C0CA1C.bin)bin36 -> 36 bytes
-rw-r--r--graphics/battle_anims/unused/unknown_2.bin (renamed from graphics/unknown/unknown_C0CA40.bin)bin36 -> 36 bytes
-rw-r--r--graphics/battle_anims/unused/unknown_2.pal (renamed from graphics/unknown/unknown_C2F9E0.pal)0
-rw-r--r--graphics/battle_anims/unused/unknown_3.bin (renamed from graphics/unknown/unknown_C0CA64.bin)bin36 -> 36 bytes
-rw-r--r--graphics/battle_anims/unused/unknown_4.bin (renamed from graphics/unknown/unknown_D0D2B4.bin)bin32 -> 32 bytes
-rw-r--r--graphics/battle_anims/unused/water.bin (renamed from graphics/battle_anims/unused_water.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/battle_anims/unused/water_gfx.png (renamed from graphics/battle_anims/unused_water_gfx.png)bin286 -> 286 bytes
-rw-r--r--graphics/battle_anims/unused/water_splash.bin (renamed from graphics/unused/water_splash.bin)bin1024 -> 1024 bytes
-rw-r--r--graphics/battle_anims/unused/water_splash.png (renamed from graphics/unused/water_splash.png)bin1064 -> 1064 bytes
-rw-r--r--graphics/battle_frontier/multi_battle_intro_bg_opponent.bin (renamed from graphics/battle_frontier/battle_tilemap1.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/battle_frontier/multi_battle_intro_bg_player.bin (renamed from graphics/battle_frontier/battle_tilemap2.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/battle_frontier/pyramid_floor.pal (renamed from graphics/battle_frontier/pyramid_light.pal)0
-rw-r--r--graphics/battle_interface/unused_status_summary.png (renamed from graphics/battle_interface/unknown_32C2D4.png)bin102 -> 102 bytes
-rw-r--r--graphics/contest/audience.bin (renamed from graphics/unused/old_contest_2.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/contest/curtain.bin (renamed from graphics/unknown/unknown_C17980.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/contest/interface.bin (renamed from graphics/unknown/unknown_C17170.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/contest/interface.png (renamed from graphics/contest/misc.png)bin1680 -> 1680 bytes
-rw-r--r--graphics/contest/interface_audience.pal (renamed from graphics/unused/old_contest_2.pal)0
-rw-r--r--graphics/contest/japanese/audience.png (renamed from graphics/unused/old_contest_2_2.png)bin1274 -> 1274 bytes
-rw-r--r--graphics/contest/japanese/floor.png (renamed from graphics/unused/old_contest_floor.png)bin614 -> 614 bytes
-rw-r--r--graphics/contest/japanese/frame_1.png (renamed from graphics/unused/old_contest_frame_1.png)bin359 -> 359 bytes
-rw-r--r--graphics/contest/japanese/frame_2.png (renamed from graphics/unused/old_contest_frame_2.png)bin259 -> 259 bytes
-rw-r--r--graphics/contest/japanese/interface.png (renamed from graphics/unused/old_contest_2_1.png)bin1829 -> 1829 bytes
-rw-r--r--graphics/contest/japanese/letters.png (renamed from graphics/unused/old_contest_classes.png)bin292 -> 292 bytes
-rw-r--r--graphics/contest/japanese/meter.png (renamed from graphics/unused/old_contest_meter.png)bin212 -> 212 bytes
-rw-r--r--graphics/contest/japanese/numbers.png (renamed from graphics/unused/old_contest_numbers.png)bin324 -> 324 bytes
-rw-r--r--graphics/contest/japanese/palette.pal (renamed from graphics/unused/old_contest.pal)0
-rw-r--r--graphics/contest/japanese/symbols.png (renamed from graphics/unused/old_contest_symbols.png)bin237 -> 237 bytes
-rw-r--r--graphics/contest/japanese/tilemap_1.bin (renamed from graphics/unused/old_contest.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/contest/japanese/tilemap_2.bin (renamed from graphics/unknown/unknown_C15BC0.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/contest/japanese/voltage.png (renamed from graphics/unknown/unknown_C19470.png)bin255 -> 255 bytes
-rw-r--r--graphics/contest/unused_tilemap_1.bin (renamed from graphics/unknown/unknown_C17410.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/contest/unused_tilemap_2.bin (renamed from graphics/unknown/unknown_C1751C.bin)bin8192 -> 8192 bytes
-rw-r--r--graphics/interface/bag_pyramid_interface.pal (renamed from graphics/unknown/unknown_D9AF44.pal)0
-rw-r--r--graphics/interface/summary_page_battle_moves.bin (renamed from graphics/interface/status_tilemap2.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/interface/summary_page_contest_moves.bin (renamed from graphics/interface/status_tilemap3.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/interface/summary_page_info.bin (renamed from graphics/interface/status_screen.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/interface/summary_page_info_copy.bin (renamed from graphics/interface/status_tilemap0.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/interface/summary_page_skills.bin (renamed from graphics/interface/status_tilemap1.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/interface/summary_screen.pal (renamed from graphics/interface/status_screen.pal)0
-rw-r--r--graphics/interface/summary_screen.png (renamed from graphics/interface/status_screen.png)bin1633 -> 1633 bytes
-rw-r--r--graphics/pokemon/deoxys/icon_speed_wide.png (renamed from graphics/unused/deoxys_speed_icon_wide.png)bin401 -> 401 bytes
-rw-r--r--graphics/pokemon/unused_garbage.bin (renamed from graphics/unknown/unknown_D437F8.bin)bin1024 -> 1024 bytes
-rw-r--r--graphics/trade/menu.bin (renamed from graphics/trade/unknown_DDCF04.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/trade/unused.bin (renamed from graphics/unused/unused_DDCEE4.bin)bin32 -> 32 bytes
-rw-r--r--graphics/trainer_hill/records_window.bin (renamed from graphics/unknown/unknown_5B3564.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/trainer_hill/records_window.png (renamed from graphics/unknown/unknown_5B3484.png)bin177 -> 177 bytes
-rw-r--r--graphics/unknown/unknown_C035B8.pngbin156 -> 0 bytes
-rw-r--r--graphics_file_rules.mk141
-rw-r--r--include/bike.h10
-rw-r--r--include/constants/battle_anim.h6
-rw-r--r--include/constants/battle_frontier.h49
-rw-r--r--include/constants/battle_move_effects.h2
-rwxr-xr-xinclude/constants/event_object_movement.h81
-rw-r--r--include/constants/global.h15
-rw-r--r--include/constants/items.h2
-rw-r--r--include/constants/metatile_labels.h1
-rw-r--r--include/daycare.h9
-rwxr-xr-xinclude/ereader_helpers.h28
-rw-r--r--include/event_object_movement.h2
-rw-r--r--include/field_player_avatar.h10
-rw-r--r--include/global.fieldmap.h21
-rw-r--r--include/global.h94
-rw-r--r--include/graphics.h60
-rw-r--r--include/link.h7
-rw-r--r--include/mail.h10
-rw-r--r--include/main.h1
-rw-r--r--include/menu.h3
-rw-r--r--include/record_mixing.h4
-rw-r--r--include/trade.h6
-rw-r--r--ld_script.txt2
-rw-r--r--ld_script_modern.txt2
-rw-r--r--src/apprentice.c2
-rw-r--r--src/battle_ai_script_commands.c2
-rw-r--r--src/battle_anim_effects_1.c72
-rwxr-xr-xsrc/battle_anim_effects_3.c2
-rw-r--r--src/battle_anim_water.c4
-rw-r--r--src/battle_bg.c14
-rw-r--r--src/battle_controller_player.c2
-rw-r--r--src/battle_gfx_sfx_util.c2
-rw-r--r--src/battle_interface.c4
-rw-r--r--src/battle_message.c9
-rw-r--r--src/battle_pyramid.c6
-rw-r--r--src/battle_pyramid_bag.c10
-rw-r--r--src/battle_records.c9
-rw-r--r--src/battle_script_commands.c6
-rw-r--r--src/battle_setup.c8
-rw-r--r--src/battle_tower.c2
-rw-r--r--src/battle_tv.c2
-rw-r--r--src/bike.c34
-rw-r--r--src/cable_car.c13
-rw-r--r--src/clear_save_data_screen.c2
-rw-r--r--src/contest.c18
-rw-r--r--src/data/battle_anim.h6
-rw-r--r--src/data/battle_moves.h2
-rw-r--r--src/data/graphics/pokemon.h4
-rw-r--r--src/data/items.h4
-rwxr-xr-xsrc/data/object_events/movement_action_func_tables.h66
-rwxr-xr-xsrc/data/object_events/object_event_anims.h470
-rw-r--r--src/data/pokemon/tmhm_learnsets.h248
-rw-r--r--src/data/trade.h2
-rw-r--r--src/daycare.c20
-rw-r--r--src/dewford_trend.c2
-rw-r--r--src/diploma.c2
-rw-r--r--src/egg_hatch.c4
-rwxr-xr-xsrc/ereader_helpers.c37
-rwxr-xr-xsrc/ereader_screen.c483
-rw-r--r--src/event_object_lock.c6
-rw-r--r--src/event_object_movement.c396
-rw-r--r--src/field_effect.c6
-rw-r--r--src/field_player_avatar.c92
-rw-r--r--src/field_screen_effect.c2
-rw-r--r--src/field_specials.c94
-rw-r--r--src/frontier_util.c90
-rw-r--r--src/graphics.c196
-rwxr-xr-xsrc/item_menu.c4
-rwxr-xr-xsrc/item_use.c2
-rw-r--r--src/link.c20
-rw-r--r--src/load_save.c2
-rw-r--r--src/mail.c4
-rw-r--r--src/mail_data.c22
-rw-r--r--src/match_call.c16
-rw-r--r--src/menu.c18
-rw-r--r--src/menu_specialized.c2
-rw-r--r--src/mystery_event_script.c6
-rw-r--r--src/new_game.c2
-rwxr-xr-xsrc/party_menu.c10
-rw-r--r--src/player_pc.c6
-rw-r--r--src/pokeblock.c6
-rw-r--r--src/pokeblock_feed.c4
-rw-r--r--src/pokemon.c25
-rw-r--r--src/pokemon_summary_screen.c16
-rw-r--r--src/record_mixing.c843
-rw-r--r--src/rotating_tile_puzzle.c10
-rw-r--r--src/save_failed_screen.c2
-rw-r--r--src/start_menu.c2
-rw-r--r--src/strings.c22
-rw-r--r--src/title_screen.c4
-rw-r--r--src/trade.c30
-rw-r--r--src/trainer_see.c2
-rw-r--r--src/union_room.c6
-rw-r--r--src/union_room_battle.c2
-rwxr-xr-xsrc/union_room_chat.c2
-rw-r--r--src/unk_text_util_2.c2
179 files changed, 2400 insertions, 2208 deletions
diff --git a/.github/calcrom/webhook.sh b/.github/calcrom/webhook.sh
index 2a3015969..fd54b660b 100755
--- a/.github/calcrom/webhook.sh
+++ b/.github/calcrom/webhook.sh
@@ -8,4 +8,4 @@ if [ ! -f $map_file ]; then
fi
output=$(perl $(dirname "$0")/calcrom.pl $build_name.map | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
-curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST "$CALCROM_DISCORD_WEBHOOK_URL"
+curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`\\n$build_name progress:\\n$output\\n\`\`\`\"}" -H "Content-Type: application/json" -X POST "$CALCROM_DISCORD_WEBHOOK_URL"
diff --git a/berry_fix/payload/include/global.fieldmap.h b/berry_fix/payload/include/global.fieldmap.h
index d5ab0812e..e7150b429 100644
--- a/berry_fix/payload/include/global.fieldmap.h
+++ b/berry_fix/payload/include/global.fieldmap.h
@@ -219,14 +219,14 @@ struct EventObjectGraphicsInfo
/*0x20*/ const union AffineAnimCmd *const *affineAnims;
};
-#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
-#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
-#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
-#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
-#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
-#define PLAYER_AVATAR_FLAG_5 (1 << 5)
-#define PLAYER_AVATAR_FLAG_6 (1 << 6)
-#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
+#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
+#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
+#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
+#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
+#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
+#define PLAYER_AVATAR_FLAG_CONTROLLABLE (1 << 5)
+#define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6)
+#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
enum
{
diff --git a/charmap.txt b/charmap.txt
index 84e1496f0..1bca4e4f4 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -414,7 +414,7 @@ HIGHLIGHT = FC 02 @ same as fc 01
SHADOW = FC 03 @ same as fc 01
COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes
PALETTE = FC 05 @ used in credits
-SIZE = FC 06 @ note that anything other than "SMALL" is invalid
+FONT = FC 06 @ valid values are 0, 1, 2, 6 (braille), 7 and 8
RESET_SIZE = FC 07
PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them
PAUSE_UNTIL_PRESS = FC 09
diff --git a/common_syms/ereader_screen.txt b/common_syms/ereader_screen.txt
index 5a89d370d..2189eedbc 100644
--- a/common_syms/ereader_screen.txt
+++ b/common_syms/ereader_screen.txt
@@ -1 +1 @@
-gUnknown_03006370
+gEReaderData
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index 0d4c85771..d856b926a 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -735,7 +735,7 @@ AI_CheckViability:
if_effect EFFECT_PSYCH_UP, AI_CV_PsychUp
if_effect EFFECT_MIRROR_COAT, AI_CV_MirrorCoat
if_effect EFFECT_SKULL_BASH, AI_CV_ChargeUpMove
- if_effect EFFECT_SOLARBEAM, AI_CV_ChargeUpMove
+ if_effect EFFECT_SOLAR_BEAM, AI_CV_ChargeUpMove
if_effect EFFECT_SEMI_INVULNERABLE, AI_CV_SemiInvulnerable
if_effect EFFECT_SOFTBOILED, AI_CV_Heal
if_effect EFFECT_FAKE_OUT, AI_CV_FakeOut
@@ -3051,7 +3051,7 @@ AI_HPAware_DiscouragedEffectsWhenLowHP:
.byte EFFECT_BELLY_DRUM
.byte EFFECT_PSYCH_UP
.byte EFFECT_MIRROR_COAT
- .byte EFFECT_SOLARBEAM
+ .byte EFFECT_SOLAR_BEAM
.byte EFFECT_ERUPTION
.byte EFFECT_TICKLE
.byte EFFECT_COSMIC_POWER
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 45cf17c34..2c5c9ba04 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -5474,45 +5474,45 @@ SolarBeamAbsorbEffect:
delay 2
return
SolarBeamUnleash:
- call SetSolarbeamBg
+ call SetSolarBeamBg
panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
- createvisualtask AnimTask_CreateSmallSolarbeamOrbs, 5
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
+ createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 5
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
delay 4
createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 10, RGB(25, 31, 0)
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
delay 4
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
delay 4
call SolarBeamUnleash1
call SolarBeamUnleash1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 10, 0, RGB(25, 31, 0)
- call UnsetSolarbeamBg
+ call UnsetSolarBeamBg
goto SolarBeamEnd
SolarBeamUnleash1:
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
delay 4
- createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
+ createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
delay 4
return
@@ -10189,26 +10189,26 @@ UnsetSkyBg:
waitbgfadein
return
-SetSolarbeamBg:
+SetSolarBeamBg:
createvisualtask AnimTask_IsContest, 2
- jumprettrue SetSolarbeamBgContest
+ jumprettrue SetSolarBeamBgContest
createvisualtask AnimTask_IsTargetPlayerSide, 2
- jumpretfalse SetSolarbeamBgOpponent
- goto SetSolarbeamBgPlayer
-SetSolarbeamBgContinue:
+ jumpretfalse SetSolarBeamBgOpponent
+ goto SetSolarBeamBgPlayer
+SetSolarBeamBgContinue:
waitbgfadein
return
-SetSolarbeamBgContest:
- fadetobg BG_SOLARBEAM_CONTESTS
- goto SetSolarbeamBgContinue
-SetSolarbeamBgPlayer:
- fadetobg BG_SOLARBEAM_PLAYER
- goto SetSolarbeamBgContinue
-SetSolarbeamBgOpponent:
- fadetobg BG_SOLARBEAM_OPPONENT
- goto SetSolarbeamBgContinue
-
-UnsetSolarbeamBg:
+SetSolarBeamBgContest:
+ fadetobg BG_SOLAR_BEAM_CONTESTS
+ goto SetSolarBeamBgContinue
+SetSolarBeamBgPlayer:
+ fadetobg BG_SOLAR_BEAM_PLAYER
+ goto SetSolarBeamBgContinue
+SetSolarBeamBgOpponent:
+ fadetobg BG_SOLAR_BEAM_OPPONENT
+ goto SetSolarBeamBgContinue
+
+UnsetSolarBeamBg:
restorebg
waitbgfadein
return
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index eecb3d08d..e3408a3a7 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -168,7 +168,7 @@ gBattleScriptsForMoveEffects::
.4byte BattleScript_EffectFutureSight @ EFFECT_FUTURE_SIGHT
.4byte BattleScript_EffectGust @ EFFECT_GUST
.4byte BattleScript_EffectStomp @ EFFECT_FLINCH_MINIMIZE_HIT
- .4byte BattleScript_EffectSolarbeam @ EFFECT_SOLARBEAM
+ .4byte BattleScript_EffectSolarBeam @ EFFECT_SOLAR_BEAM
.4byte BattleScript_EffectThunder @ EFFECT_THUNDER
.4byte BattleScript_EffectTeleport @ EFFECT_TELEPORT
.4byte BattleScript_EffectBeatUp @ EFFECT_BEAT_UP
@@ -1898,17 +1898,17 @@ BattleScript_EffectStomp::
setbyte sDMG_MULTIPLIER, 2
goto BattleScript_FlinchEffect
-BattleScript_EffectSolarbeam::
- jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn
- jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN, BattleScript_SolarbeamOnFirstTurn
-BattleScript_SolarbeamDecideTurn::
+BattleScript_EffectSolarBeam::
+ jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarBeamDecideTurn
+ jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarBeamDecideTurn
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN, BattleScript_SolarBeamOnFirstTurn
+BattleScript_SolarBeamDecideTurn::
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, B_MSG_TURN1_SOLAR_BEAM
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
-BattleScript_SolarbeamOnFirstTurn::
+BattleScript_SolarBeamOnFirstTurn::
orword gHitMarker, HITMARKER_CHARGING
setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
diff --git a/data/unknown_serial_data.bin b/data/ereader_link_data.bin
index 85057cf4e..85057cf4e 100644
--- a/data/unknown_serial_data.bin
+++ b/data/ereader_link_data.bin
Binary files differ
diff --git a/data/ereader_link_data.s b/data/ereader_link_data.s
new file mode 100644
index 000000000..d3269ebfe
--- /dev/null
+++ b/data/ereader_link_data.s
@@ -0,0 +1,6 @@
+ .section .rodata
+
+ .align 2
+gEReaderLinkData_Start::
+ .incbin "data/ereader_link_data.bin"
+gEReaderLinkData_End::
diff --git a/data/event_scripts.s b/data/event_scripts.s
index a68c339a6..bbf25c93c 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1026,7 +1026,7 @@ Common_EventScript_LegendaryFlewAway::
.include "data/scripts/mauville_man.inc"
.include "data/scripts/field_move_scripts.inc"
.include "data/scripts/item_ball_scripts.inc"
- .include "data/scripts/mystery_event_club.inc"
+ .include "data/scripts/profile_man.inc"
.include "data/scripts/day_care.inc"
.include "data/scripts/flash.inc"
.include "data/scripts/players_house.inc"
diff --git a/data/maps/BattleFrontier_RankingHall/scripts.inc b/data/maps/BattleFrontier_RankingHall/scripts.inc
index 20b2b21c1..a6c62cf86 100644
--- a/data/maps/BattleFrontier_RankingHall/scripts.inc
+++ b/data/maps/BattleFrontier_RankingHall/scripts.inc
@@ -3,61 +3,61 @@ BattleFrontier_RankingHall_MapScripts::
BattleFrontier_RankingHall_EventScript_TowerSinglesRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_SINGLES
+ setvar VAR_0x8005, RANKING_HALL_TOWER_SINGLES
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_TowerDoublesRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_DOUBLES
+ setvar VAR_0x8005, RANKING_HALL_TOWER_DOUBLES
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_TowerMultisRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_MULTIS
+ setvar VAR_0x8005, RANKING_HALL_TOWER_MULTIS
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_TowerLinkRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_LINK
+ setvar VAR_0x8005, RANKING_HALL_TOWER_LINK
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_ArenaRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_ARENA
+ setvar VAR_0x8005, RANKING_HALL_ARENA
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_PalaceRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_PALACE
+ setvar VAR_0x8005, RANKING_HALL_PALACE
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_FactoryRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_FACTORY
+ setvar VAR_0x8005, RANKING_HALL_FACTORY
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_DomeRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_DOME
+ setvar VAR_0x8005, RANKING_HALL_DOME
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_PikeRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_PIKE
+ setvar VAR_0x8005, RANKING_HALL_PIKE
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_PyramidRecords::
lockall
- setvar VAR_0x8005, RANKING_HALL_BATTLE_PYRAMID
+ setvar VAR_0x8005, RANKING_HALL_PYRAMID
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
diff --git a/data/maps/PetalburgCity_PokemonCenter_1F/map.json b/data/maps/PetalburgCity_PokemonCenter_1F/map.json
index 1fd6e972b..875c53c2b 100644
--- a/data/maps/PetalburgCity_PokemonCenter_1F/map.json
+++ b/data/maps/PetalburgCity_PokemonCenter_1F/map.json
@@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MysteryEventClub_EventScript_Man",
+ "script": "ProfileMan_EventScript_Man",
"flag": "0"
},
{
diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc
deleted file mode 100644
index f0cb55998..000000000
--- a/data/scripts/mystery_event_club.inc
+++ /dev/null
@@ -1,170 +0,0 @@
-MysteryEventClub_EventScript_Man::
- lock
- faceplayer
- goto_if_set FLAG_SYS_CHAT_USED, MysteryEventClub_EventScript_GivenProfileBefore
- msgbox MysteryEventClub_Text_CollectTrainerProfiles, MSGBOX_DEFAULT
- goto MysteryEventClub_EventScript_AskToSeeProfile
- end
-
-MysteryEventClub_EventScript_AskToSeeProfile::
- msgbox MysteryEventClub_Text_MayISeeYourProfile, MSGBOX_DEFAULT
- multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
- switch VAR_RESULT
- case 0, MysteryEventClub_EventScript_CreateProfile
- case 1, MysteryEventClub_EventScript_DeclineShowProfile
- case 2, MysteryEventClub_EventScript_Info
- case MULTI_B_PRESSED, MysteryEventClub_EventScript_DeclineShowProfile
- end
-
-MysteryEventClub_EventScript_Info::
- msgbox MysteryEventClub_Text_EasyChatExplanation, MSGBOX_DEFAULT
- goto MysteryEventClub_EventScript_AskToSeeProfile
- end
-
-MysteryEventClub_EventScript_CreateProfile::
- msgbox MysteryEventClub_Text_LetsSeeItThen, MSGBOX_DEFAULT
- closemessage
- setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
- call Common_ShowEasyChatScreen
- lock
- faceplayer
- compare VAR_RESULT, 0
- goto_if_eq MysteryEventClub_EventScript_CancelShowProfile
- compare VAR_RESULT, 1
- goto_if_eq MysteryEventClub_EventScript_ShowProfile
- end
-
-MysteryEventClub_EventScript_CancelShowProfile::
- msgbox MysteryEventClub_Text_NotIntoItRightNow, MSGBOX_DEFAULT
- release
- end
-
-MysteryEventClub_EventScript_ShowProfile::
- setvar VAR_0x8004, 0
- special ShowEasyChatProfile
- waitmessage
- delay 80
- msgbox MysteryEventClub_Text_FantasticProfile, MSGBOX_DEFAULT
- release
- end
-
-MysteryEventClub_EventScript_DeclineShowProfile::
- msgbox MysteryEventClub_Text_ImagineYouWouldHaveWonderfulProfile, MSGBOX_DEFAULT
- release
- end
-
-MysteryEventClub_EventScript_GivenProfileBefore::
- msgbox MysteryEventClub_Text_YouHaveWonderfulSmile, MSGBOX_DEFAULT
- goto MysteryEventClub_EventScript_AskToSeeNewProfile
- end
-
-MysteryEventClub_EventScript_AskToSeeNewProfile::
- msgbox MysteryEventClub_Text_MayISeeYourNewProfile, MSGBOX_DEFAULT
- multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
- switch VAR_RESULT
- case 0, MysteryEventClub_EventScript_CreateNewProfile
- case 1, MysteryEventClub_EventScript_DeclineNewProfile
- case 2, MysteryEventClub_EventScript_InfoNewProfile
- case MULTI_B_PRESSED, MysteryEventClub_EventScript_DeclineNewProfile
- end
-
-MysteryEventClub_EventScript_InfoNewProfile::
- msgbox MysteryEventClub_Text_EasyChatExplanation, MSGBOX_DEFAULT
- goto MysteryEventClub_EventScript_AskToSeeNewProfile
- end
-
-MysteryEventClub_EventScript_CreateNewProfile::
- msgbox MysteryEventClub_Text_EvenBetterThanLastProfile, MSGBOX_DEFAULT
- closemessage
- setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
- call Common_ShowEasyChatScreen
- lock
- faceplayer
- compare VAR_RESULT, 0
- goto_if_eq MysteryEventClub_EventScript_CancelShowProfile
- compare VAR_RESULT, 1
- goto_if_eq MysteryEventClub_EventScript_ShowProfile
- end
-
-MysteryEventClub_EventScript_DeclineNewProfile::
- msgbox MysteryEventClub_Text_LikeProfileWayItIs, MSGBOX_DEFAULT
- release
- end
-
-@ Unused
-MysteryEventClub_EventScript_Ret::
- return
-
-MysteryEventClub_Text_CollectTrainerProfiles:
- .string "Hello there, TRAINER!\n"
- .string "You've got a wonderful smile, there.\p"
- .string "I have a hobby--collecting the profiles\n"
- .string "of POKéMON TRAINERS.$"
-
-MysteryEventClub_Text_MayISeeYourProfile:
- .string "So, how about it?\n"
- .string "May I see your profile?$"
-
-MysteryEventClub_Text_EasyChatExplanation:
- .string "You make your own profile by putting\n"
- .string "together four words or phrases.\p"
- .string "Here, I'll show you an example of a\n"
- .string "profile using four pieces of text.\p"
- .string "You can switch those four pieces with\n"
- .string "other text pieces any which way you\l"
- .string "like to make your own profile.\p"
- .string "There are a lot of text pieces that\n"
- .string "you can use.\p"
- .string "They are arranged in groups like\n"
- .string "POKéMON, lifestyles, and hobbies so\l"
- .string "it is easier to look them up.\p"
- .string "So, first, choose the group of text\n"
- .string "pieces to display a list of choices.\p"
- .string "Then, pick the choice you want.\p"
- .string "Repeat for the remaining text choices,\n"
- .string "and you'll have your very own profile.$"
-
-MysteryEventClub_Text_LetsSeeItThen:
- .string "Yes! Thank you!\n"
- .string "So, let's see it, then.$"
-
-MysteryEventClub_Text_ImagineYouWouldHaveWonderfulProfile:
- .string "Oh, no, really?\p"
- .string "I imagine someone like you would have\n"
- .string "a wonderful profile…$"
-
-MysteryEventClub_Text_NotIntoItRightNow:
- .string "Oh? You're not into it right now?\p"
- .string "Well, anytime is good by me!$"
-
-MysteryEventClub_Text_YouHaveWonderfulSmile:
- .string "Hello there, TRAINER!\n"
- .string "You've got a wonderful smile.$"
-
-MysteryEventClub_Text_MayISeeYourNewProfile:
- .string "May I see your new profile?$"
-
-MysteryEventClub_Text_EvenBetterThanLastProfile:
- .string "Yes! Thank you!\p"
- .string "I hope it's even better than the profile\n"
- .string "you showed me before.$"
-
-MysteryEventClub_Text_LikeProfileWayItIs:
- .string "Oh, you like your profile the way it is.\p"
- .string "I don't blame you--it's a wonderful\n"
- .string "profile the way it is now.$"
-
-MysteryEventClub_Text_FantasticProfile:
- .string "F-fantastic!\p"
- .string "Your profile, it's wonderful!\n"
- .string "It really says what you're about.\p"
- .string "Why, anyone hearing this profile would\n"
- .string "be captivated by you!\p"
- .string "Thank you!$"
-
-@ Unused
-MysteryEventClub_Text_YouKnowSecretSaying:
- .string "Oh?\n"
- .string "You know the secret saying!\p"
- .string "That means you're now a fellow member\n"
- .string "of the MYSTERY EVENT CLUB!$"
diff --git a/data/scripts/profile_man.inc b/data/scripts/profile_man.inc
new file mode 100644
index 000000000..2c5b16122
--- /dev/null
+++ b/data/scripts/profile_man.inc
@@ -0,0 +1,170 @@
+ProfileMan_EventScript_Man::
+ lock
+ faceplayer
+ goto_if_set FLAG_SYS_CHAT_USED, ProfileMan_EventScript_GivenProfileBefore
+ msgbox ProfileMan_Text_CollectTrainerProfiles, MSGBOX_DEFAULT
+ goto ProfileMan_EventScript_AskToSeeProfile
+ end
+
+ProfileMan_EventScript_AskToSeeProfile::
+ msgbox ProfileMan_Text_MayISeeYourProfile, MSGBOX_DEFAULT
+ multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
+ switch VAR_RESULT
+ case 0, ProfileMan_EventScript_CreateProfile
+ case 1, ProfileMan_EventScript_DeclineShowProfile
+ case 2, ProfileMan_EventScript_Info
+ case MULTI_B_PRESSED, ProfileMan_EventScript_DeclineShowProfile
+ end
+
+ProfileMan_EventScript_Info::
+ msgbox ProfileMan_Text_EasyChatExplanation, MSGBOX_DEFAULT
+ goto ProfileMan_EventScript_AskToSeeProfile
+ end
+
+ProfileMan_EventScript_CreateProfile::
+ msgbox ProfileMan_Text_LetsSeeItThen, MSGBOX_DEFAULT
+ closemessage
+ setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
+ call Common_ShowEasyChatScreen
+ lock
+ faceplayer
+ compare VAR_RESULT, 0
+ goto_if_eq ProfileMan_EventScript_CancelShowProfile
+ compare VAR_RESULT, 1
+ goto_if_eq ProfileMan_EventScript_ShowProfile
+ end
+
+ProfileMan_EventScript_CancelShowProfile::
+ msgbox ProfileMan_Text_NotIntoItRightNow, MSGBOX_DEFAULT
+ release
+ end
+
+ProfileMan_EventScript_ShowProfile::
+ setvar VAR_0x8004, 0
+ special ShowEasyChatProfile
+ waitmessage
+ delay 80
+ msgbox ProfileMan_Text_FantasticProfile, MSGBOX_DEFAULT
+ release
+ end
+
+ProfileMan_EventScript_DeclineShowProfile::
+ msgbox ProfileMan_Text_ImagineYouWouldHaveWonderfulProfile, MSGBOX_DEFAULT
+ release
+ end
+
+ProfileMan_EventScript_GivenProfileBefore::
+ msgbox ProfileMan_Text_YouHaveWonderfulSmile, MSGBOX_DEFAULT
+ goto ProfileMan_EventScript_AskToSeeNewProfile
+ end
+
+ProfileMan_EventScript_AskToSeeNewProfile::
+ msgbox ProfileMan_Text_MayISeeYourNewProfile, MSGBOX_DEFAULT
+ multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
+ switch VAR_RESULT
+ case 0, ProfileMan_EventScript_CreateNewProfile
+ case 1, ProfileMan_EventScript_DeclineNewProfile
+ case 2, ProfileMan_EventScript_InfoNewProfile
+ case MULTI_B_PRESSED, ProfileMan_EventScript_DeclineNewProfile
+ end
+
+ProfileMan_EventScript_InfoNewProfile::
+ msgbox ProfileMan_Text_EasyChatExplanation, MSGBOX_DEFAULT
+ goto ProfileMan_EventScript_AskToSeeNewProfile
+ end
+
+ProfileMan_EventScript_CreateNewProfile::
+ msgbox ProfileMan_Text_EvenBetterThanLastProfile, MSGBOX_DEFAULT
+ closemessage
+ setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
+ call Common_ShowEasyChatScreen
+ lock
+ faceplayer
+ compare VAR_RESULT, 0
+ goto_if_eq ProfileMan_EventScript_CancelShowProfile
+ compare VAR_RESULT, 1
+ goto_if_eq ProfileMan_EventScript_ShowProfile
+ end
+
+ProfileMan_EventScript_DeclineNewProfile::
+ msgbox ProfileMan_Text_LikeProfileWayItIs, MSGBOX_DEFAULT
+ release
+ end
+
+@ Unused
+ProfileMan_EventScript_Ret::
+ return
+
+ProfileMan_Text_CollectTrainerProfiles:
+ .string "Hello there, TRAINER!\n"
+ .string "You've got a wonderful smile, there.\p"
+ .string "I have a hobby--collecting the profiles\n"
+ .string "of POKéMON TRAINERS.$"
+
+ProfileMan_Text_MayISeeYourProfile:
+ .string "So, how about it?\n"
+ .string "May I see your profile?$"
+
+ProfileMan_Text_EasyChatExplanation:
+ .string "You make your own profile by putting\n"
+ .string "together four words or phrases.\p"
+ .string "Here, I'll show you an example of a\n"
+ .string "profile using four pieces of text.\p"
+ .string "You can switch those four pieces with\n"
+ .string "other text pieces any which way you\l"
+ .string "like to make your own profile.\p"
+ .string "There are a lot of text pieces that\n"
+ .string "you can use.\p"
+ .string "They are arranged in groups like\n"
+ .string "POKéMON, lifestyles, and hobbies so\l"
+ .string "it is easier to look them up.\p"
+ .string "So, first, choose the group of text\n"
+ .string "pieces to display a list of choices.\p"
+ .string "Then, pick the choice you want.\p"
+ .string "Repeat for the remaining text choices,\n"
+ .string "and you'll have your very own profile.$"
+
+ProfileMan_Text_LetsSeeItThen:
+ .string "Yes! Thank you!\n"
+ .string "So, let's see it, then.$"
+
+ProfileMan_Text_ImagineYouWouldHaveWonderfulProfile:
+ .string "Oh, no, really?\p"
+ .string "I imagine someone like you would have\n"
+ .string "a wonderful profile…$"
+
+ProfileMan_Text_NotIntoItRightNow:
+ .string "Oh? You're not into it right now?\p"
+ .string "Well, anytime is good by me!$"
+
+ProfileMan_Text_YouHaveWonderfulSmile:
+ .string "Hello there, TRAINER!\n"
+ .string "You've got a wonderful smile.$"
+
+ProfileMan_Text_MayISeeYourNewProfile:
+ .string "May I see your new profile?$"
+
+ProfileMan_Text_EvenBetterThanLastProfile:
+ .string "Yes! Thank you!\p"
+ .string "I hope it's even better than the profile\n"
+ .string "you showed me before.$"
+
+ProfileMan_Text_LikeProfileWayItIs:
+ .string "Oh, you like your profile the way it is.\p"
+ .string "I don't blame you--it's a wonderful\n"
+ .string "profile the way it is now.$"
+
+ProfileMan_Text_FantasticProfile:
+ .string "F-fantastic!\p"
+ .string "Your profile, it's wonderful!\n"
+ .string "It really says what you're about.\p"
+ .string "Why, anyone hearing this profile would\n"
+ .string "be captivated by you!\p"
+ .string "Thank you!$"
+
+@ Unused
+ProfileMan_Text_YouKnowSecretSaying:
+ .string "Oh?\n"
+ .string "You know the secret saying!\p"
+ .string "That means you're now a fellow member\n"
+ .string "of the MYSTERY EVENT CLUB!$"
diff --git a/data/unknown_serial_data.s b/data/unknown_serial_data.s
deleted file mode 100644
index 2fb1ba42b..000000000
--- a/data/unknown_serial_data.s
+++ /dev/null
@@ -1,5 +0,0 @@
- .section .rodata
-
- .align 2
-gUnknown_089A3470::
- .incbin "data/unknown_serial_data.bin"
diff --git a/gflib/string_util.c b/gflib/string_util.c
index b7485184a..4bf0d2ae9 100644
--- a/gflib/string_util.c
+++ b/gflib/string_util.c
@@ -386,7 +386,7 @@ u8 *StringBraille(u8 *dest, const u8 *src)
{
const u8 setBrailleFont[] = {
EXT_CTRL_CODE_BEGIN,
- EXT_CTRL_CODE_SIZE,
+ EXT_CTRL_CODE_FONT,
6,
EOS
};
@@ -664,7 +664,7 @@ u8 GetExtCtrlCodeLength(u8 code)
[EXT_CTRL_CODE_SHADOW] = 2,
[EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW] = 4,
[EXT_CTRL_CODE_PALETTE] = 2,
- [EXT_CTRL_CODE_SIZE] = 2,
+ [EXT_CTRL_CODE_FONT] = 2,
[EXT_CTRL_CODE_RESET_SIZE] = 1,
[EXT_CTRL_CODE_PAUSE] = 2,
[EXT_CTRL_CODE_PAUSE_UNTIL_PRESS] = 1,
diff --git a/gflib/text.c b/gflib/text.c
index eb993c421..e3043230b 100644
--- a/gflib/text.c
+++ b/gflib/text.c
@@ -906,7 +906,7 @@ u16 RenderText(struct TextPrinter *textPrinter)
case EXT_CTRL_CODE_PALETTE:
textPrinter->printerTemplate.currentChar++;
return 2;
- case EXT_CTRL_CODE_SIZE:
+ case EXT_CTRL_CODE_FONT:
subStruct->glyphId = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
return 2;
@@ -1170,7 +1170,7 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
case EXT_CTRL_CODE_HIGHLIGHT:
case EXT_CTRL_CODE_SHADOW:
case EXT_CTRL_CODE_PALETTE:
- case EXT_CTRL_CODE_SIZE:
+ case EXT_CTRL_CODE_FONT:
case EXT_CTRL_CODE_PAUSE:
case EXT_CTRL_CODE_ESCAPE:
case EXT_CTRL_CODE_SHIFT_TEXT:
@@ -1319,7 +1319,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
case EXT_CTRL_CODE_SHIFT_DOWN:
++str;
break;
- case EXT_CTRL_CODE_SIZE:
+ case EXT_CTRL_CODE_FONT:
func = GetFontWidthFunc(*++str);
if (func == NULL)
return 0;
@@ -1449,7 +1449,7 @@ u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
shadowColor = strLocal[strPos++];
GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
continue;
- case EXT_CTRL_CODE_SIZE:
+ case EXT_CTRL_CODE_FONT:
fontId = strLocal[strPos++];
break;
case EXT_CTRL_CODE_PLAY_BGM:
diff --git a/gflib/text.h b/gflib/text.h
index ee3dfa34c..9bb07580e 100644
--- a/gflib/text.h
+++ b/gflib/text.h
@@ -211,7 +211,7 @@
#define EXT_CTRL_CODE_SHADOW 0x03
#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x04
#define EXT_CTRL_CODE_PALETTE 0x05
-#define EXT_CTRL_CODE_SIZE 0x06
+#define EXT_CTRL_CODE_FONT 0x06
#define EXT_CTRL_CODE_RESET_SIZE 0x07
#define EXT_CTRL_CODE_PAUSE 0x08
#define EXT_CTRL_CODE_PAUSE_UNTIL_PRESS 0x09
diff --git a/graphics/unknown/unknown_E6BC04.bin b/graphics/battle_anims/backgrounds/solarbeam.bin
index 91230cb01..91230cb01 100644
--- a/graphics/unknown/unknown_E6BC04.bin
+++ b/graphics/battle_anims/backgrounds/solarbeam.bin
Binary files differ
diff --git a/graphics/battle_anims/sprites/black_ball.bin b/graphics/battle_anims/sprites/black_ball.bin
new file mode 100644
index 000000000..4a6592a8e
--- /dev/null
+++ b/graphics/battle_anims/sprites/black_ball.bin
Binary files differ
diff --git a/graphics/unused/goosuto.bin b/graphics/battle_anims/unused/goosuto.bin
index 8e5329157..8e5329157 100644
--- a/graphics/unused/goosuto.bin
+++ b/graphics/battle_anims/unused/goosuto.bin
Binary files differ
diff --git a/graphics/unused/goosuto.png b/graphics/battle_anims/unused/goosuto.png
index 257a25c71..257a25c71 100644
--- a/graphics/unused/goosuto.png
+++ b/graphics/battle_anims/unused/goosuto.png
Binary files differ
diff --git a/graphics/unknown/unknown_D1C060.bin b/graphics/battle_anims/unused/lights.bin
index e4776cba4..e4776cba4 100644
--- a/graphics/unknown/unknown_D1C060.bin
+++ b/graphics/battle_anims/unused/lights.bin
Binary files differ
diff --git a/graphics/unknown/unknown_D1C060.png b/graphics/battle_anims/unused/lights.png
index 2371241d7..2371241d7 100644
--- a/graphics/unknown/unknown_D1C060.png
+++ b/graphics/battle_anims/unused/lights.png
Binary files differ
diff --git a/graphics/unused/line_sketch.png b/graphics/battle_anims/unused/line_sketch.png
index fdfc8d771..fdfc8d771 100644
--- a/graphics/unused/line_sketch.png
+++ b/graphics/battle_anims/unused/line_sketch.png
Binary files differ
diff --git a/graphics/unused/line_sketch_2.bin b/graphics/battle_anims/unused/line_sketch_2.bin
index e68d116a3..e68d116a3 100644
--- a/graphics/unused/line_sketch_2.bin
+++ b/graphics/battle_anims/unused/line_sketch_2.bin
Binary files differ
diff --git a/graphics/unused/line_sketch_2.png b/graphics/battle_anims/unused/line_sketch_2.png
index cb70b3d83..cb70b3d83 100644
--- a/graphics/unused/line_sketch_2.png
+++ b/graphics/battle_anims/unused/line_sketch_2.png
Binary files differ
diff --git a/graphics/unknown/unknown_C0CAE0.bin b/graphics/battle_anims/unused/line_sketch_2_pal.bin
index 15379a9ce..15379a9ce 100644
--- a/graphics/unknown/unknown_C0CAE0.bin
+++ b/graphics/battle_anims/unused/line_sketch_2_pal.bin
Binary files differ
diff --git a/graphics/unused/metronome_hand_small.png b/graphics/battle_anims/unused/metronome_hand_small.png
index bd6cc8530..bd6cc8530 100644
--- a/graphics/unused/metronome_hand_small.png
+++ b/graphics/battle_anims/unused/metronome_hand_small.png
Binary files differ
diff --git a/graphics/unused/battle_anim_023.pal b/graphics/battle_anims/unused/music_notes.pal
index 8e6e6e902..8e6e6e902 100644
--- a/graphics/unused/battle_anim_023.pal
+++ b/graphics/battle_anims/unused/music_notes.pal
diff --git a/graphics/unused/music_notes.png b/graphics/battle_anims/unused/music_notes.png
index af89e55a0..af89e55a0 100644
--- a/graphics/unused/music_notes.png
+++ b/graphics/battle_anims/unused/music_notes.png
Binary files differ
diff --git a/graphics/unused/old_beatup.png b/graphics/battle_anims/unused/old_beatup.png
index e2a0561e2..e2a0561e2 100644
--- a/graphics/unused/old_beatup.png
+++ b/graphics/battle_anims/unused/old_beatup.png
Binary files differ
diff --git a/graphics/unknown/unknown_C06D98.png b/graphics/battle_anims/unused/spinning_ball.png
index d36afa64d..d36afa64d 100644
--- a/graphics/unknown/unknown_C06D98.png
+++ b/graphics/battle_anims/unused/spinning_ball.png
Binary files differ
diff --git a/graphics/unknown/unknown_C06D98_2.pal b/graphics/battle_anims/unused/spinning_ball_2.pal
index 44f4b55d6..44f4b55d6 100644
--- a/graphics/unknown/unknown_C06D98_2.pal
+++ b/graphics/battle_anims/unused/spinning_ball_2.pal
diff --git a/graphics/battle_anims/unused.pal b/graphics/battle_anims/unused/unknown.pal
index 1d83a2018..1d83a2018 100755
--- a/graphics/battle_anims/unused.pal
+++ b/graphics/battle_anims/unused/unknown.pal
diff --git a/graphics/unknown/unknown_C0CA1C.bin b/graphics/battle_anims/unused/unknown_1.bin
index 4b6b2b106..4b6b2b106 100644
--- a/graphics/unknown/unknown_C0CA1C.bin
+++ b/graphics/battle_anims/unused/unknown_1.bin
Binary files differ
diff --git a/graphics/unknown/unknown_C0CA40.bin b/graphics/battle_anims/unused/unknown_2.bin
index 25fc33a73..25fc33a73 100644
--- a/graphics/unknown/unknown_C0CA40.bin
+++ b/graphics/battle_anims/unused/unknown_2.bin
Binary files differ
diff --git a/graphics/unknown/unknown_C2F9E0.pal b/graphics/battle_anims/unused/unknown_2.pal
index 2fd4607c2..2fd4607c2 100644
--- a/graphics/unknown/unknown_C2F9E0.pal
+++ b/graphics/battle_anims/unused/unknown_2.pal
diff --git a/graphics/unknown/unknown_C0CA64.bin b/graphics/battle_anims/unused/unknown_3.bin
index 5b81e0216..5b81e0216 100644
--- a/graphics/unknown/unknown_C0CA64.bin
+++ b/graphics/battle_anims/unused/unknown_3.bin
Binary files differ
diff --git a/graphics/unknown/unknown_D0D2B4.bin b/graphics/battle_anims/unused/unknown_4.bin
index d42729b58..d42729b58 100644
--- a/graphics/unknown/unknown_D0D2B4.bin
+++ b/graphics/battle_anims/unused/unknown_4.bin
Binary files differ
diff --git a/graphics/battle_anims/unused_water.bin b/graphics/battle_anims/unused/water.bin
index dc2990b0a..dc2990b0a 100644
--- a/graphics/battle_anims/unused_water.bin
+++ b/graphics/battle_anims/unused/water.bin
Binary files differ
diff --git a/graphics/battle_anims/unused_water_gfx.png b/graphics/battle_anims/unused/water_gfx.png
index c4a27b929..c4a27b929 100644
--- a/graphics/battle_anims/unused_water_gfx.png
+++ b/graphics/battle_anims/unused/water_gfx.png
Binary files differ
diff --git a/graphics/unused/water_splash.bin b/graphics/battle_anims/unused/water_splash.bin
index 059347fa7..059347fa7 100644
--- a/graphics/unused/water_splash.bin
+++ b/graphics/battle_anims/unused/water_splash.bin
Binary files differ
diff --git a/graphics/unused/water_splash.png b/graphics/battle_anims/unused/water_splash.png
index a8439a050..a8439a050 100644
--- a/graphics/unused/water_splash.png
+++ b/graphics/battle_anims/unused/water_splash.png
Binary files differ
diff --git a/graphics/battle_frontier/battle_tilemap1.bin b/graphics/battle_frontier/multi_battle_intro_bg_opponent.bin
index c38b76d4a..c38b76d4a 100644
--- a/graphics/battle_frontier/battle_tilemap1.bin
+++ b/graphics/battle_frontier/multi_battle_intro_bg_opponent.bin
Binary files differ
diff --git a/graphics/battle_frontier/battle_tilemap2.bin b/graphics/battle_frontier/multi_battle_intro_bg_player.bin
index 7cc984cff..7cc984cff 100644
--- a/graphics/battle_frontier/battle_tilemap2.bin
+++ b/graphics/battle_frontier/multi_battle_intro_bg_player.bin
Binary files differ
diff --git a/graphics/battle_frontier/pyramid_light.pal b/graphics/battle_frontier/pyramid_floor.pal
index d2492ce34..d2492ce34 100644
--- a/graphics/battle_frontier/pyramid_light.pal
+++ b/graphics/battle_frontier/pyramid_floor.pal
diff --git a/graphics/battle_interface/unknown_32C2D4.png b/graphics/battle_interface/unused_status_summary.png
index 8672ac614..8672ac614 100644
--- a/graphics/battle_interface/unknown_32C2D4.png
+++ b/graphics/battle_interface/unused_status_summary.png
Binary files differ
diff --git a/graphics/unused/old_contest_2.bin b/graphics/contest/audience.bin
index 06836cc19..06836cc19 100644
--- a/graphics/unused/old_contest_2.bin
+++ b/graphics/contest/audience.bin
Binary files differ
diff --git a/graphics/unknown/unknown_C17980.bin b/graphics/contest/curtain.bin
index 77e35348a..77e35348a 100644
--- a/graphics/unknown/unknown_C17980.bin
+++ b/graphics/contest/curtain.bin
Binary files differ
diff --git a/graphics/unknown/unknown_C17170.bin b/graphics/contest/interface.bin
index 9f5141c5b..9f5141c5b 100644
--- a/graphics/unknown/unknown_C17170.bin
+++ b/graphics/contest/interface.bin
Binary files differ
diff --git a/graphics/contest/misc.png b/graphics/contest/interface.png
index 5e3b40462..5e3b40462 100644
--- a/graphics/contest/misc.png
+++ b/graphics/contest/interface.png
Binary files differ
diff --git a/graphics/unused/old_contest_2.pal b/graphics/contest/interface_audience.pal
index 3fb174790..3fb174790 100644
--- a/graphics/unused/old_contest_2.pal
+++ b/graphics/contest/interface_audience.pal
diff --git a/graphics/unused/old_contest_2_2.png b/graphics/contest/japanese/audience.png
index a33a8c324..a33a8c324 100644
--- a/graphics/unused/old_contest_2_2.png
+++ b/graphics/contest/japanese/audience.png
Binary files differ
diff --git a/graphics/unused/old_contest_floor.png b/graphics/contest/japanese/floor.png
index 94877b921..94877b921 100644
--- a/graphics/unused/old_contest_floor.png
+++ b/graphics/contest/japanese/floor.png
Binary files differ
diff --git a/graphics/unused/old_contest_frame_1.png b/graphics/contest/japanese/frame_1.png
index 28eaae905..28eaae905 100644
--- a/graphics/unused/old_contest_frame_1.png
+++ b/graphics/contest/japanese/frame_1.png
Binary files differ
diff --git a/graphics/unused/old_contest_frame_2.png b/graphics/contest/japanese/frame_2.png
index c8b20408c..c8b20408c 100644
--- a/graphics/unused/old_contest_frame_2.png
+++ b/graphics/contest/japanese/frame_2.png
Binary files differ
diff --git a/graphics/unused/old_contest_2_1.png b/graphics/contest/japanese/interface.png
index 67b81de2d..67b81de2d 100644
--- a/graphics/unused/old_contest_2_1.png
+++ b/graphics/contest/japanese/interface.png
Binary files differ
diff --git a/graphics/unused/old_contest_classes.png b/graphics/contest/japanese/letters.png
index c2e7b5e29..c2e7b5e29 100644
--- a/graphics/unused/old_contest_classes.png
+++ b/graphics/contest/japanese/letters.png
Binary files differ
diff --git a/graphics/unused/old_contest_meter.png b/graphics/contest/japanese/meter.png
index 606208b1f..606208b1f 100644
--- a/graphics/unused/old_contest_meter.png
+++ b/graphics/contest/japanese/meter.png
Binary files differ
diff --git a/graphics/unused/old_contest_numbers.png b/graphics/contest/japanese/numbers.png
index 98c145976..98c145976 100644
--- a/graphics/unused/old_contest_numbers.png
+++ b/graphics/contest/japanese/numbers.png
Binary files differ
diff --git a/graphics/unused/old_contest.pal b/graphics/contest/japanese/palette.pal
index 69fde2000..69fde2000 100644
--- a/graphics/unused/old_contest.pal
+++ b/graphics/contest/japanese/palette.pal
diff --git a/graphics/unused/old_contest_symbols.png b/graphics/contest/japanese/symbols.png
index 87cac733e..87cac733e 100644
--- a/graphics/unused/old_contest_symbols.png
+++ b/graphics/contest/japanese/symbols.png
Binary files differ
diff --git a/graphics/unused/old_contest.bin b/graphics/contest/japanese/tilemap_1.bin
index da6f4652e..da6f4652e 100644
--- a/graphics/unused/old_contest.bin
+++ b/graphics/contest/japanese/tilemap_1.bin
Binary files differ
diff --git a/graphics/unknown/unknown_C15BC0.bin b/graphics/contest/japanese/tilemap_2.bin
index 40de9e529..40de9e529 100644
--- a/graphics/unknown/unknown_C15BC0.bin
+++ b/graphics/contest/japanese/tilemap_2.bin
Binary files differ
diff --git a/graphics/unknown/unknown_C19470.png b/graphics/contest/japanese/voltage.png
index 14cc50cf4..14cc50cf4 100644
--- a/graphics/unknown/unknown_C19470.png
+++ b/graphics/contest/japanese/voltage.png
Binary files differ
diff --git a/graphics/unknown/unknown_C17410.bin b/graphics/contest/unused_tilemap_1.bin
index b2567ca7c..b2567ca7c 100644
--- a/graphics/unknown/unknown_C17410.bin
+++ b/graphics/contest/unused_tilemap_1.bin
Binary files differ
diff --git a/graphics/unknown/unknown_C1751C.bin b/graphics/contest/unused_tilemap_2.bin
index e8a506838..e8a506838 100644
--- a/graphics/unknown/unknown_C1751C.bin
+++ b/graphics/contest/unused_tilemap_2.bin
Binary files differ
diff --git a/graphics/unknown/unknown_D9AF44.pal b/graphics/interface/bag_pyramid_interface.pal
index dcfdcf2ef..dcfdcf2ef 100644
--- a/graphics/unknown/unknown_D9AF44.pal
+++ b/graphics/interface/bag_pyramid_interface.pal
diff --git a/graphics/interface/status_tilemap2.bin b/graphics/interface/summary_page_battle_moves.bin
index f835047d1..f835047d1 100644
--- a/graphics/interface/status_tilemap2.bin
+++ b/graphics/interface/summary_page_battle_moves.bin
Binary files differ
diff --git a/graphics/interface/status_tilemap3.bin b/graphics/interface/summary_page_contest_moves.bin
index 9c11ccc4f..9c11ccc4f 100644
--- a/graphics/interface/status_tilemap3.bin
+++ b/graphics/interface/summary_page_contest_moves.bin
Binary files differ
diff --git a/graphics/interface/status_screen.bin b/graphics/interface/summary_page_info.bin
index 771d4db93..771d4db93 100644
--- a/graphics/interface/status_screen.bin
+++ b/graphics/interface/summary_page_info.bin
Binary files differ
diff --git a/graphics/interface/status_tilemap0.bin b/graphics/interface/summary_page_info_copy.bin
index a869a9d03..a869a9d03 100644
--- a/graphics/interface/status_tilemap0.bin
+++ b/graphics/interface/summary_page_info_copy.bin
Binary files differ
diff --git a/graphics/interface/status_tilemap1.bin b/graphics/interface/summary_page_skills.bin
index 19cb94637..19cb94637 100644
--- a/graphics/interface/status_tilemap1.bin
+++ b/graphics/interface/summary_page_skills.bin
Binary files differ
diff --git a/graphics/interface/status_screen.pal b/graphics/interface/summary_screen.pal
index badbfe53b..badbfe53b 100644
--- a/graphics/interface/status_screen.pal
+++ b/graphics/interface/summary_screen.pal
diff --git a/graphics/interface/status_screen.png b/graphics/interface/summary_screen.png
index 2f9f8db85..2f9f8db85 100644
--- a/graphics/interface/status_screen.png
+++ b/graphics/interface/summary_screen.png
Binary files differ
diff --git a/graphics/unused/deoxys_speed_icon_wide.png b/graphics/pokemon/deoxys/icon_speed_wide.png
index ccfba4b24..ccfba4b24 100644
--- a/graphics/unused/deoxys_speed_icon_wide.png
+++ b/graphics/pokemon/deoxys/icon_speed_wide.png
Binary files differ
diff --git a/graphics/unknown/unknown_D437F8.bin b/graphics/pokemon/unused_garbage.bin
index fcb503112..fcb503112 100644
--- a/graphics/unknown/unknown_D437F8.bin
+++ b/graphics/pokemon/unused_garbage.bin
Binary files differ
diff --git a/graphics/trade/unknown_DDCF04.bin b/graphics/trade/menu.bin
index 46218245f..46218245f 100644
--- a/graphics/trade/unknown_DDCF04.bin
+++ b/graphics/trade/menu.bin
Binary files differ
diff --git a/graphics/unused/unused_DDCEE4.bin b/graphics/trade/unused.bin
index 481183cbd..481183cbd 100644
--- a/graphics/unused/unused_DDCEE4.bin
+++ b/graphics/trade/unused.bin
Binary files differ
diff --git a/graphics/unknown/unknown_5B3564.bin b/graphics/trainer_hill/records_window.bin
index a3691cfd7..a3691cfd7 100644
--- a/graphics/unknown/unknown_5B3564.bin
+++ b/graphics/trainer_hill/records_window.bin
Binary files differ
diff --git a/graphics/unknown/unknown_5B3484.png b/graphics/trainer_hill/records_window.png
index 1a39ccb74..1a39ccb74 100644
--- a/graphics/unknown/unknown_5B3484.png
+++ b/graphics/trainer_hill/records_window.png
Binary files differ
diff --git a/graphics/unknown/unknown_C035B8.png b/graphics/unknown/unknown_C035B8.png
deleted file mode 100644
index 0b2ae80f9..000000000
--- a/graphics/unknown/unknown_C035B8.png
+++ /dev/null
Binary files differ
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index 9fd9091a4..c83c57e9a 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -17,6 +17,7 @@ PKNAVOPTIONSGFXDIR := graphics/pokenav/options
WALLPAPERGFXDIR := graphics/pokemon_storage/wallpapers
OBJEVENTGFXDIR := graphics/object_events
MISCGFXDIR := graphics/misc
+JPCONTESTGFXDIR := graphics/contest/japanese
types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark
contest_types := cool beauty cute smart tough
@@ -26,33 +27,33 @@ contest_types := cool beauty cute smart tough
### Castform ###
$(CASTFORMGFXDIR)/front.4bpp: $(CASTFORMGFXDIR)/front_normal_form.4bpp \
- $(CASTFORMGFXDIR)/front_sunny_form.4bpp \
- $(CASTFORMGFXDIR)/front_rainy_form.4bpp \
- $(CASTFORMGFXDIR)/front_snowy_form.4bpp
+ $(CASTFORMGFXDIR)/front_sunny_form.4bpp \
+ $(CASTFORMGFXDIR)/front_rainy_form.4bpp \
+ $(CASTFORMGFXDIR)/front_snowy_form.4bpp
@cat $^ >$@
$(CASTFORMGFXDIR)/back.4bpp: $(CASTFORMGFXDIR)/back_normal_form.4bpp \
- $(CASTFORMGFXDIR)/back_sunny_form.4bpp \
- $(CASTFORMGFXDIR)/back_rainy_form.4bpp \
- $(CASTFORMGFXDIR)/back_snowy_form.4bpp
+ $(CASTFORMGFXDIR)/back_sunny_form.4bpp \
+ $(CASTFORMGFXDIR)/back_rainy_form.4bpp \
+ $(CASTFORMGFXDIR)/back_snowy_form.4bpp
@cat $^ >$@
$(CASTFORMGFXDIR)/anim_front.4bpp: $(CASTFORMGFXDIR)/anim_front_normal_form.4bpp \
- $(CASTFORMGFXDIR)/anim_front_sunny_form.4bpp \
- $(CASTFORMGFXDIR)/anim_front_rainy_form.4bpp \
- $(CASTFORMGFXDIR)/anim_front_snowy_form.4bpp
+ $(CASTFORMGFXDIR)/anim_front_sunny_form.4bpp \
+ $(CASTFORMGFXDIR)/anim_front_rainy_form.4bpp \
+ $(CASTFORMGFXDIR)/anim_front_snowy_form.4bpp
@cat $^ >$@
$(CASTFORMGFXDIR)/normal.gbapal: $(CASTFORMGFXDIR)/normal_normal_form.gbapal \
- $(CASTFORMGFXDIR)/normal_sunny_form.gbapal \
- $(CASTFORMGFXDIR)/normal_rainy_form.gbapal \
- $(CASTFORMGFXDIR)/normal_snowy_form.gbapal
+ $(CASTFORMGFXDIR)/normal_sunny_form.gbapal \
+ $(CASTFORMGFXDIR)/normal_rainy_form.gbapal \
+ $(CASTFORMGFXDIR)/normal_snowy_form.gbapal
@cat $^ >$@
$(CASTFORMGFXDIR)/shiny.gbapal: $(CASTFORMGFXDIR)/shiny_normal_form.gbapal \
- $(CASTFORMGFXDIR)/shiny_sunny_form.gbapal \
- $(CASTFORMGFXDIR)/shiny_rainy_form.gbapal \
- $(CASTFORMGFXDIR)/shiny_snowy_form.gbapal
+ $(CASTFORMGFXDIR)/shiny_sunny_form.gbapal \
+ $(CASTFORMGFXDIR)/shiny_rainy_form.gbapal \
+ $(CASTFORMGFXDIR)/shiny_snowy_form.gbapal
@cat $^ >$@
@@ -356,38 +357,38 @@ $(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 29
$(BATINTGFXDIR)/textbox.gbapal: $(BATINTGFXDIR)/textbox_0.gbapal \
- $(BATINTGFXDIR)/textbox_1.gbapal
+ $(BATINTGFXDIR)/textbox_1.gbapal
@cat $^ >$@
$(BTLANMSPRGFXDIR)/ice_cube.4bpp: $(BTLANMSPRGFXDIR)/ice_cube_0.4bpp \
- $(BTLANMSPRGFXDIR)/ice_cube_1.4bpp \
- $(BTLANMSPRGFXDIR)/ice_cube_2.4bpp \
- $(BTLANMSPRGFXDIR)/ice_cube_3.4bpp
+ $(BTLANMSPRGFXDIR)/ice_cube_1.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_cube_2.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_cube_3.4bpp
@cat $^ >$@
$(UNUSEDGFXDIR)/obi_palpak1.gbapal: $(UNUSEDGFXDIR)/old_pal1.gbapal \
- $(UNUSEDGFXDIR)/old_pal2.gbapal \
- $(UNUSEDGFXDIR)/old_pal3.gbapal
+ $(UNUSEDGFXDIR)/old_pal2.gbapal \
+ $(UNUSEDGFXDIR)/old_pal3.gbapal
@cat $^ >$@
$(UNUSEDGFXDIR)/obi_palpak3.gbapal: $(UNUSEDGFXDIR)/old_pal5.gbapal \
- $(UNUSEDGFXDIR)/old_pal6.gbapal \
- $(UNUSEDGFXDIR)/old_pal7.gbapal
+ $(UNUSEDGFXDIR)/old_pal6.gbapal \
+ $(UNUSEDGFXDIR)/old_pal7.gbapal
@cat $^ >$@
$(UNUSEDGFXDIR)/obi1.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur.4bpp \
- $(UNUSEDGFXDIR)/old_charizard.4bpp
+ $(UNUSEDGFXDIR)/old_charizard.4bpp
@cat $^ >$@
$(UNUSEDGFXDIR)/obi2.4bpp: $(UNUSEDGFXDIR)/old_bulbasaur2.4bpp \
- $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp \
- $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp \
- $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp
+ $(UNUSEDGFXDIR)/old_battle_interface_1.4bpp \
+ $(UNUSEDGFXDIR)/old_battle_interface_2.4bpp \
+ $(UNUSEDGFXDIR)/old_battle_interface_3.4bpp
@cat $^ >$@
-$(INTERFACEGFXDIR)/hp_numbers.4bpp: $(INTERFACEGFXDIR)/hpbar_anim.4bpp \
- $(INTERFACEGFXDIR)/numbers1.4bpp \
- $(INTERFACEGFXDIR)/numbers2.4bpp
+$(INTERFACEGFXDIR)/battle_bar.4bpp: $(INTERFACEGFXDIR)/hpbar_anim.4bpp \
+ $(INTERFACEGFXDIR)/numbers1.4bpp \
+ $(INTERFACEGFXDIR)/numbers2.4bpp
@cat $^ >$@
$(UNUSEDGFXDIR)/redyellowgreen_frame.bin: $(UNUSEDGFXDIR)/red_frame.bin \
@@ -402,39 +403,39 @@ $(UNUSEDGFXDIR)/color_frames.4bpp: %.4bpp: %.png
$(BATINTGFXDIR)/unused_window2bar.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 5
-$(UNUSEDGFXDIR)/old_contest.4bpp: $(UNUSEDGFXDIR)/old_contest_frame_1.4bpp \
- $(UNUSEDGFXDIR)/old_contest_floor.4bpp \
- $(UNUSEDGFXDIR)/old_contest_frame_2.4bpp \
- $(UNUSEDGFXDIR)/old_contest_symbols.4bpp \
- $(UNUSEDGFXDIR)/old_contest_meter.4bpp \
- $(UNUSEDGFXDIR)/old_contest_classes.4bpp \
- $(UNUSEDGFXDIR)/old_contest_numbers.4bpp
+$(JPCONTESTGFXDIR)/composite_1.4bpp: $(JPCONTESTGFXDIR)/frame_1.4bpp \
+ $(JPCONTESTGFXDIR)/floor.4bpp \
+ $(JPCONTESTGFXDIR)/frame_2.4bpp \
+ $(JPCONTESTGFXDIR)/symbols.4bpp \
+ $(JPCONTESTGFXDIR)/meter.4bpp \
+ $(JPCONTESTGFXDIR)/letters.4bpp \
+ $(JPCONTESTGFXDIR)/numbers.4bpp
@cat $^ >$@
-$(UNUSEDGFXDIR)/old_contest_2.4bpp: $(UNUSEDGFXDIR)/old_contest_2_1.4bpp \
- $(UNUSEDGFXDIR)/old_contest_2_2.4bpp
+$(JPCONTESTGFXDIR)/composite_2.4bpp: $(JPCONTESTGFXDIR)/interface.4bpp \
+ $(JPCONTESTGFXDIR)/audience.4bpp
@cat $^ >$@
-$(UNKNOWNGFXDIR)/unknown_C19470.4bpp: %.4bpp: %.png
+$(JPCONTESTGFXDIR)/voltage.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 36
$(BTLANMSPRGFXDIR)/ice_crystals.4bpp: $(BTLANMSPRGFXDIR)/ice_crystals_0.4bpp \
- $(BTLANMSPRGFXDIR)/ice_crystals_1.4bpp \
- $(BTLANMSPRGFXDIR)/ice_crystals_2.4bpp \
- $(BTLANMSPRGFXDIR)/ice_crystals_3.4bpp \
- $(BTLANMSPRGFXDIR)/ice_crystals_4.4bpp
+ $(BTLANMSPRGFXDIR)/ice_crystals_1.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_crystals_2.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_crystals_3.4bpp \
+ $(BTLANMSPRGFXDIR)/ice_crystals_4.4bpp
@cat $^ >$@
$(BTLANMSPRGFXDIR)/mud_sand.4bpp: $(BTLANMSPRGFXDIR)/mud_sand_0.4bpp \
- $(BTLANMSPRGFXDIR)/mud_sand_1.4bpp
+ $(BTLANMSPRGFXDIR)/mud_sand_1.4bpp
@cat $^ >$@
$(BTLANMSPRGFXDIR)/flower.4bpp: $(BTLANMSPRGFXDIR)/flower_0.4bpp \
- $(BTLANMSPRGFXDIR)/flower_1.4bpp
+ $(BTLANMSPRGFXDIR)/flower_1.4bpp
@cat $^ >$@
$(BTLANMSPRGFXDIR)/spark.4bpp: $(BTLANMSPRGFXDIR)/spark_0.4bpp \
- $(BTLANMSPRGFXDIR)/spark_1.4bpp
+ $(BTLANMSPRGFXDIR)/spark_1.4bpp
@cat $^ >$@
$(MASKSGFXDIR)/unused_level_up.4bpp: %.4bpp: %.png
@@ -450,8 +451,8 @@ $(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types
@cat $^ >$@
$(TYPESGFXDIR)/move_types.gbapal: $(TYPESGFXDIR)/move_types_1.gbapal \
- $(TYPESGFXDIR)/move_types_2.gbapal \
- $(TYPESGFXDIR)/move_types_3.gbapal
+ $(TYPESGFXDIR)/move_types_2.gbapal \
+ $(TYPESGFXDIR)/move_types_3.gbapal
@cat $^ >$@
$(INTERFACEGFXDIR)/bag_screen.4bpp: %.4bpp: %.png
@@ -480,13 +481,13 @@ graphics/picture_frame/lobby.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 86
$(ROULETTEGFXDIR)/roulette_tilt.4bpp: $(ROULETTEGFXDIR)/shroomish.4bpp \
- $(ROULETTEGFXDIR)/tailow.4bpp
+ $(ROULETTEGFXDIR)/tailow.4bpp
@cat $^ >$@
$(ROULETTEGFXDIR)/wheel_icons.4bpp: $(ROULETTEGFXDIR)/wynaut.4bpp \
- $(ROULETTEGFXDIR)/azurill.4bpp \
- $(ROULETTEGFXDIR)/skitty.4bpp \
- $(ROULETTEGFXDIR)/makuhita.4bpp
+ $(ROULETTEGFXDIR)/azurill.4bpp \
+ $(ROULETTEGFXDIR)/skitty.4bpp \
+ $(ROULETTEGFXDIR)/makuhita.4bpp
@cat $^ >$@
$(BATTRANSGFXDIR)/regis.4bpp: %.4bpp: %.png
@@ -496,23 +497,23 @@ $(BATTRANSGFXDIR)/rayquaza.4bpp: %.4bpp: %.png
$(GFX) $< $@ -num_tiles 938
$(BATTRANSGFXDIR)/frontier_square_1.4bpp: $(BATTRANSGFXDIR)/frontier_squares_blanktiles.4bpp \
- $(BATTRANSGFXDIR)/frontier_squares_1.4bpp
+ $(BATTRANSGFXDIR)/frontier_squares_1.4bpp
@cat $^ >$@
$(BATTRANSGFXDIR)/frontier_square_2.4bpp: $(BATTRANSGFXDIR)/frontier_squares_blanktiles.4bpp \
- $(BATTRANSGFXDIR)/frontier_squares_2.4bpp
+ $(BATTRANSGFXDIR)/frontier_squares_2.4bpp
@cat $^ >$@
$(BATTRANSGFXDIR)/frontier_square_3.4bpp: $(BATTRANSGFXDIR)/frontier_squares_blanktiles.4bpp \
- $(BATTRANSGFXDIR)/frontier_squares_3.4bpp
+ $(BATTRANSGFXDIR)/frontier_squares_3.4bpp
@cat $^ >$@
$(BATTRANSGFXDIR)/frontier_square_4.4bpp: $(BATTRANSGFXDIR)/frontier_squares_blanktiles.4bpp \
- $(BATTRANSGFXDIR)/frontier_squares_4.4bpp
+ $(BATTRANSGFXDIR)/frontier_squares_4.4bpp
@cat $^ >$@
$(SLOTMACHINEGFXDIR)/reel_time_gfx.4bpp: $(SLOTMACHINEGFXDIR)/reel_time_pikachu.4bpp \
- $(SLOTMACHINEGFXDIR)/reel_time_machine.4bpp
+ $(SLOTMACHINEGFXDIR)/reel_time_machine.4bpp
@cat $^ >$@
$(UNUSEDGFXDIR)/intro_birch_beauty.4bpp: %.4bpp: %.png
@@ -692,18 +693,18 @@ $(BATTRANSGFXDIR)/frontier_logo_center.4bpp: %.4bpp: %.png
### Pokenav ###
$(PKNAVOPTIONSGFXDIR)/options.4bpp: $(PKNAVOPTIONSGFXDIR)/hoenn_map.4bpp \
- $(PKNAVOPTIONSGFXDIR)/condition.4bpp \
- $(PKNAVOPTIONSGFXDIR)/match_call.4bpp \
- $(PKNAVOPTIONSGFXDIR)/ribbons.4bpp \
- $(PKNAVOPTIONSGFXDIR)/switch_off.4bpp \
- $(PKNAVOPTIONSGFXDIR)/party.4bpp \
- $(PKNAVOPTIONSGFXDIR)/search.4bpp \
- $(PKNAVOPTIONSGFXDIR)/cool.4bpp \
- $(PKNAVOPTIONSGFXDIR)/beauty.4bpp \
- $(PKNAVOPTIONSGFXDIR)/cute.4bpp \
- $(PKNAVOPTIONSGFXDIR)/smart.4bpp \
- $(PKNAVOPTIONSGFXDIR)/tough.4bpp \
- $(PKNAVOPTIONSGFXDIR)/cancel.4bpp
+ $(PKNAVOPTIONSGFXDIR)/condition.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/match_call.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/ribbons.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/switch_off.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/party.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/search.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/cool.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/beauty.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/cute.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/smart.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/tough.4bpp \
+ $(PKNAVOPTIONSGFXDIR)/cancel.4bpp
@cat $^ >$@
$(PKNAVGFXDIR)/header.4bpp: %.4bpp: %.png
diff --git a/include/bike.h b/include/bike.h
index 893b0b19e..afe773d42 100644
--- a/include/bike.h
+++ b/include/bike.h
@@ -17,11 +17,11 @@ struct BikeHistoryInputInfo
// Player speeds
enum
{
- SPEED_STANDING,
- SPEED_NORMAL,
- SPEED_FAST,
- SPEED_FASTER,
- SPEED_FASTEST,
+ BIKE_SPEED_STANDING,
+ BIKE_SPEED_NORMAL,
+ BIKE_SPEED_FAST,
+ BIKE_SPEED_FASTER,
+ BIKE_SPEED_FASTEST,
};
// mach bike transitions enum
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index 48de594e2..2ff9318be 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -342,9 +342,9 @@
#define BG_FISSURE 21
#define BG_BUG_OPPONENT 22
#define BG_BUG_PLAYER 23
-#define BG_SOLARBEAM_OPPONENT 24
-#define BG_SOLARBEAM_PLAYER 25
-#define BG_SOLARBEAM_CONTESTS 26
+#define BG_SOLAR_BEAM_OPPONENT 24
+#define BG_SOLAR_BEAM_PLAYER 25
+#define BG_SOLAR_BEAM_CONTESTS 26
// table ids for general animations (gBattleAnims_General)
#define B_ANIM_CASTFORM_CHANGE 0
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index 68c5a42ef..b6d15e6b2 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -17,11 +17,6 @@
#define FACILITY_UNION_ROOM 8
#define FACILITY_MULTI_OR_EREADER 9 // Direct Corner multi battles, multi battle with Steven, and e-Reader battles
-// Battle Frontier lvl modes.
-#define FRONTIER_LVL_50 0
-#define FRONTIER_LVL_OPEN 1
-#define FRONTIER_LVL_TENT 2
-
// Battle Frontier battle modes.
#define FRONTIER_MODE_SINGLES 0
#define FRONTIER_MODE_DOUBLES 1
@@ -53,28 +48,28 @@
// These sets of facility ids would be redundant if the order was consistent
// The order is important for this set so that all the non-link records can be continuous
-#define RANKING_HALL_BATTLE_TOWER_SINGLES 0
-#define RANKING_HALL_BATTLE_TOWER_DOUBLES 1
-#define RANKING_HALL_BATTLE_TOWER_MULTIS 2
-#define RANKING_HALL_BATTLE_DOME 3
-#define RANKING_HALL_BATTLE_PALACE 4
-#define RANKING_HALL_BATTLE_ARENA 5
-#define RANKING_HALL_BATTLE_FACTORY 6
-#define RANKING_HALL_BATTLE_PIKE 7
-#define RANKING_HALL_BATTLE_PYRAMID 8
-#define RANKING_HALL_BATTLE_TOWER_LINK 9
-
-#define FRONTIER_MANIAC_BATTLE_TOWER_SINGLES 0
-#define FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES 1
-#define FRONTIER_MANIAC_BATTLE_TOWER_MULTIS 2
-#define FRONTIER_MANIAC_BATTLE_TOWER_LINK 3
-#define FRONTIER_MANIAC_BATTLE_DOME 4
-#define FRONTIER_MANIAC_BATTLE_FACTORY 5
-#define FRONTIER_MANIAC_BATTLE_PALACE 6
-#define FRONTIER_MANIAC_BATTLE_ARENA 7
-#define FRONTIER_MANIAC_BATTLE_PIKE 8
-#define FRONTIER_MANIAC_BATTLE_PYRAMID 9
-#define FRONTIER_MANIAC_FACILITY_COUNT 10
+#define RANKING_HALL_TOWER_SINGLES 0
+#define RANKING_HALL_TOWER_DOUBLES 1
+#define RANKING_HALL_TOWER_MULTIS 2
+#define RANKING_HALL_DOME 3
+#define RANKING_HALL_PALACE 4
+#define RANKING_HALL_ARENA 5
+#define RANKING_HALL_FACTORY 6
+#define RANKING_HALL_PIKE 7
+#define RANKING_HALL_PYRAMID 8
+#define RANKING_HALL_TOWER_LINK 9
+
+#define FRONTIER_MANIAC_TOWER_SINGLES 0
+#define FRONTIER_MANIAC_TOWER_DOUBLES 1
+#define FRONTIER_MANIAC_TOWER_MULTIS 2
+#define FRONTIER_MANIAC_TOWER_LINK 3
+#define FRONTIER_MANIAC_DOME 4
+#define FRONTIER_MANIAC_FACTORY 5
+#define FRONTIER_MANIAC_PALACE 6
+#define FRONTIER_MANIAC_ARENA 7
+#define FRONTIER_MANIAC_PIKE 8
+#define FRONTIER_MANIAC_PYRAMID 9
+#define FRONTIER_MANIAC_FACILITY_COUNT 10
#define FRONTIER_MANIAC_MESSAGE_COUNT 3
diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h
index cc62208fa..c4f79efc3 100644
--- a/include/constants/battle_move_effects.h
+++ b/include/constants/battle_move_effects.h
@@ -152,7 +152,7 @@
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
-#define EFFECT_SOLARBEAM 151
+#define EFFECT_SOLAR_BEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
#define EFFECT_BEAT_UP 154
diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h
index 13e91c415..e7238b56e 100755
--- a/include/constants/event_object_movement.h
+++ b/include/constants/event_object_movement.h
@@ -128,10 +128,10 @@
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP 0x2A
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT 0x2B
#define MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT 0x2C
-#define MOVEMENT_ACTION_WALK_FASTEST_DOWN 0x2D
-#define MOVEMENT_ACTION_WALK_FASTEST_UP 0x2E
-#define MOVEMENT_ACTION_WALK_FASTEST_LEFT 0x2F
-#define MOVEMENT_ACTION_WALK_FASTEST_RIGHT 0x30
+#define MOVEMENT_ACTION_WALK_FASTER_DOWN 0x2D
+#define MOVEMENT_ACTION_WALK_FASTER_UP 0x2E
+#define MOVEMENT_ACTION_WALK_FASTER_LEFT 0x2F
+#define MOVEMENT_ACTION_WALK_FASTER_RIGHT 0x30
#define MOVEMENT_ACTION_SLIDE_DOWN 0x31
#define MOVEMENT_ACTION_SLIDE_UP 0x32
#define MOVEMENT_ACTION_SLIDE_LEFT 0x33
@@ -245,4 +245,77 @@
#define MOVEMENT_ACTION_STEP_END 0xFE
#define MOVEMENT_ACTION_NONE 0xFF
+#define ANIM_STD_FACE_SOUTH 0
+#define ANIM_STD_FACE_NORTH 1
+#define ANIM_STD_FACE_WEST 2
+#define ANIM_STD_FACE_EAST 3
+#define ANIM_STD_GO_SOUTH 4
+#define ANIM_STD_GO_NORTH 5
+#define ANIM_STD_GO_WEST 6
+#define ANIM_STD_GO_EAST 7
+#define ANIM_STD_GO_FAST_SOUTH 8
+#define ANIM_STD_GO_FAST_NORTH 9
+#define ANIM_STD_GO_FAST_WEST 10
+#define ANIM_STD_GO_FAST_EAST 11
+#define ANIM_STD_GO_FASTER_SOUTH 12
+#define ANIM_STD_GO_FASTER_NORTH 13
+#define ANIM_STD_GO_FASTER_WEST 14
+#define ANIM_STD_GO_FASTER_EAST 15
+#define ANIM_STD_GO_FASTEST_SOUTH 16
+#define ANIM_STD_GO_FASTEST_NORTH 17
+#define ANIM_STD_GO_FASTEST_WEST 18
+#define ANIM_STD_GO_FASTEST_EAST 19
+#define ANIM_STD_COUNT 20
+
+#define ANIM_RUN_SOUTH (ANIM_STD_COUNT + 0)
+#define ANIM_RUN_NORTH (ANIM_STD_COUNT + 1)
+#define ANIM_RUN_WEST (ANIM_STD_COUNT + 2)
+#define ANIM_RUN_EAST (ANIM_STD_COUNT + 3)
+
+#define ANIM_BUNNY_HOPPY_BACK_WHEEL_SOUTH (ANIM_STD_COUNT + 0)
+#define ANIM_BUNNY_HOPPY_BACK_WHEEL_NORTH (ANIM_STD_COUNT + 1)
+#define ANIM_BUNNY_HOPPY_BACK_WHEEL_WEST (ANIM_STD_COUNT + 2)
+#define ANIM_BUNNY_HOPPY_BACK_WHEEL_EAST (ANIM_STD_COUNT + 3)
+#define ANIM_BUNNY_HOPPY_FRONT_WHEEL_SOUTH (ANIM_STD_COUNT + 4)
+#define ANIM_BUNNY_HOPPY_FRONT_WHEEL_NORTH (ANIM_STD_COUNT + 5)
+#define ANIM_BUNNY_HOPPY_FRONT_WHEEL_WEST (ANIM_STD_COUNT + 6)
+#define ANIM_BUNNY_HOPPY_FRONT_WHEEL_EAST (ANIM_STD_COUNT + 7)
+#define ANIM_STANDING_WHEELIE_BACK_WHEEL_SOUTH (ANIM_STD_COUNT + 8)
+#define ANIM_STANDING_WHEELIE_BACK_WHEEL_NORTH (ANIM_STD_COUNT + 9)
+#define ANIM_STANDING_WHEELIE_BACK_WHEEL_WEST (ANIM_STD_COUNT + 10)
+#define ANIM_STANDING_WHEELIE_BACK_WHEEL_EAST (ANIM_STD_COUNT + 11)
+#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_SOUTH (ANIM_STD_COUNT + 12)
+#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_NORTH (ANIM_STD_COUNT + 13)
+#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_WEST (ANIM_STD_COUNT + 14)
+#define ANIM_STANDING_WHEELIE_FRONT_WHEEL_EAST (ANIM_STD_COUNT + 15)
+#define ANIM_MOVING_WHEELIE_SOUTH (ANIM_STD_COUNT + 16)
+#define ANIM_MOVING_WHEELIE_NORTH (ANIM_STD_COUNT + 17)
+#define ANIM_MOVING_WHEELIE_WEST (ANIM_STD_COUNT + 18)
+#define ANIM_MOVING_WHEELIE_EAST (ANIM_STD_COUNT + 19)
+
+#define ANIM_GET_ON_OFF_POKEMON_SOUTH (ANIM_STD_COUNT + 0)
+#define ANIM_GET_ON_OFF_POKEMON_NORTH (ANIM_STD_COUNT + 1)
+#define ANIM_GET_ON_OFF_POKEMON_WEST (ANIM_STD_COUNT + 2)
+#define ANIM_GET_ON_OFF_POKEMON_EAST (ANIM_STD_COUNT + 3)
+
+#define ANIM_NURSE_BOW (ANIM_STD_COUNT + 0)
+
+#define ANIM_FIELD_MOVE 0
+
+#define ANIM_STAY_STILL 0
+#define ANIM_REMOVE_OBSTACLE 1
+
+#define ANIM_TAKE_OUT_ROD_SOUTH 0
+#define ANIM_TAKE_OUT_ROD_NORTH 1
+#define ANIM_TAKE_OUT_ROD_WEST 2
+#define ANIM_TAKE_OUT_ROD_EAST 3
+#define ANIM_PUT_AWAY_ROD_SOUTH 4
+#define ANIM_PUT_AWAY_ROD_NORTH 5
+#define ANIM_PUT_AWAY_ROD_WEST 6
+#define ANIM_PUT_AWAY_ROD_EAST 7
+#define ANIM_HOOKED_POKEMON_SOUTH 8
+#define ANIM_HOOKED_POKEMON_NORTH 9
+#define ANIM_HOOKED_POKEMON_WEST 10
+#define ANIM_HOOKED_POKEMON_EAST 11
+
#endif // GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
diff --git a/include/constants/global.h b/include/constants/global.h
index bd73d7999..ef7861e9e 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -53,9 +53,20 @@
#define UNION_ROOM_KB_ROW_COUNT 10
#define GIFT_RIBBONS_COUNT 11
#define SAVED_TRENDS_COUNT 5
-
#define PYRAMID_BAG_ITEMS_COUNT 10
-#define HALL_FACILITIES_COUNT 9 // 7 facilities for single mode + tower double mode + tower multi mode.
+
+// Number of facilities for Ranking Hall.
+// 7 facilities for single mode + tower double mode + tower multi mode.
+// Excludes link modes. See RANKING_HALL_* in include/constants/battle_frontier.h
+#define HALL_FACILITIES_COUNT 9
+// Received via record mixing, 1 for each player other than yourself
+#define HALL_RECORDS_COUNT 3
+
+// Battle Frontier level modes.
+#define FRONTIER_LVL_50 0
+#define FRONTIER_LVL_OPEN 1
+#define FRONTIER_LVL_MODE_COUNT 2
+#define FRONTIER_LVL_TENT FRONTIER_LVL_MODE_COUNT // Special usage for indicating Battle Tent
#define TRAINER_ID_LENGTH 4
#define MAX_MON_MOVES 4
diff --git a/include/constants/items.h b/include/constants/items.h
index c596dd3b8..e9d889cfa 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -402,7 +402,7 @@
#define ITEM_TM19_GIGA_DRAIN ITEM_TM19
#define ITEM_TM20_SAFEGUARD ITEM_TM20
#define ITEM_TM21_FRUSTRATION ITEM_TM21
-#define ITEM_TM22_SOLARBEAM ITEM_TM22
+#define ITEM_TM22_SOLAR_BEAM ITEM_TM22
#define ITEM_TM23_IRON_TAIL ITEM_TM23
#define ITEM_TM24_THUNDERBOLT ITEM_TM24
#define ITEM_TM25_THUNDER ITEM_TM25
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index b4ee3eacf..519120082 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -352,6 +352,7 @@
#define METATILE_InsideShip_IntactDoor_Bottom_Interior 0x297
// gTileset_BattlePike
+#define METATILE_BattlePike_CurtainFrames_Start 0x201
#define METATILE_BattlePike_Curtain_Stage0_Tile0 0x24A
#define METATILE_BattlePike_Curtain_Stage0_Tile1 0x251
#define METATILE_BattlePike_Curtain_Stage0_Tile2 0x252
diff --git a/include/daycare.h b/include/daycare.h
index d6c0d4201..62a7918ff 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -3,10 +3,17 @@
#include "constants/daycare.h"
+struct RecordMixingDaycareMail
+{
+ struct DaycareMail mail[DAYCARE_MON_COUNT];
+ u32 numDaycareMons;
+ bool16 cantHoldItem[DAYCARE_MON_COUNT];
+};
+
u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest);
u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest);
u8 CountPokemonInDaycare(struct DayCare *daycare);
-void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *daycareMail);
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *mixMail);
void StoreSelectedPokemonInDaycare(void);
u16 TakePokemonFromDaycare(void);
void GetDaycareCost(void);
diff --git a/include/ereader_helpers.h b/include/ereader_helpers.h
index 064b61ed7..8bf3dc43b 100755
--- a/include/ereader_helpers.h
+++ b/include/ereader_helpers.h
@@ -3,6 +3,34 @@
#include "trainer_hill.h"
+enum {
+ EREADER_XFR_STATE_INIT = 0,
+ EREADER_XFR_STATE_HANDSHAKE,
+ EREADER_XFR_STATE_START,
+ EREADER_XFR_STATE_TRANSFER,
+ EREADER_XFR_STATE_TRANSFER_DONE,
+ EREADER_XFR_STATE_CHECKSUM,
+ EREADER_XFR_STATE_DONE
+};
+
+#define EREADER_XFER_EXE 1
+#define EREADER_XFER_CHK 2
+#define EREADER_XFER_SHIFT 0
+#define EREADER_XFER_MASK ((EREADER_XFER_EXE | EREADER_XFER_CHK) << EREADER_XFER_SHIFT)
+
+#define EREADER_CANCEL_TIMEOUT 1
+#define EREADER_CANCEL_KEY 2
+#define EREADER_CANCEL_SHIFT 2
+#define EREADER_CANCEL_TIMEOUT_MASK (EREADER_CANCEL_TIMEOUT << EREADER_CANCEL_SHIFT)
+#define EREADER_CANCEL_KEY_MASK (EREADER_CANCEL_KEY << EREADER_CANCEL_SHIFT)
+#define EREADER_CANCEL_MASK ((EREADER_CANCEL_TIMEOUT | EREADER_CANCEL_KEY) << EREADER_CANCEL_SHIFT)
+
+#define EREADER_CHECKSUM_OK 1
+#define EREADER_CHECKSUM_ERR 2
+#define EREADER_CHECKSUM_SHIFT 4
+#define EREADER_CHECKSUM_OK_MASK (EREADER_CHECKSUM_OK << EREADER_CHECKSUM_SHIFT)
+#define EREADER_CHECKSUM_MASK ((EREADER_CHECKSUM_OK | EREADER_CHECKSUM_ERR) << EREADER_CHECKSUM_SHIFT)
+
struct EReaderTrainerHillTrainer
{
u8 trainerNum;
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index a935502e6..11dac813d 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -136,7 +136,7 @@ u8 GetFaceDirectionMovementAction(u32);
u8 GetWalkNormalMovementAction(u32);
u8 GetWalkFastMovementAction(u32);
u8 GetRideWaterCurrentMovementAction(u32);
-u8 GetWalkFastestMovementAction(u32);
+u8 GetWalkFasterMovementAction(u32);
u8 GetPlayerRunMovementAction(u32);
u8 GetJumpInPlaceMovementAction(u32);
u8 GetAcroWheelieFaceDirectionMovementAction(u32);
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index 903fe6ef1..823564f22 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -11,10 +11,10 @@ void PlayerGetDestCoords(s16 *, s16 *);
u8 GetPlayerFacingDirection(void);
u8 GetPlayerMovementDirection(void);
u8 PlayerGetCopyableMovement(void);
-void PlayerGoSpeed1(u8);
-void PlayerGoSpeed2(u8);
+void PlayerWalkNormal(u8);
+void PlayerWalkFast(u8);
void PlayerRideWaterCurrent(u8);
-void PlayerGoSpeed4(u8);
+void PlayerWalkFaster(u8);
void PlayerOnBikeCollide(u8);
void PlayerFaceDirection(u8 a);
void PlayerTurnInPlace(u8 a);
@@ -32,10 +32,10 @@ void PlayerOnBikeCollideWithFarawayIslandMew(u8 direction);
u8 CheckForObjectEventCollision(struct ObjectEvent *a, s16 b, s16 c, u8 d, u8 e);
u8 PlayerGetZCoord(void);
void SetPlayerAvatarTransitionFlags(u16 a);
-void sub_808BCE8(void);
+void CancelPlayerForcedMovement(void);
void InitPlayerAvatar(s16 a, s16 b, u8 c, u8 d);
void PlayerFreeze(void);
-void sub_808BCF4(void);
+void StopPlayerAvatar(void);
void SetSpinStartFacingDir(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 41b8539ff..71ccd7068 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -11,6 +11,11 @@
#define METATILE_ID(tileset, name) (METATILE_##tileset##_##name)
+// Rows of metatiles do not actually have a strict width.
+// This constant is used for calculations for finding the next row of metatiles
+// for constructing large tiles, such as the Battle Pike's curtain tile.
+#define METATILE_ROW_WIDTH 8
+
enum
{
CONNECTION_INVALID = -1,
@@ -241,14 +246,14 @@ enum {
PLAYER_AVATAR_STATE_WATERING,
};
-#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
-#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
-#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
-#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
-#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
-#define PLAYER_AVATAR_FLAG_5 (1 << 5)
-#define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6)
-#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
+#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
+#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
+#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
+#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
+#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
+#define PLAYER_AVATAR_FLAG_CONTROLLABLE (1 << 5)
+#define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6)
+#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
enum
{
diff --git a/include/global.h b/include/global.h
index 03b023024..dd02a1790 100644
--- a/include/global.h
+++ b/include/global.h
@@ -207,11 +207,10 @@ struct BerryPickingResults
u8 field_F;
};
-// two arrays for lvl50 and open level
struct PyramidBag
{
- u16 itemId[2][PYRAMID_BAG_ITEMS_COUNT];
- u8 quantity[2][PYRAMID_BAG_ITEMS_COUNT];
+ u16 itemId[FRONTIER_LVL_MODE_COUNT][PYRAMID_BAG_ITEMS_COUNT];
+ u8 quantity[FRONTIER_LVL_MODE_COUNT][PYRAMID_BAG_ITEMS_COUNT];
};
struct BerryCrush
@@ -352,8 +351,8 @@ struct BattleFrontier
/*0xCB2*/ u16 curChallengeBattleNum; // Battle number / room number (Pike) / floor number (Pyramid)
/*0xCB4*/ u16 trainerIds[20];
/*0xCDC*/ u32 winStreakActiveFlags;
- /*0xCE0*/ u16 towerWinStreaks[4][2];
- /*0xCF0*/ u16 towerRecordWinStreaks[4][2];
+ /*0xCE0*/ u16 towerWinStreaks[4][FRONTIER_LVL_MODE_COUNT];
+ /*0xCF0*/ u16 towerRecordWinStreaks[4][FRONTIER_LVL_MODE_COUNT];
/*0xD00*/ u16 battledBrainFlags;
/*0xD02*/ u16 towerSinglesStreak; // Never read
/*0xD04*/ u16 towerNumWins; // Increments to MAX_STREAK but never read otherwise
@@ -370,33 +369,33 @@ struct BattleFrontier
/*0xD09*/ u8 domeUnused;
/*0xD0A*/ u8 domeLvlMode;
/*0xD0B*/ u8 domeBattleMode;
- /*0xD0C*/ u16 domeWinStreaks[2][2];
- /*0xD14*/ u16 domeRecordWinStreaks[2][2];
- /*0xD1C*/ u16 domeTotalChampionships[2][2];
+ /*0xD0C*/ u16 domeWinStreaks[2][FRONTIER_LVL_MODE_COUNT];
+ /*0xD14*/ u16 domeRecordWinStreaks[2][FRONTIER_LVL_MODE_COUNT];
+ /*0xD1C*/ u16 domeTotalChampionships[2][FRONTIER_LVL_MODE_COUNT];
/*0xD24*/ struct BattleDomeTrainer domeTrainers[DOME_TOURNAMENT_TRAINERS_COUNT];
/*0xD64*/ u16 domeMonIds[DOME_TOURNAMENT_TRAINERS_COUNT][FRONTIER_PARTY_SIZE];
/*0xDC4*/ u16 unused_DC4;
/*0xDC6*/ u16 palacePrize;
- /*0xDC8*/ u16 palaceWinStreaks[2][2];
- /*0xDD0*/ u16 palaceRecordWinStreaks[2][2];
+ /*0xDC8*/ u16 palaceWinStreaks[2][FRONTIER_LVL_MODE_COUNT];
+ /*0xDD0*/ u16 palaceRecordWinStreaks[2][FRONTIER_LVL_MODE_COUNT];
/*0xDD8*/ u16 arenaPrize;
- /*0xDDA*/ u16 arenaWinStreaks[2];
- /*0xDDE*/ u16 arenaRecordStreaks[2];
- /*0xDE2*/ u16 factoryWinStreaks[2][2];
- /*0xDEA*/ u16 factoryRecordWinStreaks[2][2];
- /*0xDF6*/ u16 factoryRentsCount[2][2];
- /*0xDFA*/ u16 factoryRecordRentsCount[2][2];
+ /*0xDDA*/ u16 arenaWinStreaks[FRONTIER_LVL_MODE_COUNT];
+ /*0xDDE*/ u16 arenaRecordStreaks[FRONTIER_LVL_MODE_COUNT];
+ /*0xDE2*/ u16 factoryWinStreaks[2][FRONTIER_LVL_MODE_COUNT];
+ /*0xDEA*/ u16 factoryRecordWinStreaks[2][FRONTIER_LVL_MODE_COUNT];
+ /*0xDF6*/ u16 factoryRentsCount[2][FRONTIER_LVL_MODE_COUNT];
+ /*0xDFA*/ u16 factoryRecordRentsCount[2][FRONTIER_LVL_MODE_COUNT];
/*0xE02*/ u16 pikePrize;
- /*0xE04*/ u16 pikeWinStreaks[2];
- /*0xE08*/ u16 pikeRecordStreaks[2];
- /*0xE0C*/ u16 pikeTotalStreaks[2];
+ /*0xE04*/ u16 pikeWinStreaks[FRONTIER_LVL_MODE_COUNT];
+ /*0xE08*/ u16 pikeRecordStreaks[FRONTIER_LVL_MODE_COUNT];
+ /*0xE0C*/ u16 pikeTotalStreaks[FRONTIER_LVL_MODE_COUNT];
/*0xE10*/ u8 pikeHintedRoomIndex:3;
/*0xE10*/ u8 pikeHintedRoomType:4;
/*0xE10*/ u8 pikeHealingRoomsDisabled:1;
/*0xE12*/ u16 pikeHeldItemsBackup[FRONTIER_PARTY_SIZE];
/*0xE18*/ u16 pyramidPrize;
- /*0xE1A*/ u16 pyramidWinStreaks[2];
- /*0xE1E*/ u16 pyramidRecordStreaks[2];
+ /*0xE1A*/ u16 pyramidWinStreaks[FRONTIER_LVL_MODE_COUNT];
+ /*0xE1E*/ u16 pyramidRecordStreaks[FRONTIER_LVL_MODE_COUNT];
/*0xE22*/ u16 pyramidRandoms[4];
/*0xE2A*/ u8 pyramidTrainerFlags;
/*0xE2C*/ struct PyramidBag pyramidBag;
@@ -410,8 +409,8 @@ struct BattleFrontier
/*0xEBC*/ u32 battlesCount;
/*0xEC0*/ u16 domeWinningMoves[DOME_TOURNAMENT_TRAINERS_COUNT];
/*0xEE0*/ u8 trainerFlags;
- /*0xEE1*/ u8 opponentNames[2][PLAYER_NAME_LENGTH + 1];
- /*0xEF1*/ u8 opponentTrainerIds[2][TRAINER_ID_LENGTH];
+ /*0xEE1*/ u8 opponentNames[FRONTIER_LVL_MODE_COUNT][PLAYER_NAME_LENGTH + 1];
+ /*0xEF1*/ u8 opponentTrainerIds[FRONTIER_LVL_MODE_COUNT][TRAINER_ID_LENGTH];
/*0xEF9*/ u8 unk_EF9:7; // Never read
/*0xEF9*/ u8 savedGame:1;
/*0xEFA*/ u8 unused_EFA;
@@ -487,8 +486,8 @@ struct SaveBlock2
/*0x1EC*/ struct BerryCrush berryCrush;
/*0x1FC*/ struct PokemonJumpRecords pokeJump;
/*0x20C*/ struct BerryPickingResults berryPick;
- /*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][3]; // From record mixing.
- /*0x57C*/ struct RankingHall2P hallRecords2P[2][3]; // From record mixing.
+ /*0x21C*/ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][FRONTIER_LVL_MODE_COUNT][HALL_RECORDS_COUNT]; // From record mixing.
+ /*0x57C*/ struct RankingHall2P hallRecords2P[FRONTIER_LVL_MODE_COUNT][HALL_RECORDS_COUNT]; // From record mixing.
/*0x624*/ u16 contestLinkResults[CONTEST_CATEGORIES_COUNT][CONTESTANT_COUNT];
/*0x64C*/ struct BattleFrontier frontier;
}; // sizeof=0xF2C
@@ -596,15 +595,6 @@ struct DewfordTrend
u16 words[2];
}; /*size = 0x8*/
-struct MailStruct
-{
- /*0x00*/ u16 words[MAIL_WORDS_COUNT];
- /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
- /*0x1A*/ u8 trainerId[TRAINER_ID_LENGTH];
- /*0x1E*/ u16 species;
- /*0x20*/ u16 itemId;
-};
-
struct MauvilleManCommon
{
u8 id;
@@ -670,20 +660,6 @@ typedef union OldMan
u8 filler[0x40];
} OldMan;
-struct RecordMixing_UnknownStructSub
-{
- u32 unk0;
- u8 data[0x34];
- //u8 data[0x38];
-};
-
-struct RecordMixing_UnknownStruct
-{
- struct RecordMixing_UnknownStructSub data[2];
- u32 unk70;
- u16 unk74[0x2];
-};
-
#define LINK_B_RECORDS_COUNT 5
struct LinkBattleRecord
@@ -726,10 +702,19 @@ struct ContestWinner
u8 contestRank;
};
+struct Mail
+{
+ /*0x00*/ u16 words[MAIL_WORDS_COUNT];
+ /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
+ /*0x1A*/ u8 trainerId[TRAINER_ID_LENGTH];
+ /*0x1E*/ u16 species;
+ /*0x20*/ u16 itemId;
+};
+
struct DaycareMail
{
- struct MailStruct message;
- u8 OT_name[PLAYER_NAME_LENGTH + 1];
+ struct Mail message;
+ u8 otName[PLAYER_NAME_LENGTH + 1];
u8 monName[POKEMON_NAME_LENGTH + 1];
u8 gameLanguage:4;
u8 monLanguage:4;
@@ -749,13 +734,6 @@ struct DayCare
u8 stepCounter;
};
-struct RecordMixingDaycareMail
-{
- struct DaycareMail mail[DAYCARE_MON_COUNT];
- u32 numDaycareMons;
- bool16 holdsItem[DAYCARE_MON_COUNT];
-};
-
struct LilycoveLadyQuiz
{
/*0x000*/ u8 id;
@@ -1002,7 +980,7 @@ struct SaveBlock1
/*0x2BBC*/ u16 easyChatBattleStart[EASY_CHAT_BATTLE_WORDS_COUNT];
/*0x2BC8*/ u16 easyChatBattleWon[EASY_CHAT_BATTLE_WORDS_COUNT];
/*0x2BD4*/ u16 easyChatBattleLost[EASY_CHAT_BATTLE_WORDS_COUNT];
- /*0x2BE0*/ struct MailStruct mail[MAIL_COUNT];
+ /*0x2BE0*/ struct Mail mail[MAIL_COUNT];
/*0x2E20*/ u8 additionalPhrases[8]; // bitfield for 33 additional phrases in easy chat system
/*0x2E28*/ OldMan oldMan;
/*0x2e64*/ struct DewfordTrend dewfordTrends[SAVED_TRENDS_COUNT];
diff --git a/include/graphics.h b/include/graphics.h
index dcb47a226..a58b0f0f1 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3208,12 +3208,12 @@ extern const u16 gBerryFixWindow_Pal[];
extern const u32 gBattleTextboxTiles[];
extern const u32 gBattleTextboxTilemap[];
extern const u32 gBattleTextboxPalette[];
-extern const u32 gUnknown_08D778F0[];
extern const u32 gVsLettersGfx[];
-extern const u32 gUnknown_08D77AE4[];
-extern const u32 gUnknown_08D779D8[];
-extern const u32 gUnknown_08D857A8[];
-extern const u32 gUnknown_08D85A1C[];
+extern const u32 gBattleVSFrame_Gfx[];
+extern const u32 gBattleVSFrame_Pal[];
+extern const u32 gBattleVSFrame_Tilemap[];
+extern const u32 gMultiBattleIntroBg_Opponent_Tilemap[];
+extern const u32 gMultiBattleIntroBg_Player_Tilemap[];
// battle terrains
extern const u32 gBattleTerrainTiles_TallGrass[];
@@ -4032,16 +4032,16 @@ extern const u16 gPokenavRibbonsSummaryBg_Pal[];
extern const u32 gPokenavRibbonsSummaryBg_Gfx[];
extern const u32 gPokenavRibbonsSummaryBg_Tilemap[];
-extern const u32 gPageInfoTilemap[];
-extern const u32 gUnknown_08D98CC8[];
-extern const u32 gPageSkillsTilemap[];
-extern const u32 gPageBattleMovesTilemap[];
-extern const u32 gPageContestMovesTilemap[];
-extern const u32 gStatusScreenPalette[];
-extern const u16 gUnknown_08D85620[];
+extern const u32 gSummaryScreen_Gfx[];
+extern const u32 gSummaryScreen_Pal[];
+extern const u32 gSummaryPage_Info_Tilemap[];
+extern const u32 gSummaryPage_InfoCopy_Tilemap[];
+extern const u32 gSummaryPage_Skills_Tilemap[];
+extern const u32 gSummaryPage_BattleMoves_Tilemap[];
+extern const u32 gSummaryPage_ContestMoves_Tilemap[];
+extern const u16 gPPTextPalette[];
extern const u16 gSummaryScreenWindow_Tilemap[];
extern const u32 gMoveTypes_Pal[];
-extern const u32 gStatusScreenBitmap[];
extern const u16 gSummaryScreenPowAcc_Tilemap[];
extern const u16 gSummaryScreenAppealJam_Tilemap[];
@@ -4081,7 +4081,7 @@ extern const u32 gPokeblockFeedBg_Tilemap[];
extern const u32 gConfetti_Gfx[];
extern const u32 gConfetti_Pal[];
-extern const u32 gUnknown_08C093F0[];
+extern const u32 gBattleInterfaceGfx_BattleBar[];
extern const u32 gSubstituteDollBackGfx[];
extern const u32 gSubstituteDollFrontGfx[];
extern const u32 gSubstituteDollPal[];
@@ -4097,17 +4097,19 @@ extern const u16 gBattleInterface_BallDisplayPal[];
extern const u32 gBagSwapLineGfx[];
extern const u32 gBagSwapLinePal[];
-extern const u32 gBattleFrontierGfx_PyramidBag[];
-extern const u32 gBattleFrontierGfx_PyramidBag_Pal[];
-extern const u32 gBattleFrontierGfx_PyramidBagTileMap[];
-extern const u32 gUnknown_08D9AF44[];
-extern const u16 gUnknown_0860F074[];
+extern const u32 gBattlePyramidBag_Gfx[];
+extern const u32 gBattlePyramidBag_Pal[];
+extern const u32 gBattlePyramidBagTilemap[];
+extern const u32 gBattlePyramidBagInterface_Pal[];
+extern const u16 gBattlePyramidFloor_Pal[][16];
+
+extern const u16 gStandardMenuPalette[];
extern const u32 gTitleScreenEmeraldVersionGfx[];
extern const u32 gTitleScreenPressStartGfx[];
extern const u32 gTitleScreenPokemonLogoGfx[];
-extern const u32 gUnknown_08DE0644[];
-extern const u32 gUnknown_08DDE458[];
+extern const u32 gTitleScreenPokemonLogoTilemap[];
+extern const u32 gTitleScreenCloudsTilemap[];
extern const u16 gTitleScreenBgPalettes[];
extern const u16 gTitleScreenPressStartPal[];
extern const u16 gTitleScreenEmeraldVersionPal[];
@@ -4731,7 +4733,7 @@ extern const u32 gBattleAnimBgPalette_Sky[];
extern const u32 gBattleAnimBgPalette_Aurora[];
extern const u32 gBattleAnimBgPalette_Fissure[];
extern const u32 gBattleAnimBgPalette_Bug[];
-extern const u32 gBattleAnimBgPalette_Solarbeam[];
+extern const u32 gBattleAnimBgPalette_SolarBeam[];
extern const u32 gBattleAnimBgTilemap_Dark[];
extern const u32 gBattleAnimBgTilemap_Ghost[];
extern const u32 gBattleAnimBgTilemap_Psychic[];
@@ -4773,15 +4775,15 @@ extern const u32 gBattleStatMask6_Pal[];
extern const u32 gBattleStatMask7_Pal[];
extern const u32 gBattleStatMask8_Pal[];
-extern const u32 gContestMiscGfx[];
+extern const u32 gContestInterfaceGfx[];
extern const u32 gContestAudienceGfx[];
extern const u8 gContestApplauseMeterGfx[];
extern const u8 gContestNextTurnNumbersGfx[];
extern const u8 gContestNextTurnRandomGfx[];
-extern const u32 gOldContestGfx[];
-extern const u32 gOldContestPalette[];
-extern const u32 gUnknown_08C17170[];
-extern const u32 gUnknown_08C17980[];
+extern const u32 gContestAudienceTilemap[];
+extern const u32 gContestInterfaceAudiencePalette[];
+extern const u32 gContestInterfaceTilemap[];
+extern const u32 gContestCurtainTilemap[];
extern const u32 gContestSliderHeart_Gfx[];
extern const u32 gContestNextTurnGfx[];
extern const u16 gContestPal[];
@@ -4789,7 +4791,7 @@ extern const u32 gContestFaces_Gfx[];
extern const u32 gContestApplauseGfx[];
extern const u32 gContestJudgeGfx[];
extern const u32 gContestJudgeSymbolsGfx[];
-extern const u32 gContest3Pal[];
+extern const u32 gContestJudgeSymbolsPal[];
extern const u32 gBattleAnimBgTilemap_SurfOpponent[];
extern const u32 gBattleAnimBgTilemap_SurfPlayer[];
@@ -4899,7 +4901,7 @@ extern const u16 gCableCar_Pal[];
// Trade
extern const u16 gTradeMenu_Pal[];
extern const u8 gTradeMenu_Gfx[];
-extern const u16 gUnknown_08DDCF04[];
+extern const u16 gTradeMenu_Tilemap[];
extern const u16 gTradeGba2_Pal[];
extern const u8 gTradeGba_Gfx[];
extern const u16 gTradeMenuMonBox_Tilemap[];
diff --git a/include/link.h b/include/link.h
index 4e0491356..6061745af 100644
--- a/include/link.h
+++ b/include/link.h
@@ -124,8 +124,9 @@ struct LinkStatus
u32 errors:7;
};
-#define MASTER_HANDSHAKE 0x8FFF
-#define SLAVE_HANDSHAKE 0xB9A0
+#define MASTER_HANDSHAKE 0x8FFF
+#define SLAVE_HANDSHAKE 0xB9A0
+#define EREADER_HANDSHAKE 0xCCD0
#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT)
@@ -208,7 +209,7 @@ struct Link
/* 0x001 */ u8 state;
/* 0x002 */ u8 localId; // local multi-player ID
/* 0x003 */ u8 playerCount;
- /* 0x004 */ u16 tempRecvBuffer[4];
+ /* 0x004 */ u16 handshakeBuffer[MAX_LINK_PLAYERS];
/* 0x00c */ bool8 receivedNothing;
/* 0x00d */ s8 serialIntrCounter;
/* 0x00e */ bool8 handshakeAsMaster;
diff --git a/include/mail.h b/include/mail.h
index 042586653..8236811cb 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -15,16 +15,16 @@
|| itemId == ITEM_RETRO_MAIL))
// mail.h
-void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag);
+void ReadMail(struct Mail *mail, void (*callback)(void), bool8 flag);
// mail_data.h
-void ClearMailData(void);
-void ClearMailStruct(struct MailStruct *mail);
+void ClearAllMail(void);
+void ClearMail(struct Mail *mail);
bool8 MonHasMail(struct Pokemon *mon);
-u8 GiveMailToMon(struct Pokemon *mon, u16 itemId);
+u8 GiveMailToMonByItemId(struct Pokemon *mon, u16 itemId);
u16 SpeciesToMailSpecies(u16 species, u32 personality);
u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer);
-u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
+u8 GiveMailToMon(struct Pokemon *mon, struct Mail *mail);
void TakeMailFromMon(struct Pokemon *mon);
void ClearMailItemId(u8 mailId);
u8 TakeMailFromMon2(struct Pokemon *mon);
diff --git a/include/main.h b/include/main.h
index 79d56d31f..5ccb20df8 100644
--- a/include/main.h
+++ b/include/main.h
@@ -72,6 +72,5 @@ void RestoreSerialTimer3IntrHandlers(void);
void StartTimer1(void);
void SeedRngAndSetTrainerId(void);
u16 GetGeneratedTrainerIdLower(void);
-void sub_819789C(void);
#endif // GUARD_MAIN_H
diff --git a/include/menu.h b/include/menu.h
index 07e00eb73..eb391e565 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -41,7 +41,7 @@ struct MenuAction
} func;
};
-extern const u16 gUnknown_0860F074[];
+extern const u16 gStandardMenuPalette[];
void FreeAllOverworldWindowBuffers(void);
void InitStandardTextBoxWindows(void);
@@ -125,5 +125,6 @@ void ResetBgPositions(void);
void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
void sub_8198C78(void);
void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+void Menu_LoadStdPal(void);
#endif // GUARD_MENU_H
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 4cd231e8a..fec4952b8 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -3,8 +3,8 @@
struct PlayerHallRecords
{
- struct RankingHall1P onePlayer[9][2];
- struct RankingHall2P twoPlayers[2];
+ struct RankingHall1P onePlayer[HALL_FACILITIES_COUNT][FRONTIER_LVL_MODE_COUNT];
+ struct RankingHall2P twoPlayers[FRONTIER_LVL_MODE_COUNT];
};
void RecordMixingPlayerSpotTriggered(void);
diff --git a/include/trade.h b/include/trade.h
index 05a905ab3..a0cb320a8 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -4,13 +4,9 @@
#include "link_rfu.h"
#include "constants/trade.h"
-// Exported type declarations
-
-// Exported RAM declarations
-extern struct MailStruct gTradeMail[PARTY_SIZE];
+extern struct Mail gTradeMail[PARTY_SIZE];
extern u8 gSelectedTradeMonPositions[2];
-// Exported ROM declarations
extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate;
s32 GetGameProgressForLinkTrade(void);
diff --git a/ld_script.txt b/ld_script.txt
index 93babfa16..3c1a25094 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -1250,7 +1250,7 @@ SECTIONS {
other_data :
ALIGN(4)
{
- data/unknown_serial_data.o(.rodata);
+ data/ereader_link_data.o(.rodata);
data/multiboot_berry_glitch_fix.o(.rodata);
data/multiboot_pokemon_colosseum.o(.rodata);
} =0
diff --git a/ld_script_modern.txt b/ld_script_modern.txt
index 59d032bb2..c5c711bfd 100644
--- a/ld_script_modern.txt
+++ b/ld_script_modern.txt
@@ -114,7 +114,7 @@ SECTIONS {
other_data :
ALIGN(4)
{
- data/unknown_serial_data.o(.rodata);
+ data/ereader_link_data.o(.rodata);
data/multiboot_berry_glitch_fix.o(.rodata);
data/multiboot_pokemon_colosseum.o(.rodata);
} =0
diff --git a/src/apprentice.c b/src/apprentice.c
index f881c3bef..5d1c4287b 100644
--- a/src/apprentice.c
+++ b/src/apprentice.c
@@ -911,7 +911,7 @@ static void Script_PrintApprenticeMessage(void)
ScriptContext2_Enable();
FreezeObjectEvents();
PlayerFreeze();
- sub_808BCF4();
+ StopPlayerAvatar();
DrawDialogueFrame(0, 1);
PrintApprenticeMessage();
}
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 6fdfb0d7a..e9f55bd8b 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -274,7 +274,7 @@ static const u16 sIgnoredPowerfulMoveEffects[] =
EFFECT_SKY_ATTACK,
EFFECT_RECHARGE,
EFFECT_SKULL_BASH,
- EFFECT_SOLARBEAM,
+ EFFECT_SOLAR_BEAM,
EFFECT_SPIT_UP,
EFFECT_FOCUS_PUNCH,
EFFECT_SUPERPOWER,
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index ebdb471bf..f54ebfbf7 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -26,9 +26,9 @@ struct {
static void AnimMovePowderParticle(struct Sprite *);
static void AnimMovePowderParticle_Step(struct Sprite *);
static void AnimPowerAbsorptionOrb(struct Sprite *);
-static void AnimSolarbeamBigOrb(struct Sprite *);
-static void AnimSolarbeamSmallOrb(struct Sprite *);
-static void AnimSolarbeamSmallOrb_Step(struct Sprite *);
+static void AnimSolarBeamBigOrb(struct Sprite *);
+static void AnimSolarBeamSmallOrb(struct Sprite *);
+static void AnimSolarBeamSmallOrb_Step(struct Sprite *);
static void AnimAbsorptionOrb(struct Sprite *);
static void AnimAbsorptionOrb_Step(struct Sprite *);
static void AnimHyperBeamOrb(struct Sprite *);
@@ -208,49 +208,49 @@ const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate =
.callback = AnimMovePowderParticle,
};
-const union AnimCmd gSolarbeamBigOrbAnimCmds1[] =
+const union AnimCmd gSolarBeamBigOrbAnimCmds1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gSolarbeamBigOrbAnimCmds2[] =
+const union AnimCmd gSolarBeamBigOrbAnimCmds2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gSolarbeamBigOrbAnimCmds3[] =
+const union AnimCmd gSolarBeamBigOrbAnimCmds3[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_END,
};
-const union AnimCmd gSolarbeamBigOrbAnimCmds4[] =
+const union AnimCmd gSolarBeamBigOrbAnimCmds4[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END,
};
-const union AnimCmd gSolarbeamBigOrbAnimCmds5[] =
+const union AnimCmd gSolarBeamBigOrbAnimCmds5[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END,
};
-const union AnimCmd gSolarbeamBigOrbAnimCmds6[] =
+const union AnimCmd gSolarBeamBigOrbAnimCmds6[] =
{
ANIMCMD_FRAME(5, 1),
ANIMCMD_END,
};
-const union AnimCmd gSolarbeamBigOrbAnimCmds7[] =
+const union AnimCmd gSolarBeamBigOrbAnimCmds7[] =
{
ANIMCMD_FRAME(6, 1),
ANIMCMD_END,
};
-const union AnimCmd gSolarbeamSmallOrbAnimCms[] =
+const union AnimCmd gSolarBeamSmallOrbAnimCms[] =
{
ANIMCMD_FRAME(7, 1),
ANIMCMD_END,
@@ -262,20 +262,20 @@ const union AnimCmd gPowerAbsorptionOrbAnimCmds[] =
ANIMCMD_END,
};
-const union AnimCmd *const gSolarbeamBigOrbAnimTable[] =
+const union AnimCmd *const gSolarBeamBigOrbAnimTable[] =
{
- gSolarbeamBigOrbAnimCmds1,
- gSolarbeamBigOrbAnimCmds2,
- gSolarbeamBigOrbAnimCmds3,
- gSolarbeamBigOrbAnimCmds4,
- gSolarbeamBigOrbAnimCmds5,
- gSolarbeamBigOrbAnimCmds6,
- gSolarbeamBigOrbAnimCmds7,
+ gSolarBeamBigOrbAnimCmds1,
+ gSolarBeamBigOrbAnimCmds2,
+ gSolarBeamBigOrbAnimCmds3,
+ gSolarBeamBigOrbAnimCmds4,
+ gSolarBeamBigOrbAnimCmds5,
+ gSolarBeamBigOrbAnimCmds6,
+ gSolarBeamBigOrbAnimCmds7,
};
-const union AnimCmd *const gSolarbeamSmallOrbAnimTable[] =
+const union AnimCmd *const gSolarBeamSmallOrbAnimTable[] =
{
- gSolarbeamSmallOrbAnimCms,
+ gSolarBeamSmallOrbAnimCms,
};
const union AnimCmd *const gPowerAbsorptionOrbAnimTable[] =
@@ -303,26 +303,26 @@ const struct SpriteTemplate gPowerAbsorptionOrbSpriteTemplate =
.callback = AnimPowerAbsorptionOrb,
};
-const struct SpriteTemplate gSolarbeamBigOrbSpriteTemplate =
+const struct SpriteTemplate gSolarBeamBigOrbSpriteTemplate =
{
.tileTag = ANIM_TAG_ORBS,
.paletteTag = ANIM_TAG_ORBS,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gSolarbeamBigOrbAnimTable,
+ .anims = gSolarBeamBigOrbAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimSolarbeamBigOrb,
+ .callback = AnimSolarBeamBigOrb,
};
-const struct SpriteTemplate gSolarbeamSmallOrbSpriteTemplate =
+const struct SpriteTemplate gSolarBeamSmallOrbSpriteTemplate =
{
.tileTag = ANIM_TAG_ORBS,
.paletteTag = ANIM_TAG_ORBS,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gSolarbeamSmallOrbAnimTable,
+ .anims = gSolarBeamSmallOrbAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = AnimSolarbeamSmallOrb,
+ .callback = AnimSolarBeamSmallOrb,
};
const union AffineAnimCmd gStockpileAbsorptionOrbAffineCmds[] = {
@@ -371,7 +371,7 @@ const struct SpriteTemplate gHyperBeamOrbSpriteTemplate =
.tileTag = ANIM_TAG_ORBS,
.paletteTag = ANIM_TAG_ORBS,
.oam = &gOamData_AffineOff_ObjNormal_8x8,
- .anims = gSolarbeamBigOrbAnimTable,
+ .anims = gSolarBeamBigOrbAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimHyperBeamOrb,
@@ -2252,7 +2252,7 @@ static void AnimPowerAbsorptionOrb(struct Sprite* sprite)
// arg 1: initial y pixel offset
// arg 2: duration
// arg 3: sprite anim number
-static void AnimSolarbeamBigOrb(struct Sprite* sprite)
+static void AnimSolarBeamBigOrb(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
@@ -2264,12 +2264,12 @@ static void AnimSolarbeamBigOrb(struct Sprite* sprite)
}
// Moves a small orb in a wavy pattern towards the target mon.
-// The small orb "circles" the big orbs in AnimSolarbeamBigOrb.
+// The small orb "circles" the big orbs in AnimSolarBeamBigOrb.
// arg 0: initial x pixel offset
// arg 1: initial y pixel offset
// arg 2: duration
// arg 3: initial wave offset
-static void AnimSolarbeamSmallOrb(struct Sprite* sprite)
+static void AnimSolarBeamSmallOrb(struct Sprite* sprite)
{
InitSpritePosToAnimAttacker(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[2];
@@ -2279,11 +2279,11 @@ static void AnimSolarbeamSmallOrb(struct Sprite* sprite)
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET);
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[3];
- sprite->callback = AnimSolarbeamSmallOrb_Step;
+ sprite->callback = AnimSolarBeamSmallOrb_Step;
sprite->callback(sprite);
}
-static void AnimSolarbeamSmallOrb_Step(struct Sprite* sprite)
+static void AnimSolarBeamSmallOrb_Step(struct Sprite* sprite)
{
if (AnimTranslateLinear(sprite))
{
@@ -2302,10 +2302,10 @@ static void AnimSolarbeamSmallOrb_Step(struct Sprite* sprite)
}
}
-// Creates 15 small secondary orbs used in the solarbeam anim effect.
+// Creates 15 small secondary orbs used in the SolarBeam anim effect.
// There is a 7-frame delay between each of them.
// No args.
-void AnimTask_CreateSmallSolarbeamOrbs(u8 taskId)
+void AnimTask_CreateSmallSolarBeamOrbs(u8 taskId)
{
if (--gTasks[taskId].data[0] == -1)
{
@@ -2315,7 +2315,7 @@ void AnimTask_CreateSmallSolarbeamOrbs(u8 taskId)
gBattleAnimArgs[1] = 0;
gBattleAnimArgs[2] = 80;
gBattleAnimArgs[3] = 0;
- CreateSpriteAndAnimate(&gSolarbeamSmallOrbSpriteTemplate, 0, 0, GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1);
+ CreateSpriteAndAnimate(&gSolarBeamSmallOrbSpriteTemplate, 0, 0, GetBattlerSpriteSubpriority(gBattleAnimTarget) + 1);
}
if (gTasks[taskId].data[1] == 15)
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 267b6db9c..85dee5287 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -718,7 +718,7 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate =
.callback = AnimSweetScentPetal,
};
-static const u16 sUnusedPalette[] = INCBIN_U16("graphics/battle_anims/unused.gbapal");
+static const u16 sUnusedPalette[] = INCBIN_U16("graphics/battle_anims/unused/unknown.gbapal");
const union AnimCmd gPainSplitAnimCmds[] =
{
diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c
index 1c2d08d6a..50918a24e 100644
--- a/src/battle_anim_water.c
+++ b/src/battle_anim_water.c
@@ -54,8 +54,8 @@ static void AnimTask_WaterSport_Step(u8);
static void CreateWaterSportDroplet(struct Task*);
static void CreateWaterPulseRingBubbles(struct Sprite*, int, int);
-static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unused_water_gfx.4bpp");
-static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unused_water.bin");
+static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unused/water_gfx.4bpp");
+static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unused/water.bin");
static const union AnimCmd sAnim_RainDrop[] =
{
diff --git a/src/battle_bg.c b/src/battle_bg.c
index cbd293294..0e4370485 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -1124,13 +1124,13 @@ void DrawBattleEntryBackground(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- LZDecompressVram(gUnknown_08D778F0, (void*)(BG_CHAR_ADDR(1)));
+ LZDecompressVram(gBattleVSFrame_Gfx, (void*)(BG_CHAR_ADDR(1)));
LZDecompressVram(gVsLettersGfx, (void*)OBJ_VRAM0);
- LoadCompressedPalette(gUnknown_08D77AE4, 0x60, 0x20);
+ LoadCompressedPalette(gBattleVSFrame_Pal, 0x60, 0x20);
SetBgAttribute(1, BG_ATTR_SCREENSIZE, 1);
SetGpuReg(REG_OFFSET_BG1CNT, 0x5C04);
- CopyToBgTilemapBuffer(1, gUnknown_08D779D8, 0, 0);
- CopyToBgTilemapBuffer(2, gUnknown_08D779D8, 0, 0);
+ CopyToBgTilemapBuffer(1, gBattleVSFrame_Tilemap, 0, 0);
+ CopyToBgTilemapBuffer(2, gBattleVSFrame_Tilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
@@ -1148,10 +1148,12 @@ void DrawBattleEntryBackground(void)
}
else
{
+ // Set up bg for the multi battle intro where both teams slide in facing the screen.
+ // Note Steven's multi battle (which has a dedicated back pic) is excluded above.
SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 2);
SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 2);
- CopyToBgTilemapBuffer(1, gUnknown_08D857A8, 0, 0);
- CopyToBgTilemapBuffer(2, gUnknown_08D85A1C, 0, 0);
+ CopyToBgTilemapBuffer(1, gMultiBattleIntroBg_Opponent_Tilemap, 0, 0);
+ CopyToBgTilemapBuffer(2, gMultiBattleIntroBg_Player_Tilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index ac8babb60..f4e47b434 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -1500,7 +1500,7 @@ static void MoveSelectionDisplayMoveType(void)
txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType);
*(txtPtr)++ = EXT_CTRL_CODE_BEGIN;
- *(txtPtr)++ = EXT_CTRL_CODE_SIZE;
+ *(txtPtr)++ = EXT_CTRL_CODE_FONT;
*(txtPtr)++ = 1;
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index c01c76b7c..f36524f37 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -785,7 +785,7 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
void LoadBattleBarGfx(u8 arg0)
{
- LZDecompressWram(gUnknown_08C093F0, gMonSpritesGfxPtr->barFontGfx);
+ LZDecompressWram(gBattleInterfaceGfx_BattleBar, gMonSpritesGfxPtr->barFontGfx);
}
bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 77308cb3c..08da2da5f 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -617,7 +617,7 @@ static const struct SubspriteTable sUnknown_0832C2CC[] =
};
// unused unknown image
-static const u8 sUnknown_0832C2D4[] = INCBIN_U8("graphics/battle_interface/unknown_32C2D4.4bpp");
+static const u8 sUnusedStatusSummary[] = INCBIN_U8("graphics/battle_interface/unused_status_summary.4bpp");
static const struct CompressedSpriteSheet sStatusSummaryBarSpriteSheet =
{
@@ -640,7 +640,7 @@ static const struct SpriteSheet sStatusSummaryBallsSpriteSheet =
};
// unused oam data
-static const struct OamData sUnknown_0832C354 =
+static const struct OamData sOamData_Unused64x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
diff --git a/src/battle_message.c b/src/battle_message.c
index b69a171a1..91142dd55 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -8,6 +8,7 @@
#include "data.h"
#include "event_data.h"
#include "frontier_util.h"
+#include "graphics.h"
#include "international_string_util.h"
#include "item.h"
#include "link.h"
@@ -42,18 +43,13 @@ struct BattleWindowText
u8 shadowColor;
};
-extern const u16 gUnknown_08D85620[];
-
-// this file's functions
static void ChooseMoveUsedParticle(u8 *textPtr);
static void ChooseTypeOfMoveUsedString(u8 *dst);
static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst);
-// EWRAM vars
static EWRAM_DATA u8 sBattlerAbilities[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA struct BattleMsgData *gBattleMsgDataPtr = NULL;
-// const rom data
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
static const u8 sText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}");
@@ -2058,7 +2054,6 @@ static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] =
static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
-// code
void BufferStringBattle(u16 stringID)
{
s32 i;
@@ -3125,7 +3120,7 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
void SetPpNumbersPaletteInMoveSelection(void)
{
struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
- const u16 *palPtr = gUnknown_08D85620;
+ const u16 *palPtr = gPPTextPalette;
u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBattler]],
chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBattler]]);
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index e334e75d5..48155c833 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -26,6 +26,7 @@
#include "malloc.h"
#include "overworld.h"
#include "event_scripts.h"
+#include "graphics.h"
#include "constants/battle_frontier.h"
#include "constants/battle_pyramid.h"
#include "constants/event_objects.h"
@@ -39,9 +40,6 @@
#include "constants/trainers.h"
extern const struct MapLayout *const gMapLayouts[];
-extern const u16 gUnknown_08D856C8[][16];
-
-
struct PyramidWildMon
{
@@ -1188,7 +1186,7 @@ static void Task_SetPyramidFloorPalette(u8 taskId)
{
if (gPaletteFade.active)
{
- CpuCopy16(gUnknown_08D856C8[gSaveBlock2Ptr->frontier.curChallengeBattleNum], &gPlttBufferUnfaded[96], 32);
+ CpuCopy16(gBattlePyramidFloor_Pal[gSaveBlock2Ptr->frontier.curChallengeBattleNum], &gPlttBufferUnfaded[96], 32);
DestroyTask(taskId);
}
}
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 179f4dc65..d45770f74 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -358,7 +358,7 @@ static const union AffineAnimCmd * const sAffineAnims_PyramidBag[] =
[ANIM_BAG_SHAKE] = sAffineAnim_PyramidBag_Shake,
};
-static const struct CompressedSpriteSheet sSpriteSheet_PyramidBag = {gBattleFrontierGfx_PyramidBag, 0x0800, TAG_PYRAMID_BAG};
+static const struct CompressedSpriteSheet sSpriteSheet_PyramidBag = {gBattlePyramidBag_Gfx, 0x0800, TAG_PYRAMID_BAG};
static const struct SpriteTemplate sSpriteTemplate_PyramidBag =
{
@@ -573,12 +573,12 @@ static bool8 LoadPyramidBagGfx(void)
case 1:
if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
- LZDecompressWram(gBattleFrontierGfx_PyramidBagTileMap, gPyramidBagMenu->tilemapBuffer);
+ LZDecompressWram(gBattlePyramidBagTilemap, gPyramidBagMenu->tilemapBuffer);
gPyramidBagMenu->state++;
}
break;
case 2:
- LoadCompressedPalette(gUnknown_08D9AF44, 0, 32);
+ LoadCompressedPalette(gBattlePyramidBagInterface_Pal, 0, 32);
gPyramidBagMenu->state++;
break;
case 3:
@@ -1443,7 +1443,7 @@ static void InitPyramidBagWindows(void)
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 0x1, 0xE0);
LoadMessageBoxGfx(0, 0xA, 0xD0);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
for (i = 0; i < ARRAY_COUNT(sWindowTemplates); i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
@@ -1541,7 +1541,7 @@ static void LoadPyramidBagPalette(void)
struct SpritePalette spritePalette;
u16 *palPtr = Alloc(0x40);
- LZDecompressWram(gBattleFrontierGfx_PyramidBag_Pal, palPtr);
+ LZDecompressWram(gBattlePyramidBag_Pal, palPtr);
spritePalette.data = palPtr + (gSaveBlock2Ptr->frontier.lvlMode * 16);
spritePalette.tag = TAG_PYRAMID_BAG;
LoadSpritePalette(&spritePalette);
diff --git a/src/battle_records.c b/src/battle_records.c
index 5dff8e6d3..b2e379093 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -24,21 +24,18 @@
#include "trainer_hill.h"
#include "constants/rgb.h"
-// this file's functions
static void Task_CloseTrainerHillRecordsOnButton(u8 taskId);
static void Task_BeginPaletteFade(u8 taskId);
static void Task_ExitTrainerHillRecords(u8 taskId);
static void RemoveTrainerHillRecordsWindow(u8 windowId);
static void CB2_ShowTrainerHillRecords(void);
-// EWRAM variables
EWRAM_DATA u8 gRecordsWindowId = 0;
EWRAM_DATA static u8 *sTilemapBuffer = NULL;
-// const rom data
-static const u32 sTrainerHillWindowTileset[] = INCBIN_U32("graphics/unknown/unknown_5B3484.4bpp");
-static const u16 sTrainerHillWindowPalette[] = INCBIN_U16("graphics/unknown/unknown_5B3484.gbapal");
-static const u32 sTrainerHillWindowTilemap[] = INCBIN_U32("graphics/unknown/unknown_5B3564.bin");
+static const u32 sTrainerHillWindowTileset[] = INCBIN_U32("graphics/trainer_hill/records_window.4bpp");
+static const u16 sTrainerHillWindowPalette[] = INCBIN_U16("graphics/trainer_hill/records_window.gbapal");
+static const u32 sTrainerHillWindowTilemap[] = INCBIN_U32("graphics/trainer_hill/records_window.bin");
static const struct BgTemplate sTrainerHillRecordsBgTemplates[] =
{
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 92d4b9707..2bc1cfedb 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -8098,7 +8098,7 @@ static bool8 IsTwoTurnsMove(u16 move)
if (gBattleMoves[move].effect == EFFECT_SKULL_BASH
|| gBattleMoves[move].effect == EFFECT_RAZOR_WIND
|| gBattleMoves[move].effect == EFFECT_SKY_ATTACK
- || gBattleMoves[move].effect == EFFECT_SOLARBEAM
+ || gBattleMoves[move].effect == EFFECT_SOLAR_BEAM
|| gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE
|| gBattleMoves[move].effect == EFFECT_BIDE)
return TRUE;
@@ -8118,14 +8118,14 @@ static bool8 IsInvalidForSleepTalkOrAssist(u16 move)
static u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
{
// first argument is unused
- if (gBattleMoves[move].effect == EFFECT_SOLARBEAM
+ if (gBattleMoves[move].effect == EFFECT_SOLAR_BEAM
&& (gBattleWeather & B_WEATHER_SUN))
return 2;
if (gBattleMoves[move].effect == EFFECT_SKULL_BASH
|| gBattleMoves[move].effect == EFFECT_RAZOR_WIND
|| gBattleMoves[move].effect == EFFECT_SKY_ATTACK
- || gBattleMoves[move].effect == EFFECT_SOLARBEAM
+ || gBattleMoves[move].effect == EFFECT_SOLAR_BEAM
|| gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE
|| gBattleMoves[move].effect == EFFECT_BIDE)
{
diff --git a/src/battle_setup.c b/src/battle_setup.c
index b9833d20a..a1b01f9c1 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -402,7 +402,7 @@ static void DoStandardWildBattle(void)
{
ScriptContext2_Enable();
FreezeObjectEvents();
- sub_808BCF4();
+ StopPlayerAvatar();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = 0;
if (InBattlePyramid())
@@ -421,7 +421,7 @@ void BattleSetup_StartRoamerBattle(void)
{
ScriptContext2_Enable();
FreezeObjectEvents();
- sub_808BCF4();
+ StopPlayerAvatar();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = BATTLE_TYPE_ROAMER;
CreateBattleStartTask(GetWildBattleTransition(), 0);
@@ -435,7 +435,7 @@ static void DoSafariBattle(void)
{
ScriptContext2_Enable();
FreezeObjectEvents();
- sub_808BCF4();
+ StopPlayerAvatar();
gMain.savedCallback = CB2_EndSafariBattle;
gBattleTypeFlags = BATTLE_TYPE_SAFARI;
CreateBattleStartTask(GetWildBattleTransition(), 0);
@@ -445,7 +445,7 @@ static void DoBattlePikeWildBattle(void)
{
ScriptContext2_Enable();
FreezeObjectEvents();
- sub_808BCF4();
+ StopPlayerAvatar();
gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = BATTLE_TYPE_PIKE;
CreateBattleStartTask(GetWildBattleTransition(), 0);
diff --git a/src/battle_tower.c b/src/battle_tower.c
index e3712def2..b2f81cc1a 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1830,7 +1830,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId)
{
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; // Unused variable.
u8 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
- u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][0] / 7;
+ u8 challengeNum = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][FRONTIER_LVL_50] / 7;
if (gSaveBlock2Ptr->frontier.curChallengeBattleNum < 6)
fixedIV = GetFactoryMonFixedIV(challengeNum, 0);
else
diff --git a/src/battle_tv.c b/src/battle_tv.c
index c78f1bff4..f65bf73ea 100644
--- a/src/battle_tv.c
+++ b/src/battle_tv.c
@@ -237,7 +237,7 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
[EFFECT_FUTURE_SIGHT] = 1,
[EFFECT_GUST] = 1,
[EFFECT_FLINCH_MINIMIZE_HIT] = 1,
- [EFFECT_SOLARBEAM] = 1,
+ [EFFECT_SOLAR_BEAM] = 1,
[EFFECT_THUNDER] = 1,
[EFFECT_TELEPORT] = 1,
[EFFECT_BEAT_UP] = 2,
diff --git a/src/bike.c b/src/bike.c
index 39433522e..fd794a3c7 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -71,12 +71,12 @@ static void (*const sMachBikeTransitions[])(u8) =
MachBikeTransition_TrySlowDown,
};
-// bikeFrameCounter is input which is represented by sMachBikeSpeeds in order: 0 is normal speed (1 speed), 1 is fast speed (2 speed), 2 is fastest speed (4 speed)
+// bikeFrameCounter is input which is represented by sMachBikeSpeeds in order
static void (*const sMachBikeSpeedCallbacks[])(u8) =
{
- PlayerGoSpeed1, // normal speed (1 speed)
- PlayerGoSpeed2, // fast speed (2 speed)
- PlayerGoSpeed4, // fastest speed (4 speed)
+ PlayerWalkNormal,
+ PlayerWalkFast,
+ PlayerWalkFaster,
};
static void (*const sAcroBikeTransitions[])(u8) =
@@ -108,7 +108,7 @@ static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) =
};
// used with bikeFrameCounter from mach bike
-static const u16 sMachBikeSpeeds[] = {SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST};
+static const u16 sMachBikeSpeeds[] = {BIKE_SPEED_NORMAL, BIKE_SPEED_FAST, BIKE_SPEED_FASTEST};
// this is a list of timers to compare against later, terminated with 0. the only timer being compared against is 4 frames in this list.
static const u8 sAcroBikeJumpTimerList[] = {4, 0};
@@ -147,7 +147,7 @@ static u8 GetMachBikeTransition(u8 *dirTraveling)
if (*dirTraveling == 0)
{
*dirTraveling = direction; // update the direction, since below we either faced a direction or we started moving.
- if (gPlayerAvatar.bikeSpeed == SPEED_STANDING)
+ if (gPlayerAvatar.bikeSpeed == BIKE_SPEED_STANDING)
{
gPlayerAvatar.runningState = NOT_MOVING;
return MACH_TRANS_FACE_DIRECTION;
@@ -159,7 +159,7 @@ static u8 GetMachBikeTransition(u8 *dirTraveling)
// we need to check if the last traveled direction changed from the new direction as well as ensuring that we dont update the state while the player is moving: see the else check.
if (*dirTraveling != direction && gPlayerAvatar.runningState != MOVING)
{
- if (gPlayerAvatar.bikeSpeed != SPEED_STANDING)
+ if (gPlayerAvatar.bikeSpeed != BIKE_SPEED_STANDING)
{
*dirTraveling = direction; // implement the new direction
gPlayerAvatar.runningState = MOVING;
@@ -246,7 +246,7 @@ static void MachBikeTransition_TrySlowDown(u8 direction)
{
u8 collision;
- if (gPlayerAvatar.bikeSpeed != SPEED_STANDING)
+ if (gPlayerAvatar.bikeSpeed != BIKE_SPEED_STANDING)
gPlayerAvatar.bikeFrameCounter = --gPlayerAvatar.bikeSpeed;
collision = GetBikeCollision(direction);
@@ -306,7 +306,7 @@ static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys)
return ACRO_TRANS_FACE_DIRECTION;
}
}
- if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.bikeSpeed == SPEED_STANDING)
+ if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.bikeSpeed == BIKE_SPEED_STANDING)
{
gPlayerAvatar.bikeSpeed++;
gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING;
@@ -342,7 +342,7 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys
if (*newDirection == AcroBike_GetJumpDirection())
{
Bike_SetBikeStill(); // Bike_SetBikeStill sets speed to standing, but the next line immediately overrides it. could have just reset acroBikeState to 0 here instead of wasting a jump.
- gPlayerAvatar.bikeSpeed = SPEED_NORMAL;
+ gPlayerAvatar.bikeSpeed = BIKE_SPEED_NORMAL;
if (*newDirection == GetOppositeDirection(direction))
{
// do a turn jump.
@@ -775,7 +775,7 @@ static void AcroBike_TryHistoryUpdate(u16 newKeys, u16 heldKeys) // newKeys is u
else
{
Bike_UpdateDirTimerHistory(direction);
- gPlayerAvatar.bikeSpeed = SPEED_STANDING;
+ gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING;
}
direction = heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON); // directions is reused for some reason.
@@ -787,7 +787,7 @@ static void AcroBike_TryHistoryUpdate(u16 newKeys, u16 heldKeys) // newKeys is u
else
{
Bike_UpdateABStartSelectHistory(direction);
- gPlayerAvatar.bikeSpeed = SPEED_STANDING;
+ gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING;
}
}
@@ -994,7 +994,7 @@ void BikeClearState(int newDirHistory, int newAbStartHistory)
gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
gPlayerAvatar.newDirBackup = DIR_NONE;
gPlayerAvatar.bikeFrameCounter = 0;
- gPlayerAvatar.bikeSpeed = SPEED_STANDING;
+ gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING;
gPlayerAvatar.directionHistory = newDirHistory;
gPlayerAvatar.abStartSelectHistory = newAbStartHistory;
@@ -1014,7 +1014,7 @@ void Bike_UpdateBikeCounterSpeed(u8 counter)
static void Bike_SetBikeStill(void)
{
gPlayerAvatar.bikeFrameCounter = 0;
- gPlayerAvatar.bikeSpeed = SPEED_STANDING;
+ gPlayerAvatar.bikeSpeed = BIKE_SPEED_STANDING;
}
s16 GetPlayerSpeed(void)
@@ -1027,11 +1027,11 @@ s16 GetPlayerSpeed(void)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
return machSpeeds[gPlayerAvatar.bikeFrameCounter];
else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
- return SPEED_FASTER;
+ return BIKE_SPEED_FASTER;
else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH))
- return SPEED_FAST;
+ return BIKE_SPEED_FAST;
else
- return SPEED_NORMAL;
+ return BIKE_SPEED_NORMAL;
}
void Bike_HandleBumpySlopeJump(void)
diff --git a/src/cable_car.c b/src/cable_car.c
index 39154cd1d..c3e6564f8 100644
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -17,6 +17,7 @@
#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "constants/event_object_movement.h"
#include "constants/event_objects.h"
#include "constants/rgb.h"
#include "constants/songs.h"
@@ -902,15 +903,13 @@ static void CreateCableCarSprites(void)
{
if (rval % 2)
{
- // Do walking west anim
- StartSpriteAnim(&gSprites[spriteId], 6);
+ StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_WEST);
gSprites[spriteId].sSameDir = TRUE;
gSprites[spriteId].y += 2;
}
else
{
- // Do walking east anim
- StartSpriteAnim(&gSprites[spriteId], 7);
+ StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_EAST);
gSprites[spriteId].sSameDir = FALSE;
}
}
@@ -918,15 +917,13 @@ static void CreateCableCarSprites(void)
{
if (rval % 2)
{
- // Do walking east anim
- StartSpriteAnim(&gSprites[spriteId], 7);
+ StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_EAST);
gSprites[spriteId].sSameDir = TRUE;
gSprites[spriteId].y += 2;
}
else
{
- // Do walking west anim
- StartSpriteAnim(&gSprites[spriteId], 6);
+ StartSpriteAnim(&gSprites[spriteId], ANIM_STD_GO_WEST);
gSprites[spriteId].sSameDir = FALSE;
}
}
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 0d69eb0fa..187fd0ffe 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -205,5 +205,5 @@ static void InitClearSaveDataScreenWindows(void)
DeactivateAllTextPrinters();
FillWindowPixelBuffer(0, PIXEL_FILL(0));
LoadWindowGfx(0, 0, 2, 224);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
}
diff --git a/src/contest.c b/src/contest.c
index 05dd39483..336e62286 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -666,7 +666,7 @@ static const struct CompressedSpriteSheet sSpriteSheet_JudgeSymbols =
const struct CompressedSpritePalette sSpritePalette_JudgeSymbols =
{
- .data = gContest3Pal,
+ .data = gContestJudgeSymbolsPal,
.tag = TAG_CONTEST_SYMBOLS_PAL
};
@@ -1028,11 +1028,11 @@ void LoadContestBgAfterMoveAnim(void)
{
s32 i;
- LZDecompressVram(gContestMiscGfx, (void *)VRAM);
+ LZDecompressVram(gContestInterfaceGfx, (void *)VRAM);
LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
- CopyToBgTilemapBuffer(3, gOldContestGfx, 0, 0);
+ CopyToBgTilemapBuffer(3, gContestAudienceTilemap, 0, 0);
CopyBgTilemapBufferToVram(3);
- LoadCompressedPalette(gOldContestPalette, 0, 0x200);
+ LoadCompressedPalette(gContestInterfaceAudiencePalette, 0, 0x200);
LoadContestPalettes();
for (i = 0; i < CONTESTANT_COUNT; i++)
{
@@ -1310,24 +1310,24 @@ static bool8 SetupContestGraphics(u8 *stateVar)
RequestDma3Fill(0, (void *)VRAM + 0x10000, 0x8000, 1);
break;
case 1:
- LZDecompressVram(gContestMiscGfx, (void *)VRAM);
+ LZDecompressVram(gContestInterfaceGfx, (void *)VRAM);
break;
case 2:
LZDecompressVram(gContestAudienceGfx, (void *)(BG_SCREEN_ADDR(4)));
DmaCopyLarge32(3, (void *)(BG_SCREEN_ADDR(4)), eUnzippedContestAudience_Gfx, 0x2000, 0x1000);
break;
case 3:
- CopyToBgTilemapBuffer(3, gOldContestGfx, 0, 0);
+ CopyToBgTilemapBuffer(3, gContestAudienceTilemap, 0, 0);
CopyBgTilemapBufferToVram(3);
break;
case 4:
- CopyToBgTilemapBuffer(2, gUnknown_08C17170, 0, 0);
+ CopyToBgTilemapBuffer(2, gContestInterfaceTilemap, 0, 0);
CopyBgTilemapBufferToVram(2);
// This is a bug, and copies random junk. savedJunk is never read.
DmaCopy32Defvars(3, gContestResources->contestBgTilemaps[2], eContestTempSave.savedJunk, sizeof(eContestTempSave.savedJunk));
break;
case 5:
- LoadCompressedPalette(gOldContestPalette, 0, 0x200);
+ LoadCompressedPalette(gContestInterfaceAudiencePalette, 0, 0x200);
CpuCopy32(gPlttBufferUnfaded + 128, tempPalette1, 16 * sizeof(u16));
CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, tempPalette2, 16 * sizeof(u16));
CpuCopy32(tempPalette2, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
@@ -5089,7 +5089,7 @@ static void SetBgForCurtainDrop(void)
CpuFill32(0, gContestResources->contestBgTilemaps[1], 0x1000);
- CopyToBgTilemapBuffer(1, gUnknown_08C17980, 0, 0);
+ CopyToBgTilemapBuffer(1, gContestCurtainTilemap, 0, 0);
Contest_SetBgCopyFlags(1);
for (i = 0; i < CONTESTANT_COUNT; i++)
diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h
index 5b24981d5..58b990c73 100644
--- a/src/data/battle_anim.h
+++ b/src/data/battle_anim.h
@@ -1619,7 +1619,7 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
[BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure},
[BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent},
[BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer},
- [BG_SOLARBEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactOpponent},
- [BG_SOLARBEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactPlayer},
- [BG_SOLARBEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactContests},
+ [BG_SOLAR_BEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactOpponent},
+ [BG_SOLAR_BEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactPlayer},
+ [BG_SOLAR_BEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactContests},
};
diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h
index f78fa2c8c..82892120f 100644
--- a/src/data/battle_moves.h
+++ b/src/data/battle_moves.h
@@ -990,7 +990,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
[MOVE_SOLAR_BEAM] =
{
- .effect = EFFECT_SOLARBEAM,
+ .effect = EFFECT_SOLAR_BEAM,
.power = 120,
.type = TYPE_GRASS,
.accuracy = 100,
diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h
index bce0b7a21..f69fafec8 100644
--- a/src/data/graphics/pokemon.h
+++ b/src/data/graphics/pokemon.h
@@ -2696,12 +2696,12 @@ const u32 gMonBackPic_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.l
const u32 gMonShinyPalette_Deoxys[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz");
const u8 gMonIcon_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp");
const u8 gMonIcon_DeoxysSpeed[] = INCBIN_U8("graphics/pokemon/deoxys/icon_speed.4bpp");
-const u8 gMonIcon_DeoxysSpeedWide[] = INCBIN_U8("graphics/unused/deoxys_speed_icon_wide.4bpp");
+const u8 gMonIcon_DeoxysSpeedWide[] = INCBIN_U8("graphics/pokemon/deoxys/icon_speed_wide.4bpp"); // Unused
// Probably the leftover space from the other Deoxys forms
static const u8 sEmpty[0x6800] = {0};
-const u16 gUnknown_D437F8[] = INCBIN_U16("graphics/unknown/unknown_D437F8.bin");
+const u16 gMonUnusedGarbage[] = INCBIN_U16("graphics/pokemon/unused_garbage.bin");
const u8 gMonFootprint_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/footprint.1bpp");
diff --git a/src/data/items.h b/src/data/items.h
index 370cd2022..20ee057da 100644
--- a/src/data/items.h
+++ b/src/data/items.h
@@ -3744,10 +3744,10 @@ const struct Item gItems[] =
.fieldUseFunc = ItemUseOutOfBattle_TMHM,
},
- [ITEM_TM22_SOLARBEAM] =
+ [ITEM_TM22_SOLAR_BEAM] =
{
.name = _("TM22"),
- .itemId = ITEM_TM22_SOLARBEAM,
+ .itemId = ITEM_TM22_SOLAR_BEAM,
.price = 3000,
.description = sTM22Desc,
.pocket = POCKET_TM_HM,
diff --git a/src/data/object_events/movement_action_func_tables.h b/src/data/object_events/movement_action_func_tables.h
index 4df07be0d..aa55c31ef 100755
--- a/src/data/object_events/movement_action_func_tables.h
+++ b/src/data/object_events/movement_action_func_tables.h
@@ -85,14 +85,14 @@ u8 MovementAction_RideWaterCurrentLeft_Step0(struct ObjectEvent *, struct Sprite
u8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_RideWaterCurrentRight_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestDown_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestUp_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestLeft_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestRight_Step0(struct ObjectEvent *, struct Sprite *);
-u8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterDown_Step0(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterDown_Step1(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterUp_Step0(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterUp_Step1(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterLeft_Step0(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterLeft_Step1(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterRight_Step0(struct ObjectEvent *, struct Sprite *);
+u8 MovementAction_WalkFasterRight_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_SlideDown_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_SlideDown_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementAction_SlideUp_Step0(struct ObjectEvent *, struct Sprite *);
@@ -307,10 +307,10 @@ u8 (*const gMovementActionFuncs_RideWaterCurrentDown[])(struct ObjectEvent *, st
u8 (*const gMovementActionFuncs_RideWaterCurrentUp[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_RideWaterCurrentLeft[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_RideWaterCurrentRight[])(struct ObjectEvent *, struct Sprite *);
-u8 (*const gMovementActionFuncs_WalkFastestDown[])(struct ObjectEvent *, struct Sprite *);
-u8 (*const gMovementActionFuncs_WalkFastestUp[])(struct ObjectEvent *, struct Sprite *);
-u8 (*const gMovementActionFuncs_WalkFastestLeft[])(struct ObjectEvent *, struct Sprite *);
-u8 (*const gMovementActionFuncs_WalkFastestRight[])(struct ObjectEvent *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFasterDown[])(struct ObjectEvent *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFasterUp[])(struct ObjectEvent *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFasterLeft[])(struct ObjectEvent *, struct Sprite *);
+u8 (*const gMovementActionFuncs_WalkFasterRight[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_SlideDown[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_SlideUp[])(struct ObjectEvent *, struct Sprite *);
u8 (*const gMovementActionFuncs_SlideLeft[])(struct ObjectEvent *, struct Sprite *);
@@ -467,10 +467,10 @@ u8 (*const *const gMovementActionFuncs[])(struct ObjectEvent *, struct Sprite *)
[MOVEMENT_ACTION_RIDE_WATER_CURRENT_UP] = gMovementActionFuncs_RideWaterCurrentUp,
[MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT] = gMovementActionFuncs_RideWaterCurrentLeft,
[MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT] = gMovementActionFuncs_RideWaterCurrentRight,
- [MOVEMENT_ACTION_WALK_FASTEST_DOWN] = gMovementActionFuncs_WalkFastestDown,
- [MOVEMENT_ACTION_WALK_FASTEST_UP] = gMovementActionFuncs_WalkFastestUp,
- [MOVEMENT_ACTION_WALK_FASTEST_LEFT] = gMovementActionFuncs_WalkFastestLeft,
- [MOVEMENT_ACTION_WALK_FASTEST_RIGHT] = gMovementActionFuncs_WalkFastestRight,
+ [MOVEMENT_ACTION_WALK_FASTER_DOWN] = gMovementActionFuncs_WalkFasterDown,
+ [MOVEMENT_ACTION_WALK_FASTER_UP] = gMovementActionFuncs_WalkFasterUp,
+ [MOVEMENT_ACTION_WALK_FASTER_LEFT] = gMovementActionFuncs_WalkFasterLeft,
+ [MOVEMENT_ACTION_WALK_FASTER_RIGHT] = gMovementActionFuncs_WalkFasterRight,
[MOVEMENT_ACTION_SLIDE_DOWN] = gMovementActionFuncs_SlideDown,
[MOVEMENT_ACTION_SLIDE_UP] = gMovementActionFuncs_SlideUp,
[MOVEMENT_ACTION_SLIDE_LEFT] = gMovementActionFuncs_SlideLeft,
@@ -603,11 +603,11 @@ u8 (*const gMovementActionFuncs_FaceRight[])(struct ObjectEvent *, struct Sprite
};
static u8 (*const sDirectionAnimFuncsBySpeed[])(u8) = {
- GetMoveDirectionAnimNum,
- GetMoveDirectionFastAnimNum,
- GetMoveDirectionFastAnimNum,
- GetMoveDirectionFasterAnimNum,
- GetMoveDirectionFastestAnimNum,
+ [MOVE_SPEED_NORMAL] = GetMoveDirectionAnimNum,
+ [MOVE_SPEED_FAST_1] = GetMoveDirectionFastAnimNum,
+ [MOVE_SPEED_FAST_2] = GetMoveDirectionFastAnimNum,
+ [MOVE_SPEED_FASTER] = GetMoveDirectionFasterAnimNum,
+ [MOVE_SPEED_FASTEST] = GetMoveDirectionFastestAnimNum,
};
u8 (*const gMovementActionFuncs_WalkSlowDiagonalUpLeft[])(struct ObjectEvent *, struct Sprite *) = {
@@ -907,27 +907,27 @@ u8 (*const gMovementActionFuncs_RideWaterCurrentRight[])(struct ObjectEvent *, s
MovementAction_PauseSpriteAnim,
};
-u8 (*const gMovementActionFuncs_WalkFastestDown[])(struct ObjectEvent *, struct Sprite *) = {
- MovementAction_WalkFastestDown_Step0,
- MovementAction_WalkFastestDown_Step1,
+u8 (*const gMovementActionFuncs_WalkFasterDown[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementAction_WalkFasterDown_Step0,
+ MovementAction_WalkFasterDown_Step1,
MovementAction_PauseSpriteAnim,
};
-u8 (*const gMovementActionFuncs_WalkFastestUp[])(struct ObjectEvent *, struct Sprite *) = {
- MovementAction_WalkFastestUp_Step0,
- MovementAction_WalkFastestUp_Step1,
+u8 (*const gMovementActionFuncs_WalkFasterUp[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementAction_WalkFasterUp_Step0,
+ MovementAction_WalkFasterUp_Step1,
MovementAction_PauseSpriteAnim,
};
-u8 (*const gMovementActionFuncs_WalkFastestLeft[])(struct ObjectEvent *, struct Sprite *) = {
- MovementAction_WalkFastestLeft_Step0,
- MovementAction_WalkFastestLeft_Step1,
+u8 (*const gMovementActionFuncs_WalkFasterLeft[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementAction_WalkFasterLeft_Step0,
+ MovementAction_WalkFasterLeft_Step1,
MovementAction_PauseSpriteAnim,
};
-u8 (*const gMovementActionFuncs_WalkFastestRight[])(struct ObjectEvent *, struct Sprite *) = {
- MovementAction_WalkFastestRight_Step0,
- MovementAction_WalkFastestRight_Step1,
+u8 (*const gMovementActionFuncs_WalkFasterRight[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementAction_WalkFasterRight_Step0,
+ MovementAction_WalkFasterRight_Step1,
MovementAction_PauseSpriteAnim,
};
diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h
index a66d634b0..a5fb41462 100755
--- a/src/data/object_events/object_event_anims.h
+++ b/src/data/object_events/object_event_anims.h
@@ -796,99 +796,100 @@ static const union AnimCmd sAnim_HoOhStayStill[] =
};
static const union AnimCmd *const sAnimTable_Inanimate[] = {
- sAnim_StayStill,
+ [ANIM_STAY_STILL] = sAnim_StayStill,
};
static const union AnimCmd *const sAnimTable_QuintyPlump[] = {
- sAnim_QuintyPlumpFaceSouth,
- sAnim_QuintyPlumpFaceNorth,
- sAnim_QuintyPlumpFaceWest,
- sAnim_QuintyPlumpFaceEast,
- sAnim_QuintyPlumpGoSouth,
- sAnim_QuintyPlumpGoNorth,
- sAnim_QuintyPlumpGoWest,
- sAnim_QuintyPlumpGoEast,
- sAnim_QuintyPlumpGoFastSouth,
- sAnim_QuintyPlumpGoFastNorth,
- sAnim_QuintyPlumpGoFastWest,
- sAnim_QuintyPlumpGoFastEast,
- sAnim_QuintyPlumpGoFasterSouth,
- sAnim_QuintyPlumpGoFasterNorth,
- sAnim_QuintyPlumpGoFasterWest,
- sAnim_QuintyPlumpGoFasterEast,
- sAnim_QuintyPlumpGoFastestSouth,
- sAnim_QuintyPlumpGoFastestNorth,
- sAnim_QuintyPlumpGoFastestWest,
- sAnim_QuintyPlumpGoFastestEast,
+ [ANIM_STD_FACE_SOUTH] = sAnim_QuintyPlumpFaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_QuintyPlumpFaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_QuintyPlumpFaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_QuintyPlumpFaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_QuintyPlumpGoSouth,
+ [ANIM_STD_GO_NORTH] = sAnim_QuintyPlumpGoNorth,
+ [ANIM_STD_GO_WEST] = sAnim_QuintyPlumpGoWest,
+ [ANIM_STD_GO_EAST] = sAnim_QuintyPlumpGoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_QuintyPlumpGoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_QuintyPlumpGoFastNorth,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_QuintyPlumpGoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_QuintyPlumpGoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_QuintyPlumpGoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_QuintyPlumpGoFasterNorth,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_QuintyPlumpGoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_QuintyPlumpGoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_QuintyPlumpGoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_QuintyPlumpGoFastestNorth,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_QuintyPlumpGoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_QuintyPlumpGoFastestEast,
};
static const union AnimCmd *const sAnimTable_Standard[] = {
- sAnim_FaceSouth,
- sAnim_FaceNorth,
- sAnim_FaceWest,
- sAnim_FaceEast,
- sAnim_GoSouth,
- sAnim_GoNorth,
- sAnim_GoWest,
- sAnim_GoEast,
- sAnim_GoFastSouth,
- sAnim_GoFastNorth,
- sAnim_GoFastWest,
- sAnim_GoFastEast,
- sAnim_GoFasterSouth,
- sAnim_GoFasterNorth,
- sAnim_GoFasterWest,
- sAnim_GoFasterEast,
- sAnim_GoFastestSouth,
- sAnim_GoFastestNorth,
- sAnim_GoFastestWest,
- sAnim_GoFastestEast,
+ [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_FaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_FaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_GoSouth,
+ [ANIM_STD_GO_NORTH] = sAnim_GoNorth,
+ [ANIM_STD_GO_WEST] = sAnim_GoWest,
+ [ANIM_STD_GO_EAST] = sAnim_GoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterNorth,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestNorth,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast,
};
static const union AnimCmd *const sAnimTable_HoOh[] = {
- sAnim_FaceSouth,
- sAnim_FaceNorth,
- sAnim_FaceWest,
- sAnim_FaceEast,
- sAnim_HoOhFlapWings,
- sAnim_HoOhStayStill,
- sAnim_GoWest,
- sAnim_GoEast,
- sAnim_GoFastSouth,
- sAnim_GoFastNorth,
- sAnim_GoFastWest,
- sAnim_GoFastEast,
- sAnim_GoFasterSouth,
- sAnim_GoFasterNorth,
- sAnim_GoFasterWest,
- sAnim_GoFasterEast,
- sAnim_GoFastestSouth,
- sAnim_GoFastestNorth,
- sAnim_GoFastestWest,
- sAnim_GoFastestEast,
-};
-
+ [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_FaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_FaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_HoOhFlapWings,
+ [ANIM_STD_GO_NORTH] = sAnim_HoOhStayStill,
+ [ANIM_STD_GO_WEST] = sAnim_GoWest,
+ [ANIM_STD_GO_EAST] = sAnim_GoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterNorth,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestNorth,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast,
+};
+
+// The movements for going up use the animations for going right instead.
static const union AnimCmd *const sAnimTable_GroudonSide[] = {
- sAnim_FaceSouth,
- sAnim_FaceNorth,
- sAnim_FaceWest,
- sAnim_FaceEast,
- sAnim_GoSouth,
- sAnim_GoEast,
- sAnim_GoWest,
- sAnim_GoEast,
- sAnim_GoFastSouth,
- sAnim_GoFastEast,
- sAnim_GoFastWest,
- sAnim_GoFastEast,
- sAnim_GoFasterSouth,
- sAnim_GoFasterEast,
- sAnim_GoFasterWest,
- sAnim_GoFasterEast,
- sAnim_GoFastestSouth,
- sAnim_GoFastestEast,
- sAnim_GoFastestWest,
- sAnim_GoFastestEast,
+ [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_FaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_FaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_GoSouth,
+ [ANIM_STD_GO_NORTH] = sAnim_GoEast,
+ [ANIM_STD_GO_WEST] = sAnim_GoWest,
+ [ANIM_STD_GO_EAST] = sAnim_GoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestEast,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast,
};
static const union AnimCmd sAnim_RayquazaCoiledAwake[] =
@@ -952,186 +953,185 @@ static const union AnimCmd sAnim_RayquazaFaceEast[] =
// Though they correspond to facing/walking movements, Rayquaza doesn't have
// equivalent images aside from flying up. Its other frames aside from the 'normal'
// frame are for the sequence where it awakens on Sky Pillar.
-// The corresponding facing/walking movements are commented alongside
static const union AnimCmd *const sAnimTable_Rayquaza[] = {
- sAnim_RayquazaFaceSouth, // Face South
- sAnim_RayquazaFaceNorth, // Face North
- sAnim_RayquazaFaceWest, // Face West
- sAnim_RayquazaFaceEast, // Face East
- sAnim_RayquazaCoiledAsleep, // Go South
- sAnim_RayquazaFlyUp, // Go North
- sAnim_RayquazaCoiledMouthOpen, // Go West
- sAnim_RayquazaNormal, // Go East
- sAnim_RayquazaCoiledAsleep, // Go fast South
- sAnim_RayquazaFlyUp, // Go fast North
- sAnim_RayquazaCoiledAwake, // Go fast West
- sAnim_RayquazaNormal, // Go fast East
- sAnim_RayquazaCoiledAsleep, // Go faster South
- sAnim_RayquazaFlyUp, // Go faster North
- sAnim_RayquazaCoiledMouthOpen, // Go faster West
- sAnim_RayquazaNormal, // Go faster East
- sAnim_RayquazaCoiledAsleep, // Go fastest South
- sAnim_RayquazaFlyUp, // Go fastest North
- sAnim_RayquazaCoiledMouthOpen, // Go fastest West
- sAnim_RayquazaNormal, // Go fastest East
+ [ANIM_STD_FACE_SOUTH] = sAnim_RayquazaFaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_RayquazaFaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_RayquazaFaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_RayquazaFaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_RayquazaCoiledAsleep,
+ [ANIM_STD_GO_NORTH] = sAnim_RayquazaFlyUp,
+ [ANIM_STD_GO_WEST] = sAnim_RayquazaCoiledMouthOpen,
+ [ANIM_STD_GO_EAST] = sAnim_RayquazaNormal,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_RayquazaCoiledAsleep,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_RayquazaFlyUp,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_RayquazaCoiledAwake,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_RayquazaNormal,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_RayquazaCoiledAsleep,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_RayquazaFlyUp,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_RayquazaCoiledMouthOpen,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_RayquazaNormal,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_RayquazaCoiledAsleep,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_RayquazaFlyUp,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_RayquazaCoiledMouthOpen,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_RayquazaNormal,
};
static const union AnimCmd *const sAnimTable_BrendanMayNormal[] = {
- sAnim_FaceSouth,
- sAnim_FaceNorth,
- sAnim_FaceWest,
- sAnim_FaceEast,
- sAnim_GoSouth,
- sAnim_GoNorth,
- sAnim_GoWest,
- sAnim_GoEast,
- sAnim_GoFastSouth,
- sAnim_GoFastNorth,
- sAnim_GoFastWest,
- sAnim_GoFastEast,
- sAnim_GoFasterSouth,
- sAnim_GoFasterNorth,
- sAnim_GoFasterWest,
- sAnim_GoFasterEast,
- sAnim_GoFastestSouth,
- sAnim_GoFastestNorth,
- sAnim_GoFastestWest,
- sAnim_GoFastestEast,
- sAnim_RunSouth,
- sAnim_RunNorth,
- sAnim_RunWest,
- sAnim_RunEast,
+ [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_FaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_FaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_GoSouth,
+ [ANIM_STD_GO_NORTH] = sAnim_GoNorth,
+ [ANIM_STD_GO_WEST] = sAnim_GoWest,
+ [ANIM_STD_GO_EAST] = sAnim_GoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterNorth,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestNorth,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast,
+ [ANIM_RUN_SOUTH] = sAnim_RunSouth,
+ [ANIM_RUN_NORTH] = sAnim_RunNorth,
+ [ANIM_RUN_WEST] = sAnim_RunWest,
+ [ANIM_RUN_EAST] = sAnim_RunEast,
};
static const union AnimCmd *const sAnimTable_AcroBike[] = {
- sAnim_FaceSouth,
- sAnim_FaceNorth,
- sAnim_FaceWest,
- sAnim_FaceEast,
- sAnim_GoSouth,
- sAnim_GoNorth,
- sAnim_GoWest,
- sAnim_GoEast,
- sAnim_GoFastSouth,
- sAnim_GoFastNorth,
- sAnim_GoFastWest,
- sAnim_GoFastEast,
- sAnim_GoFasterSouth,
- sAnim_GoFasterNorth,
- sAnim_GoFasterWest,
- sAnim_GoFasterEast,
- sAnim_GoFastestSouth,
- sAnim_GoFastestNorth,
- sAnim_GoFastestWest,
- sAnim_GoFastestEast,
- sAnim_BunnyHoppyBackWheelSouth,
- sAnim_BunnyHoppyBackWheelNorth,
- sAnim_BunnyHoppyBackWheelWest,
- sAnim_BunnyHoppyBackWheelEast,
- sAnim_BunnyHoppyFrontWheelSouth,
- sAnim_BunnyHoppyFrontWheelNorth,
- sAnim_BunnyHoppyFrontWheelWest,
- sAnim_BunnyHoppyFrontWheelEast,
- sAnim_StandingWheelieBackWheelSouth,
- sAnim_StandingWheelieBackWheelNorth,
- sAnim_StandingWheelieBackWheelWest,
- sAnim_StandingWheelieBackWheelEast,
- sAnim_StandingWheelieFrontWheelSouth,
- sAnim_StandingWheelieFrontWheelNorth,
- sAnim_StandingWheelieFrontWheelWest,
- sAnim_StandingWheelieFrontWheelEast,
- sAnim_MovingWheelieSouth,
- sAnim_MovingWheelieNorth,
- sAnim_MovingWheelieWest,
- sAnim_MovingWheelieEast,
+ [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_FaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_FaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_GoSouth,
+ [ANIM_STD_GO_NORTH] = sAnim_GoNorth,
+ [ANIM_STD_GO_WEST] = sAnim_GoWest,
+ [ANIM_STD_GO_EAST] = sAnim_GoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterNorth,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestNorth,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast,
+ [ANIM_BUNNY_HOPPY_BACK_WHEEL_SOUTH] = sAnim_BunnyHoppyBackWheelSouth,
+ [ANIM_BUNNY_HOPPY_BACK_WHEEL_NORTH] = sAnim_BunnyHoppyBackWheelNorth,
+ [ANIM_BUNNY_HOPPY_BACK_WHEEL_WEST] = sAnim_BunnyHoppyBackWheelWest,
+ [ANIM_BUNNY_HOPPY_BACK_WHEEL_EAST] = sAnim_BunnyHoppyBackWheelEast,
+ [ANIM_BUNNY_HOPPY_FRONT_WHEEL_SOUTH] = sAnim_BunnyHoppyFrontWheelSouth,
+ [ANIM_BUNNY_HOPPY_FRONT_WHEEL_NORTH] = sAnim_BunnyHoppyFrontWheelNorth,
+ [ANIM_BUNNY_HOPPY_FRONT_WHEEL_WEST] = sAnim_BunnyHoppyFrontWheelWest,
+ [ANIM_BUNNY_HOPPY_FRONT_WHEEL_EAST] = sAnim_BunnyHoppyFrontWheelEast,
+ [ANIM_STANDING_WHEELIE_BACK_WHEEL_SOUTH] = sAnim_StandingWheelieBackWheelSouth,
+ [ANIM_STANDING_WHEELIE_BACK_WHEEL_NORTH] = sAnim_StandingWheelieBackWheelNorth,
+ [ANIM_STANDING_WHEELIE_BACK_WHEEL_WEST] = sAnim_StandingWheelieBackWheelWest,
+ [ANIM_STANDING_WHEELIE_BACK_WHEEL_EAST] = sAnim_StandingWheelieBackWheelEast,
+ [ANIM_STANDING_WHEELIE_FRONT_WHEEL_SOUTH] = sAnim_StandingWheelieFrontWheelSouth,
+ [ANIM_STANDING_WHEELIE_FRONT_WHEEL_NORTH] = sAnim_StandingWheelieFrontWheelNorth,
+ [ANIM_STANDING_WHEELIE_FRONT_WHEEL_WEST] = sAnim_StandingWheelieFrontWheelWest,
+ [ANIM_STANDING_WHEELIE_FRONT_WHEEL_EAST] = sAnim_StandingWheelieFrontWheelEast,
+ [ANIM_MOVING_WHEELIE_SOUTH] = sAnim_MovingWheelieSouth,
+ [ANIM_MOVING_WHEELIE_NORTH] = sAnim_MovingWheelieNorth,
+ [ANIM_MOVING_WHEELIE_WEST] = sAnim_MovingWheelieWest,
+ [ANIM_MOVING_WHEELIE_EAST] = sAnim_MovingWheelieEast,
};
static const union AnimCmd *const sAnimTable_Surfing[] = {
- sAnim_FaceSouth,
- sAnim_FaceNorth,
- sAnim_FaceWest,
- sAnim_FaceEast,
- sAnim_GoSouth,
- sAnim_GoNorth,
- sAnim_GoWest,
- sAnim_GoEast,
- sAnim_GoFastSouth,
- sAnim_GoFastNorth,
- sAnim_GoFastWest,
- sAnim_GoFastEast,
- sAnim_GoFasterSouth,
- sAnim_GoFasterNorth,
- sAnim_GoFasterWest,
- sAnim_GoFasterEast,
- sAnim_GoFastestSouth,
- sAnim_GoFastestNorth,
- sAnim_GoFastestWest,
- sAnim_GoFastestEast,
- sAnim_GetOnOffSurfBlobSouth,
- sAnim_GetOnOffSurfBlobNorth,
- sAnim_GetOnOffSurfBlobWest,
- sAnim_GetOnOffSurfBlobEast,
+ [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_FaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_FaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_GoSouth,
+ [ANIM_STD_GO_NORTH] = sAnim_GoNorth,
+ [ANIM_STD_GO_WEST] = sAnim_GoWest,
+ [ANIM_STD_GO_EAST] = sAnim_GoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterNorth,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestNorth,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast,
+ [ANIM_GET_ON_OFF_POKEMON_SOUTH] = sAnim_GetOnOffSurfBlobSouth,
+ [ANIM_GET_ON_OFF_POKEMON_NORTH] = sAnim_GetOnOffSurfBlobNorth,
+ [ANIM_GET_ON_OFF_POKEMON_WEST] = sAnim_GetOnOffSurfBlobWest,
+ [ANIM_GET_ON_OFF_POKEMON_EAST] = sAnim_GetOnOffSurfBlobEast,
};
static const union AnimCmd *const sAnimTable_Nurse[] = {
- sAnim_FaceSouth,
- sAnim_FaceNorth,
- sAnim_FaceWest,
- sAnim_FaceEast,
- sAnim_GoSouth,
- sAnim_GoNorth,
- sAnim_GoWest,
- sAnim_GoEast,
- sAnim_GoFastSouth,
- sAnim_GoFastNorth,
- sAnim_GoFastWest,
- sAnim_GoFastEast,
- sAnim_GoFasterSouth,
- sAnim_GoFasterNorth,
- sAnim_GoFasterWest,
- sAnim_GoFasterEast,
- sAnim_GoFastestSouth,
- sAnim_GoFastestNorth,
- sAnim_GoFastestWest,
- sAnim_GoFastestEast,
- sAnim_NurseBow,
+ [ANIM_STD_FACE_SOUTH] = sAnim_FaceSouth,
+ [ANIM_STD_FACE_NORTH] = sAnim_FaceNorth,
+ [ANIM_STD_FACE_WEST] = sAnim_FaceWest,
+ [ANIM_STD_FACE_EAST] = sAnim_FaceEast,
+ [ANIM_STD_GO_SOUTH] = sAnim_GoSouth,
+ [ANIM_STD_GO_NORTH] = sAnim_GoNorth,
+ [ANIM_STD_GO_WEST] = sAnim_GoWest,
+ [ANIM_STD_GO_EAST] = sAnim_GoEast,
+ [ANIM_STD_GO_FAST_SOUTH] = sAnim_GoFastSouth,
+ [ANIM_STD_GO_FAST_NORTH] = sAnim_GoFastNorth,
+ [ANIM_STD_GO_FAST_WEST] = sAnim_GoFastWest,
+ [ANIM_STD_GO_FAST_EAST] = sAnim_GoFastEast,
+ [ANIM_STD_GO_FASTER_SOUTH] = sAnim_GoFasterSouth,
+ [ANIM_STD_GO_FASTER_NORTH] = sAnim_GoFasterNorth,
+ [ANIM_STD_GO_FASTER_WEST] = sAnim_GoFasterWest,
+ [ANIM_STD_GO_FASTER_EAST] = sAnim_GoFasterEast,
+ [ANIM_STD_GO_FASTEST_SOUTH] = sAnim_GoFastestSouth,
+ [ANIM_STD_GO_FASTEST_NORTH] = sAnim_GoFastestNorth,
+ [ANIM_STD_GO_FASTEST_WEST] = sAnim_GoFastestWest,
+ [ANIM_STD_GO_FASTEST_EAST] = sAnim_GoFastestEast,
+ [ANIM_NURSE_BOW] = sAnim_NurseBow,
};
static const union AnimCmd *const sAnimTable_FieldMove[] = {
- sAnim_FieldMove,
+ [ANIM_FIELD_MOVE] = sAnim_FieldMove,
};
static const union AnimCmd *const sAnimTable_BerryTree[] = {
- sAnim_BerryTreeStage0,
- sAnim_BerryTreeStage1,
- sAnim_BerryTreeStage2,
- sAnim_BerryTreeStage3,
- sAnim_BerryTreeStage4,
+ [BERRY_STAGE_PLANTED - 1] = sAnim_BerryTreeStage0,
+ [BERRY_STAGE_SPROUTED - 1] = sAnim_BerryTreeStage1,
+ [BERRY_STAGE_TALLER - 1] = sAnim_BerryTreeStage2,
+ [BERRY_STAGE_FLOWERING - 1] = sAnim_BerryTreeStage3,
+ [BERRY_STAGE_BERRIES - 1] = sAnim_BerryTreeStage4,
};
static const union AnimCmd *const sAnimTable_BreakableRock[] = {
- sAnim_StayStill,
- sAnim_RockBreak,
+ [ANIM_STAY_STILL] = sAnim_StayStill,
+ [ANIM_REMOVE_OBSTACLE] = sAnim_RockBreak,
};
static const union AnimCmd *const sAnimTable_CuttableTree[] = {
- sAnim_StayStill,
- sAnim_TreeCut,
+ [ANIM_STAY_STILL] = sAnim_StayStill,
+ [ANIM_REMOVE_OBSTACLE] = sAnim_TreeCut,
};
static const union AnimCmd *const sAnimTable_Fishing[] = {
- sAnim_TakeOutRodSouth,
- sAnim_TakeOutRodNorth,
- sAnim_TakeOutRodWest,
- sAnim_TakeOutRodEast,
- sAnim_PutAwayRodSouth,
- sAnim_PutAwayRodNorth,
- sAnim_PutAwayRodWest,
- sAnim_PutAwayRodEast,
- sAnim_HookedPokemonSouth,
- sAnim_HookedPokemonNorth,
- sAnim_HookedPokemonWest,
- sAnim_HookedPokemonEast,
+ [ANIM_TAKE_OUT_ROD_SOUTH] = sAnim_TakeOutRodSouth,
+ [ANIM_TAKE_OUT_ROD_NORTH] = sAnim_TakeOutRodNorth,
+ [ANIM_TAKE_OUT_ROD_WEST] = sAnim_TakeOutRodWest,
+ [ANIM_TAKE_OUT_ROD_EAST] = sAnim_TakeOutRodEast,
+ [ANIM_PUT_AWAY_ROD_SOUTH] = sAnim_PutAwayRodSouth,
+ [ANIM_PUT_AWAY_ROD_NORTH] = sAnim_PutAwayRodNorth,
+ [ANIM_PUT_AWAY_ROD_WEST] = sAnim_PutAwayRodWest,
+ [ANIM_PUT_AWAY_ROD_EAST] = sAnim_PutAwayRodEast,
+ [ANIM_HOOKED_POKEMON_SOUTH] = sAnim_HookedPokemonSouth,
+ [ANIM_HOOKED_POKEMON_NORTH] = sAnim_HookedPokemonNorth,
+ [ANIM_HOOKED_POKEMON_WEST] = sAnim_HookedPokemonWest,
+ [ANIM_HOOKED_POKEMON_EAST] = sAnim_HookedPokemonEast,
};
static const union AffineAnimCmd *const sAffineAnimTable_KyogreGroudon[] = {
diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h
index deeeda16f..cb42d7c6f 100644
--- a/src/data/pokemon/tmhm_learnsets.h
+++ b/src/data/pokemon/tmhm_learnsets.h
@@ -15,7 +15,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -35,7 +35,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -57,7 +57,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
@@ -239,7 +239,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -264,7 +264,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM31_BRICK_BREAK)
| TMHM(TM32_DOUBLE_TEAM)
@@ -758,7 +758,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -794,7 +794,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -867,7 +867,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
@@ -901,7 +901,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
@@ -974,7 +974,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -992,7 +992,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -1011,7 +1011,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -1029,7 +1029,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM32_DOUBLE_TEAM)
@@ -1052,7 +1052,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM32_DOUBLE_TEAM)
@@ -1073,7 +1073,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM32_DOUBLE_TEAM)
@@ -1093,7 +1093,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM32_DOUBLE_TEAM)
@@ -1607,7 +1607,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -1626,7 +1626,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -1646,7 +1646,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -1778,7 +1778,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM11_SUNNY_DAY)
| TMHM(TM17_PROTECT)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
@@ -1797,7 +1797,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM15_HYPER_BEAM)
| TMHM(TM17_PROTECT)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
@@ -2348,7 +2348,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM32_DOUBLE_TEAM)
@@ -2372,7 +2372,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM32_DOUBLE_TEAM)
@@ -2495,7 +2495,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -2647,7 +2647,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -2680,7 +2680,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -2706,7 +2706,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -2872,7 +2872,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
@@ -3021,7 +3021,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -3198,7 +3198,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -3356,7 +3356,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM26_EARTHQUAKE)
@@ -3560,7 +3560,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -3608,7 +3608,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -3655,7 +3655,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
@@ -3676,7 +3676,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
@@ -3700,7 +3700,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
@@ -3874,7 +3874,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM27_RETURN)
@@ -3903,7 +3903,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -3976,7 +3976,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM31_BRICK_BREAK)
@@ -4000,7 +4000,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM31_BRICK_BREAK)
@@ -4020,7 +4020,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM29_PSYCHIC)
@@ -4040,7 +4040,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM29_PSYCHIC)
@@ -4151,7 +4151,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -4177,7 +4177,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM29_PSYCHIC)
@@ -4202,7 +4202,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -4229,7 +4229,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -4258,7 +4258,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -4284,7 +4284,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -4373,7 +4373,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -4493,7 +4493,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM40_AERIAL_ACE)
@@ -4510,7 +4510,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM40_AERIAL_ACE)
@@ -4528,7 +4528,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM40_AERIAL_ACE)
@@ -4547,7 +4547,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -4577,7 +4577,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -4598,7 +4598,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -4615,7 +4615,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -4855,7 +4855,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -4877,7 +4877,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -4901,7 +4901,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -4982,7 +4982,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM26_EARTHQUAKE)
@@ -5017,7 +5017,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -5455,7 +5455,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM12_TAUNT)
| TMHM(TM17_PROTECT)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
@@ -5481,7 +5481,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM15_HYPER_BEAM)
| TMHM(TM17_PROTECT)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
@@ -5568,7 +5568,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -5593,7 +5593,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -5731,7 +5731,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -5766,7 +5766,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -5826,7 +5826,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -6003,7 +6003,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM26_EARTHQUAKE)
@@ -6039,7 +6039,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -6114,7 +6114,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -6140,7 +6140,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -6169,7 +6169,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
@@ -6450,7 +6450,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -6473,7 +6473,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
| TMHM(TM30_SHADOW_BALL)
@@ -6499,7 +6499,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM42_FACADE)
@@ -6522,7 +6522,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM31_BRICK_BREAK)
| TMHM(TM32_DOUBLE_TEAM)
@@ -6552,7 +6552,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM31_BRICK_BREAK)
| TMHM(TM32_DOUBLE_TEAM)
@@ -6575,7 +6575,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM30_SHADOW_BALL)
@@ -6595,7 +6595,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM30_SHADOW_BALL)
@@ -6621,7 +6621,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM30_SHADOW_BALL)
@@ -6646,7 +6646,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM30_SHADOW_BALL)
@@ -6666,7 +6666,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM30_SHADOW_BALL)
@@ -6688,7 +6688,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
| TMHM(TM30_SHADOW_BALL)
@@ -6745,7 +6745,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -6767,7 +6767,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM27_RETURN)
| TMHM(TM31_BRICK_BREAK)
@@ -6866,7 +6866,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
| TMHM(TM32_DOUBLE_TEAM)
@@ -6888,7 +6888,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
| TMHM(TM32_DOUBLE_TEAM)
@@ -6960,7 +6960,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -6987,7 +6987,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -7014,7 +7014,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -7048,7 +7048,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -7073,7 +7073,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -7383,7 +7383,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -7404,7 +7404,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM28_DIG)
@@ -7428,7 +7428,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
@@ -7660,7 +7660,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM37_SANDSTORM)
@@ -7680,7 +7680,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM37_SANDSTORM)
@@ -7769,7 +7769,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM29_PSYCHIC)
@@ -7906,7 +7906,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM31_BRICK_BREAK)
| TMHM(TM32_DOUBLE_TEAM)
@@ -7982,7 +7982,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM40_AERIAL_ACE)
@@ -8005,7 +8005,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
@@ -8085,7 +8085,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
| TMHM(TM32_DOUBLE_TEAM)
@@ -8108,7 +8108,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
@@ -8140,7 +8140,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM26_EARTHQUAKE)
@@ -8174,7 +8174,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM26_EARTHQUAKE)
@@ -8204,7 +8204,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
| TMHM(TM32_DOUBLE_TEAM)
@@ -8229,7 +8229,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
| TMHM(TM32_DOUBLE_TEAM)
@@ -8253,7 +8253,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
@@ -8279,7 +8279,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
| TMHM(TM32_DOUBLE_TEAM)
@@ -8302,7 +8302,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
@@ -8332,7 +8332,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM30_SHADOW_BALL)
@@ -8538,7 +8538,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -8649,7 +8649,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -8683,7 +8683,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
@@ -8710,7 +8710,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
@@ -8736,7 +8736,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
@@ -8759,7 +8759,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
| TMHM(TM36_SLUDGE_BOMB)
@@ -8777,7 +8777,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM19_GIGA_DRAIN)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM26_EARTHQUAKE)
| TMHM(TM27_RETURN)
| TMHM(TM32_DOUBLE_TEAM)
@@ -9160,7 +9160,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -9196,7 +9196,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM17_PROTECT)
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM23_IRON_TAIL)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
@@ -9234,7 +9234,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM26_EARTHQUAKE)
@@ -9272,7 +9272,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM26_EARTHQUAKE)
@@ -9337,7 +9337,7 @@ const u32 gTMHMLearnsets[][2] =
| TMHM(TM18_RAIN_DANCE)
| TMHM(TM20_SAFEGUARD)
| TMHM(TM21_FRUSTRATION)
- | TMHM(TM22_SOLARBEAM)
+ | TMHM(TM22_SOLAR_BEAM)
| TMHM(TM24_THUNDERBOLT)
| TMHM(TM25_THUNDER)
| TMHM(TM27_RETURN)
diff --git a/src/data/trade.h b/src/data/trade.h
index 7088633a8..b26072763 100644
--- a/src/data/trade.h
+++ b/src/data/trade.h
@@ -19,7 +19,7 @@ static const u32 sUnusedStructSizes[] =
sizeof(struct SaveBlock1),
sizeof(struct MapHeader),
// 0x00000530, in RS
- sizeof(struct MailStruct), //or ObjectEvent / ObjectEventGraphicsInfo
+ sizeof(struct Mail), //or ObjectEvent / ObjectEventGraphicsInfo
sizeof(struct Pokemon), //or TrainerCard
0x00000528 // 0x000004D8, in RS
};
diff --git a/src/daycare.c b/src/daycare.c
index 8dd751531..8105c2e9c 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -25,7 +25,6 @@
extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
-// this file's functions
static void ClearDaycareMonMail(struct DaycareMail *mail);
static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare);
static u8 GetDaycareCompatibilityScore(struct DayCare *daycare);
@@ -122,7 +121,7 @@ u8 CountPokemonInDaycare(struct DayCare *daycare)
return count;
}
-void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *daycareMail)
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *mixMail)
{
u8 i;
u8 numDaycareMons = 0;
@@ -133,17 +132,18 @@ void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDay
{
numDaycareMons++;
if (GetBoxMonData(&daycare->mons[i].mon, MON_DATA_HELD_ITEM) == ITEM_NONE)
- daycareMail->holdsItem[i] = FALSE;
+ mixMail->cantHoldItem[i] = FALSE;
else
- daycareMail->holdsItem[i] = TRUE;
+ mixMail->cantHoldItem[i] = TRUE;
}
else
{
- daycareMail->holdsItem[i] = TRUE;
+ // Daycare slot empty
+ mixMail->cantHoldItem[i] = TRUE;
}
}
- daycareMail->numDaycareMons = numDaycareMons;
+ mixMail->numDaycareMons = numDaycareMons;
}
static s8 Daycare_FindEmptySpot(struct DayCare *daycare)
@@ -165,7 +165,7 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar
{
u8 mailId;
- StringCopy(daycareMon->mail.OT_name, gSaveBlock2Ptr->playerName);
+ StringCopy(daycareMon->mail.otName, gSaveBlock2Ptr->playerName);
GetMonNickname2(mon, daycareMon->mail.monName);
StripExtCtrlCodes(daycareMon->mail.monName);
daycareMon->mail.gameLanguage = GAME_LANGUAGE;
@@ -262,7 +262,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DaycareMon *daycareMon)
gPlayerParty[PARTY_SIZE - 1] = pokemon;
if (daycareMon->mail.message.itemId)
{
- GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycareMon->mail.message);
+ GiveMailToMon(&gPlayerParty[PARTY_SIZE - 1], &daycareMon->mail.message);
ClearDaycareMonMail(&daycareMon->mail);
}
@@ -352,11 +352,11 @@ static void ClearDaycareMonMail(struct DaycareMail *mail)
s32 i;
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
- mail->OT_name[i] = 0;
+ mail->otName[i] = 0;
for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
mail->monName[i] = 0;
- ClearMailStruct(&mail->message);
+ ClearMail(&mail->message);
}
static void ClearDaycareMon(struct DaycareMon *daycareMon)
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index d193ef1f5..bba2085e8 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -271,9 +271,7 @@ void ReceiveDewfordTrendData(struct DewfordTrend *linkedTrends, size_t size, u8
// Only overwrrite it if it's "trendier"
temp = &savedTrendsBuffer[idx];
if (temp->trendiness < src->trendiness)
- {
*temp = *src;
- }
}
src++;
}
diff --git a/src/diploma.c b/src/diploma.c
index dca0912e3..c68dc1000 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -196,7 +196,7 @@ static void InitDiplomaWindow(void)
{
InitWindows(sDiplomaWinTemplates);
DeactivateAllTextPrinters();
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
}
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index b8ab1b91e..e491b7b14 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -396,10 +396,10 @@ static bool8 _CheckDaycareMonReceivedMail(struct DayCare *daycare, u8 daycareId)
GetBoxMonNickname(&daycareMon->mon, nickname);
if (daycareMon->mail.message.itemId != ITEM_NONE
&& (StringCompareWithoutExtCtrlCodes(nickname, daycareMon->mail.monName) != 0
- || StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->mail.OT_name) != 0))
+ || StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->mail.otName) != 0))
{
StringCopy(gStringVar1, nickname);
- TVShowConvertInternationalString(gStringVar2, daycareMon->mail.OT_name, daycareMon->mail.gameLanguage);
+ TVShowConvertInternationalString(gStringVar2, daycareMon->mail.otName, daycareMon->mail.gameLanguage);
TVShowConvertInternationalString(gStringVar3, daycareMon->mail.monName, daycareMon->mail.monLanguage);
return TRUE;
}
diff --git a/src/ereader_helpers.c b/src/ereader_helpers.c
index 9f265143c..9a93707d8 100755
--- a/src/ereader_helpers.c
+++ b/src/ereader_helpers.c
@@ -16,31 +16,6 @@
#include "constants/items.h"
#include "constants/trainer_hill.h"
-enum {
- EREADER_XFR_STATE_INIT = 0,
- EREADER_XFR_STATE_HANDSHAKE,
- EREADER_XFR_STATE_START,
- EREADER_XFR_STATE_TRANSFER,
- EREADER_XFR_STATE_TRANSFER_DONE,
- EREADER_XFR_STATE_CHECKSUM,
- EREADER_XFR_STATE_DONE
-};
-
-#define EREADER_XFER_EXE 1
-#define EREADER_XFER_CHK 2
-#define EREADER_XFER_SHIFT 0
-#define EREADER_XFER_MASK 3
-
-#define EREADER_CANCEL_TIMEOUT 1
-#define EREADER_CANCEL_KEY 2
-#define EREADER_CANCEL_MASK 0xC
-#define EREADER_CANCEL_SHIFT 2
-
-#define EREADER_CHECKSUM_OK 1
-#define EREADER_CHECKSUM_ERR 2
-#define EREADER_CHECKSUM_MASK 0x30
-#define EREADER_CHECKSUM_SHIFT 4
-
struct SendRecvMgr
{
bool8 isParent;
@@ -562,17 +537,17 @@ int EReader_Send(int size, const void * src)
sendStatus = EReaderHandleTransfer(1, size, src, NULL);
sSendRecvStatus = sendStatus;
- if ((sSendRecvStatus & 0x13) == 0x10)
+ if ((sSendRecvStatus & EREADER_XFER_MASK) == 0 && sSendRecvStatus & EREADER_CHECKSUM_OK_MASK)
{
result = 0;
break;
}
- else if (sSendRecvStatus & 0x8)
+ else if (sSendRecvStatus & EREADER_CANCEL_KEY_MASK)
{
result = 1;
break;
}
- else if (sSendRecvStatus & 0x4)
+ else if (sSendRecvStatus & EREADER_CANCEL_TIMEOUT_MASK)
{
result = 2;
break;
@@ -603,17 +578,17 @@ int EReader_Recv(void * dest)
recvStatus = EReaderHandleTransfer(0, 0, NULL, dest);
sSendRecvStatus = recvStatus;
- if ((sSendRecvStatus & 0x13) == 0x10)
+ if ((sSendRecvStatus & EREADER_XFER_MASK) == 0 && sSendRecvStatus & EREADER_CHECKSUM_OK_MASK)
{
result = 0;
break;
}
- else if (sSendRecvStatus & 0x8)
+ else if (sSendRecvStatus & EREADER_CANCEL_KEY_MASK)
{
result = 1;
break;
}
- else if (sSendRecvStatus & 0x4)
+ else if (sSendRecvStatus & EREADER_CANCEL_TIMEOUT_MASK)
{
result = 2;
break;
diff --git a/src/ereader_screen.c b/src/ereader_screen.c
index 73a1b870e..f98a0247d 100755
--- a/src/ereader_screen.c
+++ b/src/ereader_screen.c
@@ -13,37 +13,38 @@
#include "util.h"
#include "constants/songs.h"
+// Equivalent to MysteryGiftTaskData
struct EReaderTaskData
{
- u16 unk0;
- u16 unk2;
- u16 unk4;
- u16 unk6;
- u8 unk8;
- u8 unk9;
- u8 unkA;
- u8 unkB;
- u8 unkC;
- u8 unkD;
- u8 unkE;
- u8 *unk10;
+ u16 timer;
+ u16 unused1;
+ u16 unused2;
+ u16 unused3;
+ u8 state;
+ u8 textState;
+ u8 unused4;
+ u8 unused5;
+ u8 unused6;
+ u8 unused7;
+ u8 status;
+ u8 *unusedBuffer;
};
-struct Unk03006370
+struct EReaderData
{
- u16 unk0;
- u32 unk4;
- u32 *unk8;
+ u16 status;
+ u32 size;
+ u32 *data;
};
static void Task_EReader(u8);
-struct Unk03006370 gUnknown_03006370;
+struct EReaderData gEReaderData;
-extern const u8 gUnknown_089A3470[];
-extern const u8 gMultiBootProgram_BerryGlitchFix_Start[];
+extern const u8 gEReaderLinkData_Start[];
+extern const u8 gEReaderLinkData_End[];
-static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
+static void EReader_Load(struct EReaderData *eReader, int size, u32 *data)
{
volatile u16 backupIME = REG_IME;
REG_IME = 0;
@@ -53,12 +54,12 @@ static void sub_81D4D50(struct Unk03006370 *arg0, int arg1, u32 *arg2)
EReaderHelper_ClearSendRecvMgr();
REG_IE |= INTR_FLAG_VCOUNT;
REG_IME = backupIME;
- arg0->unk0 = 0;
- arg0->unk4 = arg1;
- arg0->unk8 = arg2;
+ eReader->status = 0;
+ eReader->size = size;
+ eReader->data = data;
}
-static void sub_81D4DB8(struct Unk03006370 *arg0)
+static void EReader_Reset(struct EReaderData *eReader)
{
volatile u16 backupIME = REG_IME;
REG_IME = 0;
@@ -68,21 +69,30 @@ static void sub_81D4DB8(struct Unk03006370 *arg0)
REG_IME = backupIME;
}
-static u8 sub_81D4DE8(struct Unk03006370 *arg0)
+// Return values for EReader_Transfer
+enum {
+ TRANSFER_ACTIVE,
+ TRANSFER_SUCCESS,
+ TRANSFER_CANCELED,
+ TRANSFER_TIMEOUT,
+};
+
+static u8 EReader_Transfer(struct EReaderData *eReader)
{
- u8 var0 = 0;
- arg0->unk0 = EReaderHandleTransfer(1, arg0->unk4, arg0->unk8, NULL);
- if ((arg0->unk0 & 0x13) == 0x10)
- var0 = 1;
+ u8 transferStatus = TRANSFER_ACTIVE;
+ eReader->status = EReaderHandleTransfer(TRUE, eReader->size, eReader->data, NULL);
- if (arg0->unk0 & 0x8)
- var0 = 2;
+ if ((eReader->status & EREADER_XFER_MASK) == 0 && eReader->status & EREADER_CHECKSUM_OK_MASK)
+ transferStatus = TRANSFER_SUCCESS;
- if (arg0->unk0 & 0x4)
- var0 = 3;
+ if (eReader->status & EREADER_CANCEL_KEY_MASK)
+ transferStatus = TRANSFER_CANCELED;
+
+ if (eReader->status & EREADER_CANCEL_TIMEOUT_MASK)
+ transferStatus = TRANSFER_TIMEOUT;
gShouldAdvanceLinkState = 0;
- return var0;
+ return transferStatus;
}
static void OpenEReaderLink(void)
@@ -93,17 +103,20 @@ static void OpenEReaderLink(void)
SetSuppressLinkErrorMessage(TRUE);
}
-static bool32 sub_81D4E60(void)
+static bool32 ValidateEReaderConnection(void)
{
volatile u16 backupIME;
- u16 sp4[4];
+ u16 handshakes[MAX_LINK_PLAYERS];
backupIME = REG_IME;
REG_IME = 0;
- *(u64 *)sp4 = *(u64 *)gLink.tempRecvBuffer;
+ *(u64 *)handshakes = *(u64 *)gLink.handshakeBuffer;
REG_IME = backupIME;
- if (sp4[0] == 0xB9A0 && sp4[1] == 0xCCD0
- && sp4[2] == 0xFFFF && sp4[3] == 0xFFFF)
+
+ // Validate that we are player 1, the EReader is player 2,
+ // and that players 3 and 4 are empty.
+ if (handshakes[0] == SLAVE_HANDSHAKE && handshakes[1] == EREADER_HANDSHAKE
+ && handshakes[2] == 0xFFFF && handshakes[3] == 0xFFFF)
{
return TRUE;
}
@@ -111,7 +124,7 @@ static bool32 sub_81D4E60(void)
return FALSE;
}
-static bool32 sub_81D4EC0(void)
+static bool32 IsChildConnected(void)
{
if (IsLinkMaster() && GetLinkPlayerCount_2() == 2)
return TRUE;
@@ -119,56 +132,77 @@ static bool32 sub_81D4EC0(void)
return FALSE;
}
-static u32 sub_81D4EE4(u8 *arg0, u16 *arg1)
-{
- u8 var0;
+// States for TryReceiveCard
+enum {
+ RECV_STATE_INIT,
+ RECV_STATE_WAIT_START,
+ RECV_STATE_START,
+ RECV_STATE_EXCHANGE,
+ RECV_STATE_START_DISCONNECT,
+ RECV_STATE_WAIT_DISCONNECT,
+};
+
+// Return values for TryReceiveCard
+enum {
+ RECV_ACTIVE,
+ RECV_CANCELED,
+ RECV_SUCCESS,
+ RECV_ERROR,
+ RECV_DISCONNECTED,
+ RECV_TIMEOUT,
+};
- var0 = *arg0 - 3;
- if (var0 < 3 && HasLinkErrorOccurred())
+static u32 TryReceiveCard(u8 *state, u16 *timer)
+{
+ if (*state >= RECV_STATE_EXCHANGE
+ && *state <= RECV_STATE_WAIT_DISCONNECT
+ && HasLinkErrorOccurred())
{
- *arg0 = 0;
- return 3;
+ // Return error status if an error occurs
+ // during the link exchange.
+ *state = 0;
+ return RECV_ERROR;
}
- switch (*arg0)
+ switch (*state)
{
- case 0:
+ case RECV_STATE_INIT:
if (IsLinkMaster() && GetLinkPlayerCount_2() > 1)
{
- *arg0 = 1;
+ *state = RECV_STATE_WAIT_START;
}
else if (JOY_NEW(B_BUTTON))
{
- *arg0 = 0;
- return 1;
+ *state = 0;
+ return RECV_CANCELED;
}
break;
- case 1:
- if (++(*arg1) > 5)
+ case RECV_STATE_WAIT_START:
+ if (++(*timer) > 5)
{
- *arg1 = 0;
- *arg0 = 2;
+ *timer = 0;
+ *state = RECV_STATE_START;
}
break;
- case 2:
+ case RECV_STATE_START:
if (GetLinkPlayerCount_2() == 2)
{
PlaySE(SE_DING_DONG);
CheckShouldAdvanceLinkState();
- *arg1 = 0;
- *arg0 = 3;
+ *timer = 0;
+ *state = RECV_STATE_EXCHANGE;
}
else if (JOY_NEW(B_BUTTON))
{
- *arg0 = 0;
- return 1;
+ *state = 0;
+ return RECV_CANCELED;
}
break;
- case 3:
- if (++(*arg1) > 30)
+ case RECV_STATE_EXCHANGE:
+ if (++(*timer) > 30)
{
- *arg0 = 0;
- return 5;
+ *state = 0;
+ return RECV_TIMEOUT;
}
if (IsLinkConnectionEstablished())
@@ -177,36 +211,36 @@ static u32 sub_81D4EE4(u8 *arg0, u16 *arg1)
{
if (IsLinkPlayerDataExchangeComplete())
{
- *arg0 = 0;
- return 2;
+ *state = 0;
+ return RECV_SUCCESS;
}
else
{
- *arg0 = 4;
+ *state = RECV_STATE_START_DISCONNECT;
}
}
else
{
- *arg0 = 3;
+ *state = RECV_STATE_EXCHANGE;
}
}
break;
- case 4:
+ case RECV_STATE_START_DISCONNECT:
SetCloseLinkCallbackAndType(0);
- *arg0 = 5;
+ *state = RECV_STATE_WAIT_DISCONNECT;
break;
- case 5:
+ case RECV_STATE_WAIT_DISCONNECT:
if (!gReceivedRemoteLinkPlayers)
{
- *arg0 = 0;
- return 4;
+ *state = 0;
+ return RECV_DISCONNECTED;
}
break;
default:
- return 0;
+ return RECV_ACTIVE;
}
- return 0;
+ return RECV_ACTIVE;
}
void CreateEReaderTask(void)
@@ -214,248 +248,283 @@ void CreateEReaderTask(void)
struct EReaderTaskData *data;
u8 taskId = CreateTask(Task_EReader, 0);
data = (struct EReaderTaskData *)gTasks[taskId].data;
- data->unk8 = 0;
- data->unk9 = 0;
- data->unkA = 0;
- data->unkB = 0;
- data->unkC = 0;
- data->unkD = 0;
- data->unk0 = 0;
- data->unk2 = 0;
- data->unk4 = 0;
- data->unk6 = 0;
- data->unkE = 0;
- data->unk10 = AllocZeroed(0x40);
+ data->state = 0;
+ data->textState = 0;
+ data->unused4 = 0;
+ data->unused5 = 0;
+ data->unused6 = 0;
+ data->unused7 = 0;
+ data->timer = 0;
+ data->unused1 = 0;
+ data->unused2 = 0;
+ data->unused3 = 0;
+ data->status = 0;
+ data->unusedBuffer = AllocZeroed(0x40);
}
-static void sub_81D505C(u16 *arg0)
+static void ResetTimer(u16 *timer)
{
- *arg0 = 0;
+ *timer = 0;
}
-static bool32 sub_81D5064(u16 *arg0, u16 arg1)
+static bool32 UpdateTimer(u16 *timer, u16 time)
{
- if (++(*arg0) > arg1)
+ if (++(*timer) > time)
{
- *arg0 = 0;
+ // Timer has finished
+ *timer = 0;
return TRUE;
}
return FALSE;
}
+// States for Task_EReader
+enum {
+ ER_STATE_START,
+ ER_STATE_INIT_LINK,
+ ER_STATE_INIT_LINK_WAIT,
+ ER_STATE_INIT_LINK_CHECK,
+ ER_STATE_MSG_SELECT_CONNECT,
+ ER_STATE_MSG_SELECT_CONNECT_WAIT,
+ ER_STATE_TRY_LINK,
+ ER_STATE_INCORRECT_LINK,
+ ER_STATE_CONNECTING,
+ ER_STATE_TRANSFER,
+ ER_STATE_TRANSFER_END,
+ ER_STATE_TRANSFER_SUCCESS,
+ ER_STATE_LOAD_CARD_START,
+ ER_STATE_LOAD_CARD,
+ ER_STATE_WAIT_RECV_CARD,
+ ER_STATE_VALIDATE_CARD,
+ ER_STATE_WAIT_DISCONNECT,
+ ER_STATE_SAVE,
+ ER_STATE_SUCCESS_MSG,
+ ER_STATE_SUCCESS_END,
+ ER_STATE_LINK_ERROR,
+ ER_STATE_LINK_ERROR_TRY_AGAIN,
+ ER_STATE_SAVE_FAILED,
+ ER_STATE_CANCELED_CARD_READ,
+ ER_STATE_UNUSED_1,
+ ER_STATE_UNUSED_2,
+ ER_STATE_END,
+};
+
static void Task_EReader(u8 taskId)
{
struct EReaderTaskData *data = (struct EReaderTaskData *)gTasks[taskId].data;
- switch (data->unk8)
+ switch (data->state)
{
- case 0:
- if (PrintMysteryGiftMenuMessage(&data->unk9, gJPText_ReceiveMysteryGiftWithEReader))
- data->unk8 = 1;
+ case ER_STATE_START:
+ if (PrintMysteryGiftMenuMessage(&data->textState, gJPText_ReceiveMysteryGiftWithEReader))
+ data->state = ER_STATE_INIT_LINK;
break;
- case 1:
+ case ER_STATE_INIT_LINK:
OpenEReaderLink();
- sub_81D505C(&data->unk0);
- data->unk8 = 2;
+ ResetTimer(&data->timer);
+ data->state = ER_STATE_INIT_LINK_WAIT;
break;
- case 2:
- if (sub_81D5064(&data->unk0, 10))
- data->unk8 = 3;
+ case ER_STATE_INIT_LINK_WAIT:
+ if (UpdateTimer(&data->timer, 10))
+ data->state = ER_STATE_INIT_LINK_CHECK;
break;
- case 3:
- if (!sub_81D4EC0())
+ case ER_STATE_INIT_LINK_CHECK:
+ if (!IsChildConnected())
{
CloseLink();
- data->unk8 = 4;
+ data->state = ER_STATE_MSG_SELECT_CONNECT;
}
else
{
- data->unk8 = 13;
+ data->state = ER_STATE_LOAD_CARD;
}
break;
- case 4:
- if (PrintMysteryGiftMenuMessage(&data->unk9, gJPText_SelectConnectFromEReaderMenu))
+ case ER_STATE_MSG_SELECT_CONNECT:
+ if (PrintMysteryGiftMenuMessage(&data->textState, gJPText_SelectConnectFromEReaderMenu))
{
AddTextPrinterToWindow1(gJPText_SelectConnectWithGBA);
- sub_81D505C(&data->unk0);
- data->unk8 = 5;
+ ResetTimer(&data->timer);
+ data->state = ER_STATE_MSG_SELECT_CONNECT_WAIT;
}
break;
- case 5:
- if (sub_81D5064(&data->unk0, 90))
+ case ER_STATE_MSG_SELECT_CONNECT_WAIT:
+ if (UpdateTimer(&data->timer, 90))
{
OpenEReaderLink();
- data->unk8 = 6;
+ data->state = ER_STATE_TRY_LINK;
}
else if (JOY_NEW(B_BUTTON))
{
- sub_81D505C(&data->unk0);
+ ResetTimer(&data->timer);
PlaySE(SE_SELECT);
- data->unk8 = 23;
+ data->state = ER_STATE_CANCELED_CARD_READ;
}
break;
- case 6:
+ case ER_STATE_TRY_LINK:
if (JOY_NEW(B_BUTTON))
{
+ // Canceled
PlaySE(SE_SELECT);
CloseLink();
- sub_81D505C(&data->unk0);
- data->unk8 = 23;
+ ResetTimer(&data->timer);
+ data->state = ER_STATE_CANCELED_CARD_READ;
}
else if (GetLinkPlayerCount_2() > 1)
{
- sub_81D505C(&data->unk0);
+ ResetTimer(&data->timer);
CloseLink();
- data->unk8 = 7;
+ data->state = ER_STATE_INCORRECT_LINK;
}
- else if (sub_81D4E60())
+ else if (ValidateEReaderConnection())
{
+ // Successful connection
PlaySE(SE_SELECT);
CloseLink();
- sub_81D505C(&data->unk0);
- data->unk8 = 8;
+ ResetTimer(&data->timer);
+ data->state = ER_STATE_CONNECTING;
}
- else if (sub_81D5064(&data->unk0, 10))
+ else if (UpdateTimer(&data->timer, 10))
{
+ // Retry connection
CloseLink();
OpenEReaderLink();
- sub_81D505C(&data->unk0);
+ ResetTimer(&data->timer);
}
break;
- case 7:
- if (PrintMysteryGiftMenuMessage(&data->unk9, gJPText_LinkIsIncorrect))
- data->unk8 = 4;
+ case ER_STATE_INCORRECT_LINK:
+ if (PrintMysteryGiftMenuMessage(&data->textState, gJPText_LinkIsIncorrect))
+ data->state = ER_STATE_MSG_SELECT_CONNECT;
break;
- case 8:
+ case ER_STATE_CONNECTING:
AddTextPrinterToWindow1(gJPText_Connecting);
- // XXX: This (u32*) cast is discarding the const qualifier from gUnknown_089A3470
- sub_81D4D50(&gUnknown_03006370, gMultiBootProgram_BerryGlitchFix_Start - gUnknown_089A3470, (u32*)gUnknown_089A3470);
- data->unk8 = 9;
+ // XXX: This (u32*) cast is discarding the const qualifier from gEReaderLinkData_Start
+ EReader_Load(&gEReaderData, gEReaderLinkData_End - gEReaderLinkData_Start, (u32*)gEReaderLinkData_Start);
+ data->state = ER_STATE_TRANSFER;
break;
- case 9:
- data->unkE = sub_81D4DE8(&gUnknown_03006370);
- if (data->unkE)
- data->unk8 = 10;
+ case ER_STATE_TRANSFER:
+ data->status = EReader_Transfer(&gEReaderData);
+ if (data->status != TRANSFER_ACTIVE)
+ data->state = ER_STATE_TRANSFER_END;
break;
- case 10:
- sub_81D4DB8(&gUnknown_03006370);
- if (data->unkE == 3)
+ case ER_STATE_TRANSFER_END:
+ EReader_Reset(&gEReaderData);
+ if (data->status == TRANSFER_TIMEOUT)
{
- data->unk8 = 20;
+ data->state = ER_STATE_LINK_ERROR;
}
- else if (data->unkE == 1)
+ else if (data->status == TRANSFER_SUCCESS)
{
- sub_81D505C(&data->unk0);
+ ResetTimer(&data->timer);
AddTextPrinterToWindow1(gJPText_PleaseWaitAMoment);
- data->unk8 = 11;
+ data->state = ER_STATE_TRANSFER_SUCCESS;
}
- else
+ else // TRANSFER_CANCELED
{
- data->unk8 = 0;
+ data->state = ER_STATE_START;
}
break;
- case 11:
- if (sub_81D5064(&data->unk0, 840))
- data->unk8 = 12;
+ case ER_STATE_TRANSFER_SUCCESS:
+ if (UpdateTimer(&data->timer, 840))
+ data->state = ER_STATE_LOAD_CARD_START;
break;
- case 12:
+ case ER_STATE_LOAD_CARD_START:
OpenEReaderLink();
AddTextPrinterToWindow1(gJPText_AllowEReaderToLoadCard);
- data->unk8 = 13;
+ data->state = ER_STATE_LOAD_CARD;
break;
- case 13:
- switch (sub_81D4EE4(&data->unk9, &data->unk0))
+ case ER_STATE_LOAD_CARD:
+ switch (TryReceiveCard(&data->textState, &data->timer))
{
- case 0:
- break;
- case 2:
- AddTextPrinterToWindow1(gJPText_Connecting);
- data->unk8 = 14;
- break;
- case 1:
- PlaySE(SE_SELECT);
- CloseLink();
- data->unk8 = 23;
- break;
- case 5:
- CloseLink();
- data->unk8 = 21;
- break;
- case 3:
- case 4:
- CloseLink();
- data->unk8 = 20;
- break;
+ case RECV_ACTIVE:
+ break;
+ case RECV_SUCCESS:
+ AddTextPrinterToWindow1(gJPText_Connecting);
+ data->state = ER_STATE_WAIT_RECV_CARD;
+ break;
+ case RECV_CANCELED:
+ PlaySE(SE_SELECT);
+ CloseLink();
+ data->state = ER_STATE_CANCELED_CARD_READ;
+ break;
+ case RECV_TIMEOUT:
+ CloseLink();
+ data->state = ER_STATE_LINK_ERROR_TRY_AGAIN;
+ break;
+ case RECV_ERROR:
+ case RECV_DISCONNECTED:
+ CloseLink();
+ data->state = ER_STATE_LINK_ERROR;
+ break;
}
break;
- case 14:
+ case ER_STATE_WAIT_RECV_CARD:
if (HasLinkErrorOccurred())
{
CloseLink();
- data->unk8 = 20;
+ data->state = ER_STATE_LINK_ERROR;
}
else if (GetBlockReceivedStatus())
{
ResetBlockReceivedFlags();
- data->unk8 = 15;
+ data->state = ER_STATE_VALIDATE_CARD;
}
break;
- case 15:
- data->unkE = ValidateTrainerHillData((struct EReaderTrainerHillSet *)gDecompressionBuffer);
- SetCloseLinkCallbackAndType(data->unkE);
- data->unk8 = 16;
+ case ER_STATE_VALIDATE_CARD:
+ data->status = ValidateTrainerHillData((struct EReaderTrainerHillSet *)gDecompressionBuffer);
+ SetCloseLinkCallbackAndType(data->status);
+ data->state = ER_STATE_WAIT_DISCONNECT;
break;
- case 16:
+ case ER_STATE_WAIT_DISCONNECT:
if (!gReceivedRemoteLinkPlayers)
{
- if (data->unkE == 1)
- data->unk8 = 17;
+ if (data->status == TRUE) // Was data valid?
+ data->state = ER_STATE_SAVE;
else
- data->unk8 = 20;
+ data->state = ER_STATE_LINK_ERROR;
}
break;
- case 17:
+ case ER_STATE_SAVE:
if (TryWriteTrainerHill((struct EReaderTrainerHillSet *)&gDecompressionBuffer))
{
AddTextPrinterToWindow1(gJPText_ConnectionComplete);
- sub_81D505C(&data->unk0);
- data->unk8 = 18;
+ ResetTimer(&data->timer);
+ data->state = ER_STATE_SUCCESS_MSG;
}
else
{
- data->unk8 = 22;
+ data->state = ER_STATE_SAVE_FAILED;
}
break;
- case 18:
- if (sub_81D5064(&data->unk0, 120))
+ case ER_STATE_SUCCESS_MSG:
+ if (UpdateTimer(&data->timer, 120))
{
AddTextPrinterToWindow1(gJPText_NewTrainerHasComeToHoenn);
PlayFanfare(MUS_OBTAIN_ITEM);
- data->unk8 = 19;
+ data->state = ER_STATE_SUCCESS_END;
}
break;
- case 19:
+ case ER_STATE_SUCCESS_END:
if (IsFanfareTaskInactive() && (JOY_NEW(A_BUTTON | B_BUTTON)))
- data->unk8 = 26;
+ data->state = ER_STATE_END;
break;
- case 23:
- if (PrintMysteryGiftMenuMessage(&data->unk9, gJPText_CardReadingHasBeenHalted))
- data->unk8 = 26;
+ case ER_STATE_CANCELED_CARD_READ:
+ if (PrintMysteryGiftMenuMessage(&data->textState, gJPText_CardReadingHasBeenHalted))
+ data->state = ER_STATE_END;
break;
- case 20:
- if (PrintMysteryGiftMenuMessage(&data->unk9, gJPText_ConnectionErrorCheckLink))
- data->unk8 = 0;
+ case ER_STATE_LINK_ERROR:
+ if (PrintMysteryGiftMenuMessage(&data->textState, gJPText_ConnectionErrorCheckLink))
+ data->state = ER_STATE_START;
break;
- case 21:
- if (PrintMysteryGiftMenuMessage(&data->unk9, gJPText_ConnectionErrorTryAgain))
- data->unk8 = 0;
+ case ER_STATE_LINK_ERROR_TRY_AGAIN:
+ if (PrintMysteryGiftMenuMessage(&data->textState, gJPText_ConnectionErrorTryAgain))
+ data->state = ER_STATE_START;
break;
- case 22:
- if (PrintMysteryGiftMenuMessage(&data->unk9, gJPText_WriteErrorUnableToSaveData))
- data->unk8 = 0;
+ case ER_STATE_SAVE_FAILED:
+ if (PrintMysteryGiftMenuMessage(&data->textState, gJPText_WriteErrorUnableToSaveData))
+ data->state = ER_STATE_START;
break;
- case 26:
- Free(data->unk10);
+ case ER_STATE_END:
+ Free(data->unusedBuffer);
DestroyTask(taskId);
SetMainCallback2(MainCB_FreeAllBuffersAndReturnToInitTitleScreen);
break;
diff --git a/src/event_object_lock.c b/src/event_object_lock.c
index 179c72813..29575111f 100644
--- a/src/event_object_lock.c
+++ b/src/event_object_lock.c
@@ -34,7 +34,7 @@ bool8 IsFreezePlayerFinished(void)
}
else
{
- sub_808BCF4();
+ StopPlayerAvatar();
return TRUE;
}
}
@@ -77,7 +77,7 @@ bool8 IsFreezeSelectedObjectAndPlayerFinished(void)
}
else
{
- sub_808BCF4();
+ StopPlayerAvatar();
return TRUE;
}
}
@@ -198,7 +198,7 @@ bool8 IsFreezeObjectAndPlayerFinished(void)
}
else
{
- sub_808BCF4();
+ StopPlayerAvatar();
return TRUE;
}
}
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 2f7cb9e7a..593200893 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -32,6 +32,14 @@
// this file was known as evobjmv.c in Game Freak's original source
+enum {
+ MOVE_SPEED_NORMAL, // walking
+ MOVE_SPEED_FAST_1, // running / surfing / sliding (ice tile)
+ MOVE_SPEED_FAST_2, // water current / acro bike
+ MOVE_SPEED_FASTER, // mach bike's max speed
+ MOVE_SPEED_FASTEST,
+};
+
// Sprite data used throughout
#define sObjEventId data[0]
#define sTypeFuncId data[1] // Index into corresponding gMovementTypeFuncs_* table
@@ -703,169 +711,169 @@ static const s16 sMovementDelaysShort[] = {32, 48, 64, 80};
#include "data/object_events/movement_type_func_tables.h"
static const u8 sFaceDirectionAnimNums[] = {
- [DIR_NONE] = 0,
- [DIR_SOUTH] = 0,
- [DIR_NORTH] = 1,
- [DIR_WEST] = 2,
- [DIR_EAST] = 3,
- [DIR_SOUTHWEST] = 0,
- [DIR_SOUTHEAST] = 0,
- [DIR_NORTHWEST] = 1,
- [DIR_NORTHEAST] = 1,
+ [DIR_NONE] = ANIM_STD_FACE_SOUTH,
+ [DIR_SOUTH] = ANIM_STD_FACE_SOUTH,
+ [DIR_NORTH] = ANIM_STD_FACE_NORTH,
+ [DIR_WEST] = ANIM_STD_FACE_WEST,
+ [DIR_EAST] = ANIM_STD_FACE_EAST,
+ [DIR_SOUTHWEST] = ANIM_STD_FACE_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_STD_FACE_SOUTH,
+ [DIR_NORTHWEST] = ANIM_STD_FACE_NORTH,
+ [DIR_NORTHEAST] = ANIM_STD_FACE_NORTH,
};
static const u8 sMoveDirectionAnimNums[] = {
- [DIR_NONE] = 4,
- [DIR_SOUTH] = 4,
- [DIR_NORTH] = 5,
- [DIR_WEST] = 6,
- [DIR_EAST] = 7,
- [DIR_SOUTHWEST] = 4,
- [DIR_SOUTHEAST] = 4,
- [DIR_NORTHWEST] = 5,
- [DIR_NORTHEAST] = 5,
+ [DIR_NONE] = ANIM_STD_GO_SOUTH,
+ [DIR_SOUTH] = ANIM_STD_GO_SOUTH,
+ [DIR_NORTH] = ANIM_STD_GO_NORTH,
+ [DIR_WEST] = ANIM_STD_GO_WEST,
+ [DIR_EAST] = ANIM_STD_GO_EAST,
+ [DIR_SOUTHWEST] = ANIM_STD_GO_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_STD_GO_SOUTH,
+ [DIR_NORTHWEST] = ANIM_STD_GO_NORTH,
+ [DIR_NORTHEAST] = ANIM_STD_GO_NORTH,
};
static const u8 sMoveDirectionFastAnimNums[] = {
- [DIR_NONE] = 8,
- [DIR_SOUTH] = 8,
- [DIR_NORTH] = 9,
- [DIR_WEST] = 10,
- [DIR_EAST] = 11,
- [DIR_SOUTHWEST] = 8,
- [DIR_SOUTHEAST] = 8,
- [DIR_NORTHWEST] = 9,
- [DIR_NORTHEAST] = 9,
+ [DIR_NONE] = ANIM_STD_GO_FAST_SOUTH,
+ [DIR_SOUTH] = ANIM_STD_GO_FAST_SOUTH,
+ [DIR_NORTH] = ANIM_STD_GO_FAST_NORTH,
+ [DIR_WEST] = ANIM_STD_GO_FAST_WEST,
+ [DIR_EAST] = ANIM_STD_GO_FAST_EAST,
+ [DIR_SOUTHWEST] = ANIM_STD_GO_FAST_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_STD_GO_FAST_SOUTH,
+ [DIR_NORTHWEST] = ANIM_STD_GO_FAST_NORTH,
+ [DIR_NORTHEAST] = ANIM_STD_GO_FAST_NORTH,
};
static const u8 sMoveDirectionFasterAnimNums[] = {
- [DIR_NONE] = 12,
- [DIR_SOUTH] = 12,
- [DIR_NORTH] = 13,
- [DIR_WEST] = 14,
- [DIR_EAST] = 15,
- [DIR_SOUTHWEST] = 12,
- [DIR_SOUTHEAST] = 12,
- [DIR_NORTHWEST] = 13,
- [DIR_NORTHEAST] = 13,
+ [DIR_NONE] = ANIM_STD_GO_FASTER_SOUTH,
+ [DIR_SOUTH] = ANIM_STD_GO_FASTER_SOUTH,
+ [DIR_NORTH] = ANIM_STD_GO_FASTER_NORTH,
+ [DIR_WEST] = ANIM_STD_GO_FASTER_WEST,
+ [DIR_EAST] = ANIM_STD_GO_FASTER_EAST,
+ [DIR_SOUTHWEST] = ANIM_STD_GO_FASTER_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_STD_GO_FASTER_SOUTH,
+ [DIR_NORTHWEST] = ANIM_STD_GO_FASTER_NORTH,
+ [DIR_NORTHEAST] = ANIM_STD_GO_FASTER_NORTH,
};
static const u8 sMoveDirectionFastestAnimNums[] = {
- [DIR_NONE] = 16,
- [DIR_SOUTH] = 16,
- [DIR_NORTH] = 17,
- [DIR_WEST] = 18,
- [DIR_EAST] = 19,
- [DIR_SOUTHWEST] = 16,
- [DIR_SOUTHEAST] = 16,
- [DIR_NORTHWEST] = 17,
- [DIR_NORTHEAST] = 17,
+ [DIR_NONE] = ANIM_STD_GO_FASTEST_SOUTH,
+ [DIR_SOUTH] = ANIM_STD_GO_FASTEST_SOUTH,
+ [DIR_NORTH] = ANIM_STD_GO_FASTEST_NORTH,
+ [DIR_WEST] = ANIM_STD_GO_FASTEST_WEST,
+ [DIR_EAST] = ANIM_STD_GO_FASTEST_EAST,
+ [DIR_SOUTHWEST] = ANIM_STD_GO_FASTEST_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_STD_GO_FASTEST_SOUTH,
+ [DIR_NORTHWEST] = ANIM_STD_GO_FASTEST_NORTH,
+ [DIR_NORTHEAST] = ANIM_STD_GO_FASTEST_NORTH,
};
static const u8 sJumpSpecialDirectionAnimNums[] = { // used for jumping onto surf mon
- [DIR_NONE] = 20,
- [DIR_SOUTH] = 20,
- [DIR_NORTH] = 21,
- [DIR_WEST] = 22,
- [DIR_EAST] = 23,
- [DIR_SOUTHWEST] = 20,
- [DIR_SOUTHEAST] = 20,
- [DIR_NORTHWEST] = 21,
- [DIR_NORTHEAST] = 21,
+ [DIR_NONE] = ANIM_GET_ON_OFF_POKEMON_SOUTH,
+ [DIR_SOUTH] = ANIM_GET_ON_OFF_POKEMON_SOUTH,
+ [DIR_NORTH] = ANIM_GET_ON_OFF_POKEMON_NORTH,
+ [DIR_WEST] = ANIM_GET_ON_OFF_POKEMON_WEST,
+ [DIR_EAST] = ANIM_GET_ON_OFF_POKEMON_EAST,
+ [DIR_SOUTHWEST] = ANIM_GET_ON_OFF_POKEMON_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_GET_ON_OFF_POKEMON_SOUTH,
+ [DIR_NORTHWEST] = ANIM_GET_ON_OFF_POKEMON_NORTH,
+ [DIR_NORTHEAST] = ANIM_GET_ON_OFF_POKEMON_NORTH,
};
static const u8 sAcroWheelieDirectionAnimNums[] = {
- [DIR_NONE] = 20,
- [DIR_SOUTH] = 20,
- [DIR_NORTH] = 21,
- [DIR_WEST] = 22,
- [DIR_EAST] = 23,
- [DIR_SOUTHWEST] = 20,
- [DIR_SOUTHEAST] = 20,
- [DIR_NORTHWEST] = 21,
- [DIR_NORTHEAST] = 21,
+ [DIR_NONE] = ANIM_BUNNY_HOPPY_BACK_WHEEL_SOUTH,
+ [DIR_SOUTH] = ANIM_BUNNY_HOPPY_BACK_WHEEL_SOUTH,
+ [DIR_NORTH] = ANIM_BUNNY_HOPPY_BACK_WHEEL_NORTH,
+ [DIR_WEST] = ANIM_BUNNY_HOPPY_BACK_WHEEL_WEST,
+ [DIR_EAST] = ANIM_BUNNY_HOPPY_BACK_WHEEL_EAST,
+ [DIR_SOUTHWEST] = ANIM_BUNNY_HOPPY_BACK_WHEEL_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_BUNNY_HOPPY_BACK_WHEEL_SOUTH,
+ [DIR_NORTHWEST] = ANIM_BUNNY_HOPPY_BACK_WHEEL_NORTH,
+ [DIR_NORTHEAST] = ANIM_BUNNY_HOPPY_BACK_WHEEL_NORTH,
};
static const u8 sAcroUnusedDirectionAnimNums[] = {
- [DIR_NONE] = 24,
- [DIR_SOUTH] = 24,
- [DIR_NORTH] = 25,
- [DIR_WEST] = 26,
- [DIR_EAST] = 27,
- [DIR_SOUTHWEST] = 24,
- [DIR_SOUTHEAST] = 24,
- [DIR_NORTHWEST] = 25,
- [DIR_NORTHEAST] = 25,
+ [DIR_NONE] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_SOUTH,
+ [DIR_SOUTH] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_SOUTH,
+ [DIR_NORTH] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_NORTH,
+ [DIR_WEST] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_WEST,
+ [DIR_EAST] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_EAST,
+ [DIR_SOUTHWEST] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_SOUTH,
+ [DIR_NORTHWEST] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_NORTH,
+ [DIR_NORTHEAST] = ANIM_BUNNY_HOPPY_FRONT_WHEEL_NORTH,
};
static const u8 sAcroEndWheelieDirectionAnimNums[] = {
- [DIR_NONE] = 28,
- [DIR_SOUTH] = 28,
- [DIR_NORTH] = 29,
- [DIR_WEST] = 30,
- [DIR_EAST] = 31,
- [DIR_SOUTHWEST] = 28,
- [DIR_SOUTHEAST] = 28,
- [DIR_NORTHWEST] = 29,
- [DIR_NORTHEAST] = 29,
+ [DIR_NONE] = ANIM_STANDING_WHEELIE_BACK_WHEEL_SOUTH,
+ [DIR_SOUTH] = ANIM_STANDING_WHEELIE_BACK_WHEEL_SOUTH,
+ [DIR_NORTH] = ANIM_STANDING_WHEELIE_BACK_WHEEL_NORTH,
+ [DIR_WEST] = ANIM_STANDING_WHEELIE_BACK_WHEEL_WEST,
+ [DIR_EAST] = ANIM_STANDING_WHEELIE_BACK_WHEEL_EAST,
+ [DIR_SOUTHWEST] = ANIM_STANDING_WHEELIE_BACK_WHEEL_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_STANDING_WHEELIE_BACK_WHEEL_SOUTH,
+ [DIR_NORTHWEST] = ANIM_STANDING_WHEELIE_BACK_WHEEL_NORTH,
+ [DIR_NORTHEAST] = ANIM_STANDING_WHEELIE_BACK_WHEEL_NORTH,
};
static const u8 sAcroUnusedActionDirectionAnimNums[] = {
- [DIR_NONE] = 32,
- [DIR_SOUTH] = 32,
- [DIR_NORTH] = 33,
- [DIR_WEST] = 34,
- [DIR_EAST] = 35,
- [DIR_SOUTHWEST] = 32,
- [DIR_SOUTHEAST] = 32,
- [DIR_NORTHWEST] = 33,
- [DIR_NORTHEAST] = 33,
+ [DIR_NONE] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_SOUTH,
+ [DIR_SOUTH] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_SOUTH,
+ [DIR_NORTH] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_NORTH,
+ [DIR_WEST] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_WEST,
+ [DIR_EAST] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_EAST,
+ [DIR_SOUTHWEST] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_SOUTH,
+ [DIR_NORTHWEST] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_NORTH,
+ [DIR_NORTHEAST] = ANIM_STANDING_WHEELIE_FRONT_WHEEL_NORTH,
};
static const u8 sAcroWheeliePedalDirectionAnimNums[] = {
- [DIR_NONE] = 36,
- [DIR_SOUTH] = 36,
- [DIR_NORTH] = 37,
- [DIR_WEST] = 38,
- [DIR_EAST] = 39,
- [DIR_SOUTHWEST] = 36,
- [DIR_SOUTHEAST] = 36,
- [DIR_NORTHWEST] = 37,
- [DIR_NORTHEAST] = 37,
+ [DIR_NONE] = ANIM_MOVING_WHEELIE_SOUTH,
+ [DIR_SOUTH] = ANIM_MOVING_WHEELIE_SOUTH,
+ [DIR_NORTH] = ANIM_MOVING_WHEELIE_NORTH,
+ [DIR_WEST] = ANIM_MOVING_WHEELIE_WEST,
+ [DIR_EAST] = ANIM_MOVING_WHEELIE_EAST,
+ [DIR_SOUTHWEST] = ANIM_MOVING_WHEELIE_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_MOVING_WHEELIE_SOUTH,
+ [DIR_NORTHWEST] = ANIM_MOVING_WHEELIE_NORTH,
+ [DIR_NORTHEAST] = ANIM_MOVING_WHEELIE_NORTH,
};
static const u8 sFishingDirectionAnimNums[] = {
- [DIR_NONE] = 0,
- [DIR_SOUTH] = 0,
- [DIR_NORTH] = 1,
- [DIR_WEST] = 2,
- [DIR_EAST] = 3,
- [DIR_SOUTHWEST] = 0,
- [DIR_SOUTHEAST] = 0,
- [DIR_NORTHWEST] = 1,
- [DIR_NORTHEAST] = 1,
+ [DIR_NONE] = ANIM_TAKE_OUT_ROD_SOUTH,
+ [DIR_SOUTH] = ANIM_TAKE_OUT_ROD_SOUTH,
+ [DIR_NORTH] = ANIM_TAKE_OUT_ROD_NORTH,
+ [DIR_WEST] = ANIM_TAKE_OUT_ROD_WEST,
+ [DIR_EAST] = ANIM_TAKE_OUT_ROD_EAST,
+ [DIR_SOUTHWEST] = ANIM_TAKE_OUT_ROD_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_TAKE_OUT_ROD_SOUTH,
+ [DIR_NORTHWEST] = ANIM_TAKE_OUT_ROD_NORTH,
+ [DIR_NORTHEAST] = ANIM_TAKE_OUT_ROD_NORTH,
};
static const u8 sFishingNoCatchDirectionAnimNums[] = {
- [DIR_NONE] = 4,
- [DIR_SOUTH] = 4,
- [DIR_NORTH] = 5,
- [DIR_WEST] = 6,
- [DIR_EAST] = 7,
- [DIR_SOUTHWEST] = 4,
- [DIR_SOUTHEAST] = 4,
- [DIR_NORTHWEST] = 5,
- [DIR_NORTHEAST] = 5,
+ [DIR_NONE] = ANIM_PUT_AWAY_ROD_SOUTH,
+ [DIR_SOUTH] = ANIM_PUT_AWAY_ROD_SOUTH,
+ [DIR_NORTH] = ANIM_PUT_AWAY_ROD_NORTH,
+ [DIR_WEST] = ANIM_PUT_AWAY_ROD_WEST,
+ [DIR_EAST] = ANIM_PUT_AWAY_ROD_EAST,
+ [DIR_SOUTHWEST] = ANIM_PUT_AWAY_ROD_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_PUT_AWAY_ROD_SOUTH,
+ [DIR_NORTHWEST] = ANIM_PUT_AWAY_ROD_NORTH,
+ [DIR_NORTHEAST] = ANIM_PUT_AWAY_ROD_NORTH,
};
static const u8 sFishingBiteDirectionAnimNums[] = {
- [DIR_NONE] = 8,
- [DIR_SOUTH] = 8,
- [DIR_NORTH] = 9,
- [DIR_WEST] = 10,
- [DIR_EAST] = 11,
- [DIR_SOUTHWEST] = 8,
- [DIR_SOUTHEAST] = 8,
- [DIR_NORTHWEST] = 9,
- [DIR_NORTHEAST] = 9,
+ [DIR_NONE] = ANIM_HOOKED_POKEMON_SOUTH,
+ [DIR_SOUTH] = ANIM_HOOKED_POKEMON_SOUTH,
+ [DIR_NORTH] = ANIM_HOOKED_POKEMON_NORTH,
+ [DIR_WEST] = ANIM_HOOKED_POKEMON_WEST,
+ [DIR_EAST] = ANIM_HOOKED_POKEMON_EAST,
+ [DIR_SOUTHWEST] = ANIM_HOOKED_POKEMON_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_HOOKED_POKEMON_SOUTH,
+ [DIR_NORTHWEST] = ANIM_HOOKED_POKEMON_NORTH,
+ [DIR_NORTHEAST] = ANIM_HOOKED_POKEMON_NORTH,
};
static const u8 sRunningDirectionAnimNums[] = {
- [DIR_NONE] = 20,
- [DIR_SOUTH] = 20,
- [DIR_NORTH] = 21,
- [DIR_WEST] = 22,
- [DIR_EAST] = 23,
- [DIR_SOUTHWEST] = 20,
- [DIR_SOUTHEAST] = 20,
- [DIR_NORTHWEST] = 21,
- [DIR_NORTHEAST] = 21,
+ [DIR_NONE] = ANIM_RUN_SOUTH,
+ [DIR_SOUTH] = ANIM_RUN_SOUTH,
+ [DIR_NORTH] = ANIM_RUN_NORTH,
+ [DIR_WEST] = ANIM_RUN_WEST,
+ [DIR_EAST] = ANIM_RUN_EAST,
+ [DIR_SOUTHWEST] = ANIM_RUN_SOUTH,
+ [DIR_SOUTHEAST] = ANIM_RUN_SOUTH,
+ [DIR_NORTHWEST] = ANIM_RUN_NORTH,
+ [DIR_NORTHEAST] = ANIM_RUN_NORTH,
};
const u8 gTrainerFacingDirectionMovementTypes[] = {
@@ -941,12 +949,12 @@ const u8 gRideWaterCurrentMovementActions[] = {
MOVEMENT_ACTION_RIDE_WATER_CURRENT_LEFT,
MOVEMENT_ACTION_RIDE_WATER_CURRENT_RIGHT,
};
-const u8 gWalkFastestMovementActions[] = {
- MOVEMENT_ACTION_WALK_FASTEST_DOWN,
- MOVEMENT_ACTION_WALK_FASTEST_DOWN,
- MOVEMENT_ACTION_WALK_FASTEST_UP,
- MOVEMENT_ACTION_WALK_FASTEST_LEFT,
- MOVEMENT_ACTION_WALK_FASTEST_RIGHT,
+const u8 gWalkFasterMovementActions[] = {
+ MOVEMENT_ACTION_WALK_FASTER_DOWN,
+ MOVEMENT_ACTION_WALK_FASTER_DOWN,
+ MOVEMENT_ACTION_WALK_FASTER_UP,
+ MOVEMENT_ACTION_WALK_FASTER_LEFT,
+ MOVEMENT_ACTION_WALK_FASTER_RIGHT,
};
const u8 gSlideMovementActions[] = {
MOVEMENT_ACTION_SLIDE_DOWN,
@@ -1770,7 +1778,7 @@ static void SetPlayerAvatarObjectEventIdAndObjectId(u8 objectEventId, u8 spriteI
gPlayerAvatar.objectEventId = objectEventId;
gPlayerAvatar.spriteId = spriteId;
gPlayerAvatar.gender = GetPlayerAvatarGenderByGraphicsId(gObjectEvents[objectEventId].graphicsId);
- SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_5);
+ SetPlayerAvatarExtraStateTransition(gObjectEvents[objectEventId].graphicsId, PLAYER_AVATAR_FLAG_CONTROLLABLE);
}
void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
@@ -4314,7 +4322,7 @@ bool8 CopyablePlayerMovement_GoSpeed2(struct ObjectEvent *objectEvent, struct Sp
direction = playerDirection;
direction = state_to_direction(gInitialMovementTypeFacingDirections[objectEvent->movementType], objectEvent->directionSequenceIndex, direction);
ObjectEventMoveDestCoords(objectEvent, direction, &x, &y);
- ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFastestMovementAction(direction));
+ ObjectEventSetSingleMovement(objectEvent, sprite, GetWalkFasterMovementAction(direction));
if (GetCollisionAtCoords(objectEvent, x, y, direction) || (tileCallback != NULL && !tileCallback(MapGridGetMetatileBehaviorAt(x, y))))
{
ObjectEventSetSingleMovement(objectEvent, sprite, GetFaceDirectionMovementAction(direction));
@@ -5025,7 +5033,7 @@ dirn_to_anim(GetWalkSlowMovementAction, gWalkSlowMovementActions);
dirn_to_anim(GetWalkNormalMovementAction, gWalkNormalMovementActions);
dirn_to_anim(GetWalkFastMovementAction, gWalkFastMovementActions);
dirn_to_anim(GetRideWaterCurrentMovementAction, gRideWaterCurrentMovementActions);
-dirn_to_anim(GetWalkFastestMovementAction, gWalkFastestMovementActions);
+dirn_to_anim(GetWalkFasterMovementAction, gWalkFasterMovementActions);
dirn_to_anim(GetSlideMovementAction, gSlideMovementActions);
dirn_to_anim(GetPlayerRunMovementAction, gPlayerRunMovementActions);
dirn_to_anim(GetJump2MovementAction, gJump2MovementActions);
@@ -5176,7 +5184,7 @@ static void InitMovementNormal(struct ObjectEvent *objectEvent, struct Sprite *s
static void StartRunningAnim(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 direction)
{
- InitNpcForMovement(objectEvent, sprite, direction, 1);
+ InitNpcForMovement(objectEvent, sprite, direction, MOVE_SPEED_FAST_1);
SetStepAnimHandleAlternation(objectEvent, sprite, GetRunningDirectionAnimNum(objectEvent->facingDirection));
}
@@ -5356,7 +5364,7 @@ bool8 MovementAction_WalkSlowRight_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkNormalDiagonalUpLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_NORTHWEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTHWEST, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalDiagonalUpLeft_Step1(objectEvent, sprite);
}
@@ -5372,7 +5380,7 @@ bool8 MovementAction_WalkNormalDiagonalUpLeft_Step1(struct ObjectEvent *objectEv
bool8 MovementAction_WalkNormalDiagonalUpRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_NORTHEAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTHEAST, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalDiagonalUpRight_Step1(objectEvent, sprite);
}
@@ -5388,7 +5396,7 @@ bool8 MovementAction_WalkNormalDiagonalUpRight_Step1(struct ObjectEvent *objectE
bool8 MovementAction_WalkNormalDiagonalDownLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_SOUTHWEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTHWEST, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalDiagonalDownLeft_Step1(objectEvent, sprite);
}
@@ -5404,7 +5412,7 @@ bool8 MovementAction_WalkNormalDiagonalDownLeft_Step1(struct ObjectEvent *object
bool8 MovementAction_WalkNormalDiagonalDownRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_SOUTHEAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTHEAST, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalDiagonalDownRight_Step1(objectEvent, sprite);
}
@@ -5420,7 +5428,7 @@ bool8 MovementAction_WalkNormalDiagonalDownRight_Step1(struct ObjectEvent *objec
bool8 MovementAction_WalkNormalDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalDown_Step1(objectEvent, sprite);
}
@@ -5436,7 +5444,7 @@ bool8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkNormalUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_NORTH, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalUp_Step1(objectEvent, sprite);
}
@@ -5452,7 +5460,7 @@ bool8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkNormalLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_WEST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalLeft_Step1(objectEvent, sprite);
}
@@ -5468,7 +5476,7 @@ bool8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkNormalRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_EAST, 0);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_NORMAL);
return MovementAction_WalkNormalRight_Step1(objectEvent, sprite);
}
@@ -5701,7 +5709,7 @@ bool8 MovementAction_Delay16_Step0(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_WalkFastDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_1);
return MovementAction_WalkFastDown_Step1(objectEvent, sprite);
}
@@ -5717,7 +5725,7 @@ bool8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_NORTH, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_1);
return MovementAction_WalkFastUp_Step1(objectEvent, sprite);
}
@@ -5733,7 +5741,7 @@ bool8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementAction_WalkFastLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_WEST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1);
return MovementAction_WalkFastLeft_Step1(objectEvent, sprite);
}
@@ -5749,7 +5757,7 @@ bool8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_WalkFastRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_EAST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1);
return MovementAction_WalkFastRight_Step1(objectEvent, sprite);
}
@@ -5891,7 +5899,7 @@ bool8 MovementAction_WalkInPlaceFastestRight_Step0(struct ObjectEvent *objectEve
bool8 MovementAction_RideWaterCurrentDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FAST_2);
return MovementAction_RideWaterCurrentDown_Step1(objectEvent, sprite);
}
@@ -5907,7 +5915,7 @@ bool8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_RideWaterCurrentUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_NORTH, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FAST_2);
return MovementAction_RideWaterCurrentUp_Step1(objectEvent, sprite);
}
@@ -5923,7 +5931,7 @@ bool8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *objectEvent, s
bool8 MovementAction_RideWaterCurrentLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_WEST, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_2);
return MovementAction_RideWaterCurrentLeft_Step1(objectEvent, sprite);
}
@@ -5939,7 +5947,7 @@ bool8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *objectEvent,
bool8 MovementAction_RideWaterCurrentRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_EAST, 2);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_2);
return MovementAction_RideWaterCurrentRight_Step1(objectEvent, sprite);
}
@@ -5953,13 +5961,13 @@ bool8 MovementAction_RideWaterCurrentRight_Step1(struct ObjectEvent *objectEvent
return FALSE;
}
-bool8 MovementAction_WalkFastestDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 3);
- return MovementAction_WalkFastestDown_Step1(objectEvent, sprite);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTER);
+ return MovementAction_WalkFasterDown_Step1(objectEvent, sprite);
}
-bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterDown_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (UpdateMovementNormal(objectEvent, sprite))
{
@@ -5969,13 +5977,13 @@ bool8 MovementAction_WalkFastestDown_Step1(struct ObjectEvent *objectEvent, stru
return FALSE;
}
-bool8 MovementAction_WalkFastestUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_NORTH, 3);
- return MovementAction_WalkFastestUp_Step1(objectEvent, sprite);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTER);
+ return MovementAction_WalkFasterUp_Step1(objectEvent, sprite);
}
-bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterUp_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (UpdateMovementNormal(objectEvent, sprite))
{
@@ -5985,13 +5993,13 @@ bool8 MovementAction_WalkFastestUp_Step1(struct ObjectEvent *objectEvent, struct
return FALSE;
}
-bool8 MovementAction_WalkFastestLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_WEST, 3);
- return MovementAction_WalkFastestLeft_Step1(objectEvent, sprite);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTER);
+ return MovementAction_WalkFasterLeft_Step1(objectEvent, sprite);
}
-bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterLeft_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (UpdateMovementNormal(objectEvent, sprite))
{
@@ -6001,13 +6009,13 @@ bool8 MovementAction_WalkFastestLeft_Step1(struct ObjectEvent *objectEvent, stru
return FALSE;
}
-bool8 MovementAction_WalkFastestRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_EAST, 3);
- return MovementAction_WalkFastestRight_Step1(objectEvent, sprite);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTER);
+ return MovementAction_WalkFasterRight_Step1(objectEvent, sprite);
}
-bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementAction_WalkFasterRight_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (UpdateMovementNormal(objectEvent, sprite))
{
@@ -6019,7 +6027,7 @@ bool8 MovementAction_WalkFastestRight_Step1(struct ObjectEvent *objectEvent, str
bool8 MovementAction_SlideDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_SOUTH, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_SOUTH, MOVE_SPEED_FASTEST);
return MovementAction_SlideDown_Step1(objectEvent, sprite);
}
@@ -6035,7 +6043,7 @@ bool8 MovementAction_SlideDown_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_SlideUp_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_NORTH, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_NORTH, MOVE_SPEED_FASTEST);
return MovementAction_SlideUp_Step1(objectEvent, sprite);
}
@@ -6051,7 +6059,7 @@ bool8 MovementAction_SlideUp_Step1(struct ObjectEvent *objectEvent, struct Sprit
bool8 MovementAction_SlideLeft_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_WEST, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FASTEST);
return MovementAction_SlideLeft_Step1(objectEvent, sprite);
}
@@ -6067,7 +6075,7 @@ bool8 MovementAction_SlideLeft_Step1(struct ObjectEvent *objectEvent, struct Spr
bool8 MovementAction_SlideRight_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_EAST, 4);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FASTEST);
return MovementAction_SlideRight_Step1(objectEvent, sprite);
}
@@ -6492,7 +6500,7 @@ bool8 MovementAction_FaceOriginalDirection_Step0(struct ObjectEvent *objectEvent
bool8 MovementAction_NurseJoyBowDown_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- StartSpriteAnimInDirection(objectEvent, sprite, DIR_SOUTH, 0x14);
+ StartSpriteAnimInDirection(objectEvent, sprite, DIR_SOUTH, ANIM_NURSE_BOW);
return FALSE;
}
@@ -6591,7 +6599,7 @@ bool8 MovementAction_RevealTrainer_Step1(struct ObjectEvent *objectEvent, struct
bool8 MovementAction_RockSmashBreak_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- SetAndStartSpriteAnim(sprite, 1, 0);
+ SetAndStartSpriteAnim(sprite, ANIM_REMOVE_OBSTACLE, 0);
sprite->sActionFuncId = 1;
return FALSE;
}
@@ -6619,7 +6627,7 @@ bool8 MovementAction_RockSmashBreak_Step2(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_CutTree_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- SetAndStartSpriteAnim(sprite, 1, 0);
+ SetAndStartSpriteAnim(sprite, ANIM_REMOVE_OBSTACLE, 0);
sprite->sActionFuncId = 1;
return FALSE;
}
@@ -6728,7 +6736,7 @@ bool8 MovementAction_WalkDownAffine_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkLeftAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_WEST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_WEST, MOVE_SPEED_FAST_1);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 2);
return MovementAction_WalkLeftAffine_Step1(objectEvent, sprite);
@@ -6747,7 +6755,7 @@ bool8 MovementAction_WalkLeftAffine_Step1(struct ObjectEvent *objectEvent, struc
bool8 MovementAction_WalkRightAffine_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- InitMovementNormal(objectEvent, sprite, DIR_EAST, 1);
+ InitMovementNormal(objectEvent, sprite, DIR_EAST, MOVE_SPEED_FAST_1);
sprite->affineAnimPaused = FALSE;
ChangeSpriteAffineAnimIfDifferent(sprite, 3);
return MovementAction_WalkRightAffine_Step1(objectEvent, sprite);
@@ -8341,15 +8349,19 @@ static const SpriteStepFunc sStep8Funcs[] = {
};
static const SpriteStepFunc *const sNpcStepFuncTables[] = {
- sStep1Funcs,
- sStep2Funcs,
- sStep3Funcs,
- sStep4Funcs,
- sStep8Funcs,
+ [MOVE_SPEED_NORMAL] = sStep1Funcs,
+ [MOVE_SPEED_FAST_1] = sStep2Funcs,
+ [MOVE_SPEED_FAST_2] = sStep3Funcs,
+ [MOVE_SPEED_FASTER] = sStep4Funcs,
+ [MOVE_SPEED_FASTEST] = sStep8Funcs,
};
static const s16 sStepTimes[] = {
- 16, 8, 6, 4, 2
+ [MOVE_SPEED_NORMAL] = 16,
+ [MOVE_SPEED_FAST_1] = 8,
+ [MOVE_SPEED_FAST_2] = 6,
+ [MOVE_SPEED_FASTER] = 4,
+ [MOVE_SPEED_FASTEST] = 2,
};
static bool8 NpcTakeStep(struct Sprite *sprite)
diff --git a/src/field_effect.c b/src/field_effect.c
index 88f8065d3..7e1ebdff4 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -3051,7 +3051,7 @@ static void SurfFieldEffect_End(struct Task *task)
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
{
gPlayerAvatar.preventStep = FALSE;
- gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_CONTROLLABLE;
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON);
UnfreezeObjectEvents();
@@ -3240,7 +3240,7 @@ static void FlyOutFieldEffect_JumpOnBird(struct Task *task)
{
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
- StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16);
+ StartSpriteAnim(&gSprites[objectEvent->spriteId], ANIM_GET_ON_OFF_POKEMON_WEST);
objectEvent->inanimate = TRUE;
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT);
if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
@@ -3478,7 +3478,7 @@ static void FlyInFieldEffect_BirdSwoopDown(struct Task *task)
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
CameraObjectReset2();
ObjectEventTurn(objectEvent, DIR_WEST);
- StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16);
+ StartSpriteAnim(&gSprites[objectEvent->spriteId], ANIM_GET_ON_OFF_POKEMON_WEST);
objectEvent->invisible = FALSE;
task->tBirdSpriteId = CreateFlyBirdSprite();
StartFlyBirdSwoopDown(task->tBirdSpriteId);
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 276fb44b2..00800636d 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -69,8 +69,8 @@ static void PlayerNotOnBikeNotMoving(u8, u16);
static void PlayerNotOnBikeTurningInPlace(u8, u16);
static void PlayerNotOnBikeMoving(u8, u16);
static u8 CheckForPlayerAvatarCollision(u8);
-static u8 sub_808B028(u8);
-static u8 sub_808B164(struct ObjectEvent *, s16, s16, u8, u8);
+static u8 CheckForPlayerAvatarStaticCollision(u8);
+static u8 CheckForObjectEventStaticCollision(struct ObjectEvent *, s16, s16, u8, u8);
static bool8 CanStopSurfing(s16, s16, u8);
static bool8 ShouldJumpLedge(s16, s16, u8);
static bool8 TryPushBoulder(s16, s16, u8);
@@ -85,8 +85,8 @@ static void PlayerAvatarTransition_Surfing(struct ObjectEvent *a);
static void PlayerAvatarTransition_Underwater(struct ObjectEvent *a);
static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *a);
-static bool8 player_is_anim_in_certain_ranges(void);
-static bool8 sub_808B618(void);
+static bool8 PlayerAnimIsMultiFrameStationary(void);
+static bool8 PlayerAnimIsMultiFrameStationaryAndStateNotTurning(void);
static bool8 PlayerIsAnimActive(void);
static bool8 PlayerCheckIfAnimFinishedOrInactive(void);
@@ -187,7 +187,7 @@ static bool8 (*const sForcedMovementFuncs[])(void) =
ForcedMovement_MuddySlope,
};
-static void (*const gUnknown_08497490[])(u8, u16) =
+static void (*const sPlayerNotOnBikeFuncs[])(u8, u16) =
{
PlayerNotOnBikeNotMoving,
PlayerNotOnBikeTurningInPlace,
@@ -359,7 +359,7 @@ static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEve
return FALSE;
}
- if (!sub_808B028(direction))
+ if (CheckForPlayerAvatarStaticCollision(direction) == COLLISION_NONE)
{
ObjectEventClearHeldMovement(playerObjEvent);
return FALSE;
@@ -391,7 +391,7 @@ static void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 held
static void PlayerAllowForcedMovementIfMovingSameDirection(void)
{
if (gPlayerAvatar.runningState == MOVING)
- gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_CONTROLLABLE;
}
static bool8 TryDoMetatileBehaviorForcedMovement(void)
@@ -403,7 +403,7 @@ static u8 GetForcedMovementByMetatileBehavior(void)
{
u8 i;
- if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_5))
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_CONTROLLABLE))
{
u8 metatileBehavior = gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior;
@@ -470,27 +470,27 @@ static u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
static bool8 ForcedMovement_Slip(void)
{
- return DoForcedMovementInCurrentDirection(PlayerGoSpeed2);
+ return DoForcedMovementInCurrentDirection(PlayerWalkFast);
}
static bool8 ForcedMovement_WalkSouth(void)
{
- return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_SOUTH, PlayerWalkNormal);
}
static bool8 ForcedMovement_WalkNorth(void)
{
- return DoForcedMovement(DIR_NORTH, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_NORTH, PlayerWalkNormal);
}
static bool8 ForcedMovement_WalkWest(void)
{
- return DoForcedMovement(DIR_WEST, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_WEST, PlayerWalkNormal);
}
static bool8 ForcedMovement_WalkEast(void)
{
- return DoForcedMovement(DIR_EAST, PlayerGoSpeed1);
+ return DoForcedMovement(DIR_EAST, PlayerWalkNormal);
}
static bool8 ForcedMovement_PushedSouthByCurrent(void)
@@ -524,22 +524,22 @@ static u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
static bool8 ForcedMovement_SlideSouth(void)
{
- return ForcedMovement_Slide(DIR_SOUTH, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_SOUTH, PlayerWalkFast);
}
static bool8 ForcedMovement_SlideNorth(void)
{
- return ForcedMovement_Slide(DIR_NORTH, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_NORTH, PlayerWalkFast);
}
static bool8 ForcedMovement_SlideWest(void)
{
- return ForcedMovement_Slide(DIR_WEST, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_WEST, PlayerWalkFast);
}
static bool8 ForcedMovement_SlideEast(void)
{
- return ForcedMovement_Slide(DIR_EAST, PlayerGoSpeed2);
+ return ForcedMovement_Slide(DIR_EAST, PlayerWalkFast);
}
static bool8 ForcedMovement_MatJump(void)
@@ -562,7 +562,7 @@ static bool8 ForcedMovement_MuddySlope(void)
{
Bike_UpdateBikeCounterSpeed(0);
playerObjEvent->facingDirectionLocked = TRUE;
- return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed2);
+ return DoForcedMovement(DIR_SOUTH, PlayerWalkFast);
}
else
{
@@ -572,7 +572,7 @@ static bool8 ForcedMovement_MuddySlope(void)
static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
{
- gUnknown_08497490[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
+ sPlayerNotOnBikeFuncs[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
}
static u8 CheckMovementInputNotOnBike(u8 direction)
@@ -631,8 +631,8 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
{
- // speed 2 is fast, same speed as running
- PlayerGoSpeed2(direction);
+ // same speed as running
+ PlayerWalkFast(direction);
return;
}
@@ -645,7 +645,7 @@ static void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
}
else
{
- PlayerGoSpeed1(direction);
+ PlayerWalkNormal(direction);
}
}
@@ -660,7 +660,7 @@ static u8 CheckForPlayerAvatarCollision(u8 direction)
return CheckForObjectEventCollision(playerObjEvent, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
}
-static u8 sub_808B028(u8 direction)
+static u8 CheckForPlayerAvatarStaticCollision(u8 direction)
{
s16 x, y;
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
@@ -668,7 +668,7 @@ static u8 sub_808B028(u8 direction)
x = playerObjEvent->currentCoords.x;
y = playerObjEvent->currentCoords.y;
MoveCoords(direction, &x, &y);
- return sub_808B164(playerObjEvent, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
+ return CheckForObjectEventStaticCollision(playerObjEvent, x, y, direction, MapGridGetMetatileBehaviorAt(x, y));
}
u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior)
@@ -694,7 +694,7 @@ u8 CheckForObjectEventCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u
return collision;
}
-static u8 sub_808B164(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior)
+static u8 CheckForObjectEventStaticCollision(struct ObjectEvent *objectEvent, s16 x, s16 y, u8 direction, u8 metatileBehavior)
{
u8 collision = GetCollisionAtCoords(objectEvent, x, y, direction);
@@ -876,7 +876,7 @@ static void PlayerAvatarTransition_Underwater(struct ObjectEvent *objEvent)
static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *objEvent)
{
- gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_5;
+ gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_CONTROLLABLE;
}
void UpdatePlayerAvatarTransitionState(void)
@@ -886,18 +886,18 @@ void UpdatePlayerAvatarTransitionState(void)
{
if (!PlayerCheckIfAnimFinishedOrInactive())
{
- if (!player_is_anim_in_certain_ranges())
+ if (!PlayerAnimIsMultiFrameStationary())
gPlayerAvatar.tileTransitionState = T_TILE_TRANSITION;
}
else
{
- if (!sub_808B618())
+ if (!PlayerAnimIsMultiFrameStationaryAndStateNotTurning())
gPlayerAvatar.tileTransitionState = T_TILE_CENTER;
}
}
}
-static bool8 player_is_anim_in_certain_ranges(void)
+static bool8 PlayerAnimIsMultiFrameStationary(void)
{
u8 movementActionId = gObjectEvents[gPlayerAvatar.objectEventId].movementActionId;
@@ -911,9 +911,9 @@ static bool8 player_is_anim_in_certain_ranges(void)
return FALSE;
}
-static bool8 sub_808B618(void)
+static bool8 PlayerAnimIsMultiFrameStationaryAndStateNotTurning(void)
{
- if (player_is_anim_in_certain_ranges() && gPlayerAvatar.runningState != TURN_DIRECTION)
+ if (PlayerAnimIsMultiFrameStationary() && gPlayerAvatar.runningState != TURN_DIRECTION)
return TRUE;
else
return FALSE;
@@ -953,16 +953,14 @@ void PlayerSetAnimId(u8 movementActionId, u8 copyableMovement)
}
}
-// normal speed (1 speed)
-void PlayerGoSpeed1(u8 a)
+void PlayerWalkNormal(u8 direction)
{
- PlayerSetAnimId(GetWalkNormalMovementAction(a), 2);
+ PlayerSetAnimId(GetWalkNormalMovementAction(direction), 2);
}
-// fast speed (2 speed)
-void PlayerGoSpeed2(u8 a)
+void PlayerWalkFast(u8 direction)
{
- PlayerSetAnimId(GetWalkFastMovementAction(a), 2);
+ PlayerSetAnimId(GetWalkFastMovementAction(direction), 2);
}
void PlayerRideWaterCurrent(u8 a)
@@ -970,10 +968,9 @@ void PlayerRideWaterCurrent(u8 a)
PlayerSetAnimId(GetRideWaterCurrentMovementAction(a), 2);
}
-// fastest speed (4 speed)
-void PlayerGoSpeed4(u8 a)
+void PlayerWalkFaster(u8 direction)
{
- PlayerSetAnimId(GetWalkFastestMovementAction(a), 2);
+ PlayerSetAnimId(GetWalkFasterMovementAction(direction), 2);
}
static void PlayerRun(u8 a)
@@ -1177,7 +1174,8 @@ u8 PlayerGetZCoord(void)
return gObjectEvents[gPlayerAvatar.objectEventId].previousElevation;
}
-void sub_808BC90(s16 x, s16 y)
+// unused
+void MovePlayerToMapCoords(s16 x, s16 y)
{
MoveObjectEventToMapCoords(&gObjectEvents[gPlayerAvatar.objectEventId], x, y);
}
@@ -1197,12 +1195,12 @@ u8 GetPlayerAvatarSpriteId(void)
return gPlayerAvatar.spriteId;
}
-void sub_808BCE8(void)
+void CancelPlayerForcedMovement(void)
{
ForcedMovement_None();
}
-void sub_808BCF4(void)
+void StopPlayerAvatar(void)
{
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
@@ -1323,7 +1321,7 @@ void ClearPlayerAvatarInfo(void)
void SetPlayerAvatarStateMask(u8 flags)
{
- gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_FORCED_MOVE | PLAYER_AVATAR_FLAG_5);
+ gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_FORCED_MOVE | PLAYER_AVATAR_FLAG_CONTROLLABLE);
gPlayerAvatar.flags |= flags;
}
@@ -1389,7 +1387,7 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender)
gPlayerAvatar.objectEventId = objectEventId;
gPlayerAvatar.spriteId = objectEvent->spriteId;
gPlayerAvatar.gender = gender;
- SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_5 | PLAYER_AVATAR_FLAG_ON_FOOT);
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_CONTROLLABLE | PLAYER_AVATAR_FLAG_ON_FOOT);
}
void SetPlayerInvisibility(bool8 invisible)
@@ -1402,7 +1400,7 @@ void SetPlayerInvisibility(bool8 invisible)
void SetPlayerAvatarFieldMove(void)
{
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FIELD_MOVE));
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], ANIM_FIELD_MOVE);
}
static void SetPlayerAvatarFishing(u8 direction)
@@ -1542,7 +1540,7 @@ static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct ObjectEvent
if (task->data[1] > 1)
{
gPlayerAvatar.preventStep = FALSE;
- gPlayerAvatar.transitionFlags |= PLAYER_AVATAR_FLAG_5;
+ gPlayerAvatar.transitionFlags |= PLAYER_AVATAR_FLAG_CONTROLLABLE;
DestroyTask(FindTaskIdByFunc(DoPlayerAvatarSecretBaseMatJump));
}
}
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 65611c0f1..e573fe5ab 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -235,9 +235,7 @@ void Task_ReturnToFieldRecordMixing(u8 taskId)
break;
case 1:
if (IsLinkTaskFinished())
- {
task->tState++;
- }
break;
case 2:
StartSendingKeysToLink();
diff --git a/src/field_specials.c b/src/field_specials.c
index 406c97c44..22fd6872b 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -2071,61 +2071,61 @@ void ShowFrontierManiacMessage(void)
{
static const u8 *const sFrontierManiacMessages[][FRONTIER_MANIAC_MESSAGE_COUNT] =
{
- [FRONTIER_MANIAC_BATTLE_TOWER_SINGLES] =
+ [FRONTIER_MANIAC_TOWER_SINGLES] =
{
BattleFrontier_Lounge2_Text_SalonMaidenIsThere,
BattleFrontier_Lounge2_Text_SalonMaidenSilverMons,
BattleFrontier_Lounge2_Text_SalonMaidenGoldMons
},
- [FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES] =
+ [FRONTIER_MANIAC_TOWER_DOUBLES] =
{
BattleFrontier_Lounge2_Text_DoubleBattleAdvice1,
BattleFrontier_Lounge2_Text_DoubleBattleAdvice2,
BattleFrontier_Lounge2_Text_DoubleBattleAdvice3
},
- [FRONTIER_MANIAC_BATTLE_TOWER_MULTIS] =
+ [FRONTIER_MANIAC_TOWER_MULTIS] =
{
BattleFrontier_Lounge2_Text_MultiBattleAdvice,
BattleFrontier_Lounge2_Text_MultiBattleAdvice,
BattleFrontier_Lounge2_Text_MultiBattleAdvice
},
- [FRONTIER_MANIAC_BATTLE_TOWER_LINK] =
+ [FRONTIER_MANIAC_TOWER_LINK] =
{
BattleFrontier_Lounge2_Text_LinkMultiBattleAdvice,
BattleFrontier_Lounge2_Text_LinkMultiBattleAdvice,
BattleFrontier_Lounge2_Text_LinkMultiBattleAdvice
},
- [FRONTIER_MANIAC_BATTLE_DOME] =
+ [FRONTIER_MANIAC_DOME] =
{
BattleFrontier_Lounge2_Text_DomeAceIsThere,
BattleFrontier_Lounge2_Text_DomeAceSilverMons,
BattleFrontier_Lounge2_Text_DomeAceGoldMons
},
- [FRONTIER_MANIAC_BATTLE_FACTORY] =
+ [FRONTIER_MANIAC_FACTORY] =
{
BattleFrontier_Lounge2_Text_FactoryHeadIsThere,
BattleFrontier_Lounge2_Text_FactoryHeadSilverMons,
BattleFrontier_Lounge2_Text_FactoryHeadGoldMons
},
- [FRONTIER_MANIAC_BATTLE_PALACE] =
+ [FRONTIER_MANIAC_PALACE] =
{
BattleFrontier_Lounge2_Text_PalaceMavenIsThere,
BattleFrontier_Lounge2_Text_PalaceMavenSilverMons,
BattleFrontier_Lounge2_Text_PalaceMavenGoldMons
},
- [FRONTIER_MANIAC_BATTLE_ARENA] =
+ [FRONTIER_MANIAC_ARENA] =
{
BattleFrontier_Lounge2_Text_ArenaTycoonIsThere,
BattleFrontier_Lounge2_Text_ArenaTycoonSilverMons,
BattleFrontier_Lounge2_Text_ArenaTycoonGoldMons
},
- [FRONTIER_MANIAC_BATTLE_PIKE] =
+ [FRONTIER_MANIAC_PIKE] =
{
BattleFrontier_Lounge2_Text_PikeQueenIsThere,
BattleFrontier_Lounge2_Text_PikeQueenSilverMons,
BattleFrontier_Lounge2_Text_PikeQueenGoldMons
},
- [FRONTIER_MANIAC_BATTLE_PYRAMID] =
+ [FRONTIER_MANIAC_PYRAMID] =
{
BattleFrontier_Lounge2_Text_PyramidKingIsThere,
BattleFrontier_Lounge2_Text_PyramidKingSilverMons,
@@ -2135,16 +2135,16 @@ void ShowFrontierManiacMessage(void)
static const u8 sFrontierManiacStreakThresholds[][FRONTIER_MANIAC_MESSAGE_COUNT - 1] =
{
- [FRONTIER_MANIAC_BATTLE_TOWER_SINGLES] = { 21, 56 },
- [FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES] = { 21, 35 },
- [FRONTIER_MANIAC_BATTLE_TOWER_MULTIS] = { 255, 255 },
- [FRONTIER_MANIAC_BATTLE_TOWER_LINK] = { 255, 255 },
- [FRONTIER_MANIAC_BATTLE_DOME] = { 2, 4 },
- [FRONTIER_MANIAC_BATTLE_FACTORY] = { 7, 21 },
- [FRONTIER_MANIAC_BATTLE_PALACE] = { 7, 21 },
- [FRONTIER_MANIAC_BATTLE_ARENA] = { 14, 28 },
- [FRONTIER_MANIAC_BATTLE_PIKE] = { 13, 112 }, //BUG: 112 (0x70) is probably a mistake; the Pike Queen is battled twice well before that
- [FRONTIER_MANIAC_BATTLE_PYRAMID] = { 7, 56 }
+ [FRONTIER_MANIAC_TOWER_SINGLES] = { 21, 56 },
+ [FRONTIER_MANIAC_TOWER_DOUBLES] = { 21, 35 },
+ [FRONTIER_MANIAC_TOWER_MULTIS] = { 255, 255 },
+ [FRONTIER_MANIAC_TOWER_LINK] = { 255, 255 },
+ [FRONTIER_MANIAC_DOME] = { 2, 4 },
+ [FRONTIER_MANIAC_FACTORY] = { 7, 21 },
+ [FRONTIER_MANIAC_PALACE] = { 7, 21 },
+ [FRONTIER_MANIAC_ARENA] = { 14, 28 },
+ [FRONTIER_MANIAC_PIKE] = { 13, 112 }, //BUG: 112 (0x70) is probably a mistake; the Pike Queen is battled twice well before that
+ [FRONTIER_MANIAC_PYRAMID] = { 7, 56 }
};
u8 i;
@@ -2153,10 +2153,10 @@ void ShowFrontierManiacMessage(void)
switch (facility)
{
- case FRONTIER_MANIAC_BATTLE_TOWER_SINGLES:
- case FRONTIER_MANIAC_BATTLE_TOWER_DOUBLES:
- case FRONTIER_MANIAC_BATTLE_TOWER_MULTIS:
- case FRONTIER_MANIAC_BATTLE_TOWER_LINK:
+ case FRONTIER_MANIAC_TOWER_SINGLES:
+ case FRONTIER_MANIAC_TOWER_DOUBLES:
+ case FRONTIER_MANIAC_TOWER_MULTIS:
+ case FRONTIER_MANIAC_TOWER_LINK:
if (gSaveBlock2Ptr->frontier.towerWinStreaks[facility][FRONTIER_LVL_50]
>= gSaveBlock2Ptr->frontier.towerWinStreaks[facility][FRONTIER_LVL_OPEN])
{
@@ -2167,7 +2167,7 @@ void ShowFrontierManiacMessage(void)
winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[facility][FRONTIER_LVL_OPEN];
}
break;
- case FRONTIER_MANIAC_BATTLE_DOME:
+ case FRONTIER_MANIAC_DOME:
if (gSaveBlock2Ptr->frontier.domeWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50]
>= gSaveBlock2Ptr->frontier.domeWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN])
{
@@ -2178,7 +2178,7 @@ void ShowFrontierManiacMessage(void)
winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN];
}
break;
- case FRONTIER_MANIAC_BATTLE_FACTORY:
+ case FRONTIER_MANIAC_FACTORY:
if (gSaveBlock2Ptr->frontier.factoryWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50]
>= gSaveBlock2Ptr->frontier.factoryWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN])
{
@@ -2189,7 +2189,7 @@ void ShowFrontierManiacMessage(void)
winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN];
}
break;
- case FRONTIER_MANIAC_BATTLE_PALACE:
+ case FRONTIER_MANIAC_PALACE:
if (gSaveBlock2Ptr->frontier.palaceWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_50]
>= gSaveBlock2Ptr->frontier.palaceWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN])
{
@@ -2200,7 +2200,7 @@ void ShowFrontierManiacMessage(void)
winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[FRONTIER_MODE_SINGLES][FRONTIER_LVL_OPEN];
}
break;
- case FRONTIER_MANIAC_BATTLE_ARENA:
+ case FRONTIER_MANIAC_ARENA:
if (gSaveBlock2Ptr->frontier.arenaWinStreaks[FRONTIER_LVL_50]
>= gSaveBlock2Ptr->frontier.arenaWinStreaks[FRONTIER_LVL_OPEN])
{
@@ -2211,7 +2211,7 @@ void ShowFrontierManiacMessage(void)
winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[FRONTIER_LVL_OPEN];
}
break;
- case FRONTIER_MANIAC_BATTLE_PIKE:
+ case FRONTIER_MANIAC_PIKE:
if (gSaveBlock2Ptr->frontier.pikeWinStreaks[FRONTIER_LVL_50]
>= gSaveBlock2Ptr->frontier.pikeWinStreaks[FRONTIER_LVL_OPEN])
{
@@ -2222,7 +2222,7 @@ void ShowFrontierManiacMessage(void)
winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[FRONTIER_LVL_OPEN];
}
break;
- case FRONTIER_MANIAC_BATTLE_PYRAMID:
+ case FRONTIER_MANIAC_PYRAMID:
if (gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_50]
>= gSaveBlock2Ptr->frontier.pyramidWinStreaks[FRONTIER_LVL_OPEN])
{
@@ -3910,13 +3910,18 @@ static void Task_LoopWingFlapSE(u8 taskId)
#undef playCount
#undef delay
+#define CURTAIN_HEIGHT 4
+#define CURTAIN_WIDTH 3
+#define tFrameTimer data
+#define tCurrentFrame data[3]
+
void CloseBattlePikeCurtain(void)
{
u8 taskId = CreateTask(Task_CloseBattlePikeCurtain, 8);
- gTasks[taskId].data[0] = 4;
- gTasks[taskId].data[1] = 4;
- gTasks[taskId].data[2] = 4;
- gTasks[taskId].data[3] = 0;
+ gTasks[taskId].tFrameTimer[0] = 4;
+ gTasks[taskId].tFrameTimer[1] = 4;
+ gTasks[taskId].tFrameTimer[2] = 4;
+ gTasks[taskId].tCurrentFrame = 0;
}
static void Task_CloseBattlePikeCurtain(u8 taskId)
@@ -3924,19 +3929,21 @@ static void Task_CloseBattlePikeCurtain(u8 taskId)
u8 x, y;
s16 *data = gTasks[taskId].data;
- data[data[3]]--;
- if (data[data[3]] == 0)
+ tFrameTimer[tCurrentFrame]--;
+ if (tFrameTimer[tCurrentFrame] == 0)
{
- for (y = 0; y < 4; y++)
+ for (y = 0; y < CURTAIN_HEIGHT; y++)
{
- for (x = 0; x < 3; x++)
+ for (x = 0; x < CURTAIN_WIDTH; x++)
{
- MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + x + 6, gSaveBlock1Ptr->pos.y + y + 4, x + 513 + y * 8 + data[3] * 32);
+ MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + x + MAP_OFFSET - 1,
+ gSaveBlock1Ptr->pos.y + y + MAP_OFFSET - 3,
+ (x + METATILE_BattlePike_CurtainFrames_Start) + (y * METATILE_ROW_WIDTH) + (tCurrentFrame * CURTAIN_HEIGHT * METATILE_ROW_WIDTH));
}
}
DrawWholeMapView();
- data[3]++;
- if (data[3] == 3)
+ tCurrentFrame++;
+ if (tCurrentFrame == 3)
{
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -3944,6 +3951,11 @@ static void Task_CloseBattlePikeCurtain(u8 taskId)
}
}
+#undef CURTAIN_HEIGHT
+#undef CURTAIN_WIDTH
+#undef tFrameTimer
+#undef tCurrentFrame
+
void GetBattlePyramidHint(void)
{
gSpecialVar_Result = gSpecialVar_0x8004 / 7;
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 352c14b01..ec3eba43a 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -683,16 +683,16 @@ const u16 gFrontierBannedSpecies[] =
static const u8 *const sRecordsWindowChallengeTexts[][2] =
{
- [RANKING_HALL_BATTLE_TOWER_SINGLES] = {gText_BattleTower2, gText_FacilitySingle},
- [RANKING_HALL_BATTLE_TOWER_DOUBLES] = {gText_BattleTower2, gText_FacilityDouble},
- [RANKING_HALL_BATTLE_TOWER_MULTIS] = {gText_BattleTower2, gText_FacilityMulti},
- [RANKING_HALL_BATTLE_DOME] = {gText_BattleDome, gText_FacilitySingle},
- [RANKING_HALL_BATTLE_PALACE] = {gText_BattlePalace, gText_FacilitySingle},
- [RANKING_HALL_BATTLE_ARENA] = {gText_BattleArena, gText_Facility},
- [RANKING_HALL_BATTLE_FACTORY] = {gText_BattleFactory, gText_FacilitySingle},
- [RANKING_HALL_BATTLE_PIKE] = {gText_BattlePike, gText_Facility},
- [RANKING_HALL_BATTLE_PYRAMID] = {gText_BattlePyramid, gText_Facility},
- [RANKING_HALL_BATTLE_TOWER_LINK] = {gText_BattleTower2, gText_FacilityLink},
+ [RANKING_HALL_TOWER_SINGLES] = {gText_BattleTower2, gText_FacilitySingle},
+ [RANKING_HALL_TOWER_DOUBLES] = {gText_BattleTower2, gText_FacilityDouble},
+ [RANKING_HALL_TOWER_MULTIS] = {gText_BattleTower2, gText_FacilityMulti},
+ [RANKING_HALL_DOME] = {gText_BattleDome, gText_FacilitySingle},
+ [RANKING_HALL_PALACE] = {gText_BattlePalace, gText_FacilitySingle},
+ [RANKING_HALL_ARENA] = {gText_BattleArena, gText_Facility},
+ [RANKING_HALL_FACTORY] = {gText_BattleFactory, gText_FacilitySingle},
+ [RANKING_HALL_PIKE] = {gText_BattlePike, gText_Facility},
+ [RANKING_HALL_PYRAMID] = {gText_BattlePyramid, gText_Facility},
+ [RANKING_HALL_TOWER_LINK] = {gText_BattleTower2, gText_FacilityLink},
};
static const u8 *const sLevelModeText[] =
@@ -703,16 +703,16 @@ static const u8 *const sLevelModeText[] =
static const u8 *const sHallFacilityToRecordsText[] =
{
- [RANKING_HALL_BATTLE_TOWER_SINGLES] = gText_FrontierFacilityWinStreak,
- [RANKING_HALL_BATTLE_TOWER_DOUBLES] = gText_FrontierFacilityWinStreak,
- [RANKING_HALL_BATTLE_TOWER_MULTIS] = gText_FrontierFacilityWinStreak,
- [RANKING_HALL_BATTLE_DOME] = gText_FrontierFacilityClearStreak,
- [RANKING_HALL_BATTLE_PALACE] = gText_FrontierFacilityWinStreak,
- [RANKING_HALL_BATTLE_ARENA] = gText_FrontierFacilityKOsStreak,
- [RANKING_HALL_BATTLE_FACTORY] = gText_FrontierFacilityWinStreak,
- [RANKING_HALL_BATTLE_PIKE] = gText_FrontierFacilityRoomsCleared,
- [RANKING_HALL_BATTLE_PYRAMID] = gText_FrontierFacilityFloorsCleared,
- [RANKING_HALL_BATTLE_TOWER_LINK] = gText_FrontierFacilityWinStreak,
+ [RANKING_HALL_TOWER_SINGLES] = gText_FrontierFacilityWinStreak,
+ [RANKING_HALL_TOWER_DOUBLES] = gText_FrontierFacilityWinStreak,
+ [RANKING_HALL_TOWER_MULTIS] = gText_FrontierFacilityWinStreak,
+ [RANKING_HALL_DOME] = gText_FrontierFacilityClearStreak,
+ [RANKING_HALL_PALACE] = gText_FrontierFacilityWinStreak,
+ [RANKING_HALL_ARENA] = gText_FrontierFacilityKOsStreak,
+ [RANKING_HALL_FACTORY] = gText_FrontierFacilityWinStreak,
+ [RANKING_HALL_PIKE] = gText_FrontierFacilityRoomsCleared,
+ [RANKING_HALL_PYRAMID] = gText_FrontierFacilityFloorsCleared,
+ [RANKING_HALL_TOWER_LINK] = gText_FrontierFacilityWinStreak,
};
static const u16 sFrontierBrainTrainerIds[NUM_FRONTIER_FACILITIES] =
@@ -2261,28 +2261,28 @@ static void Print2PRecord(s32 position, s32 x, s32 y, struct RankingHall2P *hall
if (winStreak > MAX_STREAK)
winStreak = MAX_STREAK;
ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4);
- StringExpandPlaceholders(gStringVar4, sHallFacilityToRecordsText[RANKING_HALL_BATTLE_TOWER_LINK]);
- AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, sHallFacilityToRecordsText[RANKING_HALL_BATTLE_TOWER_LINK], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
+ StringExpandPlaceholders(gStringVar4, sHallFacilityToRecordsText[RANKING_HALL_TOWER_LINK]);
+ AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, sHallFacilityToRecordsText[RANKING_HALL_TOWER_LINK], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
}
}
static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvlMode)
{
s32 i, j;
- struct RankingHall1P record1P[4];
+ struct RankingHall1P record1P[HALL_RECORDS_COUNT + 1];
struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
GetPlayerHallRecords(playerHallRecords);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
record1P[i] = gSaveBlock2Ptr->hallRecords1P[hallFacilityId][lvlMode][i];
- record1P[3] = playerHallRecords->onePlayer[hallFacilityId][lvlMode];
+ record1P[HALL_RECORDS_COUNT] = playerHallRecords->onePlayer[hallFacilityId][lvlMode];
- for (i = 0; i < 3; i++)
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
{
s32 highestWinStreak = 0;
s32 highestId = 0;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < HALL_RECORDS_COUNT + 1; j++)
{
if (record1P[j].winStreak > highestWinStreak)
{
@@ -2290,8 +2290,8 @@ static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvl
highestWinStreak = record1P[j].winStreak;
}
}
- if (record1P[3].winStreak >= highestWinStreak)
- highestId = 3;
+ if (record1P[HALL_RECORDS_COUNT].winStreak >= highestWinStreak)
+ highestId = HALL_RECORDS_COUNT;
dst[i] = record1P[highestId];
record1P[highestId].winStreak = 0;
@@ -2303,20 +2303,20 @@ static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvl
static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode)
{
s32 i, j;
- struct RankingHall2P record2P[4];
+ struct RankingHall2P record2P[HALL_RECORDS_COUNT + 1];
struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
GetPlayerHallRecords(playerHallRecords);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
record2P[i] = gSaveBlock2Ptr->hallRecords2P[lvlMode][i];
- record2P[3] = playerHallRecords->twoPlayers[lvlMode];
+ record2P[HALL_RECORDS_COUNT] = playerHallRecords->twoPlayers[lvlMode];
- for (i = 0; i < 3; i++)
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
{
s32 highestWinStreak = 0;
s32 highestId = 0;
- for (j = 0; j < 3; j++)
+ for (j = 0; j < HALL_RECORDS_COUNT; j++)
{
if (record2P[j].winStreak > highestWinStreak)
{
@@ -2324,8 +2324,8 @@ static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode)
highestWinStreak = record2P[j].winStreak;
}
}
- if (record2P[3].winStreak >= highestWinStreak)
- highestId = 3;
+ if (record2P[HALL_RECORDS_COUNT].winStreak >= highestWinStreak)
+ highestId = HALL_RECORDS_COUNT;
dst[i] = record2P[highestId];
record2P[highestId].winStreak = 0;
@@ -2338,26 +2338,26 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
{
s32 i;
s32 x;
- struct RankingHall1P records1P[3];
- struct RankingHall2P records2P[3];
+ struct RankingHall1P records1P[HALL_RECORDS_COUNT];
+ struct RankingHall2P records2P[HALL_RECORDS_COUNT];
StringCopy(gStringVar1, sRecordsWindowChallengeTexts[hallFacilityId][0]);
StringExpandPlaceholders(gStringVar4, sRecordsWindowChallengeTexts[hallFacilityId][1]);
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
x = GetStringRightAlignXOffset(1, sLevelModeText[lvlMode], 0xD0);
AddTextPrinterParameterized(gRecordsWindowId, 1, sLevelModeText[lvlMode], x, 1, TEXT_SPEED_FF, NULL);
- if (hallFacilityId == RANKING_HALL_BATTLE_TOWER_LINK)
+ if (hallFacilityId == RANKING_HALL_TOWER_LINK)
{
gSaveBlock2Ptr->frontier.opponentNames[0][PLAYER_NAME_LENGTH] = EOS;
gSaveBlock2Ptr->frontier.opponentNames[1][PLAYER_NAME_LENGTH] = EOS;
Fill2PRecords(records2P, lvlMode);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
Print2PRecord(i, 1, 4, &records2P[i]);
}
else
{
Fill1PRecords(records1P, hallFacilityId, lvlMode);
- for (i = 0; i < 3; i++)
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
Print1PRecord(i, 1, 4, &records1P[i], hallFacilityId);
}
}
@@ -2393,9 +2393,9 @@ void ClearRankingHallRecords(void)
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
- for (k = 0; k < 3; k++)
+ for (k = 0; k < HALL_RECORDS_COUNT; k++)
{
CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, ZERO);
gSaveBlock2Ptr->hallRecords1P[i][j][k].name[0] = EOS;
@@ -2404,9 +2404,9 @@ void ClearRankingHallRecords(void)
}
}
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
- for (k = 0; k < 3; k++)
+ for (k = 0; k < HALL_RECORDS_COUNT; k++)
{
CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, ZERO);
CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, ZERO);
diff --git a/src/graphics.c b/src/graphics.c
index 4e820caec..b4e1dfabe 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -69,8 +69,7 @@ const u32 gBattleAnimSpriteGfx_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/
const u32 gBattleAnimSpritePal_BlackSmoke[] = INCBIN_U32("graphics/battle_anims/sprites/black_smoke.gbapal.lz");
const u32 gBattleAnimSpriteGfx_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.4bpp.lz");
-
-const u32 gUnknownGfx_C035B8[] = INCBIN_U32("graphics/unknown/unknown_C035B8.4bpp.lz");
+const u32 gBattleAnimSpritePal_BlackBall[] = INCBIN_U32("graphics/battle_anims/sprites/black_ball.bin");
const u32 gBattleAnimSpritePal_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.gbapal.lz");
const u32 gBattleAnimSpriteGfx_Glass[] = INCBIN_U32("graphics/battle_anims/sprites/glass.4bpp.lz");
@@ -81,9 +80,8 @@ const u32 gBattleAnimSpritePal_HornHit[] = INCBIN_U32("graphics/battle_anims/spr
const u32 gBattleAnimSpritePal_BlueShards[] = INCBIN_U32("graphics/battle_anims/sprites/blue_shards.gbapal.lz");
const u32 gBattleAnimSpriteGfx_BlueShards[] = INCBIN_U32("graphics/battle_anims/sprites/blue_shards.4bpp.lz");
-const u32 gUnused_BattleSpritePalette_023[] = INCBIN_U32("graphics/unused/battle_anim_023.gbapal.lz");
-
-const u32 gUnusedGfx_MusicNotes[] = INCBIN_U32("graphics/unused/music_notes.4bpp.lz");
+const u32 gBattleAnimUnusedPal_MusicNotes[] = INCBIN_U32("graphics/battle_anims/unused/music_notes.gbapal.lz");
+const u32 gBattleAnimUnusedGfx_MusicNotes[] = INCBIN_U32("graphics/battle_anims/unused/music_notes.4bpp.lz");
const u32 gBattleAnimSpritePal_Hit[] = INCBIN_U32("graphics/battle_anims/sprites/hit.gbapal.lz");
const u32 gBattleAnimSpriteGfx_Hit[] = INCBIN_U32("graphics/battle_anims/sprites/hit.4bpp.lz");
@@ -128,9 +126,9 @@ const u32 gBattleAnimSpriteGfx_Lightning2[] = INCBIN_U32("graphics/battle_anims/
const u32 gBattleAnimSpriteGfx_Lightning[] = INCBIN_U32("graphics/battle_anims/sprites/lightning.4bpp.lz");
-const u32 gUnknownGfx_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.4bpp.lz");
-const u32 gUnknownPal_C06D98[] = INCBIN_U32("graphics/unknown/unknown_C06D98.gbapal.lz");
-const u32 gUnknownPal_C06D98_2[] = INCBIN_U32("graphics/unknown/unknown_C06D98_2.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_SpinningBall[] = INCBIN_U32("graphics/battle_anims/unused/spinning_ball.4bpp.lz");
+const u32 gBattleAnimSpritePal_SpinningBall[] = INCBIN_U32("graphics/battle_anims/unused/spinning_ball.gbapal.lz");
+const u32 gBattleAnimSpritePal_SpinningBall2[] = INCBIN_U32("graphics/battle_anims/unused/spinning_ball_2.gbapal.lz");
// old battle interface data, unused
@@ -164,18 +162,18 @@ const u32 gBattleAnimSpriteGfx_Glass2[] = INCBIN_U32("graphics/battle_anims/spri
const u32 gBattleAnimSpritePal_PinkHeart2[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart_2.gbapal.lz");
const u32 gBattleAnimSpriteGfx_PinkHeart2[] = INCBIN_U32("graphics/battle_anims/sprites/pink_heart_2.4bpp.lz");
-const u32 gUnknown_08C08F0C[] = INCBIN_U32("graphics/battle_interface/unused_window.4bpp.lz");
-const u32 gUnknown_08C093C8[] = INCBIN_U32("graphics/battle_interface/unused_window.gbapal.lz");
+const u32 gBattleInterfaceGfx_UnusedWindow1[] = INCBIN_U32("graphics/battle_interface/unused_window.4bpp.lz");
+const u32 gBattleInterfacePal_UnusedWindow1[] = INCBIN_U32("graphics/battle_interface/unused_window.gbapal.lz");
-const u32 gUnknown_08C093F0[] = INCBIN_U32("graphics/interface/hp_numbers.4bpp.lz");
+const u32 gBattleInterfaceGfx_BattleBar[] = INCBIN_U32("graphics/interface/battle_bar.4bpp.lz");
const u32 gBattleAnimSpriteGfx_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.4bpp.lz");
const u32 gBattleAnimSpritePal_SapDrip[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip.gbapal.lz");
const u32 gBattleAnimSpritePal_SapDrip2[] = INCBIN_U32("graphics/battle_anims/sprites/sap_drip_2.gbapal.lz");
-const u32 gUnusedGfx_Window2[] = INCBIN_U32("graphics/battle_interface/unused_window2.4bpp.lz");
-const u32 gUnusedGfx_Window2Bar[] = INCBIN_U32("graphics/battle_interface/unused_window2bar.4bpp.lz");
+const u32 gBattleInterfaceGfx_UnusedWindow2[] = INCBIN_U32("graphics/battle_interface/unused_window2.4bpp.lz");
+const u32 gBattleInterfaceGfx_UnusedWindow2Bar[] = INCBIN_U32("graphics/battle_interface/unused_window2bar.4bpp.lz");
const u32 gBattleAnimSpriteGfx_Sparkle1[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_1.4bpp.lz");
const u32 gBattleAnimSpritePal_Sparkle1[] = INCBIN_U32("graphics/battle_anims/sprites/sparkle_1.gbapal.lz");
@@ -187,8 +185,8 @@ const u32 gBattleAnimSpriteGfx_HumanoidFoot[] = INCBIN_U32("graphics/battle_anim
const u32 gBattleAnimSpriteGfx_MonsterFoot[] = INCBIN_U32("graphics/battle_anims/sprites/monster_foot.4bpp.lz");
const u32 gBattleAnimSpriteGfx_HumanoidHand[] = INCBIN_U32("graphics/battle_anims/sprites/humanoid_hand.4bpp.lz");
-const u32 gUnusedGfx_LineSketch[] = INCBIN_U32("graphics/unused/line_sketch.4bpp.lz");
-const u32 gUnusedPal_LineSketch[] = INCBIN_U32("graphics/unused/line_sketch.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_LineSketch[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch.4bpp.lz");
+const u32 gBattleAnimSpritePal_LineSketch[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch.gbapal.lz");
const u32 gBattleAnimSpriteGfx_YellowUnk[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk.4bpp.lz");
const u32 gBattleAnimSpritePal_YellowUnk[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_unk.gbapal.lz");
@@ -219,7 +217,7 @@ const u32 gBattleAnimSpritePal_SpinningGreenOrbs[] = INCBIN_U32("graphics/battle
const u32 gBattleAnimSpriteGfx_Leaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaf.4bpp.lz");
const u32 gBattleAnimSpritePal_Leaf[] = INCBIN_U32("graphics/battle_anims/sprites/leaf.gbapal.lz");
-const u32 gUnusedGfx_Metronome[] = INCBIN_U32("graphics/unused/metronome_hand_small.4bpp.lz"); // unused, was for metronome at one point
+const u32 gBattleAnimSpriteGfx_MetronomeSmallHand[] = INCBIN_U32("graphics/battle_anims/unused/metronome_hand_small.4bpp.lz"); // unused, was for metronome at one point
const u32 gBattleAnimSpritePal_Clapping[] = INCBIN_U32("graphics/battle_anims/sprites/clapping.gbapal.lz");
@@ -254,12 +252,13 @@ const u32 gBattleAnimSpritePal_Bell2[] = INCBIN_U32("graphics/battle_anims/sprit
const u32 gBattleAnimSpriteGfx_PinkGlove[] = INCBIN_U32("graphics/battle_anims/sprites/pink_glove.4bpp.lz");
const u32 gBattleAnimSpritePal_PinkGlove[] = INCBIN_U32("graphics/battle_anims/sprites/pink_glove.gbapal.lz");
-const u16 gUnknown_C0CA1C[] = INCBIN_U16("graphics/unknown/unknown_C0CA1C.bin");
-const u16 gUnknown_C0CA40[] = INCBIN_U16("graphics/unknown/unknown_C0CA40.bin");
-const u16 gUnknown_C0CA64[] = INCBIN_U16("graphics/unknown/unknown_C0CA64.bin");
-const u32 gUnusedGfx8bpp_LineSketch2[] = INCBIN_U32("graphics/unused/line_sketch_2.8bpp.lz");
-const u16 gUnknown_C0CAE0[] = INCBIN_U16("graphics/unknown/unknown_C0CAE0.bin");
-const u32 gUnusedTilemap_LineSketch2[] = INCBIN_U32("graphics/unused/line_sketch_2.bin.lz");
+const u16 gBattleAnimUnused_Unknown1[] = INCBIN_U16("graphics/battle_anims/unused/unknown_1.bin");
+const u16 gBattleAnimUnused_Unknown2[] = INCBIN_U16("graphics/battle_anims/unused/unknown_2.bin");
+const u16 gBattleAnimUnused_Unknown3[] = INCBIN_U16("graphics/battle_anims/unused/unknown_3.bin");
+
+const u32 gBattleAnimUnusedGfx_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.8bpp.lz");
+const u16 gBattleAnimUnusedPal_LineSketch2[] = INCBIN_U16("graphics/battle_anims/unused/line_sketch_2_pal.bin");
+const u32 gBattleAnimUnusedTilemap_LineSketch2[] = INCBIN_U32("graphics/battle_anims/unused/line_sketch_2.bin.lz");
const u32 gBattleAnimSpriteGfx_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.4bpp.lz");
const u32 gBattleAnimSpritePal_BlueLines[] = INCBIN_U32("graphics/battle_anims/sprites/blue_lines.gbapal.lz");
@@ -275,7 +274,7 @@ const u32 gBattleAnimSpritePal_RedTube[] = INCBIN_U32("graphics/battle_anims/spr
const u32 gBattleAnimSpritePal_Amnesia[] = INCBIN_U32("graphics/battle_anims/sprites/amnesia.gbapal.lz");
const u32 gBattleAnimSpritePal_String2[] = INCBIN_U32("graphics/battle_anims/sprites/string_2.gbapal.lz");
-const u32 gUnknown_D0D2B4[] = INCBIN_U32("graphics/unknown/unknown_D0D2B4.bin.lz");
+const u32 gBattleAnimUnused_Unknown4[] = INCBIN_U32("graphics/battle_anims/unused/unknown_4.bin.lz");
const u32 gBattleAnimSpritePal_Pencil2[] = INCBIN_U32("graphics/battle_anims/sprites/pencil_2.gbapal.lz");
const u32 gBattleAnimSpritePal_Petal[] = INCBIN_U32("graphics/battle_anims/sprites/petal.gbapal.lz");
@@ -341,9 +340,9 @@ const u32 gUnusedPal_ColorFrames[] = INCBIN_U32("graphics/unused/color_frames.gb
const u32 gBattleAnimSpriteGfx_RainDrops[] = INCBIN_U32("graphics/battle_anims/sprites/rain_drops.4bpp.lz");
-const u32 gUnusedGfx8bpp_WaterSplash [] = INCBIN_U32("graphics/unused/water_splash.8bpp.lz");
-const u32 gUnusedTilemap_WaterSplash[] = INCBIN_U32("graphics/unused/water_splash.bin.lz");
-const u32 gUnusedPalette_WaterSplash[] = INCBIN_U32("graphics/unused/water_splash.gbapal.lz");
+const u32 gBattleAnimUnusedGfx_WaterSplash[] = INCBIN_U32("graphics/battle_anims/unused/water_splash.8bpp.lz");
+const u32 gBattleAnimUnusedTilemap_WaterSplash[] = INCBIN_U32("graphics/battle_anims/unused/water_splash.bin.lz");
+const u32 gBattleAnimUnusedPal_WaterSplash[] = INCBIN_U32("graphics/battle_anims/unused/water_splash.gbapal.lz");
const u32 gUnusedGfx_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.4bpp.lz");
const u32 gUnusedPal_BasicFrame[] = INCBIN_U32("graphics/unused/basic_frame.gbapal.lz");
@@ -434,39 +433,31 @@ const u32 gBattleAnimSpritePal_BlueFlames[] = INCBIN_U32("graphics/battle_anims/
const u32 gBattleAnimSpriteGfx_BlueFlames2[] = INCBIN_U32("graphics/battle_anims/sprites/blue_flames_2.4bpp.lz");
// Contest
-
-const u32 gUnusedGfx_OldContest[] = INCBIN_U32("graphics/unused/old_contest.4bpp.lz");
-const u32 gUnusedPal_OldContest[] = INCBIN_U32("graphics/unused/old_contest.gbapal.lz");
-const u32 gUnusedTilemap_OldContest[] = INCBIN_U32("graphics/unused/old_contest.bin.lz");
-
-const u32 gUnknownTilemap_C15BC0[] = INCBIN_U32("graphics/unknown/unknown_C15BC0.bin.lz");
-
-const u32 gUnusedGfx_OldContest2[] = INCBIN_U32("graphics/unused/old_contest_2.4bpp.lz");
-const u32 gOldContestPalette[] = INCBIN_U32("graphics/unused/old_contest_2.gbapal.lz");
-const u32 gOldContestGfx[] = INCBIN_U32("graphics/unused/old_contest_2.bin.lz");
-
-const u32 gUnknown_08C17170[] = INCBIN_U32("graphics/unknown/unknown_C17170.bin.lz");
-
-const u32 gUnknown_08C17410[] = INCBIN_U32("graphics/unknown/unknown_C17410.bin.lz");
-
-const u32 gUnknown_08C1751C[] = INCBIN_U32("graphics/unknown/unknown_C1751C.bin.lz");
-
-const u32 gUnknown_08C17980[] = INCBIN_U32("graphics/unknown/unknown_C17980.bin.lz");
-
-const u32 gContestMiscGfx[] = INCBIN_U32("graphics/contest/misc.4bpp.lz");
-
+const u32 gJPContestGfx1[] = INCBIN_U32("graphics/contest/japanese/composite_1.4bpp.lz");
+const u32 gJPContestPal[] = INCBIN_U32("graphics/contest/japanese/palette.gbapal.lz");
+const u32 gJPContestTilemap1[] = INCBIN_U32("graphics/contest/japanese/tilemap_1.bin.lz");
+const u32 gJPContestTilemap2[] = INCBIN_U32("graphics/contest/japanese/tilemap_2.bin.lz");
+const u32 gJPContestGfx2[] = INCBIN_U32("graphics/contest/japanese/composite_2.4bpp.lz");
+
+const u32 gContestInterfaceAudiencePalette[] = INCBIN_U32("graphics/contest/interface_audience.gbapal.lz");
+const u32 gContestAudienceTilemap[] = INCBIN_U32("graphics/contest/audience.bin.lz");
+const u32 gContestInterfaceTilemap[] = INCBIN_U32("graphics/contest/interface.bin.lz");
+const u32 gContestUnusedTilemap1[] = INCBIN_U32("graphics/contest/unused_tilemap_1.bin.lz");
+const u32 gContestUnusedTilemap2[] = INCBIN_U32("graphics/contest/unused_tilemap_2.bin.lz");
+const u32 gContestCurtainTilemap[] = INCBIN_U32("graphics/contest/curtain.bin.lz");
+
+const u32 gContestInterfaceGfx[] = INCBIN_U32("graphics/contest/interface.4bpp.lz");
const u32 gContestAudienceGfx[] = INCBIN_U32("graphics/contest/audience.4bpp.lz");
-
const u32 gContestFaces_Gfx[] = INCBIN_U32("graphics/contest/faces.4bpp.lz");
-
const u32 gContestJudgeSymbolsGfx[] = INCBIN_U32("graphics/contest/judge_symbols.4bpp.lz");
-const u32 gContest3Pal[] = INCBIN_U32("graphics/contest/judge_symbols.gbapal.lz");
-
+const u32 gContestJudgeSymbolsPal[] = INCBIN_U32("graphics/contest/judge_symbols.gbapal.lz");
const u8 gContestSliderHeart_Gfx[] = INCBIN_U8("graphics/contest/slider_heart.4bpp");
-const u32 gUnknownGfx_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.4bpp.lz");
-const u32 gUnknownPal_C19470[] = INCBIN_U32("graphics/unknown/unknown_C19470.gbapal.lz");
+// JP equivalent of the Applause meter
+const u32 gJPContestVoltageGfx[] = INCBIN_U32("graphics/contest/japanese/voltage.4bpp.lz");
+const u32 gJPContestVoltagePal[] = INCBIN_U32("graphics/contest/japanese/voltage.gbapal.lz");
+// Contest results
const u32 gContestResults_Gfx[] = INCBIN_U32("graphics/contest/results_screen/tiles.4bpp.lz");
const u32 gContestResults_WinnerBanner_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/winner_banner.bin.lz");
const u32 gContestResults_Interface_Tilemap[] = INCBIN_U32("graphics/contest/results_screen/interface.bin.lz");
@@ -498,8 +489,8 @@ const u32 gBattleAnimSpritePal_IceCrystals[] = INCBIN_U32("graphics/battle_anims
const u32 gBattleAnimSpriteGfx_IceSpikes[] = INCBIN_U32("graphics/battle_anims/sprites/ice_spikes.4bpp.lz");
-const u32 gUnusedGfx_OldBeatUp[] = INCBIN_U32("graphics/unused/old_beatup.4bpp.lz");
-const u32 gUnusedPal_OldBeatUp[] = INCBIN_U32("graphics/unused/old_beatup.gbapal.lz");
+const u32 gBattleAnimSpriteGfx_OldBeatUp[] = INCBIN_U32("graphics/battle_anims/unused/old_beatup.4bpp.lz");
+const u32 gBattleAnimSpritePal_OldBeatUp[] = INCBIN_U32("graphics/battle_anims/unused/old_beatup.gbapal.lz");
const u32 gBattleAnimSpriteGfx_Orbs[] = INCBIN_U32("graphics/battle_anims/sprites/orbs.4bpp.lz");
const u32 gBattleAnimSpritePal_Orbs[] = INCBIN_U32("graphics/battle_anims/sprites/orbs.gbapal.lz");
@@ -547,9 +538,9 @@ const u32 gBattleAnimSpritePal_RazorLeaf[] = INCBIN_U32("graphics/battle_anims/s
const u32 gBattleAnimSpriteGfx_MistCloud[] = INCBIN_U32("graphics/battle_anims/sprites/mist_cloud.4bpp.lz");
const u32 gBattleAnimSpritePal_MistCloud[] = INCBIN_U32("graphics/battle_anims/sprites/mist_cloud.gbapal.lz");
-const u32 gUnknownGfx_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.4bpp.lz");
-const u32 gUnknownPal_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.gbapal.lz");
-const u32 gUnknownTilemap_D1C060[] = INCBIN_U32("graphics/unknown/unknown_D1C060.bin.lz");
+const u32 gBattleAnimUnusedGfx_Lights[] = INCBIN_U32("graphics/battle_anims/unused/lights.4bpp.lz");
+const u32 gBattleAnimUnusedPal_Lights[] = INCBIN_U32("graphics/battle_anims/unused/lights.gbapal.lz");
+const u32 gBattleAnimUnusedTilemap_Lights[] = INCBIN_U32("graphics/battle_anims/unused/lights.bin.lz");
const u32 gBattleAnimSpriteGfx_WhirlwindLines[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_lines.4bpp.lz");
const u32 gBattleAnimSpritePal_WhirlwindLines[] = INCBIN_U32("graphics/battle_anims/sprites/whirlwind_lines.gbapal.lz");
@@ -590,9 +581,9 @@ const u32 gMetalShineGfx[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine
const u32 gMetalShinePalette[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.gbapal.lz");
const u32 gMetalShineTilemap[] = INCBIN_U32("graphics/battle_anims/masks/metal_shine.bin.lz");
-const u32 gUnusedGfx_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.4bpp.lz"); // ghost
-const u32 gUnusedPal_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.gbapal.lz");
-const u32 gUnusedTilemap_Goosuto[] = INCBIN_U32("graphics/unused/goosuto.bin.lz");
+const u32 gUnusedGfx_Goosuto[] = INCBIN_U32("graphics/battle_anims/unused/goosuto.4bpp.lz"); // ghost
+const u32 gUnusedPal_Goosuto[] = INCBIN_U32("graphics/battle_anims/unused/goosuto.gbapal.lz");
+const u32 gUnusedTilemap_Goosuto[] = INCBIN_U32("graphics/battle_anims/unused/goosuto.bin.lz");
const u32 gBattleAnimSpriteGfx_YellowStar[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_star.4bpp.lz");
const u32 gBattleAnimSpritePal_YellowStar[] = INCBIN_U32("graphics/battle_anims/sprites/yellow_star.gbapal.lz");
@@ -942,7 +933,7 @@ const u32 gBattleAnimSpritePal_Meteor[] = INCBIN_U32("graphics/battle_anims/spri
const u32 gBattleAnimSpriteGfx_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.4bpp.lz");
const u32 gBattleAnimSpritePal_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.gbapal.lz");
-const u32 gUnknownPal_C2F9E0[] = INCBIN_U32("graphics/unknown/unknown_C2F9E0.gbapal.lz");
+const u32 gBattleAnimUnusedPal_Unknown2[] = INCBIN_U32("graphics/battle_anims/unused/unknown_2.gbapal.lz");
#include "data/graphics/pokemon.h"
#include "data/graphics/trainers.h"
@@ -950,9 +941,9 @@ const u32 gUnknownPal_C2F9E0[] = INCBIN_U32("graphics/unknown/unknown_C2F9E0.gba
const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp");
const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/footprint.1bpp");
-const u32 gUnknown_08D778F0[] = INCBIN_U32("graphics/battle_transitions/vs_frame.4bpp.lz");
-const u32 gUnknown_08D779D8[] = INCBIN_U32("graphics/battle_transitions/vs_frame.bin.lz");
-const u32 gUnknown_08D77AE4[] = INCBIN_U32("graphics/battle_transitions/vs_frame.gbapal.lz");
+const u32 gBattleVSFrame_Gfx[] = INCBIN_U32("graphics/battle_transitions/vs_frame.4bpp.lz");
+const u32 gBattleVSFrame_Tilemap[] = INCBIN_U32("graphics/battle_transitions/vs_frame.bin.lz");
+const u32 gBattleVSFrame_Pal[] = INCBIN_U32("graphics/battle_transitions/vs_frame.gbapal.lz");
const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz");
@@ -976,7 +967,7 @@ const u32 gBattleArenaJudgementSymbolsGfx[] = INCBIN_U32("graphics/battle_fronti
const u32 gBattleArenaJudgementSymbolsPalette[] = INCBIN_U32("graphics/battle_frontier/arena_judgement_symbols.gbapal.lz");
const u32 gBattleWindowTextPalette[] = INCBIN_U32("graphics/battle_interface/text.gbapal.lz");
-const u16 gUnknown_08D85620[] = INCBIN_U16("graphics/battle_frontier/text_pp.gbapal");
+const u16 gPPTextPalette[] = INCBIN_U16("graphics/battle_frontier/text_pp.gbapal");
const u16 gTilesetAnims_BattleDomePals0_0[] = INCBIN_U16("graphics/battle_frontier/dome_anim1.gbapal");
const u16 gTilesetAnims_BattleDomePals0_1[] = INCBIN_U16("graphics/battle_frontier/dome_anim2.gbapal");
@@ -985,10 +976,10 @@ const u16 gTilesetAnims_BattleDomePals0_3[] = INCBIN_U16("graphics/battle_fronti
static const u16 sUnused0[] = {0x13F, 0x119, 0x113, 0x10E};
-const u16 gUnknown_08D856C8[] = INCBIN_U16("graphics/battle_frontier/pyramid_light.gbapal"); // unfaded pal for the player light in battle pyramid
+const u16 gBattlePyramidFloor_Pal[] = INCBIN_U16("graphics/battle_frontier/pyramid_floor.gbapal");
-const u32 gUnknown_08D857A8[] = INCBIN_U32("graphics/battle_frontier/battle_tilemap1.bin.lz");
-const u32 gUnknown_08D85A1C[] = INCBIN_U32("graphics/battle_frontier/battle_tilemap2.bin.lz");
+const u32 gMultiBattleIntroBg_Opponent_Tilemap[] = INCBIN_U32("graphics/battle_frontier/multi_battle_intro_bg_opponent.bin.lz");
+const u32 gMultiBattleIntroBg_Player_Tilemap[] = INCBIN_U32("graphics/battle_frontier/multi_battle_intro_bg_player.bin.lz");
#include "data/graphics/intro_scene.h"
@@ -1059,9 +1050,8 @@ const u32 gBattleAnimBgTilemap_Ghost[] = INCBIN_U32("graphics/battle_anims/backg
const u32 gBattleAnimSpritePal_WhipHit[] = INCBIN_U32("graphics/battle_anims/sprites/whip_hit.gbapal.lz");
-const u32 gBattleAnimBgPalette_Solarbeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/solarbeam.gbapal.lz");
-
-const u32 gUnknown_E6BC04[] = INCBIN_U32("graphics/unknown/unknown_E6BC04.bin.lz");
+const u32 gBattleAnimBgPalette_SolarBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/solarbeam.gbapal.lz");
+const u32 gBattleAnimBgTilemap_SolarBeam[] = INCBIN_U32("graphics/battle_anims/backgrounds/solarbeam.bin.lz"); // Unused
const u32 gBerryBlenderCenter_Gfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.lz");
const u32 gBerryBlenderOuter_Gfx[] = INCBIN_U32("graphics/berry_blender/outer.4bpp.lz");
@@ -1139,13 +1129,13 @@ const u32 gMoveTypes_Pal[] = INCBIN_U32("graphics/types/move_types.gbapal.lz");
const u32 gSummaryMoveSelect_Gfx[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz");
const u32 gSummaryMoveSelect_Pal[] = INCBIN_U32("graphics/interface/summary_frames.gbapal.lz");
-const u32 gStatusScreenBitmap[] = INCBIN_U32("graphics/interface/status_screen.4bpp.lz");
-const u32 gStatusScreenPalette[] = INCBIN_U32("graphics/interface/status_screen.gbapal.lz");
-const u32 gPageInfoTilemap[] = INCBIN_U32("graphics/interface/status_screen.bin.lz");
-const u32 gPageSkillsTilemap[] = INCBIN_U32("graphics/interface/status_tilemap1.bin.lz");
-const u32 gPageBattleMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap2.bin.lz");
-const u32 gPageContestMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap3.bin.lz");
-const u32 gUnknown_08D98CC8[] = INCBIN_U32("graphics/interface/status_tilemap0.bin.lz");
+const u32 gSummaryScreen_Gfx[] = INCBIN_U32("graphics/interface/summary_screen.4bpp.lz");
+const u32 gSummaryScreen_Pal[] = INCBIN_U32("graphics/interface/summary_screen.gbapal.lz");
+const u32 gSummaryPage_Info_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_info.bin.lz");
+const u32 gSummaryPage_Skills_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_skills.bin.lz");
+const u32 gSummaryPage_BattleMoves_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_battle_moves.bin.lz");
+const u32 gSummaryPage_ContestMoves_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_contest_moves.bin.lz");
+const u32 gSummaryPage_InfoCopy_Tilemap[] = INCBIN_U32("graphics/interface/summary_page_info_copy.bin.lz");
const u32 gBagMaleTiles[] = INCBIN_U32("graphics/misc/bag_male.4bpp.lz");
const u32 gBagFemaleTiles[] = INCBIN_U32("graphics/misc/bag_female.4bpp.lz");
@@ -1157,11 +1147,10 @@ const u32 gBagScreenFemale_Pal[] = INCBIN_U32("graphics/interface/bag_screen_fem
const u32 gBagScreen_Gfx[] = INCBIN_U32("graphics/interface/bag_screen.4bpp.lz");
const u32 gBagScreen_GfxTileMap[] = INCBIN_U32("graphics/interface/bag_screen_tilemap.bin.lz");
-const u32 gBattleFrontierGfx_PyramidBag[] = INCBIN_U32("graphics/interface/bag_pyramid.4bpp.lz");
-const u32 gBattleFrontierGfx_PyramidBag_Pal[] = INCBIN_U32("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second.
-const u32 gBattleFrontierGfx_PyramidBagTileMap[] = INCBIN_U32("graphics/interface/bag_pyramid_tilemap.bin.lz");
-
-const u32 gUnknown_08D9AF44[] = INCBIN_U32("graphics/unknown/unknown_D9AF44.gbapal.lz");
+const u32 gBattlePyramidBag_Gfx[] = INCBIN_U32("graphics/interface/bag_pyramid.4bpp.lz");
+const u32 gBattlePyramidBag_Pal[] = INCBIN_U32("graphics/interface/bag_pyramid.gbapal.lz"); // female palette is first and male is second.
+const u32 gBattlePyramidBagTilemap[] = INCBIN_U32("graphics/interface/bag_pyramid_tilemap.bin.lz");
+const u32 gBattlePyramidBagInterface_Pal[] = INCBIN_U32("graphics/interface/bag_pyramid_interface.gbapal.lz");
const u32 gBagSwapLineGfx[] = INCBIN_U32("graphics/interface/bag_swap.4bpp.lz");
const u32 gBagSwapLinePal[] = INCBIN_U32("graphics/interface/bag_swap.gbapal.lz");
@@ -1473,8 +1462,8 @@ const u16 gTradeMenu_Pal[] = INCBIN_U16("graphics/trade/menu.gbapal");
const u16 gTradeCursor_Pal[] = INCBIN_U16("graphics/trade/cursor.gbapal");
const u8 gTradeMenu_Gfx[] = INCBIN_U8("graphics/trade/menu.4bpp");
const u8 gTradeCursor_Gfx[] = INCBIN_U8("graphics/trade/cursor.4bpp");
-const u16 gUnused_DDCEE4[] = INCBIN_U16("graphics/unused/unused_DDCEE4.bin");
-const u16 gUnknown_08DDCF04[] = INCBIN_U16("graphics/trade/unknown_DDCF04.bin");
+const u16 gTradeUnused_Tilemap[] = INCBIN_U16("graphics/trade/unused.bin");
+const u16 gTradeMenu_Tilemap[] = INCBIN_U16("graphics/trade/menu.bin");
const u16 gTradeMenuMonBox_Tilemap[] = INCBIN_U16("graphics/trade/menu_mon_box.bin");
const u16 gMessageBox_Pal[] = INCBIN_U16("graphics/text_window/message_box.gbapal");
@@ -1513,26 +1502,21 @@ const u16 gMonIconPalettes[][16] =
INCBIN_U16("graphics/pokemon/icon_palettes/icon_palette_2.gbapal"),
};
-const u16 gTitleScreenBgPalettes[] = INCBIN_U16("graphics/title_screen/pokemon_logo.gbapal",
- "graphics/title_screen/rayquaza_and_clouds.gbapal");
-
-const u16 gTitleScreenEmeraldVersionPal[] = INCBIN_U16("graphics/title_screen/emerald_version.gbapal");
-
-const u32 gUnknown_08DDE458[] = INCBIN_U32("graphics/title_screen/title_screen1.bin.lz");
-
-const u32 gTitleScreenPokemonLogoGfx[] = INCBIN_U32("graphics/title_screen/pokemon_logo.8bpp.lz");
-
-const u32 gTitleScreenEmeraldVersionGfx[] = INCBIN_U32("graphics/title_screen/emerald_version.8bpp.lz");
-
-const u16 gTitleScreenPressStartPal[] = INCBIN_U16("graphics/title_screen/press_start.gbapal");
-const u32 gTitleScreenPressStartGfx[] = INCBIN_U32("graphics/title_screen/press_start.4bpp.lz");
-
-const u32 gUnknown_08DE0644[] = INCBIN_U32("graphics/title_screen/title_screen2.bin.lz");
-
-const u16 gFrontierPassBg_Pal[][16] = INCBIN_U16("graphics/frontier_pass/bg.gbapal");// size in LoadPalette calls is reported as 0xD0 << 1, which is 0x1A0, but palette is only 0x100 bytes long so it loads garbage as well
-const u32 gFrontierPassBg_Gfx[] = INCBIN_U32("graphics/frontier_pass/bg.4bpp.lz");
-const u32 gFrontierPassMapAndCard_Gfx[] = INCBIN_U32("graphics/frontier_pass/map_and_card.8bpp.lz");
-const u32 gFrontierPassBg_Tilemap[] = INCBIN_U32("graphics/frontier_pass/bg.bin.lz");
+const u16 gTitleScreenBgPalettes[] = INCBIN_U16("graphics/title_screen/pokemon_logo.gbapal",
+ "graphics/title_screen/rayquaza_and_clouds.gbapal");
+const u16 gTitleScreenEmeraldVersionPal[] = INCBIN_U16("graphics/title_screen/emerald_version.gbapal");
+const u32 gTitleScreenCloudsTilemap[] = INCBIN_U32("graphics/title_screen/title_screen1.bin.lz");
+const u32 gTitleScreenPokemonLogoGfx[] = INCBIN_U32("graphics/title_screen/pokemon_logo.8bpp.lz");
+const u32 gTitleScreenEmeraldVersionGfx[] = INCBIN_U32("graphics/title_screen/emerald_version.8bpp.lz");
+const u16 gTitleScreenPressStartPal[] = INCBIN_U16("graphics/title_screen/press_start.gbapal");
+const u32 gTitleScreenPressStartGfx[] = INCBIN_U32("graphics/title_screen/press_start.4bpp.lz");
+const u32 gTitleScreenPokemonLogoTilemap[] = INCBIN_U32("graphics/title_screen/title_screen2.bin.lz");
+
+// size in LoadPalette calls is reported as 0xD0 << 1, which is 0x1A0, but palette is only 0x100 bytes long so it loads garbage as well
+const u16 gFrontierPassBg_Pal[][16] = INCBIN_U16("graphics/frontier_pass/bg.gbapal");
+const u32 gFrontierPassBg_Gfx[] = INCBIN_U32("graphics/frontier_pass/bg.4bpp.lz");
+const u32 gFrontierPassMapAndCard_Gfx[] = INCBIN_U32("graphics/frontier_pass/map_and_card.8bpp.lz");
+const u32 gFrontierPassBg_Tilemap[] = INCBIN_U32("graphics/frontier_pass/bg.bin.lz");
const u16 gFrontierPassCancelButton_Tilemap[] = INCBIN_U16("graphics/frontier_pass/cancel.bin");
const u16 gFrontierPassCancelButtonHighlighted_Tilemap[] = INCBIN_U16("graphics/frontier_pass/cancel_highlighted.bin");
diff --git a/src/item_menu.c b/src/item_menu.c
index 8ada7ff62..32b035ec9 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -2047,7 +2047,7 @@ bool8 UseRegisteredKeyItemOnField(void)
ScriptContext2_Enable();
FreezeObjectEvents();
PlayerFreeze();
- sub_808BCF4();
+ StopPlayerAvatar();
gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem;
taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1Ptr->registeredItem), 8);
gTasks[taskId].tUsingRegisteredKeyItem = TRUE;
@@ -2451,7 +2451,7 @@ static void LoadBagMenuTextWindows(void)
LoadUserWindowBorderGfx(0, 1, 0xE0);
LoadMessageBoxGfx(0, 10, 0xD0);
ListMenuLoadStdPalAt(0xC0, 1);
- LoadPalette(&gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(&gStandardMenuPalette, 0xF0, 0x20);
for (i = 0; i <= WIN_POCKET_NAME; i++)
{
FillWindowPixelBuffer(i, PIXEL_FILL(0));
diff --git a/src/item_use.c b/src/item_use.c
index 665d27e7d..833e80b97 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -182,7 +182,7 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
// Mail in the bag menu can't have a message but it can be checked (view the mail background, no message)
static void CB2_CheckMail(void)
{
- struct MailStruct mail;
+ struct Mail mail;
mail.itemId = gSpecialVar_ItemId;
ReadMail(&mail, CB2_ReturnToBagMenuPocket, 0);
}
diff --git a/src/link.c b/src/link.c
index 66549f648..8ba7610cc 100644
--- a/src/link.c
+++ b/src/link.c
@@ -1622,7 +1622,7 @@ void CB2_LinkError(void)
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
- LoadPalette(gUnknown_0860F074, 0xf0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xf0, 0x20);
gSoftResetDisabled = FALSE;
CreateTask(Task_DestroySelf, 0);
StopMapMusic();
@@ -2192,30 +2192,26 @@ static bool8 DoHandshake(void)
{
REG_SIOMLT_SEND = SLAVE_HANDSHAKE;
}
- *(u64 *)gLink.tempRecvBuffer = REG_SIOMLT_RECV;
+ *(u64 *)gLink.handshakeBuffer = REG_SIOMLT_RECV;
REG_SIOMLT_RECV = 0;
gLink.handshakeAsMaster = FALSE;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- if ((gLink.tempRecvBuffer[i] & ~0x3) == SLAVE_HANDSHAKE || gLink.tempRecvBuffer[i] == MASTER_HANDSHAKE)
+ if ((gLink.handshakeBuffer[i] & ~0x3) == SLAVE_HANDSHAKE || gLink.handshakeBuffer[i] == MASTER_HANDSHAKE)
{
playerCount++;
- if (minRecv > gLink.tempRecvBuffer[i] && gLink.tempRecvBuffer[i] != 0)
- {
- minRecv = gLink.tempRecvBuffer[i];
- }
+ if (minRecv > gLink.handshakeBuffer[i] && gLink.handshakeBuffer[i] != 0)
+ minRecv = gLink.handshakeBuffer[i];
}
else
{
- if (gLink.tempRecvBuffer[i] != 0xFFFF)
- {
+ if (gLink.handshakeBuffer[i] != 0xFFFF)
playerCount = 0;
- }
break;
}
}
gLink.playerCount = playerCount;
- if (gLink.playerCount > 1 && gLink.playerCount == sHandshakePlayerCount && gLink.tempRecvBuffer[0] == MASTER_HANDSHAKE)
+ if (gLink.playerCount > 1 && gLink.playerCount == sHandshakePlayerCount && gLink.handshakeBuffer[0] == MASTER_HANDSHAKE)
{
return TRUE;
}
diff --git a/src/load_save.c b/src/load_save.c
index 0112f2a8f..1ba5a1600 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -25,7 +25,7 @@ struct LoadedSaveData
/*0x00F0*/ struct ItemSlot pokeBalls[BAG_POKEBALLS_COUNT];
/*0x0130*/ struct ItemSlot TMsHMs[BAG_TMHM_COUNT];
/*0x0230*/ struct ItemSlot berries[BAG_BERRIES_COUNT];
- /*0x02E8*/ struct MailStruct mail[MAIL_COUNT];
+ /*0x02E8*/ struct Mail mail[MAIL_COUNT];
};
// EWRAM DATA
diff --git a/src/mail.c b/src/mail.c
index 50ff553aa..8bb6f6991 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -61,7 +61,7 @@ struct MailRead
/*0x0200*/ u8 playerName[12];
/*0x020C*/ MainCallback exitCallback;
/*0x0210*/ MainCallback callback;
- /*0x0214*/ struct MailStruct *mail;
+ /*0x0214*/ struct Mail *mail;
/*0x0218*/ bool8 hasText;
/*0x0219*/ u8 signatureWidth;
/*0x021a*/ u8 mailType;
@@ -443,7 +443,7 @@ static const struct MailLayout sMailLayouts_Tall[] = {
},
};
-void ReadMail(struct MailStruct *mail, void (*exitCallback)(void), bool8 hasText)
+void ReadMail(struct Mail *mail, void (*exitCallback)(void), bool8 hasText)
{
u16 buffer[2];
u16 species;
diff --git a/src/mail_data.c b/src/mail_data.c
index 2ae9bedab..683bd854e 100644
--- a/src/mail_data.c
+++ b/src/mail_data.c
@@ -7,15 +7,17 @@
#include "international_string_util.h"
#include "constants/easy_chat.h"
-void ClearMailData(void)
+#define UNOWN_OFFSET 30000
+
+void ClearAllMail(void)
{
u8 i;
for (i = 0; i < MAIL_COUNT; i++)
- ClearMailStruct(&gSaveBlock1Ptr->mail[i]);
+ ClearMail(&gSaveBlock1Ptr->mail[i]);
}
-void ClearMailStruct(struct MailStruct *mail)
+void ClearMail(struct Mail *mail)
{
s32 i;
@@ -41,7 +43,7 @@ bool8 MonHasMail(struct Pokemon *mon)
return FALSE;
}
-u8 GiveMailToMon(struct Pokemon *mon, u16 itemId)
+u8 GiveMailToMonByItemId(struct Pokemon *mon, u16 itemId)
{
u8 heldItem[2];
u8 id, i;
@@ -83,7 +85,7 @@ u16 SpeciesToMailSpecies(u16 species, u32 personality)
{
if (species == SPECIES_UNOWN)
{
- u32 species = GetUnownLetterByPersonality(personality) + 30000;
+ u32 species = GetUnownLetterByPersonality(personality) + UNOWN_OFFSET;
return species;
}
@@ -94,10 +96,10 @@ u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer)
{
u16 result;
- if (mailSpecies >= 30000 && mailSpecies < (30000 + NUM_UNOWN_FORMS))
+ if (mailSpecies >= UNOWN_OFFSET && mailSpecies < UNOWN_OFFSET + NUM_UNOWN_FORMS)
{
result = SPECIES_UNOWN;
- *buffer = mailSpecies - 30000;
+ *buffer = mailSpecies - UNOWN_OFFSET;
}
else
{
@@ -107,11 +109,11 @@ u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer)
return result;
}
-u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail)
+u8 GiveMailToMon(struct Pokemon *mon, struct Mail *mail)
{
u8 heldItem[2];
u16 itemId = mail->itemId;
- u8 mailId = GiveMailToMon(mon, itemId);
+ u8 mailId = GiveMailToMonByItemId(mon, itemId);
if (mailId == MAIL_NONE)
return MAIL_NONE;
@@ -169,7 +171,7 @@ u8 TakeMailFromMon2(struct Pokemon *mon)
{
if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE)
{
- memcpy(&gSaveBlock1Ptr->mail[i], &gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct MailStruct));
+ memcpy(&gSaveBlock1Ptr->mail[i], &gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct Mail));
gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)].itemId = ITEM_NONE;
SetMonData(mon, MON_DATA_MAIL, &newMailId);
SetMonData(mon, MON_DATA_HELD_ITEM, newHeldItem);
diff --git a/src/match_call.c b/src/match_call.c
index b71fc8322..9939b09d2 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -1180,7 +1180,7 @@ static void StartMatchCall(void)
ScriptContext2_Enable();
FreezeObjectEvents();
PlayerFreeze();
- sub_808BCF4();
+ StopPlayerAvatar();
}
PlaySE(SE_POKENAV_CALL);
@@ -1902,7 +1902,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
case FRONTIER_FACILITY_DOME:
for (i = 0; i < 2; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
if (streak < gSaveBlock2Ptr->frontier.domeRecordWinStreaks[i][j])
streak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[i][j];
@@ -1915,7 +1915,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
#else
case FRONTIER_FACILITY_FACTORY:
#endif
- for (i = 0; i < 2; i++)
+ for (i = 0; i < FRONTIER_LVL_MODE_COUNT; i++)
{
if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
@@ -1925,7 +1925,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
case FRONTIER_FACILITY_TOWER:
for (i = 0; i < 4; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
if (streak < gSaveBlock2Ptr->frontier.towerRecordWinStreaks[i][j])
streak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[i][j];
@@ -1936,7 +1936,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
case FRONTIER_FACILITY_PALACE:
for (i = 0; i < 2; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
if (streak < gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[i][j])
streak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[i][j];
@@ -1951,7 +1951,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
#endif
for (i = 0; i < 2; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
if (streak < gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j])
streak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j];
@@ -1960,7 +1960,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
*topicTextId = GEN_TOPIC_STREAK_RECORD - 1;
break;
case FRONTIER_FACILITY_ARENA:
- for (i = 0; i < 2; i++)
+ for (i = 0; i < FRONTIER_LVL_MODE_COUNT; i++)
{
if (streak < gSaveBlock2Ptr->frontier.arenaRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i];
@@ -1968,7 +1968,7 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
*topicTextId = GEN_TOPIC_STREAK_RECORD - 1;
break;
case FRONTIER_FACILITY_PYRAMID:
- for (i = 0; i < 2; i++)
+ for (i = 0; i < FRONTIER_LVL_MODE_COUNT; i++)
{
if (streak < gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i];
diff --git a/src/menu.c b/src/menu.c
index dcc32319e..117642098 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -60,7 +60,7 @@ static EWRAM_DATA bool8 sScheduledBgCopiesToVram[4] = {FALSE};
static EWRAM_DATA u16 sTempTileDataBufferIdx = 0;
static EWRAM_DATA void *sTempTileDataBuffer[0x20] = {NULL};
-const u16 gUnknown_0860F074[] = INCBIN_U16("graphics/interface/860F074.gbapal");
+const u16 gStandardMenuPalette[] = INCBIN_U16("graphics/interface/860F074.gbapal");
static const u8 sTextSpeedFrameDelays[] =
{
@@ -433,26 +433,28 @@ void sub_819786C(u8 windowId, bool8 copyToVram)
DrawDialogFrameWithCustomTileAndPalette(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF);
}
-void sub_819789C(void)
+void Menu_LoadStdPal(void)
{
- LoadPalette(gUnknown_0860F074, STD_WINDOW_PALETTE_NUM * 0x10, 0x14);
+ LoadPalette(gStandardMenuPalette, STD_WINDOW_PALETTE_NUM * 0x10, 0x14);
}
void Menu_LoadStdPalAt(u16 offset)
{
- LoadPalette(gUnknown_0860F074, offset, 0x14);
+ LoadPalette(gStandardMenuPalette, offset, 0x14);
}
-const u16 *sub_81978C8(void)
+// Unused
+static const u16 *Menu_GetStdPal(void)
{
- return gUnknown_0860F074;
+ return gStandardMenuPalette;
}
-u16 sub_81978D0(u8 colorNum)
+// Unused
+static u16 Menu_GetStdPalColor(u8 colorNum)
{
if (colorNum > 15)
colorNum = 0;
- return gUnknown_0860F074[colorNum];
+ return gStandardMenuPalette[colorNum];
}
void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback)
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index c9d895e19..1ea53a898 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -683,7 +683,7 @@ void InitMoveRelearnerWindows(bool8 useContextWindow)
InitWindows(sMoveRelearnerWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xE0);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
for (i = 0; i < 5; i++)
{
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index f80240006..18a1a0d07 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -302,7 +302,7 @@ bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx)
bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
{
- struct MailStruct mail;
+ struct Mail mail;
struct Pokemon pokemon;
u16 species;
u16 heldItem;
@@ -326,7 +326,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
else
{
memcpy(&gPlayerParty[PARTY_SIZE - 1], pokemonPtr, sizeof(struct Pokemon));
- memcpy(&mail, mailPtr, sizeof(struct MailStruct));
+ memcpy(&mail, mailPtr, sizeof(struct Mail));
if (species != SPECIES_EGG)
{
@@ -337,7 +337,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
heldItem = GetMonData(&gPlayerParty[PARTY_SIZE - 1], MON_DATA_HELD_ITEM);
if (ItemIsMail(heldItem))
- GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &mail);
+ GiveMailToMon(&gPlayerParty[PARTY_SIZE - 1], &mail);
CompactPartySlots();
CalculatePlayerPartyCount();
StringExpandPlaceholders(gStringVar4, gText_MysteryEventSentOver);
diff --git a/src/new_game.c b/src/new_game.c
index 1362c492d..4bd3d3704 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -158,7 +158,7 @@ void NewGameInitData(void)
ResetPokedex();
ClearFrontierRecord();
ClearSav1();
- ClearMailData();
+ ClearAllMail();
gSaveBlock2Ptr->specialSaveWarpFlags = 0;
gSaveBlock2Ptr->gcnLinkFlags = 0;
InitPlayerTrainerId();
diff --git a/src/party_menu.c b/src/party_menu.c
index 5ef8699fa..8e64ab96c 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -1726,7 +1726,7 @@ static void GiveItemToMon(struct Pokemon *mon, u16 item)
if (ItemIsMail(item) == TRUE)
{
- if (GiveMailToMon(mon, item) == 0xFF)
+ if (GiveMailToMonByItemId(mon, item) == MAIL_NONE)
return;
}
itemBytes[0] = item;
@@ -2019,7 +2019,7 @@ static void InitPartyMenuWindows(u8 layout)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
LoadUserWindowBorderGfx(0, 0x4F, 0xD0);
LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
}
static void CreateCancelConfirmWindows(bool8 chooseHalf)
@@ -5467,7 +5467,7 @@ void ChooseMonToGiveMailFromMailbox(void)
static void TryGiveMailToSelectedMon(u8 taskId)
{
struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId];
- struct MailStruct *mail;
+ struct Mail *mail;
gPartyMenuUseExitCallback = FALSE;
mail = &gSaveBlock1Ptr->mail[gPlayerPCItemPageInfo.itemsAbove + PARTY_SIZE + gPlayerPCItemPageInfo.cursorPos];
@@ -5477,8 +5477,8 @@ static void TryGiveMailToSelectedMon(u8 taskId)
}
else
{
- GiveMailToMon2(mon, mail);
- ClearMailStruct(mail);
+ GiveMailToMon(mon, mail);
+ ClearMail(mail);
DisplayPartyMenuMessage(gText_MailTransferredFromMailbox, TRUE);
}
ScheduleBgCopyTilemapToVram(2);
diff --git a/src/player_pc.c b/src/player_pc.c
index cc9d33067..3b37b0219 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -674,7 +674,7 @@ static u8 GetMailboxMailCount(void)
static void Mailbox_CompactMailList(void)
{
- struct MailStruct temp;
+ struct Mail temp;
u8 i, j;
for (i = PARTY_SIZE; i < MAIL_COUNT - 1; i++)
@@ -850,7 +850,7 @@ static void Mailbox_HandleConfirmMoveToBag(u8 taskId)
static void Mailbox_DoMailMoveToBag(u8 taskId)
{
- struct MailStruct *mail = &gSaveBlock1Ptr->mail[gPlayerPCItemPageInfo.itemsAbove + PARTY_SIZE + gPlayerPCItemPageInfo.cursorPos];
+ struct Mail *mail = &gSaveBlock1Ptr->mail[gPlayerPCItemPageInfo.itemsAbove + PARTY_SIZE + gPlayerPCItemPageInfo.cursorPos];
if (!AddBagItem(mail->itemId, 1))
{
DisplayItemMessageOnField(taskId, gText_BagIsFull, Mailbox_Cancel);
@@ -858,7 +858,7 @@ static void Mailbox_DoMailMoveToBag(u8 taskId)
else
{
DisplayItemMessageOnField(taskId, gText_MailToBagMessageErased, Mailbox_Cancel);
- ClearMailStruct(mail);
+ ClearMail(mail);
Mailbox_CompactMailList();
gPlayerPCItemPageInfo.count--;
if (gPlayerPCItemPageInfo.count < (gPlayerPCItemPageInfo.pageItems + gPlayerPCItemPageInfo.itemsAbove) && gPlayerPCItemPageInfo.itemsAbove != 0)
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 89c2bc962..647a85b10 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -95,10 +95,6 @@ enum
PKBL_GIVE_TO_LADY
};
-
-extern const u16 gUnknown_0860F074[];
-
-// this file's functions
static void CB2_InitPokeblockMenu(void);
static bool8 InitPokeblockMenu(void);
static bool8 LoadPokeblockMenuGfx(void);
@@ -685,7 +681,7 @@ static void HandleInitWindows(void)
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xE0);
LoadMessageBoxGfx(0, 0xA, 0xD0);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
for (i = 0; i < ARRAY_COUNT(sWindowTemplates) - 1; i++)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index a4395d760..2241d1668 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -116,8 +116,6 @@ struct PokeblockFeed
u8 unused4;
};
-extern const u16 gUnknown_0860F074[];
-
static void HandleInitBackgrounds(void);
static void HandleInitWindows(void);
static void LaunchPokeblockFeedTask(void);
@@ -786,7 +784,7 @@ static void HandleInitWindows(void)
InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 1, 0xE0);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
FillWindowPixelBuffer(0, PIXEL_FILL(0));
PutWindowTilemap(0);
ScheduleBgCopyTilemapToVram(0);
diff --git a/src/pokemon.c b/src/pokemon.c
index 6e3d37ae3..0f943734b 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -5775,27 +5775,36 @@ u8 GetTrainerEncounterMusicId(u16 trainerOpponentId)
return TRAINER_ENCOUNTER_MUSIC(trainerOpponentId);
}
-u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex)
-{
+u16 ModifyStatByNature(u8 nature, u16 stat, u8 statIndex)
+{
+// Because this is a u16 it will be unable to store the
+// result of the multiplication for any stat > 595 for a
+// positive nature and > 728 for a negative nature.
+// Neither occur in the base game, but this can happen if
+// any Nature-affected base stat is increased to a value
+// above 248. The closest by default is Shuckle at 230.
+#ifdef BUGFIX
+ u32 retVal;
+#else
u16 retVal;
+#endif
+
// Don't modify HP, Accuracy, or Evasion by nature
if (statIndex <= STAT_HP || statIndex > NUM_NATURE_STATS)
- {
- return n;
- }
+ return stat;
switch (gNatureStatTable[nature][statIndex - 1])
{
case 1:
- retVal = n * 110;
+ retVal = stat * 110;
retVal /= 100;
break;
case -1:
- retVal = n * 90;
+ retVal = stat * 90;
retVal /= 100;
break;
default:
- retVal = n;
+ retVal = stat;
break;
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index f6371b088..dc05c52c4 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -1301,35 +1301,35 @@ static bool8 DecompressGraphics(void)
{
case 0:
ResetTempTileDataBuffers();
- DecompressAndCopyTileDataToVram(1, &gStatusScreenBitmap, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, &gSummaryScreen_Gfx, 0, 0, 0);
sMonSummaryScreen->switchCounter++;
break;
case 1:
if (FreeTempTileDataBuffersIfPossible() != 1)
{
- LZDecompressWram(gPageInfoTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]);
+ LZDecompressWram(gSummaryPage_Info_Tilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]);
sMonSummaryScreen->switchCounter++;
}
break;
case 2:
- LZDecompressWram(gUnknown_08D98CC8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1]);
+ LZDecompressWram(gSummaryPage_InfoCopy_Tilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1]);
sMonSummaryScreen->switchCounter++;
break;
case 3:
- LZDecompressWram(gPageSkillsTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
+ LZDecompressWram(gSummaryPage_Skills_Tilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1]);
sMonSummaryScreen->switchCounter++;
break;
case 4:
- LZDecompressWram(gPageBattleMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
+ LZDecompressWram(gSummaryPage_BattleMoves_Tilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]);
sMonSummaryScreen->switchCounter++;
break;
case 5:
- LZDecompressWram(gPageContestMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
+ LZDecompressWram(gSummaryPage_ContestMoves_Tilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]);
sMonSummaryScreen->switchCounter++;
break;
case 6:
- LoadCompressedPalette(gStatusScreenPalette, 0, 0x100);
- LoadPalette(&gUnknown_08D85620, 0x81, 0x1E);
+ LoadCompressedPalette(gSummaryScreen_Pal, 0, 0x100);
+ LoadPalette(&gPPTextPalette, 0x81, 0x1E);
sMonSummaryScreen->switchCounter++;
break;
case 7:
diff --git a/src/record_mixing.c b/src/record_mixing.c
index ad97b6af5..7ffe6680f 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -35,16 +35,21 @@
#include "constants/battle_frontier.h"
#include "dewford_trend.h"
+// Number of bytes of the record transferred at a time
+#define BUFFER_CHUNK_SIZE 200
+
+#define NUM_SWAP_COMBOS 3
-// Static type declarations
+// Used by several tasks in this file
+#define tState data[0]
struct RecordMixingHallRecords
{
- struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][6];
- struct RankingHall2P hallRecords2P[2][6];
+ struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][FRONTIER_LVL_MODE_COUNT][HALL_RECORDS_COUNT * 2];
+ struct RankingHall2P hallRecords2P[FRONTIER_LVL_MODE_COUNT][HALL_RECORDS_COUNT * 2];
};
-struct PlayerRecordsRS
+struct PlayerRecordRS
{
struct SecretBase secretBases[SECRET_BASES_COUNT];
TVShow tvShows[TV_SHOWS_COUNT];
@@ -54,10 +59,10 @@ struct PlayerRecordsRS
struct RecordMixingDaycareMail daycareMail;
struct RSBattleTowerRecord battleTowerRecord;
u16 giftItem;
- u16 filler11C8[0x32];
+ u16 padding[50];
};
-struct PlayerRecordsEmerald
+struct PlayerRecordEmerald
{
/* 0x0000 */ struct SecretBase secretBases[SECRET_BASES_COUNT];
/* 0x0c80 */ TVShow tvShows[TV_SHOWS_COUNT];
@@ -70,73 +75,67 @@ struct PlayerRecordsEmerald
/* 0x1214 */ LilycoveLady lilycoveLady;
/* 0x1254 */ struct Apprentice apprentices[2];
/* 0x12dc */ struct PlayerHallRecords hallRecords;
- /* 0x1434 */ u8 field_1434[0x10];
+ /* 0x1434 */ u8 padding[16];
}; // 0x1444
-union PlayerRecords
+union PlayerRecord
{
- struct PlayerRecordsRS ruby;
- struct PlayerRecordsEmerald emerald;
+ struct PlayerRecordRS ruby;
+ struct PlayerRecordEmerald emerald;
};
-// Static RAM declarations
-
-static bool8 gUnknown_03001130;
+static bool8 sReadyToReceive;
static struct SecretBase *sSecretBasesSave;
static TVShow *sTvShowsSave;
static PokeNews *sPokeNewsSave;
static OldMan *sOldManSave;
static struct DewfordTrend *sDewfordTrendsSave;
-static struct RecordMixingDaycareMail *sDaycareMailSave;
+static struct RecordMixingDaycareMail *sRecordMixMailSave;
static void *sBattleTowerSave;
static LilycoveLady *sLilycoveLadySave;
static void *sApprenticesSave;
static void *sBattleTowerSave_Duplicate;
static u32 sRecordStructSize;
-static u8 gUnknown_03001160;
-static struct PlayerHallRecords *gUnknown_03001168[3];
-
-static EWRAM_DATA struct RecordMixingDaycareMail sDaycareMail = {0};
-static EWRAM_DATA union PlayerRecords *sReceivedRecords = NULL;
-static EWRAM_DATA union PlayerRecords *sSentRecord = NULL;
-
-// Static ROM declarations
-
-static void Task_RecordMixing_Main(u8 taskId);
-static void Task_MixingRecordsRecv(u8 taskId);
-static void Task_SendPacket(u8 taskId);
-static void Task_CopyReceiveBuffer(u8 taskId);
-static void Task_SendPacket_SwitchToReceive(u8 taskId);
-static void *LoadPtrFromTaskData(const u16 *asShort);
-static void StorePtrInTaskData(void *records, u16 *a1);
+static u8 sDaycareMailRandSum;
+static struct PlayerHallRecords *sPartnerHallRecords[HALL_RECORDS_COUNT];
+
+static EWRAM_DATA struct RecordMixingDaycareMail sRecordMixMail = {0};
+static EWRAM_DATA union PlayerRecord *sReceivedRecords = NULL;
+static EWRAM_DATA union PlayerRecord *sSentRecord = NULL;
+
+static void Task_RecordMixing_Main(u8);
+static void Task_MixingRecordsRecv(u8);
+static void Task_SendPacket(u8);
+static void Task_CopyReceiveBuffer(u8);
+static void Task_SendPacket_SwitchToReceive(u8);
+static void *LoadPtrFromTaskData(const u16 *);
+static void StorePtrInTaskData(void *, u16 *);
static u8 GetMultiplayerId_(void);
static void *GetPlayerRecvBuffer(u8);
static void ReceiveOldManData(OldMan *, size_t, u8);
-static void ReceiveBattleTowerData(void *battleTowerRecord, size_t, u8);
+static void ReceiveBattleTowerData(void *, size_t, u8);
static void ReceiveLilycoveLadyData(LilycoveLady *, size_t, u8);
-static void sub_80E7B2C(const u8 *);
+static void CalculateDaycareMailRandSum(const u8 *);
static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *, size_t, u8, TVShow *);
-static void ReceiveGiftItem(u16 *item, u8 which);
-static void Task_DoRecordMixing(u8 taskId);
-static void GetSavedApprentices(struct Apprentice *dst, struct Apprentice *src);
-static void ReceiveApprenticeData(struct Apprentice *mixApprentice, size_t recordSize, u32 multiplayerId);
-static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
-static void GetRecordMixingDaycareMail(struct RecordMixingDaycareMail *dst);
-static void SanitizeDaycareMailForRuby(struct RecordMixingDaycareMail *src);
-static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *arg0);
-static void SanitizeRubyBattleTowerRecord(struct RSBattleTowerRecord *src);
-
-// .rodata
-
-static const u8 gUnknown_0858CF8C[] = {1, 0};
-
-static const u8 gUnknown_0858CF8E[][3] =
+static void ReceiveGiftItem(u16 *, u8 );
+static void Task_DoRecordMixing(u8);
+static void GetSavedApprentices(struct Apprentice *, struct Apprentice *);
+static void ReceiveApprenticeData(struct Apprentice *, size_t, u32);
+static void ReceiveRankingHallRecords(struct PlayerHallRecords *, size_t, u32);
+static void GetRecordMixingDaycareMail(struct RecordMixingDaycareMail *);
+static void SanitizeDaycareMailForRuby(struct RecordMixingDaycareMail *);
+static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *);
+static void SanitizeRubyBattleTowerRecord(struct RSBattleTowerRecord *);
+
+static const u8 sPlayerIdxOrders_2Player[] = {1, 0};
+
+static const u8 sPlayerIdxOrders_3Player[][3] =
{
{1, 2, 0},
{2, 0, 1},
};
-static const u8 gUnknown_0858CF94[][4] =
+static const u8 sPlayerIdxOrders_4Player[][4] =
{
{1, 0, 3, 2},
{3, 0, 1, 2},
@@ -149,24 +148,21 @@ static const u8 gUnknown_0858CF94[][4] =
{3, 2, 1, 0},
};
-static const u8 gUnknown_0858CFB8[3][2] =
+// When 3 players can swap mail 2 players are randomly selected and the 3rd is left out
+static const u8 sDaycareMailSwapIds_3Player[NUM_SWAP_COMBOS][2] =
{
{0, 1},
{1, 2},
{2, 0},
};
-static const u8 gUnknown_0858CFBE[3][4] =
+static const u8 sDaycareMailSwapIds_4Player[NUM_SWAP_COMBOS][4] =
{
- {0, 1, 2, 3},
- {0, 2, 1, 3},
- {0, 3, 2, 1},
+ {0, 1, 2, 3}, // 0 swaps with 1, 2 swaps with 3
+ {0, 2, 1, 3},
+ {0, 3, 2, 1},
};
-// .text
-
-#define BUFFER_CHUNK_SIZE 200
-
void RecordMixingPlayerSpotTriggered(void)
{
CreateTask_EnterCableClubSeat(Task_RecordMixing_Main);
@@ -180,14 +176,14 @@ static void SetSrcLookupPointers(void)
sPokeNewsSave = gSaveBlock1Ptr->pokeNews;
sOldManSave = &gSaveBlock1Ptr->oldMan;
sDewfordTrendsSave = gSaveBlock1Ptr->dewfordTrends;
- sDaycareMailSave = &sDaycareMail;
+ sRecordMixMailSave = &sRecordMixMail;
sBattleTowerSave = &gSaveBlock2Ptr->frontier.towerPlayer;
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
sApprenticesSave = gSaveBlock2Ptr->apprentices;
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.towerPlayer;
}
-static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
+static void PrepareUnknownExchangePacket(struct PlayerRecordRS *dest)
{
memcpy(dest->secretBases, sSecretBasesSave, sizeof(dest->secretBases));
memcpy(dest->tvShows, sTvShowsSave, sizeof(dest->tvShows));
@@ -202,7 +198,7 @@ static void PrepareUnknownExchangePacket(struct PlayerRecordsRS *dest)
dest->giftItem = GetRecordMixingGift();
}
-static void PrepareExchangePacketForRubySapphire(struct PlayerRecordsRS *dest)
+static void PrepareExchangePacketForRubySapphire(struct PlayerRecordRS *dest)
{
memcpy(dest->secretBases, sSecretBasesSave, sizeof(dest->secretBases));
ClearJapaneseSecretBases(dest->secretBases);
@@ -254,36 +250,36 @@ static void PrepareExchangePacket(void)
}
}
-static void ReceiveExchangePacket(u32 which)
+static void ReceiveExchangePacket(u32 multiplayerId)
{
if (Link_AnyPartnersPlayingRubyOrSapphire())
{
// Ruby/Sapphire
- sub_80E7B2C((void *)sReceivedRecords->ruby.tvShows);
- ReceiveSecretBasesData(sReceivedRecords->ruby.secretBases, sizeof(struct PlayerRecordsRS), which);
- ReceiveDaycareMailData(&sReceivedRecords->ruby.daycareMail, sizeof(struct PlayerRecordsRS), which, sReceivedRecords->ruby.tvShows);
- ReceiveBattleTowerData(&sReceivedRecords->ruby.battleTowerRecord, sizeof(struct PlayerRecordsRS), which);
- ReceiveTvShowsData(sReceivedRecords->ruby.tvShows, sizeof(struct PlayerRecordsRS), which);
- ReceivePokeNewsData(sReceivedRecords->ruby.pokeNews, sizeof(struct PlayerRecordsRS), which);
- ReceiveOldManData(&sReceivedRecords->ruby.oldMan, sizeof(struct PlayerRecordsRS), which);
- ReceiveDewfordTrendData(sReceivedRecords->ruby.dewfordTrends, sizeof(struct PlayerRecordsRS), which);
- ReceiveGiftItem(&sReceivedRecords->ruby.giftItem, which);
+ CalculateDaycareMailRandSum((void *)sReceivedRecords->ruby.tvShows);
+ ReceiveSecretBasesData(sReceivedRecords->ruby.secretBases, sizeof(sReceivedRecords->ruby), multiplayerId);
+ ReceiveDaycareMailData(&sReceivedRecords->ruby.daycareMail, sizeof(sReceivedRecords->ruby), multiplayerId, sReceivedRecords->ruby.tvShows);
+ ReceiveBattleTowerData(&sReceivedRecords->ruby.battleTowerRecord, sizeof(sReceivedRecords->ruby), multiplayerId);
+ ReceiveTvShowsData(sReceivedRecords->ruby.tvShows, sizeof(sReceivedRecords->ruby), multiplayerId);
+ ReceivePokeNewsData(sReceivedRecords->ruby.pokeNews, sizeof(sReceivedRecords->ruby), multiplayerId);
+ ReceiveOldManData(&sReceivedRecords->ruby.oldMan, sizeof(sReceivedRecords->ruby), multiplayerId);
+ ReceiveDewfordTrendData(sReceivedRecords->ruby.dewfordTrends, sizeof(sReceivedRecords->ruby), multiplayerId);
+ ReceiveGiftItem(&sReceivedRecords->ruby.giftItem, multiplayerId);
}
else
{
// Emerald
- sub_80E7B2C((void *)sReceivedRecords->emerald.tvShows);
- ReceiveSecretBasesData(sReceivedRecords->emerald.secretBases, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveTvShowsData(sReceivedRecords->emerald.tvShows, sizeof(struct PlayerRecordsEmerald), which);
- ReceivePokeNewsData(sReceivedRecords->emerald.pokeNews, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveOldManData(&sReceivedRecords->emerald.oldMan, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveDewfordTrendData(sReceivedRecords->emerald.dewfordTrends, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveDaycareMailData(&sReceivedRecords->emerald.daycareMail, sizeof(struct PlayerRecordsEmerald), which, sReceivedRecords->emerald.tvShows);
- ReceiveBattleTowerData(&sReceivedRecords->emerald.battleTowerRecord, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, which);
- ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which);
- ReceiveApprenticeData(sReceivedRecords->emerald.apprentices, sizeof(struct PlayerRecordsEmerald), (u8) which);
- ReceiveRankingHallRecords(&sReceivedRecords->emerald.hallRecords, sizeof(struct PlayerRecordsEmerald), (u8) which);
+ CalculateDaycareMailRandSum((void *)sReceivedRecords->emerald.tvShows);
+ ReceiveSecretBasesData(sReceivedRecords->emerald.secretBases, sizeof(sReceivedRecords->emerald), multiplayerId);
+ ReceiveTvShowsData(sReceivedRecords->emerald.tvShows, sizeof(sReceivedRecords->emerald), multiplayerId);
+ ReceivePokeNewsData(sReceivedRecords->emerald.pokeNews, sizeof(sReceivedRecords->emerald), multiplayerId);
+ ReceiveOldManData(&sReceivedRecords->emerald.oldMan, sizeof(sReceivedRecords->emerald), multiplayerId);
+ ReceiveDewfordTrendData(sReceivedRecords->emerald.dewfordTrends, sizeof(sReceivedRecords->emerald), multiplayerId);
+ ReceiveDaycareMailData(&sReceivedRecords->emerald.daycareMail, sizeof(sReceivedRecords->emerald), multiplayerId, sReceivedRecords->emerald.tvShows);
+ ReceiveBattleTowerData(&sReceivedRecords->emerald.battleTowerRecord, sizeof(sReceivedRecords->emerald), multiplayerId);
+ ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, multiplayerId);
+ ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(sReceivedRecords->emerald), multiplayerId);
+ ReceiveApprenticeData(sReceivedRecords->emerald.apprentices, sizeof(sReceivedRecords->emerald), (u8)multiplayerId);
+ ReceiveRankingHallRecords(&sReceivedRecords->emerald.hallRecords, sizeof(sReceivedRecords->emerald), (u8)multiplayerId);
}
}
@@ -307,10 +303,11 @@ static void Task_RecordMixing_SoundEffect(u8 taskId)
#undef tCounter
-#define tState data[0]
-#define tSndEffTaskId data[15]
+#define tTimer data[8]
+#define tLinkTaskId data[10]
+#define tSoundTaskId data[15]
-// Note: Currently, special var 8005 contains the player's spot id.
+// Note: gSpecialVar_0x8005 here contains the player's spot id.
static void Task_RecordMixing_Main(u8 taskId)
{
s16 *data = gTasks[taskId].data;
@@ -318,56 +315,54 @@ static void Task_RecordMixing_Main(u8 taskId)
switch (tState)
{
case 0: // init
- sSentRecord = malloc(sizeof(union PlayerRecords));
- sReceivedRecords = malloc(sizeof(union PlayerRecords) * MAX_LINK_PLAYERS);
+ sSentRecord = malloc(sizeof(*sSentRecord));
+ sReceivedRecords = malloc(sizeof(*sReceivedRecords) * MAX_LINK_PLAYERS);
SetLocalLinkPlayerId(gSpecialVar_0x8005);
VarSet(VAR_TEMP_0, 1);
- gUnknown_03001130 = FALSE;
+ sReadyToReceive = FALSE;
PrepareExchangePacket();
CreateRecordMixingLights();
tState = 1;
- data[10] = CreateTask(Task_MixingRecordsRecv, 80);
- tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 81);
+ tLinkTaskId = CreateTask(Task_MixingRecordsRecv, 80);
+ tSoundTaskId = CreateTask(Task_RecordMixing_SoundEffect, 81);
break;
case 1: // wait for Task_MixingRecordsRecv
- if (!gTasks[data[10]].isActive)
+ if (!gTasks[tLinkTaskId].isActive)
{
tState = 2;
FlagSet(FLAG_SYS_MIX_RECORD);
DestroyRecordMixingLights();
- DestroyTask(tSndEffTaskId);
+ DestroyTask(tSoundTaskId);
}
break;
case 2:
- data[10] = CreateTask(Task_DoRecordMixing, 10);
+ tLinkTaskId = CreateTask(Task_DoRecordMixing, 10);
tState = 3;
PlaySE(SE_M_BATON_PASS);
break;
case 3: // wait for Task_DoRecordMixing
- if (!gTasks[data[10]].isActive)
+ if (!gTasks[tLinkTaskId].isActive)
{
tState = 4;
if (gWirelessCommType == 0)
- data[10] = CreateTask_ReestablishCableClubLink();
+ tLinkTaskId = CreateTask_ReestablishCableClubLink();
PrintTextOnRecordMixing(gText_RecordMixingComplete);
- data[8] = 0;
+ tTimer = 0;
}
break;
case 4: // wait 60 frames
- if (++data[8] > 60)
+ if (++tTimer > 60)
tState = 5;
break;
- case 5:
- if (!gTasks[data[10]].isActive)
+ case 5: // Wait for the task created by CreateTask_ReestablishCableClubLink
+ if (!gTasks[tLinkTaskId].isActive)
{
free(sReceivedRecords);
free(sSentRecord);
SetLinkWaitingForScript();
if (gWirelessCommType != 0)
- {
CreateTask(Task_ReturnToFieldRecordMixing, 10);
- }
ClearDialogWindowAndFrame(0, 1);
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -376,26 +371,38 @@ static void Task_RecordMixing_Main(u8 taskId)
}
}
-#undef tState
-#undef tSndEffTaskId
+#undef tTimer
+#undef tLinkTaskId
+#undef tSoundTaskId
+
+// Task data for Task_MixingRecordsRecv and subsequent tasks
+#define tSentRecord data[2] // Used to store a ptr, so data[2] and data[3]
+#define tNumChunksSent data[4]
+#define tMultiplayerId data[5]
+#define tCopyTaskId data[10]
+
+// Task data for Task_CopyReceiveBuffer
+#define tParentTaskId data[0]
+#define tNumChunksRecv(i) data[1 + (i)] // Number of chunks of the record received per player
+#define tRecvRecords data[5] // Used to store a ptr, so data[5] and data[6]
static void Task_MixingRecordsRecv(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
PrintTextOnRecordMixing(gText_MixingRecords);
task->data[8] = 0x708;
- task->data[0] = 400;
+ task->tState = 400;
ClearLinkCallback_2();
break;
case 100: // wait 20 frames
if (++task->data[12] > 20)
{
task->data[12] = 0;
- task->data[0] = 101;
+ task->tState = 101;
}
break;
case 101:
@@ -406,14 +413,14 @@ static void Task_MixingRecordsRecv(u8 taskId)
if (players == GetSavedPlayerCount())
{
PlaySE(SE_PIN);
- task->data[0] = 201;
+ task->tState = 201;
task->data[12] = 0;
}
}
else
{
PlaySE(SE_BOO);
- task->data[0] = 301;
+ task->tState = 301;
}
}
break;
@@ -422,17 +429,17 @@ static void Task_MixingRecordsRecv(u8 taskId)
if (GetSavedPlayerCount() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30))
{
CheckShouldAdvanceLinkState();
- task->data[0] = 1;
+ task->tState = 1;
}
break;
case 301:
if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
- task->data[0] = 1;
+ task->tState = 1;
break;
case 400: // wait 20 frames
if (++task->data[12] > 20)
{
- task->data[0] = 1;
+ task->tState = 1;
task->data[12] = 0;
}
break;
@@ -440,7 +447,7 @@ static void Task_MixingRecordsRecv(u8 taskId)
if (gReceivedRemoteLinkPlayers != 0)
{
ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), STR_CONV_MODE_LEADING_ZEROS, 2);
- task->data[0] = 5;
+ task->tState = 5;
}
break;
case 2:
@@ -448,35 +455,34 @@ static void Task_MixingRecordsRecv(u8 taskId)
u8 subTaskId;
task->data[6] = GetLinkPlayerCount_2();
- task->data[0] = 0;
- task->data[5] = GetMultiplayerId_();
+ task->tState = 0;
+ task->tMultiplayerId = GetMultiplayerId_();
task->func = Task_SendPacket;
if (Link_AnyPartnersPlayingRubyOrSapphire())
{
- StorePtrInTaskData(sSentRecord, (u16 *)&task->data[2]);
+ StorePtrInTaskData(sSentRecord, &task->tSentRecord);
subTaskId = CreateTask(Task_CopyReceiveBuffer, 80);
- task->data[10] = subTaskId;
- gTasks[subTaskId].data[0] = taskId;
- StorePtrInTaskData(sReceivedRecords, (u16 *)&gTasks[subTaskId].data[5]);
- sRecordStructSize = sizeof(struct PlayerRecordsRS);
+ task->tCopyTaskId = subTaskId;
+ gTasks[subTaskId].tParentTaskId = taskId;
+ StorePtrInTaskData(sReceivedRecords, &gTasks[subTaskId].tRecvRecords);
+ sRecordStructSize = sizeof(struct PlayerRecordRS);
}
else
{
- StorePtrInTaskData(sSentRecord, (u16 *)&task->data[2]);
+ StorePtrInTaskData(sSentRecord, &task->tSentRecord);
subTaskId = CreateTask(Task_CopyReceiveBuffer, 80);
- task->data[10] = subTaskId;
- gTasks[subTaskId].data[0] = taskId;
- StorePtrInTaskData(sReceivedRecords, (u16 *)&gTasks[subTaskId].data[5]);
- sRecordStructSize = sizeof(struct PlayerRecordsEmerald);
+ task->tCopyTaskId = subTaskId;
+ gTasks[subTaskId].tParentTaskId = taskId;
+ StorePtrInTaskData(sReceivedRecords, &gTasks[subTaskId].tRecvRecords);
+ sRecordStructSize = sizeof(struct PlayerRecordEmerald);
}
- // Note: This task is destroyed by Task_CopyReceiveBuffer when it's done.
}
break;
case 5: // wait 60 frames
if (++task->data[10] > 60)
{
task->data[10] = 0;
- task->data[0] = 2;
+ task->tState = 2;
}
break;
}
@@ -485,34 +491,34 @@ static void Task_MixingRecordsRecv(u8 taskId)
static void Task_SendPacket(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- // does this send the data 24 times?
-
- switch (task->data[0])
+ switch (task->tState)
{
- case 0: // Copy record data to send buffer
+ case 0: // Copy record data chunk to send buffer
{
- void *recordData = LoadPtrFromTaskData(&task->data[2]) + task->data[4] * BUFFER_CHUNK_SIZE;
+ void *recordData = LoadPtrFromTaskData(&task->tSentRecord) + task->tNumChunksSent * BUFFER_CHUNK_SIZE;
memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
- task->data[0]++;
+ task->tState++;
}
break;
case 1:
if (GetMultiplayerId() == 0)
SendBlockRequest(BLOCK_REQ_SIZE_200);
- task->data[0]++;
+ task->tState++;
break;
case 2:
break;
case 3:
- task->data[4]++;
- if (task->data[4] == sRecordStructSize / 200 + 1)
- task->data[0]++;
+ // If sent final chunk of record, move on to next state.
+ // Otherwise return to first state and send next chunk.
+ task->tNumChunksSent++;
+ if (task->tNumChunksSent == sRecordStructSize / BUFFER_CHUNK_SIZE + 1)
+ task->tState++;
else
- task->data[0] = 0;
+ task->tState = 0;
break;
case 4:
- if (!gTasks[task->data[10]].isActive)
+ if (!gTasks[task->tCopyTaskId].isActive)
task->func = Task_SendPacket_SwitchToReceive;
break;
}
@@ -527,38 +533,35 @@ static void Task_CopyReceiveBuffer(u8 taskId)
if (status == GetLinkPlayerCountAsBitFlags())
{
u8 i;
-
for (i = 0; i < GetLinkPlayerCount(); i++)
{
- void *dest;
- void *src;
-
if ((status >> i) & 1)
{
- dest = LoadPtrFromTaskData((u16 *)&task->data[5]) + task->data[i + 1] * BUFFER_CHUNK_SIZE + sRecordStructSize * i;
- src = GetPlayerRecvBuffer(i);
- if ((task->data[i + 1] + 1) * BUFFER_CHUNK_SIZE > sRecordStructSize)
- memcpy(dest, src, sRecordStructSize - task->data[i + 1] * BUFFER_CHUNK_SIZE);
+ void *dest = LoadPtrFromTaskData(&task->tRecvRecords) + task->tNumChunksRecv(i) * BUFFER_CHUNK_SIZE + sRecordStructSize * i;
+ void *src = GetPlayerRecvBuffer(i);
+ if ((task->tNumChunksRecv(i) + 1) * BUFFER_CHUNK_SIZE > sRecordStructSize)
+ memcpy(dest, src, sRecordStructSize - task->tNumChunksRecv(i) * BUFFER_CHUNK_SIZE);
else
memcpy(dest, src, BUFFER_CHUNK_SIZE);
ResetBlockReceivedFlag(i);
- task->data[i + 1]++;
- if (task->data[i + 1] == sRecordStructSize / BUFFER_CHUNK_SIZE + 1)
+ task->tNumChunksRecv(i)++;
+ if (task->tNumChunksRecv(i) == sRecordStructSize / BUFFER_CHUNK_SIZE + 1)
handledPlayers++;
}
}
- gTasks[task->data[0]].data[0]++;
+ gTasks[task->tParentTaskId].tState++;
}
if (handledPlayers == GetLinkPlayerCount())
DestroyTask(taskId);
}
-static void sub_80E776C(u8 taskId)
+static void Task_WaitReceivePacket(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- if (!gTasks[task->data[10]].isActive)
+ // Wait for Task_CopyReceiveBuffer to finish
+ if (!gTasks[task->tCopyTaskId].isActive)
DestroyTask(taskId);
}
@@ -566,15 +569,15 @@ static void Task_ReceivePacket(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- task->func = sub_80E776C;
- if (gUnknown_03001130 == TRUE)
- ReceiveExchangePacket(task->data[5]);
+ task->func = Task_WaitReceivePacket;
+ if (sReadyToReceive == TRUE)
+ ReceiveExchangePacket(task->tMultiplayerId);
}
static void Task_SendPacket_SwitchToReceive(u8 taskId)
{
gTasks[taskId].func = Task_ReceivePacket;
- gUnknown_03001130 = TRUE;
+ sReadyToReceive = TRUE;
}
static void *LoadPtrFromTaskData(const u16 *asShort)
@@ -607,46 +610,46 @@ static void ShufflePlayerIndices(u32 *data)
switch (players)
{
case 2:
- for (i = 0; i < 2; i++)
- data[i] = gUnknown_0858CF8C[i];
+ for (i = 0; i < ARRAY_COUNT(sPlayerIdxOrders_2Player); i++)
+ data[i] = sPlayerIdxOrders_2Player[i];
break;
case 3:
- linkTrainerId = GetLinkPlayerTrainerId(0) % 2;
- for (i = 0; i < 3; i++)
- data[i] = gUnknown_0858CF8E[linkTrainerId][i];
+ linkTrainerId = GetLinkPlayerTrainerId(0) % ARRAY_COUNT(sPlayerIdxOrders_3Player);
+ for (i = 0; i < ARRAY_COUNT(sPlayerIdxOrders_3Player[0]); i++)
+ data[i] = sPlayerIdxOrders_3Player[linkTrainerId][i];
break;
case 4:
- linkTrainerId = GetLinkPlayerTrainerId(0) % 9;
- for (i = 0; i < 4; i++)
- data[i] = gUnknown_0858CF94[linkTrainerId][i];
+ linkTrainerId = GetLinkPlayerTrainerId(0) % ARRAY_COUNT(sPlayerIdxOrders_4Player);
+ for (i = 0; i < ARRAY_COUNT(sPlayerIdxOrders_4Player[0]); i++)
+ data[i] = sPlayerIdxOrders_4Player[linkTrainerId][i];
break;
}
}
-static void ReceiveOldManData(OldMan *oldMan, size_t recordSize, u8 which)
+static void ReceiveOldManData(OldMan *records, size_t recordSize, u8 multiplayerId)
{
u8 version;
u16 language;
- OldMan *dest;
+ OldMan *oldMan;
u32 mixIndices[MAX_LINK_PLAYERS];
ShufflePlayerIndices(mixIndices);
- dest = (void *)oldMan + recordSize * mixIndices[which];
- version = gLinkPlayers[mixIndices[which]].version;
- language = gLinkPlayers[mixIndices[which]].language;
+ oldMan = (void *)records + recordSize * mixIndices[multiplayerId];
+ version = gLinkPlayers[mixIndices[multiplayerId]].version;
+ language = gLinkPlayers[mixIndices[multiplayerId]].language;
if (Link_AnyPartnersPlayingRubyOrSapphire())
- SanitizeReceivedRubyOldMan(dest, version, language);
+ SanitizeReceivedRubyOldMan(oldMan, version, language);
else
- SanitizeReceivedEmeraldOldMan(dest, version, language);
+ SanitizeReceivedEmeraldOldMan(oldMan, version, language);
- memcpy(sOldManSave, (void *)oldMan + recordSize * mixIndices[which], sizeof(OldMan));
+ memcpy(sOldManSave, (void *)records + recordSize * mixIndices[multiplayerId], sizeof(OldMan));
ResetMauvilleOldManFlag();
}
-static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u8 which)
+static void ReceiveBattleTowerData(void *records, size_t recordSize, u8 multiplayerId)
{
- struct EmeraldBattleTowerRecord *dest;
+ struct EmeraldBattleTowerRecord *battleTowerRecord;
struct BattleTowerPokemon *btPokemon;
u32 mixIndices[MAX_LINK_PLAYERS];
s32 i;
@@ -654,77 +657,90 @@ static void ReceiveBattleTowerData(void *battleTowerRecord, size_t recordSize, u
ShufflePlayerIndices(mixIndices);
if (Link_AnyPartnersPlayingRubyOrSapphire())
{
- if (RubyBattleTowerRecordToEmerald((void *)battleTowerRecord + recordSize * mixIndices[which], (void *)battleTowerRecord + recordSize * which) == TRUE)
+ if (RubyBattleTowerRecordToEmerald((void *)records + recordSize * mixIndices[multiplayerId], (void *)records + recordSize * multiplayerId) == TRUE)
{
- dest = (void *)battleTowerRecord + recordSize * which;
- dest->language = gLinkPlayers[mixIndices[which]].language;
- CalcEmeraldBattleTowerChecksum(dest);
+ battleTowerRecord = (void *)records + recordSize * multiplayerId;
+ battleTowerRecord->language = gLinkPlayers[mixIndices[multiplayerId]].language;
+ CalcEmeraldBattleTowerChecksum(battleTowerRecord);
}
}
else
{
- memcpy((void *)battleTowerRecord + recordSize * which, (void *)battleTowerRecord + recordSize * mixIndices[which], sizeof(struct EmeraldBattleTowerRecord));
- dest = (void *)battleTowerRecord + recordSize * which;
+ memcpy((void *)records + recordSize * multiplayerId, (void *)records + recordSize * mixIndices[multiplayerId], sizeof(struct EmeraldBattleTowerRecord));
+ battleTowerRecord = (void *)records + recordSize * multiplayerId;
for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
{
- btPokemon = &dest->party[i];
+ btPokemon = &battleTowerRecord->party[i];
if (btPokemon->species != SPECIES_NONE && IsStringJapanese(btPokemon->nickname))
ConvertInternationalString(btPokemon->nickname, LANGUAGE_JAPANESE);
}
- CalcEmeraldBattleTowerChecksum(dest);
+ CalcEmeraldBattleTowerChecksum(battleTowerRecord);
}
- PutNewBattleTowerRecord((void *)battleTowerRecord + recordSize * which);
+ PutNewBattleTowerRecord((void *)records + recordSize * multiplayerId);
}
-static void ReceiveLilycoveLadyData(LilycoveLady *lilycoveLady, size_t recordSize, u8 which)
+static void ReceiveLilycoveLadyData(LilycoveLady *records, size_t recordSize, u8 multiplayerId)
{
- LilycoveLady *dest;
+ LilycoveLady *lilycoveLady;
u32 mixIndices[MAX_LINK_PLAYERS];
ShufflePlayerIndices(mixIndices);
- memcpy((void *)lilycoveLady + recordSize * which, sLilycoveLadySave, sizeof(LilycoveLady));
+ memcpy((void *)records + recordSize * multiplayerId, sLilycoveLadySave, sizeof(LilycoveLady));
if (GetLilycoveLadyId() == 0)
{
- dest = malloc(sizeof(LilycoveLady));
- if (dest == NULL)
+ lilycoveLady = malloc(sizeof(*lilycoveLady));
+ if (lilycoveLady == NULL)
return;
- memcpy(dest, sLilycoveLadySave, sizeof(LilycoveLady));
+ memcpy(lilycoveLady, sLilycoveLadySave, sizeof(LilycoveLady));
}
else
{
- dest = NULL;
+ lilycoveLady = NULL;
}
- memcpy(sLilycoveLadySave, (void *)lilycoveLady + recordSize * mixIndices[which], sizeof(LilycoveLady));
+ memcpy(sLilycoveLadySave, (void *)records + recordSize * mixIndices[multiplayerId], sizeof(LilycoveLady));
ResetLilycoveLadyForRecordMix();
- if (dest != NULL)
+ if (lilycoveLady != NULL)
{
- QuizLadyClearQuestionForRecordMix(dest);
- free(dest);
+ QuizLadyClearQuestionForRecordMix(lilycoveLady);
+ free(lilycoveLady);
}
}
-static u8 sub_80E7A9C(struct DaycareMail *rmMail)
+static u8 GetDaycareMailItemId(struct DaycareMail *mail)
{
- return rmMail->message.itemId;
+ return mail->message.itemId;
}
-static void sub_80E7AA4(struct RecordMixingDaycareMail *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1)
+// Indexes for a 2 element array used to store the multiplayer id and daycare
+// slot that correspond to a daycare Pokémon that can hold an item.
+enum {
+ MULTIPLAYER_ID,
+ DAYCARE_SLOT,
+};
+
+static void SwapDaycareMail(struct RecordMixingDaycareMail *records, size_t recordSize, u8 (*idxs)[2], u8 playerSlot1, u8 playerSlot2)
{
- struct DaycareMail buffer;
- struct RecordMixingDaycareMail *mail1;
- struct RecordMixingDaycareMail *mail2;
-
- mail1 = (void *)src + recordSize * idxs[which0][0];
- memcpy(&buffer, &mail1->mail[idxs[which0][1]], sizeof(struct DaycareMail));
- mail2 = (void *)src + recordSize * idxs[which1][0];
- memcpy(&mail1->mail[idxs[which0][1]], &mail2->mail[idxs[which1][1]], sizeof(struct DaycareMail));
- memcpy(&mail2->mail[idxs[which1][1]], &buffer, sizeof(struct DaycareMail));
+ struct DaycareMail temp;
+ struct RecordMixingDaycareMail *mixMail1, *mixMail2;
+
+ // 1st player's daycare mail --> temp
+ mixMail1 = (void *)records + recordSize * idxs[playerSlot1][MULTIPLAYER_ID];
+ memcpy(&temp, &mixMail1->mail[idxs[playerSlot1][DAYCARE_SLOT]], sizeof(struct DaycareMail));
+
+ // 2nd player's daycare mail --> 1st player's daycare mail
+ mixMail2 = (void *)records + recordSize * idxs[playerSlot2][MULTIPLAYER_ID];
+ memcpy(&mixMail1->mail[idxs[playerSlot1][DAYCARE_SLOT]], &mixMail2->mail[idxs[playerSlot2][DAYCARE_SLOT]], sizeof(struct DaycareMail));
+
+ // temp --> 2nd player's daycare mail
+ memcpy(&mixMail2->mail[idxs[playerSlot2][DAYCARE_SLOT]], &temp, sizeof(struct DaycareMail));
}
-static void sub_80E7B2C(const u8 *src)
+// This sum is used to determine which players will swap daycare mail if there are more than 2 players who can.
+// The TV show data is used to calculate this sum.
+static void CalculateDaycareMailRandSum(const u8 *src)
{
u8 sum;
s32 i;
@@ -733,73 +749,80 @@ static void sub_80E7B2C(const u8 *src)
for (i = 0; i < 256; i++)
sum += src[i];
- gUnknown_03001160 = sum;
+ sDaycareMailRandSum = sum;
}
-static u8 sub_80E7B54(void)
+static u8 GetDaycareMailRandSum(void)
{
- return gUnknown_03001160;
+ return sDaycareMailRandSum;
}
-static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *src, size_t recordSize, u8 which, TVShow *shows)
+static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *records, size_t recordSize, u8 multiplayerId, TVShow *shows)
{
u16 i, j;
u8 linkPlayerCount;
u8 tableId;
- struct RecordMixingDaycareMail *_src;
- u8 which0, which1;
+ struct RecordMixingDaycareMail *mixMail;
+ u8 playerSlot1, playerSlot2;
void *ptr;
- u8 sp04[4];
- u8 sp08[4];
- struct RecordMixingDaycareMail *sp0c[4];
- u8 sp1c[4][2];
- u8 sp24[4][2];
- u8 sp34;
+ u8 unusedArr1[MAX_LINK_PLAYERS];
+ u8 unusedArr2[MAX_LINK_PLAYERS];
+ struct RecordMixingDaycareMail *unusedMixMail[MAX_LINK_PLAYERS];
+ bool8 canHoldItem[MAX_LINK_PLAYERS][DAYCARE_MON_COUNT];
+ u8 idxs[MAX_LINK_PLAYERS][2];
+ u8 numDaycareCanHold;
u16 oldSeed;
bool32 anyRS;
+ // Seed RNG to the first player's trainer id so that
+ // every player has the same random swap occur
+ // (see the other use of Random2 in this function)
oldSeed = Random2();
SeedRng2(gLinkPlayers[0].trainerId);
linkPlayerCount = GetLinkPlayerCount();
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- sp04[i] = 0xFF;
- sp08[i] = 0;
- sp1c[i][0] = 0;
- sp1c[i][1] = 0;
+ unusedArr1[i] = 0xFF;
+ unusedArr2[i] = 0;
+ canHoldItem[i][0] = FALSE;
+ canHoldItem[i][1] = FALSE;
}
+ // Handle language differences if RS / Japanese players are present
anyRS = Link_AnyPartnersPlayingRubyOrSapphire();
for (i = 0; i < GetLinkPlayerCount(); i++)
{
u32 language, version;
- _src = (void *)src + i * recordSize;
+ mixMail = (void *)records + i * recordSize;
language = gLinkPlayers[i].language;
version = gLinkPlayers[i].version & 0xFF;
- for (j = 0; j < _src->numDaycareMons; j++)
+
+ for (j = 0; j < mixMail->numDaycareMons; j++)
{
u16 otNameLanguage, nicknameLanguage;
- struct DaycareMail *recordMixingMail = &_src->mail[j];
+ struct DaycareMail *daycareMail = &mixMail->mail[j];
- if (!recordMixingMail->message.itemId)
+ if (daycareMail->message.itemId == ITEM_NONE)
continue;
if (anyRS)
{
- if (StringLength(recordMixingMail->OT_name) <= 5)
+ // Handle OT name language
+ if (StringLength(daycareMail->otName) <= 5)
{
otNameLanguage = LANGUAGE_JAPANESE;
}
else
{
- StripExtCtrlCodes(recordMixingMail->OT_name);
+ StripExtCtrlCodes(daycareMail->otName);
otNameLanguage = language;
}
- if (recordMixingMail->monName[0] == EXT_CTRL_CODE_BEGIN && recordMixingMail->monName[1] == EXT_CTRL_CODE_JPN)
+ // Handle nickname langugae
+ if (daycareMail->monName[0] == EXT_CTRL_CODE_BEGIN && daycareMail->monName[1] == EXT_CTRL_CODE_JPN)
{
- StripExtCtrlCodes(recordMixingMail->monName);
+ StripExtCtrlCodes(daycareMail->monName);
nicknameLanguage = LANGUAGE_JAPANESE;
}
else
@@ -807,121 +830,145 @@ static void ReceiveDaycareMailData(struct RecordMixingDaycareMail *src, size_t r
nicknameLanguage = language;
}
+ // Set languages
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
{
- recordMixingMail->gameLanguage = otNameLanguage;
- recordMixingMail->monLanguage = nicknameLanguage;
+ daycareMail->gameLanguage = otNameLanguage;
+ daycareMail->monLanguage = nicknameLanguage;
}
}
else if (language == LANGUAGE_JAPANESE)
{
- if (IsStringJapanese(recordMixingMail->OT_name))
- recordMixingMail->gameLanguage = LANGUAGE_JAPANESE;
+ if (IsStringJapanese(daycareMail->otName))
+ daycareMail->gameLanguage = LANGUAGE_JAPANESE;
else
- recordMixingMail->gameLanguage = GAME_LANGUAGE;
+ daycareMail->gameLanguage = GAME_LANGUAGE;
- if (IsStringJapanese(recordMixingMail->monName))
- recordMixingMail->monLanguage = LANGUAGE_JAPANESE;
+ if (IsStringJapanese(daycareMail->monName))
+ daycareMail->monLanguage = LANGUAGE_JAPANESE;
else
- recordMixingMail->monLanguage = GAME_LANGUAGE;
+ daycareMail->monLanguage = GAME_LANGUAGE;
}
}
}
- sp34 = 0;
+ // For each player, get which of their daycare Pokémon can hold items
+ // (can't hold items if already holding one, or if daycare slot is empty).
+ // Note that when deposited in the daycare, Pokémon have their mail taken
+ // from them and returned upon withdrawal, which means daycare Pokémon that
+ // have associated mail do not have a held item.
+ // Because not holding an item is the only determination for a swap, this also
+ // means that a "swap" can occur even if neither Pokémon has associated mail.
+ numDaycareCanHold = 0;
for (i = 0; i < linkPlayerCount; i++)
{
- _src = (void *)src + i * recordSize;
- if (_src->numDaycareMons == 0)
+ mixMail = (void *)records + i * recordSize;
+ if (mixMail->numDaycareMons == 0)
continue;
- for (j = 0; j < _src->numDaycareMons; j++)
+ for (j = 0; j < mixMail->numDaycareMons; j++)
{
- if (!_src->holdsItem[j])
- sp1c[i][j] = 1;
+ if (!mixMail->cantHoldItem[j])
+ canHoldItem[i][j] = TRUE;
}
}
+ // Fill the idxs array with data about which players
+ // and which daycare slots should swap mail.
j = 0;
for (i = 0; i < linkPlayerCount; i++)
{
- _src = (void *)src + i * recordSize;
- if (sp1c[i][0] == TRUE || sp1c[i][1] == TRUE)
- sp34++;
-
- if (sp1c[i][0] == TRUE && sp1c[i][1] == FALSE)
+ mixMail = (void *)records + i * recordSize;
+
+ // Count number of players that have at least
+ // one daycare Pokémon with no held item
+ if (canHoldItem[i][0] == TRUE || canHoldItem[i][1] == TRUE)
+ numDaycareCanHold++;
+
+ if (canHoldItem[i][0] == TRUE && canHoldItem[i][1] == FALSE)
{
- sp24[j][0] = i;
- sp24[j][1] = 0;
+ // Only daycare slot 0 can hold an item for this player, record it
+ idxs[j][MULTIPLAYER_ID] = i;
+ idxs[j][DAYCARE_SLOT] = 0;
j++;
}
- else if (sp1c[i][0] == FALSE && sp1c[i][1] == TRUE)
+ else if (canHoldItem[i][0] == FALSE && canHoldItem[i][1] == TRUE)
{
- sp24[j][0] = i;
- sp24[j][1] = 1;
+ // Only daycare slot 1 can hold an item for this player, record it
+ idxs[j][MULTIPLAYER_ID] = i;
+ idxs[j][DAYCARE_SLOT] = 1;
j++;
}
- else if (sp1c[i][0] == TRUE && sp1c[i][1] == TRUE)
+ else if (canHoldItem[i][0] == TRUE && canHoldItem[i][1] == TRUE)
{
- u32 var1, var2;
+ // Both daycare slots can hold an item, choose which one to use.
+ // If either one is the only one to have associated mail, use that one.
+ // If both do or don't have associated mail, choose one randomly.
+ u32 itemId1, itemId2;
+ idxs[j][MULTIPLAYER_ID] = i;
+ itemId1 = GetDaycareMailItemId(&mixMail->mail[0]);
+ itemId2 = GetDaycareMailItemId(&mixMail->mail[1]);
+
+ if ((!itemId1 && !itemId2) || (itemId1 && itemId2))
+ idxs[j][DAYCARE_SLOT] = Random2() % 2;
+ else if (itemId1 && !itemId2)
+ idxs[j][DAYCARE_SLOT] = 0;
+ else if (!itemId1 && itemId2)
+ idxs[j][DAYCARE_SLOT] = 1;
- sp24[j][0] = i;
- var1 = sub_80E7A9C(&_src->mail[0]);
- var2 = sub_80E7A9C(&_src->mail[1]);
- if (!(var1 || var2) || (var1 && var2))
- {
- sp24[j][1] = Random2() % 2;
- }
- else if (var1 && !var2)
- {
- sp24[j][1] = 0;
- }
- else if (!var1 && var2)
- {
- sp24[j][1] = 1;
- }
j++;
}
}
- for (i = 0; i < 4; i++)
+ // Copy the player's record mix mail 4 times to an array that's never read.
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- _src = &src[which * recordSize];
- sp0c[i] = _src;
+ mixMail = &records[multiplayerId * recordSize];
+ unusedMixMail[i] = mixMail;
}
- tableId = sub_80E7B54() % 3;
- switch (sp34)
+ // Choose a random table id to determine who will
+ // swap if there are more than 2 candidate players.
+ tableId = GetDaycareMailRandSum() % NUM_SWAP_COMBOS;
+ switch (numDaycareCanHold)
{
case 2:
- sub_80E7AA4(src, recordSize, sp24, 0, 1);
+ // 2 players can swap, just perform swap.
+ SwapDaycareMail(records, recordSize, idxs, 0, 1);
break;
case 3:
- which0 = gUnknown_0858CFB8[tableId][0];
- which1 = gUnknown_0858CFB8[tableId][1];
- sub_80E7AA4(src, recordSize, sp24, which0, which1);
+ // 3 players can swap, select 2 and leave the 3rd out
+ playerSlot1 = sDaycareMailSwapIds_3Player[tableId][0];
+ playerSlot2 = sDaycareMailSwapIds_3Player[tableId][1];
+ SwapDaycareMail(records, recordSize, idxs, playerSlot1, playerSlot2);
break;
case 4:
- ptr = sp24;
- which0 = gUnknown_0858CFBE[tableId][0];
- which1 = gUnknown_0858CFBE[tableId][1];
- sub_80E7AA4(src, recordSize, ptr, which0, which1);
- which0 = gUnknown_0858CFBE[tableId][2];
- which1 = gUnknown_0858CFBE[tableId][3];
- sub_80E7AA4(src, recordSize, ptr, which0, which1);
+ // 4 players can swap, select which 2 pairings will swap
+ ptr = idxs;
+
+ // Swap pair 1
+ playerSlot1 = sDaycareMailSwapIds_4Player[tableId][0];
+ playerSlot2 = sDaycareMailSwapIds_4Player[tableId][1];
+ SwapDaycareMail(records, recordSize, ptr, playerSlot1, playerSlot2);
+
+ // Swap pair 2
+ playerSlot1 = sDaycareMailSwapIds_4Player[tableId][2];
+ playerSlot2 = sDaycareMailSwapIds_4Player[tableId][3];
+ SwapDaycareMail(records, recordSize, ptr, playerSlot1, playerSlot2);
break;
}
- _src = (void *)src + which * recordSize;
- memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->mail[0], sizeof(struct DaycareMail));
- memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->mail[1], sizeof(struct DaycareMail));
+ // Save player's record mixed mail to the daycare (in case it has changed)
+ mixMail = (void *)records + multiplayerId * recordSize;
+ memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &mixMail->mail[0], sizeof(struct DaycareMail));
+ memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &mixMail->mail[1], sizeof(struct DaycareMail));
SeedRng(oldSeed);
}
-static void ReceiveGiftItem(u16 *item, u8 which)
+static void ReceiveGiftItem(u16 *item, u8 multiplayerId)
{
- if (which != 0 && *item != ITEM_NONE && GetPocketByItemId(*item) == POCKET_KEY_ITEMS)
+ if (multiplayerId != 0 && *item != ITEM_NONE && GetPocketByItemId(*item) == POCKET_KEY_ITEMS)
{
if (!CheckBagHasItem(*item, 1) && !CheckPCHasItem(*item, 1) && AddBagItem(*item, 1))
{
@@ -941,29 +988,28 @@ static void Task_DoRecordMixing(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (Link_AnyPartnersPlayingRubyOrSapphire())
- task->data[0]++;
+ task->tState++;
else
- task->data[0] = 6;
+ task->tState = 6;
break;
-
- // Mixing Ruby/Sapphire records.
case 2:
+ // Mixing Ruby/Sapphire records.
SetContinueGameWarpStatusToDynamicWarp();
FullSaveGame();
- task->data[0]++;
+ task->tState++;
break;
case 3:
if (CheckSaveFile())
{
ClearContinueGameWarpStatus2();
- task->data[0] = 4;
+ task->tState = 4;
task->data[1] = 0;
}
break;
@@ -971,10 +1017,11 @@ static void Task_DoRecordMixing(u8 taskId)
if (++task->data[1] > 10)
{
SetCloseLinkCallback();
- task->data[0]++;
+ task->tState++;
}
break;
case 5:
+ // Finish mixing Ruby/Sapphire records
if (gReceivedRemoteLinkPlayers == FALSE)
DestroyTask(taskId);
break;
@@ -984,7 +1031,7 @@ static void Task_DoRecordMixing(u8 taskId)
if (!Rfu_SetLinkRecovery(FALSE))
{
CreateTask(Task_LinkSave, 5);
- task->data[0]++;
+ task->tState++;
}
break;
case 7: // wait for Task_LinkSave to finish.
@@ -993,17 +1040,17 @@ static void Task_DoRecordMixing(u8 taskId)
if (gWirelessCommType)
{
Rfu_SetLinkRecovery(TRUE);
- task->data[0] = 8;
+ task->tState = 8;
}
else
{
- task->data[0] = 4;
+ task->tState = 4;
}
}
break;
case 8:
SetLinkStandbyCallback();
- task->data[0]++;
+ task->tState++;
break;
case 9:
if (IsLinkTaskFinished())
@@ -1012,8 +1059,6 @@ static void Task_DoRecordMixing(u8 taskId)
}
}
-// New Emerald functions
-
static void GetSavedApprentices(struct Apprentice *dst, struct Apprentice *src)
{
s32 i, id;
@@ -1031,7 +1076,7 @@ static void GetSavedApprentices(struct Apprentice *dst, struct Apprentice *src)
numMixApprentices = 0;
for (i = 0; i < 2; i++)
{
- id = ((i + gSaveBlock2Ptr->playerApprentice.saveId) % (APPRENTICE_COUNT - 1)) + 1;
+ id = (i + gSaveBlock2Ptr->playerApprentice.saveId) % (APPRENTICE_COUNT - 1) + 1;
if (src[id].playerName[0] != EOS)
{
if (GetTrainerId(src[id].playerId) != GetTrainerId(gSaveBlock2Ptr->playerTrainerId))
@@ -1074,7 +1119,7 @@ void GetPlayerHallRecords(struct PlayerHallRecords *dst)
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
CopyTrainerId(dst->onePlayer[i][j].id, gSaveBlock2Ptr->playerTrainerId);
dst->onePlayer[i][j].language = GAME_LANGUAGE;
@@ -1082,7 +1127,7 @@ void GetPlayerHallRecords(struct PlayerHallRecords *dst)
}
}
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
dst->twoPlayers[j].language = GAME_LANGUAGE;
CopyTrainerId(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
@@ -1091,17 +1136,17 @@ void GetPlayerHallRecords(struct PlayerHallRecords *dst)
StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.opponentNames[j]);
}
- for (i = 0; i < 2; i++)
+ for (i = 0; i < FRONTIER_LVL_MODE_COUNT; i++)
{
- dst->onePlayer[0][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
- dst->onePlayer[1][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_DOUBLES][i];
- dst->onePlayer[2][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_MULTIS][i];
- dst->onePlayer[3][i].winStreak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
- dst->onePlayer[4][i].winStreak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
- dst->onePlayer[5][i].winStreak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i];
- dst->onePlayer[6][i].winStreak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
- dst->onePlayer[7][i].winStreak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
- dst->onePlayer[8][i].winStreak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i];
+ dst->onePlayer[RANKING_HALL_TOWER_SINGLES][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[RANKING_HALL_TOWER_DOUBLES][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_DOUBLES][i];
+ dst->onePlayer[RANKING_HALL_TOWER_MULTIS][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_MULTIS][i];
+ dst->onePlayer[RANKING_HALL_DOME][i].winStreak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[RANKING_HALL_PALACE][i].winStreak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[RANKING_HALL_ARENA][i].winStreak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i];
+ dst->onePlayer[RANKING_HALL_FACTORY][i].winStreak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
+ dst->onePlayer[RANKING_HALL_PIKE][i].winStreak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
+ dst->onePlayer[RANKING_HALL_PYRAMID][i].winStreak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i];
dst->twoPlayers[i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_LINK_MULTIS][i];
}
@@ -1115,28 +1160,26 @@ static bool32 IsApprenticeAlreadySaved(struct Apprentice *mixApprentice, struct
{
if (GetTrainerId(mixApprentice->playerId) == GetTrainerId(apprentices[i].playerId)
&& mixApprentice->number == apprentices[i].number)
- {
return TRUE;
- }
}
return FALSE;
}
-static void ReceiveApprenticeData(struct Apprentice *mixApprentice, size_t recordSize, u32 multiplayerId)
+static void ReceiveApprenticeData(struct Apprentice *records, size_t recordSize, u32 multiplayerId)
{
s32 i, numApprentices, apprenticeId;
- struct Apprentice *mixApprenticePtr;
+ struct Apprentice *mixApprentice;
u32 mixIndices[MAX_LINK_PLAYERS];
u32 apprenticeSaveId;
ShufflePlayerIndices(mixIndices);
- mixApprenticePtr = (void*)(mixApprentice) + (recordSize * mixIndices[multiplayerId]);
+ mixApprentice = (void*)records + (recordSize * mixIndices[multiplayerId]);
numApprentices = 0;
apprenticeId = 0;
for (i = 0; i < 2; i++)
{
- if (mixApprenticePtr[i].playerName[0] != EOS && !IsApprenticeAlreadySaved(&mixApprenticePtr[i], &gSaveBlock2Ptr->apprentices[0]))
+ if (mixApprentice[i].playerName[0] != EOS && !IsApprenticeAlreadySaved(&mixApprentice[i], &gSaveBlock2Ptr->apprentices[0]))
{
numApprentices++;
apprenticeId = i;
@@ -1147,169 +1190,185 @@ static void ReceiveApprenticeData(struct Apprentice *mixApprentice, size_t recor
{
case 1:
apprenticeSaveId = gSaveBlock2Ptr->playerApprentice.saveId + 1;
- gSaveBlock2Ptr->apprentices[apprenticeSaveId] = mixApprenticePtr[apprenticeId];
+ gSaveBlock2Ptr->apprentices[apprenticeSaveId] = mixApprentice[apprenticeId];
gSaveBlock2Ptr->playerApprentice.saveId = (gSaveBlock2Ptr->playerApprentice.saveId + 1) % (APPRENTICE_COUNT - 1);
break;
case 2:
for (i = 0; i < 2; i++)
{
apprenticeSaveId = ((i ^ 1) + gSaveBlock2Ptr->playerApprentice.saveId) % (APPRENTICE_COUNT - 1) + 1;
- gSaveBlock2Ptr->apprentices[apprenticeSaveId] = mixApprenticePtr[i];
+ gSaveBlock2Ptr->apprentices[apprenticeSaveId] = mixApprentice[i];
}
gSaveBlock2Ptr->playerApprentice.saveId = (gSaveBlock2Ptr->playerApprentice.saveId + 2) % (APPRENTICE_COUNT - 1);
break;
}
}
-static void sub_80E8578(struct RecordMixingHallRecords *dst, void *hallRecords, size_t recordSize, u32 arg3, s32 linkPlayerCount)
+static void GetNewHallRecords(struct RecordMixingHallRecords *dst, void *records, size_t recordSize, u32 multiplayerId, s32 linkPlayerCount)
{
s32 i, j, k, l;
- s32 var_68;
+ s32 repeatTrainers;
+ // Load sPartnerHallRecords with link partners' hall records
k = 0;
- i = 0;
- while (1)
+ for (i = 0; i < linkPlayerCount; i++)
{
- if (i >= linkPlayerCount)
- break;
- if (i != arg3)
- gUnknown_03001168[k++] = hallRecords;
-
- if (k == 3)
+ if (i != multiplayerId)
+ sPartnerHallRecords[k++] = records;
+ if (k == HALL_RECORDS_COUNT)
break;
- hallRecords += recordSize;
- i++;
+ records += recordSize;
}
+ // Get improved 1P hall records
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
{
- for (j = 0; j < 2; j++)
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
- for (k = 0; k < 3; k++)
+ // First get the existing saved records
+ for (k = 0; k < HALL_RECORDS_COUNT; k++)
dst->hallRecords1P[i][j][k] = gSaveBlock2Ptr->hallRecords1P[i][j][k];
+ // Then read the new mixed records
for (k = 0; k < linkPlayerCount - 1; k++)
{
- var_68 = 0;
- for (l = 0; l < 3; l++)
+ repeatTrainers = 0;
+ for (l = 0; l < HALL_RECORDS_COUNT; l++)
{
- if (GetTrainerId(dst->hallRecords1P[i][j][l].id) == GetTrainerId(gUnknown_03001168[k]->onePlayer[i][j].id))
+ // If the new trainer is already in the existing saved records, only
+ // use the new one if the win streak is better
+ if (GetTrainerId(dst->hallRecords1P[i][j][l].id) == GetTrainerId(sPartnerHallRecords[k]->onePlayer[i][j].id))
{
- var_68++;
- if (dst->hallRecords1P[i][j][l].winStreak < gUnknown_03001168[k]->onePlayer[i][j].winStreak)
- dst->hallRecords1P[i][j][l] = gUnknown_03001168[k]->onePlayer[i][j];
+ repeatTrainers++;
+ if (dst->hallRecords1P[i][j][l].winStreak < sPartnerHallRecords[k]->onePlayer[i][j].winStreak)
+ dst->hallRecords1P[i][j][l] = sPartnerHallRecords[k]->onePlayer[i][j];
}
}
- if (var_68 == 0)
- dst->hallRecords1P[i][j][k + 3] = gUnknown_03001168[k]->onePlayer[i][j];
+
+ // If all of the mixed records are new trainers, just save them
+ if (repeatTrainers == 0)
+ dst->hallRecords1P[i][j][k + HALL_RECORDS_COUNT] = sPartnerHallRecords[k]->onePlayer[i][j];
}
}
}
- for (j = 0; j < 2; j++)
+ // Get improved 2P hall records
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
{
- for (k = 0; k < 3; k++)
+ // First get the existing saved records
+ for (k = 0; k < HALL_RECORDS_COUNT; k++)
dst->hallRecords2P[j][k] = gSaveBlock2Ptr->hallRecords2P[j][k];
+ // Then read the new mixed records
for (k = 0; k < linkPlayerCount - 1; k++)
{
- var_68 = 0;
- for (l = 0; l < 3; l++)
+ repeatTrainers = 0;
+ for (l = 0; l < HALL_RECORDS_COUNT; l++)
{
- if (GetTrainerId(dst->hallRecords2P[j][l].id1) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id1)
- && GetTrainerId(dst->hallRecords2P[j][l].id2) == GetTrainerId(gUnknown_03001168[k]->twoPlayers[j].id2))
+ // If the new trainer pair is already in the existing saved records, only
+ // use the new pair if the win streak is better
+ if (GetTrainerId(dst->hallRecords2P[j][l].id1) == GetTrainerId(sPartnerHallRecords[k]->twoPlayers[j].id1)
+ && GetTrainerId(dst->hallRecords2P[j][l].id2) == GetTrainerId(sPartnerHallRecords[k]->twoPlayers[j].id2))
{
- var_68++;
- if (dst->hallRecords2P[j][l].winStreak < gUnknown_03001168[k]->twoPlayers[j].winStreak)
- dst->hallRecords2P[j][l] = gUnknown_03001168[k]->twoPlayers[j];
+ repeatTrainers++;
+ if (dst->hallRecords2P[j][l].winStreak < sPartnerHallRecords[k]->twoPlayers[j].winStreak)
+ dst->hallRecords2P[j][l] = sPartnerHallRecords[k]->twoPlayers[j];
}
}
- if (var_68 == 0)
- dst->hallRecords2P[j][k + 3] = gUnknown_03001168[k]->twoPlayers[j];
+
+ // If all of the mixed records are new trainer pairs, just save them
+ if (repeatTrainers == 0)
+ dst->hallRecords2P[j][k + HALL_RECORDS_COUNT] = sPartnerHallRecords[k]->twoPlayers[j];
}
}
}
-static void sub_80E8880(struct RankingHall1P *arg0, struct RankingHall1P *arg1)
+static void FillWinStreakRecords1P(struct RankingHall1P *playerRecords, struct RankingHall1P *mixRecords)
{
s32 i, j;
- for (i = 0; i < 3; i++)
+ // Fill the player's 1P records with the highest win streaks from the mixed records
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
{
+ // Get the highest remaining win streak in the mixed hall records
s32 highestWinStreak = 0;
s32 highestId = -1;
- for (j = 0; j < 6; j++)
+ for (j = 0; j < HALL_RECORDS_COUNT * 2; j++)
{
- if (arg1[j].winStreak > highestWinStreak)
+ if (mixRecords[j].winStreak > highestWinStreak)
{
highestId = j;
- highestWinStreak = arg1[j].winStreak;
+ highestWinStreak = mixRecords[j].winStreak;
}
}
+ // Save the win streak to the player's records, then clear it from the mixed records
if (highestId >= 0)
{
- arg0[i] = arg1[highestId];
- arg1[highestId].winStreak = 0;
+ playerRecords[i] = mixRecords[highestId];
+ mixRecords[highestId].winStreak = 0;
}
}
}
-static void sub_80E88CC(struct RankingHall2P *arg0, struct RankingHall2P *arg1)
+static void FillWinStreakRecords2P(struct RankingHall2P *playerRecords, struct RankingHall2P *mixRecords)
{
s32 i, j;
- for (i = 0; i < 3; i++)
+ // Fill the player's 2P records with the highest win streaks from the mixed records
+ for (i = 0; i < HALL_RECORDS_COUNT; i++)
{
+ // Get the highest remaining win streak in the mixed hall records
s32 highestWinStreak = 0;
s32 highestId = -1;
- for (j = 0; j < 6; j++)
+ for (j = 0; j < HALL_RECORDS_COUNT * 2; j++)
{
- if (arg1[j].winStreak > highestWinStreak)
+ if (mixRecords[j].winStreak > highestWinStreak)
{
highestId = j;
- highestWinStreak = arg1[j].winStreak;
+ highestWinStreak = mixRecords[j].winStreak;
}
}
+ // Save the win streak to the player's records, then clear it from the mixed records
if (highestId >= 0)
{
- arg0[i] = arg1[highestId];
- arg1[highestId].winStreak = 0;
+ playerRecords[i] = mixRecords[highestId];
+ mixRecords[highestId].winStreak = 0;
}
}
}
-static void sub_80E8924(struct RecordMixingHallRecords *arg0)
+static void SaveHighestWinStreakRecords(struct RecordMixingHallRecords *mixHallRecords)
{
s32 i, j;
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
{
- for (j = 0; j < 2; j++)
- sub_80E8880(gSaveBlock2Ptr->hallRecords1P[i][j], arg0->hallRecords1P[i][j]);
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
+ FillWinStreakRecords1P(gSaveBlock2Ptr->hallRecords1P[i][j], mixHallRecords->hallRecords1P[i][j]);
}
- for (j = 0; j < 2; j++)
- sub_80E88CC(gSaveBlock2Ptr->hallRecords2P[j], arg0->hallRecords2P[j]);
+ for (j = 0; j < FRONTIER_LVL_MODE_COUNT; j++)
+ FillWinStreakRecords2P(gSaveBlock2Ptr->hallRecords2P[j], mixHallRecords->hallRecords2P[j]);
}
-static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t recordSize, u32 arg2)
+static void ReceiveRankingHallRecords(struct PlayerHallRecords *records, size_t recordSize, u32 multiplayerId)
{
u8 linkPlayerCount = GetLinkPlayerCount();
- struct RecordMixingHallRecords *largeStructPtr = AllocZeroed(sizeof(struct RecordMixingHallRecords));
+ struct RecordMixingHallRecords *mixHallRecords = AllocZeroed(sizeof(*mixHallRecords));
- sub_80E8578(largeStructPtr, hallRecords, recordSize, arg2, linkPlayerCount);
- sub_80E8924(largeStructPtr);
+ GetNewHallRecords(mixHallRecords, records, recordSize, multiplayerId, linkPlayerCount);
+ SaveHighestWinStreakRecords(mixHallRecords);
- Free(largeStructPtr);
+ Free(mixHallRecords);
}
static void GetRecordMixingDaycareMail(struct RecordMixingDaycareMail *dst)
{
- sDaycareMail.mail[0] = gSaveBlock1Ptr->daycare.mons[0].mail;
- sDaycareMail.mail[1] = gSaveBlock1Ptr->daycare.mons[1].mail;
- InitDaycareMailRecordMixing(&gSaveBlock1Ptr->daycare, &sDaycareMail);
- *dst = *sDaycareMailSave;
+ sRecordMixMail.mail[0] = gSaveBlock1Ptr->daycare.mons[0].mail;
+ sRecordMixMail.mail[1] = gSaveBlock1Ptr->daycare.mons[1].mail;
+ InitDaycareMailRecordMixing(&gSaveBlock1Ptr->daycare, &sRecordMixMail);
+ *dst = *sRecordMixMailSave;
}
static void SanitizeDaycareMailForRuby(struct RecordMixingDaycareMail *src)
@@ -1319,10 +1378,10 @@ static void SanitizeDaycareMailForRuby(struct RecordMixingDaycareMail *src)
for (i = 0; i < src->numDaycareMons; i++)
{
struct DaycareMail *mail = &src->mail[i];
- if (mail->message.itemId != 0)
+ if (mail->message.itemId != ITEM_NONE)
{
if (mail->gameLanguage != LANGUAGE_JAPANESE)
- PadNameString(mail->OT_name, EXT_CTRL_CODE_BEGIN);
+ PadNameString(mail->otName, EXT_CTRL_CODE_BEGIN);
ConvertInternationalString(mail->monName, mail->monLanguage);
}
diff --git a/src/rotating_tile_puzzle.c b/src/rotating_tile_puzzle.c
index 56be9736f..2e919f550 100644
--- a/src/rotating_tile_puzzle.c
+++ b/src/rotating_tile_puzzle.c
@@ -134,14 +134,14 @@ u16 MoveRotatingTileObjects(u8 puzzleNumber)
continue;
// Object is on a metatile after the puzzle tile section (never occurs, in both cases the puzzle tiles are last)
- if ((u8)((metatile - puzzleTileStart) / 8) >= 5)
+ if ((u8)((metatile - puzzleTileStart) / METATILE_ROW_WIDTH) >= 5)
continue;
// Object is on a metatile in puzzle tile section, but not one of the currently rotating color
- if ((u8)((metatile - puzzleTileStart) / 8) != puzzleNumber)
+ if ((u8)((metatile - puzzleTileStart) / METATILE_ROW_WIDTH) != puzzleNumber)
continue;
- puzzleTileNum = (u8)((metatile - puzzleTileStart) % 8);
+ puzzleTileNum = (u8)((metatile - puzzleTileStart) % METATILE_ROW_WIDTH);
// First 4 puzzle tiles are the colored arrows
if (puzzleTileNum < 4)
@@ -221,7 +221,7 @@ void TurnRotatingTileObjects(void)
// prevPuzzleTileNum will similarly be a number [0-3] representing the arrow tile the object just moved from
// All the puzzles are oriented counter-clockwise and can only move 1 step at a time, so the difference between the current tile and the previous tile will always either be -1 or 3 (0-1, 1-2, 2-3, 3-0)
// Which means tileDifference will always either be -1 or 3 after the below subtraction, and rotation will always be ROTATE_COUNTERCLOCKWISE after the following conditionals
- tileDifference = (u8)((metatile - puzzleTileStart) % 8);
+ tileDifference = (u8)((metatile - puzzleTileStart) % METATILE_ROW_WIDTH);
tileDifference -= (sRotatingTilePuzzle->objects[i].prevPuzzleTileNum);
// Always true, see above
@@ -331,7 +331,7 @@ static void TurnUnsavedRotatingTileObject(u8 eventTemplateId, u8 puzzleTileNum)
else
puzzleTileStart = METATILE_TrickHousePuzzle_Arrow_YellowOnWhite_Right;
- tileDifference = (u8)((metatile - puzzleTileStart) % 8);
+ tileDifference = (u8)((metatile - puzzleTileStart) % METATILE_ROW_WIDTH);
tileDifference -= puzzleTileNum;
if (tileDifference < 0 || tileDifference == 3)
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 8f727310c..da75a4804 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -217,7 +217,7 @@ static void CB2_SaveFailedScreen(void)
LoadPalette(gBirchBagGrassPal, 0, 0x40);
LoadPalette(sSaveFailedClockPal, 0x100, 0x20);
LoadPalette(gTextWindowFrame1_Pal, 0xE0, 0x20);
- LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 0x20);
DrawStdFrameWithCustomTileAndPalette(sWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE);
DrawStdFrameWithCustomTileAndPalette(sWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE);
FillWindowPixelBuffer(sWindowIds[CLOCK_WIN_ID], PIXEL_FILL(1)); // backwards?
diff --git a/src/start_menu.c b/src/start_menu.c
index 9f271b890..59279d6b9 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -558,7 +558,7 @@ void ShowStartMenu(void)
{
FreezeObjectEvents();
PlayerFreeze();
- sub_808BCF4();
+ StopPlayerAvatar();
}
CreateStartMenuTask(Task_ShowStartMenu);
ScriptContext2_Enable();
diff --git a/src/strings.c b/src/strings.c
index bebe89011..ae39e3d4d 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -839,17 +839,17 @@ const u8 gText_B4F[] = _("B4F");
const u8 gText_Rooftop[] = _("ROOFTOP");
const u8 gText_ElevatorNowOn[] = _("Now on:");
const u8 gText_BP[] = _("BP");
-const u8 gText_EnergyPowder50[] = _("ENERGYPOWDER{CLEAR_TO 0x72}{SIZE 0}50");
-const u8 gText_EnergyRoot80[] = _("ENERGY ROOT{CLEAR_TO 0x72}{SIZE 0}80");
-const u8 gText_HealPowder50[] = _("HEAL POWDER{CLEAR_TO 0x72}{SIZE 0}50");
-const u8 gText_RevivalHerb300[] = _("REVIVAL HERB{CLEAR_TO 0x6C}{SIZE 0}300");
-const u8 gText_Protein1000[] = _("PROTEIN{CLEAR_TO 0x63}{SIZE 0}1,000");
-const u8 gText_Iron1000[] = _("IRON{CLEAR_TO 0x63}{SIZE 0}1,000");
-const u8 gText_Carbos1000[] = _("CARBOS{CLEAR_TO 0x63}{SIZE 0}1,000");
-const u8 gText_Calcium1000[] = _("CALCIUM{CLEAR_TO 0x63}{SIZE 0}1,000");
-const u8 gText_Zinc1000[] = _("ZINC{CLEAR_TO 0x63}{SIZE 0}1,000");
-const u8 gText_HPUp1000[] = _("HP UP{CLEAR_TO 0x63}{SIZE 0}1,000");
-const u8 gText_PPUp3000[] = _("PP UP{CLEAR_TO 0x63}{SIZE 0}3,000");
+const u8 gText_EnergyPowder50[] = _("ENERGYPOWDER{CLEAR_TO 0x72}{FONT 0}50");
+const u8 gText_EnergyRoot80[] = _("ENERGY ROOT{CLEAR_TO 0x72}{FONT 0}80");
+const u8 gText_HealPowder50[] = _("HEAL POWDER{CLEAR_TO 0x72}{FONT 0}50");
+const u8 gText_RevivalHerb300[] = _("REVIVAL HERB{CLEAR_TO 0x6C}{FONT 0}300");
+const u8 gText_Protein1000[] = _("PROTEIN{CLEAR_TO 0x63}{FONT 0}1,000");
+const u8 gText_Iron1000[] = _("IRON{CLEAR_TO 0x63}{FONT 0}1,000");
+const u8 gText_Carbos1000[] = _("CARBOS{CLEAR_TO 0x63}{FONT 0}1,000");
+const u8 gText_Calcium1000[] = _("CALCIUM{CLEAR_TO 0x63}{FONT 0}1,000");
+const u8 gText_Zinc1000[] = _("ZINC{CLEAR_TO 0x63}{FONT 0}1,000");
+const u8 gText_HPUp1000[] = _("HP UP{CLEAR_TO 0x63}{FONT 0}1,000");
+const u8 gText_PPUp3000[] = _("PP UP{CLEAR_TO 0x63}{FONT 0}3,000");
const u8 gText_RankingHall[] = _("RANKING HALL");
const u8 gText_ExchangeService[] = _("EXCHANGE SERVICE");
const u8 gText_LilycoveCity[] = _("LILYCOVE CITY");
diff --git a/src/title_screen.c b/src/title_screen.c
index ee71b6895..93e01327c 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -547,14 +547,14 @@ void CB2_InitTitleScreen(void)
case 1:
// bg2
LZ77UnCompVram(gTitleScreenPokemonLogoGfx, (void *)(BG_CHAR_ADDR(0)));
- LZ77UnCompVram(gUnknown_08DE0644, (void *)(BG_SCREEN_ADDR(9)));
+ LZ77UnCompVram(gTitleScreenPokemonLogoTilemap, (void *)(BG_SCREEN_ADDR(9)));
LoadPalette(gTitleScreenBgPalettes, 0, 0x1E0);
// bg3
LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(BG_CHAR_ADDR(2)));
LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(BG_SCREEN_ADDR(26)));
// bg1
LZ77UnCompVram(sTitleScreenCloudsGfx, (void *)(BG_CHAR_ADDR(3)));
- LZ77UnCompVram(gUnknown_08DDE458, (void *)(BG_SCREEN_ADDR(27)));
+ LZ77UnCompVram(gTitleScreenCloudsTilemap, (void *)(BG_SCREEN_ADDR(27)));
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
diff --git a/src/trade.c b/src/trade.c
index 9c6bb78d0..566bb14f3 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -101,7 +101,7 @@ static EWRAM_DATA u8 *sMenuTextAllocBuffer = NULL;
// See the corresponding GFXTAGs in src/data/trade.h
static EWRAM_DATA u8 *sMenuTextTileBuffers[GFXTAG_MENU_TEXT_COUNT] = {NULL};
-EWRAM_DATA struct MailStruct gTradeMail[PARTY_SIZE] = {0};
+EWRAM_DATA struct Mail gTradeMail[PARTY_SIZE] = {0};
EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0};
static EWRAM_DATA struct {
/*0x0000*/ u8 bg2hofs;
@@ -144,7 +144,7 @@ static EWRAM_DATA struct {
} *sTradeMenuData = {NULL};
static EWRAM_DATA struct {
- /*0x00*/ struct Pokemon mon;
+ /*0x00*/ struct Pokemon tempMon; // Used as a temp variable when swapping Pokémon
/*0x64*/ u32 timer;
/*0x68*/ u32 monPersonalities[2];
/*0x70*/ u8 filler_70[2];
@@ -238,7 +238,7 @@ static void SpriteCB_BouncingPokeballDepart(struct Sprite *);
static void SpriteCB_BouncingPokeballDepartEnd(struct Sprite *);
static void SpriteCB_BouncingPokeballArrive(struct Sprite *);
static void BufferInGameTradeMonName(void);
-static void SetInGameTradeMail(struct MailStruct *, const struct InGameTrade *);
+static void SetInGameTradeMail(struct Mail *, const struct InGameTrade *);
static void CB2_UpdateLinkTrade(void);
static void CB2_TryFinishTrade(void);
static void CB2_SaveAndEndTrade(void);
@@ -334,8 +334,8 @@ static void InitTradeMenu(void)
gPaletteFade.bufferTransferDisabled = TRUE;
SetVBlankCallback(VBlankCB_TradeMenu);
- LoadPalette(gUnknown_0860F074, 0xF0, 20);
- LoadPalette(gUnknown_0860F074, 0xD0, 20);
+ LoadPalette(gStandardMenuPalette, 0xF0, 20);
+ LoadPalette(gStandardMenuPalette, 0xD0, 20);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sTradeMenuBgTemplates, ARRAY_COUNT(sTradeMenuBgTemplates));
SetBgTilemapBuffer(1, sTradeMenuData->tilemapBuffer);
@@ -913,7 +913,7 @@ static void LoadTradeBgGfx(u8 state)
case 0:
LoadPalette(gTradeMenu_Pal, 0, 0x60);
LoadBgTiles(1, gTradeMenu_Gfx, 0x1280, 0);
- CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_08DDCF04, 0, 0, 32, 20, 0);
+ CopyToBgTilemapBufferRect_ChangePalette(1, gTradeMenu_Tilemap, 0, 0, 32, 20, 0);
LoadBgTilemap(2, sTradeStripesBG2Tilemap, 0x800, 0);
break;
case 1:
@@ -924,9 +924,7 @@ static void LoadTradeBgGfx(u8 state)
break;
case 2:
for (i = 0; i < 4; i++)
- {
SetGpuReg(REG_OFFSET_BG0HOFS + (i * 2), 0);
- }
ShowBg(0);
ShowBg(1);
ShowBg(2);
@@ -1054,7 +1052,7 @@ static bool8 BufferTradeParties(void)
}
break;
case 13:
- Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, PARTY_SIZE * sizeof(struct MailStruct) + 4);
+ Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, PARTY_SIZE * sizeof(struct Mail) + 4);
sTradeMenuData->bufferPartyState++;
break;
case 15:
@@ -1065,7 +1063,7 @@ static bool8 BufferTradeParties(void)
case 16:
if (_GetBlockReceivedStatus() == 3)
{
- Trade_Memcpy(gTradeMail, gBlockRecvBuffer[id ^ 1], PARTY_SIZE * sizeof(struct MailStruct));
+ Trade_Memcpy(gTradeMail, gBlockRecvBuffer[id ^ 1], PARTY_SIZE * sizeof(struct Mail));
TradeResetReceivedFlags();
sTradeMenuData->bufferPartyState++;
}
@@ -3043,18 +3041,16 @@ static void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx)
u16 partnerMail = GetMonData(partnerMon, MON_DATA_MAIL);
if (playerMail != MAIL_NONE)
- ClearMailStruct(&gSaveBlock1Ptr->mail[playerMail]);
+ ClearMail(&gSaveBlock1Ptr->mail[playerMail]);
- sTradeData->mon = *playerMon;
- *playerMon = *partnerMon;
- *partnerMon = sTradeData->mon;
+ SWAP(*playerMon, *partnerMon, sTradeData->tempMon);
friendship = 70;
if (!GetMonData(playerMon, MON_DATA_IS_EGG))
SetMonData(playerMon, MON_DATA_FRIENDSHIP, &friendship);
if (partnerMail != MAIL_NONE)
- GiveMailToMon2(playerMon, &gTradeMail[partnerMail]);
+ GiveMailToMon(playerMon, &gTradeMail[partnerMail]);
UpdatePokedexForReceivedMon(playerPartyIdx);
if (gReceivedRemoteLinkPlayers)
@@ -4492,7 +4488,7 @@ static void _CreateInGameTradePokemon(u8 whichPlayerMon, u8 whichInGameTrade)
const struct InGameTrade *inGameTrade = &sIngameTrades[whichInGameTrade];
u8 level = GetMonData(&gPlayerParty[whichPlayerMon], MON_DATA_LEVEL);
- struct MailStruct mail;
+ struct Mail mail;
u8 metLocation = METLOC_IN_GAME_TRADE;
u8 isMail;
struct Pokemon *pokemon = &gEnemyParty[0];
@@ -4535,7 +4531,7 @@ static void _CreateInGameTradePokemon(u8 whichPlayerMon, u8 whichInGameTrade)
CalculateMonStats(&gEnemyParty[0]);
}
-static void SetInGameTradeMail(struct MailStruct *mail, const struct InGameTrade *trade) {
+static void SetInGameTradeMail(struct Mail *mail, const struct InGameTrade *trade) {
s32 i;
for (i = 0; i < MAIL_WORDS_COUNT; i++)
diff --git a/src/trainer_see.c b/src/trainer_see.c
index ec3dc8123..ce06c5e9c 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -523,7 +523,7 @@ static bool8 PlayerFaceApproachingTrainer(u8 taskId, struct Task *task, struct O
if (ObjectEventIsMovementOverridden(playerObj) && !ObjectEventClearHeldMovementIfFinished(playerObj))
return FALSE;
- sub_808BCE8();
+ CancelPlayerForcedMovement();
ObjectEventSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], GetFaceDirectionMovementAction(GetOppositeDirection(trainerObj->facingDirection)));
task->tFuncId++; // TRSEE_PLAYER_FACE_WAIT
return FALSE;
diff --git a/src/union_room.c b/src/union_room.c
index 6cc54d07c..18cb02c33 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -1495,14 +1495,14 @@ static void Task_StartUnionRoomTrade(u8 taskId)
}
break;
case 2:
- memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, sizeof(struct MailStruct) * PARTY_SIZE + 4);
- if (SendBlock(0, gBlockSendBuffer, sizeof(struct MailStruct) * PARTY_SIZE + 4))
+ memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, sizeof(struct Mail) * PARTY_SIZE + 4);
+ if (SendBlock(0, gBlockSendBuffer, sizeof(struct Mail) * PARTY_SIZE + 4))
gTasks[taskId].data[0]++;
break;
case 3:
if (GetBlockReceivedStatus() == 3)
{
- memcpy(gTradeMail, gBlockRecvBuffer[GetMultiplayerId() ^ 1], sizeof(struct MailStruct) * PARTY_SIZE);
+ memcpy(gTradeMail, gBlockRecvBuffer[GetMultiplayerId() ^ 1], sizeof(struct Mail) * PARTY_SIZE);
ResetBlockReceivedFlags();
gSelectedTradeMonPositions[TRADE_PLAYER] = monId;
gSelectedTradeMonPositions[TRADE_PARTNER] = PARTY_SIZE;
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
index 1ca414d79..2a195730f 100644
--- a/src/union_room_battle.c
+++ b/src/union_room_battle.c
@@ -132,7 +132,7 @@ void CB2_UnionRoomBattle(void)
FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 0xF);
LoadUserWindowBorderGfx(0, 1, 0xD0);
LoadUserWindowBorderGfx_(0, 1, 0xD0);
- sub_819789C();
+ Menu_LoadStdPal();
SetVBlankCallback(VBlankCB_UnionRoomBattle);
gMain.state++;
break;
diff --git a/src/union_room_chat.c b/src/union_room_chat.c
index 7debe3cd4..ca6f8bd1d 100755
--- a/src/union_room_chat.c
+++ b/src/union_room_chat.c
@@ -3115,7 +3115,7 @@ static void LoadKeyboardSwapWindow(void)
FillWindowPixelBuffer(3, PIXEL_FILL(1));
LoadUserWindowBorderGfx(3, 1, 0xD0);
LoadUserWindowBorderGfx_(3, 0xA, 0x20);
- LoadPalette(gUnknown_0860F074, 0xE0, 0x20);
+ LoadPalette(gStandardMenuPalette, 0xE0, 0x20);
}
static void InitScanlineEffect(void)
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
index 3459dde85..a0eea575e 100644
--- a/src/unk_text_util_2.c
+++ b/src/unk_text_util_2.c
@@ -80,7 +80,7 @@ u16 Font6Func(struct TextPrinter *textPrinter)
case EXT_CTRL_CODE_PALETTE:
textPrinter->printerTemplate.currentChar++;
return 2;
- case EXT_CTRL_CODE_SIZE:
+ case EXT_CTRL_CODE_FONT:
subStruct->glyphId = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
return 2;