summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rwxr-xr-xasmdiff.sh6
-rw-r--r--constants/m4a_constants.inc166
-rw-r--r--data/battle_ai_scripts.s12
-rw-r--r--data/maps/FortreeCity/map.json2
-rw-r--r--data/maps/LilycoveCity_House1/map.json2
-rw-r--r--data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc6
-rw-r--r--data/maps/Route117/map.json2
-rw-r--r--data/maps/Route119/map.json4
-rw-r--r--data/maps/Route120/map.json20
-rw-r--r--data/maps/Route120/scripts.inc20
-rw-r--r--data/maps/SootopolisCity_House1/map.json2
-rw-r--r--docs/bugs_and_glitches.md22
-rw-r--r--graphics/object_events/palettes/birth_island_stone.pal (renamed from graphics/object_events/palettes/30.pal)0
-rw-r--r--graphics/object_events/palettes/brendan.pal (renamed from graphics/object_events/palettes/08.pal)0
-rw-r--r--graphics/object_events/palettes/brendan_reflection.pal (renamed from graphics/object_events/palettes/09.pal)0
-rw-r--r--graphics/object_events/palettes/bridge_reflection.pal (renamed from graphics/object_events/palettes/10.pal)0
-rw-r--r--graphics/object_events/palettes/cable_car.pal (renamed from graphics/object_events/palettes/20.pal)0
-rw-r--r--graphics/object_events/palettes/deoxys.pal (renamed from graphics/object_events/palettes/29.pal)0
-rw-r--r--graphics/object_events/palettes/enemy_zigzagoon.pal (renamed from graphics/object_events/palettes/16.pal)0
-rw-r--r--graphics/object_events/palettes/groudon.pal (renamed from graphics/object_events/palettes/24.pal)0
-rw-r--r--graphics/object_events/palettes/groudon_reflection.pal (renamed from graphics/object_events/palettes/25.pal)0
-rw-r--r--graphics/object_events/palettes/ho_oh.pal (renamed from graphics/object_events/palettes/31.pal)0
-rw-r--r--graphics/object_events/palettes/kyogre.pal (renamed from graphics/object_events/palettes/22.pal)0
-rw-r--r--graphics/object_events/palettes/kyogre_reflection.pal (renamed from graphics/object_events/palettes/23.pal)0
-rw-r--r--graphics/object_events/palettes/lugia.pal (renamed from graphics/object_events/palettes/32.pal)0
-rw-r--r--graphics/object_events/palettes/may.pal (renamed from graphics/object_events/palettes/17.pal)0
-rw-r--r--graphics/object_events/palettes/may_reflection.pal (renamed from graphics/object_events/palettes/18.pal)0
-rw-r--r--graphics/object_events/palettes/moving_box.pal (renamed from graphics/object_events/palettes/19.pal)0
-rw-r--r--graphics/object_events/palettes/npc_1.pal (renamed from graphics/object_events/palettes/00.pal)0
-rw-r--r--graphics/object_events/palettes/npc_1_reflection.pal (renamed from graphics/object_events/palettes/04.pal)0
-rw-r--r--graphics/object_events/palettes/npc_2.pal (renamed from graphics/object_events/palettes/01.pal)0
-rw-r--r--graphics/object_events/palettes/npc_2_reflection.pal (renamed from graphics/object_events/palettes/05.pal)0
-rw-r--r--graphics/object_events/palettes/npc_3.pal (renamed from graphics/object_events/palettes/02.pal)0
-rw-r--r--graphics/object_events/palettes/npc_3_reflection.pal (renamed from graphics/object_events/palettes/06.pal)0
-rw-r--r--graphics/object_events/palettes/npc_4.pal (renamed from graphics/object_events/palettes/03.pal)0
-rw-r--r--graphics/object_events/palettes/npc_4_reflection.pal (renamed from graphics/object_events/palettes/07.pal)0
-rw-r--r--graphics/object_events/palettes/player_underwater.pal (renamed from graphics/object_events/palettes/11.pal)0
-rw-r--r--graphics/object_events/palettes/poochyena.pal (renamed from graphics/object_events/palettes/27.pal)0
-rw-r--r--graphics/object_events/palettes/quinty_plump.pal (renamed from graphics/object_events/palettes/12.pal)0
-rw-r--r--graphics/object_events/palettes/quinty_plump_reflection.pal (renamed from graphics/object_events/palettes/13.pal)0
-rw-r--r--graphics/object_events/palettes/red_leaf.pal (renamed from graphics/object_events/palettes/28.pal)0
-rw-r--r--graphics/object_events/palettes/ruby_sapphire_brendan.pal (renamed from graphics/object_events/palettes/33.pal)0
-rw-r--r--graphics/object_events/palettes/ruby_sapphire_may.pal (renamed from graphics/object_events/palettes/34.pal)0
-rw-r--r--graphics/object_events/palettes/ss_tidal.pal (renamed from graphics/object_events/palettes/21.pal)0
-rw-r--r--graphics/object_events/palettes/submarine_shadow.pal (renamed from graphics/object_events/palettes/26.pal)0
-rw-r--r--graphics/object_events/palettes/truck.pal (renamed from graphics/object_events/palettes/14.pal)0
-rw-r--r--graphics/object_events/palettes/vigoroth.pal (renamed from graphics/object_events/palettes/15.pal)0
-rw-r--r--graphics/trainers/front_pics/cooltrainer_f_front_pic.png (renamed from graphics/trainers/front_pics/cool_trainer_f_front_pic.png)bin681 -> 681 bytes
-rw-r--r--graphics/trainers/front_pics/cooltrainer_m_front_pic.png (renamed from graphics/trainers/front_pics/cool_trainer_m_front_pic.png)bin627 -> 627 bytes
-rw-r--r--graphics/trainers/palettes/cooltrainer_f.pal (renamed from graphics/trainers/palettes/cool_trainer_f.pal)0
-rw-r--r--graphics/trainers/palettes/cooltrainer_m.pal (renamed from graphics/trainers/palettes/cool_trainer_m.pal)0
-rw-r--r--include/battle.h6
-rw-r--r--include/config.h8
-rw-r--r--include/constants/battle_frontier.h2
-rw-r--r--include/constants/event_objects.h4
-rw-r--r--include/constants/flags.h4
-rw-r--r--include/constants/pokemon.h4
-rw-r--r--include/constants/species.h156
-rw-r--r--include/gba/m4a_internal.h177
-rw-r--r--include/global.fieldmap.h17
-rw-r--r--include/global.h3
-rw-r--r--include/graphics.h6
-rw-r--r--src/battle_ai_script_commands.c19
-rwxr-xr-xsrc/battle_anim_effects_3.c2
-rw-r--r--src/battle_dome.c14
-rw-r--r--src/battle_factory_screen.c6
-rw-r--r--src/battle_gfx_sfx_util.c44
-rw-r--r--src/battle_intro.c4
-rw-r--r--src/battle_main.c2
-rw-r--r--src/battle_message.c3
-rw-r--r--src/battle_pyramid.c8
-rw-r--r--src/battle_script_commands.c46
-rw-r--r--src/battle_setup.c3
-rw-r--r--src/battle_tent.c9
-rw-r--r--src/battle_tower.c50
-rw-r--r--src/battle_transition.c5
-rw-r--r--src/battle_util.c9
-rw-r--r--src/berry_blender.c10
-rwxr-xr-xsrc/berry_crush.c197
-rw-r--r--src/contest.c4
-rw-r--r--src/contest_ai.c10
-rw-r--r--src/contest_painting.c8
-rw-r--r--src/contest_util.c21
-rw-r--r--src/data.c5
-rw-r--r--src/data/battle_moves.h340
-rwxr-xr-xsrc/data/field_effects/field_effect_objects.h2
-rw-r--r--src/data/graphics/trainers.h8
-rw-r--r--src/data/lilycove_lady.h2
-rwxr-xr-xsrc/data/object_events/object_event_graphics.h128
-rwxr-xr-xsrc/data/object_events/object_event_graphics_info.h490
-rwxr-xr-xsrc/data/object_events/object_event_graphics_info_pointers.h8
-rw-r--r--src/data/trainer_graphics/back_pic_tables.h20
-rw-r--r--src/data/trainer_graphics/front_pic_tables.h4
-rw-r--r--src/daycare.c14
-rw-r--r--src/egg_hatch.c2
-rw-r--r--src/event_object_movement.c506
-rw-r--r--src/evolution_scene.c10
-rw-r--r--src/field_effect.c13
-rwxr-xr-xsrc/field_effect_helpers.c10
-rw-r--r--src/field_player_avatar.c10
-rw-r--r--src/field_specials.c30
-rw-r--r--src/fldeff_cut.c8
-rw-r--r--src/frontier_pass.c3
-rw-r--r--src/frontier_util.c14
-rw-r--r--src/m4a.c319
-rw-r--r--src/m4a_1.s440
-rw-r--r--src/match_call.c10
-rw-r--r--src/menu.c43
-rw-r--r--src/menu_specialized.c134
-rw-r--r--src/metatile_behavior.c9
-rw-r--r--src/overworld.c39
-rwxr-xr-xsrc/party_menu.c16
-rw-r--r--src/pokeblock_feed.c2
-rw-r--r--src/pokemon.c9
-rw-r--r--src/pokemon_animation.c9
-rw-r--r--src/pokemon_storage_system.c19
-rw-r--r--src/pokemon_summary_screen.c18
-rw-r--r--src/pokenav_match_call_data.c13
-rw-r--r--src/region_map.c4
-rw-r--r--src/roulette.c5
-rw-r--r--src/trade.c8
-rw-r--r--src/trainer_see.c12
-rw-r--r--src/union_room.c10
-rw-r--r--src/use_pokeblock.c4
-rw-r--r--src/walda_phrase.c6
126 files changed, 2032 insertions, 1853 deletions
diff --git a/Makefile b/Makefile
index 07143e4ad..78a2c2a4f 100644
--- a/Makefile
+++ b/Makefile
@@ -63,13 +63,13 @@ ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN)
ifeq ($(MODERN),0)
CC1 := tools/agbcc/bin/agbcc$(EXE)
-override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
+override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -g
ROM := pokeemerald.gba
OBJ_DIR := build/emerald
LIBPATH := -L ../../tools/agbcc/lib
else
CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet
-override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
+override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -g
ROM := pokeemerald_modern.gba
OBJ_DIR := build/modern
LIBPATH := -L "$(dir $(shell $(CC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(CC) -mthumb -print-file-name=libc.a))"
diff --git a/asmdiff.sh b/asmdiff.sh
index 9e8749acf..6ea588131 100755
--- a/asmdiff.sh
+++ b/asmdiff.sh
@@ -1,7 +1,11 @@
#!/bin/bash
OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
-OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
+if [ $(($1)) -ge $((0x8000000)) ]; then
+ OPTIONS="--adjust-vma=0x8000000 --start-address=$(($1)) --stop-address=$(($1 + $2))"
+else
+ OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
+fi
$OBJDUMP $OPTIONS baserom.gba > baserom.dump
$OBJDUMP $OPTIONS pokeemerald.gba > pokeemerald.dump
diff -u baserom.dump pokeemerald.dump
diff --git a/constants/m4a_constants.inc b/constants/m4a_constants.inc
index 62ca5bb55..08d888acd 100644
--- a/constants/m4a_constants.inc
+++ b/constants/m4a_constants.inc
@@ -2,11 +2,41 @@
.equiv PCM_DMA_BUF_SIZE, 1584
+ .equiv C_V, 0x40
+
.equiv TONEDATA_TYPE_CGB, 0x07
.equiv TONEDATA_TYPE_FIX, 0x08
+ .equiv TONEDATA_TYPE_REV, 0x10
+ .equiv TONEDATA_TYPE_CMP, 0x20
.equiv TONEDATA_TYPE_SPL, 0x40 @ key split
.equiv TONEDATA_TYPE_RHY, 0x80 @ rhythm
+ .equiv TONEDATA_P_S_PAN, 0xc0
+
+ .equiv SOUND_CHANNEL_SF_START, 0x80
+ .equiv SOUND_CHANNEL_SF_STOP, 0x40
+ .equiv SOUND_CHANNEL_SF_SPECIAL, 0x20
+ .equiv SOUND_CHANNEL_SF_LOOP, 0x10
+ .equiv SOUND_CHANNEL_SF_IEC, 0x04
+ .equiv SOUND_CHANNEL_SF_ENV, 0x03
+ .equiv SOUND_CHANNEL_SF_ENV_ATTACK, 0x03
+ .equiv SOUND_CHANNEL_SF_ENV_DECAY, 0x02
+ .equiv SOUND_CHANNEL_SF_ENV_SUSTAIN, 0x01
+ .equiv SOUND_CHANNEL_SF_ENV_RELEASE, 0x00
+ .equiv SOUND_CHANNEL_SF_ON, (SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_STOP | SOUND_CHANNEL_SF_IEC | SOUND_CHANNEL_SF_ENV)
+
+ .equiv CGB_CHANNEL_MO_PIT, 0x02
+ .equiv CGB_CHANNEL_MO_VOL, 0x01
+
+ .equiv WAVE_DATA_FLAG_LOOP, 0xC0
+
+ .equiv MPT_FLG_VOLSET, 0x01
+ .equiv MPT_FLG_VOLCHG, 0x03
+ .equiv MPT_FLG_PITSET, 0x04
+ .equiv MPT_FLG_PITCHG, 0x0C
+ .equiv MPT_FLG_START, 0x40
+ .equiv MPT_FLG_EXIST, 0x80
+
.macro struct_begin
.struct 0
.endm
@@ -17,6 +47,28 @@
.endm
struct_begin
+ struct_field o_WaveData_type, 2
+ struct_field o_WaveData_d1, 1
+ struct_field o_WaveData_flags, 1
+ struct_field o_WaveData_freq, 4
+ struct_field o_WaveData_loopStart, 4
+ struct_field o_WaveData_size, 4
+ struct_field o_WaveData_data, 0
+ struct_field WaveData_size, 0
+
+ struct_begin
+ struct_field o_ToneData_type, 1
+ struct_field o_ToneData_key, 1
+ struct_field o_ToneData_length, 1
+ struct_field o_ToneData_pan_sweep, 1
+ struct_field o_ToneData_wav, 4
+ struct_field o_ToneData_attack, 1
+ struct_field o_ToneData_decay, 1
+ struct_field o_ToneData_sustain, 1
+ struct_field o_ToneData_release, 1
+ struct_field ToneData_size, 0
+
+ struct_begin
struct_field o_SoundInfo_ident, 4
struct_field o_SoundInfo_pcmDmaCounter, 1
struct_field o_SoundInfo_reverb, 1
@@ -32,8 +84,8 @@
struct_field o_SoundInfo_pcmFreq, 4
struct_field o_SoundInfo_divFreq, 4
struct_field o_SoundInfo_cgbChans, 4
- struct_field o_SoundInfo_func, 4
- struct_field o_SoundInfo_intp, 4
+ struct_field o_SoundInfo_MPlayMainHead, 4
+ struct_field o_SoundInfo_musicPlayerHead, 4
struct_field o_SoundInfo_CgbSound, 4
struct_field o_SoundInfo_CgbOscOff, 4
struct_field o_SoundInfo_MidiKeyToCgbFreq, 4
@@ -46,7 +98,7 @@
struct_field SoundInfo_size, 0
struct_begin
- struct_field o_SoundChannel_status, 1
+ struct_field o_SoundChannel_statusFlags, 1
struct_field o_SoundChannel_type, 1
struct_field o_SoundChannel_rightVolume, 1
struct_field o_SoundChannel_leftVolume, 1
@@ -54,29 +106,29 @@
struct_field o_SoundChannel_decay, 1
struct_field o_SoundChannel_sustain, 1
struct_field o_SoundChannel_release, 1
- struct_field o_SoundChannel_ky, 1
- struct_field o_SoundChannel_ev, 1
- struct_field o_SoundChannel_er, 1
- struct_field o_SoundChannel_el, 1
- struct_field o_SoundChannel_iev, 1
- struct_field o_SoundChannel_iel, 1
- struct_field o_SoundChannel_d1, 1
- struct_field o_SoundChannel_d2, 1
- struct_field o_SoundChannel_gt, 1
- struct_field o_SoundChannel_mk, 1
- struct_field o_SoundChannel_ve, 1
- struct_field o_SoundChannel_pr, 1
- struct_field o_SoundChannel_rp, 1
- struct_field o_SoundChannel_d3, 3
- struct_field o_SoundChannel_ct, 4
+ struct_field o_SoundChannel_key, 1
+ struct_field o_SoundChannel_envelopeVolume, 1
+ struct_field o_SoundChannel_envelopeVolumeRight, 1
+ struct_field o_SoundChannel_envelopeVolumeLeft, 1
+ struct_field o_SoundChannel_pseudoEchoVolume, 1
+ struct_field o_SoundChannel_pseudoEchoLength, 1
+ struct_field o_SoundChannel_dummy1, 1
+ struct_field o_SoundChannel_dummy2, 1
+ struct_field o_SoundChannel_gateTime, 1
+ struct_field o_SoundChannel_midiKey, 1
+ struct_field o_SoundChannel_velocity, 1
+ struct_field o_SoundChannel_priority, 1
+ struct_field o_SoundChannel_rhythmPan, 1
+ struct_field o_SoundChannel_dummy3, 3
+ struct_field o_SoundChannel_count, 4
struct_field o_SoundChannel_fw, 4
- struct_field o_SoundChannel_freq, 4
+ struct_field o_SoundChannel_frequency, 4
struct_field o_SoundChannel_wav, 4
- struct_field o_SoundChannel_cp, 4
+ struct_field o_SoundChannel_currentPointer, 4
struct_field o_SoundChannel_track, 4
- struct_field o_SoundChannel_pp, 4
- struct_field o_SoundChannel_np, 4
- struct_field o_SoundChannel_d4, 4
+ struct_field o_SoundChannel_prevChannelPointer, 4
+ struct_field o_SoundChannel_nextChannelPointer, 4
+ struct_field o_SoundChannel_dummy4, 4
struct_field o_SoundChannel_xpi, 2
struct_field o_SoundChannel_xpc, 2
struct_field SoundChannel_size, 0
@@ -112,8 +164,8 @@
struct_field o_MusicPlayerTrack_lfoDelay, 1
struct_field o_MusicPlayerTrack_lfoDelayC, 1
struct_field o_MusicPlayerTrack_priority, 1
- struct_field o_MusicPlayerTrack_echoVolume, 1
- struct_field o_MusicPlayerTrack_echoLength, 1
+ struct_field o_MusicPlayerTrack_pseudoEchoVolume, 1
+ struct_field o_MusicPlayerTrack_pseudoEchoLength, 1
struct_field o_MusicPlayerTrack_chan, 4
struct_field o_MusicPlayerTrack_ToneData_type, 1
struct_field o_MusicPlayerTrack_ToneData_key, 1
@@ -159,41 +211,41 @@
struct_field MusicPlayerInfo_size, 0
struct_begin
- struct_field o_CgbChannel_sf, 1
- struct_field o_CgbChannel_ty, 1
+ struct_field o_CgbChannel_statusFlags, 1
+ struct_field o_CgbChannel_type, 1
struct_field o_CgbChannel_rightVolume, 1
struct_field o_CgbChannel_leftVolume, 1
- struct_field o_CgbChannel_at, 1
- struct_field o_CgbChannel_de, 1
- struct_field o_CgbChannel_su, 1
- struct_field o_CgbChannel_re, 1
- struct_field o_CgbChannel_ky, 1
- struct_field o_CgbChannel_ev, 1
- struct_field o_CgbChannel_eg, 1
- struct_field o_CgbChannel_ec, 1
- struct_field o_CgbChannel_echoVolume, 1
- struct_field o_CgbChannel_echoLength, 1
- struct_field o_CgbChannel_d1, 1
- struct_field o_CgbChannel_d2, 1
- struct_field o_CgbChannel_gt, 1
- struct_field o_CgbChannel_mk, 1
- struct_field o_CgbChannel_ve, 1
- struct_field o_CgbChannel_pr, 1
- struct_field o_CgbChannel_rp, 1
- struct_field o_CgbChannel_d3, 3
- struct_field o_CgbChannel_d5, 1
- struct_field o_CgbChannel_sg, 1
+ struct_field o_CgbChannel_attack, 1
+ struct_field o_CgbChannel_decay, 1
+ struct_field o_CgbChannel_sustain, 1
+ struct_field o_CgbChannel_release, 1
+ struct_field o_CgbChannel_key, 1
+ struct_field o_CgbChannel_envelopeVolume, 1
+ struct_field o_CgbChannel_envelopeGoal, 1
+ struct_field o_CgbChannel_envelopeCounter, 1
+ struct_field o_CgbChannel_pseudoEchoVolume, 1
+ struct_field o_CgbChannel_pseudoEchoLength, 1
+ struct_field o_CgbChannel_dummy1, 1
+ struct_field o_CgbChannel_dummy2, 1
+ struct_field o_CgbChannel_gateTime, 1
+ struct_field o_CgbChannel_midiKey, 1
+ struct_field o_CgbChannel_velocity, 1
+ struct_field o_CgbChannel_priority, 1
+ struct_field o_CgbChannel_rhythmPan, 1
+ struct_field o_CgbChannel_dummy3, 3
+ struct_field o_CgbChannel_dummy5, 1
+ struct_field o_CgbChannel_sustainGoal, 1
struct_field o_CgbChannel_n4, 1
struct_field o_CgbChannel_pan, 1
struct_field o_CgbChannel_panMask, 1
- struct_field o_CgbChannel_mo, 1
- struct_field o_CgbChannel_le, 1
- struct_field o_CgbChannel_sw, 1
- struct_field o_CgbChannel_fr, 4
- struct_field o_CgbChannel_wp, 4
- struct_field o_CgbChannel_cp, 4
- struct_field o_CgbChannel_tp, 4
- struct_field o_CgbChannel_pp, 4
- struct_field o_CgbChannel_np, 4
- struct_field o_CgbChannel_d4, 8
+ struct_field o_CgbChannel_modify, 1
+ struct_field o_CgbChannel_length, 1
+ struct_field o_CgbChannel_sweep, 1
+ struct_field o_CgbChannel_frequency, 4
+ struct_field o_CgbChannel_wavePointer, 4
+ struct_field o_CgbChannel_currentPointer, 4
+ struct_field o_CgbChannel_track, 4
+ struct_field o_CgbChannel_prevChannelPointer, 4
+ struct_field o_CgbChannel_nextChannelPointer, 4
+ struct_field o_CgbChannel_dummy4, 8
struct_field CgbChannel_size, 0
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index 1c7bff51c..d1dd1caed 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -2324,14 +2324,18 @@ AI_CV_SemiInvulnerable:
@ BUG: The scripts for checking type-resistance to weather for semi-invulnerable moves are swapped
@ The result is that the AI is encouraged to stall while taking damage from weather
-@ To fix, swap _CheckSandstormTypes/_CheckIceType in the below script
AI_CV_SemiInvulnerable2:
if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_SemiInvulnerable_TryEncourage
if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_SemiInvulnerable_TryEncourage
if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_SemiInvulnerable_TryEncourage
get_weather
+ .ifdef BUGFIX
+ if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckIceType
+ if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckSandstormTypes
+ .else
if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckSandstormTypes
if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckIceType
+ .endif
goto AI_CV_SemiInvulnerable5
AI_CV_SemiInvulnerable_CheckSandstormTypes:
@@ -2398,9 +2402,13 @@ AI_CV_Hail_ScoreDown1:
AI_CV_Hail_End:
end
-@ BUG: Facade score is increased if the target is statused, but should be if the user is. Replace AI_TARGET with AI_USER
+@ BUG: Facade score is increased if the target is statused, but should be if the user is
AI_CV_Facade:
+ .ifdef BUGFIX
+ if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End
+ .else
if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End
+ .endif
score +1
AI_CV_Facade_End:
end
diff --git a/data/maps/FortreeCity/map.json b/data/maps/FortreeCity/map.json
index 86d43693a..fd23e6ffd 100644
--- a/data/maps/FortreeCity/map.json
+++ b/data/maps/FortreeCity/map.json
@@ -104,7 +104,7 @@
"flag": "0"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 25,
"y": 8,
"elevation": 3,
diff --git a/data/maps/LilycoveCity_House1/map.json b/data/maps/LilycoveCity_House1/map.json
index bd6850f5a..cbd7cdbdf 100644
--- a/data/maps/LilycoveCity_House1/map.json
+++ b/data/maps/LilycoveCity_House1/map.json
@@ -28,7 +28,7 @@
"flag": "0"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 4,
"y": 4,
"elevation": 3,
diff --git a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
index 667f44114..eb081dbbb 100644
--- a/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
+++ b/data/maps/MossdeepCity_SpaceCenter_1F/scripts.inc
@@ -247,7 +247,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_Grunt2:: @ 822321F
copyobjectxytoperm LOCALID_STAIR_GRUNT
switch VAR_FACING
case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsWest
- case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast @ BUG: This was meant to be case DIR_EAST
+ #ifdef BUGFIX
+ case DIR_EAST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast
+ #else
+ case DIR_WEST, MossdeepCity_SpaceCenter_1F_EventScript_MoveGruntFromStairsEast
+ #endif
applymovement LOCALID_STAIR_GRUNT, MossdeepCity_SpaceCenter_1F_Movement_MoveGruntFromStairs
waitmovement 0
setvar VAR_MOSSDEEP_SPACE_CENTER_STAIR_GUARD_STATE, 2
diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json
index d2f45e256..dd923a7cd 100644
--- a/data/maps/Route117/map.json
+++ b/data/maps/Route117/map.json
@@ -78,7 +78,7 @@
"flag": "0"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 39,
"y": 4,
"elevation": 3,
diff --git a/data/maps/Route119/map.json b/data/maps/Route119/map.json
index fa6391a34..8d78d1065 100644
--- a/data/maps/Route119/map.json
+++ b/data/maps/Route119/map.json
@@ -468,7 +468,7 @@
"flag": "0"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 31,
"y": 6,
"elevation": 3,
@@ -481,7 +481,7 @@
"flag": "FLAG_HIDE_ROUTE_119_KECLEON_1"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 25,
"y": 15,
"elevation": 3,
diff --git a/data/maps/Route120/map.json b/data/maps/Route120/map.json
index 8a7e56ddc..787f51361 100644
--- a/data/maps/Route120/map.json
+++ b/data/maps/Route120/map.json
@@ -403,7 +403,7 @@
"flag": "FLAG_ITEM_ROUTE_120_HYPER_POTION"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 12,
"y": 16,
"elevation": 4,
@@ -412,8 +412,8 @@
"movement_range_y": 1,
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
- "script": "Route120_EventScript_InvisibleBridgeKecleon",
- "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE"
+ "script": "Route120_EventScript_BridgeKecleon",
+ "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE"
},
{
"graphics_id": "OBJ_EVENT_GFX_STEVEN",
@@ -481,7 +481,7 @@
"flag": "0"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_2",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW",
"x": 12,
"y": 16,
"elevation": 3,
@@ -491,10 +491,10 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "0x0",
- "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE"
+ "flag": "FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_SHADOW"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 20,
"y": 11,
"elevation": 3,
@@ -507,7 +507,7 @@
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_1"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 27,
"y": 2,
"elevation": 3,
@@ -520,7 +520,7 @@
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_2"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 4,
"y": 77,
"elevation": 3,
@@ -533,7 +533,7 @@
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_3"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 7,
"y": 51,
"elevation": 3,
@@ -546,7 +546,7 @@
"flag": "FLAG_HIDE_ROUTE_120_KECLEON_5"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 19,
"y": 48,
"elevation": 3,
diff --git a/data/maps/Route120/scripts.inc b/data/maps/Route120/scripts.inc
index 7ec3e1221..0056acbd7 100644
--- a/data/maps/Route120/scripts.inc
+++ b/data/maps/Route120/scripts.inc
@@ -1,6 +1,6 @@
-.set LOCALID_INVISIBLE_BRIDGE_KECLEON, 30
+.set LOCALID_BRIDGE_KECLEON, 30
.set LOCALID_STEVEN, 31
-.set LOCALID_VISIBLE_BRIDGE_KECLEON, 36
+.set LOCALID_BRIDGE_KECLEON_SHADOW, 36 @ They use a second object which is identical to Kecleon but has a reflection palette tag for the bridge shadow
Route120_MapScripts:: @ 81F53EC
map_script MAP_SCRIPT_ON_RESUME, Route120_OnResume
@@ -31,8 +31,8 @@ Route120_EventScript_RemoveBridgeKecleon:: @ 81F5449
specialvar VAR_RESULT, GetBattleOutcome
compare VAR_RESULT, B_OUTCOME_CAUGHT
goto_if_ne Common_EventScript_NopReturn
- removeobject LOCALID_INVISIBLE_BRIDGE_KECLEON
- removeobject LOCALID_VISIBLE_BRIDGE_KECLEON
+ removeobject LOCALID_BRIDGE_KECLEON
+ removeobject LOCALID_BRIDGE_KECLEON_SHADOW
return
Route120_EventScript_RemoveKecleon:: @ 81F5460
@@ -61,7 +61,7 @@ Route120_EventScript_SetBridgeClearMetatiles:: @ 81F54A3
return
Route120_EventScript_SetBridgeKecleonMovement:: @ 81F54C8
- setobjectmovementtype LOCALID_VISIBLE_BRIDGE_KECLEON, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectmovementtype LOCALID_BRIDGE_KECLEON_SHADOW, MOVEMENT_TYPE_FACE_RIGHT
return
Route120_OnTransition: @ 81F54CD
@@ -205,9 +205,9 @@ Route120_EventScript_StevenBattleKecleon:: @ 81F568B
delay 20
msgbox Route120_Text_StevenUsedDevonScope, MSGBOX_DEFAULT
closemessage
- applymovement LOCALID_INVISIBLE_BRIDGE_KECLEON, Common_Movement_WalkInPlaceFastestRight
+ applymovement LOCALID_BRIDGE_KECLEON, Common_Movement_WalkInPlaceFastestRight
waitmovement 0
- applymovement LOCALID_INVISIBLE_BRIDGE_KECLEON, Movement_KecleonAppears
+ applymovement LOCALID_BRIDGE_KECLEON, Movement_KecleonAppears
waitmovement 0
waitse
playmoncry SPECIES_KECLEON, 2
@@ -230,8 +230,8 @@ Route120_EventScript_StevenBattleKecleon:: @ 81F568B
Route120_EventScript_RemoveBridgeKecleonPostBattle:: @ 81F571C
fadescreenswapbuffers FADE_TO_BLACK
- removeobject LOCALID_INVISIBLE_BRIDGE_KECLEON
- removeobject LOCALID_VISIBLE_BRIDGE_KECLEON
+ removeobject LOCALID_BRIDGE_KECLEON
+ removeobject LOCALID_BRIDGE_KECLEON_SHADOW
fadescreenswapbuffers FADE_FROM_BLACK
goto Route120_EventScript_StevenGiveDeconScope
end
@@ -276,7 +276,7 @@ Route120_Movement_ApproachKecleonWest: @ 81F57B9
walk_left
step_end
-Route120_EventScript_InvisibleBridgeKecleon:: @ 81F57BC
+Route120_EventScript_BridgeKecleon:: @ 81F57BC
msgbox Kecleon_Text_SomethingUnseeable, MSGBOX_NPC
end
diff --git a/data/maps/SootopolisCity_House1/map.json b/data/maps/SootopolisCity_House1/map.json
index 26c47c432..29162b867 100644
--- a/data/maps/SootopolisCity_House1/map.json
+++ b/data/maps/SootopolisCity_House1/map.json
@@ -28,7 +28,7 @@
"flag": "0"
},
{
- "graphics_id": "OBJ_EVENT_GFX_KECLEON_1",
+ "graphics_id": "OBJ_EVENT_GFX_KECLEON",
"x": 2,
"y": 3,
"elevation": 3,
diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md
index 3d294f5cf..285718598 100644
--- a/docs/bugs_and_glitches.md
+++ b/docs/bugs_and_glitches.md
@@ -1,7 +1,7 @@
# Bugs and Glitches
-These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash.
+These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash. Defining the `BUGFIX` preprocessor variable will fix some of these automatically.
Fixes are written in the `diff` format. If you've used Git before, this should look familiar:
@@ -60,7 +60,7 @@ void CB2_InitTitleScreen(void)
SetGpuReg(REG_OFFSET_BLDY, 0);
...
```
-This matches with the code of FR/LG and does what GF originally wanted to do.
+This matches what FRLG does and obtains the seed differently than RS, independently of the RTC.
## Scrolling through items in the bag causes the image to flicker
@@ -95,3 +95,21 @@ Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/p
if (a != -2)
...
```
+
+## Pokémon that have an affine transform as part of their entry animation glitch when going in and out of Poké Balls without a screen transition in between
+
+**Fix:** Edit `sub_817F77C` in [src/pokemon_animation.c](https://github.com/pret/pokeemerald/blob/master/src/pokemon_animation.c#L1028):
+
+```diff
+ ...
+-#ifdef BUGFIX
+ else
+ {
+ // FIX: Reset these back to normal after they were changed so Poké Ball catch/release
+ // animations without a screen transition in between don't break
+ sprite->affineAnimPaused = FALSE;
+ sprite->affineAnims = gUnknown_082FF694;
+ }
+-#endif // BUGFIX
+}
+```
diff --git a/graphics/object_events/palettes/30.pal b/graphics/object_events/palettes/birth_island_stone.pal
index d90c4cb38..d90c4cb38 100644
--- a/graphics/object_events/palettes/30.pal
+++ b/graphics/object_events/palettes/birth_island_stone.pal
diff --git a/graphics/object_events/palettes/08.pal b/graphics/object_events/palettes/brendan.pal
index a83ed903f..a83ed903f 100644
--- a/graphics/object_events/palettes/08.pal
+++ b/graphics/object_events/palettes/brendan.pal
diff --git a/graphics/object_events/palettes/09.pal b/graphics/object_events/palettes/brendan_reflection.pal
index 6a6bf4d12..6a6bf4d12 100644
--- a/graphics/object_events/palettes/09.pal
+++ b/graphics/object_events/palettes/brendan_reflection.pal
diff --git a/graphics/object_events/palettes/10.pal b/graphics/object_events/palettes/bridge_reflection.pal
index 0cebd6c4d..0cebd6c4d 100644
--- a/graphics/object_events/palettes/10.pal
+++ b/graphics/object_events/palettes/bridge_reflection.pal
diff --git a/graphics/object_events/palettes/20.pal b/graphics/object_events/palettes/cable_car.pal
index 64985f6da..64985f6da 100644
--- a/graphics/object_events/palettes/20.pal
+++ b/graphics/object_events/palettes/cable_car.pal
diff --git a/graphics/object_events/palettes/29.pal b/graphics/object_events/palettes/deoxys.pal
index a69caf9df..a69caf9df 100644
--- a/graphics/object_events/palettes/29.pal
+++ b/graphics/object_events/palettes/deoxys.pal
diff --git a/graphics/object_events/palettes/16.pal b/graphics/object_events/palettes/enemy_zigzagoon.pal
index ec3c07f20..ec3c07f20 100644
--- a/graphics/object_events/palettes/16.pal
+++ b/graphics/object_events/palettes/enemy_zigzagoon.pal
diff --git a/graphics/object_events/palettes/24.pal b/graphics/object_events/palettes/groudon.pal
index d710b6830..d710b6830 100644
--- a/graphics/object_events/palettes/24.pal
+++ b/graphics/object_events/palettes/groudon.pal
diff --git a/graphics/object_events/palettes/25.pal b/graphics/object_events/palettes/groudon_reflection.pal
index f48038d41..f48038d41 100644
--- a/graphics/object_events/palettes/25.pal
+++ b/graphics/object_events/palettes/groudon_reflection.pal
diff --git a/graphics/object_events/palettes/31.pal b/graphics/object_events/palettes/ho_oh.pal
index c62e8ce06..c62e8ce06 100644
--- a/graphics/object_events/palettes/31.pal
+++ b/graphics/object_events/palettes/ho_oh.pal
diff --git a/graphics/object_events/palettes/22.pal b/graphics/object_events/palettes/kyogre.pal
index 21fa9999d..21fa9999d 100644
--- a/graphics/object_events/palettes/22.pal
+++ b/graphics/object_events/palettes/kyogre.pal
diff --git a/graphics/object_events/palettes/23.pal b/graphics/object_events/palettes/kyogre_reflection.pal
index 73b0b1d41..73b0b1d41 100644
--- a/graphics/object_events/palettes/23.pal
+++ b/graphics/object_events/palettes/kyogre_reflection.pal
diff --git a/graphics/object_events/palettes/32.pal b/graphics/object_events/palettes/lugia.pal
index e245ba013..e245ba013 100644
--- a/graphics/object_events/palettes/32.pal
+++ b/graphics/object_events/palettes/lugia.pal
diff --git a/graphics/object_events/palettes/17.pal b/graphics/object_events/palettes/may.pal
index 2833b2613..2833b2613 100644
--- a/graphics/object_events/palettes/17.pal
+++ b/graphics/object_events/palettes/may.pal
diff --git a/graphics/object_events/palettes/18.pal b/graphics/object_events/palettes/may_reflection.pal
index 78b1c89b6..78b1c89b6 100644
--- a/graphics/object_events/palettes/18.pal
+++ b/graphics/object_events/palettes/may_reflection.pal
diff --git a/graphics/object_events/palettes/19.pal b/graphics/object_events/palettes/moving_box.pal
index 53de0c383..53de0c383 100644
--- a/graphics/object_events/palettes/19.pal
+++ b/graphics/object_events/palettes/moving_box.pal
diff --git a/graphics/object_events/palettes/00.pal b/graphics/object_events/palettes/npc_1.pal
index 7bb5bd9ed..7bb5bd9ed 100644
--- a/graphics/object_events/palettes/00.pal
+++ b/graphics/object_events/palettes/npc_1.pal
diff --git a/graphics/object_events/palettes/04.pal b/graphics/object_events/palettes/npc_1_reflection.pal
index 82c5ff3a1..82c5ff3a1 100644
--- a/graphics/object_events/palettes/04.pal
+++ b/graphics/object_events/palettes/npc_1_reflection.pal
diff --git a/graphics/object_events/palettes/01.pal b/graphics/object_events/palettes/npc_2.pal
index 558095bda..558095bda 100644
--- a/graphics/object_events/palettes/01.pal
+++ b/graphics/object_events/palettes/npc_2.pal
diff --git a/graphics/object_events/palettes/05.pal b/graphics/object_events/palettes/npc_2_reflection.pal
index 72ae3cefb..72ae3cefb 100644
--- a/graphics/object_events/palettes/05.pal
+++ b/graphics/object_events/palettes/npc_2_reflection.pal
diff --git a/graphics/object_events/palettes/02.pal b/graphics/object_events/palettes/npc_3.pal
index b84930395..b84930395 100644
--- a/graphics/object_events/palettes/02.pal
+++ b/graphics/object_events/palettes/npc_3.pal
diff --git a/graphics/object_events/palettes/06.pal b/graphics/object_events/palettes/npc_3_reflection.pal
index 168a1329d..168a1329d 100644
--- a/graphics/object_events/palettes/06.pal
+++ b/graphics/object_events/palettes/npc_3_reflection.pal
diff --git a/graphics/object_events/palettes/03.pal b/graphics/object_events/palettes/npc_4.pal
index 6c53450ba..6c53450ba 100644
--- a/graphics/object_events/palettes/03.pal
+++ b/graphics/object_events/palettes/npc_4.pal
diff --git a/graphics/object_events/palettes/07.pal b/graphics/object_events/palettes/npc_4_reflection.pal
index 0e604b73c..0e604b73c 100644
--- a/graphics/object_events/palettes/07.pal
+++ b/graphics/object_events/palettes/npc_4_reflection.pal
diff --git a/graphics/object_events/palettes/11.pal b/graphics/object_events/palettes/player_underwater.pal
index b28799ed8..b28799ed8 100644
--- a/graphics/object_events/palettes/11.pal
+++ b/graphics/object_events/palettes/player_underwater.pal
diff --git a/graphics/object_events/palettes/27.pal b/graphics/object_events/palettes/poochyena.pal
index 5ce2f4728..5ce2f4728 100644
--- a/graphics/object_events/palettes/27.pal
+++ b/graphics/object_events/palettes/poochyena.pal
diff --git a/graphics/object_events/palettes/12.pal b/graphics/object_events/palettes/quinty_plump.pal
index b36c29ab1..b36c29ab1 100644
--- a/graphics/object_events/palettes/12.pal
+++ b/graphics/object_events/palettes/quinty_plump.pal
diff --git a/graphics/object_events/palettes/13.pal b/graphics/object_events/palettes/quinty_plump_reflection.pal
index b69e9ac0a..b69e9ac0a 100644
--- a/graphics/object_events/palettes/13.pal
+++ b/graphics/object_events/palettes/quinty_plump_reflection.pal
diff --git a/graphics/object_events/palettes/28.pal b/graphics/object_events/palettes/red_leaf.pal
index eb9930c05..eb9930c05 100644
--- a/graphics/object_events/palettes/28.pal
+++ b/graphics/object_events/palettes/red_leaf.pal
diff --git a/graphics/object_events/palettes/33.pal b/graphics/object_events/palettes/ruby_sapphire_brendan.pal
index e7717d74e..e7717d74e 100644
--- a/graphics/object_events/palettes/33.pal
+++ b/graphics/object_events/palettes/ruby_sapphire_brendan.pal
diff --git a/graphics/object_events/palettes/34.pal b/graphics/object_events/palettes/ruby_sapphire_may.pal
index e106ce693..e106ce693 100644
--- a/graphics/object_events/palettes/34.pal
+++ b/graphics/object_events/palettes/ruby_sapphire_may.pal
diff --git a/graphics/object_events/palettes/21.pal b/graphics/object_events/palettes/ss_tidal.pal
index 5e68e105d..5e68e105d 100644
--- a/graphics/object_events/palettes/21.pal
+++ b/graphics/object_events/palettes/ss_tidal.pal
diff --git a/graphics/object_events/palettes/26.pal b/graphics/object_events/palettes/submarine_shadow.pal
index fe4c1c112..fe4c1c112 100644
--- a/graphics/object_events/palettes/26.pal
+++ b/graphics/object_events/palettes/submarine_shadow.pal
diff --git a/graphics/object_events/palettes/14.pal b/graphics/object_events/palettes/truck.pal
index c53a4d815..c53a4d815 100644
--- a/graphics/object_events/palettes/14.pal
+++ b/graphics/object_events/palettes/truck.pal
diff --git a/graphics/object_events/palettes/15.pal b/graphics/object_events/palettes/vigoroth.pal
index 0026c6f69..0026c6f69 100644
--- a/graphics/object_events/palettes/15.pal
+++ b/graphics/object_events/palettes/vigoroth.pal
diff --git a/graphics/trainers/front_pics/cool_trainer_f_front_pic.png b/graphics/trainers/front_pics/cooltrainer_f_front_pic.png
index 572aa811a..572aa811a 100644
--- a/graphics/trainers/front_pics/cool_trainer_f_front_pic.png
+++ b/graphics/trainers/front_pics/cooltrainer_f_front_pic.png
Binary files differ
diff --git a/graphics/trainers/front_pics/cool_trainer_m_front_pic.png b/graphics/trainers/front_pics/cooltrainer_m_front_pic.png
index 6b998992e..6b998992e 100644
--- a/graphics/trainers/front_pics/cool_trainer_m_front_pic.png
+++ b/graphics/trainers/front_pics/cooltrainer_m_front_pic.png
Binary files differ
diff --git a/graphics/trainers/palettes/cool_trainer_f.pal b/graphics/trainers/palettes/cooltrainer_f.pal
index 292d0fc78..292d0fc78 100644
--- a/graphics/trainers/palettes/cool_trainer_f.pal
+++ b/graphics/trainers/palettes/cooltrainer_f.pal
diff --git a/graphics/trainers/palettes/cool_trainer_m.pal b/graphics/trainers/palettes/cooltrainer_m.pal
index 52a32e925..52a32e925 100644
--- a/graphics/trainers/palettes/cool_trainer_m.pal
+++ b/graphics/trainers/palettes/cooltrainer_m.pal
diff --git a/include/battle.h b/include/battle.h
index 820684a69..53a78024a 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -585,7 +585,11 @@ struct BattleSpriteData
struct MonSpritesGfx
{
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
- void* sprites[4];
+ union
+ {
+ void* ptr[4];
+ u8* byte[4];
+ } sprites;
struct SpriteTemplate templates[4];
struct SpriteFrameImage field_74[4][4];
u8 field_F4[0x80];
diff --git a/include/config.h b/include/config.h
index 4f97a12a3..4c231a84d 100644
--- a/include/config.h
+++ b/include/config.h
@@ -15,9 +15,6 @@
// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you
// would normally use AGBPrint() and AGBPrintf().
-// NOTE: Don't try to enable assert right now as many pointers
-// still exist in defines and WILL likely result in a broken ROM.
-
#define ENGLISH
#ifdef ENGLISH
@@ -26,9 +23,12 @@
#define UNITS_METRIC
#endif
+// Uncomment to fix some identified minor bugs
+//#define BUGFIX
+
// Various undefined behavior bugs may or may not prevent compilation with
// newer compilers. So always fix them when using a modern compiler.
-#if MODERN
+#if MODERN || defined(BUGFIX)
#ifndef UBFIX
#define UBFIX
#endif
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index 1a60714e8..bbe6db81c 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -51,7 +51,7 @@
#define MAX_BATTLE_FRONTIER_POINTS 9999
#define MAX_STREAK 9999
-// These sets of facility ids would be redunant if the order was consistent
+// These sets of facility ids would be redundant if the order was consistent
// The order is important for this set so that all the non-link records can be continuous
#define RANKING_HALL_BATTLE_TOWER_SINGLES 0
#define RANKING_HALL_BATTLE_TOWER_DOUBLES 1
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index ca312e957..8e026ef2d 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -205,7 +205,7 @@
#define OBJ_EVENT_GFX_REGICE 201
#define OBJ_EVENT_GFX_REGISTEEL 202
#define OBJ_EVENT_GFX_SKITTY 203
-#define OBJ_EVENT_GFX_KECLEON_1 204
+#define OBJ_EVENT_GFX_KECLEON 204
#define OBJ_EVENT_GFX_KYOGRE_2 205
#define OBJ_EVENT_GFX_GROUDON_2 206
#define OBJ_EVENT_GFX_RAYQUAZA_2 207
@@ -213,7 +213,7 @@
#define OBJ_EVENT_GFX_PIKACHU 209
#define OBJ_EVENT_GFX_AZUMARILL 210
#define OBJ_EVENT_GFX_WINGULL 211
-#define OBJ_EVENT_GFX_KECLEON_2 212
+#define OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW 212
#define OBJ_EVENT_GFX_TUBER_M_SWIMMING 213
#define OBJ_EVENT_GFX_AZURILL 214
#define OBJ_EVENT_GFX_MOM 215
diff --git a/include/constants/flags.h b/include/constants/flags.h
index a562b0670..9be269105 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1012,7 +1012,7 @@
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_STEVEN 0x3C7
#define FLAG_HIDE_MOSSDEEP_CITY_STEVENS_HOUSE_BELDUM_POKEBALL 0x3C8
#define FLAG_HIDE_FORTREE_CITY_KECLEON 0x3C9
-#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_INVISIBLE 0x3CA
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE 0x3CA
#define FLAG_HIDE_LILYCOVE_CITY_RIVAL 0x3CB
#define FLAG_HIDE_ROUTE_120_STEVEN 0x3CC
#define FLAG_HIDE_SOOTOPOLIS_CITY_STEVEN 0x3CD
@@ -1023,7 +1023,7 @@
#define FLAG_HIDE_AQUA_HIDEOUT_B1F_ELECTRODE_2 0x3D2
#define FLAG_HIDE_OLDALE_TOWN_RIVAL 0x3D3
#define FLAG_HIDE_UNDERWATER_SEA_FLOOR_CAVERN_STOLEN_SUBMARINE 0x3D4
-#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_VISIBLE 0x3D5
+#define FLAG_HIDE_ROUTE_120_KECLEON_BRIDGE_SHADOW 0x3D5
#define FLAG_HIDE_ROUTE_120_KECLEON_1 0x3D6
#define FLAG_HIDE_RUSTURF_TUNNEL_WANDA 0x3D7
#define FLAG_HIDE_VERDANTURF_TOWN_WANDAS_HOUSE_WANDA 0x3D8
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index 4cf0bd4f0..bac914fec 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -241,10 +241,10 @@
// Battle move flags
#define FLAG_MAKES_CONTACT (1 << 0)
#define FLAG_PROTECT_AFFECTED (1 << 1)
-#define FLAG_MAGICCOAT_AFFECTED (1 << 2)
+#define FLAG_MAGIC_COAT_AFFECTED (1 << 2)
#define FLAG_SNATCH_AFFECTED (1 << 3)
#define FLAG_MIRROR_MOVE_AFFECTED (1 << 4)
-#define FLAG_KINGSROCK_AFFECTED (1 << 5)
+#define FLAG_KINGS_ROCK_AFFECTED (1 << 5)
// Growth rates
#define GROWTH_MEDIUM_FAST 0
diff --git a/include/constants/species.h b/include/constants/species.h
index 8fa5cf77b..983e1a796 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -417,36 +417,36 @@
#define SPECIES_CHIMECHO 411
#define SPECIES_EGG 412
-#define SPECIES_UNOWN_B 413
-#define SPECIES_UNOWN_C 414
-#define SPECIES_UNOWN_D 415
-#define SPECIES_UNOWN_E 416
-#define SPECIES_UNOWN_F 417
-#define SPECIES_UNOWN_G 418
-#define SPECIES_UNOWN_H 419
-#define SPECIES_UNOWN_I 420
-#define SPECIES_UNOWN_J 421
-#define SPECIES_UNOWN_K 422
-#define SPECIES_UNOWN_L 423
-#define SPECIES_UNOWN_M 424
-#define SPECIES_UNOWN_N 425
-#define SPECIES_UNOWN_O 426
-#define SPECIES_UNOWN_P 427
-#define SPECIES_UNOWN_Q 428
-#define SPECIES_UNOWN_R 429
-#define SPECIES_UNOWN_S 430
-#define SPECIES_UNOWN_T 431
-#define SPECIES_UNOWN_U 432
-#define SPECIES_UNOWN_V 433
-#define SPECIES_UNOWN_W 434
-#define SPECIES_UNOWN_X 435
-#define SPECIES_UNOWN_Y 436
-#define SPECIES_UNOWN_Z 437
-#define SPECIES_UNOWN_EMARK 438
-#define SPECIES_UNOWN_QMARK 439
-
#define NUM_SPECIES SPECIES_EGG
+#define SPECIES_UNOWN_B (NUM_SPECIES + 1)
+#define SPECIES_UNOWN_C (SPECIES_UNOWN_B + 1)
+#define SPECIES_UNOWN_D (SPECIES_UNOWN_B + 2)
+#define SPECIES_UNOWN_E (SPECIES_UNOWN_B + 3)
+#define SPECIES_UNOWN_F (SPECIES_UNOWN_B + 4)
+#define SPECIES_UNOWN_G (SPECIES_UNOWN_B + 5)
+#define SPECIES_UNOWN_H (SPECIES_UNOWN_B + 6)
+#define SPECIES_UNOWN_I (SPECIES_UNOWN_B + 7)
+#define SPECIES_UNOWN_J (SPECIES_UNOWN_B + 8)
+#define SPECIES_UNOWN_K (SPECIES_UNOWN_B + 9)
+#define SPECIES_UNOWN_L (SPECIES_UNOWN_B + 10)
+#define SPECIES_UNOWN_M (SPECIES_UNOWN_B + 11)
+#define SPECIES_UNOWN_N (SPECIES_UNOWN_B + 12)
+#define SPECIES_UNOWN_O (SPECIES_UNOWN_B + 13)
+#define SPECIES_UNOWN_P (SPECIES_UNOWN_B + 14)
+#define SPECIES_UNOWN_Q (SPECIES_UNOWN_B + 15)
+#define SPECIES_UNOWN_R (SPECIES_UNOWN_B + 16)
+#define SPECIES_UNOWN_S (SPECIES_UNOWN_B + 17)
+#define SPECIES_UNOWN_T (SPECIES_UNOWN_B + 18)
+#define SPECIES_UNOWN_U (SPECIES_UNOWN_B + 19)
+#define SPECIES_UNOWN_V (SPECIES_UNOWN_B + 20)
+#define SPECIES_UNOWN_W (SPECIES_UNOWN_B + 21)
+#define SPECIES_UNOWN_X (SPECIES_UNOWN_B + 22)
+#define SPECIES_UNOWN_Y (SPECIES_UNOWN_B + 23)
+#define SPECIES_UNOWN_Z (SPECIES_UNOWN_B + 24)
+#define SPECIES_UNOWN_EMARK (SPECIES_UNOWN_B + 25)
+#define SPECIES_UNOWN_QMARK (SPECIES_UNOWN_B + 26)
+
// National Dex Index Defines
#define NATIONAL_DEX_NONE 0
@@ -845,31 +845,31 @@
#define NATIONAL_DEX_COUNT NATIONAL_DEX_DEOXYS
-#define NATIONAL_DEX_OLD_UNOWN_B 387
-#define NATIONAL_DEX_OLD_UNOWN_C 388
-#define NATIONAL_DEX_OLD_UNOWN_D 389
-#define NATIONAL_DEX_OLD_UNOWN_E 390
-#define NATIONAL_DEX_OLD_UNOWN_F 391
-#define NATIONAL_DEX_OLD_UNOWN_G 392
-#define NATIONAL_DEX_OLD_UNOWN_H 393
-#define NATIONAL_DEX_OLD_UNOWN_I 394
-#define NATIONAL_DEX_OLD_UNOWN_J 395
-#define NATIONAL_DEX_OLD_UNOWN_K 396
-#define NATIONAL_DEX_OLD_UNOWN_L 397
-#define NATIONAL_DEX_OLD_UNOWN_M 398
-#define NATIONAL_DEX_OLD_UNOWN_N 399
-#define NATIONAL_DEX_OLD_UNOWN_O 400
-#define NATIONAL_DEX_OLD_UNOWN_P 401
-#define NATIONAL_DEX_OLD_UNOWN_Q 402
-#define NATIONAL_DEX_OLD_UNOWN_R 403
-#define NATIONAL_DEX_OLD_UNOWN_S 404
-#define NATIONAL_DEX_OLD_UNOWN_T 405
-#define NATIONAL_DEX_OLD_UNOWN_U 406
-#define NATIONAL_DEX_OLD_UNOWN_V 407
-#define NATIONAL_DEX_OLD_UNOWN_W 408
-#define NATIONAL_DEX_OLD_UNOWN_X 409
-#define NATIONAL_DEX_OLD_UNOWN_Y 410
-#define NATIONAL_DEX_OLD_UNOWN_Z 411
+#define NATIONAL_DEX_OLD_UNOWN_B (NATIONAL_DEX_COUNT + 1)
+#define NATIONAL_DEX_OLD_UNOWN_C (NATIONAL_DEX_OLD_UNOWN_B + 1)
+#define NATIONAL_DEX_OLD_UNOWN_D (NATIONAL_DEX_OLD_UNOWN_B + 2)
+#define NATIONAL_DEX_OLD_UNOWN_E (NATIONAL_DEX_OLD_UNOWN_B + 3)
+#define NATIONAL_DEX_OLD_UNOWN_F (NATIONAL_DEX_OLD_UNOWN_B + 4)
+#define NATIONAL_DEX_OLD_UNOWN_G (NATIONAL_DEX_OLD_UNOWN_B + 5)
+#define NATIONAL_DEX_OLD_UNOWN_H (NATIONAL_DEX_OLD_UNOWN_B + 6)
+#define NATIONAL_DEX_OLD_UNOWN_I (NATIONAL_DEX_OLD_UNOWN_B + 7)
+#define NATIONAL_DEX_OLD_UNOWN_J (NATIONAL_DEX_OLD_UNOWN_B + 8)
+#define NATIONAL_DEX_OLD_UNOWN_K (NATIONAL_DEX_OLD_UNOWN_B + 9)
+#define NATIONAL_DEX_OLD_UNOWN_L (NATIONAL_DEX_OLD_UNOWN_B + 10)
+#define NATIONAL_DEX_OLD_UNOWN_M (NATIONAL_DEX_OLD_UNOWN_B + 11)
+#define NATIONAL_DEX_OLD_UNOWN_N (NATIONAL_DEX_OLD_UNOWN_B + 12)
+#define NATIONAL_DEX_OLD_UNOWN_O (NATIONAL_DEX_OLD_UNOWN_B + 13)
+#define NATIONAL_DEX_OLD_UNOWN_P (NATIONAL_DEX_OLD_UNOWN_B + 14)
+#define NATIONAL_DEX_OLD_UNOWN_Q (NATIONAL_DEX_OLD_UNOWN_B + 15)
+#define NATIONAL_DEX_OLD_UNOWN_R (NATIONAL_DEX_OLD_UNOWN_B + 16)
+#define NATIONAL_DEX_OLD_UNOWN_S (NATIONAL_DEX_OLD_UNOWN_B + 17)
+#define NATIONAL_DEX_OLD_UNOWN_T (NATIONAL_DEX_OLD_UNOWN_B + 18)
+#define NATIONAL_DEX_OLD_UNOWN_U (NATIONAL_DEX_OLD_UNOWN_B + 19)
+#define NATIONAL_DEX_OLD_UNOWN_V (NATIONAL_DEX_OLD_UNOWN_B + 20)
+#define NATIONAL_DEX_OLD_UNOWN_W (NATIONAL_DEX_OLD_UNOWN_B + 21)
+#define NATIONAL_DEX_OLD_UNOWN_X (NATIONAL_DEX_OLD_UNOWN_B + 22)
+#define NATIONAL_DEX_OLD_UNOWN_Y (NATIONAL_DEX_OLD_UNOWN_B + 23)
+#define NATIONAL_DEX_OLD_UNOWN_Z (NATIONAL_DEX_OLD_UNOWN_B + 24)
// Hoenn Dex Index Defines
@@ -1264,30 +1264,30 @@
#define HOENN_DEX_HO_OH 385
#define HOENN_DEX_CELEBI 386
-#define HOENN_DEX_OLD_UNOWN_B 387
-#define HOENN_DEX_OLD_UNOWN_C 388
-#define HOENN_DEX_OLD_UNOWN_D 389
-#define HOENN_DEX_OLD_UNOWN_E 390
-#define HOENN_DEX_OLD_UNOWN_F 391
-#define HOENN_DEX_OLD_UNOWN_G 392
-#define HOENN_DEX_OLD_UNOWN_H 393
-#define HOENN_DEX_OLD_UNOWN_I 394
-#define HOENN_DEX_OLD_UNOWN_J 395
-#define HOENN_DEX_OLD_UNOWN_K 396
-#define HOENN_DEX_OLD_UNOWN_L 397
-#define HOENN_DEX_OLD_UNOWN_M 398
-#define HOENN_DEX_OLD_UNOWN_N 399
-#define HOENN_DEX_OLD_UNOWN_O 400
-#define HOENN_DEX_OLD_UNOWN_P 401
-#define HOENN_DEX_OLD_UNOWN_Q 402
-#define HOENN_DEX_OLD_UNOWN_R 403
-#define HOENN_DEX_OLD_UNOWN_S 404
-#define HOENN_DEX_OLD_UNOWN_T 405
-#define HOENN_DEX_OLD_UNOWN_U 406
-#define HOENN_DEX_OLD_UNOWN_V 407
-#define HOENN_DEX_OLD_UNOWN_W 408
-#define HOENN_DEX_OLD_UNOWN_X 409
-#define HOENN_DEX_OLD_UNOWN_Y 410
-#define HOENN_DEX_OLD_UNOWN_Z 411
+#define HOENN_DEX_OLD_UNOWN_B (HOENN_DEX_CELEBI + 1)
+#define HOENN_DEX_OLD_UNOWN_C (HOENN_DEX_OLD_UNOWN_B + 1)
+#define HOENN_DEX_OLD_UNOWN_D (HOENN_DEX_OLD_UNOWN_B + 2)
+#define HOENN_DEX_OLD_UNOWN_E (HOENN_DEX_OLD_UNOWN_B + 3)
+#define HOENN_DEX_OLD_UNOWN_F (HOENN_DEX_OLD_UNOWN_B + 4)
+#define HOENN_DEX_OLD_UNOWN_G (HOENN_DEX_OLD_UNOWN_B + 5)
+#define HOENN_DEX_OLD_UNOWN_H (HOENN_DEX_OLD_UNOWN_B + 6)
+#define HOENN_DEX_OLD_UNOWN_I (HOENN_DEX_OLD_UNOWN_B + 7)
+#define HOENN_DEX_OLD_UNOWN_J (HOENN_DEX_OLD_UNOWN_B + 8)
+#define HOENN_DEX_OLD_UNOWN_K (HOENN_DEX_OLD_UNOWN_B + 9)
+#define HOENN_DEX_OLD_UNOWN_L (HOENN_DEX_OLD_UNOWN_B + 10)
+#define HOENN_DEX_OLD_UNOWN_M (HOENN_DEX_OLD_UNOWN_B + 11)
+#define HOENN_DEX_OLD_UNOWN_N (HOENN_DEX_OLD_UNOWN_B + 12)
+#define HOENN_DEX_OLD_UNOWN_O (HOENN_DEX_OLD_UNOWN_B + 13)
+#define HOENN_DEX_OLD_UNOWN_P (HOENN_DEX_OLD_UNOWN_B + 14)
+#define HOENN_DEX_OLD_UNOWN_Q (HOENN_DEX_OLD_UNOWN_B + 15)
+#define HOENN_DEX_OLD_UNOWN_R (HOENN_DEX_OLD_UNOWN_B + 16)
+#define HOENN_DEX_OLD_UNOWN_S (HOENN_DEX_OLD_UNOWN_B + 17)
+#define HOENN_DEX_OLD_UNOWN_T (HOENN_DEX_OLD_UNOWN_B + 18)
+#define HOENN_DEX_OLD_UNOWN_U (HOENN_DEX_OLD_UNOWN_B + 19)
+#define HOENN_DEX_OLD_UNOWN_V (HOENN_DEX_OLD_UNOWN_B + 20)
+#define HOENN_DEX_OLD_UNOWN_W (HOENN_DEX_OLD_UNOWN_B + 21)
+#define HOENN_DEX_OLD_UNOWN_X (HOENN_DEX_OLD_UNOWN_B + 22)
+#define HOENN_DEX_OLD_UNOWN_Y (HOENN_DEX_OLD_UNOWN_B + 23)
+#define HOENN_DEX_OLD_UNOWN_Z (HOENN_DEX_OLD_UNOWN_B + 24)
#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index e2836c6f6..2d0e1bb1c 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -67,52 +67,69 @@ struct ToneData
u8 release;
};
+#define SOUND_CHANNEL_SF_START 0x80
+#define SOUND_CHANNEL_SF_STOP 0x40
+#define SOUND_CHANNEL_SF_LOOP 0x10
+#define SOUND_CHANNEL_SF_IEC 0x04
+#define SOUND_CHANNEL_SF_ENV 0x03
+#define SOUND_CHANNEL_SF_ENV_ATTACK 0x03
+#define SOUND_CHANNEL_SF_ENV_DECAY 0x02
+#define SOUND_CHANNEL_SF_ENV_SUSTAIN 0x01
+#define SOUND_CHANNEL_SF_ENV_RELEASE 0x00
+#define SOUND_CHANNEL_SF_ON (SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_STOP | SOUND_CHANNEL_SF_IEC | SOUND_CHANNEL_SF_ENV)
+
+#define CGB_CHANNEL_MO_PIT 0x02
+#define CGB_CHANNEL_MO_VOL 0x01
+
+#define CGB_NRx2_ENV_DIR_DEC 0x00
+#define CGB_NRx2_ENV_DIR_INC 0x08
+
struct CgbChannel
{
- u8 sf; // 0x0
- u8 ty; // 0x1
- u8 rightVolume; // 0x2
- u8 leftVolume; // 0x3
- u8 at; // 0x4
- u8 de; // 0x5
- u8 su; // 0x6
- u8 re; // 0x7
- u8 ky; // 0x8
- u8 ev; // 0x9
- u8 eg; // 0xA
- u8 ec; // 0xB
- u8 echoVolume; // 0xC
- u8 echoLength; // 0xD
- u8 d1; // 0xE
- u8 d2; // 0xF
- u8 gt; // 0x10
- u8 mk; // 0x11
- u8 ve; // 0x12
- u8 pr; // 0x13
- u8 rp; // 0x14
- u8 d3[3]; // 0x15, 0x16, 0x17
- u8 d5; // 0x18
- u8 sg; // 0x19
- u8 n4; // 0x1A
- u8 pan; // 0x1B
- u8 panMask; // 0x1C
- u8 mo; // 0x1D
- u8 le; // 0x1E
- u8 sw; // 0x1F
- u32 fr; // 0x20
- u32 *wp;
- u32 cp;
- u32 tp;
- u32 pp;
- u32 np;
- u8 d4[8];
+ u8 statusFlags;
+ u8 type;
+ u8 rightVolume;
+ u8 leftVolume;
+ u8 attack;
+ u8 decay;
+ u8 sustain;
+ u8 release;
+ u8 key;
+ u8 envelopeVolume;
+ u8 envelopeGoal;
+ u8 envelopeCounter;
+ u8 pseudoEchoVolume;
+ u8 pseudoEchoLength;
+ u8 dummy1;
+ u8 dummy2;
+ u8 gateTime;
+ u8 midiKey;
+ u8 velocity;
+ u8 priority;
+ u8 rhythmPan;
+ u8 dummy3[3];
+ u8 dummy5;
+ u8 sustainGoal;
+ u8 n4; // NR[1-4]4 register (initial, length bit)
+ u8 pan;
+ u8 panMask;
+ u8 modify;
+ u8 length;
+ u8 sweep;
+ u32 frequency;
+ u32 *wavePointer; // instructs CgbMain to load targeted wave
+ u32 *currentPointer; // stores the currently loaded wave
+ struct MusicPlayerTrack *track;
+ void *prevChannelPointer;
+ void *nextChannelPointer;
+ u8 dummy4[8];
};
struct MusicPlayerTrack;
struct SoundChannel
{
- u8 status;
+ u8 statusFlags;
u8 type;
u8 rightVolume;
u8 leftVolume;
@@ -120,29 +137,29 @@ struct SoundChannel
u8 decay;
u8 sustain;
u8 release;
- u8 ky;
- u8 ev;
- u8 er;
- u8 el;
- u8 echoVolume;
- u8 echoLength;
- u8 d1;
- u8 d2;
- u8 gt;
- u8 mk;
- u8 ve;
- u8 pr;
- u8 rp;
- u8 d3[3];
- u32 ct;
+ u8 key; // midi key as it was translated into final pitch
+ u8 envelopeVolume;
+ u8 envelopeVolumeRight;
+ u8 envelopeVolumeLeft;
+ u8 pseudoEchoVolume;
+ u8 pseudoEchoLength;
+ u8 dummy1;
+ u8 dummy2;
+ u8 gateTime;
+ u8 midiKey; // midi key as it was used in the track data
+ u8 velocity;
+ u8 priority;
+ u8 rhythmPan;
+ u8 dummy3[3];
+ u32 count;
u32 fw;
- u32 freq;
+ u32 frequency;
struct WaveData *wav;
- u32 cp;
+ s8 *currentPointer;
struct MusicPlayerTrack *track;
- u32 pp;
- u32 np;
- u32 d4;
+ void *prevChannelPointer;
+ void *nextChannelPointer;
+ u32 dummy4;
u16 xpi;
u16 xpc;
};
@@ -151,6 +168,16 @@ struct SoundChannel
#define PCM_DMA_BUF_SIZE 1584 // size of Direct Sound buffer
+struct MusicPlayerInfo;
+
+typedef void (*MPlayFunc)();
+typedef void (*PlyNoteFunc)(u32, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
+typedef void (*CgbSoundFunc)(void);
+typedef void (*CgbOscOffFunc)(u8);
+typedef u32 (*MidiKeyToCgbFreqFunc)(u8, u8, u8);
+typedef void (*ExtVolPitFunc)(void);
+typedef void (*MPlayMainFunc)(struct MusicPlayerInfo *);
+
struct SoundInfo
{
// This field is normally equal to ID_NUMBER but it is set to other
@@ -168,7 +195,7 @@ struct SoundInfo
u8 freq;
u8 mode;
- u8 c15;
+ u8 c15; // periodically counts from 14 down to 0 (15 states)
u8 pcmDmaPeriod; // number of V-blanks per PCM DMA
u8 maxLines;
u8 gap[3];
@@ -176,14 +203,14 @@ struct SoundInfo
s32 pcmFreq;
s32 divFreq;
struct CgbChannel *cgbChans;
- u32 func;
- u32 intp;
- void (*CgbSound)(void);
- void (*CgbOscOff)(u8);
- u32 (*MidiKeyToCgbFreq)(u8, u8, u8);
- u32 MPlayJumpTable;
- u32 plynote;
- u32 ExtVolPit;
+ MPlayMainFunc MPlayMainHead;
+ struct MusicPlayerInfo *musicPlayerHead;
+ CgbSoundFunc CgbSound;
+ CgbOscOffFunc CgbOscOff;
+ MidiKeyToCgbFreqFunc MidiKeyToCgbFreq;
+ MPlayFunc *MPlayJumpTable;
+ PlyNoteFunc plynote;
+ ExtVolPitFunc ExtVolPit;
u8 gap2[16];
struct SoundChannel chans[MAX_DIRECTSOUND_CHANNELS];
s8 pcmBuffer[PCM_DMA_BUF_SIZE * 2];
@@ -270,8 +297,8 @@ struct MusicPlayerTrack
u8 lfoDelay;
u8 lfoDelayC;
u8 priority;
- u8 echoVolume;
- u8 echoLength;
+ u8 pseudoEchoVolume;
+ u8 pseudoEchoLength;
struct SoundChannel *chan;
struct ToneData tone;
u8 gap[10];
@@ -312,8 +339,8 @@ struct MusicPlayerInfo
struct MusicPlayerTrack *tracks;
struct ToneData *tone;
u32 ident;
- u32 func;
- u32 intp;
+ MPlayMainFunc MPlayMainNext;
+ struct MusicPlayerInfo *musicPlayerNext;
};
struct MusicPlayer
@@ -351,7 +378,7 @@ extern struct MusicPlayerTrack gPokemonCryTracks[];
extern char SoundMainRAM[];
-extern void *gMPlayJumpTable[];
+extern MPlayFunc gMPlayJumpTable[];
typedef void (*XcmdFunc)(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
extern const XcmdFunc gXcmdTable[];
@@ -380,7 +407,7 @@ u32 umul3232H32(u32 multiplier, u32 multiplicand);
void SoundMain(void);
void SoundMainBTM(void);
void TrackStop(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track);
-void MPlayMain(void);
+void MPlayMain(struct MusicPlayerInfo *);
void RealClearChain(void *x);
void MPlayContinue(struct MusicPlayerInfo *mplayInfo);
@@ -400,7 +427,7 @@ void CgbOscOff(u8);
void CgbModVol(struct CgbChannel *chan);
u32 MidiKeyToCgbFreq(u8, u8, u8);
void DummyFunc(void);
-void MPlayJumpTableCopy(void **mplayJumpTable);
+void MPlayJumpTableCopy(MPlayFunc *mplayJumpTable);
void SampleFreqSet(u32 freq);
void m4aSoundVSyncOn(void);
void m4aSoundVSyncOff(void);
@@ -448,7 +475,7 @@ void ply_tune(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_port(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_xcmd(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
void ply_endtie(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
-void ply_note(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
+void ply_note(u32 note_cmd, struct MusicPlayerInfo *, struct MusicPlayerTrack *);
// extended sound command handler functions
void ply_xxx(struct MusicPlayerInfo *, struct MusicPlayerTrack *);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 4598e87fa..c4d7be35d 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -195,15 +195,10 @@ struct ObjectEvent
/*0x0C*/ struct Coords16 initialCoords;
/*0x10*/ struct Coords16 currentCoords;
/*0x14*/ struct Coords16 previousCoords;
- /*0x18*/ u8 facingDirection:4; // current direction?
- /*0x18*/ u8 movementDirection:4;
- /*0x19*/ union __attribute__((packed)) {
- u8 as_byte;
- struct __attribute__((packed)) {
- u8 x:4;
- u8 y:4;
- } ALIGNED(1) as_nybbles;
- } ALIGNED(1) range;
+ /*0x18*/ u16 facingDirection:4; // current direction?
+ u16 movementDirection:4;
+ u16 rangeX:4;
+ u16 rangeY:4;
/*0x1A*/ u8 fieldEffectSpriteId;
/*0x1B*/ u8 warpArrowSpriteId;
/*0x1C*/ u8 movementActionId;
@@ -219,8 +214,8 @@ struct ObjectEvent
struct ObjectEventGraphicsInfo
{
/*0x00*/ u16 tileTag;
- /*0x02*/ u16 paletteTag1;
- /*0x04*/ u16 paletteTag2;
+ /*0x02*/ u16 paletteTag;
+ /*0x04*/ u16 reflectionPaletteTag;
/*0x06*/ u16 size;
/*0x08*/ s16 width;
/*0x0A*/ s16 height;
diff --git a/include/global.h b/include/global.h
index 85166e0ec..4ccd2be50 100644
--- a/include/global.h
+++ b/include/global.h
@@ -328,11 +328,12 @@ struct BattleDomeTrainer
};
#define DOME_TOURNAMENT_TRAINERS_COUNT 16
+#define BATTLE_TOWER_RECORD_COUNT 5
struct BattleFrontier
{
/*0x64C*/ struct EmeraldBattleTowerRecord towerPlayer;
- /*0x738*/ struct EmeraldBattleTowerRecord towerRecords[5]; // From record mixing.
+ /*0x738*/ struct EmeraldBattleTowerRecord towerRecords[BATTLE_TOWER_RECORD_COUNT]; // From record mixing.
/*0xBEB*/ struct BattleTowerInterview towerInterview;
/*0xBEC*/ struct BattleTowerEReaderTrainer ereaderTrainer;
/*0xCA8*/ u8 challengeStatus;
diff --git a/include/graphics.h b/include/graphics.h
index 32268d6db..936f95aa8 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -5014,4 +5014,10 @@ extern const u16 gPokenavMessageBox_Pal[];
extern const u32 gPokenavOptions_Gfx[];
extern const u16 gPokenavOptions_Pal[];
+// Object event pals
+extern const u16 gObjectEventPal_Brendan[];
+extern const u16 gObjectEventPal_May[];
+extern const u16 gObjectEventPal_RubySapphireBrendan[];
+extern const u16 gObjectEventPal_RubySapphireMay[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 4185f8017..b7679429c 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -450,7 +450,16 @@ static u8 ChooseMoveOrAction_Doubles(void)
{
s32 i;
s32 j;
+#ifndef BUGFIX
s32 scriptsToRun;
+#else
+ // the value assigned to this is a u32 (aiFlags)
+ // this becomes relevant because aiFlags can have bit 31 set
+ // and scriptsToRun is shifted
+ // this never happens in the vanilla game because bit 31 is
+ // only set when it's the first battle
+ u32 scriptsToRun;
+#endif
s16 bestMovePointsForTarget[MAX_BATTLERS_COUNT];
s8 mostViableTargetsArray[MAX_BATTLERS_COUNT];
u8 actionOrMoveIndex[MAX_BATTLERS_COUNT];
@@ -615,8 +624,8 @@ static void RecordLastUsedMoveByTarget(void)
{
if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget])
break;
- if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] != gLastMoves[gBattlerTarget] // HACK: This redundant condition is a hack to make the asm match.
- && BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == MOVE_NONE)
+
+ if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == MOVE_NONE)
{
BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] = gLastMoves[gBattlerTarget];
break;
@@ -1604,8 +1613,10 @@ static void Cmd_if_status_not_in_party(void)
if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
{
- gAIScriptPtr += 10; // UB: Still bugged in Emerald. Uncomment the return statement to fix.
- // return;
+ gAIScriptPtr += 10;
+ #ifdef UBFIX
+ return;
+ #endif
}
}
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index f57e2a4fc..9e50a8477 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -2290,7 +2290,7 @@ void AnimTask_TransformMon(u8 taskId)
else
position = GetBattlerPosition(gBattleAnimAttacker);
- src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
+ src = gMonSpritesGfxPtr->sprites.ptr[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
dest = animBg.bgTiles;
CpuCopy32(src, dest, 0x800);
LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset);
diff --git a/src/battle_dome.c b/src/battle_dome.c
index ce2f3cde6..0d1bee8cf 100644
--- a/src/battle_dome.c
+++ b/src/battle_dome.c
@@ -863,7 +863,9 @@ static const struct WindowTemplate sInfoCardWindowTemplates[] =
.paletteNum = 15,
.baseBlock = 372,
},
- // UB: No DUMMY_WIN_TEMPLATE at the array's end.
+ #ifdef UBFIX
+ DUMMY_WIN_TEMPLATE,
+ #endif
};
static const struct ScanlineEffectParams sTourneyTreeScanlineEffectParams =
@@ -2526,7 +2528,11 @@ static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tou
{
int i;
u8 friendship = MAX_FRIENDSHIP;
- u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Should be using (DOME_TRAINERS[tournamentTrainerId].trainerId) instead of (tournamentTrainerId). As a result, all Pokemon have ivs of 3.
+ #ifdef BUGFIX
+ u8 fixedIv = GetDomeTrainerMonIvs(DOME_TRAINERS[tournamentTrainerId].trainerId);
+ #else
+ u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokemon have ivs of 3.
+ #endif
u8 level = SetFacilityPtrsGetLevel();
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId],
gFacilityTrainerMons[DOME_MONS[tournamentTrainerId][tournamentMonId]].species,
@@ -5964,6 +5970,10 @@ static void DecideRoundWinners(u8 roundId)
else if (tournamentId2 != 0xFF)
{
// BUG: points1 and points2 are not cleared at the beginning of the loop resulting in not fair results.
+ #ifdef BUGFIX
+ points1 = 0;
+ points2 = 0;
+ #endif
// Calculate points for both trainers.
for (monId1 = 0; monId1 < FRONTIER_PARTY_SIZE; monId1++)
diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c
index c10bbc5e4..ba1e39006 100644
--- a/src/battle_factory_screen.c
+++ b/src/battle_factory_screen.c
@@ -3905,7 +3905,11 @@ static void Swap_ShowSummaryMonSprite(void)
personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
otId = GetMonData(mon, MON_DATA_OT_ID, NULL);
- sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF); // BUG: otId and personality should be switched.
+ #ifdef BUGFIX
+ sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, otId, personality, TRUE, 88, 32, 15, 0xFFFF);
+ #else
+ sFactorySwapScreen->unk2C.field0 = CreateMonPicSprite_HandleDeoxys(species, personality, otId, TRUE, 88, 32, 15, 0xFFFF);
+ #endif
gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecX = 0;
gSprites[sFactorySwapScreen->unk2C.field0].centerToCornerVecY = 0;
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 41cffec3d..c6db4ad42 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -6,6 +6,7 @@
#include "constants/battle_anim.h"
#include "battle_interface.h"
#include "main.h"
+#include "dma3.h"
#include "malloc.h"
#include "graphics.h"
#include "random.h"
@@ -567,7 +568,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
otId = GetMonData(mon, MON_DATA_OT_ID);
position = GetBattlerPosition(battlerId);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
species, currentPersonality);
paletteOffset = 0x100 + battlerId * 16;
@@ -623,13 +624,13 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (sub_80688F8(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
species, currentPersonality);
}
else
{
HandleLoadSpecialPokePic(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
species, currentPersonality);
}
@@ -671,7 +672,7 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId)
{
u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerFrontPicTable[frontPicId],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
SPECIES_NONE);
LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[frontPicId]);
}
@@ -680,7 +681,7 @@ void DecompressTrainerBackPic(u16 backPicId, u8 battlerId)
{
u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerBackPicTable[backPicId],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
SPECIES_NONE);
LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data,
0x100 + 16 * battlerId, 0x20);
@@ -920,7 +921,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
otId = gContestResources->moveAnim->otId;
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[0],
+ gMonSpritesGfxPtr->sprites.ptr[0],
targetSpecies,
gContestResources->moveAnim->targetPersonality);
}
@@ -939,7 +940,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
targetSpecies,
gTransformedPersonalities[battlerAtk]);
}
@@ -949,14 +950,14 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[position],
+ gMonSpritesGfxPtr->sprites.ptr[position],
targetSpecies,
gTransformedPersonalities[battlerAtk]);
}
}
- src = gMonSpritesGfxPtr->sprites[position];
- dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
+ src = gMonSpritesGfxPtr->sprites.ptr[position];
+ dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
paletteOffset = 0x100 + battlerAtk * 16;
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
@@ -996,18 +997,15 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
position = GetBattlerPosition(battlerId);
if (IsContest())
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]);
else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
- LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]);
+ LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites.ptr[position]);
else
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites.ptr[position]);
for (i = 1; i < 4; i++)
{
- u8 (*ptr)[4][0x800] = gMonSpritesGfxPtr->sprites[position];
- ptr++;ptr--; // Needed to match.
-
- DmaCopy32Defvars(3, (*ptr)[0], (*ptr)[i], 0x800);
+ Dma3CopyLarge32_(gMonSpritesGfxPtr->sprites.ptr[position], &gMonSpritesGfxPtr->sprites.byte[position][0x800 * i], 0x800);
}
palOffset = (battlerId * 16) + 0x100;
@@ -1247,12 +1245,12 @@ void AllocateMonSpritesGfx(void)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
+ gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
*(gMonSpritesGfxPtr->templates + i) = gUnknown_08329D98[i];
for (j = 0; j < 4; j++)
{
- gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800);
+ gMonSpritesGfxPtr->field_74[i][j].data = gMonSpritesGfxPtr->sprites.ptr[i] + (j * 0x800);
gMonSpritesGfxPtr->field_74[i][j].size = 0x800;
}
@@ -1274,10 +1272,10 @@ void FreeMonSpritesGfx(void)
FREE_AND_SET_NULL(gMonSpritesGfxPtr->barFontGfx);
FREE_AND_SET_NULL(gMonSpritesGfxPtr->firstDecompressed);
- gMonSpritesGfxPtr->sprites[0] = NULL;
- gMonSpritesGfxPtr->sprites[1] = NULL;
- gMonSpritesGfxPtr->sprites[2] = NULL;
- gMonSpritesGfxPtr->sprites[3] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[0] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[1] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[2] = NULL;
+ gMonSpritesGfxPtr->sprites.ptr[3] = NULL;
FREE_AND_SET_NULL(gMonSpritesGfxPtr);
}
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 6964428a3..36ff325f5 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -586,7 +586,7 @@ void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *ar
int i, j;
u8 battler = GetBattlerAtPosition(battlerPosition);
int offset = tilesOffset;
- CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
+ CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
LoadBgTiles(bgId, arg5, 0x1000, tilesOffset);
for (i = arg2; i < arg2 + 8; i++)
{
@@ -604,7 +604,7 @@ void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u
{
int i, j, offset;
- DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
+ DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
offset = (arg5 >> 5) - (arg7 << 9);
for (i = arg1; i < arg1 + 8; i++)
{
diff --git a/src/battle_main.c b/src/battle_main.c
index acc65008e..5bc80f61e 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -2765,7 +2765,7 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite)
}
else // Erase bottom part of the sprite to create a smooth illusion of mon falling down.
{
- u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8);
+ u8* dst = gMonSpritesGfxPtr->sprites.byte[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8);
for (i = 0; i < 0x100; i++)
*(dst++) = 0;
diff --git a/src/battle_message.c b/src/battle_message.c
index 59ad0cee4..e6c1666fc 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -2288,8 +2288,7 @@ static const u8* TryGetStatusString(u8 *src)
statusPtr = status;
for (i = 0; i < 8; i++)
{
- if (*src == EOS)
- break;
+ if (*src == EOS) break; // one line required to match -g
*statusPtr = *src;
src++;
statusPtr++;
diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c
index 1b220f145..ac6d95338 100644
--- a/src/battle_pyramid.c
+++ b/src/battle_pyramid.c
@@ -1757,7 +1757,9 @@ static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId)
r7 &= 1;
}
- // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed
+ #ifdef BUGFIX
+ free(floorLayoutOffsets);
+ #endif
return (numObjects / 2) > numPlacedObjects;
}
@@ -1809,7 +1811,9 @@ static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId)
if (r8 == 4)
break;
}
- // free(floorLayoutOffsets); BUG: floorLayoutOffsets memory not freed
+ #ifdef BUGFIX
+ free(floorLayoutOffsets);
+ #endif
return (numObjects / 2) > numPlacedObjects;
}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index d43ddd5a2..6ec9d16b1 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -953,7 +953,7 @@ static void Cmd_attackcanceler(void)
gHitMarker |= HITMARKER_OBEYS;
- if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED)
+ if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGIC_COAT_AFFECTED)
{
PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT);
gProtectStructs[gBattlerTarget].bounceMove = 0;
@@ -4666,19 +4666,16 @@ static void Cmd_jumpifcantswitch(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
- #ifndef NONMATCHING
- asm("":::"r5");
- #endif // NONMATCHING
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
party = gEnemyParty;
else
party = gPlayerParty;
- i = 0;
+ lastMonId = 0;
if (gActiveBattler & 2)
- i = 3;
+ lastMonId = 3;
- for (lastMonId = i + 3; i < lastMonId; i++)
+ for (i = lastMonId; i < lastMonId + 3; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4687,7 +4684,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId)
+ if (i == lastMonId + 3)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4700,18 +4697,18 @@ static void Cmd_jumpifcantswitch(void)
{
party = gPlayerParty;
- i = 0;
+ lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- i = 3;
+ lastMonId = 3;
}
else
{
party = gEnemyParty;
if (gActiveBattler == 1)
- i = 0;
+ lastMonId = 0;
else
- i = 3;
+ lastMonId = 3;
}
}
else
@@ -4721,12 +4718,12 @@ static void Cmd_jumpifcantswitch(void)
else
party = gPlayerParty;
- i = 0;
+ lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- i = 3;
+ lastMonId = 3;
}
- for (lastMonId = i + 3; i < lastMonId; i++)
+ for (i = lastMonId; i < lastMonId + 3; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4735,7 +4732,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId)
+ if (i == lastMonId + 3)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4744,11 +4741,11 @@ static void Cmd_jumpifcantswitch(void)
{
party = gEnemyParty;
- i = 0;
+ lastMonId = 0;
if (gActiveBattler == B_POSITION_OPPONENT_RIGHT)
- i = 3;
+ lastMonId = 3;
- for (lastMonId = i + 3; i < lastMonId; i++)
+ for (i = lastMonId; i < lastMonId + 3; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4757,7 +4754,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId)
+ if (i == lastMonId + 3)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -5035,14 +5032,9 @@ static void Cmd_openpartyscreen(void)
hitmarkerFaintBits = gHitMarker >> 0x1C;
gBattlerFainted = 0;
- while (1)
- {
- if (gBitTable[gBattlerFainted] & hitmarkerFaintBits)
- break;
- if (gBattlerFainted >= gBattlersCount)
- break;
+ while (!(gBitTable[gBattlerFainted] & hitmarkerFaintBits)
+ && gBattlerFainted < gBattlersCount)
gBattlerFainted++;
- }
if (gBattlerFainted == gBattlersCount)
gBattlescriptCurrInstr = jumpPtr;
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 7b9d13980..40b5993f0 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -1564,8 +1564,7 @@ static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 tra
{
for (j = 0; j < REMATCHES_COUNT; j++)
{
- if (table[i].trainerIds[j] == 0)
- break;
+ if (table[i].trainerIds[j] == 0) break; // one line required to match -g
if (table[i].trainerIds[j] == trainerId)
return i;
}
diff --git a/src/battle_tent.c b/src/battle_tent.c
index de0ecea98..26b2e8bb1 100644
--- a/src/battle_tent.c
+++ b/src/battle_tent.c
@@ -354,11 +354,7 @@ static void GenerateOpponentMons(void)
{
u16 trainerId;
s32 i, j, k;
- #ifndef NONMATCHING
- register const u16 *monSet asm("r9"); // Fix me. Compiler insists on moving that variable into stack.
- #else
- const u16 *monSet;
- #endif
+ const u16 *monSet;
u16 species[FRONTIER_PARTY_SIZE];
u16 heldItems[FRONTIER_PARTY_SIZE];
s32 monId = 0;
@@ -379,7 +375,8 @@ static void GenerateOpponentMons(void)
} while (i != gSaveBlock2Ptr->frontier.curChallengeBattleNum);
gTrainerBattleOpponent_A = trainerId;
- while (gFacilityTrainers[gTrainerBattleOpponent_A].monSet[monId] != 0xFFFF)
+ monSet = gFacilityTrainers[gTrainerBattleOpponent_A].monSet;
+ while (monSet[monId] != 0xFFFF)
monId++;
if (monId > 8)
break;
diff --git a/src/battle_tower.c b/src/battle_tower.c
index b7d03a5bc..d7123f3d2 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -999,7 +999,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void)
return FALSE;
winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode);
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
u32 recordHasData = 0;
@@ -1010,7 +1010,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void)
checksum += record[j];
}
validMons = 0;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species != 0
&& gSaveBlock2Ptr->frontier.towerRecords[i].party[j].level <= GetFrontierEnemyMonLevel(lvlMode))
@@ -1324,7 +1324,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
struct EmeraldBattleTowerRecord *newRecord = newRecordEm; // Needed to match.
// Find a record slot of the same player and replace it.
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
k = 0;
for (j = 0; j < TRAINER_ID_LENGTH; j++)
@@ -1336,10 +1336,15 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
{
for (k = 0; k < PLAYER_NAME_LENGTH; k++)
{
- // BUG: Wrong variable used, 'j' instead of 'k'.
+ #ifdef BUGFIX
+ if (gSaveBlock2Ptr->frontier.towerRecords[i].name[k] != newRecord->name[k])
+ break;
+ if (newRecord->name[k] == EOS)
+ #else
if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j])
break;
if (newRecord->name[j] == EOS)
+ #endif
{
k = PLAYER_NAME_LENGTH;
break;
@@ -1350,19 +1355,19 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
if (k == PLAYER_NAME_LENGTH)
break;
}
- if (i < 5)
+ if (i < BATTLE_TOWER_RECORD_COUNT)
{
gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord;
return;
}
// Find an empty record slot.
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak == 0)
break;
}
- if (i < 5)
+ if (i < BATTLE_TOWER_RECORD_COUNT)
{
gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord;
return;
@@ -1373,7 +1378,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm)
slotIds[0] = 0;
slotsCount++;
- for (i = 1; i < 5; i++)
+ for (i = 1; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
for (j = 0; j < slotsCount; j++)
{
@@ -2240,7 +2245,7 @@ static void GetRecordMixFriendMultiPartnerParty(u16 trainerId)
u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
count = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++)
{
if (gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species1
&& gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species2
@@ -2362,7 +2367,7 @@ static void LoadMultiPartnerCandidatesData(void)
}
r10 = 0;
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
u32 recordHasData = 0;
@@ -2379,7 +2384,7 @@ static void LoadMultiPartnerCandidatesData(void)
&& gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum)
{
k = 0;
- for (j = 0; j < 4; j++)
+ for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++)
{
if (species1 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species
&& species2 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species
@@ -2682,7 +2687,7 @@ static void ValidateBattleTowerRecordChecksums(void)
if (gSaveBlock2Ptr->frontier.towerPlayer.checksum != checksum)
ClearBattleTowerRecord(&gSaveBlock2Ptr->frontier.towerPlayer);
- for (i = 0; i < 5; i++)
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
{
record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]);
checksum = 0;
@@ -2956,7 +2961,12 @@ static void FillPartnerParty(u16 trainerId)
sStevenMons[i].species,
sStevenMons[i].level,
sStevenMons[i].fixedIV,
- TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
+ TRUE,
+ #ifdef BUGFIX
+ j,
+ #else
+ i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
+ #endif
OT_ID_PRESET, STEVEN_OTID);
for (j = 0; j < PARTY_SIZE; j++)
SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]);
@@ -3062,9 +3072,12 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em
{
dst->lvlMode = src->lvlMode;
dst->winStreak = src->winStreak;
- // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
- // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald)
+ // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
+ #ifdef UBFIX
+ for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ #else
for (i = 0; i < FACILITY_CLASSES_COUNT; i++)
+ #endif
{
if (sRubyFacilityClassToEmerald[i][0] == src->facilityClass)
break;
@@ -3112,9 +3125,12 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru
{
dst->lvlMode = src->lvlMode;
dst->winStreak = src->winStreak;
- // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
- // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald) instead
+ // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries.
+ #ifdef UBFIX
+ for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++)
+ #else
for (i = 0; i < FACILITY_CLASSES_COUNT; i++)
+ #endif
{
if (sRubyFacilityClassToEmerald[i][1] == src->facilityClass)
break;
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 496cc9e09..74e1548e7 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -1956,10 +1956,7 @@ static bool8 Phase2_Ripple_Func2(struct Task *task)
for (i = 0; i < 160; i++, r4 += r8)
{
s16 var = r4 >> 8;
-
- var++;
- var--;
- gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var, r3);
+ gScanlineEffectRegBuffers[0][i] = sTransitionStructPtr->field_16 + Sin(var & 0xffff, r3);
}
if (++task->tData3 == 81)
diff --git a/src/battle_util.c b/src/battle_util.c
index 7025f0e3f..e929de091 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -536,9 +536,12 @@ void HandleAction_ThrowPokeblock(void)
gBattleStruct->safariPkblThrowCounter++;
if (gBattleStruct->safariEscapeFactor > 1)
{
- // BUG: The safariEscapeFactor is unintetionally able to become 0 (but it can not become negative!). This causes the pokeblock throw glitch.
- // To fix that change the < in the if statement below to <=.
+ // BUG: safariEscapeFactor can become 0 below. This causes the pokeblock throw glitch.
+ #ifdef BUGFIX
+ if (gBattleStruct->safariEscapeFactor <= sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]])
+ #else
if (gBattleStruct->safariEscapeFactor < sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]])
+ #endif
gBattleStruct->safariEscapeFactor = 1;
else
gBattleStruct->safariEscapeFactor -= sPkblToEscapeFactor[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]];
@@ -3818,7 +3821,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& TARGET_TURN_DAMAGED
&& (Random() % 100) < atkHoldEffectParam
- && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
+ && gBattleMoves[gCurrentMove].flags & FLAG_KINGS_ROCK_AFFECTED
&& gBattleMons[gBattlerTarget].hp)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 16ba42bd7..573affbd5 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -1852,7 +1852,9 @@ static void Task_HandleOpponent1(u8 taskId)
gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD;
// BUG: Overrwrote above assignment. Opponent 1 can't get Best at low speed
+ #ifndef BUGFIX
gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD;
+ #endif
}
else if (sBerryBlender->speed < 1500)
{
@@ -2131,11 +2133,17 @@ static void UpdateOpponentScores(void)
sBerryBlender->scores[i][SCORE_MISS]++;
}
- // BUG: Should [i][BLENDER_COMM_SCORE] below, not [BLENDER_COMM_SCORE][i]
+ // BUG: Should be [i][BLENDER_COMM_SCORE] below, not [BLENDER_COMM_SCORE][i]
// As a result the music tempo updates if any player misses, but only if 1 specific player hits
+ #ifdef BUGFIX
+ if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS
+ || gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_BEST
+ || gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_GOOD)
+ #else
if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS
|| gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_BEST
|| gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_GOOD)
+ #endif
{
if (sBerryBlender->speed > 1500)
m4aMPlayTempoControl(&gMPlayInfo_BGM, ((sBerryBlender->speed - 750) / 20) + 256);
diff --git a/src/berry_crush.c b/src/berry_crush.c
index 671d0ad2b..985bf8d28 100755
--- a/src/berry_crush.c
+++ b/src/berry_crush.c
@@ -148,7 +148,7 @@ struct BerryCrushGame
u32 (* unk4)(struct BerryCrushGame *, u8 *);
u8 unk8;
u8 unk9;
- u8 unkA;
+ u8 mainTask;
u8 unkB;
u8 unkC;
u8 unkD;
@@ -188,10 +188,10 @@ struct BerryCrushGame
u8 unk31C0[0x1000];
};
-static void sub_8020F74(void);
-static void sub_8020F88(void);
-static void sub_8020FA0(u8);
-void sub_8020FC4(struct BerryCrushGame *);
+static void VBlankCB(void);
+static void MainCB(void);
+static void MainTask(u8);
+static void ParseName_Options(struct BerryCrushGame *);
void sub_8022BEC(u16, u8, u8 *);
static void BerryCrush_SetPaletteFadeParams(u8 *, bool8, u32, s8, u8, u8, u16);
static int sub_8021450(struct BerryCrushGame *);
@@ -232,7 +232,7 @@ static u32 sub_8024444(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1
static u32 sub_8024508(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1);
static u32 sub_8024568(__attribute__((unused)) struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1);
-static EWRAM_DATA struct BerryCrushGame *gUnknown_02022C90 = NULL;
+static EWRAM_DATA struct BerryCrushGame *gBerryCrushGame = NULL;
static const u8 gUnknown_082F325C[] = { 1, 2, 4, 8, 16, 32, 64, 128 };
static const u8 gUnknown_082F3264[] = { 0, 1, 2, 3, 5, 0, 0, 0 };
@@ -805,22 +805,21 @@ static const u8 gUnknown_082F4434[][4] =
static const u8 gUnknown_082F4444[] = {5, 7, 9, 12};
static const u8 gUnknown_082F4448[] = {3, 7, 15, 31};
-
-struct BerryCrushGame *sub_8020C00(void)
+struct BerryCrushGame * GetBerryCrushGame(void)
{
- return gUnknown_02022C90;
+ return gBerryCrushGame;
}
-u32 sub_8020C0C(MainCallback callback)
+u32 QuitBerryCrush(MainCallback callback)
{
- if (!gUnknown_02022C90)
+ if (!gBerryCrushGame)
return 2;
if (!callback)
- callback = gUnknown_02022C90->unk0;
+ callback = gBerryCrushGame->unk0;
- DestroyTask(gUnknown_02022C90->unkA);
- FREE_AND_SET_NULL(gUnknown_02022C90);
+ DestroyTask(gBerryCrushGame->mainTask);
+ FREE_AND_SET_NULL(gBerryCrushGame);
SetMainCallback2(callback);
if (callback == CB2_ReturnToField)
{
@@ -857,8 +856,8 @@ void StartBerryCrush(MainCallback callback)
return;
}
- gUnknown_02022C90 = AllocZeroed(sizeof(*gUnknown_02022C90));
- if (!gUnknown_02022C90)
+ gBerryCrushGame = AllocZeroed(sizeof(*gBerryCrushGame));
+ if (!gBerryCrushGame)
{
SetMainCallback2(callback);
Rfu.unk_10 = 0;
@@ -867,110 +866,110 @@ void StartBerryCrush(MainCallback callback)
return;
}
- gUnknown_02022C90->unk0 = callback;
- gUnknown_02022C90->unk8 = multiplayerId;
- gUnknown_02022C90->unk9 = playerCount;
- sub_8020FC4(gUnknown_02022C90);
- gUnknown_02022C90->unk12 = 1;
- gUnknown_02022C90->unkE = 1;
- gUnknown_02022C90->unkF = 6;
- BerryCrush_SetPaletteFadeParams(gUnknown_02022C90->unk36, 1, -1, 0, 16, 0, 0);
- sub_8022BEC(4, 1, gUnknown_02022C90->unk36);
- SetMainCallback2(sub_8020F88);
- gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8);
+ gBerryCrushGame->unk0 = callback;
+ gBerryCrushGame->unk8 = multiplayerId;
+ gBerryCrushGame->unk9 = playerCount;
+ ParseName_Options(gBerryCrushGame);
+ gBerryCrushGame->unk12 = 1;
+ gBerryCrushGame->unkE = 1;
+ gBerryCrushGame->unkF = 6;
+ BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 1, -1, 0, 16, 0, 0);
+ sub_8022BEC(4, 1, gBerryCrushGame->unk36);
+ SetMainCallback2(MainCB);
+ gBerryCrushGame->mainTask = CreateTask(MainTask, 8);
gTextFlags.autoScroll = 0;
}
-static void sub_8020D8C(void)
+static void GetBerryFromBag(void)
{
if (gSpecialVar_ItemId < FIRST_BERRY_INDEX || gSpecialVar_ItemId > LAST_BERRY_INDEX + 1)
gSpecialVar_ItemId = ITEM_CHERI_BERRY;
else
RemoveBagItem(gSpecialVar_ItemId, 1);
- gUnknown_02022C90->unk68.as_four_players.others[gUnknown_02022C90->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX;
- gUnknown_02022C90->unkE = 1;
- gUnknown_02022C90->unkF = 9;
- BerryCrush_SetPaletteFadeParams(gUnknown_02022C90->unk36, 0, -1, 0, 16, 0, 0);
- sub_8022BEC(4, 1, gUnknown_02022C90->unk36);
- gUnknown_02022C90->unkA = CreateTask(sub_8020FA0, 8);
- SetMainCallback2(sub_8020F88);
+ gBerryCrushGame->unk68.as_four_players.others[gBerryCrushGame->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX;
+ gBerryCrushGame->unkE = 1;
+ gBerryCrushGame->unkF = 9;
+ BerryCrush_SetPaletteFadeParams(gBerryCrushGame->unk36, 0, -1, 0, 16, 0, 0);
+ sub_8022BEC(4, 1, gBerryCrushGame->unk36);
+ gBerryCrushGame->mainTask = CreateTask(MainTask, 8);
+ SetMainCallback2(MainCB);
}
-void sub_8020E1C(void)
+static void BerryCrush_SetupMainTask(void)
{
- DestroyTask(gUnknown_02022C90->unkA);
- ChooseBerryForMachine(sub_8020D8C);
+ DestroyTask(gBerryCrushGame->mainTask);
+ ChooseBerryForMachine(GetBerryFromBag);
}
-static void sub_8020E3C(void)
+static void BerryCrush_SetVBlankCB(void)
{
- SetVBlankCallback(sub_8020F74);
+ SetVBlankCallback(VBlankCB);
}
-void sub_8020E4C(void)
+static void BerryCrush_InitVBlankCB(void)
{
SetVBlankCallback(NULL);
}
-void sub_8020E58(void)
+static void BerryCrush_SaveResults(void)
{
u32 var0, var1;
- var0 = gUnknown_02022C90->unk68.as_four_players.unk00.unk04;
+ var0 = gBerryCrushGame->unk68.as_four_players.unk00.unk04;
var0 = Q_24_8(var0);
var0 = MathUtil_Div32(var0, Q_24_8(60));
- var1 = gUnknown_02022C90->unk68.as_four_players.unk00.unk0A;
+ var1 = gBerryCrushGame->unk68.as_four_players.unk00.unk0A;
var1 = Q_24_8(var1);
var1 = MathUtil_Div32(var1, var0) & 0xFFFF;
- gUnknown_02022C90->unk16 = var1;
- switch (gUnknown_02022C90->unk9)
+ gBerryCrushGame->unk16 = var1;
+ switch (gBerryCrushGame->unk9)
{
case 2:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gBerryCrushGame->unk16;
}
break;
case 3:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gBerryCrushGame->unk16;
}
break;
case 4:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gBerryCrushGame->unk16;
}
break;
case 5:
- if (gUnknown_02022C90->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3])
+ if (gBerryCrushGame->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3])
{
- gUnknown_02022C90->unk25_1 = 1;
- gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gUnknown_02022C90->unk16;
+ gBerryCrushGame->unk25_1 = 1;
+ gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gBerryCrushGame->unk16;
}
break;
}
- gUnknown_02022C90->unk1C = gUnknown_02022C90->unk68.as_four_players.unk00.unk00;
- if (GiveBerryPowder(gUnknown_02022C90->unk1C))
+ gBerryCrushGame->unk1C = gBerryCrushGame->unk68.as_four_players.unk00.unk00;
+ if (GiveBerryPowder(gBerryCrushGame->unk1C))
return;
- gUnknown_02022C90->unk25_0 = 1;
+ gBerryCrushGame->unk25_0 = 1;
}
-static void sub_8020F74(void)
+static void VBlankCB(void)
{
TransferPlttBuffer();
LoadOam();
ProcessSpriteCopyRequests();
}
-static void sub_8020F88(void)
+static void MainCB(void)
{
RunTasks();
RunTextPrinters();
@@ -978,12 +977,12 @@ static void sub_8020F88(void)
BuildOamBuffer();
}
-static void sub_8020FA0(u8 taskId)
+static void MainTask(u8 taskId)
{
- if (gUnknown_02022C90->unk4)
- gUnknown_02022C90->unk4(gUnknown_02022C90, gUnknown_02022C90->unk36);
+ if (gBerryCrushGame->unk4)
+ gBerryCrushGame->unk4(gBerryCrushGame, gBerryCrushGame->unk36);
- sub_8021450(gUnknown_02022C90);
+ sub_8021450(gBerryCrushGame);
}
#define PLAYER_UNK14(game, i) \
@@ -992,11 +991,11 @@ static void sub_8020FA0(u8 taskId)
+ offsetof(struct BerryCrushGame_68_x, unk30) \
+ sizeof(struct BerryCrushGame_Player) * (i))
-void sub_8020FC4(struct BerryCrushGame *arg0)
+static void ParseName_Options(struct BerryCrushGame *arg0)
{
- u8 i;
+ u8 i = 0;
- for (i = 0; i < arg0->unk9; i++)
+ for (; i < arg0->unk9; i++)
StringCopy(PLAYER_UNK14(arg0, i), gLinkPlayers[i].name);
for (; i < 5; i++)
{
@@ -1018,13 +1017,14 @@ void sub_8020FC4(struct BerryCrushGame *arg0)
}
}
-int sub_802104C(void)
+// TODO: Everything from here on is likely in separate files.
+s32 InitBerryCrushDisplay(void)
{
- struct BerryCrushGame *var0 = sub_8020C00();
- if (!var0)
+ struct BerryCrushGame *game = GetBerryCrushGame();
+ if (!game)
return -1;
- switch (var0->unkC)
+ switch (game->unkC)
{
case 0:
SetVBlankCallback(NULL);
@@ -1046,9 +1046,9 @@ int sub_802104C(void)
case 3:
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_082F32C8, ARRAY_COUNT(gUnknown_082F32C8));
- SetBgTilemapBuffer(1, var0->unk1C0);
- SetBgTilemapBuffer(2, var0->unk21C0);
- SetBgTilemapBuffer(3, var0->unk31C0);
+ SetBgTilemapBuffer(1, game->unk1C0);
+ SetBgTilemapBuffer(2, game->unk21C0);
+ SetBgTilemapBuffer(3, game->unk31C0);
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(2, 0, 0);
@@ -1077,8 +1077,8 @@ int sub_802104C(void)
InitStandardTextBoxWindows();
InitTextBoxGfxAndPrinters();
- sub_8022588(var0);
- sub_8022600(var0);
+ sub_8022588(game);
+ sub_8022600(game);
gPaletteFade.bufferTransferDisabled = TRUE;
break;
case 7:
@@ -1086,7 +1086,7 @@ int sub_802104C(void)
CopyToBgTilemapBuffer(1, gBerryCrushGrinderTopTilemap, 0, 0);
CopyToBgTilemapBuffer(2, gBerryCrushContainerCapTilemap, 0, 0);
CopyToBgTilemapBuffer(3, gBerryCrushBackgroundTilemap, 0, 0);
- sub_80226D0(var0);
+ sub_80226D0(game);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(3);
@@ -1094,7 +1094,7 @@ int sub_802104C(void)
case 8:
LoadWirelessStatusIndicatorSpriteGfx();
CreateWirelessStatusIndicatorSprite(0, 0);
- sub_8022730(var0);
+ sub_8022730(game);
SetGpuReg(REG_OFFSET_BG1VOFS, -gSpriteCoordOffsetY);
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
@@ -1107,18 +1107,18 @@ int sub_802104C(void)
ShowBg(2);
ShowBg(3);
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
- sub_8020E3C();
- var0->unkC = 0;
+ BerryCrush_SetVBlankCB();
+ game->unkC = 0;
return 1;
}
- var0->unkC++;
+ game->unkC++;
return 0;
}
int sub_802130C(void)
{
- struct BerryCrushGame *var0 = sub_8020C00();
+ struct BerryCrushGame *var0 = GetBerryCrushGame();
if (!var0)
return -1;
@@ -1768,22 +1768,15 @@ void sub_8022600(struct BerryCrushGame *r6)
void sub_80226D0(struct BerryCrushGame *r6)
{
u8 r5 = 0;
- const u32 *r0 = gUnknown_08DE3FD4;
-#ifndef NONMATCHING // r4, r5, r6 register roulette
- register u8 *r4 asm("r4") = gDecompressionBuffer;
- register u32 r0_ asm("r0");
-#else
- u8 *r4 = gDecompressionBuffer;
- u32 r0_;
-#endif
+ u8 * r4;
+
+ LZ77UnCompWram(gUnknown_08DE3FD4, gDecompressionBuffer); // required for matching
- LZ77UnCompWram(r0, r4);
- for (; r5 < r6->unk9; ++r5)
+ for (r4 = gDecompressionBuffer; r5 < r6->unk9; ++r5)
{
- r0_ = r6->unk138.unkC[r5]->unk0;
CopyToBgTilemapBufferRect(
3,
- &r4[r0_ * 40],
+ &r4[r6->unk138.unkC[r5]->unk0 * 40],
r6->unk138.unkC[r5]->unk1,
r6->unk138.unkC[r5]->unk2,
10,
@@ -1956,7 +1949,7 @@ void sub_8022B28(struct Sprite *sprite)
void sub_8022BEC(u16 r5, u8 r4, u8 *r7)
{
- struct BerryCrushGame *r6 = sub_8020C00();
+ struct BerryCrushGame *r6 = GetBerryCrushGame();
if (r5 > 25)
r5 = 0;
@@ -2093,7 +2086,7 @@ static u32 sub_8022D14(struct BerryCrushGame *r7, u8 *r5)
static u32 sub_8022E1C(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1)
{
- if (sub_802104C() != 0)
+ if (InitBerryCrushDisplay() != 0)
sub_8022BEC(r4->unkE, 0, r4->unk36);
return 0;
}
@@ -2151,7 +2144,7 @@ static u32 sub_8022EAC(struct BerryCrushGame *r4, u8 *r5)
static u32 sub_8022F04(struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1)
{
r0->unk4 = NULL;
- SetMainCallback2(sub_8020E1C);
+ SetMainCallback2(BerryCrush_SetupMainTask);
return 0;
}
@@ -2937,7 +2930,7 @@ static u32 sub_8023CAC(struct BerryCrushGame *r7, __attribute__((unused)) u8 *r1
r7->unk10 = 0;
break;
case 7:
- sub_8020E58();
+ BerryCrush_SaveResults();
sub_8022BEC(18, 1, NULL);
r7->unk12 = 11;
r7->unkC = 0;
@@ -3205,7 +3198,7 @@ static u32 sub_8024508(struct BerryCrushGame *r5, __attribute__((unused)) u8 *r1
static u32 sub_8024568(__attribute__((unused)) struct BerryCrushGame *r0, __attribute__((unused)) u8 *r1)
{
- sub_8020C0C(NULL);
+ QuitBerryCrush(NULL);
return 0;
}
diff --git a/src/contest.c b/src/contest.c
index f775b01b4..40a0eac66 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -3118,9 +3118,9 @@ static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 ind
species = SanitizeSpecies(species);
if (index == gContestPlayerMonIndex)
- HandleLoadSpecialPokePic_2(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites[0], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[0], species, personality);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites[0], species, personality);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species], gMonSpritesGfxPtr->sprites.ptr[0], species, personality);
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20);
SetMultiuseSpriteTemplateToPokemon(species, 0);
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 2f048718f..8fe339790 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -1734,8 +1734,9 @@ static void ContestAICmd_if_user_doesnt_have_exciting_move(void)
// they're checking for an effect. Checking for a specific effect would make more sense,
// but given that effects are normally read as a single byte and this reads 2 bytes, it
// seems reading a move was intended and the AI script is using it incorrectly.
-// In any case, to fix it to correctly check for effects replace the u16 move assignment with
-// u16 move = gContestMoves[gContestMons[eContestAI.contestantId].moves[i]].effect;
+// The fix below aligns the function with how it's used by the script, rather than the apparent
+// intention of its usage
+
static void ContestAICmd_check_user_has_move(void)
{
int hasMove = FALSE;
@@ -1744,7 +1745,12 @@ static void ContestAICmd_check_user_has_move(void)
for (i = 0; i < MAX_MON_MOVES; i++)
{
+ #ifdef BUGFIX
+ u16 move = gContestMoves[gContestMons[eContestAI.contestantId].moves[i]].effect;
+ #else
u16 move = gContestMons[eContestAI.contestantId].moves[i];
+ #endif
+
if (move == targetMove)
{
hasMove = TRUE;
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 8832b59e8..1602eb94f 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -368,19 +368,19 @@ static void InitContestMonPixels(u16 species, u8 whichSprite)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(
&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
species,
gContestPaintingWinner->personality);
- _InitContestMonPixels(gMonSpritesGfxPtr->sprites[1], gContestPaintingMonPalette, (void *)gContestMonPixels);
+ _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[1], gContestPaintingMonPalette, (void *)gContestMonPixels);
}
else
{
HandleLoadSpecialPokePic_DontHandleDeoxys(
&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[0],
+ gMonSpritesGfxPtr->sprites.ptr[0],
species,
gContestPaintingWinner->personality);
- _InitContestMonPixels(gMonSpritesGfxPtr->sprites[0], gContestPaintingMonPalette, (void *)gContestMonPixels);
+ _InitContestMonPixels(gMonSpritesGfxPtr->sprites.ptr[0], gContestPaintingMonPalette, (void *)gContestMonPixels);
}
}
diff --git a/src/contest_util.c b/src/contest_util.c
index 21408c673..e690a3bbe 100644
--- a/src/contest_util.c
+++ b/src/contest_util.c
@@ -166,11 +166,6 @@ static void SpriteCB_Confetti(struct Sprite *sprite);
static void Task_ShowContestEntryMonPic(u8 taskId);
static void Task_LinkContestWaitForConnection(u8 taskId);
-extern const u16 gObjectEventPalette8[];
-extern const u16 gObjectEventPalette17[];
-extern const u16 gObjectEventPalette33[];
-extern const u16 gObjectEventPalette34[];
-
static const u16 sUnknown_0858D6B0[] = INCBIN_U16("graphics/unknown/unknown_58D6B0.gbapal");
static const u8 sUnknown_0858D6D0[] = INCBIN_U8("graphics/unknown/unknown_58D6D0.4bpp");
static const u16 sMiscBlank_Pal[] = INCBIN_U16("graphics/interface/blank.gbapal");
@@ -880,7 +875,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
{
HandleLoadSpecialPokePic_2(
&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
species,
personality);
}
@@ -888,7 +883,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(
&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
species,
personality);
}
@@ -2488,16 +2483,16 @@ void LoadLinkContestPlayerPalettes(void)
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
{
if (gLinkPlayers[i].gender == MALE)
- LoadPalette(gObjectEventPalette33, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x160 + i * 0x10, 0x20);
else
- LoadPalette(gObjectEventPalette34, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_RubySapphireMay, 0x160 + i * 0x10, 0x20);
}
else
{
if (gLinkPlayers[i].gender == MALE)
- LoadPalette(gObjectEventPalette8, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_Brendan, 0x160 + i * 0x10, 0x20);
else
- LoadPalette(gObjectEventPalette17, 0x160 + i * 0x10, 0x20);
+ LoadPalette(gObjectEventPal_May, 0x160 + i * 0x10, 0x20);
}
}
}
@@ -2552,9 +2547,9 @@ void ShowContestEntryMonPic(void)
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = species;
if (gSpecialVar_0x8006 == gContestPlayerMonIndex)
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
LoadCompressedSpritePalette(palette);
diff --git a/src/data.c b/src/data.c
index 29d1835ac..4861da18b 100644
--- a/src/data.c
+++ b/src/data.c
@@ -295,11 +295,6 @@ const union AnimCmd *const gUnknown_082FF70C[] =
#define SPECIES_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species}
#define SPECIES_SHINY_PAL(species, pal) [SPECIES_##species] = {pal, SPECIES_##species + SPECIES_SHINY_TAG}
-#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
-#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
-
-#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic}
-
#include "data/pokemon_graphics/unknown_anims.h"
#include "data/pokemon_graphics/front_pic_coordinates.h"
#include "data/pokemon_graphics/still_front_pic_table.h"
diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h
index 008d7d784..f78fa2c8c 100644
--- a/src/data/battle_moves.h
+++ b/src/data/battle_moves.h
@@ -23,7 +23,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_KARATE_CHOP] =
@@ -36,7 +36,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DOUBLE_SLAP] =
@@ -49,7 +49,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COMET_PUNCH] =
@@ -62,7 +62,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MEGA_PUNCH] =
@@ -75,7 +75,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_PAY_DAY] =
@@ -88,7 +88,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FIRE_PUNCH] =
@@ -140,7 +140,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_VICE_GRIP] =
@@ -153,7 +153,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_GUILLOTINE] =
@@ -179,7 +179,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWORDS_DANCE] =
@@ -205,7 +205,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_GUST] =
@@ -218,7 +218,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WING_ATTACK] =
@@ -231,7 +231,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WHIRLWIND] =
@@ -257,7 +257,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BIND] =
@@ -270,7 +270,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SLAM] =
@@ -283,7 +283,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_VINE_WHIP] =
@@ -296,7 +296,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STOMP] =
@@ -322,7 +322,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MEGA_KICK] =
@@ -335,7 +335,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_JUMP_KICK] =
@@ -348,7 +348,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ROLLING_KICK] =
@@ -361,7 +361,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SAND_ATTACK] =
@@ -374,7 +374,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_HEADBUTT] =
@@ -400,7 +400,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FURY_ATTACK] =
@@ -413,7 +413,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_HORN_DRILL] =
@@ -439,7 +439,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BODY_SLAM] =
@@ -465,7 +465,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TAKE_DOWN] =
@@ -478,7 +478,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_THRASH] =
@@ -491,7 +491,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DOUBLE_EDGE] =
@@ -504,7 +504,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TAIL_WHIP] =
@@ -517,7 +517,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_POISON_STING] =
@@ -556,7 +556,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LEER] =
@@ -569,7 +569,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_BITE] =
@@ -595,7 +595,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_ROAR] =
@@ -621,7 +621,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SUPERSONIC] =
@@ -634,7 +634,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SONIC_BOOM] =
@@ -647,7 +647,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DISABLE] =
@@ -725,7 +725,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_HYDRO_PUMP] =
@@ -738,7 +738,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SURF] =
@@ -751,7 +751,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ICE_BEAM] =
@@ -829,7 +829,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_PECK] =
@@ -842,7 +842,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DRILL_PECK] =
@@ -855,7 +855,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SUBMISSION] =
@@ -868,7 +868,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LOW_KICK] =
@@ -881,7 +881,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COUNTER] =
@@ -907,7 +907,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STRENGTH] =
@@ -920,7 +920,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ABSORB] =
@@ -959,7 +959,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_GROWTH] =
@@ -985,7 +985,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SOLAR_BEAM] =
@@ -998,7 +998,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_POISON_POWDER] =
@@ -1011,7 +1011,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_STUN_SPORE] =
@@ -1024,7 +1024,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SLEEP_POWDER] =
@@ -1037,7 +1037,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_PETAL_DANCE] =
@@ -1050,7 +1050,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STRING_SHOT] =
@@ -1063,7 +1063,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_DRAGON_RAGE] =
@@ -1076,7 +1076,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FIRE_SPIN] =
@@ -1089,7 +1089,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_THUNDER_SHOCK] =
@@ -1128,7 +1128,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_THUNDER] =
@@ -1154,7 +1154,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EARTHQUAKE] =
@@ -1167,7 +1167,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FISSURE] =
@@ -1193,7 +1193,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TOXIC] =
@@ -1206,7 +1206,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_CONFUSION] =
@@ -1245,7 +1245,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MEDITATE] =
@@ -1284,7 +1284,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_RAGE] =
@@ -1297,7 +1297,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TELEPORT] =
@@ -1323,7 +1323,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MIMIC] =
@@ -1349,7 +1349,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_DOUBLE_TEAM] =
@@ -1414,7 +1414,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_CONFUSE_RAY] =
@@ -1427,7 +1427,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_WITHDRAW] =
@@ -1531,7 +1531,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_USER,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_METRONOME] =
@@ -1570,7 +1570,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EGG_BOMB] =
@@ -1583,7 +1583,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LICK] =
@@ -1661,7 +1661,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CLAMP] =
@@ -1674,7 +1674,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWIFT] =
@@ -1687,7 +1687,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SKULL_BASH] =
@@ -1700,7 +1700,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SPIKE_CANNON] =
@@ -1713,7 +1713,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CONSTRICT] =
@@ -1778,7 +1778,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_GLARE] =
@@ -1791,7 +1791,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_DREAM_EATER] =
@@ -1817,7 +1817,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_BARRAGE] =
@@ -1830,7 +1830,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LEECH_LIFE] =
@@ -1856,7 +1856,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SKY_ATTACK] =
@@ -1869,7 +1869,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TRANSFORM] =
@@ -1921,7 +1921,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_FLASH] =
@@ -1934,7 +1934,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_PSYWAVE] =
@@ -1947,7 +1947,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SPLASH] =
@@ -1986,7 +1986,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EXPLOSION] =
@@ -1999,7 +1999,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FURY_SWIPES] =
@@ -2012,7 +2012,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BONEMERANG] =
@@ -2025,7 +2025,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_REST] =
@@ -2129,7 +2129,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SUBSTITUTE] =
@@ -2155,7 +2155,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SKETCH] =
@@ -2181,7 +2181,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_THIEF] =
@@ -2207,7 +2207,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MIND_READER] =
@@ -2259,7 +2259,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CURSE] =
@@ -2285,7 +2285,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CONVERSION_2] =
@@ -2311,7 +2311,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COTTON_SPORE] =
@@ -2324,7 +2324,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_REVERSAL] =
@@ -2337,7 +2337,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SPITE] =
@@ -2389,7 +2389,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SCARY_FACE] =
@@ -2402,7 +2402,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_FAINT_ATTACK] =
@@ -2415,7 +2415,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWEET_KISS] =
@@ -2428,7 +2428,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_BELLY_DRUM] =
@@ -2584,7 +2584,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_LOCK_ON] =
@@ -2610,7 +2610,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SANDSTORM] =
@@ -2662,7 +2662,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_ROLLOUT] =
@@ -2675,7 +2675,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FALSE_SWIPE] =
@@ -2688,7 +2688,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWAGGER] =
@@ -2701,7 +2701,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MILK_DRINK] =
@@ -2740,7 +2740,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STEEL_WING] =
@@ -2753,7 +2753,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MEAN_LOOK] =
@@ -2766,7 +2766,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_ATTRACT] =
@@ -2779,7 +2779,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_SLEEP_TALK] =
@@ -2818,7 +2818,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_PRESENT] =
@@ -2844,7 +2844,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SAFEGUARD] =
@@ -2896,7 +2896,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_FOES_AND_ALLY,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DYNAMIC_PUNCH] =
@@ -2922,7 +2922,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DRAGON_BREATH] =
@@ -2935,7 +2935,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BATON_PASS] =
@@ -2987,7 +2987,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWEET_SCENT] =
@@ -3000,7 +3000,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_IRON_TAIL] =
@@ -3039,7 +3039,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = -1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MORNING_SUN] =
@@ -3091,7 +3091,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CROSS_CHOP] =
@@ -3104,7 +3104,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_TWISTER] =
@@ -3117,7 +3117,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 20,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_RAIN_DANCE] =
@@ -3195,7 +3195,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 1,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ANCIENT_POWER] =
@@ -3260,7 +3260,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BEAT_UP] =
@@ -3273,7 +3273,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FAKE_OUT] =
@@ -3299,7 +3299,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_RANDOM,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_STOCKPILE] =
@@ -3325,7 +3325,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SWALLOW] =
@@ -3390,7 +3390,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_WILL_O_WISP] =
@@ -3403,7 +3403,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_MEMENTO] =
@@ -3637,7 +3637,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = -4,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BRICK_BREAK] =
@@ -3650,7 +3650,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_YAWN] =
@@ -3663,7 +3663,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_KNOCK_OFF] =
@@ -3689,7 +3689,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ERUPTION] =
@@ -3702,7 +3702,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SKILL_SWAP] =
@@ -3793,7 +3793,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ARM_THRUST] =
@@ -3806,7 +3806,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_CAMOUFLAGE] =
@@ -3871,7 +3871,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_TEETER_DANCE] =
@@ -3923,7 +3923,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_NEEDLE_ARM] =
@@ -4001,7 +4001,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_HYDRO_CANNON] =
@@ -4014,7 +4014,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_METEOR_MASH] =
@@ -4027,7 +4027,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 20,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ASTONISH] =
@@ -4053,7 +4053,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_AROMATHERAPY] =
@@ -4079,7 +4079,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_AIR_CUTTER] =
@@ -4092,7 +4092,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_OVERHEAT] =
@@ -4105,7 +4105,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ODOR_SLEUTH] =
@@ -4144,7 +4144,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_METAL_SOUND] =
@@ -4157,7 +4157,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_GRASS_WHISTLE] =
@@ -4170,7 +4170,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_TICKLE] =
@@ -4183,7 +4183,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COSMIC_POWER] =
@@ -4222,7 +4222,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SHADOW_PUNCH] =
@@ -4235,7 +4235,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_EXTRASENSORY] =
@@ -4261,7 +4261,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SAND_TOMB] =
@@ -4274,7 +4274,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SHEER_COLD] =
@@ -4300,7 +4300,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_BOTH,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BULLET_SEED] =
@@ -4313,7 +4313,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_AERIAL_ACE] =
@@ -4326,7 +4326,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_ICICLE_SPEAR] =
@@ -4339,7 +4339,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_IRON_DEFENSE] =
@@ -4365,7 +4365,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGICCOAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MAGIC_COAT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED,
},
[MOVE_HOWL] =
@@ -4391,7 +4391,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_FRENZY_PLANT] =
@@ -4404,7 +4404,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_BULK_UP] =
@@ -4430,7 +4430,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 30,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MUD_SHOT] =
@@ -4443,7 +4443,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_POISON_TAIL] =
@@ -4456,7 +4456,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 10,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_COVET] =
@@ -4482,7 +4482,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_MAGICAL_LEAF] =
@@ -4495,7 +4495,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WATER_SPORT] =
@@ -4534,7 +4534,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_MAKES_CONTACT | FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DRAGON_DANCE] =
@@ -4560,7 +4560,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_SHOCK_WAVE] =
@@ -4573,7 +4573,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 0,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_WATER_PULSE] =
@@ -4586,7 +4586,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 20,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
[MOVE_DOOM_DESIRE] =
@@ -4612,6 +4612,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
- .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGSROCK_AFFECTED,
+ .flags = FLAG_PROTECT_AFFECTED | FLAG_MIRROR_MOVE_AFFECTED | FLAG_KINGS_ROCK_AFFECTED,
},
};
diff --git a/src/data/field_effects/field_effect_objects.h b/src/data/field_effects/field_effect_objects.h
index 1626b9f32..4fc3ecff6 100755
--- a/src/data/field_effects/field_effect_objects.h
+++ b/src/data/field_effects/field_effect_objects.h
@@ -1286,4 +1286,4 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_Rayquaza = {
.callback = UpdateRayquazaSpotlightEffect,
};
-static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPalette2, FLDEFF_PAL_TAG_UNKNOWN};
+static const struct SpritePalette sSpritePalette_Unused = {gObjectEventPal_Npc3, FLDEFF_PAL_TAG_UNKNOWN};
diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h
index 3de77d6ec..206d73a88 100644
--- a/src/data/graphics/trainers.h
+++ b/src/data/graphics/trainers.h
@@ -7,8 +7,8 @@ const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/palettes/
const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz");
const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz");
-const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_m_front_pic.4bpp.lz");
-const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_m.gbapal.lz");
+const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_m.gbapal.lz");
const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz");
const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/palettes/bird_keeper.gbapal.lz");
@@ -58,8 +58,8 @@ const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/palettes/tube
const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz");
const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/palettes/tuber_m.gbapal.lz");
-const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_f_front_pic.4bpp.lz");
-const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_f.gbapal.lz");
+const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f_front_pic.4bpp.lz");
+const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_f.gbapal.lz");
const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady_front_pic.4bpp.lz");
const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/palettes/lady.gbapal.lz");
diff --git a/src/data/lilycove_lady.h b/src/data/lilycove_lady.h
index cf6c0c648..37bae7e95 100644
--- a/src/data/lilycove_lady.h
+++ b/src/data/lilycove_lady.h
@@ -8,7 +8,7 @@ static const u16 sContestLadyMonGfxId[] =
OBJ_EVENT_GFX_ZIGZAGOON_1,
OBJ_EVENT_GFX_SKITTY,
OBJ_EVENT_GFX_POOCHYENA,
- OBJ_EVENT_GFX_KECLEON_1,
+ OBJ_EVENT_GFX_KECLEON,
OBJ_EVENT_GFX_PIKACHU
};
diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h
index 50fc6715c..81d83a856 100755
--- a/src/data/object_events/object_event_graphics.h
+++ b/src/data/object_events/object_event_graphics.h
@@ -1,26 +1,26 @@
const u32 gObjectEventPic_BrendanNormal[] = INCBIN_U32("graphics/object_events/pics/people/brendan/walking.4bpp");
const u32 gObjectEventPic_BrendanRunning[] = INCBIN_U32("graphics/object_events/pics/people/brendan/running.4bpp");
-const u16 gObjectEventPalette8[] = INCBIN_U16("graphics/object_events/palettes/08.gbapal");
+const u16 gObjectEventPal_Brendan[] = INCBIN_U16("graphics/object_events/palettes/brendan.gbapal");
const u32 gObjectEventPic_RubySapphireBrendanNormal[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_brendan/walking.4bpp");
const u32 gObjectEventPic_RubySapphireBrendanRunning[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_brendan/running.4bpp");
-const u16 gObjectEventPalette33[] = INCBIN_U16("graphics/object_events/palettes/33.gbapal");
-const u16 gObjectEventPaletteNull1[16] = {};
-const u16 gObjectEventPaletteNull2[16] = {};
-const u16 gObjectEventPaletteNull3[16] = {};
-const u16 gObjectEventPaletteNull4[16] = {};
-const u16 gObjectEventPaletteNull5[16] = {};
-const u16 gObjectEventPaletteNull6[16] = {};
-const u16 gObjectEventPaletteNull7[16] = {};
-const u16 gObjectEventPaletteNull8[16] = {};
-const u16 gObjectEventPaletteNull9[16] = {};
-const u16 gObjectEventPaletteNull10[16] = {};
-const u16 gObjectEventPaletteNull11[16] = {};
-const u16 gObjectEventPaletteNull12[16] = {};
-const u16 gObjectEventPaletteNull13[16] = {};
-const u16 gObjectEventPaletteNull14[16] = {};
-const u16 gObjectEventPaletteNull15[16] = {};
-const u16 gObjectEventPalette9[] = INCBIN_U16("graphics/object_events/palettes/09.gbapal");
-const u16 gObjectEventPalette10[] = INCBIN_U16("graphics/object_events/palettes/10.gbapal");
+const u16 gObjectEventPal_RubySapphireBrendan[] = INCBIN_U16("graphics/object_events/palettes/ruby_sapphire_brendan.gbapal");
+const u16 gObjectEventPal_Null1[16] = {};
+const u16 gObjectEventPal_Null2[16] = {};
+const u16 gObjectEventPal_Null3[16] = {};
+const u16 gObjectEventPal_Null4[16] = {};
+const u16 gObjectEventPal_Null5[16] = {};
+const u16 gObjectEventPal_Null6[16] = {};
+const u16 gObjectEventPal_Null7[16] = {};
+const u16 gObjectEventPal_Null8[16] = {};
+const u16 gObjectEventPal_Null9[16] = {};
+const u16 gObjectEventPal_Null10[16] = {};
+const u16 gObjectEventPal_Null11[16] = {};
+const u16 gObjectEventPal_Null12[16] = {};
+const u16 gObjectEventPal_Null13[16] = {};
+const u16 gObjectEventPal_Null14[16] = {};
+const u16 gObjectEventPal_Null15[16] = {};
+const u16 gObjectEventPal_BrendanReflection[] = INCBIN_U16("graphics/object_events/palettes/brendan_reflection.gbapal");
+const u16 gObjectEventPal_BridgeReflection[] = INCBIN_U16("graphics/object_events/palettes/bridge_reflection.gbapal");
const u32 gObjectEventPic_BrendanFieldMove[] = INCBIN_U32("graphics/object_events/pics/people/brendan/field_move.4bpp");
const u32 gObjectEventPic_BrendanSurfing[] = INCBIN_U32("graphics/object_events/pics/people/brendan/surfing.4bpp");
const u32 gObjectEventPic_BrendanMachBike[] = INCBIN_U32("graphics/object_events/pics/people/brendan/mach_bike.4bpp");
@@ -31,43 +31,43 @@ const u32 gObjectEventPic_BrendanDecorating[] = INCBIN_U32("graphics/object_even
const u32 gObjectEventPic_MayDecorating[] = INCBIN_U32("graphics/object_events/pics/people/may/decorating.4bpp");
const u32 gObjectEventPic_BrendanUnderwater[] = INCBIN_U32("graphics/object_events/pics/people/brendan/underwater.4bpp");
const u32 gObjectEventPic_MayUnderwater[] = INCBIN_U32("graphics/object_events/pics/people/may/underwater.4bpp");
-const u16 gObjectEventPalette11[] = INCBIN_U16("graphics/object_events/palettes/11.gbapal");
+const u16 gObjectEventPal_PlayerUnderwater[] = INCBIN_U16("graphics/object_events/palettes/player_underwater.gbapal");
const u32 gObjectEventPic_MayNormal[] = INCBIN_U32("graphics/object_events/pics/people/may/walking.4bpp");
const u32 gObjectEventPic_MayRunning[] = INCBIN_U32("graphics/object_events/pics/people/may/running.4bpp");
-const u16 gObjectEventPalette17[] = INCBIN_U16("graphics/object_events/palettes/17.gbapal");
-const u16 gObjectEventPalette18[] = INCBIN_U16("graphics/object_events/palettes/18.gbapal");
+const u16 gObjectEventPal_May[] = INCBIN_U16("graphics/object_events/palettes/may.gbapal");
+const u16 gObjectEventPal_MayReflection[] = INCBIN_U16("graphics/object_events/palettes/may_reflection.gbapal");
const u32 gObjectEventPic_RubySapphireMayNormal[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_may/walking.4bpp");
const u32 gObjectEventPic_RubySapphireMayRunning[] = INCBIN_U32("graphics/object_events/pics/people/ruby_sapphire_may/running.4bpp");
-const u16 gObjectEventPalette34[] = INCBIN_U16("graphics/object_events/palettes/34.gbapal");
+const u16 gObjectEventPal_RubySapphireMay[] = INCBIN_U16("graphics/object_events/palettes/ruby_sapphire_may.gbapal");
const u16 gUnusedObjectEventPalette[] = INCBIN_U16("graphics/object_events/palettes/unused_palette.gbapal");
-const u16 gObjectEventPaletteNull16[16] = {};
-const u16 gObjectEventPaletteNull17[16] = {};
-const u16 gObjectEventPaletteNull18[16] = {};
-const u16 gObjectEventPaletteNull19[16] = {};
-const u16 gObjectEventPaletteNull20[16] = {};
-const u16 gObjectEventPaletteNull21[16] = {};
-const u16 gObjectEventPaletteNull22[16] = {};
-const u16 gObjectEventPaletteNull23[16] = {};
-const u16 gObjectEventPaletteNull24[16] = {};
-const u16 gObjectEventPaletteNull25[16] = {};
-const u16 gObjectEventPaletteNull26[16] = {};
-const u16 gObjectEventPaletteNull27[16] = {};
-const u16 gObjectEventPaletteNull28[16] = {};
-const u16 gObjectEventPaletteNull29[16] = {};
+const u16 gObjectEventPal_Null16[16] = {};
+const u16 gObjectEventPal_Null17[16] = {};
+const u16 gObjectEventPal_Null18[16] = {};
+const u16 gObjectEventPal_Null19[16] = {};
+const u16 gObjectEventPal_Null20[16] = {};
+const u16 gObjectEventPal_Null21[16] = {};
+const u16 gObjectEventPal_Null22[16] = {};
+const u16 gObjectEventPal_Null23[16] = {};
+const u16 gObjectEventPal_Null24[16] = {};
+const u16 gObjectEventPal_Null25[16] = {};
+const u16 gObjectEventPal_Null26[16] = {};
+const u16 gObjectEventPal_Null27[16] = {};
+const u16 gObjectEventPal_Null28[16] = {};
+const u16 gObjectEventPal_Null29[16] = {};
const u32 gObjectEventPic_MayMachBike[] = INCBIN_U32("graphics/object_events/pics/people/may/mach_bike.4bpp");
const u32 gObjectEventPic_MayAcroBike[] = INCBIN_U32("graphics/object_events/pics/people/may/acro_bike.4bpp");
const u32 gObjectEventPic_MaySurfing[] = INCBIN_U32("graphics/object_events/pics/people/may/surfing.4bpp");
const u32 gObjectEventPic_MayFieldMove[] = INCBIN_U32("graphics/object_events/pics/people/may/field_move.4bpp");
const u32 gObjectEventPic_MayFishing[] = INCBIN_U32("graphics/object_events/pics/people/may/fishing.4bpp");
const u32 gObjectEventPic_MayWatering[] = INCBIN_U32("graphics/object_events/pics/people/may/watering.4bpp");
-const u16 gObjectEventPalette0[] = INCBIN_U16("graphics/object_events/palettes/00.gbapal");
-const u16 gObjectEventPalette1[] = INCBIN_U16("graphics/object_events/palettes/01.gbapal");
-const u16 gObjectEventPalette2[] = INCBIN_U16("graphics/object_events/palettes/02.gbapal");
-const u16 gObjectEventPalette3[] = INCBIN_U16("graphics/object_events/palettes/03.gbapal");
-const u16 gObjectEventPalette4[] = INCBIN_U16("graphics/object_events/palettes/04.gbapal");
-const u16 gObjectEventPalette5[] = INCBIN_U16("graphics/object_events/palettes/05.gbapal");
-const u16 gObjectEventPalette6[] = INCBIN_U16("graphics/object_events/palettes/06.gbapal");
-const u16 gObjectEventPalette7[] = INCBIN_U16("graphics/object_events/palettes/07.gbapal");
+const u16 gObjectEventPal_Npc1[] = INCBIN_U16("graphics/object_events/palettes/npc_1.gbapal");
+const u16 gObjectEventPal_Npc2[] = INCBIN_U16("graphics/object_events/palettes/npc_2.gbapal");
+const u16 gObjectEventPal_Npc3[] = INCBIN_U16("graphics/object_events/palettes/npc_3.gbapal");
+const u16 gObjectEventPal_Npc4[] = INCBIN_U16("graphics/object_events/palettes/npc_4.gbapal");
+const u16 gObjectEventPal_Npc1Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_1_reflection.gbapal");
+const u16 gObjectEventPal_Npc2Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_2_reflection.gbapal");
+const u16 gObjectEventPal_Npc3Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_3_reflection.gbapal");
+const u16 gObjectEventPal_Npc4Reflection[] = INCBIN_U16("graphics/object_events/palettes/npc_4_reflection.gbapal");
const u32 gObjectEventPic_NinjaBoy[] = INCBIN_U32("graphics/object_events/pics/people/ninja_boy.4bpp");
const u32 gObjectEventPic_Twin[] = INCBIN_U32("graphics/object_events/pics/people/twin.4bpp");
const u32 gObjectEventPic_Boy1[] = INCBIN_U32("graphics/object_events/pics/people/boy_1.4bpp");
@@ -177,10 +177,10 @@ const u32 gObjectEventPic_Wingull[] = INCBIN_U32("graphics/object_events/pics/po
const u32 gObjectEventPic_TuberMSwimming[] = INCBIN_U32("graphics/object_events/pics/people/tuber_m_swimming.4bpp");
const u32 gObjectEventPic_Azurill[] = INCBIN_U32("graphics/object_events/pics/pokemon/azurill.4bpp");
const u32 gObjectEventPic_Mom[] = INCBIN_U32("graphics/object_events/pics/people/mom.4bpp");
-const u16 gObjectEventPalette22[] = INCBIN_U16("graphics/object_events/palettes/22.gbapal");
-const u16 gObjectEventPalette23[] = INCBIN_U16("graphics/object_events/palettes/23.gbapal");
-const u16 gObjectEventPalette24[] = INCBIN_U16("graphics/object_events/palettes/24.gbapal");
-const u16 gObjectEventPalette25[] = INCBIN_U16("graphics/object_events/palettes/25.gbapal");
+const u16 gObjectEventPal_Kyogre[] = INCBIN_U16("graphics/object_events/palettes/kyogre.gbapal");
+const u16 gObjectEventPal_KyogreReflection[] = INCBIN_U16("graphics/object_events/palettes/kyogre_reflection.gbapal");
+const u16 gObjectEventPal_Groudon[] = INCBIN_U16("graphics/object_events/palettes/groudon.gbapal");
+const u16 gObjectEventPal_GroudonReflection[] = INCBIN_U16("graphics/object_events/palettes/groudon_reflection.gbapal");
const u32 gObjectEventPic_UnusedNatuDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_natu_doll.4bpp");
const u32 gObjectEventPic_UnusedMagnemiteDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_magnemite_doll.4bpp");
const u32 gObjectEventPic_UnusedSquirtleDoll[] = INCBIN_U32("graphics/object_events/pics/dolls/unused_squirtle_doll.4bpp");
@@ -238,20 +238,20 @@ const u32 gObjectEventPic_PushableBoulder[] = INCBIN_U32("graphics/object_events
const u32 gObjectEventPic_MrBrineysBoat[] = INCBIN_U32("graphics/object_events/pics/misc/mr_brineys_boat.4bpp");
const u32 gObjectEventPic_Fossil[] = INCBIN_U32("graphics/object_events/pics/misc/fossil.4bpp");
const u32 gObjectEventPic_SubmarineShadow[] = INCBIN_U32("graphics/object_events/pics/misc/submarine_shadow.4bpp");
-const u16 gObjectEventPalette26[] = INCBIN_U16("graphics/object_events/palettes/26.gbapal");
+const u16 gObjectEventPal_SubmarineShadow[] = INCBIN_U16("graphics/object_events/palettes/submarine_shadow.gbapal");
const u32 gObjectEventPic_Truck[] = INCBIN_U32("graphics/object_events/pics/misc/truck.4bpp");
-const u16 gObjectEventPalette14[] = INCBIN_U16("graphics/object_events/palettes/14.gbapal");
+const u16 gObjectEventPal_Truck[] = INCBIN_U16("graphics/object_events/palettes/truck.gbapal");
const u32 gObjectEventPic_Vigoroth[] = INCBIN_U32("graphics/object_events/pics/pokemon/vigoroth.4bpp");
-const u16 gObjectEventPalette15[] = INCBIN_U16("graphics/object_events/palettes/15.gbapal");
+const u16 gObjectEventPal_Vigoroth[] = INCBIN_U16("graphics/object_events/palettes/vigoroth.gbapal");
const u32 gObjectEventPic_BirchsBag[] = INCBIN_U32("graphics/object_events/pics/misc/birchs_bag.4bpp");
const u32 gObjectEventPic_EnemyZigzagoon[] = INCBIN_U32("graphics/object_events/pics/pokemon/enemy_zigzagoon.4bpp");
-const u16 gObjectEventPalette16[] = INCBIN_U16("graphics/object_events/palettes/16.gbapal");
+const u16 gObjectEventPal_EnemyZigzagoon[] = INCBIN_U16("graphics/object_events/palettes/enemy_zigzagoon.gbapal");
const u32 gObjectEventPic_Poochyena[] = INCBIN_U32("graphics/object_events/pics/pokemon/poochyena.4bpp");
-const u16 gObjectEventPalette27[] = INCBIN_U16("graphics/object_events/palettes/27.gbapal");
+const u16 gObjectEventPal_Poochyena[] = INCBIN_U16("graphics/object_events/palettes/poochyena.gbapal");
const u32 gObjectEventPic_CableCar[] = INCBIN_U32("graphics/object_events/pics/misc/cable_car.4bpp");
-const u16 gObjectEventPalette20[] = INCBIN_U16("graphics/object_events/palettes/20.gbapal");
+const u16 gObjectEventPal_CableCar[] = INCBIN_U16("graphics/object_events/palettes/cable_car.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 u16 gObjectEventPal_SSTidal[] = INCBIN_U16("graphics/object_events/palettes/ss_tidal.gbapal");
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");
@@ -287,8 +287,8 @@ const u32 gObjectEventPic_DurinBerryTree[] = INCBIN_U32("graphics/object_events/
const u32 gObjectEventPic_TamatoBerryTree[] = INCBIN_U32("graphics/object_events/pics/berry_trees/tamato.4bpp");
const u32 gFieldEffectObjectPic_SurfBlob[] = INCBIN_U32("graphics/field_effects/pics/surf_blob.4bpp");
const u32 gObjectEventPic_QuintyPlump[] = INCBIN_U32("graphics/object_events/pics/people/quinty_plump.4bpp");
-const u16 gObjectEventPalette12[] = INCBIN_U16("graphics/object_events/palettes/12.gbapal");
-const u16 gObjectEventPalette13[] = INCBIN_U16("graphics/object_events/palettes/13.gbapal");
+const u16 gObjectEventPal_QuintyPlump[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump.gbapal");
+const u16 gObjectEventPal_QuintyPlumpReflection[] = INCBIN_U16("graphics/object_events/palettes/quinty_plump_reflection.gbapal");
const u32 gFieldEffectObjectPic_ShadowSmall[] = INCBIN_U32("graphics/field_effects/pics/shadow_small.4bpp");
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");
@@ -339,15 +339,15 @@ const u32 gObjectEventPic_Dusclops[] = INCBIN_U32("graphics/object_events/pics/p
const u32 gObjectEventPic_MysteryEventDeliveryman[] = INCBIN_U32("graphics/object_events/pics/people/mystery_event_deliveryman.4bpp");
const u32 gObjectEventPic_UnionRoomAttendant[] = INCBIN_U32("graphics/object_events/pics/people/union_room_attendant.4bpp");
const u32 gObjectEventPic_MovingBox[] = INCBIN_U32("graphics/object_events/pics/misc/moving_box.4bpp");
-const u16 gObjectEventPalette19[] = INCBIN_U16("graphics/object_events/palettes/19.gbapal");
+const u16 gObjectEventPal_MovingBox[] = INCBIN_U16("graphics/object_events/palettes/moving_box.gbapal");
const u32 gObjectEventPic_Sudowoodo[] = INCBIN_U32("graphics/object_events/pics/pokemon/sudowoodo.4bpp");
const u32 gObjectEventPic_Mew[] = INCBIN_U32("graphics/object_events/pics/pokemon/mew.4bpp");
-const u16 gObjectEventPalette28[] = INCBIN_U16("graphics/object_events/palettes/28.gbapal");
+const u16 gObjectEventPal_RedLeaf[] = INCBIN_U16("graphics/object_events/palettes/red_leaf.gbapal");
const u32 gObjectEventPic_Red[] = INCBIN_U32("graphics/object_events/pics/people/red.4bpp");
const u32 gObjectEventPic_Leaf[] = INCBIN_U32("graphics/object_events/pics/people/leaf.4bpp");
-const u16 gObjectEventPalette30[] = INCBIN_U16("graphics/object_events/palettes/30.gbapal");
+const u16 gObjectEventPal_BirthIslandStone[] = INCBIN_U16("graphics/object_events/palettes/birth_island_stone.gbapal");
const u32 gObjectEventPic_BirthIslandStone[] = INCBIN_U32("graphics/object_events/pics/misc/birth_island_stone.4bpp");
-const u16 gObjectEventPalette29[] = INCBIN_U16("graphics/object_events/palettes/29.gbapal");
+const u16 gObjectEventPal_Deoxys[] = INCBIN_U16("graphics/object_events/palettes/deoxys.gbapal");
const u32 gObjectEventPic_Deoxys[] = INCBIN_U32("graphics/object_events/pics/pokemon/deoxys.4bpp");
const u32 gObjectEventPic_Anabel[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/anabel.4bpp");
const u32 gObjectEventPic_Tucker[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/tucker.4bpp");
@@ -357,6 +357,6 @@ const u32 gObjectEventPic_Noland[] = INCBIN_U32("graphics/object_events/pics/peo
const u32 gObjectEventPic_Lucy[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/lucy.4bpp");
const u32 gObjectEventPic_Brandon[] = INCBIN_U32("graphics/object_events/pics/people/frontier_brains/brandon.4bpp");
const u32 gObjectEventPic_Lugia[] = INCBIN_U32("graphics/object_events/pics/pokemon/lugia.4bpp");
-const u16 gObjectEventPalette32[] = INCBIN_U16("graphics/object_events/palettes/32.gbapal");
+const u16 gObjectEventPal_Lugia[] = INCBIN_U16("graphics/object_events/palettes/lugia.gbapal");
const u32 gObjectEventPic_HoOh[] = INCBIN_U32("graphics/object_events/pics/pokemon/ho_oh.4bpp");
-const u16 gObjectEventPalette31[] = INCBIN_U16("graphics/object_events/palettes/31.gbapal");
+const u16 gObjectEventPal_HoOh[] = INCBIN_U16("graphics/object_events/palettes/ho_oh.gbapal");
diff --git a/src/data/object_events/object_event_graphics_info.h b/src/data/object_events/object_event_graphics_info.h
index bb36c9436..c6c78dca9 100755
--- a/src/data/object_events/object_event_graphics_info.h
+++ b/src/data/object_events/object_event_graphics_info.h
@@ -1,245 +1,245 @@
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {0xFFFF, OBJ_EVENT_PAL_TAG_12, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_QuintyPlump, gObjectEventPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_NinjaBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Twin, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleGirl, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RichBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_FatMan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman4, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cook, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LinkReceptionist, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldMan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldWoman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Camper, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Picnicker, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man3, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman5, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Youngster, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BugCatcher, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PsychicM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maniac, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HexManiac, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RayquazaStill, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BlackBelt, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Beauty, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lass, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Gentleman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sailor, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Fisherman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Hiker, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Nurse, gObjectEventPicTable_Nurse, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ItemBall, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ProfBirch, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man4, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man5, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_CuttableTree, gObjectEventPicTable_CuttableTree, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MartEmployee, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Teala, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BreakableRock, gObjectEventPicTable_BreakableRock, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, OBJ_EVENT_PAL_TAG_14, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_48x48, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Truck, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_15, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_15, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirchsBag, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_16, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_27, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Poochyena, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Artist, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cameraman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_11, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_11, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_19, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MovingBox, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {0xFFFF, OBJ_EVENT_PAL_TAG_20, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CableCar, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist2, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_DevonEmployee, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sidney, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Phoebe, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Glacia, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Drake, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Roxanne, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brawly, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wattson, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Flannery, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Norman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Winona, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Liza, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tate, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wallace, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Steven, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wally, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_MayFishing, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {0xFFFF, OBJ_EVENT_PAL_TAG_21, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_96x40, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SSTidal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_26, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_88x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PichuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MarillDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DittoDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WynautDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_LotadDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikaCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_RoundCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KissCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SpinCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BallCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GrassCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_FireCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WaterCushion, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GameboyKid, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ContestJudge, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayWatering, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_8, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MayDecorating, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Archie, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maxie, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre1 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre3 = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreSide, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon3 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Groudon3, gObjectEventPicTable_GroudonSide, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Fossil, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Skitty, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_22, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_24, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Pikachu, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wingull, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_10, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azurill, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mom, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_17, OBJ_EVENT_PAL_TAG_10, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Juan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scott, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Statue, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kirlia, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Dusclops, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_28, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Red, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_28, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Leaf, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mew, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_29, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, OBJ_EVENT_PAL_TAG_30, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirthIslandStone, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Anabel, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tucker, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Greta, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {0xFFFF, OBJ_EVENT_PAL_TAG_0, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Spenser, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Noland, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OBJ_EVENT_PAL_TAG_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lucy, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brandon, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_33, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_34, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_32, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable};
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_31, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_QuintyPlump = {0xFFFF, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_L, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_QuintyPlump, gObjectEventPicTable_QuintyPlump, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_NinjaBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_NinjaBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Twin = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Twin, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LittleGirl = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LittleGirl, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Boy3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Boy3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Girl3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Girl3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RichBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RichBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FatMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_FatMan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ExpertF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ExpertF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PokefanM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PokefanM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman4, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cook = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cook, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkReceptionist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LinkReceptionist, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldMan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldMan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_OldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_OldWoman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Camper = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Camper, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Picnicker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Picnicker, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man3, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Woman5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Woman5, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Youngster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Youngster, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BugCatcher = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BugCatcher, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PsychicM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_PsychicM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SchoolKidM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SchoolKidM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maniac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maniac, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HexManiac = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HexManiac, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RayquazaStill, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwimmerF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SwimmerF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BlackBelt = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BlackBelt, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Beauty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Beauty, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lass = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lass, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Gentleman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Gentleman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sailor = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sailor, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fisherman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Fisherman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RunningTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RunningTriathleteF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hiker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Hiker, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyclingTriathleteF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_CyclingTriathleteF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Nurse = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Nurse, gObjectEventPicTable_Nurse, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ItemBall = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ItemBall, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, NULL, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeEarlyStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BerryTreeLateStages = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BerryTree, gObjectEventPicTable_PechaBerryTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ProfBirch = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ProfBirch, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man4 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man4, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Man5 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Man5, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ReporterF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ReporterF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Bard = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Hipster = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Trader = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan1, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Storyteller = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Giddy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMauvilleOldMan2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MauvilleOldMan2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedNatuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedNatuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedMagnemiteDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedMagnemiteDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedSquirtleDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedSquirtleDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedWooperDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedWooperDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPikachuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnusedPorygon2Doll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_UnusedPorygon2Doll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CuttableTree = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_CuttableTree, gObjectEventPicTable_CuttableTree, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MartEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MartEmployee, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RooftopSaleWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RooftopSaleWoman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Teala = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Teala, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BreakableRock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_BreakableRock, gObjectEventPicTable_BreakableRock, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PushableBoulder = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PushableBoulder, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MrBrineysBoat = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MrBrineysBoat, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 16, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Truck = {0xFFFF, OBJ_EVENT_PAL_TAG_TRUCK, OBJ_EVENT_PAL_TAG_NONE, 1152, 48, 48, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_48x48, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Truck, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothCarryingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothCarryingBox, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_VigorothFacingAway = {0xFFFF, OBJ_EVENT_PAL_TAG_VIGOROTH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_VigorothFacingAway, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirchsBag = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirchsBag, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_EnemyZigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_ZIGZAGOON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_EnemyZigzagoon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Poochyena = {0xFFFF, OBJ_EVENT_PAL_TAG_POOCHYENA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Poochyena, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Artist = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Artist, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_BrendanAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanSurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_BrendanSurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalBrendanFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_BrendanFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayNormal = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayMachBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayMachBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayAcroBike = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_BIKE_TIRE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_AcroBike, gObjectEventPicTable_MayAcroBike, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMaySurfing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Surfing, gObjectEventPicTable_MaySurfing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RivalMayFieldMove = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_FieldMove, gObjectEventPicTable_MayFieldMove, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Cameraman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Cameraman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanUnderwater, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayUnderwater = {0xFFFF, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayUnderwater, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MovingBox = {0xFFFF, OBJ_EVENT_PAL_TAG_MOVING_BOX, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 10, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MovingBox, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CableCar = {0xFFFF, OBJ_EVENT_PAL_TAG_CABLE_CAR, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CableCar, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scientist2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scientist2, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DevonEmployee = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_DevonEmployee, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AquaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_AquaMemberF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberM = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberM, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MagmaMemberF = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MagmaMemberF, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sidney = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sidney, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Phoebe = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Phoebe, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Glacia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Glacia, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Drake = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Drake, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Roxanne = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Roxanne, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brawly = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brawly, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wattson = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wattson, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Flannery = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Flannery, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Norman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Norman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Winona = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Winona, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Liza = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Liza, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tate = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tate, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wallace = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wallace, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Steven = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Steven, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wally = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wally, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireLittleBoy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireLittleBoy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_BrendanFishing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayFishing = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Fishing, gObjectEventPicTable_MayFishing, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HotSpringsOldWoman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_HotSpringsOldWoman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SSTidal = {0xFFFF, OBJ_EVENT_PAL_TAG_SSTIDAL, OBJ_EVENT_PAL_TAG_NONE, 1920, 96, 40, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_96x40, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SSTidal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SubmarineShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, OBJ_EVENT_PAL_TAG_NONE, 1408, 88, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_8x8, gObjectEventSpriteOamTables_88x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_SubmarineShadow, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PichuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PichuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikachuDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikachuDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MarillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MarillDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TogepiDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TogepiDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_CyndaquilDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_CyndaquilDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ChikoritaDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ChikoritaDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TotodileDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TotodileDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_JigglypuffDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_JigglypuffDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MeowthDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MeowthDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ClefairyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ClefairyDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DittoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DittoDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SmoochumDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SmoochumDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TreeckoDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TreeckoDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TorchicDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_TorchicDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MudkipDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MudkipDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DuskullDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DuskullDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WynautDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WynautDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BaltoyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BaltoyDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KecleonDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_AzurillDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_AzurillDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SkittyDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SkittyDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SwabluDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SwabluDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GulpinDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GulpinDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LotadDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_LotadDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SeedotDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SeedotDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_PikaCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_PikaCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RoundCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_RoundCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KissCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_KissCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ZigzagCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_ZigzagCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_SpinCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_SpinCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_DiamondCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 5, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_DiamondCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BallCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BallCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GrassCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_GrassCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_FireCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_FireCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_WaterCushion = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_WaterCushion, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigSnorlaxDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigSnorlaxDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRhydonDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRhydonDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigLaprasDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigLaprasDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigVenusaurDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigVenusaurDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigCharizardDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigCharizardDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigBlastoiseDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigBlastoiseDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigWailmerDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigWailmerDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegirockDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegirockDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegiceDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegiceDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BigRegisteelDoll = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BigRegisteelDoll, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latias = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Latios = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_LatiasLatios, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_GameboyKid = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GameboyKid, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_ContestJudge = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_ContestJudge, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_BrendanWatering, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayWatering = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 512, 32, 32, 0, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MayWatering, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BrendanDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_BRENDAN, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BrendanDecorating, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MayDecorating = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_MayDecorating, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Archie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Archie, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Maxie = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Maxie, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon1 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreSide, gObjectEventRotScalAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon3 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Groudon3, gObjectEventPicTable_GroudonSide, gObjectEventRotScalAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Fossil = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_S, TRUE, FALSE, TRACKS_NONE, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Fossil, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 3, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 4, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Regi, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Skitty, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2 = {0xFFFF, OBJ_EVENT_PAL_TAG_KYOGRE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_KyogreFront, gObjectEventRotScalAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2 = {0xFFFF, OBJ_EVENT_PAL_TAG_GROUDON, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_GroudonFront, gObjectEventRotScalAnimTable_KyogreGroudon};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2 = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 2048, 64, 64, 4, SHADOW_SIZE_M, FALSE, TRUE, TRACKS_FOOT, &gObjectEventBaseOam_64x64, gObjectEventSpriteOamTables_64x64, gObjectEventImageAnimTable_Rayquaza2, gObjectEventPicTable_Rayquaza, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Zigzagoon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Pikachu, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azumarill, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Wingull, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 128, 16, 16, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kecleon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_2, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 3, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_TuberMSwimming, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 128, 16, 16, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x16, gObjectEventSpriteOamTables_16x16, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Azurill, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mom, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_BrendanNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_LinkMay = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_BrendanMayNormal, gObjectEventPicTable_MayNormal, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Juan = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Juan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Scott = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Scott, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_MysteryEventDeliveryman = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_MysteryEventDeliveryman, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Statue = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_Statue, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kirlia = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_S, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Kirlia, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Dusclops = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Dusclops, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_UnionRoomAttendant = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_UnionRoomAttendant, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Red = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Red, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Leaf = {0xFFFF, OBJ_EVENT_PAL_TAG_RED_LEAF, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Leaf, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Sudowoodo = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Sudowoodo, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mew = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Mew, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Deoxys = {0xFFFF, OBJ_EVENT_PAL_TAG_DEOXYS, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Deoxys, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_BirthIslandStone = {0xFFFF, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, TRUE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Inanimate, gObjectEventPicTable_BirthIslandStone, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Anabel = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Anabel, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Tucker = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Tucker, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Greta = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Greta, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Spenser = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_1, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 2, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Spenser, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Noland = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Noland, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lucy = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_4, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 5, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lucy, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Brandon = {0xFFFF, OBJ_EVENT_PAL_TAG_NPC_3, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 4, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Brandon, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireBrendan = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_BRENDAN, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireBrendan, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_RubySapphireMay = {0xFFFF, OBJ_EVENT_PAL_TAG_RS_MAY, OBJ_EVENT_PAL_TAG_NONE, 256, 16, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_16x32, gObjectEventSpriteOamTables_16x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_RubySapphireMay, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Lugia = {0xFFFF, OBJ_EVENT_PAL_TAG_LUGIA, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_Standard, gObjectEventPicTable_Lugia, gDummySpriteAffineAnimTable};
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_HoOh = {0xFFFF, OBJ_EVENT_PAL_TAG_HO_OH, OBJ_EVENT_PAL_TAG_NONE, 512, 32, 32, 10, SHADOW_SIZE_M, FALSE, FALSE, TRACKS_FOOT, &gObjectEventBaseOam_32x32, gObjectEventSpriteOamTables_32x32, gObjectEventImageAnimTable_HoOh, gObjectEventPicTable_HoOh, gDummySpriteAffineAnimTable};
diff --git a/src/data/object_events/object_event_graphics_info_pointers.h b/src/data/object_events/object_event_graphics_info_pointers.h
index c72b0279d..0ca70fa33 100755
--- a/src/data/object_events/object_event_graphics_info_pointers.h
+++ b/src/data/object_events/object_event_graphics_info_pointers.h
@@ -202,7 +202,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regirock;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Regice;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Registeel;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Skitty;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon1;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kyogre2;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Groudon2;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Rayquaza2;
@@ -210,7 +210,7 @@ const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Zigzagoon;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Pikachu;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azumarill;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Wingull;
-const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Kecleon2;
+const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_KecleonBridgeShadow;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_TuberMSwimming;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Azurill;
const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mom;
@@ -451,7 +451,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
[OBJ_EVENT_GFX_REGICE] = &gObjectEventGraphicsInfo_Regice,
[OBJ_EVENT_GFX_REGISTEEL] = &gObjectEventGraphicsInfo_Registeel,
[OBJ_EVENT_GFX_SKITTY] = &gObjectEventGraphicsInfo_Skitty,
- [OBJ_EVENT_GFX_KECLEON_1] = &gObjectEventGraphicsInfo_Kecleon1,
+ [OBJ_EVENT_GFX_KECLEON] = &gObjectEventGraphicsInfo_Kecleon,
[OBJ_EVENT_GFX_KYOGRE_2] = &gObjectEventGraphicsInfo_Kyogre2,
[OBJ_EVENT_GFX_GROUDON_2] = &gObjectEventGraphicsInfo_Groudon2,
[OBJ_EVENT_GFX_RAYQUAZA_2] = &gObjectEventGraphicsInfo_Rayquaza2,
@@ -459,7 +459,7 @@ const struct ObjectEventGraphicsInfo *const gObjectEventGraphicsInfoPointers[NUM
[OBJ_EVENT_GFX_PIKACHU] = &gObjectEventGraphicsInfo_Pikachu,
[OBJ_EVENT_GFX_AZUMARILL] = &gObjectEventGraphicsInfo_Azumarill,
[OBJ_EVENT_GFX_WINGULL] = &gObjectEventGraphicsInfo_Wingull,
- [OBJ_EVENT_GFX_KECLEON_2] = &gObjectEventGraphicsInfo_Kecleon2,
+ [OBJ_EVENT_GFX_KECLEON_BRIDGE_SHADOW] = &gObjectEventGraphicsInfo_KecleonBridgeShadow,
[OBJ_EVENT_GFX_TUBER_M_SWIMMING] = &gObjectEventGraphicsInfo_TuberMSwimming,
[OBJ_EVENT_GFX_AZURILL] = &gObjectEventGraphicsInfo_Azurill,
[OBJ_EVENT_GFX_MOM] = &gObjectEventGraphicsInfo_Mom,
diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h
index 86efd7905..1dbffba42 100644
--- a/src/data/trainer_graphics/back_pic_tables.h
+++ b/src/data/trainer_graphics/back_pic_tables.h
@@ -13,18 +13,22 @@ const struct MonCoords gTrainerBackPicCoords[] =
// this table goes functionally unused, since none of these pics are compressed
// and the place they would get extracted to gets overwritten later anyway
// the casts are so they'll play nice with the strict struct definition
+#define TRAINER_BACK_SPRITE(trainerPic, sprite, size) [TRAINER_BACK_PIC_##trainerPic] = {(const u32 *)sprite, size, TRAINER_BACK_PIC_##trainerPic}
+
const struct CompressedSpriteSheet gTrainerBackPicTable[] =
{
- (const u32 *)gTrainerBackPic_Brendan, 0x2000, TRAINER_BACK_PIC_BRENDAN,
- (const u32 *)gTrainerBackPic_May, 0x2000, TRAINER_BACK_PIC_MAY,
- (const u32 *)gTrainerBackPic_Red, 0x2800, TRAINER_BACK_PIC_RED,
- (const u32 *)gTrainerBackPic_Leaf, 0x2800, TRAINER_BACK_PIC_LEAF,
- (const u32 *)gTrainerBackPic_RubySapphireBrendan, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN,
- (const u32 *)gTrainerBackPic_RubySapphireMay, 0x2000, TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY,
- (const u32 *)gTrainerBackPic_Wally, 0x2000, TRAINER_BACK_PIC_WALLY,
- (const u32 *)gTrainerBackPic_Steven, 0x2000, TRAINER_BACK_PIC_STEVEN,
+ TRAINER_BACK_SPRITE(BRENDAN, gTrainerBackPic_Brendan, 0x2000),
+ TRAINER_BACK_SPRITE(MAY, gTrainerBackPic_May, 0x2000),
+ TRAINER_BACK_SPRITE(RED, gTrainerBackPic_Red, 0x2800),
+ TRAINER_BACK_SPRITE(LEAF, gTrainerBackPic_Leaf, 0x2800),
+ TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_BRENDAN, gTrainerBackPic_RubySapphireBrendan, 0x2000),
+ TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_MAY, gTrainerBackPic_RubySapphireMay, 0x2000),
+ TRAINER_BACK_SPRITE(WALLY, gTrainerBackPic_Wally, 0x2000),
+ TRAINER_BACK_SPRITE(STEVEN, gTrainerBackPic_Steven, 0x2000),
};
+#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic}
+
const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] =
{
TRAINER_BACK_PAL(BRENDAN, gTrainerPalette_Brendan),
diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h
index c3408b4c3..e751f3c1d 100644
--- a/src/data/trainer_graphics/front_pic_tables.h
+++ b/src/data/trainer_graphics/front_pic_tables.h
@@ -95,6 +95,8 @@ const struct MonCoords gTrainerFrontPicCoords[] =
[TRAINER_PIC_RS_MAY] = {.size = 8, .y_offset = 1},
};
+#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
+
const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
{
TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, 0x800),
@@ -192,6 +194,8 @@ const struct CompressedSpriteSheet gTrainerFrontPicTable[] =
TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, 0x800),
};
+#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
+
const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] =
{
TRAINER_PAL(HIKER, gTrainerPalette_Hiker),
diff --git a/src/daycare.c b/src/daycare.c
index a438c8e85..511fa0551 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -547,8 +547,19 @@ static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare)
for (i = 0; i < INHERITED_IV_COUNT; i++)
{
// Randomly pick an IV from the available list and stop from being chosen again.
+ // BUG: Instead of removing the IV that was just picked, this
+ // removes position 0 (HP) then position 1 (DEF), then position 2. This is why HP and DEF
+ // have a lower chance to be inherited in Emerald and why the IV picked for inheritance can
+ // be repeated. Amusingly, FRLG and RS also got this wrong. They remove selectedIvs[i], which
+ // is not an index! This means that it can sometimes remove the wrong stat.
+ #ifndef BUGFIX
selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)];
RemoveIVIndexFromList(availableIVs, i);
+ #else
+ u8 index = Random() % (NUM_STATS - i);
+ selectedIvs[i] = availableIVs[index];
+ RemoveIVIndexFromList(availableIVs, index);
+ #endif
}
// Determine which parent each of the selected IVs should inherit from.
@@ -614,10 +625,7 @@ static u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves)
for (i = 0; i < EGG_MOVES_ARRAY_COUNT; i++)
{
if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
- {
- // TODO: the curly braces around this if statement are required for a matching build.
break;
- }
eggMoves[i] = gEggMoves[eggMoveIdx + i];
numEggMoves++;
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 87f0a13fd..f90441b68 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -434,7 +434,7 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc
u16 species = GetMonData(mon, MON_DATA_SPECIES);
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[(a0 * 2) + 1],
+ gMonSpritesGfxPtr->sprites.ptr [(a0 * 2) + 1],
species, pid);
LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
*speciesLoc = species;
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 6d89adea6..1d06ddc84 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -401,42 +401,43 @@ const u8 gInitialMovementTypeFacingDirections[] = {
[MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT] = DIR_EAST,
};
-#define OBJ_EVENT_PAL_TAG_0 0x1103
-#define OBJ_EVENT_PAL_TAG_1 0x1104
-#define OBJ_EVENT_PAL_TAG_2 0x1105
-#define OBJ_EVENT_PAL_TAG_3 0x1106
-#define OBJ_EVENT_PAL_TAG_4 0x1107
-#define OBJ_EVENT_PAL_TAG_5 0x1108
-#define OBJ_EVENT_PAL_TAG_6 0x1109
-#define OBJ_EVENT_PAL_TAG_7 0x110A
-#define OBJ_EVENT_PAL_TAG_8 0x1100
-#define OBJ_EVENT_PAL_TAG_9 0x1101
-#define OBJ_EVENT_PAL_TAG_10 0x1102
-#define OBJ_EVENT_PAL_TAG_11 0x1115
-#define OBJ_EVENT_PAL_TAG_12 0x110B
-#define OBJ_EVENT_PAL_TAG_13 0x110C
-#define OBJ_EVENT_PAL_TAG_14 0x110D
-#define OBJ_EVENT_PAL_TAG_15 0x110E
-#define OBJ_EVENT_PAL_TAG_16 0x110F
-#define OBJ_EVENT_PAL_TAG_17 0x1110
-#define OBJ_EVENT_PAL_TAG_18 0x1111
-#define OBJ_EVENT_PAL_TAG_19 0x1112
-#define OBJ_EVENT_PAL_TAG_20 0x1113
-#define OBJ_EVENT_PAL_TAG_21 0x1114
-#define OBJ_EVENT_PAL_TAG_22 0x1116
-#define OBJ_EVENT_PAL_TAG_23 0x1117
-#define OBJ_EVENT_PAL_TAG_24 0x1118
-#define OBJ_EVENT_PAL_TAG_25 0x1119
-#define OBJ_EVENT_PAL_TAG_26 0x111B
-#define OBJ_EVENT_PAL_TAG_27 0x111C
-#define OBJ_EVENT_PAL_TAG_28 0x111D
-#define OBJ_EVENT_PAL_TAG_29 0x111E
-#define OBJ_EVENT_PAL_TAG_30 0x111F
-#define OBJ_EVENT_PAL_TAG_31 0x1120
-#define OBJ_EVENT_PAL_TAG_32 0x1121
-#define OBJ_EVENT_PAL_TAG_33 0x1122
-#define OBJ_EVENT_PAL_TAG_34 0x1123
-#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
+#define OBJ_EVENT_PAL_TAG_BRENDAN 0x1100
+#define OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION 0x1101
+#define OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION 0x1102
+#define OBJ_EVENT_PAL_TAG_NPC_1 0x1103
+#define OBJ_EVENT_PAL_TAG_NPC_2 0x1104
+#define OBJ_EVENT_PAL_TAG_NPC_3 0x1105
+#define OBJ_EVENT_PAL_TAG_NPC_4 0x1106
+#define OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION 0x1107
+#define OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION 0x1108
+#define OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION 0x1109
+#define OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION 0x110A
+#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP 0x110B
+#define OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION 0x110C
+#define OBJ_EVENT_PAL_TAG_TRUCK 0x110D
+#define OBJ_EVENT_PAL_TAG_VIGOROTH 0x110E
+#define OBJ_EVENT_PAL_TAG_ZIGZAGOON 0x110F
+#define OBJ_EVENT_PAL_TAG_MAY 0x1110
+#define OBJ_EVENT_PAL_TAG_MAY_REFLECTION 0x1111
+#define OBJ_EVENT_PAL_TAG_MOVING_BOX 0x1112
+#define OBJ_EVENT_PAL_TAG_CABLE_CAR 0x1113
+#define OBJ_EVENT_PAL_TAG_SSTIDAL 0x1114
+#define OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER 0x1115
+#define OBJ_EVENT_PAL_TAG_KYOGRE 0x1116
+#define OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION 0x1117
+#define OBJ_EVENT_PAL_TAG_GROUDON 0x1118
+#define OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION 0x1119
+#define OBJ_EVENT_PAL_TAG_UNUSED 0x111A
+#define OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW 0x111B
+#define OBJ_EVENT_PAL_TAG_POOCHYENA 0x111C
+#define OBJ_EVENT_PAL_TAG_RED_LEAF 0x111D
+#define OBJ_EVENT_PAL_TAG_DEOXYS 0x111E
+#define OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE 0x111F
+#define OBJ_EVENT_PAL_TAG_HO_OH 0x1120
+#define OBJ_EVENT_PAL_TAG_LUGIA 0x1121
+#define OBJ_EVENT_PAL_TAG_RS_BRENDAN 0x1122
+#define OBJ_EVENT_PAL_TAG_RS_MAY 0x1123
+#define OBJ_EVENT_PAL_TAG_NONE 0x11FF
#include "data/object_events/object_event_graphics_info_pointers.h"
#include "data/field_effects/field_effect_object_template_pointers.h"
@@ -446,224 +447,224 @@ const u8 gInitialMovementTypeFacingDirections[] = {
#include "data/object_events/object_event_subsprites.h"
#include "data/object_events/object_event_graphics_info.h"
-const struct SpritePalette sObjectEventSpritePalettes[] = {
- {gObjectEventPalette0, OBJ_EVENT_PAL_TAG_0},
- {gObjectEventPalette1, OBJ_EVENT_PAL_TAG_1},
- {gObjectEventPalette2, OBJ_EVENT_PAL_TAG_2},
- {gObjectEventPalette3, OBJ_EVENT_PAL_TAG_3},
- {gObjectEventPalette4, OBJ_EVENT_PAL_TAG_4},
- {gObjectEventPalette5, OBJ_EVENT_PAL_TAG_5},
- {gObjectEventPalette6, OBJ_EVENT_PAL_TAG_6},
- {gObjectEventPalette7, OBJ_EVENT_PAL_TAG_7},
- {gObjectEventPalette8, OBJ_EVENT_PAL_TAG_8},
- {gObjectEventPalette9, OBJ_EVENT_PAL_TAG_9},
- {gObjectEventPalette10, OBJ_EVENT_PAL_TAG_10},
- {gObjectEventPalette11, OBJ_EVENT_PAL_TAG_11},
- {gObjectEventPalette12, OBJ_EVENT_PAL_TAG_12},
- {gObjectEventPalette13, OBJ_EVENT_PAL_TAG_13},
- {gObjectEventPalette14, OBJ_EVENT_PAL_TAG_14},
- {gObjectEventPalette15, OBJ_EVENT_PAL_TAG_15},
- {gObjectEventPalette16, OBJ_EVENT_PAL_TAG_16},
- {gObjectEventPalette17, OBJ_EVENT_PAL_TAG_17},
- {gObjectEventPalette18, OBJ_EVENT_PAL_TAG_18},
- {gObjectEventPalette19, OBJ_EVENT_PAL_TAG_19},
- {gObjectEventPalette20, OBJ_EVENT_PAL_TAG_20},
- {gObjectEventPalette21, OBJ_EVENT_PAL_TAG_21},
- {gObjectEventPalette22, OBJ_EVENT_PAL_TAG_22},
- {gObjectEventPalette23, OBJ_EVENT_PAL_TAG_23},
- {gObjectEventPalette24, OBJ_EVENT_PAL_TAG_24},
- {gObjectEventPalette25, OBJ_EVENT_PAL_TAG_25},
- {gObjectEventPalette26, OBJ_EVENT_PAL_TAG_26},
- {gObjectEventPalette27, OBJ_EVENT_PAL_TAG_27},
- {gObjectEventPalette28, OBJ_EVENT_PAL_TAG_28},
- {gObjectEventPalette29, OBJ_EVENT_PAL_TAG_29},
- {gObjectEventPalette30, OBJ_EVENT_PAL_TAG_30},
- {gObjectEventPalette31, OBJ_EVENT_PAL_TAG_31},
- {gObjectEventPalette32, OBJ_EVENT_PAL_TAG_32},
- {gObjectEventPalette33, OBJ_EVENT_PAL_TAG_33},
- {gObjectEventPalette34, OBJ_EVENT_PAL_TAG_34},
- {NULL, 0x0000},
+static const struct SpritePalette sObjectEventSpritePalettes[] = {
+ {gObjectEventPal_Npc1, OBJ_EVENT_PAL_TAG_NPC_1},
+ {gObjectEventPal_Npc2, OBJ_EVENT_PAL_TAG_NPC_2},
+ {gObjectEventPal_Npc3, OBJ_EVENT_PAL_TAG_NPC_3},
+ {gObjectEventPal_Npc4, OBJ_EVENT_PAL_TAG_NPC_4},
+ {gObjectEventPal_Npc1Reflection, OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION},
+ {gObjectEventPal_Npc2Reflection, OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION},
+ {gObjectEventPal_Npc3Reflection, OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION},
+ {gObjectEventPal_Npc4Reflection, OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION},
+ {gObjectEventPal_Brendan, OBJ_EVENT_PAL_TAG_BRENDAN},
+ {gObjectEventPal_BrendanReflection, OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION},
+ {gObjectEventPal_BridgeReflection, OBJ_EVENT_PAL_TAG_BRIDGE_REFLECTION},
+ {gObjectEventPal_PlayerUnderwater, OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER},
+ {gObjectEventPal_QuintyPlump, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP},
+ {gObjectEventPal_QuintyPlumpReflection, OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION},
+ {gObjectEventPal_Truck, OBJ_EVENT_PAL_TAG_TRUCK},
+ {gObjectEventPal_Vigoroth, OBJ_EVENT_PAL_TAG_VIGOROTH},
+ {gObjectEventPal_EnemyZigzagoon, OBJ_EVENT_PAL_TAG_ZIGZAGOON},
+ {gObjectEventPal_May, OBJ_EVENT_PAL_TAG_MAY},
+ {gObjectEventPal_MayReflection, OBJ_EVENT_PAL_TAG_MAY_REFLECTION},
+ {gObjectEventPal_MovingBox, OBJ_EVENT_PAL_TAG_MOVING_BOX},
+ {gObjectEventPal_CableCar, OBJ_EVENT_PAL_TAG_CABLE_CAR},
+ {gObjectEventPal_SSTidal, OBJ_EVENT_PAL_TAG_SSTIDAL},
+ {gObjectEventPal_Kyogre, OBJ_EVENT_PAL_TAG_KYOGRE},
+ {gObjectEventPal_KyogreReflection, OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION},
+ {gObjectEventPal_Groudon, OBJ_EVENT_PAL_TAG_GROUDON},
+ {gObjectEventPal_GroudonReflection, OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION},
+ {gObjectEventPal_SubmarineShadow, OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW},
+ {gObjectEventPal_Poochyena, OBJ_EVENT_PAL_TAG_POOCHYENA},
+ {gObjectEventPal_RedLeaf, OBJ_EVENT_PAL_TAG_RED_LEAF},
+ {gObjectEventPal_Deoxys, OBJ_EVENT_PAL_TAG_DEOXYS},
+ {gObjectEventPal_BirthIslandStone, OBJ_EVENT_PAL_TAG_BIRTH_ISLAND_STONE},
+ {gObjectEventPal_HoOh, OBJ_EVENT_PAL_TAG_HO_OH},
+ {gObjectEventPal_Lugia, OBJ_EVENT_PAL_TAG_LUGIA},
+ {gObjectEventPal_RubySapphireBrendan, OBJ_EVENT_PAL_TAG_RS_BRENDAN},
+ {gObjectEventPal_RubySapphireMay, OBJ_EVENT_PAL_TAG_RS_MAY},
+ {NULL, 0x0000},
};
-const u16 gPlayerReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_9,
+static const u16 sReflectionPaletteTags_Brendan[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
};
-const u16 Unknown_0850BCF0[] = {
- OBJ_EVENT_PAL_TAG_18,
- OBJ_EVENT_PAL_TAG_18,
- OBJ_EVENT_PAL_TAG_18,
- OBJ_EVENT_PAL_TAG_18,
+static const u16 sReflectionPaletteTags_May[] = {
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
+ OBJ_EVENT_PAL_TAG_MAY_REFLECTION,
};
-const u16 gPlayerUnderwaterReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_11,
- OBJ_EVENT_PAL_TAG_11,
- OBJ_EVENT_PAL_TAG_11,
- OBJ_EVENT_PAL_TAG_11,
+static const u16 sReflectionPaletteTags_PlayerUnderwater[] = {
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
+ OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER,
};
-const struct PairedPalettes gPlayerReflectionPaletteSets[] = {
- {OBJ_EVENT_PAL_TAG_8, gPlayerReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_17, Unknown_0850BCF0},
- {OBJ_EVENT_PAL_TAG_11, gPlayerUnderwaterReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_NONE, NULL},
+static const struct PairedPalettes sPlayerReflectionPaletteSets[] = {
+ {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan},
+ {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May},
+ {OBJ_EVENT_PAL_TAG_PLAYER_UNDERWATER, sReflectionPaletteTags_PlayerUnderwater},
+ {OBJ_EVENT_PAL_TAG_NONE, NULL},
};
-const u16 gQuintyPlumpReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_13,
- OBJ_EVENT_PAL_TAG_13,
- OBJ_EVENT_PAL_TAG_13,
- OBJ_EVENT_PAL_TAG_13,
+static const u16 sReflectionPaletteTags_QuintyPlump[] = {
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
+ OBJ_EVENT_PAL_TAG_QUINTY_PLUMP_REFLECTION,
};
-const u16 gTruckReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_14,
- OBJ_EVENT_PAL_TAG_14,
- OBJ_EVENT_PAL_TAG_14,
- OBJ_EVENT_PAL_TAG_14,
+static const u16 sReflectionPaletteTags_Truck[] = {
+ OBJ_EVENT_PAL_TAG_TRUCK,
+ OBJ_EVENT_PAL_TAG_TRUCK,
+ OBJ_EVENT_PAL_TAG_TRUCK,
+ OBJ_EVENT_PAL_TAG_TRUCK,
};
-const u16 gVigorothMoverReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_15,
- OBJ_EVENT_PAL_TAG_15,
- OBJ_EVENT_PAL_TAG_15,
- OBJ_EVENT_PAL_TAG_15,
+static const u16 sReflectionPaletteTags_VigorothMover[] = {
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
+ OBJ_EVENT_PAL_TAG_VIGOROTH,
};
-const u16 gMovingBoxReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_19,
- OBJ_EVENT_PAL_TAG_19,
- OBJ_EVENT_PAL_TAG_19,
- OBJ_EVENT_PAL_TAG_19,
+static const u16 sReflectionPaletteTags_MovingBox[] = {
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
+ OBJ_EVENT_PAL_TAG_MOVING_BOX,
};
-const u16 gCableCarReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_20,
- OBJ_EVENT_PAL_TAG_20,
- OBJ_EVENT_PAL_TAG_20,
- OBJ_EVENT_PAL_TAG_20,
+static const u16 sReflectionPaletteTags_CableCar[] = {
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
+ OBJ_EVENT_PAL_TAG_CABLE_CAR,
};
-const u16 gSSTidalReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_21,
- OBJ_EVENT_PAL_TAG_21,
- OBJ_EVENT_PAL_TAG_21,
- OBJ_EVENT_PAL_TAG_21,
+static const u16 sReflectionPaletteTags_SSTidal[] = {
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
+ OBJ_EVENT_PAL_TAG_SSTIDAL,
};
-const u16 gSubmarineShadowReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_26,
- OBJ_EVENT_PAL_TAG_26,
- OBJ_EVENT_PAL_TAG_26,
- OBJ_EVENT_PAL_TAG_26,
+static const u16 sReflectionPaletteTags_SubmarineShadow[] = {
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
+ OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW,
};
-const u16 Unknown_0850BD58[] = { // Kyogre2?
- OBJ_EVENT_PAL_TAG_23,
- OBJ_EVENT_PAL_TAG_23,
- OBJ_EVENT_PAL_TAG_23,
- OBJ_EVENT_PAL_TAG_23,
+static const u16 sReflectionPaletteTags_Kyogre[] = {
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
+ OBJ_EVENT_PAL_TAG_KYOGRE_REFLECTION,
};
-const u16 Unknown_0850BD60[] = { // Groudon2?
- OBJ_EVENT_PAL_TAG_25,
- OBJ_EVENT_PAL_TAG_25,
- OBJ_EVENT_PAL_TAG_25,
- OBJ_EVENT_PAL_TAG_25,
+static const u16 sReflectionPaletteTags_Groudon[] = {
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
+ OBJ_EVENT_PAL_TAG_GROUDON_REFLECTION,
};
-const u16 Unknown_0850BD68[] = { // Invisible Keckleon?
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_6,
+static const u16 sReflectionPaletteTags_Npc3[] = { // Only used by the Route 120 bridge Kecleon
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
};
-const u16 gRedLeafReflectionPaletteTags[] = {
- OBJ_EVENT_PAL_TAG_28,
- OBJ_EVENT_PAL_TAG_28,
- OBJ_EVENT_PAL_TAG_28,
- OBJ_EVENT_PAL_TAG_28,
+static const u16 sReflectionPaletteTags_RedLeaf[] = {
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
+ OBJ_EVENT_PAL_TAG_RED_LEAF,
};
-const struct PairedPalettes gSpecialObjectReflectionPaletteSets[] = {
- {OBJ_EVENT_PAL_TAG_8, gPlayerReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_17, Unknown_0850BCF0},
- {OBJ_EVENT_PAL_TAG_12, gQuintyPlumpReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_14, gTruckReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_15, gVigorothMoverReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_19, gMovingBoxReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_20, gCableCarReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_21, gSSTidalReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_22, Unknown_0850BD58},
- {OBJ_EVENT_PAL_TAG_24, Unknown_0850BD60},
- {OBJ_EVENT_PAL_TAG_2, Unknown_0850BD68},
- {OBJ_EVENT_PAL_TAG_26, gSubmarineShadowReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_28, gRedLeafReflectionPaletteTags},
- {OBJ_EVENT_PAL_TAG_NONE, NULL},
+static const struct PairedPalettes sSpecialObjectReflectionPaletteSets[] = {
+ {OBJ_EVENT_PAL_TAG_BRENDAN, sReflectionPaletteTags_Brendan},
+ {OBJ_EVENT_PAL_TAG_MAY, sReflectionPaletteTags_May},
+ {OBJ_EVENT_PAL_TAG_QUINTY_PLUMP, sReflectionPaletteTags_QuintyPlump},
+ {OBJ_EVENT_PAL_TAG_TRUCK, sReflectionPaletteTags_Truck},
+ {OBJ_EVENT_PAL_TAG_VIGOROTH, sReflectionPaletteTags_VigorothMover},
+ {OBJ_EVENT_PAL_TAG_MOVING_BOX, sReflectionPaletteTags_MovingBox},
+ {OBJ_EVENT_PAL_TAG_CABLE_CAR, sReflectionPaletteTags_CableCar},
+ {OBJ_EVENT_PAL_TAG_SSTIDAL, sReflectionPaletteTags_SSTidal},
+ {OBJ_EVENT_PAL_TAG_KYOGRE, sReflectionPaletteTags_Kyogre},
+ {OBJ_EVENT_PAL_TAG_GROUDON, sReflectionPaletteTags_Groudon},
+ {OBJ_EVENT_PAL_TAG_NPC_3, sReflectionPaletteTags_Npc3},
+ {OBJ_EVENT_PAL_TAG_SUBMARINE_SHADOW, sReflectionPaletteTags_SubmarineShadow},
+ {OBJ_EVENT_PAL_TAG_RED_LEAF, sReflectionPaletteTags_RedLeaf},
+ {OBJ_EVENT_PAL_TAG_NONE, NULL},
};
-const u16 gObjectPaletteTags0[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags0[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 gObjectPaletteTags1[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags1[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 gObjectPaletteTags2[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags2[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 gObjectPaletteTags3[] = {
- OBJ_EVENT_PAL_TAG_8,
- OBJ_EVENT_PAL_TAG_9,
- OBJ_EVENT_PAL_TAG_0,
- OBJ_EVENT_PAL_TAG_1,
- OBJ_EVENT_PAL_TAG_2,
- OBJ_EVENT_PAL_TAG_3,
- OBJ_EVENT_PAL_TAG_4,
- OBJ_EVENT_PAL_TAG_5,
- OBJ_EVENT_PAL_TAG_6,
- OBJ_EVENT_PAL_TAG_7,
+static const u16 sObjectPaletteTags3[] = {
+ OBJ_EVENT_PAL_TAG_BRENDAN,
+ OBJ_EVENT_PAL_TAG_BRENDAN_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_1,
+ OBJ_EVENT_PAL_TAG_NPC_2,
+ OBJ_EVENT_PAL_TAG_NPC_3,
+ OBJ_EVENT_PAL_TAG_NPC_4,
+ OBJ_EVENT_PAL_TAG_NPC_1_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_2_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_3_REFLECTION,
+ OBJ_EVENT_PAL_TAG_NPC_4_REFLECTION,
};
-const u16 *const gObjectPaletteTagSets[] = {
- gObjectPaletteTags0,
- gObjectPaletteTags1,
- gObjectPaletteTags2,
- gObjectPaletteTags3,
+static const u16 *const sObjectPaletteTagSets[] = {
+ sObjectPaletteTags0,
+ sObjectPaletteTags1,
+ sObjectPaletteTags2,
+ sObjectPaletteTags3,
};
#include "data/object_events/berry_tree_graphics_tables.h"
@@ -1232,8 +1233,8 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template,
objectEvent->previousCoords.y = y;
objectEvent->currentElevation = template->elevation;
objectEvent->previousElevation = template->elevation;
- objectEvent->range.as_nybbles.x = template->movementRangeX;
- objectEvent->range.as_nybbles.y = template->movementRangeY;
+ objectEvent->rangeX = template->movementRangeX;
+ objectEvent->rangeY = template->movementRangeY;
objectEvent->trainerType = template->trainerType;
objectEvent->mapNum = mapNum;
objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId;
@@ -1242,13 +1243,13 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template,
SetObjectEventDynamicGraphicsId(objectEvent);
if (gRangedMovementTypes[objectEvent->movementType])
{
- if (objectEvent->range.as_nybbles.x == 0)
+ if (objectEvent->rangeX == 0)
{
- objectEvent->range.as_nybbles.x++;
+ objectEvent->rangeX++;
}
- if (objectEvent->range.as_nybbles.y == 0)
+ if (objectEvent->rangeY == 0)
{
- objectEvent->range.as_nybbles.y++;
+ objectEvent->rangeY++;
}
}
return objectEventId;
@@ -1295,22 +1296,19 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 *
{
u8 i = 0;
- for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
+ for (i = 0; i < OBJECT_EVENTS_COUNT && gObjectEvents[i].active; i++)
{
- if (!gObjectEvents[i].active)
- break;
if (gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup)
return TRUE;
}
if (i >= OBJECT_EVENTS_COUNT)
return TRUE;
*objectEventId = i;
- do
+ for (; i < OBJECT_EVENTS_COUNT; i++)
{
if (gObjectEvents[i].active && gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup)
return TRUE;
- i++;
- } while (i < OBJECT_EVENTS_COUNT);
+ }
return FALSE;
}
@@ -1367,16 +1365,16 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
{
- LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, 0);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, 0);
}
else if (paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, 10);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, 10);
}
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
}
if (objectEvent->movementType == MOVEMENT_TYPE_INVISIBLE)
@@ -1479,7 +1477,7 @@ static void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(graphicsId);
spriteTemplate->tileTag = graphicsInfo->tileTag;
- spriteTemplate->paletteTag = graphicsInfo->paletteTag1;
+ spriteTemplate->paletteTag = graphicsInfo->paletteTag;
spriteTemplate->oam = graphicsInfo->oam;
spriteTemplate->anims = graphicsInfo->anims;
spriteTemplate->images = graphicsInfo->images;
@@ -1556,11 +1554,11 @@ u8 CreateObjectSprite(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
sprite->data[1] = z;
if (graphicsInfo->paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (graphicsInfo->paletteSlot >= 16)
{
- sub_808EAB0(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot | 0xf0);
+ sub_808EAB0(graphicsInfo->paletteTag, graphicsInfo->paletteSlot | 0xf0);
}
if (subspriteTables != NULL)
{
@@ -1696,16 +1694,16 @@ static void sub_808E1B8(u8 objectEventId, s16 x, s16 y)
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
{
- LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
}
*(u16 *)&spriteTemplate.paletteTag = 0xFFFF;
spriteId = CreateSprite(&spriteTemplate, 0, 0, 0);
@@ -1772,16 +1770,16 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
paletteSlot = graphicsInfo->paletteSlot;
if (paletteSlot == 0)
{
- PatchObjectPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ PatchObjectPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, graphicsInfo->paletteSlot);
}
else if (paletteSlot >= 16)
{
paletteSlot -= 16;
- sub_808EAB0(graphicsInfo->paletteTag1, paletteSlot);
+ sub_808EAB0(graphicsInfo->paletteTag, paletteSlot);
}
sprite->oam.shape = graphicsInfo->oam->shape;
sprite->oam.size = graphicsInfo->oam->size;
@@ -2033,11 +2031,11 @@ void LoadPlayerObjectReflectionPalette(u16 tag, u8 slot)
u8 i;
PatchObjectPalette(tag, slot);
- for (i = 0; gPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
+ for (i = 0; sPlayerReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
{
- if (gPlayerReflectionPaletteSets[i].tag == tag)
+ if (sPlayerReflectionPaletteSets[i].tag == tag)
{
- PatchObjectPalette(gPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
+ PatchObjectPalette(sPlayerReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
return;
}
}
@@ -2049,11 +2047,11 @@ void LoadSpecialObjectReflectionPalette(u16 tag, u8 slot)
sCurrentSpecialObjectPaletteTag = tag;
PatchObjectPalette(tag, slot);
- for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
+ for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
{
- if (gSpecialObjectReflectionPaletteSets[i].tag == tag)
+ if (sSpecialObjectReflectionPaletteSets[i].tag == tag)
{
- PatchObjectPalette(gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
+ PatchObjectPalette(sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType], gReflectionEffectPaletteMap[slot]);
return;
}
}
@@ -2504,12 +2502,12 @@ void InitObjectEventPalettes(u8 palSlot)
sCurrentReflectionType = palSlot;
if (palSlot == 1)
{
- PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 6);
+ PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 6);
gReservedSpritePaletteCount = 8;
}
else
{
- PatchObjectPaletteRange(gObjectPaletteTagSets[sCurrentReflectionType], 0, 10);
+ PatchObjectPaletteRange(sObjectPaletteTagSets[sCurrentReflectionType], 0, 10);
}
}
@@ -2519,13 +2517,13 @@ u16 GetObjectPaletteTag(u8 palSlot)
if (palSlot < 10)
{
- return gObjectPaletteTagSets[sCurrentReflectionType][palSlot];
+ return sObjectPaletteTagSets[sCurrentReflectionType][palSlot];
}
- for (i = 0; gSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
+ for (i = 0; sSpecialObjectReflectionPaletteSets[i].tag != OBJ_EVENT_PAL_TAG_NONE; i++)
{
- if (gSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag)
+ if (sSpecialObjectReflectionPaletteSets[i].tag == sCurrentSpecialObjectPaletteTag)
{
- return gSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType];
+ return sSpecialObjectReflectionPaletteSets[i].data[sCurrentReflectionType];
}
}
return OBJ_EVENT_PAL_TAG_NONE;
@@ -4758,19 +4756,19 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv
s16 top;
s16 bottom;
- if (objectEvent->range.as_nybbles.x != 0)
+ if (objectEvent->rangeX != 0)
{
- left = objectEvent->initialCoords.x - objectEvent->range.as_nybbles.x;
- right = objectEvent->initialCoords.x + objectEvent->range.as_nybbles.x;
+ left = objectEvent->initialCoords.x - objectEvent->rangeX;
+ right = objectEvent->initialCoords.x + objectEvent->rangeX;
if (left > x || right < x)
{
return TRUE;
}
}
- if (objectEvent->range.as_nybbles.y != 0)
+ if (objectEvent->rangeY != 0)
{
- top = objectEvent->initialCoords.y - objectEvent->range.as_nybbles.y;
- bottom = objectEvent->initialCoords.y + objectEvent->range.as_nybbles.y;
+ top = objectEvent->initialCoords.y - objectEvent->rangeY;
+ bottom = objectEvent->initialCoords.y + objectEvent->rangeY;
if (top > y || bottom < y)
{
return TRUE;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 22376a478..d41bc5970 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -255,7 +255,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
trainerId = GetMonData(mon, MON_DATA_OT_ID);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
currSpecies);
pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x110, 0x20);
@@ -270,7 +270,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
// postEvo sprite
DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
- gMonSpritesGfxPtr->sprites[3],
+ gMonSpritesGfxPtr->sprites.ptr[3],
speciesToEvolve);
pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
@@ -347,7 +347,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
gReservedSpritePaletteCount = 4;
DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
- gMonSpritesGfxPtr->sprites[3],
+ gMonSpritesGfxPtr->sprites.ptr[3],
postEvoSpecies);
pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality);
@@ -419,7 +419,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
u32 trainerId = GetMonData(Mon, MON_DATA_OT_ID);
u32 personality = GetMonData(Mon, MON_DATA_PERSONALITY);
DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
- gMonSpritesGfxPtr->sprites[3],
+ gMonSpritesGfxPtr->sprites.ptr[3],
postEvoSpecies);
pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
@@ -483,7 +483,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
sEvoStructPtr->preEvoSpriteID = preEvoSpriteID;
DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
- gMonSpritesGfxPtr->sprites[1],
+ gMonSpritesGfxPtr->sprites.ptr[1],
speciesToEvolve);
pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
diff --git a/src/field_effect.c b/src/field_effect.c
index 41f1a899c..5a18557eb 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -3846,7 +3846,6 @@ bool8 FldEff_MoveDeoxysRock(struct Sprite* sprite)
static void Task_MoveDeoxysRock(u8 taskId)
{
- // BUG: Possible divide by zero
s16 *data = gTasks[taskId].data;
struct Sprite *sprite = &gSprites[data[1]];
switch (data[0])
@@ -3854,8 +3853,16 @@ static void Task_MoveDeoxysRock(u8 taskId)
case 0:
data[4] = sprite->pos1.x << 4;
data[5] = sprite->pos1.y << 4;
- data[6] = (data[2] * 16 - data[4]) / data[8];
- data[7] = (data[3] * 16 - data[5]) / data[8];
+
+ // UB: Possible divide by zero
+ #ifdef UBFIX
+ #define DIVISOR (data[8] ? data[8] : 1);
+ #else
+ #define DIVISOR (data[8])
+ #endif
+
+ data[6] = (data[2] * 16 - data[4]) / DIVISOR;
+ data[7] = (data[3] * 16 - data[5]) / DIVISOR;
data[0]++;
case 1:
if (data[8] != 0)
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 886e023d1..2322232b8 100755
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -81,15 +81,15 @@ static void LoadObjectRegularReflectionPalette(struct ObjectEvent *objectEvent,
const struct ObjectEventGraphicsInfo *graphicsInfo;
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
- if (graphicsInfo->paletteTag2 != OBJ_EVENT_PAL_TAG_NONE)
+ if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE)
{
if (graphicsInfo->paletteSlot == 0)
{
- LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag1, paletteIndex);
+ LoadPlayerObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else if (graphicsInfo->paletteSlot == 10)
{
- LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag1, paletteIndex);
+ LoadSpecialObjectReflectionPalette(graphicsInfo->paletteTag, paletteIndex);
}
else
{
@@ -106,9 +106,9 @@ static void LoadObjectHighBridgeReflectionPalette(struct ObjectEvent *objectEven
const struct ObjectEventGraphicsInfo *graphicsInfo;
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
- if (graphicsInfo->paletteTag2 != OBJ_EVENT_PAL_TAG_NONE)
+ if (graphicsInfo->reflectionPaletteTag != OBJ_EVENT_PAL_TAG_NONE)
{
- PatchObjectPalette(graphicsInfo->paletteTag2, paletteNum);
+ PatchObjectPalette(graphicsInfo->reflectionPaletteTag, paletteNum);
UpdateSpritePaletteWithWeather(paletteNum);
}
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index f8c4e79f1..f57cc9979 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -342,10 +342,6 @@ void PlayerStep(u8 direction, u16 newKeys, u16 heldKeys)
static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEvent, u8 direction)
{
- u8 r5 = direction;
- u8 r6 = direction;
- r6++; r6--;
-
if (ObjectEventIsMovementOverridden(playerObjEvent)
&& !ObjectEventClearHeldMovementIfFinished(playerObjEvent))
{
@@ -357,13 +353,13 @@ static bool8 TryInterruptObjectEventSpecialAnim(struct ObjectEvent *playerObjEve
return TRUE;
}
- if (playerObjEvent->movementDirection != r5)
+ if (playerObjEvent->movementDirection != direction)
{
ObjectEventClearHeldMovement(playerObjEvent);
return FALSE;
}
- if (!sub_808B028(r6))
+ if (!sub_808B028(direction))
{
ObjectEventClearHeldMovement(playerObjEvent);
return FALSE;
@@ -2085,7 +2081,7 @@ static void sub_808D094(u8 taskId)
sub_808D074(object->facingDirection);
data[1] = 0;
data[2] = 1;
- data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) * 16;
+ data[3] = (u16)(sprite->pos1.y + sprite->pos2.y) << 4;
sprite->pos2.y = 0;
CameraObjectReset2();
object->fixedPriority = TRUE;
diff --git a/src/field_specials.c b/src/field_specials.c
index b287a071a..51030a387 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -16,6 +16,7 @@
#include "field_screen_effect.h"
#include "field_specials.h"
#include "field_weather.h"
+#include "graphics.h"
#include "international_string_util.h"
#include "item_icon.h"
#include "link.h"
@@ -86,11 +87,6 @@ static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0;
struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate;
-extern const u16 gObjectEventPalette8[];
-extern const u16 gObjectEventPalette17[];
-extern const u16 gObjectEventPalette33[];
-extern const u16 gObjectEventPalette34[];
-
void TryLoseFansFromPlayTime(void);
void SetPlayerGotFirstFans(void);
u16 GetNumFansOfPlayerInTrainerFanClub(void);
@@ -621,18 +617,18 @@ static void LoadLinkPartnerObjectEventSpritePalette(u8 graphicsId, u8 localEvent
switch (graphicsId)
{
- case OBJ_EVENT_GFX_LINK_RS_BRENDAN:
- LoadPalette(gObjectEventPalette33, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
- case OBJ_EVENT_GFX_LINK_RS_MAY:
- LoadPalette(gObjectEventPalette34, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
- case OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL:
- LoadPalette(gObjectEventPalette8, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
- case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL:
- LoadPalette(gObjectEventPalette17, 0x100 + (adjustedPaletteNum << 4), 0x20);
- break;
+ case OBJ_EVENT_GFX_LINK_RS_BRENDAN:
+ LoadPalette(gObjectEventPal_RubySapphireBrendan, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
+ case OBJ_EVENT_GFX_LINK_RS_MAY:
+ LoadPalette(gObjectEventPal_RubySapphireMay, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
+ case OBJ_EVENT_GFX_RIVAL_BRENDAN_NORMAL:
+ LoadPalette(gObjectEventPal_Brendan, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
+ case OBJ_EVENT_GFX_RIVAL_MAY_NORMAL:
+ LoadPalette(gObjectEventPal_May, 0x100 + (adjustedPaletteNum << 4), 0x20);
+ break;
}
}
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 785f7b426..0458f7621 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -227,17 +227,15 @@ bool8 SetUpFieldMove_Cut(void)
y = gPlayerFacingPosition.y + sHyperCutStruct[i].y;
tileCuttable = TRUE;
- j = 0;
- do
+ for (j = 0; j < 2; ++j)
{
- if (sHyperCutStruct[i].unk2[j] == 0)
- break;
+ if (sHyperCutStruct[i].unk2[j] == 0) break; // one line required to match -g
if (cutTiles[(u8)(sHyperCutStruct[i].unk2[j] - 1)] == FALSE)
{
tileCuttable = FALSE;
break;
}
- } while (++j <= 1);
+ }
if (tileCuttable == TRUE)
{
diff --git a/src/frontier_pass.c b/src/frontier_pass.c
index 1b8030149..cf170b350 100644
--- a/src/frontier_pass.c
+++ b/src/frontier_pass.c
@@ -983,6 +983,9 @@ static void Task_HandleFrontierPassInput(u8 taskId)
SetMainCallback2(CB2_HideFrontierPass);
DestroyTask(taskId);
// BUG. The function should return here. Otherwise, it can play the same sound twice and destroy the same task twice.
+ #ifdef BUGFIX
+ return;
+ #endif
}
}
diff --git a/src/frontier_util.c b/src/frontier_util.c
index 83c9341d5..5955d9bf7 100644
--- a/src/frontier_util.c
+++ b/src/frontier_util.c
@@ -2383,13 +2383,21 @@ void ClearRankingHallRecords(void)
{
s32 i, j, k;
+ // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ #ifdef BUGFIX
+ u8 zero = 0;
+ #define ZERO (&zero)
+ #else
+ #define ZERO 0
+ #endif
+
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
{
for (j = 0; j < 2; j++)
{
for (k = 0; k < 3; k++)
{
- CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords1P[i][j][k].id, ZERO);
gSaveBlock2Ptr->hallRecords1P[i][j][k].name[0] = EOS;
gSaveBlock2Ptr->hallRecords1P[i][j][k].winStreak = 0;
}
@@ -2400,8 +2408,8 @@ void ClearRankingHallRecords(void)
{
for (k = 0; k < 3; k++)
{
- CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
- CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, 0); // BUG: Passing 0 as a pointer instead of a pointer holding a value of 0.
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id1, ZERO);
+ CopyTrainerId(gSaveBlock2Ptr->hallRecords2P[j][k].id2, ZERO);
gSaveBlock2Ptr->hallRecords2P[j][k].name1[0] = EOS;
gSaveBlock2Ptr->hallRecords2P[j][k].name2[0] = EOS;
gSaveBlock2Ptr->hallRecords2P[j][k].winStreak = 0;
diff --git a/src/m4a.c b/src/m4a.c
index f061ba9b9..e079ba4f6 100644
--- a/src/m4a.c
+++ b/src/m4a.c
@@ -10,7 +10,7 @@ BSS_CODE ALIGNED(4) char SoundMainRAM_Buffer[0x800] = {0};
struct SoundInfo gSoundInfo;
struct PokemonCrySong gPokemonCrySongs[MAX_POKEMON_CRIES];
struct MusicPlayerInfo gPokemonCryMusicPlayers[MAX_POKEMON_CRIES];
-void *gMPlayJumpTable[36];
+MPlayFunc gMPlayJumpTable[36];
struct CgbChannel gCgbChans[4];
struct MusicPlayerTrack gPokemonCryTracks[MAX_POKEMON_CRIES * 2];
struct PokemonCrySong gPokemonCrySong;
@@ -293,7 +293,7 @@ void MPlayExtender(struct CgbChannel *cgbChans)
gMPlayJumpTable[32] = FadeOutBody;
gMPlayJumpTable[33] = TrkVolPitSet;
- soundInfo->cgbChans = (struct CgbChannel *)cgbChans;
+ soundInfo->cgbChans = cgbChans;
soundInfo->CgbSound = CgbSound;
soundInfo->CgbOscOff = CgbOscOff;
soundInfo->MidiKeyToCgbFreq = MidiKeyToCgbFreq;
@@ -301,13 +301,13 @@ void MPlayExtender(struct CgbChannel *cgbChans)
CpuFill32(0, cgbChans, sizeof(struct CgbChannel) * 4);
- cgbChans[0].ty = 1;
+ cgbChans[0].type = 1;
cgbChans[0].panMask = 0x11;
- cgbChans[1].ty = 2;
+ cgbChans[1].type = 2;
cgbChans[1].panMask = 0x22;
- cgbChans[2].ty = 3;
+ cgbChans[2].type = 3;
cgbChans[2].panMask = 0x44;
- cgbChans[3].ty = 4;
+ cgbChans[3].type = 4;
cgbChans[3].panMask = 0x88;
soundInfo->ident = ident;
@@ -362,15 +362,15 @@ void SoundInit(struct SoundInfo *soundInfo)
soundInfo->maxChans = 8;
soundInfo->masterVolume = 15;
- soundInfo->plynote = (u32)ply_note;
+ soundInfo->plynote = ply_note;
soundInfo->CgbSound = DummyFunc;
- soundInfo->CgbOscOff = (void (*)(u8))DummyFunc;
- soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc;
- soundInfo->ExtVolPit = (u32)DummyFunc;
+ soundInfo->CgbOscOff = (CgbOscOffFunc)DummyFunc;
+ soundInfo->MidiKeyToCgbFreq = (MidiKeyToCgbFreqFunc)DummyFunc;
+ soundInfo->ExtVolPit = (ExtVolPitFunc)DummyFunc;
MPlayJumpTableCopy(gMPlayJumpTable);
- soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable;
+ soundInfo->MPlayJumpTable = gMPlayJumpTable;
SampleFreqSet(SOUND_MODE_FREQ_13379);
@@ -437,7 +437,7 @@ void m4aSoundMode(u32 mode)
while (temp != 0)
{
- chan->status = 0;
+ chan->statusFlags = 0;
temp--;
chan++;
}
@@ -483,7 +483,7 @@ void SoundClear(void)
while (i > 0)
{
- ((struct SoundChannel *)chan)->status = 0;
+ ((struct SoundChannel *)chan)->statusFlags = 0;
i--;
chan = (void *)((s32)chan + sizeof(struct SoundChannel));
}
@@ -497,7 +497,7 @@ void SoundClear(void)
while (i <= 4)
{
soundInfo->CgbOscOff(i);
- ((struct CgbChannel *)chan)->sf = 0;
+ ((struct CgbChannel *)chan)->statusFlags = 0;
i++;
chan = (void *)((s32)chan + sizeof(struct CgbChannel));
}
@@ -572,15 +572,18 @@ void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
tracks++;
}
- if (soundInfo->func != 0)
+ // append music player and MPlayMain to linked list
+
+ if (soundInfo->MPlayMainHead != NULL)
{
- mplayInfo->func = soundInfo->func;
- mplayInfo->intp = soundInfo->intp;
- soundInfo->func = 0;
+ mplayInfo->MPlayMainNext = soundInfo->MPlayMainHead;
+ mplayInfo->musicPlayerNext = soundInfo->musicPlayerHead;
+ // NULL assignment semantically useless, but required for match
+ soundInfo->MPlayMainHead = NULL;
}
- soundInfo->intp = (u32)mplayInfo;
- soundInfo->func = (u32)MPlayMain;
+ soundInfo->musicPlayerHead = mplayInfo;
+ soundInfo->MPlayMainHead = MPlayMain;
soundInfo->ident = ID_NUMBER;
mplayInfo->ident = ID_NUMBER;
}
@@ -884,7 +887,7 @@ void CgbModVol(struct CgbChannel *chan)
if ((soundInfo->mode & 1) || !CgbPan(chan))
{
chan->pan = 0xFF;
- chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
+ chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
}
else
{
@@ -895,12 +898,12 @@ void CgbModVol(struct CgbChannel *chan)
asm("" : : : "memory");
#endif
- chan->eg = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
- if (chan->eg > 15)
- chan->eg = 15;
+ chan->envelopeGoal = (u32)(chan->rightVolume + chan->leftVolume) >> 4;
+ if (chan->envelopeGoal > 15)
+ chan->envelopeGoal = 15;
}
- chan->sg = (chan->eg * chan->su + 15) >> 4;
+ chan->sustainGoal = (chan->envelopeGoal * chan->sustain + 15) >> 4;
chan->pan &= chan->panMask;
}
@@ -908,7 +911,7 @@ void CgbSound(void)
{
s32 ch;
struct CgbChannel *channels;
- s32 evAdd;
+ s32 envelopeStepTimeAndDir;
s32 prevC15;
struct SoundInfo *soundInfo = SOUND_INFO_PTR;
vu8 *nrx0ptr;
@@ -927,9 +930,10 @@ void CgbSound(void)
for (ch = 1, channels = soundInfo->cgbChans; ch <= 4; ch++, channels++)
{
- if (!(channels->sf & 0xc7))
+ if (!(channels->statusFlags & SOUND_CHANNEL_SF_ON))
continue;
+ /* 1. determine hardware channel registers */
switch (ch)
{
case 1:
@@ -963,243 +967,233 @@ void CgbSound(void)
}
prevC15 = soundInfo->c15;
- evAdd = *nrx2ptr;
+ envelopeStepTimeAndDir = *nrx2ptr;
- if (channels->sf & 0x80)
+ /* 2. calculate envelope volume */
+ if (channels->statusFlags & SOUND_CHANNEL_SF_START)
{
- if (!(channels->sf & 0x40))
+ if (!(channels->statusFlags & SOUND_CHANNEL_SF_STOP))
{
- channels->sf = 3;
- channels->mo = 3;
+ channels->statusFlags = SOUND_CHANNEL_SF_ENV_ATTACK;
+ channels->modify = CGB_CHANNEL_MO_PIT | CGB_CHANNEL_MO_VOL;
CgbModVol(channels);
switch (ch)
{
case 1:
- *nrx0ptr = channels->sw;
+ *nrx0ptr = channels->sweep;
// fallthrough
case 2:
- *nrx1ptr = ((u32)channels->wp << 6) + channels->le;
- goto loc_82E0E30;
+ *nrx1ptr = ((u32)channels->wavePointer << 6) + channels->length;
+ goto init_env_step_time_dir;
case 3:
- if ((u32)channels->wp != channels->cp)
+ if (channels->wavePointer != channels->currentPointer)
{
*nrx0ptr = 0x40;
- REG_WAVE_RAM0 = channels->wp[0];
- REG_WAVE_RAM1 = channels->wp[1];
- REG_WAVE_RAM2 = channels->wp[2];
- REG_WAVE_RAM3 = channels->wp[3];
- channels->cp = (u32)channels->wp;
+ REG_WAVE_RAM0 = channels->wavePointer[0];
+ REG_WAVE_RAM1 = channels->wavePointer[1];
+ REG_WAVE_RAM2 = channels->wavePointer[2];
+ REG_WAVE_RAM3 = channels->wavePointer[3];
+ channels->currentPointer = channels->wavePointer;
}
*nrx0ptr = 0;
- *nrx1ptr = channels->le;
- if (channels->le)
- channels->n4 = -64;
+ *nrx1ptr = channels->length;
+ if (channels->length)
+ channels->n4 = 0xC0;
else
- channels->n4 = -128;
+ channels->n4 = 0x80;
break;
default:
- *nrx1ptr = channels->le;
- *nrx3ptr = (u32)channels->wp << 3;
- loc_82E0E30:
- evAdd = channels->at + 8;
- if (channels->le)
- channels->n4 = 64;
+ *nrx1ptr = channels->length;
+ *nrx3ptr = (u32)channels->wavePointer << 3;
+ init_env_step_time_dir:
+ envelopeStepTimeAndDir = channels->attack + CGB_NRx2_ENV_DIR_INC;
+ if (channels->length)
+ channels->n4 = 0x40;
else
- channels->n4 = 0;
+ channels->n4 = 0x00;
break;
}
- channels->ec = channels->at;
- if ((s8)(channels->at & mask))
+ channels->envelopeCounter = channels->attack;
+ if ((s8)(channels->attack & mask))
{
- channels->ev = 0;
- goto EC_MINUS;
+ channels->envelopeVolume = 0;
+ goto envelope_step_complete;
}
else
{
- goto loc_82E0F96;
+ // skip attack phase if attack is instantaneous (=0)
+ goto envelope_decay_start;
}
}
else
{
- goto loc_82E0E82;
+ goto oscillator_off;
}
}
- else if (channels->sf & 0x04)
+ else if (channels->statusFlags & SOUND_CHANNEL_SF_IEC)
{
- channels->echoLength--;
- if ((s8)(channels->echoLength & mask) <= 0)
+ channels->pseudoEchoLength--;
+ if ((s8)(channels->pseudoEchoLength & mask) <= 0)
{
- loc_82E0E82:
+ oscillator_off:
CgbOscOff(ch);
- channels->sf = 0;
- goto LAST_LABEL;
+ channels->statusFlags = 0;
+ goto channel_complete;
}
- goto loc_82E0FD6;
+ goto envelope_complete;
}
- else if ((channels->sf & 0x40) && (channels->sf & 0x03))
+ else if ((channels->statusFlags & SOUND_CHANNEL_SF_STOP) && (channels->statusFlags & SOUND_CHANNEL_SF_ENV))
{
- channels->sf &= 0xfc;
- channels->ec = channels->re;
- if ((s8)(channels->re & mask))
+ channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV;
+ channels->envelopeCounter = channels->release;
+ if ((s8)(channels->release & mask))
{
- channels->mo |= 1;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
if (ch != 3)
- {
- evAdd = channels->re;
- }
- goto EC_MINUS;
+ envelopeStepTimeAndDir = channels->release | CGB_NRx2_ENV_DIR_DEC;
+ goto envelope_step_complete;
}
else
{
- goto loc_82E0F02;
+ goto envelope_pseudoecho_start;
}
}
else
{
- loc_82E0ED0:
- if (channels->ec == 0)
+ envelope_step_repeat:
+ if (channels->envelopeCounter == 0)
{
if (ch == 3)
- {
- channels->mo |= 1;
- }
+ channels->modify |= CGB_CHANNEL_MO_VOL;
+
CgbModVol(channels);
- if ((channels->sf & 0x3) == 0)
+ if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_RELEASE)
{
- channels->ev--;
- if ((s8)(channels->ev & mask) <= 0)
+ channels->envelopeVolume--;
+ if ((s8)(channels->envelopeVolume & mask) <= 0)
{
- loc_82E0F02:
- channels->ev = ((channels->eg * channels->echoVolume) + 0xFF) >> 8;
- if (channels->ev)
+ envelope_pseudoecho_start:
+ channels->envelopeVolume = ((channels->envelopeGoal * channels->pseudoEchoVolume) + 0xFF) >> 8;
+ if (channels->envelopeVolume)
{
- channels->sf |= 0x4;
- channels->mo |= 1;
+ channels->statusFlags |= SOUND_CHANNEL_SF_IEC;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
if (ch != 3)
- {
- evAdd = 8;
- }
- goto loc_82E0FD6;
+ envelopeStepTimeAndDir = 0 | CGB_NRx2_ENV_DIR_INC;
+ goto envelope_complete;
}
else
{
- goto loc_82E0E82;
+ goto oscillator_off;
}
}
else
{
- channels->ec = channels->re;
+ channels->envelopeCounter = channels->release;
}
}
- else if ((channels->sf & 0x3) == 1)
+ else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_SUSTAIN)
{
- loc_82E0F3A:
- channels->ev = channels->sg;
- channels->ec = 7;
+ envelope_sustain:
+ channels->envelopeVolume = channels->sustainGoal;
+ channels->envelopeCounter = 7;
}
- else if ((channels->sf & 0x3) == 2)
+ else if ((channels->statusFlags & SOUND_CHANNEL_SF_ENV) == SOUND_CHANNEL_SF_ENV_DECAY)
{
- int ev, sg;
+ int envelopeVolume, sustainGoal;
- channels->ev--;
- ev = (s8)(channels->ev & mask);
- sg = (s8)(channels->sg);
- if (ev <= sg)
+ channels->envelopeVolume--;
+ envelopeVolume = (s8)(channels->envelopeVolume & mask);
+ sustainGoal = (s8)(channels->sustainGoal);
+ if (envelopeVolume <= sustainGoal)
{
- loc_82E0F5A:
- if (channels->su == 0)
+ envelope_sustain_start:
+ if (channels->sustain == 0)
{
- channels->sf &= 0xfc;
- goto loc_82E0F02;
+ channels->statusFlags &= ~SOUND_CHANNEL_SF_ENV;
+ goto envelope_pseudoecho_start;
}
else
{
- channels->sf--;
- channels->mo |= 1;
+ channels->statusFlags--;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
if (ch != 3)
- {
- evAdd = 8;
- }
- goto loc_82E0F3A;
+ envelopeStepTimeAndDir = 0 | CGB_NRx2_ENV_DIR_INC;
+ goto envelope_sustain;
}
}
else
{
- channels->ec = channels->de;
+ channels->envelopeCounter = channels->decay;
}
}
else
{
- channels->ev++;
- if ((u8)(channels->ev & mask) >= channels->eg)
+ channels->envelopeVolume++;
+ if ((u8)(channels->envelopeVolume & mask) >= channels->envelopeGoal)
{
- loc_82E0F96:
- channels->sf--;
- channels->ec = channels->de;
- if ((u8)(channels->ec & mask))
+ envelope_decay_start:
+ channels->statusFlags--;
+ channels->envelopeCounter = channels->decay;
+ if ((u8)(channels->envelopeCounter & mask))
{
- channels->mo |= 1;
- channels->ev = channels->eg;
+ channels->modify |= CGB_CHANNEL_MO_VOL;
+ channels->envelopeVolume = channels->envelopeGoal;
if (ch != 3)
- {
- evAdd = channels->de;
- }
+ envelopeStepTimeAndDir = channels->decay | CGB_NRx2_ENV_DIR_DEC;
}
else
{
- goto loc_82E0F5A;
+ goto envelope_sustain_start;
}
}
else
{
- channels->ec = channels->at;
+ channels->envelopeCounter = channels->attack;
}
}
}
}
- EC_MINUS:
- channels->ec--;
+ envelope_step_complete:
+ // every 15 frames, envelope calculation has to be done twice
+ // to keep up with the hardware envelope rate (1/64 s)
+ channels->envelopeCounter--;
if (prevC15 == 0)
{
prevC15--;
- goto loc_82E0ED0;
+ goto envelope_step_repeat;
}
- loc_82E0FD6:
- if (channels->mo & 0x2)
+ envelope_complete:
+ /* 3. apply pitch to HW registers */
+ if (channels->modify & CGB_CHANNEL_MO_PIT)
{
- if (ch < 4 && (channels->ty & 0x08))
+ if (ch < 4 && (channels->type & TONEDATA_TYPE_FIX))
{
- int biasH = REG_SOUNDBIAS_H;
+ int dac_pwm_rate = REG_SOUNDBIAS_H;
- if (biasH < 64)
- {
- channels->fr = (channels->fr + 2) & 0x7fc;
- }
- else if (biasH < 128)
- {
- channels->fr = (channels->fr + 1) & 0x7fe;
- }
+ if (dac_pwm_rate < 0x40) // if PWM rate = 32768 Hz
+ channels->frequency = (channels->frequency + 2) & 0x7fc;
+ else if (dac_pwm_rate < 0x80) // if PWM rate = 65536 Hz
+ channels->frequency = (channels->frequency + 1) & 0x7fe;
}
+
if (ch != 4)
- {
- *nrx3ptr = channels->fr;
- }
+ *nrx3ptr = channels->frequency;
else
- {
- *nrx3ptr = (*nrx3ptr & 0x08) | channels->fr;
- }
- channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->fr) + 1));
+ *nrx3ptr = (*nrx3ptr & 0x08) | channels->frequency;
+ channels->n4 = (channels->n4 & 0xC0) + (*((u8*)(&channels->frequency) + 1));
*nrx4ptr = (s8)(channels->n4 & mask);
}
- if (channels->mo & 1)
+ /* 4. apply envelope & volume to HW registers */
+ if (channels->modify & CGB_CHANNEL_MO_VOL)
{
REG_NR51 = (REG_NR51 & ~channels->panMask) | channels->pan;
if (ch == 3)
{
- *nrx2ptr = gCgb3Vol[channels->ev];
+ *nrx2ptr = gCgb3Vol[channels->envelopeVolume];
if (channels->n4 & 0x80)
{
*nrx0ptr = 0x80;
@@ -1209,18 +1203,16 @@ void CgbSound(void)
}
else
{
- evAdd &= 0xf;
- *nrx2ptr = (channels->ev << 4) + evAdd;
+ envelopeStepTimeAndDir &= 0xf;
+ *nrx2ptr = (channels->envelopeVolume << 4) + envelopeStepTimeAndDir;
*nrx4ptr = channels->n4 | 0x80;
if (ch == 1 && !(*nrx0ptr & 0x08))
- {
*nrx4ptr = channels->n4 | 0x80;
- }
}
}
- LAST_LABEL:
- channels->mo = 0;
+ channel_complete:
+ channels->modify = 0;
}
}
@@ -1504,8 +1496,8 @@ void ply_memacc(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *trac
cond_true:
{
- void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[1]);
- func(mplayInfo, track);
+ // *& is required for matching
+ (*&gMPlayJumpTable[1])(mplayInfo, track);
return;
}
@@ -1523,8 +1515,7 @@ void ply_xcmd(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
void ply_xxx(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
- void (*func)(struct MusicPlayerInfo *, struct MusicPlayerTrack *) = *(&gMPlayJumpTable[0]);
- func(mplayInfo, track);
+ gMPlayJumpTable[0](mplayInfo, track);
}
#define READ_XCMD_BYTE(var, n) \
@@ -1580,13 +1571,13 @@ void ply_xrele(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track
void ply_xiecv(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
- track->echoVolume = *track->cmdPtr;
+ track->pseudoEchoVolume = *track->cmdPtr;
track->cmdPtr++;
}
void ply_xiecl(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track)
{
- track->echoLength = *track->cmdPtr;
+ track->pseudoEchoLength = *track->cmdPtr;
track->cmdPtr++;
}
diff --git a/src/m4a_1.s b/src/m4a_1.s
index cab4ed174..d72336c18 100644
--- a/src/m4a_1.s
+++ b/src/m4a_1.s
@@ -48,10 +48,10 @@ SoundMain_2:
adds r1, r2
SoundMain_3:
str r1, [sp, 0x14]
- ldr r3, [r0, o_SoundInfo_func]
+ ldr r3, [r0, o_SoundInfo_MPlayMainHead]
cmp r3, 0
beq SoundMain_4
- ldr r0, [r0, o_SoundInfo_intp]
+ ldr r0, [r0, o_SoundInfo_musicPlayerHead]
bl _081DD25E
ldr r0, [sp, 0x18]
SoundMain_4:
@@ -169,74 +169,74 @@ _081DCF54:
.pool
_081DCF60:
- ldrb r6, [r4, o_SoundChannel_status]
- movs r0, 0xC7
+ ldrb r6, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r6
bne _081DCF6A
b _081DD240
_081DCF6A:
- movs r0, 0x80
+ movs r0, SOUND_CHANNEL_SF_START
tst r0, r6
beq _081DCFA0
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r6
bne _081DCFB0
- movs r6, 0x3
- strb r6, [r4, o_SoundChannel_status]
+ movs r6, SOUND_CHANNEL_SF_ENV_ATTACK
+ strb r6, [r4, o_SoundChannel_statusFlags]
adds r0, r3, 0
- adds r0, 0x10
- ldr r1, [r4, o_SoundChannel_ct]
+ adds r0, o_WaveData_data
+ ldr r1, [r4, o_SoundChannel_count]
adds r0, r1
- str r0, [r4, o_SoundChannel_cp]
- ldr r0, [r3, 0xC]
+ str r0, [r4, o_SoundChannel_currentPointer]
+ ldr r0, [r3, o_WaveData_size]
subs r0, r1
- str r0, [r4, o_SoundChannel_ct]
+ str r0, [r4, o_SoundChannel_count]
movs r5, 0
- strb r5, [r4, o_SoundChannel_ev]
+ strb r5, [r4, o_SoundChannel_envelopeVolume]
str r5, [r4, o_SoundChannel_fw]
- ldrb r2, [r3, 0x3]
- movs r0, 0xC0
+ ldrb r2, [r3, o_WaveData_flags]
+ movs r0, WAVE_DATA_FLAG_LOOP
tst r0, r2
beq _081DCFF8
- movs r0, 0x10
+ movs r0, SOUND_CHANNEL_SF_LOOP
orrs r6, r0
- strb r6, [r4, o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
b _081DCFF8
_081DCFA0:
- ldrb r5, [r4, o_SoundChannel_ev]
- movs r0, 0x4
+ ldrb r5, [r4, o_SoundChannel_envelopeVolume]
+ movs r0, SOUND_CHANNEL_SF_IEC
tst r0, r6
beq _081DCFB6
- ldrb r0, [r4, o_SoundChannel_iel]
+ ldrb r0, [r4, o_SoundChannel_pseudoEchoLength]
subs r0, 1
- strb r0, [r4, o_SoundChannel_iel]
+ strb r0, [r4, o_SoundChannel_pseudoEchoLength]
bhi _081DD006
_081DCFB0:
movs r0, 0
- strb r0, [r4, o_SoundChannel_status]
+ strb r0, [r4, o_SoundChannel_statusFlags]
b _081DD240
_081DCFB6:
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r6
beq _081DCFD6
ldrb r0, [r4, o_SoundChannel_release]
muls r5, r0
lsrs r5, 8
- ldrb r0, [r4, o_SoundChannel_iev]
+ ldrb r0, [r4, o_SoundChannel_pseudoEchoVolume]
cmp r5, r0
bhi _081DD006
_081DCFC8:
- ldrb r5, [r4, o_SoundChannel_iev]
+ ldrb r5, [r4, o_SoundChannel_pseudoEchoVolume]
cmp r5, 0
beq _081DCFB0
- movs r0, 0x4
+ movs r0, SOUND_CHANNEL_SF_IEC
orrs r6, r0
- strb r6, [r4, o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
b _081DD006
_081DCFD6:
- movs r2, 0x3
+ movs r2, SOUND_CHANNEL_SF_ENV
ands r2, r6
- cmp r2, 0x2
+ cmp r2, SOUND_CHANNEL_SF_ENV_DECAY
bne _081DCFF4
ldrb r0, [r4, o_SoundChannel_decay]
muls r5, r0
@@ -247,10 +247,10 @@ _081DCFD6:
adds r5, r0, 0
beq _081DCFC8
subs r6, 0x1
- strb r6, [r4, o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
b _081DD006
_081DCFF4:
- cmp r2, 0x3
+ cmp r2, SOUND_CHANNEL_SF_ENV_ATTACK
bne _081DD006
_081DCFF8:
ldrb r0, [r4, o_SoundChannel_attack]
@@ -259,9 +259,9 @@ _081DCFF8:
bcc _081DD006
movs r5, 0xFF
subs r6, 0x1
- strb r6, [r4, o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
_081DD006:
- strb r5, [r4, o_SoundChannel_ev]
+ strb r5, [r4, o_SoundChannel_envelopeVolume]
ldr r0, [sp, 0x18]
ldrb r0, [r0, o_SoundChannel_release]
adds r0, 0x1
@@ -270,37 +270,37 @@ _081DD006:
ldrb r0, [r4, o_SoundChannel_rightVolume]
muls r0, r5
lsrs r0, 8
- strb r0, [r4, o_SoundChannel_er]
+ strb r0, [r4, o_SoundChannel_envelopeVolumeRight]
ldrb r0, [r4, o_SoundChannel_leftVolume]
muls r0, r5
lsrs r0, 8
- strb r0, [r4, o_SoundChannel_el]
- movs r0, 0x10
+ strb r0, [r4, o_SoundChannel_envelopeVolumeLeft]
+ movs r0, SOUND_CHANNEL_SF_LOOP
ands r0, r6
str r0, [sp, 0x10]
beq _081DD03A
adds r0, r3, 0
- adds r0, 0x10
- ldr r1, [r3, 0x8]
+ adds r0, o_WaveData_data
+ ldr r1, [r3, o_WaveData_loopStart]
adds r0, r1
str r0, [sp, 0xC]
- ldr r0, [r3, 0xC]
+ ldr r0, [r3, o_WaveData_size]
subs r0, r1
str r0, [sp, 0x10]
_081DD03A:
ldr r5, [sp, 0x8]
- ldr r2, [r4, o_SoundChannel_ct]
- ldr r3, [r4, o_SoundChannel_cp]
+ ldr r2, [r4, o_SoundChannel_count]
+ ldr r3, [r4, o_SoundChannel_currentPointer]
adr r0, _081DD044
bx r0
.arm
_081DD044:
str r8, [sp]
ldr r9, [r4, o_SoundChannel_fw]
- ldrb r10, [r4, o_SoundChannel_er]
- ldrb r11, [r4, o_SoundChannel_el]
+ ldrb r10, [r4, o_SoundChannel_envelopeVolumeRight]
+ ldrb r11, [r4, o_SoundChannel_envelopeVolumeLeft]
ldrb r0, [r4, o_SoundChannel_type]
- tst r0, 0x30
+ tst r0, TONEDATA_TYPE_CMP | TONEDATA_TYPE_REV
beq _081DD068
bl sub_82DF49C
b _081DD228
@@ -324,7 +324,7 @@ _081DD07C:
moveq r2, 0x4
_081DD0A8:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD0B0:
ldrsb r0, [r3], 0x1
mul r1, r10, r0
@@ -335,7 +335,7 @@ _081DD0B0:
add r7, r1, r7, ror 8
adds r5, r5, 0x40000000
bcc _081DD0B0
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
subs r8, r8, 0x4
bgt _081DD0A8
@@ -343,7 +343,7 @@ _081DD0B0:
beq _081DD22C
_081DD0EC:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD0F4:
ldrsb r0, [r3], 0x1
mul r1, r10, r0
@@ -357,7 +357,7 @@ _081DD0F4:
_081DD118:
adds r5, r5, 0x40000000
bcc _081DD0F4
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
subs r8, r8, 0x4
bgt _081DD07C
@@ -383,26 +383,26 @@ _081DD164:
ldrne r3, [sp, 0xC]
bne _081DD118
_081DD174:
- strb r2, [r4, o_SoundChannel_status]
+ strb r2, [r4, o_SoundChannel_statusFlags]
mov r0, r5, lsr 30
bic r5, r5, 0xC0000000
rsb r0, r0, 0x3
mov r0, r0, lsl 3
mov r6, r6, ror r0
mov r7, r7, ror r0
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
b _081DD234
_081DD19C:
push {r4,r12}
- ldr r1, [r4, o_SoundChannel_freq]
+ ldr r1, [r4, o_SoundChannel_frequency]
mul r4, r12, r1
ldrsb r0, [r3]
ldrsb r1, [r3, 0x1]!
sub r1, r1, r0
_081DD1B4:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD1BC:
mul lr, r9, r1
add lr, r0, lr, asr 23
@@ -427,7 +427,7 @@ _081DD1FC:
_081DD208:
adds r5, r5, 0x40000000
bcc _081DD1BC
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
subs r8, r8, 0x4
bgt _081DD1B4
@@ -436,8 +436,8 @@ _081DD208:
_081DD228:
str r9, [r4, o_SoundChannel_fw]
_081DD22C:
- str r2, [r4, o_SoundChannel_ct]
- str r3, [r4, o_SoundChannel_cp]
+ str r2, [r4, o_SoundChannel_count]
+ str r3, [r4, o_SoundChannel_currentPointer]
_081DD234:
ldr r8, [sp]
add r0, pc, 0x1
@@ -468,42 +468,42 @@ _081DD25E:
arm_func_start sub_82DF49C
sub_82DF49C:
ldr r6, [r4, o_SoundChannel_wav]
- ldrb r0, [r4, o_SoundChannel_status]
- tst r0, 0x20
+ ldrb r0, [r4, o_SoundChannel_statusFlags]
+ tst r0, SOUND_CHANNEL_SF_SPECIAL
bne _081DD2B4
- orr r0, r0, 0x20
- strb r0, [r4, o_SoundChannel_status]
+ orr r0, r0, SOUND_CHANNEL_SF_SPECIAL
+ strb r0, [r4, o_SoundChannel_statusFlags]
ldrb r0, [r4, o_SoundChannel_type]
- tst r0, 0x10
+ tst r0, TONEDATA_TYPE_REV
beq _081DD29C
- ldr r1, [r6, 0xC]
+ ldr r1, [r6, o_WaveData_size]
add r1, r1, r6, lsl 1
add r1, r1, 0x20
sub r3, r1, r3
- str r3, [r4, o_SoundChannel_cp]
+ str r3, [r4, o_SoundChannel_currentPointer]
_081DD29C:
- ldrh r0, [r6]
+ ldrh r0, [r6, o_WaveData_type]
cmp r0, 0
beq _081DD2B4
sub r3, r3, r6
sub r3, r3, 0x10
- str r3, [r4, o_SoundChannel_cp]
+ str r3, [r4, o_SoundChannel_currentPointer]
_081DD2B4:
push {r8,r12,lr}
mov r10, r10, lsl 16
mov r11, r11, lsl 16
- ldr r1, [r4, o_SoundChannel_freq]
+ ldr r1, [r4, o_SoundChannel_frequency]
ldrb r0, [r4, o_SoundChannel_type]
- tst r0, 0x8
+ tst r0, TONEDATA_TYPE_FIX
movne r8, 0x800000
muleq r8, r12, r1
- ldrh r0, [r6]
+ ldrh r0, [r6, o_WaveData_type]
cmp r0, 0
beq _081DD468
mov r0, 0xFF000000
str r0, [r4, o_SoundChannel_xpi]
ldrb r0, [r4, o_SoundChannel_type]
- tst r0, 0x10
+ tst r0, TONEDATA_TYPE_REV
bne _081DD3C0
bl sub_82DF758
mov r0, r1
@@ -512,7 +512,7 @@ _081DD2B4:
sub r1, r1, r0
_081DD308:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD310:
mul lr, r9, r1
add lr, r0, lr, asr 23
@@ -543,7 +543,7 @@ _081DD364:
_081DD370:
adds r5, r5, 0x40000000
bcc _081DD310
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
ldr r6, [sp]
subs r6, r6, 0x4
@@ -556,7 +556,7 @@ _081DD398:
cmp r0, 0
beq _081DD4F4
ldr r3, [r4, o_SoundChannel_wav]
- ldr r3, [r3, 0x8]
+ ldr r3, [r3, o_WaveData_loopStart]
rsb lr, r2, 0
_081DD3B0:
adds r2, r2, r0
@@ -572,7 +572,7 @@ _081DD3C0:
sub r1, r1, r0
_081DD3D8:
ldr r6, [r5]
- ldr r7, [r5, 0x630]
+ ldr r7, [r5, PCM_DMA_BUF_SIZE]
_081DD3E0:
mul lr, r9, r1
add lr, r0, lr, asr 23
@@ -603,7 +603,7 @@ _081DD434:
_081DD440:
adds r5, r5, 0x40000000
bcc _081DD3E0
- str r7, [r5, 0x630]
+ str r7, [r5, PCM_DMA_BUF_SIZE]
str r6, [r5], 0x4
ldr r6, [sp]
subs r6, r6, 0x4
@@ -613,7 +613,7 @@ _081DD440:
b _081DD4F0
_081DD468:
ldrb r0, [r4, o_SoundChannel_type]
- tst r0, 0x10
+ tst r0, TONEDATA_TYPE_REV
beq _081DD4F0
ldrsb r0, [r3, -0x1]!
ldrsb r1, [r3, -0x1]
@@ -653,7 +653,7 @@ _081DD4F0:
pop {r8,r12,pc}
_081DD4F4:
mov r2, 0
- strb r2, [r4, o_SoundChannel_status]
+ strb r2, [r4, o_SoundChannel_statusFlags]
mov r0, r5, lsr 30
bic r5, r5, 0xC0000000
rsb r0, r0, 0x3
@@ -723,24 +723,24 @@ SoundMainBTM:
thumb_func_start RealClearChain
RealClearChain:
- ldr r3, [r0, 0x2C]
+ ldr r3, [r0, o_SoundChannel_track]
cmp r3, 0
beq _081DD5E2
- ldr r1, [r0, 0x34]
- ldr r2, [r0, 0x30]
+ ldr r1, [r0, o_SoundChannel_nextChannelPointer]
+ ldr r2, [r0, o_SoundChannel_prevChannelPointer]
cmp r2, 0
beq _081DD5D6
- str r1, [r2, 0x34]
+ str r1, [r2, o_SoundChannel_nextChannelPointer]
b _081DD5D8
_081DD5D6:
- str r1, [r3, 0x20]
+ str r1, [r3, o_MusicPlayerTrack_chan]
_081DD5D8:
cmp r1, 0
beq _081DD5DE
- str r2, [r1, 0x30]
+ str r2, [r1, o_SoundChannel_prevChannelPointer]
_081DD5DE:
movs r1, 0
- str r1, [r0, 0x2C]
+ str r1, [r0, o_SoundChannel_track]
_081DD5E2:
bx lr
thumb_func_end RealClearChain
@@ -753,22 +753,22 @@ ply_fine:
cmp r4, 0
beq ply_fine_done
ply_fine_loop:
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq ply_fine_ok
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
orrs r1, r0
- strb r1, [r4]
+ strb r1, [r4, o_SoundChannel_statusFlags]
ply_fine_ok:
adds r0, r4, 0
bl RealClearChain
- ldr r4, [r4, 0x34]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne ply_fine_loop
ply_fine_done:
movs r0, 0
- strb r0, [r5]
+ strb r0, [r5, o_MusicPlayerTrack_flags]
pop {r4,r5}
pop {r0}
bx r0
@@ -818,10 +818,10 @@ lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate
thumb_func_start ld_r3_tp_adr_i
ld_r3_tp_adr_i:
- ldr r2, [r1, 0x40]
+ ldr r2, [r1, o_MusicPlayerTrack_cmdPtr]
_081DD64A:
adds r3, r2, 0x1
- str r3, [r1, 0x40]
+ str r3, [r1, o_MusicPlayerTrack_cmdPtr]
ldrb r3, [r2]
b chk_adr_r2
thumb_func_end ld_r3_tp_adr_i
@@ -952,13 +952,13 @@ ply_voice:
lsls r2, 2
ldr r3, [r0, o_MusicPlayerInfo_tone]
adds r2, r3
- ldr r3, [r2]
+ ldr r3, [r2, o_ToneData_type]
bl chk_adr_r2
str r3, [r1, o_MusicPlayerTrack_ToneData_type]
- ldr r3, [r2, 0x4]
+ ldr r3, [r2, o_ToneData_wav]
bl chk_adr_r2
str r3, [r1, o_MusicPlayerTrack_ToneData_wav]
- ldr r3, [r2, 0x8]
+ ldr r3, [r2, o_ToneData_attack]
bl chk_adr_r2
str r3, [r1, o_MusicPlayerTrack_ToneData_attack]
bx r12
@@ -970,7 +970,7 @@ ply_vol:
bl ld_r3_tp_adr_i
strb r3, [r1, o_MusicPlayerTrack_vol]
ldrb r3, [r1, o_MusicPlayerTrack_flags]
- movs r2, 0x3
+ movs r2, MPT_FLG_VOLCHG
orrs r3, r2
strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
@@ -980,10 +980,10 @@ ply_vol:
ply_pan:
mov r12, lr
bl ld_r3_tp_adr_i
- subs r3, 0x40
+ subs r3, C_V
strb r3, [r1, o_MusicPlayerTrack_pan]
ldrb r3, [r1, o_MusicPlayerTrack_flags]
- movs r2, 0x3
+ movs r2, MPT_FLG_VOLCHG
orrs r3, r2
strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
@@ -993,10 +993,10 @@ ply_pan:
ply_bend:
mov r12, lr
bl ld_r3_tp_adr_i
- subs r3, 0x40
+ subs r3, C_V
strb r3, [r1, o_MusicPlayerTrack_bend]
ldrb r3, [r1, o_MusicPlayerTrack_flags]
- movs r2, 0xC
+ movs r2, MPT_FLG_PITCHG
orrs r3, r2
strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
@@ -1008,7 +1008,7 @@ ply_bendr:
bl ld_r3_tp_adr_i
strb r3, [r1, o_MusicPlayerTrack_bendRange]
ldrb r3, [r1, o_MusicPlayerTrack_flags]
- movs r2, 0xC
+ movs r2, MPT_FLG_PITCHG
orrs r3, r2
strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
@@ -1031,7 +1031,7 @@ ply_modt:
beq _081DD7AA
strb r3, [r1, o_MusicPlayerTrack_modT]
ldrb r3, [r1, o_MusicPlayerTrack_flags]
- movs r2, 0xF
+ movs r2, MPT_FLG_VOLCHG | MPT_FLG_PITCHG
orrs r3, r2
strb r3, [r1, o_MusicPlayerTrack_flags]
_081DD7AA:
@@ -1042,10 +1042,10 @@ _081DD7AA:
ply_tune:
mov r12, lr
bl ld_r3_tp_adr_i
- subs r3, 0x40
+ subs r3, C_V
strb r3, [r1, o_MusicPlayerTrack_tune]
ldrb r3, [r1, o_MusicPlayerTrack_flags]
- movs r2, 0xC
+ movs r2, MPT_FLG_PITCHG
orrs r3, r2
strb r3, [r1, o_MusicPlayerTrack_flags]
bx r12
@@ -1174,8 +1174,8 @@ _081DD874:
movs r3, 0x1
movs r4, 0
_081DD87C:
- ldrb r0, [r5]
- movs r1, 0x80
+ ldrb r0, [r5, o_MusicPlayerTrack_flags]
+ movs r1, MPT_FLG_EXIST
tst r1, r0
bne _081DD886
b _081DD998
@@ -1187,36 +1187,36 @@ _081DD886:
cmp r4, 0
beq _081DD8BA
_081DD892:
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq _081DD8AE
- ldrb r0, [r4, 0x10]
+ ldrb r0, [r4, o_SoundChannel_gateTime]
cmp r0, 0
beq _081DD8B4
subs r0, 0x1
- strb r0, [r4, 0x10]
+ strb r0, [r4, o_SoundChannel_gateTime]
bne _081DD8B4
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
orrs r1, r0
- strb r1, [r4]
+ strb r1, [r4, o_SoundChannel_statusFlags]
b _081DD8B4
_081DD8AE:
adds r0, r4, 0
bl ClearChain
_081DD8B4:
- ldr r4, [r4, 0x34]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne _081DD892
_081DD8BA:
ldrb r3, [r5, o_MusicPlayerTrack_flags]
- movs r0, 0x40
+ movs r0, MPT_FLG_START
tst r0, r3
beq _081DD938
adds r0, r5, 0
bl Clear64byte
- movs r0, 0x80
- strb r0, [r5]
+ movs r0, MPT_FLG_EXIST
+ strb r0, [r5, o_MusicPlayerTrack_flags]
movs r0, 0x2
strb r0, [r5, o_MusicPlayerTrack_bendRange]
movs r0, 0x40
@@ -1319,10 +1319,10 @@ _081DD972:
ldrb r1, [r5, o_MusicPlayerTrack_modT]
cmp r1, 0
bne _081DD98E
- movs r1, 0xC
+ movs r1, MPT_FLG_PITCHG
b _081DD990
_081DD98E:
- movs r1, 0x3
+ movs r1, MPT_FLG_VOLCHG
_081DD990:
orrs r0, r1
strb r0, [r5, o_MusicPlayerTrack_flags]
@@ -1332,7 +1332,7 @@ _081DD994:
_081DD998:
subs r6, 0x1
ble _081DD9A4
- movs r0, 0x50
+ movs r0, MusicPlayerTrack_size
adds r5, r0
lsls r3, 1
b _081DD87C
@@ -1349,10 +1349,10 @@ _081DD9A4:
_081DD9B6:
str r4, [r7, o_MusicPlayerInfo_status]
ldrh r0, [r7, o_MusicPlayerInfo_tempoC]
- subs r0, 0x96
+ subs r0, 150
_081DD9BC:
strh r0, [r7, o_MusicPlayerInfo_tempoC]
- cmp r0, 0x96
+ cmp r0, 150
bcc _081DD9C4
b _081DD874
_081DD9C4:
@@ -1363,7 +1363,7 @@ _081DD9C8:
movs r1, 0x80
tst r1, r0
beq _081DDA62
- movs r1, 0xF
+ movs r1, MPT_FLG_VOLCHG | MPT_FLG_PITCHG
tst r1, r0
beq _081DDA62
mov r9, r2
@@ -1374,8 +1374,8 @@ _081DD9C8:
cmp r4, 0
beq _081DDA58
_081DD9E6:
- ldrb r1, [r4, o_SoundChannel_status]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
bne _081DD9F6
adds r0, r4, 0
@@ -1383,26 +1383,26 @@ _081DD9E6:
b _081DDA52
_081DD9F6:
ldrb r0, [r4, o_SoundChannel_type]
- movs r6, 0x7
+ movs r6, TONEDATA_TYPE_CGB
ands r6, r0
ldrb r3, [r5, o_MusicPlayerTrack_flags]
- movs r0, 0x3
+ movs r0, MPT_FLG_VOLCHG
tst r0, r3
beq _081DDA14
bl ChnVolSetAsm
cmp r6, 0
beq _081DDA14
- ldrb r0, [r4, o_CgbChannel_mo]
+ ldrb r0, [r4, o_CgbChannel_modify]
movs r1, 0x1
orrs r0, r1
- strb r0, [r4, o_CgbChannel_mo]
+ strb r0, [r4, o_CgbChannel_modify]
_081DDA14:
ldrb r3, [r5, o_MusicPlayerTrack_flags]
- movs r0, 0xC
+ movs r0, MPT_FLG_PITCHG
tst r0, r3
beq _081DDA52
- ldrb r1, [r4, o_SoundChannel_ky]
- movs r0, 0x8
+ ldrb r1, [r4, o_SoundChannel_key]
+ movs r0, o_MusicPlayerTrack_keyM
ldrsb r0, [r5, r0]
adds r2, r1, r0
bpl _081DDA28
@@ -1416,20 +1416,20 @@ _081DDA28:
ldrb r2, [r5, o_MusicPlayerTrack_pitM]
adds r0, r6, 0
bl call_r3
- str r0, [r4, o_CgbChannel_fr]
- ldrb r0, [r4, o_CgbChannel_mo]
- movs r1, 0x2
+ str r0, [r4, o_CgbChannel_frequency]
+ ldrb r0, [r4, o_CgbChannel_modify]
+ movs r1, CGB_CHANNEL_MO_PIT
orrs r0, r1
- strb r0, [r4, o_CgbChannel_mo]
+ strb r0, [r4, o_CgbChannel_modify]
b _081DDA52
_081DDA46:
adds r1, r2, 0
ldrb r2, [r5, o_MusicPlayerTrack_pitM]
ldr r0, [r4, o_SoundChannel_wav]
bl MidiKeyToFreq
- str r0, [r4, o_SoundChannel_freq]
+ str r0, [r4, o_SoundChannel_frequency]
_081DDA52:
- ldr r4, [r4, o_SoundChannel_np]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne _081DD9E6
_081DDA58:
@@ -1441,7 +1441,7 @@ _081DDA58:
_081DDA62:
subs r2, 0x1
ble _081DDA6C
- movs r0, 0x50
+ movs r0, MusicPlayerTrack_size
adds r5, r0
bgt _081DD9C8
_081DDA6C:
@@ -1468,7 +1468,7 @@ TrackStop:
push {r4-r6,lr}
adds r5, r1, 0
ldrb r1, [r5, o_MusicPlayerTrack_flags]
- movs r0, 0x80
+ movs r0, MPT_FLG_EXIST
tst r0, r1
beq TrackStop_Done
ldr r4, [r5, o_MusicPlayerTrack_chan]
@@ -1476,11 +1476,11 @@ TrackStop:
beq TrackStop_3
movs r6, 0
TrackStop_Loop:
- ldrb r0, [r4, o_SoundChannel_status]
+ ldrb r0, [r4, o_SoundChannel_statusFlags]
cmp r0, 0
beq TrackStop_2
ldrb r0, [r4, o_SoundChannel_type]
- movs r3, 0x7
+ movs r3, TONEDATA_TYPE_CGB
ands r0, r3
beq TrackStop_1
ldr r3, =SOUND_INFO_PTR
@@ -1488,10 +1488,10 @@ TrackStop_Loop:
ldr r3, [r3, o_SoundInfo_CgbOscOff]
bl call_r3
TrackStop_1:
- strb r6, [r4, o_SoundChannel_status]
+ strb r6, [r4, o_SoundChannel_statusFlags]
TrackStop_2:
str r6, [r4, o_SoundChannel_track]
- ldr r4, [r4, o_SoundChannel_np]
+ ldr r4, [r4, o_SoundChannel_nextChannelPointer]
cmp r4, 0
bne TrackStop_Loop
TrackStop_3:
@@ -1505,31 +1505,31 @@ TrackStop_Done:
thumb_func_start ChnVolSetAsm
ChnVolSetAsm:
- ldrb r1, [r4, 0x12]
- movs r0, 0x14
+ ldrb r1, [r4, o_SoundChannel_velocity]
+ movs r0, o_SoundChannel_rhythmPan
ldrsb r2, [r4, r0]
movs r3, 0x80
adds r3, r2
muls r3, r1
- ldrb r0, [r5, 0x10]
+ ldrb r0, [r5, o_MusicPlayerTrack_volMR]
muls r0, r3
asrs r0, 14
cmp r0, 0xFF
bls _081DDAE8
movs r0, 0xFF
_081DDAE8:
- strb r0, [r4, 0x2]
+ strb r0, [r4, o_SoundChannel_rightVolume]
movs r3, 0x7F
subs r3, r2
muls r3, r1
- ldrb r0, [r5, 0x11]
+ ldrb r0, [r5, o_MusicPlayerTrack_volML]
muls r0, r3
asrs r0, 14
cmp r0, 0xFF
bls _081DDAFC
movs r0, 0xFF
_081DDAFC:
- strb r0, [r4, 0x3]
+ strb r0, [r4, o_SoundChannel_leftVolume]
bx lr
thumb_func_end ChnVolSetAsm
@@ -1599,32 +1599,32 @@ _081DDB68:
mov r9, r1
mov r6, r9
ldrb r1, [r6]
- movs r0, 0xC0
+ movs r0, TONEDATA_TYPE_SPL | TONEDATA_TYPE_RHY
tst r0, r1
beq _081DDB80
b _081DDCEA
_081DDB80:
- movs r0, 0x80
+ movs r0, TONEDATA_TYPE_RHY
tst r0, r2
beq _081DDB9C
- ldrb r1, [r6, 0x3]
+ ldrb r1, [r6, o_ToneData_pan_sweep]
movs r0, 0x80
tst r0, r1
beq _081DDB94
- subs r1, 0xC0
+ subs r1, TONEDATA_P_S_PAN
lsls r1, 1
str r1, [sp, 0x14]
_081DDB94:
- ldrb r3, [r6, 0x1]
+ ldrb r3, [r6, o_SoundChannel_type]
b _081DDB9C
_081DDB98:
mov r9, r4
- ldrb r3, [r5, 0x5]
+ ldrb r3, [r5, o_MusicPlayerTrack_key]
_081DDB9C:
str r3, [sp, 0x8]
ldr r6, [sp]
- ldrb r1, [r6, 0x9]
- ldrb r0, [r5, 0x1D]
+ ldrb r1, [r6, o_MusicPlayerInfo_priority]
+ ldrb r0, [r5, o_MusicPlayerTrack_priority]
adds r0, r1
cmp r0, 0xFF
bls _081DDBAC
@@ -1632,13 +1632,13 @@ _081DDB9C:
_081DDBAC:
str r0, [sp, 0x10]
mov r6, r9
- ldrb r0, [r6]
- movs r6, 0x7
+ ldrb r0, [r6, o_ToneData_type]
+ movs r6, TONEDATA_TYPE_CGB
ands r6, r0
str r6, [sp, 0xC]
beq _081DDBEC
ldr r0, [sp, 0x4]
- ldr r4, [r0, 0x1C]
+ ldr r4, [r0, o_SoundInfo_cgbChans]
cmp r4, 0
bne _081DDBC4
b _081DDCEA
@@ -1646,21 +1646,21 @@ _081DDBC4:
subs r6, 0x1
lsls r0, r6, 6
adds r4, r0
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_CgbChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq _081DDC40
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r1
bne _081DDC40
- ldrb r1, [r4, 0x13]
+ ldrb r1, [r4, o_CgbChannel_priority]
ldr r0, [sp, 0x10]
cmp r1, r0
bcc _081DDC40
beq _081DDBE4
b _081DDCEA
_081DDBE4:
- ldr r0, [r4, 0x2C]
+ ldr r0, [r4, o_CgbChannel_track]
cmp r0, r5
bcs _081DDC40
b _081DDCEA
@@ -1670,35 +1670,35 @@ _081DDBEC:
movs r2, 0
mov r8, r2
ldr r4, [sp, 0x4]
- ldrb r3, [r4, 0x6]
- adds r4, 0x50
+ ldrb r3, [r4, o_SoundInfo_maxChans]
+ adds r4, o_SoundInfo_chans
_081DDBFA:
- ldrb r1, [r4]
- movs r0, 0xC7
+ ldrb r1, [r4, o_SoundChannel_statusFlags]
+ movs r0, SOUND_CHANNEL_SF_ON
tst r0, r1
beq _081DDC40
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
tst r0, r1
beq _081DDC14
cmp r2, 0
bne _081DDC18
adds r2, 0x1
- ldrb r6, [r4, 0x13]
- ldr r7, [r4, 0x2C]
+ ldrb r6, [r4, o_SoundChannel_priority]
+ ldr r7, [r4, o_SoundChannel_track]
b _081DDC32
_081DDC14:
cmp r2, 0
bne _081DDC34
_081DDC18:
- ldrb r0, [r4, 0x13]
+ ldrb r0, [r4, o_SoundChannel_priority]
cmp r0, r6
bcs _081DDC24
adds r6, r0, 0
- ldr r7, [r4, 0x2C]
+ ldr r7, [r4, o_SoundChannel_track]
b _081DDC32
_081DDC24:
bhi _081DDC34
- ldr r0, [r4, 0x2C]
+ ldr r0, [r4, o_SoundChannel_track]
cmp r0, r7
bls _081DDC30
adds r7, r0, 0
@@ -1708,7 +1708,7 @@ _081DDC30:
_081DDC32:
mov r8, r4
_081DDC34:
- adds r4, 0x40
+ adds r4, SoundChannel_size
subs r3, 0x1
bgt _081DDBFA
mov r4, r8
@@ -1718,17 +1718,17 @@ _081DDC40:
adds r0, r4, 0
bl ClearChain
movs r1, 0
- str r1, [r4, 0x30]
- ldr r3, [r5, 0x20]
- str r3, [r4, 0x34]
+ str r1, [r4, o_SoundChannel_prevChannelPointer]
+ ldr r3, [r5, o_MusicPlayerTrack_chan]
+ str r3, [r4, o_SoundChannel_nextChannelPointer]
cmp r3, 0
beq _081DDC54
- str r4, [r3, 0x30]
+ str r4, [r3, o_SoundChannel_prevChannelPointer]
_081DDC54:
- str r4, [r5, 0x20]
- str r5, [r4, 0x2C]
- ldrb r0, [r5, 0x1B]
- strb r0, [r5, 0x1C]
+ str r4, [r5, o_MusicPlayerTrack_chan]
+ str r5, [r4, o_SoundChannel_track]
+ ldrb r0, [r5, o_MusicPlayerTrack_lfoDelay]
+ strb r0, [r5, o_MusicPlayerTrack_lfoDelayC]
cmp r0, r1
beq _081DDC66
adds r1, r5, 0
@@ -1737,26 +1737,26 @@ _081DDC66:
ldr r0, [sp]
adds r1, r5, 0
bl TrkVolPitSet
- ldr r0, [r5, 0x4]
- str r0, [r4, 0x10]
+ ldr r0, [r5, o_MusicPlayerTrack_gateTime]
+ str r0, [r4, o_SoundChannel_gateTime]
ldr r0, [sp, 0x10]
- strb r0, [r4, 0x13]
+ strb r0, [r4, o_SoundChannel_priority]
ldr r0, [sp, 0x8]
- strb r0, [r4, 0x8]
+ strb r0, [r4, o_SoundChannel_key]
ldr r0, [sp, 0x14]
- strb r0, [r4, 0x14]
+ strb r0, [r4, o_SoundChannel_rhythmPan]
mov r6, r9
- ldrb r0, [r6]
- strb r0, [r4, 0x1]
- ldr r7, [r6, 0x4]
- str r7, [r4, 0x24]
- ldr r0, [r6, 0x8]
- str r0, [r4, 0x4]
- ldrh r0, [r5, 0x1E]
- strh r0, [r4, 0xC]
+ ldrb r0, [r6, o_ToneData_type]
+ strb r0, [r4, o_SoundChannel_type]
+ ldr r7, [r6, o_ToneData_wav]
+ str r7, [r4, o_SoundChannel_wav]
+ ldr r0, [r6, o_ToneData_attack]
+ str r0, [r4, o_SoundChannel_attack]
+ ldrh r0, [r5, o_MusicPlayerTrack_pseudoEchoVolume]
+ strh r0, [r4, o_SoundChannel_pseudoEchoVolume]
bl ChnVolSetAsm
- ldrb r1, [r4, 0x8]
- movs r0, 0x8
+ ldrb r1, [r4, o_SoundChannel_key]
+ movs r0, o_MusicPlayerTrack_keyM
ldrsb r0, [r5, r0]
adds r3, r1, r0
bpl _081DDCA0
@@ -1766,9 +1766,9 @@ _081DDCA0:
cmp r6, 0
beq _081DDCCE
mov r6, r9
- ldrb r0, [r6, 0x2]
- strb r0, [r4, 0x1E]
- ldrb r1, [r6, 0x3]
+ ldrb r0, [r6, o_ToneData_length]
+ strb r0, [r4, o_CgbChannel_length]
+ ldrb r1, [r6, o_ToneData_pan_sweep]
movs r0, 0x80
tst r0, r1
bne _081DDCBA
@@ -1778,29 +1778,29 @@ _081DDCA0:
_081DDCBA:
movs r1, 0x8
_081DDCBC:
- strb r1, [r4, 0x1F]
- ldrb r2, [r5, 0x9]
+ strb r1, [r4, o_CgbChannel_sweep]
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
adds r1, r3, 0
ldr r0, [sp, 0xC]
ldr r3, [sp, 0x4]
- ldr r3, [r3, 0x30]
+ ldr r3, [r3, o_SoundInfo_MidiKeyToCgbFreq]
bl call_r3
b _081DDCDC
_081DDCCE:
ldr r0, [r5, o_MusicPlayerTrack_unk_3C]
- str r0, [r4, 0x18]
- ldrb r2, [r5, 0x9]
+ str r0, [r4, o_SoundChannel_count]
+ ldrb r2, [r5, o_MusicPlayerTrack_pitM]
adds r1, r3, 0
adds r0, r7, 0
bl MidiKeyToFreq
_081DDCDC:
- str r0, [r4, 0x20]
- movs r0, 0x80
- strb r0, [r4]
- ldrb r1, [r5]
+ str r0, [r4, o_SoundChannel_frequency]
+ movs r0, SOUND_CHANNEL_SF_START
+ strb r0, [r4, o_SoundChannel_statusFlags]
+ ldrb r1, [r5, o_MusicPlayerTrack_flags]
movs r0, 0xF0
ands r0, r1
- strb r0, [r5]
+ strb r0, [r5, o_MusicPlayerTrack_flags]
_081DDCEA:
add sp, 0x18
pop {r0-r7}
@@ -1830,23 +1830,23 @@ _081DDD18:
ldr r1, [r1, o_MusicPlayerTrack_chan]
cmp r1, 0
beq _081DDD40
- movs r4, 0x83
- movs r5, 0x40
+ movs r4, SOUND_CHANNEL_SF_START | SOUND_CHANNEL_SF_ENV
+ movs r5, SOUND_CHANNEL_SF_STOP
_081DDD22:
- ldrb r2, [r1, o_SoundChannel_status]
+ ldrb r2, [r1, o_SoundChannel_statusFlags]
tst r2, r4
beq _081DDD3A
tst r2, r5
bne _081DDD3A
- ldrb r0, [r1, o_SoundChannel_mk]
+ ldrb r0, [r1, o_SoundChannel_midiKey]
cmp r0, r3
bne _081DDD3A
- movs r0, 0x40
+ movs r0, SOUND_CHANNEL_SF_STOP
orrs r2, r0
- strb r2, [r1, o_SoundChannel_status]
+ strb r2, [r1, o_SoundChannel_statusFlags]
b _081DDD40
_081DDD3A:
- ldr r1, [r1, o_SoundChannel_np]
+ ldr r1, [r1, o_SoundChannel_nextChannelPointer]
cmp r1, 0
bne _081DDD22
_081DDD40:
@@ -1862,10 +1862,10 @@ clear_modM:
ldrb r2, [r1, o_MusicPlayerTrack_modT]
cmp r2, 0
bne _081DDD54
- movs r2, 0xC
+ movs r2, MPT_FLG_PITCHG
b _081DDD56
_081DDD54:
- movs r2, 0x3
+ movs r2, MPT_FLG_VOLCHG
_081DDD56:
ldrb r3, [r1, o_MusicPlayerTrack_flags]
orrs r3, r2
diff --git a/src/match_call.c b/src/match_call.c
index a39739f76..723562ade 100644
--- a/src/match_call.c
+++ b/src/match_call.c
@@ -1817,10 +1817,13 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
}
*topicTextId = 3;
break;
+ #ifdef BUGFIX
+ case FRONTIER_FACILITY_PIKE:
+ #else
case FRONTIER_FACILITY_FACTORY:
+ #endif
for (i = 0; i < 2; i++)
{
- // BUG: should be looking at battle factory records.
if (streak < gSaveBlock2Ptr->frontier.pikeRecordStreaks[i])
streak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
}
@@ -1848,12 +1851,15 @@ static u16 GetFrontierStreakInfo(u16 facilityId, u32 *topicTextId)
}
*topicTextId = 2;
break;
+ #ifdef BUGFIX
+ case FRONTIER_FACILITY_FACTORY:
+ #else
case FRONTIER_FACILITY_PIKE:
+ #endif
for (i = 0; i < 2; i++)
{
for (j = 0; j < 2; j++)
{
- // BUG: should be looking at battle pike records.
if (streak < gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j])
streak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[i][j];
}
diff --git a/src/menu.c b/src/menu.c
index dca8adc2d..4813f7b02 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -2016,7 +2016,7 @@ void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 src
{
int loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY;
const u8 *pixelsSrc;
- u16 *pixelsDst;
+ u8 *pixelsDst;
u16 toOrr;
if (dst->width - dstX < width)
@@ -2037,53 +2037,52 @@ void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 src
for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
{
pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B);
- pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)( loopDstY << 0x1d) >> 0x1B);
+ pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)(loopDstY << 0x1d) >> 0x1B);
- if ((uintptr_t )pixelsDst & 0x1)
+ if ((uintptr_t)pixelsDst & 0x1)
{
- pixelsDst = (void*)(pixelsDst) - 1;
+ pixelsDst--;
if (loopDstX & 0x1)
{
- toOrr = *pixelsDst & 0x0fff;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0x0fff;
if (loopSrcX & 0x1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 8);
+ toOrr |= ((*pixelsSrc & 0xf0) << 8);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 12);
+ toOrr |= ((*pixelsSrc & 0x0f) << 12);
}
else
{
- toOrr = *pixelsDst & 0xf0ff;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0xf0ff;
if (loopSrcX & 0x1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 4);
+ toOrr |= ((*pixelsSrc & 0xf0) << 4);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 8);
+ toOrr |= ((*pixelsSrc & 0x0f) << 8);
}
}
else
{
if (loopDstX & 1)
{
- toOrr = *pixelsDst & 0xff0f;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0xff0f;
if (loopSrcX & 1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 0);
+ toOrr |= ((*pixelsSrc & 0xf0) << 0);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 4);
+ toOrr |= ((*pixelsSrc & 0x0f) << 4);
}
else
{
- toOrr = *pixelsDst & 0xfff0;
+ toOrr = *(vu16*)pixelsDst;
+ toOrr &= 0xfff0;
if (loopSrcX & 1)
- *pixelsDst = toOrr | ((*pixelsSrc & 0xf0) >> 4);
+ toOrr |= ((*pixelsSrc & 0xf0) >> 4);
else
- *pixelsDst = toOrr | ((*pixelsSrc & 0x0f) >> 0);
+ toOrr |= ((*pixelsSrc & 0x0f) >> 0);
}
}
-
- // Needed to match, urgh.
- #ifndef NONMATCHING
- asm("":::"r4");
- pixelsDst++;pixelsDst--;
- #endif // NONMATCHING
+ *(vu16*)pixelsDst = toOrr;
}
}
}
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index 1d317a1aa..7de963893 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -880,89 +880,82 @@ s32 GetBoxOrPartyMonData(u16 boxId, u16 monId, s32 request, u8 *dst)
// Gets the name/gender/level string for the condition menu
static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId)
{
- u16 species, level, gender;
+ u16 box, mon, species, level, gender;
struct BoxPokemon *boxMon;
u8 *str;
+ box = boxId;
+ mon = monId;
*(dst++) = EXT_CTRL_CODE_BEGIN;
*(dst++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
*(dst++) = TEXT_COLOR_BLUE;
*(dst++) = TEXT_COLOR_TRANSPARENT;
*(dst++) = TEXT_COLOR_LIGHT_BLUE;
- if (GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_EGG, NULL))
- {
+ if (GetBoxOrPartyMonData(box, mon, MON_DATA_IS_EGG, NULL))
return StringCopyPadded(dst, gText_EggNickname, 0, 12);
+ GetBoxOrPartyMonData(box, mon, MON_DATA_NICKNAME, dst);
+ StringGetEnd10(dst);
+ species = GetBoxOrPartyMonData(box, mon, MON_DATA_SPECIES, NULL);
+ if (box == TOTAL_BOXES_COUNT) // Party mon.
+ {
+ level = GetMonData(&gPlayerParty[mon], MON_DATA_LEVEL);
+ gender = GetMonGender(&gPlayerParty[mon]);
}
else
{
- GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst);
- StringGetEnd10(dst);
- species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL);
- if (boxId == TOTAL_BOXES_COUNT) // Party mon.
- {
- level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
- gender = GetMonGender(&gPlayerParty[monId]);
- }
- else
- {
- // Needed to match, feel free to remove.
- boxId++;boxId--;
- monId++;monId--;
+ boxMon = GetBoxedMonPtr(box, mon);
+ gender = GetBoxMonGender(boxMon);
+ level = GetLevelFromBoxMonExp(boxMon);
+ }
- boxMon = GetBoxedMonPtr(boxId, monId);
- gender = GetBoxMonGender(boxMon);
- level = GetLevelFromBoxMonExp(boxMon);
- }
+ if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species]))
+ gender = MON_GENDERLESS;
- if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species]))
- gender = MON_GENDERLESS;
+ for (str = dst; *str != EOS; str++)
+ ;
- for (str = dst; *str != EOS; str++)
- ;
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = EXT_CTRL_CODE_SKIP;
+ *(str++) = 60;
+ switch (gender)
+ {
+ default:
+ *(str++) = CHAR_SPACE;
+ break;
+ case MON_MALE:
*(str++) = EXT_CTRL_CODE_BEGIN;
- *(str++) = EXT_CTRL_CODE_SKIP;
- *(str++) = 60;
-
- switch (gender)
- {
- default:
- *(str++) = CHAR_SPACE;
- break;
- case MON_MALE:
- *(str++) = EXT_CTRL_CODE_BEGIN;
- *(str++) = EXT_CTRL_CODE_COLOR;
- *(str++) = TEXT_COLOR_RED;
- *(str++) = EXT_CTRL_CODE_BEGIN;
- *(str++) = EXT_CTRL_CODE_SHADOW;
- *(str++) = TEXT_COLOR_LIGHT_RED;
- *(str++) = CHAR_MALE;
- break;
- case MON_FEMALE:
- *(str++) = EXT_CTRL_CODE_BEGIN;
- *(str++) = EXT_CTRL_CODE_COLOR;
- *(str++) = TEXT_COLOR_GREEN;
- *(str++) = EXT_CTRL_CODE_BEGIN;
- *(str++) = EXT_CTRL_CODE_SHADOW;
- *(str++) = TEXT_COLOR_LIGHT_GREEN;
- *(str++) = CHAR_FEMALE;
- break;
- }
-
+ *(str++) = EXT_CTRL_CODE_COLOR;
+ *(str++) = TEXT_COLOR_RED;
*(str++) = EXT_CTRL_CODE_BEGIN;
- *(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
- *(str++) = TEXT_COLOR_BLUE;
- *(str++) = TEXT_COLOR_TRANSPARENT;
- *(str++) = TEXT_COLOR_LIGHT_BLUE;
- *(str++) = CHAR_SLASH;
- *(str++) = CHAR_EXTRA_SYMBOL;
- *(str++) = CHAR_LV_2;
- str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3);
- *(str++) = CHAR_SPACE;
- *str = EOS;
-
- return str;
+ *(str++) = EXT_CTRL_CODE_SHADOW;
+ *(str++) = TEXT_COLOR_LIGHT_RED;
+ *(str++) = CHAR_MALE;
+ break;
+ case MON_FEMALE:
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = EXT_CTRL_CODE_COLOR;
+ *(str++) = TEXT_COLOR_GREEN;
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = EXT_CTRL_CODE_SHADOW;
+ *(str++) = TEXT_COLOR_LIGHT_GREEN;
+ *(str++) = CHAR_FEMALE;
+ break;
}
+
+ *(str++) = EXT_CTRL_CODE_BEGIN;
+ *(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
+ *(str++) = TEXT_COLOR_BLUE;
+ *(str++) = TEXT_COLOR_TRANSPARENT;
+ *(str++) = TEXT_COLOR_LIGHT_BLUE;
+ *(str++) = CHAR_SLASH;
+ *(str++) = CHAR_EXTRA_SYMBOL;
+ *(str++) = CHAR_LV_2;
+ str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ *(str++) = CHAR_SPACE;
+ *str = EOS;
+
+ return str;
}
// Buffers the string in src to dest up to n chars. If src is less than n chars, fill with spaces
@@ -983,6 +976,8 @@ static u8 *BufferConditionMenuSpacedStringN(u8 *dst, const u8 *src, s16 n)
void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId, u16 monId, u16 partyId, u16 numMons, bool8 excludesCancel)
{
u16 i;
+ u16 box = boxId;
+ u16 mon = monId;
// In this and the below 2 functions, numMons is passed as the number of menu selections (which includes Cancel)
// To indicate that the Cancel needs to be subtracted they pass an additional bool
@@ -992,21 +987,16 @@ void GetConditionMenuMonNameAndLocString(u8 *locationDst, u8 *nameDst, u16 boxId
if (partyId != numMons)
{
- GetConditionMenuMonString(nameDst, boxId, monId);
+ GetConditionMenuMonString(nameDst, box, mon);
locationDst[0] = EXT_CTRL_CODE_BEGIN;
locationDst[1] = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW;
locationDst[2] = TEXT_COLOR_BLUE;
locationDst[3] = TEXT_COLOR_TRANSPARENT;
locationDst[4] = TEXT_COLOR_LIGHT_BLUE;
- if (boxId == TOTAL_BOXES_COUNT) // Party mon.
- {
+ if (box == TOTAL_BOXES_COUNT) // Party mon.
BufferConditionMenuSpacedStringN(&locationDst[5], gText_InParty, 8);
- }
else
- {
- boxId++;boxId--; // Again...Someone fix this maybe?
- BufferConditionMenuSpacedStringN(&locationDst[5], GetBoxNamePtr(boxId), 8);
- }
+ BufferConditionMenuSpacedStringN(&locationDst[5], GetBoxNamePtr(box), 8);
}
else
{
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index 51cc65c22..2a9304a4d 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -970,10 +970,13 @@ bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior)
{
// BUG: The player is unintentionally able to emerge on water doors.
// Also the narrower underwater door in the underwater tileset has the wrong metatile behavior. This causes the dive glitch.
- // To fix that add || metatileBehavior == MB_WATER_DOOR to the if statement below and
- // change the metatile behavior of the narrower water door with porymaps tileset editor.
+ // To fix change the metatile behavior of the narrower water door with porymap's tileset editor.
if (metatileBehavior == MB_NO_SURFACING
- || metatileBehavior == MB_SEAWEED_NO_SURFACING)
+ || metatileBehavior == MB_SEAWEED_NO_SURFACING
+ #ifdef BUGFIX
+ || metatileBehavior == MB_WATER_DOOR
+ #endif
+ )
return TRUE;
else
return FALSE;
diff --git a/src/overworld.c b/src/overworld.c
index 223e6e152..72aa17929 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -2908,7 +2908,14 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent)
memset(objEvent, 0, sizeof(struct ObjectEvent));
}
-static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4)
+// Note: Emerald reuses the direction and range variables during Link mode
+// as special gender and direction values. The types and placement
+// conflict with the usual Event Object struct, thus the definitions.
+#define linkGender(obj) obj->singleMovementActive
+// not even one can reference *byte* aligned bitfield members...
+#define linkDirection(obj) ((u8*)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX
+
+static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender)
{
u8 objEventId = GetFirstInactiveObjectEventId();
struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId];
@@ -2923,8 +2930,8 @@ static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4)
linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FREE;
objEvent->active = 1;
- objEvent->singleMovementActive = a4;
- objEvent->range.as_byte = 2;
+ linkGender(objEvent) = gender;
+ linkDirection(objEvent) = DIR_NORTH;
objEvent->spriteId = 64;
InitLinkPlayerObjectEventPos(objEvent, x, y);
@@ -2941,13 +2948,13 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1
ObjectEventUpdateZCoord(objEvent);
}
-static void sub_80877DC(u8 linkPlayerId, u8 a2)
+static void sub_80877DC(u8 linkPlayerId, u8 dir)
{
if (gLinkPlayerObjectEvents[linkPlayerId].active)
{
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
- objEvent->range.as_byte = a2;
+ linkDirection(objEvent) = dir;
}
}
@@ -2982,7 +2989,7 @@ static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId)
{
u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId;
struct ObjectEvent *objEvent = &gObjectEvents[objEventId];
- return objEvent->range.as_byte;
+ return linkDirection(objEvent);
}
static u8 GetLinkPlayerElevation(u8 linkPlayerId)
@@ -3067,10 +3074,10 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer
{
s16 x, y;
- objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte);
- ObjectEventMoveDestCoords(objEvent, objEvent->range.as_byte, &x, &y);
+ linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent));
+ ObjectEventMoveDestCoords(objEvent, linkDirection(objEvent), &x, &y);
- if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, objEvent->range.as_byte, x, y))
+ if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, linkDirection(objEvent), x, y))
{
return FALSE;
}
@@ -3085,7 +3092,7 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer
static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3)
{
- objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte);
+ linkDirection(objEvent) = FlipVerticalAndClearForced(a3, linkDirection(objEvent));
return FALSE;
}
@@ -3099,7 +3106,7 @@ static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent
{
objEvent->directionSequenceIndex--;
linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FROZEN;
- MoveCoords(objEvent->range.as_byte, &objEvent->initialCoords.x, &objEvent->initialCoords.y);
+ MoveCoords(linkDirection(objEvent), &objEvent->initialCoords.x, &objEvent->initialCoords.y);
if (!objEvent->directionSequenceIndex)
{
ShiftStillObjectEventCoords(objEvent);
@@ -3160,14 +3167,14 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion)
{
case VERSION_FIRE_RED:
case VERSION_LEAF_GREEN:
- objEvent->spriteId = AddPseudoObjectEvent(GetFRLGAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ objEvent->spriteId = AddPseudoObjectEvent(GetFRLGAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_RUBY:
case VERSION_SAPPHIRE:
- objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
break;
case VERSION_EMERALD:
- objEvent->spriteId = AddPseudoObjectEvent(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0);
+ objEvent->spriteId = AddPseudoObjectEvent(GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0);
break;
}
@@ -3188,9 +3195,9 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation);
if (linkPlayerObjEvent->movementMode == MOVEMENT_MODE_FREE)
- StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objEvent->range.as_byte));
+ StartSpriteAnim(sprite, GetFaceDirectionAnimNum(linkDirection(objEvent)));
else
- StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(objEvent->range.as_byte));
+ StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(linkDirection(objEvent)));
UpdateObjectEventSpriteVisibility(sprite, 0);
if (objEvent->triggerGroundEffectsOnMove)
diff --git a/src/party_menu.c b/src/party_menu.c
index da0783d23..f045a9a47 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -1963,19 +1963,17 @@ static u8 CanMonLearnTMTutor(struct Pokemon *mon, u16 item, u8 tutor)
if (item >= ITEM_TM01_FOCUS_PUNCH)
{
- if (CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
- move = ItemIdToBattleMoveId(item);
- else
+ if (!CanMonLearnTMHM(mon, item - ITEM_TM01_FOCUS_PUNCH))
return CANNOT_LEARN_MOVE;
- do {} while (0); // :morphon:
- }
- else if (CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor) == FALSE)
- {
- return CANNOT_LEARN_MOVE;
+ else
+ move = ItemIdToBattleMoveId(item);
}
else
{
- move = GetTutorMove(tutor);
+ if (!CanLearnTutorMove(GetMonData(mon, MON_DATA_SPECIES), tutor))
+ return CANNOT_LEARN_MOVE;
+ else
+ move = GetTutorMove(tutor);
}
if (MonKnowsMove(mon, move) == TRUE)
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 797771f80..32db6c717 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -646,7 +646,7 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon)
case 0:
species = GetMonData(mon, MON_DATA_SPECIES2);
personality = GetMonData(mon, MON_DATA_PERSONALITY);
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
sPokeblockFeed->loadGfxState++;
break;
case 1:
diff --git a/src/pokemon.c b/src/pokemon.c
index 3621284d6..475373550 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2861,8 +2861,11 @@ void CalculateMonStats(struct Pokemon *mon)
currentHP = newMaxHP;
else if (currentHP != 0)
// BUG: currentHP is unintentionally able to become <= 0 after the instruction below. This causes the pomeg berry glitch.
- // To fix that set currentHP = 1 if currentHP <= 0.
currentHP += newMaxHP - oldMaxHP;
+ #ifdef BUGFIX
+ if (currentHP <= 0)
+ currentHP = 1;
+ #endif
else
return;
}
@@ -5594,8 +5597,8 @@ u16 SpeciesToCryId(u16 species)
void sub_806D544(u16 species, u32 personality, u8 *dest)
{
if (species == SPECIES_SPINDA
- && dest != gMonSpritesGfxPtr->sprites[0]
- && dest != gMonSpritesGfxPtr->sprites[2])
+ && dest != gMonSpritesGfxPtr->sprites.ptr[0]
+ && dest != gMonSpritesGfxPtr->sprites.ptr[2])
{
int i;
for (i = 0; i < 4; i++)
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index bfcf77b5c..58c174263 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -1041,6 +1041,15 @@ static void sub_817F77C(struct Sprite *sprite)
sprite->oam.matrixNum |= (sprite->hFlip << 3);
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
}
+#ifdef BUGFIX
+ else
+ {
+ // FIX: Reset these back to normal after they were changed so Poké Ball catch/release
+ // animations without a screen transition in between don't break
+ sprite->affineAnimPaused = FALSE;
+ sprite->affineAnims = gUnknown_082FF694;
+ }
+#endif // BUGFIX
}
static void pokemonanimfunc_01(struct Sprite *sprite)
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 6efca2562..db8f3d2bb 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -6777,11 +6777,11 @@ static void SetCursorMonData(void *pokemon, u8 mode)
{
u8 *txtPtr;
u16 gender;
- bool8 sanityIsBagEgg;
+ bool8 sanityIsBadEgg;
sPSSData->cursorMonItem = 0;
gender = MON_MALE;
- sanityIsBagEgg = FALSE;
+ sanityIsBadEgg = FALSE;
if (mode == MODE_PARTY)
{
struct Pokemon *mon = (struct Pokemon *)pokemon;
@@ -6789,8 +6789,8 @@ static void SetCursorMonData(void *pokemon, u8 mode)
sPSSData->cursorMonSpecies = GetMonData(mon, MON_DATA_SPECIES2);
if (sPSSData->cursorMonSpecies != SPECIES_NONE)
{
- sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
- if (sanityIsBagEgg)
+ sanityIsBadEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG);
+ if (sanityIsBadEgg)
sPSSData->cursorMonIsEgg = TRUE;
else
sPSSData->cursorMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG);
@@ -6813,8 +6813,8 @@ static void SetCursorMonData(void *pokemon, u8 mode)
if (sPSSData->cursorMonSpecies != SPECIES_NONE)
{
u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID);
- sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
- if (sanityIsBagEgg)
+ sanityIsBadEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG);
+ if (sanityIsBadEgg)
sPSSData->cursorMonIsEgg = TRUE;
else
sPSSData->cursorMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG);
@@ -6846,7 +6846,7 @@ static void SetCursorMonData(void *pokemon, u8 mode)
}
else if (sPSSData->cursorMonIsEgg)
{
- if (sanityIsBagEgg)
+ if (sanityIsBadEgg)
StringCopyPadded(sPSSData->cursorMonNickText, sPSSData->cursorMonNick, CHAR_SPACE, 5);
else
StringCopyPadded(sPSSData->cursorMonNickText, gText_EggNickname, CHAR_SPACE, 8);
@@ -9329,10 +9329,11 @@ u32 GetBoxMonLevelAt(u8 boxId, u8 boxPosition)
{
u32 lvl;
- // BUG: Missed 'else' statement.
if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT && GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES))
lvl = GetLevelFromBoxMonExp(&gPokemonStoragePtr->boxes[boxId][boxPosition]);
- // else
+ #ifdef BUGFIX
+ else
+ #endif
lvl = 0;
return lvl;
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index ad037a5f5..fce2a893c 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -2578,7 +2578,7 @@ static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mo
ScheduleBgCopyTilemapToVram(3);
}
-static void SetDexNumberColor(bool8 isMonShiny)
+static void SetMonPicBackgroundPalette(bool8 isMonShiny)
{
if (!isMonShiny)
SetBgTilemapPalette(3, 1, 4, 8, 8, 0);
@@ -2715,12 +2715,12 @@ static void PrintNotEggInfo(void)
if (!IsMonShiny(mon))
{
PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1);
- SetDexNumberColor(FALSE);
+ SetMonPicBackgroundPalette(FALSE);
}
else
{
PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7);
- SetDexNumberColor(TRUE);
+ SetMonPicBackgroundPalette(TRUE);
}
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
}
@@ -2728,9 +2728,9 @@ static void PrintNotEggInfo(void)
{
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
if (!IsMonShiny(mon))
- SetDexNumberColor(FALSE);
+ SetMonPicBackgroundPalette(FALSE);
else
- SetDexNumberColor(TRUE);
+ SetMonPicBackgroundPalette(TRUE);
}
StringCopy(gStringVar1, gText_LevelSymbol);
ConvertIntToDecimalStringN(gStringVar2, summary->level, STR_CONV_MODE_LEFT_ALIGN, 3);
@@ -3858,18 +3858,18 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state)
if (gMain.inBattle)
{
if (sub_80688F8(3, sMonSummaryScreen->curMonIndex))
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
else
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
}
else
{
if (gMonSpritesGfxPtr != NULL)
{
if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE)
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites.ptr[1], summary->species2, summary->pid);
}
else
{
diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c
index 91dbe4005..6610dcb80 100644
--- a/src/pokenav_match_call_data.c
+++ b/src/pokenav_match_call_data.c
@@ -1100,16 +1100,9 @@ const u8 *MatchCall_GetOverrideFlavorText(u32 idx, u32 offset)
{
if (sCheckPageOverrides[i].idx == idx)
{
- while (1)
- {
- if (i + 1 >= ARRAY_COUNT(sCheckPageOverrides))
- break;
- if (sCheckPageOverrides[i + 1].idx != idx)
- break;
- if (!FlagGet(sCheckPageOverrides[i + 1].flag))
- break;
- i++;
- }
+ for (; i + 1 < ARRAY_COUNT(sCheckPageOverrides) &&
+ sCheckPageOverrides[i + 1].idx == idx &&
+ FlagGet(sCheckPageOverrides[i + 1].flag); i++);
return sCheckPageOverrides[i].flavorTexts[offset];
}
}
diff --git a/src/region_map.c b/src/region_map.c
index 49b21be07..c2a5b4e9c 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -131,7 +131,11 @@ static const u16 sRegionMap_SpecialPlaceLocations[][2] =
{
{MAPSEC_UNDERWATER_105, MAPSEC_ROUTE_105},
{MAPSEC_UNDERWATER_124, MAPSEC_ROUTE_124},
+ #ifdef BUGFIX
+ {MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_125},
+ #else
{MAPSEC_UNDERWATER_125, MAPSEC_ROUTE_129}, // BUG: Map will incorrectly display the name of Route 129 when diving on Route 125 (for Marine Cave only)
+ #endif
{MAPSEC_UNDERWATER_126, MAPSEC_ROUTE_126},
{MAPSEC_UNDERWATER_127, MAPSEC_ROUTE_127},
{MAPSEC_UNDERWATER_128, MAPSEC_ROUTE_128},
diff --git a/src/roulette.c b/src/roulette.c
index b4d1c4463..4173edcdb 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -463,8 +463,9 @@ static const struct WindowTemplate sWindowTemplates[] =
.paletteNum = 15,
.baseBlock = 0xC5
},
- // BUG: Array not terminated properly
- //DUMMY_WIN_TEMPLATE
+ #ifdef UBFIX
+ DUMMY_WIN_TEMPLATE,
+ #endif
};
static const struct GridSelection sGridSelections[NUM_GRID_SELECTIONS + 1] =
diff --git a/src/trade.c b/src/trade.c
index 5ba26842f..6696c23eb 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -2724,9 +2724,9 @@ static void LoadTradeMonPic(u8 whichParty, u8 state)
personality = GetMonData(mon, MON_DATA_PERSONALITY);
if (whichParty == TRADE_PLAYER)
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[1], species, personality);
else
- HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality);
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites.ptr[whichParty * 2 + 1], species, personality);
LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
sTradeData->monSpecies[whichParty] = species;
@@ -3659,7 +3659,7 @@ static bool8 AnimateTradeSequenceCable(void)
case 65:
if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy)
{
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites.ptr[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]);
sTradeData->state++;
}
break;
@@ -4174,7 +4174,7 @@ static bool8 AnimateTradeSequenceWireless(void)
case 65:
if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy)
{
- HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]);
+ HandleLoadSpecialPokePic_2(&gMonFrontPicTable[sTradeData->monSpecies[TRADE_PARTNER]], gMonSpritesGfxPtr->sprites.ptr[3], sTradeData->monSpecies[TRADE_PARTNER], sTradeData->monPersonalities[TRADE_PARTNER]);
sTradeData->state++;
}
break;
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 4f4aaea08..46fafa7e3 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -377,15 +377,15 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap
}
// preserve mapobj_unk_19 before clearing.
- unk19_temp = trainerObj->range.as_nybbles.x;
- unk19b_temp = trainerObj->range.as_nybbles.y;
- trainerObj->range.as_nybbles.x = 0;
- trainerObj->range.as_nybbles.y = 0;
+ unk19_temp = trainerObj->rangeX;
+ unk19b_temp = trainerObj->rangeY;
+ trainerObj->rangeX = 0;
+ trainerObj->rangeY = 0;
collision = GetCollisionAtCoords(trainerObj, x, y, direction);
- trainerObj->range.as_nybbles.x = unk19_temp;
- trainerObj->range.as_nybbles.y = unk19b_temp;
+ trainerObj->rangeX = unk19_temp;
+ trainerObj->rangeY = unk19b_temp;
if (collision == 4)
return approachDistance;
diff --git a/src/union_room.c b/src/union_room.c
index 3e80ffe37..479792a7c 100644
--- a/src/union_room.c
+++ b/src/union_room.c
@@ -478,7 +478,11 @@ static void Task_TryBecomeLinkLeader(u8 taskId)
// BUG: sPlayerActivityGroupSize was meant below, not gPlayerCurrActivity
// This will be false for all but ACTIVITY_BATTLE_DOUBLE and ACTIVITY_DECLINE
// All this changes is which of two texts gets printed
+ #ifdef BUGFIX
+ id = (GROUP_MAX(sPlayerActivityGroupSize) == 2) ? 0 : 1;
+ #else
id = (GROUP_MAX(gPlayerCurrActivity) == 2) ? 1 : 0;
+ #endif
if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id]))
{
data->playerCount = sub_8013398(data->field_0);
@@ -1320,7 +1324,11 @@ static bool32 IsPartnerActivityAcceptable(u32 activity, u32 linkGroup)
if (linkGroup == 0xFF)
return TRUE;
- if (linkGroup <= ARRAY_COUNT(sAcceptedActivityIds)) // UB: <= may access data outside the array
+ #ifdef UBFIX
+ if (linkGroup < ARRAY_COUNT(sAcceptedActivityIds))
+ #else
+ if (linkGroup <= ARRAY_COUNT(sAcceptedActivityIds))
+ #endif
{
const u8 *bytes = sAcceptedActivityIds[linkGroup];
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 1af157b90..b4ccbfe06 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "main.h"
+#include "dma3.h"
#include "pokeblock.h"
#include "malloc.h"
#include "decompress.h"
@@ -1240,8 +1241,7 @@ static void UpdateMonPic(u8 loadId)
}
else
{
- do {} while(0); // Only needed to match, feel free to remove.
- DmaCopy16Defvars(3, sMenu->partySheets[loadId], sMenu->curMonTileStart, 0x800);
+ Dma3CopyLarge16_(sMenu->partySheets[loadId], sMenu->curMonTileStart, 0x800);
LoadPalette(sMenu->partyPalettes[loadId], sMenu->curMonPalette, 32);
}
}
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
index 4b617e3b8..18fb2791b 100644
--- a/src/walda_phrase.c
+++ b/src/walda_phrase.c
@@ -173,14 +173,12 @@ static void sub_81D9C90(u8 *array, s32 arg1, s32 arg2)
{
var1 = (array[0] & 0x80) >> 7;
- var1++; var1--; // needed to match
-
for (j = arg1 - 1; j >= 0; j--)
{
- var2 = array[j] & 0x80;
+ var2 = (array[j] & 0x80) >> 7;
array[j] <<= 1;
array[j] |= var1;
- var1 = var2 >> 7;
+ var1 = var2;
}
}
}