summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/macros/trainer_hill.inc6
-rw-r--r--data/field_effect_scripts.s244
-rw-r--r--data/io_reg.s37
-rw-r--r--data/maps/BirthIsland_Exterior/scripts.inc4
-rw-r--r--data/maps/FarawayIsland_Interior/scripts.inc52
-rw-r--r--data/maps/LavaridgeTown_HerbShop/scripts.inc4
-rw-r--r--data/maps/TrainerHill_Entrance/scripts.inc4
-rw-r--r--data/scripts/field_move_scripts.inc15
-rw-r--r--data/scripts/flash.inc2
-rw-r--r--data/scripts/trainer_hill.inc4
-rw-r--r--data/specials.inc4
-rw-r--r--gflib/io_reg.c36
-rw-r--r--gflib/io_reg.h7
-rw-r--r--graphics/field_effects/palettes/ash.pal (renamed from graphics/field_effects/palettes/02.pal)0
-rw-r--r--graphics/field_effects/palettes/cut_grass.pal (renamed from graphics/field_effects/palettes/06.pal)0
-rw-r--r--graphics/field_effects/palettes/general_0.pal (renamed from graphics/field_effects/palettes/00.pal)0
-rw-r--r--graphics/field_effects/palettes/general_1.pal (renamed from graphics/field_effects/palettes/01.pal)0
-rw-r--r--graphics/field_effects/palettes/hof_monitor.pal (renamed from graphics/field_effects/palettes/05.pal)0
-rw-r--r--graphics/field_effects/palettes/pokeball.pal (renamed from graphics/field_effects/palettes/10.pal)0
-rw-r--r--graphics/field_effects/palettes/pokeball_glow.pal (renamed from graphics/field_effects/palettes/04.pal)0
-rw-r--r--graphics/field_effects/palettes/record_mix_lights.pal (renamed from graphics/unknown/unknown_58E82C.pal)0
-rw-r--r--graphics/field_effects/palettes/secret_power_cave.pal (renamed from graphics/field_effects/palettes/07.pal)0
-rw-r--r--graphics/field_effects/palettes/secret_power_plant.pal (renamed from graphics/field_effects/palettes/08.pal)0
-rw-r--r--graphics/field_effects/palettes/small_sparkle.pal (renamed from graphics/field_effects/palettes/03.pal)0
-rw-r--r--graphics/field_effects/pics/ash_launch.png (renamed from graphics/field_effects/pics/lavaridge_gym_warp.png)bin406 -> 406 bytes
-rw-r--r--graphics/field_effects/pics/ash_puff.png (renamed from graphics/field_effects/pics/jump_out_of_ash.png)bin346 -> 346 bytes
-rw-r--r--graphics/field_effects/pics/jump_big_splash.png (renamed from graphics/field_effects/pics/bike_hop_big_splash.png)bin273 -> 273 bytes
-rw-r--r--graphics/field_effects/pics/jump_small_splash.png (renamed from graphics/field_effects/pics/bike_hop_small_splash.png)bin197 -> 197 bytes
-rwxr-xr-xgraphics/field_effects/pics/jump_tall_grass.png (renamed from graphics/field_effects/pics/bike_hop_tall_grass.png)bin205 -> 205 bytes
-rw-r--r--graphics/field_effects/pics/record_mix_lights.pngbin0 -> 199 bytes
-rw-r--r--graphics/field_effects/pics/sand_pile.png (renamed from graphics/field_effects/pics/unknown_29.png)bin197 -> 197 bytes
-rw-r--r--graphics/field_effects/pics/sand_pillar/0.png (renamed from graphics/unknown/858E674/0.png)bin272 -> 272 bytes
-rw-r--r--graphics/field_effects/pics/sand_pillar/1.png (renamed from graphics/unknown/858E674/1.png)bin255 -> 255 bytes
-rw-r--r--graphics/field_effects/pics/sand_pillar/2.png (renamed from graphics/unknown/858E674/2.png)bin256 -> 256 bytes
-rw-r--r--graphics/field_effects/pics/secret_power_cave.pngbin0 -> 356 bytes
-rw-r--r--graphics/field_effects/pics/secret_power_shrub.pngbin0 -> 270 bytes
-rw-r--r--graphics/field_effects/pics/secret_power_tree.pngbin0 -> 304 bytes
-rw-r--r--graphics/field_effects/pics/small_sparkle.png (renamed from graphics/field_effects/pics/unknown_35.png)bin174 -> 174 bytes
-rw-r--r--graphics/field_effects/pics/sparkle.png (renamed from graphics/field_effects/pics/berry_tree_growth_sparkle.png)bin205 -> 205 bytes
-rw-r--r--graphics/field_effects/pics/unused_grass_2.png (renamed from graphics/field_effects/pics/unknown_18.png)bin344 -> 344 bytes
-rw-r--r--graphics/field_effects/pics/unused_grass_3.png (renamed from graphics/field_effects/pics/unused_grass.png)bin389 -> 389 bytes
-rw-r--r--graphics/field_effects/pics/unused_sand.png (renamed from graphics/field_effects/pics/unknown_19.png)bin272 -> 272 bytes
-rw-r--r--graphics/field_effects/pics/water_surfacing.png (renamed from graphics/field_effects/pics/unknown_20.png)bin319 -> 319 bytes
-rw-r--r--graphics/misc/deoxys_rock_fragment_bottom_left.png (renamed from graphics/unknown/unknown_55C1B0.png)bin100 -> 100 bytes
-rw-r--r--graphics/misc/deoxys_rock_fragment_bottom_right.png (renamed from graphics/unknown/unknown_55C1D0.png)bin91 -> 91 bytes
-rw-r--r--graphics/misc/deoxys_rock_fragment_top_left.png (renamed from graphics/unknown/unknown_55C170.png)bin99 -> 99 bytes
-rw-r--r--graphics/misc/deoxys_rock_fragment_top_right.png (renamed from graphics/unknown/unknown_55C190.png)bin102 -> 102 bytes
-rw-r--r--graphics/misc/hof_monitor_big.png (renamed from graphics/misc/big_hof_monitor.png)bin184 -> 184 bytes
-rw-r--r--graphics/misc/hof_monitor_small.png (renamed from graphics/misc/small_hof_monitor.png)bin177 -> 177 bytes
-rw-r--r--graphics/misc/trainer_hill_ereader.pal (renamed from graphics/pokenav/862A5D4.pal)0
-rw-r--r--graphics/slot_machine/digital_display.png (renamed from graphics/slot_machine/reel_time.png)bin1050 -> 1050 bytes
-rw-r--r--graphics/slot_machine/flashing_lights_inside.pal (renamed from graphics/slot_machine/85A843E.pal)0
-rw-r--r--graphics/slot_machine/flashing_lights_middle.pal (renamed from graphics/slot_machine/85A845E.pal)0
-rw-r--r--graphics/slot_machine/flashing_lights_outside.pal (renamed from graphics/slot_machine/85A847E.pal)0
-rw-r--r--graphics/slot_machine/info_box.bin (renamed from graphics/slot_machine/slots_layout.bin)bin1280 -> 1280 bytes
-rw-r--r--graphics/slot_machine/pokeball_shining_0.pal (renamed from graphics/slot_machine/85A84B0.pal)0
-rw-r--r--graphics/slot_machine/pokeball_shining_1.pal (renamed from graphics/slot_machine/85A84D0.pal)0
-rw-r--r--graphics/slot_machine/pokeball_shining_2.pal (renamed from graphics/slot_machine/85A84F0.pal)0
-rw-r--r--graphics/slot_machine/reel_background.bin (renamed from graphics/unknown/unknown_DD19F8.bin)0
-rw-r--r--graphics/slot_machine/reel_pikachu.pngbin2210 -> 0 bytes
-rw-r--r--graphics/slot_machine/reel_time_number_gap.png (renamed from graphics/unknown/unknown_DD1A18.png)bin131 -> 131 bytes
-rw-r--r--graphics/slot_machine/reel_time_window.bin (renamed from graphics/slot_machine/85A96E0.bin)0
-rw-r--r--graphics/slot_machine/spr6.pal19
-rw-r--r--graphics/unknown/858E588/0.pngbin145 -> 0 bytes
-rw-r--r--graphics/unknown/858E588/1.pngbin149 -> 0 bytes
-rw-r--r--graphics/unknown/858E588/2.pngbin138 -> 0 bytes
-rw-r--r--graphics/unknown/858E588/3.pngbin133 -> 0 bytes
-rw-r--r--graphics/unknown/858E588/4.pngbin114 -> 0 bytes
-rw-r--r--graphics/unknown/858E5B0/0.pngbin89 -> 0 bytes
-rw-r--r--graphics/unknown/858E5B0/1.pngbin109 -> 0 bytes
-rw-r--r--graphics/unknown/858E5B0/2.pngbin119 -> 0 bytes
-rw-r--r--graphics/unknown/858E5B0/3.pngbin123 -> 0 bytes
-rw-r--r--graphics/unknown/858E5B0/4.pngbin129 -> 0 bytes
-rw-r--r--graphics/unknown/858E5B0/5.pngbin126 -> 0 bytes
-rw-r--r--graphics/unknown/858E5D8/0.pngbin87 -> 0 bytes
-rw-r--r--graphics/unknown/858E5D8/1.pngbin116 -> 0 bytes
-rw-r--r--graphics/unknown/858E5D8/2.pngbin131 -> 0 bytes
-rw-r--r--graphics/unknown/858E5D8/3.pngbin115 -> 0 bytes
-rw-r--r--graphics/unknown/858E5D8/4.pngbin92 -> 0 bytes
-rw-r--r--graphics/unknown/858E84C/0.pngbin103 -> 0 bytes
-rw-r--r--graphics/unknown/858E84C/1.pngbin107 -> 0 bytes
-rw-r--r--graphics/unknown/858E84C/2.pngbin107 -> 0 bytes
-rw-r--r--include/battle_transition.h2
-rw-r--r--include/battle_util.h4
-rw-r--r--include/constants/field_effects.h69
-rw-r--r--include/constants/flags.h34
-rw-r--r--include/constants/items.h5
-rwxr-xr-xinclude/constants/layouts.h4
-rwxr-xr-xinclude/constants/map_groups.h4
-rw-r--r--include/constants/metatile_labels.h50
-rw-r--r--include/constants/slot_machine.h38
-rw-r--r--include/constants/trainer_hill.h2
-rw-r--r--include/event_object_movement.h20
-rw-r--r--include/event_scripts.h29
-rwxr-xr-xinclude/faraway_island.h2
-rw-r--r--include/field_camera.h2
-rw-r--r--include/field_control_avatar.h2
-rw-r--r--include/field_effect.h10
-rw-r--r--include/field_effect_helpers.h10
-rw-r--r--include/field_player_avatar.h8
-rw-r--r--include/field_screen_effect.h4
-rw-r--r--include/fieldmap.h20
-rw-r--r--include/fldeff.h21
-rw-r--r--include/fldeff_misc.h22
-rw-r--r--include/global.fieldmap.h16
-rw-r--r--include/graphics.h29
-rw-r--r--include/menu.h6
-rw-r--r--include/overworld.h9
-rw-r--r--include/strings.h6
-rw-r--r--include/trainer_hill.h4
-rw-r--r--include/tv.h4
-rw-r--r--ld_script.txt2
-rw-r--r--spritesheet_rules.mk36
-rw-r--r--src/AgbRfu_LinkManager.c2
-rw-r--r--src/agb_flash.c33
-rw-r--r--src/battle_anim_bug.c38
-rw-r--r--src/battle_anim_effects_1.c13
-rw-r--r--src/battle_anim_psychic.c2
-rw-r--r--src/battle_anim_utility_funcs.c2
-rw-r--r--src/battle_anim_water.c317
-rw-r--r--src/battle_pyramid_bag.c4
-rw-r--r--src/battle_script_commands.c2
-rw-r--r--src/battle_transition.c26
-rw-r--r--src/battle_util.c8
-rw-r--r--src/berry.c2
-rw-r--r--src/berry_blender.c10
-rwxr-xr-xsrc/berry_crush.c2
-rw-r--r--src/berry_tag_screen.c4
-rw-r--r--src/bike.c8
-rw-r--r--src/braille_puzzles.c40
-rwxr-xr-xsrc/data/field_effects/field_effect_object_template_pointers.h102
-rwxr-xr-xsrc/data/field_effects/field_effect_objects.h851
-rw-r--r--src/data/graphics/slot_machine.h34
-rw-r--r--src/data/items.h6
-rwxr-xr-xsrc/data/object_events/object_event_graphics.h38
-rw-r--r--src/data/pokemon_graphics/back_pic_coordinates.h880
-rw-r--r--src/data/pokemon_graphics/front_pic_coordinates.h880
-rw-r--r--src/digit_obj_util.c2
-rw-r--r--src/dodrio_berry_picking.c2
-rw-r--r--src/easy_chat.c18
-rw-r--r--src/event_object_movement.c142
-rwxr-xr-xsrc/faraway_island.c198
-rw-r--r--src/field_camera.c40
-rw-r--r--src/field_control_avatar.c6
-rw-r--r--src/field_effect.c2540
-rwxr-xr-xsrc/field_effect_helpers.c277
-rw-r--r--src/field_player_avatar.c216
-rw-r--r--src/field_region_map.c4
-rw-r--r--src/field_screen_effect.c54
-rw-r--r--src/field_special_scene.c36
-rw-r--r--src/field_specials.c236
-rw-r--r--src/field_tasks.c62
-rw-r--r--src/fieldmap.c55
-rw-r--r--src/fldeff_cut.c172
-rw-r--r--src/fldeff_dig.c16
-rw-r--r--src/fldeff_escalator.c207
-rw-r--r--src/fldeff_flash.c4
-rw-r--r--src/fldeff_misc.c540
-rw-r--r--src/fldeff_rocksmash.c69
-rw-r--r--src/fldeff_strength.c21
-rw-r--r--src/fldeff_sweetscent.c2
-rw-r--r--src/fldeff_teleport.c4
-rw-r--r--src/hall_of_fame.c10
-rwxr-xr-xsrc/item_menu.c4
-rwxr-xr-xsrc/item_use.c4
-rw-r--r--src/list_menu.c10
-rw-r--r--src/menu.c50
-rw-r--r--src/mirage_tower.c45
-rw-r--r--src/move_relearner.c6
-rw-r--r--src/naming_screen.c2
-rw-r--r--src/overworld.c335
-rwxr-xr-xsrc/party_menu.c12
-rw-r--r--src/player_pc.c14
-rw-r--r--src/pokeblock.c4
-rw-r--r--src/pokeblock_feed.c4
-rw-r--r--src/pokedex.c6
-rw-r--r--src/pokemon.c2
-rw-r--r--src/pokemon_storage_system.c16
-rw-r--r--src/pokemon_summary_screen.c4
-rw-r--r--src/rayquaza_scene.c4
-rw-r--r--src/record_mixing.c4
-rw-r--r--src/region_map.c4
-rw-r--r--src/reset_rtc_screen.c4
-rw-r--r--src/roulette.c34
-rw-r--r--src/save_failed_screen.c2
-rw-r--r--src/scrcmd.c7
-rw-r--r--src/secret_base.c8
-rwxr-xr-xsrc/shop.c4
-rw-r--r--src/slot_machine.c5034
-rw-r--r--src/start_menu.c2
-rw-r--r--src/starter_choose.c4
-rw-r--r--src/trainer_hill.c25
-rw-r--r--src/trainer_see.c10
-rw-r--r--src/tv.c16
-rw-r--r--src/wallclock.c4
-rw-r--r--src/wild_encounter.c7
-rw-r--r--tools/gbagfx/gfx.c2
-rw-r--r--tools/mapjson/mapjson.cpp28
198 files changed, 7771 insertions, 7099 deletions
diff --git a/asm/macros/trainer_hill.inc b/asm/macros/trainer_hill.inc
index d5c84fd02..65c8c6bef 100644
--- a/asm/macros/trainer_hill.inc
+++ b/asm/macros/trainer_hill.inc
@@ -52,9 +52,9 @@
special CallTrainerHillFunction
.endm
- @ Unknown, dummied. Only side effect is setting VAR_RESULT to 0.
- .macro trainerhill_clearresult
- setvar VAR_0x8004, TRAINER_HILL_FUNC_CLEAR_RESULT
+ @ Unknown, dummied. E-Reader association is assumed. Only side effect is setting VAR_RESULT to 0.
+ .macro trainerhill_getusingereader
+ setvar VAR_0x8004, TRAINER_HILL_FUNC_GET_IN_EREADER_MODE
special CallTrainerHillFunction
.endm
diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s
index 4aef859d8..c57f19a04 100644
--- a/data/field_effect_scripts.s
+++ b/data/field_effect_scripts.s
@@ -5,73 +5,73 @@
.align 2
gFieldEffectScriptPointers:: @ 82DB9D4
- .4byte gFieldEffectScript_ExclamationMarkIcon1
- .4byte gFieldEffectScript_UseCutOnTallGrass
- .4byte gFieldEffectScript_UseCutOnTree
- .4byte gFieldEffectScript_Shadow
- .4byte gFieldEffectScript_TallGrass
- .4byte gFieldEffectScript_Ripple
- .4byte gFieldEffectScript_FieldMoveShowMon
- .4byte gFieldEffectScript_Ash
- .4byte gFieldEffectScript_SurfBlob
- .4byte gFieldEffectScript_UseSurf
- .4byte gFieldEffectScript_GroundImpactDust
- .4byte gFieldEffectScript_UseSecretPowerCave
- .4byte gFieldEffectScript_BikeHopTallGrass
- .4byte gFieldEffectScript_SandFootprints
- .4byte gFieldEffectScript_BikeHopBigSplash
- .4byte gFieldEffectScript_Splash
- .4byte gFieldEffectScript_BikeHopSmallSplash
- .4byte gFieldEffectScript_LongGrass
- .4byte gFieldEffectScript_JumpLongGrass
- .4byte gFieldEffectScript_Unknown19
- .4byte gFieldEffectScript_Unknown20
- .4byte gFieldEffectScript_Unknown21
- .4byte gFieldEffectScript_Unknown22
- .4byte gFieldEffectScript_BerryTreeGrowthSparkle
- .4byte gFieldEffectScript_DeepSandFootprints
- .4byte gFieldEffectScript_PokeCenterHeal
- .4byte gFieldEffectScript_UseSecretPowerTree
- .4byte gFieldEffectScript_UseSecretPowerShrub
- .4byte gFieldEffectScript_TreeDisguise
- .4byte gFieldEffectScript_MountainDisguise
- .4byte gFieldEffectScript_NPCUseFly
- .4byte gFieldEffectScript_UseFly
- .4byte gFieldEffectScript_FlyIn
- .4byte gFieldEffectScript_QuestionMarkIcon
- .4byte gFieldEffectScript_FeetInFlowingWater
- .4byte gFieldEffectScript_BikeTireTracks
- .4byte gFieldEffectScript_SandDisguisePlaceholder
- .4byte gFieldEffectScript_UseRockSmash
- .4byte gFieldEffectScript_UseDig
- .4byte gFieldEffectScript_SandPile
- .4byte gFieldEffectScript_UseStrength
- .4byte gFieldEffectScript_ShortGrass
- .4byte gFieldEffectScript_HotSpringsWater
- .4byte gFieldEffectScript_UseWaterfall
- .4byte gFieldEffectScript_UseDive
- .4byte gFieldEffectScript_Pokeball
- .4byte gFieldEffectScript_HeartIcon
- .4byte gFieldEffectScript_Unknown47
- .4byte gFieldEffectScript_Unknown48
- .4byte gFieldEffectScript_JumpOutOfAsh
- .4byte gFieldEffectScript_LavaridgeGymWarp
- .4byte gFieldEffectScript_SweetScent
- .4byte gFieldEffectScript_SandPillar
- .4byte gFieldEffectScript_Bubbles
- .4byte gFieldEffectScript_Sparkle
- .4byte gFieldEffectScript_ShowSecretPowerCave
- .4byte gFieldEffectScript_ShowSecretPowerTree
- .4byte gFieldEffectScript_ShowSecretPowerShrub
- .4byte gFieldEffectScript_ShowCutGrass
- .4byte gFieldEffectScript_FieldMoveShowMonInit
- .4byte gFieldEffectScript_UsePuzzleEffect
- .4byte gFieldEffectScript_SecretBaseBootPC
- .4byte gFieldEffectScript_HallOfFameRecord
- .4byte gFieldEffectScript_UseTeleport
- .4byte gFieldEffectScript_Rayquaza
- .4byte gFieldEffectScript_Unknown65
- .4byte gFieldEffectScript_MoveDeoxysRock
+ .4byte gFieldEffectScript_ExclamationMarkIcon1 @ FLDEFF_EXCLAMATION_MARK_ICON
+ .4byte gFieldEffectScript_UseCutOnTallGrass @ FLDEFF_USE_CUT_ON_GRASS
+ .4byte gFieldEffectScript_UseCutOnTree @ FLDEFF_USE_CUT_ON_TREE
+ .4byte gFieldEffectScript_Shadow @ FLDEFF_SHADOW
+ .4byte gFieldEffectScript_TallGrass @ FLDEFF_TALL_GRASS
+ .4byte gFieldEffectScript_Ripple @ FLDEFF_RIPPLE
+ .4byte gFieldEffectScript_FieldMoveShowMon @ FLDEFF_FIELD_MOVE_SHOW_MON
+ .4byte gFieldEffectScript_Ash @ FLDEFF_ASH
+ .4byte gFieldEffectScript_SurfBlob @ FLDEFF_SURF_BLOB
+ .4byte gFieldEffectScript_UseSurf @ FLDEFF_USE_SURF
+ .4byte gFieldEffectScript_GroundImpactDust @ FLDEFF_DUST
+ .4byte gFieldEffectScript_UseSecretPowerCave @ FLDEFF_USE_SECRET_POWER_CAVE
+ .4byte gFieldEffectScript_JumpTallGrass @ FLDEFF_JUMP_TALL_GRASS
+ .4byte gFieldEffectScript_SandFootprints @ FLDEFF_SAND_FOOTPRINTS
+ .4byte gFieldEffectScript_JumpBigSplash @ FLDEFF_JUMP_BIG_SPLASH
+ .4byte gFieldEffectScript_Splash @ FLDEFF_SPLASH
+ .4byte gFieldEffectScript_JumpSmallSplash @ FLDEFF_JUMP_SMALL_SPLASH
+ .4byte gFieldEffectScript_LongGrass @ FLDEFF_LONG_GRASS
+ .4byte gFieldEffectScript_JumpLongGrass @ FLDEFF_JUMP_LONG_GRASS
+ .4byte gFieldEffectScript_UnusedGrass @ FLDEFF_UNUSED_GRASS
+ .4byte gFieldEffectScript_UnusedGrass2 @ FLDEFF_UNUSED_GRASS_2
+ .4byte gFieldEffectScript_UnusedSand @ FLDEFF_UNUSED_SAND
+ .4byte gFieldEffectScript_WaterSurfacing @ FLDEFF_WATER_SURFACING
+ .4byte gFieldEffectScript_BerryTreeGrowthSparkle @ FLDEFF_BERRY_TREE_GROWTH_SPARKLE
+ .4byte gFieldEffectScript_DeepSandFootprints @ FLDEFF_DEEP_SAND_FOOTPRINTS
+ .4byte gFieldEffectScript_PokeCenterHeal @ FLDEFF_POKECENTER_HEAL
+ .4byte gFieldEffectScript_UseSecretPowerTree @ FLDEFF_USE_SECRET_POWER_TREE
+ .4byte gFieldEffectScript_UseSecretPowerShrub @ FLDEFF_USE_SECRET_POWER_SHRUB
+ .4byte gFieldEffectScript_TreeDisguise @ FLDEFF_TREE_DISGUISE
+ .4byte gFieldEffectScript_MountainDisguise @ FLDEFF_MOUNTAIN_DISGUISE
+ .4byte gFieldEffectScript_NPCUseFly @ FLDEFF_NPCFLY_OUT
+ .4byte gFieldEffectScript_UseFly @ FLDEFF_USE_FLY
+ .4byte gFieldEffectScript_FlyIn @ FLDEFF_FLY_IN
+ .4byte gFieldEffectScript_QuestionMarkIcon @ FLDEFF_QUESTION_MARK_ICON
+ .4byte gFieldEffectScript_FeetInFlowingWater @ FLDEFF_FEET_IN_FLOWING_WATER
+ .4byte gFieldEffectScript_BikeTireTracks @ FLDEFF_BIKE_TIRE_TRACKS
+ .4byte gFieldEffectScript_SandDisguisePlaceholder @ FLDEFF_SAND_DISGUISE
+ .4byte gFieldEffectScript_UseRockSmash @ FLDEFF_USE_ROCK_SMASH
+ .4byte gFieldEffectScript_UseDig @ FLDEFF_USE_DIG
+ .4byte gFieldEffectScript_SandPile @ FLDEFF_SAND_PILE
+ .4byte gFieldEffectScript_UseStrength @ FLDEFF_USE_STRENGTH
+ .4byte gFieldEffectScript_ShortGrass @ FLDEFF_SHORT_GRASS
+ .4byte gFieldEffectScript_HotSpringsWater @ FLDEFF_HOT_SPRINGS_WATER
+ .4byte gFieldEffectScript_UseWaterfall @ FLDEFF_USE_WATERFALL
+ .4byte gFieldEffectScript_UseDive @ FLDEFF_USE_DIVE
+ .4byte gFieldEffectScript_Pokeball @ FLDEFF_POKEBALL
+ .4byte gFieldEffectScript_HeartIcon @ FLDEFF_HEART_ICON
+ .4byte gFieldEffectScript_Nop47 @ FLDEFF_NOP_47
+ .4byte gFieldEffectScript_Nop48 @ FLDEFF_NOP_48
+ .4byte gFieldEffectScript_AshPuff @ FLDEFF_ASH_PUFF
+ .4byte gFieldEffectScript_AshLaunch @ FLDEFF_ASH_LAUNCH
+ .4byte gFieldEffectScript_SweetScent @ FLDEFF_SWEET_SCENT
+ .4byte gFieldEffectScript_SandPillar @ FLDEFF_SAND_PILLAR
+ .4byte gFieldEffectScript_Bubbles @ FLDEFF_BUBBLES
+ .4byte gFieldEffectScript_Sparkle @ FLDEFF_SPARKLE
+ .4byte gFieldEffectScript_ShowSecretPowerCave @ FLDEFF_SECRET_POWER_CAVE
+ .4byte gFieldEffectScript_ShowSecretPowerTree @ FLDEFF_SECRET_POWER_TREE
+ .4byte gFieldEffectScript_ShowSecretPowerShrub @ FLDEFF_SECRET_POWER_SHRUB
+ .4byte gFieldEffectScript_ShowCutGrass @ FLDEFF_CUT_GRASS
+ .4byte gFieldEffectScript_FieldMoveShowMonInit @ FLDEFF_FIELD_MOVE_SHOW_MON_INIT
+ .4byte gFieldEffectScript_UsePuzzleEffect @ FLDEFF_USE_TOMB_PUZZLE_EFFECT
+ .4byte gFieldEffectScript_SecretBaseBootPC @ FLDEFF_PCTURN_ON
+ .4byte gFieldEffectScript_HallOfFameRecord @ FLDEFF_HALL_OF_FAME_RECORD
+ .4byte gFieldEffectScript_UseTeleport @ FLDEFF_USE_TELEPORT
+ .4byte gFieldEffectScript_RayquazaSpotlight @ FLDEFF_RAYQUAZA_SPOTLIGHT
+ .4byte gFieldEffectScript_DestroyDeoxysRock @ FLDEFF_DESTROY_DEOXYS_ROCK
+ .4byte gFieldEffectScript_MoveDeoxysRock @ FLDEFF_MOVE_DEOXYS_ROCK
gFieldEffectScript_ExclamationMarkIcon1:: @ 82DBAE0
field_eff_callnative FldEff_ExclamationMarkIcon
@@ -90,11 +90,11 @@ gFieldEffectScript_Shadow:: @ 82DBAF2
field_eff_end
gFieldEffectScript_TallGrass:: @ 82DBAF8
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_TallGrass
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_TallGrass
field_eff_end
gFieldEffectScript_Ripple:: @ 82DBB02
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_Ripple
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_Ripple
field_eff_end
gFieldEffectScript_FieldMoveShowMon:: @ 82DBB0C
@@ -102,7 +102,7 @@ gFieldEffectScript_FieldMoveShowMon:: @ 82DBB0C
field_eff_end
gFieldEffectScript_Ash:: @ 82DBB12
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_Ash
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_Ash
field_eff_end
gFieldEffectScript_SurfBlob:: @ 82DBB1C
@@ -114,55 +114,55 @@ gFieldEffectScript_UseSurf:: @ 82DBB22
field_eff_end
gFieldEffectScript_GroundImpactDust:: @ 82DBB28
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_Dust
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_Dust
field_eff_end
gFieldEffectScript_UseSecretPowerCave:: @ 82DBB32
field_eff_callnative FldEff_UseSecretPowerCave
field_eff_end
-gFieldEffectScript_BikeHopTallGrass:: @ 82DBB38
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_JumpTallGrass
+gFieldEffectScript_JumpTallGrass:: @ 82DBB38
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_JumpTallGrass
field_eff_end
gFieldEffectScript_SandFootprints:: @ 82DBB42
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_SandFootprints
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_SandFootprints
field_eff_end
-gFieldEffectScript_BikeHopBigSplash:: @ 82DBB4C
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_JumpBigSplash
+gFieldEffectScript_JumpBigSplash:: @ 82DBB4C
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_JumpBigSplash
field_eff_end
gFieldEffectScript_Splash:: @ 82DBB56
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_Splash
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_Splash
field_eff_end
-gFieldEffectScript_BikeHopSmallSplash:: @ 82DBB60
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_JumpSmallSplash
+gFieldEffectScript_JumpSmallSplash:: @ 82DBB60
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_JumpSmallSplash
field_eff_end
gFieldEffectScript_LongGrass:: @ 82DBB6A
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_LongGrass
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_LongGrass
field_eff_end
gFieldEffectScript_JumpLongGrass:: @ 82DBB74
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_JumpLongGrass
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_JumpLongGrass
field_eff_end
-gFieldEffectScript_Unknown19:: @ 82DBB7E
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_Unknown19
+gFieldEffectScript_UnusedGrass:: @ 82DBB7E
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_UnusedGrass
field_eff_end
-gFieldEffectScript_Unknown20:: @ 82DBB88
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_Unknown20
+gFieldEffectScript_UnusedGrass2:: @ 82DBB88
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_UnusedGrass2
field_eff_end
-gFieldEffectScript_Unknown21:: @ 82DBB92
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_Unknown21
+gFieldEffectScript_UnusedSand:: @ 82DBB92
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_UnusedSand
field_eff_end
-gFieldEffectScript_Unknown22:: @ 82DBB9C
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_Unknown22
+gFieldEffectScript_WaterSurfacing:: @ 82DBB9C
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_WaterSurfacing
field_eff_end
gFieldEffectScript_BerryTreeGrowthSparkle:: @ 82DBBA6
@@ -170,12 +170,12 @@ gFieldEffectScript_BerryTreeGrowthSparkle:: @ 82DBBA6
field_eff_end
gFieldEffectScript_DeepSandFootprints:: @ 82DBBAC
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_DeepSandFootprints
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_DeepSandFootprints
field_eff_end
gFieldEffectScript_PokeCenterHeal:: @ 82DBBB6
- field_eff_loadfadedpal gFieldEffectObjectPaletteInfo4
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_PokecenterHeal
+ field_eff_loadfadedpal gSpritePalette_PokeballGlow
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_PokecenterHeal
field_eff_end
gFieldEffectScript_UseSecretPowerTree:: @ 82DBBC5
@@ -211,11 +211,11 @@ gFieldEffectScript_QuestionMarkIcon:: @ 82DBBEF
field_eff_end
gFieldEffectScript_FeetInFlowingWater:: @ 82DBBF5
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_FeetInFlowingWater
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_FeetInFlowingWater
field_eff_end
gFieldEffectScript_BikeTireTracks:: @ 82DBBFF
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_BikeTireTracks
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_BikeTireTracks
field_eff_end
gFieldEffectScript_SandDisguisePlaceholder:: @ 82DBC09
@@ -227,7 +227,7 @@ gFieldEffectScript_UseRockSmash:: @ 82DBC0F
field_eff_end
gFieldEffectScript_UseStrength:: @ 82DBC15
- field_eff_callnative sub_8145E2C
+ field_eff_callnative FldEff_UseStrength
field_eff_end
gFieldEffectScript_UseDig:: @ 82DBC1B
@@ -235,15 +235,15 @@ gFieldEffectScript_UseDig:: @ 82DBC1B
field_eff_end
gFieldEffectScript_SandPile:: @ 82DBC21
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_SandPile
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_SandPile
field_eff_end
gFieldEffectScript_ShortGrass:: @ 82DBC2B
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_ShortGrass
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_ShortGrass
field_eff_end
gFieldEffectScript_HotSpringsWater:: @ 82DBC35
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo1, FldEff_HotSpringsWater
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_HotSpringsWater
field_eff_end
gFieldEffectScript_UseWaterfall:: @ 82DBC3F
@@ -255,28 +255,28 @@ gFieldEffectScript_UseDive:: @ 82DBC45
field_eff_end
gFieldEffectScript_Pokeball:: @ 82DBC4B
- field_eff_loadpal gFieldEffectObjectPaletteInfo10
+ field_eff_loadpal gSpritePalette_Pokeball
field_eff_callnative FldEff_Pokeball
field_eff_end
gFieldEffectScript_HeartIcon:: @ 82DBC56
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_HeartIcon
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_HeartIcon
field_eff_end
-gFieldEffectScript_Unknown47:: @ 82DBC60
- field_eff_callnative FldEff_NopA6FC
+gFieldEffectScript_Nop47:: @ 82DBC60
+ field_eff_callnative FldEff_Nop47
field_eff_end
-gFieldEffectScript_Unknown48:: @ 82DBC66
- field_eff_callnative FldEff_NopA700
+gFieldEffectScript_Nop48:: @ 82DBC66
+ field_eff_callnative FldEff_Nop48
field_eff_end
-gFieldEffectScript_JumpOutOfAsh:: @ 82DBC6C
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo2, FldEff_PopOutOfAsh
+gFieldEffectScript_AshPuff:: @ 82DBC6C
+ field_eff_loadfadedpal_callnative gSpritePalette_Ash, FldEff_AshPuff
field_eff_end
-gFieldEffectScript_LavaridgeGymWarp:: @ 82DBC76
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo2, FldEff_LavaridgeGymWarp
+gFieldEffectScript_AshLaunch:: @ 82DBC76
+ field_eff_loadfadedpal_callnative gSpritePalette_Ash, FldEff_AshLaunch
field_eff_end
gFieldEffectScript_SweetScent:: @ 82DBC80
@@ -284,31 +284,31 @@ gFieldEffectScript_SweetScent:: @ 82DBC80
field_eff_end
gFieldEffectScript_SandPillar:: @ 82DBC86
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo9, FldEff_SandPillar
+ field_eff_loadfadedpal_callnative gSpritePalette_SandPillar, FldEff_SandPillar
field_eff_end
gFieldEffectScript_Bubbles:: @ 82DBC90
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo0, FldEff_Bubbles
+ field_eff_loadfadedpal_callnative gSpritePalette_GeneralFieldEffect0, FldEff_Bubbles
field_eff_end
gFieldEffectScript_Sparkle:: @ 82DBC9A
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo3, FldEff_Sparkle
+ field_eff_loadfadedpal_callnative gSpritePalette_SmallSparkle, FldEff_Sparkle
field_eff_end
gFieldEffectScript_ShowSecretPowerCave:: @ 82DBCA4
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo7, FldEff_SecretPowerCave
+ field_eff_loadfadedpal_callnative gSpritePalette_SecretPower_Cave, FldEff_SecretPowerCave
field_eff_end
gFieldEffectScript_ShowSecretPowerTree:: @ 82DBCAE
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo8, FldEff_SecretPowerTree
+ field_eff_loadfadedpal_callnative gSpritePalette_SecretPower_Plant, FldEff_SecretPowerTree
field_eff_end
gFieldEffectScript_ShowSecretPowerShrub:: @ 82DBCB8
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo8, FldEff_SecretPowerShrub
+ field_eff_loadfadedpal_callnative gSpritePalette_SecretPower_Plant, FldEff_SecretPowerShrub
field_eff_end
gFieldEffectScript_ShowCutGrass:: @ 82DBCC2
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo6, FldEff_CutGrass
+ field_eff_loadfadedpal_callnative gSpritePalette_CutGrass, FldEff_CutGrass
field_eff_end
gFieldEffectScript_FieldMoveShowMonInit:: @ 82DBCCC
@@ -324,22 +324,22 @@ gFieldEffectScript_SecretBaseBootPC:: @ 82DBCD8
field_eff_end
gFieldEffectScript_HallOfFameRecord:: @ 82DBCDE
- field_eff_loadfadedpal gFieldEffectObjectPaletteInfo4
- field_eff_loadfadedpal_callnative gFieldEffectObjectPaletteInfo5, FldEff_HallOfFameRecord
+ field_eff_loadfadedpal gSpritePalette_PokeballGlow
+ field_eff_loadfadedpal_callnative gSpritePalette_HofMonitor, FldEff_HallOfFameRecord
field_eff_end
gFieldEffectScript_UseTeleport:: @ 82DBCED
field_eff_callnative FldEff_UseTeleport
field_eff_end
-gFieldEffectScript_Rayquaza:: @ 82DBCF3
- field_eff_callnative sub_80B8F98
+gFieldEffectScript_RayquazaSpotlight:: @ 82DBCF3
+ field_eff_callnative FldEff_RayquazaSpotlight
field_eff_end
-gFieldEffectScript_Unknown65:: @ 82DBCF9
- field_eff_callnative sub_80B9ADC
+gFieldEffectScript_DestroyDeoxysRock:: @ 82DBCF9
+ field_eff_callnative FldEff_DestroyDeoxysRock
field_eff_end
gFieldEffectScript_MoveDeoxysRock:: @ 82DBCFF
- field_eff_callnative Fldeff_MoveDeoxysRock
+ field_eff_callnative FldEff_MoveDeoxysRock
field_eff_end
diff --git a/data/io_reg.s b/data/io_reg.s
deleted file mode 100644
index 0941b4345..000000000
--- a/data/io_reg.s
+++ /dev/null
@@ -1,37 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-
-
-.align 2
-gUnref_82EC784:: @ 82EC784
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x04000008
- .4byte 0x0400000A
- .4byte 0x0400000C
- .4byte 0x0400000E
- .4byte 0x04000010
- .4byte 0x04000014
- .4byte 0x04000018
- .4byte 0x0400001C
- .4byte 0x04000012
- .4byte 0x04000016
- .4byte 0x0400001A
- .4byte 0x0400001E
- .4byte 0x02000100
- .4byte 0x08000400
-
-gOverworldBackgroundLayerFlags:: @ 82EC7C4
- .2byte BLDCNT_TGT2_BG0
- .2byte BLDCNT_TGT2_BG1
- .2byte BLDCNT_TGT2_BG2
- .2byte BLDCNT_TGT2_BG3
-
-gOrbEffectBackgroundLayerFlags:: @ 82EC7CC
- .2byte BLDCNT_TGT1_BG0
- .2byte BLDCNT_TGT1_BG1
- .2byte BLDCNT_TGT1_BG2
- .2byte BLDCNT_TGT1_BG3
diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc
index 6bc902426..5c06e6f3a 100644
--- a/data/maps/BirthIsland_Exterior/scripts.inc
+++ b/data/maps/BirthIsland_Exterior/scripts.inc
@@ -71,9 +71,9 @@ BirthIsland_Exterior_EventScript_Deoxys:: @ 8267FC1
setfieldeffectargument 0, LOCALID_DEOXYS_ROCK
setfieldeffectargument 1, 58
setfieldeffectargument 2, 26
- dofieldeffect FLDEFF_65
+ dofieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
playbgm MUS_RG_DEOEYE, 0
- waitfieldeffect FLDEFF_65
+ waitfieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
addobject LOCALID_DEOXYS
applymovement LOCALID_DEOXYS, BirthIsland_Exterior_Movement_DeoxysApproach
waitmovement 0
diff --git a/data/maps/FarawayIsland_Interior/scripts.inc b/data/maps/FarawayIsland_Interior/scripts.inc
index cad875b65..2a06ffdfa 100644
--- a/data/maps/FarawayIsland_Interior/scripts.inc
+++ b/data/maps/FarawayIsland_Interior/scripts.inc
@@ -8,24 +8,24 @@ FarawayIsland_Interior_MapScripts:: @ 8267CFA
.byte 0
FarawayIsland_Interior_OnReturnToField: @ 8267D0F
- call_if_set FLAG_SYS_CTRL_OBJ_DELETE, FarawayIsland_Interior_EventScript_267D19
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, FarawayIsland_Interior_EventScript_TrySetMewAboveGrass
end
-FarawayIsland_Interior_EventScript_267D19:: @ 8267D19
+FarawayIsland_Interior_EventScript_TrySetMewAboveGrass:: @ 8267D19
specialvar VAR_RESULT, GetBattleOutcome
compare VAR_RESULT, B_OUTCOME_WON
- goto_if_eq FarawayIsland_Interior_EventScript_267D4B
+ goto_if_eq FarawayIsland_Interior_EventScript_SetMewAboveGrass
compare VAR_RESULT, B_OUTCOME_RAN
- goto_if_eq FarawayIsland_Interior_EventScript_267D4B
+ goto_if_eq FarawayIsland_Interior_EventScript_SetMewAboveGrass
compare VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED
- goto_if_eq FarawayIsland_Interior_EventScript_267D4B
+ goto_if_eq FarawayIsland_Interior_EventScript_SetMewAboveGrass
compare VAR_RESULT, B_OUTCOME_MON_TELEPORTED
- goto_if_eq FarawayIsland_Interior_EventScript_267D4B
+ goto_if_eq FarawayIsland_Interior_EventScript_SetMewAboveGrass
return
-FarawayIsland_Interior_EventScript_267D4B:: @ 8267D4B
+FarawayIsland_Interior_EventScript_SetMewAboveGrass:: @ 8267D4B
setvar VAR_0x8004, 1
- special sub_81D4A90
+ special SetMewAboveGrass
return
FarawayIsland_Interior_OnResume: @ 8267D54
@@ -81,7 +81,7 @@ FarawayIsland_Interior_Movement_MewAppear: @ 8267DD4
set_visible
step_end
-FarawayIsland_Interior_Movement_MewHideDown: @ 8267DD6
+FarawayIsland_Interior_Movement_MewFloatUpNorth: @ 8267DD6
lock_facing_direction
walk_fast_up
walk_fast_up
@@ -90,7 +90,7 @@ FarawayIsland_Interior_Movement_MewHideDown: @ 8267DD6
walk_in_place_down
step_end
-FarawayIsland_Interior_Movement_MewHideUp: @ 8267DDD
+FarawayIsland_Interior_Movement_MewFloatUpSouth: @ 8267DDD
lock_facing_direction
walk_fast_up
walk_fast_up
@@ -99,7 +99,7 @@ FarawayIsland_Interior_Movement_MewHideUp: @ 8267DDD
walk_in_place_up
step_end
-FarawayIsland_Interior_Movement_MewHideRight: @ 8267DE4
+FarawayIsland_Interior_Movement_MewFloatUpWest: @ 8267DE4
lock_facing_direction
walk_fast_up
walk_fast_up
@@ -108,7 +108,7 @@ FarawayIsland_Interior_Movement_MewHideRight: @ 8267DE4
walk_in_place_right
step_end
-FarawayIsland_Interior_Movement_MewHideLeft: @ 8267DEB
+FarawayIsland_Interior_Movement_MewFloatUpEast: @ 8267DEB
lock_facing_direction
walk_fast_up
walk_fast_up
@@ -123,19 +123,19 @@ FarawayIsland_Interior_EventScript_Mew:: @ 8267DF2
applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewAppear
waitmovement 0
setvar VAR_0x8004, 0
- special sub_81D4A90
+ special SetMewAboveGrass
message FarawayIsland_Interior_Text_Mew
waitse
playmoncry SPECIES_MEW, 2
compare VAR_FACING, DIR_NORTH
- call_if_eq FarawayIsland_Interior_EventScript_MewHideDown
+ call_if_eq FarawayIsland_Interior_EventScript_FoundMewNorth
compare VAR_FACING, DIR_SOUTH
- call_if_eq FarawayIsland_Interior_EventScript_MewHideUp
+ call_if_eq FarawayIsland_Interior_EventScript_FoundMewSouth
compare VAR_FACING, DIR_WEST
- call_if_eq FarawayIsland_Interior_EventScript_MewHideRight
+ call_if_eq FarawayIsland_Interior_EventScript_FoundMewWest
compare VAR_FACING, DIR_EAST
- call_if_eq FarawayIsland_Interior_EventScript_MewHideLeft
- special sub_81D4BEC
+ call_if_eq FarawayIsland_Interior_EventScript_FoundMewEast
+ special DestroyMewEmergingGrassSprite
delay 40
waitmoncry
setvar VAR_0x8004, SPECIES_MEW
@@ -170,23 +170,23 @@ FarawayIsland_Interior_EventScript_PlayerOrMewRan:: @ 8267EA4
goto Common_EventScript_LegendaryFlewAway
end
-FarawayIsland_Interior_EventScript_MewHideDown:: @ 8267EAF
- applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewHideDown
+FarawayIsland_Interior_EventScript_FoundMewNorth:: @ 8267EAF
+ applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpNorth
waitmovement 0
return
-FarawayIsland_Interior_EventScript_MewHideUp:: @ 8267EBA
- applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewHideUp
+FarawayIsland_Interior_EventScript_FoundMewSouth:: @ 8267EBA
+ applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpSouth
waitmovement 0
return
-FarawayIsland_Interior_EventScript_MewHideRight:: @ 8267EC5
- applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewHideRight
+FarawayIsland_Interior_EventScript_FoundMewWest:: @ 8267EC5
+ applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpWest
waitmovement 0
return
-FarawayIsland_Interior_EventScript_MewHideLeft:: @ 8267ED0
- applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewHideLeft
+FarawayIsland_Interior_EventScript_FoundMewEast:: @ 8267ED0
+ applymovement LOCALID_MEW, FarawayIsland_Interior_Movement_MewFloatUpEast
waitmovement 0
return
diff --git a/data/maps/LavaridgeTown_HerbShop/scripts.inc b/data/maps/LavaridgeTown_HerbShop/scripts.inc
index c08d37609..d98d6ef49 100644
--- a/data/maps/LavaridgeTown_HerbShop/scripts.inc
+++ b/data/maps/LavaridgeTown_HerbShop/scripts.inc
@@ -28,12 +28,12 @@ LavaridgeTown_HerbShop_EventScript_ExpertM:: @ 81FE4FC
LavaridgeTown_HerbShop_EventScript_OldMan:: @ 81FE505
lock
faceplayer
- goto_if_set FLFLAG_RECEIVED_CHARCOAL, LavaridgeTown_HerbShop_EventScript_ExplainCharcoal
+ goto_if_set FLAG_RECEIVED_CHARCOAL, LavaridgeTown_HerbShop_EventScript_ExplainCharcoal
msgbox LavaridgeTown_HerbShop_Text_YouveComeToLookAtHerbalMedicine, MSGBOX_DEFAULT
giveitem ITEM_CHARCOAL
compare VAR_RESULT, FALSE
goto_if_eq Common_EventScript_ShowBagIsFull
- setflag FLFLAG_RECEIVED_CHARCOAL
+ setflag FLAG_RECEIVED_CHARCOAL
release
end
diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc
index 9cf3be806..077709053 100644
--- a/data/maps/TrainerHill_Entrance/scripts.inc
+++ b/data/maps/TrainerHill_Entrance/scripts.inc
@@ -23,8 +23,8 @@ TrainerHill_Entrance_OnWarp: @ 82680CF
TrainerHill_Entrance_OnResume: @ 82680D0
trainerhill_resumetimer
setvar VAR_TEMP_0, 0
- trainerhill_clearresult
- compare VAR_RESULT, 0 @ VAR_RESULT always 0 here
+ trainerhill_getusingereader
+ compare VAR_RESULT, FALSE @ VAR_RESULT always FALSE here
goto_if_eq TrainerHill_Entrance_EventScript_TryFaceAttendant
setobjectxy OBJ_EVENT_ID_PLAYER, 9, 6
applymovement OBJ_EVENT_ID_PLAYER, TrainerHill_Entrance_Movement_PlayerFaceAttendant
diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc
index 56e3297b6..2d689348b 100644
--- a/data/scripts/field_move_scripts.inc
+++ b/data/scripts/field_move_scripts.inc
@@ -1,4 +1,4 @@
-
+@ Interact with cuttable tree
EventScript_CutTree:: @ 82906BB
lockall
goto_if_unset FLAG_BADGE01_GET, EventScript_CheckTreeCantCut
@@ -18,7 +18,8 @@ EventScript_CutTree:: @ 82906BB
goto EventScript_CutTreeDown
end
-EventScript_FldEffCut:: @ 8290705
+@ Use cut from party menu
+EventScript_UseCut:: @ 8290705
lockall
dofieldeffect FLDEFF_USE_CUT_ON_TREE
waitstate
@@ -58,6 +59,7 @@ Text_CantCut: @ 829077D
.string "This tree looks like it can be\n"
.string "CUT down!$"
+@ Interact with smashable rock
EventScript_RockSmash:: @ 82907A6
lockall
goto_if_unset FLAG_BADGE03_GET, EventScript_CantSmashRock
@@ -77,7 +79,8 @@ EventScript_RockSmash:: @ 82907A6
goto EventScript_SmashRock
end
-EventScript_FldEffRockSmash:: @ 82907F0
+@ Use rock smash from party menu
+EventScript_UseRockSmash:: @ 82907F0
lockall
dofieldeffect FLDEFF_USE_ROCK_SMASH
waitstate
@@ -89,10 +92,10 @@ EventScript_SmashRock:: @ 82907FB
waitmovement 0
removeobject VAR_LAST_TALKED
specialvar VAR_RESULT, TryUpdateRusturfTunnelState
- compare VAR_RESULT, 1
+ compare VAR_RESULT, TRUE
goto_if_eq EventScript_EndSmash
special RockSmashWildEncounter
- compare VAR_RESULT, 0
+ compare VAR_RESULT, FALSE
goto_if_eq EventScript_EndSmash
waitstate
releaseall
@@ -141,7 +144,7 @@ EventScript_StrengthBoulder:: @ 82908BA
goto EventScript_ActivateStrength
end
-EventScript_FldEffStrength:: @ 82908FD
+EventScript_UseStrength:: @ 82908FD
lockall
dofieldeffect FLDEFF_USE_STRENGTH
waitstate
diff --git a/data/scripts/flash.inc b/data/scripts/flash.inc
index 916b50719..bb4ae84eb 100644
--- a/data/scripts/flash.inc
+++ b/data/scripts/flash.inc
@@ -1,4 +1,4 @@
-EventScript_FldEffFlash:: @ 82926F8
+EventScript_UseFlash:: @ 82926F8
animateflash 1
setflashradius 1
end
diff --git a/data/scripts/trainer_hill.inc b/data/scripts/trainer_hill.inc
index ca692e1ef..34d0462bb 100644
--- a/data/scripts/trainer_hill.inc
+++ b/data/scripts/trainer_hill.inc
@@ -32,8 +32,8 @@ EventScript_TrainerHillTimer:: @ 82C8393
TrainerHill_1F_EventScript_DummyWarpToEntranceCounter:: @ 82C83A6
setvar VAR_TEMP_2, 1
- trainerhill_clearresult
- compare VAR_RESULT, 1 @ VAR_RESULT always 0 here
+ trainerhill_getusingereader
+ compare VAR_RESULT, TRUE @ VAR_RESULT always FALSE here
goto_if_eq TrainerHill_1F_EventScript_WarpSilentToEntranceCounter
end
diff --git a/data/specials.inc b/data/specials.inc
index 0f78f981f..d7d1897d8 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -511,14 +511,14 @@ gSpecials:: @ 81DBA64
def_special ScriptMenu_CreateLilycoveSSTidalMultichoice
def_special GetLilycoveSSTidalSelection
def_special TurnOnTVScreen
- def_special sub_81D4A90
+ def_special SetMewAboveGrass
def_special ShouldDistributeEonTicket
def_special LinkRetireStatusWithBattleTowerPartner
def_special sub_813B534
def_special CallTrainerHillFunction
def_special Script_DoRayquazaScene @ Listed twice
def_special LoopWingFlapSE
- def_special sub_81D4BEC
+ def_special DestroyMewEmergingGrassSprite
def_special ShowBerryCrushRankings
def_special TryBufferWaldaPhrase
def_special DoWaldaNamingScreen
diff --git a/gflib/io_reg.c b/gflib/io_reg.c
new file mode 100644
index 000000000..44364349d
--- /dev/null
+++ b/gflib/io_reg.c
@@ -0,0 +1,36 @@
+#include "global.h"
+#include "io_reg.h"
+#include "gba/io_reg.h"
+
+static const u32 sUnused[] = {
+ 0,
+ 0,
+ (1 << 26) | (1 << 3),
+ (1 << 26) | (1 << 3) | (1 << 1),
+ (1 << 26) | (1 << 3) | (1 << 2),
+ (1 << 26) | (1 << 3) | (1 << 2) | (1 << 1),
+ (1 << 26) | (1 << 4),
+ (1 << 26) | (1 << 4) | (1 << 2),
+ (1 << 26) | (1 << 4) | (1 << 3),
+ (1 << 26) | (1 << 4) | (1 << 3) | (1 << 2),
+ (1 << 26) | (1 << 4) | (1 << 1),
+ (1 << 26) | (1 << 4) | (1 << 2) | (1 << 1),
+ (1 << 26) | (1 << 4) | (1 << 3) | (1 << 1),
+ (1 << 26) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1),
+ (1 << 25) | (1 << 8),
+ (1 << 27) | (1 << 10),
+};
+
+const u16 gOverworldBackgroundLayerFlags[] = {
+ BLDCNT_TGT2_BG0,
+ BLDCNT_TGT2_BG1,
+ BLDCNT_TGT2_BG2,
+ BLDCNT_TGT2_BG3,
+};
+
+const u16 gOrbEffectBackgroundLayerFlags[] = {
+ BLDCNT_TGT1_BG0,
+ BLDCNT_TGT1_BG1,
+ BLDCNT_TGT1_BG2,
+ BLDCNT_TGT1_BG3,
+};
diff --git a/gflib/io_reg.h b/gflib/io_reg.h
new file mode 100644
index 000000000..82d2fc5ed
--- /dev/null
+++ b/gflib/io_reg.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_IO_REG_H
+#define GUARD_IO_REG_H
+
+extern const u16 gOverworldBackgroundLayerFlags[];
+extern const u16 gOrbEffectBackgroundLayerFlags[];
+
+#endif // GUARD_IO_REG_H
diff --git a/graphics/field_effects/palettes/02.pal b/graphics/field_effects/palettes/ash.pal
index e3a76c035..e3a76c035 100644
--- a/graphics/field_effects/palettes/02.pal
+++ b/graphics/field_effects/palettes/ash.pal
diff --git a/graphics/field_effects/palettes/06.pal b/graphics/field_effects/palettes/cut_grass.pal
index e4a49a4b9..e4a49a4b9 100644
--- a/graphics/field_effects/palettes/06.pal
+++ b/graphics/field_effects/palettes/cut_grass.pal
diff --git a/graphics/field_effects/palettes/00.pal b/graphics/field_effects/palettes/general_0.pal
index bbc9c778b..bbc9c778b 100644
--- a/graphics/field_effects/palettes/00.pal
+++ b/graphics/field_effects/palettes/general_0.pal
diff --git a/graphics/field_effects/palettes/01.pal b/graphics/field_effects/palettes/general_1.pal
index 044e1c987..044e1c987 100644
--- a/graphics/field_effects/palettes/01.pal
+++ b/graphics/field_effects/palettes/general_1.pal
diff --git a/graphics/field_effects/palettes/05.pal b/graphics/field_effects/palettes/hof_monitor.pal
index 468d7212c..468d7212c 100644
--- a/graphics/field_effects/palettes/05.pal
+++ b/graphics/field_effects/palettes/hof_monitor.pal
diff --git a/graphics/field_effects/palettes/10.pal b/graphics/field_effects/palettes/pokeball.pal
index 6190709ed..6190709ed 100644
--- a/graphics/field_effects/palettes/10.pal
+++ b/graphics/field_effects/palettes/pokeball.pal
diff --git a/graphics/field_effects/palettes/04.pal b/graphics/field_effects/palettes/pokeball_glow.pal
index 2dddefa5f..2dddefa5f 100644
--- a/graphics/field_effects/palettes/04.pal
+++ b/graphics/field_effects/palettes/pokeball_glow.pal
diff --git a/graphics/unknown/unknown_58E82C.pal b/graphics/field_effects/palettes/record_mix_lights.pal
index 292acfd35..292acfd35 100644
--- a/graphics/unknown/unknown_58E82C.pal
+++ b/graphics/field_effects/palettes/record_mix_lights.pal
diff --git a/graphics/field_effects/palettes/07.pal b/graphics/field_effects/palettes/secret_power_cave.pal
index 6d9e03c67..6d9e03c67 100644
--- a/graphics/field_effects/palettes/07.pal
+++ b/graphics/field_effects/palettes/secret_power_cave.pal
diff --git a/graphics/field_effects/palettes/08.pal b/graphics/field_effects/palettes/secret_power_plant.pal
index 4c41030f6..4c41030f6 100644
--- a/graphics/field_effects/palettes/08.pal
+++ b/graphics/field_effects/palettes/secret_power_plant.pal
diff --git a/graphics/field_effects/palettes/03.pal b/graphics/field_effects/palettes/small_sparkle.pal
index b170eb1f5..b170eb1f5 100644
--- a/graphics/field_effects/palettes/03.pal
+++ b/graphics/field_effects/palettes/small_sparkle.pal
diff --git a/graphics/field_effects/pics/lavaridge_gym_warp.png b/graphics/field_effects/pics/ash_launch.png
index 26b852200..26b852200 100644
--- a/graphics/field_effects/pics/lavaridge_gym_warp.png
+++ b/graphics/field_effects/pics/ash_launch.png
Binary files differ
diff --git a/graphics/field_effects/pics/jump_out_of_ash.png b/graphics/field_effects/pics/ash_puff.png
index 3247b8169..3247b8169 100644
--- a/graphics/field_effects/pics/jump_out_of_ash.png
+++ b/graphics/field_effects/pics/ash_puff.png
Binary files differ
diff --git a/graphics/field_effects/pics/bike_hop_big_splash.png b/graphics/field_effects/pics/jump_big_splash.png
index 171d23457..171d23457 100644
--- a/graphics/field_effects/pics/bike_hop_big_splash.png
+++ b/graphics/field_effects/pics/jump_big_splash.png
Binary files differ
diff --git a/graphics/field_effects/pics/bike_hop_small_splash.png b/graphics/field_effects/pics/jump_small_splash.png
index e98ded025..e98ded025 100644
--- a/graphics/field_effects/pics/bike_hop_small_splash.png
+++ b/graphics/field_effects/pics/jump_small_splash.png
Binary files differ
diff --git a/graphics/field_effects/pics/bike_hop_tall_grass.png b/graphics/field_effects/pics/jump_tall_grass.png
index c43da9f28..c43da9f28 100755
--- a/graphics/field_effects/pics/bike_hop_tall_grass.png
+++ b/graphics/field_effects/pics/jump_tall_grass.png
Binary files differ
diff --git a/graphics/field_effects/pics/record_mix_lights.png b/graphics/field_effects/pics/record_mix_lights.png
new file mode 100644
index 000000000..b6d3d6537
--- /dev/null
+++ b/graphics/field_effects/pics/record_mix_lights.png
Binary files differ
diff --git a/graphics/field_effects/pics/unknown_29.png b/graphics/field_effects/pics/sand_pile.png
index 03f89a5f5..03f89a5f5 100644
--- a/graphics/field_effects/pics/unknown_29.png
+++ b/graphics/field_effects/pics/sand_pile.png
Binary files differ
diff --git a/graphics/unknown/858E674/0.png b/graphics/field_effects/pics/sand_pillar/0.png
index 64b61050f..64b61050f 100644
--- a/graphics/unknown/858E674/0.png
+++ b/graphics/field_effects/pics/sand_pillar/0.png
Binary files differ
diff --git a/graphics/unknown/858E674/1.png b/graphics/field_effects/pics/sand_pillar/1.png
index 05cd8f396..05cd8f396 100644
--- a/graphics/unknown/858E674/1.png
+++ b/graphics/field_effects/pics/sand_pillar/1.png
Binary files differ
diff --git a/graphics/unknown/858E674/2.png b/graphics/field_effects/pics/sand_pillar/2.png
index d5dd69078..d5dd69078 100644
--- a/graphics/unknown/858E674/2.png
+++ b/graphics/field_effects/pics/sand_pillar/2.png
Binary files differ
diff --git a/graphics/field_effects/pics/secret_power_cave.png b/graphics/field_effects/pics/secret_power_cave.png
new file mode 100644
index 000000000..445b275f3
--- /dev/null
+++ b/graphics/field_effects/pics/secret_power_cave.png
Binary files differ
diff --git a/graphics/field_effects/pics/secret_power_shrub.png b/graphics/field_effects/pics/secret_power_shrub.png
new file mode 100644
index 000000000..322643372
--- /dev/null
+++ b/graphics/field_effects/pics/secret_power_shrub.png
Binary files differ
diff --git a/graphics/field_effects/pics/secret_power_tree.png b/graphics/field_effects/pics/secret_power_tree.png
new file mode 100644
index 000000000..879741784
--- /dev/null
+++ b/graphics/field_effects/pics/secret_power_tree.png
Binary files differ
diff --git a/graphics/field_effects/pics/unknown_35.png b/graphics/field_effects/pics/small_sparkle.png
index b2072bd26..b2072bd26 100644
--- a/graphics/field_effects/pics/unknown_35.png
+++ b/graphics/field_effects/pics/small_sparkle.png
Binary files differ
diff --git a/graphics/field_effects/pics/berry_tree_growth_sparkle.png b/graphics/field_effects/pics/sparkle.png
index 2910c2a49..2910c2a49 100644
--- a/graphics/field_effects/pics/berry_tree_growth_sparkle.png
+++ b/graphics/field_effects/pics/sparkle.png
Binary files differ
diff --git a/graphics/field_effects/pics/unknown_18.png b/graphics/field_effects/pics/unused_grass_2.png
index 65f4d97e2..65f4d97e2 100644
--- a/graphics/field_effects/pics/unknown_18.png
+++ b/graphics/field_effects/pics/unused_grass_2.png
Binary files differ
diff --git a/graphics/field_effects/pics/unused_grass.png b/graphics/field_effects/pics/unused_grass_3.png
index ffd68ec1d..ffd68ec1d 100644
--- a/graphics/field_effects/pics/unused_grass.png
+++ b/graphics/field_effects/pics/unused_grass_3.png
Binary files differ
diff --git a/graphics/field_effects/pics/unknown_19.png b/graphics/field_effects/pics/unused_sand.png
index 4ae851e58..4ae851e58 100644
--- a/graphics/field_effects/pics/unknown_19.png
+++ b/graphics/field_effects/pics/unused_sand.png
Binary files differ
diff --git a/graphics/field_effects/pics/unknown_20.png b/graphics/field_effects/pics/water_surfacing.png
index 7d6af5e0c..7d6af5e0c 100644
--- a/graphics/field_effects/pics/unknown_20.png
+++ b/graphics/field_effects/pics/water_surfacing.png
Binary files differ
diff --git a/graphics/unknown/unknown_55C1B0.png b/graphics/misc/deoxys_rock_fragment_bottom_left.png
index 3f5b8d5c3..3f5b8d5c3 100644
--- a/graphics/unknown/unknown_55C1B0.png
+++ b/graphics/misc/deoxys_rock_fragment_bottom_left.png
Binary files differ
diff --git a/graphics/unknown/unknown_55C1D0.png b/graphics/misc/deoxys_rock_fragment_bottom_right.png
index 7684451e4..7684451e4 100644
--- a/graphics/unknown/unknown_55C1D0.png
+++ b/graphics/misc/deoxys_rock_fragment_bottom_right.png
Binary files differ
diff --git a/graphics/unknown/unknown_55C170.png b/graphics/misc/deoxys_rock_fragment_top_left.png
index d601cb6e5..d601cb6e5 100644
--- a/graphics/unknown/unknown_55C170.png
+++ b/graphics/misc/deoxys_rock_fragment_top_left.png
Binary files differ
diff --git a/graphics/unknown/unknown_55C190.png b/graphics/misc/deoxys_rock_fragment_top_right.png
index 01f10cd07..01f10cd07 100644
--- a/graphics/unknown/unknown_55C190.png
+++ b/graphics/misc/deoxys_rock_fragment_top_right.png
Binary files differ
diff --git a/graphics/misc/big_hof_monitor.png b/graphics/misc/hof_monitor_big.png
index 510e6a232..510e6a232 100644
--- a/graphics/misc/big_hof_monitor.png
+++ b/graphics/misc/hof_monitor_big.png
Binary files differ
diff --git a/graphics/misc/small_hof_monitor.png b/graphics/misc/hof_monitor_small.png
index dcff33095..dcff33095 100644
--- a/graphics/misc/small_hof_monitor.png
+++ b/graphics/misc/hof_monitor_small.png
Binary files differ
diff --git a/graphics/pokenav/862A5D4.pal b/graphics/misc/trainer_hill_ereader.pal
index 4b0812f09..4b0812f09 100644
--- a/graphics/pokenav/862A5D4.pal
+++ b/graphics/misc/trainer_hill_ereader.pal
diff --git a/graphics/slot_machine/reel_time.png b/graphics/slot_machine/digital_display.png
index 4ba92175f..8295aeca2 100644
--- a/graphics/slot_machine/reel_time.png
+++ b/graphics/slot_machine/digital_display.png
Binary files differ
diff --git a/graphics/slot_machine/85A843E.pal b/graphics/slot_machine/flashing_lights_inside.pal
index e4d2436c7..e4d2436c7 100644
--- a/graphics/slot_machine/85A843E.pal
+++ b/graphics/slot_machine/flashing_lights_inside.pal
diff --git a/graphics/slot_machine/85A845E.pal b/graphics/slot_machine/flashing_lights_middle.pal
index db8703d47..db8703d47 100644
--- a/graphics/slot_machine/85A845E.pal
+++ b/graphics/slot_machine/flashing_lights_middle.pal
diff --git a/graphics/slot_machine/85A847E.pal b/graphics/slot_machine/flashing_lights_outside.pal
index 4bb9a0b4d..4bb9a0b4d 100644
--- a/graphics/slot_machine/85A847E.pal
+++ b/graphics/slot_machine/flashing_lights_outside.pal
diff --git a/graphics/slot_machine/slots_layout.bin b/graphics/slot_machine/info_box.bin
index 4009d8177..4009d8177 100644
--- a/graphics/slot_machine/slots_layout.bin
+++ b/graphics/slot_machine/info_box.bin
Binary files differ
diff --git a/graphics/slot_machine/85A84B0.pal b/graphics/slot_machine/pokeball_shining_0.pal
index 3e1dbc024..3e1dbc024 100644
--- a/graphics/slot_machine/85A84B0.pal
+++ b/graphics/slot_machine/pokeball_shining_0.pal
diff --git a/graphics/slot_machine/85A84D0.pal b/graphics/slot_machine/pokeball_shining_1.pal
index 38b1c125d..38b1c125d 100644
--- a/graphics/slot_machine/85A84D0.pal
+++ b/graphics/slot_machine/pokeball_shining_1.pal
diff --git a/graphics/slot_machine/85A84F0.pal b/graphics/slot_machine/pokeball_shining_2.pal
index f4abe23f1..f4abe23f1 100644
--- a/graphics/slot_machine/85A84F0.pal
+++ b/graphics/slot_machine/pokeball_shining_2.pal
diff --git a/graphics/unknown/unknown_DD19F8.bin b/graphics/slot_machine/reel_background.bin
index 6338ade28..6338ade28 100644
--- a/graphics/unknown/unknown_DD19F8.bin
+++ b/graphics/slot_machine/reel_background.bin
diff --git a/graphics/slot_machine/reel_pikachu.png b/graphics/slot_machine/reel_pikachu.png
deleted file mode 100644
index 29b004c84..000000000
--- a/graphics/slot_machine/reel_pikachu.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/unknown_DD1A18.png b/graphics/slot_machine/reel_time_number_gap.png
index 8b4a564bf..8b4a564bf 100644
--- a/graphics/unknown/unknown_DD1A18.png
+++ b/graphics/slot_machine/reel_time_number_gap.png
Binary files differ
diff --git a/graphics/slot_machine/85A96E0.bin b/graphics/slot_machine/reel_time_window.bin
index 3aa89e7b4..3aa89e7b4 100644
--- a/graphics/slot_machine/85A96E0.bin
+++ b/graphics/slot_machine/reel_time_window.bin
diff --git a/graphics/slot_machine/spr6.pal b/graphics/slot_machine/spr6.pal
deleted file mode 100644
index 4f74a3079..000000000
--- a/graphics/slot_machine/spr6.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 98 90
-255 189 16
-131 0 0
-197 65 16
-197 65 16
-197 65 16
-197 65 16
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-0 0 0
diff --git a/graphics/unknown/858E588/0.png b/graphics/unknown/858E588/0.png
deleted file mode 100644
index 70b0774b0..000000000
--- a/graphics/unknown/858E588/0.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E588/1.png b/graphics/unknown/858E588/1.png
deleted file mode 100644
index e176b5f73..000000000
--- a/graphics/unknown/858E588/1.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E588/2.png b/graphics/unknown/858E588/2.png
deleted file mode 100644
index c006bb660..000000000
--- a/graphics/unknown/858E588/2.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E588/3.png b/graphics/unknown/858E588/3.png
deleted file mode 100644
index 67a3cf769..000000000
--- a/graphics/unknown/858E588/3.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E588/4.png b/graphics/unknown/858E588/4.png
deleted file mode 100644
index e2a5aec4f..000000000
--- a/graphics/unknown/858E588/4.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5B0/0.png b/graphics/unknown/858E5B0/0.png
deleted file mode 100644
index afd104d7c..000000000
--- a/graphics/unknown/858E5B0/0.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5B0/1.png b/graphics/unknown/858E5B0/1.png
deleted file mode 100644
index 026b9b7af..000000000
--- a/graphics/unknown/858E5B0/1.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5B0/2.png b/graphics/unknown/858E5B0/2.png
deleted file mode 100644
index 360e2ab63..000000000
--- a/graphics/unknown/858E5B0/2.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5B0/3.png b/graphics/unknown/858E5B0/3.png
deleted file mode 100644
index 88672c182..000000000
--- a/graphics/unknown/858E5B0/3.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5B0/4.png b/graphics/unknown/858E5B0/4.png
deleted file mode 100644
index 660ad331d..000000000
--- a/graphics/unknown/858E5B0/4.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5B0/5.png b/graphics/unknown/858E5B0/5.png
deleted file mode 100644
index 7006e9cc9..000000000
--- a/graphics/unknown/858E5B0/5.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5D8/0.png b/graphics/unknown/858E5D8/0.png
deleted file mode 100644
index 110b1dd0a..000000000
--- a/graphics/unknown/858E5D8/0.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5D8/1.png b/graphics/unknown/858E5D8/1.png
deleted file mode 100644
index f50079de7..000000000
--- a/graphics/unknown/858E5D8/1.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5D8/2.png b/graphics/unknown/858E5D8/2.png
deleted file mode 100644
index a54bb3d12..000000000
--- a/graphics/unknown/858E5D8/2.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5D8/3.png b/graphics/unknown/858E5D8/3.png
deleted file mode 100644
index 0ea6e43c9..000000000
--- a/graphics/unknown/858E5D8/3.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E5D8/4.png b/graphics/unknown/858E5D8/4.png
deleted file mode 100644
index 4b4e300bb..000000000
--- a/graphics/unknown/858E5D8/4.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E84C/0.png b/graphics/unknown/858E84C/0.png
deleted file mode 100644
index 4673403e0..000000000
--- a/graphics/unknown/858E84C/0.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E84C/1.png b/graphics/unknown/858E84C/1.png
deleted file mode 100644
index c55f2146d..000000000
--- a/graphics/unknown/858E84C/1.png
+++ /dev/null
Binary files differ
diff --git a/graphics/unknown/858E84C/2.png b/graphics/unknown/858E84C/2.png
deleted file mode 100644
index 4f03b50ae..000000000
--- a/graphics/unknown/858E84C/2.png
+++ /dev/null
Binary files differ
diff --git a/include/battle_transition.h b/include/battle_transition.h
index 6581d6413..a33032fb4 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -9,7 +9,7 @@ bool8 FldEff_Pokeball(void);
void TransitionPhase1_Task_RunFuncs(u8 taskId);
void GetBg0TilesDst(u16 **tilemap, u16 **tileset);
-extern const struct SpritePalette gFieldEffectObjectPaletteInfo10;
+extern const struct SpritePalette gSpritePalette_Pokeball;
enum // TRANSITION_MUGSHOT
{
diff --git a/include/battle_util.h b/include/battle_util.h
index b77fa10ad..157ba8eb6 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -52,8 +52,8 @@ void CancelMultiTurnMoves(u8 battlerId);
bool8 WasUnableToUseMove(u8 battlerId);
void PrepareStringBattle(u16 stringId, u8 battlerId);
void ResetSentPokesToOpponentValue(void);
-void sub_803F9EC(u8 battlerId);
-void sub_803FA70(u8 battlerId);
+void OpponentSwitchInResetSentPokesToOpponentValue(u8 battlerId);
+void UpdateSentPokesToOpponentValue(u8 battlerId);
void BattleScriptPush(const u8* bsPtr);
void BattleScriptPushCursor(void);
void BattleScriptPop(void);
diff --git a/include/constants/field_effects.h b/include/constants/field_effects.h
index 00ca60457..dc1085f7c 100644
--- a/include/constants/field_effects.h
+++ b/include/constants/field_effects.h
@@ -20,10 +20,10 @@
#define FLDEFF_JUMP_SMALL_SPLASH 16
#define FLDEFF_LONG_GRASS 17
#define FLDEFF_JUMP_LONG_GRASS 18
-#define FLDEFF_UNKNOWN_19 19
-#define FLDEFF_UNKNOWN_20 20
-#define FLDEFF_UNKNOWN_21 21
-#define FLDEFF_UNKNOWN_22 22
+#define FLDEFF_UNUSED_GRASS 19
+#define FLDEFF_UNUSED_GRASS_2 20
+#define FLDEFF_UNUSED_SAND 21
+#define FLDEFF_WATER_SURFACING 22
#define FLDEFF_BERRY_TREE_GROWTH_SPARKLE 23
#define FLDEFF_DEEP_SAND_FOOTPRINTS 24
#define FLDEFF_POKECENTER_HEAL 25
@@ -50,8 +50,8 @@
#define FLDEFF_HEART_ICON 46
#define FLDEFF_NOP_47 47
#define FLDEFF_NOP_48 48
-#define FLDEFF_POP_OUT_OF_ASH 49
-#define FLDEFF_LAVARIDGE_GYM_WARP 50
+#define FLDEFF_ASH_PUFF 49
+#define FLDEFF_ASH_LAUNCH 50
#define FLDEFF_SWEET_SCENT 51
#define FLDEFF_SAND_PILLAR 52
#define FLDEFF_BUBBLES 53
@@ -65,8 +65,59 @@
#define FLDEFF_PCTURN_ON 61
#define FLDEFF_HALL_OF_FAME_RECORD 62
#define FLDEFF_USE_TELEPORT 63
-#define FLDEFF_RAYQUAZA 64
-#define FLDEFF_65 65
+#define FLDEFF_RAYQUAZA_SPOTLIGHT 64
+#define FLDEFF_DESTROY_DEOXYS_ROCK 65
#define FLDEFF_MOVE_DEOXYS_ROCK 66
-#endif
+#define FLDEFFOBJ_SHADOW_S 0
+#define FLDEFFOBJ_SHADOW_M 1
+#define FLDEFFOBJ_SHADOW_L 2
+#define FLDEFFOBJ_SHADOW_XL 3
+#define FLDEFFOBJ_TALL_GRASS 4
+#define FLDEFFOBJ_RIPPLE 5
+#define FLDEFFOBJ_ASH 6
+#define FLDEFFOBJ_SURF_BLOB 7
+#define FLDEFFOBJ_ARROW 8
+#define FLDEFFOBJ_GROUND_IMPACT_DUST 9
+#define FLDEFFOBJ_JUMP_TALL_GRASS 10
+#define FLDEFFOBJ_SAND_FOOTPRINTS 11
+#define FLDEFFOBJ_JUMP_BIG_SPLASH 12
+#define FLDEFFOBJ_SPLASH 13
+#define FLDEFFOBJ_JUMP_SMALL_SPLASH 14
+#define FLDEFFOBJ_LONG_GRASS 15
+#define FLDEFFOBJ_JUMP_LONG_GRASS 16
+#define FLDEFFOBJ_UNUSED_GRASS 17
+#define FLDEFFOBJ_UNUSED_GRASS_2 18
+#define FLDEFFOBJ_UNUSED_SAND 19
+#define FLDEFFOBJ_WATER_SURFACING 20
+#define FLDEFFOBJ_REFLECTION_DISTORTION 21
+#define FLDEFFOBJ_SPARKLE 22
+#define FLDEFFOBJ_DEEP_SAND_FOOTPRINTS 23
+#define FLDEFFOBJ_TREE_DISGUISE 24
+#define FLDEFFOBJ_MOUNTAIN_DISGUISE 25
+#define FLDEFFOBJ_BIRD 26
+#define FLDEFFOBJ_BIKE_TIRE_TRACKS 27
+#define FLDEFFOBJ_SAND_DISGUISE 28
+#define FLDEFFOBJ_SAND_PILE 29
+#define FLDEFFOBJ_SHORT_GRASS 30
+#define FLDEFFOBJ_HOT_SPRINGS_WATER 31
+#define FLDEFFOBJ_ASH_PUFF 32
+#define FLDEFFOBJ_ASH_LAUNCH 33
+#define FLDEFFOBJ_BUBBLES 34
+#define FLDEFFOBJ_SMALL_SPARKLE 35
+#define FLDEFFOBJ_RAYQUAZA 36
+
+#define FLDEFF_PAL_TAG_CUT_GRASS 0x1000
+#define FLDEFF_PAL_TAG_SECRET_POWER_TREE 0x1003
+#define FLDEFF_PAL_TAG_GENERAL_0 0x1004
+#define FLDEFF_PAL_TAG_GENERAL_1 0x1005
+#define FLDEFF_PAL_TAG_POKEBALL_GLOW 0x1007
+#define FLDEFF_PAL_TAG_SECRET_POWER_PLANT 0x1008
+#define FLDEFF_PAL_TAG_POKEBALL 0x1009
+#define FLDEFF_PAL_TAG_ASH 0x100D
+#define FLDEFF_PAL_TAG_SAND_PILLAR 0x100E
+#define FLDEFF_PAL_TAG_SMALL_SPARKLE 0x100F
+#define FLDEFF_PAL_TAG_HOF_MONITOR 0x1010
+#define FLDEFF_PAL_TAG_UNKNOWN 0x1011
+
+#endif // GUARD_FIELD_EFFECT_CONSTANTS_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index e1a88283a..485dd3058 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -275,7 +275,7 @@
#define FLAG_RECEIVED_DURIN_BERRY 0xFB
#define FLAG_RECEIVED_BELUE_BERRY 0xFC
#define FLAG_ENABLE_RIVAL_MATCH_CALL 0xFD
-#define FLFLAG_RECEIVED_CHARCOAL 0xFE
+#define FLAG_RECEIVED_CHARCOAL 0xFE
#define FLAG_LATIOS_OR_LATIAS_ROAMING 0xFF
#define FLAG_RECEIVED_REPEAT_BALL 0x100
#define FLAG_RECEIVED_OLD_ROD 0x101
@@ -1077,9 +1077,7 @@
#define FLAG_ITEM_ROUTE_120_NUGGET 0x406
#define FLAG_ITEM_ROUTE_120_FULL_HEAL 0x407
#define FLAG_ITEM_ROUTE_123_CALCIUM 0x408
-
-#define FLAG_UNUSED_0x409 0x409 // Unused Flag
-
+#define FLAG_ITEM_ROUTE_123_RARE_CANDY 0x409 // Unused Flag, leftover from R/S. In Emerald this is a hidden item and uses a different flag
#define FLAG_ITEM_ROUTE_127_ZINC 0x40A
#define FLAG_ITEM_ROUTE_127_CARBOS 0x40B
#define FLAG_ITEM_ROUTE_132_RARE_CANDY 0x40C
@@ -1171,37 +1169,27 @@
#define FLAG_ITEM_NEW_MAUVILLE_FULL_HEAL 0x462
#define FLAG_ITEM_NEW_MAUVILLE_PARALYZE_HEAL 0x463
#define FLAG_ITEM_AQUA_HIDEOUT_B1F_MASTER_BALL 0x464
-
-#define FLAG_UNUSED_0x465 0x465 // Unused Flag
-#define FLAG_UNUSED_0x466 0x466 // Unused Flag
-#define FLAG_UNUSED_0x467 0x467 // Unused Flag
+#define FLAG_ITEM_OLD_MAGMA_HIDEOUT_B1F_MASTER_BALL 0x465 // Unused Flag, leftover from the Ruby Magma hideout
+#define FLAG_ITEM_OLD_MAGMA_HIDEOUT_B1F_MAX_ELIXIR 0x466 // Unused Flag, leftover from the Ruby Magma hideout
+#define FLAG_ITEM_OLD_MAGMA_HIDEOUT_B2F_NEST_BALL 0x467 // Unused Flag, leftover from the Ruby Magma hideout
#define FLAG_UNUSED_0x468 0x468 // Unused Flag
-
#define FLAG_ITEM_MT_PYRE_2F_ULTRA_BALL 0x469
#define FLAG_ITEM_MT_PYRE_4F_SEA_INCENSE 0x46A
#define FLAG_ITEM_SAFARI_ZONE_SOUTH_WEST_MAX_REVIVE 0x46B
#define FLAG_ITEM_AQUA_HIDEOUT_B1F_NUGGET 0x46C
-
-#define FLAG_UNUSED_0x46D 0x46D // Unused Flag
-
+#define FLAG_ITEM_MOSSDEEP_STEVENS_HOUSE_HM08 0x46D // Unused Flag, leftover from R/S. HM08 is given to the player directly in Emerald
#define FLAG_ITEM_ROUTE_119_NUGGET 0x46E
#define FLAG_ITEM_ROUTE_104_POTION 0x46F
-
#define FLAG_UNUSED_0x470 0x470 // Unused Flag
-
#define FLAG_ITEM_ROUTE_103_PP_UP 0x471
-
#define FLAG_UNUSED_0x472 0x472 // Unused Flag
-
#define FLAG_ITEM_ROUTE_108_STAR_PIECE 0x473
#define FLAG_ITEM_ROUTE_109_POTION 0x474
#define FLAG_ITEM_ROUTE_110_ELIXIR 0x475
#define FLAG_ITEM_ROUTE_111_ELIXIR 0x476
#define FLAG_ITEM_ROUTE_113_HYPER_POTION 0x477
#define FLAG_ITEM_ROUTE_115_HEAL_POWDER 0x478
-
#define FLAG_UNUSED_0x479 0x479 // Unused Flag
-
#define FLAG_ITEM_ROUTE_116_POTION 0x47A
#define FLAG_ITEM_ROUTE_119_ELIXIR_2 0x47B
#define FLAG_ITEM_ROUTE_120_REVIVE 0x47C
@@ -1356,7 +1344,7 @@
#define FLAG_SYS_POKEMON_GET (SYSTEM_FLAGS + 0x0) // FLAG_0x860
#define FLAG_SYS_POKEDEX_GET (SYSTEM_FLAGS + 0x1)
#define FLAG_SYS_POKENAV_GET (SYSTEM_FLAGS + 0x2)
-#define FLAG_UNUSED_0x863 (SYSTEM_FLAGS + 0x3)
+#define FLAG_UNUSED_0x863 (SYSTEM_FLAGS + 0x3) // Unused Flag
#define FLAG_SYS_GAME_CLEAR (SYSTEM_FLAGS + 0x4)
#define FLAG_SYS_CHAT_USED (SYSTEM_FLAGS + 0x5)
#define FLAG_SYS_HIPSTER_MEET (SYSTEM_FLAGS + 0x6)
@@ -1373,7 +1361,7 @@
#define NUM_BADGES (1 + FLAG_BADGE08_GET - FLAG_BADGE01_GET)
// Towns and Cities
-#define FLAG_VISITED_LITTLEROOT_TOWN (SYSTEM_FLAGS + 0xF)
+#define FLAG_VISITED_LITTLEROOT_TOWN (SYSTEM_FLAGS + 0xF)
#define FLAG_VISITED_OLDALE_TOWN (SYSTEM_FLAGS + 0x10)
#define FLAG_VISITED_DEWFORD_TOWN (SYSTEM_FLAGS + 0x11)
#define FLAG_VISITED_LAVARIDGE_TOWN (SYSTEM_FLAGS + 0x12)
@@ -1418,9 +1406,9 @@
#define FLAG_SYS_MIX_RECORD (SYSTEM_FLAGS + 0x34)
#define FLAG_SYS_CLOCK_SET (SYSTEM_FLAGS + 0x35)
#define FLAG_SYS_NATIONAL_DEX (SYSTEM_FLAGS + 0x36)
-#define FLAG_SYS_UNUSED_CAVE_SHIP (SYSTEM_FLAGS + 0x37) // Unused Flag?
-#define FLAG_SYS_UNUSED_CAVE_WONDER (SYSTEM_FLAGS + 0x38) // Unused Flag?
-#define FLAG_SYS_UNUSED_CAVE_BATTLE (SYSTEM_FLAGS + 0x39) // Unused Flag?
+#define FLAG_SYS_CAVE_SHIP (SYSTEM_FLAGS + 0x37) // Unused Flag, leftover from R/S debug, presumably used by Emerald's debug too
+#define FLAG_SYS_CAVE_WONDER (SYSTEM_FLAGS + 0x38) // Unused Flag, same as above
+#define FLAG_SYS_CAVE_BATTLE (SYSTEM_FLAGS + 0x39) // Unused Flag, same as above
#define FLAG_SYS_SHOAL_TIDE (SYSTEM_FLAGS + 0x3A)
#define FLAG_SYS_RIBBON_GET (SYSTEM_FLAGS + 0x3B)
diff --git a/include/constants/items.h b/include/constants/items.h
index ba4d3c49e..9496a4c61 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -497,6 +497,11 @@
#define MAX_PC_ITEM_CAPACITY 999
#define MAX_BERRY_CAPACITY 999
+// Secondary IDs for rods
+#define OLD_ROD 0
+#define GOOD_ROD 1
+#define SUPER_ROD 2
+
// Check if the item is one that can be used on a Pokemon.
#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
index 3e876f499..500b82cd4 100755
--- a/include/constants/layouts.h
+++ b/include/constants/layouts.h
@@ -1,6 +1,10 @@
#ifndef GUARD_CONSTANTS_LAYOUTS_H
#define GUARD_CONSTANTS_LAYOUTS_H
+//
+// DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json
+//
+
#define LAYOUT_PETALBURG_CITY 1
#define LAYOUT_SLATEPORT_CITY 2
#define LAYOUT_MAUVILLE_CITY 3
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 17fe7ab53..aef9924fa 100755
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -1,6 +1,10 @@
#ifndef GUARD_CONSTANTS_MAP_GROUPS_H
#define GUARD_CONSTANTS_MAP_GROUPS_H
+//
+// DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json
+//
+
// Map Group 0
#define MAP_PETALBURG_CITY (0 | (0 << 8))
#define MAP_SLATEPORT_CITY (1 | (0 << 8))
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 586107687..f7405f46a 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -289,31 +289,31 @@
#define METATILE_EverGrande_Door_PokemonLeague 0x21D
// gTileset_PokemonCenter
-#define METATILE_PokemonCenter_Elevator1F_Tile0_Frame0 0x280
-#define METATILE_PokemonCenter_Elevator1F_Tile0_Frame1 0x282
-#define METATILE_PokemonCenter_Elevator1F_Tile0_Frame2 0x284
-#define METATILE_PokemonCenter_Elevator1F_Tile1_Frame0 0x281
-#define METATILE_PokemonCenter_Elevator1F_Tile1_Frame1 0x283
-#define METATILE_PokemonCenter_Elevator1F_Tile1_Frame2 0x285
-#define METATILE_PokemonCenter_Elevator1F_Tile2_Frame0 0x288
-#define METATILE_PokemonCenter_Elevator1F_Tile2_Frame1 0x28A
-#define METATILE_PokemonCenter_Elevator1F_Tile2_Frame2 0x28C
-#define METATILE_PokemonCenter_Elevator1F_Tile3_Frame0 0x289
-#define METATILE_PokemonCenter_Elevator1F_Tile3_Frame1 0x28B
-#define METATILE_PokemonCenter_Elevator1F_Tile3_Frame2 0x28D
-#define METATILE_PokemonCenter_Elevator2F_Tile0_Frame0 0x2A0
-#define METATILE_PokemonCenter_Elevator2F_Tile0_Frame1 0x2A2
-#define METATILE_PokemonCenter_Elevator2F_Tile0_Frame2 0x2A4
-#define METATILE_PokemonCenter_Elevator2F_Tile1_Frame0 0x2A1
-#define METATILE_PokemonCenter_Elevator2F_Tile1_Frame1 0x2A3
-#define METATILE_PokemonCenter_Elevator2F_Tile1_Frame2 0x2A5
-#define METATILE_PokemonCenter_Elevator2F_Tile2_Frame0 0x2A8
-#define METATILE_PokemonCenter_Elevator2F_Tile2_Frame1 0x2AA
-#define METATILE_PokemonCenter_Elevator2F_Tile2_Frame2 0x2AC
-#define METATILE_PokemonCenter_Floor_ShadowTop_Alt 0x2DC
-#define METATILE_PokemonCenter_Floor_Plain_Alt 0x2E4
-#define METATILE_PokemonCenter_Floor_ShadowTop 0x21E
-#define METATILE_PokemonCenter_CounterBarrier 0x25D
+#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame0 0x280
+#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame1 0x282
+#define METATILE_PokemonCenter_Escalator1F_Tile0_Frame2 0x284
+#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame0 0x281
+#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame1 0x283
+#define METATILE_PokemonCenter_Escalator1F_Tile1_Frame2 0x285
+#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame0 0x288
+#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame1 0x28A
+#define METATILE_PokemonCenter_Escalator1F_Tile2_Frame2 0x28C
+#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame0 0x289
+#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame1 0x28B
+#define METATILE_PokemonCenter_Escalator1F_Tile3_Frame2 0x28D
+#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame0 0x2A0
+#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame1 0x2A2
+#define METATILE_PokemonCenter_Escalator2F_Tile0_Frame2 0x2A4
+#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame0 0x2A1
+#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame1 0x2A3
+#define METATILE_PokemonCenter_Escalator2F_Tile1_Frame2 0x2A5
+#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame0 0x2A8
+#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame1 0x2AA
+#define METATILE_PokemonCenter_Escalator2F_Tile2_Frame2 0x2AC
+#define METATILE_PokemonCenter_Floor_ShadowTop_Alt 0x2DC
+#define METATILE_PokemonCenter_Floor_Plain_Alt 0x2E4
+#define METATILE_PokemonCenter_Floor_ShadowTop 0x21E
+#define METATILE_PokemonCenter_CounterBarrier 0x25D
// gTileset_InsideOfTruck
#define METATILE_InsideOfTruck_ExitLight_Top 0x208
diff --git a/include/constants/slot_machine.h b/include/constants/slot_machine.h
index 9ecf46d79..81848f208 100644
--- a/include/constants/slot_machine.h
+++ b/include/constants/slot_machine.h
@@ -1,42 +1,6 @@
#ifndef GUARD_CONSTANTS_SLOT_MACHINE_H
#define GUARD_CONSTANTS_SLOT_MACHINE_H
-#define NUM_REELS 3
-#define REEL_NUM_TAGS 21
-#define REEL_TAG_HEIGHT 24
#define SLOT_MACHINE_COUNT 12
-// Lucky Flags
-#define LUCKY_BIAS_REPLAY (1 << 0)
-#define LUCKY_BIAS_CHERRY (1 << 1)
-#define LUCKY_BIAS_LOTAD (1 << 2)
-#define LUCKY_BIAS_AZURILL (1 << 3)
-#define LUCKY_BIAS_POWER (1 << 4)
-#define LUCKY_BIAS_REELTIME (1 << 5)
-#define LUCKY_BIAS_MIXED_777 (1 << 6)
-#define LUCKY_BIAS_777 (1 << 7)
-
-#define SLOT_MACHINE_TAG_7_RED 0
-#define SLOT_MACHINE_TAG_7_BLUE 1
-#define SLOT_MACHINE_TAG_AZURILL 2
-#define SLOT_MACHINE_TAG_LOTAD 3
-#define SLOT_MACHINE_TAG_CHERRY 4
-#define SLOT_MACHINE_TAG_POWER 5
-#define SLOT_MACHINE_TAG_REPLAY 6
-
-#define SLOT_MACHINE_MATCHED_1CHERRY 0
-#define SLOT_MACHINE_MATCHED_2CHERRY 1
-#define SLOT_MACHINE_MATCHED_REPLAY 2
-#define SLOT_MACHINE_MATCHED_LOTAD 3
-#define SLOT_MACHINE_MATCHED_AZURILL 4
-#define SLOT_MACHINE_MATCHED_POWER 5
-#define SLOT_MACHINE_MATCHED_777_MIXED 6
-#define SLOT_MACHINE_MATCHED_777_RED 7
-#define SLOT_MACHINE_MATCHED_777_BLUE 8
-#define SLOT_MACHINE_MATCHED_NONE 9
-
-#define LEFT_REEL 0
-#define MIDDLE_REEL 1
-#define RIGHT_REEL 2
-
-#endif // GUARD_CONSTANTS_SLOT_MACHINE_H \ No newline at end of file
+#endif // GUARD_CONSTANTS_SLOT_MACHINE_H
diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h
index afbcd4ace..27357e99c 100644
--- a/include/constants/trainer_hill.h
+++ b/include/constants/trainer_hill.h
@@ -22,7 +22,7 @@
#define TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS 6
#define TRAINER_HILL_FUNC_GET_CHALLENGE_TIME 7
#define TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED 8
-#define TRAINER_HILL_FUNC_CLEAR_RESULT 9
+#define TRAINER_HILL_FUNC_GET_IN_EREADER_MODE 9
#define TRAINER_HILL_FUNC_IN_CHALLENGE 10
#define TRAINER_HILL_FUNC_POST_BATTLE_TEXT 11
#define TRAINER_HILL_FUNC_SET_ALL_TRAINER_FLAGS 12
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 6ccd4759e..9b4d9302f 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -16,11 +16,7 @@ enum SpinnerRunnerFollowPatterns
RUNFOLLOW_SOUTH_EAST_WEST
};
-struct UnkStruct_085094AC
-{
- const union AnimCmd *const *anims;
- u8 animPos[4];
-};
+#define FIGURE_8_LENGTH 72
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN (1 << 0)
#define GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE (1 << 1)
@@ -43,6 +39,12 @@ struct UnkStruct_085094AC
#define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18)
#define GROUND_EFFECT_FLAG_SEAWEED (1 << 19)
+struct UnkStruct_085094AC
+{
+ const union AnimCmd *const *anims;
+ u8 animPos[4];
+};
+
struct PairedPalettes
{
u16 tag;
@@ -98,7 +100,7 @@ void ObjectEventTurnByLocalIdAndMap(u8, u8, u8, u8);
const struct ObjectEventGraphicsInfo *GetObjectEventGraphicsInfo(u8 graphicsId);
void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8);
void FreeAndReserveObjectSpritePalettes(void);
-void sub_808E82C(u8, u8, u8, s16, s16);
+void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
void sub_808E7E4(u8, u8, u8);
void sub_808E78C(u8, u8, u8, u8);
void sub_808E75C(s16, s16);
@@ -174,8 +176,6 @@ u8 sub_809785C(struct Sprite *);
u8 sub_80978E4(struct Sprite *);
void SetAndStartSpriteAnim(struct Sprite *, u8, u8);
bool8 SpriteAnimEnded(struct Sprite *);
-void sub_8097750(struct Sprite *);
-bool8 sub_8097758(struct Sprite *);
void CreateLevitateMovementTask(struct ObjectEvent *);
void DestroyExtraMovementTask(u8);
void UnfreezeObjectEvents(void);
@@ -191,8 +191,8 @@ u8 GetLedgeJumpDirection(s16, s16, u8);
void CameraObjectSetFollowedObjectId(u8 objectId);
u16 GetObjectPaletteTag(u8 palSlot);
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible);
-s16 sub_809773C(s16 a1);
-s16 sub_8097728(s16 a1);
+s16 GetFigure8XOffset(s16 idx);
+s16 GetFigure8YOffset(s16 idx);
void CameraObjectReset2(void);
u8 GetObjectEventBerryTreeId(u8 objectEventId);
void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index d147dd4f1..3c4380108 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -372,10 +372,11 @@ extern const u8 SecretBase_Text_Trainer8Defeated[];
extern const u8 SecretBase_Text_Trainer9Defeated[];
//field effects
-extern const u8 EventScript_FldEffStrength[];
+extern const u8 EventScript_UseStrength[];
extern const u8 EventScript_FailSweetScent[];
-extern const u8 EventScript_FldEffFlash[];
-extern const u8 EventScript_FldEffRockSmash[];
+extern const u8 EventScript_UseFlash[];
+extern const u8 EventScript_UseCut[];
+extern const u8 EventScript_UseRockSmash[];
//player pc
extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_TurnOffPlayerPC[];
@@ -587,4 +588,26 @@ extern u8 BerryTree_EventScript_ItemUsePlantBerry[];
extern u8 BerryTree_EventScript_ItemUseWailmerPail[];
extern u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[];
+// overworld
+extern const u8 EventScript_WhiteOut[];
+extern const u8 EventScript_ResetMrBriney[];
+extern const u8 EventScript_DoLinkRoomExit[];
+extern const u8 CableClub_EventScript_TooBusyToNotice[];
+extern const u8 CableClub_EventScript_ReadTrainerCard[];
+extern const u8 CableClub_EventScript_ReadTrainerCardColored[];
+extern const u8 EventScript_BattleColosseum_4P_PlayerSpot0[];
+extern const u8 EventScript_BattleColosseum_4P_PlayerSpot1[];
+extern const u8 EventScript_BattleColosseum_4P_PlayerSpot2[];
+extern const u8 EventScript_BattleColosseum_4P_PlayerSpot3[];
+extern const u8 EventScript_RecordCenter_Spot0[];
+extern const u8 EventScript_RecordCenter_Spot1[];
+extern const u8 EventScript_RecordCenter_Spot2[];
+extern const u8 EventScript_RecordCenter_Spot3[];
+extern const u8 EventScript_BattleColosseum_2P_PlayerSpot0[];
+extern const u8 EventScript_BattleColosseum_2P_PlayerSpot1[];
+extern const u8 EventScript_TradeCenter_Chair1[];
+extern const u8 EventScript_TradeCenter_Chair0[];
+extern const u8 EventScript_ConfirmLeaveTradeRoom[];
+extern const u8 EventScript_TerminateLink[];
+
#endif // GUARD_EVENT_SCRIPTS_H
diff --git a/include/faraway_island.h b/include/faraway_island.h
index 084b5a277..a5243c6a7 100755
--- a/include/faraway_island.h
+++ b/include/faraway_island.h
@@ -2,7 +2,7 @@
#define GUARD_FARAWAY_ISLAND_H
u32 GetMewMoveDirection(void);
-bool8 sub_81D4A58(struct ObjectEvent*);
+bool8 ShouldMewShakeGrass(struct ObjectEvent*);
void UpdateFarawayIslandStepCounter(void);
bool8 ObjectEventIsFarawayIslandMew(struct ObjectEvent *);
bool8 IsMewPlayingHideAndSeek(void);
diff --git a/include/field_camera.h b/include/field_camera.h
index fecea244e..2bed02b20 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -23,7 +23,7 @@ void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
void sub_8089C08(s16 *a0, s16 *a1);
void DrawDoorMetatileAt(int x, int y, u16 *arr);
-void move_tilemap_camera_to_upper_left_corner(void);
+void ResetFieldCamera(void);
void sub_8057A58(void);
void ResetCameraUpdateInfo(void);
u32 InitCameraUpdateCallback(u8 a);
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index f722a6063..17e5afb63 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -34,7 +34,7 @@ bool8 sub_8068870(u16 a);
bool8 sub_8068894(void);
bool8 sub_8068A64(struct MapPosition *, u16);
u8 sub_8068F18(void);
-bool8 dive_warp(struct MapPosition *position, u16 b);
+bool8 TryDoDiveWarp(struct MapPosition *position, u16 b);
int SetCableClubWarp(void);
u8 TrySetDiveWarp(void);
const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction);
diff --git a/include/field_effect.h b/include/field_effect.h
index 59f99ad93..731fb9c59 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -16,7 +16,7 @@ void ReturnToFieldFromFlyMapSelect(void);
u8 AddNewGameBirchObject(s16, s16, u8);
void FieldEffectStop(struct Sprite *sprite, u8 id);
u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
-void CreateTeleportFieldEffectTask(void);
+void FldEff_TeleportWarpOut(void);
void FieldEffectActiveListRemove(u8 id);
void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
void FieldEffectActiveListAdd(u8 id);
@@ -39,12 +39,8 @@ void StartEscalatorWarp(u8 metatileBehavior, u8 priority);
void StartLavaridgeGymB1FWarp(u8 priority);
void StartLavaridgeGym1FWarp(u8 priority);
-void sub_80B9C28(s16*, u8);
-void sub_80B9C54(s16*, u8);
-void sub_80B9CDC(s16*, u8);
-
-void SpriteCB_PopOutOfAsh(struct Sprite*);
-void SpriteCB_LavaridgeGymWarp(struct Sprite*);
+void SpriteCB_AshPuff(struct Sprite*);
+void SpriteCB_AshLaunch(struct Sprite*);
void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b);
void FreeResourcesAndDestroySprite(struct Sprite *sprite, u8 spriteId);
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
index 8257bc110..9b7b6ffd5 100644
--- a/include/field_effect_helpers.h
+++ b/include/field_effect_helpers.h
@@ -8,20 +8,22 @@
// Exported ROM declarations
u8 CreateWarpArrowSprite(void);
u8 sub_8155800(u8 oldSpriteId);
-void sub_81555AC(u8, u8);
+void SetSurfBobState(u8 spriteId, u8 value);
+void SetSurfBobWhileFlyingOutState(u8 spriteId, u8 value);
+void SetSurfBobWhileFishingState(u8 spriteId, u8 value, s16 data1);
bool8 sub_8155DA0(struct ObjectEvent *);
void sub_8155D78(struct ObjectEvent *);
void StartAshFieldEffect(s16, s16, u16, s16);
void SetUpReflection(struct ObjectEvent*, struct Sprite*, u8);
u32 StartFieldEffectForObjectEvent(u8, struct ObjectEvent*);
u8 FindTallGrassFieldEffectSpriteId(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y);
-void sub_8155F80(struct Sprite*);
+void UpdateRayquazaSpotlightEffect(struct Sprite*);
void UpdateShadowFieldEffect(struct Sprite*);
void UpdateTallGrassFieldEffect(struct Sprite*);
void WaitFieldEffectSpriteAnim(struct Sprite*);
void UpdateAshFieldEffect(struct Sprite*);
void UpdateSurfBlobFieldEffect(struct Sprite*);
-void sub_8156194(struct Sprite*);
+void UpdateJumpImpactEffect(struct Sprite*);
void UpdateFootprintsTireTracksFieldEffect(struct Sprite*);
void UpdateSplashFieldEffect(struct Sprite*);
void UpdateLongGrassFieldEffect(struct Sprite*);
@@ -33,7 +35,5 @@ void UpdateBubblesFieldEffect(struct Sprite*);
void UpdateSparkleFieldEffect(struct Sprite*);
void SetSpriteInvisible(u8 spriteId);
void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y);
-void sub_8155604(u8 spriteId, u8 value, s16 data1);
-void sub_81555D8(u8 spriteId, u8 value);
#endif //GUARD_FIELD_EFFECT_HELPERS_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index bcee339d5..722fe4444 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -1,7 +1,7 @@
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
-void player_step(u8 a, u16 b, u16 c);
+void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys);
void ClearPlayerAvatarInfo(void);
void SetPlayerAvatarExtraStateTransition(u8, u8);
u8 GetPlayerAvatarGenderByGraphicsId(u8);
@@ -39,7 +39,7 @@ void sub_808BCF4(void);
void sub_808D074(u8);
void GetXYCoordsOneStepInFrontOfPlayer(s16 *xPtr, s16 *yPtr);
u8 GetRivalAvatarGraphicsIdByStateIdAndGender(u8, u8);
-void sub_808C114(void);
+void SetPlayerAvatarFieldMove(void);
u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
void SetPlayerAvatarStateMask(u8 a);
u8 GetPlayerAvatarGraphicsIdByStateId(u8 a);
@@ -47,9 +47,9 @@ u8 GetJumpSpecialMovementAction(u32);
bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerFacingSurfableFishableWater(void);
bool8 IsPlayerSurfingNorth(void);
-void sub_808C228(u8 direction);
+void SetPlayerAvatarWatering(u8 direction);
u8 GetPlayerAvatarFlags(void);
-void sub_808B578(void);
+void UpdatePlayerAvatarTransitionState(void);
u8 GetFRLGAvatarGraphicsIdByGender(u8);
u8 GetRSAvatarGraphicsIdByGender(u8);
void PlayerWheelieInPlace(u8 direction);
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index e05e30378..951bf0788 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -1,6 +1,8 @@
#ifndef GUARD_FIELD_SCREEN_EFFECT_H
#define GUARD_FIELD_SCREEN_EFFECT_H
+extern const s32 gMaxFlashLevel;
+
void WarpFadeInScreen(void);
void WarpFadeOutScreen(void);
void FadeInFromBlack(void);
@@ -26,7 +28,7 @@ void DoFallWarp(void);
void DoEscalatorWarp(u8 metatileBehavior);
void DoLavaridgeGymB1FWarp(void);
void DoLavaridgeGym1FWarp(void);
-void DoTeleportWarp(void);
+void DoTeleportTileWarp(void);
void DoMossdeepGymWarp(void);
void DoPortholeWarp(void);
void DoCableClubWarp(void);
diff --git a/include/fieldmap.h b/include/fieldmap.h
index aff458eb1..438fb4787 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -30,25 +30,21 @@ struct MapConnection *sub_8088950(u8 direction, int x, int y);
bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection);
bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset);
void save_serialize_map(void);
-void sub_8088B3C(u16 x, u16 y);
+void SetCameraFocusCoords(u16 x, u16 y);
void InitMap(void);
void InitMapFromSavedGame(void);
void InitTrainerHillMap(void);
void InitBattlePyramidMap(bool8 setPlayerPosition);
-void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout);
-void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout);
-void apply_map_tileset2_palette(struct MapLayout const *mapLayout);
-void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout);
-void copy_map_tileset1_to_vram(const struct MapLayout *);
-void copy_map_tileset2_to_vram(const struct MapLayout *);
-struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection);
+void CopyMapTilesetsToVram(struct MapLayout const *mapLayout);
+void LoadMapTilesetPalettes(struct MapLayout const *mapLayout);
+void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout);
+void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout);
+void CopyPrimaryTilesetToVram(const struct MapLayout *);
+void CopySecondaryTilesetToVram(const struct MapLayout *);
+struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection);
struct MapConnection *GetConnectionAtCoords(s16 x, s16 y);
void MapGridSetMetatileImpassabilityAt(int x, int y, bool32 impassable);
-void SpriteCB_PokeballGlow(struct Sprite *);
-void SpriteCB_PokecenterMonitor(struct Sprite *);
-void SpriteCB_HallOfFameMonitor(struct Sprite *);
-
// field_region_map.c
void FieldInitRegionMap(MainCallback callback);
diff --git a/include/fldeff.h b/include/fldeff.h
index deb54372c..597ce6f47 100644
--- a/include/fldeff.h
+++ b/include/fldeff.h
@@ -9,22 +9,13 @@ bool8 FldEff_CutGrass(void);
void FixLongGrassMetatilesWindowTop(s16 x, s16 y);
void FixLongGrassMetatilesWindowBottom(s16 x, s16 y);
-extern const struct SpritePalette gFieldEffectObjectPaletteInfo6;
+extern const struct SpritePalette gSpritePalette_CutGrass;
extern struct MapPosition gPlayerFacingPosition;
-// groundshake
-bool8 sub_81BE66C(void);
-void sub_81BE6AC(void);
-void sub_81BE6B8(void);
-void sub_81BE72C(void);
-void sub_81BE79C(void);
-void sub_81BE7F4(void);
-void sub_81BE994(void);
-
// escalator
-void sub_80E1558(u8 var);
-void sub_80E1570(void);
-bool8 sub_80E1584(void);
+void StartEscalator(bool8 var);
+void StopEscalator(void);
+bool8 IsEscalatorMoving(void);
// soft-boiled
bool8 SetUpFieldMove_SoftBoiled(void);
@@ -39,7 +30,7 @@ bool8 GetMapPairFadeFromType(u8 a1, u8 a2);
// strength
bool8 SetUpFieldMove_Strength(void);
-bool8 sub_8145E2C(void);
+bool8 FldEff_UseStrength(void);
// sweet scent
bool8 SetUpFieldMove_SweetScent(void);
@@ -55,7 +46,7 @@ bool8 FldEff_UseDig(void);
// rock smash
bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId);
-u8 oei_task_add(void);
+u8 CreateFieldMoveTask(void);
bool8 SetUpFieldMove_RockSmash(void);
bool8 FldEff_UseRockSmash(void);
diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h
index 6fd15c1ea..4acca7944 100644
--- a/include/fldeff_misc.h
+++ b/include/fldeff_misc.h
@@ -1,10 +1,10 @@
#ifndef GUARD_FLDEFF_MISC_H
#define GUARD_FLDEFF_MISC_H
-void sub_80F9BCC(u16 a0, u16 a1, u8 a2);
-void sub_80F9BF4(u16 a0, u16 a1, u8 a2);
-bool8 sub_80F9C1C(void);
-bool8 sub_80F9C30(void);
+void ComputerScreenOpenEffect(u16 a0, u16 a1, u8 a2);
+void ComputerScreenCloseEffect(u16 a0, u16 a1, u8 a2);
+bool8 IsComputerScreenOpenEffectActive(void);
+bool8 IsComputerScreenCloseEffectActive(void);
bool8 SetUpFieldMove_SecretPower(void);
bool8 FldEff_UseSecretPowerCave(void);
bool8 FldEff_SecretPowerCave(void);
@@ -15,22 +15,22 @@ bool8 FldEff_SecretPowerShrub(void);
bool8 FldEff_SecretBasePCTurnOn(void);
void DoSecretBasePCTurnOffEffect(void);
void PopSecretBaseBalloon(s16 metatileId, s16 x, s16 y);
-bool8 FldEff_NopA6FC(void);
-bool8 FldEff_NopA700(void);
+bool8 FldEff_Nop47(void);
+bool8 FldEff_Nop48(void);
void ShatterSecretBaseBreakableDoor(s16 x, s16 y);
void PlaySecretBaseMusicNoteMatSound(s16 metatileId);
void DoSecretBaseGlitterMatSparkle(void);
bool8 FldEff_SandPillar(void);
void InteractWithShieldOrTVDecoration(void);
-bool8 sub_80FADE4(u16 arg0, u8 arg1);
+bool8 IsLargeBreakableDecoration(u16 arg0, u8 arg1);
void FldEffPoison_Start(void);
bool32 FldEffPoison_IsActive(void);
void DoWateringBerryTreeAnim(void);
-u8 CreateRecordMixingSprite(void);
-void DestroyRecordMixingSprite(void);
+u8 CreateRecordMixingLights(void);
+void DestroyRecordMixingLights(void);
-extern const struct SpritePalette gFieldEffectObjectPaletteInfo7;
-extern const struct SpritePalette gFieldEffectObjectPaletteInfo8;
+extern const struct SpritePalette gSpritePalette_SecretPower_Cave;
+extern const struct SpritePalette gSpritePalette_SecretPower_Plant;
extern const struct SpritePalette gFieldEffectObjectPaletteInfo9;
extern const u16 gTilesetPalettes_SecretBase[][16];
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 59610f9ad..4598e87fa 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -247,14 +247,14 @@ enum {
PLAYER_AVATAR_STATE_WATERING,
};
-#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << PLAYER_AVATAR_STATE_NORMAL)
-#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << PLAYER_AVATAR_STATE_MACH_BIKE)
-#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << PLAYER_AVATAR_STATE_ACRO_BIKE)
-#define PLAYER_AVATAR_FLAG_SURFING (1 << PLAYER_AVATAR_STATE_SURFING)
-#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << PLAYER_AVATAR_STATE_UNDERWATER)
-#define PLAYER_AVATAR_FLAG_5 (1 << PLAYER_AVATAR_STATE_FIELD_MOVE)
-#define PLAYER_AVATAR_FLAG_6 (1 << PLAYER_AVATAR_STATE_FISHING)
-#define PLAYER_AVATAR_FLAG_DASH (1 << 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)
enum
{
diff --git a/include/graphics.h b/include/graphics.h
index 8514d49bd..106798892 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4824,7 +4824,7 @@ extern const u32 gUnknown_08D91DB8[];
extern const u32 gUnknown_08D927EC[];
// Slot Machine
-extern const u32 gSlotMachineReelTime_Gfx[];
+extern const u32 gSlotMachineDigitalDisplay_Gfx[];
extern const u8 gSlotMachineReelTimeNumber0[];
extern const u8 gSlotMachineReelTimeNumber1[];
extern const u8 gSlotMachineReelTimeNumber2[];
@@ -4832,15 +4832,15 @@ extern const u8 gSlotMachineReelTimeNumber3[];
extern const u8 gSlotMachineReelTimeNumber4[];
extern const u8 gSlotMachineReelTimeNumber5[];
extern const u8 gSlotMachineReelTimeShadow[];
-extern const u8 gUnknown_08DD1A18[];
-extern const u8 gSlotMachineReelTimeLargeBolt0[];
-extern const u8 gSlotMachineReelTimeLargeBolt1[];
+extern const u8 gSlotMachineReelTimeNumberGap_Gfx[];
+extern const u8 gSlotMachineReelTimeBolt0[];
+extern const u8 gSlotMachineReelTimeBolt1[];
extern const u8 gSlotMachineReelTimePikaAura[];
extern const u8 gSlotMachineReelTimeExplosion0[];
extern const u8 gSlotMachineReelTimeExplosion1[];
extern const u8 gSlotMachineReelTimeDuck[];
extern const u8 gSlotMachineReelTimeSmoke[];
-extern const u8 gSlotMachineReelTimeBolt[];
+extern const u8 gSlotMachinePikaPowerBolt[];
extern const u8 gSlotMachineReelSymbol1Tiles[];
extern const u8 gSlotMachineReelSymbol2Tiles[];
extern const u8 gSlotMachineReelSymbol3Tiles[];
@@ -4858,19 +4858,18 @@ extern const u8 gSlotMachineNumber6Tiles[];
extern const u8 gSlotMachineNumber7Tiles[];
extern const u8 gSlotMachineNumber8Tiles[];
extern const u8 gSlotMachineNumber9Tiles[];
-extern const u8 gUnknown_08DD19F8[];
+extern const u8 gSlotMachineReelBackground_Tilemap[];
extern const u32 gSlotMachineMenu_Gfx[];
extern const u16 gSlotMachineMenu_Tilemap[];
-extern const u16 gUnknown_08DCEC70[];
+extern const u16 gSlotMachineInfoBox_Tilemap[];
extern const u16 gSlotMachineMenu_Pal[];
-extern const u16 gUnknown_08DCF230[];
-extern const u16 gUnknown_08DCF170[];
-extern const u16 gUnknown_08DCF1B0[];
-extern const u16 gSlotMachineReelTime_Pal[];
-extern const u16 gUnknown_08DCF1F0[];
-extern const u16 gUnknown_08DCF210[];
-extern const u16 gUnknown_08DCF230[];
-extern const u16 gUnknown_08DCF190[];
+extern const u16 gSlotMachineReelSymbols_Pal[];
+extern const u16 gSlotMachineReelTimeMisc_Pal[];
+extern const u16 gSlotMachineReelTimeMachine_Pal[];
+extern const u16 gSlotMachineMisc_Pal[];
+extern const u16 gSlotMachineReelTimeExplosion_Pal[];
+extern const u16 gSlotMachineDigitalDisplay_Pal[];
+extern const u16 gSlotMachineReelTimePikachu_Pal[];
extern const u32 gBattleAnimBgTilemap_Sandstorm[];
extern const u32 gBattleAnimBgImage_Sandstorm[];
diff --git a/include/menu.h b/include/menu.h
index 20eda0fce..a57b3718f 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -30,7 +30,7 @@ extern const u16 gUnknown_0860F074[];
void FreeAllOverworldWindowBuffers(void);
void InitStandardTextBoxWindows(void);
-void sub_8197200(void);
+void InitTextBoxGfxAndPrinters(void);
u16 RunTextPrintersAndIsPrinter0Active(void);
void LoadMessageBoxAndBorderGfx(void);
void DrawDialogueFrame(u8 windowId, bool8 copyToVram);
@@ -64,8 +64,8 @@ void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirs
void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
s8 Menu_ProcessInputNoWrapClearOnChoose(void);
s8 ProcessMenuInput_other(void);
-void do_scheduled_bg_tilemap_copies_to_vram(void);
-void clear_scheduled_bg_copies_to_vram(void);
+void DoScheduledBgTilemapCopiesToVram(void);
+void ClearScheduledBgCopiesToVram(void);
void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 a2, u8 a3);
void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds);
diff --git a/include/overworld.h b/include/overworld.h
index 78a5b4ad0..a2eac7e29 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -24,6 +24,8 @@
#define MOVEMENT_MODE_FROZEN 1
#define MOVEMENT_MODE_SCRIPTED 2
+#define SKIP_OBJECT_EVENT_LOAD 1
+
struct InitialPlayerAvatarState
{
u8 transitionFlags;
@@ -99,8 +101,7 @@ void SetDefaultFlashLevel(void);
void Overworld_SetFlashLevel(s32 flashLevel);
u8 Overworld_GetFlashLevel(void);
void SetCurrentMapLayout(u16 mapLayoutId);
-void sub_8085540(u8 var);
-u8 sub_808554C(void);
+void SetObjectEventLoadFlag(u8 var);
u16 GetLocationMusic(struct WarpData *warp);
u16 GetCurrLocationDefaultMusic(void);
u16 GetWarpDestinationMusic(void);
@@ -135,11 +136,9 @@ void SetUnusedCallback(void *a0);
void CB2_NewGame(void);
void CB2_WhiteOut(void);
void CB2_LoadMap(void);
-void sub_8086024(void);
+void CB2_ReturnToFieldContestHall(void);
void CB2_ReturnToFieldCableClub(void);
void CB2_ReturnToField(void);
-void CB2_ReturnToFieldLocal(void);
-void CB2_ReturnToFieldLink(void);
void CB2_ReturnToFieldFromMultiplayer(void);
void CB2_ReturnToFieldWithOpenMenu(void);
void CB2_ReturnToFieldContinueScript(void);
diff --git a/include/strings.h b/include/strings.h
index 702392efa..50af23a40 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -88,6 +88,12 @@ extern const u8 gText_Slots[];
extern const u8 gText_Roulette[];
extern const u8 gText_Jackpot[];
+extern const u8 gText_YouDontHaveThreeCoins[];
+extern const u8 gText_QuitTheGame[];
+extern const u8 gText_YouveGot9999Coins[];
+extern const u8 gText_YouveRunOutOfCoins[];
+extern const u8 gText_ReelTimeHelp[];
+
extern const u8 gText_First[];
extern const u8 gText_Second[];
extern const u8 gText_Third[];
diff --git a/include/trainer_hill.h b/include/trainer_hill.h
index c849bcced..3f0644248 100644
--- a/include/trainer_hill.h
+++ b/include/trainer_hill.h
@@ -75,7 +75,7 @@ void FillHillTrainerParty(void);
void FillHillTrainersParties(void);
u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId);
u8 GetNumFloorsInTrainerHillChallenge(void);
-void sub_81D64C0(void);
-bool32 sub_81D6534(void);
+void TryLoadTrainerHillEReaderPalette(void);
+bool32 OnTrainerHillEReaderChallengeFloor(void);
#endif // GUARD_TRAINER_HILL_H
diff --git a/include/tv.h b/include/tv.h
index 8e9233c2b..e2c50cad2 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -30,12 +30,12 @@ void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent);
void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent);
void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut);
void TryPutSecretBaseSecretsOnAir(void);
-void sub_80EDB44(void);
+void TryPutTodaysRivalTrainerOnAir(void);
void sub_80EDC60(const u16 *words);
void sub_80EDA80(void);
void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx);
void sub_80F0BB8(void);
-void sub_80ED950(bool8 flag);
+void RecordFishingAttemptForTV(bool8 caughtFish);
void IncrementDailySlotsUses(void);
void IncrementDailyRouletteUses(void);
void IncrementDailyWildBattles(void);
diff --git a/ld_script.txt b/ld_script.txt
index 9b0a82d9c..f3e418c08 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -440,7 +440,7 @@ SECTIONS {
gflib/window.o(.rodata);
gflib/text.o(.rodata);
gflib/sprite.o(.rodata);
- data/io_reg.o(.rodata);
+ gflib/io_reg.o(.rodata);
gflib/string_util.o(.rodata);
src/link.o(.rodata);
src/link.o(.rodata.str1.4);
diff --git a/spritesheet_rules.mk b/spritesheet_rules.mk
index 83a68b887..ae7971960 100644
--- a/spritesheet_rules.mk
+++ b/spritesheet_rules.mk
@@ -582,16 +582,16 @@ $(FLDEFFGFXDIR)/arrow.4bpp: %.4bpp: %.png
$(FLDEFFGFXDIR)/ash.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/berry_tree_growth_sparkle.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/sparkle.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/bike_hop_big_splash.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/jump_big_splash.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/bike_hop_small_splash.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/jump_small_splash.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 1
-$(FLDEFFGFXDIR)/bike_hop_tall_grass.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/jump_tall_grass.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 1
$(FLDEFFGFXDIR)/bike_tire_tracks.4bpp: %.4bpp: %.png
@@ -606,7 +606,7 @@ $(FLDEFFGFXDIR)/deep_sand_footprints.4bpp: %.4bpp: %.png
$(FLDEFFGFXDIR)/ground_impact_dust.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 1
-$(FLDEFFGFXDIR)/jump_out_of_ash.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/ash_puff.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
$(FLDEFFGFXDIR)/long_grass.4bpp: %.4bpp: %.png
@@ -642,23 +642,35 @@ $(FLDEFFGFXDIR)/unknown_16.4bpp: %.4bpp: %.png
$(FLDEFFGFXDIR)/unknown_17.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/unknown_18.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/unused_grass_2.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/unknown_19.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/unused_sand.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/unknown_20.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/water_surfacing.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/unknown_29.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/sand_pile.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 1
-$(FLDEFFGFXDIR)/lavaridge_gym_warp.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/ash_launch.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/unknown_35.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/small_sparkle.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
-$(FLDEFFGFXDIR)/unused_grass.4bpp: %.4bpp: %.png
+$(FLDEFFGFXDIR)/unused_grass_3.4bpp: %.4bpp: %.png
$(GFX) $< $@ -mwidth 2 -mheight 2
+
+$(FLDEFFGFXDIR)/secret_power_cave.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -mwidth 2 -mheight 2
+
+$(FLDEFFGFXDIR)/secret_power_shrub.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -mwidth 2 -mheight 2
+
+$(FLDEFFGFXDIR)/secret_power_tree.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -mwidth 2 -mheight 2
+
+$(FLDEFFGFXDIR)/record_mix_lights.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -mwidth 4 -mheight 1
diff --git a/src/AgbRfu_LinkManager.c b/src/AgbRfu_LinkManager.c
index e4127ee09..f6ebcc726 100644
--- a/src/AgbRfu_LinkManager.c
+++ b/src/AgbRfu_LinkManager.c
@@ -918,7 +918,7 @@ static void rfu_LMAN_REQ_callback(u16 reqCommandId, u16 reqResult)
{
lman.reserveDisconnectSlot_flag = 0;
lman.acceptCount = 0;
- lman.acceptSlot_flag = 0;;
+ lman.acceptSlot_flag = 0;
lman.parent_child = MODE_NEUTRAL;
rfu_LMAN_managerChangeAgbClockMaster();
if (reqCommandId == ID_STOP_MODE_REQ)
diff --git a/src/agb_flash.c b/src/agb_flash.c
index a9cf13d5f..eeccf1116 100644
--- a/src/agb_flash.c
+++ b/src/agb_flash.c
@@ -41,7 +41,7 @@ u16 ReadFlashId(void)
u8 (*readFlash1)(u8 *);
SetReadFlash1(readFlash1Buffer);
- readFlash1 = (u8 (*)(u8 *))((s32)readFlash1Buffer + 1);
+ readFlash1 = (u8 (*)(u8 *))((uintptr_t)readFlash1Buffer + 1);
// Enter ID mode.
FLASH_WRITE(0x5555, 0xAA);
@@ -113,12 +113,12 @@ void SetReadFlash1(u16 *dest)
u16 *src;
u16 i;
- PollFlashStatus = (u8 (*)(u8 *))((s32)dest + 1);
+ PollFlashStatus = (u8 (*)(u8 *))((uintptr_t)dest + 1);
src = (u16 *)ReadFlash1;
- src = (u16 *)((s32)src ^ 1);
+ src = (u16 *)((uintptr_t)src ^ 1);
- i = ((s32)SetReadFlash1 - (s32)ReadFlash1) >> 1;
+ i = ((uintptr_t)SetReadFlash1 - (uintptr_t)ReadFlash1) >> 1;
while (i != 0)
{
@@ -127,7 +127,8 @@ void SetReadFlash1(u16 *dest)
}
}
-void ReadFlash_Core(u8 *src, u8 *dest, u32 size)
+// Using volatile here to make sure the flash memory will ONLY be read as bytes, to prevent any compiler optimizations.
+void ReadFlash_Core(vu8 *src, u8 *dest, u32 size)
{
while (size-- != 0)
{
@@ -142,7 +143,7 @@ void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size)
u16 readFlash_Core_Buffer[0x40];
u16 *funcSrc;
u16 *funcDest;
- void (*readFlash_Core)(u8 *, u8 *, u32);
+ void (*readFlash_Core)(vu8 *, u8 *, u32);
REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8;
@@ -153,10 +154,10 @@ void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size)
}
funcSrc = (u16 *)ReadFlash_Core;
- funcSrc = (u16 *)((s32)funcSrc ^ 1);
+ funcSrc = (u16 *)((uintptr_t)funcSrc ^ 1);
funcDest = readFlash_Core_Buffer;
- i = ((s32)ReadFlash - (s32)ReadFlash_Core) >> 1;
+ i = ((uintptr_t)ReadFlash - (uintptr_t)ReadFlash_Core) >> 1;
while (i != 0)
{
@@ -164,7 +165,7 @@ void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size)
i--;
}
- readFlash_Core = (void (*)(u8 *, u8 *, u32))((s32)readFlash_Core_Buffer + 1);
+ readFlash_Core = (void (*)(vu8 *, u8 *, u32))((uintptr_t)readFlash_Core_Buffer + 1);
src = FLASH_BASE + (sectorNum << gFlash->sector.shift) + offset;
@@ -201,10 +202,10 @@ u32 VerifyFlashSector(u16 sectorNum, u8 *src)
}
funcSrc = (u16 *)VerifyFlashSector_Core;
- funcSrc = (u16 *)((s32)funcSrc ^ 1);
+ funcSrc = (u16 *)((uintptr_t)funcSrc ^ 1);
funcDest = verifyFlashSector_Core_Buffer;
- i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1;
+ i = (u16)(((uintptr_t)VerifyFlashSector - (uintptr_t)VerifyFlashSector_Core) >> 1);
while (i != 0)
{
@@ -212,7 +213,7 @@ u32 VerifyFlashSector(u16 sectorNum, u8 *src)
i--;
}
- verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1);
+ verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((uintptr_t)verifyFlashSector_Core_Buffer + 1);
tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift);
size = gFlash->sector.size;
@@ -238,10 +239,10 @@ u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n)
REG_WAITCNT = (REG_WAITCNT & ~WAITCNT_SRAM_MASK) | WAITCNT_SRAM_8;
funcSrc = (u16 *)VerifyFlashSector_Core;
- funcSrc = (u16 *)((s32)funcSrc ^ 1);
+ funcSrc = (u16 *)((uintptr_t)funcSrc ^ 1);
funcDest = verifyFlashSector_Core_Buffer;
- i = ((s32)VerifyFlashSector - (s32)VerifyFlashSector_Core) >> 1;
+ i = ((uintptr_t)VerifyFlashSector - (uintptr_t)VerifyFlashSector_Core) >> 1;
while (i != 0)
{
@@ -249,7 +250,7 @@ u32 VerifyFlashSectorNBytes(u16 sectorNum, u8 *src, u32 n)
i--;
}
- verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((s32)verifyFlashSector_Core_Buffer + 1);
+ verifyFlashSector_Core = (u32 (*)(u8 *, u8 *, u32))((uintptr_t)verifyFlashSector_Core_Buffer + 1);
tgt = FLASH_BASE + (sectorNum << gFlash->sector.shift);
@@ -292,4 +293,4 @@ u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n)
}
return result;
-}
+} \ No newline at end of file
diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c
index ea3df8098..5e8a8b2a7 100644
--- a/src/battle_anim_bug.c
+++ b/src/battle_anim_bug.c
@@ -372,14 +372,11 @@ static void AnimTranslateStinger(struct Sprite *sprite)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
- else
+ else if (GetBattlerSide(gBattleAnimAttacker))
{
- if (GetBattlerSide(gBattleAnimAttacker))
- {
- gBattleAnimArgs[2] = -gBattleAnimArgs[2];
- gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- gBattleAnimArgs[3] = -gBattleAnimArgs[3];
- }
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
if (!IsContest() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
@@ -387,13 +384,8 @@ static void AnimTranslateStinger(struct Sprite *sprite)
if (GetBattlerPosition(gBattleAnimTarget) == B_POSITION_PLAYER_LEFT
|| GetBattlerPosition(gBattleAnimTarget) == B_POSITION_OPPONENT_LEFT)
{
- s16 temp1, temp2;
-
- temp1 = gBattleAnimArgs[2];
- gBattleAnimArgs[2] = -temp1;
-
- temp2 = gBattleAnimArgs[0];
- gBattleAnimArgs[0] = -temp2;
+ gBattleAnimArgs[2] *= -1;
+ gBattleAnimArgs[0] *= -1;
}
}
@@ -448,28 +440,24 @@ static void AnimMissileArc_Step(struct Sprite *sprite)
else
{
s16 tempData[8];
- u16 *data = sprite->data;
- u16 x1 = sprite->pos1.x;
- s16 x2 = sprite->pos2.x;
- u16 y1 = sprite->pos1.y;
- s16 y2 = sprite->pos2.y;
+ s16 xpos, ypos;
int i;
for (i = 0; i < 8; i++)
- tempData[i] = data[i];
+ tempData[i] = sprite->data[i];
- x2 += x1;
- y2 += y1;
+ xpos = sprite->pos1.x + sprite->pos2.x;
+ ypos = sprite->pos1.y + sprite->pos2.y;
if (!TranslateAnimHorizontalArc(sprite))
{
- u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
- sprite->pos1.y + sprite->pos2.y - y2);
+ u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - xpos, //Isn't this zero lol
+ sprite->pos1.y + sprite->pos2.y - ypos);
rotation += 0xC000;
TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation);
for (i = 0; i < 8; i++)
- data[i] = tempData[i];
+ sprite->data[i] = tempData[i];
}
}
}
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index 516c58e55..f4769145d 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -3967,24 +3967,25 @@ static void AnimProtect(struct Sprite* sprite)
static void AnimProtect_Step(struct Sprite *sprite)
{
- int a;
- int i;
+ int i, savedPal;
sprite->data[5] += 96;
sprite->pos2.x = -(sprite->data[5] >> 8);
if (++sprite->data[1] > 1)
{
+ int id;
sprite->data[1] = 0;
- a = gPlttBufferFaded[sprite->data[2] + 1];
+ savedPal = gPlttBufferFaded[sprite->data[2] + 1];
i = 0;
do
{
- gPlttBufferFaded[sprite->data[2] + ++i] = gPlttBufferFaded[sprite->data[2] + i + 1];
+ id = sprite->data[2] + ++i;
+ gPlttBufferFaded[id] = gPlttBufferFaded[id + 1];
} while (i < 6);
- gPlttBufferFaded[sprite->data[2] + 7] = a;
+ gPlttBufferFaded[sprite->data[2] + 7] = savedPal;
}
- if (sprite->data[7] > 6 && sprite->data[0] >0 && ++sprite->data[6] > 1)
+ if (sprite->data[7] > 6 && sprite->data[0] > 0 && ++sprite->data[6] > 1)
{
sprite->data[6] = 0;
sprite->data[7] -= 1;
diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c
index 7918698fc..25340f9c6 100644
--- a/src/battle_anim_psychic.c
+++ b/src/battle_anim_psychic.c
@@ -1101,7 +1101,7 @@ static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId)
break;
case 1:
task->data[1] -= 4;
- task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);;
+ task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);
SetSpriteRotScale(task->data[15], task->data[2], task->data[2], 0);
SetBattlerSpriteYOffsetFromOtherYScale(task->data[15], task->data[13]);
if (task->data[1] == 0)
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index dcef7d483..bca669cc2 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -569,7 +569,7 @@ static void sub_81172EC(u8 taskId)
if (gTasks[taskId].data[12] == 0)
{
sub_80A477C(0);
- gTasks[taskId].data[15]++;;
+ gTasks[taskId].data[15]++;
}
}
break;
diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c
index 5810b6bdc..fa2f38c4b 100644
--- a/src/battle_anim_water.c
+++ b/src/battle_anim_water.c
@@ -52,7 +52,7 @@ static void CreateWaterSpoutLaunchDroplets(struct Task*, u8);
static void CreateWaterSpoutRainDroplet(struct Task*, u8);
static void AnimTask_WaterSport_Step(u8);
static void CreateWaterSportDroplet(struct Task*);
-static void CreateWaterPulseRingBubbles(struct Sprite*, int, int);
+static void CreateWaterPulseRingBubbles(struct Sprite*, s32, s32);
// Both unused
const u8 gUnknown_8593C80[] = INCBIN_U8("graphics/unknown/unknown_593C80.4bpp");
@@ -624,98 +624,24 @@ void AnimTask_RotateAuroraRingColors(u8 taskId)
gTasks[taskId].func = AnimTask_RotateAuroraRingColors_Step;
}
-#ifdef NONMATCHING
static void AnimTask_RotateAuroraRingColors_Step(u8 taskId)
{
int i;
u16 palIndex;
- u16 *palPtr1;
- u16 *palPtr2;
- u16 rgbBuffer;
if (++gTasks[taskId].data[10] == 3)
{
+ u16 tempPlt;
gTasks[taskId].data[10] = 0;
palIndex = gTasks[taskId].data[2] + 1;
- palPtr1 = &gPlttBufferFaded[palIndex];
- rgbBuffer = *palPtr1;
- palPtr2 = &palPtr1[1];
- for (i = 0; i < 7; i++)
- palPtr1[i] = palPtr2[i];
- gPlttBufferFaded[palIndex + 7] = rgbBuffer;
+ tempPlt = gPlttBufferFaded[palIndex];
+ for (i = 1; i < 8; i++)
+ gPlttBufferFaded[palIndex + i - 1] = gPlttBufferFaded[palIndex + i];
+ gPlttBufferFaded[palIndex + 7] = tempPlt;
}
if (++gTasks[taskId].data[11] == gTasks[taskId].data[0])
DestroyAnimVisualTask(taskId);
}
-#else
-NAKED
-static void AnimTask_RotateAuroraRingColors_Step(u8 taskId)
-{
- asm_unified("push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- ldr r1, =gTasks\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- adds r2, r0, r1\n\
- ldrh r0, [r2, 0x1C]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x1C]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- mov r12, r1\n\
- cmp r0, 0x3\n\
- bne _081075BE\n\
- movs r0, 0\n\
- strh r0, [r2, 0x1C]\n\
- ldrh r0, [r2, 0xC]\n\
- adds r0, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldr r1, =gPlttBufferFaded\n\
- lsls r0, r5, 1\n\
- adds r0, r1\n\
- ldrh r6, [r0]\n\
- adds r7, r1, 0\n\
- adds r3, r0, 0x2\n\
- movs r1, 0x6\n\
- adds r2, r0, 0\n\
-_081075A8:\n\
- ldrh r0, [r3]\n\
- strh r0, [r2]\n\
- adds r3, 0x2\n\
- adds r2, 0x2\n\
- subs r1, 0x1\n\
- cmp r1, 0\n\
- bge _081075A8\n\
- adds r0, r5, 0x7\n\
- lsls r0, 1\n\
- adds r0, r7\n\
- strh r6, [r0]\n\
-_081075BE:\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- add r0, r12\n\
- ldrh r1, [r0, 0x1E]\n\
- adds r1, 0x1\n\
- strh r1, [r0, 0x1E]\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- movs r2, 0x8\n\
- ldrsh r0, [r0, r2]\n\
- cmp r1, r0\n\
- bne _081075DE\n\
- adds r0, r4, 0\n\
- bl DestroyAnimVisualTask\n\
-_081075DE:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n");
-}
-#endif
// For animating undulating beam attacks (e.g. Flamethrower, Hydro Pump, Signal Beam)
static void AnimToTargetInSinWave(struct Sprite *sprite)
@@ -822,6 +748,7 @@ static void AnimHydroCannonBeam(struct Sprite *sprite)
if (GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_PLAYER_LEFT || GetBattlerPosition(gBattleAnimAttacker) == B_POSITION_OPPONENT_LEFT)
gBattleAnimArgs[0] *= -1;
}
+
if ((gBattleAnimArgs[5] & 0xFF00) == 0)
animType = TRUE;
else
@@ -867,7 +794,7 @@ static void AnimSmallBubblePair_Step(struct Sprite *sprite)
sprite->pos2.x = Sin(sprite->data[0], 4);
sprite->data[1] += 48;
sprite->pos2.y = -(sprite->data[1] >> 8);
- if (--sprite->data[7] == -1)
+ if (sprite->data[7]-- == 0)
DestroyAnimSprite(sprite);
}
@@ -2004,216 +1931,50 @@ static void AnimWaterPulseRing_Step(struct Sprite *sprite)
sprite->data[0]++;
}
-#ifdef NONMATCHING
-static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yDiff)
+static void CreateWaterPulseRingBubbles(struct Sprite *sprite, s32 xDiff, s32 yDiff)
{
- s16 something = sprite->data[0] / 2;
- s16 combinedX = sprite->pos1.x + sprite->pos2.x;
- s16 combinedY = sprite->pos1.y + sprite->pos2.y;
- s16 randomSomethingY = yDiff + (Random2() % 10) - 5;
- s16 randomSomethingX = -xDiff + (Random2() % 10) - 5;
- s16 i;
+ s16 combinedX, combinedY;
+ s16 i, something;
+ s16 unusedVar = 1; //unusedVar is needed to match
+ s16 somethingRandomX, somethingRandomY;
u8 spriteId;
- for (i = 0; i <= 0; i++)
+ something = sprite->data[0] / 2;
+ combinedX = sprite->pos1.x + sprite->pos2.x;
+ combinedY = sprite->pos1.y + sprite->pos2.y;
+ if (yDiff < 0)
+ unusedVar *= -1; //Needed to Match
+ somethingRandomY = yDiff + (Random2() % 10) - 5;
+ somethingRandomX = -xDiff + (Random2() % 10) - 5;
+
+ for (i = 0; i < 1; i++)
{
spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY + something, 130);
gSprites[spriteId].data[0] = 20;
- gSprites[spriteId].data[1] = randomSomethingY;
+ gSprites[spriteId].data[1] = somethingRandomY;
gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
- if (randomSomethingX < 0)
- gSprites[spriteId].data[2] = -randomSomethingX;
+ if (somethingRandomX < 0)
+ {
+ gSprites[spriteId].data[2] = -somethingRandomX;
+ }
else
- gSprites[spriteId].data[2] = randomSomethingX;
+ {
+ gSprites[spriteId].data[2] = somethingRandomX;
+ }
}
- for (i = 0; i <= 0; i++)
+ for (i = 0; i < 1; i++)
{
spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY - something, 130);
gSprites[spriteId].data[0] = 20;
- gSprites[spriteId].data[1] = randomSomethingY;
+ gSprites[spriteId].data[1] = somethingRandomY;
gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1;
- if (randomSomethingX > 0)
- gSprites[spriteId].data[2] = -randomSomethingX;
+ if (somethingRandomX > 0)
+ {
+ gSprites[spriteId].data[2] = -somethingRandomX;
+ }
else
- gSprites[spriteId].data[2] = randomSomethingX;
+ {
+ gSprites[spriteId].data[2] = somethingRandomX;
+ }
}
}
-#else
-NAKED
-static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yDiff)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x18\n\
- adds r4, r1, 0\n\
- adds r5, r2, 0\n\
- movs r2, 0x2E\n\
- ldrsh r1, [r0, r2]\n\
- lsrs r2, r1, 31\n\
- adds r1, r2\n\
- lsls r1, 15\n\
- lsrs r1, 16\n\
- str r1, [sp]\n\
- ldrh r1, [r0, 0x24]\n\
- ldrh r3, [r0, 0x20]\n\
- adds r1, r3\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r8, r1\n\
- ldrh r1, [r0, 0x26]\n\
- ldrh r0, [r0, 0x22]\n\
- adds r1, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r10, r1\n\
- bl Random2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- adds r0, r5, r0\n\
- subs r0, 0x5\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r9, r0\n\
- bl Random2\n\
- negs r4, r4\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- adds r4, r0\n\
- subs r4, 0x5\n\
- lsls r4, 16\n\
- lsrs r7, r4, 16\n\
- movs r6, 0\n\
- mov r0, r8\n\
- lsls r0, 16\n\
- mov r8, r0\n\
- mov r1, r10\n\
- lsls r1, 16\n\
- str r1, [sp, 0xC]\n\
- ldr r2, [sp]\n\
- lsls r2, 16\n\
- str r2, [sp, 0x10]\n\
- asrs r1, 16\n\
- lsls r0, r7, 16\n\
- asrs r5, r0, 16\n\
- str r0, [sp, 0x14]\n\
- negs r3, r5\n\
- str r3, [sp, 0x4]\n\
- asrs r0, r2, 16\n\
- adds r1, r0\n\
- lsls r1, 16\n\
- mov r10, r1\n\
-_08108DE2:\n\
- ldr r0, =gWaterPulseRingBubbleSpriteTemplate\n\
- mov r2, r8\n\
- asrs r1, r2, 16\n\
- mov r3, r10\n\
- asrs r2, r3, 16\n\
- movs r3, 0x82\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- ldr r1, =gSprites\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r4, r0, r1\n\
- movs r0, 0x14\n\
- strh r0, [r4, 0x2E]\n\
- mov r0, r9\n\
- strh r0, [r4, 0x30]\n\
- ldr r0, =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSpriteSubpriority\n\
- subs r0, 0x1\n\
- adds r1, r4, 0\n\
- adds r1, 0x43\n\
- strb r0, [r1]\n\
- cmp r5, 0\n\
- bge _08108E30\n\
- mov r1, sp\n\
- ldrh r1, [r1, 0x4]\n\
- strh r1, [r4, 0x32]\n\
- b _08108E32\n\
- .pool\n\
-_08108E30:\n\
- strh r7, [r4, 0x32]\n\
-_08108E32:\n\
- lsls r0, r6, 16\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r0, r2\n\
- lsrs r6, r0, 16\n\
- cmp r0, 0\n\
- ble _08108DE2\n\
- movs r6, 0\n\
- ldr r3, [sp, 0xC]\n\
- asrs r1, r3, 16\n\
- ldr r0, [sp, 0x14]\n\
- asrs r5, r0, 16\n\
- negs r2, r5\n\
- str r2, [sp, 0x8]\n\
- ldr r3, [sp, 0x10]\n\
- asrs r0, r3, 16\n\
- subs r1, r0\n\
- lsls r1, 16\n\
- mov r10, r1\n\
-_08108E58:\n\
- ldr r0, =gWaterPulseRingBubbleSpriteTemplate\n\
- mov r2, r8\n\
- asrs r1, r2, 16\n\
- mov r3, r10\n\
- asrs r2, r3, 16\n\
- movs r3, 0x82\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- ldr r1, =gSprites\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r4, r0, r1\n\
- movs r0, 0x14\n\
- strh r0, [r4, 0x2E]\n\
- mov r0, r9\n\
- strh r0, [r4, 0x30]\n\
- ldr r0, =gBattleAnimAttacker\n\
- ldrb r0, [r0]\n\
- bl GetBattlerSpriteSubpriority\n\
- subs r0, 0x1\n\
- adds r1, r4, 0\n\
- adds r1, 0x43\n\
- strb r0, [r1]\n\
- cmp r5, 0\n\
- ble _08108EA8\n\
- mov r1, sp\n\
- ldrh r1, [r1, 0x8]\n\
- strh r1, [r4, 0x32]\n\
- b _08108EAA\n\
- .pool\n\
-_08108EA8:\n\
- strh r7, [r4, 0x32]\n\
-_08108EAA:\n\
- lsls r0, r6, 16\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r0, r2\n\
- lsrs r6, r0, 16\n\
- cmp r0, 0\n\
- ble _08108E58\n\
- add sp, 0x18\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n");
-}
-#endif
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index 5626dd7bc..33daed80c 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -402,7 +402,7 @@ static void sub_81C501C(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -424,7 +424,7 @@ static bool8 sub_81C5078(void)
{
case 0:
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index c9c785773..6ccefd7be 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -5471,7 +5471,7 @@ static void Cmd_switchineffects(void)
s32 i;
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- sub_803FA70(gActiveBattler);
+ UpdateSentPokesToOpponentValue(gActiveBattler);
gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
gSpecialStatuses[gActiveBattler].flag40 = 0;
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 176be8e16..2ffa28645 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -749,7 +749,7 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_Pokeball[] =
static const struct SpriteTemplate sSpriteTemplate_Pokeball =
{
.tileTag = 0xFFFF,
- .paletteTag = 4105,
+ .paletteTag = FLDEFF_PAL_TAG_POKEBALL,
.oam = &gObjectEventBaseOam_32x32,
.anims = sSpriteAnimTable_Pokeball,
.images = sSpriteImage_Pokeball,
@@ -798,7 +798,7 @@ static const union AnimCmd *const sSpriteAnimTable_UnusedBrendanLass[] =
static const struct SpriteTemplate sSpriteTemplate_UnusedBrendan =
{
.tileTag = 0xFFFF,
- .paletteTag = 4106,
+ .paletteTag = 0x100A,
.oam = &sOam_UnusedBrendanLass,
.anims = sSpriteAnimTable_UnusedBrendanLass,
.images = sImageTable_UnusedBrendan,
@@ -809,7 +809,7 @@ static const struct SpriteTemplate sSpriteTemplate_UnusedBrendan =
static const struct SpriteTemplate sSpriteTemplate_UnusedLass =
{
.tileTag = 0xFFFF,
- .paletteTag = 4106,
+ .paletteTag = 0x100A,
.oam = &sOam_UnusedBrendanLass,
.anims = sSpriteAnimTable_UnusedBrendanLass,
.images = sImageTable_UnusedLass,
@@ -817,12 +817,9 @@ static const struct SpriteTemplate sSpriteTemplate_UnusedLass =
.callback = SpriteCb_TrainerPic
};
-static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effects/palettes/10.gbapal");
+static const u16 sFieldEffectPal_Pokeball[] = INCBIN_U16("graphics/field_effects/palettes/pokeball.gbapal");
-const struct SpritePalette gFieldEffectObjectPaletteInfo10 =
-{
- gFieldEffectObjectPalette10, 0x1009
-};
+const struct SpritePalette gSpritePalette_Pokeball = {sFieldEffectPal_Pokeball, FLDEFF_PAL_TAG_POKEBALL};
static const u16 sMugshotPal_Sidney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal");
static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal");
@@ -848,10 +845,7 @@ static const u16 *const sPlayerMugshotsPals[GENDER_COUNT] =
};
static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal");
-static const struct SpritePalette sSpritePalette_UnusedTrainer =
-{
- sUnusedTrainerPalette, 0x100A
-};
+static const struct SpritePalette sSpritePalette_UnusedTrainer = {sUnusedTrainerPalette, 0x100A};
static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin");
static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin");
@@ -1323,7 +1317,7 @@ static bool8 Phase2_BigPokeball_Func1(struct Task *task)
GetBg0TilesDst(&tilemap, &tileset);
CpuFill16(0, tilemap, 0x800);
CpuCopy16(sBigPokeball_Tileset, tileset, 0x580);
- LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+ LoadPalette(sFieldEffectPal_Pokeball, 0xF0, 0x20);
task->tState++;
return FALSE;
@@ -1629,7 +1623,7 @@ static bool8 Phase2_PokeballsTrail_Func1(struct Task *task)
GetBg0TilesDst(&tilemap, &tileset);
CpuSet(sPokeballTrail_Tileset, tileset, 0x20);
CpuFill32(0, tilemap, 0x800);
- LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+ LoadPalette(sFieldEffectPal_Pokeball, 0xF0, 0x20);
task->tState++;
return FALSE;
@@ -2919,7 +2913,7 @@ static bool8 Phase2_RectangularSpiral_Func1(struct Task *task)
CpuCopy16(sShrinkingBoxTileset, tileset, 0x20);
CpuCopy16(sShrinkingBoxTileset + 0x70, tileset + 0x20, 0x20);
CpuFill16(0xF000, tilemap, 0x800);
- LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+ LoadPalette(sFieldEffectPal_Pokeball, 0xF0, 0x20);
task->tData3 = 1;
task->tState++;
@@ -3428,7 +3422,7 @@ static bool8 Phase2_GridSquares_Func1(struct Task *task)
GetBg0TilesDst(&tilemap, &tileset);
CpuSet(sShrinkingBoxTileset, tileset, 0x10);
CpuFill16(0xF000, tilemap, 0x800);
- LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+ LoadPalette(sFieldEffectPal_Pokeball, 0xF0, 0x20);
task->tState++;
return FALSE;
diff --git a/src/battle_util.c b/src/battle_util.c
index 38d6fb18a..699fd05bc 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -259,7 +259,7 @@ void ResetSentPokesToOpponentValue(void)
gSentPokesToOpponent[(i & BIT_FLANK) >> 1] = bits;
}
-void sub_803F9EC(u8 battler)
+void OpponentSwitchInResetSentPokesToOpponentValue(u8 battler)
{
s32 i = 0;
u32 bits = 0;
@@ -279,11 +279,11 @@ void sub_803F9EC(u8 battler)
}
}
-void sub_803FA70(u8 battler)
+void UpdateSentPokesToOpponentValue(u8 battler)
{
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
- sub_803F9EC(battler);
+ OpponentSwitchInResetSentPokesToOpponentValue(battler);
}
else
{
@@ -1250,7 +1250,7 @@ bool8 HandleFaintedMonActions(void)
gBattleStruct->faintedActionsState = 3;
break;
case 2:
- sub_803F9EC(gBattlerFainted);
+ OpponentSwitchInResetSentPokesToOpponentValue(gBattlerFainted);
if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount)
gBattleStruct->faintedActionsState = 3;
else
diff --git a/src/berry.c b/src/berry.c
index 98264f37b..d70e8c353 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -1331,7 +1331,7 @@ void ResetBerryTreeSparkleFlags(void)
s16 bottom;
int i;
- GetCameraCoords(&cam_left, &cam_top);
+ GetCameraCoords((u16*)&cam_left, (u16*)&cam_top);
left = cam_left;
top = cam_top + 3;
right = cam_left + 14;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index a2a96c089..de3cc6275 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -116,8 +116,8 @@ struct BerryBlenderData
u16 field_116;
u16 field_118;
u16 field_11A;
- u16 bg_X;
- u16 bg_Y;
+ s16 bg_X;
+ s16 bg_Y;
u8 field_120[3];
u8 field_123;
u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO];
@@ -3166,13 +3166,13 @@ static void sub_80832E8(s16* a0)
static void sub_808330C(void)
{
- sub_80832E8(&sBerryBlenderData->bg_X);
- sub_80832E8(&sBerryBlenderData->bg_Y);
+ sub_80832E8((s16 *)&sBerryBlenderData->bg_X);
+ sub_80832E8((s16 *)&sBerryBlenderData->bg_Y);
}
static void sub_8083334(s16* a0, u16 a1)
{
- s32 var;
+ u8 var;
if (a1 < 10)
var = 16;
diff --git a/src/berry_crush.c b/src/berry_crush.c
index 90a299a74..cf4c99f5a 100755
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -1076,7 +1076,7 @@ int sub_802104C(void)
return 0;
InitStandardTextBoxWindows();
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
sub_8022588(var0);
sub_8022600(var0);
gPaletteFade.bufferTransferDisabled = TRUE;
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 38c2832ee..e5c89bdb7 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -186,7 +186,7 @@ static void CB2_BerryTagScreen(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -217,7 +217,7 @@ static bool8 InitBerryTagScreen(void)
case 0:
SetVBlankHBlankCallbacksToNull();
ResetVramOamAndBgCntRegs();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
diff --git a/src/bike.c b/src/bike.c
index 3685ebfad..5cdf066a9 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -835,7 +835,7 @@ static void Bike_UpdateDirTimerHistory(u8 dir)
gPlayerAvatar.directionHistory = (gPlayerAvatar.directionHistory << 4) | (dir & 0xF);
- for (i = 7; i != 0; i--)
+ for (i = ARRAY_COUNT(gPlayerAvatar.dirTimerHistory) - 1; i != 0; i--)
gPlayerAvatar.dirTimerHistory[i] = gPlayerAvatar.dirTimerHistory[i - 1];
gPlayerAvatar.dirTimerHistory[0] = 1;
}
@@ -846,7 +846,7 @@ static void Bike_UpdateABStartSelectHistory(u8 input)
gPlayerAvatar.abStartSelectHistory = (gPlayerAvatar.abStartSelectHistory << 4) | (input & 0xF);
- for (i = 7; i != 0; i--)
+ for (i = ARRAY_COUNT(gPlayerAvatar.abStartSelectTimerHistory) - 1; i != 0; i--)
gPlayerAvatar.abStartSelectTimerHistory[i] = gPlayerAvatar.abStartSelectTimerHistory[i - 1];
gPlayerAvatar.abStartSelectTimerHistory[0] = 1;
}
@@ -1000,10 +1000,10 @@ void BikeClearState(int newDirHistory, int newAbStartHistory)
gPlayerAvatar.directionHistory = newDirHistory;
gPlayerAvatar.abStartSelectHistory = newAbStartHistory;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ARRAY_COUNT(gPlayerAvatar.dirTimerHistory); i++)
gPlayerAvatar.dirTimerHistory[i] = 0;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < ARRAY_COUNT(gPlayerAvatar.abStartSelectTimerHistory); i++)
gPlayerAvatar.abStartSelectTimerHistory[i] = 0;
}
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index f9f06823a..5dee9dd4b 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -86,12 +86,12 @@ bool8 ShouldDoBrailleDigEffect(void)
void DoBrailleDigEffect(void)
{
- MapGridSetMetatileIdAt(16, 8, METATILE_ID(Cave, SealedChamberEntrance_TopLeft));
- MapGridSetMetatileIdAt(17, 8, METATILE_ID(Cave, SealedChamberEntrance_TopMid));
- MapGridSetMetatileIdAt(18, 8, METATILE_ID(Cave, SealedChamberEntrance_TopRight));
- MapGridSetMetatileIdAt(16, 9, METATILE_ID(Cave, SealedChamberEntrance_BottomLeft) | METATILE_COLLISION_MASK);
- MapGridSetMetatileIdAt(17, 9, METATILE_ID(Cave, SealedChamberEntrance_BottomMid));
- MapGridSetMetatileIdAt(18, 9, METATILE_ID(Cave, SealedChamberEntrance_BottomRight) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(16, 8, METATILE_Cave_SealedChamberEntrance_TopLeft);
+ MapGridSetMetatileIdAt(17, 8, METATILE_Cave_SealedChamberEntrance_TopMid);
+ MapGridSetMetatileIdAt(18, 8, METATILE_Cave_SealedChamberEntrance_TopRight);
+ MapGridSetMetatileIdAt(16, 9, METATILE_Cave_SealedChamberEntrance_BottomLeft | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(17, 9, METATILE_Cave_SealedChamberEntrance_BottomMid);
+ MapGridSetMetatileIdAt(18, 9, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_BRAILLE_DIG);
@@ -164,7 +164,7 @@ void DoBrailleRegisteelEffect(void)
bool8 FldEff_UseFlyAncientTomb(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)UseRegisteelHm_Callback >> 16;
gTasks[taskId].data[9] = (u32)UseRegisteelHm_Callback;
@@ -279,12 +279,12 @@ void UseRegirockHm_Callback(void)
void DoBrailleRegirockEffect(void)
{
- MapGridSetMetatileIdAt(14, 26, METATILE_ID(Cave, SealedChamberEntrance_TopLeft));
- MapGridSetMetatileIdAt(15, 26, METATILE_ID(Cave, SealedChamberEntrance_TopMid));
- MapGridSetMetatileIdAt(16, 26, METATILE_ID(Cave, SealedChamberEntrance_TopRight));
- MapGridSetMetatileIdAt(14, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomLeft) | METATILE_COLLISION_MASK);
- MapGridSetMetatileIdAt(15, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomMid));
- MapGridSetMetatileIdAt(16, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomRight) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(14, 26, METATILE_Cave_SealedChamberEntrance_TopLeft);
+ MapGridSetMetatileIdAt(15, 26, METATILE_Cave_SealedChamberEntrance_TopMid);
+ MapGridSetMetatileIdAt(16, 26, METATILE_Cave_SealedChamberEntrance_TopRight);
+ MapGridSetMetatileIdAt(14, 27, METATILE_Cave_SealedChamberEntrance_BottomLeft | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(15, 27, METATILE_Cave_SealedChamberEntrance_BottomMid);
+ MapGridSetMetatileIdAt(16, 27, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED);
@@ -318,12 +318,12 @@ void UseRegisteelHm_Callback(void)
void DoBrailleRegisteelEffect(void)
{
- MapGridSetMetatileIdAt(14, 26, METATILE_ID(Cave, SealedChamberEntrance_TopLeft));
- MapGridSetMetatileIdAt(15, 26, METATILE_ID(Cave, SealedChamberEntrance_TopMid));
- MapGridSetMetatileIdAt(16, 26, METATILE_ID(Cave, SealedChamberEntrance_TopRight));
- MapGridSetMetatileIdAt(14, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomLeft) | METATILE_COLLISION_MASK);
- MapGridSetMetatileIdAt(15, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomMid));
- MapGridSetMetatileIdAt(16, 27, METATILE_ID(Cave, SealedChamberEntrance_BottomRight) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(14, 26, METATILE_Cave_SealedChamberEntrance_TopLeft);
+ MapGridSetMetatileIdAt(15, 26, METATILE_Cave_SealedChamberEntrance_TopMid);
+ MapGridSetMetatileIdAt(16, 26, METATILE_Cave_SealedChamberEntrance_TopRight);
+ MapGridSetMetatileIdAt(14, 27, METATILE_Cave_SealedChamberEntrance_BottomLeft | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(15, 27, METATILE_Cave_SealedChamberEntrance_BottomMid);
+ MapGridSetMetatileIdAt(16, 27, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK);
DrawWholeMapView();
PlaySE(SE_BAN);
FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED);
@@ -410,7 +410,7 @@ bool32 BrailleWait_CheckButtonPress(void)
// this used to be FldEff_UseFlyAncientTomb . why did GF merge the 2 functions?
bool8 FldEff_UsePuzzleEffect(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
if (sBraillePuzzleCallbackFlag == REGISTEEL_PUZZLE)
{
diff --git a/src/data/field_effects/field_effect_object_template_pointers.h b/src/data/field_effects/field_effect_object_template_pointers.h
index de39e6db3..41d6271bf 100755
--- a/src/data/field_effects/field_effect_object_template_pointers.h
+++ b/src/data/field_effects/field_effect_object_template_pointers.h
@@ -8,70 +8,70 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_Ash;
const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob;
const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow;
const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust;
-const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopTallGrass;
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpTallGrass;
const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints;
-const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopBigSplash;
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpBigSplash;
const struct SpriteTemplate gFieldEffectObjectTemplate_Splash;
-const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopSmallSplash;
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpSmallSplash;
const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown16;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown21;
-const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle;
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpLongGrass;
+const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass;
+const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass2;
+const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedSand;
+const struct SpriteTemplate gFieldEffectObjectTemplate_WaterSurfacing;
+const struct SpriteTemplate gFieldEffectObjectTemplate_ReflectionDistortion;
+const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle;
const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints;
const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise;
const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise;
const struct SpriteTemplate gFieldEffectObjectTemplate_Bird;
const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks;
const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown29;
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandPile;
const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass;
const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater;
-const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh;
-const struct SpriteTemplate gFieldEffectObjectTemplate_LavaridgeGymWarp;
+const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff;
+const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch;
const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles;
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown35;
+const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle;
const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza;
const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[] = {
- &gFieldEffectObjectTemplate_ShadowSmall,
- &gFieldEffectObjectTemplate_ShadowMedium,
- &gFieldEffectObjectTemplate_ShadowLarge,
- &gFieldEffectObjectTemplate_ShadowExtraLarge,
- &gFieldEffectObjectTemplate_TallGrass,
- &gFieldEffectObjectTemplate_Ripple,
- &gFieldEffectObjectTemplate_Ash,
- &gFieldEffectObjectTemplate_SurfBlob,
- &gFieldEffectObjectTemplate_Arrow,
- &gFieldEffectObjectTemplate_GroundImpactDust,
- &gFieldEffectObjectTemplate_BikeHopTallGrass,
- &gFieldEffectObjectTemplate_SandFootprints,
- &gFieldEffectObjectTemplate_BikeHopBigSplash,
- &gFieldEffectObjectTemplate_Splash,
- &gFieldEffectObjectTemplate_BikeHopSmallSplash,
- &gFieldEffectObjectTemplate_LongGrass,
- &gFieldEffectObjectTemplate_Unknown16,
- &gFieldEffectObjectTemplate_Unknown17,
- &gFieldEffectObjectTemplate_Unknown18,
- &gFieldEffectObjectTemplate_Unknown19,
- &gFieldEffectObjectTemplate_Unknown20,
- &gFieldEffectObjectTemplate_Unknown21,
- &gFieldEffectObjectTemplate_BerryTreeGrowthSparkle,
- &gFieldEffectObjectTemplate_DeepSandFootprints,
- &gFieldEffectObjectTemplate_TreeDisguise,
- &gFieldEffectObjectTemplate_MountainDisguise,
- &gFieldEffectObjectTemplate_Bird,
- &gFieldEffectObjectTemplate_BikeTireTracks,
- &gFieldEffectObjectTemplate_SandDisguisePlaceholder,
- &gFieldEffectObjectTemplate_Unknown29,
- &gFieldEffectObjectTemplate_ShortGrass,
- &gFieldEffectObjectTemplate_HotSpringsWater,
- &gFieldEffectObjectTemplate_JumpOutOfAsh,
- &gFieldEffectObjectTemplate_LavaridgeGymWarp,
- &gFieldEffectObjectTemplate_Bubbles,
- &gFieldEffectObjectTemplate_Unknown35,
- &gFieldEffectObjectTemplate_Rayquaza,
+ [FLDEFFOBJ_SHADOW_S] = &gFieldEffectObjectTemplate_ShadowSmall,
+ [FLDEFFOBJ_SHADOW_M] = &gFieldEffectObjectTemplate_ShadowMedium,
+ [FLDEFFOBJ_SHADOW_L] = &gFieldEffectObjectTemplate_ShadowLarge,
+ [FLDEFFOBJ_SHADOW_XL] = &gFieldEffectObjectTemplate_ShadowExtraLarge,
+ [FLDEFFOBJ_TALL_GRASS] = &gFieldEffectObjectTemplate_TallGrass,
+ [FLDEFFOBJ_RIPPLE] = &gFieldEffectObjectTemplate_Ripple,
+ [FLDEFFOBJ_ASH] = &gFieldEffectObjectTemplate_Ash,
+ [FLDEFFOBJ_SURF_BLOB] = &gFieldEffectObjectTemplate_SurfBlob,
+ [FLDEFFOBJ_ARROW] = &gFieldEffectObjectTemplate_Arrow,
+ [FLDEFFOBJ_GROUND_IMPACT_DUST] = &gFieldEffectObjectTemplate_GroundImpactDust,
+ [FLDEFFOBJ_JUMP_TALL_GRASS] = &gFieldEffectObjectTemplate_JumpTallGrass,
+ [FLDEFFOBJ_SAND_FOOTPRINTS] = &gFieldEffectObjectTemplate_SandFootprints,
+ [FLDEFFOBJ_JUMP_BIG_SPLASH] = &gFieldEffectObjectTemplate_JumpBigSplash,
+ [FLDEFFOBJ_SPLASH] = &gFieldEffectObjectTemplate_Splash,
+ [FLDEFFOBJ_JUMP_SMALL_SPLASH] = &gFieldEffectObjectTemplate_JumpSmallSplash,
+ [FLDEFFOBJ_LONG_GRASS] = &gFieldEffectObjectTemplate_LongGrass,
+ [FLDEFFOBJ_JUMP_LONG_GRASS] = &gFieldEffectObjectTemplate_JumpLongGrass,
+ [FLDEFFOBJ_UNUSED_GRASS] = &gFieldEffectObjectTemplate_UnusedGrass,
+ [FLDEFFOBJ_UNUSED_GRASS_2] = &gFieldEffectObjectTemplate_UnusedGrass2,
+ [FLDEFFOBJ_UNUSED_SAND] = &gFieldEffectObjectTemplate_UnusedSand,
+ [FLDEFFOBJ_WATER_SURFACING] = &gFieldEffectObjectTemplate_WaterSurfacing,
+ [FLDEFFOBJ_REFLECTION_DISTORTION] = &gFieldEffectObjectTemplate_ReflectionDistortion,
+ [FLDEFFOBJ_SPARKLE] = &gFieldEffectObjectTemplate_Sparkle,
+ [FLDEFFOBJ_DEEP_SAND_FOOTPRINTS] = &gFieldEffectObjectTemplate_DeepSandFootprints,
+ [FLDEFFOBJ_TREE_DISGUISE] = &gFieldEffectObjectTemplate_TreeDisguise,
+ [FLDEFFOBJ_MOUNTAIN_DISGUISE] = &gFieldEffectObjectTemplate_MountainDisguise,
+ [FLDEFFOBJ_BIRD] = &gFieldEffectObjectTemplate_Bird,
+ [FLDEFFOBJ_BIKE_TIRE_TRACKS] = &gFieldEffectObjectTemplate_BikeTireTracks,
+ [FLDEFFOBJ_SAND_DISGUISE] = &gFieldEffectObjectTemplate_SandDisguisePlaceholder,
+ [FLDEFFOBJ_SAND_PILE] = &gFieldEffectObjectTemplate_SandPile,
+ [FLDEFFOBJ_SHORT_GRASS] = &gFieldEffectObjectTemplate_ShortGrass,
+ [FLDEFFOBJ_HOT_SPRINGS_WATER] = &gFieldEffectObjectTemplate_HotSpringsWater,
+ [FLDEFFOBJ_ASH_PUFF] = &gFieldEffectObjectTemplate_AshPuff,
+ [FLDEFFOBJ_ASH_LAUNCH] = &gFieldEffectObjectTemplate_AshLaunch,
+ [FLDEFFOBJ_BUBBLES] = &gFieldEffectObjectTemplate_Bubbles,
+ [FLDEFFOBJ_SMALL_SPARKLE] = &gFieldEffectObjectTemplate_SmallSparkle,
+ [FLDEFFOBJ_RAYQUAZA] = &gFieldEffectObjectTemplate_Rayquaza,
};
diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h
index 65f35107d..1626b9f32 100755
--- a/src/data/field_effects/field_effect_objects.h
+++ b/src/data/field_effects/field_effect_objects.h
@@ -1,43 +1,74 @@
-const struct SpritePalette gFieldEffectObjectPaletteInfo0 = {gFieldEffectObjectPalette0, 0x1004};
+const struct SpritePalette gSpritePalette_GeneralFieldEffect0 = {gFieldEffectObjectPalette0, FLDEFF_PAL_TAG_GENERAL_0};
+const struct SpritePalette gSpritePalette_GeneralFieldEffect1 = {gFieldEffectObjectPalette1, FLDEFF_PAL_TAG_GENERAL_1};
-const struct SpritePalette gFieldEffectObjectPaletteInfo1 = {gFieldEffectObjectPalette1, 0x1005};
-
-const union AnimCmd gFieldEffectObjectImageAnim_850C9D0[] =
+static const union AnimCmd sAnim_Shadow[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Shadow[] =
+static const union AnimCmd *const sAnimTable_Shadow[] =
{
- gFieldEffectObjectImageAnim_850C9D0,
+ sAnim_Shadow,
};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowSmall[] = {
+static const struct SpriteFrameImage sPicTable_ShadowSmall[] = {
obj_frame_tiles(gFieldEffectObjectPic_ShadowSmall),
};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowMedium[] = {
+static const struct SpriteFrameImage sPicTable_ShadowMedium[] = {
obj_frame_tiles(gFieldEffectObjectPic_ShadowMedium),
};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowLarge[] = {
+static const struct SpriteFrameImage sPicTable_ShadowLarge[] = {
obj_frame_tiles(gFieldEffectObjectPic_ShadowLarge),
};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_ShadowExtraLarge[] = {
+static const struct SpriteFrameImage sPicTable_ShadowExtraLarge[] = {
obj_frame_tiles(gFieldEffectObjectPic_ShadowExtraLarge),
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_8x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_8x8,
+ .anims = sAnimTable_Shadow,
+ .images = sPicTable_ShadowSmall,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateShadowFieldEffect,
+};
-const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_16x8,
+ .anims = sAnimTable_Shadow,
+ .images = sPicTable_ShadowMedium,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateShadowFieldEffect,
+};
-const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_32x8, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_32x8,
+ .anims = sAnimTable_Shadow,
+ .images = sPicTable_ShadowLarge,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateShadowFieldEffect,
+};
-const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_64x32, gFieldEffectObjectImageAnimTable_Shadow, gFieldEffectObjectPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_64x32,
+ .anims = sAnimTable_Shadow,
+ .images = sPicTable_ShadowExtraLarge,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateShadowFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_TallGrass[] = {
+static const struct SpriteFrameImage sPicTable_TallGrass[] = {
overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 1),
overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 2),
@@ -45,7 +76,7 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_TallGrass[] = {
overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 4),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CA84[] =
+static const union AnimCmd sAnim_TallGrass[] =
{
ANIMCMD_FRAME(1, 10),
ANIMCMD_FRAME(2, 10),
@@ -55,14 +86,22 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CA84[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_TallGrass[] =
+static const union AnimCmd *const sAnimTable_TallGrass[] =
{
- gFieldEffectObjectImageAnim_850CA84,
+ sAnim_TallGrass,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_TallGrass, gFieldEffectObjectPicTable_TallGrass, gDummySpriteAffineAnimTable, UpdateTallGrassFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_TallGrass,
+ .images = sPicTable_TallGrass,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateTallGrassFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Ripple[] = {
+static const struct SpriteFrameImage sPicTable_Ripple[] = {
overworld_frame(gFieldEffectObjectPic_Ripple, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_Ripple, 2, 2, 1),
overworld_frame(gFieldEffectObjectPic_Ripple, 2, 2, 2),
@@ -70,7 +109,7 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_Ripple[] = {
overworld_frame(gFieldEffectObjectPic_Ripple, 2, 2, 4),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CAE0[] =
+static const union AnimCmd sAnim_Ripple[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(1, 9),
@@ -83,14 +122,22 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CAE0[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Ripple[] =
+static const union AnimCmd *const sAnimTable_Ripple[] =
{
- gFieldEffectObjectImageAnim_850CAE0,
+ sAnim_Ripple,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ripple, gFieldEffectObjectPicTable_Ripple, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Ripple = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_Ripple,
+ .images = sPicTable_Ripple,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = WaitFieldEffectSpriteAnim,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Ash[] = {
+static const struct SpriteFrameImage sPicTable_Ash[] = {
overworld_frame(gFieldEffectObjectPic_Ash, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_Ash, 2, 2, 1),
overworld_frame(gFieldEffectObjectPic_Ash, 2, 2, 2),
@@ -98,7 +145,7 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_Ash[] = {
overworld_frame(gFieldEffectObjectPic_Ash, 2, 2, 4),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CB48[] =
+static const union AnimCmd sAnim_Ash[] =
{
ANIMCMD_FRAME(0, 12),
ANIMCMD_FRAME(1, 12),
@@ -108,54 +155,70 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CB48[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Ash[] =
+static const union AnimCmd *const sAnimTable_Ash[] =
{
- gFieldEffectObjectImageAnim_850CB48,
+ sAnim_Ash,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Ash = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Ash, gFieldEffectObjectPicTable_Ash, gDummySpriteAffineAnimTable, UpdateAshFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Ash = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_Ash,
+ .images = sPicTable_Ash,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateAshFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_SurfBlob[] = {
+static const struct SpriteFrameImage sPicTable_SurfBlob[] = {
overworld_frame(gFieldEffectObjectPic_SurfBlob, 4, 4, 0),
overworld_frame(gFieldEffectObjectPic_SurfBlob, 4, 4, 1),
overworld_frame(gFieldEffectObjectPic_SurfBlob, 4, 4, 2),
};
-const union AnimCmd gSurfBlobAnim_FaceSouth[] =
+static const union AnimCmd sSurfBlobAnim_FaceSouth[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gSurfBlobAnim_FaceNorth[] =
+static const union AnimCmd sSurfBlobAnim_FaceNorth[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gSurfBlobAnim_FaceWest[] =
+static const union AnimCmd sSurfBlobAnim_FaceWest[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gSurfBlobAnim_FaceEast[] =
+static const union AnimCmd sSurfBlobAnim_FaceEast[] =
{
ANIMCMD_FRAME(2, 1, .hFlip = TRUE),
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_SurfBlob[] =
+static const union AnimCmd *const sAnimTable_SurfBlob[] =
{
- gSurfBlobAnim_FaceSouth,
- gSurfBlobAnim_FaceNorth,
- gSurfBlobAnim_FaceWest,
- gSurfBlobAnim_FaceEast,
+ sSurfBlobAnim_FaceSouth,
+ sSurfBlobAnim_FaceNorth,
+ sSurfBlobAnim_FaceWest,
+ sSurfBlobAnim_FaceEast,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_32x32, gFieldEffectObjectImageAnimTable_SurfBlob, gFieldEffectObjectPicTable_SurfBlob, gDummySpriteAffineAnimTable, UpdateSurfBlobFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_SurfBlob = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_32x32,
+ .anims = sAnimTable_SurfBlob,
+ .images = sPicTable_SurfBlob,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateSurfBlobFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Arrow[] = {
+static const struct SpriteFrameImage sPicTable_Arrow[] = {
overworld_frame(gFieldEffectObjectPic_Arrow, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_Arrow, 2, 2, 1),
overworld_frame(gFieldEffectObjectPic_Arrow, 2, 2, 2),
@@ -166,51 +229,59 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_Arrow[] = {
overworld_frame(gFieldEffectObjectPic_Arrow, 2, 2, 7),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CC1C[] =
+static const union AnimCmd sArrowAnim_South[] =
{
ANIMCMD_FRAME(3, 32),
ANIMCMD_FRAME(7, 32),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CC28[] =
+static const union AnimCmd sArrowAnim_North[] =
{
ANIMCMD_FRAME(0, 32),
ANIMCMD_FRAME(4, 32),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CC34[] =
+static const union AnimCmd sArrowAnim_West[] =
{
ANIMCMD_FRAME(1, 32),
ANIMCMD_FRAME(5, 32),
ANIMCMD_JUMP(0),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CC40[] =
+static const union AnimCmd sArrowAnim_East[] =
{
ANIMCMD_FRAME(2, 32),
ANIMCMD_FRAME(6, 32),
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Arrow[] =
+static const union AnimCmd *const sAnimTable_Arrow[] =
{
- gFieldEffectObjectImageAnim_850CC1C,
- gFieldEffectObjectImageAnim_850CC28,
- gFieldEffectObjectImageAnim_850CC34,
- gFieldEffectObjectImageAnim_850CC40,
+ sArrowAnim_South,
+ sArrowAnim_North,
+ sArrowAnim_West,
+ sArrowAnim_East,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Arrow, gFieldEffectObjectPicTable_Arrow, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Arrow = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_Arrow,
+ .images = sPicTable_Arrow,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_GroundImpactDust[] = {
+static const struct SpriteFrameImage sPicTable_GroundImpactDust[] = {
overworld_frame(gFieldEffectObjectPic_GroundImpactDust, 2, 1, 0),
overworld_frame(gFieldEffectObjectPic_GroundImpactDust, 2, 1, 1),
overworld_frame(gFieldEffectObjectPic_GroundImpactDust, 2, 1, 2),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CC8C[] =
+static const union AnimCmd sAnim_GroundImpactDust[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -218,21 +289,29 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CC8C[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_GroundImpactDust[] =
+static const union AnimCmd *const sAnimTable_GroundImpactDust[] =
{
- gFieldEffectObjectImageAnim_850CC8C,
+ sAnim_GroundImpactDust,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_GroundImpactDust, gFieldEffectObjectPicTable_GroundImpactDust, gDummySpriteAffineAnimTable, sub_8156194};
+const struct SpriteTemplate gFieldEffectObjectTemplate_GroundImpactDust = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x8,
+ .anims = sAnimTable_GroundImpactDust,
+ .images = sPicTable_GroundImpactDust,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateJumpImpactEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopTallGrass[] = {
- overworld_frame(gFieldEffectObjectPic_BikeHopTallGrass, 2, 1, 0),
- overworld_frame(gFieldEffectObjectPic_BikeHopTallGrass, 2, 1, 1),
- overworld_frame(gFieldEffectObjectPic_BikeHopTallGrass, 2, 1, 2),
- overworld_frame(gFieldEffectObjectPic_BikeHopTallGrass, 2, 1, 3),
+static const struct SpriteFrameImage sPicTable_JumpTallGrass[] = {
+ overworld_frame(gFieldEffectObjectPic_JumpTallGrass, 2, 1, 0),
+ overworld_frame(gFieldEffectObjectPic_JumpTallGrass, 2, 1, 1),
+ overworld_frame(gFieldEffectObjectPic_JumpTallGrass, 2, 1, 2),
+ overworld_frame(gFieldEffectObjectPic_JumpTallGrass, 2, 1, 3),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CCD8[] =
+static const union AnimCmd sAnim_JumpTallGrass[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -241,171 +320,203 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CCD8[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopTallGrass[] =
+static const union AnimCmd *const sAnimTable_JumpTallGrass[] =
{
- gFieldEffectObjectImageAnim_850CCD8,
+ sAnim_JumpTallGrass,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopTallGrass = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_BikeHopTallGrass, gFieldEffectObjectPicTable_BikeHopTallGrass, gDummySpriteAffineAnimTable, sub_8156194};
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpTallGrass = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x8,
+ .anims = sAnimTable_JumpTallGrass,
+ .images = sPicTable_JumpTallGrass,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateJumpImpactEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_SandFootprints[] = {
+static const struct SpriteFrameImage sPicTable_SandFootprints[] = {
overworld_frame(gFieldEffectObjectPic_SandFootprints, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_SandFootprints, 2, 2, 1),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD18[] =
+static const union AnimCmd sSandFootprintsAnim_South[] =
{
ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD20[] =
+static const union AnimCmd sSandFootprintsAnim_North[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD28[] =
+static const union AnimCmd sSandFootprintsAnim_West[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD30[] =
+static const union AnimCmd sSandFootprintsAnim_East[] =
{
ANIMCMD_FRAME(1, 1, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_SandFootprints[] =
+static const union AnimCmd *const sAnimTable_SandFootprints[] =
{
- gFieldEffectObjectImageAnim_850CD18,
- gFieldEffectObjectImageAnim_850CD18,
- gFieldEffectObjectImageAnim_850CD20,
- gFieldEffectObjectImageAnim_850CD28,
- gFieldEffectObjectImageAnim_850CD30,
+ sSandFootprintsAnim_South,
+ sSandFootprintsAnim_South,
+ sSandFootprintsAnim_North,
+ sSandFootprintsAnim_West,
+ sSandFootprintsAnim_East,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_SandFootprints, gFieldEffectObjectPicTable_SandFootprints, gDummySpriteAffineAnimTable, UpdateFootprintsTireTracksFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandFootprints = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_SandFootprints,
+ .images = sPicTable_SandFootprints,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateFootprintsTireTracksFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_DeepSandFootprints[] = {
+static const struct SpriteFrameImage sPicTable_DeepSandFootprints[] = {
overworld_frame(gFieldEffectObjectPic_DeepSandFootprints, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_DeepSandFootprints, 2, 2, 1),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD74[] =
+static const union AnimCmd sDeepSandFootprintsAnim_South[] =
{
ANIMCMD_FRAME(0, 1, .vFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD7C[] =
+static const union AnimCmd sDeepSandFootprintsAnim_North[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD84[] =
+static const union AnimCmd sDeepSandFootprintsAnim_West[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CD8C[] =
+static const union AnimCmd sDeepSandFootprintsAnim_East[] =
{
ANIMCMD_FRAME(1, 1, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_DeepSandFootprints[] =
+static const union AnimCmd *const sAnimTable_DeepSandFootprints[] =
{
- gFieldEffectObjectImageAnim_850CD74,
- gFieldEffectObjectImageAnim_850CD74,
- gFieldEffectObjectImageAnim_850CD7C,
- gFieldEffectObjectImageAnim_850CD84,
- gFieldEffectObjectImageAnim_850CD8C,
+ sDeepSandFootprintsAnim_South,
+ sDeepSandFootprintsAnim_South,
+ sDeepSandFootprintsAnim_North,
+ sDeepSandFootprintsAnim_West,
+ sDeepSandFootprintsAnim_East,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_DeepSandFootprints, gFieldEffectObjectPicTable_DeepSandFootprints, gDummySpriteAffineAnimTable, UpdateFootprintsTireTracksFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_DeepSandFootprints = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_DeepSandFootprints,
+ .images = sPicTable_DeepSandFootprints,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateFootprintsTireTracksFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeTireTracks[] = {
+static const struct SpriteFrameImage sPicTable_BikeTireTracks[] = {
overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 1),
overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 2),
overworld_frame(gFieldEffectObjectPic_BikeTireTracks, 2, 2, 3),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CDE0[] =
+static const union AnimCmd sBikeTireTracksAnim_South[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CDE8[] =
+static const union AnimCmd sBikeTireTracksAnim_North[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CDF0[] =
+static const union AnimCmd sBikeTireTracksAnim_West[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CDF8[] =
+static const union AnimCmd sBikeTireTracksAnim_East[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CE00[] =
+static const union AnimCmd sBikeTireTracksAnim_SECornerTurn[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CE08[] =
+static const union AnimCmd sBikeTireTracksAnim_SWCornerTurn[] =
{
ANIMCMD_FRAME(0, 1, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CE10[] =
+static const union AnimCmd sBikeTireTracksAnim_NWCornerTurn[] =
{
ANIMCMD_FRAME(3, 1, .hFlip = TRUE),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CE18[] =
+static const union AnimCmd sBikeTireTracksAnim_NECornerTurn[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeTireTracks[] =
+static const union AnimCmd *const sAnimTable_BikeTireTracks[] =
{
- gFieldEffectObjectImageAnim_850CDE0,
- gFieldEffectObjectImageAnim_850CDE0,
- gFieldEffectObjectImageAnim_850CDE8,
- gFieldEffectObjectImageAnim_850CDF0,
- gFieldEffectObjectImageAnim_850CDF8,
- gFieldEffectObjectImageAnim_850CE00,
- gFieldEffectObjectImageAnim_850CE08,
- gFieldEffectObjectImageAnim_850CE10,
- gFieldEffectObjectImageAnim_850CE18,
+ sBikeTireTracksAnim_South,
+ sBikeTireTracksAnim_South,
+ sBikeTireTracksAnim_North,
+ sBikeTireTracksAnim_West,
+ sBikeTireTracksAnim_East,
+ sBikeTireTracksAnim_SECornerTurn,
+ sBikeTireTracksAnim_SWCornerTurn,
+ sBikeTireTracksAnim_NWCornerTurn,
+ sBikeTireTracksAnim_NECornerTurn,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_BikeTireTracks, gFieldEffectObjectPicTable_BikeTireTracks, gDummySpriteAffineAnimTable, UpdateFootprintsTireTracksFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_BikeTireTracks = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_BikeTireTracks,
+ .images = sPicTable_BikeTireTracks,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateFootprintsTireTracksFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopBigSplash[] = {
- overworld_frame(gFieldEffectObjectPic_BikeHopBigSplash, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_BikeHopBigSplash, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_BikeHopBigSplash, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_BikeHopBigSplash, 2, 2, 3),
+static const struct SpriteFrameImage sPicTable_JumpBigSplash[] = {
+ overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_JumpBigSplash, 2, 2, 3),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CE7C[] =
+static const union AnimCmd sAnim_JumpBigSplash[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -414,26 +525,34 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CE7C[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopBigSplash[] =
+static const union AnimCmd *const sAnimTable_JumpBigSplash[] =
{
- gFieldEffectObjectImageAnim_850CE7C,
+ sAnim_JumpBigSplash,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopBigSplash = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_BikeHopBigSplash, gFieldEffectObjectPicTable_BikeHopBigSplash, gDummySpriteAffineAnimTable, sub_8156194};
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpBigSplash = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_JumpBigSplash,
+ .images = sPicTable_JumpBigSplash,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateJumpImpactEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Splash[] = {
+static const struct SpriteFrameImage sPicTable_Splash[] = {
overworld_frame(gFieldEffectObjectPic_Splash, 2, 1, 0),
overworld_frame(gFieldEffectObjectPic_Splash, 2, 1, 1),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CEBC[] =
+static const union AnimCmd sAnim_Splash_0[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CEC8[] =
+static const union AnimCmd sAnim_Splash_1[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -446,21 +565,29 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CEC8[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Splash[] =
+static const union AnimCmd *const sAnimTable_Splash[] =
{
- gFieldEffectObjectImageAnim_850CEBC,
- gFieldEffectObjectImageAnim_850CEC8,
+ sAnim_Splash_0,
+ sAnim_Splash_1,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Splash = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_Splash, gFieldEffectObjectPicTable_Splash, gDummySpriteAffineAnimTable, UpdateSplashFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Splash = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x8,
+ .anims = sAnimTable_Splash,
+ .images = sPicTable_Splash,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateSplashFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_BikeHopSmallSplash[] = {
- overworld_frame(gFieldEffectObjectPic_BikeHopSmallSplash, 2, 1, 0),
- overworld_frame(gFieldEffectObjectPic_BikeHopSmallSplash, 2, 1, 1),
- overworld_frame(gFieldEffectObjectPic_BikeHopSmallSplash, 2, 1, 2),
+static const struct SpriteFrameImage sPicTable_JumpSmallSplash[] = {
+ overworld_frame(gFieldEffectObjectPic_JumpSmallSplash, 2, 1, 0),
+ overworld_frame(gFieldEffectObjectPic_JumpSmallSplash, 2, 1, 1),
+ overworld_frame(gFieldEffectObjectPic_JumpSmallSplash, 2, 1, 2),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CF24[] =
+static const union AnimCmd sAnim_JumpSmallSplash[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -468,21 +595,29 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CF24[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_BikeHopSmallSplash[] =
+static const union AnimCmd *const sAnimTable_JumpSmallSplash[] =
{
- gFieldEffectObjectImageAnim_850CF24,
+ sAnim_JumpSmallSplash,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_BikeHopSmallSplash = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_BikeHopSmallSplash, gFieldEffectObjectPicTable_BikeHopSmallSplash, gDummySpriteAffineAnimTable, sub_8156194};
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpSmallSplash = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x8,
+ .anims = sAnimTable_JumpSmallSplash,
+ .images = sPicTable_JumpSmallSplash,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateJumpImpactEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_LongGrass[] = {
+static const struct SpriteFrameImage sPicTable_LongGrass[] = {
overworld_frame(gFieldEffectObjectPic_LongGrass, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_LongGrass, 2, 2, 1),
overworld_frame(gFieldEffectObjectPic_LongGrass, 2, 2, 2),
overworld_frame(gFieldEffectObjectPic_LongGrass, 2, 2, 3),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CF70[] =
+static const union AnimCmd sAnim_LongGrass[] =
{
ANIMCMD_FRAME(1, 3),
ANIMCMD_FRAME(2, 3),
@@ -494,23 +629,31 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CF70[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_LongGrass[] =
+static const union AnimCmd *const sAnimTable_LongGrass[] =
{
- gFieldEffectObjectImageAnim_850CF70,
+ sAnim_LongGrass,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_LongGrass, gFieldEffectObjectPicTable_LongGrass, gDummySpriteAffineAnimTable, UpdateLongGrassFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_LongGrass = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_LongGrass,
+ .images = sPicTable_LongGrass,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateLongGrassFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown16[] = {
- overworld_frame(gFieldEffectObjectPic_Unknown16, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_Unknown16, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_Unknown16, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_Unknown16, 2, 2, 3),
- overworld_frame(gFieldEffectObjectPic_Unknown16, 2, 2, 4),
- overworld_frame(gFieldEffectObjectPic_Unknown16, 2, 2, 6),
+static const struct SpriteFrameImage sPicTable_JumpLongGrass[] = {
+ overworld_frame(gFieldEffectObjectPic_JumpLongGrass, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_JumpLongGrass, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_JumpLongGrass, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_JumpLongGrass, 2, 2, 3),
+ overworld_frame(gFieldEffectObjectPic_JumpLongGrass, 2, 2, 4),
+ overworld_frame(gFieldEffectObjectPic_JumpLongGrass, 2, 2, 6),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850CFDC[] =
+static const union AnimCmd sAnim_JumpLongGrass[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -521,15 +664,23 @@ const union AnimCmd gFieldEffectObjectImageAnim_850CFDC[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown16[] =
+static const union AnimCmd *const sAnimTable_JumpLongGrass[] =
{
- gFieldEffectObjectImageAnim_850CFDC,
+ sAnim_JumpLongGrass,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown16 = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown16, gFieldEffectObjectPicTable_Unknown16, gDummySpriteAffineAnimTable, sub_8156194};
+const struct SpriteTemplate gFieldEffectObjectTemplate_JumpLongGrass = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_JumpLongGrass,
+ .images = sPicTable_JumpLongGrass,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateJumpImpactEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown17[] = {
- overworld_frame(gFieldEffectObjectPic_Unknown16, 2, 2, 6),
+static const struct SpriteFrameImage sPicTable_UnusedGrass[] = {
+ overworld_frame(gFieldEffectObjectPic_JumpLongGrass, 2, 2, 6),
overworld_frame(gFieldEffectObjectPic_Unknown17, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_Unknown17, 2, 2, 1),
overworld_frame(gFieldEffectObjectPic_Unknown17, 2, 2, 2),
@@ -540,7 +691,7 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown17[] = {
overworld_frame(gFieldEffectObjectPic_Unknown17, 2, 2, 7),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D05C[] =
+static const union AnimCmd sAnim_UnusedGrass[] =
{
ANIMCMD_FRAME(0, 10),
ANIMCMD_FRAME(1, 4),
@@ -554,21 +705,29 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D05C[] =
ANIMCMD_JUMP(7),
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown17[] =
+static const union AnimCmd *const sAnimTable_UnusedGrass[] =
{
- gFieldEffectObjectImageAnim_850D05C,
+ sAnim_UnusedGrass,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown17 = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown17, gFieldEffectObjectPicTable_Unknown17, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
+const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_UnusedGrass,
+ .images = sPicTable_UnusedGrass,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = WaitFieldEffectSpriteAnim,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown18[] = {
- overworld_frame(gFieldEffectObjectPic_Unknown18, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_Unknown18, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_Unknown18, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_Unknown18, 2, 2, 3),
+static const struct SpriteFrameImage sPicTable_UnusedGrass2[] = {
+ overworld_frame(gFieldEffectObjectPic_UnusedGrass2, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_UnusedGrass2, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_UnusedGrass2, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_UnusedGrass2, 2, 2, 3),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D0C0[] =
+static const union AnimCmd sAnim_UnusedGrass2[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -579,21 +738,29 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D0C0[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown18[] =
+static const union AnimCmd *const sAnimTable_UnusedGrass2[] =
{
- gFieldEffectObjectImageAnim_850D0C0,
+ sAnim_UnusedGrass2,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown18 = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown18, gFieldEffectObjectPicTable_Unknown18, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
+const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedGrass2 = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_UnusedGrass2,
+ .images = sPicTable_UnusedGrass2,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = WaitFieldEffectSpriteAnim,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown19[] = {
- overworld_frame(gFieldEffectObjectPic_Unknown19, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_Unknown19, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_Unknown19, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_Unknown19, 2, 2, 3),
+static const struct SpriteFrameImage sPicTable_UnusedSand[] = {
+ overworld_frame(gFieldEffectObjectPic_UnusedSand, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_UnusedSand, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_UnusedSand, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_UnusedSand, 2, 2, 3),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D118[] =
+static const union AnimCmd sAnim_UnusedSand[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -602,20 +769,28 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D118[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown19[] =
+static const union AnimCmd *const sAnimTable_UnusedSand[] =
{
- gFieldEffectObjectImageAnim_850D118,
+ sAnim_UnusedSand,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown19 = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown19, gFieldEffectObjectPicTable_Unknown19, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
+const struct SpriteTemplate gFieldEffectObjectTemplate_UnusedSand = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_UnusedSand,
+ .images = sPicTable_UnusedSand,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = WaitFieldEffectSpriteAnim,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown29[] = {
- overworld_frame(gFieldEffectObjectPic_Unknown29, 2, 1, 0),
- overworld_frame(gFieldEffectObjectPic_Unknown29, 2, 1, 1),
- overworld_frame(gFieldEffectObjectPic_Unknown29, 2, 1, 2),
+static const struct SpriteFrameImage sPicTable_SandPile[] = {
+ overworld_frame(gFieldEffectObjectPic_SandPile, 2, 1, 0),
+ overworld_frame(gFieldEffectObjectPic_SandPile, 2, 1, 1),
+ overworld_frame(gFieldEffectObjectPic_SandPile, 2, 1, 2),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D160[] =
+static const union AnimCmd sAnim_SandPile[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -623,21 +798,29 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D160[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown29[] =
+static const union AnimCmd *const sAnimTable_SandPile[] =
{
- gFieldEffectObjectImageAnim_850D160,
+ sAnim_SandPile,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown29 = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x8, gFieldEffectObjectImageAnimTable_Unknown29, gFieldEffectObjectPicTable_Unknown29, gDummySpriteAffineAnimTable, UpdateSandPileFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandPile = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x8,
+ .anims = sAnimTable_SandPile,
+ .images = sPicTable_SandPile,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateSandPileFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown20[] = {
- overworld_frame(gFieldEffectObjectPic_Unknown20, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_Unknown20, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_Unknown20, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_Unknown20, 2, 2, 3),
+static const struct SpriteFrameImage sPicTable_WaterSurfacing[] = {
+ overworld_frame(gFieldEffectObjectPic_WaterSurfacing, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_WaterSurfacing, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_WaterSurfacing, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_WaterSurfacing, 2, 2, 3),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D1AC[] =
+static const union AnimCmd sAnim_WaterSurfacing[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -648,14 +831,22 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D1AC[] =
ANIMCMD_JUMP(0),
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown20[] =
+static const union AnimCmd *const sAnimTable_WaterSurfacing[] =
{
- gFieldEffectObjectImageAnim_850D1AC,
+ sAnim_WaterSurfacing,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown20 = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown20, gFieldEffectObjectPicTable_Unknown20, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
+const struct SpriteTemplate gFieldEffectObjectTemplate_WaterSurfacing = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_WaterSurfacing,
+ .images = sPicTable_WaterSurfacing,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = WaitFieldEffectSpriteAnim,
+};
-const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D1E4[] =
+static const union AffineAnimCmd sAffineAnim_ReflectionDistortion_0[] =
{
AFFINEANIMCMD_FRAME(0xFF00, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x1, 0x0, 0, 4),
@@ -669,7 +860,7 @@ const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D1E4[] =
AFFINEANIMCMD_JUMP(1),
};
-const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D234[] =
+static const union AffineAnimCmd sAffineAnim_ReflectionDistortion_1[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0xFFFF, 0x0, 0, 4),
@@ -683,24 +874,32 @@ const union AffineAnimCmd gFieldEffectObjectRotScalAnim_850D234[] =
AFFINEANIMCMD_JUMP(1),
};
-const union AffineAnimCmd *const gFieldEffectObjectRotScalAnimTable_Unknown21[] =
+static const union AffineAnimCmd *const sAffineAnims_ReflectionDistortion[] =
{
- gFieldEffectObjectRotScalAnim_850D1E4,
- gFieldEffectObjectRotScalAnim_850D234,
+ sAffineAnim_ReflectionDistortion_0,
+ sAffineAnim_ReflectionDistortion_1,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown21 = {0x0, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gFieldEffectObjectRotScalAnimTable_Unknown21, SpriteCallbackDummy};
+const struct SpriteTemplate gFieldEffectObjectTemplate_ReflectionDistortion = {
+ .tileTag = 0x0,
+ .paletteTag = 0xFFFF,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = sAffineAnims_ReflectionDistortion,
+ .callback = SpriteCallbackDummy,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_BerryTreeGrowthSparkle[] = {
- overworld_frame(gFieldEffectObjectPic_BerryTreeGrowthSparkle, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_BerryTreeGrowthSparkle, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_BerryTreeGrowthSparkle, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_BerryTreeGrowthSparkle, 2, 2, 3),
- overworld_frame(gFieldEffectObjectPic_BerryTreeGrowthSparkle, 2, 2, 4),
- overworld_frame(gFieldEffectObjectPic_BerryTreeGrowthSparkle, 2, 2, 5),
+static const struct SpriteFrameImage sPicTable_Sparkle[] = {
+ overworld_frame(gFieldEffectObjectPic_Sparkle, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_Sparkle, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_Sparkle, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_Sparkle, 2, 2, 3),
+ overworld_frame(gFieldEffectObjectPic_Sparkle, 2, 2, 4),
+ overworld_frame(gFieldEffectObjectPic_Sparkle, 2, 2, 5),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D2D4[] =
+static const union AnimCmd sAnim_Sparkle[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -725,14 +924,22 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D2D4[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle[] =
+static const union AnimCmd *const sAnimTable_Sparkle[] =
{
- gFieldEffectObjectImageAnim_850D2D4,
+ sAnim_Sparkle,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_BerryTreeGrowthSparkle = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_BerryTreeGrowthSparkle, gFieldEffectObjectPicTable_BerryTreeGrowthSparkle, gDummySpriteAffineAnimTable, WaitFieldEffectSpriteAnim};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Sparkle = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_Sparkle,
+ .images = sPicTable_Sparkle,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = WaitFieldEffectSpriteAnim,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_TreeDisguise[] = {
+static const struct SpriteFrameImage sPicTable_TreeDisguise[] = {
overworld_frame(gFieldEffectObjectPic_TreeDisguise, 2, 4, 0),
overworld_frame(gFieldEffectObjectPic_TreeDisguise, 2, 4, 1),
overworld_frame(gFieldEffectObjectPic_TreeDisguise, 2, 4, 2),
@@ -742,13 +949,13 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_TreeDisguise[] = {
overworld_frame(gFieldEffectObjectPic_TreeDisguise, 2, 4, 6),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D37C[] =
+static const union AnimCmd sAnim_TreeDisguise[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D384[] =
+static const union AnimCmd sAnim_TreeDisguiseReveal[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -760,15 +967,23 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D384[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_TreeDisguise[] =
+static const union AnimCmd *const sAnimTable_TreeDisguise[] =
{
- gFieldEffectObjectImageAnim_850D37C,
- gFieldEffectObjectImageAnim_850D384,
+ sAnim_TreeDisguise,
+ sAnim_TreeDisguiseReveal,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_TreeDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_TreeDisguise = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_16x32,
+ .anims = sAnimTable_TreeDisguise,
+ .images = sPicTable_TreeDisguise,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateDisguiseFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_MountainDisguise[] = {
+static const struct SpriteFrameImage sPicTable_MountainDisguise[] = {
overworld_frame(gFieldEffectObjectPic_MountainDisguise, 2, 4, 0),
overworld_frame(gFieldEffectObjectPic_MountainDisguise, 2, 4, 1),
overworld_frame(gFieldEffectObjectPic_MountainDisguise, 2, 4, 2),
@@ -778,13 +993,13 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_MountainDisguise[] = {
overworld_frame(gFieldEffectObjectPic_MountainDisguise, 2, 4, 6),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D3FC[] =
+static const union AnimCmd sAnim_MountainDisguise[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_END,
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D404[] =
+static const union AnimCmd sAnim_MountainDisguiseReveal[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -796,15 +1011,23 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D404[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_MountainDisguise[] =
+static const union AnimCmd *const sAnimTable_MountainDisguise[] =
{
- gFieldEffectObjectImageAnim_850D3FC,
- gFieldEffectObjectImageAnim_850D404,
+ sAnim_MountainDisguise,
+ sAnim_MountainDisguiseReveal,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_MountainDisguise, gFieldEffectObjectPicTable_MountainDisguise, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_MountainDisguise = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_16x32,
+ .anims = sAnimTable_MountainDisguise,
+ .images = sPicTable_MountainDisguise,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateDisguiseFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_SandDisguisePlaceholder[] = {
+static const struct SpriteFrameImage sPicTable_SandDisguisePlaceholder[] = {
overworld_frame(gFieldEffectObjectPic_SandDisguisePlaceholder, 2, 4, 0),
overworld_frame(gFieldEffectObjectPic_SandDisguisePlaceholder, 2, 4, 1),
overworld_frame(gFieldEffectObjectPic_SandDisguisePlaceholder, 2, 4, 2),
@@ -814,70 +1037,102 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_SandDisguisePlaceholder
overworld_frame(gFieldEffectObjectPic_SandDisguisePlaceholder, 2, 4, 6),
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_TreeDisguise, gFieldEffectObjectPicTable_SandDisguisePlaceholder, gDummySpriteAffineAnimTable, UpdateDisguiseFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_SandDisguisePlaceholder = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_16x32,
+ .anims = sAnimTable_TreeDisguise,
+ .images = sPicTable_SandDisguisePlaceholder,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateDisguiseFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Bird[] = {
+static const struct SpriteFrameImage sPicTable_Bird[] = {
obj_frame_tiles(gFieldEffectObjectPic_Bird),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D49C[] =
+static const union AnimCmd sAnim_Bird[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Bird[] =
+static const union AnimCmd *const sAnimTable_Bird[] =
{
- gFieldEffectObjectImageAnim_850D49C,
+ sAnim_Bird,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_32x32, gFieldEffectObjectImageAnimTable_Bird, gFieldEffectObjectPicTable_Bird, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Bird = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_32x32,
+ .anims = sAnimTable_Bird,
+ .images = sPicTable_Bird,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_ShortGrass[] = {
+static const struct SpriteFrameImage sPicTable_ShortGrass[] = {
overworld_frame(gFieldEffectObjectPic_ShortGrass, 2, 2, 0),
overworld_frame(gFieldEffectObjectPic_ShortGrass, 2, 2, 1),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D4D0[] =
+static const union AnimCmd sAnim_ShortGrass[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_ShortGrass[] =
+static const union AnimCmd *const sAnimTable_ShortGrass[] =
{
- gFieldEffectObjectImageAnim_850D4D0,
+ sAnim_ShortGrass,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_ShortGrass, gFieldEffectObjectPicTable_ShortGrass, gDummySpriteAffineAnimTable, UpdateShortGrassFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_ShortGrass = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_ShortGrass,
+ .images = sPicTable_ShortGrass,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateShortGrassFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_HotSpringsWater[] = {
+static const struct SpriteFrameImage sPicTable_HotSpringsWater[] = {
obj_frame_tiles(gFieldEffectObjectPic_HotSpringsWater),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D500[] =
+static const union AnimCmd sAnim_HotSpringsWater[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_HotSpringsWater[] =
+static const union AnimCmd *const sAnimTable_HotSpringsWater[] =
{
- gFieldEffectObjectImageAnim_850D500,
+ sAnim_HotSpringsWater,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater = {0xFFFF, 0x1005, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_HotSpringsWater, gFieldEffectObjectPicTable_HotSpringsWater, gDummySpriteAffineAnimTable, UpdateHotSpringsWaterFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_HotSpringsWater = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_HotSpringsWater,
+ .images = sPicTable_HotSpringsWater,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateHotSpringsWaterFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_JumpOutOfAsh[] = {
- overworld_frame(gFieldEffectObjectPic_JumpOutOfAsh, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_JumpOutOfAsh, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_JumpOutOfAsh, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_JumpOutOfAsh, 2, 2, 3),
- overworld_frame(gFieldEffectObjectPic_JumpOutOfAsh, 2, 2, 4),
+static const struct SpriteFrameImage sPicTable_AshPuff[] = {
+ overworld_frame(gFieldEffectObjectPic_AshPuff, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_AshPuff, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_AshPuff, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_AshPuff, 2, 2, 3),
+ overworld_frame(gFieldEffectObjectPic_AshPuff, 2, 2, 4),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D54C[] =
+static const union AnimCmd sAnim_AshPuff[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -887,33 +1142,33 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D54C[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_JumpOutOfAsh[] =
+static const union AnimCmd *const sAnimTable_AshPuff[] =
{
- gFieldEffectObjectImageAnim_850D54C,
+ sAnim_AshPuff,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_JumpOutOfAsh =
+const struct SpriteTemplate gFieldEffectObjectTemplate_AshPuff =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x100D,
+ .paletteTag = FLDEFF_PAL_TAG_ASH,
.oam = &gObjectEventBaseOam_16x16,
- .anims = gFieldEffectObjectImageAnimTable_JumpOutOfAsh,
- .images = gFieldEffectObjectPicTable_JumpOutOfAsh,
+ .anims = sAnimTable_AshPuff,
+ .images = sPicTable_AshPuff,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_PopOutOfAsh
+ .callback = SpriteCB_AshPuff
};
-const struct SpritePalette gFieldEffectObjectPaletteInfo2 = {gFieldEffectObjectPalette2, 0x100D};
+const struct SpritePalette gSpritePalette_Ash = {gFieldEffectPal_Ash, FLDEFF_PAL_TAG_ASH};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_LavaridgeGymWarp[] = {
- overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 1),
- overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 2),
- overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 3),
- overworld_frame(gFieldEffectObjectPic_LavaridgeGymWarp, 2, 2, 4),
+static const struct SpriteFrameImage sPicTable_AshLaunch[] = {
+ overworld_frame(gFieldEffectObjectPic_AshLaunch, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_AshLaunch, 2, 2, 1),
+ overworld_frame(gFieldEffectObjectPic_AshLaunch, 2, 2, 2),
+ overworld_frame(gFieldEffectObjectPic_AshLaunch, 2, 2, 3),
+ overworld_frame(gFieldEffectObjectPic_AshLaunch, 2, 2, 4),
};
-const union AnimCmd gFieldEffectObjectImageAnim_LavaridgeGymWarp[] =
+static const union AnimCmd sAnim_AshLaunch[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -923,23 +1178,23 @@ const union AnimCmd gFieldEffectObjectImageAnim_LavaridgeGymWarp[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_LavaridgeGymWarp[] =
+static const union AnimCmd *const sAnimTable_AshLaunch[] =
{
- gFieldEffectObjectImageAnim_LavaridgeGymWarp,
+ sAnim_AshLaunch,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_LavaridgeGymWarp =
+const struct SpriteTemplate gFieldEffectObjectTemplate_AshLaunch =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x100D,
+ .paletteTag = FLDEFF_PAL_TAG_ASH,
.oam = &gObjectEventBaseOam_16x16,
- .anims = gFieldEffectObjectImageAnimTable_LavaridgeGymWarp,
- .images = gFieldEffectObjectPicTable_LavaridgeGymWarp,
+ .anims = sAnimTable_AshLaunch,
+ .images = sPicTable_AshLaunch,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_LavaridgeGymWarp
+ .callback = SpriteCB_AshLaunch
};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Bubbles[] = {
+static const struct SpriteFrameImage sPicTable_Bubbles[] = {
overworld_frame(gFieldEffectObjectPic_Bubbles, 2, 4, 0),
overworld_frame(gFieldEffectObjectPic_Bubbles, 2, 4, 1),
overworld_frame(gFieldEffectObjectPic_Bubbles, 2, 4, 2),
@@ -950,7 +1205,7 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_Bubbles[] = {
overworld_frame(gFieldEffectObjectPic_Bubbles, 2, 4, 7),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D624[] =
+static const union AnimCmd sAnim_Bubbles[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
@@ -963,19 +1218,27 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D624[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Bubbles[] =
+static const union AnimCmd *const sAnimTable_Bubbles[] =
{
- gFieldEffectObjectImageAnim_850D624,
+ sAnim_Bubbles,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles = {0xFFFF, 0x1004, &gObjectEventBaseOam_16x32, gFieldEffectObjectImageAnimTable_Bubbles, gFieldEffectObjectPicTable_Bubbles, gDummySpriteAffineAnimTable, UpdateBubblesFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Bubbles = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &gObjectEventBaseOam_16x32,
+ .anims = sAnimTable_Bubbles,
+ .images = sPicTable_Bubbles,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateBubblesFieldEffect,
+};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Unknown35[] = {
- overworld_frame(gFieldEffectObjectPic_Unknown35, 2, 2, 0),
- overworld_frame(gFieldEffectObjectPic_Unknown35, 2, 2, 1),
+static const struct SpriteFrameImage sPicTable_SmallSparkle[] = {
+ overworld_frame(gFieldEffectObjectPic_SmallSparkle, 2, 2, 0),
+ overworld_frame(gFieldEffectObjectPic_SmallSparkle, 2, 2, 1),
};
-const union AnimCmd gFieldEffectObjectImageAnim_850D674[] =
+static const union AnimCmd sAnim_SmallSparkle[] =
{
ANIMCMD_FRAME(0, 3),
ANIMCMD_FRAME(1, 5),
@@ -983,28 +1246,44 @@ const union AnimCmd gFieldEffectObjectImageAnim_850D674[] =
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Unknown35[] =
+static const union AnimCmd *const sAnimTable_SmallSparkle[] =
{
- gFieldEffectObjectImageAnim_850D674,
+ sAnim_SmallSparkle,
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Unknown35 = {0xFFFF, 0x100F, &gObjectEventBaseOam_16x16, gFieldEffectObjectImageAnimTable_Unknown35, gFieldEffectObjectPicTable_Unknown35, gDummySpriteAffineAnimTable, UpdateSparkleFieldEffect};
+const struct SpriteTemplate gFieldEffectObjectTemplate_SmallSparkle = {
+ .tileTag = 0xFFFF,
+ .paletteTag = FLDEFF_PAL_TAG_SMALL_SPARKLE,
+ .oam = &gObjectEventBaseOam_16x16,
+ .anims = sAnimTable_SmallSparkle,
+ .images = sPicTable_SmallSparkle,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateSparkleFieldEffect,
+};
-const struct SpritePalette gFieldEffectObjectPaletteInfo3 = {gFieldEffectObjectPalette3, 0x100F};
+const struct SpritePalette gSpritePalette_SmallSparkle = {gFieldEffectPal_SmallSparkle, FLDEFF_PAL_TAG_SMALL_SPARKLE};
-const union AnimCmd gFieldEffectObjectImageAnim_850D6A8[] = {
+static const union AnimCmd sAnim_Rayquaza[] = {
ANIMCMD_FRAME(0, 1),
ANIMCMD_END,
};
-const union AnimCmd *const gFieldEffectObjectImageAnimTable_Rayquaza[] = {
- gFieldEffectObjectImageAnim_850D6A8,
+static const union AnimCmd *const sAnimTable_Rayquaza[] = {
+ sAnim_Rayquaza,
};
-const struct SpriteFrameImage gFieldEffectObjectPicTable_Rayquaza[] = {
+const struct SpriteFrameImage sPicTable_Rayquaza[] = {
overworld_frame(gObjectEventPic_Rayquaza, 4, 4, 0),
};
-const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {0xFFFF, 0xFFFF, &gObjectEventBaseOam_32x32, gFieldEffectObjectImageAnimTable_Rayquaza, gFieldEffectObjectPicTable_Rayquaza, gDummySpriteAffineAnimTable, sub_8155F80};
+const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {
+ .tileTag = 0xFFFF,
+ .paletteTag = 0xFFFF,
+ .oam = &gObjectEventBaseOam_32x32,
+ .anims = sAnimTable_Rayquaza,
+ .images = sPicTable_Rayquaza,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = UpdateRayquazaSpotlightEffect,
+};
-const struct SpritePalette gFieldEffectObjectPaletteInfoUnused = {gObjectEventPalette2, 0x1011};
+static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPalette2, FLDEFF_PAL_TAG_UNKNOWN};
diff --git a/src/data/graphics/slot_machine.h b/src/data/graphics/slot_machine.h
index a94f2b622..6500ad7f3 100644
--- a/src/data/graphics/slot_machine.h
+++ b/src/data/graphics/slot_machine.h
@@ -2,21 +2,15 @@ const u16 gSlotMachineMenu_Pal[] = INCBIN_U16("graphics/slot_machine/menu.gbapal
const u32 gSlotMachineMenu_Gfx[] = INCBIN_U32("graphics/slot_machine/menu.4bpp.lz");
const u16 gSlotMachineMenu_Tilemap[] = INCBIN_U16("graphics/slot_machine/menu.bin");
-const u16 gUnknown_08DCEC70[] = INCBIN_U16("graphics/slot_machine/slots_layout.bin");
+const u16 gSlotMachineInfoBox_Tilemap[] = INCBIN_U16("graphics/slot_machine/info_box.bin");
-const u16 gUnknown_08DCF170[] = INCBIN_U16("graphics/slot_machine/reel_symbols/1.gbapal");
-
-const u16 gUnknown_08DCF190[] = INCBIN_U16("graphics/slot_machine/reel_pikachu.gbapal");
-
-const u16 gUnknown_08DCF1B0[] = INCBIN_U16("graphics/slot_machine/shadow.gbapal");
-
-const u16 gSlotMachineReelTime_Pal[] = INCBIN_U16("graphics/slot_machine/reel_time.gbapal");
-
-const u16 gUnknown_08DCF1F0[] = INCBIN_U16("graphics/slot_machine/smoke.gbapal"); // also duck and pika aura
-
-const u16 gUnknown_08DCF210[] = INCBIN_U16("graphics/slot_machine/reel_time_explosion/0.gbapal");
-
-const u16 gUnknown_08DCF230[] = INCBIN_U16("graphics/slot_machine/spr6.gbapal");
+const u16 gSlotMachineReelSymbols_Pal[] = INCBIN_U16("graphics/slot_machine/reel_symbols/1.gbapal");
+const u16 gSlotMachineReelTimePikachu_Pal[] = INCBIN_U16("graphics/slot_machine/reel_time_pikachu.gbapal");
+const u16 gSlotMachineReelTimeMisc_Pal[] = INCBIN_U16("graphics/slot_machine/shadow.gbapal");
+const u16 gSlotMachineReelTimeMachine_Pal[] = INCBIN_U16("graphics/slot_machine/reel_time_machine.gbapal");
+const u16 gSlotMachineMisc_Pal[] = INCBIN_U16("graphics/slot_machine/smoke.gbapal");
+const u16 gSlotMachineReelTimeExplosion_Pal[] = INCBIN_U16("graphics/slot_machine/reel_time_explosion/0.gbapal");
+const u16 gSlotMachineDigitalDisplay_Pal[] = INCBIN_U16("graphics/slot_machine/digital_display.gbapal");
const u8 gSlotMachineReelSymbol1Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/1.4bpp");
const u8 gSlotMachineReelSymbol2Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/2.4bpp");
@@ -26,7 +20,7 @@ const u8 gSlotMachineReelSymbol5Tiles[] = INCBIN_U8("graphics/slot_machine/reel_
const u8 gSlotMachineReelSymbol6Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/6.4bpp");
const u8 gSlotMachineReelSymbol7Tiles[] = INCBIN_U8("graphics/slot_machine/reel_symbols/7.4bpp");
-const u32 gSlotMachineReelTime_Gfx[] = INCBIN_U32("graphics/slot_machine/reel_time.4bpp.lz");
+const u32 gSlotMachineDigitalDisplay_Gfx[] = INCBIN_U32("graphics/slot_machine/digital_display.4bpp.lz");
const u8 gSlotMachineNumber0Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/0.4bpp");
const u8 gSlotMachineNumber1Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/1.4bpp");
@@ -39,7 +33,7 @@ const u8 gSlotMachineNumber7Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/7
const u8 gSlotMachineNumber8Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/8.4bpp");
const u8 gSlotMachineNumber9Tiles[] = INCBIN_U8("graphics/slot_machine/numbers/9.4bpp");
-const u8 gSlotMachineReelTimeBolt[] = INCBIN_U8("graphics/slot_machine/bolt.4bpp");
+const u8 gSlotMachinePikaPowerBolt[] = INCBIN_U8("graphics/slot_machine/bolt.4bpp");
const u8 gSlotMachineReelTimeDuck[] = INCBIN_U8("graphics/slot_machine/duck.4bpp");
const u8 gSlotMachineReelTimeSmoke[] = INCBIN_U8("graphics/slot_machine/smoke.4bpp");
@@ -50,8 +44,8 @@ const u8 gSlotMachineReelTimeNumber3[] = INCBIN_U8("graphics/slot_machine/reel_t
const u8 gSlotMachineReelTimeNumber4[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/4.4bpp");
const u8 gSlotMachineReelTimeNumber5[] = INCBIN_U8("graphics/slot_machine/reel_time_numbers/5.4bpp");
-const u8 gSlotMachineReelTimeLargeBolt0[] = INCBIN_U8("graphics/slot_machine/large_bolt/0.4bpp");
-const u8 gSlotMachineReelTimeLargeBolt1[] = INCBIN_U8("graphics/slot_machine/large_bolt/1.4bpp");
+const u8 gSlotMachineReelTimeBolt0[] = INCBIN_U8("graphics/slot_machine/large_bolt/0.4bpp");
+const u8 gSlotMachineReelTimeBolt1[] = INCBIN_U8("graphics/slot_machine/large_bolt/1.4bpp");
const u8 gSlotMachineReelTimeExplosion0[] = INCBIN_U8("graphics/slot_machine/reel_time_explosion/0.4bpp");
const u8 gSlotMachineReelTimeExplosion1[] = INCBIN_U8("graphics/slot_machine/reel_time_explosion/1.4bpp");
@@ -59,5 +53,5 @@ const u8 gSlotMachineReelTimeExplosion1[] = INCBIN_U8("graphics/slot_machine/ree
const u8 gSlotMachineReelTimeShadow[] = INCBIN_U8("graphics/slot_machine/shadow.4bpp");
const u8 gSlotMachineReelTimePikaAura[] = INCBIN_U8("graphics/slot_machine/pika_aura.4bpp");
-const u8 gUnknown_08DD19F8[] = INCBIN_U8("graphics/unknown/unknown_DD19F8.bin");
-const u8 gUnknown_08DD1A18[] = INCBIN_U8("graphics/unknown/unknown_DD1A18.4bpp");
+const u8 gSlotMachineReelBackground_Tilemap[] = INCBIN_U8("graphics/slot_machine/reel_background.bin");
+const u8 gSlotMachineReelTimeNumberGap_Gfx[] = INCBIN_U8("graphics/slot_machine/reel_time_number_gap.4bpp");
diff --git a/src/data/items.h b/src/data/items.h
index 4d262e683..30beb5352 100644
--- a/src/data/items.h
+++ b/src/data/items.h
@@ -3426,7 +3426,7 @@ const struct Item gItems[] =
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
- .secondaryId = 0,
+ .secondaryId = OLD_ROD,
},
[ITEM_GOOD_ROD] =
@@ -3440,7 +3440,7 @@ const struct Item gItems[] =
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
- .secondaryId = 1,
+ .secondaryId = GOOD_ROD,
},
[ITEM_SUPER_ROD] =
@@ -3454,7 +3454,7 @@ const struct Item gItems[] =
.pocket = POCKET_KEY_ITEMS,
.type = 2,
.fieldUseFunc = ItemUseOutOfBattle_Rod,
- .secondaryId = 2,
+ .secondaryId = SUPER_ROD,
},
[ITEM_SS_TICKET] =
diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h
index 769a6bb0a..50fc6715c 100755
--- a/src/data/object_events/object_event_graphics.h
+++ b/src/data/object_events/object_event_graphics.h
@@ -252,7 +252,7 @@ const u32 gObjectEventPic_CableCar[] = INCBIN_U32("graphics/object_events/pics/m
const u16 gObjectEventPalette20[] = INCBIN_U16("graphics/object_events/palettes/20.gbapal");
const u32 gObjectEventPic_SSTidal[] = INCBIN_U32("graphics/object_events/pics/misc/ss_tidal.4bpp");
const u16 gObjectEventPalette21[] = INCBIN_U16("graphics/object_events/palettes/21.gbapal");
-const u32 gFieldEffectObjectPic_BerryTreeGrowthSparkle[] = INCBIN_U32("graphics/field_effects/pics/berry_tree_growth_sparkle.4bpp");
+const u32 gFieldEffectObjectPic_Sparkle[] = INCBIN_U32("graphics/field_effects/pics/sparkle.4bpp");
const u32 gObjectEventPic_BerryTreeDirtPile[] = INCBIN_U32("graphics/object_events/pics/berry_trees/dirt_pile.4bpp");
const u32 gObjectEventPic_BerryTreeSprout[] = INCBIN_U32("graphics/object_events/pics/berry_trees/sprout.4bpp");
const u32 gObjectEventPic_PechaBerryTree[] = INCBIN_U32("graphics/object_events/pics/berry_trees/pecha.4bpp");
@@ -293,43 +293,43 @@ const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effec
const u32 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effects/pics/shadow_medium.4bpp");
const u32 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_large.4bpp");
const u32 gFieldEffectObjectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effects/pics/shadow_extra_large.4bpp");
-const u32 filler_8368A08[0x48] = {};
+static const u32 sFiller[0x48] = {};
const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effects/pics/cut_grass.4bpp");
const u32 gFieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effects/pics/cut_grass.4bpp");
-const u16 gFieldEffectObjectPalette6[] = INCBIN_U16("graphics/field_effects/palettes/06.gbapal");
+const u16 gFieldEffectPal_CutGrass[] = INCBIN_U16("graphics/field_effects/palettes/cut_grass.gbapal");
const u32 gFieldEffectObjectPic_Ripple[] = INCBIN_U32("graphics/field_effects/pics/ripple.4bpp");
const u32 gFieldEffectObjectPic_Ash[] = INCBIN_U32("graphics/field_effects/pics/ash.4bpp");
const u32 gFieldEffectObjectPic_Arrow[] = INCBIN_U32("graphics/field_effects/pics/arrow.4bpp");
-const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effects/palettes/00.gbapal");
-const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effects/palettes/01.gbapal");
+const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effects/palettes/general_0.gbapal");
+const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effects/palettes/general_1.gbapal");
const u32 gFieldEffectObjectPic_GroundImpactDust[] = INCBIN_U32("graphics/field_effects/pics/ground_impact_dust.4bpp");
-const u32 gFieldEffectObjectPic_BikeHopTallGrass[] = INCBIN_U32("graphics/field_effects/pics/bike_hop_tall_grass.4bpp");
-const u32 gUnusedGrass[] = INCBIN_U32("graphics/field_effects/pics/unused_grass.4bpp");
-const u32 gFieldEffectObjectPic_Unknown16[] = INCBIN_U32("graphics/field_effects/pics/unknown_16.4bpp");
+const u32 gFieldEffectObjectPic_JumpTallGrass[] = INCBIN_U32("graphics/field_effects/pics/jump_tall_grass.4bpp");
+const u32 gUnusedGrass3[] = INCBIN_U32("graphics/field_effects/pics/unused_grass_3.4bpp");
+const u32 gFieldEffectObjectPic_JumpLongGrass[] = INCBIN_U32("graphics/field_effects/pics/unknown_16.4bpp");
const u32 gFieldEffectObjectPic_Unknown17[] = INCBIN_U32("graphics/field_effects/pics/unknown_17.4bpp");
-const u32 gFieldEffectObjectPic_Unknown18[] = INCBIN_U32("graphics/field_effects/pics/unknown_18.4bpp");
+const u32 gFieldEffectObjectPic_UnusedGrass2[] = INCBIN_U32("graphics/field_effects/pics/unused_grass_2.4bpp");
const u32 gFieldEffectObjectPic_LongGrass[] = INCBIN_U32("graphics/field_effects/pics/long_grass.4bpp");
const u32 gFieldEffectObjectPic_TallGrass[] = INCBIN_U32("graphics/field_effects/pics/tall_grass.4bpp");
const u32 gFieldEffectObjectPic_ShortGrass[] = INCBIN_U32("graphics/field_effects/pics/short_grass.4bpp");
const u32 gFieldEffectObjectPic_SandFootprints[] = INCBIN_U32("graphics/field_effects/pics/sand_footprints.4bpp");
const u32 gFieldEffectObjectPic_DeepSandFootprints[] = INCBIN_U32("graphics/field_effects/pics/deep_sand_footprints.4bpp");
const u32 gFieldEffectObjectPic_BikeTireTracks[] = INCBIN_U32("graphics/field_effects/pics/bike_tire_tracks.4bpp");
-const u32 gFieldEffectObjectPic_Unknown19[] = INCBIN_U32("graphics/field_effects/pics/unknown_19.4bpp");
-const u32 gFieldEffectObjectPic_Unknown29[] = INCBIN_U32("graphics/field_effects/pics/unknown_29.4bpp");
-const u32 gFieldEffectObjectPic_BikeHopBigSplash[] = INCBIN_U32("graphics/field_effects/pics/bike_hop_big_splash.4bpp");
+const u32 gFieldEffectObjectPic_UnusedSand[] = INCBIN_U32("graphics/field_effects/pics/unused_sand.4bpp");
+const u32 gFieldEffectObjectPic_SandPile[] = INCBIN_U32("graphics/field_effects/pics/sand_pile.4bpp");
+const u32 gFieldEffectObjectPic_JumpBigSplash[] = INCBIN_U32("graphics/field_effects/pics/jump_big_splash.4bpp");
const u32 gFieldEffectObjectPic_Splash[] = INCBIN_U32("graphics/field_effects/pics/splash.4bpp");
-const u32 gFieldEffectObjectPic_BikeHopSmallSplash[] = INCBIN_U32("graphics/field_effects/pics/bike_hop_small_splash.4bpp");
-const u32 gFieldEffectObjectPic_Unknown20[] = INCBIN_U32("graphics/field_effects/pics/unknown_20.4bpp");
+const u32 gFieldEffectObjectPic_JumpSmallSplash[] = INCBIN_U32("graphics/field_effects/pics/jump_small_splash.4bpp");
+const u32 gFieldEffectObjectPic_WaterSurfacing[] = INCBIN_U32("graphics/field_effects/pics/water_surfacing.4bpp");
const u32 gFieldEffectObjectPic_TreeDisguise[] = INCBIN_U32("graphics/field_effects/pics/tree_disguise.4bpp");
const u32 gFieldEffectObjectPic_MountainDisguise[] = INCBIN_U32("graphics/field_effects/pics/mountain_disguise.4bpp");
const u32 gFieldEffectObjectPic_SandDisguisePlaceholder[] = INCBIN_U32("graphics/field_effects/pics/sand_disguise_placeholder.4bpp");
const u32 gFieldEffectObjectPic_HotSpringsWater[] = INCBIN_U32("graphics/field_effects/pics/hot_springs_water.4bpp");
-const u16 gFieldEffectObjectPalette2[] = INCBIN_U16("graphics/field_effects/palettes/02.gbapal");
-const u32 gFieldEffectObjectPic_JumpOutOfAsh[] = INCBIN_U32("graphics/field_effects/pics/jump_out_of_ash.4bpp");
-const u32 gFieldEffectObjectPic_LavaridgeGymWarp[] = INCBIN_U32("graphics/field_effects/pics/lavaridge_gym_warp.4bpp");
+const u16 gFieldEffectPal_Ash[] = INCBIN_U16("graphics/field_effects/palettes/ash.gbapal");
+const u32 gFieldEffectObjectPic_AshPuff[] = INCBIN_U32("graphics/field_effects/pics/ash_puff.4bpp");
+const u32 gFieldEffectObjectPic_AshLaunch[] = INCBIN_U32("graphics/field_effects/pics/ash_launch.4bpp");
const u32 gFieldEffectObjectPic_Bubbles[] = INCBIN_U32("graphics/field_effects/pics/bubbles.4bpp");
-const u32 gFieldEffectObjectPic_Unknown35[] = INCBIN_U32("graphics/field_effects/pics/unknown_35.4bpp");
-const u16 gFieldEffectObjectPalette3[] = INCBIN_U16("graphics/field_effects/palettes/03.gbapal");
+const u32 gFieldEffectObjectPic_SmallSparkle[] = INCBIN_U32("graphics/field_effects/pics/small_sparkle.4bpp");
+const u16 gFieldEffectPal_SmallSparkle[] = INCBIN_U16("graphics/field_effects/palettes/small_sparkle.gbapal");
const u32 gFieldEffectObjectPic_Bird[] = INCBIN_U32("graphics/field_effects/pics/bird.4bpp");
const u32 gObjectEventPic_Juan[] = INCBIN_U32("graphics/object_events/pics/people/gym_leaders/juan.4bpp");
const u32 gObjectEventPic_Scott[] = INCBIN_U32("graphics/object_events/pics/people/scott.4bpp");
diff --git a/src/data/pokemon_graphics/back_pic_coordinates.h b/src/data/pokemon_graphics/back_pic_coordinates.h
index 0a89f20c8..131ac13d9 100644
--- a/src/data/pokemon_graphics/back_pic_coordinates.h
+++ b/src/data/pokemon_graphics/back_pic_coordinates.h
@@ -3,2202 +3,2202 @@ const struct MonCoords gMonBackPicCoords[] =
[SPECIES_NONE] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_BULBASAUR] =
{
.size = 0x64,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_IVYSAUR] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_VENUSAUR] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_CHARMANDER] =
{
.size = 0x65,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_CHARMELEON] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_CHARIZARD] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SQUIRTLE] =
{
.size = 0x65,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_WARTORTLE] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_BLASTOISE] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_CATERPIE] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_METAPOD] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_BUTTERFREE] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_WEEDLE] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_KAKUNA] =
{
.size = 0x46,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_BEEDRILL] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_PIDGEY] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_PIDGEOTTO] =
{
.size = 0x85,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_PIDGEOT] =
{
.size = 0x78,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_RATTATA] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_RATICATE] =
{
.size = 0x75,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_SPEAROW] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_FEAROW] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_EKANS] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_ARBOK] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_PIKACHU] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_RAICHU] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SANDSHREW] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_SANDSLASH] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_NIDORAN_F] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_NIDORINA] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_NIDOQUEEN] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_NIDORAN_M] =
{
.size = 0x56,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_NIDORINO] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_NIDOKING] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_CLEFAIRY] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_CLEFABLE] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_VULPIX] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_NINETALES] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_JIGGLYPUFF] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_WIGGLYTUFF] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ZUBAT] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_GOLBAT] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_ODDISH] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_GLOOM] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_VILEPLUME] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_PARAS] =
{
.size = 0x63,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_PARASECT] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_VENONAT] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_VENOMOTH] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_DIGLETT] =
{
.size = 0x54,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_DUGTRIO] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_MEOWTH] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_PERSIAN] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_PSYDUCK] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_GOLDUCK] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_MANKEY] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_PRIMEAPE] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_GROWLITHE] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ARCANINE] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_POLIWAG] =
{
.size = 0x74,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_POLIWHIRL] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_POLIWRATH] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_ABRA] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_KADABRA] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ALAKAZAM] =
{
.size = 0x67,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_MACHOP] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_MACHOKE] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_MACHAMP] =
{
.size = 0x67,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_BELLSPROUT] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_WEEPINBELL] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_VICTREEBEL] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_TENTACOOL] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_TENTACRUEL] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_GEODUDE] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_GRAVELER] =
{
.size = 0x75,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_GOLEM] =
{
.size = 0x84,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_PONYTA] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_RAPIDASH] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_SLOWPOKE] =
{
.size = 0x85,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_SLOWBRO] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_MAGNEMITE] =
{
.size = 0x43,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_MAGNETON] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_FARFETCHD] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_DODUO] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_DODRIO] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SEEL] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_DEWGONG] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_GRIMER] =
{
.size = 0x75,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_MUK] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_SHELLDER] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_CLOYSTER] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_GASTLY] =
{
.size = 0x85,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_HAUNTER] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_GENGAR] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_ONIX] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_DROWZEE] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_HYPNO] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_KRABBY] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_KINGLER] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_VOLTORB] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_ELECTRODE] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_EXEGGCUTE] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_EXEGGUTOR] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_CUBONE] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_MAROWAK] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_HITMONLEE] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_HITMONCHAN] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_LICKITUNG] =
{
.size = 0x65,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_KOFFING] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_WEEZING] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_RHYHORN] =
{
.size = 0x85,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_RHYDON] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_CHANSEY] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_TANGELA] =
{
.size = 0x85,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_KANGASKHAN] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_HORSEA] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SEADRA] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_GOLDEEN] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SEAKING] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_STARYU] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_STARMIE] =
{
.size = 0x85,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_MR_MIME] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_SCYTHER] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_JYNX] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_ELECTABUZZ] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MAGMAR] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_PINSIR] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_TAUROS] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_MAGIKARP] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_GYARADOS] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_LAPRAS] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_DITTO] =
{
.size = 0x54,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_EEVEE] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_VAPOREON] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_JOLTEON] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_FLAREON] =
{
.size = 0x67,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_PORYGON] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_OMANYTE] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_OMASTAR] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_KABUTO] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_KABUTOPS] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_AERODACTYL] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SNORLAX] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_ARTICUNO] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_ZAPDOS] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_MOLTRES] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_DRATINI] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_DRAGONAIR] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_DRAGONITE] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_MEWTWO] =
{
.size = 0x78,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_MEW] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_CHIKORITA] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_BAYLEEF] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MEGANIUM] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CYNDAQUIL] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_QUILAVA] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_TYPHLOSION] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_TOTODILE] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_CROCONAW] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_FERALIGATR] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SENTRET] =
{
.size = 0x67,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_FURRET] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_HOOTHOOT] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_NOCTOWL] =
{
.size = 0x68,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_LEDYBA] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_LEDIAN] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_SPINARAK] =
{
.size = 0x73,
- .y_offset = 0x15,
+ .y_offset = 21,
},
[SPECIES_ARIADOS] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_CROBAT] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_CHINCHOU] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_LANTURN] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_PICHU] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_CLEFFA] =
{
.size = 0x65,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_IGGLYBUFF] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_TOGEPI] =
{
.size = 0x54,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_TOGETIC] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_NATU] =
{
.size = 0x54,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_XATU] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MAREEP] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_FLAAFFY] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_AMPHAROS] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_BELLOSSOM] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_MARILL] =
{
.size = 0x75,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_AZUMARILL] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SUDOWOODO] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_POLITOED] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_HOPPIP] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_SKIPLOOM] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_JUMPLUFF] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_AIPOM] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SUNKERN] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SUNFLORA] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_YANMA] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_WOOPER] =
{
.size = 0x85,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_QUAGSIRE] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ESPEON] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_UMBREON] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_MURKROW] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SLOWKING] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MISDREAVUS] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN] =
{
.size = 0x36,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_WOBBUFFET] =
{
.size = 0x75,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_GIRAFARIG] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_PINECO] =
{
.size = 0x65,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_FORRETRESS] =
{
.size = 0x84,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_DUNSPARCE] =
{
.size = 0x85,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_GLIGAR] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_STEELIX] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SNUBBULL] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_GRANBULL] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_QWILFISH] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_SCIZOR] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SHUCKLE] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_HERACROSS] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SNEASEL] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_TEDDIURSA] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_URSARING] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_SLUGMA] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MAGCARGO] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SWINUB] =
{
.size = 0x63,
- .y_offset = 0x15,
+ .y_offset = 21,
},
[SPECIES_PILOSWINE] =
{
.size = 0x75,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_CORSOLA] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_REMORAID] =
{
.size = 0x75,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_OCTILLERY] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_DELIBIRD] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_MANTINE] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_SKARMORY] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_HOUNDOUR] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_HOUNDOOM] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_KINGDRA] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_PHANPY] =
{
.size = 0x65,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_DONPHAN] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_PORYGON2] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_STANTLER] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_SMEARGLE] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_TYROGUE] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_HITMONTOP] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_SMOOCHUM] =
{
.size = 0x56,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_ELEKID] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MAGBY] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_MILTANK] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_BLISSEY] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_RAIKOU] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_ENTEI] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_SUICUNE] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_LARVITAR] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_PUPITAR] =
{
.size = 0x67,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_TYRANITAR] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_LUGIA] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_HO_OH] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_CELEBI] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_OLD_UNOWN_B] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_C] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_D] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_E] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_F] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_G] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_H] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_I] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_J] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_K] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_L] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_M] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_N] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_O] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_P] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_Q] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_R] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_S] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_T] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_U] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_V] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_W] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_X] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_Y] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_OLD_UNOWN_Z] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_TREECKO] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_GROVYLE] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SCEPTILE] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_TORCHIC] =
{
.size = 0x67,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_COMBUSKEN] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_BLAZIKEN] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_MUDKIP] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_MARSHTOMP] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SWAMPERT] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_POOCHYENA] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_MIGHTYENA] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_ZIGZAGOON] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_LINOONE] =
{
.size = 0x85,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_WURMPLE] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_SILCOON] =
{
.size = 0x83,
- .y_offset = 0x15,
+ .y_offset = 21,
},
[SPECIES_BEAUTIFLY] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CASCOON] =
{
.size = 0x73,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_DUSTOX] =
{
.size = 0x83,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_LOTAD] =
{
.size = 0x75,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_LOMBRE] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_LUDICOLO] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SEEDOT] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_NUZLEAF] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SHIFTRY] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_NINCADA] =
{
.size = 0x83,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_NINJASK] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SHEDINJA] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_TAILLOW] =
{
.size = 0x64,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_SWELLOW] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SHROOMISH] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_BRELOOM] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SPINDA] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_WINGULL] =
{
.size = 0x85,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_PELIPPER] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_SURSKIT] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_MASQUERAIN] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_WAILMER] =
{
.size = 0x83,
- .y_offset = 0x15,
+ .y_offset = 21,
},
[SPECIES_WAILORD] =
{
.size = 0x83,
- .y_offset = 0x16,
+ .y_offset = 22,
},
[SPECIES_SKITTY] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_DELCATTY] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_KECLEON] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_BALTOY] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_CLAYDOL] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_NOSEPASS] =
{
.size = 0x85,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_TORKOAL] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SABLEYE] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_BARBOACH] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_WHISCASH] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_LUVDISC] =
{
.size = 0x46,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_CORPHISH] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_CRAWDAUNT] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_FEEBAS] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_MILOTIC] =
{
.size = 0x68,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_CARVANHA] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_SHARPEDO] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_TRAPINCH] =
{
.size = 0x75,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_VIBRAVA] =
{
.size = 0x74,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_FLYGON] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_MAKUHITA] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_HARIYAMA] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_ELECTRIKE] =
{
.size = 0x84,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_MANECTRIC] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_NUMEL] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_CAMERUPT] =
{
.size = 0x84,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_SPHEAL] =
{
.size = 0x64,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_SEALEO] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_WALREIN] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_CACNEA] =
{
.size = 0x85,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_CACTURNE] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_SNORUNT] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_GLALIE] =
{
.size = 0x85,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_LUNATONE] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_SOLROCK] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_AZURILL] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SPOINK] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_GRUMPIG] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_PLUSLE] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MINUN] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MAWILE] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_MEDITITE] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_MEDICHAM] =
{
.size = 0x68,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_SWABLU] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_ALTARIA] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_WYNAUT] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_DUSKULL] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_DUSCLOPS] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ROSELIA] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SLAKOTH] =
{
.size = 0x85,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_VIGOROTH] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SLAKING] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_GULPIN] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_SWALOT] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_TROPIUS] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_WHISMUR] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_LOUDRED] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_EXPLOUD] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_CLAMPERL] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_HUNTAIL] =
{
.size = 0x68,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_GOREBYSS] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_ABSOL] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_SHUPPET] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_BANETTE] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_SEVIPER] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_ZANGOOSE] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_RELICANTH] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_ARON] =
{
.size = 0x54,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_LAIRON] =
{
.size = 0x84,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_AGGRON] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_CASTFORM] =
{
.size = 0x45,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_VOLBEAT] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ILLUMISE] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_LILEEP] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_CRADILY] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_ANORITH] =
{
.size = 0x83,
- .y_offset = 0x17,
+ .y_offset = 23,
},
[SPECIES_ARMALDO] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_RALTS] =
{
.size = 0x45,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_KIRLIA] =
{
.size = 0x57,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_GARDEVOIR] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_BAGON] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SHELGON] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_SALAMENCE] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_BELDUM] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_METANG] =
{
.size = 0x84,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_METAGROSS] =
{
.size = 0x83,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_REGIROCK] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_REGICE] =
{
.size = 0x85,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_REGISTEEL] =
{
.size = 0x85,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_KYOGRE] =
{
.size = 0x84,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_GROUDON] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_RAYQUAZA] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_LATIAS] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_LATIOS] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_JIRACHI] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_DEOXYS] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_CHIMECHO] =
{
.size = 0x47,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_EGG] =
{
.size = 0x36,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN_B] =
{
.size = 0x56,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_UNOWN_C] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_UNOWN_D] =
{
.size = 0x56,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_UNOWN_E] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN_F] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN_G] =
{
.size = 0x57,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_UNOWN_H] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_UNOWN_I] =
{
.size = 0x37,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_UNOWN_J] =
{
.size = 0x46,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_UNOWN_K] =
{
.size = 0x57,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_UNOWN_L] =
{
.size = 0x46,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN_M] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_UNOWN_N] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_UNOWN_O] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_UNOWN_P] =
{
.size = 0x46,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN_Q] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_UNOWN_R] =
{
.size = 0x45,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_UNOWN_S] =
{
.size = 0x57,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_UNOWN_T] =
{
.size = 0x45,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_UNOWN_U] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_UNOWN_V] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_UNOWN_W] =
{
.size = 0x55,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_UNOWN_X] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_UNOWN_Y] =
{
.size = 0x46,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN_Z] =
{
.size = 0x46,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_UNOWN_EMARK] =
{
.size = 0x37,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_UNOWN_QMARK] =
{
.size = 0x47,
- .y_offset = 0x06,
+ .y_offset = 6,
},
};
diff --git a/src/data/pokemon_graphics/front_pic_coordinates.h b/src/data/pokemon_graphics/front_pic_coordinates.h
index 19de9a7dd..b787877b9 100644
--- a/src/data/pokemon_graphics/front_pic_coordinates.h
+++ b/src/data/pokemon_graphics/front_pic_coordinates.h
@@ -3,2201 +3,2201 @@ const struct MonCoords gMonFrontPicCoords[] =
[SPECIES_NONE] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_BULBASAUR] =
{
.size = 0x45,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_IVYSAUR] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_VENUSAUR] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_CHARMANDER] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_CHARMELEON] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_CHARIZARD] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SQUIRTLE] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_WARTORTLE] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_BLASTOISE] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CATERPIE] =
{
.size = 0x45,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_METAPOD] =
{
.size = 0x54,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_BUTTERFREE] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_WEEDLE] =
{
.size = 0x54,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_KAKUNA] =
{
.size = 0x45,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_BEEDRILL] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_PIDGEY] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_PIDGEOTTO] =
{
.size = 0x67,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_PIDGEOT] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_RATTATA] =
{
.size = 0x44,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_RATICATE] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_SPEAROW] =
{
.size = 0x45,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_FEAROW] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_EKANS] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_ARBOK] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_PIKACHU] =
{
.size = 0x67,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_RAICHU] =
{
.size = 0x67,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SANDSHREW] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_SANDSLASH] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_NIDORAN_F] =
{
.size = 0x45,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_NIDORINA] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_NIDOQUEEN] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_NIDORAN_M] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_NIDORINO] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_NIDOKING] =
{
.size = 0x78,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_CLEFAIRY] =
{
.size = 0x55,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_CLEFABLE] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_VULPIX] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_NINETALES] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_JIGGLYPUFF] =
{
.size = 0x45,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_WIGGLYTUFF] =
{
.size = 0x67,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ZUBAT] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_GOLBAT] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_ODDISH] =
{
.size = 0x45,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_GLOOM] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_VILEPLUME] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_PARAS] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_PARASECT] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_VENONAT] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_VENOMOTH] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_DIGLETT] =
{
.size = 0x54,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_DUGTRIO] =
{
.size = 0x75,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_MEOWTH] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_PERSIAN] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_PSYDUCK] =
{
.size = 0x56,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_GOLDUCK] =
{
.size = 0x78,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_MANKEY] =
{
.size = 0x65,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_PRIMEAPE] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_GROWLITHE] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_ARCANINE] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_POLIWAG] =
{
.size = 0x74,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_POLIWHIRL] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_POLIWRATH] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ABRA] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_KADABRA] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_ALAKAZAM] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_MACHOP] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_MACHOKE] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_MACHAMP] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_BELLSPROUT] =
{
.size = 0x65,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_WEEPINBELL] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_VICTREEBEL] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_TENTACOOL] =
{
.size = 0x46,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_TENTACRUEL] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_GEODUDE] =
{
.size = 0x54,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_GRAVELER] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_GOLEM] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_PONYTA] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_RAPIDASH] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SLOWPOKE] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_SLOWBRO] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MAGNEMITE] =
{
.size = 0x43,
- .y_offset = 0x15,
+ .y_offset = 21,
},
[SPECIES_MAGNETON] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_FARFETCHD] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_DODUO] =
{
.size = 0x57,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_DODRIO] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SEEL] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_DEWGONG] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_GRIMER] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_MUK] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SHELLDER] =
{
.size = 0x55,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_CLOYSTER] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_GASTLY] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_HAUNTER] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_GENGAR] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_ONIX] =
{
.size = 0x78,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_DROWZEE] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_HYPNO] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_KRABBY] =
{
.size = 0x65,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_KINGLER] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_VOLTORB] =
{
.size = 0x44,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_ELECTRODE] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_EXEGGCUTE] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_EXEGGUTOR] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CUBONE] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_MAROWAK] =
{
.size = 0x76,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_HITMONLEE] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_HITMONCHAN] =
{
.size = 0x67,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_LICKITUNG] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_KOFFING] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_WEEZING] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_RHYHORN] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_RHYDON] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_CHANSEY] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_TANGELA] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_KANGASKHAN] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_HORSEA] =
{
.size = 0x45,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_SEADRA] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_GOLDEEN] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SEAKING] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_STARYU] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_STARMIE] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_MR_MIME] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SCYTHER] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_JYNX] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_ELECTABUZZ] =
{
.size = 0x78,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_MAGMAR] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_PINSIR] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_TAUROS] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_MAGIKARP] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_GYARADOS] =
{
.size = 0x88,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_LAPRAS] =
{
.size = 0x85,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_DITTO] =
{
.size = 0x54,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_EEVEE] =
{
.size = 0x56,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_VAPOREON] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_JOLTEON] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_FLAREON] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_PORYGON] =
{
.size = 0x55,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_OMANYTE] =
{
.size = 0x45,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_OMASTAR] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_KABUTO] =
{
.size = 0x54,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_KABUTOPS] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_AERODACTYL] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SNORLAX] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_ARTICUNO] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_ZAPDOS] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_MOLTRES] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_DRATINI] =
{
.size = 0x75,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_DRAGONAIR] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_DRAGONITE] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_MEWTWO] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_MEW] =
{
.size = 0x55,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_CHIKORITA] =
{
.size = 0x75,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_BAYLEEF] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_MEGANIUM] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CYNDAQUIL] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_QUILAVA] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_TYPHLOSION] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_TOTODILE] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_CROCONAW] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_FERALIGATR] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SENTRET] =
{
.size = 0x47,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_FURRET] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_HOOTHOOT] =
{
.size = 0x55,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_NOCTOWL] =
{
.size = 0x58,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_LEDYBA] =
{
.size = 0x56,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_LEDIAN] =
{
.size = 0x67,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SPINARAK] =
{
.size = 0x54,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_ARIADOS] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_CROBAT] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CHINCHOU] =
{
.size = 0x75,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_LANTURN] =
{
.size = 0x87,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_PICHU] =
{
.size = 0x45,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_CLEFFA] =
{
.size = 0x44,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_IGGLYBUFF] =
{
.size = 0x44,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_TOGEPI] =
{
.size = 0x34,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_TOGETIC] =
{
.size = 0x46,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_NATU] =
{
.size = 0x44,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_XATU] =
{
.size = 0x47,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_MAREEP] =
{
.size = 0x55,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_FLAAFFY] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_AMPHAROS] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_BELLOSSOM] =
{
.size = 0x45,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_MARILL] =
{
.size = 0x65,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_AZUMARILL] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SUDOWOODO] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_POLITOED] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_HOPPIP] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SKIPLOOM] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_JUMPLUFF] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_AIPOM] =
{
.size = 0x58,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_SUNKERN] =
{
.size = 0x44,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_SUNFLORA] =
{
.size = 0x56,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_YANMA] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_WOOPER] =
{
.size = 0x54,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_QUAGSIRE] =
{
.size = 0x77,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_ESPEON] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_UMBREON] =
{
.size = 0x67,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MURKROW] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_SLOWKING] =
{
.size = 0x58,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_MISDREAVUS] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_UNOWN] =
{
.size = 0x35,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_WOBBUFFET] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_GIRAFARIG] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_PINECO] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_FORRETRESS] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_DUNSPARCE] =
{
.size = 0x74,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_GLIGAR] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_STEELIX] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SNUBBULL] =
{
.size = 0x55,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_GRANBULL] =
{
.size = 0x57,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_QWILFISH] =
{
.size = 0x56,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SCIZOR] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SHUCKLE] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_HERACROSS] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_SNEASEL] =
{
.size = 0x67,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_TEDDIURSA] =
{
.size = 0x45,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_URSARING] =
{
.size = 0x78,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SLUGMA] =
{
.size = 0x45,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_MAGCARGO] =
{
.size = 0x57,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_SWINUB] =
{
.size = 0x43,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_PILOSWINE] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_CORSOLA] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_REMORAID] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_OCTILLERY] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_DELIBIRD] =
{
.size = 0x56,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MANTINE] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SKARMORY] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_HOUNDOUR] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_HOUNDOOM] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_KINGDRA] =
{
.size = 0x78,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_PHANPY] =
{
.size = 0x54,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_DONPHAN] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_PORYGON2] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_STANTLER] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SMEARGLE] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_TYROGUE] =
{
.size = 0x46,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_HITMONTOP] =
{
.size = 0x67,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_SMOOCHUM] =
{
.size = 0x35,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_ELEKID] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_MAGBY] =
{
.size = 0x45,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_MILTANK] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_BLISSEY] =
{
.size = 0x77,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_RAIKOU] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_ENTEI] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SUICUNE] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_LARVITAR] =
{
.size = 0x46,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_PUPITAR] =
{
.size = 0x56,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_TYRANITAR] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_LUGIA] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_HO_OH] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CELEBI] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_OLD_UNOWN_B] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_C] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_D] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_E] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_F] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_G] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_H] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_I] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_J] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_K] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_L] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_M] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_N] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_O] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_P] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_Q] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_R] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_S] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_T] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_U] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_V] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_W] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_X] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_Y] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_OLD_UNOWN_Z] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_TREECKO] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_GROVYLE] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SCEPTILE] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_TORCHIC] =
{
.size = 0x56,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_COMBUSKEN] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_BLAZIKEN] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_MUDKIP] =
{
.size = 0x56,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_MARSHTOMP] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_SWAMPERT] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_POOCHYENA] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_MIGHTYENA] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_ZIGZAGOON] =
{
.size = 0x85,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_LINOONE] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_WURMPLE] =
{
.size = 0x45,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_SILCOON] =
{
.size = 0x75,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_BEAUTIFLY] =
{
.size = 0x86,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_CASCOON] =
{
.size = 0x74,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_DUSTOX] =
{
.size = 0x86,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_LOTAD] =
{
.size = 0x65,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_LOMBRE] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_LUDICOLO] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SEEDOT] =
{
.size = 0x46,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_NUZLEAF] =
{
.size = 0x56,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SHIFTRY] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_NINCADA] =
{
.size = 0x74,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_NINJASK] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SHEDINJA] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_TAILLOW] =
{
.size = 0x64,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_SWELLOW] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_SHROOMISH] =
{
.size = 0x54,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_BRELOOM] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SPINDA] =
{
.size = 0x68,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_WINGULL] =
{
.size = 0x84,
- .y_offset = 0x18,
+ .y_offset = 24,
},
[SPECIES_PELIPPER] =
{
.size = 0x77,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_SURSKIT] =
{
.size = 0x65,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_MASQUERAIN] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_WAILMER] =
{
.size = 0x75,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_WAILORD] =
{
.size = 0x87,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_SKITTY] =
{
.size = 0x66,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_DELCATTY] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_KECLEON] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_BALTOY] =
{
.size = 0x55,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_CLAYDOL] =
{
.size = 0x78,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_NOSEPASS] =
{
.size = 0x56,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_TORKOAL] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_SABLEYE] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_BARBOACH] =
{
.size = 0x46,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_WHISCASH] =
{
.size = 0x76,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_LUVDISC] =
{
.size = 0x46,
- .y_offset = 0x18,
+ .y_offset = 24,
},
[SPECIES_CORPHISH] =
{
.size = 0x66,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_CRAWDAUNT] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_FEEBAS] =
{
.size = 0x46,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_MILOTIC] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CARVANHA] =
{
.size = 0x67,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_SHARPEDO] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_TRAPINCH] =
{
.size = 0x54,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_VIBRAVA] =
{
.size = 0x86,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_FLYGON] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_MAKUHITA] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_HARIYAMA] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_ELECTRIKE] =
{
.size = 0x64,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_MANECTRIC] =
{
.size = 0x67,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_NUMEL] =
{
.size = 0x65,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_CAMERUPT] =
{
.size = 0x87,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SPHEAL] =
{
.size = 0x65,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_SEALEO] =
{
.size = 0x86,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_WALREIN] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_CACNEA] =
{
.size = 0x74,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_CACTURNE] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SNORUNT] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_GLALIE] =
{
.size = 0x76,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_LUNATONE] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SOLROCK] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_AZURILL] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_SPOINK] =
{
.size = 0x46,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_GRUMPIG] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_PLUSLE] =
{
.size = 0x56,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_MINUN] =
{
.size = 0x66,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_MAWILE] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_MEDITITE] =
{
.size = 0x65,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_MEDICHAM] =
{
.size = 0x68,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_SWABLU] =
{
.size = 0x76,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_ALTARIA] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_WYNAUT] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_DUSKULL] =
{
.size = 0x66,
- .y_offset = 0x0a,
+ .y_offset = 10,
},
[SPECIES_DUSCLOPS] =
{
.size = 0x77,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_ROSELIA] =
{
.size = 0x76,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_SLAKOTH] =
{
.size = 0x74,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_VIGOROTH] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SLAKING] =
{
.size = 0x86,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_GULPIN] =
{
.size = 0x55,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_SWALOT] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_TROPIUS] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_WHISMUR] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_LOUDRED] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_EXPLOUD] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_CLAMPERL] =
{
.size = 0x55,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_HUNTAIL] =
{
.size = 0x78,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_GOREBYSS] =
{
.size = 0x86,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_ABSOL] =
{
.size = 0x68,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_SHUPPET] =
{
.size = 0x56,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_BANETTE] =
{
.size = 0x55,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_SEVIPER] =
{
.size = 0x77,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ZANGOOSE] =
{
.size = 0x87,
- .y_offset = 0x05,
+ .y_offset = 5,
},
[SPECIES_RELICANTH] =
{
.size = 0x77,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_ARON] =
{
.size = 0x43,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_LAIRON] =
{
.size = 0x75,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_AGGRON] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_CASTFORM] =
{
.size = 0x34,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_VOLBEAT] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ILLUMISE] =
{
.size = 0x56,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_LILEEP] =
{
.size = 0x67,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_CRADILY] =
{
.size = 0x78,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_ANORITH] =
{
.size = 0x66,
- .y_offset = 0x08,
+ .y_offset = 8,
},
[SPECIES_ARMALDO] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_RALTS] =
{
.size = 0x35,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_KIRLIA] =
{
.size = 0x47,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_GARDEVOIR] =
{
.size = 0x78,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_BAGON] =
{
.size = 0x56,
- .y_offset = 0x0b,
+ .y_offset = 11,
},
[SPECIES_SHELGON] =
{
.size = 0x66,
- .y_offset = 0x09,
+ .y_offset = 9,
},
[SPECIES_SALAMENCE] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_BELDUM] =
{
.size = 0x55,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_METANG] =
{
.size = 0x87,
- .y_offset = 0x07,
+ .y_offset = 7,
},
[SPECIES_METAGROSS] =
{
.size = 0x87,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_REGIROCK] =
{
.size = 0x78,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_REGICE] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_REGISTEEL] =
{
.size = 0x88,
- .y_offset = 0x03,
+ .y_offset = 3,
},
[SPECIES_KYOGRE] =
{
.size = 0x87,
- .y_offset = 0x04,
+ .y_offset = 4,
},
[SPECIES_GROUDON] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_RAYQUAZA] =
{
.size = 0x88,
- .y_offset = 0x00,
+ .y_offset = 0,
},
[SPECIES_LATIAS] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_LATIOS] =
{
.size = 0x88,
- .y_offset = 0x02,
+ .y_offset = 2,
},
[SPECIES_JIRACHI] =
{
.size = 0x66,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
[SPECIES_DEOXYS] =
{
.size = 0x88,
- .y_offset = 0x01,
+ .y_offset = 1,
},
[SPECIES_CHIMECHO] =
{
.size = 0x37,
- .y_offset = 0x06,
+ .y_offset = 6,
},
[SPECIES_EGG] =
{
.size = 0x33,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_UNOWN_B] =
{
.size = 0x34,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_UNOWN_C] =
{
.size = 0x44,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_UNOWN_D] =
{
.size = 0x44,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_UNOWN_E] =
{
.size = 0x44,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_UNOWN_F] =
{
.size = 0x44,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_UNOWN_G] =
{
.size = 0x35,
- .y_offset = 0x0e,
+ .y_offset = 14,
},
[SPECIES_UNOWN_H] =
{
.size = 0x44,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_UNOWN_I] =
{
.size = 0x34,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_UNOWN_J] =
{
.size = 0x34,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_UNOWN_K] =
{
.size = 0x44,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_UNOWN_L] =
{
.size = 0x34,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_UNOWN_M] =
{
.size = 0x44,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_UNOWN_N] =
{
.size = 0x43,
- .y_offset = 0x14,
+ .y_offset = 20,
},
[SPECIES_UNOWN_O] =
{
.size = 0x44,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_UNOWN_P] =
{
.size = 0x34,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_UNOWN_Q] =
{
.size = 0x43,
- .y_offset = 0x15,
+ .y_offset = 21,
},
[SPECIES_UNOWN_R] =
{
.size = 0x34,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_UNOWN_S] =
{
.size = 0x45,
- .y_offset = 0x0c,
+ .y_offset = 12,
},
[SPECIES_UNOWN_T] =
{
.size = 0x34,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_UNOWN_U] =
{
.size = 0x44,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_UNOWN_V] =
{
.size = 0x44,
- .y_offset = 0x12,
+ .y_offset = 18,
},
[SPECIES_UNOWN_W] =
{
.size = 0x44,
- .y_offset = 0x13,
+ .y_offset = 19,
},
[SPECIES_UNOWN_X] =
{
.size = 0x33,
- .y_offset = 0x15,
+ .y_offset = 21,
},
[SPECIES_UNOWN_Y] =
{
.size = 0x34,
- .y_offset = 0x11,
+ .y_offset = 17,
},
[SPECIES_UNOWN_Z] =
{
.size = 0x34,
- .y_offset = 0x10,
+ .y_offset = 16,
},
[SPECIES_UNOWN_EMARK] =
{
.size = 0x35,
- .y_offset = 0x0f,
+ .y_offset = 15,
},
[SPECIES_UNOWN_QMARK] =
{
.size = 0x35,
- .y_offset = 0x0d,
+ .y_offset = 13,
},
};
diff --git a/src/digit_obj_util.c b/src/digit_obj_util.c
index fe5d49e69..f887dafb9 100644
--- a/src/digit_obj_util.c
+++ b/src/digit_obj_util.c
@@ -33,7 +33,7 @@ struct DigitPrinterAlloc
};
// this file's functions
-static u8 GetFirstOamId(u8 oamCount);;
+static u8 GetFirstOamId(u8 oamCount);
static void CopyWorkToOam(struct DigitPrinter *objWork);
static void DrawNumObjsLeadingZeros(struct DigitPrinter *objWork, s32 num, bool32 sign);
static void DrawNumObjsMinusInFront(struct DigitPrinter *objWork, s32 num, bool32 sign);
diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c
index 3ca7a1cf7..5f249abad 100644
--- a/src/dodrio_berry_picking.c
+++ b/src/dodrio_berry_picking.c
@@ -4629,7 +4629,7 @@ static void sub_802A7A8(void)
ChangeBgX(3, 0, 0);
ChangeBgY(3, 0, 0);
InitStandardTextBoxWindows();
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
SetBgTilemapBuffer(3, gUnknown_02022CF8->tilemapBuffers[0]);
SetBgTilemapBuffer(1, gUnknown_02022CF8->tilemapBuffers[1]);
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 44a7b90c1..c839c0070 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -2537,7 +2537,7 @@ u8 sub_811BBBC(void)
return sEasyChatScreen->unk_0c;
}
-void sub_811BBC8(u8 *arg0, u8 *arg1)
+static void sub_811BBC8(s8 *arg0, s8 *arg1)
{
*arg0 = sEasyChatScreen->unk_10;
*arg1 = sEasyChatScreen->unk_11;
@@ -4529,18 +4529,18 @@ static void sub_811E30C(void)
x = var0 * 13;
x = x * 8 + 28;
y = var1 * 16 + 96;
- sub_811E34C(x, y);
+ sub_811E34C((u8)x, (u8)y);
}
static void sub_811E34C(u8 x, u8 y)
{
- if (sUnknown_0203A11C->unk2E4)
- {
- sUnknown_0203A11C->unk2E4->pos1.x = x;
- sUnknown_0203A11C->unk2E4->pos1.y = y;
- sUnknown_0203A11C->unk2E4->pos2.x = 0;
- sUnknown_0203A11C->unk2E4->data[0] = 0;
- }
+ if (!sUnknown_0203A11C->unk2E4)
+ return;
+
+ sUnknown_0203A11C->unk2E4->pos1.x = (s16)x;
+ sUnknown_0203A11C->unk2E4->pos1.y = (s16)y;
+ sUnknown_0203A11C->unk2E4->pos2.x = 0;
+ sUnknown_0203A11C->unk2E4->data[0] = 0;
}
static void sub_811E380(void)
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index ad839e006..a076a2a22 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -130,6 +130,9 @@ static struct ObjectEventTemplate *FindObjectEventTemplateByLocalId(u8 localId,
static void ClearObjectEventMovement(struct ObjectEvent *, struct Sprite *);
static void ObjectEventSetSingleMovement(struct ObjectEvent *, struct Sprite *, u8);
static void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
+static void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *);
+static void InitSpriteForFigure8Anim(struct Sprite *sprite);
+static bool8 AnimateSpriteInFigure8(struct Sprite *sprite);
static void UpdateObjectEventSprite(struct Sprite *);
const u8 gReflectionEffectPaletteMap[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
@@ -1122,13 +1125,13 @@ void ResetObjectEvents(void)
static void CreateReflectionEffectSprites(void)
{
- u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31);
+ u8 spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_REFLECTION_DISTORTION], 0, 0, 31);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 0);
gSprites[spriteId].invisible = TRUE;
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 31);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_REFLECTION_DISTORTION], 0, 0, 31);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
InitSpriteAffineAnim(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], 1);
@@ -1220,7 +1223,6 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template,
objectEvent->movementType = template->movementType;
objectEvent->localId = template->localId;
objectEvent->mapNum = mapNum;
- objectEvent++; objectEvent--;
objectEvent->mapGroup = mapGroup;
objectEvent->initialCoords.x = x;
objectEvent->initialCoords.y = y;
@@ -1233,13 +1235,11 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template,
objectEvent->range.as_nybbles.x = template->movementRangeX;
objectEvent->range.as_nybbles.y = template->movementRangeY;
objectEvent->trainerType = template->trainerType;
+ objectEvent->mapNum = mapNum; //redundant, but needed to match
objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
objectEvent->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType];
SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection);
SetObjectEventDynamicGraphicsId(objectEvent);
-#ifndef NONMATCHING
- asm("":::"r5", "r6");
-#endif
if (gRangedMovementTypes[objectEvent->movementType])
{
if (objectEvent->range.as_nybbles.x == 0)
@@ -1949,7 +1949,7 @@ void sub_808E7E4(u8 localId, u8 mapNum, u8 mapGroup)
}
}
-void sub_808E82C(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+void SetObjectEventSpritePosByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
{
u8 objectEventId;
struct Sprite *sprite;
@@ -2340,7 +2340,13 @@ const u8 *GetObjectEventScriptPointerByObjectEventId(u8 objectEventId)
static u16 GetObjectEventFlagIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
- return GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup)->flagId;
+ struct ObjectEventTemplate *obj = GetObjectEventTemplateByLocalIdAndMap(localId, mapNum, mapGroup);
+#ifdef UBFIX
+ // BUG: The function may return NULL, and attempting to read from NULL may freeze the game using modern compilers.
+ if (obj == NULL)
+ return 0;
+#endif // UBFIX
+ return obj->flagId;
}
static u16 GetObjectEventFlagIdByObjectEventId(u8 objectEventId)
@@ -6868,15 +6874,15 @@ bool8 MovementAction_UnusedAcroActionRight_Step0(struct ObjectEvent *objectEvent
return FALSE;
}
-void sub_8095AF0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+void InitFigure8Anim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8097750(sprite);
+ InitSpriteForFigure8Anim(sprite);
sprite->animPaused = FALSE;
}
-bool8 sub_8095B0C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 DoFigure8Anim(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_8097758(sprite))
+ if (AnimateSpriteInFigure8(sprite))
{
ShiftStillObjectEventCoords(objectEvent);
objectEvent->triggerGroundEffectsOnStop = TRUE;
@@ -6888,14 +6894,14 @@ bool8 sub_8095B0C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
bool8 MovementAction_Figure8_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sub_8095AF0(objectEvent, sprite);
+ InitFigure8Anim(objectEvent, sprite);
sprite->data[2] = 1;
return MovementAction_Figure8_Step1(objectEvent, sprite);
}
bool8 MovementAction_Figure8_Step1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (sub_8095B0C(objectEvent, sprite))
+ if (DoFigure8Anim(objectEvent, sprite))
{
sprite->data[2] = 2;
return TRUE;
@@ -8098,33 +8104,33 @@ void GroundEffect_Seaweed(struct ObjectEvent *objEvent, struct Sprite *sprite)
}
static void (*const sGroundEffectFuncs[])(struct ObjectEvent *objEvent, struct Sprite *sprite) = {
- GroundEffect_SpawnOnTallGrass,
- GroundEffect_StepOnTallGrass,
- GroundEffect_SpawnOnLongGrass,
- GroundEffect_StepOnLongGrass,
- GroundEffect_WaterReflection,
- GroundEffect_IceReflection,
- GroundEffect_FlowingWater,
- GroundEffect_SandTracks,
- GroundEffect_DeepSandTracks,
- GroundEffect_Ripple,
- GroundEffect_StepOnPuddle,
- GroundEffect_SandHeap,
- GroundEffect_JumpOnTallGrass,
- GroundEffect_JumpOnLongGrass,
- GroundEffect_JumpOnShallowWater,
- GroundEffect_JumpOnWater,
- GroundEffect_JumpLandingDust,
- GroundEffect_ShortGrass,
- GroundEffect_HotSprings,
- GroundEffect_Seaweed
+ GroundEffect_SpawnOnTallGrass, // GROUND_EFFECT_FLAG_TALL_GRASS_ON_SPAWN
+ GroundEffect_StepOnTallGrass, // GROUND_EFFECT_FLAG_TALL_GRASS_ON_MOVE
+ GroundEffect_SpawnOnLongGrass, // GROUND_EFFECT_FLAG_LONG_GRASS_ON_SPAWN
+ GroundEffect_StepOnLongGrass, // GROUND_EFFECT_FLAG_LONG_GRASS_ON_MOVE
+ GroundEffect_WaterReflection, // GROUND_EFFECT_FLAG_ICE_REFLECTION
+ GroundEffect_IceReflection, // GROUND_EFFECT_FLAG_REFLECTION
+ GroundEffect_FlowingWater, // GROUND_EFFECT_FLAG_SHALLOW_FLOWING_WATER
+ GroundEffect_SandTracks, // GROUND_EFFECT_FLAG_SAND
+ GroundEffect_DeepSandTracks, // GROUND_EFFECT_FLAG_DEEP_SAND
+ GroundEffect_Ripple, // GROUND_EFFECT_FLAG_RIPPLES
+ GroundEffect_StepOnPuddle, // GROUND_EFFECT_FLAG_PUDDLE
+ GroundEffect_SandHeap, // GROUND_EFFECT_FLAG_SAND_PILE
+ GroundEffect_JumpOnTallGrass, // GROUND_EFFECT_FLAG_LAND_IN_TALL_GRASS
+ GroundEffect_JumpOnLongGrass, // GROUND_EFFECT_FLAG_LAND_IN_LONG_GRASS
+ GroundEffect_JumpOnShallowWater, // GROUND_EFFECT_FLAG_LAND_IN_SHALLOW_WATER
+ GroundEffect_JumpOnWater, // GROUND_EFFECT_FLAG_LAND_IN_DEEP_WATER
+ GroundEffect_JumpLandingDust, // GROUND_EFFECT_FLAG_LAND_ON_NORMAL_GROUND
+ GroundEffect_ShortGrass, // GROUND_EFFECT_FLAG_SHORT_GRASS
+ GroundEffect_HotSprings, // GROUND_EFFECT_FLAG_HOT_SPRINGS
+ GroundEffect_Seaweed // GROUND_EFFECT_FLAG_SEAWEED
};
static void DoFlaggedGroundEffects(struct ObjectEvent *objEvent, struct Sprite *sprite, u32 flags)
{
u8 i;
- if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !sub_81D4A58(objEvent))
+ if (ObjectEventIsFarawayIslandMew(objEvent) == TRUE && !ShouldMewShakeGrass(objEvent))
return;
for (i = 0; i < ARRAY_COUNT(sGroundEffectFuncs); i++, flags >>= 1)
@@ -8395,7 +8401,7 @@ bool8 sub_80976EC(struct Sprite *sprite)
return FALSE;
}
-static const s8 gUnknown_0850E772[] = {
+static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = {
1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 1, 2, 2, 1, 2,
2, 1, 2, 2, 1, 2, 1, 1,
@@ -8407,7 +8413,7 @@ static const s8 gUnknown_0850E772[] = {
0, 1, 0, 0, 0, 0, 0, 0,
};
-static const s8 gUnknown_0850E7BA[] = {
+static const s8 sFigure8YOffsets[FIGURE_8_LENGTH] = {
0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 1, 1, 0, 1, 1, 0,
1, 1, 0, 1, 1, 0, 1, 1,
@@ -8419,57 +8425,57 @@ static const s8 gUnknown_0850E7BA[] = {
-1, -1, -1, -1, -1, -1, -1, -2,
};
-s16 sub_8097728(s16 a1)
+s16 GetFigure8YOffset(s16 idx)
{
- return gUnknown_0850E7BA[a1];
+ return sFigure8YOffsets[idx];
}
-s16 sub_809773C(s16 a1)
+s16 GetFigure8XOffset(s16 idx)
{
- return gUnknown_0850E772[a1];
+ return sFigure8XOffsets[idx];
}
-void sub_8097750(struct Sprite *sprite)
+static void InitSpriteForFigure8Anim(struct Sprite *sprite)
{
sprite->data[6] = 0;
sprite->data[7] = 0;
}
-bool8 sub_8097758(struct Sprite *sprite)
+static bool8 AnimateSpriteInFigure8(struct Sprite *sprite)
{
- bool8 result = FALSE;
+ bool8 finished = FALSE;
switch(sprite->data[7])
{
- case 0:
- sprite->pos2.x += sub_809773C(sprite->data[6]);
- sprite->pos2.y += sub_8097728(sprite->data[6]);
- break;
- case 1:
- sprite->pos2.x -= sub_809773C(0x47 - sprite->data[6]);
- sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
- break;
- case 2:
- sprite->pos2.x -= sub_809773C(sprite->data[6]);
- sprite->pos2.y += sub_8097728(sprite->data[6]);
- break;
- case 3:
- sprite->pos2.x += sub_809773C(0x47 - sprite->data[6]);
- sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
- break;
- }
- if(++sprite->data[6] == 0x48)
+ case 0:
+ sprite->pos2.x += GetFigure8XOffset(sprite->data[6]);
+ sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
+ break;
+ case 1:
+ sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ break;
+ case 2:
+ sprite->pos2.x -= GetFigure8XOffset(sprite->data[6]);
+ sprite->pos2.y += GetFigure8YOffset(sprite->data[6]);
+ break;
+ case 3:
+ sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->data[6]);
+ break;
+ }
+ if (++sprite->data[6] == FIGURE_8_LENGTH)
{
sprite->data[6] = 0;
sprite->data[7]++;
}
- if(sprite->data[7] == 0x4)
+ if (sprite->data[7] == 4)
{
sprite->pos2.y = 0;
sprite->pos2.x = 0;
- result = TRUE;
+ finished = TRUE;
}
- return result;
+ return finished;
}
static const s8 gUnknown_0850E802[] = {
@@ -8950,7 +8956,7 @@ void CreateLevitateMovementTask(struct ObjectEvent *objectEvent)
u8 taskId = CreateTask(ApplyLevitateMovement, 0xFF);
struct Task *task = &gTasks[taskId];
- StoreWordInTwoHalfwords(&task->data[0], (u32)objectEvent);
+ StoreWordInTwoHalfwords((u16 *)&task->data[0], (u32)objectEvent);
objectEvent->warpArrowSpriteId = taskId;
task->data[3] = 0xFFFF;
}
@@ -8961,7 +8967,7 @@ static void ApplyLevitateMovement(u8 taskId)
struct Sprite *sprite;
struct Task *task = &gTasks[taskId];
- LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // load the map object pointer.
+ LoadWordFromTwoHalfwords((u16 *)&task->data[0], (u32 *)&objectEvent); // load the map object pointer.
sprite = &gSprites[objectEvent->spriteId];
if(!(task->data[2] & 0x3))
@@ -8978,7 +8984,7 @@ void DestroyExtraMovementTask(u8 taskId)
struct ObjectEvent *objectEvent;
struct Task *task = &gTasks[taskId];
- LoadWordFromTwoHalfwords(&task->data[0], (u32 *)&objectEvent); // unused objectEvent
+ LoadWordFromTwoHalfwords((u16 *)&task->data[0], (u32 *)&objectEvent); // unused objectEvent
DestroyTask(taskId);
}
diff --git a/src/faraway_island.c b/src/faraway_island.c
index 06e47cd21..e3d8444c9 100755
--- a/src/faraway_island.c
+++ b/src/faraway_island.c
@@ -6,32 +6,33 @@
#include "metatile_behavior.h"
#include "sprite.h"
#include "constants/event_objects.h"
+#include "constants/field_effects.h"
#include "constants/maps.h"
#include "constants/metatile_behaviors.h"
-static u8 sub_81D4890(u8);
-static bool8 sub_81D4C14(struct ObjectEvent*, u8);
-static u8 sub_81D4C9C(struct ObjectEvent*, u8);
-static u8 sub_81D4C58(struct ObjectEvent*, u8);
-static u8 sub_81D4CE0(struct ObjectEvent*, u8);
-static u8 sub_81D4D24(u8);
-static bool8 CanMewWalkToCoords(s16, s16);
+static u8 GetValidMewMoveDirection(u8);
+static bool8 ShouldMewMoveNorth(struct ObjectEvent*, u8);
+static bool8 ShouldMewMoveSouth(struct ObjectEvent*, u8);
+static bool8 ShouldMewMoveEast(struct ObjectEvent*, u8);
+static bool8 ShouldMewMoveWest(struct ObjectEvent*, u8);
+static u8 GetRandomMewDirectionCandidate(u8);
+static bool8 CanMewMoveToCoords(s16, s16);
-static EWRAM_DATA u8 sUnknown_0203CF50 = 0;
+static EWRAM_DATA u8 sGrassSpriteId = 0;
static s16 sPlayerToMewDeltaX;
static s16 sPlayerToMewDeltaY;
static u8 sMewDirectionCandidates[4];
-extern const struct SpritePalette gFieldEffectObjectPaletteInfo1;
+extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1;
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
static const s16 sFarawayIslandRockCoords[4][2] =
{
- {21, 16},
- {25, 16},
- {16, 17},
- {20, 20},
+ {14 + 7, 9 + 7},
+ {18 + 7, 9 + 7},
+ { 9 + 7, 10 + 7},
+ {13 + 7, 13 + 7},
};
static u8 GetMewObjectEventId(void)
@@ -41,10 +42,12 @@ static u8 GetMewObjectEventId(void)
return objectEventId;
}
+// When the player enters Faraway Island interior it begins a "hide and seek" minigame where Mew disappears into the grass
+// This function returns the direction Mew will take a step, and is run every time the player takes a step
u32 GetMewMoveDirection(void)
{
u8 i;
- int skip;
+ int mewSafeFromTrap;
struct ObjectEvent *mew = &gObjectEvents[GetMewObjectEventId()];
sPlayerToMewDeltaX = gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x - mew->currentCoords.x;
@@ -52,43 +55,47 @@ u32 GetMewMoveDirection(void)
for (i = 0; i < ARRAY_COUNT(sMewDirectionCandidates); i++)
sMewDirectionCandidates[i] = DIR_NONE;
+ // Player hasn't moved (just facing new direction), don't move
if (gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x == gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x
&& gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y == gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y)
{
return DIR_NONE;
}
+ // Mew is invisible except for every 8th step
if (VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % 8 == 0)
- mew->invisible = 0;
+ mew->invisible = FALSE;
else
- mew->invisible = 1;
+ mew->invisible = TRUE;
+ // Mew will stay in place for 1 step after its visible
if (VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % 9 == 0)
return DIR_NONE;
+ // Below loop is for Mew to try to avoid getting trapped between the player and a rock
for (i = 0; i < ARRAY_COUNT(sFarawayIslandRockCoords); i++)
{
if (gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x == sFarawayIslandRockCoords[i][0])
{
- skip = 0;
+ mewSafeFromTrap = FALSE;
if (gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y < sFarawayIslandRockCoords[i][1])
{
if (mew->currentCoords.y <= sFarawayIslandRockCoords[i][1])
- skip = 1;
+ mewSafeFromTrap = TRUE;
}
else
{
if (mew->currentCoords.y >= sFarawayIslandRockCoords[i][1])
- skip = 1;
+ mewSafeFromTrap = TRUE;
}
- if (!skip)
+ if (!mewSafeFromTrap)
{
if (sPlayerToMewDeltaX > 0)
{
if (mew->currentCoords.x + 1 == gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x)
{
- if (CanMewWalkToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
return DIR_EAST;
}
}
@@ -96,7 +103,7 @@ u32 GetMewMoveDirection(void)
{
if (mew->currentCoords.x - 1 == gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x)
{
- if (CanMewWalkToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
return DIR_WEST;
}
}
@@ -105,12 +112,12 @@ u32 GetMewMoveDirection(void)
{
if (sPlayerToMewDeltaY > 0)
{
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
return DIR_NORTH;
}
else
{
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
return DIR_SOUTH;
}
}
@@ -119,25 +126,25 @@ u32 GetMewMoveDirection(void)
if (gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y == sFarawayIslandRockCoords[i][1])
{
- skip = 0;
+ mewSafeFromTrap = FALSE;
if (gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.x < sFarawayIslandRockCoords[i][0])
{
if (mew->currentCoords.x <= sFarawayIslandRockCoords[i][0])
- skip = 1;
+ mewSafeFromTrap = TRUE;
}
else
{
if (mew->currentCoords.x >= sFarawayIslandRockCoords[i][0])
- skip = 1;
+ mewSafeFromTrap = TRUE;
}
- if (!skip)
+ if (!mewSafeFromTrap)
{
if (sPlayerToMewDeltaY > 0)
{
if (mew->currentCoords.y + 1 == gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y)
{
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
return DIR_SOUTH;
}
}
@@ -145,7 +152,7 @@ u32 GetMewMoveDirection(void)
{
if (mew->currentCoords.y - 1 == gObjectEvents[gPlayerAvatar.objectEventId].previousCoords.y)
{
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
return DIR_NORTH;
}
}
@@ -154,12 +161,12 @@ u32 GetMewMoveDirection(void)
{
if (sPlayerToMewDeltaX > 0)
{
- if (CanMewWalkToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
return DIR_WEST;
}
else
{
- if (CanMewWalkToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
return DIR_EAST;
}
}
@@ -167,92 +174,101 @@ u32 GetMewMoveDirection(void)
}
}
- if (sub_81D4C14(mew, 0))
+ // Check if Mew can move in any direction without getting closer to the player
+ // If so load into sMewDirectionCandidates
+ // If Mew can move in two of the checked directions, choose one randomly
+ if (ShouldMewMoveNorth(mew, 0))
{
- if (sub_81D4C58(mew, 1))
- return sub_81D4D24(2);
- else if (sub_81D4CE0(mew, 1))
- return sub_81D4D24(2);
+ if (ShouldMewMoveEast(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
+ else if (ShouldMewMoveWest(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
else
return DIR_NORTH;
}
- if (sub_81D4C9C(mew, 0))
+ if (ShouldMewMoveSouth(mew, 0))
{
- if (sub_81D4C58(mew, 1))
- return sub_81D4D24(2);
- else if (sub_81D4CE0(mew, 1))
- return sub_81D4D24(2);
+ if (ShouldMewMoveEast(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
+ else if (ShouldMewMoveWest(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
else
return DIR_SOUTH;
}
- if (sub_81D4C58(mew, 0))
+ if (ShouldMewMoveEast(mew, 0))
{
- if (sub_81D4C14(mew, 1))
- return sub_81D4D24(2);
- else if (sub_81D4C9C(mew, 1))
- return sub_81D4D24(2);
+ if (ShouldMewMoveNorth(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
+ else if (ShouldMewMoveSouth(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
else
return DIR_EAST;
}
- if (sub_81D4CE0(mew, 0))
+ if (ShouldMewMoveWest(mew, 0))
{
- if (sub_81D4C14(mew, 1))
- return sub_81D4D24(2);
- else if (sub_81D4C9C(mew, 1))
- return sub_81D4D24(2);
+ if (ShouldMewMoveNorth(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
+ else if (ShouldMewMoveSouth(mew, 1))
+ return GetRandomMewDirectionCandidate(2);
else
return DIR_WEST;
}
+ // If this point is reached, Mew cannot move without getting closer to the player
+
+ // Avoid player on same Y, try move North/South
if (sPlayerToMewDeltaY == 0)
{
if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y > mew->currentCoords.y)
{
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
return DIR_NORTH;
}
if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y < mew->currentCoords.y)
{
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
return DIR_SOUTH;
}
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
return DIR_NORTH;
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
return DIR_SOUTH;
}
+ // Avoid player on same X, try move West/East
if (sPlayerToMewDeltaX == 0)
{
if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x > mew->currentCoords.x)
{
- if (CanMewWalkToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
return DIR_WEST;
}
if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x < mew->currentCoords.x)
{
- if (CanMewWalkToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
return DIR_EAST;
}
- if (CanMewWalkToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
return DIR_EAST;
- if (CanMewWalkToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
+ if (CanMewMoveToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
return DIR_WEST;
}
- return sub_81D4890(DIR_NONE);
+ // Can't avoid player on axis, move any valid direction
+ return GetValidMewMoveDirection(DIR_NONE);
}
-static bool8 CanMewWalkToCoords(s16 x, s16 y)
+// Mew can move to any Tall/Long Grass metatile the player isn't currently on
+static bool8 CanMewMoveToCoords(s16 x, s16 y)
{
if (gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.x == x
&& gObjectEvents[gPlayerAvatar.objectEventId].currentCoords.y == y)
@@ -263,7 +279,8 @@ static bool8 CanMewWalkToCoords(s16 x, s16 y)
return MetatileBehavior_IsPokeGrass(MapGridGetMetatileBehaviorAt(x, y));
}
-static u8 sub_81D4890(u8 ignoredDir)
+// Last ditch effort to move, clear move candidates and try all directions again
+static u8 GetValidMewMoveDirection(u8 ignoredDir)
{
u8 i;
u8 count = 0;
@@ -272,25 +289,25 @@ static u8 sub_81D4890(u8 ignoredDir)
for (i = 0; i < ARRAY_COUNT(sMewDirectionCandidates); i++)
sMewDirectionCandidates[i] = DIR_NONE;
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y - 1) == TRUE && ignoredDir != DIR_NORTH)
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y - 1) == TRUE && ignoredDir != DIR_NORTH)
{
sMewDirectionCandidates[count] = DIR_NORTH;
count++;
}
- if (CanMewWalkToCoords(mew->currentCoords.x + 1, mew->currentCoords.y) == TRUE && ignoredDir != DIR_EAST)
+ if (CanMewMoveToCoords(mew->currentCoords.x + 1, mew->currentCoords.y) == TRUE && ignoredDir != DIR_EAST)
{
sMewDirectionCandidates[count] = DIR_EAST;
count++;
}
- if (CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y + 1) == TRUE && ignoredDir != DIR_SOUTH)
+ if (CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y + 1) == TRUE && ignoredDir != DIR_SOUTH)
{
sMewDirectionCandidates[count] = DIR_SOUTH;
count++;
}
- if (CanMewWalkToCoords(mew->currentCoords.x - 1, mew->currentCoords.y) == TRUE && ignoredDir != DIR_WEST)
+ if (CanMewMoveToCoords(mew->currentCoords.x - 1, mew->currentCoords.y) == TRUE && ignoredDir != DIR_WEST)
{
sMewDirectionCandidates[count] = DIR_WEST;
count++;
@@ -340,7 +357,9 @@ bool8 IsMewPlayingHideAndSeek(void)
return FALSE;
}
-bool8 sub_81D4A58(struct ObjectEvent *objectEvent)
+// Every 4th step Mew will shake the grass it steps into
+// Otherwise its movement leaves grass undisturbed
+bool8 ShouldMewShakeGrass(struct ObjectEvent *objectEvent)
{
if (VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) != 0xFFFF
&& VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % 4 == 0)
@@ -349,38 +368,41 @@ bool8 sub_81D4A58(struct ObjectEvent *objectEvent)
return FALSE;
}
-void sub_81D4A90(void)
+void SetMewAboveGrass(void)
{
s16 x;
s16 y;
u8 spriteId;
struct ObjectEvent *mew = &gObjectEvents[GetMewObjectEventId()];
- mew->invisible = 0;
+ mew->invisible = FALSE;
if (gSpecialVar_0x8004 == 1)
{
+ // For after battle where Mew should still be present (e.g. if ran from battle)
mew->fixedPriority = 1;
gSprites[mew->spriteId].subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
gSprites[mew->spriteId].subpriority = 1;
}
else
{
+ // Mew emerging from grass when found
+ // Also do field effect for grass shaking as it emerges
VarSet(VAR_FARAWAY_ISLAND_STEP_COUNTER, 0xFFFF);
mew->fixedPriority = 1;
gSprites[mew->spriteId].subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
if (gSpecialVar_Facing != DIR_NORTH)
gSprites[mew->spriteId].subpriority = 1;
- LoadSpritePalette(&gFieldEffectObjectPaletteInfo1);
- UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(gFieldEffectObjectPaletteInfo1.tag));
+ LoadSpritePalette(&gSpritePalette_GeneralFieldEffect1);
+ UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(gSpritePalette_GeneralFieldEffect1.tag));
x = mew->currentCoords.x;
y = mew->currentCoords.y;
SetSpritePosToOffsetMapCoords(&x, &y, 8, 8);
- sUnknown_0203CF50 = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, gSprites[mew->spriteId].subpriority - 1);
- if (sUnknown_0203CF50 != MAX_SPRITES)
+ sGrassSpriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_LONG_GRASS], x, y, gSprites[mew->spriteId].subpriority - 1);
+ if (sGrassSpriteId != MAX_SPRITES)
{
- struct Sprite *sprite = &gSprites[sUnknown_0203CF50];
+ struct Sprite *sprite = &gSprites[sGrassSpriteId];
sprite->coordOffsetEnabled = 1;
sprite->oam.priority = 2;
sprite->callback = SpriteCallbackDummy;
@@ -388,15 +410,15 @@ void sub_81D4A90(void)
}
}
-void sub_81D4BEC(void)
+void DestroyMewEmergingGrassSprite(void)
{
- if (sUnknown_0203CF50 != MAX_SPRITES)
- DestroySprite(&gSprites[sUnknown_0203CF50]);
+ if (sGrassSpriteId != MAX_SPRITES)
+ DestroySprite(&gSprites[sGrassSpriteId]);
}
-static bool8 sub_81D4C14(struct ObjectEvent *mew, u8 index)
+static bool8 ShouldMewMoveNorth(struct ObjectEvent *mew, u8 index)
{
- if (sPlayerToMewDeltaY > 0 && CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
+ if (sPlayerToMewDeltaY > 0 && CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y - 1))
{
sMewDirectionCandidates[index] = DIR_NORTH;
return TRUE;
@@ -405,9 +427,9 @@ static bool8 sub_81D4C14(struct ObjectEvent *mew, u8 index)
return FALSE;
}
-static u8 sub_81D4C58(struct ObjectEvent *mew, u8 index)
+static bool8 ShouldMewMoveEast(struct ObjectEvent *mew, u8 index)
{
- if (sPlayerToMewDeltaX < 0 && CanMewWalkToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
+ if (sPlayerToMewDeltaX < 0 && CanMewMoveToCoords(mew->currentCoords.x + 1, mew->currentCoords.y))
{
sMewDirectionCandidates[index] = DIR_EAST;
return TRUE;
@@ -416,9 +438,9 @@ static u8 sub_81D4C58(struct ObjectEvent *mew, u8 index)
return FALSE;
}
-static u8 sub_81D4C9C(struct ObjectEvent *mew, u8 index)
+static bool8 ShouldMewMoveSouth(struct ObjectEvent *mew, u8 index)
{
- if (sPlayerToMewDeltaY < 0 && CanMewWalkToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
+ if (sPlayerToMewDeltaY < 0 && CanMewMoveToCoords(mew->currentCoords.x, mew->currentCoords.y + 1))
{
sMewDirectionCandidates[index] = DIR_SOUTH;
return TRUE;
@@ -427,9 +449,9 @@ static u8 sub_81D4C9C(struct ObjectEvent *mew, u8 index)
return FALSE;
}
-static u8 sub_81D4CE0(struct ObjectEvent *mew, u8 index)
+static bool8 ShouldMewMoveWest(struct ObjectEvent *mew, u8 index)
{
- if (sPlayerToMewDeltaX > 0 && CanMewWalkToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
+ if (sPlayerToMewDeltaX > 0 && CanMewMoveToCoords(mew->currentCoords.x - 1, mew->currentCoords.y))
{
sMewDirectionCandidates[index] = DIR_WEST;
return TRUE;
@@ -438,7 +460,7 @@ static u8 sub_81D4CE0(struct ObjectEvent *mew, u8 index)
return FALSE;
}
-static u8 sub_81D4D24(u8 mod)
+static u8 GetRandomMewDirectionCandidate(u8 numDirections)
{
- return sMewDirectionCandidates[VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % mod];
+ return sMewDirectionCandidates[VarGet(VAR_FARAWAY_ISLAND_STEP_COUNTER) % numDirections];
}
diff --git a/src/field_camera.c b/src/field_camera.c
index 038b6932e..57be52221 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -39,7 +39,7 @@ static void CameraPanningCB_PanAhead(void);
static struct FieldCameraOffset sFieldCameraOffset;
static s16 sHorizontalCameraPan;
static s16 sVerticalCameraPan;
-static u8 gUnknown_03000E2C;
+static bool8 gUnknown_03000E2C;
static void (*sFieldCameraPanningCallback)(void);
struct CameraObject gFieldCamera;
@@ -47,7 +47,7 @@ u16 gTotalCameraPixelOffsetY;
u16 gTotalCameraPixelOffsetX;
// text
-static void move_tilemap_camera_to_upper_left_corner_(struct FieldCameraOffset *cameraOffset)
+static void ResetCameraOffset(struct FieldCameraOffset *cameraOffset)
{
cameraOffset->xTileOffset = 0;
cameraOffset->yTileOffset = 0;
@@ -56,23 +56,23 @@ static void move_tilemap_camera_to_upper_left_corner_(struct FieldCameraOffset *
cameraOffset->copyBGToVRAM = TRUE;
}
-static void tilemap_move_something(struct FieldCameraOffset *cameraOffset, u32 b, u32 c)
+static void AddCameraTileOffset(struct FieldCameraOffset *cameraOffset, u32 xOffset, u32 yOffset)
{
- cameraOffset->xTileOffset += b;
+ cameraOffset->xTileOffset += xOffset;
cameraOffset->xTileOffset %= 32;
- cameraOffset->yTileOffset += c;
+ cameraOffset->yTileOffset += yOffset;
cameraOffset->yTileOffset %= 32;
}
-static void coords8_add(struct FieldCameraOffset *cameraOffset, u32 b, u32 c)
+static void AddCameraPixelOffset(struct FieldCameraOffset *cameraOffset, u32 xOffset, u32 yOffset)
{
- cameraOffset->xPixelOffset += b;
- cameraOffset->yPixelOffset += c;
+ cameraOffset->xPixelOffset += xOffset;
+ cameraOffset->yPixelOffset += yOffset;
}
-void move_tilemap_camera_to_upper_left_corner(void)
+void ResetFieldCamera(void)
{
- move_tilemap_camera_to_upper_left_corner_(&sFieldCameraOffset);
+ ResetCameraOffset(&sFieldCameraOffset);
}
void FieldUpdateBgTilemapScroll(void)
@@ -89,10 +89,10 @@ void FieldUpdateBgTilemapScroll(void)
SetGpuReg(REG_OFFSET_BG3VOFS, r4);
}
-void sub_8089C08(s16 *a, s16 *b)
+void sub_8089C08(s16 *x, s16 *y)
{
- *a = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
- *b = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
+ *x = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
+ *y = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
}
void DrawWholeMapView(void)
@@ -418,11 +418,11 @@ void CameraUpdate(void)
UpdateObjectEventsForCameraUpdate(deltaX, deltaY);
RotatingGatePuzzleCameraUpdate(deltaX, deltaY);
ResetBerryTreeSparkleFlags();
- tilemap_move_something(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
+ AddCameraTileOffset(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
RedrawMapSlicesForCameraUpdate(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
}
- coords8_add(&sFieldCameraOffset, movementSpeedX, movementSpeedY);
+ AddCameraPixelOffset(&sFieldCameraOffset, movementSpeedX, movementSpeedY);
gTotalCameraPixelOffsetX -= movementSpeedX;
gTotalCameraPixelOffsetY -= movementSpeedY;
}
@@ -436,9 +436,9 @@ void MoveCameraAndRedrawMap(int deltaX, int deltaY) //unused
gTotalCameraPixelOffsetY -= deltaY * 16;
}
-void SetCameraPanningCallback(void (*a)(void))
+void SetCameraPanningCallback(void (*callback)(void))
{
- sFieldCameraPanningCallback = a;
+ sFieldCameraPanningCallback = callback;
}
void SetCameraPanning(s16 a, s16 b)
@@ -450,7 +450,7 @@ void SetCameraPanning(s16 a, s16 b)
void InstallCameraPanAheadCallback(void)
{
sFieldCameraPanningCallback = CameraPanningCB_PanAhead;
- gUnknown_03000E2C = 0;
+ gUnknown_03000E2C = FALSE;
sHorizontalCameraPan = 0;
sVerticalCameraPan = 32;
}
@@ -478,12 +478,12 @@ static void CameraPanningCB_PanAhead(void)
if (gPlayerAvatar.tileTransitionState == T_TILE_TRANSITION)
{
gUnknown_03000E2C ^= 1;
- if (gUnknown_03000E2C == 0)
+ if (gUnknown_03000E2C == FALSE)
return;
}
else
{
- gUnknown_03000E2C = 0;
+ gUnknown_03000E2C = FALSE;
}
var = GetPlayerMovementDirection();
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index e41b5a69a..3684b53e6 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -545,7 +545,7 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior)
UpdateHappinessStepCounter();
UpdateFarawayIslandStepCounter();
- if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
+ if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED_MOVE) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
{
if (UpdatePoisonStepCounter() == TRUE)
{
@@ -725,7 +725,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB
}
if (MetatileBehavior_IsAquaHideoutWarp(metatileBehavior) == TRUE)
{
- DoTeleportWarp();
+ DoTeleportTileWarp();
return TRUE;
}
if (MetatileBehavior_IsWarpOrBridge(metatileBehavior) == TRUE)
@@ -938,7 +938,7 @@ static struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader,
return NULL;
}
-bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
+bool8 TryDoDiveWarp(struct MapPosition *position, u16 metatileBehavior)
{
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
{
diff --git a/src/field_effect.c b/src/field_effect.c
index 07579f55d..582551a7e 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -39,195 +39,197 @@ EWRAM_DATA s32 gFieldEffectArguments[8] = {0};
// Static type declarations
static void Task_PokecenterHeal(u8 taskId);
-static void PokecenterHealEffect_0(struct Task *);
-static void PokecenterHealEffect_1(struct Task *);
-static void PokecenterHealEffect_2(struct Task *);
-static void PokecenterHealEffect_3(struct Task *);
+static void PokecenterHealEffect_Init(struct Task *);
+static void PokecenterHealEffect_WaitForBallPlacement(struct Task *);
+static void PokecenterHealEffect_WaitForBallFlashing(struct Task *);
+static void PokecenterHealEffect_WaitForSoundAndEnd(struct Task *);
+static u8 CreatePokecenterMonitorSprite(s16, s16);
+static void SpriteCB_PokecenterMonitor(struct Sprite *);
static void Task_HallOfFameRecord(u8 taskId);
-static void HallOfFameRecordEffect_0(struct Task *);
-static void HallOfFameRecordEffect_1(struct Task *);
-static void HallOfFameRecordEffect_2(struct Task *);
-static void HallOfFameRecordEffect_3(struct Task *);
-
-static u8 CreatePokeballGlowSprite(s16, s16, s16, u16);
+static void HallOfFameRecordEffect_Init(struct Task *);
+static void HallOfFameRecordEffect_WaitForBallPlacement(struct Task *);
+static void HallOfFameRecordEffect_WaitForBallFlashing(struct Task *);
+static void HallOfFameRecordEffect_WaitForSoundAndEnd(struct Task *);
+static void CreateHofMonitorSprite(s16, s16, s16, bool8);
+static void SpriteCB_HallOfFameMonitor(struct Sprite *);
+
+static u8 CreateGlowingPokeballsEffect(s16, s16, s16, bool16);
static void SpriteCB_PokeballGlowEffect(struct Sprite *);
-static void PokeballGlowEffect_0(struct Sprite *);
-static void PokeballGlowEffect_1(struct Sprite *);
-static void PokeballGlowEffect_2(struct Sprite *);
-static void PokeballGlowEffect_3(struct Sprite *);
-static void PokeballGlowEffect_4(struct Sprite *);
-static void PokeballGlowEffect_5(struct Sprite *);
-static void PokeballGlowEffect_6(struct Sprite *);
-static void PokeballGlowEffect_7(struct Sprite *);
-
-static u8 PokecenterHealEffectHelper(s16, s16);
-static void HallOfFameRecordEffectHelper(s16, s16, s16, u8);
-
-static void FieldCallback_Fly(void);
-static void task00_8084310(u8);
-static void mapldr_08084390(void);
-static void c3_080843F8(u8);
+static void PokeballGlowEffect_PlaceBalls(struct Sprite *);
+static void PokeballGlowEffect_TryPlaySe(struct Sprite *);
+static void PokeballGlowEffect_Flash1(struct Sprite *);
+static void PokeballGlowEffect_Flash2(struct Sprite *);
+static void PokeballGlowEffect_WaitAfterFlash(struct Sprite *);
+static void PokeballGlowEffect_Dummy(struct Sprite *);
+static void PokeballGlowEffect_WaitForSound(struct Sprite *);
+static void PokeballGlowEffect_Idle(struct Sprite *);
+static void SpriteCB_PokeballGlow(struct Sprite *);
+
+static void FieldCallback_UseFly(void);
+static void Task_UseFly(u8);
+static void FieldCallback_FlyIntoMap(void);
+static void Task_FlyIntoMap(u8);
static void Task_FallWarpFieldEffect(u8);
-static bool8 FallWarpEffect_1(struct Task *);
-static bool8 FallWarpEffect_2(struct Task *);
-static bool8 FallWarpEffect_3(struct Task *);
-static bool8 FallWarpEffect_4(struct Task *);
-static bool8 FallWarpEffect_5(struct Task *);
-static bool8 FallWarpEffect_6(struct Task *);
-static bool8 FallWarpEffect_7(struct Task *);
-
-static void Task_EscalatorWarpFieldEffect(u8);
-static bool8 EscalatorWarpEffect_1(struct Task *);
-static bool8 EscalatorWarpEffect_2(struct Task *);
-static bool8 EscalatorWarpEffect_3(struct Task *);
-static bool8 EscalatorWarpEffect_4(struct Task *);
-static bool8 EscalatorWarpEffect_5(struct Task *);
-static bool8 EscalatorWarpEffect_6(struct Task *);
-
-static void sub_80B6FB8(struct Task *);
-static void sub_80B7004(struct Task *);
-static void sub_80B7050(void);
-static void sub_80B7060(void);
-static void sub_80B70B4(void);
-static void sub_80B70DC(u8);
-
-static bool8 sub_80B7114(struct Task *);
-static bool8 sub_80B7190(struct Task *);
-static bool8 sub_80B71D0(struct Task *);
-static bool8 sub_80B7230(struct Task *);
-static bool8 sub_80B7270(struct Task *);
-static bool8 sub_80B72D0(struct Task *);
-static bool8 sub_80B72F4(struct Task *);
-
-static void sub_80B7384(u8);
-static bool8 sub_80B73D0(struct Task *, struct ObjectEvent *);
-static bool8 waterfall_1_do_anim_probably(struct Task *, struct ObjectEvent *);
-static bool8 waterfall_2_wait_anim_finish_probably(struct Task *, struct ObjectEvent *);
-static bool8 sub_80B7450(struct Task *, struct ObjectEvent *);
-static bool8 sub_80B7478(struct Task *, struct ObjectEvent *);
-
-static void Task_Dive(u8);
-static bool8 dive_1_lock(struct Task *);
-static bool8 dive_2_unknown(struct Task *);
-static bool8 dive_3_unknown(struct Task *);
+static bool8 FallWarpEffect_Init(struct Task *);
+static bool8 FallWarpEffect_WaitWeather(struct Task *);
+static bool8 FallWarpEffect_StartFall(struct Task *);
+static bool8 FallWarpEffect_Fall(struct Task *);
+static bool8 FallWarpEffect_Land(struct Task *);
+static bool8 FallWarpEffect_CameraShake(struct Task *);
+static bool8 FallWarpEffect_End(struct Task *);
+
+static void Task_EscalatorWarpOut(u8);
+static bool8 EscalatorWarpOut_Init(struct Task *);
+static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *);
+static bool8 EscalatorWarpOut_Up_Ride(struct Task *);
+static bool8 EscalatorWarpOut_Up_End(struct Task *);
+static bool8 EscalatorWarpOut_Down_Ride(struct Task *);
+static bool8 EscalatorWarpOut_Down_End(struct Task *);
+static void RideUpEscalatorOut(struct Task *);
+static void RideDownEscalatorOut(struct Task *);
+static void FadeOutAtEndOfEscalator(void);
+static void WarpAtEndOfEscalator(void);
+
+static void FieldCallback_EscalatorWarpIn(void);
+static void Task_EscalatorWarpIn(u8);
+static bool8 EscalatorWarpIn_Init(struct Task *);
+static bool8 EscalatorWarpIn_Down_Init(struct Task *);
+static bool8 EscalatorWarpIn_Down_Ride(struct Task *);
+static bool8 EscalatorWarpIn_Up_Init(struct Task *);
+static bool8 EscalatorWarpIn_Up_Ride(struct Task *);
+static bool8 EscalatorWarpIn_WaitForMovement(struct Task *);
+static bool8 EscalatorWarpIn_End(struct Task *);
+
+static void Task_UseWaterfall(u8);
+static bool8 WaterfallFieldEffect_Init(struct Task *, struct ObjectEvent *);
+static bool8 WaterfallFieldEffect_ShowMon(struct Task *, struct ObjectEvent *);
+static bool8 WaterfallFieldEffect_WaitForShowMon(struct Task *, struct ObjectEvent *);
+static bool8 WaterfallFieldEffect_RideUp(struct Task *, struct ObjectEvent *);
+static bool8 WaterfallFieldEffect_ContinueRideOrEnd(struct Task *, struct ObjectEvent *);
+
+static void Task_UseDive(u8);
+static bool8 DiveFieldEffect_Init(struct Task *);
+static bool8 DiveFieldEffect_ShowMon(struct Task *);
+static bool8 DiveFieldEffect_TryWarp(struct Task *);
static void Task_LavaridgeGymB1FWarp(u8);
-static bool8 LavaridgeGymB1FWarpEffect_1(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpEffect_2(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpEffect_3(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpEffect_4(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpEffect_5(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpEffect_6(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpEffect_CameraShake(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpEffect_Launch(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpEffect_Rise(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpEffect_FadeOut(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpEffect_Warp(struct Task *, struct ObjectEvent *, struct Sprite *);
static void FieldCB_LavaridgeGymB1FWarpExit(void);
static void Task_LavaridgeGymB1FWarpExit(u8);
-static bool8 LavaridgeGymB1FWarpExitEffect_1(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpExitEffect_2(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpExitEffect_Init(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpExitEffect_StartPopOut(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpExitEffect_PopOut(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGymB1FWarpExitEffect_End(struct Task *, struct ObjectEvent *, struct Sprite *);
static void Task_LavaridgeGym1FWarp(u8);
-static bool8 LavaridgeGym1FWarpEffect_1(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGym1FWarpEffect_2(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGym1FWarpEffect_3(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGym1FWarpEffect_4(struct Task *, struct ObjectEvent *, struct Sprite *);
-static bool8 LavaridgeGym1FWarpEffect_5(struct Task *, struct ObjectEvent *, struct Sprite *);
-
-static void DoEscapeRopeFieldEffect(u8);
-static void EscapeRopeFieldEffect_Step0(struct Task *);
-static void EscapeRopeFieldEffect_Step1(struct Task *);
-
-static void mapldr_080859D4(void);
-static void sub_80B7E94(u8);
-
-static void sub_80B7EC4(struct Task *);
-static void sub_80B7EE8(struct Task *);
-
-static void ExecuteTeleportFieldEffectTask(u8);
-static void TeleportFieldEffectTask1(struct Task*);
-static void TeleportFieldEffectTask2(struct Task*);
-static void TeleportFieldEffectTask3(struct Task*);
-static void TeleportFieldEffectTask4(struct Task*);
-
-static void mapldr_08085D88(void);
-static void sub_80B8250(u8);
-
-static void sub_80B8280(struct Task *);
-static void sub_80B830C(struct Task *);
-static void sub_80B8410(struct Task *);
-
-static void sub_80B8554(u8);
-static void sub_80B8584(struct Task *);
-static void sub_80B85F8(struct Task *);
-static void sub_80B8660(struct Task *);
-static void sub_80B86EC(struct Task *);
-static void sub_80B871C(struct Task *);
-static void sub_80B8770(struct Task *);
-static void overworld_bg_setup_2(struct Task *);
-
-static void sub_80B880C(void);
-static void sub_80B8874(u16);
-
-static void sub_80B88B4(u8);
-static void sub_80B88E4(struct Task *);
-static void sub_80B8920(struct Task *);
-static void sub_80B898C(struct Task *);
-static void sub_80B89DC(struct Task *);
-static void sub_80B8A0C(struct Task *);
-static void sub_80B8A44(struct Task *);
-static void sub_80B8A64(struct Task *);
-
-static void sub_80B8AE0(void);
-static void sub_80B8B28(struct Task *);
-static bool8 sub_80B8B38(struct Task *);
-static bool8 sub_80B8BF0(struct Task *);
-
-static u8 sub_80B8C60(u32, u32, u32);
-static void sub_80B8CC0(struct Sprite *);
-static void sub_80B8D04(struct Sprite *);
-static void sub_80B8D20(struct Sprite *);
-
-static void sub_80B8D84(u8);
-static void sub_80B8DB4(struct Task *);
-static void sub_80B8E14(struct Task *);
-static void sub_80B8E60(struct Task *);
-static void sub_80B8EA8(struct Task *);
-static void sub_80B8F24(struct Task *);
-
-static void sub_80B9128(struct Sprite *);
-
-static void sub_80B91D4(u8);
-static void sub_80B9204(struct Task *);
-static void sub_80B925C(struct Task *);
-static void sub_80B92A0(struct Task *);
-static void sub_80B92F8(struct Task *);
-static void sub_80B933C(struct Task *);
-static void sub_80B9390(struct Task *);
-static void sub_80B9418(struct Task *);
-static void sub_80B9474(struct Task *);
-static void sub_80B9494(struct Task *);
-
-static u8 sub_80B94C4(void);
-static u8 sub_80B9508(u8);
-static void sub_80B9524(u8);
-static void sub_80B9560(u8, u8);
-static void sub_80B957C(struct Sprite *);
-static void sub_80B963C(struct Sprite *);
-
-static void sub_80B97D4(u8);
-static void sub_80B9804(struct Task *);
-static void sub_80B98B8(struct Task *);
-static void sub_80B9924(struct Task *);
-static void sub_80B9978(struct Task *);
-static void sub_80B99F0(struct Task *);
-static void sub_80B9A28(struct Task *);
-static void sub_80B9A60(struct Task *);
-
-static void sub_80B9BE8(u8 taskId);
-static void sub_80B9DB8(struct Sprite* sprite);
-static void Fldeff_MoveDeoxysRock_Step(u8 taskId);
+static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGym1FWarpEffect_AshPuff(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGym1FWarpEffect_Disappear(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGym1FWarpEffect_FadeOut(struct Task *, struct ObjectEvent *, struct Sprite *);
+static bool8 LavaridgeGym1FWarpEffect_Warp(struct Task *, struct ObjectEvent *, struct Sprite *);
+
+static void Task_EscapeRopeWarpOut(u8);
+static void EscapeRopeWarpOutEffect_Init(struct Task *);
+static void EscapeRopeWarpOutEffect_Spin(struct Task *);
+
+static void FieldCallback_EscapeRopeWarpIn(void);
+static void Task_EscapeRopeWarpIn(u8);
+static void EscapeRopeWarpInEffect_Init(struct Task *);
+static void EscapeRopeWarpInEffect_Spin(struct Task *);
+
+static void Task_TeleportWarpOut(u8);
+static void TeleportWarpOutFieldEffect_Init(struct Task*);
+static void TeleportWarpOutFieldEffect_SpinGround(struct Task*);
+static void TeleportWarpOutFieldEffect_SpinExit(struct Task*);
+static void TeleportWarpOutFieldEffect_End(struct Task*);
+
+static void FieldCallback_TeleportWarpIn(void);
+static void Task_TeleportWarpIn(u8);
+static void TeleportWarpInFieldEffect_Init(struct Task *);
+static void TeleportWarpInFieldEffect_SpinEnter(struct Task *);
+static void TeleportWarpInFieldEffect_SpinGround(struct Task *);
+
+static void Task_FieldMoveShowMonOutdoors(u8);
+static void FieldMoveShowMonOutdoorsEffect_Init(struct Task *);
+static void FieldMoveShowMonOutdoorsEffect_LoadGfx(struct Task *);
+static void FieldMoveShowMonOutdoorsEffect_CreateBanner(struct Task *);
+static void FieldMoveShowMonOutdoorsEffect_WaitForMon(struct Task *);
+static void FieldMoveShowMonOutdoorsEffect_ShrinkBanner(struct Task *);
+static void FieldMoveShowMonOutdoorsEffect_RestoreBg(struct Task *);
+static void FieldMoveShowMonOutdoorsEffect_End(struct Task *);
+static void VBlankCB_FieldMoveShowMonOutdoors(void);
+static void LoadFieldMoveOutdoorStreaksTilemap(u16);
+
+static void Task_FieldMoveShowMonIndoors(u8);
+static void FieldMoveShowMonIndoorsEffect_Init(struct Task *);
+static void FieldMoveShowMonIndoorsEffect_LoadGfx(struct Task *);
+static void FieldMoveShowMonIndoorsEffect_SlideBannerOn(struct Task *);
+static void FieldMoveShowMonIndoorsEffect_WaitForMon(struct Task *);
+static void FieldMoveShowMonIndoorsEffect_RestoreBg(struct Task *);
+static void FieldMoveShowMonIndoorsEffect_SlideBannerOff(struct Task *);
+static void FieldMoveShowMonIndoorsEffect_End(struct Task *);
+static void VBlankCB_FieldMoveShowMonIndoors(void);
+static void AnimateIndoorShowMonBg(struct Task *);
+static bool8 SlideIndoorBannerOnscreen(struct Task *);
+static bool8 SlideIndoorBannerOffscreen(struct Task *);
+
+static u8 InitFieldMoveMonSprite(u32, u32, u32);
+static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite *);
+static void SpriteCB_FieldMoveMonWaitAfterCry(struct Sprite *);
+static void SpriteCB_FieldMoveMonSlideOffscreen(struct Sprite *);
+
+static void Task_SurfFieldEffect(u8);
+static void SurfFieldEffect_Init(struct Task *);
+static void SurfFieldEffect_FieldMovePose(struct Task *);
+static void SurfFieldEffect_ShowMon(struct Task *);
+static void SurfFieldEffect_JumpOnSurfBlob(struct Task *);
+static void SurfFieldEffect_End(struct Task *);
+
+static void SpriteCB_NPCFlyOut(struct Sprite *);
+
+static void Task_FlyOut(u8);
+static void FlyOutFieldEffect_FieldMovePose(struct Task *);
+static void FlyOutFieldEffect_ShowMon(struct Task *);
+static void FlyOutFieldEffect_BirdLeaveBall(struct Task *);
+static void FlyOutFieldEffect_WaitBirdLeave(struct Task *);
+static void FlyOutFieldEffect_BirdSwoopDown(struct Task *);
+static void FlyOutFieldEffect_JumpOnBird(struct Task *);
+static void FlyOutFieldEffect_FlyOffWithBird(struct Task *);
+static void FlyOutFieldEffect_WaitFlyOff(struct Task *);
+static void FlyOutFieldEffect_End(struct Task *);
+
+static u8 CreateFlyBirdSprite(void);
+static u8 GetFlyBirdAnimCompleted(u8);
+static void StartFlyBirdSwoopDown(u8);
+static void SetFlyBirdPlayerSpriteId(u8, u8);
+static void SpriteCB_FlyBirdLeaveBall(struct Sprite *);
+static void SpriteCB_FlyBirdSwoopDown(struct Sprite *);
+
+static void Task_FlyIn(u8);
+static void FlyInFieldEffect_BirdSwoopDown(struct Task *);
+static void FlyInFieldEffect_FlyInWithBird(struct Task *);
+static void FlyInFieldEffect_JumpOffBird(struct Task *);
+static void FlyInFieldEffect_FieldMovePose(struct Task *);
+static void FlyInFieldEffect_BirdReturnToBall(struct Task *);
+static void FlyInFieldEffect_WaitBirdReturn(struct Task *);
+static void FlyInFieldEffect_End(struct Task *);
+
+static void Task_DestroyDeoxysRock(u8 taskId);
+static void DestroyDeoxysRockEffect_CameraShake(s16*, u8);
+static void DestroyDeoxysRockEffect_RockFragments(s16*, u8);
+static void DestroyDeoxysRockEffect_WaitAndEnd(s16*, u8);
+static void CreateDeoxysRockFragments(struct Sprite*);
+static void SpriteCB_DeoxysRockFragment(struct Sprite* sprite);
+
+static void Task_MoveDeoxysRock(u8 taskId);
// Static RAM declarations
@@ -240,34 +242,33 @@ extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern u8 *gFieldEffectScriptPointers[];
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
-// .rodata
-const u32 gNewGameBirchPic[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
-const u32 gUnusedBirchBeauty[] = INCBIN_U32("graphics/unused/intro_birch_beauty.4bpp");
-const u16 gNewGameBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
-const u32 gSpriteImage_855A970[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp");
-const u16 gFieldEffectObjectPalette4[16] = INCBIN_U16("graphics/field_effects/palettes/04.gbapal");
-const u32 gSpriteImage_855A9B0[] = INCBIN_U32("graphics/misc/pokecenter_monitor/0.4bpp");
-const u32 gSpriteImage_855AA70[] = INCBIN_U32("graphics/misc/pokecenter_monitor/1.4bpp");
-const u32 gSpriteImage_855AB30[] = INCBIN_U32("graphics/misc/big_hof_monitor.4bpp");
-const u8 gSpriteImage_855AD30[] = INCBIN_U8("graphics/misc/small_hof_monitor.4bpp");
-const u16 gFieldEffectObjectPalette5[16] = INCBIN_U16("graphics/field_effects/palettes/05.gbapal");
+static const u32 sNewGameBirch_Gfx[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
+static const u32 sUnusedBirchBeauty[] = INCBIN_U32("graphics/unused/intro_birch_beauty.4bpp");
+static const u16 sNewGameBirch_Pal[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
+static const u32 sPokeballGlow_Gfx[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp");
+static const u16 sPokeballGlow_Pal[16] = INCBIN_U16("graphics/field_effects/palettes/pokeball_glow.gbapal");
+static const u32 sPokecenterMonitor0_Gfx[] = INCBIN_U32("graphics/misc/pokecenter_monitor/0.4bpp");
+static const u32 sPokecenterMonitor1_Gfx[] = INCBIN_U32("graphics/misc/pokecenter_monitor/1.4bpp");
+static const u32 sHofMonitorBig_Gfx[] = INCBIN_U32("graphics/misc/hof_monitor_big.4bpp");
+static const u8 sHofMonitorSmall_Gfx[] = INCBIN_U8("graphics/misc/hof_monitor_small.4bpp");
+static const u16 sHofMonitor_Pal[16] = INCBIN_U16("graphics/field_effects/palettes/hof_monitor.gbapal");
// Graphics for the lights streaking past your Pokemon when it uses a field move.
-const u32 gFieldMoveStreaksTiles[] = INCBIN_U32("graphics/misc/field_move_streaks.4bpp");
-const u16 gFieldMoveStreaksPalette[16] = INCBIN_U16("graphics/misc/field_move_streaks.gbapal");
-const u16 gFieldMoveStreaksTilemap[] = INCBIN_U16("graphics/misc/field_move_streaks_map.bin");
-
-// The following light streaks effect is used when the map is dark (e.g. a cave).
-const u32 gDarknessFieldMoveStreaksTiles[] = INCBIN_U32("graphics/misc/darkness_field_move_streaks.4bpp");
-const u16 gDarknessFieldMoveStreaksPalette[16] = INCBIN_U16("graphics/misc/darkness_field_move_streaks.gbapal");
-const u16 gDarknessFieldMoveStreaksTilemap[] = INCBIN_U16("graphics/misc/darkness_field_move_streaks_map.bin");
-
-const u16 gUnknown_0855B610[16] = INCBIN_U16("graphics/misc/spotlight.gbapal");
-const u8 gUnknown_0855B630[] = INCBIN_U8("graphics/misc/spotlight.4bpp");
-const u8 gUnknown_0855C170[] = INCBIN_U8("graphics/unknown/unknown_55C170.4bpp");
-const u8 gUnknown_0855C190[] = INCBIN_U8("graphics/unknown/unknown_55C190.4bpp");
-const u8 gUnknown_0855C1B0[] = INCBIN_U8("graphics/unknown/unknown_55C1B0.4bpp");
-const u8 gUnknown_0855C1D0[] = INCBIN_U8("graphics/unknown/unknown_55C1D0.4bpp");
+static const u32 sFieldMoveStreaksOutdoors_Gfx[] = INCBIN_U32("graphics/misc/field_move_streaks.4bpp");
+static const u16 sFieldMoveStreaksOutdoors_Pal[16] = INCBIN_U16("graphics/misc/field_move_streaks.gbapal");
+static const u16 sFieldMoveStreaksOutdoors_Tilemap[320] = INCBIN_U16("graphics/misc/field_move_streaks_map.bin");
+
+// The following light streaks effect is used when the map is indoors
+static const u32 sFieldMoveStreaksIndoors_Gfx[] = INCBIN_U32("graphics/misc/darkness_field_move_streaks.4bpp");
+static const u16 sFieldMoveStreaksIndoors_Pal[16] = INCBIN_U16("graphics/misc/darkness_field_move_streaks.gbapal");
+static const u16 sFieldMoveStreaksIndoors_Tilemap[320] = INCBIN_U16("graphics/misc/darkness_field_move_streaks_map.bin");
+
+static const u16 sSpotlight_Pal[16] = INCBIN_U16("graphics/misc/spotlight.gbapal");
+static const u8 sSpotlight_Gfx[] = INCBIN_U8("graphics/misc/spotlight.4bpp");
+static const u8 sRockFragment_TopLeft[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_top_left.4bpp");
+static const u8 sRockFragment_TopRight[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_top_right.4bpp");
+static const u8 sRockFragment_BottomLeft[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_bottom_left.4bpp");
+static const u8 sRockFragment_BottomRight[] = INCBIN_U8("graphics/misc/deoxys_rock_fragment_bottom_right.4bpp");
bool8 (*const gFieldEffectScriptFuncs[])(u8 **, u32 *) =
{
@@ -281,7 +282,7 @@ bool8 (*const gFieldEffectScriptFuncs[])(u8 **, u32 *) =
FieldEffectCmd_loadfadedpal_callnative,
};
-const struct OamData gNewGameBirchOamAttributes =
+static const struct OamData sOam_64x64 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -295,7 +296,7 @@ const struct OamData gNewGameBirchOamAttributes =
.paletteNum = 0,
};
-const struct OamData gOamData_855C218 =
+static const struct OamData sOam_8x8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -309,7 +310,7 @@ const struct OamData gOamData_855C218 =
.paletteNum = 0,
};
-const struct OamData gOamData_855C220 =
+static const struct OamData sOam_16x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -323,52 +324,52 @@ const struct OamData gOamData_855C220 =
.paletteNum = 0,
};
-const struct SpriteFrameImage gNewGameBirchPicTable[] =
+static const struct SpriteFrameImage sPicTable_NewGameBirch[] =
{
- obj_frame_tiles(gNewGameBirchPic)
+ obj_frame_tiles(sNewGameBirch_Gfx)
};
-const struct SpritePalette gNewGameBirchObjectPaletteInfo =
+static const struct SpritePalette sSpritePalette_NewGameBirch =
{
- .data = gNewGameBirchPalette,
+ .data = sNewGameBirch_Pal,
.tag = 0x1006
};
-const union AnimCmd gNewGameBirchImageAnim[] =
+static const union AnimCmd sAnim_NewGameBirch[] =
{
ANIMCMD_FRAME(.imageValue = 0, .duration = 1),
ANIMCMD_END
};
-const union AnimCmd *const gNewGameBirchImageAnimTable[] =
+static const union AnimCmd *const sAnimTable_NewGameBirch[] =
{
- gNewGameBirchImageAnim
+ sAnim_NewGameBirch
};
-const struct SpriteTemplate gNewGameBirchObjectTemplate =
+static const struct SpriteTemplate sSpriteTemplate_NewGameBirch =
{
.tileTag = 0xFFFF,
- .paletteTag = 4102,
- .oam = &gNewGameBirchOamAttributes,
- .anims = gNewGameBirchImageAnimTable,
- .images = gNewGameBirchPicTable,
+ .paletteTag = 0x1006,
+ .oam = &sOam_64x64,
+ .anims = sAnimTable_NewGameBirch,
+ .images = sPicTable_NewGameBirch,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-const struct SpritePalette gFieldEffectObjectPaletteInfo4 =
+const struct SpritePalette gSpritePalette_PokeballGlow =
{
- .data = gFieldEffectObjectPalette4,
- .tag = 0x1007
+ .data = sPokeballGlow_Pal,
+ .tag = FLDEFF_PAL_TAG_POKEBALL_GLOW
};
-const struct SpritePalette gFieldEffectObjectPaletteInfo5 =
+const struct SpritePalette gSpritePalette_HofMonitor =
{
- .data = gFieldEffectObjectPalette5,
- .tag = 0x1010
+ .data = sHofMonitor_Pal,
+ .tag = FLDEFF_PAL_TAG_HOF_MONITOR
};
-const struct OamData gOamData_855C26C =
+static const struct OamData sOam_32x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -382,28 +383,28 @@ const struct OamData gOamData_855C26C =
.paletteNum = 0,
};
-const struct SpriteFrameImage gSpriteImageTable_855C274[] =
+static const struct SpriteFrameImage sPicTable_PokeballGlow[] =
{
- obj_frame_tiles(gSpriteImage_855A970)
+ obj_frame_tiles(sPokeballGlow_Gfx)
};
-const struct SpriteFrameImage gSpriteImageTable_855C27C[] =
+static const struct SpriteFrameImage sPicTable_PokecenterMonitor[] =
{
- obj_frame_tiles(gSpriteImage_855A9B0),
- obj_frame_tiles(gSpriteImage_855AA70)
+ obj_frame_tiles(sPokecenterMonitor0_Gfx),
+ obj_frame_tiles(sPokecenterMonitor1_Gfx)
};
-const struct SpriteFrameImage gSpriteImageTable_855C28C[] =
+static const struct SpriteFrameImage sPicTable_HofMonitorBig[] =
{
- obj_frame_tiles(gSpriteImage_855AB30)
+ obj_frame_tiles(sHofMonitorBig_Gfx)
};
-const struct SpriteFrameImage gSpriteImageTable_855C294[] =
+static const struct SpriteFrameImage sPicTable_HofMonitorSmall[] =
{
- {.data = gSpriteImage_855AD30, .size = 0x200} // the macro breaks down here
+ {.data = sHofMonitorSmall_Gfx, .size = 0x200} // the macro breaks down here
};
-const struct Subsprite gSubspriteTable_855C29C[] =
+static const struct Subsprite sSubsprites_PokecenterMonitor[] =
{
{
.x = -12,
@@ -439,9 +440,9 @@ const struct Subsprite gSubspriteTable_855C29C[] =
}
};
-const struct SubspriteTable gUnknown_0855C2AC = subsprite_table(gSubspriteTable_855C29C);
+static const struct SubspriteTable sSubspriteTable_PokecenterMonitor = subsprite_table(sSubsprites_PokecenterMonitor);
-const struct Subsprite gSubspriteTable_855C2B4[] =
+static const struct Subsprite sSubsprites_HofMonitorBig[] =
{
{
.x = -32,
@@ -477,7 +478,7 @@ const struct Subsprite gSubspriteTable_855C2B4[] =
}
};
-const struct SubspriteTable gUnknown_0855C2C4 = subsprite_table(gSubspriteTable_855C2B4);
+static const struct SubspriteTable sSubspriteTable_HofMonitorBig = subsprite_table(sSubsprites_HofMonitorBig);
const union AnimCmd gSpriteAnim_855C2CC[] =
{
@@ -504,84 +505,84 @@ const union AnimCmd *const gSpriteAnimTable_855C2F8[] =
gSpriteAnim_855C2D4
};
-const union AnimCmd *const gSpriteAnimTable_855C300[] =
+static const union AnimCmd *const sAnimTable_HofMonitor[] =
{
gSpriteAnim_855C2CC
};
-const struct SpriteTemplate gSpriteTemplate_855C304 =
+static const struct SpriteTemplate sSpriteTemplate_PokeballGlow =
{
.tileTag = 0xFFFF,
- .paletteTag = 4103,
- .oam = &gOamData_855C218,
+ .paletteTag = FLDEFF_PAL_TAG_POKEBALL_GLOW,
+ .oam = &sOam_8x8,
.anims = gSpriteAnimTable_855C2F8,
- .images = gSpriteImageTable_855C274,
+ .images = sPicTable_PokeballGlow,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_PokeballGlow
};
-const struct SpriteTemplate gSpriteTemplate_855C31C =
+static const struct SpriteTemplate sSpriteTemplate_PokecenterMonitor =
{
.tileTag = 0xFFFF,
- .paletteTag = 4100,
- .oam = &gOamData_855C220,
+ .paletteTag = FLDEFF_PAL_TAG_GENERAL_0,
+ .oam = &sOam_16x16,
.anims = gSpriteAnimTable_855C2F8,
- .images = gSpriteImageTable_855C27C,
+ .images = sPicTable_PokecenterMonitor,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_PokecenterMonitor
};
-const struct SpriteTemplate gSpriteTemplate_855C334 =
+static const struct SpriteTemplate sSpriteTemplate_HofMonitorBig =
{
.tileTag = 0xFFFF,
- .paletteTag = 4112,
- .oam = &gOamData_855C220,
- .anims = gSpriteAnimTable_855C300,
- .images = gSpriteImageTable_855C28C,
+ .paletteTag = FLDEFF_PAL_TAG_HOF_MONITOR,
+ .oam = &sOam_16x16,
+ .anims = sAnimTable_HofMonitor,
+ .images = sPicTable_HofMonitorBig,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_HallOfFameMonitor
};
-const struct SpriteTemplate gSpriteTemplate_855C34C =
+static const struct SpriteTemplate sSpriteTemplate_HofMonitorSmall =
{
.tileTag = 0xFFFF,
- .paletteTag = 4112,
- .oam = &gOamData_855C26C,
- .anims = gSpriteAnimTable_855C300,
- .images = gSpriteImageTable_855C294,
+ .paletteTag = FLDEFF_PAL_TAG_HOF_MONITOR,
+ .oam = &sOam_32x16,
+ .anims = sAnimTable_HofMonitor,
+ .images = sPicTable_HofMonitorSmall,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCB_HallOfFameMonitor
};
-void (*const gUnknown_0855C364[])(struct Task *) =
+void (*const sPokecenterHealEffectFuncs[])(struct Task *) =
{
- PokecenterHealEffect_0,
- PokecenterHealEffect_1,
- PokecenterHealEffect_2,
- PokecenterHealEffect_3
+ PokecenterHealEffect_Init,
+ PokecenterHealEffect_WaitForBallPlacement,
+ PokecenterHealEffect_WaitForBallFlashing,
+ PokecenterHealEffect_WaitForSoundAndEnd
};
-void (*const gUnknown_0855C374[])(struct Task *) =
+void (*const sHallOfFameRecordEffectFuncs[])(struct Task *) =
{
- HallOfFameRecordEffect_0,
- HallOfFameRecordEffect_1,
- HallOfFameRecordEffect_2,
- HallOfFameRecordEffect_3
+ HallOfFameRecordEffect_Init,
+ HallOfFameRecordEffect_WaitForBallPlacement,
+ HallOfFameRecordEffect_WaitForBallFlashing,
+ HallOfFameRecordEffect_WaitForSoundAndEnd
};
-void (*const gUnknown_0855C384[])(struct Sprite *) =
+void (*const sPokeballGlowEffectFuncs[])(struct Sprite *) =
{
- PokeballGlowEffect_0,
- PokeballGlowEffect_1,
- PokeballGlowEffect_2,
- PokeballGlowEffect_3,
- PokeballGlowEffect_4,
- PokeballGlowEffect_5,
- PokeballGlowEffect_6,
- PokeballGlowEffect_7
+ PokeballGlowEffect_PlaceBalls,
+ PokeballGlowEffect_TryPlaySe,
+ PokeballGlowEffect_Flash1,
+ PokeballGlowEffect_Flash2,
+ PokeballGlowEffect_WaitAfterFlash,
+ PokeballGlowEffect_Dummy,
+ PokeballGlowEffect_WaitForSound,
+ PokeballGlowEffect_Idle
};
-const struct Coords16 gUnknown_0855C3A4[] =
+static const struct Coords16 sPokeballCoordOffsets[PARTY_SIZE] =
{
{.x = 0, .y = 0},
{.x = 6, .y = 0},
@@ -591,93 +592,91 @@ const struct Coords16 gUnknown_0855C3A4[] =
{.x = 6, .y = 8}
};
-const u8 gUnknown_0855C3BC[] = {16, 12, 8, 0};
-const u8 gUnknown_0855C3C0[] = {16, 12, 8, 0};
-const u8 gUnknown_0855C3C4[] = { 0, 0, 0, 0};
+static const u8 sPokeballGlowReds[] = {16, 12, 8, 0};
+static const u8 sPokeballGlowGreens[] = {16, 12, 8, 0};
+static const u8 sPokeballGlowBlues[] = { 0, 0, 0, 0};
bool8 (*const sFallWarpFieldEffectFuncs[])(struct Task *) =
{
- FallWarpEffect_1,
- FallWarpEffect_2,
- FallWarpEffect_3,
- FallWarpEffect_4,
- FallWarpEffect_5,
- FallWarpEffect_6,
- FallWarpEffect_7,
+ FallWarpEffect_Init,
+ FallWarpEffect_WaitWeather,
+ FallWarpEffect_StartFall,
+ FallWarpEffect_Fall,
+ FallWarpEffect_Land,
+ FallWarpEffect_CameraShake,
+ FallWarpEffect_End,
};
-bool8 (*const sEscalatorWarpFieldEffectFuncs[])(struct Task *) =
+bool8 (*const sEscalatorWarpOutFieldEffectFuncs[])(struct Task *) =
{
- EscalatorWarpEffect_1,
- EscalatorWarpEffect_2,
- EscalatorWarpEffect_3,
- EscalatorWarpEffect_4,
- EscalatorWarpEffect_5,
- EscalatorWarpEffect_6,
+ EscalatorWarpOut_Init,
+ EscalatorWarpOut_WaitForPlayer,
+ EscalatorWarpOut_Up_Ride,
+ EscalatorWarpOut_Up_End,
+ EscalatorWarpOut_Down_Ride,
+ EscalatorWarpOut_Down_End,
};
-bool8 (*const gUnknown_0855C3FC[])(struct Task *) =
+bool8 (*const sEscalatorWarpInFieldEffectFuncs[])(struct Task *) =
{
- sub_80B7114,
- sub_80B7190,
- sub_80B71D0,
- sub_80B7230,
- sub_80B7270,
- sub_80B72D0,
- sub_80B72F4,
+ EscalatorWarpIn_Init,
+ EscalatorWarpIn_Down_Init,
+ EscalatorWarpIn_Down_Ride,
+ EscalatorWarpIn_Up_Init,
+ EscalatorWarpIn_Up_Ride,
+ EscalatorWarpIn_WaitForMovement,
+ EscalatorWarpIn_End,
};
-bool8 (*const gUnknown_0855C418[])(struct Task *, struct ObjectEvent *) =
+bool8 (*const sWaterfallFieldEffectFuncs[])(struct Task *, struct ObjectEvent *) =
{
- sub_80B73D0,
- waterfall_1_do_anim_probably,
- waterfall_2_wait_anim_finish_probably,
- sub_80B7450,
- sub_80B7478,
+ WaterfallFieldEffect_Init,
+ WaterfallFieldEffect_ShowMon,
+ WaterfallFieldEffect_WaitForShowMon,
+ WaterfallFieldEffect_RideUp,
+ WaterfallFieldEffect_ContinueRideOrEnd,
};
-bool8 (*const gUnknown_0855C42C[])(struct Task *) =
+bool8 (*const sDiveFieldEffectFuncs[])(struct Task *) =
{
- dive_1_lock,
- dive_2_unknown,
- dive_3_unknown,
+ DiveFieldEffect_Init,
+ DiveFieldEffect_ShowMon,
+ DiveFieldEffect_TryWarp,
};
bool8 (*const sLavaridgeGymB1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) =
{
- LavaridgeGymB1FWarpEffect_1,
- LavaridgeGymB1FWarpEffect_2,
- LavaridgeGymB1FWarpEffect_3,
- LavaridgeGymB1FWarpEffect_4,
- LavaridgeGymB1FWarpEffect_5,
- LavaridgeGymB1FWarpEffect_6,
+ LavaridgeGymB1FWarpEffect_Init,
+ LavaridgeGymB1FWarpEffect_CameraShake,
+ LavaridgeGymB1FWarpEffect_Launch,
+ LavaridgeGymB1FWarpEffect_Rise,
+ LavaridgeGymB1FWarpEffect_FadeOut,
+ LavaridgeGymB1FWarpEffect_Warp,
};
bool8 (*const sLavaridgeGymB1FWarpExitEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) =
{
- LavaridgeGymB1FWarpExitEffect_1,
- LavaridgeGymB1FWarpExitEffect_2,
- LavaridgeGymB1FWarpExitEffect_3,
- LavaridgeGymB1FWarpExitEffect_4,
+ LavaridgeGymB1FWarpExitEffect_Init,
+ LavaridgeGymB1FWarpExitEffect_StartPopOut,
+ LavaridgeGymB1FWarpExitEffect_PopOut,
+ LavaridgeGymB1FWarpExitEffect_End,
};
bool8 (*const sLavaridgeGym1FWarpEffectFuncs[])(struct Task *, struct ObjectEvent *, struct Sprite *) =
{
- LavaridgeGym1FWarpEffect_1,
- LavaridgeGym1FWarpEffect_2,
- LavaridgeGym1FWarpEffect_3,
- LavaridgeGym1FWarpEffect_4,
- LavaridgeGym1FWarpEffect_5,
+ LavaridgeGym1FWarpEffect_Init,
+ LavaridgeGym1FWarpEffect_AshPuff,
+ LavaridgeGym1FWarpEffect_Disappear,
+ LavaridgeGym1FWarpEffect_FadeOut,
+ LavaridgeGym1FWarpEffect_Warp,
};
-void (*const gEscapeRopeFieldEffectFuncs[])(struct Task *) =
+void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *) =
{
- EscapeRopeFieldEffect_Step0,
- EscapeRopeFieldEffect_Step1,
+ EscapeRopeWarpOutEffect_Init,
+ EscapeRopeWarpOutEffect_Spin,
};
-// .text
-
u32 FieldEffectStart(u8 id)
{
u8 *script;
@@ -881,7 +880,7 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf
LoadCompressedSpriteSheetOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer);
spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag;
spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag;
- spriteTemplate.oam = &gNewGameBirchOamAttributes;
+ spriteTemplate.oam = &sOam_64x64;
spriteTemplate.anims = gDummySpriteAnimTable;
spriteTemplate.images = NULL;
spriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
@@ -897,8 +896,8 @@ void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest)
u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority)
{
- LoadSpritePalette(&gNewGameBirchObjectPaletteInfo);
- return CreateSprite(&gNewGameBirchObjectTemplate, x, y, subpriority);
+ LoadSpritePalette(&sSpritePalette_NewGameBirch);
+ return CreateSprite(&sSpriteTemplate_NewGameBirch, x, y, subpriority);
}
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
@@ -911,10 +910,10 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
return spriteId;
}
-u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority)
+u8 CreateMonSprite_FieldMove(u16 species, u32 otId, u32 personality, s16 x, s16 y, u8 subpriority)
{
- const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g);
- u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, d, g, 1, x, y, 0, spritePalette->tag);
+ const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
+ u16 spriteId = CreateMonPicSprite_HandleDeoxys(species, otId, personality, 1, x, y, 0, spritePalette->tag);
PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10);
if (spriteId == 0xFFFF)
return MAX_SPRITES;
@@ -974,6 +973,28 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
gPlttBufferFaded[i] = outPal;
}
+// Task data for Task_PokecenterHeal and Task_HallOfFameRecord
+#define tState data[0]
+#define tNumMons data[1]
+#define tFirstBallX data[2]
+#define tFirstBallY data[3]
+#define tMonitorX data[4]
+#define tMonitorY data[5]
+#define tBallSpriteId data[6]
+#define tMonitorSpriteId data[7]
+#define tStartHofFlash data[15]
+
+// Sprite data for SpriteCB_PokeballGlowEffect
+#define sState data[0]
+#define sTimer data[1]
+#define sCounter data[2]
+#define sPlayHealSe data[5]
+#define sNumMons data[6]
+#define sSpriteId data[7]
+
+// Sprite data for SpriteCB_PokeballGlow
+#define sEffectSpriteId data[0]
+
bool8 FldEff_PokecenterHeal(void)
{
u8 nPokemon;
@@ -981,11 +1002,11 @@ bool8 FldEff_PokecenterHeal(void)
nPokemon = CalculatePlayerPartyCount();
task = &gTasks[CreateTask(Task_PokecenterHeal, 0xff)];
- task->data[1] = nPokemon;
- task->data[2] = 0x5d;
- task->data[3] = 0x24;
- task->data[4] = 0x7c;
- task->data[5] = 0x18;
+ task->tNumMons = nPokemon;
+ task->tFirstBallX = 93;
+ task->tFirstBallY = 36;
+ task->tMonitorX = 124;
+ task->tMonitorY = 24;
return FALSE;
}
@@ -993,38 +1014,38 @@ static void Task_PokecenterHeal(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
- gUnknown_0855C364[task->data[0]](task);
+ sPokecenterHealEffectFuncs[task->tState](task);
}
-static void PokecenterHealEffect_0(struct Task *task)
+static void PokecenterHealEffect_Init(struct Task *task)
{
- task->data[0]++;
- task->data[6] = CreatePokeballGlowSprite(task->data[1], task->data[2], task->data[3], 1);
- task->data[7] = PokecenterHealEffectHelper(task->data[4], task->data[5]);
+ task->tState++;
+ task->tBallSpriteId = CreateGlowingPokeballsEffect(task->tNumMons, task->tFirstBallX, task->tFirstBallY, TRUE);
+ task->tMonitorSpriteId = CreatePokecenterMonitorSprite(task->tMonitorX, task->tMonitorY);
}
-static void PokecenterHealEffect_1(struct Task *task)
+static void PokecenterHealEffect_WaitForBallPlacement(struct Task *task)
{
- if (gSprites[task->data[6]].data[0] > 1)
+ if (gSprites[task->tBallSpriteId].sState > 1)
{
- gSprites[task->data[7]].data[0]++;
- task->data[0]++;
+ gSprites[task->tMonitorSpriteId].sState++;
+ task->tState++;
}
}
-static void PokecenterHealEffect_2(struct Task *task)
+static void PokecenterHealEffect_WaitForBallFlashing(struct Task *task)
{
- if (gSprites[task->data[6]].data[0] > 4)
+ if (gSprites[task->tBallSpriteId].sState > 4)
{
- task->data[0]++;
+ task->tState++;
}
}
-static void PokecenterHealEffect_3(struct Task *task)
+static void PokecenterHealEffect_WaitForSoundAndEnd(struct Task *task)
{
- if (gSprites[task->data[6]].data[0] > 6)
+ if (gSprites[task->tBallSpriteId].sState > 6)
{
- DestroySprite(&gSprites[task->data[6]]);
+ DestroySprite(&gSprites[task->tBallSpriteId]);
FieldEffectActiveListRemove(FLDEFF_POKECENTER_HEAL);
DestroyTask(FindTaskIdByFunc(Task_PokecenterHeal));
}
@@ -1037,9 +1058,9 @@ bool8 FldEff_HallOfFameRecord(void)
nPokemon = CalculatePlayerPartyCount();
task = &gTasks[CreateTask(Task_HallOfFameRecord, 0xff)];
- task->data[1] = nPokemon;
- task->data[2] = 0x75;
- task->data[3] = 0x34;
+ task->tNumMons = nPokemon;
+ task->tFirstBallX = 117;
+ task->tFirstBallY = 52;
return FALSE;
}
@@ -1047,51 +1068,50 @@ static void Task_HallOfFameRecord(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
- gUnknown_0855C374[task->data[0]](task);
+ sHallOfFameRecordEffectFuncs[task->tState](task);
}
-static void HallOfFameRecordEffect_0(struct Task *task)
+static void HallOfFameRecordEffect_Init(struct Task *task)
{
u8 taskId;
- task->data[0]++;
- task->data[6] = CreatePokeballGlowSprite(task->data[1], task->data[2], task->data[3], 0);
+ task->tState++;
+ task->tBallSpriteId = CreateGlowingPokeballsEffect(task->tNumMons, task->tFirstBallX, task->tFirstBallY, FALSE);
taskId = FindTaskIdByFunc(Task_HallOfFameRecord);
- HallOfFameRecordEffectHelper(taskId, 0x78, 0x18, 0);
- HallOfFameRecordEffectHelper(taskId, 0x28, 0x08, 1);
- HallOfFameRecordEffectHelper(taskId, 0x48, 0x08, 1);
- HallOfFameRecordEffectHelper(taskId, 0xa8, 0x08, 1);
- HallOfFameRecordEffectHelper(taskId, 0xc8, 0x08, 1);
+ CreateHofMonitorSprite(taskId, 120, 24, FALSE);
+ CreateHofMonitorSprite(taskId, 40, 8, TRUE);
+ CreateHofMonitorSprite(taskId, 72, 8, TRUE);
+ CreateHofMonitorSprite(taskId, 168, 8, TRUE);
+ CreateHofMonitorSprite(taskId, 200, 8, TRUE);
}
-static void HallOfFameRecordEffect_1(struct Task *task)
+static void HallOfFameRecordEffect_WaitForBallPlacement(struct Task *task)
{
- if (gSprites[task->data[6]].data[0] > 1)
+ if (gSprites[task->tBallSpriteId].sState > 1)
{
- task->data[15]++; // was this ever initialized? is this ever used?
- task->data[0]++;
+ task->tStartHofFlash++;
+ task->tState++;
}
}
-static void HallOfFameRecordEffect_2(struct Task *task)
+static void HallOfFameRecordEffect_WaitForBallFlashing(struct Task *task)
{
- if (gSprites[task->data[6]].data[0] > 4)
+ if (gSprites[task->tBallSpriteId].sState > 4)
{
- task->data[0]++;
+ task->tState++;
}
}
-static void HallOfFameRecordEffect_3(struct Task *task)
+static void HallOfFameRecordEffect_WaitForSoundAndEnd(struct Task *task)
{
- if (gSprites[task->data[6]].data[0] > 6)
+ if (gSprites[task->tBallSpriteId].sState > 6)
{
- DestroySprite(&gSprites[task->data[6]]);
+ DestroySprite(&gSprites[task->tBallSpriteId]);
FieldEffectActiveListRemove(FLDEFF_HALL_OF_FAME_RECORD);
DestroyTask(FindTaskIdByFunc(Task_HallOfFameRecord));
}
}
-
-static u8 CreatePokeballGlowSprite(s16 data6, s16 x, s16 y, u16 data5)
+static u8 CreateGlowingPokeballsEffect(s16 numMons, s16 x, s16 y, bool16 playHealSe)
{
u8 spriteId;
struct Sprite *sprite;
@@ -1099,150 +1119,150 @@ static u8 CreatePokeballGlowSprite(s16 data6, s16 x, s16 y, u16 data5)
sprite = &gSprites[spriteId];
sprite->pos2.x = x;
sprite->pos2.y = y;
- sprite->data[5] = data5;
- sprite->data[6] = data6;
- sprite->data[7] = spriteId;
+ sprite->sPlayHealSe = playHealSe;
+ sprite->sNumMons = numMons;
+ sprite->sSpriteId = spriteId;
return spriteId;
}
static void SpriteCB_PokeballGlowEffect(struct Sprite *sprite)
{
- gUnknown_0855C384[sprite->data[0]](sprite);
+ sPokeballGlowEffectFuncs[sprite->sState](sprite);
}
-static void PokeballGlowEffect_0(struct Sprite *sprite)
+static void PokeballGlowEffect_PlaceBalls(struct Sprite *sprite)
{
- u8 endSpriteId;
- if (sprite->data[1] == 0 || (--sprite->data[1]) == 0)
- {
- sprite->data[1] = 25;
- endSpriteId = CreateSpriteAtEnd(&gSpriteTemplate_855C304, gUnknown_0855C3A4[sprite->data[2]].x + sprite->pos2.x, gUnknown_0855C3A4[sprite->data[2]].y + sprite->pos2.y, 0);
- gSprites[endSpriteId].oam.priority = 2;
- gSprites[endSpriteId].data[0] = sprite->data[7];
- sprite->data[2]++;
- sprite->data[6]--;
+ u8 spriteId;
+ if (sprite->sTimer == 0 || (--sprite->sTimer) == 0)
+ {
+ sprite->sTimer = 25;
+ spriteId = CreateSpriteAtEnd(&sSpriteTemplate_PokeballGlow, sPokeballCoordOffsets[sprite->sCounter].x + sprite->pos2.x, sPokeballCoordOffsets[sprite->sCounter].y + sprite->pos2.y, 0);
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].sEffectSpriteId = sprite->sSpriteId;
+ sprite->sCounter++;
+ sprite->sNumMons--;
PlaySE(SE_BOWA);
}
- if (sprite->data[6] == 0)
+ if (sprite->sNumMons == 0)
{
- sprite->data[1] = 32;
- sprite->data[0]++;
+ sprite->sTimer = 32;
+ sprite->sState++;
}
}
-static void PokeballGlowEffect_1(struct Sprite *sprite)
+static void PokeballGlowEffect_TryPlaySe(struct Sprite *sprite)
{
- if ((--sprite->data[1]) == 0)
+ if ((--sprite->sTimer) == 0)
{
- sprite->data[0]++;
- sprite->data[1] = 8;
- sprite->data[2] = 0;
+ sprite->sState++;
+ sprite->sTimer = 8;
+ sprite->sCounter = 0;
sprite->data[3] = 0;
- if (sprite->data[5])
+ if (sprite->sPlayHealSe)
{
PlayFanfare(MUS_ME_ASA);
}
}
}
-static void PokeballGlowEffect_2(struct Sprite *sprite)
+static void PokeballGlowEffect_Flash1(struct Sprite *sprite)
{
u8 phase;
- if ((--sprite->data[1]) == 0)
+ if ((--sprite->sTimer) == 0)
{
- sprite->data[1] = 8;
- sprite->data[2]++;
- sprite->data[2] &= 3;
- if (sprite->data[2] == 0)
- {
+ sprite->sTimer = 8;
+ sprite->sCounter++;
+ sprite->sCounter &= 3;
+
+ if (sprite->sCounter == 0)
sprite->data[3]++;
- }
}
- phase = (sprite->data[2] + 3) & 3;
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x108, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- phase = (sprite->data[2] + 2) & 3;
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x106, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- phase = (sprite->data[2] + 1) & 3;
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x102, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- phase = sprite->data[2];
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x105, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x103, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
+ phase = (sprite->sCounter + 3) & 3;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x108, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ phase = (sprite->sCounter + 2) & 3;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x106, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ phase = (sprite->sCounter + 1) & 3;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x102, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ phase = sprite->sCounter;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x105, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x103, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
if (sprite->data[3] > 2)
{
- sprite->data[0]++;
- sprite->data[1] = 8;
- sprite->data[2] = 0;
+ sprite->sState++;
+ sprite->sTimer = 8;
+ sprite->sCounter = 0;
}
}
-static void PokeballGlowEffect_3(struct Sprite *sprite)
+static void PokeballGlowEffect_Flash2(struct Sprite *sprite)
{
u8 phase;
- if ((--sprite->data[1]) == 0)
+ if ((--sprite->sTimer) == 0)
{
- sprite->data[1] = 8;
- sprite->data[2]++;
- sprite->data[2] &= 3;
- if (sprite->data[2] == 3)
+ sprite->sTimer = 8;
+ sprite->sCounter++;
+ sprite->sCounter &= 3;
+ if (sprite->sCounter == 3)
{
- sprite->data[0]++;
- sprite->data[1] = 30;
+ sprite->sState++;
+ sprite->sTimer = 30;
}
}
- phase = sprite->data[2];
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x108, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x106, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x102, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x105, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x103, gUnknown_0855C3BC[phase], gUnknown_0855C3C0[phase], gUnknown_0855C3C4[phase]);
+ phase = sprite->sCounter;
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x108, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x106, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x102, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x105, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_POKEBALL_GLOW) << 4) + 0x103, sPokeballGlowReds[phase], sPokeballGlowGreens[phase], sPokeballGlowBlues[phase]);
}
-static void PokeballGlowEffect_4(struct Sprite *sprite)
+static void PokeballGlowEffect_WaitAfterFlash(struct Sprite *sprite)
{
- if ((--sprite->data[1]) == 0)
+ if ((--sprite->sTimer) == 0)
{
- sprite->data[0]++;
+ sprite->sState++;
}
}
-static void PokeballGlowEffect_5(struct Sprite *sprite)
+static void PokeballGlowEffect_Dummy(struct Sprite *sprite)
{
- sprite->data[0]++;
+ sprite->sState++;
}
-static void PokeballGlowEffect_6(struct Sprite *sprite)
+static void PokeballGlowEffect_WaitForSound(struct Sprite *sprite)
{
- if (sprite->data[5] == 0 || IsFanfareTaskInactive())
+ if (sprite->sPlayHealSe == FALSE || IsFanfareTaskInactive())
{
- sprite->data[0]++;
+ sprite->sState++;
}
}
-static void PokeballGlowEffect_7(struct Sprite *sprite)
+static void PokeballGlowEffect_Idle(struct Sprite *sprite)
{
+ // Idle until destroyed
}
-void SpriteCB_PokeballGlow(struct Sprite *sprite)
+static void SpriteCB_PokeballGlow(struct Sprite *sprite)
{
- if (gSprites[sprite->data[0]].data[0] > 4)
+ if (gSprites[sprite->sEffectSpriteId].sState > 4)
{
FieldEffectFreeGraphicsResources(sprite);
}
}
-static u8 PokecenterHealEffectHelper(s16 x, s16 y)
+static u8 CreatePokecenterMonitorSprite(s16 x, s16 y)
{
- u8 spriteIdAtEnd;
+ u8 spriteId;
struct Sprite *sprite;
- spriteIdAtEnd = CreateSpriteAtEnd(&gSpriteTemplate_855C31C, x, y, 0);
- sprite = &gSprites[spriteIdAtEnd];
+ spriteId = CreateSpriteAtEnd(&sSpriteTemplate_PokecenterMonitor, x, y, 0);
+ sprite = &gSprites[spriteId];
sprite->oam.priority = 2;
sprite->invisible = TRUE;
- SetSubspriteTables(sprite, &gUnknown_0855C2AC);
- return spriteIdAtEnd;
+ SetSubspriteTables(sprite, &sSubspriteTable_PokecenterMonitor);
+ return spriteId;
}
-void SpriteCB_PokecenterMonitor(struct Sprite *sprite)
+static void SpriteCB_PokecenterMonitor(struct Sprite *sprite)
{
if (sprite->data[0] != 0)
{
@@ -1256,24 +1276,24 @@ void SpriteCB_PokecenterMonitor(struct Sprite *sprite)
}
}
-static void HallOfFameRecordEffectHelper(s16 a0, s16 a1, s16 a2, u8 a3)
+static void CreateHofMonitorSprite(s16 taskId, s16 x, s16 y, bool8 isSmallMonitor)
{
- u8 spriteIdAtEnd;
- if (!a3)
+ u8 spriteId;
+ if (!isSmallMonitor)
{
- spriteIdAtEnd = CreateSpriteAtEnd(&gSpriteTemplate_855C334, a1, a2, 0);
- SetSubspriteTables(&gSprites[spriteIdAtEnd], &gUnknown_0855C2C4);
+ spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HofMonitorBig, x, y, 0);
+ SetSubspriteTables(&gSprites[spriteId], &sSubspriteTable_HofMonitorBig);
} else
{
- spriteIdAtEnd = CreateSpriteAtEnd(&gSpriteTemplate_855C34C, a1, a2, 0);
+ spriteId = CreateSpriteAtEnd(&sSpriteTemplate_HofMonitorSmall, x, y, 0);
}
- gSprites[spriteIdAtEnd].invisible = TRUE;
- gSprites[spriteIdAtEnd].data[0] = a0;
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].data[0] = taskId;
}
-void SpriteCB_HallOfFameMonitor(struct Sprite *sprite)
+static void SpriteCB_HallOfFameMonitor(struct Sprite *sprite)
{
- if (gTasks[sprite->data[0]].data[15])
+ if (gTasks[sprite->data[0]].tStartHofFlash)
{
if (sprite->data[1] == 0 || (--sprite->data[1]) == 0)
{
@@ -1288,37 +1308,51 @@ void SpriteCB_HallOfFameMonitor(struct Sprite *sprite)
}
}
+#undef tState
+#undef tNumMons
+#undef tFirstBallX
+#undef tFirstBallY
+#undef tMonitorX
+#undef tMonitorY
+#undef tBallSpriteId
+#undef tMonitorSpriteId
+#undef tStartHofFlash
+#undef sState
+#undef sTimer
+#undef sCounter
+#undef sPlayHealSe
+#undef sNumMons
+#undef sSpriteId
+#undef sEffectSpriteId
void ReturnToFieldFromFlyMapSelect(void)
{
SetMainCallback2(CB2_ReturnToField);
- gFieldCallback = FieldCallback_Fly;
+ gFieldCallback = FieldCallback_UseFly;
}
-static void FieldCallback_Fly(void)
+static void FieldCallback_UseFly(void)
{
FadeInFromBlack();
- CreateTask(task00_8084310, 0);
+ CreateTask(Task_UseFly, 0);
ScriptContext2_Enable();
FreezeObjectEvents();
gFieldCallback = NULL;
}
-static void task00_8084310(u8 taskId)
+static void Task_UseFly(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
if (!task->data[0])
{
if (!IsWeatherNotFadingIn())
- {
return;
- }
+
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- if ((int)gFieldEffectArguments[0] > 5)
- {
+ if ((int)gFieldEffectArguments[0] > PARTY_SIZE - 1)
gFieldEffectArguments[0] = 0;
- }
+
FieldEffectStart(FLDEFF_USE_FLY);
task->data[0]++;
}
@@ -1327,18 +1361,18 @@ static void task00_8084310(u8 taskId)
Overworld_ResetStateAfterFly();
WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
- gFieldCallback = mapldr_08084390;
+ gFieldCallback = FieldCallback_FlyIntoMap;
DestroyTask(taskId);
}
}
-static void mapldr_08084390(void)
+static void FieldCallback_FlyIntoMap(void)
{
Overworld_PlaySpecialMapMusic();
FadeInFromBlack();
- CreateTask(c3_080843F8, 0);
+ CreateTask(Task_FlyIntoMap, 0);
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
- if (gPlayerAvatar.flags & 0x08)
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
{
ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST);
}
@@ -1347,7 +1381,7 @@ static void mapldr_08084390(void)
gFieldCallback = NULL;
}
-static void c3_080843F8(u8 taskId)
+static void Task_FlyIntoMap(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
@@ -1368,6 +1402,15 @@ static void c3_080843F8(u8 taskId)
}
}
+#define tState data[0]
+#define tFallOffset data[1]
+#define tTotalFall data[2]
+#define tSetTrigger data[3]
+#define tSubsprMode data[4]
+
+#define tVertShake data[1] // re-used
+#define tNumShakes data[2]
+
void FieldCB_FallWarpExit(void)
{
Overworld_PlaySpecialMapMusic();
@@ -1382,10 +1425,10 @@ static void Task_FallWarpFieldEffect(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
- while (sFallWarpFieldEffectFuncs[task->data[0]](task)); // return code signifies whether to continue blocking here
+ while (sFallWarpFieldEffectFuncs[task->tState](task));
}
-static bool8 FallWarpEffect_1(struct Task *task)
+static bool8 FallWarpEffect_Init(struct Task *task)
{
struct ObjectEvent *playerObject;
struct Sprite *playerSprite;
@@ -1395,59 +1438,57 @@ static bool8 FallWarpEffect_1(struct Task *task)
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
gPlayerAvatar.preventStep = TRUE;
ObjectEventSetHeldMovement(playerObject, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
- task->data[4] = playerSprite->subspriteMode;
+ task->tSubsprMode = playerSprite->subspriteMode;
playerObject->fixedPriority = 1;
playerSprite->oam.priority = 1;
playerSprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
- task->data[0]++;
+ task->tState++;
return TRUE;
}
-static bool8 FallWarpEffect_2(struct Task *task)
+static bool8 FallWarpEffect_WaitWeather(struct Task *task)
{
if (IsWeatherNotFadingIn())
- {
- task->data[0]++;
- }
+ task->tState++;
+
return FALSE;
}
-static bool8 FallWarpEffect_3(struct Task *task)
+static bool8 FallWarpEffect_StartFall(struct Task *task)
{
struct Sprite *sprite;
s16 centerToCornerVecY;
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
- task->data[1] = 1;
- task->data[2] = 0;
+ task->tFallOffset = 1;
+ task->tTotalFall = 0;
gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
PlaySE(SE_RU_HYUU);
- task->data[0]++;
+ task->tState++;
return FALSE;
}
-static bool8 FallWarpEffect_4(struct Task *task)
+static bool8 FallWarpEffect_Fall(struct Task *task)
{
struct ObjectEvent *objectEvent;
struct Sprite *sprite;
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.y += task->data[1];
- if (task->data[1] < 8)
+ sprite->pos2.y += task->tFallOffset;
+ if (task->tFallOffset < 8)
{
- task->data[2] += task->data[1];
- if (task->data[2] & 0xf)
- {
- task->data[1] <<= 1;
- }
+ task->tTotalFall += task->tFallOffset;
+
+ if (task->tTotalFall & 0xf)
+ task->tFallOffset <<= 1;
}
- if (task->data[3] == 0 && sprite->pos2.y >= -16)
+ if (task->tSetTrigger == FALSE && sprite->pos2.y >= -16)
{
- task->data[3]++;
+ task->tSetTrigger++;
objectEvent->fixedPriority = 0;
- sprite->subspriteMode = task->data[4];
+ sprite->subspriteMode = task->tSubsprMode;
objectEvent->triggerGroundEffectsOnMove = 1;
}
if (sprite->pos2.y >= 0)
@@ -1456,37 +1497,36 @@ static bool8 FallWarpEffect_4(struct Task *task)
objectEvent->triggerGroundEffectsOnStop = 1;
objectEvent->landingJump = 1;
sprite->pos2.y = 0;
- task->data[0]++;
+ task->tState++;
}
return FALSE;
}
-static bool8 FallWarpEffect_5(struct Task *task)
+static bool8 FallWarpEffect_Land(struct Task *task)
{
- task->data[0]++;
- task->data[1] = 4;
- task->data[2] = 0;
+ task->tState++;
+ task->tVertShake = 4;
+ task->tNumShakes = 0;
SetCameraPanningCallback(NULL);
return TRUE;
}
-static bool8 FallWarpEffect_6(struct Task *task)
+static bool8 FallWarpEffect_CameraShake(struct Task *task)
{
- SetCameraPanning(0, task->data[1]);
- task->data[1] = -task->data[1];
- task->data[2]++;
- if ((task->data[2] & 3) == 0)
- {
- task->data[1] >>= 1;
- }
- if (task->data[1] == 0)
- {
- task->data[0]++;
- }
+ SetCameraPanning(0, task->tVertShake);
+ task->tVertShake = -task->tVertShake;
+ task->tNumShakes++;
+
+ if ((task->tNumShakes & 3) == 0)
+ task->tVertShake >>= 1;
+
+ if (task->tVertShake == 0)
+ task->tState++;
+
return FALSE;
}
-static bool8 FallWarpEffect_7(struct Task *task)
+static bool8 FallWarpEffect_End(struct Task *task)
{
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
@@ -1497,89 +1537,100 @@ static bool8 FallWarpEffect_7(struct Task *task)
return FALSE;
}
+#undef tState
+#undef tFallOffset
+#undef tTotalFall
+#undef tSetTrigger
+#undef tSubsprMode
+#undef tVertShake
+#undef tNumShakes
+
+#define tState data[0]
+#define tGoingUp data[1]
+
void StartEscalatorWarp(u8 metatileBehavior, u8 priority)
{
u8 taskId;
- taskId = CreateTask(Task_EscalatorWarpFieldEffect, priority);
- gTasks[taskId].data[1] = 0;
+ taskId = CreateTask(Task_EscalatorWarpOut, priority);
+ gTasks[taskId].tGoingUp = FALSE;
if (metatileBehavior == MB_UP_ESCALATOR)
{
- gTasks[taskId].data[1] = 1;
+ gTasks[taskId].tGoingUp = TRUE;
}
}
-static void Task_EscalatorWarpFieldEffect(u8 taskId)
+static void Task_EscalatorWarpOut(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
- while (sEscalatorWarpFieldEffectFuncs[task->data[0]](task));
+ while (sEscalatorWarpOutFieldEffectFuncs[task->tState](task));
}
-static bool8 EscalatorWarpEffect_1(struct Task *task)
+static bool8 EscalatorWarpOut_Init(struct Task *task)
{
FreezeObjectEvents();
CameraObjectReset2();
- sub_80E1558(task->data[1]);
- task->data[0]++;
+ StartEscalator(task->tGoingUp);
+ task->tState++;
return FALSE;
}
-static bool8 EscalatorWarpEffect_2(struct Task *task)
+static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task)
{
struct ObjectEvent *objectEvent;
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent))
{
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(GetPlayerFacingDirection()));
- task->data[0]++;
+ task->tState++;
task->data[2] = 0;
task->data[3] = 0;
- if ((u8)task->data[1] == 0)
+ if ((u8)task->tGoingUp == FALSE)
{
- task->data[0] = 4;
+ task->tState = 4; // jump to EscalatorWarpOut_Down_Ride
}
PlaySE(SE_ESUKA);
}
return FALSE;
}
-static bool8 EscalatorWarpEffect_3(struct Task *task)
+static bool8 EscalatorWarpOut_Up_Ride(struct Task *task)
{
- sub_80B6FB8(task);
+ RideUpEscalatorOut(task);
if (task->data[2] > 3)
{
- sub_80B7050();
- task->data[0]++;
+ FadeOutAtEndOfEscalator();
+ task->tState++;
}
return FALSE;
}
-static bool8 EscalatorWarpEffect_4(struct Task *task)
+static bool8 EscalatorWarpOut_Up_End(struct Task *task)
{
- sub_80B6FB8(task);
- sub_80B7060();
+ RideUpEscalatorOut(task);
+ WarpAtEndOfEscalator();
return FALSE;
}
-static bool8 EscalatorWarpEffect_5(struct Task *task)
+static bool8 EscalatorWarpOut_Down_Ride(struct Task *task)
{
- sub_80B7004(task);
+ RideDownEscalatorOut(task);
if (task->data[2] > 3)
{
- sub_80B7050();
- task->data[0]++;
+ FadeOutAtEndOfEscalator();
+ task->tState++;
}
return FALSE;
}
-static bool8 EscalatorWarpEffect_6(struct Task *task)
+static bool8 EscalatorWarpOut_Down_End(struct Task *task)
{
- sub_80B7004(task);
- sub_80B7060();
+ RideDownEscalatorOut(task);
+ WarpAtEndOfEscalator();
return FALSE;
}
-static void sub_80B6FB8(struct Task *task)
+static void RideUpEscalatorOut(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1592,7 +1643,7 @@ static void sub_80B6FB8(struct Task *task)
}
}
-static void sub_80B7004(struct Task *task)
+static void RideDownEscalatorOut(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1605,41 +1656,46 @@ static void sub_80B7004(struct Task *task)
}
}
-static void sub_80B7050(void)
+static void FadeOutAtEndOfEscalator(void)
{
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
}
-static void sub_80B7060(void)
+static void WarpAtEndOfEscalator(void)
{
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
- sub_80E1570();
+ StopEscalator();
WarpIntoMap();
- gFieldCallback = sub_80B70B4;
+ gFieldCallback = FieldCallback_EscalatorWarpIn;
SetMainCallback2(CB2_LoadMap);
- DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpFieldEffect));
+ DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpOut));
}
}
-static void sub_80B70B4(void)
+#undef tState
+#undef tGoingUp
+
+static void FieldCallback_EscalatorWarpIn(void)
{
Overworld_PlaySpecialMapMusic();
WarpFadeInScreen();
ScriptContext2_Enable();
- CreateTask(sub_80B70DC, 0);
+ CreateTask(Task_EscalatorWarpIn, 0);
gFieldCallback = NULL;
}
-static void sub_80B70DC(u8 taskId)
+#define tState data[0]
+
+static void Task_EscalatorWarpIn(u8 taskId)
{
struct Task *task;
task = &gTasks[taskId];
- while (gUnknown_0855C3FC[task->data[0]](task));
+ while (sEscalatorWarpInFieldEffectFuncs[task->tState](task));
}
-static bool8 sub_80B7114(struct Task *task)
+static bool8 EscalatorWarpIn_Init(struct Task *task)
{
struct ObjectEvent *objectEvent;
s16 x;
@@ -1650,31 +1706,35 @@ static bool8 sub_80B7114(struct Task *task)
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(DIR_EAST));
PlayerGetDestCoords(&x, &y);
behavior = MapGridGetMetatileBehaviorAt(x, y);
- task->data[0]++;
+ task->tState++;
task->data[1] = 16;
- if (behavior == 0x6b)
+
+ if (behavior == MB_DOWN_ESCALATOR)
{
- behavior = 1;
- task->data[0] = 3;
- } else
+ // If dest is down escalator tile, player is riding up
+ behavior = TRUE;
+ task->tState = 3; // jump to EscalatorWarpIn_Up_Init
+ }
+ else // MB_UP_ESCALATOR
{
- behavior = 0;
+ // If dest is up escalator tile, player is riding down
+ behavior = FALSE;
}
- sub_80E1558(behavior);
+ StartEscalator(behavior);
return TRUE;
}
-static bool8 sub_80B7190(struct Task *task)
+static bool8 EscalatorWarpIn_Down_Init(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
sprite->pos2.x = Cos(0x84, task->data[1]);
sprite->pos2.y = Sin(0x94, task->data[1]);
- task->data[0]++;
+ task->tState++;
return FALSE;
}
-static bool8 sub_80B71D0(struct Task *task)
+static bool8 EscalatorWarpIn_Down_Ride(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1689,22 +1749,22 @@ static bool8 sub_80B71D0(struct Task *task)
{
sprite->pos2.x = 0;
sprite->pos2.y = 0;
- task->data[0] = 5;
+ task->tState = 5;
}
return FALSE;
}
-static bool8 sub_80B7230(struct Task *task)
+static bool8 EscalatorWarpIn_Up_Init(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
sprite->pos2.x = Cos(0x7c, task->data[1]);
sprite->pos2.y = Sin(0x76, task->data[1]);
- task->data[0]++;
+ task->tState++;
return FALSE;
}
-static bool8 sub_80B7270(struct Task *task)
+static bool8 EscalatorWarpIn_Up_Ride(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
@@ -1719,23 +1779,23 @@ static bool8 sub_80B7270(struct Task *task)
{
sprite->pos2.x = 0;
sprite->pos2.y = 0;
- task->data[0]++;
+ task->tState++;
}
return FALSE;
}
-static bool8 sub_80B72D0(struct Task *task)
+static bool8 EscalatorWarpIn_WaitForMovement(struct Task *task)
{
- if (sub_80E1584())
+ if (IsEscalatorMoving())
{
return FALSE;
}
- sub_80E1570();
- task->data[0]++;
+ StopEscalator();
+ task->tState++;
return TRUE;
}
-static bool8 sub_80B72F4(struct Task *task)
+static bool8 EscalatorWarpIn_End(struct Task *task)
{
struct ObjectEvent *objectEvent;
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
@@ -1744,104 +1804,113 @@ static bool8 sub_80B72F4(struct Task *task)
CameraObjectReset1();
ScriptContext2_Disable();
ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST));
- DestroyTask(FindTaskIdByFunc(sub_80B70DC));
+ DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpIn));
}
return FALSE;
}
+#undef tState
+
+#define tState data[0]
+#define tMonId data[1]
+
bool8 FldEff_UseWaterfall(void)
{
u8 taskId;
- taskId = CreateTask(sub_80B7384, 0xff);
- gTasks[taskId].data[1] = gFieldEffectArguments[0];
- sub_80B7384(taskId);
+ taskId = CreateTask(Task_UseWaterfall, 0xff);
+ gTasks[taskId].tMonId = gFieldEffectArguments[0];
+ Task_UseWaterfall(taskId);
return FALSE;
}
-static void sub_80B7384(u8 taskId)
+static void Task_UseWaterfall(u8 taskId)
{
- while (gUnknown_0855C418[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId]));
+ while (sWaterfallFieldEffectFuncs[gTasks[taskId].tState](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId]));
}
-static bool8 sub_80B73D0(struct Task *task, struct ObjectEvent *objectEvent)
+static bool8 WaterfallFieldEffect_Init(struct Task *task, struct ObjectEvent *objectEvent)
{
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
- task->data[0]++;
+ task->tState++;
return FALSE;
}
-static bool8 waterfall_1_do_anim_probably(struct Task *task, struct ObjectEvent *objectEvent)
+static bool8 WaterfallFieldEffect_ShowMon(struct Task *task, struct ObjectEvent *objectEvent)
{
ScriptContext2_Enable();
if (!ObjectEventIsMovementOverridden(objectEvent))
{
ObjectEventClearHeldMovementIfFinished(objectEvent);
- gFieldEffectArguments[0] = task->data[1];
+ gFieldEffectArguments[0] = task->tMonId;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
- task->data[0]++;
+ task->tState++;
}
return FALSE;
}
-static bool8 waterfall_2_wait_anim_finish_probably(struct Task *task, struct ObjectEvent *objectEvent)
+static bool8 WaterfallFieldEffect_WaitForShowMon(struct Task *task, struct ObjectEvent *objectEvent)
{
if (FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
return FALSE;
}
- task->data[0]++;
+ task->tState++;
return TRUE;
}
-static bool8 sub_80B7450(struct Task *task, struct ObjectEvent *objectEvent)
+static bool8 WaterfallFieldEffect_RideUp(struct Task *task, struct ObjectEvent *objectEvent)
{
ObjectEventSetHeldMovement(objectEvent, GetWalkSlowMovementAction(DIR_NORTH));
- task->data[0]++;
+ task->tState++;
return FALSE;
}
-static bool8 sub_80B7478(struct Task *task, struct ObjectEvent *objectEvent)
+static bool8 WaterfallFieldEffect_ContinueRideOrEnd(struct Task *task, struct ObjectEvent *objectEvent)
{
if (!ObjectEventClearHeldMovementIfFinished(objectEvent))
- {
return FALSE;
- }
+
if (MetatileBehavior_IsWaterfall(objectEvent->currentMetatileBehavior))
{
- task->data[0] = 3;
+ // Still ascending waterfall, back to WaterfallFieldEffect_RideUp
+ task->tState = 3;
return TRUE;
}
+
ScriptContext2_Disable();
gPlayerAvatar.preventStep = FALSE;
- DestroyTask(FindTaskIdByFunc(sub_80B7384));
+ DestroyTask(FindTaskIdByFunc(Task_UseWaterfall));
FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL);
return FALSE;
}
+#undef tState
+#undef tMonId
+
bool8 FldEff_UseDive(void)
{
u8 taskId;
- taskId = CreateTask(Task_Dive, 0xff);
+ taskId = CreateTask(Task_UseDive, 0xff);
gTasks[taskId].data[15] = gFieldEffectArguments[0];
gTasks[taskId].data[14] = gFieldEffectArguments[1];
- Task_Dive(taskId);
+ Task_UseDive(taskId);
return FALSE;
}
-void Task_Dive(u8 taskId)
+void Task_UseDive(u8 taskId)
{
- while (gUnknown_0855C42C[gTasks[taskId].data[0]](&gTasks[taskId]));
+ while (sDiveFieldEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]));
}
-static bool8 dive_1_lock(struct Task *task)
+static bool8 DiveFieldEffect_Init(struct Task *task)
{
gPlayerAvatar.preventStep = TRUE;
task->data[0]++;
return FALSE;
}
-static bool8 dive_2_unknown(struct Task *task)
+static bool8 DiveFieldEffect_ShowMon(struct Task *task)
{
ScriptContext2_Enable();
gFieldEffectArguments[0] = task->data[15];
@@ -1850,14 +1919,16 @@ static bool8 dive_2_unknown(struct Task *task)
return FALSE;
}
-static bool8 dive_3_unknown(struct Task *task)
+static bool8 DiveFieldEffect_TryWarp(struct Task *task)
{
struct MapPosition mapPosition;
PlayerGetDestCoords(&mapPosition.x, &mapPosition.y);
+
+ // Wait for show mon first
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
- dive_warp(&mapPosition, gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior);
- DestroyTask(FindTaskIdByFunc(Task_Dive));
+ TryDoDiveWarp(&mapPosition, gObjectEvents[gPlayerAvatar.objectEventId].currentMetatileBehavior);
+ DestroyTask(FindTaskIdByFunc(Task_UseDive));
FieldEffectActiveListRemove(FLDEFF_USE_DIVE);
}
return FALSE;
@@ -1873,7 +1944,7 @@ static void Task_LavaridgeGymB1FWarp(u8 taskId)
while (sLavaridgeGymB1FWarpEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], &gSprites[gPlayerAvatar.spriteId]));
}
-static bool8 LavaridgeGymB1FWarpEffect_1(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
FreezeObjectEvents();
CameraObjectReset2();
@@ -1885,7 +1956,7 @@ static bool8 LavaridgeGymB1FWarpEffect_1(struct Task *task, struct ObjectEvent *
return TRUE;
}
-static bool8 LavaridgeGymB1FWarpEffect_2(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpEffect_CameraShake(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
SetCameraPanning(0, task->data[1]);
task->data[1] = -task->data[1];
@@ -1898,7 +1969,7 @@ static bool8 LavaridgeGymB1FWarpEffect_2(struct Task *task, struct ObjectEvent *
return FALSE;
}
-static bool8 LavaridgeGymB1FWarpEffect_3(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpEffect_Launch(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
sprite->pos2.y = 0;
task->data[3] = 1;
@@ -1906,13 +1977,13 @@ static bool8 LavaridgeGymB1FWarpEffect_3(struct Task *task, struct ObjectEvent *
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
- FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
+ FieldEffectStart(FLDEFF_ASH_LAUNCH);
PlaySE(SE_W153);
task->data[0]++;
return TRUE;
}
-static bool8 LavaridgeGymB1FWarpEffect_4(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpEffect_Rise(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
s16 centerToCornerVecY;
SetCameraPanning(0, task->data[1]);
@@ -1955,7 +2026,7 @@ static bool8 LavaridgeGymB1FWarpEffect_4(struct Task *task, struct ObjectEvent *
return FALSE;
}
-static bool8 LavaridgeGymB1FWarpEffect_5(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpEffect_FadeOut(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
@@ -1963,7 +2034,7 @@ static bool8 LavaridgeGymB1FWarpEffect_5(struct Task *task, struct ObjectEvent *
return FALSE;
}
-static bool8 LavaridgeGymB1FWarpEffect_6(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpEffect_Warp(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
@@ -1989,7 +2060,7 @@ static void Task_LavaridgeGymB1FWarpExit(u8 taskId)
while (sLavaridgeGymB1FWarpExitEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], &gSprites[gPlayerAvatar.spriteId]));
}
-static bool8 LavaridgeGymB1FWarpExitEffect_1(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpExitEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
CameraObjectReset2();
FreezeObjectEvents();
@@ -1999,7 +2070,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_1(struct Task *task, struct ObjectEve
return FALSE;
}
-static bool8 LavaridgeGymB1FWarpExitEffect_2(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpExitEffect_StartPopOut(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (IsWeatherNotFadingIn())
{
@@ -2007,13 +2078,13 @@ static bool8 LavaridgeGymB1FWarpExitEffect_2(struct Task *task, struct ObjectEve
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
- task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
+ task->data[1] = FieldEffectStart(FLDEFF_ASH_PUFF);
task->data[0]++;
}
return FALSE;
}
-static bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpExitEffect_PopOut(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
sprite = &gSprites[task->data[1]];
if (sprite->animCmdIndex > 1)
@@ -2027,7 +2098,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_3(struct Task *task, struct ObjectEve
return FALSE;
}
-static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGymB1FWarpExitEffect_End(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
{
@@ -2039,23 +2110,21 @@ static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *task, struct ObjectEve
return FALSE;
}
-// For the ash puff effect when warping off the B1F ash tiles
-u8 FldEff_LavaridgeGymWarp(void)
+// For the ash effect when jumping off the Lavaridge Gym B1F warp tiles
+u8 FldEff_AshLaunch(void)
{
u8 spriteId;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ASH_LAUNCH], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
gSprites[spriteId].oam.priority = gFieldEffectArguments[3];
- gSprites[spriteId].coordOffsetEnabled = 1;
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
return spriteId;
}
-void SpriteCB_LavaridgeGymWarp(struct Sprite *sprite)
+void SpriteCB_AshLaunch(struct Sprite *sprite)
{
if (sprite->animEnded)
- {
- FieldEffectStop(sprite, FLDEFF_LAVARIDGE_GYM_WARP);
- }
+ FieldEffectStop(sprite, FLDEFF_ASH_LAUNCH);
}
void StartLavaridgeGym1FWarp(u8 priority)
@@ -2068,7 +2137,7 @@ static void Task_LavaridgeGym1FWarp(u8 taskId)
while(sLavaridgeGym1FWarpEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId], &gObjectEvents[gPlayerAvatar.objectEventId], &gSprites[gPlayerAvatar.spriteId]));
}
-static bool8 LavaridgeGym1FWarpEffect_1(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGym1FWarpEffect_Init(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
FreezeObjectEvents();
CameraObjectReset2();
@@ -2078,7 +2147,7 @@ static bool8 LavaridgeGym1FWarpEffect_1(struct Task *task, struct ObjectEvent *o
return FALSE;
}
-static bool8 LavaridgeGym1FWarpEffect_2(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGym1FWarpEffect_AshPuff(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
{
@@ -2088,7 +2157,7 @@ static bool8 LavaridgeGym1FWarpEffect_2(struct Task *task, struct ObjectEvent *o
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
gFieldEffectArguments[3] = sprite->oam.priority;
- task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
+ task->data[1] = FieldEffectStart(FLDEFF_ASH_PUFF);
task->data[0]++;
} else
{
@@ -2100,7 +2169,7 @@ static bool8 LavaridgeGym1FWarpEffect_2(struct Task *task, struct ObjectEvent *o
return FALSE;
}
-static bool8 LavaridgeGym1FWarpEffect_3(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGym1FWarpEffect_Disappear(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (gSprites[task->data[1]].animCmdIndex == 2)
{
@@ -2110,9 +2179,9 @@ static bool8 LavaridgeGym1FWarpEffect_3(struct Task *task, struct ObjectEvent *o
return FALSE;
}
-static bool8 LavaridgeGym1FWarpEffect_4(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGym1FWarpEffect_FadeOut(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
+ if (!FieldEffectActiveListContains(FLDEFF_ASH_PUFF))
{
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
@@ -2121,7 +2190,7 @@ static bool8 LavaridgeGym1FWarpEffect_4(struct Task *task, struct ObjectEvent *o
return FALSE;
}
-static bool8 LavaridgeGym1FWarpEffect_5(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 LavaridgeGym1FWarpEffect_Warp(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
if (!gPaletteFade.active && BGMusicStopped() == TRUE)
{
@@ -2133,48 +2202,53 @@ static bool8 LavaridgeGym1FWarpEffect_5(struct Task *task, struct ObjectEvent *o
return FALSE;
}
-u8 FldEff_PopOutOfAsh(void)
+// For the ash effect when a trainer pops out of ash, or when the player enters/exits a warp in Lavaridge Gym 1F
+u8 FldEff_AshPuff(void)
{
u8 spriteId;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ASH_PUFF], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
gSprites[spriteId].oam.priority = gFieldEffectArguments[3];
- gSprites[spriteId].coordOffsetEnabled = 1;
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
return spriteId;
}
-void SpriteCB_PopOutOfAsh(struct Sprite *sprite)
+void SpriteCB_AshPuff(struct Sprite *sprite)
{
if (sprite->animEnded)
- {
- FieldEffectStop(sprite, FLDEFF_POP_OUT_OF_ASH);
- }
+ FieldEffectStop(sprite, FLDEFF_ASH_PUFF);
}
+#define tState data[0]
+#define tSpinDelay data[1]
+#define tNumTurns data[2]
+#define tTimer data[14]
+#define tStartDir data[15]
+
void StartEscapeRopeFieldEffect(void)
{
ScriptContext2_Enable();
FreezeObjectEvents();
- CreateTask(DoEscapeRopeFieldEffect, 0x50);
+ CreateTask(Task_EscapeRopeWarpOut, 80);
}
-static void DoEscapeRopeFieldEffect(u8 taskId)
+static void Task_EscapeRopeWarpOut(u8 taskId)
{
- gEscapeRopeFieldEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sEscapeRopeWarpOutEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void EscapeRopeFieldEffect_Step0(struct Task *task)
+static void EscapeRopeWarpOutEffect_Init(struct Task *task)
{
- task->data[0]++;
- task->data[14] = 64;
- task->data[15] = GetPlayerFacingDirection();
+ task->tState++;
+ task->tTimer = 64;
+ task->tStartDir = GetPlayerFacingDirection();
}
-static void EscapeRopeFieldEffect_Step1(struct Task *task)
+static void EscapeRopeWarpOutEffect_Spin(struct Task *task)
{
struct ObjectEvent *objectEvent;
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
- if (task->data[14] != 0 && (--task->data[14]) == 0)
+ if (task->tTimer != 0 && (--task->tTimer) == 0)
{
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
@@ -2182,32 +2256,31 @@ static void EscapeRopeFieldEffect_Step1(struct Task *task)
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent))
{
- if (task->data[14] == 0 && !gPaletteFade.active && BGMusicStopped() == TRUE)
+ if (task->tTimer == 0 && !gPaletteFade.active && BGMusicStopped() == TRUE)
{
- SetObjectEventDirection(objectEvent, task->data[15]);
+ SetObjectEventDirection(objectEvent, task->tStartDir);
SetWarpDestinationToEscapeWarp();
WarpIntoMap();
- gFieldCallback = mapldr_080859D4;
+ gFieldCallback = FieldCallback_EscapeRopeWarpIn;
SetMainCallback2(CB2_LoadMap);
- DestroyTask(FindTaskIdByFunc(DoEscapeRopeFieldEffect));
- } else if (task->data[1] == 0 || (--task->data[1]) == 0)
+ DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpOut));
+ }
+ else if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0)
{
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection]));
- if (task->data[2] < 12)
- {
- task->data[2]++;
- }
- task->data[1] = 8 >> (task->data[2] >> 2);
+ if (task->tNumTurns < 12)
+ task->tNumTurns++;
+ task->tSpinDelay = 8 >> (task->tNumTurns >> 2);
}
}
}
-void (*const gUnknown_0855C484[])(struct Task *) = {
- sub_80B7EC4,
- sub_80B7EE8
+void (*const sEscapeRopeWarpInEffectFuncs[])(struct Task *) = {
+ EscapeRopeWarpInEffect_Init,
+ EscapeRopeWarpInEffect_Spin
};
-static void mapldr_080859D4(void)
+static void FieldCallback_EscapeRopeWarpIn(void)
{
Overworld_PlaySpecialMapMusic();
WarpFadeInScreen();
@@ -2215,78 +2288,84 @@ static void mapldr_080859D4(void)
FreezeObjectEvents();
gFieldCallback = NULL;
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
- CreateTask(sub_80B7E94, 0);
+ CreateTask(Task_EscapeRopeWarpIn, 0);
}
-static void sub_80B7E94(u8 taskId)
+static void Task_EscapeRopeWarpIn(u8 taskId)
{
- gUnknown_0855C484[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sEscapeRopeWarpInEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B7EC4(struct Task *task)
+static void EscapeRopeWarpInEffect_Init(struct Task *task)
{
if (IsWeatherNotFadingIn())
{
- task->data[0]++;
- task->data[15] = GetPlayerFacingDirection();
+ task->tState++;
+ task->tStartDir = GetPlayerFacingDirection();
}
}
-static void sub_80B7EE8(struct Task *task)
+static void EscapeRopeWarpInEffect_Spin(struct Task *task)
{
- u8 spinDirections[5] = {1, 3, 4, 2, 1};
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- if (task->data[1] == 0 || (--task->data[1]) == 0)
+ if (task->tSpinDelay == 0 || (--task->tSpinDelay) == 0)
{
if (ObjectEventIsMovementOverridden(objectEvent) && !ObjectEventClearHeldMovementIfFinished(objectEvent))
{
return;
}
- if (task->data[2] >= 32 && task->data[15] == GetPlayerFacingDirection())
+ if (task->tNumTurns >= 32 && task->tStartDir == GetPlayerFacingDirection())
{
objectEvent->invisible = FALSE;
ScriptContext2_Disable();
UnfreezeObjectEvents();
- DestroyTask(FindTaskIdByFunc(sub_80B7E94));
+ DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpIn));
return;
}
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(spinDirections[objectEvent->facingDirection]));
- if (task->data[2] < 32)
- {
- task->data[2]++;
- }
- task->data[1] = task->data[2] >> 2;
+ if (task->tNumTurns < 32)
+ task->tNumTurns++;
+ task->tSpinDelay = task->tNumTurns >> 2;
}
objectEvent->invisible ^= 1;
}
-void CreateTeleportFieldEffectTask(void)
+#undef tState
+#undef tSpinDelay
+#undef tNumTurns
+#undef tTimer
+#undef tStartDir
+
+#define tState data[0]
+
+void FldEff_TeleportWarpOut(void)
{
- CreateTask(ExecuteTeleportFieldEffectTask, 0);
+ CreateTask(Task_TeleportWarpOut, 0);
}
-static void (*const sTeleportFieldEffectTasks[])(struct Task *) = {
- TeleportFieldEffectTask1,
- TeleportFieldEffectTask2,
- TeleportFieldEffectTask3,
- TeleportFieldEffectTask4
+static void (*const sTeleportWarpOutFieldEffectFuncs[])(struct Task *) = {
+ TeleportWarpOutFieldEffect_Init,
+ TeleportWarpOutFieldEffect_SpinGround,
+ TeleportWarpOutFieldEffect_SpinExit,
+ TeleportWarpOutFieldEffect_End
};
-static void ExecuteTeleportFieldEffectTask(u8 taskId)
+static void Task_TeleportWarpOut(u8 taskId)
{
- sTeleportFieldEffectTasks[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sTeleportWarpOutFieldEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void TeleportFieldEffectTask1(struct Task *task)
+static void TeleportWarpOutFieldEffect_Init(struct Task *task)
{
ScriptContext2_Enable();
FreezeObjectEvents();
CameraObjectReset2();
task->data[15] = GetPlayerFacingDirection();
- task->data[0]++;
+ task->tState++;
}
-static void TeleportFieldEffectTask2(struct Task *task)
+static void TeleportWarpOutFieldEffect_SpinGround(struct Task *task)
{
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
@@ -2298,7 +2377,7 @@ static void TeleportFieldEffectTask2(struct Task *task)
}
if (task->data[2] > 7 && task->data[15] == objectEvent->facingDirection)
{
- task->data[0]++;
+ task->tState++;
task->data[1] = 4;
task->data[2] = 8;
task->data[3] = 1;
@@ -2306,7 +2385,7 @@ static void TeleportFieldEffectTask2(struct Task *task)
}
}
-static void TeleportFieldEffectTask3(struct Task *task)
+static void TeleportWarpOutFieldEffect_SpinExit(struct Task *task)
{
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
@@ -2328,13 +2407,13 @@ static void TeleportFieldEffectTask3(struct Task *task)
}
if (task->data[4] >= 0xa8)
{
- task->data[0]++;
+ task->tState++;
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
}
}
-static void TeleportFieldEffectTask4(struct Task *task)
+static void TeleportWarpOutFieldEffect_End(struct Task *task)
{
if (!gPaletteFade.active)
{
@@ -2349,13 +2428,13 @@ static void TeleportFieldEffectTask4(struct Task *task)
SetWarpDestinationToLastHealLocation();
WarpIntoMap();
SetMainCallback2(CB2_LoadMap);
- gFieldCallback = mapldr_08085D88;
- DestroyTask(FindTaskIdByFunc(ExecuteTeleportFieldEffectTask));
+ gFieldCallback = FieldCallback_TeleportWarpIn;
+ DestroyTask(FindTaskIdByFunc(Task_TeleportWarpOut));
}
}
}
-static void mapldr_08085D88(void)
+static void FieldCallback_TeleportWarpIn(void)
{
Overworld_PlaySpecialMapMusic();
WarpFadeInScreen();
@@ -2364,21 +2443,21 @@ static void mapldr_08085D88(void)
gFieldCallback = NULL;
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
CameraObjectReset2();
- CreateTask(sub_80B8250, 0);
+ CreateTask(Task_TeleportWarpIn, 0);
}
-void (*const gUnknown_0855C49C[])(struct Task *) = {
- sub_80B8280,
- sub_80B830C,
- sub_80B8410
+void (*const sTeleportWarpInFieldEffectFuncs[])(struct Task *) = {
+ TeleportWarpInFieldEffect_Init,
+ TeleportWarpInFieldEffect_SpinEnter,
+ TeleportWarpInFieldEffect_SpinGround
};
-static void sub_80B8250(u8 taskId)
+static void Task_TeleportWarpIn(u8 taskId)
{
- gUnknown_0855C49C[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sTeleportWarpInFieldEffectFuncs[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-static void sub_80B8280(struct Task *task)
+static void TeleportWarpInFieldEffect_Init(struct Task *task)
{
struct Sprite *sprite;
s16 centerToCornerVecY;
@@ -2397,9 +2476,9 @@ static void sub_80B8280(struct Task *task)
}
}
-static void sub_80B830C(struct Task *task)
+static void TeleportWarpInFieldEffect_SpinEnter(struct Task *task)
{
- u8 spinDirections[5] = {1, 3, 4, 2, 1};
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((sprite->pos2.y += task->data[1]) >= -8)
@@ -2436,9 +2515,9 @@ static void sub_80B830C(struct Task *task)
}
}
-static void sub_80B8410(struct Task *task)
+static void TeleportWarpInFieldEffect_SpinGround(struct Task *task)
{
- u8 spinDirections[5] = {1, 3, 4, 2, 1};
+ u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if ((--task->data[1]) == 0)
{
@@ -2449,22 +2528,39 @@ static void sub_80B8410(struct Task *task)
ScriptContext2_Disable();
CameraObjectReset1();
UnfreezeObjectEvents();
- DestroyTask(FindTaskIdByFunc(sub_80B8250));
+ DestroyTask(FindTaskIdByFunc(Task_TeleportWarpIn));
}
}
}
+// Task data for Task_FieldMoveShowMonOutDoors
+#define tState data[0]
+#define tWinHoriz data[1]
+#define tWinVert data[2]
+#define tWinIn data[3]
+#define tWinOut data[4]
+#define tBgHoriz data[5]
+#define tBgVert data[6]
+#define tMonSpriteId data[15]
+
+// Sprite data for field move mon sprite
+#define sSpecies data[0]
+#define sOnscreenTimer data[1]
+#define sSlidOffscreen data[7]
+
+// There are two variants (outdoor/indoor) of the "show mon for a field move" effect
+// Outdoor has a black background with thick white streaks and appears from the right by stretching vertically and horizontally
+// Indoor has blue background with thin white streaks and appears from the left by stretching horizontally
+// For both the background streaks move to the right, and the mon sprite enters from the right and exits left
bool8 FldEff_FieldMoveShowMon(void)
{
u8 taskId;
if (IsMapTypeOutdoors(GetCurrentMapType()) == TRUE)
- {
- taskId = CreateTask(sub_80B8554, 0xff);
- } else
- {
- taskId = CreateTask(sub_80B88B4, 0xff);
- }
- gTasks[taskId].data[15] = sub_80B8C60(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ taskId = CreateTask(Task_FieldMoveShowMonOutdoors, 0xff);
+ else
+ taskId = CreateTask(Task_FieldMoveShowMonIndoors, 0xff);
+
+ gTasks[taskId].tMonSpriteId = InitFieldMoveMonSprite(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
return FALSE;
}
@@ -2482,240 +2578,248 @@ bool8 FldEff_FieldMoveShowMonInit(void)
return FALSE;
}
-void (*const gUnknown_0855C4A8[])(struct Task *) = {
- sub_80B8584,
- sub_80B85F8,
- sub_80B8660,
- sub_80B86EC,
- sub_80B871C,
- sub_80B8770,
- overworld_bg_setup_2,
+void (*const sFieldMoveShowMonOutdoorsEffectFuncs[])(struct Task *) = {
+ FieldMoveShowMonOutdoorsEffect_Init,
+ FieldMoveShowMonOutdoorsEffect_LoadGfx,
+ FieldMoveShowMonOutdoorsEffect_CreateBanner,
+ FieldMoveShowMonOutdoorsEffect_WaitForMon,
+ FieldMoveShowMonOutdoorsEffect_ShrinkBanner,
+ FieldMoveShowMonOutdoorsEffect_RestoreBg,
+ FieldMoveShowMonOutdoorsEffect_End,
};
-static void sub_80B8554(u8 taskId)
+static void Task_FieldMoveShowMonOutdoors(u8 taskId)
{
- gUnknown_0855C4A8[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sFieldMoveShowMonOutdoorsEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B8584(struct Task *task)
+static void FieldMoveShowMonOutdoorsEffect_Init(struct Task *task)
{
task->data[11] = REG_WININ;
task->data[12] = REG_WINOUT;
- StoreWordInTwoHalfwords(&task->data[13], (u32)gMain.vblankCallback);
- task->data[1] = 0xf0f1;
- task->data[2] = 0x5051;
- task->data[3] = 0x3f;
- task->data[4] = 0x3e;
- SetGpuReg(REG_OFFSET_WIN0H, task->data[1]);
- SetGpuReg(REG_OFFSET_WIN0V, task->data[2]);
- SetGpuReg(REG_OFFSET_WININ, task->data[3]);
- SetGpuReg(REG_OFFSET_WINOUT, task->data[4]);
- SetVBlankCallback(sub_80B880C);
- task->data[0]++;
+ StoreWordInTwoHalfwords((u16 *)&task->data[13], (u32)gMain.vblankCallback);
+ task->tWinHoriz = WIN_RANGE(DISPLAY_WIDTH, DISPLAY_WIDTH + 1);
+ task->tWinVert = WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1);
+ task->tWinIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
+ task->tWinOut = WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
+ SetGpuReg(REG_OFFSET_WIN0H, task->tWinHoriz);
+ SetGpuReg(REG_OFFSET_WIN0V, task->tWinVert);
+ SetGpuReg(REG_OFFSET_WININ, task->tWinIn);
+ SetGpuReg(REG_OFFSET_WINOUT, task->tWinOut);
+ SetVBlankCallback(VBlankCB_FieldMoveShowMonOutdoors);
+ task->tState++;
}
-static void sub_80B85F8(struct Task *task)
+static void FieldMoveShowMonOutdoorsEffect_LoadGfx(struct Task *task)
{
u16 offset = ((REG_BG0CNT >> 2) << 14);
u16 delta = ((REG_BG0CNT >> 8) << 11);
- CpuCopy16(gFieldMoveStreaksTiles, (void *)(VRAM + offset), 0x200);
+ CpuCopy16(sFieldMoveStreaksOutdoors_Gfx, (void *)(VRAM + offset), 0x200);
CpuFill32(0, (void *)(VRAM + delta), 0x800);
- LoadPalette(gFieldMoveStreaksPalette, 0xf0, 0x20);
- sub_80B8874(delta);
- task->data[0]++;
+ LoadPalette(sFieldMoveStreaksOutdoors_Pal, 0xf0, 0x20);
+ LoadFieldMoveOutdoorStreaksTilemap(delta);
+ task->tState++;
}
-static void sub_80B8660(struct Task *task)
+static void FieldMoveShowMonOutdoorsEffect_CreateBanner(struct Task *task)
{
- s16 v0;
- s16 v2;
- s16 v3;
- task->data[5] -= 16;
- v0 = ((u16)task->data[1] >> 8);
- v2 = ((u16)task->data[2] >> 8);
- v3 = ((u16)task->data[2] & 0xff);
- v0 -= 16;
- v2 -= 2;
- v3 += 2;
- if (v0 < 0)
- {
- v0 = 0;
- }
- if (v2 < 0x28)
- {
- v2 = 0x28;
- }
- if (v3 > 0x78)
- {
- v3 = 0x78;
- }
- task->data[1] = (v0 << 8) | (task->data[1] & 0xff);
- task->data[2] = (v2 << 8) | v3;
- if (v0 == 0 && v2 == 0x28 && v3 == 0x78)
+ s16 horiz;
+ s16 vertHi;
+ s16 vertLo;
+ task->tBgHoriz -= 16;
+ horiz = ((u16)task->tWinHoriz >> 8);
+ vertHi = ((u16)task->tWinVert >> 8);
+ vertLo = ((u16)task->tWinVert & 0xff);
+ horiz -= 16;
+ vertHi -= 2;
+ vertLo += 2;
+
+ if (horiz < 0)
+ horiz = 0;
+
+ if (vertHi < DISPLAY_HEIGHT / 4)
+ vertHi = DISPLAY_HEIGHT / 4;
+
+ if (vertLo > DISPLAY_WIDTH / 2)
+ vertLo = DISPLAY_WIDTH / 2;
+
+ task->tWinHoriz = (horiz << 8) | (task->tWinHoriz & 0xff);
+ task->tWinVert = (vertHi << 8) | vertLo;
+ if (horiz == 0 && vertHi == DISPLAY_HEIGHT / 4 && vertLo == DISPLAY_WIDTH / 2)
{
- gSprites[task->data[15]].callback = sub_80B8CC0;
- task->data[0]++;
+ gSprites[task->tMonSpriteId].callback = SpriteCB_FieldMoveMonSlideOnscreen;
+ task->tState++;
}
}
-static void sub_80B86EC(struct Task *task)
+static void FieldMoveShowMonOutdoorsEffect_WaitForMon(struct Task *task)
{
- task->data[5] -= 16;
- if (gSprites[task->data[15]].data[7])
- {
- task->data[0]++;
- }
+ task->tBgHoriz -= 16;
+
+ if (gSprites[task->tMonSpriteId].sSlidOffscreen)
+ task->tState++;
}
-static void sub_80B871C(struct Task *task)
+static void FieldMoveShowMonOutdoorsEffect_ShrinkBanner(struct Task *task)
{
- s16 v2;
- s16 v3;
- task->data[5] -= 16;
- v2 = (task->data[2] >> 8);
- v3 = (task->data[2] & 0xff);
- v2 += 6;
- v3 -= 6;
- if (v2 > 0x50)
- {
- v2 = 0x50;
- }
- if (v3 < 0x51)
- {
- v3 = 0x51;
- }
- task->data[2] = (v2 << 8) | v3;
- if (v2 == 0x50 && v3 == 0x51)
- {
- task->data[0]++;
- }
+ s16 vertHi;
+ s16 vertLo;
+ task->tBgHoriz -= 16;
+ vertHi = (task->tWinVert >> 8);
+ vertLo = (task->tWinVert & 0xFF);
+ vertHi += 6;
+ vertLo -= 6;
+
+ if (vertHi > DISPLAY_HEIGHT / 2)
+ vertHi = DISPLAY_HEIGHT / 2;
+
+ if (vertLo < DISPLAY_HEIGHT / 2 + 1)
+ vertLo = DISPLAY_HEIGHT / 2 + 1;
+
+ task->tWinVert = (vertHi << 8) | vertLo;
+
+ if (vertHi == DISPLAY_HEIGHT / 2 && vertLo == DISPLAY_HEIGHT / 2 + 1)
+ task->tState++;
}
-static void sub_80B8770(struct Task *task)
+static void FieldMoveShowMonOutdoorsEffect_RestoreBg(struct Task *task)
{
u16 bg0cnt = (REG_BG0CNT >> 8) << 11;
CpuFill32(0, (void *)VRAM + bg0cnt, 0x800);
- task->data[1] = 0xf1;
- task->data[2] = 0xa1;
- task->data[3] = task->data[11];
- task->data[4] = task->data[12];
- task->data[0]++;
+ task->tWinHoriz = DISPLAY_WIDTH + 1;
+ task->tWinVert = DISPLAY_HEIGHT + 1;
+ task->tWinIn = task->data[11];
+ task->tWinOut = task->data[12];
+ task->tState++;
}
-static void overworld_bg_setup_2(struct Task *task)
+static void FieldMoveShowMonOutdoorsEffect_End(struct Task *task)
{
IntrCallback callback;
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback);
SetVBlankCallback(callback);
- sub_8197200();
- FreeResourcesAndDestroySprite(&gSprites[task->data[15]], task->data[15]);
+ InitTextBoxGfxAndPrinters();
+ FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId], task->tMonSpriteId);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
- DestroyTask(FindTaskIdByFunc(sub_80B8554));
+ DestroyTask(FindTaskIdByFunc(Task_FieldMoveShowMonOutdoors));
}
-static void sub_80B880C(void)
+static void VBlankCB_FieldMoveShowMonOutdoors(void)
{
IntrCallback callback;
- struct Task *task = &gTasks[FindTaskIdByFunc(sub_80B8554)];
+ struct Task *task = &gTasks[FindTaskIdByFunc(Task_FieldMoveShowMonOutdoors)];
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback);
callback();
- SetGpuReg(REG_OFFSET_WIN0H, task->data[1]);
- SetGpuReg(REG_OFFSET_WIN0V, task->data[2]);
- SetGpuReg(REG_OFFSET_WININ, task->data[3]);
- SetGpuReg(REG_OFFSET_WINOUT, task->data[4]);
- SetGpuReg(REG_OFFSET_BG0HOFS, task->data[5]);
- SetGpuReg(REG_OFFSET_BG0VOFS, task->data[6]);
+ SetGpuReg(REG_OFFSET_WIN0H, task->tWinHoriz);
+ SetGpuReg(REG_OFFSET_WIN0V, task->tWinVert);
+ SetGpuReg(REG_OFFSET_WININ, task->tWinIn);
+ SetGpuReg(REG_OFFSET_WINOUT, task->tWinOut);
+ SetGpuReg(REG_OFFSET_BG0HOFS, task->tBgHoriz);
+ SetGpuReg(REG_OFFSET_BG0VOFS, task->tBgVert);
}
-static void sub_80B8874(u16 offs)
+static void LoadFieldMoveOutdoorStreaksTilemap(u16 offs)
{
u16 i;
u16 *dest;
- dest = (u16 *)(VRAM + 0x140 + offs);
- for (i = 0; i < 0x140; i++, dest++)
- {
- *dest = gFieldMoveStreaksTilemap[i] | METATILE_ELEVATION_MASK;
- }
-}
-
-void (*const gUnknown_0855C4C4[])(struct Task *) = {
- sub_80B88E4,
- sub_80B8920,
- sub_80B898C,
- sub_80B89DC,
- sub_80B8A0C,
- sub_80B8A44,
- sub_80B8A64,
+ dest = (u16 *)(VRAM + ARRAY_COUNT(sFieldMoveStreaksOutdoors_Tilemap) + offs);
+ for (i = 0; i < ARRAY_COUNT(sFieldMoveStreaksOutdoors_Tilemap); i++, dest++)
+ {
+ *dest = sFieldMoveStreaksOutdoors_Tilemap[i] | 0xF000;
+ }
+}
+
+#undef tState
+#undef tWinHoriz
+#undef tWinVert
+#undef tWinIn
+#undef tWinOut
+#undef tBgHoriz
+#undef tBgVert
+#undef tMonSpriteId
+
+// Task data for Task_FieldMoveShowMonIndoors
+#define tState data[0]
+#define tBgHoriz data[1]
+#define tBgVert data[2]
+#define tBgOffsetIdx data[3]
+#define tBgOffset data[4]
+#define tMonSpriteId data[15]
+
+void (*const sFieldMoveShowMonIndoorsEffectFuncs[])(struct Task *) = {
+ FieldMoveShowMonIndoorsEffect_Init,
+ FieldMoveShowMonIndoorsEffect_LoadGfx,
+ FieldMoveShowMonIndoorsEffect_SlideBannerOn,
+ FieldMoveShowMonIndoorsEffect_WaitForMon,
+ FieldMoveShowMonIndoorsEffect_RestoreBg,
+ FieldMoveShowMonIndoorsEffect_SlideBannerOff,
+ FieldMoveShowMonIndoorsEffect_End,
};
-static void sub_80B88B4(u8 taskId)
+static void Task_FieldMoveShowMonIndoors(u8 taskId)
{
- gUnknown_0855C4C4[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sFieldMoveShowMonIndoorsEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B88E4(struct Task *task)
+static void FieldMoveShowMonIndoorsEffect_Init(struct Task *task)
{
- SetGpuReg(REG_OFFSET_BG0HOFS, task->data[1]);
- SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]);
+ SetGpuReg(REG_OFFSET_BG0HOFS, task->tBgHoriz);
+ SetGpuReg(REG_OFFSET_BG0VOFS, task->tBgVert);
StoreWordInTwoHalfwords((u16 *)&task->data[13], (u32)gMain.vblankCallback);
- SetVBlankCallback(sub_80B8AE0);
- task->data[0]++;
+ SetVBlankCallback(VBlankCB_FieldMoveShowMonIndoors);
+ task->tState++;
}
-static void sub_80B8920(struct Task *task)
+static void FieldMoveShowMonIndoorsEffect_LoadGfx(struct Task *task)
{
u16 offset;
u16 delta;
offset = ((REG_BG0CNT >> 2) << 14);
delta = ((REG_BG0CNT >> 8) << 11);
task->data[12] = delta;
- CpuCopy16(gDarknessFieldMoveStreaksTiles, (void *)(VRAM + offset), 0x80);
+ CpuCopy16(sFieldMoveStreaksIndoors_Gfx, (void *)(VRAM + offset), 0x80);
CpuFill32(0, (void *)(VRAM + delta), 0x800);
- LoadPalette(gDarknessFieldMoveStreaksPalette, 0xf0, 0x20);
- task->data[0]++;
+ LoadPalette(sFieldMoveStreaksIndoors_Pal, 0xf0, 0x20);
+ task->tState++;
}
-static void sub_80B898C(struct Task *task)
+static void FieldMoveShowMonIndoorsEffect_SlideBannerOn(struct Task *task)
{
- if (sub_80B8B38(task))
+ if (SlideIndoorBannerOnscreen(task))
{
- SetGpuReg(REG_OFFSET_WIN1H, 0x00f0);
- SetGpuReg(REG_OFFSET_WIN1V, 0x2878);
- gSprites[task->data[15]].callback = sub_80B8CC0;
- task->data[0]++;
+ SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(0, DISPLAY_WIDTH));
+ SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(DISPLAY_HEIGHT / 4, DISPLAY_HEIGHT - DISPLAY_HEIGHT / 4));
+ gSprites[task->tMonSpriteId].callback = SpriteCB_FieldMoveMonSlideOnscreen;
+ task->tState++;
}
- sub_80B8B28(task);
+ AnimateIndoorShowMonBg(task);
}
-static void sub_80B89DC(struct Task *task)
+static void FieldMoveShowMonIndoorsEffect_WaitForMon(struct Task *task)
{
- sub_80B8B28(task);
- if (gSprites[task->data[15]].data[7])
- {
- task->data[0]++;
- }
+ AnimateIndoorShowMonBg(task);
+ if (gSprites[task->tMonSpriteId].sSlidOffscreen)
+ task->tState++;
}
-static void sub_80B8A0C(struct Task *task)
+static void FieldMoveShowMonIndoorsEffect_RestoreBg(struct Task *task)
{
- sub_80B8B28(task);
- task->data[3] = task->data[1] & 7;
- task->data[4] = 0;
- SetGpuReg(REG_OFFSET_WIN1H, 0xffff);
- SetGpuReg(REG_OFFSET_WIN1V, 0xffff);
- task->data[0]++;
+ AnimateIndoorShowMonBg(task);
+ task->tBgOffsetIdx = task->tBgHoriz & 7;
+ task->tBgOffset = 0;
+ SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(0xFF, 0xFF));
+ SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(0xFF, 0xFF));
+ task->tState++;
}
-static void sub_80B8A44(struct Task *task)
+static void FieldMoveShowMonIndoorsEffect_SlideBannerOff(struct Task *task)
{
- sub_80B8B28(task);
- if (sub_80B8BF0(task))
- {
- task->data[0]++;
- }
+ AnimateIndoorShowMonBg(task);
+ if (SlideIndoorBannerOffscreen(task))
+ task->tState++;
}
-static void sub_80B8A64(struct Task *task)
+static void FieldMoveShowMonIndoorsEffect_End(struct Task *task)
{
IntrCallback intrCallback;
u16 bg0cnt;
@@ -2723,231 +2827,248 @@ static void sub_80B8A64(struct Task *task)
CpuFill32(0, (void *)VRAM + bg0cnt, 0x800);
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback);
SetVBlankCallback(intrCallback);
- sub_8197200();
- FreeResourcesAndDestroySprite(&gSprites[task->data[15]], task->data[15]);
+ InitTextBoxGfxAndPrinters();
+ FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId], task->tMonSpriteId);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
- DestroyTask(FindTaskIdByFunc(sub_80B88B4));
+ DestroyTask(FindTaskIdByFunc(Task_FieldMoveShowMonIndoors));
}
-static void sub_80B8AE0(void)
+static void VBlankCB_FieldMoveShowMonIndoors(void)
{
IntrCallback intrCallback;
struct Task *task;
- task = &gTasks[FindTaskIdByFunc(sub_80B88B4)];
+ task = &gTasks[FindTaskIdByFunc(Task_FieldMoveShowMonIndoors)];
LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback);
intrCallback();
- SetGpuReg(REG_OFFSET_BG0HOFS, task->data[1]);
- SetGpuReg(REG_OFFSET_BG0VOFS, task->data[2]);
+ SetGpuReg(REG_OFFSET_BG0HOFS, task->tBgHoriz);
+ SetGpuReg(REG_OFFSET_BG0VOFS, task->tBgVert);
}
-static void sub_80B8B28(struct Task *task)
+static void AnimateIndoorShowMonBg(struct Task *task)
{
- task->data[1] -= 16;
- task->data[3] += 16;
+ task->tBgHoriz -= 16;
+ task->tBgOffsetIdx += 16;
}
-static bool8 sub_80B8B38(struct Task *task)
+static bool8 SlideIndoorBannerOnscreen(struct Task *task)
{
u16 i;
u16 srcOffs;
u16 dstOffs;
u16 *dest;
- if (task->data[4] >= 32)
- {
+
+ if (task->tBgOffset >= 32)
return TRUE;
- }
- dstOffs = (task->data[3] >> 3) & 0x1f;
- if (dstOffs >= task->data[4])
+
+ dstOffs = (task->tBgOffsetIdx >> 3) & 0x1f;
+ if (dstOffs >= task->tBgOffset)
{
dstOffs = (32 - dstOffs) & 0x1f;
- srcOffs = (32 - task->data[4]) & 0x1f;
+ srcOffs = (32 - task->tBgOffset) & 0x1f;
dest = (u16 *)(VRAM + 0x140 + (u16)task->data[12]);
for (i = 0; i < 10; i++)
{
- dest[dstOffs + i * 32] = gDarknessFieldMoveStreaksTilemap[srcOffs + i * 32];
+ dest[dstOffs + i * 32] = sFieldMoveStreaksIndoors_Tilemap[srcOffs + i * 32];
dest[dstOffs + i * 32] |= 0xf000;
- dest[((dstOffs + 1) & 0x1f) + i * 32] = gDarknessFieldMoveStreaksTilemap[((srcOffs + 1) & 0x1f) + i * 32] | 0xf000;
+ dest[((dstOffs + 1) & 0x1f) + i * 32] = sFieldMoveStreaksIndoors_Tilemap[((srcOffs + 1) & 0x1f) + i * 32] | 0xf000;
dest[((dstOffs + 1) & 0x1f) + i * 32] |= 0xf000;
}
- task->data[4] += 2;
+ task->tBgOffset += 2;
}
return FALSE;
}
-static bool8 sub_80B8BF0(struct Task *task)
+static bool8 SlideIndoorBannerOffscreen(struct Task *task)
{
u16 i;
u16 dstOffs;
u16 *dest;
- if (task->data[4] >= 32)
- {
+
+ if (task->tBgOffset >= 32)
return TRUE;
- }
- dstOffs = task->data[3] >> 3;
- if (dstOffs >= task->data[4])
+
+ dstOffs = task->tBgOffsetIdx >> 3;
+ if (dstOffs >= task->tBgOffset)
{
- dstOffs = (task->data[1] >> 3) & 0x1f;
+ dstOffs = (task->tBgHoriz >> 3) & 0x1f;
dest = (u16 *)(VRAM + 0x140 + (u16)task->data[12]);
for (i = 0; i < 10; i++)
{
dest[dstOffs + i * 32] = 0xf000;
dest[((dstOffs + 1) & 0x1f) + i * 32] = 0xf000;
}
- task->data[4] += 2;
+ task->tBgOffset += 2;
}
return FALSE;
}
-static u8 sub_80B8C60(u32 a0, u32 a1, u32 a2)
+#undef tState
+#undef tBgHoriz
+#undef tBgVert
+#undef tBgOffsetIdx
+#undef tBgOffset
+#undef tMonSpriteId
+
+static u8 InitFieldMoveMonSprite(u32 species, u32 otId, u32 personality)
{
u16 v0;
u8 monSprite;
struct Sprite *sprite;
- v0 = (a0 & 0x80000000) >> 16;
- a0 &= 0x7fffffff;
- monSprite = CreateMonSprite_FieldMove(a0, a1, a2, 0x140, 0x50, 0);
+ v0 = (species & 0x80000000) >> 16;
+ species &= 0x7fffffff;
+ monSprite = CreateMonSprite_FieldMove(species, otId, personality, 320, 80, 0);
sprite = &gSprites[monSprite];
sprite->callback = SpriteCallbackDummy;
sprite->oam.priority = 0;
- sprite->data[0] = a0;
+ sprite->sSpecies = species;
sprite->data[6] = v0;
return monSprite;
}
-static void sub_80B8CC0(struct Sprite *sprite)
+static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite *sprite)
{
- if ((sprite->pos1.x -= 20) <= 0x78)
+ if ((sprite->pos1.x -= 20) <= DISPLAY_WIDTH / 2)
{
- sprite->pos1.x = 0x78;
- sprite->data[1] = 30;
- sprite->callback = sub_80B8D04;
+ sprite->pos1.x = DISPLAY_WIDTH / 2;
+ sprite->sOnscreenTimer = 30;
+ sprite->callback = SpriteCB_FieldMoveMonWaitAfterCry;
if (sprite->data[6])
{
- PlayCry2(sprite->data[0], 0, 0x7d, 0xa);
+ PlayCry2(sprite->sSpecies, 0, 0x7d, 0xa);
}
else
{
- PlayCry1(sprite->data[0], 0);
+ PlayCry1(sprite->sSpecies, 0);
}
}
}
-static void sub_80B8D04(struct Sprite *sprite)
+static void SpriteCB_FieldMoveMonWaitAfterCry(struct Sprite *sprite)
{
- if ((--sprite->data[1]) == 0)
- {
- sprite->callback = sub_80B8D20;
- }
+ if ((--sprite->sOnscreenTimer) == 0)
+ sprite->callback = SpriteCB_FieldMoveMonSlideOffscreen;
}
-static void sub_80B8D20(struct Sprite *sprite)
+static void SpriteCB_FieldMoveMonSlideOffscreen(struct Sprite *sprite)
{
- if (sprite->pos1.x < -0x40)
- {
- sprite->data[7] = 1;
- }
+ if (sprite->pos1.x < -64)
+ sprite->sSlidOffscreen = TRUE;
else
- {
sprite->pos1.x -= 20;
- }
}
+#undef tState
+#undef tMonSpriteId
+#undef sSpecies
+#undef sSlidOffscreen
+#undef sOnscreenTimer
+
+#define tState data[0]
+#define tDestX data[1]
+#define tDestY data[2]
+#define tMonId data[15]
+
u8 FldEff_UseSurf(void)
{
- u8 taskId = CreateTask(sub_80B8D84, 0xff);
- gTasks[taskId].data[15] = gFieldEffectArguments[0];
+ u8 taskId = CreateTask(Task_SurfFieldEffect, 0xff);
+ gTasks[taskId].tMonId = gFieldEffectArguments[0];
Overworld_ClearSavedMusic();
Overworld_ChangeMusicTo(MUS_NAMINORI);
return FALSE;
}
-void (*const gUnknown_0855C4E0[])(struct Task *) = {
- sub_80B8DB4,
- sub_80B8E14,
- sub_80B8E60,
- sub_80B8EA8,
- sub_80B8F24,
+void (*const sSurfFieldEffectFuncs[])(struct Task *) = {
+ SurfFieldEffect_Init,
+ SurfFieldEffect_FieldMovePose,
+ SurfFieldEffect_ShowMon,
+ SurfFieldEffect_JumpOnSurfBlob,
+ SurfFieldEffect_End,
};
-static void sub_80B8D84(u8 taskId)
+static void Task_SurfFieldEffect(u8 taskId)
{
- gUnknown_0855C4E0[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sSurfFieldEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B8DB4(struct Task *task)
+static void SurfFieldEffect_Init(struct Task *task)
{
ScriptContext2_Enable();
FreezeObjectEvents();
gPlayerAvatar.preventStep = TRUE;
- SetPlayerAvatarStateMask(8);
- PlayerGetDestCoords(&task->data[1], &task->data[2]);
- MoveCoords(gObjectEvents[gPlayerAvatar.objectEventId].movementDirection, &task->data[1], &task->data[2]);
- task->data[0]++;
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING);
+ PlayerGetDestCoords(&task->tDestX, &task->tDestY);
+ MoveCoords(gObjectEvents[gPlayerAvatar.objectEventId].movementDirection, &task->tDestX, &task->tDestY);
+ task->tState++;
}
-static void sub_80B8E14(struct Task *task)
+static void SurfFieldEffect_FieldMovePose(struct Task *task)
{
struct ObjectEvent *objectEvent;
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent))
{
- sub_808C114();
+ SetPlayerAvatarFieldMove();
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
- task->data[0]++;
+ task->tState++;
}
}
-static void sub_80B8E60(struct Task *task)
+static void SurfFieldEffect_ShowMon(struct Task *task)
{
struct ObjectEvent *objectEvent;
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (ObjectEventCheckHeldMovementStatus(objectEvent))
{
- gFieldEffectArguments[0] = task->data[15] | 0x80000000;
+ gFieldEffectArguments[0] = task->tMonId | 0x80000000;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
- task->data[0]++;
+ task->tState++;
}
}
-static void sub_80B8EA8(struct Task *task)
+static void SurfFieldEffect_JumpOnSurfBlob(struct Task *task)
{
struct ObjectEvent *objectEvent;
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(3));
+ ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
ObjectEventClearHeldMovementIfFinished(objectEvent);
ObjectEventSetHeldMovement(objectEvent, GetJumpSpecialMovementAction(objectEvent->movementDirection));
- gFieldEffectArguments[0] = task->data[1];
- gFieldEffectArguments[1] = task->data[2];
+ gFieldEffectArguments[0] = task->tDestX;
+ gFieldEffectArguments[1] = task->tDestY;
gFieldEffectArguments[2] = gPlayerAvatar.objectEventId;
objectEvent->fieldEffectSpriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
- task->data[0]++;
+ task->tState++;
}
}
-static void sub_80B8F24(struct Task *task)
+static void SurfFieldEffect_End(struct Task *task)
{
struct ObjectEvent *objectEvent;
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
{
gPlayerAvatar.preventStep = FALSE;
- gPlayerAvatar.flags &= 0xdf;
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection));
- sub_81555AC(objectEvent->fieldEffectSpriteId, 1);
+ SetSurfBobState(objectEvent->fieldEffectSpriteId, 1);
UnfreezeObjectEvents();
ScriptContext2_Disable();
FieldEffectActiveListRemove(FLDEFF_USE_SURF);
- DestroyTask(FindTaskIdByFunc(sub_80B8D84));
+ DestroyTask(FindTaskIdByFunc(Task_SurfFieldEffect));
}
}
-u8 sub_80B8F98(void)
+#undef tState
+#undef tDestX
+#undef tDestY
+#undef tMonId
+
+u8 FldEff_RayquazaSpotlight(void)
{
u8 i, j, k;
- u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[36], 0x78, -0x18, 1);
+ u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RAYQUAZA], 120, -24, 1);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
@@ -2961,7 +3082,7 @@ u8 sub_80B8F98(void)
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(14, 14));
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR);
- LoadPalette(gUnknown_0855B610, 0xC0, sizeof(gUnknown_0855B610));
+ LoadPalette(sSpotlight_Pal, 0xC0, sizeof(sSpotlight_Pal));
SetGpuReg(REG_OFFSET_BG0VOFS, 120);
for (i = 3; i < 15; i++)
{
@@ -2974,8 +3095,8 @@ u8 sub_80B8F98(void)
{
for (i = 0; i < 8; i++)
{
- *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4) = (gUnknown_0855B630[k * 32 + i * 4 + 1] << 8) + gUnknown_0855B630[k * 32 + i * 4];
- *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4 + 2) = (gUnknown_0855B630[k * 32 + i * 4 + 3] << 8) + gUnknown_0855B630[k * 32 + i * 4 + 2];
+ *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4) = (sSpotlight_Gfx[k * 32 + i * 4 + 1] << 8) + sSpotlight_Gfx[k * 32 + i * 4];
+ *(u16*)(BG_CHAR_ADDR(2) + (k + 1) * 32 + i * 4 + 2) = (sSpotlight_Gfx[k * 32 + i * 4 + 3] << 8) + sSpotlight_Gfx[k * 32 + i * 4 + 2];
}
}
return spriteId;
@@ -2983,18 +3104,18 @@ u8 sub_80B8F98(void)
u8 FldEff_NPCFlyOut(void)
{
- u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[26], 0x78, 0, 1);
+ u8 spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0x78, 0, 1);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.paletteNum = 0;
sprite->oam.priority = 1;
- sprite->callback = sub_80B9128;
+ sprite->callback = SpriteCB_NPCFlyOut;
sprite->data[1] = gFieldEffectArguments[0];
PlaySE(SE_W019);
return spriteId;
}
-static void sub_80B9128(struct Sprite *sprite)
+static void SpriteCB_NPCFlyOut(struct Sprite *sprite)
{
struct Sprite *npcSprite;
@@ -3004,214 +3125,224 @@ static void sub_80B9128(struct Sprite *sprite)
if (sprite->data[0])
{
npcSprite = &gSprites[sprite->data[1]];
- npcSprite->coordOffsetEnabled = 0;
+ npcSprite->coordOffsetEnabled = FALSE;
npcSprite->pos1.x = sprite->pos1.x + sprite->pos2.x;
npcSprite->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
npcSprite->pos2.x = 0;
npcSprite->pos2.y = 0;
}
+
if (sprite->data[2] >= 0x80)
- {
FieldEffectStop(sprite, FLDEFF_NPCFLY_OUT);
- }
}
+// Task data for Task_FlyOut/FlyIn
+#define tState data[0]
+#define tMonId data[1]
+#define tBirdSpriteId data[1] //re-used
+#define tTimer data[2]
+#define tAvatarFlags data[15]
+
+// Sprite data for the fly bird
+#define sPlayerSpriteId data[6]
+#define sAnimCompleted data[7]
+
u8 FldEff_UseFly(void)
{
- u8 taskId = CreateTask(sub_80B91D4, 0xfe);
- gTasks[taskId].data[1] = gFieldEffectArguments[0];
+ u8 taskId = CreateTask(Task_FlyOut, 254);
+ gTasks[taskId].tMonId = gFieldEffectArguments[0];
return 0;
}
-void (*const gUnknown_0855C4F4[])(struct Task *) = {
- sub_80B9204,
- sub_80B925C,
- sub_80B92A0,
- sub_80B92F8,
- sub_80B933C,
- sub_80B9390,
- sub_80B9418,
- sub_80B9474,
- sub_80B9494,
+void (*const sFlyOutFieldEffectFuncs[])(struct Task *) = {
+ FlyOutFieldEffect_FieldMovePose,
+ FlyOutFieldEffect_ShowMon,
+ FlyOutFieldEffect_BirdLeaveBall,
+ FlyOutFieldEffect_WaitBirdLeave,
+ FlyOutFieldEffect_BirdSwoopDown,
+ FlyOutFieldEffect_JumpOnBird,
+ FlyOutFieldEffect_FlyOffWithBird,
+ FlyOutFieldEffect_WaitFlyOff,
+ FlyOutFieldEffect_End,
};
-static void sub_80B91D4(u8 taskId)
+static void Task_FlyOut(u8 taskId)
{
- gUnknown_0855C4F4[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sFlyOutFieldEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B9204(struct Task *task)
+static void FlyOutFieldEffect_FieldMovePose(struct Task *task)
{
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent))
{
- task->data[15] = gPlayerAvatar.flags;
+ task->tAvatarFlags = gPlayerAvatar.flags;
gPlayerAvatar.preventStep = TRUE;
- SetPlayerAvatarStateMask(1);
- sub_808C114();
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
+ SetPlayerAvatarFieldMove();
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
- task->data[0]++;
+ task->tState++;
}
}
-static void sub_80B925C(struct Task *task)
+static void FlyOutFieldEffect_ShowMon(struct Task *task)
{
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (ObjectEventClearHeldMovementIfFinished(objectEvent))
{
- task->data[0]++;
- gFieldEffectArguments[0] = task->data[1];
+ task->tState++;
+ gFieldEffectArguments[0] = task->tMonId;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
}
}
-static void sub_80B92A0(struct Task *task)
+static void FlyOutFieldEffect_BirdLeaveBall(struct Task *task)
{
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- if (task->data[15] & 0x08)
+ if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
{
- sub_81555AC(objectEvent->fieldEffectSpriteId, 2);
- sub_81555D8(objectEvent->fieldEffectSpriteId, 0);
+ SetSurfBobState(objectEvent->fieldEffectSpriteId, 2);
+ SetSurfBobWhileFlyingOutState(objectEvent->fieldEffectSpriteId, 0);
}
- task->data[1] = sub_80B94C4();
- task->data[0]++;
+ task->tBirdSpriteId = CreateFlyBirdSprite(); // Does "leave ball" animation by default
+ task->tState++;
}
}
-static void sub_80B92F8(struct Task *task)
+static void FlyOutFieldEffect_WaitBirdLeave(struct Task *task)
{
- if (sub_80B9508(task->data[1]))
+ if (GetFlyBirdAnimCompleted(task->tBirdSpriteId))
{
- task->data[0]++;
- task->data[2] = 16;
+ task->tState++;
+ task->tTimer = 16;
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
ObjectEventSetHeldMovement(&gObjectEvents[gPlayerAvatar.objectEventId], MOVEMENT_ACTION_FACE_LEFT);
}
}
-static void sub_80B933C(struct Task *task)
+static void FlyOutFieldEffect_BirdSwoopDown(struct Task *task)
{
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- if ((task->data[2] == 0 || (--task->data[2]) == 0) && ObjectEventClearHeldMovementIfFinished(objectEvent))
+ if ((task->tTimer == 0 || (--task->tTimer) == 0) && ObjectEventClearHeldMovementIfFinished(objectEvent))
{
- task->data[0]++;
+ task->tState++;
PlaySE(SE_W019);
- sub_80B9524(task->data[1]);
+ StartFlyBirdSwoopDown(task->tBirdSpriteId);
}
}
-static void sub_80B9390(struct Task *task)
+static void FlyOutFieldEffect_JumpOnBird(struct Task *task)
{
- if ((++task->data[2]) >= 8)
+ if ((++task->tTimer) >= 8)
{
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(0x03));
+ ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16);
- objectEvent->inanimate = 1;
+ objectEvent->inanimate = TRUE;
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT);
- if (task->data[15] & 0x08)
+ if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
{
DestroySprite(&gSprites[objectEvent->fieldEffectSpriteId]);
}
- task->data[0]++;
- task->data[2] = 0;
+ task->tState++;
+ task->tTimer = 0;
}
}
-static void sub_80B9418(struct Task *task)
+static void FlyOutFieldEffect_FlyOffWithBird(struct Task *task)
{
- if ((++task->data[2]) >= 10)
+ if ((++task->tTimer) >= 10)
{
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
ObjectEventClearHeldMovementIfActive(objectEvent);
- objectEvent->inanimate = 0;
- objectEvent->hasShadow = 0;
- sub_80B9560(task->data[1], objectEvent->spriteId);
+ objectEvent->inanimate = FALSE;
+ objectEvent->hasShadow = FALSE;
+ SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId);
CameraObjectReset2();
- task->data[0]++;
+ task->tState++;
}
}
-static void sub_80B9474(struct Task *task)
+static void FlyOutFieldEffect_WaitFlyOff(struct Task *task)
{
- if (sub_80B9508(task->data[1]))
+ if (GetFlyBirdAnimCompleted(task->tBirdSpriteId))
{
WarpFadeOutScreen();
- task->data[0]++;
+ task->tState++;
}
}
-static void sub_80B9494(struct Task *task)
+static void FlyOutFieldEffect_End(struct Task *task)
{
if (!gPaletteFade.active)
{
FieldEffectActiveListRemove(FLDEFF_USE_FLY);
- DestroyTask(FindTaskIdByFunc(sub_80B91D4));
+ DestroyTask(FindTaskIdByFunc(Task_FlyOut));
}
}
-static u8 sub_80B94C4(void)
+static u8 CreateFlyBirdSprite(void)
{
u8 spriteId;
struct Sprite *sprite;
- spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[26], 0xff, 0xb4, 0x1);
+ spriteId = CreateSprite(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIRD], 0xff, 0xb4, 0x1);
sprite = &gSprites[spriteId];
sprite->oam.paletteNum = 0;
sprite->oam.priority = 1;
- sprite->callback = sub_80B957C;
+ sprite->callback = SpriteCB_FlyBirdLeaveBall;
return spriteId;
}
-static u8 sub_80B9508(u8 spriteId)
+static u8 GetFlyBirdAnimCompleted(u8 spriteId)
{
- return gSprites[spriteId].data[7];
+ return gSprites[spriteId].sAnimCompleted;
}
-static void sub_80B9524(u8 spriteId)
+static void StartFlyBirdSwoopDown(u8 spriteId)
{
struct Sprite *sprite;
sprite = &gSprites[spriteId];
- sprite->callback = sub_80B963C;
- sprite->pos1.x = 0x78;
- sprite->pos1.y = 0x00;
+ sprite->callback = SpriteCB_FlyBirdSwoopDown;
+ sprite->pos1.x = DISPLAY_WIDTH / 2;
+ sprite->pos1.y = 0;
sprite->pos2.x = 0;
sprite->pos2.y = 0;
memset(&sprite->data[0], 0, 8 * sizeof(u16) /* zero all data cells */);
- sprite->data[6] = 0x40;
+ sprite->sPlayerSpriteId = MAX_SPRITES;
}
-static void sub_80B9560(u8 a0, u8 a1)
+static void SetFlyBirdPlayerSpriteId(u8 birdSpriteId, u8 playerSpriteId)
{
- gSprites[a0].data[6] = a1;
+ gSprites[birdSpriteId].sPlayerSpriteId = playerSpriteId;
}
-const union AffineAnimCmd SpriteAffineAnim_855C518[] = {
+static const union AffineAnimCmd sAffineAnim_FlyBirdLeaveBall[] = {
AFFINEANIMCMD_FRAME(8, 8, -30, 0),
AFFINEANIMCMD_FRAME(28, 28, 0, 30),
AFFINEANIMCMD_END
};
-const union AffineAnimCmd SpriteAffineAnim_855C530[] = {
+static const union AffineAnimCmd sAffineAnim_FlyBirdReturnToBall[] = {
AFFINEANIMCMD_FRAME(256, 256, 64, 0),
AFFINEANIMCMD_FRAME(-10, -10, 0, 22),
AFFINEANIMCMD_END
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_0855C548[] = {
- SpriteAffineAnim_855C518,
- SpriteAffineAnim_855C530
+static const union AffineAnimCmd *const sAffineAnims_FlyBird[] = {
+ sAffineAnim_FlyBirdLeaveBall,
+ sAffineAnim_FlyBirdReturnToBall
};
-static void sub_80B957C(struct Sprite *sprite)
+static void SpriteCB_FlyBirdLeaveBall(struct Sprite *sprite)
{
- if (sprite->data[7] == 0)
+ if (sprite->sAnimCompleted == FALSE)
{
if (sprite->data[0] == 0)
{
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- sprite->affineAnims = gSpriteAffineAnimTable_0855C548;
+ sprite->affineAnims = sAffineAnims_FlyBird;
InitSpriteAffineAnim(sprite);
StartSpriteAffineAnim(sprite, 0);
sprite->pos1.x = 0x76;
@@ -3229,7 +3360,7 @@ static void sub_80B957C(struct Sprite *sprite)
}
if (sprite->data[1] > 0x81)
{
- sprite->data[7]++;
+ sprite->sAnimCompleted++;
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
FreeOamMatrix(sprite->oam.matrixNum);
CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, ST_OAM_AFFINE_OFF);
@@ -3237,15 +3368,15 @@ static void sub_80B957C(struct Sprite *sprite)
}
}
-static void sub_80B963C(struct Sprite *sprite)
+static void SpriteCB_FlyBirdSwoopDown(struct Sprite *sprite)
{
sprite->pos2.x = Cos(sprite->data[2], 0x8c);
sprite->pos2.y = Sin(sprite->data[2], 0x48);
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
- if (sprite->data[6] != MAX_SPRITES)
+ if (sprite->sPlayerSpriteId != MAX_SPRITES)
{
- struct Sprite *sprite1 = &gSprites[sprite->data[6]];
- sprite1->coordOffsetEnabled = 0;
+ struct Sprite *sprite1 = &gSprites[sprite->sPlayerSpriteId];
+ sprite1->coordOffsetEnabled = FALSE;
sprite1->pos1.x = sprite->pos1.x + sprite->pos2.x;
sprite1->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
sprite1->pos2.x = 0;
@@ -3253,18 +3384,18 @@ static void sub_80B963C(struct Sprite *sprite)
}
if (sprite->data[2] >= 0x80)
{
- sprite->data[7] = 1;
+ sprite->sAnimCompleted = TRUE;
}
}
-void sub_80B96B0(struct Sprite *sprite)
+static void SpriteCB_FlyBirdReturnToBall(struct Sprite *sprite)
{
- if (sprite->data[7] == 0)
+ if (sprite->sAnimCompleted == FALSE)
{
if (sprite->data[0] == 0)
{
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
- sprite->affineAnims = gSpriteAffineAnimTable_0855C548;
+ sprite->affineAnims = sAffineAnims_FlyBird;
InitSpriteAffineAnim(sprite);
StartSpriteAffineAnim(sprite, 1);
sprite->pos1.x = 0x5e;
@@ -3293,7 +3424,7 @@ void sub_80B96B0(struct Sprite *sprite)
}
if (sprite->data[3] >= 60)
{
- sprite->data[7]++;
+ sprite->sAnimCompleted++;
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
FreeOamMatrix(sprite->oam.matrixNum);
sprite->invisible = TRUE;
@@ -3301,80 +3432,80 @@ void sub_80B96B0(struct Sprite *sprite)
}
}
-void sub_80B9794(u8 spriteId)
+static void StartFlyBirdReturnToBall(u8 spriteId)
{
- sub_80B9524(spriteId);
- gSprites[spriteId].callback = sub_80B96B0;
+ StartFlyBirdSwoopDown(spriteId); // Set up is the same, but overrwrites the callback below
+ gSprites[spriteId].callback = SpriteCB_FlyBirdReturnToBall;
}
u8 FldEff_FlyIn(void)
{
- CreateTask(sub_80B97D4, 0xfe);
+ CreateTask(Task_FlyIn, 254);
return 0;
}
-void (*const gUnknown_0855C550[])(struct Task *) = {
- sub_80B9804,
- sub_80B98B8,
- sub_80B9924,
- sub_80B9978,
- sub_80B99F0,
- sub_80B9A28,
- sub_80B9A60,
+void (*const sFlyInFieldEffectFuncs[])(struct Task *) = {
+ FlyInFieldEffect_BirdSwoopDown,
+ FlyInFieldEffect_FlyInWithBird,
+ FlyInFieldEffect_JumpOffBird,
+ FlyInFieldEffect_FieldMovePose,
+ FlyInFieldEffect_BirdReturnToBall,
+ FlyInFieldEffect_WaitBirdReturn,
+ FlyInFieldEffect_End,
};
-static void sub_80B97D4(u8 taskId)
+static void Task_FlyIn(u8 taskId)
{
- gUnknown_0855C550[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sFlyInFieldEffectFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void sub_80B9804(struct Task *task)
+static void FlyInFieldEffect_BirdSwoopDown(struct Task *task)
{
struct ObjectEvent *objectEvent;
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (!ObjectEventIsMovementOverridden(objectEvent) || ObjectEventClearHeldMovementIfFinished(objectEvent))
{
- task->data[0]++;
- task->data[2] = 17;
- task->data[15] = gPlayerAvatar.flags;
+ task->tState++;
+ task->tTimer = 17;
+ task->tAvatarFlags = gPlayerAvatar.flags;
gPlayerAvatar.preventStep = TRUE;
- SetPlayerAvatarStateMask(0x01);
- if (task->data[15] & 0x08)
+ SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_ON_FOOT);
+ if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
{
- sub_81555AC(objectEvent->fieldEffectSpriteId, 0);
+ SetSurfBobState(objectEvent->fieldEffectSpriteId, 0);
}
- ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(0x3));
+ ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_SURFING));
CameraObjectReset2();
ObjectEventTurn(objectEvent, DIR_WEST);
StartSpriteAnim(&gSprites[objectEvent->spriteId], 0x16);
objectEvent->invisible = FALSE;
- task->data[1] = sub_80B94C4();
- sub_80B9524(task->data[1]);
- sub_80B9560(task->data[1], objectEvent->spriteId);
+ task->tBirdSpriteId = CreateFlyBirdSprite();
+ StartFlyBirdSwoopDown(task->tBirdSpriteId);
+ SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, objectEvent->spriteId);
}
}
-static void sub_80B98B8(struct Task *task)
+static void FlyInFieldEffect_FlyInWithBird(struct Task *task)
{
struct ObjectEvent *objectEvent;
struct Sprite *sprite;
- if (task->data[2] == 0 || (--task->data[2]) == 0)
+ if (task->tTimer == 0 || (--task->tTimer) == 0)
{
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
sprite = &gSprites[objectEvent->spriteId];
- sub_80B9560(task->data[1], 0x40);
+ SetFlyBirdPlayerSpriteId(task->tBirdSpriteId, MAX_SPRITES);
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
sprite->pos2.x = 0;
sprite->pos2.y = 0;
- task->data[0]++;
- task->data[2] = 0;
+ task->tState++;
+ task->tTimer = 0;
}
}
-static void sub_80B9924(struct Task *task)
+static void FlyInFieldEffect_JumpOffBird(struct Task *task)
{
- s16 unknown_0855C56C[18] = {
+ s16 sYPositions[18] = {
-2,
-4,
-5,
@@ -3395,227 +3526,257 @@ static void sub_80B9924(struct Task *task)
8
};
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.y = unknown_0855C56C[task->data[2]];
- if ((++task->data[2]) >= 18)
- {
- task->data[0]++;
- }
+ sprite->pos2.y = sYPositions[task->tTimer];
+
+ if ((++task->tTimer) >= (int)ARRAY_COUNT(sYPositions))
+ task->tState++;
}
-static void sub_80B9978(struct Task *task)
+static void FlyInFieldEffect_FieldMovePose(struct Task *task)
{
struct ObjectEvent *objectEvent;
struct Sprite *sprite;
- if (sub_80B9508(task->data[1]))
+ if (GetFlyBirdAnimCompleted(task->tBirdSpriteId))
{
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
sprite = &gSprites[objectEvent->spriteId];
- objectEvent->inanimate = 0;
+ objectEvent->inanimate = FALSE;
MoveObjectEventToMapCoords(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y);
sprite->pos2.x = 0;
sprite->pos2.y = 0;
- sprite->coordOffsetEnabled = 1;
- sub_808C114();
+ sprite->coordOffsetEnabled = TRUE;
+ SetPlayerAvatarFieldMove();
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
- task->data[0]++;
+ task->tState++;
}
}
-static void sub_80B99F0(struct Task *task)
+static void FlyInFieldEffect_BirdReturnToBall(struct Task *task)
{
if (ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gPlayerAvatar.objectEventId]))
{
- task->data[0]++;
- sub_80B9794(task->data[1]);
+ task->tState++;
+ StartFlyBirdReturnToBall(task->tBirdSpriteId);
}
}
-static void sub_80B9A28(struct Task *task)
+static void FlyInFieldEffect_WaitBirdReturn(struct Task *task)
{
- if (sub_80B9508(task->data[1]))
+ if (GetFlyBirdAnimCompleted(task->tBirdSpriteId))
{
- DestroySprite(&gSprites[task->data[1]]);
- task->data[0]++;
- task->data[1] = 0x10;
+ DestroySprite(&gSprites[task->tBirdSpriteId]);
+ task->tState++;
+ task->data[1] = 16;
}
}
-static void sub_80B9A60(struct Task *task)
+static void FlyInFieldEffect_End(struct Task *task)
{
u8 state;
struct ObjectEvent *objectEvent;
if ((--task->data[1]) == 0)
{
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- state = 0;
- if (task->data[15] & 0x08)
+ state = PLAYER_AVATAR_STATE_NORMAL;
+ if (task->tAvatarFlags & PLAYER_AVATAR_FLAG_SURFING)
{
- state = 3;
- sub_81555AC(objectEvent->fieldEffectSpriteId, 1);
+ state = PLAYER_AVATAR_STATE_SURFING;
+ SetSurfBobState(objectEvent->fieldEffectSpriteId, 1);
}
ObjectEventSetGraphicsId(objectEvent, GetPlayerAvatarGraphicsIdByStateId(state));
ObjectEventTurn(objectEvent, DIR_SOUTH);
- gPlayerAvatar.flags = task->data[15];
+ gPlayerAvatar.flags = task->tAvatarFlags;
gPlayerAvatar.preventStep = FALSE;
FieldEffectActiveListRemove(FLDEFF_FLY_IN);
- DestroyTask(FindTaskIdByFunc(sub_80B97D4));
+ DestroyTask(FindTaskIdByFunc(Task_FlyIn));
}
}
-bool8 sub_80B9ADC(void)
+#undef tState
+#undef tMonId
+#undef tBirdSpriteId
+#undef tTimer
+#undef tAvatarFlags
+#undef sPlayerSpriteId
+#undef sAnimCompleted
+
+#define tState data[1]
+#define tObjectEventId data[2]
+#define tTimer data[3]
+#define tCameraTaskId data[5]
+#define tLocalId data[6]
+#define tMapNum data[7]
+#define tMapGroup data[8]
+
+bool8 FldEff_DestroyDeoxysRock(void)
{
u8 taskId;
- u8 objectEventIdBuffer;
- if (!TryGetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &objectEventIdBuffer))
+ u8 objectEventId;
+ if (!TryGetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &objectEventId))
{
- taskId = CreateTask(sub_80B9BE8, 0x50);
- gTasks[taskId].data[2] = objectEventIdBuffer;
- gTasks[taskId].data[6] = gFieldEffectArguments[0];
- gTasks[taskId].data[7] = gFieldEffectArguments[1];
- gTasks[taskId].data[8] = gFieldEffectArguments[2];
+ taskId = CreateTask(Task_DestroyDeoxysRock, 80);
+ gTasks[taskId].tObjectEventId = objectEventId;
+ gTasks[taskId].tLocalId = gFieldEffectArguments[0];
+ gTasks[taskId].tMapNum = gFieldEffectArguments[1];
+ gTasks[taskId].tMapGroup = gFieldEffectArguments[2];
}
else
{
- FieldEffectActiveListRemove(0x41);
+ FieldEffectActiveListRemove(FLDEFF_DESTROY_DEOXYS_ROCK);
}
return FALSE;
}
-void sub_80B9B3C(u8 taskId)
+#define tShakeDelay data[0]
+#define tShakeUp data[1]
+#define tShake data[5]
+#define tEndDelay data[6]
+#define tEnding data[7]
+
+static void Task_DeoxysRockCameraShake(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (data[7] != 0)
+ if (tEnding)
{
- if (++data[6] > 20)
+ if (++tEndDelay > 20)
{
- data[6] = 0;
- if (data[5] != 0)
- data[5]--;
+ tEndDelay = 0;
+ if (tShake != 0)
+ tShake--;
}
}
else
{
- data[5] = 4;
+ tShake = 4;
}
- if (++data[0] > 1)
+ if (++tShakeDelay > 1)
{
- data[0] = 0;
- if (++data[1] & 1)
- {
- SetCameraPanning(0, -data[5]);
- }
+ tShakeDelay = 0;
+
+ if (++tShakeUp & 1)
+ SetCameraPanning(0, -tShake);
else
- {
- SetCameraPanning(0, data[5]);
- }
+ SetCameraPanning(0, tShake);
}
UpdateCameraPanning();
- if (data[5] == 0)
+ if (tShake == 0)
DestroyTask(taskId);
}
-void sub_80B9BD0(u8 taskId)
+static void StartEndingDeoxysRockCameraShake(u8 taskId)
{
- gTasks[taskId].data[7] = 1;
+ gTasks[taskId].tEnding = TRUE;
}
-void (*const gUnknown_0855C590[])(s16*, u8) = {
- sub_80B9C28,
- sub_80B9C54,
- sub_80B9CDC,
+#undef tShakeDelay
+#undef tShakeUp
+#undef tShake
+#undef tEndDelay
+#undef tEnding
+
+void (*const sDestroyDeoxysRockEffectFuncs[])(s16*, u8) = {
+ DestroyDeoxysRockEffect_CameraShake,
+ DestroyDeoxysRockEffect_RockFragments,
+ DestroyDeoxysRockEffect_WaitAndEnd,
};
-static void sub_80B9BE8(u8 taskId)
+static void Task_DestroyDeoxysRock(u8 taskId)
{
s16 *data = gTasks[taskId].data;
InstallCameraPanAheadCallback();
SetCameraPanningCallback(0);
- gUnknown_0855C590[data[1]](data, taskId);
+ sDestroyDeoxysRockEffectFuncs[tState](data, taskId);
}
-void sub_80B9C28(s16* data, u8 taskId)
+static void DestroyDeoxysRockEffect_CameraShake(s16* data, u8 taskId)
{
- u8 newTaskId = CreateTask(sub_80B9B3C, 0x5A);
+ u8 newTaskId = CreateTask(Task_DeoxysRockCameraShake, 90);
PlaySE(SE_T_KAMI2);
- data[5] = newTaskId;
- data[1]++;
+ tCameraTaskId = newTaskId;
+ tState++;
}
-void sub_80B9D24(struct Sprite*);
-
-void sub_80B9C54(s16* data, u8 taskId)
+static void DestroyDeoxysRockEffect_RockFragments(s16* data, u8 taskId)
{
- if (++data[3] > 0x78)
+ if (++tTimer > 120)
{
- struct Sprite *sprite = &gSprites[gObjectEvents[data[2]].spriteId];
- gObjectEvents[data[2]].invisible = TRUE;
+ struct Sprite *sprite = &gSprites[gObjectEvents[tObjectEventId].spriteId];
+ gObjectEvents[tObjectEventId].invisible = TRUE;
BlendPalettes(0x0000FFFF, 0x10, RGB_WHITE);
BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, RGB_WHITE);
- sub_80B9D24(sprite);
+ CreateDeoxysRockFragments(sprite);
PlaySE(SE_T_KAMI);
- sub_80B9BD0(data[5]);
- data[3] = 0;
- data[1]++;
+ StartEndingDeoxysRockCameraShake(tCameraTaskId);
+ tTimer = 0;
+ tState++;
}
}
-void sub_80B9CDC(s16* a0, u8 taskId)
+static void DestroyDeoxysRockEffect_WaitAndEnd(s16* data, u8 taskId)
{
- if (!gPaletteFade.active && !FuncIsActiveTask(sub_80B9B3C))
+ if (!gPaletteFade.active && !FuncIsActiveTask(Task_DeoxysRockCameraShake))
{
InstallCameraPanAheadCallback();
- RemoveObjectEventByLocalIdAndMap(a0[6], a0[7], a0[8]);
- FieldEffectActiveListRemove(0x41);
+ RemoveObjectEventByLocalIdAndMap(tLocalId, tMapNum, tMapGroup);
+ FieldEffectActiveListRemove(FLDEFF_DESTROY_DEOXYS_ROCK);
DestroyTask(taskId);
}
}
-const struct SpriteFrameImage gSpriteImageTable_855C59C[] = {
- obj_frame_tiles(gUnknown_0855C170),
- obj_frame_tiles(gUnknown_0855C190),
- obj_frame_tiles(gUnknown_0855C1B0),
- obj_frame_tiles(gUnknown_0855C1D0),
+#undef tState
+#undef tObjectEventId
+#undef tTimer
+#undef tCameraTaskId
+#undef tLocalId
+#undef tMapNum
+#undef tMapGroup
+
+static const struct SpriteFrameImage sImages_DeoxysRockFragment[] = {
+ obj_frame_tiles(sRockFragment_TopLeft),
+ obj_frame_tiles(sRockFragment_TopRight),
+ obj_frame_tiles(sRockFragment_BottomLeft),
+ obj_frame_tiles(sRockFragment_BottomRight),
};
-const union AnimCmd gSpriteAnim_855C5BC[] = {
+static const union AnimCmd sAnim_RockFragment_TopLeft[] = {
ANIMCMD_FRAME(.imageValue = 0),
ANIMCMD_END
};
-const union AnimCmd gSpriteAnim_855C5C4[] = {
+static const union AnimCmd sAnim_RockFragment_TopRight[] = {
ANIMCMD_FRAME(.imageValue = 1),
ANIMCMD_END
};
-const union AnimCmd gSpriteAnim_855C5CC[] = {
+static const union AnimCmd sAnim_RockFragment_BottomLeft[] = {
ANIMCMD_FRAME(.imageValue = 2),
ANIMCMD_END
};
-const union AnimCmd gSpriteAnim_855C5D4[] = {
+static const union AnimCmd sAnim_RockFragment_BottomRight[] = {
ANIMCMD_FRAME(.imageValue = 3),
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_855C5DC[] = {
- gSpriteAnim_855C5BC,
- gSpriteAnim_855C5C4,
- gSpriteAnim_855C5CC,
- gSpriteAnim_855C5D4,
+static const union AnimCmd *const sAnims_DeoxysRockFragment[] = {
+ sAnim_RockFragment_TopLeft,
+ sAnim_RockFragment_TopRight,
+ sAnim_RockFragment_BottomLeft,
+ sAnim_RockFragment_BottomRight,
};
-const struct SpriteTemplate gUnknown_0855C5EC = {
+static const struct SpriteTemplate sSpriteTemplate_DeoxysRockFragment = {
.tileTag = 0xFFFF,
.paletteTag = 4378,
- .oam = &gOamData_855C218,
- .anims = gSpriteAnimTable_855C5DC,
- .images = gSpriteImageTable_855C59C,
+ .oam = &sOam_8x8,
+ .anims = sAnims_DeoxysRockFragment,
+ .images = sImages_DeoxysRockFragment,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80B9DB8
+ .callback = SpriteCB_DeoxysRockFragment
};
-void sub_80B9D24(struct Sprite* sprite)
+static void CreateDeoxysRockFragments(struct Sprite* sprite)
{
int i;
int xPos = (s16)gTotalCameraPixelOffsetX + sprite->pos1.x + sprite->pos2.x;
@@ -3623,7 +3784,7 @@ void sub_80B9D24(struct Sprite* sprite)
for (i = 0; i < 4; i++)
{
- u8 spriteId = CreateSprite(&gUnknown_0855C5EC, xPos, yPos, 0);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_DeoxysRockFragment, xPos, yPos, 0);
if (spriteId != MAX_SPRITES)
{
StartSpriteAnim(&gSprites[spriteId], i);
@@ -3633,8 +3794,9 @@ void sub_80B9D24(struct Sprite* sprite)
}
}
-static void sub_80B9DB8(struct Sprite* sprite)
+static void SpriteCB_DeoxysRockFragment(struct Sprite* sprite)
{
+ // 1 case for each fragment, fly off in 4 different directions
switch (sprite->data[0])
{
case 0:
@@ -3654,11 +3816,11 @@ static void sub_80B9DB8(struct Sprite* sprite)
sprite->pos1.y += 12;
break;
}
- if ((u16)(sprite->pos1.x + 4) > 0xF8 || sprite->pos1.y < -4 || sprite->pos1.y > 0xA4)
+ if ((u16)(sprite->pos1.x + 4) > DISPLAY_WIDTH + 8 || sprite->pos1.y < -4 || sprite->pos1.y > DISPLAY_HEIGHT + 4)
DestroySprite(sprite);
}
-bool8 Fldeff_MoveDeoxysRock(struct Sprite* sprite)
+bool8 FldEff_MoveDeoxysRock(struct Sprite* sprite)
{
u8 objectEventIdBuffer;
if (!TryGetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &objectEventIdBuffer))
@@ -3672,7 +3834,7 @@ bool8 Fldeff_MoveDeoxysRock(struct Sprite* sprite)
xPos = (gFieldEffectArguments[3] - xPos) * 16;
yPos = (gFieldEffectArguments[4] - yPos) * 16;
ShiftObjectEventCoords(object, gFieldEffectArguments[3] + 7, gFieldEffectArguments[4] + 7);
- taskId = CreateTask(Fldeff_MoveDeoxysRock_Step, 0x50);
+ taskId = CreateTask(Task_MoveDeoxysRock, 80);
gTasks[taskId].data[1] = object->spriteId;
gTasks[taskId].data[2] = gSprites[object->spriteId].pos1.x + xPos;
gTasks[taskId].data[3] = gSprites[object->spriteId].pos1.y + yPos;
@@ -3682,7 +3844,7 @@ bool8 Fldeff_MoveDeoxysRock(struct Sprite* sprite)
return FALSE;
}
-static void Fldeff_MoveDeoxysRock_Step(u8 taskId)
+static void Task_MoveDeoxysRock(u8 taskId)
{
// BUG: Possible divide by zero
s16 *data = gTasks[taskId].data;
@@ -3711,7 +3873,7 @@ static void Fldeff_MoveDeoxysRock_Step(u8 taskId)
sprite->pos1.y = data[3];
ShiftStillObjectEventCoords(object);
object->triggerGroundEffectsOnStop = TRUE;
- FieldEffectActiveListRemove(0x42);
+ FieldEffectActiveListRemove(FLDEFF_MOVE_DEOXYS_ROCK);
DestroyTask(taskId);
}
break;
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index e02de959b..6929485c4 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -166,7 +166,7 @@ u8 CreateWarpArrowSprite(void)
u8 spriteId;
struct Sprite *sprite;
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8], 0, 0, 0x52);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ARROW], 0, 0, 0x52);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -202,11 +202,11 @@ void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y)
}
}
-const u8 gShadowEffectTemplateIds[] = {
- 0,
- 1,
- 2,
- 3
+static const u8 sShadowEffectTemplateIds[] = {
+ FLDEFFOBJ_SHADOW_S,
+ FLDEFFOBJ_SHADOW_M,
+ FLDEFFOBJ_SHADOW_L,
+ FLDEFFOBJ_SHADOW_XL
};
const u16 gShadowVerticalOffsets[] = {
@@ -224,7 +224,7 @@ u32 FldEff_Shadow(void)
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[sShadowEffectTemplateIds[graphicsInfo->shadowSize]], 0, 0, 0x94);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].coordOffsetEnabled = TRUE;
@@ -275,7 +275,7 @@ u32 FldEff_TallGrass(void)
x = gFieldEffectArguments[0];
y = gFieldEffectArguments[1];
SetSpritePosToOffsetMapCoords(&x, &y, 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -341,14 +341,14 @@ u32 FldEff_JumpTallGrass(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_TALL_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
sprite->data[0] = gFieldEffectArguments[2];
- sprite->data[1] = 12;
+ sprite->data[1] = FLDEFF_JUMP_TALL_GRASS;
}
return 0;
}
@@ -381,7 +381,7 @@ u32 FldEff_LongGrass(void)
x = gFieldEffectArguments[0];
y = gFieldEffectArguments[1];
SetSpritePosToOffsetMapCoords(&x, &y, 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_LONG_GRASS], x, y, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -444,14 +444,14 @@ u32 FldEff_JumpLongGrass(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_LONG_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
sprite->data[0] = gFieldEffectArguments[2];
- sprite->data[1] = 18;
+ sprite->data[1] = FLDEFF_JUMP_LONG_GRASS;
}
return 0;
}
@@ -465,7 +465,7 @@ u32 FldEff_ShortGrass(void)
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
objectEvent = &gObjectEvents[objectEventId];
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SHORT_GRASS], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &(gSprites[spriteId]);
@@ -522,7 +522,7 @@ u32 FldEff_SandFootprints(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -540,7 +540,7 @@ u32 FldEff_DeepSandFootprints(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_DEEP_SAND_FOOTPRINTS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -558,7 +558,7 @@ u32 FldEff_BikeTireTracks(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BIKE_TIRE_TRACKS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -611,7 +611,7 @@ u32 FldEff_Splash(void)
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
objectEvent = &gObjectEvents[objectEventId];
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
@@ -650,7 +650,7 @@ u32 FldEff_JumpSmallSplash(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_SMALL_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -668,7 +668,7 @@ u32 FldEff_JumpBigSplash(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_JUMP_BIG_SPLASH], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -690,7 +690,7 @@ u32 FldEff_FeetInFlowingWater(void)
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
objectEvent = &gObjectEvents[objectEventId];
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPLASH], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
@@ -744,7 +744,7 @@ u32 FldEff_Ripple(void)
u8 spriteId;
struct Sprite *sprite;
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_RIPPLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -764,7 +764,7 @@ u32 FldEff_HotSpringsWater(void)
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
objectEvent = &gObjectEvents[objectEventId];
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_HOT_SPRINGS_WATER], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -800,70 +800,70 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
}
}
-u32 FldEff_Unknown19(void)
+u32 FldEff_UnusedGrass(void)
{
u8 spriteId;
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[0] = FLDEFF_UNKNOWN_19;
+ sprite->data[0] = FLDEFF_UNUSED_GRASS;
}
return 0;
}
-u32 FldEff_Unknown20(void)
+u32 FldEff_UnusedGrass2(void)
{
u8 spriteId;
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_GRASS_2], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[0] = FLDEFF_UNKNOWN_20;
+ sprite->data[0] = FLDEFF_UNUSED_GRASS_2;
}
return 0;
}
-u32 FldEff_Unknown21(void)
+u32 FldEff_UnusedSand(void)
{
u8 spriteId;
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_UNUSED_SAND], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[0] = FLDEFF_UNKNOWN_21;
+ sprite->data[0] = FLDEFF_UNUSED_SAND;
}
return 0;
}
-u32 FldEff_Unknown22(void)
+u32 FldEff_WaterSurfacing(void)
{
u8 spriteId;
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_WATER_SURFACING], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
- sprite->data[0] = FLDEFF_UNKNOWN_22;
+ sprite->data[0] = FLDEFF_WATER_SURFACING;
}
return 0;
}
@@ -889,7 +889,7 @@ u32 FldEff_Ash(void)
x = gFieldEffectArguments[0];
y = gFieldEffectArguments[1];
SetSpritePosToOffsetMapCoords(&x, &y, 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_ASH], x, y, gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -945,7 +945,7 @@ u32 FldEff_SurfBlob(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SURF_BLOB], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96);
if (spriteId !=MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -960,33 +960,34 @@ u32 FldEff_SurfBlob(void)
return spriteId;
}
-void sub_81555AC(u8 spriteId, u8 value)
+// States for bobbing up and down while surfing
+void SetSurfBobState(u8 spriteId, u8 value)
{
gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (value & 0xF);
}
-void sub_81555D8(u8 spriteId, u8 value)
+void SetSurfBobWhileFlyingOutState(u8 spriteId, u8 value)
{
gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((value & 0xF) << 4);
}
-void sub_8155604(u8 spriteId, u8 value, s16 data1)
+void SetSurfBobWhileFishingState(u8 spriteId, u8 value, s16 data1)
{
gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((value & 0xF) << 8);
gSprites[spriteId].data[1] = data1;
}
-static u8 sub_8155638(struct Sprite *sprite)
+static u8 GetSurfBobState(struct Sprite *sprite)
{
return sprite->data[0] & 0xF;
}
-static u8 sub_8155640(struct Sprite *sprite)
+static u8 GetSurfBobWhileFlyingOutState(struct Sprite *sprite)
{
return (sprite->data[0] & 0xF0) >> 4;
}
-static u8 sub_815564C(struct Sprite *sprite)
+static u8 GetSurfBobWhileFishingState(struct Sprite *sprite)
{
return (sprite->data[0] & 0xF00) >> 8;
}
@@ -1018,7 +1019,7 @@ static void SynchroniseSurfAnim(struct ObjectEvent *objectEvent, struct Sprite *
[DIR_NORTHEAST] = 1,
};
- if (sub_8155640(sprite) == 0)
+ if (GetSurfBobWhileFlyingOutState(sprite) == 0)
StartSpriteAnimIfDifferent(sprite, surfBlobDirectionAnims[objectEvent->movementDirection]);
}
@@ -1049,8 +1050,8 @@ void sub_81556E8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
static void CreateBobbingEffect(struct ObjectEvent *objectEvent, struct Sprite *linkedSprite, struct Sprite *sprite)
{
u16 unk_085CDC6A[] = {3, 7};
- u8 v0 = sub_8155638(sprite);
- if (v0 != 0)
+ u8 bobState = GetSurfBobState(sprite);
+ if (bobState != 0)
{
if (((u16)(++ sprite->data[4]) & unk_085CDC6A[sprite->data[5]]) == 0)
{
@@ -1060,9 +1061,9 @@ static void CreateBobbingEffect(struct ObjectEvent *objectEvent, struct Sprite *
{
sprite->data[3] = -sprite->data[3];
}
- if (v0 != 2)
+ if (bobState != 2)
{
- if (sub_815564C(sprite) == 0)
+ if (GetSurfBobWhileFishingState(sprite) == 0)
linkedSprite->pos2.y = sprite->pos2.y;
else
linkedSprite->pos2.y = sprite->data[1] + sprite->pos2.y;
@@ -1107,14 +1108,14 @@ u32 FldEff_Dust(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_GROUND_IMPACT_DUST], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = gFieldEffectArguments[3];
sprite->data[0] = gFieldEffectArguments[2];
- sprite->data[1] = 10;
+ sprite->data[1] = FLDEFF_DUST;
}
return 0;
}
@@ -1129,7 +1130,7 @@ u32 FldEff_SandPile(void)
objectEventId = GetObjectEventIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
objectEvent = &gObjectEvents[objectEventId];
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SAND_PILE], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
@@ -1183,7 +1184,7 @@ u32 FldEff_Bubbles(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_BUBBLES], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -1211,7 +1212,7 @@ u32 FldEff_BerryTreeGrowthSparkle(void)
struct Sprite *sprite;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -1225,20 +1226,20 @@ u32 FldEff_BerryTreeGrowthSparkle(void)
u32 ShowTreeDisguiseFieldEffect(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 24, 4);
+ return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, FLDEFFOBJ_TREE_DISGUISE, 4);
}
u32 ShowMountainDisguiseFieldEffect(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 25, 3);
+ return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, FLDEFFOBJ_MOUNTAIN_DISGUISE, 3);
}
u32 ShowSandDisguiseFieldEffect(void)
{
- return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 28, 2);
+ return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, FLDEFFOBJ_SAND_DISGUISE, 2);
}
-static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
+static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 fldEffObj, u8 paletteNum)
{
u8 spriteId;
struct Sprite *sprite;
@@ -1248,7 +1249,7 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
FieldEffectActiveListRemove(fldEff);
return MAX_SPRITES;
}
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[fldEffObj], 0, 0, 0);
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
@@ -1331,7 +1332,7 @@ u32 FldEff_Sparkle(void)
gFieldEffectArguments[0] += 7;
gFieldEffectArguments[1] += 7;
SetSpritePosToOffsetMapCoords((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SMALL_SPARKLE], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = gFieldEffectArguments[2];
@@ -1358,61 +1359,72 @@ void UpdateSparkleFieldEffect(struct Sprite *sprite)
FieldEffectStop(sprite, FLDEFF_SPARKLE);
}
-void sub_8155EA0(struct Sprite *sprite)
+#define sTimer data[0]
+#define sState data[2]
+#define sStartY data[4]
+#define sCounter data[5]
+#define sAnimCounter data[6]
+#define sAnimState data[7]
+
+// Same as InitSpriteForFigure8Anim
+static void InitRayquazaForFigure8Anim(struct Sprite *sprite)
{
- sprite->data[6] = 0;
- sprite->data[7] = 0;
+ sprite->sAnimCounter = 0;
+ sprite->sAnimState = 0;
}
-bool8 sub_8155EA8(struct Sprite *sprite)
+// Only different from AnimateSpriteInFigure8 by the addition of SetGpuReg to move the spotlight
+static bool8 AnimateRayquazaInFigure8(struct Sprite *sprite)
{
- bool8 returnBool = FALSE;
+ bool8 finished = FALSE;
- switch (sprite->data[7])
+ switch (sprite->sAnimState)
{
- case 0:
- sprite->pos2.x += sub_809773C(sprite->data[6]);
- sprite->pos2.y += sub_8097728(sprite->data[6]);
- break;
- case 1:
- sprite->pos2.x -= sub_809773C(0x47 - sprite->data[6]);
- sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
- break;
- case 2:
- sprite->pos2.x -= sub_809773C(sprite->data[6]);
- sprite->pos2.y += sub_8097728(sprite->data[6]);
- break;
- case 3:
- sprite->pos2.x += sub_809773C(0x47 - sprite->data[6]);
- sprite->pos2.y += sub_8097728(0x47 - sprite->data[6]);
- break;
+ case 0:
+ sprite->pos2.x += GetFigure8XOffset(sprite->sAnimCounter);
+ sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
+ break;
+ case 1:
+ sprite->pos2.x -= GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ break;
+ case 2:
+ sprite->pos2.x -= GetFigure8XOffset(sprite->sAnimCounter);
+ sprite->pos2.y += GetFigure8YOffset(sprite->sAnimCounter);
+ break;
+ case 3:
+ sprite->pos2.x += GetFigure8XOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ sprite->pos2.y += GetFigure8YOffset((FIGURE_8_LENGTH - 1) - sprite->sAnimCounter);
+ break;
}
+ // Update spotlight to sweep left and right with Rayquaza
SetGpuReg(REG_OFFSET_BG0HOFS, -sprite->pos2.x);
- if (++sprite->data[6] == 72)
+
+ if (++sprite->sAnimCounter == FIGURE_8_LENGTH)
{
- sprite->data[6] = 0;
- sprite->data[7]++;
+ sprite->sAnimCounter = 0;
+ sprite->sAnimState++;
}
- if (sprite->data[7] == 4)
+ if (sprite->sAnimState == 4)
{
sprite->pos2.y = 0;
sprite->pos2.x = 0;
- returnBool = TRUE;
+ finished = TRUE;
}
- return returnBool;
+ return finished;
}
-void sub_8155F80(struct Sprite *sprite)
+void UpdateRayquazaSpotlightEffect(struct Sprite *sprite)
{
u8 i, j;
- switch (sprite->data[2])
+ switch (sprite->sState)
{
case 0:
- SetGpuReg(REG_OFFSET_BG0VOFS, 0x78 - (sprite->data[0] / 3));
- if (sprite->data[0] == 0x60)
+ SetGpuReg(REG_OFFSET_BG0VOFS, DISPLAY_WIDTH / 2 - (sprite->sTimer / 3));
+ if (sprite->sTimer == 96)
{
for (i = 0; i < 3; i++)
{
@@ -1422,42 +1434,42 @@ void sub_8155F80(struct Sprite *sprite)
}
}
}
- if (sprite->data[0] > 0x137)
+ if (sprite->sTimer > 311)
{
- sprite->data[2] = 1;
- sprite->data[0] = 0;
+ sprite->sState = 1;
+ sprite->sTimer = 0;
}
break;
case 1:
- sprite->pos1.y = (gSineTable[sprite->data[0] / 3] >> 2) + sprite->data[4];
- if (sprite->data[0] == 0xBD)
+ sprite->pos1.y = (gSineTable[sprite->sTimer / 3] >> 2) + sprite->sStartY;
+ if (sprite->sTimer == 189)
{
- sprite->data[2] = 2;
- sprite->data[5] = 0;
- sprite->data[0] = 0;
+ sprite->sState = 2;
+ sprite->sCounter = 0;
+ sprite->sTimer = 0;
}
break;
case 2:
- if (sprite->data[0] == 0x3C)
+ if (sprite->sTimer == 60)
{
- sprite->data[5]++;
- sprite->data[0] = 0;
+ sprite->sCounter++;
+ sprite->sTimer = 0;
}
- if (sprite->data[5] == 7)
+ if (sprite->sCounter == 7)
{
- sprite->data[5] = 0;
- sprite->data[2] = 3;
+ sprite->sCounter = 0;
+ sprite->sState = 3;
}
break;
case 3:
if (sprite->pos2.y == 0)
{
- sprite->data[0] = 0;
- sprite->data[2]++;
+ sprite->sTimer = 0;
+ sprite->sState++;
}
- if (sprite->data[0] == 5)
+ if (sprite->sTimer == 5)
{
- sprite->data[0] = 0;
+ sprite->sTimer = 0;
if (sprite->pos2.y > 0)
sprite->pos2.y--;
else
@@ -1465,38 +1477,38 @@ void sub_8155F80(struct Sprite *sprite)
}
break;
case 4:
- if (sprite->data[0] == 0x3C)
+ if (sprite->sTimer == 60)
{
- sprite->data[2] = 5;
- sprite->data[0] = 0;
- sprite->data[5] = 0;
+ sprite->sState = 5;
+ sprite->sTimer = 0;
+ sprite->sCounter = 0;
}
break;
case 5:
- sub_8155EA0(sprite);
- sprite->data[2] = 6;
- sprite->data[0] = 0;
+ InitRayquazaForFigure8Anim(sprite);
+ sprite->sState = 6;
+ sprite->sTimer = 0;
break;
case 6:
- if (sub_8155EA8(sprite))
+ if (AnimateRayquazaInFigure8(sprite))
{
- sprite->data[0] = 0;
- if (++sprite->data[5] <= 2)
+ sprite->sTimer = 0;
+ if (++sprite->sCounter <= 2)
{
- sub_8155EA0(sprite);
+ InitRayquazaForFigure8Anim(sprite);
}
else
{
- sprite->data[5] = 0;
- sprite->data[2] = 7;
+ sprite->sCounter = 0;
+ sprite->sState = 7;
}
}
break;
case 7:
- if (sprite->data[0] == 0x1E)
+ if (sprite->sTimer == 30)
{
- sprite->data[2] = 8;
- sprite->data[0] = 0;
+ sprite->sState = 8;
+ sprite->sTimer = 0;
}
break;
case 8:
@@ -1508,11 +1520,11 @@ void sub_8155F80(struct Sprite *sprite)
}
}
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
- FieldEffectStop(sprite, FLDEFF_RAYQUAZA);
+ FieldEffectStop(sprite, FLDEFF_RAYQUAZA_SPOTLIGHT);
break;
}
- if (sprite->data[2] == 1)
+ if (sprite->sState == 1)
{
if ((sprite->data[1] & 7) == 0)
sprite->pos2.y += sprite->data[3];
@@ -1521,10 +1533,17 @@ void sub_8155F80(struct Sprite *sprite)
sprite->data[1]++;
}
- sprite->data[0]++;
+ sprite->sTimer++;
}
-void sub_8156194(struct Sprite *sprite)
+#undef sTimer
+#undef sState
+#undef sStartY
+#undef sCounter
+#undef sAnimCounter
+#undef sAnimState
+
+void UpdateJumpImpactEffect(struct Sprite *sprite)
{
if (sprite->animEnded)
{
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index f5f6e99f7..6ad92c2fb 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -25,6 +25,7 @@
#include "constants/event_objects.h"
#include "constants/event_object_movement.h"
#include "constants/field_effects.h"
+#include "constants/items.h"
#include "constants/maps.h"
#include "constants/moves.h"
#include "constants/songs.h"
@@ -100,9 +101,9 @@ static void sub_808C280(struct ObjectEvent *);
static void StartStrengthAnim(u8, u8);
static void Task_PushBoulder(u8 taskId);
-static u8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject);
-static u8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject);
-static u8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject);
+static bool8 PushBoulder_Start(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject);
+static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject);
+static bool8 PushBoulder_End(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject);
static void DoPlayerMatJump(void);
static void DoPlayerAvatarSecretBaseMatJump(u8 taskId);
@@ -120,22 +121,22 @@ static void Task_StopSurfingInit(u8 taskId);
static void Task_WaitStopSurfing(u8 taskId);
static void Task_Fishing(u8 taskId);
-static u8 Fishing1(struct Task *task);
-static u8 Fishing2(struct Task *task);
-static u8 Fishing3(struct Task *task);
-static u8 Fishing4(struct Task *task);
-static u8 Fishing5(struct Task *task);
-static u8 Fishing6(struct Task *task);
-static u8 Fishing7(struct Task *task);
-static u8 Fishing8(struct Task *task);
-static u8 Fishing9(struct Task *task);
-static u8 Fishing10(struct Task *task);
-static u8 Fishing11(struct Task *task);
-static u8 Fishing12(struct Task *task);
-static u8 Fishing13(struct Task *task);
-static u8 Fishing14(struct Task *task);
-static u8 Fishing15(struct Task *task);
-static u8 Fishing16(struct Task *task);
+static u8 Fishing_Init(struct Task *task);
+static u8 Fishing_GetRodOut(struct Task *task);
+static u8 Fishing_WaitBeforeDots(struct Task *task);
+static u8 Fishing_InitDots(struct Task *task);
+static u8 Fishing_ShowDots(struct Task *task);
+static u8 Fishing_CheckForBite(struct Task *task);
+static u8 Fishing_GotBite(struct Task *task);
+static u8 Fishing_WaitForA(struct Task *task);
+static u8 Fishing_CheckMoreDots(struct Task *task);
+static u8 Fishing_MonOnHook(struct Task *task);
+static u8 Fishing_StartEncounter(struct Task *task);
+static u8 Fishing_NotEvenNibble(struct Task *task);
+static u8 Fishing_GotAway(struct Task *task);
+static u8 Fishing_NoMon(struct Task *task);
+static u8 Fishing_PutRodAway(struct Task *task);
+static u8 Fishing_EndNoMon(struct Task *task);
static void AlignFishingAnimationFrames(void);
static u8 sub_808D38C(struct ObjectEvent *object, s16 *a1);
@@ -319,7 +320,7 @@ static u8 ObjectEventCB2_NoMovement2(void)
return 0;
}
-void player_step(u8 direction, u16 newKeys, u16 heldKeys)
+void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys)
{
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
@@ -378,9 +379,9 @@ static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEve
static void npc_clear_strange_bits(struct ObjectEvent *objEvent)
{
- objEvent->inanimate = 0;
- objEvent->disableAnim = 0;
- objEvent->facingDirectionLocked = 0;
+ objEvent->inanimate = FALSE;
+ objEvent->disableAnim = FALSE;
+ objEvent->facingDirectionLocked = FALSE;
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH;
}
@@ -423,14 +424,14 @@ static u8 GetForcedMovementByMetatileBehavior(void)
static bool8 ForcedMovement_None(void)
{
- if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6)
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_FORCED_MOVE)
{
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- playerObjEvent->facingDirectionLocked = 0;
- playerObjEvent->enableAnim = 1;
+ playerObjEvent->facingDirectionLocked = FALSE;
+ playerObjEvent->enableAnim = TRUE;
SetObjectEventDirection(playerObjEvent, playerObjEvent->facingDirection);
- gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_6;
+ gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_FORCED_MOVE;
}
return FALSE;
}
@@ -440,7 +441,7 @@ static u8 DoForcedMovement(u8 direction, void (*b)(u8))
struct PlayerAvatar *playerAvatar = &gPlayerAvatar;
u8 collision = CheckForPlayerAvatarCollision(direction);
- playerAvatar->flags |= PLAYER_AVATAR_FLAG_6;
+ playerAvatar->flags |= PLAYER_AVATAR_FLAG_FORCED_MOVE;
if (collision)
{
ForcedMovement_None();
@@ -452,7 +453,7 @@ static u8 DoForcedMovement(u8 direction, void (*b)(u8))
{
if (collision == COLLISION_LEDGE_JUMP)
PlayerJumpLedge(direction);
- playerAvatar->flags |= PLAYER_AVATAR_FLAG_6;
+ playerAvatar->flags |= PLAYER_AVATAR_FLAG_FORCED_MOVE;
playerAvatar->runningState = MOVING;
return 1;
}
@@ -469,7 +470,7 @@ static u8 DoForcedMovementInCurrentDirection(void (*a)(u8))
{
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- playerObjEvent->disableAnim = 1;
+ playerObjEvent->disableAnim = TRUE;
return DoForcedMovement(playerObjEvent->movementDirection, a);
}
@@ -518,12 +519,12 @@ static bool8 ForcedMovement_PushedEastByCurrent(void)
return DoForcedMovement(DIR_EAST, PlayerRideWaterCurrent);
}
-u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
+static u8 ForcedMovement_Slide(u8 direction, void (*b)(u8))
{
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
- playerObjEvent->disableAnim = 1;
- playerObjEvent->facingDirectionLocked = 1;
+ playerObjEvent->disableAnim = TRUE;
+ playerObjEvent->facingDirectionLocked = TRUE;
return DoForcedMovement(direction, b);
}
@@ -566,8 +567,8 @@ static bool8 ForcedMovement_MuddySlope(void)
if (playerObjEvent->movementDirection != DIR_NORTH || GetPlayerSpeed() <= 3)
{
Bike_UpdateBikeCounterSpeed(0);
- playerObjEvent->facingDirectionLocked = 1;
- return DoForcedMovement(1, PlayerGoSpeed2);
+ playerObjEvent->facingDirectionLocked = TRUE;
+ return DoForcedMovement(DIR_SOUTH, PlayerGoSpeed2);
}
else
{
@@ -868,7 +869,7 @@ static void PlayerAvatarTransition_Surfing(struct ObjectEvent *objEvent)
gFieldEffectArguments[2] = gPlayerAvatar.objectEventId;
spriteId = FieldEffectStart(FLDEFF_SURF_BLOB);
objEvent->fieldEffectSpriteId = spriteId;
- sub_81555AC(spriteId, 1);
+ SetSurfBobState(spriteId, 1);
}
static void PlayerAvatarTransition_Underwater(struct ObjectEvent *objEvent)
@@ -884,7 +885,7 @@ static void PlayerAvatarTransition_ReturnToField(struct ObjectEvent *objEvent)
gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_5;
}
-void sub_808B578(void)
+void UpdatePlayerAvatarTransitionState(void)
{
gPlayerAvatar.tileTransitionState = T_NOT_MOVING;
if (PlayerIsAnimActive())
@@ -1327,7 +1328,7 @@ void ClearPlayerAvatarInfo(void)
void SetPlayerAvatarStateMask(u8 flags)
{
- gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_6 | PLAYER_AVATAR_FLAG_5);
+ gPlayerAvatar.flags &= (PLAYER_AVATAR_FLAG_DASH | PLAYER_AVATAR_FLAG_FORCED_MOVE | PLAYER_AVATAR_FLAG_5);
gPlayerAvatar.flags |= flags;
}
@@ -1403,13 +1404,13 @@ void SetPlayerInvisibility(bool8 invisible)
gSprites[gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId].invisible = invisible;
}
-void sub_808C114(void)
+void SetPlayerAvatarFieldMove(void)
{
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FIELD_MOVE));
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 0);
}
-void sub_808C15C(u8 direction)
+static void SetPlayerAvatarFishing(u8 direction)
{
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_FISHING));
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingDirectionAnimNum(direction));
@@ -1422,7 +1423,7 @@ void PlayerUseAcroBikeOnBumpySlope(u8 direction)
SeekSpriteAnim(&gSprites[gPlayerAvatar.spriteId], 1);
}
-void sub_808C228(u8 direction)
+void SetPlayerAvatarWatering(u8 direction)
{
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_STATE_WATERING));
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFaceDirectionAnimNum(direction));
@@ -1649,7 +1650,7 @@ static void Task_StopSurfingInit(u8 taskId)
if (!ObjectEventClearHeldMovementIfFinished(playerObjEvent))
return;
}
- sub_81555AC(playerObjEvent->fieldEffectSpriteId, 2);
+ SetSurfBobState(playerObjEvent->fieldEffectSpriteId, 2);
ObjectEventSetHeldMovement(playerObjEvent, GetJumpSpecialMovementAction((u8)gTasks[taskId].data[0]));
gTasks[taskId].func = Task_WaitStopSurfing;
}
@@ -1669,26 +1670,6 @@ static void Task_WaitStopSurfing(u8 taskId)
}
}
-static bool8 (*const sFishingStateFuncs[])(struct Task *) =
-{
- Fishing1,
- Fishing2,
- Fishing3,
- Fishing4,
- Fishing5,
- Fishing6,
- Fishing7,
- Fishing8,
- Fishing9,
- Fishing10,
- Fishing11,
- Fishing12,
- Fishing13,
- Fishing14,
- Fishing15,
- Fishing16,
-};
-
#define tStep data[0]
#define tFrameCounter data[1]
#define tNumDots data[2]
@@ -1698,6 +1679,7 @@ static bool8 (*const sFishingStateFuncs[])(struct Task *) =
#define tPlayerGfxId data[14]
#define tFishingRod data[15]
+// Some states are jumped to directly, labeled below
#define FISHING_START_ROUND 3
#define FISHING_GOT_BITE 6
#define FISHING_ON_HOOK 9
@@ -1705,6 +1687,26 @@ static bool8 (*const sFishingStateFuncs[])(struct Task *) =
#define FISHING_GOT_AWAY 12
#define FISHING_SHOW_RESULT 13
+static bool8 (*const sFishingStateFuncs[])(struct Task *) =
+{
+ Fishing_Init,
+ Fishing_GetRodOut,
+ Fishing_WaitBeforeDots,
+ Fishing_InitDots, // FISHING_START_ROUND
+ Fishing_ShowDots,
+ Fishing_CheckForBite,
+ Fishing_GotBite, // FISHING_GOT_BITE
+ Fishing_WaitForA,
+ Fishing_CheckMoreDots,
+ Fishing_MonOnHook, // FISHING_ON_HOOK
+ Fishing_StartEncounter,
+ Fishing_NotEvenNibble, // FISHING_NO_BITE
+ Fishing_GotAway, // FISHING_GOT_AWAY
+ Fishing_NoMon, // FISHING_SHOW_RESULT
+ Fishing_PutRodAway,
+ Fishing_EndNoMon,
+};
+
void StartFishing(u8 rod)
{
u8 taskId = CreateTask(Task_Fishing, 0xFF);
@@ -1719,7 +1721,7 @@ static void Task_Fishing(u8 taskId)
;
}
-static bool8 Fishing1(struct Task *task)
+static bool8 Fishing_Init(struct Task *task)
{
ScriptContext2_Enable();
gPlayerAvatar.preventStep = TRUE;
@@ -1727,24 +1729,32 @@ static bool8 Fishing1(struct Task *task)
return FALSE;
}
-static bool8 Fishing2(struct Task *task)
+static bool8 Fishing_GetRodOut(struct Task *task)
{
struct ObjectEvent *playerObjEvent;
- const s16 arr1[] = {1, 1, 1};
- const s16 arr2[] = {1, 3, 6};
+ const s16 minRounds1[] = {
+ [OLD_ROD] = 1,
+ [GOOD_ROD] = 1,
+ [SUPER_ROD] = 1
+ };
+ const s16 minRounds2[] = {
+ [OLD_ROD] = 1,
+ [GOOD_ROD] = 3,
+ [SUPER_ROD] = 6
+ };
task->tRoundsPlayed = 0;
- task->tMinRoundsRequired = arr1[task->tFishingRod] + (Random() % arr2[task->tFishingRod]);
+ task->tMinRoundsRequired = minRounds1[task->tFishingRod] + (Random() % minRounds2[task->tFishingRod]);
task->tPlayerGfxId = gObjectEvents[gPlayerAvatar.objectEventId].graphicsId;
playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
ObjectEventClearHeldMovementIfActive(playerObjEvent);
- playerObjEvent->enableAnim = 1;
- sub_808C15C(playerObjEvent->facingDirection);
+ playerObjEvent->enableAnim = TRUE;
+ SetPlayerAvatarFishing(playerObjEvent->facingDirection);
task->tStep++;
return FALSE;
}
-static bool8 Fishing3(struct Task *task)
+static bool8 Fishing_WaitBeforeDots(struct Task *task)
{
AlignFishingAnimationFrames();
@@ -1755,7 +1765,7 @@ static bool8 Fishing3(struct Task *task)
return FALSE;
}
-static bool8 Fishing4(struct Task *task)
+static bool8 Fishing_InitDots(struct Task *task)
{
u32 randVal;
@@ -1773,8 +1783,7 @@ static bool8 Fishing4(struct Task *task)
return TRUE;
}
-// Play a round of the dot game
-static bool8 Fishing5(struct Task *task)
+static bool8 Fishing_ShowDots(struct Task *task)
{
const u8 dot[] = _("·");
@@ -1809,8 +1818,7 @@ static bool8 Fishing5(struct Task *task)
}
}
-// Determine if fish bites
-static bool8 Fishing6(struct Task *task)
+static bool8 Fishing_CheckForBite(struct Task *task)
{
bool8 bite;
@@ -1830,34 +1838,25 @@ static bool8 Fishing6(struct Task *task)
if (ability == ABILITY_SUCTION_CUPS || ability == ABILITY_STICKY_HOLD)
{
if (Random() % 100 > 14)
- {
bite = TRUE;
- }
}
}
if (!bite)
{
if (Random() & 1)
- {
task->tStep = FISHING_NO_BITE;
- }
else
- {
bite = TRUE;
- }
}
if (bite == TRUE)
- {
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingBiteDirectionAnimNum(GetPlayerFacingDirection()));
- }
}
return TRUE;
}
-// Oh! A Bite!
-static bool8 Fishing7(struct Task *task)
+static bool8 Fishing_GotBite(struct Task *task)
{
AlignFishingAnimationFrames();
AddTextPrinterParameterized(0, 1, gText_OhABite, 0, 17, 0, NULL);
@@ -1867,9 +1866,13 @@ static bool8 Fishing7(struct Task *task)
}
// We have a bite. Now, wait for the player to press A, or the timer to expire.
-static bool8 Fishing8(struct Task *task)
+static bool8 Fishing_WaitForA(struct Task *task)
{
- const s16 reelTimeouts[3] = {36, 33, 30};
+ const s16 reelTimeouts[3] = {
+ [OLD_ROD] = 36,
+ [GOOD_ROD] = 33,
+ [SUPER_ROD] = 30
+ };
AlignFishingAnimationFrames();
task->tFrameCounter++;
@@ -1881,13 +1884,13 @@ static bool8 Fishing8(struct Task *task)
}
// Determine if we're going to play the dot game again
-static bool8 Fishing9(struct Task *task)
+static bool8 Fishing_CheckMoreDots(struct Task *task)
{
- const s16 arr[][2] =
+ const s16 moreDotsChance[][2] =
{
- {0, 0},
- {40, 10},
- {70, 30}
+ [OLD_ROD] = {0, 0},
+ [GOOD_ROD] = {40, 10},
+ [SUPER_ROD] = {70, 30}
};
AlignFishingAnimationFrames();
@@ -1901,13 +1904,13 @@ static bool8 Fishing9(struct Task *task)
// probability of having to play another round
s16 probability = Random() % 100;
- if (arr[task->tFishingRod][task->tRoundsPlayed] > probability)
+ if (moreDotsChance[task->tFishingRod][task->tRoundsPlayed] > probability)
task->tStep = FISHING_START_ROUND;
}
return FALSE;
}
-static bool8 Fishing10(struct Task *task)
+static bool8 Fishing_MonOnHook(struct Task *task)
{
AlignFishingAnimationFrames();
FillWindowPixelBuffer(0, PIXEL_FILL(1));
@@ -1917,7 +1920,7 @@ static bool8 Fishing10(struct Task *task)
return FALSE;
}
-static bool8 Fishing11(struct Task *task)
+static bool8 Fishing_StartEncounter(struct Task *task)
{
if (task->tFrameCounter == 0)
AlignFishingAnimationFrames();
@@ -1933,7 +1936,7 @@ static bool8 Fishing11(struct Task *task)
ObjectEventSetGraphicsId(playerObjEvent, task->tPlayerGfxId);
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8155604(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
+ SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
ClearDialogWindowAndFrame(0, TRUE);
@@ -1947,14 +1950,13 @@ static bool8 Fishing11(struct Task *task)
gPlayerAvatar.preventStep = FALSE;
ScriptContext2_Disable();
FishingWildEncounter(task->tFishingRod);
- sub_80ED950(1);
+ RecordFishingAttemptForTV(TRUE);
DestroyTask(FindTaskIdByFunc(Task_Fishing));
}
return FALSE;
}
-// Not even a nibble
-static bool8 Fishing12(struct Task *task)
+static bool8 Fishing_NotEvenNibble(struct Task *task)
{
AlignFishingAnimationFrames();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
@@ -1964,8 +1966,7 @@ static bool8 Fishing12(struct Task *task)
return TRUE;
}
-// It got away
-static bool8 Fishing13(struct Task *task)
+static bool8 Fishing_GotAway(struct Task *task)
{
AlignFishingAnimationFrames();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection()));
@@ -1975,15 +1976,14 @@ static bool8 Fishing13(struct Task *task)
return TRUE;
}
-// Wait one second
-static bool8 Fishing14(struct Task *task)
+static bool8 Fishing_NoMon(struct Task *task)
{
AlignFishingAnimationFrames();
task->tStep++;
return FALSE;
}
-static bool8 Fishing15(struct Task *task)
+static bool8 Fishing_PutRodAway(struct Task *task)
{
AlignFishingAnimationFrames();
if (gSprites[gPlayerAvatar.spriteId].animEnded)
@@ -1993,7 +1993,7 @@ static bool8 Fishing15(struct Task *task)
ObjectEventSetGraphicsId(playerObjEvent, task->tPlayerGfxId);
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8155604(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
+ SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
task->tStep++;
@@ -2001,7 +2001,7 @@ static bool8 Fishing15(struct Task *task)
return FALSE;
}
-static bool8 Fishing16(struct Task *task)
+static bool8 Fishing_EndNoMon(struct Task *task)
{
RunTextPrinters();
if (!IsTextPrinterActive(0))
@@ -2010,7 +2010,7 @@ static bool8 Fishing16(struct Task *task)
ScriptContext2_Disable();
UnfreezeObjectEvents();
ClearDialogWindowAndFrame(0, TRUE);
- sub_80ED950(0);
+ RecordFishingAttemptForTV(FALSE);
DestroyTask(FindTaskIdByFunc(Task_Fishing));
}
return FALSE;
@@ -2052,7 +2052,7 @@ static void AlignFishingAnimationFrames(void)
if (animType == 10 || animType == 11)
playerSprite->pos2.y = 8;
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8155604(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
+ SetSurfBobWhileFishingState(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
}
void sub_808D074(u8 a0)
diff --git a/src/field_region_map.c b/src/field_region_map.c
index b442675f3..fc6f0fa76 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -116,7 +116,7 @@ static void MCB2_InitRegionMapRegisters(void)
InitWindows(sFieldRegionMapWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 0x27, 0xd0);
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
SetMainCallback2(MCB2_FieldUpdateRegionMap);
SetVBlankCallback(VBCB_FieldUpdateRegionMap);
}
@@ -134,7 +134,7 @@ static void MCB2_FieldUpdateRegionMap(void)
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
}
static void FieldUpdateRegionMap(void)
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 53057fc31..fd64fd8e9 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -12,6 +12,7 @@
#include "field_special_scene.h"
#include "field_weather.h"
#include "gpu_regs.h"
+#include "io_reg.h"
#include "link.h"
#include "link_rfu.h"
#include "load_save.h"
@@ -34,18 +35,14 @@
#include "trainer_hill.h"
#include "fldeff.h"
-extern const u16 gOrbEffectBackgroundLayerFlags[];
-
// This file's functions.
-static void sub_8080B9C(u8);
static void Task_ExitNonAnimDoor(u8);
static void Task_ExitNonDoor(u8);
-static void task0A_fade_n_map_maybe(u8);
-static void sub_808115C(u8);
+static void Task_DoContestHallWarp(u8);
static void FillPalBufferWhite(void);
static void Task_ExitDoor(u8);
static bool32 WaitForWeatherFadeIn(void);
-static void task0A_mpl_807E31C(u8 taskId);
+static void Task_TeleportTileWarpExit(u8 taskId);
static void Task_WarpAndLoadMap(u8 taskId);
static void Task_DoDoorWarp(u8 taskId);
static void Task_EnableScriptAfterMusicFade(u8 taskId);
@@ -291,19 +288,19 @@ void FieldCB_WarpExitFadeFromWhite(void)
void FieldCB_WarpExitFadeFromBlack(void)
{
- if (!sub_81D6534()) // sub_81D6534 always returns false
+ if (!OnTrainerHillEReaderChallengeFloor()) // always false
Overworld_PlaySpecialMapMusic();
FadeInFromBlack();
SetUpWarpExitTask();
ScriptContext2_Enable();
}
-static void FieldCB_TeleportWarpExit(void)
+static void FieldCB_TeleportTileWarpExit(void)
{
Overworld_PlaySpecialMapMusic();
WarpFadeInScreen();
PlaySE(SE_TK_WARPOUT);
- CreateTask(task0A_mpl_807E31C, 10);
+ CreateTask(Task_TeleportTileWarpExit, 10);
ScriptContext2_Enable();
}
@@ -314,7 +311,7 @@ static void FieldCB_MossdeepGymWarpExit(void)
PlaySE(SE_TK_WARPOUT);
CreateTask(Task_ExitNonDoor, 10);
ScriptContext2_Enable();
- sub_8085540(0xE);
+ SetObjectEventLoadFlag((~SKIP_OBJECT_EVENT_LOAD) & 0xF);
}
static void Task_ExitDoor(u8 taskId)
@@ -546,19 +543,20 @@ void DoLavaridgeGym1FWarp(void)
StartLavaridgeGym1FWarp(10);
}
-void DoTeleportWarp(void)
+// Warp from a teleporting tile, e.g. in Aqua Hideout (For the move Teleport see FldEff_TeleportWarpOut)
+void DoTeleportTileWarp(void)
{
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
PlaySE(SE_TK_WARPIN);
CreateTask(Task_WarpAndLoadMap, 10);
- gFieldCallback = FieldCB_TeleportWarpExit;
+ gFieldCallback = FieldCB_TeleportTileWarpExit;
}
void DoMossdeepGymWarp(void)
{
- sub_8085540(1);
+ SetObjectEventLoadFlag(SKIP_OBJECT_EVENT_LOAD);
ScriptContext2_Enable();
SaveObjectEvents();
TryFadeOutOldMapMusic();
@@ -576,19 +574,21 @@ void DoPortholeWarp(void)
gFieldCallback = FieldCB_ShowPortholeView;
}
-static void sub_80AF8E0(u8 taskId)
+#define tState data[0]
+
+static void Task_DoCableClubWarp(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
ScriptContext2_Enable();
- task->data[0]++;
+ task->tState++;
break;
case 1:
if (!PaletteFadeActive() && BGMusicStopped())
- task->data[0]++;
+ task->tState++;
break;
case 2:
WarpIntoMap();
@@ -598,13 +598,15 @@ static void sub_80AF8E0(u8 taskId)
}
}
+#undef tState
+
void DoCableClubWarp(void)
{
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
PlaySE(SE_KAIDAN);
- CreateTask(sub_80AF8E0, 10);
+ CreateTask(Task_DoCableClubWarp, 10);
}
static void Task_ReturnToWorldFromLinkRoom(u8 taskId)
@@ -727,7 +729,7 @@ static void Task_DoDoorWarp(u8 taskId)
}
}
-static void task0A_fade_n_map_maybe(u8 taskId)
+static void Task_DoContestHallWarp(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -746,7 +748,7 @@ static void task0A_fade_n_map_maybe(u8 taskId)
break;
case 2:
WarpIntoMap();
- SetMainCallback2(sub_8086024);
+ SetMainCallback2(CB2_ReturnToFieldContestHall);
DestroyTask(taskId);
break;
}
@@ -760,7 +762,7 @@ void DoContestHallWarp(void)
PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
- CreateTask(task0A_fade_n_map_maybe, 10);
+ CreateTask(Task_DoContestHallWarp, 10);
}
static void SetFlashScanlineEffectWindowBoundary(u16 *dest, u32 y, s32 left, s32 right)
@@ -976,7 +978,7 @@ void AnimateFlash(u8 flashLevel)
u8 value = 0;
if (!flashLevel)
value = 1;
- sub_80AFFDC(120, 80, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 1);
+ sub_80AFFDC(DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 1);
sub_80AFFB8();
ScriptContext2_Enable();
}
@@ -985,18 +987,18 @@ void WriteFlashScanlineEffectBuffer(u8 flashLevel)
{
if (flashLevel)
{
- SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, sFlashLevelPixelRadii[flashLevel]);
+ SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, sFlashLevelPixelRadii[flashLevel]);
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
}
}
void WriteBattlePyramidViewScanlineEffectBuffer(void)
{
- SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, gSaveBlock2Ptr->frontier.pyramidLightRadius);
+ SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, gSaveBlock2Ptr->frontier.pyramidLightRadius);
CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480);
}
-static void task0A_mpl_807E31C(u8 taskId)
+static void Task_TeleportTileWarpExit(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -1053,7 +1055,7 @@ void sub_80B0244(void)
{
ScriptContext2_Enable();
CreateTask(Task_WarpAndLoadMap, 10);
- gFieldCallback = FieldCB_TeleportWarpExit;
+ gFieldCallback = FieldCB_TeleportTileWarpExit;
}
void sub_80B0268(void)
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 3a3367957..bb8e8b1d9 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -73,11 +73,11 @@ void Task_Truck1(u8 taskId)
s16 box1, box2, box3;
box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box.
- sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
+ SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box.
- sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
+ SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box.
- sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
+ SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
if (++data[0] == SECONDS(500)) // this will never run
data[0] = 0; // reset the timer if it gets stuck.
@@ -116,11 +116,11 @@ void Task_Truck2(u8 taskId)
cameraYpan = GetTruckCameraBobbingY(data[2]);
SetCameraPanning(cameraXpan, cameraYpan);
box1 = GetTruckBoxMovement(data[2] + 30) * 4;
- sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
+ SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
box2 = GetTruckBoxMovement(data[2]) * 2;
- sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
+ SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
box3 = GetTruckBoxMovement(data[2]) * 4;
- sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
+ SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
}
}
@@ -147,9 +147,9 @@ static void Task_Truck3(u8 taskId)
cameraXpan = gTruckCamera_HorizontalTable[data[1]];
cameraYpan = 0;
SetCameraPanning(cameraXpan, 0);
- sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
- sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
- sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
+ SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
+ SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
+ SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
}
}
@@ -215,9 +215,9 @@ void Task_HandleTruckSequence(u8 taskId)
data[1]++;
if (data[1] == 120)
{
- MapGridSetMetatileIdAt(11, 8, METATILE_ID(InsideOfTruck, ExitLight_Top));
- MapGridSetMetatileIdAt(11, 9, METATILE_ID(InsideOfTruck, ExitLight_Mid));
- MapGridSetMetatileIdAt(11, 10, METATILE_ID(InsideOfTruck, ExitLight_Bottom));
+ MapGridSetMetatileIdAt(11, 8, METATILE_InsideOfTruck_ExitLight_Top);
+ MapGridSetMetatileIdAt(11, 9, METATILE_InsideOfTruck_ExitLight_Mid);
+ MapGridSetMetatileIdAt(11, 10, METATILE_InsideOfTruck_ExitLight_Bottom);
DrawWholeMapView();
PlaySE(SE_TRACK_DOOR);
DestroyTask(taskId);
@@ -229,9 +229,9 @@ void Task_HandleTruckSequence(u8 taskId)
void ExecuteTruckSequence(void)
{
- MapGridSetMetatileIdAt(11, 8, METATILE_ID(InsideOfTruck, DoorClosedFloor_Top));
- MapGridSetMetatileIdAt(11, 9, METATILE_ID(InsideOfTruck, DoorClosedFloor_Mid));
- MapGridSetMetatileIdAt(11, 10, METATILE_ID(InsideOfTruck, DoorClosedFloor_Bottom));
+ MapGridSetMetatileIdAt(11, 8, METATILE_InsideOfTruck_DoorClosedFloor_Top);
+ MapGridSetMetatileIdAt(11, 9, METATILE_InsideOfTruck_DoorClosedFloor_Mid);
+ MapGridSetMetatileIdAt(11, 10, METATILE_InsideOfTruck_DoorClosedFloor_Bottom);
DrawWholeMapView();
ScriptContext2_Enable();
CpuFastFill(0, gPlttBufferFaded, 0x400);
@@ -242,9 +242,9 @@ void EndTruckSequence(u8 taskId)
{
if (!FuncIsActiveTask(Task_HandleTruckSequence))
{
- sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
- sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
- sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
+ SetObjectEventSpritePosByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
+ SetObjectEventSpritePosByLocalIdAndMap(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
+ SetObjectEventSpritePosByLocalIdAndMap(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
}
}
diff --git a/src/field_specials.c b/src/field_specials.c
index 86b929491..98643b26e 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -655,9 +655,9 @@ void MauvilleGymPressSwitch(void)
for (i = 0; i < ARRAY_COUNT(sMauvilleGymSwitchCoords); i++)
{
if (i == gSpecialVar_0x8004)
- MapGridSetMetatileIdAt(sMauvilleGymSwitchCoords[i].x, sMauvilleGymSwitchCoords[i].y, METATILE_ID(MauvilleGym, PressedSwitch));
+ MapGridSetMetatileIdAt(sMauvilleGymSwitchCoords[i].x, sMauvilleGymSwitchCoords[i].y, METATILE_MauvilleGym_PressedSwitch);
else
- MapGridSetMetatileIdAt(sMauvilleGymSwitchCoords[i].x, sMauvilleGymSwitchCoords[i].y, METATILE_ID(MauvilleGym, RaisedSwitch));
+ MapGridSetMetatileIdAt(sMauvilleGymSwitchCoords[i].x, sMauvilleGymSwitchCoords[i].y, METATILE_MauvilleGym_RaisedSwitch);
}
}
@@ -672,83 +672,83 @@ void MauvilleGymSetDefaultBarriers(void)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case METATILE_ID(MauvilleGym, GreenBeamH1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH1_Off));
+ case METATILE_MauvilleGym_GreenBeamH1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH1_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH2_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH2_Off));
+ case METATILE_MauvilleGym_GreenBeamH2_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH2_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH3_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH3_Off));
+ case METATILE_MauvilleGym_GreenBeamH3_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH3_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH4_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH4_Off));
+ case METATILE_MauvilleGym_GreenBeamH4_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH4_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH1_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH1_On));
+ case METATILE_MauvilleGym_GreenBeamH1_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH1_On);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH2_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH2_On));
+ case METATILE_MauvilleGym_GreenBeamH2_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH2_On);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH3_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH3_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_GreenBeamH3_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH3_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH4_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH4_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_GreenBeamH4_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH4_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, RedBeamH1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH1_Off));
+ case METATILE_MauvilleGym_RedBeamH1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH1_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH2_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH2_Off));
+ case METATILE_MauvilleGym_RedBeamH2_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH2_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH3_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH3_Off));
+ case METATILE_MauvilleGym_RedBeamH3_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH3_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH4_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH4_Off));
+ case METATILE_MauvilleGym_RedBeamH4_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH4_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH1_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH1_On));
+ case METATILE_MauvilleGym_RedBeamH1_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH1_On);
break;
- case METATILE_ID(MauvilleGym, RedBeamH2_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH2_On));
+ case METATILE_MauvilleGym_RedBeamH2_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH2_On);
break;
- case METATILE_ID(MauvilleGym, RedBeamH3_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH3_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_RedBeamH3_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH3_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, RedBeamH4_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH4_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_RedBeamH4_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH4_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, GreenBeamV1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_GreenBeamV1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, GreenBeamV2_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, FloorTile));
+ case METATILE_MauvilleGym_GreenBeamV2_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_FloorTile);
break;
- case METATILE_ID(MauvilleGym, RedBeamV1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_Off) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_RedBeamV1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_Off | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, RedBeamV2_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, FloorTile));
+ case METATILE_MauvilleGym_RedBeamV2_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_FloorTile);
break;
- case METATILE_ID(MauvilleGym, PoleBottom_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamV1_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_PoleBottom_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamV1_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, FloorTile):
- if (MapGridGetMetatileIdAt(x, y - 1) == METATILE_ID(MauvilleGym, GreenBeamV1_On))
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamV2_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_FloorTile:
+ if (MapGridGetMetatileIdAt(x, y - 1) == METATILE_MauvilleGym_GreenBeamV1_On)
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamV2_On | METATILE_COLLISION_MASK);
else
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamV2_On) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamV2_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, PoleBottom_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamV1_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_PoleBottom_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamV1_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, PoleTop_Off):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleTop_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_PoleTop_Off:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleTop_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, PoleTop_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleTop_Off));
+ case METATILE_MauvilleGym_PoleTop_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleTop_Off);
break;
}
}
@@ -762,7 +762,7 @@ void MauvilleGymDeactivatePuzzle(void)
const struct UCoords8 *switchCoords = sMauvilleGymSwitchCoords;
for (i = ARRAY_COUNT(sMauvilleGymSwitchCoords) - 1; i >= 0; i--)
{
- MapGridSetMetatileIdAt(switchCoords->x, switchCoords->y, METATILE_ID(MauvilleGym, PressedSwitch));
+ MapGridSetMetatileIdAt(switchCoords->x, switchCoords->y, METATILE_MauvilleGym_PressedSwitch);
switchCoords++;
}
for (y = 12; y < 24; y++)
@@ -771,42 +771,42 @@ void MauvilleGymDeactivatePuzzle(void)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case METATILE_ID(MauvilleGym, GreenBeamH1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH1_Off));
+ case METATILE_MauvilleGym_GreenBeamH1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH1_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH2_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH2_Off));
+ case METATILE_MauvilleGym_GreenBeamH2_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH2_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH3_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH3_Off));
+ case METATILE_MauvilleGym_GreenBeamH3_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH3_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamH4_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, GreenBeamH4_Off));
+ case METATILE_MauvilleGym_GreenBeamH4_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_GreenBeamH4_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH1_Off));
+ case METATILE_MauvilleGym_RedBeamH1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH1_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH2_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH2_Off));
+ case METATILE_MauvilleGym_RedBeamH2_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH2_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH3_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH3_Off));
+ case METATILE_MauvilleGym_RedBeamH3_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH3_Off);
break;
- case METATILE_ID(MauvilleGym, RedBeamH4_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, RedBeamH4_Off));
+ case METATILE_MauvilleGym_RedBeamH4_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_RedBeamH4_Off);
break;
- case METATILE_ID(MauvilleGym, GreenBeamV1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_On) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_GreenBeamV1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_On | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, RedBeamV1_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleBottom_Off) | METATILE_COLLISION_MASK);
+ case METATILE_MauvilleGym_RedBeamV1_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleBottom_Off | METATILE_COLLISION_MASK);
break;
- case METATILE_ID(MauvilleGym, GreenBeamV2_On):
- case METATILE_ID(MauvilleGym, RedBeamV2_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, FloorTile));
+ case METATILE_MauvilleGym_GreenBeamV2_On:
+ case METATILE_MauvilleGym_RedBeamV2_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_FloorTile);
break;
- case METATILE_ID(MauvilleGym, PoleTop_On):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(MauvilleGym, PoleTop_Off));
+ case METATILE_MauvilleGym_PoleTop_On:
+ MapGridSetMetatileIdAt(x, y, METATILE_MauvilleGym_PoleTop_Off);
break;
}
}
@@ -816,11 +816,11 @@ void MauvilleGymDeactivatePuzzle(void)
static const bool8 sSlidingDoorNextFrameDelay[] = {0, 1, 1, 1, 1};
static const u16 sPetalburgGymSlidingDoorMetatiles[] = {
- METATILE_ID(PetalburgGym, SlidingDoor_Frame0),
- METATILE_ID(PetalburgGym, SlidingDoor_Frame1),
- METATILE_ID(PetalburgGym, SlidingDoor_Frame2),
- METATILE_ID(PetalburgGym, SlidingDoor_Frame3),
- METATILE_ID(PetalburgGym, SlidingDoor_Frame4),
+ METATILE_PetalburgGym_SlidingDoor_Frame0,
+ METATILE_PetalburgGym_SlidingDoor_Frame1,
+ METATILE_PetalburgGym_SlidingDoor_Frame2,
+ METATILE_PetalburgGym_SlidingDoor_Frame3,
+ METATILE_PetalburgGym_SlidingDoor_Frame4,
};
void PetalburgGymSlideOpenRoomDoors(void)
@@ -1095,30 +1095,30 @@ static void PCTurnOnEffect_1(s16 isPcTurnedOn, s8 dx, s8 dy)
{
if (gSpecialVar_0x8004 == PC_LOCATION_OTHER)
{
- tileId = METATILE_ID(Building, PC_Off);
+ tileId = METATILE_Building_PC_Off;
}
else if (gSpecialVar_0x8004 == PC_LOCATION_BRENDANS_HOUSE)
{
- tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_Off);
+ tileId = METATILE_BrendansMaysHouse_BrendanPC_Off;
}
else if (gSpecialVar_0x8004 == PC_LOCATION_MAYS_HOUSE)
{
- tileId = METATILE_ID(BrendansMaysHouse, MayPC_Off);
+ tileId = METATILE_BrendansMaysHouse_MayPC_Off;
}
}
else
{
if (gSpecialVar_0x8004 == PC_LOCATION_OTHER)
{
- tileId = METATILE_ID(Building, PC_On);
+ tileId = METATILE_Building_PC_On;
}
else if (gSpecialVar_0x8004 == PC_LOCATION_BRENDANS_HOUSE)
{
- tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_On);
+ tileId = METATILE_BrendansMaysHouse_BrendanPC_On;
}
else if (gSpecialVar_0x8004 == PC_LOCATION_MAYS_HOUSE)
{
- tileId = METATILE_ID(BrendansMaysHouse, MayPC_On);
+ tileId = METATILE_BrendansMaysHouse_MayPC_On;
}
}
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
@@ -1152,15 +1152,15 @@ static void PCTurnOffEffect(void)
}
if (gSpecialVar_0x8004 == 0)
{
- tileId = METATILE_ID(Building, PC_Off);
+ tileId = METATILE_Building_PC_Off;
}
else if (gSpecialVar_0x8004 == 1)
{
- tileId = METATILE_ID(BrendansMaysHouse, BrendanPC_Off);
+ tileId = METATILE_BrendansMaysHouse_BrendanPC_Off;
}
else if (gSpecialVar_0x8004 == 2)
{
- tileId = METATILE_ID(BrendansMaysHouse, MayPC_Off);
+ tileId = METATILE_BrendansMaysHouse_MayPC_Off;
}
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK);
DrawWholeMapView();
@@ -1195,13 +1195,13 @@ static void LotteryCornerComputerEffect(struct Task *task)
task->data[3] = 0;
if (task->data[4] != 0)
{
- MapGridSetMetatileIdAt(18, 8, METATILE_ID(Shop, Laptop1_Normal) | METATILE_COLLISION_MASK);
- MapGridSetMetatileIdAt(18, 9, METATILE_ID(Shop, Laptop2_Normal) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 8, METATILE_Shop_Laptop1_Normal | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 9, METATILE_Shop_Laptop2_Normal | METATILE_COLLISION_MASK);
}
else
{
- MapGridSetMetatileIdAt(18, 8, METATILE_ID(Shop, Laptop1_Flash) | METATILE_COLLISION_MASK);
- MapGridSetMetatileIdAt(18, 9, METATILE_ID(Shop, Laptop2_Flash) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 8, METATILE_Shop_Laptop1_Flash | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 9, METATILE_Shop_Laptop2_Flash | METATILE_COLLISION_MASK);
}
DrawWholeMapView();
task->data[4] ^= 1;
@@ -1215,8 +1215,8 @@ static void LotteryCornerComputerEffect(struct Task *task)
void EndLotteryCornerComputerEffect(void)
{
- MapGridSetMetatileIdAt(18, 8, METATILE_ID(Shop, Laptop1_Normal) | METATILE_COLLISION_MASK);
- MapGridSetMetatileIdAt(18, 9, METATILE_ID(Shop, Laptop2_Normal) | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 8, METATILE_Shop_Laptop1_Normal | METATILE_COLLISION_MASK);
+ MapGridSetMetatileIdAt(18, 9, METATILE_Shop_Laptop2_Normal | METATILE_COLLISION_MASK);
DrawWholeMapView();
}
@@ -1750,38 +1750,38 @@ const u8 *const gDeptStoreFloorNames[] =
static const u16 sElevatorWindowTiles_Ascending[][3] =
{
{
- METATILE_ID(BattleFrontier, Elevator_Top0),
- METATILE_ID(BattleFrontier, Elevator_Top1),
- METATILE_ID(BattleFrontier, Elevator_Top2)
+ METATILE_BattleFrontier_Elevator_Top0,
+ METATILE_BattleFrontier_Elevator_Top1,
+ METATILE_BattleFrontier_Elevator_Top2
},
{
- METATILE_ID(BattleFrontier, Elevator_Mid0),
- METATILE_ID(BattleFrontier, Elevator_Mid1),
- METATILE_ID(BattleFrontier, Elevator_Mid2)
+ METATILE_BattleFrontier_Elevator_Mid0,
+ METATILE_BattleFrontier_Elevator_Mid1,
+ METATILE_BattleFrontier_Elevator_Mid2
},
{
- METATILE_ID(BattleFrontier, Elevator_Bottom0),
- METATILE_ID(BattleFrontier, Elevator_Bottom1),
- METATILE_ID(BattleFrontier, Elevator_Bottom2)
+ METATILE_BattleFrontier_Elevator_Bottom0,
+ METATILE_BattleFrontier_Elevator_Bottom1,
+ METATILE_BattleFrontier_Elevator_Bottom2
},
};
static const u16 sElevatorWindowTiles_Descending[][3] =
{
{
- METATILE_ID(BattleFrontier, Elevator_Top0),
- METATILE_ID(BattleFrontier, Elevator_Top2),
- METATILE_ID(BattleFrontier, Elevator_Top1)
+ METATILE_BattleFrontier_Elevator_Top0,
+ METATILE_BattleFrontier_Elevator_Top2,
+ METATILE_BattleFrontier_Elevator_Top1
},
{
- METATILE_ID(BattleFrontier, Elevator_Mid0),
- METATILE_ID(BattleFrontier, Elevator_Mid2),
- METATILE_ID(BattleFrontier, Elevator_Mid1)
+ METATILE_BattleFrontier_Elevator_Mid0,
+ METATILE_BattleFrontier_Elevator_Mid2,
+ METATILE_BattleFrontier_Elevator_Mid1
},
{
- METATILE_ID(BattleFrontier, Elevator_Bottom0),
- METATILE_ID(BattleFrontier, Elevator_Bottom2),
- METATILE_ID(BattleFrontier, Elevator_Bottom1)
+ METATILE_BattleFrontier_Elevator_Bottom0,
+ METATILE_BattleFrontier_Elevator_Bottom2,
+ METATILE_BattleFrontier_Elevator_Bottom1
},
};
diff --git a/src/field_tasks.c b/src/field_tasks.c
index 901535677..49b6fbdd8 100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -51,26 +51,26 @@ static const TaskFunc sPerStepCallbacks[] =
// they are in pairs but declared as 1D array
static const struct PacifidlogMetatileOffsets sHalfSubmergedBridgeMetatileOffsets[] =
{
- { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)},
- { 0, -1, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Vertical1)},
- { 0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)},
- {-1, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, HalfSubmergedLogs_Horizontal1)}
+ { 0, 0, METATILE_Pacifidlog_HalfSubmergedLogs_Vertical0}, {0, 1, METATILE_Pacifidlog_HalfSubmergedLogs_Vertical1},
+ { 0, -1, METATILE_Pacifidlog_HalfSubmergedLogs_Vertical0}, {0, 0, METATILE_Pacifidlog_HalfSubmergedLogs_Vertical1},
+ { 0, 0, METATILE_Pacifidlog_HalfSubmergedLogs_Horizontal0}, {1, 0, METATILE_Pacifidlog_HalfSubmergedLogs_Horizontal1},
+ {-1, 0, METATILE_Pacifidlog_HalfSubmergedLogs_Horizontal0}, {0, 0, METATILE_Pacifidlog_HalfSubmergedLogs_Horizontal1}
};
static const struct PacifidlogMetatileOffsets sFullySubmergedBridgeMetatileOffsets[] =
{
- { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)},
- { 0, -1, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Vertical1)},
- { 0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)},
- {-1, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, SubmergedLogs_Horizontal1)}
+ { 0, 0, METATILE_Pacifidlog_SubmergedLogs_Vertical0}, {0, 1, METATILE_Pacifidlog_SubmergedLogs_Vertical1},
+ { 0, -1, METATILE_Pacifidlog_SubmergedLogs_Vertical0}, {0, 0, METATILE_Pacifidlog_SubmergedLogs_Vertical1},
+ { 0, 0, METATILE_Pacifidlog_SubmergedLogs_Horizontal0}, {1, 0, METATILE_Pacifidlog_SubmergedLogs_Horizontal1},
+ {-1, 0, METATILE_Pacifidlog_SubmergedLogs_Horizontal0}, {0, 0, METATILE_Pacifidlog_SubmergedLogs_Horizontal1}
};
static const struct PacifidlogMetatileOffsets sFloatingBridgeMetatileOffsets[] =
{
- { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, {0, 1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)},
- { 0, -1, METATILE_ID(Pacifidlog, FloatingLogs_Vertical0)}, {0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Vertical1)},
- { 0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, {1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)},
- {-1, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal0)}, {0, 0, METATILE_ID(Pacifidlog, FloatingLogs_Horizontal1)}
+ { 0, 0, METATILE_Pacifidlog_FloatingLogs_Vertical0}, {0, 1, METATILE_Pacifidlog_FloatingLogs_Vertical1},
+ { 0, -1, METATILE_Pacifidlog_FloatingLogs_Vertical0}, {0, 0, METATILE_Pacifidlog_FloatingLogs_Vertical1},
+ { 0, 0, METATILE_Pacifidlog_FloatingLogs_Horizontal0}, {1, 0, METATILE_Pacifidlog_FloatingLogs_Horizontal1},
+ {-1, 0, METATILE_Pacifidlog_FloatingLogs_Horizontal0}, {0, 0, METATILE_Pacifidlog_FloatingLogs_Horizontal1}
};
// Each element corresponds to a y coordinate row in the sootopolis gym 1F map.
@@ -105,10 +105,10 @@ static const u16 sSootopolisGymIceRowVars[] =
};
static const u16 sMuddySlopeMetatiles[] = {
- METATILE_ID(General, MuddySlope_Frame0),
- METATILE_ID(General, MuddySlope_Frame3),
- METATILE_ID(General, MuddySlope_Frame2),
- METATILE_ID(General, MuddySlope_Frame1)
+ METATILE_General_MuddySlope_Frame0,
+ METATILE_General_MuddySlope_Frame3,
+ METATILE_General_MuddySlope_Frame2,
+ METATILE_General_MuddySlope_Frame1
};
static void Task_RunPerStepCallback(u8 taskId)
@@ -380,11 +380,11 @@ static void SetLoweredForetreeBridgeMetatile(s16 x, s16 y)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case METATILE_ID(Fortree, BridgeOverGrass_Raised):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverGrass_Lowered));
+ case METATILE_Fortree_BridgeOverGrass_Raised:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fortree_BridgeOverGrass_Lowered);
break;
- case METATILE_ID(Fortree, BridgeOverTrees_Raised):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverTrees_Lowered));
+ case METATILE_Fortree_BridgeOverTrees_Raised:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fortree_BridgeOverTrees_Lowered);
break;
}
}
@@ -397,11 +397,11 @@ static void SetNormalFortreeBridgeMetatile(s16 x, s16 y)
{
switch (MapGridGetMetatileIdAt(x, y))
{
- case METATILE_ID(Fortree, BridgeOverGrass_Lowered):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverGrass_Raised));
+ case METATILE_Fortree_BridgeOverGrass_Lowered:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fortree_BridgeOverGrass_Raised);
break;
- case METATILE_ID(Fortree, BridgeOverTrees_Lowered):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, BridgeOverTrees_Raised));
+ case METATILE_Fortree_BridgeOverTrees_Lowered:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fortree_BridgeOverTrees_Raised);
break;
}
}
@@ -529,7 +529,7 @@ void SetSootopolisGymCrackedIceMetatiles(void)
for (y = 0; y < height; y++)
{
if (IsIcePuzzleCoordVisited(x, y) == TRUE)
- MapGridSetMetatileIdAt(x + 7, y + 7, METATILE_ID(SootopolisGym, Ice_Cracked));
+ MapGridSetMetatileIdAt(x + 7, y + 7, METATILE_SootopolisGym_Ice_Cracked);
}
}
}
@@ -584,7 +584,7 @@ static void SootopolisGymIcePerStepCallback(u8 taskId)
x = data[4];
y = data[5];
PlaySE(SE_RU_BARI);
- MapGridSetMetatileIdAt(x, y, METATILE_ID(SootopolisGym, Ice_Cracked));
+ MapGridSetMetatileIdAt(x, y, METATILE_SootopolisGym_Ice_Cracked);
CurrentMapDrawMetatileAt(x, y);
MarkIcePuzzleCoordVisited(x - 7, y - 7);
data[1] = 1;
@@ -600,7 +600,7 @@ static void SootopolisGymIcePerStepCallback(u8 taskId)
x = data[4];
y = data[5];
PlaySE(SE_RU_GASYAN);
- MapGridSetMetatileIdAt(x, y, METATILE_ID(SootopolisGym, Ice_Broken));
+ MapGridSetMetatileIdAt(x, y, METATILE_SootopolisGym_Ice_Broken);
CurrentMapDrawMetatileAt(x, y);
data[1] = 1;
}
@@ -620,10 +620,10 @@ static void AshGrassPerStepCallback(u8 taskId)
data[2] = y;
if (MetatileBehavior_IsAshGrass(MapGridGetMetatileBehaviorAt(x, y)))
{
- if (MapGridGetMetatileIdAt(x, y) == METATILE_ID(Fallarbor, AshGrass))
- StartAshFieldEffect(x, y, METATILE_ID(Fallarbor, NormalGrass), 4);
+ if (MapGridGetMetatileIdAt(x, y) == METATILE_Fallarbor_AshGrass)
+ StartAshFieldEffect(x, y, METATILE_Fallarbor_NormalGrass, 4);
else
- StartAshFieldEffect(x, y, METATILE_ID(Lavaridge, NormalGrass), 4);
+ StartAshFieldEffect(x, y, METATILE_Lavaridge_NormalGrass, 4);
if (CheckBagHasItem(ITEM_SOOT_SACK, 1))
{
@@ -692,7 +692,7 @@ static void SetMuddySlopeMetatile(s16 *data, s16 x, s16 y)
MapGridSetMetatileIdAt(x, y, tile);
CurrentMapDrawMetatileAt(x, y);
- MapGridSetMetatileIdAt(x, y, METATILE_ID(General, MuddySlope_Frame0));
+ MapGridSetMetatileIdAt(x, y, METATILE_General_MuddySlope_Frame0);
}
static void Task_MuddySlope(u8 taskId)
diff --git a/src/fieldmap.c b/src/fieldmap.c
index cfc7018bd..49337ebbe 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -44,7 +44,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader);
static void LoadSavedMapView(void);
static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, u8 yMode);
-struct MapHeader const *const mapconnection_get_mapheader(struct MapConnection *connection)
+struct MapHeader const *const GetMapHeaderFromConnection(struct MapConnection *connection)
{
return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum);
}
@@ -124,7 +124,7 @@ static void InitBackupMapLayoutConnections(struct MapHeader *mapHeader)
gMapConnectionFlags = sDummyConnectionFlags;
for (i = 0; i < count; i++, connection++)
{
- struct MapHeader const *cMap = mapconnection_get_mapheader(connection);
+ struct MapHeader const *cMap = GetMapHeaderFromConnection(connection);
u32 offset = connection->offset;
switch (connection->direction)
{
@@ -741,7 +741,7 @@ int CanCameraMoveInDirection(int direction)
void sub_80887F8(struct MapConnection *connection, int direction, int x, int y)
{
struct MapHeader const *mapHeader;
- mapHeader = mapconnection_get_mapheader(connection);
+ mapHeader = GetMapHeaderFromConnection(connection);
switch (direction)
{
case CONNECTION_EAST:
@@ -812,7 +812,7 @@ struct MapConnection *sub_8088950(u8 direction, int x, int y)
bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection)
{
struct MapHeader const *mapHeader;
- mapHeader = mapconnection_get_mapheader(connection);
+ mapHeader = GetMapHeaderFromConnection(connection);
switch (direction)
{
case CONNECTION_SOUTH:
@@ -853,7 +853,7 @@ int sub_8088A38(int x, int width)
int sub_8088A4C(struct MapConnection *connection, int x, int y)
{
struct MapHeader const *mapHeader;
- mapHeader = mapconnection_get_mapheader(connection);
+ mapHeader = GetMapHeaderFromConnection(connection);
switch (connection->direction)
{
case CONNECTION_SOUTH:
@@ -900,7 +900,7 @@ struct MapConnection *GetConnectionAtCoords(s16 x, s16 y)
return NULL;
}
-void sub_8088B3C(u16 x, u16 y)
+void SetCameraFocusCoords(u16 x, u16 y)
{
gSaveBlock1Ptr->pos.x = x - 7;
gSaveBlock1Ptr->pos.y = y - 7;
@@ -912,7 +912,8 @@ void GetCameraFocusCoords(u16 *x, u16 *y)
*y = gSaveBlock1Ptr->pos.y + 7;
}
-void SetPlayerCoords(u16 x, u16 y)
+// Unused
+static void SetCameraCoords(u16 x, u16 y)
{
gSaveBlock1Ptr->pos.x = x;
gSaveBlock1Ptr->pos.y = y;
@@ -945,12 +946,12 @@ static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth,
else
mapMetatilePtr += mapWidth;
- if (sub_80FADE4(*mapMetatilePtr & METATILE_ID_MASK, yMode) == 1)
+ if (IsLargeBreakableDecoration(*mapMetatilePtr & METATILE_ID_MASK, yMode) == TRUE)
return TRUE;
return FALSE;
}
-void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset)
+static void CopyTilesetToVram(struct Tileset const *tileset, u16 numTiles, u16 offset)
{
if (tileset)
{
@@ -961,7 +962,7 @@ void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles,
}
}
-void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset)
+static void CopyTilesetToVramUsingHeap(struct Tileset const *tileset, u16 numTiles, u16 offset)
{
if (tileset)
{
@@ -982,7 +983,7 @@ void nullsub_90(void)
}
-void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
+void LoadTilesetPalette(struct Tileset const *tileset, u16 destOffset, u16 size)
{
u16 black = RGB_BLACK;
@@ -1007,45 +1008,45 @@ void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u1
}
}
-void copy_map_tileset1_to_vram(struct MapLayout const *mapLayout)
+void CopyPrimaryTilesetToVram(struct MapLayout const *mapLayout)
{
- copy_tileset_patterns_to_vram(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
+ CopyTilesetToVram(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
}
-void copy_map_tileset2_to_vram(struct MapLayout const *mapLayout)
+void CopySecondaryTilesetToVram(struct MapLayout const *mapLayout)
{
- copy_tileset_patterns_to_vram(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
+ CopyTilesetToVram(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
}
-void copy_map_tileset2_to_vram_2(struct MapLayout const *mapLayout)
+void CopySecondaryTilesetToVramUsingHeap(struct MapLayout const *mapLayout)
{
- copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
+ CopyTilesetToVramUsingHeap(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
}
-void apply_map_tileset1_palette(struct MapLayout const *mapLayout)
+static void LoadPrimaryTilesetPalette(struct MapLayout const *mapLayout)
{
- apply_map_tileset_palette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2);
+ LoadTilesetPalette(mapLayout->primaryTileset, 0, NUM_PALS_IN_PRIMARY * 16 * 2);
}
-void apply_map_tileset2_palette(struct MapLayout const *mapLayout)
+void LoadSecondaryTilesetPalette(struct MapLayout const *mapLayout)
{
- apply_map_tileset_palette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2);
+ LoadTilesetPalette(mapLayout->secondaryTileset, NUM_PALS_IN_PRIMARY * 16, (NUM_PALS_TOTAL - NUM_PALS_IN_PRIMARY) * 16 * 2);
}
-void copy_map_tileset1_tileset2_to_vram(struct MapLayout const *mapLayout)
+void CopyMapTilesetsToVram(struct MapLayout const *mapLayout)
{
if (mapLayout)
{
- copy_tileset_patterns_to_vram2(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
- copy_tileset_patterns_to_vram2(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
+ CopyTilesetToVramUsingHeap(mapLayout->primaryTileset, NUM_TILES_IN_PRIMARY, 0);
+ CopyTilesetToVramUsingHeap(mapLayout->secondaryTileset, NUM_TILES_TOTAL - NUM_TILES_IN_PRIMARY, NUM_TILES_IN_PRIMARY);
}
}
-void apply_map_tileset1_tileset2_palette(struct MapLayout const *mapLayout)
+void LoadMapTilesetPalettes(struct MapLayout const *mapLayout)
{
if (mapLayout)
{
- apply_map_tileset1_palette(mapLayout);
- apply_map_tileset2_palette(mapLayout);
+ LoadPrimaryTilesetPalette(mapLayout);
+ LoadSecondaryTilesetPalette(mapLayout);
}
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 88927959e..34868342f 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "event_object_lock.h"
#include "event_object_movement.h"
+#include "event_scripts.h"
#include "faraway_island.h"
#include "field_camera.h"
#include "field_effect.h"
@@ -24,11 +25,10 @@
extern struct MapPosition gPlayerFacingPosition;
-extern const u8 EventScript_FldEffCut[];
extern const u8 FarawayIsland_Interior_EventScript_HideMewWhenGrassCut[];
extern const u8 gFieldEffectPic_CutGrass[];
-extern const u16 gFieldEffectObjectPalette6[];
+extern const u16 gFieldEffectPal_CutGrass[];
// cut 'square' defines
#define CUT_NORMAL_SIDE 3
@@ -122,12 +122,12 @@ static const struct SpriteFrameImage sSpriteImageTable_CutGrass[] =
{gFieldEffectPic_CutGrass, 0x20},
};
-const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, 0x1000};
+const struct SpritePalette gSpritePalette_CutGrass = {gFieldEffectPal_CutGrass, FLDEFF_PAL_TAG_CUT_GRASS};
static const struct SpriteTemplate sSpriteTemplate_CutGrass =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x1000,
+ .paletteTag = FLDEFF_PAL_TAG_CUT_GRASS,
.oam = &sOamData_CutGrass,
.anims = sSpriteAnimTable_CutGrass,
.images = sSpriteImageTable_CutGrass,
@@ -281,7 +281,7 @@ static void FieldCallback_CutGrass(void)
bool8 FldEff_UseCutOnGrass(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)StartCutGrassFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartCutGrassFieldEffect;
@@ -292,12 +292,12 @@ bool8 FldEff_UseCutOnGrass(void)
static void FieldCallback_CutTree(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- ScriptContext1_SetupScript(EventScript_FldEffCut);
+ ScriptContext1_SetupScript(EventScript_UseCut);
}
bool8 FldEff_UseCutOnTree(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)StartCutTreeFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartCutTreeFieldEffect;
@@ -355,36 +355,36 @@ static void SetCutGrassMetatile(s16 x, s16 y)
switch (metatileId)
{
- case METATILE_ID(Fortree, LongGrass_Root):
- case METATILE_ID(General, LongGrass):
- case METATILE_ID(General, TallGrass):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass));
+ case METATILE_Fortree_LongGrass_Root:
+ case METATILE_General_LongGrass:
+ case METATILE_General_TallGrass:
+ MapGridSetMetatileIdAt(x, y, METATILE_General_Grass);
break;
- case METATILE_ID(General, TallGrass_TreeLeft):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeLeft));
+ case METATILE_General_TallGrass_TreeLeft:
+ MapGridSetMetatileIdAt(x, y, METATILE_General_Grass_TreeLeft);
break;
- case METATILE_ID(General, TallGrass_TreeRight):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeRight));
+ case METATILE_General_TallGrass_TreeRight:
+ MapGridSetMetatileIdAt(x, y, METATILE_General_Grass_TreeRight);
break;
- case METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
+ case METATILE_Fortree_SecretBase_LongGrass_BottomLeft:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fortree_SecretBase_LongGrass_TopLeft);
break;
- case METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
+ case METATILE_Fortree_SecretBase_LongGrass_BottomMid:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fortree_SecretBase_LongGrass_TopMid);
break;
- case METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
+ case METATILE_Fortree_SecretBase_LongGrass_BottomRight:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fortree_SecretBase_LongGrass_TopRight);
break;
- case METATILE_ID(Lavaridge, NormalGrass):
- case METATILE_ID(Lavaridge, AshGrass):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Lavaridge, LavaField));
+ case METATILE_Lavaridge_NormalGrass:
+ case METATILE_Lavaridge_AshGrass:
+ MapGridSetMetatileIdAt(x, y, METATILE_Lavaridge_LavaField);
break;
- case METATILE_ID(Fallarbor, NormalGrass):
- case METATILE_ID(Fallarbor, AshGrass):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(Fallarbor, AshField));
+ case METATILE_Fallarbor_NormalGrass:
+ case METATILE_Fallarbor_AshGrass:
+ MapGridSetMetatileIdAt(x, y, METATILE_Fallarbor_AshField);
break;
- case METATILE_ID(General, TallGrass_TreeUp):
- MapGridSetMetatileIdAt(x, y, METATILE_ID(General, Grass_TreeUp));
+ case METATILE_General_TallGrass_TreeUp:
+ MapGridSetMetatileIdAt(x, y, METATILE_General_Grass_TreeUp);
break;
}
}
@@ -402,13 +402,13 @@ static u8 GetLongGrassCaseAt(s16 x, s16 y)
{
u16 metatileId = MapGridGetMetatileIdAt(x, y);
- if (metatileId == METATILE_ID(General, Grass))
+ if (metatileId == METATILE_General_Grass)
return LONG_GRASS_FIELD;
- else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft))
+ else if (metatileId == METATILE_Fortree_SecretBase_LongGrass_TopLeft)
return LONG_GRASS_BASE_LEFT;
- else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopMid))
+ else if (metatileId == METATILE_Fortree_SecretBase_LongGrass_TopMid)
return LONG_GRASS_BASE_CENTER;
- else if (metatileId == METATILE_ID(Fortree, SecretBase_LongGrass_TopRight))
+ else if (metatileId == METATILE_Fortree_SecretBase_LongGrass_TopRight)
return LONG_GRASS_BASE_RIGHT;
else
return LONG_GRASS_NONE;
@@ -422,34 +422,34 @@ static void SetCutGrassMetatiles(s16 x, s16 y)
for (i = 0; i < sCutSquareSide; i++)
{
s16 currentX = x + i;
- if (MapGridGetMetatileIdAt(currentX, y) == METATILE_ID(General, LongGrass))
+ if (MapGridGetMetatileIdAt(currentX, y) == METATILE_General_LongGrass)
{
switch (GetLongGrassCaseAt(currentX, y + 1))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, LongGrass_Root));
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_Fortree_LongGrass_Root);
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_Fortree_SecretBase_LongGrass_BottomLeft);
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_Fortree_SecretBase_LongGrass_BottomMid);
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(currentX, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
+ MapGridSetMetatileIdAt(currentX, y + 1, METATILE_Fortree_SecretBase_LongGrass_BottomRight);
break;
}
}
- if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_ID(General, Grass))
+ if (MapGridGetMetatileIdAt(currentX, lowerY) == METATILE_General_Grass)
{
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, LongGrass_Root))
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(General, Grass));
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft))
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid))
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
- if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight))
- MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_Fortree_LongGrass_Root)
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_General_Grass);
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_Fortree_SecretBase_LongGrass_BottomLeft)
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_Fortree_SecretBase_LongGrass_TopLeft);
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_Fortree_SecretBase_LongGrass_BottomMid)
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_Fortree_SecretBase_LongGrass_TopMid);
+ if (MapGridGetMetatileIdAt(currentX, lowerY + 1) == METATILE_Fortree_SecretBase_LongGrass_BottomRight)
+ MapGridSetMetatileIdAt(currentX, lowerY + 1, METATILE_Fortree_SecretBase_LongGrass_TopRight);
}
}
@@ -486,62 +486,62 @@ static void HandleLongGrassOnHyper(u8 caseId, s16 x, s16 y)
if (arr[0] == TRUE)
{
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, LongGrass_Root))
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(General, Grass));
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft))
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid))
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight))
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_Fortree_LongGrass_Root)
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_General_Grass);
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_Fortree_SecretBase_LongGrass_BottomLeft)
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_Fortree_SecretBase_LongGrass_TopLeft);
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_Fortree_SecretBase_LongGrass_BottomMid)
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_Fortree_SecretBase_LongGrass_TopMid);
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_Fortree_SecretBase_LongGrass_BottomRight)
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_Fortree_SecretBase_LongGrass_TopRight);
}
if (arr[1] == TRUE)
{
- if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_ID(General, LongGrass))
+ if (MapGridGetMetatileIdAt(newX, y + 2) == METATILE_General_LongGrass)
{
switch (GetLongGrassCaseAt(newX, y + 3))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, LongGrass_Root));
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_Fortree_LongGrass_Root);
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_Fortree_SecretBase_LongGrass_BottomLeft);
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_Fortree_SecretBase_LongGrass_BottomMid);
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(newX, y + 3, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
+ MapGridSetMetatileIdAt(newX, y + 3, METATILE_Fortree_SecretBase_LongGrass_BottomRight);
break;
}
}
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, LongGrass_Root))
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(General, Grass));
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft))
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid))
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
- if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight))
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_Fortree_LongGrass_Root)
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_General_Grass);
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_Fortree_SecretBase_LongGrass_BottomLeft)
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_Fortree_SecretBase_LongGrass_TopLeft);
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_Fortree_SecretBase_LongGrass_BottomMid)
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_Fortree_SecretBase_LongGrass_TopMid);
+ if (MapGridGetMetatileIdAt(newX, y + 4) == METATILE_Fortree_SecretBase_LongGrass_BottomRight)
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_Fortree_SecretBase_LongGrass_TopRight);
}
if (arr[2] == TRUE)
{
- if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_ID(General, LongGrass))
+ if (MapGridGetMetatileIdAt(newX, y + 3) == METATILE_General_LongGrass)
{
switch (GetLongGrassCaseAt(newX, y + 4))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, LongGrass_Root));
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_Fortree_LongGrass_Root);
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_Fortree_SecretBase_LongGrass_BottomLeft);
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_Fortree_SecretBase_LongGrass_BottomMid);
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(newX, y + 4, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
+ MapGridSetMetatileIdAt(newX, y + 4, METATILE_Fortree_SecretBase_LongGrass_BottomRight);
break;
}
}
@@ -595,16 +595,16 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y)
switch (GetLongGrassCaseAt(x, y + 1))
{
case LONG_GRASS_FIELD:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, LongGrass_Root));
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_Fortree_LongGrass_Root);
break;
case LONG_GRASS_BASE_LEFT:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft));
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_Fortree_SecretBase_LongGrass_BottomLeft);
break;
case LONG_GRASS_BASE_CENTER:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid));
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_Fortree_SecretBase_LongGrass_BottomMid);
break;
case LONG_GRASS_BASE_RIGHT:
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight));
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_Fortree_SecretBase_LongGrass_BottomRight);
break;
}
}
@@ -612,7 +612,7 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y)
void FixLongGrassMetatilesWindowBottom(s16 x, s16 y)
{
- if (MapGridGetMetatileIdAt(x, y) == METATILE_ID(General, Grass))
+ if (MapGridGetMetatileIdAt(x, y) == METATILE_General_Grass)
{
u8 metatileBehavior = MapGridGetMetatileBehaviorAt(x, y + 1);
if (MetatileBehavior_IsLongGrassSouthEdge(metatileBehavior))
@@ -620,17 +620,17 @@ void FixLongGrassMetatilesWindowBottom(s16 x, s16 y)
s32 metatileId = MapGridGetMetatileIdAt(x, y + 1);
switch (metatileId)
{
- case METATILE_ID(Fortree, LongGrass_Root):
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(General, Grass));
+ case METATILE_Fortree_LongGrass_Root:
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_General_Grass);
break;
- case METATILE_ID(Fortree, SecretBase_LongGrass_BottomLeft):
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopLeft));
+ case METATILE_Fortree_SecretBase_LongGrass_BottomLeft:
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_Fortree_SecretBase_LongGrass_TopLeft);
break;
- case METATILE_ID(Fortree, SecretBase_LongGrass_BottomMid):
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopMid));
+ case METATILE_Fortree_SecretBase_LongGrass_BottomMid:
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_Fortree_SecretBase_LongGrass_TopMid);
break;
- case METATILE_ID(Fortree, SecretBase_LongGrass_BottomRight):
- MapGridSetMetatileIdAt(x, y + 1, METATILE_ID(Fortree, SecretBase_LongGrass_TopRight));
+ case METATILE_Fortree_SecretBase_LongGrass_BottomRight:
+ MapGridSetMetatileIdAt(x, y + 1, METATILE_Fortree_SecretBase_LongGrass_TopRight);
break;
}
}
diff --git a/src/fldeff_dig.c b/src/fldeff_dig.c
index ee5caa0df..c3ab989cd 100644
--- a/src/fldeff_dig.c
+++ b/src/fldeff_dig.c
@@ -10,8 +10,8 @@
#include "constants/field_effects.h"
// static functions
-static void hm2_dig(void);
-static void sub_8135780(void);
+static void FieldCallback_Dig(void);
+static void StartDigFieldEffect(void);
// text
bool8 SetUpFieldMove_Dig(void)
@@ -19,7 +19,7 @@ bool8 SetUpFieldMove_Dig(void)
if (CanUseDigOrEscapeRopeOnCurMap() == TRUE)
{
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
- gPostMenuFieldCallback = hm2_dig;
+ gPostMenuFieldCallback = FieldCallback_Dig;
return TRUE;
}
else
@@ -28,7 +28,7 @@ bool8 SetUpFieldMove_Dig(void)
}
}
-static void hm2_dig(void)
+static void FieldCallback_Dig(void)
{
Overworld_ResetStateAfterDigEscRope();
FieldEffectStart(FLDEFF_USE_DIG);
@@ -37,16 +37,16 @@ static void hm2_dig(void)
bool8 FldEff_UseDig(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
- gTasks[taskId].data[8] = (u32)sub_8135780 >> 16;
- gTasks[taskId].data[9] = (u32)sub_8135780;
+ gTasks[taskId].data[8] = (u32)StartDigFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartDigFieldEffect;
if (!ShouldDoBrailleDigEffect())
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
return FALSE;
}
-static void sub_8135780(void)
+static void StartDigFieldEffect(void)
{
u8 taskId;
diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c
index 10fb78ee2..7a96eaa82 100644
--- a/src/fldeff_escalator.c
+++ b/src/fldeff_escalator.c
@@ -8,161 +8,188 @@
static EWRAM_DATA u8 sEscalatorAnim_TaskId = 0;
-static void sub_80E12E8(u8 taskId, const s16 *list, u16 isImpassableFlag)
-{
- s16 r5 = gTasks[taskId].data[4] - 1;
- s16 r3 = gTasks[taskId].data[5] - 1;
- s16 r4 = gTasks[taskId].data[1];
- s16 y;
- s16 x;
+static void SetEscalatorMetatile(u8 taskId, const s16 *metatileIds, u16 metatileMasks);
+static void Task_DrawEscalator(u8 taskId);
+static void Task_DrawTeleporterHousing(u8 taskId);
+static void Task_DrawTeleporterCable(u8 taskId);
+
+#define ESCALATOR_STAGES 3
+#define LAST_ESCALATOR_STAGE (ESCALATOR_STAGES - 1)
+
+static const u16 sEscalatorMetatiles_1F_0[ESCALATOR_STAGES] = {
+ METATILE_PokemonCenter_Escalator1F_Tile0_Frame2,
+ METATILE_PokemonCenter_Escalator1F_Tile0_Frame1,
+ METATILE_PokemonCenter_Escalator1F_Tile0_Frame0
+};
+
+static const u16 sEscalatorMetatiles_1F_1[ESCALATOR_STAGES] = {
+ METATILE_PokemonCenter_Escalator1F_Tile1_Frame2,
+ METATILE_PokemonCenter_Escalator1F_Tile1_Frame1,
+ METATILE_PokemonCenter_Escalator1F_Tile1_Frame0
+};
+
+static const u16 sEscalatorMetatiles_1F_2[ESCALATOR_STAGES] = {
+ METATILE_PokemonCenter_Escalator1F_Tile2_Frame2,
+ METATILE_PokemonCenter_Escalator1F_Tile2_Frame1,
+ METATILE_PokemonCenter_Escalator1F_Tile2_Frame0
+};
+
+static const u16 sEscalatorMetatiles_1F_3[ESCALATOR_STAGES] = {
+ METATILE_PokemonCenter_Escalator1F_Tile3_Frame2,
+ METATILE_PokemonCenter_Escalator1F_Tile3_Frame1,
+ METATILE_PokemonCenter_Escalator1F_Tile3_Frame0
+};
- if (gTasks[taskId].data[2] == 0)
+static const u16 sEscalatorMetatiles_2F_0[ESCALATOR_STAGES] = {
+ METATILE_PokemonCenter_Escalator2F_Tile0_Frame0,
+ METATILE_PokemonCenter_Escalator2F_Tile0_Frame1,
+ METATILE_PokemonCenter_Escalator2F_Tile0_Frame2
+};
+
+static const u16 sEscalatorMetatiles_2F_1[ESCALATOR_STAGES] = {
+ METATILE_PokemonCenter_Escalator2F_Tile1_Frame0,
+ METATILE_PokemonCenter_Escalator2F_Tile1_Frame1,
+ METATILE_PokemonCenter_Escalator2F_Tile1_Frame2
+};
+
+static const u16 sEscalatorMetatiles_2F_2[ESCALATOR_STAGES] = {
+ METATILE_PokemonCenter_Escalator2F_Tile2_Frame0,
+ METATILE_PokemonCenter_Escalator2F_Tile2_Frame1,
+ METATILE_PokemonCenter_Escalator2F_Tile2_Frame2
+};
+
+#define tState data[0]
+#define tTransitionStage data[1]
+#define tGoingUp data[2]
+#define tDrawingEscalator data[3]
+#define tPlayerX data[4]
+#define tPlayerY data[5]
+
+static void SetEscalatorMetatile(u8 taskId, const s16 *metatileIds, u16 metatileMasks)
+{
+ s16 x = gTasks[taskId].tPlayerX - 1;
+ s16 y = gTasks[taskId].tPlayerY - 1;
+ s16 transitionStage = gTasks[taskId].tTransitionStage;
+ s16 i;
+ s16 j;
+
+ // Check all the escalator sections and only progress the selected one to the next stage
+ if (!gTasks[taskId].tGoingUp)
{
- for (y = 0; y < 3; y++)
+ for (i = 0; i < 3; i++)
{
- for (x = 0; x < 3; x++)
+ for (j = 0; j < 3; j++)
{
- s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+ s16 metatileId = MapGridGetMetatileIdAt(x + j, y + i);
- if (list[r4] == metatileId)
+ if (metatileIds[transitionStage] == metatileId)
{
- if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[r4 + 1]);
+ if (transitionStage != LAST_ESCALATOR_STAGE)
+ MapGridSetMetatileIdAt(x + j, y + i, metatileMasks | metatileIds[transitionStage + 1]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[0]);
+ MapGridSetMetatileIdAt(x + j, y + i, metatileMasks | metatileIds[0]);
}
}
}
}
else
{
- for (y = 0; y < 3; y++)
+ for (i = 0; i < 3; i++)
{
- for (x = 0; x < 3; x++)
+ for (j = 0; j < 3; j++)
{
- s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+ s16 metatileId = MapGridGetMetatileIdAt(x + j, y + i);
- if (list[2 - r4] == metatileId)
+ if (metatileIds[LAST_ESCALATOR_STAGE - transitionStage] == metatileId)
{
- if (r4 != 2)
- MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[1 - r4]);
+ if (transitionStage != LAST_ESCALATOR_STAGE)
+ MapGridSetMetatileIdAt(x + j, y + i, metatileMasks | metatileIds[1 - transitionStage]);
else
- MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[2]);
+ MapGridSetMetatileIdAt(x + j, y + i, metatileMasks | metatileIds[LAST_ESCALATOR_STAGE]);
}
}
}
}
}
-static const u16 sElevatorMetatiles_1F_0[] = {
- METATILE_ID(PokemonCenter, Elevator1F_Tile0_Frame2),
- METATILE_ID(PokemonCenter, Elevator1F_Tile0_Frame1),
- METATILE_ID(PokemonCenter, Elevator1F_Tile0_Frame0)
-};
-
-static const u16 sElevatorMetatiles_1F_1[] = {
- METATILE_ID(PokemonCenter, Elevator1F_Tile1_Frame2),
- METATILE_ID(PokemonCenter, Elevator1F_Tile1_Frame1),
- METATILE_ID(PokemonCenter, Elevator1F_Tile1_Frame0)
-};
-
-static const u16 sElevatorMetatiles_1F_2[] = {
- METATILE_ID(PokemonCenter, Elevator1F_Tile2_Frame2),
- METATILE_ID(PokemonCenter, Elevator1F_Tile2_Frame1),
- METATILE_ID(PokemonCenter, Elevator1F_Tile2_Frame0)
-};
-
-static const u16 sElevatorMetatiles_1F_3[] = {
- METATILE_ID(PokemonCenter, Elevator1F_Tile3_Frame2),
- METATILE_ID(PokemonCenter, Elevator1F_Tile3_Frame1),
- METATILE_ID(PokemonCenter, Elevator1F_Tile3_Frame0)
-};
-
-static const u16 sElevatorMetatiles_2F_0[] = {
- METATILE_ID(PokemonCenter, Elevator2F_Tile0_Frame0),
- METATILE_ID(PokemonCenter, Elevator2F_Tile0_Frame1),
- METATILE_ID(PokemonCenter, Elevator2F_Tile0_Frame2)
-};
-
-static const u16 sElevatorMetatiles_2F_1[] = {
- METATILE_ID(PokemonCenter, Elevator2F_Tile1_Frame0),
- METATILE_ID(PokemonCenter, Elevator2F_Tile1_Frame1),
- METATILE_ID(PokemonCenter, Elevator2F_Tile1_Frame2)
-};
-
-static const u16 sElevatorMetatiles_2F_2[] = {
- METATILE_ID(PokemonCenter, Elevator2F_Tile2_Frame0),
- METATILE_ID(PokemonCenter, Elevator2F_Tile2_Frame1),
- METATILE_ID(PokemonCenter, Elevator2F_Tile2_Frame2)
-};
-
-static void sub_80E1444(u8 taskId)
+static void Task_DrawEscalator(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- data[3] = 1;
+ tDrawingEscalator = TRUE;
- switch (data[0])
+ // Set tile for each section of the escalator in sequence for current transition stage
+ switch (tState)
{
case 0:
- sub_80E12E8(taskId, sElevatorMetatiles_1F_0, 0);
+ SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_0, 0);
break;
case 1:
- sub_80E12E8(taskId, sElevatorMetatiles_1F_1, 0);
+ SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_1, 0);
break;
case 2:
- sub_80E12E8(taskId, sElevatorMetatiles_1F_2, METATILE_COLLISION_MASK);
+ SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_2, METATILE_COLLISION_MASK);
break;
case 3:
- sub_80E12E8(taskId, sElevatorMetatiles_1F_3, 0);
+ SetEscalatorMetatile(taskId, sEscalatorMetatiles_1F_3, 0);
break;
case 4:
- sub_80E12E8(taskId, sElevatorMetatiles_2F_0, METATILE_COLLISION_MASK);
+ SetEscalatorMetatile(taskId, sEscalatorMetatiles_2F_0, METATILE_COLLISION_MASK);
break;
case 5:
- sub_80E12E8(taskId, sElevatorMetatiles_2F_1, 0);
+ SetEscalatorMetatile(taskId, sEscalatorMetatiles_2F_1, 0);
break;
case 6:
- sub_80E12E8(taskId, sElevatorMetatiles_2F_2, 0);
+ SetEscalatorMetatile(taskId, sEscalatorMetatiles_2F_2, 0);
break;
}
- data[0] = (data[0] + 1) & 7;
- if (!data[0])
+ tState = (tState + 1) & 7;
+
+ // If all metatiles of the escalator have been set, draw map and progress to next stage
+ if (tState == 0)
{
DrawWholeMapView();
- data[1] = (data[1] + 1) % 3;
- data[3] = 0;
+ tTransitionStage = (tTransitionStage + 1) % ESCALATOR_STAGES;
+ tDrawingEscalator = FALSE;
}
}
-static u8 sub_80E150C(u16 var)
+static u8 CreateEscalatorTask(bool16 goingUp)
{
- u8 taskId = CreateTask(sub_80E1444, 0);
+ u8 taskId = CreateTask(Task_DrawEscalator, 0);
s16 *data = gTasks[taskId].data;
- PlayerGetDestCoords(&data[4], &data[5]);
- data[0] = 0;
- data[1] = 0;
- data[2] = var;
- sub_80E1444(taskId);
+ PlayerGetDestCoords(&tPlayerX, &tPlayerY);
+ tState = 0;
+ tTransitionStage = 0;
+ tGoingUp = goingUp;
+ Task_DrawEscalator(taskId);
return taskId;
}
-void sub_80E1558(u8 var)
+void StartEscalator(bool8 goingUp)
{
- sEscalatorAnim_TaskId = sub_80E150C(var);
+ sEscalatorAnim_TaskId = CreateEscalatorTask(goingUp);
}
-void sub_80E1570(void)
+void StopEscalator(void)
{
DestroyTask(sEscalatorAnim_TaskId);
}
-bool8 sub_80E1584(void)
+bool8 IsEscalatorMoving(void)
{
- if (gTasks[sEscalatorAnim_TaskId].data[3] == 0 && gTasks[sEscalatorAnim_TaskId].data[1] == 2)
+ if (gTasks[sEscalatorAnim_TaskId].tDrawingEscalator == FALSE
+ && gTasks[sEscalatorAnim_TaskId].tTransitionStage == LAST_ESCALATOR_STAGE)
return FALSE;
else
return TRUE;
}
+
+#undef tState
+#undef tTransitionStage
+#undef tGoingUp
+#undef tDrawingEscalator
+#undef tPlayerX
+#undef tPlayerY
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index 3cb91d4b1..2d25928b8 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -96,7 +96,7 @@ bool8 SetUpFieldMove_Flash(void)
static void FieldCallback_Flash(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gFieldEffectArguments[0] = GetCursorSelectionMonId();
gTasks[taskId].data[8] = (uintptr_t)FldEff_UseFlash >> 16;
gTasks[taskId].data[9] = (uintptr_t)FldEff_UseFlash;
@@ -106,7 +106,7 @@ static void FldEff_UseFlash(void)
{
PlaySE(SE_W115);
FlagSet(FLAG_SYS_USE_FLASH);
- ScriptContext1_SetupScript(EventScript_FldEffFlash);
+ ScriptContext1_SetupScript(EventScript_UseFlash);
}
static void CB2_ChangeMapMain(void)
diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c
index 410af9fdd..6db44d752 100644
--- a/src/fldeff_misc.c
+++ b/src/fldeff_misc.c
@@ -27,68 +27,54 @@
EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0};
-static void sub_80F9C90(u8);
-static void sub_80F9DFC(u8);
+static void Task_ComputerScreenOpenEffect(u8);
+static void Task_ComputerScreenCloseEffect(u8);
+static void CreateComputerScreenEffectTask(TaskFunc, u16, u16, u8);
static void Task_SecretBasePCTurnOn(u8);
static void Task_PopSecretBaseBalloon(u8);
static void DoBalloonSoundEffect(s16);
-static void Task_WateringBerryTreeAnim_1(u8);
-static void Task_WateringBerryTreeAnim_2(u8);
-static void Task_WateringBerryTreeAnim_3(u8);
-
-static void sub_80F9C44(TaskFunc, u16, u16, u8);
+static void Task_WateringBerryTreeAnim_Start(u8);
+static void Task_WateringBerryTreeAnim_Continue(u8);
+static void Task_WateringBerryTreeAnim_End(u8);
static void FieldCallback_SecretBaseCave(void);
-static void CaveEntranceSpriteCallback1(struct Sprite *);
-static void CaveEntranceSpriteCallback2(struct Sprite *);
-static void CaveEntranceSpriteCallbackEnd(struct Sprite *);
+static void SpriteCB_CaveEntranceInit(struct Sprite *);
+static void SpriteCB_CaveEntranceOpen(struct Sprite *);
+static void SpriteCB_CaveEntranceEnd(struct Sprite *);
static void StartSecretBaseCaveFieldEffect(void);
static void FieldCallback_SecretBaseTree(void);
-static void TreeEntranceSpriteCallback1(struct Sprite *);
-static void TreeEntranceSpriteCallback2(struct Sprite *);
-static void TreeEntranceSpriteCallbackEnd(struct Sprite *);
+static void SpriteCB_TreeEntranceInit(struct Sprite *);
+static void SpriteCB_TreeEntranceOpen(struct Sprite *);
+static void SpriteCB_TreeEntranceEnd(struct Sprite *);
static void StartSecretBaseTreeFieldEffect(void);
static void FieldCallback_SecretBaseShrub(void);
-static void ShrubEntranceSpriteCallback1(struct Sprite *);
-static void ShrubEntranceSpriteCallback2(struct Sprite *);
-static void ShrubEntranceSpriteCallbackEnd(struct Sprite *);
+static void SpriteCB_ShrubEntranceInit(struct Sprite *);
+static void SpriteCB_ShrubEntranceOpen(struct Sprite *);
+static void SpriteCB_ShrubEntranceEnd(struct Sprite *);
static void StartSecretBaseShrubFieldEffect(void);
-static void SpriteCB_SandPillar_0(struct Sprite *);
-static void SpriteCB_SandPillar_1(struct Sprite *);
-static void SpriteCB_SandPillar_2(struct Sprite *);
-
-static const u8 gSpriteImage_858D978[] = INCBIN_U8("graphics/unknown/858E588/0.4bpp");
-static const u8 gSpriteImage_858D9F8[] = INCBIN_U8("graphics/unknown/858E588/1.4bpp");
-static const u8 gSpriteImage_858DA78[] = INCBIN_U8("graphics/unknown/858E588/2.4bpp");
-static const u8 gSpriteImage_858DAF8[] = INCBIN_U8("graphics/unknown/858E588/3.4bpp");
-static const u8 gSpriteImage_858DB78[] = INCBIN_U8("graphics/unknown/858E588/4.4bpp");
-
-static const u8 gUnusedEmptySpace_858DBF8[32] = {0};
-
-static const u16 gFieldEffectObjectPalette7[] = INCBIN_U16("graphics/field_effects/palettes/07.gbapal");
-static const u8 gSpriteImage_858DC38[] = INCBIN_U8("graphics/unknown/858E5D8/0.4bpp");
-static const u8 gSpriteImage_858DCB8[] = INCBIN_U8("graphics/unknown/858E5D8/1.4bpp");
-static const u8 gSpriteImage_858DD38[] = INCBIN_U8("graphics/unknown/858E5D8/2.4bpp");
-static const u8 gSpriteImage_858DDB8[] = INCBIN_U8("graphics/unknown/858E5D8/3.4bpp");
-static const u8 gSpriteImage_858DE38[] = INCBIN_U8("graphics/unknown/858E5D8/4.4bpp");
-static const u8 gSpriteImage_858DEB8[] = INCBIN_U8("graphics/unknown/858E5B0/0.4bpp");
-static const u8 gSpriteImage_858DF38[] = INCBIN_U8("graphics/unknown/858E5B0/1.4bpp");
-static const u8 gSpriteImage_858DFB8[] = INCBIN_U8("graphics/unknown/858E5B0/2.4bpp");
-static const u8 gSpriteImage_858E038[] = INCBIN_U8("graphics/unknown/858E5B0/3.4bpp");
-static const u8 gSpriteImage_858E0B8[] = INCBIN_U8("graphics/unknown/858E5B0/4.4bpp");
-static const u8 gSpriteImage_858E138[] = INCBIN_U8("graphics/unknown/858E5B0/5.4bpp");
-static const u16 gFieldEffectObjectPalette8[] = INCBIN_U16("graphics/field_effects/palettes/08.gbapal");
-static const u8 gSpriteImage_858E1D8[] = INCBIN_U8("graphics/unknown/858E674/0.4bpp");
-static const u8 gSpriteImage_858E2D8[] = INCBIN_U8("graphics/unknown/858E674/1.4bpp");
-static const u8 gSpriteImage_858E3D8[] = INCBIN_U8("graphics/unknown/858E674/2.4bpp");
-
-static const struct OamData gOamData_858E4D8 =
+static void SpriteCB_SandPillar_BreakTop(struct Sprite *);
+static void SpriteCB_SandPillar_BreakBase(struct Sprite *);
+static void SpriteCB_SandPillar_End(struct Sprite *);
+
+static const u8 sSecretPowerCave_Gfx[] = INCBIN_U8("graphics/field_effects/pics/secret_power_cave.4bpp");
+static const u8 sFiller[32] = {0};
+static const u16 sSecretPowerCave_Pal[] = INCBIN_U16("graphics/field_effects/palettes/secret_power_cave.gbapal");
+static const u8 sSecretPowerShrub_Gfx[] = INCBIN_U8("graphics/field_effects/pics/secret_power_shrub.4bpp");
+static const u8 sSecretPowerTree_Gfx[] = INCBIN_U8("graphics/field_effects/pics/secret_power_tree.4bpp");
+static const u16 sSecretPowerPlant_Pal[] = INCBIN_U16("graphics/field_effects/palettes/secret_power_plant.gbapal");
+
+// TODO: These should also be combined into a single image, not matching for some reason
+static const u8 sSandPillar0_Gfx[] = INCBIN_U8("graphics/field_effects/pics/sand_pillar/0.4bpp");
+static const u8 sSandPillar1_Gfx[] = INCBIN_U8("graphics/field_effects/pics/sand_pillar/1.4bpp");
+static const u8 sSandPillar2_Gfx[] = INCBIN_U8("graphics/field_effects/pics/sand_pillar/2.4bpp");
+
+static const struct OamData sOam_SecretPower =
{
.y = 0,
.x = 0,
@@ -100,7 +86,7 @@ static const struct OamData gOamData_858E4D8 =
.priority = 2,
};
-static const union AnimCmd gSpriteAnim_858E4E0[] =
+static const union AnimCmd sAnim_SecretPowerCave[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -110,7 +96,7 @@ static const union AnimCmd gSpriteAnim_858E4E0[] =
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_858E4F8[] =
+static const union AnimCmd sAnim_VineDropLeft[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -120,7 +106,7 @@ static const union AnimCmd gSpriteAnim_858E4F8[] =
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_858E510[] =
+static const union AnimCmd sAnim_VineRiseLeft[] =
{
ANIMCMD_FRAME(4, 8),
ANIMCMD_FRAME(3, 8),
@@ -130,7 +116,7 @@ static const union AnimCmd gSpriteAnim_858E510[] =
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_858E528[] =
+static const union AnimCmd sAnim_VineDropRight[] =
{
ANIMCMD_FRAME(0, 8, .hFlip = TRUE),
ANIMCMD_FRAME(1, 8, .hFlip = TRUE),
@@ -140,7 +126,7 @@ static const union AnimCmd gSpriteAnim_858E528[] =
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_858E540[] =
+static const union AnimCmd sAnim_VineRiseRight[] =
{
ANIMCMD_FRAME(4, 8, .hFlip = TRUE),
ANIMCMD_FRAME(3, 8, .hFlip = TRUE),
@@ -150,7 +136,7 @@ static const union AnimCmd gSpriteAnim_858E540[] =
ANIMCMD_END,
};
-static const union AnimCmd gSpriteAnim_858E558[] =
+static const union AnimCmd sAnim_SecretPowerShrub[] =
{
ANIMCMD_FRAME(0, 8),
ANIMCMD_FRAME(1, 8),
@@ -160,88 +146,89 @@ static const union AnimCmd gSpriteAnim_858E558[] =
ANIMCMD_END,
};
-static const union AnimCmd *const gSpriteAnimTable_858E570[] =
+static const union AnimCmd *const sAnimTable_SecretPowerCave[] =
{
- gSpriteAnim_858E4E0,
+ sAnim_SecretPowerCave,
};
-static const union AnimCmd *const gSpriteAnimTable_858E574[] =
+static const union AnimCmd *const sAnimTable_SecretPowerTree[] =
{
- gSpriteAnim_858E4F8,
- gSpriteAnim_858E510,
- gSpriteAnim_858E528,
- gSpriteAnim_858E540,
+ sAnim_VineDropLeft,
+ sAnim_VineRiseLeft,
+ sAnim_VineDropRight,
+ sAnim_VineRiseRight,
};
-static const union AnimCmd *const gSpriteAnimTable_858E584[] =
+static const union AnimCmd *const sAnimTable_SecretPowerShrub[] =
{
- gSpriteAnim_858E558,
+ sAnim_SecretPowerShrub,
};
-static const struct SpriteFrameImage gUnknown_858E588[] =
+static const struct SpriteFrameImage sPicTable_SecretPowerCave[] =
{
- {gSpriteImage_858D978, 0x80},
- {gSpriteImage_858D9F8, 0x80},
- {gSpriteImage_858DA78, 0x80},
- {gSpriteImage_858DAF8, 0x80},
- {gSpriteImage_858DB78, 0x80},
+ overworld_frame(sSecretPowerCave_Gfx, 2, 2, 0),
+ overworld_frame(sSecretPowerCave_Gfx, 2, 2, 1),
+ overworld_frame(sSecretPowerCave_Gfx, 2, 2, 2),
+ overworld_frame(sSecretPowerCave_Gfx, 2, 2, 3),
+ overworld_frame(sSecretPowerCave_Gfx, 2, 2, 4),
};
-static const struct SpriteFrameImage gUnknown_858E5B0[] =
+static const struct SpriteFrameImage sPicTable_SecretPowerTree[] =
{
- {gSpriteImage_858DEB8, 0x80},
- {gSpriteImage_858DF38, 0x80},
- {gSpriteImage_858DFB8, 0x80},
- {gSpriteImage_858E038, 0x80},
- {gSpriteImage_858E0B8, 0x80},
+ overworld_frame(sSecretPowerTree_Gfx, 2, 2, 0),
+ overworld_frame(sSecretPowerTree_Gfx, 2, 2, 1),
+ overworld_frame(sSecretPowerTree_Gfx, 2, 2, 2),
+ overworld_frame(sSecretPowerTree_Gfx, 2, 2, 3),
+ overworld_frame(sSecretPowerTree_Gfx, 2, 2, 4),
+ // 6th frame exists but isnt accessed, the tree vine metatile is used instead
};
-static const struct SpriteFrameImage gUnknown_858E5D8[] =
+static const struct SpriteFrameImage sPicTable_SecretPowerShrub[] =
{
- {gSpriteImage_858DC38, 0x80},
- {gSpriteImage_858DCB8, 0x80},
- {gSpriteImage_858DD38, 0x80},
- {gSpriteImage_858DDB8, 0x80},
- {gSpriteImage_858DE38, 0x80},
+ overworld_frame(sSecretPowerShrub_Gfx, 2, 2, 0),
+ overworld_frame(sSecretPowerShrub_Gfx, 2, 2, 1),
+ overworld_frame(sSecretPowerShrub_Gfx, 2, 2, 2),
+ overworld_frame(sSecretPowerShrub_Gfx, 2, 2, 3),
+ overworld_frame(sSecretPowerShrub_Gfx, 2, 2, 4),
};
-static const struct SpriteTemplate gUnknown_0858E600 =
+static const struct SpriteTemplate sSpriteTemplate_SecretPowerCave =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x1003,
- .oam = &gOamData_858E4D8,
- .anims = gSpriteAnimTable_858E570,
- .images = gUnknown_858E588,
+ .paletteTag = FLDEFF_PAL_TAG_SECRET_POWER_TREE,
+ .oam = &sOam_SecretPower,
+ .anims = sAnimTable_SecretPowerCave,
+ .images = sPicTable_SecretPowerCave,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = CaveEntranceSpriteCallback1,
+ .callback = SpriteCB_CaveEntranceInit,
};
-static const struct SpriteTemplate gUnknown_0858E618 =
+static const struct SpriteTemplate sSpriteTemplate_SecretPowerTree =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x1008,
- .oam = &gOamData_858E4D8,
- .anims = gSpriteAnimTable_858E574,
- .images = gUnknown_858E5B0,
+ .paletteTag = FLDEFF_PAL_TAG_SECRET_POWER_PLANT,
+ .oam = &sOam_SecretPower,
+ .anims = sAnimTable_SecretPowerTree,
+ .images = sPicTable_SecretPowerTree,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = TreeEntranceSpriteCallback1,
+ .callback = SpriteCB_TreeEntranceInit,
};
-static const struct SpriteTemplate gUnknown_0858E630 =
+static const struct SpriteTemplate sSpriteTemplate_SecretPowerShrub =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x1008,
- .oam = &gOamData_858E4D8,
- .anims = gSpriteAnimTable_858E584,
- .images = gUnknown_858E5D8,
+ .paletteTag = FLDEFF_PAL_TAG_SECRET_POWER_PLANT,
+ .oam = &sOam_SecretPower,
+ .anims = sAnimTable_SecretPowerShrub,
+ .images = sPicTable_SecretPowerShrub,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = ShrubEntranceSpriteCallback1,
+ .callback = SpriteCB_ShrubEntranceInit,
};
-const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003};
-const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008};
+const struct SpritePalette gSpritePalette_SecretPower_Cave = {sSecretPowerCave_Pal, FLDEFF_PAL_TAG_SECRET_POWER_TREE};
+const struct SpritePalette gSpritePalette_SecretPower_Plant = {sSecretPowerPlant_Pal, FLDEFF_PAL_TAG_SECRET_POWER_PLANT};
-static const struct OamData gOamData_858E658 =
+static const struct OamData sOam_SandPillar =
{
.x = 0,
.y = 0,
@@ -253,7 +240,7 @@ static const struct OamData gOamData_858E658 =
.priority = 2,
};
-static const union AnimCmd gSpriteAnim_858E660[] =
+static const union AnimCmd sAnim_SandPillar[] =
{
ANIMCMD_FRAME(0, 6),
ANIMCMD_FRAME(1, 6),
@@ -261,47 +248,44 @@ static const union AnimCmd gSpriteAnim_858E660[] =
ANIMCMD_END,
};
-static const union AnimCmd *const gSpriteAnimTable_858E670[] =
+static const union AnimCmd *const sAnimTable_SandPillar[] =
{
- gSpriteAnim_858E660,
+ sAnim_SandPillar,
};
-static const struct SpriteFrameImage gUnknown_0858E674[] =
+static const struct SpriteFrameImage sPicTable_SandPillar[] =
{
- {gSpriteImage_858E1D8, 0x100},
- {gSpriteImage_858E2D8, 0x100},
- {gSpriteImage_858E3D8, 0x100},
+ {sSandPillar0_Gfx, sizeof(sSandPillar0_Gfx)},
+ {sSandPillar1_Gfx, sizeof(sSandPillar1_Gfx)},
+ {sSandPillar2_Gfx, sizeof(sSandPillar2_Gfx)},
};
-static const struct SpriteTemplate gUnknown_0858E68C =
+static const struct SpriteTemplate sSpriteTemplate_SandPillar =
{
.tileTag = 0xFFFF,
- .paletteTag = 0x100E,
- .oam = &gOamData_858E658,
- .anims = gSpriteAnimTable_858E670,
- .images = gUnknown_0858E674,
+ .paletteTag = FLDEFF_PAL_TAG_SAND_PILLAR,
+ .oam = &sOam_SandPillar,
+ .anims = sAnimTable_SandPillar,
+ .images = sPicTable_SandPillar,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_SandPillar_0,
+ .callback = SpriteCB_SandPillar_BreakTop,
};
-// This uses one of the secret base palettes, so there is no "graphics/field_effects/palettes/09.pal" file.
-const struct SpritePalette gFieldEffectObjectPaletteInfo9 = {gTilesetPalettes_SecretBase[5], 0x100E};
+const struct SpritePalette gSpritePalette_SandPillar = {gTilesetPalettes_SecretBase[5], FLDEFF_PAL_TAG_SAND_PILLAR};
-static const u8 gSpriteImage_858E6AC[] = INCBIN_U8("graphics/unknown/858E84C/0.4bpp");
-static const u8 gSpriteImage_858E72C[] = INCBIN_U8("graphics/unknown/858E84C/1.4bpp");
-static const u8 gSpriteImage_858E7AC[] = INCBIN_U8("graphics/unknown/858E84C/2.4bpp");
-static const u16 gUnknown_0858E82C[] = INCBIN_U16("graphics/unknown/unknown_58E82C.gbapal");
+static const u8 sRecordMixLights_Gfx[] = INCBIN_U8("graphics/field_effects/pics/record_mix_lights.4bpp");
+static const u16 sRecordMixLights_Pal[] = INCBIN_U16("graphics/field_effects/palettes/record_mix_lights.gbapal");
-static const struct SpriteFrameImage gUnknown_0858E84C[] =
+static const struct SpriteFrameImage sPicTable_RecordMixLights[] =
{
- {gSpriteImage_858E6AC, sizeof(gSpriteImage_858E6AC)},
- {gSpriteImage_858E72C, sizeof(gSpriteImage_858E72C)},
- {gSpriteImage_858E7AC, sizeof(gSpriteImage_858E7AC)},
+ overworld_frame(sRecordMixLights_Gfx, 4, 1, 0),
+ overworld_frame(sRecordMixLights_Gfx, 4, 1, 1),
+ overworld_frame(sRecordMixLights_Gfx, 4, 1, 2),
};
-static const struct SpritePalette gUnknown_0858E864 = {gUnknown_0858E82C, 0x1000};
+static const struct SpritePalette sSpritePalette_RecordMixLights = {sRecordMixLights_Pal, 0x1000};
-static const union AnimCmd gSpriteAnim_858E86C[] =
+static const union AnimCmd sAnim_RecordMixLights[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
@@ -309,173 +293,182 @@ static const union AnimCmd gSpriteAnim_858E86C[] =
ANIMCMD_JUMP(0),
};
-static const union AnimCmd *const gSpriteAnimTable_858E87C[] =
+static const union AnimCmd *const sAnimTable_RecordMixLights[] =
{
- gSpriteAnim_858E86C,
+ sAnim_RecordMixLights,
};
-static const struct SpriteTemplate gUnknown_0858E880 =
+static const struct SpriteTemplate sSpriteTemplate_RecordMixLights =
{
.tileTag = 0xFFFF,
.paletteTag = 0x1000,
.oam = &gObjectEventBaseOam_32x8,
- .anims = gSpriteAnimTable_858E87C,
- .images = gUnknown_0858E84C,
+ .anims = sAnimTable_RecordMixLights,
+ .images = sPicTable_RecordMixLights,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
};
-void sub_80F9BCC(u16 a0, u16 a1, u8 a2)
+// For accessing pokemon storage PC or the Hall of Fame PC
+void ComputerScreenOpenEffect(u16 increment, u16 unused, u8 priority)
{
- sub_80F9C44(sub_80F9C90, a0, a1, a2);
+ CreateComputerScreenEffectTask(Task_ComputerScreenOpenEffect, increment, unused, priority);
}
-void sub_80F9BF4(u16 a0, u16 a1, u8 a2)
+void ComputerScreenCloseEffect(u16 increment, u16 unused, u8 priority)
{
- sub_80F9C44(sub_80F9DFC, a0, a1, a2);
+ CreateComputerScreenEffectTask(Task_ComputerScreenCloseEffect, increment, unused, priority);
}
-bool8 sub_80F9C1C(void)
+bool8 IsComputerScreenOpenEffectActive(void)
{
- return FuncIsActiveTask(sub_80F9C90);
+ return FuncIsActiveTask(Task_ComputerScreenOpenEffect);
}
-bool8 sub_80F9C30(void)
+bool8 IsComputerScreenCloseEffectActive(void)
{
- return FuncIsActiveTask(sub_80F9DFC);
+ return FuncIsActiveTask(Task_ComputerScreenCloseEffect);
}
-static void sub_80F9C44(void (*taskfunc) (u8), u16 a1, u16 a2, u8 a3)
+#define tState data[0]
+#define tHorzIncrement data[1]
+#define tVertIncrement data[2]
+#define tWinLeft data[3]
+#define tWinRight data[4]
+#define tWinTop data[5]
+#define tWinBottom data[6]
+#define tBlendCnt data[7]
+#define tBlendY data[8]
+
+static void CreateComputerScreenEffectTask(void (*taskfunc) (u8), u16 increment, u16 unused, u8 priority)
{
- u8 taskId = CreateTask(taskfunc, a3);
+ u8 taskId = CreateTask(taskfunc, priority);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = a1 == 0 ? 16 : a1;
- gTasks[taskId].data[2] = a1 == 0 ? 20 : a1;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tHorzIncrement = increment == 0 ? 16 : increment;
+ gTasks[taskId].tVertIncrement = increment == 0 ? 20 : increment;
gTasks[taskId].func(taskId);
}
-static void sub_80F9C90(u8 taskId)
+static void Task_ComputerScreenOpenEffect(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
- task->data[3] = 0x78;
- task->data[4] = 0x78;
- task->data[5] = 0x50;
- task->data[6] = 0x51;
+ task->tWinLeft = DISPLAY_WIDTH / 2;
+ task->tWinRight = DISPLAY_WIDTH / 2;
+ task->tWinTop = DISPLAY_HEIGHT / 2;
+ task->tWinBottom = DISPLAY_HEIGHT / 2 + 1;
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
- SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, 0);
break;
case 1:
- task->data[7] = GetGpuReg(REG_OFFSET_BLDCNT);
- task->data[8] = GetGpuReg(REG_OFFSET_BLDY);
+ task->tBlendCnt = GetGpuReg(REG_OFFSET_BLDCNT);
+ task->tBlendY = GetGpuReg(REG_OFFSET_BLDY);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN);
- SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ SetGpuReg(REG_OFFSET_BLDY, 16);
break;
case 2:
- task->data[3] -= task->data[1];
- task->data[4] += task->data[1];
+ task->tWinLeft -= task->tHorzIncrement;
+ task->tWinRight += task->tHorzIncrement;
- if (task->data[3] < 1 || task->data[4] > 0xEF)
+ if (task->tWinLeft < 1 || task->tWinRight > DISPLAY_WIDTH - 1)
{
- task->data[3] = 0;
- task->data[4] = 0xF0;
+ task->tWinLeft = 0;
+ task->tWinRight = DISPLAY_WIDTH;
SetGpuReg(REG_OFFSET_BLDY, 0);
- SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ SetGpuReg(REG_OFFSET_BLDCNT, task->tBlendCnt);
BlendPalettes(0xFFFFFFFF, 0, 0);
gPlttBufferFaded[0] = 0;
}
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
- if (task->data[3] != 0)
+ if (task->tWinLeft != 0)
return;
break;
case 3:
- task->data[5] -= task->data[2];
- task->data[6] += task->data[2];
+ task->tWinTop -= task->tVertIncrement;
+ task->tWinBottom += task->tVertIncrement;
- if (task->data[5] < 1 || task->data[6] > 0x9F)
+ if (task->tWinTop < 1 || task->tWinBottom > DISPLAY_HEIGHT - 1)
{
- task->data[5] = 0;
- task->data[6] = 0xA0;
+ task->tWinTop = 0;
+ task->tWinBottom = DISPLAY_HEIGHT;
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
}
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
- if (task->data[5] != 0)
+ if (task->tWinTop != 0)
return;
break;
default:
- SetGpuReg(REG_OFFSET_BLDCNT, task->data[7]);
+ SetGpuReg(REG_OFFSET_BLDCNT, task->tBlendCnt);
DestroyTask(taskId);
return;
}
- task->data[0]++;
+ task->tState++;
}
-static void sub_80F9DFC(u8 taskId)
+static void Task_ComputerScreenCloseEffect(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- int temp = task->data[0];
-
- switch (temp)
+ switch (task->tState)
{
case 0:
- gPlttBufferFaded[0] = temp;
+ gPlttBufferFaded[0] = 0;
break;
case 1:
- task->data[3] = 0;
- task->data[4] = 0xF0;
- task->data[5] = 0;
- task->data[6] = 0xA0;
+ task->tWinLeft = 0;
+ task->tWinRight = DISPLAY_WIDTH;
+ task->tWinTop = 0;
+ task->tWinBottom = DISPLAY_HEIGHT;
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
- SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, 0);
break;
case 2:
- task->data[5] += task->data[2];
- task->data[6] -= task->data[2];
+ task->tWinTop += task->tVertIncrement;
+ task->tWinBottom -= task->tVertIncrement;
- if (task->data[5] > 0x4F || task->data[6] < 0x52)
+ if (task->tWinTop >= DISPLAY_HEIGHT / 2 || task->tWinBottom <= DISPLAY_HEIGHT / 2 + 1)
{
- task->data[5] = 0x50;
- task->data[6] = 0x51;
+ task->tWinTop = DISPLAY_HEIGHT / 2;
+ task->tWinBottom = DISPLAY_HEIGHT / 2 + 1;
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_ALL | BLDCNT_EFFECT_LIGHTEN);
- SetGpuReg(REG_OFFSET_BLDY, 0x10);
+ SetGpuReg(REG_OFFSET_BLDY, 16);
}
- SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->data[5], task->data[6]));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(task->tWinTop, task->tWinBottom));
- if (task->data[5] != 0x50)
+ if (task->tWinTop != DISPLAY_HEIGHT / 2)
return;
break;
case 3:
- task->data[3] += task->data[1];
- task->data[4] -= task->data[1];
+ task->tWinLeft += task->tHorzIncrement;
+ task->tWinRight -= task->tHorzIncrement;
- if (task->data[3] > 0x77 || task->data[4] < 0x79)
+ if (task->tWinLeft >= DISPLAY_WIDTH / 2 || task->tWinRight <= DISPLAY_WIDTH / 2)
{
- task->data[3] = 0x78;
- task->data[4] = 0x78;
- BlendPalettes(-1, 0x10, 0);
+ task->tWinLeft = DISPLAY_WIDTH / 2;
+ task->tWinRight = DISPLAY_WIDTH / 2;
+ BlendPalettes(-1, 16, 0);
gPlttBufferFaded[0] = 0;
}
- SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->data[3], task->data[4]));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWinLeft, task->tWinRight));
- if (task->data[3] != 0x78)
+ if (task->tWinLeft != DISPLAY_WIDTH / 2)
return;
break;
default:
@@ -485,9 +478,19 @@ static void sub_80F9DFC(u8 taskId)
DestroyTask(taskId);
return;
}
- task->data[0]++;
+ task->tState++;
}
+#undef tState
+#undef tHorzIncrement
+#undef tVertIncrement
+#undef tWinLeft
+#undef tWinRight
+#undef tWinTop
+#undef tWinBottom
+#undef tBlendCnt
+#undef tBlendY
+
static void SetCurrentSecretBase(void)
{
SetCurSecretBaseIdFromPosition(&gPlayerFacingPosition, gMapHeader.events);
@@ -496,7 +499,7 @@ static void SetCurrentSecretBase(void)
static void AdjustSecretPowerSpritePixelOffsets(void)
{
- if (gPlayerAvatar.flags & 0x6)
+ if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
{
switch (gFieldEffectArguments[1])
{
@@ -589,7 +592,7 @@ static void FieldCallback_SecretBaseCave(void)
bool8 FldEff_UseSecretPowerCave(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)StartSecretBaseCaveFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartSecretBaseCaveFieldEffect;
@@ -606,22 +609,22 @@ static void StartSecretBaseCaveFieldEffect(void)
bool8 FldEff_SecretPowerCave(void)
{
AdjustSecretPowerSpritePixelOffsets();
- CreateSprite(&gUnknown_0858E600,
+ CreateSprite(&sSpriteTemplate_SecretPowerCave,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
return FALSE;
}
-static void CaveEntranceSpriteCallback1(struct Sprite *sprite)
+static void SpriteCB_CaveEntranceInit(struct Sprite *sprite)
{
PlaySE(SE_W088);
sprite->data[0] = 0;
- sprite->callback = CaveEntranceSpriteCallback2;
+ sprite->callback = SpriteCB_CaveEntranceOpen;
}
-static void CaveEntranceSpriteCallback2(struct Sprite *sprite)
+static void SpriteCB_CaveEntranceOpen(struct Sprite *sprite)
{
if (sprite->data[0] < 40)
{
@@ -631,11 +634,11 @@ static void CaveEntranceSpriteCallback2(struct Sprite *sprite)
else
{
sprite->data[0] = 0;
- sprite->callback = CaveEntranceSpriteCallbackEnd;
+ sprite->callback = SpriteCB_CaveEntranceEnd;
}
}
-static void CaveEntranceSpriteCallbackEnd(struct Sprite *sprite)
+static void SpriteCB_CaveEntranceEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_CAVE);
EnableBothScriptContexts();
@@ -649,7 +652,7 @@ static void FieldCallback_SecretBaseTree(void)
bool8 FldEff_UseSecretPowerTree(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)StartSecretBaseTreeFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartSecretBaseTreeFieldEffect;
@@ -675,7 +678,7 @@ bool8 FldEff_SecretPowerTree(void)
AdjustSecretPowerSpritePixelOffsets();
- CreateSprite(&gUnknown_0858E618,
+ CreateSprite(&sSpriteTemplate_SecretPowerTree,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
@@ -686,16 +689,16 @@ bool8 FldEff_SecretPowerTree(void)
return FALSE;
}
-static void TreeEntranceSpriteCallback1(struct Sprite *sprite)
+static void SpriteCB_TreeEntranceInit(struct Sprite *sprite)
{
PlaySE(SE_W010);
sprite->animNum = gFieldEffectArguments[7];
sprite->data[0] = 0;
- sprite->callback = TreeEntranceSpriteCallback2;
+ sprite->callback = SpriteCB_TreeEntranceOpen;
}
-static void TreeEntranceSpriteCallback2(struct Sprite *sprite)
+static void SpriteCB_TreeEntranceOpen(struct Sprite *sprite)
{
sprite->data[0]++;
@@ -705,11 +708,11 @@ static void TreeEntranceSpriteCallback2(struct Sprite *sprite)
ToggleSecretBaseEntranceMetatile();
sprite->data[0] = 0;
- sprite->callback = TreeEntranceSpriteCallbackEnd;
+ sprite->callback = SpriteCB_TreeEntranceEnd;
}
}
-static void TreeEntranceSpriteCallbackEnd(struct Sprite *sprite)
+static void SpriteCB_TreeEntranceEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_TREE);
EnableBothScriptContexts();
@@ -723,7 +726,7 @@ static void FieldCallback_SecretBaseShrub(void)
bool8 FldEff_UseSecretPowerShrub(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)StartSecretBaseShrubFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartSecretBaseShrubFieldEffect;
@@ -741,7 +744,7 @@ bool8 FldEff_SecretPowerShrub(void)
{
AdjustSecretPowerSpritePixelOffsets();
- CreateSprite(&gUnknown_0858E630,
+ CreateSprite(&sSpriteTemplate_SecretPowerShrub,
gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5],
gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6],
148);
@@ -749,15 +752,15 @@ bool8 FldEff_SecretPowerShrub(void)
return FALSE;
}
-static void ShrubEntranceSpriteCallback1(struct Sprite *sprite)
+static void SpriteCB_ShrubEntranceInit(struct Sprite *sprite)
{
PlaySE(SE_W077);
sprite->data[0] = 0;
- sprite->callback = ShrubEntranceSpriteCallback2;
+ sprite->callback = SpriteCB_ShrubEntranceOpen;
}
-static void ShrubEntranceSpriteCallback2(struct Sprite *sprite)
+static void SpriteCB_ShrubEntranceOpen(struct Sprite *sprite)
{
if (sprite->data[0] < 40)
{
@@ -769,16 +772,20 @@ static void ShrubEntranceSpriteCallback2(struct Sprite *sprite)
else
{
sprite->data[0] = 0;
- sprite->callback = ShrubEntranceSpriteCallbackEnd;
+ sprite->callback = SpriteCB_ShrubEntranceEnd;
}
}
-static void ShrubEntranceSpriteCallbackEnd(struct Sprite *sprite)
+static void SpriteCB_ShrubEntranceEnd(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SECRET_POWER_SHRUB);
EnableBothScriptContexts();
}
+#define tX data[0]
+#define tY data[1]
+#define tState data[2]
+
bool8 FldEff_SecretBasePCTurnOn(void)
{
s16 x, y;
@@ -787,9 +794,9 @@ bool8 FldEff_SecretBasePCTurnOn(void)
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
taskId = CreateTask(Task_SecretBasePCTurnOn, 0);
- gTasks[taskId].data[0] = x;
- gTasks[taskId].data[1] = y;
- gTasks[taskId].data[2] = 0;
+ gTasks[taskId].tX = x;
+ gTasks[taskId].tY = y;
+ gTasks[taskId].tState = 0;
return FALSE;
}
@@ -798,30 +805,34 @@ static void Task_SecretBasePCTurnOn(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[2])
+ switch (tState)
{
case 4:
case 12:
- MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC_On);
- CurrentMapDrawMetatileAt(data[0], data[1]);
+ MapGridSetMetatileIdAt(tX, tY, METATILE_SecretBase_PC_On);
+ CurrentMapDrawMetatileAt(tX, tY);
break;
case 8:
case 16:
- MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC);
- CurrentMapDrawMetatileAt(data[0], data[1]);
+ MapGridSetMetatileIdAt(tX, tY, METATILE_SecretBase_PC);
+ CurrentMapDrawMetatileAt(tX, tY);
break;
case 20:
- MapGridSetMetatileIdAt(data[0], data[1], METATILE_SecretBase_PC_On);
- CurrentMapDrawMetatileAt(data[0], data[1]);
+ MapGridSetMetatileIdAt(tX, tY, METATILE_SecretBase_PC_On);
+ CurrentMapDrawMetatileAt(tX, tY);
FieldEffectActiveListRemove(FLDEFF_PCTURN_ON);
EnableBothScriptContexts();
DestroyTask(taskId);
return;
}
- data[2]++;
+ tState++;
}
+#undef tX
+#undef tY
+#undef tState
+
void DoSecretBasePCTurnOffEffect(void)
{
s16 x, y;
@@ -891,12 +902,12 @@ static void DoBalloonSoundEffect(s16 metatileId)
}
}
-bool8 FldEff_NopA6FC(void)
+bool8 FldEff_Nop47(void)
{
return FALSE;
}
-bool8 FldEff_NopA700(void)
+bool8 FldEff_Nop48(void)
{
return FALSE;
}
@@ -1009,7 +1020,7 @@ void DoSecretBaseGlitterMatSparkle(void)
SetSpritePosToOffsetMapCoords(&x, &y, 8, 4);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], x, y, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_SPARKLE], x, y, 0);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].coordOffsetEnabled = TRUE;
@@ -1033,7 +1044,7 @@ bool8 FldEff_SandPillar(void)
switch (GetPlayerFacingDirection())
{
case DIR_SOUTH:
- CreateSprite(&gUnknown_0858E68C,
+ CreateSprite(&sSpriteTemplate_SandPillar,
gSprites[gPlayerAvatar.spriteId].oam.x + 8,
gSprites[gPlayerAvatar.spriteId].oam.y + 32,
0);
@@ -1041,7 +1052,7 @@ bool8 FldEff_SandPillar(void)
break;
case DIR_NORTH:
- CreateSprite(&gUnknown_0858E68C,
+ CreateSprite(&sSpriteTemplate_SandPillar,
gSprites[gPlayerAvatar.spriteId].oam.x + 8,
gSprites[gPlayerAvatar.spriteId].oam.y,
148);
@@ -1049,7 +1060,7 @@ bool8 FldEff_SandPillar(void)
break;
case DIR_WEST:
- CreateSprite(&gUnknown_0858E68C,
+ CreateSprite(&sSpriteTemplate_SandPillar,
gSprites[gPlayerAvatar.spriteId].oam.x - 8,
gSprites[gPlayerAvatar.spriteId].oam.y + 16,
148);
@@ -1057,7 +1068,7 @@ bool8 FldEff_SandPillar(void)
break;
case DIR_EAST:
- CreateSprite(&gUnknown_0858E68C,
+ CreateSprite(&sSpriteTemplate_SandPillar,
gSprites[gPlayerAvatar.spriteId].oam.x + 24,
gSprites[gPlayerAvatar.spriteId].oam.y + 16,
148);
@@ -1068,7 +1079,7 @@ bool8 FldEff_SandPillar(void)
return FALSE;
}
-static void SpriteCB_SandPillar_0(struct Sprite *sprite)
+static void SpriteCB_SandPillar_BreakTop(struct Sprite *sprite)
{
PlaySE(SE_W088);
@@ -1082,10 +1093,10 @@ static void SpriteCB_SandPillar_0(struct Sprite *sprite)
CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]);
sprite->data[0] = 0;
- sprite->callback = SpriteCB_SandPillar_1;
+ sprite->callback = SpriteCB_SandPillar_BreakBase;
}
-static void SpriteCB_SandPillar_1(struct Sprite *sprite)
+static void SpriteCB_SandPillar_BreakBase(struct Sprite *sprite)
{
if (sprite->data[0] < 18)
{
@@ -1096,11 +1107,11 @@ static void SpriteCB_SandPillar_1(struct Sprite *sprite)
MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], METATILE_SecretBase_SandOrnament_BrokenBase | METATILE_COLLISION_MASK);
CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]);
sprite->data[0] = 0;
- sprite->callback = SpriteCB_SandPillar_2;
+ sprite->callback = SpriteCB_SandPillar_End;
}
}
-static void SpriteCB_SandPillar_2(struct Sprite *sprite)
+static void SpriteCB_SandPillar_End(struct Sprite *sprite)
{
FieldEffectStop(sprite, FLDEFF_SAND_PILLAR);
EnableBothScriptContexts();
@@ -1166,12 +1177,13 @@ void InteractWithShieldOrTVDecoration(void)
}
}
-bool8 sub_80FADE4(u16 metatileId, u8 arg1)
+// As opposed to a small one (single metatile) like the balloons
+bool8 IsLargeBreakableDecoration(u16 metatileId, bool8 checkBase)
{
if (!CurMapIsSecretBase())
return FALSE;
- if (!arg1)
+ if (!checkBase)
{
if (metatileId == METATILE_SecretBase_SandOrnament_Top || metatileId == METATILE_SecretBase_SandOrnament_TopWall)
return TRUE;
@@ -1223,25 +1235,26 @@ bool32 FldEffPoison_IsActive(void)
return FuncIsActiveTask(Task_FieldPoisonEffect);
}
-static void Task_WateringBerryTreeAnim_0(u8 taskId)
+static void Task_WateringBerryTreeAnim(u8 taskId)
{
- gTasks[taskId].func = Task_WateringBerryTreeAnim_1;
+ gTasks[taskId].func = Task_WateringBerryTreeAnim_Start;
}
-static void Task_WateringBerryTreeAnim_1(u8 taskId)
+static void Task_WateringBerryTreeAnim_Start(u8 taskId)
{
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
if (!ObjectEventIsMovementOverridden(playerObjEvent)
|| ObjectEventClearHeldMovementIfFinished(playerObjEvent))
{
- sub_808C228(GetPlayerFacingDirection());
+ // Start watering
+ SetPlayerAvatarWatering(GetPlayerFacingDirection());
ObjectEventSetHeldMovement(playerObjEvent, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
- gTasks[taskId].func = Task_WateringBerryTreeAnim_2;
+ gTasks[taskId].func = Task_WateringBerryTreeAnim_Continue;
}
}
-static void Task_WateringBerryTreeAnim_2(u8 taskId)
+static void Task_WateringBerryTreeAnim_Continue(u8 taskId)
{
struct ObjectEvent *playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
@@ -1249,15 +1262,15 @@ static void Task_WateringBerryTreeAnim_2(u8 taskId)
{
s16 value = gTasks[taskId].data[1]++;
+ // Continue holding watering action 10 times, then end
if (value < 10)
ObjectEventSetHeldMovement(playerObjEvent, GetWalkInPlaceNormalMovementAction(GetPlayerFacingDirection()));
-
else
- gTasks[taskId].func = Task_WateringBerryTreeAnim_3;
+ gTasks[taskId].func = Task_WateringBerryTreeAnim_End;
}
}
-static void Task_WateringBerryTreeAnim_3(u8 taskId)
+static void Task_WateringBerryTreeAnim_End(u8 taskId)
{
SetPlayerAvatarTransitionFlags(GetPlayerAvatarFlags());
DestroyTask(taskId);
@@ -1266,16 +1279,17 @@ static void Task_WateringBerryTreeAnim_3(u8 taskId)
void DoWateringBerryTreeAnim(void)
{
- CreateTask(Task_WateringBerryTreeAnim_0, 80);
+ CreateTask(Task_WateringBerryTreeAnim, 80);
}
-u8 CreateRecordMixingSprite(void)
+// The lights that blink on the counter when mixing records in the cable club
+u8 CreateRecordMixingLights(void)
{
u8 spriteId;
- LoadSpritePalette(&gUnknown_0858E864);
+ LoadSpritePalette(&sSpritePalette_RecordMixLights);
- spriteId = CreateSprite(&gUnknown_0858E880, 0, 0, 82);
+ spriteId = CreateSprite(&sSpriteTemplate_RecordMixLights, 0, 0, 82);
if (spriteId == MAX_SPRITES)
{
@@ -1292,13 +1306,13 @@ u8 CreateRecordMixingSprite(void)
return spriteId;
}
-void DestroyRecordMixingSprite(void)
+void DestroyRecordMixingLights(void)
{
int i;
for (i = 0; i < MAX_SPRITES; i++)
{
- if (gSprites[i].template == &gUnknown_0858E880)
+ if (gSprites[i].template == &sSpriteTemplate_RecordMixLights)
{
FreeSpritePalette(&gSprites[i]);
DestroySprite(&gSprites[i]);
diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c
index 614fa6135..0c35ec74e 100644
--- a/src/fldeff_rocksmash.c
+++ b/src/fldeff_rocksmash.c
@@ -20,12 +20,13 @@
#include "constants/songs.h"
// static functions
-static void task08_080C9820(u8 taskId);
-static void sub_8135578(u8 taskId);
-static void sub_813552C(u8 taskId);
-static void sub_813561C(u8 taskId);
-static void sub_81356C4(void);
-static void sub_8135714(void);
+static void Task_DoFieldMove_Init(u8 taskId);
+static void Task_DoFieldMove_ShowMonAfterPose(u8 taskId);
+static void Task_DoFieldMove_WaitForMon(u8 taskId);
+static void Task_DoFieldMove_RunFunc(u8 taskId);
+
+static void FieldCallback_RockSmash(void);
+static void FieldMove_RockSmash(void);
// text
bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
@@ -46,13 +47,13 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
}
}
-u8 oei_task_add(void)
+u8 CreateFieldMoveTask(void)
{
GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
- return CreateTask(task08_080C9820, 8);
+ return CreateTask(Task_DoFieldMove_Init, 8);
}
-static void task08_080C9820(u8 taskId)
+static void Task_DoFieldMove_Init(u8 taskId)
{
u8 objEventId;
@@ -64,56 +65,61 @@ static void task08_080C9820(u8 taskId)
{
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
{
+ // Skip field move pose underwater
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
- gTasks[taskId].func = sub_8135578;
+ gTasks[taskId].func = Task_DoFieldMove_WaitForMon;
}
else
{
- sub_808C114();
+ // Do field move pose
+ SetPlayerAvatarFieldMove();
ObjectEventSetHeldMovement(&gObjectEvents[objEventId], MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
- gTasks[taskId].func = sub_813552C;
+ gTasks[taskId].func = Task_DoFieldMove_ShowMonAfterPose;
}
}
}
-static void sub_813552C(u8 taskId)
+static void Task_DoFieldMove_ShowMonAfterPose(u8 taskId)
{
if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[gPlayerAvatar.objectEventId]) == TRUE)
{
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
- gTasks[taskId].func = sub_8135578;
+ gTasks[taskId].func = Task_DoFieldMove_WaitForMon;
}
}
-static void sub_8135578(u8 taskId)
+static void Task_DoFieldMove_WaitForMon(u8 taskId)
{
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
{
gFieldEffectArguments[1] = GetPlayerFacingDirection();
- if (gFieldEffectArguments[1] == 1)
+ if (gFieldEffectArguments[1] == DIR_SOUTH)
gFieldEffectArguments[2] = 0;
- if (gFieldEffectArguments[1] == 2)
+ if (gFieldEffectArguments[1] == DIR_NORTH)
gFieldEffectArguments[2] = 1;
- if (gFieldEffectArguments[1] == 3)
+ if (gFieldEffectArguments[1] == DIR_WEST)
gFieldEffectArguments[2] = 2;
- if (gFieldEffectArguments[1] == 4)
+ if (gFieldEffectArguments[1] == DIR_EAST)
gFieldEffectArguments[2] = 3;
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByCurrentState());
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
- FieldEffectActiveListRemove(6);
- gTasks[taskId].func = sub_813561C;
+ FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
+ gTasks[taskId].func = Task_DoFieldMove_RunFunc;
}
}
-static void sub_813561C(u8 taskId)
+static void Task_DoFieldMove_RunFunc(u8 taskId)
{
- void (*func)(void) = (void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]);
+ // The function for the field move to do is stored in halves across data[8] and data[9]
+ void (*fieldMoveFunc)(void) = (void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]);
- func();
+ fieldMoveFunc();
gPlayerAvatar.preventStep = FALSE;
DestroyTask(taskId);
}
+// Called when Rock Smash is used from the party menu
+// For interacting with a smashable rock in the field, see EventScript_RockSmash
bool8 SetUpFieldMove_RockSmash(void)
{
// In Ruby and Sapphire, Regirock's tomb is opened by using Strength. In Emerald,
@@ -128,7 +134,7 @@ bool8 SetUpFieldMove_RockSmash(void)
else if (CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_BREAKABLE_ROCK) == TRUE)
{
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
- gPostMenuFieldCallback = sub_81356C4;
+ gPostMenuFieldCallback = FieldCallback_RockSmash;
return TRUE;
}
else
@@ -137,23 +143,24 @@ bool8 SetUpFieldMove_RockSmash(void)
}
}
-static void sub_81356C4(void)
+static void FieldCallback_RockSmash(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- ScriptContext1_SetupScript(EventScript_FldEffRockSmash);
+ ScriptContext1_SetupScript(EventScript_UseRockSmash);
}
bool8 FldEff_UseRockSmash(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
- gTasks[taskId].data[8] = (u32)sub_8135714 >> 16;
- gTasks[taskId].data[9] = (u32)sub_8135714;
+ gTasks[taskId].data[8] = (u32)FieldMove_RockSmash >> 16;
+ gTasks[taskId].data[9] = (u32)FieldMove_RockSmash;
IncrementGameStat(GAME_STAT_USED_ROCK_SMASH);
return FALSE;
}
-static void sub_8135714(void)
+// The actual rock smashing is handled by EventScript_SmashRock, so this function does very little
+static void FieldMove_RockSmash(void)
{
PlaySE(SE_W088);
FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH);
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index f479ef68d..61960d0ff 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -11,8 +11,8 @@
#include "constants/field_effects.h"
// static functions
-static void FldEff_UseStrength(void);
-static void sub_8145E74(void);
+static void FieldCallback_Strength(void);
+static void StartStrengthFieldEffect(void);
// text
bool8 SetUpFieldMove_Strength(void)
@@ -21,28 +21,29 @@ bool8 SetUpFieldMove_Strength(void)
{
gSpecialVar_Result = GetCursorSelectionMonId();
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
- gPostMenuFieldCallback = FldEff_UseStrength;
+ gPostMenuFieldCallback = FieldCallback_Strength;
return TRUE;
}
return FALSE;
}
-static void FldEff_UseStrength(void)
+static void FieldCallback_Strength(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
- ScriptContext1_SetupScript(EventScript_FldEffStrength);
+ ScriptContext1_SetupScript(EventScript_UseStrength);
}
-bool8 sub_8145E2C(void)
+bool8 FldEff_UseStrength(void)
{
- u8 taskId = oei_task_add();
- gTasks[taskId].data[8] = (u32)sub_8145E74 >> 16;
- gTasks[taskId].data[9] = (u32)sub_8145E74;
+ u8 taskId = CreateFieldMoveTask();
+ gTasks[taskId].data[8] = (u32)StartStrengthFieldEffect >> 16;
+ gTasks[taskId].data[9] = (u32)StartStrengthFieldEffect;
GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1);
return FALSE;
}
-static void sub_8145E74(void)
+// Just passes control back to EventScript_UseStrength
+static void StartStrengthFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
EnableBothScriptContexts();
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 788310b5d..1ee82674e 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -41,7 +41,7 @@ bool8 FldEff_SweetScent(void)
u8 taskId;
SetWeatherScreenFadeOut();
- taskId = oei_task_add();
+ taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)StartSweetScentFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartSweetScentFieldEffect;
return FALSE;
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
index cbf8ee6cc..3f087e5da 100644
--- a/src/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
@@ -30,7 +30,7 @@ static void FieldCallback_Teleport(void)
bool8 FldEff_UseTeleport(void)
{
- u8 taskId = oei_task_add();
+ u8 taskId = CreateFieldMoveTask();
gTasks[taskId].data[8] = (u32)StartTeleportFieldEffect >> 16;
gTasks[taskId].data[9] = (u32)StartTeleportFieldEffect;
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
@@ -40,5 +40,5 @@ bool8 FldEff_UseTeleport(void)
static void StartTeleportFieldEffect(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT);
- CreateTeleportFieldEffectTask();
+ FldEff_TeleportWarpOut();
}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index bf9850dec..f4c971b0b 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -824,7 +824,7 @@ void CB2_DoHallOfFamePC(void)
{
struct HallofFameTeam *fameTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
fameTeam->mon[0] = sDummyFameMon;
- sub_80F9BCC(0, 0, 0);
+ ComputerScreenOpenEffect(0, 0, 0);
SetVBlankCallback(VBlankCB_HallOfFame);
gMain.state++;
}
@@ -834,7 +834,7 @@ void CB2_DoHallOfFamePC(void)
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
- if (!sub_80F9C1C())
+ if (!IsComputerScreenOpenEffectActive())
gMain.state++;
break;
case 5:
@@ -1048,13 +1048,13 @@ static void Task_HofPC_HandlePaletteOnExit(u8 taskId)
CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
fameTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
fameTeam->mon[0] = sDummyFameMon;
- sub_80F9BF4(0, 0, 0);
+ ComputerScreenCloseEffect(0, 0, 0);
gTasks[taskId].func = Task_HofPC_HandleExit;
}
static void Task_HofPC_HandleExit(u8 taskId)
{
- if (!sub_80F9C30())
+ if (!IsComputerScreenCloseEffectActive())
{
u8 i;
@@ -1324,7 +1324,7 @@ static bool8 sub_8175024(void)
break;
case 3:
InitStandardTextBoxWindows();
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
break;
case 4:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
diff --git a/src/item_menu.c b/src/item_menu.c
index 591ebe018..ae09ec7ed 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -600,7 +600,7 @@ void CB2_BagMenuRun(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -627,7 +627,7 @@ bool8 SetupBagMenu(void)
{
case 0:
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
diff --git a/src/item_use.c b/src/item_use.c
index 0aae441c8..2c9ffaf32 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -397,7 +397,7 @@ static bool8 IsHiddenItemPresentInConnection(struct MapConnection *connection, i
u32 localOffset;
s32 localLength;
- struct MapHeader const *const mapHeader = mapconnection_get_mapheader(connection);
+ struct MapHeader const *const mapHeader = GetMapHeaderFromConnection(connection);
switch (connection->direction)
{
@@ -721,7 +721,7 @@ static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId)
static bool8 TryToWaterSudowoodo(void)
{
- u16 x, y;
+ s16 x, y;
u8 z;
u8 objId;
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
diff --git a/src/list_menu.c b/src/list_menu.c
index ddcad0fe9..ebf02bab6 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -1257,17 +1257,17 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
s32 i, j, id = 0;
subsprites[id] = sSubsprite_RedOutline1;
- subsprites[id].x = 136;
- subsprites[id].y = 136;
+ subsprites[id].x = -120;
+ subsprites[id].y = -120;
id++;
subsprites[id] = sSubsprite_RedOutline2;
subsprites[id].x = rowWidth + 128;
- subsprites[id].y = 136;
+ subsprites[id].y = -120;
id++;
subsprites[id] = sSubsprite_RedOutline7;
- subsprites[id].x = 136;
+ subsprites[id].x = -120;
subsprites[id].y = rowHeight + 128;
id++;
@@ -1297,7 +1297,7 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
for (j = 8; j < rowHeight - 8; j += 8)
{
subsprites[id] = sSubsprite_RedOutline4;
- subsprites[id].x = 136;
+ subsprites[id].x = -120;
subsprites[id].y = j - 120;
id++;
diff --git a/src/menu.c b/src/menu.c
index 7c90c4d93..ac2f7d85b 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -56,9 +56,9 @@ static EWRAM_DATA u8 sPaletteNum = 0;
static EWRAM_DATA u8 sYesNoWindowId = 0;
static EWRAM_DATA u8 sWindowId = 0;
static EWRAM_DATA u16 sFiller = 0; // needed to align
-static EWRAM_DATA bool8 gUnknown_0203CDA4[4] = {FALSE};
-static EWRAM_DATA u16 gUnknown_0203CDA8 = 0;
-static EWRAM_DATA void *gUnknown_0203CDAC[0x20] = {NULL};
+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");
@@ -153,7 +153,7 @@ void FreeAllOverworldWindowBuffers(void)
FreeAllWindowBuffers();
}
-void sub_8197200(void)
+void InitTextBoxGfxAndPrinters(void)
{
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
@@ -1736,48 +1736,48 @@ u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCurso
return sMenu.cursorPos;
}
-void clear_scheduled_bg_copies_to_vram(void)
+void ClearScheduledBgCopiesToVram(void)
{
- memset(gUnknown_0203CDA4, 0, sizeof(gUnknown_0203CDA4));
+ memset(sScheduledBgCopiesToVram, 0, sizeof(sScheduledBgCopiesToVram));
}
void ScheduleBgCopyTilemapToVram(u8 bgId)
{
- gUnknown_0203CDA4[bgId] = TRUE;
+ sScheduledBgCopiesToVram[bgId] = TRUE;
}
-void do_scheduled_bg_tilemap_copies_to_vram(void)
+void DoScheduledBgTilemapCopiesToVram(void)
{
- if (gUnknown_0203CDA4[0] == TRUE)
+ if (sScheduledBgCopiesToVram[0] == TRUE)
{
CopyBgTilemapBufferToVram(0);
- gUnknown_0203CDA4[0] = FALSE;
+ sScheduledBgCopiesToVram[0] = FALSE;
}
- if (gUnknown_0203CDA4[1] == TRUE)
+ if (sScheduledBgCopiesToVram[1] == TRUE)
{
CopyBgTilemapBufferToVram(1);
- gUnknown_0203CDA4[1] = FALSE;
+ sScheduledBgCopiesToVram[1] = FALSE;
}
- if (gUnknown_0203CDA4[2] == TRUE)
+ if (sScheduledBgCopiesToVram[2] == TRUE)
{
CopyBgTilemapBufferToVram(2);
- gUnknown_0203CDA4[2] = FALSE;
+ sScheduledBgCopiesToVram[2] = FALSE;
}
- if (gUnknown_0203CDA4[3] == TRUE)
+ if (sScheduledBgCopiesToVram[3] == TRUE)
{
CopyBgTilemapBufferToVram(3);
- gUnknown_0203CDA4[3] = FALSE;
+ sScheduledBgCopiesToVram[3] = FALSE;
}
}
void ResetTempTileDataBuffers(void)
{
int i;
- for (i = 0; i < (s32)ARRAY_COUNT(gUnknown_0203CDAC); i++)
+ for (i = 0; i < (int)ARRAY_COUNT(sTempTileDataBuffer); i++)
{
- gUnknown_0203CDAC[i] = NULL;
+ sTempTileDataBuffer[i] = NULL;
}
- gUnknown_0203CDA8 = 0;
+ sTempTileDataBufferIdx = 0;
}
bool8 FreeTempTileDataBuffersIfPossible(void)
@@ -1786,13 +1786,13 @@ bool8 FreeTempTileDataBuffersIfPossible(void)
if (!IsDma3ManagerBusyWithBgCopy())
{
- if (gUnknown_0203CDA8)
+ if (sTempTileDataBufferIdx)
{
- for (i = 0; i < gUnknown_0203CDA8; i++)
+ for (i = 0; i < sTempTileDataBufferIdx; i++)
{
- FREE_AND_SET_NULL(gUnknown_0203CDAC[i]);
+ FREE_AND_SET_NULL(sTempTileDataBuffer[i]);
}
- gUnknown_0203CDA8 = 0;
+ sTempTileDataBufferIdx = 0;
}
return FALSE;
}
@@ -1805,7 +1805,7 @@ bool8 FreeTempTileDataBuffersIfPossible(void)
void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode)
{
u32 sizeOut;
- if (gUnknown_0203CDA8 < ARRAY_COUNT(gUnknown_0203CDAC))
+ if (sTempTileDataBufferIdx < ARRAY_COUNT(sTempTileDataBuffer))
{
void *ptr = malloc_and_decompress(src, &sizeOut);
if (!size)
@@ -1813,7 +1813,7 @@ void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 of
if (ptr)
{
copy_decompressed_tile_data_to_vram(bgId, ptr, size, offset, mode);
- gUnknown_0203CDAC[gUnknown_0203CDA8++] = ptr;
+ sTempTileDataBuffer[sTempTileDataBufferIdx++] = ptr;
}
return ptr;
}
diff --git a/src/mirage_tower.c b/src/mirage_tower.c
index e2f5cefb7..c1323c784 100644
--- a/src/mirage_tower.c
+++ b/src/mirage_tower.c
@@ -109,24 +109,24 @@ const struct SpriteSheet gMirageTowerCeilingCrumbleSpriteSheets[] =
static const struct MetatileCoords sInvisibleMirageTowerMetatiles[] =
{
- {18, 53, METATILE_ID(Mauville, DeepSand_Center)},
- {19, 53, METATILE_ID(Mauville, DeepSand_Center)},
- {20, 53, METATILE_ID(Mauville, DeepSand_Center)},
- {18, 54, METATILE_ID(Mauville, DeepSand_Center)},
- {19, 54, METATILE_ID(Mauville, DeepSand_Center)},
- {20, 54, METATILE_ID(Mauville, DeepSand_Center)},
- {18, 55, METATILE_ID(Mauville, DeepSand_Center)},
- {19, 55, METATILE_ID(Mauville, DeepSand_Center)},
- {20, 55, METATILE_ID(Mauville, DeepSand_Center)},
- {18, 56, METATILE_ID(Mauville, DeepSand_Center)},
- {19, 56, METATILE_ID(Mauville, DeepSand_Center)},
- {20, 56, METATILE_ID(Mauville, DeepSand_Center)},
- {18, 57, METATILE_ID(Mauville, DeepSand_BottomMid)},
- {19, 57, METATILE_ID(Mauville, DeepSand_BottomMid)},
- {20, 57, METATILE_ID(Mauville, DeepSand_BottomMid)},
- {18, 58, METATILE_ID(General, SandPit_Center)},
- {19, 58, METATILE_ID(General, SandPit_Center)},
- {20, 58, METATILE_ID(General, SandPit_Center)},
+ {18, 53, METATILE_Mauville_DeepSand_Center},
+ {19, 53, METATILE_Mauville_DeepSand_Center},
+ {20, 53, METATILE_Mauville_DeepSand_Center},
+ {18, 54, METATILE_Mauville_DeepSand_Center},
+ {19, 54, METATILE_Mauville_DeepSand_Center},
+ {20, 54, METATILE_Mauville_DeepSand_Center},
+ {18, 55, METATILE_Mauville_DeepSand_Center},
+ {19, 55, METATILE_Mauville_DeepSand_Center},
+ {20, 55, METATILE_Mauville_DeepSand_Center},
+ {18, 56, METATILE_Mauville_DeepSand_Center},
+ {19, 56, METATILE_Mauville_DeepSand_Center},
+ {20, 56, METATILE_Mauville_DeepSand_Center},
+ {18, 57, METATILE_Mauville_DeepSand_BottomMid},
+ {19, 57, METATILE_Mauville_DeepSand_BottomMid},
+ {20, 57, METATILE_Mauville_DeepSand_BottomMid},
+ {18, 58, METATILE_General_SandPit_Center},
+ {19, 58, METATILE_General_SandPit_Center},
+ {20, 58, METATILE_General_SandPit_Center},
};
static const union AnimCmd gSpriteAnim_8617DEC[] =
@@ -168,7 +168,7 @@ const struct PulseBlendSettings gMirageTowerPulseBlendSettings = {
.numColors = 15,
.delay = 5,
.numFadeCycles = -1,
- .maxBlendCoeff = 11,
+ .maxBlendCoeff = -5,
.fadeType = 1,
.restorePaletteOnUnload = FALSE,
.unk7_7 = 1,
@@ -412,10 +412,9 @@ void DoMirageTowerCeilingCrumble(void)
static void WaitCeilingCrumble(u8 taskId)
{
- u16 *data = gTasks[taskId].data;
- data[1]++;
+ u16 *data = (u16 *)gTasks[taskId].data;
// Either wait 1000 frames, or until all 16 crumble sprites and the one screen-shake task are completed.
- if (data[1] == 1000 || data[0] == 17)
+ if (++data[1] == 1000 || data[0] == 17)
gTasks[taskId].func = FinishCeilingCrumbleTask;
}
@@ -691,7 +690,7 @@ static void DoFossilFallAndSink(u8 taskId)
if (gSprites[sUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
return;
DestroySprite(&gSprites[sUnknown_0203CF0C->spriteId]);
- FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);;
+ FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);
FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImage);
FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImageTiles);
FREE_AND_SET_NULL(sUnknown_0203CF0C);
diff --git a/src/move_relearner.c b/src/move_relearner.c
index 8c4cf7b2e..1c863804b 100644
--- a/src/move_relearner.c
+++ b/src/move_relearner.c
@@ -384,7 +384,7 @@ static void CB2_InitLearnMove(void)
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
sMoveRelearnerStruct = AllocZeroed(sizeof(*sMoveRelearnerStruct));
sMoveRelearnerStruct->partyMon = gSpecialVar_0x8004;
SetVBlankCallback(VBlankCB_MoveRelearner);
@@ -412,7 +412,7 @@ static void CB2_InitLearnMoveReturnFromSelectMove(void)
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
sMoveRelearnerStruct = AllocZeroed(sizeof(*sMoveRelearnerStruct));
sMoveRelearnerStruct->state = MENU_STATE_FADE_FROM_SUMMARY_SCREEN;
sMoveRelearnerStruct->partyMon = gSpecialVar_0x8004;
@@ -452,7 +452,7 @@ static void CB2_MoveRelearnerMain(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 84b540e99..ab38db745 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -346,7 +346,7 @@ static void NamingScreen_InitBGs(void)
ChangeBgY(3, 0, 0);
InitStandardTextBoxWindows();
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
for (i = 0; i < 5; i++)
gNamingScreenData->windows[i] = AddWindow(&gUnknown_0858BE10[i]);
diff --git a/src/overworld.c b/src/overworld.c
index ea0d633bc..2946c7d68 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -7,10 +7,11 @@
#include "cable_club.h"
#include "clock.h"
#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_scripts.h"
#include "field_camera.h"
#include "field_control_avatar.h"
#include "field_effect.h"
-#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
@@ -22,6 +23,7 @@
#include "fldeff.h"
#include "gpu_regs.h"
#include "heal_location.h"
+#include "io_reg.h"
#include "link.h"
#include "link_rfu.h"
#include "load_save.h"
@@ -82,58 +84,36 @@
#define FACING_FORCED_LEFT 9
#define FACING_FORCED_RIGHT 10
-// event scripts
-extern const u8 EventScript_WhiteOut[];
-extern const u8 EventScript_ResetMrBriney[];
-extern const u8 EventScript_DoLinkRoomExit[];
-extern const u8 CableClub_EventScript_TooBusyToNotice[];
-extern const u8 CableClub_EventScript_ReadTrainerCard[];
-extern const u8 CableClub_EventScript_ReadTrainerCardColored[];
-extern const u8 EventScript_BattleColosseum_4P_PlayerSpot0[];
-extern const u8 EventScript_BattleColosseum_4P_PlayerSpot1[];
-extern const u8 EventScript_BattleColosseum_4P_PlayerSpot2[];
-extern const u8 EventScript_BattleColosseum_4P_PlayerSpot3[];
-extern const u8 EventScript_RecordCenter_Spot0[];
-extern const u8 EventScript_RecordCenter_Spot1[];
-extern const u8 EventScript_RecordCenter_Spot2[];
-extern const u8 EventScript_RecordCenter_Spot3[];
-extern const u8 EventScript_BattleColosseum_2P_PlayerSpot0[];
-extern const u8 EventScript_BattleColosseum_2P_PlayerSpot1[];
-extern const u8 EventScript_TradeCenter_Chair1[];
-extern const u8 EventScript_TradeCenter_Chair0[];
-extern const u8 EventScript_ConfirmLeaveTradeRoom[];
-extern const u8 EventScript_TerminateLink[];
-
extern const struct MapLayout *const gMapLayouts[];
extern const struct MapHeader *const *const gMapGroups[];
-extern const int gMaxFlashLevel;
-extern const u16 gOverworldBackgroundLayerFlags[];
static void Overworld_ResetStateAfterWhiteOut(void);
-static void c2_80567AC(void);
+static void CB2_ReturnToFieldLocal(void);
+static void CB2_ReturnToFieldLink(void);
+static void CB2_LoadMapOnReturnToFieldCableClub(void);
static void CB2_LoadMap2(void);
static void VBlankCB_Field(void);
static void SpriteCB_LinkPlayer(struct Sprite *sprite);
static void ChooseAmbientCrySpecies(void);
-static void do_load_map_stuff_loop(u8 *state);
-static bool32 map_loading_iteration_3(u8 *state);
-static bool32 sub_8086638(u8 *state);
-static bool32 load_map_stuff(u8 *state, u32);
-static bool32 map_loading_iteration_2_link(u8 *state);
-static void mli4_mapscripts_and_other(void);
+static void DoMapLoadLoop(u8 *state);
+static bool32 LoadMapInStepsLocal(u8 *state, bool32);
+static bool32 LoadMapInStepsLink(u8 *state);
+static bool32 ReturnToFieldLocal(u8 *state);
+static bool32 ReturnToFieldLink(u8 *state);
+static void InitObjectEventsLink(void);
+static void InitObjectEventsLocal(void);
static void InitOverworldGraphicsRegisters(void);
static u8 GetSpriteForLinkedPlayer(u8);
static u16 KeyInterCB_SendNothing(u32 a1);
-static void sub_80867C8(void);
+static void ResetMirageTowerAndSaveBlockPtrs(void);
static void sub_80867D8(void);
-static void sub_8086AE4(void);
-static void sub_80869DC(void);
-static void sub_8086B14(void);
+static void OffsetCameraFocusByLinkPlayerId(void);
+static void SpawnLinkPlayers(void);
static void SetCameraToTrackGuestPlayer(void);
-static void sub_8086988(bool32 arg0);
-static void sub_8086A80(void);
+static void ResumeMap(bool32 arg0);
+static void SetCameraToTrackPlayer(void);
static void sub_8086A68(void);
-static void sub_8086860(void);
+static void InitViewGraphics(void);
static void SetCameraToTrackGuestPlayer_2(void);
static void CreateLinkPlayerSprites(void);
static void ClearAllPlayerKeys(void);
@@ -155,7 +135,7 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1
static void sub_80877DC(u8 linkPlayerId, u8 a2);
static void sub_808780C(u8 linkPlayerId);
static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId);
-static void sub_8087584(void);
+static void RunTerminateLinkScript(void);
static u32 GetLinkSendQueueLength(void);
static void ZeroLinkPlayerObjectEvent(struct LinkPlayerObjectEvent *linkPlayerObjEvent);
static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1);
@@ -181,14 +161,14 @@ static void CB1_UpdateLinkState(void);
static void SetKeyInterceptCallback(u16 (*func)(u32));
static void SetFieldVBlankCallback(void);
static void FieldClearVBlankHBlankCallbacks(void);
-static void sub_8085810(void);
+static void TransitionMapMusic(void);
static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 a2, u8 a3);
static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 a2, u16 a3, u8 a4);
static u16 GetCenterScreenMetatileBehavior(void);
// IWRAM bss vars
static void *sUnusedOverworldCallback;
-static u8 sPlayerTradingStates[4];
+static u8 sPlayerTradingStates[MAX_LINK_PLAYERS];
// This callback is called with a player's key code. It then returns an
// adjusted key code, effectively intercepting the input before anything
// can process it.
@@ -208,13 +188,13 @@ u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode.
u8 gFieldLinkPlayerCount;
// EWRAM vars
-EWRAM_DATA static u8 sUnknown_020322D8 = 0;
+EWRAM_DATA static u8 sObjectEventLoadFlag = 0;
EWRAM_DATA struct WarpData gLastUsedWarp = {0};
EWRAM_DATA static struct WarpData sWarpDestination = {0}; // new warp position
-EWRAM_DATA static struct WarpData gFixedDiveWarp = {0};
-EWRAM_DATA static struct WarpData gFixedHoleWarp = {0};
+EWRAM_DATA static struct WarpData sFixedDiveWarp = {0};
+EWRAM_DATA static struct WarpData sFixedHoleWarp = {0};
EWRAM_DATA static u16 sLastMapSectionId = 0;
-EWRAM_DATA static struct InitialPlayerAvatarState gInitialPlayerAvatarState = {0};
+EWRAM_DATA static struct InitialPlayerAvatarState sInitialPlayerAvatarState = {0};
EWRAM_DATA static u16 sAmbientCrySpecies = 0;
EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
EWRAM_DATA struct LinkPlayerObjectEvent gLinkPlayerObjectEvents[4] = {0};
@@ -229,16 +209,9 @@ static const struct WarpData sDummyWarpData =
.y = -1,
};
-static const u8 sUnusedData[] =
+static const u32 sUnusedData[] =
{
- 0xB0, 0x04, 0x00, 0x00,
- 0x10, 0x0E, 0x00, 0x00,
- 0xB0, 0x04, 0x00, 0x00,
- 0x60, 0x09, 0x00, 0x00,
- 0x32, 0x00, 0x00, 0x00,
- 0x50, 0x00, 0x00, 0x00,
- 0xD4, 0xFF, 0xFF, 0xFF,
- 0x2C, 0x00, 0x00, 0x00,
+ 1200, 3600, 1200, 2400, 50, 80, -44, 44
};
const struct UCoords32 gDirectionToVectors[] =
@@ -547,11 +520,11 @@ void Overworld_SetObjEventTemplateMovementType(u8 localId, u8 movementType)
}
}
-static void mapdata_load_assets_to_gpu_and_full_redraw(void)
+static void InitMapView(void)
{
- move_tilemap_camera_to_upper_left_corner();
- copy_map_tileset1_tileset2_to_vram(gMapHeader.mapLayout);
- apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ ResetFieldCamera();
+ CopyMapTilesetsToVram(gMapHeader.mapLayout);
+ LoadMapTilesetPalettes(gMapHeader.mapLayout);
DrawWholeMapView();
InitTilesetAnimations();
}
@@ -568,14 +541,14 @@ void ApplyCurrentWarp(void)
{
gLastUsedWarp = gSaveBlock1Ptr->location;
gSaveBlock1Ptr->location = sWarpDestination;
- gFixedDiveWarp = sDummyWarpData;
- gFixedHoleWarp = sDummyWarpData;
+ sFixedDiveWarp = sDummyWarpData;
+ sFixedHoleWarp = sDummyWarpData;
}
static void ClearDiveAndHoleWarps(void)
{
- gFixedDiveWarp = sDummyWarpData;
- gFixedHoleWarp = sDummyWarpData;
+ sFixedDiveWarp = sDummyWarpData;
+ sFixedHoleWarp = sDummyWarpData;
}
static void SetWarpData(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
@@ -717,25 +690,25 @@ void SetWarpDestinationToEscapeWarp(void)
void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
- SetWarpData(&gFixedDiveWarp, mapGroup, mapNum, warpId, x, y);
+ SetWarpData(&sFixedDiveWarp, mapGroup, mapNum, warpId, x, y);
}
static void SetWarpDestinationToDiveWarp(void)
{
- sWarpDestination = gFixedDiveWarp;
+ sWarpDestination = sFixedDiveWarp;
}
void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
- SetWarpData(&gFixedHoleWarp, mapGroup, mapNum, warpId, x, y);
+ SetWarpData(&sFixedHoleWarp, mapGroup, mapNum, warpId, x, y);
}
void SetWarpDestinationToFixedHoleWarp(s16 x, s16 y)
{
- if (IsDummyWarp(&gFixedHoleWarp) == TRUE)
+ if (IsDummyWarp(&sFixedHoleWarp) == TRUE)
sWarpDestination = gLastUsedWarp;
else
- SetWarpDestination(gFixedHoleWarp.mapGroup, gFixedHoleWarp.mapNum, -1, x, y);
+ SetWarpDestination(sFixedHoleWarp.mapGroup, sFixedHoleWarp.mapNum, -1, x, y);
}
static void SetWarpDestinationToContinueGameWarp(void)
@@ -787,7 +760,7 @@ static bool8 SetDiveWarp(u8 dir, u16 x, u16 y)
else
{
RunOnDiveWarpMapScript();
- if (IsDummyWarp(&gFixedDiveWarp))
+ if (IsDummyWarp(&sFixedDiveWarp))
return FALSE;
SetWarpDestinationToDiveWarp();
}
@@ -809,8 +782,10 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
s32 paletteIndex;
SetWarpDestination(mapGroup, mapNum, -1, -1, -1);
- if (gMapHeader.regionMapSectionId != 0x3A)
- sub_8085810();
+
+ // Dont transition map music between BF Outside West/East
+ if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER)
+ TransitionMapMusic();
ApplyCurrentWarp();
LoadCurrentMapData();
@@ -827,8 +802,8 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
Overworld_ClearSavedMusic();
RunOnTransitionMapScript();
InitMap();
- copy_map_tileset2_to_vram_2(gMapHeader.mapLayout);
- apply_map_tileset2_palette(gMapHeader.mapLayout);
+ CopySecondaryTilesetToVramUsingHeap(gMapHeader.mapLayout);
+ LoadSecondaryTilesetPalette(gMapHeader.mapLayout);
for (paletteIndex = 6; paletteIndex < 13; paletteIndex++)
ApplyWeatherGammaShiftToPal(paletteIndex);
@@ -840,17 +815,18 @@ void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum)
ResetFieldTasksArgs();
RunOnResumeMapScript();
- if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER || gMapHeader.regionMapSectionId != sLastMapSectionId)
+ if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER
+ || gMapHeader.regionMapSectionId != sLastMapSectionId)
ShowMapNamePopup();
}
-static void mli0_load_map(u32 a1)
+static void LoadMapFromWarp(bool32 a1)
{
bool8 isOutdoors;
bool8 isIndoors;
LoadCurrentMapData();
- if (!(sUnknown_020322D8 & 1))
+ if (!(sObjectEventLoadFlag & SKIP_OBJECT_EVENT_LOAD))
{
if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR)
LoadBattlePyramidObjectEventTemplates();
@@ -869,7 +845,7 @@ static void mli0_load_map(u32 a1)
ResetCyclingRoadChallengeData();
RestartWildEncounterImmunitySteps();
TryUpdateRandomTrainerRematches(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum);
- if (a1 != 1)
+ if (a1 != TRUE)
DoTimeBasedEvents();
SetSav1WeatherFromCurrMapHeader();
ChooseAmbientCrySpecies();
@@ -887,7 +863,7 @@ static void mli0_load_map(u32 a1)
else
InitMap();
- if (a1 != 1 && isIndoors)
+ if (a1 != TRUE && isIndoors)
{
UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height);
InitSecretBaseAppearance(TRUE);
@@ -896,24 +872,24 @@ static void mli0_load_map(u32 a1)
void ResetInitialPlayerAvatarState(void)
{
- gInitialPlayerAvatarState.direction = DIR_SOUTH;
- gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
+ sInitialPlayerAvatarState.direction = DIR_SOUTH;
+ sInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
}
void StoreInitialPlayerAvatarState(void)
{
- gInitialPlayerAvatarState.direction = GetPlayerFacingDirection();
+ sInitialPlayerAvatarState.direction = GetPlayerFacingDirection();
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
- gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_MACH_BIKE;
+ sInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_MACH_BIKE;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
- gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ACRO_BIKE;
+ sInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ACRO_BIKE;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
- gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_SURFING;
+ sInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_SURFING;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_UNDERWATER))
- gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_UNDERWATER;
+ sInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_UNDERWATER;
else
- gInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
+ sInitialPlayerAvatarState.transitionFlags = PLAYER_AVATAR_FLAG_ON_FOOT;
}
static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
@@ -921,11 +897,11 @@ static struct InitialPlayerAvatarState *GetInitialPlayerAvatarState(void)
struct InitialPlayerAvatarState playerStruct;
u8 mapType = GetCurrentMapType();
u16 metatileBehavior = GetCenterScreenMetatileBehavior();
- u8 transitionFlags = GetAdjustedInitialTransitionFlags(&gInitialPlayerAvatarState, metatileBehavior, mapType);
+ u8 transitionFlags = GetAdjustedInitialTransitionFlags(&sInitialPlayerAvatarState, metatileBehavior, mapType);
playerStruct.transitionFlags = transitionFlags;
- playerStruct.direction = GetAdjustedInitialDirection(&gInitialPlayerAvatarState, transitionFlags, metatileBehavior, mapType);
- gInitialPlayerAvatarState = playerStruct;
- return &gInitialPlayerAvatarState;
+ playerStruct.direction = GetAdjustedInitialDirection(&sInitialPlayerAvatarState, transitionFlags, metatileBehavior, mapType);
+ sInitialPlayerAvatarState = playerStruct;
+ return &sInitialPlayerAvatarState;
}
static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *playerStruct, u16 metatileBehavior, u8 mapType)
@@ -963,7 +939,7 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr
else if (MetatileBehavior_IsEastArrowWarp(metatileBehavior) == TRUE)
return DIR_WEST;
else if ((playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER && transitionFlags == PLAYER_AVATAR_FLAG_SURFING)
- || (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_SURFING && transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER ))
+ || (playerStruct->transitionFlags == PLAYER_AVATAR_FLAG_SURFING && transitionFlags == PLAYER_AVATAR_FLAG_UNDERWATER))
return playerStruct->direction;
else if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE)
return playerStruct->direction;
@@ -1012,14 +988,15 @@ void SetCurrentMapLayout(u16 mapLayoutId)
gMapHeader.mapLayout = GetMapLayout();
}
-void sub_8085540(u8 var)
+void SetObjectEventLoadFlag(u8 flag)
{
- sUnknown_020322D8 = var;
+ sObjectEventLoadFlag = flag;
}
-u8 sub_808554C(void)
+// Unused, sObjectEventLoadFlag is read directly
+static u8 GetObjectEventLoadFlag(void)
{
- return sUnknown_020322D8;
+ return sObjectEventLoadFlag;
}
static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
@@ -1179,10 +1156,10 @@ void Overworld_SetSavedMusic(u16 songNum)
void Overworld_ClearSavedMusic(void)
{
- gSaveBlock1Ptr->savedMusic = 0;
+ gSaveBlock1Ptr->savedMusic = MUS_DUMMY;
}
-static void sub_8085810(void)
+static void TransitionMapMusic(void)
{
if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE)
{
@@ -1444,7 +1421,7 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys)
{
struct FieldInput inputStruct;
- sub_808B578();
+ UpdatePlayerAvatarTransitionState();
FieldClearPlayerInput(&inputStruct);
FieldGetPlayerInput(&inputStruct, newKeys, heldKeys);
if (!ScriptContext2_IsEnabled())
@@ -1456,7 +1433,7 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys)
}
else
{
- player_step(inputStruct.dpadDirection, newKeys, heldKeys);
+ PlayerStep(inputStruct.dpadDirection, newKeys, heldKeys);
}
}
}
@@ -1477,7 +1454,7 @@ static void OverworldBasic(void)
BuildOamBuffer();
UpdatePaletteFade();
UpdateTilesetAnimations();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
}
// This CB2 is used when starting
@@ -1507,7 +1484,7 @@ void SetUnusedCallback(void *func)
sUnusedOverworldCallback = func;
}
-static bool8 map_post_load_hook_exec(void)
+static bool8 RunFieldCallback(void)
{
if (gFieldCallback2)
{
@@ -1546,7 +1523,7 @@ void CB2_NewGame(void)
ScriptContext2_Disable();
gFieldCallback = ExecuteTruckSequence;
gFieldCallback2 = NULL;
- do_load_map_stuff_loop(&gMain.state);
+ DoMapLoadLoop(&gMain.state);
SetFieldVBlankCallback();
SetMainCallback1(CB1_Overworld);
SetMainCallback2(CB2_Overworld);
@@ -1554,7 +1531,7 @@ void CB2_NewGame(void)
void CB2_WhiteOut(void)
{
- u8 val;
+ u8 state;
if (++gMain.state >= 120)
{
@@ -1566,8 +1543,8 @@ void CB2_WhiteOut(void)
ScriptContext1_Init();
ScriptContext2_Disable();
gFieldCallback = FieldCB_WarpExitFadeFromBlack;
- val = 0;
- do_load_map_stuff_loop(&val);
+ state = 0;
+ DoMapLoadLoop(&state);
SetFieldVBlankCallback();
SetMainCallback1(CB1_Overworld);
SetMainCallback2(CB2_Overworld);
@@ -1586,13 +1563,13 @@ void CB2_LoadMap(void)
static void CB2_LoadMap2(void)
{
- do_load_map_stuff_loop(&gMain.state);
+ DoMapLoadLoop(&gMain.state);
SetFieldVBlankCallback();
SetMainCallback1(CB1_Overworld);
SetMainCallback2(CB2_Overworld);
}
-void sub_8086024(void)
+void CB2_ReturnToFieldContestHall(void)
{
if (!gMain.state)
{
@@ -1601,7 +1578,7 @@ void sub_8086024(void)
ScriptContext2_Disable();
SetMainCallback1(NULL);
}
- if (load_map_stuff(&gMain.state, 1))
+ if (LoadMapInStepsLocal(&gMain.state, TRUE))
{
SetFieldVBlankCallback();
SetMainCallback1(CB1_Overworld);
@@ -1613,12 +1590,12 @@ void CB2_ReturnToFieldCableClub(void)
{
FieldClearVBlankHBlankCallbacks();
gFieldCallback = FieldCB_ReturnToFieldWirelessLink;
- SetMainCallback2(c2_80567AC);
+ SetMainCallback2(CB2_LoadMapOnReturnToFieldCableClub);
}
-static void c2_80567AC(void)
+static void CB2_LoadMapOnReturnToFieldCableClub(void)
{
- if (map_loading_iteration_3(&gMain.state))
+ if (LoadMapInStepsLink(&gMain.state))
{
SetFieldVBlankCallback();
SetMainCallback1(CB1_UpdateLinkState);
@@ -1640,18 +1617,18 @@ void CB2_ReturnToField(void)
}
}
-void CB2_ReturnToFieldLocal(void)
+static void CB2_ReturnToFieldLocal(void)
{
- if (sub_8086638(&gMain.state))
+ if (ReturnToFieldLocal(&gMain.state))
{
SetFieldVBlankCallback();
SetMainCallback2(CB2_Overworld);
}
}
-void CB2_ReturnToFieldLink(void)
+static void CB2_ReturnToFieldLink(void)
{
- if (!sub_8087598() && map_loading_iteration_2_link(&gMain.state))
+ if (!sub_8087598() && ReturnToFieldLink(&gMain.state))
SetMainCallback2(CB2_Overworld);
}
@@ -1746,12 +1723,12 @@ void CB2_ContinueSavedGame(void)
ClearContinueGameWarpStatus();
SetWarpDestinationToContinueGameWarp();
WarpIntoMap();
- sub_80EDB44();
+ TryPutTodaysRivalTrainerOnAir();
SetMainCallback2(CB2_LoadMap);
}
else
{
- sub_80EDB44();
+ TryPutTodaysRivalTrainerOnAir();
gFieldCallback = sub_8086204;
SetMainCallback1(CB1_Overworld);
CB2_ReturnToField();
@@ -1812,7 +1789,7 @@ static void InitCurrentFlashLevelScanlineEffect(void)
}
}
-static bool32 map_loading_iteration_3(u8 *state)
+static bool32 LoadMapInStepsLink(u8 *state)
{
switch (*state)
{
@@ -1820,47 +1797,47 @@ static bool32 map_loading_iteration_3(u8 *state)
InitOverworldBgs();
ScriptContext1_Init();
ScriptContext2_Disable();
- sub_80867C8();
+ ResetMirageTowerAndSaveBlockPtrs();
sub_80867D8();
(*state)++;
break;
case 1:
- mli0_load_map(1);
+ LoadMapFromWarp(TRUE);
(*state)++;
break;
case 2:
- sub_8086988(TRUE);
+ ResumeMap(TRUE);
(*state)++;
break;
case 3:
- sub_8086AE4();
- sub_80869DC();
- sub_8086B14();
+ OffsetCameraFocusByLinkPlayerId();
+ InitObjectEventsLink();
+ SpawnLinkPlayers();
SetCameraToTrackGuestPlayer();
(*state)++;
break;
case 4:
InitCurrentFlashLevelScanlineEffect();
InitOverworldGraphicsRegisters();
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
(*state)++;
break;
case 5:
- move_tilemap_camera_to_upper_left_corner();
+ ResetFieldCamera();
(*state)++;
break;
case 6:
- copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ CopyPrimaryTilesetToVram(gMapHeader.mapLayout);
(*state)++;
break;
case 7:
- copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ CopySecondaryTilesetToVram(gMapHeader.mapLayout);
(*state)++;
break;
case 8:
if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
- apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ LoadMapTilesetPalettes(gMapHeader.mapLayout);
(*state)++;
}
break;
@@ -1881,7 +1858,7 @@ static bool32 map_loading_iteration_3(u8 *state)
(*state)++;
break;
case 12:
- if (map_post_load_hook_exec())
+ if (RunFieldCallback())
(*state)++;
break;
case 13:
@@ -1891,51 +1868,51 @@ static bool32 map_loading_iteration_3(u8 *state)
return FALSE;
}
-static bool32 load_map_stuff(u8 *state, u32 a2)
+static bool32 LoadMapInStepsLocal(u8 *state, bool32 a2)
{
switch (*state)
{
case 0:
FieldClearVBlankHBlankCallbacks();
- mli0_load_map(a2);
+ LoadMapFromWarp(a2);
(*state)++;
break;
case 1:
- sub_80867C8();
+ ResetMirageTowerAndSaveBlockPtrs();
sub_80867D8();
(*state)++;
break;
case 2:
- sub_8086988(a2);
+ ResumeMap(a2);
(*state)++;
break;
case 3:
- mli4_mapscripts_and_other();
- sub_8086A80();
+ InitObjectEventsLocal();
+ SetCameraToTrackPlayer();
(*state)++;
break;
case 4:
InitCurrentFlashLevelScanlineEffect();
InitOverworldGraphicsRegisters();
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
(*state)++;
break;
case 5:
- move_tilemap_camera_to_upper_left_corner();
+ ResetFieldCamera();
(*state)++;
break;
case 6:
- copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ CopyPrimaryTilesetToVram(gMapHeader.mapLayout);
(*state)++;
break;
case 7:
- copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ CopySecondaryTilesetToVram(gMapHeader.mapLayout);
(*state)++;
break;
case 8:
if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
- apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ LoadMapTilesetPalettes(gMapHeader.mapLayout);
(*state)++;
}
break;
@@ -1953,7 +1930,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
(*state)++;
break;
case 12:
- if (map_post_load_hook_exec())
+ if (RunFieldCallback())
(*state)++;
break;
case 13:
@@ -1963,25 +1940,25 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
return FALSE;
}
-static bool32 sub_8086638(u8 *state)
+static bool32 ReturnToFieldLocal(u8 *state)
{
switch (*state)
{
case 0:
- sub_80867C8();
+ ResetMirageTowerAndSaveBlockPtrs();
sub_80867D8();
- sub_8086988(0);
+ ResumeMap(FALSE);
sub_8086A68();
- sub_8086A80();
+ SetCameraToTrackPlayer();
(*state)++;
break;
case 1:
- sub_8086860();
- sub_81D64C0();
+ InitViewGraphics();
+ TryLoadTrainerHillEReaderPalette();
(*state)++;
break;
case 2:
- if (map_post_load_hook_exec())
+ if (RunFieldCallback())
(*state)++;
break;
case 3:
@@ -1991,18 +1968,18 @@ static bool32 sub_8086638(u8 *state)
return FALSE;
}
-static bool32 map_loading_iteration_2_link(u8 *state)
+static bool32 ReturnToFieldLink(u8 *state)
{
switch (*state)
{
case 0:
FieldClearVBlankHBlankCallbacks();
- sub_80867C8();
+ ResetMirageTowerAndSaveBlockPtrs();
sub_80867D8();
(*state)++;
break;
case 1:
- sub_8086988(1);
+ ResumeMap(TRUE);
(*state)++;
break;
case 2:
@@ -2014,25 +1991,25 @@ static bool32 map_loading_iteration_2_link(u8 *state)
case 3:
InitCurrentFlashLevelScanlineEffect();
InitOverworldGraphicsRegisters();
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
(*state)++;
break;
case 4:
- move_tilemap_camera_to_upper_left_corner();
+ ResetFieldCamera();
(*state)++;
break;
case 5:
- copy_map_tileset1_to_vram(gMapHeader.mapLayout);
+ CopyPrimaryTilesetToVram(gMapHeader.mapLayout);
(*state)++;
break;
case 6:
- copy_map_tileset2_to_vram(gMapHeader.mapLayout);
+ CopySecondaryTilesetToVram(gMapHeader.mapLayout);
(*state)++;
break;
case 7:
if (FreeTempTileDataBuffersIfPossible() != TRUE)
{
- apply_map_tileset1_tileset2_palette(gMapHeader.mapLayout);
+ LoadMapTilesetPalettes(gMapHeader.mapLayout);
(*state)++;
}
break;
@@ -2053,7 +2030,7 @@ static bool32 map_loading_iteration_2_link(u8 *state)
(*state)++;
break;
case 12:
- if (map_post_load_hook_exec())
+ if (RunFieldCallback())
(*state)++;
break;
case 10:
@@ -2068,12 +2045,12 @@ static bool32 map_loading_iteration_2_link(u8 *state)
return FALSE;
}
-static void do_load_map_stuff_loop(u8 *state)
+static void DoMapLoadLoop(u8 *state)
{
- while (!load_map_stuff(state, 0));
+ while (!LoadMapInStepsLocal(state, FALSE));
}
-static void sub_80867C8(void)
+static void ResetMirageTowerAndSaveBlockPtrs(void)
{
ClearMirageTowerPulseBlend();
MoveSaveBlocks_ResetHeap();
@@ -2090,17 +2067,17 @@ static void sub_80867D8(void)
LoadOam();
}
-static void sub_8086860(void)
+static void InitViewGraphics(void)
{
InitCurrentFlashLevelScanlineEffect();
InitOverworldGraphicsRegisters();
- sub_8197200();
- mapdata_load_assets_to_gpu_and_full_redraw();
+ InitTextBoxGfxAndPrinters();
+ InitMapView();
}
static void InitOverworldGraphicsRegisters(void)
{
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
ResetTempTileDataBuffers();
SetGpuReg(REG_OFFSET_MOSAIC, 0);
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ);
@@ -2133,7 +2110,7 @@ static void InitOverworldGraphicsRegisters(void)
InitFieldMessageBox();
}
-static void sub_8086988(u32 a1)
+static void ResumeMap(bool32 a1)
{
ResetTasks();
ResetSpriteData();
@@ -2156,7 +2133,7 @@ static void sub_8086988(u32 a1)
TryStartMirageTowerPulseBlendEffect();
}
-static void sub_80869DC(void)
+static void InitObjectEventsLink(void)
{
gTotalCameraPixelOffsetX = 0;
gTotalCameraPixelOffsetY = 0;
@@ -2165,7 +2142,7 @@ static void sub_80869DC(void)
TryRunOnWarpIntoMapScript();
}
-static void mli4_mapscripts_and_other(void)
+static void InitObjectEventsLocal(void)
{
s16 x, y;
struct InitialPlayerAvatarState *player;
@@ -2189,9 +2166,9 @@ static void sub_8086A68(void)
RunOnReturnToFieldMapScript();
}
-static void sub_8086A80(void)
+static void SetCameraToTrackPlayer(void)
{
- gObjectEvents[gPlayerAvatar.objectEventId].trackedByCamera = 1;
+ gObjectEvents[gPlayerAvatar.objectEventId].trackedByCamera = TRUE;
InitCameraUpdateCallback(gPlayerAvatar.spriteId);
}
@@ -2206,17 +2183,17 @@ static void SetCameraToTrackGuestPlayer_2(void)
InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId));
}
-static void sub_8086AE4(void)
+static void OffsetCameraFocusByLinkPlayerId(void)
{
u16 x, y;
GetCameraFocusCoords(&x, &y);
- // This is a hack of some kind; it's undone in sub_8086B14, which is called
+ // This is a hack of some kind; it's undone in SpawnLinkPlayers, which is called
// soon after this function.
- sub_8088B3C(x + gLocalLinkPlayerId, y);
+ SetCameraFocusCoords(x + gLocalLinkPlayerId, y);
}
-static void sub_8086B14(void)
+static void SpawnLinkPlayers(void)
{
u16 i;
u16 x, y;
@@ -2294,7 +2271,7 @@ static void CheckRfuKeepAliveTimer(void)
static void ResetAllTradingStates(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
sPlayerTradingStates[i] = PLAYER_TRADING_STATE_IDLE;
}
@@ -2345,7 +2322,7 @@ static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlay
if (trainer->isLocalPlayer)
{
SetKeyInterceptCallback(KeyInterCB_DeferToEventScript);
- sub_8087584();
+ RunTerminateLinkScript();
}
return;
}
@@ -2763,7 +2740,7 @@ static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player)
otherPlayerPos.height = 0;
linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y);
- if (linkPlayerId != 4)
+ if (linkPlayerId != MAX_LINK_PLAYERS)
{
if (!player->isLocalPlayer)
return CableClub_EventScript_TooBusyToNotice;
@@ -2843,7 +2820,7 @@ static void InitMenuBasedScript(const u8 *script)
ScriptContext2_Enable();
}
-static void sub_8087584(void)
+static void RunTerminateLinkScript(void)
{
ScriptContext1_SetupScript(EventScript_TerminateLink);
ScriptContext2_Enable();
@@ -3212,7 +3189,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation);
- if (!linkPlayerObjEvent->movementMode != MOVEMENT_MODE_FREE)
+ if (linkPlayerObjEvent->movementMode == MOVEMENT_MODE_FREE)
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objEvent->range.as_byte));
else
StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(objEvent->range.as_byte));
diff --git a/src/party_menu.c b/src/party_menu.c
index d5bc6dfb6..f61cbc5e6 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -462,7 +462,7 @@ static void CB2_UpdatePartyMenu(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -489,7 +489,7 @@ static bool8 ShowPartyMenu(void)
case 0:
SetVBlankHBlankCallbacksToNull();
ResetVramOamAndBgCntRegs();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
@@ -1862,7 +1862,7 @@ u8 GetMonAilment(struct Pokemon *mon)
static void SetPartyMonsAllowedInMinigame(void)
{
- u16 *ptr;
+ s16 *ptr;
if (gPartyMenu.menuType == PARTY_MENU_TYPE_MINIGAME)
{
@@ -4951,9 +4951,9 @@ static void Task_DisplayLevelUpStatsPg2(u8 taskId)
static void DisplayLevelUpStatsPg1(u8 taskId)
{
- s16 *arrayPtr = sPartyMenuInternal->data;
+ u16 *arrayPtr = (u16*)sPartyMenuInternal->data;
- arrayPtr[12] = CreateLevelUpStatsWindow();
+ arrayPtr[12] = (u16)CreateLevelUpStatsWindow();
DrawLevelUpWindowPg1(arrayPtr[12], arrayPtr, &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
CopyWindowToVram(arrayPtr[12], 2);
ScheduleBgCopyTilemapToVram(2);
@@ -4961,7 +4961,7 @@ static void DisplayLevelUpStatsPg1(u8 taskId)
static void DisplayLevelUpStatsPg2(u8 taskId)
{
- s16 *arrayPtr = sPartyMenuInternal->data;
+ u16 *arrayPtr = (u16 *)sPartyMenuInternal->data;
DrawLevelUpWindowPg2(arrayPtr[12], &arrayPtr[6], TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
CopyWindowToVram(arrayPtr[12], 2);
diff --git a/src/player_pc.c b/src/player_pc.c
index fc0bd9f4c..2010d84f8 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -327,7 +327,7 @@ void PlayerPC(void)
static void InitPlayerPCMenu(u8 taskId)
{
- u16 *data;
+ s16 *data;
struct WindowTemplate windowTemplate;
data = gTasks[taskId].data;
@@ -346,7 +346,7 @@ static void InitPlayerPCMenu(u8 taskId)
static void PlayerPCProcessMenuInput(u8 taskId)
{
- u16 *data;
+ s16 *data;
s8 inputOptionId;
data = gTasks[taskId].data;
@@ -435,7 +435,7 @@ static void PlayerPC_TurnOff(u8 taskId)
static void InitItemStorageMenu(u8 taskId, u8 var)
{
- u16 *data;
+ s16 *data;
struct WindowTemplate windowTemplate;
data = gTasks[taskId].data;
@@ -548,7 +548,7 @@ static void ItemStorage_Toss(u8 taskId)
static void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss)
{
- u16 *data = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
data[3] = toss;
sub_816B4DC(taskId);
@@ -581,9 +581,9 @@ static void ItemStorage_SetItemAndMailCount(u8 taskId)
static void sub_816B4DC(u8 taskId)
{
- u16 *data = gTasks[taskId].data;
+ u16 *data = (u16 *)gTasks[taskId].data;
- ClearStdWindowAndFrameToTransparent(data[4], FALSE);
+ ClearStdWindowAndFrameToTransparent((u8)data[4], FALSE);
ClearWindowTilemap(data[4]);
RemoveWindow(data[4]);
ScheduleBgCopyTilemapToVram(0);
@@ -1380,7 +1380,7 @@ static void ItemStorage_DoItemToss(u8 taskId)
data = gTasks[taskId].data;
b = (playerPCItemPageInfo.cursorPos + playerPCItemPageInfo.itemsAbove);
- if (!ItemId_GetImportance(gSaveBlock1Ptr->pcItems[b].itemId))
+ if (ItemId_GetImportance(gSaveBlock1Ptr->pcItems[b].itemId) == 0)
{
CopyItemName(gSaveBlock1Ptr->pcItems[b].itemId, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, data[2], STR_CONV_MODE_LEFT_ALIGN, 3);
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 506c5e4c4..f654e0782 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -475,7 +475,7 @@ static void CB2_PokeblockMenu(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -507,7 +507,7 @@ static bool8 InitPokeblockMenu(void)
{
case 0:
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index fa29ca981..e15a005e6 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -518,7 +518,7 @@ static void CB2_PokeblockFeed(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -536,7 +536,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
case 0:
sPokeblockFeed = AllocZeroed(sizeof(*sPokeblockFeed));
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
diff --git a/src/pokedex.c b/src/pokedex.c
index 0541f3f2e..777cc52cd 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -5117,9 +5117,9 @@ static void Task_SelectSearchMenuItem(u8 taskId)
u16 *scrollOffset;
DrawOrEraseSearchParameterBox(FALSE);
- menuItem = gTasks[taskId].tMenuItem;
- cursorPos = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataCursorPos];
- scrollOffset = &gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset];
+ menuItem = (u16)gTasks[taskId].tMenuItem;
+ cursorPos = (u16*)&gTasks[taskId].data[sSearchOptions[menuItem].taskDataCursorPos];
+ scrollOffset = (u16*)&gTasks[taskId].data[sSearchOptions[menuItem].taskDataScrollOffset];
gTasks[taskId].tCursorPos = *cursorPos;
gTasks[taskId].tScrollOffset = *scrollOffset;
PrintSearchParameterText(taskId);
diff --git a/src/pokemon.c b/src/pokemon.c
index 6561e653b..44b5e55bb 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -4628,7 +4628,7 @@ void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
gBattleMons[battlerId].statStages[i] = DEFAULT_STAT_STAGE;
gBattleMons[battlerId].status2 = 0;
- sub_803FA70(battlerId);
+ UpdateSentPokesToOpponentValue(battlerId);
ClearTemporarySpeciesSpriteData(battlerId, FALSE);
}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 703371ba9..59dc0acce 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -2146,7 +2146,7 @@ static void VblankCb_PSS(void)
static void Cb2_PSS(void)
{
RunTasks();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
ScrollBackground();
sub_80CAA14();
AnimateSprites();
@@ -2214,7 +2214,7 @@ static void sub_80C7E98(void)
gReservedSpriteTileCount = 0x280;
sub_80D2A90(&sPSSData->unk_0020, sPSSData->unk_0028, 8);
gKeyRepeatStartDelay = 20;
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
sub_80D259C(3);
sub_80D2644(0, 1, gUnknown_0857239C, 8, 4);
sub_80D2770(0, 1, 0);
@@ -2360,11 +2360,11 @@ static void Cb_ShowPSS(u8 taskId)
{
case 0:
PlaySE(SE_PC_LOGIN);
- sub_80F9BCC(0x14, 0, 1);
+ ComputerScreenOpenEffect(20, 0, 1);
sPSSData->state++;
break;
case 1:
- if (!sub_80F9C1C())
+ if (!IsComputerScreenOpenEffectActive())
SetPSSCallback(Cb_MainPSS);
break;
}
@@ -3781,11 +3781,11 @@ static void Cb_OnCloseBoxPressed(u8 taskId)
}
break;
case 3:
- sub_80F9BF4(0x14, 0, 1);
+ ComputerScreenCloseEffect(20, 0, 1);
sPSSData->state++;
break;
case 4:
- if (!sub_80F9C30())
+ if (!IsComputerScreenCloseEffectActive())
{
sub_80CABE0();
gPlayerPartyCount = CalculatePlayerPartyCount();
@@ -3842,11 +3842,11 @@ static void Cb_OnBPressed(u8 taskId)
}
break;
case 3:
- sub_80F9BF4(0x14, 0, 0);
+ ComputerScreenCloseEffect(20, 0, 0);
sPSSData->state++;
break;
case 4:
- if (!sub_80F9C30())
+ if (!IsComputerScreenCloseEffectActive())
{
sub_80CABE0();
gPlayerPartyCount = CalculatePlayerPartyCount();
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index e8b30f773..a3efe09d7 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -1120,7 +1120,7 @@ static void MainCB2(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -1143,7 +1143,7 @@ static bool8 LoadGraphics(void)
case 0:
SetVBlankHBlankCallbacksToNull();
ResetVramOamAndBgCntRegs();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 1:
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index d902b7319..986a2d3a2 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -1244,7 +1244,7 @@ void DoRayquazaScene(u8 animId, bool8 onlyOneAnim, void (*callback)(void))
static void CB2_InitRayquazaScene(void)
{
SetVBlankHBlankCallbacksToNull();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
ScanlineEffect_Stop();
FreeAllSpritePalettes();
ResetPaletteFade();
@@ -1260,7 +1260,7 @@ static void CB2_RayquazaScene(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 075bc6aee..ad8b5693c 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -326,7 +326,7 @@ static void Task_RecordMixing_Main(u8 taskId)
VarSet(VAR_TEMP_0, 1);
gUnknown_03001130 = FALSE;
PrepareExchangePacket();
- CreateRecordMixingSprite();
+ CreateRecordMixingLights();
tState = 1;
data[10] = CreateTask(Task_MixingRecordsRecv, 80);
tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 81);
@@ -336,7 +336,7 @@ static void Task_RecordMixing_Main(u8 taskId)
{
tState = 2;
FlagSet(FLAG_SYS_MIX_RECORD);
- DestroyRecordMixingSprite();
+ DestroyRecordMixingLights();
DestroyTask(tSndEffTaskId);
}
break;
diff --git a/src/region_map.c b/src/region_map.c
index b8e07c835..de3b04cb2 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -1683,7 +1683,7 @@ void CB2_OpenFlyMap(void)
break;
case 3:
LoadUserWindowBorderGfx(0, 0x65, 0xd0);
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gMain.state++;
break;
case 4:
@@ -1746,7 +1746,7 @@ static void CB2_FlyMap(void)
sFlyMap->callback();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
}
static void SetFlyMapCallback(void callback(void))
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index 2756aa861..c948cde4c 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -467,7 +467,7 @@ void CB2_InitResetRtcScreen(void)
static void sub_809F048(void)
{
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates));
ScheduleBgCopyTilemapToVram(0);
@@ -483,7 +483,7 @@ static void CB2_ResetRtcScreen(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
diff --git a/src/roulette.c b/src/roulette.c
index 58e120cb5..1015687af 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -633,7 +633,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -643,7 +643,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -653,7 +653,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -663,7 +663,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -673,7 +673,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -683,7 +683,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -693,7 +693,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -703,7 +703,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -713,7 +713,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -723,7 +723,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -733,7 +733,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -743,7 +743,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 1,
.var06 = 0xFF,
.var07_0 = 8,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -753,7 +753,7 @@ static const struct UnkStruct1 gUnknown_085B6388[] =
.var05 = 10,
.var06 = 0xFF,
.var07_0 = 14,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
};
@@ -767,7 +767,7 @@ static const struct UnkStruct1 gUnknown_085B63F0[] =
.var05 = 30,
.var06 = 0xFF,
.var07_0 = 14,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -777,7 +777,7 @@ static const struct UnkStruct1 gUnknown_085B63F0[] =
.var05 = 30,
.var06 = 0xFF,
.var07_0 = 14,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
},
{
@@ -787,7 +787,7 @@ static const struct UnkStruct1 gUnknown_085B63F0[] =
.var05 = 30,
.var06 = 0xFF,
.var07_0 = 14,
- .var07_5 = 2,
+ .var07_5 = -2,
.var07_7 = 0
}
};
@@ -859,7 +859,7 @@ static void sub_8140388(void)
SetBgTilemapBuffer(1, gUnknown_0203AB88->tilemapBuffers[2]);
SetBgTilemapBuffer(2, gUnknown_0203AB88->tilemapBuffers[6]);
InitWindows(gUnknown_085B614C);
- sub_8197200();
+ InitTextBoxGfxAndPrinters();
gUnknown_0203AB8C = 0;
gUnknown_0203AB88->unk_397C = malloc_and_decompress(gUnknown_085B5DFC, &size);
}
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index a2a2acc8d..7c824e82d 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -349,7 +349,7 @@ static void VBlankCB_UpdateClockGraphics(void)
gMain.oamBuffer[0] = sClockOamData;
gMain.oamBuffer[0].x = 112;
- gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;;
+ gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;
if (gSaveFailedClockInfo[CLOCK_RUNNING] != FALSE)
{
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 4a7f4ea73..643809789 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -788,8 +788,8 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx)
{
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
- u16 x;
- u16 y;
+ s16 x;
+ s16 y;
PlayerGetDestCoords(&x, &y);
if (mapGroup == 0xFF && mapNum == 0xFF)
@@ -801,6 +801,7 @@ bool8 ScrCmd_warphole(struct ScriptContext *ctx)
return TRUE;
}
+// RS mossdeep gym warp, unused in Emerald
bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
{
u8 mapGroup = ScriptReadByte(ctx);
@@ -810,7 +811,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
u16 y = VarGet(ScriptReadHalfword(ctx));
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
- DoTeleportWarp();
+ DoTeleportTileWarp();
ResetInitialPlayerAvatarState();
return TRUE;
}
diff --git a/src/secret_base.c b/src/secret_base.c
index 83626710f..3f69e0419 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -964,7 +964,7 @@ static void HandleRegistryMenuInput(u8 taskId)
data = gTasks[taskId].data;
input = ListMenu_ProcessInput(data[5]);
- ListMenuGetScrollAndRow(data[5], &data[2], &data[1]);
+ ListMenuGetScrollAndRow(data[5], (u16 *)&data[2], (u16 *)&data[1]);
switch (input)
{
case LIST_NOTHING_CHOSEN:
@@ -1045,10 +1045,10 @@ void DeleteRegistry_Yes_Callback(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
- DestroyListMenuTask(data[5], &data[2], &data[1]);
+ DestroyListMenuTask((u8)data[5], (u16 *)&data[2], (u16 *)&data[1]);
gSaveBlock1Ptr->secretBases[data[4]].registryStatus = 0;
BuildRegistryMenuItems(taskId);
- sub_812225C(&data[2], &data[1], data[3], data[0]);
+ sub_812225C((u16 *)&data[2], (u16 *)&data[1], (u16)data[3], (u16)data[0]);
FinalizeRegistryMenu(taskId);
gTasks[taskId].func = HandleRegistryMenuInput;
}
@@ -1062,7 +1062,7 @@ static void DeleteRegistry_No(u8 taskId)
{
s16 *data = gTasks[taskId].data;
ClearDialogWindowAndFrame(0, 0);
- DestroyListMenuTask(data[5], &data[2], &data[1]);
+ DestroyListMenuTask((u8)data[5], (u16 *)&data[2], (u16 *)&data[1]);
FinalizeRegistryMenu(taskId);
gTasks[taskId].func = HandleRegistryMenuInput;
}
diff --git a/src/shop.c b/src/shop.c
index 837ba1bca..4fc44beee 100755
--- a/src/shop.c
+++ b/src/shop.c
@@ -416,7 +416,7 @@ static void CB2_BuyMenu(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
@@ -446,7 +446,7 @@ static void CB2_InitBuyMenu(void)
ResetPaletteFade();
ResetSpriteData();
ResetTasks();
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
gShopDataPtr = AllocZeroed(sizeof(struct ShopData));
gShopDataPtr->scrollIndicatorsTaskId = 0xFF;
gShopDataPtr->itemSpriteIds[0] = 0xFF;
diff --git a/src/slot_machine.c b/src/slot_machine.c
index d1cb05b18..8669b543b 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "constants/songs.h"
#include "overworld.h"
#include "field_effect.h"
#include "random.h"
@@ -18,23 +17,225 @@
#include "bg.h"
#include "gpu_regs.h"
#include "coins.h"
+#include "strings.h"
#include "tv.h"
#include "text_window.h"
-#include "constants/rgb.h"
#include "main_menu.h"
#include "bg.h"
#include "window.h"
#include "constants/coins.h"
+#include "constants/rgb.h"
#include "constants/slot_machine.h"
+#include "constants/songs.h"
-// Text
-extern const u8 gText_YouDontHaveThreeCoins[];
-extern const u8 gText_QuitTheGame[];
-extern const u8 gText_YouveGot9999Coins[];
-extern const u8 gText_YouveRunOutOfCoins[];
-extern const u8 gText_ReelTimeHelp[];
-
-struct SlotMachineEwramStruct
+#define SLOTMACHINE_GFX_TILES 233
+#define MAX_BET 3
+
+#define SYMBOLS_PER_REEL 21
+#define REEL_SYMBOL_HEIGHT 24
+
+// Lucky Flags
+#define LUCKY_BIAS_REPLAY (1 << 0)
+#define LUCKY_BIAS_CHERRY (1 << 1)
+#define LUCKY_BIAS_LOTAD (1 << 2)
+#define LUCKY_BIAS_AZURILL (1 << 3)
+#define LUCKY_BIAS_POWER (1 << 4)
+#define LUCKY_BIAS_REELTIME (1 << 5)
+#define LUCKY_BIAS_MIXED_777 (1 << 6)
+#define LUCKY_BIAS_777 (1 << 7)
+
+enum {
+ GFXTAG_7_RED,
+ GFXTAG_7_BLUE,
+ GFXTAG_AZURILL,
+ GFXTAG_LOTAD,
+ GFXTAG_CHERRY,
+ GFXTAG_POWER,
+ GFXTAG_REPLAY,
+ GFXTAG_NUM_0,
+ GFXTAG_NUM_1,
+ GFXTAG_NUM_2,
+ GFXTAG_NUM_3,
+ GFXTAG_NUM_4,
+ GFXTAG_NUM_5,
+ GFXTAG_NUM_6,
+ GFXTAG_NUM_7,
+ GFXTAG_NUM_8,
+ GFXTAG_NUM_9,
+ GFXTAG_REEL_BG,
+ GFXTAG_STOP,
+ GFXTAG_BONUS,
+ GFXTAG_BIG,
+ GFXTAG_REG,
+};
+
+#define GFXTAG_SYMBOLS_START (GFXTAG_7_RED)
+#define GFXTAG_NUMBERS_START (GFXTAG_NUM_0)
+
+enum {
+ PALTAG_REEL,
+ PALTAG_REEL_TIME_PIKACHU,
+ PALTAG_REEL_TIME_MISC,
+ PALTAG_REEL_TIME_MACHINE,
+ PALTAG_MISC,
+ PALTAG_EXPLOSION,
+ PALTAG_DIG_DISPLAY,
+ PALTAG_PIKA_AURA,
+};
+
+enum {
+ MATCHED_1CHERRY,
+ MATCHED_2CHERRY,
+ MATCHED_REPLAY,
+ MATCHED_LOTAD,
+ MATCHED_AZURILL,
+ MATCHED_POWER,
+ MATCHED_777_MIXED,
+ MATCHED_777_RED,
+ MATCHED_777_BLUE,
+ MATCHED_NONE,
+};
+
+enum {
+ MATCH_MIDDLE_ROW,
+ MATCH_TOP_ROW,
+ MATCH_BOTTOM_ROW,
+ MATCH_NWSE_DIAG,
+ MATCH_NESW_DIAG,
+ NUM_MATCH_LINES,
+};
+
+enum {
+ LEFT_REEL,
+ MIDDLE_REEL,
+ RIGHT_REEL,
+ NUM_REELS,
+};
+
+enum {
+ SLOT_ACTION_UNFADE,
+ SLOT_ACTION_WAIT_FADE,
+ SLOT_ACTION_READY_NEW_SPIN,
+ SLOT_ACTION_READY_NEW_RT_SPIN,
+ SLOT_ACTION_ASK_INSERT_BET,
+ SLOT_ACTION_BET_INPUT,
+ SLOT_ACTION_MSG_NEED_3_COINS,
+ SLOT_ACTION_WAIT_MSG_NEED_3_COINS,
+ SLOT_ACTION_WAIT_INFO_BOX,
+ SLOT_ACTION_START_SPIN,
+ SLOT_ACTION_START_RT_SPIN,
+ SLOT_ACTION_SET_LUCKY_SPINS,
+ SLOT_ACTION_AWAIT_REEL_STOP,
+ SLOT_ACTION_AWAIT_ALL_REELS_STOP,
+ SLOT_ACTION_CHECK_MATCHES,
+ SLOT_ACTION_WAIT_PAYOUT,
+ SLOT_ACTION_END_PAYOUT,
+ SLOT_ACTION_MATCHED_POWER,
+ SLOT_ACTION_WAIT_RT_ANIM,
+ SLOT_ACTION_RESET_BET_TILES,
+ SLOT_ACTION_NO_MATCHES,
+ SLOT_ACTION_ASK_QUIT,
+ SLOT_ACTION_HANDLE_QUIT_INPUT,
+ SLOT_ACTION_MSG_MAX_COINS,
+ SLOT_ACTION_WAIT_MSG_MAX_COINS,
+ SLOT_ACTION_MSG_NO_MORE_COINS,
+ SLOT_ACTION_WAIT_MSG_NO_MORE_COINS,
+ SLOT_ACTION_END,
+ SLOT_ACTION_FREE,
+};
+
+enum {
+ REEL_ACTION_STILL,
+ REEL_ACTION_SPIN,
+ REEL_ACTION_STOP,
+ REEL_ACTION_STOP_MOVE,
+ REEL_ACTION_STOP_SHAKE,
+};
+
+#define DIG_SPRITE_DUMMY {255, 0, 0}
+
+// Sprite template IDs for the digital display in the right panel
+enum {
+ DIG_SPRITE_REEL,
+ DIG_SPRITE_TIME,
+ DIG_SPRITE_INSERT,
+ DIG_SPRITE_WIN,
+ DIG_SPRITE_LOSE,
+ DIG_SPRITE_A_BUTTON,
+ DIG_SPRITE_SMOKE,
+ DIG_SPRITE_NUMBER,
+ DIG_SPRITE_POKE_BALL,
+ DIG_SPRITE_D_PAD,
+ DIG_SPRITE_STOP_S,
+ DIG_SPRITE_STOP_T,
+ DIG_SPRITE_STOP_O,
+ DIG_SPRITE_STOP_P,
+ DIG_SPRITE_BONUS_B,
+ DIG_SPRITE_BONUS_O,
+ DIG_SPRITE_BONUS_N,
+ DIG_SPRITE_BONUS_U,
+ DIG_SPRITE_BONUS_S,
+ DIG_SPRITE_BIG_B,
+ DIG_SPRITE_BIG_I,
+ DIG_SPRITE_BIG_G,
+ DIG_SPRITE_REG_R,
+ DIG_SPRITE_REG_E,
+ DIG_SPRITE_REG_G,
+ DIG_SPRITE_EMPTY,
+ NUM_DIG_DISPLAY_SPRITES
+};
+
+// IDs used by the digital display to set coords and callbacks for its sprites
+enum {
+ DIG_DISPINFO_INSERT,
+ DIG_DISPINFO_STOP_S,
+ DIG_DISPINFO_STOP_T,
+ DIG_DISPINFO_STOP_O,
+ DIG_DISPINFO_STOP_P,
+ DIG_DISPINFO_A_BUTTON_STOP,
+ DIG_DISPINFO_POKE_BALL_ROCKING,
+ DIG_DISPINFO_WIN,
+ DIG_DISPINFO_LOSE,
+ DIG_DISPINFO_SMOKE_NW,
+ DIG_DISPINFO_SMOKE_NE,
+ DIG_DISPINFO_SMOKE_SW,
+ DIG_DISPINFO_SMOKE_SE,
+ DIG_DISPINFO_REEL,
+ DIG_DISPINFO_TIME,
+ DIG_DISPINFO_NUMBER,
+ DIG_DISPINFO_DPAD,
+ DIG_DISPINFO_POKE_BALL_SHINING,
+ DIG_DISPINFO_REG_R,
+ DIG_DISPINFO_REG_E,
+ DIG_DISPINFO_REG_G,
+ DIG_DISPINFO_REG_BONUS_B,
+ DIG_DISPINFO_REG_BONUS_O,
+ DIG_DISPINFO_REG_BONUS_N,
+ DIG_DISPINFO_REG_BONUS_U,
+ DIG_DISPINFO_REG_BONUS_S,
+ DIG_DISPINFO_BIG_B,
+ DIG_DISPINFO_BIG_I,
+ DIG_DISPINFO_BIG_G,
+ DIG_DISPINFO_BIG_BONUS_B,
+ DIG_DISPINFO_BIG_BONUS_O,
+ DIG_DISPINFO_BIG_BONUS_N,
+ DIG_DISPINFO_BIG_BONUS_U,
+ DIG_DISPINFO_BIG_BONUS_S,
+ DIG_DISPINFO_A_BUTTON_START
+};
+
+// IDs for digital display "scenes", i.e. each of the screens it can show made up of sprites
+enum {
+ DIG_DISPLAY_INSERT_BET,
+ DIG_DISPLAY_STOP_REEL,
+ DIG_DISPLAY_WIN,
+ DIG_DISPLAY_LOSE,
+ DIG_DISPLAY_REEL_TIME,
+ DIG_DISPLAY_BONUS_REG,
+ DIG_DISPLAY_BONUS_BIG
+};
+
+struct SlotMachine
{
/*0x00*/ u8 state;
/*0x01*/ u8 machineId;
@@ -42,11 +243,11 @@ struct SlotMachineEwramStruct
/*0x03*/ u8 luckyGame;
/*0x04*/ u8 luckyFlags;
/*0x05*/ u8 reelTimeDraw;
- /*0x06*/ u8 luckySpinsLeft; // tentative
+ /*0x06*/ u8 isLuckySpin;
/*0x07*/ u8 biasTag;
/*0x08*/ u16 matchedSymbols;
- /*0x0A*/ u8 fairRollsLeft; // only happens if you win reeltime
- /*0x0B*/ u8 fairRollsUsed;
+ /*0x0A*/ u8 reelTimeSpinsLeft;
+ /*0x0B*/ u8 reelTimeSpinsUsed;
/*0x0C*/ s16 coins;
/*0x0E*/ s16 payout;
/*0x10*/ s16 netCoinLoss; // coins lost to machine (but never goes below 0)
@@ -55,26 +256,26 @@ struct SlotMachineEwramStruct
/*0x16*/ s16 reeltimePosition;
/*0x18*/ s16 currReel;
/*0x1A*/ s16 reelIncrement; // speed of reel
- /*0x1C*/ s16 reelPixelOffsets[3];
- /*0x22*/ u16 reelPixelOffsetsWhileStopping[3];
- /*0x28*/ s16 reelPositions[3];
- /*0x2E*/ s16 reelExtraTurns[3];
- /*0x34*/ s16 winnerRows[3];
- /*0x3A*/ u8 slotReelTasks[3];
- /*0x3D*/ u8 unkTaskPointer3D;
- /*0x3E*/ u8 unkTaskPointer3E;
- /*0x3F*/ u8 reelTimeSprite3F;
- /*0x40*/ u8 unk40;
- /*0x41*/ u8 unk41;
- /*0x42*/ u8 unk42;
- /*0x43*/ u8 unk43;
- /*0x44*/ u8 unk44[5];
- /*0x49*/ u8 unk49[2];
- /*0x49*/ u8 unk4B[3];
- /*0x4E*/ u8 unk4E[2];
- /*0x50*/ u8 reelTimeSprites1[2];
- /*0x52*/ u8 reelTimeSprites2[2];
- /*0x54*/ u8 unk54[4];
+ /*0x1C*/ s16 reelPixelOffsets[NUM_REELS];
+ /*0x22*/ u16 reelPixelOffsetsWhileStopping[NUM_REELS];
+ /*0x28*/ s16 reelPositions[NUM_REELS];
+ /*0x2E*/ s16 reelExtraTurns[NUM_REELS];
+ /*0x34*/ s16 winnerRows[NUM_REELS];
+ /*0x3A*/ u8 slotReelTasks[NUM_REELS];
+ /*0x3D*/ u8 digDisplayTaskId;
+ /*0x3E*/ u8 pikaPowerBoltTaskId;
+ /*0x3F*/ u8 reelTimePikachuSpriteId;
+ /*0x40*/ u8 reelTimeNumberGapSpriteId;
+ /*0x41*/ u8 reelTimeExplosionSpriteId;
+ /*0x42*/ u8 reelTimeBrokenMachineSpriteId;
+ /*0x43*/ u8 reelTimeSmokeSpriteId;
+ /*0x44*/ u8 flashMatchLineSpriteIds[NUM_MATCH_LINES];
+ /*0x49*/ u8 reelTimeMachineSpriteIds[2];
+ /*0x49*/ u8 reelTimeNumberSpriteIds[3];
+ /*0x4E*/ u8 reelTimeShadowSpriteIds[2];
+ /*0x50*/ u8 reelTimeBoltSpriteIds[2];
+ /*0x52*/ u8 reelTimePikachuAuraSpriteIds[2];
+ /*0x54*/ u8 reelTimeDuckSpriteIds[4];
/*0x58*/ u16 win0h;
/*0x5a*/ u16 win0v;
/*0x5c*/ u16 winIn;
@@ -83,66 +284,62 @@ struct SlotMachineEwramStruct
/*0x64*/ MainCallback prevMainCb;
};
-struct UnkStruct1
+struct DigitalDisplaySprite
{
- /*0x00*/ u8 unk00;
- /*0x01*/ u8 unk01;
- /*0x02*/ s16 unk02;
+ /*0x00*/ u8 spriteTemplateId;
+ /*0x01*/ u8 dispInfoId;
+ /*0x02*/ s16 spriteId;
};
-#define SLOTMACHINE_GFX_TILES 233
-
static void CB2_SlotMachineSetup(void);
-static void CB2_SlotMachineLoop(void);
-static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb);
-static void SlotMachineDummyTask(u8 taskId);
-static void SlotMachineSetup_0_0(void);
-static void SlotMachineSetup_6_2(void);
-static void SlotMachineSetup_1_0(void);
-static void SlotMachineSetup_2_0(void);
-static void SlotMachineSetup_2_1(void);
-static void SlotMachineSetup_0_1(void);
-static void SlotMachineSetup_3_0(void);
-static void SlotMachineSetup_4_0(void);
-static void SlotMachineSetup_5_0(void);
-static void SlotMachineSetup_6_0(void);
-static void SlotMachineSetup_6_1(void);
-static void SlotMachineSetup_8_0(void);
-static void SlotMachineSetup_9_0(void);
-static void SlotMachineSetup_10_0(void);
-static void SlotMachineSetupGameplayTasks(void);
-static void GameplayTasks_Slots(void);
-static void sub_8104DA4(void);
-static void RunSlotActions(u8 taskId);
-static bool8 SlotAction_UnfadeScreen(struct Task *task);
-static bool8 SlotAction_WaitForUnfade(struct Task *task);
-static bool8 SlotAction_SetSlotMachineVars(struct Task *task);
-static bool8 SlotAction3(struct Task *task);
-static bool8 SlotAction4(struct Task *task);
-static bool8 SlotAction_AwaitPlayerInput(struct Task *task);
-static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task);
-static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task);
-static bool8 SlotAction_GivingInformation(struct Task *task);
-static bool8 SlotAction9(struct Task *task);
-static bool8 SlotAction10(struct Task *task);
-static bool8 SlotAction_SetLuckySpins(struct Task *task);
-static bool8 SlotAction_AwaitReelStop(struct Task *task);
-static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task);
-static bool8 SlotAction_CheckMatches(struct Task *task);
-static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task);
-static bool8 SlotAction_EndOfRoll(struct Task *task);
-static bool8 SlotAction_MatchedPower(struct Task *task);
-static bool8 SlotAction18(struct Task *task);
-static bool8 SlotAction_Loop(struct Task *task);
-static bool8 SlotAction_NoMatches(struct Task *task);
-static bool8 SlotAction_PrintQuitTheGame(struct Task *task);
-static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task);
-static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task);
-static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task);
-static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task);
-static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task);
-static bool8 SlotAction_EndGame(struct Task *task);
-static bool8 SlotAction_FreeDataStructures(struct Task *task);
+static void CB2_SlotMachine(void);
+static void PlaySlotMachine_Internal(u8, MainCallback);
+static void SlotMachineDummyTask(u8);
+static void SlotMachineSetup_InitBgsWindows(void);
+static void SlotMachineSetup_InitVRAM(void);
+static void SlotMachineSetup_InitOAM(void);
+static void SlotMachineSetup_InitGpuRegs(void);
+static void SlotMachineSetup_InitSlotMachineStruct(void);
+static void SlotMachineSetup_InitPalsSpritesTasks(void);
+static void SlotMachineSetup_InitTilemaps(void);
+static void SlotMachineSetup_LoadGfxAndTilemaps(void);
+static void SlotMachineSetup_InitVBlank(void);
+static void AllocDigitalDisplayGfx(void);
+static void SetDigitalDisplayImagePtrs(void);
+static void CreateSlotMachineSprites(void);
+static void CreateGameplayTasks(void);
+static void CreateSlotMachineTask(void);
+static void DestroyDigitalDisplayScene(void);
+static void Task_SlotMachine(u8);
+static bool8 SlotAction_UnfadeScreen(struct Task *);
+static bool8 SlotAction_WaitForUnfade(struct Task *);
+static bool8 SlotAction_ReadyNewSpin(struct Task *);
+static bool8 SlotAction_ReadyNewReelTimeSpin(struct Task *);
+static bool8 SlotAction_AskInsertBet(struct Task *);
+static bool8 SlotAction_HandleBetInput(struct Task *);
+static bool8 SlotAction_PrintMsg_Need3Coins(struct Task *);
+static bool8 SlotAction_WaitMsg_Need3Coins(struct Task *);
+static bool8 SlotAction_WaitForInfoBox(struct Task *);
+static bool8 SlotAction_StartSpin(struct Task *);
+static bool8 SlotAction_StartReelTimeSpin(struct Task *);
+static bool8 SlotAction_SetLuckySpins(struct Task *);
+static bool8 SlotAction_AwaitReelStop(struct Task *);
+static bool8 SlotAction_WaitForAllReelsToStop(struct Task *);
+static bool8 SlotAction_CheckMatches(struct Task *);
+static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *);
+static bool8 SlotAction_EndPayout(struct Task *);
+static bool8 SlotAction_MatchedPower(struct Task *);
+static bool8 SlotAction_WaitReelTimeAnim(struct Task *);
+static bool8 SlotAction_ResetBetTiles(struct Task *);
+static bool8 SlotAction_NoMatches(struct Task *);
+static bool8 SlotAction_AskQuit(struct Task *);
+static bool8 SlotAction_HandleQuitInput(struct Task *);
+static bool8 SlotAction_PrintMsg_9999Coins(struct Task *);
+static bool8 SlotAction_WaitMsg_9999Coins(struct Task *);
+static bool8 SlotAction_PrintMsg_NoMoreCoins(struct Task *);
+static bool8 SlotAction_WaitMsg_NoMoreCoins(struct Task *);
+static bool8 SlotAction_EndGame(struct Task *);
+static bool8 SlotAction_FreeDataStructures(struct Task *);
static void DrawLuckyFlags(void);
static void SetLuckySpins(void);
static bool8 IsThisRoundLucky(void);
@@ -153,33 +350,33 @@ static void CheckMatch(void);
static void CheckMatch_CenterRow(void);
static void CheckMatch_TopAndBottom(void);
static void CheckMatch_Diagonals(void);
-static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3);
+static u8 GetMatchFromSymbols(u8, u8, u8);
static void AwardPayout(void);
-static void RunAwardPayoutActions(u8 taskId);
+static void RunAwardPayoutActions(u8);
static bool8 IsFinalTask_RunAwardPayoutActions(void);
-static bool8 AwardPayoutAction0(struct Task *task);
-static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task);
-static bool8 AwardPayoutAction_FreeTask(struct Task *task);
-static u8 GetTagAtRest(u8 x, s16 y);
-static void GameplayTask_StopSlotReel(void);
-static void ReelTasks_SetUnkTaskData(u8 a0);
-static void sub_8102E1C(u8 a0);
-static bool8 IsSlotReelMoving(u8 a0);
-static void RunSlotReelActions(u8 taskId);
-static bool8 SlotReelAction_StayStill(struct Task *task);
-static bool8 SlotReelAction_Spin(struct Task *task);
-static bool8 SlotReelAction_DecideWhereToStop(struct Task *task);
-static bool8 SlotReelAction_MoveToStop(struct Task *task);
-static bool8 SlotReelAction_OscillatingStop(struct Task *task);
+static bool8 AwardPayoutAction0(struct Task *);
+static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *);
+static bool8 AwardPayoutAction_FreeTask(struct Task *);
+static u8 GetTagAtRest(u8, s16);
+static void CreateSlotReelTasks(void);
+static void SpinSlotReel(u8);
+static void StopSlotReel(u8);
+static bool8 IsSlotReelMoving(u8);
+static void Task_RunSlotReelActions(u8);
+static bool8 SlotReelAction_StayStill(struct Task *);
+static bool8 SlotReelAction_Spin(struct Task *);
+static bool8 SlotReelAction_DecideWhereToStop(struct Task *);
+static bool8 SlotReelAction_MoveToStop(struct Task *);
+static bool8 SlotReelAction_OscillatingStop(struct Task *);
static bool8 DecideReelTurns_BiasTag_Reel1(void);
-static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 a0, u8 a1);
-static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 a0, u8 a1);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8, u8);
+static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8, u8);
static bool8 DecideReelTurns_BiasTag_Reel2(void);
static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void);
static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void);
static bool8 DecideReelTurns_BiasTag_Reel3(void);
-static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 a0);
-static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 a0);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8);
+static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8);
static void DecideReelTurns_NoBiasTag_Reel1(void);
static void DecideReelTurns_NoBiasTag_Reel2(void);
static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void);
@@ -189,243 +386,238 @@ static void DecideReelTurns_NoBiasTag_Reel3(void);
static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void);
static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void);
static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void);
-static void sub_8103C14(u8 a0);
-static void sub_8103C48(u8 taskId);
-static void LoadBetTiles(u8 a0);
-static void sub_8103C78(struct Task *task, u8 taskId);
-static void sub_8103CAC(struct Task *task, u8 taskId);
-static void sub_8103CC8(struct Task *task, u8 taskId);
-static void sub_8103D8C(u8 a0);
-static void sub_8103DC8(void);
-static void sub_8103E04(u8 a0);
-static bool8 sub_8103E38(void);
-static bool8 sub_8103E7C(void);
-static bool8 sub_8103EAC(u8 spriteId);
-static void sub_8103EE4(struct Sprite *sprite);
-static void sub_8103F70(void);
-static bool8 sub_8103FA0(void);
-static void sub_8103FE8_(u8 taskId);
-static void GameplayTask_PikaPower(void);
-static void DisplayPikaPower(u8 pikaPower);
-static bool8 sub_81040C8(void);
-static void sub_81040E8(u8 taskId);
-static void nullsub_68(struct Task *task);
-static void sub_810411C(struct Task *task);
-static void sub_8104144(struct Task *task);
-static void sub_81041AC(struct Task *task);
-static void ClearTaskDataFields_2orHigher(struct Task *task);
-static void sub_810423C(u8 pikaPower);
-static void BeginReeltime(void);
-static bool8 IsFinalTask_RunReelTimeActions(void);
-static void RunReeltimeActions(u8 taskId);
-static void ReeltimeAction0(struct Task *task);
-static void ReeltimeAction1(struct Task *task);
-static void ReeltimeAction2(struct Task *task);
-static void ReeltimeAction3(struct Task *task);
-static void ReeltimeAction4(struct Task *task);
-static void ReeltimeAction5(struct Task *task);
-static void ReeltimeAction6(struct Task *task);
-static void ReelTimeAction_LandOnOutcome(struct Task *task);
-static void ReeltimeAction8(struct Task *task);
-static void ReeltimeAction9(struct Task *task);
-static void ReeltimeAction10(struct Task *task);
-static void ReeltimeAction11(struct Task *task);
-static void ReeltimeAction12(struct Task *task);
-static void ReeltimeAction13(struct Task *task);
-static void ReeltimeAction14(struct Task *task);
-static void ReeltimeAction15(struct Task *task);
-static void ReeltimeAction16(struct Task *task);
-static void ReeltimeAction17(struct Task *task);
-static void sub_8104A40(s16 a0, s16 a1);
-static void sub_8104A88(s16 a0);
-static void OpenInfoBox(u8 a0);
+static void PressStopReelButton(u8);
+static void Task_PressStopReelButton(u8);
+static void LightenBetTiles(u8);
+static void StopReelButton_Press(struct Task *, u8);
+static void StopReelButton_Wait(struct Task *, u8);
+static void StopReelButton_Unpress(struct Task *, u8);
+static void DarkenBetTiles(u8);
+static void CreateInvisibleFlashMatchLineSprites(void);
+static void FlashMatchLine(u8);
+static bool8 IsMatchLineDoneFlashingBeforePayout(void);
+static bool8 TryStopMatchLinesFlashing(void);
+static bool8 TryStopMatchLineFlashing(u8);
+static void SpriteCB_FlashMatchingLines(struct Sprite *);
+static void FlashSlotMachineLights(void);
+static bool8 TryStopSlotMachineLights(void);
+static void Task_FlashSlotMachineLights(u8);
+static void CreatePikaPowerBoltTask(void);
+static void AddPikaPowerBolt(u8);
+static bool8 IsPikaPowerBoltAnimating(void);
+static void Task_CreatePikaPowerBolt(u8);
+static void PikaPowerBolt_Idle(struct Task *);
+static void PikaPowerBolt_AddBolt(struct Task *);
+static void PikaPowerBolt_WaitAnim(struct Task *);
+static void PikaPowerBolt_ClearAll(struct Task *);
+static void ResetPikaPowerBoltTask(struct Task *);
+static void LoadPikaPowerMeter(u8 );
+static void BeginReelTime(void);
+static bool8 IsReelTimeTaskDone(void);
+static void Task_ReelTime(u8 );
+static void ReelTime_Init(struct Task *);
+static void ReelTime_WindowEnter(struct Task *);
+static void ReelTime_WaitStartPikachu(struct Task *);
+static void ReelTime_PikachuSpeedUp1(struct Task *);
+static void ReelTime_PikachuSpeedUp2(struct Task *);
+static void ReelTime_WaitReel(struct Task *);
+static void ReelTime_CheckExplode(struct Task *);
+static void ReelTime_LandOnOutcome(struct Task *);
+static void ReelTime_PikachuReact(struct Task *);
+static void ReelTime_WaitClearPikaPower(struct Task *);
+static void ReelTime_CloseWindow(struct Task *);
+static void ReelTime_DestroySprites(struct Task *);
+static void ReelTime_SetReelIncrement(struct Task *);
+static void ReelTime_EndSuccess(struct Task *);
+static void ReelTime_ExplodeMachine(struct Task *);
+static void ReelTime_WaitExplode(struct Task *);
+static void ReelTime_WaitSmoke(struct Task *);
+static void ReelTime_EndFailure(struct Task *);
+static void LoadReelTimeWindowTilemap(s16, s16);
+static void ClearReelTimeWindowTilemap(s16);
+static void OpenInfoBox(u8);
static bool8 IsInfoBoxClosed(void);
-static void RunInfoBoxActions(u8 taskId);
-static void InfoBox_FadeIn(struct Task *task);
-static void InfoBox_WaitForFade(struct Task *task);
-static void InfoBox_8104B80(struct Task *task);
-static void InfoBox_AwaitPlayerInput(struct Task *task);
-static void InfoBox_AddText(struct Task *task);
-static void InfoBox_8104BFC(struct Task *task);
-static void InfoBox_812DE14(struct Task *task);
-static void InfoBox_812DE30(struct Task *task);
-static void InfoBox_FreeTask(struct Task *task);
-static void sub_8104C5C(void);
-static void sub_8104CAC(u8 arg0);
-static bool8 sub_8104E18(void);
-static void nullsub_69(struct Task *task);
-static void sub_8104E74_(u8 taskId);
-static void sub_8104EA8(void);
-static void sub_8104F8C(void);
-static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3);
-static void sub_81050C4(void);
-static void sub_8105100(void);
-static void sub_810514C(void);
-static void sub_81051C0(void);
-static void sub_8105284_(void);
-static void sub_81052EC(void);
-static void sub_81053A0(void);
-static void sub_810545C(void);
-static void sub_81054B8(void);
-static void sub_8105524(void);
-static void sub_8105554(void);
-static void CreateReelTimeSprites1(void);
-static void sub_8105688(s16 a0);
-static void sub_81056C0(void);
-static void CreateReelTimeSprite2(void);
-static void sub_81057E8(s16 a0);
-static void sub_8105804(void);
-static void sub_8105854(void);
-static void sub_81058A0(void);
-static void sub_81058C4(void);
-static void sub_81059B8(void);
-static void sub_81059E8(void);
-static bool8 sub_8105ACC(void);
-static void sub_8105AEC(void);
-static u8 sub_8105B1C(s16 x, s16 y);
-static void sub_8105B88(u8 spriteId);
-static u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4);
-static void sub_81063C0(void);
-static void sub_8106404(void);
-static void sub_8106448(void);
-static void sub_81064B8(void);
-static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
-static void sub_81065DC(void);
-static void sub_812F958(void);
-static void sub_812F968(void);
-static void LoadSlotMachineWheelOverlay(void);
-static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
-static void sub_8105C64(struct Sprite *sprite);
-static void sub_8105F54(struct Sprite *sprite);
-static void sub_8105F9C(struct Sprite *sprite);
-static void sub_8105EB4(struct Sprite *sprite);
-static void sub_8105C6C(struct Sprite *sprite);
-static void sub_8105CF0(struct Sprite *sprite);
-static void sub_8105D08(struct Sprite *sprite);
-static void sub_8105D20(struct Sprite *sprite);
-static void sub_8105D3C(struct Sprite *sprite);
-static void sub_8105DA4(struct Sprite *sprite);
-static void sub_8105E08(struct Sprite *sprite);
-static void sub_8106058(struct Sprite *sprite);
-static void sub_81060FC(struct Sprite *sprite);
-static void sub_81061C8(struct Sprite *sprite);
-static void sub_8106230(struct Sprite *sprite);
-static void sub_810639C(void);
-static void sub_8106364(void);
-static void sub_8106370(void);
-static void nullsub_70(void);
-static void sub_8104F18(struct Sprite *sprite);
-static void sub_810506C(struct Sprite *sprite);
-static void sub_8105170(struct Sprite *sprite);
-static void sub_810535C(struct Sprite *sprite);
-static void sub_810562C(struct Sprite *sprite);
-static void sub_8105784(struct Sprite *sprite);
-static void sub_8105894(struct Sprite *sprite);
-static void sub_810594C(struct Sprite *sprite);
-static void sub_8105A38(struct Sprite *sprite);
-static void sub_8105B70(struct Sprite *sprite);
+static void RunInfoBoxActions(u8 );
+static void InfoBox_FadeIn(struct Task *);
+static void InfoBox_WaitForFade(struct Task *);
+static void InfoBox_DrawWindow(struct Task *);
+static void InfoBox_AwaitPlayerInput(struct Task *);
+static void InfoBox_AddText(struct Task *);
+static void InfoBox_LoadPikaPowerMeter(struct Task *);
+static void InfoBox_LoadSlotMachineTilemap(struct Task *);
+static void InfoBox_CreateDigitalDisplay(struct Task *);
+static void InfoBox_FreeTask(struct Task *);
+static void CreateDigitalDisplayTask(void);
+static void CreateDigitalDisplayScene(u8 );
+static bool8 IsDigitalDisplayAnimFinished(void);
+static void DigitalDisplay_Idle(struct Task *);
+static void Task_DigitalDisplay(u8);
+static void CreateReelSymbolSprites(void);
+static void CreateCreditPayoutNumberSprites(void);
+static void CreateCoinNumberSprite(s16, s16, u8, s16);
+static void CreateReelBackgroundSprite(void);
+static void CreateReelTimePikachuSprite(void);
+static void DestroyReelTimePikachuSprite(void);
+static void CreateReelTimeMachineSprites(void);
+static void CreateBrokenReelTimeMachineSprite(void);
+static void CreateReelTimeNumberSprites(void);
+static void CreateReelTimeShadowSprites(void);
+static void CreateReelTimeNumberGapSprite(void);
+static void DestroyReelTimeMachineSprites(void);
+static void DestroyReelTimeShadowSprites(void);
+static void DestroyBrokenReelTimeMachineSprite(void);
+static void CreateReelTimeBoltSprites(void);
+static void SetReelTimeBoltDelay(s16);
+static void DestroyReelTimeBoltSprites(void);
+static void CreateReelTimePikachuAuraSprites(void);
+static void SetReelTimePikachuAuraFlashDelay(s16);
+static void DestroyReelTimePikachuAuraSprites(void);
+static void CreateReelTimeExplosionSprite(void);
+static void DestroyReelTimeExplosionSprite(void);
+static void CreateReelTimeDuckSprites(void);
+static void DestroyReelTimeDuckSprites(void);
+static void CreateReelTimeSmokeSprite(void);
+static bool8 IsReelTimeSmokeAnimFinished(void);
+static void DestroyReelTimeSmokeSprite(void);
+static u8 CreatePikaPowerBoltSprite(s16, s16);
+static void DestroyPikaPowerBoltSprite(u8);
+static u8 CreateDigitalDisplaySprite(u8, void (*callback)(struct Sprite*), s16, s16, s16);
+static void LoadSlotMachineGfx(void);
+static void LoadReelBackground(void);
+static void LoadMenuGfx(void);
+static void LoadMenuAndReelOverlayTilemaps(void);
+static void SetReelButtonTilemap(s16, u16, u16, u16, u16);
+static void LoadInfoBoxTilemap(void);
+static void LoadSlotMachineMenuTilemap(void);
+static void LoadSlotMachineReelOverlay(void);
+static u8 CreateStdDigitalDisplaySprite(u8, u8, s16);
+static void SpriteCB_DigitalDisplay_Static(struct Sprite *);
+static void SpriteCB_DigitalDisplay_Stop(struct Sprite *);
+static void SpriteCB_DigitalDisplay_AButtonStop(struct Sprite *);
+static void SpriteCB_DigitalDisplay_PokeballRocking(struct Sprite *);
+static void SpriteCB_DigitalDisplay_Smoke(struct Sprite *);
+static void SpriteCB_DigitalDisplay_SmokeNE(struct Sprite *);
+static void SpriteCB_DigitalDisplay_SmokeSW(struct Sprite *);
+static void SpriteCB_DigitalDisplay_SmokeSE(struct Sprite *);
+static void SpriteCB_DigitalDisplay_Reel(struct Sprite *);
+static void SpriteCB_DigitalDisplay_Time(struct Sprite *);
+static void SpriteCB_DigitalDisplay_ReelTimeNumber(struct Sprite *);
+static void SpriteCB_DigitalDisplay_PokeballShining(struct Sprite *);
+static void SpriteCB_DigitalDisplay_RegBonus(struct Sprite *);
+static void SpriteCB_DigitalDisplay_BigBonus(struct Sprite *);
+static void SpriteCB_DigitalDisplay_AButtonStart(struct Sprite *);
+static void EndDigitalDisplayScene_InsertBet(void);
+static void EndDigitalDisplayScene_StopReel(void);
+static void EndDigitalDisplayScene_Win(void);
+static void EndDigitalDisplayScene_Dummy(void);
+static void SpriteCB_ReelSymbol(struct Sprite *);
+static void SpriteCB_CoinNumber(struct Sprite *);
+static void SpriteCB_ReelTimePikachu(struct Sprite *);
+static void SpriteCB_ReelTimeNumbers(struct Sprite *);
+static void SpriteCB_ReelTimeBolt(struct Sprite *);
+static void SpriteCB_ReelTimePikachuAura(struct Sprite *);
+static void SpriteCB_ReelTimeExplosion(struct Sprite *);
+static void SpriteCB_ReelTimeDuck(struct Sprite *);
+static void SpriteCB_ReelTimeSmoke(struct Sprite *);
+static void SpriteCB_PikaPowerBolt(struct Sprite *);
// Ewram variables
-static EWRAM_DATA u16 *sUnknown_0203AAC8 = NULL;
+static EWRAM_DATA u16 *sMenuGfx = NULL;
static EWRAM_DATA u16 *sSelectedPikaPowerTile = NULL;
-static EWRAM_DATA u16 *sUnknown_0203AAD0 = NULL;
-static EWRAM_DATA u8 *sUnknown_0203AAD4 = NULL;
-static EWRAM_DATA u8 *sUnknown_0203AAD8 = NULL;
-static EWRAM_DATA u16 *sUnknown_0203AADC = NULL;
-static EWRAM_DATA u8 *sUnknown_0203AAE0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAEC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF0 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF4 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF8 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAFC = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB00 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB04 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB08 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB0C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB10 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB14 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB18 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB1C = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB20 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB24 = NULL;
-static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB28 = NULL;
-static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB2C = NULL;
-static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB30 = NULL;
-static EWRAM_DATA struct SlotMachineEwramStruct *sSlotMachine = NULL;
+static EWRAM_DATA u16 *sReelOverlay_Tilemap = NULL;
+static EWRAM_DATA u8 *sDigitalDisplayGfxPtr = NULL;
+static EWRAM_DATA u8 *sReelTimeGfxPtr = NULL;
+static EWRAM_DATA u16 *sReelButtonPress_Tilemap = NULL;
+static EWRAM_DATA u8 *sReelBackground_Gfx = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_ReelTimePikachu = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_ReelTimeMachineAntennae = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_ReelTimeMachine = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_BrokenReelTimeMachine = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Reel = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Time = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Insert = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Stop = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Win = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Lose = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Bonus = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Big = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Reg = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_AButton = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Smoke = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Number = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_Pokeball = NULL;
+static EWRAM_DATA struct SpriteFrameImage *sImageTable_DigitalDisplay_DPad = NULL;
+static EWRAM_DATA struct SpriteSheet *sReelBackgroundSpriteSheet = NULL;
+static EWRAM_DATA struct SpriteSheet *sSlotMachineSpritesheetsPtr = NULL;
+static EWRAM_DATA struct SlotMachine *sSlotMachine = NULL;
// IWRAM bss
-static struct SpriteFrameImage *gUnknown_03001188[26];
+static struct SpriteFrameImage *sImageTables_DigitalDisplay[NUM_DIG_DISPLAY_SPRITES];
// Const rom data.
-static const struct UnkStruct1 *const gUnknown_083ED048[];
-static const u16 gPalette_83EDE24[];
-static const u8 gLuckyRoundProbabilities[][3];
-static const u8 gBiasTags[];
-static const u16 gLuckyFlagSettings_Top3[];
-static const u16 gLuckyFlagSettings_NotTop3[];
-static const s16 gUnknown_083ECE7E[][2];
-static const SpriteCallback gUnknown_083ECF0C[];
-static const struct SpriteTemplate *const gUnknown_083EDB5C[];
-static const struct SubspriteTable *const gUnknown_083EDBC4[];
-static const struct SpriteTemplate gSpriteTemplate_83ED6CC;
-static const struct SpriteTemplate gSpriteTemplate_83ED564;
-static const struct SpriteTemplate gSpriteTemplate_83ED54C;
-static const struct SpriteTemplate gSpriteTemplate_83ED534;
-static const u8 gUnknown_083ECC58[2];
-static const struct SpriteTemplate gSpriteTemplate_83ED51C;
-static const u16 gProbabilityTable_SkipToReeltimeAction14[];
-static const u16 *const gUnknown_083EDE10[];
-static const u16 gReelIncrementTable[][2];
-static const u16 gReelTimeBonusIncrementTable[];
-static const u16 gSlotMatchFlags[];
-static const u16 gSlotPayouts[];
-static const u8 *const gUnknown_083EDCE4;
-static const u8 *const gUnknown_083EDCDC;
-static const u32 gReelTimeGfx[];
-static const struct SpriteSheet gSlotMachineSpriteSheets[22];
-static const struct SpritePalette gSlotMachineSpritePalettes[];
-static const u16 *const gUnknown_083EDE20;
-static const s16 gInitialReelPositions[][2];
-static const struct BgTemplate gUnknown_085A7424[4];
-static const struct WindowTemplate gUnknown_085A7434[];
-static const u8 gLuckyFlagProbabilities_Top3[][6];
-static const u8 gLuckyFlagProbabilities_NotTop3[][6];
-static const u8 gReeltimeProbabilities_UnluckyGame[][17];
-static const u8 gReelTimeProbabilities_LuckyGame[][17];
-static const u8 gSym2Match[];
-static const u8 gReelTimeTags[];
-static const u8 gReelSymbols[][REEL_NUM_TAGS];
-static const u8 *const gUnknown_083EDD08[];
-static const u16 *const gUnknown_083EDD1C[];
-static const u8 gUnknown_083EDD30[];
-static const u8 gBettingTilesId[][2];
-static const u8 gNumberBettingTiles[];
-static const u16 *const gUnknown_083EDDA0[];
-static const u16 *const gUnknown_083EDDAC;
-static const u16 gReelTimeWindowTilemap[];
-static const u16 gUnknown_085A9898[];
-static void (*const gUnknown_083ED064[])(void);
-static const struct SpriteTemplate gSpriteTemplate_83ED504;
-static const struct SpriteTemplate gSpriteTemplate_83ED4EC;
-static const struct SpriteTemplate gSpriteTemplate_83ED4D4;
-static const struct SpriteTemplate gSpriteTemplate_83ED4BC;
-static const struct SpriteTemplate gSpriteTemplate_83ED4A4;
-static const struct SpriteTemplate gSpriteTemplate_83ED474;
-static const struct SpriteTemplate gSpriteTemplate_83ED48C;
-static const struct SpriteTemplate gSpriteTemplate_83ED444;
-static const struct SpriteTemplate gSpriteTemplate_83ED42C;
-static const struct SpriteTemplate gSpriteTemplate_83ED414;
-static const struct SpriteTemplate gSpriteTemplate_83ED45C;
-static const struct SubspriteTable gSubspriteTables_83ED7D4[];
-static const struct SubspriteTable gSubspriteTables_83ED7B4[];
-static const struct SubspriteTable gSubspriteTables_83ED78C[];
-static const struct SubspriteTable gSubspriteTables_83ED73C[];
-static const struct SubspriteTable gSubspriteTables_83ED75C[];
-static const struct SubspriteTable gSubspriteTables_83ED704[];
-
-static const struct BgTemplate gUnknown_085A7424[] =
+static const struct DigitalDisplaySprite *const sDigitalDisplayScenes[];
+static const u16 sUnkPalette[];
+static const u8 sLuckyRoundProbabilities[][3];
+static const u8 sBiasTags[];
+static const u16 sLuckyFlagSettings_Top3[];
+static const u16 sLuckyFlagSettings_NotTop3[];
+static const s16 sDigitalDisplay_SpriteCoords[][2];
+static const SpriteCallback sDigitalDisplay_SpriteCallbacks[];
+static const struct SpriteTemplate *const sSpriteTemplates_DigitalDisplay[NUM_DIG_DISPLAY_SPRITES];
+static const struct SubspriteTable *const sSubspriteTables_DigitalDisplay[NUM_DIG_DISPLAY_SPRITES];
+static const struct SpriteTemplate sSpriteTemplate_PikaPowerBolt;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeSmoke;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeDuck;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeExplosion;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimePikachuAura;
+static const u16 sReelTimeExplodeProbability[];
+static const u16 *const sPokeballShiningPalTable[];
+static const u16 sReelIncrementTable[][2];
+static const u16 sReelTimeBonusIncrementTable[];
+static const u16 sSlotMatchFlags[];
+static const u16 sSlotPayouts[];
+static const u8 *const sReelBackground_Tilemap;
+static const u32 sReelTimeGfx[];
+static const struct SpriteSheet sSlotMachineSpriteSheets[22];
+static const struct SpritePalette sSlotMachineSpritePalettes[];
+static const u16 *const sDigitalDisplay_Pal;
+static const s16 sInitialReelPositions[NUM_REELS][2];
+static const u8 sLuckyFlagProbabilities_Top3[][6];
+static const u8 sLuckyFlagProbabilities_NotTop3[][6];
+static const u8 sReeltimeProbabilities_UnluckyGame[][17];
+static const u8 sReelTimeProbabilities_LuckyGame[][17];
+static const u8 sSymToMatch[];
+static const u8 sReelTimeTags[];
+static const u8 sReelSymbolTileTags[NUM_REELS][SYMBOLS_PER_REEL];
+static const u16 *const sLitMatchLinePalTable[NUM_MATCH_LINES];
+static const u16 *const sDarkMatchLinePalTable[NUM_MATCH_LINES];
+static const u8 sMatchLinePalOffsets[NUM_MATCH_LINES];
+static const u8 sBetToMatchLineIds[MAX_BET][2];
+static const u8 sMatchLinesPerBet[MAX_BET];
+static const u16 *const sFlashingLightsPalTable[];
+static const u16 *const sSlotMachineMenu_Pal;
+static const u16 sReelTimeWindow_Tilemap[];
+static const u16 sEmptyTilemap[];
+static void (*const sDigitalDisplaySceneExitCallbacks[])(void);
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeBolt;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeNumberGap;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeShadow;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeNumbers;
+static const struct SpriteTemplate sSpriteTemplate_BrokenReelTimeMachine;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeMachineAntennae;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeMachine;
+static const struct SpriteTemplate sSpriteTemplate_ReelBackground;
+static const struct SpriteTemplate sSpriteTemplate_CoinNumber;
+static const struct SpriteTemplate sSpriteTemplate_ReelSymbol;
+static const struct SpriteTemplate sSpriteTemplate_ReelTimePikachu;
+static const struct SubspriteTable sSubspriteTable_ReelTimeNumberGap[];
+static const struct SubspriteTable sSubspriteTable_ReelTimeShadow[];
+static const struct SubspriteTable sSubspriteTable_BrokenReelTimeMachine[];
+static const struct SubspriteTable sSubspriteTable_ReelTimeMachineAntennae[];
+static const struct SubspriteTable sSubspriteTable_ReelTimeMachine[];
+static const struct SubspriteTable sSubspriteTable_ReelBackground[];
+
+static const struct BgTemplate sBgTemplates[] =
{
{
.bg = 0,
@@ -465,194 +657,212 @@ static const struct BgTemplate gUnknown_085A7424[] =
},
};
-static const struct WindowTemplate gUnknown_085A7434[] =
+static const struct WindowTemplate sWindowTemplates[] =
{
- {0, 2, 15, 0x1B, 4, 15, 0x194},
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 27,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x194
+ },
DUMMY_WIN_TEMPLATE
};
-static const struct WindowTemplate gUnknown_085A7444 =
+static const struct WindowTemplate sWindowTemplate_InfoBox =
{
- 0, 1, 3, 20, 13, 13, 1
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 20,
+ .height = 13,
+ .paletteNum = 13,
+ .baseBlock = 1
};
static const u8 sColors_ReeltimeHelp[] = {TEXT_COLOR_LIGHT_GREY, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY};
-bool8 (*const SlotActions[])(struct Task *task) =
-{
- SlotAction_UnfadeScreen, // 0
- SlotAction_WaitForUnfade, // 1
- SlotAction_SetSlotMachineVars, // 2
- SlotAction3, // 3
- SlotAction4, // 4
- SlotAction_AwaitPlayerInput, // 5
- SlotAction_PrintYouDontHaveThreeCoins, // 6
- SlotAction_ExitYouDontHaveThreeCoinsMessage, // 7
- SlotAction_GivingInformation, // 8
- SlotAction9, // 9
- SlotAction10, // 10
- SlotAction_SetLuckySpins, // 11
- SlotAction_AwaitReelStop, // 12
- SlotAction_WaitForAllReelsToStop, // 13
- SlotAction_CheckMatches, // 14
- SlotAction_WaitForPayoutToBeAwarded, // 15
- SlotAction_EndOfRoll, // 16
- SlotAction_MatchedPower, // 17
- SlotAction18, // 18
- SlotAction_Loop, // 19
- SlotAction_NoMatches, // 20
- SlotAction_PrintQuitTheGame, // 21
- SlotAction_SeeIfPlayerQuits, // 22
- SlotAction_PrintMessage_9999Coins, // 23
- SlotAction_ExitMessage_9999Coins, // 24
- SlotAction_PrintMessage_NoMoreCoins, // 25
- SlotAction_ExitMessage_NoMoreCoins, // 26
- SlotAction_EndGame, // 27
- SlotAction_FreeDataStructures, // 28
-};
-
-bool8 (*const AwardPayoutActions[])(struct Task *task) =
+static bool8 (*const sSlotActions[])(struct Task *task) =
+{
+ [SLOT_ACTION_UNFADE] = SlotAction_UnfadeScreen,
+ [SLOT_ACTION_WAIT_FADE] = SlotAction_WaitForUnfade,
+ [SLOT_ACTION_READY_NEW_SPIN] = SlotAction_ReadyNewSpin,
+ [SLOT_ACTION_READY_NEW_RT_SPIN] = SlotAction_ReadyNewReelTimeSpin,
+ [SLOT_ACTION_ASK_INSERT_BET] = SlotAction_AskInsertBet,
+ [SLOT_ACTION_BET_INPUT] = SlotAction_HandleBetInput,
+ [SLOT_ACTION_MSG_NEED_3_COINS] = SlotAction_PrintMsg_Need3Coins,
+ [SLOT_ACTION_WAIT_MSG_NEED_3_COINS] = SlotAction_WaitMsg_Need3Coins,
+ [SLOT_ACTION_WAIT_INFO_BOX] = SlotAction_WaitForInfoBox,
+ [SLOT_ACTION_START_SPIN] = SlotAction_StartSpin,
+ [SLOT_ACTION_START_RT_SPIN] = SlotAction_StartReelTimeSpin,
+ [SLOT_ACTION_SET_LUCKY_SPINS] = SlotAction_SetLuckySpins,
+ [SLOT_ACTION_AWAIT_REEL_STOP] = SlotAction_AwaitReelStop,
+ [SLOT_ACTION_AWAIT_ALL_REELS_STOP] = SlotAction_WaitForAllReelsToStop,
+ [SLOT_ACTION_CHECK_MATCHES] = SlotAction_CheckMatches,
+ [SLOT_ACTION_WAIT_PAYOUT] = SlotAction_WaitForPayoutToBeAwarded,
+ [SLOT_ACTION_END_PAYOUT] = SlotAction_EndPayout,
+ [SLOT_ACTION_MATCHED_POWER] = SlotAction_MatchedPower,
+ [SLOT_ACTION_WAIT_RT_ANIM] = SlotAction_WaitReelTimeAnim,
+ [SLOT_ACTION_RESET_BET_TILES] = SlotAction_ResetBetTiles,
+ [SLOT_ACTION_NO_MATCHES] = SlotAction_NoMatches,
+ [SLOT_ACTION_ASK_QUIT] = SlotAction_AskQuit,
+ [SLOT_ACTION_HANDLE_QUIT_INPUT] = SlotAction_HandleQuitInput,
+ [SLOT_ACTION_MSG_MAX_COINS] = SlotAction_PrintMsg_9999Coins,
+ [SLOT_ACTION_WAIT_MSG_MAX_COINS] = SlotAction_WaitMsg_9999Coins,
+ [SLOT_ACTION_MSG_NO_MORE_COINS] = SlotAction_PrintMsg_NoMoreCoins,
+ [SLOT_ACTION_WAIT_MSG_NO_MORE_COINS] = SlotAction_WaitMsg_NoMoreCoins,
+ [SLOT_ACTION_END] = SlotAction_EndGame,
+ [SLOT_ACTION_FREE] = SlotAction_FreeDataStructures,
+};
+
+static bool8 (*const sAwardPayoutActions[])(struct Task *task) =
{
AwardPayoutAction0,
AwardPayoutAction_GivePayoutToPlayer,
AwardPayoutAction_FreeTask
};
-bool8 (*const SlotReelActions[])(struct Task *task) =
+static bool8 (*const sSlotReelActions[])(struct Task *task) =
{
- SlotReelAction_StayStill,
- SlotReelAction_Spin,
- SlotReelAction_DecideWhereToStop,
- SlotReelAction_MoveToStop,
- SlotReelAction_OscillatingStop
+ [REEL_ACTION_STILL] = SlotReelAction_StayStill,
+ [REEL_ACTION_SPIN] = SlotReelAction_Spin,
+ [REEL_ACTION_STOP] = SlotReelAction_DecideWhereToStop,
+ [REEL_ACTION_STOP_MOVE] = SlotReelAction_MoveToStop,
+ [REEL_ACTION_STOP_SHAKE] = SlotReelAction_OscillatingStop
};
// returns True if a match with the biasTag is possible in that reel
// also modifies data in sSlotMachine reel arrays to indicate how to get to the matching state
-bool8 (*const DecideReelTurns_BiasTag[])(void) =
+static bool8 (*const sDecideReelTurns_BiasTag[NUM_REELS])(void) =
{
DecideReelTurns_BiasTag_Reel1,
DecideReelTurns_BiasTag_Reel2,
DecideReelTurns_BiasTag_Reel3
};
-void (*const DecideReelTurns_NoBiasTag[])(void) =
+static void (*const sDecideReelTurns_NoBiasTag[NUM_REELS])(void) =
{
DecideReelTurns_NoBiasTag_Reel1,
DecideReelTurns_NoBiasTag_Reel2,
DecideReelTurns_NoBiasTag_Reel3
};
-const u16 ReelStopShocks[] = {2, 4, 4, 4, 8};
+static const u16 sReelStopShocks[] = {2, 4, 4, 4, 8};
-bool8 (*const DecideReelTurns_BiasTag_Reel1_Bets[])(u8 tag1, u8 tag2) =
+static bool8 (*const sDecideReelTurns_BiasTag_Reel1_Bets[MAX_BET])(u8 tag1, u8 tag2) =
{
DecideReelTurns_BiasTag_Reel1_Bet1,
DecideReelTurns_BiasTag_Reel1_Bet2or3,
DecideReelTurns_BiasTag_Reel1_Bet2or3
};
-bool8 (*const DecideReelTurns_BiasTag_Reel2_Bets[])(void) =
+static bool8 (*const sDecideReelTurns_BiasTag_Reel2_Bets[MAX_BET])(void) =
{
DecideReelTurns_BiasTag_Reel2_Bet1or2,
DecideReelTurns_BiasTag_Reel2_Bet1or2,
DecideReelTurns_BiasTag_Reel2_Bet3
};
-bool8 (*const DecideReelTurns_BiasTag_Reel3_Bets[])(u8 biasTag) =
+static bool8 (*const sDecideReelTurns_BiasTag_Reel3_Bets[MAX_BET])(u8 biasTag) =
{
DecideReelTurns_BiasTag_Reel3_Bet1or2,
DecideReelTurns_BiasTag_Reel3_Bet1or2,
DecideReelTurns_BiasTag_Reel3_Bet3
};
-void (*const DecideReelTurns_NoBiasTag_Reel2_Bets[])(void) =
+static void (*const sDecideReelTurns_NoBiasTag_Reel2_Bets[MAX_BET])(void) =
{
DecideReelTurns_NoBiasTag_Reel2_Bet1,
DecideReelTurns_NoBiasTag_Reel2_Bet2,
DecideReelTurns_NoBiasTag_Reel2_Bet3
};
-void (*const DecideReelTurns_NoBiasTag_Reel3_Bets[])(void) =
+static void (*const sDecideReelTurns_NoBiasTag_Reel3_Bets[MAX_BET])(void) =
{
DecideReelTurns_NoBiasTag_Reel3_Bet1,
DecideReelTurns_NoBiasTag_Reel3_Bet2,
DecideReelTurns_NoBiasTag_Reel3_Bet3
};
-void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) =
+static void (*const sReelStopButtonFuncs[])(struct Task *task, u8 taskId) =
{
- sub_8103C78,
- sub_8103CAC,
- sub_8103CC8
+ StopReelButton_Press,
+ StopReelButton_Wait,
+ StopReelButton_Unpress
};
-const s16 gUnknown_083ECBAC[] = {5, 10, 15};
+static const s16 sReelButtonOffsets[NUM_REELS] = {5, 10, 15};
-void (*const gUnknown_083ECBB4[])(struct Task *task) =
+static void (*const sPikaPowerBoltFuncs[])(struct Task *task) =
{
- nullsub_68,
- sub_810411C,
- sub_8104144,
- sub_81041AC
+ PikaPowerBolt_Idle,
+ PikaPowerBolt_AddBolt,
+ PikaPowerBolt_WaitAnim,
+ PikaPowerBolt_ClearAll
};
-const u16 pikaPowerTileTable[][2] =
+static const u16 sPikaPowerTileTable[][2] =
{
{0x9e, 0x6e},
{0x9f, 0x6f},
{0xaf, 0x7f},
};
-void (*const ReeltimeActions[])(struct Task *task) =
-{
- ReeltimeAction0,
- ReeltimeAction1,
- ReeltimeAction2,
- ReeltimeAction3,
- ReeltimeAction4,
- ReeltimeAction5,
- ReeltimeAction6,
- ReelTimeAction_LandOnOutcome,
- ReeltimeAction8,
- ReeltimeAction9,
- ReeltimeAction10,
- ReeltimeAction11,
- ReeltimeAction12,
- ReeltimeAction13,
- ReeltimeAction14,
- ReeltimeAction15,
- ReeltimeAction16,
- ReeltimeAction10,
- ReeltimeAction17
-};
-
-const u8 gUnknown_085A75C0[] = {1, 1, 2, 2};
-const s16 gUnknown_085A75C4[] = {0x40, 0x30, 0x18, 0x08};
-const s16 gUnknown_085A75CC[] = {10, 8, 6, 4};
-
-void (*const InfoBoxActions[])(struct Task *task) =
-{
+static void (*const sReelTimeActions[])(struct Task *task) =
+{
+ ReelTime_Init,
+ ReelTime_WindowEnter,
+ ReelTime_WaitStartPikachu,
+ ReelTime_PikachuSpeedUp1,
+ ReelTime_PikachuSpeedUp2,
+ ReelTime_WaitReel,
+ ReelTime_CheckExplode,
+ ReelTime_LandOnOutcome,
+ ReelTime_PikachuReact,
+ ReelTime_WaitClearPikaPower,
+ ReelTime_CloseWindow,
+ ReelTime_DestroySprites,
+ ReelTime_SetReelIncrement,
+ ReelTime_EndSuccess,
+ ReelTime_ExplodeMachine,
+ ReelTime_WaitExplode,
+ ReelTime_WaitSmoke,
+ ReelTime_CloseWindow,
+ ReelTime_EndFailure
+};
+
+static const u8 sReelTimePikachuAnimIds[] = {1, 1, 2, 2};
+static const s16 sReelTimeBoltDelays[] = {64, 48, 24, 8};
+static const s16 sPikachuAuraFlashDelays[] = {10, 8, 6, 4};
+
+static void (*const sInfoBoxActions[])(struct Task *task) =
+{
+ // Go to Info screen
InfoBox_FadeIn,
InfoBox_WaitForFade,
- InfoBox_8104B80,
+ InfoBox_DrawWindow,
InfoBox_WaitForFade,
InfoBox_AddText,
InfoBox_WaitForFade,
+ // On Info screen
InfoBox_AwaitPlayerInput,
+ // Exit Info screen
InfoBox_WaitForFade,
- InfoBox_812DE14,
+ InfoBox_LoadSlotMachineTilemap,
InfoBox_WaitForFade,
- InfoBox_812DE30,
+ InfoBox_CreateDigitalDisplay,
InfoBox_WaitForFade,
- InfoBox_8104BFC,
+ InfoBox_LoadPikaPowerMeter,
InfoBox_WaitForFade,
InfoBox_FreeTask,
};
-void (*const gUnknown_083ECC54[])(struct Task *task) =
+// Just idles, digital display is handled by CreateDigitalDisplayScene and sprite callbacks
+static void (*const sDigitalDisplayActions[])(struct Task *task) =
{
- nullsub_69,
+ DigitalDisplay_Idle,
};
@@ -679,12 +889,12 @@ static void Task_FadeToSlotMachine(u8 taskId)
}
}
-void PlaySlotMachine(u8 slotMachineIndex, MainCallback cb)
+void PlaySlotMachine(u8 slotMachineIndex, MainCallback exitCallback)
{
u8 taskId;
sSlotMachine = AllocZeroed(sizeof(*sSlotMachine));
- PlaySlotMachine_Internal(slotMachineIndex, cb);
+ PlaySlotMachine_Internal(slotMachineIndex, exitCallback);
taskId = CreateTask(Task_FadeToSlotMachine, 0);
gTasks[taskId].tState = 0;
}
@@ -696,33 +906,33 @@ static void CB2_SlotMachineSetup(void)
switch (gMain.state)
{
case 0:
- SlotMachineSetup_0_0();
- SlotMachineSetup_0_1();
+ SlotMachineSetup_InitBgsWindows();
+ SlotMachineSetup_InitSlotMachineStruct();
gMain.state++;
break;
case 1:
- SlotMachineSetup_1_0();
+ SlotMachineSetup_InitVRAM();
gMain.state++;
break;
case 2:
- SlotMachineSetup_2_0();
- SlotMachineSetup_2_1();
+ SlotMachineSetup_InitOAM();
+ SlotMachineSetup_InitGpuRegs();
gMain.state++;
break;
case 3:
- SlotMachineSetup_3_0();
+ SlotMachineSetup_InitPalsSpritesTasks();
gMain.state++;
break;
case 4:
- SlotMachineSetup_4_0();
+ SlotMachineSetup_InitTilemaps();
gMain.state++;
break;
case 5:
- SlotMachineSetup_5_0();
+ SlotMachineSetup_LoadGfxAndTilemaps();
gMain.state++;
break;
case 6:
- SlotMachineSetup_6_0();
+ SlotMachineSetup_InitVBlank();
gMain.state++;
break;
case 7:
@@ -734,25 +944,25 @@ static void CB2_SlotMachineSetup(void)
gMain.state++;
break;
case 8:
- SlotMachineSetup_8_0();
+ AllocDigitalDisplayGfx();
gMain.state++;
break;
case 9:
- SlotMachineSetup_9_0();
+ SetDigitalDisplayImagePtrs();
gMain.state++;
break;
case 10:
- SlotMachineSetup_10_0();
- SlotMachineSetupGameplayTasks();
+ CreateSlotMachineSprites();
+ CreateGameplayTasks();
gMain.state++;
break;
case 11:
- SetMainCallback2(CB2_SlotMachineLoop);
+ SetMainCallback2(CB2_SlotMachine);
break;
}
}
-static void CB2_SlotMachineLoop(void)
+static void CB2_SlotMachine(void)
{
RunTasks();
AnimateSprites();
@@ -760,7 +970,7 @@ static void CB2_SlotMachineLoop(void)
UpdatePaletteFade();
}
-static void SlotMachine_VBlankCallback(void)
+static void SlotMachine_VBlankCB(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -771,54 +981,54 @@ static void SlotMachine_VBlankCallback(void)
SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut);
}
-static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb)
+static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback exitCallback)
{
struct Task *task = &gTasks[CreateTask(SlotMachineDummyTask, 0xFF)];
task->data[0] = slotMachineIndex;
- StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb);
+ StoreWordInTwoHalfwords((u16 *)&task->data[1], (intptr_t)exitCallback);
}
-static void sub_81019EC(void)
+static void SlotMachineInitDummyTask(void)
{
struct Task *task = &gTasks[FindTaskIdByFunc(SlotMachineDummyTask)];
sSlotMachine->machineId = task->data[0];
- LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb);
+ LoadWordFromTwoHalfwords((u16 *)&task->data[1], (u32 *)&sSlotMachine->prevMainCb);
}
static void SlotMachineDummyTask(u8 taskId)
{
}
-static void SlotMachineSetup_0_0(void)
+static void SlotMachineSetup_InitBgsWindows(void)
{
SetVBlankCallback(NULL);
SetHBlankCallback(NULL);
CpuFill32(0, (void *)VRAM, VRAM_SIZE);
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_085A7424, ARRAY_COUNT(gUnknown_085A7424));
- InitWindows(gUnknown_085A7434);
+ InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates));
+ InitWindows(sWindowTemplates);
DeactivateAllTextPrinters();
}
-static void SlotMachineSetup_6_0(void)
+static void SlotMachineSetup_InitVBlank(void)
{
- SetVBlankCallback(SlotMachine_VBlankCallback);
+ SetVBlankCallback(SlotMachine_VBlankCB);
EnableInterrupts(INTR_FLAG_VBLANK);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
}
-static void SlotMachineSetup_1_0(void)
+static void SlotMachineSetup_InitVRAM(void)
{
DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000);
}
-static void SlotMachineSetup_2_0(void)
+static void SlotMachineSetup_InitOAM(void)
{
DmaClear16(3, (u16 *)OAM, OAM_SIZE);
}
-static void SlotMachineSetup_2_1(void)
+static void SlotMachineSetup_InitGpuRegs(void)
{
SetGpuReg(REG_OFFSET_BG0CNT, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
@@ -832,48 +1042,48 @@ static void SlotMachineSetup_2_1(void)
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
SetGpuReg(REG_OFFSET_BG3HOFS, 0);
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
- SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR);
- SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_OBJ);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8));
}
// set up initial state of slot machine
-static void SlotMachineSetup_0_1(void)
+static void SlotMachineSetup_InitSlotMachineStruct(void)
{
u8 i;
- sub_81019EC(); // assigns sSlotMachine->machineId, etc.
+ SlotMachineInitDummyTask(); // assigns sSlotMachine->machineId, etc.
sSlotMachine->state = 0;
sSlotMachine->pikaPower = 0;
sSlotMachine->luckyGame = Random() & 1;
sSlotMachine->luckyFlags = 0;
sSlotMachine->matchedSymbols = 0;
- sSlotMachine->fairRollsLeft = 0;
- sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->reelTimeSpinsLeft = 0;
+ sSlotMachine->reelTimeSpinsUsed = 0;
sSlotMachine->coins = GetCoins();
sSlotMachine->payout = 0;
sSlotMachine->netCoinLoss = 0;
sSlotMachine->bet = 0;
sSlotMachine->currReel = 0;
sSlotMachine->reelIncrement = 8;
- sSlotMachine->win0h = 0xf0;
- sSlotMachine->win0v = 0xa0;
- sSlotMachine->winIn = 0x3f;
- sSlotMachine->winOut = 0x3f;
+ sSlotMachine->win0h = DISPLAY_WIDTH;
+ sSlotMachine->win0v = DISPLAY_HEIGHT;
+ sSlotMachine->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
+ sSlotMachine->winOut = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
sSlotMachine->backupMapMusic = GetCurrentMapMusic();
for (i = 0; i < NUM_REELS; i++)
{
sSlotMachine->reelPixelOffsetsWhileStopping[i] = 0;
- sSlotMachine->reelPositions[i] = gInitialReelPositions[i][sSlotMachine->luckyGame] % REEL_NUM_TAGS;
- sSlotMachine->reelPixelOffsets[i] = REEL_NUM_TAGS * REEL_TAG_HEIGHT - sSlotMachine->reelPositions[i] * REEL_TAG_HEIGHT;
- sSlotMachine->reelPixelOffsets[i] %= REEL_NUM_TAGS * REEL_TAG_HEIGHT;
+ sSlotMachine->reelPositions[i] = sInitialReelPositions[i][sSlotMachine->luckyGame] % SYMBOLS_PER_REEL;
+ sSlotMachine->reelPixelOffsets[i] = SYMBOLS_PER_REEL * REEL_SYMBOL_HEIGHT - sSlotMachine->reelPositions[i] * REEL_SYMBOL_HEIGHT;
+ sSlotMachine->reelPixelOffsets[i] %= SYMBOLS_PER_REEL * REEL_SYMBOL_HEIGHT;
}
AlertTVThatPlayerPlayedSlotMachine(GetCoins());
}
-static void SlotMachineSetup_3_0(void)
+static void SlotMachineSetup_InitPalsSpritesTasks(void)
{
ResetPaletteFade();
ResetSpriteData();
@@ -882,69 +1092,70 @@ static void SlotMachineSetup_3_0(void)
ResetTasks();
}
-static void SlotMachineSetup_4_0(void)
+static void SlotMachineSetup_InitTilemaps(void)
{
sSelectedPikaPowerTile = Alloc(8);
- sUnknown_0203AAD0 = AllocZeroed(0xE);
- sUnknown_0203AADC = AllocZeroed(8);
+ sReelOverlay_Tilemap = AllocZeroed(14);
+ sReelButtonPress_Tilemap = AllocZeroed(8);
// several of these are 1 bit off from each other
- sUnknown_0203AAD0[0] = 0x2051;
- sUnknown_0203AAD0[1] = 0x2851;
- sUnknown_0203AAD0[2] = 0x2061;
- sUnknown_0203AAD0[3] = 0x2861;
- sUnknown_0203AAD0[4] = 0x20BE;
- sUnknown_0203AAD0[5] = 0x28BE;
- sUnknown_0203AAD0[6] = 0x20BF;
+ sReelOverlay_Tilemap[0] = 0x2051;
+ sReelOverlay_Tilemap[1] = 0x2851;
+ sReelOverlay_Tilemap[2] = 0x2061;
+ sReelOverlay_Tilemap[3] = 0x2861;
+ sReelOverlay_Tilemap[4] = 0x20BE;
+ sReelOverlay_Tilemap[5] = 0x28BE;
+ sReelOverlay_Tilemap[6] = 0x20BF;
}
-static void SlotMachineSetup_5_0(void)
+static void SlotMachineSetup_LoadGfxAndTilemaps(void)
{
- sub_8106448();
- sub_81064B8();
- sub_81063C0();
+ LoadMenuGfx();
+ LoadMenuAndReelOverlayTilemaps();
+ LoadSlotMachineGfx();
LoadMessageBoxGfx(0, 0x200, 0xF0);
LoadUserWindowBorderGfx(0, 0x214, 0xE0);
PutWindowTilemap(0);
}
-static void SlotMachineSetup_10_0(void)
+static void CreateSlotMachineSprites(void)
{
- sub_8104EA8();
- sub_8104F8C();
- sub_8103DC8();
- sub_81050C4();
+ CreateReelSymbolSprites();
+ CreateCreditPayoutNumberSprites();
+ CreateInvisibleFlashMatchLineSprites();
+ CreateReelBackgroundSprite();
}
-// create gameplay tasks
-static void SlotMachineSetupGameplayTasks(void)
+static void CreateGameplayTasks(void)
{
- GameplayTask_PikaPower();
- GameplayTask_StopSlotReel();
- sub_8104C5C();
- GameplayTasks_Slots();
+ CreatePikaPowerBoltTask();
+ CreateSlotReelTasks();
+ CreateDigitalDisplayTask();
+ CreateSlotMachineTask();
}
-static void GameplayTasks_Slots(void)
+static void CreateSlotMachineTask(void)
{
- RunSlotActions(CreateTask(RunSlotActions, 0));
+ Task_SlotMachine(CreateTask(Task_SlotMachine, 0));
}
// task->data[0] is a timer
-static void RunSlotActions(u8 taskId)
+static void Task_SlotMachine(u8 taskId)
{
- while (SlotActions[sSlotMachine->state](&gTasks[taskId]))
+ while (sSlotActions[sSlotMachine->state](&gTasks[taskId]))
;
}
+// SLOT_ACTION_UNFADE
static bool8 SlotAction_UnfadeScreen(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- sub_810423C(sSlotMachine->pikaPower);
- sSlotMachine->state++;
+ LoadPikaPowerMeter(sSlotMachine->pikaPower);
+ sSlotMachine->state++; // SLOT_ACTION_WAIT_FADE
return FALSE;
}
+// SLOT_ACTION_WAIT_FADE
static bool8 SlotAction_WaitForUnfade(struct Task *task)
{
if (!gPaletteFade.active)
@@ -952,448 +1163,478 @@ static bool8 SlotAction_WaitForUnfade(struct Task *task)
return FALSE;
}
-static bool8 SlotAction_SetSlotMachineVars(struct Task *task)
+// SLOT_ACTION_READY_NEW_SPIN
+static bool8 SlotAction_ReadyNewSpin(struct Task *task)
{
sSlotMachine->payout = 0;
sSlotMachine->bet = 0;
sSlotMachine->currReel = 0;
sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
- sSlotMachine->state = 4;
+ sSlotMachine->state = SLOT_ACTION_ASK_INSERT_BET;
if (sSlotMachine->coins <= 0)
{
- sSlotMachine->state = 25;
+ sSlotMachine->state = SLOT_ACTION_MSG_NO_MORE_COINS;
}
- else if (sSlotMachine->fairRollsLeft)
+ else if (sSlotMachine->reelTimeSpinsLeft)
{
- sSlotMachine->state = 3;
- sub_8104CAC(4);
+ sSlotMachine->state = SLOT_ACTION_READY_NEW_RT_SPIN;
+ CreateDigitalDisplayScene(DIG_DISPLAY_REEL_TIME);
}
return TRUE;
}
-static bool8 SlotAction3(struct Task *task)
+// SLOT_ACTION_READY_NEW_RT_SPIN
+static bool8 SlotAction_ReadyNewReelTimeSpin(struct Task *task)
{
- if (sub_8104E18())
- sSlotMachine->state = 4;
+ if (IsDigitalDisplayAnimFinished())
+ sSlotMachine->state = SLOT_ACTION_ASK_INSERT_BET;
return FALSE;
}
-static bool8 SlotAction4(struct Task *task)
+// SLOT_ACTION_ASK_INSERT_BET
+static bool8 SlotAction_AskInsertBet(struct Task *task)
{
- sub_8104CAC(0);
- sSlotMachine->state = 5;
+ CreateDigitalDisplayScene(DIG_DISPLAY_INSERT_BET);
+ sSlotMachine->state = SLOT_ACTION_BET_INPUT;
if (sSlotMachine->coins >= MAX_COINS)
- sSlotMachine->state = 23;
+ sSlotMachine->state = SLOT_ACTION_MSG_MAX_COINS;
return TRUE;
}
-static bool8 SlotAction_AwaitPlayerInput(struct Task *task)
+// SLOT_ACTION_BET_INPUT
+static bool8 SlotAction_HandleBetInput(struct Task *task)
{
s16 i;
- if (gMain.newKeys & SELECT_BUTTON)
+ if (JOY_NEW(SELECT_BUTTON))
{
- OpenInfoBox(0);
- sSlotMachine->state = 8;
+ OpenInfoBox(DIG_DISPLAY_INSERT_BET);
+ sSlotMachine->state = SLOT_ACTION_WAIT_INFO_BOX;
}
- else if (gMain.newKeys & R_BUTTON) // bet the max amount
+ else if (JOY_NEW(R_BUTTON)) // bet the max amount
{
- if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0)
+ if (sSlotMachine->coins - (MAX_BET - sSlotMachine->bet) >= 0)
{
- for (i = sSlotMachine->bet; i < 3; i++)
- LoadBetTiles(i);
- sSlotMachine->coins -= (3 - sSlotMachine->bet);
- sSlotMachine->bet = 3;
- sSlotMachine->state = 9;
+ for (i = sSlotMachine->bet; i < MAX_BET; i++)
+ LightenBetTiles(i);
+ sSlotMachine->coins -= (MAX_BET - sSlotMachine->bet);
+ sSlotMachine->bet = MAX_BET;
+ sSlotMachine->state = SLOT_ACTION_START_SPIN;
PlaySE(SE_REGI);
}
else // you didn't have enough coins to bet the max
{
- sSlotMachine->state = 6;
+ sSlotMachine->state = SLOT_ACTION_MSG_NEED_3_COINS;
}
}
else
{
- if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0)
+ // Increase bet
+ if (JOY_NEW(DPAD_DOWN) && sSlotMachine->coins != 0)
{
PlaySE(SE_REGI);
- LoadBetTiles(sSlotMachine->bet);
+ LightenBetTiles(sSlotMachine->bet);
sSlotMachine->coins--;
sSlotMachine->bet++;
}
- // player maxed out or finished betting
- if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
- sSlotMachine->state = 9;
- // player wants to quit
- if (gMain.newKeys & B_BUTTON)
- sSlotMachine->state = 21;
+
+ // Maxed bet or finished betting
+ if (sSlotMachine->bet >= MAX_BET || (sSlotMachine->bet != 0 && JOY_NEW(A_BUTTON)))
+ sSlotMachine->state = SLOT_ACTION_START_SPIN;
+
+ // Quit prompt
+ if (JOY_NEW(B_BUTTON))
+ sSlotMachine->state = SLOT_ACTION_ASK_QUIT;
}
return FALSE;
}
-static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task)
+// SLOT_ACTION_NEED_3_COINS
+static bool8 SlotAction_PrintMsg_Need3Coins(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
- sSlotMachine->state = 7;
+ sSlotMachine->state = SLOT_ACTION_WAIT_MSG_NEED_3_COINS;
return FALSE;
}
-static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task)
+// SLOT_ACTION_WAIT_MSG_NEED_3_COINS
+static bool8 SlotAction_WaitMsg_Need3Coins(struct Task *task)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
ClearDialogWindowAndFrame(0, TRUE);
- sSlotMachine->state = 5;
+ sSlotMachine->state = SLOT_ACTION_BET_INPUT;
}
return FALSE;
}
-static bool8 SlotAction_GivingInformation(struct Task *task)
+// SLOT_ACTION_WAIT_INFO_BOX
+static bool8 SlotAction_WaitForInfoBox(struct Task *task)
{
if (IsInfoBoxClosed())
- sSlotMachine->state = 5;
+ sSlotMachine->state = SLOT_ACTION_BET_INPUT;
return FALSE;
}
-// probably make all the slots roll
-static bool8 SlotAction9(struct Task *task)
+// SLOT_ACTION_START_SPIN
+static bool8 SlotAction_StartSpin(struct Task *task)
{
DrawLuckyFlags();
- sub_8104DA4();
+ DestroyDigitalDisplayScene();
- // for each reel...
- ReelTasks_SetUnkTaskData(0);
- ReelTasks_SetUnkTaskData(1);
- ReelTasks_SetUnkTaskData(2);
+ SpinSlotReel(LEFT_REEL);
+ SpinSlotReel(MIDDLE_REEL);
+ SpinSlotReel(RIGHT_REEL);
IncrementDailySlotsUses();
task->data[0] = 0;
if (sSlotMachine->luckyFlags & LUCKY_BIAS_REELTIME)
{
- BeginReeltime();
- sSlotMachine->state = 10;
+ BeginReelTime();
+ sSlotMachine->state = SLOT_ACTION_START_RT_SPIN;
}
else
{
- sub_8104CAC(1);
- sSlotMachine->state = 11;
+ CreateDigitalDisplayScene(DIG_DISPLAY_STOP_REEL);
+ sSlotMachine->state = SLOT_ACTION_SET_LUCKY_SPINS;
}
sSlotMachine->reelIncrement = 8;
- if (sSlotMachine->fairRollsLeft)
+ if (sSlotMachine->reelTimeSpinsLeft)
sSlotMachine->reelIncrement = SlowReelSpeed();
return FALSE;
}
-static bool8 SlotAction10(struct Task *task)
+// SLOT_ACTION_START_RT_SPIN
+static bool8 SlotAction_StartReelTimeSpin(struct Task *task)
{
- if (IsFinalTask_RunReelTimeActions())
+ if (IsReelTimeTaskDone())
{
- sub_8104CAC(1);
+ CreateDigitalDisplayScene(DIG_DISPLAY_STOP_REEL);
sSlotMachine->luckyFlags &= ~LUCKY_BIAS_REELTIME;
- sSlotMachine->state = 11;
+ sSlotMachine->state = SLOT_ACTION_SET_LUCKY_SPINS;
}
return FALSE;
}
+// SLOT_ACTION_SET_LUCKY_SPINS
static bool8 SlotAction_SetLuckySpins(struct Task *task)
{
if (++task->data[0] >= 30)
{
SetLuckySpins();
- sSlotMachine->state = 12;
+ sSlotMachine->state = SLOT_ACTION_AWAIT_REEL_STOP;
}
return FALSE;
}
+// SLOT_ACTION_AWAIT_REEL_STOP
static bool8 SlotAction_AwaitReelStop(struct Task *task)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_JYUNI);
- sub_8102E1C(sSlotMachine->currReel);
- sub_8103C14(sSlotMachine->currReel);
- sSlotMachine->state = 13;
+ StopSlotReel(sSlotMachine->currReel);
+ PressStopReelButton(sSlotMachine->currReel);
+ sSlotMachine->state = SLOT_ACTION_AWAIT_ALL_REELS_STOP;
}
return FALSE;
}
+// SLOT_ACTION_AWAIT_ALL_REELS_STOP
static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task)
{
if (!IsSlotReelMoving(sSlotMachine->currReel))
{
sSlotMachine->currReel++;
- sSlotMachine->state = 12;
- if (sSlotMachine->currReel > 2)
+ sSlotMachine->state = SLOT_ACTION_AWAIT_REEL_STOP;
+ if (sSlotMachine->currReel >= NUM_REELS)
{
- sSlotMachine->state = 14;
+ sSlotMachine->state = SLOT_ACTION_CHECK_MATCHES;
}
return TRUE;
}
return FALSE;
}
-// once all reels have stopped
+// SLOT_ACTION_CHECK_MATCHES
static bool8 SlotAction_CheckMatches(struct Task *task)
{
sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
CheckMatch();
- if (sSlotMachine->fairRollsLeft)
+ if (sSlotMachine->reelTimeSpinsLeft)
{
- sSlotMachine->fairRollsLeft--;
- sSlotMachine->fairRollsUsed++;
+ sSlotMachine->reelTimeSpinsLeft--;
+ sSlotMachine->reelTimeSpinsUsed++;
}
if (sSlotMachine->matchedSymbols)
{
- sSlotMachine->state = 15;
+ sSlotMachine->state = SLOT_ACTION_WAIT_PAYOUT;
AwardPayout();
- sub_8103F70();
+ FlashSlotMachineLights();
if ((sSlotMachine->netCoinLoss -= sSlotMachine->payout) < 0)
{
sSlotMachine->netCoinLoss = 0;
}
- if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ if (sSlotMachine->matchedSymbols & ((1 << MATCHED_777_BLUE) | (1 << MATCHED_777_RED)))
{
PlayFanfare(MUS_ME_B_BIG);
- sub_8104CAC(6);
+ CreateDigitalDisplayScene(DIG_DISPLAY_BONUS_BIG);
}
- else if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED))
+ else if (sSlotMachine->matchedSymbols & (1 << MATCHED_777_MIXED))
{
PlayFanfare(MUS_ME_B_BIG);
- sub_8104CAC(5);
+ CreateDigitalDisplayScene(DIG_DISPLAY_BONUS_REG);
}
else
{
PlayFanfare(MUS_ME_B_SMALL);
- sub_8104CAC(2);
+ CreateDigitalDisplayScene(DIG_DISPLAY_WIN);
}
// if you matched 777...
- if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ if (sSlotMachine->matchedSymbols & ((1 << MATCHED_777_MIXED) | (1 << MATCHED_777_BLUE) | (1 << MATCHED_777_RED)))
{
sSlotMachine->luckyFlags &= ~(LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777);
- if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ if (sSlotMachine->matchedSymbols & ((1 << MATCHED_777_BLUE) | (1 << MATCHED_777_RED)))
{
- sSlotMachine->fairRollsLeft = 0;
- sSlotMachine->fairRollsUsed = 0;
+ sSlotMachine->reelTimeSpinsLeft = 0;
+ sSlotMachine->reelTimeSpinsUsed = 0;
sSlotMachine->luckyGame = FALSE;
- if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
+ if (sSlotMachine->matchedSymbols & (1 << MATCHED_777_BLUE))
// this may be an error, but if you get blue 777, the game becomes lucky
sSlotMachine->luckyGame = TRUE;
}
}
- if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16)
+ if (sSlotMachine->matchedSymbols & (1 << MATCHED_POWER) && sSlotMachine->pikaPower < 16)
{
sSlotMachine->pikaPower++;
- DisplayPikaPower(sSlotMachine->pikaPower);
+ AddPikaPowerBolt(sSlotMachine->pikaPower);
}
}
else
{
- sub_8104CAC(3);
- sSlotMachine->state = 20;
+ CreateDigitalDisplayScene(DIG_DISPLAY_LOSE);
+ sSlotMachine->state = SLOT_ACTION_NO_MATCHES;
if ((sSlotMachine->netCoinLoss += sSlotMachine->bet) > MAX_COINS)
sSlotMachine->netCoinLoss = MAX_COINS;
}
return FALSE;
}
+// SLOT_ACTION_WAIT_PAYOUT
static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task)
{
if (IsFinalTask_RunAwardPayoutActions())
- sSlotMachine->state = 16;
+ sSlotMachine->state = SLOT_ACTION_END_PAYOUT;
return FALSE;
}
-static bool8 SlotAction_EndOfRoll(struct Task *task)
+// SLOT_ACTION_END_PAYOUT
+static bool8 SlotAction_EndPayout(struct Task *task)
{
- if (sub_8103FA0())
+ if (TryStopSlotMachineLights())
{
- sSlotMachine->state = 19;
- if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE)))
+ sSlotMachine->state = SLOT_ACTION_RESET_BET_TILES;
+
+ if (sSlotMachine->matchedSymbols & ((1 << MATCHED_777_RED) | (1 << MATCHED_777_BLUE)))
IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
- if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+
+ if (sSlotMachine->matchedSymbols & (1 << MATCHED_REPLAY))
{
sSlotMachine->currReel = 0;
- sSlotMachine->state = 9;
+ sSlotMachine->state = SLOT_ACTION_START_SPIN;
}
- if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
- sSlotMachine->state = 17;
- if (sSlotMachine->fairRollsLeft && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+
+ if (sSlotMachine->matchedSymbols & (1 << MATCHED_POWER))
+ sSlotMachine->state = SLOT_ACTION_MATCHED_POWER;
+
+ if (sSlotMachine->reelTimeSpinsLeft && sSlotMachine->matchedSymbols & (1 << MATCHED_REPLAY))
{
- sub_8104CAC(4);
- sSlotMachine->state = 18;
+ CreateDigitalDisplayScene(DIG_DISPLAY_REEL_TIME);
+ sSlotMachine->state = SLOT_ACTION_WAIT_RT_ANIM;
}
}
return FALSE;
}
+// SLOT_ACTION_MATCHED_POWER
static bool8 SlotAction_MatchedPower(struct Task *task)
{
- if (!sub_81040C8())
+ if (!IsPikaPowerBoltAnimating())
{
- sSlotMachine->state = 19;
- if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ sSlotMachine->state = SLOT_ACTION_RESET_BET_TILES;
+ if (sSlotMachine->matchedSymbols & (1 << MATCHED_REPLAY))
{
- sSlotMachine->state = 9;
- if (sSlotMachine->fairRollsLeft)
+ sSlotMachine->state = SLOT_ACTION_START_SPIN;
+ if (sSlotMachine->reelTimeSpinsLeft)
{
- sub_8104CAC(4);
- sSlotMachine->state = 18;
+ CreateDigitalDisplayScene(DIG_DISPLAY_REEL_TIME);
+ sSlotMachine->state = SLOT_ACTION_WAIT_RT_ANIM;
}
}
}
return FALSE;
}
-static bool8 SlotAction18(struct Task *task)
+// SLOT_ACTION_WAIT_RT_ANIM
+static bool8 SlotAction_WaitReelTimeAnim(struct Task *task)
{
- if (sub_8104E18())
+ if (IsDigitalDisplayAnimFinished())
{
- sSlotMachine->state = 19;
- if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ sSlotMachine->state = SLOT_ACTION_RESET_BET_TILES;
+ if (sSlotMachine->matchedSymbols & (1 << MATCHED_REPLAY))
{
- sSlotMachine->state = 9;
+ sSlotMachine->state = SLOT_ACTION_START_SPIN;
}
}
return FALSE;
}
-static bool8 SlotAction_Loop(struct Task *task)
+// SLOT_ACTION_RESET_BET_TILES
+static bool8 SlotAction_ResetBetTiles(struct Task *task)
{
- sub_8103D8C(0);
- sub_8103D8C(1);
- sub_8103D8C(2);
- sSlotMachine->state = 2;
+ DarkenBetTiles(0);
+ DarkenBetTiles(1);
+ DarkenBetTiles(2);
+ sSlotMachine->state = SLOT_ACTION_READY_NEW_SPIN;
return FALSE;
}
+// SLOT_ACTION_NO_MATCHES
static bool8 SlotAction_NoMatches(struct Task *task)
{
if (++task->data[1] > 64)
{
task->data[1] = 0;
- sSlotMachine->state = 19;
+ sSlotMachine->state = SLOT_ACTION_RESET_BET_TILES;
}
return FALSE;
}
-static bool8 SlotAction_PrintQuitTheGame(struct Task *task)
+// SLOT_ACTION_ASK_QUIT
+static bool8 SlotAction_AskQuit(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_QuitTheGame, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF);
- sSlotMachine->state = 22;
+ sSlotMachine->state = SLOT_ACTION_HANDLE_QUIT_INPUT;
return FALSE;
}
-static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task)
+// SLOT_ACTION_HANDLE_QUIT_INPUT
+static bool8 SlotAction_HandleQuitInput(struct Task *task)
{
s8 input = Menu_ProcessInputNoWrapClearOnChoose();
if (input == 0) // player chooses to quit
{
ClearDialogWindowAndFrame(0, TRUE);
- sub_8103D8C(0);
- sub_8103D8C(1);
- sub_8103D8C(2);
+ DarkenBetTiles(0);
+ DarkenBetTiles(1);
+ DarkenBetTiles(2);
sSlotMachine->coins += sSlotMachine->bet;
- sSlotMachine->state = 27;
+ sSlotMachine->state = SLOT_ACTION_END;
}
else if (input == 1 || input == -1) // player chooses not to quit
{
ClearDialogWindowAndFrame(0, TRUE);
- sSlotMachine->state = 5;
+ sSlotMachine->state = SLOT_ACTION_BET_INPUT;
}
return FALSE;
}
-static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task)
+// SLOT_ACTION_MSG_MAX_COINS
+static bool8 SlotAction_PrintMsg_9999Coins(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
- sSlotMachine->state = 24;
+ sSlotMachine->state = SLOT_ACTION_WAIT_MSG_MAX_COINS;
return FALSE;
}
-static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task)
+// SLOT_ACTION_WAIT_MSG_MAX_COINS
+static bool8 SlotAction_WaitMsg_9999Coins(struct Task *task)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
ClearDialogWindowAndFrame(0, TRUE);
- sSlotMachine->state = 5;
+ sSlotMachine->state = SLOT_ACTION_BET_INPUT;
}
return FALSE;
}
-static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task)
+// SLOT_ACTION_MSG_NO_MORE_COINS
+static bool8 SlotAction_PrintMsg_NoMoreCoins(struct Task *task)
{
DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0);
CopyWindowToVram(0, 3);
- sSlotMachine->state = 26;
+ sSlotMachine->state = SLOT_ACTION_WAIT_MSG_NO_MORE_COINS;
return FALSE;
}
-static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task)
+// SLOT_ACTION_WAIT_MSG_NO_MORE_COINS
+static bool8 SlotAction_WaitMsg_NoMoreCoins(struct Task *task)
{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
{
ClearDialogWindowAndFrame(0, TRUE);
- sSlotMachine->state = 27;
+ sSlotMachine->state = SLOT_ACTION_END;
}
return FALSE;
}
+// SLOT_ACTION_END
static bool8 SlotAction_EndGame(struct Task *task)
{
SetCoins(sSlotMachine->coins);
AlertTVOfNewCoinTotal(GetCoins());
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- sSlotMachine->state++;
+ sSlotMachine->state++; // SLOT_ACTION_FREE
return FALSE;
}
+// SLOT_ACTION_FREE
static bool8 SlotAction_FreeDataStructures(struct Task *task)
{
if (!gPaletteFade.active)
{
SetMainCallback2(sSlotMachine->prevMainCb);
- FREE_AND_SET_NULL(sUnknown_0203AAF4);
- FREE_AND_SET_NULL(sUnknown_0203AAF8);
- FREE_AND_SET_NULL(sUnknown_0203AAFC);
- FREE_AND_SET_NULL(sUnknown_0203AB00);
- FREE_AND_SET_NULL(sUnknown_0203AB04);
- FREE_AND_SET_NULL(sUnknown_0203AB08);
- FREE_AND_SET_NULL(sUnknown_0203AB0C);
- FREE_AND_SET_NULL(sUnknown_0203AB10);
- FREE_AND_SET_NULL(sUnknown_0203AB14);
- FREE_AND_SET_NULL(sUnknown_0203AB18);
- FREE_AND_SET_NULL(sUnknown_0203AB1C);
- FREE_AND_SET_NULL(sUnknown_0203AB20);
- FREE_AND_SET_NULL(sUnknown_0203AB24);
- FREE_AND_SET_NULL(sUnknown_0203AB28);
- if (sUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAE4);
- if (sUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAE8);
- if (sUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAEC);
- if (sUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAF0);
- FREE_AND_SET_NULL(sUnknown_0203AAC8);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Reel);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Time);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Insert);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Stop);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Win);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Lose);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Bonus);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Big);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Reg);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_AButton);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Smoke);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Number);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_Pokeball);
+ FREE_AND_SET_NULL(sImageTable_DigitalDisplay_DPad);
+ if (sImageTable_ReelTimePikachu != NULL)
+ FREE_AND_SET_NULL(sImageTable_ReelTimePikachu);
+ if (sImageTable_ReelTimeMachineAntennae != NULL)
+ FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae);
+ if (sImageTable_ReelTimeMachine != NULL)
+ FREE_AND_SET_NULL(sImageTable_ReelTimeMachine);
+ if (sImageTable_BrokenReelTimeMachine != NULL)
+ FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine);
+ FREE_AND_SET_NULL(sMenuGfx);
FREE_AND_SET_NULL(sSelectedPikaPowerTile);
- FREE_AND_SET_NULL(sUnknown_0203AAD0);
- FREE_AND_SET_NULL(sUnknown_0203AAD4);
- FREE_AND_SET_NULL(sUnknown_0203AAD8);
- FREE_AND_SET_NULL(sUnknown_0203AADC);
- FREE_AND_SET_NULL(sUnknown_0203AAE0);
- FREE_AND_SET_NULL(sUnknown_0203AB2C);
- FREE_AND_SET_NULL(sUnknown_0203AB30);
-
+ FREE_AND_SET_NULL(sReelOverlay_Tilemap);
+ FREE_AND_SET_NULL(sDigitalDisplayGfxPtr);
+ FREE_AND_SET_NULL(sReelTimeGfxPtr);
+ FREE_AND_SET_NULL(sReelButtonPress_Tilemap);
+ FREE_AND_SET_NULL(sReelBackground_Gfx);
+ FREE_AND_SET_NULL(sReelBackgroundSpriteSheet);
+ FREE_AND_SET_NULL(sSlotMachineSpritesheetsPtr);
FREE_AND_SET_NULL(sSlotMachine);
}
return FALSE;
@@ -1403,7 +1644,7 @@ static void DrawLuckyFlags(void)
{
u8 attempts;
- if (sSlotMachine->fairRollsLeft == 0)
+ if (sSlotMachine->reelTimeSpinsLeft == 0)
{
if (!(sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777)))
{
@@ -1413,7 +1654,7 @@ static void DrawLuckyFlags(void)
if (attempts != 3) // if you found a lucky number
{
// attempts == 1: reelTime flag set
- sSlotMachine->luckyFlags |= gLuckyFlagSettings_Top3[attempts];
+ sSlotMachine->luckyFlags |= sLuckyFlagSettings_Top3[attempts];
if (attempts != 1)
{
return;
@@ -1424,7 +1665,7 @@ static void DrawLuckyFlags(void)
attempts = AttemptsAtLuckyFlags_NotTop3();
if (attempts != 5) // if you found a lucky number
{
- sSlotMachine->luckyFlags |= gLuckyFlagSettings_NotTop3[attempts];
+ sSlotMachine->luckyFlags |= sLuckyFlagSettings_NotTop3[attempts];
}
}
}
@@ -1432,9 +1673,9 @@ static void DrawLuckyFlags(void)
static void SetLuckySpins(void)
{
- sSlotMachine->luckySpinsLeft = 0;
+ sSlotMachine->isLuckySpin = FALSE;
if (sSlotMachine->luckyFlags)
- sSlotMachine->luckySpinsLeft = 1;
+ sSlotMachine->isLuckySpin = TRUE;
}
static u8 GetBiasTag(u8 luckyFlags)
@@ -1444,7 +1685,7 @@ static u8 GetBiasTag(u8 luckyFlags)
for (i = 0; i < 8; i++)
{
if (luckyFlags & 1)
- return gBiasTags[i];
+ return sBiasTags[i];
luckyFlags >>= 1;
}
return 0;
@@ -1454,7 +1695,7 @@ static u8 GetBiasTag(u8 luckyFlags)
static bool8 IsThisRoundLucky(void)
{
u8 rval = Random();
- if (gLuckyRoundProbabilities[sSlotMachine->machineId][sSlotMachine->bet - 1] > rval)
+ if (sLuckyRoundProbabilities[sSlotMachine->machineId][sSlotMachine->bet - 1] > rval)
return TRUE;
return FALSE;
}
@@ -1466,7 +1707,7 @@ static u8 AttemptsAtLuckyFlags_Top3(void)
for (count = 0; count < 3; count++)
{
s16 rval = Random() & 0xff;
- s16 value = gLuckyFlagProbabilities_Top3[count][sSlotMachine->machineId];
+ s16 value = sLuckyFlagProbabilities_Top3[count][sSlotMachine->machineId];
if (value > rval)
break;
}
@@ -1480,7 +1721,7 @@ static u8 AttemptsAtLuckyFlags_NotTop3(void)
for (count = 0; count < 5; count++)
{
s16 rval = Random() & 0xff; // random byte
- s16 value = gLuckyFlagProbabilities_NotTop3[count][sSlotMachine->machineId];
+ s16 value = sLuckyFlagProbabilities_NotTop3[count][sSlotMachine->machineId];
// make first attempt easier if it's a lucky game
if (count == 0 && sSlotMachine->luckyGame == TRUE)
{
@@ -1504,9 +1745,9 @@ static u8 AttemptsAtLuckyFlags_NotTop3(void)
static u8 GetReelTimeProbability(u8 reelTimeDraw)
{
if (sSlotMachine->luckyGame == FALSE)
- return gReeltimeProbabilities_UnluckyGame[reelTimeDraw][sSlotMachine->pikaPower];
+ return sReeltimeProbabilities_UnluckyGame[reelTimeDraw][sSlotMachine->pikaPower];
else
- return gReelTimeProbabilities_LuckyGame[reelTimeDraw][sSlotMachine->pikaPower];
+ return sReelTimeProbabilities_LuckyGame[reelTimeDraw][sSlotMachine->pikaPower];
}
static void GetReeltimeDraw(void)
@@ -1527,10 +1768,10 @@ static void GetReeltimeDraw(void)
sSlotMachine->reelTimeDraw = reelTimeDraw;
}
-static bool8 SkipToReeltimeAction14(u16 i)
+static bool8 ShouldReelTimeMachineExplode(u16 i)
{
u16 rval = Random() & 0xff;
- if (rval < gProbabilityTable_SkipToReeltimeAction14[i])
+ if (rval < sReelTimeExplodeProbability[i])
return TRUE;
else
return FALSE;
@@ -1550,11 +1791,11 @@ static u16 SlowReelSpeed(void)
else if (sSlotMachine->netCoinLoss >= 150)
i = 1;
rval = Random() % 100;
- value = gReelIncrementTable[i][0];
+ value = sReelIncrementTable[i][0];
if (rval < value)
return 4;
rval = Random() % 100;
- value = gReelIncrementTable[i][1] + gReelTimeBonusIncrementTable[sSlotMachine->fairRollsUsed];
+ value = sReelIncrementTable[i][1] + sReelTimeBonusIncrementTable[sSlotMachine->reelTimeSpinsUsed];
if (rval < value)
return 2;
return 8;
@@ -1577,12 +1818,12 @@ static void CheckMatch_CenterRow(void)
c1 = GetTagAtRest(LEFT_REEL, 2);
c2 = GetTagAtRest(MIDDLE_REEL, 2);
c3 = GetTagAtRest(RIGHT_REEL, 2);
- match = GetMatchFromSymbolsInRow(c1, c2, c3);
- if (match != SLOT_MACHINE_MATCHED_NONE)
+ match = GetMatchFromSymbols(c1, c2, c3);
+ if (match != MATCHED_NONE)
{
- sSlotMachine->payout += gSlotPayouts[match];
- sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
- sub_8103E04(0);
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ FlashMatchLine(MATCH_MIDDLE_ROW);
}
}
@@ -1593,26 +1834,26 @@ static void CheckMatch_TopAndBottom(void)
c1 = GetTagAtRest(LEFT_REEL, 1);
c2 = GetTagAtRest(MIDDLE_REEL, 1);
c3 = GetTagAtRest(RIGHT_REEL, 1);
- match = GetMatchFromSymbolsInRow(c1, c2, c3);
- if (match != SLOT_MACHINE_MATCHED_NONE)
+ match = GetMatchFromSymbols(c1, c2, c3);
+ if (match != MATCHED_NONE)
{
- if (match == SLOT_MACHINE_MATCHED_1CHERRY)
- match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += gSlotPayouts[match];
- sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
- sub_8103E04(1);
+ if (match == MATCHED_1CHERRY)
+ match = MATCHED_2CHERRY;
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ FlashMatchLine(MATCH_TOP_ROW);
}
c1 = GetTagAtRest(LEFT_REEL, 3);
c2 = GetTagAtRest(MIDDLE_REEL, 3);
c3 = GetTagAtRest(RIGHT_REEL, 3);
- match = GetMatchFromSymbolsInRow(c1, c2, c3);
- if (match != SLOT_MACHINE_MATCHED_NONE)
+ match = GetMatchFromSymbols(c1, c2, c3);
+ if (match != MATCHED_NONE)
{
- if (match == SLOT_MACHINE_MATCHED_1CHERRY)
- match = SLOT_MACHINE_MATCHED_2CHERRY;
- sSlotMachine->payout += gSlotPayouts[match];
- sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
- sub_8103E04(2);
+ if (match == MATCHED_1CHERRY)
+ match = MATCHED_2CHERRY;
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ FlashMatchLine(MATCH_BOTTOM_ROW);
}
}
@@ -1623,42 +1864,42 @@ static void CheckMatch_Diagonals(void)
c1 = GetTagAtRest(LEFT_REEL, 1);
c2 = GetTagAtRest(MIDDLE_REEL, 2);
c3 = GetTagAtRest(RIGHT_REEL, 3);
- match = GetMatchFromSymbolsInRow(c1, c2, c3);
- if (match != SLOT_MACHINE_MATCHED_NONE)
+ match = GetMatchFromSymbols(c1, c2, c3);
+ if (match != MATCHED_NONE)
{
- if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ if (match != MATCHED_1CHERRY)
{
- sSlotMachine->payout += gSlotPayouts[match];
- sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
}
- sub_8103E04(3);
+ FlashMatchLine(MATCH_NWSE_DIAG);
}
c1 = GetTagAtRest(LEFT_REEL, 3);
c2 = GetTagAtRest(MIDDLE_REEL, 2);
c3 = GetTagAtRest(RIGHT_REEL, 1);
- match = GetMatchFromSymbolsInRow(c1, c2, c3);
- if (match != SLOT_MACHINE_MATCHED_NONE)
+ match = GetMatchFromSymbols(c1, c2, c3);
+ if (match != MATCHED_NONE)
{
- if (match != SLOT_MACHINE_MATCHED_1CHERRY)
+ if (match != MATCHED_1CHERRY)
{
- sSlotMachine->payout += gSlotPayouts[match];
- sSlotMachine->matchedSymbols |= gSlotMatchFlags[match];
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
}
- sub_8103E04(4);
+ FlashMatchLine(MATCH_NESW_DIAG);
}
}
-static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
+static u8 GetMatchFromSymbols(u8 c1, u8 c2, u8 c3)
{
if (c1 == c2 && c1 == c3)
- return gSym2Match[c1];
- if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE)
- return SLOT_MACHINE_MATCHED_777_MIXED;
- if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED)
- return SLOT_MACHINE_MATCHED_777_MIXED;
- if (c1 == SLOT_MACHINE_TAG_CHERRY)
- return SLOT_MACHINE_MATCHED_1CHERRY;
- return SLOT_MACHINE_MATCHED_NONE;
+ return sSymToMatch[c1];
+ if (c1 == GFXTAG_7_RED && c2 == GFXTAG_7_RED && c3 == GFXTAG_7_BLUE)
+ return MATCHED_777_MIXED;
+ if (c1 == GFXTAG_7_BLUE && c2 == GFXTAG_7_BLUE && c3 == GFXTAG_7_RED)
+ return MATCHED_777_MIXED;
+ if (c1 == GFXTAG_CHERRY)
+ return MATCHED_1CHERRY;
+ return MATCHED_NONE;
}
static void AwardPayout(void)
@@ -1676,13 +1917,13 @@ static bool8 IsFinalTask_RunAwardPayoutActions(void)
static void RunAwardPayoutActions(u8 taskId)
{
- while (AwardPayoutActions[gTasks[taskId].data[0]](&gTasks[taskId]))
+ while (sAwardPayoutActions[gTasks[taskId].data[0]](&gTasks[taskId]))
;
}
static bool8 AwardPayoutAction0(struct Task *task)
{
- if (sub_8103E38())
+ if (IsMatchLineDoneFlashingBeforePayout())
{
task->data[0]++;
if (sSlotMachine->payout == 0)
@@ -1707,7 +1948,7 @@ static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task)
if (gMain.heldKeys & A_BUTTON)
task->data[1] = 4;
}
- if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON)
+ if (IsFanfareTaskInactive() && JOY_NEW(START_BUTTON))
{
PlaySE(SE_PIN);
sSlotMachine->coins += sSlotMachine->payout;
@@ -1722,7 +1963,7 @@ static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task)
static bool8 AwardPayoutAction_FreeTask(struct Task *task)
{
- if (sub_8103E7C())
+ if (TryStopMatchLinesFlashing())
DestroyTask(FindTaskIdByFunc(RunAwardPayoutActions));
return FALSE;
}
@@ -1741,17 +1982,17 @@ static bool8 AwardPayoutAction_FreeTask(struct Task *task)
// .-----------------.
static u8 GetTagAtRest(u8 reel, s16 offset)
{
- s16 pos = (sSlotMachine->reelPositions[reel] + offset) % REEL_NUM_TAGS;
+ s16 pos = (sSlotMachine->reelPositions[reel] + offset) % SYMBOLS_PER_REEL;
if (pos < 0)
- pos += REEL_NUM_TAGS;
- return gReelSymbols[reel][pos];
+ pos += SYMBOLS_PER_REEL;
+ return sReelSymbolTileTags[reel][pos];
}
// Calculates GetTagAtRest as if the reel were snapped downwards into place.
static u8 GetTag(u8 reel, s16 offset)
{
s16 inc = 0;
- s16 pixelOffset = sSlotMachine->reelPixelOffsets[reel] % REEL_TAG_HEIGHT;
+ s16 pixelOffset = sSlotMachine->reelPixelOffsets[reel] % REEL_SYMBOL_HEIGHT;
if (pixelOffset != 0)
inc = -1;
return GetTagAtRest(reel, offset + inc);
@@ -1762,25 +2003,25 @@ static u8 GetNearbyReelTimeTag(s16 n)
s16 newPosition = (sSlotMachine->reeltimePosition + n) % 6;
if (newPosition < 0)
newPosition += 6;
- return gReelTimeTags[newPosition];
+ return sReelTimeTags[newPosition];
}
static void AdvanceSlotReel(u8 reelIndex, s16 value)
{
sSlotMachine->reelPixelOffsets[reelIndex] += value;
sSlotMachine->reelPixelOffsets[reelIndex] %= 504;
- sSlotMachine->reelPositions[reelIndex] = REEL_NUM_TAGS - sSlotMachine->reelPixelOffsets[reelIndex] / 24;
+ sSlotMachine->reelPositions[reelIndex] = SYMBOLS_PER_REEL - sSlotMachine->reelPixelOffsets[reelIndex] / REEL_SYMBOL_HEIGHT;
}
s16 AdvanceSlotReelToNextTag(u8 reelIndex, s16 value)
{
- s16 offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
+ s16 offset = sSlotMachine->reelPixelOffsets[reelIndex] % REEL_SYMBOL_HEIGHT;
if (offset != 0)
{
if (offset < value)
value = offset;
AdvanceSlotReel(reelIndex, value);
- offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24;
+ offset = sSlotMachine->reelPixelOffsets[reelIndex] % REEL_SYMBOL_HEIGHT;
}
return offset;
}
@@ -1805,42 +2046,45 @@ s16 AdvanceReeltimeReelToNextTag(s16 value)
return offset;
}
-static void GameplayTask_StopSlotReel(void)
+#define tState data[0]
+#define tMoving data[14]
+#define tReelId data[15]
+
+static void CreateSlotReelTasks(void)
{
u8 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < NUM_REELS; i++)
{
- u8 taskId = CreateTask(RunSlotReelActions, 2);
- gTasks[taskId].data[15] = i;
+ u8 taskId = CreateTask(Task_RunSlotReelActions, 2);
+ gTasks[taskId].tReelId = i;
sSlotMachine->slotReelTasks[i] = taskId;
- RunSlotReelActions(taskId);
+ Task_RunSlotReelActions(taskId);
}
}
-static void ReelTasks_SetUnkTaskData(u8 reelIndex)
+static void SpinSlotReel(u8 reelIndex)
{
- gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 1;
- gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14] = 1;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].tState = REEL_ACTION_SPIN;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].tMoving = TRUE;
}
-static void sub_8102E1C(u8 reelIndex)
+static void StopSlotReel(u8 reelIndex)
{
- gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 2;
+ gTasks[sSlotMachine->slotReelTasks[reelIndex]].tState = REEL_ACTION_STOP;
}
static bool8 IsSlotReelMoving(u8 reelIndex)
{
- return gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14];
+ return gTasks[sSlotMachine->slotReelTasks[reelIndex]].tMoving;
}
-static void RunSlotReelActions(u8 taskId)
+static void Task_RunSlotReelActions(u8 taskId)
{
- while (SlotReelActions[gTasks[taskId].data[0]](&gTasks[taskId]))
+ while (sSlotReelActions[gTasks[taskId].tState](&gTasks[taskId]))
;
}
// task->data[1] reel turns
-// task->data[15] reelIndex
static bool8 SlotReelAction_StayStill(struct Task *task)
{
return FALSE;
@@ -1848,46 +2092,46 @@ static bool8 SlotReelAction_StayStill(struct Task *task)
static bool8 SlotReelAction_Spin(struct Task *task)
{
- AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
+ AdvanceSlotReel(task->tReelId, sSlotMachine->reelIncrement);
return FALSE;
}
// As in previous generations, the slot machine often doesn't stop exactly when you press stop
static bool8 SlotReelAction_DecideWhereToStop(struct Task *task)
{
- task->data[0]++;
- // initialize data for that reel --> these will be changed if gBiasTags can be lined up
- sSlotMachine->winnerRows[task->data[15]] = 0;
- sSlotMachine->reelExtraTurns[task->data[15]] = 0;
+ task->tState++;
+ // initialize data for that reel --> these will be changed if sBiasTags can be lined up
+ sSlotMachine->winnerRows[task->tReelId] = 0;
+ sSlotMachine->reelExtraTurns[task->tReelId] = 0;
- if (sSlotMachine->fairRollsLeft == 0 && (sSlotMachine->luckyFlags == 0 || sSlotMachine->luckySpinsLeft == 0 || !DecideReelTurns_BiasTag[task->data[15]]()))
+ if (sSlotMachine->reelTimeSpinsLeft == 0 && (sSlotMachine->luckyFlags == 0 || !sSlotMachine->isLuckySpin || !sDecideReelTurns_BiasTag[task->tReelId]()))
{
- sSlotMachine->luckySpinsLeft = 0;
- DecideReelTurns_NoBiasTag[task->data[15]]();
+ sSlotMachine->isLuckySpin = FALSE;
+ sDecideReelTurns_NoBiasTag[task->tReelId]();
}
- task->data[1] = sSlotMachine->reelExtraTurns[task->data[15]];
+ task->data[1] = sSlotMachine->reelExtraTurns[task->tReelId];
return TRUE;
}
// go to next tag and then do any additional turns
static bool8 SlotReelAction_MoveToStop(struct Task *task)
{
- u16 reelStopShocks[ARRAY_COUNT(ReelStopShocks)];
+ u16 reelStopShocks[ARRAY_COUNT(sReelStopShocks)];
s16 reelPixelPos;
- memcpy(reelStopShocks, ReelStopShocks, sizeof(ReelStopShocks));
- reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
+ memcpy(reelStopShocks, sReelStopShocks, sizeof(sReelStopShocks));
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->tReelId] % REEL_SYMBOL_HEIGHT;
if (reelPixelPos != 0)
- reelPixelPos = AdvanceSlotReelToNextTag(task->data[15], sSlotMachine->reelIncrement);
- else if (sSlotMachine->reelExtraTurns[task->data[15]])
+ reelPixelPos = AdvanceSlotReelToNextTag(task->tReelId, sSlotMachine->reelIncrement);
+ else if (sSlotMachine->reelExtraTurns[task->tReelId])
{
- sSlotMachine->reelExtraTurns[task->data[15]]--;
- AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement);
- reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24;
+ sSlotMachine->reelExtraTurns[task->tReelId]--;
+ AdvanceSlotReel(task->tReelId, sSlotMachine->reelIncrement);
+ reelPixelPos = sSlotMachine->reelPixelOffsets[task->tReelId] % REEL_SYMBOL_HEIGHT;
}
- if (reelPixelPos == 0 && sSlotMachine->reelExtraTurns[task->data[15]] == 0)
+ if (reelPixelPos == 0 && sSlotMachine->reelExtraTurns[task->tReelId] == 0)
{
- task->data[0]++;
+ task->tState++;
task->data[1] = reelStopShocks[task->data[1]];
task->data[2] = 0;
}
@@ -1897,30 +2141,34 @@ static bool8 SlotReelAction_MoveToStop(struct Task *task)
// make selected tag oscillate before it becomes still
static bool8 SlotReelAction_OscillatingStop(struct Task *task)
{
- sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = task->data[1];
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->tReelId] = task->data[1];
task->data[1] = -task->data[1];
task->data[2]++;
if ((task->data[2] & 0x3) == 0)
task->data[1] >>= 1;
if (task->data[1] == 0)
{
- task->data[0] = 0;
- task->data[14] = 0;
- sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = 0;
+ task->tState = 0;
+ task->tMoving = FALSE;
+ sSlotMachine->reelPixelOffsetsWhileStopping[task->tReelId] = 0;
}
return FALSE;
}
+#undef tState
+#undef tMoving
+#undef tReelId
+
static bool8 DecideReelTurns_BiasTag_Reel1(void)
{
u8 tag2 = GetBiasTag(sSlotMachine->luckyFlags);
u8 tag1 = tag2;
if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777))
{
- tag1 = SLOT_MACHINE_TAG_7_RED;
- tag2 = SLOT_MACHINE_TAG_7_BLUE;
+ tag1 = GFXTAG_7_RED;
+ tag2 = GFXTAG_7_BLUE;
}
- return DecideReelTurns_BiasTag_Reel1_Bets[sSlotMachine->bet - 1](tag1, tag2);
+ return sDecideReelTurns_BiasTag_Reel1_Bets[sSlotMachine->bet - 1](tag1, tag2);
}
static bool8 AreTagsAtPosition_Reel1(s16 pos, u8 tag1, u8 tag2)
@@ -1936,7 +2184,9 @@ static bool8 AreTagsAtPosition_Reel1(s16 pos, u8 tag1, u8 tag2)
static bool8 AreCherriesOnScreen_Reel1(s16 offsetFromCenter)
{
- if (GetTag(LEFT_REEL, 1 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetTag(LEFT_REEL, 2 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetTag(LEFT_REEL, 3 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY)
+ if (GetTag(LEFT_REEL, 1 - offsetFromCenter) == GFXTAG_CHERRY
+ || GetTag(LEFT_REEL, 2 - offsetFromCenter) == GFXTAG_CHERRY
+ || GetTag(LEFT_REEL, 3 - offsetFromCenter) == GFXTAG_CHERRY)
return TRUE;
else
return FALSE;
@@ -1959,7 +2209,7 @@ static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 tag1, u8 tag2)
// if a lucky tag appears in the center row within 4 turns
if (AreTagsAtPosition_Reel1(2 - i, tag1, tag2))
{
- sSlotMachine->winnerRows[0] = 2;
+ sSlotMachine->winnerRows[LEFT_REEL] = 2;
sSlotMachine->reelExtraTurns[0] = i;
return TRUE;
}
@@ -2020,7 +2270,7 @@ static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 tag1, u8 tag2)
static bool8 DecideReelTurns_BiasTag_Reel2(void)
{
- return DecideReelTurns_BiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
+ return sDecideReelTurns_BiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void)
@@ -2085,13 +2335,13 @@ static bool8 DecideReelTurns_BiasTag_Reel3(void)
u8 biasTag = sSlotMachine->biasTag;
if (sSlotMachine->luckyFlags & LUCKY_BIAS_MIXED_777)
{
- biasTag = SLOT_MACHINE_TAG_7_RED;
- if (sSlotMachine->biasTag == SLOT_MACHINE_TAG_7_RED)
+ biasTag = GFXTAG_7_RED;
+ if (sSlotMachine->biasTag == GFXTAG_7_RED)
{
- biasTag = SLOT_MACHINE_TAG_7_BLUE;
+ biasTag = GFXTAG_7_BLUE;
}
}
- return DecideReelTurns_BiasTag_Reel3_Bets[sSlotMachine->bet - 1](biasTag);
+ return sDecideReelTurns_BiasTag_Reel3_Bets[sSlotMachine->bet - 1](biasTag);
}
static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 biasTag)
@@ -2151,14 +2401,14 @@ static void DecideReelTurns_NoBiasTag_Reel1(void)
static bool8 IsBiasTag777_SwitchColor(u8 *biasTagPtr)
{
- if (*biasTagPtr == SLOT_MACHINE_TAG_7_RED)
+ if (*biasTagPtr == GFXTAG_7_RED)
{
- *biasTagPtr = SLOT_MACHINE_TAG_7_BLUE;
+ *biasTagPtr = GFXTAG_7_BLUE;
return TRUE;
}
- if (*biasTagPtr == SLOT_MACHINE_TAG_7_BLUE)
+ if (*biasTagPtr == GFXTAG_7_BLUE)
{
- *biasTagPtr = SLOT_MACHINE_TAG_7_RED;
+ *biasTagPtr = GFXTAG_7_RED;
return TRUE;
}
return FALSE;
@@ -2166,7 +2416,7 @@ static bool8 IsBiasTag777_SwitchColor(u8 *biasTagPtr)
static void DecideReelTurns_NoBiasTag_Reel2(void)
{
- DecideReelTurns_NoBiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
+ sDecideReelTurns_NoBiasTag_Reel2_Bets[sSlotMachine->bet - 1]();
}
// only does stuff if the biasTag is one of the 7's, plus other conditions
@@ -2289,7 +2539,7 @@ static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void)
static bool8 AreTagsMixed77(u8 tag1, u8 tag2)
{
- if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED))
+ if ((tag1 == GFXTAG_7_RED && tag2 == GFXTAG_7_BLUE) || (tag1 == GFXTAG_7_BLUE && tag2 == GFXTAG_7_RED))
return TRUE;
else
return FALSE;
@@ -2297,8 +2547,8 @@ static bool8 AreTagsMixed77(u8 tag1, u8 tag2)
static bool8 AreTagsMixed777(u8 tag1, u8 tag2, u8 tag3)
{
- if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
- (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE))
+ if ((tag1 == GFXTAG_7_RED && tag2 == GFXTAG_7_BLUE && tag3 == GFXTAG_7_RED) ||
+ (tag1 == GFXTAG_7_BLUE && tag2 == GFXTAG_7_RED && tag3 == GFXTAG_7_BLUE))
return TRUE;
else
return FALSE;
@@ -2306,10 +2556,10 @@ static bool8 AreTagsMixed777(u8 tag1, u8 tag2, u8 tag3)
static bool8 TagsDontMatchOrHaveAny7s(u8 tag1, u8 tag2, u8 tag3)
{
- if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
- (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
- (tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) ||
- (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) ||
+ if ((tag1 == GFXTAG_7_RED && tag2 == GFXTAG_7_BLUE && tag3 == GFXTAG_7_RED) ||
+ (tag1 == GFXTAG_7_BLUE && tag2 == GFXTAG_7_RED && tag3 == GFXTAG_7_BLUE) ||
+ (tag1 == GFXTAG_7_RED && tag2 == GFXTAG_7_RED && tag3 == GFXTAG_7_BLUE) ||
+ (tag1 == GFXTAG_7_BLUE && tag2 == GFXTAG_7_BLUE && tag3 == GFXTAG_7_RED) ||
(tag1 == tag2 && tag1 == tag3))
{
return FALSE;
@@ -2319,7 +2569,7 @@ static bool8 TagsDontMatchOrHaveAny7s(u8 tag1, u8 tag2, u8 tag3)
static void DecideReelTurns_NoBiasTag_Reel3(void)
{
- DecideReelTurns_NoBiasTag_Reel3_Bets[sSlotMachine->bet - 1]();
+ sDecideReelTurns_NoBiasTag_Reel3_Bets[sSlotMachine->bet - 1]();
}
static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void)
@@ -2334,7 +2584,7 @@ static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void)
while (1)
{
u8 tag3;
- if (!(tag1 == (tag3 = GetTag(RIGHT_REEL, 2 - i)) || (tag1 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED)))
+ if (!(tag1 == (tag3 = GetTag(RIGHT_REEL, 2 - i)) || (tag1 == GFXTAG_7_RED && tag3 == GFXTAG_7_BLUE) || (tag1 == GFXTAG_7_BLUE && tag3 == GFXTAG_7_RED)))
break;
i++;
}
@@ -2465,273 +2715,312 @@ static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void)
}
}
-static void sub_8103C14(u8 a0)
+static void PressStopReelButton(u8 reelNum)
{
- u8 taskId = CreateTask(sub_8103C48, 5);
- gTasks[taskId].data[15] = a0;
- sub_8103C48(taskId);
+ u8 taskId = CreateTask(Task_PressStopReelButton, 5);
+ gTasks[taskId].data[15] = reelNum;
+ Task_PressStopReelButton(taskId);
}
-static void sub_8103C48(u8 taskId)
+static void Task_PressStopReelButton(u8 taskId)
{
- gUnknown_083ECBA0[gTasks[taskId].data[0]](&gTasks[taskId], taskId);
+ sReelStopButtonFuncs[gTasks[taskId].data[0]](&gTasks[taskId], taskId);
}
-static void sub_8103C78(struct Task *task, u8 taskId)
+static void StopReelButton_Press(struct Task *task, u8 taskId)
{
- sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73);
+ SetReelButtonTilemap(sReelButtonOffsets[task->data[15]], 0x62, 0x63, 0x72, 0x73);
task->data[0]++;
}
-static void sub_8103CAC(struct Task *task, u8 taskId)
+static void StopReelButton_Wait(struct Task *task, u8 taskId)
{
if (++task->data[1] > 11)
task->data[0]++;
}
-static void sub_8103CC8(struct Task *task, u8 taskId)
+static void StopReelButton_Unpress(struct Task *task, u8 taskId)
{
- sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53);
+ SetReelButtonTilemap(sReelButtonOffsets[task->data[15]], 0x42, 0x43, 0x52, 0x53);
DestroyTask(taskId);
}
-static void LoadLitTile(u8 tileId)
+static void LightenMatchLine(u8 matchLineId)
{
- LoadPalette(gUnknown_083EDD08[tileId], gUnknown_083EDD30[tileId], 2);
+ LoadPalette(sLitMatchLinePalTable[matchLineId], sMatchLinePalOffsets[matchLineId], 2);
}
-static void sub_8103D28(u8 a0)
+static void DarkenMatchLine(u8 matchLineId)
{
- LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2);
+ LoadPalette(sDarkMatchLinePalTable[matchLineId], sMatchLinePalOffsets[matchLineId], 2);
}
-// light up the value bet by the player
-static void LoadBetTiles(u8 betVal)
+// light up the match line for each bet by the player
+static void LightenBetTiles(u8 betVal)
{
u8 i;
- for (i = 0; i < gNumberBettingTiles[betVal]; i++)
- LoadLitTile(gBettingTilesId[betVal][i]);
+ for (i = 0; i < sMatchLinesPerBet[betVal]; i++)
+ LightenMatchLine(sBetToMatchLineIds[betVal][i]);
}
-static void sub_8103D8C(u8 a0)
+static void DarkenBetTiles(u8 betVal)
{
u8 i;
- for (i = 0; i < gNumberBettingTiles[a0]; i++)
- sub_8103D28(gBettingTilesId[a0][i]);
+ for (i = 0; i < sMatchLinesPerBet[betVal]; i++)
+ DarkenMatchLine(sBetToMatchLineIds[betVal][i]);
}
-static void sub_8103DC8(void)
+#define sMatchLineId data[0]
+#define sFlashing data[1]
+#define sNumFullFlashes data[2]
+#define sDelayTimer data[3]
+#define sColor data[4]
+#define sColorIncr data[5]
+#define sAtOriginalColor data[7]
+
+// Creates invisible sprites that flash the bet lines/numbers where a match occurs
+// 5 are created, 1 for each possible match line (3 rows, 2 diagonals)
+static void CreateInvisibleFlashMatchLineSprites(void)
{
u8 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->flashMatchLineSpriteIds); i++)
{
- u8 spriteId = CreateInvisibleSprite(sub_8103EE4);
- gSprites[spriteId].data[0] = i;
- sSlotMachine->unk44[i] = spriteId;
+ u8 spriteId = CreateInvisibleSprite(SpriteCB_FlashMatchingLines);
+ gSprites[spriteId].sMatchLineId = i;
+ sSlotMachine->flashMatchLineSpriteIds[i] = spriteId;
}
}
-static void sub_8103E04(u8 a0)
+static void FlashMatchLine(u8 matchLineId)
{
- struct Sprite *sprite = gSprites + sSlotMachine->unk44[a0];
- sprite->data[1] = 1;
- sprite->data[2] = 4;
- sprite->data[3] = 0;
- sprite->data[4] = 0;
- sprite->data[5] = 2;
- sprite->data[7] = 0;
+ struct Sprite *sprite = &gSprites[sSlotMachine->flashMatchLineSpriteIds[matchLineId]];
+ sprite->sFlashing = TRUE;
+ sprite->sNumFullFlashes = 4;
+ sprite->sDelayTimer = 0;
+ sprite->sColor = 0;
+ sprite->sColorIncr = 2;
+ sprite->sAtOriginalColor = FALSE;
}
-// something with payout digits
-static bool8 sub_8103E38(void)
+// Match line flashes 4 times before the payout begins
+// After this it does half-brightness flashes until the payout finishes
+static bool8 IsMatchLineDoneFlashingBeforePayout(void)
{
u8 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->flashMatchLineSpriteIds); i++)
{
- struct Sprite *sprite = &gSprites[sSlotMachine->unk44[i]];
- if (sprite->data[1] && sprite->data[2])
+ struct Sprite *sprite = &gSprites[sSlotMachine->flashMatchLineSpriteIds[i]];
+ if (sprite->sFlashing && sprite->sNumFullFlashes)
return FALSE;
}
return TRUE;
}
-static bool8 sub_8103E7C(void)
+// When payout is finished, stop lines flashing (but not if they're in the middle of a flash)
+static bool8 TryStopMatchLinesFlashing(void)
{
u8 i;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->flashMatchLineSpriteIds); i++)
{
- if (!sub_8103EAC(sSlotMachine->unk44[i]))
+ if (!TryStopMatchLineFlashing(sSlotMachine->flashMatchLineSpriteIds[i]))
return FALSE;
}
return TRUE;
}
-static bool8 sub_8103EAC(u8 spriteId)
+static bool8 TryStopMatchLineFlashing(u8 spriteId)
{
- struct Sprite *sprite = gSprites + spriteId;
- if (!sprite->data[1])
+ struct Sprite *sprite = &gSprites[spriteId];
+ if (!sprite->sFlashing)
return TRUE;
- if (sprite->data[7])
- sprite->data[1] = 0;
- return sprite->data[7];
+ if (sprite->sAtOriginalColor)
+ sprite->sFlashing = FALSE;
+
+ return sprite->sAtOriginalColor;
}
-static void sub_8103EE4(struct Sprite *sprite)
+static void SpriteCB_FlashMatchingLines(struct Sprite *sprite)
{
- s16 r4;
- if (sprite->data[1])
+ s16 maxColorChange;
+ if (sprite->sFlashing)
{
- if (!sprite->data[3]--)
+ if (!sprite->sDelayTimer--)
{
- sprite->data[7] = 0;
- sprite->data[3] = 1;
- sprite->data[4] += sprite->data[5];
- r4 = 4;
- if (sprite->data[2])
- r4 = 8;
- if (sprite->data[4] <= 0)
+ sprite->sAtOriginalColor = FALSE;
+ sprite->sDelayTimer = 1;
+ sprite->sColor += sprite->sColorIncr;
+ maxColorChange = 4;
+ if (sprite->sNumFullFlashes)
+ maxColorChange = 8;
+ if (sprite->sColor <= 0)
{
- sprite->data[7] = 1;
- sprite->data[5] = -sprite->data[5];
- if (sprite->data[2])
- sprite->data[2]--;
+ // Returned to original color, reverse
+ sprite->sAtOriginalColor = TRUE;
+ sprite->sColorIncr = -sprite->sColorIncr;
+ if (sprite->sNumFullFlashes)
+ sprite->sNumFullFlashes--;
+ }
+ else if (sprite->sColor >= maxColorChange) {
+ // Reached peak darkness, reverse
+ sprite->sColorIncr = -sprite->sColorIncr;
}
- else if (sprite->data[4] >= r4)
- sprite->data[5] = -sprite->data[5];
- if (sprite->data[2])
- sprite->data[3] <<= 1;
+ if (sprite->sNumFullFlashes)
+ sprite->sDelayTimer <<= 1;
}
- MultiplyPaletteRGBComponents(gUnknown_083EDD30[sprite->data[0]], sprite->data[4], sprite->data[4], sprite->data[4]);
+ MultiplyPaletteRGBComponents(sMatchLinePalOffsets[sprite->sMatchLineId], sprite->sColor, sprite->sColor, sprite->sColor);
}
}
-static void sub_8103F70(void)
+#undef sMatchLineId
+#undef sFlashing
+#undef sNumFullFlashes
+#undef sDelayTimer
+#undef sColor
+#undef sColorIncr
+#undef sAtOriginalColor
+
+#define sDelayTimer data[1]
+#define sFlashState data[2]
+#define sFlashDir data[3]
+
+static void FlashSlotMachineLights(void)
{
- u8 taskId = CreateTask(sub_8103FE8_, 6);
- gTasks[taskId].data[3] = 1;
- sub_8103FE8_(taskId);
+ u8 taskId = CreateTask(Task_FlashSlotMachineLights, 6);
+ gTasks[taskId].sFlashDir = 1;
+ Task_FlashSlotMachineLights(taskId);
}
-static bool8 sub_8103FA0(void)
+static bool8 TryStopSlotMachineLights(void)
{
- u8 taskId = FindTaskIdByFunc(sub_8103FE8_);
- if (!gTasks[taskId].data[2])
+ u8 taskId = FindTaskIdByFunc(Task_FlashSlotMachineLights);
+ if (gTasks[taskId].sFlashState == 0)
{
DestroyTask(taskId);
- LoadPalette(gUnknown_083EDDAC, 0x10, 0x20);
+ LoadPalette(sSlotMachineMenu_Pal, 0x10, 0x20);
return TRUE;
}
return FALSE;
}
-static void sub_8103FE8_(u8 taskId)
+static void Task_FlashSlotMachineLights(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- if (!task->data[1]--)
+ if (!task->sDelayTimer--)
{
- task->data[1] = 4;
- task->data[2] += task->data[3];
- if (task->data[2] == 0 || task->data[2] == 2)
- task->data[3] = -task->data[3];
+ task->sDelayTimer = 4;
+ task->sFlashState += task->sFlashDir;
+ if (task->sFlashState == 0 || task->sFlashState == 2)
+ task->sFlashDir = -task->sFlashDir;
}
- LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
+ LoadPalette(sFlashingLightsPalTable[task->sFlashState], 0x10, 0x20);
}
-static void GameplayTask_PikaPower(void)
+#undef sDelayTimer
+#undef sFlashState
+#undef sFlashDir
+
+#define tState data[0]
+#define tNumBolts data[1]
+#define tSpriteId data[2]
+#define tTimer data[2] // re-used
+#define tAnimating data[15]
+
+static void CreatePikaPowerBoltTask(void)
{
- sSlotMachine->unkTaskPointer3E = CreateTask(sub_81040E8, 8);
+ sSlotMachine->pikaPowerBoltTaskId = CreateTask(Task_CreatePikaPowerBolt, 8);
}
-static void DisplayPikaPower(u8 pikaPower)
+static void AddPikaPowerBolt(u8 pikaPower)
{
- struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
- ClearTaskDataFields_2orHigher(task);
- task->data[0] = 1;
- task->data[1]++;
- task->data[15] = 1; // points to a reelIndex
+ struct Task *task = &gTasks[sSlotMachine->pikaPowerBoltTaskId];
+ ResetPikaPowerBoltTask(task);
+ task->tState = 1;
+ task->tNumBolts++;
+ task->tAnimating = TRUE;
}
-static void sub_8104098(void)
+static void ResetPikaPowerBolts(void)
{
- struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E];
- ClearTaskDataFields_2orHigher(task);
- task->data[0] = 3;
- task->data[15] = 1; // points to a reelIndex
+ struct Task *task = &gTasks[sSlotMachine->pikaPowerBoltTaskId];
+ ResetPikaPowerBoltTask(task);
+ task->tState = 3;
+ task->tAnimating = TRUE;
}
-static bool8 sub_81040C8(void)
+static bool8 IsPikaPowerBoltAnimating(void)
{
- return gTasks[sSlotMachine->unkTaskPointer3E].data[15];
+ return gTasks[sSlotMachine->pikaPowerBoltTaskId].tAnimating;
}
-static void sub_81040E8(u8 taskId)
+static void Task_CreatePikaPowerBolt(u8 taskId)
{
- gUnknown_083ECBB4[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sPikaPowerBoltFuncs[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void nullsub_68(struct Task *task)
+static void PikaPowerBolt_Idle(struct Task *task)
{
}
-static void sub_810411C(struct Task *task)
+static void PikaPowerBolt_AddBolt(struct Task *task)
{
- task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20);
- task->data[0]++;
+ task->tSpriteId = CreatePikaPowerBoltSprite((task->tNumBolts << 3) + 20, 20);
+ task->tState++;
}
-static void sub_8104144(struct Task *task)
+// The bolt sprite spins around as it appears
+// Once the anim is done, destroy the sprite and set the bolt in the tilemap instead
+static void PikaPowerBolt_WaitAnim(struct Task *task)
{
- if (gSprites[task->data[2]].data[7])
+ if (gSprites[task->tSpriteId].data[7])
{
- s16 r5 = task->data[1] + 2;
+ s16 r5 = task->tNumBolts + 2;
s16 r3 = 0;
s16 r2 = 0;
- if (task->data[1] == 1)
+ if (task->tNumBolts == 1)
r3 = 1, r2 = 1;
- else if (task->data[1] == 16)
+ else if (task->tNumBolts == 16)
r3 = 2, r2 = 2;
- sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][0];
+ sSelectedPikaPowerTile[r2] = sPikaPowerTileTable[r3][0];
LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
- sub_8105B88(task->data[2]);
- task->data[0] = 0;
- task->data[15] = 0; // points to a reelIndex
+ DestroyPikaPowerBoltSprite(task->tSpriteId);
+ task->tState = 0;
+ task->tAnimating = 0;
}
}
-static void sub_81041AC(struct Task *task)
+static void PikaPowerBolt_ClearAll(struct Task *task)
{
- s16 r5 = task->data[1] + 2;
+ s16 r5 = task->tNumBolts + 2;
s16 r3 = 0;
s16 r2 = 3;
- if (task->data[1] == 1)
+ if (task->tNumBolts == 1)
r3 = 1, r2 = 1;
- else if (task->data[1] == 16)
+ else if (task->tNumBolts == 16)
r3 = 2, r2 = 2;
- if (task->data[2] == 0)
+ if (task->tTimer == 0)
{
- sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][1];
+ sSelectedPikaPowerTile[r2] = sPikaPowerTileTable[r3][1];
LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40);
- task->data[1]--;
+ task->tNumBolts--;
}
- if (++task->data[2] >= 20)
- task->data[2] = 0;
- if (task->data[1] == 0)
+ if (++task->tTimer >= 20)
+ task->tTimer = 0;
+ if (task->tNumBolts == 0)
{
- task->data[0] = 0;
- task->data[15] = 0;
+ task->tState = 0;
+ task->tAnimating = 0;
}
}
-static void ClearTaskDataFields_2orHigher(struct Task *task)
+static void ResetPikaPowerBoltTask(struct Task *task)
{
u8 i;
- for (i = 2; i < 16; i++)
+ for (i = 2; i < NUM_TASK_DATA; i++)
task->data[i] = 0;
}
-// possibly load tiles for pika power meter
-static void sub_810423C(u8 pikaPower)
+static void LoadPikaPowerMeter(u8 pikaPower)
{
s16 i;
s16 r3 = 0, r1 = 0;
@@ -2743,7 +3032,7 @@ static void sub_810423C(u8 pikaPower)
r3 = 1, r1 = 1;
else if (i == 15) // pikaPower meter is full
r3 = 2, r1 = 2;
- sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][0];
+ sSelectedPikaPowerTile[r1] = sPikaPowerTileTable[r3][0];
LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
for (; i < 16; i++, r4++)
@@ -2753,40 +3042,47 @@ static void sub_810423C(u8 pikaPower)
r3 = 1, r1 = 1;
else if (i == 15)
r3 = 2, r1 = 2;
- sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][1];
+ sSelectedPikaPowerTile[r1] = sPikaPowerTileTable[r3][1];
LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40);
}
- gTasks[sSlotMachine->unkTaskPointer3E].data[1] = pikaPower;
+ gTasks[sSlotMachine->pikaPowerBoltTaskId].data[1] = pikaPower;
}
-static void BeginReeltime(void)
+#undef tState
+#undef tNumBolts
+#undef tSpriteId
+#undef tTimer
+#undef tAnimating
+
+#define tState data[0]
+
+static void BeginReelTime(void)
{
- u8 taskId = CreateTask(RunReeltimeActions, 7);
- RunReeltimeActions(taskId);
+ u8 taskId = CreateTask(Task_ReelTime, 7);
+ Task_ReelTime(taskId);
}
-static bool8 IsFinalTask_RunReelTimeActions(void)
+static bool8 IsReelTimeTaskDone(void)
{
- if (FindTaskIdByFunc(RunReeltimeActions) == TAIL_SENTINEL)
+ if (FindTaskIdByFunc(Task_ReelTime) == TAIL_SENTINEL)
return TRUE;
return FALSE;
}
-static void RunReeltimeActions(u8 taskId)
+static void Task_ReelTime(u8 taskId)
{
- // task.data[0] points to which ReelTimeAction to do, and starts at 0
// task.data[1] has something to do with the threshold
// task.data[4] says how many pixels to advance the reel
// task.data[5] is a timer
- ReeltimeActions[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sReelTimeActions[gTasks[taskId].tState](&gTasks[taskId]);
}
-static void ReeltimeAction0(struct Task *task)
+static void ReelTime_Init(struct Task *task)
{
- sSlotMachine->fairRollsLeft = 0;
+ sSlotMachine->reelTimeSpinsLeft = 0;
sSlotMachine->reeltimePixelOffset = 0;
sSlotMachine->reeltimePosition = 0;
- task->data[0]++;
+ task->tState++;
task->data[1] = 0;
task->data[2] = 30;
task->data[4] = 1280; // reel speed
@@ -2794,18 +3090,18 @@ static void ReeltimeAction0(struct Task *task)
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
- sub_8104A40(REG_OFFSET_BG3VOFS, 0);
- sub_81051C0();
- sub_8105100();
- sub_81052EC();
- sub_81053A0();
- sub_810545C();
+ LoadReelTimeWindowTilemap(REG_OFFSET_BG3VOFS, 0);
+ CreateReelTimeMachineSprites();
+ CreateReelTimePikachuSprite();
+ CreateReelTimeNumberSprites();
+ CreateReelTimeShadowSprites();
+ CreateReelTimeNumberGapSprite();
GetReeltimeDraw();
StopMapMusic();
PlayNewMapMusic(MUS_BD_TIME);
}
-static void ReeltimeAction1(struct Task *task)
+static void ReelTime_WindowEnter(struct Task *task)
{
s16 r3;
gSpriteCoordOffsetX -= 8;
@@ -2816,78 +3112,78 @@ static void ReeltimeAction1(struct Task *task)
{
task->data[2] = r3;
task->data[3] = task->data[1] >> 3;
- sub_8104A40(r3, task->data[3]);
+ LoadReelTimeWindowTilemap(r3, task->data[3]);
}
if (task->data[1] >= 200)
{
- task->data[0]++;
+ task->tState++;
task->data[3] = 0;
}
AdvanceReeltimeReel(task->data[4] >> 8);
}
-static void ReeltimeAction2(struct Task *task)
+static void ReelTime_WaitStartPikachu(struct Task *task)
{
AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 60)
{
- task->data[0]++;
- CreateReelTimeSprites1();
- CreateReelTimeSprite2();
+ task->tState++;
+ CreateReelTimeBoltSprites();
+ CreateReelTimePikachuAuraSprites();
}
}
-static void ReeltimeAction3(struct Task *task)
+static void ReelTime_PikachuSpeedUp1(struct Task *task)
{
- int r5;
- u8 sp0[ARRAY_COUNT(gUnknown_085A75C0)];
- s16 sp4[ARRAY_COUNT(gUnknown_085A75C4)];
- s16 spC[ARRAY_COUNT(gUnknown_085A75CC)];
+ int i;
+ u8 pikachuAnimIds[ARRAY_COUNT(sReelTimePikachuAnimIds)];
+ s16 reelTimeBoltDelays[ARRAY_COUNT(sReelTimeBoltDelays)];
+ s16 pikachuAuraFlashDelays[ARRAY_COUNT(sPikachuAuraFlashDelays)];
- memcpy(sp0, gUnknown_085A75C0, sizeof(gUnknown_085A75C0));
- memcpy(sp4, gUnknown_085A75C4, sizeof(gUnknown_085A75C4));
- memcpy(spC, gUnknown_085A75CC, sizeof(gUnknown_085A75CC));
+ memcpy(pikachuAnimIds, sReelTimePikachuAnimIds, sizeof(sReelTimePikachuAnimIds));
+ memcpy(reelTimeBoltDelays, sReelTimeBoltDelays, sizeof(sReelTimeBoltDelays));
+ memcpy(pikachuAuraFlashDelays, sPikachuAuraFlashDelays, sizeof(sPikachuAuraFlashDelays));
AdvanceReeltimeReel(task->data[4] >> 8);
// gradually slow down the reel
task->data[4] -= 4;
- r5 = 4 - (task->data[4] >> 8);
- sub_8105688(sp4[r5]);
- sub_81057E8(spC[r5]);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, sp0[r5]);
+ i = 4 - (task->data[4] >> 8);
+ SetReelTimeBoltDelay(reelTimeBoltDelays[i]);
+ SetReelTimePikachuAuraFlashDelay(pikachuAuraFlashDelays[i]);
+ StartSpriteAnimIfDifferent(&gSprites[sSlotMachine->reelTimePikachuSpriteId], pikachuAnimIds[i]);
// once speed goes below 256, go to next ReelTimeAction and keep the speed level
if (task->data[4] <= 0x100)
{
- task->data[0]++;
+ task->tState++;
task->data[4] = 0x100;
task->data[5] = 0;
}
}
-static void ReeltimeAction4(struct Task *task)
+static void ReelTime_PikachuSpeedUp2(struct Task *task)
{
AdvanceReeltimeReel(task->data[4] >> 8);
if (++task->data[5] >= 80)
{
- task->data[0]++;
+ task->tState++;
task->data[5] = 0;
- sub_81057E8(2);
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 3);
+ SetReelTimePikachuAuraFlashDelay(2);
+ StartSpriteAnimIfDifferent(&gSprites[sSlotMachine->reelTimePikachuSpriteId], 3);
}
}
-static void ReeltimeAction5(struct Task *task)
+static void ReelTime_WaitReel(struct Task *task)
{
AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x80;
if (++task->data[5] >= 80)
{
- task->data[0]++;
+ task->tState++;
task->data[5] = 0;
}
}
-static void ReeltimeAction6(struct Task *task)
+static void ReelTime_CheckExplode(struct Task *task)
{
AdvanceReeltimeReel(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
@@ -2896,22 +3192,22 @@ static void ReeltimeAction6(struct Task *task)
task->data[5] = 0;
if (sSlotMachine->reelTimeDraw)
{
- if (sSlotMachine->fairRollsLeft <= task->data[6])
- task->data[0]++;
+ if (sSlotMachine->reelTimeSpinsLeft <= task->data[6])
+ task->tState++;
}
else if (task->data[6] > 3)
{
- task->data[0]++;
+ task->tState++;
}
- else if (SkipToReeltimeAction14(task->data[6]))
+ else if (ShouldReelTimeMachineExplode(task->data[6]))
{
- task->data[0] = 14;
+ task->tState = 14; // ReelTime_ExplodeMachine
}
task->data[6]++;
}
}
-static void ReelTimeAction_LandOnOutcome(struct Task *task)
+static void ReelTime_LandOnOutcome(struct Task *task)
{
s16 reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20;
if (reeltimePixelOffset)
@@ -2928,32 +3224,32 @@ static void ReelTimeAction_LandOnOutcome(struct Task *task)
if (reeltimePixelOffset == 0 && GetNearbyReelTimeTag(1) == sSlotMachine->reelTimeDraw)
{
task->data[4] = 0; // stop moving
- task->data[0]++;
+ task->tState++;
}
}
-static void ReeltimeAction8(struct Task *task)
+static void ReelTime_PikachuReact(struct Task *task)
{
if (++task->data[4] >= 60)
{
StopMapMusic();
- sub_81056C0();
- sub_8105804();
- task->data[0]++;
+ DestroyReelTimeBoltSprites();
+ DestroyReelTimePikachuAuraSprites();
+ task->tState++;
if(sSlotMachine->reelTimeDraw == 0)
{
task->data[4] = 0xa0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
+ StartSpriteAnimIfDifferent(&gSprites[sSlotMachine->reelTimePikachuSpriteId], 5);
PlayFanfare(MUS_ME_ZANNEN);
}
else
{
task->data[4] = 0xc0;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 4);
- gSprites[sSlotMachine->reelTimeSprite3F].animCmdIndex = 0;
+ StartSpriteAnimIfDifferent(&gSprites[sSlotMachine->reelTimePikachuSpriteId], 4);
+ gSprites[sSlotMachine->reelTimePikachuSpriteId].animCmdIndex = 0;
if (sSlotMachine->pikaPower)
{
- sub_8104098();
+ ResetPikaPowerBolts();
sSlotMachine->pikaPower = 0;
}
PlayFanfare(MUS_ME_B_SMALL);
@@ -2961,13 +3257,13 @@ static void ReeltimeAction8(struct Task *task)
}
}
-static void ReeltimeAction9(struct Task *task)
+static void ReelTime_WaitClearPikaPower(struct Task *task)
{
- if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
- task->data[0]++;
+ if ((task->data[4] == 0 || --task->data[4] == 0) && !IsPikaPowerBoltAnimating())
+ task->tState++;
}
-static void ReeltimeAction10(struct Task *task)
+static void ReelTime_CloseWindow(struct Task *task)
{
s16 r4;
gSpriteCoordOffsetX -= 8;
@@ -2976,59 +3272,59 @@ static void ReeltimeAction10(struct Task *task)
r4 = ((task->data[1] - 8) & 0xff) >> 3;
SetGpuReg(REG_OFFSET_BG1HOFS, task->data[1] & 0x1ff);
if (task->data[3] >> 3 <= 25)
- sub_8104A88(r4);
+ ClearReelTimeWindowTilemap(r4);
else
- task->data[0]++;
+ task->tState++;
}
-static void ReeltimeAction11(struct Task *task)
+static void ReelTime_DestroySprites(struct Task *task)
{
- sSlotMachine->fairRollsUsed = 0;
- sSlotMachine->fairRollsLeft = sSlotMachine->reelTimeDraw;
+ sSlotMachine->reelTimeSpinsUsed = 0;
+ sSlotMachine->reelTimeSpinsLeft = sSlotMachine->reelTimeDraw;
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
sSlotMachine->reelIncrement = 8;
- sub_810514C();
- sub_81054B8();
- sub_8105524();
+ DestroyReelTimePikachuSprite();
+ DestroyReelTimeMachineSprites();
+ DestroyReelTimeShadowSprites();
PlayNewMapMusic(sSlotMachine->backupMapMusic);
- if (sSlotMachine->fairRollsLeft == 0)
+ if (sSlotMachine->reelTimeSpinsLeft == 0)
{
- DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
+ DestroyTask(FindTaskIdByFunc(Task_ReelTime));
}
else
{
- sub_8104CAC(4);
+ CreateDigitalDisplayScene(DIG_DISPLAY_REEL_TIME);
task->data[1] = SlowReelSpeed();
task->data[2] = 0;
task->data[3] = 0;
- task->data[0]++;
+ task->tState++;
}
}
-static void ReeltimeAction12(struct Task *task)
+static void ReelTime_SetReelIncrement(struct Task *task)
{
if (sSlotMachine->reelIncrement == task->data[1])
- task->data[0]++;
- else if (sSlotMachine->reelPixelOffsets[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ task->tState++;
+ else if (sSlotMachine->reelPixelOffsets[0] % REEL_SYMBOL_HEIGHT == 0 && (++task->data[2]& 0x07) == 0)
sSlotMachine->reelIncrement >>= 1;
}
-static void ReeltimeAction13(struct Task *task)
+static void ReelTime_EndSuccess(struct Task *task)
{
- if (sub_8104E18())
- DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
+ if (IsDigitalDisplayAnimFinished())
+ DestroyTask(FindTaskIdByFunc(Task_ReelTime));
}
-static void ReeltimeAction14(struct Task *task)
+static void ReelTime_ExplodeMachine(struct Task *task)
{
- sub_81054B8();
- sub_81056C0();
- sub_8105804();
- sub_8105854();
- gSprites[sSlotMachine->unk4E[0]].invisible = TRUE;
- StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5);
- task->data[0]++;
+ DestroyReelTimeMachineSprites();
+ DestroyReelTimeBoltSprites();
+ DestroyReelTimePikachuAuraSprites();
+ CreateReelTimeExplosionSprite();
+ gSprites[sSlotMachine->reelTimeShadowSpriteIds[0]].invisible = TRUE;
+ StartSpriteAnimIfDifferent(&gSprites[sSlotMachine->reelTimePikachuSpriteId], 5);
+ task->tState++;
task->data[4] = 4;
task->data[5] = 0;
StopMapMusic();
@@ -3036,7 +3332,7 @@ static void ReeltimeAction14(struct Task *task)
PlaySE(SE_W153);
}
-static void ReeltimeAction15(struct Task *task)
+static void ReelTime_WaitExplode(struct Task *task)
{
gSpriteCoordOffsetY = task->data[4];
SetGpuReg(REG_OFFSET_BG1VOFS, task->data[4]);
@@ -3046,63 +3342,68 @@ static void ReeltimeAction15(struct Task *task)
task->data[4] >>= 1;
if (task->data[4] == 0)
{
- sub_81058A0();
- sub_81058C4();
- sub_8105284_();
- sub_81059E8();
- gSprites[sSlotMachine->unk4E[0]].invisible = FALSE;
- task->data[0]++;
+ DestroyReelTimeExplosionSprite();
+ CreateReelTimeDuckSprites();
+ CreateBrokenReelTimeMachineSprite();
+ CreateReelTimeSmokeSprite();
+ gSprites[sSlotMachine->reelTimeShadowSpriteIds[0]].invisible = FALSE;
+ task->tState++;
task->data[5] = 0;
}
}
-static void ReeltimeAction16(struct Task *task)
+static void ReelTime_WaitSmoke(struct Task *task)
{
gSpriteCoordOffsetY = 0;
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
- if (sub_8105ACC())
+ if (IsReelTimeSmokeAnimFinished())
{
- task->data[0]++;
- sub_8105AEC();
+ task->tState++;
+ DestroyReelTimeSmokeSprite();
}
}
-static void ReeltimeAction17(struct Task *task)
+static void ReelTime_EndFailure(struct Task *task)
{
gSpriteCoordOffsetX = 0;
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
PlayNewMapMusic(sSlotMachine->backupMapMusic);
- sub_810514C();
- sub_8105554();
- sub_8105524();
- sub_81059B8();
- DestroyTask(FindTaskIdByFunc(RunReeltimeActions));
+ DestroyReelTimePikachuSprite();
+ DestroyBrokenReelTimeMachineSprite();
+ DestroyReelTimeShadowSprites();
+ DestroyReelTimeDuckSprites();
+ DestroyTask(FindTaskIdByFunc(Task_ReelTime));
}
-static void sub_8104A40(s16 a0, s16 a1)
+static void LoadReelTimeWindowTilemap(s16 a0, s16 a1)
{
s16 i;
for (i = 4; i < 15; i++)
{
- LoadBgTilemap(1, &gReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
+ LoadBgTilemap(1, &sReelTimeWindow_Tilemap[a1 + (i - 4) * 20], 2, 32 * i + a0);
}
}
-static void sub_8104A88(s16 a0)
+static void ClearReelTimeWindowTilemap(s16 a0)
{
u8 i;
for (i = 4; i < 15; i++)
{
- LoadBgTilemap(1, gUnknown_085A9898, 2, 32 * i + a0);
+ LoadBgTilemap(1, sEmptyTilemap, 2, 32 * i + a0);
}
}
-static void OpenInfoBox(u8 seemsUnused)
+#undef tState
+
+#define tState data[0]
+
+// Info Box is the screen shown when Select is pressed
+static void OpenInfoBox(u8 digDisplayId)
{
u8 taskId = CreateTask(RunInfoBoxActions, 1);
- gTasks[taskId].data[1] = seemsUnused;
+ gTasks[taskId].data[1] = digDisplayId;
RunInfoBoxActions(taskId);
}
@@ -3116,29 +3417,29 @@ static bool8 IsInfoBoxClosed(void)
static void RunInfoBoxActions(u8 taskId)
{
- InfoBoxActions[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sInfoBoxActions[gTasks[taskId].tState](&gTasks[taskId]);
}
static void InfoBox_FadeIn(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- task->data[0]++;
+ task->tState++;
}
static void InfoBox_WaitForFade(struct Task *task)
{
if (!gPaletteFade.active)
- task->data[0]++;
+ task->tState++;
}
-static void InfoBox_8104B80(struct Task *task)
+static void InfoBox_DrawWindow(struct Task *task)
{
- sub_8104DA4();
- sub_81065DC();
- AddWindow(&gUnknown_085A7444);
+ DestroyDigitalDisplayScene();
+ LoadInfoBoxTilemap();
+ AddWindow(&sWindowTemplate_InfoBox);
PutWindowTilemap(1);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
- task->data[0]++;
+ task->tState++;
}
static void InfoBox_AddText(struct Task *task)
@@ -3146,40 +3447,40 @@ static void InfoBox_AddText(struct Task *task)
AddTextPrinterParameterized3(1, 1, 2, 5, sColors_ReeltimeHelp, 0, gText_ReelTimeHelp);
CopyWindowToVram(1, 3);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- task->data[0]++;
+ task->tState++;
}
static void InfoBox_AwaitPlayerInput(struct Task *task)
{
- if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
+ if (JOY_NEW(B_BUTTON | SELECT_BUTTON))
{
FillWindowPixelBuffer(1, PIXEL_FILL(0));
ClearWindowTilemap(1);
CopyWindowToVram(1, 1);
RemoveWindow(1);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- task->data[0]++;
+ task->tState++;
}
}
-static void InfoBox_812DE14(struct Task *task)
+static void InfoBox_LoadSlotMachineTilemap(struct Task *task)
{
- sub_812F968();
+ LoadSlotMachineMenuTilemap();
ShowBg(3);
- task->data[0]++;
+ task->tState++;
}
-static void InfoBox_812DE30(struct Task *task)
+static void InfoBox_CreateDigitalDisplay(struct Task *task)
{
- sub_8104CAC(task->data[1]);
- task->data[0]++;
+ CreateDigitalDisplayScene(task->data[1]);
+ task->tState++;
}
-static void InfoBox_8104BFC(struct Task *task)
+static void InfoBox_LoadPikaPowerMeter(struct Task *task)
{
- sub_810423C(sSlotMachine->pikaPower);
+ LoadPikaPowerMeter(sSlotMachine->pikaPower);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- task->data[0]++;
+ task->tState++;
}
static void InfoBox_FreeTask(struct Task *task)
@@ -3187,62 +3488,68 @@ static void InfoBox_FreeTask(struct Task *task)
DestroyTask(FindTaskIdByFunc(RunInfoBoxActions));
}
-static void sub_8104C5C(void)
+#undef tState
+
+#define sWaitForAnim data[7]
+
+static void CreateDigitalDisplayTask(void)
{
u8 i;
struct Task *task;
- i = CreateTask(sub_8104E74_, 3);
- sSlotMachine->unkTaskPointer3D = i;
+ i = CreateTask(Task_DigitalDisplay, 3);
+ sSlotMachine->digDisplayTaskId = i;
task = &gTasks[i];
task->data[1] = -1;
- for (i = 4; i < 16; i++)
+ for (i = 4; i < NUM_TASK_DATA; i++)
task->data[i] = MAX_SPRITES;
}
-// possibly initialize each wheel
-static void sub_8104CAC(u8 arg0)
+// For the panel on the right side of the slot screen
+static void CreateDigitalDisplayScene(u8 id)
{
u8 i;
struct Task *task;
- sub_8104DA4();
+ DestroyDigitalDisplayScene();
- task = &gTasks[sSlotMachine->unkTaskPointer3D];
- task->data[1] = arg0;
+ task = &gTasks[sSlotMachine->digDisplayTaskId];
+ task->data[1] = id;
- for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
+ for (i = 0; sDigitalDisplayScenes[id][i].spriteTemplateId != 255; i++)
{
u8 spriteId;
- spriteId = sub_8105BB4(
- gUnknown_083ED048[arg0][i].unk00,
- gUnknown_083ED048[arg0][i].unk01,
- gUnknown_083ED048[arg0][i].unk02
+ spriteId = CreateStdDigitalDisplaySprite(
+ sDigitalDisplayScenes[id][i].spriteTemplateId,
+ sDigitalDisplayScenes[id][i].dispInfoId,
+ sDigitalDisplayScenes[id][i].spriteId
);
task->data[4 + i] = spriteId;
}
}
-static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
+static void AddDigitalDisplaySprite(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 spriteId)
{
u8 i;
- struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
- for (i = 4; i < 16; i++)
+ struct Task *task = &gTasks[sSlotMachine->digDisplayTaskId];
+ for (i = 4; i < NUM_TASK_DATA; i++)
{
if (task->data[i] == MAX_SPRITES)
{
- task->data[i] = sub_8105BF8(a0, a1, a2, a3, a4);
+ task->data[i] = CreateDigitalDisplaySprite(templateIdx, callback, x, y, spriteId);
break;
}
}
}
-static void sub_8104DA4(void)
+static void DestroyDigitalDisplayScene(void)
{
u8 i;
- struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
+ struct Task *task = &gTasks[sSlotMachine->digDisplayTaskId];
+
if ((u16)task->data[1] != 0xFFFF)
- gUnknown_083ED064[task->data[1]]();
- for (i = 4; i < 16; i++)
+ sDigitalDisplaySceneExitCallbacks[task->data[1]]();
+
+ for (i = 4; i < NUM_TASK_DATA; i++)
{
if (task->data[i] != MAX_SPRITES)
{
@@ -3252,31 +3559,31 @@ static void sub_8104DA4(void)
}
}
-static bool8 sub_8104E18(void)
+static bool8 IsDigitalDisplayAnimFinished(void)
{
u8 i;
- struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D];
- for (i = 4; i < 16; i++)
+ struct Task *task = &gTasks[sSlotMachine->digDisplayTaskId];
+ for (i = 4; i < NUM_TASK_DATA; i++)
{
if (task->data[i] != MAX_SPRITES)
{
- if (gSprites[task->data[i]].data[7])
+ if (gSprites[task->data[i]].sWaitForAnim)
return FALSE;
}
}
return TRUE;
}
-static void sub_8104E74_(u8 taskId)
+static void Task_DigitalDisplay(u8 taskId)
{
- gUnknown_083ECC54[gTasks[taskId].data[0]](&gTasks[taskId]);
+ sDigitalDisplayActions[gTasks[taskId].data[0]](&gTasks[taskId]);
}
-static void nullsub_69(struct Task *task)
+static void DigitalDisplay_Idle(struct Task *task)
{
}
-static void sub_8104EA8(void)
+static void CreateReelSymbolSprites(void)
{
s16 i;
s16 j;
@@ -3285,7 +3592,7 @@ static void sub_8104EA8(void)
{
for (j = 0; j < 120; j += 24)
{
- struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED414, x, 0, 14);
+ struct Sprite *sprite = gSprites + CreateSprite(&sSpriteTemplate_ReelSymbol, x, 0, 14);
sprite->oam.priority = 3;
sprite->data[0] = i;
sprite->data[1] = j;
@@ -3294,7 +3601,7 @@ static void sub_8104EA8(void)
}
}
-static void sub_8104F18(struct Sprite *sprite)
+static void SpriteCB_ReelSymbol(struct Sprite *sprite)
{
sprite->data[2] = sSlotMachine->reelPixelOffsets[sprite->data[0]] + sprite->data[1];
sprite->data[2] %= 120;
@@ -3303,28 +3610,31 @@ static void sub_8104F18(struct Sprite *sprite)
SetSpriteSheetFrameTileNum(sprite);
}
-static void sub_8104F8C(void)
+static void CreateCreditPayoutNumberSprites(void)
{
s16 i;
s16 x;
+ // Credit number sprite
for (x = 203, i = 1; i <= MAX_COINS; i *= 10, x -= 7)
- sub_8104FF4(x, 23, 0, i);
+ CreateCoinNumberSprite(x, 23, FALSE, i);
+
+ // Payout number sprite
for (x = 235, i = 1; i <= MAX_COINS; i *= 10, x -= 7)
- sub_8104FF4(x, 23, 1, i);
+ CreateCoinNumberSprite(x, 23, TRUE, i);
}
-static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
+static void CreateCoinNumberSprite(s16 x, s16 y, bool8 isPayout, s16 a3)
{
- struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13);
+ struct Sprite *sprite = &gSprites[CreateSprite(&sSpriteTemplate_CoinNumber, x, y, 13)];
sprite->oam.priority = 2;
- sprite->data[0] = a2;
+ sprite->data[0] = isPayout;
sprite->data[1] = a3;
sprite->data[2] = a3 * 10;
sprite->data[3] = -1;
}
-static void sub_810506C(struct Sprite *sprite)
+static void SpriteCB_CoinNumber(struct Sprite *sprite)
{
u16 tag = sSlotMachine->coins;
if (sprite->data[0])
@@ -3340,47 +3650,47 @@ static void sub_810506C(struct Sprite *sprite)
}
}
-static void sub_81050C4(void)
+static void CreateReelBackgroundSprite(void)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelBackground, 88, 72, 15);
gSprites[spriteId].oam.priority = 3;
- SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704);
+ SetSubspriteTables(&gSprites[spriteId], sSubspriteTable_ReelBackground);
}
-static void sub_8105100(void)
+static void CreateReelTimePikachuSprite(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
- if (sUnknown_0203AAE4 == NULL)
- sUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
-
- sUnknown_0203AAE4[0].data = sUnknown_0203AAD8 + (0 * 0x800);
- sUnknown_0203AAE4[0].size = 0x800;
- sUnknown_0203AAE4[1].data = sUnknown_0203AAD8 + (1 * 0x800);
- sUnknown_0203AAE4[1].size = 0x800;
- sUnknown_0203AAE4[2].data = sUnknown_0203AAD8 + (2 * 0x800);
- sUnknown_0203AAE4[2].size = 0x800;
- sUnknown_0203AAE4[3].data = sUnknown_0203AAD8 + (3 * 0x800);
- sUnknown_0203AAE4[3].size = 0x800;
- sUnknown_0203AAE4[4].data = sUnknown_0203AAD8 + (4 * 0x800);
- sUnknown_0203AAE4[4].size = 0x800;
-
- spriteTemplate = gSpriteTemplate_83ED45C;
- spriteTemplate.images = sUnknown_0203AAE4;
+ if (sImageTable_ReelTimePikachu == NULL)
+ sImageTable_ReelTimePikachu = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+
+ sImageTable_ReelTimePikachu[0].data = sReelTimeGfxPtr + (0 * 0x800);
+ sImageTable_ReelTimePikachu[0].size = 0x800;
+ sImageTable_ReelTimePikachu[1].data = sReelTimeGfxPtr + (1 * 0x800);
+ sImageTable_ReelTimePikachu[1].size = 0x800;
+ sImageTable_ReelTimePikachu[2].data = sReelTimeGfxPtr + (2 * 0x800);
+ sImageTable_ReelTimePikachu[2].size = 0x800;
+ sImageTable_ReelTimePikachu[3].data = sReelTimeGfxPtr + (3 * 0x800);
+ sImageTable_ReelTimePikachu[3].size = 0x800;
+ sImageTable_ReelTimePikachu[4].data = sReelTimeGfxPtr + (4 * 0x800);
+ sImageTable_ReelTimePikachu[4].size = 0x800;
+
+ spriteTemplate = sSpriteTemplate_ReelTimePikachu;
+ spriteTemplate.images = sImageTable_ReelTimePikachu;
spriteId = CreateSprite(&spriteTemplate, 280, 80, 1);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].coordOffsetEnabled = TRUE;
- sSlotMachine->reelTimeSprite3F = spriteId;
+ sSlotMachine->reelTimePikachuSpriteId = spriteId;
}
-static void sub_810514C(void)
+static void DestroyReelTimePikachuSprite(void)
{
- DestroySprite(gSprites + sSlotMachine->reelTimeSprite3F);
- if (sUnknown_0203AAE4 != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAE4);
+ DestroySprite(&gSprites[sSlotMachine->reelTimePikachuSpriteId]);
+ if (sImageTable_ReelTimePikachu != NULL)
+ FREE_AND_SET_NULL(sImageTable_ReelTimePikachu);
}
-static void sub_8105170(struct Sprite *sprite)
+static void SpriteCB_ReelTimePikachu(struct Sprite *sprite)
{
sprite->pos2.y = sprite->pos2.x = 0;
if (sprite->animNum == 4)
@@ -3391,78 +3701,78 @@ static void sub_8105170(struct Sprite *sprite)
}
}
-static void sub_81051C0(void)
+static void CreateReelTimeMachineSprites(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (sUnknown_0203AAE8 == NULL)
- sUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sImageTable_ReelTimeMachineAntennae == NULL)
+ sImageTable_ReelTimeMachineAntennae = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AAE8[0].data = sUnknown_0203AAD8 + 0x2800;
- sUnknown_0203AAE8[0].size = 0x300;
- spriteTemplate = gSpriteTemplate_83ED474;
- spriteTemplate.images = sUnknown_0203AAE8;
+ sImageTable_ReelTimeMachineAntennae[0].data = sReelTimeGfxPtr + 0x2800;
+ sImageTable_ReelTimeMachineAntennae[0].size = 0x300;
+ spriteTemplate = sSpriteTemplate_ReelTimeMachineAntennae;
+ spriteTemplate.images = sImageTable_ReelTimeMachineAntennae;
spriteId = CreateSprite(&spriteTemplate, 368, 52, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
- SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
- sSlotMachine->unk49[0] = spriteId;
+ SetSubspriteTables(sprite, sSubspriteTable_ReelTimeMachineAntennae);
+ sSlotMachine->reelTimeMachineSpriteIds[0] = spriteId;
- if (sUnknown_0203AAEC == NULL)
- sUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sImageTable_ReelTimeMachine == NULL)
+ sImageTable_ReelTimeMachine = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AAEC[0].data = sUnknown_0203AAD8 + 0x2800 + 0x300;
- sUnknown_0203AAEC[0].size = 0x500;
- spriteTemplate = gSpriteTemplate_83ED48C;
- spriteTemplate.images = sUnknown_0203AAEC;
+ sImageTable_ReelTimeMachine[0].data = sReelTimeGfxPtr + 0x2800 + 0x300;
+ sImageTable_ReelTimeMachine[0].size = 0x500;
+ spriteTemplate = sSpriteTemplate_ReelTimeMachine;
+ spriteTemplate.images = sImageTable_ReelTimeMachine;
spriteId = CreateSprite(&spriteTemplate, 368, 84, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
- SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
- sSlotMachine->unk49[1] = spriteId;
+ SetSubspriteTables(sprite, sSubspriteTable_ReelTimeMachine);
+ sSlotMachine->reelTimeMachineSpriteIds[1] = spriteId;
}
-static void sub_8105284_(void)
+static void CreateBrokenReelTimeMachineSprite(void)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- if (sUnknown_0203AAF0 == NULL)
- sUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ if (sImageTable_BrokenReelTimeMachine == NULL)
+ sImageTable_BrokenReelTimeMachine = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AAF0[0].data = sUnknown_0203AAD8 + 0x3000;
- sUnknown_0203AAF0[0].size = 0x600;
- spriteTemplate = gSpriteTemplate_83ED4A4;
- spriteTemplate.images = sUnknown_0203AAF0;
- spriteId = CreateSprite(&spriteTemplate, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
+ sImageTable_BrokenReelTimeMachine[0].data = sReelTimeGfxPtr + 0x3000;
+ sImageTable_BrokenReelTimeMachine[0].size = 0x600;
+ spriteTemplate = sSpriteTemplate_BrokenReelTimeMachine;
+ spriteTemplate.images = sImageTable_BrokenReelTimeMachine;
+ spriteId = CreateSprite(&spriteTemplate, 168 - gSpriteCoordOffsetX, 80, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
- SetSubspriteTables(sprite, gSubspriteTables_83ED78C);
- sSlotMachine->unk42 = spriteId;
+ SetSubspriteTables(sprite, sSubspriteTable_BrokenReelTimeMachine);
+ sSlotMachine->reelTimeBrokenMachineSpriteId = spriteId;
}
-static void sub_81052EC(void)
+static void CreateReelTimeNumberSprites(void)
{
u8 i;
s16 r5;
- for (i = 0, r5 = 0; i < 3; i++, r5 += 20)
+ for (i = 0, r5 = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeNumberSpriteIds); i++, r5 += 20)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0, 10);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimeNumbers, 368, 0, 10);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[7] = r5;
- sSlotMachine->unk4B[i] = spriteId;
+ sSlotMachine->reelTimeNumberSpriteIds[i] = spriteId;
}
}
-static void sub_810535C(struct Sprite *sprite)
+static void SpriteCB_ReelTimeNumbers(struct Sprite *sprite)
{
s16 r0 = (u16)(sSlotMachine->reeltimePixelOffset + sprite->data[7]);
r0 %= 40;
@@ -3470,92 +3780,98 @@ static void sub_810535C(struct Sprite *sprite)
StartSpriteAnimIfDifferent(sprite, GetNearbyReelTimeTag(r0 / 20));
}
-static void sub_81053A0(void)
+static void CreateReelTimeShadowSprites(void)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimeShadow, 368, 100, 9);
struct Sprite *sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
- SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
- sSlotMachine->unk4E[0] = spriteId;
+ SetSubspriteTables(sprite, sSubspriteTable_ReelTimeShadow);
+ sSlotMachine->reelTimeShadowSpriteIds[0] = spriteId;
- spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4);
+ spriteId = CreateSprite(&sSpriteTemplate_ReelTimeShadow, 288, 104, 4);
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
- SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
- sSlotMachine->unk4E[1] = spriteId;
+ SetSubspriteTables(sprite, sSubspriteTable_ReelTimeShadow);
+ sSlotMachine->reelTimeShadowSpriteIds[1] = spriteId;
}
-static void sub_810545C(void)
+// Creates a small black bar on the Reel Time machine to fill the gap between the numbers
+static void CreateReelTimeNumberGapSprite(void)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimeNumberGap, 368, 76, 11);
struct Sprite *sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
- SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
- sSlotMachine->unk40 = spriteId;
+ SetSubspriteTables(sprite, sSubspriteTable_ReelTimeNumberGap);
+ sSlotMachine->reelTimeNumberGapSpriteId = spriteId;
}
-static void sub_81054B8(void)
+static void DestroyReelTimeMachineSprites(void)
{
u8 i;
- DestroySprite(&gSprites[sSlotMachine->unk40]);
- for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk49[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeNumberGapSpriteId]);
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeMachineSpriteIds); i++)
+ DestroySprite(&gSprites[sSlotMachine->reelTimeMachineSpriteIds[i]]);
- if (sUnknown_0203AAE8 != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAE8);
- if (sUnknown_0203AAEC != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAEC);
+ if (sImageTable_ReelTimeMachineAntennae != NULL)
+ FREE_AND_SET_NULL(sImageTable_ReelTimeMachineAntennae);
+ if (sImageTable_ReelTimeMachine != NULL)
+ FREE_AND_SET_NULL(sImageTable_ReelTimeMachine);
- for (i = 0; i < 3; i++)
- DestroySprite(&gSprites[sSlotMachine->unk4B[i]]);
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeNumberSpriteIds); i++)
+ DestroySprite(&gSprites[sSlotMachine->reelTimeNumberSpriteIds[i]]);
}
-static void sub_8105524(void)
+static void DestroyReelTimeShadowSprites(void)
{
u8 i;
- for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->unk4E[i]]);
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeShadowSpriteIds); i++)
+ DestroySprite(&gSprites[sSlotMachine->reelTimeShadowSpriteIds[i]]);
}
-static void sub_8105554(void)
+static void DestroyBrokenReelTimeMachineSprite(void)
{
- DestroySprite(&gSprites[sSlotMachine->unk42]);
- if (sUnknown_0203AAF0 != NULL)
- FREE_AND_SET_NULL(sUnknown_0203AAF0);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeBrokenMachineSpriteId]);
+ if (sImageTable_BrokenReelTimeMachine != NULL)
+ FREE_AND_SET_NULL(sImageTable_BrokenReelTimeMachine);
}
-// TODO: check if this is true
-static void CreateReelTimeSprites1(void)
+#define sDelayTimer data[0]
+#define sXDir data[1]
+#define sYDir data[2]
+#define sCounter data[3]
+#define sDelay data[7]
+
+static void CreateReelTimeBoltSprites(void)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimeBolt, 152, 32, 5);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->hFlip = TRUE;
- sSlotMachine->reelTimeSprites1[0] = spriteId;
- sprite->data[0] = 8;
- sprite->data[1] = -1;
- sprite->data[2] = -1;
- sprite->data[7] = 0x20;
+ sSlotMachine->reelTimeBoltSpriteIds[0] = spriteId;
+ sprite->sDelayTimer = 8;
+ sprite->sXDir = -1;
+ sprite->sYDir = -1;
+ sprite->sDelay = 32;
- spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
+ spriteId = CreateSprite(&sSpriteTemplate_ReelTimeBolt, 184, 32, 5);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
- sSlotMachine->reelTimeSprites1[1] = spriteId;
- sprite->data[1] = 1;
- sprite->data[2] = -1;
- sprite->data[7] = 0x20;
+ sSlotMachine->reelTimeBoltSpriteIds[1] = spriteId;
+ sprite->sXDir = 1;
+ sprite->sYDir = -1;
+ sprite->sDelay = 32;
}
-static void sub_810562C(struct Sprite *sprite)
+static void SpriteCB_ReelTimeBolt(struct Sprite *sprite)
{
- if (sprite->data[0] != 0)
+ if (sprite->sDelayTimer != 0)
{
- sprite->data[0]--;
+ sprite->sDelayTimer--;
sprite->pos2.x = 0;
sprite->pos2.y = 0;
sprite->invisible = TRUE;
@@ -3563,104 +3879,123 @@ static void sub_810562C(struct Sprite *sprite)
else
{
sprite->invisible = FALSE;
- sprite->pos2.x += sprite->data[1];
- sprite->pos2.y += sprite->data[2];
- if (++sprite->data[3] >= 8)
+ sprite->pos2.x += sprite->sXDir;
+ sprite->pos2.y += sprite->sYDir;
+ if (++sprite->sCounter >= 8)
{
- sprite->data[0] = sprite->data[7];
- sprite->data[3] = 0;
+ sprite->sDelayTimer = sprite->sDelay;
+ sprite->sCounter = 0;
}
}
}
-static void sub_8105688(s16 a0)
+static void SetReelTimeBoltDelay(s16 delay)
{
- gSprites[sSlotMachine->reelTimeSprites1[0]].data[7] = a0;
- gSprites[sSlotMachine->reelTimeSprites1[1]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimeBoltSpriteIds[0]].sDelay = delay;
+ gSprites[sSlotMachine->reelTimeBoltSpriteIds[1]].sDelay = delay;
}
-static void sub_81056C0(void)
+static void DestroyReelTimeBoltSprites(void)
{
u8 i;
- for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->reelTimeSprites1[i]]);
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeBoltSpriteIds); i++)
+ DestroySprite(&gSprites[sSlotMachine->reelTimeBoltSpriteIds[i]]);
}
-static void CreateReelTimeSprite2(void)
+#undef sDelayTimer
+#undef sXDir
+#undef sYDir
+#undef sCounter
+#undef sDelay
+
+#define sFlashPal data[0]
+#define sColorIdx data[5]
+#define sDelayTimer data[6]
+#define sDelay data[7]
+
+static void CreateReelTimePikachuAuraSprites(void)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3);
+ // Left half of electricity orb
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimePikachuAura, 72, 80, 3);
gSprites[spriteId].oam.priority = 1;
- gSprites[spriteId].data[0] = 1;
- gSprites[spriteId].data[5] = 0;
- gSprites[spriteId].data[6] = 16;
- gSprites[spriteId].data[7] = 8;
- sSlotMachine->reelTimeSprites2[0] = spriteId;
-
- spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
+ gSprites[spriteId].sFlashPal = TRUE; // Only one of them needs to do the flashing, they share the palette
+ gSprites[spriteId].sColorIdx = 0;
+ gSprites[spriteId].sDelayTimer = 16;
+ gSprites[spriteId].sDelay = 8;
+ sSlotMachine->reelTimePikachuAuraSpriteIds[0] = spriteId;
+
+ // Right half
+ spriteId = CreateSprite(&sSpriteTemplate_ReelTimePikachuAura, 104, 80, 3);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].hFlip = TRUE;
- sSlotMachine->reelTimeSprites2[1] = spriteId;
+ sSlotMachine->reelTimePikachuAuraSpriteIds[1] = spriteId;
}
-static void sub_8105784(struct Sprite *sprite)
+static void SpriteCB_ReelTimePikachuAura(struct Sprite *sprite)
{
- u8 sp[] = {16, 0};
- if (sprite->data[0] && --sprite->data[6] <= 0)
+ u8 colors[] = {16, 0};
+ if (sprite->sFlashPal && --sprite->sDelayTimer <= 0)
{
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, sp[sprite->data[5]], sp[sprite->data[5]], sp[sprite->data[5]]);
- ++sprite->data[5];
- sprite->data[5] &= 1;
- sprite->data[6] = sprite->data[7];
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(PALTAG_PIKA_AURA) << 4) + 0x103, colors[sprite->sColorIdx], colors[sprite->sColorIdx], colors[sprite->sColorIdx]);
+ ++sprite->sColorIdx;
+ sprite->sColorIdx &= 1;
+ sprite->sDelayTimer = sprite->sDelay;
}
}
-static void sub_81057E8(s16 a0)
+static void SetReelTimePikachuAuraFlashDelay(s16 delay)
{
- gSprites[sSlotMachine->reelTimeSprites2[0]].data[7] = a0;
+ gSprites[sSlotMachine->reelTimePikachuAuraSpriteIds[0]].sDelay = delay;
}
-static void sub_8105804(void)
+static void DestroyReelTimePikachuAuraSprites(void)
{
u8 i;
- MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
- for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[sSlotMachine->reelTimeSprites2[i]]);
+ MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(PALTAG_PIKA_AURA) << 4) + 0x103, 0, 0, 0);
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimePikachuAuraSpriteIds); i++)
+ DestroySprite(&gSprites[sSlotMachine->reelTimePikachuAuraSpriteIds[i]]);
}
-static void sub_8105854(void)
+#undef sFlashPal
+#undef sColorIdx
+#undef sDelayTimer
+#undef sDelay
+
+static void CreateReelTimeExplosionSprite(void)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimeExplosion, 168, 80, 6);
gSprites[spriteId].oam.priority = 1;
- sSlotMachine->unk41 = spriteId;
+ sSlotMachine->reelTimeExplosionSpriteId = spriteId;
}
-static void sub_8105894(struct Sprite *sprite)
+static void SpriteCB_ReelTimeExplosion(struct Sprite *sprite)
{
sprite->pos2.y = gSpriteCoordOffsetY;
}
-static void sub_81058A0(void)
+static void DestroyReelTimeExplosionSprite(void)
{
- DestroySprite(&gSprites[sSlotMachine->unk41]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeExplosionSpriteId]);
}
-static void sub_81058C4(void)
+// The "confusion" ducks that circle Pikachu if the Reel Time machine explodes
+static void CreateReelTimeDuckSprites(void)
{
u8 i;
u16 sp[] = {0x0, 0x40, 0x80, 0xC0};
- for (i = 0; i < 4; i++)
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeDuckSpriteIds); i++)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimeDuck, 80 - gSpriteCoordOffsetX, 68, 0);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = sp[i];
- sSlotMachine->unk54[i] = spriteId;
+ sSlotMachine->reelTimeDuckSpriteIds[i] = spriteId;
}
}
-static void sub_810594C(struct Sprite *sprite)
+static void SpriteCB_ReelTimeDuck(struct Sprite *sprite)
{
sprite->data[0] -= 2;
sprite->data[0] &= 0xff;
@@ -3678,67 +4013,77 @@ static void sub_810594C(struct Sprite *sprite)
}
}
-static void sub_81059B8(void)
+static void DestroyReelTimeDuckSprites(void)
{
u8 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < ARRAY_COUNT(sSlotMachine->reelTimeDuckSpriteIds); i++)
{
- DestroySprite(&gSprites[sSlotMachine->unk54[i]]);
+ DestroySprite(&gSprites[sSlotMachine->reelTimeDuckSpriteIds[i]]);
}
}
-static void sub_81059E8(void)
+#define sState data[0]
+#define sMoveY data[1]
+#define sTimer data[2]
+#define sAnimFinished data[7]
+
+static void CreateReelTimeSmokeSprite(void)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_ReelTimeSmoke, 168, 60, 8);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
InitSpriteAffineAnim(sprite);
- sSlotMachine->unk43 = spriteId;
+ sSlotMachine->reelTimeSmokeSpriteId = spriteId;
}
-static void sub_8105A38(struct Sprite *sprite)
+static void SpriteCB_ReelTimeSmoke(struct Sprite *sprite)
{
- if (sprite->data[0] == 0)
+ if (sprite->sState == 0)
{
if (sprite->affineAnimEnded)
- sprite->data[0]++;
+ sprite->sState++;
}
- else if (sprite->data[0] == 1)
+ else if (sprite->sState == 1)
{
sprite->invisible ^= 1;
- if (++sprite->data[2] >= 24)
+ if (++sprite->sTimer >= 24)
{
- sprite->data[0]++;
- sprite->data[2] = 0;
+ sprite->sState++;
+ sprite->sTimer = 0;
}
}
else
{
sprite->invisible = TRUE;
- if (++sprite->data[2] >= 16)
- sprite->data[7] = 1;
+ if (++sprite->sTimer >= 16)
+ sprite->sAnimFinished = TRUE;
}
- sprite->data[1] &= 0xff;
- sprite->data[1] += 16;
- sprite->pos2.y -= (sprite->data[1] >> 8);
+ sprite->sMoveY &= 0xff;
+ sprite->sMoveY += 16;
+ sprite->pos2.y -= (sprite->sMoveY >> 8);
}
-static u8 sub_8105ACC(void)
+static u8 IsReelTimeSmokeAnimFinished(void)
{
- return gSprites[sSlotMachine->unk43].data[7];
+ return gSprites[sSlotMachine->reelTimeSmokeSpriteId].sAnimFinished;
}
-static void sub_8105AEC(void)
+static void DestroyReelTimeSmokeSprite(void)
{
- struct Sprite *sprite = &gSprites[sSlotMachine->unk43];
+ struct Sprite *sprite = &gSprites[sSlotMachine->reelTimeSmokeSpriteId];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-static u8 sub_8105B1C(s16 x, s16 y)
+#undef sState
+#undef sMoveY
+#undef sTimer
+#undef sAnimFinished
+
+static u8 CreatePikaPowerBoltSprite(s16 x, s16 y)
{
- u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
+ u8 spriteId = CreateSprite(&sSpriteTemplate_PikaPowerBolt, x, y, 12);
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 2;
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
@@ -3746,153 +4091,159 @@ static u8 sub_8105B1C(s16 x, s16 y)
return spriteId;
}
-static void sub_8105B70(struct Sprite *sprite)
+static void SpriteCB_PikaPowerBolt(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
- sprite->data[7] = 1;
+ sprite->data[7] = TRUE;
}
-static void sub_8105B88(u8 spriteId)
+static void DestroyPikaPowerBoltSprite(u8 spriteId)
{
struct Sprite *sprite = &gSprites[spriteId];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
-static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2)
+static u8 CreateStdDigitalDisplaySprite(u8 templateIdx, u8 dispInfoId, s16 spriteId)
{
- return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2);
+ return CreateDigitalDisplaySprite(templateIdx, sDigitalDisplay_SpriteCallbacks[dispInfoId], sDigitalDisplay_SpriteCoords[dispInfoId][0], sDigitalDisplay_SpriteCoords[dispInfoId][1], spriteId);
}
-static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
+#define sState data[0]
+#define sCounter data[1]
+#define sSpriteId data[6]
+
+static u8 CreateDigitalDisplaySprite(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 internalSpriteId)
{
struct SpriteTemplate spriteTemplate;
u8 spriteId;
struct Sprite *sprite;
- spriteTemplate = *gUnknown_083EDB5C[templateIdx];
- spriteTemplate.images = gUnknown_03001188[templateIdx];
+ spriteTemplate = *sSpriteTemplates_DigitalDisplay[templateIdx];
+ spriteTemplate.images = sImageTables_DigitalDisplay[templateIdx];
spriteId = CreateSprite(&spriteTemplate, x, y, 16);
sprite = &gSprites[spriteId];
sprite->oam.priority = 3;
sprite->callback = callback;
- sprite->data[6] = a4;
- sprite->data[7] = 1;
- if (gUnknown_083EDBC4[templateIdx])
- SetSubspriteTables(sprite, gUnknown_083EDBC4[templateIdx]);
+ sprite->sSpriteId = internalSpriteId;
+ sprite->sWaitForAnim = TRUE;
+ if (sSubspriteTables_DigitalDisplay[templateIdx])
+ SetSubspriteTables(sprite, sSubspriteTables_DigitalDisplay[templateIdx]);
return spriteId;
}
-static void sub_8105C64(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_Static(struct Sprite *sprite)
{
- sprite->data[7] = 0;
+ sprite->sWaitForAnim = FALSE;
}
-static void sub_8105C6C(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_Smoke(struct Sprite *sprite)
{
- s16 sp0[] = {4, -4, 4, -4};
- s16 sp8[] = {4, 4, -4, -4};
+ s16 targetX[] = {4, -4, 4, -4};
+ s16 targetY[] = {4, 4, -4, -4};
- if (sprite->data[1]++ >= 16)
+ if (sprite->sCounter++ >= 16)
{
sprite->subspriteTableNum ^= 1;
- sprite->data[1] = 0;
+ sprite->sCounter = 0;
}
sprite->pos2.x = 0;
sprite->pos2.y = 0;
if (sprite->subspriteTableNum != 0)
{
- sprite->pos2.x = sp0[sprite->data[6]];
- sprite->pos2.y = sp8[sprite->data[6]];
+ sprite->pos2.x = targetX[sprite->sSpriteId];
+ sprite->pos2.y = targetY[sprite->sSpriteId];
}
}
-static void sub_8105CF0(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_SmokeNE(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
- sub_8105C6C(sprite);
+ SpriteCB_DigitalDisplay_Smoke(sprite);
}
-static void sub_8105D08(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_SmokeSW(struct Sprite *sprite)
{
sprite->vFlip = TRUE;
- sub_8105C6C(sprite);
+ SpriteCB_DigitalDisplay_Smoke(sprite);
}
-static void sub_8105D20(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_SmokeSE(struct Sprite *sprite)
{
sprite->hFlip = TRUE;
sprite->vFlip = TRUE;
- sub_8105C6C(sprite);
+ SpriteCB_DigitalDisplay_Smoke(sprite);
}
-static void sub_8105D3C(struct Sprite *sprite)
+// The word "Reel" in Reel Time
+static void SpriteCB_DigitalDisplay_Reel(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
sprite->pos1.x += 4;
if (sprite->pos1.x >= 0xd0)
{
sprite->pos1.x = 0xd0;
- sprite->data[0]++;
+ sprite->sState++;
}
break;
case 1:
- if (++sprite->data[1] > 90)
- sprite->data[0]++;
+ if (++sprite->sCounter > 90)
+ sprite->sState++;
break;
case 2:
sprite->pos1.x += 4;
if (sprite->pos1.x >= 0x110)
- sprite->data[0]++;
+ sprite->sState++;
break;
case 3:
- sprite->data[7] = 0;
+ sprite->sWaitForAnim = FALSE;
break;
}
}
-static void sub_8105DA4(struct Sprite *sprite)
+// The word "Time" in Reel Time
+static void SpriteCB_DigitalDisplay_Time(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
sprite->pos1.x -= 4;
if (sprite->pos1.x <= 0xd0)
{
sprite->pos1.x = 0xd0;
- sprite->data[0]++;
+ sprite->sState++;
}
break;
case 1:
- if (++sprite->data[1] > 90)
- sprite->data[0]++;
+ if (++sprite->sCounter > 90)
+ sprite->sState++;
break;
case 2:
sprite->pos1.x -= 4;
if (sprite->pos1.x <= 0x90)
- sprite->data[0]++;
+ sprite->sState++;
break;
case 3:
- sprite->data[7] = 0;
+ sprite->sWaitForAnim = FALSE;
break;
}
}
-static void sub_8105E08(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_ReelTimeNumber(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- StartSpriteAnim(sprite, sSlotMachine->fairRollsLeft - 1);
- sprite->data[0]++;
+ StartSpriteAnim(sprite, sSlotMachine->reelTimeSpinsLeft - 1);
+ sprite->sState++;
// fallthrough
case 1:
- if (++sprite->data[1] >= 4)
+ if (++sprite->sCounter >= 4)
{
- sprite->data[0]++;
- sprite->data[1] = 0;
+ sprite->sState++;
+ sprite->sCounter = 0;
}
break;
case 2:
@@ -3900,54 +4251,54 @@ static void sub_8105E08(struct Sprite *sprite)
if (sprite->pos1.x >= 0xd0)
{
sprite->pos1.x = 0xd0;
- sprite->data[0]++;
+ sprite->sState++;
}
break;
case 3:
- if (++sprite->data[1] > 90)
- sprite->data[0]++;
+ if (++sprite->sCounter > 90)
+ sprite->sState++;
break;
case 4:
sprite->pos1.x += 4;
if (sprite->pos1.x >= 0xf8)
- sprite->data[0]++;
+ sprite->sState++;
break;
case 5:
- sprite->data[7] = 0;
+ sprite->sWaitForAnim = FALSE;
break;
}
}
-static void sub_8105EB4(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_PokeballRocking(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
sprite->animPaused = TRUE;
- sprite->data[0]++;
+ sprite->sState++;
// fallthrough
case 1:
sprite->pos1.y += 8;
if (sprite->pos1.y >= 0x70)
{
sprite->pos1.y = 0x70;
- sprite->data[1] = 16;
- sprite->data[0]++;
+ sprite->sCounter = 16;
+ sprite->sState++;
}
break;
case 2:
if (sprite->data[2] == 0)
{
- sprite->pos1.y -= sprite->data[1];
- sprite->data[1] = -sprite->data[1];
+ sprite->pos1.y -= sprite->sCounter;
+ sprite->sCounter = -sprite->sCounter;
if (++sprite->data[3] >= 2)
{
- sprite->data[1] >>= 2;
+ sprite->sCounter >>= 2;
sprite->data[3] = 0;
- if (sprite->data[1] == 0)
+ if (sprite->sCounter == 0)
{
- sprite->data[0]++;
- sprite->data[7] = 0;
+ sprite->sState++;
+ sprite->sWaitForAnim = FALSE;
sprite->animPaused = FALSE;
}
}
@@ -3958,53 +4309,53 @@ static void sub_8105EB4(struct Sprite *sprite)
}
}
-static void sub_8105F54(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_Stop(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- if (++sprite->data[1] > 8)
- sprite->data[0]++;
+ if (++sprite->sCounter > 8)
+ sprite->sState++;
break;
case 1:
sprite->pos1.y += 2;
if (sprite->pos1.y >= 0x30)
{
sprite->pos1.y = 0x30;
- sprite->data[0]++;
- sprite->data[7] = 0;
+ sprite->sState++;
+ sprite->sWaitForAnim = FALSE;
}
break;
}
}
-static void sub_8105F9C(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_AButtonStop(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
sprite->invisible = TRUE;
- if (++sprite->data[1] > 0x20)
+ if (++sprite->sCounter > 0x20)
{
- sprite->data[0]++;
- sprite->data[1] = 5;
+ sprite->sState++;
+ sprite->sCounter = 5;
sprite->oam.mosaic = TRUE;
sprite->invisible = FALSE;
StartSpriteAnim(sprite, 1);
- SetGpuReg(REG_OFFSET_MOSAIC, ((sprite->data[1] << 4) | sprite->data[1]) << 8);
+ SetGpuReg(REG_OFFSET_MOSAIC, ((sprite->sCounter << 4) | sprite->sCounter) << 8);
}
break;
case 1:
- sprite->data[1] -= (sprite->data[2] >> 8);
- if (sprite->data[1] < 0)
- sprite->data[1] = 0;
- SetGpuReg(REG_OFFSET_MOSAIC, ((sprite->data[1] << 4) | sprite->data[1]) << 8);
+ sprite->sCounter -= (sprite->data[2] >> 8);
+ if (sprite->sCounter < 0)
+ sprite->sCounter = 0;
+ SetGpuReg(REG_OFFSET_MOSAIC, ((sprite->sCounter << 4) | sprite->sCounter) << 8);
sprite->data[2] &= 0xff;
sprite->data[2] += 0x80;
- if (sprite->data[1] == 0)
+ if (sprite->sCounter == 0)
{
- sprite->data[0]++;
- sprite->data[7] = 0;
+ sprite->sState++;
+ sprite->sWaitForAnim = FALSE;
sprite->oam.mosaic = FALSE;
StartSpriteAnim(sprite, 0);
}
@@ -4012,11 +4363,11 @@ static void sub_8105F9C(struct Sprite *sprite)
}
}
-static void sub_8106058(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_PokeballShining(struct Sprite *sprite)
{
- if (sprite->data[1] < 3)
+ if (sprite->sCounter < 3)
{
- LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ LoadPalette(sPokeballShiningPalTable[sprite->sCounter], (IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY) << 4) + 0x100, 32);
if (++sprite->data[2] >= 4)
{
sprite->data[1]++;
@@ -4025,34 +4376,35 @@ static void sub_8106058(struct Sprite *sprite)
}
else
{
- LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ LoadPalette(sPokeballShiningPalTable[sprite->sCounter], (IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY) << 4) + 0x100, 32);
if (++sprite->data[2] >= 25)
{
- sprite->data[1] = 0;
+ sprite->sCounter = 0;
sprite->data[2] = 0;
}
}
StartSpriteAnimIfDifferent(sprite, 1);
- sprite->data[7] = 0;
+ sprite->sWaitForAnim = FALSE;
}
-static void sub_81060FC(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_RegBonus(struct Sprite *sprite)
{
- s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0};
- s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48};
- s16 sp20[] = {16, 12, 16, 0, 0, 4, 8, 8};
+ // Elements in array correspond to R E G B O N U S
+ s16 letterXOffset[] = { 0, -40, 0, 0, 48, 0, 24, 0};
+ s16 letterYOffset[] = {-32, 0, -32, -48, 0, -48, 0, -48};
+ s16 letterDelay[] = { 16, 12, 16, 0, 0, 4, 8, 8};
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->pos2.x = sp00[sprite->data[6]];
- sprite->pos2.y = sp10[sprite->data[6]];
- sprite->data[1] = sp20[sprite->data[6]];
- sprite->data[0]++;
+ sprite->pos2.x = letterXOffset[sprite->sSpriteId];
+ sprite->pos2.y = letterYOffset[sprite->sSpriteId];
+ sprite->sCounter = letterDelay[sprite->sSpriteId];
+ sprite->sState++;
// fallthrough
case 1:
- if (sprite->data[1]-- == 0)
- sprite->data[0]++;
+ if (sprite->sCounter-- == 0)
+ sprite->sState++;
break;
case 2:
if (sprite->pos2.x > 0)
@@ -4066,166 +4418,168 @@ static void sub_81060FC(struct Sprite *sprite)
sprite->pos2.y += 4;
if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
- sprite->data[0]++;
+ sprite->sState++;
break;
}
}
-static void sub_81061C8(struct Sprite *sprite)
+static void SpriteCB_DigitalDisplay_BigBonus(struct Sprite *sprite)
{
s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24};
- if (sprite->data[0] == 0)
+ if (sprite->sState == 0)
{
- sprite->data[0]++;
- sprite->data[1] = 12;
+ sprite->sState++;
+ sprite->sCounter = 12;
}
- sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]);
- sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]);
- if (sprite->data[1] != 0)
- sprite->data[1]--;
+ sprite->pos2.x = Cos(sp0[sprite->sSpriteId], sprite->sCounter);
+ sprite->pos2.y = Sin(sp0[sprite->sSpriteId], sprite->sCounter);
+ if (sprite->sCounter != 0)
+ sprite->sCounter--;
}
-static void sub_8106230(struct Sprite *sprite)
+// For the A Button prompt when inserting bet
+// Initially no sprite until after the first bet
+static void SpriteCB_DigitalDisplay_AButtonStart(struct Sprite *sprite)
{
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sSlotMachine->winIn = 0x2f;
- sSlotMachine->winOut = 0x3f;
- sSlotMachine->win0v = 0x2088;
+ sSlotMachine->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_CLR;
+ sSlotMachine->winOut = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
+ sSlotMachine->win0v = WIN_RANGE(32, 136);
sprite->invisible = TRUE;
- sprite->data[0]++;
+ sprite->sState++;
// fallthrough
case 1:
- sprite->data[1] += 2;
- sprite->data[2] = sprite->data[1] + 0xb0;
- sprite->data[3] = 0xf0 - sprite->data[1];
- if (sprite->data[2] > 0xd0)
- sprite->data[2] = 0xd0;
- if (sprite->data[3] < 0xd0)
- sprite->data[3] = 0xd0;
+ sprite->sCounter += 2;
+ sprite->data[2] = sprite->sCounter + 176;
+ sprite->data[3] = DISPLAY_WIDTH - sprite->sCounter;
+ if (sprite->data[2] > 208)
+ sprite->data[2] = 208;
+ if (sprite->data[3] < 208)
+ sprite->data[3] = 208;
sSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
- if (sprite->data[1] > 0x33)
+ if (sprite->sCounter > 51)
{
- sprite->data[0]++;
- sSlotMachine->winIn = 0x3f;
+ sprite->sState++;
+ sSlotMachine->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
}
break;
case 2:
if (sSlotMachine->bet == 0)
break;
- sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0);
- sSlotMachine->win0h = 0xc0e0;
- sSlotMachine->win0v = 0x6880;
- sSlotMachine->winIn = 0x2f;
- sprite->data[0]++;
- sprite->data[1] = 0;
+ AddDigitalDisplaySprite(DIG_SPRITE_A_BUTTON, SpriteCallbackDummy, 208, 116, 0);
+ sSlotMachine->win0h = WIN_RANGE(192, 224);
+ sSlotMachine->win0v = WIN_RANGE(104, 128);
+ sSlotMachine->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_CLR;
+ sprite->sState++;
+ sprite->sCounter = 0;
// fallthrough
case 3:
- sprite->data[1] += 2;
- sprite->data[2] = sprite->data[1] + 0xc0;
- sprite->data[3] = 0xe0 - sprite->data[1];
- if (sprite->data[2] > 0xd0)
- sprite->data[2] = 0xd0;
- if (sprite->data[3] < 0xd0)
- sprite->data[3] = 0xd0;
+ sprite->sCounter += 2;
+ sprite->data[2] = sprite->sCounter + 192;
+ sprite->data[3] = DISPLAY_WIDTH - 16 - sprite->sCounter;
+ if (sprite->data[2] > 208)
+ sprite->data[2] = 208;
+ if (sprite->data[3] < 208)
+ sprite->data[3] = 208;
sSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
- if (sprite->data[1] > 0x0f)
+ if (sprite->sCounter > 15)
{
- sprite->data[0]++;
- sSlotMachine->winIn = 0x3f;
+ sprite->sState++;
+ sSlotMachine->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
}
break;
}
}
-static void nullsub_70(void)
+static void EndDigitalDisplayScene_Dummy(void)
{
}
-static void sub_8106364(void)
+static void EndDigitalDisplayScene_StopReel(void)
{
SetGpuReg(REG_OFFSET_MOSAIC, 0);
}
-static void sub_8106370(void)
+static void EndDigitalDisplayScene_Win(void)
{
- LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20);
+ LoadPalette(sDigitalDisplay_Pal, (IndexOfSpritePaletteTag(PALTAG_DIG_DISPLAY) << 4) + 0x100, 0x20);
}
-static void sub_810639C(void)
+static void EndDigitalDisplayScene_InsertBet(void)
{
- sSlotMachine->win0h = 0xf0;
- sSlotMachine->win0v = 0xa0;
- sSlotMachine->winIn = 0x3f;
- sSlotMachine->winOut = 0x3f;
+ sSlotMachine->win0h = DISPLAY_WIDTH;
+ sSlotMachine->win0v = DISPLAY_HEIGHT;
+ sSlotMachine->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR;
+ sSlotMachine->winOut = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR;
}
-static void sub_81063C0(void)
+static void LoadSlotMachineGfx(void)
{
u8 i;
- sub_8106404();
- sUnknown_0203AAD4 = Alloc(0x3200);
- LZDecompressWram(gSlotMachineReelTime_Gfx, sUnknown_0203AAD4);
- sUnknown_0203AAD8 = Alloc(0x3600);
- LZDecompressWram(gReelTimeGfx, sUnknown_0203AAD8);
- sUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * ARRAY_COUNT(gSlotMachineSpriteSheets));
- for (i = 0; i < ARRAY_COUNT(gSlotMachineSpriteSheets); i++)
+ LoadReelBackground();
+ sDigitalDisplayGfxPtr = Alloc(0x3200);
+ LZDecompressWram(gSlotMachineDigitalDisplay_Gfx, sDigitalDisplayGfxPtr);
+ sReelTimeGfxPtr = Alloc(0x3600);
+ LZDecompressWram(sReelTimeGfx, sReelTimeGfxPtr);
+ sSlotMachineSpritesheetsPtr = AllocZeroed(sizeof(struct SpriteSheet) * ARRAY_COUNT(sSlotMachineSpriteSheets));
+ for (i = 0; i < ARRAY_COUNT(sSlotMachineSpriteSheets); i++)
{
- sUnknown_0203AB30[i].data = gSlotMachineSpriteSheets[i].data;
- sUnknown_0203AB30[i].size = gSlotMachineSpriteSheets[i].size;
- sUnknown_0203AB30[i].tag = gSlotMachineSpriteSheets[i].tag;
+ sSlotMachineSpritesheetsPtr[i].data = sSlotMachineSpriteSheets[i].data;
+ sSlotMachineSpritesheetsPtr[i].size = sSlotMachineSpriteSheets[i].size;
+ sSlotMachineSpritesheetsPtr[i].tag = sSlotMachineSpriteSheets[i].tag;
}
- sUnknown_0203AB30[17].data = sUnknown_0203AAD4 + 0xA00;
- sUnknown_0203AB30[18].data = sUnknown_0203AAD4 + 0x1400;
- sUnknown_0203AB30[19].data = sUnknown_0203AAD4 + 0x1600;
- sUnknown_0203AB30[20].data = sUnknown_0203AAD4 + 0x1900;
- LoadSpriteSheets(sUnknown_0203AB30);
- LoadSpritePalettes(gSlotMachineSpritePalettes);
+ sSlotMachineSpritesheetsPtr[GFXTAG_STOP - 1].data = sDigitalDisplayGfxPtr + 0xA00;
+ sSlotMachineSpritesheetsPtr[GFXTAG_BONUS - 1].data = sDigitalDisplayGfxPtr + 0x1400;
+ sSlotMachineSpritesheetsPtr[GFXTAG_BIG - 1].data = sDigitalDisplayGfxPtr + 0x1600;
+ sSlotMachineSpritesheetsPtr[GFXTAG_REG - 1].data = sDigitalDisplayGfxPtr + 0x1900;
+ LoadSpriteSheets(sSlotMachineSpritesheetsPtr);
+ LoadSpritePalettes(sSlotMachineSpritePalettes);
}
-static void sub_8106404(void)
+static void LoadReelBackground(void)
{
u8 *dest;
u8 i, j;
- sUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet));
- sUnknown_0203AAE0 = AllocZeroed(0x2000);
- dest = sUnknown_0203AAE0;
+ sReelBackgroundSpriteSheet = AllocZeroed(sizeof(struct SpriteSheet));
+ sReelBackground_Gfx = AllocZeroed(0x2000); // Background is plain white
+ dest = sReelBackground_Gfx;
for (i = 0; i < 0x40; i++)
{
for (j = 0; j < 0x20; j++, dest++)
- *dest = gUnknown_083EDCDC[j];
+ *dest = sReelBackground_Tilemap[j];
}
- sUnknown_0203AB2C->data = sUnknown_0203AAE0;
- sUnknown_0203AB2C->size = 0x800;
- sUnknown_0203AB2C->tag = 0x11;
- LoadSpriteSheet(sUnknown_0203AB2C);
+ sReelBackgroundSpriteSheet->data = sReelBackground_Gfx;
+ sReelBackgroundSpriteSheet->size = 0x800;
+ sReelBackgroundSpriteSheet->tag = GFXTAG_REEL_BG;
+ LoadSpriteSheet(sReelBackgroundSpriteSheet);
}
-static void sub_8106448(void)
+static void LoadMenuGfx(void)
{
- sUnknown_0203AAC8 = Alloc(0x2200);
- LZDecompressWram(gSlotMachineMenu_Gfx, sUnknown_0203AAC8);
- LoadBgTiles(2, sUnknown_0203AAC8, 0x2200, 0);
+ sMenuGfx = Alloc(0x2200);
+ LZDecompressWram(gSlotMachineMenu_Gfx, sMenuGfx);
+ LoadBgTiles(2, sMenuGfx, 0x2200, 0);
LoadPalette(gSlotMachineMenu_Pal, 0, 160);
- LoadPalette(gPalette_83EDE24, 208, 32);
+ LoadPalette(sUnkPalette, 208, 32);
}
-static void sub_81064B8(void)
+static void LoadMenuAndReelOverlayTilemaps(void)
{
- sub_812F968();
- LoadSlotMachineWheelOverlay();
+ LoadSlotMachineMenuTilemap();
+ LoadSlotMachineReelOverlay();
}
-static void sub_812F968(void)
+static void LoadSlotMachineMenuTilemap(void)
{
LoadBgTilemap(2, gSlotMachineMenu_Tilemap, 0x500, 0);
}
-static void LoadSlotMachineWheelOverlay(void)
+static void LoadSlotMachineReelOverlay(void)
{
s16 x, y, dx;
@@ -4233,226 +4587,227 @@ static void LoadSlotMachineWheelOverlay(void)
{
for (dx = 0; dx < 4; dx++)
{
- LoadBgTilemap(3, sUnknown_0203AAD0, 2, x + dx + 5 * 32);
- LoadBgTilemap(3, sUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32);
- LoadBgTilemap(3, sUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32);
- LoadBgTilemap(3, sUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32);
+ LoadBgTilemap(3, sReelOverlay_Tilemap, 2, x + dx + 5 * 32);
+ LoadBgTilemap(3, sReelOverlay_Tilemap + 1, 2, x + dx + 13 * 32);
+ LoadBgTilemap(3, sReelOverlay_Tilemap + 2, 2, x + dx + 6 * 32);
+ LoadBgTilemap(3, sReelOverlay_Tilemap + 3, 2, x + dx + 12 * 32);
}
- LoadBgTilemap(3, sUnknown_0203AAD0 + 4, 2, x + 6 * 32);
- LoadBgTilemap(3, sUnknown_0203AAD0 + 5, 2, x + 12 * 32);
+ LoadBgTilemap(3, sReelOverlay_Tilemap + 4, 2, x + 6 * 32);
+ LoadBgTilemap(3, sReelOverlay_Tilemap + 5, 2, x + 12 * 32);
for (y = 7; y <= 11; y++)
- LoadBgTilemap(3, sUnknown_0203AAD0 + 6, 2, x + y * 32);
+ LoadBgTilemap(3, sReelOverlay_Tilemap + 6, 2, x + y * 32);
}
}
-static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+// For (un)shading the gray button at the bottom of a reel when A is pressed. The button is colored in quadrants
+static void SetReelButtonTilemap(s16 offset, u16 topLeft, u16 topRight, u16 bottomLeft, u16 bottomRight)
{
- sUnknown_0203AADC[0] = arg1;
- sUnknown_0203AADC[1] = arg2;
- sUnknown_0203AADC[2] = arg3;
- sUnknown_0203AADC[3] = arg4;
+ sReelButtonPress_Tilemap[0] = topLeft;
+ sReelButtonPress_Tilemap[1] = topRight;
+ sReelButtonPress_Tilemap[2] = bottomLeft;
+ sReelButtonPress_Tilemap[3] = bottomRight;
- LoadBgTilemap(2, sUnknown_0203AADC, 2, 15 * 32 + arg0);
- LoadBgTilemap(2, sUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0);
- LoadBgTilemap(2, sUnknown_0203AADC + 2, 2, 16 * 32 + arg0);
- LoadBgTilemap(2, sUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0);
+ LoadBgTilemap(2, sReelButtonPress_Tilemap, 2, 15 * 32 + offset); // Top left
+ LoadBgTilemap(2, sReelButtonPress_Tilemap + 1, 2, 15 * 32 + 1 + offset); // Top right
+ LoadBgTilemap(2, sReelButtonPress_Tilemap + 2, 2, 16 * 32 + offset); // Bottom left
+ LoadBgTilemap(2, sReelButtonPress_Tilemap + 3, 2, 16 * 32 + 1 + offset); // Bottom Right
}
-static void sub_81065DC(void)
+static void LoadInfoBoxTilemap(void)
{
- LoadBgTilemap(2, gUnknown_08DCEC70, 0x500, 0);
+ LoadBgTilemap(2, gSlotMachineInfoBox_Tilemap, 0x500, 0);
HideBg(3);
}
-static void SlotMachineSetup_9_0(void)
-{
- gUnknown_03001188[0] = sUnknown_0203AAF4;
- gUnknown_03001188[1] = sUnknown_0203AAF8;
- gUnknown_03001188[2] = sUnknown_0203AAFC;
- gUnknown_03001188[3] = sUnknown_0203AB04;
- gUnknown_03001188[4] = sUnknown_0203AB08;
- gUnknown_03001188[5] = sUnknown_0203AB18;
- gUnknown_03001188[6] = sUnknown_0203AB1C;
- gUnknown_03001188[7] = sUnknown_0203AB20;
- gUnknown_03001188[8] = sUnknown_0203AB24;
- gUnknown_03001188[9] = sUnknown_0203AB28;
- gUnknown_03001188[10] = sUnknown_0203AB00;
- gUnknown_03001188[11] = sUnknown_0203AB00;
- gUnknown_03001188[12] = sUnknown_0203AB00;
- gUnknown_03001188[13] = sUnknown_0203AB00;
- gUnknown_03001188[14] = sUnknown_0203AB0C;
- gUnknown_03001188[15] = sUnknown_0203AB0C;
- gUnknown_03001188[16] = sUnknown_0203AB0C;
- gUnknown_03001188[17] = sUnknown_0203AB0C;
- gUnknown_03001188[18] = sUnknown_0203AB0C;
- gUnknown_03001188[19] = sUnknown_0203AB10;
- gUnknown_03001188[20] = sUnknown_0203AB10;
- gUnknown_03001188[21] = sUnknown_0203AB10;
- gUnknown_03001188[22] = sUnknown_0203AB14;
- gUnknown_03001188[23] = sUnknown_0203AB14;
- gUnknown_03001188[24] = sUnknown_0203AB14;
- gUnknown_03001188[25] = NULL;
-}
-
-static void SlotMachineSetup_8_0(void)
-{
- sUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AAF4[0].data = sUnknown_0203AAD4;
- sUnknown_0203AAF4[0].size = 0x600;
-
- sUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AAF8[0].data = sUnknown_0203AAD4 + 0x600;
- sUnknown_0203AAF8[0].size = 0x200;
-
- sUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AAFC[0].data = sUnknown_0203AAD4 + 0x800;
- sUnknown_0203AAFC[0].size = 0x200;
-
- sUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AB00[0].data = sUnknown_0203AAD4 + 0xA00;
- sUnknown_0203AB00[0].size = 0x200;
-
- sUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AB04[0].data = sUnknown_0203AAD4 + 0xC00;
- sUnknown_0203AB04[0].size = 0x300;
-
- sUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AB08[0].data = sUnknown_0203AAD4 + 0x1000;
- sUnknown_0203AB08[0].size = 0x400;
-
- sUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AB0C[0].data = sUnknown_0203AAD4 + 0x1400;
- sUnknown_0203AB0C[0].size = 0x200;
-
- sUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AB10[0].data = sUnknown_0203AAD4 + 0x1600;
- sUnknown_0203AB10[0].size = 0x300;
-
- sUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AB14[0].data = sUnknown_0203AAD4 + 0x1900;
- sUnknown_0203AB14[0].size = 0x300;
-
- sUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- sUnknown_0203AB18[0].data = sUnknown_0203AAD4 + 0x1C00;
- sUnknown_0203AB18[0].size = 0x200;
- sUnknown_0203AB18[1].data = sUnknown_0203AAD4 + 0x1E00;
- sUnknown_0203AB18[1].size = 0x200;
-
- sUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
- sUnknown_0203AB1C[0].data = sUnknown_0203AAD4 + 0x2000;
- sUnknown_0203AB1C[0].size = 640;
-
- sUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
- sUnknown_0203AB20[0].data = sUnknown_0203AAD4 + 0x2280;
- sUnknown_0203AB20[0].size = 0x80;
- sUnknown_0203AB20[1].data = sUnknown_0203AAD4 + 0x2300;
- sUnknown_0203AB20[1].size = 0x80;
- sUnknown_0203AB20[2].data = sUnknown_0203AAD4 + 0x2380;
- sUnknown_0203AB20[2].size = 0x80;
- sUnknown_0203AB20[3].data = sUnknown_0203AAD4 + 0x2400;
- sUnknown_0203AB20[3].size = 0x80;
- sUnknown_0203AB20[4].data = sUnknown_0203AAD4 + 0x2480;
- sUnknown_0203AB20[4].size = 0x80;
-
- sUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- sUnknown_0203AB24[0].data = sUnknown_0203AAD4 + 0x2600;
- sUnknown_0203AB24[0].size = 0x480;
- sUnknown_0203AB24[1].data = sUnknown_0203AAD4 + 10880;
- sUnknown_0203AB24[1].size = 0x480;
-
- sUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
- sUnknown_0203AB28[0].data = sUnknown_0203AAD4 + 0x2F00;
- sUnknown_0203AB28[0].size = 0x180;
- sUnknown_0203AB28[1].data = sUnknown_0203AAD4 + 0x3080;
- sUnknown_0203AB28[1].size = 0x180;
-}
-
-static const u8 gReelSymbols[][REEL_NUM_TAGS] =
-{
- {
- SLOT_MACHINE_TAG_7_RED,
- SLOT_MACHINE_TAG_CHERRY,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_7_BLUE,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_CHERRY,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_7_RED,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_7_BLUE,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_REPLAY
+static void SetDigitalDisplayImagePtrs(void)
+{
+ sImageTables_DigitalDisplay[DIG_SPRITE_REEL] = sImageTable_DigitalDisplay_Reel;
+ sImageTables_DigitalDisplay[DIG_SPRITE_TIME] = sImageTable_DigitalDisplay_Time;
+ sImageTables_DigitalDisplay[DIG_SPRITE_INSERT] = sImageTable_DigitalDisplay_Insert;
+ sImageTables_DigitalDisplay[DIG_SPRITE_WIN] = sImageTable_DigitalDisplay_Win;
+ sImageTables_DigitalDisplay[DIG_SPRITE_LOSE] = sImageTable_DigitalDisplay_Lose;
+ sImageTables_DigitalDisplay[DIG_SPRITE_A_BUTTON] = sImageTable_DigitalDisplay_AButton;
+ sImageTables_DigitalDisplay[DIG_SPRITE_SMOKE] = sImageTable_DigitalDisplay_Smoke;
+ sImageTables_DigitalDisplay[DIG_SPRITE_NUMBER] = sImageTable_DigitalDisplay_Number;
+ sImageTables_DigitalDisplay[DIG_SPRITE_POKE_BALL] = sImageTable_DigitalDisplay_Pokeball;
+ sImageTables_DigitalDisplay[DIG_SPRITE_D_PAD] = sImageTable_DigitalDisplay_DPad;
+ sImageTables_DigitalDisplay[DIG_SPRITE_STOP_S] = sImageTable_DigitalDisplay_Stop;
+ sImageTables_DigitalDisplay[DIG_SPRITE_STOP_T] = sImageTable_DigitalDisplay_Stop;
+ sImageTables_DigitalDisplay[DIG_SPRITE_STOP_O] = sImageTable_DigitalDisplay_Stop;
+ sImageTables_DigitalDisplay[DIG_SPRITE_STOP_P] = sImageTable_DigitalDisplay_Stop;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BONUS_B] = sImageTable_DigitalDisplay_Bonus;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BONUS_O] = sImageTable_DigitalDisplay_Bonus;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BONUS_N] = sImageTable_DigitalDisplay_Bonus;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BONUS_U] = sImageTable_DigitalDisplay_Bonus;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BONUS_S] = sImageTable_DigitalDisplay_Bonus;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BIG_B] = sImageTable_DigitalDisplay_Big;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BIG_I] = sImageTable_DigitalDisplay_Big;
+ sImageTables_DigitalDisplay[DIG_SPRITE_BIG_G] = sImageTable_DigitalDisplay_Big;
+ sImageTables_DigitalDisplay[DIG_SPRITE_REG_R] = sImageTable_DigitalDisplay_Reg;
+ sImageTables_DigitalDisplay[DIG_SPRITE_REG_E] = sImageTable_DigitalDisplay_Reg;
+ sImageTables_DigitalDisplay[DIG_SPRITE_REG_G] = sImageTable_DigitalDisplay_Reg;
+ sImageTables_DigitalDisplay[DIG_SPRITE_EMPTY] = NULL;
+}
+
+static void AllocDigitalDisplayGfx(void)
+{
+ sImageTable_DigitalDisplay_Reel = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Reel[0].data = sDigitalDisplayGfxPtr;
+ sImageTable_DigitalDisplay_Reel[0].size = 0x600;
+
+ sImageTable_DigitalDisplay_Time = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Time[0].data = sDigitalDisplayGfxPtr + 0x600;
+ sImageTable_DigitalDisplay_Time[0].size = 0x200;
+
+ sImageTable_DigitalDisplay_Insert = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Insert[0].data = sDigitalDisplayGfxPtr + 0x800;
+ sImageTable_DigitalDisplay_Insert[0].size = 0x200;
+
+ sImageTable_DigitalDisplay_Stop = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Stop[0].data = sDigitalDisplayGfxPtr + 0xA00;
+ sImageTable_DigitalDisplay_Stop[0].size = 0x200;
+
+ sImageTable_DigitalDisplay_Win = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Win[0].data = sDigitalDisplayGfxPtr + 0xC00;
+ sImageTable_DigitalDisplay_Win[0].size = 0x300;
+
+ sImageTable_DigitalDisplay_Lose = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Lose[0].data = sDigitalDisplayGfxPtr + 0x1000;
+ sImageTable_DigitalDisplay_Lose[0].size = 0x400;
+
+ sImageTable_DigitalDisplay_Bonus = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Bonus[0].data = sDigitalDisplayGfxPtr + 0x1400;
+ sImageTable_DigitalDisplay_Bonus[0].size = 0x200;
+
+ sImageTable_DigitalDisplay_Big = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Big[0].data = sDigitalDisplayGfxPtr + 0x1600;
+ sImageTable_DigitalDisplay_Big[0].size = 0x300;
+
+ sImageTable_DigitalDisplay_Reg = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Reg[0].data = sDigitalDisplayGfxPtr + 0x1900;
+ sImageTable_DigitalDisplay_Reg[0].size = 0x300;
+
+ sImageTable_DigitalDisplay_AButton = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sImageTable_DigitalDisplay_AButton[0].data = sDigitalDisplayGfxPtr + 0x1C00;
+ sImageTable_DigitalDisplay_AButton[0].size = 0x200;
+ sImageTable_DigitalDisplay_AButton[1].data = sDigitalDisplayGfxPtr + 0x1E00;
+ sImageTable_DigitalDisplay_AButton[1].size = 0x200;
+
+ sImageTable_DigitalDisplay_Smoke = AllocZeroed(sizeof(struct SpriteFrameImage) * 1);
+ sImageTable_DigitalDisplay_Smoke[0].data = sDigitalDisplayGfxPtr + 0x2000;
+ sImageTable_DigitalDisplay_Smoke[0].size = 640;
+
+ sImageTable_DigitalDisplay_Number = AllocZeroed(sizeof(struct SpriteFrameImage) * 5);
+ sImageTable_DigitalDisplay_Number[0].data = sDigitalDisplayGfxPtr + 0x2280;
+ sImageTable_DigitalDisplay_Number[0].size = 0x80;
+ sImageTable_DigitalDisplay_Number[1].data = sDigitalDisplayGfxPtr + 0x2300;
+ sImageTable_DigitalDisplay_Number[1].size = 0x80;
+ sImageTable_DigitalDisplay_Number[2].data = sDigitalDisplayGfxPtr + 0x2380;
+ sImageTable_DigitalDisplay_Number[2].size = 0x80;
+ sImageTable_DigitalDisplay_Number[3].data = sDigitalDisplayGfxPtr + 0x2400;
+ sImageTable_DigitalDisplay_Number[3].size = 0x80;
+ sImageTable_DigitalDisplay_Number[4].data = sDigitalDisplayGfxPtr + 0x2480;
+ sImageTable_DigitalDisplay_Number[4].size = 0x80;
+
+ sImageTable_DigitalDisplay_Pokeball = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sImageTable_DigitalDisplay_Pokeball[0].data = sDigitalDisplayGfxPtr + 0x2600;
+ sImageTable_DigitalDisplay_Pokeball[0].size = 0x480;
+ sImageTable_DigitalDisplay_Pokeball[1].data = sDigitalDisplayGfxPtr + 10880;
+ sImageTable_DigitalDisplay_Pokeball[1].size = 0x480;
+
+ sImageTable_DigitalDisplay_DPad = AllocZeroed(sizeof(struct SpriteFrameImage) * 2);
+ sImageTable_DigitalDisplay_DPad[0].data = sDigitalDisplayGfxPtr + 0x2F00;
+ sImageTable_DigitalDisplay_DPad[0].size = 0x180;
+ sImageTable_DigitalDisplay_DPad[1].data = sDigitalDisplayGfxPtr + 0x3080;
+ sImageTable_DigitalDisplay_DPad[1].size = 0x180;
+}
+
+static const u8 sReelSymbolTileTags[NUM_REELS][SYMBOLS_PER_REEL] =
+{
+ [LEFT_REEL] = {
+ GFXTAG_7_RED,
+ GFXTAG_CHERRY,
+ GFXTAG_AZURILL,
+ GFXTAG_REPLAY,
+ GFXTAG_POWER,
+ GFXTAG_LOTAD,
+ GFXTAG_7_BLUE,
+ GFXTAG_LOTAD,
+ GFXTAG_CHERRY,
+ GFXTAG_POWER,
+ GFXTAG_REPLAY,
+ GFXTAG_AZURILL,
+ GFXTAG_7_RED,
+ GFXTAG_POWER,
+ GFXTAG_LOTAD,
+ GFXTAG_REPLAY,
+ GFXTAG_AZURILL,
+ GFXTAG_7_BLUE,
+ GFXTAG_POWER,
+ GFXTAG_LOTAD,
+ GFXTAG_REPLAY
},
- {
- SLOT_MACHINE_TAG_7_RED,
- SLOT_MACHINE_TAG_CHERRY,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_CHERRY,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_7_BLUE,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_CHERRY,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_CHERRY,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_CHERRY
+ [MIDDLE_REEL] = {
+ GFXTAG_7_RED,
+ GFXTAG_CHERRY,
+ GFXTAG_REPLAY,
+ GFXTAG_LOTAD,
+ GFXTAG_AZURILL,
+ GFXTAG_CHERRY,
+ GFXTAG_REPLAY,
+ GFXTAG_POWER,
+ GFXTAG_POWER,
+ GFXTAG_LOTAD,
+ GFXTAG_7_BLUE,
+ GFXTAG_LOTAD,
+ GFXTAG_REPLAY,
+ GFXTAG_CHERRY,
+ GFXTAG_AZURILL,
+ GFXTAG_LOTAD,
+ GFXTAG_REPLAY,
+ GFXTAG_CHERRY,
+ GFXTAG_LOTAD,
+ GFXTAG_REPLAY,
+ GFXTAG_CHERRY
},
- {
- SLOT_MACHINE_TAG_7_RED,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_7_BLUE,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_REPLAY,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_CHERRY
+ [RIGHT_REEL] = {
+ GFXTAG_7_RED,
+ GFXTAG_POWER,
+ GFXTAG_7_BLUE,
+ GFXTAG_REPLAY,
+ GFXTAG_LOTAD,
+ GFXTAG_AZURILL,
+ GFXTAG_REPLAY,
+ GFXTAG_LOTAD,
+ GFXTAG_POWER,
+ GFXTAG_AZURILL,
+ GFXTAG_REPLAY,
+ GFXTAG_LOTAD,
+ GFXTAG_AZURILL,
+ GFXTAG_POWER,
+ GFXTAG_REPLAY,
+ GFXTAG_LOTAD,
+ GFXTAG_AZURILL,
+ GFXTAG_POWER,
+ GFXTAG_REPLAY,
+ GFXTAG_LOTAD,
+ GFXTAG_CHERRY
},
};
-static const u8 gReelTimeTags[] = {
+static const u8 sReelTimeTags[] = {
1, 0, 5, 4, 3, 2
};
-static const s16 gInitialReelPositions[][2] = {
- {0, 6},
- {0, 10},
- {0, 2}
+static const s16 sInitialReelPositions[NUM_REELS][2] = {
+ [LEFT_REEL] = {0, 6},
+ [MIDDLE_REEL] = {0, 10},
+ [RIGHT_REEL] = {0, 2}
};
-static const u8 gLuckyRoundProbabilities[][3] = {
+static const u8 sLuckyRoundProbabilities[][3] = {
{1, 1, 12},
{1, 1, 14},
{2, 2, 14},
@@ -4461,13 +4816,13 @@ static const u8 gLuckyRoundProbabilities[][3] = {
{3, 3, 16}
};
-static const u8 gLuckyFlagProbabilities_Top3[][6] = {
+static const u8 sLuckyFlagProbabilities_Top3[][6] = {
{25, 25, 30, 40, 40, 50},
{25, 25, 30, 30, 35, 35},
{25, 25, 30, 25, 25, 30}
};
-static const u8 gLuckyFlagProbabilities_NotTop3[][6] = {
+static const u8 sLuckyFlagProbabilities_NotTop3[][6] = {
{20, 25, 25, 20, 25, 25},
{12, 15, 15, 18, 19, 22},
{25, 25, 25, 30, 30, 40},
@@ -4475,7 +4830,7 @@ static const u8 gLuckyFlagProbabilities_NotTop3[][6] = {
{40, 40, 35, 35, 40, 40}
};
-static const u8 gReeltimeProbabilities_UnluckyGame[][17] = {
+static const u8 sReeltimeProbabilities_UnluckyGame[][17] = {
{243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5},
{ 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5},
{ 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40},
@@ -4484,7 +4839,7 @@ static const u8 gReeltimeProbabilities_UnluckyGame[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6}
};
-static const u8 gReelTimeProbabilities_LuckyGame[][17] = {
+static const u8 sReelTimeProbabilities_LuckyGame[][17] = {
{ 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5},
{ 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6},
{ 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35},
@@ -4493,11 +4848,11 @@ static const u8 gReelTimeProbabilities_LuckyGame[][17] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60}
};
-static const u16 gProbabilityTable_SkipToReeltimeAction14[] = {
+static const u16 sReelTimeExplodeProbability[] = {
128, 175, 200, 225, 256
};
-static const u16 gReelIncrementTable[][2] = {
+static const u16 sReelIncrementTable[][2] = {
{10, 5},
{10, 10},
{10, 15},
@@ -4505,211 +4860,219 @@ static const u16 gReelIncrementTable[][2] = {
{10, 35}
};
-static const u16 gReelTimeBonusIncrementTable[] = {
+static const u16 sReelTimeBonusIncrementTable[] = {
0, 5, 10, 15, 20
};
// tentative name
-static const u8 gBiasTags[] = {
- SLOT_MACHINE_TAG_REPLAY, SLOT_MACHINE_TAG_CHERRY, SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_AZURILL, SLOT_MACHINE_TAG_POWER, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED
+static const u8 sBiasTags[] = {
+ GFXTAG_REPLAY, GFXTAG_CHERRY, GFXTAG_LOTAD, GFXTAG_AZURILL, GFXTAG_POWER, GFXTAG_7_RED, GFXTAG_7_RED, GFXTAG_7_RED
};
-static const u16 gLuckyFlagSettings_Top3[] = {
+static const u16 sLuckyFlagSettings_Top3[] = {
LUCKY_BIAS_777, LUCKY_BIAS_REELTIME, LUCKY_BIAS_MIXED_777
};
-static const u16 gLuckyFlagSettings_NotTop3[] = {
+static const u16 sLuckyFlagSettings_NotTop3[] = {
LUCKY_BIAS_POWER, LUCKY_BIAS_AZURILL, LUCKY_BIAS_LOTAD, LUCKY_BIAS_CHERRY, LUCKY_BIAS_REPLAY
};
-static const u8 gSym2Match[] = {
- SLOT_MACHINE_MATCHED_777_RED,
- SLOT_MACHINE_MATCHED_777_BLUE,
- SLOT_MACHINE_MATCHED_AZURILL,
- SLOT_MACHINE_MATCHED_LOTAD,
- SLOT_MACHINE_MATCHED_1CHERRY,
- SLOT_MACHINE_MATCHED_POWER,
- SLOT_MACHINE_MATCHED_REPLAY
-};
-
-static const u16 gSlotMatchFlags[] = {
- 1 << SLOT_MACHINE_MATCHED_1CHERRY,
- 1 << SLOT_MACHINE_MATCHED_2CHERRY,
- 1 << SLOT_MACHINE_MATCHED_REPLAY,
- 1 << SLOT_MACHINE_MATCHED_LOTAD,
- 1 << SLOT_MACHINE_MATCHED_AZURILL,
- 1 << SLOT_MACHINE_MATCHED_POWER,
- 1 << SLOT_MACHINE_MATCHED_777_MIXED,
- 1 << SLOT_MACHINE_MATCHED_777_RED,
- 1 << SLOT_MACHINE_MATCHED_777_BLUE
-};
-
-static const u16 gSlotPayouts[] = {
- 2, 4, 0, 6, 12, 3, 90, 300, 300
-};
-
-static const s16 gUnknown_083ECE7E[][2] = {
- { 0xd0, 0x38},
- { 0xb8, 0x00},
- { 0xc8, 0x08},
- { 0xd8, 0x10},
- { 0xe8, 0x18},
- { 0xd0, 0x48},
- { 0xd0, 0x08},
- { 0xd0, 0x40},
- { 0xd0, 0x38},
- { 0xc0, 0x58},
- { 0xe0, 0x58},
- { 0xc0, 0x78},
- { 0xe0, 0x78},
- { 0x90, 0x38},
- {0x110, 0x58},
- { 0xa8, 0x70},
- { 0xd0, 0x54},
- { 0xd0, 0x70},
- { 0xbc, 0x34},
- { 0xd0, 0x34},
- { 0xe4, 0x34},
- { 0xb8, 0x48},
- { 0xc4, 0x48},
- { 0xd0, 0x48},
- { 0xdc, 0x48},
- { 0xe8, 0x48},
- { 0xbc, 0x34},
- { 0xd0, 0x34},
- { 0xe4, 0x34},
- { 0xb8, 0x48},
- { 0xc4, 0x48},
- { 0xd0, 0x48},
- { 0xdc, 0x48},
- { 0xe8, 0x48},
- { 0x00, 0x00}
-};
-
-static const SpriteCallback gUnknown_083ECF0C[] = {
- sub_8105C64,
- sub_8105F54,
- sub_8105F54,
- sub_8105F54,
- sub_8105F54,
- sub_8105F9C,
- sub_8105EB4,
- sub_8105C64,
- sub_8105C64,
- sub_8105C6C,
- sub_8105CF0,
- sub_8105D08,
- sub_8105D20,
- sub_8105D3C,
- sub_8105DA4,
- sub_8105E08,
- sub_8105C64,
- sub_8106058,
- sub_81060FC,
- sub_81060FC,
- sub_81060FC,
- sub_81060FC,
- sub_81060FC,
- sub_81060FC,
- sub_81060FC,
- sub_81060FC,
- sub_81061C8,
- sub_81061C8,
- sub_81061C8,
- sub_81061C8,
- sub_81061C8,
- sub_81061C8,
- sub_81061C8,
- sub_81061C8,
- sub_8106230
-};
-
-static const struct UnkStruct1 Unknown_83ECF98[] = {
- {25, 34, 0},
- {2, 0, 0},
- {9, 16, 0},
- {255, 0, 0}
-};
-
-static const struct UnkStruct1 Unknown_83ECFA8[] = {
- {10, 1, 0},
- {11, 2, 0},
- {12, 3, 0},
- {13, 4, 0},
- {5, 5, 0},
- {8, 6, 0},
- {255, 0, 0}
-};
-
-static const struct UnkStruct1 Unknown_83ECFC4[] = {
- {3, 7, 0},
- {8, 17, 0},
- {255, 0, 0}
-};
-
-static const struct UnkStruct1 Unknown_83ECFD0[] = {
- {4, 8, 0},
- {6, 9, 0},
- {6, 10, 1},
- {6, 11, 2},
- {6, 12, 3},
- {255, 0, 0}
-};
-
-static const struct UnkStruct1 Unknown_83ECFE8[] = {
- {0, 13, 0},
- {1, 14, 0},
- {7, 15, 0},
- {255, 0, 0}
-};
-
-static const struct UnkStruct1 Unknown_83ECFF8[] = {
- {19, 26, 0},
- {20, 27, 1},
- {21, 28, 2},
- {14, 29, 3},
- {15, 30, 4},
- {16, 31, 5},
- {17, 32, 6},
- {18, 33, 7},
- {8, 17, 0},
- {255, 0, 0}
-};
-
-static const struct UnkStruct1 Unknown_83ED020[] = {
- {22, 18, 0},
- {23, 19, 1},
- {24, 20, 2},
- {14, 21, 3},
- {15, 22, 4},
- {16, 23, 5},
- {17, 24, 6},
- {18, 25, 7},
- {8, 17, 0},
- {255, 0, 0}
-};
-
-static const struct UnkStruct1 *const gUnknown_083ED048[] = {
- Unknown_83ECF98,
- Unknown_83ECFA8,
- Unknown_83ECFC4,
- Unknown_83ECFD0,
- Unknown_83ECFE8,
- Unknown_83ED020,
- Unknown_83ECFF8
-};
-
-static void (*const gUnknown_083ED064[])(void) = {
- sub_810639C,
- sub_8106364,
- sub_8106370,
- nullsub_70,
- nullsub_70,
- sub_8106370,
- sub_8106370
-};
-
-static const struct OamData gUnknown_085A7A3C =
+static const u8 sSymToMatch[] = {
+ [GFXTAG_7_RED] = MATCHED_777_RED,
+ [GFXTAG_7_BLUE] = MATCHED_777_BLUE,
+ [GFXTAG_AZURILL] = MATCHED_AZURILL,
+ [GFXTAG_LOTAD] = MATCHED_LOTAD,
+ [GFXTAG_CHERRY] = MATCHED_1CHERRY,
+ [GFXTAG_POWER] = MATCHED_POWER,
+ [GFXTAG_REPLAY] = MATCHED_REPLAY
+};
+
+static const u16 sSlotMatchFlags[] = {
+ [MATCHED_1CHERRY] = 1 << MATCHED_1CHERRY,
+ [MATCHED_2CHERRY] = 1 << MATCHED_2CHERRY,
+ [MATCHED_REPLAY] = 1 << MATCHED_REPLAY,
+ [MATCHED_LOTAD] = 1 << MATCHED_LOTAD,
+ [MATCHED_AZURILL] = 1 << MATCHED_AZURILL,
+ [MATCHED_POWER] = 1 << MATCHED_POWER,
+ [MATCHED_777_MIXED] = 1 << MATCHED_777_MIXED,
+ [MATCHED_777_RED] = 1 << MATCHED_777_RED,
+ [MATCHED_777_BLUE] = 1 << MATCHED_777_BLUE
+};
+
+static const u16 sSlotPayouts[] = {
+ [MATCHED_1CHERRY] = 2,
+ [MATCHED_2CHERRY] = 4,
+ [MATCHED_REPLAY] = 0,
+ [MATCHED_LOTAD] = 6,
+ [MATCHED_AZURILL] = 12,
+ [MATCHED_POWER] = 3,
+ [MATCHED_777_MIXED] = 90,
+ [MATCHED_777_RED] = 300,
+ [MATCHED_777_BLUE] = 300
+};
+
+static const s16 sDigitalDisplay_SpriteCoords[][2] = {
+ [DIG_DISPINFO_INSERT] = { 208, 56},
+ [DIG_DISPINFO_STOP_S] = { 184, 0},
+ [DIG_DISPINFO_STOP_T] = { 200, 8},
+ [DIG_DISPINFO_STOP_O] = { 216, 16},
+ [DIG_DISPINFO_STOP_P] = { 232, 24},
+ [DIG_DISPINFO_A_BUTTON_STOP] = { 208, 72},
+ [DIG_DISPINFO_POKE_BALL_ROCKING] = { 208, 8},
+ [DIG_DISPINFO_WIN] = { 208, 64},
+ [DIG_DISPINFO_LOSE] = { 208, 56},
+ [DIG_DISPINFO_SMOKE_NW] = { 192, 88},
+ [DIG_DISPINFO_SMOKE_NE] = { 224, 88},
+ [DIG_DISPINFO_SMOKE_SW] = { 192, 120},
+ [DIG_DISPINFO_SMOKE_SE] = { 224, 120},
+ [DIG_DISPINFO_REEL] = { 144, 56},
+ [DIG_DISPINFO_TIME] = { 272, 88},
+ [DIG_DISPINFO_NUMBER] = { 168, 112},
+ [DIG_DISPINFO_DPAD] = { 208, 84},
+ [DIG_DISPINFO_POKE_BALL_SHINING] = { 208, 112},
+ [DIG_DISPINFO_REG_R] = { 188, 52},
+ [DIG_DISPINFO_REG_E] = { 208, 52},
+ [DIG_DISPINFO_REG_G] = { 228, 52},
+ [DIG_DISPINFO_REG_BONUS_B] = { 184, 72},
+ [DIG_DISPINFO_REG_BONUS_O] = { 196, 72},
+ [DIG_DISPINFO_REG_BONUS_N] = { 208, 72},
+ [DIG_DISPINFO_REG_BONUS_U] = { 220, 72},
+ [DIG_DISPINFO_REG_BONUS_S] = { 232, 72},
+ [DIG_DISPINFO_BIG_B] = { 188, 52},
+ [DIG_DISPINFO_BIG_I] = { 208, 52},
+ [DIG_DISPINFO_BIG_G] = { 228, 52},
+ [DIG_DISPINFO_BIG_BONUS_B] = { 184, 72},
+ [DIG_DISPINFO_BIG_BONUS_O] = { 196, 72},
+ [DIG_DISPINFO_BIG_BONUS_N] = { 208, 72},
+ [DIG_DISPINFO_BIG_BONUS_U] = { 220, 72},
+ [DIG_DISPINFO_BIG_BONUS_S] = { 232, 72},
+ [DIG_DISPINFO_A_BUTTON_START] = { 0, 0} // Initially offscreen
+};
+
+static const SpriteCallback sDigitalDisplay_SpriteCallbacks[] = {
+ [DIG_DISPINFO_INSERT] = SpriteCB_DigitalDisplay_Static,
+ [DIG_DISPINFO_STOP_S] = SpriteCB_DigitalDisplay_Stop,
+ [DIG_DISPINFO_STOP_T] = SpriteCB_DigitalDisplay_Stop,
+ [DIG_DISPINFO_STOP_O] = SpriteCB_DigitalDisplay_Stop,
+ [DIG_DISPINFO_STOP_P] = SpriteCB_DigitalDisplay_Stop,
+ [DIG_DISPINFO_A_BUTTON_STOP] = SpriteCB_DigitalDisplay_AButtonStop,
+ [DIG_DISPINFO_POKE_BALL_ROCKING] = SpriteCB_DigitalDisplay_PokeballRocking,
+ [DIG_DISPINFO_WIN] = SpriteCB_DigitalDisplay_Static,
+ [DIG_DISPINFO_LOSE] = SpriteCB_DigitalDisplay_Static,
+ [DIG_DISPINFO_SMOKE_NW] = SpriteCB_DigitalDisplay_Smoke,
+ [DIG_DISPINFO_SMOKE_NE] = SpriteCB_DigitalDisplay_SmokeNE,
+ [DIG_DISPINFO_SMOKE_SW] = SpriteCB_DigitalDisplay_SmokeSW,
+ [DIG_DISPINFO_SMOKE_SE] = SpriteCB_DigitalDisplay_SmokeSE,
+ [DIG_DISPINFO_REEL] = SpriteCB_DigitalDisplay_Reel,
+ [DIG_DISPINFO_TIME] = SpriteCB_DigitalDisplay_Time,
+ [DIG_DISPINFO_NUMBER] = SpriteCB_DigitalDisplay_ReelTimeNumber,
+ [DIG_DISPINFO_DPAD] = SpriteCB_DigitalDisplay_Static,
+ [DIG_DISPINFO_POKE_BALL_SHINING] = SpriteCB_DigitalDisplay_PokeballShining,
+ [DIG_DISPINFO_REG_R] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_REG_E] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_REG_G] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_REG_BONUS_B] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_REG_BONUS_O] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_REG_BONUS_N] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_REG_BONUS_U] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_REG_BONUS_S] = SpriteCB_DigitalDisplay_RegBonus,
+ [DIG_DISPINFO_BIG_B] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_BIG_I] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_BIG_G] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_BIG_BONUS_B] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_BIG_BONUS_O] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_BIG_BONUS_N] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_BIG_BONUS_U] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_BIG_BONUS_S] = SpriteCB_DigitalDisplay_BigBonus,
+ [DIG_DISPINFO_A_BUTTON_START] = SpriteCB_DigitalDisplay_AButtonStart
+};
+
+static const struct DigitalDisplaySprite sDigitalDisplay_InsertBet[] = {
+ {DIG_SPRITE_EMPTY, DIG_DISPINFO_A_BUTTON_START, 0}, // Sprite replaced with DIG_SPRITE_A_BUTTON after first bet
+ {DIG_SPRITE_INSERT, DIG_DISPINFO_INSERT, 0},
+ {DIG_SPRITE_D_PAD, DIG_DISPINFO_DPAD, 0},
+ DIG_SPRITE_DUMMY
+};
+
+static const struct DigitalDisplaySprite sDigitalDisplay_StopReel[] = {
+ {DIG_SPRITE_STOP_S, DIG_DISPINFO_STOP_S, 0},
+ {DIG_SPRITE_STOP_T, DIG_DISPINFO_STOP_T, 0},
+ {DIG_SPRITE_STOP_O, DIG_DISPINFO_STOP_O, 0},
+ {DIG_SPRITE_STOP_P, DIG_DISPINFO_STOP_P, 0},
+ {DIG_SPRITE_A_BUTTON, DIG_DISPINFO_A_BUTTON_STOP, 0},
+ {DIG_SPRITE_POKE_BALL, DIG_DISPINFO_POKE_BALL_ROCKING, 0},
+ DIG_SPRITE_DUMMY
+};
+
+static const struct DigitalDisplaySprite sDigitalDisplay_Win[] = {
+ {DIG_SPRITE_WIN, DIG_DISPINFO_WIN, 0},
+ {DIG_SPRITE_POKE_BALL, DIG_DISPINFO_POKE_BALL_SHINING, 0},
+ DIG_SPRITE_DUMMY
+};
+
+static const struct DigitalDisplaySprite sDigitalDisplay_Lose[] = {
+ {DIG_SPRITE_LOSE, DIG_DISPINFO_LOSE, 0},
+ {DIG_SPRITE_SMOKE, DIG_DISPINFO_SMOKE_NW, 0},
+ {DIG_SPRITE_SMOKE, DIG_DISPINFO_SMOKE_NE, 1},
+ {DIG_SPRITE_SMOKE, DIG_DISPINFO_SMOKE_SW, 2},
+ {DIG_SPRITE_SMOKE, DIG_DISPINFO_SMOKE_SE, 3},
+ DIG_SPRITE_DUMMY
+};
+
+static const struct DigitalDisplaySprite sDigitalDisplay_ReelTime[] = {
+ {DIG_SPRITE_REEL, DIG_DISPINFO_REEL, 0},
+ {DIG_SPRITE_TIME, DIG_DISPINFO_TIME, 0},
+ {DIG_SPRITE_NUMBER, DIG_DISPINFO_NUMBER, 0}, // Number of reel time spins left
+ DIG_SPRITE_DUMMY
+};
+
+static const struct DigitalDisplaySprite sDigitalDisplay_BonusBig[] = {
+ {DIG_SPRITE_BIG_B, DIG_DISPINFO_BIG_B, 0},
+ {DIG_SPRITE_BIG_I, DIG_DISPINFO_BIG_I, 1},
+ {DIG_SPRITE_BIG_G, DIG_DISPINFO_BIG_G, 2},
+ {DIG_SPRITE_BONUS_B, DIG_DISPINFO_BIG_BONUS_B, 3},
+ {DIG_SPRITE_BONUS_O, DIG_DISPINFO_BIG_BONUS_O, 4},
+ {DIG_SPRITE_BONUS_N, DIG_DISPINFO_BIG_BONUS_N, 5},
+ {DIG_SPRITE_BONUS_U, DIG_DISPINFO_BIG_BONUS_U, 6},
+ {DIG_SPRITE_BONUS_S, DIG_DISPINFO_BIG_BONUS_S, 7},
+ {DIG_SPRITE_POKE_BALL, DIG_DISPINFO_POKE_BALL_SHINING, 0},
+ DIG_SPRITE_DUMMY
+};
+
+static const struct DigitalDisplaySprite sDigitalDisplay_BonusRegular[] = {
+ {DIG_SPRITE_REG_R, DIG_DISPINFO_REG_R, 0},
+ {DIG_SPRITE_REG_E, DIG_DISPINFO_REG_E, 1},
+ {DIG_SPRITE_REG_G, DIG_DISPINFO_REG_G, 2},
+ {DIG_SPRITE_BONUS_B, DIG_DISPINFO_REG_BONUS_B, 3},
+ {DIG_SPRITE_BONUS_O, DIG_DISPINFO_REG_BONUS_O, 4},
+ {DIG_SPRITE_BONUS_N, DIG_DISPINFO_REG_BONUS_N, 5},
+ {DIG_SPRITE_BONUS_U, DIG_DISPINFO_REG_BONUS_U, 6},
+ {DIG_SPRITE_BONUS_S, DIG_DISPINFO_REG_BONUS_S, 7},
+ {DIG_SPRITE_POKE_BALL, DIG_DISPINFO_POKE_BALL_SHINING, 0},
+ DIG_SPRITE_DUMMY
+};
+
+static const struct DigitalDisplaySprite *const sDigitalDisplayScenes[] = {
+ [DIG_DISPLAY_INSERT_BET] = sDigitalDisplay_InsertBet,
+ [DIG_DISPLAY_STOP_REEL] = sDigitalDisplay_StopReel,
+ [DIG_DISPLAY_WIN] = sDigitalDisplay_Win,
+ [DIG_DISPLAY_LOSE] = sDigitalDisplay_Lose,
+ [DIG_DISPLAY_REEL_TIME] = sDigitalDisplay_ReelTime,
+ [DIG_DISPLAY_BONUS_REG] = sDigitalDisplay_BonusRegular,
+ [DIG_DISPLAY_BONUS_BIG] = sDigitalDisplay_BonusBig
+};
+
+static void (*const sDigitalDisplaySceneExitCallbacks[])(void) = {
+ [DIG_DISPLAY_INSERT_BET] = EndDigitalDisplayScene_InsertBet,
+ [DIG_DISPLAY_STOP_REEL] = EndDigitalDisplayScene_StopReel,
+ [DIG_DISPLAY_WIN] = EndDigitalDisplayScene_Win,
+ [DIG_DISPLAY_LOSE] = EndDigitalDisplayScene_Dummy,
+ [DIG_DISPLAY_REEL_TIME] = EndDigitalDisplayScene_Dummy,
+ [DIG_DISPLAY_BONUS_REG] = EndDigitalDisplayScene_Win,
+ [DIG_DISPLAY_BONUS_BIG] = EndDigitalDisplayScene_Win
+};
+
+static const struct OamData sOam_8x8 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4726,7 +5089,7 @@ static const struct OamData gUnknown_085A7A3C =
.affineParam = 0,
};
-static const struct OamData gUnknown_085A7A44 =
+static const struct OamData sOam_8x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4743,7 +5106,7 @@ static const struct OamData gUnknown_085A7A44 =
.affineParam = 0,
};
-static const struct OamData gUnknown_085A7A4C =
+static const struct OamData sOam_16x16 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4760,7 +5123,7 @@ static const struct OamData gUnknown_085A7A4C =
.affineParam = 0,
};
-static const struct OamData gUnknown_085A7A54 =
+static const struct OamData sOam_16x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4777,7 +5140,7 @@ static const struct OamData gUnknown_085A7A54 =
.affineParam = 0,
};
-static const struct OamData gUnknown_085A7A5C =
+static const struct OamData sOam_32x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4794,7 +5157,7 @@ static const struct OamData gUnknown_085A7A5C =
.affineParam = 0,
};
-static const struct OamData gUnknown_085A7A64 =
+static const struct OamData sOam_32x64 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4811,7 +5174,7 @@ static const struct OamData gUnknown_085A7A64 =
.affineParam = 0,
};
-static const struct OamData gUnknown_085A7A6C =
+static const struct OamData sOam_64x32 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4828,7 +5191,7 @@ static const struct OamData gUnknown_085A7A6C =
.affineParam = 0,
};
-static const struct OamData gUnknown_085A7A74 =
+static const struct OamData sOam_64x64 =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -4845,7 +5208,7 @@ static const struct OamData gUnknown_085A7A74 =
.affineParam = 0,
};
-static const struct SpriteFrameImage gUnknown_085A7A7C[] =
+static const struct SpriteFrameImage sImageTable_ReelTimeNumbers[] =
{
{ gSlotMachineReelTimeNumber0, 0x80 },
{ gSlotMachineReelTimeNumber1, 0x80 },
@@ -4855,151 +5218,151 @@ static const struct SpriteFrameImage gUnknown_085A7A7C[] =
{ gSlotMachineReelTimeNumber5, 0x80 },
};
-static const struct SpriteFrameImage gUnknown_085A7AAC[] = { gSlotMachineReelTimeShadow, 0x200 };
-static const struct SpriteFrameImage gUnknown_085A7AB4[] = { gUnknown_08DD1A18, 0x40 };
+static const struct SpriteFrameImage sImageTable_ReelTimeShadow[] = { gSlotMachineReelTimeShadow, 0x200 };
+static const struct SpriteFrameImage sImageTable_ReelTimeNumberGap[] = { gSlotMachineReelTimeNumberGap_Gfx, 0x40 };
-static const struct SpriteFrameImage gUnknown_085A7ABC[] =
+static const struct SpriteFrameImage sImageTable_ReelTimeBolt[] =
{
- { gSlotMachineReelTimeLargeBolt0, 0x100 },
- { gSlotMachineReelTimeLargeBolt1, 0x100 },
+ { gSlotMachineReelTimeBolt0, 0x100 },
+ { gSlotMachineReelTimeBolt1, 0x100 },
};
-static const struct SpriteFrameImage gUnknown_085A7ACC[] = { gSlotMachineReelTimePikaAura, 0x400 };
+static const struct SpriteFrameImage sImageTable_ReelTimePikachuAura[] = { gSlotMachineReelTimePikaAura, 0x400 };
-static const struct SpriteFrameImage gUnknown_085A7AD4[] =
+static const struct SpriteFrameImage sImageTable_ReelTimeExplosion[] =
{
{ gSlotMachineReelTimeExplosion0, 0x200 },
{ gSlotMachineReelTimeExplosion1, 0x200 },
};
-static const struct SpriteFrameImage gUnknown_085A7AE4[] = { gSlotMachineReelTimeDuck, 0x20};
-static const struct SpriteFrameImage gUnknown_085A7AEC[] = { gSlotMachineReelTimeSmoke, 0x80};
-static const struct SpriteFrameImage gUnknown_085A7AF4[] = { gSlotMachineReelTimeBolt, 0x20};
+static const struct SpriteFrameImage sImageTable_ReelTimeDuck[] = { gSlotMachineReelTimeDuck, 0x20};
+static const struct SpriteFrameImage sImageTable_ReelTimeSmoke[] = { gSlotMachineReelTimeSmoke, 0x80};
+static const struct SpriteFrameImage sImageTable_PikaPowerBolt[] = { gSlotMachinePikaPowerBolt, 0x20};
-static const union AnimCmd gUnknown_085A7AFC[] =
+static const union AnimCmd sAnim_SingleFrame[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B04[] =
+static const union AnimCmd sAnim_ReelTimeDuck[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7B0C[] =
+static const union AnimCmd sAnim_ReelTimePikachu_Still[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B14[] =
+static const union AnimCmd sAnim_ReelTimePikachu_ChargingSlow[] =
{
ANIMCMD_FRAME(1, 16),
ANIMCMD_FRAME(0, 16),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7B20[] =
+static const union AnimCmd sAnim_ReelTimePikachu_ChargingMedium[] =
{
ANIMCMD_FRAME(1, 8),
ANIMCMD_FRAME(0, 8),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7B2C[] =
+static const union AnimCmd sAnim_ReelTimePikachu_ChargingFast[] =
{
ANIMCMD_FRAME(1, 4),
ANIMCMD_FRAME(0, 4),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7B38[] =
+static const union AnimCmd sAnim_ReelTimePikachu_Cheering[] =
{
ANIMCMD_FRAME(2, 32),
ANIMCMD_FRAME(3, 32),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7B44[] =
+static const union AnimCmd sAnim_ReelTimePikachu_FellOver[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B4C[] =
+static const union AnimCmd sAnim_ReelTimeNumber_0[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B54[] =
+static const union AnimCmd sAnim_ReelTimeNumber_1[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B5C[] =
+static const union AnimCmd sAnim_ReelTimeNumber_2[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B64[] =
+static const union AnimCmd sAnim_ReelTimeNumber_3[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B6C[] =
+static const union AnimCmd sAnim_ReelTimeNumber_4[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B74[] =
+static const union AnimCmd sAnim_ReelTimeNumber_5[] =
{
ANIMCMD_FRAME(5, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7B7C[] =
+static const union AnimCmd sAnim_ReelTimeBolt[] =
{
ANIMCMD_FRAME(0, 4),
ANIMCMD_FRAME(1, 4),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7B88[] =
+static const union AnimCmd sAnim_ReelTimeExplosion[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_FRAME(1, 16),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7B94[] =
+static const union AnimCmd sAnim_DigitalDisplay_AButton_Flashing[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7BA0[] =
+static const union AnimCmd sAnim_DigitalDisplay_AButton_Static[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7BA8[] =
+static const union AnimCmd sAnim_DigitalDisplay_DPad_Flashing[] =
{
ANIMCMD_FRAME(0, 30),
ANIMCMD_FRAME(1, 30),
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7BB4[] =
+static const union AnimCmd sAnim_DigitalDisplay_Pokeball_Rocking[] =
{
ANIMCMD_FRAME(0, 16),
ANIMCMD_FRAME(1, 16),
@@ -5008,110 +5371,110 @@ static const union AnimCmd gUnknown_085A7BB4[] =
ANIMCMD_JUMP(0)
};
-static const union AnimCmd gUnknown_085A7BC8[] =
+static const union AnimCmd sAnim_DigitalDisplay_Pokeball_Static[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7BD0[] =
+static const union AnimCmd sAnim_DigitalDisplay_Number_1[] =
{
ANIMCMD_FRAME(0, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7BD8[] =
+static const union AnimCmd sAnim_DigitalDisplay_Number_2[] =
{
ANIMCMD_FRAME(1, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7BE0[] =
+static const union AnimCmd sAnim_DigitalDisplay_Number_3[] =
{
ANIMCMD_FRAME(2, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7BE8[] =
+static const union AnimCmd sAnim_DigitalDisplay_Number_4[] =
{
ANIMCMD_FRAME(3, 1),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A7BF0[] =
+static const union AnimCmd sAnim_DigitalDisplay_Number_5[] =
{
ANIMCMD_FRAME(4, 1),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085A7BF8[] =
+static const union AnimCmd *const sAnims_SingleFrame[] =
{
- gUnknown_085A7AFC
+ sAnim_SingleFrame
};
-static const union AnimCmd *const gUnknown_085A7BFC[] =
+static const union AnimCmd *const sAnims_ReelTimeDuck[] =
{
- gUnknown_085A7B04
+ sAnim_ReelTimeDuck
};
-static const union AnimCmd *const gUnknown_085A7C00[] =
+static const union AnimCmd *const sAnims_ReelTimePikachu[] =
{
- gUnknown_085A7B0C,
- gUnknown_085A7B14,
- gUnknown_085A7B20,
- gUnknown_085A7B2C,
- gUnknown_085A7B38,
- gUnknown_085A7B44
+ sAnim_ReelTimePikachu_Still,
+ sAnim_ReelTimePikachu_ChargingSlow,
+ sAnim_ReelTimePikachu_ChargingMedium,
+ sAnim_ReelTimePikachu_ChargingFast,
+ sAnim_ReelTimePikachu_Cheering,
+ sAnim_ReelTimePikachu_FellOver
};
-static const union AnimCmd *const gUnknown_085A7C18[] =
+static const union AnimCmd *const sAnims_ReelTimeNumbers[] =
{
- gUnknown_085A7B4C,
- gUnknown_085A7B54,
- gUnknown_085A7B5C,
- gUnknown_085A7B64,
- gUnknown_085A7B6C,
- gUnknown_085A7B74
+ sAnim_ReelTimeNumber_0,
+ sAnim_ReelTimeNumber_1,
+ sAnim_ReelTimeNumber_2,
+ sAnim_ReelTimeNumber_3,
+ sAnim_ReelTimeNumber_4,
+ sAnim_ReelTimeNumber_5
};
-static const union AnimCmd *const gUnknown_085A7C30[] =
+static const union AnimCmd *const sAnims_ReelTimeBolt[] =
{
- gUnknown_085A7B7C
+ sAnim_ReelTimeBolt
};
-static const union AnimCmd *const gUnknown_085A7C34[] =
+static const union AnimCmd *const sAnims_ReelTimeExplosion[] =
{
- gUnknown_085A7B88
+ sAnim_ReelTimeExplosion
};
-static const union AnimCmd *const gUnknown_085A7C38[] =
+static const union AnimCmd *const sAnims_DigitalDisplay_AButton[] =
{
- gUnknown_085A7B94,
- gUnknown_085A7BA0
+ sAnim_DigitalDisplay_AButton_Flashing,
+ sAnim_DigitalDisplay_AButton_Static
};
-static const union AnimCmd *const gUnknown_085A7C40[] =
+static const union AnimCmd *const sAnims_DigitalDisplay_DPad[] =
{
- gUnknown_085A7BA8
+ sAnim_DigitalDisplay_DPad_Flashing
};
-static const union AnimCmd *const gUnknown_085A7C44[] =
+static const union AnimCmd *const sAnims_DigitalDisplay_Pokeball[] =
{
- gUnknown_085A7BB4,
- gUnknown_085A7BC8
+ sAnim_DigitalDisplay_Pokeball_Rocking,
+ sAnim_DigitalDisplay_Pokeball_Static
};
-static const union AnimCmd *const gUnknown_085A7C4C[] =
+static const union AnimCmd *const sAnims_DigitalDisplay_Number[] =
{
- gUnknown_085A7BD0,
- gUnknown_085A7BD8,
- gUnknown_085A7BE0,
- gUnknown_085A7BE8,
- gUnknown_085A7BF0
+ sAnim_DigitalDisplay_Number_1,
+ sAnim_DigitalDisplay_Number_2,
+ sAnim_DigitalDisplay_Number_3,
+ sAnim_DigitalDisplay_Number_4,
+ sAnim_DigitalDisplay_Number_5
};
-static const union AffineAnimCmd gUnknown_085A7C60[] =
+static const union AffineAnimCmd sAffineAnim_ReelTimeSmoke[] =
{
AFFINEANIMCMD_FRAME(16, 16, 0, 0),
AFFINEANIMCMD_LOOP(0),
@@ -5120,12 +5483,13 @@ static const union AffineAnimCmd gUnknown_085A7C60[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gUnknown_085A7C88[] =
+static const union AffineAnimCmd *const sAffineAnims_ReelTimeSmoke[] =
{
- gUnknown_085A7C60
+ sAffineAnim_ReelTimeSmoke
};
-static const union AffineAnimCmd gUnknown_085A7C8C[] =
+// Spin as it appears
+static const union AffineAnimCmd sAffineAnim_PikaPowerBolt[] =
{
AFFINEANIMCMD_FRAME(0, 0, 8, 32),
AFFINEANIMCMD_FRAME(0, 0, 6, 32),
@@ -5139,342 +5503,342 @@ static const union AffineAnimCmd gUnknown_085A7C8C[] =
AFFINEANIMCMD_END
};
-static const union AffineAnimCmd *const gUnknown_085A7CDC[] =
+static const union AffineAnimCmd *const sAffineAnims_PikaPowerBolt[] =
{
- gUnknown_085A7C8C
+ sAffineAnim_PikaPowerBolt
};
-static const struct SpriteTemplate gSpriteTemplate_83ED414 =
+static const struct SpriteTemplate sSpriteTemplate_ReelSymbol =
{
- .tileTag = 0,
- .paletteTag = 0,
- .oam = &gUnknown_085A7A5C,
- .anims = gUnknown_085A7BF8,
+ .tileTag = GFXTAG_SYMBOLS_START,
+ .paletteTag = PALTAG_REEL,
+ .oam = &sOam_32x32,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8104F18
+ .callback = SpriteCB_ReelSymbol
};
-static const struct SpriteTemplate gSpriteTemplate_83ED42C =
+static const struct SpriteTemplate sSpriteTemplate_CoinNumber =
{
- .tileTag = 7,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A44,
- .anims = gUnknown_085A7BF8,
+ .tileTag = GFXTAG_NUMBERS_START,
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_8x16,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810506C
+ .callback = SpriteCB_CoinNumber
};
-static const struct SpriteTemplate gSpriteTemplate_83ED444 =
+static const struct SpriteTemplate sSpriteTemplate_ReelBackground =
{
- .tileTag = 17,
- .paletteTag = 0,
- .oam = &gUnknown_085A7A74,
- .anims = gUnknown_085A7BF8,
+ .tileTag = GFXTAG_REEL_BG,
+ .paletteTag = PALTAG_REEL,
+ .oam = &sOam_64x64,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gSpriteTemplate_83ED45C =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimePikachu =
{
.tileTag = 0xFFFF,
- .paletteTag = 1,
- .oam = &gUnknown_085A7A74,
- .anims = gUnknown_085A7C00,
+ .paletteTag = PALTAG_REEL_TIME_PIKACHU,
+ .oam = &sOam_64x64,
+ .anims = sAnims_ReelTimePikachu,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8105170
+ .callback = SpriteCB_ReelTimePikachu
};
-static const struct SpriteTemplate gSpriteTemplate_83ED474 =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeMachineAntennae =
{
.tileTag = 0xFFFF,
- .paletteTag = 2,
- .oam = &gUnknown_085A7A44,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_REEL_TIME_MISC,
+ .oam = &sOam_8x16,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gSpriteTemplate_83ED48C =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeMachine =
{
.tileTag = 0xFFFF,
- .paletteTag = 3,
- .oam = &gUnknown_085A7A44,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_REEL_TIME_MACHINE,
+ .oam = &sOam_8x16,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gSpriteTemplate_83ED4A4 =
+static const struct SpriteTemplate sSpriteTemplate_BrokenReelTimeMachine =
{
.tileTag = 0xFFFF,
- .paletteTag = 3,
- .oam = &gUnknown_085A7A44,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_REEL_TIME_MACHINE,
+ .oam = &sOam_8x16,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gSpriteTemplate_83ED4BC =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeNumbers =
{
.tileTag = 0xFFFF,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A4C,
- .anims = gUnknown_085A7C18,
- .images = gUnknown_085A7A7C,
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_16x16,
+ .anims = sAnims_ReelTimeNumbers,
+ .images = sImageTable_ReelTimeNumbers,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810535C
+ .callback = SpriteCB_ReelTimeNumbers
};
-static const struct SpriteTemplate gSpriteTemplate_83ED4D4 =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeShadow =
{
.tileTag = 0xFFFF,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A4C,
- .anims = gUnknown_085A7BF8,
- .images = gUnknown_085A7AAC,
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_16x16,
+ .anims = sAnims_SingleFrame,
+ .images = sImageTable_ReelTimeShadow,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gSpriteTemplate_83ED4EC =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeNumberGap =
{
.tileTag = 0xFFFF,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A4C,
- .anims = gUnknown_085A7BF8,
- .images = gUnknown_085A7AB4,
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_16x16,
+ .anims = sAnims_SingleFrame,
+ .images = sImageTable_ReelTimeNumberGap,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gSpriteTemplate_83ED504 =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeBolt =
{
.tileTag = 0xFFFF,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A54,
- .anims = gUnknown_085A7C30,
- .images = gUnknown_085A7ABC,
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_16x32,
+ .anims = sAnims_ReelTimeBolt,
+ .images = sImageTable_ReelTimeBolt,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810562C
+ .callback = SpriteCB_ReelTimeBolt
};
-static const struct SpriteTemplate gSpriteTemplate_83ED51C =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimePikachuAura =
{
.tileTag = 0xFFFF,
- .paletteTag = 7,
- .oam = &gUnknown_085A7A64,
- .anims = gUnknown_085A7BF8,
- .images = gUnknown_085A7ACC,
+ .paletteTag = PALTAG_PIKA_AURA,
+ .oam = &sOam_32x64,
+ .anims = sAnims_SingleFrame,
+ .images = sImageTable_ReelTimePikachuAura,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8105784
+ .callback = SpriteCB_ReelTimePikachuAura
};
-static const struct SpriteTemplate gSpriteTemplate_83ED534 =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeExplosion =
{
.tileTag = 0xFFFF,
- .paletteTag = 5,
- .oam = &gUnknown_085A7A5C,
- .anims = gUnknown_085A7C34,
- .images = gUnknown_085A7AD4,
+ .paletteTag = PALTAG_EXPLOSION,
+ .oam = &sOam_32x32,
+ .anims = sAnims_ReelTimeExplosion,
+ .images = sImageTable_ReelTimeExplosion,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8105894
+ .callback = SpriteCB_ReelTimeExplosion
};
-static const struct SpriteTemplate gSpriteTemplate_83ED54C =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeDuck =
{
.tileTag = 0xFFFF,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BFC,
- .images = gUnknown_085A7AE4,
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_8x8,
+ .anims = sAnims_ReelTimeDuck,
+ .images = sImageTable_ReelTimeDuck,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_810594C
+ .callback = SpriteCB_ReelTimeDuck
};
-static const struct SpriteTemplate gSpriteTemplate_83ED564 =
+static const struct SpriteTemplate sSpriteTemplate_ReelTimeSmoke =
{
.tileTag = 0xFFFF,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A4C,
- .anims = gUnknown_085A7BF8,
- .images = gUnknown_085A7AEC,
- .affineAnims = gUnknown_085A7C88,
- .callback = sub_8105A38
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_16x16,
+ .anims = sAnims_SingleFrame,
+ .images = sImageTable_ReelTimeSmoke,
+ .affineAnims = sAffineAnims_ReelTimeSmoke,
+ .callback = SpriteCB_ReelTimeSmoke
};
-static const struct SpriteTemplate gUnknown_085A7E48 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Reel =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7E60 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Time =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7E78 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Insert =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7E90 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Stop =
{
.tileTag = 18,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7EA8 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Win =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A6C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_64x32,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7EC0 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Lose =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A6C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_64x32,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7ED8 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Bonus =
{
.tileTag = 19,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7EF0 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Big =
{
.tileTag = 20,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7F08 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Reg =
{
.tileTag = 21,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7F20 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_AButton =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A5C,
- .anims = gUnknown_085A7C38,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_32x32,
+ .anims = sAnims_DigitalDisplay_AButton,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7F38 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Smoke =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7F50 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Number =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A4C,
- .anims = gUnknown_085A7C4C,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_16x16,
+ .anims = sAnims_DigitalDisplay_Number,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7F68 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_Pokeball =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7C44,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_DigitalDisplay_Pokeball,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gUnknown_085A7F80 =
+static const struct SpriteTemplate sSpriteTemplate_DigitalDisplay_DPad =
{
.tileTag = 0xFFFF,
- .paletteTag = 6,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7C40,
+ .paletteTag = PALTAG_DIG_DISPLAY,
+ .oam = &sOam_8x8,
+ .anims = sAnims_DigitalDisplay_DPad,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
-static const struct SpriteTemplate gSpriteTemplate_83ED6CC =
+static const struct SpriteTemplate sSpriteTemplate_PikaPowerBolt =
{
.tileTag = 0xFFFF,
- .paletteTag = 4,
- .oam = &gUnknown_085A7A3C,
- .anims = gUnknown_085A7BF8,
- .images = gUnknown_085A7AF4,
- .affineAnims = gUnknown_085A7CDC,
- .callback = sub_8105B70
+ .paletteTag = PALTAG_MISC,
+ .oam = &sOam_8x8,
+ .anims = sAnims_SingleFrame,
+ .images = sImageTable_PikaPowerBolt,
+ .affineAnims = sAffineAnims_PikaPowerBolt,
+ .callback = SpriteCB_PikaPowerBolt
};
-static const struct Subsprite gUnknown_085A7FB0[] =
+static const struct Subsprite sSubsprites_ReelBackground[] =
{
{
.x = -64,
@@ -5510,12 +5874,12 @@ static const struct Subsprite gUnknown_085A7FB0[] =
}
};
-static const struct SubspriteTable gSubspriteTables_83ED704[] =
+static const struct SubspriteTable sSubspriteTable_ReelBackground[] =
{
- ARRAY_COUNT(gUnknown_085A7FB0), gUnknown_085A7FB0
+ ARRAY_COUNT(sSubsprites_ReelBackground), sSubsprites_ReelBackground
};
-static const struct Subsprite gUnknown_085A7FC8[] =
+static const struct Subsprite sSubsprites_ReelTimeMachineAntennae[] =
{
{
.x = -32,
@@ -5567,12 +5931,12 @@ static const struct Subsprite gUnknown_085A7FC8[] =
}
};
-static const struct SubspriteTable gSubspriteTables_83ED73C[] =
+static const struct SubspriteTable sSubspriteTable_ReelTimeMachineAntennae[] =
{
- ARRAY_COUNT(gUnknown_085A7FC8), gUnknown_085A7FC8
+ ARRAY_COUNT(sSubsprites_ReelTimeMachineAntennae), sSubsprites_ReelTimeMachineAntennae
};
-static const struct Subsprite gUnknown_085A7FE8[] =
+static const struct Subsprite sSubsprites_ReelTimeMachine[] =
{
{
.x = -32,
@@ -5600,12 +5964,12 @@ static const struct Subsprite gUnknown_085A7FE8[] =
}
};
-static const struct SubspriteTable gSubspriteTables_83ED75C[] =
+static const struct SubspriteTable sSubspriteTable_ReelTimeMachine[] =
{
- ARRAY_COUNT(gUnknown_085A7FE8), gUnknown_085A7FE8
+ ARRAY_COUNT(sSubsprites_ReelTimeMachine), sSubsprites_ReelTimeMachine
};
-static const struct Subsprite gUnknown_085A7FFC[] =
+static const struct Subsprite sSubsprites_BrokenReelTimeMachine[] =
{
{
.x = -32,
@@ -5649,12 +6013,12 @@ static const struct Subsprite gUnknown_085A7FFC[] =
}
};
-static const struct SubspriteTable gSubspriteTables_83ED78C[] =
+static const struct SubspriteTable sSubspriteTable_BrokenReelTimeMachine[] =
{
- ARRAY_COUNT(gUnknown_085A7FFC), gUnknown_085A7FFC
+ ARRAY_COUNT(sSubsprites_BrokenReelTimeMachine), sSubsprites_BrokenReelTimeMachine
};
-static const struct Subsprite gUnknown_085A8018[] =
+static const struct Subsprite sSubsprites_ReelTimeShadow[] =
{
{
.x = -32,
@@ -5690,12 +6054,12 @@ static const struct Subsprite gUnknown_085A8018[] =
}
};
-static const struct SubspriteTable gSubspriteTables_83ED7B4[] =
+static const struct SubspriteTable sSubspriteTable_ReelTimeShadow[] =
{
- ARRAY_COUNT(gUnknown_085A8018), gUnknown_085A8018
+ ARRAY_COUNT(sSubsprites_ReelTimeShadow), sSubsprites_ReelTimeShadow
};
-static const struct Subsprite gUnknown_085A8030[] =
+static const struct Subsprite sSubsprites_ReelTimeNumberGap[] =
{
{
.x = -8,
@@ -5723,12 +6087,12 @@ static const struct Subsprite gUnknown_085A8030[] =
}
};
-static const struct SubspriteTable gSubspriteTables_83ED7D4[] =
+static const struct SubspriteTable sSubspriteTable_ReelTimeNumberGap[] =
{
- ARRAY_COUNT(gUnknown_085A8030), gUnknown_085A8030
+ ARRAY_COUNT(sSubsprites_ReelTimeNumberGap), sSubsprites_ReelTimeNumberGap
};
-static const struct Subsprite gUnknown_085A8044[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Reel[] =
{
{
.x = -32,
@@ -5772,12 +6136,12 @@ static const struct Subsprite gUnknown_085A8044[] =
}
};
-static const struct SubspriteTable gUnknown_085A8058[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Reel[] =
{
- ARRAY_COUNT(gUnknown_085A8044), gUnknown_085A8044
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Reel), sSubsprites_DigitalDisplay_Reel
};
-static const struct Subsprite gUnknown_085A8060[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Time[] =
{
{
.x = -32,
@@ -5813,12 +6177,12 @@ static const struct Subsprite gUnknown_085A8060[] =
}
};
-static const struct SubspriteTable gUnknown_085A8070[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Time[] =
{
- ARRAY_COUNT(gUnknown_085A8060), gUnknown_085A8060
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Time), sSubsprites_DigitalDisplay_Time
};
-static const struct Subsprite gUnknown_085A8078[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Insert[] =
{
{
.x = -32,
@@ -5854,12 +6218,12 @@ static const struct Subsprite gUnknown_085A8078[] =
}
};
-static const struct SubspriteTable gUnknown_085A8088[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Insert[] =
{
- ARRAY_COUNT(gUnknown_085A8078), gUnknown_085A8078
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Insert), sSubsprites_DigitalDisplay_Insert
};
-static const struct Subsprite gUnknown_085A8090[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Unused1[] =
{
{
.x = -32,
@@ -5895,12 +6259,12 @@ static const struct Subsprite gUnknown_085A8090[] =
}
};
-static const struct SubspriteTable gUnknown_085A80A0[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Unused1[] =
{
- ARRAY_COUNT(gUnknown_085A8090), gUnknown_085A8090
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Unused1), sSubsprites_DigitalDisplay_Unused1
};
-static const struct Subsprite gUnknown_085A80A8[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Win[] =
{
{
.x = -32,
@@ -5952,12 +6316,12 @@ static const struct Subsprite gUnknown_085A80A8[] =
}
};
-static const struct SubspriteTable gUnknown_085A80C0[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Win[] =
{
- ARRAY_COUNT(gUnknown_085A80A8), gUnknown_085A80A8
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Win), sSubsprites_DigitalDisplay_Win
};
-static const struct Subsprite gUnknown_085A80C8[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Smoke[] =
{
{
.x = -16,
@@ -5969,7 +6333,7 @@ static const struct Subsprite gUnknown_085A80C8[] =
}
};
-static const struct Subsprite gUnknown_085A80CC[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Unused2[] =
{
{
.x = -8,
@@ -5981,17 +6345,17 @@ static const struct Subsprite gUnknown_085A80CC[] =
}
};
-static const struct SubspriteTable gUnknown_085A80D0[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Smoke[] =
{
- ARRAY_COUNT(gUnknown_085A80C8), gUnknown_085A80C8
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Smoke), sSubsprites_DigitalDisplay_Smoke
};
-static const struct SubspriteTable gUnknown_085A80D8[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Unused2[] =
{
- ARRAY_COUNT(gUnknown_085A80CC), gUnknown_085A80CC
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Unused2), sSubsprites_DigitalDisplay_Unused2
};
-static const struct Subsprite gUnknown_085A80E0[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_Pokeball[] =
{
{
.x = -24,
@@ -6091,12 +6455,12 @@ static const struct Subsprite gUnknown_085A80E0[] =
}
};
-static const struct SubspriteTable gUnknown_085A8110[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_Pokeball[] =
{
- ARRAY_COUNT(gUnknown_085A80E0), gUnknown_085A80E0
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_Pokeball), sSubsprites_DigitalDisplay_Pokeball
};
-static const struct Subsprite gUnknown_085A8118[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_DPad[] =
{
{
.x = -16,
@@ -6124,12 +6488,12 @@ static const struct Subsprite gUnknown_085A8118[] =
}
};
-static const struct SubspriteTable gUnknown_085A8124[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_DPad[] =
{
- ARRAY_COUNT(gUnknown_085A8118), gUnknown_085A8118
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_DPad), sSubsprites_DigitalDisplay_DPad
};
-static const struct Subsprite gUnknown_085A812C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_StopS[] =
{
{
.x = -8,
@@ -6149,12 +6513,12 @@ static const struct Subsprite gUnknown_085A812C[] =
}
};
-static const struct SubspriteTable gUnknown_085A8134[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopS[] =
{
- ARRAY_COUNT(gUnknown_085A812C), gUnknown_085A812C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_StopS), sSubsprites_DigitalDisplay_StopS
};
-static const struct Subsprite gUnknown_085A813C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_StopT[] =
{
{
.x = -8,
@@ -6174,12 +6538,12 @@ static const struct Subsprite gUnknown_085A813C[] =
}
};
-static const struct SubspriteTable gUnknown_085A8144[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopT[] =
{
- ARRAY_COUNT(gUnknown_085A813C), gUnknown_085A813C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_StopT), sSubsprites_DigitalDisplay_StopT
};
-static const struct Subsprite gUnknown_085A814C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_StopO[] =
{
{
.x = -8,
@@ -6199,12 +6563,12 @@ static const struct Subsprite gUnknown_085A814C[] =
}
};
-static const struct SubspriteTable gUnknown_085A8154[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopO[] =
{
- ARRAY_COUNT(gUnknown_085A814C), gUnknown_085A814C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_StopO), sSubsprites_DigitalDisplay_StopO
};
-static const struct Subsprite gUnknown_085A815C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_StopP[] =
{
{
.x = -8,
@@ -6224,12 +6588,12 @@ static const struct Subsprite gUnknown_085A815C[] =
}
};
-static const struct SubspriteTable gUnknown_085A8164[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_StopP[] =
{
- ARRAY_COUNT(gUnknown_085A815C), gUnknown_085A815C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_StopP), sSubsprites_DigitalDisplay_StopP
};
-static const struct Subsprite gUnknown_085A816C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BonusB[] =
{
{
.x = -8,
@@ -6249,12 +6613,12 @@ static const struct Subsprite gUnknown_085A816C[] =
}
};
-static const struct SubspriteTable gUnknown_085A8174[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusB[] =
{
- ARRAY_COUNT(gUnknown_085A816C), gUnknown_085A816C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusB), sSubsprites_DigitalDisplay_BonusB
};
-static const struct Subsprite gUnknown_085A817C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BonusO[] =
{
{
.x = -4,
@@ -6274,12 +6638,12 @@ static const struct Subsprite gUnknown_085A817C[] =
}
};
-static const struct SubspriteTable gUnknown_085A8184[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusO[] =
{
- ARRAY_COUNT(gUnknown_085A817C), gUnknown_085A817C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusO), sSubsprites_DigitalDisplay_BonusO
};
-static const struct Subsprite gUnknown_085A818C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BonusN[] =
{
{
.x = -8,
@@ -6299,12 +6663,12 @@ static const struct Subsprite gUnknown_085A818C[] =
}
};
-static const struct SubspriteTable gUnknown_085A8194[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusN[] =
{
- ARRAY_COUNT(gUnknown_085A818C), gUnknown_085A818C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusN), sSubsprites_DigitalDisplay_BonusN
};
-static const struct Subsprite gUnknown_085A819C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BonusU[] =
{
{
.x = -4,
@@ -6324,12 +6688,12 @@ static const struct Subsprite gUnknown_085A819C[] =
}
};
-static const struct SubspriteTable gUnknown_085A81A4[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusU[] =
{
- ARRAY_COUNT(gUnknown_085A819C), gUnknown_085A819C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusU), sSubsprites_DigitalDisplay_BonusU
};
-static const struct Subsprite gUnknown_085A81AC[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BonusS[] =
{
{
.x = -8,
@@ -6349,12 +6713,12 @@ static const struct Subsprite gUnknown_085A81AC[] =
}
};
-static const struct SubspriteTable gUnknown_085A81B4[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BonusS[] =
{
- ARRAY_COUNT(gUnknown_085A81AC), gUnknown_085A81AC
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BonusS), sSubsprites_DigitalDisplay_BonusS
};
-static const struct Subsprite gUnknown_085A81BC[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BigB[] =
{
{
.x = -12,
@@ -6406,12 +6770,12 @@ static const struct Subsprite gUnknown_085A81BC[] =
}
};
-static const struct SubspriteTable gUnknown_085A81D4[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BigB[] =
{
- ARRAY_COUNT(gUnknown_085A81BC), gUnknown_085A81BC
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BigB), sSubsprites_DigitalDisplay_BigB
};
-static const struct Subsprite gUnknown_085A81DC[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BigI[] =
{
{
.x = -8,
@@ -6439,12 +6803,12 @@ static const struct Subsprite gUnknown_085A81DC[] =
}
};
-static const struct SubspriteTable gUnknown_085A81E8[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BigI[] =
{
- ARRAY_COUNT(gUnknown_085A81DC), gUnknown_085A81DC
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BigI), sSubsprites_DigitalDisplay_BigI
};
-static const struct Subsprite gUnknown_085A81F0[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_BigG[] =
{
{
.x = -12,
@@ -6496,12 +6860,12 @@ static const struct Subsprite gUnknown_085A81F0[] =
}
};
-static const struct SubspriteTable gUnknown_085A8208[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_BigG[] =
{
- ARRAY_COUNT(gUnknown_085A81F0), gUnknown_085A81F0
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_BigG), sSubsprites_DigitalDisplay_BigG
};
-static const struct Subsprite gUnknown_085A8210[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_RegR[] =
{
{
.x = -12,
@@ -6553,12 +6917,12 @@ static const struct Subsprite gUnknown_085A8210[] =
}
};
-static const struct SubspriteTable gUnknown_085A8228[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_RegR[] =
{
- ARRAY_COUNT(gUnknown_085A8210), gUnknown_085A8210
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_RegR), sSubsprites_DigitalDisplay_RegR
};
-static const struct Subsprite gUnknown_085A822C[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_RegE[] =
{
{
.x = -8,
@@ -6586,12 +6950,12 @@ static const struct Subsprite gUnknown_085A822C[] =
}
};
-static const struct SubspriteTable gUnknown_085A823C[] =
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_RegE[] =
{
- ARRAY_COUNT(gUnknown_085A822C), gUnknown_085A822C
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_RegE), sSubsprites_DigitalDisplay_RegE
};
-static const struct Subsprite gUnknown_085A8244[] =
+static const struct Subsprite sSubsprites_DigitalDisplay_RegG[] =
{
{
.x = -12,
@@ -6643,190 +7007,196 @@ static const struct Subsprite gUnknown_085A8244[] =
}
};
-static const struct SubspriteTable gUnknown_085A825C[] =
-{
- ARRAY_COUNT(gUnknown_085A8244), gUnknown_085A8244
-};
-
-static const struct SpriteTemplate *const gUnknown_083EDB5C[] =
-{
- &gUnknown_085A7E48,
- &gUnknown_085A7E60,
- &gUnknown_085A7E78,
- &gUnknown_085A7EA8,
- &gUnknown_085A7EC0,
- &gUnknown_085A7F20,
- &gUnknown_085A7F38,
- &gUnknown_085A7F50,
- &gUnknown_085A7F68,
- &gUnknown_085A7F80,
- &gUnknown_085A7E90,
- &gUnknown_085A7E90,
- &gUnknown_085A7E90,
- &gUnknown_085A7E90,
- &gUnknown_085A7ED8,
- &gUnknown_085A7ED8,
- &gUnknown_085A7ED8,
- &gUnknown_085A7ED8,
- &gUnknown_085A7ED8,
- &gUnknown_085A7EF0,
- &gUnknown_085A7EF0,
- &gUnknown_085A7EF0,
- &gUnknown_085A7F08,
- &gUnknown_085A7F08,
- &gUnknown_085A7F08,
- &gDummySpriteTemplate
-};
-
-static const struct SubspriteTable *const gUnknown_083EDBC4[] =
-{
- gUnknown_085A8058,
- gUnknown_085A8070,
- gUnknown_085A8088,
- gUnknown_085A80C0,
- NULL,
- NULL,
- gUnknown_085A80D0,
- NULL,
- gUnknown_085A8110,
- gUnknown_085A8124,
- gUnknown_085A8134,
- gUnknown_085A8144,
- gUnknown_085A8154,
- gUnknown_085A8164,
- gUnknown_085A8174,
- gUnknown_085A8184,
- gUnknown_085A8194,
- gUnknown_085A81A4,
- gUnknown_085A81B4,
- gUnknown_085A81D4,
- gUnknown_085A81E8,
- gUnknown_085A8208,
- gUnknown_085A8228,
- gUnknown_085A823C,
- gUnknown_085A825C,
- NULL
-};
-
-static const struct SpriteSheet gSlotMachineSpriteSheets[22] =
-{
- { .data = gSlotMachineReelSymbol1Tiles, .size = 0x200, .tag = 0 },
- { .data = gSlotMachineReelSymbol2Tiles, .size = 0x200, .tag = 1 },
- { .data = gSlotMachineReelSymbol3Tiles, .size = 0x200, .tag = 2 },
- { .data = gSlotMachineReelSymbol4Tiles, .size = 0x200, .tag = 3 },
- { .data = gSlotMachineReelSymbol5Tiles, .size = 0x200, .tag = 4 },
- { .data = gSlotMachineReelSymbol6Tiles, .size = 0x200, .tag = 5 },
- { .data = gSlotMachineReelSymbol7Tiles, .size = 0x200, .tag = 6 },
- { .data = gSlotMachineNumber0Tiles, .size = 0x40, .tag = 7 },
- { .data = gSlotMachineNumber1Tiles, .size = 0x40, .tag = 8 },
- { .data = gSlotMachineNumber2Tiles, .size = 0x40, .tag = 9 },
- { .data = gSlotMachineNumber3Tiles, .size = 0x40, .tag = 10 },
- { .data = gSlotMachineNumber4Tiles, .size = 0x40, .tag = 11 },
- { .data = gSlotMachineNumber5Tiles, .size = 0x40, .tag = 12 },
- { .data = gSlotMachineNumber6Tiles, .size = 0x40, .tag = 13 },
- { .data = gSlotMachineNumber7Tiles, .size = 0x40, .tag = 14 },
- { .data = gSlotMachineNumber8Tiles, .size = 0x40, .tag = 15 },
- { .data = gSlotMachineNumber9Tiles, .size = 0x40, .tag = 16 },
+static const struct SubspriteTable sSubspriteTable_DigitalDisplay_RegG[] =
+{
+ ARRAY_COUNT(sSubsprites_DigitalDisplay_RegG), sSubsprites_DigitalDisplay_RegG
+};
+
+static const struct SpriteTemplate *const sSpriteTemplates_DigitalDisplay[NUM_DIG_DISPLAY_SPRITES] =
+{
+ [DIG_SPRITE_REEL] = &sSpriteTemplate_DigitalDisplay_Reel,
+ [DIG_SPRITE_TIME] = &sSpriteTemplate_DigitalDisplay_Time,
+ [DIG_SPRITE_INSERT] = &sSpriteTemplate_DigitalDisplay_Insert,
+ [DIG_SPRITE_WIN] = &sSpriteTemplate_DigitalDisplay_Win,
+ [DIG_SPRITE_LOSE] = &sSpriteTemplate_DigitalDisplay_Lose,
+ [DIG_SPRITE_A_BUTTON] = &sSpriteTemplate_DigitalDisplay_AButton,
+ [DIG_SPRITE_SMOKE] = &sSpriteTemplate_DigitalDisplay_Smoke,
+ [DIG_SPRITE_NUMBER] = &sSpriteTemplate_DigitalDisplay_Number,
+ [DIG_SPRITE_POKE_BALL] = &sSpriteTemplate_DigitalDisplay_Pokeball,
+ [DIG_SPRITE_D_PAD] = &sSpriteTemplate_DigitalDisplay_DPad,
+ [DIG_SPRITE_STOP_S] = &sSpriteTemplate_DigitalDisplay_Stop,
+ [DIG_SPRITE_STOP_T] = &sSpriteTemplate_DigitalDisplay_Stop,
+ [DIG_SPRITE_STOP_O] = &sSpriteTemplate_DigitalDisplay_Stop,
+ [DIG_SPRITE_STOP_P] = &sSpriteTemplate_DigitalDisplay_Stop,
+ [DIG_SPRITE_BONUS_B] = &sSpriteTemplate_DigitalDisplay_Bonus,
+ [DIG_SPRITE_BONUS_O] = &sSpriteTemplate_DigitalDisplay_Bonus,
+ [DIG_SPRITE_BONUS_N] = &sSpriteTemplate_DigitalDisplay_Bonus,
+ [DIG_SPRITE_BONUS_U] = &sSpriteTemplate_DigitalDisplay_Bonus,
+ [DIG_SPRITE_BONUS_S] = &sSpriteTemplate_DigitalDisplay_Bonus,
+ [DIG_SPRITE_BIG_B] = &sSpriteTemplate_DigitalDisplay_Big,
+ [DIG_SPRITE_BIG_I] = &sSpriteTemplate_DigitalDisplay_Big,
+ [DIG_SPRITE_BIG_G] = &sSpriteTemplate_DigitalDisplay_Big,
+ [DIG_SPRITE_REG_R] = &sSpriteTemplate_DigitalDisplay_Reg,
+ [DIG_SPRITE_REG_E] = &sSpriteTemplate_DigitalDisplay_Reg,
+ [DIG_SPRITE_REG_G] = &sSpriteTemplate_DigitalDisplay_Reg,
+ [DIG_SPRITE_EMPTY] = &gDummySpriteTemplate
+};
+
+static const struct SubspriteTable *const sSubspriteTables_DigitalDisplay[NUM_DIG_DISPLAY_SPRITES] =
+{
+ [DIG_SPRITE_REEL] = sSubspriteTable_DigitalDisplay_Reel,
+ [DIG_SPRITE_TIME] = sSubspriteTable_DigitalDisplay_Time,
+ [DIG_SPRITE_INSERT] = sSubspriteTable_DigitalDisplay_Insert,
+ [DIG_SPRITE_WIN] = sSubspriteTable_DigitalDisplay_Win,
+ [DIG_SPRITE_LOSE] = NULL,
+ [DIG_SPRITE_A_BUTTON] = NULL,
+ [DIG_SPRITE_SMOKE] = sSubspriteTable_DigitalDisplay_Smoke,
+ [DIG_SPRITE_NUMBER] = NULL,
+ [DIG_SPRITE_POKE_BALL] = sSubspriteTable_DigitalDisplay_Pokeball,
+ [DIG_SPRITE_D_PAD] = sSubspriteTable_DigitalDisplay_DPad,
+ [DIG_SPRITE_STOP_S] = sSubspriteTable_DigitalDisplay_StopS,
+ [DIG_SPRITE_STOP_T] = sSubspriteTable_DigitalDisplay_StopT,
+ [DIG_SPRITE_STOP_O] = sSubspriteTable_DigitalDisplay_StopO,
+ [DIG_SPRITE_STOP_P] = sSubspriteTable_DigitalDisplay_StopP,
+ [DIG_SPRITE_BONUS_B] = sSubspriteTable_DigitalDisplay_BonusB,
+ [DIG_SPRITE_BONUS_O] = sSubspriteTable_DigitalDisplay_BonusO,
+ [DIG_SPRITE_BONUS_N] = sSubspriteTable_DigitalDisplay_BonusN,
+ [DIG_SPRITE_BONUS_U] = sSubspriteTable_DigitalDisplay_BonusU,
+ [DIG_SPRITE_BONUS_S] = sSubspriteTable_DigitalDisplay_BonusS,
+ [DIG_SPRITE_BIG_B] = sSubspriteTable_DigitalDisplay_BigB,
+ [DIG_SPRITE_BIG_I] = sSubspriteTable_DigitalDisplay_BigI,
+ [DIG_SPRITE_BIG_G] = sSubspriteTable_DigitalDisplay_BigG,
+ [DIG_SPRITE_REG_R] = sSubspriteTable_DigitalDisplay_RegR,
+ [DIG_SPRITE_REG_E] = sSubspriteTable_DigitalDisplay_RegE,
+ [DIG_SPRITE_REG_G] = sSubspriteTable_DigitalDisplay_RegG,
+ [DIG_SPRITE_EMPTY] = NULL
+};
+
+static const struct SpriteSheet sSlotMachineSpriteSheets[22] =
+{
+ { .data = gSlotMachineReelSymbol1Tiles, .size = 0x200, .tag = GFXTAG_7_RED },
+ { .data = gSlotMachineReelSymbol2Tiles, .size = 0x200, .tag = GFXTAG_7_BLUE },
+ { .data = gSlotMachineReelSymbol3Tiles, .size = 0x200, .tag = GFXTAG_AZURILL },
+ { .data = gSlotMachineReelSymbol4Tiles, .size = 0x200, .tag = GFXTAG_LOTAD },
+ { .data = gSlotMachineReelSymbol5Tiles, .size = 0x200, .tag = GFXTAG_CHERRY },
+ { .data = gSlotMachineReelSymbol6Tiles, .size = 0x200, .tag = GFXTAG_POWER },
+ { .data = gSlotMachineReelSymbol7Tiles, .size = 0x200, .tag = GFXTAG_REPLAY },
+ { .data = gSlotMachineNumber0Tiles, .size = 0x40, .tag = GFXTAG_NUM_0 },
+ { .data = gSlotMachineNumber1Tiles, .size = 0x40, .tag = GFXTAG_NUM_1 },
+ { .data = gSlotMachineNumber2Tiles, .size = 0x40, .tag = GFXTAG_NUM_2 },
+ { .data = gSlotMachineNumber3Tiles, .size = 0x40, .tag = GFXTAG_NUM_3 },
+ { .data = gSlotMachineNumber4Tiles, .size = 0x40, .tag = GFXTAG_NUM_4 },
+ { .data = gSlotMachineNumber5Tiles, .size = 0x40, .tag = GFXTAG_NUM_5 },
+ { .data = gSlotMachineNumber6Tiles, .size = 0x40, .tag = GFXTAG_NUM_6 },
+ { .data = gSlotMachineNumber7Tiles, .size = 0x40, .tag = GFXTAG_NUM_7 },
+ { .data = gSlotMachineNumber8Tiles, .size = 0x40, .tag = GFXTAG_NUM_8 },
+ { .data = gSlotMachineNumber9Tiles, .size = 0x40, .tag = GFXTAG_NUM_9 },
+ // skips GFXTAG_REEL_BG, which has its own spritesheet
// the data for these sheets is determined at runtime
- { .data = NULL, .size = 0x200, .tag = 18 },
- { .data = NULL, .size = 0x200, .tag = 19 },
- { .data = NULL, .size = 0x300, .tag = 20 },
- { .data = NULL, .size = 0x300, .tag = 21 },
+ { .data = NULL, .size = 0x200, .tag = GFXTAG_STOP },
+ { .data = NULL, .size = 0x200, .tag = GFXTAG_BONUS },
+ { .data = NULL, .size = 0x300, .tag = GFXTAG_BIG },
+ { .data = NULL, .size = 0x300, .tag = GFXTAG_REG },
{},
};
-static const u8 *const gUnknown_083EDCDC = gUnknown_08DD19F8;
+static const u8 *const sReelBackground_Tilemap = gSlotMachineReelBackground_Tilemap;
-static const u8 sUnused2[][2] =
+static const u16 sUnused[] =
{
- {0x7B, 0x6F},
- {0x68, 0x69},
- {0xAB, 0x36},
- {0xFF, 0x7F},
- {0x50, 0x57},
- {0xC0, 0x7E},
- {0xBA, 2},
- {0xBA, 2},
- {0xFD, 1},
- {0xFD, 1}
+ 0x6F7B,
+ 0x6968,
+ 0x36AB,
+ 0x7FFF,
+ 0x5750,
+ 0x7EC0,
+ 0x02BA,
+ 0x02BA,
+ 0x01FD,
+ 0x01FD,
};
-static const u8 gUnknown_085A83FC[] = {0x91, 0x7F};
-static const u8 gUnknown_085A83FE[] = {0xBF, 0x43};
-static const u8 gUnknown_085A8400[] = {0xBF, 0x43};
-static const u8 gUnknown_085A8402[] = {0xBF, 0x4A};
-static const u8 gUnknown_085A8404[] = {0xBF, 0x4A};
-
-static const u8 *const gUnknown_083EDD08[] =
+// The Bet 2 and 3 match line palettes are duplicated unnecessarily
+static const u16 sMiddleRowLit_Pal[] = {RGB(17, 28, 31)};
+static const u16 sTopRowLit_Pal[] = {RGB(31, 29, 16)};
+static const u16 sBottomRowt_Pal[] = {RGB(31, 29, 16)};
+static const u16 sNWSEDiagLit_Pal[] = {RGB(31, 21, 18)};
+static const u16 sNESWDiagLit_Pal[] = {RGB(31, 21, 18)};
+static const u16 *const sLitMatchLinePalTable[NUM_MATCH_LINES] =
{
- gUnknown_085A83FC,
- gUnknown_085A83FE,
- gUnknown_085A8400,
- gUnknown_085A8402,
- gUnknown_085A8404,
+ [MATCH_MIDDLE_ROW] = sMiddleRowLit_Pal,
+ [MATCH_TOP_ROW] = sTopRowLit_Pal,
+ [MATCH_BOTTOM_ROW] = sBottomRowt_Pal,
+ [MATCH_NWSE_DIAG] = sNWSEDiagLit_Pal,
+ [MATCH_NESW_DIAG] = sNESWDiagLit_Pal,
};
-static const u16 *const gUnknown_083EDD1C[] =
+static const u16 *const sDarkMatchLinePalTable[NUM_MATCH_LINES] =
{
- gSlotMachineMenu_Pal + 0x4A,
- gSlotMachineMenu_Pal + 0x4B,
- gSlotMachineMenu_Pal + 0x4C,
- gSlotMachineMenu_Pal + 0x4D,
- gSlotMachineMenu_Pal + 0x4E,
+ [MATCH_MIDDLE_ROW] = &gSlotMachineMenu_Pal[74],
+ [MATCH_TOP_ROW] = &gSlotMachineMenu_Pal[75],
+ [MATCH_BOTTOM_ROW] = &gSlotMachineMenu_Pal[76],
+ [MATCH_NWSE_DIAG] = &gSlotMachineMenu_Pal[77],
+ [MATCH_NESW_DIAG] = &gSlotMachineMenu_Pal[78],
};
-static const u8 gUnknown_083EDD30[] = {0x4A, 0x4B, 0x4C, 0x4E, 0x4D};
+static const u8 sMatchLinePalOffsets[NUM_MATCH_LINES] = {
+ [MATCH_MIDDLE_ROW] = 74,
+ [MATCH_TOP_ROW] = 75,
+ [MATCH_BOTTOM_ROW] = 76,
+ [MATCH_NWSE_DIAG] = 78, // Diag colors flipped for some reason
+ [MATCH_NESW_DIAG] = 77 // Doesn't matter as both are identical
+};
-static const u8 gBettingTilesId[][2] =
+static const u8 sBetToMatchLineIds[MAX_BET][2] =
{
- {0, 0},
- {1, 2},
- {3, 4},
+ {MATCH_MIDDLE_ROW, MATCH_MIDDLE_ROW}, // Bet 1
+ {MATCH_TOP_ROW, MATCH_BOTTOM_ROW}, // Bet 2
+ {MATCH_NWSE_DIAG, MATCH_NESW_DIAG}, // Bet 3
};
-static const u8 gNumberBettingTiles[] = { 1, 2, 2 };
-
-static const u16 gUnknown_085A843E[] = INCBIN_U16("graphics/slot_machine/85A843E.gbapal");
-static const u16 gUnknown_085A845E[] = INCBIN_U16("graphics/slot_machine/85A845E.gbapal");
-static const u16 gUnknown_085A847E[] = INCBIN_U16("graphics/slot_machine/85A847E.gbapal");
+static const u8 sMatchLinesPerBet[MAX_BET] = { 1, 2, 2 };
-static const u16 *const gUnknown_083EDDA0[] =
+// Flashing lights at top of slot machine, brightest point inside light goes from toward center of machine, to middle, to toward edges
+static const u16 sFlashingLightsInside_Pal[] = INCBIN_U16("graphics/slot_machine/flashing_lights_inside.gbapal");
+static const u16 sFlashingLightsMiddle_Pal[] = INCBIN_U16("graphics/slot_machine/flashing_lights_middle.gbapal");
+static const u16 sFlashingLightsOutside_Pal[] = INCBIN_U16("graphics/slot_machine/flashing_lights_outside.gbapal");
+static const u16 *const sFlashingLightsPalTable[] =
{
- gUnknown_085A843E,
- gUnknown_085A845E,
- gUnknown_085A847E,
+ sFlashingLightsInside_Pal,
+ sFlashingLightsMiddle_Pal,
+ sFlashingLightsOutside_Pal,
};
-static const u16 *const gUnknown_083EDDAC = {gSlotMachineMenu_Pal + 0x10};
-
-static const u16 gUnknown_085A84B0[] = INCBIN_U16("graphics/slot_machine/85A84B0.gbapal");
-static const u16 gUnknown_085A84D0[] = INCBIN_U16("graphics/slot_machine/85A84D0.gbapal");
-static const u16 gUnknown_085A84F0[] = INCBIN_U16("graphics/slot_machine/85A84F0.gbapal");
+static const u16 *const sSlotMachineMenu_Pal = {gSlotMachineMenu_Pal + 16};
-static const u16 *const gUnknown_083EDE10[] =
+static const u16 sPokeballShining0_Pal[] = INCBIN_U16("graphics/slot_machine/pokeball_shining_0.gbapal");
+static const u16 sPokeballShining1_Pal[] = INCBIN_U16("graphics/slot_machine/pokeball_shining_1.gbapal");
+static const u16 sPokeballShining2_Pal[] = INCBIN_U16("graphics/slot_machine/pokeball_shining_2.gbapal");
+static const u16 *const sPokeballShiningPalTable[] =
{
- gUnknown_085A84B0,
- gUnknown_085A84D0,
- gUnknown_085A84F0,
- gUnknown_08DCF230,
+ sPokeballShining0_Pal, // Streak on left side of ball
+ sPokeballShining1_Pal, // Streak in middle of ball
+ sPokeballShining2_Pal, // Streak on right side of ball
+ gSlotMachineDigitalDisplay_Pal, // Back to normal
};
-static const u16 *const gUnknown_083EDE20 = gUnknown_08DCF230;
-static const u16 gPalette_83EDE24[] = INCBIN_U16("graphics/slot_machine/85A8524.bin");
+static const u16 *const sDigitalDisplay_Pal = gSlotMachineDigitalDisplay_Pal;
+static const u16 sUnkPalette[] = INCBIN_U16("graphics/slot_machine/85A8524.bin");
-static const struct SpritePalette gSlotMachineSpritePalettes[] =
+static const struct SpritePalette sSlotMachineSpritePalettes[] =
{
- { .data = gUnknown_08DCF170, .tag = 0},
- { .data = gUnknown_08DCF190, .tag = 1},
- { .data = gUnknown_08DCF1B0, .tag = 2},
- { .data = gSlotMachineReelTime_Pal, .tag = 3},
- { .data = gUnknown_08DCF1F0, .tag = 4},
- { .data = gUnknown_08DCF210, .tag = 5},
- { .data = gUnknown_08DCF230, .tag = 6},
- { .data = gUnknown_08DCF1F0, .tag = 7},
+ { .data = gSlotMachineReelSymbols_Pal, .tag = PALTAG_REEL},
+ { .data = gSlotMachineReelTimePikachu_Pal, .tag = PALTAG_REEL_TIME_PIKACHU},
+ { .data = gSlotMachineReelTimeMisc_Pal, .tag = PALTAG_REEL_TIME_MISC},
+ { .data = gSlotMachineReelTimeMachine_Pal, .tag = PALTAG_REEL_TIME_MACHINE},
+ { .data = gSlotMachineMisc_Pal, .tag = PALTAG_MISC},
+ { .data = gSlotMachineReelTimeExplosion_Pal, .tag = PALTAG_EXPLOSION},
+ { .data = gSlotMachineDigitalDisplay_Pal, .tag = PALTAG_DIG_DISPLAY},
+ { .data = gSlotMachineMisc_Pal, .tag = PALTAG_PIKA_AURA},
{}
};
-static const u32 gReelTimeGfx[] = INCBIN_U32("graphics/slot_machine/reel_time_gfx.4bpp.lz");
-static const u16 gReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/85A96E0.bin");
-static const u16 gUnknown_085A9898[] = {0};
+static const u32 sReelTimeGfx[] = INCBIN_U32("graphics/slot_machine/reel_time_gfx.4bpp.lz"); // reel_time_machine and reel_time_pikachu
+static const u16 sReelTimeWindow_Tilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window.bin");
+static const u16 sEmptyTilemap[] = {0};
diff --git a/src/start_menu.c b/src/start_menu.c
index 88ad364c7..68a316185 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -463,7 +463,7 @@ static bool32 InitStartMenuStep(void)
sInitStartMenuData[0]++;
break;
case 4:
- if (PrintStartMenuActions(&sInitStartMenuData[1], 2))
+ if (PrintStartMenuActions((s8 *)&sInitStartMenuData[1], 2))
sInitStartMenuData[0]++;
break;
case 5:
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 6295e33ca..2585f3408 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -414,7 +414,7 @@ void CB2_ChooseStarter(void)
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 0x2A8, 0xD0);
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
@@ -474,7 +474,7 @@ static void CB2_StarterChoose(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
diff --git a/src/trainer_hill.c b/src/trainer_hill.c
index d6cb49837..c5aea14d9 100644
--- a/src/trainer_hill.c
+++ b/src/trainer_hill.c
@@ -64,7 +64,7 @@ static void TrainerHillSetPlayerLost(void);
static void TrainerHillGetChallengeStatus(void);
static void BufferChallengeTime(void);
static void GetAllFloorsUsed(void);
-static void ClearVarResult(void);
+static void GetInEReaderMode(void);
static void IsTrainerHillChallengeActive(void);
static void ShowTrainerHillPostBattleText(void);
static void SetAllTrainerFlags(void);
@@ -202,7 +202,7 @@ static const u16 *const *const sPrizeListSets[] =
sPrizeLists2
};
-static const u16 sUnknown_0862A5D4[] = INCBIN_U16("graphics/pokenav/862A5D4.gbapal");
+static const u16 sEReader_Pal[] = INCBIN_U16("graphics/misc/trainer_hill_ereader.gbapal");
static const u8 sRecordWinColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
static const struct TrHillTag *const sDataPerTag[] =
@@ -233,7 +233,7 @@ static void (* const sHillFunctions[])(void) =
[TRAINER_HILL_FUNC_GET_CHALLENGE_STATUS] = TrainerHillGetChallengeStatus,
[TRAINER_HILL_FUNC_GET_CHALLENGE_TIME] = BufferChallengeTime,
[TRAINER_HILL_FUNC_GET_ALL_FLOORS_USED] = GetAllFloorsUsed,
- [TRAINER_HILL_FUNC_CLEAR_RESULT] = ClearVarResult,
+ [TRAINER_HILL_FUNC_GET_IN_EREADER_MODE] = GetInEReaderMode,
[TRAINER_HILL_FUNC_IN_CHALLENGE] = IsTrainerHillChallengeActive,
[TRAINER_HILL_FUNC_POST_BATTLE_TEXT] = ShowTrainerHillPostBattleText,
[TRAINER_HILL_FUNC_SET_ALL_TRAINER_FLAGS] = SetAllTrainerFlags,
@@ -546,10 +546,11 @@ static void GetAllFloorsUsed(void)
}
// May have been dummied. Every time this is called a conditional for var result occurs afterwards
-static void ClearVarResult(void)
+// Relation to E-Reader is an assumption, most dummied Trainer Hill code seems to be JP E-Reader mode related
+static void GetInEReaderMode(void)
{
SetUpDataStruct();
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = FALSE;
FreeDataStruct();
}
@@ -997,11 +998,11 @@ static void SetAllTrainerFlags(void)
gSaveBlock2Ptr->frontier.trainerFlags = 0xFF;
}
-// Palette never loaded, sub_81D6534 always FALSE
-void sub_81D64C0(void)
+// Palette never loaded, OnTrainerHillEReaderChallengeFloor always FALSE
+void TryLoadTrainerHillEReaderPalette(void)
{
- if (sub_81D6534() == TRUE)
- LoadPalette(sUnknown_0862A5D4, 0x70, 0x20);
+ if (OnTrainerHillEReaderChallengeFloor() == TRUE)
+ LoadPalette(sEReader_Pal, 0x70, 0x20);
}
static void GetGameSaved(void)
@@ -1020,13 +1021,13 @@ static void ClearGameSaved(void)
}
// Always FALSE
-bool32 sub_81D6534(void)
+bool32 OnTrainerHillEReaderChallengeFloor(void)
{
if (!InTrainerHillChallenge() || GetCurrentTrainerHillMapId() == TRAINER_HILL_ENTRANCE)
return FALSE;
- ClearVarResult();
- if (gSpecialVar_Result == 0)
+ GetInEReaderMode();
+ if (gSpecialVar_Result == FALSE)
return FALSE;
else
return TRUE;
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 68a16e208..c37f37262 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -559,7 +559,7 @@ static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct Objec
gFieldEffectArguments[1] = trainerObj->currentCoords.y;
gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1;
gFieldEffectArguments[3] = 2;
- task->tOutOfAshSpriteId = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
+ task->tOutOfAshSpriteId = FieldEffectStart(FLDEFF_ASH_PUFF);
task->tFuncId++;
}
return FALSE;
@@ -586,7 +586,7 @@ static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct Objec
static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
- if (!FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
+ if (!FieldEffectActiveListContains(FLDEFF_ASH_PUFF))
task->tFuncId = 3;
return FALSE;
@@ -603,14 +603,14 @@ static void sub_80B44C8(u8 taskId)
struct ObjectEvent *objEvent;
// another objEvent loaded into by loadword?
- LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&objEvent);
+ LoadWordFromTwoHalfwords((u16*)&task->data[1], (u32 *)&objEvent);
if (!task->data[7])
{
ObjectEventClearHeldMovement(objEvent);
task->data[7]++;
}
sTrainerSeeFuncList2[task->data[0]](taskId, task, objEvent);
- if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_POP_OUT_OF_ASH))
+ if (task->data[0] == 3 && !FieldEffectActiveListContains(FLDEFF_ASH_PUFF))
{
SetTrainerMovementType(objEvent, GetTrainerFacingDirectionMovementType(objEvent->facingDirection));
TryOverrideTemplateCoordsForObjectEvent(objEvent, GetTrainerFacingDirectionMovementType(objEvent->facingDirection));
@@ -624,7 +624,7 @@ static void sub_80B44C8(u8 taskId)
void sub_80B4578(struct ObjectEvent *var)
{
- StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80B44C8, 0)].data[1], (u32)var);
+ StoreWordInTwoHalfwords((u16 *)&gTasks[CreateTask(sub_80B44C8, 0)].data[1], (u32)var);
}
void EndTrainerApproach(void)
diff --git a/src/tv.c b/src/tv.c
index b3722e87a..0e419a99f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1836,31 +1836,25 @@ static void TryEndMassOutbreak(u16 days)
gSaveBlock1Ptr->outbreakDaysLeft -= days;
}
-void sub_80ED950(bool8 flag)
+void RecordFishingAttemptForTV(bool8 caughtFish)
{
- if (flag)
+ if (caughtFish)
{
if (sPokemonAnglerAttemptCounters >> 8 > 4)
- {
PutFishingAdviceShowOnTheAir();
- }
+
sPokemonAnglerAttemptCounters &= 0xFF;
if (sPokemonAnglerAttemptCounters != 0xFF)
- {
sPokemonAnglerAttemptCounters += 0x01;
- }
}
else
{
if ((u8)sPokemonAnglerAttemptCounters > 4)
- {
PutFishingAdviceShowOnTheAir();
- }
+
sPokemonAnglerAttemptCounters &= 0xFF00;
if (sPokemonAnglerAttemptCounters >> 8 != 0xFF)
- {
sPokemonAnglerAttemptCounters += 0x0100;
- }
}
}
@@ -1930,7 +1924,7 @@ void sub_80EDA80(void)
}
}
-void sub_80EDB44(void)
+void TryPutTodaysRivalTrainerOnAir(void)
{
TVShow *show;
u32 i;
diff --git a/src/wallclock.c b/src/wallclock.c
index 00ab65817..aa2bd8019 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -660,7 +660,7 @@ static void LoadWallClockGraphics(void)
InitWindows(gUnknown_085B21DC);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 0x250, 0xd0);
- clear_scheduled_bg_copies_to_vram();
+ ClearScheduledBgCopiesToVram();
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
@@ -780,7 +780,7 @@ static void WallClockMainCallback(void)
RunTasks();
AnimateSprites();
BuildOamBuffer();
- do_scheduled_bg_tilemap_copies_to_vram();
+ DoScheduledBgTilemapCopiesToVram();
UpdatePaletteFade();
}
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 1c4fd24fd..492a10101 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -185,13 +185,6 @@ static u8 ChooseWildMonIndex_WaterRock(void)
return 4;
}
-enum
-{
- OLD_ROD,
- GOOD_ROD,
- SUPER_ROD
-};
-
static u8 ChooseWildMonIndex_Fishing(u8 rod)
{
u8 wildMonIndex = 0;
diff --git a/tools/gbagfx/gfx.c b/tools/gbagfx/gfx.c
index 8d959465f..4e85953fd 100644
--- a/tools/gbagfx/gfx.c
+++ b/tools/gbagfx/gfx.c
@@ -282,7 +282,7 @@ static void HflipTile(unsigned char * tile, int bitDepth)
for (i = 0; i < 8; i++)
{
SWAP_NYBBLES(&tile[4 * i + 0], &tile[4 * i + 3]);
- SWAP_NYBBLES(&tile[4 * i + 1], &tile[4 * i + 2]);;
+ SWAP_NYBBLES(&tile[4 * i + 1], &tile[4 * i + 2]);
}
break;
case 8:
diff --git a/tools/mapjson/mapjson.cpp b/tools/mapjson/mapjson.cpp
index 55335e382..5e246ff24 100644
--- a/tools/mapjson/mapjson.cpp
+++ b/tools/mapjson/mapjson.cpp
@@ -77,6 +77,10 @@ string generate_map_header_text(Json map_data, Json layouts_data, string version
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
+ << map_data["name"].string_value()
+ << "/map.json\n@\n\n";
+
text << map_data["name"].string_value() << ":\n"
<< "\t.4byte " << layout["name"].string_value() << "\n";
@@ -124,6 +128,10 @@ string generate_map_connections_text(Json map_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
+ << map_data["name"].string_value()
+ << "/map.json\n@\n\n";
+
text << map_data["name"].string_value() << "_MapConnectionsList:\n";
for (auto &connection : map_data["connections"].array_items()) {
@@ -146,6 +154,10 @@ string generate_map_events_text(Json map_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/"
+ << map_data["name"].string_value()
+ << "/map.json\n@\n\n";
+
string objects_label, warps_label, coords_label, bgs_label;
if (map_data["object_events"].array_items().size() > 0) {
@@ -286,6 +298,8 @@ void process_map(string map_filepath, string layouts_filepath, string version) {
string generate_groups_text(Json groups_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n";
+
for (auto &key : groups_data["group_order"].array_items()) {
string group = key.string_value();
text << group << "::\n";
@@ -325,6 +339,8 @@ string generate_connections_text(Json groups_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n";
+
for (Json map_name : map_names)
text << "\t.include \"data/maps/" << map_name.string_value() << "/connections.inc\"\n";
@@ -340,6 +356,8 @@ string generate_headers_text(Json groups_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n";
+
for (string map_name : map_names)
text << "\t.include \"data/maps/" << map_name << "/header.inc\"\n";
@@ -355,6 +373,8 @@ string generate_events_text(Json groups_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n@\n\n";
+
for (string map_name : map_names)
text << "\t.include \"data/maps/" << map_name << "/events.inc\"\n";
@@ -370,6 +390,8 @@ string generate_map_constants_text(string groups_filepath, Json groups_data) {
text << "#ifndef GUARD_CONSTANTS_MAP_GROUPS_H\n"
<< "#define GUARD_CONSTANTS_MAP_GROUPS_H\n\n";
+ text << "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json\n//\n\n";
+
int group_num = 0;
for (auto &group : groups_data["group_order"].array_items()) {
@@ -428,6 +450,8 @@ void process_groups(string groups_filepath) {
string generate_layout_headers_text(Json layouts_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n@\n\n";
+
for (auto &layout : layouts_data["layouts"].array_items()) {
string border_label = layout["name"].string_value() + "_Border";
string blockdata_label = layout["name"].string_value() + "_Blockdata";
@@ -451,6 +475,8 @@ string generate_layout_headers_text(Json layouts_data) {
string generate_layouts_table_text(Json layouts_data) {
ostringstream text;
+ text << "@\n@ DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n@\n\n";
+
text << "\t.align 2\n"
<< layouts_data["layouts_table_label"].string_value() << "::\n";
@@ -466,6 +492,8 @@ string generate_layouts_constants_text(Json layouts_data) {
text << "#ifndef GUARD_CONSTANTS_LAYOUTS_H\n"
<< "#define GUARD_CONSTANTS_LAYOUTS_H\n\n";
+ text << "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json\n//\n\n";
+
int i = 0;
for (auto &layout : layouts_data["layouts"].array_items())
text << "#define " << layout["id"].string_value() << " " << ++i << "\n";