summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-07-08 10:23:22 -0400
committerGitHub <noreply@github.com>2021-07-08 10:23:22 -0400
commita3228d4c86494ee25aff60fc037805ddc1d47d32 (patch)
tree082b433e0f10e758799ce2501f49f959f2ce54b3
parent038befb44341f0fc22f522dd454d64cf4ad2df2e (diff)
parentb86d6d05d92de28c35c899f4fbd03c1d542dc689 (diff)
Merge pull request #828 from PikalaxALT/battle_struct_macros
Battle struct macros
-rw-r--r--.github/workflows/build.yml2
-rw-r--r--Makefile22
-rwxr-xr-xasmdiff_de.sh2
-rw-r--r--data-de/contest_opponents.inc663
-rw-r--r--data-de/ingame_trades.inc108
-rw-r--r--data-de/text/contest_strings.inc843
-rw-r--r--data-de/text/trainer_class_names.inc59
-rw-r--r--data/battle_7.s2
-rw-r--r--data/btl_attrs.s37
-rw-r--r--data/contest.s456
-rw-r--r--data/contest_excitement_table.inc7
-rw-r--r--data/contest_opponents.inc663
-rw-r--r--data/contest_painting_effects.s3206
-rw-r--r--data/maps/LilycoveCity/scripts.inc2
-rw-r--r--data/maps/LilycoveCity_ContestLobby/scripts.inc6
-rw-r--r--data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc2
-rw-r--r--data/mon_attrs.s4
-rw-r--r--data/scripts/contest_hall.inc8
-rw-r--r--data/specials.inc14
-rw-r--r--data/text/contest_strings.inc669
-rwxr-xr-xde_after.sh3
-rwxr-xr-xde_before.sh1
-rw-r--r--include/battle.h264
-rw-r--r--include/battle_anim.h42
-rw-r--r--include/battle_interface.h10
-rw-r--r--include/battle_message.h44
-rw-r--r--include/battle_script_commands.h8
-rw-r--r--include/battle_string_ids.h214
-rw-r--r--include/constants/battle.h6
-rw-r--r--include/constants/contest.h44
-rw-r--r--include/constants/item_effects.h92
-rw-r--r--include/constants/pokemon.h4
-rw-r--r--include/contest.h225
-rw-r--r--include/contest_internal.h154
-rw-r--r--include/contest_link.h14
-rw-r--r--include/contest_link_80C857C.h14
-rw-r--r--include/contest_link_util.h (renamed from include/contest_link_80C2020.h)12
-rw-r--r--include/contest_painting.h19
-rw-r--r--include/contest_painting_effects.h28
-rw-r--r--include/contest_util.h (renamed from include/script_pokemon_80C4.h)2
-rw-r--r--include/credits.h2
-rw-r--r--include/data2.h8
-rw-r--r--include/decompress.h6
-rw-r--r--include/dewford_trend.h2
-rw-r--r--include/easy_chat.h2
-rw-r--r--include/ewram.h385
-rw-r--r--include/field_effect.h2
-rw-r--r--include/global.h55
-rw-r--r--include/graphics.h8
-rw-r--r--include/image_processing_effects.h53
-rw-r--r--include/intro_credits_graphics.h2
-rw-r--r--include/item.h10
-rw-r--r--include/link.h2
-rw-r--r--include/menu.h4
-rw-r--r--include/party_menu.h67
-rw-r--r--include/pokedex.h10
-rw-r--r--include/pokedex_cry_screen.h14
-rw-r--r--include/pokemon.h18
-rw-r--r--include/pokemon_icon.h4
-rw-r--r--include/pokemon_summary_screen.h2
-rw-r--r--include/record_mixing.h10
-rw-r--r--include/region_map.h13
-rw-r--r--include/rom_8077ABC.h6
-rw-r--r--include/secret_base.h2
-rw-r--r--include/sprite.h4
-rw-r--r--include/text.h36
-rw-r--r--include/tv.h4
-rw-r--r--ld_script.txt20
-rw-r--r--override.mk3
-rw-r--r--src/battle/anim/alert.c2
-rw-r--r--src/battle/anim/angel.c10
-rw-r--r--src/battle/anim/angel_kiss.c16
-rw-r--r--src/battle/anim/anger.c8
-rw-r--r--src/battle/anim/aurora.c4
-rw-r--r--src/battle/anim/battle_intro.c22
-rw-r--r--src/battle/anim/beta_beat_up.c4
-rw-r--r--src/battle/anim/blow_kiss.c6
-rw-r--r--src/battle/anim/bottle.c14
-rw-r--r--src/battle/anim/brace.c12
-rw-r--r--src/battle/anim/breath.c6
-rw-r--r--src/battle/anim/bubble.c20
-rw-r--r--src/battle/anim/bug.c46
-rw-r--r--src/battle/anim/bullet.c14
-rw-r--r--src/battle/anim/copy_orb.c4
-rw-r--r--src/battle/anim/cube.c4
-rw-r--r--src/battle/anim/current.c72
-rw-r--r--src/battle/anim/cyclone.c2
-rw-r--r--src/battle/anim/dark.c52
-rw-r--r--src/battle/anim/devil.c8
-rw-r--r--src/battle/anim/dragon.c56
-rw-r--r--src/battle/anim/draw.c8
-rw-r--r--src/battle/anim/energy_wave.c18
-rw-r--r--src/battle/anim/espeed.c18
-rw-r--r--src/battle/anim/evasion.c2
-rw-r--r--src/battle/anim/fight.c120
-rw-r--r--src/battle/anim/finger.c12
-rw-r--r--src/battle/anim/fire.c32
-rw-r--r--src/battle/anim/fire_2.c76
-rw-r--r--src/battle/anim/flying.c162
-rw-r--r--src/battle/anim/flying_hearts.c10
-rw-r--r--src/battle/anim/flying_path.c78
-rw-r--r--src/battle/anim/flying_petals.c20
-rw-r--r--src/battle/anim/ghost.c96
-rw-r--r--src/battle/anim/glitter.c14
-rw-r--r--src/battle/anim/grip.c4
-rw-r--r--src/battle/anim/ground.c66
-rw-r--r--src/battle/anim/guard.c12
-rw-r--r--src/battle/anim/guillotine.c24
-rw-r--r--src/battle/anim/heal.c2
-rw-r--r--src/battle/anim/heart_1.c4
-rw-r--r--src/battle/anim/hidden_power_orbit.c18
-rw-r--r--src/battle/anim/homing.c20
-rw-r--r--src/battle/anim/hop.c14
-rw-r--r--src/battle/anim/hop_2.c6
-rw-r--r--src/battle/anim/ice.c182
-rw-r--r--src/battle/anim/kiss_fountain.c4
-rw-r--r--src/battle/anim/leaf.c34
-rw-r--r--src/battle/anim/lunge.c14
-rw-r--r--src/battle/anim/money.c10
-rw-r--r--src/battle/anim/moon.c8
-rw-r--r--src/battle/anim/musical.c48
-rw-r--r--src/battle/anim/noise.c12
-rw-r--r--src/battle/anim/normal.c44
-rw-r--r--src/battle/anim/note_spin.c10
-rw-r--r--src/battle/anim/orbit.c22
-rw-r--r--src/battle/anim/orbs.c22
-rw-r--r--src/battle/anim/osmose.c8
-rw-r--r--src/battle/anim/poison.c28
-rw-r--r--src/battle/anim/powder.c8
-rw-r--r--src/battle/anim/psychic.c74
-rw-r--r--src/battle/anim/rain.c4
-rw-r--r--src/battle/anim/ring.c22
-rw-r--r--src/battle/anim/rock.c68
-rw-r--r--src/battle/anim/roots.c24
-rw-r--r--src/battle/anim/scan.c40
-rw-r--r--src/battle/anim/sfx.c7
-rw-r--r--src/battle/anim/shadow_minimize.c2
-rw-r--r--src/battle/anim/shield.c6
-rw-r--r--src/battle/anim/shock.c24
-rw-r--r--src/battle/anim/silhouette.c8
-rw-r--r--src/battle/anim/slash.c16
-rw-r--r--src/battle/anim/sleep.c12
-rw-r--r--src/battle/anim/slice.c28
-rw-r--r--src/battle/anim/sonic.c38
-rw-r--r--src/battle/anim/spit.c8
-rw-r--r--src/battle/anim/splash.c8
-rw-r--r--src/battle/anim/startle.c16
-rw-r--r--src/battle/anim/strike.c40
-rw-r--r--src/battle/anim/struggle.c12
-rw-r--r--src/battle/anim/sunlight.c4
-rw-r--r--src/battle/anim/swipe.c4
-rw-r--r--src/battle/anim/switch.c16
-rw-r--r--src/battle/anim/sword.c4
-rw-r--r--src/battle/anim/thought.c6
-rw-r--r--src/battle/anim/thrashing.c16
-rw-r--r--src/battle/anim/thunder.c6
-rw-r--r--src/battle/anim/tile.c6
-rw-r--r--src/battle/anim/twinkle.c6
-rw-r--r--src/battle/anim/unused_1.c4
-rw-r--r--src/battle/anim/unused_2.c12
-rw-r--r--src/battle/anim/unused_3.c12
-rw-r--r--src/battle/anim/unused_5.c2
-rw-r--r--src/battle/anim/unused_6.c4
-rw-r--r--src/battle/anim/unused_7.c14
-rw-r--r--src/battle/anim/unused_8.c4
-rw-r--r--src/battle/anim/water.c352
-rw-r--r--src/battle/anim/whip.c10
-rw-r--r--src/battle/anim/wisp_fire.c20
-rw-r--r--src/battle/anim/wisp_orb.c22
-rw-r--r--src/battle/anim/withdraw.c4
-rw-r--r--src/battle_ai_script_commands.c6
-rw-r--r--src/battle_ai_switch_items.c109
-rw-r--r--src/battle_anim.c64
-rw-r--r--src/battle_anim_effects_3.c598
-rw-r--r--src/battle_anim_mon_movement.c154
-rwxr-xr-xsrc/battle_anim_special.c112
-rw-r--r--src/battle_anim_status_effects.c10
-rw-r--r--src/battle_bg.c56
-rw-r--r--src/battle_controller_link_opponent.c46
-rw-r--r--src/battle_controller_link_partner.c48
-rw-r--r--src/battle_controller_opponent.c453
-rw-r--r--src/battle_controller_player.c217
-rw-r--r--src/battle_controller_safari.c30
-rw-r--r--src/battle_controller_wally.c104
-rw-r--r--src/battle_controllers.c49
-rw-r--r--src/battle_gfx_sfx_util.c130
-rw-r--r--src/battle_interface.c767
-rw-r--r--src/battle_main.c672
-rw-r--r--src/battle_message.c154
-rw-r--r--src/battle_party_menu.c152
-rw-r--r--src/battle_records.c6
-rw-r--r--src/battle_script_commands.c6435
-rw-r--r--src/battle_setup.c25
-rw-r--r--src/battle_tower.c431
-rw-r--r--src/battle_transition.c45
-rw-r--r--src/battle_util.c94
-rw-r--r--src/berry_blender.c42
-rw-r--r--src/cable_car.c82
-rw-r--r--src/cable_club.c20
-rw-r--r--src/calculate_base_damage.c2
-rw-r--r--src/choose_party.c143
-rw-r--r--src/contest.c4510
-rw-r--r--src/contest_2.c4186
-rw-r--r--src/contest_ai.c24
-rw-r--r--src/contest_effect.c398
-rw-r--r--src/contest_link.c (renamed from src/contest_link_80C857C.c)199
-rw-r--r--src/contest_link_util.c (renamed from src/contest_link_80C2020.c)237
-rw-r--r--src/contest_painting.c347
-rw-r--r--src/contest_painting_effects.c1535
-rw-r--r--src/contest_util.c (renamed from src/script_pokemon_util_80C4BF0.c)153
-rw-r--r--src/credits.c503
-rw-r--r--src/data/contest_opponents.h1668
-rw-r--r--src/data/graphics.c22
-rw-r--r--src/data/pointillism_points.h3210
-rw-r--r--src/data/text/contest_de.h470
-rw-r--r--src/data/text/contest_en.h453
-rw-r--r--src/debug/crash.c6
-rw-r--r--src/debug/matsuda_debug_menu.c60
-rw-r--r--src/debug/sound_check_menu.c22
-rw-r--r--src/debug/start_menu_debug.c21
-rw-r--r--src/debug/taya_debug_window.c4
-rw-r--r--src/debug/tomomichi_debug_menu.c50
-rw-r--r--src/debug/watanabe_debug_menu.c194
-rw-r--r--src/decompress.c22
-rw-r--r--src/decoration.c106
-rw-r--r--src/dewford_trend.c18
-rw-r--r--src/easy_chat_2.c74
-rw-r--r--src/egg_hatch.c33
-rw-r--r--src/event_data.c4
-rw-r--r--src/event_object_movement.c111
-rw-r--r--src/evolution_graphics.c28
-rw-r--r--src/evolution_scene.c228
-rw-r--r--src/field_effect.c150
-rw-r--r--src/field_effect_helpers.c98
-rw-r--r--src/field_fadetransition.c2
-rw-r--r--src/field_message_box.c4
-rw-r--r--src/field_player_avatar.c22
-rw-r--r--src/field_region_map.c39
-rw-r--r--src/field_weather_effects.c108
-rw-r--r--src/fldeff_cut.c4
-rw-r--r--src/fldeff_recordmixing.c6
-rw-r--r--src/fldeff_softboiled.c90
-rw-r--r--src/hall_of_fame.c188
-rw-r--r--src/image_processing_effects.c1204
-rw-r--r--src/intro.c314
-rw-r--r--src/intro_credits_graphics.c34
-rw-r--r--src/item.c28
-rw-r--r--src/item_menu.c6
-rw-r--r--src/link.c6
-rw-r--r--src/mail.c120
-rw-r--r--src/main_menu.c56
-rw-r--r--src/mauville_man.c2
-rw-r--r--src/menu.c10
-rw-r--r--src/menu_cursor.c12
-rw-r--r--src/menu_helpers.c24
-rw-r--r--src/mon_markings.c8
-rw-r--r--src/move_tutor_menu.c12
-rw-r--r--src/mystery_event_menu.c8
-rw-r--r--src/naming_screen.c22
-rw-r--r--src/new_game.c16
-rw-r--r--src/overworld.c20
-rw-r--r--src/party_menu.c2114
-rw-r--r--src/pc_screen_effect.c14
-rw-r--r--src/pokeball.c104
-rw-r--r--src/pokeblock.c18
-rw-r--r--src/pokeblock_feed.c72
-rw-r--r--src/pokedex.c2106
-rw-r--r--src/pokedex_cry_screen.c883
-rw-r--r--src/pokemon_1.c6
-rw-r--r--src/pokemon_2.c43
-rw-r--r--src/pokemon_3.c26
-rw-r--r--src/pokemon_icon.c18
-rw-r--r--src/pokemon_item_effect.c285
-rw-r--r--src/pokemon_menu.c62
-rw-r--r--src/pokemon_storage_system.c11
-rw-r--r--src/pokemon_storage_system_2.c6
-rw-r--r--src/pokemon_storage_system_3.c42
-rw-r--r--src/pokemon_storage_system_4.c88
-rw-r--r--src/pokemon_summary_screen.c26
-rw-r--r--src/pokenav.c68
-rw-r--r--src/post_battle_event_funcs.c12
-rw-r--r--src/record_mixing.c68
-rw-r--r--src/region_map.c140
-rw-r--r--src/reset_rtc_screen.c36
-rw-r--r--src/reshow_battle_screen.c22
-rw-r--r--src/rom_8077ABC.c306
-rw-r--r--src/rotating_gate.c6
-rw-r--r--src/roulette.c12
-rw-r--r--src/roulette_gfx.c68
-rw-r--r--src/save.c16
-rw-r--r--src/save_menu_util.c2
-rw-r--r--src/scrcmd.c14
-rw-r--r--src/script_pokemon_util_80F99CC.c88
-rw-r--r--src/secret_base.c130
-rw-r--r--src/shop.c4
-rw-r--r--src/slot_machine.c1152
-rw-r--r--src/sprite.c18
-rw-r--r--src/starter_choose.c32
-rw-r--r--src/text.c6
-rw-r--r--src/text_window.c2
-rw-r--r--src/title_screen.c18
-rw-r--r--src/trade.c138
-rw-r--r--src/trainer_card.c270
-rw-r--r--src/trainer_see.c8
-rw-r--r--src/trig.c6
-rw-r--r--src/tv.c55
-rw-r--r--src/use_pokeblock.c6
-rw-r--r--src/wallclock.c16
-rw-r--r--sym_common.txt38
-rw-r--r--sym_ewram.txt36
310 files changed, 23143 insertions, 29725 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ae64c067d..ac73f2935 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -83,7 +83,7 @@ jobs:
env:
NONMATCHING: 1
COMPARE: 0
- run: make -j${nproc} $(git grep -wl NONMATCHING src | sed -r 's/^/-W /g')
+ run: make -j${nproc} $(git grep -wl NONMATCHING src | sed -r 'i-W')
- name: Setup German
run: sh de_before.sh
diff --git a/Makefile b/Makefile
index 390d1e759..ed06f11e0 100644
--- a/Makefile
+++ b/Makefile
@@ -88,13 +88,9 @@ ASFLAGS := -mcpu=arm7tdmi -I include --defsym $(GAME_VERSION)=1 --defsym REVISI
CPPFLAGS := -iquote include -Werror -Wno-trigraphs -D $(GAME_VERSION) -D REVISION=$(GAME_REVISION) -D $(GAME_LANGUAGE) -D=DEBUG_FIX$(DEBUG_FIX) -D DEBUG=$(DEBUG) -D MODERN=$(MODERN)
ifeq ($(MODERN),0)
CPPFLAGS += -I tools/agbcc/include -nostdinc -undef
-CC1FLAGS := -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
+CC1FLAGS := -g -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
else
-CC1FLAGS := -mthumb -mthumb-interwork -mabi=apcs-gnu -mcpu=arm7tdmi -O2 -fno-toplevel-reorder -fno-aggressive-loop-optimizations -Wno-pointer-to-int-cast -Wno-stringop-overflow
-endif
-
-ifneq (,$(DINFO))
-CC1FLAGS += -g
+CC1FLAGS := -g -mthumb -mthumb-interwork -mabi=apcs-gnu -mcpu=arm7tdmi -O2 -fno-toplevel-reorder -fno-aggressive-loop-optimizations -Wno-pointer-to-int-cast -Wno-stringop-overflow
endif
ifneq (,$(NONMATCHING))
@@ -242,7 +238,8 @@ $(ROM): %.gba: %.elf
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
%.elf: $(LD_SCRIPT) $(ALL_OBJECTS)
- cd $(BUILD_DIR) && $(LD) -T $(LD_SCRIPT:$(BUILD_DIR)/%=%) -Map ../../$(MAP) -o ../../$@ $(OBJS_REL) $(LDFLAGS)
+ @echo "cd $(BUILD_DIR) && $(LD) -T $(LD_SCRIPT:$(BUILD_DIR)/%=%) -Map ../../$(MAP) -o ../../$@ <objects> <lib>"
+ @cd $(BUILD_DIR) && $(LD) -T $(LD_SCRIPT:$(BUILD_DIR)/%=%) -Map ../../$(MAP) -o ../../$@ $(OBJS_REL) $(LDFLAGS)
$(GBAFIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(GAME_REVISION) --silent
$(LD_SCRIPT): $(LD_SCRIPT:$(BUILD_DIR)/%.ld=%.txt) $(BUILD_DIR)/sym_common.ld $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_bss.ld
@@ -251,17 +248,20 @@ $(BUILD_DIR)/sym_%.ld: sym_%.txt
$(CPP) -P $(CPPFLAGS) $< | sed -e "s#tools/#../../tools/#g" > $@
$(C_OBJECTS): $(BUILD_DIR)/%.o: %.c $$(C_DEP)
- $(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i
- $(PREPROC) $(BUILD_DIR)/$*.i charmap.txt | $(CC1) $(CC1FLAGS) -o $(BUILD_DIR)/$*.s
+ @echo "$(CC1) <flags> -o $@ $<"
+ @$(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i
+ @$(PREPROC) $(BUILD_DIR)/$*.i charmap.txt | $(CC1) $(CC1FLAGS) -o $(BUILD_DIR)/$*.s
@printf ".text\n\t.align\t2, 0\n" >> $(BUILD_DIR)/$*.s
@$(AS) $(ASFLAGS) -W -o $@ $(BUILD_DIR)/$*.s
# Only .s files in data need preproc
$(BUILD_DIR)/data/%.o: data/%.s $$(ASM_DEP)
- $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
+ @echo "$(AS) <flags> -o $@ $<"
+ @$(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
$(BUILD_DIR)/%.o: %.s $$(ASM_DEP)
- $(AS) $(ASFLAGS) $< -o $@
+ @echo "$(AS) <flags> -o $@ $<"
+ @$(AS) $(ASFLAGS) $< -o $@
# "friendly" target names for convenience sake
ruby: ; @$(MAKE) GAME_VERSION=RUBY
diff --git a/asmdiff_de.sh b/asmdiff_de.sh
index aa42daa5e..31673d136 100755
--- a/asmdiff_de.sh
+++ b/asmdiff_de.sh
@@ -4,4 +4,4 @@ OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb
OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
$OBJDUMP $OPTIONS baserom_de.gba > baserom_de.dump
$OBJDUMP $OPTIONS pokeruby_de.gba > pokeruby_de.dump
-diff baserom_de.dump pokeruby_de.dump
+diff -u baserom_de.dump pokeruby_de.dump
diff --git a/data-de/contest_opponents.inc b/data-de/contest_opponents.inc
deleted file mode 100644
index 1bdf7027e..000000000
--- a/data-de/contest_opponents.inc
+++ /dev/null
@@ -1,663 +0,0 @@
- .align 2
-gContestOpponents:: @ 83C9408
- .2byte 286 @ SPECIES_ID
- .string "FIFFI$", 11 @ POKE_NICKNAME
- .string "JIMMY$", 8 @ TRAINER_NAME
- .byte 7 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x0c000fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_ROAR, MOVE_BITE, MOVE_TAKE_DOWN, MOVE_HOWL
- .byte 10, 4, 10, 3, 4, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 288 @ SPECIES_ID
- .string "ZIGGY$", 11 @ POKE_NICKNAME
- .string "KLARA$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 16 @ RANK
- .2byte MOVE_REST, MOVE_TAIL_WHIP, MOVE_TACKLE, MOVE_COVET
- .byte 10, 10, 6, 1, 2, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 294 @ SPECIES_ID
- .string "DOXU$", 11 @ POKE_NICKNAME
- .string "KARLO$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x21000fff @ FLAGS
- .2byte 8 @ RANK
- .2byte MOVE_SILVER_WIND, MOVE_MOONLIGHT, MOVE_LIGHT_SCREEN, MOVE_GUST
- .byte 2, 10, 10, 12, 4, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 298 @ SPECIES_ID
- .string "SAMINI$", 11 @ POKE_NICKNAME
- .string "TRUDI$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x20800fff @ FLAGS
- .2byte 96 @ RANK
- .2byte MOVE_BIDE, MOVE_SYNTHESIS, MOVE_BULLET_SEED, MOVE_GROWTH
- .byte 3, 3, 5, 2, 7, 80 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 304 @ SPECIES_ID
- .string "SCHWALBI$", 11 @ POKE_NICKNAME
- .string "HELENA$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 4 @ RANK
- .2byte MOVE_WING_ATTACK, MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_GROWL
- .byte 1, 3, 3, 5, 4, 90 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 301 @ SPECIES_ID
- .string "CADINJA$", 11 @ POKE_NICKNAME
- .string "WILLI$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10200fff @ FLAGS
- .2byte 32 @ RANK
- .2byte MOVE_LEECH_LIFE, MOVE_FALSE_SWIPE, MOVE_FURY_SWIPES, MOVE_MIND_READER
- .byte 5, 2, 10, 7, 8, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 306 @ SPECIES_ID
- .string "KNILZLI$", 11 @ POKE_NICKNAME
- .string "HARTMUT$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x20100fff @ FLAGS
- .2byte 32 @ RANK
- .2byte MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_ATTRACT
- .byte 3, 3, 10, 2, 2, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 309 @ SPECIES_ID
- .string "WINGI$", 11 @ POKE_NICKNAME
- .string "CLAUDIA$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08080fff @ FLAGS
- .2byte 24 @ RANK
- .2byte MOVE_MIST, MOVE_WATER_GUN, MOVE_GROWL, MOVE_PURSUIT
- .byte 3, 5, 1, 10, 10, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 364 @ SPECIES_ID
- .string "BLUMPI$", 11 @ POKE_NICKNAME
- .string "ALEC$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x40040fff @ FLAGS
- .2byte 88 @ RANK
- .2byte MOVE_STRENGTH, MOVE_COUNTER, MOVE_YAWN, MOVE_ENCORE
- .byte 10, 4, 4, 5, 18, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 370 @ SPECIES_ID
- .string "FLURMI$", 11 @ POKE_NICKNAME
- .string "SILKE$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 36 @ RANK
- .2byte MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_HYPER_VOICE
- .byte 2, 2, 7, 2, 7, 80 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 335 @ SPECIES_ID
- .string "MAHITA$", 11 @ POKE_NICKNAME
- .string "PEER$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08010fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_SEISMIC_TOSS, MOVE_VITAL_THROW, MOVE_TACKLE, MOVE_REVERSAL
- .byte 9, 1, 1, 8, 1, 90 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 382 @ SPECIES_ID
- .string "STOLLI$", 11 @ POKE_NICKNAME
- .string "MARIA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08008fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_HEADBUTT, MOVE_TAKE_DOWN
- .byte 5, 10, 2, 10, 2, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 41 @ SPECIES_ID
- .string "BLUTBAT$", 11 @ POKE_NICKNAME
- .string "RUDOLF$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x90004fff @ FLAGS
- .2byte 56 @ RANK
- .2byte MOVE_HAZE, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_LEECH_LIFE
- .byte 4, 2, 2, 2, 10, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 367 @ SPECIES_ID
- .string "SCHLUPPI$", 11 @ POKE_NICKNAME
- .string "MELANIE$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x40002fff @ FLAGS
- .2byte 16 @ RANK
- .2byte MOVE_SLUDGE, MOVE_AMNESIA, MOVE_TOXIC, MOVE_YAWN
- .byte 1, 10, 1, 10, 5, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 337 @ SPECIES_ID
- .string "FRIZZZEL$", 11 @ POKE_NICKNAME
- .string "BERTRAM$", 8 @ TRAINER_NAME
- .byte 15 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 12 @ RANK
- .2byte MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_ROAR
- .byte 20, 10, 1, 1, 1, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 363 @ SPECIES_ID
- .string "ROSALI$", 11 @ POKE_NICKNAME
- .string "KARINA$", 8 @ TRAINER_NAME
- .byte 32 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x24000fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_PETAL_DANCE, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_INGRAIN
- .byte 50, 15, 75, 10, 20, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 84 @ SPECIES_ID
- .string "DOLDI$", 11 @ POKE_NICKNAME
- .string "BOBBY$", 8 @ TRAINER_NAME
- .byte 51 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 125 @ RANK
- .2byte MOVE_PECK, MOVE_FURY_ATTACK, MOVE_RETURN, MOVE_GROWL
- .byte 15, 21, 15, 85, 35, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 332 @ SPECIES_ID
- .string "KNACKI$", 11 @ POKE_NICKNAME
- .string "JUDITH$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 113 @ RANK
- .2byte MOVE_BITE, MOVE_SAND_ATTACK, MOVE_DIG, MOVE_FAINT_ATTACK
- .byte 75, 25, 25, 10, 25, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 344 @ SPECIES_ID
- .string "KOTUS$", 11 @ POKE_NICKNAME
- .string "HELMUT$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 37 @ RANK
- .2byte MOVE_SPIKES, MOVE_LEER, MOVE_POISON_STING, MOVE_SAND_ATTACK
- .byte 10, 30, 25, 65, 25, 130 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 27 @ SPECIES_ID
- .string "SADAN$", 11 @ POKE_NICKNAME
- .string "BRITTA$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10400fff @ FLAGS
- .2byte 69 @ RANK
- .2byte MOVE_SLASH, MOVE_DEFENSE_CURL, MOVE_SWIFT, MOVE_FURY_SWIPES
- .byte 30, 90, 30, 10, 100, 140 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 318 @ SPECIES_ID
- .string "PUPPIBAL$", 11 @ POKE_NICKNAME
- .string "TORBEN$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08200fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_SELF_DESTRUCT, MOVE_ROCK_TOMB, MOVE_PSYBEAM, MOVE_CONFUSION
- .byte 50, 40, 10, 35, 35, 150 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 339 @ SPECIES_ID
- .string "CLAMAUK$", 11 @ POKE_NICKNAME
- .string "BIANKA$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10100fff @ FLAGS
- .2byte 77 @ RANK
- .2byte MOVE_MAGNITUDE, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY, MOVE_FLAMETHROWER
- .byte 40, 5, 40, 40, 40, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 308 @ SPECIES_ID
- .string "SPIRRWIRR$", 11 @ POKE_NICKNAME
- .string "ALEX$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 49 @ RANK
- .2byte MOVE_TEETER_DANCE, MOVE_PSYCH_UP, MOVE_HYPNOSIS, MOVE_UPROAR
- .byte 25, 75, 25, 10, 25, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 358 @ SPECIES_ID
- .string "BLUPPF$", 11 @ POKE_NICKNAME
- .string "SABINE$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0xa0040fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_MIRROR_MOVE, MOVE_PERISH_SONG, MOVE_SAFEGUARD, MOVE_MIST
- .byte 30, 30, 40, 30, 25, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 289 @ SPECIES_ID
- .string "DAKSIRAD$", 11 @ POKE_NICKNAME
- .string "AUGUST$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 25 @ RANK
- .2byte MOVE_GROWL, MOVE_COVET, MOVE_SAND_ATTACK, MOVE_REST
- .byte 40, 40, 30, 10, 30, 130 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 317 @ SPECIES_ID
- .string "KECLI$", 11 @ POKE_NICKNAME
- .string "ARIANA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 97 @ RANK
- .2byte MOVE_THIEF, MOVE_SCREECH, MOVE_ANCIENT_POWER, MOVE_BIND
- .byte 10, 10, 40, 75, 35, 140 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 118 @ SPECIES_ID
- .string "GOLDINCHEN$", 11 @ POKE_NICKNAME
- .string "TONI$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 13 @ RANK
- .2byte MOVE_HORN_ATTACK, MOVE_FURY_ATTACK, MOVE_HORN_DRILL, MOVE_TAIL_WHIP
- .byte 70, 30, 5, 30, 25, 150 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 323 @ SPECIES_ID
- .string "SCHMERBSE$", 11 @ POKE_NICKNAME
- .string "SUSI$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 113 @ RANK
- .2byte MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_EARTHQUAKE, MOVE_FUTURE_SIGHT
- .byte 45, 45, 60, 25, 15, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 227 @ SPECIES_ID
- .string "KREBSILI$", 11 @ POKE_NICKNAME
- .string "CLEMENS$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08002fff @ FLAGS
- .2byte 77 @ RANK
- .2byte MOVE_SWIFT, MOVE_DOUBLE_TEAM, MOVE_AGILITY, MOVE_CUT
- .byte 40, 30, 25, 60, 20, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 295 @ SPECIES_ID
- .string "URLOTZO$", 11 @ POKE_NICKNAME
- .string "KATRIN$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08001fff @ FLAGS
- .2byte 57 @ RANK
- .2byte MOVE_ASTONISH, MOVE_GROWL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE
- .byte 15, 15, 30, 15, 75, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 383 @ SPECIES_ID
- .string "STROLLAK$", 11 @ POKE_NICKNAME
- .string "ACHIM$", 8 @ TRAINER_NAME
- .byte 55 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x84000fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_METAL_SOUND, MOVE_METAL_CLAW, MOVE_HARDEN, MOVE_TAKE_DOWN
- .byte 30, 50, 35, 100, 90, 200 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 299 @ SPECIES_ID
- .string "BLASNI$", 11 @ POKE_NICKNAME
- .string "GABI$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_GROWTH, MOVE_RAZOR_WIND, MOVE_EXPLOSION, MOVE_EXTRASENSORY
- .byte 75, 75, 65, 35, 70, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 302 @ SPECIES_ID
- .string "ASKINJA$", 11 @ POKE_NICKNAME
- .string "ROLF$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 114 @ RANK
- .2byte MOVE_SCREECH, MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS
- .byte 30, 50, 95, 70, 70, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 305 @ SPECIES_ID
- .string "SCHWALLO$", 11 @ POKE_NICKNAME
- .string "ELSE$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_WING_ATTACK, MOVE_FLY
- .byte 65, 85, 35, 75, 40, 230 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 287 @ SPECIES_ID
- .string "JÄNAGI$", 11 @ POKE_NICKNAME
- .string "FRANK$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_TAUNT, MOVE_THIEF, MOVE_ODOR_SLEUTH, MOVE_TAKE_DOWN
- .byte 40, 80, 35, 70, 70, 240 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 292 @ SPECIES_ID
- .string "PAPINILLI$", 11 @ POKE_NICKNAME
- .string "ANNA$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80200fff @ FLAGS
- .2byte 42 @ RANK
- .2byte MOVE_MORNING_SUN, MOVE_SILVER_WIND, MOVE_STUN_SPORE, MOVE_SECRET_POWER
- .byte 40, 70, 25, 80, 100, 250 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 119 @ SPECIES_ID
- .string "KINGOLA$", 11 @ POKE_NICKNAME
- .string "KONRAD$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80100fff @ FLAGS
- .2byte 118 @ RANK
- .2byte MOVE_FLAIL, MOVE_SUPERSONIC, MOVE_HORN_ATTACK, MOVE_FURY_ATTACK
- .byte 80, 60, 30, 70, 90, 200 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 340 @ SPECIES_ID
- .string "ERUPTAM$", 11 @ POKE_NICKNAME
- .string "LUISE$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 78 @ RANK
- .2byte MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_OVERHEAT, MOVE_HYPER_BEAM
- .byte 100, 80, 20, 50, 65, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 66 @ SPECIES_ID
- .string "OLLOMA$", 11 @ POKE_NICKNAME
- .string "MICHAEL$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80040fff @ FLAGS
- .2byte 66 @ RANK
- .2byte MOVE_SEISMIC_TOSS, MOVE_FOCUS_ENERGY, MOVE_KARATE_CHOP, MOVE_SCARY_FACE
- .byte 70, 85, 25, 60, 50, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 296 @ SPECIES_ID
- .string "OMBRE$", 11 @ POKE_NICKNAME
- .string "ANIKA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 58 @ RANK
- .2byte MOVE_ATTRACT, MOVE_FLASH, MOVE_UPROAR, MOVE_GROWL
- .byte 40, 60, 90, 45, 70, 230 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 379 @ SPECIES_ID
- .string "PITISVI$", 11 @ POKE_NICKNAME
- .string "DETLEF$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP, MOVE_SCREECH
- .byte 35, 50, 90, 40, 100, 240 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 313 @ SPECIES_ID
- .string "WAILA$", 11 @ POKE_NICKNAME
- .string "XENIA$", 8 @ TRAINER_NAME
- .byte 22 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 26 @ RANK
- .2byte MOVE_WATER_PULSE, MOVE_REST, MOVE_WATER_SPOUT, MOVE_SPLASH
- .byte 30, 100, 100, 50, 30, 250 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 129 @ SPECIES_ID
- .string "KARDORPA$", 11 @ POKE_NICKNAME
- .string "FLORIAN$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 82 @ RANK
- .2byte MOVE_TACKLE, MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE
- .byte 30, 30, 160, 50, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 348 @ SPECIES_ID
- .string "LUNA$", 11 @ POKE_NICKNAME
- .string "DIANA$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80002fff @ FLAGS
- .2byte 42 @ RANK
- .2byte MOVE_EXPLOSION, MOVE_FUTURE_SIGHT, MOVE_PSYCHIC, MOVE_CONFUSION
- .byte 50, 70, 60, 70, 50, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 310 @ SPECIES_ID
- .string "PEPE$", 11 @ POKE_NICKNAME
- .string "LUTZ$", 8 @ TRAINER_NAME
- .byte 39 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_MIST, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_WING_ATTACK
- .byte 95, 80, 85, 35, 35, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 130 @ SPECIES_ID
- .string "GARADI$", 11 @ POKE_NICKNAME
- .string "JASMIN$", 8 @ TRAINER_NAME
- .byte 32 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x84000fff @ FLAGS
- .2byte 79 @ RANK
- .2byte MOVE_HYPER_BEAM, MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE
- .byte 160, 200, 20, 40, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 371 @ SPECIES_ID
- .string "KRAKEEL$", 11 @ POKE_NICKNAME
- .string "GERT$", 8 @ TRAINER_NAME
- .byte 21 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 71 @ RANK
- .2byte MOVE_HYPER_VOICE, MOVE_STOMP, MOVE_ROAR, MOVE_HOWL
- .byte 170, 50, 55, 150, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 316 @ SPECIES_ID
- .string "ENEKOTO$", 11 @ POKE_NICKNAME
- .string "ROSA$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_ATTRACT, MOVE_ASSIST, MOVE_FAINT_ATTACK, MOVE_TAIL_WHIP
- .byte 40, 200, 150, 185, 60, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 366 @ SPECIES_ID
- .string "ASSIMAX$", 11 @ POKE_NICKNAME
- .string "KURT$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_COVET, MOVE_COUNTER, MOVE_ENCORE, MOVE_SLACK_OFF
- .byte 85, 85, 170, 110, 150, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 359 @ SPECIES_ID
- .string "RIA$", 11 @ POKE_NICKNAME
- .string "SONJA$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 15 @ RANK
- .2byte MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_PERISH_SONG, MOVE_SAFEGUARD
- .byte 170, 150, 30, 30, 90, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 393 @ SPECIES_ID
- .string "EXUVINJA$", 11 @ POKE_NICKNAME
- .string "SÖNKE$", 8 @ TRAINER_NAME
- .byte 15 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80200fff @ FLAGS
- .2byte 39 @ RANK
- .2byte MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, MOVE_RETURN
- .byte 230, 60, 60, 230, 80, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 45 @ SPECIES_ID
- .string "BLUMIEFT$", 11 @ POKE_NICKNAME
- .string "MAGDA$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80100fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_PETAL_DANCE, MOVE_SWEET_SCENT, MOVE_STUN_SPORE, MOVE_FLASH
- .byte 35, 200, 150, 130, 40, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 361 @ SPECIES_ID
- .string "WANDELBOLD$", 11 @ POKE_NICKNAME
- .string "SASCHA$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_DISABLE, MOVE_FUTURE_SIGHT, MOVE_NIGHT_SHADE, MOVE_PURSUIT
- .byte 25, 35, 230, 150, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 178 @ SPECIES_ID
- .string "TUMANI$", 11 @ POKE_NICKNAME
- .string "MILA$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80040fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC
- .byte 35, 35, 150, 130, 170, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 331 @ SPECIES_ID
- .string "HAITODO$", 11 @ POKE_NICKNAME
- .string "KNUT$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 87 @ RANK
- .2byte MOVE_AGILITY, MOVE_SWAGGER, MOVE_TAUNT, MOVE_TAKE_DOWN
- .byte 140, 70, 140, 75, 100, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 325 @ SPECIES_ID
- .string "KUSSLIEB$", 11 @ POKE_NICKNAME
- .string "INCA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 83 @ RANK
- .2byte MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_TAKE_DOWN, MOVE_CHARM
- .byte 50, 100, 220, 40, 190, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 214 @ SPECIES_ID
- .string "SKARAB$", 11 @ POKE_NICKNAME
- .string "FELIX$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 71 @ RANK
- .2byte MOVE_STRENGTH, MOVE_ENDURE, MOVE_REVERSAL, MOVE_ROCK_TOMB
- .byte 170, 70, 110, 240, 140, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 101 @ SPECIES_ID
- .string "LEKBAL$", 11 @ POKE_NICKNAME
- .string "DEBORA$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 15 @ RANK
- .2byte MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SWIFT, MOVE_FLASH
- .byte 200, 200, 30, 35, 50, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 172 @ SPECIES_ID
- .string "DEIBEL$", 11 @ POKE_NICKNAME
- .string "BORIS$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80002fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_REST, MOVE_TAIL_WHIP
- .byte 25, 150, 180, 115, 120, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 202 @ SPECIES_ID
- .string "WOHINGENAU$", 11 @ POKE_NICKNAME
- .string "DELIA$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 111 @ RANK
- .2byte MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND
- .byte 60, 230, 50, 220, 210, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
-@ credit to Valkyrie for helping me properly dump these structs
diff --git a/data-de/ingame_trades.inc b/data-de/ingame_trades.inc
deleted file mode 100644
index 76ce38c03..000000000
--- a/data-de/ingame_trades.inc
+++ /dev/null
@@ -1,108 +0,0 @@
- .align 2
-gIngameTrades:: @ 8215AC4
- .string "MAKIT$", 11 @ nickname
- .space 1
- .2byte SPECIES_MAKUHITA @ NPC mon species
- .byte 5 @ HP IV
- .byte 5 @ attack IV
- .byte 4 @ defense IV
- .byte 4 @ speed IV
- .byte 4 @ sp. attack IV
- .byte 4 @ sp. defense IV
- .byte TRUE @ second ability
- .space 3
- .4byte 49562 @ OT ID
- .byte 5 @ cool
- .byte 5 @ beauty
- .byte 5 @ cute
- .byte 5 @ smart
- .byte 30 @ tough
- .space 3
- .4byte 0x9C40 @ personality value
- .2byte ITEM_X_ATTACK @ held item
- .byte -1 @ mail num
- .string "MAIK$", 11 @ OT name
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_SLAKOTH @ player mon species
- .space 2
-
- .string "CONEC$", 11 @ nickname
- .space 1
- .2byte SPECIES_SKITTY @ NPC mon species
- .byte 5 @ HP IV
- .byte 4 @ attack IV
- .byte 4 @ defense IV
- .byte 5 @ speed IV
- .byte 4 @ sp. attack IV
- .byte 4 @ sp. defense IV
- .byte FALSE @ second ability
- .space 3
- .4byte 2259 @ OT ID
- .byte 5 @ cool
- .byte 5 @ beauty
- .byte 30 @ cute
- .byte 5 @ smart
- .byte 5 @ tough
- .space 3
- .4byte 0x498A2E17 @ personality value
- .2byte ITEM_GLITTER_MAIL @ held item
- .byte 0 @ mail num
- .string "MADINA$", 11 @ OT name
- .byte FEMALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_PIKACHU @ player mon species
- .space 2
-
- .string "CORASO$", 11 @ nickname
- .space 1
- .2byte SPECIES_CORSOLA @ NPC mon species
- .byte 4 @ HP IV
- .byte 4 @ attack IV
- .byte 5 @ defense IV
- .byte 4 @ speed IV
- .byte 4 @ sp. attack IV
- .byte 5 @ sp. defense IV
- .byte TRUE @ second ability
- .space 3
- .4byte 50183 @ OT ID
- .byte 5 @ cool
- .byte 30 @ beauty
- .byte 5 @ cute
- .byte 5 @ smart
- .byte 5 @ tough
- .space 3
- .4byte 0x4C970B7F @ personality value
- .2byte ITEM_TROPIC_MAIL @ held item
- .byte 1 @ mail num
- .string "LIANA$", 11 @ OT name
- .byte FEMALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_BELLOSSOM @ player mon species
- .space 2
-
- .align 1
-gIngameTradeMail:: @ 8215B78
-@ 0
- ec_pokemon1 PIKACHU
- ec_word THANK_YOU
- ec_word EXCL
- ec_word MY
- ec_pokemon1 SKITTY
- ec_word EATS
- .2byte 0xFFFF
- ec_word A_LOT
- ec_word EXCL
- .2byte 0
-
-@ 1
- ec_word I
- ec_word WANT
- ec_word OF
- ec_move2 PETAL_DANCE
- ec_word WORKS
- ec_word THE
- ec_word IS
- ec_word SO
- ec_word PRETTY
- .2byte 0
diff --git a/data-de/text/contest_strings.inc b/data-de/text/contest_strings.inc
deleted file mode 100644
index 0067f78e3..000000000
--- a/data-de/text/contest_strings.inc
+++ /dev/null
@@ -1,843 +0,0 @@
-ContestString_DescHighlyAppealing: @ 83CA4EC
- .string "Eine sehr ansprechende\n"
- .string "Vorführung.$"
-ContestString_DescStartled1: @ 83CA505
- .string "Einsatz der Attacke macht\n"
- .string "PKMN leichter irritierbar.$"
-ContestString_DescGreatLock: @ 83CA538
- .string "Großartiger Ausdruck, der\n"
- .string "sich nicht steigern lässt.$"
-ContestString_DescRepeatable: @ 83CA56D
- .string "Langweilt den JUROR auch\n"
- .string "bei Wiederholung nicht.$"
-ContestString_DescStartled2: @ 83CA59E
- .string "Kann Irritation durch\n"
- .string "andere einmal verhindern.$"
-ContestString_DescStartled3: @ 83CA5C7
- .string "Kann Irritation durch\n"
- .string "andere verhindern.$"
-ContestString_DescStartled4: @ 83CA5EB
- .string "Kann Irritation durch an-\n"
- .string "dere ein wenig eindämmen.$"
-ContestString_DescStartled5: @ 83CA618
- .string "Einsatz der Attacke dämmt\n"
- .string "danach Irritation ein.$"
-ContestString_DescStartled6: @ 83CA651
- .string "Irritiert das vordere\n"
- .string "POKéMON ein wenig.$"
-ContestString_DescStartled7: @ 83CA679
- .string "Irritiert die POKéMON ein\n"
- .string "wenig, die schon auftraten.$"
-ContestString_DescStartled8: @ 83CA6A9
- .string "Irritiert das POKéMON, das\n"
- .string "vorher aufgetreten ist.$"
-ContestString_DescStartled9: @ 83CA6DD
- .string "Irritiert alle POKéMON,\n"
- .string "die bisher auftraten.$"
-ContestString_DescStartled10: @ 83CA710
- .string "Irritiert das vordere\n"
- .string "POKéMON sehr stark.$"
-ContestString_DescStartled11: @ 83CA735
- .string "Irritiert die POKéMON, die\n"
- .string "schon aufgetreten sind.$"
-ContestString_DescStartled12: @ 83CA762
- .string "Irritiert das POKéMON, das\n"
- .string "vorher aufgetreten ist.$"
-ContestString_DescStartled13: @ 83CA796
- .string "Irritiert alle POKéMON, die\n"
- .string "vorher aufgetreten sind.$"
-ContestString_DescAttentionShift: @ 83CA7CA
- .string "Lenkt den JUROR von den\n"
- .string "anderen POKéMON ab.$"
-ContestString_DescStartled14: @ 83CA7F4
- .string "Irritiert PKMN, bes. die,\n"
- .string "auf die der JUROR achtet.$"
-ContestString_DescJamOthersMissTurn: @ 83CA829
- .string "Stört die anderen und An-\n"
- .string "wender setzt 1 Runde aus.$"
-ContestString_DescStartled15: @ 83CA85A
- .string "Irritiert PKMN, bes. die, die\n"
- .string "Ausdruck gl. Typs zeigten.$"
-ContestString_DescStartled16: @ 83CA889
- .string "Irritiert PKMN, die Ausdrck.\n"
- .string "des Typs COOL vorführten.$"
-ContestString_DescStartled17: @ 83CA8B8
- .string "Irritiert PKMN, die Ausdrck.\n"
- .string "des Typs SCHÖN vorführten.$"
-ContestString_DescStartled18: @ 83CA8E9
- .string "Irritiert PKMN, die Ausdrck.\n"
- .string "des Typs ANMUT vorführten.$"
-ContestString_DescStartled19: @ 83CA918
- .string "Irritiert PKMN, die Ausdrck.\n"
- .string "des Typs KLUG vorführten.$"
-ContestString_DescStartled20: @ 83CA948
- .string "Irritiert PKMN, die Ausdrck.\n"
- .string "des Typs STARK vorführten.$"
-
-ContestString_DescNervousOne: @ 83CA978
- .string "Macht nachfolgendes\n"
- .string "POKéMON nervös.$"
-
-ContestString_DescNervousAllAfter: @ 83CA9A2
- .string "Macht alle nachfolgenden\n"
- .string "POKéMON nervös.$"
-
-ContestString_DescConditionWorseBefore: @ 83CA9CC
- .string "Schwächt Kondition der\n"
- .string "PKMN, die bisher auftraten.$"
-
-ContestString_DescStartled21: @ 83CA9FE
- .string "Irritiert POKéMON, die eine\n"
- .string "gute Kondition haben.$"
-ContestString_DescGreatWhenFirst: @ 83CAA28
- .string "Ausdruck gelingt sehr gut,\n"
- .string "wenn als Erster vorgeführt.$"
-ContestString_DescGreatWhenLast: @ 83CAA53
- .string "Ausdruck gelingt sehr gut,\n"
- .string "wenn zuletzt vorgeführt.$"
-ContestString_DescAppealGoodBeforeAll: @ 83CAA7D
- .string "Ausdruck gelingt so gut\n"
- .string "wie die der Vorgänger.$"
-ContestString_DescAppealGoodBeforeOne: @ 83CAAAA
- .string "Ausdruck gelingt so gut\n"
- .string "wie der des Vorgängers.$"
-ContestString_DescBetterWhenLater: @ 83CAAD9
- .string "Je später der Auftritt,\n"
- .string "desto besser der Ausdruck.$"
-ContestString_DescAffectedByTiming: @ 83CAB0C
- .string "Die Qualität des Ausdrucks\n"
- .string "hängt vom Timing ab.$"
-ContestString_DescBetterWhenSameType: @ 83CAB41
- .string "Gelingt gut, wenn vom\n"
- .string "selben Typ wie der vorige.$"
-ContestString_DescBetterWhenDiffType: @ 83CAB75
- .string "Gelingt gut, wenn vom\n"
- .string "anderen Typ als der vorige.$"
-ContestString_DescAffectedByFront: @ 83CABAA
- .string "Hängt von Qualität des Aus-\n"
- .string "drucks des Vorgängers ab.$"
-ContestString_DescConditionUp: @ 83CABD9
- .string "Verbessert die Kondition\n"
- .string "und verhindert Nervosität.$"
-ContestString_DescAffectedByCondition: @ 83CAC0E
- .string "Ausdruck gelingt gut, wenn\n"
- .string "Kondition des PKMN gut ist.$"
-ContestString_DescAppealEarlier: @ 83CAC45
- .string "Der nächste Ausdruck kann\n"
- .string "früher vorgeführt werden.$"
-ContestString_DescAppealLater: @ 83CAC74
- .string "Der nächste Ausdruck kann\n"
- .string "später vorgeführt werden.$"
-ContestString_DescRandomOrderEasier: @ 83CACA1
- .string "Ändert die Reihenfolge der\n"
- .string "nächst. Auftritte leichter.$"
-ContestString_DescRandomOrder: @ 83CACD4
- .string "Ändert die Reihenfolge der\n"
- .string "nächsten Auftritte.$"
-ContestString_DescAnyExcitement: @ 83CAD05
- .string "Verzückt das Publikum in \n"
- .string "jedem WETTBEWERB.$"
-ContestString_DescStartled22: @ 83CAD39
- .string "Irritiert alle POKéMON,\n"
- .string "deren Ausdruck gut war.$"
-ContestString_DescScaleWithExcitement: @ 83CAD6C
- .string "Gelingt am besten, wenn\n"
- .string "das Publikum gespannt ist.$"
-ContestString_DescStopExcitement: @ 83CADA1
- .string "Bremst zeitweise Begeis-\n"
- .string "terung des Publikums.$"
-
- .align 2
-gContestEffectStrings:: @ 83CADD4
- .4byte ContestString_DescHighlyAppealing
- .4byte ContestString_DescStartled1
- .4byte ContestString_DescGreatLock
- .4byte ContestString_DescRepeatable
- .4byte ContestString_DescStartled2
- .4byte ContestString_DescStartled3
- .4byte ContestString_DescStartled4
- .4byte ContestString_DescStartled5
- .4byte ContestString_DescStartled6
- .4byte ContestString_DescStartled7
- .4byte ContestString_DescStartled8
- .4byte ContestString_DescStartled9
- .4byte ContestString_DescStartled10
- .4byte ContestString_DescStartled11
- .4byte ContestString_DescStartled12
- .4byte ContestString_DescStartled13
- .4byte ContestString_DescAttentionShift
- .4byte ContestString_DescStartled14
- .4byte ContestString_DescJamOthersMissTurn
- .4byte ContestString_DescStartled15
- .4byte ContestString_DescStartled16
- .4byte ContestString_DescStartled17
- .4byte ContestString_DescStartled18
- .4byte ContestString_DescStartled19
- .4byte ContestString_DescStartled20
- .4byte ContestString_DescNervousOne
- .4byte ContestString_DescNervousAllAfter
- .4byte ContestString_DescConditionWorseBefore
- .4byte ContestString_DescStartled21
- .4byte ContestString_DescGreatWhenFirst
- .4byte ContestString_DescGreatWhenLast
- .4byte ContestString_DescAppealGoodBeforeAll
- .4byte ContestString_DescAppealGoodBeforeOne
- .4byte ContestString_DescBetterWhenLater
- .4byte ContestString_DescAffectedByTiming
- .4byte ContestString_DescBetterWhenSameType
- .4byte ContestString_DescBetterWhenDiffType
- .4byte ContestString_DescAffectedByFront
- .4byte ContestString_DescConditionUp
- .4byte ContestString_DescAffectedByCondition
- .4byte ContestString_DescAppealEarlier
- .4byte ContestString_DescAppealLater
- .4byte ContestString_DescRandomOrderEasier
- .4byte ContestString_DescRandomOrder
- .4byte ContestString_DescAnyExcitement
- .4byte ContestString_DescStartled22
- .4byte ContestString_DescScaleWithExcitement
- .4byte ContestString_DescStopExcitement
-
-ContestString_MoveRainDance: @ 83CAE94
- .string "REGENTANZ$"
-ContestString_MoveRage: @ 83CAE9F
- .string "RASEREI$"
-ContestString_MoveFocusEnergy: @ 83CAEA4
- .string "ENERGIEFOKUS$"
-ContestString_MoveHypnosis: @ 83CAEB1
- .string "HYPNOSE$"
-ContestString_MoveSoftboiled: @ 83CAEBA
- .string "WEICHEI$"
-ContestString_MoveHornAttack: @ 83CAEC5
- .string "HORNATTACKE$"
-ContestString_MoveSwordsDance: @ 83CAED1
- .string "SCHWERTTANZ$"
-ContestString_MoveConversion: @ 83CAEDE
- .string "UMWANDLUNG$"
-ContestString_MoveSunnyDay: @ 83CAEE9
- .string "SONNENTAG$"
-ContestString_MoveRest: @ 83CAEF3
- .string "ERHOLUNG$"
-ContestString_MoveVicegrip: @ 83CAEF8
- .string "KLAMMER$"
-ContestString_MoveDefenseCurl: @ 83CAF01
- .string "EINIGLER$"
-ContestString_MoveLockOn: @ 83CAF0E
- .string "ZIELSCHUSS$"
-
- .align 2
- .4byte ContestString_MoveRainDance
- .4byte ContestString_MoveRainDance
- .4byte ContestString_MoveRage
- .4byte ContestString_MoveFocusEnergy
- .4byte ContestString_MoveHypnosis
- .4byte ContestString_MoveSoftboiled
- .4byte ContestString_MoveHornAttack
- .4byte ContestString_MoveSwordsDance
- .4byte ContestString_MoveConversion
- .4byte ContestString_MoveSunnyDay
- .4byte ContestString_MoveRest
- .4byte ContestString_MoveVicegrip
- .4byte ContestString_MoveDefenseCurl
- .4byte ContestString_MoveLockOn
-
-ContestString_Cool:
- .string "COOL.$"
-ContestString_Beauty:
- .string "SCHÖN.$"
-ContestString_Cute:
- .string "ANMUT$"
-ContestString_Smart:
- .string "KLUG.$"
-ContestString_Tough:
- .string "STÄRKE$"
-
- .align 2
-gContestCategoryNames:: @ 83CAF70
- .4byte ContestString_Cool
- .4byte ContestString_Beauty
- .4byte ContestString_Cute
- .4byte ContestString_Smart
- .4byte ContestString_Tough
-
-gText_Contest_WhichMoveWillBePlayed:: @ 83CAF84
- .string "Ausdruck {NAME_END}! Welche\n"
- .string "Attacke wird gezeigt?$"
-
-gText_Contest_ButItCantParticipate:: @ 83CAFAE
- .string "Ausdruck {NAME_END}! Aber es\n"
- .string "kann nicht teilnehmen!$"
-
-gUnknown_083CAFD7:: @ 83CAFD7
- .string "{STR_VAR_1} führt\n"
- .string "{STR_VAR_2} vor!$"
-
- .string "Die anderen POKéMON\n"
- .string "zeigten ihre Attacken!$"
-
-gUnknown_083CB00D:: @ 83CB00D
- .string "{STR_VAR_1} beobachtet\n"
- .string "die anderen.{PAUSE 60}$"
-
-gUnknown_083CB02C:: @ 83CB02C
- .string "Soweit zur\n"
- .string "Ausdruckskraft!{PAUSE 60}$"
-
- .string "{STR_VAR_3}-\n"
- .string "Att. {STR_VAR_2}\n"
- .string "von {STR_VAR_1}!$"
-
- .string "TRICK$"
-
- .string "SPEZIAL$"
-
-ContestString_AppealJammed:
- .string "Der Auftritt\n"
- .string "wurde gestört.$"
-ContestString_FollowLead:
- .string "Es folgte einem\n"
- .string "anderen POKéMON.$"
-ContestString_MessedUp:
- .string "Es scheiterte.$"
-ContestString_BetterUsual:
- .string "Das lief besser\n"
- .string "als sonst.$"
-ContestString_JudgeLookAway:
- .string "Der JUROR war\n"
- .string "irgendwie abgelenkt.$"
-ContestString_WorkHard:
- .string "Es strengte sich an,\n"
- .string "Fehler auszubügeln.$"
-ContestString_NoMoreMoves:
- .string "Es kann keine Attacken\n"
- .string "mehr ausführen.$"
-ContestString_WorkReallyWell:
- .string "Das lief unheimlich gut.$"
-ContestString_WorkHardStandout:
- .string "Es strengte sich genauso\n"
- .string "wie das beste POKéMON an.$"
-ContestString_JudgeExpectantly:
- .string "Der JUROR schaute es\n"
- .string "besonders aufmerksam an.$"
-ContestString_WorkRatherWell:
- .string "Das lief bedeutend\n"
- .string "besser.$"
-ContestString_WorkBetter:
- .string "Es lief etwas besser\n"
- .string "als sonst.$"
-
- .align 2
- .4byte ContestString_AppealJammed
- .4byte ContestString_FollowLead
- .4byte ContestString_MessedUp
- .4byte ContestString_BetterUsual
- .4byte ContestString_BetterUsual
- .4byte ContestString_JudgeLookAway
- .4byte ContestString_WorkHard
- .4byte ContestString_NoMoreMoves
- .4byte ContestString_WorkReallyWell
- .4byte ContestString_WorkHardStandout
- .4byte ContestString_JudgeExpectantly
- .4byte ContestString_WorkRatherWell
- .4byte ContestString_WorkBetter
-
-ContestString_StandOutNone:
- .string "{STR_VAR_1} stach\n"
- .string "überhaupt nicht hervor...{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutNotMuch:
- .string "{STR_VAR_1} stach nicht\n"
- .string "besonders hervor...{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutLittle:
- .string "{STR_VAR_1} erregte ein\n"
- .string "wenig Aufmerksamkeit.{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutLot:
- .string "{STR_VAR_1} erregte eine\n"
- .string "Menge Aufmerksamkeit.{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutTotal:
- .string "{STR_VAR_1} erhielt die\n"
- .string "volle Aufmerksamkeit.{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutDidnt:
- .string "{STR_VAR_1} konnte\n"
- .string "keinen Ausdruck zeigen.{PAUSE_UNTIL_PRESS}$"
-
- .align 2
-gContestStandOutStrings:: @ 83CB2F0
- .4byte ContestString_StandOutNone
- .4byte ContestString_StandOutNotMuch
- .4byte ContestString_StandOutLittle
- .4byte ContestString_StandOutLot
- .4byte ContestString_StandOutTotal
- .4byte ContestString_StandOutDidnt
-
-ContestString_AppealAnticipation3:
- .string "Heiß ersehnt: Der Aus-\n"
- .string "druck von {STR_VAR_1}.$"
-ContestString_JudgeSatisfied:
- .string "Der JUROR war sehr\n"
- .string "zufrieden.$"
-ContestString_Terminator:
- .string "$"
-ContestString_JudgeHeldFirm:
- .string "Der JUROR behält\n"
- .string "{STR_VAR_1} fest im Blick.$"
-ContestString_ChangedPerceptions:
- .string "{STR_VAR_3} von {STR_VAR_1}\n"
- .string "ändert die Wahrnehmung.$"
-ContestString_AppealWoreOff:
- .string "Wirkung von {STR_VAR_1}\n"
- .string "lässt nach.$"
-ContestString_AppealWoreOff2:
- .string "Die besondere Wirkung\n"
- .string "lässt nach.$"
-ContestString_AppealLookSame:
- .string "Jeder Ausdruck wird sich\n"
- .string "nun gleichen.$"
-ContestString_AppealCheapened:
- .string "Ausdruck von {STR_VAR_2}\n"
- .string "wurde abgewertet.$"
-ContestString_AppealCheapened2:
- .string "Es wertete die Ausdrücke\n"
- .string "der anderen PKMN ab.$"
-ContestString_AppealAttentionStolen:
- .string "Es stahl {STR_VAR_2} die\n"
- .string "Aufmerksamkeit.$"
-ContestString_AppealCheapened3:
- .string "Es wertete Ausdruck\n"
- .string "von {STR_VAR_2} ab.$"
-ContestString_AppealCheapened4:
- .string "Es wertete die Ausdrücke\n"
- .string "der anderen stark ab.$"
-ContestString_AppealAnticipation:
- .string "Alle warten sehnsüchtig\n"
- .string "auf {STR_VAR_1}.$"
-ContestString_AppealCheapened5:
- .string "Es wertete den Ausdruck\n"
- .string "der PKMN vor ihm ab.$"
-ContestString_AppealCheapened6:
- .string "Es wertete den Lieblings-\n"
- .string "ausdruck des JURORS ab.$"
-ContestString_AppealCheapened7:
- .string "Der Ausdruckswert der\n"
- .string "anderen wurde halbiert.$"
-ContestString_JammedStoodOut:
- .string "Es macht sich bereit, die\n"
- .string "anderen zu beeindrucken.$"
-ContestString_AppealNoMore:
- .string "Es kann an keiner Vor-\n"
- .string "führung mehr teilnehmen.$"
-ContestString_AppealTouched:
- .string "Der fantastische Aus-\n"
- .string "druck berührte den JUROR.$"
-ContestString_AppealAnticipation2:
- .string "Die Erwartung für die fol-\n"
- .string "genden Ausdrücke steigt.$"
-ContestString_AppealStoodOut2:
- .string "Es war so beeindruckend\n"
- .string "wie ein Spezialausdruck.$"
-ContestString_AppealStoodOut3:
- .string "Es war so beeindruckend\n"
- .string "wie {STR_VAR_1}.$"
-ContestString_JammedAppealsNotice:
- .string "Ein Ausdruck, der gestört\n"
- .string "wurde, ist unauffälliger.$"
-ContestString_AppealSame:
- .string "Jeder Teilnehmer hat nun\n"
- .string "den gleichen Ausdruck.$"
-ContestString_AppealFullWorse:
- .string "{STR_VAR_1} ist voll. Der\n"
- .string "Ausdruck wird schlechter.$"
-
- .align 2
- .4byte ContestString_JudgeHeldFirm
- .4byte ContestString_ChangedPerceptions
- .4byte ContestString_Terminator
- .4byte ContestString_AppealWoreOff
- .4byte ContestString_AppealWoreOff2
- .4byte ContestString_AppealLookSame
- .4byte ContestString_AppealCheapened
- .4byte ContestString_AppealCheapened2
- .4byte ContestString_AppealAttentionStolen
- .4byte ContestString_AppealCheapened3
- .4byte ContestString_AppealCheapened4
- .4byte ContestString_AppealAnticipation
- .4byte ContestString_AppealCheapened5
- .4byte ContestString_AppealCheapened6
- .4byte ContestString_AppealCheapened7
- .4byte ContestString_JammedStoodOut
- .4byte ContestString_AppealNoMore
- .4byte ContestString_AppealTouched
- .4byte ContestString_AppealAnticipation2
- .4byte ContestString_AppealStoodOut2
- .4byte ContestString_AppealStoodOut3
- .4byte ContestString_Terminator
- .4byte ContestString_Terminator
- .4byte ContestString_Terminator
- .4byte ContestString_JammedAppealsNotice
- .4byte ContestString_AppealSame
-ContestString_MoreConscious:
- .string "Es wird sich der anderen\n"
- .string "PKMN mehr bewusst.{PAUSE 60}$"
-ContestString_NoAppeal:
- .string "{STR_VAR_1} kann danach\n"
- .string "keinen Ausdruck zeigen.{PAUSE 60}$"
-ContestString_SettleDown:
- .string "Es kommt ein wenig\n"
- .string "zur Ruhe.{PAUSE 60}$"
-ContestString_ObliviousToOthers:
- .string "Die anderen PKMN nehmen\n"
- .string "es überhaupt nicht wahr.{PAUSE 60}$"
-ContestString_LessAware:
- .string "Es ist sich der anderen\n"
- .string "PKMN kaum bewusst.{PAUSE 60}$"
-ContestString_StoppedCaring:
- .string "Es kümmert sich nicht\n"
- .string "mehr viel um andere PKMN.{PAUSE 60}$"
-ContestString_StartleAttempt:
- .string "Es versucht, die anderen\n"
- .string "PKMN zu erschrecken.{PAUSE 60}$"
-ContestString_DazzleAttempt:
- .string "Es versucht, die anderen\n"
- .string "PKMN zu blenden.{PAUSE 60}$"
-ContestString_JudgeLookAway2:
- .string "Der JUROR schaut\n"
- .string "{STR_VAR_1} nicht mehr an.{PAUSE 60}$"
-ContestString_UnnerveAttempt:
- .string "Es versucht, die folgenden\n"
- .string "PKMN zu entnerven.{PAUSE 60}$"
-ContestString_Nervous:
- .string "{STR_VAR_1} wird\n"
- .string "nervös.{PAUSE 60}$"
-ContestString_UnnerveWaiting:
- .string "Dieser Ausdruck soll die\n"
- .string "anderen PKMN entnerven.{PAUSE 60}$"
-ContestString_TauntWell:
- .string "Es verhöhnt die\n"
- .string "besseren PKMN.{PAUSE 60}$"
-ContestString_RegainedForm:
- .string "{STR_VAR_1} findet zu\n"
- .string "seiner Form zurück.{PAUSE 60}$"
-ContestString_JamWell:
- .string "Es versucht, die besseren\n"
- .string "PKMN zu beeindrucken.{PAUSE 60}$"
-ContestString_HustleStandout:
- .string "{STR_VAR_1} an der Spitze\n"
- .string "engagiert sich noch mehr.{PAUSE 60}$"
-ContestString_WorkHardUnnoticed:
- .string "Das bisher unauffällige\n"
- .string "{STR_VAR_1} gibt alles.$"
-ContestString_WorkBefore:
- .string "Es strengt sich genauso\n"
- .string "an wie die PKMN vor ihm.{PAUSE 60}$"
-ContestString_AppealNotWell:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Kam nicht gut an.{PAUSE 60}$"
-ContestString_WorkPreceding:
- .string "Es strengt sich an wie die\n"
- .string "vorangegangenen PKMN.{PAUSE 60}$"
-ContestString_AppealNotWell2:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Verlief nicht so gut.{PAUSE 60}$"
-ContestString_AppealNotShownWell:
- .string "Ausdruck v. {STR_VAR_1}: \n"
- .string "Wurde gestört.{PAUSE 60}$"
-ContestString_AppealSlightlyWell:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Verlief ganz gut.{PAUSE 60}$"
-ContestString_AppealPrettyWell:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Kam ganz gut an.{PAUSE 60}$"
-ContestString_AppealExcellently:
- .string "{STR_VAR_1} führte seinen\n"
- .string "Ausdruck exzellent vor.{PAUSE 60}$"
-ContestString_AppealDud:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Er war absolut mies.{PAUSE 60}$"
-ContestString_AppealNotVeryWell:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Er war nicht so gut.{PAUSE 60}$"
-ContestString_AppealSlightlyWell2:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Er war nicht schlecht.{PAUSE 60}$"
-ContestString_AppealPrettyWell2:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Er war recht gut.{PAUSE 60}$"
-ContestString_AppealVeryWell:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Er war sehr gut.{PAUSE 60}$"
-ContestString_AppealExcellently2:
- .string "Ausdruck von {STR_VAR_1}:\n"
- .string "Er war exzellent.{PAUSE 60}$"
-ContestString_SameTypeGood:
- .string "Der gleiche Typ wie das\n"
- .string "vorhergehende PKMN - gut!{PAUSE 60}$"
-ContestString_DiffTypeGood:
- .string "Nicht der gleiche Typ wie\n"
- .string "das vorherige PKMN - gut!{PAUSE 60}$"
-ContestString_StoodOutAsMuch:
- .string "Es ist viel besser als die\n"
- .string "vorhergehenden PKMN.{PAUSE 60}$"
-ContestString_NotAsWell:
- .string "Es war nicht so gut wie\n"
- .string "das PKMN vor ihm.{PAUSE 60}$"
-ContestString_ConditionRose:
- .string "Die Kondition von\n"
- .string "{STR_VAR_1} stieg.{PAUSE 60}$"
-ContestString_HotStatus:
- .string "Status von {STR_VAR_1}:\n"
- .string "Bewirkt guten Ausdruck!{PAUSE 60}$"
-ContestString_MoveUpLine:
- .string "Es steigt in der Reihen-\n"
- .string "folge auf.{PAUSE 60}$"
-ContestString_MoveBackLine:
- .string "Es fällt in der Reihen-\n"
- .string "folge zurück.{PAUSE 60}$"
-ContestString_ScrambleOrder:
- .string "Es bringt die Reihenfolge\n"
- .string "durcheinander.{PAUSE 60}$"
-
-gUnknown_083CBD52:: @ 83CBD52
-ContestString_JudgeExpectantly2::
- .string "Der JUROR betrachtet\n"
- .string "{STR_VAR_1} interessiert.{PAUSE 60}$"
-
-gUnknown_083CBD79:: @ 83CBD79
-ContestString_WentOverWell::
- .string "Die Combo der Ausdrücke\n"
- .string "kam gut an.{PAUSE 60}$"
-
-gUnknown_083CBD9D:: @ 83CBD9D
-ContestString_WentOverVeryWell::
- .string "Die Combo der Ausdrücke\n"
- .string "kam sehr gut an.{PAUSE 60}$"
-
-gUnknown_083CBDC6:: @ 83CBDC6
-ContestString_AppealComboExcellently::
- .string "Die Combo der Ausdrücke\n"
- .string "kam exzellent an.{PAUSE 60}$"
-ContestString_AvertGaze:
- .string "{STR_VAR_1} gelingt es,\n"
- .string "den Blick abzuwenden.{PAUSE 60}$"
-ContestString_AvoidSeeing:
- .string "{STR_VAR_1} wandte den\n"
- .string "Blick erfolgreich ab.{PAUSE 60}$"
-ContestString_NotFazed:
- .string "{STR_VAR_1} lässt sich\n"
- .string "davon nicht ablenken.{PAUSE 60}$"
-ContestString_LittleDistracted:
- .string "{STR_VAR_1} wurde etwas\n"
- .string "unruhig.{PAUSE 60}$"
-ContestString_AttemptStartle:
- .string "Es versucht, die anderen\n"
- .string "PKMN zu verschrecken.{PAUSE 60}$"
-ContestString_LookedDown:
- .string "{STR_VAR_1} blickt\n"
- .string "irritiert zu Boden.{PAUSE 60}$"
-ContestString_TurnedBack:
- .string "{STR_VAR_1} dreht sich\n"
- .string "irritiert um.{PAUSE 60}$"
-ContestString_UtterCry:
- .string "{STR_VAR_1} kann einen \n"
- .string "Laut nicht unterdrücken.{PAUSE 60}$"
-ContestString_LeaptUp:
- .string "{STR_VAR_1} kann nicht\n"
- .string "anders und springt auf.{PAUSE 60}$"
-ContestString_TrippedOver:
- .string "{STR_VAR_1} ist so irri-\n"
- .string "tiert, dass es stolpert.{PAUSE 60}$"
-
-gUnknown_083CBF60:: @ 83CBF60
-ContestString_TooNervous:
- .string "{STR_VAR_1} ist zu nervös,\n"
- .string "um etwas vorzuführen.{PAUSE 60}$"
-ContestString_MessedUp2:
- .string "Es hatte keinen Erfolg.{PAUSE 60}$"
-ContestString_FailedTargetNervous:
- .string "Es konnte keine\n"
- .string "Nervosität erzeugen.{PAUSE 60}$"
-ContestString_FailedAnyoneNervous:
- .string "Aber es konnte niemanden\n"
- .string "nervös machen.{PAUSE 60}$"
-ContestString_Ignored:
- .string "Es wurde ignoriert...{PAUSE 60}$"
-ContestString_NoConditionImprove:
- .string "Es konnte seinen Aus-\n"
- .string "druck nicht verstärken...{PAUSE 60}$"
-ContestString_BadConditionWeakAppeal:
- .string "Schwacher Ausdruck we-\n"
- .string "gen schlechter Konditon.{PAUSE 60}$"
-ContestString_Unaffected:
- .string "{STR_VAR_1} blieb\n"
- .string "unbeeindruckt.{PAUSE 60}$"
-
-gUnknown_083CC075:: @ 83CC075
-ContestString_DissapointedRepeat::
- .string "{STR_VAR_1} enttäuscht\n"
- .string "durch Wiederholung.{PAUSE 60}$"
-
-gUnknown_083CC0A0:: @ 83CC0A0
-ContestString_WentOverGreat::
- .string "Die {STR_VAR_3} von\n"
- .string "{STR_VAR_1} war sehr gut.{PAUSE 60}$"
-
-gUnknown_083CC0BC:: @ 83CC0BC
-ContestString_DidntGoWell::
- .string "Die {STR_VAR_3} von\n"
- .string "{STR_VAR_1} war nicht gut.{PAUSE 60}$"
-
-gUnknown_083CC0E3:: @ 83CC0E3
-ContestString_GotCrowdGoing::
- .string "{STR_VAR_1} begeistert\n"
- .string "Publikum mit {STR_VAR_3}.{PAUSE 60}$"
-
-gUnknown_083CC103:: @ 83CC103
-ContestString_CantAppealNextTurn::
- .string "{STR_VAR_1} setzt in der \n"
- .string "folgenden Runde aus.{PAUSE 60}$"
-ContestString_AttractedAttention::
- .string "Die Aufmerksamkeit des\n"
- .string "Publikums liegt auf ihm.{PAUSE 60}$"
-
-gUnknown_083CC14A:: @ 83CC14A
-ContestString_CrowdWatches::
- .string "Das Publikum beobachtet\n"
- .string "weiterhin {STR_VAR_3}.{PAUSE 60}$"
-
-gUnknown_083CC16E:: @ 83CC16E
-ContestString_Ignored2::
- .string "{STR_VAR_2} von\n"
- .string "{STR_VAR_1} ist ignoriert.{PAUSE 60}$"
-
- .align 2
-gUnknown_083CC188:: @ 83CC188
- .4byte ContestString_MoreConscious
- .4byte ContestString_NoAppeal
- .4byte ContestString_SettleDown
- .4byte ContestString_ObliviousToOthers
- .4byte ContestString_LessAware
- .4byte ContestString_StoppedCaring
- .4byte ContestString_StartleAttempt
- .4byte ContestString_DazzleAttempt
- .4byte ContestString_JudgeLookAway2
- .4byte ContestString_UnnerveAttempt
- .4byte ContestString_Nervous
- .4byte ContestString_UnnerveWaiting
- .4byte ContestString_TauntWell
- .4byte ContestString_RegainedForm
- .4byte ContestString_JamWell
- .4byte ContestString_HustleStandout
- .4byte ContestString_WorkHardUnnoticed
- .4byte ContestString_WorkBefore
- .4byte ContestString_AppealNotWell
- .4byte ContestString_WorkPreceding
- .4byte ContestString_AppealNotWell2
- .4byte ContestString_AppealNotShownWell
- .4byte ContestString_AppealSlightlyWell
- .4byte ContestString_AppealPrettyWell
- .4byte ContestString_AppealExcellently
- .4byte ContestString_AppealDud
- .4byte ContestString_AppealNotVeryWell
- .4byte ContestString_AppealSlightlyWell2
- .4byte ContestString_AppealPrettyWell2
- .4byte ContestString_AppealVeryWell
- .4byte ContestString_AppealExcellently2
- .4byte ContestString_SameTypeGood
- .4byte ContestString_DiffTypeGood
- .4byte ContestString_StoodOutAsMuch
- .4byte ContestString_NotAsWell
- .4byte ContestString_ConditionRose
- .4byte ContestString_HotStatus
- .4byte ContestString_MoveUpLine
- .4byte ContestString_MoveBackLine
- .4byte ContestString_ScrambleOrder
- .4byte ContestString_JudgeExpectantly2 @ expectantly
- .4byte ContestString_WentOverWell
- .4byte ContestString_WentOverVeryWell
- .4byte ContestString_AppealComboExcellently
- .4byte ContestString_AvertGaze
- .4byte ContestString_AvoidSeeing
- .4byte ContestString_NotFazed
- .4byte ContestString_LittleDistracted
- .4byte ContestString_AttemptStartle
- .4byte ContestString_LookedDown
- .4byte ContestString_TurnedBack
- .4byte ContestString_UtterCry
- .4byte ContestString_LeaptUp
- .4byte ContestString_TrippedOver
- .4byte ContestString_MessedUp2
- .4byte ContestString_FailedTargetNervous
- .4byte ContestString_FailedAnyoneNervous
- .4byte ContestString_Ignored
- .4byte ContestString_NoConditionImprove
- .4byte ContestString_BadConditionWeakAppeal
- .4byte ContestString_Unaffected
- .4byte ContestString_AttractedAttention
-
-gText_Contest_Shyness:: @ 83CC280
- .string "Scheu$"
-
-gText_Contest_Anxiety:: @ 83CC288
- .string "Besorgnis$"
-
-gText_Contest_Laziness:: @ 83CC290
- .string "Faulheit$"
-
-gText_Contest_Hesitancy:: @ 83CC299
- .string "Zögern$"
-
-gText_Contest_Fear:: @ 83CC2A3
- .string "Furcht$"
-
-ContestString_Coolness:
- .string "Coolness$"
-ContestString_Beauty2:
- .string "Schönheit$"
-ContestString_Cuteness:
- .string "Anmut$"
-ContestString_Smartness:
- .string "Klugheit$"
-ContestString_Toughness:
- .string "Stärke$"
-
- .align 2
-gContestCategoryStrings:: @ 83CC2D8
- .4byte ContestString_Coolness
- .4byte ContestString_Beauty2
- .4byte ContestString_Cuteness
- .4byte ContestString_Smartness
- .4byte ContestString_Toughness
-
-gUnknown_083CC2EC:: @ 83CC2EC
- .string "SPANNUNG:$"
-
-ContestString_CoolMove:
- .string "COOLE Att.$"
-
-ContestString_BeautyMove:
- .string "SCHÖNE Att.$"
-
-ContestString_CuteMove:
- .string "ANMUT-Att.$"
-
-ContestString_SmartMove:
- .string "KLUGE Att.$"
-
-ContestString_ToughMove:
- .string "STARKE Att.$"
-
-ContestString_UnknownMoveType:
- .string "???$"
-
- .align 2
-gUnknown_083CC330:: @ 83CC330
- .4byte ContestString_CoolMove
- .4byte ContestString_BeautyMove
- .4byte ContestString_CuteMove
- .4byte ContestString_SmartMove
- .4byte ContestString_ToughMove
- .4byte ContestString_UnknownMoveType
-
-@ unused?
-ContestString_Rank:
- .string "KLASSE$"
-
- .string "{HIGHLIGHT TRANSPARENT}{COLOR MAGENTA} $"
diff --git a/data-de/text/trainer_class_names.inc b/data-de/text/trainer_class_names.inc
deleted file mode 100644
index 94ab2078b..000000000
--- a/data-de/text/trainer_class_names.inc
+++ /dev/null
@@ -1,59 +0,0 @@
-gTrainerClassNames:: @ 81F0208
- .string "{PKMN}-TRAINER$", 13
- .string "{PKMN}-TRAINER$", 13
- .string "AQUA BOSS$", 13
- .string "TEAM AQUA$", 13
- .string "AQUA VORS.$", 13
- .string "AROMALADY$", 13
- .string "RUINENMANIAC$", 13
- .string "INTERVIEWER$", 13
- .string "PLANSCHER$", 13 @ うきわガール (Inner Tube Girl) in Japanese
- .string "PLANSCHER$", 13 @ うきわボーイ (Inner Tube Boy) in Japanese
- .string "ASS-TRAINER$", 13
- .string "HEXE$", 13
- .string "LADY$", 13
- .string "SCHÖNHEIT$", 13
- .string "SCHNÖSEL$", 13
- .string "POKéMANIAC$", 13
- .string "SCHWIMMER$", 13
- .string "SCHWARZGURT$", 13
- .string "GITARRIST$", 13
- .string "HITZKOPF$", 13
- .string "CAMPER$", 13
- .string "KÄFERMANIAC$", 13
- .string "PSYCHO$", 13
- .string "GENTLEMAN$", 13
- .string "TOP VIER$", 13
- .string "LEITER$", 13
- .string "SCHULKIND$", 13
- .string "SEN. & JUN.$", 13
- .string "SIHGERS,$", 13
- .string "POKéFAN$", 13
- .string "EXPERTE$", 13
- .string "TEENAGER$", 13
- .string "CHAMP$", 13
- .string "ANGLER$", 13
- .string "TRIATHLET$", 13
- .string "DRACHENPROFI$", 13
- .string "VOGELFÄNGER$", 13
- .string "NINJAJUNGE$", 13
- .string "KÄMPFERIN$", 13
- .string "SCHIRMDAME$", 13
- .string "SCHWIMMERIN$", 13
- .string "PICKNICKER$", 13
- .string "ZWIL.$", 13
- .string "MATROSE$", 13
- .string "SNOWBOARDER$", 13
- .string "{PKMN}-SAMMLER$", 13
- .string "{PKMN}-TRAINER$", 13
- .string "{PKMN}-ZÜCHTER$", 13
- .string "{PKMN}-RANGER$", 13
- .string "MAGMA BOSS$", 13
- .string "TEAM MAGMA$", 13
- .string "MAGMA VORS.$", 13
- .string "GÖRE$", 13
- .string "KÄFERSAMMLER$", 13
- .string "WANDERER$", 13
- .string "JUNGES GLÜCK$", 13
- .string "ALTES PAAR$", 13
- .string "GESCHWISTER$", 13
diff --git a/data/battle_7.s b/data/battle_7.s
index 50fad468a..b6a708e3c 100644
--- a/data/battle_7.s
+++ b/data/battle_7.s
@@ -18,7 +18,7 @@ gSpriteTemplate_81FAF34:: @ 81FAF34
spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978
.align 2
-gUnknown_081FAF4C:: @ 81FAF4C
+gMonSpriteGfx_Sprite_ptr:: @ 81FAF4C
.4byte gSharedMem + 0x8000
.4byte gSharedMem + 0xA000
.4byte gSharedMem + 0xC000
diff --git a/data/btl_attrs.s b/data/btl_attrs.s
index 54328e7c7..e7868555b 100644
--- a/data/btl_attrs.s
+++ b/data/btl_attrs.s
@@ -98,11 +98,40 @@ gUnknown_Debug_821F58C::
gUnknown_Debug_821F598::
.byte 0x00, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x4b, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00
+ .align 2, 0
+ @ struct Pokeblock
gUnknown_Debug_821F5AC::
- .byte 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00
- .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x06, 0x14, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x07, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x14, 0x14, 0x00
- .byte 0x09, 0x14, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x00, 0x14, 0x14, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00
- .byte 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x0e, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ @ color, spicy, dry, sweet, bitter, sour, feel
+ .byte 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14
+ .align 2, 0
+ .byte 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14
+ .align 2, 0
+ .byte 0x03, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14
+ .align 2, 0
+ .byte 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14
+ .align 2, 0
+ .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14
+ .align 2, 0
+ .byte 0x06, 0x14, 0x00, 0x14, 0x00, 0x00, 0x14
+ .align 2, 0
+ .byte 0x07, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14
+ .align 2, 0
+ .byte 0x08, 0x00, 0x00, 0x14, 0x00, 0x14, 0x14
+ .align 2, 0
+ .byte 0x09, 0x14, 0x00, 0x00, 0x14, 0x00, 0x14
+ .align 2, 0
+ .byte 0x0a, 0x00, 0x14, 0x00, 0x00, 0x14, 0x14
+ .align 2, 0
+ .byte 0x0b, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00
+ .align 2, 0
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00
+ .align 2, 0
+ .byte 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+ .align 2, 0
+ .byte 0x0e, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14
+ .align 2, 0
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .align 2, 0
.ifdef ENGLISH
Str_821F624:: @ 0x821F624
diff --git a/data/contest.s b/data/contest.s
deleted file mode 100644
index 7ed6e24bc..000000000
--- a/data/contest.s
+++ /dev/null
@@ -1,456 +0,0 @@
-#include "constants/moves.h"
-#include "constants/species.h"
- .include "include/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 83C9408
- .include "data/contest_opponents.inc"
-
-gUnknown_083CA308:: @ 83CA308
- .byte 19, 0
- .byte 19, 5
- .byte 19, 10
- .byte 19, 15
-
-gUnknown_083CA310:: @ 83CA310
- .byte 25, 0
- .byte 25, 5
- .byte 25, 10
- .byte 25, 15
-
-gUnknown_083CA318:: @ 83CA318
- .byte 20, 2
- .byte 20, 7
- .byte 20, 12
- .byte 20, 17
- .byte 24, 2
- .byte 24, 7
- .byte 24, 12
- .byte 24, 17
- .byte 220, 24
- .byte 220, 64
- .byte 220, 104
- .byte 220, 144
-
-gUnknown_083CA330:: @ 83CA330
- .byte 224, 24
- .byte 224, 64
- .byte 224, 104
- .byte 224, 144
-
-gUnknown_083CA338:: @ 83CA338
- .byte 36, 76, 116, 156
-
-gUnknown_083CA33C:: @ 83CA33C
- .byte 36, 76, 116, 156
-
-gUnknown_083CA340:: @ 83CA340
- .byte 0, 31, 9, 39
- .byte 0, 33, 9, 39
- .byte 0, 35, 9, 39
- .byte 0, 37, 9, 39
-
- .align 2
-gUnknown_083CA350:: @ 83CA350
- obj_tiles gTiles_8D1975C, 0x20, 20004
-
- .align 2
-gOamData_83CA358:: @ 83CA358
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gSpriteAffineAnim_83CA360:: @ 83CA360
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83CA370:: @ 83CA370
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_frame 0xFFF6, 0xFFF6, -20, 20
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83CA388:: @ 83CA388
- obj_rot_scal_anim_frame 0x38, 0x38, 0, 0
- obj_rot_scal_anim_frame 0xA, 0xA, 20, 20
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83CA3A0:: @ 83CA3A0
- .4byte gSpriteAffineAnim_83CA360
- .4byte gSpriteAffineAnim_83CA370
- .4byte gSpriteAffineAnim_83CA388
-
- .align 2
-gSpriteTemplate_83CA3AC:: @ 83CA3AC
- spr_template 20004, 44000, gOamData_83CA358, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83CA3A0, SpriteCallbackDummy
-
- .align 2
-gUnknown_083CA3C4:: @ 83CA3C4
- obj_tiles gContestNextTurnGfx, 256, 0x4e26
- obj_tiles gContestNextTurnGfx, 256, 0x4e27
- obj_tiles gContestNextTurnGfx, 256, 0x4e28
- obj_tiles gContestNextTurnGfx, 256, 0x4e29
-
- .align 2
-gUnknown_083CA3E4:: @ 83CA3E4
- obj_pal gContestPal, 0x4E26
-
- .align 2
-gOamData_83CA3EC:: @ 83CA3EC
- .2byte 0x4000
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gSpriteTemplate_83CA3F4:: @ 83CA3F4
- spr_template 20006, 20006, gOamData_83CA3EC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CA40C:: @ 83CA40C
- spr_template 20007, 20006, gOamData_83CA3EC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CA424:: @ 83CA424
- spr_template 20008, 20006, gOamData_83CA3EC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CA43C:: @ 83CA43C
- spr_template 20009, 20006, gOamData_83CA3EC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSubspriteTable_83CA454:: @ 83CA454
- subsprite -26, -4, 0, 0, 32x8
- subsprite 6, -4, 0, 4, 32x8
-
- .align 2
-gSubspriteTables_83CA464:: @ 83CA464
- .4byte 2, gSubspriteTable_83CA454
-
- .align 2
-gUnknown_083CA46C:: @ 83CA46C
- obj_tiles gContestApplauseGfx, 1024, 44002
-
- .align 2
-gUnknown_083CA474:: @ 83CA474
- obj_pal gContestPal, 44002
-
- .align 2
-gOamData_83CA47C:: @ 83CA47C
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteTemplate_83CA484:: @ 83CA484
- spr_template 44002, 44002, gOamData_83CA47C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_83CA49C:: @ 83CA49C
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x2C00
-
- .align 2
-gSpriteTemplate_83CA4A4:: @ 83CA4A4
- spr_template 20005, 20005, gOamData_83CA49C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_083CA4BC:: @ 83CA4BC
- obj_tiles gContestJudgeGfx, 2048, 0x4e25
-
- .align 2
-gUnknown_083CA4C4:: @ 83CA4C4
- obj_tiles gContestJudgeSymbolsGfx, 896, 0xabe0
-
- .align 2
-gUnknown_083CA4CC:: @ 83CA4CC
- obj_pal gContest3Pal, 0xabe0
-
- .align 2
-gUnknown_083CA4D4:: @ 83CA4D4
- spr_template 0xABE0, 0xABE0, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .include "data/text/contest_strings.inc"
-
-gUnknownText_MissedTurn:: @ 83CC355
-.ifdef ENGLISH
- .string "Missed turn$"
-.else
- .string "Verpasste Chance$"
-.endif
-
-gUnknownText_LinkStandbyAndWinner:: @ 83CC361
-.ifdef ENGLISH
- .string "Link standby...$"
- .string "{COLOR WHITE2}$"
- .string "The winner is {STR_VAR_1}'s {STR_VAR_2}!\nCongratulations!$"
-.else
- .string "Verbindung...$"
- .string "{COLOR WHITE2}$"
- .string "Der Sieger ist {STR_VAR_2} von\n"
- .string "{STR_VAR_1}! Herzlichen Glückwunsch!$"
-.endif
-
- .align 1
-@ unknown, unreferenced data
- .byte 0x9C
- .byte 0x77
-
-gUnknownText_UnknownFormatting2:: @ 83CC3A0
- .string "{COLOR GREEN}{SHADOW RED}$"
-
-gUnknownText_UnknownFormatting3:: @ 83CC3A7
- .string "{COLOR LIGHT_GREY}$"
-
- .align 2
-gUnknown_083CC3AC:: @ 83CC3AC
- obj_tiles gContestNumbers_UnusedGfx, 512, 0x4e20
-
- .align 2
-gUnknown_083CC3B4:: @ 83CC3B4
- obj_pal gContestNumbers_UnusedPal, 0x4E20
- obj_pal gContestNumbers_UnusedPal, 0x4E21
- obj_pal gContestNumbers_UnusedPal, 0x4E22
- obj_pal gContestNumbers_UnusedPal, 0x4E23
-
- .align 2
-gSpriteAnim_83CC3D4:: @ 83CC3D4
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83CC3DC:: @ 83CC3DC
- obj_image_anim_frame 4, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83CC3E4:: @ 83CC3E4
- obj_image_anim_frame 8, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83CC3EC:: @ 83CC3EC
- obj_image_anim_frame 12, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83CC3F4:: @ 83CC3F4
- .4byte gSpriteAnim_83CC3D4
- .4byte gSpriteAnim_83CC3DC
- .4byte gSpriteAnim_83CC3E4
- .4byte gSpriteAnim_83CC3EC
-
- .align 2
-gSpriteAffineAnim_83CC404:: @ 83CC404
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 1
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83CC414:: @ 83CC414
- obj_rot_scal_anim_frame 0xFFF1, 0xFFF1, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83CC424:: @ 83CC424
- obj_rot_scal_anim_frame 0x1F, 0x1F, 0, 0
- obj_rot_scal_anim_frame 0xF, 0xF, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83CC43C:: @ 83CC43C
- .4byte gSpriteAffineAnim_83CC404
- .4byte gSpriteAffineAnim_83CC414
- .4byte gSpriteAffineAnim_83CC424
- .4byte NULL
-
- .align 2
-gOamData_83CC44C:: @ 83CC44C
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gSpriteTemplate_83CC454:: @ 83CC454
- spr_template 20000, 20000, gOamData_83CC44C, gSpriteAnimTable_83CC3F4, NULL, gSpriteAffineAnimTable_83CC43C, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CC46C:: @ 83CC46C
- spr_template 20000, 20001, gOamData_83CC44C, gSpriteAnimTable_83CC3F4, NULL, gSpriteAffineAnimTable_83CC43C, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CC484:: @ 83CC484
- spr_template 20000, 20002, gOamData_83CC44C, gSpriteAnimTable_83CC3F4, NULL, gSpriteAffineAnimTable_83CC43C, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CC49C:: @ 83CC49C
- spr_template 20000, 20003, gOamData_83CC44C, gSpriteAnimTable_83CC3F4, NULL, gSpriteAffineAnimTable_83CC43C, SpriteCallbackDummy
-
- .align 2
-gUnknown_083CC4B4:: @ 83CC4B4
- obj_tiles gBlankGfxCompressed, 4096, 33000
- obj_tiles gBlankGfxCompressed, 4096, 33001
- obj_tiles gBlankGfxCompressed, 4096, 33002
- obj_tiles gBlankGfxCompressed, 4096, 33003
-
- .align 2
-gUnknown_083CC4D4:: @ 83CC4D4
- obj_pal gSharedMem + 0x180A4, 33000
- obj_pal gSharedMem + 0x180C4, 33001
- obj_pal gSharedMem + 0x180E4, 33002
- obj_pal gSharedMem + 0x18104, 33003
-
- .align 2
-gOamData_83CC4F4:: @ 83CC4F4
- .2byte 0x0700
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteAffineAnim_83CC4FC:: @ 83CC4FC
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83CC50C:: @ 83CC50C
- obj_rot_scal_anim_frame 0x3, 0x3, 0, 15
- obj_rot_scal_anim_frame 0xFFFD, 0xFFFD, 0, 15
- obj_rot_scal_anim_frame 0x3, 0x3, 0, 15
- obj_rot_scal_anim_frame 0xFFFD, 0xFFFD, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83CC534:: @ 83CC534
- .4byte gSpriteAffineAnim_83CC4FC
- .4byte gSpriteAffineAnim_83CC50C
-
- .align 2
-gSpriteTemplate_83CC53C:: @ 83CC53C
- spr_template 33000, 33000, gOamData_83CC4F4, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83CC534, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CC554:: @ 83CC554
- spr_template 33001, 33001, gOamData_83CC4F4, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83CC534, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CC56C:: @ 83CC56C
- spr_template 33002, 33002, gOamData_83CC4F4, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83CC534, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83CC584:: @ 83CC584
- spr_template 33003, 33003, gOamData_83CC4F4, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83CC534, SpriteCallbackDummy
-
-gUnknown_083CC59C:: @ 83CC59C
- .string "{HIGHLIGHT TRANSPARENT}{COLOR}$"
-
-gUnknown_083CC5A2:: @ 83CC5A2
- .string "/$"
-
- .align 1
-gUnknown_083CC5A4:: @ 83CC5A4
- .2byte 0x73, 0x19E6, 0x253, 0x4CC4, 0x1F, 0x3E0, 0x3FF, 0x7C00
-
-@ 83CC5B4
- .include "data/contest_excitement_table.inc"
-
- .align 2
-gUnknown_083CC5D0:: @ 83CC5D0
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_TAILLOW
- .byte CONTEST_SMART
-.ifdef ENGLISH
- .string "TAILTA$", 11
- .string "WYATT$", 10
-.else
- .string "SCHWALBI$", 11
- .string "ROSEL$", 10
-.endif
-
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_BRELOOM
- .byte CONTEST_BEAUTY
-.ifdef ENGLISH
- .string "BRELO$", 11
- .string "LIANA$", 10
-.else
- .string "TUFUNG$", 11
- .string "WITOLD$", 10
-.endif
-
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_PELIPPER
- .byte CONTEST_COOL
-.ifdef ENGLISH
- .string "PELEP$", 11
- .string "TIERA$", 10
-.else
- .string "LIPPER$", 11
- .string "RUFUS$", 10
-.endif
-
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_PELIPPER
- .byte CONTEST_COOL
-.ifdef ENGLISH
- .string "PELEP$", 11
- .string "TIERA$", 10
-.else
- .string "LIPPER$", 11
- .string "ELLEN$", 10
-.endif
-
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_PELIPPER
- .byte CONTEST_COOL
-.ifdef ENGLISH
- .string "PELEP$", 11
- .string "TIERA$", 10
-.else
- .string "LIPPER$", 11
- .string "AVIA$", 10
-.endif
-
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_DELCATTY
- .byte CONTEST_SMART
-.ifdef ENGLISH
- .string "KITSY$", 11
- .string "OMAR$", 10
-.else
- .string "CONEC$", 11
- .string "HAUBERT$", 10
-.endif
-
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_GULPIN
- .byte CONTEST_CUTE
-.ifdef ENGLISH
- .string "GULPS$", 11
- .string "MACIE$", 10
-.else
- .string "SCHLUCKI$", 11
- .string "HEILWIG$", 10
-.endif
-
- .4byte 0
- .4byte 0xFFFF
- .2byte SPECIES_LOUDRED
- .byte CONTEST_TOUGH
-.ifdef ENGLISH
- .string "LOUDED$", 11
- .string "BRYANT$", 10
-.else
- .string "KEELO$", 11
- .string "ISEGRIM$", 10
-.endif
diff --git a/data/contest_excitement_table.inc b/data/contest_excitement_table.inc
deleted file mode 100644
index 359e46c54..000000000
--- a/data/contest_excitement_table.inc
+++ /dev/null
@@ -1,7 +0,0 @@
-gContestExcitementTable:: @ 83CC5B4
- @ Cool Beauty Cute Smart Tough
- .byte 1, 0, -1, -1, 0 @ Cool Contest
- .byte 0, 1, 0, -1, -1 @ Beauty Contest
- .byte -1, 0, 1, 0, -1 @ Cute Contest
- .byte -1, -1, 0, 1, 0 @ Smart Contest
- .byte 0, -1, -1, 0, 1 @ Tough Contest
diff --git a/data/contest_opponents.inc b/data/contest_opponents.inc
deleted file mode 100644
index 8c9c76f1b..000000000
--- a/data/contest_opponents.inc
+++ /dev/null
@@ -1,663 +0,0 @@
- .align 2
-gContestOpponents:: @ 83C9408
- .2byte 286 @ SPECIES_ID
- .string "POOCHY$", 11 @ POKE_NICKNAME
- .string "JIMMY$", 8 @ TRAINER_NAME
- .byte 7 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x0c000fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_ROAR, MOVE_BITE, MOVE_TAKE_DOWN, MOVE_HOWL
- .byte 10, 4, 10, 3, 4, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 288 @ SPECIES_ID
- .string "ZIGOON$", 11 @ POKE_NICKNAME
- .string "EDITH$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 16 @ RANK
- .2byte MOVE_REST, MOVE_TAIL_WHIP, MOVE_TACKLE, MOVE_COVET
- .byte 10, 10, 6, 1, 2, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 294 @ SPECIES_ID
- .string "DUSTER$", 11 @ POKE_NICKNAME
- .string "EVAN$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x21000fff @ FLAGS
- .2byte 8 @ RANK
- .2byte MOVE_SILVER_WIND, MOVE_MOONLIGHT, MOVE_LIGHT_SCREEN, MOVE_GUST
- .byte 2, 10, 10, 12, 4, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 298 @ SPECIES_ID
- .string "DOTS$", 11 @ POKE_NICKNAME
- .string "KELSEY$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x20800fff @ FLAGS
- .2byte 96 @ RANK
- .2byte MOVE_BIDE, MOVE_SYNTHESIS, MOVE_BULLET_SEED, MOVE_GROWTH
- .byte 3, 3, 5, 2, 7, 80 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 304 @ SPECIES_ID
- .string "TATAY$", 11 @ POKE_NICKNAME
- .string "MADISON$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 4 @ RANK
- .2byte MOVE_WING_ATTACK, MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_GROWL
- .byte 1, 3, 3, 5, 4, 90 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 301 @ SPECIES_ID
- .string "NINDA$", 11 @ POKE_NICKNAME
- .string "RAYMOND$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10200fff @ FLAGS
- .2byte 32 @ RANK
- .2byte MOVE_LEECH_LIFE, MOVE_FALSE_SWIPE, MOVE_FURY_SWIPES, MOVE_MIND_READER
- .byte 5, 2, 10, 7, 8, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 306 @ SPECIES_ID
- .string "SMISH$", 11 @ POKE_NICKNAME
- .string "GRANT$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x20100fff @ FLAGS
- .2byte 32 @ RANK
- .2byte MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_ATTRACT
- .byte 3, 3, 10, 2, 2, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 309 @ SPECIES_ID
- .string "GULWEE$", 11 @ POKE_NICKNAME
- .string "PAIGE$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08080fff @ FLAGS
- .2byte 24 @ RANK
- .2byte MOVE_MIST, MOVE_WATER_GUN, MOVE_GROWL, MOVE_PURSUIT
- .byte 3, 5, 1, 10, 10, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 364 @ SPECIES_ID
- .string "SLOKTH$", 11 @ POKE_NICKNAME
- .string "ALEC$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x40040fff @ FLAGS
- .2byte 88 @ RANK
- .2byte MOVE_STRENGTH, MOVE_COUNTER, MOVE_YAWN, MOVE_ENCORE
- .byte 10, 4, 4, 5, 18, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 370 @ SPECIES_ID
- .string "WHIRIS$", 11 @ POKE_NICKNAME
- .string "SYDNEY$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 36 @ RANK
- .2byte MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_HYPER_VOICE
- .byte 2, 2, 7, 2, 7, 80 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 335 @ SPECIES_ID
- .string "MAHITA$", 11 @ POKE_NICKNAME
- .string "MORRIS$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08010fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_SEISMIC_TOSS, MOVE_VITAL_THROW, MOVE_TACKLE, MOVE_REVERSAL
- .byte 9, 1, 1, 8, 1, 90 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 382 @ SPECIES_ID
- .string "RONAR$", 11 @ POKE_NICKNAME
- .string "MARIAH$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08008fff @ FLAGS
- .2byte 68 @ RANK
- .2byte MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_HEADBUTT, MOVE_TAKE_DOWN
- .byte 5, 10, 2, 10, 2, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 41 @ SPECIES_ID
- .string "ZUTZU$", 11 @ POKE_NICKNAME
- .string "RUSSELL$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x90004fff @ FLAGS
- .2byte 56 @ RANK
- .2byte MOVE_HAZE, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_LEECH_LIFE
- .byte 4, 2, 2, 2, 10, 50 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 367 @ SPECIES_ID
- .string "GULIN$", 11 @ POKE_NICKNAME
- .string "MELANIE$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x40002fff @ FLAGS
- .2byte 16 @ RANK
- .2byte MOVE_SLUDGE, MOVE_AMNESIA, MOVE_TOXIC, MOVE_YAWN
- .byte 1, 10, 1, 10, 5, 60 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 337 @ SPECIES_ID
- .string "RIKELEC$", 11 @ POKE_NICKNAME
- .string "CHANCE$", 8 @ TRAINER_NAME
- .byte 15 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 12 @ RANK
- .2byte MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_ROAR
- .byte 20, 10, 1, 1, 1, 70 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 363 @ SPECIES_ID
- .string "RELIA$", 11 @ POKE_NICKNAME
- .string "KARINA$", 8 @ TRAINER_NAME
- .byte 32 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x24000fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_PETAL_DANCE, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_INGRAIN
- .byte 50, 15, 75, 10, 20, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 84 @ SPECIES_ID
- .string "DUODO$", 11 @ POKE_NICKNAME
- .string "BOBBY$", 8 @ TRAINER_NAME
- .byte 51 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 125 @ RANK
- .2byte MOVE_PECK, MOVE_FURY_ATTACK, MOVE_RETURN, MOVE_GROWL
- .byte 15, 21, 15, 85, 35, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 332 @ SPECIES_ID
- .string "PINCHIN$", 11 @ POKE_NICKNAME
- .string "CLAIRE$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 113 @ RANK
- .2byte MOVE_BITE, MOVE_SAND_ATTACK, MOVE_DIG, MOVE_FAINT_ATTACK
- .byte 75, 25, 25, 10, 25, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 344 @ SPECIES_ID
- .string "NACAC$", 11 @ POKE_NICKNAME
- .string "WILLIE$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 37 @ RANK
- .2byte MOVE_SPIKES, MOVE_LEER, MOVE_POISON_STING, MOVE_SAND_ATTACK
- .byte 10, 30, 25, 65, 25, 130 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 27 @ SPECIES_ID
- .string "SHRAND$", 11 @ POKE_NICKNAME
- .string "CASSIDY$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10400fff @ FLAGS
- .2byte 69 @ RANK
- .2byte MOVE_SLASH, MOVE_DEFENSE_CURL, MOVE_SWIFT, MOVE_FURY_SWIPES
- .byte 30, 90, 30, 10, 100, 140 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 318 @ SPECIES_ID
- .string "TOYBAL$", 11 @ POKE_NICKNAME
- .string "MORGAN$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08200fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_SELF_DESTRUCT, MOVE_ROCK_TOMB, MOVE_PSYBEAM, MOVE_CONFUSION
- .byte 50, 40, 10, 35, 35, 150 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 339 @ SPECIES_ID
- .string "LENUM$", 11 @ POKE_NICKNAME
- .string "SUMMER$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x10100fff @ FLAGS
- .2byte 77 @ RANK
- .2byte MOVE_MAGNITUDE, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY, MOVE_FLAMETHROWER
- .byte 40, 5, 40, 40, 40, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 308 @ SPECIES_ID
- .string "SPININ$", 11 @ POKE_NICKNAME
- .string "MILES$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 49 @ RANK
- .2byte MOVE_TEETER_DANCE, MOVE_PSYCH_UP, MOVE_HYPNOSIS, MOVE_UPROAR
- .byte 25, 75, 25, 10, 25, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 358 @ SPECIES_ID
- .string "SWABY$", 11 @ POKE_NICKNAME
- .string "AUDREY$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0xa0040fff @ FLAGS
- .2byte 41 @ RANK
- .2byte MOVE_MIRROR_MOVE, MOVE_PERISH_SONG, MOVE_SAFEGUARD, MOVE_MIST
- .byte 30, 30, 40, 30, 25, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 289 @ SPECIES_ID
- .string "NOONE$", 11 @ POKE_NICKNAME
- .string "AVERY$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 25 @ RANK
- .2byte MOVE_GROWL, MOVE_COVET, MOVE_SAND_ATTACK, MOVE_REST
- .byte 40, 40, 30, 10, 30, 130 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 317 @ SPECIES_ID
- .string "KECON$", 11 @ POKE_NICKNAME
- .string "ARIANA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 97 @ RANK
- .2byte MOVE_THIEF, MOVE_SCREECH, MOVE_ANCIENT_POWER, MOVE_BIND
- .byte 10, 10, 40, 75, 35, 140 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 118 @ SPECIES_ID
- .string "GOLDEN$", 11 @ POKE_NICKNAME
- .string "ASHTON$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 13 @ RANK
- .2byte MOVE_HORN_ATTACK, MOVE_FURY_ATTACK, MOVE_HORN_DRILL, MOVE_TAIL_WHIP
- .byte 70, 30, 5, 30, 25, 150 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 323 @ SPECIES_ID
- .string "BOBOACH$", 11 @ POKE_NICKNAME
- .string "SANDRA$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 113 @ RANK
- .2byte MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_EARTHQUAKE, MOVE_FUTURE_SIGHT
- .byte 45, 45, 60, 25, 15, 100 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 227 @ SPECIES_ID
- .string "CORPY$", 11 @ POKE_NICKNAME
- .string "CARSON$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08002fff @ FLAGS
- .2byte 77 @ RANK
- .2byte MOVE_SWIFT, MOVE_DOUBLE_TEAM, MOVE_AGILITY, MOVE_CUT
- .byte 40, 30, 25, 60, 20, 110 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 295 @ SPECIES_ID
- .string "TADO$", 11 @ POKE_NICKNAME
- .string "KATRINA$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x08001fff @ FLAGS
- .2byte 57 @ RANK
- .2byte MOVE_ASTONISH, MOVE_GROWL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE
- .byte 15, 15, 30, 15, 75, 120 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 383 @ SPECIES_ID
- .string "LAIRN$", 11 @ POKE_NICKNAME
- .string "RONNIE$", 8 @ TRAINER_NAME
- .byte 55 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x84000fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_METAL_SOUND, MOVE_METAL_CLAW, MOVE_HARDEN, MOVE_TAKE_DOWN
- .byte 30, 50, 35, 100, 90, 200 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 299 @ SPECIES_ID
- .string "NUZLE$", 11 @ POKE_NICKNAME
- .string "CLAUDIA$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_GROWTH, MOVE_RAZOR_WIND, MOVE_EXPLOSION, MOVE_EXTRASENSORY
- .byte 75, 75, 65, 35, 70, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 302 @ SPECIES_ID
- .string "NINAS$", 11 @ POKE_NICKNAME
- .string "ELIAS$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 114 @ RANK
- .2byte MOVE_SCREECH, MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS
- .byte 30, 50, 95, 70, 70, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 305 @ SPECIES_ID
- .string "WELOW$", 11 @ POKE_NICKNAME
- .string "JADE$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_WING_ATTACK, MOVE_FLY
- .byte 65, 85, 35, 75, 40, 230 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 287 @ SPECIES_ID
- .string "YENA$", 11 @ POKE_NICKNAME
- .string "FRANCIS$", 8 @ TRAINER_NAME
- .byte 44 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_TAUNT, MOVE_THIEF, MOVE_ODOR_SLEUTH, MOVE_TAKE_DOWN
- .byte 40, 80, 35, 70, 70, 240 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 292 @ SPECIES_ID
- .string "TIFLY$", 11 @ POKE_NICKNAME
- .string "ALISHA$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80200fff @ FLAGS
- .2byte 42 @ RANK
- .2byte MOVE_MORNING_SUN, MOVE_SILVER_WIND, MOVE_STUN_SPORE, MOVE_SECRET_POWER
- .byte 40, 70, 25, 80, 100, 250 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 119 @ SPECIES_ID
- .string "KINGSEA$", 11 @ POKE_NICKNAME
- .string "SAUL$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80100fff @ FLAGS
- .2byte 118 @ RANK
- .2byte MOVE_FLAIL, MOVE_SUPERSONIC, MOVE_HORN_ATTACK, MOVE_FURY_ATTACK
- .byte 80, 60, 30, 70, 90, 200 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 340 @ SPECIES_ID
- .string "ERUPAM$", 11 @ POKE_NICKNAME
- .string "FELICIA$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 78 @ RANK
- .2byte MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_OVERHEAT, MOVE_HYPER_BEAM
- .byte 100, 80, 20, 50, 65, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 66 @ SPECIES_ID
- .string "CHOPAM$", 11 @ POKE_NICKNAME
- .string "EMILIO$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80040fff @ FLAGS
- .2byte 66 @ RANK
- .2byte MOVE_SEISMIC_TOSS, MOVE_FOCUS_ENERGY, MOVE_KARATE_CHOP, MOVE_SCARY_FACE
- .byte 70, 85, 25, 60, 50, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 296 @ SPECIES_ID
- .string "LOMBE$", 11 @ POKE_NICKNAME
- .string "KARLA$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 58 @ RANK
- .2byte MOVE_ATTRACT, MOVE_FLASH, MOVE_UPROAR, MOVE_GROWL
- .byte 40, 60, 90, 45, 70, 230 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 379 @ SPECIES_ID
- .string "VIPES$", 11 @ POKE_NICKNAME
- .string "DARRYL$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 98 @ RANK
- .2byte MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP, MOVE_SCREECH
- .byte 35, 50, 90, 40, 100, 240 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 313 @ SPECIES_ID
- .string "MERAIL$", 11 @ POKE_NICKNAME
- .string "SELENA$", 8 @ TRAINER_NAME
- .byte 22 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 26 @ RANK
- .2byte MOVE_WATER_PULSE, MOVE_REST, MOVE_WATER_SPOUT, MOVE_SPLASH
- .byte 30, 100, 100, 50, 30, 250 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 129 @ SPECIES_ID
- .string "KARPAG$", 11 @ POKE_NICKNAME
- .string "NOEL$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 82 @ RANK
- .2byte MOVE_TACKLE, MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE
- .byte 30, 30, 160, 50, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 348 @ SPECIES_ID
- .string "LUNONE$", 11 @ POKE_NICKNAME
- .string "LACEY$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80002fff @ FLAGS
- .2byte 42 @ RANK
- .2byte MOVE_EXPLOSION, MOVE_FUTURE_SIGHT, MOVE_PSYCHIC, MOVE_CONFUSION
- .byte 50, 70, 60, 70, 50, 210 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 310 @ SPECIES_ID
- .string "PELIPE$", 11 @ POKE_NICKNAME
- .string "CORBIN$", 8 @ TRAINER_NAME
- .byte 39 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 14 @ RANK
- .2byte MOVE_MIST, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_WING_ATTACK
- .byte 95, 80, 85, 35, 35, 220 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 130 @ SPECIES_ID
- .string "RADOS$", 11 @ POKE_NICKNAME
- .string "JUSTINA$", 8 @ TRAINER_NAME
- .byte 32 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x84000fff @ FLAGS
- .2byte 79 @ RANK
- .2byte MOVE_HYPER_BEAM, MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE
- .byte 160, 200, 20, 40, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 371 @ SPECIES_ID
- .string "LOUDERD$", 11 @ POKE_NICKNAME
- .string "RALPH$", 8 @ TRAINER_NAME
- .byte 21 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x82000fff @ FLAGS
- .2byte 71 @ RANK
- .2byte MOVE_HYPER_VOICE, MOVE_STOMP, MOVE_ROAR, MOVE_HOWL
- .byte 170, 50, 55, 150, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 316 @ SPECIES_ID
- .string "CATTED$", 11 @ POKE_NICKNAME
- .string "ROSA$", 8 @ TRAINER_NAME
- .byte 8 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x81000fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_ATTRACT, MOVE_ASSIST, MOVE_FAINT_ATTACK, MOVE_TAIL_WHIP
- .byte 40, 200, 150, 185, 60, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 366 @ SPECIES_ID
- .string "SLING$", 11 @ POKE_NICKNAME
- .string "KEATON$", 8 @ TRAINER_NAME
- .byte 11 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80800fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_COVET, MOVE_COUNTER, MOVE_ENCORE, MOVE_SLACK_OFF
- .byte 85, 85, 170, 110, 150, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 359 @ SPECIES_ID
- .string "TARIA$", 11 @ POKE_NICKNAME
- .string "MAYRA$", 8 @ TRAINER_NAME
- .byte 18 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80400fff @ FLAGS
- .2byte 15 @ RANK
- .2byte MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_PERISH_SONG, MOVE_SAFEGUARD
- .byte 170, 150, 30, 30, 90, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 393 @ SPECIES_ID
- .string "SHEDJA$", 11 @ POKE_NICKNAME
- .string "LAMAR$", 8 @ TRAINER_NAME
- .byte 15 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80200fff @ FLAGS
- .2byte 39 @ RANK
- .2byte MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, MOVE_RETURN
- .byte 230, 60, 60, 230, 80, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 45 @ SPECIES_ID
- .string "PLUMILE$", 11 @ POKE_NICKNAME
- .string "AUBREY$", 8 @ TRAINER_NAME
- .byte 26 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80100fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_PETAL_DANCE, MOVE_SWEET_SCENT, MOVE_STUN_SPORE, MOVE_FLASH
- .byte 35, 200, 150, 130, 40, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 361 @ SPECIES_ID
- .string "KULLUSK$", 11 @ POKE_NICKNAME
- .string "NIGEL$", 8 @ TRAINER_NAME
- .byte 31 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80080fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_DISABLE, MOVE_FUTURE_SIGHT, MOVE_NIGHT_SHADE, MOVE_PURSUIT
- .byte 25, 35, 230, 150, 160, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 178 @ SPECIES_ID
- .string "UTAN$", 11 @ POKE_NICKNAME
- .string "CAMILLE$", 8 @ TRAINER_NAME
- .byte 47 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80040fff @ FLAGS
- .2byte 115 @ RANK
- .2byte MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC
- .byte 35, 35, 150, 130, 170, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 331 @ SPECIES_ID
- .string "PEDOS$", 11 @ POKE_NICKNAME
- .string "DEON$", 8 @ TRAINER_NAME
- .byte 38 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80020fff @ FLAGS
- .2byte 87 @ RANK
- .2byte MOVE_AGILITY, MOVE_SWAGGER, MOVE_TAUNT, MOVE_TAKE_DOWN
- .byte 140, 70, 140, 75, 100, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 325 @ SPECIES_ID
- .string "LUVIS$", 11 @ POKE_NICKNAME
- .string "JANELLE$", 8 @ TRAINER_NAME
- .byte 10 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80010fff @ FLAGS
- .2byte 83 @ RANK
- .2byte MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_TAKE_DOWN, MOVE_CHARM
- .byte 50, 100, 220, 40, 190, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 214 @ SPECIES_ID
- .string "HEROSS$", 11 @ POKE_NICKNAME
- .string "HEATH$", 8 @ TRAINER_NAME
- .byte 33 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80008fff @ FLAGS
- .2byte 71 @ RANK
- .2byte MOVE_STRENGTH, MOVE_ENDURE, MOVE_REVERSAL, MOVE_ROCK_TOMB
- .byte 170, 70, 110, 240, 140, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 101 @ SPECIES_ID
- .string "RODLECT$", 11 @ POKE_NICKNAME
- .string "SASHA$", 8 @ TRAINER_NAME
- .byte 6 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80004fff @ FLAGS
- .2byte 15 @ RANK
- .2byte MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SWIFT, MOVE_FLASH
- .byte 200, 200, 30, 35, 50, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 172 @ SPECIES_ID
- .string "CHUPY$", 11 @ POKE_NICKNAME
- .string "FRANKIE$", 8 @ TRAINER_NAME
- .byte 35 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80002fff @ FLAGS
- .2byte 59 @ RANK
- .2byte MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_REST, MOVE_TAIL_WHIP
- .byte 25, 150, 180, 115, 120, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
- .2byte 202 @ SPECIES_ID
- .string "WOBET$", 11 @ POKE_NICKNAME
- .string "HELEN$", 8 @ TRAINER_NAME
- .byte 16 @ TRAINER_SPRITE
- .2byte 0x0000 @padding
- .4byte 0x80001fff @ FLAGS
- .2byte 111 @ RANK
- .2byte MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND
- .byte 60, 230, 50, 220, 210, 255 @ STAT_COOL, STAT_BEAUTY, STAT_CUTE, STAT_SMART, STAT_TOUGH, STAT_SHEEN
- .4byte 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ffff @ RESERVED
-
-@ credit to Valkyrie for helping me properly dump these structs
diff --git a/data/contest_painting_effects.s b/data/contest_painting_effects.s
deleted file mode 100644
index e3e75753d..000000000
--- a/data/contest_painting_effects.s
+++ /dev/null
@@ -1,3206 +0,0 @@
- .include "include/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_083E7A50:: @ 83E7A50
- .byte 0x00, 0x1D, 0x1C
- .byte 0x0E, 0x1E, 0x1B
- .byte 0x00, 0x01, 0x32
- .byte 0x2E, 0x1E, 0x37
- .byte 0x0A, 0x22, 0x1F
- .byte 0x05, 0x26, 0x2E
- .byte 0x12, 0x17, 0x1E
- .byte 0x1A, 0x03, 0x11
- .byte 0x05, 0x11, 0x18
- .byte 0x05, 0x27, 0x2F
- .byte 0x1A, 0x3F, 0x12
- .byte 0x22, 0x3F, 0x16
- .byte 0x2B, 0x2F, 0x2E
- .byte 0x11, 0x02, 0x2D
- .byte 0x23, 0x0D, 0x28
- .byte 0x17, 0x0C, 0x19
- .byte 0x2F, 0x0E, 0x13
- .byte 0x30, 0x18, 0x20
- .byte 0x2D, 0x28, 0x22
- .byte 0x01, 0x03, 0x19
- .byte 0x0E, 0x2A, 0x2B
- .byte 0x22, 0x15, 0x25
- .byte 0x22, 0x0A, 0x26
- .byte 0x39, 0x06, 0x23
- .byte 0x16, 0x07, 0x2F
- .byte 0x22, 0x3A, 0x1B
- .byte 0x3B, 0x36, 0x35
- .byte 0x0A, 0x2B, 0x24
- .byte 0x36, 0x09, 0x12
- .byte 0x1C, 0x2F, 0x23
- .byte 0x2E, 0x38, 0x2C
- .byte 0x05, 0x2A, 0x20
- .byte 0x07, 0x14, 0x32
- .byte 0x31, 0x08, 0x17
- .byte 0x1A, 0x24, 0x2D
- .byte 0x22, 0x0A, 0x16
- .byte 0x1B, 0x26, 0x2B
- .byte 0x29, 0x16, 0x11
- .byte 0x35, 0x08, 0x14
- .byte 0x1E, 0x08, 0x14
- .byte 0x05, 0x31, 0x14
- .byte 0x38, 0x31, 0x17
- .byte 0x34, 0x33, 0x12
- .byte 0x11, 0x09, 0x1F
- .byte 0x28, 0x3D, 0x32
- .byte 0x35, 0x03, 0x1E
- .byte 0x3C, 0x2B, 0x2E
- .byte 0x10, 0x01, 0x17
- .byte 0x03, 0x3E, 0x22
- .byte 0x17, 0x18, 0x34
- .byte 0x08, 0x29, 0x19
- .byte 0x03, 0x24, 0x28
- .byte 0x3D, 0x33, 0x2F
- .byte 0x31, 0x24, 0x19
- .byte 0x1B, 0x18, 0x26
- .byte 0x07, 0x0D, 0x25
- .byte 0x2D, 0x3F, 0x12
- .byte 0x2F, 0x15, 0x25
- .byte 0x29, 0x0F, 0x12
- .byte 0x07, 0x2C, 0x12
- .byte 0x2C, 0x0B, 0x26
- .byte 0x12, 0x1A, 0x16
- .byte 0x00, 0x0B, 0x2F
- .byte 0x16, 0x35, 0x24
- .byte 0x1F, 0x1C, 0x22
- .byte 0x29, 0x33, 0x27
- .byte 0x3B, 0x30, 0x17
- .byte 0x11, 0x06, 0x35
- .byte 0x3E, 0x31, 0x2F
- .byte 0x11, 0x3A, 0x25
- .byte 0x2A, 0x02, 0x19
- .byte 0x33, 0x18, 0x35
- .byte 0x2A, 0x20, 0x21
- .byte 0x2E, 0x32, 0x1B
- .byte 0x3B, 0x1F, 0x23
- .byte 0x39, 0x29, 0x2A
- .byte 0x2E, 0x31, 0x29
- .byte 0x2A, 0x0E, 0x2D
- .byte 0x2D, 0x00, 0x1F
- .byte 0x38, 0x28, 0x1B
- .byte 0x14, 0x3B, 0x2B
- .byte 0x2E, 0x04, 0x26
- .byte 0x36, 0x30, 0x11
- .byte 0x3B, 0x21, 0x2D
- .byte 0x2B, 0x3F, 0x1B
- .byte 0x20, 0x13, 0x31
- .byte 0x33, 0x0C, 0x30
- .byte 0x22, 0x2B, 0x2B
- .byte 0x16, 0x02, 0x1E
- .byte 0x1C, 0x12, 0x1C
- .byte 0x0F, 0x3C, 0x36
- .byte 0x38, 0x10, 0x2D
- .byte 0x18, 0x2F, 0x2D
- .byte 0x35, 0x3B, 0x11
- .byte 0x37, 0x31, 0x13
- .byte 0x13, 0x3D, 0x2F
- .byte 0x1E, 0x2C, 0x33
- .byte 0x2E, 0x37, 0x12
- .byte 0x3C, 0x1F, 0x33
- .byte 0x32, 0x2A, 0x27
- .byte 0x0D, 0x3B, 0x1C
- .byte 0x35, 0x2A, 0x27
- .byte 0x09, 0x3D, 0x27
- .byte 0x12, 0x0B, 0x18
- .byte 0x0C, 0x15, 0x1D
- .byte 0x20, 0x01, 0x1C
- .byte 0x08, 0x3B, 0x1C
- .byte 0x12, 0x37, 0x33
- .byte 0x15, 0x03, 0x2C
- .byte 0x2A, 0x3B, 0x31
- .byte 0x0F, 0x04, 0x35
- .byte 0x08, 0x17, 0x33
- .byte 0x38, 0x3D, 0x2A
- .byte 0x2F, 0x35, 0x16
- .byte 0x10, 0x35, 0x16
- .byte 0x23, 0x13, 0x2C
- .byte 0x2F, 0x06, 0x20
- .byte 0x27, 0x3A, 0x24
- .byte 0x00, 0x1C, 0x2A
- .byte 0x03, 0x39, 0x1D
- .byte 0x28, 0x07, 0x1A
- .byte 0x20, 0x0A, 0x37
- .byte 0x07, 0x35, 0x2D
- .byte 0x15, 0x2F, 0x2C
- .byte 0x10, 0x2C, 0x23
- .byte 0x3F, 0x29, 0x14
- .byte 0x2A, 0x21, 0x36
- .byte 0x34, 0x1A, 0x2C
- .byte 0x1C, 0x3D, 0x33
- .byte 0x38, 0x2B, 0x22
- .byte 0x35, 0x28, 0x1F
- .byte 0x3D, 0x0F, 0x1C
- .byte 0x1E, 0x3E, 0x1B
- .byte 0x0C, 0x3E, 0x1F
- .byte 0x2B, 0x31, 0x2C
- .byte 0x32, 0x39, 0x11
- .byte 0x05, 0x09, 0x11
- .byte 0x04, 0x38, 0x2A
- .byte 0x32, 0x00, 0x16
- .byte 0x13, 0x0B, 0x31
- .byte 0x34, 0x2A, 0x13
- .byte 0x2C, 0x22, 0x21
- .byte 0x39, 0x2F, 0x15
- .byte 0x37, 0x28, 0x1E
- .byte 0x07, 0x3B, 0x2D
- .byte 0x11, 0x03, 0x28
- .byte 0x2D, 0x30, 0x1E
- .byte 0x31, 0x11, 0x11
- .byte 0x23, 0x01, 0x1E
- .byte 0x3D, 0x31, 0x34
- .byte 0x1C, 0x02, 0x34
- .byte 0x21, 0x0E, 0x25
- .byte 0x3D, 0x07, 0x17
- .byte 0x33, 0x15, 0x10
- .byte 0x29, 0x32, 0x32
- .byte 0x18, 0x1F, 0x30
- .byte 0x2D, 0x3B, 0x30
- .byte 0x27, 0x3E, 0x16
- .byte 0x31, 0x15, 0x12
- .byte 0x30, 0x25, 0x17
- .byte 0x33, 0x06, 0x34
- .byte 0x00, 0x29, 0x18
- .byte 0x3C, 0x03, 0x12
- .byte 0x2C, 0x0C, 0x11
- .byte 0x09, 0x30, 0x30
- .byte 0x10, 0x0E, 0x11
- .byte 0x27, 0x16, 0x1B
- .byte 0x0C, 0x3B, 0x2E
- .byte 0x2B, 0x33, 0x1E
- .byte 0x13, 0x2D, 0x2D
- .byte 0x11, 0x24, 0x29
- .byte 0x34, 0x3E, 0x2B
- .byte 0x24, 0x1E, 0x21
- .byte 0x27, 0x1A, 0x2D
- .byte 0x04, 0x39, 0x16
- .byte 0x3E, 0x33, 0x26
- .byte 0x1B, 0x2E, 0x25
- .byte 0x0C, 0x06, 0x19
- .byte 0x25, 0x19, 0x18
- .byte 0x1D, 0x33, 0x33
- .byte 0x1D, 0x28, 0x2D
- .byte 0x1C, 0x10, 0x2A
- .byte 0x1F, 0x35, 0x1E
- .byte 0x34, 0x02, 0x10
- .byte 0x2B, 0x3A, 0x14
- .byte 0x0D, 0x0B, 0x15
- .byte 0x0C, 0x2C, 0x10
- .byte 0x37, 0x3A, 0x19
- .byte 0x06, 0x13, 0x17
- .byte 0x24, 0x10, 0x25
- .byte 0x24, 0x04, 0x1E
- .byte 0x00, 0x35, 0x34
- .byte 0x3A, 0x00, 0x37
- .byte 0x3C, 0x07, 0x1A
- .byte 0x2B, 0x28, 0x36
- .byte 0x34, 0x39, 0x2F
- .byte 0x28, 0x09, 0x1F
- .byte 0x38, 0x31, 0x30
- .byte 0x16, 0x25, 0x31
- .byte 0x18, 0x28, 0x31
- .byte 0x18, 0x0C, 0x22
- .byte 0x06, 0x39, 0x2D
- .byte 0x3D, 0x20, 0x24
- .byte 0x2E, 0x27, 0x21
- .byte 0x3E, 0x18, 0x18
- .byte 0x15, 0x3C, 0x24
- .byte 0x06, 0x1B, 0x26
- .byte 0x15, 0x0E, 0x22
- .byte 0x0A, 0x0D, 0x1F
- .byte 0x18, 0x16, 0x34
- .byte 0x10, 0x28, 0x21
- .byte 0x20, 0x11, 0x11
- .byte 0x36, 0x32, 0x15
- .byte 0x3B, 0x2E, 0x24
- .byte 0x1F, 0x2D, 0x12
- .byte 0x36, 0x2E, 0x20
- .byte 0x0B, 0x17, 0x33
- .byte 0x26, 0x03, 0x1F
- .byte 0x08, 0x19, 0x31
- .byte 0x2A, 0x18, 0x25
- .byte 0x35, 0x2D, 0x2D
- .byte 0x30, 0x38, 0x18
- .byte 0x1C, 0x25, 0x14
- .byte 0x1C, 0x22, 0x28
- .byte 0x08, 0x23, 0x21
- .byte 0x26, 0x1E, 0x30
- .byte 0x19, 0x0F, 0x15
- .byte 0x10, 0x2F, 0x22
- .byte 0x12, 0x02, 0x25
- .byte 0x3C, 0x01, 0x1D
- .byte 0x0E, 0x14, 0x18
- .byte 0x0D, 0x18, 0x17
- .byte 0x22, 0x0B, 0x31
- .byte 0x13, 0x34, 0x21
- .byte 0x0F, 0x2D, 0x36
- .byte 0x39, 0x1F, 0x25
- .byte 0x18, 0x10, 0x1F
- .byte 0x2D, 0x20, 0x20
- .byte 0x19, 0x0B, 0x31
- .byte 0x33, 0x13, 0x14
- .byte 0x2E, 0x11, 0x21
- .byte 0x2D, 0x0A, 0x37
- .byte 0x07, 0x15, 0x1B
- .byte 0x32, 0x04, 0x32
- .byte 0x06, 0x18, 0x1B
- .byte 0x13, 0x24, 0x12
- .byte 0x36, 0x22, 0x16
- .byte 0x1D, 0x29, 0x1C
- .byte 0x35, 0x17, 0x21
- .byte 0x36, 0x17, 0x2B
- .byte 0x35, 0x32, 0x19
- .byte 0x2A, 0x0F, 0x2E
- .byte 0x10, 0x00, 0x34
- .byte 0x02, 0x0E, 0x28
- .byte 0x31, 0x32, 0x32
- .byte 0x3B, 0x05, 0x20
- .byte 0x36, 0x26, 0x12
- .byte 0x34, 0x06, 0x34
- .byte 0x1E, 0x31, 0x32
- .byte 0x35, 0x05, 0x34
- .byte 0x1E, 0x13, 0x15
- .byte 0x15, 0x14, 0x2C
- .byte 0x29, 0x1C, 0x18
- .byte 0x24, 0x24, 0x12
- .byte 0x22, 0x29, 0x18
- .byte 0x34, 0x36, 0x30
- .byte 0x1E, 0x01, 0x23
- .byte 0x0C, 0x3C, 0x24
- .byte 0x0A, 0x3D, 0x16
- .byte 0x27, 0x1E, 0x23
- .byte 0x15, 0x02, 0x12
- .byte 0x11, 0x19, 0x2A
- .byte 0x1D, 0x31, 0x15
- .byte 0x03, 0x3B, 0x2A
- .byte 0x21, 0x19, 0x2C
- .byte 0x0A, 0x23, 0x11
- .byte 0x25, 0x11, 0x1A
- .byte 0x1A, 0x0A, 0x34
- .byte 0x3B, 0x0B, 0x33
- .byte 0x21, 0x0B, 0x37
- .byte 0x01, 0x31, 0x28
- .byte 0x35, 0x1D, 0x27
- .byte 0x2C, 0x30, 0x31
- .byte 0x2E, 0x39, 0x2D
- .byte 0x30, 0x05, 0x2C
- .byte 0x12, 0x2A, 0x2B
- .byte 0x39, 0x22, 0x20
- .byte 0x15, 0x34, 0x1C
- .byte 0x1C, 0x01, 0x15
- .byte 0x20, 0x16, 0x22
- .byte 0x13, 0x04, 0x18
- .byte 0x1E, 0x13, 0x10
- .byte 0x25, 0x33, 0x15
- .byte 0x39, 0x03, 0x31
- .byte 0x3F, 0x36, 0x18
- .byte 0x14, 0x23, 0x10
- .byte 0x2F, 0x1E, 0x1F
- .byte 0x1F, 0x17, 0x2C
- .byte 0x02, 0x16, 0x31
- .byte 0x20, 0x18, 0x30
- .byte 0x2E, 0x18, 0x37
- .byte 0x3B, 0x0E, 0x30
- .byte 0x10, 0x39, 0x24
- .byte 0x26, 0x39, 0x1E
- .byte 0x30, 0x26, 0x2E
- .byte 0x12, 0x01, 0x14
- .byte 0x37, 0x2A, 0x2E
- .byte 0x21, 0x06, 0x1D
- .byte 0x2A, 0x16, 0x32
- .byte 0x09, 0x38, 0x1C
- .byte 0x07, 0x22, 0x17
- .byte 0x3B, 0x2D, 0x15
- .byte 0x07, 0x1E, 0x2E
- .byte 0x1B, 0x2E, 0x1D
- .byte 0x04, 0x09, 0x30
- .byte 0x30, 0x2D, 0x37
- .byte 0x2D, 0x34, 0x24
- .byte 0x18, 0x24, 0x25
- .byte 0x0E, 0x2D, 0x26
- .byte 0x23, 0x0A, 0x16
- .byte 0x12, 0x2D, 0x11
- .byte 0x21, 0x28, 0x2E
- .byte 0x0F, 0x01, 0x21
- .byte 0x01, 0x31, 0x12
- .byte 0x3F, 0x1B, 0x1E
- .byte 0x21, 0x25, 0x2B
- .byte 0x26, 0x18, 0x13
- .byte 0x15, 0x2D, 0x34
- .byte 0x23, 0x21, 0x36
- .byte 0x0E, 0x2E, 0x1C
- .byte 0x14, 0x22, 0x1C
- .byte 0x2C, 0x0B, 0x28
- .byte 0x1A, 0x18, 0x21
- .byte 0x21, 0x07, 0x1A
- .byte 0x24, 0x26, 0x29
- .byte 0x2B, 0x0A, 0x34
- .byte 0x3E, 0x27, 0x33
- .byte 0x12, 0x34, 0x1B
- .byte 0x1F, 0x01, 0x2A
- .byte 0x2E, 0x06, 0x23
- .byte 0x2F, 0x1F, 0x14
- .byte 0x18, 0x06, 0x26
- .byte 0x31, 0x1F, 0x2B
- .byte 0x22, 0x26, 0x2E
- .byte 0x1E, 0x15, 0x16
- .byte 0x20, 0x22, 0x28
- .byte 0x15, 0x37, 0x12
- .byte 0x25, 0x04, 0x2C
- .byte 0x1F, 0x04, 0x2E
- .byte 0x0C, 0x13, 0x18
- .byte 0x07, 0x0B, 0x36
- .byte 0x1D, 0x1C, 0x2A
- .byte 0x30, 0x22, 0x1C
- .byte 0x2E, 0x12, 0x2F
- .byte 0x2B, 0x21, 0x1E
- .byte 0x16, 0x38, 0x30
- .byte 0x04, 0x02, 0x16
- .byte 0x05, 0x14, 0x20
- .byte 0x38, 0x3C, 0x33
- .byte 0x21, 0x1B, 0x2F
- .byte 0x14, 0x2A, 0x27
- .byte 0x38, 0x14, 0x1B
- .byte 0x2B, 0x1F, 0x2B
- .byte 0x29, 0x2B, 0x25
- .byte 0x27, 0x36, 0x21
- .byte 0x11, 0x22, 0x1B
- .byte 0x29, 0x03, 0x1B
- .byte 0x18, 0x24, 0x28
- .byte 0x21, 0x2D, 0x36
- .byte 0x3C, 0x2C, 0x24
- .byte 0x33, 0x17, 0x1F
- .byte 0x2A, 0x3A, 0x21
- .byte 0x0A, 0x23, 0x37
- .byte 0x00, 0x0B, 0x21
- .byte 0x11, 0x38, 0x19
- .byte 0x0F, 0x0E, 0x1C
- .byte 0x1F, 0x0F, 0x37
- .byte 0x3C, 0x10, 0x37
- .byte 0x38, 0x31, 0x35
- .byte 0x07, 0x15, 0x28
- .byte 0x1E, 0x2E, 0x19
- .byte 0x26, 0x10, 0x33
- .byte 0x3D, 0x35, 0x2F
- .byte 0x3A, 0x04, 0x34
- .byte 0x0D, 0x18, 0x1A
- .byte 0x01, 0x2D, 0x15
- .byte 0x3D, 0x1A, 0x17
- .byte 0x17, 0x3F, 0x32
- .byte 0x0B, 0x21, 0x11
- .byte 0x1E, 0x26, 0x2B
- .byte 0x0D, 0x19, 0x24
- .byte 0x2E, 0x04, 0x1B
- .byte 0x1B, 0x33, 0x20
- .byte 0x15, 0x21, 0x1D
- .byte 0x1F, 0x04, 0x21
- .byte 0x0F, 0x12, 0x1F
- .byte 0x2D, 0x2A, 0x32
- .byte 0x03, 0x37, 0x1F
- .byte 0x35, 0x07, 0x27
- .byte 0x24, 0x1F, 0x31
- .byte 0x2F, 0x30, 0x15
- .byte 0x06, 0x00, 0x24
- .byte 0x0B, 0x22, 0x1A
- .byte 0x0C, 0x3B, 0x29
- .byte 0x14, 0x1A, 0x17
- .byte 0x37, 0x20, 0x25
- .byte 0x3F, 0x26, 0x37
- .byte 0x3A, 0x3E, 0x10
- .byte 0x22, 0x04, 0x11
- .byte 0x28, 0x12, 0x1C
- .byte 0x03, 0x2E, 0x2E
- .byte 0x0E, 0x38, 0x28
- .byte 0x01, 0x29, 0x22
- .byte 0x1E, 0x33, 0x19
- .byte 0x06, 0x21, 0x27
- .byte 0x33, 0x19, 0x1A
- .byte 0x02, 0x05, 0x17
- .byte 0x11, 0x11, 0x2C
- .byte 0x1F, 0x26, 0x1E
- .byte 0x39, 0x1F, 0x28
- .byte 0x2E, 0x2F, 0x12
- .byte 0x22, 0x34, 0x13
- .byte 0x3B, 0x26, 0x2F
- .byte 0x34, 0x00, 0x14
- .byte 0x10, 0x31, 0x11
- .byte 0x1D, 0x2D, 0x2A
- .byte 0x08, 0x08, 0x37
- .byte 0x15, 0x18, 0x34
- .byte 0x04, 0x2B, 0x24
- .byte 0x2F, 0x1E, 0x27
- .byte 0x22, 0x2A, 0x24
- .byte 0x07, 0x14, 0x25
- .byte 0x01, 0x27, 0x19
- .byte 0x29, 0x0A, 0x29
- .byte 0x3D, 0x1C, 0x2F
- .byte 0x0D, 0x1F, 0x1C
- .byte 0x24, 0x3D, 0x32
- .byte 0x36, 0x1D, 0x24
- .byte 0x14, 0x21, 0x16
- .byte 0x1A, 0x0D, 0x29
- .byte 0x3F, 0x2B, 0x2A
- .byte 0x1A, 0x3E, 0x35
- .byte 0x11, 0x28, 0x18
- .byte 0x32, 0x05, 0x15
- .byte 0x21, 0x2E, 0x34
- .byte 0x2D, 0x14, 0x2A
- .byte 0x3C, 0x08, 0x37
- .byte 0x3F, 0x34, 0x1E
- .byte 0x27, 0x24, 0x1C
- .byte 0x16, 0x16, 0x33
- .byte 0x29, 0x3B, 0x19
- .byte 0x36, 0x2F, 0x1C
- .byte 0x03, 0x25, 0x2C
- .byte 0x0B, 0x16, 0x36
- .byte 0x1C, 0x1D, 0x1B
- .byte 0x2C, 0x27, 0x1B
- .byte 0x0B, 0x1F, 0x2B
- .byte 0x08, 0x10, 0x27
- .byte 0x3F, 0x25, 0x2F
- .byte 0x33, 0x13, 0x1F
- .byte 0x04, 0x31, 0x37
- .byte 0x0E, 0x2F, 0x12
- .byte 0x08, 0x23, 0x20
- .byte 0x3A, 0x1A, 0x1E
- .byte 0x2F, 0x0B, 0x1F
- .byte 0x1E, 0x20, 0x19
- .byte 0x23, 0x3B, 0x14
- .byte 0x25, 0x00, 0x27
- .byte 0x14, 0x04, 0x25
- .byte 0x36, 0x1A, 0x2B
- .byte 0x27, 0x21, 0x15
- .byte 0x28, 0x13, 0x2C
- .byte 0x0E, 0x3C, 0x35
- .byte 0x0C, 0x2D, 0x2B
- .byte 0x37, 0x16, 0x15
- .byte 0x29, 0x15, 0x1D
- .byte 0x17, 0x34, 0x36
- .byte 0x09, 0x0A, 0x31
- .byte 0x37, 0x22, 0x28
- .byte 0x17, 0x2B, 0x35
- .byte 0x14, 0x2B, 0x12
- .byte 0x08, 0x13, 0x1F
- .byte 0x31, 0x13, 0x28
- .byte 0x06, 0x07, 0x35
- .byte 0x23, 0x3A, 0x29
- .byte 0x0F, 0x24, 0x2E
- .byte 0x07, 0x35, 0x26
- .byte 0x0E, 0x12, 0x15
- .byte 0x23, 0x33, 0x2C
- .byte 0x0E, 0x21, 0x26
- .byte 0x1C, 0x12, 0x25
- .byte 0x23, 0x1D, 0x2F
- .byte 0x04, 0x35, 0x33
- .byte 0x16, 0x01, 0x24
- .byte 0x3D, 0x2C, 0x2E
- .byte 0x35, 0x0A, 0x25
- .byte 0x11, 0x13, 0x25
- .byte 0x1B, 0x1B, 0x15
- .byte 0x15, 0x39, 0x10
- .byte 0x0B, 0x35, 0x24
- .byte 0x3A, 0x27, 0x30
- .byte 0x2E, 0x2F, 0x15
- .byte 0x10, 0x1F, 0x35
- .byte 0x1B, 0x28, 0x35
- .byte 0x26, 0x30, 0x37
- .byte 0x34, 0x37, 0x2B
- .byte 0x0F, 0x30, 0x29
- .byte 0x2E, 0x3F, 0x2B
- .byte 0x38, 0x34, 0x2B
- .byte 0x2B, 0x2F, 0x25
- .byte 0x0D, 0x28, 0x2A
- .byte 0x33, 0x18, 0x10
- .byte 0x21, 0x12, 0x11
- .byte 0x1F, 0x22, 0x34
- .byte 0x11, 0x25, 0x23
- .byte 0x21, 0x3F, 0x11
- .byte 0x26, 0x27, 0x25
- .byte 0x28, 0x36, 0x12
- .byte 0x15, 0x26, 0x32
- .byte 0x11, 0x18, 0x24
- .byte 0x32, 0x25, 0x37
- .byte 0x27, 0x3A, 0x33
- .byte 0x35, 0x07, 0x1C
- .byte 0x1A, 0x0E, 0x2A
- .byte 0x1E, 0x2F, 0x1F
- .byte 0x00, 0x2E, 0x21
- .byte 0x1B, 0x3C, 0x14
- .byte 0x2F, 0x3A, 0x2F
- .byte 0x3E, 0x38, 0x15
- .byte 0x1A, 0x13, 0x2F
- .byte 0x29, 0x0D, 0x2F
- .byte 0x37, 0x17, 0x18
- .byte 0x30, 0x1C, 0x35
- .byte 0x15, 0x34, 0x14
- .byte 0x28, 0x11, 0x2C
- .byte 0x2C, 0x25, 0x2A
- .byte 0x20, 0x3F, 0x28
- .byte 0x0C, 0x34, 0x1B
- .byte 0x30, 0x2E, 0x25
- .byte 0x37, 0x1C, 0x24
- .byte 0x1F, 0x25, 0x26
- .byte 0x0C, 0x19, 0x34
- .byte 0x18, 0x10, 0x35
- .byte 0x0A, 0x13, 0x11
- .byte 0x25, 0x13, 0x20
- .byte 0x13, 0x19, 0x11
- .byte 0x20, 0x28, 0x1D
- .byte 0x3E, 0x30, 0x1B
- .byte 0x23, 0x24, 0x21
- .byte 0x0D, 0x23, 0x23
- .byte 0x1D, 0x28, 0x2E
- .byte 0x2D, 0x12, 0x1F
- .byte 0x0E, 0x2E, 0x2B
- .byte 0x0B, 0x31, 0x32
- .byte 0x24, 0x3C, 0x2C
- .byte 0x13, 0x3C, 0x12
- .byte 0x28, 0x16, 0x2A
- .byte 0x05, 0x0C, 0x32
- .byte 0x39, 0x0B, 0x32
- .byte 0x21, 0x04, 0x14
- .byte 0x10, 0x31, 0x32
- .byte 0x12, 0x1F, 0x23
- .byte 0x39, 0x2E, 0x2E
- .byte 0x22, 0x3D, 0x27
- .byte 0x0C, 0x1E, 0x18
- .byte 0x25, 0x00, 0x17
- .byte 0x06, 0x31, 0x14
- .byte 0x13, 0x21, 0x1A
- .byte 0x14, 0x20, 0x35
- .byte 0x0A, 0x3B, 0x25
- .byte 0x33, 0x08, 0x28
- .byte 0x3D, 0x02, 0x33
- .byte 0x23, 0x00, 0x13
- .byte 0x22, 0x21, 0x28
- .byte 0x30, 0x14, 0x2E
- .byte 0x14, 0x32, 0x36
- .byte 0x39, 0x23, 0x1E
- .byte 0x1C, 0x11, 0x30
- .byte 0x37, 0x16, 0x30
- .byte 0x15, 0x31, 0x1F
- .byte 0x34, 0x28, 0x2C
- .byte 0x35, 0x05, 0x29
- .byte 0x37, 0x33, 0x2A
- .byte 0x1C, 0x17, 0x2E
- .byte 0x10, 0x06, 0x16
- .byte 0x32, 0x1F, 0x2F
- .byte 0x00, 0x29, 0x1E
- .byte 0x04, 0x01, 0x16
- .byte 0x3B, 0x23, 0x1E
- .byte 0x1B, 0x34, 0x2A
- .byte 0x30, 0x11, 0x2B
- .byte 0x03, 0x00, 0x1F
- .byte 0x1D, 0x37, 0x1A
- .byte 0x3A, 0x18, 0x25
- .byte 0x1C, 0x16, 0x2C
- .byte 0x04, 0x3F, 0x33
- .byte 0x26, 0x23, 0x2D
- .byte 0x15, 0x2C, 0x27
- .byte 0x02, 0x35, 0x27
- .byte 0x07, 0x35, 0x33
- .byte 0x1A, 0x0C, 0x10
- .byte 0x28, 0x26, 0x2C
- .byte 0x2F, 0x36, 0x16
- .byte 0x37, 0x0B, 0x27
- .byte 0x1B, 0x3D, 0x18
- .byte 0x27, 0x1F, 0x20
- .byte 0x2B, 0x2A, 0x33
- .byte 0x0B, 0x0F, 0x20
- .byte 0x35, 0x3C, 0x2F
- .byte 0x33, 0x21, 0x15
- .byte 0x2D, 0x26, 0x34
- .byte 0x1F, 0x1A, 0x21
- .byte 0x2F, 0x2C, 0x2A
- .byte 0x1A, 0x32, 0x1A
- .byte 0x3B, 0x3F, 0x21
- .byte 0x13, 0x3F, 0x13
- .byte 0x0F, 0x24, 0x22
- .byte 0x14, 0x1B, 0x10
- .byte 0x21, 0x06, 0x28
- .byte 0x25, 0x34, 0x10
- .byte 0x2E, 0x0E, 0x14
- .byte 0x3C, 0x3E, 0x25
- .byte 0x16, 0x06, 0x30
- .byte 0x0B, 0x04, 0x1F
- .byte 0x3E, 0x02, 0x24
- .byte 0x0C, 0x17, 0x25
- .byte 0x2B, 0x3C, 0x2D
- .byte 0x15, 0x36, 0x33
- .byte 0x18, 0x23, 0x2A
- .byte 0x1D, 0x10, 0x2A
- .byte 0x35, 0x17, 0x28
- .byte 0x00, 0x37, 0x24
- .byte 0x0A, 0x3B, 0x15
- .byte 0x1D, 0x0B, 0x1F
- .byte 0x3C, 0x31, 0x25
- .byte 0x1D, 0x0F, 0x1D
- .byte 0x20, 0x13, 0x34
- .byte 0x11, 0x2B, 0x2E
- .byte 0x23, 0x0C, 0x2E
- .byte 0x24, 0x02, 0x14
- .byte 0x31, 0x16, 0x19
- .byte 0x0E, 0x23, 0x35
- .byte 0x1A, 0x10, 0x16
- .byte 0x14, 0x04, 0x19
- .byte 0x2D, 0x27, 0x37
- .byte 0x33, 0x02, 0x31
- .byte 0x02, 0x04, 0x16
- .byte 0x0D, 0x22, 0x25
- .byte 0x25, 0x00, 0x16
- .byte 0x2A, 0x3F, 0x26
- .byte 0x20, 0x0C, 0x12
- .byte 0x2F, 0x2E, 0x35
- .byte 0x1B, 0x0D, 0x22
- .byte 0x1E, 0x01, 0x34
- .byte 0x05, 0x22, 0x21
- .byte 0x34, 0x2A, 0x32
- .byte 0x0B, 0x09, 0x1D
- .byte 0x3F, 0x32, 0x2F
- .byte 0x3D, 0x18, 0x2D
- .byte 0x0B, 0x38, 0x36
- .byte 0x39, 0x17, 0x28
- .byte 0x34, 0x04, 0x24
- .byte 0x36, 0x0E, 0x2A
- .byte 0x38, 0x01, 0x14
- .byte 0x3C, 0x24, 0x22
- .byte 0x21, 0x03, 0x18
- .byte 0x32, 0x2F, 0x12
- .byte 0x29, 0x24, 0x31
- .byte 0x0A, 0x3B, 0x12
- .byte 0x1A, 0x1C, 0x20
- .byte 0x30, 0x31, 0x1B
- .byte 0x1A, 0x21, 0x10
- .byte 0x05, 0x29, 0x10
- .byte 0x26, 0x2D, 0x13
- .byte 0x16, 0x0C, 0x1D
- .byte 0x2B, 0x06, 0x1B
- .byte 0x06, 0x12, 0x14
- .byte 0x38, 0x0F, 0x35
- .byte 0x23, 0x3A, 0x2C
- .byte 0x00, 0x19, 0x33
- .byte 0x29, 0x14, 0x2D
- .byte 0x2A, 0x21, 0x29
- .byte 0x14, 0x31, 0x14
- .byte 0x1A, 0x06, 0x1E
- .byte 0x18, 0x1B, 0x28
- .byte 0x3B, 0x16, 0x29
- .byte 0x15, 0x1E, 0x12
- .byte 0x34, 0x0A, 0x14
- .byte 0x1B, 0x05, 0x27
- .byte 0x0B, 0x01, 0x26
- .byte 0x2A, 0x22, 0x35
- .byte 0x21, 0x20, 0x18
- .byte 0x20, 0x37, 0x17
- .byte 0x14, 0x1F, 0x11
- .byte 0x1D, 0x11, 0x25
- .byte 0x24, 0x2B, 0x2F
- .byte 0x07, 0x3F, 0x1F
- .byte 0x2C, 0x25, 0x25
- .byte 0x2A, 0x29, 0x18
- .byte 0x11, 0x24, 0x28
- .byte 0x31, 0x2C, 0x2A
- .byte 0x39, 0x0B, 0x26
- .byte 0x28, 0x10, 0x26
- .byte 0x22, 0x06, 0x16
- .byte 0x09, 0x2C, 0x13
- .byte 0x34, 0x19, 0x15
- .byte 0x3A, 0x12, 0x21
- .byte 0x1D, 0x38, 0x23
- .byte 0x12, 0x25, 0x24
- .byte 0x21, 0x30, 0x12
- .byte 0x37, 0x1A, 0x12
- .byte 0x24, 0x3B, 0x25
- .byte 0x32, 0x15, 0x23
- .byte 0x0D, 0x1A, 0x10
- .byte 0x16, 0x2E, 0x26
- .byte 0x1D, 0x14, 0x16
- .byte 0x3E, 0x2E, 0x1F
- .byte 0x0A, 0x16, 0x10
- .byte 0x1D, 0x30, 0x2B
- .byte 0x04, 0x3A, 0x19
- .byte 0x08, 0x2D, 0x2E
- .byte 0x28, 0x1E, 0x33
- .byte 0x0A, 0x12, 0x2E
- .byte 0x0D, 0x03, 0x2F
- .byte 0x26, 0x3A, 0x1E
- .byte 0x35, 0x3B, 0x2A
- .byte 0x03, 0x1A, 0x18
- .byte 0x3F, 0x0B, 0x27
- .byte 0x04, 0x05, 0x34
- .byte 0x36, 0x0B, 0x27
- .byte 0x3B, 0x17, 0x11
- .byte 0x0D, 0x27, 0x26
- .byte 0x2C, 0x1F, 0x20
- .byte 0x26, 0x10, 0x20
- .byte 0x25, 0x23, 0x2D
- .byte 0x37, 0x09, 0x13
- .byte 0x14, 0x17, 0x2D
- .byte 0x2E, 0x3D, 0x23
- .byte 0x1D, 0x1A, 0x1F
- .byte 0x21, 0x33, 0x2E
- .byte 0x28, 0x17, 0x13
- .byte 0x26, 0x3C, 0x36
- .byte 0x14, 0x1A, 0x33
- .byte 0x32, 0x20, 0x2B
- .byte 0x19, 0x3E, 0x20
- .byte 0x0C, 0x02, 0x2D
- .byte 0x3C, 0x3C, 0x2A
- .byte 0x30, 0x30, 0x28
- .byte 0x25, 0x3F, 0x1E
- .byte 0x03, 0x17, 0x1E
- .byte 0x35, 0x11, 0x1C
- .byte 0x1B, 0x14, 0x2A
- .byte 0x28, 0x3A, 0x23
- .byte 0x0E, 0x1F, 0x12
- .byte 0x36, 0x21, 0x20
- .byte 0x07, 0x3B, 0x10
- .byte 0x23, 0x19, 0x34
- .byte 0x0D, 0x2E, 0x18
- .byte 0x3F, 0x20, 0x25
- .byte 0x3E, 0x3B, 0x15
- .byte 0x0B, 0x2E, 0x12
- .byte 0x37, 0x0B, 0x23
- .byte 0x3D, 0x32, 0x1F
- .byte 0x16, 0x03, 0x27
- .byte 0x14, 0x0C, 0x21
- .byte 0x18, 0x03, 0x30
- .byte 0x3E, 0x21, 0x13
- .byte 0x0F, 0x00, 0x32
- .byte 0x3F, 0x23, 0x16
- .byte 0x0E, 0x31, 0x1D
- .byte 0x18, 0x1C, 0x1D
- .byte 0x30, 0x0E, 0x1E
- .byte 0x21, 0x20, 0x23
- .byte 0x3F, 0x0C, 0x1E
- .byte 0x14, 0x33, 0x22
- .byte 0x22, 0x21, 0x15
- .byte 0x36, 0x05, 0x1E
- .byte 0x1D, 0x31, 0x14
- .byte 0x20, 0x11, 0x37
- .byte 0x0D, 0x33, 0x19
- .byte 0x25, 0x05, 0x36
- .byte 0x1E, 0x31, 0x20
- .byte 0x35, 0x3A, 0x2F
- .byte 0x32, 0x2F, 0x30
- .byte 0x14, 0x23, 0x2D
- .byte 0x35, 0x1E, 0x29
- .byte 0x05, 0x05, 0x1B
- .byte 0x09, 0x1F, 0x26
- .byte 0x2F, 0x0B, 0x15
- .byte 0x15, 0x11, 0x13
- .byte 0x29, 0x1B, 0x18
- .byte 0x1C, 0x13, 0x35
- .byte 0x34, 0x31, 0x23
- .byte 0x27, 0x3F, 0x2F
- .byte 0x09, 0x30, 0x19
- .byte 0x23, 0x12, 0x34
- .byte 0x02, 0x2A, 0x21
- .byte 0x09, 0x3C, 0x1D
- .byte 0x0C, 0x02, 0x10
- .byte 0x22, 0x05, 0x17
- .byte 0x22, 0x08, 0x1B
- .byte 0x0A, 0x0F, 0x15
- .byte 0x02, 0x11, 0x13
- .byte 0x01, 0x21, 0x22
- .byte 0x16, 0x39, 0x33
- .byte 0x24, 0x38, 0x34
- .byte 0x0F, 0x1E, 0x2B
- .byte 0x2B, 0x15, 0x15
- .byte 0x20, 0x22, 0x2E
- .byte 0x3A, 0x3F, 0x31
- .byte 0x1A, 0x27, 0x2B
- .byte 0x29, 0x34, 0x14
- .byte 0x16, 0x39, 0x2F
- .byte 0x13, 0x3E, 0x16
- .byte 0x36, 0x21, 0x30
- .byte 0x00, 0x24, 0x2B
- .byte 0x24, 0x21, 0x30
- .byte 0x15, 0x31, 0x13
- .byte 0x10, 0x37, 0x24
- .byte 0x08, 0x07, 0x23
- .byte 0x21, 0x09, 0x25
- .byte 0x05, 0x3C, 0x32
- .byte 0x19, 0x03, 0x25
- .byte 0x0F, 0x29, 0x2B
- .byte 0x16, 0x07, 0x13
- .byte 0x3E, 0x3D, 0x25
- .byte 0x36, 0x0B, 0x28
- .byte 0x2E, 0x2B, 0x16
- .byte 0x0C, 0x31, 0x11
- .byte 0x30, 0x13, 0x2D
- .byte 0x26, 0x3E, 0x37
- .byte 0x29, 0x2F, 0x2E
- .byte 0x15, 0x3D, 0x17
- .byte 0x1C, 0x2E, 0x21
- .byte 0x33, 0x2F, 0x10
- .byte 0x0D, 0x05, 0x1D
- .byte 0x1C, 0x1A, 0x12
- .byte 0x0E, 0x18, 0x37
- .byte 0x1B, 0x11, 0x14
- .byte 0x06, 0x14, 0x21
- .byte 0x31, 0x0E, 0x27
- .byte 0x1A, 0x03, 0x10
- .byte 0x00, 0x34, 0x31
- .byte 0x3F, 0x0B, 0x1D
- .byte 0x0F, 0x12, 0x1F
- .byte 0x1A, 0x15, 0x10
- .byte 0x0F, 0x00, 0x24
- .byte 0x3E, 0x0A, 0x2A
- .byte 0x30, 0x2B, 0x24
- .byte 0x26, 0x31, 0x10
- .byte 0x2D, 0x2F, 0x2F
- .byte 0x3F, 0x0C, 0x13
- .byte 0x12, 0x0B, 0x16
- .byte 0x15, 0x07, 0x1F
- .byte 0x28, 0x10, 0x32
- .byte 0x0F, 0x17, 0x15
- .byte 0x0B, 0x27, 0x33
- .byte 0x34, 0x1D, 0x10
- .byte 0x1C, 0x3A, 0x12
- .byte 0x2C, 0x27, 0x37
- .byte 0x0A, 0x1A, 0x32
- .byte 0x05, 0x1F, 0x21
- .byte 0x24, 0x0D, 0x1F
- .byte 0x1C, 0x17, 0x24
- .byte 0x2F, 0x3B, 0x32
- .byte 0x3B, 0x25, 0x10
- .byte 0x03, 0x2F, 0x21
- .byte 0x0C, 0x10, 0x23
- .byte 0x0E, 0x3A, 0x2C
- .byte 0x33, 0x03, 0x2C
- .byte 0x12, 0x06, 0x1C
- .byte 0x2A, 0x37, 0x30
- .byte 0x3F, 0x01, 0x1E
- .byte 0x35, 0x16, 0x37
- .byte 0x2C, 0x32, 0x35
- .byte 0x05, 0x11, 0x22
- .byte 0x29, 0x09, 0x20
- .byte 0x2B, 0x0D, 0x1F
- .byte 0x18, 0x0D, 0x20
- .byte 0x23, 0x39, 0x16
- .byte 0x0F, 0x3A, 0x18
- .byte 0x21, 0x35, 0x2B
- .byte 0x36, 0x26, 0x2B
- .byte 0x23, 0x05, 0x2F
- .byte 0x1B, 0x08, 0x17
- .byte 0x3E, 0x09, 0x16
- .byte 0x2D, 0x3A, 0x37
- .byte 0x15, 0x35, 0x35
- .byte 0x29, 0x0A, 0x12
- .byte 0x02, 0x39, 0x1F
- .byte 0x14, 0x34, 0x33
- .byte 0x17, 0x1D, 0x18
- .byte 0x16, 0x1D, 0x1A
- .byte 0x01, 0x39, 0x22
- .byte 0x1E, 0x27, 0x36
- .byte 0x32, 0x14, 0x26
- .byte 0x0A, 0x39, 0x36
- .byte 0x1F, 0x0D, 0x1E
- .byte 0x0B, 0x0A, 0x19
- .byte 0x35, 0x1D, 0x34
- .byte 0x03, 0x12, 0x16
- .byte 0x0C, 0x13, 0x2E
- .byte 0x0C, 0x34, 0x1E
- .byte 0x10, 0x14, 0x1E
- .byte 0x23, 0x32, 0x27
- .byte 0x02, 0x10, 0x29
- .byte 0x35, 0x18, 0x33
- .byte 0x33, 0x1D, 0x1A
- .byte 0x3C, 0x15, 0x23
- .byte 0x3E, 0x3F, 0x22
- .byte 0x2A, 0x02, 0x2C
- .byte 0x28, 0x0A, 0x2F
- .byte 0x1A, 0x06, 0x35
- .byte 0x3C, 0x17, 0x2B
- .byte 0x03, 0x12, 0x17
- .byte 0x2F, 0x0A, 0x26
- .byte 0x12, 0x38, 0x11
- .byte 0x36, 0x1B, 0x23
- .byte 0x01, 0x39, 0x35
- .byte 0x19, 0x19, 0x17
- .byte 0x09, 0x28, 0x22
- .byte 0x1E, 0x27, 0x2C
- .byte 0x35, 0x33, 0x2C
- .byte 0x27, 0x25, 0x31
- .byte 0x06, 0x31, 0x2D
- .byte 0x1A, 0x39, 0x28
- .byte 0x2D, 0x04, 0x1E
- .byte 0x24, 0x3E, 0x1C
- .byte 0x3C, 0x30, 0x1B
- .byte 0x3F, 0x3E, 0x37
- .byte 0x22, 0x36, 0x11
- .byte 0x00, 0x01, 0x1C
- .byte 0x12, 0x1A, 0x10
- .byte 0x12, 0x1E, 0x2C
- .byte 0x1F, 0x12, 0x2A
- .byte 0x2F, 0x06, 0x19
- .byte 0x35, 0x1A, 0x18
- .byte 0x3B, 0x09, 0x36
- .byte 0x34, 0x1D, 0x13
- .byte 0x02, 0x07, 0x10
- .byte 0x20, 0x2F, 0x1D
- .byte 0x0B, 0x03, 0x33
- .byte 0x1C, 0x16, 0x31
- .byte 0x05, 0x13, 0x1B
- .byte 0x29, 0x06, 0x13
- .byte 0x30, 0x2D, 0x36
- .byte 0x2A, 0x2D, 0x2C
- .byte 0x19, 0x34, 0x1C
- .byte 0x0F, 0x15, 0x12
- .byte 0x36, 0x15, 0x2C
- .byte 0x3A, 0x06, 0x1C
- .byte 0x12, 0x1D, 0x26
- .byte 0x03, 0x38, 0x1D
- .byte 0x01, 0x01, 0x2D
- .byte 0x17, 0x2E, 0x10
- .byte 0x14, 0x17, 0x1C
- .byte 0x34, 0x0F, 0x28
- .byte 0x09, 0x37, 0x1B
- .byte 0x28, 0x1D, 0x26
- .byte 0x29, 0x2D, 0x36
- .byte 0x1E, 0x17, 0x28
- .byte 0x15, 0x0F, 0x1C
- .byte 0x20, 0x2D, 0x10
- .byte 0x27, 0x16, 0x2E
- .byte 0x14, 0x09, 0x12
- .byte 0x3B, 0x3D, 0x21
- .byte 0x25, 0x1A, 0x2C
- .byte 0x00, 0x22, 0x36
- .byte 0x0D, 0x30, 0x10
- .byte 0x17, 0x19, 0x1B
- .byte 0x00, 0x3B, 0x21
- .byte 0x2A, 0x28, 0x34
- .byte 0x2D, 0x0F, 0x16
- .byte 0x0A, 0x30, 0x28
- .byte 0x06, 0x00, 0x25
- .byte 0x31, 0x2E, 0x2A
- .byte 0x14, 0x33, 0x28
- .byte 0x36, 0x10, 0x2E
- .byte 0x05, 0x2E, 0x19
- .byte 0x19, 0x1A, 0x15
- .byte 0x2C, 0x14, 0x17
- .byte 0x37, 0x0F, 0x13
- .byte 0x32, 0x17, 0x1B
- .byte 0x39, 0x18, 0x32
- .byte 0x2E, 0x32, 0x1E
- .byte 0x24, 0x1D, 0x31
- .byte 0x12, 0x1D, 0x2B
- .byte 0x14, 0x0C, 0x27
- .byte 0x36, 0x2E, 0x32
- .byte 0x06, 0x0A, 0x1A
- .byte 0x28, 0x28, 0x20
- .byte 0x3A, 0x3A, 0x17
- .byte 0x08, 0x27, 0x36
- .byte 0x18, 0x1A, 0x10
- .byte 0x1E, 0x26, 0x1B
- .byte 0x1F, 0x33, 0x1F
- .byte 0x21, 0x17, 0x2F
- .byte 0x01, 0x08, 0x20
- .byte 0x35, 0x03, 0x19
- .byte 0x3B, 0x02, 0x20
- .byte 0x02, 0x2D, 0x23
- .byte 0x0E, 0x17, 0x32
- .byte 0x31, 0x29, 0x11
- .byte 0x22, 0x17, 0x22
- .byte 0x3A, 0x2C, 0x23
- .byte 0x34, 0x20, 0x18
- .byte 0x00, 0x3A, 0x22
- .byte 0x25, 0x33, 0x21
- .byte 0x33, 0x04, 0x27
- .byte 0x04, 0x18, 0x32
- .byte 0x2C, 0x0C, 0x2F
- .byte 0x28, 0x14, 0x2C
- .byte 0x3F, 0x30, 0x2B
- .byte 0x30, 0x21, 0x1D
- .byte 0x01, 0x25, 0x32
- .byte 0x05, 0x23, 0x34
- .byte 0x24, 0x10, 0x30
- .byte 0x3D, 0x14, 0x1B
- .byte 0x3F, 0x38, 0x2F
- .byte 0x22, 0x1B, 0x32
- .byte 0x25, 0x07, 0x37
- .byte 0x0A, 0x0C, 0x1D
- .byte 0x03, 0x1E, 0x1A
- .byte 0x0F, 0x3C, 0x12
- .byte 0x11, 0x18, 0x1D
- .byte 0x00, 0x35, 0x2F
- .byte 0x32, 0x18, 0x14
- .byte 0x23, 0x30, 0x1B
- .byte 0x11, 0x3D, 0x12
- .byte 0x1A, 0x16, 0x35
- .byte 0x28, 0x05, 0x24
- .byte 0x17, 0x3D, 0x37
- .byte 0x2E, 0x09, 0x2E
- .byte 0x18, 0x1D, 0x17
- .byte 0x20, 0x1F, 0x18
- .byte 0x23, 0x2C, 0x2F
- .byte 0x20, 0x3F, 0x16
- .byte 0x3F, 0x29, 0x2E
- .byte 0x23, 0x3B, 0x29
- .byte 0x18, 0x39, 0x13
- .byte 0x1E, 0x32, 0x35
- .byte 0x14, 0x1D, 0x2A
- .byte 0x35, 0x01, 0x1D
- .byte 0x3E, 0x3B, 0x1E
- .byte 0x22, 0x1E, 0x16
- .byte 0x18, 0x22, 0x12
- .byte 0x3E, 0x29, 0x33
- .byte 0x2F, 0x14, 0x19
- .byte 0x3B, 0x07, 0x15
- .byte 0x06, 0x3D, 0x29
- .byte 0x35, 0x37, 0x23
- .byte 0x34, 0x1D, 0x2D
- .byte 0x18, 0x12, 0x1B
- .byte 0x0B, 0x13, 0x24
- .byte 0x13, 0x38, 0x1C
- .byte 0x1F, 0x0B, 0x1B
- .byte 0x13, 0x21, 0x1C
- .byte 0x06, 0x39, 0x32
- .byte 0x37, 0x3D, 0x26
- .byte 0x29, 0x26, 0x15
- .byte 0x3C, 0x33, 0x27
- .byte 0x00, 0x01, 0x2E
- .byte 0x15, 0x18, 0x31
- .byte 0x0D, 0x2C, 0x13
- .byte 0x27, 0x3B, 0x20
- .byte 0x2D, 0x01, 0x26
- .byte 0x23, 0x15, 0x30
- .byte 0x24, 0x00, 0x17
- .byte 0x37, 0x3F, 0x33
- .byte 0x25, 0x24, 0x31
- .byte 0x06, 0x3B, 0x37
- .byte 0x03, 0x18, 0x1A
- .byte 0x2C, 0x34, 0x14
- .byte 0x1D, 0x36, 0x18
- .byte 0x3A, 0x04, 0x23
- .byte 0x12, 0x26, 0x15
- .byte 0x2B, 0x19, 0x1A
- .byte 0x29, 0x2C, 0x36
- .byte 0x01, 0x19, 0x1D
- .byte 0x2F, 0x06, 0x2B
- .byte 0x0C, 0x12, 0x26
- .byte 0x36, 0x32, 0x1D
- .byte 0x0D, 0x12, 0x28
- .byte 0x03, 0x28, 0x13
- .byte 0x29, 0x06, 0x17
- .byte 0x03, 0x38, 0x21
- .byte 0x30, 0x2C, 0x10
- .byte 0x22, 0x00, 0x28
- .byte 0x24, 0x3B, 0x1C
- .byte 0x20, 0x3E, 0x13
- .byte 0x02, 0x0C, 0x19
- .byte 0x29, 0x2C, 0x1A
- .byte 0x39, 0x30, 0x22
- .byte 0x2A, 0x1F, 0x22
- .byte 0x14, 0x34, 0x2C
- .byte 0x14, 0x25, 0x1B
- .byte 0x06, 0x3B, 0x15
- .byte 0x06, 0x1C, 0x13
- .byte 0x15, 0x03, 0x18
- .byte 0x1E, 0x2A, 0x1B
- .byte 0x17, 0x25, 0x2F
- .byte 0x1C, 0x29, 0x2E
- .byte 0x02, 0x32, 0x1E
- .byte 0x1D, 0x28, 0x35
- .byte 0x36, 0x03, 0x34
- .byte 0x16, 0x3D, 0x2A
- .byte 0x12, 0x0D, 0x13
- .byte 0x1D, 0x2D, 0x21
- .byte 0x32, 0x17, 0x2E
- .byte 0x1A, 0x15, 0x26
- .byte 0x22, 0x2F, 0x15
- .byte 0x3C, 0x0E, 0x20
- .byte 0x2F, 0x27, 0x13
- .byte 0x04, 0x09, 0x32
- .byte 0x1E, 0x01, 0x34
- .byte 0x06, 0x16, 0x1E
- .byte 0x2E, 0x1B, 0x1C
- .byte 0x28, 0x13, 0x2A
- .byte 0x30, 0x34, 0x12
- .byte 0x12, 0x32, 0x18
- .byte 0x1D, 0x1D, 0x35
- .byte 0x07, 0x1C, 0x16
- .byte 0x2D, 0x3D, 0x35
- .byte 0x1C, 0x1B, 0x24
- .byte 0x21, 0x2D, 0x1E
- .byte 0x10, 0x09, 0x14
- .byte 0x3D, 0x11, 0x12
- .byte 0x25, 0x02, 0x26
- .byte 0x23, 0x02, 0x19
- .byte 0x19, 0x05, 0x14
- .byte 0x0B, 0x21, 0x1A
- .byte 0x09, 0x02, 0x2C
- .byte 0x18, 0x28, 0x2D
- .byte 0x1E, 0x10, 0x12
- .byte 0x2E, 0x18, 0x2E
- .byte 0x1F, 0x02, 0x2C
- .byte 0x14, 0x17, 0x24
- .byte 0x39, 0x08, 0x32
- .byte 0x16, 0x14, 0x22
- .byte 0x16, 0x28, 0x21
- .byte 0x11, 0x10, 0x2C
- .byte 0x23, 0x36, 0x2B
- .byte 0x39, 0x21, 0x26
- .byte 0x0E, 0x06, 0x2D
- .byte 0x3C, 0x3E, 0x26
- .byte 0x2A, 0x1B, 0x1F
- .byte 0x00, 0x3C, 0x33
- .byte 0x35, 0x3F, 0x14
- .byte 0x00, 0x0B, 0x10
- .byte 0x34, 0x3C, 0x17
- .byte 0x2D, 0x07, 0x1F
- .byte 0x24, 0x39, 0x27
- .byte 0x16, 0x00, 0x1D
- .byte 0x33, 0x2B, 0x1E
- .byte 0x0F, 0x08, 0x31
- .byte 0x3A, 0x09, 0x13
- .byte 0x0C, 0x21, 0x1C
- .byte 0x2A, 0x17, 0x34
- .byte 0x29, 0x27, 0x10
- .byte 0x37, 0x1B, 0x18
- .byte 0x15, 0x08, 0x2F
- .byte 0x1F, 0x16, 0x12
- .byte 0x1F, 0x28, 0x34
- .byte 0x1C, 0x20, 0x22
- .byte 0x12, 0x01, 0x12
- .byte 0x21, 0x31, 0x10
- .byte 0x22, 0x26, 0x1E
- .byte 0x01, 0x3D, 0x11
- .byte 0x1E, 0x27, 0x25
- .byte 0x3D, 0x30, 0x24
- .byte 0x1D, 0x11, 0x22
- .byte 0x36, 0x30, 0x16
- .byte 0x1F, 0x3E, 0x2A
- .byte 0x3C, 0x27, 0x1B
- .byte 0x1F, 0x29, 0x10
- .byte 0x1E, 0x05, 0x2A
- .byte 0x0A, 0x10, 0x14
- .byte 0x1F, 0x00, 0x2E
- .byte 0x0B, 0x3B, 0x18
- .byte 0x0A, 0x39, 0x30
- .byte 0x37, 0x0B, 0x1F
- .byte 0x1D, 0x0A, 0x29
- .byte 0x3E, 0x1C, 0x33
- .byte 0x13, 0x2E, 0x28
- .byte 0x27, 0x1B, 0x1E
- .byte 0x1D, 0x02, 0x1C
- .byte 0x01, 0x25, 0x14
- .byte 0x3A, 0x10, 0x1C
- .byte 0x12, 0x05, 0x2A
- .byte 0x30, 0x20, 0x26
- .byte 0x2F, 0x2E, 0x2E
- .byte 0x03, 0x07, 0x24
- .byte 0x36, 0x04, 0x2B
- .byte 0x11, 0x25, 0x2D
- .byte 0x28, 0x0E, 0x2E
- .byte 0x0F, 0x1D, 0x15
- .byte 0x1C, 0x28, 0x30
- .byte 0x1F, 0x23, 0x26
- .byte 0x36, 0x12, 0x37
- .byte 0x3A, 0x31, 0x10
- .byte 0x2C, 0x2C, 0x2F
- .byte 0x1A, 0x0D, 0x15
- .byte 0x3F, 0x3C, 0x32
- .byte 0x35, 0x1C, 0x16
- .byte 0x33, 0x16, 0x28
- .byte 0x1D, 0x3F, 0x21
- .byte 0x2C, 0x3E, 0x2B
- .byte 0x24, 0x23, 0x2F
- .byte 0x32, 0x15, 0x2A
- .byte 0x1B, 0x10, 0x35
- .byte 0x18, 0x37, 0x10
- .byte 0x3B, 0x1E, 0x11
- .byte 0x2B, 0x16, 0x24
- .byte 0x1D, 0x16, 0x26
- .byte 0x3C, 0x2D, 0x11
- .byte 0x15, 0x28, 0x28
- .byte 0x27, 0x27, 0x27
- .byte 0x3B, 0x3A, 0x16
- .byte 0x1A, 0x0C, 0x1A
- .byte 0x15, 0x08, 0x25
- .byte 0x0B, 0x10, 0x22
- .byte 0x1A, 0x3E, 0x17
- .byte 0x28, 0x1F, 0x1E
- .byte 0x01, 0x1E, 0x1E
- .byte 0x1C, 0x2F, 0x10
- .byte 0x25, 0x0B, 0x34
- .byte 0x3E, 0x0C, 0x1A
- .byte 0x1B, 0x10, 0x2A
- .byte 0x0F, 0x14, 0x17
- .byte 0x0F, 0x3F, 0x17
- .byte 0x03, 0x15, 0x1F
- .byte 0x02, 0x36, 0x17
- .byte 0x15, 0x1D, 0x18
- .byte 0x08, 0x36, 0x10
- .byte 0x14, 0x0D, 0x2B
- .byte 0x0A, 0x05, 0x1D
- .byte 0x26, 0x12, 0x1E
- .byte 0x3E, 0x18, 0x19
- .byte 0x36, 0x18, 0x37
- .byte 0x17, 0x39, 0x2E
- .byte 0x0D, 0x04, 0x19
- .byte 0x16, 0x22, 0x15
- .byte 0x3E, 0x26, 0x1F
- .byte 0x00, 0x06, 0x17
- .byte 0x33, 0x22, 0x1D
- .byte 0x2B, 0x39, 0x2B
- .byte 0x3E, 0x31, 0x1C
- .byte 0x22, 0x3F, 0x13
- .byte 0x30, 0x1C, 0x31
- .byte 0x07, 0x2B, 0x14
- .byte 0x32, 0x35, 0x1E
- .byte 0x02, 0x07, 0x20
- .byte 0x0F, 0x3B, 0x11
- .byte 0x20, 0x07, 0x12
- .byte 0x2A, 0x30, 0x1D
- .byte 0x28, 0x38, 0x36
- .byte 0x20, 0x01, 0x17
- .byte 0x15, 0x20, 0x21
- .byte 0x3A, 0x1B, 0x1E
- .byte 0x38, 0x12, 0x24
- .byte 0x03, 0x3E, 0x1F
- .byte 0x29, 0x1D, 0x13
- .byte 0x20, 0x27, 0x19
- .byte 0x12, 0x25, 0x20
- .byte 0x32, 0x33, 0x2B
- .byte 0x3F, 0x05, 0x31
- .byte 0x35, 0x3C, 0x2D
- .byte 0x2D, 0x02, 0x2E
- .byte 0x10, 0x2A, 0x16
- .byte 0x17, 0x08, 0x31
- .byte 0x17, 0x2E, 0x2B
- .byte 0x30, 0x1E, 0x15
- .byte 0x31, 0x15, 0x26
- .byte 0x08, 0x10, 0x33
- .byte 0x15, 0x01, 0x27
- .byte 0x12, 0x07, 0x2F
- .byte 0x29, 0x27, 0x34
- .byte 0x3F, 0x08, 0x31
- .byte 0x1C, 0x20, 0x1A
- .byte 0x33, 0x0C, 0x13
- .byte 0x18, 0x31, 0x24
- .byte 0x37, 0x2D, 0x2E
- .byte 0x21, 0x18, 0x24
- .byte 0x3A, 0x27, 0x31
- .byte 0x35, 0x3E, 0x30
- .byte 0x3A, 0x14, 0x33
- .byte 0x0F, 0x1A, 0x2D
- .byte 0x30, 0x2E, 0x11
- .byte 0x1A, 0x31, 0x1D
- .byte 0x17, 0x3C, 0x18
- .byte 0x33, 0x31, 0x23
- .byte 0x1D, 0x39, 0x2D
- .byte 0x10, 0x1D, 0x2F
- .byte 0x24, 0x15, 0x1C
- .byte 0x25, 0x01, 0x2B
- .byte 0x22, 0x16, 0x2E
- .byte 0x1B, 0x25, 0x35
- .byte 0x37, 0x10, 0x26
- .byte 0x39, 0x01, 0x36
- .byte 0x17, 0x2B, 0x14
- .byte 0x09, 0x16, 0x17
- .byte 0x20, 0x28, 0x23
- .byte 0x26, 0x3A, 0x26
- .byte 0x27, 0x2A, 0x24
- .byte 0x36, 0x02, 0x2C
- .byte 0x29, 0x30, 0x35
- .byte 0x36, 0x01, 0x1F
- .byte 0x28, 0x3B, 0x1D
- .byte 0x23, 0x1E, 0x2D
- .byte 0x11, 0x1E, 0x2C
- .byte 0x2F, 0x32, 0x19
- .byte 0x3F, 0x26, 0x31
- .byte 0x38, 0x1E, 0x17
- .byte 0x05, 0x18, 0x2E
- .byte 0x00, 0x2E, 0x12
- .byte 0x34, 0x3F, 0x34
- .byte 0x16, 0x10, 0x29
- .byte 0x20, 0x3D, 0x36
- .byte 0x2F, 0x16, 0x25
- .byte 0x12, 0x17, 0x10
- .byte 0x21, 0x37, 0x35
- .byte 0x25, 0x37, 0x2D
- .byte 0x01, 0x08, 0x27
- .byte 0x03, 0x1F, 0x29
- .byte 0x0D, 0x2A, 0x16
- .byte 0x3A, 0x3F, 0x33
- .byte 0x2B, 0x19, 0x1D
- .byte 0x2A, 0x1F, 0x29
- .byte 0x28, 0x2C, 0x10
- .byte 0x28, 0x30, 0x10
- .byte 0x39, 0x14, 0x1B
- .byte 0x00, 0x18, 0x21
- .byte 0x28, 0x0C, 0x37
- .byte 0x11, 0x10, 0x11
- .byte 0x3C, 0x33, 0x32
- .byte 0x33, 0x36, 0x1A
- .byte 0x36, 0x00, 0x1C
- .byte 0x31, 0x1B, 0x1D
- .byte 0x38, 0x1D, 0x10
- .byte 0x3C, 0x39, 0x27
- .byte 0x3A, 0x3F, 0x14
- .byte 0x19, 0x12, 0x14
- .byte 0x0D, 0x1F, 0x18
- .byte 0x00, 0x25, 0x18
- .byte 0x28, 0x1C, 0x32
- .byte 0x27, 0x03, 0x1A
- .byte 0x26, 0x2D, 0x2A
- .byte 0x29, 0x28, 0x27
- .byte 0x0A, 0x2A, 0x18
- .byte 0x0A, 0x1A, 0x30
- .byte 0x20, 0x1A, 0x2E
- .byte 0x06, 0x0B, 0x1D
- .byte 0x0F, 0x0C, 0x1C
- .byte 0x35, 0x28, 0x1C
- .byte 0x3D, 0x16, 0x23
- .byte 0x21, 0x1C, 0x31
- .byte 0x14, 0x1C, 0x2E
- .byte 0x22, 0x32, 0x35
- .byte 0x09, 0x29, 0x30
- .byte 0x20, 0x1A, 0x10
- .byte 0x31, 0x3F, 0x2C
- .byte 0x0A, 0x3D, 0x37
- .byte 0x0B, 0x2E, 0x2D
- .byte 0x1F, 0x22, 0x31
- .byte 0x06, 0x07, 0x29
- .byte 0x22, 0x17, 0x2D
- .byte 0x30, 0x11, 0x18
- .byte 0x0C, 0x19, 0x15
- .byte 0x07, 0x0A, 0x34
- .byte 0x18, 0x29, 0x27
- .byte 0x33, 0x0C, 0x30
- .byte 0x03, 0x1A, 0x37
- .byte 0x06, 0x01, 0x2D
- .byte 0x0F, 0x3B, 0x2B
- .byte 0x11, 0x1F, 0x37
- .byte 0x2B, 0x21, 0x36
- .byte 0x3F, 0x23, 0x17
- .byte 0x17, 0x07, 0x2B
- .byte 0x2B, 0x0E, 0x30
- .byte 0x11, 0x39, 0x1D
- .byte 0x29, 0x03, 0x33
- .byte 0x30, 0x03, 0x2F
- .byte 0x3C, 0x20, 0x26
- .byte 0x03, 0x22, 0x14
- .byte 0x3A, 0x28, 0x35
- .byte 0x01, 0x28, 0x2B
- .byte 0x3E, 0x15, 0x18
- .byte 0x30, 0x07, 0x17
- .byte 0x3B, 0x2C, 0x30
- .byte 0x15, 0x07, 0x2C
- .byte 0x17, 0x27, 0x1D
- .byte 0x3F, 0x1E, 0x33
- .byte 0x0D, 0x17, 0x10
- .byte 0x15, 0x0E, 0x30
- .byte 0x09, 0x05, 0x30
- .byte 0x2D, 0x20, 0x15
- .byte 0x3C, 0x3D, 0x30
- .byte 0x0C, 0x17, 0x1C
- .byte 0x1A, 0x0D, 0x25
- .byte 0x2B, 0x2B, 0x2A
- .byte 0x02, 0x16, 0x2D
- .byte 0x17, 0x31, 0x17
- .byte 0x00, 0x08, 0x13
- .byte 0x37, 0x35, 0x21
- .byte 0x1E, 0x1C, 0x1F
- .byte 0x2B, 0x32, 0x1C
- .byte 0x10, 0x2A, 0x16
- .byte 0x3A, 0x33, 0x31
- .byte 0x17, 0x2B, 0x2A
- .byte 0x0C, 0x3D, 0x11
- .byte 0x28, 0x0A, 0x30
- .byte 0x23, 0x0A, 0x26
- .byte 0x0A, 0x14, 0x24
- .byte 0x0B, 0x0F, 0x30
- .byte 0x1B, 0x1E, 0x29
- .byte 0x02, 0x35, 0x28
- .byte 0x3B, 0x02, 0x14
- .byte 0x00, 0x0F, 0x35
- .byte 0x1C, 0x3C, 0x2E
- .byte 0x28, 0x38, 0x19
- .byte 0x1B, 0x11, 0x12
- .byte 0x09, 0x16, 0x10
- .byte 0x2E, 0x0D, 0x20
- .byte 0x3D, 0x04, 0x32
- .byte 0x16, 0x2C, 0x25
- .byte 0x02, 0x3D, 0x18
- .byte 0x0B, 0x13, 0x1C
- .byte 0x22, 0x2A, 0x1C
- .byte 0x20, 0x27, 0x22
- .byte 0x05, 0x26, 0x22
- .byte 0x12, 0x1D, 0x2C
- .byte 0x08, 0x05, 0x2E
- .byte 0x3F, 0x1C, 0x17
- .byte 0x24, 0x0D, 0x33
- .byte 0x36, 0x08, 0x24
- .byte 0x10, 0x22, 0x29
- .byte 0x1C, 0x0A, 0x11
- .byte 0x25, 0x0F, 0x10
- .byte 0x24, 0x38, 0x2F
- .byte 0x25, 0x32, 0x1E
- .byte 0x06, 0x2A, 0x29
- .byte 0x3E, 0x3A, 0x28
- .byte 0x34, 0x17, 0x33
- .byte 0x18, 0x33, 0x17
- .byte 0x07, 0x14, 0x1F
- .byte 0x11, 0x17, 0x20
- .byte 0x13, 0x0E, 0x14
- .byte 0x3B, 0x1C, 0x12
- .byte 0x2A, 0x13, 0x37
- .byte 0x2A, 0x35, 0x32
- .byte 0x30, 0x02, 0x25
- .byte 0x00, 0x07, 0x1F
- .byte 0x0C, 0x04, 0x2C
- .byte 0x37, 0x37, 0x30
- .byte 0x25, 0x12, 0x25
- .byte 0x12, 0x22, 0x21
- .byte 0x22, 0x35, 0x33
- .byte 0x07, 0x20, 0x2D
- .byte 0x27, 0x0E, 0x30
- .byte 0x34, 0x19, 0x1A
- .byte 0x0A, 0x3C, 0x25
- .byte 0x07, 0x1D, 0x2B
- .byte 0x31, 0x3A, 0x12
- .byte 0x1A, 0x3D, 0x37
- .byte 0x16, 0x15, 0x16
- .byte 0x39, 0x13, 0x15
- .byte 0x2D, 0x03, 0x2E
- .byte 0x06, 0x39, 0x2C
- .byte 0x16, 0x00, 0x13
- .byte 0x35, 0x2A, 0x35
- .byte 0x24, 0x01, 0x18
- .byte 0x24, 0x37, 0x28
- .byte 0x25, 0x1B, 0x34
- .byte 0x25, 0x19, 0x17
- .byte 0x27, 0x2F, 0x1B
- .byte 0x27, 0x0D, 0x10
- .byte 0x36, 0x3C, 0x30
- .byte 0x3C, 0x33, 0x23
- .byte 0x3E, 0x27, 0x1E
- .byte 0x25, 0x2D, 0x29
- .byte 0x1F, 0x12, 0x21
- .byte 0x37, 0x32, 0x1F
- .byte 0x11, 0x21, 0x35
- .byte 0x30, 0x0C, 0x19
- .byte 0x25, 0x3D, 0x26
- .byte 0x17, 0x02, 0x1D
- .byte 0x14, 0x2E, 0x11
- .byte 0x38, 0x13, 0x30
- .byte 0x0A, 0x2B, 0x20
- .byte 0x1E, 0x10, 0x15
- .byte 0x37, 0x30, 0x2E
- .byte 0x1E, 0x04, 0x2C
- .byte 0x14, 0x34, 0x19
- .byte 0x08, 0x14, 0x18
- .byte 0x0E, 0x1C, 0x30
- .byte 0x1A, 0x2E, 0x1B
- .byte 0x1F, 0x39, 0x31
- .byte 0x0C, 0x1C, 0x28
- .byte 0x3E, 0x33, 0x23
- .byte 0x0F, 0x13, 0x16
- .byte 0x25, 0x39, 0x2F
- .byte 0x14, 0x1B, 0x1A
- .byte 0x28, 0x3E, 0x21
- .byte 0x2D, 0x19, 0x11
- .byte 0x0C, 0x34, 0x32
- .byte 0x39, 0x31, 0x19
- .byte 0x1A, 0x08, 0x34
- .byte 0x09, 0x2F, 0x11
- .byte 0x30, 0x04, 0x1C
- .byte 0x02, 0x3B, 0x1B
- .byte 0x33, 0x21, 0x33
- .byte 0x38, 0x02, 0x1A
- .byte 0x31, 0x38, 0x32
- .byte 0x1F, 0x1D, 0x16
- .byte 0x17, 0x10, 0x1B
- .byte 0x32, 0x20, 0x17
- .byte 0x00, 0x33, 0x12
- .byte 0x21, 0x0F, 0x27
- .byte 0x14, 0x19, 0x27
- .byte 0x24, 0x2C, 0x37
- .byte 0x25, 0x05, 0x2F
- .byte 0x3D, 0x25, 0x11
- .byte 0x12, 0x30, 0x1A
- .byte 0x16, 0x03, 0x1A
- .byte 0x14, 0x09, 0x13
- .byte 0x02, 0x23, 0x22
- .byte 0x01, 0x3C, 0x10
- .byte 0x3F, 0x2D, 0x23
- .byte 0x31, 0x3F, 0x23
- .byte 0x17, 0x00, 0x33
- .byte 0x3F, 0x0F, 0x2F
- .byte 0x26, 0x07, 0x15
- .byte 0x21, 0x2B, 0x2A
- .byte 0x38, 0x39, 0x1E
- .byte 0x09, 0x25, 0x2B
- .byte 0x3B, 0x30, 0x25
- .byte 0x12, 0x2D, 0x13
- .byte 0x32, 0x19, 0x28
- .byte 0x24, 0x1C, 0x2D
- .byte 0x35, 0x32, 0x26
- .byte 0x0D, 0x23, 0x1E
- .byte 0x1D, 0x07, 0x21
- .byte 0x0B, 0x34, 0x17
- .byte 0x2D, 0x32, 0x32
- .byte 0x3A, 0x3C, 0x35
- .byte 0x1A, 0x10, 0x33
- .byte 0x1A, 0x07, 0x22
- .byte 0x3B, 0x1B, 0x2A
- .byte 0x33, 0x1F, 0x26
- .byte 0x0E, 0x35, 0x1A
- .byte 0x3B, 0x0A, 0x1C
- .byte 0x11, 0x07, 0x11
- .byte 0x0D, 0x3C, 0x2D
- .byte 0x1E, 0x37, 0x29
- .byte 0x11, 0x05, 0x12
- .byte 0x15, 0x2F, 0x1C
- .byte 0x24, 0x31, 0x16
- .byte 0x2B, 0x21, 0x1B
- .byte 0x23, 0x10, 0x31
- .byte 0x02, 0x14, 0x29
- .byte 0x26, 0x20, 0x16
- .byte 0x10, 0x17, 0x10
- .byte 0x0B, 0x0F, 0x33
- .byte 0x01, 0x2E, 0x14
- .byte 0x21, 0x0E, 0x37
- .byte 0x1A, 0x1D, 0x2F
- .byte 0x1E, 0x30, 0x24
- .byte 0x04, 0x14, 0x2D
- .byte 0x11, 0x00, 0x30
- .byte 0x08, 0x2A, 0x1D
- .byte 0x1D, 0x22, 0x21
- .byte 0x24, 0x2C, 0x37
- .byte 0x24, 0x11, 0x12
- .byte 0x04, 0x2E, 0x28
- .byte 0x1D, 0x18, 0x23
- .byte 0x3C, 0x16, 0x16
- .byte 0x10, 0x17, 0x31
- .byte 0x20, 0x21, 0x12
- .byte 0x33, 0x3E, 0x34
- .byte 0x06, 0x13, 0x13
- .byte 0x17, 0x38, 0x2B
- .byte 0x14, 0x0D, 0x15
- .byte 0x24, 0x3B, 0x2B
- .byte 0x34, 0x3B, 0x1E
- .byte 0x18, 0x07, 0x34
- .byte 0x37, 0x1D, 0x1F
- .byte 0x0B, 0x29, 0x20
- .byte 0x12, 0x1E, 0x1D
- .byte 0x1A, 0x24, 0x24
- .byte 0x3D, 0x28, 0x24
- .byte 0x0B, 0x12, 0x33
- .byte 0x1B, 0x3A, 0x22
- .byte 0x14, 0x13, 0x2A
- .byte 0x31, 0x38, 0x15
- .byte 0x37, 0x2B, 0x2E
- .byte 0x19, 0x1E, 0x2C
- .byte 0x3F, 0x1B, 0x2A
- .byte 0x33, 0x1F, 0x33
- .byte 0x3F, 0x15, 0x29
- .byte 0x01, 0x1E, 0x18
- .byte 0x1F, 0x22, 0x19
- .byte 0x33, 0x3C, 0x34
- .byte 0x1E, 0x12, 0x22
- .byte 0x0D, 0x37, 0x2C
- .byte 0x0F, 0x08, 0x31
- .byte 0x2E, 0x09, 0x36
- .byte 0x01, 0x05, 0x1E
- .byte 0x1C, 0x04, 0x1E
- .byte 0x0C, 0x01, 0x1C
- .byte 0x29, 0x28, 0x2F
- .byte 0x39, 0x2D, 0x14
- .byte 0x09, 0x22, 0x36
- .byte 0x04, 0x37, 0x37
- .byte 0x2D, 0x2F, 0x35
- .byte 0x24, 0x23, 0x1B
- .byte 0x08, 0x20, 0x32
- .byte 0x20, 0x1F, 0x34
- .byte 0x02, 0x31, 0x19
- .byte 0x18, 0x13, 0x36
- .byte 0x06, 0x2B, 0x1E
- .byte 0x0E, 0x1B, 0x10
- .byte 0x2F, 0x0E, 0x1C
- .byte 0x11, 0x38, 0x13
- .byte 0x01, 0x37, 0x19
- .byte 0x14, 0x11, 0x26
- .byte 0x31, 0x3D, 0x33
- .byte 0x1D, 0x1B, 0x34
- .byte 0x25, 0x31, 0x2F
- .byte 0x11, 0x0A, 0x2F
- .byte 0x39, 0x17, 0x1B
- .byte 0x05, 0x0E, 0x13
- .byte 0x29, 0x25, 0x22
- .byte 0x15, 0x0D, 0x20
- .byte 0x2B, 0x27, 0x21
- .byte 0x3E, 0x24, 0x27
- .byte 0x2A, 0x2B, 0x16
- .byte 0x24, 0x3D, 0x15
- .byte 0x15, 0x30, 0x31
- .byte 0x0F, 0x33, 0x24
- .byte 0x06, 0x16, 0x13
- .byte 0x06, 0x31, 0x10
- .byte 0x2E, 0x3F, 0x10
- .byte 0x05, 0x0D, 0x2F
- .byte 0x3C, 0x1F, 0x19
- .byte 0x12, 0x13, 0x24
- .byte 0x0F, 0x33, 0x36
- .byte 0x15, 0x3B, 0x33
- .byte 0x03, 0x0F, 0x2A
- .byte 0x3B, 0x3C, 0x2C
- .byte 0x36, 0x09, 0x29
- .byte 0x11, 0x3B, 0x27
- .byte 0x28, 0x2B, 0x31
- .byte 0x1A, 0x0E, 0x2F
- .byte 0x39, 0x2C, 0x31
- .byte 0x0E, 0x3C, 0x35
- .byte 0x2C, 0x24, 0x33
- .byte 0x3D, 0x11, 0x2B
- .byte 0x07, 0x3C, 0x37
- .byte 0x14, 0x18, 0x13
- .byte 0x1D, 0x3F, 0x2E
- .byte 0x30, 0x12, 0x25
- .byte 0x26, 0x1D, 0x11
- .byte 0x07, 0x11, 0x1E
- .byte 0x34, 0x01, 0x11
- .byte 0x0B, 0x39, 0x21
- .byte 0x29, 0x02, 0x29
- .byte 0x15, 0x10, 0x1A
- .byte 0x30, 0x1F, 0x35
- .byte 0x3C, 0x2B, 0x2A
- .byte 0x30, 0x3B, 0x36
- .byte 0x20, 0x1A, 0x23
- .byte 0x32, 0x24, 0x2B
- .byte 0x15, 0x20, 0x1C
- .byte 0x25, 0x3D, 0x36
- .byte 0x2D, 0x14, 0x31
- .byte 0x18, 0x23, 0x17
- .byte 0x18, 0x05, 0x13
- .byte 0x34, 0x30, 0x37
- .byte 0x0E, 0x39, 0x23
- .byte 0x1D, 0x1F, 0x17
- .byte 0x01, 0x15, 0x2F
- .byte 0x0B, 0x3E, 0x1B
- .byte 0x0D, 0x19, 0x2E
- .byte 0x31, 0x38, 0x1C
- .byte 0x15, 0x34, 0x15
- .byte 0x13, 0x19, 0x29
- .byte 0x19, 0x14, 0x27
- .byte 0x15, 0x18, 0x23
- .byte 0x29, 0x0C, 0x27
- .byte 0x2D, 0x0E, 0x17
- .byte 0x34, 0x18, 0x10
- .byte 0x3B, 0x1E, 0x29
- .byte 0x34, 0x2C, 0x22
- .byte 0x31, 0x08, 0x13
- .byte 0x1D, 0x18, 0x1A
- .byte 0x1C, 0x0B, 0x2A
- .byte 0x19, 0x1E, 0x1A
- .byte 0x23, 0x27, 0x17
- .byte 0x3B, 0x0E, 0x37
- .byte 0x19, 0x2B, 0x16
- .byte 0x2F, 0x08, 0x21
- .byte 0x37, 0x02, 0x20
- .byte 0x0B, 0x32, 0x30
- .byte 0x16, 0x05, 0x30
- .byte 0x13, 0x05, 0x1A
- .byte 0x07, 0x39, 0x19
- .byte 0x0C, 0x3B, 0x2A
- .byte 0x15, 0x05, 0x30
- .byte 0x30, 0x05, 0x19
- .byte 0x13, 0x00, 0x12
- .byte 0x27, 0x16, 0x2A
- .byte 0x0F, 0x28, 0x27
- .byte 0x0C, 0x23, 0x2F
- .byte 0x39, 0x28, 0x2A
- .byte 0x24, 0x25, 0x1F
- .byte 0x18, 0x29, 0x14
- .byte 0x16, 0x05, 0x1A
- .byte 0x35, 0x2F, 0x26
- .byte 0x0A, 0x3A, 0x29
- .byte 0x34, 0x2C, 0x36
- .byte 0x2E, 0x3A, 0x15
- .byte 0x1A, 0x0A, 0x2D
- .byte 0x16, 0x14, 0x2E
- .byte 0x35, 0x28, 0x2A
- .byte 0x35, 0x0F, 0x11
- .byte 0x11, 0x32, 0x19
- .byte 0x20, 0x1A, 0x28
- .byte 0x17, 0x1A, 0x28
- .byte 0x16, 0x33, 0x25
- .byte 0x13, 0x2C, 0x29
- .byte 0x09, 0x16, 0x33
- .byte 0x1D, 0x27, 0x26
- .byte 0x15, 0x0C, 0x2F
- .byte 0x22, 0x1C, 0x19
- .byte 0x29, 0x33, 0x10
- .byte 0x2D, 0x11, 0x1B
- .byte 0x16, 0x19, 0x2E
- .byte 0x0D, 0x0C, 0x28
- .byte 0x37, 0x3A, 0x34
- .byte 0x2A, 0x1D, 0x37
- .byte 0x30, 0x0A, 0x36
- .byte 0x24, 0x39, 0x1B
- .byte 0x39, 0x0A, 0x32
- .byte 0x11, 0x03, 0x2D
- .byte 0x32, 0x1D, 0x30
- .byte 0x38, 0x1E, 0x27
- .byte 0x2E, 0x17, 0x18
- .byte 0x16, 0x17, 0x2A
- .byte 0x36, 0x3B, 0x31
- .byte 0x17, 0x04, 0x19
- .byte 0x3A, 0x25, 0x2D
- .byte 0x00, 0x36, 0x27
- .byte 0x25, 0x12, 0x33
- .byte 0x06, 0x0A, 0x14
- .byte 0x11, 0x05, 0x2F
- .byte 0x03, 0x35, 0x2F
- .byte 0x0B, 0x34, 0x29
- .byte 0x00, 0x31, 0x13
- .byte 0x27, 0x0F, 0x1C
- .byte 0x1D, 0x06, 0x2D
- .byte 0x1C, 0x30, 0x27
- .byte 0x2F, 0x2A, 0x27
- .byte 0x16, 0x20, 0x31
- .byte 0x33, 0x2B, 0x2B
- .byte 0x05, 0x30, 0x36
- .byte 0x29, 0x23, 0x35
- .byte 0x10, 0x16, 0x2F
- .byte 0x2D, 0x20, 0x29
- .byte 0x37, 0x13, 0x24
- .byte 0x2D, 0x0E, 0x25
- .byte 0x08, 0x0A, 0x18
- .byte 0x0F, 0x03, 0x1B
- .byte 0x31, 0x0C, 0x37
- .byte 0x1E, 0x34, 0x31
- .byte 0x1B, 0x0E, 0x25
- .byte 0x1A, 0x07, 0x34
- .byte 0x0D, 0x3C, 0x33
- .byte 0x00, 0x3A, 0x36
- .byte 0x04, 0x27, 0x12
- .byte 0x23, 0x18, 0x24
- .byte 0x0D, 0x0B, 0x18
- .byte 0x31, 0x32, 0x37
- .byte 0x00, 0x0D, 0x21
- .byte 0x32, 0x10, 0x12
- .byte 0x26, 0x0D, 0x19
- .byte 0x29, 0x24, 0x2B
- .byte 0x3D, 0x21, 0x1F
- .byte 0x1E, 0x1B, 0x28
- .byte 0x0D, 0x12, 0x28
- .byte 0x35, 0x1E, 0x23
- .byte 0x0A, 0x2E, 0x22
- .byte 0x27, 0x27, 0x35
- .byte 0x01, 0x0E, 0x20
- .byte 0x31, 0x39, 0x29
- .byte 0x3B, 0x24, 0x36
- .byte 0x14, 0x10, 0x33
- .byte 0x18, 0x2C, 0x26
- .byte 0x04, 0x2D, 0x15
- .byte 0x1A, 0x11, 0x37
- .byte 0x0F, 0x0B, 0x14
- .byte 0x0E, 0x2C, 0x2C
- .byte 0x21, 0x17, 0x2C
- .byte 0x16, 0x21, 0x35
- .byte 0x3E, 0x10, 0x10
- .byte 0x0A, 0x05, 0x1E
- .byte 0x3B, 0x09, 0x13
- .byte 0x26, 0x18, 0x1E
- .byte 0x23, 0x0C, 0x1A
- .byte 0x33, 0x37, 0x1F
- .byte 0x09, 0x12, 0x35
- .byte 0x3D, 0x0D, 0x15
- .byte 0x36, 0x06, 0x24
- .byte 0x33, 0x30, 0x29
- .byte 0x3B, 0x0F, 0x28
- .byte 0x34, 0x2A, 0x2C
- .byte 0x02, 0x12, 0x35
- .byte 0x09, 0x22, 0x31
- .byte 0x3B, 0x31, 0x1C
- .byte 0x33, 0x22, 0x27
- .byte 0x3D, 0x34, 0x15
- .byte 0x14, 0x22, 0x28
- .byte 0x28, 0x10, 0x1E
- .byte 0x21, 0x31, 0x10
- .byte 0x2D, 0x16, 0x21
- .byte 0x1E, 0x05, 0x33
- .byte 0x0F, 0x30, 0x31
- .byte 0x0E, 0x1A, 0x35
- .byte 0x38, 0x2E, 0x28
- .byte 0x26, 0x37, 0x1E
- .byte 0x2B, 0x13, 0x33
- .byte 0x1F, 0x1E, 0x37
- .byte 0x0A, 0x28, 0x24
- .byte 0x32, 0x1C, 0x1A
- .byte 0x1F, 0x3F, 0x19
- .byte 0x39, 0x39, 0x29
- .byte 0x2C, 0x1B, 0x14
- .byte 0x15, 0x2A, 0x17
- .byte 0x32, 0x0F, 0x21
- .byte 0x30, 0x21, 0x18
- .byte 0x23, 0x2A, 0x27
- .byte 0x3D, 0x07, 0x10
- .byte 0x0B, 0x3F, 0x2F
- .byte 0x31, 0x02, 0x2E
- .byte 0x08, 0x39, 0x2F
- .byte 0x3F, 0x20, 0x18
- .byte 0x2D, 0x34, 0x11
- .byte 0x2E, 0x34, 0x10
- .byte 0x26, 0x12, 0x23
- .byte 0x25, 0x0A, 0x37
- .byte 0x34, 0x09, 0x25
- .byte 0x0A, 0x3E, 0x16
- .byte 0x1A, 0x17, 0x11
- .byte 0x38, 0x1C, 0x20
- .byte 0x11, 0x21, 0x26
- .byte 0x05, 0x0F, 0x18
- .byte 0x26, 0x2B, 0x32
- .byte 0x0A, 0x0C, 0x16
- .byte 0x03, 0x29, 0x1D
- .byte 0x29, 0x3B, 0x23
- .byte 0x16, 0x1B, 0x29
- .byte 0x07, 0x09, 0x17
- .byte 0x17, 0x2C, 0x1C
- .byte 0x35, 0x33, 0x30
- .byte 0x17, 0x12, 0x1E
- .byte 0x3D, 0x1A, 0x2B
- .byte 0x21, 0x1D, 0x10
- .byte 0x0A, 0x08, 0x17
- .byte 0x14, 0x3C, 0x36
- .byte 0x28, 0x36, 0x36
- .byte 0x3B, 0x20, 0x1B
- .byte 0x13, 0x22, 0x1D
- .byte 0x13, 0x3A, 0x15
- .byte 0x02, 0x23, 0x2C
- .byte 0x3E, 0x19, 0x14
- .byte 0x39, 0x3C, 0x1A
- .byte 0x10, 0x08, 0x1E
- .byte 0x0A, 0x13, 0x29
- .byte 0x3F, 0x38, 0x2C
- .byte 0x07, 0x23, 0x1F
- .byte 0x19, 0x2A, 0x24
- .byte 0x14, 0x3C, 0x1F
- .byte 0x0D, 0x04, 0x37
- .byte 0x1A, 0x2F, 0x28
- .byte 0x2A, 0x1D, 0x1E
- .byte 0x11, 0x37, 0x29
- .byte 0x28, 0x27, 0x12
- .byte 0x0D, 0x00, 0x26
- .byte 0x0A, 0x3C, 0x26
- .byte 0x1F, 0x1C, 0x33
- .byte 0x04, 0x3A, 0x2C
- .byte 0x24, 0x3D, 0x2B
- .byte 0x26, 0x31, 0x2F
- .byte 0x13, 0x1C, 0x21
- .byte 0x3E, 0x12, 0x23
- .byte 0x36, 0x0A, 0x1A
- .byte 0x2D, 0x1E, 0x19
- .byte 0x05, 0x1F, 0x1B
- .byte 0x1E, 0x0A, 0x1F
- .byte 0x20, 0x08, 0x24
- .byte 0x2C, 0x0C, 0x33
- .byte 0x1D, 0x1F, 0x11
- .byte 0x0E, 0x12, 0x10
- .byte 0x27, 0x12, 0x19
- .byte 0x2A, 0x13, 0x31
- .byte 0x1C, 0x04, 0x30
- .byte 0x1A, 0x38, 0x1F
- .byte 0x2C, 0x35, 0x25
- .byte 0x07, 0x0B, 0x33
- .byte 0x2D, 0x02, 0x1A
- .byte 0x2A, 0x35, 0x35
- .byte 0x16, 0x2F, 0x14
- .byte 0x11, 0x31, 0x33
- .byte 0x2C, 0x31, 0x1E
- .byte 0x3C, 0x3A, 0x27
- .byte 0x3C, 0x2B, 0x12
- .byte 0x27, 0x1D, 0x12
- .byte 0x36, 0x2C, 0x2B
- .byte 0x25, 0x3B, 0x35
- .byte 0x12, 0x3D, 0x27
- .byte 0x13, 0x23, 0x19
- .byte 0x33, 0x2C, 0x26
- .byte 0x09, 0x3C, 0x12
- .byte 0x15, 0x1A, 0x23
- .byte 0x21, 0x07, 0x1A
- .byte 0x22, 0x25, 0x20
- .byte 0x19, 0x1B, 0x2C
- .byte 0x3A, 0x19, 0x35
- .byte 0x05, 0x26, 0x1D
- .byte 0x23, 0x22, 0x25
- .byte 0x0E, 0x1E, 0x11
- .byte 0x13, 0x30, 0x12
- .byte 0x2C, 0x22, 0x25
- .byte 0x0A, 0x1D, 0x18
- .byte 0x23, 0x3E, 0x1D
- .byte 0x02, 0x28, 0x25
- .byte 0x21, 0x0E, 0x20
- .byte 0x21, 0x22, 0x37
- .byte 0x18, 0x33, 0x27
- .byte 0x23, 0x23, 0x31
- .byte 0x24, 0x1A, 0x1A
- .byte 0x3E, 0x25, 0x24
- .byte 0x24, 0x01, 0x18
- .byte 0x34, 0x10, 0x22
- .byte 0x07, 0x00, 0x37
- .byte 0x06, 0x20, 0x20
- .byte 0x3A, 0x02, 0x2B
- .byte 0x07, 0x2C, 0x2C
- .byte 0x09, 0x2F, 0x2A
- .byte 0x01, 0x32, 0x2C
- .byte 0x00, 0x35, 0x13
- .byte 0x2B, 0x3C, 0x1F
- .byte 0x36, 0x37, 0x1E
- .byte 0x20, 0x35, 0x1D
- .byte 0x0C, 0x07, 0x33
- .byte 0x16, 0x08, 0x12
- .byte 0x3F, 0x36, 0x11
- .byte 0x0B, 0x1F, 0x2D
- .byte 0x21, 0x20, 0x33
- .byte 0x17, 0x1A, 0x2E
- .byte 0x16, 0x01, 0x2F
- .byte 0x2F, 0x1C, 0x34
- .byte 0x29, 0x31, 0x2E
- .byte 0x3B, 0x38, 0x31
- .byte 0x0D, 0x16, 0x12
- .byte 0x07, 0x29, 0x24
- .byte 0x33, 0x3C, 0x34
- .byte 0x3E, 0x1E, 0x18
- .byte 0x30, 0x02, 0x34
- .byte 0x2A, 0x34, 0x1B
- .byte 0x2E, 0x23, 0x18
- .byte 0x34, 0x00, 0x1F
- .byte 0x20, 0x0E, 0x28
- .byte 0x15, 0x33, 0x37
- .byte 0x27, 0x35, 0x23
- .byte 0x37, 0x3E, 0x11
- .byte 0x32, 0x2E, 0x36
- .byte 0x3A, 0x02, 0x2B
- .byte 0x00, 0x36, 0x1D
- .byte 0x13, 0x29, 0x16
- .byte 0x08, 0x2B, 0x37
- .byte 0x08, 0x02, 0x27
- .byte 0x32, 0x2D, 0x34
- .byte 0x30, 0x36, 0x29
- .byte 0x2E, 0x10, 0x12
- .byte 0x3C, 0x2E, 0x2A
- .byte 0x04, 0x33, 0x30
- .byte 0x3F, 0x01, 0x22
- .byte 0x37, 0x14, 0x1D
- .byte 0x27, 0x00, 0x2F
- .byte 0x0C, 0x39, 0x26
- .byte 0x27, 0x04, 0x21
- .byte 0x19, 0x08, 0x1D
- .byte 0x01, 0x04, 0x1E
- .byte 0x27, 0x1B, 0x2B
- .byte 0x31, 0x17, 0x1F
- .byte 0x07, 0x01, 0x2D
- .byte 0x2E, 0x3B, 0x1F
- .byte 0x34, 0x24, 0x31
- .byte 0x32, 0x2B, 0x24
- .byte 0x0E, 0x07, 0x1E
- .byte 0x0F, 0x33, 0x10
- .byte 0x16, 0x21, 0x32
- .byte 0x39, 0x02, 0x1A
- .byte 0x33, 0x3D, 0x22
- .byte 0x0C, 0x25, 0x1A
- .byte 0x29, 0x29, 0x28
- .byte 0x3A, 0x32, 0x26
- .byte 0x0B, 0x13, 0x22
- .byte 0x1F, 0x0F, 0x1C
- .byte 0x04, 0x2C, 0x20
- .byte 0x39, 0x1A, 0x1B
- .byte 0x1A, 0x2A, 0x1F
- .byte 0x24, 0x13, 0x1A
- .byte 0x31, 0x3B, 0x33
- .byte 0x39, 0x23, 0x28
- .byte 0x31, 0x07, 0x31
- .byte 0x1F, 0x10, 0x20
- .byte 0x29, 0x17, 0x32
- .byte 0x26, 0x3B, 0x2D
- .byte 0x02, 0x3C, 0x1C
- .byte 0x0E, 0x00, 0x20
- .byte 0x14, 0x3E, 0x37
- .byte 0x01, 0x0F, 0x2D
- .byte 0x06, 0x12, 0x27
- .byte 0x30, 0x13, 0x19
- .byte 0x00, 0x33, 0x2A
- .byte 0x0C, 0x07, 0x27
- .byte 0x11, 0x3A, 0x1C
- .byte 0x15, 0x0A, 0x13
- .byte 0x1F, 0x0D, 0x2A
- .byte 0x37, 0x07, 0x2A
- .byte 0x34, 0x35, 0x34
- .byte 0x28, 0x16, 0x27
- .byte 0x06, 0x02, 0x36
- .byte 0x09, 0x23, 0x30
- .byte 0x14, 0x02, 0x28
- .byte 0x39, 0x32, 0x34
- .byte 0x24, 0x35, 0x12
- .byte 0x12, 0x22, 0x26
- .byte 0x09, 0x07, 0x33
- .byte 0x0F, 0x3E, 0x1E
- .byte 0x00, 0x3C, 0x33
- .byte 0x10, 0x37, 0x14
- .byte 0x3A, 0x03, 0x25
- .byte 0x2D, 0x1E, 0x24
- .byte 0x36, 0x36, 0x26
- .byte 0x1F, 0x3C, 0x1A
- .byte 0x37, 0x33, 0x25
- .byte 0x23, 0x13, 0x1F
- .byte 0x33, 0x0D, 0x13
- .byte 0x25, 0x30, 0x1E
- .byte 0x17, 0x03, 0x18
- .byte 0x18, 0x18, 0x14
- .byte 0x30, 0x07, 0x22
- .byte 0x3E, 0x33, 0x21
- .byte 0x14, 0x37, 0x16
- .byte 0x16, 0x00, 0x12
- .byte 0x2C, 0x12, 0x2F
- .byte 0x25, 0x3F, 0x1E
- .byte 0x24, 0x19, 0x16
- .byte 0x16, 0x0F, 0x35
- .byte 0x2D, 0x10, 0x11
- .byte 0x24, 0x2A, 0x28
- .byte 0x19, 0x25, 0x2E
- .byte 0x0C, 0x16, 0x1F
- .byte 0x38, 0x21, 0x36
- .byte 0x3D, 0x1A, 0x2F
- .byte 0x3B, 0x32, 0x12
- .byte 0x36, 0x13, 0x29
- .byte 0x0E, 0x30, 0x31
- .byte 0x19, 0x07, 0x2F
- .byte 0x25, 0x23, 0x28
- .byte 0x20, 0x08, 0x29
- .byte 0x2A, 0x00, 0x30
- .byte 0x30, 0x38, 0x23
- .byte 0x1E, 0x0F, 0x1F
- .byte 0x3B, 0x1B, 0x30
- .byte 0x3A, 0x37, 0x2F
- .byte 0x39, 0x37, 0x35
- .byte 0x39, 0x2D, 0x2F
- .byte 0x1F, 0x2E, 0x1E
- .byte 0x1A, 0x2B, 0x1E
- .byte 0x14, 0x17, 0x20
- .byte 0x2F, 0x03, 0x11
- .byte 0x1D, 0x00, 0x30
- .byte 0x17, 0x2B, 0x1D
- .byte 0x35, 0x28, 0x25
- .byte 0x3B, 0x0F, 0x11
- .byte 0x09, 0x04, 0x2E
- .byte 0x23, 0x11, 0x1E
- .byte 0x13, 0x37, 0x1E
- .byte 0x37, 0x37, 0x1E
- .byte 0x07, 0x01, 0x32
- .byte 0x14, 0x06, 0x32
- .byte 0x11, 0x0C, 0x2E
- .byte 0x36, 0x2E, 0x24
- .byte 0x15, 0x2A, 0x1C
- .byte 0x22, 0x15, 0x34
- .byte 0x2C, 0x1E, 0x35
- .byte 0x22, 0x27, 0x33
- .byte 0x19, 0x3F, 0x2D
- .byte 0x21, 0x33, 0x15
- .byte 0x26, 0x1A, 0x11
- .byte 0x16, 0x3E, 0x12
- .byte 0x2B, 0x24, 0x15
- .byte 0x3C, 0x0F, 0x2D
- .byte 0x31, 0x15, 0x36
- .byte 0x3F, 0x24, 0x1D
- .byte 0x25, 0x01, 0x37
- .byte 0x33, 0x16, 0x1A
- .byte 0x1F, 0x0E, 0x10
- .byte 0x2F, 0x0B, 0x12
- .byte 0x2A, 0x1A, 0x25
- .byte 0x17, 0x0A, 0x35
- .byte 0x09, 0x28, 0x35
- .byte 0x02, 0x13, 0x36
- .byte 0x34, 0x2F, 0x17
- .byte 0x03, 0x04, 0x31
- .byte 0x3E, 0x26, 0x11
- .byte 0x35, 0x33, 0x31
- .byte 0x22, 0x17, 0x23
- .byte 0x1D, 0x05, 0x2B
- .byte 0x2E, 0x27, 0x20
- .byte 0x03, 0x2B, 0x1D
- .byte 0x01, 0x19, 0x1E
- .byte 0x0E, 0x05, 0x18
- .byte 0x16, 0x25, 0x17
- .byte 0x02, 0x28, 0x18
- .byte 0x19, 0x0B, 0x24
- .byte 0x3E, 0x35, 0x16
- .byte 0x2E, 0x29, 0x25
- .byte 0x3E, 0x38, 0x1E
- .byte 0x3A, 0x2F, 0x12
- .byte 0x14, 0x17, 0x2D
- .byte 0x11, 0x12, 0x30
- .byte 0x15, 0x31, 0x18
- .byte 0x08, 0x0B, 0x29
- .byte 0x2D, 0x00, 0x33
- .byte 0x2C, 0x06, 0x1A
- .byte 0x14, 0x1C, 0x2E
- .byte 0x04, 0x08, 0x12
- .byte 0x1B, 0x2B, 0x2D
- .byte 0x2A, 0x37, 0x33
- .byte 0x10, 0x27, 0x2C
- .byte 0x1D, 0x0E, 0x34
- .byte 0x20, 0x02, 0x12
- .byte 0x1E, 0x1A, 0x2E
- .byte 0x07, 0x0B, 0x10
- .byte 0x36, 0x1E, 0x33
- .byte 0x2B, 0x28, 0x1B
- .byte 0x31, 0x25, 0x1F
- .byte 0x38, 0x3A, 0x2F
- .byte 0x39, 0x30, 0x2F
- .byte 0x12, 0x09, 0x14
- .byte 0x0E, 0x08, 0x19
- .byte 0x00, 0x0D, 0x2C
- .byte 0x1B, 0x0E, 0x34
- .byte 0x11, 0x25, 0x15
- .byte 0x0C, 0x2D, 0x26
- .byte 0x36, 0x2C, 0x16
- .byte 0x31, 0x31, 0x2C
- .byte 0x03, 0x1A, 0x16
- .byte 0x1C, 0x32, 0x14
- .byte 0x0A, 0x3E, 0x36
- .byte 0x33, 0x1B, 0x27
- .byte 0x1F, 0x32, 0x18
- .byte 0x33, 0x26, 0x33
- .byte 0x1A, 0x13, 0x1A
- .byte 0x0F, 0x34, 0x1C
- .byte 0x35, 0x2C, 0x2F
- .byte 0x38, 0x03, 0x18
- .byte 0x15, 0x0F, 0x27
- .byte 0x31, 0x29, 0x20
- .byte 0x28, 0x0E, 0x28
- .byte 0x31, 0x2C, 0x2E
- .byte 0x15, 0x19, 0x1B
- .byte 0x10, 0x03, 0x2F
- .byte 0x2E, 0x2A, 0x32
- .byte 0x2A, 0x27, 0x1B
- .byte 0x36, 0x04, 0x1E
- .byte 0x3B, 0x04, 0x21
- .byte 0x07, 0x2F, 0x19
- .byte 0x27, 0x1D, 0x1D
- .byte 0x3C, 0x3D, 0x2E
- .byte 0x25, 0x08, 0x32
- .byte 0x3B, 0x34, 0x2A
- .byte 0x0C, 0x10, 0x13
- .byte 0x25, 0x35, 0x1A
- .byte 0x2F, 0x19, 0x28
- .byte 0x17, 0x00, 0x2B
- .byte 0x0A, 0x1C, 0x17
- .byte 0x0A, 0x11, 0x1B
- .byte 0x35, 0x13, 0x37
- .byte 0x29, 0x1C, 0x28
- .byte 0x0C, 0x31, 0x35
- .byte 0x3C, 0x10, 0x1A
- .byte 0x1B, 0x3A, 0x2D
- .byte 0x3A, 0x1C, 0x18
- .byte 0x22, 0x10, 0x2D
- .byte 0x1C, 0x3C, 0x12
- .byte 0x17, 0x18, 0x2A
- .byte 0x0B, 0x2B, 0x2F
- .byte 0x2D, 0x04, 0x2E
- .byte 0x3C, 0x13, 0x23
- .byte 0x01, 0x1C, 0x2E
- .byte 0x14, 0x16, 0x22
- .byte 0x0C, 0x24, 0x13
- .byte 0x35, 0x37, 0x34
- .byte 0x1B, 0x30, 0x1E
- .byte 0x3A, 0x1C, 0x20
- .byte 0x06, 0x06, 0x36
- .byte 0x09, 0x15, 0x1A
- .byte 0x1B, 0x1A, 0x27
- .byte 0x0F, 0x33, 0x35
- .byte 0x37, 0x06, 0x23
- .byte 0x3A, 0x12, 0x1D
- .byte 0x00, 0x16, 0x29
- .byte 0x0E, 0x1D, 0x35
- .byte 0x3F, 0x38, 0x16
- .byte 0x2A, 0x3C, 0x34
- .byte 0x13, 0x32, 0x10
- .byte 0x17, 0x2C, 0x37
- .byte 0x29, 0x2A, 0x1E
- .byte 0x35, 0x2F, 0x2D
- .byte 0x3C, 0x2A, 0x11
- .byte 0x28, 0x13, 0x21
- .byte 0x19, 0x1E, 0x34
- .byte 0x0C, 0x06, 0x2D
- .byte 0x09, 0x04, 0x1C
- .byte 0x1D, 0x2F, 0x26
- .byte 0x39, 0x07, 0x16
- .byte 0x14, 0x04, 0x2D
- .byte 0x3A, 0x2F, 0x2E
- .byte 0x29, 0x15, 0x35
- .byte 0x24, 0x02, 0x36
- .byte 0x3F, 0x02, 0x1A
- .byte 0x0F, 0x18, 0x24
- .byte 0x16, 0x1D, 0x19
- .byte 0x14, 0x16, 0x10
- .byte 0x29, 0x1B, 0x13
- .byte 0x15, 0x0E, 0x19
- .byte 0x3A, 0x2E, 0x2B
- .byte 0x08, 0x30, 0x15
- .byte 0x35, 0x16, 0x30
- .byte 0x2E, 0x18, 0x35
- .byte 0x3B, 0x0B, 0x1C
- .byte 0x3A, 0x18, 0x13
- .byte 0x29, 0x13, 0x1E
- .byte 0x20, 0x13, 0x27
- .byte 0x04, 0x1D, 0x34
- .byte 0x00, 0x38, 0x19
- .byte 0x08, 0x39, 0x32
- .byte 0x20, 0x10, 0x26
- .byte 0x08, 0x02, 0x28
- .byte 0x3F, 0x0F, 0x16
- .byte 0x30, 0x1F, 0x19
- .byte 0x20, 0x2D, 0x10
- .byte 0x38, 0x17, 0x1C
- .byte 0x18, 0x31, 0x27
- .byte 0x33, 0x38, 0x30
- .byte 0x16, 0x33, 0x23
- .byte 0x00, 0x01, 0x36
- .byte 0x0D, 0x02, 0x23
- .byte 0x39, 0x04, 0x1F
- .byte 0x0E, 0x30, 0x24
- .byte 0x06, 0x01, 0x2C
- .byte 0x34, 0x33, 0x35
- .byte 0x16, 0x34, 0x2E
- .byte 0x32, 0x16, 0x24
- .byte 0x26, 0x39, 0x34
- .byte 0x1F, 0x3C, 0x1D
- .byte 0x28, 0x1D, 0x37
- .byte 0x17, 0x15, 0x2B
- .byte 0x27, 0x39, 0x30
- .byte 0x0B, 0x1B, 0x18
- .byte 0x35, 0x20, 0x2D
- .byte 0x0B, 0x35, 0x1C
- .byte 0x03, 0x0E, 0x21
- .byte 0x06, 0x0C, 0x20
- .byte 0x02, 0x18, 0x34
- .byte 0x1E, 0x36, 0x2D
- .byte 0x16, 0x0C, 0x19
- .byte 0x25, 0x09, 0x2C
- .byte 0x37, 0x05, 0x2E
- .byte 0x2E, 0x2B, 0x2C
- .byte 0x24, 0x1A, 0x14
- .byte 0x27, 0x04, 0x10
- .byte 0x32, 0x38, 0x33
- .byte 0x37, 0x15, 0x35
- .byte 0x11, 0x3F, 0x1D
- .byte 0x23, 0x23, 0x1F
- .byte 0x29, 0x3F, 0x1D
- .byte 0x1A, 0x3C, 0x2B
- .byte 0x1B, 0x2C, 0x2C
- .byte 0x38, 0x3B, 0x36
- .byte 0x04, 0x13, 0x33
- .byte 0x2C, 0x14, 0x12
- .byte 0x1A, 0x09, 0x1B
- .byte 0x36, 0x11, 0x24
- .byte 0x3A, 0x3F, 0x11
- .byte 0x01, 0x0E, 0x2B
- .byte 0x3B, 0x03, 0x2A
- .byte 0x08, 0x0D, 0x2B
- .byte 0x2B, 0x13, 0x27
- .byte 0x3A, 0x3C, 0x1C
- .byte 0x3A, 0x15, 0x2A
- .byte 0x24, 0x00, 0x17
- .byte 0x3E, 0x0A, 0x15
- .byte 0x0C, 0x29, 0x2D
- .byte 0x1F, 0x15, 0x30
- .byte 0x35, 0x18, 0x19
- .byte 0x3D, 0x37, 0x37
- .byte 0x12, 0x38, 0x1B
- .byte 0x3B, 0x02, 0x20
- .byte 0x08, 0x21, 0x19
- .byte 0x2E, 0x36, 0x1D
- .byte 0x15, 0x3D, 0x24
- .byte 0x22, 0x0C, 0x27
- .byte 0x36, 0x3F, 0x33
- .byte 0x33, 0x12, 0x11
- .byte 0x1A, 0x19, 0x1F
- .byte 0x2B, 0x24, 0x12
- .byte 0x11, 0x2A, 0x18
- .byte 0x25, 0x32, 0x2A
- .byte 0x2C, 0x1A, 0x12
- .byte 0x26, 0x06, 0x10
- .byte 0x11, 0x29, 0x33
- .byte 0x2C, 0x09, 0x14
- .byte 0x2B, 0x12, 0x2B
- .byte 0x1D, 0x03, 0x24
- .byte 0x00, 0x12, 0x15
- .byte 0x22, 0x3D, 0x26
- .byte 0x15, 0x37, 0x1A
- .byte 0x0F, 0x12, 0x37
- .byte 0x24, 0x01, 0x18
- .byte 0x2A, 0x17, 0x13
- .byte 0x14, 0x3B, 0x29
- .byte 0x2A, 0x19, 0x32
- .byte 0x2D, 0x17, 0x17
- .byte 0x0B, 0x2C, 0x33
- .byte 0x07, 0x2D, 0x34
- .byte 0x07, 0x38, 0x1D
- .byte 0x1F, 0x36, 0x22
- .byte 0x11, 0x0A, 0x17
- .byte 0x14, 0x11, 0x13
- .byte 0x2A, 0x17, 0x25
- .byte 0x01, 0x3A, 0x1C
- .byte 0x26, 0x27, 0x30
- .byte 0x2D, 0x3B, 0x35
- .byte 0x3A, 0x30, 0x34
- .byte 0x06, 0x3A, 0x1C
- .byte 0x2D, 0x05, 0x13
- .byte 0x21, 0x32, 0x12
- .byte 0x3E, 0x1E, 0x2C
- .byte 0x3A, 0x3F, 0x2D
- .byte 0x20, 0x2A, 0x34
- .byte 0x26, 0x03, 0x1A
- .byte 0x19, 0x27, 0x2E
- .byte 0x31, 0x04, 0x26
- .byte 0x2A, 0x3F, 0x30
- .byte 0x25, 0x23, 0x2A
- .byte 0x08, 0x08, 0x35
- .byte 0x2C, 0x30, 0x1E
- .byte 0x08, 0x05, 0x18
- .byte 0x06, 0x09, 0x2D
- .byte 0x19, 0x00, 0x27
- .byte 0x0D, 0x10, 0x19
- .byte 0x1C, 0x00, 0x13
- .byte 0x3D, 0x0B, 0x24
- .byte 0x2E, 0x1F, 0x16
- .byte 0x3D, 0x18, 0x34
- .byte 0x12, 0x1E, 0x15
- .byte 0x15, 0x39, 0x25
- .byte 0x33, 0x0F, 0x17
- .byte 0x1A, 0x1C, 0x1B
- .byte 0x37, 0x29, 0x1B
- .byte 0x3B, 0x38, 0x12
- .byte 0x1D, 0x22, 0x34
- .byte 0x26, 0x0A, 0x31
- .byte 0x16, 0x2D, 0x13
- .byte 0x0D, 0x20, 0x27
- .byte 0x24, 0x1D, 0x16
- .byte 0x2E, 0x2B, 0x18
- .byte 0x16, 0x2A, 0x1B
- .byte 0x24, 0x17, 0x36
- .byte 0x02, 0x05, 0x2B
- .byte 0x37, 0x1A, 0x17
- .byte 0x11, 0x3D, 0x2C
- .byte 0x1E, 0x2F, 0x22
- .byte 0x2C, 0x29, 0x1A
- .byte 0x2F, 0x04, 0x25
- .byte 0x36, 0x0C, 0x35
- .byte 0x30, 0x3E, 0x12
- .byte 0x11, 0x30, 0x37
- .byte 0x12, 0x21, 0x2E
- .byte 0x21, 0x30, 0x17
- .byte 0x2C, 0x3D, 0x24
- .byte 0x11, 0x23, 0x14
- .byte 0x1A, 0x32, 0x17
- .byte 0x39, 0x27, 0x18
- .byte 0x0F, 0x24, 0x19
- .byte 0x00, 0x3D, 0x37
- .byte 0x2C, 0x3C, 0x1C
- .byte 0x0B, 0x39, 0x23
- .byte 0x0E, 0x04, 0x1F
- .byte 0x1C, 0x31, 0x14
- .byte 0x00, 0x04, 0x15
- .byte 0x26, 0x2A, 0x2A
- .byte 0x20, 0x25, 0x2A
- .byte 0x0B, 0x3C, 0x33
- .byte 0x11, 0x0B, 0x2E
- .byte 0x37, 0x22, 0x2E
- .byte 0x0E, 0x22, 0x26
- .byte 0x18, 0x2D, 0x27
- .byte 0x06, 0x0C, 0x1C
- .byte 0x26, 0x18, 0x2F
- .byte 0x3A, 0x01, 0x2A
- .byte 0x2F, 0x31, 0x34
- .byte 0x1F, 0x34, 0x1A
- .byte 0x31, 0x05, 0x10
- .byte 0x2E, 0x17, 0x34
- .byte 0x18, 0x22, 0x23
- .byte 0x23, 0x21, 0x32
- .byte 0x07, 0x08, 0x22
- .byte 0x26, 0x1C, 0x22
- .byte 0x31, 0x12, 0x2F
- .byte 0x08, 0x1F, 0x10
- .byte 0x27, 0x15, 0x2A
- .byte 0x1F, 0x0B, 0x26
- .byte 0x2F, 0x14, 0x35
- .byte 0x24, 0x1F, 0x26
- .byte 0x3B, 0x23, 0x33
- .byte 0x20, 0x3E, 0x2D
- .byte 0x17, 0x0C, 0x15
- .byte 0x13, 0x39, 0x1A
- .byte 0x30, 0x14, 0x25
- .byte 0x09, 0x07, 0x17
- .byte 0x38, 0x38, 0x1F
- .byte 0x29, 0x24, 0x27
- .byte 0x17, 0x27, 0x28
- .byte 0x1B, 0x12, 0x2A
- .byte 0x2B, 0x3D, 0x2D
- .byte 0x19, 0x34, 0x1C
- .byte 0x01, 0x1D, 0x10
- .byte 0x08, 0x39, 0x11
- .byte 0x0E, 0x36, 0x1B
- .byte 0x26, 0x13, 0x10
- .byte 0x16, 0x28, 0x1E
- .byte 0x3C, 0x28, 0x17
- .byte 0x3E, 0x39, 0x34
- .byte 0x0A, 0x03, 0x2E
- .byte 0x37, 0x1A, 0x13
- .byte 0x2B, 0x33, 0x26
- .byte 0x13, 0x2C, 0x21
- .byte 0x25, 0x14, 0x10
- .byte 0x16, 0x0B, 0x35
- .byte 0x1D, 0x35, 0x33
- .byte 0x21, 0x08, 0x33
- .byte 0x28, 0x21, 0x1A
- .byte 0x12, 0x0C, 0x1B
- .byte 0x36, 0x2A, 0x19
- .byte 0x2C, 0x2B, 0x23
- .byte 0x01, 0x0F, 0x26
- .byte 0x17, 0x0C, 0x18
- .byte 0x09, 0x0F, 0x11
- .byte 0x2B, 0x24, 0x1C
- .byte 0x09, 0x09, 0x15
- .byte 0x36, 0x08, 0x13
- .byte 0x20, 0x39, 0x21
- .byte 0x00, 0x3A, 0x1F
- .byte 0x2B, 0x36, 0x31
- .byte 0x02, 0x37, 0x13
- .byte 0x04, 0x34, 0x35
- .byte 0x37, 0x3D, 0x1A
- .byte 0x17, 0x3D, 0x13
- .byte 0x2B, 0x36, 0x2F
- .byte 0x13, 0x1E, 0x13
- .byte 0x3E, 0x11, 0x33
- .byte 0x27, 0x3A, 0x2D
- .byte 0x1E, 0x31, 0x1A
- .byte 0x03, 0x03, 0x2D
- .byte 0x25, 0x37, 0x1F
- .byte 0x11, 0x01, 0x22
- .byte 0x1C, 0x12, 0x17
- .byte 0x30, 0x3A, 0x30
- .byte 0x17, 0x1D, 0x29
- .byte 0x0E, 0x13, 0x27
- .byte 0x1A, 0x2E, 0x24
- .byte 0x2D, 0x00, 0x1C
- .byte 0x17, 0x28, 0x1D
- .byte 0x09, 0x1F, 0x2E
- .byte 0x1A, 0x2D, 0x26
- .byte 0x0A, 0x13, 0x32
- .byte 0x3E, 0x00, 0x27
- .byte 0x0B, 0x3B, 0x30
- .byte 0x08, 0x3A, 0x2D
- .byte 0x22, 0x12, 0x1E
- .byte 0x34, 0x1D, 0x2B
- .byte 0x26, 0x22, 0x35
- .byte 0x17, 0x2C, 0x17
- .byte 0x29, 0x13, 0x2D
- .byte 0x2D, 0x10, 0x10
- .byte 0x20, 0x31, 0x23
- .byte 0x1E, 0x33, 0x18
- .byte 0x33, 0x06, 0x2D
- .byte 0x26, 0x14, 0x27
- .byte 0x22, 0x1D, 0x2A
- .byte 0x2D, 0x06, 0x18
- .byte 0x07, 0x09, 0x2E
- .byte 0x21, 0x15, 0x2E
- .byte 0x21, 0x38, 0x23
- .byte 0x35, 0x0B, 0x34
- .byte 0x24, 0x0B, 0x22
- .byte 0x1E, 0x01, 0x17
- .byte 0x0B, 0x24, 0x11
- .byte 0x17, 0x07, 0x20
- .byte 0x14, 0x25, 0x32
- .byte 0x1A, 0x0E, 0x2F
- .byte 0x35, 0x17, 0x1F
- .byte 0x0C, 0x08, 0x21
- .byte 0x30, 0x35, 0x1F
- .byte 0x0C, 0x0B, 0x20
- .byte 0x04, 0x10, 0x11
- .byte 0x35, 0x11, 0x1E
- .byte 0x33, 0x3D, 0x16
- .byte 0x1E, 0x2B, 0x1D
- .byte 0x1A, 0x19, 0x10
- .byte 0x04, 0x06, 0x22
- .byte 0x03, 0x3D, 0x24
- .byte 0x2A, 0x0E, 0x35
- .byte 0x03, 0x3E, 0x17
- .byte 0x0B, 0x18, 0x36
- .byte 0x3D, 0x0D, 0x26
- .byte 0x35, 0x12, 0x20
- .byte 0x1F, 0x0D, 0x16
- .byte 0x23, 0x32, 0x1A
- .byte 0x00, 0x3D, 0x26
- .byte 0x30, 0x19, 0x36
- .byte 0x12, 0x0E, 0x23
- .byte 0x01, 0x23, 0x28
- .byte 0x3B, 0x31, 0x11
- .byte 0x2D, 0x1C, 0x36
- .byte 0x2A, 0x05, 0x16
- .byte 0x14, 0x0E, 0x30
- .byte 0x3A, 0x37, 0x19
- .byte 0x1F, 0x30, 0x25
- .byte 0x10, 0x26, 0x2F
- .byte 0x22, 0x11, 0x1F
- .byte 0x2E, 0x2B, 0x1E
- .byte 0x16, 0x16, 0x21
- .byte 0x32, 0x18, 0x35
- .byte 0x23, 0x32, 0x1A
- .byte 0x3D, 0x0D, 0x19
- .byte 0x39, 0x09, 0x23
- .byte 0x30, 0x2E, 0x24
- .byte 0x1E, 0x0F, 0x24
- .byte 0x09, 0x21, 0x31
- .byte 0x05, 0x03, 0x11
- .byte 0x05, 0x22, 0x2A
- .byte 0x03, 0x07, 0x37
- .byte 0x04, 0x08, 0x13
- .byte 0x05, 0x10, 0x34
- .byte 0x37, 0x14, 0x29
- .byte 0x0A, 0x24, 0x32
- .byte 0x34, 0x1E, 0x1B
- .byte 0x12, 0x17, 0x2E
- .byte 0x01, 0x02, 0x13
- .byte 0x0A, 0x0C, 0x11
- .byte 0x02, 0x14, 0x13
- .byte 0x0D, 0x25, 0x23
- .byte 0x00, 0x07, 0x1A
- .byte 0x1C, 0x28, 0x35
- .byte 0x08, 0x0E, 0x2C
- .byte 0x1B, 0x3C, 0x15
- .byte 0x1C, 0x19, 0x1D
- .byte 0x32, 0x13, 0x1A
- .byte 0x1C, 0x00, 0x37
- .byte 0x22, 0x1B, 0x35
- .byte 0x39, 0x3E, 0x14
- .byte 0x32, 0x06, 0x31
- .byte 0x17, 0x05, 0x2B
- .byte 0x01, 0x0F, 0x20
- .byte 0x1E, 0x0F, 0x34
- .byte 0x18, 0x03, 0x1F
- .byte 0x2B, 0x00, 0x14
- .byte 0x15, 0x3A, 0x30
- .byte 0x25, 0x30, 0x21
- .byte 0x0B, 0x00, 0x37
- .byte 0x24, 0x37, 0x1D
- .byte 0x29, 0x21, 0x16
- .byte 0x24, 0x0F, 0x2C
- .byte 0x3E, 0x15, 0x36
- .byte 0x3C, 0x2D, 0x23
- .byte 0x3D, 0x3C, 0x17
- .byte 0x1A, 0x1C, 0x13
- .byte 0x0A, 0x29, 0x22
- .byte 0x25, 0x3F, 0x26
- .byte 0x3B, 0x39, 0x2F
- .byte 0x1D, 0x08, 0x16
- .byte 0x0B, 0x19, 0x14
- .byte 0x12, 0x01, 0x2C
- .byte 0x35, 0x11, 0x2A
- .byte 0x02, 0x00, 0x13
- .byte 0x39, 0x2A, 0x35
- .byte 0x07, 0x1A, 0x11
- .byte 0x24, 0x0E, 0x1E
- .byte 0x0E, 0x2C, 0x15
- .byte 0x08, 0x31, 0x1B
- .byte 0x21, 0x1D, 0x26
- .byte 0x1D, 0x1C, 0x2A
- .byte 0x1D, 0x24, 0x13
- .byte 0x01, 0x00, 0x18
- .byte 0x28, 0x2A, 0x37
- .byte 0x15, 0x0F, 0x13
- .byte 0x10, 0x32, 0x36
- .byte 0x22, 0x13, 0x31
- .byte 0x13, 0x05, 0x1E
- .byte 0x17, 0x35, 0x35
- .byte 0x3B, 0x0E, 0x24
- .byte 0x35, 0x3A, 0x1D
- .byte 0x1B, 0x36, 0x1B
- .byte 0x03, 0x1D, 0x24
- .byte 0x0F, 0x16, 0x30
- .byte 0x2D, 0x09, 0x25
- .byte 0x05, 0x21, 0x13
- .byte 0x0A, 0x27, 0x36
- .byte 0x04, 0x0D, 0x1C
- .byte 0x06, 0x3E, 0x21
- .byte 0x2A, 0x27, 0x33
- .byte 0x28, 0x0E, 0x15
- .byte 0x0B, 0x17, 0x1D
- .byte 0x1D, 0x32, 0x2D
- .byte 0x08, 0x3D, 0x29
- .byte 0x21, 0x32, 0x17
- .byte 0x33, 0x31, 0x22
- .byte 0x0E, 0x03, 0x21
- .byte 0x0D, 0x0B, 0x16
- .byte 0x3E, 0x2A, 0x2E
- .byte 0x19, 0x36, 0x2A
- .byte 0x0D, 0x00, 0x14
- .byte 0x22, 0x07, 0x36
- .byte 0x0A, 0x09, 0x15
- .byte 0x14, 0x10, 0x22
- .byte 0x07, 0x16, 0x2C
- .byte 0x36, 0x13, 0x15
- .byte 0x09, 0x2F, 0x1B
- .byte 0x20, 0x3B, 0x2E
- .byte 0x3A, 0x3A, 0x16
- .byte 0x0D, 0x15, 0x2A
- .byte 0x39, 0x13, 0x2B
- .byte 0x0B, 0x01, 0x2A
- .byte 0x13, 0x17, 0x1E
- .byte 0x08, 0x17, 0x1E
- .byte 0x0C, 0x0F, 0x34
- .byte 0x1F, 0x31, 0x12
- .byte 0x07, 0x3A, 0x1D
- .byte 0x35, 0x1E, 0x12
- .byte 0x24, 0x2C, 0x15
- .byte 0x0E, 0x21, 0x19
- .byte 0x34, 0x3B, 0x33
- .byte 0x19, 0x0F, 0x28
- .byte 0x10, 0x2F, 0x2E
- .byte 0x23, 0x27, 0x31
- .byte 0x39, 0x2E, 0x18
- .byte 0x3C, 0x3F, 0x24
- .byte 0x07, 0x23, 0x30
- .byte 0x28, 0x13, 0x35
- .byte 0x13, 0x0A, 0x10
- .byte 0x35, 0x19, 0x33
- .byte 0x23, 0x28, 0x29
- .byte 0x13, 0x2F, 0x1A
- .byte 0x3A, 0x19, 0x14
- .byte 0x37, 0x36, 0x26
- .byte 0x20, 0x3B, 0x15
- .byte 0x37, 0x39, 0x10
- .byte 0x3C, 0x21, 0x34
- .byte 0x1C, 0x38, 0x30
- .byte 0x15, 0x07, 0x26
- .byte 0x27, 0x21, 0x19
- .byte 0x18, 0x11, 0x23
- .byte 0x30, 0x28, 0x37
- .byte 0x32, 0x2D, 0x1F
- .byte 0x2C, 0x3F, 0x30
- .byte 0x1D, 0x2F, 0x26
- .byte 0x01, 0x11, 0x1C
- .byte 0x3B, 0x0F, 0x12
- .byte 0x2A, 0x17, 0x27
- .byte 0x05, 0x00, 0x1B
- .byte 0x25, 0x1C, 0x32
- .byte 0x04, 0x22, 0x2D
- .byte 0x10, 0x0F, 0x25
- .byte 0x0D, 0x39, 0x30
- .byte 0x0B, 0x2E, 0x27
- .byte 0x2D, 0x34, 0x15
- .byte 0x3E, 0x30, 0x36
- .byte 0x16, 0x26, 0x2A
- .byte 0x05, 0x3F, 0x2B
- .byte 0x20, 0x3B, 0x2E
- .byte 0x3B, 0x1C, 0x2F
- .byte 0x01, 0x18, 0x16
- .byte 0x16, 0x3D, 0x10
- .byte 0x0A, 0x1F, 0x18
- .byte 0x17, 0x0F, 0x22
- .byte 0x06, 0x13, 0x11
- .byte 0x38, 0x21, 0x17
- .byte 0x17, 0x0A, 0x37
- .byte 0x1C, 0x19, 0x30
- .byte 0x16, 0x38, 0x31
- .byte 0x30, 0x10, 0x36
- .byte 0x31, 0x2F, 0x26
- .byte 0x3C, 0x1B, 0x23
- .byte 0x33, 0x2F, 0x19
- .byte 0x16, 0x35, 0x25
- .byte 0x3A, 0x18, 0x1F
- .byte 0x37, 0x01, 0x1E
- .byte 0x0D, 0x18, 0x12
- .byte 0x1F, 0x1C, 0x1B
- .byte 0x07, 0x34, 0x2D
- .byte 0x0B, 0x3F, 0x33
- .byte 0x1E, 0x34, 0x1D
- .byte 0x2C, 0x13, 0x2C
- .byte 0x20, 0x20, 0x13
- .byte 0x20, 0x0F, 0x31
- .byte 0x08, 0x0F, 0x24
- .byte 0x18, 0x3D, 0x1C
- .byte 0x36, 0x34, 0x27
- .byte 0x33, 0x2A, 0x25
- .byte 0x2D, 0x30, 0x26
- .byte 0x3D, 0x37, 0x26
- .byte 0x25, 0x11, 0x11
- .byte 0x03, 0x05, 0x18
- .byte 0x10, 0x04, 0x29
- .byte 0x07, 0x2E, 0x36
- .byte 0x2A, 0x29, 0x15
- .byte 0x3A, 0x0E, 0x33
- .byte 0x2A, 0x06, 0x29
- .byte 0x3D, 0x01, 0x29
- .byte 0x27, 0x0E, 0x16
- .byte 0x1D, 0x28, 0x1B
- .byte 0x10, 0x33, 0x2B
- .byte 0x0C, 0x14, 0x1D
- .byte 0x15, 0x3F, 0x25
- .byte 0x37, 0x23, 0x1E
- .byte 0x04, 0x2C, 0x1C
- .byte 0x15, 0x34, 0x2A
- .byte 0x09, 0x2F, 0x15
- .byte 0x02, 0x3F, 0x14
- .byte 0x19, 0x2C, 0x33
- .byte 0x39, 0x32, 0x20
- .byte 0x2A, 0x18, 0x32
- .byte 0x17, 0x23, 0x21
- .byte 0x0B, 0x2D, 0x25
- .byte 0x24, 0x3A, 0x2D
- .byte 0x31, 0x3F, 0x34
- .byte 0x18, 0x19, 0x24
- .byte 0x1E, 0x15, 0x1A
- .byte 0x17, 0x33, 0x2B
- .byte 0x23, 0x09, 0x26
- .byte 0x1B, 0x0D, 0x15
- .byte 0x36, 0x26, 0x28
- .byte 0x3A, 0x1C, 0x14
- .byte 0x0C, 0x3E, 0x10
- .byte 0x18, 0x06, 0x35
- .byte 0x37, 0x26, 0x36
- .byte 0x21, 0x26, 0x17
- .byte 0x3D, 0x1C, 0x2C
- .byte 0x16, 0x25, 0x1D
- .byte 0x1E, 0x0B, 0x1E
- .byte 0x1D, 0x0D, 0x32
- .byte 0x08, 0x1F, 0x1B
- .byte 0x12, 0x1C, 0x12
- .byte 0x20, 0x2A, 0x28
- .byte 0x06, 0x3B, 0x35
- .byte 0x39, 0x0E, 0x1E
- .byte 0x31, 0x30, 0x28
- .byte 0x02, 0x21, 0x14
- .byte 0x06, 0x1E, 0x29
- .byte 0x16, 0x09, 0x1C
- .byte 0x27, 0x32, 0x2D
- .byte 0x39, 0x03, 0x27
- .byte 0x29, 0x09, 0x1E
- .byte 0x1B, 0x11, 0x1C
- .byte 0x28, 0x3A, 0x2C
- .byte 0x03, 0x03, 0x18
- .byte 0x23, 0x09, 0x2F
- .byte 0x30, 0x17, 0x23
- .byte 0x0F, 0x25, 0x33
- .byte 0x06, 0x24, 0x37
- .byte 0x22, 0x09, 0x33
- .byte 0x2C, 0x09, 0x2A
- .byte 0x0C, 0x12, 0x2A
- .byte 0x28, 0x20, 0x10
- .byte 0x15, 0x29, 0x33
- .byte 0x0F, 0x1A, 0x13
- .byte 0x13, 0x18, 0x36
- .byte 0x2E, 0x16, 0x13
- .byte 0x3C, 0x1A, 0x15
- .byte 0x3A, 0x11, 0x32
- .byte 0x02, 0x0A, 0x2C
- .byte 0x19, 0x39, 0x11
- .byte 0x31, 0x3E, 0x1D
- .byte 0x32, 0x14, 0x32
- .byte 0x12, 0x2E, 0x34
- .byte 0x3E, 0x36, 0x23
- .byte 0x37, 0x3E, 0x15
- .byte 0x15, 0x35, 0x34
- .byte 0x01, 0x3A, 0x2C
- .byte 0x26, 0x25, 0x22
- .byte 0x01, 0x2B, 0x37
- .byte 0x1C, 0x3D, 0x33
- .byte 0x3E, 0x10, 0x1C
- .byte 0x26, 0x33, 0x19
- .byte 0x05, 0x19, 0x17
- .byte 0x12, 0x38, 0x1C
- .byte 0x15, 0x3C, 0x32
- .byte 0x3F, 0x0F, 0x37
- .byte 0x02, 0x39, 0x32
- .byte 0x13, 0x00, 0x1D
- .byte 0x1D, 0x2C, 0x10
- .byte 0x39, 0x13, 0x31
- .byte 0x0F, 0x37, 0x19
- .byte 0x09, 0x0D, 0x2A
- .byte 0x20, 0x2F, 0x32
- .byte 0x3B, 0x34, 0x22
- .byte 0x26, 0x14, 0x10
- .byte 0x24, 0x3D, 0x22
- .byte 0x0B, 0x31, 0x23
- .byte 0x2F, 0x2D, 0x2A
- .byte 0x30, 0x04, 0x35
- .byte 0x19, 0x20, 0x2A
- .byte 0x16, 0x36, 0x37
- .byte 0x14, 0x28, 0x37
- .byte 0x11, 0x0B, 0x27
- .byte 0x1D, 0x06, 0x29
- .byte 0x35, 0x16, 0x2E
- .byte 0x24, 0x2E, 0x29
- .byte 0x36, 0x14, 0x2A
- .byte 0x21, 0x0C, 0x1F
- .byte 0x3F, 0x39, 0x19
- .byte 0x27, 0x10, 0x2A
- .byte 0x1E, 0x12, 0x34
- .byte 0x10, 0x24, 0x34
- .byte 0x1D, 0x13, 0x1D
- .byte 0x17, 0x16, 0x37
- .byte 0x27, 0x1B, 0x27
- .byte 0x07, 0x24, 0x21
- .byte 0x37, 0x21, 0x11
- .byte 0x37, 0x28, 0x24
- .byte 0x19, 0x02, 0x1C
- .byte 0x14, 0x12, 0x1D
- .byte 0x1B, 0x24, 0x2E
- .byte 0x2E, 0x3A, 0x15
- .byte 0x37, 0x34, 0x21
- .byte 0x33, 0x2D, 0x29
- .byte 0x2F, 0x1E, 0x34
- .byte 0x29, 0x3C, 0x12
- .byte 0x05, 0x15, 0x20
- .byte 0x05, 0x3E, 0x19
- .byte 0x18, 0x0B, 0x30
- .byte 0x2F, 0x02, 0x27
- .byte 0x14, 0x1C, 0x34
- .byte 0x12, 0x20, 0x30
- .byte 0x2B, 0x22, 0x1B
- .byte 0x06, 0x31, 0x28
- .byte 0x15, 0x2D, 0x12
- .byte 0x01, 0x0E, 0x13
- .byte 0x13, 0x0C, 0x28
- .byte 0x07, 0x2A, 0x14
- .byte 0x1D, 0x36, 0x14
- .byte 0x15, 0x2B, 0x26
- .byte 0x03, 0x25, 0x15
- .byte 0x3E, 0x3B, 0x20
- .byte 0x35, 0x0C, 0x25
- .byte 0x2B, 0x16, 0x35
- .byte 0x1E, 0x31, 0x2C
- .byte 0x06, 0x03, 0x29
- .byte 0x24, 0x07, 0x1F
- .byte 0x32, 0x2F, 0x19
- .byte 0x25, 0x21, 0x31
- .byte 0x22, 0x26, 0x1D
- .byte 0x00, 0x1B, 0x18
- .byte 0x2A, 0x24, 0x31
- .byte 0x20, 0x06, 0x2F
- .byte 0x1E, 0x32, 0x26
- .byte 0x32, 0x39, 0x12
- .byte 0x20, 0x01, 0x19
- .byte 0x0F, 0x15, 0x15
- .byte 0x27, 0x10, 0x2E
- .byte 0x09, 0x25, 0x19
- .byte 0x29, 0x37, 0x30
- .byte 0x13, 0x1C, 0x1D
- .byte 0x29, 0x2D, 0x26
- .byte 0x02, 0x1A, 0x16
- .byte 0x1D, 0x2B, 0x1C
- .byte 0x18, 0x04, 0x34
- .byte 0x28, 0x2A, 0x21
- .byte 0x15, 0x1B, 0x2E
- .byte 0x16, 0x01, 0x10
- .byte 0x05, 0x09, 0x14
- .byte 0x22, 0x03, 0x22
- .byte 0x02, 0x1B, 0x34
- .byte 0x29, 0x2A, 0x23
- .byte 0x26, 0x36, 0x13
- .byte 0x23, 0x3D, 0x1A
- .byte 0x1D, 0x10, 0x24
- .byte 0x25, 0x2B, 0x37
- .byte 0x19, 0x24, 0x26
- .byte 0x28, 0x13, 0x16
- .byte 0x17, 0x14, 0x19
- .byte 0x0B, 0x2F, 0x25
- .byte 0x37, 0x34, 0x37
- .byte 0x39, 0x21, 0x1B
- .byte 0x0F, 0x3D, 0x2D
- .byte 0x0D, 0x10, 0x20
- .byte 0x05, 0x0B, 0x2D
- .byte 0x01, 0x12, 0x24
- .byte 0x18, 0x3D, 0x32
- .byte 0x09, 0x21, 0x26
- .byte 0x1A, 0x0E, 0x1F
- .byte 0x30, 0x06, 0x1F
- .byte 0x0B, 0x3C, 0x29
- .byte 0x07, 0x3E, 0x27
- .byte 0x13, 0x1E, 0x1A
- .byte 0x13, 0x07, 0x23
- .byte 0x10, 0x34, 0x1E
- .byte 0x32, 0x17, 0x23
- .byte 0x35, 0x16, 0x31
- .byte 0x32, 0x2E, 0x1B
- .byte 0x28, 0x0E, 0x22
- .byte 0x14, 0x3A, 0x23
- .byte 0x22, 0x03, 0x29
- .byte 0x2A, 0x10, 0x20
- .byte 0x3E, 0x3C, 0x27
- .byte 0x16, 0x20, 0x12
- .byte 0x3F, 0x24, 0x31
- .byte 0x0D, 0x2E, 0x32
- .byte 0x2F, 0x17, 0x2D
- .byte 0x36, 0x3B, 0x17
- .byte 0x24, 0x23, 0x18
- .byte 0x37, 0x1D, 0x13
- .byte 0x17, 0x3A, 0x1A
- .byte 0x0A, 0x3D, 0x1E
- .byte 0x05, 0x12, 0x16
- .byte 0x33, 0x32, 0x25
- .byte 0x1D, 0x1F, 0x29
- .byte 0x34, 0x2C, 0x26
- .byte 0x20, 0x29, 0x35
- .byte 0x0E, 0x32, 0x17
- .byte 0x01, 0x39, 0x2D
- .byte 0x27, 0x24, 0x23
- .byte 0x28, 0x3F, 0x18
- .byte 0x39, 0x38, 0x25
- .byte 0x23, 0x11, 0x11
- .byte 0x19, 0x2C, 0x29
- .byte 0x30, 0x08, 0x28
- .byte 0x25, 0x27, 0x1D
- .byte 0x17, 0x25, 0x21
- .byte 0x09, 0x3D, 0x16
- .byte 0x1B, 0x0F, 0x2C
- .byte 0x1B, 0x12, 0x22
- .byte 0x28, 0x3E, 0x26
- .byte 0x34, 0x10, 0x1B
- .byte 0x02, 0x34, 0x15
- .byte 0x1A, 0x29, 0x19
- .byte 0x29, 0x11, 0x31
- .byte 0x12, 0x27, 0x17
- .byte 0x27, 0x27, 0x2F
- .byte 0x34, 0x27, 0x24
- .byte 0x03, 0x19, 0x36
- .byte 0x17, 0x1D, 0x33
- .byte 0x19, 0x25, 0x1A
- .byte 0x2B, 0x39, 0x13
- .byte 0x3B, 0x33, 0x1D
- .byte 0x27, 0x31, 0x34
- .byte 0x28, 0x33, 0x37
- .byte 0x09, 0x30, 0x1B
- .byte 0x03, 0x3A, 0x27
- .byte 0x19, 0x11, 0x1F
- .byte 0x0B, 0x1A, 0x34
- .byte 0x3D, 0x2A, 0x15
- .byte 0x04, 0x24, 0x36
- .byte 0x30, 0x23, 0x30
- .byte 0x0F, 0x22, 0x1B
- .byte 0x3D, 0x3D, 0x24
- .byte 0x29, 0x1D, 0x12
- .byte 0x16, 0x19, 0x2E
- .byte 0x03, 0x12, 0x17
- .byte 0x18, 0x25, 0x33
- .byte 0x2F, 0x23, 0x1A
- .byte 0x1A, 0x35, 0x27
- .byte 0x21, 0x26, 0x19
- .byte 0x1B, 0x30, 0x18
- .byte 0x2B, 0x22, 0x2D
- .byte 0x2C, 0x1A, 0x34
- .byte 0x3E, 0x12, 0x19
- .byte 0x28, 0x27, 0x15
- .byte 0x1B, 0x11, 0x12
- .byte 0x17, 0x15, 0x10
- .byte 0x34, 0x37, 0x25
- .byte 0x12, 0x3F, 0x15
- .byte 0x31, 0x0D, 0x37
- .byte 0x3E, 0x2A, 0x2D
- .byte 0x0F, 0x24, 0x24
- .byte 0x3C, 0x3F, 0x1F
- .byte 0x1D, 0x34, 0x17
- .byte 0x1A, 0x23, 0x1F
- .byte 0x37, 0x0F, 0x10
- .byte 0x32, 0x34, 0x35
- .byte 0x19, 0x05, 0x22
- .byte 0x33, 0x16, 0x34
- .byte 0x1E, 0x14, 0x1E
- .byte 0x08, 0x13, 0x29
- .byte 0x3A, 0x37, 0x30
- .byte 0x1D, 0x36, 0x15
- .byte 0x29, 0x2E, 0x1D
- .byte 0x32, 0x2E, 0x23
- .byte 0x35, 0x17, 0x1C
- .byte 0x36, 0x1D, 0x13
- .byte 0x23, 0x34, 0x34
- .byte 0x24, 0x1A, 0x37
- .byte 0x2F, 0x26, 0x2E
- .byte 0x1E, 0x17, 0x1A
- .byte 0x1F, 0x15, 0x1F
- .byte 0x2B, 0x1F, 0x19
- .byte 0x0A, 0x33, 0x1A
- .byte 0x35, 0x31, 0x24
- .byte 0x2D, 0x17, 0x2C
- .byte 0x0C, 0x21, 0x36
- .byte 0x2C, 0x35, 0x35
- .byte 0x1B, 0x03, 0x27
- .byte 0x01, 0x0D, 0x1D
- .byte 0x1C, 0x0E, 0x11
- .byte 0x11, 0x2B, 0x10
- .byte 0x25, 0x3B, 0x20
- .byte 0x1F, 0x17, 0x19
- .byte 0x20, 0x08, 0x36
- .byte 0x13, 0x38, 0x19
- .byte 0x1B, 0x2B, 0x24
- .byte 0x0B, 0x1F, 0x29
- .byte 0x27, 0x15, 0x2C
- .byte 0x37, 0x39, 0x10
- .byte 0x3A, 0x15, 0x2E
- .byte 0x2F, 0x11, 0x36
- .byte 0x24, 0x04, 0x20
- .byte 0x3B, 0x2A, 0x35
- .byte 0x27, 0x35, 0x34
- .byte 0x0D, 0x1B, 0x20
- .byte 0x10, 0x22, 0x37
- .byte 0x1F, 0x38, 0x27
- .byte 0x31, 0x0F, 0x28
- .byte 0x28, 0x25, 0x15
- .byte 0x00, 0x1D, 0x25
- .byte 0x31, 0x28, 0x28
- .byte 0x0B, 0x3A, 0x1D
- .byte 0x2D, 0x13, 0x1B
- .byte 0x03, 0x37, 0x2E
- .byte 0x1D, 0x28, 0x19
- .byte 0x08, 0x2D, 0x22
- .byte 0x27, 0x39, 0x32
- .byte 0x3F, 0x2F, 0x1D
- .byte 0x33, 0x34, 0x28
- .byte 0x18, 0x08, 0x31
- .byte 0x23, 0x1F, 0x13
- .byte 0x0D, 0x2C, 0x23
- .byte 0x3A, 0x2D, 0x1A
- .byte 0x02, 0x25, 0x13
- .byte 0x20, 0x36, 0x34
- .byte 0x12, 0x2B, 0x2D
- .byte 0x35, 0x35, 0x34
- .byte 0x23, 0x20, 0x21
- .byte 0x3A, 0x19, 0x1B
- .byte 0x1F, 0x2B, 0x19
- .byte 0x35, 0x0E, 0x19
- .byte 0x26, 0x24, 0x37
- .byte 0x18, 0x08, 0x10
- .byte 0x0C, 0x16, 0x2D
- .byte 0x1F, 0x34, 0x21
- .byte 0x05, 0x38, 0x19
- .byte 0x14, 0x21, 0x24
- .byte 0x11, 0x31, 0x14
- .byte 0x3E, 0x38, 0x29
- .byte 0x3F, 0x08, 0x25
- .byte 0x2A, 0x1F, 0x25
- .byte 0x25, 0x06, 0x28
- .byte 0x0B, 0x1E, 0x14
- .byte 0x1A, 0x38, 0x22
- .byte 0x24, 0x18, 0x29
- .byte 0x1A, 0x11, 0x20
- .byte 0x3B, 0x3A, 0x1E
- .byte 0x1C, 0x26, 0x1A
- .byte 0x05, 0x32, 0x19
- .byte 0x39, 0x2A, 0x31
- .byte 0x09, 0x07, 0x25
- .byte 0x05, 0x3E, 0x16
- .byte 0x34, 0x26, 0x14
- .byte 0x1B, 0x32, 0x26
- .byte 0x05, 0x08, 0x37
- .byte 0x0F, 0x03, 0x20
- .byte 0x2A, 0x39, 0x31
- .byte 0x08, 0x01, 0x1E
- .byte 0x1D, 0x23, 0x31
- .byte 0x28, 0x1B, 0x28
- .byte 0x1E, 0x37, 0x14
- .byte 0x13, 0x0E, 0x28
- .byte 0x2A, 0x3B, 0x37
- .byte 0x2F, 0x1C, 0x28
- .byte 0x30, 0x30, 0x1A
- .byte 0x36, 0x1F, 0x16
- .byte 0x3E, 0x0D, 0x15
- .byte 0x2E, 0x16, 0x18
- .byte 0x15, 0x37, 0x20
- .byte 0x2A, 0x33, 0x30
- .byte 0x2B, 0x0E, 0x25
- .byte 0x18, 0x20, 0x16
- .byte 0x02, 0x19, 0x25
- .byte 0x0A, 0x2E, 0x30
- .byte 0x16, 0x03, 0x11
- .byte 0x04, 0x27, 0x25
- .byte 0x1B, 0x1C, 0x21
- .byte 0x29, 0x04, 0x27
- .byte 0x3D, 0x20, 0x1E
- .byte 0x28, 0x33, 0x31
- .byte 0x1E, 0x39, 0x10
- .byte 0x31, 0x29, 0x1E
- .byte 0x06, 0x25, 0x28
- .byte 0x19, 0x3B, 0x12
- .byte 0x0B, 0x1B, 0x1C
- .byte 0x3E, 0x37, 0x20
- .byte 0x0A, 0x37, 0x33
- .byte 0x02, 0x2C, 0x25
- .byte 0x15, 0x18, 0x14
- .byte 0x3B, 0x20, 0x1C
- .byte 0x22, 0x3B, 0x1C
- .byte 0x24, 0x34, 0x35
- .byte 0x0F, 0x2F, 0x31
- .byte 0x3B, 0x17, 0x35
- .byte 0x30, 0x39, 0x37
- .byte 0x0D, 0x15, 0x11
- .byte 0x10, 0x03, 0x1E
- .byte 0x1A, 0x39, 0x33
- .byte 0x2F, 0x2E, 0x28
- .byte 0x1C, 0x28, 0x36
- .byte 0x28, 0x18, 0x1F
- .byte 0x15, 0x01, 0x30
- .byte 0x3E, 0x32, 0x28
- .byte 0x34, 0x2F, 0x23
- .byte 0x07, 0x0C, 0x36
- .byte 0x28, 0x2C, 0x34
- .byte 0x2A, 0x0C, 0x1F
- .byte 0x3F, 0x20, 0x13
- .byte 0x2B, 0x17, 0x27
- .byte 0x28, 0x29, 0x2A
- .byte 0x3C, 0x13, 0x36
- .byte 0x26, 0x2D, 0x2A
- .byte 0x0A, 0x06, 0x1E
- .byte 0x20, 0x04, 0x1A
- .byte 0x02, 0x07, 0x35
- .byte 0x0E, 0x18, 0x30
- .byte 0x00, 0x34, 0x34
- .byte 0x2F, 0x14, 0x37
- .byte 0x21, 0x30, 0x1F
- .byte 0x15, 0x37, 0x1B
- .byte 0x3A, 0x0B, 0x32
- .byte 0x22, 0x22, 0x21
- .byte 0x1B, 0x35, 0x23
- .byte 0x0D, 0x03, 0x1C
- .byte 0x23, 0x3B, 0x13
- .byte 0x0E, 0x1D, 0x1F
- .byte 0x1D, 0x3F, 0x2E
- .byte 0x39, 0x27, 0x2E
- .byte 0x0F, 0x38, 0x20
- .byte 0x31, 0x3C, 0x35
- .byte 0x0B, 0x0F, 0x2E
- .byte 0x06, 0x06, 0x28
- .byte 0x25, 0x39, 0x23
- .byte 0x0A, 0x32, 0x15
- .byte 0x0F, 0x1D, 0x25
- .byte 0x0C, 0x0D, 0x34
- .byte 0x12, 0x2E, 0x21
- .byte 0x36, 0x18, 0x1F
- .byte 0x1F, 0x34, 0x1B
- .byte 0x05, 0x3A, 0x36
- .byte 0x2B, 0x01, 0x17
- .byte 0x0E, 0x16, 0x2B
- .byte 0x0E, 0x0B, 0x26
- .byte 0x0D, 0x2D, 0x10
- .byte 0x21, 0x11, 0x27
- .byte 0x3D, 0x13, 0x32
- .byte 0x15, 0x25, 0x2A
- .byte 0x1B, 0x2D, 0x35
- .byte 0x2C, 0x2B, 0x26
- .byte 0x26, 0x1F, 0x20
- .byte 0x22, 0x2B, 0x12
- .byte 0x3F, 0x3D, 0x27
- .byte 0x30, 0x0A, 0x36
- .byte 0x35, 0x1F, 0x17
- .byte 0x21, 0x08, 0x29
- .byte 0x1D, 0x20, 0x33
- .byte 0x34, 0x11, 0x16
- .byte 0x05, 0x38, 0x2D
diff --git a/data/maps/LilycoveCity/scripts.inc b/data/maps/LilycoveCity/scripts.inc
index 22f980016..f7df3f4ab 100644
--- a/data/maps/LilycoveCity/scripts.inc
+++ b/data/maps/LilycoveCity/scripts.inc
@@ -164,7 +164,7 @@ LilycoveCity_EventScript_14CC79:: @ 814CC79
LilycoveCity_EventScript_14CC82:: @ 814CC82
lockall
- specialvar VAR_0x8004, sub_80C4D50
+ specialvar VAR_0x8004, CountPlayerMuseumPaintings
switch VAR_0x8004
case 0, LilycoveCity_EventScript_14CCA2
msgbox LilycoveCity_Text_168EA4, MSGBOX_DEFAULT
diff --git a/data/maps/LilycoveCity_ContestLobby/scripts.inc b/data/maps/LilycoveCity_ContestLobby/scripts.inc
index 5dabc84a3..c3e83734a 100644
--- a/data/maps/LilycoveCity_ContestLobby/scripts.inc
+++ b/data/maps/LilycoveCity_ContestLobby/scripts.inc
@@ -40,7 +40,7 @@ LilycoveCity_ContestLobby_EventScript_158898:: @ 8158898
LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE
msgbox LilycoveCity_ContestLobby_Text_188AE8, MSGBOX_DEFAULT
closemessage
- special sub_80C4CEC
+ special SaveMuseumContestPainting
setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0
specialvar VAR_RESULT, GiveMonArtistRibbon
compare VAR_RESULT, 1
@@ -86,7 +86,7 @@ LilycoveCity_ContestLobby_EventScript_158948:: @ 8158948
return
LilycoveCity_ContestLobby_EventScript_158994:: @ 8158994
- specialvar VAR_0x8004, sub_80C4D50
+ specialvar VAR_0x8004, CountPlayerMuseumPaintings
switch VAR_0x8004
case 1, LilycoveCity_ContestLobby_EventScript_1589D6
case 2, LilycoveCity_ContestLobby_EventScript_1589DA
@@ -212,7 +212,7 @@ LilycoveCity_ContestLobby_EventScript_158A6A:: @ 8158A6A
LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE
msgbox LilycoveCity_ContestLobby_Text_188AE8, MSGBOX_DEFAULT
closemessage
- special sub_80C4CEC
+ special SaveMuseumContestPainting
setvar VAR_LILYCOVE_CONTEST_LOBBY_STATE, 0
specialvar VAR_RESULT, GiveMonArtistRibbon
compare VAR_RESULT, 1
diff --git a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
index 8c6d9a72b..b8c026a10 100644
--- a/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
+++ b/data/maps/LilycoveCity_LilycoveMuseum_2F/scripts.inc
@@ -92,7 +92,7 @@ LilycoveCity_LilycoveMuseum_2F_Movement_1586D5:: @ 81586D5
LilycoveCity_LilycoveMuseum_2F_EventScript_1586D8:: @ 81586D8
lockall
goto_if_set FLAG_RECEIVED_GLASS_ORNAMENT, LilycoveCity_LilycoveMuseum_2F_EventScript_158793
- specialvar VAR_0x8004, sub_80C4D50
+ specialvar VAR_0x8004, CountPlayerMuseumPaintings
switch VAR_0x8004
case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C
case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C
diff --git a/data/mon_attrs.s b/data/mon_attrs.s
index ea47c8de6..76459ad44 100644
--- a/data/mon_attrs.s
+++ b/data/mon_attrs.s
@@ -138,7 +138,7 @@ gSpriteAffineAnim_81E7BDC:: @ 81E7BDC
obj_rot_scal_anim_end
.align 2
-gSpriteAffineAnimTable_81E7BEC:: @ 81E7BEC
+gAffineAnims_BattleSpriteOpponentSide:: @ 81E7BEC
.4byte gSpriteAffineAnim_81E7AA0
.4byte gSpriteAffineAnim_81E7AC0
.4byte gSpriteAffineAnim_81E7AD8
@@ -152,7 +152,7 @@ gSpriteAffineAnimTable_81E7BEC:: @ 81E7BEC
.4byte gSpriteAffineAnim_81E7BDC
.align 2
-gSpriteAffineAnimTable_81E7C18:: @ 81E7C18
+gAffineAnims_BattleSpriteContest:: @ 81E7C18
.4byte gSpriteAffineAnim_81E7AB0
.4byte gSpriteAffineAnim_81E7AC0
.4byte gSpriteAffineAnim_81E7AD8
diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc
index 465b0bfe8..5abc83c86 100644
--- a/data/scripts/contest_hall.inc
+++ b/data/scripts/contest_hall.inc
@@ -335,7 +335,7 @@ LinkContestRoom1_EventScript_1A5311:: @ 81A5311
return
LinkContestRoom1_EventScript_1A5323:: @ 81A5323
- special sub_80C4C64
+ special BufferContestTrainerAndMonNames
addvar VAR_0x8006, 1
buffernumberstring 1, VAR_0x8006
lockall
@@ -1003,7 +1003,7 @@ LinkContestRoom1_EventScript_1A5BAB:: @ 81A5BAB
setvar VAR_TEMP_1, 0
call LinkContestRoom1_EventScript_1A5A90
delay 30
- special sub_80C4CF8
+ special ShouldReadyContestArtist
compare VAR_0x8004, 1
goto_if_eq LinkContestRoom1_EventScript_1A5C46
return
@@ -1012,7 +1012,7 @@ LinkContestRoom1_EventScript_1A5BF6:: @ 81A5BF6
incrementgamestat GAME_STAT_WON_CONTEST
msgbox LinkContestRoom1_Text_1A6DF1, MSGBOX_SIGN
delay 90
- special sub_80C4CF8
+ special ShouldReadyContestArtist
compare VAR_0x8004, 1
goto_if_eq LinkContestRoom1_EventScript_1A5C46
return
@@ -1049,7 +1049,7 @@ LinkContestRoom1_EventScript_1A5C46:: @ 81A5C46
LinkContestRoom1_EventScript_1A5C4C:: @ 81A5C4C
delay 60
call LinkContestRoom1_EventScript_1A5C6A
- special sub_80C4CF8
+ special ShouldReadyContestArtist
compare VAR_0x8004, 1
goto_if_eq LinkContestRoom1_EventScript_1A5C64
closemessage
diff --git a/data/specials.inc b/data/specials.inc
index a511742e3..2e7ce8fc9 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -86,14 +86,14 @@ gSpecials::
def_special ResetTVShowState
def_special ScrSpecial_GetContestWinnerIdx
def_special ScrSpecial_GetContestPlayerMonIdx
- def_special sub_80C4C28
+ def_special GetNpcContestantLocalId
def_special ScrSpecial_GetContestWinnerTrainerName
def_special ScrSpecial_GetContestWinnerNick
- def_special sub_80C4C64
+ def_special BufferContestTrainerAndMonNames
def_special ScrSpecial_CountContestMonsWithBetterCondition
def_special SetContestTrainerGfxIds
def_special ScrSpecial_CheckSelectedMonAndInitContest
- def_special sub_80C4D80
+ def_special GetContestantNamesAtRank
def_special ScrSpecial_SetLinkContestTrainerGfxIdx
def_special ScrSpecial_GetMonCondition
def_special ScrSpecial_CanMonParticipateInSelectedLinkContest
@@ -142,10 +142,10 @@ gSpecials::
def_special CalculatePlayerPartyCount
def_special GetNumValidDaycarePartyMons
def_special CountAlivePartyMonsExceptSelectedOne
- def_special sub_80C4CF8
- def_special sub_80C4CEC
- def_special sub_80C4C78
- def_special sub_80C4D50
+ def_special ShouldReadyContestArtist
+ def_special SaveMuseumContestPainting
+ def_special DoesContestCategoryHaveMuseumPainting
+ def_special CountPlayerMuseumPaintings
def_special ShowContestWinner
def_special MauvilleGymSpecial2
def_special MauvilleGymSpecial1
diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc
deleted file mode 100644
index f435f5d15..000000000
--- a/data/text/contest_strings.inc
+++ /dev/null
@@ -1,669 +0,0 @@
-ContestString_DescHighlyAppealing:
- .string "A highly appealing move.$"
-ContestString_DescStartled1:
- .string "After this move, the user is\nmore easily startled.$"
-ContestString_DescGreatLock:
- .string "Makes a great appeal, but\nallows no more to the end.$"
-ContestString_DescRepeatable:
- .string "Can be repeatedly used\nwithout boring the JUDGE.$"
-ContestString_DescStartled2:
- .string "Can avoid being startled\nby others once.$"
-ContestString_DescStartled3:
- .string "Can avoid being startled\nby others.$"
-ContestString_DescStartled4:
- .string "Can avoid being startled\nby others a little.$"
-ContestString_DescStartled5:
- .string "After this move, the user is\nless likely to be startled.$"
-ContestString_DescStartled6:
- .string "Slightly startles the\nPOKéMON in front.$"
-ContestString_DescStartled7:
- .string "Slightly startles those\nthat have made appeals.$"
-ContestString_DescStartled8:
- .string "Startles the POKéMON that\nappealed before the user.$"
-ContestString_DescStartled9:
- .string "Startles all POKéMON that\nhave done their appeals.$"
-ContestString_DescStartled10:
- .string "Badly startles the\nPOKéMON in front.$"
-ContestString_DescStartled11:
- .string "Badly startles those that\nhave made appeals.$"
-ContestString_DescStartled12:
- .string "Startles the POKéMON that\nappealed before the user.$"
-ContestString_DescStartled13:
- .string "Startles all POKéMON that\nappealed before the user.$"
-ContestString_DescAttentionShift:
- .string "Shifts the JUDGE's\nattention from others.$"
-ContestString_DescStartled14:
- .string "Startles the POKéMON that\nhas the JUDGE's attention.$"
-ContestString_DescJamOthersMissTurn:
- .string "Jams the others, and misses\none turn of appeals.$"
-ContestString_DescStartled15:
- .string "Startles POKéMON that\nmade a same-type appeal.$"
-ContestString_DescStartled16:
- .string "Badly startles POKéMON\nthat made COOL appeals.$"
-ContestString_DescStartled17:
- .string "Badly startles POKéMON\nthat made BEAUTY appeals.$"
-ContestString_DescStartled18:
- .string "Badly startles POKéMON\nthat made CUTE appeals.$"
-ContestString_DescStartled19:
- .string "Badly startles POKéMON\nthat made SMART appeals.$"
-ContestString_DescStartled20:
- .string "Badly startles POKéMON\nthat made TOUGH appeals.$"
-ContestString_DescNervousOne:
- .string "Makes one POKéMON after\nthe user nervous.$"
-ContestString_DescNervousAllAfter:
- .string "Makes all POKéMON after\nthe user nervous.$"
-ContestString_DescConditionWorseBefore:
- .string "Worsens the condition of\nthose that made appeals.$"
-ContestString_DescStartled21:
- .string "Badly startles POKéMON in\ngood condition.$"
-ContestString_DescGreatWhenFirst:
- .string "The appeal works great if\nperformed first.$"
-ContestString_DescGreatWhenLast:
- .string "The appeal works great if\nperformed last.$"
-ContestString_DescAppealGoodBeforeAll:
- .string "Makes the appeal as good\nas those before it.$"
-ContestString_DescAppealGoodBeforeOne:
- .string "Makes the appeal as good\nas the one before it.$"
-ContestString_DescBetterWhenLater:
- .string "The appeal works better\nthe later it is performed.$"
-ContestString_DescAffectedByTiming:
- .string "The appeal's quality varies\ndepending on its timing.$"
-ContestString_DescBetterWhenSameType:
- .string "Works well if it's the same\ntype as the one before.$"
-ContestString_DescBetterWhenDiffType:
- .string "Works well if different in\ntype than the one before.$"
-ContestString_DescAffectedByFront:
- .string "Affected by how well the\nappeal in front goes.$"
-ContestString_DescConditionUp:
- .string "Ups the user's condition.\nHelps prevent nervousness.$"
-ContestString_DescAffectedByCondition:
- .string "The appeal works well if the\nuser's condition is good.$"
-ContestString_DescAppealEarlier:
- .string "The next appeal can be made\nearlier next turn.$"
-ContestString_DescAppealLater:
- .string "The next appeal can be made\nlater next turn.$"
-ContestString_DescRandomOrderEasier:
- .string "Makes the next turn's order\nmore easily scrambled.$"
-ContestString_DescRandomOrder:
- .string "Scrambles the order of\nappeals on the next turn.$"
-ContestString_DescAnyExcitement:
- .string "An appeal that excites the\naudience in any CONTEST.$"
-ContestString_DescStartled22:
- .string "Badly startles all POKéMON\nthat made good appeals.$"
-ContestString_DescScaleWithExcitement:
- .string "The appeal works best the\nmore the crowd is excited.$"
-ContestString_DescStopExcitement:
- .string "Temporarily stops the\ncrowd from growing excited.$"
-
- .align 2
-gContestEffectStrings:: @ 83CADD4
- .4byte ContestString_DescHighlyAppealing
- .4byte ContestString_DescStartled1
- .4byte ContestString_DescGreatLock
- .4byte ContestString_DescRepeatable
- .4byte ContestString_DescStartled2
- .4byte ContestString_DescStartled3
- .4byte ContestString_DescStartled4
- .4byte ContestString_DescStartled5
- .4byte ContestString_DescStartled6
- .4byte ContestString_DescStartled7
- .4byte ContestString_DescStartled8
- .4byte ContestString_DescStartled9
- .4byte ContestString_DescStartled10
- .4byte ContestString_DescStartled11
- .4byte ContestString_DescStartled12
- .4byte ContestString_DescStartled13
- .4byte ContestString_DescAttentionShift
- .4byte ContestString_DescStartled14
- .4byte ContestString_DescJamOthersMissTurn
- .4byte ContestString_DescStartled15
- .4byte ContestString_DescStartled16
- .4byte ContestString_DescStartled17
- .4byte ContestString_DescStartled18
- .4byte ContestString_DescStartled19
- .4byte ContestString_DescStartled20
- .4byte ContestString_DescNervousOne
- .4byte ContestString_DescNervousAllAfter
- .4byte ContestString_DescConditionWorseBefore
- .4byte ContestString_DescStartled21
- .4byte ContestString_DescGreatWhenFirst
- .4byte ContestString_DescGreatWhenLast
- .4byte ContestString_DescAppealGoodBeforeAll
- .4byte ContestString_DescAppealGoodBeforeOne
- .4byte ContestString_DescBetterWhenLater
- .4byte ContestString_DescAffectedByTiming
- .4byte ContestString_DescBetterWhenSameType
- .4byte ContestString_DescBetterWhenDiffType
- .4byte ContestString_DescAffectedByFront
- .4byte ContestString_DescConditionUp
- .4byte ContestString_DescAffectedByCondition
- .4byte ContestString_DescAppealEarlier
- .4byte ContestString_DescAppealLater
- .4byte ContestString_DescRandomOrderEasier
- .4byte ContestString_DescRandomOrder
- .4byte ContestString_DescAnyExcitement
- .4byte ContestString_DescStartled22
- .4byte ContestString_DescScaleWithExcitement
- .4byte ContestString_DescStopExcitement
-
-ContestString_MoveRainDance:
- .string "RAIN DANCE$"
-ContestString_MoveRage:
- .string "RAGE$"
-ContestString_MoveFocusEnergy:
- .string "FOCUS ENERGY$"
-ContestString_MoveHypnosis:
- .string "HYPNOSIS$"
-ContestString_MoveSoftboiled:
- .string "SOFTBOILED$"
-ContestString_MoveHornAttack:
- .string "HORN ATTACK$"
-ContestString_MoveSwordsDance:
- .string "SWORDS DANCE$"
-ContestString_MoveConversion:
- .string "CONVERSION$"
-ContestString_MoveSunnyDay:
- .string "SUNNY DAY$"
-ContestString_MoveRest:
- .string "REST$"
-ContestString_MoveVicegrip:
- .string "VICEGRIP$"
-ContestString_MoveDefenseCurl:
- .string "DEFENSE CURL$"
-ContestString_MoveLockOn:
- .string "LOCK-ON$"
-
- .align 2
- .4byte ContestString_MoveRainDance
- .4byte ContestString_MoveRainDance
- .4byte ContestString_MoveRage
- .4byte ContestString_MoveFocusEnergy
- .4byte ContestString_MoveHypnosis
- .4byte ContestString_MoveSoftboiled
- .4byte ContestString_MoveHornAttack
- .4byte ContestString_MoveSwordsDance
- .4byte ContestString_MoveConversion
- .4byte ContestString_MoveSunnyDay
- .4byte ContestString_MoveRest
- .4byte ContestString_MoveVicegrip
- .4byte ContestString_MoveDefenseCurl
- .4byte ContestString_MoveLockOn
-
-ContestString_Cool:
- .string "COOL$"
-ContestString_Beauty:
- .string "BEAUTY$"
-ContestString_Cute:
- .string "CUTE$"
-ContestString_Smart:
- .string "SMART$"
-ContestString_Tough:
- .string "TOUGH$"
-
- .align 2
-gContestCategoryNames:: @ 83CAF70
- .4byte ContestString_Cool
- .4byte ContestString_Beauty
- .4byte ContestString_Cute
- .4byte ContestString_Smart
- .4byte ContestString_Tough
-
-gText_Contest_WhichMoveWillBePlayed:: @ 83CAF84
- .string "Appeal no. {NAME_END}!\nWhich move will be played?$"
-
-gText_Contest_ButItCantParticipate:: @ 83CAFAE
- .string "Appeal no. {NAME_END}!\nBut it can't participate!$"
-
-gUnknown_083CAFD7:: @ 83CAFD7
- .string "{STR_VAR_1} appealed with\n{STR_VAR_2}!$"
- .string "The other POKéMON\nmade moves.{PAUSE 60}$"
-
-gUnknown_083CB00D:: @ 83CB00D
- .string "{STR_VAR_1} was watching\nthe others.{PAUSE 60}$"
-
-gUnknown_083CB02C:: @ 83CB02C
- .string "We're all out of\nAppeal Time!{PAUSE 60}$"
- .string "{STR_VAR_1}'s {STR_VAR_3}\nmove {STR_VAR_2}!{PAUSE 60}$"
- .string "TRICK$"
- .string "SPECIAL$"
-ContestString_AppealJammed:
- .string "But the appeal was\njammed.$"
-ContestString_FollowLead:
- .string "It followed another\nPOKéMON's lead.$"
-ContestString_MessedUp:
- .string "But it messed up.$"
-ContestString_BetterUsual:
- .string "It went better than\nusual.$"
-ContestString_JudgeLookAway:
- .string "The JUDGE looked away\nfor some reason.$"
-ContestString_WorkHard:
- .string "It worked hard to build on\npast mistakes.$"
-ContestString_NoMoreMoves:
- .string "It can't make any more\nmoves.$"
-ContestString_WorkReallyWell:
- .string "It worked frighteningly\nwell.$"
-ContestString_WorkHardStandout:
- .string "It worked as hard as the\nstandout POKéMON.$"
-ContestString_JudgeExpectantly:
- .string "The JUDGE looked on\nexpectantly.$"
-ContestString_WorkRatherWell:
- .string "It worked rather well.$"
-ContestString_WorkBetter:
- .string "It worked a little better\nthan usual.$"
-
- .align 2
- .4byte ContestString_AppealJammed
- .4byte ContestString_FollowLead
- .4byte ContestString_MessedUp
- .4byte ContestString_BetterUsual
- .4byte ContestString_BetterUsual
- .4byte ContestString_JudgeLookAway
- .4byte ContestString_WorkHard
- .4byte ContestString_NoMoreMoves
- .4byte ContestString_WorkReallyWell
- .4byte ContestString_WorkHardStandout
- .4byte ContestString_JudgeExpectantly
- .4byte ContestString_WorkRatherWell
- .4byte ContestString_WorkBetter
-
-ContestString_StandOutNone:
- .string "{STR_VAR_1} failed to\nstand out at all...{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutNotMuch:
- .string "{STR_VAR_1} didn't stand\nout very much...{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutLittle:
- .string "{STR_VAR_1} caught a\nlittle attention.{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutLot:
- .string "{STR_VAR_1} attracted a\nlot of attention.{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutTotal:
- .string "{STR_VAR_1} commanded\ntotal attention.{PAUSE_UNTIL_PRESS}$"
-ContestString_StandOutDidnt:
- .string "{STR_VAR_1} hasn't made\nits appeal.{PAUSE_UNTIL_PRESS}$"
-
- .align 2
-gContestStandOutStrings:: @ 83CB2F0
- .4byte ContestString_StandOutNone
- .4byte ContestString_StandOutNotMuch
- .4byte ContestString_StandOutLittle
- .4byte ContestString_StandOutLot
- .4byte ContestString_StandOutTotal
- .4byte ContestString_StandOutDidnt
-
-ContestString_AppealAnticipation3:
- .string "Anticipation swelled for\n{STR_VAR_1}'s appeal next.$"
-ContestString_JudgeSatisfied:
- .string "The JUDGE was very\nsatisfied.$"
-ContestString_Terminator:
- .string "$"
-ContestString_JudgeHeldFirm:
- .string "The JUDGE 's views on\n{STR_VAR_1} held firm.$"
-ContestString_ChangedPerceptions:
- .string "{STR_VAR_1}'s {STR_VAR_3}\nchanged perceptions.$"
-ContestString_AppealWoreOff:
- .string "{STR_VAR_1}'s appeal\neffect wore off.$"
-ContestString_AppealWoreOff2:
- .string "The special appeal's\neffect wore off.$"
-ContestString_AppealLookSame:
- .string "Everyone's appeals were\nmade to look the same.$"
-ContestString_AppealCheapened:
- .string "{STR_VAR_2}'s appeal was\ncheapened.$"
-ContestString_AppealCheapened2:
- .string "It cheapened the appeal\nof those ahead.$"
-ContestString_AppealAttentionStolen:
- .string "It stole attention away\nfrom {STR_VAR_2}.$"
-ContestString_AppealCheapened3:
- .string "It cheapened\n{STR_VAR_2}'s appeal.$"
-ContestString_AppealCheapened4:
- .string "It severely cheapened\nother appeals.$"
-ContestString_AppealAnticipation:
- .string "Anticipation swelled for\n{STR_VAR_1}'s appeal next.$"
-ContestString_AppealCheapened5:
- .string "It cheapened the appeal\nof those ahead.$"
-ContestString_AppealCheapened6:
- .string "It cheapened the JUDGE's\nfavorite appeal.$"
-ContestString_AppealCheapened7:
- .string "The appeals of others\nwere cheapened by half.$"
-ContestString_JammedStoodOut:
- .string "It stood out to make up\nfor being jammed.$"
-ContestString_AppealNoMore:
- .string "It can't participate in\nappeals any more.$"
-ContestString_AppealTouched:
- .string "It touched the JUDGE for\na fantastic appeal.$"
-ContestString_AppealAnticipation2:
- .string "Anticipation rose for\nupcoming appeals.$"
-ContestString_AppealStoodOut2:
- .string "It stood out as much as\nspecial appeals.$"
-ContestString_AppealStoodOut3:
- .string "It stood out as much as\n{STR_VAR_1}.$"
-ContestString_JammedAppealsNotice:
- .string "Jammed appeals were made\neven less noticeable.$"
-ContestString_AppealSame:
- .string "Everyone's appeals were\nmade the same.$"
-ContestString_AppealFullWorse:
- .string "Its {STR_VAR_1} is full.\nIt worsened its appeal.$"
-
- .align 2
- .4byte ContestString_JudgeHeldFirm
- .4byte ContestString_ChangedPerceptions
- .4byte ContestString_Terminator
- .4byte ContestString_AppealWoreOff
- .4byte ContestString_AppealWoreOff2
- .4byte ContestString_AppealLookSame
- .4byte ContestString_AppealCheapened
- .4byte ContestString_AppealCheapened2
- .4byte ContestString_AppealAttentionStolen
- .4byte ContestString_AppealCheapened3
- .4byte ContestString_AppealCheapened4
- .4byte ContestString_AppealAnticipation
- .4byte ContestString_AppealCheapened5
- .4byte ContestString_AppealCheapened6
- .4byte ContestString_AppealCheapened7
- .4byte ContestString_JammedStoodOut
- .4byte ContestString_AppealNoMore
- .4byte ContestString_AppealTouched
- .4byte ContestString_AppealAnticipation2
- .4byte ContestString_AppealStoodOut2
- .4byte ContestString_AppealStoodOut3
- .4byte ContestString_Terminator
- .4byte ContestString_Terminator
- .4byte ContestString_Terminator
- .4byte ContestString_JammedAppealsNotice
- .4byte ContestString_AppealSame
-ContestString_MoreConscious:
- .string "It became more conscious\nof the other POKéMON.{PAUSE 60}$"
-ContestString_NoAppeal:
- .string "{STR_VAR_1} can't make an\nappeal after this.{PAUSE 60}$"
-ContestString_SettleDown:
- .string "It settled down just a\nlittle bit.{PAUSE 60}$"
-ContestString_ObliviousToOthers:
- .string "It became oblivious to\nthe other POKéMON.{PAUSE 60}$"
-ContestString_LessAware:
- .string "It became less aware of\nthe other POKéMON.{PAUSE 60}$"
-ContestString_StoppedCaring:
- .string "It stopped caring about\nother POKéMON much.{PAUSE 60}$"
-ContestString_StartleAttempt:
- .string "It tried to startle the\nother POKéMON.{PAUSE 60}$"
-ContestString_DazzleAttempt:
- .string "It tried to dazzle the\nothers.{PAUSE 60}$"
-ContestString_JudgeLookAway2:
- .string "The JUDGE looked away\nfrom {STR_VAR_1}.{PAUSE 60}$"
-ContestString_UnnerveAttempt:
- .string "It tried to unnerve the\nnext POKéMON.{PAUSE 60}$"
-ContestString_Nervous:
- .string "{STR_VAR_1} became\nnervous.{PAUSE 60}$"
-ContestString_UnnerveWaiting:
- .string "The appeal tried to\nunnerve waiting POKéMON.{PAUSE 60}$"
-ContestString_TauntWell:
- .string "It taunted POKéMON\ndoing well.{PAUSE 60}$"
-ContestString_RegainedForm:
- .string "{STR_VAR_1} regained its\nform.{PAUSE 60}$"
-ContestString_JamWell:
- .string "It tried to jam POKéMON\ndoing well.{PAUSE 60}$"
-ContestString_HustleStandout:
- .string "The standout {STR_VAR_1}\nhustled even more.{PAUSE 60}$"
-ContestString_WorkHardUnnoticed:
- .string "The largely unnoticed\n{STR_VAR_1} worked hard.{PAUSE 60}$"
-ContestString_WorkBefore:
- .string "It worked as much as\nPOKéMON before it.{PAUSE 60}$"
-ContestString_AppealNotWell:
- .string "{STR_VAR_1}'s appeal did\nnot go well.{PAUSE 60}$"
-ContestString_WorkPreceding:
- .string "It worked as much as the\npreceding POKéMON.{PAUSE 60}$"
-ContestString_AppealNotWell2:
- .string "{STR_VAR_1}'s appeal did\nnot go well.{PAUSE 60}$"
-ContestString_AppealNotShownWell:
- .string "{STR_VAR_1}'s appeal\ncouldn't be shown well.{PAUSE 60}$"
-ContestString_AppealSlightlyWell:
- .string "{STR_VAR_1}'s appeal\nwent slightly well.{PAUSE 60}$"
-ContestString_AppealPrettyWell:
- .string "{STR_VAR_1}'s appeal\nwent pretty well.{PAUSE 60}$"
-ContestString_AppealExcellently:
- .string "{STR_VAR_1}'s appeal\nwent excellently.{PAUSE 60}$"
-ContestString_AppealDud:
- .string "{STR_VAR_1}'s appeal was\na dud.{PAUSE 60}$"
-ContestString_AppealNotVeryWell:
- .string "{STR_VAR_1}'s appeal did\nnot work very well.{PAUSE 60}$"
-ContestString_AppealSlightlyWell2:
- .string "{STR_VAR_1}'s appeal\nwent slightly well.{PAUSE 60}$"
-ContestString_AppealPrettyWell2:
- .string "{STR_VAR_1}'s appeal\nwent pretty well.{PAUSE 60}$"
-ContestString_AppealVeryWell:
- .string "{STR_VAR_1}'s appeal\nwent very well.{PAUSE 60}$"
-ContestString_AppealExcellently2:
- .string "{STR_VAR_1}'s appeal\nwent excellently.{PAUSE 60}$"
-ContestString_SameTypeGood:
- .string "It's the same type as the\nPOKéMON before - good!{PAUSE 60}$"
-ContestString_DiffTypeGood:
- .string "It's not the same type as\nthe one before - good!{PAUSE 60}$"
-ContestString_StoodOutAsMuch:
- .string "It stood out much more\nthan the POKéMON before.{PAUSE 60}$"
-ContestString_NotAsWell:
- .string "It didn't do as well as the\nPOKéMON before.{PAUSE 60}$"
-ContestString_ConditionRose:
- .string "{STR_VAR_1}'s condition\nrose above usual.{PAUSE 60}$"
-ContestString_HotStatus:
- .string "{STR_VAR_1}'s hot status\nmade it a great appeal!{PAUSE 60}$"
-ContestString_MoveUpLine:
- .string "It moved up in line for\nthe next appeal.{PAUSE 60}$"
-ContestString_MoveBackLine:
- .string "It moved back in line once\nfor the next appeal.{PAUSE 60}$"
-ContestString_ScrambleOrder:
- .string "It scrambled up the\norder for the next turn.{PAUSE 60}$"
-
-gUnknown_083CBD52:: @ 83CBD52
-ContestString_JudgeExpectantly2::
- .string "The JUDGE looked at\n{STR_VAR_1} expectantly.{PAUSE 60}$"
-
-gUnknown_083CBD79:: @ 83CBD79
-ContestString_WentOverWell::
- .string "The appeal combo went\nover well.{PAUSE 60}$"
-
-gUnknown_083CBD9D:: @ 83CBD9D
-ContestString_WentOverVeryWell::
- .string "The appeal combo went\nover very well.{PAUSE 60}$"
-
-gUnknown_083CBDC6:: @ 83CBDC6
-ContestString_AppealComboExcellently::
- .string "The appeal combo went\nover excellently.{PAUSE 60}$"
-ContestString_AvertGaze:
- .string "{STR_VAR_1} managed to\navert its gaze.{PAUSE 60}$"
-ContestString_AvoidSeeing:
- .string "{STR_VAR_1} managed to\navoid seeing it.{PAUSE 60}$"
-ContestString_NotFazed:
- .string "{STR_VAR_1} isn't fazed\nby that sort of thing.{PAUSE 60}$"
-ContestString_LittleDistracted:
- .string "{STR_VAR_1} became a\nlittle distracted.{PAUSE 60}$"
-ContestString_AttemptStartle:
- .string "It tried to startle the\nother POKéMON.{PAUSE 60}$"
-ContestString_LookedDown:
- .string "{STR_VAR_1} looked down\nout of distraction.{PAUSE 60}$"
-ContestString_TurnedBack:
- .string "{STR_VAR_1} turned back\nout of distraction.{PAUSE 60}$"
-ContestString_UtterCry:
- .string "{STR_VAR_1} couldn't help\nuttering a cry.{PAUSE 60}$"
-ContestString_LeaptUp:
- .string "{STR_VAR_1} couldn't help\nleaping up.{PAUSE 60}$"
-ContestString_TrippedOver:
- .string "{STR_VAR_1} tripped over\nout of distraction.{PAUSE 60}$"
-
-gUnknown_083CBF60:: @ 83CBF60
-ContestString_TooNervous:
- .string "{STR_VAR_1} was too\nnervous to move.{PAUSE 60}$"
-ContestString_MessedUp2:
- .string "But it messed up.{PAUSE 60}$"
-ContestString_FailedTargetNervous:
- .string "But it failed to make\nthe target nervous.{PAUSE 60}$"
-ContestString_FailedAnyoneNervous:
- .string "But it failed to make\nanyone nervous.{PAUSE 60}$"
-ContestString_Ignored:
- .string "But it was ignored...{PAUSE 60}$"
-ContestString_NoConditionImprove:
- .string "But it couldn't improve\nits condition...{PAUSE 60}$"
-ContestString_BadConditionWeakAppeal:
- .string "Its bad condition\nresulted in a weak appeal.{PAUSE 60}$"
-ContestString_Unaffected:
- .string "{STR_VAR_1} was\nunaffected.{PAUSE 60}$"
-
-gUnknown_083CC075:: @ 83CC075
-ContestString_DissapointedRepeat::
- .string "{STR_VAR_1} disappointed\nby repeating an appeal.{PAUSE 60}$"
-
-gUnknown_083CC0A0:: @ 83CC0A0
-ContestString_WentOverGreat::
- .string "{STR_VAR_1}'s {STR_VAR_3}\nwent over great.{PAUSE 60}$"
-
-gUnknown_083CC0BC:: @ 83CC0BC
-ContestString_DidntGoWell::
- .string "{STR_VAR_1}'s {STR_VAR_3}\ndidn't go over well here...{PAUSE 60}$"
-
-gUnknown_083CC0E3:: @ 83CC0E3
-ContestString_GotCrowdGoing::
- .string "{STR_VAR_1}'s {STR_VAR_3}\ngot the crowd going.{PAUSE 60}$"
-
-gUnknown_083CC103:: @ 83CC103
-ContestString_CantAppealNextTurn::
- .string "{STR_VAR_1} can't appeal\nnext turn...{PAUSE 60}$"
-ContestString_AttractedAttention::
- .string "It attracted the crowd's\nattention.{PAUSE 60}$"
-
-gUnknown_083CC14A:: @ 83CC14A
-ContestString_CrowdWatches::
- .string "The crowd continues to\nwatch {STR_VAR_3}.{PAUSE 60}$"
-
-gUnknown_083CC16E:: @ 83CC16E
-ContestString_Ignored2::
- .string "{STR_VAR_1}'s\n{STR_VAR_2} is ignored.{PAUSE 60}$"
-
- .align 2
-gUnknown_083CC188:: @ 83CC188
- .4byte ContestString_MoreConscious
- .4byte ContestString_NoAppeal
- .4byte ContestString_SettleDown
- .4byte ContestString_ObliviousToOthers
- .4byte ContestString_LessAware
- .4byte ContestString_StoppedCaring
- .4byte ContestString_StartleAttempt
- .4byte ContestString_DazzleAttempt
- .4byte ContestString_JudgeLookAway2
- .4byte ContestString_UnnerveAttempt
- .4byte ContestString_Nervous
- .4byte ContestString_UnnerveWaiting
- .4byte ContestString_TauntWell
- .4byte ContestString_RegainedForm
- .4byte ContestString_JamWell
- .4byte ContestString_HustleStandout
- .4byte ContestString_WorkHardUnnoticed
- .4byte ContestString_WorkBefore
- .4byte ContestString_AppealNotWell
- .4byte ContestString_WorkPreceding
- .4byte ContestString_AppealNotWell2
- .4byte ContestString_AppealNotShownWell
- .4byte ContestString_AppealSlightlyWell
- .4byte ContestString_AppealPrettyWell
- .4byte ContestString_AppealExcellently
- .4byte ContestString_AppealDud
- .4byte ContestString_AppealNotVeryWell
- .4byte ContestString_AppealSlightlyWell2
- .4byte ContestString_AppealPrettyWell2
- .4byte ContestString_AppealVeryWell
- .4byte ContestString_AppealExcellently2
- .4byte ContestString_SameTypeGood
- .4byte ContestString_DiffTypeGood
- .4byte ContestString_StoodOutAsMuch
- .4byte ContestString_NotAsWell
- .4byte ContestString_ConditionRose
- .4byte ContestString_HotStatus
- .4byte ContestString_MoveUpLine
- .4byte ContestString_MoveBackLine
- .4byte ContestString_ScrambleOrder
- .4byte ContestString_JudgeExpectantly2 @ expectantly
- .4byte ContestString_WentOverWell
- .4byte ContestString_WentOverVeryWell
- .4byte ContestString_AppealComboExcellently
- .4byte ContestString_AvertGaze
- .4byte ContestString_AvoidSeeing
- .4byte ContestString_NotFazed
- .4byte ContestString_LittleDistracted
- .4byte ContestString_AttemptStartle
- .4byte ContestString_LookedDown
- .4byte ContestString_TurnedBack
- .4byte ContestString_UtterCry
- .4byte ContestString_LeaptUp
- .4byte ContestString_TrippedOver
- .4byte ContestString_MessedUp2
- .4byte ContestString_FailedTargetNervous
- .4byte ContestString_FailedAnyoneNervous
- .4byte ContestString_Ignored
- .4byte ContestString_NoConditionImprove
- .4byte ContestString_BadConditionWeakAppeal
- .4byte ContestString_Unaffected
- .4byte ContestString_AttractedAttention
-
-gText_Contest_Shyness:: @ 83CC280
- .string "shyness$"
-
-gText_Contest_Anxiety:: @ 83CC288
- .string "anxiety$"
-
-gText_Contest_Laziness:: @ 83CC290
- .string "laziness$"
-
-gText_Contest_Hesitancy:: @ 83CC299
- .string "hesitancy$"
-
-gText_Contest_Fear:: @ 83CC2A3
- .string "fear$"
-
-ContestString_Coolness:
- .string "coolness$"
-ContestString_Beauty2:
- .string "beauty$"
-ContestString_Cuteness:
- .string "cuteness$"
-ContestString_Smartness:
- .string "smartness$"
-ContestString_Toughness:
- .string "toughness$"
-
- .align 2
-gContestCategoryStrings:: @ 83CC2D8
- .4byte ContestString_Coolness
- .4byte ContestString_Beauty2
- .4byte ContestString_Cuteness
- .4byte ContestString_Smartness
- .4byte ContestString_Toughness
-
-gUnknown_083CC2EC:: @ 83CC2EC
- .string "TENSION:$"
-
-ContestString_CoolMove:
- .string "COOL Move$"
-
-ContestString_BeautyMove:
- .string "BEAUTY Move$"
-
-ContestString_CuteMove:
- .string "CUTE Move$"
-
-ContestString_SmartMove:
- .string "SMART Move$"
-
-ContestString_ToughMove:
- .string "TOUGH Move$"
-
-ContestString_UnknownMoveType:
- .string "???$"
-
- .align 2
-gUnknown_083CC330:: @ 83CC330
- .4byte ContestString_CoolMove
- .4byte ContestString_BeautyMove
- .4byte ContestString_CuteMove
- .4byte ContestString_SmartMove
- .4byte ContestString_ToughMove
- .4byte ContestString_UnknownMoveType
-
-@ unused?
-ContestString_Rank:
- .string "RANK$"
-
- .string "{HIGHLIGHT TRANSPARENT}{COLOR MAGENTA} $"
diff --git a/de_after.sh b/de_after.sh
index 92f940d8d..e690258e5 100755
--- a/de_after.sh
+++ b/de_after.sh
@@ -1,2 +1 @@
-git checkout override.mk data/ graphics
-rm data/ingame_trades.inc
+git checkout data/ graphics
diff --git a/de_before.sh b/de_before.sh
index 392726948..f6a028265 100755
--- a/de_before.sh
+++ b/de_before.sh
@@ -1,3 +1,2 @@
-cp override-de.mk override.mk
rsync -avhI data-de/ data/
rsync -avhI graphics-de/ graphics/
diff --git a/include/battle.h b/include/battle.h
index afebbc781..59bfea1d2 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -4,6 +4,7 @@
#include "sprite.h"
#include "constants/battle.h"
#include "battle_setup.h"
+#include "main.h"
#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
@@ -232,14 +233,14 @@ struct BattleResults
{
u8 playerFaintCounter; // 0x0
u8 opponentFaintCounter; // 0x1
- u8 unk2; // 0x2
- u8 unk3; // 0x3
- u8 unk4; // 0x4
+ u8 totalMonSwitchCounter; // 0x2
+ u8 playerHealInBattleCount; // 0x3
+ u8 reviveCount; // 0x4
u8 playerMonWasDamaged:1; // 0x5
- u8 unk5_1:1; // 0x5
+ u8 usedMasterBall:1; // 0x5
u16 poke1Species; // 0x6
u8 pokeString1[10]; // 0x8
- u8 unk12;
+ u8 unk12; // unused
u8 battleTurnCounter; // 0x13
u8 pokeString2[10]; // 0x14
u8 filler1E[2];
@@ -281,211 +282,170 @@ struct AI_Stack
u8 size;
};
+struct LinkPartnerHeader
+{
+ u8 versionSignatureLo;
+ u8 versionSignatureHi;
+ u8 vsScreenHealthFlagsLo;
+ u8 vsScreenHealthFlagsHi;
+ struct BattleEnigmaBerry battleEnigmaBerry;
+};
+
+union MultiBuffers
+{
+ struct LinkPartnerHeader linkPartnerHeader;
+ struct MultiBattlePokemonTx multiBattleMons[3];
+};
+
+// Used internally
+struct LinkBattleCommunicationHeader
+{
+ u8 state;
+ u8 activeBattler;
+ u8 battlerAttacker;
+ u8 battlerTarget;
+ u16 size;
+ u8 absentBattlerFlags;
+ u8 effectBattler;
+ u8 data[0];
+};
+
+struct ChooseMoveStruct {
+ u16 moves[4];
+ u8 currentPp[4];
+ u8 maxPp[4];
+ u16 species;
+ u8 monType1;
+ u8 monType2;
+};
+
struct BattleStruct /* 0x2000000 */
{
- /*0x00000*/ u8 unk0;
- /*0x00001*/ bool8 unk1;
- /*0x00002*/ u8 unk2;
- /*0x00003*/ bool8 unk3;
- u8 filler4[0x15DDA];
- /*0x15DDE*/ u8 unk15DDE;
- /*0x15DDF*/ u8 unk15DDF;
- /*0x15DE0*/ u8 filler15DE0[0x220];
+ u8 filler00000[0x14000];
+ /*0x14000*/ u8 linkSend[0x1000];
+ /*0x15000*/ u8 linkRecv[0x1000];
/*0x16000*/ u8 turnEffectsTracker;
/*0x16001*/ u8 turnEffectsBattlerId;
/*0x16002*/ u8 animTurn;
/*0x16003*/ u8 scriptingActive;
- /*0x16004*/ u8 wrappedMove[8];
+ /*0x16004*/ u8 wrappedMove[MAX_BATTLERS_COUNT * 2];
/*0x1600C*/ u8 cmd49StateTracker;
- /*0x1600D*/ u8 unk1600D;
+ /*0x1600D*/ u8 unk1600D; // unused
/*0x1600E*/ u8 turnCountersTracker;
/*0x1600F*/ u8 getexpStateTracker;
- /*0x16010*/ u8 moveTarget[4];
- /*0x16014*/ u8 unk16014;
- /*0x16015*/ u8 unk16015;
- /*0x16016*/ u8 unk16016;
- /*0x16017*/ u8 unk16017;
+ /*0x16010*/ u8 moveTarget[MAX_BATTLERS_COUNT];
+ /*0x16014*/ u32 painSplitHP;
/*0x16018*/ u8 expGetterMonId;
- /*0x16019*/ u8 unk16019;
+ /*0x16019*/ u8 unk16019; // unused
/*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker
/*0x1601B*/ u8 wildVictorySong;
/*0x1601C*/ u8 dynamicMoveType;
- /*0x1601D*/ u8 unk1601D;
+ /*0x1601D*/ u8 focusPunchBattler;
/*0x1601E*/ u8 statChanger;
/*0x1601F*/ u8 dmgMultiplier;
- /*0x16020*/ u8 wrappedBy[4];
- /*0x16024*/ u16 assistMove[24];
- /*0x16054*/ u8 unk16054;
- /*0x16055*/ u8 unk16055;
+ /*0x16020*/ u8 wrappedBy[MAX_BATTLERS_COUNT];
+ /*0x16024*/ u16 assistMove[PARTY_SIZE * MAX_MON_MOVES];
+ /*0x16054*/ u8 battlerPreventingSwitchout;
+ /*0x16055*/ u8 unk16055; // unused
/*0x16056*/ u8 moneyMultiplier;
- /*0x16057*/ u8 unk16057;
- /*0x16058*/ u8 unk16058;
- /*0x16059*/ u8 sub80173A4_Tracker;
- /*0x1605A*/ u8 unk1605A;
- /*0x1605B*/ u8 unk1605B;
+ /*0x16057*/ u8 savedTurnActionNumber;
+ /*0x16058*/ u8 switchInAbilitiesCounter;
+ /*0x16059*/ u8 faintedActionsState;
+ /*0x1605A*/ u8 faintedActionsBattlerId;
/*0x1605C*/ u16 exp;
/*0x1605E*/ u8 unk1605E;
/*0x1605F*/ u8 sentInPokes;
- /*0x16060*/ u8 unk16060[4];
- /*0x16064*/ u8 unk16064[4];
+ /*0x16060*/ u8 selectionScriptFinished[MAX_BATTLERS_COUNT];
+ /*0x16064*/ u8 unk16064[MAX_BATTLERS_COUNT];
/*0x16068*/ u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
- /*0x1606C*/ u8 unk1606C[4][3];
- /*0x16078*/ u8 unk16078;
- /*0x16079*/ u8 caughtNick[11];
- /*0x16084*/ u8 unk16084;
+ /*0x1606C*/ u8 unk1606C[MAX_BATTLERS_COUNT][3];
+ /*0x16078*/ u8 runTries;
+ /*0x16079*/ u8 caughtNick[POKEMON_NAME_LENGTH + 1];
+ /*0x16084*/ u8 battleStyle;
/*0x16085*/ u8 unk16085;
- /*0x16086*/ u8 unk16086;
- /*0x16087*/ u8 unk16087;
+ /*0x16086*/ u8 safariGoNearCounter;
+ /*0x16087*/ u8 safariPkblThrowCounter;
/*0x16088*/ u8 safariFleeRate;
- /*0x16089*/ u8 unk16089;
- /*0x1608A*/ u8 unk1608A;
- /*0x1608B*/ u8 unk1608B;
- /*0x1608C*/ u8 ChosenMoveID[4];
+ /*0x16089*/ u8 safariCatchFactor;
+ /*0x1608A*/ u8 linkBattleVsSpriteId_V;
+ /*0x1608B*/ u8 linkBattleVsSpriteId_S;
+ /*0x1608C*/ u8 ChosenMoveID[MAX_BATTLERS_COUNT];
/*0x16090*/ s32 bideDmg;
- /*0x16094*/ u8 unk16094;
- /*0x16095*/ u8 unk16095;
- /*0x16096*/ u8 unk16096;
- /*0x16097*/ u8 unk16097;
- /*0x16098*/ u8 unk16098;
- /*0x16099*/ u8 unk16099;
- /*0x1609A*/ u8 unk1609a;
+ /*0x16094*/ u8 stateIdAfterSelScript[4];
+ /*0x16098*/ u8 unk16098[3]; // unused
/*0x1609B*/ u8 castformToChangeInto;
/*0x1609C*/ u8 atk6C_statetracker;
/*0x1609D*/ u8 unk1609D;
- /*0x1609E*/ u8 unk1609E;
- /*0x1609F*/ u8 unk1609F;
+ /*0x1609E*/ u8 dbgAICycleMoveTracker[2]; // debug
/*0x160A0*/ u8 stringMoveType;
/*0x160A1*/ u8 animTargetsHit;
/*0x160A2*/ u8 expGetterBattlerId;
/*0x160A3*/ u8 unk160A3;
/*0x160A4*/ u8 animArg1;
/*0x160A5*/ u8 animArg2;
- /*0x160A6*/ u8 unk160A6;
+ /*0x160A6*/ u8 unk160A6; // related to gAbsentBattlerFlags, possibly absent flags turn ago?
/*0x160A7*/ u8 unk160A7;
/*0x160A8*/ u8 unk160A8;
/*0x160A9*/ u8 unk160A9;
- /*0x160AA*/ u8 unk160Aa;
- /*0x160AB*/ u8 unk160Ab;
- /*0x160AC*/ u8 unk160AC;
- /*0x160AD*/ u8 unk160AD;
- /*0x160AE*/ u8 unk160AE;
- /*0x160AF*/ u8 unk160AF;
- /*0x160B0*/ u8 unk160B0;
- /*0x160B1*/ u8 unk160B1;
- /*0x160B2*/ u8 unk160B2;
- /*0x160B3*/ u8 unk160B3;
- /*0x160B4*/ u8 unk160B4;
- /*0x160B5*/ u8 unk160B5;
- /*0x160B6*/ u8 unk160B6;
- /*0x160B7*/ u8 unk160B7;
- /*0x160B8*/ u8 unk160B8;
- /*0x160B9*/ u8 unk160B9;
- /*0x160BA*/ u8 unk160Ba;
- /*0x160BB*/ u8 unk160Bb;
+ /*0x160AA*/ u8 unk160AA;
+ /*0x160AB*/ u8 unk160AB;
+ /*0x160AC*/ u16 lastTakenMove[2 * 2 * 2];
/*0x160BC*/ u16 HP_OnSwitchout[2];
- /*0x160C0*/ u8 unk160C0;
+ /*0x160C0*/ u8 abilityPreventingSwitchout;
/*0x160C1*/ u8 hpScale;
- /*0x160C2*/ u8 unk160C2;
- /*0x160C3*/ u8 unk160C3;
- /*0x160C4*/ u8 unk160C4;
- /*0x160C5*/ u8 unk160C5;
- /*0x160C6*/ u8 unk160C6;
- /*0x160C7*/ u8 unk160C7;
+ /*0x160C2*/ u16 unk160C2;
+ /*0x160C4*/ MainCallback unk160C4;
+
+ // Buffers used by the AI are indexed using (battler / 2)
+ // i.e. the flank bit, because at no point in game is the
+ // player's partner in a multi battle controlled by the AI.
+ // This is changed in Emerald to support the Tabitha fight
+ // in the Space Center.
/*0x160C8*/ u8 AI_monToSwitchIntoId[2];
/*0x160CA*/ u8 synchroniseEffect;
- /*0x160CB*/ u8 linkPlayerIndex;
- /*0x160CC*/ u16 usedHeldItems[4];
- /*0x160D4*/ u8 unk160D4;
- /*0x160D5*/ u8 unk160D5;
- /*0x160D6*/ u8 unk160D6;
- /*0x160D7*/ u8 unk160D7;
- /*0x160D8*/ u8 unk160D8[2];
- /*0x160DA*/ u8 unk160DA[2];
- /*0x160DC*/ u8 unk160DC;
+ /*0x160CB*/ u8 multiplayerId;
+ /*0x160CC*/ u16 usedHeldItems[MAX_BATTLERS_COUNT];
+ // Space is reserved for two u16s, one for each opponent in
+ // doubles. However, only the lower byte of each is ever used.
+ /*0x160D4*/ u16 AI_usedItemId[2];
+ /*0x160D8*/ u8 AI_usedItemType[2];
+ /*0x160DA*/ u8 AI_usedItemEffect[2];
+ /*0x160DC*/ u8 statAnimPlayed;
/*0x160DD*/ u8 intimidateBank;
/*0x160DE*/ u8 unk160DE;
/*0x160DF*/ u8 unk160DF;
- /*0x160E0*/ u8 unk160E0;
- /*0x160E1*/ u8 unk160E1;
- /*0x160E2*/ u8 unk160E2;
- /*0x160E3*/ u8 unk160E3;
- /*0x160E4*/ u8 unk160E4;
- /*0x160E5*/ u8 unk160E5;
+ /*0x160E0*/ u8 unk160E0[6];
/*0x160E6*/ u8 unk160E6;
/*0x160E7*/ u8 atkCancellerTracker;
- /*0x160E8*/ u8 unk160E8;
- /*0x160E9*/ u8 unk160E9;
- /*0x160EA*/ u8 unk160EA;
- /*0x160EB*/ u8 unk160EB;
- /*0x160EC*/ u8 unk160EC;
- /*0x160ED*/ u8 unk160ED;
- /*0x160EE*/ u8 unk160EE;
- /*0x160EF*/ u8 unk160EF;
- /*0x160F0*/ u8 unk160F0;
- /*0x160F1*/ u8 unk160F1;
- /*0x160F2*/ u8 unk160F2;
- /*0x160F3*/ u8 unk160F3;
- /*0x160F4*/ u8 unk160F4;
- /*0x160F5*/ u8 unk160F5;
- /*0x160F6*/ u8 unk160F6;
- /*0x160F7*/ u8 unk160F7;
+ /*0x160E8*/ u16 choicedMove[MAX_BATTLERS_COUNT];
+ /*0x160F0*/ u16 changedItems[MAX_BATTLERS_COUNT];
/*0x160F8*/ u8 unk160F8;
/*0x160F9*/ u8 unk160F9;
- /*0x160FA*/ u8 unk160FA;
+ /*0x160FA*/ u8 levelUpHP;
/*0x160FB*/ u8 unk160FB;
/*0x160FC*/ u8 turnSideTracker;
/*0x160FD*/ u8 unk160FD;
/*0x160FE*/ u8 unk160FE;
/*0x160FF*/ u8 unk160FF;
- /*0x16100*/ u8 unk16100;
- /*0x16101*/ u8 unk16101;
- /*0x16102*/ u8 unk16102;
- /*0x16103*/ u8 unk16103;
- /*0x16104*/ u8 unk16104;
- /*0x16105*/ u8 unk16105;
- /*0x16106*/ u8 unk16106;
- /*0x16107*/ u8 unk16107;
- /*0x16108*/ u8 unk16108;
- /*0x16109*/ u8 unk16109;
- /*0x1610A*/ u8 unk1610A;
- /*0x1610B*/ u8 unk1610B;
- /*0x1610C*/ u8 unk1610C;
- /*0x1610D*/ u8 unk1610D;
- /*0x1610E*/ u8 unk1610E;
- /*0x1610F*/ u8 unk1610F;
+ /*0x16100*/ u16 lastTakenMoveFrom[2 * 4];
/*0x16110*/ u8 wishPerishSongState;
/*0x16111*/ u8 wishPerishSongBattlerId;
- /*0x16112*/ u8 unk16112;
- /*0x16113*/ u8 unk16113;
- /*0x16114*/ u8 unk16114;
- /*0x16115*/ u8 unk16115;
- /*0x16116*/ u8 unk16116;
- /*0x16117*/ u8 unk16117;
- /*0x16118*/ u8 unk16118;
- /*0x16119*/ u8 unk16119;
- /*0x1611A*/ u8 unk1611A;
- /*0x1611B*/ u8 unk1611B;
- /*0x1611C*/ u8 unk1611C;
- /*0x1611D*/ u8 unk1611D;
- /*0x1611E*/ u8 unk1611E;
- /*0x1611F*/ u8 unk1611F;
-
- //u8 filler2[0x72E];
- /* 0x16A00 */ struct BattleHistory unk_2016A00_2;
+ /*0x16112*/ u8 multihitMoveEffect;
+ /*0x16113*/ u8 givenExpMons;
};
-struct Struct2017100
+struct ResourceFlags
{
u32 arr[4];
};
-struct Struct2017800
+struct BattleSpriteInfo
{
u8 invisible:1;
- u8 unk0_1:1;
+ u8 lowHpSong:1;
u8 substituteSprite:1;
- u8 unk0_3:1;
- u8 unk0_4:1;
+ u8 flag_x8:1;
+ u8 hpNumbersNoBars:1;
u16 transformedSpecies;
};
@@ -529,8 +489,6 @@ struct Struct20238C8
u8 unk0_7:1;
};
-#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
-
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
@@ -659,7 +617,7 @@ void sub_800D6D4();
void ApplyPlayerChosenFrameToBattleMenu();
void DrawMainBattleBackground(void);
void LoadBattleTextboxAndBackground();
-void sub_800DE30(u8);
+void InitLinkBattleVsScreen(u8);
void DrawBattleEntryBackground();
// src/battle_2.o
@@ -667,7 +625,7 @@ void CB2_InitBattle(void);
void CB2_InitBattleInternal(void);
void CB2_HandleStartBattle(void);
void sub_800F104(void);
-void sub_800F298(void);
+void CB2_HandleStartMultiBattle(void);
void BattleMainCB2(void);
void sub_800F838(struct Sprite *);
u8 CreateNPCTrainerParty(struct Pokemon *, u16);
@@ -688,7 +646,7 @@ void objc_dp11b_pingpong(struct Sprite *);
void nullsub_41(void);
void sub_8010800(void);
void BattleMainCB1(void);
-void sub_8010874(void);
+void BattleStartClearSetData(void);
void bc_8012FAC(void);
void sub_8011384(void);
void bc_801333C(void);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 71a61f175..133dde62f 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -5,6 +5,16 @@
#include "sprite.h"
+// battle_anim_status_effects.c
+#define STAT_ANIM_PLUS1 15
+#define STAT_ANIM_PLUS2 39
+#define STAT_ANIM_MINUS1 22
+#define STAT_ANIM_MINUS2 46
+#define STAT_ANIM_MULTIPLE_PLUS1 55
+#define STAT_ANIM_MULTIPLE_PLUS2 56
+#define STAT_ANIM_MULTIPLE_MINUS1 57
+#define STAT_ANIM_MULTIPLE_MINUS2 58
+
#define REG_BGnCNT_BITFIELD(n) (*(vBgCnt *)REG_ADDR_BG##n##CNT)
#define REG_BG0CNT_BITFIELD REG_BGnCNT_BITFIELD(0)
#define REG_BG1CNT_BITFIELD REG_BGnCNT_BITFIELD(1)
@@ -31,31 +41,15 @@ enum
BATTLER_COORD_ATTR_RAW_BOTTOM,
};
-struct UnknownStruct1
-{
- u8 unk0;
-};
-
-struct UnknownStruct2
-{
- void *unk0;
- u16 *unk4;
- u8 unk8;
-};
-
-struct UnknownStruct3
-{
- u8 unk0;
- u8 filler1[0xB];
-};
-
-struct EWRAM_19348_Struct
+struct ContestMoveAnim
{
- /*0x00*/ u16 species2;
- /*0x02*/ u16 species;
- /*0x04*/ u8 filler4[0x8];
- /*0x0C*/ u32 otId;
- /*0x10*/ u32 personality;
+ u16 species;
+ u16 targetSpecies;
+ bool8 hasTargetAnim:1;
+ u8 contestant;
+ u32 personality;
+ u32 otId;
+ u32 targetPersonality;
};
extern void (*gAnimScriptCallback)(void);
diff --git a/include/battle_interface.h b/include/battle_interface.h
index a3e00fd12..11d7cbf19 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -1,6 +1,8 @@
#ifndef GUARD_BATTLE_INTERFACE_H
#define GUARD_BATTLE_INTERFACE_H
+#include "battle_controllers.h" // for struct HpAndStatus
+
struct BattleInterfaceStruct1
{
s32 unk0;
@@ -10,12 +12,6 @@ struct BattleInterfaceStruct1
u32 unk10;
};
-struct BattleInterfaceStruct2
-{
- u16 unk0;
- u32 unk4;
-};
-
u8 battle_make_oam_normal_battle(u8);
u8 battle_make_oam_safari_battle(void);
void sub_8043D84(u8, u8, u32, u32, u32);
@@ -25,7 +21,7 @@ void nullsub_11();
void UpdateOamPriorityInAllHealthboxes(u8);
void sub_8043F44(u8);
void sub_804454C(void);
-u8 sub_8044804(u8, const struct BattleInterfaceStruct2 *, u8, u8);
+u8 sub_8044804(u8, const struct HpAndStatus *, u8, u8);
void sub_8044CA0(u8);
void sub_8045A5C(u8, struct Pokemon *, u8);
s32 sub_8045C78(u8, u8, u8, u8);
diff --git a/include/battle_message.h b/include/battle_message.h
index 97a42bbf8..b4e46cfe7 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -18,6 +18,50 @@ struct StringInfoBattle
u8 textBuffs[3][0x10];
};
+#define B_TXT_BUFF1 0x0
+#define B_TXT_BUFF2 0x1
+#define B_TXT_PLAYER_MON1_NAME 0x2
+#define B_TXT_OPPONENT_MON1_NAME 0x3
+#define B_TXT_PLAYER_MON2_NAME 0x4
+#define B_TXT_OPPONENT_MON2_NAME 0x5
+#define B_TXT_LINK_PLAYER_MON1_NAME 0x6
+#define B_TXT_LINK_OPPONENT_MON1_NAME 0x7
+#define B_TXT_LINK_PLAYER_MON2_NAME 0x8
+#define B_TXT_LINK_OPPONENT_MON2_NAME 0x9
+#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0xA
+#define B_TXT_ATK_PARTNER_NAME 0xB
+#define B_TXT_ATK_NAME_WITH_PREFIX 0xC
+#define B_TXT_DEF_NAME_WITH_PREFIX 0xD
+#define B_TXT_EFF_NAME_WITH_PREFIX 0xE // EFF = short for gEffectBank
+#define B_TXT_ACTIVE_NAME_WITH_PREFIX 0xF
+#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 0x10
+#define B_TXT_CURRENT_MOVE 0x11
+#define B_TXT_LAST_MOVE 0x12
+#define B_TXT_LAST_ITEM 0x13
+#define B_TXT_LAST_ABILITY 0x14
+#define B_TXT_ATK_ABILITY 0x15
+#define B_TXT_DEF_ABILITY 0x16
+#define B_TXT_SCR_ACTIVE_ABILITY 0x17
+#define B_TXT_EFF_ABILITY 0x18
+#define B_TXT_TRAINER1_CLASS 0x19
+#define B_TXT_TRAINER1_NAME 0x1A
+#define B_TXT_LINK_PLAYER_NAME 0x1B
+#define B_TXT_LINK_PARTNER_NAME 0x1C
+#define B_TXT_LINK_OPPONENT1_NAME 0x1D
+#define B_TXT_LINK_OPPONENT2_NAME 0x1E
+#define B_TXT_LINK_SCR_TRAINER_NAME 0x1F
+#define B_TXT_PLAYER_NAME 0x20
+#define B_TXT_TRAINER1_LOSE_TEXT 0x21
+#define B_TXT_22 0x22
+#define B_TXT_PC_CREATOR_NAME 0x23
+#define B_TXT_ATK_PREFIX1 0x24
+#define B_TXT_DEF_PREFIX1 0x25
+#define B_TXT_ATK_PREFIX2 0x26
+#define B_TXT_DEF_PREFIX2 0x27
+#define B_TXT_ATK_PREFIX3 0x28
+#define B_TXT_DEF_PREFIX3 0x29
+#define B_TXT_BUFF3 0x2A
+
// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3
#define B_BUFF_STRING 0
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index 36f54c6a8..4cfa4d71b 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -16,10 +16,10 @@
#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
-#define ATK48_STAT_NEGATIVE 0x1
-#define ATK48_STAT_BY_TWO 0x2
-#define ATK48_BIT_x4 0x4
-#define ATK48_LOWER_FAIL_CHECK 0x8
+#define STAT_CHANGE_NEGATIVE (1 << 0)
+#define STAT_CHANGE_BY_TWO (1 << 1)
+#define STAT_CHANGE_MULTIPLE_STATS (1 << 2)
+#define STAT_CHANGE_CANT_PREVENT (1 << 3)
#define ATK4F_DONT_CHECK_STATUSES 0x80
diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h
index f242284b0..ec43dbb90 100644
--- a/include/battle_string_ids.h
+++ b/include/battle_string_ids.h
@@ -384,4 +384,218 @@
#define STRINGID_TRAINER1WINTEXT 379
#define STRINGID_TRAINER2WINTEXT 380
+
+// The below IDs are all indexes into battle message tables,
+// used to determine which of a set of messages to print.
+// They are assigned to the MULTISTRING_CHOOSER byte of gBattleCommunication
+// and read when e.g. the command printfromtable is used.
+
+// gStatUpStringIds
+#define B_MSG_ATTACKER_STAT_ROSE 0
+#define B_MSG_DEFENDER_STAT_ROSE 1
+#define B_MSG_STAT_WONT_INCREASE 2
+#define B_MSG_STAT_ROSE_EMPTY 3
+#define B_MSG_STAT_ROSE_ITEM 4
+#define B_MSG_USED_DIRE_HIT 5
+
+// gStatDownStringIds
+#define B_MSG_ATTACKER_STAT_FELL 0
+#define B_MSG_DEFENDER_STAT_FELL 1
+#define B_MSG_STAT_WONT_DECREASE 2
+#define B_MSG_STAT_FELL_EMPTY 3
+
+// gMissStringIds
+#define B_MSG_MISSED 0
+#define B_MSG_PROTECTED 1
+#define B_MSG_AVOIDED_ATK 2
+#define B_MSG_AVOIDED_DMG 3
+#define B_MSG_GROUND_MISS 4
+
+// gAbsorbDrainStringIds
+#define B_MSG_ABSORB 0
+#define B_MSG_ABSORB_OOZE 1
+
+// gLeechSeedStringIds
+#define B_MSG_LEECH_SEED_SET 0
+#define B_MSG_LEECH_SEED_MISS 1
+#define B_MSG_LEECH_SEED_FAIL 2
+#define B_MSG_LEECH_SEED_DRAIN 3
+#define B_MSG_LEECH_SEED_OOZE 4
+
+// gFirstTurnOfTwoStringIds
+#define B_MSG_TURN1_RAZOR_WIND 0
+#define B_MSG_TURN1_SOLAR_BEAM 1
+#define B_MSG_TURN1_SKULL_BASH 2
+#define B_MSG_TURN1_SKY_ATTACK 3
+#define B_MSG_TURN1_FLY 4
+#define B_MSG_TURN1_DIG 5
+#define B_MSG_TURN1_DIVE 6
+#define B_MSG_TURN1_BOUNCE 7
+
+// gMoveWeatherChangeStringIds
+#define B_MSG_STARTED_RAIN 0
+#define B_MSG_STARTED_DOWNPOUR 1
+#define B_MSG_WEATHER_FAILED 2
+#define B_MSG_STARTED_SANDSTORM 3
+#define B_MSG_STARTED_SUNLIGHT 4
+#define B_MSG_STARTED_HAIL 5
+
+// gRainContinuesStringIds
+#define B_MSG_RAIN_CONTINUES 0
+#define B_MSG_DOWNPOUR_CONTINUES 1
+#define B_MSG_RAIN_STOPPED 2
+
+// gSandStormHailContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailEndStringIds
+#define B_MSG_SANDSTORM 0
+#define B_MSG_HAIL 1
+
+// gReflectLightScreenSafeguardStringIds
+#define B_MSG_SIDE_STATUS_FAILED 0
+#define B_MSG_SET_REFLECT_SINGLE 1
+#define B_MSG_SET_REFLECT_DOUBLE 2
+#define B_MSG_SET_LIGHTSCREEN_SINGLE 3
+#define B_MSG_SET_LIGHTSCREEN_DOUBLE 4
+#define B_MSG_SET_SAFEGUARD 5
+
+// gProtectLikeUsedStringIds
+#define B_MSG_PROTECTED_ITSELF 0
+#define B_MSG_BRACED_ITSELF 1
+#define B_MSG_PROTECT_FAILED 2
+
+// gRestUsedStringIds
+#define B_MSG_REST 0
+#define B_MSG_REST_STATUSED 1
+
+// gWokeUpStringIds
+#define B_MSG_WOKE_UP 0
+#define B_MSG_WOKE_UP_UPROAR 1
+
+// gUproarAwakeStringIds
+#define B_MSG_CANT_SLEEP_UPROAR 0
+#define B_MSG_UPROAR_KEPT_AWAKE 1
+#define B_MSG_STAYED_AWAKE_USING 2
+
+// gUproarOverTurnStringIds
+#define B_MSG_UPROAR_CONTINUES 0
+#define B_MSG_UPROAR_ENDS 1
+
+// gStockpileUsedStringIds
+#define B_MSG_STOCKPILED 0
+#define B_MSG_CANT_STOCKPILE 1
+
+// gSwallowFailStringIds
+#define B_MSG_SWALLOW_FAILED 0
+#define B_MSG_SWALLOW_FULL_HP 1
+
+// gKOFailedStringIds
+#define B_MSG_KO_MISS 0
+#define B_MSG_KO_UNAFFECTED 1
+
+// gMistUsedStringIds
+#define B_MSG_SET_MIST 0
+#define B_MSG_MIST_FAILED 1
+
+// gFocusEnergyUsedStringIds
+#define B_MSG_GETTING_PUMPED 0
+#define B_MSG_FOCUS_ENERGY_FAILED 1
+
+// gTransformUsedStringIds
+#define B_MSG_TRANSFORMED 0
+#define B_MSG_TRANSFORM_FAILED 1
+
+// gSubstituteUsedStringIds
+#define B_MSG_SET_SUBSTITUTE 0
+#define B_MSG_SUBSTITUTE_FAILED 1
+
+// gPartyStatusHealStringIds
+#define B_MSG_BELL 0
+#define B_MSG_BELL_SOUNDPROOF_ATTACKER 1
+#define B_MSG_BELL_SOUNDPROOF_PARTNER 2
+#define B_MSG_BELL_BOTH_SOUNDPROOF 3
+#define B_MSG_SOOTHING_AROMA 4
+
+// gFutureMoveUsedStringIds
+#define B_MSG_FUTURE_SIGHT 0
+#define B_MSG_DOOM_DESIRE 1
+
+// gItemSwapStringIds
+#define B_MSG_ITEM_SWAP_TAKEN 0
+#define B_MSG_ITEM_SWAP_GIVEN 1
+#define B_MSG_ITEM_SWAP_BOTH 2
+
+// gSportsUsedStringIds
+#define B_MSG_WEAKEN_ELECTRIC 0
+#define B_MSG_WEAKEN_FIRE 1
+
+// gCaughtMonStringIds
+#define B_MSG_SENT_SOMEONES_PC 0
+#define B_MSG_SENT_LANETTES_PC 1
+#define B_MSG_SOMEONES_BOX_FULL 2
+#define B_MSG_LANETTES_BOX_FULL 3
+
+// gInobedientStringIds
+#define B_MSG_LOAFING 0
+#define B_MSG_WONT_OBEY 1
+#define B_MSG_TURNED_AWAY 2
+#define B_MSG_PRETEND_NOT_NOTICE 3
+#define B_MSG_INCAPABLE_OF_POWER 4
+// For randomly selecting a disobey string
+// Skips the one used for Battle Palace
+#define NUM_LOAF_STRINGS 4
+
+// gSafariGetNearStringIds
+#define B_MSG_CREPT_CLOSER 0
+#define B_MSG_CANT_GET_CLOSER 1
+
+// gSafariPokeblockResultStringIds
+#define B_MSG_MON_CURIOUS 0
+#define B_MSG_MON_ENTHRALLED 1
+#define B_MSG_MON_IGNORED 2
+
+// gFlashFireStringIds
+#define B_MSG_FLASH_FIRE_BOOST 0
+#define B_MSG_FLASH_FIRE_NO_BOOST 1
+
+// gBerryEffectStringIds
+#define B_MSG_CURED_PROBLEM 0
+#define B_MSG_NORMALIZED_STATUS 1
+
+// gNoEscapeStringIds
+#define B_MSG_CANT_ESCAPE 0
+#define B_MSG_DONT_LEAVE_BIRCH 1
+#define B_MSG_PREVENTS_ESCAPE 2
+#define B_MSG_CANT_ESCAPE_2 3
+#define B_MSG_ATTACKER_CANT_ESCAPE 4
+
+// gGotPoisonedStringIds / gGotParalyzedStringIds / gFellAsleepStringIds
+// gGotBurnedStringIds / gGotFrozenStringIds / gAttractUsedStringIds
+#define B_MSG_STATUSED 0
+#define B_MSG_STATUSED_BY_ABILITY 1
+
+// gBRNPreventionStringIds / gPRLZPreventionStringIds / gPSNPreventionStringIds
+#define B_MSG_ABILITY_PREVENTS_MOVE_STATUS 0
+#define B_MSG_ABILITY_PREVENTS_ABILITY_STATUS 1
+#define B_MSG_STATUS_HAD_NO_EFFECT 2
+
+// gGotDefrostedStringIds
+#define B_MSG_DEFROSTED 0
+#define B_MSG_DEFROSTED_BY_MOVE 1
+
+// gBattlePalaceFlavorTextTable
+#define B_MSG_GLINT_IN_EYE 0
+#define B_MSG_GETTING_IN_POS 1
+#define B_MSG_GROWL_DEEPLY 2
+#define B_MSG_EAGER_FOR_MORE 3
+
+// gRefereeStringsTable
+#define B_MSG_REF_NOTHING_IS_DECIDED 0
+#define B_MSG_REF_THATS_IT 1
+#define B_MSG_REF_JUDGE_MIND 2
+#define B_MSG_REF_JUDGE_SKILL 3
+#define B_MSG_REF_JUDGE_BODY 4
+#define B_MSG_REF_PLAYER_WON 5
+#define B_MSG_REF_OPPONENT_WON 6
+#define B_MSG_REF_DRAW 7
+#define B_MSG_REF_COMMENCE_BATTLE 8
+
#endif // GUARD_BATTLE_STRING_IDS_H
diff --git a/include/constants/battle.h b/include/constants/battle.h
index 5aa1772d1..658f9ad6f 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -81,6 +81,7 @@
// These persist remain outside of battle and after switching out
#define STATUS1_NONE 0x0
#define STATUS1_SLEEP 0x7
+#define STATUS1_SLEEP_TURN(num) ((num) << 0)
#define STATUS1_POISON 0x8
#define STATUS1_BURN 0x10
#define STATUS1_FREEZE 0x20
@@ -93,12 +94,16 @@
// Volatile status ailments
// These are removed after exiting the battle or switching out
#define STATUS2_CONFUSION 0x00000007
+#define STATUS2_CONFUSION_TURN(num) ((num) << 0)
#define STATUS2_FLINCHED 0x00000008
#define STATUS2_UPROAR 0x00000070
+#define STATUS2_UPROAR_TURN(num) ((num) << 4)
#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
#define STATUS2_LOCK_CONFUSE 0x00000C00
+#define STATUS2_LOCK_CONFUSE_TURN(num) ((num) << 10)
#define STATUS2_MULTIPLETURNS 0x00001000
#define STATUS2_WRAPPED 0x0000E000
+#define STATUS2_WRAPPED_TURN(num) ((num) << 13)
#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler
#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
#define STATUS2_FOCUS_ENERGY 0x00100000
@@ -205,6 +210,7 @@
#define MOVE_EFFECT_BURN 0x3
#define MOVE_EFFECT_FREEZE 0x4
#define MOVE_EFFECT_PARALYSIS 0x5
+#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_TOXIC // All above move effects apply primary status
#define MOVE_EFFECT_TOXIC 0x6
#define MOVE_EFFECT_CONFUSION 0x7
#define MOVE_EFFECT_FLINCH 0x8
diff --git a/include/constants/contest.h b/include/constants/contest.h
new file mode 100644
index 000000000..e960809cc
--- /dev/null
+++ b/include/constants/contest.h
@@ -0,0 +1,44 @@
+#ifndef POKERUBY_CONSTANTS_CONTEST_H
+#define POKERUBY_CONSTANTS_CONTEST_H
+
+
+#define CONTEST_AI_CHECK_BAD_MOVE (1 << 0)
+#define CONTEST_AI_CHECK_COMBO (1 << 1)
+#define CONTEST_AI_CHECK_BORING (1 << 2)
+#define CONTEST_AI_CHECK_EXCITEMENT (1 << 3)
+#define CONTEST_AI_CHECK_ORDER (1 << 4)
+#define CONTEST_AI_CHECK_GOOD_MOVE (1 << 5)
+#define CONTEST_AI_ERRATIC (1 << 6)
+#define CONTEST_AI_DUMMY_1 (1 << 7)
+#define CONTEST_AI_DUMMY_2 (1 << 8)
+#define CONTEST_AI_DUMMY_3 (1 << 9)
+#define CONTEST_AI_DUMMY_4 (1 << 10)
+#define CONTEST_AI_DUMMY_5 (1 << 11)
+#define CONTEST_AI_DUMMY_6 (1 << 12)
+#define CONTEST_AI_DUMMY_7 (1 << 13)
+#define CONTEST_AI_DUMMY_8 (1 << 14)
+#define CONTEST_AI_DUMMY_9 (1 << 15)
+#define CONTEST_AI_DUMMY_10 (1 << 16)
+#define CONTEST_AI_DUMMY_11 (1 << 17)
+#define CONTEST_AI_DUMMY_12 (1 << 18)
+#define CONTEST_AI_DUMMY_13 (1 << 19)
+#define CONTEST_AI_DUMMY_14 (1 << 20)
+#define CONTEST_AI_DUMMY_15 (1 << 21)
+#define CONTEST_AI_DUMMY_16 (1 << 22)
+#define CONTEST_AI_DUMMY_17 (1 << 23)
+#define CONTEST_AI_DUMMY_18 (1 << 24)
+#define CONTEST_AI_DUMMY_19 (1 << 25)
+#define CONTEST_AI_DUMMY_20 (1 << 26)
+#define CONTEST_AI_DUMMY_21 (1 << 27)
+#define CONTEST_AI_DUMMY_22 (1 << 28)
+#define CONTEST_AI_DUMMY_23 (1 << 29)
+#define CONTEST_AI_DUMMY_24 (1 << 30)
+#define CONTEST_AI_DUMMY_25 (1 << 31)
+
+// The below scripts are used by every AI contest opponent
+// It includes every non-dummy script
+#define CONTEST_AI_COMMON (CONTEST_AI_CHECK_BAD_MOVE | CONTEST_AI_CHECK_COMBO | CONTEST_AI_CHECK_BORING | \
+ CONTEST_AI_CHECK_EXCITEMENT | CONTEST_AI_CHECK_ORDER | CONTEST_AI_CHECK_GOOD_MOVE | CONTEST_AI_ERRATIC | \
+ CONTEST_AI_DUMMY_1 | CONTEST_AI_DUMMY_2 | CONTEST_AI_DUMMY_3 | CONTEST_AI_DUMMY_4 | CONTEST_AI_DUMMY_5)
+
+#endif //POKERUBY_CONSTANTS_CONTEST_H
diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h
new file mode 100644
index 000000000..5086b28e6
--- /dev/null
+++ b/include/constants/item_effects.h
@@ -0,0 +1,92 @@
+#ifndef POKERUBY_CONSTANTS_ITEM_EFFECTS_H
+#define POKERUBY_CONSTANTS_ITEM_EFFECTS_H
+
+// field 0 masks
+#define ITEM0_X_ATTACK 0x0F
+#define ITEM0_DIRE_HIT 0x30 // Works the same way as the move Focus Energy.
+#define ITEM0_SACRED_ASH 0x40
+#define ITEM0_INFATUATION 0x80
+
+// field 1 masks
+#define ITEM1_X_SPEED 0x0F
+#define ITEM1_X_DEFEND 0xF0
+
+// field 2 masks
+#define ITEM2_X_SPATK 0x0F
+#define ITEM2_X_ACCURACY 0xF0
+
+// field 3 masks
+#define ITEM3_CONFUSION 0x1
+#define ITEM3_PARALYSIS 0x2
+#define ITEM3_FREEZE 0x4
+#define ITEM3_BURN 0x8
+#define ITEM3_POISON 0x10
+#define ITEM3_SLEEP 0x20
+#define ITEM3_LEVEL_UP 0x40
+#define ITEM3_GUARD_SPEC 0x80 // Works the same way as the move Mist.
+
+#define ITEM3_STATUS_ALL (ITEM3_CONFUSION | ITEM3_PARALYSIS | ITEM3_FREEZE | ITEM3_BURN | ITEM3_POISON | ITEM3_SLEEP)
+
+// field 4 masks
+#define ITEM4_EV_HP 0x1
+#define ITEM4_EV_ATK 0x2
+#define ITEM4_HEAL_HP 0x4
+#define ITEM4_HEAL_PP 0x8
+#define ITEM4_HEAL_PP_ONE 0x10
+#define ITEM4_PP_UP 0x20
+#define ITEM4_REVIVE 0x40
+#define ITEM4_EVO_STONE 0x80
+
+// field 5 masks
+#define ITEM5_EV_DEF 0x1
+#define ITEM5_EV_SPEED 0x2
+#define ITEM5_EV_SPDEF 0x4
+#define ITEM5_EV_SPATK 0x8
+#define ITEM5_PP_MAX 0x10
+#define ITEM5_FRIENDSHIP_LOW 0x20
+#define ITEM5_FRIENDSHIP_MID 0x40
+#define ITEM5_FRIENDSHIP_HIGH 0x80
+
+#define ITEM5_FRIENDSHIP_ALL (ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID | ITEM5_FRIENDSHIP_HIGH)
+
+// fields 6 and onwards are item-specific arguments
+#define ITEM_EFFECT_ARG_START 6
+
+// Special HP recovery amounts for ITEM4_HEAL_HP
+#define ITEM6_HEAL_HP_FULL ((u8) -1)
+#define ITEM6_HEAL_HP_HALF ((u8) -2)
+#define ITEM6_HEAL_HP_LVL_UP ((u8) -3)
+
+// Special PP recovery amounts for ITEM4_HEAL_PP
+#define ITEM6_HEAL_PP_FULL 0x7F
+
+// Amount of EV modified by ITEM4_EV_HP, ITEM4_EV_ATK, ITEM5_EV_DEF, ITEM5_EV_SPEED, ITEM5_EV_SPDEF and ITEM5_EV_SPATK
+#define ITEM6_ADD_EV 10
+#define ITEM6_SUBTRACT_EV -10
+
+// Used for GetItemEffectType.
+#define ITEM_EFFECT_X_ITEM 0
+#define ITEM_EFFECT_RAISE_LEVEL 1
+#define ITEM_EFFECT_HEAL_HP 2
+#define ITEM_EFFECT_CURE_POISON 3
+#define ITEM_EFFECT_CURE_SLEEP 4
+#define ITEM_EFFECT_CURE_BURN 5
+#define ITEM_EFFECT_CURE_FREEZE 6
+#define ITEM_EFFECT_CURE_PARALYSIS 7
+#define ITEM_EFFECT_CURE_CONFUSION 8
+#define ITEM_EFFECT_CURE_INFATUATION 9
+#define ITEM_EFFECT_SACRED_ASH 10
+#define ITEM_EFFECT_CURE_ALL_STATUS 11
+#define ITEM_EFFECT_ATK_EV 12
+#define ITEM_EFFECT_HP_EV 13
+#define ITEM_EFFECT_SPATK_EV 14
+#define ITEM_EFFECT_SPDEF_EV 15
+#define ITEM_EFFECT_SPEED_EV 16
+#define ITEM_EFFECT_DEF_EV 17
+#define ITEM_EFFECT_EVO_STONE 18
+#define ITEM_EFFECT_PP_UP 19
+#define ITEM_EFFECT_PP_MAX 20
+#define ITEM_EFFECT_HEAL_PP 21
+#define ITEM_EFFECT_NONE 22
+
+#endif // POKERUBY_CONSTANTS_ITEM_EFFECTS_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index f5a9f4a6e..d1cec4461 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -141,6 +141,10 @@
#define NUM_STATS 6
#define UNOWN_FORM_COUNT 28
+#define MIN_STAT_STAGE 0
+#define DEFAULT_STAT_STAGE 6
+#define MAX_STAT_STAGE 12
+
#define PLAYER_HAS_TWO_USABLE_MONS 0
#define PLAYER_HAS_ONE_MON 1
#define PLAYER_HAS_ONE_USABLE_MON 2
diff --git a/include/contest.h b/include/contest.h
index bf2613fe3..87e75007a 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -13,6 +13,38 @@ enum
enum
{
+ CONTEST_WINNER_ARTIST,
+ CONTEST_WINNER_NORMAL,
+ CONTEST_WINNER_SUPER,
+ CONTEST_WINNER_HYPER_1,
+ CONTEST_WINNER_HYPER_2,
+ CONTEST_WINNER_HYPER_3,
+ CONTEST_WINNER_MASTER_1,
+ CONTEST_WINNER_MASTER_2,
+ CONTEST_WINNER_MASTER_3,
+ NUM_CONTEST_HALL_WINNERS = CONTEST_WINNER_MASTER_3,
+ MUSEUM_CONTEST_WINNERS_START = CONTEST_WINNER_MASTER_3,
+ CONTEST_WINNER_MUSEUM_COOL,
+ CONTEST_WINNER_MUSEUM_BEAUTY,
+ CONTEST_WINNER_MUSEUM_CUTE,
+ CONTEST_WINNER_MUSEUM_SMART,
+ CONTEST_WINNER_MUSEUM_TOUGH,
+};
+
+enum
+{
+ CONTEST_RANK_NORMAL,
+ CONTEST_RANK_SUPER,
+ CONTEST_RANK_HYPER,
+ CONTEST_RANK_MASTER,
+ CONTEST_RANK_LINK
+};
+
+#define CONTEST_SAVE_FOR_MUSEUM ((u8)-1)
+#define CONTEST_SAVE_FOR_ARTIST ((u8)-2)
+
+enum
+{
CONTEST_EFFECT_HIGHLY_APPEALING,
CONTEST_EFFECT_USER_MORE_EASILY_STARTLED,
CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES,
@@ -263,130 +295,127 @@ void CB2_StartContest(void);
void Contest_CreatePlayerMon(u8);
void Contest_InitAllPokemon(u8, u8);
u8 CanMonParticipateInContest(struct Pokemon *party);
-u16 InitContestMonConditionI(u8, u8);
-void InitContestMonConditions(u8);
+u16 CalculateContestantRound1Points(u8, u8);
+void CalculateRound1Points(u8);
u8 IsSpeciesNotUnown(u16);
-void sub_80AF668(void);
-void sub_80B0F28(u8);
+void CalculateFinalScores(void);
+void SortContestants(u8);
bool8 Contest_SaveWinner(u8);
-u8 sub_80B2C4C(u8, u8);
+u8 GetContestWinnerSaveIdx(u8, u8);
void Contest_ResetWinners(void);
s8 Contest_GetMoveExcitement(u16);
// Contest Shared EWRAM
-struct Shared18000
+struct ContestTempSave
{
- /*0x18000*/ u8 unk18000;
- /*0x18001*/ u8 filler18001[3];
- /*0x18004*/ u16 unk18004[16][16];
- /*0x18204*/ u16 unk18204[0x200];
- /*0x18604*/ u16 unk18604[0x200];
- /*0x18A04*/ u8 unk18A04[0x800];
+ /*0x18004*/ u16 cachedWindowPalettes[16][16];
+ /*0x18204*/ u16 cachedPlttBufferUnfaded[0x200];
+ /*0x18604*/ u16 cachedPlttBufferFaded[0x200];
+ /*0x18A04*/ u8 savedJunk[0x800];
};
struct Contest
{
/*0x19204*/ u8 playerMoveChoice;
- /*0x19205*/ u8 turnNumber;
+ /*0x19205*/ u8 appealNumber;
/*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function
- /*0x1920A*/ u16 unk1920A_0:1; // Task active flags?
- u16 unk1920A_1:1;
- u16 unk1920A_2:1;
- u16 unk1920A_3:1;
- u16 unk1920A_4:1;
- u16 unk1920A_5:1;
- u16 unk1920A_6:1;
- u16 unk1920A_7:1;
- /*0x1920B*/ u16 unk1920B_0:1;
- u16 unk1920B_1:1;
- u16 unk1920B_2:1;
+ /*0x1920A*/ bool16 unk1920A_0:1; // Task active flags?
+ bool16 unk1920A_1:1;
+ bool16 unk1920A_2:1;
+ bool16 unk1920A_3:1;
+ bool16 waitForJudgeSpeechBubble:1;
+ bool16 isShowingApplauseMeter:1;
+ bool16 applauseMeterIsMoving:1;
+ bool16 animatingAudience:1;
+ /*0x1920B*/ bool16 waitForAudienceBlend:1;
+ bool16 sliderHeartsAnimating:1;
+ bool16 waitForLink:1;
/*0x1920C*/ u8 mainTaskId;
/*0x1920D*/ u8 unk1920D[4];
- /*0x19211*/ u8 unk19211;
- /*0x19212*/ u8 unk19212;
+ /*0x19211*/ u8 judgeAttentionTaskId;
+ /*0x19212*/ u8 blendTaskId;
/*0x19213*/ u8 filler19213;
- /*0x19214*/ u8 unk19214;
- /*0x19215*/ u8 unk19215;
- /*0x19216*/ u8 unk19216; // sprite ID
+ /*0x19214*/ u8 turnNumber;
+ /*0x19215*/ u8 currentContestant;
+ /*0x19216*/ u8 judgeSpeechBubbleSpriteId;
/*0x19217*/ s8 applauseLevel;
- /*0x19218*/ u8 unk19218[4];
- /*0x1921C*/ u32 unk1921C; // saved RNG value?
- u16 unk19220[5][4]; // move history?
- u8 unk19248[5][4]; // excitement history
+ /*0x19218*/ u8 prevTurnOrder[4];
+ /*0x1921C*/ u32 unusedRng; // saved RNG value?
+ u16 moveHistory[5][4]; // move history?
+ u8 excitementHistory[5][4]; // excitement history
u8 applauseMeterSpriteId; // sprite ID
- /*0x1925D*/ u8 unk1925D;
- /*0x1925E*/ u8 unk1925E;
+ /*0x1925D*/ u8 contestSetupState;
+ /*0x1925E*/ u8 moveAnimTurnCount;
};
struct ContestantStatus
{
- /*0x00*/ s16 appeal1; // move appeal?
- /*0x02*/ s16 appeal2; // final appeal after end of turn, maybe?
- /*0x04*/ s16 unk4;
+ /*0x00*/ s16 baseAppeal;
+ /*0x02*/ s16 appeal;
+ /*0x04*/ s16 pointTotal;
/*0x06*/ u16 currMove;
/*0x08*/ u16 prevMove;
/*0x0A*/ u8 moveCategory;
- /*0x0B*/ u8 unkB_0:2;
- u8 unkB_2:2;
+ /*0x0B*/ u8 ranking:2;
+ u8 unkB_2:2; // unused
u8 moveRepeatCount:3;
- u8 noMoreTurns:1; // used a one-time move?
- /*0x0C*/ u8 nervous:1;
+ bool8 noMoreTurns:1; // used a one-time move?
+ /*0x0C*/ bool8 nervous:1;
u8 numTurnsSkipped:2;
/*0x0D*/ s8 condition;
/*0x0E*/ u8 jam;
/*0x0F*/ u8 jamReduction;
// Flags set by move effect
- /*0x10*/ u8 resistant:1;
- u8 immune:1;
- u8 moreEasilyStartled:1;
- u8 usedRepeatableMove:1;
+ /*0x10*/ bool8 resistant:1;
+ bool8 immune:1;
+ bool8 moreEasilyStartled:1;
+ bool8 usedRepeatableMove:1;
u8 conditionMod:2; // 1: just raised condition; 2: appeal greatly improved by condition
u8 turnOrderMod:2; // 1: defined; 2: random
/*0x11*/ u8 turnOrderModAction:2; // 1: made first; 2: made last; 3: made random
- u8 turnSkipped:1;
- u8 exploded:1;
- u8 overrideCategoryExcitementMod:1;
- u8 appealTripleCondition:1;
+ bool8 turnSkipped:1;
+ bool8 exploded:1;
+ bool8 overrideCategoryExcitementMod:1;
+ bool8 appealTripleCondition:1;
/*0x12*/ u8 jamSafetyCount;
/*0x13*/ u8 effectStringId; // status action?
/*0x14*/ u8 effectStringId2;
- /*0x15*/ u8 disappointedRepeat:1;
- u8 unk15_1:1;
- u8 unk15_2:1;
- u8 unk15_3:1;
- u8 hasJudgesAttention:1;
- u8 judgesAttentionWasRemoved:1;
- u8 unk15_6:1;
- /*0x16*/ u8 unk16;
- /*0x17*/ u8 unk17;
- /*0x18*/ u8 unk18;
+ /*0x15*/ bool8 repeatedMove:1;
+ bool8 unk15_1:1; // unused
+ bool8 repeatedPrevMove:1;
+ bool8 completedComboFlag:1;
+ bool8 hasJudgesAttention:1;
+ bool8 judgesAttentionWasRemoved:1;
+ bool8 usedComboMove:1;
+ /*0x16*/ u8 completedCombo;
+ /*0x17*/ u8 comboAppealBonus;
+ /*0x18*/ u8 repeatJam;
/*0x19*/ u8 nextTurnOrder; // turn position
/*0x1A*/ u8 attentionLevel; // How much the Pokemon "stood out"
- /*0x1B*/ u8 unk1B;
+ /*0x1B*/ u8 contestantAnimTarget;
};
-// possibly the same as UnknownContestStruct3?
-struct UnknownContestStruct4
+struct ContestGfxState
{
- u8 unk0; // sprite ID
- u8 unk1; // sprite ID
- u8 unk2_0:1;
- u8 unk2_1:1;
- u8 unk2_2:1;
+ u8 sliderHeartSpriteId;
+ u8 nextTurnSpriteId;
+ bool8 sliderUpdating:1;
+ bool8 boxBlinking:1;
+ bool8 updatingAppealHearts:1;
};
-struct UnknownContestStruct5
+struct ContestExcitement
{
- s8 bits_0; // current move excitement?
- u8 excitementFrozen:1;
+ s8 moveExcitement;
+ bool8 excitementFrozen:1;
u8 excitementFreezer:3;
- s8 unk2;
+ s8 excitementAppealBonus;
};
-struct UnknownContestStruct7
+struct ContestAppealMoveResults
{
u8 turnOrder[4];
s16 jam;
@@ -396,49 +425,25 @@ struct UnknownContestStruct7
u8 contestant;
};
-struct UnknownContestStruct8
-{
- u16 unk0;
- u16 unk2;
- u8 unk4_0:1;
- u8 unk5;
- u32 unk8;
- u32 unkC;
- u32 unk10;
-};
-
-struct UnknownContestStruct6
+struct ContestFinalStandings
{
- s32 unk0;
- s32 unk4;
- s32 unk8;
- s32 unkC;
+ s32 totalPoints;
+ s32 round1Points;
+ s32 random;
+ s32 contestant;
};
-// TODO: Please move these to ewram.h once the defines are settled down and figured out completely.
-#define shared15800 (gSharedMem + 0x15800)
-#define shared15DE0 (*(struct ContestWinner *)(gSharedMem + 0x15DE0))
-#define shared16800 (gSharedMem + 0x16800)
-#define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000))
-#define shared18004 ((u16 *)(gSharedMem + 0x18004))
-#define sContest (*(struct Contest *)(gSharedMem + 0x19204))
-#define sContestantStatus ((struct ContestantStatus *)(gSharedMem + 0x19260))
-#define shared192E4 (gSharedMem + 0x192E4)
-#define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328))
-#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338))
-#define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348))
-
extern u8 gContestPlayerMonIndex;
extern u8 gIsLinkContest;
extern u32 gContestRngValue;
-extern u8 gUnknown_02038696[4];
-extern s16 gContestMonConditions[4];
-extern s16 gUnknown_02038678[4];
-extern s16 gUnknown_02038680[4];
-extern s16 gUnknown_02038688[4];
+extern u8 gContestantTurnOrder[4];
+extern s16 gContestMonRound1Points[4];
+extern s16 gContestMonTotalPoints[4];
+extern s16 gContestMonAppealPointTotals[4];
+extern s16 gContestMonRound2Points[4];
extern u8 gContestFinalStandings[4];
-extern u8 gUnknown_02038696[4];
-extern u8 gUnknown_0203869B;
+extern u8 gContestantTurnOrder[4];
+extern u8 gContestLinkLeaderIndex;
extern u16 gSpecialVar_ContestRank;
extern u16 gSpecialVar_ContestCategory;
extern u8 gContestMonPartyIndex;
@@ -447,7 +452,7 @@ void SetContestantEffectStringID(u8 a, u8 b);
void SetContestantEffectStringID2(u8 a, u8 b);
void MakeContestantNervous(u8 p);
bool8 Contest_IsMonsTurnDisabled(u8 a);
-bool8 sub_80B214C(u8 a);
+bool8 IsContestantAllowedToCombo(u8 contestant);
void SetStartledString(u8 a, u8 b);
#endif // GUARD_CONTEST_H
diff --git a/include/contest_internal.h b/include/contest_internal.h
new file mode 100644
index 000000000..1c9e875ea
--- /dev/null
+++ b/include/contest_internal.h
@@ -0,0 +1,154 @@
+#ifndef GUARD_CONTEST_INTERNAL_H
+#define GUARD_CONTEST_INTERNAL_H
+
+void InitContestResources(void);
+void Task_StartContestWaitFade(u8 taskId);
+void Task_TryStartLinkContest(u8 taskId);
+void Task_CommunicateMonIdxs(u8 taskId);
+void Task_EndCommunicateMonIdxs(u8 taskId);
+void Task_ReadyStartLinkContest(u8 taskId);
+u8 SetupContestGraphics(u8 *a);
+void Task_WaitToRaiseCurtainAtStart(u8 taskId);
+void Task_RaiseCurtainAtStart(u8 taskId);
+void ContestMainCallback2(void);
+void ContestVBlankCallback(void);
+void Task_DisplayAppealNumberText(u8 taskId);
+void sub_80ABC3C(u8);
+void Task_TryShowMoveSelectScreen(u8 taskId);
+void Task_ShowMoveSelectScreen(u8 taskId);
+void Task_HandleMoveSelectInput(u8 taskId);
+void DrawMoveSelectArrow(s8 a);
+void EraseMoveSelectArrow(s8 a); // nullsub
+void Task_SelectedMove(u8 taskId);
+void Task_EndCommunicateMoveSelections(u8 taskId);
+void Task_HideMoveSelectScreen(u8 taskId);
+void Task_HideApplauseMeterForAppealStart(u8 taskId);
+void Task_WaitHideApplauseMeterForAppealStart(u8 taskId);
+void Task_AppealSetup(u8 taskId);
+void Task_DoAppeals(u8 taskId);
+void Task_EndWaitForLink(u8 taskId);
+void SpriteCB_MonSlideIn(struct Sprite *sprite);
+void SpriteCB_MonSlideOut(struct Sprite *sprite);
+void Task_FinishRoundOfAppeals(u8 taskId);
+void Task_ReadyUpdateHeartSliders(u8 taskId);
+void Task_UpdateHeartSliders(u8 taskId);
+void Task_WaitForHeartSliders(u8 taskId);
+void sub_80ADB04(u8 taskId);
+void Task_WaitBeforePrintRoundResult(u8 taskId);
+void Task_PrintRoundResultText(u8 taskId);
+void Task_WaitPrintRoundResultText(u8 taskId);
+void Task_ReUpdateHeartSliders(u8 taskId);
+void Task_WaitForHeartSlidersAgain(u8 taskId);
+void Task_DropCurtainAtRoundEnd(u8 taskId);
+void Task_TryStartNextRoundOfAppeals(u8 taskId);
+void Task_StartNewRoundOfAppeals(u8 taskId);
+void Task_EndAppeals(u8 taskId);
+void Task_WaitForOutOfTimeMsg(u8 taskId);
+void Task_DropCurtainAtAppealsEnd(u8 taskId);
+void Task_TryCommunicateFinalStandings(u8 taskId);
+void Task_CommunicateFinalStandings(u8 taskId);
+void Task_EndCommunicateFinalStandings(u8 taskId);
+void Task_ContestReturnToField(u8 taskId);
+void FieldCB_ContestReturnToField(void);
+void InsertStringDigit(u8 *, s32);
+bool8 IsPlayerLinkLeader(void);
+void __copy_tilemap(void *);
+void PrintContestantTrainerName(u8 contestant);
+void PrintContestantTrainerNameWithColor(u8 contestant, u8 color);
+void PrintContestantMonName(u8 contestant);
+void PrintContestantMonNameWithColor(u8 contestant, u8 color);
+u8 CreateJudgeSprite(void);
+u8 CreateJudgeSpeechBubbleSprite(void);
+u8 CreateContestantSprite(u16, u32, u32);
+void SwapMoveDescAndContestTilemaps(void);
+void PrintContestMoveDescription(u16);
+void Contest_ClearMoveDescriptionBox(void);
+bool8 UpdateConditionStars(u8, u8);
+bool8 DrawStatusSymbol(u8);
+void DrawStatusSymbols(void);
+void ContestClearGeneralTextWindow(void);
+u16 GetChosenMove(u8);
+void GetAllChosenMoves(void);
+void sub_80AF2A0(u8);
+void RankContestants(void);
+void SetAttentionLevels(void);
+s16 GetContestantRound2Points(u8 a);
+void DetermineFinalStandings(void);
+bool8 DidContestantPlaceHigher(s32 a, s32 b, struct ContestFinalStandings *c);
+void ContestPrintLinkStandby(void);
+void Task_unused_80AF94C(u8 taskId);
+void FillContestantWindowBgs(void);
+u16 GetAppealHeartTileOffset(u8 a);
+s8 GetNumHeartsFromAppealPoints(s16 a);
+u8 UpdateAppealHearts(s16 startAppeal, s16 appealDelta, u8 contestant);
+void Task_UpdateAppealHearts(u8 taskId);
+void CreateSliderHeartSprites(void);
+void UpdateHeartSliders(void);
+bool8 SlidersDoneUpdating(void);
+void sub_80AFF60(struct Sprite *);
+void SetBottomSliderHeartsInvisibility(bool8);
+void CreateNextTurnSprites(void);
+void CreateApplauseMeterSprite(void);
+void nullsub_18(s8);
+void sub_80B0238(struct Sprite *);
+void sub_80B0280(struct Sprite *);
+void sub_80B02A8(struct Sprite *);
+void sub_80B02F4(struct Sprite *);
+void CreateJudgeAttentionEyeTask(void);
+void sub_80B03A8(u8);
+void sub_80B03D8(u8);
+void sub_80B0458(u8);
+void CreateUnusedBlendTask(void);
+void InitUnusedBlendTaskData(u8 contestant);
+void UpdateBlendTaskContestantData(u8 contestant);
+void nullsub_19(int);
+void Task_UnusedBlend(u8 taskId);
+void Task_UnusedBrokenBlend(u8 taskId);
+void StartStopFlashJudgeAttentionEye(u8);
+u8 CreateContestantBoxBlinkSprites(u8);
+void BlinkContestantBox(u8, bool8);
+void SpriteCB_BlinkContestantBox(struct Sprite *);
+void SpriteCB_EndBlinkContestantBox(struct Sprite *);
+void Unused_EndBlinkingState(u8 a, int unused);
+void ContestDebugTogglePointTotal(void);
+void ContestDebugDoPrint(void);
+void DrawContestantWindows(void);
+void CalculateAppealMoveImpact(u8 contestant);
+void PrintAppealMoveResultText(u8, u8);
+void ApplyNextTurnOrder(void);
+void DoJudgeSpeechBubble(u8);
+void UpdateApplauseMeter(void);
+u8 StartApplauseOverflowAnimation(void);
+void Task_ApplauseOverflowAnimation(u8);
+void SlideApplauseMeterIn(void);
+void Task_SlideApplauseMeterIn(u8);
+void SlideApplauseMeterOut(void);
+void Task_SlideApplauseMeterOut(u8);
+void ShowAndUpdateApplauseMeter(s8);
+void Task_ShowAndUpdateApplauseMeter(u8);
+void AnimateAudience(void);
+void Task_AnimateAudience(u8);
+void BlendAudienceBackground(s8 excitementDir, s8 blendDir);
+void Task_BlendAudienceBackground(u8 taskId);
+void ShowHideNextTurnGfx(bool8 a);
+const u8 *GetTurnOrderNumberGfx(u8);
+void DrawUnnervedSymbols(void);
+void SetBgForCurtainDrop(void);
+void UpdateContestantBoxOrder(void);
+void Task_StartDropCurtainAtRoundEnd(u8 taskId);
+void Task_UpdateCurtainDropAtRoundEnd(u8 taskId);
+void Task_ResetForNextRound(u8 taskId);
+void Task_WaitRaiseCurtainAtRoundEnd(u8 taskId);
+void Task_StartRaiseCurtainAtRoundEnd(u8 taskId);
+void AnimateSliderHearts(u8 animId);
+void Task_WaitForSliderHeartAnim(u8 taskId);
+u16 SanitizeMove(u16 move);
+u16 SanitizeSpecies(u16 species);
+void SetMoveSpecificAnimData(u8 contestant);
+void ClearMoveAnimData(u8 contestant);
+void SetMoveAnimAttackerData(u8 contestant);
+void CreateInvisibleBattleTargetSprite(void);
+void SetBattleTargetSpritePosition(void);
+void SelectContestMoveBankTarget(u16);
+
+#endif //GUARD_CONTEST_INTERNAL_H
diff --git a/include/contest_link.h b/include/contest_link.h
new file mode 100644
index 000000000..3bd5fa2bb
--- /dev/null
+++ b/include/contest_link.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_CONTEST_LINK_H
+#define GUARD_CONTEST_LINK_H
+
+void sub_80C8734(u8 taskId);
+void Task_LinkContest_CommunicateRng(u8 taskId);
+void Task_LinkContest_CommunicateMonIdxs(u8 taskId);
+void Task_LinkContest_CommunicateLeaderIds(u8 taskId);
+void Task_LinkContest_CommunicateRound1Points(u8 taskId);
+void Task_LinkContest_CommunicateTurnOrder(u8 taskId);
+u8 GetStringLanguage(const u8 *string);
+void Task_LinkContest_Init(u8 taskId);
+void Task_LinkContest_CommunicateCategory(u8 taskId);
+
+#endif // GUARD_CONTEST_LINK_H
diff --git a/include/contest_link_80C857C.h b/include/contest_link_80C857C.h
deleted file mode 100644
index 15f41fe7f..000000000
--- a/include/contest_link_80C857C.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef GUARD_CONTEST_LINK_80C857C_H
-#define GUARD_CONTEST_LINK_80C857C_H
-
-void sub_80C8734(u8);
-void sub_80C88AC(u8);
-void sub_80C89DC(u8);
-void sub_80C8E1C(u8);
-void sub_80C8EBC(u8);
-void sub_80C8F34(u8);
-u8 GetStringLanguage(const u8 *string);
-void sub_80C8604(u8 taskId);
-void sub_80C8938(u8 taskId);
-
-#endif // GUARD_CONTEST_LINK_80C857C_H
diff --git a/include/contest_link_80C2020.h b/include/contest_link_util.h
index 5b1390ce1..8c527f971 100644
--- a/include/contest_link_80C2020.h
+++ b/include/contest_link_util.h
@@ -1,15 +1,15 @@
-#ifndef GUARD_CONTEST_LINK_80C2020_H
-#define GUARD_CONTEST_LINK_80C2020_H
+#ifndef GUARD_CONTEST_LINK_UTIL_H
+#define GUARD_CONTEST_LINK_UTIL_H
void sub_80C2358(void);
void Contest_GetTrainerNameI_StringVar1(void);
void Contest_GetNicknameI_StringVar1(void);
void sub_80C48C8(void);
-void sub_80C48F4(void);
+void Contest_GetSpeciesNameI_StringVar1(void);
void sub_80C4940(void);
-void sub_80C4980(u8);
-u8 sub_80C4B34(u8 *);
+void ContestLinkTransfer(u8 category);
+u8 LinkContest_GetLeaderIndex(u8 *a0);
void Contest_CopyAndConvertTrainerName_Intl(u8 *, const u8 *);
void Contest_CopyAndConvertNicknameI_Intl(u8 *, u8);
-#endif // GUARD_CONTEST_LINK_80C2020_H
+#endif // GUARD_CONTEST_LINK_UTIL_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index 81535ec8b..fda6e963a 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -32,21 +32,10 @@ enum
CONTESTRESULT_TOUGH = 6,
};
-struct Unk2015E00
+struct ContestPaintingBuffers
{
- u16 unk2015e00[128][32];
- u16 unk2017e00[0];
-};
-
-struct ContestEntry
-{
- /*0x00*/ u32 personality;
- /*0x04*/ u32 otId;
- /*0x08*/ u16 species;
- /*0x0A*/ u8 contestType;
- /*0x0B*/ u8 pokemon_name[POKEMON_NAME_LENGTH];
- /*0x15*/ u8 pad15;
- /*0x16*/ u8 trainer_name[OT_NAME_LENGTH];
+ u16 pixels[0x1000];
+ u16 palette[0x100];
};
struct LabelPair
@@ -55,7 +44,7 @@ struct LabelPair
const u8 *suffix;
};
-void sub_8106630(u32);
+void SetContestWinnerForPainting(u32 contestWinnerId);
void CB2_ContestPainting(void);
#endif
diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h
deleted file mode 100644
index 8b99ba692..000000000
--- a/include/contest_painting_effects.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef GUARD_CUTE_SKETCH_H
-#define GUARD_CUTE_SKETCH_H
-
-struct Unk03005E20
-{
- u8 var_0;
- u8 pad1[3];
- u16 (*var_4)[][32];
- u16 *var_8;
- u8 pad0C[4];
- u16 (*var_10)[][32];
- u16 var_14;
- u16 var_16;
- u8 var_18;
- u8 var_19;
- u8 var_1A;
- u8 var_1B;
- u8 var_1C;
- u8 var_1D;
- u8 var_1E;
- u8 var_1F;
-};
-
-void sub_80FC7A0(struct Unk03005E20 *);
-void sub_80FD8CC(struct Unk03005E20 *);
-void sub_80FDA18(struct Unk03005E20 *);
-
-#endif // GUARD_CUTE_SKETCH_H
diff --git a/include/script_pokemon_80C4.h b/include/contest_util.h
index fab07994e..a22bd9548 100644
--- a/include/script_pokemon_80C4.h
+++ b/include/contest_util.h
@@ -6,7 +6,7 @@ void sub_80C5580(void);
void SetBattleTowerPlayerParty(void);
void ReducePlayerPartyToThree(void);
-u8 sub_80C4D50(void);
+u8 CountPlayerMuseumPaintings(void);
void ShowContestWinner(void);
void ScrSpecial_HealPlayerParty();
u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
diff --git a/include/credits.h b/include/credits.h
index dabe24048..34a166e72 100644
--- a/include/credits.h
+++ b/include/credits.h
@@ -6,6 +6,6 @@
// Exported RAM declarations
// Exported ROM declarations
-void sub_81439D0(void);
+void CB2_StartCreditsSequence(void);
#endif //GUARD_credits_H
diff --git a/include/data2.h b/include/data2.h
index ed23a10ce..c5c8a42fb 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -21,9 +21,9 @@ extern const struct SpriteFrameImage gSpriteImageTable_81E7A30[];
extern const struct SpriteFrameImage gSpriteImageTable_81E7A50[];
extern const struct SpriteFrameImage gSpriteImageTable_81E7A70[];
extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7B70[];
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[];
+extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[];
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];
+extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[];
extern const union AnimCmd *const gSpriteAnimTable_81E7C64[];
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct MonCoords gMonBackPicCoords[];
@@ -48,8 +48,8 @@ extern const u8 gUnknown_081F96C8[];
extern const struct CompressedSpriteSheet gUnknown_081FAEA4;
extern const struct CompressedSpritePalette gUnknown_081FAEAC;
extern const struct SpriteTemplate gSpriteTemplate_81FAF0C;
-extern u8 *const gUnknown_081FAF4C[];
-//extern u8 (*const gUnknown_081FAF4C[])[0x800];
+extern u8 *const gMonSpriteGfx_Sprite_ptr[];
+//extern u8 (*const gMonSpriteGfx_Sprite_ptr[])[0x800];
extern const struct BattleMove gBattleMoves[];
// data/graphics/trainers/front_pic_coords.inc
diff --git a/include/decompress.h b/include/decompress.h
index a97dd78f1..5bf992217 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -10,8 +10,10 @@ void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *s
void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);
void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *src, void *buffer);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 coords, u8 y_offset, void *d, void *dest, s32 species);
-void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 coords, u32 y_offset, u32 d, void *dest, s32 species, u32 pid);
-void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 coords, u32 y_offset, u32 d, void *dest, s32 species, u32 pid, u32 frontOrBack);
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 coords, u32 y_offset,
+ void *decompBuf, void *dest, s32 species, u32 pid);
+void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 b, u32 c,
+ void *decompBuffer, void *dest, s32 species, u32 pid, u32 frontOrBack);
void Unused_LZDecompressWramIndirect(const void **src, void *dest);
#endif // GUARD_DECOMPRESS_H
diff --git a/include/dewford_trend.h b/include/dewford_trend.h
index 16b2bdd75..5540d6655 100644
--- a/include/dewford_trend.h
+++ b/include/dewford_trend.h
@@ -3,7 +3,7 @@
void InitDewfordTrend(void);
bool8 sub_80FA364(u16 *a);
-void sub_80FA4E4(void *, u32, u8);
+void ReceiveDewfordTrendData(void *, u32, u8);
void UpdateDewfordTrendPerDay(u16);
#endif
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 729bc0b62..468902e4c 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -18,7 +18,7 @@ struct Shared1000
u16 *unk4;
u8 unk8;
u8 unk9;
- u8 unkA; // length of unkC array
+ u8 unkA; // length of contestant array
u8 unkB; // reporter talked to (Gabby or Ty)
u16 unkC[9];
void (*unk20)(void);
diff --git a/include/ewram.h b/include/ewram.h
index da544f5c2..e1639e4a9 100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -2,278 +2,171 @@
#define GUARD_EWRAM_H
extern u8 gSharedMem[];
-#define ewram_addr 0x02000000 // used in gSharedMem addr hacks
// Note: we have duplicate ewram labels because its clear some memory
// regions overlap others but have different definitions. Until some
// dupes can be determined to be the same, they will be deliberate
// seperated.
+#define gDecompressionBuffer (gSharedMem + 0x1E000)
+
+// battle_interface.c
+#define eBattleInterfaceGfxBuffer ((u8 *)EWRAM)
+
+// region_map.c, field_region_map.c
+#define eRegionMapState (*(struct RegionMapState *)gSharedMem)
+
+// field_weather.c
#define eDroughtPaletteData (*(struct WeatherPaletteData *)gSharedMem)
+
+// battle etc.
+// This overlaps with so many things it's not even funny
+// The actual data starts at 0x02014000
+#define eMultiTxBuffer (*(union MultiBuffers *)gSharedMem)
#define gBattleStruct ((struct BattleStruct *) (gSharedMem + 0x0))
-#define ewram0_2 (*(struct Struct2000000 *)(gSharedMem + 0x0))
-#define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0))
-#define ewramBerryPic (gSharedMem + 0x0)
-#define ewram0_4 (*(struct Unk2000000 *)(gSharedMem + 0x0))
-#define ewram0_5 (*(struct UnkStruct *)(gSharedMem + 0x0))
-#define eMatsudaDebugVar (gSharedMem[0x0])
-#define eBrendanSprite (gSharedMem + 0x0)
-#define ewram0_6 (u32)(&gSharedMem[0])
-#define ewram0_7 (&gSharedMem[0])
-#define eSaveSection (struct SaveSector *)(gSharedMem + 0x0)
-#define ewram0arr ((u8 (*)[32])gSharedMem)
-#define eVoidSharedArr (void *)(ewram_addr + 0x0)
-#define eVoidSharedArr2 (u32)(ewram_addr) // ew(ram)
-#define eSlotMachine ((struct SlotMachineEwramStruct *)(gSharedMem + 0x0))
-#define ewram0_9(i) (u8 *)(ewram_addr + (i * 0x20))
-#define ePokemonStorageSystem (*(struct PokemonStorageSystemData *)(gSharedMem + 0))
-#define ewram4 (*(struct UnknownStruct8 *)(gSharedMem + 0x4))
-#define ewram520 ((struct UnknownStruct7 *)(gSharedMem + 0x00520))
-#define ewram520_2 (u8 *)(ewram_addr + 0x520)
-#define eMaySprite (gSharedMem + 0x800)
-#define ewram888 (gSharedMem + 0x888)
-#define ewramBlankMapName (gSharedMem + 0xA48)
-#define ewramA6E (gSharedMem[0xA6E])
-#define ewram01000 (*(struct Unk2001000 *)(gSharedMem + 0x1000))
-#define ewramBerryPicTemp (gSharedMem + 0x1000)
-#define EWRAM_1000 (*(struct Struct2001000 *)(gSharedMem + 0x1000))
-#define ewram4000 (gSharedMem + 0x4000)
-#define gUnknown_02007000 (*(ewramStruct_02007000 *)(gSharedMem + 0x7000))
-#define ARRAY_2007800 ((struct EasyChatPair *)(gSharedMem + 0x7800))
-#define ARRAY_2007900 ((struct EasyChatPair *)(gSharedMem + 0x7900))
-#define ewram_2008000 (*(struct PlayerRecords *)(gSharedMem + 0x08000))
-#define ewram8000 (&gSharedMem[0x8000])
-#define ePokedexPalAddr1 (void *)(gSharedMem + 0x8000)
-#define ewram8800 (&gSharedMem[0x8800])
-#define ewram9000 (&gSharedMem[0x9000])
-#define ewram9000_hack (void *)(ewram_addr + 0x9000) // TODO: Fix this.
-#define ewram9800 (&gSharedMem[0x9800])
-#define ewramA000 (&gSharedMem[0xA000])
-#define ewramA800 (&gSharedMem[0xA800])
-#define ewramB000 (&gSharedMem[0xB000])
-#define ewramB800 (&gSharedMem[0xB800])
+// This macro ensures that any changes to the battle struct
+// definition will not horribly break things in battle.
+#define BSTRUCT_OFF(member) (offsetof(struct BattleStruct, member) + ((u8 *)gBattleStruct - gSharedMem))
+#define BCOMM(buff, member, blockOff, i) (gSharedMem[BSTRUCT_OFF(buff) + offsetof(struct LinkBattleCommunicationHeader, member) + blockOff + i])
+
+// battle_transition.c
#define TRANSITION_STRUCT (*(struct TransitionData *) (gSharedMem + 0xC000))
-#define ewramC000 (&gSharedMem[0xC000])
-#define ePokedexPalAddr2 (void *)(gSharedMem + 0xC000)
-#define ewramC03C (&gSharedMem[0xC03C])
-#define ewramC800 (&gSharedMem[0xC800])
-#define ewramD000 (&gSharedMem[0xD000])
-#define ewramD800 (&gSharedMem[0xD800])
-#define ewramE000 (&gSharedMem[0xE000])
-#define ewramE800 (&gSharedMem[0xE800])
-#define ewramF000 (&gSharedMem[0xF000])
-#define ewramF800 (&gSharedMem[0xF800])
-#define ewram_2010000 (*(struct TradeEwramStruct *)(gSharedMem + 0x10000))
-#define ewram10000 (&gSharedMem[0x10000])
-#define eSlotMachineGfxBuffer (void *)(gSharedMem + 0x10000) // slot machine
-#define ePokedexPalAddr3 (void *)(gSharedMem + 0x10000)
-#define ewram10800 (&gSharedMem[0x10800])
-#define ewram11000 (&gSharedMem[0x11000])
-#define ewram11800 (&gSharedMem[0x11800])
-#define ewram12000 (&gSharedMem[0x12000])
-#define ewram12800 (&gSharedMem[0x12800])
-#define ewram13000 (&gSharedMem[0x13000])
-#define eSlotMachineReelTimeGfxBuffer (&gSharedMem[0x13200])
-#define ewram13800 (&gSharedMem[0x13800])
-#define EWRAM_14000 ((u8 *)(gSharedMem + 0x14000))
-#define ewram14000 (&gSharedMem[0x14000])
-#define ePokedexPalAddr4 (void *)(gSharedMem + 0x14000)
-#define ewram14000arr(i, data) (gSharedMem[0x14000 + i + data])
-#define ewram14004arr(i, data) (gSharedMem[0x14004 + i + data])
-#define ewram14008arr(i, data) (gSharedMem[0x14008 + data + i])
-#define ewram14800 (&gSharedMem[0x14800])
-#define EWRAM_14800 ((u16 *)(gSharedMem + 0x14800))
-#define sEvoInfo ((*(struct EvoInfo*)(gSharedMem + 0x14800)))
-#define EWRAM_15000 ((u8 *)(gSharedMem + 0x15000))
-#define ewram15000 (&gSharedMem[0x15000])
-#define ewram15000arr(i, data) (gSharedMem[0x15000 + data + i])
-#define ewram15800 (&gSharedMem[0x15800])
-#define ewram15DDE (gSharedMem[0x15DDE])
-#define ewram15DDF (gSharedMem[0x15DDF])
-#define ewram15DE0 ((*(struct ContestEntry*)(gSharedMem + 0x15DE0)))
-#define ewram15E00 ((*(struct Unk2015E00*)(gSharedMem + 0x15E00)))
-#define ewram16000 (gSharedMem[0x16000])
-#define ewram16000_2 (&gSharedMem[0x16000])
-#define ewram16001 (gSharedMem[0x16001])
-#define ewram16002 (gSharedMem[0x16002])
-#define ewram16003 (gSharedMem[0x16003])
-#define ewram16004arr(i, battler) (gSharedMem[0x16004 + i + battler * 2])
-#define ewram1600C (gSharedMem[0x1600C])
-#define ewram1600E (gSharedMem[0x1600E])
-#define ewram16010arr(battler) (gSharedMem[0x16010 + battler])
-#define ewram1601B (gSharedMem[0x1601B])
-#define eDynamicMoveType (gSharedMem[0x1601C])
-#define eFocusPunchBattler (gSharedMem[0x1601D])
-#define eDmgMultiplier (gSharedMem[0x1601F])
-#define ewram16020 ((u8 *)(gSharedMem + 0x16020))
-#define ewram16020arr(i) (gSharedMem[0x16020 + i])
-#define ewram16054 (gSharedMem[0x16054])
-#define ewram16056 (gSharedMem[0x16056])
-#define ewram16058 (gSharedMem[0x16058])
-#define ewram16059 (gSharedMem[0x16059])
-#define ewram16060(battler) (gSharedMem[0x16060 + battler])
-#define BATTLE_PARTY_ID(battler) (gSharedMem[0x16064 + battler])
-#define ewram16064 (&gSharedMem[0x16064])
-#define ewram16064arr(battler) (gSharedMem[0x16064 + battler])
-#define ewram16068arr(i) (gSharedMem[0x16068 + i])
-#define UNK_201606C_ARRAY (gSharedMem + 0x1606C) // lazy define but whatever.
-#define ewram1606Carr(i, a) (gSharedMem[0x1606C + i + a * 3])
-#define ewram16078 (gSharedMem[0x16078])
-#define ewram16084 (gSharedMem[0x16084])
-#define ewram16086 (gSharedMem[0x16086])
-#define ewram16087 (gSharedMem[0x16087])
-#define ewram16088 (gSharedMem[0x16088])
-#define ewram16088_2 (*(u8 *)(gSharedMem + 0x16088))
-#define ewram16089 (gSharedMem[0x16089])
-#define ewram16089_2 (*(u8 *)(gSharedMem + 0x16089))
-
-// src/battle/anim/battle_intro.c
-#define ewram1608A gSharedMem[0x1608A]
-#define ewram1608B gSharedMem[0x1608B]
-
-#define ewram1608Carr(battler) (gSharedMem[0x1608C + battler])
-#define ewram16094arr(battler) (gSharedMem[0x16094 + battler])
-#define EWRAM_1609D (gSharedMem[0x1609D])
-#define ewram1609e(flank) (gSharedMem[0x1609E + (flank)])
-#define ewram160A1 (gSharedMem[0x160A1])
-#define ewram160A4 (gSharedMem[0x160A4])
-#define ewram160A5 (gSharedMem[0x160A5])
-#define ewram160A6 (gSharedMem[0x160A6])
-#define ewram160A8 (gSharedMem[0x160A8])
-#define ewram160A9 (gSharedMem[0x160A9])
-#define ewram160AA (gSharedMem[0x160AA])
-#define ewram160AB (gSharedMem[0x160AB])
-#define ewram160AC ((u8 *)(gSharedMem + 0x160AC))
-#define ewram160ACarr(i) (gSharedMem[0x160AC + i])
-#define ewram160ACarr2(i, battler) (gSharedMem[0x160AC + i + battler * 2])
-#define ewram160BC ((u16 *)(gSharedMem + 0x160BC)) // hp
-#define ewram160BCarr(battler) (gSharedMem[0x160BC + battler * 2])
-#define ewram160C0 (gSharedMem[0x160C0])
-#define ewram160C2_Flags ((u16 *)(gSharedMem + 0x160C2))
-#define ewram160C4_Callback ((MainCallback *)(gSharedMem + 0x160C4))
-#define ewram160C8 (gSharedMem[0x160C8])
-#define ewram160C8arr(battler) (gSharedMem[0x160C8 + (battler / 2)])
-#define ewram160C9 (gSharedMem[0x160C9])
-#define ewram160CB (gSharedMem[0x160CB])
-#define ewram160CC ((u8 *)(gSharedMem + 0x160CC))
-#define ewram160CCarr(i) (gSharedMem[0x160CC + i])
-#define USED_HELD_ITEM(battler) ((((u16*)(&gSharedMem[0x160CC + battler * 2]))))
-#define USED_HELD_ITEMS(battler) (*(u16 *)&gSharedMem[0x160CC + 2 * (battler)])
-#define ewram160D4(battler) (gSharedMem[0x160D4 + (battler / 2) * 2])
-#define ewram160D8(battler) (gSharedMem[0x160D8 + (battler / 2)])
-#define ewram160DA(battler) (gSharedMem[0x160DA + (battler >> 1)])
-#define ewram160DD (gSharedMem[0x160DD])
-#define ewram160E0(i) (gSharedMem[0x160E0 + i])
-#define ewram160E6 (gSharedMem[0x160E6])
-#define ewram160E7 (gSharedMem[0x160E7])
-#define CHOICED_MOVE(battler) (((u16*)(&gSharedMem[0x160E8 + battler * 2])))
-#define ewram160E8 ((u8 *)(gSharedMem + 0x160E8))
-#define ewram160E8arr(i) (gSharedMem[0x160E8 + i])
-#define ewram160E8arr2(i, battler) (gSharedMem[0x160E8 + i + battler * 2])
-#define ewram160F0 ((u8 *)(gSharedMem + 0x160F0))
-#define ewram160F0arr(i) (gSharedMem[0x160F0 + i])
-#define ewram160F8 (gSharedMem[0x160F8])
-#define ewram160F9 (gSharedMem[0x160F9])
-#define eStatHp (gSharedMem[0x160FA])
-#define ewram160FB (gSharedMem[0x160FB])
-#define ewram16100 ((u8 *)(gSharedMem + 0x16100))
-#define ewram16100arr(i) (gSharedMem[0x16100 + i])
-#define ewram16100arr2(i, battler) (gSharedMem[0x16100 + i + battler * 4])
-#define ewram16108 ((u8 *)(gSharedMem + 0x16108))
-#define ewram16108arr(i) (gSharedMem[0x16108 + i])
-#define ewram16110 (gSharedMem[0x16110])
-#define ewram16111 (gSharedMem[0x16111])
-#define eMultihitMoveEffect (gSharedMem[0x16112])
-#define ewram16113 (gSharedMem[0x16113])
+#define eTransitionMugshotDecompBuff (&gSharedMem[0xC03C])
+
#define ewram16400 (gSharedMem + 0x16400)
+
+// gBattleResources
#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gSharedMem + 0x16800))
#define AI_BATTLE_HISTORY ((struct BattleHistory *) (gSharedMem + 0x16A00))
#define AI_STACK ((struct AI_Stack *) (gSharedMem + 0x16C00))
-#define AI_ARRAY_160CC(i) (gSharedMem[0x160CC + i * 2])
-#define ewram16800 (&gSharedMem[0x16800])
-#define ewram17000 (&gSharedMem[0x17000])
-#define eMoveTutorMenu (struct MoveTutorMenu *)(gSharedMem + 0x17000)
#define eSecretBaseRecord ((struct SecretBaseRecord *)(gSharedMem + 0x17000))
-#define eCableCar1 ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000))
-#define ewram17002 (&gSharedMem[0x17002])
-#define eFlashFireArr (*(struct Struct2017100 *)(gSharedMem + 0x17100))
+#define eBattleFlagsArr (*(struct ResourceFlags *)(gSharedMem + 0x17100))
#define B_BATTLESCRIPTS_STACK ((struct BattleScriptsStack *) (gSharedMem + 0x17110))
-#define ewram17130 (gSharedMem[0x17130])
#define B_FUNCTION_STACK ((struct BattleCallbacksStack *) (gSharedMem + 0x17140))
-#define ewram17160 (gSharedMem[0x17160])
-#define ewram17800 ((struct Struct2017800 *) (gSharedMem + 0x17800))
-#define ewram17800_2 (&gSharedMem[0x17800])
-#define EWRAM_17800 ((struct UnknownStruct1 *)(gSharedMem + 0x17800))
-#define eTransformStatuses ((struct TransformStatus *)(gSharedMem + 0x17800))
+#define gBattleResources_statsBeforeLvlUp ((struct StatsArray *)(gSharedMem + 0x17180))
+#define gBattleSpriteInfo ((struct BattleSpriteInfo *) (gSharedMem + 0x17800))
#define ewram17810 ((struct Struct2017810 *) (gSharedMem + 0x17810))
-#define EWRAM_17810 ((struct UnknownStruct3 *)(gSharedMem + 0x17810))
#define ewram17840 (*(struct Struct2017840 *) (gSharedMem + 0x17840))
-#define ewram17850 ((struct UnknownStruct5 *)(gSharedMem + 0x17850))
-#define ewram17E00 ((u16 *)(gSharedMem + 0x17E00))
-#define ewram_2018000 (*(struct PlayerRecords *)(gSharedMem + 0x18000))
-#define EWRAM_18000 ((u16 *)(gSharedMem + 0x18000))
-#define ewram18000 ((u16 *)(gSharedMem + 0x18000))
-#define ewram18000_2 (&gSharedMem[0x18000])
-#define ewram18000_3 *(struct Pokemon **)(gSharedMem + 0x18000)
-#define eBerryBlenderData (struct BerryBlenderData*)(&gSharedMem[0x18000])
-#define eEggHatchData (struct EggHatchData*)(&gSharedMem[0x18000])
+#define eBattleBars ((struct BattleBar *)(gSharedMem + 0x17850))
+
+#define eBattleAnimPalBackup_Battle ((u16 *)(gSharedMem + 0x18000)) // also: shop.c, battle_anim.c
+
+// Contest
+#define eBattleAnimPalBackup_Contest ((u16 *)(gSharedMem + 0x14800))
+#define eUnzippedContestAudience_Gfx (&gSharedMem[0x15800]) // overlaps other contest vars
+#define eCurContestWinnerSaveIdx (gSharedMem[0x15DDE])
+#define eCurContestWinnerIsForArtist (gSharedMem[0x15DDF])
+#define eCurContestWinner ((*(struct ContestWinner*)(gSharedMem + 0x15DE0)))
+#define eContestPaintingBuffers ((*(struct ContestPaintingBuffers*)(gSharedMem + 0x15E00)))
+#define eEnableContestDebugging (gSharedMem[0x18000])
+#define eContestTempSave (*(struct ContestTempSave *)(gSharedMem + 0x18004))
+#define sContest (*(struct Contest *)(gSharedMem + 0x19204))
+#define sContestantStatus ((struct ContestantStatus *)(gSharedMem + 0x19260))
+#define eContestAppealResults (*(struct ContestAppealMoveResults *)(gSharedMem + 0x192D0))
+#define eContestAI ((struct ContestAIInfo *)(gSharedMem + 0x192E4))
+#define eContestExcitement (*(struct ContestExcitement *)(gSharedMem + 0x19328))
+#define eContestGfxState ((struct ContestGfxState *)(gSharedMem + 0x19338))
+#define gContestResources__moveAnim (*(struct ContestMoveAnim *)(gSharedMem + 0x19348))
+
+// Non-battle allocations
+#define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0))
+#define eSaveSection (struct SaveSector *)(gSharedMem + 0x0)
+#define eSlotMachine ((struct SlotMachineEwramStruct *)(gSharedMem + 0x0))
+#define ePokemonStorageSystem (*(struct PokemonStorageSystemData *)(gSharedMem + 0))
+
+#define ewramSavedItemsPocket ((struct ItemSlot *)(gSharedMem + 0x1E000)) // saved items pocket (for Wally battle)
+#define ewramSavedPokeballsPocket ((struct ItemSlot *)(gSharedMem + 0x1F000)) // saved Pokeballs pocket (for Wally battle)
+
+// party_menu.c
+#define ePartyMenu (*(struct Unk2001000 *)(gSharedMem + 0x1000))
+#define eMoveTutorMenu (struct MoveTutorMenu *)(gSharedMem + 0x17000)
+#define ePartyMenu2 (*(struct Unk201B000 *)(gSharedMem + 0x1B000))
+#define gPartyMenu (*(struct PartyMenu *)(gSharedMem + 0x1C000))
+
+// player_pc.c, party_menu.c
+#define eMailboxInfo (*(struct MailboxStruct *)(gSharedMem + 0x1FE00))
+
+// item_menu.c
+#define ewramBerryPic (gSharedMem + 0x0)
+#define ewramBerryPicTemp (gSharedMem + 0x1000)
+
+// record_mixing.c
+#define eRecordMixTvShows ((union TVShow (*)[TV_SHOWS_COUNT])(gSharedMem + 0x7000))
+#define eRecordMixPokeNews ((struct PokeNews (*)[POKE_NEWS_COUNT])(gSharedMem + 0x7000)) // same addr as above
+#define eLinkedDewfordTrendsBuffer ((struct EasyChatPair *)(gSharedMem + 0x7800))
+#define eSavedDewfordTrendsBuffer ((struct EasyChatPair *)(gSharedMem + 0x7900))
+#define eReceivedRecords (*(struct PlayerRecords *)(gSharedMem + 0x08000))
+#define eSentRecord (*(struct PlayerRecords *)(gSharedMem + 0x18000))
+
+// pokedex.c
+#define ePokedexGraphicsBuffer ((void *)&gSharedMem[0x8000])
#define ePokedexView1 (struct PokedexView *)(gSharedMem + 0x18000)
-#define UNK_2018000_STRUCT (*(struct UnknownStruct2018000 *)(gSharedMem + 0x18000))
-#define pssData (*(struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000))
-#define ewram18300 ((u16 *)(gSharedMem + 0x18300))
-#define ewram18800 (&gSharedMem[0x18800])
#define ePokedexView2 (struct PokedexView *)(gSharedMem + 0x18800)
-#define ewram189a0 ((u16 *)(gSharedMem + 0x189A0))
-#define ewram18a20 ((u16 *)(gSharedMem + 0x18A20))
-#define ewram18a32 ((u16 *)(gSharedMem + 0x18A32))
-#define ewram18a80 ((u16 *)(gSharedMem + 0x18a80))
-#define ewram19000 (&gSharedMem[0x19000])
-#define eCableCar2 ((struct CableCarEwramStruct2 *)(gSharedMem + 0x19000))
#define ePokedexView3 (struct PokedexView *)(gSharedMem + 0x19000)
-#define eRoulette ((struct Roulette *)(gSharedMem + 0x19000))
-#define shared192D0 (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0))
-#define eContestAI ((struct ContestAIInfo *)(gSharedMem + 0x192E4))
-#define EWRAM_19348 ((u16 *)(gSharedMem + 0x19348))
-#define eWRAM_19348Struct ((struct EWRAM_19348_Struct *)(gSharedMem + 0x19348))
-#define ewram19800 (&gSharedMem[0x19800])
#define ePokedexView4 (struct PokedexView *)(gSharedMem + 0x19800)
+
+// pokedex_cry_screen.c
+#define sCryWaveformWindowTiledata (&gSharedMem[0])
+#define ePokedexCryScreen (*(struct PokedexCryScreen *)(gSharedMem + 0x1C000))
+#define ePokedexCryScreen2 (*(struct PokedexCryMeterNeedle *)(gSharedMem + 0x1C800))
+
+#define ewram_2010000 (*(struct TradeEwramStruct *)(gSharedMem + 0x10000))
+#define eBerryBlenderGfxBuffer (&gSharedMem[0x10000])
+#define eSlotMachineGfxBuffer (void *)(gSharedMem + 0x10000) // slot machine
+#define eSlotMachineReelTimeGfxBuffer (&gSharedMem[0x13200])
+#define sEvoInfo ((*(struct EvoInfo*)(gSharedMem + 0x14800)))
+
+// roulette_gfx.c
+#define ewram17000 (&gSharedMem[0x17000])
+#define ewram17E00 ((u16 *)(gSharedMem + 0x17E00))
+#define ewram18000 ((u16 *)(gSharedMem + 0x18000)) // also: shop.c, battle_anim.c
+
+#define eCableCar1 ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000))
+#define eCableCar2 ((struct CableCarEwramStruct2 *)(gSharedMem + 0x19000))
+
+#define eBerryBlenderData (struct BerryBlenderData*)(&gSharedMem[0x18000])
+#define eEggHatchData (struct EggHatchData*)(&gSharedMem[0x18000])
+
+// pokemon_summary_screen.c
+#define pssData (*(struct PokemonSummaryScreenStruct *)(gSharedMem + 0x18000))
#define ewram1A000 (&gSharedMem[0x1A000])
-#define ewram1A800 (&gSharedMem[0x1A800])
-#define ewram1B000 (*(struct Unk201B000 *)(gSharedMem + 0x1B000))
-#define ewram1B000_alt (*(struct Struct201B000 *)(gSharedMem + 0x1B000))
-#define EWRAM_1B000 ewram1B000_alt // FIXME
-#define EWRAM_1B000_2 (*(struct Struct201B000 *)(gSharedMem + 0x1B000))
-#define ewram1B000_2 (&gSharedMem[0x1B000])
-#define ewram1B800 (&gSharedMem[0x1B800])
-#define EWRAM_1C000 (*(struct Struct201C000 *)(gSharedMem + 0x1C000))
-#define ewram1C000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000))
-#define ewram1c000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000)) // FIXME, names too similar
-#define eHallOfFameMons1 (struct HallofFameMons*)(&gSharedMem[0x1C000])
+
+// roulette.c
+#define ewram18800 ((u16 *)(gSharedMem + 0x18800))
+#define eRoulette ((struct Roulette *)(gSharedMem + 0x19000))
+
+#define sCreditsData (*(struct CreditsData *)(gSharedMem + 0x1C000))
+
+// hall_of_fame.c
+#define eHofGfxPtr (gSharedMem + 0x8000)
+#define eHofMonPtr (struct HallofFameMons*)(&gSharedMem[0x1C000])
#define eHOFPCScreenEffect (*(struct PCScreenEffectStruct *)(gSharedMem + 0x1c000))
-#define ewram1D000 ((struct Pokemon *)(gSharedMem + 0x1D000))
-#define ewram1D000_2 ((u16 *)(gSharedMem + 0x1D000))
-#define ewram1D400 ((u16 *)(gSharedMem + 0x1D400))
-#define ewramSavedItemsPocket ((struct ItemSlot *)(gSharedMem + 0x1E000)) // saved items pocket (for Wally battle)
-#define ewram1E000(i) (gSharedMem[0x1E000 + i])
-#define eHallOfFameMons2 (struct HallofFameMons*)(&gSharedMem[0x1E000])
-#define eHallOfFame (struct HallOfFame *)(gSharedMem + 0x1E000)
-#define HALL_OF_FAME_SHEET_0 ((u8 *)(gSharedMem + 0x1E000))
-#define ewram1E000_2 (const u8 *)(gSharedMem + 0x1E000)
-#define eContestLinkSendBuffer gSharedMem + 0x1E000
-#define HALL_OF_FAME_SHEET_1 ((u8 *)(gSharedMem + 0x1E800))
-#define ewram_1f000 (*(struct DecoPCPointers *)(gSharedMem + 0x1f000))
-#define ewramSavedPokeballsPocket ((struct ItemSlot *)(gSharedMem + 0x1F000)) // saved Pokeballs pocket (for Wally battle)
-#define HALL_OF_FAME_SHEET_2 ((u8 *)(gSharedMem + 0x1F000))
-#define EWRAM_1F800 ((u16 *)(gSharedMem + 0x1F800))
-#define ewram_1F800_2 (const u16 *)(gSharedMem + 0x1F800)
-#define ewram1FE00 (*(struct Unk201FE00 *)(gSharedMem + 0x1FE00))
-#define eMailboxInfo (*(struct MailboxStruct *)(gSharedMem + 0x1FE00))
+
+#define eMultiBattleSetupPartySendBuffer \
+ ((struct Pokemon *)(gSharedMem + 0x1D000))
+
+// pokeblock_feed.c
+#define ePokeblockFeedMonAnimX ((s16 *)(gSharedMem + 0x1D000))
+#define ePokeblockFeedMonAnimY ((s16 *)(gSharedMem + 0x1D400))
+
+// decoration.c
+#define sDecorationContext (*(struct DecoPCPointers *)(gSharedMem + 0x1f000))
+
#define eCutGrassSpriteArray (gSharedMem + 0x1FFF0) // 8 sprite IDs
-#define ewram1FFFC (gSharedMem[0x1FFFC])
-#define ewram1FFFD (gSharedMem[0x1FFFD])
+
+// reshow_battle_screen.c
#define gHelperState (gSharedMem[0x1FFFE])
-#define ewram1FFFE (gSharedMem[0x1FFFE])
#define gReshowState (gSharedMem[0x1FFFF])
+
+// item_menu.c
#define ewramBagSetupStep (gSharedMem[0x1FFFF])
-#define ewram1FFFF (gSharedMem[0x1FFFF])
+
+// pokeblock_feed.c
+#define ePokeblockSpriteId (gSharedMem[0x1FFFC])
+#define ePokeblockFeedCaseSpriteId (gSharedMem[0x1FFFD])
+#define ePokeblockMonSpriteId (gSharedMem[0x1FFFE])
+
+// pokeblock.c
+#define ePokeblockCaseSpriteId (gSharedMem[0x1FFFE])
+#define ePokeblockGfxState (gSharedMem[0x1FFFF])
#endif
diff --git a/include/field_effect.h b/include/field_effect.h
index 6bf98d4f7..f961e3a3f 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -9,7 +9,7 @@ extern const struct SpritePalette gUnknown_0839F114;
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[2];
extern const struct SpriteTemplate gSpriteTemplate_839F128;
extern const struct OamData gOamData_839F0F4;
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u8 gLastFieldPokeMenuOpened;
diff --git a/include/global.h b/include/global.h
index e5114c396..7897e20c2 100644
--- a/include/global.h
+++ b/include/global.h
@@ -36,6 +36,12 @@
#define KANA(txt) _(txt)
#endif
+#define SWAP(x,y,t) {\
+ t = x; \
+ x = y; \
+ y = t; \
+}
+
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
@@ -89,6 +95,18 @@ enum
(ptr)[3] = ((value) >> 24) & 0xFF;\
})
+// Converts a number to Q8.8 fixed-point format
+#define Q_8_8(n) ((s16)((n) * 256))
+
+// Converts a number from Q8.8 fixed-point format to integer
+#define Q_8_8_TO_INT(n) ((s16)((n) >> 8))
+
+// Converts a number to Q4.12 fixed-point format
+#define Q_4_12(n) ((s16)((n) * 4096))
+
+// Converts a number from Q4.12 fixed-point format to integer
+#define Q_4_12_TO_INT(n) ((s16)((n) >> 12))
+
// Credits to Made (dolphin emoji)
#define S16TOPOSFLOAT(val) \
({ \
@@ -115,26 +133,31 @@ struct UCoords16
u16 y;
};
+struct SecretBaseParty
+{
+ /*0x1A3C*/ u32 personality[PARTY_SIZE];
+ /*0x1A54*/ u16 moves[PARTY_SIZE * MAX_MON_MOVES];
+ /*0x1A84*/ u16 species[PARTY_SIZE];
+ /*0x1A90*/ u16 heldItems[PARTY_SIZE];
+ /*0x1A9C*/ u8 levels[PARTY_SIZE];
+ /*0x1AA2*/ u8 EVs[PARTY_SIZE];
+};
+
struct SecretBaseRecord
{
/*0x1A08*/ u8 secretBaseId;
- /*0x1A09*/ u8 sbr_field_1_0:4;
+ /*0x1A09*/ u8 toRegister:4;
/*0x1A09*/ u8 gender:1;
- /*0x1A09*/ u8 sbr_field_1_5:1;
- /*0x1A09*/ u8 sbr_field_1_6:2;
+ /*0x1A09*/ u8 battledOwnerToday:1;
+ /*0x1A09*/ u8 registryStatus:2;
/*0x1A0A*/ u8 playerName[OT_NAME_LENGTH];
/*0x1A11*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
- /*0x1A16*/ u16 sbr_field_e;
- /*0x1A18*/ u8 sbr_field_10;
- /*0x1A19*/ u8 sbr_field_11;
+ /*0x1A16*/ u16 numSecretBasesReceived;
+ /*0x1A18*/ u8 numTimesEntered;
+ /*0x1A19*/ u8 unused;
/*0x1A1A*/ u8 decorations[DECOR_MAX_SECRET_BASE];
/*0x1A2A*/ u8 decorationPos[DECOR_MAX_SECRET_BASE];
- /*0x1A3C*/ u32 partyPersonality[PARTY_SIZE];
- /*0x1A54*/ u16 partyMoves[PARTY_SIZE * 4];
- /*0x1A84*/ u16 partySpecies[PARTY_SIZE];
- /*0x1A90*/ u16 partyHeldItems[PARTY_SIZE];
- /*0x1A9C*/ u8 partyLevels[PARTY_SIZE];
- /*0x1AA2*/ u8 partyEVs[PARTY_SIZE];
+ /*0x1A3C*/ struct SecretBaseParty party;
};
#include "constants/game_stat.h"
@@ -735,7 +758,7 @@ struct Time
struct Pokedex
{
/*0x00*/ u8 order;
- /*0x01*/ u8 unknown1;
+ /*0x01*/ u8 mode;
/*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode
/*0x03*/ u8 unknown2;
/*0x04*/ u32 unownPersonality; // set when you first see Unown
@@ -848,12 +871,6 @@ struct UnkStruct_8054FF8
u16 field_C;
};
-// wasnt defined so I had to define it
-struct HallOfFame
-{
- u8 filler[0x1F00];
-};
-
extern struct SaveBlock2 gSaveBlock2;
#endif // GUARD_GLOBAL_H
diff --git a/include/graphics.h b/include/graphics.h
index 66ef9a028..a6ccc520f 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -35,14 +35,16 @@ extern const u8 gInterfaceGfx_PremierBall[];
extern const u8 gInterfacePal_PremierBall[];
extern const u8 gUnknown_08D030D0[];
-extern const u8 gUnknown_08D17144[];
-extern const u8 gUnknown_08D1725C[];
-extern const u8 gUnknown_08D17424[];
+extern const u8 gContestPalette[];
+extern const u8 gContestGfx[];
+extern const u8 gContestBgmap[];
extern const u8 gUnknown_08D17C3C[];
extern const u8 gContestMiscGfx[];
extern const u8 gContestAudienceGfx[];
extern const u8 gContestJudgeSymbolsGfx[];
extern const u8 gContest3Pal[];
+extern const u8 gContestNumbers_UnusedGfx[];
+extern const u8 gContestNumbers_UnusedPal[];
extern const u8 gTiles_8D1975C[];
extern const u8 gUnknown_08D1977C[];
extern const u8 gUnknown_08D1A250[];
diff --git a/include/image_processing_effects.h b/include/image_processing_effects.h
new file mode 100644
index 000000000..47153023b
--- /dev/null
+++ b/include/image_processing_effects.h
@@ -0,0 +1,53 @@
+#ifndef GUARD_IMAGE_PROCESSING_EFFECTS_H
+#define GUARD_IMAGE_PROCESSING_EFFECTS_H
+
+enum
+{
+ IMAGE_EFFECT_POINTILLISM = 2,
+ IMAGE_EFFECT_GRAYSCALE_LIGHT = 6,
+ IMAGE_EFFECT_BLUR = 8,
+ IMAGE_EFFECT_OUTLINE_COLORED = 9,
+ IMAGE_EFFECT_INVERT_BLACK_WHITE = 10,
+ IMAGE_EFFECT_THICK_BLACK_WHITE = 11,
+ IMAGE_EFFECT_SHIMMER = 13,
+ IMAGE_EFFECT_OUTLINE = 30,
+ IMAGE_EFFECT_INVERT = 31,
+ IMAGE_EFFECT_BLUR_RIGHT = 32,
+ IMAGE_EFFECT_BLUR_DOWN = 33,
+ IMAGE_EFFECT_CHARCOAL = 36,
+};
+
+enum
+{
+ QUANTIZE_EFFECT_STANDARD,
+ QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS,
+ QUANTIZE_EFFECT_PRIMARY_COLORS,
+ QUANTIZE_EFFECT_GRAYSCALE,
+ QUANTIZE_EFFECT_GRAYSCALE_SMALL,
+ QUANTIZE_EFFECT_BLACK_WHITE,
+};
+
+struct ImageProcessingContext
+{
+ u8 effect;
+ void *canvasPixels;
+ u16 *canvasPalette;
+ u8 fillerC[0x4];
+ void *dest;
+ u16 quantizeEffect;
+ u16 bgType;
+ u8 paletteStart;
+ u8 columnStart;
+ u8 rowStart;
+ u8 columnEnd;
+ u8 rowEnd;
+ u8 canvasWidth;
+ u8 canvasHeight;
+ u8 personality;
+};
+
+void ApplyImageProcessingEffects(struct ImageProcessingContext *);
+void ConvertImageProcessingToGBA(struct ImageProcessingContext *);
+void ApplyImageProcessingQuantization(struct ImageProcessingContext *);
+
+#endif // GUARD_IMAGE_PROCESSING_EFFECTS_H
diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h
index 303f50095..1abd06c93 100644
--- a/include/intro_credits_graphics.h
+++ b/include/intro_credits_graphics.h
@@ -16,7 +16,7 @@ void sub_8148CB0(u8);
void sub_8148E90(u8);
u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d);
void sub_8148F3C(u8);
-void sub_8149020(u8);
+void CycleSceneryPalette(u8);
u8 intro_create_brendan_sprite(s16 a, s16 b);
u8 intro_create_may_sprite(s16 a, s16 b);
u8 intro_create_latios_sprite(s16 a, s16 b);
diff --git a/include/item.h b/include/item.h
index 69fe1f941..9c7e1b673 100644
--- a/include/item.h
+++ b/include/item.h
@@ -1,6 +1,16 @@
#ifndef GUARD_ITEM_H
#define GUARD_ITEM_H
+// These constants are used in gItems
+enum
+{
+ POCKET_ITEMS = 1,
+ POCKET_POKE_BALLS,
+ POCKET_TM_HM,
+ POCKET_BERRIES,
+ POCKET_KEY_ITEMS,
+};
+
typedef void (*ItemUseFunc)(u8);
struct BagPocket
diff --git a/include/link.h b/include/link.h
index 6c9c25202..a4540b346 100644
--- a/include/link.h
+++ b/include/link.h
@@ -185,7 +185,7 @@ void sub_800826C(void);
void sub_80082EC(void);
u8 GetLinkPlayerCount_2(void);
bool8 IsLinkMaster(void);
-void sub_800832C(void);
+void SetCloseLinkCallback(void);
void sub_8008480(void);
void sub_80084A4(void);
void CB2_LinkError(void);
diff --git a/include/menu.h b/include/menu.h
index a6ff6050e..9b132bda2 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -69,7 +69,9 @@ u8 sub_8072A18(const u8 *, u8, u16, u8, u32);
u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32);
int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32);
void MenuPrint_RightAligned(const u8 *, u8, u8);
-void sub_8072B80(const u8 *, u8, u8, const u8 *);
+
+// Prints src aligned to right edge of widthRefStr in window defined by left and top
+void MenuPrint_AlignedToRightOfReferenceString(const u8 *src, u8 left, u8 top, const u8 *widthRefStr);
void MenuPrint_Centered(const u8 *, u8, u8, u16);
u8 *AlignInt1InMenuWindow(u8 *, s32, u8, u8);
u8 *AlignInt2InMenuWindow(u8 *, s32, u8, u8);
diff --git a/include/party_menu.h b/include/party_menu.h
index 172435b2d..bfd2c6cae 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -43,49 +43,33 @@ struct PartyPopupMenu
/*0x4*/const u8 *items; // menu item ids (ids for a MenuAction2 array)
};
-// TODO: Unify these two structs
+#define pmStatGrowths data
+#define pmSetupState data[0]
+#define pmMonIndex data[1]
+#define pmUnk268 data[2]
+#define pmUnk272 data[7]
+#define pmUnk27E data[13]
+#define pmUnk280 data[14]
+#define pmUnk282 data[15]
struct Unk201B000
{
struct Pokemon unk0[6];
u8 menuType;
u8 promptTextId;
- u8 filler25A[2];
TaskFunc menuHandler;
u8 menuHandlerTaskId;
u8 unk261;
- u8 unk262;
+ u8 unk262; // Never read
u8 unk263;
- // Stat growth upon level-up. First 6 bytes = old stats, Second 6 bytes = new stats.
- s16 statGrowths[NUM_STATS * 2];
- u8 filler27C[2];
- s16 unk27E;
- s16 unk280;
- s16 unk282;
-};
-
-struct Struct201B000
-{
- u8 filler0[0x259];
- u8 promptTextId;
- u8 filler25A[6];
- u8 menuHandlerTaskId;
- u8 unk261;
- u8 unk262;
- s16 setupState;
- s16 monIndex;
- s16 unk268;
- u8 filler26A[8];
- u16 unk272;
- u8 filler274[14];
- u16 unk282;
+ s16 data[16];
};
struct Unk2001000
{
u8 unk0;
- u8 unk1;
- u8 unk2;
+ u8 slotId;
+ u8 slotId2;
u8 unk3;
u8 unk4;
u8 unk5;
@@ -97,18 +81,17 @@ struct Unk2001000
u16 array[53561];
};
-struct UnknownPokemonStruct2
+struct PartyMenu
{
- /*0x00*/ u16 species;
- /*0x02*/ u16 heldItem;
- /*0x04*/ u8 nickname[11];
- /*0x0F*/ u8 level;
- /*0x10*/ u16 hp;
- /*0x12*/ u16 maxhp;
- /*0x14*/ u32 status;
- /*0x18*/ u32 personality;
- /*0x1C*/ u8 gender;
- /*0x1D*/ u8 language;
+ /*0x00*/ struct Pokemon *pokemon;
+ /*0x04*/ u8 unk4;
+ /*0x05*/ u8 primarySelectedMonIndex;
+ /*0x06*/ u16 secondarySelectedIndex;
+ /*0x08*/ u16 unk8;
+ /*0x0A*/ u8 pad_0A[2];
+ /*0x0C*/ s32 unkC;
+ /*0x10*/ TaskFunc unk10;
+ /*0x14*/ TaskFunc unk14;
};
void CB2_PartyMenuMain(void);
@@ -137,7 +120,7 @@ void sub_806D3B4(u8 taskId, u16 species1, u16 species2);
void sub_806D4AC(u8 taskId, u16 species, u8 c);
void sub_806D50C(u8 taskId, u8 monIndex);
void PrintPartyMenuPromptText(u8 textId, u8 b);
-void sub_806D5A4(void);
+void PartyMenuEraseMsgBoxAndFrame(void);
void SetMonIconAnim(u8 spriteId, struct Pokemon *pokemon);
void CreatePartyMenuMonIcon(u8 taskId, u8 monIndex, u8 c, struct Pokemon *pokemon);
void TryCreatePartyMenuMonIcon(u8 a, u8 monIndex, struct Pokemon *pokemon);
@@ -151,7 +134,7 @@ void SetHeldItemIconVisibility(u8 a, u8 monIndex);
void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer);
void PrintPartyMenuMonNickname(u8 monIndex, u8 b, struct Pokemon *pokemon);
void PrintPartyMenuMonNicknames(void);
-void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon);
+void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct MultiBattlePokemonTx *pokemon);
u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer);
void PartyMenuPutStatusTilemap(u8 monIndex, u8 b, u8 status);
void PartyMenuDoPrintLevel(u8 monIndex, u8 b, u8 level);
@@ -172,7 +155,7 @@ void SetPartyPopupMenuOffsets(u8 menuIndex, u8 *left, u8 *top, const struct Part
void ShowPartyPopupMenu(u8 menuIndex, const struct PartyPopupMenu *menu, const struct MenuAction2 *menuActions, u8 cursorPos);
void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu);
TaskFunc PartyMenuGetPopupMenuFunc(u8 menuIndex, const struct PartyPopupMenu *menus, const struct MenuAction2 *menuActions, u8 itemIndex);
-u8 sub_806E834(const u8 *message, u8 arg1);
+u8 DisplayPartyMenuMessage(const u8 *message, u8 noClearAfter);
void sub_806E8D0(u8 taskId, u16 b, TaskFunc c);
void party_menu_link_mon_held_item_object(u8);
void Task_ConfirmGiveHeldItem(u8);
diff --git a/include/pokedex.h b/include/pokedex.h
index 1d3d9b388..7592d6ba9 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -7,7 +7,7 @@
#define NATIONAL_DEX_COUNT 386
void ResetPokedex(void);
-void sub_808C0A0(void);
+void ResetPokedexScrollPositions(void);
void CB2_InitPokedex(void);
u8 sub_809070C(u16 dexNum, u32 b, u32 c);
const u8 *GetPokemonCategory(u16);
@@ -28,7 +28,7 @@ u16 GetHoennPokedexCount(u8);
bool8 CompletedHoennPokedex(void);
bool16 CompletedNationalPokedex(void);
-extern bool8 gUnknown_03005CE8;
+extern bool8 gUnusedPokedexU8;
struct PokedexEntry
{
@@ -46,9 +46,9 @@ struct PokedexEntry
extern const struct PokedexEntry gPokedexEntries[];
-u16 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum);
-u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum);
+u16 CreateSizeScreenTrainerPic(u16 gender, s16 x, s16 y, u16 paletteNum);
+u16 CreateMonSpriteFromNationalDexNumber(u16 num, s16 x, s16 y, u16 paletteNum);
-void sub_8091738(u16, u16, u16);
+void PrintFootprint(u16 num, u16 b, u16 c);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokedex_cry_screen.h b/include/pokedex_cry_screen.h
index ee586a092..d2134eb51 100644
--- a/include/pokedex_cry_screen.h
+++ b/include/pokedex_cry_screen.h
@@ -1,19 +1,19 @@
#ifndef GUARD_POKEDEX_CRY_SCREEN_H
#define GUARD_POKEDEX_CRY_SCREEN_H
-struct CryRelatedStruct
+struct CryScreenWindow
{
- u16 unk0;
- u8 unk2;
+ u16 charBase;
+ u8 screenBase;
u8 paletteNo;
u8 xPos;
u8 yPos;
};
-u8 ShowPokedexCryScreen(struct CryRelatedStruct *, u8);
-u8 sub_8119E3C(struct CryRelatedStruct *, u8);
-void sub_8119F88(u8 a);
-void sub_811A050(u16 species);
+bool8 ShowPokedexCryScreen(struct CryScreenWindow * cry, u8 arg1);
+bool8 LoadCryWaveformWindow(struct CryScreenWindow * cry, u8 bgId);
+void UpdateCryWaveformWindow(u8 bgId);
+void CryScreenPlayButton(u16 species);
void DestroyCryMeterNeedleSprite();
#endif // GUARD_POKEDEX_CRY_SCREEN_H
diff --git a/include/pokemon.h b/include/pokemon.h
index d2ab1335c..cbad2c9ae 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -193,6 +193,20 @@ struct UnknownPokemonStruct
/*0x2B*/u8 friendship;
};
+struct MultiBattlePokemonTx
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u16 heldItem;
+ /*0x04*/ u8 nickname[11];
+ /*0x0F*/ u8 level;
+ /*0x10*/ u16 hp;
+ /*0x12*/ u16 maxhp;
+ /*0x14*/ u32 status;
+ /*0x18*/ u32 personality;
+ /*0x1C*/ u8 gender;
+ /*0x1D*/ u8 language;
+};
+
#define BATTLE_STATS_NO 8
struct BattlePokemon
@@ -255,6 +269,8 @@ enum
STAT_SPD, // 3
STAT_SPATK, // 4
STAT_SPDEF, // 5
+ STAT_ACC, // 6
+ STAT_EVA, // 7
};
struct BaseStats
@@ -487,7 +503,7 @@ const u8 *GetMonSpritePal(struct Pokemon *mon);
const u8 *GetMonSpritePalFromOtIdPersonality(u16, u32, u32);
const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16, u32, u32);
bool8 IsOtherTrainer(u32, u8 *);
-void sub_8040B8C(void);
+void SetMonPreventsSwitchingString(void);
void SetWildMonHeldItem(void);
u8 *sub_8040D08();
bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index ad0e4b56b..c23598ec7 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -13,8 +13,8 @@ void sub_809D510(struct Sprite *);
void sub_809D51C(void);
void sub_809D580(u16);
void sub_809D608(u16);
-void sub_809D62C(struct Sprite *sprite);
-void sub_809D824(struct Sprite *sprite, u8 animNum);
+void SpriteCB_PokemonIcon(struct Sprite *sprite);
+void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum);
const u8 *GetMonIconPtr(u16 species, u32 personality);
u16 mon_icon_convert_unown_species_id(u16 species, u32 personality);
extern const u8 gMonIconPaletteIndices[];
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 29bdd332e..02296c27f 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -13,7 +13,7 @@ enum PokemonSummaryScreenMode
PSS_MODE_NORMAL,
PSS_MODE_MOVES_ONLY,
PSS_MODE_SELECT_MOVE,
- PSS_MODE_UNKNOWN, // TODO: this mode might be used by pokemon_storage_system
+ PSS_MODE_MOVE_DELETER, // TODO: this mode might be used by pokemon_storage_system
PSS_MODE_NO_MOVE_ORDER_EDIT,
PSS_MODE_PC_NORMAL,
PSS_MODE_PC_MOVES_ONLY,
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 089a7337f..d1467493d 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -4,7 +4,7 @@
#include <stddef.h>
void RecordMixing_PrepareExchangePacket(void);
-void RecordMixing_ReceiveExchangePacket(u32 a);
+void RecordMixing_ReceiveExchangePacket(u32 which);
void Task_RecordMixing_SoundEffect(u8 taskId);
void Task_RecordMixing_Main(u8 taskId);
void sub_80B95F0(u8 taskId);
@@ -19,15 +19,15 @@ u8 GetMultiplayerId_(void);
u16 *GetPlayerRecvBuffer(u8 player);
void sub_80B9A78(void);
void sub_80B9A88(u8 *a);
-void sub_80B9B1C(u8 *a, size_t size, u8 index);
-void sub_80B9B70(void *a, u32 size, u8 index);
+void ReceiveOldManData(u8 *a, size_t size, u8 index);
+void ReceiveBattleTowerData(void *battleTowerRecord, u32 size, u8 index);
u8 sub_80B9BBC(struct DayCareMail *a);
void sub_80B9BC4(u8 *, size_t, u8[][2], u8 d, u8 e);
u8 sub_80B9C4C(u8 *a);
// ASM
-void sub_80B9C6C(struct RecordMixingDayCareMail *, size_t, u8, TVShow *);
-void sub_80B9F3C(u16 *, u8);
+void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows);
+void ReceiveGiftItem(u16 *pItemId, u8 b);
void sub_80BA00C(u8);
#endif // GUARD_RECORD_MIXING_H
diff --git a/include/region_map.h b/include/region_map.h
index 24c768ea5..f42c7c493 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -60,6 +60,19 @@ struct RegionMap
/*0x280*/ u8 cursorLargeImage[0x600];
}; // size: 0x880
+struct RegionMapState
+{
+ void (*callback)(void);
+ u16 state;
+ u16 mapSectionId;
+ struct RegionMap regionMap;
+ u16 unk_888[0xE0];
+ u8 blankMapName[0x26];
+ bool8 choseFlyLocation;
+};
+
+extern struct RegionMapState *const gRegionMapState;
+
void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed);
void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed);
bool8 sub_80FA940(void);
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 4f49885bf..c4cdfd7ad 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -12,12 +12,12 @@ struct Struct_sub_8078914 {
struct TransformStatus
{
- u16 unknown;
+ u8 unk0;
u16 species;
};
u8 GetBattlerSpriteCoord(u8, u8);
-u8 sub_8077E44(u8 slot, u16 species, u8 a3);
+u8 GetBattlerSpriteFinal_Y(u8 slot, u16 species, u8 a3);
u8 GetAnimBattlerSpriteId(u8 bank);
void StoreSpriteCallbackInData(struct Sprite *sprite, void(*callback)(struct Sprite *));
void sub_8078314(struct Sprite *sprite);
@@ -38,7 +38,7 @@ bool8 IsBankSpritePresent(u8);
bool8 IsDoubleBattle();
u8 IsDoubleBattle(void);
bool8 IsDoubleBattle(void);
-void sub_8078914();
+void sub_8078914(struct Struct_sub_8078914 * unk);
u8 sub_80789BC();
void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
void InitAnimLinearTranslation(struct Sprite *sprite);
diff --git a/include/secret_base.h b/include/secret_base.h
index dafbca085..130c78ca3 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -18,7 +18,7 @@ u8 *GetSecretBaseMapName(u8 *dest);
void SetPlayerSecretBaseRecordMixingParty();
const u8 *GetSecretBaseTrainerLoseText(void);
void sub_80BCF1C(u8 taskId);
-void sub_80BD674(void *playerRecords, u32 size, u8 c);
+void ReceiveSecretBasesData(void *playerRecords, u32 size, u8 c);
#if DEBUG
void unref_sub_80BCD7C(u8 secretBaseIndex);
u8 *sub_80BC190(u8 *dest, u8 arg1);
diff --git a/include/sprite.h b/include/sprite.h
index f7a21ef46..e88cf6496 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -191,8 +191,8 @@ struct Sprite
/*0x18*/ const struct SubspriteTable *subspriteTables;
/*0x1C*/ SpriteCallback callback;
- /*0x20*/ struct Coords16 pos1;
- /*0x24*/ struct Coords16 pos2;
+ /*0x20*/ s16 x, y;
+ /*0x24*/ s16 x2, y2;
/*0x28*/ s8 centerToCornerVecX;
/*0x29*/ s8 centerToCornerVecY;
diff --git a/include/text.h b/include/text.h
index 8b5df9280..f765a0e05 100644
--- a/include/text.h
+++ b/include/text.h
@@ -5,10 +5,15 @@
#define CHAR_LV 0x34
#define CHAR_SONG_WORD_SEPARATOR 0x37 // separates words in the bard song. Not sure if it's used for anything else
#define CHAR_0 0xA1
+#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_ELLIPSIS 0xB0
+#define CHAR_DBL_QUOT_LEFT 0xB1
+#define CHAR_DBL_QUOT_RIGHT 0xB2
+#define CHAR_SGL_QUOT_LEFT 0xB3
+#define CHAR_SGL_QUOT_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
@@ -75,7 +80,6 @@
#define CHAR_NEWLINE 0xFE
#define EOS 0xFF // end of string
-#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 4
#define TEXT_COLOR_TRANSPARENT 0x00
#define TEXT_COLOR_DARK_GREY 0x01
#define TEXT_COLOR_RED 0x02
@@ -93,8 +97,28 @@
#define TEXT_COLOR_LIGHT_BLUE 0x0E
#define TEXT_COLOR_WHITE2 0x0F
-#define EXT_CTRL_CODE_CLEAR 17
-
+#define EXT_CTRL_CODE_COLOR 0x01
+#define EXT_CTRL_CODE_HIGHLIGHT 0x02
+#define EXT_CTRL_CODE_SHADOW 0x03
+#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x04
+#define EXT_CTRL_CODE_PALETTE 0x05
+#define EXT_CTRL_CODE_SIZE 0x06
+#define EXT_CTRL_CODE_RESET_SIZE 0x07
+#define EXT_CTRL_CODE_PAUSE 0x08
+#define EXT_CTRL_CODE_PAUSE_UNTIL_PRESS 0x09
+#define EXT_CTRL_CODE_WAIT_SE 0x0A
+#define EXT_CTRL_CODE_PLAY_BGM 0x0B
+#define EXT_CTRL_CODE_ESCAPE 0x0C
+#define EXT_CTRL_CODE_SHIFT_TEXT 0x0D // nop
+#define EXT_CTRL_CODE_SHIFT_DOWN 0x0E
+#define EXT_CTRL_CODE_FILL_WINDOW 0x0F
+#define EXT_CTRL_CODE_PLAY_SE 0x10
+#define EXT_CTRL_CODE_CLEAR 0x11
+#define EXT_CTRL_CODE_SKIP 0x12
+#define EXT_CTRL_CODE_CLEAR_TO 0x13
+#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
+#define EXT_CTRL_CODE_JPN 0x15
+#define EXT_CTRL_CODE_ENG 0x16
struct WindowTemplate
{
@@ -206,7 +230,7 @@ extern const struct WindowTemplate gWindowTemplate_81E70F0;
extern const struct WindowTemplate gWindowTemplate_81E710C;
extern const struct WindowTemplate gWindowTemplate_81E7128;
extern const struct WindowTemplate gWindowTemplate_81E7144;
-extern const struct WindowTemplate gWindowTemplate_81E7160;
+extern const struct WindowTemplate gWindowTemplate_ContestPainting;
extern const struct WindowTemplate gWindowTemplate_81E717C;
extern const struct WindowTemplate gWindowTemplate_81E7198;
extern const struct WindowTemplate gWindowTemplate_81E71B4;
@@ -236,7 +260,7 @@ void Text_InitWindowWithTemplate(struct Window *win, const struct WindowTemplate
void Text_InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top);
void Text_InitWindow8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6);
void Text_SetWindowText(struct Window *win, const u8 *text);
-void Text_InitWindow8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top);
+void Contest_StartTextPrinter(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top);
u8 Text_PrintWindow8002F44(struct Window *win);
u8 Text_PrintWindowSimple(struct Window *win);
u8 Text_InitWindowAndPrintText(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top);
@@ -248,7 +272,7 @@ u8 *sub_8003558(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType);
u8 Text_UpdateWindow(struct Window *win);
u8 Text_UpdateWindowInBattle(struct Window *win);
u8 Text_UpdateWindowAutoscroll(struct Window *win);
-u8 Text_UpdateWindowInContest(struct Window *win);
+u8 Contest_RunTextPrinter(struct Window *win);
u32 Text_UpdateWindowOverrideLineLength(struct Window *win, u8 lineLength);
void Text_ClearWindow(struct Window *win);
u16 Text_GetWindowTilemapEntry(struct Window *win, u8 x, u8 y);
diff --git a/include/tv.h b/include/tv.h
index a7064f8fd..1ca601a35 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -72,7 +72,7 @@ s8 sub_80BF74C(TVShow tvShow[]);
bool8 sub_80BF77C(u16);
bool8 sub_80BF77C(u16);
u32 GetPlayerTrainerId(void);
-void sub_80BFD44(u8 *, u32, u8);
+void ReceiveTvShowsData(u8 *, u32, u8);
u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx);
u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx);
u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx);
@@ -99,7 +99,7 @@ void ResetGabbyAndTy(void);
void TakeTVShowInSearchOfTrainersOffTheAir(void);
extern u8 GabbyAndTyGetBattleNum(void);
void sub_80C04A0(void);
-void sub_80C0514(void *, u32, u8);
+void ReceivePokeNewsData(void *, u32, u8);
void DoTVShowBravoTrainerPokemonProfile(void);
void DoTVShowBravoTrainerBattleTowerProfile(void);
void DoTVShowTodaysSmartShopper(void);
diff --git a/ld_script.txt b/ld_script.txt
index 9dee04d9b..8cfbd5b86 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -147,6 +147,7 @@ SECTIONS {
src/debug/matsuda_debug_menu.o(.text);
src/debug/crash.o(.text);
src/contest.o(.text);
+ src/contest_2.o(.text);
src/shop.o(.text);
src/fldeff_escalator.o(.text);
src/berry.o(.text);
@@ -159,8 +160,8 @@ SECTIONS {
src/debug/sound_check_menu.o(.text);
src/secret_base.o(.text);
src/tv.o(.text);
- src/contest_link_80C2020.o(.text);
- src/script_pokemon_util_80C4BF0.o(.text);
+ src/contest_link_util.o(.text);
+ src/contest_util.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
src/pc_screen_effect.o(.text);
@@ -173,7 +174,7 @@ SECTIONS {
src/field_special_scene.o(.text);
src/rotating_gate.o(.text);
src/safari_zone.o(.text);
- src/contest_link_80C857C.o(.text);
+ src/contest_link.o(.text);
src/item_use.o(.text);
src/battle/anim/powder.o(.text);
src/battle/anim/orbs.o(.text);
@@ -304,7 +305,7 @@ SECTIONS {
src/dewford_trend.o(.text);
src/heal_location.o(.text);
src/region_map.o(.text);
- src/contest_painting_effects.o(.text);
+ src/image_processing_effects.o(.text);
src/decoration.o(.text);
src/slot_machine.o(.text);
src/contest_painting.o(.text);
@@ -574,7 +575,7 @@ SECTIONS {
src/item.o(.rodata);
src/debug/matsuda_debug_menu.o(.rodata);
src/contest.o(.rodata);
- data/contest.o(.rodata);
+ src/contest_2.o(.rodata);
src/shop.o(.rodata);
src/fldeff_escalator.o(.rodata);
src/berry.o(.rodata);
@@ -589,8 +590,8 @@ SECTIONS {
src/debug/sound_check_menu.o(.rodata);
src/secret_base.o(.rodata);
src/tv.o(.rodata);
- src/contest_link_80C2020.o(.rodata);
- src/script_pokemon_util_80C4BF0.o(.rodata);
+ src/contest_link_util.o(.rodata);
+ src/contest_util.o(.rodata);
src/pokemon_size_record.o(.rodata);
src/pc_screen_effect.o(.rodata);
src/pc_screen_effect.o(.data);
@@ -600,7 +601,7 @@ SECTIONS {
src/fldeff_recordmixing.o(.rodata);
src/field_special_scene.o(.rodata);
src/rotating_gate.o(.rodata);
- src/contest_link_80C857C.o(.rodata);
+ src/contest_link.o(.rodata);
src/item_use.o(.rodata);
src/battle/anim/powder.o(.rodata);
src/battle/anim/orbs.o(.rodata);
@@ -725,8 +726,7 @@ SECTIONS {
src/script_pokemon_util_80F99CC.o(.rodata);
src/heal_location.o(.rodata);
src/region_map.o(.rodata);
- src/contest_painting_effects.o(.rodata);
- data/contest_painting_effects.o(.rodata);
+ src/image_processing_effects.o(.rodata);
src/decoration.o(.rodata);
src/slot_machine.o(.rodata);
src/contest_painting.o(.rodata);
diff --git a/override.mk b/override.mk
index e69de29bb..0b94ce13e 100644
--- a/override.mk
+++ b/override.mk
@@ -0,0 +1,3 @@
+ifeq ($(GAME_LANGUAGE),GERMAN)
+include override-de.mk
+endif
diff --git a/src/battle/anim/alert.c b/src/battle/anim/alert.c
index 13bdd997d..f37744968 100644
--- a/src/battle/anim/alert.c
+++ b/src/battle/anim/alert.c
@@ -46,7 +46,7 @@ void sub_80CF610(struct Sprite* sprite)
{
sub_8078650(sprite);
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
sprite->hFlip = 1;
diff --git a/src/battle/anim/angel.c b/src/battle/anim/angel.c
index 787691e6d..5eb44c015 100644
--- a/src/battle/anim/angel.c
+++ b/src/battle/anim/angel.c
@@ -40,20 +40,20 @@ void sub_80D2938(struct Sprite* sprite)
s16 r5;
if (sprite->data[0] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->data[0]++;
r5 = (sprite->data[0] * 10) & 0xFF;
- sprite->pos2.x = Sin(r5, 0x50) >> 8;
+ sprite->x2 = Sin(r5, 0x50) >> 8;
if (sprite->data[0] <= 0x4F)
- sprite->pos2.y = (sprite->data[0] / 2) + (Cos(r5, 0x50) >> 8);
+ sprite->y2 = (sprite->data[0] / 2) + (Cos(r5, 0x50) >> 8);
if (sprite->data[0] > 0x5A)
{
sprite->data[2]++;
- sprite->pos2.x -= sprite->data[2] / 2;
+ sprite->x2 -= sprite->data[2] / 2;
}
if (sprite->data[0] > 0x64)
diff --git a/src/battle/anim/angel_kiss.c b/src/battle/anim/angel_kiss.c
index e38c6f388..fed56cb68 100644
--- a/src/battle/anim/angel_kiss.c
+++ b/src/battle/anim/angel_kiss.c
@@ -28,8 +28,8 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7BD0 =
static void sub_80D29CC(struct Sprite* sprite)
{
sprite->data[5]++;
- sprite->pos2.x = Sin(sprite->data[3], 5);
- sprite->pos2.y = sprite->data[5] / 2;
+ sprite->x2 = Sin(sprite->data[3], 5);
+ sprite->y2 = sprite->data[5] / 2;
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[5] > 20)
sprite->invisible = sprite->data[5] % 2;
@@ -49,16 +49,16 @@ void sub_80D2A38(struct Sprite* sprite)
else
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[3] > 0x46)
{
sprite->callback = sub_80D29CC;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[3] = Random() % 0xB4;
}
}
diff --git a/src/battle/anim/anger.c b/src/battle/anim/anger.c
index 041d35803..7ba06de4f 100644
--- a/src/battle/anim/anger.c
+++ b/src/battle/anim/anger.c
@@ -49,10 +49,10 @@ void sub_80D09C0(struct Sprite* sprite)
gBattleAnimArgs[1] *= -1;
}
- sprite->pos1.x = GetBattlerSpriteCoord(bank, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[2];
- if (sprite->pos1.y <= 7)
- sprite->pos1.y = 8;
+ sprite->x = GetBattlerSpriteCoord(bank, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[2];
+ if (sprite->y <= 7)
+ sprite->y = 8;
StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c
index b6f446de4..d66391f7d 100644
--- a/src/battle/anim/aurora.c
+++ b/src/battle/anim/aurora.c
@@ -71,9 +71,9 @@ void AnimAuroraRings(struct Sprite *sprite)
else
r6 = gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + r6;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
InitAnimLinearTranslation(sprite);
sprite->callback = AnimGrowAuroraRings;
diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c
index c18f5790c..8d257c5e1 100644
--- a/src/battle/anim/battle_intro.c
+++ b/src/battle/anim/battle_intro.c
@@ -12,7 +12,7 @@
#include "trig.h"
extern u16 gBattleTypeFlags;
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gBattleMonForms[];
extern void sub_800FE20(struct Sprite *);
@@ -118,7 +118,7 @@ static void BattleIntroTask_ScrollScenery(u8 taskId)
gTasks[taskId].tState++;
gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
gTasks[taskId].tFramesUntilBg1Slide = 32;
- gUnknown_02024DE8 &= ~1;
+ gIntroSlideFlags &= ~1;
}
break;
case 3:
@@ -227,7 +227,7 @@ static void BattleIntroTask_FadeScenery(u8 taskId)
gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
gTasks[taskId].tFramesUntilBg1Slide = 32;
gTasks[taskId].data[5] = 1;
- gUnknown_02024DE8 &= ~1;
+ gIntroSlideFlags &= ~1;
}
break;
case 3:
@@ -323,7 +323,7 @@ static void BattleIntroTask_ScrollAndFadeScenery(u8 taskId)
gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
gTasks[taskId].tFramesUntilBg1Slide = 32;
gTasks[taskId].data[5] = 1;
- gUnknown_02024DE8 &= ~1;
+ gIntroSlideFlags &= ~1;
}
break;
case 3:
@@ -402,10 +402,10 @@ static void BattleIntroTask_80E4C34(u8 taskId)
if (gTasks[taskId].tBgXOffset == 0)
{
gTasks[taskId].tState++;
- gSprites[ewram1608A].oam.objMode = 2;
- gSprites[ewram1608A].callback = sub_800FE20;
- gSprites[ewram1608B].oam.objMode = 2;
- gSprites[ewram1608B].callback = sub_800FE20;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].oam.objMode = 2;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = sub_800FE20;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.objMode = 2;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = sub_800FE20;
REG_WININ = 0x3F;
REG_WINOUT = 0x3F06;
}
@@ -419,7 +419,7 @@ static void BattleIntroTask_80E4C34(u8 taskId)
gTasks[taskId].tState++;
gTasks[taskId].tBgXOffset = DISPLAY_WIDTH;
gTasks[taskId].tFramesUntilBg1Slide = 32;
- gUnknown_02024DE8 &= ~1;
+ gIntroSlideFlags &= ~1;
}
break;
case 3:
@@ -463,7 +463,7 @@ void sub_80E4EF8(u8 left, u8 top, u8 c, u8 paletteNum, u16 e, u8 bgMap, u8 g)
s32 y;
u8 bank = GetBattlerAtPosition(c);
- DmaCopy16(3, gUnknown_081FAF4C[c] + gBattleMonForms[bank] * 0x800, (void *)(VRAM + e), 0x800);
+ DmaCopy16(3, gMonSpriteGfx_Sprite_ptr[c] + gBattleMonForms[bank] * 0x800, (void *)(VRAM + e), 0x800);
tileNum = e / 32 - g * 512;
for (y = top; y < top + 8; y++)
{
@@ -481,7 +481,7 @@ void unref_sub_80E4FDC(u8 left, u8 top, u8 c, u8 form, u8 paletteNum, u16 f, u8
s32 x;
s32 y;
- DmaCopy16(3, gUnknown_081FAF4C[c] + form * 0x800, (void *)(VRAM + f), 0x800);
+ DmaCopy16(3, gMonSpriteGfx_Sprite_ptr[c] + form * 0x800, (void *)(VRAM + f), 0x800);
tileNum = f / 32 - h * 512;
for (y = top; y < top + 8; y++)
{
diff --git a/src/battle/anim/beta_beat_up.c b/src/battle/anim/beta_beat_up.c
index be712e87a..7697a3935 100644
--- a/src/battle/anim/beta_beat_up.c
+++ b/src/battle/anim/beta_beat_up.c
@@ -40,11 +40,11 @@ void sub_80D6234(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
sprite->callback = sub_80D6278;
diff --git a/src/battle/anim/blow_kiss.c b/src/battle/anim/blow_kiss.c
index f1baef38a..77e5e951f 100644
--- a/src/battle/anim/blow_kiss.c
+++ b/src/battle/anim/blow_kiss.c
@@ -29,9 +29,9 @@ void sub_80D1F58(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = 0x5F;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
sprite->callback = sub_80D1FA4;
@@ -41,7 +41,7 @@ static void sub_80D1FA4(struct Sprite* sprite)
{
if (TranslateAnimLinear(sprite) == 0)
{
- sprite->pos2.y += Sin(sprite->data[5], 14);
+ sprite->y2 += Sin(sprite->data[5], 14);
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
}
else
diff --git a/src/battle/anim/bottle.c b/src/battle/anim/bottle.c
index d1cee94d9..ebcafa45c 100644
--- a/src/battle/anim/bottle.c
+++ b/src/battle/anim/bottle.c
@@ -50,8 +50,8 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6C48 =
void sub_80CCF04(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 0xFFE8;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 0xFFE8;
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
@@ -101,7 +101,7 @@ static void sub_80CCF70(struct Sprite* sprite)
if (++sprite->data[1] > 2)
{
sprite->data[1] = 0;
- sprite->pos1.y++;
+ sprite->y++;
}
if (++sprite->data[2] <= 29)
@@ -148,10 +148,10 @@ static void sub_80CD0CC(struct Sprite* sprite, int unk1, int unk2)
if ((sprite->data[3]) > 0x2F)
sprite->data[4] += 2;
- sprite->pos2.x = sprite->data[4] / 9;
- sprite->pos2.y = sprite->data[4] / 14;
- if (sprite->pos2.y < 0)
- sprite->pos2.y *= -1;
+ sprite->x2 = sprite->data[4] / 9;
+ sprite->y2 = sprite->data[4] / 14;
+ if (sprite->y2 < 0)
+ sprite->y2 *= -1;
sprite->data[3]++;
if (sprite->data[3] > 0x3B)
diff --git a/src/battle/anim/brace.c b/src/battle/anim/brace.c
index b57a2596e..179924162 100644
--- a/src/battle/anim/brace.c
+++ b/src/battle/anim/brace.c
@@ -43,13 +43,13 @@ void sub_80CDF0C(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[2];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[2];
}
sprite->data[0] = 0;
@@ -62,10 +62,10 @@ static void sub_80CDF70(struct Sprite* sprite)
if (++sprite->data[0] > sprite->data[1])
{
sprite->data[0] = 0;
- sprite->pos1.y--;
+ sprite->y--;
}
- sprite->pos1.y -= sprite->data[0];
+ sprite->y -= sprite->data[0];
if (sprite->animEnded)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/breath.c b/src/battle/anim/breath.c
index d79cdcf77..974ddbab9 100644
--- a/src/battle/anim/breath.c
+++ b/src/battle/anim/breath.c
@@ -53,17 +53,17 @@ void sub_80D0930(struct Sprite* sprite)
if (GetBattlerSide(gBattleAnimAttacker) == 0)
{
StartSpriteAnim(sprite, 0);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + 32;
sprite->data[1] = 0x40;
}
else
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - 32;
sprite->data[1] = -0x40;
}
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = 0x34;
sprite->data[2] = 0;
sprite->data[3] = 0;
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c
index 168a65d88..e6f544e83 100644
--- a/src/battle/anim/bubble.c
+++ b/src/battle/anim/bubble.c
@@ -58,13 +58,13 @@ void sub_80D31C8(struct Sprite* sprite)
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1];
}
sprite->animPaused = 1;
@@ -75,9 +75,9 @@ void sub_80D31C8(struct Sprite* sprite)
}
sprite->data[0] = gBattleAnimArgs[6];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
@@ -85,8 +85,8 @@ void sub_80D31C8(struct Sprite* sprite)
newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
sprite->data[5] = newSpriteId;
- sprite->pos1.x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
- sprite->pos1.y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
+ sprite->x -= Sin((u8)gBattleAnimArgs[4], gBattleAnimArgs[2]);
+ sprite->y -= Cos((u8)gBattleAnimArgs[4], gBattleAnimArgs[3]);
gSprites[newSpriteId].data[0] = gBattleAnimArgs[2];
gSprites[newSpriteId].data[1] = gBattleAnimArgs[3];
@@ -108,8 +108,8 @@ static void sub_80D32E8(struct Sprite *sprite)
sprite->data[0] = 1;
TranslateAnimLinear(sprite);
- sprite->pos2.x += Sin(index / 256, gSprites[spriteId].data[0]);
- sprite->pos2.y += Cos(index / 256, gSprites[spriteId].data[1]);
+ sprite->x2 += Sin(index / 256, gSprites[spriteId].data[0]);
+ sprite->y2 += Cos(index / 256, gSprites[spriteId].data[1]);
gSprites[spriteId].data[3] = gSprites[spriteId].data[2] + index;
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index e693541bc..e6a828e11 100644
--- a/src/battle/anim/bug.c
+++ b/src/battle/anim/bug.c
@@ -217,8 +217,8 @@ void sub_80DC824(struct Sprite *sprite)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
}
- sprite->pos1.x = sub_8077EE4(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = sub_8077EE4(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->x = sub_8077EE4(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->y = sub_8077EE4(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
@@ -242,8 +242,8 @@ void sub_80DC8F4(struct Sprite *sprite)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
}
- sprite->pos1.x = sub_8077EE4(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = sub_8077EE4(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->x = sub_8077EE4(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->y = sub_8077EE4(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
@@ -262,8 +262,8 @@ void sub_80DC9A0(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
if (!gBattleAnimArgs[4])
{
@@ -288,22 +288,22 @@ static void sub_80DCA38(struct Sprite *sprite)
return;
}
- sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]);
+ sprite->x2 += Sin(sprite->data[6], sprite->data[5]);
sprite->data[6] = (sprite->data[6] + 13) & 0xFF;
}
// used in Move_STRING_SHOT
void sub_80DCA70(struct Sprite *sprite)
{
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker))
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
if (!GetBattlerSide(gBattleAnimTarget))
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = sub_80DCAEC;
}
@@ -406,7 +406,7 @@ void AnimTranslateStinger(struct Sprite *sprite)
lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
- rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
+ rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y);
rot += 0xC000;
sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
@@ -456,10 +456,10 @@ static void AnimMissileArcStep(struct Sprite *sprite)
{
s16 tempData[8];
u16 *data = sprite->data;
- u16 x1 = sprite->pos1.x;
- s16 x2 = sprite->pos2.x;
- u16 y1 = sprite->pos1.y;
- s16 y2 = sprite->pos2.y;
+ u16 x1 = sprite->x;
+ s16 x2 = sprite->x2;
+ u16 y1 = sprite->y;
+ s16 y2 = sprite->y2;
int i;
for (i = 0; i < 8; i++)
@@ -470,8 +470,8 @@ static void AnimMissileArcStep(struct Sprite *sprite)
if (!TranslateAnimArc(sprite))
{
- u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
- sprite->pos1.y + sprite->pos2.y - y2);
+ u16 rotation = ArcTan2Neg(sprite->x + sprite->x2 - x2,
+ sprite->y + sprite->y2 - y2);
rotation += 0xC000;
sub_8078FDC(sprite, FALSE, 0x100, 0x100, rotation);
@@ -485,13 +485,13 @@ void sub_80DCE40(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18;
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18;
}
StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c
index 043e70563..9038cbc35 100644
--- a/src/battle/anim/bullet.c
+++ b/src/battle/anim/bullet.c
@@ -55,10 +55,10 @@ static void sub_80D0030(struct Sprite* sprite)
u16 rand;
s16* ptr;
PlaySE12WithPanning(0xA6, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
ptr = &sprite->data[7];
for (i = 0; i < 8; i++)
{
@@ -76,11 +76,11 @@ static void sub_80D0030(struct Sprite* sprite)
static void sub_80D00B4(struct Sprite* sprite)
{
sprite->data[0] += sprite->data[7];
- sprite->pos2.x = sprite->data[0] >> 8;
+ sprite->x2 = sprite->data[0] >> 8;
if (sprite->data[7] & 1)
- sprite->pos2.x = -sprite->pos2.x;
+ sprite->x2 = -sprite->x2;
- sprite->pos2.y = Sin(sprite->data[1], sprite->data[6]);
+ sprite->y2 = Sin(sprite->data[1], sprite->data[6]);
sprite->data[1] += 8;
if (sprite->data[1] > 0x7E)
{
diff --git a/src/battle/anim/copy_orb.c b/src/battle/anim/copy_orb.c
index b7b4239df..84a3451ba 100644
--- a/src/battle/anim/copy_orb.c
+++ b/src/battle/anim/copy_orb.c
@@ -53,8 +53,8 @@ void sub_80CB4CC(struct Sprite* sprite)
gBattleAnimArgs[0] = -a;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1];
sprite->invisible = TRUE;
sprite->data[0]++;
break;
diff --git a/src/battle/anim/cube.c b/src/battle/anim/cube.c
index d45d6cd16..a64e94e09 100644
--- a/src/battle/anim/cube.c
+++ b/src/battle/anim/cube.c
@@ -52,8 +52,8 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6EF0 =
void sub_80CDFB0(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - 12;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) - 12;
sprite->data[0] = 0;
sprite->data[1] = 2;
sprite->data[2] = 0;
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
index 32d09ddf2..8c5bfbef1 100644
--- a/src/battle/anim/current.c
+++ b/src/battle/anim/current.c
@@ -361,9 +361,9 @@ void sub_80D648C(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
@@ -380,8 +380,8 @@ static void sub_80D6514(struct Sprite *sprite)
{
if (!TranslateAnimLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]);
- sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]);
+ sprite->x2 += Sin(sprite->data[7], sprite->data[5]);
+ sprite->y2 += Cos(sprite->data[7], sprite->data[5]);
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[7] % 3 == 0)
@@ -414,8 +414,8 @@ void sub_80D65DC(struct Sprite *sprite)
if (!gMain.inBattle || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
sprite->data[3] = gBattleAnimArgs[0];
sprite->data[4] = gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[3];
@@ -435,8 +435,8 @@ void sub_80D6658(struct Sprite *sprite)
if (!gMain.inBattle || GetBattlerSide(bank) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(bank, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(bank, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[1];
sprite->data[4] = gBattleAnimArgs[7] & 0x7FFF;
sprite->data[5] = gBattleAnimArgs[2];
@@ -450,8 +450,8 @@ void sub_80D6658(struct Sprite *sprite)
static void sub_80D672C(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[7], sprite->data[5]);
- sprite->pos2.y = Cos(sprite->data[7], sprite->data[5]);
+ sprite->x2 = Sin(sprite->data[7], sprite->data[5]);
+ sprite->y2 = Cos(sprite->data[7], sprite->data[5]);
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[7] % sprite->data[4] == 0)
@@ -574,9 +574,9 @@ void sub_80D6A6C(struct Sprite *sprite)
{
u8 spriteId;
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
- spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D9950, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority);
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
+ spriteId = CreateSprite(&gBattleAnimSpriteTemplate_83D9950, sprite->x + 32, sprite->y, sprite->subpriority);
gSprites[spriteId].oam.tileNum += 8;
gAnimVisualTaskCount++;
gSprites[spriteId].callback = sub_80D6AF0;
@@ -635,13 +635,13 @@ static void sub_80D6BB8(u8 taskId)
if (spriteId != MAX_SPRITES)
{
struct Sprite *sprite = &gSprites[spriteId];
- sprite->pos1.x += gUnknown_083D9968[task->data[9]][0];
- sprite->pos1.y += gUnknown_083D9968[task->data[9]][1];
+ sprite->x += gUnknown_083D9968[task->data[9]][0];
+ sprite->y += gUnknown_083D9968[task->data[9]][1];
sprite->data[0] = 40 - task->data[8] * 5;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[14];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[15];
sprite->data[5] = taskId;
@@ -692,13 +692,13 @@ void sub_80D6D18(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
}
StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
@@ -709,17 +709,17 @@ void sub_80D6D70(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
}
- sprite->pos2.x = gBattleAnimArgs[1];
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->x2 = gBattleAnimArgs[1];
+ sprite->y2 = gBattleAnimArgs[2];
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
sprite->callback = sub_8078600;
}
@@ -727,8 +727,8 @@ void sub_80D6D70(struct Sprite *sprite)
void sub_80D6DD8(struct Sprite *sprite)
{
StartSpriteAffineAnim(sprite, 1);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[6] = GetAnimBattlerSpriteId(0);
sprite->data[7] = 16;
@@ -747,9 +747,9 @@ static void sub_80D6E38(struct Sprite *sprite)
sprite->data[0]++;
break;
case 1:
- sprite->pos1.x += sprite->data[7];
- gSprites[sprite->data[6]].pos2.x += sprite->data[7];
- if ((u16)(sprite->pos1.x + 80) > 400)
+ sprite->x += sprite->data[7];
+ gSprites[sprite->data[6]].x2 += sprite->data[7];
+ if ((u16)(sprite->x + 80) > 400)
{
DestroySpriteAndMatrix(sprite);
}
@@ -777,7 +777,7 @@ void sub_80D6E9C(u8 taskId)
task->data[13] = -2;
}
- gSprites[task->data[15]].pos2.x = task->data[14];
+ gSprites[task->data[15]].x2 = task->data[14];
task->data[0]++;
break;
case 1:
@@ -789,7 +789,7 @@ void sub_80D6E9C(u8 taskId)
if (task->data[14])
{
task->data[14] += task->data[13];
- gSprites[task->data[15]].pos2.x = task->data[14];
+ gSprites[task->data[15]].x2 = task->data[14];
}
else
{
@@ -935,8 +935,8 @@ void sub_80D727C(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
StartSpriteAffineAnim(sprite, 2);
sprite->data[0]++;
break;
diff --git a/src/battle/anim/cyclone.c b/src/battle/anim/cyclone.c
index b02f7b858..26125c70f 100644
--- a/src/battle/anim/cyclone.c
+++ b/src/battle/anim/cyclone.c
@@ -40,7 +40,7 @@ void sub_80D0118(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 0);
if (GetBattlerSide(gBattleAnimAttacker) == 0)
- sprite->pos1.y += 16;
+ sprite->y += 16;
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = gBattleAnimArgs[2];
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index bae52d83f..de64599c2 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -304,17 +304,17 @@ static void sub_80DFE90(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
if (sprite->data[7] == 0)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
sprite->data[0]--;
}
- sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]);
+ sprite->y2 += Sin(sprite->data[5], sprite->data[6]);
sprite->data[5] = (sprite->data[5] + 3) & 0xFF;
if (sprite->data[5] > 0x7F)
{
@@ -328,8 +328,8 @@ static void sub_80DFE90(struct Sprite *sprite)
void sub_80DFF1C(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]);
sprite->data[0] = gBattleAnimArgs[3];
@@ -342,8 +342,8 @@ static void sub_80DFF58(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[0];
sprite->data[5] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = sprite->data[5] >> 8;
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[5] >> 8;
if (++sprite->data[3] == sprite->data[2])
sprite->callback = sub_80DFF98;
@@ -353,8 +353,8 @@ static void sub_80DFF98(struct Sprite *sprite)
{
sprite->data[4] -= sprite->data[0];
sprite->data[5] -= sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = sprite->data[5] >> 8;
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[5] >> 8;
if (--sprite->data[3] == 0)
DestroySpriteAndMatrix(sprite);
@@ -376,30 +376,30 @@ void sub_80DFFD0(struct Sprite *sprite)
switch (gBattleAnimArgs[1])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) - 8;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(bank, 5) - 8;
+ sprite->y = GetBattlerSpriteCoordAttr(bank, 2) + 8;
break;
case 1:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) - 14;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 16;
+ sprite->x = GetBattlerSpriteCoordAttr(bank, 5) - 14;
+ sprite->y = GetBattlerSpriteCoordAttr(bank, 2) + 16;
break;
case 2:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) + 8;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(bank, 4) + 8;
+ sprite->y = GetBattlerSpriteCoordAttr(bank, 2) + 8;
StartSpriteAffineAnim(sprite, 1);
xOffset = -20;
break;
case 3:
- sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) + 14;
- sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2) + 16;
+ sprite->x = GetBattlerSpriteCoordAttr(bank, 4) + 14;
+ sprite->y = GetBattlerSpriteCoordAttr(bank, 2) + 16;
StartSpriteAffineAnim(sprite, 1);
xOffset = -20;
break;
}
sprite->data[0] = 32;
- sprite->data[2] = sprite->pos1.x + xOffset;
- sprite->data[4] = sprite->pos1.y + 12;
+ sprite->data[2] = sprite->x + xOffset;
+ sprite->data[4] = sprite->y + 12;
sprite->data[5] = -12;
InitAnimArcTranslation(sprite);
@@ -821,8 +821,8 @@ void sub_80E09C4(u8 taskId)
void sub_80E0A10(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->callback = sub_8078600;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -864,7 +864,7 @@ void sub_80E0A4C(u8 taskId)
if (IsContest())
{
- species = EWRAM_19348[0];
+ species = gContestResources__moveAnim.species;
}
else
{
@@ -883,8 +883,8 @@ void sub_80E0A4C(u8 taskId)
LZDecompressVram(&gUnknown_08D1D410, subStruct.field_0);
LoadCompressedPalette(&gUnknown_08D1D54C, subStruct.field_8 << 4, 32);
- gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96;
- gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ gBattle_BG1_X = -gSprites[spriteId].x + 96;
+ gBattle_BG1_Y = -gSprites[spriteId].y + 32;
paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
if (gBattleAnimArgs[1] == 0)
diff --git a/src/battle/anim/devil.c b/src/battle/anim/devil.c
index cc96cc455..b083241e0 100644
--- a/src/battle/anim/devil.c
+++ b/src/battle/anim/devil.c
@@ -42,8 +42,8 @@ void sub_80D2ABC(struct Sprite *sprite)
{
if (sprite->data[3] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, 0);
sprite->subpriority = GetBattlerSubpriority(gBattleAnimTarget) - 1;
sprite->data[2] = 1;
@@ -52,8 +52,8 @@ void sub_80D2ABC(struct Sprite *sprite)
sprite->data[1] = (sprite->data[0] * 4) % 256;
if (sprite->data[1] < 0)
sprite->data[1] = 0;
- sprite->pos2.x = Cos(sprite->data[1], 30 - sprite->data[0] / 4);
- sprite->pos2.y = Sin(sprite->data[1], 10 - sprite->data[0] / 8);
+ sprite->x2 = Cos(sprite->data[1], 30 - sprite->data[0] / 4);
+ sprite->y2 = Sin(sprite->data[1], 10 - sprite->data[0] / 8);
if (sprite->data[1] > 128 && sprite->data[2] > 0)
sprite->data[2] = -1;
if (sprite->data[1] == 0 && sprite->data[2] < 0)
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index d49f83952..dd4e0f4c1 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -199,17 +199,17 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DB100 =
void sub_80DF5A0(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
}
else
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
@@ -228,15 +228,15 @@ void sub_80DF63C(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[1];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] -= gBattleAnimArgs[2];
sprite->data[4] += gBattleAnimArgs[3];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] += gBattleAnimArgs[2];
sprite->data[4] += gBattleAnimArgs[3];
StartSpriteAnim(sprite, 1);
@@ -252,16 +252,16 @@ void sub_80DF6F0(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
sub_807867C(sprite, gBattleAnimArgs[1]);
- sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->y += gBattleAnimArgs[2];
sprite->callback = sub_8078600;
StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
}
@@ -281,8 +281,8 @@ void sub_80DF78C(struct Sprite *sprite)
{
u16 r5;
u16 r0;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[4] = 0;
sprite->data[5] = 1;
sprite->data[6] = gBattleAnimArgs[0];
@@ -292,8 +292,8 @@ void sub_80DF78C(struct Sprite *sprite)
sprite->data[7] = r5 / 2;
else
sprite->data[7] = r0 / 2;
- sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
- sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
+ sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
sprite->callback = sub_80DF81C;
}
@@ -303,8 +303,8 @@ static void sub_80DF81C(struct Sprite *sprite)
{
case 0:
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
- sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
- sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
+ sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
if (++sprite->data[4] > 5)
{
sprite->data[4] = 0;
@@ -321,8 +321,8 @@ static void sub_80DF81C(struct Sprite *sprite)
sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF;
if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95)
sprite->data[7] = 0x96;
- sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]);
- sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]);
+ sprite->x2 = Cos(sprite->data[6], sprite->data[7]);
+ sprite->y2 = Sin(sprite->data[6], sprite->data[7]);
if (++sprite->data[4] > 5)
{
sprite->data[4] = 0;
@@ -426,12 +426,12 @@ void sub_80DFB28(struct Sprite *sprite)
{
int r6 = (gBattleAnimArgs[2] * 3) / 5;
int i;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4];
sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]);
sprite->data[2] = Sin(gBattleAnimArgs[1], r6);
- sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0];
- sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0];
+ sprite->x += sprite->data[1] * gBattleAnimArgs[0];
+ sprite->y += sprite->data[2] * gBattleAnimArgs[0];
sprite->data[3] = gBattleAnimArgs[3];
sprite->callback = sub_80DFBD8;
for (i = 0; i <= 6; i++)
@@ -442,8 +442,8 @@ static void sub_80DFBD8(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[1];
sprite->data[5] += sprite->data[2];
- sprite->pos2.x = sprite->data[4] / 10;
- sprite->pos2.y = sprite->data[5] / 10;
+ sprite->x2 = sprite->data[4] / 10;
+ sprite->y2 = sprite->data[5] / 10;
if (++sprite->data[0] > sprite->data[3])
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index a42d8617f..20fc15782 100644
--- a/src/battle/anim/draw.c
+++ b/src/battle/anim/draw.c
@@ -120,8 +120,8 @@ static void sub_80D0D68(u8 taskId)
void sub_80D0E30(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16;
- sprite->pos1.y = sub_8077FC0(gBattleAnimTarget) + 16;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) - 16;
+ sprite->y = sub_8077FC0(gBattleAnimTarget) + 16;
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
@@ -152,7 +152,7 @@ static void sub_80D0E8C(struct Sprite* sprite)
if (++sprite->data[1] > 3 && sprite->data[2] < sprite->data[5])
{
sprite->data[1] = 0;
- sprite->pos1.y -= 1;
+ sprite->y -= 1;
sprite->data[2]++;
if (sprite->data[2] % 10 == 0)
PlaySE12WithPanning(0xCD, sprite->data[6]);
@@ -168,7 +168,7 @@ static void sub_80D0E8C(struct Sprite* sprite)
sprite->data[4] = -0x40 - sprite->data[4];
sprite->data[3] *= -1;
}
- sprite->pos2.x = sprite->data[4];
+ sprite->x2 = sprite->data[4];
if (sprite->data[5] == sprite->data[2])
{
sprite->data[1] = 0;
diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c
index b165a7f28..6e29ccc31 100644
--- a/src/battle/anim/energy_wave.c
+++ b/src/battle/anim/energy_wave.c
@@ -165,9 +165,9 @@ void sub_80D3554(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
sprite->data[0] = 30;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
@@ -196,7 +196,7 @@ static void sub_80D35DC(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
- sprite->pos2.y += Sin(sprite->data[6] >> 8, sprite->data[7]);
+ sprite->y2 += Sin(sprite->data[6] >> 8, sprite->data[7]);
if (((sprite->data[6] + sprite->data[5]) >> 8) > 127)
{
sprite->data[6] = 0;
@@ -228,9 +228,9 @@ void sub_80D3698(struct Sprite *sprite)
{
u8 subpriority;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
- sprite->pos2.y = -10;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->y2 = -10;
subpriority = GetBattlerSubpriority(gBattleAnimAttacker);
@@ -238,18 +238,18 @@ void sub_80D3698(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == 0)
{
- sprite->pos2.x = 10;
+ sprite->x2 = 10;
sprite->subpriority = subpriority + 2;
}
else
{
- sprite->pos2.x = -10;
+ sprite->x2 = -10;
sprite->subpriority = subpriority - 2;
}
}
else
{
- sprite->pos2.x = -10;
+ sprite->x2 = -10;
sprite->subpriority = subpriority + 2;
}
diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c
index 27dc47c21..86e00d1f1 100644
--- a/src/battle/anim/espeed.c
+++ b/src/battle/anim/espeed.c
@@ -72,7 +72,7 @@ void sub_80D15E0(u8 taskId)
struct Task* task = &gTasks[taskId];
if (RunAffineAnimFromTaskData(task) == 0)
{
- gSprites[task->data[0]].pos2.y = 0;
+ gSprites[task->data[0]].y2 = 0;
gSprites[task->data[0]].invisible = TRUE;
DestroyAnimVisualTask(taskId);
}
@@ -109,7 +109,7 @@ void sub_80D16A0(u8 taskId)
switch (task->data[0])
{
case 0:
- gSprites[task->data[15]].pos2.x += task->data[14];
+ gSprites[task->data[15]].x2 += task->data[14];
task->data[1] = 0;
task->data[2] = 0;
task->data[3] = 0;
@@ -121,14 +121,14 @@ void sub_80D16A0(u8 taskId)
task->data[1] = 0;
task->data[2]++;
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.x += 6;
+ gSprites[task->data[15]].x2 += 6;
else
- gSprites[task->data[15]].pos2.x -= 6;
+ gSprites[task->data[15]].x2 -= 6;
if (++task->data[3] > 4)
{
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.x -= 6;
+ gSprites[task->data[15]].x2 -= 6;
task->data[0]++;
}
@@ -141,8 +141,8 @@ void sub_80D16A0(u8 taskId)
task->data[0]++;
break;
case 3:
- gSprites[task->data[15]].pos2.x += task->data[13];
- if (gSprites[task->data[15]].pos2.x == 0)
+ gSprites[task->data[15]].x2 += task->data[13];
+ if (gSprites[task->data[15]].x2 == 0)
DestroyAnimVisualTask(taskId);
break;
}
@@ -257,8 +257,8 @@ void sub_80D1930(u8 taskId)
{
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 13;
- gSprites[spriteId].pos2.x = gUnknown_083D7A00[task->data[2]][0];
- gSprites[spriteId].pos2.y = gUnknown_083D7A00[task->data[2]][1];
+ gSprites[spriteId].x2 = gUnknown_083D7A00[task->data[2]][0];
+ gSprites[spriteId].y2 = gUnknown_083D7A00[task->data[2]][1];
task->data[13]++;
if (++task->data[2] > 3)
{
diff --git a/src/battle/anim/evasion.c b/src/battle/anim/evasion.c
index 2c3d973aa..87364c222 100644
--- a/src/battle/anim/evasion.c
+++ b/src/battle/anim/evasion.c
@@ -90,6 +90,6 @@ void sub_80CE974(struct Sprite* sprite)
sprite->data[4] = gSineTable[sprite->data[0]] / 6;
sprite->data[5] = gSineTable[sprite->data[0]] / 13;
sprite->data[1] = (sprite->data[1] + sprite->data[5]) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[4]);
}
}
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c
index 450844453..d8b16f14d 100644
--- a/src/battle/anim/fight.c
+++ b/src/battle/anim/fight.c
@@ -436,7 +436,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA214 =
void sub_080B08A0(struct Sprite *sprite)
{
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = 15;
sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -502,8 +502,8 @@ void sub_80D90F4(struct Sprite *sprite)
gBattleAnimArgs[2] = Random() % 5;
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
- sprite->pos1.x = GetBattlerSpriteCoord(bank, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 3);
+ sprite->x = GetBattlerSpriteCoord(bank, 2);
+ sprite->y = GetBattlerSpriteCoord(bank, 3);
xMod = GetBattlerSpriteCoordAttr(bank, 1) / 2;
yMod = GetBattlerSpriteCoordAttr(bank, 0) / 4;
@@ -519,11 +519,11 @@ void sub_80D90F4(struct Sprite *sprite)
if ((gBattlerPositions[bank] & 1) == 0)
y += 0xFFF0;
- sprite->pos1.x += x;
- sprite->pos1.y += y;
+ sprite->x += x;
+ sprite->y += y;
sprite->data[0] = gBattleAnimArgs[1];
- sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1);
if (sprite->data[7] != 64)
{
StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
@@ -558,15 +558,15 @@ void sub_80D92D0(struct Sprite *sprite)
if (gBattleAnimArgs[2] == 0)
{
- sprite->data[2] = sprite->pos1.x - 20;
+ sprite->data[2] = sprite->x - 20;
}
else
{
- sprite->data[2] = sprite->pos1.x + 20;
+ sprite->data[2] = sprite->x + 20;
sprite->hFlip = 1;
}
- sprite->data[4] = sprite->pos1.y - 20;
+ sprite->data[4] = sprite->y - 20;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80D9328);
}
@@ -575,13 +575,13 @@ static void sub_80D9328(struct Sprite *sprite)
{
if (++sprite->data[5] == 11)
{
- sprite->data[2] = sprite->pos1.x - sprite->pos2.x;
- sprite->data[4] = sprite->pos1.y - sprite->pos2.y;
+ sprite->data[2] = sprite->x - sprite->x2;
+ sprite->data[4] = sprite->y - sprite->y2;
sprite->data[0] = 8;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -599,10 +599,10 @@ void sub_80D9378(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y;
InitAnimLinearTranslation(sprite);
@@ -617,7 +617,7 @@ static void sub_80D9404(struct Sprite *sprite)
{
if (!TranslateAnimLinear(sprite))
{
- sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
+ sprite->y2 += Sin(sprite->data[7] >> 8, sprite->data[5]);
sprite->data[7] += sprite->data[6];
}
else
@@ -697,8 +697,8 @@ void sub_80D9540(struct Sprite *sprite)
else
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[3] > 100)
@@ -713,17 +713,17 @@ void sub_80D95D0(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
- sprite->pos1.x += gBattleAnimArgs[1];
- sprite->pos1.y += gBattleAnimArgs[2];
+ sprite->x += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[2];
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[3];
@@ -751,9 +751,9 @@ static void sub_80D9640(struct Sprite *sprite)
sprite->data[1] = 0;
sprite->data[3]++;
if (sprite->data[3] & 1)
- sprite->pos2.x = 2;
+ sprite->x2 = 2;
else
- sprite->pos2.x = -2;
+ sprite->x2 = -2;
}
if (--sprite->data[2] == 0)
@@ -766,13 +766,13 @@ void sub_80D96B8(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3];
}
sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
@@ -806,8 +806,8 @@ void sub_80D96B8(struct Sprite *sprite)
static void sub_80D97A0(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->data[6];
- sprite->pos1.y += sprite->data[7];
+ sprite->x += sprite->data[6];
+ sprite->y += sprite->data[7];
if (++sprite->data[0] > 40)
DestroyAnimSprite(sprite);
@@ -817,8 +817,8 @@ void sub_80D97CC(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
sprite->data[7] = gBattleAnimTarget;
}
@@ -841,9 +841,9 @@ static void sub_80D986C(struct Sprite *sprite)
REG_BLDCNT = 0;
sprite->data[0] = 16;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
InitAnimLinearTranslation(sprite);
@@ -854,11 +854,11 @@ static void sub_80D986C(struct Sprite *sprite)
void sub_80D98D8(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = 120;
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = 120;
sprite->data[0] = gBattleAnimArgs[3];
- sub_8079BF4(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
+ sub_8079BF4(&sprite->data[4], &sprite->data[5], (void *)(sprite->y << 8));
sprite->data[6] = gBattleAnimArgs[1];
sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
@@ -877,8 +877,8 @@ static void sub_80D9934(struct Sprite *sprite)
sub_8079BF4(&sprite->data[4], &sprite->data[5], var0);
var0 = (void *)(((intptr_t)var0) >> 8);
- sprite->pos1.y = (intptr_t)var0;
- if (sprite->pos1.y < -8)
+ sprite->y = (intptr_t)var0;
+ if (sprite->y < -8)
DestroyAnimSprite(sprite);
else
sprite->data[0]--;
@@ -892,8 +892,8 @@ static void sub_80D9934(struct Sprite *sprite)
sprite->data[0] = pos2 - pos0;
sprite->data[1] = pos3 - pos1;
- sprite->data[2] = sprite->pos1.x << 4;
- sprite->data[3] = sprite->pos1.y << 4;
+ sprite->data[2] = sprite->x << 4;
+ sprite->data[3] = sprite->y << 4;
sprite->callback = sub_80D99F4;
}
@@ -905,11 +905,11 @@ static void sub_80D99F4(struct Sprite *sprite)
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];
- sprite->pos1.x = sprite->data[2] >> 4;
- sprite->pos1.y = sprite->data[3] >> 4;
+ sprite->x = sprite->data[2] >> 4;
+ sprite->y = sprite->data[3] >> 4;
- edgeX = sprite->pos1.x + 8;
- if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ edgeX = sprite->x + 8;
+ if (edgeX > 256 || sprite->y < -8 || sprite->y > 120)
DestroyAnimSprite(sprite);
}
@@ -919,8 +919,8 @@ void sub_80D9A38(struct Sprite *sprite)
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3);
bank = gBattleAnimTarget;
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
@@ -936,9 +936,9 @@ void sub_80D9A38(struct Sprite *sprite)
sprite->oam.matrixNum |= 0x18;
sprite->data[0] = 16;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(bank, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(bank, 3);
InitAnimLinearTranslation(sprite);
@@ -958,8 +958,8 @@ void sub_80D9B48(struct Sprite *sprite)
{
u8 turn;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[3] = gBattleAnimArgs[1];
@@ -976,8 +976,8 @@ void sub_80D9B48(struct Sprite *sprite)
}
StartSpriteAnim(sprite, sprite->data[1]);
- sprite->pos2.x = sprite->data[2];
- sprite->pos2.y = sprite->data[3];
+ sprite->x2 = sprite->data[2];
+ sprite->y2 = sprite->data[3];
sprite->callback = sub_80D9B24;
}
@@ -1006,7 +1006,7 @@ void sub_80D9C40(struct Sprite *sprite)
if (sprite->affineAnimEnded)
{
sprite->data[1] = (sprite->data[1] + 40) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
+ sprite->x2 = Sin(sprite->data[1], 2);
if (++sprite->data[0] > 40)
{
diff --git a/src/battle/anim/finger.c b/src/battle/anim/finger.c
index 95e33ece5..5009f864b 100644
--- a/src/battle/anim/finger.c
+++ b/src/battle/anim/finger.c
@@ -166,10 +166,10 @@ void sub_80CF0BC(struct Sprite* sprite)
else
bank = gBattleAnimTarget;
- sprite->pos1.x = GetBattlerSpriteCoord(bank, 0);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(bank, 2);
- if (sprite->pos1.y <= 9)
- sprite->pos1.y = 10;
+ sprite->x = GetBattlerSpriteCoord(bank, 0);
+ sprite->y = GetBattlerSpriteCoordAttr(bank, 2);
+ if (sprite->y <= 9)
+ sprite->y = 10;
sprite->data[0] = 1;
sprite->data[1] = 0;
@@ -195,7 +195,7 @@ static void sub_80CF158(struct Sprite* sprite)
{
if (--sprite->data[0] == 0)
{
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
sprite->callback = sub_80CF088;
return;
}
@@ -212,7 +212,7 @@ static void sub_80CF158(struct Sprite* sprite)
sprite->subpriority = sprite->data[2];
temp = gSineTable[sprite->data[1]];
- sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
+ sprite->x2 = (temp2 = temp >> 3) + (temp2 >> 1);
}
void sub_80CF1C8(struct Sprite* sprite)
diff --git a/src/battle/anim/fire.c b/src/battle/anim/fire.c
index 795f68d8d..9dec7510e 100644
--- a/src/battle/anim/fire.c
+++ b/src/battle/anim/fire.c
@@ -189,7 +189,7 @@ void sub_80D4F18(struct Sprite *sprite)
{
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
@@ -204,14 +204,14 @@ void sub_80D4F5C(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = -gBattleAnimArgs[4];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[4];
}
@@ -226,14 +226,14 @@ void sub_80D4FCC(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[4];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[2] = -gBattleAnimArgs[4];
}
@@ -248,8 +248,8 @@ static void sub_80D5038(struct Sprite *sprite)
{
if (++sprite->data[0] < sprite->data[4])
{
- sprite->pos2.x += sprite->data[2];
- sprite->pos2.y += sprite->data[3];
+ sprite->x2 += sprite->data[2];
+ sprite->y2 += sprite->data[3];
}
if (sprite->data[0] == sprite->data[1])
@@ -262,15 +262,15 @@ void sub_80D5074(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
sprite->subpriority = 8;
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
@@ -288,8 +288,8 @@ static void sub_80D50E8(struct Sprite *sprite)
if(sprite->data[5] > 10000)
sprite->subpriority = 1;
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
+ sprite->y2 = Cos(sprite->data[0], sprite->data[1] + (sprite->data[5] >> 8));
sprite->data[0] += sprite->data[2];
sprite->data[5] += sprite->data[4];
diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c
index 1d69b2c1c..6adc4f960 100644
--- a/src/battle/anim/fire_2.c
+++ b/src/battle/anim/fire_2.c
@@ -236,9 +236,9 @@ static void AnimFireRingStep1(struct Sprite *sprite)
if (++sprite->data[0] == 0x12)
{
sprite->data[0] = 0x19;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
@@ -253,18 +253,18 @@ static void AnimFireRingStep2(struct Sprite *sprite)
{
sprite->data[0] = 0;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->callback = AnimFireRingStep3;
sprite->callback(sprite);
}
else
{
- sprite->pos2.x += Sin(sprite->data[7], 28);
- sprite->pos2.y += Cos(sprite->data[7], 28);
+ sprite->x2 += Sin(sprite->data[7], 28);
+ sprite->y2 += Cos(sprite->data[7], 28);
sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
}
@@ -280,8 +280,8 @@ static void AnimFireRingStep3(struct Sprite *sprite)
static void UpdateFireRingCircleOffset(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[7], 28);
- sprite->pos2.y = Cos(sprite->data[7], 28);
+ sprite->x2 = Sin(sprite->data[7], 28);
+ sprite->y2 = Cos(sprite->data[7], 28);
sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
}
@@ -293,8 +293,8 @@ static void UpdateFireRingCircleOffset(struct Sprite *sprite)
// arg 4: y delta
void AnimFireCross(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
@@ -331,8 +331,8 @@ static void sub_80D53F4(struct Sprite *sprite)
static void sub_80D541C(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[2] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[2] >> 8);
sprite->data[1] = (sprite->data[1] + 10) & 0xFF;
sprite->data[2] += 0xD0;
@@ -351,7 +351,7 @@ void sub_80D5470(u8 taskId) // initialize animation task for Move_ERUPTION?
task->data[1] = 0;
task->data[2] = 0;
task->data[3] = 0;
- task->data[4] = gSprites[task->data[15]].pos1.y;
+ task->data[4] = gSprites[task->data[15]].y;
task->data[5] = GetBattlerSide(gBattleAnimAttacker);
task->data[6] = 0;
@@ -376,9 +376,9 @@ static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
task->data[1] = 0;
if (++task->data[2] & 0x1)
- gSprites[task->data[15]].pos2.x = 3;
+ gSprites[task->data[15]].x2 = 3;
else
- gSprites[task->data[15]].pos2.x = -3;
+ gSprites[task->data[15]].x2 = -3;
}
if (task->data[5])
@@ -386,14 +386,14 @@ static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
if (++task->data[3] > 4)
{
task->data[3] = 0;
- gSprites[task->data[15]].pos1.y++;
+ gSprites[task->data[15]].y++;
}
}
if(!sub_8079C74(task))
{
sub_8079A64(task->data[15]);
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
task->data[1] = 0;
task->data[2] = 0;
@@ -427,9 +427,9 @@ static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
task->data[1] = 0;
if (++task->data[2] & 1)
- gSprites[task->data[15]].pos2.y += 3;
+ gSprites[task->data[15]].y2 += 3;
else
- gSprites[task->data[15]].pos2.y -= 3;
+ gSprites[task->data[15]].y2 -= 3;
}
if (++task->data[3] > 0x18)
@@ -440,7 +440,7 @@ static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
sub_8079C08(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 0x8);
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.y -= 3;
+ gSprites[task->data[15]].y2 -= 3;
task->data[1] = 0;
task->data[2] = 0;
@@ -450,11 +450,11 @@ static void sub_80D54E0(u8 taskId) // animate Move_ERUPTION?
break;
case 5:
if (task->data[5])
- gSprites[task->data[15]].pos1.y--;
+ gSprites[task->data[15]].y--;
if (!sub_8079C74(task))
{
- gSprites[task->data[15]].pos1.y = task->data[4];
+ gSprites[task->data[15]].y = task->data[4];
sub_8078F40(task->data[15]);
task->data[2] = 0;
@@ -477,7 +477,7 @@ static void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3)
s8 sign;
u16 y = sub_80D5940(spriteId);
- u16 x = gSprites[spriteId].pos1.x;
+ u16 x = gSprites[spriteId].x;
if(!GetBattlerSide(gBattleAnimAttacker))
{
@@ -523,7 +523,7 @@ void sub_80D58FC(struct Sprite *sprite)
u16 sub_80D5940(u8 spriteId)
{
- u16 var1 = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y + gSprites[spriteId].centerToCornerVecY;
+ u16 var1 = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY;
if (GetBattlerSide(gBattleAnimAttacker) == 0)
{
@@ -541,8 +541,8 @@ void sub_80D5994(struct Sprite *sprite, s16 x, s16 y)
{
sprite->data[0] = 0;
sprite->data[1] = 0;
- sprite->data[2] = (u16)sprite->pos1.x * 8;
- sprite->data[3] = (u16)sprite->pos1.y * 8;
+ sprite->data[2] = (u16)sprite->x * 8;
+ sprite->data[3] = (u16)sprite->y * 8;
sprite->data[4] = x * 8;
sprite->data[5] = y * 8;
}
@@ -559,18 +559,18 @@ static void sub_80D59B0(struct Sprite *sprite)
}
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[2] >> 3;
+ sprite->x = sprite->data[2] >> 3;
sprite->data[3] += sprite->data[5];
- sprite->pos1.y = sprite->data[3] >> 3;
+ sprite->y = sprite->data[3] >> 3;
- if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120)
sprite->invisible = TRUE;
}
void sub_80D5A20(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[0] = 0;
sprite->data[1] = 0;
@@ -596,10 +596,10 @@ static void sub_80D5A74(struct Sprite *sprite)
sprite->data[0]++;
// fall through
case 1:
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= sprite->data[7])
+ sprite->y += 8;
+ if (sprite->y >= sprite->data[7])
{
- sprite->pos1.y = sprite->data[7];
+ sprite->y = sprite->data[7];
sprite->data[0]++;
}
break;
@@ -609,11 +609,11 @@ static void sub_80D5A74(struct Sprite *sprite)
sprite->data[1] = 0;
if ((++sprite->data[2] & 1) != 0)
{
- sprite->pos2.y = -3;
+ sprite->y2 = -3;
}
else
{
- sprite->pos2.y = 3;
+ sprite->y2 = 3;
}
}
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
index 588729ab5..9c5705c45 100644
--- a/src/battle/anim/flying.c
+++ b/src/battle/anim/flying.c
@@ -372,15 +372,15 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DA65C =
static void sub_80DA034(struct Sprite *sprite)
{
sub_8078764(sprite, FALSE);
- sprite->pos1.y += 20;
+ sprite->y += 20;
sprite->data[1] = 0xBF;
sprite->callback = sub_80DA05C;
sub_80DA05C(sprite);
}
static void sub_80DA05C(struct Sprite *sprite) {
- sprite->pos2.x = Sin(sprite->data[1], 0x20);
- sprite->pos2.y = Cos(sprite->data[1], 0x8);
+ sprite->x2 = Sin(sprite->data[1], 0x20);
+ sprite->y2 = Cos(sprite->data[1], 0x8);
sprite->data[1] = (sprite->data[1] + 5) & 0xFF;
if (++sprite->data[0] == 0x47) {
DestroyAnimSprite(sprite);
@@ -435,9 +435,9 @@ static void sub_80DA16C(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
InitAnimLinearTranslation(sprite);
sprite->callback = sub_80785E4;
@@ -468,10 +468,10 @@ static void sub_80DA208(struct Sprite *sprite)
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
if (gBattleAnimArgs[6] == 0)
@@ -510,10 +510,10 @@ static void sub_80DA348(struct Sprite *sprite)
else
{
sprite->data[2] += sprite->data[1];
- sprite->pos2.y -= (sprite->data[2] >> 8);
+ sprite->y2 -= (sprite->data[2] >> 8);
}
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ if (sprite->y + sprite->y2 < -32)
{
DestroyAnimSprite(sprite);
}
@@ -523,20 +523,20 @@ static void sub_80DA38C(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x = 272;
- sprite->pos1.y = -32;
+ sprite->x = 272;
+ sprite->y = -32;
StartSpriteAffineAnim(sprite, 1);
}
else
{
- sprite->pos1.x = -32;
- sprite->pos1.y = -32;
+ sprite->x = -32;
+ sprite->y = -32;
}
sprite->data[0] = gBattleAnimArgs[0];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
@@ -550,13 +550,13 @@ static void sub_80DA410(struct Sprite *sprite)
if (((u16) sprite->data[3] >> 8) > 200)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->x2 = 0;
sprite->data[3] &= 0xFF;
}
- //The below if statement relies on overflow when cast to unsigned whenever pos1.x and pos2.x add up to less than 32.
- if ((u32) (sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160)
+ //The below if statement relies on overflow when cast to unsigned whenever x and x2 add up to less than 32.
+ if ((u32) (sprite->x + sprite->x2 + 32) > 304 || sprite->y + sprite->y2 > 160)
{
gSprites[GetAnimBattlerSpriteId(0)].invisible = FALSE;
DestroyAnimSprite(sprite);
@@ -649,11 +649,11 @@ static void AnimFallingFeather(struct Sprite *sprite)
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
+ sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0];
sinVal = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH);
- sprite->pos1.y = sinVal + gBattleAnimArgs[1];
+ sprite->y = sinVal + gBattleAnimArgs[1];
- data->unk8 = (u16)sprite->pos1.y << 8;
+ data->unk8 = (u16)sprite->y << 8;
data->unkE_1 = (u16)(sinVal + gBattleAnimArgs[6]);
data->unk0_0c = 1;
@@ -694,10 +694,10 @@ static void AnimFallingFeather(struct Sprite *sprite)
data->unk0_1 = data->unk2/64;
- sprite->pos2.x = (gSineTable[data->unk2] * (s32)data->unkC[0]) >> 8;
+ sprite->x2 = (gSineTable[data->unk2] * (s32)data->unkC[0]) >> 8;
matrixNum = sprite->oam.matrixNum;
- sinIndex = ((-sprite->pos2.x >> 1) + data->unkA) & 0xFF;
+ sinIndex = ((-sprite->x2 >> 1) + data->unkA) & 0xFF;
sinVal = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
@@ -807,10 +807,10 @@ static void DestroyAnimSpriteAfterTimer(struct Sprite *sprite)
break;
}
- sprite->pos2.x = ((s32)(data->unkC[data->unk0_0b]) * gSineTable[data->unk2]) >> 8;
+ sprite->x2 = ((s32)(data->unkC[data->unk0_0b]) * gSineTable[data->unk2]) >> 8;
matrixNum = sprite->oam.matrixNum;
- sinIndex = ((-sprite->pos2.x >> 1) + data->unkA) & 0xFF;
+ sinIndex = ((-sprite->x2 >> 1) + data->unkA) & 0xFF;
sinVal = gSineTable[sinIndex];
gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64];
@@ -818,13 +818,13 @@ static void DestroyAnimSpriteAfterTimer(struct Sprite *sprite)
gOamMatrices[matrixNum].c = -sinVal;
data->unk8 += data->unk6;
- sprite->pos1.y = (s16)(data->unk8 >> 8);
+ sprite->y = (s16)(data->unk8 >> 8);
if (data->unk4 & 0x8000)
data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF;
else
data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF;
// 080dacfe
- if (sprite->pos1.y + sprite->pos2.y >= data->unkE_1)
+ if (sprite->y + sprite->y2 >= data->unkE_1)
{
sprite->data[0] = 0;
sprite->callback = sub_80DA48C;
@@ -834,8 +834,8 @@ static void DestroyAnimSpriteAfterTimer(struct Sprite *sprite)
static void sub_80DAD30(struct Sprite *sprite)
{
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
@@ -879,7 +879,7 @@ static void sub_80DAD84(struct Sprite * sprite)
sprite->data[4] = gSineTable[sprite->data[1] & 0xff];
sprite->data[5] = -gSineTable[(sprite->data[1] & 0xff) + 64];
sprite->data[6] = 0;
- sprite->pos2.x = sprite->pos2.y = 0;
+ sprite->x2 = sprite->y2 = 0;
matrixNum = sprite->oam.matrixNum;
sprite->data[1] = ((u16)sprite->data[1] >> 8);
@@ -917,23 +917,23 @@ static void sub_80DAF0C(struct Sprite *sprite)
if (++sprite->data[0] < 5)
return;
- sprite->pos2.x = (sprite->data[4] * sprite->data[6]) >> 8;
- sprite->pos2.y = (sprite->data[5] * sprite->data[6]) >> 8;
+ sprite->x2 = (sprite->data[4] * sprite->data[6]) >> 8;
+ sprite->y2 = (sprite->data[5] * sprite->data[6]) >> 8;
sprite->data[6] += sprite->data[3] & 0xff;
if (sprite->data[6] < (sprite->data[2] & 0xff))
return;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
memcpy(dataCpy, sprite->data, 16);
memset(sprite->data, 0, 16);
- data->unk8 = (u16)sprite->pos1.y << 8;
+ data->unk8 = (u16)sprite->y << 8;
data->unk6 = dataCpy[3] >> 8;
data->unk2 = 0;
data->unkA = dataCpy[1];
@@ -985,16 +985,16 @@ static void sub_80DB000(struct Sprite *sprite)
if ((!gBattleAnimArgs[2] && !GetBattlerSide(gBattleAnimAttacker))
|| (gBattleAnimArgs[2] == 1 && !GetBattlerSide(gBattleAnimTarget)))
{
- sprite->pos1.x += 8;
+ sprite->x += 8;
}
SeekSpriteAnim(sprite, gBattleAnimArgs[4]);
- sprite->pos1.x -= 32;
+ sprite->x -= 32;
sprite->data[1] = 0x0ccc;
arg = gBattleAnimArgs[4];
mult = 12;
- sprite->pos2.x += mult * arg;
+ sprite->x2 += mult * arg;
sprite->data[0] = arg;
sprite->data[7] = gBattleAnimArgs[3];
sprite->callback = sub_80DB0A0;
@@ -1002,12 +1002,12 @@ static void sub_80DB000(struct Sprite *sprite)
static void sub_80DB0A0(struct Sprite *sprite)
{
- sprite->pos2.x += sprite->data[1] >> 8;
+ sprite->x2 += sprite->data[1] >> 8;
if (++sprite->data[0] == 6)
{
sprite->data[0] = 0;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
StartSpriteAnim(sprite, 0);
}
@@ -1065,20 +1065,20 @@ static void sub_80DB1F4(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
- sprite->pos2.y = -sprite->pos1.y - 32;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->y2 = -sprite->y - 32;
++sprite->data[0];
break;
case 1:
- sprite->pos2.y += 10;
- if (sprite->pos2.y >= 0)
+ sprite->y2 += 10;
+ if (sprite->y2 >= 0)
{
++sprite->data[0];
}
break;
case 2:
- sprite->pos2.y -= 10;
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ sprite->y2 -= 10;
+ if (sprite->y + sprite->y2 < -32)
{
gSprites[GetAnimBattlerSpriteId(0)].invisible = FALSE;
DestroyAnimSprite(sprite);
@@ -1101,10 +1101,10 @@ static void sub_80DB2D0(struct Sprite *sprite)
{
--sprite->data[0];
}
- else if (sprite->pos1.y + sprite->pos2.y > -32)
+ else if (sprite->y + sprite->y2 > -32)
{
sprite->data[2] += sprite->data[1];
- sprite->pos2.y -= (sprite->data[2] >> 8);
+ sprite->y2 -= (sprite->data[2] >> 8);
}
else
{
@@ -1118,14 +1118,14 @@ static void sub_80DB2D0(struct Sprite *sprite)
static void sub_80DB330(struct Sprite *sprite)
{
- sprite->pos2.y += sprite->data[2] >> 8;
+ sprite->y2 += sprite->data[2] >> 8;
- if (sprite->pos1.y + sprite->pos2.y > -32)
+ if (sprite->y + sprite->y2 > -32)
{
sprite->invisible = FALSE;
}
- if (sprite->pos2.y > 0)
+ if (sprite->y2 > 0)
{
DestroyAnimSprite(sprite);
}
@@ -1141,13 +1141,13 @@ static void sub_80DB374(struct Sprite *sprite)
case 0:
if (!gBattleAnimArgs[0])
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
sprite->data[1] = 512;
@@ -1174,7 +1174,7 @@ static void sub_80DB374(struct Sprite *sprite)
t2 = 128;
t2 = (64 - t2) / 2;
- sprite->pos2.y = t2;
+ sprite->y2 = t2;
if (sprite->data[2] == 24)
{
@@ -1219,13 +1219,13 @@ static void sub_80DB458(struct Sprite *sprite)
if (gBattleAnimArgs[1] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
}
sprite->callback = sub_80DB508;
@@ -1235,13 +1235,13 @@ static void sub_80DB508(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- sprite->pos2.x += sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 += sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
else
{
- sprite->pos2.x -= sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 -= sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
sprite->data[0] = sprite->data[0];
@@ -1290,19 +1290,19 @@ static void sub_80DB5E4(struct Sprite *sprite)
s16 posx, posy;
u16 rotation;
- posx = sprite->pos1.x;
- posy = sprite->pos1.y;
+ posx = sprite->x;
+ posy = sprite->y;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
- sprite->data[6] = ((posx - sprite->pos1.x) << 4) / 12;
- sprite->data[7] = ((posy - sprite->pos1.y) << 4) / 12;
+ sprite->data[6] = ((posx - sprite->x) << 4) / 12;
+ sprite->data[7] = ((posy - sprite->y) << 4) / 12;
- rotation = ArcTan2Neg(posx - sprite->pos1.x, posy - sprite->pos1.y);
+ rotation = ArcTan2Neg(posx - sprite->x, posy - sprite->y);
rotation += 0xc000;
sub_8078FDC(sprite, 1, 0x100, 0x100, rotation);
@@ -1315,10 +1315,10 @@ static void sub_80DB6A0(struct Sprite *sprite)
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
- if ((u16) (sprite->pos1.x + 0x2d) > 0x14a || sprite->pos1.y > 0x9d || sprite->pos1.y < -0x2d)
+ if ((u16) (sprite->x + 0x2d) > 0x14a || sprite->y > 0x9d || sprite->y < -0x2d)
{
DestroySpriteAndMatrix(sprite);
}
diff --git a/src/battle/anim/flying_hearts.c b/src/battle/anim/flying_hearts.c
index 31998b830..2742542a4 100644
--- a/src/battle/anim/flying_hearts.c
+++ b/src/battle/anim/flying_hearts.c
@@ -27,8 +27,8 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7AE0 =
void sub_80D2064(struct Sprite* sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = 0xA0;
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = 0xA0;
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[1];
sprite->callback = WaitAnimForDuration;
@@ -39,10 +39,10 @@ static void sub_80D2094(struct Sprite* sprite)
{
s16 y;
sprite->data[2] += sprite->data[1];
- sprite->pos2.y = -((u16)sprite->data[2] >> 8);
- sprite->pos2.x = Sin(sprite->data[3], 4);
+ sprite->y2 = -((u16)sprite->data[2] >> 8);
+ sprite->x2 = Sin(sprite->data[3], 4);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
- y = sprite->pos1.y + sprite->pos2.y;
+ y = sprite->y + sprite->y2;
if (y <= 0x48)
{
sprite->invisible = sprite->data[3] % 2;
diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c
index 989cb598c..4723dc3cb 100644
--- a/src/battle/anim/flying_path.c
+++ b/src/battle/anim/flying_path.c
@@ -146,14 +146,14 @@ static void sub_80CBF5C(u8 taskId)
task->data[0] = 0xFF;
break;
case 1:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7];
sprite->data[5] = sub_80CC338(sprite);
task->data[4] += 2;
@@ -172,14 +172,14 @@ static void sub_80CBF5C(u8 taskId)
task->data[0] = 0xFF;
break;
case 3:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7] - ((task->data[11] / 2) + 10) * task->data[5];
sprite->data[5] = sub_80CC338(sprite);
task->data[3] = 2;
@@ -189,14 +189,14 @@ static void sub_80CBF5C(u8 taskId)
task->data[0]++;
break;
case 5:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6] + ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
sprite->data[5] = sub_80CC338(sprite);
task->data[4] -= 2;
@@ -215,14 +215,14 @@ static void sub_80CBF5C(u8 taskId)
task->data[0] = 0xFF;
break;
case 7:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7];
sprite->data[5] = sub_80CC338(sprite);
task->data[4] += 2;
@@ -233,14 +233,14 @@ static void sub_80CBF5C(u8 taskId)
task->data[0]++;
break;
case 9:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[6] - ((task->data[10] / 2) + 10) * task->data[5];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[7] + ((task->data[11] / 2) + 10) * task->data[5];
sprite->data[5] = sub_80CC338(sprite);
task->data[3] = 5;
@@ -263,14 +263,14 @@ static void sub_80CBF5C(u8 taskId)
break;
case 11:
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 10;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = task->data[8];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = task->data[9];
sprite->data[5] = sub_80CC338(sprite);
task->data[4] -= 2;
@@ -309,7 +309,7 @@ static void sub_80CBF5C(u8 taskId)
static s16 sub_80CC338(struct Sprite* sprite)
{
s16 var = 8;
- if (sprite->data[4] < sprite->pos1.y)
+ if (sprite->data[4] < sprite->y)
var = -var;
return var;
@@ -324,8 +324,8 @@ static void sub_80CC358(struct Task* task, u8 taskId)
s16 spriteX;
s16 spriteY;
task->data[14] = 0;
- spriteX = gSprites[task->data[2]].pos1.x + gSprites[task->data[2]].pos2.x;
- spriteY = gSprites[task->data[2]].pos1.y + gSprites[task->data[2]].pos2.y;
+ spriteX = gSprites[task->data[2]].x + gSprites[task->data[2]].x2;
+ spriteY = gSprites[task->data[2]].y + gSprites[task->data[2]].y2;
spriteId = CreateSprite(&gSpriteTemplate_83D6884, spriteX, spriteY, task->data[4]);
if (spriteId != 0x40)
{
diff --git a/src/battle/anim/flying_petals.c b/src/battle/anim/flying_petals.c
index 7c70cc158..d57d8fd8d 100644
--- a/src/battle/anim/flying_petals.c
+++ b/src/battle/anim/flying_petals.c
@@ -123,13 +123,13 @@ void sub_80CC474(struct Sprite* sprite)
{
sprite->data[4] = 0;
sprite->data[2] = gBattleAnimArgs[3];
- sprite->pos1.x = 0xFFF0;
+ sprite->x = 0xFFF0;
}
else
{
sprite->data[4] = 1;
sprite->data[2] = -gBattleAnimArgs[3];
- sprite->pos1.x = 0x100;
+ sprite->x = 0x100;
}
sprite->data[1] = gBattleAnimArgs[1];
@@ -138,19 +138,19 @@ void sub_80CC474(struct Sprite* sprite)
switch (gBattleAnimArgs[5])
{
case 0:
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
sprite->oam.priority = GetBattlerSpriteBGPriority(bank);
break;
case 1:
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
sprite->oam.priority = GetBattlerSpriteBGPriority(bank) + 1;
break;
case 2:
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[0];
sprite->oam.priority = GetBattlerSpriteBGPriority(bank);
break;
case 3:
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[0];
GetAnimBattlerSpriteId(1);
sprite->oam.priority = GetBattlerSpriteBGPriority(bank) + 1;
break;
@@ -163,17 +163,17 @@ static void sub_80CC580(struct Sprite* sprite)
{
int a = sprite->data[7];
sprite->data[7]++;
- sprite->pos2.y = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8;
- sprite->pos2.x = sprite->data[2] * a;
+ sprite->y2 = (sprite->data[1] * gSineTable[sprite->data[0]]) >> 8;
+ sprite->x2 = sprite->data[2] * a;
sprite->data[0] = (sprite->data[3] * a) & 0xFF;
if (sprite->data[4] == 0)
{
- if (sprite->pos2.x + sprite->pos1.x <= 0xF7)
+ if (sprite->x2 + sprite->x <= 0xF7)
return;
}
else
{
- if (sprite->pos2.x + sprite->pos1.x > -16)
+ if (sprite->x2 + sprite->x > -16)
return;
}
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index ed5445c10..d7ac9882b 100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
@@ -226,9 +226,9 @@ static void sub_80DDB6C(struct Sprite *sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sub_8078BD4(sprite);
sprite->callback = sub_80DDBD8;
@@ -248,8 +248,8 @@ static void sub_80DDBD8(struct Sprite *sprite)
return;
}
- sprite->pos2.x += Sin(sprite->data[5], 10);
- sprite->pos2.y += Cos(sprite->data[5], 15);
+ sprite->x2 += Sin(sprite->data[5], 10);
+ sprite->y2 += Cos(sprite->data[5], 15);
r2 = sprite->data[5];
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
r0 = sprite->data[5];
@@ -266,8 +266,8 @@ static void sub_80DDC4C(struct Sprite *sprite)
s16 r0;
sprite->data[0] = 1;
TranslateAnimLinear(sprite);
- sprite->pos2.x += Sin(sprite->data[5], 10);
- sprite->pos2.y += Cos(sprite->data[5], 15);
+ sprite->x2 += Sin(sprite->data[5], 10);
+ sprite->y2 += Cos(sprite->data[5], 15);
r2 = sprite->data[5];
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
@@ -328,8 +328,8 @@ static void sub_80DDD58(struct Sprite *sprite)
static void sub_80DDD78(struct Sprite *sprite)
{
u16 temp1;
- sprite->pos2.x = Sin(sprite->data[0], 32);
- sprite->pos2.y = Cos(sprite->data[0], 8);
+ sprite->x2 = Sin(sprite->data[0], 32);
+ sprite->y2 = Cos(sprite->data[0], 8);
temp1 = sprite->data[0] - 65;
if (temp1 <= 130)
sprite->oam.priority = 2;
@@ -337,7 +337,7 @@ static void sub_80DDD78(struct Sprite *sprite)
sprite->oam.priority = 1;
sprite->data[0] = (sprite->data[0] + 19) & 0xFF;
sprite->data[2] += 80;
- sprite->pos2.y += sprite->data[2] >> 8;
+ sprite->y2 += sprite->data[2] >> 8;
sprite->data[7] += 1;
if (sprite->data[7] == 61)
DestroyAnimSprite(sprite);
@@ -407,18 +407,18 @@ static void sub_80DDED0(u8 taskId)
static void InitAnimShadowBall(struct Sprite *sprite)
{
u16 r5, r6;
- r5 = sprite->pos1.x;
- r6 = sprite->pos1.y;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ r5 = sprite->x;
+ r6 = sprite->y;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
sprite->data[3] = gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- sprite->data[6] = (((s16)r5 - sprite->pos1.x) << 4) / (gBattleAnimArgs[0] << 1);
- sprite->data[7] = (((s16)r6 - sprite->pos1.y) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
+ sprite->data[6] = (((s16)r5 - sprite->x) << 4) / (gBattleAnimArgs[0] << 1);
+ sprite->data[7] = (((s16)r6 - sprite->y) << 4) / (gBattleAnimArgs[0] << 1);
sprite->callback = AnimShadowBallStep;
}
@@ -429,8 +429,8 @@ static void AnimShadowBallStep(struct Sprite *sprite)
case 0:
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
sprite->data[1] -= 1;
if (sprite->data[1] > 0)
break;
@@ -442,22 +442,22 @@ static void AnimShadowBallStep(struct Sprite *sprite)
break;
sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- sprite->data[6] = ((sprite->data[1] - sprite->pos1.x) << 4) / sprite->data[3];
- sprite->data[7] = ((sprite->data[2] - sprite->pos1.y) << 4) / sprite->data[3];
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
+ sprite->data[6] = ((sprite->data[1] - sprite->x) << 4) / sprite->data[3];
+ sprite->data[7] = ((sprite->data[2] - sprite->y) << 4) / sprite->data[3];
sprite->data[0] += 1;
break;
case 2:
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
sprite->data[3] -= 1;
if (sprite->data[3] > 0)
break;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sprite->data[0] += 1;
break;
case 3:
@@ -649,7 +649,7 @@ static void sub_80DE3D4(u8 taskId)
task->data[15]++;
break;
case 2:
- startLine = gSprites[task->data[13]].pos1.y + gSprites[task->data[13]].pos2.y - 32;
+ startLine = gSprites[task->data[13]].y + gSprites[task->data[13]].y2 - 32;
if (startLine < 0)
startLine = 0;
@@ -771,8 +771,8 @@ static void sub_80DE7B8(struct Sprite *sprite)
sprite->data[6] = battler2Y;
sprite->data[7] = sprite->data[4] / 2;
sprite->oam.priority = 2;
- sprite->pos1.x = battler1X;
- sprite->pos1.y = battler1Y;
+ sprite->x = battler1X;
+ sprite->y = battler1Y;
sprite->callback = sub_80DE8D8;
sprite->invisible = TRUE;
}
@@ -783,8 +783,8 @@ static void sub_80DE8D8(struct Sprite *sprite)
{
sprite->data[0] += sprite->data[2];
sprite->data[1] += sprite->data[3];
- sprite->pos1.x = sprite->data[0] >> 4;
- sprite->pos1.y = sprite->data[1] >> 4;
+ sprite->x = sprite->data[0] >> 4;
+ sprite->y = sprite->data[1] >> 4;
if (--sprite->data[4] == 0)
sprite->data[0] = 0;
}
@@ -1044,7 +1044,7 @@ static void sub_80DEF3C(struct Sprite *sprite)
xDelta2 = 2;
}
- sprite->pos1.x += xDelta;
+ sprite->x += xDelta;
sprite->data[1] = xDelta2;
sprite->data[0] = 60;
sprite->callback = sub_80DEF98;
@@ -1060,12 +1060,12 @@ static void sub_80DEF98(struct Sprite *sprite)
}
else
{
- sprite->pos2.x += sprite->data[1];
- var0 = sprite->pos2.x + 7;
+ sprite->x2 += sprite->data[1];
+ var0 = sprite->x2 + 7;
if (var0 > 14)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->x2 = 0;
sprite->oam.tileNum += 8;
if (++sprite->data[2] == 3)
{
@@ -1122,13 +1122,13 @@ static void sub_80DF0B8(struct Sprite *sprite)
u16 coeffB;
u16 coeffA;
- sprite->pos2.x = Sin(sprite->data[0], 12);
+ sprite->x2 = Sin(sprite->data[0], 12);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = -sprite->pos2.x;
+ sprite->x2 = -sprite->x2;
sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
sprite->data[1] += 0x100;
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
sprite->data[7]++;
if (sprite->data[7] == 1)
@@ -1281,7 +1281,7 @@ static void sub_80DF3D8(struct Sprite *sprite)
sprite->data[2] -= 2;
sprite->data[2] &= 0xFF;
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[3]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[3]);
index = sprite->data[2] - 65;
if (index < 127)
@@ -1291,7 +1291,7 @@ static void sub_80DF3D8(struct Sprite *sprite)
sprite->data[5]++;
sprite->data[6] = (sprite->data[5] * 8) & 0xFF;
- sprite->pos2.y = Sin(sprite->data[6], 7);
+ sprite->y2 = Sin(sprite->data[6], 7);
if (gTasks[sprite->data[0]].data[8])
{
gTasks[sprite->data[0]].data[7]--;
@@ -1309,7 +1309,7 @@ static void sub_80DF49C(struct Sprite *sprite)
sprite->data[3] = gBattleAnimArgs[1];
sprite->callback = sub_80DF4F4;
- gSprites[sprite->data[5]].pos1.y += 8;
+ gSprites[sprite->data[5]].y += 8;
}
static void sub_80DF4F4(struct Sprite *sprite)
@@ -1317,17 +1317,17 @@ static void sub_80DF4F4(struct Sprite *sprite)
if (sprite->data[3])
{
sprite->data[3]--;
- gSprites[sprite->data[5]].pos2.x = Sin(sprite->data[0], sprite->data[1]);
- gSprites[sprite->data[5]].pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ gSprites[sprite->data[5]].x2 = Sin(sprite->data[0], sprite->data[1]);
+ gSprites[sprite->data[5]].y2 = Cos(sprite->data[0], sprite->data[1]);
sprite->data[0] += sprite->data[2];
if (sprite->data[0] > 255)
sprite->data[0] -= 256;
}
else
{
- gSprites[sprite->data[5]].pos2.x = 0;
- gSprites[sprite->data[5]].pos2.y = 0;
- gSprites[sprite->data[5]].pos1.y -= 8;
+ gSprites[sprite->data[5]].x2 = 0;
+ gSprites[sprite->data[5]].y2 = 0;
+ gSprites[sprite->data[5]].y -= 8;
sprite->callback = DestroySpriteAndMatrix;
}
}
diff --git a/src/battle/anim/glitter.c b/src/battle/anim/glitter.c
index 894d857f0..ee997d58d 100644
--- a/src/battle/anim/glitter.c
+++ b/src/battle/anim/glitter.c
@@ -60,7 +60,7 @@ void sub_80CD140(struct Sprite* sprite)
sub_8078650(sprite);
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[5];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
@@ -78,21 +78,21 @@ void sub_80CD190(struct Sprite* sprite)
if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2))
{
- SetAverageBattlerPositions(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(bank, gBattleAnimArgs[6], &sprite->x, &sprite->y);
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
else
{
if (!gBattleAnimArgs[6])
{
- sprite->pos1.x = GetBattlerSpriteCoord(bank, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(bank, 0);
+ sprite->y = GetBattlerSpriteCoord(bank, 1) + gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(bank, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(bank, 2);
+ sprite->y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[1];
}
sub_807867C(sprite, gBattleAnimArgs[0]);
diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c
index 60d0a46ad..e62e06057 100644
--- a/src/battle/anim/grip.c
+++ b/src/battle/anim/grip.c
@@ -62,8 +62,8 @@ void sub_80D0178(struct Sprite* sprite)
StartSpriteAnim(sprite, 1);
}
- sprite->pos1.x += r7;
- sprite->pos1.y += r4;
+ sprite->x += r7;
+ sprite->y += r4;
sprite->data[0] = 6;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + r8;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + r6;
diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c
index eebba4810..120901700 100644
--- a/src/battle/anim/ground.c
+++ b/src/battle/anim/ground.c
@@ -154,8 +154,8 @@ const struct SpriteTemplate gDigDirtMoundSpriteTemplate =
// a boomerang. After hitting the target mon, it comes back to the user.
static void AnimBonemerangProjectile(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
@@ -168,10 +168,10 @@ static void AnimBonemerangProjectileStep(struct Sprite *sprite)
{
if (TranslateAnimArc(sprite))
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
@@ -247,16 +247,16 @@ static void AnimMudSportDirt(struct Sprite *sprite)
sprite->oam.tileNum++;
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1;
sprite->callback = AnimMudSportDirtRising;
}
else
{
- sprite->pos1.x = gBattleAnimArgs[1];
- sprite->pos1.y = gBattleAnimArgs[2];
- sprite->pos2.y = -gBattleAnimArgs[2];
+ sprite->x = gBattleAnimArgs[1];
+ sprite->y = gBattleAnimArgs[2];
+ sprite->y2 = -gBattleAnimArgs[2];
sprite->callback = AnimMudSportDirtFalling;
}
}
@@ -266,11 +266,11 @@ static void AnimMudSportDirtRising(struct Sprite *sprite)
if (++sprite->data[1] > 1)
{
sprite->data[1] = 0;
- sprite->pos1.x += sprite->data[0];
+ sprite->x += sprite->data[0];
}
- sprite->pos1.y -= 4;
- if (sprite->pos1.y < -4)
+ sprite->y -= 4;
+ if (sprite->y < -4)
DestroyAnimSprite(sprite);
}
@@ -279,10 +279,10 @@ static void AnimMudSportDirtFalling(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.y += 4;
- if (sprite->pos2.y >= 0)
+ sprite->y2 += 4;
+ if (sprite->y2 >= 0)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
@@ -366,7 +366,7 @@ static void sub_80E1284(u8 taskId)
else
gBattle_BG2_Y = task->data[13] - task->data[5];
- gSprites[task->data[10]].pos2.x = 272 - gSprites[task->data[10]].pos1.x;
+ gSprites[task->data[10]].x2 = 272 - gSprites[task->data[10]].x;
task->data[0]++;
}
break;
@@ -385,8 +385,8 @@ static void sub_80E143C(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(0);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
if (GetBattlerPosition_permutated(gBattleAnimAttacker) == 1)
gBattle_BG1_Y = 0;
@@ -417,8 +417,8 @@ static void sub_80E14DC(u8 taskId)
case 0:
task->data[10] = GetAnimBattlerSpriteId(0);
gSprites[task->data[10]].invisible = FALSE;
- gSprites[task->data[10]].pos2.x = 0;
- gSprites[task->data[10]].pos2.y = 160 - gSprites[task->data[10]].pos1.y;
+ gSprites[task->data[10]].x2 = 0;
+ gSprites[task->data[10]].y2 = 160 - gSprites[task->data[10]].y;
task->data[0]++;
break;
case 1:
@@ -451,12 +451,12 @@ static void sub_80E1560(u8 taskId)
task->data[0]++;
break;
case 2:
- gSprites[task->data[10]].pos2.y = 96;
+ gSprites[task->data[10]].y2 = 96;
task->data[0]++;
break;
case 3:
- gSprites[task->data[10]].pos2.y -= 8;
- if (gSprites[task->data[10]].pos2.y == 0)
+ gSprites[task->data[10]].y2 -= 8;
+ if (gSprites[task->data[10]].y2 == 0)
{
gScanlineEffect.state = 3;
task->data[0]++;
@@ -531,11 +531,11 @@ static void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
gBattleAnimArgs[2] *= -1;
}
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 2) + xOffset;
- sprite->pos1.y = sub_8077FC0(battler) + 30;
+ sprite->x = GetBattlerSpriteCoord(battler, 2) + xOffset;
+ sprite->y = sub_8077FC0(battler) + 30;
sprite->data[0] = gBattleAnimArgs[5];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->y + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[4];
InitAnimArcTranslation(sprite);
sprite->callback = AnimFissureDirtPlumeParticleStep;
@@ -562,8 +562,8 @@ static void AnimDigDirtMound(struct Sprite *sprite)
else
battler = gBattleAnimTarget;
- sprite->pos1.x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
- sprite->pos1.y = sub_8077FC0(battler) + 32;
+ sprite->x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32);
+ sprite->y = sub_8077FC0(battler) + 32;
sprite->oam.tileNum += gBattleAnimArgs[1] * 8;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
sprite->data[0] = gBattleAnimArgs[2];
@@ -697,7 +697,7 @@ static void sub_80E1A2C(u8 taskId)
break;
case 2:
for (i = 0; i < task->data[13]; i++)
- gSprites[task->data[9 + i]].pos2.x = 0;
+ gSprites[task->data[9 + i]].x2 = 0;
DestroyAnimVisualTask(taskId);
break;
@@ -716,7 +716,7 @@ static void sub_80E1B10(struct Task *task)
for (i = 0; i < task->data[13]; i++)
{
- gSprites[task->data[9 + i]].pos2.x = xOffset;
+ gSprites[task->data[9 + i]].x2 = xOffset;
}
}
diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c
index 9f9685003..33cc9d61c 100644
--- a/src/battle/anim/guard.c
+++ b/src/battle/anim/guard.c
@@ -46,20 +46,20 @@ void sub_80D3014(struct Sprite *sprite)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsAnimBankSpriteVisible(gBattleAnimAttacker ^ 2))
{
- SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
- sprite->pos1.y += 40;
+ SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
+ sprite->y += 40;
StartSpriteAffineAnim(sprite, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 40;
}
sprite->data[0] = 13;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y - 72;
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y - 72;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
diff --git a/src/battle/anim/guillotine.c b/src/battle/anim/guillotine.c
index e2de9a0ec..4ac6b7734 100644
--- a/src/battle/anim/guillotine.c
+++ b/src/battle/anim/guillotine.c
@@ -64,12 +64,12 @@ void sub_80D0228(struct Sprite* sprite)
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
}
- sprite->pos1.x += r8;
- sprite->pos1.y += r4;
+ sprite->x += r8;
+ sprite->y += r4;
sprite->data[0] = 6;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + r9;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + r6;
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[0];
@@ -83,10 +83,10 @@ static void sub_80D02D0(struct Sprite* sprite)
{
SeekSpriteAnim(sprite, 0);
sprite->animPaused = 1;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 2;
- sprite->pos2.y = -2;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 2;
+ sprite->y2 = -2;
sprite->data[0] = sprite->data[6];
sprite->data[1] ^= 1;
sprite->data[2] ^= 1;
@@ -100,15 +100,15 @@ static void sub_80D0344(struct Sprite* sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = -sprite->pos2.x;
- sprite->pos2.y = -sprite->pos2.y;
+ sprite->x2 = -sprite->x2;
+ sprite->y2 = -sprite->y2;
}
sprite->data[3] ^= 1;
if (++sprite->data[4] == 0x33)
{
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[4] = 0;
sprite->data[3] = 0;
sprite->animPaused = 0;
diff --git a/src/battle/anim/heal.c b/src/battle/anim/heal.c
index 0f35d7508..0ec0c89bb 100644
--- a/src/battle/anim/heal.c
+++ b/src/battle/anim/heal.c
@@ -46,7 +46,7 @@ void sub_80CBAA4(struct Sprite* sprite)
}
sprite->data[0]++;
- sprite->pos2.y = sprite->data[1] * sprite->data[0];
+ sprite->y2 = sprite->data[1] * sprite->data[0];
if (sprite->animEnded)
{
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/heart_1.c b/src/battle/anim/heart_1.c
index f9e6b5080..fa0d21362 100644
--- a/src/battle/anim/heart_1.c
+++ b/src/battle/anim/heart_1.c
@@ -29,8 +29,8 @@ void sub_80D1C80(struct Sprite* sprite)
if (++sprite->data[0] == 1)
InitAnimSpritePos(sprite, 0);
- sprite->pos2.x = Sin(sprite->data[1], 8);
- sprite->pos2.y = sprite->data[2] >> 8;
+ sprite->x2 = Sin(sprite->data[1], 8);
+ sprite->y2 = sprite->data[2] >> 8;
sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
sprite->data[2] -= 0x80;
if (sprite->data[0] == 0x3C)
diff --git a/src/battle/anim/hidden_power_orbit.c b/src/battle/anim/hidden_power_orbit.c
index 63557c6e0..4da3b3839 100644
--- a/src/battle/anim/hidden_power_orbit.c
+++ b/src/battle/anim/hidden_power_orbit.c
@@ -53,8 +53,8 @@ const struct SpriteTemplate gHiddenPowerOrbScatterSpriteTemplate =
// arg 1: initial wave offset
void AnimOrbitFast(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->affineAnimPaused = 1;
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
@@ -70,8 +70,8 @@ static void AnimOrbitFastStep(struct Sprite* sprite)
else
sprite->subpriority = sprite->data[7] - 1;
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[3] >> 8);
sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
switch (sprite->data[5])
{
@@ -104,8 +104,8 @@ static void AnimOrbitFastStep(struct Sprite* sprite)
// arg 0: initial wave offset
void AnimOrbitScatter(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
sprite->callback = AnimOrbitScatterStep;
@@ -113,8 +113,8 @@ void AnimOrbitScatter(struct Sprite* sprite)
static void AnimOrbitScatterStep(struct Sprite* sprite)
{
- sprite->pos2.x += sprite->data[0];
- sprite->pos2.y += sprite->data[1];
- if (sprite->pos1.x + sprite->pos2.x + 16 > 0x110u || sprite->pos1.y + sprite->pos2.y > 0xA0 || sprite->pos1.y + sprite->pos2.y < -16)
+ sprite->x2 += sprite->data[0];
+ sprite->y2 += sprite->data[1];
+ if (sprite->x + sprite->x2 + 16 > 0x110u || sprite->y + sprite->y2 > 0xA0 || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/homing.c b/src/battle/anim/homing.c
index 1b71ebd7a..7a4ec8f9a 100644
--- a/src/battle/anim/homing.c
+++ b/src/battle/anim/homing.c
@@ -53,25 +53,25 @@ void sub_80CC6CC(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[4];
if (gBattleAnimArgs[1] == 0)
{
- sprite->pos1.x = gBattleAnimArgs[2] + a;
- sprite->pos1.y = gBattleAnimArgs[3] + b;
+ sprite->x = gBattleAnimArgs[2] + a;
+ sprite->y = gBattleAnimArgs[3] + b;
sprite->data[5] = a;
sprite->data[6] = b;
}
else
{
- sprite->pos1.x = a;
- sprite->pos1.y = b;
+ sprite->x = a;
+ sprite->y = b;
sprite->data[5] = gBattleAnimArgs[2] + a;
sprite->data[6] = gBattleAnimArgs[3] + b;
}
- x = sprite->pos1.x;
+ x = sprite->x;
sprite->data[1] = x * 16;
- y = sprite->pos1.y;
+ y = sprite->y;
sprite->data[2] = y * 16;
- sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4];
- sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4];
+ sprite->data[3] = (sprite->data[5] - sprite->x) * 16 / gBattleAnimArgs[4];
+ sprite->data[4] = (sprite->data[6] - sprite->y) * 16 / gBattleAnimArgs[4];
c = ArcTan2Neg(sprite->data[5] - x, sprite->data[6] - y);
if (IsContest())
c -= 0x8000;
@@ -87,8 +87,8 @@ static void sub_80CC7D4(struct Sprite* sprite)
{
sprite->data[1] += sprite->data[3];
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 4 ;
- sprite->pos1.y = sprite->data[2] >> 4 ;
+ sprite->x = sprite->data[1] >> 4 ;
+ sprite->y = sprite->data[2] >> 4 ;
sprite->data[0]--;
}
else
diff --git a/src/battle/anim/hop.c b/src/battle/anim/hop.c
index 4e3a74ffe..a9facf03a 100644
--- a/src/battle/anim/hop.c
+++ b/src/battle/anim/hop.c
@@ -70,7 +70,7 @@ const struct SpriteTemplate gFallingItemBagTemplate =
void sub_80CB7EC(struct Sprite* sprite, s16 c)
{
- s32 a = (sprite->pos1.x * 256) | sprite->pos1.y;
+ s32 a = (sprite->x * 256) | sprite->y;
s32 b = (sprite->data[6] * 256) | sprite->data[7];
c *= 256;
sprite->data[5] = a;
@@ -104,8 +104,8 @@ bool8 sub_80CB814(struct Sprite* sprite)
r0 = r2 - r10;
var1 = r0 * r3 / r6;
var2 = r4_2 * r3 / r6;
- sprite->pos1.x = var1 + r10;
- sprite->pos1.y = var2 + r9;
+ sprite->x = var1 + r10;
+ sprite->y = var2 + r9;
if (++r3 == r6)
return TRUE;
@@ -136,10 +136,10 @@ void sub_80CB8E8(struct Sprite* sprite)
sprite->data[0] = 0;
}
- sprite->pos2.y = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8);
+ sprite->y2 = Sin(sprite->data[0] + 128, 30 - sprite->data[1] * 8);
if (sub_80CB814(sprite))
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0] = 0;
sprite->callback = sub_80CB8B8;
}
@@ -182,10 +182,10 @@ void sub_80CB9C4(struct Sprite* sprite)
sprite->data[0] = zero;
}
- sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
+ sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
if (sub_80CB814(sprite))
{
- sprite->pos2.y = zero;
+ sprite->y2 = zero;
sprite->data[0] = zero;
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/hop_2.c b/src/battle/anim/hop_2.c
index 83d67c94a..886ebff65 100644
--- a/src/battle/anim/hop_2.c
+++ b/src/battle/anim/hop_2.c
@@ -68,15 +68,15 @@ static void sub_80CBB60(struct Sprite* sprite)
sprite->data[0] = zero;
}
- sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
- if (sprite->pos2.y == 0)
+ sprite->y2 = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8);
+ if (sprite->y2 == 0)
{
PlaySE12WithPanning(0x7D, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
}
if (sub_80CB814(sprite))
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0] = 0;
sprite->callback = sub_80CB8B8;
PlaySE12WithPanning(0x7D, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c
index 438c61f9f..8d2efc4cc 100644
--- a/src/battle/anim/ice.c
+++ b/src/battle/anim/ice.c
@@ -563,8 +563,8 @@ static void sub_80D7704(struct Sprite *sprite)
attackerX += sprite->data[1], attackerY += sprite->data[2])
;
- sprite->pos1.x = attackerX;
- sprite->pos1.y = attackerY;
+ sprite->x = attackerX;
+ sprite->y = attackerY;
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[1] = attackerX;
sprite->data[2] = targetX;
@@ -582,10 +582,10 @@ static void sub_80D7888(struct Sprite *sprite)
{
sprite->data[5] += sprite->data[1];
sprite->data[6] += sprite->data[2];
- sprite->pos2.x = sprite->data[5];
- sprite->pos2.y = sprite->data[6];
- sprite->pos2.x += Sin(sprite->data[7], sprite->data[3]);
- sprite->pos2.y += Sin(sprite->data[7], sprite->data[3]);
+ sprite->x2 = sprite->data[5];
+ sprite->y2 = sprite->data[6];
+ sprite->x2 += Sin(sprite->data[7], sprite->data[3]);
+ sprite->y2 += Sin(sprite->data[7], sprite->data[3]);
sprite->data[7] = (sprite->data[7] + sprite->data[4]) & 0xFF;
sprite->data[0] -= 1;
}
@@ -644,12 +644,12 @@ static void AnimIceEffectParticle(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
StoreSpriteCallbackInData(sprite, AnimFlickerIceEffectParticle);
@@ -679,8 +679,8 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
if (!gBattleAnimArgs[5])
{
@@ -709,16 +709,16 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite)
sprite->data[0] = 1;
sub_8078CE8(sprite);
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > 272
+ || sprite->y + sprite->y2 > 160
+ || sprite->y + sprite->y2 < -16)
break;
}
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
for (i = 0; i < 8; i++)
sprite->data[i] = tempDataHolder[i];
@@ -731,10 +731,10 @@ static void AnimSwirlingSnowball_Step2(struct Sprite *sprite)
{
s16 tempVar;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 128;
tempVar = GetBattlerSide(gBattleAnimAttacker) != 0 ? 20 : 65516;
@@ -753,17 +753,17 @@ static void AnimSwirlingSnowball_Step3(struct Sprite *sprite)
if (sprite->data[5] <= 31)
{
- sprite->pos2.x = Sin(sprite->data[0], tempVar) - sprite->data[3];
- sprite->pos2.y = Cos(sprite->data[0], 15) - sprite->data[4];
+ sprite->x2 = Sin(sprite->data[0], tempVar) - sprite->data[3];
+ sprite->y2 = Cos(sprite->data[0], 15) - sprite->data[4];
sprite->data[0] = (sprite->data[0] + 16) & 0xFF;
sprite->data[5] += 1;
}
else
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[4] = 0;
sprite->data[3] = 0;
sprite->callback = AnimSwirlingSnowball_End;
@@ -775,9 +775,9 @@ static void AnimSwirlingSnowball_End(struct Sprite *sprite)
sprite->data[0] = 1;
sub_8078CE8(sprite);
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 256
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > 272
+ || sprite->y + sprite->y2 > 256
+ || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
}
@@ -799,8 +799,8 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
if (!gBattleAnimArgs[7])
{
@@ -829,16 +829,16 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite)
{
sprite->data[0] = 1;
sub_8078CE8(sprite);
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > 272
+ || sprite->y + sprite->y2 > 160
+ || sprite->y + sprite->y2 < -16)
break;
}
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
for (i = 0; i < 8; i++)
sprite->data[i] = tempDataHolder[i];
@@ -855,13 +855,13 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite)
if (sprite->data[0] == 0)
sprite->data[0] = 1;
- sprite->pos2.y += Sin(sprite->data[7], sprite->data[5]);
+ sprite->y2 += Sin(sprite->data[7], sprite->data[5]);
sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
if (sprite->data[0] == 1)
{
- if ((u32)(sprite->pos1.x + sprite->pos2.x + 16) > 272
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if ((u32)(sprite->x + sprite->x2 + 16) > 272
+ || sprite->y + sprite->y2 > 160
+ || sprite->y + sprite->y2 < -16)
DestroyAnimSprite(sprite);
}
}
@@ -880,13 +880,13 @@ static void AnimWaveFromCenterOfTarget(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->data[0]++;
@@ -918,13 +918,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
battler = gBattleAnimAttacker;
@@ -937,13 +937,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
battler = gBattleAnimTarget;
@@ -957,13 +957,13 @@ static void InitSwirlingFogAnim(struct Sprite *sprite)
sprite->data[6] = tempVar;
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[2];
InitAnimLinearTranslation(sprite);
@@ -977,8 +977,8 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite)
{
if (!TranslateAnimLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], sprite->data[6]);
- sprite->pos2.y += Cos(sprite->data[5], -6);
+ sprite->x2 += Sin(sprite->data[5], sprite->data[6]);
+ sprite->y2 += Cos(sprite->data[5], -6);
if ((u16)(sprite->data[5] - 64) <= 0x7F)
sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]);
@@ -1097,8 +1097,8 @@ static void AnimTask_Haze2(u8 taskId)
// arg 5: ??? unknown (seems to vibrate target mon somehow)
static void AnimThrowMistBall(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->callback = TranslateAnimSpriteToTargetMonLocation;
}
@@ -1219,21 +1219,21 @@ static void InitPoisonGasCloudAnim(struct Sprite *sprite)
sprite->data[6] = 1;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
if (gBattleAnimArgs[7])
{
- sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
+ sprite->data[1] = sprite->x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[3];
- sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
else
{
- sprite->data[1] = sprite->pos1.x + gBattleAnimArgs[1];
+ sprite->data[1] = sprite->x + gBattleAnimArgs[1];
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[3];
- sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[4];
sprite->data[7] |= GetBattlerSpriteBGPriority(gBattleAnimTarget) << 8;
}
@@ -1258,7 +1258,7 @@ static void sub_80D8874(struct Sprite *sprite)
case 0:
TranslateAnimLinear(sprite);
value = gSineTable[sprite->data[5]];
- sprite->pos2.x += value >> 4;
+ sprite->x2 += value >> 4;
if (sprite->data[6])
sprite->data[5] = (sprite->data[5] - 8) & 0xFF;
else
@@ -1267,12 +1267,12 @@ static void sub_80D8874(struct Sprite *sprite)
if (sprite->data[0] <= 0)
{
sprite->data[0] = 80;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + 29;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X);
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->y += sprite->y2;
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + 29;
sprite->data[7]++;
if (!gMain.inBattle)
sprite->data[5] = 80;
@@ -1281,9 +1281,9 @@ static void sub_80D8874(struct Sprite *sprite)
else
sprite->data[5] = 80;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
value = gSineTable[sprite->data[5]];
- sprite->pos2.x = value >> 3;
+ sprite->x2 = value >> 3;
sprite->data[5] = (sprite->data[5] + 2) & 0xFF;
InitAnimLinearTranslation(sprite);
}
@@ -1291,8 +1291,8 @@ static void sub_80D8874(struct Sprite *sprite)
case 1:
TranslateAnimLinear(sprite);
value = gSineTable[sprite->data[5]];
- sprite->pos2.x += value >> 3;
- sprite->pos2.y += (gSineTable[sprite->data[5] + 0x40] * -3) >> 8;
+ sprite->x2 += value >> 3;
+ sprite->y2 += (gSineTable[sprite->data[5] + 0x40] * -3) >> 8;
if (gMain.inBattle)
{
u16 var0 = sprite->data[5] - 0x40;
@@ -1317,9 +1317,9 @@ static void sub_80D8874(struct Sprite *sprite)
if (sprite->data[0] <= 0)
{
sprite->data[0] = 0x300;
- sprite->data[1] = sprite->pos1.x += sprite->pos2.x;
- sprite->data[3] = sprite->pos1.y += sprite->pos2.y;
- sprite->data[4] = sprite->pos1.y + 4;
+ sprite->data[1] = sprite->x += sprite->x2;
+ sprite->data[3] = sprite->y += sprite->y2;
+ sprite->data[4] = sprite->y + 4;
if (!gMain.inBattle)
sprite->data[2] = -0x10;
else if (gBattlerPositions[gBattleAnimTarget] & 1)
@@ -1328,7 +1328,7 @@ static void sub_80D8874(struct Sprite *sprite)
sprite->data[2] = -0x10;
sprite->data[7]++;
- sprite->pos2.x = sprite->pos2.y = 0;
+ sprite->x2 = sprite->y2 = 0;
sub_8078BD4(sprite);
}
break;
@@ -1463,10 +1463,10 @@ static void AnimHailBegin(struct Sprite *sprite)
{
u8 spriteId;
- sprite->pos1.x += 4;
- sprite->pos1.y += 8;
+ sprite->x += 4;
+ sprite->y += 8;
- if (sprite->pos1.x < sprite->data[3] && sprite->pos1.y < sprite->data[4])
+ if (sprite->x < sprite->data[3] && sprite->y < sprite->data[4])
return;
if (sprite->data[0] == 1 && sprite->data[5] == 0)
@@ -1571,11 +1571,11 @@ static void AnimIceBallParticle(struct Sprite *sprite)
sprite->data[4] += sprite->data[2];
if (sprite->data[1] & 1)
- sprite->pos2.x = -(sprite->data[3] >> 8);
+ sprite->x2 = -(sprite->data[3] >> 8);
else
- sprite->pos2.x = sprite->data[3] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
if (++sprite->data[0] == 21)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/kiss_fountain.c b/src/battle/anim/kiss_fountain.c
index ac7cbfb0f..3a49f8750 100644
--- a/src/battle/anim/kiss_fountain.c
+++ b/src/battle/anim/kiss_fountain.c
@@ -35,8 +35,8 @@ void sub_80D1FDC(struct Sprite* sprite)
else
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.x = sprite->data[4] >> 8;
- sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->x2 = sprite->data[4] >> 8;
+ sprite->y2 = Sin(sprite->data[3], sprite->data[2]);
sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
if (sprite->data[3] > 0x64)
{
diff --git a/src/battle/anim/leaf.c b/src/battle/anim/leaf.c
index 5b4c75080..7aa3f8688 100644
--- a/src/battle/anim/leaf.c
+++ b/src/battle/anim/leaf.c
@@ -117,8 +117,8 @@ const struct SpriteTemplate gSwiftStarSpriteTemplate =
void sub_80CAED8(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
@@ -146,8 +146,8 @@ static void sub_80CAF20(struct Sprite* sprite)
else
{
sprite->data[2]--;
- sprite->pos1.x += sprite->data[0];
- sprite->pos1.y += sprite->data[1];
+ sprite->x += sprite->data[0];
+ sprite->y += sprite->data[1];
}
}
@@ -155,18 +155,18 @@ static void sub_80CAF6C(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos2.x = -Sin(sprite->data[0], 0x19);
+ sprite->x2 = -Sin(sprite->data[0], 0x19);
}
else
{
- sprite->pos2.x = Sin(sprite->data[0], 0x19);
+ sprite->x2 = Sin(sprite->data[0], 0x19);
}
sprite->data[0] = (sprite->data[0] + 2) & 0xFF;
sprite->data[1]++;
if (!(sprite->data[1] & 1))
{
- sprite->pos2.y++;
+ sprite->y2++;
}
if (sprite->data[1] > 0x50)
@@ -242,10 +242,10 @@ static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
destroy = TRUE;
}
- if (sprite->pos1.x + sprite->pos2.x > 256
- || sprite->pos1.x + sprite->pos2.x < -16
- || sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.y + sprite->pos2.y < -16)
+ if (sprite->x + sprite->x2 > 256
+ || sprite->x + sprite->x2 < -16
+ || sprite->y + sprite->y2 > 160
+ || sprite->y + sprite->y2 < -16)
destroy = TRUE;
if (destroy)
@@ -262,10 +262,10 @@ void AnimMoveTwisterParticle(struct Sprite* sprite)
{
if (!IsContest() && IsDoubleBattle() == TRUE)
{
- SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->x, &sprite->y);
}
- sprite->pos1.y += 32;
+ sprite->y += 32;
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
@@ -278,11 +278,11 @@ static void AnimMoveTwisterParticleStep(struct Sprite* sprite)
{
if (sprite->data[1] == 0xFF)
{
- sprite->pos1.y -= 2;
+ sprite->y -= 2;
}
else if (sprite->data[1] > 0)
{
- sprite->pos1.y -= 2;
+ sprite->y -= 2;
sprite->data[1] -= 2;
}
@@ -291,8 +291,8 @@ static void AnimMoveTwisterParticleStep(struct Sprite* sprite)
sprite->data[5] += sprite->data[2];
sprite->data[5] &= 0xFF;
- sprite->pos2.x = Cos(sprite->data[5], sprite->data[3]);
- sprite->pos2.y = Sin(sprite->data[5], 5);
+ sprite->x2 = Cos(sprite->data[5], sprite->data[3]);
+ sprite->y2 = Sin(sprite->data[5], 5);
if (sprite->data[5] <= 0x7F)
{
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget) - 1;
diff --git a/src/battle/anim/lunge.c b/src/battle/anim/lunge.c
index da3eda56a..5d8a21928 100644
--- a/src/battle/anim/lunge.c
+++ b/src/battle/anim/lunge.c
@@ -239,7 +239,7 @@ void sub_80CDB60(u8 taskId)
if (task->data[3])
{
task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
+ gSprites[task->data[0]].x2 = task->data[4];
task->data[3]--;
}
else
@@ -262,7 +262,7 @@ void sub_80CDB60(u8 taskId)
else
{
task->data[3] = 8;
- task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[4] = gSprites[task->data[0]].x2;
task->data[5] = (task->data[1] == 0) ? 0x2 : -0x2;
task->data[6] = 1;
task->data[2]++;
@@ -278,9 +278,9 @@ void sub_80CDB60(u8 taskId)
else
{
if (task->data[3] & 1)
- gSprites[task->data[0]].pos2.x = task->data[4] + task->data[5];
+ gSprites[task->data[0]].x2 = task->data[4] + task->data[5];
else
- gSprites[task->data[0]].pos2.x = task->data[4] - task->data[5];
+ gSprites[task->data[0]].x2 = task->data[4] - task->data[5];
task->data[6] = 1;
task->data[3]--;
@@ -288,7 +288,7 @@ void sub_80CDB60(u8 taskId)
}
else
{
- gSprites[task->data[0]].pos2.x = task->data[4];
+ gSprites[task->data[0]].x2 = task->data[4];
task->data[3] = 12;
task->data[2]++;
}
@@ -301,7 +301,7 @@ void sub_80CDB60(u8 taskId)
else
{
task->data[3] = 3;
- task->data[4] = gSprites[task->data[0]].pos2.x;
+ task->data[4] = gSprites[task->data[0]].x2;
task->data[5] = (task->data[1] == 0) ? 8 : -8;
task->data[2]++;
}
@@ -310,7 +310,7 @@ void sub_80CDB60(u8 taskId)
if (task->data[3])
{
task->data[4] += task->data[5];
- gSprites[task->data[0]].pos2.x = task->data[4];
+ gSprites[task->data[0]].x2 = task->data[4];
task->data[3]--;
}
else
diff --git a/src/battle/anim/money.c b/src/battle/anim/money.c
index 03af2f8e1..1f26438a6 100644
--- a/src/battle/anim/money.c
+++ b/src/battle/anim/money.c
@@ -72,7 +72,7 @@ void sub_80CFE9C(struct Sprite* sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
r6 += gBattleAnimArgs[2];
- var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
+ var = ArcTan2Neg(r6 - sprite->x, r7 - sprite->y);
var += 0xC000;
sub_8078FDC(sprite, 0, 0x100, 0x100, var);
sprite->data[0] = gBattleAnimArgs[4];
@@ -85,18 +85,18 @@ void sub_80CFE9C(struct Sprite* sprite)
void sub_80CFF50(struct Sprite* sprite)
{
sprite->data[2] = -16;
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = sub_80CFF68;
}
static void sub_80CFF68(struct Sprite* sprite)
{
sprite->data[0] += 0x80;
- sprite->pos2.x = sprite->data[0] >> 8;
+ sprite->x2 = sprite->data[0] >> 8;
if (GetBattlerSide(gBattleAnimAttacker) == 0)
- sprite->pos2.x = -sprite->pos2.x;
+ sprite->x2 = -sprite->x2;
- sprite->pos2.y = Sin(sprite->data[1], sprite->data[2]);
+ sprite->y2 = Sin(sprite->data[1], sprite->data[2]);
sprite->data[1] += 5;
if (sprite->data[1] > 0x7E)
{
diff --git a/src/battle/anim/moon.c b/src/battle/anim/moon.c
index 30639a0e5..b1fec1bba 100644
--- a/src/battle/anim/moon.c
+++ b/src/battle/anim/moon.c
@@ -29,13 +29,13 @@ void sub_80CE30C(struct Sprite* sprite)
{
if (IsContest())
{
- sprite->pos1.x = 0x30;
- sprite->pos1.y = 0x28;
+ sprite->x = 0x30;
+ sprite->y = 0x28;
}
else
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
}
sprite->oam.shape = 0;
diff --git a/src/battle/anim/musical.c b/src/battle/anim/musical.c
index 1a58c4daf..2181757e5 100644
--- a/src/battle/anim/musical.c
+++ b/src/battle/anim/musical.c
@@ -225,9 +225,9 @@ void sub_80CEB0C(struct Sprite* sprite)
b = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
}
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
- sub_80CEBC4(a - sprite->pos1.x, b - sprite->pos1.y, &sprite->data[6], &sprite->data[7], 0x28);
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
+ sub_80CEBC4(a - sprite->x, b - sprite->y, &sprite->data[6], &sprite->data[7], 0x28);
sprite->callback = sub_80CEC1C;
}
@@ -257,11 +257,11 @@ static void sub_80CEC1C(struct Sprite* sprite)
b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
- sprite->pos2.y = Sin(b, 15);
- a = (u16)sprite->pos1.y;
- c = (u16)sprite->pos1.x;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
+ sprite->y2 = Sin(b, 15);
+ a = (u16)sprite->y;
+ c = (u16)sprite->x;
if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
{
@@ -294,13 +294,13 @@ void sub_80CECE8(struct Sprite* sprite)
*(u16*)&gBattleAnimArgs[1] = -a;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
StartSpriteAnim(sprite, gBattleAnimArgs[0]);
sprite->data[2] = 0;
sprite->data[3] = 0;
- sprite->data[4] = sprite->pos1.x << 4;
- sprite->data[5] = sprite->pos1.y << 4;
+ sprite->data[4] = sprite->x << 4;
+ sprite->data[5] = sprite->y << 4;
sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5;
sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5;
sprite->callback = sub_80CED78;
@@ -310,13 +310,13 @@ static void sub_80CED78(struct Sprite* sprite)
{
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
if (sprite->data[0] > 5 && sprite->data[3] == 0)
{
sprite->data[2] = (sprite->data[2] + 16) & 0xFF;
- sprite->pos2.x = Cos(sprite->data[2], 18);
- sprite->pos2.y = Sin(sprite->data[2], 18);
+ sprite->x2 = Cos(sprite->data[2], 18);
+ sprite->y2 = Sin(sprite->data[2], 18);
if (sprite->data[2] == 0)
sprite->data[3] = 1;
}
@@ -341,8 +341,8 @@ void sub_80CEDF0(struct Sprite* sprite)
a = -16;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + a;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 8;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + a;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 8;
sprite->data[0] = 8;
sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -356,7 +356,7 @@ void sub_80CEE60(struct Sprite* sprite)
s16 a;
u8 index;
sub_8078650(sprite);
- sprite->pos1.y += 8;
+ sprite->y += 8;
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
index = IndexOfSpritePaletteTag(gUnknown_083D712C[gBattleAnimArgs[2]][0]);
if (index != 0xFF)
@@ -364,9 +364,9 @@ void sub_80CEE60(struct Sprite* sprite)
a = (gBattleAnimArgs[0] == 0) ? 0xFFE0 : 0x20;
sprite->data[0] = 40;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = a + sprite->data[1];
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = sprite->data[3] - 40;
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[3];
@@ -379,11 +379,11 @@ static void sub_80CEEE8(struct Sprite* sprite)
{
s16 a;
a = Sin(sprite->data[5], 8);
- if (sprite->pos2.x < 0)
+ if (sprite->x2 < 0)
a = -a;
- sprite->pos2.x += a;
- sprite->pos2.y += Sin(sprite->data[5], 4);
+ sprite->x2 += a;
+ sprite->y2 += Sin(sprite->data[5], 4);
sprite->data[5] = (sprite->data[5] + 8) & 0xFF;
}
else
diff --git a/src/battle/anim/noise.c b/src/battle/anim/noise.c
index 65d962ace..580bee1b8 100644
--- a/src/battle/anim/noise.c
+++ b/src/battle/anim/noise.c
@@ -33,11 +33,11 @@ void sub_80D2D68(struct Sprite* sprite)
gBattleAnimArgs[1] *= -1;
}
- sprite->pos1.x = GetBattlerSpriteCoord(slot, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(slot, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(slot, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(slot, 3) + gBattleAnimArgs[2];
sprite->data[0] = 0;
- sprite->data[1] = (u16)sprite->pos1.x << 3;
- sprite->data[2] = (u16)sprite->pos1.y << 3;
+ sprite->data[1] = (u16)sprite->x << 3;
+ sprite->data[2] = (u16)sprite->y << 3;
var1 = gBattleAnimArgs[1] << 3;
if (var1 < 0)
@@ -58,8 +58,8 @@ static void sub_80D2E30(struct Sprite *sprite)
sprite->data[1] += sprite->data[3];
sprite->data[2] += sprite->data[4];
- sprite->pos1.x = sprite->data[1] >> 3;
- sprite->pos1.y = sprite->data[2] >> 3;
+ sprite->x = sprite->data[1] >> 3;
+ sprite->y = sprite->data[2] >> 3;
if (++sprite->data[0] > 16)
{
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
index 9053d7844..6961dcbc1 100644
--- a/src/battle/anim/normal.c
+++ b/src/battle/anim/normal.c
@@ -310,8 +310,8 @@ const u16 gUnknown_083DB568 = RGB(31, 31, 31);
// arg 4: duration
static void AnimConfusionDuck(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
@@ -332,8 +332,8 @@ static void AnimConfusionDuck(struct Sprite *sprite)
static void AnimConfusionDuckStep(struct Sprite *sprite)
{
- sprite->pos2.x = Cos(sprite->data[0], 30);
- sprite->pos2.y = Sin(sprite->data[0], 10);
+ sprite->x2 = Cos(sprite->data[0], 30);
+ sprite->y2 = Sin(sprite->data[0], 10);
if ((u16)sprite->data[0] < 128)
sprite->oam.priority = 1;
@@ -449,8 +449,8 @@ static void sub_80E1F0C(struct Sprite *sprite)
static void sub_80E1F3C(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = 0;
sprite->data[1] = 10;
sprite->data[2] = 8;
@@ -904,8 +904,8 @@ static void sub_80E2870(struct Sprite *sprite)
else
sub_8078764(sprite, FALSE);
- sprite->pos2.x += (Random() % 48) - 24;
- sprite->pos2.y += (Random() % 24) - 12;
+ sprite->x2 += (Random() % 48) - 24;
+ sprite->y2 += (Random() % 24) - 12;
StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
@@ -914,10 +914,10 @@ static void sub_80E2870(struct Sprite *sprite)
static void sub_80E2908(struct Sprite *sprite)
{
sprite->data[0] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y;
- sprite->pos2.x = gBattleAnimArgs[1];
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->x = gSprites[sprite->data[0]].x + gSprites[sprite->data[0]].x2;
+ sprite->y = gSprites[sprite->data[0]].y + gSprites[sprite->data[0]].y2;
+ sprite->x2 = gBattleAnimArgs[1];
+ sprite->y2 = gBattleAnimArgs[2];
StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]);
StoreSpriteCallbackInData(sprite, DestroySpriteAndMatrix);
sprite->callback = sub_80785E4;
@@ -1227,7 +1227,7 @@ void sub_80E2F2C(u8 taskId)
if (IsContest())
{
- species = eWRAM_19348Struct->species2;
+ species = gContestResources__moveAnim.species;
}
else
{
@@ -1248,8 +1248,8 @@ void sub_80E2F2C(u8 taskId)
LZDecompressVram(&gUnknown_08D20A14, subStruct.field_0);
LoadPalette(&gUnknown_083DB568, subStruct.field_8 * 16 + 1, 2);
- gBattle_BG1_X = -gSprites[spriteId].pos1.x + 32;
- gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ gBattle_BG1_X = -gSprites[spriteId].x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId].y + 32;
gTasks[taskId].data[0] = newSpriteId;
gTasks[taskId].data[6] = var0;
gTasks[taskId].func = sub_80E3194;
@@ -1364,7 +1364,7 @@ static void sub_80E3338(u8 taskId)
if (IsContest())
{
- species = eWRAM_19348Struct->species2;
+ species = gContestResources__moveAnim.species;
}
else
{
@@ -1694,7 +1694,7 @@ void sub_80E3C4C(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5,
if (IsContest())
{
- species = eWRAM_19348Struct->species2;
+ species = gContestResources__moveAnim.species;
}
else
{
@@ -1816,7 +1816,7 @@ void sub_80E4028(u8 taskId)
}
offset = gBattleAnimArgs[1] * 32;
- dest = IsContest() ? &ewram14800[offset] : &ewram18000_2[offset];
+ dest = IsContest() ? &((u8 *)eBattleAnimPalBackup_Contest)[offset] : &((u8 *)eBattleAnimPalBackup_Battle)[offset];
// This doesn't match when u16* is used.
memcpy(dest, &((u8 *)gPlttBufferUnfaded)[i * 32], 32);
DestroyAnimVisualTask(taskId);
@@ -1851,7 +1851,7 @@ void sub_80E40D0(u8 taskId)
dest = &((u8 *)gPlttBufferUnfaded)[i * 32];
offset = gBattleAnimArgs[1] * 32;
- src = IsContest() ? &ewram14800[offset] : &ewram18000_2[offset];
+ src = IsContest() ? &((u8 *)eBattleAnimPalBackup_Contest)[offset] : &((u8 *)eBattleAnimPalBackup_Battle)[offset];
// This doesn't match when u16* is used.
memcpy(dest, src, 32);
DestroyAnimVisualTask(taskId);
@@ -1932,8 +1932,8 @@ void sub_80E4300(u8 taskId)
}
else
{
- gTasks[taskId].data[0] = ewram17800[gBattleAnimAttacker].invisible;
- ewram17800[gBattleAnimAttacker].invisible = TRUE;
+ gTasks[taskId].data[0] = gBattleSpriteInfo[gBattleAnimAttacker].invisible;
+ gBattleSpriteInfo[gBattleAnimAttacker].invisible = TRUE;
gTasks[taskId].func = sub_80E4368;
gAnimVisualTaskCount--;
}
@@ -1943,7 +1943,7 @@ static void sub_80E4368(u8 taskId)
{
if (gBattleAnimArgs[7] == 0x1000)
{
- ewram17800[gBattleAnimAttacker].invisible = gTasks[taskId].data[0] & 1;
+ gBattleSpriteInfo[gBattleAnimAttacker].invisible = gTasks[taskId].data[0] & 1;
DestroyTask(taskId);
}
}
diff --git a/src/battle/anim/note_spin.c b/src/battle/anim/note_spin.c
index c2b4e169c..6b80d4880 100644
--- a/src/battle/anim/note_spin.c
+++ b/src/battle/anim/note_spin.c
@@ -90,8 +90,8 @@ void sub_80D2EC8(struct Sprite *sprite)
if (sprite->data[0] == 0)
{
- sprite->pos1.x = 120;
- sprite->pos1.y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
+ sprite->x = 120;
+ sprite->y = (gBattleAnimArgs[0] + (((u16)gBattleAnimArgs[0]) >> 31)) / 2 - 15;
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
@@ -107,9 +107,9 @@ void sub_80D2EC8(struct Sprite *sprite)
sprite->data[6] = (sprite->data[6] + 10) & 0xFF;
index &= var2;
- sprite->pos2.x = Cos(index, 100);
+ sprite->x2 = Cos(index, 100);
- sprite->pos2.y = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
+ sprite->y2 = sprite->data[1] + Sin(index, 10) + Cos(sprite->data[6], 4);
if (sprite->data[0] > sprite->data[5])
{
@@ -137,7 +137,7 @@ static void sub_80D2F80(struct Sprite *sprite)
static void sub_80D2FA4(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[2];
- sprite->pos2.y = sprite->data[3];
+ sprite->y2 = sprite->data[3];
sprite->data[2]++;
diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c
index 3f72d9246..ad021900e 100644
--- a/src/battle/anim/orbit.c
+++ b/src/battle/anim/orbit.c
@@ -106,8 +106,8 @@ static void sub_80CAC44(struct Sprite* sprite)
{
u8 var1;
- sprite->pos2.x = Sin(sprite->data[1], 32);
- sprite->pos2.y = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8);
+ sprite->x2 = Sin(sprite->data[1], 32);
+ sprite->y2 = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8);
if ((u16)(sprite->data[1] - 0x40) < 0x80)
{
sprite->oam.priority = (GetBattlerSpriteBGPriority(gBattleAnimTarget) & 3);
@@ -154,9 +154,9 @@ void sub_80CAD54(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 0);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
InitAnimLinearTranslation(sprite);
sprite->data[5] = 0x40;
@@ -168,8 +168,8 @@ static void sub_80CADA8(struct Sprite* sprite)
{
if (!TranslateAnimLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], 32);
- sprite->pos2.y += Cos(sprite->data[5], -5);
+ sprite->x2 += Sin(sprite->data[5], 32);
+ sprite->y2 += Cos(sprite->data[5], -5);
if ((u16)(sprite->data[5] - 0x40) < 0x80)
{
sprite->subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1;
@@ -191,9 +191,9 @@ void sub_80CAE20(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
InitAnimLinearTranslation(sprite);
sprite->data[5] = 0x40;
@@ -205,7 +205,7 @@ static void sub_80CAE74(struct Sprite* sprite)
{
if (!TranslateAnimLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], 8);
+ sprite->x2 += Sin(sprite->data[5], 8);
if ((u16)(sprite->data[5] - 0x3B) < 5 || (u16)(sprite->data[5] - 0xBB) < 5)
{
sprite->oam.matrixNum ^= 8;
diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c
index d0a5d26dc..4041c8e10 100644
--- a/src/battle/anim/orbs.c
+++ b/src/battle/anim/orbs.c
@@ -215,9 +215,9 @@ void sub_80CA858(struct Sprite* sprite)
{
InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[3];
@@ -241,8 +241,8 @@ static void sub_80CA8B4(struct Sprite* sprite)
{
sprite->subpriority = GetBattlerSubpriority(gBattleAnimTarget) + 6;
}
- sprite->pos2.x += Sin(sprite->data[5], 5);
- sprite->pos2.y += Cos(sprite->data[5], 14);
+ sprite->x2 += Sin(sprite->data[5], 5);
+ sprite->y2 += Cos(sprite->data[5], 14);
sprite->data[5] = (sprite->data[5] + 15) & 0xFF;
}
}
@@ -288,22 +288,22 @@ void sub_80CAA14(struct Sprite* sprite)
u16 b;
StartSpriteAnim(sprite, a & 7);
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= 20;
+ sprite->x -= 20;
}
else
{
- sprite->pos1.x += 20;
+ sprite->x += 20;
}
b = Random();
sprite->data[0] = (b & 31) + 64;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sub_8078D60(sprite);
sprite->data[5] = Random() & 0xFF;
@@ -320,7 +320,7 @@ static void sub_80CAACC(struct Sprite* sprite)
}
else
{
- sprite->pos2.y += Cos(sprite->data[5], 12);
+ sprite->y2 += Cos(sprite->data[5], 12);
if (sprite->data[5] <= 0x7E)
{
sprite->subpriority = sprite->data[6];
diff --git a/src/battle/anim/osmose.c b/src/battle/anim/osmose.c
index 26350cbbe..0b0c96320 100644
--- a/src/battle/anim/osmose.c
+++ b/src/battle/anim/osmose.c
@@ -39,16 +39,16 @@ void sub_80CB768(struct Sprite* sprite)
{
if (!sprite->data[0])
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
}
sprite->data[0]++;
- sprite->pos2.x = sprite->data[1] * sprite->data[0];
- sprite->pos2.y = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]);
+ sprite->x2 = sprite->data[1] * sprite->data[0];
+ sprite->y2 = Sin((sprite->data[0] * 20) & 0xFF, sprite->data[2]);
if (sprite->data[0] > sprite->data[3])
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
index 9ec5bffa6..01f4eca86 100644
--- a/src/battle/anim/poison.c
+++ b/src/battle/anim/poison.c
@@ -246,10 +246,10 @@ static void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
void sub_80D9E94(struct Sprite *sprite)
{
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0];
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x + gBattleAnimArgs[0];
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[1];
InitSpriteDataForLinearTranslation(sprite);
@@ -272,17 +272,17 @@ static void sub_80D9EE8(struct Sprite *sprite)
void sub_80D9F14(struct Sprite *sprite)
{
- SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker))
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.y + sprite->data[0];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->y + sprite->data[0];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -302,13 +302,13 @@ void AnimBubbleEffect(struct Sprite *sprite)
}
else
{
- SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, TRUE, &sprite->x, &sprite->y);
if (GetBattlerSide(gBattleAnimAttacker))
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->callback = AnimBubbleEffectStep;
@@ -317,9 +317,9 @@ void AnimBubbleEffect(struct Sprite *sprite)
static void AnimBubbleEffectStep(struct Sprite *sprite)
{
sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->x2 = Sin(sprite->data[0], 4);
sprite->data[1] += 0x30;
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
if (sprite->affineAnimEnded)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/powder.c b/src/battle/anim/powder.c
index 58b34e0f3..480e4d399 100644
--- a/src/battle/anim/powder.c
+++ b/src/battle/anim/powder.c
@@ -70,8 +70,8 @@ const struct SpriteTemplate gPoisonPowderParticleSpriteTemplate =
// arg 5: wave speed
void AnimMovePowderParticle(struct Sprite* sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
@@ -93,9 +93,9 @@ static void AnimMovePowderParticleStep(struct Sprite* sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- sprite->pos2.y = sprite->data[2] >> 8;
+ sprite->y2 = sprite->data[2] >> 8;
sprite->data[2] += sprite->data[1];
- sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->x2 = Sin(sprite->data[5], sprite->data[3]);
sprite->data[5] = (sprite->data[5] + sprite->data[4]) & 0xFF;
}
else
diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c
index 8bff55f47..7fb0d9cd4 100644
--- a/src/battle/anim/psychic.c
+++ b/src/battle/anim/psychic.c
@@ -454,13 +454,13 @@ void sub_80DB74C(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x = 72;
- sprite->pos1.y = 80;
+ sprite->x = 72;
+ sprite->y = 80;
}
else
{
- sprite->pos1.x = 176;
- sprite->pos1.y = 40;
+ sprite->x = 176;
+ sprite->y = 40;
}
}
else
@@ -468,12 +468,12 @@ void sub_80DB74C(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
}
if (IsContest())
- sprite->pos1.y += 9;
+ sprite->y += 9;
sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16;
sprite->callback = sub_80DB88C;
@@ -570,13 +570,13 @@ void sub_80DBA4C(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x = 72 - gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1] + 80;
+ sprite->x = 72 - gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1] + 80;
}
else
{
- sprite->pos1.x = gBattleAnimArgs[0] + 176;
- sprite->pos1.y = gBattleAnimArgs[1] + 40;
+ sprite->x = gBattleAnimArgs[0] + 176;
+ sprite->y = gBattleAnimArgs[1] + 40;
}
}
else
@@ -598,20 +598,20 @@ void sub_80DBA4C(struct Sprite *sprite)
void sub_80DBAF4(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x -= 40;
- sprite->pos1.y += 10;
+ sprite->x -= 40;
+ sprite->y += 10;
sprite->data[1] = -1;
}
else
{
- sprite->pos1.x += 40;
- sprite->pos1.y -= 10;
+ sprite->x += 40;
+ sprite->y -= 10;
sprite->data[1] = 1;
}
@@ -629,12 +629,12 @@ void sub_80DBB70(struct Sprite *sprite)
x = -x;
}
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + x;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y;
- if (sprite->pos1.y < 16)
+ if (sprite->y < 16)
{
- sprite->pos1.y = 16;
+ sprite->y = 16;
}
StoreSpriteCallbackInData(sprite, sub_80DBC00);
@@ -716,13 +716,13 @@ static void sub_80DBD58(u8 taskId)
case 1:
if (task->data[3] != 0)
{
- gSprites[task->data[0]].pos2.y -= 8;
+ gSprites[task->data[0]].y2 -= 8;
task->data[3]--;
}
else
{
gSprites[task->data[0]].invisible = TRUE;
- gSprites[task->data[0]].pos1.x = 272;
+ gSprites[task->data[0]].x = 272;
sub_8078F40(task->data[0]);
DestroyAnimVisualTask(taskId);
}
@@ -771,20 +771,20 @@ static void sub_80DBE98(u8 taskId)
switch (task->data[2])
{
case 0:
- gSprites[spriteId].pos2.x = task->data[12];
- gSprites[spriteId].pos2.y = -task->data[12];
+ gSprites[spriteId].x2 = task->data[12];
+ gSprites[spriteId].y2 = -task->data[12];
break;
case 1:
- gSprites[spriteId].pos2.x = -task->data[12];
- gSprites[spriteId].pos2.y = task->data[12];
+ gSprites[spriteId].x2 = -task->data[12];
+ gSprites[spriteId].y2 = task->data[12];
break;
case 2:
- gSprites[spriteId].pos2.x = task->data[12];
- gSprites[spriteId].pos2.y = task->data[12];
+ gSprites[spriteId].x2 = task->data[12];
+ gSprites[spriteId].y2 = task->data[12];
break;
case 3:
- gSprites[spriteId].pos2.x = -task->data[12];
- gSprites[spriteId].pos2.y = -task->data[12];
+ gSprites[spriteId].x2 = -task->data[12];
+ gSprites[spriteId].y2 = -task->data[12];
break;
}
}
@@ -838,8 +838,8 @@ void sub_80DC068(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
}
sprite->data[0] = gBattleAnimArgs[1];
@@ -1115,11 +1115,11 @@ void sub_80DC700(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
if (IsContest())
- sprite->pos1.y += 12;
+ sprite->y += 12;
sprite->data[1] = 8;
REG_BLDCNT = 0x3F40;
@@ -1149,7 +1149,7 @@ void sub_80DC700(struct Sprite *sprite)
}
sprite->data[3] += 896;
- sprite->pos2.y -= sprite->data[3] >> 8;
+ sprite->y2 -= sprite->data[3] >> 8;
sprite->data[3] &= 0xFF;
break;
case 3:
diff --git a/src/battle/anim/rain.c b/src/battle/anim/rain.c
index 421304be8..fdd0003da 100644
--- a/src/battle/anim/rain.c
+++ b/src/battle/anim/rain.c
@@ -76,8 +76,8 @@ static void MoveAnimRaindrop(struct Sprite *sprite)
{
if (++sprite->data[0] <= 13)
{
- sprite->pos2.x++;
- sprite->pos2.y += 4;
+ sprite->x2++;
+ sprite->y2 += 4;
}
if (sprite->animEnded)
diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c
index 999d10a59..dee7bb356 100644
--- a/src/battle/anim/ring.c
+++ b/src/battle/anim/ring.c
@@ -293,7 +293,7 @@ void sub_80D10B8(struct Sprite* sprite)
r9 = GetBattlerSpriteCoord(bankr7, r10) - gBattleAnimArgs[0];
if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2))
{
- if (gSprites[gBattlerSpriteIds[bankr7]].pos1.x < gSprites[gBattlerSpriteIds[bankr7 ^ 2]].pos1.x)
+ if (gSprites[gBattlerSpriteIds[bankr7]].x < gSprites[gBattlerSpriteIds[bankr7 ^ 2]].x)
sprite->subpriority = gSprites[gBattlerSpriteIds[bankr7 ^ 2]].subpriority + 1;
else
sprite->subpriority = gSprites[gBattlerSpriteIds[bankr7]].subpriority - 1;
@@ -322,8 +322,8 @@ void sub_80D10B8(struct Sprite* sprite)
sp0 -= gBattleAnimArgs[3];
sp1 += gBattleAnimArgs[4];
- sprite->pos1.x = sprite->data[1] = r9;
- sprite->pos1.y = sprite->data[3] = r6;
+ sprite->x = sprite->data[1] = r9;
+ sprite->y = sprite->data[3] = r6;
sprite->data[2] = sp0;
sprite->data[4] = sp1;
sprite->data[0] = gBattleAnimArgs[0];
@@ -359,17 +359,17 @@ void sub_80D1368(struct Sprite* sprite)
static void sub_80D13AC(struct Sprite* sprite)
{
s16 add;
- sprite->pos2.y -= (sprite->data[0] >> 8);
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->y2 -= (sprite->data[0] >> 8);
+ sprite->x2 = sprite->data[1] >> 8;
sprite->data[0] -= 32;
add = (GetBattlerSide(gBattleAnimAttacker)) ? -0xA0 : 0xA0;
sprite->data[1] += add;
- if (sprite->pos2.y > 0)
+ if (sprite->y2 > 0)
{
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->y += sprite->y2;
+ sprite->x += sprite->x2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 0;
StartSpriteAffineAnim(sprite, 1);
sprite->callback = sub_80D1424;
@@ -406,7 +406,7 @@ static void sub_80D144C(struct Sprite* sprite)
static void sub_80D14C4(struct Sprite* sprite)
{
- sprite->pos2.y -= 2;
+ sprite->y2 -= 2;
if (++sprite->data[0] == 9)
{
sprite->data[0] = 16;
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
index a16be68e5..0af6de00b 100644
--- a/src/battle/anim/rock.c
+++ b/src/battle/anim/rock.c
@@ -321,10 +321,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83DAE30 =
void sub_80DCE9C(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] != 0)
- SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gBattleAnimTarget, 0, &sprite->x, &sprite->y);
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += 14;
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += 14;
StartSpriteAnim(sprite, gBattleAnimArgs[1]);
AnimateSprite(sprite);
@@ -343,7 +343,7 @@ void sub_80DCE9C(struct Sprite *sprite)
static void sub_80DCF1C(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->data[5];
+ sprite->x += sprite->data[5];
sprite->data[0] = 192;
sprite->data[1] = sprite->data[5];
@@ -362,17 +362,17 @@ void sub_80DCF60(struct Sprite *sprite)
AnimateSprite(sprite);
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = sprite->pos1.x;
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[3] = sprite->pos1.y;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[1] = sprite->x;
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->y;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[3];
InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
@@ -400,8 +400,8 @@ void sub_80DCFE4(struct Sprite *sprite)
static void sub_80DD02C(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[1];
- sprite->pos2.y = -(sprite->data[4] >> 8);
- sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->y2 = -(sprite->data[4] >> 8);
+ sprite->x2 = Sin(sprite->data[5], sprite->data[3]);
sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF;
if (--sprite->data[0] == -1)
@@ -522,17 +522,17 @@ void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] != 0 && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- sprite->pos1.x = 304;
+ sprite->x = 304;
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
sprite->data[5] = 1;
sprite->oam.matrixNum = 8;
}
else
{
- sprite->pos1.x = -64;
+ sprite->x = -64;
}
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
SetSubspriteTables(sprite, gSubspriteTables_83DAD10);
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
@@ -542,19 +542,19 @@ void AnimDirtParticleAcrossScreen(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x += (sprite->data[3] >> 8);
- sprite->pos2.y += (sprite->data[4] >> 8);
+ sprite->x2 += (sprite->data[3] >> 8);
+ sprite->y2 += (sprite->data[4] >> 8);
sprite->data[3] &= 0xFF;
sprite->data[4] &= 0xFF;
if (sprite->data[5] == 0)
{
- if (sprite->pos1.x + sprite->pos2.x > 272)
+ if (sprite->x + sprite->x2 > 272)
{
sprite->callback = DestroyAnimSprite;
}
}
- else if (sprite->pos1.x + sprite->pos2.x < -32)
+ else if (sprite->x + sprite->x2 < -32)
{
sprite->callback = DestroyAnimSprite;
}
@@ -573,8 +573,8 @@ void AnimRaiseSprite(struct Sprite *sprite)
InitAnimSpritePos(sprite, 0);
sprite->data[0] = gBattleAnimArgs[3];
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y + gBattleAnimArgs[2];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -644,8 +644,8 @@ static void sub_80DD604(u8 taskId)
case 0:
task->data[6] -= task->data[4];
task->data[7] -= task->data[5];
- gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
- gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ gSprites[task->data[15]].x2 = task->data[6] >> 3;
+ gSprites[task->data[15]].y2 = task->data[7] >> 3;
if (++task->data[9] == 10)
{
@@ -672,8 +672,8 @@ static void sub_80DD604(u8 taskId)
task->data[0]++;
}
- gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
- gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ gSprites[task->data[15]].x2 = task->data[6] >> 3;
+ gSprites[task->data[15]].y2 = task->data[7] >> 3;
break;
case 3:
task->data[2] += task->data[4];
@@ -776,7 +776,7 @@ void sub_80DD8E8(struct Sprite *sprite)
{
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
- sprite->pos2.x = gBattleAnimArgs[0];
+ sprite->x2 = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
sprite->data[3] -= gBattleAnimArgs[2];
sprite->data[0] = 3;
@@ -790,7 +790,7 @@ static void sub_80DD928(struct Sprite *sprite)
sprite->invisible = FALSE;
if (sprite->data[3] != 0)
{
- sprite->pos2.y = sprite->data[2] + sprite->data[3];
+ sprite->y2 = sprite->data[2] + sprite->data[3];
sprite->data[3] += sprite->data[0];
sprite->data[0]++;
if (sprite->data[3] > 0)
@@ -817,10 +817,10 @@ void sub_80DD978(struct Sprite *sprite)
void sub_80DD9A4(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
@@ -836,8 +836,8 @@ static void sub_80DD9FC(struct Sprite *sprite)
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x += sprite->data[3] / 40;
- sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]);
+ sprite->x2 += sprite->data[3] / 40;
+ sprite->y2 -= Sin(sprite->data[0], sprite->data[5]);
if (sprite->data[0] > 140)
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/roots.c b/src/battle/anim/roots.c
index 245f201dd..e84702c24 100644
--- a/src/battle/anim/roots.c
+++ b/src/battle/anim/roots.c
@@ -87,17 +87,17 @@ void sub_80CB59C(struct Sprite* sprite)
{
if (!sprite->data[0])
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
- sprite->pos2.x = gBattleAnimArgs[0];
- sprite->pos2.y = gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x2 = gBattleAnimArgs[0];
+ sprite->y2 = gBattleAnimArgs[1];
sprite->subpriority = gBattleAnimArgs[2] + 30;
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[0]++;
- if ((sprite->pos1.y + sprite->pos2.y) > 120)
+ if ((sprite->y + sprite->y2) > 120)
{
- sprite->pos1.y += -120 + (sprite->pos2.y + sprite->pos1.y);
+ sprite->y += -120 + (sprite->y2 + sprite->y);
}
}
sprite->callback = sub_80CB710;
@@ -112,16 +112,16 @@ void sub_80CB620(struct Sprite *sprite)
e1 -= p1;
e2 -= p2;
- sprite->pos1.x = p1 + e1 * gBattleAnimArgs[0] / 100;
- sprite->pos1.y = p2 + e2 * gBattleAnimArgs[0] / 100;
- sprite->pos2.x = gBattleAnimArgs[1];
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->x = p1 + e1 * gBattleAnimArgs[0] / 100;
+ sprite->y = p2 + e2 * gBattleAnimArgs[0] / 100;
+ sprite->x2 = gBattleAnimArgs[1];
+ sprite->y2 = gBattleAnimArgs[2];
sprite->subpriority = gBattleAnimArgs[3] + 30;
StartSpriteAnim(sprite, gBattleAnimArgs[4]);
sprite->data[2] = gBattleAnimArgs[5];
sprite->callback = sub_80CB710;
- gUnknown_03000728[0] = sprite->pos1.x;
- gUnknown_03000728[1] = sprite->pos1.y;
+ gUnknown_03000728[0] = sprite->x;
+ gUnknown_03000728[1] = sprite->y;
gUnknown_03000728[2] = e1;
gUnknown_03000728[3] = e2;
}
diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c
index 329e28f71..282f22657 100644
--- a/src/battle/anim/scan.c
+++ b/src/battle/anim/scan.c
@@ -53,8 +53,8 @@ const s8 gUnknown_083D6DDC[][2] =
void sub_80CD3E0(struct Sprite* sprite)
{
- sprite->pos1.x -= 32;
- sprite->pos1.y -= 32;
+ sprite->x -= 32;
+ sprite->y -= 32;
sprite->data[0] = 20;
sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80CD408);
@@ -70,13 +70,13 @@ static void sub_80CD408(struct Sprite* sprite)
StoreSpriteCallbackInData(sprite, sub_80CD408);
break;
case 1:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 8;
- sprite->data[2] = sprite->pos1.x + gUnknown_083D6DDC[sprite->data[5] >> 8][0];
- sprite->data[4] = sprite->pos1.y + gUnknown_083D6DDC[sprite->data[5] >> 8][1];
+ sprite->data[2] = sprite->x + gUnknown_083D6DDC[sprite->data[5] >> 8][0];
+ sprite->data[4] = sprite->y + gUnknown_083D6DDC[sprite->data[5] >> 8][1];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80CD4B8);
sprite->data[5] += 0x100;
@@ -135,10 +135,10 @@ static void sub_80CD4EC(struct Sprite* sprite)
break;
}
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 6;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + a;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + b;
@@ -202,25 +202,25 @@ void sub_80CD6CC(struct Sprite* sprite)
sprite->oam.affineParam = gBattleAnimArgs[0];
if ((s16)sprite->oam.affineParam == 1)
{
- sprite->pos1.x -= 0x18;
- sprite->pos1.y -= 0x18;
+ sprite->x -= 0x18;
+ sprite->y -= 0x18;
}
else if ((s16)sprite->oam.affineParam == 2)
{
- sprite->pos1.x -= 0x18;
- sprite->pos1.y += 0x18;
+ sprite->x -= 0x18;
+ sprite->y += 0x18;
sprite->oam.matrixNum = 16;
}
else if ((s16)sprite->oam.affineParam == 3)
{
- sprite->pos1.x += 0x18;
- sprite->pos1.y -= 0x18;
+ sprite->x += 0x18;
+ sprite->y -= 0x18;
sprite->oam.matrixNum = 8;
}
else
{
- sprite->pos1.x += 0x18;
- sprite->pos1.y += 0x18;
+ sprite->x += 0x18;
+ sprite->y += 0x18;
sprite->oam.matrixNum = 24;
}
diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c
index 9bc88e258..349716e74 100644
--- a/src/battle/anim/sfx.c
+++ b/src/battle/anim/sfx.c
@@ -137,9 +137,6 @@ static void sub_812B108(u8 taskId)
}
}
-// #define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348))
-// #define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348))
-
// used in 3 moves:
// Move_HOWL, Move_ROAR, Move_GROWL
void sub_812B18C(u8 taskId)
@@ -150,7 +147,7 @@ void sub_812B18C(u8 taskId)
if (IsContest())
{
if (!gBattleAnimArgs[0])
- species = shared19348.unk0;
+ species = gContestResources__moveAnim.species;
else
DestroyAnimVisualTask(taskId);
}
@@ -200,7 +197,7 @@ void sub_812B2B8(u8 taskId)
s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG);
if (IsContest())
- species = shared19348.unk0;
+ species = gContestResources__moveAnim.species;
else
species = gAnimSpeciesByBanks[gBattleAnimAttacker];
diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c
index 913e58bc4..cb4841177 100644
--- a/src/battle/anim/shadow_minimize.c
+++ b/src/battle/anim/shadow_minimize.c
@@ -91,7 +91,7 @@ void AnimTask_Minimize_Step(u8 taskId)
break;
case 5:
sub_8078F40(task->data[0]);
- gSprites[task->data[15]].pos2.y = 0;
+ gSprites[task->data[15]].y2 = 0;
DestroyAnimVisualTask(taskId);
break;
}
diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c
index 4babfee65..17bb8aa5d 100644
--- a/src/battle/anim/shield.c
+++ b/src/battle/anim/shield.c
@@ -33,8 +33,8 @@ void sub_80CCD24(struct Sprite* sprite)
gBattleAnimArgs[1] += 8;
}
- sprite->pos1.x = sub_8077EE4(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = sub_8077EE4(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = sub_8077EE4(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->y = sub_8077EE4(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
if (GetBattlerSide(gBattleAnimAttacker) == 0 || IsContest())
sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker) + 1;
else
@@ -53,7 +53,7 @@ static void sub_80CCE0C(struct Sprite* sprite)
int a;
int i;
sprite->data[5] += 0x60;
- sprite->pos2.x = -(sprite->data[5] >> 8);
+ sprite->x2 = -(sprite->data[5] >> 8);
sprite->data[1]++;
if (sprite->data[1] > 1)
{
diff --git a/src/battle/anim/shock.c b/src/battle/anim/shock.c
index c6dfd09cc..9b34b62cc 100644
--- a/src/battle/anim/shock.c
+++ b/src/battle/anim/shock.c
@@ -66,18 +66,18 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D9874 =
void sub_80D6294(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y -= gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y -= gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->data[0] = 0;
@@ -128,17 +128,17 @@ void sub_80D6328(struct Sprite *sprite)
if (gBattleAnimArgs[5] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(slot, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(slot, 1);
+ sprite->x = GetBattlerSpriteCoord(slot, 0);
+ sprite->y = GetBattlerSpriteCoord(slot, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(slot, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(slot, 3);
+ sprite->x = GetBattlerSpriteCoord(slot, 2);
+ sprite->y = GetBattlerSpriteCoord(slot, 3);
}
- sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
- sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
+ sprite->x2 = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
+ sprite->y2 = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
if (gBattleAnimArgs[6] & 1)
{
diff --git a/src/battle/anim/silhouette.c b/src/battle/anim/silhouette.c
index 34005d7be..bc4d9189d 100644
--- a/src/battle/anim/silhouette.c
+++ b/src/battle/anim/silhouette.c
@@ -34,10 +34,10 @@ void sub_80CB3A8(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(1);
gTasks[taskId].data[10] += gTasks[taskId].data[0];
- gSprites[spriteId].pos2.x = gTasks[taskId].data[10] >> 8;
+ gSprites[spriteId].x2 = gTasks[taskId].data[10] >> 8;
if (GetBattlerSide(gBattleAnimTarget))
{
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
}
gTasks[taskId].data[11] += 16;
@@ -59,8 +59,8 @@ void sub_80CB438(u8 taskId)
{
u8 spriteId = GetAnimBattlerSpriteId(1);
sub_8078F40(spriteId);
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
gTasks[taskId].data[0]++;
return;
}
diff --git a/src/battle/anim/slash.c b/src/battle/anim/slash.c
index e42a6c2ad..cb9aa293b 100644
--- a/src/battle/anim/slash.c
+++ b/src/battle/anim/slash.c
@@ -76,13 +76,13 @@ void sub_80CDD74(struct Sprite* sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
}
sprite->data[0] = 0;
@@ -93,16 +93,16 @@ void sub_80CDD74(struct Sprite* sprite)
void sub_80CDDDC(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
StoreSpriteCallbackInData(sprite, sub_80CDE78);
sprite->callback = sub_8078600;
}
void sub_80CDE24(struct Sprite* sprite)
{
- sprite->pos1.x = sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0 + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + 0xFFD0 + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
StartSpriteAnim(sprite, 1);
sprite->data[0] = 0;
sprite->data[1] = 0;
diff --git a/src/battle/anim/sleep.c b/src/battle/anim/sleep.c
index 7e202b8bb..8dfdb68bb 100644
--- a/src/battle/anim/sleep.c
+++ b/src/battle/anim/sleep.c
@@ -75,14 +75,14 @@ void sub_80CD328(struct Sprite* sprite)
sub_8078650(sprite);
if (GetBattlerSide(gBattleAnimAttacker) == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[3] = 1;
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[3] = 0xFFFF;
StartSpriteAffineAnim(sprite, 1);
}
@@ -92,8 +92,8 @@ void sub_80CD328(struct Sprite* sprite)
static void sub_80CD394(struct Sprite* sprite)
{
- sprite->pos2.y = -(sprite->data[0] / 0x28);
- sprite->pos2.x = sprite->data[4] / 10;
+ sprite->y2 = -(sprite->data[0] / 0x28);
+ sprite->x2 = sprite->data[4] / 10;
sprite->data[4] += sprite->data[3] * 2;
sprite->data[0] += sprite->data[1];
if (++sprite->data[1] > 0x3C)
diff --git a/src/battle/anim/slice.c b/src/battle/anim/slice.c
index 7abb2cdcf..821a1c37e 100644
--- a/src/battle/anim/slice.c
+++ b/src/battle/anim/slice.c
@@ -55,23 +55,23 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6B40 =
// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right
void AnimCuttingSlice(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
if (GetBattlerSide(gBattleAnimTarget) == 0)
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = AnimSliceStep;
if (gBattleAnimArgs[2] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
sprite->hFlip = 1;
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] -= 0x400;
sprite->data[2] += 0x400;
sprite->data[5] = gBattleAnimArgs[2];
@@ -105,23 +105,23 @@ void sub_80CC9BC(struct Sprite* sprite)
break;
}
- sprite->pos1.x = a;
- sprite->pos1.y = b;
+ sprite->x = a;
+ sprite->y = b;
if (GetBattlerSide(gBattleAnimTarget) == 0)
- sprite->pos1.y += 8;
+ sprite->y += 8;
sprite->callback = AnimSliceStep;
if (gBattleAnimArgs[2] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
sprite->hFlip = 1;
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] -= 0x400;
sprite->data[2] += 0x400;
sprite->data[5] = gBattleAnimArgs[2];
@@ -139,8 +139,8 @@ static void AnimSliceStep(struct Sprite* sprite)
sprite->data[1] -= 0x18;
sprite->data[2] -= 0x18;
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
sprite->data[0]++;
if (sprite->data[0] == 20)
{
diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c
index cef255eda..2ece3c602 100644
--- a/src/battle/anim/sonic.c
+++ b/src/battle/anim/sonic.c
@@ -139,7 +139,7 @@ void AnimSonicBoomProjectile(struct Sprite* sprite)
InitAnimSpritePos(sprite, 1);
targetXPos = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2];
targetYPos = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3];
- rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y);
+ rotation = ArcTan2Neg(targetXPos - sprite->x, targetYPos - sprite->y);
rotation += 0xF000;
if (IsContest())
rotation -= 0x6000;
@@ -178,14 +178,14 @@ void sub_80CF814(struct Sprite* sprite)
sprite->data[1] += sprite->data[5];
sprite->data[2] += sprite->data[6];
if (1 & task->data[7])
- sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
+ sprite->x2 = ((u16)sprite->data[1] >> 8) * -1;
else
- sprite->pos2.x = (u16)sprite->data[1] >> 8;
+ sprite->x2 = (u16)sprite->data[1] >> 8;
if (1 & task->data[8])
- sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
+ sprite->y2 = ((u16)sprite->data[2] / 256u) * -1;
else
- sprite->pos2.y = (u16)sprite->data[2] / 256u;
+ sprite->y2 = (u16)sprite->data[2] / 256u;
if (sprite->data[0]-- <= 0)
{
@@ -204,33 +204,33 @@ void sub_80CF8B8(struct Sprite* sprite)
sprite->data[1] += (-2 & task->data[7]);
sprite->data[2] += (-2 & task->data[8]);
if (1 & task->data[7])
- sprite->pos2.x = ((u16)sprite->data[1] >> 8) * -1;
+ sprite->x2 = ((u16)sprite->data[1] >> 8) * -1;
else
- sprite->pos2.x = (u16)sprite->data[1] >> 8;
+ sprite->x2 = (u16)sprite->data[1] >> 8;
if (1 & task->data[8])
- sprite->pos2.y = ((u16)sprite->data[2] / 256u) * -1;
+ sprite->y2 = ((u16)sprite->data[2] / 256u) * -1;
else
- sprite->pos2.y = (u16)sprite->data[2] / 256u;
+ sprite->y2 = (u16)sprite->data[2] / 256u;
if (sprite->data[0]-- <= 0)
{
sprite->data[0] = 8;
task->data[5] = 4;
a = sub_81174E0(0x1000);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
- if (task->data[11] >= sprite->pos1.x)
- b = (task->data[11] - sprite->pos1.x) << 8;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
+ if (task->data[11] >= sprite->x)
+ b = (task->data[11] - sprite->x) << 8;
else
- b = (sprite->pos1.x - task->data[11]) << 8;
+ b = (sprite->x - task->data[11]) << 8;
- if (task->data[12] >= sprite->pos1.y)
- c = (task->data[12] - sprite->pos1.y) << 8;
+ if (task->data[12] >= sprite->y)
+ c = (task->data[12] - sprite->y) << 8;
else
- c = (sprite->pos1.y - task->data[12]) << 8;
+ c = (sprite->y - task->data[12]) << 8;
sprite->data[2] = 0;
sprite->data[1] = 0;
diff --git a/src/battle/anim/spit.c b/src/battle/anim/spit.c
index 44b29e9db..50d01cbb2 100644
--- a/src/battle/anim/spit.c
+++ b/src/battle/anim/spit.c
@@ -38,16 +38,16 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7B60 =
static void sub_80D287C(struct Sprite* sprite)
{
- sprite->pos2.x += sprite->data[0];
- sprite->pos2.y += sprite->data[1];
+ sprite->x2 += sprite->data[0];
+ sprite->y2 += sprite->data[1];
if (sprite->data[3]++ >= sprite->data[2])
DestroyAnimSprite(sprite);
}
void sub_80D28AC(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
sprite->data[2] = gBattleAnimArgs[1];
diff --git a/src/battle/anim/splash.c b/src/battle/anim/splash.c
index ad0fddd3f..0300c252e 100644
--- a/src/battle/anim/splash.c
+++ b/src/battle/anim/splash.c
@@ -52,7 +52,7 @@ void AnimTask_SplashStep(u8 taskId)
case 0:
RunAffineAnimFromTaskData(task);
task->data[4] += 3;
- gSprites[task->data[0]].pos2.y += task->data[4];
+ gSprites[task->data[0]].y2 += task->data[4];
if (++task->data[3] > 7)
{
task->data[3] = 0;
@@ -61,7 +61,7 @@ void AnimTask_SplashStep(u8 taskId)
break;
case 1:
RunAffineAnimFromTaskData(task);
- gSprites[task->data[0]].pos2.y += task->data[4];
+ gSprites[task->data[0]].y2 += task->data[4];
if (++task->data[3] > 7)
{
task->data[3] = 0;
@@ -71,7 +71,7 @@ void AnimTask_SplashStep(u8 taskId)
case 2:
if (task->data[4] != 0)
{
- gSprites[task->data[0]].pos2.y -= 2;
+ gSprites[task->data[0]].y2 -= 2;
task->data[4] -= 2;
}
else
@@ -82,7 +82,7 @@ void AnimTask_SplashStep(u8 taskId)
{
if (--task->data[2] == 0)
{
- gSprites[task->data[0]].pos2.y = 0;
+ gSprites[task->data[0]].y2 = 0;
DestroyAnimVisualTask(taskId);
}
else
diff --git a/src/battle/anim/startle.c b/src/battle/anim/startle.c
index c9a692318..100979204 100644
--- a/src/battle/anim/startle.c
+++ b/src/battle/anim/startle.c
@@ -25,15 +25,15 @@ void sub_80D1E38(u8 taskId)
if (++gTasks[taskId].data[0] == 1)
{
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(1), &gSpriteAffineAnim_83D7A98);
- gSprites[spriteId].pos2.x = 4;
+ gSprites[spriteId].x2 = 4;
}
else
{
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
@@ -46,15 +46,15 @@ void sub_80D1EC8(u8 taskId)
if (++gTasks[taskId].data[0] == 1)
{
PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(0), &gSpriteAffineAnim_83D7A98);
- gSprites[spriteId].pos2.x = 4;
+ gSprites[spriteId].x2 = 4;
}
else
{
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
if (RunAffineAnimFromTaskData(&gTasks[taskId]) == 0)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
diff --git a/src/battle/anim/strike.c b/src/battle/anim/strike.c
index 303a39d29..ce27356cd 100644
--- a/src/battle/anim/strike.c
+++ b/src/battle/anim/strike.c
@@ -64,36 +64,36 @@ void sub_80CE670(struct Sprite* sprite)
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[2];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
- sprite->data[6] = sprite->pos1.x;
- sprite->data[7] = sprite->pos1.y;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[1];
+ sprite->data[6] = sprite->x;
+ sprite->data[7] = sprite->y;
if (IsContest() != 0)
{
sprite->oam.matrixNum = 8;
- sprite->pos1.x += 40;
- sprite->pos1.y += 20;
- sprite->data[2] = sprite->pos1.x << 7;
+ sprite->x += 40;
+ sprite->y += 20;
+ sprite->data[2] = sprite->x << 7;
sprite->data[3] = -0x1400 / sprite->data[1];
- sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[4] = sprite->y << 7;
sprite->data[5] = -0xA00 / sprite->data[1];
}
else if (GetBattlerSide(gBattleAnimAttacker) == 0)
{
- sprite->pos1.x -= 40;
- sprite->pos1.y += 20;
- sprite->data[2] = sprite->pos1.x << 7;
+ sprite->x -= 40;
+ sprite->y += 20;
+ sprite->data[2] = sprite->x << 7;
sprite->data[3] = 0x1400 / sprite->data[1];
- sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[4] = sprite->y << 7;
sprite->data[5] = -0xA00 / sprite->data[1];
}
else
{
- sprite->pos1.x += 40;
- sprite->pos1.y -= 20;
- sprite->data[2] = sprite->pos1.x << 7;
+ sprite->x += 40;
+ sprite->y -= 20;
+ sprite->data[2] = sprite->x << 7;
sprite->data[3] = -0x1400 / sprite->data[1];
- sprite->data[4] = sprite->pos1.y << 7;
+ sprite->data[4] = sprite->y << 7;
sprite->data[5] = 0xA00 / sprite->data[1];
sprite->oam.matrixNum = 24;
}
@@ -105,12 +105,12 @@ static void sub_80CE798(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[3];
sprite->data[4] += sprite->data[5];
- sprite->pos1.x = sprite->data[2] >> 7;
- sprite->pos1.y = sprite->data[4] >> 7;
+ sprite->x = sprite->data[2] >> 7;
+ sprite->y = sprite->data[4] >> 7;
if (--sprite->data[1] == 1)
{
- sprite->pos1.x = sprite->data[6];
- sprite->pos1.y = sprite->data[7];
+ sprite->x = sprite->data[6];
+ sprite->y = sprite->data[7];
}
if (sprite->data[1] == 0)
diff --git a/src/battle/anim/struggle.c b/src/battle/anim/struggle.c
index 578dd7618..65552d08c 100644
--- a/src/battle/anim/struggle.c
+++ b/src/battle/anim/struggle.c
@@ -55,19 +55,19 @@ void sub_80D2C38(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
}
if (gBattleAnimArgs[1] == 0)
- sprite->pos1.x += 32;
+ sprite->x += 32;
else
- sprite->pos1.x -= 32;
+ sprite->x -= 32;
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[1];
diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c
index c10f561ae..f9ef843c2 100644
--- a/src/battle/anim/sunlight.c
+++ b/src/battle/anim/sunlight.c
@@ -32,8 +32,8 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D95B0 =
void sub_80D517C(struct Sprite *sprite)
{
- sprite->pos1.x = 0;
- sprite->pos1.y = 0;
+ sprite->x = 0;
+ sprite->y = 0;
sprite->data[0] = 60;
sprite->data[2] = 140;
sprite->data[4] = 80;
diff --git a/src/battle/anim/swipe.c b/src/battle/anim/swipe.c
index 09f9adbd6..b71ab7fd0 100644
--- a/src/battle/anim/swipe.c
+++ b/src/battle/anim/swipe.c
@@ -45,8 +45,8 @@ void sub_80D2BE8(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[0]++;
}
diff --git a/src/battle/anim/switch.c b/src/battle/anim/switch.c
index 7667355dd..6221ccbf2 100644
--- a/src/battle/anim/switch.c
+++ b/src/battle/anim/switch.c
@@ -79,7 +79,7 @@ void sub_80CBBF0(struct Sprite* sprite)
if (!IsContest())
{
sprite->data[1] = gBattleAnimArgs[1];
- sprite->pos1.x = 120;
+ sprite->x = 120;
}
else
{
@@ -90,14 +90,14 @@ void sub_80CBBF0(struct Sprite* sprite)
b = a;
sprite->data[1] = a - ((b >> 8) << 8);
- sprite->pos1.x = 70;
+ sprite->x = 70;
}
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[0];
sprite->data[4] = 20;
- sprite->pos2.x = Cos(sprite->data[1], 60);
- sprite->pos2.y = Sin(sprite->data[1], 20);
+ sprite->x2 = Cos(sprite->data[1], 60);
+ sprite->y2 = Sin(sprite->data[1], 20);
sprite->callback = sub_80CBC8C;
if (sprite->data[1] > 0 && sprite->data[1] < 0xC0)
sprite->subpriority = 31;
@@ -121,7 +121,7 @@ static void sub_80CBC8C(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[4] / 10;
sprite->data[4] += 3;
- sprite->pos1.y = sprite->data[2];
+ sprite->y = sprite->data[2];
break;
}
break;
@@ -165,8 +165,8 @@ static void sub_80CBCF8(struct Sprite* sprite)
}
}
- sprite->pos2.x = Cos(sprite->data[1], 60);
- sprite->pos2.y = Sin(sprite->data[1], 20);
+ sprite->x2 = Cos(sprite->data[1], 60);
+ sprite->y2 = Sin(sprite->data[1], 20);
}
}
diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c
index a917a9693..74b9154d0 100644
--- a/src/battle/anim/sword.c
+++ b/src/battle/anim/sword.c
@@ -48,8 +48,8 @@ void sub_80CF690(struct Sprite* sprite)
static void sub_80CF6B4(struct Sprite* sprite)
{
sprite->data[0] = 6;
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y - 32;
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y - 32;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/thought.c b/src/battle/anim/thought.c
index ff5b62181..05609bb5a 100644
--- a/src/battle/anim/thought.c
+++ b/src/battle/anim/thought.c
@@ -72,11 +72,11 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220 =
void sub_80CEF44(u8 bank, struct Sprite* sprite)
{
if (GetBattlerSide(bank) == 0)
- sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 5) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(bank, 5) + 8;
else
- sprite->pos1.x = GetBattlerSpriteCoordAttr(bank, 4) - 8;
+ sprite->x = GetBattlerSpriteCoordAttr(bank, 4) - 8;
- sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) - (s16)GetBattlerSpriteCoordAttr(bank, 0) / 4;
+ sprite->y = GetBattlerSpriteCoord(bank, 3) - (s16)GetBattlerSpriteCoordAttr(bank, 0) / 4;
}
void sub_80CEF9C(struct Sprite* sprite)
diff --git a/src/battle/anim/thrashing.c b/src/battle/anim/thrashing.c
index f73c7e9bf..7632e2c1e 100644
--- a/src/battle/anim/thrashing.c
+++ b/src/battle/anim/thrashing.c
@@ -51,8 +51,8 @@ void sub_80D0AB8(u8 taskId)
task->data[2] = 4;
task->data[3] = 7;
task->data[4] = 3;
- task->data[5] = gSprites[task->data[0]].pos1.x;
- task->data[6] = gSprites[task->data[0]].pos1.y;
+ task->data[5] = gSprites[task->data[0]].x;
+ task->data[6] = gSprites[task->data[0]].y;
task->data[7] = 0;
task->data[8] = 0;
task->data[9] = 2;
@@ -71,17 +71,17 @@ static void sub_80D0B3C(u8 taskId)
task->data[8]++;
if ((task->data[8] & 1) != 0)
{
- gSprites[task->data[0]].pos1.y += task->data[9];
+ gSprites[task->data[0]].y += task->data[9];
}
else
{
- gSprites[task->data[0]].pos1.y -= task->data[9];
+ gSprites[task->data[0]].y -= task->data[9];
}
}
switch (task->data[1])
{
case 0:
- gSprites[task->data[0]].pos1.x += task->data[2];
+ gSprites[task->data[0]].x += task->data[2];
if (--task->data[3] == 0)
{
task->data[3] = 14;
@@ -89,7 +89,7 @@ static void sub_80D0B3C(u8 taskId)
}
break;
case 1:
- gSprites[task->data[0]].pos1.x -= task->data[2];
+ gSprites[task->data[0]].x -= task->data[2];
if (--task->data[3] == 0)
{
task->data[3] = 7;
@@ -97,7 +97,7 @@ static void sub_80D0B3C(u8 taskId)
}
break;
case 2:
- gSprites[task->data[0]].pos1.x += task->data[2];
+ gSprites[task->data[0]].x += task->data[2];
if (--task->data[3] == 0)
{
if (--task->data[4] != 0)
@@ -109,7 +109,7 @@ static void sub_80D0B3C(u8 taskId)
{
if ((task->data[8] & 1) != 0)
{
- gSprites[task->data[0]].pos1.y -= task->data[9];
+ gSprites[task->data[0]].y -= task->data[9];
}
DestroyAnimVisualTask(taskId);
}
diff --git a/src/battle/anim/thunder.c b/src/battle/anim/thunder.c
index b15a5c4f1..ae9962f9e 100644
--- a/src/battle/anim/thunder.c
+++ b/src/battle/anim/thunder.c
@@ -43,14 +43,14 @@ void sub_80D61C8(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->callback = sub_80D6218;
}
diff --git a/src/battle/anim/tile.c b/src/battle/anim/tile.c
index 2775eba97..6696b3daf 100644
--- a/src/battle/anim/tile.c
+++ b/src/battle/anim/tile.c
@@ -120,10 +120,10 @@ void sub_80CE09C(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
if (IsContest())
- sprite->pos1.y += 10;
+ sprite->y += 10;
sprite->data[0]++;
}
diff --git a/src/battle/anim/twinkle.c b/src/battle/anim/twinkle.c
index dc26a7432..0d8eb3f2a 100644
--- a/src/battle/anim/twinkle.c
+++ b/src/battle/anim/twinkle.c
@@ -41,8 +41,8 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83D6FF8 =
void sub_80CE36C(struct Sprite* sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[0] = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
@@ -58,7 +58,7 @@ static void sub_80CE3B0(struct Sprite* sprite)
sprite->data[1] = 0;
if (sprite->data[2] <= 0x77)
{
- sprite->pos1.y++;
+ sprite->y++;
sprite->data[2]++;
}
}
diff --git a/src/battle/anim/unused_1.c b/src/battle/anim/unused_1.c
index b4af9fc00..d2a258e79 100644
--- a/src/battle/anim/unused_1.c
+++ b/src/battle/anim/unused_1.c
@@ -77,8 +77,8 @@ const struct SpriteTemplate gSpriteTemplate_83D6AF8 =
void sub_80CC8C8(struct Sprite* sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
diff --git a/src/battle/anim/unused_2.c b/src/battle/anim/unused_2.c
index a1c1a0785..6b958676a 100644
--- a/src/battle/anim/unused_2.c
+++ b/src/battle/anim/unused_2.c
@@ -136,13 +136,13 @@ void sub_80CCC50(struct Sprite* sprite)
{
sprite->data[0] = gBattleAnimArgs[2];
if (GetBattlerSide(gBattleAnimAttacker) != 0)
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
StartSpriteAnim(sprite, gBattleAnimArgs[5]);
sprite->data[1] = -gBattleAnimArgs[3];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[3] = gBattleAnimArgs[4];
sprite->callback = sub_80CCCB4;
sub_80CCCB4(sprite);
@@ -150,8 +150,8 @@ void sub_80CCC50(struct Sprite* sprite)
static void sub_80CCCB4(struct Sprite* sprite)
{
- sprite->pos2.x = Cos(sprite->data[0], 100);
- sprite->pos2.y = Sin(sprite->data[0], 20);
+ sprite->x2 = Cos(sprite->data[0], 100);
+ sprite->y2 = Sin(sprite->data[0], 20);
if (sprite->data[0] <= 0x7F)
sprite->subpriority = 0;
else
@@ -159,7 +159,7 @@ static void sub_80CCCB4(struct Sprite* sprite)
sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
sprite->data[5] += 0x82;
- sprite->pos2.y += sprite->data[5] >> 8;
+ sprite->y2 += sprite->data[5] >> 8;
sprite->data[2]++;
if (sprite->data[2] == sprite->data[3])
DestroyAnimSprite(sprite);
diff --git a/src/battle/anim/unused_3.c b/src/battle/anim/unused_3.c
index 2ee1984a5..56f0d4a26 100644
--- a/src/battle/anim/unused_3.c
+++ b/src/battle/anim/unused_3.c
@@ -61,13 +61,13 @@ void sub_80CD274(struct Sprite* sprite)
sub_8078650(sprite);
if (GetBattlerSide(gBattleAnimAttacker) == 0)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
StartSpriteAnim(sprite, 1);
}
@@ -78,8 +78,8 @@ static void sub_80CD2D4(struct Sprite* sprite)
{
if (++sprite->data[0] > 30)
{
- sprite->pos2.y = (30 - sprite->data[0]) / 3;
- sprite->pos2.x = Sin(sprite->data[1] * 4, 3);
+ sprite->y2 = (30 - sprite->data[0]) / 3;
+ sprite->x2 = Sin(sprite->data[1] * 4, 3);
sprite->data[1]++;
}
diff --git a/src/battle/anim/unused_5.c b/src/battle/anim/unused_5.c
index 9f7ce35ff..81d5ab256 100644
--- a/src/battle/anim/unused_5.c
+++ b/src/battle/anim/unused_5.c
@@ -27,7 +27,7 @@ void sub_80CF280(struct Sprite* sprite)
{
sub_8078650(sprite);
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[2] = gBattleAnimArgs[4];
sprite->data[3] = gBattleAnimArgs[5];
diff --git a/src/battle/anim/unused_6.c b/src/battle/anim/unused_6.c
index 27957f27d..de00a4521 100644
--- a/src/battle/anim/unused_6.c
+++ b/src/battle/anim/unused_6.c
@@ -56,12 +56,12 @@ static void sub_80CF310(struct Sprite* sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.y -= 3;
+ sprite->y2 -= 3;
if (++sprite->data[1] == 6)
sprite->data[0]++;
break;
case 1:
- sprite->pos2.y += 3;
+ sprite->y2 += 3;
if (--sprite->data[1] == 0)
sprite->data[0]++;
break;
diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c
index 5b4781842..eff87b442 100644
--- a/src/battle/anim/unused_7.c
+++ b/src/battle/anim/unused_7.c
@@ -28,12 +28,12 @@ const struct SpriteTemplate gSpriteTemplate_83D73AC =
static void sub_80CF374(struct Sprite* sprite)
{
s16 temp;
- gSprites[sprite->data[2]].pos2.x += sprite->data[1];
+ gSprites[sprite->data[2]].x2 += sprite->data[1];
temp = sprite->data[1];
sprite->data[1] = -temp;
if (sprite->data[0] == 0)
{
- gSprites[sprite->data[2]].pos2.x = 0;
+ gSprites[sprite->data[2]].x2 = 0;
DestroySpriteAndMatrix(sprite);
}
@@ -43,19 +43,19 @@ static void sub_80CF374(struct Sprite* sprite)
void sub_80CF3C4(struct Sprite* sprite)
{
u8 a;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
a = gBattlerSpriteIds[gBattleAnimTarget];
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = a;
diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c
index 2a04d4d01..4602d5a9e 100644
--- a/src/battle/anim/unused_8.c
+++ b/src/battle/anim/unused_8.c
@@ -76,8 +76,8 @@ void sub_80CF458(struct Sprite* sprite)
static void sub_80CF490(struct Sprite* sprite)
{
sprite->data[0] = sprite->data[1];
- sprite->data[2] = sprite->pos1.x;
- sprite->data[4] = sprite->pos1.y + 15;
+ sprite->data[2] = sprite->x;
+ sprite->data[4] = sprite->y + 15;
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80CF4B8);
}
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index 135ed43cb..9b7fcf317 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -227,8 +227,8 @@ void sub_80D37FC(struct Sprite *sprite)
sub_8078764(sprite, TRUE);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
+ sprite->data[4] = sprite->y + gBattleAnimArgs[4];
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
@@ -252,10 +252,10 @@ void sub_80D3838(struct Sprite *sprite)
static void sub_80D3874(struct Sprite *sprite)
{
sprite->data[0] = (sprite->data[0] + 11) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[0], 4);
+ sprite->x2 = Sin(sprite->data[0], 4);
sprite->data[1] += 48;
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
if (--sprite->data[7] == -1)
{
@@ -355,19 +355,15 @@ void AnimTask_CreateSurfWave(u8 taskId)
gTasks[taskId].func = sub_80D3B60;
}
-#ifdef NONMATCHING
void sub_80D3B60(u8 taskId)
{
- struct Struct_sub_8078914 unk;
vu8 cpuDelay; // yet again
+ struct Struct_sub_8078914 unk;
u8 i;
u16 rgbBuffer;
u16 *BGptrX = &gBattle_BG1_X;
u16 *BGptrY = &gBattle_BG1_Y;
- s16 unkUse;
- u32 palOffset;
- u16 palNum;
*BGptrX += gTasks[taskId].data[0];
*BGptrY += gTasks[taskId].data[1];
@@ -378,9 +374,7 @@ void sub_80D3B60(u8 taskId)
rgbBuffer = gPlttBufferFaded[unk.field_8 * 16 + 7];
for (i = 6; i != 0; i--)
{
- palNum = unk.field_8 * 16;
- palOffset = 1 + i;
- gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1];
+ gPlttBufferFaded[unk.field_8 * 16 + 1 + i] = gPlttBufferFaded[unk.field_8 * 16 + 1 + i - 1];
}
gPlttBufferFaded[unk.field_8 * 16 + 1] = rgbBuffer;
gTasks[taskId].data[5] = 0;
@@ -389,16 +383,15 @@ void sub_80D3B60(u8 taskId)
{
// there is some weird math going on here
gTasks[taskId].data[6] = 0;
- unkUse = ++gTasks[taskId].data[3];
- if (unkUse <= 13)
+ if (++gTasks[taskId].data[3] <= 13)
{
- gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[gTasks[taskId].data[15]].data[1] = gTasks[taskId].data[3] | ((16 - gTasks[taskId].data[3]) << 8);
gTasks[taskId].data[4]++;
}
if (gTasks[taskId].data[3] > 54)
{
- unkUse = --gTasks[taskId].data[4];
- gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256);
+ gTasks[taskId].data[4]--;
+ gTasks[gTasks[taskId].data[15]].data[1] = gTasks[taskId].data[4] | ((16 - gTasks[taskId].data[4]) << 8);
}
}
if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F))
@@ -407,8 +400,8 @@ void sub_80D3B60(u8 taskId)
cpuDelay = 0; // stall the CPU
cpuDelay = 0; // stall the CPU
Dma3FillLarge32_(0, unk.field_4, 0x1000); // !
- if (!IsContest)
- REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
*BGptrX = 0;
*BGptrY = 0;
@@ -419,259 +412,6 @@ void sub_80D3B60(u8 taskId)
DestroyAnimVisualTask(taskId);
}
}
-#else
-NAKED
-void sub_80D3B60(u8 taskId)
-{
- asm_unified("push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x18\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, =gTasks\n\
- lsls r4, r7, 2\n\
- adds r4, r7\n\
- lsls r4, 3\n\
- adds r4, r0\n\
- ldrh r0, [r4, 0x8]\n\
- ldr r1, =gBattle_BG1_X\n\
- ldrh r1, [r1]\n\
- adds r0, r1\n\
- ldr r2, =gBattle_BG1_X\n\
- strh r0, [r2]\n\
- ldrh r0, [r4, 0xA]\n\
- ldr r3, =gBattle_BG1_Y\n\
- ldrh r3, [r3]\n\
- adds r0, r3\n\
- ldr r1, =gBattle_BG1_Y\n\
- strh r0, [r1]\n\
- add r5, sp, 0x4\n\
- adds r0, r5, 0\n\
- bl sub_8078914\n\
- ldrh r0, [r4, 0xA]\n\
- ldrh r2, [r4, 0xC]\n\
- adds r0, r2\n\
- strh r0, [r4, 0xC]\n\
- ldrh r0, [r4, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- mov r10, r5\n\
- cmp r0, 0x4\n\
- bne _080D3C02\n\
- ldr r1, =gPlttBufferFaded\n\
- ldrb r0, [r5, 0x8]\n\
- lsls r0, 4\n\
- adds r0, 0x7\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r6, [r0]\n\
- movs r2, 0x6\n\
- adds r5, r1, 0\n\
- adds r3, r5, 0\n\
- mov r4, r10\n\
-_080D3BC8:\n\
- ldrb r0, [r4, 0x8]\n\
- lsls r0, 4\n\
- adds r1, r2, 0x1\n\
- adds r0, r1\n\
- lsls r1, r0, 1\n\
- adds r1, r3\n\
- subs r0, 0x1\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- subs r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r2, 0\n\
- bne _080D3BC8\n\
- mov r3, r10\n\
- ldrb r0, [r3, 0x8]\n\
- lsls r0, 4\n\
- adds r0, 0x1\n\
- lsls r0, 1\n\
- adds r0, r5\n\
- strh r6, [r0]\n\
- ldr r1, =gTasks\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- strh r2, [r0, 0x12]\n\
-_080D3C02:\n\
- ldr r1, =gTasks\n\
- lsls r2, r7, 2\n\
- adds r0, r2, r7\n\
- lsls r0, 3\n\
- adds r3, r0, r1\n\
- ldrh r0, [r3, 0x14]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x14]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- adds r4, r1, 0\n\
- str r2, [sp, 0x14]\n\
- cmp r0, 0x1\n\
- ble _080D3C70\n\
- movs r0, 0\n\
- strh r0, [r3, 0x14]\n\
- ldrh r0, [r3, 0xE]\n\
- adds r2, r0, 0x1\n\
- strh r2, [r3, 0xE]\n\
- lsls r0, r2, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xD\n\
- bgt _080D3C4C\n\
- movs r1, 0x26\n\
- ldrsh r0, [r3, r1]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r1, r4\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- orrs r2, r0\n\
- strh r2, [r1, 0xA]\n\
- ldrh r0, [r3, 0x10]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x10]\n\
-_080D3C4C:\n\
- movs r2, 0xE\n\
- ldrsh r0, [r3, r2]\n\
- cmp r0, 0x36\n\
- ble _080D3C70\n\
- ldrh r2, [r3, 0x10]\n\
- subs r2, 0x1\n\
- strh r2, [r3, 0x10]\n\
- movs r1, 0x26\n\
- ldrsh r0, [r3, r1]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r1, r4\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- orrs r2, r0\n\
- strh r2, [r1, 0xA]\n\
-_080D3C70:\n\
- ldr r2, [sp, 0x14]\n\
- adds r0, r2, r7\n\
- lsls r0, 3\n\
- adds r0, r4\n\
- movs r3, 0x26\n\
- ldrsh r1, [r0, r3]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r4\n\
- ldrh r1, [r0, 0xA]\n\
- movs r0, 0x1F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080D3D32\n\
- ldr r2, [sp, 0x4]\n\
- movs r3, 0x80\n\
- lsls r3, 6\n\
- add r6, sp, 0x10\n\
- movs r5, 0\n\
- ldr r1, =0x040000d4\n\
- movs r4, 0x80\n\
- lsls r4, 5\n\
- mov r8, r6\n\
- ldr r0, =0x85000400\n\
- mov r12, r0\n\
- movs r0, 0x85\n\
- lsls r0, 24\n\
- mov r9, r0\n\
-_080D3CAA:\n\
- str r5, [sp, 0x10]\n\
- mov r0, r8\n\
- str r0, [r1]\n\
- str r2, [r1, 0x4]\n\
- mov r0, r12\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r2, r4\n\
- subs r3, r4\n\
- cmp r3, r4\n\
- bhi _080D3CAA\n\
- str r5, [sp, 0x10]\n\
- str r6, [r1]\n\
- str r2, [r1, 0x4]\n\
- lsrs r0, r3, 2\n\
- mov r2, r9\n\
- orrs r0, r2\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- mov r0, sp\n\
- movs r1, 0\n\
- strb r1, [r0]\n\
- strb r1, [r0]\n\
- mov r3, r10\n\
- ldr r1, [r3, 0x4]\n\
- movs r4, 0\n\
- str r4, [sp, 0x10]\n\
- ldr r0, =0x040000d4\n\
- str r6, [r0]\n\
- str r1, [r0, 0x4]\n\
- ldr r1, =0x85000400\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- bl IsContest\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080D3D02\n\
- ldr r2, =0x0400000a\n\
- ldrb r1, [r2]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
-_080D3D02:\n\
- ldr r0,=gBattle_BG1_X\n\
- strh r4, [r0]\n\
- ldr r1, =gBattle_BG1_Y\n\
- strh r4, [r1]\n\
- ldr r0, =0x04000050\n\
- strh r4, [r0]\n\
- adds r0, 0x2\n\
- strh r4, [r0]\n\
- ldr r2, =gTasks\n\
- ldr r3, [sp, 0x14]\n\
- adds r0, r3, r7\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- movs r3, 0x26\n\
- ldrsh r1, [r0, r3]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- ldr r1, =0x0000ffff\n\
- strh r1, [r0, 0x26]\n\
- adds r0, r7, 0\n\
- bl DestroyAnimVisualTask\n\
-_080D3D32:\n\
- add sp, 0x18\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
- .pool");
-}
-#endif
void sub_80D3D68(u8 taskId)
{
@@ -779,10 +519,10 @@ void sub_80D40A8(struct Sprite *sprite)
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
if (sprite->data[1] & 1)
- sprite->pos2.x = -(sprite->data[3] >> 8);
+ sprite->x2 = -(sprite->data[3] >> 8);
else
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
if (++sprite->data[0] == 21)
DestroyAnimSprite(sprite);
}
@@ -792,7 +532,7 @@ void sub_80D40F4(u8 taskId)
struct Task *task = &gTasks[taskId];
task->data[15] = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
- task->data[5] = gSprites[task->data[15]].pos1.y;
+ task->data[5] = gSprites[task->data[15]].y;
task->data[1] = sub_80D4394();
PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL);
task->func = sub_80D4150;
@@ -813,18 +553,18 @@ void sub_80D4150(u8 taskId)
task->data[3] = 0;
if (++task->data[4] & 1)
{
- gSprites[task->data[15]].pos2.x = 3;
- gSprites[task->data[15]].pos1.y++;
+ gSprites[task->data[15]].x2 = 3;
+ gSprites[task->data[15]].y++;
}
else
{
- gSprites[task->data[15]].pos2.x = -3;
+ gSprites[task->data[15]].x2 = -3;
}
}
if (sub_8079C74(task) == 0)
{
sub_8079A64(task->data[15]);
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
task->data[3] = 0;
task->data[4] = 0;
task->data[0]++;
@@ -854,9 +594,9 @@ void sub_80D4150(u8 taskId)
{
task->data[3] = 0;
if (++task->data[4] & 1)
- gSprites[task->data[15]].pos2.y += 2;
+ gSprites[task->data[15]].y2 += 2;
else
- gSprites[task->data[15]].pos2.y -= 2;
+ gSprites[task->data[15]].y2 -= 2;
if (task->data[4] == 10)
{
sub_8079C08(task, task->data[15], 384, 224, 0x100, 0x100, 8);
@@ -867,11 +607,11 @@ void sub_80D4150(u8 taskId)
}
break;
case 6:
- gSprites[task->data[15]].pos1.y--;
+ gSprites[task->data[15]].y--;
if (sub_8079C74(task) == 0)
{
sub_8078F40(task->data[15]);
- gSprites[task->data[15]].pos1.y = task->data[5];
+ gSprites[task->data[15]].y = task->data[5];
task->data[4] = 0;
task->data[0]++;
}
@@ -959,9 +699,9 @@ void sub_80D452C(struct Sprite *sprite)
case 1:
sprite->data[2] += sprite->data[4];
sprite->data[3] += sprite->data[5];
- sprite->pos1.x = sprite->data[2] >> 4;
- sprite->pos1.y = sprite->data[3] >> 4;
- if (sprite->pos1.x < -8 || sprite->pos1.x > 248 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ sprite->x = sprite->data[2] >> 4;
+ sprite->y = sprite->data[3] >> 4;
+ if (sprite->x < -8 || sprite->x > 248 || sprite->y < -8 || sprite->y > 120)
{
gTasks[sprite->data[6]].data[sprite->data[7]]--;
DestroySprite(sprite);
@@ -1056,11 +796,11 @@ void sub_80D47D0(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= sprite->data[5])
+ sprite->y += 8;
+ if (sprite->y >= sprite->data[5])
{
gTasks[sprite->data[6]].data[10] = 1;
- sprite->data[1] = CreateSprite(&gBattleAnimSpriteTemplate_83DB4D8, sprite->pos1.x, sprite->pos1.y, 1);
+ sprite->data[1] = CreateSprite(&gBattleAnimSpriteTemplate_83DB4D8, sprite->x, sprite->y, 1);
if (sprite->data[1] != MAX_SPRITES)
{
StartSpriteAffineAnim(&gSprites[sprite->data[1]], 3);
@@ -1199,11 +939,11 @@ void sub_80D4B3C(struct Sprite *sprite)
{
if (TranslateAnimArc(sprite))
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
sprite->data[0] = 6;
- sprite->data[2] = (Random() & 0x1F) - 16 + sprite->pos1.x;
- sprite->data[4] = (Random() & 0x1F) - 16 + sprite->pos1.y;
+ sprite->data[2] = (Random() & 0x1F) - 16 + sprite->x;
+ sprite->data[4] = (Random() & 0x1F) - 16 + sprite->y;
sprite->data[5] = ~(Random() & 7);
InitAnimArcTranslation(sprite);
sprite->callback = sub_80D4BA4;
@@ -1230,8 +970,8 @@ void sub_80D4BA4(struct Sprite *sprite)
void sub_80D4BF0(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[2] = gBattleAnimArgs[4];
@@ -1242,9 +982,9 @@ void sub_80D4BF0(struct Sprite *sprite)
void sub_80D4C18(struct Sprite *sprite)
{
sprite->data[4] -= sprite->data[0];
- sprite->pos2.y = sprite->data[4] / 10;
+ sprite->y2 = sprite->data[4] / 10;
sprite->data[5] = (sprite->data[5] + sprite->data[1]) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[5], sprite->data[2]);
+ sprite->x2 = Sin(sprite->data[5], sprite->data[2]);
if (--sprite->data[3] == 0)
DestroyAnimSprite(sprite);
}
@@ -1253,8 +993,8 @@ void sub_80D4C64(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 7;
- sprite->pos2.y = sprite->data[4] >> 7;
+ sprite->x2 = sprite->data[3] >> 7;
+ sprite->y2 = sprite->data[4] >> 7;
if (--sprite->data[0] == 0)
{
FreeSpriteOamMatrix(sprite);
@@ -1274,11 +1014,11 @@ void sub_80D4CA4(struct Sprite *sprite)
void sub_80D4CEC(struct Sprite *sprite)
{
- int xDiff = sprite->data[1] - sprite->pos1.x;
- int yDiff = sprite->data[2] - sprite->pos1.y;
+ int xDiff = sprite->data[1] - sprite->x;
+ int yDiff = sprite->data[2] - sprite->y;
- sprite->pos2.x = (sprite->data[0] * xDiff) / sprite->data[3];
- sprite->pos2.y = (sprite->data[0] * yDiff) / sprite->data[3];
+ sprite->x2 = (sprite->data[0] * xDiff) / sprite->data[3];
+ sprite->y2 = (sprite->data[0] * yDiff) / sprite->data[3];
if (++sprite->data[5] == sprite->data[4])
{
sprite->data[5] = 0;
@@ -1302,8 +1042,8 @@ void sub_80D4D64(struct Sprite *sprite, s32 xDiff, s32 yDiff)
something = sprite->data[0] / 2;
// regalloc acts strange here...
- combinedX = sprite->pos1.x + sprite->pos2.x;
- combinedY = sprite->pos1.y + sprite->pos2.y;
+ combinedX = sprite->x + sprite->x2;
+ combinedY = sprite->y + sprite->y2;
// ...then goes back to normal right here.
// Nothing but this appears to reproduce the behavior.
diff --git a/src/battle/anim/whip.c b/src/battle/anim/whip.c
index 8cfebc0dd..fe8a11cfb 100644
--- a/src/battle/anim/whip.c
+++ b/src/battle/anim/whip.c
@@ -107,13 +107,13 @@ void sub_80CC82C(struct Sprite* sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->callback = sub_8078600;
@@ -127,5 +127,5 @@ void sub_80CC884(struct Sprite* sprite)
sprite->callback = sub_80CC810;
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c
index 9c7f62c12..bad238ceb 100644
--- a/src/battle/anim/wisp_fire.c
+++ b/src/battle/anim/wisp_fire.c
@@ -60,8 +60,8 @@ void sub_80D5CC0(struct Sprite *sprite)
sprite->data[3] += 0xC0 * 2;
sprite->data[4] += 0xA0;
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[3] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[4] >> 8);
sprite->data[1] = (sprite->data[1] + 7) & 0xFF;
@@ -119,7 +119,7 @@ static void sub_80D5E4C(u8 taskId)
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
}
if (++task->data[9] == 16)
@@ -142,7 +142,7 @@ static void sub_80D5E4C(u8 taskId)
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
}
if (++task->data[9] == 96)
@@ -167,7 +167,7 @@ static void sub_80D5E4C(u8 taskId)
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11];
+ gSprites[task->data[task->data[3] + 14]].x2 = task->data[10] + task->data[11];
}
if (++task->data[9] == 16)
@@ -178,7 +178,7 @@ static void sub_80D5E4C(u8 taskId)
case 3:
for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++)
{
- gSprites[task->data[task->data[3] + 14]].pos2.x = 0;
+ gSprites[task->data[task->data[3] + 14]].x2 = 0;
}
DestroyAnimVisualTask(taskId);
@@ -219,14 +219,14 @@ void sub_80D60B4(u8 taskId)
unk = gUnknown_083D97A4[gTasks[taskId].data[0] % 10];
if (gTasks[taskId].data[3] == 1)
- gSprites[spriteId].pos2.y = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk;
+ gSprites[spriteId].y2 = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk;
else
- gSprites[spriteId].pos2.x = gBattleAnimArgs[1] * unk;
+ gSprites[spriteId].x2 = gBattleAnimArgs[1] * unk;
if (gTasks[taskId].data[0] == gTasks[taskId].data[1])
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c
index 1c430d923..398bb0686 100644
--- a/src/battle/anim/wisp_orb.c
+++ b/src/battle/anim/wisp_orb.c
@@ -88,14 +88,14 @@ void sub_80D5B0C(struct Sprite *sprite)
sprite->data[1] += 192;
if (GetBattlerSide(gBattleAnimAttacker) != 0)
{
- sprite->pos2.y = -(sprite->data[1] >> 8);
+ sprite->y2 = -(sprite->data[1] >> 8);
}
else
{
- sprite->pos2.y = sprite->data[1] >> 8;
+ sprite->y2 = sprite->data[1] >> 8;
}
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[4]);
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
if (++sprite->data[3] == 1)
@@ -105,20 +105,20 @@ void sub_80D5B0C(struct Sprite *sprite)
}
break;
case 2:
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[4]);
sprite->data[2] = (sprite->data[2] + 4) & 0xFF;
if (++sprite->data[3] == 31)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 256;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sub_8078BD4(sprite);
@@ -135,7 +135,7 @@ static void sub_80D5C5C(struct Sprite *sprite)
if (!TranslateAnimLinear(sprite))
{
- sprite->pos2.x += Sin(sprite->data[5], 16);
+ sprite->x2 += Sin(sprite->data[5], 16);
initialData5 = sprite->data[5];
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
newData5 = sprite->data[5];
diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c
index 6c26fb891..776cd57a4 100644
--- a/src/battle/anim/withdraw.c
+++ b/src/battle/anim/withdraw.c
@@ -38,7 +38,7 @@ void sub_80CF514(u8 taskId)
if (gTasks[taskId].data[1] == 0)
{
gTasks[taskId].data[0] += 0xB0;
- gSprites[a].pos2.y++;
+ gSprites[a].y2++;
}
else if (gTasks[taskId].data[1] == 1)
{
@@ -50,7 +50,7 @@ void sub_80CF514(u8 taskId)
else
{
gTasks[taskId].data[0] -= 0xB0;
- gSprites[a].pos2.y--;
+ gSprites[a].y2--;
}
sub_8078F9C(a);
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 956cc2f6e..0d1a4c351 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -957,8 +957,8 @@ static void BattleAICmd_is_most_powerful_move(void)
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
{
gDynamicBasePower = 0;
- eDynamicMoveType = 0;
- eDmgMultiplier = 1;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleStruct->dmgMultiplier = 1;
gMoveResultFlags = 0;
gCritMultiplier = 1;
@@ -1758,7 +1758,7 @@ static void BattleAICmd_get_used_item(void)
else
index = gBattlerTarget;
- AI_THINKING_STRUCT->funcResult = AI_ARRAY_160CC(index);
+ AI_THINKING_STRUCT->funcResult = gSharedMem[offsetof(struct BattleStruct, usedHeldItems) + 2 * index];
gAIScriptPtr += 2;
}
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index f83334be3..b68a60c74 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -13,6 +13,7 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/item_effects.h"
extern u8 gUnknown_02023A14_50;
@@ -39,7 +40,7 @@ static bool8 ShouldSwitchIfPerishSong(void)
if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG
&& gDisableStructs[gActiveBattler].perishSongTimer1 == 0)
{
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6; // gBattleStruct->AI_monToSwitchIntoId[GetBattlerPosition(gActiveBattler)] = 6;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler)) / 2] = 6;
BtlController_EmitTwoReturnValues(1, 2, 0);
return TRUE;
}
@@ -82,7 +83,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
continue;
GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); // Unused return value.
GetMonData(&gEnemyParty[i], MON_DATA_ALT_ABILITY); // Unused return value.
-
+
for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), j = 0; j < MAX_MON_MOVES; ++j)
{
move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j);
@@ -92,7 +93,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % 3 < 2)
{
// We found a mon.
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i; // gBattleStruct->AI_monToSwitchIntoId[GetBattlerPosition(gActiveBattler)] = i;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = i;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -158,9 +159,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
continue;
if (i == gBattlerPartyIndexes[battlerIn2])
continue;
- if (i == ewram16068arr(battlerIn1))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn1])
continue;
- if (i == ewram16068arr(battlerIn2))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn2])
continue;
species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES);
@@ -172,7 +173,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
if (absorbingTypeAbility == monAbility && Random() & 1)
{
// we found a mon
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = i;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -192,13 +193,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
{
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = 6;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
{
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = 6;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -209,7 +210,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
return TRUE;
if (Random() & 1)
{
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = 6;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -328,9 +329,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
continue;
if (i == gBattlerPartyIndexes[battlerIn2])
continue;
- if (i == ewram16068arr(battlerIn1))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn1])
continue;
- if (i == ewram16068arr(battlerIn2))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn2])
continue;
species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES);
@@ -353,7 +354,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
moveFlags = AI_TypeCalc(move, gBattleMons[battlerIn1].species, gBattleMons[battlerIn1].ability);
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
{
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = i;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = i;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -413,9 +414,9 @@ static bool8 ShouldSwitch(void)
continue;
if (i == gBattlerPartyIndexes[battlerIn2])
continue;
- if (i == ewram16068arr(battlerIn1))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn1])
continue;
- if (i == ewram16068arr(battlerIn2))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn2])
continue;
availableToSwitch++;
@@ -450,7 +451,7 @@ void AI_TrySwitchOrUseItem(void)
{
if (ShouldSwitch())
{
- if (ewram160C8arr(GetBattlerPosition(gActiveBattler)) == 6)
+ if (gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] == 6)
{
s32 monToSwitchId = GetMostSuitableMonToSwitchInto();
if (monToSwitchId == 6)
@@ -474,19 +475,19 @@ void AI_TrySwitchOrUseItem(void)
continue;
if (monToSwitchId == gBattlerPartyIndexes[battlerIn2])
continue;
- if (monToSwitchId == ewram16068arr(battlerIn1))
+ if (monToSwitchId == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn1])
continue;
- if (monToSwitchId == ewram16068arr(battlerIn2))
+ if (monToSwitchId == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn2])
continue;
break;
}
}
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = monToSwitchId;
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = monToSwitchId;
}
- ewram16068arr(gActiveBattler) = ewram160C8arr(GetBattlerPosition(gActiveBattler));
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + gActiveBattler] = gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)];
return;
}
else
@@ -573,8 +574,8 @@ u8 GetMostSuitableMonToSwitchInto(void)
&& !(gBitTable[i] & invalidMons)
&& gBattlerPartyIndexes[battlerIn1] != i
&& gBattlerPartyIndexes[battlerIn2] != i
- && i != ewram16068arr(battlerIn1)
- && i != ewram16068arr(battlerIn2))
+ && i != gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn1]
+ && i != gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn2])
{
u8 type1 = gBaseStats[species].type1;
u8 type2 = gBaseStats[species].type2;
@@ -633,9 +634,9 @@ u8 GetMostSuitableMonToSwitchInto(void)
continue;
if (gBattlerPartyIndexes[battlerIn2] == i)
continue;
- if (i == ewram16068arr(battlerIn1))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn1])
continue;
- if (i == ewram16068arr(battlerIn2))
+ if (i == gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + battlerIn2])
continue;
for (j = 0; j < 4; j++)
@@ -711,9 +712,9 @@ static bool8 ShouldUseItem(void)
else
itemEffects = gItemEffectTable[item - 13];
- ewram160D8(gActiveBattler) = GetAI_ItemType(item, itemEffects);
+ gSharedMem[BSTRUCT_OFF(AI_usedItemType) + (gActiveBattler / 2)] = GetAI_ItemType(item, itemEffects);
- switch (ewram160D8(gActiveBattler))
+ switch (gSharedMem[BSTRUCT_OFF(AI_usedItemType) + (gActiveBattler / 2)])
{
case AI_ITEM_FULL_RESTORE:
if (gBattleMons[gActiveBattler].hp >= gBattleMons[gActiveBattler].maxHP / 4)
@@ -732,54 +733,54 @@ static bool8 ShouldUseItem(void)
shouldUse = TRUE;
break;
case AI_ITEM_CURE_CONDITION:
- ewram160DA(gActiveBattler) = 0;
- if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] = 0;
+ if (itemEffects[3] & ITEM3_SLEEP && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
{
- ewram160DA(gActiveBattler) |= 0x20;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x20;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON))
+ if (itemEffects[3] & ITEM3_POISON && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON))
{
- ewram160DA(gActiveBattler) |= 0x10;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x10;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS1_BURN)
+ if (itemEffects[3] & ITEM3_BURN && gBattleMons[gActiveBattler].status1 & STATUS1_BURN)
{
- ewram160DA(gActiveBattler) |= 0x8;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x8;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE)
+ if (itemEffects[3] & ITEM3_FREEZE && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE)
{
- ewram160DA(gActiveBattler) |= 0x4;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x4;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS)
+ if (itemEffects[3] & ITEM3_PARALYSIS && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS)
{
- ewram160DA(gActiveBattler) |= 0x2;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x2;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x1 && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
+ if (itemEffects[3] & ITEM3_CONFUSION && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
{
- ewram160DA(gActiveBattler) |= 0x1;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x1;
shouldUse = TRUE;
}
break;
case AI_ITEM_X_STAT:
- ewram160DA(gActiveBattler) = 0;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] = 0;
if (gDisableStructs[gActiveBattler].isFirstTurn == 0)
break;
- if (itemEffects[0] & 0xF)
- ewram160DA(gActiveBattler) |= 0x1;
- if (itemEffects[1] & 0xF0)
- ewram160DA(gActiveBattler) |= 0x2;
- if (itemEffects[1] & 0xF)
- ewram160DA(gActiveBattler) |= 0x4;
- if (itemEffects[2] & 0xF)
- ewram160DA(gActiveBattler) |= 0x8;
- if (itemEffects[2] & 0xF0)
- ewram160DA(gActiveBattler) |= 0x20;
- if (itemEffects[0] & 0x30)
- ewram160DA(gActiveBattler) |= 0x80;
+ if (itemEffects[0] & ITEM0_X_ATTACK)
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x1;
+ if (itemEffects[1] & ITEM1_X_DEFEND)
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x2;
+ if (itemEffects[1] & ITEM1_X_SPEED)
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x4;
+ if (itemEffects[2] & ITEM2_X_SPATK)
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x8;
+ if (itemEffects[2] & ITEM2_X_ACCURACY)
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x20;
+ if (itemEffects[0] & ITEM0_DIRE_HIT)
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gActiveBattler / 2)] |= 0x80;
shouldUse = TRUE;
break;
case AI_ITEM_GUARD_SPECS:
@@ -794,7 +795,11 @@ static bool8 ShouldUseItem(void)
if (shouldUse)
{
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
- ewram160D4(gActiveBattler) = item;
+ // The AI will only ever use an item whose ID fits in 8 bits.
+ // If you want the AI to use an item with a higher ID, uncomment the line below.
+ // See also: battle_controller_opponent.c:OpponentHandleOpenBag
+ gSharedMem[BSTRUCT_OFF(AI_usedItemId) + (gActiveBattler / 2) * 2] = item;
+// gSharedMem[BSTRUCT_OFF(AI_usedItemId) + (gActiveBattler / 2) * 2 + 1] = item >> 8;
AI_BATTLE_HISTORY->trainerItems[i] = 0;
return shouldUse;
}
diff --git a/src/battle_anim.c b/src/battle_anim.c
index ae4342847..3c9062165 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -1488,7 +1488,7 @@ void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim)
else
{
for (i = 0; i < 4; i++)
- gAnimSpeciesByBanks[i] = EWRAM_19348[0];
+ gAnimSpeciesByBanks[i] = gContestResources__moveAnim.species;
}
if (isMoveAnim == 0)
@@ -1847,8 +1847,8 @@ static void ScriptCmd_monbg(void)
spriteId = gBattlerSpriteIds[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
gTasks[taskId].data[0] = spriteId;
- gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
+ gTasks[taskId].data[1] = gSprites[spriteId].x + gSprites[spriteId].x2;
+ gTasks[taskId].data[2] = gSprites[spriteId].y + gSprites[spriteId].y2;
if (toBG_2 == 0)
{
gTasks[taskId].data[3] = gBattle_BG1_X;
@@ -1878,8 +1878,8 @@ static void ScriptCmd_monbg(void)
spriteId = gBattlerSpriteIds[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
gTasks[taskId].data[0] = spriteId;
- gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
+ gTasks[taskId].data[1] = gSprites[spriteId].x + gSprites[spriteId].x2;
+ gTasks[taskId].data[2] = gSprites[spriteId].y + gSprites[spriteId].y2;
if (toBG_2 == 0)
{
gTasks[taskId].data[3] = gBattle_BG1_X;
@@ -1912,7 +1912,7 @@ bool8 IsAnimBankSpriteVisible(u8 bank)
return FALSE;
if (IsContest())
return TRUE; // this line wont ever be reached.
- if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gBattlerSpriteIds[bank]].invisible)
+ if (!gBattleSpriteInfo[bank].invisible || !gSprites[gBattlerSpriteIds[bank]].invisible)
return TRUE;
return FALSE;
@@ -1925,37 +1925,37 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
if (toBG_2 == 0)
{
volatile u8 pointlessZero;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
u8 r2;
sub_8078914(&s);
- DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000);
+ DmaFill32Large(3, 0, s.field_0, 0x2000, 0x1000);
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
- DmaFill16Defvars(3, 0xFF, (void *)s.unk4, 0x1000);
+ DmaFill16Defvars(3, 0xFF, (void *)s.field_4, 0x1000);
REG_BG1CNT_BITFIELD.priority = 2;
REG_BG1CNT_BITFIELD.screenSize = 1;
REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
spriteId = gBattlerSpriteIds[bank];
- gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
- if (IsContest() && IsSpeciesNotUnown(EWRAM_19348[0]) != 0)
+ gBattle_BG1_X = -(gSprites[spriteId].x + gSprites[spriteId].x2) + 32;
+ if (IsContest() && IsSpeciesNotUnown(gContestResources__moveAnim.species) != 0)
gBattle_BG1_X--;
- gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
+ gBattle_BG1_Y = -(gSprites[spriteId].y + gSprites[spriteId].y2) + 32;
gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
- LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.unk8 * 16, 32);
- DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.unk8 * 16, 32);
+ LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.field_8 * 16, 32);
+ DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.field_8 * 16, 32);
if (IsContest())
r2 = 0;
else
r2 = GetBattlerPosition(bank);
- sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
+ sub_80E4EF8(0, 0, r2, s.field_8, (u32)s.field_0, (((s32)s.field_4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
if (IsContest())
sub_8076380();
}
@@ -1973,8 +1973,8 @@ void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
REG_BG2CNT_BITFIELD.areaOverflowMode = 0;
spriteId = gBattlerSpriteIds[bank];
- gBattle_BG2_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
- gBattle_BG2_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
+ gBattle_BG2_X = -(gSprites[spriteId].x + gSprites[spriteId].x2) + 32;
+ gBattle_BG2_Y = -(gSprites[spriteId].y + gSprites[spriteId].y2) + 32;
gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
REG_BG2HOFS = gBattle_BG2_X;
@@ -1991,13 +1991,13 @@ static void sub_8076380(void)
{
int i;
int j;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
u16 *ptr;
- if (IsSpeciesNotUnown(EWRAM_19348[0]))
+ if (IsSpeciesNotUnown(gContestResources__moveAnim.species))
{
sub_8078914(&s);
- ptr = s.unk4;
+ ptr = (u16 *)s.field_4;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 4; j++)
@@ -2037,15 +2037,15 @@ void sub_80763FC(u16 a, u16 *b, u32 c, u8 d)
void sub_8076464(u8 a)
{
volatile u8 pointlessZero;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
sub_8078914(&s);
if (a == 0 || IsContest())
{
- DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000);
+ DmaFill32Large(3, 0, s.field_0, 0x2000, 0x1000);
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in?
- DmaFill32Defvars(3, 0, s.unk4, 0x800);
+ DmaFill32Defvars(3, 0, s.field_4, 0x800);
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
}
@@ -2064,19 +2064,19 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
{
u8 spriteId, palIndex;
s16 x, y;
- struct UnknownStruct2 s;
+ struct Struct_sub_8078914 s;
spriteId = gTasks[taskId].data[0];
palIndex = gTasks[taskId].data[6];
sub_8078914(&s);
- x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x);
- y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y);
+ x = gTasks[taskId].data[1] - (gSprites[spriteId].x + gSprites[spriteId].x2);
+ y = gTasks[taskId].data[2] - (gSprites[spriteId].y + gSprites[spriteId].y2);
if (gTasks[taskId].data[5] == 0)
{
gBattle_BG1_X = x + gTasks[taskId].data[3];
gBattle_BG1_Y = y + gTasks[taskId].data[4];
- DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256, 32);
+ DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 + s.field_8 * 16 - 256, 32);
}
else
{
@@ -2451,9 +2451,9 @@ static void LoadMoveBg(u16 bgId)
{
void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap;
- LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000);
- sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0);
- DmaCopy32Defvars(3, IsContest() ? EWRAM_14800 : EWRAM_18000, (void *)(VRAM + 0xD000), 0x800);
+ LZDecompressWram(tilemap, IsContest() ? eBattleAnimPalBackup_Contest : eBattleAnimPalBackup_Battle);
+ sub_80763FC(sub_80789BC(), IsContest() ? eBattleAnimPalBackup_Contest : eBattleAnimPalBackup_Battle, 0x100, 0);
+ DmaCopy32Defvars(3, IsContest() ? eBattleAnimPalBackup_Contest : eBattleAnimPalBackup_Battle, (void *)(VRAM + 0xD000), 0x800);
LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000));
LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80789BC() * 16, 32);
}
@@ -2526,7 +2526,7 @@ static void ScriptCmd_changebg(void)
s8 BattleAnimAdjustPanning(s8 pan)
{
- if (!IsContest() && (EWRAM_17810[gBattleAnimAttacker].unk0 & 0x10))
+ if (!IsContest() && ewram17810[gBattleAnimAttacker].unk0_4)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
pan = SOUND_PAN_TARGET;
@@ -2568,7 +2568,7 @@ s8 BattleAnimAdjustPanning(s8 pan)
s8 BattleAnimAdjustPanning2(s8 pan)
{
- if (!IsContest() && (EWRAM_17810[gBattleAnimAttacker].unk0 & 0x10))
+ if (!IsContest() && ewram17810[gBattleAnimAttacker].unk0_4)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
pan = SOUND_PAN_TARGET;
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 881f13c97..3de6aacf1 100644
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -32,8 +32,8 @@ extern u16 gBattle_BG2_Y;
extern u16 gWeatherMoveAnim;
extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220;
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[];
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[];
+extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[];
+extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[];
extern const u32 gUnknown_08D2AA98[];
extern const u32 gUnknown_08D2A9E0[];
extern const u16 gUnknown_08D2AA80[];
@@ -1183,8 +1183,8 @@ const union AffineAnimCmd gSlackOffSquishAffineAnimCmds[] =
static void sub_812C144(struct Sprite *sprite)
{
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
if (gBattleAnimArgs[3] == 0)
sprite->data[0] = gBattleAnimArgs[2];
@@ -1199,7 +1199,7 @@ static void sub_812C184(struct Sprite *sprite)
{
if (sprite->data[1] > 0)
{
- sprite->pos2.x = sprite->data[2] >> 8;
+ sprite->x2 = sprite->data[2] >> 8;
sprite->data[2] += sprite->data[0];
sprite->invisible ^= 1;
sprite->data[1]--;
@@ -1255,7 +1255,7 @@ static void sub_812C2BC(struct Sprite *sprite)
sub_8078764(sprite, TRUE);
- rotation = ArcTan2Neg(sprite->pos1.x - x, sprite->pos1.y - y);
+ rotation = ArcTan2Neg(sprite->x - x, sprite->y - y);
rotation += 0x6000;
if (IsContest())
rotation += 0x4000;
@@ -1318,23 +1318,23 @@ static void sub_812C450(struct Sprite *sprite)
{
case 0:
case 1:
- sprite->pos2.x = 1;
- sprite->pos2.y = 0;
+ sprite->x2 = 1;
+ sprite->y2 = 0;
break;
case 2:
case 3:
- sprite->pos2.x = -1;
- sprite->pos2.y = 0;
+ sprite->x2 = -1;
+ sprite->y2 = 0;
break;
case 4:
case 5:
- sprite->pos2.x = 0;
- sprite->pos2.y = 1;
+ sprite->x2 = 0;
+ sprite->y2 = 1;
break;
case 6:
default:
- sprite->pos2.x = 0;
- sprite->pos2.y = -1;
+ sprite->x2 = 0;
+ sprite->y2 = -1;
break;
}
@@ -1473,7 +1473,7 @@ static void sub_812C80C(struct Sprite *sprite)
{
sub_8078650(sprite);
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->callback = sub_8078600;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -1515,10 +1515,10 @@ static void sub_812C848(struct Sprite *sprite)
var0 = (sprite->data[0] * 20) & 0xFF;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = (sprite->data[3] + (s32)((u32)sprite->data[3] >> 31)) >> 1;
- sprite->pos2.y = Sin(var0 & 0xFF, 5) + ((s32)(sprite->data[4] + ((u32)sprite->data[4] >> 31)) >> 1);
+ sprite->x2 = (sprite->data[3] + (s32)((u32)sprite->data[3] >> 31)) >> 1;
+ sprite->y2 = Sin(var0 & 0xFF, 5) + ((s32)(sprite->data[4] + ((u32)sprite->data[4] >> 31)) >> 1);
- if ((u16)(sprite->pos1.x + sprite->pos2.x) > 240)
+ if ((u16)(sprite->x + sprite->x2) > 240)
DestroyAnimSprite(sprite);
}
@@ -1576,7 +1576,7 @@ static void sub_812CA04(struct Sprite *sprite)
case 1:
case 3:
sprite->data[1] += 117;
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->x2 = sprite->data[1] >> 8;
if (++sprite->data[2] == 21)
{
sprite->data[2] = 0;
@@ -1585,7 +1585,7 @@ static void sub_812CA04(struct Sprite *sprite)
break;
case 2:
sprite->data[1] -= 117;
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->x2 = sprite->data[1] >> 8;
if (++sprite->data[2] == 41)
{
sprite->data[2] = 0;
@@ -1617,23 +1617,23 @@ static void sub_812CAFC(struct Sprite *sprite)
{
if (gBattleAnimArgs[3] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->oam.tileNum += 16;
if (gBattleAnimArgs[2] == 0)
{
sprite->oam.matrixNum = 8;
- sprite->pos2.x = -12;
+ sprite->x2 = -12;
sprite->data[1] = 2;
}
else
{
- sprite->pos2.x = 12;
+ sprite->x2 = 12;
sprite->data[1] = -2;
}
@@ -1649,8 +1649,8 @@ static void sub_812CBB4(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- sprite->pos2.x += sprite->data[1];
- if (sprite->pos2.x == 0)
+ sprite->x2 += sprite->data[1];
+ if (sprite->x2 == 0)
{
sprite->data[2]++;
if (sprite->data[3] == 0)
@@ -1661,8 +1661,8 @@ static void sub_812CBB4(struct Sprite *sprite)
}
else
{
- sprite->pos2.x -= sprite->data[1];
- if (abs(sprite->pos2.x) == 12)
+ sprite->x2 -= sprite->data[1];
+ if (abs(sprite->x2) == 12)
{
sprite->data[0]--;
sprite->data[2]--;
@@ -1712,18 +1712,18 @@ static void sub_812CCE8(struct Sprite *sprite)
int var0;
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1);
}
- sprite->pos2.y = gBattleAnimArgs[2];
+ sprite->y2 = gBattleAnimArgs[2];
var0 = 0;
- if (sprite->pos2.y > gBattleAnimArgs[3])
+ if (sprite->y2 > gBattleAnimArgs[3])
var0 = 1;
sprite->data[0] = var0;
@@ -1737,17 +1737,17 @@ static void sub_812CCE8(struct Sprite *sprite)
static void sub_812CD64(struct Sprite *sprite)
{
sprite->data[1] = (sprite->data[1] + sprite->data[2]) & 0xFF;
- sprite->pos2.x = gSineTable[sprite->data[1]] >> 4;
- sprite->pos2.y += sprite->data[3];
+ sprite->x2 = gSineTable[sprite->data[1]] >> 4;
+ sprite->y2 += sprite->data[3];
if (sprite->data[0])
{
- if (sprite->pos2.y < sprite->data[4])
+ if (sprite->y2 < sprite->data[4])
DestroyAnimSprite(sprite);
}
else
{
- if (sprite->pos2.y > sprite->data[4])
+ if (sprite->y2 > sprite->data[4])
DestroyAnimSprite(sprite);
}
}
@@ -2039,10 +2039,10 @@ static void sub_812D294(struct Sprite *sprite)
if (sprite->data[0] == 61)
{
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
@@ -2072,8 +2072,8 @@ static void sub_812D3AC(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
PrepareBattlerSpriteForRotScale(spriteId, 0);
sprite->data[1] = 256;
sprite->data[2] = 256;
@@ -2101,8 +2101,8 @@ static void sub_812D3AC(struct Sprite *sprite)
}
break;
case 3:
- sprite->pos2.y -= 6;
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ sprite->y2 -= 6;
+ if (sprite->y + sprite->y2 < -32)
DestroyAnimSprite(sprite);
break;
}
@@ -2111,11 +2111,11 @@ static void sub_812D3AC(struct Sprite *sprite)
static void sub_812D4B4(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos1.x = -16;
+ sprite->x = -16;
else
- sprite->pos1.x = 256;
+ sprite->x = 256;
- sprite->pos1.y = 0;
+ sprite->y = 0;
sprite->callback = sub_812D4EC;
}
@@ -2125,23 +2125,23 @@ static void sub_812D4EC(struct Sprite *sprite)
sprite->data[0] += 72;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = sprite->data[0] >> 4;
+ sprite->x2 = sprite->data[0] >> 4;
else
- sprite->pos2.x = -(sprite->data[0] >> 4);
+ sprite->x2 = -(sprite->data[0] >> 4);
sprite->data[1] += 16;
- sprite->pos2.y += sprite->data[1] >> 8;
+ sprite->y2 += sprite->data[1] >> 8;
if (++sprite->data[2] % 3 == 0)
{
CreateSpriteAndAnimate(
&gSpriteTemplate_8402500,
- sprite->pos1.x + sprite->pos2.x,
- sprite->pos1.y + sprite->pos2.y,
+ sprite->x + sprite->x2,
+ sprite->y + sprite->y2,
sprite->subpriority + 1);
}
- newX = sprite->pos1.x + sprite->pos2.x + 32;
+ newX = sprite->x + sprite->x2 + 32;
if (newX > 304)
DestroyAnimSprite(sprite);
}
@@ -2161,7 +2161,7 @@ static void sub_812D588(struct Sprite *sprite)
if (y > 3)
y = -y;
- sprite->pos2.y = y;
+ sprite->y2 = y;
sprite->callback = sub_812D5E8;
}
@@ -2232,9 +2232,9 @@ static void sub_812D724(struct Sprite *sprite)
sprite->data[0]++;
break;
case 1:
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
sprite->data[1] -= 96;
- if (sprite->pos1.y + sprite->pos2.y > sprite->data[2])
+ if (sprite->y + sprite->y2 > sprite->data[2])
DestroyAnimSprite(sprite);
break;
}
@@ -2262,7 +2262,6 @@ void sub_812D7E8(u8 taskId)
u8 *dest;
u8 *src;
u16 *field_4;
- u16 *ptr;
u16 stretch;
switch (gTasks[taskId].data[0])
@@ -2297,13 +2296,13 @@ void sub_812D7E8(u8 taskId)
else
position = GetBattlerPosition(gBattleAnimAttacker);
- dest = gUnknown_081FAF4C[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
+ dest = gMonSpriteGfx_Sprite_ptr[position] + (gBattleMonForms[gBattleAnimAttacker] << 11);
src = subStruct.field_0;
DmaCopy32(3, dest, src, 0x800);
if (IsContest())
{
- if (IsSpeciesNotUnown(EWRAM_19348[0]) != IsSpeciesNotUnown(EWRAM_19348[1]))
+ if (IsSpeciesNotUnown(gContestResources__moveAnim.species) != IsSpeciesNotUnown(gContestResources__moveAnim.targetSpecies))
{
field_4 = (u16 *)subStruct.field_4;
for (i = 0; i < 8; i++)
@@ -2325,11 +2324,12 @@ void sub_812D7E8(u8 taskId)
}
}
- ptr = EWRAM_19348;
- if (IsSpeciesNotUnown(ptr[1]))
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
+ if (IsSpeciesNotUnown(gContestResources__moveAnim.targetSpecies))
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims =
+ gAffineAnims_BattleSpriteContest;
else
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7BEC;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims =
+ gAffineAnims_BattleSpriteOpponentSide;
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
}
@@ -2360,7 +2360,7 @@ void sub_812D7E8(u8 taskId)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
{
if (gTasks[taskId].data[10] == 0)
- sub_8032984(gBattleAnimAttacker, eTransformStatuses[gBattleAnimAttacker].species);
+ sub_8032984(gBattleAnimAttacker, gBattleSpriteInfo[gBattleAnimAttacker].transformedSpecies);
}
}
@@ -2488,13 +2488,13 @@ static void sub_812DEAC(struct Sprite *sprite)
if (var0 > 31)
var0 = 32 - var0;
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + var0;
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + var0;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32;
sprite->data[1] = gBattleAnimArgs[0];
sprite->data[2] = gBattleAnimArgs[1];
- spriteId1 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
- spriteId2 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ spriteId1 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->x, sprite->y, sprite->subpriority + 1);
+ spriteId2 = CreateSprite(&gBattleAnimSpriteTemplate_84025EC, sprite->x, sprite->y, sprite->subpriority + 1);
StartSpriteAnim(&gSprites[spriteId1], 1);
StartSpriteAnim(&gSprites[spriteId2], 2);
@@ -2521,15 +2521,15 @@ static void sub_812DFEC(struct Sprite *sprite)
var0 = (u16)sprite->data[2] + (u16)sprite->data[3];
var1 = var0 >> 8;
- sprite->pos2.y -= var1;
+ sprite->y2 -= var1;
sprite->data[3] = var0 & 0xFF;
- if (sprite->data[4] == 0 && sprite->pos2.y < -8)
+ if (sprite->data[4] == 0 && sprite->y2 < -8)
{
gSprites[sprite->data[6]].invisible = FALSE;
sprite->data[4]++;
}
- if (sprite->data[4] == 1 && sprite->pos2.y < -16)
+ if (sprite->data[4] == 1 && sprite->y2 < -16)
{
gSprites[sprite->data[7]].invisible = FALSE;
sprite->data[4]++;
@@ -2559,7 +2559,7 @@ static void sub_812E0F8(struct Sprite *sprite)
return;
sprite->data[3] += sprite->data[2];
- sprite->pos2.y -= sprite->data[3] >> 8;
+ sprite->y2 -= sprite->data[3] >> 8;
sprite->data[3] &= 0xFF;
if (sprite->data[1]-- == 0)
{
@@ -2703,12 +2703,12 @@ static void sub_812E4F0(struct Sprite *sprite)
sprite->data[2] += 128;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- sprite->pos2.x = -(sprite->data[1] >> 8);
+ sprite->x2 = -(sprite->data[1] >> 8);
else
- sprite->pos2.x = sprite->data[1] >> 8;
+ sprite->x2 = sprite->data[1] >> 8;
- sprite->pos2.y += sprite->data[2] >> 8;
- if (sprite->pos2.y > 64)
+ sprite->y2 += sprite->data[2] >> 8;
+ if (sprite->y2 > 64)
DestroyAnimSprite(sprite);
}
}
@@ -2760,7 +2760,7 @@ static void sub_812E638(u8 taskId)
switch (task->data[0])
{
case 0:
- gSprites[task->data[15]].pos2.x += task->data[5];
+ gSprites[task->data[15]].x2 += task->data[5];
task->data[2] -= task->data[4];
obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
sub_8078F9C(task->data[15]);
@@ -2771,7 +2771,7 @@ static void sub_812E638(u8 taskId)
}
break;
case 1:
- gSprites[task->data[15]].pos2.x -= task->data[5];
+ gSprites[task->data[15]].x2 -= task->data[5];
task->data[2] += task->data[4];
obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
sub_8078F9C(task->data[15]);
@@ -2782,7 +2782,7 @@ static void sub_812E638(u8 taskId)
}
break;
case 2:
- gSprites[task->data[15]].pos2.x += task->data[5];
+ gSprites[task->data[15]].x2 += task->data[5];
task->data[2] -= task->data[4];
obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
sub_8078F9C(task->data[15]);
@@ -2811,13 +2811,13 @@ static void sub_812E7A0(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x = 0;
- sprite->pos1.y = gBattleAnimArgs[0];
+ sprite->x = 0;
+ sprite->y = gBattleAnimArgs[0];
}
else
{
- sprite->pos1.x = 240;
- sprite->pos1.y = gBattleAnimArgs[0] - 30;
+ sprite->x = 240;
+ sprite->y = gBattleAnimArgs[0] - 30;
}
sprite->data[2] = gBattleAnimArgs[2];
@@ -2830,23 +2830,23 @@ static void sub_812E7F0(struct Sprite *sprite)
sprite->data[0] += 3;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- sprite->pos1.x += 5;
- sprite->pos1.y -= 1;
+ sprite->x += 5;
+ sprite->y -= 1;
- if (sprite->pos1.x > 240)
+ if (sprite->x > 240)
DestroyAnimSprite(sprite);
- sprite->pos2.y = Sin(sprite->data[0] & 0xFF, 16);
+ sprite->y2 = Sin(sprite->data[0] & 0xFF, 16);
}
else
{
- sprite->pos1.x -= 5;
- sprite->pos1.y += 1;
+ sprite->x -= 5;
+ sprite->y += 1;
- if (sprite->pos1.x < 0)
+ if (sprite->x < 0)
DestroyAnimSprite(sprite);
- sprite->pos2.y = Cos(sprite->data[0] & 0xFF, 16);
+ sprite->y2 = Cos(sprite->data[0] & 0xFF, 16);
}
}
@@ -2920,7 +2920,7 @@ static void sub_812E8B4(u8 taskId)
obj_id_set_rotscale(task->data[15], 0x100, 0x100, task->data[2]);
sub_8078F9C(task->data[15]);
- gSprites[task->data[15]].pos2.x = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6);
+ gSprites[task->data[15]].x2 = -(((temp = task->data[2]) >= 0 ? task->data[2] : temp + 63) >> 6);
if (++task->data[1] > 8)
{
@@ -2944,12 +2944,12 @@ static void sub_812EA4C(struct Sprite *sprite)
{
if (gBattleAnimArgs[2] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
}
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[1] = 0x80;
sprite->data[2] = 0x300;
sprite->data[3] = gBattleAnimArgs[1];
@@ -2957,9 +2957,9 @@ static void sub_812EA4C(struct Sprite *sprite)
}
else
{
- sprite->pos2.x = sprite->data[1] >> 8;
- sprite->pos2.y += sprite->data[2] >> 8;
- if (sprite->data[4] == 0 && sprite->pos2.y > -sprite->data[3])
+ sprite->x2 = sprite->data[1] >> 8;
+ sprite->y2 += sprite->data[2] >> 8;
+ if (sprite->data[4] == 0 && sprite->y2 > -sprite->data[3])
{
sprite->data[4] = 1;
sprite->data[2] = (-sprite->data[2] / 3) * 2;
@@ -2997,17 +2997,17 @@ void sub_812EB10(u8 taskId)
obj_id_set_rotscale(spriteId, 0xD0, 0x130, 0xF00);
sub_8079A64(spriteId);
if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.y += 16;
+ gSprites[spriteId].y2 += 16;
break;
case 2:
obj_id_set_rotscale(spriteId, 0xD0, 0x130, 0xF100);
sub_8079A64(spriteId);
if (IsContest() || GetBattlerSide(gTasks[taskId].data[11]) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.y += 16;
+ gSprites[spriteId].y2 += 16;
break;
}
- gSprites[spriteId].pos2.x = 2;
+ gSprites[spriteId].x2 = 2;
gTasks[taskId].data[0]++;
}
else
@@ -3016,14 +3016,14 @@ void sub_812EB10(u8 taskId)
if (++gTasks[taskId].data[2] == 3)
{
gTasks[taskId].data[2] = 0;
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos2.x;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x2;
}
if (++gTasks[taskId].data[1] == 13)
{
sub_8078F40(spriteId);
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
}
}
@@ -3052,11 +3052,11 @@ static void sub_812EC78(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[0];
if (sprite->data[2] == 0)
- sprite->pos1.x = -8;
+ sprite->x = -8;
else
- sprite->pos1.x = 248;
+ sprite->x = 248;
- sprite->pos1.y = 104;
+ sprite->y = 104;
sprite->callback = sub_812ED24;
}
@@ -3064,13 +3064,13 @@ static void sub_812ED24(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- sprite->pos2.x += sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 += sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
else
{
- sprite->pos2.x -= sprite->data[0] >> 8;
- sprite->pos2.y -= sprite->data[1] >> 8;
+ sprite->x2 -= sprite->data[0] >> 8;
+ sprite->y2 -= sprite->data[1] >> 8;
}
sprite->data[0] -= 22;
@@ -3131,8 +3131,8 @@ static void sub_812EE00(struct Sprite *sprite)
static void sub_812EEA4(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->callback = sub_812EEEC;
@@ -3141,8 +3141,8 @@ static void sub_812EEA4(struct Sprite *sprite)
static void sub_812EEEC(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[1], sprite->data[2] >> 8);
- sprite->pos2.y = Cos(sprite->data[1], sprite->data[3] >> 8);
+ sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8);
+ sprite->y2 = Cos(sprite->data[1], sprite->data[3] >> 8);
sprite->data[1] = (sprite->data[1] + 9) & 0xFF;
if ((u16)sprite->data[1] < 64 || sprite->data[1] > 195)
@@ -3187,9 +3187,9 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
if (IsContest())
{
isBackPic = 1;
- personality = eWRAM_19348Struct->personality;
- otId = eWRAM_19348Struct->otId;
- species = eWRAM_19348Struct->species;
+ personality = gContestResources__moveAnim.targetPersonality;
+ otId = gContestResources__moveAnim.otId;
+ species = gContestResources__moveAnim.targetSpecies;
xOffset = 20;
priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker);
}
@@ -3200,7 +3200,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
isBackPic = 0;
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
+ if (gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies == SPECIES_NONE)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
@@ -3209,7 +3209,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
}
else
{
- species = eTransformStatuses[gBattleAnimTarget].species;
+ species = gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies;
}
xOffset = 20;
@@ -3220,7 +3220,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
isBackPic = 1;
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
+ if (gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies == SPECIES_NONE)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_SPECIES);
@@ -3229,7 +3229,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId)
}
else
{
- species = eTransformStatuses[gBattleAnimTarget].species;
+ species = gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies;
}
xOffset = -20;
@@ -3483,14 +3483,14 @@ static void sub_812F76C(u8 taskId)
task->data[1] = 0;
task->data[2]++;
if (task->data[2] & 1)
- gSprites[task->data[15]].pos2.x = 1;
+ gSprites[task->data[15]].x2 = 1;
else
- gSprites[task->data[15]].pos2.x = -1;
+ gSprites[task->data[15]].x2 = -1;
}
}
else
{
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
}
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
@@ -3499,8 +3499,8 @@ static void sub_812F76C(u8 taskId)
static void sub_812F804(struct Sprite *sprite, s16 b, s16 c, s16 d, s16 e, u16 f)
{
- sprite->pos1.x = b;
- sprite->pos1.y = c;
+ sprite->x = b;
+ sprite->y = c;
sprite->data[4] = b << 4;
sprite->data[5] = c << 4;
sprite->data[6] = ((d - b) << 4) / f;
@@ -3511,18 +3511,18 @@ void sub_812F86C(struct Sprite *sprite)
{
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
- sprite->pos1.x = sprite->data[4] >> 4;
- sprite->pos1.y = sprite->data[5] >> 4;
+ sprite->x = sprite->data[4] >> 4;
+ sprite->y = sprite->data[5] >> 4;
}
static void sub_812F88C(struct Sprite *sprite)
{
- s16 x = sprite->pos1.x;
- s16 y = sprite->pos1.y;
+ s16 x = sprite->x;
+ s16 y = sprite->y;
sub_8078650(sprite);
StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]);
- sub_812F804(sprite, sprite->pos1.x, sprite->pos1.y, x, y, 64);
+ sub_812F804(sprite, sprite->x, sprite->y, x, y, 64);
sprite->data[0] = 0;
sprite->callback = sub_812F8DC;
}
@@ -3534,7 +3534,7 @@ static void sub_812F8DC(struct Sprite *sprite)
sprite->data[0]++;
index = (sprite->data[0] * 8) & 0xFF;
sub_812F86C(sprite);
- sprite->pos2.y = Sin(index, 8);
+ sprite->y2 = Sin(index, 8);
if (sprite->data[0] > 58)
{
if (++sprite->data[1] > 1)
@@ -3555,8 +3555,8 @@ static void sub_812F948(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
sprite->callback = sub_80DA48C;
}
@@ -3594,14 +3594,14 @@ static void sub_812F9B0(u8 taskId)
var0 = gTasks[taskId].data[7];
var1 = gTasks[taskId].data[8];
if (gTasks[taskId].data[2] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] - (var0 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] + (var0 >> 8);
if (gTasks[taskId].data[3] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] - (var1 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] + (var1 >> 8);
if (gTasks[taskId].data[0] < 1)
{
@@ -3644,14 +3644,14 @@ static void sub_812FAF8(u8 taskId)
var0 = (gTasks[taskId].data[2] & 0x7FFF) + gTasks[taskId].data[7];
var1 = (gTasks[taskId].data[3] & 0x7FFF) + gTasks[taskId].data[8];
if (gTasks[taskId].data[2] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] - (var0 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8);
+ gSprites[gTasks[taskId].data[15]].x2 = gTasks[taskId].data[9] + (var0 >> 8);
if (gTasks[taskId].data[3] & 0x8000)
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] - (var1 >> 8);
else
- gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8);
+ gSprites[gTasks[taskId].data[15]].y2 = gTasks[taskId].data[10] + (var1 >> 8);
gTasks[taskId].data[7] = var0;
gTasks[taskId].data[8] = var1;
@@ -3799,8 +3799,8 @@ static void sub_812FEB8(u8 taskId, bool8 arg1)
static void sub_812FF94(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->data[1];
- sprite->pos1.y += sprite->data[2];
+ sprite->x += sprite->data[1];
+ sprite->y += sprite->data[2];
if (++sprite->data[0] > 6)
{
gTasks[sprite->data[3]].data[sprite->data[4]]--;
@@ -3857,8 +3857,8 @@ static void sub_81300F4(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[0];
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[1];
if (gBattleAnimArgs[2] == 0)
{
sprite->data[0] = 640;
@@ -3889,8 +3889,8 @@ static void sub_81301B4(struct Sprite *sprite)
{
sprite->data[6] += sprite->data[0];
sprite->data[7] += sprite->data[1];
- sprite->pos2.x = sprite->data[6] >> 8;
- sprite->pos2.y = sprite->data[7] >> 8;
+ sprite->x2 = sprite->data[6] >> 8;
+ sprite->y2 = sprite->data[7] >> 8;
if (++sprite->data[5] == 14)
DestroyAnimSprite(sprite);
}
@@ -3953,21 +3953,21 @@ static void sub_81302E4(u8 taskId)
if (task->data[7] == 0)
{
if (i == 0)
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = -task->data[6];
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->data[6];
else
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = task->data[6];
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->data[6];
}
else
{
if (i == 0)
{
- gSprites[spriteId].pos2.x = -task->data[6];
- gSprites[spriteId].pos2.y = task->data[6];
+ gSprites[spriteId].x2 = -task->data[6];
+ gSprites[spriteId].y2 = task->data[6];
}
else
{
- gSprites[spriteId].pos2.x = task->data[6];
- gSprites[spriteId].pos2.y = -task->data[6];
+ gSprites[spriteId].x2 = task->data[6];
+ gSprites[spriteId].y2 = -task->data[6];
}
}
@@ -4028,8 +4028,8 @@ static void sub_81304DC(struct Sprite *sprite)
static void sub_813051C(struct Sprite *sprite)
{
- sprite->pos1.x = gBattleAnimArgs[0];
- sprite->pos1.y = gBattleAnimArgs[1];
+ sprite->x = gBattleAnimArgs[0];
+ sprite->y = gBattleAnimArgs[1];
sprite->data[2] = gBattleAnimArgs[2];
sprite->data[4] = gBattleAnimArgs[3];
sprite->data[0] = gBattleAnimArgs[4];
@@ -4119,15 +4119,15 @@ static void sub_81307B0(struct Sprite *sprite)
sprite->oam.tileNum += 16;
sprite->data[6] = gBattleAnimArgs[2];
sprite->data[7] = gBattleAnimArgs[1] == 0 ? -1 : 1;
- sprite->pos1.y = GetBattlerSpriteCoord(battler, 3);
+ sprite->y = GetBattlerSpriteCoord(battler, 3);
if (gBattleAnimArgs[1] == 0)
{
sprite->oam.matrixNum |= 0x8;
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 4) - 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, 4) - 8;
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoordAttr(battler, 5) + 8;
+ sprite->x = GetBattlerSpriteCoordAttr(battler, 5) + 8;
}
sprite->callback = sub_813085C;
@@ -4141,7 +4141,7 @@ static void sub_813085C(struct Sprite *sprite)
if (++sprite->data[1] > 1)
{
sprite->data[1] = 0;
- sprite->pos2.x += sprite->data[7];
+ sprite->x2 += sprite->data[7];
if (++sprite->data[2] == 12)
sprite->data[0]++;
}
@@ -4154,7 +4154,7 @@ static void sub_813085C(struct Sprite *sprite)
}
break;
case 2:
- sprite->pos2.x -= sprite->data[7] * 4;
+ sprite->x2 -= sprite->data[7] * 4;
if (++sprite->data[1] == 6)
{
sprite->data[1] = 0;
@@ -4162,7 +4162,7 @@ static void sub_813085C(struct Sprite *sprite)
}
break;
case 3:
- sprite->pos2.x += sprite->data[7] * 3;
+ sprite->x2 += sprite->data[7] * 3;
if (++sprite->data[1] == 8)
{
if (--sprite->data[6])
@@ -4202,14 +4202,14 @@ static void sub_8130970(u8 taskId)
{
task->data[1] = 0;
if (!(task->data[2] & 1))
- gSprites[task->data[15]].pos2.x = 2;
+ gSprites[task->data[15]].x2 = 2;
else
- gSprites[task->data[15]].pos2.x = -2;
+ gSprites[task->data[15]].x2 = -2;
}
if (!RunAffineAnimFromTaskData(task))
{
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
if (--task->data[0])
{
PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC);
@@ -4227,17 +4227,17 @@ static void sub_8130A2C(struct Sprite *sprite)
{
if (gBattleAnimArgs[0] == 0)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, 2);
}
else
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimTarget, 2);
}
- if (sprite->pos1.y < 8)
- sprite->pos1.y = 8;
+ if (sprite->y < 8)
+ sprite->y = 8;
sprite->data[0] = 0;
sprite->data[1] = gBattleAnimArgs[1];
@@ -4263,16 +4263,16 @@ static void sub_8130AEC(struct Sprite *sprite)
if (gBattleAnimArgs[0] == 0)
{
sprite->oam.matrixNum |= 0x8;
- sprite->pos1.x = 100;
+ sprite->x = 100;
sprite->data[7] = 1;
}
else
{
- sprite->pos1.x = 140;
+ sprite->x = 140;
sprite->data[7] = -1;
}
- sprite->pos1.y = 56;
+ sprite->y = 56;
sprite->callback = sub_8130B38;
}
@@ -4281,9 +4281,9 @@ static void sub_8130B38(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.y -= sprite->data[7] * 2;
+ sprite->y -= sprite->data[7] * 2;
if (sprite->data[1] & 1)
- sprite->pos1.x -= sprite->data[7] * 2;
+ sprite->x -= sprite->data[7] * 2;
if (++sprite->data[1] == 9)
{
@@ -4300,8 +4300,8 @@ static void sub_8130B38(struct Sprite *sprite)
break;
case 2:
sprite->data[1]++;
- sprite->pos1.y += sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ sprite->y += sprite->data[7] * 3;
+ sprite->x2 = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
if (sprite->data[1] == 12)
{
sprite->data[1] = 0;
@@ -4317,15 +4317,15 @@ static void sub_8130B38(struct Sprite *sprite)
break;
case 4:
sprite->data[1]++;
- sprite->pos1.y -= sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ sprite->y -= sprite->data[7] * 3;
+ sprite->x2 = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
if (sprite->data[1] == 12)
sprite->data[0]++;
break;
case 5:
sprite->data[1]++;
- sprite->pos1.y += sprite->data[7] * 3;
- sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
+ sprite->y += sprite->data[7] * 3;
+ sprite->x2 = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3);
if (sprite->data[1] == 15)
sprite->oam.tileNum += 16;
@@ -4336,7 +4336,7 @@ static void sub_8130B38(struct Sprite *sprite)
}
break;
case 6:
- sprite->pos1.x += sprite->data[7] * 6;
+ sprite->x += sprite->data[7] * 6;
if (++sprite->data[1] == 9)
{
sprite->data[1] = 0;
@@ -4344,7 +4344,7 @@ static void sub_8130B38(struct Sprite *sprite)
}
break;
case 7:
- sprite->pos1.x += sprite->data[7] * 2;
+ sprite->x += sprite->data[7] * 2;
if (++sprite->data[1] == 1)
{
sprite->data[1] = 0;
@@ -4352,7 +4352,7 @@ static void sub_8130B38(struct Sprite *sprite)
}
break;
case 8:
- sprite->pos1.x -= sprite->data[7] * 3;
+ sprite->x -= sprite->data[7] * 3;
if (++sprite->data[1] == 5)
DestroyAnimSprite(sprite);
break;
@@ -4405,7 +4405,7 @@ static void sub_8130DBC(u8 taskId)
}
break;
case 1:
- gSprites[task->data[15]].pos2.x -= task->data[14] * 3;
+ gSprites[task->data[15]].x2 -= task->data[14] * 3;
if (++task->data[1] == 6)
{
task->data[1] = 0;
@@ -4413,7 +4413,7 @@ static void sub_8130DBC(u8 taskId)
}
break;
case 2:
- gSprites[task->data[15]].pos2.x += task->data[14] * 3;
+ gSprites[task->data[15]].x2 += task->data[14] * 3;
if (++task->data[1] == 6)
{
task->data[1] = 0;
@@ -4436,7 +4436,7 @@ static void sub_8130DBC(u8 taskId)
}
break;
case 4:
- gSprites[task->data[15]].pos2.x += task->data[14];
+ gSprites[task->data[15]].x2 += task->data[14];
if (++task->data[1] == 3)
{
task->data[1] = 0;
@@ -4451,7 +4451,7 @@ static void sub_8130DBC(u8 taskId)
}
break;
case 6:
- gSprites[task->data[15]].pos2.x -= task->data[14] * 4;
+ gSprites[task->data[15]].x2 -= task->data[14] * 4;
if (++task->data[1] == 5)
{
task->data[1] = 0;
@@ -4459,7 +4459,7 @@ static void sub_8130DBC(u8 taskId)
}
break;
case 7:
- gSprites[task->data[15]].pos2.x += task->data[14] * 4;
+ gSprites[task->data[15]].x2 += task->data[14] * 4;
if (++task->data[1] == 5)
{
task->data[1] = 0;
@@ -4467,7 +4467,7 @@ static void sub_8130DBC(u8 taskId)
}
break;
case 8:
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
DestroyAnimVisualTask(taskId);
break;
}
@@ -4534,9 +4534,9 @@ static void sub_8130FE0(struct Sprite *sprite)
else
sprite->data[0] = 12;
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = y;
InitAnimLinearTranslation(sprite);
sprite->data[5]++;
@@ -4547,19 +4547,19 @@ static void sub_8130FE0(struct Sprite *sprite)
switch (sprite->data[6])
{
default:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[0] = 0;
sprite->data[5]++;
sprite->data[6]++;
break;
case 4:
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[5] = 0;
sprite->data[6]++;
break;
@@ -4597,14 +4597,14 @@ static void sub_8130FE0(struct Sprite *sprite)
static void sub_81311E4(struct Sprite *sprite)
{
- sprite->pos2.x = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
- sprite->pos2.y = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
+ sprite->x2 = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4];
+ sprite->y2 = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4];
if (!(sprite->data[5] & 1))
{
CreateSprite(
&gSpriteTemplate_8402500,
- sprite->pos1.x + sprite->pos2.x,
- sprite->pos1.y + sprite->pos2.y, 5);
+ sprite->x + sprite->x2,
+ sprite->y + sprite->y2, 5);
}
if (sprite->data[5] == sprite->data[4])
@@ -4620,20 +4620,20 @@ static void sub_8131264(struct Sprite *sprite)
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER || IsContest())
{
- sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0];
- sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2];
+ sprite->data[0] = sprite->x - gBattleAnimArgs[0];
+ sprite->data[2] = sprite->x - gBattleAnimArgs[2];
}
else
{
- sprite->data[0] = sprite->pos1.x + gBattleAnimArgs[0];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[0] = sprite->x + gBattleAnimArgs[0];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[2];
}
- sprite->data[1] = sprite->pos1.y + gBattleAnimArgs[1];
- sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[3];
+ sprite->data[1] = sprite->y + gBattleAnimArgs[1];
+ sprite->data[3] = sprite->y + gBattleAnimArgs[3];
sprite->data[4] = gBattleAnimArgs[4];
- sprite->pos1.x = sprite->data[0];
- sprite->pos1.y = sprite->data[1];
+ sprite->x = sprite->data[0];
+ sprite->y = sprite->data[1];
sprite->callback = sub_81311E4;
}
@@ -4667,7 +4667,7 @@ void sub_81312E4(u8 taskId)
refresh_graphics_maybe(gBattleAnimAttacker, 0, spriteId);
if (IsContest())
{
- gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18;
+ gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].affineAnims = gAffineAnims_BattleSpriteContest;
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimAttacker]], 0);
}
@@ -4685,22 +4685,22 @@ static void sub_8131408(u8 taskId)
switch (gTasks[taskId].data[0])
{
case 0:
- gSprites[spriteId].pos2.y = -200;
- gSprites[spriteId].pos2.x = 200;
+ gSprites[spriteId].y2 = -200;
+ gSprites[spriteId].x2 = 200;
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0]++;
break;
case 1:
gTasks[taskId].data[10] += 112;
- gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
- if (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y >= -32)
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].y2 += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].y + gSprites[spriteId].y2 >= -32)
+ gSprites[spriteId].x2 = 0;
- if (gSprites[spriteId].pos2.y > 0)
- gSprites[spriteId].pos2.y = 0;
+ if (gSprites[spriteId].y2 > 0)
+ gSprites[spriteId].y2 = 0;
- if (gSprites[spriteId].pos2.y == 0)
+ if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
gTasks[taskId].data[10] -= 0x800;
@@ -4712,17 +4712,17 @@ static void sub_8131408(u8 taskId)
if (gTasks[taskId].data[10] < 0)
gTasks[taskId].data[10] = 0;
- gSprites[spriteId].pos2.y -= gTasks[taskId].data[10] >> 8;
+ gSprites[spriteId].y2 -= gTasks[taskId].data[10] >> 8;
if (gTasks[taskId].data[10] == 0)
gTasks[taskId].data[0]++;
break;
case 3:
gTasks[taskId].data[10] += 112;
- gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8;
- if (gSprites[spriteId].pos2.y > 0)
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].y2 += gTasks[taskId].data[10] >> 8;
+ if (gSprites[spriteId].y2 > 0)
+ gSprites[spriteId].y2 = 0;
- if (gSprites[spriteId].pos2.y == 0)
+ if (gSprites[spriteId].y2 == 0)
{
PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER_NEG));
DestroyAnimVisualTask(taskId);
@@ -4746,8 +4746,8 @@ static void sub_8131564(struct Sprite *sprite)
y2 = -96;
}
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
- sprite->pos2.y = y2;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ sprite->y2 = y2;
sprite->callback = sub_81315C8;
}
@@ -4756,32 +4756,32 @@ static void sub_81315C8(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.y += 10;
- if (sprite->pos2.y >= 0)
+ sprite->y2 += 10;
+ if (sprite->y2 >= 0)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
case 1:
sprite->data[1] += 4;
- sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
+ sprite->y2 = -(gSineTable[sprite->data[1]] >> 3);
if (sprite->data[1] > 127)
{
PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(SOUND_PAN_TARGET));
sprite->data[1] = 0;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
case 2:
sprite->data[1] += 6;
- sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 4);
+ sprite->y2 = -(gSineTable[sprite->data[1]] >> 4);
if (sprite->data[1] > 127)
{
sprite->data[1] = 0;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[0]++;
}
break;
@@ -4831,8 +4831,8 @@ void sub_81316F8(u8 taskId)
return;
}
- gSprites[spriteId2].pos2.x += 24;
- gSprites[spriteId1].pos2.x -= 24;
+ gSprites[spriteId2].x2 += 24;
+ gSprites[spriteId1].x2 -= 24;
gSprites[spriteId2].data[0] = 0;
gSprites[spriteId1].data[0] = 0;
gSprites[spriteId2].data[1] = 0;
@@ -4874,7 +4874,7 @@ static void sub_8131838(struct Sprite *sprite)
}
sprite->data[4] = (sprite->data[4] + sprite->data[3]) & 0xFF;
- sprite->pos2.x = Cos(sprite->data[4], sprite->data[5]);
+ sprite->x2 = Cos(sprite->data[4], sprite->data[5]);
switch (sprite->data[0])
{
case 0:
@@ -4933,12 +4933,12 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
spriteId = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
gTasks[taskId].data[1] += 0x800;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId].x2 += (gTasks[taskId].data[1] >> 8);
else
- gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId].x2 -= (gTasks[taskId].data[1] >> 8);
gTasks[taskId].data[1] &= 0xFF;
- x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ x = gSprites[spriteId].x + gSprites[spriteId].x2;
if ((u16)(x + 32) > 304)
{
gTasks[taskId].data[1] = 0;
@@ -4948,9 +4948,9 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
case 1:
if (IsContest())
{
- personality = eWRAM_19348Struct->personality;
- otId = eWRAM_19348Struct->otId;
- species = eWRAM_19348Struct->species;
+ personality = gContestResources__moveAnim.personality;
+ otId = gContestResources__moveAnim.otId;
+ species = gContestResources__moveAnim.targetSpecies;
subpriority = GetBattlerSubpriority(gBattleAnimAttacker);
isBackPic = 0;
x = -32;
@@ -4961,10 +4961,10 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
{
personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
+ if (gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies == SPECIES_NONE)
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
else
- species = eTransformStatuses[gBattleAnimTarget].species;
+ species = gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority + 1;
isBackPic = 0;
@@ -4974,10 +4974,10 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
{
personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY);
otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID);
- if (eTransformStatuses[gBattleAnimTarget].species == SPECIES_NONE)
+ if (gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies == SPECIES_NONE)
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES);
else
- species = eTransformStatuses[gBattleAnimTarget].species;
+ species = gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies;
subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_BATTLER_TARGET)].subpriority - 1;
isBackPic = 1;
@@ -4986,7 +4986,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
}
spriteId2 = sub_8079F44(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId);
- if (eTransformStatuses[gBattleAnimTarget].species != SPECIES_NONE)
+ if (gBattleSpriteInfo[gBattleAnimTarget].transformedSpecies != SPECIES_NONE)
BlendPalette((gSprites[spriteId2].oam.paletteNum * 16) | 0x100, 16, 6, RGB_WHITE);
gTasks[taskId].data[15] = spriteId2;
@@ -4996,12 +4996,12 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
spriteId2 = gTasks[taskId].data[15];
gTasks[taskId].data[1] += 0x800;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId2].pos2.x -= (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId2].x2 -= (gTasks[taskId].data[1] >> 8);
else
- gSprites[spriteId2].pos2.x += (gTasks[taskId].data[1] >> 8);
+ gSprites[spriteId2].x2 += (gTasks[taskId].data[1] >> 8);
gTasks[taskId].data[1] &= 0xFF;
- x = gSprites[spriteId2].pos1.x + gSprites[spriteId2].pos2.x;
+ x = gSprites[spriteId2].x + gSprites[spriteId2].x2;
if (gTasks[taskId].data[14] == 0)
{
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
@@ -5033,9 +5033,9 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
spriteId2 = gTasks[taskId].data[15];
DestroySpriteAndFreeResources_(&gSprites[spriteId2]);
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x = -gSprites[spriteId].pos1.x - 32;
+ gSprites[spriteId].x2 = -gSprites[spriteId].x - 32;
else
- gSprites[spriteId].pos2.x = 272 - gSprites[spriteId].pos1.x;
+ gSprites[spriteId].x2 = 272 - gSprites[spriteId].x;
gTasks[taskId].data[0]++;
break;
@@ -5044,19 +5044,19 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId)
gTasks[taskId].data[1] += 0x800;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- gSprites[spriteId].pos2.x += (gTasks[taskId].data[1] >> 8);
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 += (gTasks[taskId].data[1] >> 8);
+ if (gSprites[spriteId].x2 + gSprites[spriteId].x >= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
+ gSprites[spriteId].x2 = 0;
}
else
{
- gSprites[spriteId].pos2.x -= (gTasks[taskId].data[1] >> 8);
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 -= (gTasks[taskId].data[1] >> 8);
+ if (gSprites[spriteId].x2 + gSprites[spriteId].x <= GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X))
+ gSprites[spriteId].x2 = 0;
}
gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1];
- if (gSprites[spriteId].pos2.x == 0)
+ if (gSprites[spriteId].x2 == 0)
DestroyAnimVisualTask(taskId);
break;
}
@@ -5737,7 +5737,7 @@ void sub_8131EB8(struct Sprite *sprite)
if (gBattleAnimArgs[7] == -1)
{
PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(63));
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16;
sprite->data[0] = -32;
sprite->data[7]++;
sprite->invisible = FALSE;
@@ -5750,7 +5750,7 @@ void sub_8131EB8(struct Sprite *sprite)
}
break;
case 1:
- sprite->pos2.y = Sin(sprite->data[1], sprite->data[0]);
+ sprite->y2 = Sin(sprite->data[1], sprite->data[0]);
sprite->data[1] += 5;
if (sprite->data[1] > 0x7F)
{
@@ -5761,9 +5761,9 @@ void sub_8131EB8(struct Sprite *sprite)
sprite->data[2] += 0x100;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
- sprite->pos2.x -= (sprite->data[2] >> 8);
+ sprite->x2 -= (sprite->data[2] >> 8);
else
- sprite->pos2.x += (sprite->data[2] >> 8);
+ sprite->x2 += (sprite->data[2] >> 8);
sprite->data[2] &= 0xFF;
if (sprite->data[3] == 2)
@@ -5794,15 +5794,15 @@ void AnimTask_SnatchPartnerMove(u8 taskId)
break;
case 1:
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
+ gSprites[spriteId].x2 += gTasks[taskId].data[0];
if (gTasks[taskId].data[0] > 0)
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[2])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 >= gTasks[taskId].data[2])
gTasks[taskId].data[15]++;
}
else
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[2])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 <= gTasks[taskId].data[2])
gTasks[taskId].data[15]++;
}
break;
@@ -5812,22 +5812,22 @@ void AnimTask_SnatchPartnerMove(u8 taskId)
break;
case 3:
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0];
+ gSprites[spriteId].x2 += gTasks[taskId].data[0];
if (gTasks[taskId].data[0] < 0)
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x <= gTasks[taskId].data[1])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 <= gTasks[taskId].data[1])
gTasks[taskId].data[15]++;
}
else
{
- if (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x >= gTasks[taskId].data[1])
+ if (gSprites[spriteId].x + gSprites[spriteId].x2 >= gTasks[taskId].data[1])
gTasks[taskId].data[15]++;
}
break;
case 4:
default:
spriteId = gBattlerSpriteIds[gBattleAnimAttacker];
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 = 0;
DestroyAnimVisualTask(taskId);
break;
}
@@ -5840,8 +5840,8 @@ void AnimTask_TeeterDanceMovement(u8 taskId)
struct Task *task = &gTasks[taskId];
task->data[3] = GetAnimBattlerSpriteId(ANIM_BATTLER_ATTACKER);
task->data[4] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
- task->data[6] = gSprites[task->data[3]].pos1.y;
- task->data[5] = gSprites[task->data[3]].pos1.x;
+ task->data[6] = gSprites[task->data[3]].y;
+ task->data[5] = gSprites[task->data[3]].x;
task->data[9] = 0;
task->data[11] = 0;
task->data[10] = 1;
@@ -5857,23 +5857,23 @@ static void AnimTask_TeeterDanceMovementStep(u8 taskId)
case 0:
task->data[11] += 8;
task->data[11] &= 0xFF;
- gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5;
+ gSprites[task->data[3]].x2 = gSineTable[task->data[11]] >> 5;
task->data[9] += 2;
task->data[9] &= 0xFF;
- gSprites[task->data[3]].pos1.x = (gSineTable[task->data[9]] >> 3) * task->data[4] + task->data[5];
+ gSprites[task->data[3]].x = (gSineTable[task->data[9]] >> 3) * task->data[4] + task->data[5];
if (task->data[9] == 0)
{
- gSprites[task->data[3]].pos1.x = task->data[5];
+ gSprites[task->data[3]].x = task->data[5];
task->data[0]++;
}
break;
case 1:
task->data[11] += 8;
task->data[11] &= 0xFF;
- gSprites[task->data[3]].pos2.x = gSineTable[task->data[11]] >> 5;
+ gSprites[task->data[3]].x2 = gSineTable[task->data[11]] >> 5;
if (task->data[11] == 0)
{
- gSprites[task->data[3]].pos2.x = 0;
+ gSprites[task->data[3]].x2 = 0;
task->data[0]++;
}
break;
@@ -5897,8 +5897,8 @@ static void AnimKnockOffStrikeStep(struct Sprite *sprite)
sprite->data[1] &= 0xFF;
}
- sprite->pos2.x = Cos(sprite->data[1], 20);
- sprite->pos2.y = Sin(sprite->data[1], 20);
+ sprite->x2 = Cos(sprite->data[1], 20);
+ sprite->y2 = Sin(sprite->data[1], 20);
if (sprite->animEnded)
DestroyAnimSprite(sprite);
@@ -5912,8 +5912,8 @@ void AnimKnockOffStrike(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
{
- sprite->pos1.x -= gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x -= gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = -11;
sprite->data[1] = 192;
StartSpriteAffineAnim(sprite, 1);
@@ -5922,8 +5922,8 @@ void AnimKnockOffStrike(struct Sprite *sprite)
{
sprite->data[0] = 11;
sprite->data[1] = 192;
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
}
sprite->callback = AnimKnockOffStrikeStep;
@@ -5933,10 +5933,10 @@ void AnimKnockOffStrike(struct Sprite *sprite)
// No args.
void AnimRecycle(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
- sprite->pos1.y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
- if (sprite->pos1.y < 16)
- sprite->pos1.y = 16;
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2);
+ sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP);
+ if (sprite->y < 16)
+ sprite->y = 16;
sprite->data[6] = 0;
sprite->data[7] = 16;
@@ -6042,14 +6042,14 @@ static void AnimTask_SlackOffSquishStep(u8 taskId)
task->data[1] = 0;
task->data[2]++;
if (!(task->data[2] & 1))
- gSprites[task->data[15]].pos2.x = -1;
+ gSprites[task->data[15]].x2 = -1;
else
- gSprites[task->data[15]].pos2.x = 1;
+ gSprites[task->data[15]].x2 = 1;
}
}
else
{
- gSprites[task->data[15]].pos2.x = 0;
+ gSprites[task->data[15]].x2 = 0;
}
if (!RunAffineAnimFromTaskData(&gTasks[taskId]))
diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c
index 23aea3218..e0172a133 100644
--- a/src/battle_anim_mon_movement.c
+++ b/src/battle_anim_mon_movement.c
@@ -108,8 +108,8 @@ void AnimTask_ShakeMon(u8 taskId)
DestroyAnimVisualTask(taskId);
return;
}
- gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
- gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
+ gSprites[spriteId].x2 = gBattleAnimArgs[1];
+ gSprites[spriteId].y2 = gBattleAnimArgs[2];
TASK.data[0] = spriteId;
TASK.data[1] = gBattleAnimArgs[3];
TASK.data[2] = gBattleAnimArgs[4];
@@ -124,27 +124,27 @@ static void AnimTask_ShakeMonStep(u8 taskId)
{
if (TASK.data[3] == 0)
{
- if (SPRITE.pos2.x == 0)
+ if (SPRITE.x2 == 0)
{
- SPRITE.pos2.x = TASK.data[4];
+ SPRITE.x2 = TASK.data[4];
}
else
{
- SPRITE.pos2.x = 0;
+ SPRITE.x2 = 0;
}
- if (SPRITE.pos2.y == 0)
+ if (SPRITE.y2 == 0)
{
- SPRITE.pos2.y = TASK.data[5];
+ SPRITE.y2 = TASK.data[5];
}
else
{
- SPRITE.pos2.y = 0;
+ SPRITE.y2 = 0;
}
TASK.data[3] = TASK.data[2];
if (--TASK.data[1] == 0)
{
- SPRITE.pos2.x = 0;
- SPRITE.pos2.y = 0;
+ SPRITE.x2 = 0;
+ SPRITE.y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -212,8 +212,8 @@ void AnimTask_ShakeMon2(u8 taskId)
return;
}
- gSprites[sprite].pos2.x = gBattleAnimArgs[1];
- gSprites[sprite].pos2.y = gBattleAnimArgs[2];
+ gSprites[sprite].x2 = gBattleAnimArgs[1];
+ gSprites[sprite].y2 = gBattleAnimArgs[2];
TASK.data[0] = sprite;
TASK.data[1] = gBattleAnimArgs[3];
TASK.data[2] = gBattleAnimArgs[4];
@@ -228,21 +228,21 @@ static void AnimTask_ShakeMon2Step(u8 taskId)
{
if (TASK.data[3] == 0)
{
- if (SPRITE.pos2.x == TASK.data[4])
- SPRITE.pos2.x = -TASK.data[4];
+ if (SPRITE.x2 == TASK.data[4])
+ SPRITE.x2 = -TASK.data[4];
else
- SPRITE.pos2.x = TASK.data[4];
+ SPRITE.x2 = TASK.data[4];
- if (SPRITE.pos2.y == TASK.data[5])
- SPRITE.pos2.y = -TASK.data[5];
+ if (SPRITE.y2 == TASK.data[5])
+ SPRITE.y2 = -TASK.data[5];
else
- SPRITE.pos2.y = TASK.data[5];
+ SPRITE.y2 = TASK.data[5];
TASK.data[3] = TASK.data[2];
if (--TASK.data[1] == 0)
{
- SPRITE.pos2.x = 0;
- SPRITE.pos2.y = 0;
+ SPRITE.x2 = 0;
+ SPRITE.y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -270,8 +270,8 @@ void AnimTask_ShakeMonInPlace(u8 taskId)
return;
}
- gSprites[spriteId].pos2.x += gBattleAnimArgs[1];
- gSprites[spriteId].pos2.y += gBattleAnimArgs[2];
+ gSprites[spriteId].x2 += gBattleAnimArgs[1];
+ gSprites[spriteId].y2 += gBattleAnimArgs[2];
TASK.data[0] = spriteId;
TASK.data[1] = 0;
TASK.data[2] = gBattleAnimArgs[3];
@@ -289,26 +289,26 @@ static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
{
if (TASK.data[1] & 1)
{
- SPRITE.pos2.x += TASK.data[5];
- SPRITE.pos2.y += TASK.data[6];
+ SPRITE.x2 += TASK.data[5];
+ SPRITE.y2 += TASK.data[6];
}
else
{
- SPRITE.pos2.x -= TASK.data[5];
- SPRITE.pos2.y -= TASK.data[6];
+ SPRITE.x2 -= TASK.data[5];
+ SPRITE.y2 -= TASK.data[6];
}
TASK.data[3] = TASK.data[4];
if (++TASK.data[1] >= TASK.data[2])
{
if (TASK.data[1] & 1)
{
- SPRITE.pos2.x += TASK.data[5] / 2;
- SPRITE.pos2.y += TASK.data[6] / 2;
+ SPRITE.x2 += TASK.data[5] / 2;
+ SPRITE.y2 += TASK.data[6] / 2;
}
else
{
- SPRITE.pos2.x -= TASK.data[5] / 2;
- SPRITE.pos2.y -= TASK.data[6] / 2;
+ SPRITE.x2 -= TASK.data[5] / 2;
+ SPRITE.y2 -= TASK.data[6] / 2;
}
DestroyAnimVisualTask(taskId);
return;
@@ -329,7 +329,7 @@ static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
void AnimTask_ShakeAndSinkMon(u8 taskId)
{
u8 sprite = GetAnimBattlerSpriteId(gBattleAnimArgs[0]);
- gSprites[sprite].pos2.x = gBattleAnimArgs[1];
+ gSprites[sprite].x2 = gBattleAnimArgs[1];
TASK.data[0] = sprite;
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
@@ -348,15 +348,15 @@ static void AnimTask_ShakeAndSinkMonStep(u8 taskId)
if (TASK.data[2] == TASK.data[8]++)
{
TASK.data[8] = 0;
- if (gSprites[sprite].pos2.x == x)
+ if (gSprites[sprite].x2 == x)
x = -x;
- gSprites[sprite].pos2.x += x;
+ gSprites[sprite].x2 += x;
}
TASK.data[1] = x;
TASK.data[9] += TASK.data[3];
- gSprites[sprite].pos2.y = TASK.data[9] >> 8;
+ gSprites[sprite].y2 = TASK.data[9] >> 8;
if (--TASK.data[4] == 0)
{
DestroyAnimVisualTask(taskId);
@@ -399,9 +399,9 @@ void AnimTask_TranslateMonElliptical(u8 taskId)
static void sub_80A8488(u8 taskId)
{
u8 spriteId = TASK.data[0];
- gSprites[spriteId].pos2.x = Sin(TASK.data[5], TASK.data[1]);
- gSprites[spriteId].pos2.y = -Cos(TASK.data[5], TASK.data[2]);
- gSprites[spriteId].pos2.y += TASK.data[2];
+ gSprites[spriteId].x2 = Sin(TASK.data[5], TASK.data[1]);
+ gSprites[spriteId].y2 = -Cos(TASK.data[5], TASK.data[2]);
+ gSprites[spriteId].y2 += TASK.data[2];
TASK.data[5] += TASK.data[4];
TASK.data[5] &= 0xff;
@@ -410,8 +410,8 @@ static void sub_80A8488(u8 taskId)
if (TASK.data[3] == 0)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -503,16 +503,16 @@ static void SlideMonToOriginalPos(struct Sprite *sprite)
monSpriteId = gBattlerSpriteIds[gBattleAnimTarget];
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = gSprites[monSpriteId].pos1.x + gSprites[monSpriteId].pos2.x;
- sprite->data[2] = gSprites[monSpriteId].pos1.x;
- sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y;
- sprite->data[4] = gSprites[monSpriteId].pos1.y;
+ sprite->data[1] = gSprites[monSpriteId].x + gSprites[monSpriteId].x2;
+ sprite->data[2] = gSprites[monSpriteId].x;
+ sprite->data[3] = gSprites[monSpriteId].y + gSprites[monSpriteId].y2;
+ sprite->data[4] = gSprites[monSpriteId].y;
something = 0;
InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = something;
sprite->data[4] = something;
- sprite->data[5] = gSprites[monSpriteId].pos2.x;
- sprite->data[6] = gSprites[monSpriteId].pos2.y;
+ sprite->data[5] = gSprites[monSpriteId].x2;
+ sprite->data[6] = gSprites[monSpriteId].y2;
sprite->invisible = TRUE;
if (gBattleAnimArgs[1] == 1)
@@ -537,10 +537,10 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite)
if (sprite->data[0] == 0)
{
if (lo < 2)
- monSprite->pos2.x = 0;
+ monSprite->x2 = 0;
if (lo == 2 || lo == 0)
- monSprite->pos2.y = 0;
+ monSprite->y2 = 0;
DestroyAnimSprite(sprite);
}
@@ -549,8 +549,8 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- monSprite->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5];
- monSprite->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6];
+ monSprite->x2 = (s8)(sprite->data[3] >> 8) + sprite->data[5];
+ monSprite->y2 = (s8)(sprite->data[4] >> 8) + sprite->data[6];
}
}
@@ -582,10 +582,10 @@ static void SlideMonToOffset(struct Sprite *sprite)
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = gSprites[monSpriteId].pos1.x;
- sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1];
- sprite->data[3] = gSprites[monSpriteId].pos1.y;
- sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2];
+ sprite->data[1] = gSprites[monSpriteId].x;
+ sprite->data[2] = gSprites[monSpriteId].x + gBattleAnimArgs[1];
+ sprite->data[3] = gSprites[monSpriteId].y;
+ sprite->data[4] = gSprites[monSpriteId].y + gBattleAnimArgs[2];
InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
sprite->data[4] = 0;
@@ -618,13 +618,13 @@ static void sub_80A8818(struct Sprite *sprite)
}
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ sprite->data[1] = gSprites[spriteId].x + gSprites[spriteId].x2;
sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1];
- sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
+ sprite->data[3] = gSprites[spriteId].y + gSprites[spriteId].y2;
sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2];
InitSpriteDataForLinearTranslation(sprite);
- sprite->data[3] = gSprites[spriteId].pos2.x << 8;
- sprite->data[4] = gSprites[spriteId].pos2.y << 8;
+ sprite->data[3] = gSprites[spriteId].x2 << 8;
+ sprite->data[4] = gSprites[spriteId].y2 << 8;
sprite->data[5] = spriteId;
sprite->data[6] = gBattleAnimArgs[5];
if (!gBattleAnimArgs[5])
@@ -641,8 +641,8 @@ static void sub_80A8818(struct Sprite *sprite)
static void sub_80A88F0(struct Sprite *sprite)
{
- gSprites[sprite->data[5]].pos2.x = 0;
- gSprites[sprite->data[5]].pos2.y = 0;
+ gSprites[sprite->data[5]].x2 = 0;
+ gSprites[sprite->data[5]].y2 = 0;
DestroyAnimSprite(sprite);
}
@@ -680,8 +680,8 @@ static void AnimTask_WindUpLungePart1(u8 taskId)
u8 spriteId;
spriteId = TASK.data[0];
TASK.data[11] += TASK.data[1];
- gSprites[spriteId].pos2.x = TASK.data[11] >> 8;
- gSprites[spriteId].pos2.y = Sin((u8)(TASK.data[10] >> 8), TASK.data[2]);
+ gSprites[spriteId].x2 = TASK.data[11] >> 8;
+ gSprites[spriteId].y2 = Sin((u8)(TASK.data[10] >> 8), TASK.data[2]);
TASK.data[10] += TASK.data[7];
if (--TASK.data[3] == 0)
{
@@ -700,7 +700,7 @@ static void AnimTask_WindUpLungePart2(u8 taskId)
{
spriteId = TASK.data[0];
TASK.data[12] += TASK.data[5];
- gSprites[spriteId].pos2.x = (TASK.data[12] >> 8) + (TASK.data[11] >> 8);
+ gSprites[spriteId].x2 = (TASK.data[12] >> 8) + (TASK.data[11] >> 8);
if (--TASK.data[6] == 0)
{
DestroyAnimVisualTask(taskId);
@@ -755,8 +755,8 @@ void sub_80A8A80(u8 taskId)
static void sub_80A8B3C(u8 taskId)
{
u8 spriteId = TASK.data[0];
- gSprites[spriteId].pos2.x += TASK.data[1];
- if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x + 0x20 > 0x130u)
+ gSprites[spriteId].x2 += TASK.data[1];
+ if (gSprites[spriteId].x2 + gSprites[spriteId].x + 0x20 > 0x130u)
{
DestroyAnimVisualTask(taskId);
return;
@@ -808,17 +808,17 @@ static void AnimTask_SwayMonStep(u8 taskId)
if (TASK.data[0] == 0)
{
- gSprites[spriteId].pos2.x = sineValue;
+ gSprites[spriteId].x2 = sineValue;
}
else
{
if (GetBattlerSide(TASK.data[5]) == B_SIDE_PLAYER)
{
- gSprites[spriteId].pos2.y = (sineValue >= 0) ? sineValue : -sineValue;
+ gSprites[spriteId].y2 = (sineValue >= 0) ? sineValue : -sineValue;
}
else
{
- gSprites[spriteId].pos2.y = (sineValue >= 0) ? -sineValue : sineValue;
+ gSprites[spriteId].y2 = (sineValue >= 0) ? -sineValue : sineValue;
}
}
@@ -829,8 +829,8 @@ static void AnimTask_SwayMonStep(u8 taskId)
TASK.data[12] ^= 1;
if (--TASK.data[3] == 0)
{
- gSprites[spriteId].pos2.x = 0;
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].x2 = 0;
+ gSprites[spriteId].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
@@ -1024,8 +1024,8 @@ void sub_80A9058(u8 taskId)
TASK.data[10] = gBattleAnimArgs[3];
TASK.data[11] = gBattleAnimArgs[4];
TASK.data[7] = GetAnimBattlerSpriteId(1);
- TASK.data[8] = gSprites[TASK.data[7]].pos2.x;
- TASK.data[9] = gSprites[TASK.data[7]].pos2.y;
+ TASK.data[8] = gSprites[TASK.data[7]].x2;
+ TASK.data[9] = gSprites[TASK.data[7]].y2;
TASK.data[0] = 0;
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
@@ -1043,28 +1043,28 @@ static void sub_80A913C(u8 taskId)
{
if (task->data[12])
{
- gSprites[task->data[7]].pos2.x = task->data[8] + task->data[13];
+ gSprites[task->data[7]].x2 = task->data[8] + task->data[13];
}
else
{
- gSprites[task->data[7]].pos2.x = task->data[8] - task->data[14];
+ gSprites[task->data[7]].x2 = task->data[8] - task->data[14];
}
}
if (task->data[11])
{
if (task->data[12])
{
- gSprites[task->data[7]].pos2.y = task->data[15];
+ gSprites[task->data[7]].y2 = task->data[15];
}
else
{
- gSprites[task->data[7]].pos2.y = 0;
+ gSprites[task->data[7]].y2 = 0;
}
}
if (!--task->data[2])
{
- gSprites[task->data[7]].pos2.x = 0;
- gSprites[task->data[7]].pos2.y = 0;
+ gSprites[task->data[7]].x2 = 0;
+ gSprites[task->data[7]].y2 = 0;
DestroyAnimVisualTask(taskId);
return;
}
diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c
index e86b9359c..23401b694 100755
--- a/src/battle_anim_special.c
+++ b/src/battle_anim_special.c
@@ -401,8 +401,8 @@ void unref_sub_813F0F4(u8 taskId)
LZDecompressVram(&gUnknown_08D2EDFC, subStruct.field_0);
LoadCompressedPalette(gUnknown_08D2E150, subStruct.field_8 << 4, 32);
- gBattle_BG1_X = -gSprites[spriteId3].pos1.x + 32;
- gBattle_BG1_Y = -gSprites[spriteId3].pos1.y - 32;
+ gBattle_BG1_X = -gSprites[spriteId3].x + 32;
+ gBattle_BG1_Y = -gSprites[spriteId3].y - 32;
gTasks[taskId].data[1] = 640;
gTasks[taskId].data[0] = spriteId3;
gTasks[taskId].data[2] = spriteId4;
@@ -756,9 +756,9 @@ static void sub_813FD90(struct Sprite *sprite)
{
u16 temp = sprite->data[1];
u16 temp2 = sprite->data[2];
- sprite->data[1] = sprite->pos1.x;
+ sprite->data[1] = sprite->x;
sprite->data[2] = temp;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[3] = sprite->y;
sprite->data[4] = temp2;
sprite->data[5] = -40;
InitAnimArcTranslation(sprite);
@@ -780,10 +780,10 @@ static void sub_813FDC0(struct Sprite *sprite)
else
{
StartSpriteAnim(sprite, 1);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
for (i = 0; i < 8; i++)
{
@@ -799,7 +799,7 @@ static void sub_813FDC0(struct Sprite *sprite)
if (ballIndex2 < 0)
return;
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballIndex);
sub_8141314(0, gBattleAnimTarget, 14, ballIndex);
}
}
@@ -832,7 +832,7 @@ static void sub_813FEC8(struct Sprite *sprite)
PrepareBattlerSpriteForRotScale(spriteId, 0);
gTasks[taskId].data[10] = 256;
gUnknown_03005F0C = 28;
- gUnknown_03005F14 = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
+ gUnknown_03005F14 = (gSprites[spriteId].y + gSprites[spriteId].y2) - (sprite->y + sprite->y2);
gUnknown_03005F10 = (u32)(gUnknown_03005F14 * 256) / 28;
gTasks[taskId].data[2] = gUnknown_03005F10;
gTasks[taskId].data[0]++;
@@ -841,7 +841,7 @@ static void sub_813FEC8(struct Sprite *sprite)
gTasks[taskId].data[10] += 0x20;
obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
gTasks[taskId].data[3] += gTasks[taskId].data[2];
- gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8;
+ gSprites[spriteId].y2 = -gTasks[taskId].data[3] >> 8;
if (gTasks[taskId].data[10] >= 0x480)
gTasks[taskId].data[0]++;
break;
@@ -872,8 +872,8 @@ static void sub_8140014(struct Sprite *sprite)
sprite->data[4] = 32;
sprite->data[5] = 0;
angle = 0;
- sprite->pos1.y += Cos(angle, 32);
- sprite->pos2.y = -Cos(angle, sprite->data[4]);
+ sprite->y += Cos(angle, 32);
+ sprite->y2 = -Cos(angle, sprite->data[4]);
sprite->callback = sub_8140058;
}
}
@@ -888,7 +888,7 @@ static void sub_8140058(struct Sprite *sprite)
switch (sprite->data[3] & 0xFF)
{
case 0:
- sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->y2 = -Cos(sprite->data[5], sprite->data[4]);
sprite->data[5] += (sprite->data[3] >> 8) + 4;
if (sprite->data[5] >= 64)
{
@@ -918,7 +918,7 @@ static void sub_8140058(struct Sprite *sprite)
}
break;
case 1:
- sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->y2 = -Cos(sprite->data[5], sprite->data[4]);
sprite->data[5] -= (sprite->data[3] >> 8) + 4;
if (sprite->data[5] <= 0)
{
@@ -931,8 +931,8 @@ static void sub_8140058(struct Sprite *sprite)
if (lastBounce)
{
sprite->data[3] = 0;
- sprite->pos1.y += Cos(64, 32);
- sprite->pos2.y = 0;
+ sprite->y += Cos(64, 32);
+ sprite->y2 = 0;
if (ewram17840.unk8 == 0)
{
sprite->data[5] = 0;
@@ -970,7 +970,7 @@ static void sub_81401A0(struct Sprite *sprite)
case 0:
if ((s16)ewram17840.unkC > 0xFF)
{
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
ewram17840.unkC &= 0xFF;
}
else
@@ -1008,7 +1008,7 @@ static void sub_81401A0(struct Sprite *sprite)
case 2:
if ((s16)ewram17840.unkC > 0xFF)
{
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
ewram17840.unkC &= 0xFF;
}
else
@@ -1045,7 +1045,7 @@ static void sub_81401A0(struct Sprite *sprite)
case 4:
if ((s16)ewram17840.unkC > 0xFF)
{
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
ewram17840.unkC &= 0xFF;
}
else
@@ -1219,7 +1219,7 @@ static void sub_81405F4(struct Sprite *sprite)
if (ballIndex2 < 0)
goto LABEL;
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballIndex);
sub_8141314(1, gBattleAnimTarget, 14, ballIndex);
LABEL:
@@ -1244,12 +1244,12 @@ static void sub_81406BC(struct Sprite *sprite)
else
{
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288;
- gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].y2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8;
}
if (sprite->animEnded && next)
{
- gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0;
+ gSprites[gBattlerSpriteIds[gBattleAnimTarget]].y2 = 0;
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = ewram17840.unk9_1;
sprite->data[0] = 0;
sprite->callback = sub_81405C8;
@@ -1262,10 +1262,10 @@ static void sub_81407B8(struct Sprite *sprite)
{
int i;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
for (i = 0; i < 6; i++)
sprite->data[i] = 0;
@@ -1276,13 +1276,13 @@ static void sub_81407F4(struct Sprite *sprite)
{
s16 var0 = sprite->data[0] + 0x800;
s16 var1 = sprite->data[1] + 0x680;
- sprite->pos2.x -= var1 >> 8;
- sprite->pos2.y += var0 >> 8;
+ sprite->x2 -= var1 >> 8;
+ sprite->y2 += var0 >> 8;
sprite->data[0] = (sprite->data[0] + 0x800) & 0xFF;
sprite->data[1] = (sprite->data[1] + 0x680) & 0xFF;
- if (sprite->pos1.y + sprite->pos2.y > 160
- || sprite->pos1.x + sprite->pos2.x < -8)
+ if (sprite->y + sprite->y2 > 160
+ || sprite->x + sprite->x2 < -8)
{
sprite->data[0] = 0;
sprite->callback = sub_81405C8;
@@ -1361,8 +1361,8 @@ static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite)
static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[1]);
sprite->data[1] += 2;
if (sprite->data[1] == 50)
DestroyBallOpenAnimationParticle(sprite);
@@ -1521,8 +1521,8 @@ void GreatBallOpenParticleAnimation(u8 taskId)
static void FanOutBallOpenParticles_Step1(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[2]);
sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF;
sprite->data[1] += sprite->data[5];
sprite->data[2] += sprite->data[6];
@@ -1557,8 +1557,8 @@ void RepeatBallOpenParticleAnimation(u8 taskId)
static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
sprite->data[1]++;
sprite->data[2]++;
@@ -1633,8 +1633,8 @@ void PremierBallOpenParticleAnimation(u8 taskId)
static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
sprite->data[0] = (sprite->data[0] + 10) & 0xFF;
sprite->data[1]++;
sprite->data[2]++;
@@ -1759,12 +1759,12 @@ void sub_814151C(u8 taskId)
gTasks[taskId].data[11] = gBattleAnimArgs[0];
gTasks[taskId].data[0] += 0x500;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8;
else
- gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8;
gTasks[taskId].data[0] &= 0xFF;
- x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32;
+ x = gSprites[spriteId].x + gSprites[spriteId].x2 + 32;
if (x > 304)
gTasks[taskId].data[10]++;
break;
@@ -1775,25 +1775,25 @@ void sub_814151C(u8 taskId)
case 2:
gTasks[taskId].data[0] += 0x500;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
- gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 -= gTasks[taskId].data[0] >> 8;
else
- gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+ gSprites[spriteId].x2 += gTasks[taskId].data[0] >> 8;
gTasks[taskId].data[0] &= 0xFF;
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
{
- if (gSprites[spriteId].pos2.x <= 0)
+ if (gSprites[spriteId].x2 <= 0)
{
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 = 0;
// done = FALSE; // fakematching--can't get the tail merge correct
goto DONE;
}
}
else
{
- if (gSprites[spriteId].pos2.x >= 0)
+ if (gSprites[spriteId].x2 >= 0)
{
- gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].x2 = 0;
done = TRUE;
}
}
@@ -1843,7 +1843,7 @@ void sub_81416C4(u8 taskId)
void sub_81417D8(u8 taskId)
{
- gBattleAnimArgs[7] = ewram17800[gBattleAnimAttacker].substituteSprite;
+ gBattleAnimArgs[7] = gBattleSpriteInfo[gBattleAnimAttacker].substituteSprite;
DestroyAnimVisualTask(taskId);
}
@@ -1940,8 +1940,8 @@ static void sub_814191C(u8 taskId)
else
{
gSprites[spriteId].callback = sub_8141B74;
- gSprites[spriteId].pos2.x = -32;
- gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].x2 = -32;
+ gSprites[spriteId].y2 = 32;
gSprites[spriteId].invisible = TRUE;
if (gTasks[taskId].data[11] == 0)
{
@@ -1979,8 +1979,8 @@ static void sub_8141AD8(u8 taskId)
static void sub_8141B20(struct Sprite *sprite)
{
- sprite->pos2.x = Sin(sprite->data[1], 24);
- sprite->pos2.y = Cos(sprite->data[1], 24);
+ sprite->x2 = Sin(sprite->data[1], 24);
+ sprite->y2 = Cos(sprite->data[1], 24);
sprite->data[1] += 12;
if (sprite->data[1] > 0xFF)
{
@@ -1999,9 +1999,9 @@ static void sub_8141B74(struct Sprite *sprite)
else
{
sprite->invisible = FALSE;
- sprite->pos2.x += 5;
- sprite->pos2.y -= 5;
- if (sprite->pos2.x > 32)
+ sprite->x2 += 5;
+ sprite->y2 -= 5;
+ if (sprite->x2 > 32)
{
gTasks[sprite->data[0]].data[12]--;
FreeSpriteOamMatrix(sprite);
diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c
index c51c0f8d3..9f90365cf 100644
--- a/src/battle_anim_status_effects.c
+++ b/src/battle_anim_status_effects.c
@@ -85,7 +85,7 @@ u8 unref_sub_807B69C(u8 a, u8 b)
gTasks[taskId].data[1] = 0x1F;
for (i = 0; i < 10; i++)
{
- spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y + 32, 0);
+ spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].x, gSprites[spriteId1].y + 32, 0);
gSprites[spriteId2].data[0] = i * 51;
gSprites[spriteId2].data[1] = -256;
gSprites[spriteId2].invisible = TRUE;
@@ -98,7 +98,7 @@ u8 unref_sub_807B69C(u8 a, u8 b)
gTasks[taskId].data[1] = 0x7C00;
for (i = 0; i < 10; i++)
{
- spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y - 32, 0);
+ spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].x, gSprites[spriteId1].y - 32, 0);
gSprites[spriteId2].data[0] = i * 51;
gSprites[spriteId2].data[1] = 256;
gSprites[spriteId2].invisible = TRUE;
@@ -159,15 +159,15 @@ static void sub_807B870(struct Sprite *sprite)
static void sub_807B8A4(struct Sprite *sprite)
{
- sprite->pos2.x = Cos(sprite->data[0], 32);
- sprite->pos2.y = Sin(sprite->data[0], 8);
+ sprite->x2 = Cos(sprite->data[0], 32);
+ sprite->y2 = Sin(sprite->data[0], 8);
if (sprite->data[0] < 128)
sprite->subpriority = 29;
else
sprite->subpriority = 31;
sprite->data[0] = (sprite->data[0] + 8) & 0xFF;
sprite->data[5] += sprite->data[1];
- sprite->pos2.y += sprite->data[5] >> 8;
+ sprite->y2 += sprite->data[5] >> 8;
sprite->data[2]++;
if (sprite->data[2] == 52)
{
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 6aa22edf6..e3b890f0d 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -19,7 +19,7 @@
extern u16 gBattleTypeFlags;
extern u8 gBattleOutcome;
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern u8 BattleText_Win[];
extern u8 BattleText_Loss[];
@@ -247,9 +247,9 @@ void sub_800D6D4(void)
void ApplyPlayerChosenFrameToBattleMenu(void)
{
TextWindow_SetBaseTileNum(0x12);
- TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gWindowTemplate_Contest_MoveDescription, 1);
TextWindow_SetBaseTileNum(0x22);
- TextWindow_LoadStdFrameGraphicsOverridePal(&gUnknown_03004210, 1);
+ TextWindow_LoadStdFrameGraphicsOverridePal(&gWindowTemplate_Contest_MoveDescription, 1);
gPlttBufferUnfaded[92] = 0x7fe0;
gPlttBufferUnfaded[93] = 0x2529;
gPlttBufferUnfaded[94] = 0x7fff;
@@ -416,7 +416,7 @@ static void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
}
CpuSet(src, dest, 3);
} else {
- if (windowId == gBattleStruct->linkPlayerIndex) {
+ if (windowId == gBattleStruct->multiplayerId) {
r4 = gTasks[taskId].data[3];
} else {
r4 = gTasks[taskId].data[4];
@@ -444,8 +444,8 @@ static void sub_800DAF8(u8 taskId, u8 windowId, u8 *dest)
#define PRINT_MESSAGE(text, tileDataStartOffset, x) \
{ \
- Text_InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \
- Text_PrintWindow8002F44(&gUnknown_03004210); \
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, text, tileDataStartOffset, x, MESSAGE_Y); \
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription); \
}
#define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X)
@@ -468,7 +468,7 @@ static void PrintLinkBattleWinLossTie(void)
{
// id = player position?
- switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].id)
+ switch (gLinkPlayers[gBattleStruct->multiplayerId].id)
{
case 0:
case 2:
@@ -486,7 +486,7 @@ static void PrintLinkBattleWinLossTie(void)
else
{
- switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].id)
+ switch (gLinkPlayers[gBattleStruct->multiplayerId].id)
{
case 1:
case 3:
@@ -508,7 +508,7 @@ static void PrintLinkBattleWinLossTie(void)
if (gBattleOutcome == 1)
{
- if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id != 0)
+ if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0)
{
PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN);
PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS);
@@ -521,7 +521,7 @@ static void PrintLinkBattleWinLossTie(void)
}
else
{
- if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id != 0)
+ if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0)
{
PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN);
PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS);
@@ -535,7 +535,7 @@ static void PrintLinkBattleWinLossTie(void)
}
-void sub_800DE30(u8 taskId)
+void InitLinkBattleVsScreen(u8 taskId)
{
u8 palette;
int i;
@@ -559,11 +559,11 @@ void sub_800DE30(u8 taskId)
} else {
u8 windowId = 4;
- u8 playerId = gBattleStruct->linkPlayerIndex;
- u8 opponentId = gBattleStruct->linkPlayerIndex ^ 1;
+ u8 playerId = gBattleStruct->multiplayerId;
+ u8 opponentId = gBattleStruct->multiplayerId ^ 1;
if (gLinkPlayers[playerId].id) {
- opponentId = gBattleStruct->linkPlayerIndex;
- playerId = gBattleStruct->linkPlayerIndex ^ 1;
+ opponentId = gBattleStruct->multiplayerId;
+ playerId = gBattleStruct->multiplayerId ^ 1;
}
Text_InitWindow8002E4C(
@@ -592,10 +592,10 @@ void sub_800DE30(u8 taskId)
case 1:
palette = AllocSpritePalette(10000);
gPlttBufferUnfaded[palette * 16 + 0x10f] = gPlttBufferFaded[palette * 16 + 0x10f] = 0x7fff;
- gBattleStruct->unk1608A = CreateSprite(&gSpriteTemplate_81F9574, 108, 80, 0);
- gBattleStruct->unk1608B = CreateSprite(&gSpriteTemplate_81F958C, 132, 80, 0);
- gSprites[gBattleStruct->unk1608A].invisible = TRUE;
- gSprites[gBattleStruct->unk1608B].invisible = TRUE;
+ gBattleStruct->linkBattleVsSpriteId_V = CreateSprite(&gSpriteTemplate_81F9574, 108, 80, 0);
+ gBattleStruct->linkBattleVsSpriteId_S = CreateSprite(&gSpriteTemplate_81F958C, 132, 80, 0);
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = TRUE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].invisible = TRUE;
gTasks[taskId].data[0]++;
break;
@@ -620,15 +620,15 @@ void sub_800DE30(u8 taskId)
}
PlaySE(SE_M_HARDEN);
DestroyTask(taskId);
- gSprites[gBattleStruct->unk1608A].invisible = FALSE;
- gSprites[gBattleStruct->unk1608B].invisible = FALSE;
- gSprites[gBattleStruct->unk1608B].oam.tileNum += 0x40;
- gSprites[gBattleStruct->unk1608A].data[0] = 0;
- gSprites[gBattleStruct->unk1608B].data[0] = 1;
- gSprites[gBattleStruct->unk1608A].data[1] = gSprites[gBattleStruct->unk1608A].pos1.x;
- gSprites[gBattleStruct->unk1608B].data[1] = gSprites[gBattleStruct->unk1608B].pos1.x;
- gSprites[gBattleStruct->unk1608A].data[2] = 0;
- gSprites[gBattleStruct->unk1608B].data[2] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = FALSE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].invisible = FALSE;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.tileNum += 0x40;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[0] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[0] = 1;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_V].x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[1] = gSprites[gBattleStruct->linkBattleVsSpriteId_S].x;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].data[2] = 0;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].data[2] = 0;
}
break;
}
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index d781599e9..abcfcce27 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -44,11 +44,11 @@ extern void (*gAnimScriptCallback)(void);
extern u8 gDisplayedStringBattle[];
extern bool8 gDoingBattleAnim;
extern u8 gBattleOutcome;
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gUnknown_02024E68[];
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u8 gAnimMoveTurn;
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern u8 gUnknown_0300434C[];
extern u32 gBattleControllerExecFlags;
extern MainCallback gPreBattleCallback1;
@@ -374,7 +374,7 @@ void sub_8037840(void)
void sub_8037A74(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
- && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
{
if (!ewram17810[gActiveBattler].unk0_7)
{
@@ -427,7 +427,7 @@ void sub_8037BBC(void)
void sub_8037C2C(void)
{
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
LinkOpponentBufferExecCompleted();
}
@@ -454,7 +454,7 @@ void sub_8037CC0(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
gBattlerControllerFuncs[gActiveBattler] = sub_8037D2C;
}
@@ -519,7 +519,7 @@ void sub_8037F34(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- sub_800832C();
+ SetCloseLinkCallback();
gBattlerControllerFuncs[gActiveBattler] = sub_8037EF0;
}
else
@@ -1148,11 +1148,11 @@ void LinkOpponentHandleLoadPokeSprite(void)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
sub_8077F68(gActiveBattler),
GetBattlerSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
@@ -1178,7 +1178,7 @@ void sub_8039430(u8 a, u8 b)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
gBattlerSpriteIds[a] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(a, 2),
sub_8077F68(a),
GetBattlerSubpriority(a));
@@ -1214,7 +1214,7 @@ void sub_8039648(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4 = 1;
break;
@@ -1250,10 +1250,10 @@ void LinkOpponentHandleTrainerThrow(void)
sub_8031A6C(gender, gActiveBattler);
GetMonSpriteTemplate_803C5A0(gender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
176 + xOffset, 40 + 4 * (8 - gTrainerFrontPicCoords[gender].coords),
GetBattlerSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
@@ -1273,7 +1273,7 @@ void LinkOpponentHandleTrainerSlideBack(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_80375B4;
@@ -1283,7 +1283,7 @@ void LinkOpponentHandlecmd10(void)
{
if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4++;
}
@@ -1358,9 +1358,9 @@ void sub_8039B64(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite && !ewram17800[gActiveBattler].unk0_3)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite && !gBattleSpriteInfo[gActiveBattler].flag_x8)
{
- ewram17800[gActiveBattler].unk0_3 = 1;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 1;
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
ewram17810[gActiveBattler].unk4 = 1;
@@ -1378,10 +1378,10 @@ void sub_8039B64(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBattler].substituteSprite) && r7 <= 1)
+ if ((gBattleSpriteInfo[gActiveBattler].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
- ewram17800[gActiveBattler].unk0_3 = 0;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 0;
}
ewram17810[gActiveBattler].unk4 = 3;
}
@@ -1405,7 +1405,7 @@ void LinkOpponentHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gBattlerControllerFuncs[gActiveBattler] = sub_8037C2C;
}
@@ -1613,7 +1613,7 @@ void LinkOpponentHandleFaintingCry(void)
void LinkOpponentHandleIntroSlide(void)
{
StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
- gUnknown_02024DE8 |= 1;
+ gIntroSlideFlags |= 1;
LinkOpponentBufferExecCompleted();
}
@@ -1624,7 +1624,7 @@ void LinkOpponentHandleTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_803A3A8);
taskId = CreateTask(sub_803A2C4, 5);
@@ -1691,7 +1691,7 @@ void LinkOpponentHandlecmd48(void)
}
gUnknown_02024E68[gActiveBattler] = sub_8044804(
gActiveBattler,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4],
+ (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4],
gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2]);
ewram17810[gActiveBattler].unk5 = 0;
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 67c46c59d..9217db81f 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -38,17 +38,17 @@ extern u32 gBattleControllerExecFlags;
extern u16 gBattlerPartyIndexes[];
extern u8 gBattlerSpriteIds[];
extern u8 gBattleOutcome;
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gUnknown_02024E68[];
extern u8 gDoingBattleAnim;
extern u32 gTransformedPersonalities[];
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern s32 gAnimMoveDmg;
extern u16 gAnimMovePower;
extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern u8 gAnimMoveTurn;
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern MainCallback gPreBattleCallback1;
extern void (*gBattlerControllerFuncs[])(void);
extern u8 gHealthboxSpriteIds[];
@@ -322,7 +322,7 @@ void sub_811DCA0(void)
void sub_811DDE8(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded
- && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
LinkPartnerBufferExecCompleted();
}
@@ -345,7 +345,7 @@ void bx_t3_healthbar_update(void)
void sub_811DE98(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > 160)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > 160)
{
nullsub_9(GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
@@ -368,7 +368,7 @@ void sub_811DF34(void)
void sub_811DFA0(void)
{
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
LinkPartnerBufferExecCompleted();
}
@@ -396,7 +396,7 @@ void sub_811E034(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
gBattlerControllerFuncs[gActiveBattler] = sub_811E0A0;
}
@@ -456,7 +456,7 @@ void sub_811E29C(void)
{
if (gBattleTypeFlags & 2)
{
- sub_800832C();
+ SetCloseLinkCallback();
gBattlerControllerFuncs[gActiveBattler] = sub_811E258;
}
else
@@ -1088,11 +1088,11 @@ void LinkPartnerHandleLoadPokeSprite(void)
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES),
GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
sub_8077F68(gActiveBattler),
GetBattlerSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
@@ -1118,7 +1118,7 @@ void sub_811F864(u8 a, u8 b)
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
gBattlerSpriteIds[a] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(a, 2),
sub_8077F68(a),
GetBattlerSubpriority(a));
@@ -1153,7 +1153,7 @@ void sub_811FA5C(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4 = 1;
break;
@@ -1189,11 +1189,11 @@ void LinkPartnerHandleTrainerThrow(void)
LoadPlayerTrainerBankSprite(gender, gActiveBattler);
GetMonSpriteTemplate_803C5A0(gender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords),
GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
gBattlerControllerFuncs[gActiveBattler] = sub_811DAE4;
@@ -1209,7 +1209,7 @@ void LinkPartnerHandleTrainerSlideBack(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_811DB1C;
@@ -1219,7 +1219,7 @@ void LinkPartnerHandlecmd10(void)
{
if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4++;
}
@@ -1294,9 +1294,9 @@ void sub_811FF30(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite && !ewram17800[gActiveBattler].unk0_3)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite && !gBattleSpriteInfo[gActiveBattler].flag_x8)
{
- ewram17800[gActiveBattler].unk0_3 = 1;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 1;
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
ewram17810[gActiveBattler].unk4 = 1;
@@ -1314,10 +1314,10 @@ void sub_811FF30(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBattler].substituteSprite) && r7 <= 1)
+ if ((gBattleSpriteInfo[gActiveBattler].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
- ewram17800[gActiveBattler].unk0_3 = 0;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 0;
}
ewram17810[gActiveBattler].unk4 = 3;
}
@@ -1341,7 +1341,7 @@ void LinkPartnerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gBattlerControllerFuncs[gActiveBattler] = sub_811DFA0;
}
@@ -1549,7 +1549,7 @@ void LinkPartnerHandleFaintingCry(void)
void LinkPartnerHandleIntroSlide(void)
{
StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
- gUnknown_02024DE8 |= 1;
+ gIntroSlideFlags |= 1;
LinkPartnerBufferExecCompleted();
}
@@ -1561,7 +1561,7 @@ void LinkPartnerHandleTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8030E38);
@@ -1622,7 +1622,7 @@ void LinkPartnerHandlecmd48(void)
ewram17810[gActiveBattler].unk0_0 = 1;
gUnknown_02024E68[gActiveBattler] = sub_8044804(
gActiveBattler,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4],
+ (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4],
gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2]);
ewram17810[gActiveBattler].unk5 = 0;
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index b3685806d..b50a7718a 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -25,6 +25,7 @@
#include "text.h"
#include "util.h"
#include "ewram.h"
+#include "constants/moves.h"
struct MovePpInfo
{
@@ -39,7 +40,7 @@ extern u8 gBattleBufferA[][0x200];
extern u16 gBattlerPartyIndexes[];
extern u8 gBattlerSpriteIds[];
extern u8 gBattleMonForms[];
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern void (*gBattlerControllerFuncs[])(void);
extern u8 gUnknown_0300434C[];
extern u8 gHealthboxSpriteIds[];
@@ -53,12 +54,12 @@ extern u32 gTransformedPersonalities[];
extern u8 gAnimMoveTurn;
extern u8 gAnimScriptActive;
extern void (*gAnimScriptCallback)(void);
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern u8 gDisplayedStringBattle[];
extern u8 gBattlerTarget;
extern u8 gAbsentBattlerFlags;
extern bool8 gDoingBattleAnim;
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gUnknown_02024E68[];
extern MainCallback gPreBattleCallback1;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
@@ -379,7 +380,7 @@ void sub_8032E2C(void)
void sub_8033018(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
- && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
{
if (!ewram17810[gActiveBattler].unk0_7)
{
@@ -432,7 +433,7 @@ void sub_8033160(void)
void sub_80331D0(void)
{
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
OpponentBufferExecCompleted();
}
@@ -459,7 +460,7 @@ void sub_8033264(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
gBattlerControllerFuncs[gActiveBattler] = sub_80332D0;
}
@@ -1119,11 +1120,11 @@ void OpponentHandleLoadPokeSprite(void)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
sub_8077F68(gActiveBattler),
GetBattlerSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1151,7 +1152,7 @@ void sub_803495C(u8 a, u8 b)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(a));
gBattlerSpriteIds[a] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(a, 2),
sub_8077F68(a),
GetBattlerSubpriority(a));
@@ -1187,7 +1188,7 @@ void sub_8034B74(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4 = 1;
break;
@@ -1209,7 +1210,7 @@ void OpponentHandleTrainerThrow(void)
#if DEBUG
if (gUnknown_02023A14_50 & 0x10)
{
- trainerPicIndex = gSharedMem[0x160A3];
+ trainerPicIndex = gSharedMem[BSTRUCT_OFF(unk160A3)];
}
else
#endif
@@ -1227,11 +1228,11 @@ void OpponentHandleTrainerThrow(void)
sub_8031A6C(trainerPicIndex, gActiveBattler);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
GetBattlerSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
@@ -1257,12 +1258,12 @@ void OpponentHandleTrainerSlide(void)
sub_8031A6C(trainerPicIndex, gActiveBattler);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
0x1E);
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x += 32;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum;
@@ -1277,7 +1278,7 @@ void OpponentHandleTrainerSlideBack(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattlerControllerFuncs[gActiveBattler] = sub_8032BBC;
@@ -1287,7 +1288,7 @@ void OpponentHandlecmd10(void)
{
if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4++;
}
@@ -1362,9 +1363,9 @@ void sub_8035238(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite && !ewram17800[gActiveBattler].unk0_3)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite && !gBattleSpriteInfo[gActiveBattler].flag_x8)
{
- ewram17800[gActiveBattler].unk0_3 = 1;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 1;
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
ewram17810[gActiveBattler].unk4 = 1;
@@ -1382,10 +1383,10 @@ void sub_8035238(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBattler].substituteSprite) && r7 <= 1)
+ if ((gBattleSpriteInfo[gActiveBattler].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
- ewram17800[gActiveBattler].unk0_3 = 0;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 0;
}
ewram17810[gActiveBattler].unk4 = 3;
}
@@ -1409,7 +1410,7 @@ void OpponentHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gBattlerControllerFuncs[gActiveBattler] = sub_80331D0;
}
@@ -1429,325 +1430,65 @@ void OpponentHandlecmd19(void)
OpponentBufferExecCompleted();
}
-struct ChooseMoveStruct
-{
- u16 moves[4];
-};
-
-#if DEBUG
-NAKED
-void OpponentHandlecmd20(void)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- mov r7, sl\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5, r6, r7}\n\
- ldr r6, ._549 @ gActiveBattler\n\
- ldrb r0, [r6]\n\
- lsl r0, r0, #0x9\n\
- ldr r1, ._549 + 4 @ gBattleBufferA\n\
- add r5, r0, r1\n\
- ldr r2, ._549 + 8 @ gUnknown_02023A14_50\n\
- ldrb r1, [r2]\n\
- mov r0, #0x4\n\
- and r0, r0, r1\n\
- mov sl, r6\n\
- cmp r0, #0\n\
- beq ._546 @cond_branch\n\
- ldr r0, ._549 + 12 @ gBattleMoves\n\
- mov r9, r0\n\
- ldr r1, ._549 + 16 @ \n\
- mov ip, r1\n\
- add r7, r6, #0\n\
- mov r0, #0x2\n\
- mov r8, r0\n\
- ldr r6, ._549 + 20 @ \n\
-._552:\n\
- ldrb r1, [r7]\n\
- mov r0, r8\n\
- and r0, r0, r1\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x19\n\
- add r0, r0, r6\n\
- mov r1, ip\n\
- add r3, r0, r1\n\
- ldrb r1, [r3]\n\
- lsl r0, r1, #0x1\n\
- add r0, r5, r0\n\
- ldrh r2, [r0]\n\
- add r4, r1, #0\n\
- cmp r2, #0\n\
- beq ._547 @cond_branch\n\
- add r0, r4, #1\n\
- strb r0, [r3]\n\
- b ._548\n\
-._550:\n\
- .align 2, 0\n\
-._549:\n\
- .word gActiveBattler\n\
- .word gBattleBufferA+4\n\
- .word gUnknown_02023A14_50\n\
- .word gBattleMoves\n\
- .word +0x2000000\n\
- .word 0x1609e\n\
-._547:\n\
- strb r2, [r3]\n\
-._548:\n\
- ldrb r0, [r7]\n\
- mov r1, r8\n\
- and r1, r1, r0\n\
- lsl r1, r1, #0x18\n\
- lsr r1, r1, #0x19\n\
- add r1, r1, r6\n\
- add r1, r1, ip\n\
- ldrb r0, [r1]\n\
- cmp r0, #0x3\n\
- bls ._551 @cond_branch\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
-._551:\n\
- cmp r2, #0\n\
- beq ._552 @cond_branch\n\
- lsl r0, r2, #0x1\n\
- add r0, r0, r2\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r9\n\
- ldrb r3, [r0, #0x6]\n\
- mov r0, #0x12\n\
- and r0, r0, r3\n\
- cmp r0, #0\n\
- beq ._553 @cond_branch\n\
- mov r1, sl\n\
- ldrb r0, [r1]\n\
- b ._561\n\
-._553:\n\
- ldr r0, ._559 @ gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- mov r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._557 @cond_branch\n\
- ldr r0, ._559 + 4 @ gUnknown_02023A14_50\n\
- ldrb r1, [r0]\n\
- mov r5, #0x2\n\
- add r0, r5, #0\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._556 @cond_branch\n\
- cmp r3, #0\n\
- bne ._557 @cond_branch\n\
- mov r1, sl\n\
- ldrb r0, [r1]\n\
- bl GetBattlerPosition\n\
- mov r1, #0x2\n\
- eor r0, r0, r1\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- b ._558\n\
-._560:\n\
- .align 2, 0\n\
-._559:\n\
- .word gBattleTypeFlags\n\
- .word gUnknown_02023A14_50\n\
-._556:\n\
- bl Random\n\
- add r1, r5, #0\n\
- and r1, r1, r0\n\
- lsl r1, r1, #0x10\n\
- lsr r0, r1, #0x10\n\
- b ._561\n\
-._557:\n\
- mov r0, #0x0\n\
-._558:\n\
- bl GetBattlerAtPosition\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
-._561:\n\
- lsl r2, r0, #0x8\n\
- orr r2, r2, r4\n\
- mov r0, #0x1\n\
- mov r1, #0xa\n\
-._569:\n\
- bl BtlController_EmitTwoReturnValues\n\
-._573:\n\
- bl OpponentBufferExecCompleted\n\
- b ._562\n\
-._546:\n\
- ldr r0, ._567 @ gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- mov r0, #0x93\n\
- lsl r0, r0, #0x3\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._563 @cond_branch\n\
- bl BattleAI_SetupAIData\n\
- bl BattleAI_GetAIActionToUse\n\
- lsl r0, r0, #0x18\n\
- lsr r4, r0, #0x18\n\
- cmp r4, #0x4\n\
- beq ._564 @cond_branch\n\
- cmp r4, #0x5\n\
- bne ._565 @cond_branch\n\
- mov r0, #0x1\n\
- mov r1, #0x4\n\
- b ._566\n\
-._568:\n\
- .align 2, 0\n\
-._567:\n\
- .word gBattleTypeFlags\n\
-._564:\n\
- mov r0, #0x1\n\
- mov r1, #0x3\n\
-._566:\n\
- mov r2, #0x0\n\
- b ._569\n\
-._565:\n\
- ldr r3, ._574 @ gBattleMoves\n\
- lsl r0, r4, #0x1\n\
- add r2, r5, r0\n\
- ldrh r1, [r2]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r3\n\
- ldrb r1, [r0, #0x6]\n\
- mov r0, #0x12\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._570 @cond_branch\n\
- ldr r1, ._574 + 4 @ gBattlerTarget\n\
- ldrb r0, [r6]\n\
- strb r0, [r1]\n\
-._570:\n\
- ldrh r1, [r2]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r3\n\
- ldrb r1, [r0, #0x6]\n\
- mov r0, #0x8\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._572 @cond_branch\n\
- mov r0, #0x0\n\
- bl GetBattlerAtPosition\n\
- ldr r5, ._574 + 4 @ gBattlerTarget\n\
- strb r0, [r5]\n\
- ldr r0, ._574 + 8 @ gAbsentBattlerFlags\n\
- ldrb r1, [r0]\n\
- ldr r2, ._574 + 12 @ gBitTable\n\
- ldrb r0, [r5]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r2\n\
- ldr r0, [r0]\n\
- and r1, r1, r0\n\
- cmp r1, #0\n\
- beq ._572 @cond_branch\n\
- mov r0, #0x2\n\
- bl GetBattlerAtPosition\n\
- strb r0, [r5]\n\
-._572:\n\
- ldr r0, ._574 + 4 @ gBattlerTarget\n\
- ldrb r2, [r0]\n\
- lsl r2, r2, #0x8\n\
- orr r2, r2, r4\n\
- mov r0, #0x1\n\
- mov r1, #0xa\n\
- bl BtlController_EmitTwoReturnValues\n\
- b ._573\n\
-._575:\n\
- .align 2, 0\n\
-._574:\n\
- .word gBattleMoves\n\
- .word gBattlerTarget\n\
- .word gAbsentBattlerFlags\n\
- .word gBitTable\n\
-._563:\n\
- mov r6, #0x3\n\
-._576:\n\
- bl Random\n\
- add r4, r0, #0\n\
- and r4, r4, r6\n\
- lsl r0, r4, #0x1\n\
- add r0, r5, r0\n\
- ldrh r2, [r0]\n\
- cmp r2, #0\n\
- beq ._576 @cond_branch\n\
- ldr r1, ._579 @ gBattleMoves\n\
- lsl r0, r2, #0x1\n\
- add r0, r0, r2\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r1\n\
- ldrb r1, [r0, #0x6]\n\
- mov r0, #0x12\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._577 @cond_branch\n\
- ldr r0, ._579 + 4 @ gActiveBattler\n\
- ldrb r2, [r0]\n\
- lsl r2, r2, #0x8\n\
- b ._578\n\
-._580:\n\
- .align 2, 0\n\
-._579:\n\
- .word gBattleMoves\n\
- .word gActiveBattler\n\
-._577:\n\
- ldr r0, ._583 @ gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- mov r0, #0x1\n\
- and r0, r0, r1\n\
- cmp r0, #0\n\
- beq ._581 @cond_branch\n\
- bl Random\n\
- mov r1, #0x2\n\
- and r1, r1, r0\n\
- lsl r1, r1, #0x18\n\
- lsr r1, r1, #0x18\n\
- add r0, r1, #0\n\
- bl GetBattlerAtPosition\n\
- add r2, r0, #0\n\
- lsl r2, r2, #0x18\n\
- lsr r2, r2, #0x10\n\
-._578:\n\
- orr r2, r2, r4\n\
- mov r0, #0x1\n\
- mov r1, #0xa\n\
- bl BtlController_EmitTwoReturnValues\n\
- b ._582\n\
-._584:\n\
- .align 2, 0\n\
-._583:\n\
- .word gBattleTypeFlags\n\
-._581:\n\
- mov r0, #0x0\n\
- bl GetBattlerAtPosition\n\
- add r2, r0, #0\n\
- lsl r2, r2, #0x18\n\
- lsr r2, r2, #0x10\n\
- orr r2, r2, r4\n\
- mov r0, #0x1\n\
- mov r1, #0xa\n\
- bl BtlController_EmitTwoReturnValues\n\
-._582:\n\
- bl OpponentBufferExecCompleted\n\
-._562:\n\
- pop {r3, r4, r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov sl, r5\n\
- pop {r4, r5, r6, r7}\n\
- pop {r0}\n\
- bx r0");
-}
-#else
void OpponentHandlecmd20(void)
{
u8 chosenMoveId;
+ u16 move;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)&gBattleBufferA[gActiveBattler][4];
-
+#if DEBUG
+ u16 battler;
+ if (gUnknown_02023A14_50 & 4)
+ {
+ // Move selection cycle
+ move = MOVE_NONE;
+ while (move == MOVE_NONE)
+ {
+ move = moveInfo->moves[gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + ((gActiveBattler & BIT_FLANK) >> 1)]];
+ chosenMoveId = gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + ((gActiveBattler & BIT_FLANK) >> 1)];
+ if (move != MOVE_NONE)
+ {
+ gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + ((gActiveBattler & BIT_FLANK) >> 1)]++;
+ }
+ else
+ {
+ gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + ((gActiveBattler & BIT_FLANK) >> 1)] = 0;
+ }
+ if (gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + ((gActiveBattler & BIT_FLANK) >> 1)] >= 4)
+ {
+ gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + ((gActiveBattler & BIT_FLANK) >> 1)] = 0;
+ }
+ }
+ if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
+ {
+ battler = gActiveBattler;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gUnknown_02023A14_50 & 2)
+ {
+ if (gBattleMoves[move].target == MOVE_TARGET_SELECTED)
+ {
+ battler = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK);
+ }
+ else
+ {
+ battler = GetBattlerAtPosition(0);
+ }
+ }
+ else
+ {
+ battler = (Random() & BIT_FLANK);
+ }
+ }
+ else
+ {
+ battler = GetBattlerAtPosition(0);
+ }
+ BtlController_EmitTwoReturnValues(1, B_ACTION_EXEC_SCRIPT, (battler << 8) | chosenMoveId);
+ OpponentBufferExecCompleted();
+ }
+ else
+#endif //DEBUG
if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER))
{
BattleAI_SetupAIData();
@@ -1764,7 +1505,7 @@ void OpponentHandlecmd20(void)
default:
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
gBattlerTarget = gActiveBattler;
- if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & 8)
+ if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH)
{
gBattlerTarget = GetBattlerAtPosition(0);
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
@@ -1777,30 +1518,32 @@ void OpponentHandlecmd20(void)
}
else
{
- u16 move;
-
- do
+ while (1)
{
- // Can't for the life of me get this to match.
chosenMoveId = Random() & 3;
move = moveInfo->moves[chosenMoveId];
- } while (move == 0);
+ if (move != MOVE_NONE)
+ {
+ break;
+ }
+ }
if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
BtlController_EmitTwoReturnValues(1, B_ACTION_EXEC_SCRIPT, chosenMoveId | (gActiveBattler << 8));
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- BtlController_EmitTwoReturnValues(1, B_ACTION_EXEC_SCRIPT, chosenMoveId | (GetBattlerAtPosition(Random() & 2) << 8));
+ BtlController_EmitTwoReturnValues(1, B_ACTION_EXEC_SCRIPT, chosenMoveId | (GetBattlerAtPosition(Random() & BIT_FLANK) << 8));
else
BtlController_EmitTwoReturnValues(1, B_ACTION_EXEC_SCRIPT, chosenMoveId | (GetBattlerAtPosition(0) << 8));
OpponentBufferExecCompleted();
}
}
-#endif
void OpponentHandleOpenBag(void)
{
- // What is this?
- BtlController_EmitOneReturnValue(1, ewram160D4(gActiveBattler));
+ // The AI will only ever use an item whose ID fits in 8 bits.
+ // If you want the AI to use an item with a higher ID, uncomment the code
+ // in the line below.
+ BtlController_EmitOneReturnValue(1, gSharedMem[BSTRUCT_OFF(AI_usedItemId) + (gActiveBattler / 2) * 2]/* | (gSharedMem[BSTRUCT_OFF(AI_usedItemId) + (gActiveBattler / 2) * 2 + 1] */);
OpponentBufferExecCompleted();
}
@@ -1808,7 +1551,7 @@ void OpponentHandlecmd22(void)
{
s32 r4;
- if (ewram160C8arr(GetBattlerPosition(gActiveBattler)) == 6)
+ if (gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] == PARTY_SIZE)
{
u8 r6;
u8 r5;
@@ -1837,10 +1580,10 @@ void OpponentHandlecmd22(void)
}
else
{
- r4 = ewram160C8arr(GetBattlerPosition(gActiveBattler));
- ewram160C8arr(GetBattlerPosition(gActiveBattler)) = 6;
+ r4 = gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)];
+ gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (GetBattlerPosition(gActiveBattler) / 2)] = PARTY_SIZE;
}
- ewram16068arr(gActiveBattler) = r4;
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + gActiveBattler] = r4;
BtlController_EmitChosenMonReturnValue(1, r4, 0);
OpponentBufferExecCompleted();
}
@@ -2019,7 +1762,7 @@ void OpponentHandleFaintingCry(void)
void OpponentHandleIntroSlide(void)
{
StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
- gUnknown_02024DE8 |= 1;
+ gIntroSlideFlags |= 1;
OpponentBufferExecCompleted();
}
@@ -2030,7 +1773,7 @@ void OpponentHandleTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8035C10);
taskId = CreateTask(sub_8035C44, 5);
@@ -2097,7 +1840,7 @@ void OpponentHandlecmd48(void)
}
gUnknown_02024E68[gActiveBattler] = sub_8044804(
gActiveBattler,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4],
+ (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4],
gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2]);
ewram17810[gActiveBattler].unk5 = 0;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 772728295..a4c76992c 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -36,7 +36,7 @@ struct MovePpInfo
#define SUB_803037C_TILE_DATA_OFFSET 444
#endif
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern void (*gBattlerControllerFuncs[])(void);
@@ -64,11 +64,11 @@ extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern u32 gTransformedPersonalities[];
extern u8 gBattleMonForms[];
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gUnknown_02024E68[];
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u8 gAnimMoveTurn;
-extern u8 gUnknown_02038470[];
+extern u8 gBattlePartyCurrentOrder[];
extern u8 gUnknown_03004344;
extern u8 gUnknown_0300434C[];
@@ -76,7 +76,6 @@ extern const u8 BattleText_OtherMenu[];
extern const u8 BattleText_MenuOptions[];
extern const u8 BattleText_PP[];
-extern void sub_802C68C(void);
extern void sub_802E1B0(void);
extern void sub_802E220();
extern void sub_802E2D4();
@@ -141,7 +140,7 @@ extern u8 gAbsentBattlerFlags;
extern u8 gUnknown_03004344;
extern u8 gBattlersCount;
extern u16 gBattlerPartyIndexes[];
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern const u8 BattleText_SwitchWhich[];
extern u8 gUnknown_03004348;
extern struct BattlePokemon gBattleMons[];
@@ -151,7 +150,7 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern u8 gUnknown_0300434C[];
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F5;
-extern u8 gUnknown_02038470[];
+extern u8 gBattlePartyCurrentOrder[];
extern u16 gSpecialVar_ItemId;
extern u8 gDisplayedStringBattle[];
extern const u8 BattleText_LinkStandby[];
@@ -292,7 +291,7 @@ void (*const gPlayerBufferCommands[])(void) =
void PlayerBufferRunCommand(void);
void sub_802C2EC(void);
-void sub_802C68C(void);
+static void HandleAction_ChooseMove(void);
void sub_802CA60(void);
void sub_802D730(void);
void sub_802DA9C(u8);
@@ -358,7 +357,7 @@ void PlayerBufferRunCommand(void)
void bx_0802E404(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
PlayerBufferExecCompleted();
}
@@ -496,7 +495,7 @@ void sub_802C2EC(void)
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gUnknown_03004344]].callback = sub_8010574;
- gBattlerControllerFuncs[gActiveBattler] = sub_802C68C;
+ gBattlerControllerFuncs[gActiveBattler] = HandleAction_ChooseMove;
dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
dp11b_obj_free(gUnknown_03004344, 1);
@@ -595,21 +594,11 @@ void sub_802C2EC(void)
}
}
-struct ChooseMoveStruct
-{
- u16 moves[4];
- u8 pp[4];
- u8 unkC[0x12-0xC];
- u8 unk12;
- u8 effectStringId;
- u8 filler14[0x20-0x14];
-};
-
const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}");
void debug_sub_8030C24(void);
-void sub_802C68C(void)
+static void HandleAction_ChooseMove(void)
{
u32 r8 = 0;
#if DEBUG
@@ -624,7 +613,12 @@ void sub_802C68C(void)
PlaySE(SE_SELECT);
if (r6->moves[gMoveSelectionCursor[gActiveBattler]] == MOVE_CURSE)
- r4 = (r6->unk12 != TYPE_GHOST && (r6->effectStringId ^ 7)) ? 0x10 : 0;
+ {
+ if (r6->monType1 != TYPE_GHOST && r6->monType2 != TYPE_GHOST)
+ r4 = MOVE_TARGET_USER;
+ else
+ r4 = MOVE_TARGET_SELECTED;
+ }
else
r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBattler]]].target;
@@ -642,7 +636,7 @@ void sub_802C68C(void)
{
if (!(r4 & 0x7D))
r8++;
- if (r6->pp[gMoveSelectionCursor[gActiveBattler]] == 0)
+ if (r6->currentPp[gMoveSelectionCursor[gActiveBattler]] == 0)
{
r8 = 0;
}
@@ -739,9 +733,9 @@ void sub_802C68C(void)
else
gUnknown_03004344 = gMoveSelectionCursor[gActiveBattler] + 1;
sub_802E3B4(gUnknown_03004344, 27);
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- Text_InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_SwitchWhich, 0x290, 0x17, 0x37);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
gBattlerControllerFuncs[gActiveBattler] = sub_802CA60;
}
}
@@ -751,34 +745,34 @@ void sub_802C68C(void)
const u8 *moveName;
s32 i;
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 1, 0x37, 16, 0x3A);
moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1)];
- Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, moveName, 0x100, 2, 0x37);
ConvertIntToDecimalStringN(
gDisplayedStringBattle,
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1),
2, 3);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x110, 10, 0x37);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gString_TurnJP, 0x116, 1, 0x39);
ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x11C, 4, 0x39);
for (i = 0; i < 64; i++)
{
if (gSprites[i].inUse)
count++;
}
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x122, 8, 0x39);
count = GetTaskCount();
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x126, 11, 0x39);
for (i = 0, count = 0; i < 32; i++)
{
if (gOamMatrixAllocBitmap & (1 << i))
count++;
}
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x12A, 14, 0x39);
gBattlerControllerFuncs[gActiveBattler] = debug_sub_8030C24;
}
#endif
@@ -810,13 +804,13 @@ void sub_802CA60(void)
r9->moves[gMoveSelectionCursor[gActiveBattler]] = r9->moves[gUnknown_03004344];
r9->moves[gUnknown_03004344] = i;
- i = r9->pp[gMoveSelectionCursor[gActiveBattler]];
- r9->pp[gMoveSelectionCursor[gActiveBattler]] = r9->pp[gUnknown_03004344];
- r9->pp[gUnknown_03004344] = i;
+ i = r9->currentPp[gMoveSelectionCursor[gActiveBattler]];
+ r9->currentPp[gMoveSelectionCursor[gActiveBattler]] = r9->currentPp[gUnknown_03004344];
+ r9->currentPp[gUnknown_03004344] = i;
- i = r9->unkC[gMoveSelectionCursor[gActiveBattler]];
- r9->unkC[gMoveSelectionCursor[gActiveBattler]] = r9->unkC[gUnknown_03004344];
- r9->unkC[gUnknown_03004344] = i;
+ i = r9->maxPp[gMoveSelectionCursor[gActiveBattler]];
+ r9->maxPp[gMoveSelectionCursor[gActiveBattler]] = r9->maxPp[gUnknown_03004344];
+ r9->maxPp[gUnknown_03004344] = i;
if (gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[gMoveSelectionCursor[gActiveBattler]])
{
@@ -840,7 +834,7 @@ void sub_802CA60(void)
for (i = 0; i < 4; i++)
{
gBattleMons[gActiveBattler].moves[i] = r9->moves[i];
- gBattleMons[gActiveBattler].pp[i] = r9->pp[i];
+ gBattleMons[gActiveBattler].pp[i] = r9->currentPp[i];
}
if (!(gBattleMons[gActiveBattler].status2 & 0x200000))
{
@@ -882,12 +876,12 @@ void sub_802CA60(void)
{
sub_802E12C(gUnknown_03004344, BattleText_Format);
}
- gBattlerControllerFuncs[gActiveBattler] = sub_802C68C;
+ gBattlerControllerFuncs[gActiveBattler] = HandleAction_ChooseMove;
gMoveSelectionCursor[gActiveBattler] = gUnknown_03004344;
sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_PP, 0x290, 0x17, 0x37);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
sub_802E220();
sub_802E2D4();
}
@@ -897,10 +891,10 @@ void sub_802CA60(void)
nullsub_7(gUnknown_03004344);
sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
sub_802E12C(gMoveSelectionCursor[gActiveBattler], BattleText_Format);
- gBattlerControllerFuncs[gActiveBattler] = sub_802C68C;
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ gBattlerControllerFuncs[gActiveBattler] = HandleAction_ChooseMove;
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_PP, 0x290, 0x17, 0x37);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
sub_802E220();
sub_802E2D4();
}
@@ -975,7 +969,7 @@ void sub_802D18C(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- sub_800832C();
+ SetCloseLinkCallback();
gBattlerControllerFuncs[gActiveBattler] = sub_802D148;
}
else
@@ -1045,10 +1039,10 @@ void debug_sub_8030C24(void)
move = 1;
SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1, &move);
gBattleMons[gActiveBattler].moves[0] = move;
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 1, 0x37, 16, 0x38);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gMoveNames[move], 0x100, 2, 0x37);
ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 272, 10, 0x37);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 272, 10, 0x37);
}
break;
case L_BUTTON:
@@ -1070,10 +1064,10 @@ void debug_sub_8030C24(void)
move = 354;
SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1, &move);
gBattleMons[gActiveBattler].moves[0] = move;
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 1, 0x37, 16, 0x38);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gMoveNames[move], 0x100, 2, 0x37);
ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 272, 10, 0x37);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 272, 10, 0x37);
}
break;
case DPAD_UP:
@@ -1083,7 +1077,7 @@ void debug_sub_8030C24(void)
else
gAnimMoveTurn++;
ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 284, 4, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 284, 4, 0x39);
break;
}
@@ -1098,14 +1092,14 @@ void debug_sub_8030C24(void)
move = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i);
StringAppend(gDisplayedStringBattle, gMoveNames[move]);
Text_InitWindow(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
gDisplayedStringBattle,
0x100 + i * 16,
(i & 1) ? 10 : 2,
(i < 2) ? 0x37 : 0x39);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
- gBattlerControllerFuncs[gActiveBattler] = sub_802C68C;
+ gBattlerControllerFuncs[gActiveBattler] = HandleAction_ChooseMove;
}
}
@@ -1128,11 +1122,11 @@ void debug_sub_803107C(void)
count++;
}
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 290, 8, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 290, 8, 0x39);
count = GetTaskCount();
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 294, 11, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 294, 11, 0x39);
for (i = 0, count = 0; i < 32; i++)
{
@@ -1140,7 +1134,7 @@ void debug_sub_803107C(void)
count++;
}
ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 298, 14, 0x39);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 298, 14, 0x39);
gBattlerControllerFuncs[gActiveBattler] = debug_sub_8030C24;
}
@@ -1258,7 +1252,7 @@ void sub_802D680(void)
ewram17810[gActiveBattler].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
gBattlerControllerFuncs[gActiveBattler] = sub_802D730;
}
@@ -1317,7 +1311,7 @@ void bx_t1_healthbar_update(void)
void sub_802D90C(void)
{
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
PlayerBufferExecCompleted();
}
@@ -1481,7 +1475,7 @@ void sub_802DDC4(u8 taskId)
void sub_802DE10(void)
{
- if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
@@ -1507,7 +1501,7 @@ void sub_802DEAC(void)
// Duplicate of sub_802D90C
void sub_802DF18(void)
{
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
PlayerBufferExecCompleted();
}
@@ -1529,7 +1523,7 @@ void sub_802DF88(void)
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
if (gUnknown_0202E8F4 == 1)
- BtlController_EmitChosenMonReturnValue(1, gUnknown_0202E8F5, gUnknown_02038470);
+ BtlController_EmitChosenMonReturnValue(1, gUnknown_0202E8F5, gBattlePartyCurrentOrder);
else
BtlController_EmitChosenMonReturnValue(1, 6, NULL);
if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
@@ -1589,12 +1583,12 @@ void sub_802E12C(s32 a, const u8 *b)
StringCopy(gDisplayedStringBattle, b);
StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]);
Text_InitWindow(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
gDisplayedStringBattle,
0x300 + a * 20,
(a & 1) ? 11 : 1,
(a < 2) ? 0x37 : 0x39);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
void sub_802E1B0(void)
@@ -1603,7 +1597,7 @@ void sub_802E1B0(void)
s32 i;
gUnknown_03004348 = 0;
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 1, 0x37, 0x14, 0x3A);
for (i = 0; i < 4; i++)
{
nullsub_7(i);
@@ -1629,11 +1623,11 @@ void sub_802E220(void)
str[1] = 0x14;
str[2] = 6;
str += 3;
- str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBattler]], 1, 2);
+ str = ConvertIntToDecimalStringN(str, r4->currentPp[gMoveSelectionCursor[gActiveBattler]], 1, 2);
*str++ = CHAR_SLASH;
- ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBattler]], 1, 2);
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ ConvertIntToDecimalStringN(str, r4->maxPp[gMoveSelectionCursor[gActiveBattler]], 1, 2);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x2A2, 0x19, 0x37);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
}
@@ -1644,8 +1638,8 @@ void sub_802E2D4(void)
{
if (gBattleBufferA[gActiveBattler][2] == 1)
{
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- Text_InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_ForgetMove, 0x290, 0x13, 0x37);
}
else
{
@@ -1654,10 +1648,10 @@ void sub_802E2D4(void)
str = StringCopy(str, BattleText_Format);
StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
- Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
}
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
const u8 gUnknown_081FAE89[][2] =
@@ -1728,7 +1722,7 @@ void b_link_standby_message(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- Text_InitWindow8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, BattleText_LinkStandby, 0x90, 2, 15);
}
}
@@ -2350,7 +2344,7 @@ void sub_802F934(u8 bank, u8 b)
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(bank));
gBattlerSpriteIds[bank] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(bank, 2),
sub_8077F68(bank),
GetBattlerSubpriority(bank));
@@ -2385,7 +2379,7 @@ void sub_802FB2C(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4 = 1;
break;
@@ -2417,12 +2411,12 @@ void PlayerHandleTrainerThrow(void)
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBattler);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
r7 + 80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
gBattlerControllerFuncs[gActiveBattler] = sub_802D204;
@@ -2433,12 +2427,12 @@ void PlayerHandleTrainerSlide(void)
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBattler);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
gBattlerControllerFuncs[gActiveBattler] = sub_802D23C;
@@ -2449,7 +2443,7 @@ void PlayerHandleTrainerSlideBack(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
@@ -2460,7 +2454,7 @@ void PlayerHandlecmd10(void)
{
if (ewram17810[gActiveBattler].unk4 == 0)
{
- if (ewram17800[gActiveBattler].substituteSprite)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4++;
}
@@ -2548,9 +2542,10 @@ void sub_8030190(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite == 1 && ewram17800[gActiveBattler].unk0_3 == 0)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite == 1 &&
+ gBattleSpriteInfo[gActiveBattler].flag_x8 == 0)
{
- ewram17800[gActiveBattler].unk0_3 = 1;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 1;
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
}
ewram17810[gActiveBattler].unk4 = 1;
@@ -2568,10 +2563,10 @@ void sub_8030190(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBattler].substituteSprite == 1 && r7 < 2)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite == 1 && r7 < 2)
{
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
- ewram17800[gActiveBattler].unk0_3 = 0;
+ gBattleSpriteInfo[gActiveBattler].flag_x8 = 0;
}
ewram17810[gActiveBattler].unk4 = 3;
}
@@ -2593,7 +2588,7 @@ void PlayerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x90, 2, 15);
gBattlerControllerFuncs[gActiveBattler] = sub_802DF18;
}
@@ -2611,13 +2606,13 @@ void PlayerHandlecmd18(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- Text_FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
- Text_FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 10, 2, 15, 27, 18);
+ Text_FillWindowRect(&gWindowTemplate_Contest_MoveDescription, 10, 2, 35, 16, 38);
gBattlerControllerFuncs[gActiveBattler] = sub_802C098;
- Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_MenuOptions, 400, 18, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0);
for (r4 = 0; r4 < 4; r4++)
@@ -2626,8 +2621,8 @@ void PlayerHandlecmd18(void)
sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(BattleText_OtherMenu);
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
void PlayerHandlecmd19()
@@ -2638,7 +2633,7 @@ void PlayerHandlecmd20(void)
{
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
sub_80304A8();
- gBattlerControllerFuncs[gActiveBattler] = sub_802C68C;
+ gBattlerControllerFuncs[gActiveBattler] = HandleAction_ChooseMove;
}
void sub_80304A8(void)
@@ -2650,8 +2645,8 @@ void sub_80304A8(void)
sub_802E3B4(gMoveSelectionCursor[gActiveBattler], 0);
if (gBattleBufferA[gActiveBattler][2] != 1)
{
- Text_InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_PP, 656, 23, 55);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
sub_802E220();
sub_802E2D4();
@@ -2665,7 +2660,7 @@ void PlayerHandleOpenBag(void)
gBattlerControllerFuncs[gActiveBattler] = sub_802E004;
gBankInMenu = gActiveBattler;
for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBattler][1 + i];
+ gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][1 + i];
}
void PlayerHandlecmd22(void)
@@ -2674,11 +2669,11 @@ void PlayerHandlecmd22(void)
gUnknown_0300434C[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
gTasks[gUnknown_0300434C[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
- ewram16054 = gBattleBufferA[gActiveBattler][1] >> 4;
- EWRAM_1609D = gBattleBufferA[gActiveBattler][2];
- ewram160C0 = gBattleBufferA[gActiveBattler][3];
+ gBattleStruct->battlerPreventingSwitchout = gBattleBufferA[gActiveBattler][1] >> 4;
+ gBattleStruct->unk1609D = gBattleBufferA[gActiveBattler][2];
+ gBattleStruct->abilityPreventingSwitchout = gBattleBufferA[gActiveBattler][3];
for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBattler][4 + i];
+ gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i];
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gBattlerControllerFuncs[gActiveBattler] = sub_802DF30;
gBankInMenu = gActiveBattler;
@@ -2892,7 +2887,7 @@ void PlayerHandleFaintingCry(void)
void PlayerHandleIntroSlide(void)
{
StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
- gUnknown_02024DE8 |= 1;
+ gIntroSlideFlags |= 1;
PlayerBufferExecCompleted();
}
@@ -2904,7 +2899,7 @@ void PlayerHandleTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8030E38);
@@ -2972,7 +2967,7 @@ void PlayerHandlecmd48(void)
else
{
ewram17810[gActiveBattler].unk0_0 = 1;
- gUnknown_02024E68[gActiveBattler] = sub_8044804(gActiveBattler, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gUnknown_02024E68[gActiveBattler] = sub_8044804(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
ewram17810[gActiveBattler].unk5 = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
ewram17810[gActiveBattler].unk5 = 0x5D;
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index c015cb4cf..cf09ef164 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -15,7 +15,7 @@
#include "util.h"
#include "ewram.h"
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern u8 gDisplayedStringBattle[];
extern u8 gActionSelectionCursor[];
@@ -27,7 +27,7 @@ extern void *gBattlerControllerFuncs[];
extern u8 gBattleBufferA[][0x200];
extern bool8 gDoingBattleAnim;
extern u8 gBattlerSpriteIds[];
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u16 gBattleTypeFlags;
extern u32 gBattleControllerExecFlags;
extern u16 gSpecialVar_ItemId;
@@ -35,7 +35,7 @@ extern MainCallback gPreBattleCallback1;
extern u8 gBankInMenu;
extern u8 gHealthboxSpriteIds[];
extern u16 gBattlerPartyIndexes[];
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gBattleOutcome;
extern u8 GetBattlerSide(u8);
@@ -290,7 +290,7 @@ void sub_812B65C(void)
void sub_812B694(void)
{
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
SafariBufferExecCompleted();
}
@@ -396,12 +396,12 @@ void SafariHandleTrainerThrow(void)
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBattler);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
gBattlerControllerFuncs[gActiveBattler] = sub_812B65C;
@@ -461,7 +461,7 @@ void SafariHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBattler][2]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gBattlerControllerFuncs[gActiveBattler] = sub_812B694;
}
@@ -479,13 +479,13 @@ void SafariHandlecmd18(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- gUnknown_03004210.paletteNum = 0;
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
+ gWindowTemplate_Contest_MoveDescription.paletteNum = 0;
+ Text_FillWindowRectDefPalette(&gWindowTemplate_Contest_MoveDescription, 10, 2, 15, 27, 18);
+ Text_FillWindowRectDefPalette(&gWindowTemplate_Contest_MoveDescription, 10, 2, 35, 16, 36);
gBattlerControllerFuncs[gActiveBattler] = bx_battle_menu_t6_2;
- Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_MenuOptionsSafari, 400, 18, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0);
for (i = 0; i < 4; i++)
@@ -494,8 +494,8 @@ void SafariHandlecmd18(void)
sub_802E3E4(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(BattleText_PlayerMenu);
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
void SafariHandlecmd19(void)
@@ -650,7 +650,7 @@ void SafariHandleFaintingCry(void)
void SafariHandleIntroSlide(void)
{
StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
- gUnknown_02024DE8 |= 1;
+ gIntroSlideFlags |= 1;
SafariBufferExecCompleted();
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 50ede7c7d..41f3db56b 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -49,11 +49,11 @@ extern u8 gDisplayedStringBattle[];
extern u8 gBankInMenu;
extern u8 gBattleMonForms[];
extern u8 gBattleOutcome;
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gUnknown_02024E68[];
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u8 gAnimMoveTurn;
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern u8 gUnknown_0300434C[];
extern const u8 BattleText_WallyMenu[];
extern const u8 BattleText_MenuOptions[];
@@ -232,10 +232,10 @@ void unref_sub_8137220(void)
void SetBankFuncToWallyBufferRunCommand(void)
{
gBattlerControllerFuncs[gActiveBattler] = WallyBufferRunCommand;
- ewram160A8 = 0;
- ewram160A9 = 0;
- ewram160AA = 0;
- ewram160AB = 0;
+ gBattleStruct->unk160A8 = 0;
+ gBattleStruct->unk160A9 = 0;
+ gBattleStruct->unk160AA = 0;
+ gBattleStruct->unk160AB = 0;
}
void WallyBufferRunCommand(void)
@@ -253,59 +253,59 @@ void sub_81372BC(void)
{
u8 r4;
- switch (ewram160A8)
+ switch (gBattleStruct->unk160A8)
{
case 0:
- ewram160AA = 64;
- ewram160A8++;
+ gBattleStruct->unk160AA = 64;
+ gBattleStruct->unk160A8++;
// fall through
case 1:
- r4 = --ewram160AA;
+ r4 = --gBattleStruct->unk160AA;
if (r4 == 0)
{
PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, 0, 0);
WallyBufferExecCompleted();
- ewram160A8++;
- ewram160A9 = r4;
- ewram160AA = 64;
+ gBattleStruct->unk160A8++;
+ gBattleStruct->unk160A9 = r4;
+ gBattleStruct->unk160AA = 64;
}
break;
case 2:
- r4 = --ewram160AA;
+ r4 = --gBattleStruct->unk160AA;
if (r4 == 0)
{
PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, 0, 0);
WallyBufferExecCompleted();
- ewram160A8++;
- ewram160A9 = r4;
- ewram160AA = 64;
+ gBattleStruct->unk160A8++;
+ gBattleStruct->unk160A9 = r4;
+ gBattleStruct->unk160AA = 64;
}
break;
case 3:
- r4 = --ewram160AA;
+ r4 = --gBattleStruct->unk160AA;
if (r4 == 0)
{
BtlController_EmitTwoReturnValues(1, 9, 0);
WallyBufferExecCompleted();
- ewram160A8++;
- ewram160A9 = r4;
- ewram160AA = 64;
+ gBattleStruct->unk160A8++;
+ gBattleStruct->unk160A9 = r4;
+ gBattleStruct->unk160AA = 64;
}
break;
case 4:
- if (--ewram160AA == 0)
+ if (--gBattleStruct->unk160AA == 0)
{
PlaySE(SE_SELECT);
nullsub_8(0);
sub_802E3E4(1, 0);
- ewram160AA = 64;
- ewram160A8++;
+ gBattleStruct->unk160AA = 64;
+ gBattleStruct->unk160A8++;
}
break;
case 5:
- if (--ewram160AA == 0)
+ if (--gBattleStruct->unk160AA == 0)
{
PlaySE(SE_SELECT);
DestroyMenuCursor();
@@ -324,7 +324,7 @@ void sub_813741C(void)
void sub_8137454(void)
{
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
WallyBufferExecCompleted();
}
@@ -1098,11 +1098,11 @@ void WallyHandleTrainerThrow(void)
LoadPlayerTrainerBankSprite(2, gActiveBattler);
GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = 240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
gBattlerControllerFuncs[gActiveBattler] = sub_813741C;
@@ -1113,11 +1113,11 @@ void WallyHandleTrainerSlide(void)
LoadPlayerTrainerBankSprite(2, gActiveBattler);
GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
gBattlerSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].x2 = -96;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80313A0;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
@@ -1195,7 +1195,7 @@ void sub_81390D0(void)
switch (ewram17810[gActiveBattler].unk4)
{
case 0:
- if (ewram17800[gActiveBattler].substituteSprite == 1)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite == 1)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
ewram17810[gActiveBattler].unk4 = 1;
break;
@@ -1212,7 +1212,7 @@ void sub_81390D0(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBattler].substituteSprite == 1)
+ if (gBattleSpriteInfo[gActiveBattler].substituteSprite == 1)
move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
ewram17810[gActiveBattler].unk4 = 3;
}
@@ -1239,7 +1239,7 @@ void WallyHandlePrintString(void)
if (*ptr == 2)
DestroyMenuCursor();
BufferStringBattle(*ptr);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 0x90, 2, 15);
gBattlerControllerFuncs[gActiveBattler] = sub_8137454;
}
@@ -1257,23 +1257,23 @@ void WallyHandlecmd18(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- gUnknown_03004210.paletteNum = 0;
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
+ gWindowTemplate_Contest_MoveDescription.paletteNum = 0;
+ Text_FillWindowRectDefPalette(&gWindowTemplate_Contest_MoveDescription, 10, 2, 15, 27, 18);
+ Text_FillWindowRectDefPalette(&gWindowTemplate_Contest_MoveDescription, 10, 2, 35, 16, 36);
gBattlerControllerFuncs[gActiveBattler] = sub_81372BC;
- Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_MenuOptions, 400, 18, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
for (i = 0; i < 4; i++)
nullsub_8(i);
sub_802E3E4(0, 0);
BattleStringExpandPlaceholdersToDisplayedString(BattleText_WallyMenu);
#ifdef ENGLISH
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 440, 2, 35);
#else
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 444, 2, 35);
#endif
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
void WallyHandlecmd19(void)
@@ -1283,16 +1283,16 @@ void WallyHandlecmd19(void)
void WallyHandlecmd20(void)
{
- switch (ewram160A9)
+ switch (gBattleStruct->unk160A9)
{
case 0:
sub_80304A8();
- ewram160A9++;
- ewram160AB = 80;
+ gBattleStruct->unk160A9++;
+ gBattleStruct->unk160AB = 80;
// fall through
case 1:
- ewram160AB--;
- if (ewram160AB == 0)
+ gBattleStruct->unk160AB--;
+ if (gBattleStruct->unk160AB == 0)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
@@ -1464,7 +1464,7 @@ void WallyHandleFaintingCry(void)
void WallyHandleIntroSlide(void)
{
StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
- gUnknown_02024DE8 |= 1;
+ gIntroSlideFlags |= 1;
WallyBufferExecCompleted();
}
@@ -1476,7 +1476,7 @@ void WallyHandleTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_8030E38);
@@ -1496,13 +1496,13 @@ void sub_81398BC(u8 bank)
{
u16 species;
- ewram17800[bank].transformedSpecies = 0;
+ gBattleSpriteInfo[bank].transformedSpecies = 0;
gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(bank));
gBattlerSpriteIds[bank] = CreateSprite(
- &gUnknown_02024E8C,
+ &gCreatingSpriteTemplate,
GetBattlerSpriteCoord(bank, 2),
sub_8077F68(bank),
GetBattlerSubpriority(bank));
@@ -1544,7 +1544,7 @@ void WallyHandlecmd48(void)
else
{
ewram17810[gActiveBattler].unk0_0 = 1;
- gUnknown_02024E68[gActiveBattler] = sub_8044804(gActiveBattler, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gUnknown_02024E68[gActiveBattler] = sub_8044804(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
WallyBufferExecCompleted();
}
}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 02cb59cc4..9c61e74eb 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -413,7 +413,7 @@ static void CreateTasksForSendRecvLinkBuffers(void)
gTasks[sLinkReceiveTaskId].data[15] = 0;
gUnknown_020238C6 = 0;
- CpuFill16(0, EWRAM_14000, 0x2000);
+ CpuFill16(0, &gSharedMem[BSTRUCT_OFF(linkSend)], sizeof(gBattleStruct->linkSend) + sizeof(gBattleStruct->linkRecv));
}
void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data)
@@ -428,17 +428,17 @@ void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data)
gTasks[sLinkSendTaskId].data[14] = 0;
}
- ewram14000arr(0, gTasks[sLinkSendTaskId].data[14]) = a;
- ewram14000arr(1, gTasks[sLinkSendTaskId].data[14]) = gActiveBattler;
- ewram14000arr(2, gTasks[sLinkSendTaskId].data[14]) = gBattlerAttacker;
- ewram14000arr(3, gTasks[sLinkSendTaskId].data[14]) = gBattlerTarget;
- ewram14000arr(4, gTasks[sLinkSendTaskId].data[14]) = r9;
- ewram14000arr(5, gTasks[sLinkSendTaskId].data[14]) = (r9 & 0x0000FF00) >> 8;
- ewram14000arr(6, gTasks[sLinkSendTaskId].data[14]) = gAbsentBattlerFlags;
- ewram14000arr(7, gTasks[sLinkSendTaskId].data[14]) = gEffectBattler;
+ BCOMM(linkSend, state, gTasks[sLinkSendTaskId].data[14], 0) = a;
+ BCOMM(linkSend, activeBattler, gTasks[sLinkSendTaskId].data[14], 0) = gActiveBattler;
+ BCOMM(linkSend, battlerAttacker, gTasks[sLinkSendTaskId].data[14], 0) = gBattlerAttacker;
+ BCOMM(linkSend, battlerTarget, gTasks[sLinkSendTaskId].data[14], 0) = gBattlerTarget;
+ BCOMM(linkSend, size, gTasks[sLinkSendTaskId].data[14], 0) = r9;
+ BCOMM(linkSend, size, gTasks[sLinkSendTaskId].data[14], 1) = (r9 & 0x0000FF00) >> 8;
+ BCOMM(linkSend, absentBattlerFlags, gTasks[sLinkSendTaskId].data[14], 0) = gAbsentBattlerFlags;
+ BCOMM(linkSend, effectBattler, gTasks[sLinkSendTaskId].data[14], 0) = gEffectBattler;
for (i = 0; i < size; i++)
- ewram14008arr(i, gTasks[sLinkSendTaskId].data[14]) = data[i];
+ BCOMM(linkSend, data, gTasks[sLinkSendTaskId].data[14], i) = data[i];
gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + r9 + 8;
}
@@ -478,8 +478,8 @@ void Task_HandleSendLinkBuffersData(u8 taskId)
gTasks[taskId].data[12] = 0;
gTasks[taskId].data[15] = 0;
}
- var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8)) + 8;
- SendBlock(bitmask_all_link_players_but_self(), &ewram14000arr(0, gTasks[taskId].data[15]), var);
+ var = (BCOMM(linkSend, size, gTasks[taskId].data[15], 0) | (BCOMM(linkSend, size, gTasks[taskId].data[15], 1) << 8)) + 8;
+ SendBlock(bitmask_all_link_players_but_self(), &gSharedMem[BSTRUCT_OFF(linkSend) + gTasks[taskId].data[15]], var);
gTasks[taskId].data[11]++;
}
else
@@ -492,7 +492,7 @@ void Task_HandleSendLinkBuffersData(u8 taskId)
case 4:
if (IsLinkTaskFinished())
{
- var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8));
+ var = (BCOMM(linkSend, size, gTasks[taskId].data[15], 0) | (BCOMM(linkSend, size, gTasks[taskId].data[15], 1) << 8));
gTasks[taskId].data[13] = 1;
gTasks[taskId].data[15] = gTasks[taskId].data[15] + var + 8;
gTasks[taskId].data[11] = 3;
@@ -538,7 +538,7 @@ void sub_800C35C(void)
gTasks[sLinkReceiveTaskId].data[14] = 0;
}
//_0800C402
- dest = EWRAM_15000 + gTasks[sLinkReceiveTaskId].data[14];
+ dest = &gSharedMem[BSTRUCT_OFF(linkRecv) + gTasks[sLinkReceiveTaskId].data[14]];
src = (u8 *)recvBuffer;
for (j = 0; j < r6 + 8; j++)
dest[j] = src[j];
@@ -563,28 +563,29 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
gTasks[taskId].data[12] = 0;
gTasks[taskId].data[15] = 0;
}
- battlerId = ewram15000arr(1, gTasks[taskId].data[15]);
- blockSize = ewram15000arr(4, gTasks[taskId].data[15]) | (ewram15000arr(5, gTasks[taskId].data[15]) << 8);
- switch (ewram15000arr(0, gTasks[taskId].data[15]))
+ battlerId = BCOMM(linkRecv, activeBattler, gTasks[taskId].data[15], 0);
+ blockSize = BCOMM(linkRecv, size, gTasks[taskId].data[15], 0)
+ | (BCOMM(linkRecv, size, gTasks[taskId].data[15], 1) << 8);
+ switch (BCOMM(linkRecv, state, gTasks[taskId].data[15], 0))
{
case 0:
if (gBattleControllerExecFlags & gBitTable[battlerId])
return;
- memcpy(gBattleBufferA[battlerId], &ewram15000arr(8, gTasks[taskId].data[15]), blockSize);
+ memcpy(gBattleBufferA[battlerId], &BCOMM(linkRecv, data, gTasks[taskId].data[15], 0), blockSize);
sub_80155A4(battlerId);
if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
{
- gBattlerAttacker = ewram15000arr(2, gTasks[taskId].data[15]);
- gBattlerTarget = ewram15000arr(3, gTasks[taskId].data[15]);
- gAbsentBattlerFlags = ewram15000arr(6, gTasks[taskId].data[15]);
- gEffectBattler = ewram15000arr(7, gTasks[taskId].data[15]);
+ gBattlerAttacker = BCOMM(linkRecv, battlerAttacker, gTasks[taskId].data[15], 0);
+ gBattlerTarget = BCOMM(linkRecv, battlerTarget, gTasks[taskId].data[15], 0);
+ gAbsentBattlerFlags = BCOMM(linkRecv, absentBattlerFlags, gTasks[taskId].data[15], 0);
+ gEffectBattler = BCOMM(linkRecv, effectBattler, gTasks[taskId].data[15], 0);
}
break;
case 1:
- memcpy(gBattleBufferB[battlerId], &ewram15000arr(8, gTasks[taskId].data[15]), blockSize);
+ memcpy(gBattleBufferB[battlerId], &BCOMM(linkRecv, data, gTasks[taskId].data[15], 0), blockSize);
break;
case 2:
- r2 = ewram15000arr(8, gTasks[taskId].data[15]);
+ r2 = BCOMM(linkRecv, data, gTasks[taskId].data[15], 0);
gBattleControllerExecFlags &= ~(gBitTable[battlerId] << (r2 * 4));
break;
}
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 104a0eecf..d81752f5a 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -29,10 +29,10 @@ extern u8 gBattlersCount;
extern u16 gBattlerPartyIndexes[];
extern u8 gBattlerPositions[];
extern u8 gBattlerSpriteIds[];
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gDoingBattleAnim;
extern u32 gTransformedPersonalities[];
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern void (*gBattlerControllerFuncs[])(void);
extern u8 gHealthboxSpriteIds[];
extern u8 gUnknown_0300434C[];
@@ -142,10 +142,10 @@ void unref_sub_8031364(struct Sprite *sprite, bool8 stupid)
void sub_80313A0(struct Sprite *sprite)
{
- if (!(gUnknown_02024DE8 & 1))
+ if (!(gIntroSlideFlags & 1))
{
- sprite->pos2.x += sprite->data[0];
- if (sprite->pos2.x == 0)
+ sprite->x2 += sprite->data[0];
+ if (sprite->x2 == 0)
sprite->callback = SpriteCallbackDummy;
}
}
@@ -194,9 +194,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
gBattleMonForms[a] = e & 0x7F;
return TRUE;
}
- if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
+ if (gBattleSpriteInfo[a].substituteSprite && sub_803163C(d) == 0)
return TRUE;
- if (ewram17800[a].substituteSprite && d == 2 && gSprites[gBattlerSpriteIds[a]].invisible)
+ if (gBattleSpriteInfo[a].substituteSprite && d == 2 && gSprites[gBattlerSpriteIds[a]].invisible)
{
refresh_graphics_maybe(a, 1, gBattlerSpriteIds[a]);
sub_80324E0(a);
@@ -296,14 +296,14 @@ void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].transformedSpecies == 0)
+ if (gBattleSpriteInfo[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].transformedSpecies;
+ species = gBattleSpriteInfo[b].transformedSpecies;
r7 = gTransformedPersonalities[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -312,12 +312,12 @@ void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[var],
+ eBattleInterfaceGfxBuffer,
+ gMonSpriteGfx_Sprite_ptr[var],
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].transformedSpecies == 0)
+ if (gBattleSpriteInfo[b].transformedSpecies == 0)
lzPaletteData = GetMonSpritePal(pkmn);
else
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
@@ -330,7 +330,7 @@ void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
LZDecompressWram(lzPaletteData, ewram16400);
LoadPalette(ewram16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].transformedSpecies != 0)
+ if (gBattleSpriteInfo[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -348,14 +348,14 @@ void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].transformedSpecies == 0)
+ if (gBattleSpriteInfo[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].transformedSpecies;
+ species = gBattleSpriteInfo[b].transformedSpecies;
r7 = gTransformedPersonalities[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -364,12 +364,12 @@ void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[var],
+ eBattleInterfaceGfxBuffer,
+ gMonSpriteGfx_Sprite_ptr[var],
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].transformedSpecies == 0)
+ if (gBattleSpriteInfo[b].transformedSpecies == 0)
lzPaletteData = GetMonSpritePal(pkmn);
else
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
@@ -382,7 +382,7 @@ void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
LZDecompressWram(lzPaletteData, ewram16400);
LoadPalette(ewram16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].transformedSpecies != 0)
+ if (gBattleSpriteInfo[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -407,10 +407,10 @@ void sub_8031A6C(u16 a, u8 b)
&gTrainerFrontPicTable[a],
gTrainerFrontPicCoords[a].coords,
gTrainerFrontPicCoords[a].y_offset,
- eVoidSharedArr,
- gUnknown_081FAF4C[status],
+ eBattleInterfaceGfxBuffer,
+ gMonSpriteGfx_Sprite_ptr[status],
0);
- spriteSheet.data = gUnknown_081FAF4C[status];
+ spriteSheet.data = gMonSpriteGfx_Sprite_ptr[status];
spriteSheet.size = gTrainerFrontPicTable[a].size;
spriteSheet.tag = gTrainerFrontPicTable[a].tag;
LoadCompressedObjectPic(&spriteSheet);
@@ -426,8 +426,8 @@ void LoadPlayerTrainerBankSprite(u16 a, u8 b)
&gTrainerBackPicTable[a],
gTrainerBackPicCoords[a].coords,
gTrainerBackPicCoords[a].y_offset,
- eVoidSharedArr,
- gUnknown_081FAF4C[status],
+ eBattleInterfaceGfxBuffer,
+ gMonSpriteGfx_Sprite_ptr[status],
0);
LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32);
}
@@ -523,7 +523,7 @@ bool8 sub_8031C30(u8 a)
void load_gfxc_health_bar(u8 a)
{
- LZDecompressWram(gUnknown_08D09C48, eVoidSharedArr);
+ LZDecompressWram(gUnknown_08D09C48, eBattleInterfaceGfxBuffer);
}
u8 battle_load_something(u8 *pState, u8 *b)
@@ -611,7 +611,7 @@ void sub_8031EE8(void)
void sub_8031F0C(void)
{
sub_8031EE8();
- memset(ewram17800, 0, 0x10);
+ memset(gBattleSpriteInfo, 0, 0x10);
}
void sub_8031F24(void)
@@ -619,12 +619,12 @@ void sub_8031F24(void)
s32 i;
for (i = 0; i < gBattlersCount; i++)
- ewram17800[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible;
+ gBattleSpriteInfo[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible;
}
void sub_8031F88(u8 a)
{
- ewram17800[a].invisible = gSprites[gBattlerSpriteIds[a]].invisible;
+ gBattleSpriteInfo[a].invisible = gSprites[gBattlerSpriteIds[a]].invisible;
}
void sub_8031FC4(u8 a, u8 b, bool8 c)
@@ -642,29 +642,29 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
paletteOffset = 0x100 + a * 16;
LoadPalette(ewram16400 + ewram17840.unk0 * 32, paletteOffset, 32);
gBattleMonForms[a] = ewram17840.unk0;
- if (ewram17800[a].transformedSpecies != 0)
+ if (gBattleSpriteInfo[a].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, RGB(31, 31, 31));
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
- gSprites[gBattlerSpriteIds[a]].pos1.y = sub_8077F68(a);
+ gSprites[gBattlerSpriteIds[a]].y = sub_8077F68(a);
}
else
{
if (IsContest())
{
r10 = 0;
- species = shared19348.unk2;
- personalityValue = shared19348.unk8;
- otId = shared19348.unkC;
+ species = gContestResources__moveAnim.targetSpecies;
+ personalityValue = gContestResources__moveAnim.personality;
+ otId = gContestResources__moveAnim.otId;
HandleLoadSpecialPokePic(
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[0],
+ eBattleInterfaceGfxBuffer,
+ gMonSpriteGfx_Sprite_ptr[0],
species,
- shared19348.unk10);
+ gContestResources__moveAnim.targetPersonality);
}
else
{
@@ -681,8 +681,8 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[r10],
+ eBattleInterfaceGfxBuffer,
+ gMonSpriteGfx_Sprite_ptr[r10],
species,
gTransformedPersonalities[a]);
}
@@ -694,13 +694,13 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- eVoidSharedArr2,
- gUnknown_081FAF4C[r10],
+ eBattleInterfaceGfxBuffer,
+ gMonSpriteGfx_Sprite_ptr[r10],
species,
gTransformedPersonalities[a]);
}
}
- DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[a]].oam.tileNum * 32), 0x800);
+ DmaCopy32Defvars(3, gMonSpriteGfx_Sprite_ptr[r10], (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[a]].oam.tileNum * 32), 0x800);
paletteOffset = 0x100 + a * 16;
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
LZDecompressWram(lzPaletteData, gSharedMem);
@@ -716,10 +716,10 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
- ewram17800[a].transformedSpecies = species;
+ gBattleSpriteInfo[a].transformedSpecies = species;
gBattleMonForms[a] = gBattleMonForms[b];
}
- gSprites[gBattlerSpriteIds[a]].pos1.y = sub_8077F68(a);
+ gSprites[gBattlerSpriteIds[a]].y = sub_8077F68(a);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[a]], gBattleMonForms[a]);
}
}
@@ -739,15 +739,15 @@ void BattleLoadSubstituteSprite(u8 a, u8 b)
else
r4 = GetBattlerPosition(a);
if (IsContest())
- LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpriteGfx_Sprite_ptr[r4]);
else if (GetBattlerSide(a) != 0)
- LZDecompressVram(gSubstituteDollGfx, gUnknown_081FAF4C[r4]);
+ LZDecompressVram(gSubstituteDollGfx, gMonSpriteGfx_Sprite_ptr[r4]);
else
- LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpriteGfx_Sprite_ptr[r4]);
// There is probably a way to do this without all the temp variables, but I couldn't figure it out.
foo = a * 16;
gSubstituteDollPal_ = gSubstituteDollPal;
- src = gUnknown_081FAF4C[r4];
+ src = gMonSpriteGfx_Sprite_ptr[r4];
for (i = 0; i < 3; i++)
DmaCopy32(3, src, src + i * 0x800 + 0x800, 0x800);
LoadCompressedPalette(gSubstituteDollPal_, 0x100 + foo, 32);
@@ -769,20 +769,20 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
BattleLoadSubstituteSprite(a, b);
StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]);
if (b == 0)
- gSprites[spriteId].pos1.y = sub_8077F7C(a);
+ gSprites[spriteId].y = sub_8077F7C(a);
else
- gSprites[spriteId].pos1.y = sub_8077F68(a);
+ gSprites[spriteId].y = sub_8077F68(a);
}
void sub_80324BC(u8 a, u16 b)
{
if (b == 0xA4)
- ewram17800[a].substituteSprite = 1;
+ gBattleSpriteInfo[a].substituteSprite = 1;
}
void sub_80324E0(u8 a)
{
- ewram17800[a].substituteSprite = 0;
+ gBattleSpriteInfo[a].substituteSprite = 0;
}
void HandleLowHpMusicChange(struct Pokemon *pkmn, u8 b)
@@ -792,22 +792,22 @@ void HandleLowHpMusicChange(struct Pokemon *pkmn, u8 b)
if (GetHPBarLevel(hp, maxHP) == 1)
{
- if (!ewram17800[b].unk0_1)
+ if (!gBattleSpriteInfo[b].lowHpSong)
{
- if (!ewram17800[b ^ 2].unk0_1)
+ if (!gBattleSpriteInfo[b ^ 2].lowHpSong)
PlaySE(SE_LOW_HEALTH);
- ewram17800[b].unk0_1 = 1;
+ gBattleSpriteInfo[b].lowHpSong = 1;
}
}
else
{
- ewram17800[b].unk0_1 = 0;
+ gBattleSpriteInfo[b].lowHpSong = 0;
if (!IsDoubleBattle())
{
m4aSongNumStop(SE_LOW_HEALTH);
return;
}
- if (IsDoubleBattle() && !ewram17800[b ^ 2].unk0_1)
+ if (IsDoubleBattle() && !gBattleSpriteInfo[b ^ 2].lowHpSong)
{
m4aSongNumStop(SE_LOW_HEALTH);
return;
@@ -819,9 +819,9 @@ void BattleStopLowHpSound(void)
{
u8 r4 = GetBattlerAtPosition(0);
- ewram17800[r4].unk0_1 = 0;
+ gBattleSpriteInfo[r4].lowHpSong = 0;
if (IsDoubleBattle())
- ewram17800[r4 ^ 2].unk0_1 = 0;
+ gBattleSpriteInfo[r4 ^ 2].lowHpSong = 0;
m4aSongNumStop(SE_LOW_HEALTH);
}
@@ -903,12 +903,12 @@ void sub_80328A4(struct Sprite *sprite)
}
if (gAnimScriptActive || r7->invisible)
invisible = TRUE;
- else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0)
+ else if (gBattleSpriteInfo[r4].transformedSpecies != 0 && gEnemyMonElevation[gBattleSpriteInfo[r4].transformedSpecies] == 0)
invisible = TRUE;
- if (ewram17800[r4].substituteSprite)
+ if (gBattleSpriteInfo[r4].substituteSprite)
invisible = TRUE;
- sprite->pos1.x = r7->pos1.x;
- sprite->pos2.x = r7->pos2.x;
+ sprite->x = r7->x;
+ sprite->x2 = r7->x2;
sprite->invisible = invisible;
}
@@ -921,8 +921,8 @@ void sub_8032984(u8 a, u16 b)
{
if (GetBattlerSide(a) != 0)
{
- if (ewram17800[a].transformedSpecies != 0)
- b = ewram17800[a].transformedSpecies;
+ if (gBattleSpriteInfo[a].transformedSpecies != 0)
+ b = gBattleSpriteInfo[a].transformedSpecies;
if (gEnemyMonElevation[b] != 0)
gSprites[ewram17810[a].unk7].callback = sub_80328A4;
else
@@ -960,7 +960,7 @@ void sub_8032A38(void)
void sub_8032AA8(u8 a, u8 b)
{
- ewram17800[a].transformedSpecies = 0;
+ gBattleSpriteInfo[a].transformedSpecies = 0;
gBattleMonForms[a] = 0;
if (b == 0)
sub_80324E0(a);
diff --git a/src/battle_interface.c b/src/battle_interface.c
index c36556f11..bb105f50c 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -17,18 +17,13 @@
#include "graphics.h"
#include "pokemon_summary_screen.h"
-struct UnknownStruct5
+struct BattleBar
{
- u8 unk0;
- u32 unk4;
- u32 unk8;
- u32 unkC;
- int unk10;
-};
-
-struct UnknownStruct7
-{
- u8 filler0[0x180];
+ u8 healthboxSpriteId;
+ u32 maxValue;
+ u32 oldValue;
+ u32 receivedValue;
+ int currValue;
};
static void sub_8043CEC(struct Sprite *sprite);
@@ -453,7 +448,7 @@ static u8 sub_80457E8(u8, u8);
static int sub_8045F58(s32, s32, int, int *, u8, u16);
static u8 GetScaledExpFraction(int, int, int, u8);
static void sub_8045D58(u8, u8);
-static u8 sub_804602C(int, int, int, int *, u8 *, u8);
+static u8 CalcBarFilledPixels(int a, int b, int c, int *d, u8 *e, u8 f);
static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, u16 *c);
static int do_nothing(s16 unused1, s16 unused2, int unused3)
@@ -647,40 +642,40 @@ static void sub_8043CEC(struct Sprite *sprite)
switch (sprite->data[6])
{
case 0:
- sprite->pos1.x = gSprites[r5].pos1.x + 16;
- sprite->pos1.y = gSprites[r5].pos1.y;
+ sprite->x = gSprites[r5].x + 16;
+ sprite->y = gSprites[r5].y;
break;
case 1:
- sprite->pos1.x = gSprites[r5].pos1.x + 16;
- sprite->pos1.y = gSprites[r5].pos1.y;
+ sprite->x = gSprites[r5].x + 16;
+ sprite->y = gSprites[r5].y;
break;
default:
case 2:
- sprite->pos1.x = gSprites[r5].pos1.x + 8;
- sprite->pos1.y = gSprites[r5].pos1.y;
+ sprite->x = gSprites[r5].x + 8;
+ sprite->y = gSprites[r5].y;
break;
}
- sprite->pos2.x = gSprites[r5].pos2.x;
- sprite->pos2.y = gSprites[r5].pos2.y;
+ sprite->x2 = gSprites[r5].x2;
+ sprite->y2 = gSprites[r5].y2;
}
static void sub_8043D5C(struct Sprite *sprite)
{
u8 data5 = sprite->data[5];
- sprite->pos1.x = gSprites[data5].pos1.x + 64;
- sprite->pos1.y = gSprites[data5].pos1.y;
- sprite->pos2.x = gSprites[data5].pos2.x;
- sprite->pos2.y = gSprites[data5].pos2.y;
+ sprite->x = gSprites[data5].x + 64;
+ sprite->y = gSprites[data5].y;
+ sprite->x2 = gSprites[data5].x2;
+ sprite->y2 = gSprites[data5].y2;
}
void sub_8043D84(u8 a, u8 b, u32 c, u32 d, u32 e)
{
- ewram17850[a].unk0 = b;
- ewram17850[a].unk4 = c;
- ewram17850[a].unk8 = d;
- ewram17850[a].unkC = e;
- ewram17850[a].unk10 = -0x8000;
+ eBattleBars[a].healthboxSpriteId = b;
+ eBattleBars[a].maxValue = c;
+ eBattleBars[a].oldValue = d;
+ eBattleBars[a].receivedValue = e;
+ eBattleBars[a].currValue = -0x8000;
}
void sub_8043DB0(u8 a)
@@ -699,8 +694,8 @@ void sub_8043DFC(u8 a)
static void sub_8043E50(u8 spriteId, s16 x, s16 y)
{
- gSprites[spriteId].pos1.x = x;
- gSprites[spriteId].pos1.y = y;
+ gSprites[spriteId].x = x;
+ gSprites[spriteId].y = y;
}
void unref_sub_8043E70(u8 a)
@@ -815,30 +810,29 @@ void sub_8043F44(u8 a)
else
{
*(ptr++) = EXT_CTRL_CODE_BEGIN;
- *(ptr++) = 0x11;
+ *(ptr++) = EXT_CTRL_CODE_CLEAR;
*(ptr++) = 1;
*(ptr++) = EXT_CTRL_CODE_BEGIN;
- *(ptr++) = 0x14;
+ *(ptr++) = EXT_CTRL_CODE_MIN_LETTER_SPACING;
*(ptr++) = 4;
*(ptr++) = CHAR_LV_SEPARATOR;
*(ptr++) = EXT_CTRL_CODE_BEGIN;
- *(ptr++) = 0x14;
+ *(ptr++) = EXT_CTRL_CODE_MIN_LETTER_SPACING;
*(ptr++) = 0;
ptr = ConvertIntToDecimalStringN(ptr, b, 0, 2);
}
*(ptr++) = EXT_CTRL_CODE_BEGIN;
- *(ptr++) = 0x13;
- *(ptr++) = 0xF;
+ *(ptr++) = EXT_CTRL_CODE_CLEAR_TO;
+ *(ptr++) = 15;
*(ptr++) = EOS;
- sub_80034D4(ewram0_9(0), str);
+ sub_80034D4(eBattleInterfaceGfxBuffer, str);
two = 2;
for (i = 0; i < two; i++)
- CpuCopy32((void *)(ewram0_9(1) + i * 64), r7[i] + gSprites[a].oam.tileNum * 32, 32);
+ CpuCopy32(&eBattleInterfaceGfxBuffer[i * 64 + 32], r7[i] + gSprites[a].oam.tileNum * TILE_SIZE_4BPP, TILE_SIZE_4BPP);
}
-#ifdef NONMATCHING
void sub_80440EC(u8 a, s16 b, u8 c)
{
u8 str[0x14];
@@ -846,6 +840,7 @@ void sub_80440EC(u8 a, s16 b, u8 c)
s32 foo;
u8 *const *r4;
s32 i;
+ u8 r8;
// TODO: make this a local variable
memcpy(str, gUnknown_0820A864, sizeof(str));
@@ -855,186 +850,44 @@ void sub_80440EC(u8 a, s16 b, u8 c)
{
//_08044136
sub_8044210(a, b, c);
- return;
- }
- //
- ptr = str + 6;
- if (c == 0)
- {
- if (GetBattlerSide(gSprites[a].data[6]) == 0)
- r4 = gUnknown_0820A83C;
- else
- r4 = gUnknown_0820A848;
- c = 3;
- ptr = sub_8003504(ptr, b, 0x13, 1);
- *(ptr++) = 0xBA;
- *(ptr++) = 0xFF;
- sub_80034D4(ewram0_9(0), str);
}
else
{
- if (GetBattlerSide(gSprites[a].data[6]) == 0)
- r4 = gUnknown_0820A854;
+ //
+ ptr = str + 6;
+ if (c == 0)
+ {
+ if (GetBattlerSide(gSprites[a].data[6]) == 0)
+ r4 = gUnknown_0820A83C;
+ else
+ r4 = gUnknown_0820A848;
+ r8 = 3;
+ ptr = sub_8003504(ptr, b, 19, 1);
+ *(ptr++) = CHAR_SLASH;
+ *(ptr++) = EOS;
+ }
else
- r4 = gUnknown_0820A85C;
- c = 2;
- sub_8003504(ptr, b, 0xF, 1);
- sub_80034D4(ewram0_9(0), str);
- }
- //asm(""::"r"(a));
- //_080441B6
- for (i = 0; i < c; i++) // _080440BC
- {
- void *temp = r4[i] + gSprites[a].oam.tileNum * 32;
- CpuCopy32((void *)(ewram0_9(1) + i * 0x40), temp, 0x20);
+ {
+ if (GetBattlerSide(gSprites[a].data[6]) == 0)
+ r4 = gUnknown_0820A854;
+ else
+ r4 = gUnknown_0820A85C;
+ r8 = 2;
+ ptr = sub_8003504(ptr, b, 15, 1);
+ }
+ sub_80034D4(eBattleInterfaceGfxBuffer, str);
+ //asm(""::"r"(a));
+ //_080441B6
+ for (i = 0; i < r8; i++) // _080440BC
+ {
+ CpuCopy32(
+ &eBattleInterfaceGfxBuffer[i * 64 + 32],
+ r4[i] + gSprites[a].oam.tileNum * 32,
+ 0x20
+ );
+ }
}
}
-#else
-NAKED
-void sub_80440EC(u8 a, s16 b, u8 c)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- sub sp, 0x14\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r1, 16\n\
- lsrs r6, r1, 16\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- mov r8, r2\n\
- ldr r1, _08044144 @ =gUnknown_0820A864\n\
- mov r0, sp\n\
- movs r2, 0x14\n\
- bl memcpy\n\
- ldr r1, _08044148 @ =gSprites\n\
- lsls r0, r7, 4\n\
- adds r0, r7\n\
- lsls r0, 2\n\
- adds r4, r0, r1\n\
- movs r0, 0x3A\n\
- ldrsh r5, [r4, r0]\n\
- bl IsDoubleBattle\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- beq _08044136\n\
- lsls r0, r5, 24\n\
- lsrs r0, 24\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bne _0804414C\n\
-_08044136:\n\
- lsls r1, r6, 16\n\
- asrs r1, 16\n\
- adds r0, r7, 0\n\
- mov r2, r8\n\
- bl sub_8044210\n\
- b _080441F0\n\
- .align 2, 0\n\
-_08044144: .4byte gUnknown_0820A864\n\
-_08044148: .4byte gSprites\n\
-_0804414C:\n\
- mov r5, sp\n\
- adds r5, 0x6\n\
- mov r0, r8\n\
- cmp r0, 0\n\
- bne _08044190\n\
- ldrh r0, [r4, 0x3A]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- ldr r4, _08044188 @ =gUnknown_0820A848\n\
- cmp r0, 0\n\
- bne _0804416A\n\
- ldr r4, _0804418C @ =gUnknown_0820A83C\n\
-_0804416A:\n\
- movs r0, 0x3\n\
- mov r8, r0\n\
- lsls r1, r6, 16\n\
- asrs r1, 16\n\
- adds r0, r5, 0\n\
- movs r2, 0x13\n\
- movs r3, 0x1\n\
- bl sub_8003504\n\
- adds r5, r0, 0\n\
- movs r0, 0xBA\n\
- strb r0, [r5]\n\
- movs r0, 0xFF\n\
- strb r0, [r5, 0x1]\n\
- b _080441B6\n\
- .align 2, 0\n\
-_08044188: .4byte gUnknown_0820A848\n\
-_0804418C: .4byte gUnknown_0820A83C\n\
-_08044190:\n\
- ldrh r0, [r4, 0x3A]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- ldr r4, _080441FC @ =gUnknown_0820A85C\n\
- cmp r0, 0\n\
- bne _080441A4\n\
- ldr r4, _08044200 @ =gUnknown_0820A854\n\
-_080441A4:\n\
- movs r0, 0x2\n\
- mov r8, r0\n\
- lsls r1, r6, 16\n\
- asrs r1, 16\n\
- adds r0, r5, 0\n\
- movs r2, 0xF\n\
- movs r3, 0x1\n\
- bl sub_8003504\n\
-_080441B6:\n\
- movs r0, 0x80\n\
- lsls r0, 18\n\
- mov r1, sp\n\
- bl sub_80034D4\n\
- mov r0, r8\n\
- cmp r0, 0\n\
- beq _080441F0\n\
- ldr r1, _08044204 @ =gSprites\n\
- lsls r0, r7, 4\n\
- adds r0, r7\n\
- lsls r0, 2\n\
- adds r6, r0, r1\n\
- adds r7, r4, 0\n\
- ldr r5, _08044208 @ =gSharedMem + 0x20\n\
- mov r4, r8\n\
-_080441D6:\n\
- ldrh r0, [r6, 0x4]\n\
- lsls r0, 22\n\
- lsrs r0, 17\n\
- ldm r7!, {r1}\n\
- adds r1, r0\n\
- adds r0, r5, 0\n\
- ldr r2, _0804420C @ =REG_BG0CNT\n\
- bl CpuSet\n\
- adds r5, 0x40\n\
- subs r4, 0x1\n\
- cmp r4, 0\n\
- bne _080441D6\n\
-_080441F0:\n\
- add sp, 0x14\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080441FC: .4byte gUnknown_0820A85C\n\
-_08044200: .4byte gUnknown_0820A854\n\
-_08044204: .4byte gSprites\n\
-_08044208: .4byte gSharedMem + 0x20\n\
-_0804420C: .4byte 0x04000008\n\
- .syntax divided\n");
-}
-#endif
/*static*/ void sub_8044210(u8 a, s16 b, u8 c)
{
@@ -1048,7 +901,7 @@ _0804420C: .4byte 0x04000008\n\
// TODO: make this a local variable
memcpy(str, gUnknown_0820A89C, sizeof(str));
r4 = gSprites[a].data[6];
- if ((ewram17800[r4].unk0_4) == 0)
+ if ((gBattleSpriteInfo[r4].hpNumbersNoBars) == 0)
return;
ptr = str + 6;
if (c == 0)
@@ -1070,343 +923,83 @@ _0804420C: .4byte 0x04000008\n\
}
}
r4 = gSprites[a].data[5];
- sub_80034D4(ewram0_9(0), str);
+ sub_80034D4(eBattleInterfaceGfxBuffer, str);
for (i = 0; i < r10; i++)
{
- CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 32);
+ CpuCopy32((void *)(&eBattleInterfaceGfxBuffer[i * 64 + 32]), r7[i] + gSprites[r4].oam.tileNum * 32, 32);
}
}
-#ifdef NONMATCHING
void sub_8044338(u8 a, struct Pokemon *pkmn)
{
- u8 str[0x14];
- u8 *r6;
- s32 r8;
- u8 nature; // = GetNature(pkmn);
- s32 r7;
- u8 i;
- u8 r5;
+ u8 text[20];
+ s32 j, spriteTileNum;
+ u8 *barFontGfx;
+ u8 i, var, nature, healthBarSpriteId;
// TODO: make this a local variable
- memcpy(str, gUnknown_0820A864, sizeof(str));
- r6 = ewram520[GetBattlerPosition(gSprites[a].data[6])].filler0;
- r8 = 5;
+ memcpy(text, gUnknown_0820A864, sizeof(text));
+ barFontGfx = &eBattleInterfaceGfxBuffer[0x520 + GetBattlerPosition(gSprites[a].data[6]) * 0x180];
+ var = 5;
nature = GetNature(pkmn);
- StringCopy(str + 6, gNatureNames[nature]);
- sub_80034D4(r6, str);
- r7 = 6;
- for (i = 0; i < (u32)r8; i++, r7++) //_080443AA
+ StringCopy(text + 6, gNatureNames[nature]);
+ sub_80034D4(barFontGfx, text);
+
+ for (j = 6, i = 0; i < var; i++, j++) //_080443AA
{
- u8 val;
+ u8 elementId;
- if ((u8)(str[r7] - 0x37) <= 0x13 || (u8)(str[r7] + 0x79) <= 0x13)
- val = 0x2C;
+ if ((text[j] >= 0x37 && text[j] <= 0x4A) || (text[j] >= 0x87 && text[j] <= 0x9A))
+ elementId = 0x2C;
//_080443DC
- else if ((u8)(str[r7] - 0x4B) <= 4 || (u8)(str[r7] + 0x65) <= 4)
- val = 0x2D;
+ else if ((text[j] >= 0x4B && text[j] <= 0x4F) || (text[j] >= 0x9B && text[j] <= 0x9F))
+ elementId = 0x2D;
else
- val = 0x2B;
+ elementId = 0x2B;
- CpuCopy32(sub_8043CDC(val), r6 + i * 64, 32);
+ CpuCopy32(sub_8043CDC(elementId), barFontGfx + i * 64, 32);
}
- //r7 = 1;
+ //j = 1;
//sp18 = a * 16;
- for (r7 = 1; r7 < r8 + 1; r7++)
+ for (j = 1; j < var + 1; j++)
{
- int foo;
-
- foo = gSprites[a].oam.tileNum + MACRO1(r7);
- CpuCopy32(r6, (u8 *)(VRAM + 0x10000) + foo * 32, 32);
- r6 += 32;
+ spriteTileNum = (gSprites[a].oam.tileNum + MACRO1(j)) * 32;
+ CpuCopy32(barFontGfx, (u8 *)(OBJ_VRAM0) + spriteTileNum, 32);
+ barFontGfx += 32;
- foo = gSprites[a].oam.tileNum + 8 + MACRO1(r7);
- CpuCopy32(r6, (u8 *)(VRAM + 0x10000) + foo * 32, 32);
- r6 += 32;
+ spriteTileNum = (8 + gSprites[a].oam.tileNum + MACRO1(j)) * 32;
+ CpuCopy32(barFontGfx, (u8 *)(OBJ_VRAM0) + spriteTileNum, 32);
+ barFontGfx += 32;
}
//_08044486
- r5 = gSprites[a].data[5];
- ConvertIntToDecimalStringN(str + 6, ewram16089, 1, 2);
- ConvertIntToDecimalStringN(str + 9, ewram16088, 1, 2);
- str[5] = 0;
- str[8] = 0xBA;
- sub_80034D4(ewram0_9(0), str);
+ healthBarSpriteId = gSprites[a].data[5];
+ ConvertIntToDecimalStringN(text + 6, gBattleStruct->safariCatchFactor, 1, 2);
+ ConvertIntToDecimalStringN(text + 9, gBattleStruct->safariFleeRate, 1, 2);
+ text[5] = CHAR_SPACE;
+ text[8] = CHAR_SLASH;
+ sub_80034D4(eBattleInterfaceGfxBuffer, text);
- for (r7 = 0; r7 < 5; r7++)
+ j = healthBarSpriteId; // Needed to match for some reason
+ for (j = 0; j < 5; j++)
{
- if (r7 <= 1)
+ if (j <= 1)
{
- int foo = (gSprites[r5].oam.tileNum + 2 + r7);
- CpuCopy32(ewram0_9(1) + r7 * 0x40, (u8 *)(VRAM + 0x10000) + foo * 32, 32);
+ CpuCopy32(
+ &eBattleInterfaceGfxBuffer[j * 64 + 32],
+ (u8 *)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * 32,
+ 32
+ );
}
else
{
- int foo = (r7 + gSprites[r5].oam.tileNum);
- CpuCopy32(ewram0_9(1) + r7 * 0x40, (u8 *)(VRAM + 0x100C0) + foo * 32, 32);
+ CpuCopy32(
+ &eBattleInterfaceGfxBuffer[j * 64 + 32],
+ (u8 *)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * 32,
+ 32
+ );
}
}
}
-#else
-NAKED
-void sub_8044338(u8 a, struct Pokemon *pkmn)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x20\n\
- adds r4, r1, 0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x14]\n\
- ldr r1, _080443CC @ =gUnknown_0820A864\n\
- mov r0, sp\n\
- movs r2, 0x14\n\
- bl memcpy\n\
- ldr r1, _080443D0 @ =gSprites\n\
- ldr r2, [sp, 0x14]\n\
- lsls r0, r2, 4\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x3A]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl GetBattlerPosition\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 7\n\
- ldr r3, _080443D4 @ =gSharedMem + 0x520\n\
- adds r6, r1, r3\n\
- movs r0, 0x5\n\
- mov r8, r0\n\
- adds r0, r4, 0\n\
- bl GetNature\n\
- lsls r0, 24\n\
- mov r4, sp\n\
- adds r4, 0x6\n\
- ldr r1, _080443D8 @ =gNatureNames\n\
- lsrs r0, 22\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- bl StringCopy\n\
- adds r0, r6, 0\n\
- mov r1, sp\n\
- bl sub_80034D4\n\
- movs r7, 0x6\n\
- movs r5, 0\n\
- mov r1, sp\n\
- adds r1, 0x9\n\
- str r1, [sp, 0x1C]\n\
-_080443AA:\n\
- mov r2, sp\n\
- adds r0, r2, r7\n\
- ldrb r1, [r0]\n\
- adds r0, r1, 0\n\
- subs r0, 0x37\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x13\n\
- bls _080443C8\n\
- adds r0, r1, 0\n\
- adds r0, 0x79\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x13\n\
- bhi _080443DC\n\
-_080443C8:\n\
- movs r0, 0x2C\n\
- b _080443FA\n\
- .align 2, 0\n\
-_080443CC: .4byte gUnknown_0820A864\n\
-_080443D0: .4byte gSprites\n\
-_080443D4: .4byte gSharedMem + 0x520\n\
-_080443D8: .4byte gNatureNames\n\
-_080443DC:\n\
- adds r0, r1, 0\n\
- subs r0, 0x4B\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x4\n\
- bls _080443F4\n\
- adds r0, r1, 0\n\
- adds r0, 0x65\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x4\n\
- bhi _080443F8\n\
-_080443F4:\n\
- movs r0, 0x2D\n\
- b _080443FA\n\
-_080443F8:\n\
- movs r0, 0x2B\n\
-_080443FA:\n\
- bl sub_8043CDC\n\
- lsls r1, r5, 6\n\
- adds r1, r6, r1\n\
- ldr r2, _080444F8 @ =REG_BG0CNT\n\
- bl CpuSet\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- adds r7, 0x1\n\
- cmp r5, r8\n\
- bcc _080443AA\n\
- movs r7, 0x1\n\
- ldr r3, [sp, 0x14]\n\
- lsls r3, 4\n\
- str r3, [sp, 0x18]\n\
- movs r0, 0x1\n\
- add r0, r8\n\
- mov r9, r0\n\
- cmp r7, r9\n\
- bge _08044486\n\
- ldr r1, _080444FC @ =gSprites\n\
- ldr r2, _080444F8 @ =REG_BG0CNT\n\
- mov r10, r2\n\
- ldr r2, [sp, 0x14]\n\
- adds r0, r3, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- mov r8, r0\n\
-_08044436:\n\
- mov r3, r8\n\
- ldrh r0, [r3, 0x4]\n\
- lsls r0, 22\n\
- lsrs r0, 22\n\
- adds r5, r7, 0\n\
- cmp r7, 0\n\
- bge _08044446\n\
- adds r5, r7, 0x7\n\
-_08044446:\n\
- asrs r5, 3\n\
- lsls r4, r5, 3\n\
- subs r4, r7, r4\n\
- adds r0, r4\n\
- lsls r5, 6\n\
- adds r0, r5\n\
- lsls r0, 5\n\
- ldr r2, _08044500 @ =(VRAM + 0x10000)\n\
- adds r1, r0, r2\n\
- adds r0, r6, 0\n\
- mov r2, r10\n\
- bl CpuSet\n\
- adds r6, 0x20\n\
- mov r3, r8\n\
- ldrh r0, [r3, 0x4]\n\
- lsls r0, 22\n\
- lsrs r0, 22\n\
- adds r4, 0x8\n\
- adds r0, r4\n\
- adds r0, r5\n\
- lsls r0, 5\n\
- ldr r2, _08044500 @ =(VRAM + 0x10000)\n\
- adds r1, r0, r2\n\
- adds r0, r6, 0\n\
- mov r2, r10\n\
- bl CpuSet\n\
- adds r6, 0x20\n\
- adds r7, 0x1\n\
- cmp r7, r9\n\
- blt _08044436\n\
-_08044486:\n\
- ldr r6, _080444FC @ =gSprites\n\
- ldr r3, [sp, 0x18]\n\
- ldr r1, [sp, 0x14]\n\
- adds r0, r3, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrh r5, [r0, 0x38]\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- ldr r4, _08044504 @ =gSharedMem\n\
- ldr r2, _08044508 @ =0x00016089\n\
- adds r0, r4, r2\n\
- ldrb r1, [r0]\n\
- mov r0, sp\n\
- adds r0, 0x6\n\
- movs r2, 0x1\n\
- movs r3, 0x2\n\
- bl ConvertIntToDecimalStringN\n\
- ldr r3, _0804450C @ =0x00016088\n\
- adds r4, r3\n\
- ldrb r1, [r4]\n\
- ldr r0, [sp, 0x1C]\n\
- movs r2, 0x1\n\
- movs r3, 0x2\n\
- bl ConvertIntToDecimalStringN\n\
- mov r1, sp\n\
- movs r0, 0\n\
- strb r0, [r1, 0x5]\n\
- movs r0, 0xBA\n\
- strb r0, [r1, 0x8]\n\
- movs r0, 0x80\n\
- lsls r0, 18\n\
- bl sub_80034D4\n\
- movs r7, 0\n\
- lsls r0, r5, 4\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r5, r0, r6\n\
- ldr r4, _08044510 @ =gSharedMem + 0x20\n\
-_080444DA:\n\
- cmp r7, 0x1\n\
- bgt _08044514\n\
- ldrh r1, [r5, 0x4]\n\
- lsls r1, 22\n\
- lsrs r1, 22\n\
- adds r0, r7, 0x2\n\
- adds r1, r0\n\
- lsls r1, 5\n\
- ldr r0, _08044500 @ =(VRAM + 0x10000)\n\
- adds r1, r0\n\
- adds r0, r4, 0\n\
- ldr r2, _080444F8 @ =REG_BG0CNT\n\
- bl CpuSet\n\
- b _0804452A\n\
- .align 2, 0\n\
-_080444F8: .4byte 0x04000008\n\
-_080444FC: .4byte gSprites\n\
-_08044500: .4byte 0x06010000\n\
-_08044504: .4byte gSharedMem\n\
-_08044508: .4byte 0x00016089\n\
-_0804450C: .4byte 0x00016088\n\
-_08044510: .4byte gSharedMem + 0x20\n\
-_08044514:\n\
- ldrh r1, [r5, 0x4]\n\
- lsls r1, 22\n\
- lsrs r1, 22\n\
- adds r1, r7, r1\n\
- lsls r1, 5\n\
- ldr r2, _08044544 @ =0x060100c0\n\
- adds r1, r2\n\
- adds r0, r4, 0\n\
- ldr r2, _08044548 @ =REG_BG0CNT\n\
- bl CpuSet\n\
-_0804452A:\n\
- adds r4, 0x40\n\
- adds r7, 0x1\n\
- cmp r7, 0x4\n\
- ble _080444DA\n\
- add sp, 0x20\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08044544: .4byte 0x060100c0\n\
-_08044548: .4byte 0x04000008\n\
- .syntax divided\n");
-}
-#endif
extern u8 gUnknown_020297ED;
@@ -1427,8 +1020,8 @@ void sub_804454C(void)
{
u8 r6;
- ewram17800[i].unk0_4 ^= 1;
- r6 = ewram17800[i].unk0_4;
+ gBattleSpriteInfo[i].hpNumbersNoBars ^= 1;
+ r6 = gBattleSpriteInfo[i].hpNumbersNoBars;
if (GetBattlerSide(i) == 0)
{
@@ -1482,9 +1075,8 @@ void sub_804454C(void)
}
}
-// This function almost matches except for just two instructions around 0x08044B52 that are swapped.
#ifdef NONMATCHING
-u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
+u8 sub_8044804(u8 a, const struct HpAndStatus *b, u8 c, u8 d)
{
u8 r7;
s16 x;
@@ -1538,7 +1130,7 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
sp14 = 0;
for (i = 0; i < 6; i++) //_080448A0
{
- if (b[i].unk0 != 0xFFFF)
+ if (b[i].hp != 0xFFFF)
sp14++;
}
@@ -1549,16 +1141,16 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
sp18 = CreateSprite(&gSpriteTemplate_820A7A4[r7], x, y, 10);
SetSubspriteTables(&gSprites[sp18], gSubspriteTables_820A6E4);
- gSprites[sp18].pos2.x = r8;
+ gSprites[sp18].x2 = r8;
gSprites[sp18].data[0] = r5;
if (r7 != 0)
{
- gSprites[sp18].pos1.x -= 96;
+ gSprites[sp18].x -= 96;
gSprites[sp18].oam.matrixNum = 8;
}
else
{
- gSprites[sp18].pos1.x += 0x60;
+ gSprites[sp18].x += 0x60;
}
//_0804495A
for (i = 0; i < 6; i++) //_08044970
@@ -1571,23 +1163,23 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
//_080449A0
if (r7 == 0)
{
- gSprites[sp[i]].pos2.x = 0;
- gSprites[sp[i]].pos2.y = 0;
+ gSprites[sp[i]].x2 = 0;
+ gSprites[sp[i]].y2 = 0;
}
//_080449BE
gSprites[sp[i]].data[0] = sp18;
if (r7 == 0)
{
- gSprites[sp[i]].pos1.x += 10 * i + 24;
+ gSprites[sp[i]].x += 10 * i + 24;
gSprites[sp[i]].data[1] = i * 7 + 10;
- gSprites[sp[i]].pos2.x = 120;
+ gSprites[sp[i]].x2 = 120;
}
//_08044A18
else
{
- gSprites[sp[i]].pos1.x -= 10 * (5 - i) + 24;
+ gSprites[sp[i]].x -= 10 * (5 - i) + 24;
gSprites[sp[i]].data[1] = (6 - i) * 7 + 10;
- gSprites[sp[i]].pos2.x = -120;
+ gSprites[sp[i]].x2 = -120;
}
//_08044A56
gSprites[sp[i]].data[2] = r7;
@@ -1599,19 +1191,19 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI) // && b[i] != 0xFFFF && b[i]
{
- if (b[i].unk0 == 0xFFFF)
+ if (b[i].hp == 0xFFFF)
{
//_08044AE6
gSprites[sp[i]].oam.tileNum += 1;
gSprites[sp[i]].data[7] = 1;
// to _08044B52
}
- else if (b[i].unk0 == 0)
+ else if (b[i].hp == 0)
{
gSprites[sp[i]].oam.tileNum += 3;
// to _08044B46
}
- else if (b[i].unk4 != 0)
+ else if (b[i].status != 0)
{
gSprites[sp[i]].oam.tileNum += 2;
}
@@ -1626,13 +1218,13 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
gSprites[sp[i]].data[7] = 1;
// to _08044B52
}
- else if (b[i].unk0 == 0)
+ else if (b[i].hp == 0)
{
//_08044B14
gSprites[sp[i]].oam.tileNum += 3;
// to _08044B46
}
- else if (b[i].unk4 != 0)
+ else if (b[i].status != 0)
{
gSprites[sp[i]].oam.tileNum += 2;
}
@@ -1647,16 +1239,16 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (b[i].unk0 == 0xFFFF)
+ if (b[i].hp == 0xFFFF)
{
gSprites[sp[5 - i]].oam.tileNum += 1;
gSprites[sp[5 - i]].data[7] = 1;
}
- else if (b[i].unk0 == 0)
+ else if (b[i].hp == 0)
{
gSprites[sp[5 - i]].oam.tileNum += 3;
}
- else if (b[i].unk4 != 0)
+ else if (b[i].status != 0)
{
gSprites[sp[5 - i]].oam.tileNum += 2;
}
@@ -1668,11 +1260,11 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
gSprites[sp[5 - i]].oam.tileNum += 1;
gSprites[sp[5 - i]].data[7] = 1;
}
- else if (b[i].unk0 == 0)
+ else if (b[i].hp == 0)
{
gSprites[sp[5 - i]].oam.tileNum += 3;
}
- else if (b[i].unk4 != 0)
+ else if (b[i].status != 0)
{
gSprites[sp[5 - i]].oam.tileNum += 2;
}
@@ -1693,7 +1285,7 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
}
#else
NAKED
-u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d)
+u8 sub_8044804(u8 a, const struct HpAndStatus *b, u8 c, u8 d)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -2408,17 +2000,17 @@ static void sub_8044F70(u8 taskId)
static void sub_8045030(struct Sprite *sprite)
{
- if (sprite->pos2.x != 0)
- sprite->pos2.x += sprite->data[0];
+ if (sprite->x2 != 0)
+ sprite->x2 += sprite->data[0];
}
static void sub_8045048(struct Sprite *sprite)
{
sprite->data[1] += 32;
if (sprite->data[0] > 0)
- sprite->pos2.x += sprite->data[1] >> 4;
+ sprite->x2 += sprite->data[1] >> 4;
else
- sprite->pos2.x -= sprite->data[1] >> 4;
+ sprite->x2 -= sprite->data[1] >> 4;
sprite->data[1] &= 0xF;
}
@@ -2439,17 +2031,17 @@ static void sub_804507C(struct Sprite *sprite)
sprite->data[3] = r2 & 0xFFF0;
if (r3 != 0)
{
- sprite->pos2.x += r2 >> 4;
- if (sprite->pos2.x > 0)
- sprite->pos2.x = 0;
+ sprite->x2 += r2 >> 4;
+ if (sprite->x2 > 0)
+ sprite->x2 = 0;
}
else
{
- sprite->pos2.x -= r2 >> 4;
- if (sprite->pos2.x < 0)
- sprite->pos2.x = 0;
+ sprite->x2 -= r2 >> 4;
+ if (sprite->x2 < 0)
+ sprite->x2 = 0;
}
- if (sprite->pos2.x == 0)
+ if (sprite->x2 == 0)
{
pan = 63;
if (r3 != 0)
@@ -2477,11 +2069,11 @@ static void sub_8045110(struct Sprite *sprite)
r2 += 56;
sprite->data[3] = r2 & 0xFFF0;
if (r0 != 0)
- sprite->pos2.x += r2 >> 4;
+ sprite->x2 += r2 >> 4;
else
- sprite->pos2.x -= r2 >> 4;
- if (sprite->pos2.x + sprite->pos1.x > 248
- || sprite->pos2.x + sprite->pos1.x < -8)
+ sprite->x2 -= r2 >> 4;
+ if (sprite->x2 + sprite->x > 248
+ || sprite->x2 + sprite->x < -8)
{
sprite->invisible = TRUE;
sprite->callback = SpriteCallbackDummy;
@@ -2492,8 +2084,8 @@ void sub_8045180(struct Sprite *sprite)
{
u8 spriteId = sprite->data[0];
- sprite->pos2.x = gSprites[spriteId].pos2.x;
- sprite->pos2.y = gSprites[spriteId].pos2.y;
+ sprite->x2 = gSprites[spriteId].x2;
+ sprite->y2 = gSprites[spriteId].y2;
}
/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn)
@@ -2546,7 +2138,7 @@ void sub_8045180(struct Sprite *sprite)
ptr[1] = 0x13;
ptr[2] = 0x37;
ptr[3] = EOS;
- ptr = ewram520_2 + GetBattlerPosition(gSprites[a].data[6]) * 0x180;
+ ptr = &eBattleInterfaceGfxBuffer[0x520 + GetBattlerPosition(gSprites[a].data[6]) * 0x180];
sub_80034D4(ptr, gDisplayedStringBattle);
i = 0;
@@ -2702,7 +2294,7 @@ static void sub_8045458(u8 a, u8 b)
for (i = 0; i < 3; i++)
CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8 + i) * 32, 32);
- if (!ewram17800[r7].unk0_4)
+ if (!gBattleSpriteInfo[r7].hpNumbersNoBars)
CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 64);
sub_8045458(a, 1);
@@ -2717,7 +2309,7 @@ static void sub_8045458(u8 a, u8 b)
CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8) * 32, 96);
if (IsDoubleBattle() == TRUE || GetBattlerSide(r7) == TRUE)
{
- if (!ewram17800[r7].unk0_4)
+ if (!gBattleSpriteInfo[r7].hpNumbersNoBars)
{
CpuCopy32(sub_8043CDC(0), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 32);
CpuCopy32(sub_8043CDC(0x41), OBJ_VRAM0 + (gSprites[r10].oam.tileNum + 1) * 32, 32);
@@ -2794,7 +2386,7 @@ static u8 sub_80457E8(u8 a, u8 b)
s32 r7;
u8 *addr;
- r6 = ewram520_2 + GetBattlerPosition(gSprites[a].data[6]) * 0x180;
+ r6 = &eBattleInterfaceGfxBuffer[0x520 + GetBattlerPosition(gSprites[a].data[6]) * 0x180];
r8 = 7;
sub_80034D4(r6, BattleText_SafariBalls);
for (i = 0; i < r8; i++)
@@ -2823,10 +2415,10 @@ static u8 sub_80457E8(u8 a, u8 b)
r7 = sub_8003504(r7, gNumSafariBalls, 10, 1);
StringAppend(r7, BattleText_HighlightRed);
status = GetBattlerPosition(gSprites[a].data[6]);
- r7 = ewram520_2 + status * 0x180;
+ r7 = &eBattleInterfaceGfxBuffer[0x520 + status * 0x180];
r6 = 5;
sub_80034D4(r7, gDisplayedStringBattle);
- r7 = ewram520_2 + status * 0x180 + 32;
+ r7 = &eBattleInterfaceGfxBuffer[0x520 + status * 0x180 + 32];
for (i = 6; i < 6 + r6; i++)
{
CpuCopy32(r7, OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x18 + MACRO1(i)) * 32, 32);
@@ -2919,24 +2511,24 @@ s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2)
if (c == 0)
{
- r6 = sub_8045F58(ewram17850[a].unk4, ewram17850[a].unk8, ewram17850[a].unkC, &ewram17850[a].unk10, 6, 1);
+ r6 = sub_8045F58(eBattleBars[a].maxValue, eBattleBars[a].oldValue, eBattleBars[a].receivedValue, &eBattleBars[a].currValue, 6, 1);
}
else
{
u16 r5;
s32 r8;
- r5 = GetScaledExpFraction(ewram17850[a].unk8, ewram17850[a].unkC, ewram17850[a].unk4, 8);
+ r5 = GetScaledExpFraction(eBattleBars[a].oldValue, eBattleBars[a].receivedValue, eBattleBars[a].maxValue, 8);
if (r5 == 0)
r5 = 1;
- r8 = ewram17850[a].unkC;
+ r8 = eBattleBars[a].receivedValue;
r5 = ABS(r8 / r5);
- r6 = sub_8045F58(ewram17850[a].unk4, ewram17850[a].unk8, r8, &ewram17850[a].unk10, 8, r5);
+ r6 = sub_8045F58(eBattleBars[a].maxValue, eBattleBars[a].oldValue, r8, &eBattleBars[a].currValue, 8, r5);
}
- if (c == 1 || (c == 0 && (!ewram17800[a].unk0_4)))
+ if (c == 1 || (c == 0 && (!gBattleSpriteInfo[a].hpNumbersNoBars)))
sub_8045D58(a, c);
if (r6 == -1)
- ewram17850[a].unk10 = 0;
+ eBattleBars[a].currValue = 0;
return r6;
}
@@ -2950,7 +2542,12 @@ static void sub_8045D58(u8 a, u8 b)
switch (b)
{
case 0:
- r0 = sub_804602C(ewram17850[a].unk4, ewram17850[a].unk8, ewram17850[a].unkC, &ewram17850[a].unk10, sp8, 6);
+ r0 = CalcBarFilledPixels(eBattleBars[a].maxValue,
+ eBattleBars[a].oldValue,
+ eBattleBars[a].receivedValue,
+ &eBattleBars[a].currValue,
+ sp8,
+ 6);
r8 = 3;
if (r0 <= 0x18)
{
@@ -2960,7 +2557,7 @@ static void sub_8045D58(u8 a, u8 b)
}
for (i = 0; i < 6; i++)
{
- u8 r4 = gSprites[ewram17850[a].unk0].data[5];
+ u8 r4 = gSprites[eBattleBars[a].healthboxSpriteId].data[5];
if (i < 2)
CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 2 + i) * 32, 32);
else
@@ -2968,7 +2565,12 @@ static void sub_8045D58(u8 a, u8 b)
}
break;
case 1:
- sub_804602C(ewram17850[a].unk4, ewram17850[a].unk8, ewram17850[a].unkC, &ewram17850[a].unk10, sp8, 8);
+ CalcBarFilledPixels(eBattleBars[a].maxValue,
+ eBattleBars[a].oldValue,
+ eBattleBars[a].receivedValue,
+ &eBattleBars[a].currValue,
+ sp8,
+ 8);
r0 = GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_LEVEL);
if (r0 == 100)
{
@@ -2978,9 +2580,9 @@ static void sub_8045D58(u8 a, u8 b)
for (i = 0; i < 8; i++)
{
if (i < 4)
- CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[ewram17850[a].unk0].oam.tileNum + 0x24 + i) * 32, 32);
+ CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[eBattleBars[a].healthboxSpriteId].oam.tileNum + 0x24 + i) * 32, 32);
else
- CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + 0xB80 + (i + gSprites[ewram17850[a].unk0].oam.tileNum) * 32, 32);
+ CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + 0xB80 + (i + gSprites[eBattleBars[a].healthboxSpriteId].oam.tileNum) * 32, 32);
}
break;
}
@@ -3070,7 +2672,7 @@ static int sub_8045F58(s32 a, s32 b, int c, int *d, u8 e, u16 f)
return ret;
}
-static u8 sub_804602C(int a, int b, int c, int *d, u8 *e, u8 f)
+static u8 CalcBarFilledPixels(int a, int b, int c, int *d, u8 *e, u8 f)
{
s32 r5 = b - c;
u8 r3;
@@ -3113,6 +2715,7 @@ static u8 sub_804602C(int a, int b, int c, int *d, u8 *e, u8 f)
return r3;
}
+// These two functions seem as if they were made for testing the health bar.
s16 sub_80460C8(struct BattleInterfaceStruct1 *a, int *b, u16 *c, int d)
{
u16 r7;
@@ -3134,7 +2737,7 @@ static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, u16 *c)
u16 sp10[6];
u8 i;
- sub_804602C(a->unk0, a->unk4, a->unk8, b, (u8 *)sp8, 6);
+ CalcBarFilledPixels(a->unk0, a->unk4, a->unk8, b, (u8 *)sp8, 6);
for (i = 0; i < 6; i++)
sp10[i] = (a->unkC_0 << 12) | (a->unk10 + sp8[i]);
CpuCopy16(sp10, c, sizeof(sp10));
diff --git a/src/battle_main.c b/src/battle_main.c
index e41b2a114..fc9686a0a 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -47,6 +47,7 @@
#include "scanline_effect.h"
#include "util.h"
#include "ewram.h"
+#include "battle_string_ids.h"
struct UnknownStruct7
{
@@ -64,9 +65,9 @@ struct UnknownStruct8
u8 unk1A;
};
-extern void sub_802BBD4();
+extern void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0);
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern const u8 Str_821F7B8[];
extern u8 gUnknown_02023A14_50;
extern const u16 gBattleTextboxPalette[];
@@ -76,7 +77,7 @@ extern const u8 gUnknown_Debug_821F7F3[];
extern const u8 BattleText_YesNo[];
extern u8 gStatStageRatios[][2];
extern u8 gActionsByTurnOrder[4];
-extern struct UnknownPokemonStruct2 gMultiPartnerParty[];
+extern struct MultiBattlePokemonTx gMultiPartnerParty[];
extern u8 gBattleBufferB[][0x200];
extern u8 gActiveBattler;
extern u32 gBattleControllerExecFlags;
@@ -91,15 +92,15 @@ extern u8 gPotentialItemEffectBattler;
extern u8 gAbsentBattlerFlags;
extern u8 gMultiHitCounter;
extern u8 gActionForBanks[];
-extern u16 gUnknown_02024C2C[];
+extern u16 gLastPrintedMoves[];
extern u16 gLastMoves[];
extern u16 gLastLandedMoves[];
extern u16 gLastHitByType[];
-extern u16 gUnknown_02024C4C[];
+extern u16 gLastResultingMoves[];
extern u16 gLockedMoves[];
extern u16 gChosenMovesByBanks[];
extern u32 gHitMarker;
-extern u8 gUnknown_02024C70[];
+extern u8 sUnusedBattlersArray[];
extern u16 gSideStatuses[];
extern u32 gStatuses3[];
//extern u8 gDisableStructs[][0x1C];
@@ -109,10 +110,10 @@ extern u16 gRandomTurnNumber;
extern u8 gBattleCommunication[];
extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is.
extern u8 gBattleOutcome;
-extern u16 gUnknown_02024DE8;
+extern u16 gIntroSlideFlags;
extern u8 gActionSelectionCursor[];
extern u8 gMoveSelectionCursor[];
-extern u8 gUnknown_02038470[];
+extern u8 gBattlePartyCurrentOrder[];
MainCallback gPreBattleCallback1;
u8 gUnknown_03004344;
u8 gUnknown_03004348;
@@ -204,7 +205,7 @@ s8 gBattleTerrain;
void (*gBattleMainFunc)(void);
u32 gUnknown_03004284;
-struct Window gUnknown_03004210;
+struct Window gWindowTemplate_Contest_MoveDescription;
struct Window gUnknown_030041D0;
struct Window gUnknown_03004250;
@@ -250,7 +251,7 @@ void CB2_InitBattleInternal(void)
gScanlineEffectRegBuffers[0][i] = 0xFF10;
gScanlineEffectRegBuffers[1][i] = 0xFF10;
}
- //ScanlineEffect_SetParams(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
+ //ScanlineEffect_SetParams(gUnknown_081F9674.totalPoints, gUnknown_081F9674.round1Points, gUnknown_081F9674.random);
ScanlineEffect_SetParams(gUnknown_081F9674);
Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
@@ -270,7 +271,7 @@ void CB2_InitBattleInternal(void)
gBattleTerrain = BattleSetup_GetTerrain();
#endif
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6C58);
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
@@ -283,7 +284,7 @@ void CB2_InitBattleInternal(void)
SetVBlankCallback(sub_800FCFC);
SetUpBattleVarsAndBirchPoochyena();
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- SetMainCallback2(sub_800F298);
+ SetMainCallback2(CB2_HandleStartMultiBattle);
else
SetMainCallback2(CB2_HandleStartBattle);
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -301,7 +302,7 @@ void CB2_InitBattleInternal(void)
gBattleCommunication[0] = 0;
}
-void sub_800E9EC(void)
+void BufferPartyVsScreenHealth_AtStart(void)
{
u16 r6 = 0;
u16 species;
@@ -330,21 +331,21 @@ void sub_800E9EC(void)
if (species != SPECIES_EGG && hp == 0)
r6 |= 3 << i * 2;
}
- gBattleStruct->unk2 = r6;
- gBattleStruct->unk3 = r6 >> 8;
+ eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsLo = r6;
+ eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsHi = r6 >> 8;
}
static void SetPlayerBerryDataInBattleStruct(void)
{
s32 i;
- struct UnknownStruct8 *_ewram4 = &ewram4;
+ struct BattleEnigmaBerry * battleBerry = &eMultiTxBuffer.linkPartnerHeader.battleEnigmaBerry;
for (i = 0; i < 7; i++)
- _ewram4->unk0[i] = gSaveBlock1.enigmaBerry.berry.name[i];
+ battleBerry->name[i] = gSaveBlock1.enigmaBerry.berry.name[i];
for (i = 0; i < 18; i++)
- _ewram4->unk8[i] = gSaveBlock1.enigmaBerry.itemEffect[i];
- _ewram4->unk7 = gSaveBlock1.enigmaBerry.holdEffect;
- _ewram4->unk1A = gSaveBlock1.enigmaBerry.holdEffectParam;
+ battleBerry->itemEffect[i] = gSaveBlock1.enigmaBerry.itemEffect[i];
+ battleBerry->holdEffect = gSaveBlock1.enigmaBerry.holdEffect;
+ battleBerry->holdEffectParam = gSaveBlock1.enigmaBerry.holdEffectParam;
}
void SetAllPlayersBerryData(void)
@@ -419,7 +420,7 @@ void CB2_HandleStartBattle(void)
BuildOamBuffer();
playerId = GetMultiplayerId();
- ewram160CB = playerId;
+ gBattleStruct->multiplayerId = playerId;
enemyId = playerId ^ 1;
switch (gBattleCommunication[0])
@@ -429,9 +430,9 @@ void CB2_HandleStartBattle(void)
{
if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
{
- gBattleStruct->unk0 = 1;
- gBattleStruct->unk1 = 1;
- sub_800E9EC();
+ eMultiTxBuffer.linkPartnerHeader.versionSignatureLo = 1;
+ eMultiTxBuffer.linkPartnerHeader.versionSignatureHi = 1;
+ BufferPartyVsScreenHealth_AtStart();
SetPlayerBerryDataInBattleStruct();
#if DEBUG
if (gUnknown_02023A14_50 & 8)
@@ -443,7 +444,7 @@ void CB2_HandleStartBattle(void)
}
}
#endif
- SendBlock(bitmask_all_link_players_but_self(), gBattleStruct, 32);
+ SendBlock(bitmask_all_link_players_but_self(), &eMultiTxBuffer.linkPartnerHeader, sizeof(eMultiTxBuffer.linkPartnerHeader));
gBattleCommunication[0] = 1;
}
}
@@ -494,11 +495,11 @@ void CB2_HandleStartBattle(void)
}
}
SetAllPlayersBerryData();
- taskId = CreateTask(sub_800DE30, 0);
+ taskId = CreateTask(InitLinkBattleVsScreen, 0);
gTasks[taskId].data[1] = 0x10E;
gTasks[taskId].data[2] = 0x5A;
gTasks[taskId].data[5] = 0;
- gTasks[taskId].data[3] = gBattleStruct->unk2 | (gBattleStruct->unk3 << 8);
+ gTasks[taskId].data[3] = eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsLo | (eMultiTxBuffer.linkPartnerHeader.vsScreenHealthFlagsHi << 8);
gTasks[taskId].data[4] = gBlockRecvBuffer[enemyId][1];
gBattleCommunication[0]++;
}
@@ -576,7 +577,7 @@ void CB2_HandleStartBattle(void)
}
}
-void sub_800F02C(void)
+void PrepareOwnMultiPartnerBuffer(void)
{
s32 i;
@@ -598,7 +599,7 @@ void sub_800F02C(void)
if (gMultiPartnerParty[i].language != 1)
PadNameString(nickname, 0);
}
- memcpy(gSharedMem, gMultiPartnerParty, 0x60);
+ memcpy(eMultiTxBuffer.multiBattleMons, gMultiPartnerParty, 3 * sizeof(struct MultiBattlePokemonTx));
}
void sub_800F104(void)
@@ -609,10 +610,10 @@ void sub_800F104(void)
s32 i;
playerId = GetMultiplayerId();
- ewram160CB = playerId;
+ gBattleStruct->multiplayerId = playerId;
// Seriously, Game Freak?
- pSavedCallback = ewram160C4_Callback;
- pSavedBattleTypeFlags = ewram160C2_Flags;
+ pSavedCallback = &gBattleStruct->unk160C4;
+ pSavedBattleTypeFlags = &gBattleStruct->unk160C2;
RunTasks();
AnimateSprites();
BuildOamBuffer();
@@ -634,8 +635,8 @@ void sub_800F104(void)
#endif
if (IsLinkTaskFinished())
{
- sub_800F02C();
- SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60);
+ PrepareOwnMultiPartnerBuffer();
+ SendBlock(bitmask_all_link_players_but_self(), eMultiTxBuffer.multiBattleMons, 3 * sizeof(struct MultiBattlePokemonTx));
gBattleCommunication[0]++;
}
}
@@ -644,7 +645,7 @@ void sub_800F104(void)
if ((GetBlockReceivedStatus() & 0xF) == 0xF)
{
//s32 i;
-
+ // Get your multi battle partner's party
ResetBlockReceivedFlags();
for (i = 0; i < 4; i++)
{
@@ -652,7 +653,7 @@ void sub_800F104(void)
{
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerId].id & 1))
|| ((gLinkPlayers[i].id & 1) && (gLinkPlayers[playerId].id & 1)))
- memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], 0x60);
+ memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], 3 * sizeof(struct MultiBattlePokemonTx));
}
}
gBattleCommunication[0]++;
@@ -666,7 +667,7 @@ void sub_800F104(void)
if (!gPaletteFade.active)
{
gBattleCommunication[0] = 3;
- sub_800832C();
+ SetCloseLinkCallback();
}
break;
case 3:
@@ -680,13 +681,13 @@ void sub_800F104(void)
}
}
-void sub_800F298(void)
+void CB2_HandleStartMultiBattle(void)
{
u8 playerId;
s32 id;
playerId = GetMultiplayerId();
- ewram160CB = playerId;
+ gBattleStruct->multiplayerId = playerId;
RunTasks();
AnimateSprites();
BuildOamBuffer();
@@ -707,11 +708,11 @@ void sub_800F298(void)
#endif
if (IsLinkTaskFinished())
{
- gBattleStruct->unk0 = 1;
- gBattleStruct->unk1 = 1;
- sub_800E9EC();
+ *(&eMultiTxBuffer.linkPartnerHeader.versionSignatureLo) = 1;
+ *(&eMultiTxBuffer.linkPartnerHeader.versionSignatureHi) = 1;
+ BufferPartyVsScreenHealth_AtStart();
SetPlayerBerryDataInBattleStruct();
- SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20);
+ SendBlock(bitmask_all_link_players_but_self(), &eMultiTxBuffer.linkPartnerHeader, sizeof(eMultiTxBuffer.linkPartnerHeader));
gBattleCommunication[0]++;
}
}
@@ -722,6 +723,7 @@ void sub_800F298(void)
u8 taskId;
ResetBlockReceivedFlags();
+ // LinkBattleComputeBattleTypeFlags
id = 0;
if (gBlockRecvBuffer[0][0] == 0x100)
{
@@ -766,10 +768,10 @@ void sub_800F298(void)
}
}
SetAllPlayersBerryData();
- memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3);
- taskId = CreateTask(sub_800DE30, 0);
- gTasks[taskId].data[1] = 0x10E;
- gTasks[taskId].data[2] = 0x5A;
+ memcpy(eMultiBattleSetupPartySendBuffer, gPlayerParty, sizeof(struct Pokemon) * 3);
+ taskId = CreateTask(InitLinkBattleVsScreen, 0);
+ gTasks[taskId].data[1] = 270;
+ gTasks[taskId].data[2] = 90;
gTasks[taskId].data[5] = 0;
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[4] = 0;
@@ -798,7 +800,7 @@ void sub_800F298(void)
case 2:
if (IsLinkTaskFinished())
{
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
+ SendBlock(bitmask_all_link_players_but_self(), eMultiBattleSetupPartySendBuffer, sizeof(struct Pokemon) * 2);
gBattleCommunication[0]++;
}
}
@@ -862,7 +864,7 @@ void sub_800F298(void)
case 4:
if (IsLinkTaskFinished())
{
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon));
+ SendBlock(bitmask_all_link_players_but_self(), eMultiBattleSetupPartySendBuffer + 2, sizeof(struct Pokemon));
gBattleCommunication[0]++;
}
break;
@@ -986,7 +988,7 @@ void BattleMainCB2(void)
}
#endif
- Text_UpdateWindowInBattle(&gUnknown_03004210);
+ Text_UpdateWindowInBattle(&gWindowTemplate_Contest_MoveDescription);
UpdatePaletteFade();
RunTasks();
}
@@ -1171,9 +1173,9 @@ void nullsub_36(struct Sprite *sprite)
void sub_800FDB0(struct Sprite *sprite)
{
if (sprite->data[0] != 0)
- sprite->pos1.x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
+ sprite->x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
else
- sprite->pos1.x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8);
+ sprite->x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8);
sprite->data[2] += 0x180;
if (sprite->affineAnimEnded)
{
@@ -1195,7 +1197,7 @@ void sub_800FE40(u8 taskId)
{
struct Pokemon *sp4 = NULL;
struct Pokemon *sp8 = NULL;
- u8 r2 = ewram160CB;
+ u8 r2 = gBattleStruct->multiplayerId;
u32 r7;
s32 i;
@@ -1308,7 +1310,7 @@ void c2_8011A1C(void)
gBattle_BG3_X = 0;
gBattle_BG3_Y = 0;
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6C58);
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
sub_800D6D4();
@@ -1321,7 +1323,7 @@ void c2_8011A1C(void)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
SetVBlankCallback(sub_800FCFC);
- taskId = CreateTask(sub_800DE30, 0);
+ taskId = CreateTask(InitLinkBattleVsScreen, 0);
gTasks[taskId].data[1] = 0x10E;
gTasks[taskId].data[2] = 0x5A;
gTasks[taskId].data[5] = 1;
@@ -1500,7 +1502,7 @@ void debug_sub_8010A7C(u8 a, u8 b)
for (i = 0; i < b; i++)
gBattleTextBuff1[i] = a;
- gBattleTextBuff1[i] = EOS;
+ gBattleTextBuff1[i] = B_BUFF_EOS;
}
void debug_sub_8010AAC(u8 a)
@@ -2083,9 +2085,9 @@ void debug_sub_801174C(void)
{
gUnknown_02023A14_50 |= 0x10;
if (gUnknown_Debug_2023A76[0][2] > 5)
- gSharedMem[0x160A3] = gUnknown_Debug_2023A76[0][2] - 2;
+ gBattleStruct->unk160A3 = gUnknown_Debug_2023A76[0][2] - 2;
else
- gSharedMem[0x160A3] = gUnknown_Debug_2023A76[0][2];
+ gBattleStruct->unk160A3 = gUnknown_Debug_2023A76[0][2];
sub_80408BC();
}
else if (gUnknown_Debug_2023A76[0][0x22] == 5)
@@ -2239,7 +2241,7 @@ void debug_sub_8011EA0(u8 a)
gUnknown_Debug_03004360 * 32 + 25,
0);
Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
- gBattleTextBuff1[0] = EOS;
+ gBattleTextBuff1[0] = B_BUFF_EOS;
#endif
StringAppend(gBattleTextBuff1, gSpeciesNames[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]]);
Text_InitWindow(
@@ -2295,7 +2297,7 @@ void debug_sub_8011EA0(u8 a)
gUnknown_Debug_03004360 * 32 + 25,
0);
Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
- gBattleTextBuff1[0] = EOS;
+ gBattleTextBuff1[0] = B_BUFF_EOS;
#endif
if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a] != 0)
StringAppend(gBattleTextBuff1, ItemId_GetName(gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]));
@@ -2354,7 +2356,7 @@ void debug_sub_8011EA0(u8 a)
length++;
break;
}
- gBattleTextBuff1[length] = EOS;
+ gBattleTextBuff1[length] = B_BUFF_EOS;
Text_InitWindow(
&gUnknown_Debug_03004370,
gBattleTextBuff1,
@@ -2416,7 +2418,7 @@ void debug_sub_8012294(void)
gUnknown_Debug_03004360 * 32 + 25,
0);
Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
- gBattleTextBuff1[0] = EOS;
+ gBattleTextBuff1[0] = B_BUFF_EOS;
#endif
StringAppend(gBattleTextBuff1, gMoveNames[gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r5 / 5][gUnknown_Debug_030043A8]]);
Text_InitWindow(
@@ -2616,17 +2618,17 @@ void debug_sub_8012688(void)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
gCurrentMove = 1;
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6C58);
DecompressPicFromTable_2(
&gMonFrontPicTable[gCurrentMove],
gMonFrontPicCoords[gCurrentMove].coords,
gMonFrontPicCoords[gCurrentMove].y_offset,
(void *)EWRAM,
- gUnknown_081FAF4C[1],
+ gMonSpriteGfx_Sprite_ptr[1],
gCurrentMove);
LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
GetMonSpriteTemplate_803C56C(gCurrentMove, 1);
- spriteId = CreateSprite(&gUnknown_02024E8C, 176, 40 + gMonFrontPicCoords[gCurrentMove].y_offset, 40);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, 176, 40 + gMonFrontPicCoords[gCurrentMove].y_offset, 40);
gSprites[spriteId].callback = nullsub_37;
gSprites[spriteId].oam.paletteNum = 1;
REG_DISPCNT = 0x1F40;
@@ -2643,7 +2645,7 @@ void debug_sub_8012878(void)
{
AnimateSprites();
BuildOamBuffer();
- Text_UpdateWindowInBattle(&gUnknown_03004210);
+ Text_UpdateWindowInBattle(&gWindowTemplate_Contest_MoveDescription);
UpdatePaletteFade();
RunTasks();
if (gMain.heldKeys == (SELECT_BUTTON | R_BUTTON))
@@ -2653,26 +2655,26 @@ void debug_sub_8012878(void)
void debug_sub_80128B4(void)
{
debug_sub_8010A7C(0, 9);
- Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
ConvertIntToDecimalStringN(gBattleTextBuff1, gCurrentMove, 2, 3);
gBattleTextBuff1[3] = CHAR_SPACE;
- gBattleTextBuff1[4] = EOS;
+ gBattleTextBuff1[4] = B_BUFF_EOS;
StringAppend(gBattleTextBuff1, gSpeciesNames[gCurrentMove]);
- Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
void debug_sub_8012938(u8 taskId)
{
debug_sub_8010A7C(0, 7);
- Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
StringCopy(gBattleTextBuff1, Str_821F7B8);
ConvertIntToDecimalStringN(gBattleTextBuff1 + 4, gUnknown_Debug_2023B62[gCurrentMove - 1], 2, 3);
- Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
- Text_PrintWindow8002F44(&gUnknown_03004210);
- gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1];
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
+ gSprites[gTasks[taskId].data[1]].y2 = -gUnknown_Debug_2023B62[gCurrentMove - 1];
}
void debug_sub_80129F8(u8 taskId)
@@ -2682,11 +2684,11 @@ void debug_sub_80129F8(u8 taskId)
gMonFrontPicCoords[gCurrentMove].coords,
gMonFrontPicCoords[gCurrentMove].y_offset,
(void *)EWRAM,
- gUnknown_081FAF4C[1],
+ gMonSpriteGfx_Sprite_ptr[1],
gCurrentMove);
LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
- gSprites[gTasks[taskId].data[1]].pos1.y = gMonFrontPicCoords[gCurrentMove].y_offset + 40;
- gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1];
+ gSprites[gTasks[taskId].data[1]].y = gMonFrontPicCoords[gCurrentMove].y_offset + 40;
+ gSprites[gTasks[taskId].data[1]].y2 = -gUnknown_Debug_2023B62[gCurrentMove - 1];
StartSpriteAnim(&gSprites[gTasks[taskId].data[1]], 0);
}
@@ -2731,8 +2733,8 @@ void debug_sub_8012B70(u8 taskId, u8 b)
{
sub_802BBD4(24, 28, 29, 33, 0);
gTasks[taskId].data[0] = 2;
- Text_InitWindow(&gUnknown_03004210, Str_821F7DA, 656, 26, 29);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, Str_821F7DA, 656, 26, 29);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
gTasks[taskId].data[3] = 0;
debug_sub_8012B2C(0);
}
@@ -2741,25 +2743,25 @@ void debug_sub_8012B70(u8 taskId, u8 b)
void debug_sub_8012C08(u8 taskId, u8 b)
{
debug_sub_8010A7C(0, 9);
- Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
debug_sub_8010A7C(0, 7);
- Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
sub_802BBD4(24, 28, 29, 33, 0);
if (b != 0)
{
gTasks[taskId].data[0] = 4;
- Text_InitWindow(&gUnknown_03004210, gUnknown_Debug_821F7F3, 144, 2, 35);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gUnknown_Debug_821F7F3, 144, 2, 35);
}
else
{
gTasks[taskId].data[0] = 3;
- Text_InitWindow(&gUnknown_03004210, Str_821F7EA, 144, 2, 35);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, Str_821F7EA, 144, 2, 35);
}
- Text_PrintWindow8002F44(&gUnknown_03004210);
- Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 656, 26, 29);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_YesNo, 656, 26, 29);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
gTasks[taskId].data[3] = 1;
debug_sub_8012B2C(1);
}
@@ -2771,8 +2773,8 @@ void debug_sub_8012D10(u8 taskId)
case 0:
debug_sub_80128B4();
debug_sub_8012938(taskId);
- Text_InitWindow(&gUnknown_03004210, Str_821F7BD, 400, 19, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, Str_821F7BD, 400, 19, 35);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
gTasks[taskId].data[0]++;
sub_802E3E4(gTasks[taskId].data[2], 0);
break;
@@ -3064,10 +3066,10 @@ void oac_poke_opponent(struct Sprite *sprite)
void sub_8010278(struct Sprite *sprite)
{
- if ((gUnknown_02024DE8 & 1) == 0)
+ if ((gIntroSlideFlags & 1) == 0)
{
- sprite->pos2.x += 2;
- if (sprite->pos2.x == 0)
+ sprite->x2 += 2;
+ if (sprite->x2 == 0)
{
sprite->callback = sub_80102AC;
PlayCry1(sprite->data[2], 25);
@@ -3121,8 +3123,8 @@ void sub_8010384(struct Sprite *sprite)
u16 species;
u8 yOffset;
- if (ewram17800[r6].transformedSpecies != 0)
- species = ewram17800[r6].transformedSpecies;
+ if (gBattleSpriteInfo[r6].transformedSpecies != 0)
+ species = gBattleSpriteInfo[r6].transformedSpecies;
else
species = sprite->data[2];
@@ -3168,7 +3170,7 @@ void sub_8010494(struct Sprite *sprite)
if (sprite->data[4] == 0)
{
sprite->data[4] = 2;
- sprite->pos2.y += 8;
+ sprite->y2 += 8;
sprite->data[3]--;
if (sprite->data[3] < 0)
{
@@ -3178,7 +3180,7 @@ void sub_8010494(struct Sprite *sprite)
else
{
// this should use a MEMSET_ALT, but *(dst++) wont match with it.
- dst = (u8 *)gUnknown_081FAF4C[GetBattlerPosition(sprite->data[0])] + (gBattleMonForms[sprite->data[0]] << 11) + (sprite->data[3] << 8);
+ dst = (u8 *)gMonSpriteGfx_Sprite_ptr[GetBattlerPosition(sprite->data[0])] + (gBattleMonForms[sprite->data[0]] << 11) + (sprite->data[3] << 8);
for (i = 0; i < 0x100; i++)
*(dst++) = 0;
StartSpriteAnim(sprite, gBattleMonForms[sprite->data[0]]);
@@ -3217,10 +3219,10 @@ void sub_80105A0(struct Sprite *sprite)
void oac_poke_ally_(struct Sprite *sprite)
{
- if ((gUnknown_02024DE8 & 1) == 0)
+ if ((gIntroSlideFlags & 1) == 0)
{
- sprite->pos2.x -= 2;
- if (sprite->pos2.x == 0)
+ sprite->x2 -= 2;
+ if (sprite->x2 == 0)
{
sprite->callback = nullsub_86;
sprite->data[1] = 0;
@@ -3239,10 +3241,10 @@ void nullsub_86(struct Sprite *sprite)
void sub_80105EC(struct Sprite *sprite)
{
- if ((gUnknown_02024DE8 & 1) == 0)
+ if ((gIntroSlideFlags & 1) == 0)
{
- sprite->pos2.x += sprite->data[1];
- sprite->pos2.y += sprite->data[2];
+ sprite->x2 += sprite->data[1];
+ sprite->y2 += sprite->data[2];
}
}
@@ -3281,8 +3283,8 @@ void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d)
gSprites[spriteId].data[2] = d;
gSprites[spriteId].data[3] = objectID;
gSprites[spriteId].data[4] = b;
- gSprites[objectID].pos2.x = 0;
- gSprites[objectID].pos2.y = 0;
+ gSprites[objectID].x2 = 0;
+ gSprites[objectID].y2 = 0;
}
void dp11b_obj_free(u8 a, u8 b)
@@ -3305,8 +3307,8 @@ void dp11b_obj_free(u8 a, u8 b)
DestroySprite(&gSprites[ewram17810[a].unk3]);
ewram17810[a].unk0_2 = 0;
}
- gSprites[r4].pos2.x = 0;
- gSprites[r4].pos2.y = 0;
+ gSprites[r4].x2 = 0;
+ gSprites[r4].y2 = 0;
}
void objc_dp11b_pingpong(struct Sprite *sprite)
@@ -3319,7 +3321,7 @@ void objc_dp11b_pingpong(struct Sprite *sprite)
else
var = sprite->data[0];
- gSprites[spriteId].pos2.y = Sin(var, sprite->data[2]) + sprite->data[2];
+ gSprites[spriteId].y2 = Sin(var, sprite->data[2]) + sprite->data[2];
sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
}
@@ -3329,7 +3331,7 @@ void nullsub_41(void)
void sub_8010800(void)
{
- sub_8010874();
+ BattleStartClearSetData();
gBattleCommunication[1] = 0;
gBattleMainFunc = bc_8012FAC;
}
@@ -3339,39 +3341,39 @@ void debug_sub_80138CC(void)
{
if (GetBattlerSide(gActiveBattler) == 0)
{
- switch (gSharedMem[0x160FD])
+ switch (gBattleStruct->unk160FD)
{
case 0:
if (gBattlerControllerFuncs[gActiveBattler] == sub_802C098)
- gSharedMem[0x160FD]++;
+ gBattleStruct->unk160FD++;
break;
case 1:
gMain.heldKeys = A_BUTTON;
gMain.newKeys = A_BUTTON;
- gSharedMem[0x160FD]++;
- gSharedMem[0x160FE] = 0x80;
+ gBattleStruct->unk160FD++;
+ gBattleStruct->unk160FE = 0x80;
break;
case 2:
- gSharedMem[0x160FE]--;
- if (gSharedMem[0x160FE] == 0)
+ gBattleStruct->unk160FE--;
+ if (gBattleStruct->unk160FE == 0)
{
gMain.heldKeys = A_BUTTON;
gMain.newKeys = A_BUTTON;
- gSharedMem[0x160FD]++;
- gSharedMem[0x160FE] = 0x80;
+ gBattleStruct->unk160FD++;
+ gBattleStruct->unk160FE = 0x80;
}
break;
case 3:
- gSharedMem[0x160FE]--;
- if (gSharedMem[0x160FE] == 0)
+ gBattleStruct->unk160FE--;
+ if (gBattleStruct->unk160FE == 0)
{
gMain.heldKeys = A_BUTTON;
gMain.newKeys = A_BUTTON;
- gSharedMem[0x160FD]++;
+ gBattleStruct->unk160FD++;
}
break;
case 4:
- gSharedMem[0x160FD] = 0;
+ gBattleStruct->unk160FD = 0;
break;
}
}
@@ -3398,7 +3400,7 @@ void BattleMainCB1(void)
}
}
-void sub_8010874(void)
+void BattleStartClearSetData(void)
{
s32 i;
u32 j;
@@ -3412,80 +3414,87 @@ void sub_8010874(void)
gStatuses3[i] = 0;
MEMSET_ALT(&gDisableStructs[i], 0, 0x1C, j, r4);
- gDisableStructs[i].isFirstTurn= 2;
- gUnknown_02024C70[i] = 0;
+ gDisableStructs[i].isFirstTurn = 2;
+ sUnusedBattlersArray[i] = 0;
gLastMoves[i] = 0;
gLastLandedMoves[i] = 0;
gLastHitByType[i] = 0;
- gUnknown_02024C4C[i] = 0;
+ gLastResultingMoves[i] = 0;
gLastHitBy[i] = 0xFF;
gLockedMoves[i] = 0;
- gUnknown_02024C2C[i] = 0;
- eFlashFireArr.arr[i] = 0;
+ gLastPrintedMoves[i] = 0;
+ eBattleFlagsArr.arr[i] = 0;
}
for (i = 0; i < 2; i++)
{
gSideStatuses[i] = 0;
- MEMSET_ALT(&gSideTimers[i], 0, 12, j, r4);
+ MEMSET_ALT(&gSideTimers[i], 0, sizeof(struct SideTimer), j, r4);
}
gBattlerAttacker = 0;
gBattlerTarget = 0;
gBattleWeather = 0;
- MEMSET_ALT(&gWishFutureKnock, 0, 0x2C, i, r4);
+ MEMSET_ALT(&gWishFutureKnock, 0, sizeof(struct WishFutureKnock), i, r4);
gHitMarker = 0;
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE)
gHitMarker = HITMARKER_NO_ANIMATIONS;
- ewram16084 = gSaveBlock2.optionsBattleStyle;
+
+ gBattleStruct->battleStyle = gSaveBlock2.optionsBattleStyle;
+
gMultiHitCounter = 0;
gBattleOutcome = 0;
gBattleControllerExecFlags = 0;
gPaydayMoney = 0;
- ewram17130 = 0;
- ewram17160 = 0;
+ (*(u8 *)&B_BATTLESCRIPTS_STACK->size) = 0;
+ (*(u8 *)&B_FUNCTION_STACK->size) = 0;
+
for (i = 0; i < 8; i++)
gBattleCommunication[i] = 0;
+
gPauseCounterBattle = 0;
gBattleMoveDamage = 0;
- gUnknown_02024DE8 = 0;
- ewram16002 = 0;
- ewram160A1 = 0;
+ gIntroSlideFlags = 0;
+ gBattleStruct->animTurn = 0;
+ gBattleStruct->animTargetsHit = 0;
gLeveledUpInBattle = 0;
gAbsentBattlerFlags = 0;
- ewram16078 = 0;
- ewram16086 = 0;
- ewram16087 = 0;
- ewram16089 = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275;
- ewram16088 = 3;
- ewram1601B = 0;
- ewram16056 = 1;
+ gBattleStruct->runTries = 0;
+ gBattleStruct->safariGoNearCounter = 0;
+ gBattleStruct->safariPkblThrowCounter = 0;
+ gBattleStruct->safariCatchFactor = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275;
+ gBattleStruct->safariFleeRate = 3;
+ gBattleStruct->wildVictorySong = 0;
+ gBattleStruct->moneyMultiplier = 1;
for (i = 0; i < 8; i++)
{
- ewram160ACarr(i) = 0;
- ewram160CCarr(i) = 0;
- ewram160E8arr(i) = 0;
- ewram160F0arr(i) = 0;
- ewram16100arr(i) = 0;
- ewram16108arr(i) = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMove) + i] = 0;
+ gSharedMem[BSTRUCT_OFF(usedHeldItems) + i] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + i] = 0;
+ gSharedMem[BSTRUCT_OFF(changedItems) + i] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 0 * 8 + i] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 1 * 8 + i] = 0;
}
- ewram160C8 = 6;
- ewram160C9 = 6;
- ewram16113 = 0;
+ gBattleStruct->AI_monToSwitchIntoId[0] = PARTY_SIZE;
+ gBattleStruct->AI_monToSwitchIntoId[1] = PARTY_SIZE;
+
+ gBattleStruct->givenExpMons = 0;
+
+ // Reset gBattleResults
for (i = 0; i < 11; i++)
gBattleResults.usedBalls[i] = 0;
gBattleResults.battleTurnCounter = 0;
gBattleResults.playerFaintCounter = 0;
gBattleResults.opponentFaintCounter = 0;
- gBattleResults.unk2 = 0;
- gBattleResults.unk3 = 0;
- gBattleResults.unk4 = 0;
+ gBattleResults.totalMonSwitchCounter = 0;
+ gBattleResults.playerHealInBattleCount = 0;
+ gBattleResults.reviveCount = 0;
gBattleResults.playerMonWasDamaged = 0;
- gBattleResults.unk5_1 = 0;
+ gBattleResults.usedMasterBall = 0;
gBattleResults.lastOpponentSpecies = 0;
gBattleResults.lastUsedMove = 0;
gBattleResults.opponentMove = 0;
@@ -3499,8 +3508,8 @@ void sub_8010874(void)
gBattleResults.caughtNick[i] = 0;
}
#if DEBUG
- gSharedMem[0x1609E] = 0;
- gSharedMem[0x1609F] = 0;
+ gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(dbgAICycleMoveTracker) + 1] = 0;
#endif
}
@@ -3551,7 +3560,7 @@ void SwitchInClearSetData(void)
{
if (gBattleMons[i].status2 & (gBitTable[gActiveBattler] << 16))
gBattleMons[i].status2 &= ~(gBitTable[gActiveBattler] << 16);
- if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && ewram16020arr(i) == gActiveBattler)
+ if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && gSharedMem[BSTRUCT_OFF(wrappedBy) + i] == gActiveBattler)
gBattleMons[i].status2 &= ~STATUS2_WRAPPED;
}
@@ -3572,20 +3581,20 @@ void SwitchInClearSetData(void)
gLastMoves[gActiveBattler] = 0;
gLastLandedMoves[gActiveBattler] = 0;
gLastHitByType[gActiveBattler] = 0;
- gUnknown_02024C4C[gActiveBattler] = 0;
- gUnknown_02024C2C[gActiveBattler] = 0;
+ gLastResultingMoves[gActiveBattler] = 0;
+ gLastPrintedMoves[gActiveBattler] = 0;
gLastHitBy[gActiveBattler] = 0xFF;
- ewram160ACarr2(0, gActiveBattler) = 0;
- ewram160ACarr2(1, gActiveBattler) = 0;
- ewram16100arr2(0, gActiveBattler) = 0;
- ewram16100arr2(1, gActiveBattler) = 0;
- ewram16100arr2(2, gActiveBattler) = 0;
- ewram16100arr2(3, gActiveBattler) = 0;
- ewram160E8arr2(0, gActiveBattler) = 0;
- ewram160E8arr2(1, gActiveBattler) = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * gActiveBattler + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * gActiveBattler + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 2] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 3] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gActiveBattler + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gActiveBattler + 1] = 0;
- eFlashFireArr.arr[gActiveBattler] = 0;
+ eBattleFlagsArr.arr[gActiveBattler] = 0;
gCurrentMove = 0;
}
@@ -3605,7 +3614,7 @@ void UndoEffectsAfterFainting(void)
gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
if (gBattleMons[i].status2 & (gBitTable[gActiveBattler] << 16))
gBattleMons[i].status2 &= ~(gBitTable[gActiveBattler] << 16);
- if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && ewram16020arr(i) == gActiveBattler)
+ if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && gSharedMem[BSTRUCT_OFF(wrappedBy) + i] == gActiveBattler)
gBattleMons[i].status2 &= ~STATUS2_WRAPPED;
}
gActionSelectionCursor[gActiveBattler] = 0;
@@ -3636,20 +3645,20 @@ void UndoEffectsAfterFainting(void)
gLastMoves[gActiveBattler] = 0;
gLastLandedMoves[gActiveBattler] = 0;
gLastHitByType[gActiveBattler] = 0;
- gUnknown_02024C4C[gActiveBattler] = 0;
- gUnknown_02024C2C[gActiveBattler] = 0;
+ gLastResultingMoves[gActiveBattler] = 0;
+ gLastPrintedMoves[gActiveBattler] = 0;
gLastHitBy[gActiveBattler] = 0xFF;
- ewram160E8arr2(0, gActiveBattler) = 0;
- ewram160E8arr2(1, gActiveBattler) = 0;
- ewram160ACarr2(0, gActiveBattler) = 0;
- ewram160ACarr2(1, gActiveBattler) = 0;
- ewram16100arr2(0, gActiveBattler) = 0;
- ewram16100arr2(1, gActiveBattler) = 0;
- ewram16100arr2(2, gActiveBattler) = 0;
- ewram16100arr2(3, gActiveBattler) = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gActiveBattler + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gActiveBattler + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * gActiveBattler + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * gActiveBattler + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 2] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gActiveBattler + 3] = 0;
- eFlashFireArr.arr[gActiveBattler] = 0;
+ eBattleFlagsArr.arr[gActiveBattler] = 0;
gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
@@ -3707,14 +3716,15 @@ void sub_8011384(void)
}
else
{
- u8 r0;
+ u16 *hpOnSwitchout;
MEMSET_ALT(&gBattleMons[gActiveBattler], gBattleBufferB[gActiveBattler][4 + i], 0x58, i, ptr);
gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
- r0 = GetBattlerSide(gActiveBattler);
- ewram160BC[r0] = gBattleMons[gActiveBattler].hp;
+
+ hpOnSwitchout = &gBattleStruct->HP_OnSwitchout[GetBattlerSide(gActiveBattler)];
+ *hpOnSwitchout = gBattleMons[gActiveBattler].hp;
for (i = 0; i < 8; i++)
gBattleMons[gActiveBattler].statStages[i] = 6;
gBattleMons[gActiveBattler].status2 = 0;
@@ -3933,9 +3943,9 @@ void sub_80119B4(void)
MarkBattlerForControllerExec(gActiveBattler);
}
}
- ewram16058 = 0;
- ewram160F9 = 0;
- ewram160E6 = 0;
+ gBattleStruct->switchInAbilitiesCounter = 0;
+ gBattleStruct->unk160F9 = 0;
+ gBattleStruct->unk160E6 = 0;
gBattleMainFunc = BattleBeginFirstTurn;
}
}
@@ -3952,9 +3962,9 @@ void unref_sub_8011A68(void)
MarkBattlerForControllerExec(gActiveBattler);
}
}
- ewram16058 = 0;
- ewram160F9 = 0;
- ewram160E6 = 0;
+ gBattleStruct->switchInAbilitiesCounter = 0;
+ gBattleStruct->unk160F9 = 0;
+ gBattleStruct->unk160E6 = 0;
gBattleMainFunc = BattleBeginFirstTurn;
}
}
@@ -3967,7 +3977,7 @@ void BattleBeginFirstTurn(void)
if (gBattleControllerExecFlags == 0)
{
- if (ewram16058 == 0)
+ if (gBattleStruct->switchInAbilitiesCounter == 0)
{
for (i = 0; i < gBattlersCount; i++)
gBattlerByTurnOrder[i] = i;
@@ -3980,16 +3990,16 @@ void BattleBeginFirstTurn(void)
}
}
}
- if (ewram160E6 == 0 && AbilityBattleEffects(0, 0, 0, 0xFF, 0) != 0)
+ if (gBattleStruct->unk160E6 == 0 && AbilityBattleEffects(0, 0, 0, 0xFF, 0) != 0)
{
- ewram160E6 = 1;
+ gBattleStruct->unk160E6 = 1;
return;
}
- while (ewram16058 < gBattlersCount)
+ while (gBattleStruct->switchInAbilitiesCounter < gBattlersCount)
{
- if (AbilityBattleEffects(0, gBattlerByTurnOrder[ewram16058], 0, 0, 0) != 0)
+ if (AbilityBattleEffects(0, gBattlerByTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0)
r9++;
- ewram16058++;
+ gBattleStruct->switchInAbilitiesCounter++;
if (r9 != 0)
return;
}
@@ -3997,11 +4007,11 @@ void BattleBeginFirstTurn(void)
return;
if (AbilityBattleEffects(11, 0, 0, 0, 0) != 0)
return;
- while (ewram160F9 < gBattlersCount)
+ while (gBattleStruct->unk160F9 < gBattlersCount)
{
- if (ItemBattleEffects(0, gBattlerByTurnOrder[ewram160F9], 0) != 0)
+ if (ItemBattleEffects(0, gBattlerByTurnOrder[gBattleStruct->unk160F9], 0) != 0)
r9++;
- ewram160F9++;
+ gBattleStruct->unk160F9++;
if (r9 != 0)
return;
}
@@ -4010,26 +4020,26 @@ void BattleBeginFirstTurn(void)
;
for (i = 0; i < 4; i++)
{
- ewram16068arr(i) = 6;
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + i] = PARTY_SIZE;
gActionForBanks[i] = 0xFF;
gChosenMovesByBanks[i] = 0;
}
TurnValuesCleanUp(0);
SpecialStatusesClear();
- ewram160A6 = gAbsentBattlerFlags;
+ gBattleStruct->unk160A6 = gAbsentBattlerFlags;
gBattleMainFunc = sub_8012324;
ResetSentPokesToOpponentValue();
for (i = 0; i < 8; i++)
gBattleCommunication[i] = 0;
for (i = 0; i < gBattlersCount; i++)
gBattleMons[i].status2 &= ~8;
- ewram16000 = 0;
- ewram16001 = 0;
- ewram16110 = 0;
- ewram16111 = 0;
- ewram1600C = 0;
- ewram16059 = 0;
- ewram1600E = 0;
+ gBattleStruct->turnEffectsTracker = 0;
+ gBattleStruct->turnEffectsBattlerId = 0;
+ gBattleStruct->wishPerishSongState = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
+ gBattleStruct->cmd49StateTracker = 0;
+ gBattleStruct->faintedActionsState = 0;
+ gBattleStruct->turnCountersTracker = 0;
gMoveResultFlags = 0;
gRandomTurnNumber = Random();
}
@@ -4050,11 +4060,11 @@ void bc_8013B1C(void)
if ((gBattleMons[i].status1 & 7) && (gBattleMons[i].status2 & 0x1000))
CancelMultiTurnMoves(i);
}
- ewram16000 = 0;
- ewram16001 = 0;
- ewram16110 = 0;
- ewram16111 = 0;
- ewram1600E = 0;
+ gBattleStruct->turnEffectsTracker = 0;
+ gBattleStruct->turnEffectsBattlerId = 0;
+ gBattleStruct->wishPerishSongState = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
+ gBattleStruct->turnCountersTracker = 0;
gMoveResultFlags = 0;
}
}
@@ -4073,7 +4083,7 @@ void BattleTurnPassed(void)
}
if (HandleFaintedMonActions() != 0)
return;
- ewram16059 = 0;
+ gBattleStruct->faintedActionsState = 0;
if (HandleWishPerishSongOnTurnEnd() != 0)
return;
TurnValuesCleanUp(0);
@@ -4081,9 +4091,9 @@ void BattleTurnPassed(void)
gHitMarker &= ~0x80000;
gHitMarker &= ~0x400000;
gHitMarker &= ~0x100000;
- ewram16002 = 0;
- ewram160A1 = 0;
- ewram1600C = 0;
+ gBattleStruct->animTurn = 0;
+ gBattleStruct->animTargetsHit = 0;
+ gBattleStruct->cmd49StateTracker = 0;
gBattleMoveDamage = 0;
gMoveResultFlags = 0;
for (i = 0; i < 5; i++)
@@ -4102,8 +4112,8 @@ void BattleTurnPassed(void)
gChosenMovesByBanks[i] = 0;
}
for (i = 0; i < 4; i++)
- ewram16068arr(i) = 6;
- ewram160A6 = gAbsentBattlerFlags;
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + i] = 6;
+ gBattleStruct->unk160A6 = gAbsentBattlerFlags;
gBattleMainFunc = sub_8012324;
gRandomTurnNumber = Random();
}
@@ -4131,7 +4141,7 @@ u8 CanRunFromBattle(void)
if (r6 != GetBattlerSide(i)
&& gBattleMons[i].ability == ABILITY_SHADOW_TAG)
{
- ewram16003 = i;
+ gBattleStruct->scriptingActive = i;
gLastUsedAbility = gBattleMons[i].ability;
gBattleCommunication[5] = 2;
return 2;
@@ -4142,7 +4152,7 @@ u8 CanRunFromBattle(void)
&& gBattleMons[gActiveBattler].type2 != 2
&& gBattleMons[i].ability == ABILITY_ARENA_TRAP)
{
- ewram16003 = i;
+ gBattleStruct->scriptingActive = i;
gLastUsedAbility = gBattleMons[i].ability;
gBattleCommunication[5] = 2;
return 2;
@@ -4151,7 +4161,7 @@ u8 CanRunFromBattle(void)
i = AbilityBattleEffects(15, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0);
if (i != 0 && (gBattleMons[gActiveBattler].type1 == 8 || gBattleMons[gActiveBattler].type2 == 8))
{
- ewram16003 = i - 1;
+ gBattleStruct->scriptingActive = i - 1;
gLastUsedAbility = gBattleMons[i - 1].ability;
gBattleCommunication[5] = 2;
return 2;
@@ -4176,23 +4186,24 @@ void sub_8012258(u8 a)
u8 r1;
for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = ewram1606Carr(i, a);
+ gBattlePartyCurrentOrder[i] = gSharedMem[BSTRUCT_OFF(unk1606C) + i + a * 3];
r4 = pokemon_order_func(gBattlerPartyIndexes[a]);
- r1 = pokemon_order_func(ewram16068arr(a));
+ r1 = pokemon_order_func(gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + a]);
sub_8094C98(r4, r1);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
for (i = 0; i < 3; i++)
{
- ewram1606Carr(i, a) = gUnknown_02038470[i];
- ewram1606Carr(i, (a ^ 2)) = gUnknown_02038470[i];
+ gSharedMem[BSTRUCT_OFF(unk1606C) + i + a * 3] = gBattlePartyCurrentOrder[i];
+ gSharedMem[BSTRUCT_OFF(unk1606C) + i + (a ^ BIT_FLANK) * 3] =
+ gBattlePartyCurrentOrder[i];
}
}
else
{
for (i = 0; i < 3; i++)
{
- ewram1606Carr(i, a) = gUnknown_02038470[i];
+ gSharedMem[BSTRUCT_OFF(unk1606C) + i + a * 3] = gBattlePartyCurrentOrder[i];
}
}
}
@@ -4229,14 +4240,14 @@ void sub_8012324(void)
switch (gBattleCommunication[gActiveBattler])
{
case STATE_BEFORE_ACTION_CHOSEN:
- ewram16068arr(gActiveBattler) = 6;
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + gActiveBattler] = 6;
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& (position & BIT_FLANK) != B_FLANK_LEFT
- && !(ewram160A6 & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))])
+ && !(gBattleStruct->unk160A6 & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))])
&& gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(position))] != STATE_WAIT_ACTION_CONFIRMED)
break;
//_080123F8
- if (ewram160A6 & gBitTable[gActiveBattler])
+ if (gBattleStruct->unk160A6 & gBitTable[gActiveBattler])
{
gActionForBanks[gActiveBattler] = 13;
if (!(gBattleTypeFlags & 0x40))
@@ -4270,9 +4281,9 @@ void sub_8012324(void)
if (AreAllMovesUnusable())
{
gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
- ewram16060(gActiveBattler) = FALSE;
- ewram16094arr(gActiveBattler) = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
- ewram16010arr(gActiveBattler) = gBattleBufferB[gActiveBattler][3];
+ gSharedMem[BSTRUCT_OFF(selectionScriptFinished) + gActiveBattler] = FALSE;
+ gSharedMem[BSTRUCT_OFF(stateIdAfterSelScript) + gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ gSharedMem[BSTRUCT_OFF(moveTarget) + gActiveBattler] = gBattleBufferB[gActiveBattler][3];
return;
}
else if (gDisableStructs[gActiveBattler].encoredMove != 0)
@@ -4283,14 +4294,7 @@ void sub_8012324(void)
}
else
{
- struct ChooseMoveStruct {
- u16 moves[4];
- u8 currentPp[4];
- u8 maxPp[4];
- u16 species;
- u8 monType1;
- u8 monType2;
- } moveInfo;
+ struct ChooseMoveStruct moveInfo;
moveInfo.species = gBattleMons[gActiveBattler].species;
moveInfo.monType1 = gBattleMons[gActiveBattler].type1;
@@ -4317,22 +4321,22 @@ void sub_8012324(void)
{
gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed;
gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
- ewram16060(gActiveBattler) = FALSE;
- ewram16094arr(gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN;
+ gSharedMem[BSTRUCT_OFF(selectionScriptFinished) + gActiveBattler] = FALSE;
+ gSharedMem[BSTRUCT_OFF(stateIdAfterSelScript) + gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
return;
}
else
{
- BtlController_EmitChooseItem(0, &ewram1606Carr(0, gActiveBattler));
+ BtlController_EmitChooseItem(0, &gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0]);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
case B_ACTION_SWITCH:
- ewram16064arr(gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ gSharedMem[BSTRUCT_OFF(unk16064) + gActiveBattler] = gBattlerPartyIndexes[gActiveBattler];
if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)
|| gStatuses3[gActiveBattler] & STATUS3_ROOTED)
{
- BtlController_EmitChoosePokemon(0, 2, 6, ABILITY_NONE, &ewram1606Carr(0, gActiveBattler));
+ BtlController_EmitChoosePokemon(0, 2, 6, ABILITY_NONE, &gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0]);
}
else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG))
|| ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP))
@@ -4341,16 +4345,16 @@ void sub_8012324(void)
|| ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
&& IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL)))
{
- BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ABILITY_PREVENTS, 6, gLastUsedAbility, &ewram1606Carr(0, gActiveBattler));
+ BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ABILITY_PREVENTS, 6, gLastUsedAbility, &gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0]);
}
else
{
if (gActiveBattler == 2 && gActionForBanks[0] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, ewram16068arr(0), ABILITY_NONE, &ewram1606Carr(0, gActiveBattler));
+ BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + 0], ABILITY_NONE, &gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0]);
else if (gActiveBattler == 3 && gActionForBanks[1] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, ewram16068arr(1), ABILITY_NONE, &ewram1606Carr(0, gActiveBattler));
+ BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + 1], ABILITY_NONE, &gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0]);
else
- BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, 6, ABILITY_NONE, &ewram1606Carr(0, gActiveBattler));
+ BtlController_EmitChoosePokemon(0, PARTY_CHOOSE_MON, 6, ABILITY_NONE, &gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0]);
}
MarkBattlerForControllerExec(gActiveBattler);
break;
@@ -4359,13 +4363,13 @@ void sub_8012324(void)
{
gSelectionBattleScripts[gActiveBattler] = BattleScript_PrintFullBox;
gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
- ewram16060(gActiveBattler) = FALSE;
- ewram16094arr(gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN;
+ gSharedMem[BSTRUCT_OFF(selectionScriptFinished) + gActiveBattler] = FALSE;
+ gSharedMem[BSTRUCT_OFF(stateIdAfterSelScript) + gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
return;
}
break;
case B_ACTION_SAFARI_POKEBLOCK:
- BtlController_EmitChooseItem(0, &ewram1606Carr(0, gActiveBattler));
+ BtlController_EmitChooseItem(0, &gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0]);
MarkBattlerForControllerExec(gActiveBattler);
break;
case B_ACTION_CANCEL_PARTNER:
@@ -4388,8 +4392,8 @@ void sub_8012324(void)
{
gSelectionBattleScripts[gActiveBattler] = BattleScript_PrintCantEscapeFromBattle;
gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
- ewram16060(gActiveBattler) = FALSE;
- ewram16094arr(gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN;
+ gSharedMem[BSTRUCT_OFF(selectionScriptFinished) + gActiveBattler] = FALSE;
+ gSharedMem[BSTRUCT_OFF(stateIdAfterSelScript) + gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
return;
}
else
@@ -4423,16 +4427,16 @@ void sub_8012324(void)
else if (TrySetCantSelectMoveBattleScript())
{
gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
- ewram16060(gActiveBattler) = FALSE;
+ gSharedMem[BSTRUCT_OFF(selectionScriptFinished) + gActiveBattler] = FALSE;
gBattleBufferB[gActiveBattler][1] = 0;
- ewram16094arr(gActiveBattler) = STATE_WAIT_ACTION_CHOSEN;
+ gSharedMem[BSTRUCT_OFF(stateIdAfterSelScript) + gActiveBattler] = STATE_WAIT_ACTION_CHOSEN;
return;
}
else
{
- ewram1608Carr(gActiveBattler) = gBattleBufferB[gActiveBattler][2];
- gChosenMovesByBanks[gActiveBattler] = gBattleMons[gActiveBattler].moves[ewram1608Carr(gActiveBattler)];
- ewram16010arr(gActiveBattler) = gBattleBufferB[gActiveBattler][3];
+ gSharedMem[BSTRUCT_OFF(ChosenMoveID) + gActiveBattler] = gBattleBufferB[gActiveBattler][2];
+ gChosenMovesByBanks[gActiveBattler] = gBattleMons[gActiveBattler].moves[gSharedMem[BSTRUCT_OFF(ChosenMoveID) + gActiveBattler]];
+ gSharedMem[BSTRUCT_OFF(moveTarget) + gActiveBattler] = gBattleBufferB[gActiveBattler][3];
gBattleCommunication[gActiveBattler]++;
}
break;
@@ -4456,17 +4460,17 @@ void sub_8012324(void)
}
else
{
- ewram16068arr(gActiveBattler) = gBattleBufferB[gActiveBattler][1];
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + gActiveBattler] = gBattleBufferB[gActiveBattler][1];
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- ewram1606Carr(0, gActiveBattler) &= 0xF;
- ewram1606Carr(0, gActiveBattler) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
- ewram1606Carr(1, gActiveBattler) = gBattleBufferB[gActiveBattler][3];
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0] &= 0xF;
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0] |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 1] = gBattleBufferB[gActiveBattler][3];
- ewram1606Carr(0, (gActiveBattler ^ BIT_FLANK)) &= (0xF0);
- ewram1606Carr(0, (gActiveBattler ^ BIT_FLANK)) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
- ewram1606Carr(2, (gActiveBattler ^ BIT_FLANK)) = gBattleBufferB[gActiveBattler][3];
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * (gActiveBattler ^ BIT_FLANK) + 0] &= (0xF0);
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * (gActiveBattler ^ BIT_FLANK) + 0] |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * (gActiveBattler ^ BIT_FLANK) + 2] = gBattleBufferB[gActiveBattler][3];
}
gBattleCommunication[gActiveBattler]++;
}
@@ -4509,7 +4513,7 @@ void sub_8012324(void)
{
if (((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) != BATTLE_TYPE_DOUBLE)
|| (position & BIT_FLANK) != B_FLANK_LEFT
- || (ewram160A6 & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)]))
+ || (gBattleStruct->unk160A6 & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)]))
{
BtlController_EmitLinkStandbyMsg(0, 0);
}
@@ -4528,9 +4532,9 @@ void sub_8012324(void)
}
break;
case STATE_SELECTION_SCRIPT:
- if (ewram16060(gActiveBattler))
+ if (gSharedMem[BSTRUCT_OFF(selectionScriptFinished) + gActiveBattler])
{
- gBattleCommunication[gActiveBattler] = ewram16094arr(gActiveBattler);
+ gBattleCommunication[gActiveBattler] = gSharedMem[BSTRUCT_OFF(stateIdAfterSelScript) + gActiveBattler];
}
else
{
@@ -4678,7 +4682,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities)
if (gProtectStructs[bank1].noValidMoves)
bank1Move = MOVE_STRUGGLE;
else
- bank1Move = gBattleMons[bank1].moves[ewram1608Carr(bank1)];
+ bank1Move = gBattleMons[bank1].moves[gSharedMem[BSTRUCT_OFF(ChosenMoveID) + bank1]];
}
else
bank1Move = MOVE_NONE;
@@ -4688,7 +4692,7 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities)
if (gProtectStructs[bank2].noValidMoves)
bank2Move = MOVE_STRUGGLE;
else
- bank2Move = gBattleMons[bank2].moves[ewram1608Carr(bank2)];
+ bank2Move = gBattleMons[bank2].moves[gSharedMem[BSTRUCT_OFF(ChosenMoveID) + bank2]];
}
else
bank2Move = MOVE_NONE;
@@ -4768,7 +4772,7 @@ void SetActionsAndBanksTurnOrder(void)
}
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- eFocusPunchBattler = 0;
+ gBattleStruct->focusPunchBattler = 0;
return;
}
else
@@ -4811,7 +4815,7 @@ void SetActionsAndBanksTurnOrder(void)
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- eFocusPunchBattler = 0;
+ gBattleStruct->focusPunchBattler = 0;
}
static void TurnValuesCleanUp(bool8 var0)
@@ -4867,10 +4871,10 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
{
if (!(gHitMarker & HITMARKER_RUN))
{
- while (eFocusPunchBattler < gBattlersCount)
+ while (gBattleStruct->focusPunchBattler < gBattlersCount)
{
- gActiveBattler = gBattlerAttacker = eFocusPunchBattler;
- eFocusPunchBattler++;
+ gActiveBattler = gBattlerAttacker = gBattleStruct->focusPunchBattler;
+ gBattleStruct->focusPunchBattler++;
if (gChosenMovesByBanks[gActiveBattler] == MOVE_FOCUS_PUNCH
&& !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
&& !(gDisableStructs[gBattlerAttacker].truantCounter)
@@ -4895,8 +4899,8 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
gBattleMainFunc = RunTurnActionsFunctions;
gBattleCommunication[3] = 0;
gBattleCommunication[4] = 0;
- eMultihitMoveEffect = 0;
- ewram17130 = 0;
+ gBattleStruct->multihitMoveEffect = 0;
+ B_BATTLESCRIPTS_STACK->size = 0;
}
static void RunTurnActionsFunctions(void)
@@ -4904,7 +4908,7 @@ static void RunTurnActionsFunctions(void)
if (gBattleOutcome != 0)
gCurrentActionFuncId = 12;
- gBattleStruct->unk16057 = gCurrentTurnActionNumber;
+ gBattleStruct->savedTurnActionNumber = gCurrentTurnActionNumber;
gUnknown_081FA640[gCurrentActionFuncId]();
if (gCurrentTurnActionNumber >= gBattlersCount) // everyone did their actions, turn finished
@@ -4914,7 +4918,7 @@ static void RunTurnActionsFunctions(void)
}
else
{
- if (gBattleStruct->unk16057 != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank
+ if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank
{
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
@@ -5170,19 +5174,19 @@ void HandleAction_UseMove(void)
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- if (ewram160A6 & gBitTable[gBattlerAttacker])
+ if (gBattleStruct->unk160A6 & gBitTable[gBattlerAttacker])
{
gCurrentActionFuncId = B_ACTION_FINISHED;
return;
}
gCritMultiplier = 1;
- eDmgMultiplier = 1;
- ewram160E7 = 0;
+ gBattleStruct->dmgMultiplier = 1;
+ gBattleStruct->atkCancellerTracker = 0;
gMoveResultFlags = 0;
gMultiHitCounter = 0;
gBattleCommunication[6] = 0;
- gCurrMovePos = gUnknown_02024BE5 = ewram1608Carr(gBattlerAttacker);
+ gCurrMovePos = gUnknown_02024BE5 = gSharedMem[BSTRUCT_OFF(ChosenMoveID) + gBattlerAttacker];
// choose move
if (gProtectStructs[gBattlerAttacker].noValidMoves)
@@ -5190,7 +5194,7 @@ void HandleAction_UseMove(void)
gProtectStructs[gBattlerAttacker].noValidMoves = 0;
gCurrentMove = gChosenMove = MOVE_STRUGGLE;
gHitMarker |= HITMARKER_NO_PPDEDUCT;
- ewram16010arr(gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
+ gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker] = GetMoveTarget(MOVE_STRUGGLE, 0);
}
else if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE)
{
@@ -5202,7 +5206,7 @@ void HandleAction_UseMove(void)
{
gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
gCurrMovePos = gUnknown_02024BE5 = gDisableStructs[gBattlerAttacker].encoredMovePos;
- ewram16010arr(gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker] = GetMoveTarget(gCurrentMove, 0);
}
// check if the encored move wasn't overwritten
else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
@@ -5213,12 +5217,12 @@ void HandleAction_UseMove(void)
gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE;
gDisableStructs[gBattlerAttacker].encoredMovePos = 0;
gDisableStructs[gBattlerAttacker].encoreTimer1 = 0;
- ewram16010arr(gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker] = GetMoveTarget(gCurrentMove, 0);
}
else if (gBattleMons[gBattlerAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBattlerAttacker])
{
gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
- ewram16010arr(gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker] = GetMoveTarget(gCurrentMove, 0);
}
else
{
@@ -5243,14 +5247,14 @@ void HandleAction_UseMove(void)
&& gSideTimers[side].followmeTimer == 0
&& (gBattleMoves[gCurrentMove].power != 0
|| gBattleMoves[gCurrentMove].target != MOVE_TARGET_USER)
- && gBattleMons[ewram16010arr(gBattlerAttacker)].ability != ABILITY_LIGHTNING_ROD
+ && gBattleMons[gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker]].ability != ABILITY_LIGHTNING_ROD
&& gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
{
side = GetBattlerSide(gBattlerAttacker);
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
if (side != GetBattlerSide(gActiveBattler)
- && ewram16010arr(gBattlerAttacker) != gActiveBattler
+ && gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker] != gActiveBattler
&& gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD
&& GetBattlerTurnOrderNum(gActiveBattler) < var)
{
@@ -5278,7 +5282,7 @@ void HandleAction_UseMove(void)
}
else
{
- gBattlerTarget = ewram16010arr(gBattlerAttacker);
+ gBattlerTarget = gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker];
}
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
@@ -5329,7 +5333,7 @@ void HandleAction_UseMove(void)
}
else
{
- gBattlerTarget = ewram16010arr(gBattlerAttacker);
+ gBattlerTarget = gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker];
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
{
if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
@@ -5357,14 +5361,14 @@ void HandleAction_Switch(void)
gActionSelectionCursor[gBattlerAttacker] = 0;
gMoveSelectionCursor[gBattlerAttacker] = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, ewram16064arr(gBattlerAttacker))
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gSharedMem[BSTRUCT_OFF(unk16064) + gBattlerAttacker])
- ewram16003 = gBattlerAttacker;
+ gBattleStruct->scriptingActive = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_ActionSwitch;
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
- if (gBattleResults.unk2 < 255)
- gBattleResults.unk2++;
+ if (gBattleResults.totalMonSwitchCounter < 255)
+ gBattleResults.totalMonSwitchCounter++;
}
void HandleAction_UseItem(void)
@@ -5390,46 +5394,46 @@ void HandleAction_UseItem(void)
else
{
- switch (ewram160D8((ewram16003 = gBattlerAttacker)))
+ switch (gSharedMem[BSTRUCT_OFF(AI_usedItemType) + ((gBattleStruct->scriptingActive = gBattlerAttacker) / 2)])
{
case AI_ITEM_FULL_RESTORE:
case AI_ITEM_HEAL_HP:
break;
case AI_ITEM_CURE_CONDITION:
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (ewram160DA(gBattlerAttacker) & 1)
+ if (gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gBattlerAttacker >> 1)] & 1)
{
- if (ewram160DA(gBattlerAttacker) & 0x3E)
+ if (gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gBattlerAttacker >> 1)] & 0x3E)
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
else
{
- while (!(ewram160DA(gBattlerAttacker) & 1))
+ while (!(gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gBattlerAttacker >> 1)] & 1))
{
- ewram160DA(gBattlerAttacker) >>= 1;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gBattlerAttacker >> 1)] >>= 1;
gBattleCommunication[MULTISTRING_CHOOSER]++;
}
}
break;
case AI_ITEM_X_STAT:
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- if (ewram160DA(gBattlerAttacker) & 0x80)
+ if (gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gBattlerAttacker >> 1)] & 0x80)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
else
{
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
- PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE)
- while (!(ewram160DA(gBattlerAttacker) & 1))
+ while (!(gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gBattlerAttacker >> 1)] & 1))
{
- ewram160DA(gBattlerAttacker) >>= 1;
+ gSharedMem[BSTRUCT_OFF(AI_usedItemEffect) + (gBattlerAttacker >> 1)] >>= 1;
gBattleTextBuff1[2]++;
}
- ewram160A4 = gBattleTextBuff1[2] + 14;
- ewram160A5 = 0;
+ gBattleStruct->animArg1 = gBattleTextBuff1[2] + 14;
+ gBattleStruct->animArg2 = 0;
}
break;
case AI_ITEM_GUARD_SPECS:
@@ -5440,7 +5444,7 @@ void HandleAction_UseItem(void)
break;
}
- gBattlescriptCurrInstr = gBattlescriptsForUsingItem[ewram160D8(gBattlerAttacker)];
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[gSharedMem[BSTRUCT_OFF(AI_usedItemType) + (gBattlerAttacker / 2)]];
}
gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
@@ -5476,7 +5480,7 @@ bool8 TryRunFromBattle(u8 bank)
{
if (gBattleMons[bank].speed < gBattleMons[bank ^ BIT_SIDE].speed)
{
- speedVar = (gBattleMons[bank].speed * 128) / (gBattleMons[bank ^ BIT_SIDE].speed) + (ewram16078 * 30);
+ speedVar = (gBattleMons[bank].speed * 128) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30);
if (speedVar > (Random() & 0xFF))
effect++;
}
@@ -5486,7 +5490,7 @@ bool8 TryRunFromBattle(u8 bank)
}
}
- ewram16078++;
+ gBattleStruct->runTries++;
}
if (effect)
@@ -5579,14 +5583,14 @@ void HandleAction_ThrowPokeblock(void)
gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBattlerAttacker][1] - 1;
gLastUsedItem = gBattleBufferB[gBattlerAttacker][2];
- if (ewram16087 < 3)
- ewram16087++;
- if (ewram16088 > 1)
+ if (gBattleStruct->safariPkblThrowCounter < 3)
+ gBattleStruct->safariPkblThrowCounter++;
+ if (gBattleStruct->safariFleeRate > 1)
{
- if (ewram16088 < gUnknown_081FA70C[ewram16087][gBattleCommunication[MULTISTRING_CHOOSER]])
- ewram16088 = 1;
+ if (gBattleStruct->safariFleeRate < gUnknown_081FA70C[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]])
+ gBattleStruct->safariFleeRate = 1;
else
- ewram16088 -= gUnknown_081FA70C[ewram16087][gBattleCommunication[MULTISTRING_CHOOSER]];
+ gBattleStruct->safariFleeRate -= gUnknown_081FA70C[gBattleStruct->safariPkblThrowCounter][gBattleCommunication[MULTISTRING_CHOOSER]];
}
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2];
@@ -5599,17 +5603,17 @@ void HandleAction_GoNear(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- ewram16089 += gUnknown_081FA71B[ewram16086];
- if (ewram16089 > 20)
- ewram16089 = 20;
+ gBattleStruct->safariCatchFactor += gUnknown_081FA71B[gBattleStruct->safariGoNearCounter];
+ if (gBattleStruct->safariCatchFactor > 20)
+ gBattleStruct->safariCatchFactor = 20;
- ewram16088 += gUnknown_081FA71F[ewram16086];
- if (ewram16088 > 20)
- ewram16088 = 20;
+ gBattleStruct->safariFleeRate += gUnknown_081FA71F[gBattleStruct->safariGoNearCounter];
+ if (gBattleStruct->safariFleeRate > 20)
+ gBattleStruct->safariFleeRate = 20;
- if (ewram16086 < 3)
+ if (gBattleStruct->safariGoNearCounter < 3)
{
- ewram16086++;
+ gBattleStruct->safariGoNearCounter++;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else
@@ -5645,7 +5649,7 @@ void HandleAction_Action11(void)
{
if (!HandleFaintedMonActions())
{
- ewram16059 = 0;
+ gBattleStruct->faintedActionsState = 0;
gCurrentActionFuncId = B_ACTION_FINISHED;
}
}
@@ -5673,15 +5677,15 @@ void HandleAction_ActionFinished(void)
| HITMARKER_CHARGING | HITMARKER_x4000000);
gBattleMoveDamage = 0;
- ewram16002 = 0;
- ewram160A1 = 0;
+ gBattleStruct->animTurn = 0;
+ gBattleStruct->animTargetsHit = 0;
gLastLandedMoves[gBattlerAttacker] = 0;
gLastHitByType[gBattlerAttacker] = 0;
- eDynamicMoveType = 0;
+ gBattleStruct->dynamicMoveType = 0;
gDynamicBasePower = 0;
- ewram1600C = 0;
+ gBattleStruct->cmd49StateTracker = 0;
gBattleCommunication[3] = 0;
gBattleCommunication[4] = 0;
- eMultihitMoveEffect = 0;
- ewram17130 = 0;
+ gBattleStruct->multihitMoveEffect = 0;
+ B_BATTLESCRIPTS_STACK->size = 0;
}
diff --git a/src/battle_message.c b/src/battle_message.c
index ce1e63edd..d8aa92fbf 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -460,8 +460,7 @@ const u8* TryGetStatusString(u8* src)
statusPtr = status;
for (i = 0; i < sizeof(struct StatusFlagString); i++)
{
- if (*src == EOS)
- break;
+ if (*src == EOS) break; // oneline required to match with -g
*statusPtr = *src;
src++;
statusPtr++;
@@ -538,13 +537,13 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
while (*src != EOS)
{
- if (*src == 0xFD)
+ if (*src == B_BUFF_PLACEHOLDER_BEGIN)
{
src++;
switch (*src)
{
- case 0:
- if (gBattleTextBuff1[0] == 0xFD)
+ case B_TXT_BUFF1:
+ if (gBattleTextBuff1[0] == B_BUFF_PLACEHOLDER_BEGIN)
{
ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gStringVar1);
toCpy = gStringVar1;
@@ -552,12 +551,12 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
else
{
toCpy = TryGetStatusString(gBattleTextBuff1);
- if (toCpy == 0)
+ if (toCpy == NULL)
toCpy = gBattleTextBuff1;
}
break;
- case 1:
- if (gBattleTextBuff2[0] == 0xFD)
+ case B_TXT_BUFF2:
+ if (gBattleTextBuff2[0] == B_BUFF_PLACEHOLDER_BEGIN)
{
ExpandBattleTextBuffPlaceholders(gBattleTextBuff2, gStringVar2);
toCpy = gStringVar2;
@@ -565,8 +564,8 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
else
toCpy = gBattleTextBuff2;
break;
- case 42:
- if (gBattleTextBuff3[0] == 0xFD)
+ case B_TXT_BUFF3:
+ if (gBattleTextBuff3[0] == B_BUFF_PLACEHOLDER_BEGIN)
{
ExpandBattleTextBuffPlaceholders(gBattleTextBuff3, gStringVar3);
toCpy = gStringVar3;
@@ -574,50 +573,50 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
else
toCpy = gBattleTextBuff3;
break;
- case 2: // first player poke name
+ case B_TXT_PLAYER_MON1_NAME: // first player poke name
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(0)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 3: // first enemy poke name
+ case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(1)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 4: // second player poke name
+ case B_TXT_PLAYER_MON2_NAME: // second player poke name
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(2)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 5: // second enemy poke name
+ case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(3)]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 6: // link first player poke name
+ case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 7: // link first opponent poke name
+ case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 1]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 8: // link second player poke name
+ case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 2]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 9: // link second opponent poke name
+ case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 3]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
- case 10: // attacker name with prefix, only bank 0/1
+ case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only bank 0/1
HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) & 1)])
break;
- case 11: // attacker partner name, only bank 0/1
+ case B_TXT_ATK_PARTNER_NAME: // attacker partner name, only bank 0/1
if (GetBattlerSide(gBattlerAttacker) == 0)
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
else
@@ -626,39 +625,39 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
StringGetEnd10(text);
toCpy = text;
break;
- case 12: // attacker name with prefix
+ case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix
HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
break;
- case 13: // target name with prefix
+ case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix
HANDLE_NICKNAME_STRING_CASE(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget])
break;
- case 14: // effect bank name with prefix
+ case B_TXT_EFF_NAME_WITH_PREFIX: // effect bank name with prefix
HANDLE_NICKNAME_STRING_CASE(gEffectBattler, gBattlerPartyIndexes[gEffectBattler])
break;
- case 15: // active bank name with prefix
+ case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active bank name with prefix
HANDLE_NICKNAME_STRING_CASE(gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
break;
- case 16: // scripting active bank name with prefix
+ case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active bank name with prefix
HANDLE_NICKNAME_STRING_CASE(gBattleStruct->scriptingActive, gBattlerPartyIndexes[gBattleStruct->scriptingActive])
break;
- case 17: // current move name
- if (gStringInfo->currentMove > 0x162)
+ case B_TXT_CURRENT_MOVE: // current move name
+ if (gStringInfo->currentMove >= NUM_MOVES)
toCpy = (void*) &gUnknown_08401674[gBattleStruct->stringMoveType];
else
toCpy = gMoveNames[gStringInfo->currentMove];
break;
- case 18: // last used move name
- if (gStringInfo->lastMove > 0x162)
+ case B_TXT_LAST_MOVE: // last used move name
+ if (gStringInfo->lastMove >= NUM_MOVES)
toCpy = (void*) &gUnknown_08401674[gBattleStruct->stringMoveType];
else
toCpy = gMoveNames[gStringInfo->lastMove];
break;
- case 19: // last used item
+ case B_TXT_LAST_ITEM: // last used item
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
{
- if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id == gPotentialItemEffectBattler)
+ if (gLinkPlayers[gBattleStruct->multiplayerId].id == gPotentialItemEffectBattler)
{
StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
#ifdef ENGLISH
@@ -683,22 +682,22 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
toCpy = text;
}
break;
- case 20: // last used ability
+ case B_TXT_LAST_ABILITY: // last used ability
toCpy = gAbilityNames[gLastUsedAbility];
break;
- case 21: // attacker ability
+ case B_TXT_ATK_ABILITY: // attacker ability
toCpy = gAbilityNames[gAbilitiesPerBank[gBattlerAttacker]];
break;
- case 22: // target ability
+ case B_TXT_DEF_ABILITY: // target ability
toCpy = gAbilityNames[gAbilitiesPerBank[gBattlerTarget]];
break;
- case 23: // scripting active ability
+ case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability
toCpy = gAbilityNames[gAbilitiesPerBank[gBattleStruct->scriptingActive]];
break;
- case 24: // effect bank ability
+ case B_TXT_EFF_ABILITY: // effect bank ability
toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBattler]];
break;
- case 25: // trainer class name
+ case B_TXT_TRAINER1_CLASS: // trainer class name
#ifdef ENGLISH
if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
@@ -720,11 +719,11 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
toCpy = de_sub_8041024(0, gTrainerBattleOpponent);
break;
#endif
- case 26: // trainer name
+ case B_TXT_TRAINER1_NAME: // trainer name
if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
{
memset(text, 0xFF, 8);
- memcpy(text, ewram17002, 7);
+ memcpy(text, eSecretBaseRecord->playerName, 7);
toCpy = text;
}
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
@@ -740,67 +739,67 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
else
toCpy = gTrainers[gTrainerBattleOpponent].trainerName;
break;
- case 27: // link player name?
+ case B_TXT_LINK_PLAYER_NAME: // link player name?
toCpy = gLinkPlayers[multiplayerID].name;
break;
- case 28: // link partner name?
+ case B_TXT_LINK_PARTNER_NAME: // link partner name?
toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].id)].name;
break;
- case 29: // link opponent 1 name?
+ case B_TXT_LINK_OPPONENT1_NAME: // link opponent 1 name?
toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].id)].name;
break;
- case 30: // link opponent 2 name?
+ case B_TXT_LINK_OPPONENT2_NAME: // link opponent 2 name?
toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].id)].name;
break;
- case 31: // link scripting active name
+ case B_TXT_LINK_SCR_TRAINER_NAME: // link scripting active name
toCpy = gLinkPlayers[sub_803FC34(gBattleStruct->scriptingActive)].name;
break;
- case 32: // player name
+ case B_TXT_PLAYER_NAME: // player name
toCpy = gSaveBlock2.playerName;
break;
- case 33: // ?
+ case B_TXT_TRAINER1_LOSE_TEXT: // ?
toCpy = GetTrainerLoseText();
break;
- case 34: // ?
+ case B_TXT_22: // ?
HANDLE_NICKNAME_STRING_CASE(gBattleStruct->scriptingActive, gBattleStruct->unk1605E)
break;
- case 35: // lanette pc
+ case B_TXT_PC_CREATOR_NAME: // lanette pc
if (FlagGet(FLAG_SYS_PC_LANETTE))
toCpy = BattleText_Lanette;
else
toCpy = BattleText_Someone;
break;
- case 38:
+ case B_TXT_ATK_PREFIX2:
if (GetBattlerSide(gBattlerAttacker) == 0)
toCpy = BattleText_Ally2;
else
toCpy = BattleText_Foe3;
break;
- case 39:
+ case B_TXT_DEF_PREFIX2:
if (GetBattlerSide(gBattlerTarget) == 0)
toCpy = BattleText_Ally2;
else
toCpy = BattleText_Foe3;
break;
- case 36:
+ case B_TXT_ATK_PREFIX1:
if (GetBattlerSide(gBattlerAttacker) == 0)
toCpy = BattleText_Ally;
else
toCpy = BattleText_Foe2;
break;
- case 37:
+ case B_TXT_DEF_PREFIX1:
if (GetBattlerSide(gBattlerTarget) == 0)
toCpy = BattleText_Ally;
else
toCpy = BattleText_Foe2;
break;
- case 40:
+ case B_TXT_ATK_PREFIX3:
if (GetBattlerSide(gBattlerAttacker) == 0)
toCpy = BattleText_Ally3;
else
toCpy = BattleText_Foe4;
break;
- case 41:
+ case B_TXT_DEF_PREFIX3:
if (GetBattlerSide(gBattlerTarget) == 0)
toCpy = BattleText_Ally3;
else
@@ -814,11 +813,11 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
dstID++;
toCpy++;
}
- if (*src == 33)
+ if (*src == B_TXT_TRAINER1_LOSE_TEXT)
{
- dst[dstID] = 0xFC;
+ dst[dstID] = EXT_CTRL_CODE_BEGIN;
dstID++;
- dst[dstID] = 9;
+ dst[dstID] = EXT_CTRL_CODE_PAUSE_UNTIL_PRESS;
dstID++;
}
}
@@ -834,9 +833,6 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
return dstID;
}
-#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
-#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
-
void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst)
{
u32 srcID = 1;
@@ -849,8 +845,8 @@ void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst)
{
switch (src[srcID])
{
- case 0: // battle string
- hword = ByteRead16(&src[srcID + 1]);
+ case B_BUFF_STRING: // battle string
+ hword = T1_READ_16(&src[srcID + 1]);
#ifdef GERMAN
if (hword == 209 || hword == 211)
srcID += 3;
@@ -858,31 +854,31 @@ void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst)
StringAppend(dst, gBattleStringsTable[hword - BATTLESTRING_TO_SUB]);
srcID += 3;
break;
- case 1: // int to string
+ case B_BUFF_NUMBER: // int to string
switch (src[srcID + 1])
{
case 1:
- value = src[srcID + 3];
+ value = T1_READ_8(&src[srcID + 3]);
break;
case 2:
- value = ByteRead16(&src[srcID + 3]);
+ value = T1_READ_16(&src[srcID + 3]);
break;
case 4:
- value = ByteRead32(&src[srcID + 3]);
+ value = T1_READ_32(&src[srcID + 3]);
break;
}
ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]);
srcID += src[srcID + 1] + 3;
break;
- case 2: // move name
- StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]);
+ case B_BUFF_MOVE: // move name
+ StringAppend(dst, gMoveNames[T1_READ_16(&src[srcID + 1])]);
srcID += 3;
break;
- case 3: // type name
+ case B_BUFF_TYPE: // type name
StringAppend(dst, gTypeNames[src[srcID + 1]]);
srcID += 2;
break;
- case 4: // poke nick with prefix
+ case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix
#ifdef ENGLISH
if (GetBattlerSide(src[srcID + 1]) == 0)
{
@@ -918,15 +914,15 @@ void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst)
#endif
srcID += 3;
break;
- case 5: // stats
+ case B_BUFF_STAT: // stats
StringAppend(dst, gUnknown_08400F58[src[srcID + 1]]);
srcID += 2;
break;
- case 6: // species name
- GetSpeciesName(dst, ByteRead16(&src[srcID + 1]));
+ case B_BUFF_SPECIES: // species name
+ GetSpeciesName(dst, T1_READ_16(&src[srcID + 1]));
srcID += 3;
break;
- case 7: // poke nick without prefix
+ case B_BUFF_MON_NICK: // poke nick without prefix
if (GetBattlerSide(src[srcID + 1]) == 0)
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
else
@@ -934,22 +930,22 @@ void ExpandBattleTextBuffPlaceholders(u8* src, u8* dst)
StringGetEnd10(dst);
srcID += 3;
break;
- case 8: // flavour table
+ case B_BUFF_NEGATIVE_FLAVOR: // flavour table
StringAppend(dst, gUnknown_08400F78[src[srcID + 1]]);
srcID += 2;
break;
- case 9: // ability names
+ case B_BUFF_ABILITY: // ability names
StringAppend(dst, gAbilityNames[src[srcID + 1]]);
srcID += 2;
break;
- case 10: // item name
+ case B_BUFF_ITEM: // item name
{
- hword = ByteRead16(&src[srcID + 1]);
+ hword = T1_READ_16(&src[srcID + 1]);
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
if (hword == ITEM_ENIGMA_BERRY)
{
- if (gLinkPlayers[gBattleStruct->linkPlayerIndex].id == gPotentialItemEffectBattler)
+ if (gLinkPlayers[gBattleStruct->multiplayerId].id == gPotentialItemEffectBattler)
{
StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name);
#ifdef ENGLISH
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
index e0e455811..a1389ddff 100644
--- a/src/battle_party_menu.c
+++ b/src/battle_party_menu.c
@@ -20,13 +20,16 @@
#include "text.h"
#include "ewram.h"
+EWRAM_DATA u8 gBattlePartyCurrentOrder[3] = {};
+EWRAM_DATA u8 gUnknown_02038473 = 0;
+
extern u8 sub_806BD58(u8, u8);
extern void PartyMenuPrintMonsLevelOrStatus(void);
extern void nullsub_13(void);
extern void sub_802E414(void);
extern void sub_80A6DCC(void);
extern u8 *sub_8040D08();
-extern void sub_8040B8C(void);
+extern void SetMonPreventsSwitchingString(void);
extern void nullsub_14();
extern u8 sub_803FBBC(void);
@@ -36,9 +39,7 @@ extern u16 gBattlerPartyIndexes[];
extern u8 gBankInMenu;
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F5;
-extern u8 gUnknown_0202E8F6;
-extern u8 gUnknown_02038470[3];
-extern u8 gUnknown_02038473;
+extern u8 gPartyMenuMessage_IsPrinting;
extern u8 gUnknown_020384F0;
extern void (*gPokemonItemUseCallback)(); //don't know types yet
extern struct PokemonStorage gPokemonStorage;
@@ -89,12 +90,12 @@ void unref_sub_8094940(struct PokemonStorage *ptr)
void sub_8094958(void)
{
- sub_8094998(gUnknown_02038470, sub_803FBBC());
+ sub_8094998(gBattlePartyCurrentOrder, sub_803FBBC());
}
void sub_8094978(u8 arg1, u8 arg2)
{
- sub_8094A74((UNK_201606C_ARRAY) + arg1 * 3, arg2, arg1);
+ sub_8094A74(gBattleStruct->unk1606C[arg1], arg2, arg1);
}
static void sub_8094998(u8 arg[3], u8 player_number)
@@ -204,7 +205,7 @@ void sub_8094B6C(u8 a, u8 b, u8 c)
if (IsLinkDoubleBattle())
{
- u8 *arr = &ewram1606Carr(0, a);
+ u8 *arr = gBattleStruct->unk1606C[a];
for (i = 0, j = 0; i < 3; i++)
{
@@ -239,9 +240,9 @@ u8 sub_8094C20(u8 monIndex)
monIndex /= 2;
if (val)
- retVal = gUnknown_02038470[monIndex] & 0xF;
+ retVal = gBattlePartyCurrentOrder[monIndex] & 0xF;
else
- retVal = gUnknown_02038470[monIndex] >> 4;
+ retVal = gBattlePartyCurrentOrder[monIndex] >> 4;
return retVal;
}
@@ -251,9 +252,9 @@ void sub_8094C54(u8 a, u8 b)
a /= 2;
if (val)
- gUnknown_02038470[a] = (gUnknown_02038470[a] & 0xF0) | b;
+ gBattlePartyCurrentOrder[a] = (gBattlePartyCurrentOrder[a] & 0xF0) | b;
else
- gUnknown_02038470[a] = (gUnknown_02038470[a] & 0xF) | (b << 4);
+ gBattlePartyCurrentOrder[a] = (gBattlePartyCurrentOrder[a] & 0xF) | (b << 4);
}
void sub_8094C98(u8 a, u8 b)
@@ -272,10 +273,10 @@ u8 pokemon_order_func(u8 a)
for (i = 0, r2 = 0; i < 3; i++)
{
- if ((gUnknown_02038470[i] >> 4) == a)
+ if ((gBattlePartyCurrentOrder[i] >> 4) == a)
return r2;
r2++;
- if ((gUnknown_02038470[i] & 0xF) == a)
+ if ((gBattlePartyCurrentOrder[i] & 0xF) == a)
return r2;
r2++;
}
@@ -286,12 +287,12 @@ void pokemon_change_order(void)
{
u8 i;
- memcpy(ewram1B000.unk0, gPlayerParty, sizeof(gPlayerParty));
+ memcpy(ePartyMenu2.unk0, gPlayerParty, sizeof(gPlayerParty));
for (i = 0; i < 6; i++)
{
u8 n = pokemon_order_func(i);
- memcpy(&gPlayerParty[n], &ewram1B000.unk0[i], sizeof(struct Pokemon));
+ memcpy(&gPlayerParty[n], &ePartyMenu2.unk0[i], sizeof(struct Pokemon));
}
}
@@ -345,91 +346,93 @@ void sub_8094E4C(void)
bool8 SetUpBattlePartyMenu(void)
{
- switch (EWRAM_1B000.setupState)
- //switch (ewram1B000.unk264[0])
+ switch (ePartyMenu2.pmSetupState)
+ //switch (ePartyMenu2.unk264[0])
{
case 0:
//TODO: try to get rid of this duplicate code
if (IsLinkDoubleBattle() == TRUE)
{
- if (EWRAM_1B000.monIndex != 6)
+ if (ePartyMenu2.pmMonIndex != 6)
{
- TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]);
- EWRAM_1B000.monIndex++;
+ TryCreatePartyMenuMonIcon(ePartyMenu2.menuHandlerTaskId,
+ ePartyMenu2.pmMonIndex, &gPlayerParty[ePartyMenu2.pmMonIndex]);
+ ePartyMenu2.pmMonIndex++;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
}
else
{
- if (EWRAM_1B000.monIndex < 6)
+ if (ePartyMenu2.pmMonIndex < 6)
{
- TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]);
- EWRAM_1B000.monIndex++;
+ TryCreatePartyMenuMonIcon(ePartyMenu2.menuHandlerTaskId,
+ ePartyMenu2.pmMonIndex, &gPlayerParty[ePartyMenu2.pmMonIndex]);
+ ePartyMenu2.pmMonIndex++;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
}
break;
case 1:
LoadHeldItemIconGraphics();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 2:
- CreateHeldItemIcons_806DC34(EWRAM_1B000.menuHandlerTaskId);
- EWRAM_1B000.setupState++;
+ CreateHeldItemIcons_806DC34(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 3:
- if (sub_806BD58(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex) == 1)
+ if (sub_806BD58(ePartyMenu2.menuHandlerTaskId, ePartyMenu2.pmMonIndex) == 1)
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
else
- EWRAM_1B000.monIndex++;
+ ePartyMenu2.pmMonIndex++;
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 5:
PrintPartyMenuMonNicknames();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 6:
PartyMenuTryPrintMonsHP();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 7:
nullsub_13();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 8:
PartyMenuDrawHPBars();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 9:
- if (DrawPartyMonBackground(EWRAM_1B000.monIndex) == 1)
+ if (DrawPartyMonBackground(ePartyMenu2.pmMonIndex) == 1)
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
else
- EWRAM_1B000.monIndex++;
+ ePartyMenu2.pmMonIndex++;
break;
case 10:
if (gUnknown_02038473 == 3)
{
if (GetItemEffectType(gSpecialVar_ItemId) == 10)
- ewram1B000.promptTextId = 0xFF;
+ ePartyMenu2.promptTextId = 0xFF;
else
- ewram1B000.promptTextId = 3;
+ ePartyMenu2.promptTextId = 3;
}
return TRUE;
}
@@ -442,19 +445,19 @@ static void sub_8095050(u8 a, u8 b)
{
if (gUnknown_02038473 == 1)
{
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 1;
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 1;
+ gTasks[ePartyMenu2.menuHandlerTaskId].data[4] = 1;
+ gTasks[ePartyMenu2.menuHandlerTaskId].data[5] = 1;
}
else
{
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 0;
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 0;
+ gTasks[ePartyMenu2.menuHandlerTaskId].data[4] = 0;
+ gTasks[ePartyMenu2.menuHandlerTaskId].data[5] = 0;
}
}
else
{
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 2;
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 2;
+ gTasks[ePartyMenu2.menuHandlerTaskId].data[4] = 2;
+ gTasks[ePartyMenu2.menuHandlerTaskId].data[5] = 2;
}
ShowPartyPopupMenu(gTasks[a].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, 0);
@@ -479,7 +482,7 @@ void HandleBattlePartyMenu(u8 taskId)
PlaySE(SE_FAILURE);
else
{
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
gPokemonItemUseCallback(taskId, gSpecialVar_ItemId, Task_80952E4);
}
}
@@ -563,11 +566,12 @@ static void Task_809538C(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gUnknown_020384F0);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1);
- sub_8095050(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0);
- SetTaskFuncWithFollowupFunc(EWRAM_1B000.menuHandlerTaskId, Task_HandlePopupMenuInput, HandleBattlePartyMenu);
+ sub_8095050(ePartyMenu2.menuHandlerTaskId, gUnknown_020384F0);
+ SetTaskFuncWithFollowupFunc(
+ ePartyMenu2.menuHandlerTaskId, Task_HandlePopupMenuInput, HandleBattlePartyMenu);
SetMainCallback2(CB2_PartyMenuMain);
return;
}
@@ -613,7 +617,7 @@ static void Task_HandlePopupMenuInput(u8 taskId)
static void Task_80954C0(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
Task_BattlePartyMenuCancel(taskId);
}
@@ -624,7 +628,7 @@ static void Task_ShowSummaryScreen(u8 taskId)
if (!gPaletteFade.active)
{
DestroyTask(taskId);
- EWRAM_1B000.unk262 = 1;
+ ePartyMenu2.unk262 = 1;
ShowPokemonSummaryScreen(gPlayerParty, partySelection, gPlayerPartyCount - 1, Task_809535C, PSS_MODE_NO_MOVE_ORDER_EDIT);
}
}
@@ -646,19 +650,19 @@ static void Task_BattlePartyMenuShift(u8 taskId)
partySelection = sub_806CA38(taskId);
if (IsLinkDoubleBattle() == TRUE && (partySelection == 1 || partySelection == 4 || partySelection == 5))
{
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
StringCopy(gStringVar1, sub_8040D08());
StringExpandPlaceholders(gStringVar4, gOtherText_CantSwitchPokeWithYours);
- sub_806E834(gStringVar4, 0);
+ DisplayPartyMenuMessage(gStringVar4, 0);
gTasks[taskId].func = Task_80954C0;
return;
}
if (GetMonData(&gPlayerParty[partySelection], MON_DATA_HP) == 0)
{
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_NoEnergyLeft);
- sub_806E834(gStringVar4, 0);
+ DisplayPartyMenuMessage(gStringVar4, 0);
gTasks[taskId].func = Task_80954C0;
return;
}
@@ -667,36 +671,36 @@ static void Task_BattlePartyMenuShift(u8 taskId)
if (GetBattlerSide(i) == 0
&& sub_8094C20(partySelection) == gBattlerPartyIndexes[i])
{
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyBattle);
- sub_806E834(gStringVar4, 0);
+ DisplayPartyMenuMessage(gStringVar4, 0);
gTasks[taskId].func = Task_80954C0;
return;
}
}
if (GetMonData(&gPlayerParty[partySelection], MON_DATA_IS_EGG))
{
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
StringExpandPlaceholders(gStringVar4, gOtherText_EGGCantBattle);
- sub_806E834(gStringVar4, 0);
+ DisplayPartyMenuMessage(gStringVar4, 0);
gTasks[taskId].func = Task_80954C0;
return;
}
- if (sub_8094C20(partySelection) == EWRAM_1609D)
+ if (sub_8094C20(partySelection) == gBattleStruct->unk1609D)
{
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_AlreadySelected);
- sub_806E834(gStringVar4, 0);
+ DisplayPartyMenuMessage(gStringVar4, 0);
gTasks[taskId].func = Task_80954C0;
return;
}
if (gUnknown_02038473 == 4)
{
- sub_806D5A4();
- sub_8040B8C();
- sub_806E834(gStringVar4, 0);
+ PartyMenuEraseMsgBoxAndFrame();
+ SetMonPreventsSwitchingString();
+ DisplayPartyMenuMessage(gStringVar4, 0);
gTasks[taskId].func = Task_80954C0;
return;
}
@@ -705,11 +709,11 @@ static void Task_BattlePartyMenuShift(u8 taskId)
u8 r0;
u8 r4 = gBankInMenu;
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
r0 = pokemon_order_func(gBattlerPartyIndexes[r4]);
GetMonNickname(&gPlayerParty[r0], gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_CantBeSwitched);
- sub_806E834(gStringVar4, 0);
+ DisplayPartyMenuMessage(gStringVar4, 0);
gTasks[taskId].func = Task_80954C0;
return;
}
diff --git a/src/battle_records.c b/src/battle_records.c
index 307b977d5..e040418a7 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -29,7 +29,7 @@ const struct DebugStruct1 gUnknown_Debug_4245CC[] =
{ 7, DTR("ナンバー7", "NUMBER7") },
};
-const struct {u8 unk0; u8 unk1;} gUnknown_Debug_8424620[] =
+const struct {u8 totalPoints; u8 nextTurnSpriteId;} gUnknown_Debug_8424620[] =
{
{ 1, 1 },
{ 2, 1 },
@@ -231,13 +231,13 @@ void debug_sub_81257E0(void)
InitLinkBattleRecords();
for (i = 0; i < 3; i++)
{
- u32 id = gUnknown_Debug_8424620[i].unk0 - 1;
+ u32 id = gUnknown_Debug_8424620[i].totalPoints - 1;
UpdateLinkBattleRecords_(
gSaveBlock1.linkBattleRecords,
gUnknown_Debug_4245CC[id].var1,
gUnknown_Debug_4245CC[id].var0,
- gUnknown_Debug_8424620[i].unk1,
+ gUnknown_Debug_8424620[i].nextTurnSpriteId,
gLinkPlayers[gLinkPlayerObjectEvents[id].linkPlayerId].language);
}
}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 0cdcfe8f9..dc6bd3f5c 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "battle_anim.h"
#include "battle_message.h"
#include "battle_string_ids.h"
#include "battle_script_commands.h"
@@ -91,18 +92,25 @@ extern u8 gBattleTextBuff2[];
extern u8 gBattleTextBuff3[];
extern u8 gLeveledUpInBattle;
extern void (*gBattleMainFunc)(void);
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern const u8 BattleText_YesNo[];
extern u8 gPlayerPartyCount;
extern u16 gMoveToLearn; //move to learn
-extern const u8 gTrainerMoney[];
+
+struct TrainerReward
+{
+ u8 trainerClass;
+ u8 baseMoney;
+};
+
+extern const struct TrainerReward gTrainerMoney[];
extern u16 gRandomMove;
extern u8* gBattleScriptsForMoveEffects[];
extern u16 gChosenMove; //last used move in battle
extern u8 gBankInMenu;
extern u8 gActionForBanks[4];
-extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch
-extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one
+extern u16 gLastPrintedMoves[4]; //last used moves 2, used by sketch
+extern u16 gLastResultingMoves[4]; //last used moves by banks, another one
extern u8 gCurrentTurnActionNumber;
extern u16 gTrappingMoves[];
@@ -285,8 +293,6 @@ extern u8 BattleScript_GrudgeTakesPp[];
#define RecordAbilitySetField6(ability, fieldValue) \
(gLastUsedAbility = ability, gBattleCommunication[6] = fieldValue, RecordAbilityBattle(gBattlerTarget, ability))
-#define HP_ON_SWITCHOUT (((u16*)(ewram_addr + 0x160BC)))
-
static void atk00_attackcanceler(void);
static void atk01_accuracycheck(void);
static void atk02_attackstring(void);
@@ -2296,22 +2302,18 @@ u8 GetBattlerTurnOrderNum(u8 battlerId)
return i;
}
-//TODO Someone please decompile this monstrosity below...
-#ifdef NONMATCHING
-void SetMoveEffect(bool8 primary, u8 certainArg)
+void SetMoveEffect(bool8 primary, u8 certain)
{
- #define EffectAffectsUser 0x40
- register u8 certain asm("r5") = certainArg;
- register bool32 StatusChanged asm("r10") = 0;
- register int AffectsUser asm("r6") = 0; //0x40 otherwise
- bool32 NoSunCanFreeze = 1;
+ bool32 statusChanged = FALSE;
+ u8 affectsUser = 0;
+ bool32 noSunCanFreeze = TRUE;
- if (gBattleCommunication[MOVE_EFFECT_BYTE] & EffectAffectsUser)
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_AFFECTS_USER)
{
- gEffectBattler = gBattlerAttacker; //bank that effects get applied on
- gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(EffectAffectsUser);
- AffectsUser = EffectAffectsUser;
- gBattleStruct->scriptingActive = gBattlerTarget; //theoretically the attacker
+ gEffectBattler = gBattlerAttacker; // battlerId that effects get applied on
+ gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_AFFECTS_USER);
+ affectsUser = MOVE_EFFECT_AFFECTS_USER;
+ gBattleStruct->scriptingActive = gBattlerTarget; // theoretically the attacker
}
else
{
@@ -2319,2641 +2321,659 @@ void SetMoveEffect(bool8 primary, u8 certainArg)
gBattleStruct->scriptingActive = gBattlerAttacker;
}
- if (gBattleMons[gEffectBattler].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) &&
- !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
- {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gEffectBattler].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
- if (gSideStatuses[GetBattlerPosition(gEffectBattler) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) &&
- !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
- {gBattlescriptCurrInstr++; return;}
+ if (gSideStatuses[GET_BATTLER_SIDE(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
- //make sure at least ONE HP except payday and thief
- if (gBattleMons[gEffectBattler].hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F)
- {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gEffectBattler].hp == 0
+ && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_PAYDAY
+ && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_STEAL_ITEM)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
- if (gBattleMons[gEffectBattler].status2 & STATUS2_SUBSTITUTE && AffectsUser != EffectAffectsUser)
- {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_SUBSTITUTE && affectsUser != MOVE_EFFECT_AFFECTS_USER)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
- if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) //status change
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] <= PRIMARY_STATUS_MOVE_EFFECT)
{
switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
{
case STATUS1_SLEEP:
- //check active uproar
+ // check active uproar
if (gBattleMons[gEffectBattler].ability != ABILITY_SOUNDPROOF)
{
- for (gActiveBattler = 0; gActiveBattler < gBattlersCount && !(gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR); gActiveBattler++) {}
+ for (gActiveBattler = 0;
+ gActiveBattler < gBattlersCount && !(gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR);
+ gActiveBattler++)
+ {}
}
else
gActiveBattler = gBattlersCount;
- if (gBattleMons[gEffectBattler].status1) {break;}
- if (gActiveBattler != gBattlersCount) {break;} //nice way of checking uproar...
- if (gBattleMons[gEffectBattler].ability == ABILITY_VITAL_SPIRIT) {break;}
- if (gBattleMons[gEffectBattler].ability == ABILITY_INSOMNIA) {break;}
+
+ if (gBattleMons[gEffectBattler].status1)
+ break;
+ if (gActiveBattler != gBattlersCount)
+ break;
+ if (gBattleMons[gEffectBattler].ability == ABILITY_VITAL_SPIRIT)
+ break;
+ if (gBattleMons[gEffectBattler].ability == ABILITY_INSOMNIA)
+ break;
CancelMultiTurnMoves(gEffectBattler);
- StatusChanged = 1;
+ statusChanged = TRUE;
break;
case STATUS1_POISON:
- if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80))
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_IMMUNITY;
RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY);
+
BattleScriptPush(gBattlescriptCurrInstr + 1);
- //_0801E664:
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
- return;
}
else
- {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;}
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
+ }
+ return;
}
- if ((gBattleMons[gEffectBattler].type1 == TYPE_POISON || gBattleMons[gEffectBattler].type2 == TYPE_POISON || gBattleMons[gEffectBattler].type1 == TYPE_STEEL || gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
- && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80))
+ if ((IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) || IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL))
+ && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT;
return;
}
- if (gBattleMons[gEffectBattler].type1 == TYPE_POISON) {break;}
- if (gBattleMons[gEffectBattler].type2 == TYPE_POISON) {break;}
- if (gBattleMons[gEffectBattler].type1 == TYPE_STEEL) {break;}
- if (gBattleMons[gEffectBattler].type2 == TYPE_STEEL) {break;}
- if (gBattleMons[gEffectBattler].status1) {break;}
- if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY) {break;}
+ if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON))
+ break;
+ if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL))
+ break;
+ if (gBattleMons[gEffectBattler].status1)
+ break;
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY)
+ break;
- StatusChanged = 1;
+ statusChanged = TRUE;
break;
case STATUS1_BURN:
- if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80))
+ if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_WATER_VEIL;
RecordAbilityBattle(gEffectBattler, ABILITY_WATER_VEIL);
+
BattleScriptPush(gBattlescriptCurrInstr + 1);
- //_0801E664:
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
- return;
}
else
- {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;}
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
+ }
+ return;
}
- if ((gBattleMons[gEffectBattler].type1 == TYPE_FIRE || gBattleMons[gEffectBattler].type2 == TYPE_FIRE)
- && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80))
+ if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE)
+ && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT;
return;
}
- if (gBattleMons[gEffectBattler].type1 == TYPE_FIRE) {break;}
- if (gBattleMons[gEffectBattler].type2 == TYPE_FIRE) {break;}
- if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL) {break;}
- if (gBattleMons[gEffectBattler].status1 == 0) {break;}
- StatusChanged = 1;
+ if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE))
+ break;
+ if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL)
+ break;
+ if (gBattleMons[gEffectBattler].status1)
+ break;
+
+ statusChanged = TRUE;
break;
case STATUS1_FREEZE:
- if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;}
- if (gBattleMons[gEffectBattler].type1 == TYPE_ICE) {break;}
- if (gBattleMons[gEffectBattler].type2 == TYPE_ICE) {break;}
- if (gBattleMons[gEffectBattler].status1) {break;}
- if (NoSunCanFreeze == 0) {break;}
- if (gBattleMons[gEffectBattler].ability == ABILITY_MAGMA_ARMOR) {break;}
+ if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY)
+ noSunCanFreeze = FALSE;
+ if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_ICE))
+ break;
+ if (gBattleMons[gEffectBattler].status1)
+ break;
+ if (noSunCanFreeze == 0)
+ break;
+ if (gBattleMons[gEffectBattler].ability == ABILITY_MAGMA_ARMOR)
+ break;
CancelMultiTurnMoves(gEffectBattler);
- StatusChanged = 1;
+ statusChanged = TRUE;
break;
case STATUS1_PARALYSIS:
if (gBattleMons[gEffectBattler].ability == ABILITY_LIMBER)
{
- if ((primary == 1 || certain == 0x80))
+ if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
{
gLastUsedAbility = ABILITY_LIMBER;
RecordAbilityBattle(gEffectBattler, ABILITY_LIMBER);
+
BattleScriptPush(gBattlescriptCurrInstr + 1);
- //_0801E664:
gBattlescriptCurrInstr = BattleScript_PRLZPrevention;
+
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
- return;
}
else
- {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;}
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
+ }
+ return;
}
- else {break;}
+ else
+ break;
}
- if (gBattleMons[gEffectBattler].status1) {break;}
- StatusChanged = 1;
+ if (gBattleMons[gEffectBattler].status1)
+ break;
+
+ statusChanged = TRUE;
break;
case STATUS1_TOXIC_POISON:
- if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80))
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_IMMUNITY;
RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY);
+
BattleScriptPush(gBattlescriptCurrInstr + 1);
- //_0801E664:
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
- return;
}
else
- {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;}
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_MOVE_STATUS;
+ }
+ return;
}
- if ((gBattleMons[gEffectBattler].type1 == TYPE_POISON || gBattleMons[gEffectBattler].type2 == TYPE_POISON || gBattleMons[gEffectBattler].type1 == TYPE_STEEL || gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
- && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80))
+ if ((IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) || IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL))
+ && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
- gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUS_HAD_NO_EFFECT;
return;
}
- if (gBattleMons[gEffectBattler].status1) {break;}
- if (gBattleMons[gEffectBattler].type1 != TYPE_POISON &&
- gBattleMons[gEffectBattler].type2 != TYPE_POISON &&
- gBattleMons[gEffectBattler].type1 != TYPE_STEEL &&
- gBattleMons[gEffectBattler].type2 != TYPE_STEEL)
+ if (gBattleMons[gEffectBattler].status1)
+ break;
+ if (!IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) && !IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL))
{
- if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY) {break;}
- gBattleMons[gEffectBattler].status1 &= ~(0x9); //This gets (correctly) optimized out...
- StatusChanged = 1;
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY)
+ break;
+
+ // It's redundant, because at this point we know the status1 value is 0.
+ gBattleMons[gEffectBattler].status1 &= ~(STATUS1_TOXIC_POISON);
+ gBattleMons[gEffectBattler].status1 &= ~(STATUS1_POISON);
+ statusChanged = TRUE;
break;
}
else
+ {
gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
+ }
break;
}
- if (StatusChanged == 1)
+ if (statusChanged == TRUE)
{
BattleScriptPush(gBattlescriptCurrInstr + 1);
+
if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS1_SLEEP)
- gBattleMons[gEffectBattler].status1 |= ((Random() & 3) + 2);
+ gBattleMons[gEffectBattler].status1 |= STATUS1_SLEEP_TURN((Random() & 3) + 2); // 2-5 turns
else
gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+
gActiveBattler = gEffectBattler;
BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
+
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
- gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED_BY_ABILITY;
gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
}
else
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (gBattleCommunication[MOVE_EFFECT_BYTE] == 2 || gBattleCommunication[MOVE_EFFECT_BYTE] == 6 || gBattleCommunication[MOVE_EFFECT_BYTE] == 5 || gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED;
+ }
+
+ // for synchronize
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_POISON
+ || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_TOXIC
+ || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_PARALYSIS
+ || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN)
{
gBattleStruct->synchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE];
gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT;
}
return;
}
- else if (StatusChanged == 0)
- {gBattlescriptCurrInstr++; return;}
+ else if (statusChanged == FALSE)
+ {
+// gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattlescriptCurrInstr++;
+ return;
+ }
+ return;
}
else
{
if (gBattleMons[gEffectBattler].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
{
gBattlescriptCurrInstr++;
- return;
}
- switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ else
{
- case 7: //confusion
- if (gBattleMons[gEffectBattler].ability == ABILITY_OWN_TEMPO)
- {gBattlescriptCurrInstr++; return;}
- if (gBattleMons[gEffectBattler].status2 & STATUS2_CONFUSION)
- {gBattlescriptCurrInstr++; return;}
- gBattleMons[gEffectBattler].status2 |= (((Random()) % 0x4)) + 2;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- break;
- case 8: //flinch
- if (gBattleMons[gEffectBattler].ability == ABILITY_INNER_FOCUS)
+ u8 side;
+ switch (gBattleCommunication[MOVE_EFFECT_BYTE])
{
- if (primary == 1 || certain == 0x80)
+ case MOVE_EFFECT_CONFUSION:
+ if (gBattleMons[gEffectBattler].ability == ABILITY_OWN_TEMPO
+ || gBattleMons[gEffectBattler].status2 & STATUS2_CONFUSION)
{
- gLastUsedAbility = ABILITY_INNER_FOCUS;
- RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS);
- gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
- return;
+ gBattlescriptCurrInstr++;
}
else
- {gBattlescriptCurrInstr++; return;}
- }
- else
- {
- if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber)
- gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
- gBattlescriptCurrInstr++; return;
- }
- break;
- case 10: //uproar
- if (gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR)
- {gBattlescriptCurrInstr++; return;}
- gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBattler] = gCurrentMove;
- gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 2) << 4;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- break;
- case 11: //pay day
- if (!(GetBattlerPosition(gBattlerAttacker) & 1))
- {
- u16 PayDay = gPaydayMoney;
- gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 5);
- if (PayDay > gPaydayMoney)
- gPaydayMoney = 0xFFFF;
- }
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- break;
- case 9: //tri attack
- if (gBattleMons[gEffectBattler].status1)
- {gBattlescriptCurrInstr++; return;}
- gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3;
- SetMoveEffect(0, 0);
- break;
- case 12: //charging move
- gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBattler] = gCurrentMove;
- gProtectStructs[gEffectBattler].chargingTurn = 1;
- gBattlescriptCurrInstr++;
- break;
- case 13: //wrap
- if (gBattleMons[gEffectBattler].status2 & STATUS2_WRAPPED)
- {gBattlescriptCurrInstr++; return;}
- gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 2) << 0xD;
- gBattleStruct->wrappedMove[gEffectBattler*2] = (u8)gCurrentMove;
- (1 + gBattleStruct->wrappedMove)[gEffectBattler*2] = gCurrentMove >> 8; //don't ask.
- gBattleStruct->wrappedBy[gEffectBattler] = gBattlerAttacker;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- while (gBattleCommunication[MULTISTRING_CHOOSER] <= 4
- && gCurrentMove != gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]])
- gBattleCommunication[MULTISTRING_CHOOSER]++;
- break;
- case 14: //25% recoil
- gBattleMoveDamage = (gHpDealt) / 4;
- if (gBattleMoveDamage == 0)
- gBattleMoveDamage = 1;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- break;
- case 15 ... 21: //stat + 1
- if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;}
- else
- {
- gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one
- gBattleStruct->animArg2 = 0;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_StatUp;
- }
- break;
- case 22 ... 28: //stat - 1
- if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly
- else
- {
- gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F;
- gBattleStruct->animArg2 = 0;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_StatDown;
- }
- break;
- case 39 ... 45: //stat + 2
- if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;}
- else
- {
- gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F;
- gBattleStruct->animArg2 = 0;
+ {
+ gBattleMons[gEffectBattler].status2 |= STATUS2_CONFUSION_TURN(((Random()) % 4) + 2); // 2-5 turns
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ }
+ break;
+ case MOVE_EFFECT_FLINCH:
+ if (gBattleMons[gEffectBattler].ability == ABILITY_INNER_FOCUS)
+ {
+ if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
+ {
+ gLastUsedAbility = ABILITY_INNER_FOCUS;
+ RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS);
+ gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ }
+ else
+ {
+ if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber)
+ gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_UPROAR:
+ if (!(gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR))
+ {
+
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_UPROAR_TURN((Random() & 3) + 2); // 2-5 turns
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_PAYDAY:
+ if (GET_BATTLER_SIDE(gBattlerAttacker) == B_SIDE_PLAYER)
+ {
+ u16 PayDay = gPaydayMoney;
+ gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 5);
+ if (PayDay > gPaydayMoney)
+ gPaydayMoney = 0xFFFF;
+ }
BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_StatUp;
- }
- break;
- case 46 ... 52: //stat - 2
- if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;}
- else
- {
- gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F;
- gBattleStruct->animArg2 = 0;
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case MOVE_EFFECT_TRI_ATTACK:
+ if (gBattleMons[gEffectBattler].status1)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3;
+ SetMoveEffect(FALSE, 0); // Recursive
+ }
+ break;
+ case MOVE_EFFECT_CHARGING:
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gProtectStructs[gEffectBattler].chargingTurn = 1;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_WRAP:
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_WRAPPED)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleMons[gEffectBattler].status2 |= STATUS2_WRAPPED_TURN((Random() & 3) + 3); // 3-6 turns
+
+ gSharedMem[BSTRUCT_OFF(wrappedMove) + gEffectBattler * 2 + 0] = gCurrentMove;
+ gSharedMem[BSTRUCT_OFF(wrappedMove) + gEffectBattler * 2 + 1] = gCurrentMove >> 8;
+ gSharedMem[BSTRUCT_OFF(wrappedBy) + gEffectBattler] = gBattlerAttacker;
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+
+ for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++)
+ {
+ if (gBattleCommunication[MULTISTRING_CHOOSER] > 4)
+ break;
+ if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove)
+ break;
+ }
+ }
+ break;
+ case MOVE_EFFECT_RECOIL_25: // 25% recoil
+ gBattleMoveDamage = (gHpDealt) / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_StatDown;
- }
- break;
- case 29: //recharge
- gBattleMons[gEffectBattler].status2 |= STATUS2_RECHARGE;
- gDisableStructs[gEffectBattler].rechargeCounter = 2;
- gLockedMoves[gEffectBattler] = gCurrentMove;
- gBattlescriptCurrInstr++;
- break;
- case 30: //rage
- gBattleMons[gBattlerAttacker].status2 |= STATUS2_RAGE;
- gBattlescriptCurrInstr++;
- break;
- case 31: //item steal
- {
- u8 side = GetBattlerSide(gBattlerAttacker);
- if (GetBattlerSide(gBattlerAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400)
- {gBattlescriptCurrInstr++; return;}
- if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]))
- {gBattlescriptCurrInstr++; return;}
- if (gBattleMons[gBattlerTarget].item && gBattleMons[gBattlerTarget].ability == ABILITY_STICKY_HOLD)
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case MOVE_EFFECT_ATK_PLUS_1:
+ case MOVE_EFFECT_DEF_PLUS_1:
+ case MOVE_EFFECT_SPD_PLUS_1:
+ case MOVE_EFFECT_SP_ATK_PLUS_1:
+ case MOVE_EFFECT_SP_DEF_PLUS_1:
+ case MOVE_EFFECT_ACC_PLUS_1:
+ case MOVE_EFFECT_EVS_PLUS_1:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1),
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_1 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleStruct->animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatUp;
+ }
+ break;
+ case MOVE_EFFECT_ATK_MINUS_1:
+ case MOVE_EFFECT_DEF_MINUS_1:
+ case MOVE_EFFECT_SPD_MINUS_1:
+ case MOVE_EFFECT_SP_ATK_MINUS_1:
+ case MOVE_EFFECT_SP_DEF_MINUS_1:
+ case MOVE_EFFECT_ACC_MINUS_1:
+ case MOVE_EFFECT_EVS_MINUS_1:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE,
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_1 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleStruct->animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatDown;
+ }
+ break;
+ case MOVE_EFFECT_ATK_PLUS_2:
+ case MOVE_EFFECT_DEF_PLUS_2:
+ case MOVE_EFFECT_SPD_PLUS_2:
+ case MOVE_EFFECT_SP_ATK_PLUS_2:
+ case MOVE_EFFECT_SP_DEF_PLUS_2:
+ case MOVE_EFFECT_ACC_PLUS_2:
+ case MOVE_EFFECT_EVS_PLUS_2:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2),
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_2 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleStruct->animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatUp;
+ }
+ break;
+ case MOVE_EFFECT_ATK_MINUS_2:
+ case MOVE_EFFECT_DEF_MINUS_2:
+ case MOVE_EFFECT_SPD_MINUS_2:
+ case MOVE_EFFECT_SP_ATK_MINUS_2:
+ case MOVE_EFFECT_SP_DEF_MINUS_2:
+ case MOVE_EFFECT_ACC_MINUS_2:
+ case MOVE_EFFECT_EVS_MINUS_2:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE,
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_2 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleStruct->animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatDown;
+ }
+ break;
+ case MOVE_EFFECT_RECHARGE:
+ gBattleMons[gEffectBattler].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gEffectBattler].rechargeCounter = 2;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_RAGE:
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_RAGE;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_STEAL_ITEM:
+ {
+ side = GetBattlerSide(gBattlerAttacker);
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT
+ && !(gBattleTypeFlags &
+ (BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_BATTLE_TOWER
+ | BATTLE_TYPE_LINK)
+ || gTrainerBattleOpponent == SECRET_BASE_OPPONENT))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else if (!(gBattleTypeFlags &
+ (BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_BATTLE_TOWER
+ | BATTLE_TYPE_LINK)
+ || gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
+ && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else if (gBattleMons[gBattlerTarget].item
+ && gBattleMons[gBattlerTarget].ability == ABILITY_STICKY_HOLD)
{
- BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_NoItemSteal;
+
gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
- return;
}
- if (gBattleMons[gBattlerAttacker].item)
- {gBattlescriptCurrInstr++; return;}
- if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
- {gBattlescriptCurrInstr++; return;}
- if (gBattleMons[gBattlerTarget].item == 0)
- {gBattlescriptCurrInstr++; return;}
+ else if (gBattleMons[gBattlerAttacker].item == ITEM_NONE
+ && gBattleMons[gBattlerTarget].item != ITEM_ENIGMA_BERRY
+ && gBattleMons[gBattlerTarget].item != ITEM_NONE)
+ {
+ u16* changedItem = &gBattleStruct->changedItems[gBattlerAttacker];
+ gLastUsedItem = *changedItem = gBattleMons[gBattlerTarget].item;
+ gBattleMons[gBattlerTarget].item = 0;
- gLastUsedItem = gBattleMons[gBattlerTarget].item;
- *USED_HELD_ITEM(gBattlerTarget) = gLastUsedItem;
- gBattleMons[gBattlerTarget].item = 0;
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
+ MarkBattlerForControllerExec(gBattlerAttacker);
- gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
- MarkBattlerForControllerExec(gBattlerAttacker);
+ gActiveBattler = gBattlerTarget;
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
+ MarkBattlerForControllerExec(gBattlerTarget);
- gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
- MarkBattlerForControllerExec(gBattlerTarget);
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_ItemSteal;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_ItemSteal;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + (2 * gBattlerTarget) + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + (2 * gBattlerTarget) + 1] = 0;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
- *CHOICED_MOVE(gBattlerTarget) = 0;
}
- break;
- case 32: //escape prevention
- gBattleMons[gBattlerTarget].status2 |= STATUS2_RECHARGE;
- gDisableStructs[gBattlerTarget].bankPreventingEscape = gBattlerAttacker;
- gBattlescriptCurrInstr++;
- break;
- case 33: //nightmare
- gBattleMons[gBattlerTarget].status2 |= STATUS2_NIGHTMARE;
- gBattlescriptCurrInstr++;
- break;
- case 34: //ancientpower
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_AllStatsUp;
- return;
- case 35: //break free rapidspin
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_RapidSpinAway;
- return;
- case 36: //paralysis removal
- if (gBattleMons[gBattlerTarget].status1 & STATUS1_PARALYSIS)
- {
- gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_PARALYSIS);
- gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1);
- MarkBattlerForControllerExec(gActiveBattler);
+ break;
+ case MOVE_EFFECT_PREVENT_ESCAPE:
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION;
+ gDisableStructs[gBattlerTarget].bankPreventingEscape = gBattlerAttacker;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_NIGHTMARE:
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_NIGHTMARE;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_ALL_STATS_UP:
BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
- }
- else
- {gBattlescriptCurrInstr++; return;}
- break;
- case 37: //superpower
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_AtkDefDown;
- return;
- case 38: //33% recoil
- gBattleMoveDamage = gHpDealt / 3;
- if (gBattleMoveDamage == 0)
- gBattleMoveDamage = 1;
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- break;
- case 53: //thrash
- if (!(gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE))
- {
- gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBattler] = gCurrentMove;
- gBattleMons[gEffectBattler].status2 |= (((Random() & 1) + 2) << 0xA);
- }
- else
- {gBattlescriptCurrInstr++; return;}
- break;
- case 54: //knock off
- if (gBattleMons[gEffectBattler].ability == ABILITY_STICKY_HOLD)
- {
- if (gBattleMons[gEffectBattler].item == 0)
- {gBattlescriptCurrInstr++; return;}
- gLastUsedAbility = ABILITY_STICKY_HOLD;
- gBattlescriptCurrInstr = BattleScript_NoItemSteal;
- RecordAbilityBattle(gEffectBattler, ABILITY_STICKY_HOLD);
- return;
- }
- if (gBattleMons[gEffectBattler].item == 0)
- {gBattlescriptCurrInstr++; return;}
- else
- {
- u8 side = GetBattlerSide(gEffectBattler);
- gLastUsedItem = gBattleMons[gEffectBattler].item;
- gBattleMons[gEffectBattler].item = 0;
- gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlerPartyIndexes[gEffectBattler]];
+ gBattlescriptCurrInstr = BattleScript_AllStatsUp;
+ break;
+ case MOVE_EFFECT_RAPIDSPIN:
BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_KnockedOff;
+ gBattlescriptCurrInstr = BattleScript_RapidSpinAway;
+ break;
+ case MOVE_EFFECT_REMOVE_PARALYSIS: // Smelling salts
+ if ((gBattleMons[gBattlerTarget].status1 & STATUS1_PARALYSIS))
+ {
+ gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_PARALYSIS);
+
+ gActiveBattler = gBattlerTarget;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
- *CHOICED_MOVE(gEffectBattler) = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_ATK_DEF_DOWN: // SuperPower
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_AtkDefDown;
+ break;
+ case MOVE_EFFECT_RECOIL_33: // Double Edge
+ gBattleMoveDamage = gHpDealt / 3;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case MOVE_EFFECT_THRASH:
+ if (!(gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE))
+ {
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_LOCK_CONFUSE_TURN((Random() & 1) + 2); // thrash for 2-3 turns
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_KNOCK_OFF:
+ if (gBattleMons[gEffectBattler].ability == ABILITY_STICKY_HOLD)
+ {
+ if (gBattleMons[gEffectBattler].item == 0)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gLastUsedAbility = ABILITY_STICKY_HOLD;
+ gBattlescriptCurrInstr = BattleScript_NoItemSteal;
+ RecordAbilityBattle(gEffectBattler, ABILITY_STICKY_HOLD);
+ }
+ break;
+ }
+ if (gBattleMons[gEffectBattler].item)
+ {
+ side = GetBattlerSide(gEffectBattler);
+
+ gLastUsedItem = gBattleMons[gEffectBattler].item;
+ gBattleMons[gEffectBattler].item = 0;
+ gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlerPartyIndexes[gEffectBattler]];
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_KnockedOff;
+
+ gSharedMem[BSTRUCT_OFF(choicedMove) + (2 * gEffectBattler) + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + (2 * gEffectBattler) + 1] = 0;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_SP_ATK_TWO_DOWN: // Overheat
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_SAtkDown2;
+ break;
}
- break;
- case 59: //overheat
- BattleScriptPush(gBattlescriptCurrInstr + 1);
- gBattlescriptCurrInstr = BattleScript_SAtkDown2;
- return;
}
}
+
+// gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
}
-#else
-NAKED
-void SetMoveEffect(bool8 primary, u8 certainArg)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x8\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- lsls r1, 24\n\
- lsrs r5, r1, 24\n\
- movs r0, 0\n\
- mov r10, r0\n\
- movs r6, 0\n\
- movs r1, 0x1\n\
- str r1, [sp, 0x4]\n\
- ldr r1, _0801E430 @ =gBattleCommunication\n\
- ldrb r3, [r1, 0x3]\n\
- movs r0, 0x40\n\
- ands r0, r3\n\
- adds r7, r1, 0\n\
- cmp r0, 0\n\
- beq _0801E444\n\
- ldr r2, _0801E434 @ =gEffectBattler\n\
- ldr r0, _0801E438 @ =gBattlerAttacker\n\
- ldrb r0, [r0]\n\
- strb r0, [r2]\n\
- movs r0, 0xBF\n\
- ands r0, r3\n\
- strb r0, [r7, 0x3]\n\
- movs r6, 0x40\n\
- ldr r0, _0801E43C @ =gSharedMem\n\
- ldr r1, _0801E440 @ =gBattlerTarget\n\
- b _0801E450\n\
- .align 2, 0\n\
-_0801E430: .4byte gBattleCommunication\n\
-_0801E434: .4byte gEffectBattler\n\
-_0801E438: .4byte gBattlerAttacker\n\
-_0801E43C: .4byte gSharedMem\n\
-_0801E440: .4byte gBattlerTarget\n\
-_0801E444:\n\
- ldr r2, _0801E538 @ =gEffectBattler\n\
- ldr r0, _0801E53C @ =gBattlerTarget\n\
- ldrb r0, [r0]\n\
- strb r0, [r2]\n\
- ldr r0, _0801E540 @ =gSharedMem\n\
- ldr r1, _0801E544 @ =gBattlerAttacker\n\
-_0801E450:\n\
- ldrb r1, [r1]\n\
- ldr r3, _0801E548 @ =0x00016003\n\
- adds r0, r3\n\
- strb r1, [r0]\n\
- mov r8, r2\n\
- ldr r2, _0801E54C @ =gBattleMons\n\
- mov r0, r8\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r2\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x13\n\
- bne _0801E48A\n\
- ldr r0, _0801E550 @ =gHitMarker\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801E48A\n\
- cmp r4, 0\n\
- bne _0801E48A\n\
- ldrb r0, [r7, 0x3]\n\
- cmp r0, 0x9\n\
- bhi _0801E48A\n\
- bl _0801F5DC\n\
-_0801E48A:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- bl GetBattlerPosition\n\
- ldr r2, _0801E554 @ =gSideStatuses\n\
- movs r1, 0x1\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- adds r1, r2\n\
- ldrh r1, [r1]\n\
- movs r0, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E4C4\n\
- ldr r0, _0801E550 @ =gHitMarker\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801E4C4\n\
- cmp r4, 0\n\
- bne _0801E4C4\n\
- ldr r0, _0801E558 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- cmp r0, 0x7\n\
- bhi _0801E4C4\n\
- bl _0801F5DC\n\
-_0801E4C4:\n\
- ldr r3, _0801E54C @ =gBattleMons\n\
- ldr r2, _0801E538 @ =gEffectBattler\n\
- ldrb r1, [r2]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r3\n\
- ldrh r0, [r0, 0x28]\n\
- mov r8, r2\n\
- mov r9, r3\n\
- cmp r0, 0\n\
- bne _0801E4EA\n\
- ldr r0, _0801E558 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- cmp r0, 0xB\n\
- beq _0801E4EA\n\
- cmp r0, 0x1F\n\
- beq _0801E4EA\n\
- bl _0801F5DC\n\
-_0801E4EA:\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- mov r1, r9\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 17\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E50C\n\
- cmp r6, 0x40\n\
- beq _0801E50C\n\
- bl _0801F5DC\n\
-_0801E50C:\n\
- ldr r0, _0801E558 @ =gBattleCommunication\n\
- ldrb r1, [r0, 0x3]\n\
- adds r7, r0, 0\n\
- cmp r1, 0x6\n\
- bls _0801E518\n\
- b _0801EB4A\n\
-_0801E518:\n\
- ldr r1, _0801E55C @ =sStatusFlagsForMoveEffects\n\
- ldrb r0, [r7, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- cmp r0, 0x10\n\
- bne _0801E528\n\
- b _0801E714\n\
-_0801E528:\n\
- cmp r0, 0x10\n\
- bhi _0801E560\n\
- cmp r0, 0x7\n\
- beq _0801E57A\n\
- cmp r0, 0x8\n\
- bne _0801E536\n\
- b _0801E630\n\
-_0801E536:\n\
- b _0801EA14\n\
- .align 2, 0\n\
-_0801E538: .4byte gEffectBattler\n\
-_0801E53C: .4byte gBattlerTarget\n\
-_0801E540: .4byte gSharedMem\n\
-_0801E544: .4byte gBattlerAttacker\n\
-_0801E548: .4byte 0x00016003\n\
-_0801E54C: .4byte gBattleMons\n\
-_0801E550: .4byte gHitMarker\n\
-_0801E554: .4byte gSideStatuses\n\
-_0801E558: .4byte gBattleCommunication\n\
-_0801E55C: .4byte sStatusFlagsForMoveEffects\n\
-_0801E560:\n\
- cmp r0, 0x40\n\
- bne _0801E566\n\
- b _0801E888\n\
-_0801E566:\n\
- cmp r0, 0x40\n\
- bhi _0801E572\n\
- cmp r0, 0x20\n\
- bne _0801E570\n\
- b _0801E7EA\n\
-_0801E570:\n\
- b _0801EA14\n\
-_0801E572:\n\
- cmp r0, 0x80\n\
- bne _0801E578\n\
- b _0801E8E4\n\
-_0801E578:\n\
- b _0801EA14\n\
-_0801E57A:\n\
- mov r3, r8\n\
- ldrb r1, [r3]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- add r0, r9\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x2B\n\
- beq _0801E5DC\n\
- ldr r0, _0801E5D4 @ =gActiveBattler\n\
- movs r1, 0\n\
- strb r1, [r0]\n\
- ldr r1, _0801E5D8 @ =gBattlersCount\n\
- ldrb r3, [r1]\n\
- adds r7, r0, 0\n\
- mov r12, r1\n\
- cmp r3, 0\n\
- beq _0801E5E8\n\
- mov r4, r9\n\
- ldr r0, [r4, 0x50]\n\
- movs r1, 0x70\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801E5E8\n\
- adds r1, r7, 0\n\
- mov r6, r9\n\
- adds r6, 0x50\n\
- movs r5, 0x58\n\
- movs r4, 0x70\n\
-_0801E5B4:\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r3\n\
- bcs _0801E5E8\n\
- ldrb r0, [r7]\n\
- muls r0, r5\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- ands r0, r4\n\
- cmp r0, 0\n\
- beq _0801E5B4\n\
- b _0801E5E8\n\
- .align 2, 0\n\
-_0801E5D4: .4byte gActiveBattler\n\
-_0801E5D8: .4byte gBattlersCount\n\
-_0801E5DC:\n\
- ldr r0, _0801E628 @ =gActiveBattler\n\
- ldr r2, _0801E62C @ =gBattlersCount\n\
- ldrb r1, [r2]\n\
- strb r1, [r0]\n\
- adds r7, r0, 0\n\
- mov r12, r2\n\
-_0801E5E8:\n\
- mov r0, r8\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- adds r1, r2, 0\n\
- muls r1, r0\n\
- mov r0, r9\n\
- adds r0, 0x4C\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- beq _0801E600\n\
- b _0801EA14\n\
-_0801E600:\n\
- ldrb r0, [r7]\n\
- mov r3, r12\n\
- ldrb r3, [r3]\n\
- cmp r0, r3\n\
- beq _0801E60C\n\
- b _0801EA14\n\
-_0801E60C:\n\
- mov r4, r9\n\
- adds r0, r1, r4\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x48\n\
- bne _0801E61A\n\
- b _0801EA14\n\
-_0801E61A:\n\
- cmp r0, 0xF\n\
- bne _0801E620\n\
- b _0801EA14\n\
-_0801E620:\n\
- adds r0, r2, 0\n\
- bl CancelMultiTurnMoves\n\
- b _0801EA04\n\
- .align 2, 0\n\
-_0801E628: .4byte gActiveBattler\n\
-_0801E62C: .4byte gBattlersCount\n\
-_0801E630:\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- add r0, r9\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- cmp r1, 0x11\n\
- bne _0801E688\n\
- cmp r4, 0x1\n\
- beq _0801E64A\n\
- cmp r5, 0x80\n\
- bne _0801E688\n\
-_0801E64A:\n\
- ldr r0, _0801E678 @ =gLastUsedAbility\n\
- strb r1, [r0]\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r1, 0x11\n\
- bl RecordAbilityBattle\n\
- ldr r4, _0801E67C @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801E680 @ =BattleScript_PSNPrevention\n\
-_0801E664:\n\
- str r0, [r4]\n\
- ldr r2, _0801E684 @ =gHitMarker\n\
- ldr r1, [r2]\n\
- movs r0, 0x80\n\
- lsls r0, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E676\n\
- b _0801E928\n\
-_0801E676:\n\
- b _0801E94C\n\
- .align 2, 0\n\
-_0801E678: .4byte gLastUsedAbility\n\
-_0801E67C: .4byte gBattlescriptCurrInstr\n\
-_0801E680: .4byte BattleScript_PSNPrevention\n\
-_0801E684: .4byte gHitMarker\n\
-_0801E688:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- movs r1, 0x58\n\
- muls r0, r1\n\
- add r0, r9\n\
- adds r1, r0, 0\n\
- adds r1, 0x21\n\
- ldrb r1, [r1]\n\
- cmp r1, 0x3\n\
- beq _0801E6AC\n\
- adds r0, 0x22\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3\n\
- beq _0801E6AC\n\
- cmp r1, 0x8\n\
- beq _0801E6AC\n\
- cmp r0, 0x8\n\
- bne _0801E6C6\n\
-_0801E6AC:\n\
- ldr r0, _0801E710 @ =gHitMarker\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E6C6\n\
- cmp r4, 0x1\n\
- bne _0801E6C0\n\
- b _0801E98C\n\
-_0801E6C0:\n\
- cmp r5, 0x80\n\
- bne _0801E6C6\n\
- b _0801E98C\n\
-_0801E6C6:\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- movs r0, 0x58\n\
- muls r1, r0\n\
- mov r4, r9\n\
- adds r3, r1, r4\n\
- adds r0, r3, 0\n\
- adds r0, 0x21\n\
- ldrb r4, [r0]\n\
- cmp r4, 0x3\n\
- bne _0801E6DE\n\
- b _0801EA14\n\
-_0801E6DE:\n\
- adds r0, 0x1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3\n\
- bne _0801E6E8\n\
- b _0801EA14\n\
-_0801E6E8:\n\
- cmp r4, 0x8\n\
- bne _0801E6EE\n\
- b _0801EA14\n\
-_0801E6EE:\n\
- cmp r0, 0x8\n\
- bne _0801E6F4\n\
- b _0801EA14\n\
-_0801E6F4:\n\
- mov r0, r9\n\
- adds r0, 0x4C\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- beq _0801E702\n\
- b _0801EA14\n\
-_0801E702:\n\
- adds r0, r3, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x11\n\
- bne _0801E70E\n\
- b _0801EA14\n\
-_0801E70E:\n\
- b _0801EA04\n\
- .align 2, 0\n\
-_0801E710: .4byte gHitMarker\n\
-_0801E714:\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- add r0, r9\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- cmp r1, 0x29\n\
- bne _0801E758\n\
- cmp r4, 0x1\n\
- beq _0801E72E\n\
- cmp r5, 0x80\n\
- bne _0801E758\n\
-_0801E72E:\n\
- ldr r0, _0801E74C @ =gLastUsedAbility\n\
- strb r1, [r0]\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r1, 0x29\n\
- bl RecordAbilityBattle\n\
- ldr r4, _0801E750 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801E754 @ =BattleScript_BRNPrevention\n\
- b _0801E664\n\
- .align 2, 0\n\
-_0801E74C: .4byte gLastUsedAbility\n\
-_0801E750: .4byte gBattlescriptCurrInstr\n\
-_0801E754: .4byte BattleScript_BRNPrevention\n\
-_0801E758:\n\
- mov r0, r8\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- mov r2, r9\n\
- adds r1, r0, r2\n\
- adds r0, r1, 0\n\
- adds r0, 0x21\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xA\n\
- beq _0801E778\n\
- adds r0, r1, 0\n\
- adds r0, 0x22\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xA\n\
- bne _0801E7A8\n\
-_0801E778:\n\
- ldr r0, _0801E79C @ =gHitMarker\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E7A8\n\
- cmp r4, 0x1\n\
- beq _0801E78E\n\
- cmp r5, 0x80\n\
- bne _0801E7A8\n\
-_0801E78E:\n\
- ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention\n\
- b _0801E998\n\
- .align 2, 0\n\
-_0801E79C: .4byte gHitMarker\n\
-_0801E7A0: .4byte gBattlescriptCurrInstr\n\
-_0801E7A4: .4byte BattleScript_BRNPrevention\n\
-_0801E7A8:\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r1, 0x58\n\
- adds r2, r0, 0\n\
- muls r2, r1\n\
- mov r4, r9\n\
- adds r1, r2, r4\n\
- adds r0, r1, 0\n\
- adds r0, 0x21\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xA\n\
- bne _0801E7C2\n\
- b _0801EA14\n\
-_0801E7C2:\n\
- adds r0, r1, 0\n\
- adds r0, 0x22\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xA\n\
- bne _0801E7CE\n\
- b _0801EA14\n\
-_0801E7CE:\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x29\n\
- bne _0801E7DA\n\
- b _0801EA14\n\
-_0801E7DA:\n\
- mov r0, r9\n\
- adds r0, 0x4C\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- beq _0801E7E8\n\
- b _0801EA14\n\
-_0801E7E8:\n\
- b _0801EA04\n\
-_0801E7EA:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- bne _0801E826\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0801E826\n\
- ldr r0, _0801E87C @ =gBattleWeather\n\
- ldrh r1, [r0]\n\
- movs r0, 0x60\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E826\n\
- movs r1, 0\n\
- str r1, [sp, 0x4]\n\
-_0801E826:\n\
- ldr r4, _0801E880 @ =gBattleMons\n\
- ldr r0, _0801E884 @ =gEffectBattler\n\
- ldrb r3, [r0]\n\
- movs r0, 0x58\n\
- adds r2, r3, 0\n\
- muls r2, r0\n\
- adds r1, r2, r4\n\
- adds r0, r1, 0\n\
- adds r0, 0x21\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xF\n\
- bne _0801E840\n\
- b _0801EA14\n\
-_0801E840:\n\
- adds r0, r1, 0\n\
- adds r0, 0x22\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xF\n\
- bne _0801E84C\n\
- b _0801EA14\n\
-_0801E84C:\n\
- adds r0, r4, 0\n\
- adds r0, 0x4C\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- beq _0801E85A\n\
- b _0801EA14\n\
-_0801E85A:\n\
- ldr r2, [sp, 0x4]\n\
- cmp r2, 0\n\
- bne _0801E862\n\
- b _0801EA14\n\
-_0801E862:\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x28\n\
- bne _0801E86E\n\
- b _0801EA14\n\
-_0801E86E:\n\
- adds r0, r3, 0\n\
- bl CancelMultiTurnMoves\n\
- movs r3, 0x1\n\
- mov r10, r3\n\
- b _0801EA14\n\
- .align 2, 0\n\
-_0801E87C: .4byte gBattleWeather\n\
-_0801E880: .4byte gBattleMons\n\
-_0801E884: .4byte gEffectBattler\n\
-_0801E888:\n\
- mov r0, r8\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r1, r0\n\
- mov r2, r9\n\
- adds r0, r1, r2\n\
- adds r0, 0x20\n\
- ldrb r2, [r0]\n\
- cmp r2, 0x7\n\
- bne _0801E8D0\n\
- cmp r4, 0x1\n\
- beq _0801E8A6\n\
- cmp r5, 0x80\n\
- beq _0801E8A6\n\
- b _0801EA14\n\
-_0801E8A6:\n\
- ldr r0, _0801E8C4 @ =gLastUsedAbility\n\
- strb r2, [r0]\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r1, 0x7\n\
- bl RecordAbilityBattle\n\
- ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention\n\
- b _0801E664\n\
- .align 2, 0\n\
-_0801E8C4: .4byte gLastUsedAbility\n\
-_0801E8C8: .4byte gBattlescriptCurrInstr\n\
-_0801E8CC: .4byte BattleScript_PRLZPrevention\n\
-_0801E8D0:\n\
- mov r0, r9\n\
- adds r0, 0x4C\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- beq _0801E8DE\n\
- b _0801EA14\n\
-_0801E8DE:\n\
- movs r4, 0x1\n\
- mov r10, r4\n\
- b _0801EA14\n\
-_0801E8E4:\n\
- mov r0, r8\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- add r0, r9\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- cmp r1, 0x11\n\
- bne _0801E952\n\
- cmp r4, 0x1\n\
- beq _0801E8FE\n\
- cmp r5, 0x80\n\
- bne _0801E952\n\
-_0801E8FE:\n\
- ldr r0, _0801E938 @ =gLastUsedAbility\n\
- strb r1, [r0]\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- movs r1, 0x11\n\
- bl RecordAbilityBattle\n\
- ldr r4, _0801E93C @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801E940 @ =BattleScript_PSNPrevention\n\
- str r0, [r4]\n\
- ldr r2, _0801E944 @ =gHitMarker\n\
- ldr r1, [r2]\n\
- movs r0, 0x80\n\
- lsls r0, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E94C\n\
-_0801E928:\n\
- movs r0, 0x1\n\
- strb r0, [r7, 0x5]\n\
- ldr r0, _0801E948 @ =0xffffdfff\n\
- ands r1, r0\n\
- str r1, [r2]\n\
- bl _0801F5FA\n\
- .align 2, 0\n\
-_0801E938: .4byte gLastUsedAbility\n\
-_0801E93C: .4byte gBattlescriptCurrInstr\n\
-_0801E940: .4byte BattleScript_PSNPrevention\n\
-_0801E944: .4byte gHitMarker\n\
-_0801E948: .4byte 0xffffdfff\n\
-_0801E94C:\n\
- strb r0, [r7, 0x5]\n\
- bl _0801F5FA\n\
-_0801E952:\n\
- mov r2, r8\n\
- ldrb r0, [r2]\n\
- movs r1, 0x58\n\
- muls r0, r1\n\
- add r0, r9\n\
- adds r1, r0, 0\n\
- adds r1, 0x21\n\
- ldrb r1, [r1]\n\
- cmp r1, 0x3\n\
- beq _0801E976\n\
- adds r0, 0x22\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3\n\
- beq _0801E976\n\
- cmp r1, 0x8\n\
- beq _0801E976\n\
- cmp r0, 0x8\n\
- bne _0801E9B4\n\
-_0801E976:\n\
- ldr r0, _0801E9A4 @ =gHitMarker\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801E9B4\n\
- cmp r4, 0x1\n\
- beq _0801E98C\n\
- cmp r5, 0x80\n\
- bne _0801E9B4\n\
-_0801E98C:\n\
- ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801E9AC @ =BattleScript_PSNPrevention\n\
-_0801E998:\n\
- str r0, [r4]\n\
- ldr r1, _0801E9B0 @ =gBattleCommunication\n\
- movs r0, 0x2\n\
- strb r0, [r1, 0x5]\n\
- bl _0801F5FA\n\
- .align 2, 0\n\
-_0801E9A4: .4byte gHitMarker\n\
-_0801E9A8: .4byte gBattlescriptCurrInstr\n\
-_0801E9AC: .4byte BattleScript_PSNPrevention\n\
-_0801E9B0: .4byte gBattleCommunication\n\
-_0801E9B4:\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r6, 0x58\n\
- muls r0, r6\n\
- mov r2, r9\n\
- adds r2, 0x4C\n\
- adds r5, r0, r2\n\
- ldr r4, [r5]\n\
- cmp r4, 0\n\
- bne _0801EA14\n\
- mov r3, r9\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x21\n\
- ldrb r3, [r0]\n\
- cmp r3, 0x3\n\
- beq _0801EA0A\n\
- adds r0, 0x1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3\n\
- beq _0801EA0A\n\
- cmp r3, 0x8\n\
- beq _0801EA0A\n\
- cmp r0, 0x8\n\
- beq _0801EA0A\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x11\n\
- beq _0801EA14\n\
- mov r4, r8\n\
- ldrb r0, [r4]\n\
- adds r1, r0, 0\n\
- muls r1, r6\n\
- adds r1, r2\n\
- ldr r0, [r1]\n\
- movs r2, 0x9\n\
- negs r2, r2\n\
- ands r0, r2\n\
- str r0, [r1]\n\
-_0801EA04:\n\
- movs r0, 0x1\n\
- mov r10, r0\n\
- b _0801EA14\n\
-_0801EA0A:\n\
- ldr r0, _0801EA58 @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r2, 0x8\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
-_0801EA14:\n\
- mov r1, r10\n\
- cmp r1, 0x1\n\
- beq _0801EA1C\n\
- b _0801EB3C\n\
-_0801EA1C:\n\
- ldr r0, _0801EA5C @ =gBattlescriptCurrInstr\n\
- ldr r0, [r0]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r1, _0801EA60 @ =sStatusFlagsForMoveEffects\n\
- ldr r0, _0801EA64 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r3, [r0]\n\
- cmp r3, 0x7\n\
- bne _0801EA70\n\
- bl Random\n\
- ldr r2, _0801EA68 @ =gBattleMons\n\
- ldr r1, _0801EA6C @ =gEffectBattler\n\
- ldrb r3, [r1]\n\
- movs r1, 0x58\n\
- muls r3, r1\n\
- adds r2, 0x4C\n\
- adds r3, r2\n\
- movs r1, 0x3\n\
- ands r1, r0\n\
- adds r1, 0x2\n\
- ldr r0, [r3]\n\
- orrs r0, r1\n\
- str r0, [r3]\n\
- b _0801EA84\n\
- .align 2, 0\n\
-_0801EA58: .4byte gMoveResultFlags\n\
-_0801EA5C: .4byte gBattlescriptCurrInstr\n\
-_0801EA60: .4byte sStatusFlagsForMoveEffects\n\
-_0801EA64: .4byte gBattleCommunication\n\
-_0801EA68: .4byte gBattleMons\n\
-_0801EA6C: .4byte gEffectBattler\n\
-_0801EA70:\n\
- ldr r2, _0801EAD4 @ =gBattleMons\n\
- ldr r0, _0801EAD8 @ =gEffectBattler\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r1, r0\n\
- adds r2, 0x4C\n\
- adds r1, r2\n\
- ldr r0, [r1]\n\
- orrs r0, r3\n\
- str r0, [r1]\n\
-_0801EA84:\n\
- ldr r2, _0801EADC @ =gBattlescriptCurrInstr\n\
- ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs\n\
- ldr r5, _0801EAE4 @ =gBattleCommunication\n\
- ldrb r0, [r5, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- str r0, [r2]\n\
- ldr r4, _0801EAE8 @ =gActiveBattler\n\
- ldr r1, _0801EAD8 @ =gEffectBattler\n\
- ldrb r0, [r1]\n\
- strb r0, [r4]\n\
- ldrb r1, [r1]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- ldr r1, _0801EAEC @ =gBattleMons+0x4C @ gBattleMons.status1\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl BtlController_EmitSetMonData\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- ldr r2, _0801EAF0 @ =gHitMarker\n\
- ldr r1, [r2]\n\
- movs r0, 0x80\n\
- lsls r0, 6\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801EAF8\n\
- movs r0, 0x1\n\
- strb r0, [r5, 0x5]\n\
- ldr r0, _0801EAF4 @ =0xffffdfff\n\
- ands r1, r0\n\
- str r1, [r2]\n\
- b _0801EAFA\n\
- .align 2, 0\n\
-_0801EAD4: .4byte gBattleMons\n\
-_0801EAD8: .4byte gEffectBattler\n\
-_0801EADC: .4byte gBattlescriptCurrInstr\n\
-_0801EAE0: .4byte gMoveEffectBS_Ptrs\n\
-_0801EAE4: .4byte gBattleCommunication\n\
-_0801EAE8: .4byte gActiveBattler\n\
-_0801EAEC: .4byte gBattleMons+0x4C @ gBattleMons.status1\n\
-_0801EAF0: .4byte gHitMarker\n\
-_0801EAF4: .4byte 0xffffdfff\n\
-_0801EAF8:\n\
- strb r0, [r5, 0x5]\n\
-_0801EAFA:\n\
- ldr r0, _0801EB2C @ =gBattleCommunication\n\
- ldrb r2, [r0, 0x3]\n\
- adds r7, r0, 0\n\
- cmp r2, 0x2\n\
- beq _0801EB14\n\
- cmp r2, 0x6\n\
- beq _0801EB14\n\
- cmp r2, 0x5\n\
- beq _0801EB14\n\
- cmp r2, 0x3\n\
- beq _0801EB14\n\
- bl _0801F5FA\n\
-_0801EB14:\n\
- ldr r0, _0801EB30 @ =gSharedMem\n\
- ldrb r1, [r7, 0x3]\n\
- ldr r2, _0801EB34 @ =0x000160ca\n\
- adds r0, r2\n\
- strb r1, [r0]\n\
- ldr r2, _0801EB38 @ =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 7\n\
- bl _0801F4F2\n\
- .align 2, 0\n\
-_0801EB2C: .4byte gBattleCommunication\n\
-_0801EB30: .4byte gSharedMem\n\
-_0801EB34: .4byte 0x000160ca\n\
-_0801EB38: .4byte gHitMarker\n\
-_0801EB3C:\n\
- mov r3, r10\n\
- cmp r3, 0\n\
- beq _0801EB46\n\
- bl _0801F5FA\n\
-_0801EB46:\n\
- bl _0801F5DC\n\
-_0801EB4A:\n\
- mov r0, r8\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r1, r0\n\
- mov r0, r9\n\
- adds r0, 0x50\n\
- adds r1, r0\n\
- ldr r2, _0801EB84 @ =sStatusFlagsForMoveEffects\n\
- ldrb r3, [r7, 0x3]\n\
- lsls r0, r3, 2\n\
- adds r0, r2\n\
- ldr r1, [r1]\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0801EB6E\n\
- bl _0801F5DC\n\
-_0801EB6E:\n\
- subs r0, r3, 0x7\n\
- cmp r0, 0x34\n\
- bls _0801EB78\n\
- bl _0801F5FA\n\
-_0801EB78:\n\
- lsls r0, 2\n\
- ldr r1, _0801EB88 @ =_0801EB8C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_0801EB84: .4byte sStatusFlagsForMoveEffects\n\
-_0801EB88: .4byte _0801EB8C\n\
- .align 2, 0\n\
-_0801EB8C:\n\
- .4byte _0801EC60\n\
- .4byte _0801ECD4\n\
- .4byte _0801EE4C\n\
- .4byte _0801ED60\n\
- .4byte _0801EDDC\n\
- .4byte _0801EE84\n\
- .4byte _0801EECC\n\
- .4byte _0801EFA8\n\
- .4byte _0801EFEC\n\
- .4byte _0801EFEC\n\
- .4byte _0801EFEC\n\
- .4byte _0801EFEC\n\
- .4byte _0801EFEC\n\
- .4byte _0801EFEC\n\
- .4byte _0801EFEC\n\
- .4byte _0801F040\n\
- .4byte _0801F040\n\
- .4byte _0801F040\n\
- .4byte _0801F040\n\
- .4byte _0801F040\n\
- .4byte _0801F040\n\
- .4byte _0801F040\n\
- .4byte _0801F13C\n\
- .4byte _0801F184\n\
- .4byte _0801F1A4\n\
- .4byte _0801F364\n\
- .4byte _0801F3A0\n\
- .4byte _0801F3BC\n\
- .4byte _0801F3D4\n\
- .4byte _0801F3EC\n\
- .4byte _0801F44C\n\
- .4byte _0801F464\n\
- .4byte _0801F094\n\
- .4byte _0801F094\n\
- .4byte _0801F094\n\
- .4byte _0801F094\n\
- .4byte _0801F094\n\
- .4byte _0801F094\n\
- .4byte _0801F094\n\
- .4byte _0801F0E8\n\
- .4byte _0801F0E8\n\
- .4byte _0801F0E8\n\
- .4byte _0801F0E8\n\
- .4byte _0801F0E8\n\
- .4byte _0801F0E8\n\
- .4byte _0801F0E8\n\
- .4byte _0801F4A8\n\
- .4byte _0801F500\n\
- .4byte _0801F5FA\n\
- .4byte _0801F5FA\n\
- .4byte _0801F5FA\n\
- .4byte _0801F5FA\n\
- .4byte _0801F5EC\n\
-_0801EC60:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- movs r5, 0x58\n\
- adds r1, r0, 0\n\
- muls r1, r5\n\
- mov r2, r9\n\
- adds r0, r1, r2\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x14\n\
- bne _0801EC7A\n\
- bl _0801F5DC\n\
-_0801EC7A:\n\
- mov r4, r9\n\
- adds r4, 0x50\n\
- adds r0, r1, r4\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801EC8E\n\
- bl _0801F5DC\n\
-_0801EC8E:\n\
- bl Random\n\
- mov r3, r8\n\
- ldrb r1, [r3]\n\
- adds r2, r1, 0\n\
- muls r2, r5\n\
- adds r2, r4\n\
- lsls r0, 16\n\
- movs r1, 0xC0\n\
- lsls r1, 10\n\
- ands r1, r0\n\
- lsrs r1, 16\n\
- adds r1, 0x2\n\
- ldr r0, [r2]\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs\n\
- ldr r0, _0801ECD0 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- bl _0801F5F8\n\
- .align 2, 0\n\
-_0801ECC8: .4byte gBattlescriptCurrInstr\n\
-_0801ECCC: .4byte gMoveEffectBS_Ptrs\n\
-_0801ECD0: .4byte gBattleCommunication\n\
-_0801ECD4:\n\
- mov r0, r8\n\
- ldrb r2, [r0]\n\
- movs r6, 0x58\n\
- adds r0, r2, 0\n\
- muls r0, r6\n\
- add r0, r9\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- cmp r1, 0x27\n\
- bne _0801ED18\n\
- cmp r4, 0x1\n\
- beq _0801ECF4\n\
- cmp r5, 0x80\n\
- beq _0801ECF4\n\
- bl _0801F5DC\n\
-_0801ECF4:\n\
- ldr r0, _0801ED0C @ =gLastUsedAbility\n\
- strb r1, [r0]\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- movs r1, 0x27\n\
- bl RecordAbilityBattle\n\
- ldr r1, _0801ED10 @ =gBattlescriptCurrInstr\n\
- ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention\n\
- str r0, [r1]\n\
- bl _0801F5FA\n\
- .align 2, 0\n\
-_0801ED0C: .4byte gLastUsedAbility\n\
-_0801ED10: .4byte gBattlescriptCurrInstr\n\
-_0801ED14: .4byte BattleScript_FlinchPrevention\n\
-_0801ED18:\n\
- adds r0, r2, 0\n\
- bl GetBattlerTurnOrderNum\n\
- ldr r1, _0801ED54 @ =gCurrentTurnActionNumber\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bhi _0801ED2E\n\
- bl _0801F5DC\n\
-_0801ED2E:\n\
- mov r2, r8\n\
- ldrb r0, [r2]\n\
- adds r2, r0, 0\n\
- muls r2, r6\n\
- mov r0, r9\n\
- adds r0, 0x50\n\
- adds r2, r0\n\
- ldr r1, _0801ED58 @ =sStatusFlagsForMoveEffects\n\
- ldr r0, _0801ED5C @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r1, [r2]\n\
- ldr r0, [r0]\n\
- orrs r1, r0\n\
- str r1, [r2]\n\
- bl _0801F5DC\n\
- .align 2, 0\n\
-_0801ED54: .4byte gCurrentTurnActionNumber\n\
-_0801ED58: .4byte sStatusFlagsForMoveEffects\n\
-_0801ED5C: .4byte gBattleCommunication\n\
-_0801ED60:\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r5, 0x58\n\
- muls r0, r5\n\
- mov r4, r9\n\
- adds r4, 0x50\n\
- adds r2, r0, r4\n\
- ldr r1, [r2]\n\
- movs r0, 0x70\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801ED7C\n\
- bl _0801F5DC\n\
-_0801ED7C:\n\
- movs r0, 0x80\n\
- lsls r0, 5\n\
- orrs r1, r0\n\
- str r1, [r2]\n\
- ldr r1, _0801EDC8 @ =gLockedMoves\n\
- ldrb r0, [r3]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldr r1, _0801EDCC @ =gCurrentMove\n\
- ldrh r1, [r1]\n\
- strh r1, [r0]\n\
- bl Random\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- adds r2, r1, 0\n\
- muls r2, r5\n\
- adds r2, r4\n\
- movs r1, 0x3\n\
- ands r1, r0\n\
- adds r1, 0x2\n\
- lsls r1, 4\n\
- ldr r0, [r2]\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs\n\
- ldr r0, _0801EDD8 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- bl _0801F5F8\n\
- .align 2, 0\n\
-_0801EDC8: .4byte gLockedMoves\n\
-_0801EDCC: .4byte gCurrentMove\n\
-_0801EDD0: .4byte gBattlescriptCurrInstr\n\
-_0801EDD4: .4byte gMoveEffectBS_Ptrs\n\
-_0801EDD8: .4byte gBattleCommunication\n\
-_0801EDDC:\n\
- ldr r5, _0801EE30 @ =gBattlerAttacker\n\
- ldrb r0, [r5]\n\
- bl GetBattlerPosition\n\
- movs r1, 0x1\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0801EE14\n\
- ldr r4, _0801EE34 @ =gPaydayMoney\n\
- ldrh r3, [r4]\n\
- ldr r2, _0801EE38 @ =gBattleMons\n\
- ldrb r1, [r5]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r2\n\
- adds r0, 0x2A\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- adds r0, r3, r0\n\
- strh r0, [r4]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r3, r0\n\
- bls _0801EE14\n\
- ldr r3, _0801EE3C @ =0x0000ffff\n\
- adds r0, r3, 0\n\
- strh r0, [r4]\n\
-_0801EE14:\n\
- ldr r4, _0801EE40 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs\n\
- ldr r0, _0801EE48 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- bl _0801F5F8\n\
- .align 2, 0\n\
-_0801EE30: .4byte gBattlerAttacker\n\
-_0801EE34: .4byte gPaydayMoney\n\
-_0801EE38: .4byte gBattleMons\n\
-_0801EE3C: .4byte 0x0000ffff\n\
-_0801EE40: .4byte gBattlescriptCurrInstr\n\
-_0801EE44: .4byte gMoveEffectBS_Ptrs\n\
-_0801EE48: .4byte gBattleCommunication\n\
-_0801EE4C:\n\
- mov r4, r8\n\
- ldrb r1, [r4]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- mov r1, r9\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- beq _0801EE62\n\
- b _0801F5DC\n\
-_0801EE62:\n\
- bl Random\n\
- ldr r4, _0801EE80 @ =gBattleCommunication\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- adds r0, 0x3\n\
- strb r0, [r4, 0x3]\n\
- movs r0, 0\n\
- movs r1, 0\n\
- bl SetMoveEffect\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801EE80: .4byte gBattleCommunication\n\
-_0801EE84:\n\
- mov r0, r8\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- adds r2, r1, 0\n\
- muls r2, r0\n\
- mov r0, r9\n\
- adds r0, 0x50\n\
- adds r2, r0\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 5\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- ldr r1, _0801EEC0 @ =gLockedMoves\n\
- mov r2, r8\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldr r1, _0801EEC4 @ =gCurrentMove\n\
- ldrh r1, [r1]\n\
- strh r1, [r0]\n\
- ldr r0, _0801EEC8 @ =gProtectStructs\n\
- ldrb r1, [r2]\n\
- lsls r1, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- movs r2, 0x4\n\
- orrs r0, r2\n\
- strb r0, [r1, 0x1]\n\
- b _0801F5DC\n\
- .align 2, 0\n\
-_0801EEC0: .4byte gLockedMoves\n\
-_0801EEC4: .4byte gCurrentMove\n\
-_0801EEC8: .4byte gProtectStructs\n\
-_0801EECC:\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r6, 0x58\n\
- muls r0, r6\n\
- mov r4, r9\n\
- adds r4, 0x50\n\
- adds r0, r4\n\
- ldr r5, [r0]\n\
- movs r0, 0xE0\n\
- lsls r0, 8\n\
- ands r5, r0\n\
- cmp r5, 0\n\
- beq _0801EEE8\n\
- b _0801F5DC\n\
-_0801EEE8:\n\
- bl Random\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- adds r2, r1, 0\n\
- muls r2, r6\n\
- adds r2, r4\n\
- movs r1, 0x3\n\
- ands r1, r0\n\
- adds r1, 0x3\n\
- lsls r1, 13\n\
- ldr r0, [r2]\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- ldr r2, _0801EF80 @ =gSharedMem\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- lsls r0, 1\n\
- ldr r4, _0801EF84 @ =0x00016004\n\
- adds r0, r4\n\
- adds r0, r2\n\
- ldr r6, _0801EF88 @ =gCurrentMove\n\
- ldrh r1, [r6]\n\
- strb r1, [r0]\n\
- ldrb r0, [r3]\n\
- lsls r0, 1\n\
- ldr r1, _0801EF8C @ =0x00016005\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldrh r1, [r6]\n\
- lsrs r1, 8\n\
- strb r1, [r0]\n\
- ldrb r0, [r3]\n\
- ldr r3, _0801EF90 @ =0x00016020\n\
- adds r0, r3\n\
- adds r0, r2\n\
- ldr r1, _0801EF94 @ =gBattlerAttacker\n\
- ldrb r1, [r1]\n\
- strb r1, [r0]\n\
- ldr r4, _0801EF98 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs\n\
- ldr r2, _0801EFA0 @ =gBattleCommunication\n\
- ldrb r0, [r2, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- str r0, [r4]\n\
- strb r5, [r2, 0x5]\n\
- ldr r1, _0801EFA4 @ =gTrappingMoves\n\
- ldrh r0, [r1]\n\
- ldrh r4, [r6]\n\
- cmp r0, r4\n\
- bne _0801EF5C\n\
- b _0801F5FA\n\
-_0801EF5C:\n\
- adds r3, r1, 0\n\
- adds r1, r6, 0\n\
-_0801EF60:\n\
- ldrb r0, [r2, 0x5]\n\
- adds r0, 0x1\n\
- strb r0, [r2, 0x5]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x4\n\
- bls _0801EF70\n\
- b _0801F5FA\n\
-_0801EF70:\n\
- ldrb r0, [r2, 0x5]\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- ldrh r4, [r1]\n\
- cmp r0, r4\n\
- bne _0801EF60\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801EF80: .4byte gSharedMem\n\
-_0801EF84: .4byte 0x00016004\n\
-_0801EF88: .4byte gCurrentMove\n\
-_0801EF8C: .4byte 0x00016005\n\
-_0801EF90: .4byte 0x00016020\n\
-_0801EF94: .4byte gBattlerAttacker\n\
-_0801EF98: .4byte gBattlescriptCurrInstr\n\
-_0801EF9C: .4byte gMoveEffectBS_Ptrs\n\
-_0801EFA0: .4byte gBattleCommunication\n\
-_0801EFA4: .4byte gTrappingMoves\n\
-_0801EFA8:\n\
- ldr r1, _0801EFD8 @ =gBattleMoveDamage\n\
- ldr r0, _0801EFDC @ =gHpDealt\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bge _0801EFB4\n\
- adds r0, 0x3\n\
-_0801EFB4:\n\
- asrs r0, 2\n\
- str r0, [r1]\n\
- cmp r0, 0\n\
- bne _0801EFC0\n\
- movs r0, 0x1\n\
- str r0, [r1]\n\
-_0801EFC0:\n\
- ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs\n\
- ldr r0, _0801EFE8 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801EFD8: .4byte gBattleMoveDamage\n\
-_0801EFDC: .4byte gHpDealt\n\
-_0801EFE0: .4byte gBattlescriptCurrInstr\n\
-_0801EFE4: .4byte gMoveEffectBS_Ptrs\n\
-_0801EFE8: .4byte gBattleCommunication\n\
-_0801EFEC:\n\
- ldrb r1, [r7, 0x3]\n\
- adds r1, 0xF2\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- movs r0, 0x10\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl ChangeStatBuffs\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, 0\n\
- beq _0801F008\n\
- b _0801F5DC\n\
-_0801F008:\n\
- ldr r2, _0801F02C @ =gSharedMem\n\
- ldrb r1, [r7, 0x3]\n\
- movs r0, 0x3F\n\
- ands r0, r1\n\
- ldr r4, _0801F030 @ =0x000160a4\n\
- adds r1, r2, r4\n\
- strb r0, [r1]\n\
- ldr r0, _0801F034 @ =0x000160a5\n\
- adds r2, r0\n\
- strb r3, [r2]\n\
- ldr r4, _0801F038 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F03C @ =BattleScript_StatUp\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F02C: .4byte gSharedMem\n\
-_0801F030: .4byte 0x000160a4\n\
-_0801F034: .4byte 0x000160a5\n\
-_0801F038: .4byte gBattlescriptCurrInstr\n\
-_0801F03C: .4byte BattleScript_StatUp\n\
-_0801F040:\n\
- movs r0, 0x70\n\
- negs r0, r0\n\
- ldrb r1, [r7, 0x3]\n\
- adds r1, 0xEB\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl ChangeStatBuffs\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, 0\n\
- beq _0801F05E\n\
- b _0801F5DC\n\
-_0801F05E:\n\
- ldr r2, _0801F080 @ =gSharedMem\n\
- ldrb r1, [r7, 0x3]\n\
- movs r0, 0x3F\n\
- ands r0, r1\n\
- ldr r4, _0801F084 @ =0x000160a4\n\
- adds r1, r2, r4\n\
- strb r0, [r1]\n\
- ldr r0, _0801F088 @ =0x000160a5\n\
- adds r2, r0\n\
- strb r3, [r2]\n\
- ldr r4, _0801F08C @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F090 @ =BattleScript_StatDown\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F080: .4byte gSharedMem\n\
-_0801F084: .4byte 0x000160a4\n\
-_0801F088: .4byte 0x000160a5\n\
-_0801F08C: .4byte gBattlescriptCurrInstr\n\
-_0801F090: .4byte BattleScript_StatDown\n\
-_0801F094:\n\
- ldrb r1, [r7, 0x3]\n\
- adds r1, 0xDA\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- movs r0, 0x20\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl ChangeStatBuffs\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, 0\n\
- beq _0801F0B0\n\
- b _0801F5DC\n\
-_0801F0B0:\n\
- ldr r2, _0801F0D4 @ =gSharedMem\n\
- ldrb r1, [r7, 0x3]\n\
- movs r0, 0x3F\n\
- ands r0, r1\n\
- ldr r4, _0801F0D8 @ =0x000160a4\n\
- adds r1, r2, r4\n\
- strb r0, [r1]\n\
- ldr r0, _0801F0DC @ =0x000160a5\n\
- adds r2, r0\n\
- strb r3, [r2]\n\
- ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F0E4 @ =BattleScript_StatUp\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F0D4: .4byte gSharedMem\n\
-_0801F0D8: .4byte 0x000160a4\n\
-_0801F0DC: .4byte 0x000160a5\n\
-_0801F0E0: .4byte gBattlescriptCurrInstr\n\
-_0801F0E4: .4byte BattleScript_StatUp\n\
-_0801F0E8:\n\
- movs r0, 0x60\n\
- negs r0, r0\n\
- ldrb r1, [r7, 0x3]\n\
- adds r1, 0xD3\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl ChangeStatBuffs\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- cmp r3, 0\n\
- beq _0801F106\n\
- b _0801F5DC\n\
-_0801F106:\n\
- ldr r2, _0801F128 @ =gSharedMem\n\
- ldrb r1, [r7, 0x3]\n\
- movs r0, 0x3F\n\
- ands r0, r1\n\
- ldr r4, _0801F12C @ =0x000160a4\n\
- adds r1, r2, r4\n\
- strb r0, [r1]\n\
- ldr r0, _0801F130 @ =0x000160a5\n\
- adds r2, r0\n\
- strb r3, [r2]\n\
- ldr r4, _0801F134 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F138 @ =BattleScript_StatDown\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F128: .4byte gSharedMem\n\
-_0801F12C: .4byte 0x000160a4\n\
-_0801F130: .4byte 0x000160a5\n\
-_0801F134: .4byte gBattlescriptCurrInstr\n\
-_0801F138: .4byte BattleScript_StatDown\n\
-_0801F13C:\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- movs r0, 0x58\n\
- adds r2, r1, 0\n\
- muls r2, r0\n\
- mov r0, r9\n\
- adds r0, 0x50\n\
- adds r2, r0\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 15\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- ldr r2, _0801F178 @ =gDisableStructs\n\
- mov r3, r8\n\
- ldrb r1, [r3]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- movs r1, 0x2\n\
- strb r1, [r0, 0x19]\n\
- ldr r1, _0801F17C @ =gLockedMoves\n\
- ldrb r0, [r3]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldr r1, _0801F180 @ =gCurrentMove\n\
- ldrh r1, [r1]\n\
- strh r1, [r0]\n\
- b _0801F5DC\n\
- .align 2, 0\n\
-_0801F178: .4byte gDisableStructs\n\
-_0801F17C: .4byte gLockedMoves\n\
-_0801F180: .4byte gCurrentMove\n\
-_0801F184:\n\
- ldr r0, _0801F1A0 @ =gBattlerAttacker\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- adds r2, r1, 0\n\
- muls r2, r0\n\
- mov r0, r9\n\
- adds r0, 0x50\n\
- adds r2, r0\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 16\n\
-_0801F19A:\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- b _0801F5DC\n\
- .align 2, 0\n\
-_0801F1A0: .4byte gBattlerAttacker\n\
-_0801F1A4:\n\
- ldr r4, _0801F254 @ =gBattlerAttacker\n\
- ldrb r0, [r4]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldrb r0, [r4]\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bne _0801F1D8\n\
- ldr r0, _0801F258 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0801F25C @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801F214\n\
- ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0801F1D8\n\
- b _0801F5DC\n\
-_0801F1D8:\n\
- ldr r0, _0801F258 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0801F25C @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801F214\n\
- ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0801F214\n\
- ldr r0, _0801F264 @ =gWishFutureKnock\n\
- adds r0, 0x29\n\
- adds r0, r6, r0\n\
- ldrb r1, [r0]\n\
- ldr r3, _0801F268 @ =gBitTable\n\
- ldr r2, _0801F26C @ =gBattlerPartyIndexes\n\
- ldr r0, _0801F254 @ =gBattlerAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0801F214\n\
- b _0801F5DC\n\
-_0801F214:\n\
- ldr r2, _0801F270 @ =gBattleMons\n\
- ldr r1, _0801F274 @ =gBattlerTarget\n\
- ldrb r0, [r1]\n\
- movs r3, 0x58\n\
- muls r0, r3\n\
- adds r4, r0, r2\n\
- ldrh r0, [r4, 0x2E]\n\
- adds r7, r1, 0\n\
- mov r9, r2\n\
- cmp r0, 0\n\
- beq _0801F284\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3C\n\
- bne _0801F284\n\
- ldr r1, _0801F278 @ =gBattlescriptCurrInstr\n\
- ldr r0, _0801F27C @ =BattleScript_NoItemSteal\n\
- str r0, [r1]\n\
- ldr r1, _0801F280 @ =gLastUsedAbility\n\
- ldrb r0, [r7]\n\
- muls r0, r3\n\
- add r0, r9\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- ldrb r0, [r7]\n\
- ldrb r1, [r1]\n\
- bl RecordAbilityBattle\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801F254: .4byte gBattlerAttacker\n\
-_0801F258: .4byte gBattleTypeFlags\n\
-_0801F25C: .4byte 0x00000902\n\
-_0801F260: .4byte gTrainerBattleOpponent\n\
-_0801F264: .4byte gWishFutureKnock\n\
-_0801F268: .4byte gBitTable\n\
-_0801F26C: .4byte gBattlerPartyIndexes\n\
-_0801F270: .4byte gBattleMons\n\
-_0801F274: .4byte gBattlerTarget\n\
-_0801F278: .4byte gBattlescriptCurrInstr\n\
-_0801F27C: .4byte BattleScript_NoItemSteal\n\
-_0801F280: .4byte gLastUsedAbility\n\
-_0801F284:\n\
- ldr r4, _0801F340 @ =gBattlerAttacker\n\
- mov r10, r4\n\
- ldrb r1, [r4]\n\
- movs r0, 0x58\n\
- mov r8, r0\n\
- mov r0, r8\n\
- muls r0, r1\n\
- add r0, r9\n\
- ldrh r3, [r0, 0x2E]\n\
- cmp r3, 0\n\
- beq _0801F29C\n\
- b _0801F5DC\n\
-_0801F29C:\n\
- ldrb r0, [r7]\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- add r0, r9\n\
- ldrh r2, [r0, 0x2E]\n\
- adds r0, r2, 0\n\
- cmp r0, 0xAF\n\
- bne _0801F2B0\n\
- b _0801F5DC\n\
-_0801F2B0:\n\
- cmp r0, 0\n\
- bne _0801F2B6\n\
- b _0801F5DC\n\
-_0801F2B6:\n\
- lsls r0, r1, 1\n\
- ldr r5, _0801F344 @ =gSharedMem + 0x160F0\n\
- adds r0, r5\n\
- ldr r1, _0801F348 @ =gLastUsedItem\n\
- strh r2, [r0]\n\
- strh r2, [r1]\n\
- ldrb r0, [r7]\n\
- mov r4, r8\n\
- muls r4, r0\n\
- adds r0, r4, 0\n\
- add r0, r9\n\
- movs r6, 0\n\
- strh r3, [r0, 0x2E]\n\
- ldr r4, _0801F34C @ =gActiveBattler\n\
- mov r2, r10\n\
- ldrb r0, [r2]\n\
- strb r0, [r4]\n\
- str r1, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- movs r2, 0\n\
- movs r3, 0x2\n\
- bl BtlController_EmitSetMonData\n\
- mov r3, r10\n\
- ldrb r0, [r3]\n\
- bl MarkBattlerForControllerExec\n\
- ldrb r0, [r7]\n\
- strb r0, [r4]\n\
- ldrb r0, [r7]\n\
- mov r4, r8\n\
- muls r4, r0\n\
- adds r0, r4, 0\n\
- mov r1, r9\n\
- adds r1, 0x2E\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- movs r2, 0\n\
- movs r3, 0x2\n\
- bl BtlController_EmitSetMonData\n\
- ldrb r0, [r7]\n\
- bl MarkBattlerForControllerExec\n\
- ldr r4, _0801F350 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F354 @ =BattleScript_ItemSteal\n\
- str r0, [r4]\n\
- ldr r0, _0801F358 @ =0xfffe9f10\n\
- adds r5, r0\n\
- ldrb r0, [r7]\n\
- lsls r0, 1\n\
- ldr r1, _0801F35C @ =0x000160e8\n\
- adds r0, r1\n\
- adds r0, r5\n\
- strb r6, [r0]\n\
- ldrb r0, [r7]\n\
- lsls r0, 1\n\
- ldr r2, _0801F360 @ =0x000160e9\n\
- adds r0, r2\n\
- adds r0, r5\n\
- strb r6, [r0]\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801F340: .4byte gBattlerAttacker\n\
-_0801F344: .4byte gSharedMem + 0x160F0\n\
-_0801F348: .4byte gLastUsedItem\n\
-_0801F34C: .4byte gActiveBattler\n\
-_0801F350: .4byte gBattlescriptCurrInstr\n\
-_0801F354: .4byte BattleScript_ItemSteal\n\
-_0801F358: .4byte 0xfffe9f10\n\
-_0801F35C: .4byte 0x000160e8\n\
-_0801F360: .4byte 0x000160e9\n\
-_0801F364:\n\
- ldr r3, _0801F394 @ =gBattlerTarget\n\
- ldrb r1, [r3]\n\
- movs r0, 0x58\n\
- adds r2, r1, 0\n\
- muls r2, r0\n\
- mov r0, r9\n\
- adds r0, 0x50\n\
- adds r2, r0\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 19\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- ldr r2, _0801F398 @ =gDisableStructs\n\
- ldrb r1, [r3]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldr r1, _0801F39C @ =gBattlerAttacker\n\
- ldrb r1, [r1]\n\
- strb r1, [r0, 0x14]\n\
- b _0801F5DC\n\
- .align 2, 0\n\
-_0801F394: .4byte gBattlerTarget\n\
-_0801F398: .4byte gDisableStructs\n\
-_0801F39C: .4byte gBattlerAttacker\n\
-_0801F3A0:\n\
- ldr r0, _0801F3B8 @ =gBattlerTarget\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- adds r2, r1, 0\n\
- muls r2, r0\n\
- mov r0, r9\n\
- adds r0, 0x50\n\
- adds r2, r0\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 20\n\
- b _0801F19A\n\
- .align 2, 0\n\
-_0801F3B8: .4byte gBattlerTarget\n\
-_0801F3BC:\n\
- ldr r4, _0801F3CC @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F3D0 @ =BattleScript_AllStatsUp\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F3CC: .4byte gBattlescriptCurrInstr\n\
-_0801F3D0: .4byte BattleScript_AllStatsUp\n\
-_0801F3D4:\n\
- ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F3E4: .4byte gBattlescriptCurrInstr\n\
-_0801F3E8: .4byte BattleScript_RapidSpinAway\n\
-_0801F3EC:\n\
- ldr r6, _0801F43C @ =gBattlerTarget\n\
- ldrb r0, [r6]\n\
- movs r2, 0x58\n\
- muls r0, r2\n\
- mov r1, r9\n\
- adds r1, 0x4C\n\
- adds r5, r0, r1\n\
- ldr r4, [r5]\n\
- movs r0, 0x40\n\
- ands r0, r4\n\
- cmp r0, 0\n\
- bne _0801F406\n\
- b _0801F5DC\n\
-_0801F406:\n\
- movs r0, 0x41\n\
- negs r0, r0\n\
- ands r4, r0\n\
- str r4, [r5]\n\
- ldr r4, _0801F440 @ =gActiveBattler\n\
- ldrb r0, [r6]\n\
- strb r0, [r4]\n\
- ldrb r0, [r4]\n\
- muls r0, r2\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl BtlController_EmitSetMonData\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- ldr r4, _0801F444 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F43C: .4byte gBattlerTarget\n\
-_0801F440: .4byte gActiveBattler\n\
-_0801F444: .4byte gBattlescriptCurrInstr\n\
-_0801F448: .4byte BattleScript_TargetPRLZHeal\n\
-_0801F44C:\n\
- ldr r4, _0801F45C @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F460 @ =BattleScript_AtkDefDown\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F45C: .4byte gBattlescriptCurrInstr\n\
-_0801F460: .4byte BattleScript_AtkDefDown\n\
-_0801F464:\n\
- ldr r4, _0801F494 @ =gBattleMoveDamage\n\
- ldr r0, _0801F498 @ =gHpDealt\n\
- ldr r0, [r0]\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- str r0, [r4]\n\
- cmp r0, 0\n\
- bne _0801F47A\n\
- movs r0, 0x1\n\
- str r0, [r4]\n\
-_0801F47A:\n\
- ldr r4, _0801F49C @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs\n\
- ldr r0, _0801F4A4 @ =gBattleCommunication\n\
- ldrb r0, [r0, 0x3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- b _0801F5F8\n\
- .align 2, 0\n\
-_0801F494: .4byte gBattleMoveDamage\n\
-_0801F498: .4byte gHpDealt\n\
-_0801F49C: .4byte gBattlescriptCurrInstr\n\
-_0801F4A0: .4byte gMoveEffectBS_Ptrs\n\
-_0801F4A4: .4byte gBattleCommunication\n\
-_0801F4A8:\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- movs r5, 0x58\n\
- muls r0, r5\n\
- mov r4, r9\n\
- adds r4, 0x50\n\
- adds r2, r0, r4\n\
- ldr r1, [r2]\n\
- movs r0, 0xC0\n\
- lsls r0, 4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801F4C4\n\
- b _0801F5DC\n\
-_0801F4C4:\n\
- movs r0, 0x80\n\
- lsls r0, 5\n\
- orrs r1, r0\n\
- str r1, [r2]\n\
- ldr r1, _0801F4F8 @ =gLockedMoves\n\
- ldrb r0, [r3]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldr r1, _0801F4FC @ =gCurrentMove\n\
- ldrh r1, [r1]\n\
- strh r1, [r0]\n\
- bl Random\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- adds r2, r1, 0\n\
- muls r2, r5\n\
- adds r2, r4\n\
- movs r1, 0x1\n\
- ands r1, r0\n\
- adds r1, 0x2\n\
- lsls r1, 10\n\
- ldr r0, [r2]\n\
-_0801F4F2:\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801F4F8: .4byte gLockedMoves\n\
-_0801F4FC: .4byte gCurrentMove\n\
-_0801F500:\n\
- mov r5, r8\n\
- ldrb r3, [r5]\n\
- movs r4, 0x58\n\
- adds r0, r3, 0\n\
- muls r0, r4\n\
- mov r2, r9\n\
- adds r1, r0, r2\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r2, [r0]\n\
- cmp r2, 0x3C\n\
- bne _0801F540\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0\n\
- beq _0801F5DC\n\
- ldr r0, _0801F534 @ =gLastUsedAbility\n\
- strb r2, [r0]\n\
- ldr r1, _0801F538 @ =gBattlescriptCurrInstr\n\
- ldr r0, _0801F53C @ =BattleScript_NoItemSteal\n\
- str r0, [r1]\n\
- ldrb r0, [r5]\n\
- movs r1, 0x3C\n\
- bl RecordAbilityBattle\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801F534: .4byte gLastUsedAbility\n\
-_0801F538: .4byte gBattlescriptCurrInstr\n\
-_0801F53C: .4byte BattleScript_NoItemSteal\n\
-_0801F540:\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0\n\
- beq _0801F5DC\n\
- adds r0, r3, 0\n\
- bl GetBattlerSide\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r1, _0801F5B8 @ =gLastUsedItem\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- muls r0, r4\n\
- add r0, r9\n\
- ldrh r0, [r0, 0x2E]\n\
- strh r0, [r1]\n\
- ldrb r0, [r3]\n\
- muls r0, r4\n\
- add r0, r9\n\
- movs r5, 0\n\
- movs r1, 0\n\
- strh r1, [r0, 0x2E]\n\
- ldr r2, _0801F5BC @ =gWishFutureKnock\n\
- adds r2, 0x29\n\
- adds r2, r6, r2\n\
- ldr r3, _0801F5C0 @ =gBitTable\n\
- ldr r1, _0801F5C4 @ =gBattlerPartyIndexes\n\
- mov r4, r8\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldr r0, [r0]\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F5CC @ =BattleScript_KnockedOff\n\
- str r0, [r4]\n\
- ldr r1, _0801F5D0 @ =gSharedMem\n\
- mov r2, r8\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- ldr r3, _0801F5D4 @ =0x000160e8\n\
- adds r0, r3\n\
- adds r0, r1\n\
- strb r5, [r0]\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- ldr r4, _0801F5D8 @ =0x000160e9\n\
- adds r0, r4\n\
- adds r0, r1\n\
- strb r5, [r0]\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801F5B8: .4byte gLastUsedItem\n\
-_0801F5BC: .4byte gWishFutureKnock\n\
-_0801F5C0: .4byte gBitTable\n\
-_0801F5C4: .4byte gBattlerPartyIndexes\n\
-_0801F5C8: .4byte gBattlescriptCurrInstr\n\
-_0801F5CC: .4byte BattleScript_KnockedOff\n\
-_0801F5D0: .4byte gSharedMem\n\
-_0801F5D4: .4byte 0x000160e8\n\
-_0801F5D8: .4byte 0x000160e9\n\
-_0801F5DC:\n\
- ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r1]\n\
- adds r0, 0x1\n\
- str r0, [r1]\n\
- b _0801F5FA\n\
- .align 2, 0\n\
-_0801F5E8: .4byte gBattlescriptCurrInstr\n\
-_0801F5EC:\n\
- ldr r4, _0801F60C @ =gBattlescriptCurrInstr\n\
- ldr r0, [r4]\n\
- adds r0, 0x1\n\
- bl BattleScriptPush\n\
- ldr r0, _0801F610 @ =BattleScript_SAtkDown2\n\
-_0801F5F8:\n\
- str r0, [r4]\n\
-_0801F5FA:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0801F60C: .4byte gBattlescriptCurrInstr\n\
-_0801F610: .4byte BattleScript_SAtkDown2\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
static void atk15_seteffectwithchance(void)
{
@@ -4991,7 +3011,7 @@ static void atk15_seteffectwithchance(void)
}
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
- gBattleStruct->unk16112 = 0;
+ gBattleStruct->multihitMoveEffect = 0;
}
static void atk16_seteffectprimary(void)
@@ -5015,7 +3035,7 @@ static void atk18_clearstatusfromeffect(void)
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattlescriptCurrInstr += 2;
- gBattleStruct->unk16112 = 0;
+ gBattleStruct->multihitMoveEffect = 0;
}
static void atk19_tryfaintmon(void)
@@ -5057,12 +3077,12 @@ static void atk19_tryfaintmon(void)
if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])
&& gBattleMons[gActiveBattler].hp == 0)
{
- ewram160ACarr2(0, battlerId) = 0;
- ewram160ACarr2(1, battlerId) = 0;
- ewram16100arr2(0, battlerId) = 0;
- ewram16100arr2(1, battlerId) = 0;
- ewram16100arr2(2, battlerId) = 0;
- ewram16100arr2(3, battlerId) = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * battlerId + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * battlerId + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * battlerId + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * battlerId + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * battlerId + 2] = 0;
+ gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * battlerId + 3] = 0;
gHitMarker |= HITMARKER_FAINTED(gActiveBattler);
BattleScriptPush(gBattlescriptCurrInstr + 7);
@@ -5098,7 +3118,7 @@ static void atk19_tryfaintmon(void)
&& gBattleMons[gBattlerAttacker].hp != 0
&& gCurrentMove != MOVE_STRUGGLE)
{
- u8 moveIndex = ewram1608Carr(gBattlerAttacker);
+ u8 moveIndex = gSharedMem[BSTRUCT_OFF(ChosenMoveID) + gBattlerAttacker];
gBattleMons[gBattlerAttacker].pp[moveIndex] = 0;
BattleScriptPush(gBattlescriptCurrInstr);
@@ -5107,11 +3127,7 @@ static void atk19_tryfaintmon(void)
BtlController_EmitSetMonData(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
MarkBattlerForControllerExec(gActiveBattler);
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = gBattleMons[gBattlerAttacker].moves[moveIndex];
- gBattleTextBuff1[3] = gBattleMons[gBattlerAttacker].moves[moveIndex] >> 8;
- gBattleTextBuff1[4] = EOS;
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].moves[moveIndex]);
}
}
else
@@ -5181,7 +3197,7 @@ static void atk1E_jumpifability(void)
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
RecordAbilityBattle(battlerId -1, gLastUsedAbility);
- ewram160F8 = battlerId - 1;
+ gBattleStruct->unk160F8 = battlerId - 1;
}
else
gBattlescriptCurrInstr += 7;
@@ -5194,7 +3210,7 @@ static void atk1E_jumpifability(void)
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
RecordAbilityBattle(battlerId - 1, gLastUsedAbility);
- ewram160F8 = battlerId - 1;
+ gBattleStruct->unk160F8 = battlerId - 1;
}
else
gBattlescriptCurrInstr += 7;
@@ -5207,7 +3223,7 @@ static void atk1E_jumpifability(void)
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
RecordAbilityBattle(battlerId, gLastUsedAbility);
- ewram160F8 = battlerId;
+ gBattleStruct->unk160F8 = battlerId;
}
else
gBattlescriptCurrInstr += 7;
@@ -5334,7 +3350,7 @@ static void atk23_getexp(void)
else
{
gBattleStruct->getexpStateTracker++;
- gBattleStruct->unk16113 |= gBitTable[gBattlerPartyIndexes[gBank1]];
+ gBattleStruct->givenExpMons |= gBitTable[gBattlerPartyIndexes[gBank1]];
}
break;
case 1: // calculate experience points to redistribute
@@ -6014,7 +4030,7 @@ static void atk43_jumpifabilitypresent(void)
static void atk44_endselectionscript(void)
{
- ewram16060(gBattlerAttacker) = 1;
+ gSharedMem[BSTRUCT_OFF(selectionScriptFinished) + gBattlerAttacker] = 1;
}
static void atk45_playanimation(void)
@@ -6123,358 +4139,105 @@ static void atk47_setgraphicalstatchangevalues(void)
gBattlescriptCurrInstr++;
}
-#ifdef NONMATCHING
static void atk48_playstatchangeanimation(void)
{
- int curr_stat = 0;
- u16 stat_animID = 0;
- int changeable_stats = 0;
- u32 stats_to_check;
- u8 arg3;
+ u32 currStat = 0;
+ u16 statAnimId = 0;
+ s32 changeableStatsCount = 0;
+ u8 statsToCheck = 0;
- gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1));
- stats_to_check = T2_READ_8(gBattlescriptCurrInstr + 2);
- arg3 = T2_READ_8(gBattlescriptCurrInstr + 3);
- if (arg3 & 1)
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ statsToCheck = gBattlescriptCurrInstr[2];
+
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_NEGATIVE) // goes down
{
- u16 r1 = 0x15;
- if (arg3 & 0x2)
- r1 = 0x2D;
- while (stats_to_check != 0)
+ s16 startingStatAnimId;
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_BY_TWO)
+ startingStatAnimId = STAT_ANIM_MINUS2 - 1;
+ else
+ startingStatAnimId = STAT_ANIM_MINUS1 - 1;
+
+ while (statsToCheck != 0)
{
- if (!(stats_to_check & 1))
- continue;
- if (!(T2_READ_8(gBattlescriptCurrInstr + 3)))
- {
- u8 ability;
- if (gSideTimers[GetBattlerPosition(gActiveBattler) & 1].mistTimer)
- continue;
- ability = gBattleMons[gActiveBattler].ability;
- if (ability == ABILITY_CLEAR_BODY || ability == ABILITY_WHITE_SMOKE || (ability == ABILITY_KEEN_EYE && curr_stat == 6) || (ability == ABILITY_HYPER_CUTTER && curr_stat == 1))
- continue;
- }
- if (gBattleMons[gActiveBattler].statStages[curr_stat] > 0)
+ if (statsToCheck & 1)
{
- stat_animID = r1;
- changeable_stats++;
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_CANT_PREVENT)
+ {
+ if (gBattleMons[gActiveBattler].statStages[currStat] > MIN_STAT_STAGE)
+ {
+ statAnimId = startingStatAnimId + currStat;
+ changeableStatsCount++;
+ }
+ }
+ else if (!gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer
+ && gBattleMons[gActiveBattler].ability != ABILITY_CLEAR_BODY
+ && gBattleMons[gActiveBattler].ability != ABILITY_WHITE_SMOKE
+ && !(gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE && currStat == STAT_ACC)
+ && !(gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK))
+ {
+ if (gBattleMons[gActiveBattler].statStages[currStat] > MIN_STAT_STAGE)
+ {
+ statAnimId = startingStatAnimId + currStat;
+ changeableStatsCount++;
+ }
+ }
}
+ statsToCheck >>= 1, currStat++;
+ }
- stats_to_check >>= 1;
- r1 += 1;
- curr_stat++;
+ if (changeableStatsCount > 1) // more than one stat, so the color is gray
+ {
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_BY_TWO)
+ statAnimId = STAT_ANIM_MULTIPLE_MINUS2;
+ else
+ statAnimId = STAT_ANIM_MULTIPLE_MINUS1;
}
- if (changeable_stats > 1 && T2_READ_8(gBattlescriptCurrInstr + 3) & 2)
- stat_animID = 0x39;
- else
- stat_animID = 0x3A;
}
- else
+ else // goes up
{
- u16 r1 = 0x15;
- if (arg3 & 0x2)
- r1 = 0x2D;
- while (stats_to_check != 0)
+ s16 startingStatAnimId;
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_BY_TWO)
+ startingStatAnimId = STAT_ANIM_PLUS2 - 1;
+ else
+ startingStatAnimId = STAT_ANIM_PLUS1 - 1;
+
+ while (statsToCheck != 0)
{
- if (!(stats_to_check & 1))
- continue;
- if (gBattleMons[gActiveBattler].statStages[curr_stat] < 0xB)
+ if (statsToCheck & 1 && gBattleMons[gActiveBattler].statStages[currStat] < MAX_STAT_STAGE)
{
- stat_animID = r1;
- changeable_stats++;
+ statAnimId = startingStatAnimId + currStat;
+ changeableStatsCount++;
}
+ statsToCheck >>= 1, currStat++;
+ }
- stats_to_check >>= 1;
- r1 += 1;
- curr_stat++;
+ if (changeableStatsCount > 1) // more than one stat, so the color is gray
+ {
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_BY_TWO)
+ statAnimId = STAT_ANIM_MULTIPLE_PLUS2;
+ else
+ statAnimId = STAT_ANIM_MULTIPLE_PLUS1;
}
- if (changeable_stats > 1 && T2_READ_8(gBattlescriptCurrInstr + 3) & 2)
- stat_animID = 0x37;
- else
- stat_animID = 0x38;
}
- if ((T2_READ_8(gBattlescriptCurrInstr + 3) & 2 && changeable_stats <= 1)
- || changeable_stats == 0 || gBattleStruct->unk160DC != 0)
+
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_MULTIPLE_STATS && changeableStatsCount < 2)
+ {
gBattlescriptCurrInstr += 4;
- else
+ }
+ else if (changeableStatsCount != 0 && !gBattleStruct->statAnimPlayed)
{
- BtlController_EmitBattleAnimation(0, 1, stat_animID);
+ BtlController_EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId);
MarkBattlerForControllerExec(gActiveBattler);
- if ((T2_READ_8(gBattlescriptCurrInstr + 3) & 4) && changeable_stats > 1)
- gBattleStruct->unk160DC = 1;
+ if (gBattlescriptCurrInstr[3] & STAT_CHANGE_MULTIPLE_STATS && changeableStatsCount > 1)
+ gBattleStruct->statAnimPlayed = TRUE;
+ gBattlescriptCurrInstr += 4;
+ }
+ else
+ {
gBattlescriptCurrInstr += 4;
}
}
-#else
-NAKED
-static void atk48_playstatchangeanimation(void)
-{
- asm(".syntax unified\n\
-push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- movs r7, 0\n\
- movs r0, 0\n\
- mov r8, r0\n\
- movs r3, 0\n\
- ldr r5, _08021670 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r5]\n\
- ldrb r0, [r0, 0x1]\n\
- str r3, [sp]\n\
- bl GetBattlerForBattleScript\n\
- ldr r2, _08021674 @ =gActiveBattler\n\
- strb r0, [r2]\n\
- ldr r0, [r5]\n\
- ldrb r4, [r0, 0x2]\n\
- ldrb r1, [r0, 0x3]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- ldr r3, [sp]\n\
- cmp r0, 0\n\
- beq _08021710\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- movs r1, 0x15\n\
- cmp r0, 0\n\
- beq _0802163C\n\
- movs r1, 0x2D\n\
-_0802163C:\n\
- cmp r4, 0\n\
- beq _080216E4\n\
- movs r0, 0x1\n\
- mov r10, r0\n\
- ldr r0, _08021678 @ =gBattleMons+0x18 @ gBattleMons.statStages\n\
- mov r9, r0\n\
- lsls r5, r1, 16\n\
-_0802164A:\n\
- adds r0, r4, 0\n\
- mov r1, r10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080216D6\n\
- ldr r0, _08021670 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x3]\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0802167C\n\
- ldr r0, _08021674 @ =gActiveBattler\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r7, r0\n\
- b _080216C4\n\
- .align 2, 0\n\
-_08021670: .4byte gBattlescriptCurrInstr\n\
-_08021674: .4byte gActiveBattler\n\
-_08021678: .4byte gBattleMons+0x18 @ gBattleMons.statStages\n\
-_0802167C:\n\
- ldr r6, _08021700 @ =gActiveBattler\n\
- ldrb r0, [r6]\n\
- str r3, [sp]\n\
- bl GetBattlerPosition\n\
- mov r1, r10\n\
- ands r1, r0\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _08021704 @ =gSideTimers\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- ldr r3, [sp]\n\
- cmp r0, 0\n\
- bne _080216D6\n\
- ldr r0, _08021708 @ =gBattleMons\n\
- ldrb r2, [r6]\n\
- movs r1, 0x58\n\
- muls r2, r1\n\
- adds r0, r2, r0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x1D\n\
- beq _080216D6\n\
- cmp r0, 0x49\n\
- beq _080216D6\n\
- cmp r0, 0x33\n\
- bne _080216BA\n\
- cmp r7, 0x6\n\
- beq _080216D6\n\
-_080216BA:\n\
- cmp r0, 0x34\n\
- bne _080216C2\n\
- cmp r7, 0x1\n\
- beq _080216D6\n\
-_080216C2:\n\
- adds r0, r7, r2\n\
-_080216C4:\n\
- add r0, r9\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0\n\
- ble _080216D6\n\
- lsrs r0, r5, 16\n\
- mov r8, r0\n\
- adds r3, 0x1\n\
-_080216D6:\n\
- lsrs r4, 1\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r5, r1\n\
- adds r7, 0x1\n\
- cmp r4, 0\n\
- bne _0802164A\n\
-_080216E4:\n\
- ldr r0, _0802170C @ =gBattlescriptCurrInstr\n\
- mov r9, r0\n\
- cmp r3, 0x1\n\
- ble _08021772\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x3]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- movs r1, 0x39\n\
- mov r8, r1\n\
- cmp r0, 0\n\
- beq _08021772\n\
- movs r0, 0x3A\n\
- b _08021770\n\
- .align 2, 0\n\
-_08021700: .4byte gActiveBattler\n\
-_08021704: .4byte gSideTimers\n\
-_08021708: .4byte gBattleMons\n\
-_0802170C: .4byte gBattlescriptCurrInstr\n\
-_08021710:\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- movs r1, 0xE\n\
- cmp r0, 0\n\
- beq _0802171C\n\
- movs r1, 0x26\n\
-_0802171C:\n\
- mov r9, r5\n\
- cmp r4, 0\n\
- beq _08021758\n\
- ldr r6, _0802178C @ =gBattleMons+0x18 @ gBattleMons.statStages\n\
- adds r5, r2, 0\n\
- lsls r2, r1, 16\n\
-_08021728:\n\
- movs r0, 0x1\n\
- ands r0, r4\n\
- cmp r0, 0\n\
- beq _0802174A\n\
- ldrb r1, [r5]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r7, r0\n\
- adds r0, r6\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- cmp r0, 0xB\n\
- bgt _0802174A\n\
- lsrs r1, r2, 16\n\
- mov r8, r1\n\
- adds r3, 0x1\n\
-_0802174A:\n\
- lsrs r4, 1\n\
- movs r0, 0x80\n\
- lsls r0, 9\n\
- adds r2, r0\n\
- adds r7, 0x1\n\
- cmp r4, 0\n\
- bne _08021728\n\
-_08021758:\n\
- cmp r3, 0x1\n\
- ble _08021772\n\
- mov r1, r9\n\
- ldr r0, [r1]\n\
- ldrb r1, [r0, 0x3]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- movs r1, 0x37\n\
- mov r8, r1\n\
- cmp r0, 0\n\
- beq _08021772\n\
- movs r0, 0x38\n\
-_08021770:\n\
- mov r8, r0\n\
-_08021772:\n\
- mov r1, r9\n\
- ldr r2, [r1]\n\
- ldrb r1, [r2, 0x3]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08021790\n\
- cmp r3, 0x1\n\
- bgt _08021790\n\
- adds r0, r2, 0x4\n\
- mov r1, r9\n\
- b _080217E6\n\
- .align 2, 0\n\
-_0802178C: .4byte gBattleMons+0x18 @ gBattleMons.statStages\n\
-_08021790:\n\
- cmp r3, 0\n\
- beq _080217E0\n\
- ldr r0, _080217D0 @ =gSharedMem\n\
- ldr r1, _080217D4 @ =0x000160dc\n\
- adds r4, r0, r1\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- bne _080217E0\n\
- movs r0, 0\n\
- movs r1, 0x1\n\
- mov r2, r8\n\
- str r3, [sp]\n\
- bl BtlController_EmitBattleAnimation\n\
- ldr r0, _080217D8 @ =gActiveBattler\n\
- ldrb r0, [r0]\n\
- bl MarkBattlerForControllerExec\n\
- ldr r0, _080217DC @ =gBattlescriptCurrInstr\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x3]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- ldr r3, [sp]\n\
- cmp r0, 0\n\
- beq _080217CC\n\
- cmp r3, 0x1\n\
- ble _080217CC\n\
- movs r0, 0x1\n\
- strb r0, [r4]\n\
-_080217CC:\n\
- ldr r1, _080217DC @ =gBattlescriptCurrInstr\n\
- b _080217E2\n\
- .align 2, 0\n\
-_080217D0: .4byte gSharedMem\n\
-_080217D4: .4byte 0x000160dc\n\
-_080217D8: .4byte gActiveBattler\n\
-_080217DC: .4byte gBattlescriptCurrInstr\n\
-_080217E0:\n\
- mov r1, r9\n\
-_080217E2:\n\
- ldr r0, [r1]\n\
- adds r0, 0x4\n\
-_080217E6:\n\
- str r0, [r1]\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided");
-}
-
-#endif // NONMATCHING
-
#define BattleScript_FlushMessageBox gUnknown_081D9B2D
extern u8 BattleScript_RageIsBuilding[];
@@ -6673,7 +4436,7 @@ void atk49_moveend(void)
}
if (gBattleMoves[gChosenMove].effect != 0x7F || (gMoveResultFlags & 0x29))
- gUnknown_02024C2C[gBattlerAttacker] = gChosenMove;
+ gLastPrintedMoves[gBattlerAttacker] = gChosenMove;
if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker])
&& !(gSharedMem[0x160A6] & gBitTable[gBattlerAttacker])
@@ -6682,12 +4445,12 @@ void atk49_moveend(void)
if (gHitMarker & HITMARKER_OBEYS)
{
gLastMoves[gBattlerAttacker] = gChosenMove;
- gUnknown_02024C4C[gBattlerAttacker] = gCurrentMove;
+ gLastResultingMoves[gBattlerAttacker] = gCurrentMove;
}
else
{
gLastMoves[gBattlerAttacker] = 0xFFFF;
- gUnknown_02024C4C[gBattlerAttacker] = 0xFFFF;
+ gLastResultingMoves[gBattlerAttacker] = 0xFFFF;
}
if (!(gHitMarker & HITMARKER_FAINTED(gBattlerTarget)))
@@ -6867,7 +4630,7 @@ static void atk4C_getswitchedmondata(void)
gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1));
- gBattlerPartyIndexes[gActiveBattler] = ewram16068arr(gActiveBattler);
+ gBattlerPartyIndexes[gActiveBattler] = gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + gActiveBattler];
BtlController_EmitGetMonData(0, 0, gBitTable[gBattlerPartyIndexes[gActiveBattler]]);
MarkBattlerForControllerExec(gActiveBattler);
@@ -7010,1080 +4773,294 @@ static void atk4F_jumpifcantswitch(void)
void sub_8022A3C(u8 unkown)
{
- BATTLE_PARTY_ID(gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ gSharedMem[BSTRUCT_OFF(unk16064) + gActiveBattler] = gBattlerPartyIndexes[gActiveBattler];
BtlController_EmitChoosePokemon(0, 1, unkown, 0, gBattleStruct->unk1606C[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
-/*
+bool8 sub_8018018(u8 bank, u8, u8);
+
static void atk50_openpartyscreen(void)
{
- int i = 0;
- int r9 = 0;
- u8* fail_loc = T1_READ_PTR(gBattlescriptCurrInstr + 2);
+ u32 flags;
+ u8 hitmarkerFaintBits;
+ u8 battlerId;
+ const u8 *jumpPtr;
+
+ battlerId = 0;
+ flags = 0;
+ jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
- if (T2_READ_8(gBattlescriptCurrInstr + 1) == 5)
+ if (gBattlescriptCurrInstr[1] == 5)
{
if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
{
- for (gActiveBattler = i; gActiveBattler < gBattlersCount; gActiveBattler++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler)))
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
+ {
+ if (sub_8018018(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8022A3C(PARTY_SIZE);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ }
+ else
{
BtlController_EmitLinkStandbyMsg(0, 2);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (sub_8018018(gActiveBattler, 6, 6) == 0
- && !gSpecialStatuses[gActiveBattler].flag40)
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ u8 flag40_0, flag40_1, flag40_2, flag40_3;
+
+ hitmarkerFaintBits = gHitMarker >> 28;
+
+ if (gBitTable[0] & hitmarkerFaintBits)
+ {
+ gActiveBattler = 0;
+ if (sub_8018018(0, PARTY_SIZE, PARTY_SIZE))
{
- sub_8022A3C(6);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8022A3C(gBattleStruct->monToSwitchIntoId[2]);
gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else
{
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ flags |= 1;
+ }
+ }
+ if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
+ {
+ gActiveBattler = 2;
+ if (sub_8018018(2, PARTY_SIZE, PARTY_SIZE))
+ {
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
- gHitMarker &= (~HITMARKER_FAINTED(gActiveBattler));
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8022A3C(gBattleStruct->monToSwitchIntoId[0]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ else if (!(flags & 1))
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+ if (gBitTable[1] & hitmarkerFaintBits)
+ {
+ gActiveBattler = 1;
+ if (sub_8018018(1, PARTY_SIZE, PARTY_SIZE))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8022A3C(gBattleStruct->monToSwitchIntoId[3]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ else
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ flags |= 2;
+ }
+ }
+ if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
+ {
+ gActiveBattler = 3;
+ if (sub_8018018(3, PARTY_SIZE, PARTY_SIZE))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8022A3C(gBattleStruct->monToSwitchIntoId[1]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ else if (!(flags & 2))
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
+
+ flag40_0 = gSpecialStatuses[0].flag40;
+ if (!flag40_0)
+ {
+ flag40_2 = gSpecialStatuses[2].flag40;
+ if (!flag40_2 && hitmarkerFaintBits != 0)
+ {
+ if (gAbsentBattlerFlags & gBitTable[0])
+ gActiveBattler = 2;
+ else
+ gActiveBattler = 0;
+
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+
+ }
+ flag40_1 = gSpecialStatuses[1].flag40;
+ if (!flag40_1)
+ {
+ flag40_3 = gSpecialStatuses[3].flag40;
+ if (!flag40_3 && hitmarkerFaintBits != 0)
+ {
+ if (gAbsentBattlerFlags & gBitTable[1])
+ gActiveBattler = 3;
+ else
+ gActiveBattler = 1;
+
BtlController_EmitLinkStandbyMsg(0, 2);
MarkBattlerForControllerExec(gActiveBattler);
}
}
}
- else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (gBattlescriptCurrInstr[1] == 6)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- if (!(gHitMarker >> 0x1C & gBitTable[0]))
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
-
+ hitmarkerFaintBits = gHitMarker >> 28;
+ if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
+ {
+ gActiveBattler = 2;
+ if (sub_8018018(2, gBattleBufferB[0][1], PARTY_SIZE))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8022A3C(gBattleStruct->monToSwitchIntoId[0]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ }
+ if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
+ {
+ gActiveBattler = 3;
+ if (sub_8018018(3, gBattleBufferB[1][1], PARTY_SIZE))
+ {
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
+ {
+ sub_8022A3C(gBattleStruct->monToSwitchIntoId[1]);
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
+ }
+ }
+ gBattlescriptCurrInstr += 6;
}
- else if (sub_8018018(gActiveBattler, 6, 6) == 0
- && !gSpecialStatuses[gActiveBattler].flag40)
+ else
{
+ gBattlescriptCurrInstr += 6;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+
+ hitmarkerFaintBits = gHitMarker >> 28;
+
+ gBank1 = 0;
+ while (!(gBitTable[gBank1] & hitmarkerFaintBits)
+ && gBank1 < gBattlersCount)
+ gBank1++;
+
+ if (gBank1 == gBattlersCount)
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ if (gBattlescriptCurrInstr[1] & 0x80)
+ hitmarkerFaintBits = 0; // Used here as the caseId for the EmitChoose function.
+ else
+ hitmarkerFaintBits = 1;
+
+ battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
+ if (gSpecialStatuses[battlerId].flag40)
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (sub_8018018(battlerId, PARTY_SIZE, PARTY_SIZE))
+ {
+ gActiveBattler = battlerId;
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ gActiveBattler = battlerId;
+ gSharedMem[BSTRUCT_OFF(unk16064) + gActiveBattler] = gBattlerPartyIndexes[gActiveBattler];
+ BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + (gActiveBattler ^ 2)], ABILITY_NONE, gBattleStruct->unk1606C[gActiveBattler]);
+ MarkBattlerForControllerExec(gActiveBattler);
+
+ gBattlescriptCurrInstr += 6;
+
+ if (GetBattlerPosition(gActiveBattler) == 0 && gBattleResults.totalMonSwitchCounter < 0xFF)
+ gBattleResults.totalMonSwitchCounter++;
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
+ {
+ if (gActiveBattler != battlerId)
+ {
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
+ }
+ }
}
else
{
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(battlerId) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
+ gActiveBattler ^= BIT_FLANK;
+ BtlController_EmitLinkStandbyMsg(0, 2);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
}
}
-*/
-
-NAKED
-static void atk50_openpartyscreen(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x4\n\
- movs r7, 0\n\
- movs r0, 0\n\
- mov r9, r0\n\
- ldr r6, _08022B44 @ =gBattlescriptCurrInstr\n\
- ldr r1, [r6]\n\
- ldrb r2, [r1, 0x2]\n\
- ldrb r0, [r1, 0x3]\n\
- lsls r0, 8\n\
- orrs r2, r0\n\
- ldrb r0, [r1, 0x4]\n\
- lsls r0, 16\n\
- orrs r2, r0\n\
- ldrb r0, [r1, 0x5]\n\
- lsls r0, 24\n\
- orrs r2, r0\n\
- mov r8, r2\n\
- ldrb r2, [r1, 0x1]\n\
- adds r0, r2, 0\n\
- mov r12, r6\n\
- cmp r0, 0x5\n\
- beq _08022ACE\n\
- b _08022F74\n\
-_08022ACE:\n\
- ldr r0, _08022B48 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- movs r1, 0x41\n\
- ands r1, r0\n\
- cmp r1, 0x1\n\
- beq _08022BBC\n\
- ldr r1, _08022B4C @ =gActiveBattler\n\
- strb r7, [r1]\n\
- ldr r0, _08022B50 @ =gBattlersCount\n\
- ldrb r0, [r0]\n\
- cmp r7, r0\n\
- bcc _08022AE8\n\
- b _08022F62\n\
-_08022AE8:\n\
- ldr r7, _08022B54 @ =gHitMarker\n\
- ldr r6, _08022B58 @ =gBitTable\n\
- adds r4, r1, 0\n\
- ldr r0, _08022B5C @ =gAbsentBattlerFlags\n\
- mov r8, r0\n\
-_08022AF2:\n\
- ldrb r2, [r4]\n\
- lsls r0, r2, 2\n\
- adds r0, r6\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r7]\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08022B94\n\
- adds r0, r2, 0\n\
- movs r1, 0x6\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08022B60\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- mov r2, r8\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r7]\n\
- bics r0, r1\n\
- str r0, [r7]\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- b _08022BA2\n\
- .align 2, 0\n\
-_08022B44: .4byte gBattlescriptCurrInstr\n\
-_08022B48: .4byte gBattleTypeFlags\n\
-_08022B4C: .4byte gActiveBattler\n\
-_08022B50: .4byte gBattlersCount\n\
-_08022B54: .4byte gHitMarker\n\
-_08022B58: .4byte gBitTable\n\
-_08022B5C: .4byte gAbsentBattlerFlags\n\
-_08022B60:\n\
- ldr r5, _08022B90 @ =gSpecialStatuses\n\
- ldrb r0, [r4]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r5\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022BA2\n\
- movs r0, 0x6\n\
- bl sub_8022A3C\n\
- ldrb r1, [r4]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- ldrb r1, [r0]\n\
- movs r2, 0x40\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
- b _08022BA2\n\
- .align 2, 0\n\
-_08022B90: .4byte gSpecialStatuses\n\
-_08022B94:\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
-_08022BA2:\n\
- ldrb r0, [r4]\n\
- adds r0, 0x1\n\
- strb r0, [r4]\n\
- ldr r1, _08022BB8 @ =gBattlersCount\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _08022AF2\n\
- b _08022F62\n\
- .align 2, 0\n\
-_08022BB8: .4byte gBattlersCount\n\
-_08022BBC:\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _08022BC4\n\
- b _08022F62\n\
-_08022BC4:\n\
- ldr r0, _08022C1C @ =gHitMarker\n\
- mov r8, r0\n\
- ldr r0, [r0]\n\
- lsrs r5, r0, 28\n\
- ldr r6, _08022C20 @ =gBitTable\n\
- ldr r0, [r6]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- beq _08022C7E\n\
- ldr r4, _08022C24 @ =gActiveBattler\n\
- strb r7, [r4]\n\
- movs r0, 0\n\
- movs r1, 0x6\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08022C2C\n\
- ldr r2, _08022C28 @ =gAbsentBattlerFlags\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- mov r2, r8\n\
- ldr r0, [r2]\n\
- bics r0, r1\n\
- str r0, [r2]\n\
- movs r0, 0\n\
- bl BtlController_EmitCmd42\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- b _08022C7E\n\
- .align 2, 0\n\
-_08022C1C: .4byte gHitMarker\n\
-_08022C20: .4byte gBitTable\n\
-_08022C24: .4byte gActiveBattler\n\
-_08022C28: .4byte gAbsentBattlerFlags\n\
-_08022C2C:\n\
- ldr r6, _08022C60 @ =gSpecialStatuses\n\
- ldrb r0, [r4]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r6\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022C6C\n\
- ldr r0, _08022C64 @ =gSharedMem\n\
- ldr r1, _08022C68 @ =0x0001606a\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- bl sub_8022A3C\n\
- ldrb r1, [r4]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0]\n\
- movs r2, 0x40\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
- b _08022C7E\n\
- .align 2, 0\n\
-_08022C60: .4byte gSpecialStatuses\n\
-_08022C64: .4byte gSharedMem\n\
-_08022C68: .4byte 0x0001606a\n\
-_08022C6C:\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- movs r2, 0x1\n\
- mov r9, r2\n\
-_08022C7E:\n\
- ldr r6, _08022CD8 @ =gBitTable\n\
- ldr r0, [r6, 0x8]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- beq _08022D40\n\
- ldr r0, [r6]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- bne _08022D40\n\
- ldr r4, _08022CDC @ =gActiveBattler\n\
- movs r0, 0x2\n\
- strb r0, [r4]\n\
- movs r0, 0x2\n\
- movs r1, 0x6\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08022CE8\n\
- ldr r2, _08022CE0 @ =gAbsentBattlerFlags\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r2, _08022CE4 @ =gHitMarker\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r2]\n\
- bics r0, r1\n\
- str r0, [r2]\n\
- movs r0, 0\n\
- bl BtlController_EmitCmd42\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- b _08022D40\n\
- .align 2, 0\n\
-_08022CD8: .4byte gBitTable\n\
-_08022CDC: .4byte gActiveBattler\n\
-_08022CE0: .4byte gAbsentBattlerFlags\n\
-_08022CE4: .4byte gHitMarker\n\
-_08022CE8:\n\
- ldr r6, _08022D1C @ =gSpecialStatuses\n\
- ldrb r0, [r4]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r6\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022D28\n\
- ldr r0, _08022D20 @ =gSharedMem\n\
- ldr r1, _08022D24 @ =0x00016068\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- bl sub_8022A3C\n\
- ldrb r1, [r4]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0]\n\
- movs r2, 0x40\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
- b _08022D40\n\
- .align 2, 0\n\
-_08022D1C: .4byte gSpecialStatuses\n\
-_08022D20: .4byte gSharedMem\n\
-_08022D24: .4byte 0x00016068\n\
-_08022D28:\n\
- movs r0, 0x1\n\
- mov r2, r9\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _08022D40\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
-_08022D40:\n\
- ldr r6, _08022D90 @ =gBitTable\n\
- ldr r0, [r6, 0x4]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- beq _08022DF6\n\
- ldr r4, _08022D94 @ =gActiveBattler\n\
- movs r0, 0x1\n\
- strb r0, [r4]\n\
- movs r0, 0x1\n\
- movs r1, 0x6\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08022DA0\n\
- ldr r2, _08022D98 @ =gAbsentBattlerFlags\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r2, _08022D9C @ =gHitMarker\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r2]\n\
- bics r0, r1\n\
- str r0, [r2]\n\
- movs r0, 0\n\
- bl BtlController_EmitCmd42\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- b _08022DF6\n\
- .align 2, 0\n\
-_08022D90: .4byte gBitTable\n\
-_08022D94: .4byte gActiveBattler\n\
-_08022D98: .4byte gAbsentBattlerFlags\n\
-_08022D9C: .4byte gHitMarker\n\
-_08022DA0:\n\
- ldr r6, _08022DD4 @ =gSpecialStatuses\n\
- ldrb r0, [r4]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r6\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022DE0\n\
- ldr r0, _08022DD8 @ =gSharedMem\n\
- ldr r1, _08022DDC @ =0x0001606b\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- bl sub_8022A3C\n\
- ldrb r1, [r4]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0]\n\
- movs r2, 0x40\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
- b _08022DF6\n\
- .align 2, 0\n\
-_08022DD4: .4byte gSpecialStatuses\n\
-_08022DD8: .4byte gSharedMem\n\
-_08022DDC: .4byte 0x0001606b\n\
-_08022DE0:\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- movs r0, 0x2\n\
- mov r2, r9\n\
- orrs r2, r0\n\
- mov r9, r2\n\
-_08022DF6:\n\
- ldr r6, _08022E50 @ =gBitTable\n\
- ldr r0, [r6, 0xC]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- beq _08022EB8\n\
- ldr r0, [r6, 0x4]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- bne _08022EB8\n\
- ldr r4, _08022E54 @ =gActiveBattler\n\
- movs r0, 0x3\n\
- strb r0, [r4]\n\
- movs r0, 0x3\n\
- movs r1, 0x6\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08022E60\n\
- ldr r2, _08022E58 @ =gAbsentBattlerFlags\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r2, _08022E5C @ =gHitMarker\n\
- ldrb r0, [r4]\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r2]\n\
- bics r0, r1\n\
- str r0, [r2]\n\
- movs r0, 0\n\
- bl BtlController_EmitCmd42\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- b _08022EB8\n\
- .align 2, 0\n\
-_08022E50: .4byte gBitTable\n\
-_08022E54: .4byte gActiveBattler\n\
-_08022E58: .4byte gAbsentBattlerFlags\n\
-_08022E5C: .4byte gHitMarker\n\
-_08022E60:\n\
- ldr r6, _08022E94 @ =gSpecialStatuses\n\
- ldrb r0, [r4]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r6\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022EA0\n\
- ldr r0, _08022E98 @ =gSharedMem\n\
- ldr r1, _08022E9C @ =0x00016069\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- bl sub_8022A3C\n\
- ldrb r1, [r4]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0]\n\
- movs r2, 0x40\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
- b _08022EB8\n\
- .align 2, 0\n\
-_08022E94: .4byte gSpecialStatuses\n\
-_08022E98: .4byte gSharedMem\n\
-_08022E9C: .4byte 0x00016069\n\
-_08022EA0:\n\
- movs r0, 0x2\n\
- mov r2, r9\n\
- ands r2, r0\n\
- cmp r2, 0\n\
- bne _08022EB8\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
-_08022EB8:\n\
- ldr r1, _08022EE8 @ =gSpecialStatuses\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022F0C\n\
- adds r0, r1, 0\n\
- adds r0, 0x28\n\
- ldrb r0, [r0]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022F0C\n\
- cmp r5, 0\n\
- beq _08022F0C\n\
- ldr r0, _08022EEC @ =gAbsentBattlerFlags\n\
- ldrb r1, [r0]\n\
- ldr r0, _08022EF0 @ =gBitTable\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _08022EF8\n\
- ldr r1, _08022EF4 @ =gActiveBattler\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
- b _08022EFC\n\
- .align 2, 0\n\
-_08022EE8: .4byte gSpecialStatuses\n\
-_08022EEC: .4byte gAbsentBattlerFlags\n\
-_08022EF0: .4byte gBitTable\n\
-_08022EF4: .4byte gActiveBattler\n\
-_08022EF8:\n\
- ldr r0, _08022F3C @ =gActiveBattler\n\
- strb r1, [r0]\n\
-_08022EFC:\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldr r0, _08022F3C @ =gActiveBattler\n\
- ldrb r0, [r0]\n\
- bl MarkBattlerForControllerExec\n\
-_08022F0C:\n\
- ldr r1, _08022F40 @ =gSpecialStatuses\n\
- ldrb r0, [r1, 0x14]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022F62\n\
- adds r0, r1, 0\n\
- adds r0, 0x3C\n\
- ldrb r0, [r0]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _08022F62\n\
- cmp r5, 0\n\
- beq _08022F62\n\
- ldr r0, _08022F44 @ =gAbsentBattlerFlags\n\
- ldrb r0, [r0]\n\
- ldr r1, _08022F48 @ =gBitTable\n\
- ldr r1, [r1, 0x4]\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08022F4C\n\
- ldr r1, _08022F3C @ =gActiveBattler\n\
- movs r0, 0x3\n\
- b _08022F50\n\
- .align 2, 0\n\
-_08022F3C: .4byte gActiveBattler\n\
-_08022F40: .4byte gSpecialStatuses\n\
-_08022F44: .4byte gAbsentBattlerFlags\n\
-_08022F48: .4byte gBitTable\n\
-_08022F4C:\n\
- ldr r1, _08022F6C @ =gActiveBattler\n\
- movs r0, 0x1\n\
-_08022F50:\n\
- strb r0, [r1]\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldr r0, _08022F6C @ =gActiveBattler\n\
- ldrb r0, [r0]\n\
- bl MarkBattlerForControllerExec\n\
-_08022F62:\n\
- ldr r1, _08022F70 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r1]\n\
- adds r0, 0x6\n\
- str r0, [r1]\n\
- b _08023302\n\
- .align 2, 0\n\
-_08022F6C: .4byte gActiveBattler\n\
-_08022F70: .4byte gBattlescriptCurrInstr\n\
-_08022F74:\n\
- cmp r0, 0x6\n\
- beq _08022F7A\n\
- b _08023170\n\
-_08022F7A:\n\
- ldr r0, _08022FF0 @ =gBattleTypeFlags\n\
- ldrh r2, [r0]\n\
- movs r0, 0x40\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08022F88\n\
- b _0802310C\n\
-_08022F88:\n\
- movs r0, 0x1\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _08022F92\n\
- b _0802310C\n\
-_08022F92:\n\
- ldr r7, _08022FF4 @ =gHitMarker\n\
- ldr r0, [r7]\n\
- lsrs r5, r0, 28\n\
- ldr r4, _08022FF8 @ =gBitTable\n\
- ldr r0, [r4, 0x8]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- beq _0802303A\n\
- ldr r0, [r4]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- beq _0802303A\n\
- ldr r6, _08022FFC @ =gActiveBattler\n\
- movs r0, 0x2\n\
- strb r0, [r6]\n\
- ldr r0, _08023000 @ =gBattleBufferB\n\
- ldrb r1, [r0, 0x1]\n\
- movs r0, 0x2\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08023008\n\
- ldr r2, _08023004 @ =gAbsentBattlerFlags\n\
- ldrb r0, [r6]\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldrb r0, [r6]\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r7]\n\
- bics r0, r1\n\
- str r0, [r7]\n\
- movs r0, 0\n\
- bl BtlController_EmitCmd42\n\
- ldrb r0, [r6]\n\
- bl MarkBattlerForControllerExec\n\
- b _0802303A\n\
- .align 2, 0\n\
-_08022FF0: .4byte gBattleTypeFlags\n\
-_08022FF4: .4byte gHitMarker\n\
-_08022FF8: .4byte gBitTable\n\
-_08022FFC: .4byte gActiveBattler\n\
-_08023000: .4byte gBattleBufferB\n\
-_08023004: .4byte gAbsentBattlerFlags\n\
-_08023008:\n\
- ldr r4, _08023098 @ =gSpecialStatuses\n\
- ldrb r0, [r6]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _0802303A\n\
- ldr r0, _0802309C @ =gSharedMem\n\
- ldr r1, _080230A0 @ =0x00016068\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- bl sub_8022A3C\n\
- ldrb r1, [r6]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldrb r1, [r0]\n\
- movs r2, 0x40\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
-_0802303A:\n\
- ldr r4, _080230A4 @ =gBitTable\n\
- ldr r0, [r4, 0xC]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- beq _080230EE\n\
- ldr r0, [r4, 0x4]\n\
- ands r5, r0\n\
- cmp r5, 0\n\
- beq _080230EE\n\
- ldr r5, _080230A8 @ =gActiveBattler\n\
- movs r0, 0x3\n\
- strb r0, [r5]\n\
- ldr r0, _080230AC @ =gBattleBufferB\n\
- ldr r2, _080230B0 @ =0x00000201\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- movs r0, 0x3\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080230BC\n\
- ldr r2, _080230B4 @ =gAbsentBattlerFlags\n\
- ldrb r0, [r5]\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- ldrb r1, [r2]\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- ldr r2, _080230B8 @ =gHitMarker\n\
- ldrb r0, [r5]\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r2]\n\
- bics r0, r1\n\
- str r0, [r2]\n\
- movs r0, 0\n\
- bl BtlController_EmitCmd42\n\
- ldrb r0, [r5]\n\
- bl MarkBattlerForControllerExec\n\
- b _080230EE\n\
- .align 2, 0\n\
-_08023098: .4byte gSpecialStatuses\n\
-_0802309C: .4byte gSharedMem\n\
-_080230A0: .4byte 0x00016068\n\
-_080230A4: .4byte gBitTable\n\
-_080230A8: .4byte gActiveBattler\n\
-_080230AC: .4byte gBattleBufferB\n\
-_080230B0: .4byte 0x00000201\n\
-_080230B4: .4byte gAbsentBattlerFlags\n\
-_080230B8: .4byte gHitMarker\n\
-_080230BC:\n\
- ldr r4, _080230FC @ =gSpecialStatuses\n\
- ldrb r0, [r5]\n\
- lsls r1, r0, 2\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4\n\
- ldrb r0, [r1]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- blt _080230EE\n\
- ldr r0, _08023100 @ =gSharedMem\n\
- ldr r1, _08023104 @ =0x00016069\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- bl sub_8022A3C\n\
- ldrb r1, [r5]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldrb r1, [r0]\n\
- movs r2, 0x40\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
-_080230EE:\n\
- ldr r1, _08023108 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r1]\n\
- adds r0, 0x6\n\
- str r0, [r1]\n\
- mov r12, r1\n\
- b _08023110\n\
- .align 2, 0\n\
-_080230FC: .4byte gSpecialStatuses\n\
-_08023100: .4byte gSharedMem\n\
-_08023104: .4byte 0x00016069\n\
-_08023108: .4byte gBattlescriptCurrInstr\n\
-_0802310C:\n\
- adds r0, r1, 0x6\n\
- str r0, [r6]\n\
-_08023110:\n\
- ldr r0, _08023160 @ =gHitMarker\n\
- ldr r0, [r0]\n\
- lsrs r5, r0, 28\n\
- ldr r1, _08023164 @ =gBank1\n\
- movs r0, 0\n\
- strb r0, [r1]\n\
- ldr r4, _08023168 @ =gBitTable\n\
- ldr r2, [r4]\n\
- ands r2, r5\n\
- ldr r6, _0802316C @ =gBattlersCount\n\
- cmp r2, 0\n\
- bne _0802314C\n\
- adds r7, r6, 0\n\
- ldrb r0, [r6]\n\
- cmp r2, r0\n\
- bcs _0802314C\n\
- adds r3, r1, 0\n\
-_08023132:\n\
- ldrb r0, [r3]\n\
- adds r0, 0x1\n\
- strb r0, [r3]\n\
- ldrb r2, [r3]\n\
- lsls r0, r2, 2\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- bne _0802314C\n\
- ldrb r0, [r7]\n\
- cmp r2, r0\n\
- bcc _08023132\n\
-_0802314C:\n\
- ldrb r0, [r1]\n\
- ldrb r6, [r6]\n\
- cmp r0, r6\n\
- beq _08023156\n\
- b _08023302\n\
-_08023156:\n\
- mov r1, r8\n\
- mov r2, r12\n\
- str r1, [r2]\n\
- b _08023302\n\
- .align 2, 0\n\
-_08023160: .4byte gHitMarker\n\
-_08023164: .4byte gBank1\n\
-_08023168: .4byte gBitTable\n\
-_0802316C: .4byte gBattlersCount\n\
-_08023170:\n\
- movs r0, 0x80\n\
- ands r0, r2\n\
- movs r5, 0x1\n\
- cmp r0, 0\n\
- beq _0802317C\n\
- movs r5, 0\n\
-_0802317C:\n\
- movs r0, 0x7F\n\
- ands r0, r2\n\
- bl GetBattlerForBattleScript\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r1, _080231A4 @ =gSpecialStatuses\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- lsls r0, 25\n\
- cmp r0, 0\n\
- bge _080231A8\n\
- ldr r0, [r6]\n\
- adds r0, 0x6\n\
- str r0, [r6]\n\
- b _08023302\n\
- .align 2, 0\n\
-_080231A4: .4byte gSpecialStatuses\n\
-_080231A8:\n\
- adds r0, r7, 0\n\
- movs r1, 0x6\n\
- movs r2, 0x6\n\
- bl sub_8018018\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080231F8\n\
- ldr r2, _080231E8 @ =gActiveBattler\n\
- strb r7, [r2]\n\
- ldr r3, _080231EC @ =gAbsentBattlerFlags\n\
- ldr r4, _080231F0 @ =gBitTable\n\
- ldrb r0, [r2]\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- ldrb r1, [r3]\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- ldr r3, _080231F4 @ =gHitMarker\n\
- ldrb r0, [r2]\n\
- lsls r0, 2\n\
- adds r0, r4\n\
- ldr r1, [r0]\n\
- lsls r1, 28\n\
- ldr r0, [r3]\n\
- bics r0, r1\n\
- str r0, [r3]\n\
- mov r0, r8\n\
- str r0, [r6]\n\
- b _08023302\n\
- .align 2, 0\n\
-_080231E8: .4byte gActiveBattler\n\
-_080231EC: .4byte gAbsentBattlerFlags\n\
-_080231F0: .4byte gBitTable\n\
-_080231F4: .4byte gHitMarker\n\
-_080231F8:\n\
- ldr r4, _080232A0 @ =gActiveBattler\n\
- strb r7, [r4]\n\
- ldr r3, _080232A4 @ =gSharedMem\n\
- ldrb r0, [r4]\n\
- ldr r2, _080232A8 @ =0x00016064\n\
- adds r1, r0, r2\n\
- adds r1, r3\n\
- ldr r2, _080232AC @ =gBattlerPartyIndexes\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- strb r0, [r1]\n\
- ldrb r1, [r4]\n\
- movs r0, 0x2\n\
- eors r0, r1\n\
- ldr r1, _080232B0 @ =0x00016068\n\
- adds r0, r1\n\
- adds r0, r3\n\
- ldrb r2, [r0]\n\
- ldrb r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- ldr r1, _080232B4 @ =0x0001606c\n\
- adds r3, r1\n\
- adds r0, r3\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- adds r1, r5, 0\n\
- movs r3, 0\n\
- bl BtlController_EmitChoosePokemon\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
- ldr r0, [r6]\n\
- adds r0, 0x6\n\
- str r0, [r6]\n\
- ldrb r0, [r4]\n\
- bl GetBattlerPosition\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0802325A\n\
- ldr r1, _080232B8 @ =gBattleResults\n\
- ldrb r0, [r1, 0x2]\n\
- cmp r0, 0xFE\n\
- bhi _0802325A\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x2]\n\
-_0802325A:\n\
- ldr r0, _080232BC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080232C4\n\
- ldr r1, _080232A0 @ =gActiveBattler\n\
- movs r0, 0\n\
- strb r0, [r1]\n\
- ldr r0, _080232C0 @ =gBattlersCount\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08023302\n\
- adds r4, r1, 0\n\
-_08023276:\n\
- ldrb r0, [r4]\n\
- cmp r0, r7\n\
- beq _0802328A\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
-_0802328A:\n\
- ldrb r0, [r4]\n\
- adds r0, 0x1\n\
- strb r0, [r4]\n\
- ldr r1, _080232C0 @ =gBattlersCount\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _08023276\n\
- b _08023302\n\
- .align 2, 0\n\
-_080232A0: .4byte gActiveBattler\n\
-_080232A4: .4byte gSharedMem\n\
-_080232A8: .4byte 0x00016064\n\
-_080232AC: .4byte gBattlerPartyIndexes\n\
-_080232B0: .4byte 0x00016068\n\
-_080232B4: .4byte 0x0001606c\n\
-_080232B8: .4byte gBattleResults\n\
-_080232BC: .4byte gBattleTypeFlags\n\
-_080232C0: .4byte gBattlersCount\n\
-_080232C4:\n\
- adds r0, r7, 0\n\
- bl GetBattlerPosition\n\
- movs r1, 0x1\n\
- eors r0, r1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl GetBattlerAtPosition\n\
- ldr r4, _08023310 @ =gActiveBattler\n\
- strb r0, [r4]\n\
- ldr r0, _08023314 @ =gAbsentBattlerFlags\n\
- ldrb r1, [r0]\n\
- ldr r2, _08023318 @ =gBitTable\n\
- ldrb r3, [r4]\n\
- lsls r0, r3, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _080232F4\n\
- movs r0, 0x2\n\
- eors r3, r0\n\
- strb r3, [r4]\n\
-_080232F4:\n\
- movs r0, 0\n\
- movs r1, 0x2\n\
- bl BtlController_EmitLinkStandbyMsg\n\
- ldrb r0, [r4]\n\
- bl MarkBattlerForControllerExec\n\
-_08023302:\n\
- add sp, 0x4\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08023310: .4byte gActiveBattler\n\
-_08023314: .4byte gAbsentBattlerFlags\n\
-_08023318: .4byte gBitTable\n\
- .syntax divided");
-}
static void atk51_switchhandleorder(void)
{
@@ -8098,7 +5075,7 @@ static void atk51_switchhandleorder(void)
for (i = 0; i < gBattlersCount; i++)
{
if (gBattleBufferB[i][0] == 0x22)
- ewram16068arr(i) = gBattleBufferB[i][1];
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + i] = gBattleBufferB[i][1];
}
break;
case 1:
@@ -8107,15 +5084,15 @@ static void atk51_switchhandleorder(void)
break;
case 2:
gBattleCommunication[0] = gBattleBufferB[gActiveBattler][1];
- ewram16068arr(gActiveBattler) = gBattleBufferB[gActiveBattler][1];
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + gActiveBattler] = gBattleBufferB[gActiveBattler][1];
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- ewram1606Carr(0, gActiveBattler) &= 0xF;
- ewram1606Carr(0, gActiveBattler) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
- ewram1606Carr(1, gActiveBattler) = gBattleBufferB[gActiveBattler][3];
- ewram1606Carr(0, (gActiveBattler ^ 2)) &= (0xF0);
- ewram1606Carr(0, (gActiveBattler ^ 2)) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
- ewram1606Carr(2, (gActiveBattler ^ 2)) = gBattleBufferB[gActiveBattler][3];
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0] &= 0xF;
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 0] |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * gActiveBattler + 1] = gBattleBufferB[gActiveBattler][3];
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * (gActiveBattler ^ BIT_FLANK) + 0] &= (0xF0);
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * (gActiveBattler ^ BIT_FLANK) + 0] |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ gSharedMem[BSTRUCT_OFF(unk1606C) + 3 * (gActiveBattler ^ BIT_FLANK) + 2] = gBattleBufferB[gActiveBattler][3];
}
else
sub_8012258(gActiveBattler);
@@ -8186,7 +5163,7 @@ static void atk52_switchineffects(void)
for (i = 0; i < gBattlersCount; i++)
{
- *(HP_ON_SWITCHOUT + GetBattlerSide(i)) = gBattleMons[i].hp;
+ *((u16 *)&gSharedMem[BSTRUCT_OFF(HP_OnSwitchout) + 2 * GetBattlerSide(i)]) = gBattleMons[i].hp;
}
if (T2_READ_8(gBattlescriptCurrInstr + 1) == 5)
@@ -8294,8 +5271,8 @@ void atk59_handlelearnnewmove(void)
void sub_8023A80(void)
{
sub_802BBD4(0x18, 8, 0x1D, 0xD, 0);
- Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, BattleText_YesNo, 0x100, 0x19, 0x9);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
MenuCursor_Create814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
}
@@ -8476,330 +5453,62 @@ static void atk5C_hitanimation(void)
gBattlescriptCurrInstr += 2;
}
-#define MONEY_UNKNOWN ((*(u8*)(ewram_addr + 0x17000 + 0x94)))
-
-#ifdef NONMATCHING
static void atk5D_getmoneyreward(void)
{
- int i = 0;
- u8 r5 = 0;
+ u32 i = 0;
+ u8 lvl = 0;
u32 money_to_give;
+
+ const struct TrainerMonNoItemDefaultMoves * party1;
+ const struct TrainerMonNoItemCustomMoves * party2;
+ const struct TrainerMonItemDefaultMoves * party3;
+ const struct TrainerMonItemCustomMoves * party4;
+
if (gTrainerBattleOpponent == SECRET_BASE_OPPONENT)
{
- money_to_give = 2 * gBattleStruct->moneyMultiplier * MONEY_UNKNOWN;
+ money_to_give = 20 * eSecretBaseRecord->party.levels[0] * gBattleStruct->moneyMultiplier;
}
else
{
switch(gTrainers[gTrainerBattleOpponent].partyFlags)
{
case 0:
- {
- const struct TrainerMonNoItemDefaultMoves *data = gTrainers[gTrainerBattleOpponent].party.NoItemDefaultMoves;
- r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].level;
- }
- break;
- case 2:
- {
- const struct TrainerMonItemDefaultMoves *data = gTrainers[gTrainerBattleOpponent].party.ItemDefaultMoves;
- r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].level;
- }
+ {
+ party1 = gTrainers[gTrainerBattleOpponent].party.NoItemDefaultMoves;
+ lvl = party1[gTrainers[gTrainerBattleOpponent].partySize - 1].level;
+ }
break;
case 1:
- case 3:
- {
- const struct TrainerMonItemCustomMoves *data = gTrainers[gTrainerBattleOpponent].party.ItemCustomMoves;
- r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].level;
- }
- break;
- }
- for (; gTrainerMoney[i * 4] != 0xFF && gTrainerMoney[i * 4 + 1] != gTrainers[gTrainerBattleOpponent].trainerClass ; i++) {}
-
- money_to_give = (r5 << 2) * gBattleStruct->moneyMultiplier;
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- money_to_give = 2 * gTrainerMoney[i * 4 + 1] * money_to_give;
- else
- money_to_give = 1 * gTrainerMoney[i * 4 + 1] * money_to_give;
- }
-
- AddMoney(&gSaveBlock1.money, money_to_give);
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 1;
- gBattleTextBuff1[2] = 4;
- gBattleTextBuff1[3] = 5;
- T2_WRITE_32(&gBattleTextBuff1[4], money_to_give);
- gBattleTextBuff1[8] = 0xFF;
-
- gBattlescriptCurrInstr += 1;
-}
-#else
-NAKED
-static void atk5D_getmoneyreward(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- movs r6, 0\n\
- movs r5, 0\n\
- ldr r0, _08024048 @ =gTrainerBattleOpponent\n\
- ldrh r2, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 3\n\
- cmp r2, r1\n\
- bne _08024058\n\
- ldr r0, _0802404C @ =gSharedMem + 0x17000\n\
- adds r1, r0, 0\n\
- adds r1, 0x94\n\
- ldrb r2, [r1]\n\
- ldr r1, _08024050 @ =0xfffff056\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r4, r2, 0\n\
- muls r4, r0\n\
- ldr r0, _08024054 @ =gSaveBlock1 + 0x490\n\
- mov r8, r0\n\
- b _08024140\n\
- .align 2, 0\n\
-_08024048: .4byte gTrainerBattleOpponent\n\
-_0802404C: .4byte gSharedMem + 0x17000\n\
-_08024050: .4byte 0xfffff056\n\
-_08024054: .4byte gSaveBlock1 + 0x490\n\
-_08024058:\n\
- ldr r2, _08024074 @ =gTrainers\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r3, r0, 3\n\
- adds r4, r3, r2\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- beq _080240AE\n\
- cmp r1, 0x1\n\
- bgt _08024078\n\
- cmp r1, 0\n\
- beq _08024082\n\
- b _080240C4\n\
- .align 2, 0\n\
-_08024074: .4byte gTrainers\n\
-_08024078:\n\
- cmp r1, 0x2\n\
- beq _08024098\n\
- cmp r1, 0x3\n\
- beq _080240AE\n\
- b _080240C4\n\
-_08024082:\n\
- adds r0, r2, 0\n\
- adds r0, 0x24\n\
- adds r0, r3, r0\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- subs r0, 0x8\n\
- b _080240C2\n\
-_08024098:\n\
- adds r0, r2, 0\n\
- adds r0, 0x24\n\
- adds r0, r3, r0\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- subs r0, 0x8\n\
- b _080240C2\n\
-_080240AE:\n\
- adds r0, r2, 0\n\
- adds r0, 0x24\n\
- adds r0, r3, r0\n\
- ldr r1, [r0]\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- subs r0, 0x10\n\
-_080240C2:\n\
- ldrb r5, [r0, 0x2]\n\
-_080240C4:\n\
- ldr r0, _08024120 @ =gTrainerMoney\n\
- lsls r1, r6, 2\n\
- adds r3, r1, r0\n\
- ldrb r1, [r3]\n\
- mov r12, r0\n\
- lsls r4, r5, 2\n\
- ldr r5, _08024124 @ =gSharedMem\n\
- ldr r7, _08024128 @ =gBattleTypeFlags\n\
- ldr r0, _0802412C @ =gSaveBlock1 + 0x490\n\
- mov r8, r0\n\
- cmp r1, 0xFF\n\
- beq _080240FE\n\
- ldr r2, _08024130 @ =gTrainers\n\
- ldr r0, _08024134 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- ldrb r2, [r0, 0x1]\n\
- adds r1, r3, 0\n\
-_080240EE:\n\
- ldrb r0, [r1]\n\
- cmp r0, r2\n\
- beq _080240FE\n\
- adds r1, 0x4\n\
- adds r6, 0x1\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xFF\n\
- bne _080240EE\n\
-_080240FE:\n\
- ldr r1, _08024138 @ =0x00016056\n\
- adds r0, r5, r1\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0\n\
- muls r3, r0\n\
- lsls r0, r6, 2\n\
- add r0, r12\n\
- ldrb r2, [r0, 0x1]\n\
- ldrh r1, [r7]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0802413C\n\
- lsls r0, r2, 1\n\
- adds r4, r3, 0\n\
- muls r4, r0\n\
- b _08024140\n\
- .align 2, 0\n\
-_08024120: .4byte gTrainerMoney\n\
-_08024124: .4byte gSharedMem\n\
-_08024128: .4byte gBattleTypeFlags\n\
-_0802412C: .4byte gSaveBlock1 + 0x490\n\
-_08024130: .4byte gTrainers\n\
-_08024134: .4byte gTrainerBattleOpponent\n\
-_08024138: .4byte 0x00016056\n\
-_0802413C:\n\
- adds r4, r3, 0\n\
- muls r4, r2\n\
-_08024140:\n\
- mov r0, r8\n\
- adds r1, r4, 0\n\
- bl AddMoney\n\
- ldr r1, _0802418C @ =gBattleTextBuff1\n\
- movs r0, 0xFD\n\
- strb r0, [r1]\n\
- movs r0, 0x1\n\
- strb r0, [r1, 0x1]\n\
- movs r0, 0x4\n\
- strb r0, [r1, 0x2]\n\
- movs r0, 0x5\n\
- strb r0, [r1, 0x3]\n\
- strb r4, [r1, 0x4]\n\
- movs r0, 0xFF\n\
- lsls r0, 8\n\
- ands r0, r4\n\
- lsrs r0, 8\n\
- strb r0, [r1, 0x5]\n\
- movs r0, 0xFF\n\
- lsls r0, 16\n\
- ands r0, r4\n\
- lsrs r0, 16\n\
- strb r0, [r1, 0x6]\n\
- lsrs r0, r4, 24\n\
- strb r0, [r1, 0x7]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x8]\n\
- ldr r1, _08024190 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r1]\n\
- adds r0, 0x1\n\
- str r0, [r1]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0802418C: .4byte gBattleTextBuff1\n\
-_08024190: .4byte gBattlescriptCurrInstr\n\
- .syntax divided");
-}
-#endif //NONMATCHING
-
-/*
-static u32 GetTrainerMoneyToGive(u16 trainerId)
-{
- u32 i = 0;
- u32 lastMonLevel = 0;
- u32 moneyReward = 0;
-
- if (trainerId == SECRET_BASE_OPPONENT)
- {
- moneyReward = 20 * eSecretBaseRecord->partyLevels[0] * gBattleStruct->moneyMultiplier;
- }
- else
- {
- switch (gTrainers[trainerId].partyFlags)
{
- case 0:
- {
- const struct TrainerMonNoItemDefaultMoves *party = gTrainers[trainerId].party.NoItemDefaultMoves;
- lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
- }
- break;
- case F_TRAINER_PARTY_CUSTOM_MOVESET:
- {
- const struct TrainerMonNoItemCustomMoves *party = gTrainers[trainerId].party.NoItemCustomMoves;
- lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
- }
+ party2 = gTrainers[gTrainerBattleOpponent].party.NoItemCustomMoves;
+ lvl = party2[gTrainers[gTrainerBattleOpponent].partySize - 1].level;
+ }
break;
- case F_TRAINER_PARTY_HELD_ITEM:
- {
- const struct TrainerMonItemDefaultMoves *party = gTrainers[trainerId].party.ItemDefaultMoves;
- lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
- }
+ case 2:
+ {
+ party3 = gTrainers[gTrainerBattleOpponent].party.ItemDefaultMoves;
+ lvl = party3[gTrainers[gTrainerBattleOpponent].partySize - 1].level;
+ }
break;
- case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
- {
- const struct TrainerMonItemCustomMoves *party = gTrainers[trainerId].party.ItemCustomMoves;
- lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
- }
+ case 3:
+ {
+ party4 = gTrainers[gTrainerBattleOpponent].party.ItemCustomMoves;
+ lvl = party4[gTrainers[gTrainerBattleOpponent].partySize - 1].level;
+ }
break;
}
-
- for (; gTrainerMoneyTable[i].classId != 0xFF; i++)
- {
- if (gTrainerMoneyTable[i].classId == gTrainers[trainerId].trainerClass)
+ for (; gTrainerMoney[i].trainerClass != 0xFF; i++) {
+ if (gTrainerMoney[i].trainerClass == gTrainers[gTrainerBattleOpponent].trainerClass)
break;
}
-
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * 2 * gTrainerMoneyTable[i].value;
- else
- moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value;
+ party4 = gTrainers[gTrainerBattleOpponent].party.ItemCustomMoves; // Needed to match. Has no effect.
+ money_to_give = 4 * lvl * gBattleStruct->moneyMultiplier * (gBattleTypeFlags & BATTLE_TYPE_DOUBLE ? 2 : 1) * gTrainerMoney[i].baseMoney;
}
- return moneyReward;
-}
-
-static void atk5D_getmoneyreward(void)
-{
- u32 moneyReward = GetTrainerMoneyToGive(gTrainerBattleOpponent_A);
- if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
- moneyReward += GetTrainerMoneyToGive(gTrainerBattleOpponent_B);
-
- AddMoney(&gSaveBlock1Ptr->money, moneyReward);
-
- PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward)
-
- gBattlescriptCurrInstr++;
+ AddMoney(&gSaveBlock1.money, money_to_give);
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, money_to_give);
+ gBattlescriptCurrInstr += 1;
}
-*/
static void atk5E(void)
{
@@ -9042,7 +5751,7 @@ static void atk69_adjustsetdamage(void) //literally a copy of atk07 except there
void atk6A_removeitem(void)
{
gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1));
- USED_HELD_ITEMS(gActiveBattler) = gBattleMons[gActiveBattler].item;
+ *((u16 *)&gSharedMem[BSTRUCT_OFF(usedHeldItems) + gActiveBattler * 2]) = gBattleMons[gActiveBattler].item;
gBattleMons[gActiveBattler].item = 0;
BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
@@ -9060,435 +5769,147 @@ static void atk6B_atknameinbuff1(void)
gBattlescriptCurrInstr++;
}
-#ifdef NONMATCHING
extern const u8 BattleText_Format2[];
+extern const u8 BattleText_Dash[];
+extern const u8 BattleText_Plus[];
+extern const u8 *const gUnknown_0840165C[];
-// TODO: finish
static void atk6C_drawlvlupbox(void)
{
- UNUSED u8 r1 = 0;
- UNUSED u8 r7 = 0;
+ s16 r1 = 0;
+ s16 r7 = 0;
+ int i;
+ u8 * r5;
+ bool32 sign;
switch (gBattleStruct->atk6C_statetracker)
{
case 0:
- sub_802BBD4(0xB, 0, 0x1D, 0x7, r1);
- StringCopy(gStringVar4, BattleText_Format2);
-
+ sub_802BBD4(0xB, 0, 0x1D, 0x7, 0);
+ r5 = StringCopy(gStringVar4, BattleText_Format2);
+ for (i = 0; i < 6; i++)
+ {
+ sign = FALSE;
+ r5 = StringAppend(r5, gUnknown_0840165C[i]);
+ r1 = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], gLevelUpStatBoxStats[i]);
+ switch (i)
+ {
+ case 0:
+ r7 = r1 - gBattleResources_statsBeforeLvlUp->hp;
+ break;
+ case 1:
+ r7 = r1 - gBattleResources_statsBeforeLvlUp->spAtk;
+ break;
+ case 2:
+ r7 = r1 - gBattleResources_statsBeforeLvlUp->atk;
+ break;
+ case 3:
+ r7 = r1 - gBattleResources_statsBeforeLvlUp->spDef;
+ break;
+ case 4:
+ r7 = r1 - gBattleResources_statsBeforeLvlUp->def;
+ break;
+ case 5:
+ r7 = r1 - gBattleResources_statsBeforeLvlUp->spd;
+ break;
+ }
+ if (r7 < 0)
+ {
+ r7 = -r7;
+ sign++;
+ }
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_CLEAR_TO;
+ r5[2] = ((i & 1) * 9 + 5) * 8 + 6;
+ r5 += 3;
+ if (sign)
+ r5 = StringCopy(r5, BattleText_Dash);
+ else
+ r5 = StringCopy(r5, BattleText_Plus);
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ r5[2] = 6;
+ r5 += 3;
+ r5 = ConvertIntToDecimalStringN(r5, r7, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ r5[2] = 0;
+ r5 += 3;
+ if (i & 1)
+ {
+ r5[0] = CHAR_NEWLINE;
+ r5[1] = EOS;
+ r5 += 1;
+ }
+ else
+ {
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_CLEAR;
+ r5[2] = 8;
+ r5 += 3;
+ *r5 = EOS;
+ }
+ }
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gStringVar4, 0x100, 12, 1);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
+ gBattleStruct->atk6C_statetracker++;
+ break;
+ case 1:
+ if (gMain.newKeys != 0)
+ {
+ PlaySE(SE_SELECT);
+ r5 = StringCopy(gStringVar4, BattleText_Format2);
+ for (i = 0; i < 6; i++)
+ {
+ sign = FALSE;
+ r5 = StringAppend(r5, gUnknown_0840165C[i]);
+ r1 = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], gLevelUpStatBoxStats[i]);
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_CLEAR_TO;
+ r5[2] = ((i & 1) * 9 + 5) * 8 + 6;
+ r5 += 3;
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ r5[2] = 6;
+ r5 += 3;
+ r5 = ConvertIntToDecimalStringN(r5, r1, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_MIN_LETTER_SPACING;
+ r5[2] = 0;
+ r5 += 3;
+ if (i & 1)
+ {
+ r5[0] = CHAR_NEWLINE;
+ r5[1] = EOS;
+ r5 += 1;
+ }
+ else
+ {
+ r5[0] = EXT_CTRL_CODE_BEGIN;
+ r5[1] = EXT_CTRL_CODE_CLEAR;
+ r5[2] = 8;
+ r5 += 3;
+ *r5 = EOS;
+ }
+ }
+ Text_InitWindow(&gWindowTemplate_Contest_MoveDescription, gStringVar4, 0x100, 12, 1);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
+ gBattleStruct->atk6C_statetracker++;
+ }
+ break;
+ case 2:
+ if (gMain.newKeys != 0)
+ {
+ PlaySE(SE_SELECT);
+ sub_802BBD4(11, 0, 29, 7, TRUE);
+ gBattleStruct->atk6C_statetracker++;
+ }
+ break;
+ case 3:
+ gBattlescriptCurrInstr++;
+ break;
}
}
-#else
-NAKED
-static void atk6C_drawlvlupbox(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- movs r1, 0\n\
- movs r7, 0\n\
- ldr r0, _08024928 @ =gSharedMem\n\
- mov r10, r0\n\
- ldr r4, _0802492C @ =0x0001609c\n\
- add r4, r10\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x1\n\
- bne _0802491C\n\
- b _08024AF4\n\
-_0802491C:\n\
- cmp r0, 0x1\n\
- bgt _08024930\n\
- cmp r0, 0\n\
- beq _0802493E\n\
- b _08024C38\n\
- .align 2, 0\n\
-_08024928: .4byte gSharedMem\n\
-_0802492C: .4byte 0x0001609c\n\
-_08024930:\n\
- cmp r0, 0x2\n\
- bne _08024936\n\
- b _08024C04\n\
-_08024936:\n\
- cmp r0, 0x3\n\
- bne _0802493C\n\
- b _08024C30\n\
-_0802493C:\n\
- b _08024C38\n\
-_0802493E:\n\
- str r1, [sp]\n\
- movs r0, 0xB\n\
- movs r1, 0\n\
- movs r2, 0x1D\n\
- movs r3, 0x7\n\
- bl sub_802BBD4\n\
- ldr r0, _0802499C @ =gStringVar4\n\
- ldr r1, _080249A0 @ =BattleText_Format2\n\
- bl StringCopy\n\
- adds r5, r0, 0\n\
- movs r1, 0\n\
- mov r8, r1\n\
-_0802495A:\n\
- movs r2, 0\n\
- mov r9, r2\n\
- ldr r0, _080249A4 @ =gUnknown_0840165C\n\
- mov r1, r8\n\
- lsls r4, r1, 2\n\
- adds r0, r4, r0\n\
- ldr r1, [r0]\n\
- adds r0, r5, 0\n\
- bl StringAppend\n\
- adds r5, r0, 0\n\
- ldr r0, _080249A8 @ =gSharedMem\n\
- ldr r2, _080249AC @ =0x00016018\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- movs r0, 0x64\n\
- muls r0, r1\n\
- ldr r1, _080249B0 @ =gPlayerParty\n\
- adds r0, r1\n\
- ldr r1, _080249B4 @ =gLevelUpStatBoxStats\n\
- add r1, r8\n\
- ldrb r1, [r1]\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r1, r0, 16\n\
- mov r0, r8\n\
- cmp r0, 0x5\n\
- bhi _08024A1A\n\
- ldr r0, _080249B8 @ =_080249BC\n\
- adds r0, r4, r0\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_0802499C: .4byte gStringVar4\n\
-_080249A0: .4byte BattleText_Format2\n\
-_080249A4: .4byte gUnknown_0840165C\n\
-_080249A8: .4byte gSharedMem\n\
-_080249AC: .4byte 0x00016018\n\
-_080249B0: .4byte gPlayerParty\n\
-_080249B4: .4byte gLevelUpStatBoxStats\n\
-_080249B8: .4byte _080249BC\n\
- .align 2, 0\n\
-_080249BC:\n\
- .4byte _080249D4\n\
- .4byte _080249E0\n\
- .4byte _080249EC\n\
- .4byte _080249F8\n\
- .4byte _08024A04\n\
- .4byte _08024A10\n\
-_080249D4:\n\
- ldr r0, _080249DC @ =gSharedMem + 0x17180\n\
- ldrh r0, [r0]\n\
- b _08024A14\n\
- .align 2, 0\n\
-_080249DC: .4byte gSharedMem + 0x17180\n\
-_080249E0:\n\
- ldr r0, _080249E8 @ =gSharedMem + 0x17180\n\
- ldrh r0, [r0, 0x8]\n\
- b _08024A14\n\
- .align 2, 0\n\
-_080249E8: .4byte gSharedMem + 0x17180\n\
-_080249EC:\n\
- ldr r0, _080249F4 @ =gSharedMem + 0x17180\n\
- ldrh r0, [r0, 0x2]\n\
- b _08024A14\n\
- .align 2, 0\n\
-_080249F4: .4byte gSharedMem + 0x17180\n\
-_080249F8:\n\
- ldr r0, _08024A00 @ =gSharedMem + 0x17180\n\
- ldrh r0, [r0, 0xA]\n\
- b _08024A14\n\
- .align 2, 0\n\
-_08024A00: .4byte gSharedMem + 0x17180\n\
-_08024A04:\n\
- ldr r0, _08024A0C @ =gSharedMem + 0x17180\n\
- ldrh r0, [r0, 0x4]\n\
- b _08024A14\n\
- .align 2, 0\n\
-_08024A0C: .4byte gSharedMem + 0x17180\n\
-_08024A10:\n\
- ldr r0, _08024A54 @ =gSharedMem + 0x17180\n\
- ldrh r0, [r0, 0x6]\n\
-_08024A14:\n\
- subs r0, r1, r0\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
-_08024A1A:\n\
- lsls r0, r7, 16\n\
- asrs r0, 16\n\
- cmp r0, 0\n\
- bge _08024A2C\n\
- negs r0, r0\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- movs r1, 0x1\n\
- add r9, r1\n\
-_08024A2C:\n\
- movs r0, 0xFC\n\
- strb r0, [r5]\n\
- movs r0, 0x13\n\
- strb r0, [r5, 0x1]\n\
- movs r1, 0x1\n\
- mov r2, r8\n\
- ands r1, r2\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- adds r0, 0x5\n\
- lsls r0, 3\n\
- adds r0, 0x6\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- mov r0, r9\n\
- cmp r0, 0\n\
- beq _08024A5C\n\
- ldr r1, _08024A58 @ =BattleText_Dash\n\
- b _08024A5E\n\
- .align 2, 0\n\
-_08024A54: .4byte gSharedMem + 0x17180\n\
-_08024A58: .4byte BattleText_Dash\n\
-_08024A5C:\n\
- ldr r1, _08024AA4 @ =BattleText_Plus\n\
-_08024A5E:\n\
- adds r0, r5, 0\n\
- bl StringCopy\n\
- adds r5, r0, 0\n\
- movs r6, 0xFC\n\
- strb r6, [r5]\n\
- movs r4, 0x14\n\
- strb r4, [r5, 0x1]\n\
- movs r0, 0x6\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- lsls r1, r7, 16\n\
- asrs r1, 16\n\
- adds r0, r5, 0\n\
- movs r2, 0x1\n\
- movs r3, 0x2\n\
- bl ConvertIntToDecimalStringN\n\
- adds r5, r0, 0\n\
- strb r6, [r5]\n\
- strb r4, [r5, 0x1]\n\
- movs r0, 0\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- movs r0, 0x1\n\
- mov r1, r8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08024AA8\n\
- movs r0, 0xFE\n\
- strb r0, [r5]\n\
- movs r0, 0xFF\n\
- strb r0, [r5, 0x1]\n\
- adds r5, 0x1\n\
- b _08024AB8\n\
- .align 2, 0\n\
-_08024AA4: .4byte BattleText_Plus\n\
-_08024AA8:\n\
- strb r6, [r5]\n\
- movs r0, 0x11\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x8\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- movs r0, 0xFF\n\
- strb r0, [r5]\n\
-_08024AB8:\n\
- movs r2, 0x1\n\
- add r8, r2\n\
- mov r0, r8\n\
- cmp r0, 0x5\n\
- bgt _08024AC4\n\
- b _0802495A\n\
-_08024AC4:\n\
- ldr r4, _08024AE4 @ =gUnknown_03004210\n\
- ldr r1, _08024AE8 @ =gStringVar4\n\
- adds r2, 0xFF\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- adds r0, r4, 0\n\
- movs r3, 0xC\n\
- bl Text_InitWindow\n\
- adds r0, r4, 0\n\
- bl Text_PrintWindow8002F44\n\
- ldr r1, _08024AEC @ =gSharedMem\n\
- ldr r2, _08024AF0 @ =0x0001609c\n\
- adds r1, r2\n\
- b _08024BEA\n\
- .align 2, 0\n\
-_08024AE4: .4byte gUnknown_03004210\n\
-_08024AE8: .4byte gStringVar4\n\
-_08024AEC: .4byte gSharedMem\n\
-_08024AF0: .4byte 0x0001609c\n\
-_08024AF4:\n\
- ldr r0, _08024B94 @ =gMain\n\
- ldrh r0, [r0, 0x2E]\n\
- cmp r0, 0\n\
- bne _08024AFE\n\
- b _08024C38\n\
-_08024AFE:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- ldr r0, _08024B98 @ =gStringVar4\n\
- ldr r1, _08024B9C @ =BattleText_Format2\n\
- bl StringCopy\n\
- adds r5, r0, 0\n\
- movs r0, 0\n\
- mov r8, r0\n\
- mov r9, r0\n\
- movs r6, 0xFC\n\
- movs r7, 0x14\n\
- ldr r1, _08024BA0 @ =0x00016018\n\
- add r10, r1\n\
-_08024B1C:\n\
- ldr r1, _08024BA4 @ =gUnknown_0840165C\n\
- mov r2, r8\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- adds r0, r5, 0\n\
- bl StringAppend\n\
- adds r5, r0, 0\n\
- mov r0, r10\n\
- ldrb r1, [r0]\n\
- movs r0, 0x64\n\
- muls r0, r1\n\
- ldr r1, _08024BA8 @ =gPlayerParty\n\
- adds r0, r1\n\
- ldr r1, _08024BAC @ =gLevelUpStatBoxStats\n\
- add r1, r8\n\
- ldrb r1, [r1]\n\
- bl GetMonData\n\
- adds r1, r0, 0\n\
- strb r6, [r5]\n\
- movs r0, 0x13\n\
- strb r0, [r5, 0x1]\n\
- movs r4, 0x1\n\
- mov r2, r8\n\
- ands r4, r2\n\
- lsls r0, r4, 3\n\
- adds r0, r4\n\
- adds r0, 0x5\n\
- lsls r0, 3\n\
- adds r0, 0x6\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- strb r6, [r5]\n\
- strb r7, [r5, 0x1]\n\
- movs r0, 0x6\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- adds r0, r5, 0\n\
- movs r2, 0x1\n\
- movs r3, 0x3\n\
- bl ConvertIntToDecimalStringN\n\
- adds r5, r0, 0\n\
- strb r6, [r5]\n\
- strb r7, [r5, 0x1]\n\
- mov r0, r9\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- cmp r4, 0\n\
- beq _08024BB0\n\
- movs r0, 0xFE\n\
- strb r0, [r5]\n\
- movs r0, 0xFF\n\
- strb r0, [r5, 0x1]\n\
- adds r5, 0x1\n\
- b _08024BC0\n\
- .align 2, 0\n\
-_08024B94: .4byte gMain\n\
-_08024B98: .4byte gStringVar4\n\
-_08024B9C: .4byte BattleText_Format2\n\
-_08024BA0: .4byte 0x00016018\n\
-_08024BA4: .4byte gUnknown_0840165C\n\
-_08024BA8: .4byte gPlayerParty\n\
-_08024BAC: .4byte gLevelUpStatBoxStats\n\
-_08024BB0:\n\
- strb r6, [r5]\n\
- movs r0, 0x11\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x8\n\
- strb r0, [r5, 0x2]\n\
- adds r5, 0x3\n\
- movs r0, 0xFF\n\
- strb r0, [r5]\n\
-_08024BC0:\n\
- movs r1, 0x1\n\
- add r8, r1\n\
- mov r2, r8\n\
- cmp r2, 0x5\n\
- ble _08024B1C\n\
- ldr r4, _08024BF4 @ =gUnknown_03004210\n\
- ldr r1, _08024BF8 @ =gStringVar4\n\
- movs r2, 0x80\n\
- lsls r2, 1\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- adds r0, r4, 0\n\
- movs r3, 0xC\n\
- bl Text_InitWindow\n\
- adds r0, r4, 0\n\
- bl Text_PrintWindow8002F44\n\
- ldr r1, _08024BFC @ =gSharedMem\n\
- ldr r0, _08024C00 @ =0x0001609c\n\
- adds r1, r0\n\
-_08024BEA:\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- b _08024C38\n\
- .align 2, 0\n\
-_08024BF4: .4byte gUnknown_03004210\n\
-_08024BF8: .4byte gStringVar4\n\
-_08024BFC: .4byte gSharedMem\n\
-_08024C00: .4byte 0x0001609c\n\
-_08024C04:\n\
- ldr r0, _08024C2C @ =gMain\n\
- ldrh r0, [r0, 0x2E]\n\
- cmp r0, 0\n\
- beq _08024C38\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- movs r0, 0xB\n\
- movs r1, 0\n\
- movs r2, 0x1D\n\
- movs r3, 0x7\n\
- bl sub_802BBD4\n\
- ldrb r0, [r4]\n\
- adds r0, 0x1\n\
- strb r0, [r4]\n\
- b _08024C38\n\
- .align 2, 0\n\
-_08024C2C: .4byte gMain\n\
-_08024C30:\n\
- ldr r1, _08024C48 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r1]\n\
- adds r0, 0x1\n\
- str r0, [r1]\n\
-_08024C38:\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08024C48: .4byte gBattlescriptCurrInstr\n\
- .syntax divided");
-}
-
-#endif // NONMATCHING
-
static void atk6D_resetsentmonsvalue(void)
{
ResetSentPokesToOpponentValue();
@@ -9574,7 +5995,7 @@ static void atk74_hpthresholds2(void)
{
gActiveBattler = GetBattlerForBattleScript(T2_READ_8(gBattlescriptCurrInstr + 1));
opposing_bank = gActiveBattler ^ 1;
- hp_switchout = ewram160BCarr(GetBattlerSide(opposing_bank)); //gBattleStruct->HP_OnSwitchout[GetBattlerSide(opposing_bank)];
+ hp_switchout = gSharedMem[BSTRUCT_OFF(HP_OnSwitchout) + GetBattlerSide(opposing_bank) * 2];
result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout;
if (gBattleMons[opposing_bank].hp >= hp_switchout)
@@ -9648,7 +6069,7 @@ static void atk76_various(void)
else
gActiveBattler = 2;
- choiced_move = CHOICED_MOVE(gActiveBattler);
+ choiced_move = &gBattleStruct->choicedMove[gActiveBattler];
for (i = 0; i < 4; i++)
{
if (gBattleMons[gActiveBattler].moves[i] == *choiced_move)
@@ -9666,7 +6087,7 @@ static void atk76_various(void)
static void atk77_setprotectlike(void) //protect and endure
{
bool8 not_last_turn = 1;
- u16 last_move = gUnknown_02024C4C[gBattlerAttacker];
+ u16 last_move = gLastResultingMoves[gBattlerAttacker];
if (last_move != MOVE_PROTECT && last_move != MOVE_DETECT && last_move != MOVE_ENDURE)
gDisableStructs[gBattlerAttacker].protectUses = 0;
@@ -9788,9 +6209,9 @@ static void atk7B_tryhealhalfhealth(void)
static void atk7C_trymirrormove(void)
{
- u16 r7 = ewram160ACarr2(0, gBattlerAttacker) | (ewram160ACarr2(1, gBattlerAttacker) << 8);
- u16 r6 = ewram16100arr2(0, gBattlerAttacker) | (ewram16100arr2(1, gBattlerAttacker) << 8);
- u16 r5 = ewram16100arr2(2, gBattlerAttacker) | (ewram16100arr2(3, gBattlerAttacker) << 8);
+ u16 r7 = gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * gBattlerAttacker + 0] | (gSharedMem[BSTRUCT_OFF(lastTakenMove) + 2 * gBattlerAttacker + 1] << 8);
+ u16 r6 = gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gBattlerAttacker + 0] | (gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gBattlerAttacker + 1] << 8);
+ u16 r5 = gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gBattlerAttacker + 2] | (gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 4 * gBattlerAttacker + 3] << 8);
if (r7 != 0 && r7 != 0xFFFF)
{
@@ -10290,12 +6711,7 @@ static void atk8D_setmultihitcounter(void)
static void atk8E_initmultihitstring(void)
{
- ewram160E0(0) = 0xFD;
- ewram160E0(1) = 1;
- ewram160E0(2) = 1;
- ewram160E0(3) = 1;
- ewram160E0(4) = 0;
- ewram160E0(5) = 0xFF;
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleStruct->unk160E0, 1, 0);
gBattlescriptCurrInstr++;
}
@@ -10303,7 +6719,7 @@ static bool8 sub_80264C0(void)
{
if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
- ewram16064arr(gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ gSharedMem[BSTRUCT_OFF(unk16064) + gBattlerTarget] = gBattlerPartyIndexes[gBattlerTarget];
}
else
{
@@ -10313,7 +6729,7 @@ static bool8 sub_80264C0(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
return 0;
}
- ewram16064arr(gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ gSharedMem[BSTRUCT_OFF(unk16064) + gBattlerTarget] = gBattlerPartyIndexes[gBattlerTarget];
}
gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
return 1;
@@ -10394,7 +6810,7 @@ static void atk8F_forcerandomswitch(void)
} while (i == gBattlerPartyIndexes[gBattlerTarget] || !MON_CAN_BATTLE(&party[i]));
}
}
- ewram16068arr(gBattlerTarget) = i;
+ gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + gBattlerTarget] = i;
if (!IsLinkDoubleBattle())
sub_8012258(gBattlerTarget);
sub_8094B6C(gBattlerTarget, i, 0);
@@ -11200,201 +7616,50 @@ static void atk9D_mimicattackcopy(void)
}
}
-#if DEBUG
-NAKED
-static void atk9E_metronome(void)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- ldr r6, ._3076 @ gBattlerAttacker\n\
- ldrb r2, [r6]\n\
- lsl r1, r2, #0x1\n\
- ldr r0, ._3076 + 4 @ \n\
- add r3, r1, r0\n\
- ldr r5, ._3076 + 8 @ \n\
- mov r4, #0x58\n\
- add r0, r2, #0\n\
- mul r0, r0, r4\n\
- add r1, r0, r5\n\
- ldrh r0, [r1, #0xe]\n\
- cmp r0, #0\n\
- bne ._3071 @cond_branch\n\
- ldrh r2, [r1, #0x10]\n\
- cmp r2, #0\n\
- beq ._3071 @cond_branch\n\
- ldrh r0, [r1, #0x12]\n\
- cmp r0, #0\n\
- beq ._3071 @cond_branch\n\
- ldrh r0, [r3]\n\
- cmp r0, #0\n\
- bne ._3072 @cond_branch\n\
- strh r2, [r3]\n\
-._3072:\n\
- ldr r1, ._3076 + 12 @ \n\
- ldrh r0, [r3]\n\
- strh r0, [r1]\n\
- ldrb r0, [r6]\n\
- mul r0, r0, r4\n\
- add r0, r0, r5\n\
- ldrh r5, [r0, #0x10]\n\
- ldrh r2, [r0, #0x12]\n\
- add r7, r1, #0\n\
- cmp r5, r2\n\
- bcs ._3073 @cond_branch\n\
- ldrh r0, [r3]\n\
- cmp r0, r2\n\
- beq ._3074 @cond_branch\n\
- add r0, r0, #0x1\n\
- b ._3079\n\
-._3077:\n\
- .align 2, 0\n\
-._3076:\n\
- .word gBattlerAttacker\n\
- .word +0x20160b4\n\
- .word gBattleMons\n\
- .word gCurrentMove\n\
-._3073:\n\
- ldrh r4, [r3]\n\
- add r1, r4, #0\n\
- mov r0, #0xb1\n\
- lsl r0, r0, #0x1\n\
- cmp r1, r0\n\
- bne ._3078 @cond_branch\n\
- mov r0, #0x1\n\
- b ._3079\n\
-._3078:\n\
- cmp r1, r2\n\
- bne ._3080 @cond_branch\n\
-._3074:\n\
- strh r5, [r3]\n\
- b ._3081\n\
-._3080:\n\
- add r0, r4, #1\n\
-._3079:\n\
- strh r0, [r3]\n\
-._3081:\n\
- ldr r4, ._3083 @ gHitMarker\n\
- ldr r2, [r4]\n\
- ldr r0, ._3083 + 4 @ 0xfffffbff\n\
- and r2, r2, r0\n\
- str r2, [r4]\n\
- ldr r6, ._3083 + 8 @ gBattlescriptCurrInstr\n\
- ldr r5, ._3083 + 12 @ gBattleScriptsForMoveEffects\n\
- ldr r3, ._3083 + 16 @ gBattleMoves\n\
- ldrh r1, [r7]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r3\n\
- ldrb r0, [r0]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r5\n\
- ldr r0, [r0]\n\
- str r0, [r6]\n\
- mov r0, #0x80\n\
- lsl r0, r0, #0x4\n\
- orr r2, r2, r0\n\
- str r2, [r4]\n\
- ldrh r0, [r7]\n\
- b ._3082\n\
-._3084:\n\
- .align 2, 0\n\
-._3083:\n\
- .word gHitMarker\n\
- .word 0xfffffbff\n\
- .word gBattlescriptCurrInstr\n\
- .word gBattleScriptsForMoveEffects\n\
- .word gBattleMoves\n\
-._3071:\n\
- ldr r7, ._3090 @ gCurrentMove\n\
- mov r6, #0xb1\n\
- lsl r6, r6, #0x1\n\
- ldr r5, ._3090 + 4 @ sMovesForbiddenToCopy\n\
- ldr r0, ._3090 + 8 @ gBattlescriptCurrInstr\n\
- mov r8, r0\n\
-._3089:\n\
- bl Random\n\
- ldr r2, ._3090 + 12 @ 0x1ff\n\
- add r1, r2, #0\n\
- and r0, r0, r1\n\
- add r0, r0, #0x1\n\
- strh r0, [r7]\n\
- cmp r0, r6\n\
- bhi ._3089 @cond_branch\n\
- mov r0, #0x3\n\
-._3086:\n\
- sub r0, r0, #0x1\n\
- cmp r0, #0\n\
- bge ._3086 @cond_branch\n\
- ldr r4, ._3090 @ gCurrentMove\n\
- ldrh r2, [r4]\n\
- ldr r3, ._3090 + 16 @ 0xffff\n\
- sub r0, r5, #2\n\
-._3088:\n\
- add r0, r0, #0x2\n\
- ldrh r1, [r0]\n\
- cmp r1, r2\n\
- beq ._3087 @cond_branch\n\
- cmp r1, r3\n\
- bne ._3088 @cond_branch\n\
-._3087:\n\
- ldr r0, ._3090 + 16 @ 0xffff\n\
- cmp r1, r0\n\
- bne ._3089 @cond_branch\n\
- ldr r2, ._3090 + 20 @ gHitMarker\n\
- ldr r0, [r2]\n\
- ldr r1, ._3090 + 24 @ 0xfffffbff\n\
- and r0, r0, r1\n\
- str r0, [r2]\n\
- ldr r3, ._3090 + 28 @ gBattleScriptsForMoveEffects\n\
- ldr r2, ._3090 + 32 @ gBattleMoves\n\
- ldrh r1, [r4]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r2\n\
- ldrb r0, [r0]\n\
- lsl r0, r0, #0x2\n\
- add r0, r0, r3\n\
- ldr r0, [r0]\n\
- mov r1, r8\n\
- str r0, [r1]\n\
- ldrh r0, [r4]\n\
-._3082:\n\
- mov r1, #0x0\n\
- bl GetMoveTarget\n\
- ldr r1, ._3090 + 36 @ gBattlerTarget\n\
- strb r0, [r1]\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4, r5, r6, r7}\n\
- pop {r0}\n\
- bx r0\n\
-._3091:\n\
- .align 2, 0\n\
-._3090:\n\
- .word gCurrentMove\n\
- .word sMovesForbiddenToCopy\n\
- .word gBattlescriptCurrInstr\n\
- .word 0x1ff\n\
- .word 0xffff\n\
- .word gHitMarker\n\
- .word 0xfffffbff\n\
- .word gBattleScriptsForMoveEffects\n\
- .word gBattleMoves\n\
- .word gBattlerTarget");
-}
-#else
-static void atk9E_metronome(void)
+void atk9E_metronome(void)
{
+#if DEBUG
+ u16 * r3 = (u16 *)&gSharedMem[BSTRUCT_OFF(lastTakenMove) + 8 + (2 * gBattlerAttacker)];
+ if (
+ gBattleMons[gBattlerAttacker].moves[1] == MOVE_NONE
+ && gBattleMons[gBattlerAttacker].moves[2] != MOVE_NONE
+ && gBattleMons[gBattlerAttacker].moves[3] != MOVE_NONE
+ )
+ {
+ if (*r3 == MOVE_NONE)
+ *r3 = gBattleMons[gBattlerAttacker].moves[2];
+ gCurrentMove = *r3;
+ if (gBattleMons[gBattlerAttacker].moves[2] < gBattleMons[gBattlerAttacker].moves[3])
+ {
+ if (*r3 == gBattleMons[gBattlerAttacker].moves[3])
+ *r3 = gBattleMons[gBattlerAttacker].moves[2];
+ else
+ (*r3)++;
+ }
+ else
+ {
+ asm("":::"r4"); // Force correct register use
+ if (*r3 == NUM_MOVES - 1)
+ *r3 = 1;
+ else if (*r3 == gBattleMons[gBattlerAttacker].moves[3])
+ *r3 = gBattleMons[gBattlerAttacker].moves[2];
+ else
+ (*r3)++;
+ }
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ asm("":::"r5"); // Force correct register use
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+ gHitMarker |= HITMARKER_NO_PPDEDUCT;
+ gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ return;
+ }
+#endif //DEBUG
while (1)
{
s32 i;
gCurrentMove = (Random() & 0x1FF) + 1;
- if (gCurrentMove >= 355)
+ if (gCurrentMove >= NUM_MOVES)
continue;
for (i = 0; i < MAX_MON_MOVES; ++i); // redundant
i = -1;
@@ -11415,7 +7680,6 @@ static void atk9E_metronome(void)
}
}
}
-#endif
static void atk9F_dmgtolevel(void)
{
@@ -11529,10 +7793,11 @@ static void atkA5_painsplitdmgcalc(void)
{
s32 hp_diff = (gBattleMons[gBattlerAttacker].hp + gBattleMons[gBattlerTarget].hp) / 2;
s32 to_store = gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - hp_diff;
- gBattleStruct->unk16014 = sBYTE0_32(to_store);
- gBattleStruct->unk16015 = sBYTE1_32(to_store);
- gBattleStruct->unk16016 = sBYTE2_32(to_store);
- gBattleStruct->unk16017 = sBYTE3_32(to_store);
+
+ gSharedMem[BSTRUCT_OFF(painSplitHP) + 0] = sBYTE0_32(to_store);
+ gSharedMem[BSTRUCT_OFF(painSplitHP) + 1] = sBYTE1_32(to_store);
+ gSharedMem[BSTRUCT_OFF(painSplitHP) + 2] = sBYTE2_32(to_store);
+ gSharedMem[BSTRUCT_OFF(painSplitHP) + 3] = sBYTE3_32(to_store);
gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp - hp_diff;
gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF;
@@ -11543,312 +7808,71 @@ static void atkA5_painsplitdmgcalc(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
-#ifdef NONMATCHING
static void atkA6_settypetorandomresistance(void)
{
- if (gLastLandedMoves[gBattlerAttacker] == 0 || gLastLandedMoves[gBattlerAttacker] == 0xFFFF || (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker]) && !gProtectStructs[gBattlerAttacker].physicalDmg && !gProtectStructs[gBattlerAttacker].specialDmg))
+ if (gLastLandedMoves[gBattlerAttacker] == 0
+ || gLastLandedMoves[gBattlerAttacker] == 0xFFFF)
+ {
+ // The attacker has not yet been hit with a move
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ }
+ else if (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker])
+ && !(gProtectStructs[gBattlerAttacker].physicalDmg != 0 || gProtectStructs[gBattlerAttacker].specialDmg != 0))
+ {
+ // The attacker is about to be hit with the effects of a two-turn move
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ }
else
{
- int type = 0, rands = 0;
- do
+ s32 i, j, rands;
+
+ // Try up to 1000 times
+ for (rands = 0; rands < 1000; rands++)
{
- while (((type = (Random() & 0x7F)) > 0x70));
- type *= 3;
- if (gTypeEffectiveness[type] == gLastHitByType[gBattlerAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBattlerAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBattlerAttacker].type2 != gTypeEffectiveness[type + 1])
+ while (((i = (Random() & 0x7F)) > 0x150u / 3));
+
+ i *= 3;
+
+ if (TYPE_EFFECT_ATK_TYPE(i) == gLastHitByType[gBattlerAttacker]
+ && TYPE_EFFECT_MULTIPLIER(i) <= TYPE_MUL_NOT_EFFECTIVE
+ && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(i)))
{
- gBattleMons[gBattlerAttacker].type1 = type;
- gBattleMons[gBattlerAttacker].type2 = type;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 3;
- gBattleTextBuff1[2] = type;
- gBattleTextBuff1[3] = 0xFF;
+ // Success
+ SET_BATTLER_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(i));
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(i));
+
gBattlescriptCurrInstr += 5;
return;
}
- rands++;
- } while (rands <= 999);
+ }
- type = 0, rands = 0;
- do
+ // Random selection failed, so go through linearly
+ for (j = 0, rands = 0; rands < 0x150u; j += 3, rands += 3)
{
- if (gTypeEffectiveness[type] == 0xFE || gTypeEffectiveness[type] != 0xFF)
+ switch (TYPE_EFFECT_ATK_TYPE(j))
{
- if (gTypeEffectiveness[type] == gLastHitByType[gBattlerAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBattlerAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBattlerAttacker].type2 != gTypeEffectiveness[type + 1])
+ case TYPE_ENDTABLE:
+ case TYPE_FORESIGHT:
+ break;
+ default:
+ if (TYPE_EFFECT_ATK_TYPE(j) == gLastHitByType[gBattlerAttacker]
+ && TYPE_EFFECT_MULTIPLIER(j) <= TYPE_MUL_NOT_EFFECTIVE
+ && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(i)))
{
- gBattleMons[gBattlerAttacker].type1 = gTypeEffectiveness[rands + 1];
- gBattleMons[gBattlerAttacker].type2 = gTypeEffectiveness[rands + 1];
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 3;
- gBattleTextBuff1[2] = gTypeEffectiveness[rands + 1];
- gBattleTextBuff1[3] = 0xFF;
+ SET_BATTLER_TYPE(gBattlerAttacker, TYPE_EFFECT_DEF_TYPE(rands));
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(rands))
+
gBattlescriptCurrInstr += 5;
return;
}
+ break;
}
- type += 3, rands += 3;
- } while (rands < 336);
+ }
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
}
-#else
-NAKED
-static void atkA6_settypetorandomresistance(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- ldr r1, _08027FA8 @ =gLastLandedMoves\n\
- ldr r4, _08027FAC @ =gBattlerAttacker\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r2, r0, r1\n\
- ldrh r1, [r2]\n\
- cmp r1, 0\n\
- beq _08027F8C\n\
- ldr r0, _08027FB0 @ =0x0000ffff\n\
- cmp r1, r0\n\
- beq _08027F8C\n\
- ldrh r0, [r2]\n\
- bl IsTwoTurnsMove\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08028024\n\
- ldr r2, _08027FB4 @ =gProtectStructs\n\
- ldrb r0, [r4]\n\
- lsls r1, r0, 4\n\
- adds r0, r2, 0x4\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08028024\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08028024\n\
-_08027F8C:\n\
- ldr r3, _08027FB8 @ =gBattlescriptCurrInstr\n\
- ldr r2, [r3]\n\
- ldrb r1, [r2, 0x1]\n\
- ldrb r0, [r2, 0x2]\n\
- lsls r0, 8\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x3]\n\
- lsls r0, 16\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x4]\n\
- lsls r0, 24\n\
- orrs r1, r0\n\
- str r1, [r3]\n\
- b _08028110\n\
- .align 2, 0\n\
-_08027FA8: .4byte gLastLandedMoves\n\
-_08027FAC: .4byte gBattlerAttacker\n\
-_08027FB0: .4byte 0x0000ffff\n\
-_08027FB4: .4byte gProtectStructs\n\
-_08027FB8: .4byte gBattlescriptCurrInstr\n\
-_08027FBC:\n\
- mov r0, r12\n\
- strb r5, [r0]\n\
- mov r1, r10\n\
- ldrb r0, [r1]\n\
- muls r0, r2\n\
- adds r0, r7\n\
- adds r0, 0x22\n\
- strb r5, [r0]\n\
- ldr r1, _08027FE0 @ =gBattleTextBuff1\n\
- movs r0, 0xFD\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- strb r0, [r1, 0x1]\n\
- strb r5, [r1, 0x2]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x3]\n\
- ldr r1, _08027FE4 @ =gBattlescriptCurrInstr\n\
- b _08028012\n\
- .align 2, 0\n\
-_08027FE0: .4byte gBattleTextBuff1\n\
-_08027FE4: .4byte gBattlescriptCurrInstr\n\
-_08027FE8:\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- adds r0, r3\n\
- ldrb r2, [r0]\n\
- strb r2, [r4]\n\
- mov r4, r10\n\
- ldrb r0, [r4]\n\
- muls r0, r6\n\
- ldr r7, _0802801C @ =gBattleMons\n\
- adds r0, r7\n\
- adds r0, 0x22\n\
- strb r2, [r0]\n\
- ldr r1, _08028020 @ =gBattleTextBuff1\n\
- movs r0, 0xFD\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- strb r0, [r1, 0x1]\n\
- strb r2, [r1, 0x2]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x3]\n\
- mov r1, r12\n\
-_08028012:\n\
- ldr r0, [r1]\n\
- adds r0, 0x5\n\
- str r0, [r1]\n\
- b _08028110\n\
- .align 2, 0\n\
-_0802801C: .4byte gBattleMons\n\
-_08028020: .4byte gBattleTextBuff1\n\
-_08028024:\n\
- movs r4, 0\n\
- mov r8, r4\n\
- movs r7, 0x7F\n\
- mov r9, r7\n\
-_0802802C:\n\
- bl Random\n\
- mov r4, r9\n\
- ands r4, r0\n\
- cmp r4, 0x70\n\
- bhi _0802802C\n\
- lsls r0, r4, 1\n\
- adds r4, r0, r4\n\
- ldr r6, _08028120 @ =gTypeEffectiveness\n\
- adds r3, r4, r6\n\
- ldr r1, _08028124 @ =gLastHitByType\n\
- ldr r2, _08028128 @ =gBattlerAttacker\n\
- ldrb r5, [r2]\n\
- lsls r0, r5, 1\n\
- adds r0, r1\n\
- ldrb r1, [r3]\n\
- mov r10, r2\n\
- ldrh r0, [r0]\n\
- cmp r1, r0\n\
- bne _08028088\n\
- adds r0, r4, 0x2\n\
- adds r0, r6\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x5\n\
- bhi _08028088\n\
- ldr r7, _0802812C @ =gBattleMons\n\
- movs r2, 0x58\n\
- adds r0, r5, 0\n\
- muls r0, r2\n\
- adds r3, r0, r7\n\
- movs r0, 0x21\n\
- adds r0, r3\n\
- mov r12, r0\n\
- adds r0, r4, 0x1\n\
- adds r0, r6\n\
- ldrb r5, [r0]\n\
- mov r1, r12\n\
- ldrb r0, [r1]\n\
- adds r1, r5, 0\n\
- cmp r0, r1\n\
- beq _08028088\n\
- adds r0, r3, 0\n\
- adds r0, 0x22\n\
- ldrb r0, [r0]\n\
- cmp r0, r1\n\
- bne _08027FBC\n\
-_08028088:\n\
- movs r7, 0x1\n\
- add r8, r7\n\
- ldr r0, _08028130 @ =0x000003e7\n\
- cmp r8, r0\n\
- ble _0802802C\n\
- movs r0, 0\n\
- mov r8, r0\n\
- ldr r1, _08028134 @ =gBattlescriptCurrInstr\n\
- mov r12, r1\n\
- ldr r3, _08028120 @ =gTypeEffectiveness\n\
- adds r0, r4, 0x1\n\
- adds r0, r3\n\
- mov r9, r0\n\
- adds r5, r3, 0\n\
-_080280A4:\n\
- ldrb r1, [r5]\n\
- cmp r1, 0xFF\n\
- bgt _080280AE\n\
- cmp r1, 0xFE\n\
- bge _080280E8\n\
-_080280AE:\n\
- mov r4, r10\n\
- ldrb r2, [r4]\n\
- lsls r0, r2, 1\n\
- ldr r7, _08028124 @ =gLastHitByType\n\
- adds r0, r7\n\
- ldrh r0, [r0]\n\
- cmp r1, r0\n\
- bne _080280E8\n\
- ldrb r0, [r5, 0x2]\n\
- cmp r0, 0x5\n\
- bhi _080280E8\n\
- movs r6, 0x58\n\
- adds r0, r2, 0\n\
- muls r0, r6\n\
- ldr r1, _0802812C @ =gBattleMons\n\
- adds r2, r0, r1\n\
- adds r4, r2, 0\n\
- adds r4, 0x21\n\
- ldrb r0, [r4]\n\
- mov r7, r9\n\
- ldrb r1, [r7]\n\
- cmp r0, r1\n\
- beq _080280E8\n\
- adds r0, r2, 0\n\
- adds r0, 0x22\n\
- ldrb r0, [r0]\n\
- cmp r0, r1\n\
- beq _080280E8\n\
- b _08027FE8\n\
-_080280E8:\n\
- adds r5, 0x3\n\
- movs r0, 0x3\n\
- add r8, r0\n\
- ldr r0, _08028138 @ =0x0000014f\n\
- cmp r8, r0\n\
- bls _080280A4\n\
- mov r1, r12\n\
- ldr r2, [r1]\n\
- ldrb r1, [r2, 0x1]\n\
- ldrb r0, [r2, 0x2]\n\
- lsls r0, 8\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x3]\n\
- lsls r0, 16\n\
- orrs r1, r0\n\
- ldrb r0, [r2, 0x4]\n\
- lsls r0, 24\n\
- orrs r1, r0\n\
- mov r4, r12\n\
- str r1, [r4]\n\
-_08028110:\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08028120: .4byte gTypeEffectiveness\n\
-_08028124: .4byte gLastHitByType\n\
-_08028128: .4byte gBattlerAttacker\n\
-_0802812C: .4byte gBattleMons\n\
-_08028130: .4byte 0x000003e7\n\
-_08028134: .4byte gBattlescriptCurrInstr\n\
-_08028138: .4byte 0x0000014f\n\
- .syntax divided");
-}
-#endif // NONMATCHING
-
static void atkA7_setalwayshitflag(void)
{
gStatuses3[gBattlerTarget] &= ~(STATUS3_ALWAYS_HITS);
@@ -11867,14 +7891,14 @@ struct move_pp
static void atkA8_copymovepermanently(void)
{
gChosenMove = 0xFFFF;
- if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) && gUnknown_02024C2C[gBattlerTarget] != MOVE_STRUGGLE && gUnknown_02024C2C[gBattlerTarget] != 0 && gUnknown_02024C2C[gBattlerTarget] != 0xFFFF && gUnknown_02024C2C[gBattlerTarget] != MOVE_SKETCH)
+ if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED) && gLastPrintedMoves[gBattlerTarget] != MOVE_STRUGGLE && gLastPrintedMoves[gBattlerTarget] != 0 && gLastPrintedMoves[gBattlerTarget] != 0xFFFF && gLastPrintedMoves[gBattlerTarget] != MOVE_SKETCH)
{
int i;
for (i = 0; i < 4; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] == MOVE_SKETCH)
continue;
- if (gBattleMons[gBattlerAttacker].moves[i] == gUnknown_02024C2C[gBattlerTarget])
+ if (gBattleMons[gBattlerAttacker].moves[i] == gLastPrintedMoves[gBattlerTarget])
break;
}
if (i != 4) //sketch fail
@@ -11882,8 +7906,8 @@ static void atkA8_copymovepermanently(void)
else //sketch worked
{
struct move_pp moves_data;
- gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gUnknown_02024C2C[gBattlerTarget];
- gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknown_02024C2C[gBattlerTarget]].pp;
+ gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastPrintedMoves[gBattlerTarget];
+ gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastPrintedMoves[gBattlerTarget]].pp;
gActiveBattler = gBattlerAttacker;
for (i = 0; i < 4; i++)
{
@@ -11895,8 +7919,8 @@ static void atkA8_copymovepermanently(void)
MarkBattlerForControllerExec(gActiveBattler);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = gUnknown_02024C2C[gBattlerTarget];
- gBattleTextBuff1[3] = gUnknown_02024C2C[gBattlerTarget] >> 8;
+ gBattleTextBuff1[2] = gLastPrintedMoves[gBattlerTarget];
+ gBattleTextBuff1[3] = gLastPrintedMoves[gBattlerTarget] >> 8;
gBattleTextBuff1[4] = 0xFF;
gBattlescriptCurrInstr += 5;
}
@@ -12370,7 +8394,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void)
gBattlerTarget = GetBattlerAtPosition(2);
}
- if (gActionForBanks[gBattlerTarget] == 0 && gBattlerAttacker == ewram16010arr(gBattlerTarget) && !(gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE))
+ if (gActionForBanks[gBattlerTarget] == 0 && gBattlerAttacker == gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerTarget] && !(gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE))
&& gBattleMons[gBattlerAttacker].hp && !gDisableStructs[gBattlerTarget].truantCounter && gChosenMovesByBanks[gBattlerTarget] == MOVE_PURSUIT)
{
int i;
@@ -12439,12 +8463,12 @@ static void atkBE_rapidspinfree(void) //rapid spin
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_WRAPPED)
{
gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_WRAPPED);
- gBattlerTarget = ewram16020arr(gBattlerAttacker);
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = ewram16004arr(0, gBattlerAttacker);
- gBattleTextBuff1[3] = ewram16004arr(1, gBattlerAttacker);
- gBattleTextBuff1[4] = 0xFF;
+ gBattlerTarget = gSharedMem[BSTRUCT_OFF(wrappedBy) + gBattlerAttacker];
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MOVE;
+ gBattleTextBuff1[2] = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gBattlerAttacker + 0];
+ gBattleTextBuff1[3] = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gBattlerAttacker + 1];
+ gBattleTextBuff1[4] = B_BUFF_EOS;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_WrapFree;
}
@@ -12585,11 +8609,11 @@ static void atkC4_trydobeatup(void)
}
if (gBattleCommunication[0] < PARTY_SIZE)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MON_NICK_WITH_PREFIX;
gBattleTextBuff1[2] = gBattlerAttacker;
gBattleTextBuff1[3] = gBattleCommunication[0];
- gBattleTextBuff1[4] = 0xFF;
+ gBattleTextBuff1[4] = B_BUFF_EOS;
gBattlescriptCurrInstr += 9;
gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack;
@@ -12806,7 +8830,7 @@ static void atkD2_tryswapitems(void)
else {
u16 oldItemAtk, *newItemAtk;
- newItemAtk = (u16 *)(ewram160F0 + 2 * gBattlerAttacker);
+ newItemAtk = (u16 *)(gBattleStruct->changedItems + gBattlerAttacker);
oldItemAtk = gBattleMons[gBattlerAttacker].item;
*newItemAtk = gBattleMons[gBattlerTarget].item;
@@ -12821,10 +8845,10 @@ static void atkD2_tryswapitems(void)
BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
MarkBattlerForControllerExec(gBattlerTarget);
- ewram160E8arr2(0, gBattlerTarget) = 0;
- ewram160E8arr2(1, gBattlerTarget) = 0;
- ewram160E8arr2(0, gBattlerAttacker) = 0;
- ewram160E8arr2(1, gBattlerAttacker) = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gBattlerTarget + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gBattlerTarget + 1] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gBattlerAttacker + 0] = 0;
+ gSharedMem[BSTRUCT_OFF(choicedMove) + 2 * gBattlerAttacker + 1] = 0;
gBattlescriptCurrInstr += 5;
@@ -12868,7 +8892,7 @@ static void atkD4_trywish(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
break;
case 1: //heal effect
- gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
gBattleTextBuff1[1] = 4;
gBattleTextBuff1[2] = gBattlerTarget;
gBattleTextBuff1[3] = gWishFutureKnock.wishMonId[gBattlerTarget];
@@ -13094,7 +9118,7 @@ static void atkE1_trygetintimidatetarget(void)
{
u8 side;
- gBattleStruct->scriptingActive = ewram160DD;
+ gBattleStruct->scriptingActive = gBattleStruct->intimidateBank;
side = GetBattlerSide(gBattleStruct->scriptingActive);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 9;
@@ -13122,7 +9146,7 @@ static void atkE2_switchoutabilities(void)
{
case ABILITY_NATURAL_CURE:
gBattleMons[gActiveBattler].status1 = 0;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[ewram16064arr(gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[gSharedMem[BSTRUCT_OFF(unk16064) + gActiveBattler]], 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -13274,7 +9298,7 @@ static void atkEA_tryrecycleitem(void)
{
u16* used_item;
gActiveBattler = gBattlerAttacker;
- used_item = USED_HELD_ITEM(gActiveBattler);
+ used_item = ((u16 *)&gSharedMem[BSTRUCT_OFF(usedHeldItems) + gActiveBattler * 2]);
if (*used_item && gBattleMons[gActiveBattler].item == 0)
{
gLastUsedItem = *used_item;
@@ -13376,7 +9400,7 @@ void atkEF_handleballthrow(void)
u32 odds;
u8 catch_rate;
if (gLastUsedItem == ITEM_SAFARI_BALL)
- catch_rate = gBattleStruct->unk16089 * 1275 / 100; //correct the name to safariFleeRate
+ catch_rate = gBattleStruct->safariCatchFactor * 1275 / 100; //correct the name to safariFleeRate
else
catch_rate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate;
if (gLastUsedItem > 5)
@@ -13435,7 +9459,7 @@ void atkEF_handleballthrow(void)
{
if (gLastUsedItem == ITEM_MASTER_BALL)
{
- gBattleResults.unk5_1 = 1;
+ gBattleResults.usedMasterBall = 1;
}
else
{
@@ -13543,94 +9567,49 @@ static void atkF2_displaydexinfo(void)
}
}
-NAKED
void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- ldr r4, [sp, 0x20]\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r12, r1\n\
- lsls r2, 24\n\
- lsrs r5, r2, 24\n\
- lsls r3, 24\n\
- lsrs r7, r3, 24\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- mov r8, r4\n\
- mov r2, r12\n\
- cmp r2, r7\n\
- bgt _0802BC5A\n\
- lsls r1, r6, 1\n\
- ldr r0, _0802BC20 @ =0x0600c000\n\
- adds r1, r0\n\
- mov r9, r1\n\
-_0802BC06:\n\
- adds r1, r6, 0\n\
- adds r0, r2, 0x1\n\
- mov r10, r0\n\
- cmp r1, r5\n\
- bgt _0802BC54\n\
- lsls r0, r2, 6\n\
- mov r4, r9\n\
- adds r3, r4, r0\n\
-_0802BC16:\n\
- cmp r2, r12\n\
- bne _0802BC28\n\
- ldr r0, _0802BC24 @ =0x00001022\n\
- b _0802BC36\n\
- .align 2, 0\n\
-_0802BC20: .4byte 0x0600c000\n\
-_0802BC24: .4byte 0x00001022\n\
-_0802BC28:\n\
- cmp r2, r7\n\
- bne _0802BC34\n\
- ldr r0, _0802BC30 @ =0x00001028\n\
- b _0802BC36\n\
- .align 2, 0\n\
-_0802BC30: .4byte 0x00001028\n\
-_0802BC34:\n\
- ldr r0, _0802BC68 @ =0x00001025\n\
-_0802BC36:\n\
- cmp r1, r6\n\
- beq _0802BC42\n\
- adds r0, 0x1\n\
- cmp r1, r5\n\
- bne _0802BC42\n\
- adds r0, 0x1\n\
-_0802BC42:\n\
- mov r4, r8\n\
- cmp r4, 0\n\
- beq _0802BC4A\n\
- movs r0, 0\n\
-_0802BC4A:\n\
- strh r0, [r3]\n\
- adds r3, 0x2\n\
- adds r1, 0x1\n\
- cmp r1, r5\n\
- ble _0802BC16\n\
-_0802BC54:\n\
- mov r2, r10\n\
- cmp r2, r7\n\
- ble _0802BC06\n\
-_0802BC5A:\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0802BC68: .4byte 0x00001025\n\
- .syntax divided");
+ int i;
+ int j;
+ int tile;
+
+ for (i = r1; i <= r3; i++)
+ {
+ for (j = r0; j <= r2; j++)
+ {
+ u16 * dest = ((u16 *)(BG_VRAM + (24 * 0x800) + (0x2 * j) + (0x40 * i)));
+ if (i == r1)
+ {
+ if (j == r0)
+ tile = 0x1022;
+ else if (j == r2)
+ tile = 0x1024;
+ else
+ tile = 0x1023;
+ }
+ else if (i == r3)
+ {
+ if (j == r0)
+ tile = 0x1028;
+ else if (j == r2)
+ tile = 0x102A;
+ else
+ tile = 0x1029;
+ }
+ else
+ {
+ if (j == r0)
+ tile = 0x1025;
+ else if (j == r2)
+ tile = 0x1027;
+ else
+ tile = 0x1026;
+ }
+ if (sp0)
+ tile = 0;
+ *dest = tile;
+ }
+ }
}
void sub_802BC6C(void)
diff --git a/src/battle_setup.c b/src/battle_setup.c
index d8319e620..b6e2faff0 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -2,6 +2,14 @@
#include "battle_setup.h"
#include "battle.h"
#include "battle_transition.h"
+#include "constants/battle_setup.h"
+#include "constants/items.h"
+#include "constants/map_types.h"
+#include "constants/maps.h"
+#include "constants/opponents.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "contest_util.h"
#include "data2.h"
#include "event_data.h"
#include "field_control_avatar.h"
@@ -13,12 +21,11 @@
#include "fldeff_poison.h"
#include "main.h"
#include "metatile_behavior.h"
+#include "overworld.h"
#include "palette.h"
#include "random.h"
-#include "overworld.h"
#include "safari_zone.h"
#include "script.h"
-#include "script_pokemon_80C4.h"
#include "secret_base.h"
#include "sound.h"
#include "starter_choose.h"
@@ -27,13 +34,6 @@
#include "task.h"
#include "text.h"
#include "trainer.h"
-#include "constants/battle_setup.h"
-#include "constants/map_types.h"
-#include "constants/maps.h"
-#include "constants/opponents.h"
-#include "constants/songs.h"
-#include "constants/species.h"
-#include "constants/items.h"
extern u16 gSpecialVar_Result;
@@ -1287,8 +1287,9 @@ s32 TrainerIdToRematchTableId(const struct TrainerEyeTrainer *trainers, u16 oppo
for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++)
{
- for (j = 0; j < 5 && trainers[i].opponentIDs[j] != 0; j++)
+ for (j = 0; j < 5; j++)
{
+ if (trainers[i].opponentIDs[j] == 0) break; // one-line required to match with -g
if (trainers[i].opponentIDs[j] == opponentId)
return i;
}
@@ -1354,7 +1355,7 @@ bool8 IsFirstTrainerIdReadyForRematch(const struct TrainerEyeTrainer *trainers,
{
s32 trainerEyeIndex = FirstBattleTrainerIdToRematchTableId(trainers, opponentId);
- if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex])
+ if (trainerEyeIndex != -1 && trainerEyeIndex < MAX_REMATCH_ENTRIES && gSaveBlock1.trainerRematches[trainerEyeIndex])
return TRUE;
else
return FALSE;
@@ -1364,7 +1365,7 @@ bool8 GetTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opp
{
s32 trainerEyeIndex = TrainerIdToRematchTableId(trainers, opponentId);
- if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex])
+ if (trainerEyeIndex != -1 && trainerEyeIndex < MAX_REMATCH_ENTRIES && gSaveBlock1.trainerRematches[trainerEyeIndex])
return TRUE;
else
return FALSE;
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 5d3bc207d..1d9da71ad 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1,31 +1,31 @@
#include "global.h"
+#include "battle_tower.h"
#include "battle.h"
#include "battle_setup.h"
-#include "battle_tower.h"
#include "battle_transition.h"
+#include "constants/easy_chat.h"
+#include "constants/event_objects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+#include "constants/vars.h"
+#include "contest_util.h"
#include "data2.h"
#include "easy_chat.h"
-#include "constants/easy_chat.h"
#include "event_data.h"
+#include "ewram.h"
#include "item.h"
-#include "constants/items.h"
#include "main.h"
-#include "constants/event_objects.h"
-#include "constants/moves.h"
#include "new_game.h"
#include "overworld.h"
#include "pokedex.h"
#include "random.h"
#include "save.h"
-#include "script_pokemon_80C4.h"
-#include "constants/species.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
#include "trainer.h"
#include "tv.h"
-#include "constants/vars.h"
-#include "ewram.h"
#if ENGLISH
#include "data/battle_tower/trainers.h"
@@ -557,324 +557,99 @@ void SetEReaderTrainerGfxId(void)
SetBattleTowerTrainerGfxId(BATTLE_TOWER_EREADER_TRAINER_ID);
}
-// void sub_8134AC0(struct BattleTowerRecord *record)
-// {
-// u16 var1[6];
-// u16 var2[6];
-// s32 i, j, k;
-// s16 l = 0;
-
-// for (i = 0; i < 5; i++)
-// {
-// k = 0;
-// for (j = 0; j < 4 && gSaveBlock2.battleTower.records[i].trainerId[j] == record->trainerId[j]; j++);
-// if (j == 4)
-// {
-// for (; k < 7 && gSaveBlock2.battleTower.records[i].name[4] == record->name[4]; k++)
-// {
-// if (record->name[4] == 0xFF)
-// {
-// k = 7;
-// break;
-// }
-// }
-// }
-
-// if (k == 7)
-// {
-// break;
-// }
-// }
-
-// if (i < 5)
-// {
-// gSaveBlock2.battleTower.records[i] = *record;
-// return;
-// }
-
-// i = 0;
-// while (i < 5)
-// {
-// if (gSaveBlock2.battleTower.records[i].winStreak == 0)
-// {
-// if (i > 4)
-// {
-// break;
-// }
-
-// gSaveBlock2.battleTower.records[i] = *record;
-// return;
-// }
-
-// i++;
-// }
-
-// var1[0] = gSaveBlock2.battleTower.records[0].winStreak;
-// var2[0] = 0;
-// l++;
-
-// for (i = 1; i < 5; i++)
-// {
-// j = 0;
-// if (j < l)
-// {
-// for (; gSaveBlock2.battleTower.records[i].winStreak <= var1[j]; j++)
-// {
-// if (gSaveBlock2.battleTower.records[i].winStreak < var1[j])
-// {
-// j = 0;
-// l = 1;
-// var1[0] = gSaveBlock2.battleTower.records[i].winStreak;
-// var2[0] = i;
-// break;
-// }
-// }
-// }
-
-// if (j == l)
-// {
-// var1[l] = gSaveBlock2.battleTower.records[i].winStreak;
-// var2[l] = i;
-// l++;
-// }
-// }
-
-// gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record;
-// }
-NAKED
+#define BATTLE_TOWER_RECORD_COUNT 5
+
void sub_8134AC0(struct BattleTowerRecord *record)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x1C\n\
- movs r7, 0\n\
- mov r8, r0\n\
- movs r5, 0\n\
- ldr r0, _08134B3C @ =gSaveBlock2\n\
- mov r12, r0\n\
- mov r1, r8\n\
- ldrb r1, [r1, 0xC]\n\
- str r1, [sp, 0x18]\n\
- movs r2, 0xAA\n\
- lsls r2, 1\n\
- add r2, r12\n\
- mov r10, r2\n\
- mov r9, r5\n\
-_08134AE6:\n\
- movs r6, 0\n\
- movs r3, 0\n\
- ldr r0, _08134B40 @ =gSaveBlock2 + 0x158\n\
- add r0, r9\n\
- ldrb r0, [r0]\n\
- ldr r1, [sp, 0x18]\n\
- cmp r0, r1\n\
- bne _08134B14\n\
- movs r0, 0xA4\n\
- muls r0, r5\n\
- ldr r1, _08134B40 @ =gSaveBlock2 + 0x158\n\
- adds r2, r0, r1\n\
- mov r4, r8\n\
- adds r4, 0xC\n\
-_08134B02:\n\
- adds r2, 0x1\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- bgt _08134B14\n\
- adds r1, r4, r3\n\
- ldrb r0, [r2]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- beq _08134B02\n\
-_08134B14:\n\
- cmp r3, 0x4\n\
- bne _08134B54\n\
- movs r6, 0\n\
- mov r2, r10\n\
- ldrb r0, [r2]\n\
- mov r3, r8\n\
- ldrb r3, [r3, 0x8]\n\
- cmp r0, r3\n\
- bne _08134B54\n\
- adds r1, r0, 0\n\
- movs r0, 0xA4\n\
- muls r0, r5\n\
- adds r0, 0x4\n\
- ldr r3, _08134B44 @ =gSaveBlock2 + 0x150\n\
- adds r2, r0, r3\n\
-_08134B32:\n\
- cmp r1, 0xFF\n\
- bne _08134B48\n\
- movs r6, 0x7\n\
- b _08134B54\n\
- .align 2, 0\n\
-_08134B3C: .4byte gSaveBlock2\n\
-_08134B40: .4byte gSaveBlock2 + 0x158\n\
-_08134B44: .4byte gSaveBlock2 + 0x150\n\
-_08134B48:\n\
- adds r6, 0x1\n\
- cmp r6, 0x6\n\
- bgt _08134B54\n\
- ldrb r0, [r2]\n\
- cmp r0, r1\n\
- beq _08134B32\n\
-_08134B54:\n\
- cmp r6, 0x7\n\
- beq _08134B64\n\
- movs r0, 0xA4\n\
- add r10, r0\n\
- add r9, r0\n\
- adds r5, 0x1\n\
- cmp r5, 0x4\n\
- ble _08134AE6\n\
-\n\
-_08134B64:\n\
- cmp r5, 0x4\n\
- bgt _08134B76\n\
- movs r0, 0xA4\n\
- muls r0, r5\n\
- add r0, r12\n\
- movs r1, 0xA6\n\
- lsls r1, 1\n\
- adds r0, r1\n\
- b _08134B9E\n\
-_08134B76:\n\
- movs r5, 0\n\
- movs r1, 0xA7\n\
- lsls r1, 1\n\
- add r1, r12\n\
- b _08134B88\n\
-_08134B80:\n\
- adds r1, 0xA4\n\
- adds r5, 0x1\n\
- cmp r5, 0x4\n\
- bgt _08134BA8\n\
-_08134B88:\n\
- ldrh r0, [r1]\n\
- cmp r0, 0\n\
- bne _08134B80\n\
- cmp r5, 0x4\n\
- bgt _08134BA8\n\
- movs r0, 0xA4\n\
- muls r0, r5\n\
- add r0, r12\n\
- movs r2, 0xA6\n\
- lsls r2, 1\n\
- adds r0, r2\n\
-_08134B9E:\n\
- mov r1, r8\n\
- movs r2, 0xA4\n\
- bl memcpy\n\
- b _08134C5E\n\
-\n\
-_08134BA8:\n\
- mov r2, sp\n\
- movs r3, 0xA7\n\
- lsls r3, 1\n\
- mov r1, r12\n\
- adds r0, r1, r3\n\
- ldrh r0, [r0]\n\
- movs r1, 0\n\
- strh r0, [r2]\n\
- add r0, sp, 0xC\n\
- strh r1, [r0]\n\
- adds r7, 0x1\n\
- movs r5, 0x1\n\
- add r2, sp, 0xC @var2 = r2\n\
- mov r9, r2\n\
- mov r10, r3\n\
-_08134BC6:\n\
- movs r3, 0\n\
- adds r0, r5, 0x1\n\
- mov r12, r0\n\
- cmp r3, r7\n\
- bge _08134C0A @ j < l\n\
- movs r1, 0xA4\n\
- adds r0, r5, 0\n\
- muls r0, r1\n\
- ldr r2, _08134BFC @ =gSaveBlock2\n\
- adds r0, r2\n\
- mov r1, r10\n\
- adds r4, r0, r1\n\
- mov r6, sp\n\
-_08134BE0:\n\
- lsls r0, r3, 1\n\
- add r0, sp\n\
- ldrh r2, [r4]\n\
- adds r1, r2, 0\n\
- ldrh r0, [r0]\n\
- cmp r1, r0\n\
- bcs _08134C00\n\
- movs r3, 0\n\
- movs r7, 0x1\n\
- strh r2, [r6]\n\
- mov r2, r9\n\
- strh r5, [r2]\n\
- b _08134C0A\n\
- .align 2, 0\n\
-_08134BFC: .4byte gSaveBlock2\n\
-_08134C00:\n\
- cmp r1, r0\n\
- bhi _08134C0A\n\
- adds r3, 0x1\n\
- cmp r3, r7\n\
- blt _08134BE0\n\
-_08134C0A:\n\
- cmp r3, r7\n\
- bne _08134C2A\n\
- lsls r1, r7, 1\n\
- mov r3, sp\n\
- adds r2, r3, r1\n\
- movs r3, 0xA4\n\
- adds r0, r5, 0\n\
- muls r0, r3\n\
- ldr r3, _08134C70 @ =gSaveBlock2\n\
- adds r0, r3\n\
- add r0, r10\n\
- ldrh r0, [r0]\n\
- strh r0, [r2]\n\
- add r1, r9\n\
- strh r5, [r1]\n\
- adds r7, 0x1\n\
-_08134C2A:\n\
- mov r5, r12\n\
- cmp r5, 0x4\n\
- ble _08134BC6\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- adds r1, r7, 0\n\
- bl __modsi3\n\
- adds r5, r0, 0\n\
- ldr r2, _08134C70 @ =gSaveBlock2\n\
- lsls r0, r5, 1\n\
- add r0, sp\n\
- adds r0, 0xC\n\
- ldrh r1, [r0]\n\
- movs r0, 0xA4\n\
- muls r0, r1\n\
- adds r0, r2\n\
- movs r1, 0xA6\n\
- lsls r1, 1\n\
- adds r0, r1\n\
- mov r1, r8\n\
- movs r2, 0xA4\n\
- bl memcpy\n\
-_08134C5E:\n\
- add sp, 0x1C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08134C70: .4byte gSaveBlock2\n\
- .syntax divided\n");
+ u16 slotValues[6];
+ u16 slotIds[6];
+ s32 i, j, k;
+ s32 slotsCount = 0;
+ struct BattleTowerRecord *newRecord = record; // Needed to match.
+
+ // Find a record slot of the same player and replace it.
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
+ {
+ k = 0;
+ for (j = 0; j < TRAINER_ID_LENGTH; j++)
+ {
+ if (gSaveBlock2.battleTower.records[i].trainerId[j] != newRecord->trainerId[j])
+ break;
+ }
+ if (j == 4)
+ {
+ for (k = 0; k < OT_NAME_LENGTH; k++)
+ {
+#ifdef BUGFIX
+ if (gSaveBlock2.battleTower.records[i].name[k] != newRecord->name[k])
+ break;
+ if (newRecord->name[k] == EOS)
+#else
+ if (gSaveBlock2.battleTower.records[i].name[j] != newRecord->name[j])
+ break;
+ if (newRecord->name[j] == EOS)
+#endif
+ {
+ k = OT_NAME_LENGTH;
+ break;
+ }
+ }
+ }
+
+ if (k == OT_NAME_LENGTH)
+ break;
+ }
+ if (i < BATTLE_TOWER_RECORD_COUNT)
+ {
+ gSaveBlock2.battleTower.records[i] = *newRecord;
+ return;
+ }
+
+ // Find an empty record slot.
+ for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++)
+ {
+ if (gSaveBlock2.battleTower.records[i].winStreak == 0)
+ break;
+ }
+ if (i < BATTLE_TOWER_RECORD_COUNT)
+ {
+ gSaveBlock2.battleTower.records[i] = *newRecord;
+ return;
+ }
+
+ // Find possible slots to replace the record.
+ slotValues[0] = gSaveBlock2.battleTower.records[0].winStreak;
+ slotIds[0] = 0;
+ slotsCount++;
+
+ for (i = 1; i < BATTLE_TOWER_RECORD_COUNT; i++)
+ {
+ for (j = 0; j < slotsCount; j++)
+ {
+ if (gSaveBlock2.battleTower.records[i].winStreak < slotValues[j])
+ {
+ j = 0;
+ slotsCount = 1;
+ slotValues[0] = gSaveBlock2.battleTower.records[i].winStreak;
+ slotIds[0] = i;
+ break;
+ }
+ else if (gSaveBlock2.battleTower.records[i].winStreak > slotValues[j])
+ {
+ break;
+ }
+ }
+
+ if (j == slotsCount)
+ {
+ slotValues[slotsCount] = gSaveBlock2.battleTower.records[i].winStreak;
+ slotIds[slotsCount] = i;
+ slotsCount++;
+ }
+ }
+
+ i = Random() % slotsCount;
+ gSaveBlock2.battleTower.records[slotIds[i]] = *newRecord;
}
u8 get_trainer_class_pic_index(void)
@@ -1351,7 +1126,7 @@ void SetBattleTowerProperty(void)
switch (gSpecialVar_0x8004)
{
case 0:
- ewram160FB = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType];
+ gBattleStruct->unk160FB = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType];
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005;
break;
case 1:
@@ -1400,7 +1175,7 @@ void SetBattleTowerProperty(void)
ResetBattleTowerStreak(battleTowerLevelType);
break;
case 12:
- gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
+ gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gBattleStruct->unk160FB;
break;
case 13:
gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
@@ -1449,7 +1224,7 @@ void BattleTowerUtil(void)
ResetBattleTowerStreak(battleTowerLevelType);
break;
case 12:
- gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
+ gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gBattleStruct->unk160FB;
break;
case 13:
gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
diff --git a/src/battle_transition.c b/src/battle_transition.c
index b7aac2c65..e459e63be 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -1041,10 +1041,10 @@ static void sub_811B720(struct Sprite* sprite)
sprite->data[1]--;
else
{
- if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240)
+ if (sprite->x >= 0 && sprite->x <= 240)
{
- s16 posX = sprite->pos1.x >> 3;
- s16 posY = sprite->pos1.y >> 3;
+ s16 posX = sprite->x >> 3;
+ s16 posY = sprite->y >> 3;
if (posX != sprite->data[2])
{
@@ -1061,8 +1061,8 @@ static void sub_811B720(struct Sprite* sprite)
SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001);
}
}
- sprite->pos1.x += arr0[sprite->data[0]];
- if (sprite->pos1.x < -15 || sprite->pos1.x > 255)
+ sprite->x += arr0[sprite->data[0]];
+ if (sprite->x < -15 || sprite->x > 255)
FieldEffectStop(sprite, FLDEFF_POKEBALL);
}
}
@@ -1732,8 +1732,9 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task* task)
task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID],
sMugshotsOpponentCoords[mugshotID][0] - 32,
sMugshotsOpponentCoords[mugshotID][1] + 42,
- 0, ewramC03C);
- task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, ewramC03C);
+ 0,
+ eTransitionMugshotDecompBuff);
+ task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, eTransitionMugshotDecompBuff);
opponentSprite = &gSprites[task->tMugshotOpponentID];
playerSprite = &gSprites[task->tMugshotPlayerID];
@@ -1786,10 +1787,10 @@ static bool8 sub_811C938(struct Sprite* sprite)
static bool8 sub_811C984(struct Sprite* sprite)
{
- sprite->pos1.x += sprite->data[1];
- if (sprite->data[7] && sprite->pos1.x < 133)
+ sprite->x += sprite->data[1];
+ if (sprite->data[7] && sprite->x < 133)
sprite->data[0]++;
- else if (!sprite->data[7] && sprite->pos1.x > 103)
+ else if (!sprite->data[7] && sprite->x > 103)
sprite->data[0]++;
return FALSE;
}
@@ -1797,7 +1798,7 @@ static bool8 sub_811C984(struct Sprite* sprite)
static bool8 sub_811C9B8(struct Sprite* sprite)
{
sprite->data[1] += sprite->data[2];
- sprite->pos1.x += sprite->data[1];
+ sprite->x += sprite->data[1];
if (sprite->data[1] == 0)
{
sprite->data[0]++;
@@ -1810,8 +1811,8 @@ static bool8 sub_811C9B8(struct Sprite* sprite)
static bool8 sub_811C9E4(struct Sprite* sprite)
{
sprite->data[1] += sprite->data[2];
- sprite->pos1.x += sprite->data[1];
- if (sprite->pos1.x < -31 || sprite->pos1.x > 271)
+ sprite->x += sprite->data[1];
+ if (sprite->x < -31 || sprite->x > 271)
sprite->data[0]++;
return FALSE;
}
@@ -1978,8 +1979,8 @@ static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task)
for (i = 0, posY = 0; i < 8; i++, posY += 0x14)
{
sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)];
- sprite->pos1.x = 0xF0;
- sprite->pos1.y = posY;
+ sprite->x = 0xF0;
+ sprite->y = posY;
sprite->data[5] = arr1[i];
}
sprite->data[6]++;
@@ -2068,21 +2069,21 @@ static void sub_811CFD0(struct Sprite* sprite)
else
{
u16 i;
- u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y];
- u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160];
+ u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->y];
+ u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->y + 160];
for (i = 0; i < 20; i++)
{
ptr1[i] = sprite->data[0] >> 8;
- ptr2[i] = (u8)(sprite->pos1.x);
+ ptr2[i] = (u8)(sprite->x);
}
- if (sprite->pos1.x == 0 && sprite->data[0] == 0x1000)
+ if (sprite->x == 0 && sprite->data[0] == 0x1000)
sprite->data[1] = 1;
- sprite->pos1.x -= 16;
+ sprite->x -= 16;
sprite->data[0] += 0x80;
- if (sprite->pos1.x < 0)
- sprite->pos1.x = 0;
+ if (sprite->x < 0)
+ sprite->x = 0;
if (sprite->data[0] > 0x1000)
sprite->data[0] = 0x1000;
diff --git a/src/battle_util.c b/src/battle_util.c
index b1260cd4e..3d80fab2e 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -227,7 +227,7 @@ u8 GetBattlerForBattleScript(u8 caseId)
ret = 0;
break;
case BS_GET_SCRIPTING_BANK:
- ret = ewram16003;
+ ret = gBattleStruct->scriptingActive;
break;
case BS_GET_gBank1:
ret = gBank1;
@@ -474,7 +474,7 @@ u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move
u8 limitations = 0;
u16 move = gBattleMons[gActiveBattler].moves[gBattleBufferB[gActiveBattler][2]];
u8 holdEffect;
- u16* choicedMove = CHOICED_MOVE(gActiveBattler);
+ u16* choicedMove = &gBattleStruct->choicedMove[gActiveBattler];
if (gDisableStructs[gActiveBattler].disabledMove == move && move)
{
@@ -527,7 +527,7 @@ u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move
u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check)
{
u8 holdEffect;
- u16* choicedMove = CHOICED_MOVE(battlerId);
+ u16* choicedMove = &gBattleStruct->choicedMove[battlerId];
s32 i;
if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY)
@@ -1016,12 +1016,12 @@ u8 TurnBasedEffects(void)
gBattleMons[gActiveBattler].status2 -= 0x2000;
if (gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) // damaged by wrap
{
- gBattleStruct->animArg1 = ewram16004arr(0, gActiveBattler);
- gBattleStruct->animArg2 = ewram16004arr(1, gActiveBattler);
+ gBattleStruct->animArg1 = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gActiveBattler + 0];
+ gBattleStruct->animArg2 = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gActiveBattler + 1];
gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
gBattleTextBuff1[1] = B_BUFF_MOVE;
- gBattleTextBuff1[2] = ewram16004arr(0, gActiveBattler);
- gBattleTextBuff1[3] = ewram16004arr(1, gActiveBattler);
+ gBattleTextBuff1[2] = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gActiveBattler + 0];
+ gBattleTextBuff1[3] = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gActiveBattler + 1];
gBattleTextBuff1[4] = EOS;
gBattlescriptCurrInstr = BattleScript_WrapTurnDmg;
gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16;
@@ -1030,10 +1030,10 @@ u8 TurnBasedEffects(void)
}
else // broke free
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = ewram16004arr(0, gActiveBattler);
- gBattleTextBuff1[3] = ewram16004arr(1, gActiveBattler);
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MOVE;
+ gBattleTextBuff1[2] = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gActiveBattler + 0];
+ gBattleTextBuff1[3] = gSharedMem[BSTRUCT_OFF(wrappedMove) + 2 * gActiveBattler + 1];
gBattleTextBuff1[4] = EOS;
gBattlescriptCurrInstr = BattleScript_WrapEnds;
}
@@ -1289,11 +1289,11 @@ bool8 HandleFaintedMonActions(void)
do
{
int i;
- switch (gBattleStruct->sub80173A4_Tracker)
+ switch (gBattleStruct->faintedActionsState)
{
case 0:
- gBattleStruct->unk1605A = 0;
- gBattleStruct->sub80173A4_Tracker++;
+ gBattleStruct->faintedActionsBattlerId = 0;
+ gBattleStruct->faintedActionsState++;
for (i = 0; i < gBattlersCount; i++)
{
if (gAbsentBattlerFlags & gBitTable[i] && !sub_8018018(i, 6, 6))
@@ -1302,54 +1302,54 @@ bool8 HandleFaintedMonActions(void)
case 1:
do
{
- gBank1 = gBattlerTarget = gBattleStruct->unk1605A;
- if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gBattleStruct->unk16113 & gBitTable[gBattlerPartyIndexes[gBattleStruct->unk1605A]]) && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->unk1605A]))
+ gBank1 = gBattlerTarget = gBattleStruct->faintedActionsBattlerId;
+ if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0 && !(gBattleStruct->givenExpMons & gBitTable[gBattlerPartyIndexes[gBattleStruct->faintedActionsBattlerId]]) && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId]))
{
BattleScriptExecute(BattleScript_GiveExp);
- gBattleStruct->sub80173A4_Tracker = 2;
+ gBattleStruct->faintedActionsState = 2;
return 1;
}
- } while (++gBattleStruct->unk1605A != gBattlersCount);
- gBattleStruct->sub80173A4_Tracker = 3;
+ } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount);
+ gBattleStruct->faintedActionsState = 3;
break;
case 2:
sub_8015740(gBank1);
- if (++gBattleStruct->unk1605A == gBattlersCount)
- gBattleStruct->sub80173A4_Tracker = 3;
+ if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount)
+ gBattleStruct->faintedActionsState = 3;
else
- gBattleStruct->sub80173A4_Tracker = 1;
+ gBattleStruct->faintedActionsState = 1;
break;
case 3:
- gBattleStruct->unk1605A = 0;
- gBattleStruct->sub80173A4_Tracker++;
+ gBattleStruct->faintedActionsBattlerId = 0;
+ gBattleStruct->faintedActionsState++;
case 4:
do
{
- gBank1 = gBattlerTarget = gBattleStruct->unk1605A; //or should banks be switched?
- if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->unk1605A]))
+ gBank1 = gBattlerTarget = gBattleStruct->faintedActionsBattlerId; //or should banks be switched?
+ if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0 && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId]))
{
BattleScriptExecute(BattleScript_HandleFaintedMon);
- gBattleStruct->sub80173A4_Tracker = 5;
+ gBattleStruct->faintedActionsState = 5;
return 1;
}
- } while (++gBattleStruct->unk1605A != gBattlersCount);
- gBattleStruct->sub80173A4_Tracker = 6;
+ } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount);
+ gBattleStruct->faintedActionsState = 6;
break;
case 5:
- if (++gBattleStruct->unk1605A == gBattlersCount)
- gBattleStruct->sub80173A4_Tracker = 6;
+ if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount)
+ gBattleStruct->faintedActionsState = 6;
else
- gBattleStruct->sub80173A4_Tracker = 4;
+ gBattleStruct->faintedActionsState = 4;
break;
case 6:
if (AbilityBattleEffects(9, 0, 0, 0, 0) || AbilityBattleEffects(0xB, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(6, 0, 0, 0, 0))
return 1;
- gBattleStruct->sub80173A4_Tracker++;
+ gBattleStruct->faintedActionsState++;
break;
case 7:
break;
}
- } while (gBattleStruct->sub80173A4_Tracker != HandleFaintedMonActions_MAX_CASE);
+ } while (gBattleStruct->faintedActionsState != HandleFaintedMonActions_MAX_CASE);
return 0;
}
@@ -1657,28 +1657,28 @@ bool8 sub_8018018(u8 bank, u8 r1, u8 r2)
}
else
{
- if (GetBattlerSide(bank) == 1)
+ if (GetBattlerSide(bank) == B_SIDE_OPPONENT)
{
- r7 = GetBattlerAtPosition(1);
- r6 = GetBattlerAtPosition(3);
+ r7 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ r6 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
party = gEnemyParty;
}
else
{
- r7 = GetBattlerAtPosition(0);
- r6 = GetBattlerAtPosition(2);
+ r7 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ r6 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
party = gPlayerParty;
}
- if (r1 == 6)
+ if (r1 == PARTY_SIZE)
r1 = gBattlerPartyIndexes[r7];
- if (r2 == 6)
+ if (r2 == PARTY_SIZE)
r2 = gBattlerPartyIndexes[r6];
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
- if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != ewram16068arr(r7) && i != ewram16068arr(r6))
+ if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + r7] && i != gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + r6])
break;
}
- return (i == 6);
+ return (i == PARTY_SIZE);
}
}
@@ -2003,14 +2003,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_FLASH_FIRE:
if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS1_FREEZE))
{
- if (!(eFlashFireArr.arr[bank] & 1))
+ if (!(eBattleFlagsArr.arr[bank] & 1))
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
if (gProtectStructs[gBattlerAttacker].notFirstStrike)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
- eFlashFireArr.arr[bank] |= 1;
+ eBattleFlagsArr.arr[bank] |= 1;
effect = 2;
}
else
@@ -3481,7 +3481,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target
targetBank = gBattlerAttacker;
break;
}
- ewram16010arr(gBattlerAttacker) = targetBank;
+ gSharedMem[BSTRUCT_OFF(moveTarget) + gBattlerAttacker] = targetBank;
return targetBank;
}
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 7955c1458..35c5a473d 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -802,7 +802,7 @@ static bool8 sub_804E2EC(void)
switch (gBerryBlenderData->field_1)
{
case 0:
- LZDecompressWram(gUnknown_08E6C100, ewram10000);
+ LZDecompressWram(gUnknown_08E6C100, eBerryBlenderGfxBuffer);
gBerryBlenderData->field_1++;
break;
case 1:
@@ -811,35 +811,35 @@ static bool8 sub_804E2EC(void)
gBerryBlenderData->field_1++;
break;
case 2:
- DmaCopyLarge16(3, ewram10000, (void *)(VRAM + 0x0), 0x2000, 0x1000);
+ DmaCopyLarge16(3, eBerryBlenderGfxBuffer, (void *)(VRAM + 0x0), 0x2000, 0x1000);
gBerryBlenderData->field_1++;
break;
case 3:
- LZDecompressWram(gUnknown_08E6C920, ewram10000);
+ LZDecompressWram(gUnknown_08E6C920, eBerryBlenderGfxBuffer);
gBerryBlenderData->field_1++;
break;
case 4:
- LZDecompressWram(gUnknown_08E6D354, ewram13000);
+ LZDecompressWram(gUnknown_08E6D354, eBerryBlenderGfxBuffer + 0x3000);
gBerryBlenderData->field_1++;
break;
case 5:
- DmaCopy16Defvars(3, ewram10000, (void *)(VRAM + 0xE000), 0x1000);
+ DmaCopy16Defvars(3, eBerryBlenderGfxBuffer + 0x0000, (void *)(VRAM + 0xE000), 0x1000);
gBerryBlenderData->field_1++;
break;
case 6:
- DmaCopy16Defvars(3, ewram11000, (void *)(VRAM + 0xF000), 0x1000);
+ DmaCopy16Defvars(3, eBerryBlenderGfxBuffer + 0x1000, (void *)(VRAM + 0xF000), 0x1000);
gBerryBlenderData->field_1++;
break;
case 7:
{
u16 i;
- u16* palStore = (u16*)(ewram13000);
+ u16* palStore = (u16*)(eBerryBlenderGfxBuffer + 0x3000);
for (i = 0; i < 640; i++)
{
*(palStore + i) |= 0x100;
}
- DmaCopy16Defvars(3, ewram13000, (void *)(VRAM + 0x6000), 0x500);
+ DmaCopy16Defvars(3, eBerryBlenderGfxBuffer + 0x3000, (void *)(VRAM + 0x6000), 0x500);
LoadPalette(sBlenderOuterPal, 0x80, 0x20);
gBerryBlenderData->field_1++;
}
@@ -972,8 +972,8 @@ void sub_804E738(struct Sprite* sprite)
else
PlaySE(SE_BALL_TRAY_EXIT);
}
- sprite->pos1.x = sprite->data[1];
- sprite->pos1.y = sprite->data[2];
+ sprite->x = sprite->data[1];
+ sprite->y = sprite->data[2];
}
void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6)
@@ -2479,7 +2479,7 @@ static void sub_8050E30(void)
case 11:
if (++gBerryBlenderData->framesToWait > 30)
{
- sub_800832C();
+ SetCloseLinkCallback();
gBerryBlenderData->field_6F++;
}
break;
@@ -2666,8 +2666,8 @@ void sub_8051524(struct Sprite* sprite)
{
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];
- sprite->pos2.x = sprite->data[2] / 8;
- sprite->pos2.y = sprite->data[3] / 8;
+ sprite->x2 = sprite->data[2] / 8;
+ sprite->y2 = sprite->data[3] / 8;
if (sprite->animEnded)
DestroySprite(sprite);
}
@@ -2699,7 +2699,7 @@ static void sub_805156C(void)
static void sub_8051650(struct Sprite* sprite)
{
sprite->data[0]++;
- sprite->pos2.y = -(sprite->data[0] / 3);
+ sprite->y2 = -(sprite->data[0] / 3);
if (sprite->animEnded)
DestroySprite(sprite);
}
@@ -2707,9 +2707,9 @@ static void sub_8051650(struct Sprite* sprite)
void sub_8051684(struct Sprite* sprite)
{
sprite->data[0]++;
- sprite->pos2.y = -(sprite->data[0] * 2);
- if (sprite->pos2.y < -12)
- sprite->pos2.y = -12;
+ sprite->y2 = -(sprite->data[0] * 2);
+ if (sprite->y2 < -12)
+ sprite->y2 = -12;
if (sprite->animEnded)
DestroySprite(sprite);
}
@@ -2799,7 +2799,7 @@ static void sub_805181C(struct Sprite* sprite)
}
break;
}
- sprite->pos2.y = sprite->data[1];
+ sprite->y2 = sprite->data[1];
}
static void sub_80518CC(struct Sprite* sprite)
@@ -2829,7 +2829,7 @@ static void sub_80518CC(struct Sprite* sprite)
}
break;
}
- sprite->pos2.y = sprite->data[1];
+ sprite->y2 = sprite->data[1];
}
static void sub_805194C(u16 a0, u16 a1)
@@ -2953,8 +2953,8 @@ static bool8 sub_8051B8C(void)
static void sub_8051C04(struct Sprite* sprite)
{
- sprite->pos2.x = -(gBerryBlenderData->field_144);
- sprite->pos2.y = -(gBerryBlenderData->field_146);
+ sprite->x2 = -(gBerryBlenderData->field_144);
+ sprite->y2 = -(gBerryBlenderData->field_146);
}
/*static*/ void Blender_TrySettingRecord(void)
diff --git a/src/cable_car.c b/src/cable_car.c
index 3a661be34..9ea69a9b8 100644
--- a/src/cable_car.c
+++ b/src/cable_car.c
@@ -624,13 +624,13 @@ static void sub_8123CB8(struct Sprite *sprite)
{
if (gSpecialVar_0x8004 == 0)
{
- sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
- sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
}
else
{
- sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
- sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
}
}
}
@@ -641,18 +641,18 @@ static void sub_8123D98(struct Sprite *sprite)
{
if (gSpecialVar_0x8004 == 0)
{
- sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
- sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
}
else
{
- sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
- sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
+ sprite->y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006));
}
switch (sprite->data[2])
{
case 0:
- sprite->pos2.y = 17;
+ sprite->y2 = 17;
if (sprite->data[3] ++ > 9)
{
sprite->data[3] = 0;
@@ -660,7 +660,7 @@ static void sub_8123D98(struct Sprite *sprite)
}
break;
default:
- sprite->pos2.y = 16;
+ sprite->y2 = 16;
if (sprite->data[3] ++ > 9)
{
sprite->data[3] = 0;
@@ -675,32 +675,32 @@ static void sub_8123EB8(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.x += 2 * sprite->centerToCornerVecX;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 2 * sprite->centerToCornerVecX;
+ sprite->y += 16 + sprite->centerToCornerVecY;
}
if (++sprite->data[0] >= sprite->data[2])
{
switch (sprite->data[1])
{
case 0:
- sprite->pos1.x++;
+ sprite->x++;
if ((sprite->data[0] % 4) == 0)
{
- sprite->pos1.y++;
+ sprite->y++;
}
break;
case 1:
if ((sprite->data[0] % 2) != 0)
{
- sprite->pos1.x++;
- if ((sprite->pos1.x % 4) == 0)
+ sprite->x++;
+ if ((sprite->x % 4) == 0)
{
- sprite->pos1.y++;
+ sprite->y++;
}
}
break;
}
- if (sprite->pos1.y > 0xa0)
+ if (sprite->y > 0xa0)
{
DestroySprite(sprite);
}
@@ -711,31 +711,31 @@ static void sub_8123F44(struct Sprite *sprite)
{
if (sprite->data[0] == 0)
{
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->y += 16 + sprite->centerToCornerVecY;
}
if (++sprite->data[0] >= sprite->data[2])
{
switch (sprite->data[1])
{
case 0:
- sprite->pos1.x--;
+ sprite->x--;
if ((sprite->data[0] % 4) == 0)
{
- sprite->pos1.y--;
+ sprite->y--;
}
break;
case 1:
if ((sprite->data[0] % 2) != 0)
{
- sprite->pos1.x--;
- if ((sprite->pos1.x % 4) == 0)
+ sprite->x--;
+ if ((sprite->x % 4) == 0)
{
- sprite->pos1.y--;
+ sprite->y--;
}
}
break;
}
- if (sprite->pos1.y < 0x50)
+ if (sprite->y < 0x50)
{
DestroySprite(sprite);
}
@@ -851,18 +851,18 @@ static void LoadSprites(void)
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].pos2.x = 0x08;
- gSprites[spriteId].pos2.y = 0x10;
+ gSprites[spriteId].x2 = 0x08;
+ gSprites[spriteId].y2 = 0x10;
gSprites[spriteId].data[0] = 0xc8;
gSprites[spriteId].data[1] = 0x49;
}
spriteId = CreateSprite(&gSpriteTemplate_8401D40[0], 0xb0, 0x2b, 0x67);
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20;
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = 0x20;
gSprites[spriteId].data[0] = 0xb0;
gSprites[spriteId].data[1] = 0x2b;
spriteId = CreateSprite(&gSpriteTemplate_8401D40[1], 0xc8, 0x63, 0x65);
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 4;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 4;
gSprites[spriteId].data[0] = 0xc8;
gSprites[spriteId].data[1] = 0x63;
sCableCarPtr->unk_0002 = 7;
@@ -875,18 +875,18 @@ static void LoadSprites(void)
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].pos2.x = 0x08;
- gSprites[spriteId].pos2.y = 0x10;
+ gSprites[spriteId].x2 = 0x08;
+ gSprites[spriteId].y2 = 0x10;
gSprites[spriteId].data[0] = 0x80;
gSprites[spriteId].data[1] = 0x27;
}
spriteId = CreateSprite(&gSpriteTemplate_8401D40[0], 0x68, 0x09, 0x67);
- gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20;
+ gSprites[spriteId].x2 = gSprites[spriteId].y2 = 0x20;
gSprites[spriteId].data[0] = 0x68;
gSprites[spriteId].data[1] = 0x09;
spriteId = CreateSprite(&gSpriteTemplate_8401D40[1], 0x80, 0x41, 0x65);
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 4;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 4;
gSprites[spriteId].data[0] = 0x80;
gSprites[spriteId].data[1] = 0x41;
sCableCarPtr->unk_0002 = 2;
@@ -897,8 +897,8 @@ static void LoadSprites(void)
for (i = 0; i < 9; i++)
{
spriteId = CreateSprite(&gSpriteTemplate_8401D40[2], 16 * i + 0x60, 8 * i - 8, 0x68);
- gSprites[spriteId].pos2.x = 8;
- gSprites[spriteId].pos2.y = 8;
+ gSprites[spriteId].x2 = 8;
+ gSprites[spriteId].y2 = 8;
}
if ((rval % 64) == 0)
{
@@ -906,15 +906,15 @@ static void LoadSprites(void)
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].pos2.x = -gSprites[spriteId].centerToCornerVecX;
- gSprites[spriteId].pos2.y = -gSprites[spriteId].centerToCornerVecY;
+ gSprites[spriteId].x2 = -gSprites[spriteId].centerToCornerVecX;
+ gSprites[spriteId].y2 = -gSprites[spriteId].centerToCornerVecY;
if (gSpecialVar_0x8004 == 0)
{
if (rval % 2)
{
StartSpriteAnim(&gSprites[spriteId], 6);
gSprites[spriteId].data[1] = 1;
- gSprites[spriteId].pos1.y += 2;
+ gSprites[spriteId].y += 2;
}
else
{
@@ -928,7 +928,7 @@ static void LoadSprites(void)
{
StartSpriteAnim(&gSprites[spriteId], 7);
gSprites[spriteId].data[1] = 1;
- gSprites[spriteId].pos1.y += 2;
+ gSprites[spriteId].y += 2;
}
else
{
diff --git a/src/cable_club.c b/src/cable_club.c
index aeae50f50..961ab739f 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -1,7 +1,9 @@
#include "global.h"
+#include "cable_club.h"
#include "battle.h"
#include "battle_records.h"
-#include "cable_club.h"
+#include "constants/songs.h"
+#include "contest_util.h"
#include "event_data.h"
#include "field_message_box.h"
#include "field_specials.h"
@@ -11,12 +13,10 @@
#include "m4a.h"
#include "main.h"
#include "menu.h"
+#include "overworld.h"
#include "palette.h"
#include "record_mixing.h"
-#include "overworld.h"
#include "script.h"
-#include "script_pokemon_80C4.h"
-#include "constants/songs.h"
#include "sound.h"
#include "start_menu.h"
#include "string_util.h"
@@ -431,7 +431,7 @@ static void sub_80831F8(u8 taskId)
return;
if (gSpecialVar_Result == 3)
{
- sub_800832C();
+ SetCloseLinkCallback();
HideFieldMessageBox();
gTasks[taskId].func = sub_80833C4;
}
@@ -452,7 +452,7 @@ static void sub_8083288(u8 taskId)
if (gSpecialVar_Result == 3)
{
- sub_800832C();
+ SetCloseLinkCallback();
HideFieldMessageBox();
gTasks[taskId].func = sub_80833C4;
}
@@ -511,7 +511,7 @@ static void sub_8083314(u8 taskId)
return;
}
- sub_800832C();
+ SetCloseLinkCallback();
gTasks[taskId].func = sub_80833C4;
}
@@ -757,7 +757,7 @@ static void sub_808382C(u8 taskId)
task->data[0]++;
break;
case 3:
- sub_800832C();
+ SetCloseLinkCallback();
task->data[0]++;
break;
case 4:
@@ -890,7 +890,7 @@ static void sub_8083AAC(u8 taskId)
gUnknown_020297D8.field0 = 0;
gUnknown_020297D8.field1 = 0;
m4aMPlayAllStop();
- sub_800832C();
+ SetCloseLinkCallback();
task->data[0]++;
break;
case 3:
@@ -1009,7 +1009,7 @@ static void sub_8083CA4(u8 taskId)
void unref_sub_8083CC8(u8 taskId)
{
- sub_800832C();
+ SetCloseLinkCallback();
gTasks[taskId].func = sub_8083CA4;
}
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 760887834..c15b94d8f 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -330,7 +330,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
}
// flash fire triggered
- if ((eFlashFireArr.arr[bankAtk] & 1) && type == TYPE_FIRE)
+ if ((eBattleFlagsArr.arr[bankAtk] & 1) && type == TYPE_FIRE)
damage = (15 * damage) / 10;
}
diff --git a/src/choose_party.c b/src/choose_party.c
index f1252f965..ded31efbd 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -23,8 +23,8 @@
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_020384F0;
-extern struct UnknownPokemonStruct2 gMultiPartnerParty[3];
-extern u8 gUnknown_0202E8F6;
+extern struct MultiBattlePokemonTx gMultiPartnerParty[3];
+extern u8 gPartyMenuMessage_IsPrinting;
extern const u16 gBattleTowerBannedSpecies[];
EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0};
@@ -57,14 +57,14 @@ static void sub_81231AC(void);
void sub_8121E10(void)
{
ClearPartySelection();
- ewram1B000.unk263 = 0;
+ ePartyMenu2.unk263 = 0;
OpenPartyMenu(PARTY_MENU_TYPE_BATTLE_TOWER, 0);
}
void sub_8121E34(void)
{
ClearPartySelection();
- ewram1B000.unk263 = 1;
+ ePartyMenu2.unk263 = 1;
OpenPartyMenu(PARTY_MENU_TYPE_BATTLE_TOWER, 0);
}
@@ -80,46 +80,47 @@ bool8 SetupBattleTowerPartyMenu(void)
{
u8 i;
- switch (ewram1B000_alt.setupState)
+ switch (ePartyMenu2.pmSetupState)
{
case 0:
- if (ewram1B000_alt.monIndex < gPlayerPartyCount)
+ if (ePartyMenu2.pmMonIndex < gPlayerPartyCount)
{
- TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]);
- ewram1B000_alt.monIndex++;
+ TryCreatePartyMenuMonIcon(ePartyMenu2.menuHandlerTaskId,
+ ePartyMenu2.pmMonIndex, &gPlayerParty[ePartyMenu2.pmMonIndex]);
+ ePartyMenu2.pmMonIndex++;
}
else
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
break;
case 1:
LoadHeldItemIconGraphics();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 2:
- CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId);
- ewram1B000_alt.setupState++;
+ CreateHeldItemIcons_806DC34(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 3:
- if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) == 1)
+ if (sub_806BD58(ePartyMenu2.menuHandlerTaskId, ePartyMenu2.pmMonIndex) == 1)
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
else
{
- ewram1B000_alt.monIndex++;
+ ePartyMenu2.pmMonIndex++;
}
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 5:
PrintPartyMenuMonNicknames();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 6:
for (i = 0; i < gPlayerPartyCount; i++)
@@ -142,18 +143,18 @@ bool8 SetupBattleTowerPartyMenu(void)
DrawMonDescriptorStatus(i, 0x7E);
}
}
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 7:
- if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1)
+ if (DrawPartyMonBackground(ePartyMenu2.pmMonIndex) == 1)
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState = 0;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState = 0;
return TRUE;
}
else
{
- ewram1B000_alt.monIndex++;
+ ePartyMenu2.pmMonIndex++;
}
break;
}
@@ -168,7 +169,7 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
if (GetMonData(pkmn, MON_DATA_IS_EGG))
return FALSE;
- if (ewram1B000.unk263 == 0)
+ if (ePartyMenu2.unk263 == 0)
{
if (GetMonData(pkmn, MON_DATA_HP) == 0)
return FALSE;
@@ -195,7 +196,7 @@ static u8 sub_81220C8(void)
{
u8 i;
- if (ewram1B000.unk263 == 0)
+ if (ePartyMenu2.unk263 == 0)
return 0xFF;
if (gSelectedOrderFromParty[2] == 0)
return 0x11;
@@ -203,13 +204,14 @@ static u8 sub_81220C8(void)
{
u8 j;
- ewram1B000.unk282 = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i] - 1], MON_DATA_SPECIES);
- ewram1B000.unk280 = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i] - 1], MON_DATA_HELD_ITEM);
+ ePartyMenu2.pmUnk282 = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i] - 1], MON_DATA_SPECIES);
+ ePartyMenu2.pmUnk280 = GetMonData(&gPlayerParty[gSelectedOrderFromParty[i] - 1], MON_DATA_HELD_ITEM);
for (j = i + 1; j < 3; j++)
{
- if (ewram1B000.unk282 == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j] - 1], MON_DATA_SPECIES))
+ if (ePartyMenu2.pmUnk282 == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j] - 1], MON_DATA_SPECIES))
return 0x12;
- if (ewram1B000.unk280 != 0 && ewram1B000.unk280 == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j] - 1], MON_DATA_HELD_ITEM))
+ if (ePartyMenu2.pmUnk280 != 0 &&
+ ePartyMenu2.pmUnk280 == GetMonData(&gPlayerParty[gSelectedOrderFromParty[j] - 1], MON_DATA_HELD_ITEM))
return 0x13;
}
}
@@ -404,11 +406,11 @@ static void sub_8122530(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(ewram1B000.menuHandlerTaskId, gUnknown_020384F0);
- ChangeBattleTowerPartyMenuSelection(ewram1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gUnknown_020384F0);
+ ChangeBattleTowerPartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1);
gLastFieldPokeMenuOpened = gUnknown_020384F0;
- sub_81221F8(ewram1B000.menuHandlerTaskId);
+ sub_81221F8(ePartyMenu2.menuHandlerTaskId);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
@@ -432,7 +434,7 @@ static void sub_81225D4(u8 taskId)
u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data[0];
DestroyTask(taskId);
- ewram1B000.unk262 = 1;
+ ePartyMenu2.unk262 = 1;
ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, PSS_MODE_NORMAL);
}
}
@@ -463,14 +465,14 @@ static void BattleTowerEntryMenuCallback_Enter(u8 taskId)
PlaySE(SE_FAILURE);
Menu_EraseWindowRect(20, 10, 29, 19);
Menu_DestroyCursor();
- sub_806D5A4();
- sub_806E834(gOtherText_NoMoreThreePoke, 1);
+ PartyMenuEraseMsgBoxAndFrame();
+ DisplayPartyMenuMessage(gOtherText_NoMoreThreePoke, 1);
gTasks[taskId].func = sub_8122728;
}
static void sub_8122728(u8 taskId)
{
- if (gUnknown_0202E8F6 == 1)
+ if (gPartyMenuMessage_IsPrinting == 1)
return;
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
@@ -557,23 +559,23 @@ void Debug_CopyLastThreePartyMonsToMultiPartnerParty(void)
bool8 SetupLinkMultiBattlePartyMenu(void)
{
- switch (ewram1B000_alt.setupState)
+ switch (ePartyMenu2.pmSetupState)
{
case 0:
- sub_81228E8(ewram1B000_alt.menuHandlerTaskId);
- ewram1B000_alt.setupState++;
+ sub_81228E8(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 1:
LoadHeldItemIconGraphics();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 2:
- sub_8122950(ewram1B000_alt.menuHandlerTaskId);
- ewram1B000_alt.setupState++;
+ sub_8122950(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 3:
sub_81229B8();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 4:
sub_806B908();
@@ -647,7 +649,7 @@ void HandleLinkMultiBattlePartyMenu(u8 taskId)
sub_806D4AC(taskId, gMultiPartnerParty[1].species, 1);
sub_806D4AC(taskId, gMultiPartnerParty[2].species, 2);
gTasks[taskId].func = sub_8122AB8;
- ewram1B000.unk261 = 1;
+ ePartyMenu2.unk261 = 1;
}
}
@@ -657,7 +659,7 @@ static void sub_8122AB8(u8 taskId)
if (gTasks[taskId].data[0] == 0)
{
gTasks[taskId].func = sub_8122B10;
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
PlaySE(SE_M_HARDEN);
}
}
@@ -707,61 +709,62 @@ static void sub_8122C18(u8 taskId)
// Exactly the same as SetupBattleTowerPartyMenu except for case 6
bool8 unref_sub_8122C60(void)
{
- switch (ewram1B000_alt.setupState)
+ switch (ePartyMenu2.pmSetupState)
{
case 0:
- if (ewram1B000_alt.monIndex < gPlayerPartyCount)
+ if (ePartyMenu2.pmMonIndex < gPlayerPartyCount)
{
- TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]);
- ewram1B000_alt.monIndex++;
+ TryCreatePartyMenuMonIcon(ePartyMenu2.menuHandlerTaskId,
+ ePartyMenu2.pmMonIndex, &gPlayerParty[ePartyMenu2.pmMonIndex]);
+ ePartyMenu2.pmMonIndex++;
}
else
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
break;
case 1:
LoadHeldItemIconGraphics();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 2:
- CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId);
- ewram1B000_alt.setupState++;
+ CreateHeldItemIcons_806DC34(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 3:
- if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) == 1)
+ if (sub_806BD58(ePartyMenu2.menuHandlerTaskId, ePartyMenu2.pmMonIndex) == 1)
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
else
{
- ewram1B000_alt.monIndex++;
+ ePartyMenu2.pmMonIndex++;
}
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 5:
PrintPartyMenuMonNicknames();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 6:
sub_806BCE8();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 7:
- if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1)
+ if (DrawPartyMonBackground(ePartyMenu2.pmMonIndex) == 1)
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState = 0;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState = 0;
return TRUE;
}
else
{
- ewram1B000_alt.monIndex++;
+ ePartyMenu2.pmMonIndex++;
}
break;
}
@@ -884,11 +887,11 @@ static void sub_8122F90(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(ewram1B000.menuHandlerTaskId, gUnknown_020384F0);
- ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gUnknown_020384F0);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1);
gLastFieldPokeMenuOpened = gUnknown_020384F0;
- sub_8122D94(ewram1B000.menuHandlerTaskId);
+ sub_8122D94(ePartyMenu2.menuHandlerTaskId);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
@@ -911,7 +914,7 @@ static void sub_8123034(u8 taskId)
u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data[0];
DestroyTask(taskId);
- ewram1B000.unk262 = 1;
+ ePartyMenu2.unk262 = 1;
ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, PSS_MODE_NORMAL);
}
}
diff --git a/src/contest.c b/src/contest.c
index 50824c867..820ae326a 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -1,15 +1,16 @@
#include "global.h"
-#include "constants/items.h"
+#include "contest.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
#include "constants/event_objects.h"
+#include "constants/items.h"
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/species.h"
-#include "battle.h"
-#include "battle_anim.h"
-#include "blend_palette.h"
-#include "contest.h"
+#include "contest_ai.h"
#include "contest_effect.h"
-#include "contest_link_80C857C.h"
+#include "contest_link.h"
#include "data2.h"
#include "decompress.h"
#include "ewram.h"
@@ -23,6 +24,7 @@
#include "palette.h"
#include "random.h"
#include "rom_8077ABC.h"
+#include "scanline_effect.h"
#include "script.h"
#include "sound.h"
#include "sprite.h"
@@ -30,17 +32,16 @@
#include "task.h"
#include "text.h"
#include "tv.h"
-#include "scanline_effect.h"
#include "util.h"
-#include "contest_ai.h"
+
+#include "contest_internal.h"
extern u8 gUnknown_020297ED;
extern void sub_80C8A38(u8);
-extern void sub_80C8AD0(u8);
-extern void sub_80C8C80(u8);
+extern void Task_LinkContest_CommunicateFinalStandings(u8);
+extern void Task_LinkContest_CommunicateAppealsState(u8);
-extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern u8 gBattleMonForms[];
extern u8 gDisplayedStringBattle[];
extern u16 gBattleTypeFlags;
@@ -48,45 +49,20 @@ extern u8 gBattlerAttacker;
extern u8 gBattlerTarget;
extern u8 gBattlerPositions[];
extern u8 gBattlerSpriteIds[];
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
u32 gContestRngValue;
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern const struct ContestPokemon gContestOpponents[60];
-extern const u8 gUnknown_083CA308[][2];
-extern const u8 gUnknown_083CA310[][2];
-extern const u8 gUnknown_083CA318[][2];
-extern const u8 gUnknown_083CA330[][2];
-extern const u8 gUnknown_083CA338[];
-extern const u8 gUnknown_083CA33C[];
extern const u8 gUnknown_083CA340[][4];
-extern const struct SpriteSheet gUnknown_083CA350;
-extern const struct SpriteTemplate gSpriteTemplate_83CA3AC;
-extern const struct CompressedSpriteSheet gUnknown_083CA3C4[];
-extern const struct SpritePalette gUnknown_083CA3E4;
-extern const struct SpriteTemplate gSpriteTemplate_83CA3F4[];
-extern const struct SubspriteTable gSubspriteTables_83CA464[];
-extern const struct CompressedSpriteSheet gUnknown_083CA46C;
-extern const struct SpritePalette gUnknown_083CA474;
-extern const struct SpriteTemplate gSpriteTemplate_83CA484;
-extern const struct SpriteTemplate gSpriteTemplate_83CA4A4;
-extern const struct CompressedSpriteSheet gUnknown_083CA4BC;
-extern const struct CompressedSpriteSheet gUnknown_083CA4C4;
-extern const struct CompressedSpritePalette gUnknown_083CA4CC;
-extern const struct SpriteTemplate gUnknown_083CA4D4;
-extern const struct CompressedSpriteSheet gUnknown_083CC3AC;
-extern const struct CompressedSpritePalette gUnknown_083CC3B4[];
-extern const struct SpriteTemplate gSpriteTemplate_83CC454[];
extern const u8 gText_Contest_WhichMoveWillBePlayed[];
extern const u8 gText_Contest_ButItCantParticipate[];
-extern const u8 gUnknown_083CAFD7[];
-extern const u8 gUnknown_083CB00D[];
+extern const u8 gText_MonAppealedWithMove[];
+extern const u8 gText_MonWasWatchingOthers[];
extern const u8 ContestString_JudgeExpectantly2[];
extern const u8 ContestString_WentOverWell[];
extern const u8 ContestString_WentOverVeryWell[];
extern const u8 ContestString_AppealComboExcellently[];
-extern const u8 gUnknown_083CBF60[];
-extern const u8 gUnknown_083CB02C[];
+extern const u8 ContestString_TooNervous[];
+extern const u8 gText_AllOutOfAppealTime[];
extern const u8 *const gContestStandOutStrings[];
extern const u8 ContestString_DissapointedRepeat[];
extern const u8 ContestString_WentOverGreat[];
@@ -95,192 +71,27 @@ extern const u8 ContestString_GotCrowdGoing[];
extern const u8 ContestString_CantAppealNextTurn[];
extern const u8 ContestString_CrowdWatches[];
extern const u8 ContestString_Ignored2[];
-extern const u8 *const gUnknown_083CC188[];
-extern const u8 gText_Contest_Shyness[];
-extern const u8 gText_Contest_Anxiety[];
-extern const u8 gText_Contest_Laziness[];
-extern const u8 gText_Contest_Hesitancy[];
-extern const u8 gText_Contest_Fear[];
extern const u8 *const gContestCategoryStrings[];
-extern const u8 gUnknown_083CC2EC[];
-extern const u8 *const gUnknown_083CC330[];
+extern const u8 *const sInvalidContestMoveNames[];
extern const u8 gUnknownText_UnknownFormatting2[];
extern const u8 gUnknownText_UnknownFormatting3[];
-extern const u8 gUnknown_083CC59C[];
-extern const u8 gUnknown_083CC5A2[];
-extern const u16 gUnknown_083CC5A4[];
-extern const struct ContestWinner gUnknown_083CC5D0[];
-extern const u8 gUnknownText_MissedTurn[];
-extern const u8 gUnknownText_LinkStandbyAndWinner[];
-extern void (*const gContestEffectFuncs[])(void);
-extern const s8 gContestExcitementTable[][5];
-
-void sub_80AB350(void);
-void sub_80AB5D4(u8);
-void sub_80AB604(u8);
-void sub_80AB678(u8);
-void sub_80AB694(u8);
-void sub_80AB6B4(u8);
-u8 sub_80AB70C(u8 *);
-void sub_80AB960(u8);
-void sub_80AB9A0(u8);
-void ContestMainCallback2(void);
-void ContestVBlankCallback(void);
-void sub_80ABB70(u8);
-void sub_80ABC3C(u8);
-void sub_80ABC70(u8);
-void sub_80ABCDC(u8);
-void sub_80ABEA0(u8);
-void sub_80AC0AC(s8);
-void nullsub_17(s8);
-void sub_80AC0C8(u8);
-void sub_80AC15C(u8);
-void sub_80AC188(u8);
-void sub_80AC204(u8);
-void sub_80AC250(u8);
-void sub_80AC284(u8);
-void sub_80AC2CC(u8);
-void sub_80AD8DC(u8);
-void sub_80AD8FC(struct Sprite *);
-void sub_80AD92C(struct Sprite *);
-void sub_80AD960(u8);
-void sub_80ADA1C(u8);
-void sub_80ADA4C(u8);
-void sub_80ADAD8(u8);
-void sub_80ADB04(u8);
-void sub_80ADB48(u8);
-void sub_80ADB88(u8);
-void sub_80ADC10(u8);
-void sub_80ADC4C(u8);
-void sub_80ADC84(u8);
-void sub_80ADCB4(u8);
-void sub_80ADD04(u8);
-void sub_80ADD74(u8);
-void sub_80ADDA4(u8);
-void sub_80ADE54(u8);
-void sub_80ADEAC(u8);
-void sub_80ADEEC(u8);
-void sub_80ADF4C(u8);
-void sub_80ADF98(u8);
-void sub_80ADFD8(u8);
-void sub_80AE010(void);
-void InsertStringDigit(u8 *, s32);
-bool8 sub_80AE074(void);
-void sub_80AEB4C(void *);
-void sub_80AE5BC(u8);
-void sub_80AE5D4(u8, u8);
-void sub_80AE6CC(u8);
-void sub_80AE6E4(u8, u8);
-u8 CreateJudgeSprite(void);
-u8 sub_80AE8B4(void);
-u8 sub_80AE9FC(u16, u32, u32);
-void sub_80AEB30(void);
-void sub_80AEBEC(u16);
-void sub_80AED58(void);
-bool8 sub_80AEE54(u8, u8);
-bool8 sub_80AF038(u8);
-void sub_80AF120(void);
-void sub_80AF138(void);
-u16 GetChosenMove(u8);
-void sub_80AF1B8(void);
-void sub_80AF2A0(u8);
-void sub_80AF2FC(void);
-void sub_80AF3C0(void);
-s16 sub_80AF688(u8);
-void DetermineFinalStandings(void);
-bool8 sub_80AF828(s32, s32, struct UnknownContestStruct6 *);
-void sub_80AF860(void);
-void sub_80AF94C(u8);
-void sub_80AFA5C(void);
-u16 sub_80AFB40(u8);
-s8 sub_80AFB74(s16);
-u8 sub_80AFBA0(s16, s16, u8);
-void sub_80AFC74(u8);
-void sub_80AFE30(void);
-void sub_80AFF10(void);
-bool8 sub_80AFF28(void);
-void sub_80AFF60(struct Sprite *);
-void sub_80AFFE0(bool8);
-void sub_80B0034(void);
-void CreateApplauseMeterSprite(void);
-void nullsub_18(s8);
-void sub_80B0238(struct Sprite *);
-void sub_80B0280(struct Sprite *);
-void sub_80B02A8(struct Sprite *);
-void sub_80B02F4(struct Sprite *);
-void sub_80B0324(void);
-void sub_80B03A8(u8);
-void sub_80B03D8(u8);
-void sub_80B0458(u8);
-void sub_80B0518(void);
-void sub_80B0548(u8);
-void sub_80B05A4(u8);
-void nullsub_19(int);
-void sub_80B05FC(u8);
-void sub_80B0748(u8);
-void sub_80B09B0(u8);
-u8 sub_80B09E4(u8);
-void sub_80B0BC4(u8, bool8);
-void sub_80B0C5C(struct Sprite *);
-void sub_80B0CB0(struct Sprite *);
-void sub_80B0CDC(u8, int);
-void unref_sub_80B0CF4(void);
-void sub_80B0D7C(void);
-void sub_80B1118(void);
-void sub_80B114C(u8);
-void sub_80B146C(u8, u8);
-void sub_80B159C(void);
-void sub_80B1710(u8);
-void sub_80B1928(void);
-u8 sub_80B1A2C(void);
-void c3_08130B10(u8);
-void sub_80B1B14(void);
-void sub_80B1B68(u8);
-void sub_80B1BDC(void);
-void sub_80B1C34(u8);
-void sub_80B1CBC(s8);
-void sub_80B1CFC(u8);
-void sub_80B1DDC(void);
-void sub_80B1DFC(u8);
-void sub_80B1EA8(s8, s8);
-void sub_80B1F4C(u8);
-void sub_80B1FD0(bool8);
-const u8 *GetTurnOrderNumberGfx(u8);
-void sub_80B20C4(void);
-void sub_80B2184(void);
-void sub_80B2280(void);
-void sub_80B237C(u8);
-void sub_80B23BC(u8);
-void sub_80B2400(u8);
-void sub_80B253C(u8);
-void sub_80B25A4(u8);
-void sub_80B25E4(u8);
-void sub_80B26C8(u8);
-u16 SanitizeMove(u16);
-u16 SanitizeSpecies(u16);
-void sub_80B2790(u8);
-void sub_80B28CC(int);
-void sub_80B28F0(u8);
-void sub_80B292C(void);
-void sub_80B2968(void);
-void SelectContestMoveBankTarget(u16);
EWRAM_DATA u8 gUnknown_0203856C = 0;
EWRAM_DATA struct ContestPokemon gContestMons[4] = {0};
-EWRAM_DATA s16 gContestMonConditions[4] = {0};
-EWRAM_DATA s16 gUnknown_02038678[4] = {0};
-EWRAM_DATA s16 gUnknown_02038680[4] = {0};
-EWRAM_DATA s16 gUnknown_02038688[4] = {0};
+EWRAM_DATA s16 gContestMonRound1Points[4] = {0};
+EWRAM_DATA s16 gContestMonTotalPoints[4] = {0};
+EWRAM_DATA s16 gContestMonAppealPointTotals[4] = {0};
+EWRAM_DATA s16 gContestMonRound2Points[4] = {0};
EWRAM_DATA u8 gContestFinalStandings[4] = {0}; // What "place" each participant came in.
EWRAM_DATA u8 gContestMonPartyIndex = 0;
EWRAM_DATA u8 gContestPlayerMonIndex = 0;
-EWRAM_DATA u8 gUnknown_02038696[4] = {0};
+EWRAM_DATA u8 gContestantTurnOrder[4] = {0};
EWRAM_DATA u8 gIsLinkContest = 0;
-EWRAM_DATA u8 gUnknown_0203869B = 0;
+EWRAM_DATA u8 gContestLinkLeaderIndex = 0;
EWRAM_DATA u16 gSpecialVar_ContestCategory = 0;
EWRAM_DATA u16 gSpecialVar_ContestRank = 0;
-void nullsub_89(u8 taskId)
+void TaskDummy1(u8 taskId)
{
}
@@ -323,31 +134,32 @@ void ResetContestGpuRegs(void)
gBattle_WIN1H = 0;
gBattle_WIN1V = 0;
}
+
void LoadContestBgAfterMoveAnim(void)
{
s32 i;
LZDecompressVram(gContestMiscGfx, (void *)VRAM);
LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
- LZDecompressVram(gUnknown_08D1725C, (void *)(VRAM + 0xD000));
- LoadCompressedPalette(gUnknown_08D17144, 0, 0x200);
- sub_80AB350();
+ LZDecompressVram(gContestGfx, (void *)(VRAM + 0xD000));
+ LoadCompressedPalette(gContestPalette, 0, 0x200);
+ InitContestResources();
for (i = 0; i < 4; i++)
{
u32 var = 5 + i;
- LoadPalette(shared18000.unk18004[var], 16 * (5 + gUnknown_02038696[i]), 16 * sizeof(u16));
+ LoadPalette(eContestTempSave.cachedWindowPalettes[var], 16 * (5 + gContestantTurnOrder[i]), 16 * sizeof(u16));
}
}
void SetUpContestWindow(void)
{
Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8);
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6FD8);
Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6FF4);
}
-void sub_80AB350(void)
+void InitContestResources(void)
{
u8 i;
@@ -370,23 +182,23 @@ void ClearContestVars(void)
memset(&sContestantStatus[i], 0, sizeof(sContestantStatus[i]));
for (i = 0; i < 4; i++)
{
- sContestantStatus[i].unkB_0 = 0;
+ sContestantStatus[i].ranking = 0;
sContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
sContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
}
- memset(&shared192D0, 0, sizeof(shared192D0));
+ memset(&eContestAppealResults, 0, sizeof(eContestAppealResults));
memset(eContestAI, 0, sizeof(struct ContestAIInfo));
- memset(&shared19328, 0, sizeof(shared19328));
- memset(shared19338, 0, 4 * sizeof(*shared19338));
+ memset(&eContestExcitement, 0, sizeof(eContestExcitement));
+ memset(eContestGfxState, 0, 4 * sizeof(*eContestGfxState));
if (!(gIsLinkContest & 1))
- sub_80B0F28(0);
+ SortContestants(0);
for (i = 0; i < 4; i++)
{
sContestantStatus[i].nextTurnOrder = 0xFF;
- sContest.unk19218[i] = gUnknown_02038696[i];
+ sContest.prevTurnOrder[i] = gContestantTurnOrder[i];
}
- sub_80B159C();
+ ApplyNextTurnOrder();
}
void CB2_StartContest(void)
@@ -405,83 +217,83 @@ void CB2_StartContest(void)
ResetTasks();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
- //shared18000.unk18000 = 0;
- gSharedMem[0x18000] = 0;
+ //eContestTempSave.unk18000 = 0;
+ eEnableContestDebugging = 0;
ClearBattleMonForms();
ClearContestVars();
gMain.state++;
break;
case 1:
- sub_80AB350();
+ InitContestResources();
gMain.state++;
break;
case 2:
- if (sub_80AB70C(&sContest.unk1925D) == 0)
+ if (SetupContestGraphics(&sContest.contestSetupState) == 0)
break;
- sContest.unk1925D = 0;
+ sContest.contestSetupState = 0;
gMain.state++;
break;
case 3:
- sub_80B2184();
+ SetBgForCurtainDrop();
gBattle_BG1_X = 0;
gBattle_BG1_Y = 0;
BeginFastPaletteFade(2);
gPaletteFade.bufferTransferDisabled = FALSE;
SetVBlankCallback(ContestVBlankCallback);
- sContest.mainTaskId = CreateTask(sub_80AB5D4, 10);
+ sContest.mainTaskId = CreateTask(Task_StartContestWaitFade, 10);
SetMainCallback2(ContestMainCallback2);
break;
}
}
-void sub_80AB5D4(u8 taskId)
+void Task_StartContestWaitFade(u8 taskId)
{
if (!gPaletteFade.active)
- gTasks[taskId].func = sub_80AB604;
+ gTasks[taskId].func = Task_TryStartLinkContest;
}
-void sub_80AB604(u8 taskId)
+void Task_TryStartLinkContest(u8 taskId)
{
if (gIsLinkContest & 1)
{
if (!gPaletteFade.active)
{
gPaletteFade.bufferTransferDisabled = FALSE;
- sub_80AF860();
- CreateTask(sub_80AB678, 0);
- gTasks[taskId].func = nullsub_89;
+ ContestPrintLinkStandby();
+ CreateTask(Task_CommunicateMonIdxs, 0);
+ gTasks[taskId].func = TaskDummy1;
}
}
else
{
- gTasks[taskId].func = sub_80AB960;
+ gTasks[taskId].func = Task_WaitToRaiseCurtainAtStart;
}
}
-void sub_80AB678(u8 taskId)
+void Task_CommunicateMonIdxs(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C89DC, sub_80AB694);
+ SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateMonIdxs, Task_EndCommunicateMonIdxs);
}
-void sub_80AB694(u8 taskId)
+void Task_EndCommunicateMonIdxs(u8 taskId)
{
u16 one = 1;
gTasks[taskId].data[0] = one;
- gTasks[taskId].func = sub_80AB6B4;
+ gTasks[taskId].func = Task_ReadyStartLinkContest;
}
-void sub_80AB6B4(u8 taskId)
+void Task_ReadyStartLinkContest(u8 taskId)
{
if (--gTasks[taskId].data[0] > 0)
return;
GetMultiplayerId(); // unused return value
DestroyTask(taskId);
- gTasks[sContest.mainTaskId].func = sub_80AB960;
+ gTasks[sContest.mainTaskId].func = Task_WaitToRaiseCurtainAtStart;
gRngValue = gContestRngValue;
}
-u8 sub_80AB70C(u8 *a)
+u8 SetupContestGraphics(u8 *a)
{
u16 sp0[16];
u16 sp20[16];
@@ -497,34 +309,34 @@ u8 sub_80AB70C(u8 *a)
break;
case 2:
LZDecompressVram(gContestAudienceGfx, (void *)(VRAM + 0x2000));
- DmaCopyLarge32(3, (void *)(VRAM + 0x2000), shared15800, 0x2000, 0x1000);
+ DmaCopyLarge32(3, (void *)(VRAM + 0x2000), eUnzippedContestAudience_Gfx, 0x2000, 0x1000);
break;
case 3:
- LZDecompressVram(gUnknown_08D1725C, (void *)(VRAM + 0xD000));
+ LZDecompressVram(gContestGfx, (void *)(VRAM + 0xD000));
break;
case 4:
- LZDecompressVram(gUnknown_08D17424, (void *)(VRAM + 0xE000));
- DmaCopy32Defvars(3, (void *)(VRAM + 0xE000), shared18000.unk18A04, 0x800);
+ LZDecompressVram(gContestBgmap, (void *)(VRAM + 0xE000));
+ DmaCopy32Defvars(3, (void *)(VRAM + 0xE000), eContestTempSave.savedJunk, 0x800);
break;
case 5:
- LoadCompressedPalette(gUnknown_08D17144, 0, 0x200);
+ LoadCompressedPalette(gContestPalette, 0, 0x200);
CpuCopy32(gPlttBufferUnfaded + 128, sp0, 16 * sizeof(u16));
CpuCopy32(gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, sp20, 16 * sizeof(u16));
CpuCopy32(sp20, gPlttBufferUnfaded + 128, 16 * sizeof(u16));
CpuCopy32(sp0, gPlttBufferUnfaded + (5 + gContestPlayerMonIndex) * 16, 16 * sizeof(u16));
- DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18004, 0x200);
- sub_80AB350();
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedWindowPalettes, 0x200);
+ InitContestResources();
break;
case 6:
- sub_80B1118();
- sub_80AFA5C();
- sub_80AEB30();
- sContest.unk19216 = sub_80AE8B4();
- sub_80AFE30();
- sub_80B0034();
+ DrawContestantWindows();
+ FillContestantWindowBgs();
+ SwapMoveDescAndContestTilemaps();
+ sContest.judgeSpeechBubbleSpriteId = CreateJudgeSpeechBubbleSprite();
+ CreateSliderHeartSprites();
+ CreateNextTurnSprites();
CreateApplauseMeterSprite();
- sub_80B0324();
- sub_80B0518();
+ CreateJudgeAttentionEyeTask();
+ CreateUnusedBlendTask();
gBattlerPositions[0] = 0;
gBattlerPositions[1] = 1;
gBattlerPositions[2] = 3;
@@ -533,7 +345,7 @@ u8 sub_80AB70C(u8 *a)
gBattlerAttacker = 2;
gBattlerTarget = 3;
gBattlerSpriteIds[gBattlerAttacker] = CreateJudgeSprite();
- sub_80B292C();
+ CreateInvisibleBattleTargetSprite();
break;
default:
*a = 0;
@@ -544,18 +356,18 @@ u8 sub_80AB70C(u8 *a)
return 0;
}
-void sub_80AB960(u8 taskId)
+void Task_WaitToRaiseCurtainAtStart(u8 taskId)
{
gPaletteFade.bufferTransferDisabled = FALSE;
if (!gPaletteFade.active)
{
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- gTasks[taskId].func = sub_80AB9A0;
+ gTasks[taskId].func = Task_RaiseCurtainAtStart;
}
}
-void sub_80AB9A0(u8 taskId)
+void Task_RaiseCurtainAtStart(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -572,22 +384,22 @@ void sub_80AB9A0(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 2:
- sub_80B2280();
+ UpdateContestantBoxOrder();
gTasks[taskId].data[0]++;
break;
case 3:
REG_BG0CNT_BITFIELD.priority = 0;
REG_BG2CNT_BITFIELD.priority = 0;
- sub_80B1B14();
+ SlideApplauseMeterIn();
gTasks[taskId].data[0]++;
break;
case 4:
default:
- if (sContest.unk1920A_6)
+ if (sContest.applauseMeterIsMoving)
break;
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- gTasks[taskId].func = sub_80ABB70;
+ gTasks[taskId].func = Task_DisplayAppealNumberText;
break;
}
}
@@ -595,8 +407,8 @@ void sub_80AB9A0(u8 taskId)
void ContestMainCallback2(void)
{
#if DEBUG
- if (gUnknown_020297ED == 1 && gMain.newKeys == 4)
- unref_sub_80B0CF4();
+ if (gUnknown_020297ED == 1 && gMain.newKeys == SELECT_BUTTON)
+ ContestDebugTogglePointTotal();
#endif
AnimateSprites();
RunTasks();
@@ -624,48 +436,48 @@ void ContestVBlankCallback(void)
ScanlineEffect_InitHBlankDmaTransfer();
}
-void sub_80ABB70(u8 taskId)
+void Task_DisplayAppealNumberText(u8 taskId)
{
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- sub_80B0D7C();
- DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400);
+ ContestDebugDoPrint();
+ DmaCopy32Defvars(3, gPlttBufferUnfaded, eContestTempSave.cachedPlttBufferUnfaded, 0x400);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed);
else
StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate);
- InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1);
- sub_80AF138();
+ InsertStringDigit(gDisplayedStringBattle, sContest.appealNumber + 1);
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].func = sub_80ABC3C;
}
void sub_80ABC3C(u8 taskId)
{
- if (Text_UpdateWindowInContest(&gMenuWindow) == 1)
- gTasks[taskId].func = sub_80ABC70;
+ if (Contest_RunTextPrinter(&gMenuWindow) == 1)
+ gTasks[taskId].func = Task_TryShowMoveSelectScreen;
}
-void sub_80ABC70(u8 taskId)
+void Task_TryShowMoveSelectScreen(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys == B_BUTTON))
{
PlaySE(SE_SELECT);
if (!Contest_IsMonsTurnDisabled(gContestPlayerMonIndex))
{
- sub_80AFFE0(TRUE);
- gTasks[taskId].func = sub_80ABCDC;
+ SetBottomSliderHeartsInvisibility(TRUE);
+ gTasks[taskId].func = Task_ShowMoveSelectScreen;
}
else
{
- gTasks[taskId].func = sub_80AC0C8;
+ gTasks[taskId].func = Task_SelectedMove;
}
}
}
// Print the move list
-void sub_80ABCDC(u8 taskId)
+void Task_ShowMoveSelectScreen(u8 taskId)
{
u8 i;
u8 sp8[32];
@@ -673,7 +485,7 @@ void sub_80ABCDC(u8 taskId)
gBattle_BG0_Y = 0xA0;
gBattle_BG2_Y = 0xA0;
Text_FillWindowRectDefPalette(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
0,
gUnknown_083CA340[0][0],
gUnknown_083CA340[0][1],
@@ -686,7 +498,8 @@ void sub_80ABCDC(u8 taskId)
u8 *r5 = sp8;
if (sContestantStatus[gContestPlayerMonIndex].prevMove != MOVE_NONE
- && sub_80B214C(gContestPlayerMonIndex)
+ &&
+ IsContestantAllowedToCombo(gContestPlayerMonIndex)
&& AreMovesContestCombo(sContestantStatus[gContestPlayerMonIndex].prevMove, move) != 0
&& sContestantStatus[gContestPlayerMonIndex].hasJudgesAttention)
{
@@ -702,25 +515,25 @@ void sub_80ABCDC(u8 taskId)
r5 = StringCopy(r5, gMoveNames[move]);
Text_InitWindow8002E4C(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
sp8,
776 + i * 20,
gUnknown_083CA340[i][0] * 8 + 4,
gUnknown_083CA340[i][1] * 8,
1);
- Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_PrintWindow8002F44(&gWindowTemplate_Contest_MoveDescription);
}
MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 72);
- sub_80AC0AC(sContest.playerMoveChoice);
- sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]);
- gTasks[taskId].func = sub_80ABEA0;
+ DrawMoveSelectArrow(sContest.playerMoveChoice);
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]);
+ gTasks[taskId].func = Task_HandleMoveSelectInput;
}
void debug_sub_80B9EBC(u8);
// Handle move selection input
-void sub_80ABEA0(u8 taskId)
+void Task_HandleMoveSelectInput(u8 taskId)
{
u8 numMoves = 0;
s32 i;
@@ -735,7 +548,7 @@ void sub_80ABEA0(u8 taskId)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
- gTasks[taskId].func = sub_80AC0C8;
+ gTasks[taskId].func = Task_SelectedMove;
}
else
{
@@ -744,9 +557,9 @@ void sub_80ABEA0(u8 taskId)
case B_BUTTON:
sub_814A904();
PlaySE(SE_SELECT);
- sub_80AFFE0(FALSE);
+ SetBottomSliderHeartsInvisibility(FALSE);
Text_FillWindowRectDefPalette(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
0,
gUnknown_083CA340[0][0],
gUnknown_083CA340[0][1],
@@ -756,38 +569,38 @@ void sub_80ABEA0(u8 taskId)
StringCopy(gDisplayedStringBattle, gText_Contest_WhichMoveWillBePlayed);
else
StringCopy(gDisplayedStringBattle, gText_Contest_ButItCantParticipate);
- InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1);
- sub_80AF138();
+ InsertStringDigit(gDisplayedStringBattle, sContest.appealNumber + 1);
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle);
Text_InitWindowAndPrintText(&gMenuWindow, gStringVar4, 776, 1, 15);
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- gTasks[taskId].func = sub_80ABC70;
+ gTasks[taskId].func = Task_TryShowMoveSelectScreen;
break;
case DPAD_LEFT:
case DPAD_RIGHT:
break;
case DPAD_UP:
- nullsub_17(sContest.playerMoveChoice);
+ EraseMoveSelectArrow(sContest.playerMoveChoice);
if (sContest.playerMoveChoice == 0)
sContest.playerMoveChoice = numMoves - 1;
else
sContest.playerMoveChoice--;
- sub_80AC0AC(sContest.playerMoveChoice);
- sub_80AED58();
- sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]);
+ DrawMoveSelectArrow(sContest.playerMoveChoice);
+ Contest_ClearMoveDescriptionBox();
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]);
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
case DPAD_DOWN:
- nullsub_17(sContest.playerMoveChoice);
+ EraseMoveSelectArrow(sContest.playerMoveChoice);
if (sContest.playerMoveChoice == numMoves - 1)
sContest.playerMoveChoice = 0;
else
sContest.playerMoveChoice++;
- sub_80AC0AC(sContest.playerMoveChoice);
- sub_80AED58();
- sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]);
+ DrawMoveSelectArrow(sContest.playerMoveChoice);
+ Contest_ClearMoveDescriptionBox();
+ PrintContestMoveDescription(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]);
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
@@ -817,27 +630,27 @@ void debug_sub_80B9EBC(u8 taskId)
{
case 0:
Text_FillWindowRectDefPalette(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
0,
gUnknown_083CA340[0][0],
gUnknown_083CA340[0][1],
gUnknown_083CA340[0][2],
gUnknown_083CA340[0][3]);
Text_InitWindowAndPrintText(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
gMoveNames[gTasks[taskId].data[1]],
776,
gUnknown_083CA340[0][0],
gUnknown_083CA340[0][1]);
ConvertIntToDecimalStringN(text, gTasks[taskId].data[1], 2, 3);
Text_InitWindowAndPrintText(
- &gUnknown_03004210,
+ &gWindowTemplate_Contest_MoveDescription,
text,
796,
gUnknown_083CA340[1][0],
gUnknown_083CA340[1][1]);
- sub_80AED58();
- sub_80AEBEC(gTasks[taskId].data[1]);
+ Contest_ClearMoveDescriptionBox();
+ PrintContestMoveDescription(gTasks[taskId].data[1]);
gTasks[taskId].data[0]++;
break;
case 1:
@@ -871,7 +684,7 @@ void debug_sub_80B9EBC(u8 taskId)
case 8:
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- sub_80B1BDC();
+ SlideApplauseMeterOut();
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = debug_sub_80BA054;
break;
@@ -883,7 +696,7 @@ void debug_sub_80B9EBC(u8 taskId)
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = 0;
- gTasks[taskId].func = sub_80ABCDC;
+ gTasks[taskId].func = Task_ShowMoveSelectScreen;
break;
}
break;
@@ -900,27 +713,27 @@ void debug_sub_80BA054(u8 taskId)
case 0:
for (i = 0; i < 4; i++)
gBattleMonForms[i] = 0;
- memset(&shared19348, 0, sizeof(shared19348));
- sub_80B28F0(gContestPlayerMonIndex);
- r6 = sub_80AE9FC(
+ memset(&gContestResources__moveAnim, 0, sizeof(gContestResources__moveAnim));
+ SetMoveAnimAttackerData(gContestPlayerMonIndex);
+ r6 = CreateContestantSprite(
gContestMons[gContestPlayerMonIndex].species,
gContestMons[gContestPlayerMonIndex].otId,
gContestMons[gContestPlayerMonIndex].personality);
- gSprites[r6].pos2.x = 120;
- gSprites[r6].callback = sub_80AD8FC;
+ gSprites[r6].x2 = 120;
+ gSprites[r6].callback = SpriteCB_MonSlideIn;
gTasks[taskId].data[2] = r6;
gBattlerSpriteIds[gBattlerAttacker] = r6;
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[0]++;
- sContest.unk1925E = 0;
+ sContest.moveAnimTurnCount = 0;
break;
case 1:
r6 = gTasks[taskId].data[2];
if (gSprites[r6].callback == SpriteCallbackDummy)
{
sContestantStatus[gContestPlayerMonIndex].currMove = gTasks[taskId].data[1];
- sub_80B2790(gContestPlayerMonIndex);
- sub_80B28F0(gContestPlayerMonIndex);
+ SetMoveSpecificAnimData(gContestPlayerMonIndex);
+ SetMoveAnimAttackerData(gContestPlayerMonIndex);
SelectContestMoveBankTarget(gTasks[taskId].data[1]);
DoMoveAnim(gTasks[taskId].data[1]);
gTasks[taskId].data[3] = 0;
@@ -931,8 +744,8 @@ void debug_sub_80BA054(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_80B28CC(gContestPlayerMonIndex);
- if (sContest.unk1925E != 0)
+ ClearMoveAnimData(gContestPlayerMonIndex);
+ if (sContest.moveAnimTurnCount != 0)
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 20;
@@ -948,8 +761,8 @@ void debug_sub_80BA054(u8 taskId)
if (gTasks[taskId].data[3] == 21)
{
r6 = gTasks[taskId].data[2];
- gSprites[r6].callback = sub_80AD92C;
- sub_80B1B14();
+ gSprites[r6].callback = SpriteCB_MonSlideOut;
+ SlideApplauseMeterIn();
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[0]++;
}
@@ -978,16 +791,16 @@ void debug_sub_80BA054(u8 taskId)
#endif
-void sub_80AC0AC(s8 a)
+void DrawMoveSelectArrow(s8 a)
{
MenuCursor_SetPos814A880(4, 88 + a * 16);
}
-void nullsub_17(s8 a)
+void EraseMoveSelectArrow(s8 a)
{
}
-void sub_80AC0C8(u8 taskId)
+void Task_SelectedMove(u8 taskId)
{
if (gIsLinkContest & 1)
{
@@ -996,115 +809,116 @@ void sub_80AC0C8(u8 taskId)
sContestantStatus[gContestPlayerMonIndex].currMove = var;
taskId2 = CreateTask(sub_80C8A38, 0);
- SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, sub_80AC15C);
- gTasks[taskId].func = nullsub_89;
- sub_80AF860();
- sub_80AFFE0(FALSE);
+ SetTaskFuncWithFollowupFunc(taskId2, sub_80C8A38, Task_EndCommunicateMoveSelections);
+ gTasks[taskId].func = TaskDummy1;
+ ContestPrintLinkStandby();
+ SetBottomSliderHeartsInvisibility(FALSE);
}
else
{
- sub_80AF1B8();
- gTasks[taskId].func = sub_80AC188;
+ GetAllChosenMoves();
+ gTasks[taskId].func = Task_HideMoveSelectScreen;
}
}
-void sub_80AC15C(u8 taskId)
+void Task_EndCommunicateMoveSelections(u8 taskId)
{
DestroyTask(taskId);
- gTasks[sContest.mainTaskId].func = sub_80AC188;
+ gTasks[sContest.mainTaskId].func = Task_HideMoveSelectScreen;
}
-void sub_80AC188(u8 taskId)
+void Task_HideMoveSelectScreen(u8 taskId)
{
- sub_80AF138();
+ ContestClearGeneralTextWindow();
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
- sub_80AFFE0(FALSE);
- DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400);
- LoadPalette(shared18000.unk18204, 0, 0x400);
+ SetBottomSliderHeartsInvisibility(FALSE);
+ DmaCopy32Defvars(3, gPlttBufferFaded, eContestTempSave.cachedPlttBufferFaded, 0x400);
+ LoadPalette(eContestTempSave.cachedPlttBufferUnfaded, 0, 0x400);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- gTasks[taskId].func = sub_80AC204;
+ gTasks[taskId].func = Task_HideApplauseMeterForAppealStart;
}
-void sub_80AC204(u8 taskId)
+void Task_HideApplauseMeterForAppealStart(u8 taskId)
{
if (++gTasks[taskId].data[0] > 2)
{
gTasks[taskId].data[0] = 0;
if (++gTasks[taskId].data[1] == 2)
{
- sub_80B1BDC();
- sub_80B25E4(1);
- gTasks[taskId].func = sub_80AC250;
+ SlideApplauseMeterOut();
+ AnimateSliderHearts(1);
+ gTasks[taskId].func = Task_WaitHideApplauseMeterForAppealStart;
}
}
}
-void sub_80AC250(u8 taskId)
+void Task_WaitHideApplauseMeterForAppealStart(u8 taskId)
{
- if (!sContest.unk1920A_6 && !sContest.unk1920B_1)
- gTasks[taskId].func = sub_80AC284;
+ if (!sContest.applauseMeterIsMoving && !sContest.sliderHeartsAnimating)
+ gTasks[taskId].func = Task_AppealSetup;
}
-void sub_80AC284(u8 taskId)
+void Task_AppealSetup(u8 taskId)
{
if (++gTasks[taskId].data[0] > 19)
{
- sContest.unk19214 = 0;
- sContest.unk1921C = gRngValue;
+ sContest.turnNumber = 0;
+ sContest.unusedRng = gRngValue;
gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_80AC2CC;
+ gTasks[taskId].func = Task_DoAppeals;
}
}
-void sub_80AC2CC(u8 taskId)
+void Task_DoAppeals(u8 taskId)
{
u8 spriteId;
s32 i;
- u8 r7 = sContest.unk19215;
+ u8 contestant = sContest.currentContestant;
s8 r4;
switch (gTasks[taskId].data[0])
{
case 0:
- sub_80B0D7C();
- for (i = 0; sContest.unk19214 != shared192D0.turnOrder[i]; i++)
+ ContestDebugDoPrint();
+ for (i = 0; sContest.turnNumber != eContestAppealResults.turnOrder[i]; i++)
;
- sContest.unk19215 = i;
- r7 = sContest.unk19215;
+ sContest.currentContestant = i;
+ contestant = sContest.currentContestant;
if (gIsLinkContest & 1)
{
u8 taskId2;
- sContest.unk1920B_2 = 1;
- if (sub_80AE074())
- sub_80B114C(sContest.unk19215);
- taskId2 = CreateTask(sub_80C8C80, 0);
- SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC);
- sub_80AF860();
+ sContest.waitForLink = 1;
+ if (IsPlayerLinkLeader())
+ CalculateAppealMoveImpact(sContest.currentContestant);
+ taskId2 = CreateTask(Task_LinkContest_CommunicateAppealsState, 0);
+ SetTaskFuncWithFollowupFunc(
+ taskId2, Task_LinkContest_CommunicateAppealsState, Task_EndWaitForLink);
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 1;
}
else
{
- sub_80B114C(sContest.unk19215);
+ CalculateAppealMoveImpact(sContest.currentContestant);
gTasks[taskId].data[0] = 2;
}
return;
case 1:
- if (!sContest.unk1920B_2)
+ if (!sContest.waitForLink)
gTasks[taskId].data[0] = 2;
return;
case 2:
- if (sContestantStatus[r7].numTurnsSkipped != 0
- || sContestantStatus[r7].noMoreTurns)
+ if (sContestantStatus[contestant].numTurnsSkipped != 0
+ || sContestantStatus[contestant].noMoreTurns)
{
gTasks[taskId].data[0] = 31;
}
else
{
- sub_80AF138();
- sub_80B0CDC(r7, 0);
+ ContestClearGeneralTextWindow();
+ Unused_EndBlinkingState(contestant, 0);
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 3;
}
@@ -1112,58 +926,59 @@ void sub_80AC2CC(u8 taskId)
case 3:
for (i = 0; i < 4; i++)
gBattleMonForms[i] = 0;
- memset(&shared19348, 0, sizeof(shared19348));
- sub_80B28F0(sContest.unk19215);
- spriteId = sub_80AE9FC(
- gContestMons[sContest.unk19215].species,
- gContestMons[sContest.unk19215].otId,
- gContestMons[sContest.unk19215].personality);
- gSprites[spriteId].pos2.x = 120;
- gSprites[spriteId].callback = sub_80AD8FC;
+ memset(&gContestResources__moveAnim, 0, sizeof(gContestResources__moveAnim));
+ SetMoveAnimAttackerData(sContest.currentContestant);
+ spriteId = CreateContestantSprite(
+ gContestMons[sContest.currentContestant].species,
+ gContestMons[sContest.currentContestant].otId,
+ gContestMons[sContest.currentContestant].personality);
+ gSprites[spriteId].x2 = 120;
+ gSprites[spriteId].callback = SpriteCB_MonSlideIn;
gTasks[taskId].data[2] = spriteId;
gBattlerSpriteIds[gBattlerAttacker] = spriteId;
- sub_80B0BC4(sub_80B09E4(sContest.unk19215), FALSE);
+ BlinkContestantBox(CreateContestantBoxBlinkSprites(sContest.currentContestant), FALSE);
gTasks[taskId].data[0] = 4;
return;
case 4:
spriteId = gTasks[taskId].data[2];
if (gSprites[spriteId].callback == SpriteCallbackDummy)
{
- if (!shared19338[r7].unk2_1)
+ if (!eContestGfxState[contestant].boxBlinking)
gTasks[taskId].data[0] = 5;
}
return;
case 5:
- if (sContestantStatus[r7].nervous)
+ if (sContestantStatus[contestant].nervous)
{
gTasks[taskId].data[0] = 33;
}
else
{
- sub_80AF138();
- StringCopy(gStringVar1, gContestMons[r7].nickname);
- if (sContestantStatus[r7].currMove < NUM_MOVES)
- StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]);
+ ContestClearGeneralTextWindow();
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
+ if (sContestantStatus[contestant].currMove < NUM_MOVES)
+ StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
else
- StringCopy(gStringVar2, gUnknown_083CC330[sContestantStatus[r7].moveCategory]);
- StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ StringCopy(gStringVar2,
+ sInvalidContestMoveNames[sContestantStatus[contestant].moveCategory]);
+ StringExpandPlaceholders(gStringVar4, gText_MonAppealedWithMove);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[0] = 6;
}
return;
case 6:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
{
- sContest.unk1925E = 0;
+ sContest.moveAnimTurnCount = 0;
gTasks[taskId].data[0] = 7;
}
return;
case 7:
{
- u16 move = SanitizeMove(sContestantStatus[sContest.unk19215].currMove);
+ u16 move = SanitizeMove(sContestantStatus[sContest.currentContestant].currMove);
- sub_80B2790(sContest.unk19215);
- sub_80B28F0(sContest.unk19215);
+ SetMoveSpecificAnimData(sContest.currentContestant);
+ SetMoveAnimAttackerData(sContest.currentContestant);
SelectContestMoveBankTarget(move);
DoMoveAnim(move);
gTasks[taskId].data[0] = 8;
@@ -1173,17 +988,17 @@ void sub_80AC2CC(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_80B28CC(r7);
- if (sContest.unk1925E != 0)
+ ClearMoveAnimData(contestant);
+ if (sContest.moveAnimTurnCount != 0)
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 9;
}
else
{
- if (!sContestantStatus[r7].hasJudgesAttention)
- sub_80B03A8(r7);
- sub_80B20C4();
+ if (!sContestantStatus[contestant].hasJudgesAttention)
+ sub_80B03A8(contestant);
+ DrawUnnervedSymbols();
gTasks[taskId].data[0] = 23;
}
}
@@ -1197,25 +1012,26 @@ void sub_80AC2CC(u8 taskId)
return;
case 23:
gTasks[taskId].data[1] = 0;
- if (sContestantStatus[r7].effectStringId != CONTEST_STRING_NONE)
+ if (sContestantStatus[contestant].effectStringId != CONTEST_STRING_NONE)
{
- sub_80B146C(r7, sContestantStatus[r7].effectStringId);
- sContestantStatus[r7].effectStringId = CONTEST_STRING_NONE;
+ PrintAppealMoveResultText(contestant, sContestantStatus[contestant].effectStringId);
+ sContestantStatus[contestant].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
{
- if (sContestantStatus[r7].effectStringId2 != CONTEST_STRING_NONE)
+ if (sContestantStatus[contestant].effectStringId2 != CONTEST_STRING_NONE)
{
for (i = 0; i < 4; i++)
{
- if (i != r7 && sContestantStatus[i].effectStringId != CONTEST_STRING_NONE)
+ if (i != contestant && sContestantStatus[i].effectStringId != CONTEST_STRING_NONE)
break;
}
if (i == 4)
{
- sub_80B146C(r7, sContestantStatus[r7].effectStringId2);
- sContestantStatus[r7].effectStringId2 = CONTEST_STRING_NONE;
+ PrintAppealMoveResultText(
+ contestant, sContestantStatus[contestant].effectStringId2);
+ sContestantStatus[contestant].effectStringId2 = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 24;
}
else
@@ -1230,21 +1046,21 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 24:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
gTasks[taskId].data[0] = 23;
return;
case 48:
- if (sContestantStatus[r7].turnOrderModAction == 1)
+ if (sContestantStatus[contestant].turnOrderModAction == 1)
{
- sub_80B1710(5);
+ DoJudgeSpeechBubble(5);
}
- else if (sContestantStatus[r7].turnOrderModAction == 2)
+ else if (sContestantStatus[contestant].turnOrderModAction == 2)
{
- sub_80B1710(6);
+ DoJudgeSpeechBubble(6);
}
- else if (sContestantStatus[r7].turnOrderModAction == 3)
+ else if (sContestantStatus[contestant].turnOrderModAction == 3)
{
- sub_80B1710(7);
+ DoJudgeSpeechBubble(7);
}
else
{
@@ -1254,32 +1070,32 @@ void sub_80AC2CC(u8 taskId)
gTasks[taskId].data[0] = 49;
return;
case 49:
- if (!sContest.unk1920A_4)
+ if (!sContest.waitForJudgeSpeechBubble)
gTasks[taskId].data[0] = 47;
return;
case 47:
- sub_80B1FD0(TRUE);
+ ShowHideNextTurnGfx(TRUE);
gTasks[taskId].data[0] = 12;
return;
case 12:
- sub_80AFBA0(0, sContestantStatus[r7].appeal2, r7);
+ UpdateAppealHearts(0, sContestantStatus[contestant].appeal, contestant);
gTasks[taskId].data[0] = 13;
return;
case 13:
- if (!shared19338[sContest.unk19215].unk2_2)
+ if (!eContestGfxState[sContest.currentContestant].updatingAppealHearts)
gTasks[taskId].data[0] = 35;
return;
case 35:
- if (sContestantStatus[r7].conditionMod == 1)
- sub_80B1710(8);
+ if (sContestantStatus[contestant].conditionMod == 1)
+ DoJudgeSpeechBubble(8);
gTasks[taskId].data[0] = 36;
return;
case 36:
- if (!sContest.unk1920A_4)
+ if (!sContest.waitForJudgeSpeechBubble)
gTasks[taskId].data[0] = 37;
return;
case 37:
- if (sub_80AEE54(r7, 1))
+ if (UpdateConditionStars(contestant, 1))
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 38;
@@ -1297,7 +1113,7 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 50:
- if (sub_80AF038(r7))
+ if (DrawStatusSymbol(contestant))
PlaySE(SE_CONTEST_ICON_CHANGE);
gTasks[taskId].data[0] = 25;
return;
@@ -1315,7 +1131,7 @@ void sub_80AC2CC(u8 taskId)
r4 = 0;
for (r2 = 0; r2 < 4; r2++)
{
- if (r2 != r7 && gUnknown_02038696[r2] == i
+ if (r2 != contestant && gContestantTurnOrder[r2] == i
&& sContestantStatus[r2].effectStringId != CONTEST_STRING_NONE)
{
r4 = 1;
@@ -1327,8 +1143,8 @@ void sub_80AC2CC(u8 taskId)
}
if (r4)
{
- gTasks[taskId].data[1] = gUnknown_02038696[r2];
- sub_80B146C(r2, sContestantStatus[r2].effectStringId);
+ gTasks[taskId].data[1] = gContestantTurnOrder[r2];
+ PrintAppealMoveResultText(r2, sContestantStatus[r2].effectStringId);
sContestantStatus[r2].effectStringId = CONTEST_STRING_NONE;
gTasks[taskId].data[0] = 27;
}
@@ -1337,30 +1153,31 @@ void sub_80AC2CC(u8 taskId)
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 51;
- sub_80AF120();
+ DrawStatusSymbols();
}
}
return;
case 27:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
gTasks[taskId].data[0] = 28;
return;
case 28:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
- sub_80AFBA0(sContestantStatus[i].appeal2 + sContestantStatus[i].jam, -sContestantStatus[i].jam, i);
+ UpdateAppealHearts(
+ sContestantStatus[i].appeal + sContestantStatus[i].jam, -sContestantStatus[i].jam, i);
gTasks[taskId].data[0] = 29;
return;
case 29:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
- if (!shared19338[i].unk2_2)
+ if (!eContestGfxState[i].updatingAppealHearts)
gTasks[taskId].data[0] = 39;
return;
case 39:
- for (i = 0; gTasks[taskId].data[1] != gUnknown_02038696[i]; i++)
+ for (i = 0; gTasks[taskId].data[1] != gContestantTurnOrder[i]; i++)
;
- if (sub_80AEE54(i, 1))
+ if (UpdateConditionStars(i, 1))
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 40;
@@ -1380,10 +1197,10 @@ void sub_80AC2CC(u8 taskId)
case 30:
for (i = 0; i < 4; i++)
{
- if (gUnknown_02038696[i] == gTasks[taskId].data[1])
+ if (gContestantTurnOrder[i] == gTasks[taskId].data[1])
break;
}
- if (sub_80AF038(i))
+ if (DrawStatusSymbol(i))
PlaySE(SE_CONTEST_ICON_CHANGE);
else
PlaySE(SE_CONTEST_ICON_CLEAR);
@@ -1399,92 +1216,91 @@ void sub_80AC2CC(u8 taskId)
if (gTasks[taskId].data[10]++ > 9)
{
gTasks[taskId].data[10] = 0;
- if (sContestantStatus[r7].numTurnsSkipped != 0
- || sContestantStatus[r7].turnSkipped)
+ if (sContestantStatus[contestant].numTurnsSkipped != 0
+ || sContestantStatus[contestant].turnSkipped)
{
- sub_80AF138();
- StringCopy(gStringVar1, gContestMons[r7].nickname);
+ ContestClearGeneralTextWindow();
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
StringExpandPlaceholders(gStringVar4, ContestString_CantAppealNextTurn);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
}
gTasks[taskId].data[0] = 52;
}
return;
case 52:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
{
- if (!sContestantStatus[r7].unk15_6)
+ if (!sContestantStatus[contestant].usedComboMove)
gTasks[taskId].data[0] = 17;
else
gTasks[taskId].data[0] = 14;
}
return;
case 14:
- r4 = sContestantStatus[r7].unk16;
- if (sContestantStatus[r7].unk16 != 0)
+ r4 = sContestantStatus[contestant].completedCombo;
+ if (sContestantStatus[contestant].completedCombo != 0)
{
- sub_80AF138();
+ ContestClearGeneralTextWindow();
if (r4 == 1)
- Text_InitWindow8002EB0(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15);
else if (r4 == 2)
- Text_InitWindow8002EB0(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15);
else
- Text_InitWindow8002EB0(&gMenuWindow, ContestString_AppealComboExcellently, 776, 1, 15);
- sub_80B1710(3);
+ Contest_StartTextPrinter(&gMenuWindow, ContestString_AppealComboExcellently, 776, 1, 15);
+ DoJudgeSpeechBubble(3);
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 45;
}
else
{
- sub_80AF138();
- StringCopy(gStringVar1, gContestMons[r7].nickname);
+ ContestClearGeneralTextWindow();
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
StringExpandPlaceholders(gStringVar4, ContestString_JudgeExpectantly2);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
- sub_80B1710(2);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
+ DoJudgeSpeechBubble(2);
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 45;
}
return;
case 45:
- if (!sContest.unk1920A_4)
+ if (!sContest.waitForJudgeSpeechBubble)
{
- sub_80B09B0(sContest.unk19215);
+ StartStopFlashJudgeAttentionEye(sContest.currentContestant);
gTasks[taskId].data[0] = 15;
}
return;
case 15:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
{
if (++gTasks[taskId].data[10] > 50)
{
- if (!sContestantStatus[r7].hasJudgesAttention)
+ if (!sContestantStatus[contestant].hasJudgesAttention)
{
- sub_80AFBA0(
- sContestantStatus[r7].appeal2,
- sContestantStatus[r7].unk17,
- r7);
- sContestantStatus[r7].appeal2 += sContestantStatus[r7].unk17;
+ UpdateAppealHearts(
+ sContestantStatus[contestant].appeal, sContestantStatus[contestant].comboAppealBonus,
+ contestant);
+ sContestantStatus[contestant].appeal += sContestantStatus[contestant].comboAppealBonus;
}
gTasks[taskId].data[0] = 16;
}
}
return;
case 16:
- if (!shared19338[r7].unk2_2)
+ if (!eContestGfxState[contestant].updatingAppealHearts)
{
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 17;
}
return;
case 17:
- if (sContestantStatus[r7].disappointedRepeat)
+ if (sContestantStatus[contestant].repeatedMove)
{
- sub_80AF138();
- StringCopy(gStringVar1, gContestMons[r7].nickname);
+ ContestClearGeneralTextWindow();
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
StringExpandPlaceholders(gStringVar4, ContestString_DissapointedRepeat);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[10] = 0;
- sub_80B1710(0);
+ DoJudgeSpeechBubble(0);
gTasks[taskId].data[0] = 46;
}
else
@@ -1493,50 +1309,52 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 46:
- if (!sContest.unk1920A_4)
+ if (!sContest.waitForJudgeSpeechBubble)
gTasks[taskId].data[0] = 19;
return;
case 19:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
{
- sub_80AFBA0(sContestantStatus[r7].appeal2, -sContestantStatus[r7].unk18, r7);
- sContestantStatus[r7].appeal2 -= sContestantStatus[r7].unk18;
+ UpdateAppealHearts(sContestantStatus[contestant].appeal, -sContestantStatus[contestant].repeatJam,
+ contestant);
+ sContestantStatus[contestant].appeal -= sContestantStatus[contestant].repeatJam;
gTasks[taskId].data[0] = 18;
}
return;
case 18:
- sub_80B0D7C();
- if (!shared19338[r7].unk2_2)
+ ContestDebugDoPrint();
+ if (!eContestGfxState[contestant].updatingAppealHearts)
{
gTasks[taskId].data[10] = 0;
- sub_80AF138();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 41;
}
return;
case 41:
- if (shared19328.excitementFrozen && r7 != shared19328.excitementFreezer)
+ if (eContestExcitement.excitementFrozen &&
+ contestant != eContestExcitement.excitementFreezer)
{
gTasks[taskId].data[0] = 57;
}
else
{
- r4 = shared19328.bits_0;
- if (sContestantStatus[r7].overrideCategoryExcitementMod)
+ r4 = eContestExcitement.moveExcitement;
+ if (sContestantStatus[contestant].overrideCategoryExcitementMod)
{
r4 = 1;
- StringCopy(gStringVar3, gMoveNames[sContestantStatus[r7].currMove]);
+ StringCopy(gStringVar3, gMoveNames[sContestantStatus[contestant].currMove]);
}
else
{
- StringCopy(gStringVar3, gContestCategoryStrings[gContestMoves[sContestantStatus[r7].currMove].contestCategory]);
+ StringCopy(gStringVar3, gContestCategoryStrings[gContestMoves[sContestantStatus[contestant].currMove].contestCategory]);
}
if (r4 > 0)
{
- if (sContestantStatus[r7].disappointedRepeat)
+ if (sContestantStatus[contestant].repeatedMove)
r4 = 0;
}
- sub_80AF138();
- StringCopy(gStringVar1, gContestMons[r7].nickname);
+ ContestClearGeneralTextWindow();
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
sContest.applauseLevel += r4;
if (sContest.applauseLevel < 0)
sContest.applauseLevel = 0;
@@ -1552,7 +1370,7 @@ void sub_80AC2CC(u8 taskId)
StringExpandPlaceholders(gStringVar4, ContestString_WentOverGreat);
else
StringExpandPlaceholders(gStringVar4, ContestString_GotCrowdGoing);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[11] = 0;
if (r4 < 0)
@@ -1566,24 +1384,24 @@ void sub_80AC2CC(u8 taskId)
switch (gTasks[taskId].data[10])
{
case 0:
- sub_80B1EA8(-1, 1);
+ BlendAudienceBackground(-1, 1);
PlayFanfare(MUS_TOO_BAD);
gTasks[taskId].data[10]++;
break;
case 1:
- if (!sContest.unk1920B_0 && Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (!sContest.waitForAudienceBlend && Contest_RunTextPrinter(&gMenuWindow) != 0)
{
- sub_80B1CBC(-1);
+ ShowAndUpdateApplauseMeter(-1);
gTasks[taskId].data[10]++;
}
break;
case 2:
- if (!sContest.unk1920A_5)
+ if (!sContest.isShowingApplauseMeter)
{
if (gTasks[taskId].data[11]++ > 29)
{
gTasks[taskId].data[11] = 0;
- sub_80B1EA8(-1, -1);
+ BlendAudienceBackground(-1, -1);
gTasks[taskId].data[10]++;
}
}
@@ -1602,39 +1420,41 @@ void sub_80AC2CC(u8 taskId)
switch (gTasks[taskId].data[10])
{
case 0:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
{
- sub_80B1EA8(1, 1);
+ BlendAudienceBackground(1, 1);
gTasks[taskId].data[10]++;
}
break;
case 1:
- if (!sContest.unk1920B_0)
+ if (!sContest.waitForAudienceBlend)
{
- sub_80B1DDC();
+ AnimateAudience();
PlaySE(SE_M_ENCORE2);
- sub_80B1CBC(1);
+ ShowAndUpdateApplauseMeter(1);
gTasks[taskId].data[10]++;
}
break;
case 2:
- if (!sContest.unk1920A_5)
+ if (!sContest.isShowingApplauseMeter)
{
if (gTasks[taskId].data[11]++ > 29)
{
gTasks[taskId].data[11] = 0;
- sub_80AFBA0(sContestantStatus[r7].appeal2, shared19328.unk2, r7);
- sContestantStatus[r7].appeal2 += shared19328.unk2;
+ UpdateAppealHearts(
+ sContestantStatus[contestant].appeal, eContestExcitement.excitementAppealBonus,
+ contestant);
+ sContestantStatus[contestant].appeal += eContestExcitement.excitementAppealBonus;
gTasks[taskId].data[10]++;
}
}
break;
case 3:
- if (!shared19338[r7].unk2_2)
+ if (!eContestGfxState[contestant].updatingAppealHearts)
{
- if (!sContest.unk1920A_7)
+ if (!sContest.animatingAudience)
{
- sub_80B1EA8(1, -1);
+ BlendAudienceBackground(1, -1);
gTasks[taskId].data[10]++;
}
}
@@ -1650,69 +1470,69 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 43:
- if (!shared19338[r7].unk2_2)
+ if (!eContestGfxState[contestant].updatingAppealHearts)
{
- sub_80AF138();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 55;
}
return;
case 57:
- sub_80AF138();
- StringCopy(gStringVar3, gContestMons[shared19328.excitementFreezer].nickname);
- StringCopy(gStringVar1, gContestMons[r7].nickname);
- StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]);
+ ContestClearGeneralTextWindow();
+ StringCopy(gStringVar3, gContestMons[eContestExcitement.excitementFreezer].nickname);
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
+ StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
StringExpandPlaceholders(gStringVar4, ContestString_CrowdWatches);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[0] = 58;
return;
case 58:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
{
- sub_80AF138();
+ ContestClearGeneralTextWindow();
StringExpandPlaceholders(gStringVar4, ContestString_Ignored2);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[0] = 59;
}
return;
case 59:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
{
- sub_80AF138();
+ ContestClearGeneralTextWindow();
gTasks[taskId].data[0] = 55;
}
return;
case 33:
- if (sContestantStatus[r7].hasJudgesAttention)
- sContestantStatus[r7].hasJudgesAttention = 0;
- sub_80B09B0(r7);
- StringCopy(gStringVar1, gContestMons[r7].nickname);
- StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]);
- StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ if (sContestantStatus[contestant].hasJudgesAttention)
+ sContestantStatus[contestant].hasJudgesAttention = 0;
+ StartStopFlashJudgeAttentionEye(contestant);
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
+ StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
+ StringExpandPlaceholders(gStringVar4, ContestString_TooNervous);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[0] = 34;
return;
case 34:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
gTasks[taskId].data[0] = 55;
return;
case 55:
- sub_80B1BDC();
+ SlideApplauseMeterOut();
gTasks[taskId].data[0] = 56;
return;
case 56:
- if (!sContest.unk1920A_6)
+ if (!sContest.applauseMeterIsMoving)
{
if (sContest.applauseLevel > 4)
{
sContest.applauseLevel = 0;
- sub_80B1928();
+ UpdateApplauseMeter();
}
gTasks[taskId].data[0] = 10;
}
return;
case 10:
spriteId = gTasks[taskId].data[2];
- gSprites[spriteId].callback = sub_80AD92C;
+ gSprites[spriteId].callback = SpriteCB_MonSlideOut;
gTasks[taskId].data[0] = 11;
return;
case 11:
@@ -1726,19 +1546,19 @@ void sub_80AC2CC(u8 taskId)
return;
case 20:
for (i = 0; i < 4; i++)
- sub_80B0CDC(i, 1);
+ Unused_EndBlinkingState(i, 1);
gTasks[taskId].data[10] = 0;
gTasks[taskId].data[0] = 21;
return;
case 31:
- sub_80AF138();
- StringCopy(gStringVar1, gContestMons[r7].nickname);
- StringExpandPlaceholders(gStringVar4, gUnknown_083CB00D);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ ContestClearGeneralTextWindow();
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
+ StringExpandPlaceholders(gStringVar4, gText_MonWasWatchingOthers);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[0] = 32;
return;
case 32:
- if (Text_UpdateWindowInContest(&gMenuWindow) != 0)
+ if (Contest_RunTextPrinter(&gMenuWindow) != 0)
gTasks[taskId].data[0] = 21;
return;
case 21:
@@ -1749,12 +1569,12 @@ void sub_80AC2CC(u8 taskId)
}
return;
case 22:
- if (++sContest.unk19214 == 4)
+ if (++sContest.turnNumber == 4)
{
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_80AD960;
+ gTasks[taskId].func = Task_FinishRoundOfAppeals;
}
else
{
@@ -1765,17 +1585,17 @@ void sub_80AC2CC(u8 taskId)
}
}
-void sub_80AD8DC(u8 taskId)
+void Task_EndWaitForLink(u8 taskId)
{
- sContest.unk1920B_2 = 0;
+ sContest.waitForLink = 0;
DestroyTask(taskId);
}
-void sub_80AD8FC(struct Sprite *sprite)
+void SpriteCB_MonSlideIn(struct Sprite *sprite)
{
- if (sprite->pos2.x != 0)
+ if (sprite->x2 != 0)
{
- sprite->pos2.x -= 2;
+ sprite->x2 -= 2;
}
else
{
@@ -1787,17 +1607,17 @@ void sub_80AD8FC(struct Sprite *sprite)
}
}
-void sub_80AD92C(struct Sprite *sprite)
+void SpriteCB_MonSlideOut(struct Sprite *sprite)
{
- sprite->pos2.x -= 6;
- if (sprite->pos1.x + sprite->pos2.x < -32)
+ sprite->x2 -= 6;
+ if (sprite->x + sprite->x2 < -32)
{
sprite->callback = SpriteCallbackDummy;
sprite->invisible = TRUE;
}
}
-void sub_80AD960(u8 taskId)
+void Task_FinishRoundOfAppeals(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -1806,57 +1626,58 @@ void sub_80AD960(u8 taskId)
{
u8 taskId2;
- sContest.unk1920B_2 = 1;
- if (sub_80AE074())
+ sContest.waitForLink = 1;
+ if (IsPlayerLinkLeader())
{
- sub_80AF2FC();
- sub_80AF3C0();
+ RankContestants();
+ SetAttentionLevels();
}
- taskId2 = CreateTask(sub_80C8C80, 0);
- SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC);
- sub_80AF860();
+ taskId2 = CreateTask(Task_LinkContest_CommunicateAppealsState, 0);
+ SetTaskFuncWithFollowupFunc(
+ taskId2, Task_LinkContest_CommunicateAppealsState, Task_EndWaitForLink);
+ ContestPrintLinkStandby();
gTasks[taskId].data[0] = 1;
}
else
{
- sub_80AF2FC();
- sub_80AF3C0();
+ RankContestants();
+ SetAttentionLevels();
gTasks[taskId].data[0] = 2;
}
break;
case 1:
- if (!sContest.unk1920B_2)
+ if (!sContest.waitForLink)
gTasks[taskId].data[0] = 2;
break;
case 2:
gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_80ADA1C;
+ gTasks[taskId].func = Task_ReadyUpdateHeartSliders;
break;
}
}
-void sub_80ADA1C(u8 taskId)
+void Task_ReadyUpdateHeartSliders(u8 taskId)
{
- sub_80B1FD0(FALSE);
+ ShowHideNextTurnGfx(FALSE);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- gTasks[taskId].func = sub_80ADA4C;
+ gTasks[taskId].func = Task_UpdateHeartSliders;
}
-void sub_80ADA4C(u8 taskId)
+void Task_UpdateHeartSliders(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
case 0:
if (++gTasks[taskId].data[1] > 20)
{
- sub_80B25E4(2);
+ AnimateSliderHearts(2);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[0]++;
}
break;
case 1:
- if (!sContest.unk1920B_1)
+ if (!sContest.sliderHeartsAnimating)
{
if (++gTasks[taskId].data[1] > 20)
{
@@ -1866,198 +1687,199 @@ void sub_80ADA4C(u8 taskId)
}
break;
case 2:
- sub_80AFF10();
+ UpdateHeartSliders();
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- gTasks[taskId].func = sub_80ADAD8;
+ gTasks[taskId].func = Task_WaitForHeartSliders;
break;
}
}
-void sub_80ADAD8(u8 taskId)
+void Task_WaitForHeartSliders(u8 taskId)
{
- if (sub_80AFF28())
+ if (SlidersDoneUpdating())
gTasks[taskId].func = sub_80ADB04;
}
void sub_80ADB04(u8 taskId)
{
- DmaCopy32Defvars(3, shared18000.unk18204, gPlttBufferUnfaded, 0x400);
+ DmaCopy32Defvars(3, eContestTempSave.cachedPlttBufferUnfaded, gPlttBufferUnfaded, 0x400);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 2;
- gTasks[taskId].func = sub_80ADB48;
+ gTasks[taskId].func = Task_WaitBeforePrintRoundResult;
}
-void sub_80ADB48(u8 taskId)
+void Task_WaitBeforePrintRoundResult(u8 taskId)
{
if (++gTasks[taskId].data[0] > 2)
{
gTasks[taskId].data[0] = 0;
if (--gTasks[taskId].data[1] == 0)
- gTasks[taskId].func = sub_80ADB88;
+ gTasks[taskId].func = Task_PrintRoundResultText;
}
}
-void sub_80ADB88(u8 taskId)
+void Task_PrintRoundResultText(u8 taskId)
{
u8 r4 = sContestantStatus[gContestPlayerMonIndex].attentionLevel;
- sub_80AF138();
+ ContestClearGeneralTextWindow();
StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname);
StringExpandPlaceholders(gStringVar4, gContestStandOutStrings[r4]);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
- gTasks[taskId].func = sub_80ADC10;
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
+ gTasks[taskId].func = Task_WaitPrintRoundResultText;
}
-void sub_80ADC10(u8 taskId)
+void Task_WaitPrintRoundResultText(u8 taskId)
{
- if (Text_UpdateWindowInContest(&gMenuWindow) == 1)
+ if (Contest_RunTextPrinter(&gMenuWindow) == 1)
{
gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_80ADC4C;
- sub_80B0D7C();
+ gTasks[taskId].func = Task_ReUpdateHeartSliders;
+ ContestDebugDoPrint();
}
}
-void sub_80ADC4C(u8 taskId)
+void Task_ReUpdateHeartSliders(u8 taskId)
{
if (gTasks[taskId].data[0]++ > 29)
{
gTasks[taskId].data[0] = 0;
- sub_80AFF10();
- gTasks[taskId].func = sub_80ADC84;
+ UpdateHeartSliders();
+ gTasks[taskId].func = Task_WaitForHeartSlidersAgain;
}
}
-void sub_80ADC84(u8 taskId)
+void Task_WaitForHeartSlidersAgain(u8 taskId)
{
- if (sub_80AFF28())
+ if (SlidersDoneUpdating())
{
gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_80ADCB4;
+ gTasks[taskId].func = Task_DropCurtainAtRoundEnd;
}
}
-void sub_80ADCB4(u8 taskId)
+void Task_DropCurtainAtRoundEnd(u8 taskId)
{
- sub_80B2184();
- gTasks[taskId].func = sub_80B237C;
+ SetBgForCurtainDrop();
+ gTasks[taskId].func = Task_StartDropCurtainAtRoundEnd;
}
-void sub_80ADCDC(u8 taskId)
+void Task_UpdateContestantBoxOrder(u8 taskId)
{
- sub_80B2280();
- gTasks[taskId].func = sub_80ADD04;
+ UpdateContestantBoxOrder();
+ gTasks[taskId].func = Task_TryStartNextRoundOfAppeals;
}
-void sub_80ADD04(u8 taskId)
+void Task_TryStartNextRoundOfAppeals(u8 taskId)
{
REG_BG0CNT_BITFIELD.priority = 0;
REG_BG2CNT_BITFIELD.priority = 0;
- if (++sContest.turnNumber == 5)
+ if (++sContest.appealNumber == 5)
{
- gTasks[taskId].func = sub_80ADDA4;
+ gTasks[taskId].func = Task_EndAppeals;
}
else
{
- sub_80B1B14();
- gTasks[taskId].func = sub_80ADD74;
+ SlideApplauseMeterIn();
+ gTasks[taskId].func = Task_StartNewRoundOfAppeals;
}
}
-void sub_80ADD74(u8 taskId)
+void Task_StartNewRoundOfAppeals(u8 taskId)
{
- if (!sContest.unk1920A_6)
- gTasks[taskId].func = sub_80ABB70;
+ if (!sContest.applauseMeterIsMoving)
+ gTasks[taskId].func = Task_DisplayAppealNumberText;
}
-void sub_80ADDA4(u8 taskId)
+void Task_EndAppeals(u8 taskId)
{
s32 i;
gBattle_BG0_Y = 0;
gBattle_BG2_Y = 0;
for (i = 0; i < 4; i++)
- gUnknown_02038680[i] = sContestantStatus[i].unk4;
- sub_80AF668();
- sub_80AF138();
+ gContestMonAppealPointTotals[i] = sContestantStatus[i].pointTotal;
+ CalculateFinalScores();
+ ContestClearGeneralTextWindow();
sub_80BE23C(sContestantStatus[gContestPlayerMonIndex].prevMove);
gContestRngValue = gRngValue;
- StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C);
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
+ StringExpandPlaceholders(gStringVar4, gText_AllOutOfAppealTime);
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_80ADE54;
+ gTasks[taskId].func = Task_WaitForOutOfTimeMsg;
}
-void sub_80ADE54(u8 taskId)
+void Task_WaitForOutOfTimeMsg(u8 taskId)
{
- if (Text_UpdateWindowInContest(&gMenuWindow) == 1)
+ if (Contest_RunTextPrinter(&gMenuWindow) == 1)
{
- sub_80B2184();
+ SetBgForCurtainDrop();
gBattle_BG1_X = 0;
gBattle_BG1_Y = 160;
PlaySE12WithPanning(SE_CONTEST_CURTAIN_FALL, 0);
gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_80ADEAC;
+ gTasks[taskId].func = Task_DropCurtainAtAppealsEnd;
}
}
-void sub_80ADEAC(u8 taskId)
+void Task_DropCurtainAtAppealsEnd(u8 taskId)
{
if ((s16)(gBattle_BG1_Y -= 7) < 0)
gBattle_BG1_Y = 0;
if (gBattle_BG1_Y == 0) // Why cast?
{
- gTasks[taskId].func = sub_80ADEEC;
+ gTasks[taskId].func = Task_TryCommunicateFinalStandings;
gTasks[taskId].data[0] = 0;
}
}
-void sub_80ADEEC(u8 taskId)
+void Task_TryCommunicateFinalStandings(u8 taskId)
{
if (gTasks[taskId].data[0]++ >= 50)
{
gTasks[taskId].data[0] = 0;
if (gIsLinkContest & 1)
{
- gTasks[taskId].func = sub_80ADF4C;
+ gTasks[taskId].func = Task_CommunicateFinalStandings;
}
else
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].func = sub_80ADFD8;
+ gTasks[taskId].func = Task_ContestReturnToField;
}
}
}
-void sub_80ADF4C(u8 taskId)
+void Task_CommunicateFinalStandings(u8 taskId)
{
- u8 taskId2 = CreateTask(sub_80C8AD0, 0);
+ u8 taskId2 = CreateTask(Task_LinkContest_CommunicateFinalStandings, 0);
- SetTaskFuncWithFollowupFunc(taskId2, sub_80C8AD0, sub_80ADF98);
- gTasks[taskId].func = nullsub_89;
- sub_80AF860();
- sub_80AFFE0(FALSE);
+ SetTaskFuncWithFollowupFunc(
+ taskId2, Task_LinkContest_CommunicateFinalStandings, Task_EndCommunicateFinalStandings);
+ gTasks[taskId].func = TaskDummy1;
+ ContestPrintLinkStandby();
+ SetBottomSliderHeartsInvisibility(FALSE);
}
-void sub_80ADF98(u8 taskId)
+void Task_EndCommunicateFinalStandings(u8 taskId)
{
DestroyTask(taskId);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[sContest.mainTaskId].func = sub_80ADFD8;
+ gTasks[sContest.mainTaskId].func = Task_ContestReturnToField;
}
-void sub_80ADFD8(u8 taskId)
+void Task_ContestReturnToField(u8 taskId)
{
if (!gPaletteFade.active)
{
DestroyTask(taskId);
- gFieldCallback = sub_80AE010;
+ gFieldCallback = FieldCB_ContestReturnToField;
SetMainCallback2(CB2_ReturnToField);
}
}
-void sub_80AE010(void)
+void FieldCB_ContestReturnToField(void)
{
// Why disable and re-enable again?
ScriptContext2_Disable();
@@ -2085,3444 +1907,4 @@ void InsertStringDigit(u8 *str, s32 n)
}
}
-void sub_80AE054(void)
-{
- if (!(gIsLinkContest & 1))
- gContestPlayerMonIndex = 3;
-}
-
-bool8 sub_80AE074(void)
-{
- if (gContestPlayerMonIndex == gUnknown_0203869B)
- return TRUE;
- else
- return FALSE;
-}
-
-void Contest_CreatePlayerMon(u8 partyIndex)
-{
- u8 name[20];
- u16 heldItem;
- s16 cool;
- s16 beauty;
- s16 cute;
- s16 smart;
- s16 tough;
-
- StringCopy(name, gSaveBlock2.playerName);
- Text_StripExtCtrlCodes(name);
- if (gIsLinkContest & 1)
- {
- u8 temp = name[5];
-
- name[5] = EOS;
- name[7] = temp;
- }
- memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8);
- if (gSaveBlock2.playerGender == MALE)
- gContestMons[gContestPlayerMonIndex].trainerGfxId = OBJ_EVENT_GFX_LINK_BRENDAN;
- else
- gContestMons[gContestPlayerMonIndex].trainerGfxId = OBJ_EVENT_GFX_LINK_MAY;
- gContestMons[gContestPlayerMonIndex].flags = 0;
- gContestMons[gContestPlayerMonIndex].unk2C[0] = 0;
- gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
- GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name);
- StringGetEnd10(name);
- if (gIsLinkContest & 1)
- {
- Text_StripExtCtrlCodes(name);
- if (GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
- {
- name[5] = EOS;
- name[10] = EXT_CTRL_CODE_BEGIN;
- }
- else
- {
- u8 temp = name[5];
-
- name[5] = EOS;
- name[10] = temp;
- }
- }
- memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, 11);
- gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[partyIndex], MON_DATA_COOL);
- gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[partyIndex], MON_DATA_BEAUTY);
- gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[partyIndex], MON_DATA_CUTE);
- gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SMART);
- gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[partyIndex], MON_DATA_TOUGH);
- gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SHEEN);
- gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE1);
- gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE2);
- gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE3);
- gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE4);
- gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY);
- gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID);
-
- heldItem = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM);
- cool = gContestMons[gContestPlayerMonIndex].cool;
- beauty = gContestMons[gContestPlayerMonIndex].beauty;
- cute = gContestMons[gContestPlayerMonIndex].cute;
- smart = gContestMons[gContestPlayerMonIndex].smart;
- tough = gContestMons[gContestPlayerMonIndex].tough;
- if (heldItem == ITEM_RED_SCARF)
- cool += 20;
- else if (heldItem == ITEM_BLUE_SCARF)
- beauty += 20;
- else if (heldItem == ITEM_PINK_SCARF)
- cute += 20;
- else if (heldItem == ITEM_GREEN_SCARF)
- smart += 20;
- else if (heldItem == ITEM_YELLOW_SCARF)
- tough += 20;
- if (cool > 255)
- cool = 255;
- if (beauty > 255)
- beauty = 255;
- if (cute > 255)
- cute = 255;
- if (smart > 255)
- smart = 255;
- if (tough > 255)
- tough = 255;
- gContestMons[gContestPlayerMonIndex].cool = cool;
- gContestMons[gContestPlayerMonIndex].beauty = beauty;
- gContestMons[gContestPlayerMonIndex].cute = cute;
- gContestMons[gContestPlayerMonIndex].smart = smart;
- gContestMons[gContestPlayerMonIndex].tough = tough;
-}
-
-void Contest_InitAllPokemon(u8 contestType, u8 rank)
-{
- s32 i;
- u8 opponentsCount = 0;
- u8 opponents[64];
-
- sub_80AE054();
-
- // Find all suitable opponents
- for (i = 0; i < 60; i++)
- {
- if (rank == gContestOpponents[i].whichRank)
- {
- if (contestType == 0 && gContestOpponents[i].aiPool_Cool)
- opponents[opponentsCount++] = i;
- else if (contestType == 1 && gContestOpponents[i].aiPool_Beauty)
- opponents[opponentsCount++] = i;
- else if (contestType == 2 && gContestOpponents[i].aiPool_Cute)
- opponents[opponentsCount++] = i;
- else if (contestType == 3 && gContestOpponents[i].aiPool_Smart)
- opponents[opponentsCount++] = i;
- else if (contestType == 4 && gContestOpponents[i].aiPool_Tough)
- opponents[opponentsCount++] = i;
- }
- }
- opponents[opponentsCount] = 0xFF;
-
- // Choose three random opponents from the list
- for (i = 0; i < 3; i++)
- {
- u16 rnd = Random() % opponentsCount;
- s32 j;
-
- gContestMons[i] = gContestOpponents[opponents[rnd]];
- for (j = rnd; opponents[j] != 0xFF; j++)
- opponents[j] = opponents[j + 1];
- opponentsCount--;
- }
-
-#ifndef NONMATCHING
- // Compiler, please put i in r5. Thanks.
- asm(""::"r"(i));
- asm(""::"r"(i));
- asm(""::"r"(i));
- asm(""::"r"(i));
- asm(""::"r"(i));
-#endif
-
- Contest_CreatePlayerMon(gContestMonPartyIndex);
-}
-
-// GetContestAvailability?
-u8 CanMonParticipateInContest(struct Pokemon *pkmn)
-{
- u8 ribbon;
- u8 retVal;
-
- if (GetMonData(pkmn, MON_DATA_IS_EGG))
- return 3;
- if (GetMonData(pkmn, MON_DATA_HP) == 0)
- return 4;
- switch (gSpecialVar_ContestCategory)
- {
- case CONTEST_CATEGORY_COOL:
- ribbon = GetMonData(pkmn, MON_DATA_COOL_RIBBON);
- break;
- case CONTEST_CATEGORY_BEAUTY:
- ribbon = GetMonData(pkmn, MON_DATA_BEAUTY_RIBBON);
- break;
- case CONTEST_CATEGORY_CUTE:
- ribbon = GetMonData(pkmn, MON_DATA_CUTE_RIBBON);
- break;
- case CONTEST_CATEGORY_SMART:
- ribbon = GetMonData(pkmn, MON_DATA_SMART_RIBBON);
- break;
- case CONTEST_CATEGORY_TOUGH:
- ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON);
- break;
- default:
- return 0;
- }
-
- // Couldn't get this to match any other way.
- // Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below
- // the current contest rank.
- if (ribbon > gSpecialVar_ContestRank)
- retVal = 2;
- else if (ribbon >= gSpecialVar_ContestRank)
- retVal = 1;
- else
- retVal = 0;
- return retVal;
-}
-
-void sub_80AE514(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- {
- Text_FillWindowRectDefPalette(
- &gUnknown_03004210,
- 0,
- gUnknown_083CA308[gUnknown_02038696[i]][0],
- gUnknown_083CA308[gUnknown_02038696[i]][1],
- gUnknown_083CA310[gUnknown_02038696[i]][0] + 5,
- gUnknown_083CA310[gUnknown_02038696[i]][1] + 1);
- sub_80AE5BC(i);
- sub_80AE6CC(i);
- }
-}
-
-u8 *sub_80AE598(u8 *dest, const u8 *b, u8 c)
-{
- dest = StringCopy(dest, gUnknown_083CC59C);
- *dest++ = c;
- dest = StringCopy(dest, b);
- return dest;
-}
-
-void sub_80AE5BC(u8 a)
-{
- sub_80AE5D4(a, a + 10);
-}
-
-void sub_80AE5D4(u8 p, u8 b)
-{
- u8 *str = gDisplayedStringBattle;
-
- str = sub_80AE598(str, gEmptyString_81E72B0, b);
- str[0] = EXT_CTRL_CODE_BEGIN;
- str[1] = 6;
- str[2] = 4;
- str += 3;
-
- *str++ = CHAR_SLASH;
-
- if ((gIsLinkContest & 1) && gLinkPlayers[p].language == LANGUAGE_JAPANESE)
- {
- StringCopy(str, gLinkPlayers[p].name);
- Text_InitWindow8004D04(
- &gUnknown_03004210,
- gDisplayedStringBattle,
- 592 + gUnknown_02038696[p] * 22,
- 251 + gUnknown_083CA310[gUnknown_02038696[p]][0] * 8,
- gUnknown_083CA310[gUnknown_02038696[p]][1] * 8,
- 1);
- }
- else
- {
- StringCopy(str, gContestMons[p].trainerName);
- Text_InitWindowAndPrintText(
- &gUnknown_03004210,
- gDisplayedStringBattle,
- 592 + gUnknown_02038696[p] * 22,
- gUnknown_083CA310[gUnknown_02038696[p]][0],
- gUnknown_083CA310[gUnknown_02038696[p]][1]);
- }
-}
-
-void sub_80AE6CC(u8 a)
-{
- sub_80AE6E4(a, a + 10);
-}
-
-void sub_80AE6E4(u8 a, u8 b)
-{
- u8 *str = gDisplayedStringBattle;
-
- str[0] = EXT_CTRL_CODE_BEGIN;
- str[1] = 6;
- str[2] = 4;
- str += 3;
-
- str = sub_80AE598(str, gContestMons[a].nickname, b);
- *str = EOS;
-
- Text_InitWindow8004D04(
- &gUnknown_03004210,
- gDisplayedStringBattle,
- 512 + gUnknown_02038696[a] * 20,
- 253 + gUnknown_083CA308[gUnknown_02038696[a]][0] * 8,
- gUnknown_083CA308[gUnknown_02038696[a]][1] * 8,
- 1);
-}
-
-u16 InitContestMonConditionI(u8 a, u8 b)
-{
- u8 r5;
- u8 r4;
- u8 r3;
-
- switch (b)
- {
- case CONTEST_CATEGORY_COOL:
- r5 = gContestMons[a].cool;
- r4 = gContestMons[a].tough;
- r3 = gContestMons[a].beauty;
- break;
- case CONTEST_CATEGORY_BEAUTY:
- r5 = gContestMons[a].beauty;
- r4 = gContestMons[a].cool;
- r3 = gContestMons[a].cute;
- break;
- case CONTEST_CATEGORY_CUTE:
- r5 = gContestMons[a].cute;
- r4 = gContestMons[a].beauty;
- r3 = gContestMons[a].smart;
- break;
- case CONTEST_CATEGORY_SMART:
- r5 = gContestMons[a].smart;
- r4 = gContestMons[a].cute;
- r3 = gContestMons[a].tough;
- break;
- case CONTEST_CATEGORY_TOUGH:
- default:
- r5 = gContestMons[a].tough;
- r4 = gContestMons[a].smart;
- r3 = gContestMons[a].cool;
- break;
- }
- return r5 + (r4 + r3 + gContestMons[a].sheen) / 2;
-}
-
-void InitContestMonConditions(u8 a)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- gContestMonConditions[i] = InitContestMonConditionI(i, a);
-}
-
-u8 CreateJudgeSprite(void)
-{
- u8 spriteId;
-
- LoadCompressedObjectPic(&gUnknown_083CA4BC);
- LoadCompressedPalette(gContest2Pal, 0x110, 32);
- spriteId = CreateSprite(&gSpriteTemplate_83CA4A4, 112, 36, 30);
- gSprites[spriteId].oam.paletteNum = 1;
- gSprites[spriteId].callback = SpriteCallbackDummy;
- return spriteId;
-}
-
-u8 sub_80AE8B4(void)
-{
- u8 spriteId;
-
- LoadCompressedObjectPic(&gUnknown_083CA4C4);
- LoadCompressedObjectPalette(&gUnknown_083CA4CC);
- spriteId = CreateSprite(&gUnknown_083CA4D4, 96, 10, 29);
- gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[0] = gSprites[spriteId].oam.tileNum;
- return spriteId;
-}
-
-u8 unref_sub_80AE908(void)
-{
- u16 species = gContestMons[gContestPlayerMonIndex].species;
- u8 spriteId;
-
- DecompressPicFromTable_2(
- &gMonFrontPicTable[species],
- gMonFrontPicCoords[species].coords,
- gMonFrontPicCoords[species].y_offset,
- (void *)EWRAM,
- gUnknown_081FAF4C[1],
- species);
- LoadCompressedPalette(gMonPaletteTable[species].data, 0x110, 32);
- GetMonSpriteTemplate_803C56C(gContestMons[gContestPlayerMonIndex].species, 1);
- spriteId = CreateSprite(
- &gUnknown_02024E8C,
- 112, 80 + (8 - gMonFrontPicCoords[gContestMons[gContestPlayerMonIndex].species].coords) * 4,
- 30);
- gSprites[spriteId].oam.paletteNum = 1;
- gSprites[spriteId].callback = SpriteCallbackDummy;
- gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7C18;
- StartSpriteAffineAnim(&gSprites[spriteId], 0);
- return spriteId;
-}
-
-u8 sub_80AE9FC(u16 species, u32 otId, u32 personality)
-{
- const u8 *lzPaletteData;
- u8 spriteId;
-
- species = SanitizeSpecies(species);
- HandleLoadSpecialPokePic(
- &gMonBackPicTable[species],
- gMonBackPicCoords[species].coords,
- gMonBackPicCoords[species].y_offset,
- EWRAM,
- gUnknown_081FAF4C[0],
- species,
- personality);
- lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personality);
- LoadCompressedPalette(lzPaletteData, 0x120, 32);
- GetMonSpriteTemplate_803C56C(species, 0);
- spriteId = CreateSprite(&gUnknown_02024E8C, 112, sub_8077E44(2, species, 0), 30);
- gSprites[spriteId].oam.paletteNum = 2;
- gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].subpriority = GetBattlerSubpriority(2);
- gSprites[spriteId].callback = SpriteCallbackDummy;
- gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
- gSprites[spriteId].data[2] = species;
- if (IsSpeciesNotUnown(species))
- gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7C18;
- else
- gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E7BEC;
- StartSpriteAffineAnim(&gSprites[spriteId], 0);
- return spriteId;
-}
-
-bool8 IsSpeciesNotUnown(u16 species)
-{
- if (species == SPECIES_UNOWN)
- return FALSE;
- else
- return TRUE;
-}
-
-void sub_80AEB30(void)
-{
- sub_80AEB4C((void *)(VRAM + 0xC000));
- sub_80AEB4C((void *)(VRAM + 0xE000));
-}
-
-void sub_80AEB4C(void *a)
-{
- DmaCopy16Defvars(3, a, (u8 *)a + 0x500, 0x280);
-}
-
-u16 sub_80AEB68(u16 move, u8 b)
-{
- u16 var;
-
- switch (gContestEffects[gContestMoves[move].effect].effectType)
- {
- case 0:
- case 1:
- case 8:
- var = 0x9082;
- break;
- case 2:
- case 3:
- var = 0x9088;
- break;
- default:
- var = 0x9086;
- break;
- }
- var += 0x9000 + (b << 12);
- return var;
-}
-
-void sub_80AEBEC(u16 a)
-{
- u8 category;
- u16 categoryTile;
- s32 i;
- u8 numHearts;
-
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 11, 31, 16, 34);
-
- category = gContestMoves[a].contestCategory;
- if (category == CONTEST_CATEGORY_COOL)
- categoryTile = 0x4040;
- else if (category == CONTEST_CATEGORY_BEAUTY)
- categoryTile = 0x4045;
- else if (category == CONTEST_CATEGORY_CUTE)
- categoryTile = 0x404A;
- else if (category == CONTEST_CATEGORY_SMART)
- categoryTile = 0x406A;
- else
- categoryTile = 0x408A;
-
- for (i = 0; i < 5; i++)
- {
- *(u16 *)(VRAM + 0xC7D6 + i * 2) = categoryTile;
- *(u16 *)(VRAM + 0xC816 + i * 2) = categoryTile + 16;
- categoryTile++;
- }
-
- if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF)
- numHearts = 0;
- else
- numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
- if (numHearts > 8)
- numHearts = 8;
- for (i = 0; i < 8; i++)
- {
- if (i < numHearts)
- *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5012;
- else
- *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5035;
- }
-
- if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
- numHearts = 0;
- else
- numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
- if (numHearts > 8)
- numHearts = 8;
- for (i = 0; i < 8; i++)
- {
- if (i < numHearts)
- *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5014;
- else
- *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5036;
- }
-
- Text_InitWindowAndPrintText(&gUnknown_03004210, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35);
- Text_InitWindowAndPrintText(&gUnknown_03004210, gUnknown_083CC5A2, 866, 16, 31);
-}
-
-void sub_80AED58(void)
-{
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 11, 35, 28, 40);
-}
-
-// unused
-void sub_80AED7C(u16 move, u8 b)
-{
- u8 r5 = gUnknown_02038696[b] * 5 + 2;
-
- if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE)
- {
- u16 tile = sub_80AEB68(move, b);
-
- *(u16 *)(VRAM + 0xC028 + r5 * 64) = tile;
- *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = tile + 1;
-
- *(u16 *)(VRAM + 0xC068 + r5 * 64) = tile + 16;
- *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = tile + 17;
-
- }
- else
- {
- *(u16 *)(VRAM + 0xC028 + r5 * 64) = 0;
- *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = 0;
-
- *(u16 *)(VRAM + 0xC068 + r5 * 64) = 0;
- *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = 0;
- }
-}
-
-void unref_sub_80AEE20(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- sub_80AED7C(sContestantStatus[i].currMove, i);
-}
-
-u16 sub_80AEE4C(u8 unused)
-{
- return 0x2034;
-}
-
-bool8 sub_80AEE54(u8 a, u8 b)
-{
- u8 r9;
- u16 r8;
- s32 r4;
-
- if (sContestantStatus[a].conditionMod == 0)
- return FALSE;
- r9 = gUnknown_02038696[a] * 5 + 2;
- if (sContestantStatus[a].conditionMod == 1)
- {
- r8 = sub_80AEE4C(a);
- r4 = 0;
- while (sContestantStatus[a].condition / 10 > r4)
- {
- *(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8;
- r4++;
- }
- if (b != 0)
- {
- PlaySE(SE_EXP_MAX);
- sContestantStatus[a].conditionMod = 0;
- }
- }
- else
- {
- r8 = 0;
- r4 = 3;
- while (sContestantStatus[a].condition / 10 < r4)
- {
- *(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8;
- r4--;
- }
- if (b != 0)
- {
- PlaySE(SE_CONTEST_CONDITION_LOSE);
- sContestantStatus[a].conditionMod = 0;
- }
- }
- return TRUE;
-}
-
-void sub_80AEF50(void)
-{
- s32 i;
- s32 r4;
-
- for (i = 0; i < 4; i++)
- {
- u8 r8 = gUnknown_02038696[i] * 5 + 2;
- u16 r6 = sub_80AEE4C(i);
-
- r4 = 0;
- while (r4 < sContestantStatus[i].condition / 10)
- {
- *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6;
- r4++;
- }
- r6 = 0;
- while (r4 < 3)
- {
- *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6;
- r4++;
- }
- }
-}
-
-u16 sub_80AEFE8(u8 unused, u8 b)
-{
- u16 var = 0;
-
- switch (b)
- {
- case 0:
- var = 0x80;
- break;
- case 1:
- var = 0x84;
- break;
- case 2:
- var = 0x86;
- break;
- case 3:
- var = 0x88;
- break;
- case 4:
- var = 0x82;
- break;
- }
- var += 0x9000;
- return var;
-}
-
-bool8 sub_80AF038(u8 a)
-{
- bool8 r5 = TRUE;
- u16 r4 = 0;
- u8 r6 = gUnknown_02038696[a] * 5 + 2;
-
- if (sContestantStatus[a].resistant != 0 || sContestantStatus[a].immune != 0 || sContestantStatus[a].jamSafetyCount != 0 || sContestantStatus[a].jamReduction != 0)
- r4 = sub_80AEFE8(a, 0);
- else if (sContestantStatus[a].nervous)
- r4 = sub_80AEFE8(a, 1);
- else if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
- r4 = sub_80AEFE8(a, 2);
- else
- r5 = FALSE;
- if (r5)
- {
- *(u16 *)(VRAM + 0xC028 + r6 * 64) = r4;
- *(u16 *)(VRAM + 0xC028 + r6 * 64 + 2) = r4 + 1;
- *(u16 *)(VRAM + 0xC068 + r6 * 64) = r4 + 16;
- *(u16 *)(VRAM + 0xC068 + r6 * 64 + 2) = r4 + 17;
- }
- else
- {
- *(u16 *)(VRAM + 0xC028 + r6 * 64) = 0;
- *(u16 *)(VRAM + 0xC028 + r6 * 64 + 2) = 0;
- *(u16 *)(VRAM + 0xC068 + r6 * 64) = 0;
- *(u16 *)(VRAM + 0xC068 + r6 * 64 + 2) = 0;
- }
- return r5;
-}
-
-void sub_80AF120(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- sub_80AF038(i);
-}
-
-void sub_80AF138(void)
-{
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 1, 15, 17, 18);
-}
-
-u16 GetChosenMove(u8 a)
-{
- if (Contest_IsMonsTurnDisabled(a))
- return 0;
- if (a == gContestPlayerMonIndex)
- {
- return gContestMons[a].moves[sContest.playerMoveChoice];
- }
- else
- {
- u8 moveChoice;
-
- ContestAI_ResetAI(a);
- moveChoice = ContestAI_GetActionToUse();
- return gContestMons[a].moves[moveChoice];
- }
-}
-
-void sub_80AF1B8(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- sContestantStatus[i].currMove = GetChosenMove(i);
-}
-
-void sub_80AF1E4(u8 a, u8 b)
-{
- u8 r3;
-
- if (b == 0)
- r3 = a + 10;
- else
- r3 = 14;
- if (sContestantStatus[a].currMove == MOVE_NONE)
- sub_80AE598(gDisplayedStringBattle, gUnknownText_MissedTurn, r3);
- else
- sub_80AE598(gDisplayedStringBattle, gMoveNames[sContestantStatus[a].currMove], r3);
- sub_80AF2A0(a);
- Text_InitWindowAndPrintText(
- &gUnknown_03004210,
- gDisplayedStringBattle,
- 696 + a * 20,
- gUnknown_083CA318[a][0],
- gUnknown_083CA318[a][1]);
-}
-
-void unref_sub_80AF280(u8 a)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- sub_80AF1E4(i, a);
-}
-
-void sub_80AF2A0(u8 a)
-{
- Text_FillWindowRectDefPalette(
- &gUnknown_03004210,
- 0,
- gUnknown_083CA318[a][0],
- gUnknown_083CA318[a][1],
- gUnknown_083CA318[a][0] + 7,
- gUnknown_083CA318[a][1] + 1);
-}
-
-void unref_sub_80AF2E0(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- sub_80AF2A0(i);
-}
-
-void sub_80AF2FC(void)
-{
- u8 i;
- u8 j;
- s16 arr[4];
-
- for (i = 0; i < 4; i++)
- {
- sContestantStatus[i].unk4 += sContestantStatus[i].appeal2;
- arr[i] = sContestantStatus[i].unk4;
- }
- for (i = 0; i < 3; i++)
- {
- for (j = 3; j > i; j--)
- {
- if (arr[j - 1] < arr[j])
- {
- u16 temp = arr[j];
-
- arr[j] = arr[j - 1];
- arr[j - 1] = temp;
- }
- }
- }
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 4; j++)
- {
- if (sContestantStatus[i].unk4 == arr[j])
- {
- sContestantStatus[i].unkB_0 = j;
- break;
- }
- }
- }
- sub_80B0F28(1);
- sub_80B159C();
-}
-
-void sub_80AF3C0(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- {
- u8 attentionLevel;
-
- if (sContestantStatus[i].currMove == MOVE_NONE)
- attentionLevel = 5;
- else if (sContestantStatus[i].appeal2 <= 0)
- attentionLevel = 0;
- else if (sContestantStatus[i].appeal2 < 30)
- attentionLevel = 1;
- else if (sContestantStatus[i].appeal2 < 60)
- attentionLevel = 2;
- else if (sContestantStatus[i].appeal2 < 80)
- attentionLevel = 3;
- else
- attentionLevel = 4;
-
- sContestantStatus[i].attentionLevel = attentionLevel;
- }
-}
-
-bool8 sub_80AF404(u8 a)
-{
- if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
- return FALSE;
- else
- return TRUE;
-}
-
-void sub_80AF438(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- {
- // This is bitfield hell...
- sContestantStatus[i].appeal2 = 0;
- sContestantStatus[i].appeal1 = 0;
- sContestantStatus[i].jamSafetyCount = 0;
- if (sContestantStatus[i].numTurnsSkipped > 0)
- sContestantStatus[i].numTurnsSkipped--;
- sContestantStatus[i].jam = 0;
- sContestantStatus[i].resistant = 0;
- sContestantStatus[i].jamReduction = 0;
- sContestantStatus[i].immune = 0;
- sContestantStatus[i].moreEasilyStartled = 0;
- sContestantStatus[i].usedRepeatableMove = 0;
- sContestantStatus[i].nervous = 0;
- sContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
- sContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
- sContestantStatus[i].conditionMod = 0;
- sContestantStatus[i].unk15_2 = sContestantStatus[i].disappointedRepeat;
- sContestantStatus[i].disappointedRepeat = FALSE;
- sContestantStatus[i].turnOrderModAction = 0;
- sContestantStatus[i].appealTripleCondition = 0;
- if (sContestantStatus[i].turnSkipped)
- {
- sContestantStatus[i].numTurnsSkipped = 1;
- sContestantStatus[i].turnSkipped = 0;
- }
- if (sContestantStatus[i].exploded)
- {
- sContestantStatus[i].noMoreTurns = 1;
- sContestantStatus[i].exploded = 0;
- }
- sContestantStatus[i].overrideCategoryExcitementMod = 0;
- }
- for (i = 0; i < 4; i++)
- {
- sContestantStatus[i].prevMove = sContestantStatus[i].currMove;
- sContest.unk19220[sContest.turnNumber][i] = sContestantStatus[i].prevMove;
- sContest.unk19248[sContest.turnNumber][i] = Contest_GetMoveExcitement(sContestantStatus[i].currMove);
- sContestantStatus[i].currMove = MOVE_NONE;
- }
- shared19328.excitementFrozen = 0;
-}
-
-bool8 Contest_IsMonsTurnDisabled(u8 a)
-{
- if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
- return TRUE;
- else
- return FALSE;
-}
-
-bool8 unref_sub_80AF5D0(u8 a, u8 b)
-{
- u8 i;
-
- if (a != gContestPlayerMonIndex)
- return TRUE;
- for (i = 0; i < 4; i++)
- {
- if (b == 3)
- {
- sContest.unk1920A_0 = 1;
- return TRUE;
- }
- if (b == 4)
- {
- sContest.unk1920A_1 = 1;
- return TRUE;
- }
- if (sContest.unk19206[i] == b)
- return TRUE;
- if (sContest.unk19206[i] == 0xFF)
- {
- sContest.unk19206[i] = b;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-void sub_80AF630(u8 a)
-{
- gUnknown_02038688[a] = sub_80AF688(a);
- gUnknown_02038678[a] = gContestMonConditions[a] + gUnknown_02038688[a];
-}
-
-void sub_80AF668(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- sub_80AF630(i);
- DetermineFinalStandings();
-}
-
-s16 sub_80AF688(u8 a)
-{
- return gUnknown_02038680[a] * 2;
-}
-
-// Determines standing order?
-void DetermineFinalStandings(void)
-{
- u16 sp0[4] = {0};
- struct UnknownContestStruct6 sp8[4];
- s32 i;
- s32 j;
-
- for (i = 0; i < 4; i++)
- {
- s32 r2;
-
- sp0[i] = Random();
- for (r2 = 0; r2 < i; r2++)
- {
- if (sp0[i] == sp0[r2])
- {
- i--;
- break;
- }
- }
- }
-
- for (i = 0; i < 4; i++)
- {
- sp8[i].unk0 = gUnknown_02038678[i];
- sp8[i].unk4 = gContestMonConditions[i];
- sp8[i].unk8 = sp0[i];
- sp8[i].unkC = i;
- }
-
- for (i = 0; i < 3; i++)
- {
- for (j = 3; j > i; j--)
- {
- if (sub_80AF828(j - 1, j, sp8))
- {
- struct UnknownContestStruct6 temp;
-
- temp.unk0 = sp8[j - 1].unk0;
- temp.unk4 = sp8[j - 1].unk4;
- temp.unk8 = sp8[j - 1].unk8;
- temp.unkC = sp8[j - 1].unkC;
-
- sp8[j - 1].unk0 = sp8[j].unk0;
- sp8[j - 1].unk4 = sp8[j].unk4;
- sp8[j - 1].unk8 = sp8[j].unk8;
- sp8[j - 1].unkC = sp8[j].unkC;
-
- sp8[j].unk0 = temp.unk0;
- sp8[j].unk4 = temp.unk4;
- sp8[j].unk8 = temp.unk8;
- sp8[j].unkC = temp.unkC;
- }
- }
- }
-
- for (i = 0; i < 4; i++)
- gContestFinalStandings[sp8[i].unkC] = i;
-}
-
-bool8 sub_80AF828(s32 a, s32 b, struct UnknownContestStruct6 *c)
-{
- bool8 retVal;
-
- if (c[a].unk0 < c[b].unk0)
- retVal = TRUE;
- else if (c[a].unk0 > c[b].unk0)
- retVal = FALSE;
- else if (c[a].unk4 < c[b].unk4)
- retVal = TRUE;
- else if (c[a].unk4 > c[b].unk4)
- retVal = FALSE;
- else if (c[a].unk8 < c[b].unk8)
- retVal = TRUE;
- else
- retVal = FALSE;
- return retVal;
-}
-
-void sub_80AF860(void)
-{
- gBattle_BG0_Y = 0;
- gBattle_BG2_Y = 0;
- sub_80AF138();
- Text_InitWindowAndPrintText(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15);
-}
-
-u8 unref_sub_80AF89C(s16 a, s16 b, u8 c, u8 d)
-{
- u8 taskId;
- u8 r5;
- s8 r4;
- u16 r0;
-
- shared19338[d].unk2_2 = 1;
- taskId = CreateTask(sub_80AF94C, 20);
- r5 = sub_80AFB74(a);
- r4 = sub_80AFB74(a + b) - r5;
- r0 = sub_80AFB40(d);
- gTasks[taskId].data[0] = r5;
- gTasks[taskId].data[1] = r4;
- gTasks[taskId].data[2] = r0 + c;
- gTasks[taskId].data[3] = d;
- if (b < 0)
- nullsub_19(d);
- return taskId;
-}
-
-void sub_80AF94C(u8 taskId)
-{
- u8 r5 = gTasks[taskId].data[3];
-
- if (gTasks[taskId].data[1] == 0)
- {
- nullsub_19(r5);
- DestroyTask(taskId);
- shared19338[r5].unk2_2 = 0;
- }
- else if (++gTasks[taskId].data[10] > 29)
- {
- u8 r6;
-
- gTasks[taskId].data[10] = 0;
- if (gTasks[taskId].data[1] < 0)
- {
- r6 = gTasks[taskId].data[0]--;
- gTasks[taskId].data[1]++;
- PlaySE(SE_BOO);
- }
- else
- {
- r6 = ++gTasks[taskId].data[0];
- gTasks[taskId].data[1]--;
- PlaySE(SE_PIN);
- }
- if ((u16)gTasks[taskId].data[2] != 0xFFFF)
- {
- RequestSpriteCopy(
- &gTasks[taskId].data[2],
- (void *)(VRAM + 0xC000 + (147 + r6 + r5 * 160) * 2),
- 2);
- }
- else
- {
- u8 i;
-
- for (i = 0; i < 3; i++)
- {
- if (gTasks[taskId].data[i + 4] < 0)
- {
- RequestSpriteCopy(
- &gTasks[taskId].data[i + 7],
- (void *)(VRAM + 0xC000 + (147 + r6 + r5 * 160) * 2),
- 2);
- gTasks[taskId].data[i + 4]++;
- break;
- }
- }
- }
- }
-}
-
-void sub_80AFA5C(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- {
- DmaClear16(3, (void *)(VRAM + 0xC000 + (86 + i * 160) * 2), 16);
- DmaClear16(3, (void *)(VRAM + 0xC000 + (118 + i * 160) * 2), 16);
- }
-}
-
-void unref_sub_80AFAB8(s16 a, u8 b)
-{
- u8 r5 = sub_80AFB74(a);
- u16 r2;
- u8 i;
- u16 arr[9];
-
- if (b == 0)
- r2 = 0x50A2;
- else if (b == 1)
- r2 = 0x60A2;
- else if (b == 2)
- r2 = 0x70A2;
- else
- r2 = 0x80A2;
-
- for (i = 0; i < 9; i++)
- {
- if (i < r5)
- arr[i] = r2;
- else
- arr[i] = 0;
- }
-
- DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xC000 + (148 + b * 160) * 2), sizeof(arr));
-}
-
-u16 sub_80AFB40(u8 a)
-{
- u16 var;
-
- if (a == 0)
- var = 0x5011;
- else if (a == 1)
- var = 0x6011;
- else if (a == 2)
- var = 0x7011;
- else
- var = 0x8011;
- return var + 1;
-}
-
-s8 sub_80AFB74(s16 a)
-{
- s8 retVal = a / 10;
-
- if (retVal > 16)
- retVal = 16;
- else if (retVal < -16)
- retVal = -16;
- return retVal;
-}
-
-u8 sub_80AFBA0(s16 a, s16 b, u8 c)
-{
- u8 taskId;
- s8 r4;
- s8 r5;
-
- shared19338[c].unk2_2 = 1;
- taskId = CreateTask(sub_80AFC74, 20);
- r4 = sub_80AFB74(a);
- r5 = sub_80AFB74(a + b) - r4;
- sub_80AFB40(c); // unused return value
- gTasks[taskId].data[0] = abs(r4);
- gTasks[taskId].data[1] = r5;
- if (r4 > 0 || (r4 == 0 && r5 > 0))
- gTasks[taskId].data[2] = 1;
- else
- gTasks[taskId].data[2] = -1;
- gTasks[taskId].data[3] = c;
- if (b < 0)
- nullsub_19(c);
- return taskId;
-}
-
-void sub_80AFC74(u8 taskId)
-{
- u8 r7 = gTasks[taskId].data[3];
- s16 r3 = gTasks[taskId].data[0];
- s16 r1 = gTasks[taskId].data[1];
-
- if (++gTasks[taskId].data[10] > 14)
- {
- u16 r6;
- u8 r5;
- u8 r10;
-
- gTasks[taskId].data[10] = 0;
- if (gTasks[taskId].data[1] == 0)
- {
- nullsub_19(r7);
- DestroyTask(taskId);
- shared19338[r7].unk2_2 = 0;
- return;
- }
- else if (r3 == 0)
- {
- if (r1 < 0)
- {
- r6 = sub_80AFB40(r7) + 2;
- gTasks[taskId].data[1]++;
- }
- else
- {
- r6 = sub_80AFB40(r7);
- gTasks[taskId].data[1]--;
- }
- r5 = gTasks[taskId].data[0]++;
- }
- else
- {
- if (gTasks[taskId].data[2] < 0)
- {
- if (r1 < 0)
- {
- r5 = gTasks[taskId].data[0]++;
- gTasks[taskId].data[1]++;
- r6 = sub_80AFB40(r7) + 2;
- }
- else
- {
- r5 = --gTasks[taskId].data[0];
- r6 = 0;
- gTasks[taskId].data[1]--;
- }
- }
- else
- {
- if (r1 < 0)
- {
- r5 = --gTasks[taskId].data[0];
- r6 = 0;
- gTasks[taskId].data[1]++;
- }
- else
- {
- r5 = gTasks[taskId].data[0]++;
- gTasks[taskId].data[1]--;
- r6 = sub_80AFB40(r7);
- }
- }
- }
- r10 = r5;
- if (r5 > 7)
- r5 += 24;
- // Seriously, a 2-byte CpuFill? Why?
- CpuFill16(r6, (void *)(VRAM + 0xC000 + (0x56 + r5 + gUnknown_02038696[r7] * 160) * 2), 2);
- if (r1 > 0)
- {
- PlaySE(SE_CONTEST_HEART);
- m4aMPlayImmInit(&gMPlayInfo_SE1);
- m4aMPlayPitchControl(&gMPlayInfo_SE1, 0xFFFF, r10 * 256);
- }
- else
- {
- PlaySE(SE_BOO);
- }
- if (r5 == 0 && r6 == 0)
- gTasks[taskId].data[2] = -gTasks[taskId].data[2];
- }
-}
-
-void sub_80AFE30(void)
-{
- s32 i;
-
- LoadSpriteSheet(&gUnknown_083CA350);
- for (i = 0; i < 4; i++)
- {
- u8 y = gUnknown_083CA338[gUnknown_02038696[i]];
-
- shared19338[i].unk0 = CreateSprite(&gSpriteTemplate_83CA3AC, 180, y, 1);
- }
-}
-
-void sub_80AFE78(u8 a)
-{
- u8 spriteId;
- s16 r5;
-
- shared19338[a].unk2_0 = 1;
- spriteId = shared19338[a].unk0;
- r5 = sContestantStatus[a].unk4 / 10 * 2;
- if (r5 > 56)
- r5 = 56;
- else if (r5 < 0)
- r5 = 0;
- gSprites[spriteId].invisible = FALSE;
- gSprites[spriteId].data[0] = a;
- gSprites[spriteId].data[1] = r5;
- if (gSprites[spriteId].data[1] > gSprites[spriteId].pos2.x)
- gSprites[spriteId].data[2] = 1;
- else
- gSprites[spriteId].data[2] = -1;
- gSprites[spriteId].callback = sub_80AFF60;
-}
-
-void sub_80AFF10(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- sub_80AFE78(i);
-}
-
-bool8 sub_80AFF28(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- {
- if (shared19338[i].unk2_0)
- break;
- }
- if (i == 4)
- return TRUE;
- else
- return FALSE;
-}
-
-void sub_80AFF60(struct Sprite *sprite)
-{
- if (sprite->pos2.x == sprite->data[1])
- {
- shared19338[sprite->data[0]].unk2_0 = 0;
- sprite->callback = SpriteCallbackDummy;
- }
- else
- {
- sprite->pos2.x += sprite->data[2];
- }
-}
-
-void sub_80AFFA0(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- gSprites[shared19338[i].unk0].pos1.y = gUnknown_083CA338[gUnknown_02038696[i]];
-}
-
-void sub_80AFFE0(bool8 a)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- {
- if (gUnknown_02038696[i] > 1)
- {
- if (!a)
- gSprites[shared19338[i].unk0].pos1.x = 180;
- else
- gSprites[shared19338[i].unk0].pos1.x = 256;
- }
- }
-}
-
-void sub_80B0034(void)
-{
- s32 i;
-
- LoadSpritePalette(&gUnknown_083CA3E4);
- for (i = 0; i < 4; i++)
- {
- LoadCompressedObjectPic(&gUnknown_083CA3C4[i]);
- shared19338[i].unk1 = CreateSprite(
- &gSpriteTemplate_83CA3F4[i],
- 204, gUnknown_083CA33C[gUnknown_02038696[i]],
- 0);
- SetSubspriteTables(&gSprites[shared19338[i].unk1], gSubspriteTables_83CA464);
- gSprites[shared19338[i].unk1].invisible = TRUE;
- }
-}
-
-void CreateApplauseMeterSprite(void)
-{
- u8 spriteId;
-
- LoadCompressedObjectPic(&gUnknown_083CA46C);
- LoadSpritePalette(&gUnknown_083CA474);
- spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1);
- gSprites[spriteId].invisible = TRUE;
- sContest.applauseMeterSpriteId = spriteId;
-}
-
-void nullsub_18(s8 unused)
-{
-}
-
-void unref_sub_80B011C(void)
-{
- u8 i;
-
- LoadCompressedObjectPic(&gUnknown_083CC3AC);
- for (i = 0; i < 4; i++)
- LoadCompressedObjectPalette(&gUnknown_083CC3B4[i]);
- for (i = 0; i < 4; i++)
- {
- u8 spriteId = CreateSprite(
- &gSpriteTemplate_83CC454[i],
- gUnknown_083CA330[i][0], gUnknown_083CA330[i][1],
- 5);
-
- gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data[0] = i;
- sContest.unk1920D[i] = spriteId;
- }
-}
-
-void unref_sub_80B01B0(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- gSprites[sContest.unk1920D[i]].callback = sub_80B0238;
-}
-
-bool8 unref_sub_80B01E0(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- {
- if (gSprites[sContest.unk1920D[i]].callback != SpriteCallbackDummy)
- break;
- }
- if (i == 4)
- return TRUE;
- else
- return FALSE;
-}
-
-void sub_80B0238(struct Sprite *sprite)
-{
- sprite->oam.affineMode = 1;
- InitSpriteAffineAnim(sprite);
- if (sprite->invisible)
- {
- sprite->callback = sub_80B02A8;
- }
- else
- {
- StartSpriteAffineAnim(sprite, 1);
- sprite->callback = sub_80B0280;
- }
-}
-
-void sub_80B0280(struct Sprite *sprite)
-{
- if (sprite->affineAnimEnded)
- {
- sprite->invisible = TRUE;
- sprite->callback = sub_80B02A8;
- }
-}
-
-void sub_80B02A8(struct Sprite *sprite)
-{
- sprite->invisible = FALSE;
- StartSpriteAnim(sprite, sContestantStatus[sprite->data[0]].unkB_0);
- StartSpriteAffineAnim(sprite, 2);
- sprite->callback = sub_80B02F4;
- PlaySE(SE_CONTEST_PLACE);
-}
-
-void sub_80B02F4(struct Sprite *sprite)
-{
- if (sprite->affineAnimEnded)
- {
- FreeSpriteOamMatrix(sprite);
- sprite->oam.affineMode = 0;
- sprite->callback = SpriteCallbackDummy;
- }
-}
-
-void sub_80B0324(void)
-{
- u8 i;
- u8 taskId = CreateTask(sub_80B0458, 30);
-
- sContest.unk19211 = taskId;
- for (i = 0; i < 4; i++)
- gTasks[taskId].data[i * 4] = 0xFF;
-}
-
-void sub_80B0368(u8 a)
-{
- gTasks[sContest.unk19211].data[a * 4 + 0] = 0;
- gTasks[sContest.unk19211].data[a * 4 + 1] = 0;
-}
-
-void sub_80B03A8(u8 a)
-{
- u8 taskId = CreateTask(sub_80B03D8, 31);
-
- gTasks[taskId].data[0] = a;
-}
-
-void sub_80B03D8(u8 taskId)
-{
- u8 r4 = gTasks[taskId].data[0];
-
- if (gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0
- || gTasks[sContest.unk19211].data[r4 * 4 + 0] == 0xFF)
- {
- gTasks[sContest.unk19211].data[r4 * 4 + 0] = 0xFF;
- gTasks[sContest.unk19211].data[r4 * 4 + 1] = 0;
- BlendPalette((sContest.unk19218[r4] + 5) * 16 + 6, 2, 0, RGB(31, 31, 18));
- DestroyTask(taskId);
- }
-}
-
-void sub_80B0458(u8 taskId)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- {
- u8 r3 = i * 4;
-
- if (gTasks[taskId].data[r3 + 0] != 0xFF)
- {
- if (gTasks[taskId].data[r3 + 1] == 0)
- gTasks[taskId].data[r3 + 0]++;
- else
- gTasks[taskId].data[r3 + 0]--;
-
- if (gTasks[taskId].data[r3 + 0] == 16
- || gTasks[taskId].data[r3 + 0] == 0)
- gTasks[taskId].data[r3 + 1] ^= 1;
-
- BlendPalette(
- (sContest.unk19218[i] + 5) * 16 + 6,
- 2,
- gTasks[taskId].data[r3 + 0],
- RGB(31, 31, 18));
- }
- }
-}
-
-void sub_80B0518(void)
-{
- u8 i;
-
- sContest.unk19212 = CreateTask(sub_80B05FC, 30);
- for (i = 0; i < 4; i++)
- sub_80B0548(i);
-}
-
-void sub_80B0548(u8 a)
-{
- gTasks[sContest.unk19212].data[a * 4 + 0] = 0xFF;
- gTasks[sContest.unk19212].data[a * 4 + 1] = 0;
-}
-
-void sub_80B0588(void)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- sub_80B05A4(i);
-}
-
-void sub_80B05A4(u8 a)
-{
- sub_80B0548(a);
-
- // 2-byte DMA copy? Why?
-
- DmaCopy16Defvars(
- 3,
- &gPlttBufferUnfaded[16 * (5 + a) + 10],
- &gPlttBufferFaded[16 * (5 + a) + 10],
- 2);
-
- DmaCopy16Defvars(
- 3,
- &gPlttBufferUnfaded[16 * (5 + a) + 12 + a],
- &gPlttBufferFaded[16 * (5 + a) + 12 + a],
- 2);
-}
-
-void nullsub_19(int unused)
-{
-}
-
-void sub_80B05FC(u8 taskId)
-{
- u8 i;
-
- for (i = 0; i < 4; i++)
- {
- u8 r3 = i * 4;
-
- if (gTasks[taskId].data[r3 + 0] != 0xFF)
- {
- if (++gTasks[taskId].data[r3 + 2] > 2)
- {
- gTasks[taskId].data[r3 + 2] = 0;
-
- if (gTasks[taskId].data[r3 + 1] == 0)
- gTasks[taskId].data[r3 + 0]++;
- else
- gTasks[taskId].data[r3 + 0]--;
-
- if (gTasks[taskId].data[r3 + 0] == 16
- || gTasks[taskId].data[r3 + 0] == 0)
- gTasks[taskId].data[r3 + 1] ^= 1;
-
- BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
- BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
- }
- }
- }
-}
-
-u8 unref_sub_80B06E0(u8 *a)
-{
- u8 i;
- u8 taskId = CreateTask(sub_80B0748, 10);
-
- for (i = 0; i < 4; i++)
- {
- u8 r0 = i * 4;
-
- gTasks[taskId].data[r0] = a[i];
- if (a[i] != 0)
- shared19338[i].unk2_1 = 1;
- }
- return taskId;
-}
-
-#ifdef NONMATCHING
-void sub_80B0748(u8 taskId)
-{
- u8 i;
- u8 r4;
- u8 r4_2;
- u8 r1;
- u8 r7;
-
- for (i = 0; i < 4; i++)
- {
- //#define r4 r4_2
- r4 = gUnknown_02038696[i];
- r1 = r4 * 4;
- r7 = gTasks[taskId].data[r1 + 0];
-
- if (r7 != 0)
- {
- //_080B079C
- u8 r8 = gTasks[taskId].data[r1 + 1];
- u8 r5 = gTasks[taskId].data[r1 + 2];
- u8 r6 = gTasks[taskId].data[r1 + 3];
-
- if (r7 == 1)
- {
- r6++;
- if (r6 == 1)
- {
- //_080B07D2
- r6 = 0;
- BlendPalette((r4 + 5) * 16 + 1, 3, r5, RGB(31, 31, 31));
- if (r5 == 0 && r8 == 4)
- {
- gTasks[taskId].data[r1 + 0] = 0;
- //asm("");
- }
- //_080B0800
- else
- {
- r5 += 2;
- if (r5 > 13)
- {
- r5 = 0;
- r8++;
- }
- }
- }
- //to _080B08EA
- }
- //_080B0818
- else if (r7 == 2 || r7 == 4)
- {
- r6++;
- if (r6 == 3)
- {
- r6 = 0;
- BlendPalette((r4 + 5) * 16 + 1, 3, r5, gUnknown_083CC5A4[r4]);
- if (r5 == 0 && r8 == 2)
- {
- gTasks[taskId].data[r1 + 0] = 0;
- }
- //_080B0858
- else
- {
- r5 += 1;
- if (r5 == 14)
- {
- r5 = 0;
- r8++;
- if (r7 == 4 && r8 == 1)
- {
- BlendPalette((r4 + 9) * 16 + 2, 1, 4, RGB(0, 0, 0));
- BlendPalette((r4 + 9) * 16 + 5, 1, 4, RGB(0, 0, 0));
- }
- }
- }
- }
- //to _080B08EA
- }
- //_080B0896
- else if (r7 == 3)
- {
- r6++;
- if (r6 == 12)
- {
- r6 = 0;
- BlendPalette((r4 + 5) * 16 + 1, 3, r5, RGB(0, 0, 0));
- r5 += 1;
- if (r5 == 5)
- {
- // What the hell? These aren't pointers.
- // This code would crash if run.
- DmaCopy16Defvars(3, (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1],
- (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1], 6);
- gTasks[taskId].data[r1 + 0] = 0;
- }
- }
- }
- //_080B08EA
- gTasks[taskId].data[r1 + 1] = r8;
- gTasks[taskId].data[r1 + 2] = r5;
- gTasks[taskId].data[r1 + 3] = r6;
- }
- //_080B0910
- }
- //_080B0920
-
- #define i r4_2
- for (i = 0; i < 4; i++) // r4 is i
- {
- if (gTasks[taskId].data[i * 4 + 0] != 0)
- break;
- }
- //_080B0958
- if (i == 4)
- {
- for (i = 0; i < 4; i++)
- shared19338[i].unk2_2 = 0;
- DestroyTask(taskId);
- }
- #undef i
-}
-#else
-NAKED
-void sub_80B0748(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x20\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- str r0, [sp, 0x4]\n\
- ldr r2, _080B07F4 @ =gTasks\n\
- movs r1, 0x8\n\
- adds r1, r2\n\
- mov r10, r1\n\
- ldr r3, [sp]\n\
- lsls r3, 2\n\
- str r3, [sp, 0x1C]\n\
- ldr r1, [sp]\n\
- adds r0, r3, r1\n\
- lsls r0, 3\n\
- str r0, [sp, 0xC]\n\
-_080B0774:\n\
- ldr r0, _080B07F8 @ =gUnknown_02038696\n\
- ldr r3, [sp, 0x4]\n\
- adds r0, r3, r0\n\
- ldrb r4, [r0]\n\
- lsls r0, r4, 26\n\
- lsrs r1, r0, 24\n\
- lsls r0, r1, 1\n\
- str r0, [sp, 0x8]\n\
- ldr r3, [sp]\n\
- lsls r0, r3, 2\n\
- adds r0, r3\n\
- lsls r6, r0, 3\n\
- ldr r3, [sp, 0x8]\n\
- adds r0, r3, r6\n\
- add r0, r10\n\
- mov r9, r0\n\
- ldrb r7, [r0]\n\
- cmp r7, 0\n\
- bne _080B079C\n\
- b _080B0910\n\
-_080B079C:\n\
- adds r3, r1, 0x1\n\
- lsls r0, r3, 1\n\
- adds r0, r6\n\
- add r0, r10\n\
- ldrb r0, [r0]\n\
- mov r8, r0\n\
- adds r2, r1, 0x2\n\
- lsls r0, r2, 1\n\
- adds r0, r6\n\
- add r0, r10\n\
- ldrb r5, [r0]\n\
- adds r1, 0x3\n\
- lsls r0, r1, 1\n\
- adds r0, r6\n\
- add r0, r10\n\
- ldrb r6, [r0]\n\
- str r3, [sp, 0x10]\n\
- str r2, [sp, 0x14]\n\
- str r1, [sp, 0x18]\n\
- cmp r7, 0x1\n\
- bne _080B0818\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0x1\n\
- beq _080B07D2\n\
- b _080B08EA\n\
-_080B07D2:\n\
- movs r6, 0\n\
- adds r0, r4, 0x5\n\
- lsls r0, 4\n\
- adds r0, 0x1\n\
- movs r1, 0x3\n\
- adds r2, r5, 0\n\
- ldr r3, _080B07FC @ =0x00007fff\n\
- bl BlendPalette\n\
- cmp r5, 0\n\
- bne _080B0800\n\
- mov r0, r8\n\
- cmp r0, 0x4\n\
- bne _080B0800\n\
- mov r1, r9\n\
- strh r6, [r1]\n\
- b _080B08EA\n\
- .align 2, 0\n\
-_080B07F4: .4byte gTasks\n\
-_080B07F8: .4byte gUnknown_02038696\n\
-_080B07FC: .4byte 0x00007fff\n\
-_080B0800:\n\
- adds r0, r5, 0x2\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0xD\n\
- bls _080B08EA\n\
- movs r5, 0\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- b _080B08EA\n\
-_080B0818:\n\
- cmp r7, 0x2\n\
- beq _080B0820\n\
- cmp r7, 0x4\n\
- bne _080B0896\n\
-_080B0820:\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0x3\n\
- bne _080B08EA\n\
- movs r6, 0\n\
- adds r0, r4, 0x5\n\
- lsls r0, 4\n\
- adds r0, 0x1\n\
- ldr r2, _080B0854 @ =gUnknown_083CC5A4\n\
- lsls r1, r4, 1\n\
- adds r1, r2\n\
- ldrh r3, [r1]\n\
- movs r1, 0x3\n\
- adds r2, r5, 0\n\
- bl BlendPalette\n\
- cmp r5, 0\n\
- bne _080B0858\n\
- mov r2, r8\n\
- cmp r2, 0x2\n\
- bne _080B0858\n\
- mov r3, r9\n\
- strh r6, [r3]\n\
- b _080B08EA\n\
- .align 2, 0\n\
-_080B0854: .4byte gUnknown_083CC5A4\n\
-_080B0858:\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0xE\n\
- bne _080B08EA\n\
- movs r5, 0\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- cmp r7, 0x4\n\
- bne _080B08EA\n\
- cmp r0, 0x1\n\
- bne _080B08EA\n\
- adds r4, 0x9\n\
- lsls r4, 4\n\
- adds r0, r4, 0x2\n\
- movs r1, 0x1\n\
- movs r2, 0x4\n\
- movs r3, 0\n\
- bl BlendPalette\n\
- adds r4, 0x5\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- movs r2, 0x4\n\
- movs r3, 0\n\
- bl BlendPalette\n\
- b _080B08EA\n\
-_080B0896:\n\
- cmp r7, 0x3\n\
- bne _080B08EA\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0xC\n\
- bne _080B08EA\n\
- movs r6, 0\n\
- adds r0, r4, 0x5\n\
- lsls r0, 4\n\
- adds r4, r0, 0x1\n\
- adds r0, r4, 0\n\
- movs r1, 0x3\n\
- adds r2, r5, 0\n\
- movs r3, 0\n\
- bl BlendPalette\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x5\n\
- bne _080B08EA\n\
- ldr r0, _080B0930 @ =gPlttBufferFaded\n\
- lsls r1, r4, 1\n\
- adds r0, r1, r0\n\
- ldrh r2, [r0]\n\
- ldr r0, _080B0934 @ =gPlttBufferUnfaded\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- ldr r1, _080B0938 @ =0x040000d4\n\
- str r2, [r1]\n\
- str r0, [r1, 0x4]\n\
- movs r0, 0x80\n\
- lsls r0, 24\n\
- orrs r7, r0\n\
- str r7, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- ldr r1, [sp, 0x8]\n\
- ldr r2, [sp, 0xC]\n\
- adds r0, r1, r2\n\
- add r0, r10\n\
- strh r6, [r0]\n\
-_080B08EA:\n\
- ldr r3, [sp, 0x10]\n\
- lsls r0, r3, 1\n\
- ldr r1, [sp, 0xC]\n\
- adds r0, r1\n\
- add r0, r10\n\
- mov r2, r8\n\
- strh r2, [r0]\n\
- ldr r3, [sp, 0x14]\n\
- lsls r0, r3, 1\n\
- adds r0, r1\n\
- add r0, r10\n\
- strh r5, [r0]\n\
- ldr r1, [sp, 0x18]\n\
- lsls r0, r1, 1\n\
- ldr r2, [sp, 0xC]\n\
- adds r0, r2\n\
- add r0, r10\n\
- strh r6, [r0]\n\
- ldr r2, _080B093C @ =gTasks\n\
-_080B0910:\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- cmp r0, 0x3\n\
- bhi _080B0920\n\
- b _080B0774\n\
-_080B0920:\n\
- movs r4, 0\n\
- ldr r3, [sp, 0x1C]\n\
- ldr r1, [sp]\n\
- adds r0, r3, r1\n\
- lsls r1, r0, 3\n\
- adds r2, 0x8\n\
- adds r0, r1, r2\n\
- b _080B0950\n\
- .align 2, 0\n\
-_080B0930: .4byte gPlttBufferFaded\n\
-_080B0934: .4byte gPlttBufferUnfaded\n\
-_080B0938: .4byte 0x040000d4\n\
-_080B093C: .4byte gTasks\n\
-_080B0940:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x3\n\
- bhi _080B0958\n\
- lsls r0, r4, 3\n\
- adds r0, r1\n\
- adds r0, r2\n\
-_080B0950:\n\
- movs r3, 0\n\
- ldrsh r0, [r0, r3]\n\
- cmp r0, 0\n\
- beq _080B0940\n\
-_080B0958:\n\
- cmp r4, 0x4\n\
- bne _080B0980\n\
- movs r4, 0\n\
- ldr r3, _080B0990 @ =gSharedMem + 0x19338\n\
- movs r5, 0x3\n\
- negs r5, r5\n\
-_080B0964:\n\
- lsls r1, r4, 2\n\
- adds r1, r3\n\
- ldrb r2, [r1, 0x2]\n\
- adds r0, r5, 0\n\
- ands r0, r2\n\
- strb r0, [r1, 0x2]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x3\n\
- bls _080B0964\n\
- ldr r0, [sp]\n\
- bl DestroyTask\n\
-_080B0980:\n\
- add sp, 0x20\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080B0990: .4byte gSharedMem + 0x19338\n\
- .syntax divided\n");
-}
-#endif
-
-void unref_sub_80B0994(u8 a)
-{
- if (a != 0)
- sContest.unk1920A_2 = 1;
-}
-
-void sub_80B09B0(u8 a)
-{
- if (sContestantStatus[a].hasJudgesAttention)
- sub_80B0368(a);
- else
- sub_80B03A8(a);
-}
-
-extern const struct CompressedSpriteSheet gUnknown_083CC4B4[];
-extern const struct SpritePalette gUnknown_083CC4D4[];
-extern const struct SpriteTemplate gSpriteTemplate_83CC53C[];
-
-u8 sub_80B09E4(u8 a)
-{
- u8 r5 = gUnknown_02038696[a] * 40 + 32;
- u8 r8;
- u8 r6;
- volatile u8 zero;
-
- LoadCompressedObjectPic(&gUnknown_083CC4B4[a]);
- LoadSpritePalette(&gUnknown_083CC4D4[a]);
- r8 = CreateSprite(&gSpriteTemplate_83CC53C[a], 184, r5, 29);
- r6 = CreateSprite(&gSpriteTemplate_83CC53C[a], 248, r5, 29);
- gSprites[r6].oam.tileNum += 64;
-
- CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x26), (u8 *)(VRAM + 0x10000 + gSprites[r8].oam.tileNum * 32));
- CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x36), (u8 *)(VRAM + 0x10000 + gSprites[r6].oam.tileNum * 32));
-
- DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32), 0x300);
-
- // What is this?
- zero = 0;
- zero = 0;
-
- DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32), 0x300);
-
- gSprites[r8].data[0] = r6;
- gSprites[r6].data[0] = r8;
- gSprites[r8].data[1] = a;
- gSprites[r6].data[1] = a;
- return r8;
-}
-
-void sub_80B0B5C(u8 spriteId)
-{
- u8 spriteId2 = gSprites[spriteId].data[0];
-
- FreeSpriteOamMatrix(&gSprites[spriteId2]);
- DestroySprite(&gSprites[spriteId2]);
- DestroySpriteAndFreeResources(&gSprites[spriteId]);
-}
-
-void sub_80B0B98(void)
-{
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = 0x0907;
-}
-
-void sub_80B0BB4(void)
-{
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
-}
-
-void sub_80B0BC4(u8 a, bool8 b)
-{
- u8 r5;
-
- sub_80B0B98();
- shared19338[gSprites[a].data[1]].unk2_1 = 1;
- r5 = gSprites[a].data[0];
- StartSpriteAffineAnim(&gSprites[a], 1);
- StartSpriteAffineAnim(&gSprites[r5], 1);
- gSprites[a].callback = sub_80B0C5C;
- gSprites[r5].callback = SpriteCallbackDummy;
- if (b == FALSE)
- PlaySE(SE_CONTEST_MONS_TURN);
- else
- PlaySE(SE_PC_LOGIN);
-}
-
-void sub_80B0C5C(struct Sprite *sprite)
-{
- if (sprite->affineAnimEnded)
- {
- u8 r1 = sprite->data[0];
-
- if (gSprites[r1].affineAnimEnded)
- {
- sprite->invisible = TRUE;
- gSprites[r1].invisible = TRUE;
- sprite->callback = sub_80B0CB0;
- }
- }
-}
-
-void sub_80B0CB0(struct Sprite *sprite)
-{
- shared19338[sprite->data[1]].unk2_1 = 0;
- sub_80B0B5C(sprite->data[0]);
- sub_80B0BB4();
-}
-
-void sub_80B0CDC(u8 a, int unused)
-{
- shared19338[a].unk2_1 = 0;
-}
-
-void unref_sub_80B0CF4(void)
-{
- //shared18000.unk18000 ^= 1;
- gSharedMem[0x18000] ^= 1;
- //if (shared18000.unk18000 == 0)
- if (gSharedMem[0x18000] == 0)
- {
- u8 i;
-
- for (i = 0; i < 4; i++)
- {
- Text_FillWindowRectDefPalette(
- &gUnknown_03004210,
- 0,
- gUnknown_083CA308[i][0],
- gUnknown_083CA308[i][1],
- gUnknown_083CA310[i][0] + 5,
- gUnknown_083CA310[i][1] + 1);
- }
- sub_80AE514();
- sub_80AEB30();
- }
- else
- {
- sub_80B0D7C();
- }
-}
-
-void sub_80B0D7C(void)
-{
- u8 r5 = 0;
- u8 sp8[8];
-
- if (gSharedMem[0x18000] != 0)
- {
- u8 i;
- s16 r2;
-
- for (i = 0; i < 4; i++)
- {
- Text_FillWindowRectDefPalette(
- &gUnknown_03004210,
- 0,
- gUnknown_083CA308[i][0],
- gUnknown_083CA308[i][1],
- gUnknown_083CA310[i][0] + 5,
- gUnknown_083CA310[i][1] + 1);
- }
- for (i = 0; i < 4; i++)
- {
- r2 = sContestantStatus[i].unk4;
- if (r2 < 0)
- {
- r2 = -r2;
- sp8[0] = CHAR_HYPHEN;
- r5++;
- }
- ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4);
- Text_InitWindowAndPrintText(
- &gUnknown_03004210,
- sp8,
- 592 + gUnknown_02038696[i] * 22,
- gUnknown_083CA310[gUnknown_02038696[i]][0],
- gUnknown_083CA310[gUnknown_02038696[i]][1]);
- r5 = 0;
- }
- for (i = 0; i < 4; i++)
- {
- r2 = sContestantStatus[i].appeal2;
- if (r2 < 0)
- {
- r2 = -r2;
- sp8[0] = CHAR_HYPHEN;
- r5++;
- }
- ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4);
- Text_InitWindowAndPrintText(
- &gUnknown_03004210,
- sp8,
- 512 + gUnknown_02038696[i] * 20,
- gUnknown_083CA308[gUnknown_02038696[i]][0],
- gUnknown_083CA308[gUnknown_02038696[i]][1]);
- r5 = 0;
- }
- sub_80AEB30();
- }
-}
-
-void unref_sub_80B0EE8(s32 *a, s32 b)
-{
- s32 i;
- s32 j;
-
- for (i = 0; i < b - 1; i++)
- {
- for (j = b - 1; j > i; j--)
- {
- if (a[j - 1] > a[j])
- {
- s32 temp = a[j];
-
- a[j] = a[j - 1];
- a[j - 1] = temp;
- }
- }
- }
-}
-
-// something to do with contest NPC opponents, I think.
-void sub_80B0F28(u8 a)
-{
- u8 sp0[4];
- u16 sp4[4] = {0};
- s32 i;
- s32 r2;
- s32 r4;
-
- for (i = 0; i < 4; i++)
- {
- sp4[i] = Random();
- for (r2 = 0; r2 < i; r2++)
- {
- if (sp4[i] == sp4[r2])
- {
- i--;
- break;
- }
- }
- }
-
- if (a == 0)
- {
- for (i = 0; i < 4; i++)
- {
- gUnknown_02038696[i] = i;
- for (r4 = 0; r4 < i; r4++)
- {
- if (gContestMonConditions[gUnknown_02038696[r4]] < gContestMonConditions[i]
- || (gContestMonConditions[gUnknown_02038696[r4]] == gContestMonConditions[i] && sp4[gUnknown_02038696[r4]] < sp4[i]))
- {
- for (r2 = i; r2 > r4; r2--)
- gUnknown_02038696[r2] = gUnknown_02038696[r2 - 1];
- gUnknown_02038696[r4] = i;
- break;
- }
- }
- if (r4 == i)
- gUnknown_02038696[i] = i;
- }
- memcpy(sp0, gUnknown_02038696, sizeof(sp0));
- for (i = 0; i < 4; i++)
- gUnknown_02038696[sp0[i]] = i;
- }
- else
- {
- memset(sp0, 0xFF, sizeof(sp0));
- for (i = 0; i < 4; i++)
- {
- u8 r2 = sContestantStatus[i].unkB_0;
-
- while (1)
- {
- u8 *ptr = &sp0[r2];
- if (*ptr == 0xFF)
- {
- *ptr = i;
- gUnknown_02038696[i] = r2;
- break;
- }
- r2++;
- }
- }
- for (i = 0; i < 3; i++)
- {
- for (r4 = 3; r4 > i; r4--)
- {
- if (sContestantStatus[r4 - 1].unkB_0 == sContestantStatus[r4].unkB_0
- && gUnknown_02038696[r4 - 1] < gUnknown_02038696[r4]
- && sp4[r4 - 1] < sp4[r4])
- {
- u8 temp = gUnknown_02038696[r4];
-
- gUnknown_02038696[r4] = gUnknown_02038696[r4 - 1];
- gUnknown_02038696[r4 - 1] = temp;
- }
- }
- }
- }
-}
-
-void sub_80B1118(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- {
- //LoadPalette(shared18000.unk18004[5 + i], (gUnknown_02038696[i] + 5) * 16, 32);
- LoadPalette(shared18004 + (i + 5) * 16, (gUnknown_02038696[i] + 5) * 16, 32);
- }
- sub_80AE514();
-}
-
-void sub_80B114C(u8 contestant)
-{
- bool8 r8;
- s32 i;
-
- sContestantStatus[contestant].appeal2 = 0;
- sContestantStatus[contestant].appeal1 = 0;
- r8 = sub_80AF404(contestant);
- if (r8)
- {
- u16 move = sContestantStatus[contestant].currMove;
- u8 effect = gContestMoves[move].effect;
- u8 rnd;
-
- sContestantStatus[contestant].moveCategory = gContestMoves[sContestantStatus[contestant].currMove].contestCategory;
- if (sContestantStatus[contestant].currMove == sContestantStatus[contestant].prevMove && sContestantStatus[contestant].currMove != MOVE_NONE)
- {
- sContestantStatus[contestant].disappointedRepeat = TRUE;
- sContestantStatus[contestant].moveRepeatCount++;
- }
- else
- {
- sContestantStatus[contestant].moveRepeatCount = 0;
- }
- sContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal;
- sContestantStatus[contestant].appeal2 = gContestEffects[effect].appeal;
- shared192D0.jam = gContestEffects[effect].jam;
- shared192D0.jam2 = gContestEffects[effect].jam;
- shared192D0.contestant = contestant;
- for (i = 0; i < 4; i++)
- {
- sContestantStatus[i].jam = 0;
- shared192D0.unnervedPokes[i] = 0;
- }
- if (sContestantStatus[contestant].hasJudgesAttention && AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove) == 0)
- sContestantStatus[contestant].hasJudgesAttention = 0;
- gContestEffectFuncs[effect]();
- if (sContestantStatus[contestant].conditionMod == 1)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition - 10;
- else if (sContestantStatus[contestant].appealTripleCondition)
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition * 3;
- else
- sContestantStatus[contestant].appeal2 += sContestantStatus[contestant].condition;
- sContestantStatus[contestant].unk16 = 0;
- sContestantStatus[contestant].unk15_6 = 0;
- if (sub_80B214C(contestant))
- {
- u8 r2 = AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove);
-
- if (r2 != 0 && sContestantStatus[contestant].hasJudgesAttention)
- {
- sContestantStatus[contestant].unk16 = r2;
- sContestantStatus[contestant].unk15_6 = 1;
- sContestantStatus[contestant].hasJudgesAttention = 0;
- sContestantStatus[contestant].unk17 = sContestantStatus[contestant].appeal1 * sContestantStatus[contestant].unk16;
- sContestantStatus[contestant].unk15_3 = 1;
- }
- else
- {
- if (gContestMoves[sContestantStatus[contestant].currMove].comboStarterId != 0)
- {
- sContestantStatus[contestant].hasJudgesAttention = 1;
- sContestantStatus[contestant].unk15_6 = 1;
- }
- else
- {
- sContestantStatus[contestant].hasJudgesAttention = 0;
- }
- }
- }
- if (sContestantStatus[contestant].disappointedRepeat)
- sContestantStatus[contestant].unk18 = (sContestantStatus[contestant].moveRepeatCount + 1) * 10;
- if (sContestantStatus[contestant].nervous)
- {
- sContestantStatus[contestant].hasJudgesAttention = 0;
- sContestantStatus[contestant].appeal2 = 0;
- sContestantStatus[contestant].appeal1 = 0;
- }
- shared19328.bits_0 = Contest_GetMoveExcitement(sContestantStatus[contestant].currMove);
- if (sContestantStatus[contestant].overrideCategoryExcitementMod)
- shared19328.bits_0 = 1;
- if (shared19328.bits_0 > 0)
- {
- if (sContest.applauseLevel + shared19328.bits_0 > 4)
- shared19328.unk2 = 60;
- else
- shared19328.unk2 = 10;
- }
- else
- {
- shared19328.unk2 = 0;
- }
-
- rnd = Random() % 3;
- for (i = 0; i < 4; i++)
- {
- if (i != contestant)
- {
- if (rnd == 0)
- break;
- rnd--;
- }
- }
- sContestantStatus[contestant].unk1B = i;
- }
-}
-
-void SetContestantEffectStringID(u8 a, u8 b)
-{
- sContestantStatus[a].effectStringId = b;
-}
-
-void SetContestantEffectStringID2(u8 a, u8 b)
-{
- sContestantStatus[a].effectStringId2 = b;
-}
-
-void SetStartledString(u8 contestant, u8 jam)
-{
- if (jam >= 60)
- SetContestantEffectStringID(contestant, CONTEST_STRING_TRIPPED_OVER);
- else if (jam >= 40)
- SetContestantEffectStringID(contestant, CONTEST_STRING_LEAPT_UP);
- else if (jam >= 30)
- SetContestantEffectStringID(contestant, CONTEST_STRING_UTTER_CRY);
- else if (jam >= 20)
- SetContestantEffectStringID(contestant, CONTEST_STRING_TURNED_BACK);
- else if (jam >= 10)
- SetContestantEffectStringID(contestant, CONTEST_STRING_LOOKED_DOWN);
-}
-
-void sub_80B146C(u8 contestant, u8 stringId)
-{
- StringCopy(gStringVar1, gContestMons[contestant].nickname);
- StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
- if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_COOL)
- StringCopy(gStringVar3, gText_Contest_Shyness);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
- StringCopy(gStringVar3, gText_Contest_Anxiety);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
- StringCopy(gStringVar3, gText_Contest_Laziness);
- else if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory == CONTEST_CATEGORY_SMART)
- StringCopy(gStringVar3, gText_Contest_Hesitancy);
- else
- StringCopy(gStringVar3, gText_Contest_Fear);
- StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[stringId]);
- sub_80AF138();
- Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15);
-}
-
-void MakeContestantNervous(u8 p)
-{
- sContestantStatus[p].nervous = 1;
- sContestantStatus[p].currMove = MOVE_NONE;
-}
-
-// Determines turn order?
-void sub_80B159C(void)
-{
- u8 r12 = 0;
- s32 i;
- s32 j;
- u8 sp0[4];
- u8 sp4[4];
-
- for (i = 0; i < 4; i++)
- {
- sp0[i] = gUnknown_02038696[i];
- sp4[i] = 0;
- }
-
- for (i = 0; i < 4; i++)
- {
- for (j = 0; j < 4; j++)
- {
- if (sContestantStatus[j].nextTurnOrder == i)
- {
- sp0[j] = i;
- sp4[j] = 1;
- break;
- }
- }
- if (j == 4)
- {
- for (j = 0; j < 4; j++)
- {
- if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF)
- {
- r12 = j;
- j++;
- break;
- }
- }
- for (; j < 4; j++)
- {
- if (sp4[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF
- && gUnknown_02038696[r12] > gUnknown_02038696[j])
- r12 = j;
- }
- sp0[r12] = i;
- sp4[r12] = 1;
- }
- }
-
- for (i = 0; i < 4; i++)
- {
- shared192D0.turnOrder[i] = sp0[i];
- sContestantStatus[i].nextTurnOrder = 0xFF;
- sContestantStatus[i].turnOrderMod = 0;
- gUnknown_02038696[i] = sp0[i];
- }
-}
-
-void sub_80B16D0(struct Sprite *sprite)
-{
- if (sprite->data[1]++ > 84)
- {
- sprite->data[1] = 0;
- sprite->invisible = TRUE;
- sprite->callback = SpriteCallbackDummy;
- sContest.unk1920A_4 = 0;
- }
-}
-
-void sub_80B1710(u8 a)
-{
- u8 spriteId = sContest.unk19216;
-
- switch (a)
- {
- case 0:
- case 1:
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0];
- PlaySE(SE_FAILURE);
- break;
- case 2:
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 4;
- PlaySE(SE_SUCCESS);
- break;
- case 3:
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 8;
- PlaySE(SE_SUCCESS);
- break;
- case 4:
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12;
- PlaySE(SE_WARP_IN);
- break;
- case 5: // exactly the same as case 4
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12;
- PlaySE(SE_WARP_IN);
- break;
- case 6:
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 16;
- PlaySE(SE_WARP_IN);
- break;
- case 8:
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 24;
- PlaySE(SE_M_HEAL_BELL);
- break;
- case 7:
- default:
- gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 20;
- PlaySE(SE_WARP_IN);
- break;
- }
- gSprites[spriteId].data[1] = 0;
- gSprites[spriteId].invisible = FALSE;
- gSprites[spriteId].callback = sub_80B16D0;
- sContest.unk1920A_4 = 1;
-}
-
-void sub_80B1928(void)
-{
- s32 i;
-
- for (i = 0; i < 5; i++)
- {
- const u8 *src;
-
- if (i < sContest.applauseLevel)
- src = gContestApplauseMeterGfx + 64;
- else
- src = gContestApplauseMeterGfx;
- CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
- CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
- if (sContest.applauseLevel > 4)
- sub_80B1A2C();
- }
-}
-
-void unref_sub_80B19D0(void)
-{
- u8 str[20];
- StringCopy(str, gUnknown_083CC2EC);
- Text_InitWindowAndPrintText(&gUnknown_03004210, str, 680, 0, 0);
-}
-
-s8 Contest_GetMoveExcitement(u16 move)
-{
- return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory];
-}
-
-// Launches crowd movement task, maybe
-u8 sub_80B1A2C(void)
-{
- u8 taskId = CreateTask(c3_08130B10, 10);
-
- gTasks[taskId].data[1] = 1;
- gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x0ABE2);
- return taskId;
-}
-
-void c3_08130B10(u8 taskId)
-{
- if (++gTasks[taskId].data[0] == 1)
- {
- gTasks[taskId].data[0] = 0;
- if (gTasks[taskId].data[3] == 0)
- gTasks[taskId].data[4]++;
- else
- gTasks[taskId].data[4]--;
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB(31, 31, 31));
- if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16)
- {
- gTasks[taskId].data[3] ^= 1;
- if (sContest.applauseLevel < 5)
- {
- BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB(31, 0, 0));
- DestroyTask(taskId);
- }
- }
- }
-}
-
-void sub_80B1B14(void)
-{
- CreateTask(sub_80B1B68, 10);
- gSprites[sContest.applauseMeterSpriteId].pos2.x = -70;
- gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
- sContest.unk1920A_6 = 1;
-}
-
-void sub_80B1B68(u8 taskId)
-{
- struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
-
- gTasks[taskId].data[10] += 1664;
- sprite->pos2.x += gTasks[taskId].data[10] >> 8;
- gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
- if (sprite->pos2.x > 0)
- sprite->pos2.x = 0;
- if (sprite->pos2.x == 0)
- {
- sContest.unk1920A_6 = 0;
- DestroyTask(taskId);
- }
-}
-
-void sub_80B1BDC(void)
-{
- if (gSprites[sContest.applauseMeterSpriteId].invisible == TRUE)
- {
- sContest.unk1920A_6 = 0;
- }
- else
- {
- CreateTask(sub_80B1C34, 10);
- gSprites[sContest.applauseMeterSpriteId].pos2.x = 0;
- sContest.unk1920A_6 = 1;
- }
-}
-
-void sub_80B1C34(u8 taskId)
-{
- struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
-
- gTasks[taskId].data[10] += 1664;
- sprite->pos2.x -= gTasks[taskId].data[10] >> 8;
- gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
- if (sprite->pos2.x < -70)
- sprite->pos2.x = -70;
- if (sprite->pos2.x == -70)
- {
- sprite->invisible = TRUE;
- sContest.unk1920A_6 = 0;
- DestroyTask(taskId);
- }
-}
-
-void sub_80B1CBC(s8 a)
-{
- u8 taskId = CreateTask(sub_80B1CFC, 5);
-
- gTasks[taskId].data[0] = a;
- sContest.unk1920A_5 = 1;
-}
-
-void sub_80B1CFC(u8 taskId)
-{
- switch (gTasks[taskId].data[10])
- {
- case 0:
- sub_80B1B14();
- gTasks[taskId].data[10]++;
- break;
- case 1:
- if (!sContest.unk1920A_6)
- {
- nullsub_18(gTasks[taskId].data[0]);
- gTasks[taskId].data[10]++;
- }
- break;
- case 2:
- if (gTasks[taskId].data[11]++ > 20)
- {
- gTasks[taskId].data[11] = 0;
- sub_80B1928();
- sContest.unk1920A_5 = 0;
- DestroyTask(taskId);
- }
- break;
- }
-}
-
-void unref_sub_80B1D84(void)
-{
- gSprites[sContest.applauseMeterSpriteId].pos2.x = 0;
- gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
-}
-
-void unref_sub_80B1DB8(void)
-{
- gSprites[sContest.applauseMeterSpriteId].invisible = TRUE;
-}
-
-void sub_80B1DDC(void)
-{
- CreateTask(sub_80B1DFC, 15);
- sContest.unk1920A_7 = 1;
-}
-
-void sub_80B1DFC(u8 taskId)
-{
- if (gTasks[taskId].data[10]++ > 6)
- {
- register struct Task *task asm("r0");
- register u32 r4 asm("r4") = taskId * 4;
-
- gTasks[taskId].data[10] = 0;
- if (gTasks[taskId].data[11] == 0)
- {
- DmaCopy32Defvars(3, shared16800, (void *)(VRAM + 0x2000), 0x1000);
- }
- else
- {
- DmaCopy32Defvars(3, shared15800, (void *)(VRAM + 0x2000), 0x1000);
- gTasks[taskId].data[12]++;
- }
-
- // Why won't this match the normal way?
- asm("add %0, %1, #0\n\t"
- "add %0, %3\n\t"
- "lsl %0, #3\n\t"
- "add %0, %2\n\t"
- : "=r"(task):"r"(r4),"r"(gTasks),"r"(taskId));
-
- //gTasks[taskId].data[11] ^= 1;
- task->data[11] ^= 1;
-
- //if (gTasks[taskId].data[12] == 9)
- if (task->data[12] == 9)
- {
- sContest.unk1920A_7 = 0;
- DestroyTask(taskId);
- }
- }
-}
-
-#define tBlendColor data[0]
-#define tBlendCoeff data[1]
-
-void sub_80B1EA8(s8 a, s8 b)
-{
- u8 taskId = CreateTask(sub_80B1F4C, 10);
- u16 blendColor;
- u8 blendCoeff;
- u8 r3;
-
- if (a > 0)
- {
- blendColor = RGB(30, 27, 8);
- if (b > 0)
- {
- blendCoeff = 0;
- r3 = sContest.applauseLevel * 3;
- }
- else
- {
- blendCoeff = sContest.applauseLevel * 3;
- r3 = 0;
- }
- }
- else
- {
- blendColor = 0;
- if (b > 0)
- {
- blendCoeff = 0;
- r3 = 12;
- }
- else
- {
- blendCoeff = 12;
- r3 = 0;
- }
- }
- gTasks[taskId].tBlendColor = blendColor;
- gTasks[taskId].tBlendCoeff = blendCoeff;
- gTasks[taskId].data[2] = b;
- gTasks[taskId].data[3] = r3;
- sContest.unk1920B_0 = 0;
-}
-
-void sub_80B1F4C(u8 taskId)
-{
- if (gTasks[taskId].data[10]++ >= 0)
- {
- gTasks[taskId].data[10] = 0;
- if (gTasks[taskId].data[2] > 0)
- gTasks[taskId].tBlendCoeff++;
- else
- gTasks[taskId].tBlendCoeff--;
- BlendPalette(17, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor);
- BlendPalette(26, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor);
- if (gTasks[taskId].tBlendCoeff == gTasks[taskId].data[3])
- {
- DestroyTask(taskId);
- sContest.unk1920B_0 = 0;
- }
- }
-}
-
-#undef tBlendColor
-#undef tBlendCoeff
-
-void sub_80B1FD0(bool8 a)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- {
- if (sContestantStatus[i].turnOrderMod != 0 && a)
- {
- CpuCopy32(
- GetTurnOrderNumberGfx(i),
- (void *)(VRAM + 0x10000 + (gSprites[shared19338[i].unk1].oam.tileNum + 5) * 32),
- 64);
- gSprites[shared19338[i].unk1].pos1.y = gUnknown_083CA33C[gUnknown_02038696[i]];
- gSprites[shared19338[i].unk1].invisible = FALSE;
- }
- else
- {
- gSprites[shared19338[i].unk1].invisible = TRUE;
- }
- }
-}
-
-const u8 *GetTurnOrderNumberGfx(u8 contestant)
-{
- if (sContestantStatus[contestant].turnOrderMod != 1)
- return gContestNextTurnRandomGfx;
- else
- return gContestNextTurnNumbersGfx + sContestantStatus[contestant].nextTurnOrder * 64;
-}
-
-void sub_80B20C4(void)
-{
- s32 i;
-
- for (i = 0; i < 4; i++)
- {
- if (shared192D0.unnervedPokes[i] != 0 && !Contest_IsMonsTurnDisabled(i))
- {
- u8 r4 = gUnknown_02038696[i] * 5 + 2;
- u16 r0 = sub_80AEFE8(i, 3);
-
- *(u16 *)(VRAM + 0xC000 + r4 * 64 + 0x28) = r0;
- *(u16 *)(VRAM + 0xC000 + r4 * 64 + 0x2A) = r0 + 1;
- *(u16 *)(VRAM + 0xC000 + (r4 + 1) * 64 + 0x28) = r0 + 16;
- *(u16 *)(VRAM + 0xC000 + (r4 + 1) * 64 + 0x2A) = r0 + 17;
- PlaySE(SE_CONTEST_ICON_CHANGE);
- }
- }
-}
-
-bool8 sub_80B214C(u8 a)
-{
- if (sContestantStatus[a].disappointedRepeat || sContestantStatus[a].nervous)
- return FALSE;
- else
- return TRUE;
-}
-
-void sub_80B2184(void)
-{
- s32 i;
-
- ((vBgCnt *)&REG_BG1CNT)->priority = 0;
- ((vBgCnt *)&REG_BG1CNT)->screenSize = 1;
- ((vBgCnt *)&REG_BG1CNT)->areaOverflowMode = 0;
-
- gBattle_BG1_X = DISPLAY_WIDTH;
- gBattle_BG1_Y = DISPLAY_HEIGHT;
- REG_BG1HOFS = DISPLAY_WIDTH;
- REG_BG1VOFS = DISPLAY_HEIGHT;
-
- DmaClear32(3, (void *)(VRAM + 0xF000), 0x1000);
- LZDecompressVram(gUnknown_08D17C3C, (void *)(VRAM + 0xF000));
-
- ((vBgCnt *)&REG_BG1CNT)->charBaseBlock = 0;
-
- for (i = 0; i < 4; i++)
- {
- gSprites[shared19338[i].unk0].oam.priority = 1;
- gSprites[shared19338[i].unk1].oam.priority = 1;
- }
-
- ((vBgCnt *)&REG_BG2CNT)->priority = 1;
- ((vBgCnt *)&REG_BG0CNT)->priority = 1;
- ((vBgCnt *)&REG_BG1CNT)->screenSize = 2;
-}
-
-void sub_80B2280(void)
-{
- s32 i;
-
- DmaClearLarge32(3, (void *)(VRAM + 0x8000), 0x2000, 0x1000);
- DmaClear32(3, (void *)(VRAM + 0xF000), 0x1000);
-
- gBattle_BG1_X = 0;
- gBattle_BG1_Y = 0;
-
- ((vBgCnt *)&REG_BG1CNT)->priority = 1;
- ((vBgCnt *)&REG_BG1CNT)->screenSize = 0;
- ((vBgCnt *)&REG_BG1CNT)->areaOverflowMode = 0;
- ((vBgCnt *)&REG_BG1CNT)->charBaseBlock = 2;
-
- for (i = 0; i < 4; i++)
- {
- gSprites[shared19338[i].unk0].oam.priority = 0;
- gSprites[shared19338[i].unk1].oam.priority = 0;
- }
-}
-
-void sub_80B237C(u8 taskId)
-{
- gBattle_BG1_X = 0;
- gBattle_BG1_Y = DISPLAY_HEIGHT;
- PlaySE12WithPanning(SE_CONTEST_CURTAIN_FALL, 0);
- gTasks[taskId].func = sub_80B23BC;
-}
-
-void sub_80B23BC(u8 taskId)
-{
- if ((s16)(gBattle_BG1_Y -= 7) < 0)
- gBattle_BG1_Y = 0;
- if (gBattle_BG1_Y == 0) // Why cast?
- {
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_80B2400;
- }
-}
-
-void sub_80B2400(u8 taskId)
-{
- s32 i;
-
- switch (gTasks[taskId].data[0])
- {
- case 0:
- for (i = 0; i < 4; i++)
- sContest.unk19218[i] = gUnknown_02038696[i];
- sub_80AFA5C();
- sub_80B0588();
- sub_80AEF50();
- sub_80B1118();
- sub_80B1FD0(TRUE);
- sub_80AFFA0();
- gTasks[taskId].data[0] = 1;
- break;
- case 1:
- if (gIsLinkContest & 1)
- {
- u8 taskId2;
-
- sContest.unk1920B_2 = 1;
- if (sub_80AE074())
- sub_80AF438();
- taskId2 = CreateTask(sub_80C8C80, 0);
- SetTaskFuncWithFollowupFunc(taskId2, sub_80C8C80, sub_80AD8DC);
- sub_80AF860();
- gTasks[taskId].data[0] = 2;
- }
- else
- {
- sub_80AF438();
- gTasks[taskId].data[0] = 3;
- }
- break;
- case 2:
- if (!sContest.unk1920B_2)
- gTasks[taskId].data[0] = 3;
- break;
- case 3:
- sub_80AF120();
- sub_80AEB30();
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].func = sub_80B253C;
- break;
- }
-}
-
-void sub_80B2508(u8 taskId)
-{
- if ((s16)(gBattle_BG1_Y += 7) > DISPLAY_HEIGHT)
- gTasks[taskId].func = sub_80ADCDC;
-}
-
-void sub_80B253C(u8 taskId)
-{
- if (gTasks[taskId].data[2] < 10)
- {
- gTasks[taskId].data[2]++;
- }
- else
- {
- if (gTasks[taskId].data[1] == 0)
- {
- if (gTasks[taskId].data[0] == 16)
- gTasks[taskId].data[1]++;
- else
- gTasks[taskId].data[0]++;
- }
- else
- {
- if (gTasks[taskId].data[0] == 0)
- {
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_80B25A4;
- }
- else
- {
- gTasks[taskId].data[0]--;
- }
- }
- }
-}
-
-void sub_80B25A4(u8 taskId)
-{
- if (gTasks[taskId].data[2] < 10)
- {
- gTasks[taskId].data[2]++;
- }
- else
- {
- gTasks[taskId].data[2] = 0;
- PlaySE12WithPanning(SE_CONTEST_CURTAIN_RISE, 0);
- gTasks[taskId].func = sub_80B2508;
- }
-}
-
-void sub_80B25E4(u8 a)
-{
- s32 i;
- u8 taskId;
-
- for (i = 0; i < 4; i++)
- {
- gSprites[shared19338[i].unk0].oam.matrixNum = AllocOamMatrix();
- gSprites[shared19338[i].unk0].oam.affineMode = 1;
- StartSpriteAffineAnim(&gSprites[shared19338[i].unk0], a);
- if (a == 2)
- {
- AnimateSprite(&gSprites[shared19338[i].unk0]);
- gSprites[shared19338[i].unk0].invisible = FALSE;
- }
- }
- taskId = CreateTask(sub_80B26C8, 5);
- gTasks[taskId].data[0] = a;
- sContest.unk1920B_1 = 1;
-}
-
-void sub_80B26C8(u8 taskId)
-{
- s32 i;
-
- if (gSprites[shared19338[0].unk0].affineAnimEnded)
- {
- if ((u8)gTasks[taskId].data[0] == 1)
- {
- for (i = 0; i < 4; i++)
- gSprites[shared19338[i].unk0].invisible = TRUE;
- }
- for (i = 0; i < 4; i++)
- FreeSpriteOamMatrix(&gSprites[shared19338[i].unk0]);
- sContest.unk1920B_1 = 0;
- DestroyTask(taskId);
- }
-}
-
-u16 SanitizeMove(u16 move)
-{
- if (move >= NUM_MOVES)
- move = MOVE_POUND;
- return move;
-}
-
-u16 SanitizeSpecies(u16 species)
-{
- if (species >= NUM_SPECIES)
- species = SPECIES_NONE;
- return species;
-}
-
-void sub_80B2790(u8 a)
-{
- s32 i;
- u16 move = SanitizeMove(sContestantStatus[a].currMove);
- u16 species = SanitizeSpecies(gContestMons[a].species);
- u8 r5_2;
-
- memset(&shared19348, 0, sizeof(shared19348));
- ClearBattleAnimationVars();
- for (i = 0; i < 4; i++)
- gBattleMonForms[i] = 0;
- switch (move)
- {
- case MOVE_CURSE:
- if (gBaseStats[species].type1 == TYPE_GHOST || gBaseStats[species].type2 == TYPE_GHOST)
- gAnimMoveTurn = 0;
- else
- gAnimMoveTurn = 1;
- break;
- case MOVE_TRANSFORM:
- case MOVE_ROLE_PLAY:
- r5_2 = sContestantStatus[a].unk1B;
- shared19348.unk2 = SanitizeSpecies(gContestMons[r5_2].species);
- shared19348.unk10 = gContestMons[r5_2].personality;
- shared19348.unk4_0 = 1;
- break;
- case MOVE_RETURN:
- gAnimFriendship = 0xFF;
- break;
- case MOVE_FRUSTRATION:
- gAnimFriendship = 0;
- break;
- case MOVE_SOLAR_BEAM:
- case MOVE_RAZOR_WIND:
- case MOVE_SKULL_BASH:
- case MOVE_SKY_ATTACK:
- if (sContest.unk1925E == 0)
- {
- sContest.unk1925E = 2;
- gAnimMoveTurn = 0;
- }
- else
- {
- gAnimMoveTurn = 1;
- }
- break;
- }
- sub_80B2968();
-}
-
-void sub_80B28CC(int unused)
-{
- memset(&shared19348, 0, sizeof(shared19348));
- if (sContest.unk1925E != 0)
- sContest.unk1925E--;
-}
-
-void sub_80B28F0(u8 a)
-{
- shared19348.unk5 = a;
- shared19348.unk0 = SanitizeSpecies(gContestMons[a].species);
- shared19348.unk8 = gContestMons[a].personality;
- shared19348.unkC = gContestMons[a].otId;
-}
-
-void sub_80B292C(void)
-{
- gBattlerSpriteIds[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
- InitSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattlerTarget]]);
- sub_80B2968();
-}
-
-void sub_80B2968(void)
-{
- struct Sprite *sprite = &gSprites[gBattlerSpriteIds[3]];
-
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- sprite->pos1.x = GetBattlerSpriteCoord(3, 0);
- sprite->pos1.y = GetBattlerSpriteCoord(3, 1);
- sprite->invisible = TRUE;
-}
-
-void SelectContestMoveBankTarget(u16 move)
-{
- switch (gBattleMoves[move].target)
- {
- case TARGET_UNK2:
- case TARGET_USER:
- gBattlerTarget = 2;
- break;
- case TARGET_SELECTED_POKEMON:
- case TARGET_RANDOM:
- case TARGET_BOTH_ENEMIES:
- case TARGET_ALL_EXCEPT_USER:
- default:
- gBattlerTarget = 3;
- break;
- }
-}
-
-bool8 Contest_SaveWinner(u8 a)
-{
- s32 i;
- u8 r7 = Random() % 3;
-
- for (i = 0; i < 3; i++)
- {
- if (gContestFinalStandings[i] == 0)
- break;
- }
- if (a == 0xFF && i != gContestPlayerMonIndex)
- return FALSE;
- switch (gSpecialVar_ContestCategory)
- {
- case CONTEST_CATEGORY_COOL:
- r7 += 0;
- break;
- case CONTEST_CATEGORY_BEAUTY:
- r7 += 3;
- break;
- case CONTEST_CATEGORY_CUTE:
- r7 += 6;
- break;
- case CONTEST_CATEGORY_SMART:
- r7 += 9;
- break;
- case CONTEST_CATEGORY_TOUGH:
- r7 += 12;
- break;
- }
- if (a != 0xFE)
- {
- u8 r4 = sub_80B2C4C(a, 1);
-
- gSaveBlock1.contestWinners[r4].personality = gContestMons[i].personality;
- gSaveBlock1.contestWinners[r4].species = gContestMons[i].species;
- gSaveBlock1.contestWinners[r4].otId = gContestMons[i].otId;
- StringCopy(gSaveBlock1.contestWinners[r4].nickname, gContestMons[i].nickname);
- StringCopy(gSaveBlock1.contestWinners[r4].trainerName, gContestMons[i].trainerName);
- if (a != 0xFF)
- gSaveBlock1.contestWinners[r4].contestCategory = gSpecialVar_ContestCategory;
- else
- gSaveBlock1.contestWinners[r4].contestCategory = r7;
- }
- else
- {
- shared15DE0.personality = gContestMons[i].personality;
- shared15DE0.otId = gContestMons[i].otId;
- shared15DE0.species = gContestMons[i].species;
- StringCopy(shared15DE0.nickname, gContestMons[i].nickname);
- if (gIsLinkContest & 1)
- StringCopy(shared15DE0.trainerName, gLinkPlayers[i].name);
- else
- StringCopy(shared15DE0.trainerName, gContestMons[i].trainerName);
- shared15DE0.contestCategory = r7;
- }
- return TRUE;
-}
-
-u8 sub_80B2C4C(u8 a, u8 b)
-{
- s32 i;
-
- switch (a)
- {
- case 0:
- case 1:
- return a;
- case 2:
- if (b != 0)
- {
- for (i = 4; i >= 3; i--)
- memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner));
- }
- return 2;
- case 3:
- if (b != 0)
- {
- for (i = 7; i >= 6; i--)
- memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner));
- }
- return 5;
- default:
- switch (gSpecialVar_ContestCategory)
- {
- case CONTEST_CATEGORY_COOL:
- return 8;
- case CONTEST_CATEGORY_BEAUTY:
- return 9;
- case CONTEST_CATEGORY_CUTE:
- return 10;
- case CONTEST_CATEGORY_SMART:
- return 11;
- case CONTEST_CATEGORY_TOUGH:
- default:
- return 12;
- }
- }
-}
-
-void Contest_ResetWinners(void)
-{
- s32 i;
-
- for (i = 0; i < 8; i++)
- gSaveBlock1.contestWinners[i] = gUnknown_083CC5D0[i];
-}
+// File boundary
diff --git a/src/contest_2.c b/src/contest_2.c
new file mode 100644
index 000000000..eab89abe0
--- /dev/null
+++ b/src/contest_2.c
@@ -0,0 +1,4186 @@
+#include "global.h"
+#include "contest.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
+#include "constants/event_objects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "contest_ai.h"
+#include "contest_effect.h"
+#include "data2.h"
+#include "decompress.h"
+#include "ewram.h"
+#include "graphics.h"
+#include "link.h"
+#include "m4a.h"
+#include "menu.h"
+#include "palette.h"
+#include "random.h"
+#include "rom_8077ABC.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "util.h"
+
+#include "contest_internal.h"
+
+extern void Task_LinkContest_CommunicateAppealsState(u8 taskId);
+extern void Task_UpdateContestantBoxOrder(u8 taskId);
+
+extern struct MusicPlayerInfo gMPlayInfo_SE1;
+extern u8 gBattleMonForms[];
+extern u8 gDisplayedStringBattle[];
+extern u8 gBattlerTarget;
+extern u8 gBattlerSpriteIds[];
+extern struct Window gWindowTemplate_Contest_MoveDescription;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
+extern void (*const gContestEffectFuncs[])(void);
+
+#include "data/contest_opponents.h"
+
+const u8 gUnknown_083CA308[][2] = {
+ {19, 0},
+ {19, 5},
+ {19, 10},
+ {19, 15},
+};
+
+const u8 gUnknown_083CA310[][2] = {
+ {25, 0},
+ {25, 5},
+ {25, 10},
+ {25, 15},
+};
+
+const u8 gUnknown_083CA318[][2] = {
+ { 20, 2 },
+ { 20, 7 },
+ { 20, 12 },
+ { 20, 17 },
+ { 24, 2 },
+ { 24, 7 },
+ { 24, 12 },
+ { 24, 17 },
+ { 220, 24 },
+ { 220, 64 },
+ { 220, 104 },
+ { 220, 144 },
+};
+
+const u8 gUnknown_083CA330[][2] = {
+ { 224, 24 },
+ { 224, 64 },
+ { 224, 104 },
+ { 224, 144 },
+};
+
+const u8 sSliderHeartYPositions[] = { 36, 76, 116, 156 };
+const u8 gUnknown_083CA33C[] = { 36, 76, 116, 156 };
+
+const u8 gUnknown_083CA340[][4] = {
+ { 0, 31, 9, 39 },
+ { 0, 33, 9, 39 },
+ { 0, 35, 9, 39 },
+ { 0, 37, 9, 39 },
+};
+
+const struct SpriteSheet sSpriteSheet_SliderHeart = {
+ .data = gTiles_8D1975C,
+ .size = 0x20,
+ .tag = 20004
+};
+
+const struct OamData gOamData_83CA358 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+// Idle
+const union AffineAnimCmd gSpriteAffineAnim_83CA360[] = {
+ AFFINEANIMCMD_FRAME(Q_8_8(1.0), Q_8_8(1.0), 0, 0),
+ AFFINEANIMCMD_END
+};
+
+// Shrink
+const union AffineAnimCmd gSpriteAffineAnim_83CA370[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(-10, -10, -20, 20),
+ AFFINEANIMCMD_END
+};
+
+// Grow
+const union AffineAnimCmd gSpriteAffineAnim_83CA388[] = {
+ AFFINEANIMCMD_FRAME(56, 56, 0, 0),
+ AFFINEANIMCMD_FRAME(10, 10, 20, 20),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83CA3A0[] = {
+ gSpriteAffineAnim_83CA360,
+ gSpriteAffineAnim_83CA370,
+ gSpriteAffineAnim_83CA388,
+};
+
+const struct SpriteTemplate sSpriteTemplate_SliderHeart = {
+ .tileTag = 20004,
+ .paletteTag = 44000,
+ .oam = &gOamData_83CA358,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CA3A0,
+ .callback = SpriteCallbackDummy
+};
+
+// One graphic for each contestant.
+// Yes, it's loaded four times.
+const struct CompressedSpriteSheet gUnknown_083CA3C4[] = {
+ { .data = gContestNextTurnGfx, .size = 0x100, .tag = 20006 },
+ { .data = gContestNextTurnGfx, .size = 0x100, .tag = 20007 },
+ { .data = gContestNextTurnGfx, .size = 0x100, .tag = 20008 },
+ { .data = gContestNextTurnGfx, .size = 0x100, .tag = 20009 },
+};
+
+const struct SpritePalette gUnknown_083CA3E4 = {
+ .data = gContestPal, .tag = 20006
+};
+
+const struct OamData gOamData_83CA3EC = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CA3F4[] = {
+ { .tileTag = 20006, .paletteTag = 20006, .oam = &gOamData_83CA3EC, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy },
+ { .tileTag = 20007, .paletteTag = 20006, .oam = &gOamData_83CA3EC, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy },
+ { .tileTag = 20008, .paletteTag = 20006, .oam = &gOamData_83CA3EC, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy },
+ { .tileTag = 20009, .paletteTag = 20006, .oam = &gOamData_83CA3EC, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy },
+};
+
+const struct Subsprite gSubspriteTable_83CA454[] = {
+ { .x = -26, .y = -4, .shape = ST_OAM_H_RECTANGLE, .size = 1, .tileOffset = 0, .priority = 0 },
+ { .x = 6, .y = -4, .shape = ST_OAM_H_RECTANGLE, .size = 1, .tileOffset = 4, .priority = 0 },
+};
+
+const struct SubspriteTable gSubspriteTables_83CA464[] = {
+ { 2, gSubspriteTable_83CA454 },
+};
+
+const struct CompressedSpriteSheet gUnknown_083CA46C = {
+ .data = gContestApplauseGfx,
+ .size = 0x400,
+ .tag = 44002
+};
+
+const struct SpritePalette gUnknown_083CA474 = {
+ .data = gContestPal,
+ .tag = 44002
+};
+
+const struct OamData gOamData_83CA47C = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CA484 = {
+ .tileTag = 44002,
+ .paletteTag = 44002,
+ .oam = &gOamData_83CA47C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+const struct OamData gOamData_83CA49C = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 3,
+ .paletteNum = 2
+};
+
+const struct SpriteTemplate sSpriteTemplate_Judge = {
+ .tileTag = 20005,
+ .paletteTag = 20005,
+ .oam = &gOamData_83CA49C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct CompressedSpriteSheet sSpriteSheet_Judge = {
+ .data = gContestJudgeGfx,
+ .size = 0x800,
+ .tag = 20005
+};
+
+const struct CompressedSpriteSheet sSpriteSheet_JudgeSymbols = {
+ .data = gContestJudgeSymbolsGfx,
+ .size = 0x380,
+ .tag = 44000
+};
+
+const struct CompressedSpritePalette sSpritePalette_JudgeSymbols = {
+ .data = gContest3Pal,
+ .tag = 44000
+};
+
+const struct SpriteTemplate sSpriteTemplate_JudgeSpeechBubble = {
+ .tileTag = 44000,
+ .paletteTag = 44000,
+ .oam = &gOamData_837DF2C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+#if defined(ENGLISH)
+#include "data/text/contest_en.h"
+#elif defined(GERMAN)
+#include "data/text/contest_de.h"
+#endif //ENGLISH
+
+UNUSED
+const u8 ALIGNED(2) _unk_83CC3BE[] = __("ピラ");
+const u8 gUnknownText_UnknownFormatting2[] = _("{COLOR GREEN}{SHADOW RED}");
+const u8 gUnknownText_UnknownFormatting3[] = _("{COLOR LIGHT_GREY}");
+
+const struct CompressedSpriteSheet gUnknown_083CC3AC = {
+ .data = gContestNumbers_UnusedGfx,
+ .size = 0x200,
+ .tag = 20000
+};
+
+const struct CompressedSpritePalette gUnknown_083CC3B4[] = {
+ { .data = gContestNumbers_UnusedPal, .tag = 20000 },
+ { .data = gContestNumbers_UnusedPal, .tag = 20001 },
+ { .data = gContestNumbers_UnusedPal, .tag = 20002 },
+ { .data = gContestNumbers_UnusedPal, .tag = 20003 },
+};
+
+const union AnimCmd gSpriteAnim_83CC3D4[] = {
+ ANIMCMD_FRAME( 0, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83CC3DC[] = {
+ ANIMCMD_FRAME( 4, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83CC3E4[] = {
+ ANIMCMD_FRAME( 8, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83CC3EC[] = {
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83CC3F4[] = {
+ gSpriteAnim_83CC3D4,
+ gSpriteAnim_83CC3DC,
+ gSpriteAnim_83CC3E4,
+ gSpriteAnim_83CC3EC,
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83CC404[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83CC414[] = {
+ AFFINEANIMCMD_FRAME(-15, -15, 0, 15),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83CC424[] = {
+ AFFINEANIMCMD_FRAME(31, 31, 0, 0),
+ AFFINEANIMCMD_FRAME(15, 15, 0, 15),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83CC43C[] = {
+ gSpriteAffineAnim_83CC404,
+ gSpriteAffineAnim_83CC414,
+ gSpriteAffineAnim_83CC424,
+ NULL,
+};
+
+const struct OamData gOamData_83CC44C = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CC454[] = {
+ {
+ .tileTag = 20000,
+ .paletteTag = 20000,
+ .oam = &gOamData_83CC44C,
+ .anims = gSpriteAnimTable_83CC3F4,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC43C,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 20000,
+ .paletteTag = 20001,
+ .oam = &gOamData_83CC44C,
+ .anims = gSpriteAnimTable_83CC3F4,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC43C,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 20000,
+ .paletteTag = 20002,
+ .oam = &gOamData_83CC44C,
+ .anims = gSpriteAnimTable_83CC3F4,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC43C,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 20000,
+ .paletteTag = 20003,
+ .oam = &gOamData_83CC44C,
+ .anims = gSpriteAnimTable_83CC3F4,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC43C,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const struct CompressedSpriteSheet gUnknown_083CC4B4[] = {
+ { .data = gBlankGfxCompressed, .size = 0x1000, .tag = 33000 },
+ { .data = gBlankGfxCompressed, .size = 0x1000, .tag = 33001 },
+ { .data = gBlankGfxCompressed, .size = 0x1000, .tag = 33002 },
+ { .data = gBlankGfxCompressed, .size = 0x1000, .tag = 33003 },
+};
+
+const struct SpritePalette gUnknown_083CC4D4[] = {
+ { .data = eContestTempSave.cachedWindowPalettes[5], .tag = 33000 },
+ { .data = eContestTempSave.cachedWindowPalettes[6], .tag = 33001 },
+ { .data = eContestTempSave.cachedWindowPalettes[7], .tag = 33002 },
+ { .data = eContestTempSave.cachedWindowPalettes[8], .tag = 33003 },
+};
+
+const struct OamData gOamData_83CC4F4 = {
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .mosaic = FALSE,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83CC4FC[] = {
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83CC50C[] = {
+ AFFINEANIMCMD_FRAME( 3, 3, 0, 15),
+ AFFINEANIMCMD_FRAME(-3, -3, 0, 15),
+ AFFINEANIMCMD_FRAME( 3, 3, 0, 15),
+ AFFINEANIMCMD_FRAME(-3, -3, 0, 15),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83CC534[] = {
+ gSpriteAffineAnim_83CC4FC,
+ gSpriteAffineAnim_83CC50C,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CC53C[] = {
+ {
+ .tileTag = 33000,
+ .paletteTag = 33000,
+ .oam = &gOamData_83CC4F4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC534,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 33001,
+ .paletteTag = 33001,
+ .oam = &gOamData_83CC4F4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC534,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 33002,
+ .paletteTag = 33002,
+ .oam = &gOamData_83CC4F4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC534,
+ .callback = SpriteCallbackDummy,
+ },
+ {
+ .tileTag = 33003,
+ .paletteTag = 33003,
+ .oam = &gOamData_83CC4F4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gSpriteAffineAnimTable_83CC534,
+ .callback = SpriteCallbackDummy,
+ },
+};
+
+const u8 gUnknown_083CC59C[] = _("{HIGHLIGHT TRANSPARENT}{COLOR}");
+const u8 gText_Slash[] = _("/");
+
+const u16 gUnknown_083CC5A4[] = {
+ RGB(19, 3, 0),
+ RGB(6, 15, 6),
+ RGB(19, 18, 0),
+ RGB(4, 6, 19),
+ RGB(31, 0, 0),
+ RGB(0, 31, 0),
+ RGB(31, 31, 0),
+ RGB(0, 0, 31),
+};
+
+const u8 gContestExcitementTable[][5] =
+{
+ [CONTEST_CATEGORY_COOL] = {
+ [CONTEST_CATEGORY_COOL] = +1,
+ [CONTEST_CATEGORY_BEAUTY] = 0,
+ [CONTEST_CATEGORY_CUTE] = -1,
+ [CONTEST_CATEGORY_SMART] = -1,
+ [CONTEST_CATEGORY_TOUGH] = 0
+ },
+ [CONTEST_CATEGORY_BEAUTY] = {
+ [CONTEST_CATEGORY_COOL] = 0,
+ [CONTEST_CATEGORY_BEAUTY] = +1,
+ [CONTEST_CATEGORY_CUTE] = 0,
+ [CONTEST_CATEGORY_SMART] = -1,
+ [CONTEST_CATEGORY_TOUGH] = -1
+ },
+ [CONTEST_CATEGORY_CUTE] = {
+ [CONTEST_CATEGORY_COOL] = -1,
+ [CONTEST_CATEGORY_BEAUTY] = 0,
+ [CONTEST_CATEGORY_CUTE] = +1,
+ [CONTEST_CATEGORY_SMART] = 0,
+ [CONTEST_CATEGORY_TOUGH] = -1
+ },
+ [CONTEST_CATEGORY_SMART] = {
+ [CONTEST_CATEGORY_COOL] = -1,
+ [CONTEST_CATEGORY_BEAUTY] = -1,
+ [CONTEST_CATEGORY_CUTE] = 0,
+ [CONTEST_CATEGORY_SMART] = +1,
+ [CONTEST_CATEGORY_TOUGH] = 0
+ },
+ [CONTEST_CATEGORY_TOUGH] = {
+ [CONTEST_CATEGORY_COOL] = 0,
+ [CONTEST_CATEGORY_BEAUTY] = -1,
+ [CONTEST_CATEGORY_CUTE] = -1,
+ [CONTEST_CATEGORY_SMART] = 0,
+ [CONTEST_CATEGORY_TOUGH] = +1
+ }
+};
+
+#if defined(ENGLISH)
+#define CONTEST_WINNER_1_NICKNAME "TAILTA"
+#define CONTEST_WINNER_1_OTNAME "WYATT"
+#define CONTEST_WINNER_2_NICKNAME "BRELO"
+#define CONTEST_WINNER_2_OTNAME "LIANA"
+#define CONTEST_WINNER_3_NICKNAME "PELEP"
+#define CONTEST_WINNER_3_OTNAME "TIERA"
+#define CONTEST_WINNER_4_NICKNAME "PELEP"
+#define CONTEST_WINNER_4_OTNAME "TIERA"
+#define CONTEST_WINNER_5_NICKNAME "PELEP"
+#define CONTEST_WINNER_5_OTNAME "TIERA"
+#define CONTEST_WINNER_6_NICKNAME "KITSY"
+#define CONTEST_WINNER_6_OTNAME "OMAR"
+#define CONTEST_WINNER_7_NICKNAME "GULPS"
+#define CONTEST_WINNER_7_OTNAME "MACIE"
+#define CONTEST_WINNER_8_NICKNAME "LOUDED"
+#define CONTEST_WINNER_8_OTNAME "BRYANT"
+#elif defined(GERMAN)
+#define CONTEST_WINNER_1_NICKNAME "SCHWALBI"
+#define CONTEST_WINNER_1_OTNAME "ROSEL"
+#define CONTEST_WINNER_2_NICKNAME "TUFUNG"
+#define CONTEST_WINNER_2_OTNAME "WITOLD"
+#define CONTEST_WINNER_3_NICKNAME "LIPPER"
+#define CONTEST_WINNER_3_OTNAME "RUFUS"
+#define CONTEST_WINNER_4_NICKNAME "LIPPER"
+#define CONTEST_WINNER_4_OTNAME "ELLEN"
+#define CONTEST_WINNER_5_NICKNAME "LIPPER"
+#define CONTEST_WINNER_5_OTNAME "AVIA"
+#define CONTEST_WINNER_6_NICKNAME "CONEC"
+#define CONTEST_WINNER_6_OTNAME "HAUBERT"
+#define CONTEST_WINNER_7_NICKNAME "SCHLUCKI"
+#define CONTEST_WINNER_7_OTNAME "HEILWIG"
+#define CONTEST_WINNER_8_NICKNAME "KEELO"
+#define CONTEST_WINNER_8_OTNAME "ISEGRIM"
+#endif
+
+const struct ContestWinner gDefaultContestWinners[] = {
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_TAILLOW,
+ .contestCategory = CONTEST_CATEGORY_SMART,
+ .nickname = _(CONTEST_WINNER_1_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_1_OTNAME),
+ },
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_BRELOOM,
+ .contestCategory = CONTEST_CATEGORY_BEAUTY,
+ .nickname = _(CONTEST_WINNER_2_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_2_OTNAME),
+ },
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_PELIPPER,
+ .contestCategory = CONTEST_CATEGORY_COOL,
+ .nickname = _(CONTEST_WINNER_3_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_3_OTNAME),
+ },
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_PELIPPER,
+ .contestCategory = CONTEST_CATEGORY_COOL,
+ .nickname = _(CONTEST_WINNER_4_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_4_OTNAME),
+ },
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_PELIPPER,
+ .contestCategory = CONTEST_CATEGORY_COOL,
+ .nickname = _(CONTEST_WINNER_5_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_5_OTNAME),
+ },
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_DELCATTY,
+ .contestCategory = CONTEST_CATEGORY_SMART,
+ .nickname = _(CONTEST_WINNER_6_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_6_OTNAME),
+ },
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_GULPIN,
+ .contestCategory = CONTEST_CATEGORY_CUTE,
+ .nickname = _(CONTEST_WINNER_7_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_7_OTNAME),
+ },
+ {
+ .personality = 0,
+ .otId = 0xFFFF,
+ .species = SPECIES_LOUDRED,
+ .contestCategory = CONTEST_CATEGORY_TOUGH,
+ .nickname = _(CONTEST_WINNER_8_NICKNAME),
+ .trainerName = _(CONTEST_WINNER_8_OTNAME),
+ },
+};
+
+void TryPutPlayerLast(void)
+{
+ if (!(gIsLinkContest & 1))
+ gContestPlayerMonIndex = 3;
+}
+
+bool8 IsPlayerLinkLeader(void)
+{
+ if (gContestPlayerMonIndex == gContestLinkLeaderIndex)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void Contest_CreatePlayerMon(u8 partyIndex)
+{
+ u8 name[20];
+ u16 heldItem;
+ s16 cool;
+ s16 beauty;
+ s16 cute;
+ s16 smart;
+ s16 tough;
+
+ StringCopy(name, gSaveBlock2.playerName);
+ Text_StripExtCtrlCodes(name);
+ if (gIsLinkContest & 1)
+ {
+ u8 temp = name[5];
+
+ name[5] = EOS;
+ name[7] = temp;
+ }
+ memcpy(gContestMons[gContestPlayerMonIndex].trainerName, name, 8);
+ if (gSaveBlock2.playerGender == MALE)
+ gContestMons[gContestPlayerMonIndex].trainerGfxId = OBJ_EVENT_GFX_LINK_BRENDAN;
+ else
+ gContestMons[gContestPlayerMonIndex].trainerGfxId = OBJ_EVENT_GFX_LINK_MAY;
+ gContestMons[gContestPlayerMonIndex].flags = 0;
+ gContestMons[gContestPlayerMonIndex].unk2C[0] = 0;
+ gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
+ GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name);
+ StringGetEnd10(name);
+ if (gIsLinkContest & 1)
+ {
+ Text_StripExtCtrlCodes(name);
+ if (GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
+ {
+ name[5] = EOS;
+ name[10] = EXT_CTRL_CODE_BEGIN;
+ }
+ else
+ {
+ u8 temp = name[5];
+
+ name[5] = EOS;
+ name[10] = temp;
+ }
+ }
+ memcpy(gContestMons[gContestPlayerMonIndex].nickname, name, 11);
+ gContestMons[gContestPlayerMonIndex].cool = GetMonData(&gPlayerParty[partyIndex], MON_DATA_COOL);
+ gContestMons[gContestPlayerMonIndex].beauty = GetMonData(&gPlayerParty[partyIndex], MON_DATA_BEAUTY);
+ gContestMons[gContestPlayerMonIndex].cute = GetMonData(&gPlayerParty[partyIndex], MON_DATA_CUTE);
+ gContestMons[gContestPlayerMonIndex].smart = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SMART);
+ gContestMons[gContestPlayerMonIndex].tough = GetMonData(&gPlayerParty[partyIndex], MON_DATA_TOUGH);
+ gContestMons[gContestPlayerMonIndex].sheen = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SHEEN);
+ gContestMons[gContestPlayerMonIndex].moves[0] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE1);
+ gContestMons[gContestPlayerMonIndex].moves[1] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE2);
+ gContestMons[gContestPlayerMonIndex].moves[2] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE3);
+ gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE4);
+ gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY);
+ gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID);
+
+ heldItem = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM);
+ cool = gContestMons[gContestPlayerMonIndex].cool;
+ beauty = gContestMons[gContestPlayerMonIndex].beauty;
+ cute = gContestMons[gContestPlayerMonIndex].cute;
+ smart = gContestMons[gContestPlayerMonIndex].smart;
+ tough = gContestMons[gContestPlayerMonIndex].tough;
+ if (heldItem == ITEM_RED_SCARF)
+ cool += 20;
+ else if (heldItem == ITEM_BLUE_SCARF)
+ beauty += 20;
+ else if (heldItem == ITEM_PINK_SCARF)
+ cute += 20;
+ else if (heldItem == ITEM_GREEN_SCARF)
+ smart += 20;
+ else if (heldItem == ITEM_YELLOW_SCARF)
+ tough += 20;
+ if (cool > 255)
+ cool = 255;
+ if (beauty > 255)
+ beauty = 255;
+ if (cute > 255)
+ cute = 255;
+ if (smart > 255)
+ smart = 255;
+ if (tough > 255)
+ tough = 255;
+ gContestMons[gContestPlayerMonIndex].cool = cool;
+ gContestMons[gContestPlayerMonIndex].beauty = beauty;
+ gContestMons[gContestPlayerMonIndex].cute = cute;
+ gContestMons[gContestPlayerMonIndex].smart = smart;
+ gContestMons[gContestPlayerMonIndex].tough = tough;
+}
+
+void Contest_InitAllPokemon(u8 contestType, u8 rank)
+{
+ s32 i;
+ u8 opponentsCount = 0;
+ u8 opponents[ARRAY_COUNT(gContestOpponents) + 1];
+
+ TryPutPlayerLast();
+
+ // Find all suitable opponents
+ for (i = 0; i < (s32)ARRAY_COUNT(gContestOpponents); i++)
+ {
+ if (rank == gContestOpponents[i].whichRank)
+ {
+ if (contestType == 0 && gContestOpponents[i].aiPool_Cool)
+ opponents[opponentsCount++] = i;
+ else if (contestType == 1 && gContestOpponents[i].aiPool_Beauty)
+ opponents[opponentsCount++] = i;
+ else if (contestType == 2 && gContestOpponents[i].aiPool_Cute)
+ opponents[opponentsCount++] = i;
+ else if (contestType == 3 && gContestOpponents[i].aiPool_Smart)
+ opponents[opponentsCount++] = i;
+ else if (contestType == 4 && gContestOpponents[i].aiPool_Tough)
+ opponents[opponentsCount++] = i;
+ }
+ }
+ opponents[opponentsCount] = 0xFF;
+
+ // Choose three random opponents from the list
+ for (i = 0; i < 3; i++)
+ {
+ u16 rnd = Random() % opponentsCount;
+ s32 j;
+
+ gContestMons[i] = gContestOpponents[opponents[rnd]];
+ for (j = rnd; opponents[j] != 0xFF; j++)
+ opponents[j] = opponents[j + 1];
+ opponentsCount--;
+ }
+
+#ifndef NONMATCHING
+ // Compiler, please put i in r5. Thanks.
+ asm(""::"r"(i));
+ asm(""::"r"(i));
+ asm(""::"r"(i));
+ asm(""::"r"(i));
+ asm(""::"r"(i));
+#endif
+
+ Contest_CreatePlayerMon(gContestMonPartyIndex);
+}
+
+// GetContestAvailability?
+u8 CanMonParticipateInContest(struct Pokemon *pkmn)
+{
+ u8 ribbon;
+ u8 retVal;
+
+ if (GetMonData(pkmn, MON_DATA_IS_EGG))
+ return 3;
+ if (GetMonData(pkmn, MON_DATA_HP) == 0)
+ return 4;
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ ribbon = GetMonData(pkmn, MON_DATA_COOL_RIBBON);
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ ribbon = GetMonData(pkmn, MON_DATA_BEAUTY_RIBBON);
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ ribbon = GetMonData(pkmn, MON_DATA_CUTE_RIBBON);
+ break;
+ case CONTEST_CATEGORY_SMART:
+ ribbon = GetMonData(pkmn, MON_DATA_SMART_RIBBON);
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ ribbon = GetMonData(pkmn, MON_DATA_TOUGH_RIBBON);
+ break;
+ default:
+ return 0;
+ }
+
+ // Couldn't get this to match any other way.
+ // Returns 2, 1, or 0 respectively if ribbon's rank is above, equal, or below
+ // the current contest rank.
+ if (ribbon > gSpecialVar_ContestRank)
+ retVal = 2;
+ else if (ribbon >= gSpecialVar_ContestRank)
+ retVal = 1;
+ else
+ retVal = 0;
+ return retVal;
+}
+
+void DrawContestantWindowText(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ Text_FillWindowRectDefPalette(
+ &gWindowTemplate_Contest_MoveDescription,
+ 0,
+ gUnknown_083CA308[gContestantTurnOrder[i]][0],
+ gUnknown_083CA308[gContestantTurnOrder[i]][1],
+ gUnknown_083CA310[gContestantTurnOrder[i]][0] + 5,
+ gUnknown_083CA310[gContestantTurnOrder[i]][1] + 1);
+ PrintContestantTrainerName(i);
+ PrintContestantMonName(i);
+ }
+}
+
+u8 *Contest_CopyStringWithColor(u8 *dest, const u8 *src, u8 color)
+{
+ dest = StringCopy(dest, gUnknown_083CC59C); // {HIGHLIGHT TRANSPARENT}{COLOR}$
+ *dest++ = color;
+ dest = StringCopy(dest, src);
+ return dest;
+}
+
+void PrintContestantTrainerName(u8 contestant)
+{
+ PrintContestantTrainerNameWithColor(contestant, contestant + 10);
+}
+
+void PrintContestantTrainerNameWithColor(u8 contestant, u8 color)
+{
+ u8 *str = gDisplayedStringBattle;
+
+ str = Contest_CopyStringWithColor(str, gEmptyString_81E72B0, color);
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = EXT_CTRL_CODE_SIZE;
+ str[2] = 4;
+ str += 3;
+
+ *str++ = CHAR_SLASH;
+
+ if ((gIsLinkContest & 1) && gLinkPlayers[contestant].language == LANGUAGE_JAPANESE)
+ {
+ StringCopy(str, gLinkPlayers[contestant].name);
+ Text_InitWindow8004D04(
+ &gWindowTemplate_Contest_MoveDescription,
+ gDisplayedStringBattle,
+ 592 + gContestantTurnOrder[contestant] * 22,
+ 251 + gUnknown_083CA310[gContestantTurnOrder[contestant]][0] * 8,
+ gUnknown_083CA310[gContestantTurnOrder[contestant]][1] * 8,
+ 1);
+ }
+ else
+ {
+ StringCopy(str, gContestMons[contestant].trainerName);
+ Text_InitWindowAndPrintText(
+ &gWindowTemplate_Contest_MoveDescription,
+ gDisplayedStringBattle,
+ 592 + gContestantTurnOrder[contestant] * 22,
+ gUnknown_083CA310[gContestantTurnOrder[contestant]][0],
+ gUnknown_083CA310[gContestantTurnOrder[contestant]][1]);
+ }
+}
+
+void PrintContestantMonName(u8 contestant)
+{
+ PrintContestantMonNameWithColor(contestant, contestant + 10);
+}
+
+void PrintContestantMonNameWithColor(u8 contestant, u8 color)
+{
+ u8 *str = gDisplayedStringBattle;
+
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = EXT_CTRL_CODE_SIZE;
+ str[2] = 4;
+ str += 3;
+
+ str = Contest_CopyStringWithColor(str, gContestMons[contestant].nickname, color);
+ *str = EOS;
+
+ Text_InitWindow8004D04(
+ &gWindowTemplate_Contest_MoveDescription,
+ gDisplayedStringBattle,
+ 512 + gContestantTurnOrder[contestant] * 20,
+ 253 + gUnknown_083CA308[gContestantTurnOrder[contestant]][0] * 8,
+ gUnknown_083CA308[gContestantTurnOrder[contestant]][1] * 8,
+ 1);
+}
+
+u16 CalculateContestantRound1Points(u8 who, u8 contestCategory)
+{
+ u8 statMain;
+ u8 statSub1;
+ u8 statSub2;
+
+ switch (contestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ statMain = gContestMons[who].cool;
+ statSub1 = gContestMons[who].tough;
+ statSub2 = gContestMons[who].beauty;
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ statMain = gContestMons[who].beauty;
+ statSub1 = gContestMons[who].cool;
+ statSub2 = gContestMons[who].cute;
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ statMain = gContestMons[who].cute;
+ statSub1 = gContestMons[who].beauty;
+ statSub2 = gContestMons[who].smart;
+ break;
+ case CONTEST_CATEGORY_SMART:
+ statMain = gContestMons[who].smart;
+ statSub1 = gContestMons[who].cute;
+ statSub2 = gContestMons[who].tough;
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ default:
+ statMain = gContestMons[who].tough;
+ statSub1 = gContestMons[who].smart;
+ statSub2 = gContestMons[who].cool;
+ break;
+ }
+ return statMain + (statSub1 + statSub2 + gContestMons[who].sheen) / 2;
+}
+
+void CalculateRound1Points(u8 contestCategory)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ gContestMonRound1Points[i] = CalculateContestantRound1Points(i, contestCategory);
+}
+
+u8 CreateJudgeSprite(void)
+{
+ u8 spriteId;
+
+ LoadCompressedObjectPic(&sSpriteSheet_Judge);
+ LoadCompressedPalette(gContest2Pal, 0x110, 32);
+ spriteId = CreateSprite(&sSpriteTemplate_Judge, 112, 36, 30);
+ gSprites[spriteId].oam.paletteNum = 1;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ return spriteId;
+}
+
+u8 CreateJudgeSpeechBubbleSprite(void)
+{
+ u8 spriteId;
+
+ LoadCompressedObjectPic(&sSpriteSheet_JudgeSymbols);
+ LoadCompressedObjectPalette(&sSpritePalette_JudgeSymbols);
+ spriteId = CreateSprite(&sSpriteTemplate_JudgeSpeechBubble, 96, 10, 29);
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].data[0] = gSprites[spriteId].oam.tileNum;
+ return spriteId;
+}
+
+UNUSED
+u8 unref_sub_80AE908(void)
+{
+ u16 species = gContestMons[gContestPlayerMonIndex].species;
+ u8 spriteId;
+
+ DecompressPicFromTable_2(
+ &gMonFrontPicTable[species],
+ gMonFrontPicCoords[species].coords,
+ gMonFrontPicCoords[species].y_offset,
+ (void *)EWRAM,
+ gMonSpriteGfx_Sprite_ptr[1],
+ species);
+ LoadCompressedPalette(gMonPaletteTable[species].data, 0x110, 32);
+ GetMonSpriteTemplate_803C56C(gContestMons[gContestPlayerMonIndex].species, 1);
+ spriteId = CreateSprite(
+ &gCreatingSpriteTemplate,
+ 112, 80 + (8 - gMonFrontPicCoords[gContestMons[gContestPlayerMonIndex].species].coords) * 4,
+ 30);
+ gSprites[spriteId].oam.paletteNum = 1;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteContest;
+ StartSpriteAffineAnim(&gSprites[spriteId], 0);
+ return spriteId;
+}
+
+u8 CreateContestantSprite(u16 species, u32 otId, u32 personality)
+{
+ const u8 *lzPaletteData;
+ u8 spriteId;
+
+ species = SanitizeSpecies(species);
+ HandleLoadSpecialPokePic(
+ &gMonBackPicTable[species],
+ gMonBackPicCoords[species].coords,
+ gMonBackPicCoords[species].y_offset,
+ (void *)EWRAM,
+ gMonSpriteGfx_Sprite_ptr[0],
+ species,
+ personality);
+ lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personality);
+ LoadCompressedPalette(lzPaletteData, 0x120, 32);
+ GetMonSpriteTemplate_803C56C(species, 0);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, 112, GetBattlerSpriteFinal_Y(2, species, 0), 30);
+ gSprites[spriteId].oam.paletteNum = 2;
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].subpriority = GetBattlerSubpriority(2);
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
+ gSprites[spriteId].data[2] = species;
+ if (IsSpeciesNotUnown(species))
+ gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteContest;
+ else
+ gSprites[spriteId].affineAnims = gAffineAnims_BattleSpriteOpponentSide;
+ StartSpriteAffineAnim(&gSprites[spriteId], 0);
+ return spriteId;
+}
+
+bool8 IsSpeciesNotUnown(u16 species)
+{
+ if (species == SPECIES_UNOWN)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+// The contestant info windows and general-purpose text box are drawn on one half, while
+// the moves and move description windows are drawn on another screen. Only the first 32 * 20
+// tiles are actually drawn on screen.
+void SwapMoveDescAndContestTilemaps(void)
+{
+ __copy_tilemap((void *)(VRAM + 0xC000));
+ __copy_tilemap((void *)(VRAM + 0xE000));
+}
+
+void __copy_tilemap(void *a)
+{
+ DmaCopy16Defvars(3, a, (u8 *)a + 0x500, 0x280);
+}
+
+u16 GetMoveEffectSymbolTileOffset(u16 move, u8 b)
+{
+ u16 var;
+
+ switch (gContestEffects[gContestMoves[move].effect].effectType)
+ {
+ case 0:
+ case 1:
+ case 8:
+ var = 0x9082;
+ break;
+ case 2:
+ case 3:
+ var = 0x9088;
+ break;
+ default:
+ var = 0x9086;
+ break;
+ }
+ var += 0x9000 + (b << 12);
+ return var;
+}
+
+void PrintContestMoveDescription(u16 a)
+{
+ u8 category;
+ u16 categoryTile;
+ s32 i;
+ u8 numHearts;
+
+ Text_FillWindowRectDefPalette(&gWindowTemplate_Contest_MoveDescription, 0, 11, 31, 16, 34);
+
+ category = gContestMoves[a].contestCategory;
+ if (category == CONTEST_CATEGORY_COOL)
+ categoryTile = 0x4040;
+ else if (category == CONTEST_CATEGORY_BEAUTY)
+ categoryTile = 0x4045;
+ else if (category == CONTEST_CATEGORY_CUTE)
+ categoryTile = 0x404A;
+ else if (category == CONTEST_CATEGORY_SMART)
+ categoryTile = 0x406A;
+ else
+ categoryTile = 0x408A;
+
+ for (i = 0; i < 5; i++)
+ {
+ *(u16 *)(VRAM + 0xC7D6 + i * 2) = categoryTile;
+ *(u16 *)(VRAM + 0xC816 + i * 2) = categoryTile + 16;
+ categoryTile++;
+ }
+
+ if (gContestEffects[gContestMoves[a].effect].appeal == 0xFF)
+ numHearts = 0;
+ else
+ numHearts = gContestEffects[gContestMoves[a].effect].appeal / 10;
+ if (numHearts > 8)
+ numHearts = 8;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts) // Empty hearts
+ *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5012;
+ else // Filled-in hearts
+ *(u16 *)(VRAM + 0xC7EA + i * 2) = 0x5035;
+ }
+
+ if (gContestEffects[gContestMoves[a].effect].jam == 0xFF)
+ numHearts = 0;
+ else
+ numHearts = gContestEffects[gContestMoves[a].effect].jam / 10;
+ if (numHearts > 8)
+ numHearts = 8;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts) // Empty hearts
+ *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5014;
+ else // Filled-in hearts
+ *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5036;
+ }
+
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, gText_Slash, 866, 16, 31);
+}
+
+void Contest_ClearMoveDescriptionBox(void)
+{
+ Text_FillWindowRectDefPalette(&gWindowTemplate_Contest_MoveDescription, 0, 11, 35, 28, 40);
+}
+
+UNUSED
+void DrawMoveEffectSymbol(u16 move, u8 b)
+{
+ u8 r5 = gContestantTurnOrder[b] * 5 + 2;
+
+ if (!Contest_IsMonsTurnDisabled(b) && move != MOVE_NONE)
+ {
+ u16 tile = GetMoveEffectSymbolTileOffset(move, b);
+
+ *(u16 *)(VRAM + 0xC028 + r5 * 64) = tile;
+ *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = tile + 1;
+
+ *(u16 *)(VRAM + 0xC068 + r5 * 64) = tile + 16;
+ *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = tile + 17;
+
+ }
+ else
+ {
+ *(u16 *)(VRAM + 0xC028 + r5 * 64) = 0;
+ *(u16 *)(VRAM + 0xC028 + r5 * 64 + 2) = 0;
+
+ *(u16 *)(VRAM + 0xC068 + r5 * 64) = 0;
+ *(u16 *)(VRAM + 0xC068 + r5 * 64 + 2) = 0;
+ }
+}
+
+UNUSED
+void DrawMoveEffectSymbols(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ DrawMoveEffectSymbol(sContestantStatus[i].currMove, i);
+}
+
+u16 GetStarTileOffset(u8 unused)
+{
+ return 0x2034;
+}
+
+bool8 UpdateConditionStars(u8 a, u8 b)
+{
+ u8 r9;
+ u16 r8;
+ s32 r4;
+
+ if (sContestantStatus[a].conditionMod == 0)
+ return FALSE;
+ r9 = gContestantTurnOrder[a] * 5 + 2;
+ if (sContestantStatus[a].conditionMod == 1)
+ {
+ r8 = GetStarTileOffset(a);
+ r4 = 0;
+ while (sContestantStatus[a].condition / 10 > r4)
+ {
+ *(u16 *)(VRAM + 0xC026 + (r9 + r4) * 64) = r8;
+ r4++;
+ }
+ if (b != 0)
+ {
+ PlaySE(SE_EXP_MAX);
+ sContestantStatus[a].conditionMod = 0;
+ }
+ }
+ else // CONDITION_LOSE
+ {
+ r8 = 0;
+ r4 = 3;
+ while (sContestantStatus[a].condition / 10 < r4)
+ {
+ *(u16 *)(VRAM + 0xBFE6 + (r9 + r4) * 64) = r8;
+ r4--;
+ }
+ if (b != 0)
+ {
+ PlaySE(SE_CONTEST_CONDITION_LOSE);
+ sContestantStatus[a].conditionMod = 0;
+ }
+ }
+ return TRUE;
+}
+
+void DrawConditionStars(void)
+{
+ s32 i;
+ s32 r4;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r8 = gContestantTurnOrder[i] * 5 + 2;
+ u16 r6 = GetStarTileOffset(i);
+
+ r4 = 0;
+ while (r4 < sContestantStatus[i].condition / 10)
+ {
+ *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6;
+ r4++;
+ }
+ r6 = 0;
+ while (r4 < 3)
+ {
+ *(u16 *)(VRAM + 0xC026 + (r8 + r4) * 64) = r6;
+ r4++;
+ }
+ }
+}
+
+u16 GetStatusSymbolTileOffset(u8 unused, u8 b)
+{
+ u16 var = 0;
+
+ switch (b)
+ {
+ case 0: // For resistant
+ var = 0x80;
+ break;
+ case 1: // For nervous
+ var = 0x84;
+ break;
+ case 2: // For turn skipped
+ var = 0x86;
+ break;
+ case 3: // For jammed/unnerved
+ var = 0x88;
+ break;
+ case 4: // Never used
+ var = 0x82;
+ break;
+ }
+ var += 0x9000;
+ return var;
+}
+
+bool8 DrawStatusSymbol(u8 a)
+{
+ bool8 r5 = TRUE;
+ u16 r4 = 0;
+ u8 r6 = gContestantTurnOrder[a] * 5 + 2;
+
+ if (sContestantStatus[a].resistant != 0 || sContestantStatus[a].immune != 0 || sContestantStatus[a].jamSafetyCount != 0 || sContestantStatus[a].jamReduction != 0)
+ r4 = GetStatusSymbolTileOffset(a, 0);
+ else if (sContestantStatus[a].nervous)
+ r4 = GetStatusSymbolTileOffset(a, 1);
+ else if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ r4 = GetStatusSymbolTileOffset(a, 2);
+ else
+ r5 = FALSE;
+ if (r5)
+ {
+ *(u16 *)(VRAM + 0xC028 + r6 * 64) = r4;
+ *(u16 *)(VRAM + 0xC028 + r6 * 64 + 2) = r4 + 1;
+ *(u16 *)(VRAM + 0xC068 + r6 * 64) = r4 + 16;
+ *(u16 *)(VRAM + 0xC068 + r6 * 64 + 2) = r4 + 17;
+ }
+ else
+ {
+ *(u16 *)(VRAM + 0xC028 + r6 * 64) = 0;
+ *(u16 *)(VRAM + 0xC028 + r6 * 64 + 2) = 0;
+ *(u16 *)(VRAM + 0xC068 + r6 * 64) = 0;
+ *(u16 *)(VRAM + 0xC068 + r6 * 64 + 2) = 0;
+ }
+ return r5;
+}
+
+void DrawStatusSymbols(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ DrawStatusSymbol(i);
+}
+
+void ContestClearGeneralTextWindow(void)
+{
+ Text_FillWindowRectDefPalette(&gWindowTemplate_Contest_MoveDescription, 0, 1, 15, 17, 18);
+}
+
+u16 GetChosenMove(u8 a)
+{
+ if (Contest_IsMonsTurnDisabled(a))
+ return 0;
+ if (a == gContestPlayerMonIndex)
+ {
+ return gContestMons[a].moves[sContest.playerMoveChoice];
+ }
+ else
+ {
+ u8 moveChoice;
+
+ ContestAI_ResetAI(a);
+ moveChoice = ContestAI_GetActionToUse();
+ return gContestMons[a].moves[moveChoice];
+ }
+}
+
+void GetAllChosenMoves(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ sContestantStatus[i].currMove = GetChosenMove(i);
+}
+
+UNUSED
+void sub_80AF1E4(u8 a, u8 b)
+{
+ u8 r3;
+
+ if (b == 0)
+ r3 = a + 10;
+ else
+ r3 = 14;
+ if (sContestantStatus[a].currMove == MOVE_NONE)
+ Contest_CopyStringWithColor(gDisplayedStringBattle, gUnknownText_MissedTurn, r3);
+ else
+ Contest_CopyStringWithColor(
+ gDisplayedStringBattle, gMoveNames[sContestantStatus[a].currMove], r3);
+ sub_80AF2A0(a);
+ Text_InitWindowAndPrintText(
+ &gWindowTemplate_Contest_MoveDescription,
+ gDisplayedStringBattle,
+ 696 + a * 20,
+ gUnknown_083CA318[a][0],
+ gUnknown_083CA318[a][1]);
+}
+
+UNUSED
+void unref_sub_80AF280(u8 a)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ sub_80AF1E4(i, a);
+}
+
+UNUSED
+void sub_80AF2A0(u8 a)
+{
+ Text_FillWindowRectDefPalette(
+ &gWindowTemplate_Contest_MoveDescription,
+ 0,
+ gUnknown_083CA318[a][0],
+ gUnknown_083CA318[a][1],
+ gUnknown_083CA318[a][0] + 7,
+ gUnknown_083CA318[a][1] + 1);
+}
+
+UNUSED
+void unref_sub_80AF2E0(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ sub_80AF2A0(i);
+}
+
+void RankContestants(void)
+{
+ u8 i;
+ u8 j;
+ s16 arr[4];
+
+ for (i = 0; i < 4; i++)
+ {
+ sContestantStatus[i].pointTotal += sContestantStatus[i].appeal;
+ arr[i] = sContestantStatus[i].pointTotal;
+ }
+
+ // Sort the point totals using bubble-sort.
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 3; j > i; j--)
+ {
+ if (arr[j - 1] < arr[j])
+ {
+ u16 temp = arr[j];
+
+ arr[j] = arr[j - 1];
+ arr[j - 1] = temp;
+ }
+ }
+ }
+
+ // For each contestant, find the best rank with their point total.
+ // Normally, each point total is different, and this will output the
+ // rankings as expected. However, if two pokemon are tied, then they
+ // both get the best rank for that point total.
+ //
+ // For example if the point totals are [100, 80, 80, 50], the ranks will
+ // be [1, 2, 2, 4]. The pokemon with a point total of 80 stop looking
+ // when they see the first 80 in the array, so they both share the '2'
+ // rank.
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (sContestantStatus[i].pointTotal == arr[j])
+ {
+ sContestantStatus[i].ranking = j;
+ break;
+ }
+ }
+ }
+ SortContestants(1);
+ ApplyNextTurnOrder();
+}
+
+void SetAttentionLevels(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 attentionLevel;
+
+ if (sContestantStatus[i].currMove == MOVE_NONE)
+ attentionLevel = 5;
+ else if (sContestantStatus[i].appeal <= 0)
+ attentionLevel = 0;
+ else if (sContestantStatus[i].appeal < 30)
+ attentionLevel = 1;
+ else if (sContestantStatus[i].appeal < 60)
+ attentionLevel = 2;
+ else if (sContestantStatus[i].appeal < 80)
+ attentionLevel = 3;
+ else
+ attentionLevel = 4;
+
+ sContestantStatus[i].attentionLevel = attentionLevel;
+ }
+}
+
+bool8 ContestantCanUseTurn(u8 a)
+{
+ if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void SetContestantStatusesForNextRound(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ // This is bitfield hell...
+ sContestantStatus[i].appeal = 0;
+ sContestantStatus[i].baseAppeal = 0;
+ sContestantStatus[i].jamSafetyCount = 0;
+ if (sContestantStatus[i].numTurnsSkipped > 0)
+ sContestantStatus[i].numTurnsSkipped--;
+ sContestantStatus[i].jam = 0;
+ sContestantStatus[i].resistant = 0;
+ sContestantStatus[i].jamReduction = 0;
+ sContestantStatus[i].immune = 0;
+ sContestantStatus[i].moreEasilyStartled = 0;
+ sContestantStatus[i].usedRepeatableMove = 0;
+ sContestantStatus[i].nervous = 0;
+ sContestantStatus[i].effectStringId = CONTEST_STRING_NONE;
+ sContestantStatus[i].effectStringId2 = CONTEST_STRING_NONE;
+ sContestantStatus[i].conditionMod = 0;
+ sContestantStatus[i].repeatedPrevMove = sContestantStatus[i].repeatedMove;
+ sContestantStatus[i].repeatedMove = FALSE;
+ sContestantStatus[i].turnOrderModAction = 0;
+ sContestantStatus[i].appealTripleCondition = 0;
+ if (sContestantStatus[i].turnSkipped)
+ {
+ sContestantStatus[i].numTurnsSkipped = 1;
+ sContestantStatus[i].turnSkipped = 0;
+ }
+ if (sContestantStatus[i].exploded)
+ {
+ sContestantStatus[i].noMoreTurns = 1;
+ sContestantStatus[i].exploded = 0;
+ }
+ sContestantStatus[i].overrideCategoryExcitementMod = 0;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ sContestantStatus[i].prevMove = sContestantStatus[i].currMove;
+ sContest.moveHistory[sContest.appealNumber][i] = sContestantStatus[i].prevMove;
+ sContest.excitementHistory[sContest.appealNumber][i] = Contest_GetMoveExcitement(sContestantStatus[i].currMove);
+ sContestantStatus[i].currMove = MOVE_NONE;
+ }
+ eContestExcitement.excitementFrozen = 0;
+}
+
+bool8 Contest_IsMonsTurnDisabled(u8 a)
+{
+ if (sContestantStatus[a].numTurnsSkipped != 0 || sContestantStatus[a].noMoreTurns)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+UNUSED
+bool8 unref_sub_80AF5D0(u8 a, u8 b)
+{
+ u8 i;
+
+ if (a != gContestPlayerMonIndex)
+ return TRUE;
+ for (i = 0; i < 4; i++)
+ {
+ if (b == 3)
+ {
+ sContest.unk1920A_0 = 1;
+ return TRUE;
+ }
+ if (b == 4)
+ {
+ sContest.unk1920A_1 = 1;
+ return TRUE;
+ }
+ if (sContest.unk19206[i] == b)
+ return TRUE;
+ if (sContest.unk19206[i] == 0xFF)
+ {
+ sContest.unk19206[i] = b;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void CalculateTotalPointsForContestant(u8 a)
+{
+ gContestMonRound2Points[a] = GetContestantRound2Points(a);
+ gContestMonTotalPoints[a] = gContestMonRound1Points[a] + gContestMonRound2Points[a];
+}
+
+void CalculateFinalScores(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ CalculateTotalPointsForContestant(i);
+ DetermineFinalStandings();
+}
+
+s16 GetContestantRound2Points(u8 a)
+{
+ return gContestMonAppealPointTotals[a] * 2;
+}
+
+void DetermineFinalStandings(void)
+{
+ u16 randomOrdering[4] = {0};
+ struct ContestFinalStandings standings[4];
+ s32 i;
+
+ // Seed random order in case of ties
+ for (i = 0; i < 4; i++)
+ {
+ s32 j;
+ randomOrdering[i] = Random();
+ for (j = 0; j < i; j++)
+ {
+ if (randomOrdering[i] == randomOrdering[j])
+ {
+ i--;
+ break;
+ }
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ standings[i].totalPoints = gContestMonTotalPoints[i];
+ standings[i].round1Points = gContestMonRound1Points[i];
+ standings[i].random = randomOrdering[i];
+ standings[i].contestant = i;
+ }
+
+ // Rank contestants
+ for (i = 0; i < 3; i++)
+ {
+ s32 j;
+ for (j = 3; j > i; j--)
+ {
+ if (DidContestantPlaceHigher(j - 1, j, standings))
+ {
+ // Swap contestants in array
+ struct ContestFinalStandings temp;
+
+ temp.totalPoints = standings[j - 1].totalPoints;
+ temp.round1Points = standings[j - 1].round1Points;
+ temp.random = standings[j - 1].random;
+ temp.contestant = standings[j - 1].contestant;
+
+ standings[j - 1].totalPoints = standings[j].totalPoints;
+ standings[j - 1].round1Points = standings[j].round1Points;
+ standings[j - 1].random = standings[j].random;
+ standings[j - 1].contestant = standings[j].contestant;
+
+ standings[j].totalPoints = temp.totalPoints;
+ standings[j].round1Points = temp.round1Points;
+ standings[j].random = temp.random;
+ standings[j].contestant = temp.contestant;
+ }
+ }
+ }
+
+ // Assign placements. i is the placing (0 is 1st, 1 is 2nd...)
+ for (i = 0; i < 4; i++)
+ gContestFinalStandings[standings[i].contestant] = i;
+}
+
+bool8 DidContestantPlaceHigher(s32 a, s32 b, struct ContestFinalStandings *c)
+{
+ bool8 retVal;
+
+ if (c[a].totalPoints < c[b].totalPoints)
+ retVal = TRUE;
+ else if (c[a].totalPoints > c[b].totalPoints)
+ retVal = FALSE;
+ else if (c[a].round1Points < c[b].round1Points)
+ retVal = TRUE;
+ else if (c[a].round1Points > c[b].round1Points)
+ retVal = FALSE;
+ else if (c[a].random < c[b].random)
+ retVal = TRUE;
+ else
+ retVal = FALSE;
+ return retVal;
+}
+
+void ContestPrintLinkStandby(void)
+{
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ ContestClearGeneralTextWindow();
+ Text_InitWindowAndPrintText(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15);
+}
+
+UNUSED
+u8 unref_sub_80AF89C(s16 appealStart, s16 appealDelta, u8 tileOffs, u8 contestant)
+{
+ u8 taskId;
+ u8 heartsStart;
+ s8 heartsDelta;
+ u16 baseBlock;
+
+ eContestGfxState[contestant].updatingAppealHearts = 1;
+ taskId = CreateTask(Task_unused_80AF94C, 20);
+ heartsStart = GetNumHeartsFromAppealPoints(appealStart);
+ heartsDelta = GetNumHeartsFromAppealPoints(appealStart + appealDelta) - heartsStart;
+ baseBlock = GetAppealHeartTileOffset(contestant);
+ gTasks[taskId].data[0] = heartsStart;
+ gTasks[taskId].data[1] = heartsDelta;
+ gTasks[taskId].data[2] = baseBlock + tileOffs;
+ gTasks[taskId].data[3] = contestant;
+ if (appealDelta < 0)
+ nullsub_19(contestant);
+ return taskId;
+}
+
+UNUSED
+void Task_unused_80AF94C(u8 taskId)
+{
+ u8 contestant = gTasks[taskId].data[3];
+
+ if (gTasks[taskId].data[1] == 0)
+ {
+ nullsub_19(contestant);
+ DestroyTask(taskId);
+ eContestGfxState[contestant].updatingAppealHearts = 0;
+ }
+ else if (++gTasks[taskId].data[10] > 29)
+ {
+ u8 numHearts;
+
+ gTasks[taskId].data[10] = 0;
+ if (gTasks[taskId].data[1] < 0)
+ {
+ numHearts = gTasks[taskId].data[0]--;
+ gTasks[taskId].data[1]++;
+ PlaySE(SE_BOO);
+ }
+ else
+ {
+ numHearts = ++gTasks[taskId].data[0];
+ gTasks[taskId].data[1]--;
+ PlaySE(SE_PIN);
+ }
+ if ((u16)gTasks[taskId].data[2] != 0xFFFF)
+ {
+ RequestSpriteCopy(
+ &gTasks[taskId].data[2],
+ (void *)(VRAM + 0xC000 + (147 + numHearts + contestant * 160) * 2),
+ 2);
+ }
+ else
+ {
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (gTasks[taskId].data[i + 4] < 0)
+ {
+ RequestSpriteCopy(
+ &gTasks[taskId].data[i + 7],
+ (void *)(VRAM + 0xC000 + (147 + numHearts + contestant * 160) * 2),
+ 2);
+ gTasks[taskId].data[i + 4]++;
+ break;
+ }
+ }
+ }
+ }
+}
+
+void FillContestantWindowBgs(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ DmaClear16(3, (void *)(VRAM + 0xC000 + (86 + i * 160) * 2), 16);
+ DmaClear16(3, (void *)(VRAM + 0xC000 + (118 + i * 160) * 2), 16);
+ }
+}
+
+UNUSED
+void unref_sub_80AFAB8(s16 a, u8 b)
+{
+ u8 r5 = GetNumHeartsFromAppealPoints(a);
+ u16 r2;
+ u8 i;
+ u16 arr[9];
+
+ if (b == 0)
+ r2 = 0x50A2;
+ else if (b == 1)
+ r2 = 0x60A2;
+ else if (b == 2)
+ r2 = 0x70A2;
+ else
+ r2 = 0x80A2;
+
+ for (i = 0; i < 9; i++)
+ {
+ if (i < r5)
+ arr[i] = r2;
+ else
+ arr[i] = 0;
+ }
+
+ DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xC000 + (148 + b * 160) * 2), sizeof(arr));
+}
+
+u16 GetAppealHeartTileOffset(u8 a)
+{
+ u16 var;
+
+ if (a == 0)
+ var = 0x5011;
+ else if (a == 1)
+ var = 0x6011;
+ else if (a == 2)
+ var = 0x7011;
+ else
+ var = 0x8011;
+ return var + 1;
+}
+
+s8 GetNumHeartsFromAppealPoints(s16 a)
+{
+ s8 retVal = a / 10;
+
+ if (retVal > 16)
+ retVal = 16;
+ else if (retVal < -16)
+ retVal = -16;
+ return retVal;
+}
+
+u8 UpdateAppealHearts(s16 startAppeal, s16 appealDelta, u8 contestant)
+{
+ u8 taskId;
+ s8 startHearts;
+ s8 heartsDelta;
+
+ eContestGfxState[contestant].updatingAppealHearts = 1;
+ taskId = CreateTask(Task_UpdateAppealHearts, 20);
+ startHearts = GetNumHeartsFromAppealPoints(startAppeal);
+ heartsDelta = GetNumHeartsFromAppealPoints(startAppeal + appealDelta) - startHearts;
+ GetAppealHeartTileOffset(contestant); // unused return value
+ gTasks[taskId].data[0] = abs(startHearts);
+ gTasks[taskId].data[1] = heartsDelta;
+ if (startHearts > 0 || (startHearts == 0 && heartsDelta > 0))
+ gTasks[taskId].data[2] = 1;
+ else
+ gTasks[taskId].data[2] = -1;
+ gTasks[taskId].data[3] = contestant;
+ if (appealDelta < 0)
+ nullsub_19(contestant);
+ return taskId;
+}
+
+void Task_UpdateAppealHearts(u8 taskId)
+{
+ u8 contestant = gTasks[taskId].data[3];
+ s16 startHearts = gTasks[taskId].data[0];
+ s16 heartsDelta = gTasks[taskId].data[1];
+
+ if (++gTasks[taskId].data[10] > 14)
+ {
+ u16 heartOffset;
+ u8 newNumHearts;
+ u8 pitchMod;
+
+ gTasks[taskId].data[10] = 0;
+ if (gTasks[taskId].data[1] == 0)
+ {
+ nullsub_19(contestant);
+ DestroyTask(taskId);
+ eContestGfxState[contestant].updatingAppealHearts = 0;
+ return;
+ }
+ else if (startHearts == 0)
+ {
+ if (heartsDelta < 0)
+ {
+ heartOffset = GetAppealHeartTileOffset(contestant) + 2;
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ heartOffset = GetAppealHeartTileOffset(contestant);
+ gTasks[taskId].data[1]--;
+ }
+ newNumHearts = gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (gTasks[taskId].data[2] < 0)
+ {
+ if (heartsDelta < 0)
+ {
+ newNumHearts = gTasks[taskId].data[0]++;
+ gTasks[taskId].data[1]++;
+ heartOffset = GetAppealHeartTileOffset(contestant) + 2;
+ }
+ else
+ {
+ newNumHearts = --gTasks[taskId].data[0];
+ heartOffset = 0;
+ gTasks[taskId].data[1]--;
+ }
+ }
+ else
+ {
+ if (heartsDelta < 0)
+ {
+ newNumHearts = --gTasks[taskId].data[0];
+ heartOffset = 0;
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ newNumHearts = gTasks[taskId].data[0]++;
+ gTasks[taskId].data[1]--;
+ heartOffset = GetAppealHeartTileOffset(contestant);
+ }
+ }
+ }
+ pitchMod = newNumHearts;
+ if (newNumHearts >= 8)
+ newNumHearts += 32 - 8; // jump to second line
+ // Seriously, a 2-byte CpuFill? Why?
+ CpuFill16(heartOffset, (void *)(VRAM + 0xC000 + (0x56 + newNumHearts + gContestantTurnOrder[contestant] * 160) * 2), 2);
+ if (heartsDelta > 0) // Appeal
+ {
+ PlaySE(SE_CONTEST_HEART);
+ m4aMPlayImmInit(&gMPlayInfo_SE1);
+ m4aMPlayPitchControl(&gMPlayInfo_SE1, 0xFFFF, pitchMod * 256);
+ }
+ else // Jam
+ {
+ PlaySE(SE_BOO);
+ }
+ if (newNumHearts == 0 && heartOffset == 0)
+ gTasks[taskId].data[2] = -gTasks[taskId].data[2];
+ }
+}
+
+void CreateSliderHeartSprites(void)
+{
+ s32 i;
+
+ LoadSpriteSheet(&sSpriteSheet_SliderHeart);
+ for (i = 0; i < 4; i++)
+ {
+ u8 y = sSliderHeartYPositions[gContestantTurnOrder[i]];
+
+ eContestGfxState[i].sliderHeartSpriteId = CreateSprite(&sSpriteTemplate_SliderHeart, 180, y, 1);
+ }
+}
+
+void sub_80AFE78(u8 a)
+{
+ u8 spriteId;
+ s16 r5;
+
+ eContestGfxState[a].sliderUpdating = 1;
+ spriteId = eContestGfxState[a].sliderHeartSpriteId;
+ r5 = sContestantStatus[a].pointTotal / 10 * 2;
+ if (r5 > 56)
+ r5 = 56;
+ else if (r5 < 0)
+ r5 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gSprites[spriteId].data[0] = a;
+ gSprites[spriteId].data[1] = r5;
+ if (gSprites[spriteId].data[1] > gSprites[spriteId].x2)
+ gSprites[spriteId].data[2] = 1;
+ else
+ gSprites[spriteId].data[2] = -1;
+ gSprites[spriteId].callback = sub_80AFF60;
+}
+
+void UpdateHeartSliders(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ sub_80AFE78(i);
+}
+
+bool8 SlidersDoneUpdating(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (eContestGfxState[i].sliderUpdating)
+ break;
+ }
+ if (i == 4)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_80AFF60(struct Sprite *sprite)
+{
+ if (sprite->x2 == sprite->data[1])
+ {
+ eContestGfxState[sprite->data[0]].sliderUpdating = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ else
+ {
+ sprite->x2 += sprite->data[2];
+ }
+}
+
+void UpdateSliderHeartSpriteYPositions(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].y = sSliderHeartYPositions[gContestantTurnOrder[i]];
+}
+
+void SetBottomSliderHeartsInvisibility(bool8 a)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gContestantTurnOrder[i] > 1)
+ {
+ if (!a)
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].x = 180;
+ else
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].x = 256;
+ }
+ }
+}
+
+void CreateNextTurnSprites(void)
+{
+ s32 i;
+
+ LoadSpritePalette(&gUnknown_083CA3E4);
+ for (i = 0; i < 4; i++)
+ {
+ LoadCompressedObjectPic(&gUnknown_083CA3C4[i]);
+ eContestGfxState[i].nextTurnSpriteId = CreateSprite(
+ &gSpriteTemplate_83CA3F4[i],
+ 204, gUnknown_083CA33C[gContestantTurnOrder[i]],
+ 0);
+ SetSubspriteTables(&gSprites[eContestGfxState[i].nextTurnSpriteId], gSubspriteTables_83CA464);
+ gSprites[eContestGfxState[i].nextTurnSpriteId].invisible = TRUE;
+ }
+}
+
+void CreateApplauseMeterSprite(void)
+{
+ u8 spriteId;
+
+ LoadCompressedObjectPic(&gUnknown_083CA46C);
+ LoadSpritePalette(&gUnknown_083CA474);
+ spriteId = CreateSprite(&gSpriteTemplate_83CA484, 30, 44, 1);
+ gSprites[spriteId].invisible = TRUE;
+ sContest.applauseMeterSpriteId = spriteId;
+}
+
+void nullsub_18(s8 unused)
+{
+}
+
+void unref_sub_80B011C(void)
+{
+ u8 i;
+
+ LoadCompressedObjectPic(&gUnknown_083CC3AC);
+ for (i = 0; i < 4; i++)
+ LoadCompressedObjectPalette(&gUnknown_083CC3B4[i]);
+ for (i = 0; i < 4; i++)
+ {
+ u8 spriteId = CreateSprite(
+ &gSpriteTemplate_83CC454[i],
+ gUnknown_083CA330[i][0], gUnknown_083CA330[i][1],
+ 5);
+
+ gSprites[spriteId].invisible = TRUE;
+ gSprites[spriteId].data[0] = i;
+ sContest.unk1920D[i] = spriteId;
+ }
+}
+
+void unref_sub_80B01B0(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ gSprites[sContest.unk1920D[i]].callback = sub_80B0238;
+}
+
+bool8 unref_sub_80B01E0(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gSprites[sContest.unk1920D[i]].callback != SpriteCallbackDummy)
+ break;
+ }
+ if (i == 4)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_80B0238(struct Sprite *sprite)
+{
+ sprite->oam.affineMode = 1;
+ InitSpriteAffineAnim(sprite);
+ if (sprite->invisible)
+ {
+ sprite->callback = sub_80B02A8;
+ }
+ else
+ {
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_80B0280;
+ }
+}
+
+void sub_80B0280(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = sub_80B02A8;
+ }
+}
+
+void sub_80B02A8(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+ StartSpriteAnim(sprite, sContestantStatus[sprite->data[0]].ranking);
+ StartSpriteAffineAnim(sprite, 2);
+ sprite->callback = sub_80B02F4;
+ PlaySE(SE_CONTEST_PLACE);
+}
+
+void sub_80B02F4(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ FreeSpriteOamMatrix(sprite);
+ sprite->oam.affineMode = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void CreateJudgeAttentionEyeTask(void)
+{
+ u8 i;
+ u8 taskId = CreateTask(sub_80B0458, 30);
+
+ sContest.judgeAttentionTaskId = taskId;
+ for (i = 0; i < 4; i++)
+ gTasks[taskId].data[i * 4] = 0xFF;
+}
+
+void sub_80B0368(u8 a)
+{
+ gTasks[sContest.judgeAttentionTaskId].data[a * 4 + 0] = 0;
+ gTasks[sContest.judgeAttentionTaskId].data[a * 4 + 1] = 0;
+}
+
+void sub_80B03A8(u8 a)
+{
+ u8 taskId = CreateTask(sub_80B03D8, 31);
+
+ gTasks[taskId].data[0] = a;
+}
+
+void sub_80B03D8(u8 taskId)
+{
+ u8 r4 = gTasks[taskId].data[0];
+
+ if (gTasks[sContest.judgeAttentionTaskId].data[r4 * 4 + 0] == 0
+ || gTasks[sContest.judgeAttentionTaskId].data[r4 * 4 + 0] == 0xFF)
+ {
+ gTasks[sContest.judgeAttentionTaskId].data[r4 * 4 + 0] = 0xFF;
+ gTasks[sContest.judgeAttentionTaskId].data[r4 * 4 + 1] = 0;
+ BlendPalette((sContest.prevTurnOrder[r4] + 5) * 16 + 6, 2, 0, RGB(31, 31, 18));
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80B0458(u8 taskId)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r3 = i * 4;
+
+ if (gTasks[taskId].data[r3 + 0] != 0xFF)
+ {
+ if (gTasks[taskId].data[r3 + 1] == 0)
+ gTasks[taskId].data[r3 + 0]++;
+ else
+ gTasks[taskId].data[r3 + 0]--;
+
+ if (gTasks[taskId].data[r3 + 0] == 16
+ || gTasks[taskId].data[r3 + 0] == 0)
+ gTasks[taskId].data[r3 + 1] ^= 1;
+
+ BlendPalette(
+ (sContest.prevTurnOrder[i] + 5) * 16 + 6,
+ 2,
+ gTasks[taskId].data[r3 + 0],
+ RGB(31, 31, 18));
+ }
+ }
+}
+
+void CreateUnusedBlendTask(void)
+{
+ u8 i;
+
+ sContest.blendTaskId = CreateTask(Task_UnusedBlend, 30);
+ for (i = 0; i < 4; i++)
+ InitUnusedBlendTaskData(i);
+}
+
+void InitUnusedBlendTaskData(u8 contestant)
+{
+ gTasks[sContest.blendTaskId].data[contestant * 4 + 0] = 0xFF;
+ gTasks[sContest.blendTaskId].data[contestant * 4 + 1] = 0;
+}
+
+void UpdateBlendTaskContestantsData(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ UpdateBlendTaskContestantData(i);
+}
+
+void UpdateBlendTaskContestantData(u8 contestant)
+{
+ InitUnusedBlendTaskData(contestant);
+
+ // 2-byte DMA copy? Why?
+
+ DmaCopy16Defvars(
+ 3,
+ &gPlttBufferUnfaded[16 * (5 + contestant) + 10],
+ &gPlttBufferFaded[16 * (5 + contestant) + 10],
+ 2);
+
+ DmaCopy16Defvars(
+ 3,
+ &gPlttBufferUnfaded[16 * (5 + contestant) + 12 + contestant],
+ &gPlttBufferFaded[16 * (5 + contestant) + 12 + contestant],
+ 2);
+}
+
+void nullsub_19(int unused)
+{
+}
+
+void Task_UnusedBlend(u8 taskId)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r3 = i * 4;
+
+ if (gTasks[taskId].data[r3 + 0] != 0xFF)
+ {
+ if (++gTasks[taskId].data[r3 + 2] > 2)
+ {
+ gTasks[taskId].data[r3 + 2] = 0;
+
+ if (gTasks[taskId].data[r3 + 1] == 0)
+ gTasks[taskId].data[r3 + 0]++;
+ else
+ gTasks[taskId].data[r3 + 0]--;
+
+ if (gTasks[taskId].data[r3 + 0] == 16
+ || gTasks[taskId].data[r3 + 0] == 0)
+ gTasks[taskId].data[r3 + 1] ^= 1;
+
+ BlendPalette((i + 5) * 16 + 10, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
+ BlendPalette((i + 5) * 16 + 12 + i, 1, gTasks[taskId].data[r3 + 0], RGB(31, 31, 18));
+ }
+ }
+ }
+}
+
+// This task is never used
+u8 CreateUnusedBrokenBlendTask(u8 *a)
+{
+ u8 i;
+ u8 taskId = CreateTask(Task_UnusedBrokenBlend, 10);
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 r0 = i * 4;
+
+ gTasks[taskId].data[r0] = a[i];
+ if (a[i] != 0)
+ eContestGfxState[i].boxBlinking = TRUE;
+ }
+ return taskId;
+}
+
+#ifdef NONMATCHING
+void Task_UnusedBrokenBlend(u8 taskId)
+{
+ u8 i;
+ u8 r4;
+ u8 r4_2;
+ u8 r1;
+ u8 r7;
+
+ for (i = 0; i < 4; i++)
+ {
+ //#define r4 r4_2
+ r4 = gContestantTurnOrder[i];
+ r1 = r4 * 4;
+ r7 = gTasks[taskId].data[r1 + 0];
+
+ if (r7 != 0)
+ {
+ //_080B079C
+ u8 r8 = gTasks[taskId].data[r1 + 1];
+ u8 r5 = gTasks[taskId].data[r1 + 2];
+ u8 r6 = gTasks[taskId].data[r1 + 3];
+
+ if (r7 == 1)
+ {
+ r6++;
+ if (r6 == 1)
+ {
+ //_080B07D2
+ r6 = 0;
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, RGB(31, 31, 31));
+ if (r5 == 0 && r8 == 4)
+ {
+ gTasks[taskId].data[r1 + 0] = 0;
+ //asm("");
+ }
+ //_080B0800
+ else
+ {
+ r5 += 2;
+ if (r5 > 13)
+ {
+ r5 = 0;
+ r8++;
+ }
+ }
+ }
+ //to _080B08EA
+ }
+ //_080B0818
+ else if (r7 == 2 || r7 == 4)
+ {
+ r6++;
+ if (r6 == 3)
+ {
+ r6 = 0;
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, gUnknown_083CC5A4[r4]);
+ if (r5 == 0 && r8 == 2)
+ {
+ gTasks[taskId].data[r1 + 0] = 0;
+ }
+ //_080B0858
+ else
+ {
+ r5 += 1;
+ if (r5 == 14)
+ {
+ r5 = 0;
+ r8++;
+ if (r7 == 4 && r8 == 1)
+ {
+ BlendPalette((r4 + 9) * 16 + 2, 1, 4, RGB(0, 0, 0));
+ BlendPalette((r4 + 9) * 16 + 5, 1, 4, RGB(0, 0, 0));
+ }
+ }
+ }
+ }
+ //to _080B08EA
+ }
+ //_080B0896
+ else if (r7 == 3)
+ {
+ r6++;
+ if (r6 == 12)
+ {
+ r6 = 0;
+ BlendPalette((r4 + 5) * 16 + 1, 3, r5, RGB(0, 0, 0));
+ r5 += 1;
+ if (r5 == 5)
+ {
+ // What the hell? These aren't pointers.
+ // This code would crash if run.
+ DmaCopy16Defvars(3, (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1],
+ (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1], 6);
+ gTasks[taskId].data[r1 + 0] = 0;
+ }
+ }
+ }
+ //_080B08EA
+ gTasks[taskId].data[r1 + 1] = r8;
+ gTasks[taskId].data[r1 + 2] = r5;
+ gTasks[taskId].data[r1 + 3] = r6;
+ }
+ //_080B0910
+ }
+ //_080B0920
+
+ #define i r4_2
+ for (i = 0; i < 4; i++) // r4 is i
+ {
+ if (gTasks[taskId].data[i * 4 + 0] != 0)
+ break;
+ }
+ //_080B0958
+ if (i == 4)
+ {
+ for (i = 0; i < 4; i++)
+ eContestGfxState[i].boxBlinking = FALSE;
+ DestroyTask(taskId);
+ }
+ #undef i
+}
+#else
+NAKED
+void Task_UnusedBrokenBlend(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x20\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ ldr r2, _080B07F4 @ =gTasks\n\
+ movs r1, 0x8\n\
+ adds r1, r2\n\
+ mov r10, r1\n\
+ ldr r3, [sp]\n\
+ lsls r3, 2\n\
+ str r3, [sp, 0x1C]\n\
+ ldr r1, [sp]\n\
+ adds r0, r3, r1\n\
+ lsls r0, 3\n\
+ str r0, [sp, 0xC]\n\
+_080B0774:\n\
+ ldr r0, _080B07F8 @ =gContestantTurnOrder\n\
+ ldr r3, [sp, 0x4]\n\
+ adds r0, r3, r0\n\
+ ldrb r4, [r0]\n\
+ lsls r0, r4, 26\n\
+ lsrs r1, r0, 24\n\
+ lsls r0, r1, 1\n\
+ str r0, [sp, 0x8]\n\
+ ldr r3, [sp]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r6, r0, 3\n\
+ ldr r3, [sp, 0x8]\n\
+ adds r0, r3, r6\n\
+ add r0, r10\n\
+ mov r9, r0\n\
+ ldrb r7, [r0]\n\
+ cmp r7, 0\n\
+ bne _080B079C\n\
+ b _080B0910\n\
+_080B079C:\n\
+ adds r3, r1, 0x1\n\
+ lsls r0, r3, 1\n\
+ adds r0, r6\n\
+ add r0, r10\n\
+ ldrb r0, [r0]\n\
+ mov r8, r0\n\
+ adds r2, r1, 0x2\n\
+ lsls r0, r2, 1\n\
+ adds r0, r6\n\
+ add r0, r10\n\
+ ldrb r5, [r0]\n\
+ adds r1, 0x3\n\
+ lsls r0, r1, 1\n\
+ adds r0, r6\n\
+ add r0, r10\n\
+ ldrb r6, [r0]\n\
+ str r3, [sp, 0x10]\n\
+ str r2, [sp, 0x14]\n\
+ str r1, [sp, 0x18]\n\
+ cmp r7, 0x1\n\
+ bne _080B0818\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0x1\n\
+ beq _080B07D2\n\
+ b _080B08EA\n\
+_080B07D2:\n\
+ movs r6, 0\n\
+ adds r0, r4, 0x5\n\
+ lsls r0, 4\n\
+ adds r0, 0x1\n\
+ movs r1, 0x3\n\
+ adds r2, r5, 0\n\
+ ldr r3, _080B07FC @ =0x00007fff\n\
+ bl BlendPalette\n\
+ cmp r5, 0\n\
+ bne _080B0800\n\
+ mov r0, r8\n\
+ cmp r0, 0x4\n\
+ bne _080B0800\n\
+ mov r1, r9\n\
+ strh r6, [r1]\n\
+ b _080B08EA\n\
+ .align 2, 0\n\
+_080B07F4: .4byte gTasks\n\
+_080B07F8: .4byte gContestantTurnOrder\n\
+_080B07FC: .4byte 0x00007fff\n\
+_080B0800:\n\
+ adds r0, r5, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0xD\n\
+ bls _080B08EA\n\
+ movs r5, 0\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ b _080B08EA\n\
+_080B0818:\n\
+ cmp r7, 0x2\n\
+ beq _080B0820\n\
+ cmp r7, 0x4\n\
+ bne _080B0896\n\
+_080B0820:\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0x3\n\
+ bne _080B08EA\n\
+ movs r6, 0\n\
+ adds r0, r4, 0x5\n\
+ lsls r0, 4\n\
+ adds r0, 0x1\n\
+ ldr r2, _080B0854 @ =gUnknown_083CC5A4\n\
+ lsls r1, r4, 1\n\
+ adds r1, r2\n\
+ ldrh r3, [r1]\n\
+ movs r1, 0x3\n\
+ adds r2, r5, 0\n\
+ bl BlendPalette\n\
+ cmp r5, 0\n\
+ bne _080B0858\n\
+ mov r2, r8\n\
+ cmp r2, 0x2\n\
+ bne _080B0858\n\
+ mov r3, r9\n\
+ strh r6, [r3]\n\
+ b _080B08EA\n\
+ .align 2, 0\n\
+_080B0854: .4byte gUnknown_083CC5A4\n\
+_080B0858:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0xE\n\
+ bne _080B08EA\n\
+ movs r5, 0\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ cmp r7, 0x4\n\
+ bne _080B08EA\n\
+ cmp r0, 0x1\n\
+ bne _080B08EA\n\
+ adds r4, 0x9\n\
+ lsls r4, 4\n\
+ adds r0, r4, 0x2\n\
+ movs r1, 0x1\n\
+ movs r2, 0x4\n\
+ movs r3, 0\n\
+ bl BlendPalette\n\
+ adds r4, 0x5\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x4\n\
+ movs r3, 0\n\
+ bl BlendPalette\n\
+ b _080B08EA\n\
+_080B0896:\n\
+ cmp r7, 0x3\n\
+ bne _080B08EA\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0xC\n\
+ bne _080B08EA\n\
+ movs r6, 0\n\
+ adds r0, r4, 0x5\n\
+ lsls r0, 4\n\
+ adds r4, r0, 0x1\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x3\n\
+ adds r2, r5, 0\n\
+ movs r3, 0\n\
+ bl BlendPalette\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x5\n\
+ bne _080B08EA\n\
+ ldr r0, _080B0930 @ =gPlttBufferFaded\n\
+ lsls r1, r4, 1\n\
+ adds r0, r1, r0\n\
+ ldrh r2, [r0]\n\
+ ldr r0, _080B0934 @ =gPlttBufferUnfaded\n\
+ adds r1, r0\n\
+ ldrh r0, [r1]\n\
+ ldr r1, _080B0938 @ =0x040000d4\n\
+ str r2, [r1]\n\
+ str r0, [r1, 0x4]\n\
+ movs r0, 0x80\n\
+ lsls r0, 24\n\
+ orrs r7, r0\n\
+ str r7, [r1, 0x8]\n\
+ ldr r0, [r1, 0x8]\n\
+ ldr r1, [sp, 0x8]\n\
+ ldr r2, [sp, 0xC]\n\
+ adds r0, r1, r2\n\
+ add r0, r10\n\
+ strh r6, [r0]\n\
+_080B08EA:\n\
+ ldr r3, [sp, 0x10]\n\
+ lsls r0, r3, 1\n\
+ ldr r1, [sp, 0xC]\n\
+ adds r0, r1\n\
+ add r0, r10\n\
+ mov r2, r8\n\
+ strh r2, [r0]\n\
+ ldr r3, [sp, 0x14]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r1\n\
+ add r0, r10\n\
+ strh r5, [r0]\n\
+ ldr r1, [sp, 0x18]\n\
+ lsls r0, r1, 1\n\
+ ldr r2, [sp, 0xC]\n\
+ adds r0, r2\n\
+ add r0, r10\n\
+ strh r6, [r0]\n\
+ ldr r2, _080B093C @ =gTasks\n\
+_080B0910:\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x4]\n\
+ cmp r0, 0x3\n\
+ bhi _080B0920\n\
+ b _080B0774\n\
+_080B0920:\n\
+ movs r4, 0\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldr r1, [sp]\n\
+ adds r0, r3, r1\n\
+ lsls r1, r0, 3\n\
+ adds r2, 0x8\n\
+ adds r0, r1, r2\n\
+ b _080B0950\n\
+ .align 2, 0\n\
+_080B0930: .4byte gPlttBufferFaded\n\
+_080B0934: .4byte gPlttBufferUnfaded\n\
+_080B0938: .4byte 0x040000d4\n\
+_080B093C: .4byte gTasks\n\
+_080B0940:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bhi _080B0958\n\
+ lsls r0, r4, 3\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+_080B0950:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r0, r3]\n\
+ cmp r0, 0\n\
+ beq _080B0940\n\
+_080B0958:\n\
+ cmp r4, 0x4\n\
+ bne _080B0980\n\
+ movs r4, 0\n\
+ ldr r3, _080B0990 @ =gSharedMem + 0x19338\n\
+ movs r5, 0x3\n\
+ negs r5, r5\n\
+_080B0964:\n\
+ lsls r1, r4, 2\n\
+ adds r1, r3\n\
+ ldrb r2, [r1, 0x2]\n\
+ adds r0, r5, 0\n\
+ ands r0, r2\n\
+ strb r0, [r1, 0x2]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x3\n\
+ bls _080B0964\n\
+ ldr r0, [sp]\n\
+ bl DestroyTask\n\
+_080B0980:\n\
+ add sp, 0x20\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080B0990: .4byte gSharedMem + 0x19338\n\
+ .syntax divided\n");
+}
+#endif
+
+void unref_sub_80B0994(u8 a)
+{
+ if (a != 0)
+ sContest.unk1920A_2 = 1;
+}
+
+void StartStopFlashJudgeAttentionEye(u8 a)
+{
+ if (sContestantStatus[a].hasJudgesAttention)
+ sub_80B0368(a);
+ else
+ sub_80B03A8(a);
+}
+
+extern const struct CompressedSpriteSheet gUnknown_083CC4B4[];
+extern const struct SpritePalette gUnknown_083CC4D4[];
+extern const struct SpriteTemplate gSpriteTemplate_83CC53C[];
+
+u8 CreateContestantBoxBlinkSprites(u8 a)
+{
+ u8 r5 = gContestantTurnOrder[a] * 40 + 32;
+ u8 r8;
+ u8 r6;
+ volatile u8 zero;
+
+ LoadCompressedObjectPic(&gUnknown_083CC4B4[a]);
+ LoadSpritePalette(&gUnknown_083CC4D4[a]);
+ r8 = CreateSprite(&gSpriteTemplate_83CC53C[a], 184, r5, 29);
+ r6 = CreateSprite(&gSpriteTemplate_83CC53C[a], 248, r5, 29);
+ gSprites[r6].oam.tileNum += 64;
+
+ CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gContestantTurnOrder[a] * 5 * 64 + 0x26), (u8 *)(VRAM + 0x10000 + gSprites[r8].oam.tileNum * 32));
+ CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gContestantTurnOrder[a] * 5 * 64 + 0x36), (u8 *)(VRAM + 0x10000 + gSprites[r6].oam.tileNum * 32));
+
+ DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32), 0x300);
+
+ // What is this?
+ zero = 0;
+ zero = 0;
+
+ DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32), 0x300);
+
+ gSprites[r8].data[0] = r6;
+ gSprites[r6].data[0] = r8;
+ gSprites[r8].data[1] = a;
+ gSprites[r6].data[1] = a;
+ return r8;
+}
+
+void DestroyContestantBoxBlinkSprites(u8 spriteId)
+{
+ u8 spriteId2 = gSprites[spriteId].data[0];
+
+ FreeSpriteOamMatrix(&gSprites[spriteId2]);
+ DestroySprite(&gSprites[spriteId2]);
+ DestroySpriteAndFreeResources(&gSprites[spriteId]);
+}
+
+void SetBlendForContestantBoxBlink(void)
+{
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x0907;
+}
+
+void ResetBlendForContestantBoxBlink(void)
+{
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+}
+
+void BlinkContestantBox(u8 a, bool8 b)
+{
+ u8 r5;
+
+ SetBlendForContestantBoxBlink();
+ eContestGfxState[gSprites[a].data[1]].boxBlinking = 1;
+ r5 = gSprites[a].data[0];
+ StartSpriteAffineAnim(&gSprites[a], 1);
+ StartSpriteAffineAnim(&gSprites[r5], 1);
+ gSprites[a].callback = SpriteCB_BlinkContestantBox;
+ gSprites[r5].callback = SpriteCallbackDummy;
+ if (b == FALSE)
+ PlaySE(SE_CONTEST_MONS_TURN);
+ else
+ PlaySE(SE_PC_LOGIN);
+}
+
+void SpriteCB_BlinkContestantBox(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ u8 r1 = sprite->data[0];
+
+ if (gSprites[r1].affineAnimEnded)
+ {
+ sprite->invisible = TRUE;
+ gSprites[r1].invisible = TRUE;
+ sprite->callback = SpriteCB_EndBlinkContestantBox;
+ }
+ }
+}
+
+void SpriteCB_EndBlinkContestantBox(struct Sprite *sprite)
+{
+ eContestGfxState[sprite->data[1]].boxBlinking = 0;
+ DestroyContestantBoxBlinkSprites(sprite->data[0]);
+ ResetBlendForContestantBoxBlink();
+}
+
+void Unused_EndBlinkingState(u8 a, int unused)
+{
+ eContestGfxState[a].boxBlinking = 0;
+}
+
+void ContestDebugTogglePointTotal(void)
+{
+ eEnableContestDebugging ^= 1;
+ if (eEnableContestDebugging == 0)
+ {
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ Text_FillWindowRectDefPalette(
+ &gWindowTemplate_Contest_MoveDescription,
+ 0,
+ gUnknown_083CA308[i][0],
+ gUnknown_083CA308[i][1],
+ gUnknown_083CA310[i][0] + 5,
+ gUnknown_083CA310[i][1] + 1);
+ }
+ DrawContestantWindowText();
+ SwapMoveDescAndContestTilemaps();
+ }
+ else
+ {
+ ContestDebugDoPrint();
+ }
+}
+
+void ContestDebugDoPrint(void)
+{
+ u8 r5 = 0;
+ u8 sp8[8];
+
+ if (eEnableContestDebugging != 0)
+ {
+ u8 i;
+ s16 r2;
+
+ for (i = 0; i < 4; i++)
+ {
+ Text_FillWindowRectDefPalette(
+ &gWindowTemplate_Contest_MoveDescription,
+ 0,
+ gUnknown_083CA308[i][0],
+ gUnknown_083CA308[i][1],
+ gUnknown_083CA310[i][0] + 5,
+ gUnknown_083CA310[i][1] + 1);
+ }
+ for (i = 0; i < 4; i++)
+ {
+ r2 = sContestantStatus[i].pointTotal;
+ if (r2 < 0)
+ {
+ r2 = -r2;
+ sp8[0] = CHAR_HYPHEN;
+ r5++;
+ }
+ ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4);
+ Text_InitWindowAndPrintText(
+ &gWindowTemplate_Contest_MoveDescription,
+ sp8,
+ 592 + gContestantTurnOrder[i] * 22,
+ gUnknown_083CA310[gContestantTurnOrder[i]][0],
+ gUnknown_083CA310[gContestantTurnOrder[i]][1]);
+ r5 = 0;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ r2 = sContestantStatus[i].appeal;
+ if (r2 < 0)
+ {
+ r2 = -r2;
+ sp8[0] = CHAR_HYPHEN;
+ r5++;
+ }
+ ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4);
+ Text_InitWindowAndPrintText(
+ &gWindowTemplate_Contest_MoveDescription,
+ sp8,
+ 512 + gContestantTurnOrder[i] * 20,
+ gUnknown_083CA308[gContestantTurnOrder[i]][0],
+ gUnknown_083CA308[gContestantTurnOrder[i]][1]);
+ r5 = 0;
+ }
+ SwapMoveDescAndContestTilemaps();
+ }
+}
+
+void unref_sub_80B0EE8(s32 *a, s32 b)
+{
+ s32 i;
+ s32 j;
+
+ for (i = 0; i < b - 1; i++)
+ {
+ for (j = b - 1; j > i; j--)
+ {
+ if (a[j - 1] > a[j])
+ {
+ s32 temp = a[j];
+
+ a[j] = a[j - 1];
+ a[j - 1] = temp;
+ }
+ }
+ }
+}
+
+// something to do with contest NPC opponents, I think.
+void SortContestants(u8 a)
+{
+ u8 sp0[4];
+ u16 sp4[4] = {0};
+ s32 i;
+ s32 r2;
+ s32 r4;
+
+ // Generate a unique random number for each contestant.
+ for (i = 0; i < 4; i++)
+ {
+ sp4[i] = Random();
+
+ // Loop through all the numbers generated so far.
+ for (r2 = 0; r2 < i; r2++)
+ {
+ if (sp4[i] == sp4[r2])
+ {
+ // This number isn't unique; try generating again.
+ i--;
+ break;
+ }
+ }
+ }
+
+ if (a == 0)
+ {
+ // Order based on the results of the Conditions round using Insertion Sort.
+ // Use the randomOrdering to break ties.
+ for (i = 0; i < 4; i++)
+ {
+ // Append this contestant to the list.
+ gContestantTurnOrder[i] = i;
+
+ // Determine where the contestant should be ordered.
+ for (r4 = 0; r4 < i; r4++)
+ {
+ if (gContestMonRound1Points[gContestantTurnOrder[r4]] < gContestMonRound1Points[i]
+ || (gContestMonRound1Points[gContestantTurnOrder[r4]] == gContestMonRound1Points[i] && sp4[gContestantTurnOrder[r4]] < sp4[i]))
+ {
+ // Shift everything larger up to make room.
+ for (r2 = i; r2 > r4; r2--)
+ gContestantTurnOrder[r2] = gContestantTurnOrder[r2 - 1];
+
+ // Insert into the new spot.
+ gContestantTurnOrder[r4] = i;
+ break;
+ }
+ }
+
+ // This is redundant.
+ // Perhaps GF switched from true insertion sort to in-place insertion sort, and forgot to
+ // remove this check?
+ if (r4 == i)
+ gContestantTurnOrder[i] = i;
+ }
+
+ // Invert gContestantTurnOrder; above, it was a list of contestant IDs. Now it's a list of turn orderings.
+ //
+ // For example, if contestant 3 had the first turn, then `gContestantTurnOrder[1] = 3`. The turn is the index,
+ // the contestant is the data. After inverting the list, `gContestantTurnOrder[3] = 1`. The contestant is the index,
+ // and the turn is the data.
+ memcpy(sp0, gContestantTurnOrder, sizeof(sp0));
+ for (i = 0; i < 4; i++)
+ gContestantTurnOrder[sp0[i]] = i;
+ }
+ else
+ {
+ // Order contestants based on their ranking.
+ // If contestants have tied ranking, fill in the next available slot.
+ //
+ // Note that ranking is calculated so that shared places still take up a ranking
+ // space. A ranking like [1, 2, 2, 3] is not possible; it would be [1, 2, 2, 4]
+ // instead.
+ memset(sp0, 0xFF, sizeof(sp0));
+ for (i = 0; i < 4; i++)
+ {
+ u8 r2_2 = sContestantStatus[i].ranking;
+
+ while (1)
+ {
+ u8 *ptr = &sp0[r2_2];
+ if (*ptr == 0xFF)
+ {
+ *ptr = i;
+ gContestantTurnOrder[i] = r2_2;
+ break;
+ }
+ r2_2++;
+ }
+ }
+
+ // Randomize the order of contestants with tied rankings using Selection Sort.
+ //
+ // Look through the array for tied ranks, and use randomOrdering to break the tie.
+ // This ensures that contestants with the same rank will be randomly ordered. This
+ // uses an in-place slection sort, which involves a lot of extra swapping.
+ for (i = 0; i < 3; i++)
+ {
+ for (r4 = 3; r4 > i; r4--)
+ {
+ if (sContestantStatus[r4 - 1].ranking == sContestantStatus[r4].ranking && gContestantTurnOrder[r4 - 1] < gContestantTurnOrder[r4]
+ && sp4[r4 - 1] < sp4[r4])
+ {
+ u8 temp = gContestantTurnOrder[r4];
+
+ gContestantTurnOrder[r4] = gContestantTurnOrder[r4 - 1];
+ gContestantTurnOrder[r4 - 1] = temp;
+ }
+ }
+ }
+ }
+}
+
+void DrawContestantWindows(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ s32 windowId = i + 5;
+ LoadPalette(
+ eContestTempSave.cachedWindowPalettes[windowId], (gContestantTurnOrder[i] + 5) * 16, 32);
+ }
+ DrawContestantWindowText();
+}
+
+void CalculateAppealMoveImpact(u8 contestant)
+{
+ bool8 r8;
+ s32 i;
+
+ sContestantStatus[contestant].appeal = 0;
+ sContestantStatus[contestant].baseAppeal = 0;
+ r8 = ContestantCanUseTurn(contestant);
+ if (r8)
+ {
+ u16 move = sContestantStatus[contestant].currMove;
+ u8 effect = gContestMoves[move].effect;
+ u8 rnd;
+
+ sContestantStatus[contestant].moveCategory = gContestMoves[sContestantStatus[contestant].currMove].contestCategory;
+ if (sContestantStatus[contestant].currMove == sContestantStatus[contestant].prevMove && sContestantStatus[contestant].currMove != MOVE_NONE)
+ {
+ sContestantStatus[contestant].repeatedMove = TRUE;
+ sContestantStatus[contestant].moveRepeatCount++;
+ }
+ else
+ {
+ sContestantStatus[contestant].moveRepeatCount = 0;
+ }
+ sContestantStatus[contestant].baseAppeal = gContestEffects[effect].appeal;
+ sContestantStatus[contestant].appeal = gContestEffects[effect].appeal;
+ eContestAppealResults.jam = gContestEffects[effect].jam;
+ eContestAppealResults.jam2 = gContestEffects[effect].jam;
+ eContestAppealResults.contestant = contestant;
+ for (i = 0; i < 4; i++)
+ {
+ sContestantStatus[i].jam = 0;
+ eContestAppealResults.unnervedPokes[i] = 0;
+ }
+ if (sContestantStatus[contestant].hasJudgesAttention && AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove) == 0)
+ sContestantStatus[contestant].hasJudgesAttention = 0;
+ gContestEffectFuncs[effect]();
+ if (sContestantStatus[contestant].conditionMod == 1)
+ sContestantStatus[contestant].appeal += sContestantStatus[contestant].condition - 10;
+ else if (sContestantStatus[contestant].appealTripleCondition)
+ sContestantStatus[contestant].appeal += sContestantStatus[contestant].condition * 3;
+ else
+ sContestantStatus[contestant].appeal += sContestantStatus[contestant].condition;
+ sContestantStatus[contestant].completedCombo = 0;
+ sContestantStatus[contestant].usedComboMove = 0;
+ if (IsContestantAllowedToCombo(contestant))
+ {
+ u8 completedCombo = AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove);
+
+ if (completedCombo != 0 && sContestantStatus[contestant].hasJudgesAttention)
+ {
+ sContestantStatus[contestant].completedCombo = completedCombo;
+ sContestantStatus[contestant].usedComboMove = 1;
+ sContestantStatus[contestant].hasJudgesAttention = 0;
+ sContestantStatus[contestant].comboAppealBonus = sContestantStatus[contestant].baseAppeal * sContestantStatus[contestant].completedCombo;
+ sContestantStatus[contestant].completedComboFlag = 1;
+ }
+ else
+ {
+ if (gContestMoves[sContestantStatus[contestant].currMove].comboStarterId != 0)
+ {
+ sContestantStatus[contestant].hasJudgesAttention = 1;
+ sContestantStatus[contestant].usedComboMove = 1;
+ }
+ else
+ {
+ sContestantStatus[contestant].hasJudgesAttention = 0;
+ }
+ }
+ }
+ if (sContestantStatus[contestant].repeatedMove)
+ sContestantStatus[contestant].repeatJam = (sContestantStatus[contestant].moveRepeatCount + 1) * 10;
+ if (sContestantStatus[contestant].nervous)
+ {
+ sContestantStatus[contestant].hasJudgesAttention = 0;
+ sContestantStatus[contestant].appeal = 0;
+ sContestantStatus[contestant].baseAppeal = 0;
+ }
+ eContestExcitement.moveExcitement = Contest_GetMoveExcitement(sContestantStatus[contestant].currMove);
+ if (sContestantStatus[contestant].overrideCategoryExcitementMod)
+ eContestExcitement.moveExcitement = 1;
+ if (eContestExcitement.moveExcitement > 0)
+ {
+ if (sContest.applauseLevel + eContestExcitement.moveExcitement > 4)
+ eContestExcitement.excitementAppealBonus = 60;
+ else
+ eContestExcitement.excitementAppealBonus = 10;
+ }
+ else
+ {
+ eContestExcitement.excitementAppealBonus = 0;
+ }
+
+ rnd = Random() % 3;
+ for (i = 0; i < 4; i++)
+ {
+ if (i != contestant)
+ {
+ if (rnd == 0)
+ break;
+ rnd--;
+ }
+ }
+ sContestantStatus[contestant].contestantAnimTarget = i;
+ }
+}
+
+void SetContestantEffectStringID(u8 a, u8 b)
+{
+ sContestantStatus[a].effectStringId = b;
+}
+
+void SetContestantEffectStringID2(u8 a, u8 b)
+{
+ sContestantStatus[a].effectStringId2 = b;
+}
+
+void SetStartledString(u8 contestant, u8 jam)
+{
+ if (jam >= 60)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_TRIPPED_OVER);
+ else if (jam >= 40)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_LEAPT_UP);
+ else if (jam >= 30)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_UTTER_CRY);
+ else if (jam >= 20)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_TURNED_BACK);
+ else if (jam >= 10)
+ SetContestantEffectStringID(contestant, CONTEST_STRING_LOOKED_DOWN);
+}
+
+void PrintAppealMoveResultText(u8 contestant, u8 stringId)
+{
+ StringCopy(gStringVar1, gContestMons[contestant].nickname);
+ StringCopy(gStringVar2, gMoveNames[sContestantStatus[contestant].currMove]);
+ if (gContestMoves[sContestantStatus[eContestAppealResults.contestant].currMove].contestCategory == CONTEST_CATEGORY_COOL)
+ StringCopy(gStringVar3, gText_Contest_Shyness);
+ else if (gContestMoves[sContestantStatus[eContestAppealResults.contestant].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY)
+ StringCopy(gStringVar3, gText_Contest_Anxiety);
+ else if (gContestMoves[sContestantStatus[eContestAppealResults.contestant].currMove].contestCategory == CONTEST_CATEGORY_CUTE)
+ StringCopy(gStringVar3, gText_Contest_Laziness);
+ else if (gContestMoves[sContestantStatus[eContestAppealResults.contestant].currMove].contestCategory == CONTEST_CATEGORY_SMART)
+ StringCopy(gStringVar3, gText_Contest_Hesitancy);
+ else
+ StringCopy(gStringVar3, gText_Contest_Fear);
+ StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[stringId]);
+ ContestClearGeneralTextWindow();
+ Contest_StartTextPrinter(&gMenuWindow, gStringVar4, 776, 1, 15);
+}
+
+void MakeContestantNervous(u8 p)
+{
+ sContestantStatus[p].nervous = 1;
+ sContestantStatus[p].currMove = MOVE_NONE;
+}
+
+// This function calculates the new turn order for the next round. The
+// algorithm first checks for explicit turn assignments in the
+// ContestantStatus::nextTurnOrder field of each contestant. The remaining
+// turns are assigned such that the turn order will reverse.
+//
+// For example, if no pokemon have a defined nextTurnOrder, then the 4th
+// will become 1st, the 3rd will become 2nd, etc.
+//
+// Note: This function assumes that multiple pokemon cannot have the same
+// nextTurnOrder value.
+void ApplyNextTurnOrder(void)
+{
+ u8 nextContestant = 0;
+ s32 i;
+ s32 j;
+ u8 newTurnOrder[4];
+ bool8 isContestantOrdered[4];
+
+ for (i = 0; i < 4; i++)
+ {
+ newTurnOrder[i] = gContestantTurnOrder[i];
+ isContestantOrdered[i] = FALSE;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (sContestantStatus[j].nextTurnOrder == i)
+ {
+ newTurnOrder[j] = i;
+ isContestantOrdered[j] = TRUE;
+ break;
+ }
+ }
+ if (j == 4)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (isContestantOrdered[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF)
+ {
+ nextContestant = j;
+ j++;
+ break;
+ }
+ }
+ for (; j < 4; j++)
+ {
+ if (isContestantOrdered[j] == 0 && sContestantStatus[j].nextTurnOrder == 0xFF
+ && gContestantTurnOrder[nextContestant] > gContestantTurnOrder[j])
+ nextContestant = j;
+ }
+ newTurnOrder[nextContestant] = i;
+ isContestantOrdered[nextContestant] = 1;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ eContestAppealResults.turnOrder[i] = newTurnOrder[i];
+ sContestantStatus[i].nextTurnOrder = 0xFF;
+ sContestantStatus[i].turnOrderMod = 0;
+ gContestantTurnOrder[i] = newTurnOrder[i];
+ }
+}
+
+void SpriteCB_JudgeSpeechBubble(struct Sprite *sprite)
+{
+ if (sprite->data[1]++ > 84)
+ {
+ sprite->data[1] = 0;
+ sprite->invisible = TRUE;
+ sprite->callback = SpriteCallbackDummy;
+ sContest.waitForJudgeSpeechBubble = 0;
+ }
+}
+
+void DoJudgeSpeechBubble(u8 a)
+{
+ u8 spriteId = sContest.judgeSpeechBubbleSpriteId;
+
+ switch (a)
+ {
+ case 0:
+ case 1:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0];
+ PlaySE(SE_FAILURE);
+ break;
+ case 2:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 4;
+ PlaySE(SE_SUCCESS);
+ break;
+ case 3:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 8;
+ PlaySE(SE_SUCCESS);
+ break;
+ case 4:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12;
+ PlaySE(SE_WARP_IN);
+ break;
+ case 5: // exactly the same as case 4
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12;
+ PlaySE(SE_WARP_IN);
+ break;
+ case 6:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 16;
+ PlaySE(SE_WARP_IN);
+ break;
+ case 8:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 24;
+ PlaySE(SE_M_HEAL_BELL);
+ break;
+ case 7:
+ default:
+ gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 20;
+ PlaySE(SE_WARP_IN);
+ break;
+ }
+ gSprites[spriteId].data[1] = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gSprites[spriteId].callback = SpriteCB_JudgeSpeechBubble;
+ sContest.waitForJudgeSpeechBubble = 1;
+}
+
+void UpdateApplauseMeter(void)
+{
+ s32 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ const u8 *src;
+
+ if (i < sContest.applauseLevel)
+ src = gContestApplauseMeterGfx + 64;
+ else
+ src = gContestApplauseMeterGfx;
+ CpuCopy32(src, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 17 + i) * 32), 32);
+ CpuCopy32(src + 32, (void *)(VRAM + 0x10000 + (gSprites[sContest.applauseMeterSpriteId].oam.tileNum + 25 + i) * 32), 32);
+ if (sContest.applauseLevel > 4)
+ StartApplauseOverflowAnimation();
+ }
+}
+
+UNUSED
+void unref_sub_80B19D0(void)
+{
+ u8 str[20];
+ StringCopy(str, gUnknown_083CC2EC);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, str, 680, 0, 0);
+}
+
+s8 Contest_GetMoveExcitement(u16 move)
+{
+ return gContestExcitementTable[gSpecialVar_ContestCategory][gContestMoves[move].contestCategory];
+}
+
+// Launches crowd movement task, maybe
+u8 StartApplauseOverflowAnimation(void)
+{
+ u8 taskId = CreateTask(Task_ApplauseOverflowAnimation, 10);
+
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[2] = IndexOfSpritePaletteTag(0x0ABE2);
+ return taskId;
+}
+
+void Task_ApplauseOverflowAnimation(u8 taskId)
+{
+ if (++gTasks[taskId].data[0] == 1)
+ {
+ gTasks[taskId].data[0] = 0;
+ if (gTasks[taskId].data[3] == 0)
+ gTasks[taskId].data[4]++;
+ else
+ gTasks[taskId].data[4]--;
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, gTasks[taskId].data[4], RGB(31, 31, 31));
+ if (gTasks[taskId].data[4] == 0 || gTasks[taskId].data[4] == 16)
+ {
+ gTasks[taskId].data[3] ^= 1;
+ if (sContest.applauseLevel < 5)
+ {
+ BlendPalette(264 + gTasks[taskId].data[2] * 16, 1, 0, RGB(31, 0, 0));
+ DestroyTask(taskId);
+ }
+ }
+ }
+}
+
+void SlideApplauseMeterIn(void)
+{
+ CreateTask(Task_SlideApplauseMeterIn, 10);
+ gSprites[sContest.applauseMeterSpriteId].x2 = -70;
+ gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
+ sContest.applauseMeterIsMoving = 1;
+}
+
+void Task_SlideApplauseMeterIn(u8 taskId)
+{
+ struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
+
+ gTasks[taskId].data[10] += 1664;
+ sprite->x2 += gTasks[taskId].data[10] >> 8;
+ gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
+ if (sprite->x2 > 0)
+ sprite->x2 = 0;
+ if (sprite->x2 == 0)
+ {
+ sContest.applauseMeterIsMoving = 0;
+ DestroyTask(taskId);
+ }
+}
+
+void SlideApplauseMeterOut(void)
+{
+ if (gSprites[sContest.applauseMeterSpriteId].invisible == TRUE)
+ {
+ sContest.applauseMeterIsMoving = 0;
+ }
+ else
+ {
+ CreateTask(Task_SlideApplauseMeterOut, 10);
+ gSprites[sContest.applauseMeterSpriteId].x2 = 0;
+ sContest.applauseMeterIsMoving = 1;
+ }
+}
+
+void Task_SlideApplauseMeterOut(u8 taskId)
+{
+ struct Sprite *sprite = &gSprites[sContest.applauseMeterSpriteId];
+
+ gTasks[taskId].data[10] += 1664;
+ sprite->x2 -= gTasks[taskId].data[10] >> 8;
+ gTasks[taskId].data[10] = gTasks[taskId].data[10] & 0xFF;
+ if (sprite->x2 < -70)
+ sprite->x2 = -70;
+ if (sprite->x2 == -70)
+ {
+ sprite->invisible = TRUE;
+ sContest.applauseMeterIsMoving = 0;
+ DestroyTask(taskId);
+ }
+}
+
+void ShowAndUpdateApplauseMeter(s8 a)
+{
+ u8 taskId = CreateTask(Task_ShowAndUpdateApplauseMeter, 5);
+
+ gTasks[taskId].data[0] = a;
+ sContest.isShowingApplauseMeter = 1;
+}
+
+void Task_ShowAndUpdateApplauseMeter(u8 taskId)
+{
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ SlideApplauseMeterIn();
+ gTasks[taskId].data[10]++;
+ break;
+ case 1:
+ if (!sContest.applauseMeterIsMoving)
+ {
+ nullsub_18(gTasks[taskId].data[0]);
+ gTasks[taskId].data[10]++;
+ }
+ break;
+ case 2:
+ if (gTasks[taskId].data[11]++ > 20)
+ {
+ gTasks[taskId].data[11] = 0;
+ UpdateApplauseMeter();
+ sContest.isShowingApplauseMeter = 0;
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+UNUSED
+void HideApplauseMeterNoAnim(void)
+{
+ gSprites[sContest.applauseMeterSpriteId].x2 = 0;
+ gSprites[sContest.applauseMeterSpriteId].invisible = FALSE;
+}
+
+UNUSED
+void ShowApplauseMeterNoAnim(void)
+{
+ gSprites[sContest.applauseMeterSpriteId].invisible = TRUE;
+}
+
+void AnimateAudience(void)
+{
+ CreateTask(Task_AnimateAudience, 15);
+ sContest.animatingAudience = 1;
+}
+
+void Task_AnimateAudience(u8 taskId)
+{
+ if (gTasks[taskId].data[10]++ > 6)
+ {
+#ifndef NONMATCHING
+ register struct Task *task asm("r0");
+ register u32 r4 asm("r4") = taskId * 4;
+#endif
+
+ gTasks[taskId].data[10] = 0;
+ if (gTasks[taskId].data[11] == 0)
+ {
+ DmaCopy32Defvars(3, eUnzippedContestAudience_Gfx + 0x1000, (void *)(VRAM + 0x2000), 0x1000);
+ }
+ else
+ {
+ DmaCopy32Defvars(3, eUnzippedContestAudience_Gfx, (void *)(VRAM + 0x2000), 0x1000);
+ gTasks[taskId].data[12]++;
+ }
+
+#ifdef NONMATCHING
+ gTasks[taskId].data[11] ^= 1;
+ if (gTasks[taskId].data[12] == 9)
+#else
+ // Why won't this match the normal way?
+ asm("add %0, %1, #0\n\t"
+ "add %0, %3\n\t"
+ "lsl %0, #3\n\t"
+ "add %0, %2\n\t"
+ : "=r"(task):"r"(r4),"r"(gTasks),"r"(taskId));
+
+ task->data[11] ^= 1;
+ if (task->data[12] == 9)
+#endif
+ {
+ sContest.animatingAudience = 0;
+ DestroyTask(taskId);
+ }
+ }
+}
+
+#define tBlendColor data[0]
+#define tBlendCoeff data[1]
+
+void BlendAudienceBackground(s8 excitementDir, s8 blendDir)
+{
+ u8 taskId = CreateTask(Task_BlendAudienceBackground, 10);
+ u16 blendColor;
+ u8 blendCoeff;
+ u8 targetBlendCoeff;
+
+ if (excitementDir > 0)
+ {
+ blendColor = RGB(30, 27, 8);
+ if (blendDir > 0)
+ {
+ blendCoeff = 0;
+ targetBlendCoeff = sContest.applauseLevel * 3;
+ }
+ else
+ {
+ blendCoeff = sContest.applauseLevel * 3;
+ targetBlendCoeff = 0;
+ }
+ }
+ else
+ {
+ blendColor = 0;
+ if (blendDir > 0)
+ {
+ blendCoeff = 0;
+ targetBlendCoeff = 12;
+ }
+ else
+ {
+ blendCoeff = 12;
+ targetBlendCoeff = 0;
+ }
+ }
+ gTasks[taskId].tBlendColor = blendColor;
+ gTasks[taskId].tBlendCoeff = blendCoeff;
+ gTasks[taskId].data[2] = blendDir;
+ gTasks[taskId].data[3] = targetBlendCoeff;
+ // Because this isn't set to TRUE here, the main task doesn't wait for the color blend
+ // Unclear if this was intentional or not (perhaps waiting added too much delay). In any case it does nothing now
+ sContest.waitForAudienceBlend = 0;
+}
+
+void Task_BlendAudienceBackground(u8 taskId)
+{
+ if (gTasks[taskId].data[10]++ >= 0)
+ {
+ gTasks[taskId].data[10] = 0;
+ if (gTasks[taskId].data[2] > 0)
+ gTasks[taskId].tBlendCoeff++;
+ else
+ gTasks[taskId].tBlendCoeff--;
+ BlendPalette(17, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor);
+ BlendPalette(26, 1, gTasks[taskId].tBlendCoeff, gTasks[taskId].tBlendColor);
+ if (gTasks[taskId].tBlendCoeff == gTasks[taskId].data[3])
+ {
+ DestroyTask(taskId);
+ sContest.waitForAudienceBlend = 0;
+ }
+ }
+}
+
+#undef tBlendColor
+#undef tBlendCoeff
+
+void ShowHideNextTurnGfx(bool8 a)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sContestantStatus[i].turnOrderMod != 0 && a)
+ {
+ CpuCopy32(
+ GetTurnOrderNumberGfx(i),
+ (void *)(VRAM + 0x10000 + (gSprites[eContestGfxState[i].nextTurnSpriteId].oam.tileNum + 5) * 32),
+ 64);
+ gSprites[eContestGfxState[i].nextTurnSpriteId].y = gUnknown_083CA33C[gContestantTurnOrder[i]];
+ gSprites[eContestGfxState[i].nextTurnSpriteId].invisible = FALSE;
+ }
+ else
+ {
+ gSprites[eContestGfxState[i].nextTurnSpriteId].invisible = TRUE;
+ }
+ }
+}
+
+const u8 *GetTurnOrderNumberGfx(u8 contestant)
+{
+ if (sContestantStatus[contestant].turnOrderMod != 1)
+ return gContestNextTurnRandomGfx;
+ else
+ return gContestNextTurnNumbersGfx + sContestantStatus[contestant].nextTurnOrder * 64;
+}
+
+void DrawUnnervedSymbols(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (eContestAppealResults.unnervedPokes[i] != 0 && !Contest_IsMonsTurnDisabled(i))
+ {
+ u8 r4 = gContestantTurnOrder[i] * 5 + 2;
+ u16 r0 = GetStatusSymbolTileOffset(i, 3);
+
+ *(u16 *)(VRAM + 0xC000 + r4 * 64 + 0x28) = r0;
+ *(u16 *)(VRAM + 0xC000 + r4 * 64 + 0x2A) = r0 + 1;
+ *(u16 *)(VRAM + 0xC000 + (r4 + 1) * 64 + 0x28) = r0 + 16;
+ *(u16 *)(VRAM + 0xC000 + (r4 + 1) * 64 + 0x2A) = r0 + 17;
+ PlaySE(SE_CONTEST_ICON_CHANGE);
+ }
+ }
+}
+
+bool8 IsContestantAllowedToCombo(u8 contestant)
+{
+ if (sContestantStatus[contestant].repeatedMove || sContestantStatus[contestant].nervous)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void SetBgForCurtainDrop(void)
+{
+ s32 i;
+
+ ((vBgCnt *)&REG_BG1CNT)->priority = 0;
+ ((vBgCnt *)&REG_BG1CNT)->screenSize = 1;
+ ((vBgCnt *)&REG_BG1CNT)->areaOverflowMode = 0;
+
+ gBattle_BG1_X = DISPLAY_WIDTH;
+ gBattle_BG1_Y = DISPLAY_HEIGHT;
+ REG_BG1HOFS = DISPLAY_WIDTH;
+ REG_BG1VOFS = DISPLAY_HEIGHT;
+
+ DmaClear32(3, (void *)(VRAM + 0xF000), 0x1000);
+ LZDecompressVram(gUnknown_08D17C3C, (void *)(VRAM + 0xF000));
+
+ ((vBgCnt *)&REG_BG1CNT)->charBaseBlock = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].oam.priority = 1;
+ gSprites[eContestGfxState[i].nextTurnSpriteId].oam.priority = 1;
+ }
+
+ ((vBgCnt *)&REG_BG2CNT)->priority = 1;
+ ((vBgCnt *)&REG_BG0CNT)->priority = 1;
+ ((vBgCnt *)&REG_BG1CNT)->screenSize = 2;
+}
+
+void UpdateContestantBoxOrder(void)
+{
+ s32 i;
+
+ DmaClearLarge32(3, (void *)(VRAM + 0x8000), 0x2000, 0x1000);
+ DmaClear32(3, (void *)(VRAM + 0xF000), 0x1000);
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+
+ ((vBgCnt *)&REG_BG1CNT)->priority = 1;
+ ((vBgCnt *)&REG_BG1CNT)->screenSize = 0;
+ ((vBgCnt *)&REG_BG1CNT)->areaOverflowMode = 0;
+ ((vBgCnt *)&REG_BG1CNT)->charBaseBlock = 2;
+
+ for (i = 0; i < 4; i++)
+ {
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].oam.priority = 0;
+ gSprites[eContestGfxState[i].nextTurnSpriteId].oam.priority = 0;
+ }
+}
+
+void Task_StartDropCurtainAtRoundEnd(u8 taskId)
+{
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = DISPLAY_HEIGHT;
+ PlaySE12WithPanning(SE_CONTEST_CURTAIN_FALL, 0);
+ gTasks[taskId].func = Task_UpdateCurtainDropAtRoundEnd;
+}
+
+void Task_UpdateCurtainDropAtRoundEnd(u8 taskId)
+{
+ if ((s16)(gBattle_BG1_Y -= 7) < 0)
+ gBattle_BG1_Y = 0;
+ if (gBattle_BG1_Y == 0) // Why cast?
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = Task_ResetForNextRound;
+ }
+}
+
+void Task_ResetForNextRound(u8 taskId)
+{
+ s32 i;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ for (i = 0; i < 4; i++)
+ sContest.prevTurnOrder[i] = gContestantTurnOrder[i];
+ FillContestantWindowBgs();
+ UpdateBlendTaskContestantsData();
+ DrawConditionStars();
+ DrawContestantWindows();
+ ShowHideNextTurnGfx(TRUE);
+ UpdateSliderHeartSpriteYPositions();
+ gTasks[taskId].data[0] = 1;
+ break;
+ case 1:
+ if (gIsLinkContest & 1)
+ {
+ u8 taskId2;
+
+ sContest.waitForLink = 1;
+ if (IsPlayerLinkLeader())
+ SetContestantStatusesForNextRound();
+ taskId2 = CreateTask(Task_LinkContest_CommunicateAppealsState, 0);
+ SetTaskFuncWithFollowupFunc(
+ taskId2, Task_LinkContest_CommunicateAppealsState, Task_EndWaitForLink);
+ ContestPrintLinkStandby();
+ gTasks[taskId].data[0] = 2;
+ }
+ else
+ {
+ SetContestantStatusesForNextRound();
+ gTasks[taskId].data[0] = 3;
+ }
+ break;
+ case 2:
+ if (!sContest.waitForLink)
+ gTasks[taskId].data[0] = 3;
+ break;
+ case 3:
+ DrawStatusSymbols();
+ SwapMoveDescAndContestTilemaps();
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = Task_WaitRaiseCurtainAtRoundEnd;
+ break;
+ }
+}
+
+void Task_UpdateRaiseCurtainAtRoundEnd(u8 taskId)
+{
+ if ((s16)(gBattle_BG1_Y += 7) > DISPLAY_HEIGHT)
+ gTasks[taskId].func = Task_UpdateContestantBoxOrder;
+}
+
+void Task_WaitRaiseCurtainAtRoundEnd(u8 taskId)
+{
+ if (gTasks[taskId].data[2] < 10)
+ {
+ gTasks[taskId].data[2]++;
+ }
+ else
+ {
+ if (gTasks[taskId].data[1] == 0)
+ {
+ if (gTasks[taskId].data[0] == 16)
+ gTasks[taskId].data[1]++;
+ else
+ gTasks[taskId].data[0]++;
+ }
+ else
+ {
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = Task_StartRaiseCurtainAtRoundEnd;
+ }
+ else
+ {
+ gTasks[taskId].data[0]--;
+ }
+ }
+ }
+}
+
+void Task_StartRaiseCurtainAtRoundEnd(u8 taskId)
+{
+ if (gTasks[taskId].data[2] < 10)
+ {
+ gTasks[taskId].data[2]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 0;
+ PlaySE12WithPanning(SE_CONTEST_CURTAIN_RISE, 0);
+ gTasks[taskId].func = Task_UpdateRaiseCurtainAtRoundEnd;
+ }
+}
+
+void AnimateSliderHearts(u8 animId)
+{
+ s32 i;
+ u8 taskId;
+
+ for (i = 0; i < 4; i++)
+ {
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].oam.matrixNum = AllocOamMatrix();
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].oam.affineMode = 1;
+ StartSpriteAffineAnim(&gSprites[eContestGfxState[i].sliderHeartSpriteId], animId);
+ if (animId == 2)
+ {
+ AnimateSprite(&gSprites[eContestGfxState[i].sliderHeartSpriteId]);
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].invisible = FALSE;
+ }
+ }
+ taskId = CreateTask(Task_WaitForSliderHeartAnim, 5);
+ gTasks[taskId].data[0] = animId;
+ sContest.sliderHeartsAnimating = 1;
+}
+
+void Task_WaitForSliderHeartAnim(u8 taskId)
+{
+ s32 i;
+
+ if (gSprites[eContestGfxState[0].sliderHeartSpriteId].affineAnimEnded)
+ {
+ if ((u8)gTasks[taskId].data[0] == 1)
+ {
+ for (i = 0; i < 4; i++)
+ gSprites[eContestGfxState[i].sliderHeartSpriteId].invisible = TRUE;
+ }
+ for (i = 0; i < 4; i++)
+ FreeSpriteOamMatrix(&gSprites[eContestGfxState[i].sliderHeartSpriteId]);
+ sContest.sliderHeartsAnimating = 0;
+ DestroyTask(taskId);
+ }
+}
+
+u16 SanitizeMove(u16 move)
+{
+ if (move >= NUM_MOVES)
+ move = MOVE_POUND;
+ return move;
+}
+
+u16 SanitizeSpecies(u16 species)
+{
+ if (species >= NUM_SPECIES)
+ species = SPECIES_NONE;
+ return species;
+}
+
+void SetMoveSpecificAnimData(u8 contestant)
+{
+ s32 i;
+ u16 move = SanitizeMove(sContestantStatus[contestant].currMove);
+ u16 species = SanitizeSpecies(gContestMons[contestant].species);
+ u8 r5_2;
+
+ memset(&gContestResources__moveAnim, 0, sizeof(gContestResources__moveAnim));
+ ClearBattleAnimationVars();
+ for (i = 0; i < 4; i++)
+ gBattleMonForms[i] = 0;
+ switch (move)
+ {
+ case MOVE_CURSE:
+ if (gBaseStats[species].type1 == TYPE_GHOST || gBaseStats[species].type2 == TYPE_GHOST)
+ gAnimMoveTurn = 0;
+ else
+ gAnimMoveTurn = 1;
+ break;
+ case MOVE_TRANSFORM:
+ case MOVE_ROLE_PLAY:
+ r5_2 = sContestantStatus[contestant].contestantAnimTarget;
+ gContestResources__moveAnim.targetSpecies = SanitizeSpecies(gContestMons[r5_2].species);
+ gContestResources__moveAnim.targetPersonality = gContestMons[r5_2].personality;
+ gContestResources__moveAnim.hasTargetAnim = 1;
+ break;
+ case MOVE_RETURN:
+ gAnimFriendship = 0xFF;
+ break;
+ case MOVE_FRUSTRATION:
+ gAnimFriendship = 0;
+ break;
+ case MOVE_SOLAR_BEAM:
+ case MOVE_RAZOR_WIND:
+ case MOVE_SKULL_BASH:
+ case MOVE_SKY_ATTACK:
+ if (sContest.moveAnimTurnCount == 0)
+ {
+ sContest.moveAnimTurnCount = 2;
+ gAnimMoveTurn = 0;
+ }
+ else
+ {
+ gAnimMoveTurn = 1;
+ }
+ break;
+ }
+ SetBattleTargetSpritePosition();
+}
+
+void ClearMoveAnimData(UNUSED u8 contestant)
+{
+ memset(&gContestResources__moveAnim, 0, sizeof(gContestResources__moveAnim));
+ if (sContest.moveAnimTurnCount != 0)
+ sContest.moveAnimTurnCount--;
+}
+
+void SetMoveAnimAttackerData(u8 contestant)
+{
+ gContestResources__moveAnim.contestant = contestant;
+ gContestResources__moveAnim.species = SanitizeSpecies(gContestMons[contestant].species);
+ gContestResources__moveAnim.personality = gContestMons[contestant].personality;
+ gContestResources__moveAnim.otId = gContestMons[contestant].otId;
+}
+
+void CreateInvisibleBattleTargetSprite(void)
+{
+ gBattlerSpriteIds[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ InitSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattlerTarget]]);
+ SetBattleTargetSpritePosition();
+}
+
+void SetBattleTargetSpritePosition(void)
+{
+ struct Sprite *sprite = &gSprites[gBattlerSpriteIds[3]];
+
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ sprite->x = GetBattlerSpriteCoord(3, 0);
+ sprite->y = GetBattlerSpriteCoord(3, 1);
+ sprite->invisible = TRUE;
+}
+
+void SelectContestMoveBankTarget(u16 move)
+{
+ switch (gBattleMoves[move].target)
+ {
+ case TARGET_UNK2:
+ case TARGET_USER:
+ gBattlerTarget = 2;
+ break;
+ case TARGET_SELECTED_POKEMON:
+ case TARGET_RANDOM:
+ case TARGET_BOTH_ENEMIES:
+ case TARGET_ALL_EXCEPT_USER:
+ default:
+ gBattlerTarget = 3;
+ break;
+ }
+}
+
+bool8 Contest_SaveWinner(u8 rank)
+{
+ s32 i;
+ u8 captionId = Random() % 3;
+
+ // Get the index of the winner among the contestants
+ for (i = 0; i < 3; i++)
+ {
+ if (gContestFinalStandings[i] == 0)
+ break;
+ }
+
+ // Exit if attempting to save a Pokémon other than the player's to the museum
+ if (rank == CONTEST_SAVE_FOR_MUSEUM && i != gContestPlayerMonIndex)
+ return FALSE;
+
+ // Adjust the random painting caption depending on the category
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ captionId += 0;
+ break;
+ case CONTEST_CATEGORY_BEAUTY:
+ captionId += 3;
+ break;
+ case CONTEST_CATEGORY_CUTE:
+ captionId += 6;
+ break;
+ case CONTEST_CATEGORY_SMART:
+ captionId += 9;
+ break;
+ case CONTEST_CATEGORY_TOUGH:
+ captionId += 12;
+ break;
+ }
+ if (rank != CONTEST_SAVE_FOR_ARTIST)
+ {
+ // Save winner in the saveblock
+ // Used to save any winner for the Contest Hall or the Museum
+ // but excludes the temporary save used by the artist
+ u8 saveIdx = GetContestWinnerSaveIdx(rank, TRUE);
+
+ gSaveBlock1.contestWinners[saveIdx].personality = gContestMons[i].personality;
+ gSaveBlock1.contestWinners[saveIdx].species = gContestMons[i].species;
+ gSaveBlock1.contestWinners[saveIdx].otId = gContestMons[i].otId;
+ StringCopy(gSaveBlock1.contestWinners[saveIdx].nickname, gContestMons[i].nickname);
+ StringCopy(gSaveBlock1.contestWinners[saveIdx].trainerName, gContestMons[i].trainerName);
+ if (rank != CONTEST_SAVE_FOR_MUSEUM)
+ gSaveBlock1.contestWinners[saveIdx].contestCategory = gSpecialVar_ContestCategory;
+ else
+ gSaveBlock1.contestWinners[saveIdx].contestCategory = captionId;
+ }
+ else
+ {
+ eCurContestWinner.personality = gContestMons[i].personality;
+ eCurContestWinner.otId = gContestMons[i].otId;
+ eCurContestWinner.species = gContestMons[i].species;
+ StringCopy(eCurContestWinner.nickname, gContestMons[i].nickname);
+ if (gIsLinkContest & 1)
+ StringCopy(eCurContestWinner.trainerName, gLinkPlayers[i].name);
+ else
+ StringCopy(eCurContestWinner.trainerName, gContestMons[i].trainerName);
+ eCurContestWinner.contestCategory = captionId;
+ }
+ return TRUE;
+}
+
+// Rank is either a regular contest rank (for saving winners to show in the Contest Hall)
+// Or one of two special IDs listed below (for saving winners to show in Museum, or from the artist)
+// If just retrieving the index where the winner *would* go, shift is FALSE
+// If actually preparing to insert the winner into the saveblock, shift is TRUE
+u8 GetContestWinnerSaveIdx(u8 rank, u8 shift)
+{
+ s32 i;
+
+ switch (rank)
+ {
+ case CONTEST_RANK_NORMAL:
+ case CONTEST_RANK_SUPER:
+ return rank;
+ case CONTEST_RANK_HYPER:
+ if (shift)
+ {
+ for (i = CONTEST_WINNER_HYPER_3 - 1; i > CONTEST_WINNER_HYPER_1 - 1; i--)
+ memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner));
+ }
+ return CONTEST_WINNER_HYPER_1 - 1;
+ case CONTEST_RANK_MASTER:
+ if (shift)
+ {
+ for (i = CONTEST_WINNER_MASTER_3 - 1; i > CONTEST_WINNER_MASTER_1 - 1; i--)
+ memcpy(&gSaveBlock1.contestWinners[i], &gSaveBlock1.contestWinners[i - 1], sizeof(struct ContestWinner));
+ }
+ return CONTEST_WINNER_MASTER_1 - 1;
+ default:
+// case CONTEST_SAVE_FOR_MUSEUM:
+// case CONTEST_SAVE_FOR_ARTIST:
+ switch (gSpecialVar_ContestCategory)
+ {
+ case CONTEST_CATEGORY_COOL:
+ return CONTEST_WINNER_MUSEUM_COOL - 1;
+ case CONTEST_CATEGORY_BEAUTY:
+ return CONTEST_WINNER_MUSEUM_BEAUTY - 1;
+ case CONTEST_CATEGORY_CUTE:
+ return CONTEST_WINNER_MUSEUM_CUTE - 1;
+ case CONTEST_CATEGORY_SMART:
+ return CONTEST_WINNER_MUSEUM_SMART - 1;
+ case CONTEST_CATEGORY_TOUGH:
+ default:
+ return CONTEST_WINNER_MUSEUM_TOUGH - 1;
+ }
+ }
+}
+
+void Contest_ResetWinners(void)
+{
+ s32 i;
+
+ for (i = 0; i < 8; i++)
+ gSaveBlock1.contestWinners[i] = gDefaultContestWinners[i];
+}
+
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 06d4c11ca..df69d5019 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -380,7 +380,7 @@ static u8 sub_8128A7C(u8 var)
int i;
for(i = 0; i < 4; i++)
- if(shared192D0.turnOrder[i] == var)
+ if(eContestAppealResults.turnOrder[i] == var)
break;
return i;
@@ -402,7 +402,7 @@ static void ContestAICmd_unk_00(void)
static void ContestAICmd_get_turn(void)
{
- eContestAI->scriptResult = sContest.turnNumber;
+ eContestAI->scriptResult = sContest.appealNumber;
gAIScriptPtr += 1;
}
@@ -494,7 +494,7 @@ static void ContestAICmd_unk_0A(void)
static void ContestAICmd_get_user_order(void)
{
- eContestAI->scriptResult = shared192D0.turnOrder[eContestAI->unk41];
+ eContestAI->scriptResult = eContestAppealResults.turnOrder[eContestAI->unk41];
gAIScriptPtr += 1;
}
@@ -586,7 +586,7 @@ static void ContestAICmd_unk_14(void)
static void ContestAICmd_unk_15(void)
{
- eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unk4;
+ eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].pointTotal;
gAIScriptPtr += 1;
}
@@ -632,7 +632,7 @@ static void ContestAICmd_unk_19(void)
static void ContestAICmd_unk_1A(void)
{
- eContestAI->scriptResult = gContestMonConditions[eContestAI->unk41];
+ eContestAI->scriptResult = gContestMonRound1Points[eContestAI->unk41];
gAIScriptPtr += 1;
}
@@ -1196,7 +1196,7 @@ static void ContestAICmd_get_used_combo_starter(void)
u16 result = 0;
u8 var = sub_8128A7C(gAIScriptPtr[1]);
- if(sub_80B214C(var))
+ if(IsContestantAllowedToCombo(var))
result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0;
eContestAI->scriptResult = result;
@@ -1277,7 +1277,7 @@ static void ContestAICmd_get_val_812A188(void)
{
u8 var = sub_8128A7C(gAIScriptPtr[1]);
- eContestAI->scriptResult = sContestantStatus[var].unk15_3;
+ eContestAI->scriptResult = sContestantStatus[var].completedComboFlag;
gAIScriptPtr += 2;
}
@@ -1305,7 +1305,7 @@ static void ContestAICmd_unk_59(void)
{
u8 var = sub_8128A7C(gAIScriptPtr[1]);
- eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->unk41].unk4;
+ eContestAI->scriptResult = sContestantStatus[var].pointTotal - sContestantStatus[eContestAI->unk41].pointTotal;
gAIScriptPtr += 2;
}
@@ -1353,7 +1353,7 @@ static void ContestAICmd_unk_5E(void)
{
u8 var = sub_8128A7C(gAIScriptPtr[1]);
- eContestAI->scriptResult = gContestMonConditions[var] - gContestMonConditions[eContestAI->unk41];
+ eContestAI->scriptResult = gContestMonRound1Points[var] - gContestMonRound1Points[eContestAI->unk41];
gAIScriptPtr += 2;
}
@@ -1401,7 +1401,7 @@ static void ContestAICmd_unk_63(void)
{
u8 var = sub_8128A7C(gAIScriptPtr[1]);
u8 var2 = gAIScriptPtr[2];
- u16 move = sContest.unk19220[var2][var];
+ u16 move = sContest.moveHistory[var2][var];
eContestAI->scriptResult = gContestMoves[move].effect;
gAIScriptPtr += 3;
@@ -1451,7 +1451,7 @@ static void ContestAICmd_unk_68(void)
{
u8 var = sub_8128A7C(gAIScriptPtr[1]);
u8 var2 = gAIScriptPtr[2];
- s8 result = sContest.unk19248[var2][var];
+ s8 result = sContest.excitementHistory[var2][var];
eContestAI->scriptResult = result;
gAIScriptPtr += 3;
@@ -1501,7 +1501,7 @@ static void ContestAICmd_unk_6D(void)
{
u8 var = sub_8128A7C(gAIScriptPtr[1]);
u8 var2 = gAIScriptPtr[2];
- u16 move = sContest.unk19220[var2][var];
+ u16 move = sContest.moveHistory[var2][var];
eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType;
gAIScriptPtr += 3;
diff --git a/src/contest_effect.c b/src/contest_effect.c
index 2cd1e5828..417f5512c 100644
--- a/src/contest_effect.c
+++ b/src/contest_effect.c
@@ -81,93 +81,93 @@ static void ContestEffect_HighlyAppealing(void)
// After this move, the user is more easily startled.
static void ContestEffect_UserMoreEasilyStartled(void)
{
- sContestantStatus[shared192D0.contestant].moreEasilyStartled = TRUE;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MORE_CONSCIOUS);
+ sContestantStatus[eContestAppealResults.contestant].moreEasilyStartled = TRUE;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_MORE_CONSCIOUS);
}
// Makes a great appeal, but allows no more to the end.
static void ContestEffect_GreatAppealButNoMoreMoves(void)
{
- sContestantStatus[shared192D0.contestant].exploded = TRUE;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_APPEAL);
+ sContestantStatus[eContestAppealResults.contestant].exploded = TRUE;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_NO_APPEAL);
}
// Can be used repeatedly without boring the JUDGE.
static void ContestEffect_RepetitionNotBoring(void)
{
- sContestantStatus[shared192D0.contestant].usedRepeatableMove = TRUE;
- sContestantStatus[shared192D0.contestant].disappointedRepeat = FALSE;
- sContestantStatus[shared192D0.contestant].moveRepeatCount = 0;
+ sContestantStatus[eContestAppealResults.contestant].usedRepeatableMove = TRUE;
+ sContestantStatus[eContestAppealResults.contestant].repeatedMove = FALSE;
+ sContestantStatus[eContestAppealResults.contestant].moveRepeatCount = 0;
}
// Can avoid being startled by others once.
static void ContestEffect_AvoidStartleOnce(void)
{
- sContestantStatus[shared192D0.contestant].jamSafetyCount = 1;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SETTLE_DOWN);
+ sContestantStatus[eContestAppealResults.contestant].jamSafetyCount = 1;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_SETTLE_DOWN);
}
// Can avoid being startled by others.
static void ContestEffect_AvoidStartle(void)
{
- sContestantStatus[shared192D0.contestant].immune = TRUE;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_OBLIVIOUS_TO_OTHERS);
+ sContestantStatus[eContestAppealResults.contestant].immune = TRUE;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_OBLIVIOUS_TO_OTHERS);
}
// Can avoid being startled by others a little.
static void ContestEffect_AvoidStartleSlightly(void)
{
- sContestantStatus[shared192D0.contestant].jamReduction = 20;
- SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_LESS_AWARE);
+ sContestantStatus[eContestAppealResults.contestant].jamReduction = 20;
+ SetContestantEffectStringID(eContestAppealResults.contestant,CONTEST_STRING_LESS_AWARE);
}
// After this move, the user is less likely to be startled.
static void ContestEffect_UserLessEasilyStartled(void)
{
- sContestantStatus[shared192D0.contestant].resistant = TRUE;
- SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_STOPPED_CARING);
+ sContestantStatus[eContestAppealResults.contestant].resistant = TRUE;
+ SetContestantEffectStringID(eContestAppealResults.contestant,CONTEST_STRING_STOPPED_CARING);
}
// Slightly startles the POKéMON in front.
static void ContestEffect_StartleFrontMon(void)
{
u8 idx = 0;
- u8 a = shared192D0.contestant;
+ u8 a = eContestAppealResults.contestant;
- if (shared192D0.turnOrder[a] != 0) {
+ if (eContestAppealResults.turnOrder[a] != 0) {
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[a] - 1 == shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[a] - 1 == eContestAppealResults.turnOrder[i])
break;
}
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestAppealResults.jamQueue[0] = i;
+ eContestAppealResults.jamQueue[1] = 0xFF;
idx = WasAtLeastOneOpponentJammed();
}
if (idx == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Slightly startles those that have made appeals.
static void ContestEffect_StartlePrevMons(void)
{
u8 idx = 0;
- u8 a = shared192D0.contestant;
+ u8 a = eContestAppealResults.contestant;
- if (shared192D0.turnOrder[a] != 0) {
+ if (eContestAppealResults.turnOrder[a] != 0) {
int i, j;
for (i = 0, j = 0; i < 4; i++)
- if (shared192D0.turnOrder[a] > shared192D0.turnOrder[i])
- shared192D0.jamQueue[j++] = i;
- shared192D0.jamQueue[j] = 0xFF;
+ if (eContestAppealResults.turnOrder[a] > eContestAppealResults.turnOrder[i])
+ eContestAppealResults.jamQueue[j++] = i;
+ eContestAppealResults.jamQueue[j] = 0xFF;
idx = WasAtLeastOneOpponentJammed();
}
if (idx == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Startles the POKéMON that appealed before the user.
@@ -182,7 +182,7 @@ static void ContestEffect_StartlePrevMon2(void)
jam = 40;
else
jam = 60;
- shared192D0.jam = jam;
+ eContestAppealResults.jam = jam;
ContestEffect_StartleFrontMon();
}
@@ -190,18 +190,18 @@ static void ContestEffect_StartlePrevMon2(void)
static void ContestEffect_StartlePrevMons2(void)
{
u8 numStartled = 0;
- u8 contestant = shared192D0.contestant;
+ u8 contestant = eContestAppealResults.contestant;
- if (shared192D0.turnOrder[contestant] != 0)
+ if (eContestAppealResults.turnOrder[contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[contestant] > eContestAppealResults.turnOrder[i])
{
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestAppealResults.jamQueue[0] = i;
+ eContestAppealResults.jamQueue[1] = 0xFF;
{
u8 rval = Random() % 10;
int jam;
@@ -218,31 +218,31 @@ static void ContestEffect_StartlePrevMons2(void)
jam = 40;
else
jam = 60;
- shared192D0.jam = jam;
+ eContestAppealResults.jam = jam;
}
if (WasAtLeastOneOpponentJammed())
numStartled++;
}
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
if (numStartled == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
}
// Shifts the JUDGE's attention from others.
static void ContestEffect_ShiftJudgeAttention(void)
{
bool32 hitAny = FALSE;
- u8 contestant = shared192D0.contestant;
+ u8 contestant = eContestAppealResults.contestant;
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i] &&
+ if (eContestAppealResults.turnOrder[contestant] > eContestAppealResults.turnOrder[i] &&
sContestantStatus[i].hasJudgesAttention &&
CanUnnerveContestant(i))
{
@@ -253,10 +253,10 @@ static void ContestEffect_ShiftJudgeAttention(void)
}
}
}
- SetContestantEffectStringID(shared192D0.contestant,CONTEST_STRING_DAZZLE_ATTEMPT);
+ SetContestantEffectStringID(eContestAppealResults.contestant,CONTEST_STRING_DAZZLE_ATTEMPT);
if (!hitAny)
{
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
}
}
@@ -264,81 +264,81 @@ static void ContestEffect_ShiftJudgeAttention(void)
static void ContestEffect_StartleMonWithJudgesAttention(void)
{
u8 numStartled = 0;
- u8 contestant = shared192D0.contestant;
+ u8 contestant = eContestAppealResults.contestant;
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[contestant] > shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[contestant] > eContestAppealResults.turnOrder[i])
{
if (sContestantStatus[i].hasJudgesAttention)
- shared192D0.jam = 50;
+ eContestAppealResults.jam = 50;
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestAppealResults.jam = 10;
+ eContestAppealResults.jamQueue[0] = i;
+ eContestAppealResults.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numStartled++;
}
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
if (numStartled == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
}
// Jams the others, and misses one turn of appeals.
static void ContestEffect_JamsOthersButMissOneTurn(void)
{
- sContestantStatus[shared192D0.contestant].turnSkipped = TRUE;
+ sContestantStatus[eContestAppealResults.contestant].turnSkipped = TRUE;
ContestEffect_StartlePrevMons();
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Startles POKéMON that made a same-type appeal.
static void ContestEffect_StartleMonsSameTypeAppeal(void)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ u16 move = sContestantStatus[eContestAppealResults.contestant].currMove;
JamByMoveCategory(gContestMoves[move].contestCategory);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Badly startles POKéMON that made COOL appeals.
static void ContestEffect_StartleMonsCoolAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_COOL);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Badly startles POKéMON that made BEAUTY appeals.
static void ContestEffect_StartleMonsBeautyAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_BEAUTY);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Badly startles POKéMON that made CUTE appeals.
static void ContestEffect_StartleMonsCuteAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_CUTE);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Badly startles POKéMON that made SMART appeals.
static void ContestEffect_StartleMonsSmartAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_SMART);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Badly startles POKéMON that made TOUGH appeals.
static void ContestEffect_StartleMonsToughAppeal(void)
{
JamByMoveCategory(CONTEST_CATEGORY_TOUGH);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// Makes one POKéMON after the user nervous.
@@ -346,13 +346,13 @@ static void ContestEffect_MakeFollowingMonNervous(void)
{
bool32 hitAny = FALSE;
- if (shared192D0.turnOrder[shared192D0.contestant] != 3)
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] != 3)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] + 1 == shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] + 1 == eContestAppealResults.turnOrder[i])
{
if (CanUnnerveContestant(i))
{
@@ -368,9 +368,9 @@ static void ContestEffect_MakeFollowingMonNervous(void)
}
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_ATTEMPT);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_UNNERVE_ATTEMPT);
if (!hitAny)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
}
// Makes all POKéMON after the user nervous.
@@ -387,7 +387,7 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
memset(contestantIds, 0xFF, ARRAY_COUNT(contestantIds));
for (i = 0, numAfter = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] < shared192D0.turnOrder[i] &&
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] < eContestAppealResults.turnOrder[i] &&
!sContestantStatus[i].nervous && !Contest_IsMonsTurnDisabled(i))
contestantIds[numAfter++] = i;
}
@@ -414,7 +414,7 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
}
for (i = 0; i < 4; i++)
{
- if (sContestantStatus[i].hasJudgesAttention && sub_80B214C(i))
+ if (sContestantStatus[i].hasJudgesAttention && IsContestantAllowedToCombo(i))
oddsMod[i] = gComboStarterLookupTable[gContestMoves[sContestantStatus[i].prevMove].comboStarterId] * 10;
else
oddsMod[i] = 0;
@@ -441,12 +441,12 @@ static void ContestEffect_MakeFollowingMonsNervous(void)
SetContestantEffectStringID(contestantIds[i], CONTEST_STRING_UNAFFECTED);
numUnnerved++;
}
- shared192D0.unnervedPokes[contestantIds[i]] = 1;
+ eContestAppealResults.unnervedPokes[contestantIds[i]] = 1;
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_UNNERVE_WAITING);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_UNNERVE_WAITING);
if (numUnnerved == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
}
// Worsens the condition of those that made appeals.
@@ -457,7 +457,7 @@ static void ContestEffect_WorsenConditionOfPrevMons(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i] &&
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] > eContestAppealResults.turnOrder[i] &&
sContestantStatus[i].condition > 0 &&
CanUnnerveContestant(i))
{
@@ -468,9 +468,9 @@ static void ContestEffect_WorsenConditionOfPrevMons(void)
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_TAUNT_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_TAUNT_WELL);
if (numHit == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_IGNORED);
}
// Badly startles POKéMON in good condition.
@@ -481,42 +481,42 @@ static void ContestEffect_BadlyStartlesMonsInGoodCondition(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] > eContestAppealResults.turnOrder[i])
{
if (sContestantStatus[i].condition > 0)
- shared192D0.jam = 40;
+ eContestAppealResults.jam = 40;
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestAppealResults.jam = 10;
+ eContestAppealResults.jamQueue[0] = i;
+ eContestAppealResults.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numHit++;
}
}
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_JAM_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_JAM_WELL);
if (numHit == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_IGNORED);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_IGNORED);
}
// The appeal works great if performed first.
static void ContestEffect_BetterIfFirst(void)
{
- if (gUnknown_02038696[shared192D0.contestant] == 0)
+ if (gContestantTurnOrder[eContestAppealResults.contestant] == 0)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
- sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HUSTLE_STANDOUT);
+ u16 move = sContestantStatus[eContestAppealResults.contestant].currMove;
+ sContestantStatus[eContestAppealResults.contestant].appeal += 2 * gContestEffects[gContestMoves[move].effect].appeal;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_HUSTLE_STANDOUT);
}
}
// The appeal works great if performed last.
static void ContestEffect_BetterIfLast(void)
{
- if (gUnknown_02038696[shared192D0.contestant] == 3)
+ if (gContestantTurnOrder[eContestAppealResults.contestant] == 3)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
- sContestantStatus[shared192D0.contestant].appeal2 += 2 * gContestEffects[gContestMoves[move].effect].appeal;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_HARD_UNNOTICED);
+ u16 move = sContestantStatus[eContestAppealResults.contestant].currMove;
+ sContestantStatus[eContestAppealResults.contestant].appeal += 2 * gContestEffects[gContestMoves[move].effect].appeal;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_WORK_HARD_UNNOTICED);
}
}
@@ -528,19 +528,19 @@ static void ContestEffect_AppealAsGoodAsPrevOnes(void)
for (i = 0, appealSum = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
- appealSum += sContestantStatus[i].appeal2;
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] > eContestAppealResults.turnOrder[i])
+ appealSum += sContestantStatus[i].appeal;
}
if (appealSum < 0)
appealSum = 0;
- if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appealSum == 0)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL);
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] == 0 || appealSum == 0)
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_NOT_WELL);
else
{
- sContestantStatus[shared192D0.contestant].appeal2 += appealSum / 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_BEFORE);
+ sContestantStatus[eContestAppealResults.contestant].appeal += appealSum / 2;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_WORK_BEFORE);
}
- sContestantStatus[shared192D0.contestant].appeal2 = RoundTowardsZero(sContestantStatus[shared192D0.contestant].appeal2);
+ sContestantStatus[eContestAppealResults.contestant].appeal = RoundTowardsZero(sContestantStatus[eContestAppealResults.contestant].appeal);
}
// Makes the appeal as good as the one before it.
@@ -548,40 +548,40 @@ static void ContestEffect_AppealAsGoodAsPrevOne(void)
{
s16 appeal = 0;
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i])
- appeal = sContestantStatus[i].appeal2;
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] - 1 == eContestAppealResults.turnOrder[i])
+ appeal = sContestantStatus[i].appeal;
}
}
- if (shared192D0.turnOrder[shared192D0.contestant] == 0 || appeal <= 0)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_WELL2);
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] == 0 || appeal <= 0)
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_NOT_WELL2);
else
{
- sContestantStatus[shared192D0.contestant].appeal2 += appeal;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_WORK_PRECEDING);
+ sContestantStatus[eContestAppealResults.contestant].appeal += appeal;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_WORK_PRECEDING);
}
}
// The appeal works better the later it is performed.
static void ContestEffect_BetterWhenLater(void)
{
- u8 whichTurn = shared192D0.turnOrder[shared192D0.contestant];
+ u8 whichTurn = eContestAppealResults.turnOrder[eContestAppealResults.contestant];
if (whichTurn == 0)
- sContestantStatus[shared192D0.contestant].appeal2 = 10;
+ sContestantStatus[eContestAppealResults.contestant].appeal = 10;
else
- sContestantStatus[shared192D0.contestant].appeal2 = 20 * whichTurn;
+ sContestantStatus[eContestAppealResults.contestant].appeal = 20 * whichTurn;
if (whichTurn == 0)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_SHOWN_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_NOT_SHOWN_WELL);
else if (whichTurn == 1)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL);
else if (whichTurn == 2)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL);
else
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY);
}
// The appeal's quality varies depending on its timing.
@@ -593,31 +593,31 @@ static void ContestEffect_QualityDependsOnTiming(void)
if (rval < 3)
{
appeal = 10;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
} else if (rval < 6)
{
appeal = 20;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
} else if (rval < 8)
{
appeal = 40;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
} else if (rval < 9)
{
appeal = 60;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
}
else
{
appeal = 80;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
}
- sContestantStatus[shared192D0.contestant].appeal2 = appeal;
+ sContestantStatus[eContestAppealResults.contestant].appeal = appeal;
}
static void ContestEffect_BetterIfSameType(void)
{
- s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant];
+ s8 turnOrder = eContestAppealResults.turnOrder[eContestAppealResults.contestant];
s8 i = turnOrder - 1, j;
u16 move;
@@ -628,7 +628,7 @@ static void ContestEffect_BetterIfSameType(void)
{
for (j = 0; j < 4; j++)
{
- if (shared192D0.turnOrder[j] == i)
+ if (eContestAppealResults.turnOrder[j] == i)
break;
}
if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped)
@@ -642,29 +642,29 @@ static void ContestEffect_BetterIfSameType(void)
}
}
- move = sContestantStatus[shared192D0.contestant].currMove;
+ move = sContestantStatus[eContestAppealResults.contestant].currMove;
if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory)
{
- sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
+ sContestantStatus[eContestAppealResults.contestant].appeal += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_SAME_TYPE_GOOD);
}
}
// Works well if different in type than the one before.
static void ContestEffect_BetterIfDiffType(void)
{
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] != 0)
{
- u16 move = sContestantStatus[shared192D0.contestant].currMove;
+ u16 move = sContestantStatus[eContestAppealResults.contestant].currMove;
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i] &&
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] - 1 == eContestAppealResults.turnOrder[i] &&
gContestMoves[move].contestCategory != gContestMoves[sContestantStatus[i].currMove].contestCategory)
{
- sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_DIFF_TYPE_GOOD);
+ sContestantStatus[eContestAppealResults.contestant].appeal += gContestEffects[gContestMoves[move].effect].appeal * 2;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_DIFF_TYPE_GOOD);
break;
}
}
@@ -674,23 +674,23 @@ static void ContestEffect_BetterIfDiffType(void)
// Affected by how well the appeal in front goes.
static void ContestEffect_AffectedByPrevAppeal(void)
{
- if (shared192D0.turnOrder[shared192D0.contestant] != 0)
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] - 1 == shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] - 1 == eContestAppealResults.turnOrder[i])
{
- if (sContestantStatus[shared192D0.contestant].appeal2 > sContestantStatus[i].appeal2)
+ if (sContestantStatus[eContestAppealResults.contestant].appeal > sContestantStatus[i].appeal)
{
- sContestantStatus[shared192D0.contestant].appeal2 *= 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_STOOD_OUT_AS_MUCH);
+ sContestantStatus[eContestAppealResults.contestant].appeal *= 2;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_STOOD_OUT_AS_MUCH);
}
- else if (sContestantStatus[shared192D0.contestant].appeal2 < sContestantStatus[i].appeal2)
+ else if (sContestantStatus[eContestAppealResults.contestant].appeal < sContestantStatus[i].appeal)
{
- sContestantStatus[shared192D0.contestant].appeal2 = 0;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NOT_AS_WELL);
+ sContestantStatus[eContestAppealResults.contestant].appeal = 0;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_NOT_AS_WELL);
}
}
}
@@ -700,24 +700,24 @@ static void ContestEffect_AffectedByPrevAppeal(void)
// Ups the user's condition. Helps prevent nervousness.
static void ContestEffect_ImproveConditionPreventNervousness(void)
{
- if (sContestantStatus[shared192D0.contestant].condition < 30)
+ if (sContestantStatus[eContestAppealResults.contestant].condition < 30)
{
- sContestantStatus[shared192D0.contestant].condition += 10;
- sContestantStatus[shared192D0.contestant].conditionMod = 1;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_CONDITION_ROSE);
+ sContestantStatus[eContestAppealResults.contestant].condition += 10;
+ sContestantStatus[eContestAppealResults.contestant].conditionMod = 1;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_CONDITION_ROSE);
}
else
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_NO_CONDITION_IMPROVE);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_NO_CONDITION_IMPROVE);
}
// The appeal works well if the user's condition is good.
static void ContestEffect_BetterWithGoodCondition(void)
{
- sContestantStatus[shared192D0.contestant].appealTripleCondition = TRUE;
- if (sContestantStatus[shared192D0.contestant].condition != 0)
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_HOT_STATUS);
+ sContestantStatus[eContestAppealResults.contestant].appealTripleCondition = TRUE;
+ if (sContestantStatus[eContestAppealResults.contestant].condition != 0)
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_HOT_STATUS);
else
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_BAD_CONDITION_WEAK_APPEAL);
}
// The next appeal can be made earlier next turn.
@@ -727,18 +727,18 @@ static void ContestEffect_NextAppealEarlier(void)
s8 j;
u8 turnOrder[4];
- if (sContest.turnNumber != 4)
+ if (sContest.appealNumber != 4)
{
for (i = 0; i < 4; i++)
turnOrder[i] = sContestantStatus[i].nextTurnOrder;
- turnOrder[shared192D0.contestant] = 0xFF;
+ turnOrder[eContestAppealResults.contestant] = 0xFF;
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
- if (j != shared192D0.contestant &&
+ if (j != eContestAppealResults.contestant &&
i == turnOrder[j] &&
turnOrder[j] == sContestantStatus[j].nextTurnOrder)
{
@@ -750,15 +750,15 @@ static void ContestEffect_NextAppealEarlier(void)
break;
}
- turnOrder[shared192D0.contestant] = 0;
- sContestantStatus[shared192D0.contestant].turnOrderMod = 1;
+ turnOrder[eContestAppealResults.contestant] = 0;
+ sContestantStatus[eContestAppealResults.contestant].turnOrderMod = 1;
for (i = 0; i < 4; i++)
{
sContestantStatus[i].nextTurnOrder = turnOrder[i];
}
- sContestantStatus[shared192D0.contestant].turnOrderModAction = 1;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_UP_LINE);
+ sContestantStatus[eContestAppealResults.contestant].turnOrderModAction = 1;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_MOVE_UP_LINE);
}
}
@@ -769,18 +769,18 @@ static void ContestEffect_NextAppealLater(void)
s8 j;
u8 turnOrder[4];
- if (sContest.turnNumber != 4)
+ if (sContest.appealNumber != 4)
{
for (i = 0; i < 4; i++)
turnOrder[i] = sContestantStatus[i].nextTurnOrder;
- turnOrder[shared192D0.contestant] = 0xFF;
+ turnOrder[eContestAppealResults.contestant] = 0xFF;
for (i = 3; i > -1; i--)
{
for (j = 0; j < 4; j++)
{
- if (j != shared192D0.contestant &&
+ if (j != eContestAppealResults.contestant &&
i == turnOrder[j] &&
turnOrder[j] == sContestantStatus[j].nextTurnOrder)
{
@@ -792,15 +792,15 @@ static void ContestEffect_NextAppealLater(void)
break;
}
- turnOrder[shared192D0.contestant] = 3;
- sContestantStatus[shared192D0.contestant].turnOrderMod = 1;
+ turnOrder[eContestAppealResults.contestant] = 3;
+ sContestantStatus[eContestAppealResults.contestant].turnOrderMod = 1;
for (i = 0; i < 4; i++)
{
sContestantStatus[i].nextTurnOrder = turnOrder[i];
}
- sContestantStatus[shared192D0.contestant].turnOrderModAction = 2;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_MOVE_BACK_LINE);
+ sContestantStatus[eContestAppealResults.contestant].turnOrderModAction = 2;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_MOVE_BACK_LINE);
}
}
@@ -818,7 +818,7 @@ static void ContestEffect_ScrambleNextTurnOrder(void)
u8 turnOrder[4];
u8 unselectedContestants[4];
- if (sContest.turnNumber != 4)
+ if (sContest.appealNumber != 4)
{
for (i = 0; i < 4; i++)
{
@@ -851,17 +851,17 @@ static void ContestEffect_ScrambleNextTurnOrder(void)
sContestantStatus[i].nextTurnOrder = turnOrder[i];
sContestantStatus[i].turnOrderMod = 2;
}
- sContestantStatus[shared192D0.contestant].turnOrderModAction = 3;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SCRAMBLE_ORDER);
+ sContestantStatus[eContestAppealResults.contestant].turnOrderModAction = 3;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_SCRAMBLE_ORDER);
}
}
// An appeal that excites the audience in any CONTEST.
static void ContestEffect_ExciteAudienceInAnyContest(void)
{
- if (gContestMoves[sContestantStatus[shared192D0.contestant].currMove].contestCategory != gSpecialVar_ContestCategory)
+ if (gContestMoves[sContestantStatus[eContestAppealResults.contestant].currMove].contestCategory != gSpecialVar_ContestCategory)
{
- sContestantStatus[shared192D0.contestant].overrideCategoryExcitementMod = TRUE;
+ sContestantStatus[eContestAppealResults.contestant].overrideCategoryExcitementMod = TRUE;
}
}
@@ -873,24 +873,24 @@ static void ContestEffect_BadlyStartleMonsWithGoodAppeals(void)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] > eContestAppealResults.turnOrder[i])
{
- if (sContestantStatus[i].appeal2 > 0)
+ if (sContestantStatus[i].appeal > 0)
{
- shared192D0.jam = sContestantStatus[i].appeal2 / 2;
- shared192D0.jam = RoundUp(shared192D0.jam);
+ eContestAppealResults.jam = sContestantStatus[i].appeal / 2;
+ eContestAppealResults.jam = RoundUp(eContestAppealResults.jam);
}
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestAppealResults.jam = 10;
+ eContestAppealResults.jamQueue[0] = i;
+ eContestAppealResults.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numJammed++;
}
}
if (numJammed == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTEMPT_STARTLE);
}
// The appeal works best the more the crowd is excited.
@@ -901,39 +901,39 @@ static void ContestEffect_BetterWhenAudienceExcited(void)
if (sContest.applauseLevel == 0)
{
appeal = 10;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_NOT_VERY_WELL);
}
else if (sContest.applauseLevel == 1)
{
appeal = 20;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_SLIGHTLY_WELL2);
}
else if (sContest.applauseLevel == 2)
{
appeal = 30;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_PRETTY_WELL2);
}
else if (sContest.applauseLevel == 3)
{
appeal = 50;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_VERY_WELL);
}
else
{
appeal = 60;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_APPEAL_EXCELLENTLY2);
}
- sContestantStatus[shared192D0.contestant].appeal2 = appeal;
+ sContestantStatus[eContestAppealResults.contestant].appeal = appeal;
}
// Temporarily stops the crowd from growing excited.
static void ContestEffect_DontExciteAudience(void)
{
- if (!shared19328.excitementFrozen)
+ if (!eContestExcitement.excitementFrozen)
{
- shared19328.excitementFrozen = TRUE;
- shared19328.excitementFreezer = shared192D0.contestant;
- SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_ATTRACTED_ATTENTION);
+ eContestExcitement.excitementFrozen = TRUE;
+ eContestExcitement.excitementFreezer = eContestAppealResults.contestant;
+ SetContestantEffectStringID(eContestAppealResults.contestant, CONTEST_STRING_ATTRACTED_ATTENTION);
}
}
@@ -944,26 +944,26 @@ static void JamByMoveCategory(u8 category)
for (i = 0; i < 4; i++)
{
- if (shared192D0.turnOrder[shared192D0.contestant] > shared192D0.turnOrder[i])
+ if (eContestAppealResults.turnOrder[eContestAppealResults.contestant] > eContestAppealResults.turnOrder[i])
{
if (category == gContestMoves[sContestantStatus[i].currMove].contestCategory)
- shared192D0.jam = 40;
+ eContestAppealResults.jam = 40;
else
- shared192D0.jam = 10;
- shared192D0.jamQueue[0] = i;
- shared192D0.jamQueue[1] = 0xFF;
+ eContestAppealResults.jam = 10;
+ eContestAppealResults.jamQueue[0] = i;
+ eContestAppealResults.jamQueue[1] = 0xFF;
if (WasAtLeastOneOpponentJammed())
numJammed++;
}
}
if (numJammed == 0)
- SetContestantEffectStringID2(shared192D0.contestant, CONTEST_STRING_MESSED_UP2);
+ SetContestantEffectStringID2(eContestAppealResults.contestant, CONTEST_STRING_MESSED_UP2);
}
static bool8 CanUnnerveContestant(u8 i)
{
- shared192D0.unnervedPokes[i] = 1;
+ eContestAppealResults.unnervedPokes[i] = 1;
if (sContestantStatus[i].immune)
{
SetContestantEffectStringID(i, CONTEST_STRING_AVOID_SEEING);
@@ -988,32 +988,32 @@ static bool8 WasAtLeastOneOpponentJammed(void)
s16 jamBuffer[4] = {0};
int i;
- for (i = 0; shared192D0.jamQueue[i] != 0xFF; i++)
+ for (i = 0; eContestAppealResults.jamQueue[i] != 0xFF; i++)
{
- u8 contestant = shared192D0.jamQueue[i];
+ u8 contestant = eContestAppealResults.jamQueue[i];
if (CanUnnerveContestant(contestant))
{
- shared192D0.jam2 = shared192D0.jam;
+ eContestAppealResults.jam2 = eContestAppealResults.jam;
if (sContestantStatus[contestant].moreEasilyStartled)
- shared192D0.jam2 *= 2;
+ eContestAppealResults.jam2 *= 2;
if (sContestantStatus[contestant].resistant)
{
- shared192D0.jam2 = 10;
+ eContestAppealResults.jam2 = 10;
SetContestantEffectStringID(contestant, CONTEST_STRING_LITTLE_DISTRACTED);
}
else
{
- shared192D0.jam2 -= sContestantStatus[contestant].jamReduction;
- if (shared192D0.jam2 <= 0)
+ eContestAppealResults.jam2 -= sContestantStatus[contestant].jamReduction;
+ if (eContestAppealResults.jam2 <= 0)
{
- shared192D0.jam2 = 0;
+ eContestAppealResults.jam2 = 0;
SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED);
}
else
{
- JamContestant(contestant, shared192D0.jam2);
- SetStartledString(contestant, shared192D0.jam2);
- jamBuffer[contestant] = shared192D0.jam2;
+ JamContestant(contestant, eContestAppealResults.jam2);
+ SetStartledString(contestant, eContestAppealResults.jam2);
+ jamBuffer[contestant] = eContestAppealResults.jam2;
}
}
}
@@ -1029,7 +1029,7 @@ static bool8 WasAtLeastOneOpponentJammed(void)
static void JamContestant(u8 i, u8 jam)
{
- sContestantStatus[i].appeal2 -= jam;
+ sContestantStatus[i].appeal -= jam;
sContestantStatus[i].jam += jam;
}
diff --git a/src/contest_link_80C857C.c b/src/contest_link.c
index a694380df..a69d5ba3d 100644
--- a/src/contest_link_80C857C.c
+++ b/src/contest_link.c
@@ -16,8 +16,8 @@ static void de_sub_80C9294(bool32 arg0);
static void SendBlockToAllOpponents(const void *data, u16 size)
{
- memcpy(eContestLinkSendBuffer, data, size);
- SendBlock(bitmask_all_link_players_but_self(), eContestLinkSendBuffer, size);
+ memcpy(gDecompressionBuffer, data, size);
+ SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, size);
}
static bool8 HasPlayerReceivedBlock(u8 who)
@@ -42,7 +42,7 @@ static bool8 HaveAllPlayersReceivedBlock(void)
return TRUE;
}
-void sub_80C8604(u8 taskId)
+void Task_LinkContest_Init(u8 taskId)
{
#if ENGLISH
u8 i;
@@ -72,131 +72,43 @@ static void sub_80C8660(u8 taskId)
}
}
-#ifdef NONMATCHING
u8 GetStringLanguage(const u8 *string)
{
u8 language = GAME_LANGUAGE;
if (string[0] == EXT_CTRL_CODE_BEGIN && string[1] == 0x15)
return language;
- if (StringLength(string) > 5)
- return language;
- for (; *string != EOS; string++)
+ if (StringLength(string) < OT_NAME_LENGTH - 1)
{
- if (!((*string >= CHAR_A && *string <= CHAR_z) ||
- (*string >= CHAR_0 + 0 && *string <= CHAR_0 + 9) ||
- *string == CHAR_SPACE ||
- *string == CHAR_PERIOD ||
- *string == CHAR_COMMA ||
- *string == 0xAB ||
- *string == CHAR_QUESTION_MARK ||
- *string == CHAR_MALE ||
- *string == CHAR_FEMALE ||
- *string == CHAR_SLASH ||
- *string == CHAR_HYPHEN ||
- *string == CHAR_ELLIPSIS ||
- *string == 0xB1 ||
- *string == 0xB2 ||
- *string == 0xB3 ||
- *string == 0xB1
- ))
+ while (*string != EOS)
{
- language = LANGUAGE_JAPANESE;
- break;
+ if (((*string >= CHAR_A && *string <= CHAR_z) ||
+ (*string >= CHAR_0 + 0 && *string <= CHAR_0 + 9) ||
+ *string == CHAR_SPACE ||
+ *string == CHAR_PERIOD ||
+ *string == CHAR_COMMA ||
+ *string == CHAR_EXCL_MARK ||
+ *string == CHAR_QUESTION_MARK ||
+ *string == CHAR_MALE ||
+ *string == CHAR_FEMALE ||
+ *string == CHAR_SLASH ||
+ *string == CHAR_HYPHEN ||
+ *string == CHAR_ELLIPSIS ||
+ *string == CHAR_DBL_QUOT_LEFT ||
+ *string == CHAR_DBL_QUOT_RIGHT ||
+ *string == CHAR_SGL_QUOT_LEFT ||
+ *string == CHAR_DBL_QUOT_LEFT)) // Most likely a typo, CHAR_SGL_QUOT_RIGHT should be here instead.
+ {
+ string++;
+ }
+ else
+ {
+ language = LANGUAGE_JAPANESE;
+ break;
+ }
}
}
return language;
}
-#else
-NAKED u8 GetStringLanguage(const u8 *string)
-{
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tadds r4, r0, 0\n"
- ".ifdef ENGLISH\n"
- "\tmovs r5, 0x2\n"
- ".else\n"
- "\tmovs r5, 0x5\n"
- ".endif\n"
- "\tldrb r0, [r4]\n"
- "\tcmp r0, 0xFC\n"
- "\tbne _080C86B6\n"
- "\tldrb r0, [r4, 0x1]\n"
- "\tcmp r0, 0x15\n"
- "\tbne _080C86B6\n"
- ".ifdef ENGLISH\n"
- "\tmovs r0, 0x2\n"
- ".else\n"
- "\tmovs r0, 0x5\n"
- ".endif\n"
- "\tb _080C872C\n"
- "_080C86B6:\n"
- "\tadds r0, r4, 0\n"
- "\tbl StringLength\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, 0x5\n"
- "\tbhi _080C872A\n"
- "\tldrb r0, [r4]\n"
- "\tcmp r0, 0xFF\n"
- "\tbeq _080C872A\n"
- "_080C86CA:\n"
- "\tldrb r1, [r4]\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0x45\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x33\n"
- "\tbls _080C871E\n"
- "\tadds r0, r1, 0\n"
- "\tadds r0, 0x5F\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x9\n"
- "\tbls _080C871E\n"
- "\tadds r0, r1, 0\n"
- "\tcmp r0, 0\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xAD\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB8\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xAB\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xAC\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB5\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB6\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xBA\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xAE\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB0\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB1\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB2\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB3\n"
- "\tbeq _080C871E\n"
- "\tcmp r0, 0xB1\n"
- "\tbne _080C8728\n"
- "_080C871E:\n"
- "\tadds r4, 0x1\n"
- "\tldrb r0, [r4]\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _080C86CA\n"
- "\tb _080C872A\n"
- "_080C8728:\n"
- "\tmovs r5, 0x1\n"
- "_080C872A:\n"
- "\tadds r0, r5, 0\n"
- "_080C872C:\n"
- "\tpop {r4,r5}\n"
- "\tpop {r1}\n"
- "\tbx r1");
-}
-#endif
void sub_80C8734(u8 taskId)
{
@@ -295,7 +207,7 @@ void sub_80C8734(u8 taskId)
}
}
-void sub_80C88AC(u8 taskId)
+void Task_LinkContest_CommunicateRng(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -328,7 +240,7 @@ void sub_80C88AC(u8 taskId)
}
}
-void sub_80C8938(u8 taskId)
+void Task_LinkContest_CommunicateCategory(u8 taskId)
{
int i;
@@ -395,7 +307,7 @@ void sub_80C8938(u8 taskId)
}
}
-void sub_80C89DC(u8 taskId)
+void Task_LinkContest_CommunicateMonIdxs(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -449,21 +361,21 @@ void sub_80C8A38(u8 taskId)
}
}
-void sub_80C8AD0(u8 taskId)
+void Task_LinkContest_CommunicateFinalStandings(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
case 0:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(gUnknown_02038678, sizeof gUnknown_02038678);
+ SendBlockToAllOpponents(gContestMonTotalPoints, sizeof gContestMonTotalPoints);
gTasks[taskId].data[0]++;
}
break;
case 1:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(gUnknown_02038678, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038678);
+ memcpy(gContestMonTotalPoints, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestMonTotalPoints);
gTasks[taskId].data[0]++;
}
break;
@@ -480,28 +392,29 @@ void sub_80C8AD0(u8 taskId)
case 3:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(gUnknown_02038680, sizeof gUnknown_02038680);
+ SendBlockToAllOpponents(
+ gContestMonAppealPointTotals, sizeof gContestMonAppealPointTotals);
gTasks[taskId].data[0]++;
}
break;
case 4:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(gUnknown_02038680, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038680);
+ memcpy(gContestMonAppealPointTotals, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestMonAppealPointTotals);
gTasks[taskId].data[0]++;
}
break;
case 6:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(gUnknown_02038688, sizeof gUnknown_02038688);
+ SendBlockToAllOpponents(gContestMonRound2Points, sizeof gContestMonRound2Points);
gTasks[taskId].data[0]++;
}
break;
case 7:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(gUnknown_02038688, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038688);
+ memcpy(gContestMonRound2Points, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestMonRound2Points);
gTasks[taskId].data[0]++;
}
break;
@@ -515,7 +428,7 @@ void sub_80C8AD0(u8 taskId)
case 10:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(gContestFinalStandings, gBlockRecvBuffer[gUnknown_0203869B], sizeof gContestFinalStandings);
+ memcpy(gContestFinalStandings, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestFinalStandings);
gTasks[taskId].data[0]++;
}
break;
@@ -526,7 +439,7 @@ void sub_80C8AD0(u8 taskId)
}
}
-void sub_80C8C80(u8 taskId)
+void Task_LinkContest_CommunicateAppealsState(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -540,7 +453,7 @@ void sub_80C8C80(u8 taskId)
case 1:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(sContestantStatus, gBlockRecvBuffer[gUnknown_0203869B], 4 * sizeof(struct ContestantStatus));
+ memcpy(sContestantStatus, gBlockRecvBuffer[gContestLinkLeaderIndex], 4 * sizeof(struct ContestantStatus));
gTasks[taskId].data[0]++;
}
break;
@@ -557,42 +470,42 @@ void sub_80C8C80(u8 taskId)
case 3:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(&shared192D0, sizeof shared192D0);
+ SendBlockToAllOpponents(&eContestAppealResults, sizeof eContestAppealResults);
gTasks[taskId].data[0]++;
}
break;
case 4:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(&shared192D0, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared192D0);
+ memcpy(&eContestAppealResults, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof eContestAppealResults);
gTasks[taskId].data[0]++;
}
break;
case 6:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(&shared19328, sizeof shared19328);
+ SendBlockToAllOpponents(&eContestExcitement, sizeof eContestExcitement);
gTasks[taskId].data[0]++;
}
break;
case 7:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(&shared19328, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared19328);
+ memcpy(&eContestExcitement, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof eContestExcitement);
gTasks[taskId].data[0]++;
}
break;
case 9:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(gUnknown_02038696, sizeof gUnknown_02038696);
+ SendBlockToAllOpponents(gContestantTurnOrder, sizeof gContestantTurnOrder);
gTasks[taskId].data[0]++;
}
break;
case 10:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696);
+ memcpy(gContestantTurnOrder, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestantTurnOrder);
gTasks[taskId].data[0]++;
}
break;
@@ -603,7 +516,7 @@ void sub_80C8C80(u8 taskId)
}
}
-void sub_80C8E1C(u8 taskId)
+void Task_LinkContest_CommunicateLeaderIds(u8 taskId)
{
int i;
@@ -670,7 +583,7 @@ void sub_80C8E1C(u8 taskId)
}
}
-void sub_80C8EBC(u8 taskId)
+void Task_LinkContest_CommunicateRound1Points(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -681,21 +594,21 @@ void sub_80C8EBC(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(gContestMonConditions, sizeof gContestMonConditions);
+ SendBlockToAllOpponents(gContestMonRound1Points, sizeof gContestMonRound1Points);
gTasks[taskId].data[0]++;
}
break;
case 1:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(gContestMonConditions, gBlockRecvBuffer[gUnknown_0203869B], sizeof gContestMonConditions);
+ memcpy(gContestMonRound1Points, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestMonRound1Points);
gTasks[taskId].data[0]++;
}
break;
}
}
-void sub_80C8F34(u8 taskId)
+void Task_LinkContest_CommunicateTurnOrder(u8 taskId)
{
switch (gTasks[taskId].data[0])
{
@@ -706,14 +619,14 @@ void sub_80C8F34(u8 taskId)
case 0:
if (IsLinkTaskFinished())
{
- SendBlockToAllOpponents(gUnknown_02038696, sizeof gUnknown_02038696);
+ SendBlockToAllOpponents(gContestantTurnOrder, sizeof gContestantTurnOrder);
gTasks[taskId].data[0]++;
}
break;
case 1:
if (HaveAllPlayersReceivedBlock())
{
- memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696);
+ memcpy(gContestantTurnOrder, gBlockRecvBuffer[gContestLinkLeaderIndex], sizeof gContestantTurnOrder);
gTasks[taskId].data[0]++;
}
break;
diff --git a/src/contest_link_80C2020.c b/src/contest_link_util.c
index e14880ee0..fab8cd012 100644
--- a/src/contest_link_80C2020.c
+++ b/src/contest_link_util.c
@@ -1,35 +1,35 @@
#include "global.h"
-#include "data2.h"
-#include "util.h"
-#include "random.h"
-#include "overworld.h"
+#include "contest_link_util.h"
+#include "battle.h"
+#include "blend_palette.h"
#include "constants/songs.h"
-#include "ewram.h"
-#include "main.h"
-#include "scanline_effect.h"
+#include "contest.h"
+#include "contest_link.h"
+#include "data2.h"
#include "decompress.h"
-#include "palette.h"
-#include "blend_palette.h"
+#include "event_data.h"
+#include "ewram.h"
+#include "field_effect.h"
+#include "field_specials.h"
#include "graphics.h"
-#include "strings2.h"
-#include "text.h"
-#include "string_util.h"
+#include "link.h"
+#include "main.h"
#include "menu.h"
-#include "sound.h"
+#include "overworld.h"
+#include "palette.h"
#include "pokedex.h"
#include "pokemon_icon.h"
-#include "tv.h"
-#include "battle.h"
-#include "contest.h"
-#include "link.h"
-#include "field_effect.h"
-#include "field_specials.h"
-#include "contest_link_80C857C.h"
-#include "contest_link_80C2020.h"
#include "pokemon_storage_system.h"
-#include "event_data.h"
+#include "random.h"
+#include "scanline_effect.h"
#include "script.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings2.h"
+#include "text.h"
#include "trig.h"
+#include "tv.h"
+#include "util.h"
#define ABS(x) ((x) < 0 ? -(x) : (x))
@@ -117,15 +117,15 @@ void sub_80C3EA4(u8 taskId);
void sub_80C3F00(void);
void sub_80C40D4(u8 a0, u8 a1);
void sub_80C42C0(u8 taskId);
-void sub_80C49C4(u8 taskId);
-void sub_80C49F0(u8 taskId);
-void sub_80C4A0C(u8 taskId);
-void sub_80C4A28(u8 taskId);
-void sub_80C4A44(u8 taskId);
-void sub_80C4B0C(u8 taskId);
-void sub_80C4B5C(u8 taskId);
-void sub_80C4BA4(u8 taskId);
-void sub_80C4BCC(u8 taskId);
+void Task_StartCommunication(u8 taskId);
+void Task_StartCommunicateRng(u8 taskId);
+void Task_StartCommunicateLeaderIds(u8 taskId);
+void Task_StartCommunicateCategory(u8 taskId);
+void Task_LinkContest_SetUpContest(u8 taskId);
+void Task_LinkContest_CalculateTurnOrder(u8 taskId);
+void Task_LinkContest_FinalizeConnection(u8 taskId);
+void Task_LinkContest_Disconnect(u8 taskId);
+void Task_LinkContest_WaitDisconnect(u8 taskId);
const u16 gUnknown_083D1624[] = INCBIN_U16("graphics/unknown/unknown_3D1624/0.4bpp");
const u16 gUnknown_083D1644[] = INCBIN_U16("graphics/unknown/unknown_3D1624/1.4bpp");
@@ -388,7 +388,7 @@ static void sub_80C255C(u8 taskId)
static void sub_80C25A4(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C89DC, sub_80C25C0);
+ SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateMonIdxs, sub_80C25C0);
}
static void sub_80C25C0(u8 taskId)
@@ -610,12 +610,12 @@ static void sub_80C2A8C(u8 taskId)
species = gContestMons[i].species;
personality = gContestMons[i].personality;
otId = gContestMons[i].otId;
- HandleLoadSpecialPokePic(gMonFrontPicTable + species, gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (intptr_t)gSharedMem, gUnknown_081FAF4C[1], species, personality);
+ HandleLoadSpecialPokePic(gMonFrontPicTable + species, gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (void *)gSharedMem, gMonSpriteGfx_Sprite_ptr[1], species, personality);
monPal = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality);
LoadCompressedObjectPalette(monPal);
GetMonSpriteTemplate_803C56C(species, 1);
- gUnknown_02024E8C.paletteTag = monPal->tag;
- spriteId = CreateSprite(&gUnknown_02024E8C, 0x110, 0x50, 10);
+ gCreatingSpriteTemplate.paletteTag = monPal->tag;
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, 0x110, 0x50, 10);
gSprites[spriteId].data[1] = species;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].callback = sub_80C3C44;
@@ -702,7 +702,7 @@ static void sub_80C2D80(u8 taskId)
if (gIsLinkContest & 1)
{
sub_80C3698(gOtherText_LinkStandby);
- sub_800832C();
+ SetCloseLinkCallback();
gTasks[taskId].func = sub_80C2DD8;
}
else
@@ -727,8 +727,8 @@ static void sub_80C2E14(u8 taskId)
sub_810FB10(2);
Contest_SaveWinner(gSpecialVar_ContestRank);
Contest_SaveWinner(0xFE);
- ewram15DDF = 1;
- ewram15DDE = sub_80B2C4C(0xfe, 0);
+ eCurContestWinnerIsForArtist = TRUE;
+ eCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(0xfe, 0);
BeginHardwarePaletteFade(0xff, 0, 0, 16, 0);
gTasks[taskId].func = sub_80C2EA0;
}
@@ -1282,10 +1282,10 @@ u16 sub_80C34AC(const u8 * string)
void sub_80C34CC(s16 arg0, u16 y, u16 arg2, u16 arg3)
{
struct Sprite *sprite = &gSprites[eContestLink80C2020Struct2018000.unk_00];
- sprite->pos1.x = 272;
- sprite->pos1.y = y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x = 272;
+ sprite->y = y;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[4] = arg0 + 32;
sprite->data[5] = arg2;
sprite->data[6] = arg3;
@@ -1297,10 +1297,10 @@ void sub_80C34CC(s16 arg0, u16 y, u16 arg2, u16 arg3)
void sub_80C3520(u16 arg0)
{
struct Sprite *sprite = &gSprites[eContestLink80C2020Struct2018000.unk_00];
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[6] = arg0;
sprite->data[7] = 0;
sprite->callback = sub_80C3630;
@@ -1309,10 +1309,10 @@ void sub_80C3520(u16 arg0)
void sub_80C3564(struct Sprite *sprite)
{
- sprite->pos1.x = 272;
- sprite->pos1.y = 144;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x = 272;
+ sprite->y = 144;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->callback = SpriteCallbackDummy;
eContestLink80C2020Struct2018000.unk_04 = 0;
}
@@ -1324,18 +1324,18 @@ void sub_80C3588(struct Sprite *sprite)
s16 var0;
var0 = (u16)sprite->data[7] + (u16)sprite->data[6];
- sprite->pos1.x -= var0 >> 8;
+ sprite->x -= var0 >> 8;
sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF;
- if (sprite->pos1.x < sprite->data[4])
- sprite->pos1.x = sprite->data[4];
+ if (sprite->x < sprite->data[4])
+ sprite->x = sprite->data[4];
for (i = 0; i < 3; i++)
{
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
- sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
+ sprite2->x = sprite->x + sprite->x2 + (i + 1) * 64;
}
- if (sprite->pos1.x == sprite->data[4])
+ if (sprite->x == sprite->data[4])
sprite->callback = sub_80C35FC;
}
@@ -1355,15 +1355,15 @@ void sub_80C3630(struct Sprite *sprite)
s16 var0;
var0 = (u16)sprite->data[7] + (u16)sprite->data[6];
- sprite->pos1.x -= var0 >> 8;
+ sprite->x -= var0 >> 8;
sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF;
for (i = 0; i < 3; i++)
{
struct Sprite *sprite2 = &gSprites[sprite->data[i]];
- sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
+ sprite2->x = sprite->x + sprite->x2 + (i + 1) * 64;
}
- if (sprite->pos1.x + sprite->pos2.x < -224)
+ if (sprite->x + sprite->x2 < -224)
sub_80C3564(sprite);
}
@@ -1376,18 +1376,18 @@ void sub_80C3698(const u8 *text)
sub_80C3158(text, eContestLink80C2020Struct2018000.unk_01);
x = sub_80C34AC(text);
sprite = &gSprites[eContestLink80C2020Struct2018000.unk_01];
- sprite->pos1.x = x + 32;
- sprite->pos1.y = 80;
+ sprite->x = x + 32;
+ sprite->y = 80;
sprite->invisible = FALSE;
for (i = 0; i < 3; i++)
{
- gSprites[sprite->data[i]].pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64;
- gSprites[sprite->data[i]].pos1.y = sprite->pos1.y;
+ gSprites[sprite->data[i]].x = sprite->x + sprite->x2 + (i + 1) * 64;
+ gSprites[sprite->data[i]].y = sprite->y;
gSprites[sprite->data[i]].invisible = FALSE;
}
gBattle_WIN0H = 0x00F0;
- gBattle_WIN0V = ((sprite->pos1.y - 16) << 8) | (sprite->pos1.y + 16);
+ gBattle_WIN0V = ((sprite->y - 16) << 8) | (sprite->y + 16);
REG_WININ = WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR;
}
@@ -1788,7 +1788,7 @@ u8 sub_80C3990(u8 monIndex, u8 arg1)
u32 var0;
u32 var1;
- var0 = gContestMonConditions[monIndex] << 16;
+ var0 = gContestMonRound1Points[monIndex] << 16;
var1 = var0 / 0x3F;
if (var1 & 0xFFFF)
var1 += 0x10000;
@@ -1810,7 +1810,7 @@ s8 sub_80C39E4(u8 arg0, u8 arg1)
s16 val;
s8 ret;
- val = gUnknown_02038688[arg0];
+ val = gContestMonRound2Points[arg0];
if (val < 0)
r4 = -val << 16;
else
@@ -1826,7 +1826,7 @@ s8 sub_80C39E4(u8 arg0, u8 arg1)
if (arg1 != 0 && r2 > 10)
r2 = 10;
- if (gUnknown_02038688[arg0] < 0)
+ if (gContestMonRound2Points[arg0] < 0)
ret = -r2;
else
ret = r2;
@@ -2003,12 +2003,12 @@ void sub_80C3C44(struct Sprite *sprite)
else
{
s16 delta = (u16)sprite->data[1] + 0x600;
- sprite->pos1.x -= delta >> 8;
+ sprite->x -= delta >> 8;
sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
- if (sprite->pos1.x < 120)
- sprite->pos1.x = 120;
+ if (sprite->x < 120)
+ sprite->x = 120;
- if (sprite->pos1.x == 120)
+ if (sprite->x == 120)
{
sprite->callback = SpriteCallbackDummy;
sprite->data[1] = 0;
@@ -2020,9 +2020,9 @@ void sub_80C3C44(struct Sprite *sprite)
void sub_80C3CB8(struct Sprite *sprite)
{
s16 delta = (u16)sprite->data[1] + 0x600;
- sprite->pos1.x -= delta >> 8;
+ sprite->x -= delta >> 8;
sprite->data[1] = (sprite->data[1] + 0x600) & 0xFF;
- if (sprite->pos1.x < -32)
+ if (sprite->x < -32)
{
sprite->callback = SpriteCallbackDummy;
sprite->invisible = TRUE;
@@ -2055,16 +2055,16 @@ void sub_80C3DF0(struct Sprite *sprite)
register s16 var0 asm("r1");
sprite->data[3] += sprite->data[0];
- sprite->pos2.x = Sin(sprite->data[3] >> 8, sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[3] >> 8, sprite->data[1]);
var0 = sprite->data[4] + sprite->data[2];
- sprite->pos1.x += var0 >> 8;
+ sprite->x += var0 >> 8;
var0 = var0 & 0xFF;
sprite->data[4] = var0;
- sprite->pos1.y++;
+ sprite->y++;
if (eContestLink80C2020Struct2018000.unk_09)
sprite->invisible = TRUE;
- if (sprite->pos1.x > 248 || sprite->pos1.y > 116)
+ if (sprite->x > 248 || sprite->y > 116)
{
DestroySprite(sprite);
eContestLink80C2020Struct2018000.unk_07--;
@@ -2093,41 +2093,41 @@ void sub_80C3EA4(u8 taskId)
void sub_80C3F00(void)
{
s32 i;
- s16 r2 = gUnknown_02038678[0];
+ s16 r2 = gContestMonTotalPoints[0];
s32 r4;
u32 r5;
s8 r0;
for (i = 1; i < 4; i++)
{
- if (r2 < gUnknown_02038678[i])
- r2 = gUnknown_02038678[i];
+ if (r2 < gContestMonTotalPoints[i])
+ r2 = gContestMonTotalPoints[i];
}
if (r2 < 0)
{
- r2 = gUnknown_02038678[0];
+ r2 = gContestMonTotalPoints[0];
for (i = 1; i < 4; i++)
{
- if (r2 > gUnknown_02038678[i])
- r2 = gUnknown_02038678[i];
+ if (r2 > gContestMonTotalPoints[i])
+ r2 = gContestMonTotalPoints[i];
}
}
for (i = 0; i < 4; i++)
{
- r4 = 1000 * gContestMonConditions[i] / ABS(r2);
+ r4 = 1000 * gContestMonRound1Points[i] / ABS(r2);
if ((r4 % 10) >= 5)
r4 += 10;
eContestLink80C2020Struct2018018[i].unk_00 = r4 / 10;
- r4 = 1000 * ABS(gUnknown_02038688[i]) / ABS(r2);
+ r4 = 1000 * ABS(gContestMonRound2Points[i]) / ABS(r2);
if ((r4 % 10) >= 5)
r4 += 10;
eContestLink80C2020Struct2018018[i].unk_04 = r4 / 10;
- if (gUnknown_02038688[i] < 0)
+ if (gContestMonRound2Points[i] < 0)
eContestLink80C2020Struct2018018[i].unk_10 = 1;
r5 = 22528 * eContestLink80C2020Struct2018018[i].unk_00 / 100;
@@ -2568,7 +2568,7 @@ void ScrSpecial_CheckSelectedMonAndInitContest(void)
if (result != 0)
{
Contest_InitAllPokemon(gSpecialVar_ContestCategory, gSpecialVar_ContestRank);
- InitContestMonConditions(gSpecialVar_ContestCategory);
+ CalculateRound1Points(gSpecialVar_ContestCategory);
}
gSpecialVar_Result = result;
}
@@ -2700,7 +2700,7 @@ void ScrSpecial_CountContestMonsWithBetterCondition(void)
for (i = 0, count = 0; i < 4; i++)
{
- if (gContestMonConditions[gSpecialVar_0x8006] < gContestMonConditions[i])
+ if (gContestMonRound1Points[gSpecialVar_0x8006] < gContestMonRound1Points[i])
count++;
}
@@ -2709,7 +2709,7 @@ void ScrSpecial_CountContestMonsWithBetterCondition(void)
void ScrSpecial_GetMonCondition(void)
{
- gSpecialVar_0x8004 = gContestMonConditions[gSpecialVar_0x8006];
+ gSpecialVar_0x8004 = gContestMonRound1Points[gSpecialVar_0x8006];
}
void ScrSpecial_GetContestWinnerIdx(void)
@@ -2770,7 +2770,7 @@ void sub_80C48C8(void)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
}
-void sub_80C48F4(void)
+void Contest_GetSpeciesNameI_StringVar1(void)
{
gSpecialVar_0x8004 = gContestMons[gSpecialVar_0x8006].species;
}
@@ -2796,37 +2796,40 @@ void ScrSpecial_GetContestPlayerMonIdx(void)
gSpecialVar_0x8004 = gContestPlayerMonIndex;
}
-void sub_80C4980(u8 taskId)
+void ContestLinkTransfer(u8 category)
{
- u8 taskId2;
+ u8 taskId;
ScriptContext2_Enable();
- taskId2 = CreateTask(sub_80C8604, 0);
- SetTaskFuncWithFollowupFunc(taskId2, sub_80C8604, sub_80C49C4);
- gTasks[taskId2].data[9] = taskId;
+ taskId = CreateTask(Task_LinkContest_Init, 0);
+ SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_Init, Task_StartCommunication);
+ gTasks[taskId].data[9] = category;
}
-void sub_80C49C4(u8 taskId)
+void Task_StartCommunication(u8 taskId)
{
Contest_CreatePlayerMon(gContestMonPartyIndex);
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8734, sub_80C49F0);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80C8734, Task_StartCommunicateRng);
}
-void sub_80C49F0(u8 taskId)
+void Task_StartCommunicateRng(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C88AC, sub_80C4A0C);
+ SetTaskFuncWithFollowupFunc(
+ taskId, Task_LinkContest_CommunicateRng, Task_StartCommunicateLeaderIds);
}
-void sub_80C4A0C(u8 taskId)
+void Task_StartCommunicateLeaderIds(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8E1C, sub_80C4A28);
+ SetTaskFuncWithFollowupFunc(
+ taskId, Task_LinkContest_CommunicateLeaderIds, Task_StartCommunicateCategory);
}
-void sub_80C4A28(u8 taskId)
+void Task_StartCommunicateCategory(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8938, sub_80C4A44);
+ SetTaskFuncWithFollowupFunc(
+ taskId, Task_LinkContest_CommunicateCategory, Task_LinkContest_SetUpContest);
}
-void sub_80C4A44(u8 taskId)
+void Task_LinkContest_SetUpContest(u8 taskId)
{
u8 i;
u8 sp0[4];
@@ -2849,18 +2852,20 @@ void sub_80C4A44(u8 taskId)
for (i = 0; i < 4; i++)
sp4[i] = gTasks[taskId].data[i + 5];
- gUnknown_0203869B = sub_80C4B34(sp4);
- InitContestMonConditions(gSpecialVar_ContestCategory);
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8EBC, sub_80C4B0C);
+ gContestLinkLeaderIndex = LinkContest_GetLeaderIndex(sp4);
+ CalculateRound1Points(gSpecialVar_ContestCategory);
+ SetTaskFuncWithFollowupFunc(
+ taskId, Task_LinkContest_CommunicateRound1Points, Task_LinkContest_CalculateTurnOrder);
}
-void sub_80C4B0C(u8 taskId)
+void Task_LinkContest_CalculateTurnOrder(u8 taskId)
{
- sub_80B0F28(0);
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8F34, sub_80C4B5C);
+ SortContestants(0);
+ SetTaskFuncWithFollowupFunc(
+ taskId, Task_LinkContest_CommunicateTurnOrder, Task_LinkContest_FinalizeConnection);
}
-u8 sub_80C4B34(u8 * a0)
+u8 LinkContest_GetLeaderIndex(u8 * a0)
{
s32 i;
u8 result = 0;
@@ -2874,12 +2879,12 @@ u8 sub_80C4B34(u8 * a0)
return result;
}
-void sub_80C4B5C(u8 taskId)
+void Task_LinkContest_FinalizeConnection(u8 taskId)
{
if (gSpecialVar_0x8004 == 1)
{
if (IsLinkTaskFinished())
- gTasks[taskId].func = sub_80C4BA4;
+ gTasks[taskId].func = Task_LinkContest_Disconnect;
}
else
{
@@ -2889,13 +2894,13 @@ void sub_80C4B5C(u8 taskId)
}
}
-void sub_80C4BA4(u8 taskId)
+void Task_LinkContest_Disconnect(u8 taskId)
{
- sub_800832C();
- gTasks[taskId].func = sub_80C4BCC;
+ SetCloseLinkCallback();
+ gTasks[taskId].func = Task_LinkContest_WaitDisconnect;
}
-void sub_80C4BCC(u8 taskId)
+void Task_LinkContest_WaitDisconnect(u8 taskId)
{
if (!gReceivedRemoteLinkPlayers)
{
diff --git a/src/contest_painting.c b/src/contest_painting.c
index ae683d267..1f127f760 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -1,29 +1,29 @@
#include "global.h"
#include "contest_painting.h"
-#include "contest_painting_effects.h"
#include "data2.h"
#include "decompress.h"
+#include "ewram.h"
+#include "image_processing_effects.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
#include "random.h"
+#include "scanline_effect.h"
#include "sprite.h"
#include "string_util.h"
#include "strings.h"
#include "text.h"
-#include "scanline_effect.h"
-#include "ewram.h"
-static u8 gUnknown_03000750;
-static u16 gUnknown_03000752;
-static u16 gUnknown_03000754;
-static u8 gUnknown_03000756;
+static u8 sHoldState;
+static u16 sMosaicVal;
+static u16 sFrameCounter;
+static u8 sVarsInitialized;
-u16 (*gUnknown_03005E10)[][32];
-struct Unk03005E20 gUnknown_03005E20;
-u8 gUnknown_03005E40[0x4C];
-struct ContestEntry *gUnknown_03005E8C;
-u16 *gUnknown_03005E90;
+u16 (*gContestMonPixels)[][32];
+struct ImageProcessingContext gImageProcessingContext;
+u8 sCaptionBuffer[76];
+struct ContestWinner *gContestPaintingWinner;
+u16 *gContestPaintingMonPalette;
static const u16 gPictureFramePalettes[][16] =
{
@@ -49,7 +49,8 @@ const u8 gPictureFrameTilemap_2[] = INCBIN_U8("graphics/picture_frame/frame2_map
const u8 gPictureFrameTilemap_3[] = INCBIN_U8("graphics/picture_frame/frame3_map.bin.rl");
const u8 gPictureFrameTilemap_4[] = INCBIN_U8("graphics/picture_frame/frame4_map.bin.rl");
const u8 gPictureFrameTilemap_5[] = INCBIN_U8("graphics/picture_frame/frame5_map.bin.rl");
-const u8 *const gUnknown_083F60AC[] =
+
+const u8 *const sContestRankNames[] =
{
OtherText_Cool,
OtherText_Beauty2,
@@ -57,62 +58,70 @@ const u8 *const gUnknown_083F60AC[] =
OtherText_Smart,
OtherText_Tough,
};
-const struct LabelPair gUnknown_083F60C0[] =
+
+const struct LabelPair sMuseumCaptions[] =
{
+ // COOL
{OtherText_NonstopSuperCool, OtherText_Terminator6},
{OtherText_GoodLookingPoke, OtherText_Terminator7},
{OtherText_MarvelousGreat, OtherText_Terminator8},
+ // BEAUTY
{OtherText_CenturyLastVenus, OtherText_Terminator9},
{OtherText_Terminator10, OtherText_DazzlingSmile},
{OtherText_PokeCenterIdol, OtherText_Terminator11},
+ // CUTE
{OtherText_LovelyAndSweet, OtherText_Terminator12},
{OtherText_ThePretty, OtherText_WinningPortrait},
{OtherText_GiveUsWink, OtherText_Terminator13},
+ // SMART
{OtherText_SmartnessMaestro, OtherText_Terminator15},
{OtherText_ChosenPokeAmong, OtherText_Terminator15},
{OtherText_TheExcellent, OtherText_ItsMomentOfElegance},
+ // TOUGH
{OtherText_PowerfullyMuscular, OtherText_Terminator16},
{OtherText_StrongErEst, OtherText_Terminator17},
{OtherText_MightyTough, OtherText_Exclamation},
};
-const struct OamData gOamData_83F6138 =
+
+const struct OamData sContestPaintingMonOamData =
{
.y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 1,
- .bpp = 1,
- .shape = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = TRUE,
+ .bpp = ST_OAM_8BPP,
+ .shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
- .size = 3,
+ .size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
.affineParam = 0,
};
-const u16 gUnknown_083F6140[] = {0, 0};
+
+const u16 sBgPalette[] = {RGB_BLACK, RGB_BLACK};
static void ShowContestPainting();
static void CB2_HoldContestPainting(void);
static void HoldContestPainting(void);
-static void ContestPaintingInitWindow(u8 arg0);
-static void ContestPaintingPrintCaption(u8 arg0, u8 arg1);
-static void ContestPaintingInitBG(void);
-static void ContestPaintingInitVars(u8 arg0);
+static void InitContestPaintingWindow(bool8 isForArtist);
+static void PrintContestPaintingCaption(u8 contestType, bool8 isForArtist);
+static void InitContestPaintingBg(void);
+static void InitContestPaintingVars(bool8 reset);
static void VBlankCB_ContestPainting(void);
-static void sub_8106B90(u8 *a, u16 *b, u16 *c);
-static void sub_8107090(u8 arg0, u8 arg1);
+static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 *destPixels);
+static void CreateContestPaintingPicture(u8 contestWinnerId, bool8 isForArtist);
-void sub_8106630(u32 contestWinnerId)
+void SetContestWinnerForPainting(u32 contestWinnerId)
{
// probably fakematching
- struct ContestWinner *ptr1 = (struct ContestWinner*)&ewram15DE0; // TODO: resolve messy struct duplicates
- u8 *ptr2 = (u8*)&ewram15DDE;
- u8 *ptr3 = (u8*)&ewram15DDF;
- *ptr1 = gSaveBlock1.contestWinners[contestWinnerId - 1];
- *ptr2 = contestWinnerId - 1;
- *ptr3 = 0;
+ struct ContestWinner *curWinner = &eCurContestWinner;
+ u8 *saveIdx = (u8*)&eCurContestWinnerSaveIdx;
+ u8 *isForArtist = (u8*)&eCurContestWinnerIsForArtist;
+ *curWinner = gSaveBlock1.contestWinners[contestWinnerId - 1];
+ *saveIdx = contestWinnerId - 1;
+ *isForArtist = FALSE;
}
void CB2_ContestPainting(void)
@@ -127,9 +136,9 @@ static void ShowContestPainting(void)
case 0:
ScanlineEffect_Stop();
SetVBlankCallback(NULL);
- gUnknown_03005E8C = &ewram15DE0;
- ContestPaintingInitVars(TRUE);
- ContestPaintingInitBG();
+ gContestPaintingWinner = &eCurContestWinner;
+ InitContestPaintingVars(TRUE);
+ InitContestPaintingBg();
gMain.state++;
break;
case 1:
@@ -143,20 +152,20 @@ static void ShowContestPainting(void)
case 2:
SeedRng(gMain.vblankCounter1);
InitKeys();
- ContestPaintingInitWindow(ewram15DDF);
+ InitContestPaintingWindow(eCurContestWinnerIsForArtist);
gMain.state++;
break;
case 3:
- sub_8107090(ewram15DDE, ewram15DDF);
+ CreateContestPaintingPicture(eCurContestWinnerSaveIdx, eCurContestWinnerIsForArtist);
gMain.state++;
break;
case 4:
- ContestPaintingPrintCaption(ewram15DDE, ewram15DDF);
- LoadPalette(gUnknown_083F6140, 0, 1 * 2);
+ PrintContestPaintingCaption(eCurContestWinnerSaveIdx, eCurContestWinnerIsForArtist);
+ LoadPalette(sBgPalette, 0, 1 * 2);
DmaClear32(3, PLTT, 0x400);
BeginFastPaletteFade(2);
SetVBlankCallback(VBlankCB_ContestPainting);
- gUnknown_03000750 = 0;
+ sHoldState = 0;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON;
SetMainCallback2(CB2_HoldContestPainting);
break;
@@ -176,70 +185,68 @@ static void CB2_QuitContestPainting(void)
static void HoldContestPainting(void)
{
- switch (gUnknown_03000750)
+ switch (sHoldState)
{
case 0:
if (!gPaletteFade.active)
- gUnknown_03000750 = 1;
- if (gUnknown_03000756 != 0 && gUnknown_03000754 != 0)
- gUnknown_03000754--;
+ sHoldState = 1;
+ if (sVarsInitialized&& sFrameCounter != 0)
+ sFrameCounter--;
break;
case 1:
- if ((gMain.newKeys & 1) || (gMain.newKeys & 2))
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
- u8 two = 2; //needed to make the asm match
-
- gUnknown_03000750 = two;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
+ sHoldState++;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
}
- if (gUnknown_03000756 != 0)
- gUnknown_03000754 = 0;
+ if (sVarsInitialized != 0)
+ sFrameCounter = 0;
break;
case 2:
if (!gPaletteFade.active)
SetMainCallback2(CB2_QuitContestPainting);
- if (gUnknown_03000756 != 0 && gUnknown_03000754 <= 0x1D)
- gUnknown_03000754++;
+ if (sVarsInitialized && sFrameCounter < 30)
+ sFrameCounter++;
break;
}
}
-static void ContestPaintingInitWindow(u8 arg0)
+static void InitContestPaintingWindow(u8 isForArtist)
{
- InitMenuWindow(&gWindowTemplate_81E7160);
- Text_LoadWindowTemplate(&gWindowTemplate_81E7160);
+ InitMenuWindow(&gWindowTemplate_ContestPainting);
+ Text_LoadWindowTemplate(&gWindowTemplate_ContestPainting);
}
-static void ContestPaintingPrintCaption(u8 contestType, u8 arg1)
+static void PrintContestPaintingCaption(u8 contestType, u8 isForArtist)
{
u8 xPos, yPos;
u8 *ptr;
u8 type;
- if (arg1 == TRUE)
+ if (isForArtist == TRUE)
return;
- ptr = gUnknown_03005E40;
- type = gUnknown_03005E8C->contestType;
+ ptr = sCaptionBuffer;
+ type = gContestPaintingWinner->contestCategory;
if (contestType < 8)
{
- ptr = StringCopy(ptr, gUnknown_083F60AC[type]);
+ ptr = StringCopy(ptr, sContestRankNames[type]);
ptr = StringCopy(ptr, gContestText_ContestWinner);
#if ENGLISH
- ptr = StringCopy(ptr, gUnknown_03005E8C->trainer_name);
+ ptr = StringCopy(ptr, gContestPaintingWinner->trainerName);
#elif GERMAN
- ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
+ ptr = StringCopy10(ptr, gContestPaintingWinner->nickname);
#endif
// {LATIN}
- ptr[0] = 0xFC;
+ ptr[0] = EXT_CTRL_CODE_BEGIN;
ptr[1] = 0x16;
ptr += 2;
ptr = StringCopy(ptr, gOtherText_Unknown1);
#if ENGLISH
- ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
+ ptr = StringCopy10(ptr, gContestPaintingWinner->nickname);
#elif GERMAN
- ptr = StringCopy(ptr, gUnknown_03005E8C->trainer_name);
+ ptr = StringCopy(ptr, gContestPaintingWinner->trainerName);
#endif
xPos = 6;
@@ -247,17 +254,17 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1)
}
else
{
- ptr = StringCopy(ptr, gUnknown_083F60C0[type].prefix);
- ptr = StringCopy10(ptr, gUnknown_03005E8C->pokemon_name);
- ptr = StringCopy(ptr, gUnknown_083F60C0[type].suffix);
+ ptr = StringCopy(ptr, sMuseumCaptions[type].prefix);
+ ptr = StringCopy10(ptr, gContestPaintingWinner->nickname);
+ ptr = StringCopy(ptr, sMuseumCaptions[type].suffix);
xPos = 3;
yPos = 14;
}
- Menu_PrintTextPixelCoords(gUnknown_03005E40, xPos * 8 + 1, yPos * 8, 1);
+ Menu_PrintTextPixelCoords(sCaptionBuffer, xPos * 8 + 1, yPos * 8, 1);
}
-static void ContestPaintingInitBG(void)
+static void InitContestPaintingBg(void)
{
REG_DISPCNT = 0;
REG_IE |= INTR_FLAG_VBLANK;
@@ -268,34 +275,34 @@ static void ContestPaintingInitBG(void)
REG_BLDY = 0;
}
-static void ContestPaintingInitVars(bool8 arg0)
+static void InitContestPaintingVars(bool8 reset)
{
- if (arg0 == FALSE)
+ if (reset == FALSE)
{
- gUnknown_03000756 = FALSE;
- gUnknown_03000752 = 0;
- gUnknown_03000754 = 0;
+ sVarsInitialized = FALSE;
+ sMosaicVal = 0;
+ sFrameCounter = 0;
}
else
{
- gUnknown_03000756 = TRUE;
- gUnknown_03000752 = 15;
- gUnknown_03000754 = 30;
+ sVarsInitialized = TRUE;
+ sMosaicVal = 15;
+ sFrameCounter = 30;
}
}
static void ContestPaintingMosaic(void)
{
- if (gUnknown_03000756 == FALSE)
+ if (sVarsInitialized == FALSE)
{
REG_MOSAIC = 0;
return;
}
REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(10) | BGCNT_MOSAIC | BGCNT_16COLOR | BGCNT_TXT256x256;
- gUnknown_03000752 = gUnknown_03000754 / 2;
+ sMosaicVal = sFrameCounter / 2;
- REG_MOSAIC = (gUnknown_03000752 << 12) | (gUnknown_03000752 << 8) | (gUnknown_03000752 << 4) | (gUnknown_03000752 << 0);
+ REG_MOSAIC = (sMosaicVal << 12) | (sMosaicVal << 8) | (sMosaicVal << 4) | (sMosaicVal << 0);
}
static void VBlankCB_ContestPainting(void)
@@ -306,12 +313,12 @@ static void VBlankCB_ContestPainting(void)
TransferPlttBuffer();
}
-static void sub_8106AC4(u16 species, u8 arg1)
+static void InitContestMonPixels(u16 species, u8 arg1)
{
const void *pal;
- pal = GetMonSpritePalFromOtIdPersonality(species, gUnknown_03005E8C->otId, gUnknown_03005E8C->personality);
- LZDecompressVram(pal, gUnknown_03005E90);
+ pal = GetMonSpritePalFromOtIdPersonality(species, gContestPaintingWinner->otId, gContestPaintingWinner->personality);
+ LZDecompressVram(pal, gContestPaintingMonPalette);
if (arg1 == 0)
{
@@ -319,12 +326,12 @@ static void sub_8106AC4(u16 species, u8 arg1)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- EWRAM,
- gUnknown_081FAF4C[1],
+ (void *)EWRAM,
+ gMonSpriteGfx_Sprite_ptr[1],
species,
- (u32)gUnknown_03005E8C->personality
+ (u32)gContestPaintingWinner->personality
);
- sub_8106B90((u8*)gUnknown_081FAF4C[1], (u16*)gUnknown_03005E90, (u16*)gUnknown_03005E10);
+ _InitContestMonPixels((u8*)gMonSpriteGfx_Sprite_ptr[1], (u16*)gContestPaintingMonPalette, (u16*)gContestMonPixels);
}
else
{
@@ -332,18 +339,18 @@ static void sub_8106AC4(u16 species, u8 arg1)
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
- EWRAM,
- gUnknown_081FAF4C[0],
+ (void *)EWRAM,
+ gMonSpriteGfx_Sprite_ptr[0],
species,
- (u32)gUnknown_03005E8C->personality
+ (u32)gContestPaintingWinner->personality
);
- sub_8106B90((u8*)gUnknown_081FAF4C[0], (u16*)gUnknown_03005E90, (u16*)gUnknown_03005E10);
+ _InitContestMonPixels((u8*)gMonSpriteGfx_Sprite_ptr[0], (u16*)gContestPaintingMonPalette, (u16*)gContestMonPixels);
}
}
-static void sub_8106B90(u8 *a, u16 *b, u16 *c)
+static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 *destPixels)
{
- u16 i, j, k, l;
+ u16 tileY, tileX, pixelY, pixelX;
/*
Raw arithmetics are required to match this function.
@@ -353,70 +360,71 @@ static void sub_8106B90(u8 *a, u16 *b, u16 *c)
calculate dimensions manually (as seen in other functions),
tell that it may have been this way in the original code.
*/
- for (i = 0; i < 8; i++)
+ for (tileY = 0; tileY < 8; tileY++)
{
- for (j = 0; j < 8; j++)
+ for (tileX = 0; tileX < 8; tileX++)
{
- for (k = 0; k < 8; k++)
+ for (pixelY = 0; pixelY < 8; pixelY++)
{
- for (l = 0; l < 8; l++)
+ for (pixelX = 0; pixelX < 8; pixelX++)
{
- u8 temp = a[(((i * 8) + j) * 32) + (k << 2) + (l >> 1)];
+ u8 colorIndex = spriteGfx[(((tileY * 8) + tileX) * 32) + (pixelY << 2) + (pixelX >> 1)];
/*
The shifts have to be there to match r0 and r2's order in one instruction:
add r5, r2, r0
This also makes agbcc's expression order parsing even more super sensitive
and obscene when it comes to parentheses affecting regalloc regardless if
- unnecessary, requiring j must be placed in the front to match, or else
+ unnecessary, requiring tileX must be placed in the front to match, or else
regalloc breaks again and does this a few instructions above:
add r0, r3, r7 <- regswap
*/
- if (l & 1)
- temp /= 16;
+ if (pixelX & 1)
+ colorIndex /= 16;
else
- temp %= 16;
+ colorIndex %= 16;
// Same order as above needs to be written here, or else this happens:
// add r0, r7, r1 <- regswap
- if (temp == 0)
- *(u16 *)(c + (((i * 8) + k) << 6) + ((j * 8) + l)) = 0x8000;
+ if (colorIndex == 0)
+ *(u16 *)(destPixels + (((tileY * 8) + pixelY) << 6) + ((tileX * 8) + pixelX)) = 0x8000;
else
- *(u16 *)(c + (((i * 8) + k) << 6) + ((j * 8) + l)) = b[temp];
+ *(u16 *)(destPixels + (((tileY * 8) + pixelY) << 6) + ((tileX * 8) + pixelX)) =
+ palette[colorIndex];
}
}
}
}
}
-static void sub_8106C40(u8 arg0, u8 arg1)
+static void LoadContestPaintingFrame(u8 contestWinnerId, u8 isForArtist)
{
u8 x, y;
LoadPalette(gPictureFramePalettes, 0, sizeof(gPictureFramePalettes));
- if (arg1 == 1)
+ if (isForArtist == TRUE)
{
- switch (gUnknown_03005E8C->contestType / 3)
+ switch (gContestPaintingWinner->contestCategory / 3)
{
case CONTEST_COOL:
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_0, gUnknown_03005E10);
+ RLUnCompWram(gPictureFrameTilemap_0, gContestMonPixels);
break;
case CONTEST_BEAUTY:
RLUnCompVram(gPictureFrameTiles_1, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_1, gUnknown_03005E10);
+ RLUnCompWram(gPictureFrameTilemap_1, gContestMonPixels);
break;
case CONTEST_CUTE:
RLUnCompVram(gPictureFrameTiles_2, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_2, gUnknown_03005E10);
+ RLUnCompWram(gPictureFrameTilemap_2, gContestMonPixels);
break;
case CONTEST_SMART:
RLUnCompVram(gPictureFrameTiles_3, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_3, gUnknown_03005E10);
+ RLUnCompWram(gPictureFrameTilemap_3, gContestMonPixels);
break;
case CONTEST_TOUGH:
RLUnCompVram(gPictureFrameTiles_4, (void *)VRAM);
- RLUnCompWram(gPictureFrameTilemap_4, gUnknown_03005E10);
+ RLUnCompWram(gPictureFrameTilemap_4, gContestMonPixels);
break;
}
@@ -433,23 +441,23 @@ static void sub_8106C40(u8 arg0, u8 arg1)
for (y = 0; y < 10; y++)
{
for (x = 0; x < 18; x++)
- VRAM_PICTURE_DATA(x + 6, y + 2) = (*gUnknown_03005E10)[y + 2][x + 6];
+ VRAM_PICTURE_DATA(x + 6, y + 2) = (*gContestMonPixels)[y + 2][x + 6];
}
// Re-set the entire top row to the first top frame part
for (x = 0; x < 16; x++)
- VRAM_PICTURE_DATA(x + 7, 2) = (*gUnknown_03005E10)[2][7];
+ VRAM_PICTURE_DATA(x + 7, 2) = (*gContestMonPixels)[2][7];
#undef VRAM_PICTURE_DATA
}
- else if (arg0 < 8)
+ else if (contestWinnerId < 8)
{
RLUnCompVram(gPictureFrameTiles_5, (void *)VRAM);
RLUnCompVram(gPictureFrameTilemap_5, (void *)(VRAM + 0x6000));
}
else
{
- switch (gUnknown_03005E8C->contestType / 3)
+ switch (gContestPaintingWinner->contestCategory / 3)
{
case CONTEST_COOL:
RLUnCompVram(gPictureFrameTiles_0, (void *)VRAM);
@@ -475,32 +483,31 @@ static void sub_8106C40(u8 arg0, u8 arg1)
}
}
-static void sub_8106E98(u8 arg0)
+static void InitPaintingMonOamData(u8 contestWinnerId)
{
- //Some hacks just to get the asm to match
-#ifndef NONMATCHING
- asm(""::"r"(arg0));
-#endif
-
- gMain.oamBuffer[0] = gOamData_83F6138;
+ gMain.oamBuffer[0] = sContestPaintingMonOamData;
gMain.oamBuffer[0].tileNum = 0;
-#ifndef NONMATCHING
- if (arg0) arg0 = gMain.oamBuffer[0].tileNum;
-#endif
-
- gMain.oamBuffer[0].x = 88;
- gMain.oamBuffer[0].y = 24;
+ if (contestWinnerId > 1)
+ {
+ gMain.oamBuffer[0].x = 88;
+ gMain.oamBuffer[0].y = 24;
+ }
+ else // duplicated code branch
+ {
+ gMain.oamBuffer[0].x = 88;
+ gMain.oamBuffer[0].y = 24;
+ }
}
-static u8 sub_8106EE0(u8 arg0)
+static u8 GetImageEffectForContestWinner(u8 contestWinnerId)
{
u8 contestType;
- if (arg0 < 8)
- contestType = gUnknown_03005E8C->contestType;
+ if (contestWinnerId < 8)
+ contestType = gContestPaintingWinner->contestCategory;
else
- contestType = gUnknown_03005E8C->contestType / 3;
+ contestType = gContestPaintingWinner->contestCategory / 3;
switch (contestType)
{
@@ -519,55 +526,55 @@ static u8 sub_8106EE0(u8 arg0)
return contestType;
}
-static void sub_8106F4C(void)
+static void AllocPaintingResources(void)
{
- gUnknown_03005E90 = ewram15E00.unk2017e00;
- gUnknown_03005E10 = &ewram15E00.unk2015e00;
+ gContestPaintingMonPalette = eContestPaintingBuffers.palette;
+ gContestMonPixels = (void *)eContestPaintingBuffers.pixels;
}
-static void sub_8106F6C(u8 arg0)
+static void DoContestPaintingImageProcessing(u8 imageEffect)
{
- gUnknown_03005E20.var_4 = gUnknown_03005E10;
- gUnknown_03005E20.var_8 = gUnknown_03005E90;
- gUnknown_03005E20.var_18 = 0;
- gUnknown_03005E20.var_1F = gUnknown_03005E8C->personality % 256;
- gUnknown_03005E20.var_19 = 0;
- gUnknown_03005E20.var_1A = 0;
- gUnknown_03005E20.var_1B = 64;
- gUnknown_03005E20.var_1C = 64;
- gUnknown_03005E20.var_1D = 64;
- gUnknown_03005E20.var_1E = 64;
-
- switch (arg0)
+ gImageProcessingContext.canvasPixels = gContestMonPixels;
+ gImageProcessingContext.canvasPalette = gContestPaintingMonPalette;
+ gImageProcessingContext.paletteStart = 0;
+ gImageProcessingContext.personality = gContestPaintingWinner->personality % 256;
+ gImageProcessingContext.columnStart = 0;
+ gImageProcessingContext.rowStart = 0;
+ gImageProcessingContext.columnEnd = 64;
+ gImageProcessingContext.rowEnd = 64;
+ gImageProcessingContext.canvasWidth = 64;
+ gImageProcessingContext.canvasHeight = 64;
+
+ switch (imageEffect)
{
case CONTESTRESULT_SMART:
case CONTESTRESULT_TOUGH:
- gUnknown_03005E20.var_14 = 3;
+ gImageProcessingContext.quantizeEffect = QUANTIZE_EFFECT_GRAYSCALE;
break;
case CONTESTRESULT_COOL:
case CONTESTRESULT_BEAUTY:
case CONTESTRESULT_CUTE:
default:
- gUnknown_03005E20.var_14 = 1;
+ gImageProcessingContext.quantizeEffect = QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS;
break;
}
- gUnknown_03005E20.var_16 = 2;
- gUnknown_03005E20.var_0 = arg0;
- gUnknown_03005E20.var_10 = OBJ_VRAM0;
+ gImageProcessingContext.bgType = 2;
+ gImageProcessingContext.effect = imageEffect;
+ gImageProcessingContext.dest = OBJ_VRAM0;
- sub_80FC7A0(&gUnknown_03005E20);
- sub_80FDA18(&gUnknown_03005E20);
- sub_80FD8CC(&gUnknown_03005E20);
+ ApplyImageProcessingEffects(&gImageProcessingContext);
+ ApplyImageProcessingQuantization(&gImageProcessingContext);
+ ConvertImageProcessingToGBA(&gImageProcessingContext);
- LoadPalette(gUnknown_03005E90, 256, 256 * 2);
+ LoadPalette(gContestPaintingMonPalette, 256, 256 * 2);
}
-static void sub_8107090(u8 arg0, u8 arg1)
+static void CreateContestPaintingPicture(u8 contestWinnerId, u8 isForArtist)
{
- sub_8106F4C();
- sub_8106AC4(gUnknown_03005E8C->species, 0);
- sub_8106F6C(sub_8106EE0(arg0));
- sub_8106E98(arg0);
- sub_8106C40(arg0, arg1);
+ AllocPaintingResources();
+ InitContestMonPixels(gContestPaintingWinner->species, 0);
+ DoContestPaintingImageProcessing(GetImageEffectForContestWinner(contestWinnerId));
+ InitPaintingMonOamData(contestWinnerId);
+ LoadContestPaintingFrame(contestWinnerId, isForArtist);
}
diff --git a/src/contest_painting_effects.c b/src/contest_painting_effects.c
deleted file mode 100644
index ade91a0ec..000000000
--- a/src/contest_painting_effects.c
+++ /dev/null
@@ -1,1535 +0,0 @@
-#include "global.h"
-#include "contest_painting_effects.h"
-#include "contest_painting.h"
-
-extern const u8 gUnknown_083E7A50[][3];
-
-u16 (*gUnknown_03005DEC)[][32];
-u8 gUnknown_03005DE8;
-u8 gUnknown_03005DF0;
-u8 gUnknown_03005DFC;
-u8 gUnknown_03005DF8;
-u8 gUnknown_03005DF4;
-u8 gUnknown_03005E00;
-u8 gUnknown_03005E04;
-u16 * gUnknown_03005E08;
-u16 gUnknown_03005E0C;
-
-// this file's functions
-void sub_80FCAA4(void);
-void sub_80FCB5C(void);
-void sub_80FCD54(void);
-void sub_80FCEA4(void);
-void sub_80FCCBC(void);
-void sub_80FD06C(void);
-void sub_80FD114(void);
-void sub_80FCF3C(void);
-void sub_80FCAC4(void);
-void sub_80FCC18(u8);
-void sub_80FC92C(u8);
-void sub_80FC9E4(u8);
-void sub_80FD1C8(u16);
-u16 ConvertColorToGrayscale(u16*);
-u16 sub_80FD68C(u16*, u16*, u16*);
-u16 ConvertCoolColor(u16*, u8);
-u16 ConvertToBlackOrWhite(u16*);
-u16 sub_80FD50C(u16*, u16*);
-u16 InvertColor(u16*);
-u16 sub_80FD7AC(u16*, u16*, u16*);
-u16 sub_80FD568(u16*, u16*);
-u16 GetCoolColorFromPersonality(u8);
-void sub_80FDC18(bool8);
-void sub_80FDAE4(void);
-void sub_80FDF88(void);
-void sub_80FDBE4(void);
-void sub_80FDED8(void);
-void sub_80FDBA8(void);
-void sub_80FDE28(void);
-void sub_80FDB8C(void);
-void sub_80FDD70(void);
-u16 sub_80FE038(u16 *);
-u16 sub_80FE17C(u16 *);
-u16 sub_80FE1B0(u16 *);
-u16 sub_80FE0AC(u16 *);
-
-void sub_80FC7A0(struct Unk03005E20* info)
-{
- gUnknown_03005DEC = info->var_4;
- gUnknown_03005E00 = info->var_1F;
- gUnknown_03005DE8 = info->var_19;
- gUnknown_03005DFC = info->var_1A;
- gUnknown_03005DF8 = info->var_1B;
- gUnknown_03005DF0 = info->var_1C;
- gUnknown_03005E04 = info->var_1D;
- gUnknown_03005DF4 = info->var_1E;
- switch (info->var_0)
- {
- case 2:
- sub_80FCAA4();
- break;
- case 8:
- sub_80FCB5C();
- break;
- case 9:
- sub_80FCD54();
- sub_80FCC18(gUnknown_03005E00);
- break;
- case 10:
- sub_80FCD54();
- sub_80FCEA4();
- sub_80FCCBC();
- case 31:
- sub_80FCEA4();
- break;
- case 11:
- sub_80FCD54();
- sub_80FD06C();
- sub_80FD06C();
- sub_80FD114();
- sub_80FCCBC();
- break;
- case 13:
- sub_80FCF3C();
- break;
- case 30:
- sub_80FCD54();
- break;
- case 32:
- sub_80FD06C();
- break;
- case 33:
- sub_80FD114();
- break;
- case 6:
- sub_80FCAC4();
- sub_80FC92C(3);
- break;
- case 36:
- sub_80FCD54();
- sub_80FD06C();
- sub_80FD114();
- sub_80FCCBC();
- sub_80FCB5C();
- sub_80FCB5C();
- sub_80FC92C(2);
- sub_80FC9E4(4);
- break;
- }
-}
-
-#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r))
-
-void sub_80FC92C(u8 a0) // it changes palette someway somehow... .__.
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* pal = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, pal++)
- {
- if (!(0x8000 & *pal))
- {
- u8 val = (31 & *pal);
- val += a0;
- if (val > 31)
- val = 31;
-
- *pal = RGB2(val, val, val);
- }
- }
- }
-}
-
-void sub_80FC9E4(u8 a0)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* pal = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, pal++)
- {
- if (!(0x8000 & *pal))
- {
- u8 val = (31 & *pal);
- if (val > 31 - a0)
- val = 31 - (a0 >> 1);
-
- *pal = RGB2(val, val, val);
- }
- }
- }
-}
-
-void sub_80FCAA4(void)
-{
- u32 i;
- for (i = 0; i < 3200; i++)
- sub_80FD1C8(i);
-}
-
-void sub_80FCAC4(void)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* color = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, color++)
- {
- if (!(0x8000 & *color))
- {
- *color = ConvertColorToGrayscale(color);
- }
- }
- }
-}
-
-void sub_80FCB5C(void)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF8; i++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][gUnknown_03005DFC * gUnknown_03005E04];
- u16* palette = &var0[gUnknown_03005DE8 + i];
- u16 color = *palette;
- j = 1;
- palette += gUnknown_03005E04;
- while (j < gUnknown_03005DF0 - 1)
- {
- if (!(0x8000 & *palette))
- {
- *palette = sub_80FD68C(&color, palette, palette + gUnknown_03005E04);
- color = *palette;
- }
-
- j++;
- palette += gUnknown_03005E04;
- }
- }
-}
-
-void sub_80FCC18(u8 arg0)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* color = &var0[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, color++)
- {
- if (!(0x8000 & *color))
- {
- *color = ConvertCoolColor(color, arg0);
- }
- }
- }
-}
-
-void sub_80FCCBC(void)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* color = &var0[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, color++)
- {
- if (!(0x8000 & *color))
- {
- *color = ConvertToBlackOrWhite(color);
- }
- }
- }
-}
-
-void sub_80FCD54(void)
-{
- u8 i, j;
- u16 *palette;
-
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- palette = &var0[gUnknown_03005DE8];
- *palette = sub_80FD50C(palette, palette + 1);
- for (j = 1, palette = palette + 1; j < gUnknown_03005DF8 - 1; j++, palette++)
- {
- *palette = sub_80FD50C(palette, palette + 1);
- *palette = sub_80FD50C(palette, palette - 1);
- }
-
- *palette = sub_80FD50C(palette, palette - 1);
- }
-
- for (j = 0; j < gUnknown_03005DF8; j++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][gUnknown_03005DFC * gUnknown_03005E04];
- palette = &var0[gUnknown_03005DE8 + j];
- *palette = sub_80FD50C(palette, palette + gUnknown_03005E04);
- for (i = 1, palette = palette + gUnknown_03005E04; i < gUnknown_03005DF0 - 1; i++, palette += gUnknown_03005E04)
- {
- *palette = sub_80FD50C(palette, palette + gUnknown_03005E04);
- *palette = sub_80FD50C(palette, palette - gUnknown_03005E04);
- }
-
- *palette = sub_80FD50C(palette, palette - gUnknown_03005E04);
- }
-}
-
-void sub_80FCEA4(void)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* color = &var0[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, color++)
- {
- if (!(0x8000 & *color))
- {
- *color = InvertColor(color);
- }
- }
- }
-}
-
-void sub_80FCF3C(void)
-{
- u8 i, j;
- u16 *palette;
- u16 color;
-
- palette = (*gUnknown_03005DEC)[0];
- for (i = 0; i < 64; i++)
- {
- for (j = 0; j < 64; j++, palette++)
- {
- if (!(0x8000 & *palette))
- {
- *palette = InvertColor(palette);
- }
- }
- }
-
- for (j = 0; j < 64; j++)
- {
- palette = &(*gUnknown_03005DEC)[0][j];
- color = *palette;
- *palette = 0x8000;
- for (i = 1, palette += 64; i < 63; i++, palette += 64)
- {
- if (!(0x8000 & *palette))
- {
- *palette = sub_80FD7AC(&color, palette, palette + 64);
- color = *palette;
- }
- }
-
- *palette = 0x8000;
- palette = &(*gUnknown_03005DEC)[0][j];
- color = *palette;
- *palette = 0x8000;
- for (i = 1, palette += 64; i < 63; i++, palette += 64)
- {
- if (!(0x8000 & *palette))
- {
- *palette = sub_80FD7AC(&color, palette, palette + 64);
- color = *palette;
- }
- }
-
- *palette = 0x8000;
- }
-
- palette = (*gUnknown_03005DEC)[0];
- for (i = 0; i < 64; i++)
- {
- for (j = 0; j < 64; j++, palette++)
- {
- if (!(0x8000 & *palette))
- {
- *palette = InvertColor(palette);
- }
- }
- }
-}
-
-void sub_80FD06C(void)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* palette = &var0[gUnknown_03005DE8];
- u16 color = *palette;
- for (j = 1, palette++; j < gUnknown_03005DF8 - 1; j++, palette++)
- {
- if (!(0x8000 & *palette))
- {
- *palette = sub_80FD568(&color, palette);
- color = *palette;
- }
- }
- }
-}
-
-void sub_80FD114(void)
-{
- u8 i, j;
- for (i = 0; i < gUnknown_03005DF8; i++)
- {
- u16* var0 = &(*gUnknown_03005DEC)[0][gUnknown_03005DFC * gUnknown_03005E04];
- u16* palette = &var0[gUnknown_03005DE8 + i];
- u16 color = *palette;
- for (j = 1, palette += gUnknown_03005E04; j < gUnknown_03005DF0 - 1; j++, palette += gUnknown_03005E04)
- {
- if (!(0x8000 & *palette))
- {
- *palette = sub_80FD568(&color, palette);
- color = *palette;
- }
- }
- }
-}
-
-NAKED
-void sub_80FD1C8(u16 arg0)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x20\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- mov r2, sp\n\
- ldr r3, _080FD234 @ =gUnknown_083E7A50\n\
- lsls r1, r0, 1\n\
- add r1, r10\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- strb r0, [r2]\n\
- adds r0, r3, 0x1\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x1]\n\
- mov r5, sp\n\
- adds r0, r3, 0x2\n\
- adds r1, r0\n\
- ldrb r4, [r1]\n\
- lsls r2, r4, 24\n\
- lsrs r1, r2, 27\n\
- movs r0, 0x7\n\
- ands r1, r0\n\
- strh r1, [r5, 0x2]\n\
- lsrs r2, 25\n\
- mov r9, r2\n\
- movs r0, 0x3\n\
- ands r2, r0\n\
- mov r9, r2\n\
- movs r5, 0x1\n\
- ands r5, r4\n\
- movs r4, 0x1\n\
- mov r8, r4\n\
- cmp r8, r1\n\
- bcs _080FD27A\n\
- mov r3, sp\n\
-_080FD21A:\n\
- cmp r5, 0\n\
- bne _080FD238\n\
- mov r0, r8\n\
- lsls r2, r0, 2\n\
- mov r4, sp\n\
- adds r1, r4, r2\n\
- ldrb r0, [r3]\n\
- mov r4, r8\n\
- subs r0, r4\n\
- strb r0, [r1]\n\
- ldrb r0, [r3, 0x1]\n\
- add r0, r8\n\
- b _080FD24A\n\
- .align 2, 0\n\
-_080FD234: .4byte gUnknown_083E7A50\n\
-_080FD238:\n\
- mov r0, r8\n\
- lsls r2, r0, 2\n\
- mov r4, sp\n\
- adds r1, r4, r2\n\
- ldrb r0, [r3]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- ldrb r0, [r3, 0x1]\n\
- subs r0, 0x1\n\
-_080FD24A:\n\
- strb r0, [r1, 0x1]\n\
- add r2, sp\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3F\n\
- bhi _080FD25A\n\
- ldrb r0, [r2, 0x1]\n\
- cmp r0, 0x3F\n\
- bls _080FD262\n\
-_080FD25A:\n\
- mov r0, r8\n\
- subs r0, 0x1\n\
- strh r0, [r3, 0x2]\n\
- b _080FD27A\n\
-_080FD262:\n\
- ldrh r0, [r3, 0x2]\n\
- mov r1, r8\n\
- subs r0, r1\n\
- strh r0, [r2, 0x2]\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- ldrh r0, [r3, 0x2]\n\
- cmp r8, r0\n\
- bcc _080FD21A\n\
-_080FD27A:\n\
- movs r2, 0\n\
- mov r8, r2\n\
- mov r0, sp\n\
- ldrh r0, [r0, 0x2]\n\
- cmp r8, r0\n\
- bcc _080FD288\n\
- b _080FD38A\n\
-_080FD288:\n\
- movs r3, 0x1F\n\
-_080FD28A:\n\
- ldr r1, _080FD2E8 @ =gUnknown_03005DEC\n\
- mov r4, r8\n\
- lsls r0, r4, 2\n\
- mov r2, sp\n\
- adds r6, r2, r0\n\
- ldrb r0, [r6, 0x1]\n\
- lsls r0, 7\n\
- ldr r1, [r1]\n\
- adds r1, r0\n\
- ldrb r0, [r6]\n\
- lsls r0, 1\n\
- adds r2, r1, r0\n\
- ldrh r1, [r2]\n\
- movs r4, 0x80\n\
- lsls r4, 8\n\
- adds r0, r4, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080FD376\n\
- movs r7, 0x1F\n\
- ands r7, r1\n\
- lsls r0, r1, 16\n\
- lsrs r5, r0, 21\n\
- ands r5, r3\n\
- lsrs r4, r0, 26\n\
- ands r4, r3\n\
- mov r0, r9\n\
- cmp r0, 0\n\
- blt _080FD36C\n\
- cmp r0, 0x1\n\
- ble _080FD2EC\n\
- cmp r0, 0x3\n\
- bgt _080FD36C\n\
- ldrh r0, [r6, 0x2]\n\
- adds r1, r7, r0\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- adds r1, r5, r0\n\
- lsls r1, 16\n\
- lsrs r5, r1, 16\n\
- adds r0, r4, r0\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r7, 0x1F\n\
- bls _080FD360\n\
- movs r7, 0x1F\n\
- b _080FD360\n\
- .align 2, 0\n\
-_080FD2E8: .4byte gUnknown_03005DEC\n\
-_080FD2EC:\n\
- mov r1, r10\n\
- lsls r0, r1, 1\n\
- add r0, r10\n\
- ldr r1, _080FD320 @ =gUnknown_083E7A50\n\
- adds r1, 0x2\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- lsrs r0, 3\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- movs r1, 0x3\n\
- str r2, [sp, 0x18]\n\
- str r3, [sp, 0x1C]\n\
- bl __umodsi3\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r2, [sp, 0x18]\n\
- ldr r3, [sp, 0x1C]\n\
- cmp r0, 0x1\n\
- beq _080FD33C\n\
- cmp r0, 0x1\n\
- bgt _080FD324\n\
- cmp r0, 0\n\
- beq _080FD32A\n\
- b _080FD36C\n\
- .align 2, 0\n\
-_080FD320: .4byte gUnknown_083E7A50\n\
-_080FD324:\n\
- cmp r0, 0x2\n\
- beq _080FD34E\n\
- b _080FD36C\n\
-_080FD32A:\n\
- ldrh r0, [r6, 0x2]\n\
- cmp r7, r0\n\
- bcc _080FD338\n\
- subs r0, r7, r0\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- b _080FD36C\n\
-_080FD338:\n\
- movs r7, 0\n\
- b _080FD36C\n\
-_080FD33C:\n\
- ldrh r0, [r6, 0x2]\n\
- cmp r5, r0\n\
- bcc _080FD34A\n\
- subs r0, r5, r0\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- b _080FD36C\n\
-_080FD34A:\n\
- movs r5, 0\n\
- b _080FD36C\n\
-_080FD34E:\n\
- ldrh r0, [r6, 0x2]\n\
- cmp r4, r0\n\
- bcc _080FD35C\n\
- subs r0, r4, r0\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- b _080FD36C\n\
-_080FD35C:\n\
- movs r4, 0\n\
- b _080FD36C\n\
-_080FD360:\n\
- cmp r5, 0x1F\n\
- bls _080FD366\n\
- movs r5, 0x1F\n\
-_080FD366:\n\
- cmp r4, 0x1F\n\
- bls _080FD36C\n\
- movs r4, 0x1F\n\
-_080FD36C:\n\
- lsls r0, r4, 10\n\
- lsls r1, r5, 5\n\
- orrs r0, r1\n\
- orrs r7, r0\n\
- strh r7, [r2]\n\
-_080FD376:\n\
- mov r0, r8\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r8, r0\n\
- mov r0, sp\n\
- ldrh r0, [r0, 0x2]\n\
- cmp r8, r0\n\
- bcs _080FD38A\n\
- b _080FD28A\n\
-_080FD38A:\n\
- add sp, 0x20\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-
-u16 ConvertColorToGrayscale(u16 *color)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
- u16 average = (red + green + blue) / 3;
- return RGB2(average, average, average);
-}
-
-// The dark colors are the colored edges of the Cool painting effect.
-// Everything else is white.
-u16 ConvertCoolColor(u16 *color, u8 personality)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
- if (red < 17 && green < 17 && blue < 17)
- return GetCoolColorFromPersonality(personality);
- else
- return RGB2(31, 31, 31);
-}
-
-// Based on the given value, which comes from the first 8 bits of
-// the mon's personality value, return a color.
-u16 GetCoolColorFromPersonality(u8 personality)
-{
- u16 red = 0;
- u16 green = 0;
- u16 blue = 0;
- u8 strength = (personality / 6) % 3;
- u8 colorType = personality % 6;
-
- switch (colorType)
- {
- case 0:
- // Teal color
- green = 21 - strength;
- blue = green;
- red = 0;
- break;
- case 1:
- // Yellow color
- blue = 0;
- red = 21 - strength;
- green = red;
- break;
- case 2:
- // Purple color
- blue = 21 - strength;
- green = 0;
- red = blue;
- break;
- case 3:
- // Red color
- blue = 0;
- green = 0;
- red = 23 - strength;
- break;
- case 4:
- // Blue color
- blue = 23 - strength;
- green = 0;
- red = 0;
- break;
- case 5:
- // Green color
- blue = 0;
- green = 23 - strength;
- red = 0;
- break;
- }
-
- return RGB2(red, green, blue);
-}
-
-u16 ConvertToBlackOrWhite(u16 *color)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
- if (red < 17 && green < 17 && blue < 17)
- return RGB2(0, 0, 0);
- else
- return RGB2(31, 31, 31);
-}
-
-u16 sub_80FD50C(u16 *colorA, u16 *colorB)
-{
- if (*colorA)
- {
- if (*colorA & 0x8000)
- return 0x8000;
- if (*colorB & 0x8000)
- return RGB2(0, 0, 0);
-
- return *colorA;
- }
-
- return RGB2(0, 0, 0);
-}
-
-u16 InvertColor(u16 *color)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
- red = 31 - red;
- green = 31 - green;
- blue = 31 - blue;
-
- return RGB2(red, green, blue);
-}
-
-u16 sub_80FD568(u16 *a0, u16 *a1)
-{
- u16 sp0[2][3];
- u16 spC[3];
- u8 r4;
- u16 r2;
- u16 r, g, b;
-
- if (*a0 == *a1)
- return *a1;
-
- sp0[0][0] = (*a0 >> 0) & 0x1F;
- sp0[0][1] = (*a0 >> 5) & 0x1F;
- sp0[0][2] = (*a0 >> 10) & 0x1F;
- sp0[1][0] = (*a1 >> 0) & 0x1F;
- sp0[1][1] = (*a1 >> 5) & 0x1F;
- sp0[1][2] = (*a1 >> 10) & 0x1F;
-
- if (sp0[0][0] > 25 && sp0[0][1] > 25 && sp0[0][2] > 25)
- return *a1;
- if (sp0[1][0] > 25 && sp0[1][1] > 25 && sp0[1][2] > 25)
- return *a1;
-
- for (r4 = 0; r4 < 3; r4++)
- {
- if (sp0[0][r4] > sp0[1][r4])
- spC[r4] = sp0[0][r4] - sp0[1][r4];
- else
- spC[r4] = sp0[1][r4] - sp0[0][r4];
- }
-
- if (spC[0] >= spC[1])
- {
- if (spC[0] >= spC[2])
- r2 = spC[0];
- else if (spC[1] >= spC[2])
- r2 = spC[1];
- else
- r2 = spC[2];
- }
- else
- {
- if (spC[1] >= spC[2])
- r2 = spC[1];
- else if (spC[2] >= spC[0])
- r2 = spC[2];
- else
- r2 = spC[0];
- }
-
- r = (sp0[1][0] * (31 - r2 / 2)) / 31;
- g = (sp0[1][1] * (31 - r2 / 2)) / 31;
- b = (sp0[1][2] * (31 - r2 / 2)) / 31;
- return RGB2(r, g, b);
-}
-
-u16 sub_80FD68C(u16 * a0, u16 * a1, u16 * a2)
-{
- u16 red, green, blue;
- u16 avg0, avg1, avg2;
- u16 diff1, diff2;
- u32 minimum;
- u16 factor;
-
- if (*a0 == *a1 && *a2 == *a1)
- return *a1;
-
- red = (*a1 >> 0) & 0x1F;
- green = (*a1 >> 5) & 0x1F;
- blue = (*a1 >> 10) & 0x1F;
-
- avg0 = (((*a0 >> 0) & 0x1F) + ((*a0 >> 5) & 0x1F) + ((*a0 >> 10) & 0x1F)) / 3;
- avg1 = (((*a1 >> 0) & 0x1F) + ((*a1 >> 5) & 0x1F) + ((*a1 >> 10) & 0x1F)) / 3;
- avg2 = (((*a2 >> 0) & 0x1F) + ((*a2 >> 5) & 0x1F) + ((*a2 >> 10) & 0x1F)) / 3;
-
- if (avg0 == avg1 && avg2 == avg1)
- return *a1;
-
- if (avg0 > avg1)
- diff1 = avg0 - avg1;
- else
- diff1 = avg1 - avg0;
-
- if (avg2 > avg1)
- diff2 = avg2 - avg1;
- else
- diff2 = avg1 - avg2;
-
- if (diff1 >= diff2)
- minimum = diff1;
- else
- minimum = diff2;
-
- factor = 31 - minimum / 2;
- red = red * factor / 31;
- green = green * factor / 31;
- blue = blue * factor / 31;
- return RGB2(red, green, blue);
-}
-
-u16 sub_80FD7AC(u16 *a0, u16 *a1, u16 *a2)
-{
- u16 red, green, blue;
- u16 avg0, avg1, avg2;
- u16 diff1, diff2;
- u32 minimum;
- u16 factor;
-
- if (*a0 == *a1 && *a2 == *a1)
- return *a1;
-
- red = (*a1 >> 0) & 0x1F;
- green = (*a1 >> 5) & 0x1F;
- blue = (*a1 >> 10) & 0x1F;
-
- avg0 = (((*a0 >> 0) & 0x1F) + ((*a0 >> 5) & 0x1F) + ((*a0 >> 10) & 0x1F)) / 3;
- avg1 = (((*a1 >> 0) & 0x1F) + ((*a1 >> 5) & 0x1F) + ((*a1 >> 10) & 0x1F)) / 3;
- avg2 = (((*a2 >> 0) & 0x1F) + ((*a2 >> 5) & 0x1F) + ((*a2 >> 10) & 0x1F)) / 3;
-
- if (avg0 == avg1 && avg2 == avg1)
- return *a1;
-
- if (avg0 > avg1)
- diff1 = avg0 - avg1;
- else
- diff1 = avg1 - avg0;
-
- if (avg2 > avg1)
- diff2 = avg2 - avg1;
- else
- diff2 = avg1 - avg2;
-
- if (diff1 >= diff2)
- minimum = diff1;
- else
- minimum = diff2;
-
- factor = 31 - minimum;
- red = red * factor / 31;
- green = green * factor / 31;
- blue = blue * factor / 31;
- return RGB2(red, green, blue);
-}
-
-/*
-void sub_80FD8CC(struct Unk03005E20 * a0)
-{
- u16 i, j, k;
- u8 r5 = a0->var_1D >> 3;
- u8 sp08 = a0->var_1E >> 3;
- u16 * sp00 = (u16 *)a0->var_4;
- u16 * sp04 = (u16 *)a0->var_10;
- if (a0->var_16 == 2)
- {
- for (i = 0; i < sp08; i++)
- {
- for (j = 0; j < r5; j++)
- {
- for (k = 0; k < 8; k++)
- {
- u16 * r3 = &sp04[i * r5 * 32 + 4 * k];
- u16 * r2 = &sp00[j * 8 + (i * 8 + k) * 8 * r5];
- r3[0] = r2[0] | (r2[1] << 8);
- r3[1] = r2[2] | (r2[3] << 8);
- r3[2] = r2[4] | (r2[5] << 8);
- r3[3] = r2[6] | (r2[7] << 8);
- }
- }
- }
- }
- else
- {
- for (i = 0; i < sp08; i++)
- {
- for (j = 0; j < r5; j++)
- {
- for (k = 0; k < 8; k++)
- {
- u16 * r3 = &sp04[i * r5 * 16 + 2 * k];
- u16 * r2 = &sp00[j * 8 + (i * 8 + k) * 8 * r5];
- r3[0] = r2[0] | (r2[1] << 4) | (r2[2] << 8) | (r2[3] << 12);
- r3[1] = r2[4] | (r2[5] << 4) | (r2[6] << 8) | (r2[7] << 12);
- }
- }
- }
- }
-}
-*/
-
-NAKED
-void sub_80FD8CC(struct Unk03005E20 * a0)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0xC\n"
- "\tldrb r1, [r0, 0x1D]\n"
- "\tlsrs r5, r1, 3\n"
- "\tldrb r1, [r0, 0x1E]\n"
- "\tlsrs r1, 3\n"
- "\tstr r1, [sp, 0x8]\n"
- "\tldr r1, [r0, 0x4]\n"
- "\tstr r1, [sp]\n"
- "\tldr r2, [r0, 0x10]\n"
- "\tstr r2, [sp, 0x4]\n"
- "\tldrh r0, [r0, 0x16]\n"
- "\tcmp r0, 0x2\n"
- "\tbne _080FD97C\n"
- "\tmovs r1, 0\n"
- "\tldr r0, [sp, 0x8]\n"
- "\tcmp r1, r0\n"
- "\tbcc _080FD8FA\n"
- "\tb _080FDA08\n"
- "_080FD8FA:\n"
- "\tmovs r0, 0\n"
- "\tadds r2, r1, 0x1\n"
- "\tmov r10, r2\n"
- "\tcmp r0, r5\n"
- "\tbcs _080FD96E\n"
- "\tadds r2, r1, 0\n"
- "\tmuls r2, r5\n"
- "\tmov r9, r2\n"
- "\tlsls r1, 3\n"
- "\tmov r8, r1\n"
- "_080FD90E:\n"
- "\tmovs r4, 0\n"
- "\tlsls r6, r0, 4\n"
- "\tadds r7, r0, 0x1\n"
- "\tadd r0, r9\n"
- "\tlsls r0, 6\n"
- "\tldr r1, [sp, 0x4]\n"
- "\tadds r1, r0\n"
- "\tmov r12, r1\n"
- "_080FD91E:\n"
- "\tlsls r0, r4, 3\n"
- "\tmov r2, r12\n"
- "\tadds r3, r2, r0\n"
- "\tmov r1, r8\n"
- "\tadds r0, r1, r4\n"
- "\tlsls r0, 3\n"
- "\tmuls r0, r5\n"
- "\tlsls r0, 1\n"
- "\tldr r2, [sp]\n"
- "\tadds r0, r2, r0\n"
- "\tadds r2, r0, r6\n"
- "\tldrh r0, [r2, 0x2]\n"
- "\tlsls r0, 8\n"
- "\tldrh r1, [r2]\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r3]\n"
- "\tldrh r0, [r2, 0x6]\n"
- "\tlsls r0, 8\n"
- "\tldrh r1, [r2, 0x4]\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r3, 0x2]\n"
- "\tldrh r0, [r2, 0xA]\n"
- "\tlsls r0, 8\n"
- "\tldrh r1, [r2, 0x8]\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r3, 0x4]\n"
- "\tldrh r0, [r2, 0xE]\n"
- "\tlsls r0, 8\n"
- "\tldrh r1, [r2, 0xC]\n"
- "\torrs r0, r1\n"
- "\tstrh r0, [r3, 0x6]\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r4, r0, 16\n"
- "\tcmp r4, 0x7\n"
- "\tbls _080FD91E\n"
- "\tlsls r0, r7, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, r5\n"
- "\tbcc _080FD90E\n"
- "_080FD96E:\n"
- "\tmov r1, r10\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r1, r0, 16\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tcmp r1, r2\n"
- "\tbcc _080FD8FA\n"
- "\tb _080FDA08\n"
- "_080FD97C:\n"
- "\tmovs r1, 0\n"
- "\tldr r0, [sp, 0x8]\n"
- "\tcmp r1, r0\n"
- "\tbcs _080FDA08\n"
- "_080FD984:\n"
- "\tmovs r0, 0\n"
- "\tadds r2, r1, 0x1\n"
- "\tmov r10, r2\n"
- "\tcmp r0, r5\n"
- "\tbcs _080FD9FC\n"
- "\tadds r2, r1, 0\n"
- "\tmuls r2, r5\n"
- "\tmov r9, r2\n"
- "\tlsls r1, 3\n"
- "\tmov r8, r1\n"
- "_080FD998:\n"
- "\tmovs r4, 0\n"
- "\tlsls r6, r0, 4\n"
- "\tadds r7, r0, 0x1\n"
- "\tadd r0, r9\n"
- "\tlsls r0, 5\n"
- "\tldr r1, [sp, 0x4]\n"
- "\tadds r1, r0\n"
- "\tmov r12, r1\n"
- "_080FD9A8:\n"
- "\tlsls r0, r4, 2\n"
- "\tmov r2, r12\n"
- "\tadds r3, r2, r0\n"
- "\tmov r1, r8\n"
- "\tadds r0, r1, r4\n"
- "\tlsls r0, 3\n"
- "\tmuls r0, r5\n"
- "\tlsls r0, 1\n"
- "\tldr r2, [sp]\n"
- "\tadds r0, r2, r0\n"
- "\tadds r2, r0, r6\n"
- "\tldrh r1, [r2, 0x2]\n"
- "\tlsls r1, 4\n"
- "\tldrh r0, [r2]\n"
- "\torrs r1, r0\n"
- "\tldrh r0, [r2, 0x4]\n"
- "\tlsls r0, 8\n"
- "\torrs r1, r0\n"
- "\tldrh r0, [r2, 0x6]\n"
- "\tlsls r0, 12\n"
- "\torrs r1, r0\n"
- "\tstrh r1, [r3]\n"
- "\tldrh r1, [r2, 0xA]\n"
- "\tlsls r1, 4\n"
- "\tldrh r0, [r2, 0x8]\n"
- "\torrs r1, r0\n"
- "\tldrh r0, [r2, 0xC]\n"
- "\tlsls r0, 8\n"
- "\torrs r1, r0\n"
- "\tldrh r0, [r2, 0xE]\n"
- "\tlsls r0, 12\n"
- "\torrs r1, r0\n"
- "\tstrh r1, [r3, 0x2]\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r4, r0, 16\n"
- "\tcmp r4, 0x7\n"
- "\tbls _080FD9A8\n"
- "\tlsls r0, r7, 16\n"
- "\tlsrs r0, 16\n"
- "\tcmp r0, r5\n"
- "\tbcc _080FD998\n"
- "_080FD9FC:\n"
- "\tmov r1, r10\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r1, r0, 16\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tcmp r1, r2\n"
- "\tbcc _080FD984\n"
- "_080FDA08:\n"
- "\tadd sp, 0xC\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0");
-}
-
-void sub_80FDA18(struct Unk03005E20 *arg0)
-{
- gUnknown_03005E0C = arg0->var_18 * 16;
- gUnknown_03005E08 = &arg0->var_8[gUnknown_03005E0C];
- gUnknown_03005DEC = arg0->var_4;
- gUnknown_03005DE8 = arg0->var_19;
- gUnknown_03005DFC = arg0->var_1A;
- gUnknown_03005DF8 = arg0->var_1B;
- gUnknown_03005DF0 = arg0->var_1C;
- gUnknown_03005E04 = arg0->var_1D;
- gUnknown_03005DF4 = arg0->var_1E;
-
- switch (arg0->var_14)
- {
- case 0:
- sub_80FDC18(FALSE);
- break;
- case 1:
- sub_80FDC18(TRUE);
- break;
- case 2:
- sub_80FDAE4();
- sub_80FDF88();
- break;
- case 3:
- sub_80FDBE4();
- sub_80FDED8();
- break;
- case 4:
- sub_80FDBA8();
- sub_80FDE28();
- break;
- case 5:
- sub_80FDB8C();
- sub_80FDD70();
- break;
- }
-}
-
-void sub_80FDAE4(void)
-{
- gUnknown_03005E08[0] = RGB2(0, 0, 0);
- gUnknown_03005E08[1] = RGB2(6, 6, 6);
- gUnknown_03005E08[2] = RGB2(29, 29, 29);
- gUnknown_03005E08[3] = RGB2(11, 11, 11);
- gUnknown_03005E08[4] = RGB2(29, 6, 6);
- gUnknown_03005E08[5] = RGB2(6, 29, 6);
- gUnknown_03005E08[6] = RGB2(6, 6, 29);
- gUnknown_03005E08[7] = RGB2(29, 29, 6);
- gUnknown_03005E08[8] = RGB2(29, 6, 29);
- gUnknown_03005E08[9] = RGB2(6, 29, 29);
- gUnknown_03005E08[10] = RGB2(29, 11, 6);
- gUnknown_03005E08[11] = RGB2(11, 29, 6);
- gUnknown_03005E08[12] = RGB2(6, 11, 29);
- gUnknown_03005E08[13] = RGB2(29, 6, 11);
- gUnknown_03005E08[14] = RGB2(6, 29, 11);
- gUnknown_03005E08[15] = RGB2(11, 6, 29);
-}
-
-void sub_80FDB8C(void)
-{
- gUnknown_03005E08[0] = RGB2(0, 0, 0);
- gUnknown_03005E08[1] = RGB2(0, 0, 0);
- gUnknown_03005E08[2] = RGB2(31, 31, 31);
-}
-
-void sub_80FDBA8(void)
-{
- u8 i;
-
- gUnknown_03005E08[0] = RGB2(0, 0, 0);
- gUnknown_03005E08[1] = RGB2(0, 0, 0);
- for (i = 0; i < 14; i++)
- gUnknown_03005E08[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2));
-}
-
-void sub_80FDBE4(void)
-{
- u8 i;
-
- gUnknown_03005E08[0] = RGB2(0, 0, 0);
- for (i = 0; i < 32; i++)
- gUnknown_03005E08[i + 1] = RGB2(i, i, i);
-}
-
-void sub_80FDC18(bool8 arg0)
-{
- u8 i, j;
- u16 maxIndex;
-
- maxIndex = 0xDF;
- if (!arg0)
- maxIndex = 0xFF;
-
- for (j = 0; j < maxIndex; j++)
- gUnknown_03005E08[j] = 0;
-
- gUnknown_03005E08[maxIndex] = RGB2(15, 15, 15);
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* pal = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, pal++)
- {
- if (*pal & 0x8000)
- {
- *pal = gUnknown_03005E0C;
- }
- else
- {
- u16 color = sub_80FE038(pal);
- u8 curIndex = 1;
- if (curIndex < maxIndex)
- {
- if (gUnknown_03005E08[curIndex] == RGB_BLACK)
- {
- gUnknown_03005E08[curIndex] = color;
- *pal = gUnknown_03005E0C + curIndex;
- }
- else
- {
- while (curIndex < maxIndex)
- {
- if (gUnknown_03005E08[curIndex] == RGB_BLACK)
- {
- gUnknown_03005E08[curIndex] = color;
- *pal = gUnknown_03005E0C + curIndex;
- break;
- }
-
- if (gUnknown_03005E08[curIndex] == color)
- {
- *pal = gUnknown_03005E0C + curIndex;
- break;
- }
-
- curIndex++;
- }
- }
- }
-
- if (curIndex == maxIndex)
- {
- curIndex = maxIndex;
- *pal = curIndex;
- }
- }
- }
- }
-}
-
-void sub_80FDD70(void)
-{
- u8 i, j;
-
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* pal = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, pal++)
- {
- if (*pal & 0x8000)
- {
- *pal = gUnknown_03005E0C;
- }
- else
- {
- if (ConvertToBlackOrWhite(pal) == RGB_BLACK)
- *pal = gUnknown_03005E0C + 1;
- else
- *pal = gUnknown_03005E0C + 2;
- }
- }
- }
-}
-
-void sub_80FDE28(void)
-{
- u8 i, j;
-
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* pal = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, pal++)
- {
- if (*pal & 0x8000)
- *pal = gUnknown_03005E0C;
- else
- *pal = sub_80FE17C(pal) + gUnknown_03005E0C;
- }
- }
-}
-
-void sub_80FDED8(void)
-{
- u8 i, j;
-
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* pal = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, pal++)
- {
- if (*pal & 0x8000)
- *pal = gUnknown_03005E0C;
- else
- *pal = sub_80FE1B0(pal) + gUnknown_03005E0C;
- }
- }
-}
-
-void sub_80FDF88(void)
-{
- u8 i, j;
-
- for (i = 0; i < gUnknown_03005DF0; i++)
- {
- u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
- u16* pal = &var2[gUnknown_03005DE8];
- for (j = 0; j < gUnknown_03005DF8; j++, pal++)
- {
- if (*pal & 0x8000)
- *pal = gUnknown_03005E0C;
- else
- *pal = sub_80FE0AC(pal) + gUnknown_03005E0C;
- }
- }
-}
-
-u16 sub_80FE038(u16 *color)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
-
- if (red & 3)
- red = (red & 0x1C) + 4;
- if (green & 3)
- green = (green & 0x1C) + 4;
- if (blue & 3)
- blue = (blue & 0x1C) + 4;
-
- if (red < 6)
- red = 6;
- if (red > 30)
- red = 30;
-
- if (green < 6)
- green = 6;
- if (green > 30)
- green = 30;
-
- if (blue < 6)
- blue = 6;
- if (blue > 30)
- blue = 30;
-
- return RGB2(red, green, blue);
-}
-
-u16 sub_80FE0AC(u16* color)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
-
- if (red < 12 && green < 11 && blue < 11)
- return 1;
-
- if (red > 19 && green > 19 && blue > 19)
- return 2;
-
- if (red > 19)
- {
- if (green > 19)
- {
- if (blue > 14)
- return 2;
- else
- return 7;
- }
- else if (blue > 19)
- {
- if (green > 14)
- return 2;
- else
- return 8;
- }
- }
-
- if (green > 19 && blue > 19)
- {
- if (red > 14)
- return 2;
- else
- return 9;
- }
-
- if (red > 19)
- {
- if (green > 11)
- {
- if (blue > 11)
- {
- if (green < blue)
- return 8;
- else
- return 7;
- }
- else
- {
- return 10;
- }
- }
- else if (blue > 11)
- {
- return 13;
- }
- else
- {
- return 4;
- }
- }
-
- if (green > 19)
- {
- if (red > 11)
- {
- if (blue > 11)
- {
- if (red < blue)
- return 9;
- else
- return 7;
- }
- else
- {
- return 11;
- }
- }
- else
- {
- if (blue > 11)
- return 14;
- else
- return 5;
- }
- }
-
- if (blue > 19)
- {
- if (red > 11)
- {
- if (green > 11)
- {
- if (red < green)
- return 9;
- else
- return 8;
- }
- }
- else if (green > 11)
- {
- return 12;
- }
-
- if (blue > 11)
- return 15;
- else
- return 6;
- }
-
- return 3;
-}
-
-u16 sub_80FE17C(u16 *color)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
- u16 average = ((red + green + blue) / 3) & 0x1E;
- if (average == 0)
- return 1;
- else
- return average / 2;
-}
-
-u16 sub_80FE1B0(u16 *color)
-{
- u16 red = *color & 0x1F;
- u16 green = (*color >> 5) & 0x1F;
- u16 blue = (*color >> 10) & 0x1F;
- u16 average = (red + green + blue) / 3;
- return average + 1;
-}
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/contest_util.c
index c405d9cb4..f4c3c2e1c 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/contest_util.c
@@ -1,33 +1,33 @@
#include "global.h"
+#include "contest_util.h"
#include "battle.h"
#include "berry.h"
#include "choose_party.h"
+#include "constants/items.h"
+#include "constants/species.h"
#include "contest.h"
-#include "contest_link_80C2020.h"
+#include "contest_link_util.h"
#include "contest_painting.h"
#include "data2.h"
#include "daycare.h"
#include "debug.h"
#include "decompress.h"
#include "event_data.h"
-#include "constants/items.h"
+#include "ewram.h"
#include "link.h"
#include "load_save.h"
#include "main.h"
#include "menu.h"
+#include "overworld.h"
#include "pokedex.h"
#include "pokemon.h"
#include "random.h"
-#include "overworld.h"
-#include "script_pokemon_80C4.h"
-#include "constants/species.h"
#include "task.h"
-#include "ewram.h"
#define CONTEST_ENTRY_PIC_LEFT 10
#define CONTEST_ENTRY_PIC_TOP 3
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u8 gSelectedOrderFromParty[];
@@ -44,89 +44,86 @@ void SetContestTrainerGfxIds(void)
gSaveBlock1.vars[VAR_OBJ_GFX_ID_2 - VARS_START] = gContestMons[2].trainerGfxId;
}
-void sub_80C4C28(void)
+void GetNpcContestantLocalId(void)
{
- u16 var;
+ u16 localId;
u8 specialVar = gSpecialVar_0x8005;
switch(specialVar)
{
case 0:
- var = 3;
+ localId = 3;
break;
case 1:
- var = 4;
+ localId = 4;
break;
case 2:
- var = 5;
+ localId = 5;
break;
default:
- var = 100;
+ localId = 100;
break;
}
- gSpecialVar_0x8004 = var;
+ gSpecialVar_0x8004 = localId;
}
-void sub_80C4C64(void)
+void BufferContestTrainerAndMonNames(void)
{
Contest_GetTrainerNameI_StringVar1();
Contest_GetNicknameI_StringVar1();
- sub_80C48F4();
+ Contest_GetSpeciesNameI_StringVar1();
}
-void sub_80C4C78(void)
+void DoesContestCategoryHaveMuseumPainting(void)
{
- u16 var;
- u16 returnVar;
+ u16 contestWinner;
switch(gSpecialVar_ContestCategory)
{
case CONTEST_CATEGORY_COOL:
- var = 8;
+ contestWinner = CONTEST_WINNER_MUSEUM_COOL - 1;
break;
case CONTEST_CATEGORY_BEAUTY:
- var = 9;
+ contestWinner = CONTEST_WINNER_MUSEUM_BEAUTY - 1;
break;
case CONTEST_CATEGORY_CUTE:
- var = 10;
+ contestWinner = CONTEST_WINNER_MUSEUM_CUTE - 1;
break;
case CONTEST_CATEGORY_SMART:
- var = 11;
+ contestWinner = CONTEST_WINNER_MUSEUM_SMART - 1;
break;
case CONTEST_CATEGORY_TOUGH:
default:
- var = 12;
+ contestWinner = CONTEST_WINNER_MUSEUM_TOUGH - 1;
break;
}
- returnVar = gSaveBlock1.contestWinners[var].species;
-
- if(returnVar == 0)
- gSpecialVar_0x8004 = returnVar;
+ if (gSaveBlock1.contestWinners[contestWinner].species == SPECIES_NONE)
+ gSpecialVar_0x8004 = FALSE;
else
- gSpecialVar_0x8004 = 1;
+ gSpecialVar_0x8004 = TRUE;
}
-void sub_80C4CEC(void)
+void SaveMuseumContestPainting(void)
{
- Contest_SaveWinner(0xFF);
+ Contest_SaveWinner(CONTEST_SAVE_FOR_MUSEUM);
}
-void sub_80C4CF8(void)
+void ShouldReadyContestArtist(void)
{
if(!gContestFinalStandings[gContestPlayerMonIndex]
- && gSpecialVar_ContestRank == 3
- && gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ && gSpecialVar_ContestRank == CONTEST_RANK_MASTER
+ && gContestMonTotalPoints[gContestPlayerMonIndex] >= 800)
{
- gSpecialVar_0x8004 = 1;
+ gSpecialVar_0x8004 = TRUE;
}
else
{
- gSpecialVar_0x8004 = 0;
+ gSpecialVar_0x8004 = FALSE;
}
}
-u8 sub_80C4D50(void)
+u8 CountPlayerMuseumPaintings(void)
{
u8 retVar = 0;
int i;
@@ -138,67 +135,72 @@ u8 sub_80C4D50(void)
return retVar;
}
-void sub_80C4D80(void)
+void GetContestantNamesAtRank(void)
{
- s16 sp0[4];
+ s16 conditions[4];
s32 i;
s32 j;
- s16 r4;
- u8 r2;
- u8 r7;
- s8 r10;
- u8 r4_;
+ s16 condition;
+ u8 contestantOffset;
+ u8 tieRank;
+ s8 numAtCondition;
+ u8 rank;
+ // Get round 1 points
for (i = 0; i < 4; i++)
- sp0[i] = gContestMonConditions[i];
+ conditions[i] = gContestMonRound1Points[i];
+ // Sort round 1 points
for (i = 0; i < 3; i++)
{
for (j = 3; j > i; j--)
{
- if (sp0[j - 1] < sp0[j])
+ if (conditions[j - 1] < conditions[j])
{
- s32 temp = sp0[j];
-
- sp0[j] = sp0[j - 1];
- sp0[j - 1] = temp;
+ int temp;
+ SWAP(conditions[j], conditions[j - 1], temp)
}
}
}
- r4 = sp0[gSpecialVar_0x8006];
- r10 = 0;
- r7 = 0;
+ // Get round1 points at specified rank
+ condition = conditions[gSpecialVar_0x8006];
+
+ // Count number of contestants with the same number of points
+ numAtCondition = 0;
+ tieRank = 0;
for (i = 0; i < 4; i++)
{
- if (sp0[i] == r4)
+ if (conditions[i] == condition)
{
- r10++;
+ numAtCondition++;
if (i == gSpecialVar_0x8006)
- r7 = r10;
+ tieRank = numAtCondition;
}
}
+ // Get rank of first contestant with the same number of points
for (i = 0; i < 4; i++)
{
- if (sp0[i] == r4)
+ if (conditions[i] == condition)
break;
}
+ rank = i;
- r4_ = i;
- r2 = r7;
-
+ // Get contestant id of player at rank (taking ties into account)
+ contestantOffset = tieRank;
for (i = 0; i < 4; i++)
{
- if (r4 == gContestMonConditions[i])
+ if (condition == gContestMonRound1Points[i])
{
- if (r2 == 1)
+ if (contestantOffset == 1)
break;
- r2--;
+ contestantOffset--;
}
}
+ // Use contestant id to get names
Contest_CopyAndConvertNicknameI_Intl(gStringVar1, i);
if (gIsLinkContest & 1)
@@ -206,10 +208,13 @@ void sub_80C4D80(void)
else
Contest_CopyAndConvertTrainerName_Intl(gStringVar2, gContestMons[i].trainerName);
- if (r10 == 1 || r7 == r10)
- gSpecialVar_0x8006 = r4_;
+ // Return adjusted rank
+ if (numAtCondition == 1)
+ gSpecialVar_0x8006 = rank;
+ else if (tieRank == numAtCondition)
+ gSpecialVar_0x8006 = rank;
else
- gSpecialVar_0x8006 = r4_ + 4;
+ gSpecialVar_0x8006 = rank + 4;
}
void ShowContestWinnerCleanup(void)
@@ -217,13 +222,15 @@ void ShowContestWinnerCleanup(void)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
+// File boundary?
+
void ShowContestWinner(void)
{
if(gUnknown_0203856C)
{
sub_80AAF30();
- gBattleStruct->unk15DDF = 1;
- gBattleStruct->unk15DDE = sub_80B2C4C(254, 0);
+ eCurContestWinnerIsForArtist = TRUE;
+ eCurContestWinnerSaveIdx = GetContestWinnerSaveIdx(CONTEST_SAVE_FOR_ARTIST, 0);
Contest_SaveWinner(3);
gUnknown_0203856C = 0;
}
@@ -246,7 +253,7 @@ bool8 GiveMonArtistRibbon(void)
if(ribbon == FALSE
&& gContestFinalStandings[gContestPlayerMonIndex] == 0
&& gSpecialVar_ContestRank == 3
- && gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ && gContestMonTotalPoints[gContestPlayerMonIndex] >= 800)
{
ribbon = TRUE;
SetMonData(&gPlayerParty[gContestMonPartyIndex], MON_DATA_ARTIST_RIBBON, &ribbon);
@@ -287,15 +294,15 @@ void ShowContestEntryMonPic(void)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- (u32)gUnknown_081FAF4C[0],
- gUnknown_081FAF4C[1],
+ gMonSpriteGfx_Sprite_ptr[0],
+ gMonSpriteGfx_Sprite_ptr[1],
species,
var1);
palette = GetMonSpritePalStructFromOtIdPersonality(species, var2, var1);
LoadCompressedObjectPalette(palette);
GetMonSpriteTemplate_803C56C(species, 1);
- gUnknown_02024E8C.paletteTag = palette->tag;
- spriteId = CreateSprite(&gUnknown_02024E8C, 0x78, 0x40, 0);
+ gCreatingSpriteTemplate.paletteTag = palette->tag;
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, 0x78, 0x40, 0);
gTasks[taskId].data[2] = spriteId;
gTasks[taskId].data[3] = left;
gTasks[taskId].data[4] = top;
diff --git a/src/credits.c b/src/credits.c
index 28a4994be..49bbf80bd 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -146,15 +146,16 @@ enum
};
-struct Unk201C000
+struct CreditsData
{
- u16 unk0[POKEMON_TILE_COUNT];
- u16 unk88;
- u16 unk8A;
- u16 unk8C;
- u16 unk8E;
- u16 unk90[386];
- u16 unk394;
+ u16 monToShow[POKEMON_TILE_COUNT]; // List of Pokemon species ids that will show during the credits
+ u16 imgCounter; //how many mon images have been shown
+ u16 nextImgPos; //if the next image spawns left/center/right
+ u16 currShownMon; //index into monToShow
+ u16 numMonToShow; //number of pokemon to show, always NUM_MON_SLIDES after determine function
+ u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught pokemon
+ u16 numCaughtMon; //count of filled spaces in caughtMonIds
+ u16 unused[7];
};
struct CreditsEntry
@@ -163,19 +164,16 @@ struct CreditsEntry
const u8 *text;
};
-extern u8 unk_201e800[0x800];
-extern u8 unk_201f000[0x800];
-
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u16 gUnknown_02039358;
extern s16 gUnknown_0203935A;
-extern s16 gUnknown_0203935C;
+extern s16 gIntroCredits_MovingSceneryState;
static EWRAM_DATA s16 gUnknown_02039320 = 0;
-static EWRAM_DATA u16 gUnknown_02039322 = 0; // TASK A
-EWRAM_DATA u8 gUnknown_02039324 = 0;
-static EWRAM_DATA u8 gUnknown_02039325 = 0;
+static EWRAM_DATA u16 sSavedTaskId = 0; // TASK A
+EWRAM_DATA u8 gHasHallOfFameRecords = 0;
+static EWRAM_DATA u8 sUsedSpeedUp = 0;
extern u8 gReservedSpritePaletteCount;
@@ -186,9 +184,9 @@ extern void *gUnknown_0840B5A0[];
const u16 gUnknown_0840B7BC[] = INCBIN_U16("graphics/credits/palette_1.gbapal");
const u8 gUnknown_0840B7FC[] = INCBIN_U8("graphics/credits/ampersand.4bpp");
-void spritecb_814580C(struct Sprite *sprite);
+void SpriteCB_CreditsMonBg(struct Sprite *sprite);
-const u8 gUnknown_0840B83C[] =
+const u8 sTheEnd_LetterMap_T[] =
{
0, 1, 0,
0xFF, 1, 0xFF,
@@ -197,7 +195,7 @@ const u8 gUnknown_0840B83C[] =
0xFF, 1, 0xFF,
};
-const u8 gUnknown_0840B84B[] =
+const u8 sTheEnd_LetterMap_H[] =
{
1, 0xFF, 1,
1, 0xFF, 1,
@@ -206,7 +204,7 @@ const u8 gUnknown_0840B84B[] =
1, 0xFF, 1,
};
-const u8 gUnknown_0840B85A[] =
+const u8 sTheEnd_LetterMap_E[] =
{
1, 0, 0,
1, 0xFF, 0xFF,
@@ -215,7 +213,7 @@ const u8 gUnknown_0840B85A[] =
1, 0x80, 0x80,
};
-const u8 gUnknown_0840B869[] =
+const u8 sTheEnd_LetterMap_N[] =
{
1, 3, 1,
1, 4, 1,
@@ -224,26 +222,32 @@ const u8 gUnknown_0840B869[] =
1, 0xC3, 1,
};
-const u8 gUnknown_0840B878[] =
+const u8 sTheEnd_LetterMap_D[] =
{
1, 6, 7,
1, 8, 9,
1, 0xFF, 1,
1, 0x88, 0x89,
1, 0x86, 0x87,
+};
+
#ifdef GERMAN
+const u8 sTheEnd_LetterMap_F[] = {
1, 0, 0,
1, 0xFF, 0xFF,
1, 0x80, 0x8A,
1, 0xFF, 0xFF,
1, 0xFF, 0xFF,
+};
+
+const u8 sTheEnd_LetterMap_I[] = {
0, 1, 0,
0xFF, 1, 0xFF,
0xFF, 1, 0xFF,
0xFF, 1, 0xFF,
0x80, 1, 0x80,
-#endif
};
+#endif
#ifdef GERMAN
#include "data/credits_de.h"
@@ -251,7 +255,7 @@ const u8 gUnknown_0840B878[] =
#include "data/credits_en.h"
#endif
-const u8 gUnknown_0840CA00[][2] =
+const u8 sMonSpritePos[][2] =
{
{104, 36},
{120, 36},
@@ -332,8 +336,8 @@ static const union AnimCmd *const gSpriteAnimTable_0840CA94[] =
gSpriteAnim_840CA8C,
};
-static const struct SpriteSheet gUnknown_0840CAA0[] = {{ewram1E000_2, 6144, 1001}, {0}};
-static const struct SpritePalette gUnknown_0840CAB0[] = {{ewram_1F800_2, 1001}, {0}};
+static const struct SpriteSheet gUnknown_0840CAA0[] = {{gDecompressionBuffer, 0x1800, 1001}, {0}};
+static const struct SpritePalette gUnknown_0840CAB0[] = {{(u16 *)(gDecompressionBuffer + 0x1800), 1001}, {0}};
static const struct OamData gOamData_840CAC0 =
{
@@ -385,47 +389,47 @@ static const struct SpriteTemplate gSpriteTemplate_840CAEC =
.anims = gSpriteAnimTable_840CAE0,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = spritecb_814580C,
+ .callback = SpriteCB_CreditsMonBg,
};
// graphics
extern u8 gCreditsCopyrightEnd_Gfx[];
extern u16 gIntroCopyright_Pal[16];
-static void task_a_8143B38(u8 taskIdA);
-static void task_a_8143B68(u8 taskIdA);
-static void task_a_8143BFC(u8 taskIdA);
-static void task_a_80C9BFC(u8 taskIdA);
-static void task_a_8143CC0(u8 taskIdA);
-static void task_a_8143D04(u8 taskIdA);
-static void task_a_8143EBC(u8 taskIdA);
-static void task_a_8143F04(u8 taskIdA);
-static void task_a_8143F3C(u8 taskIdA);
-static void task_a_8143FDC(u8 taskIdA);
-static void task_a_8144024(u8 taskIdA);
-static void task_a_8144080(u8 taskIdA);
-static void task_a_8144114(u8 taskIdA);
-static void sub_8144130(void);
-static void task_b_81441B8(u8 taskIdB);
-static u8 sub_8144454(u8 page, u8 taskIdA);
-static void task_d_8144514(u8 taskIdD);
-static bool8 sub_8144ECC(u8 data, u8 taskIdA);
-static void sub_81450AC(u8 taskIdA);
-static void sub_8145128(u16, u16, u16);
-static void sub_81452D0(u16 arg0, u16 palette);
-static void spritecb_player_8145378(struct Sprite *sprite);
-static void spritecb_rival_8145420(struct Sprite *sprite);
-static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position);
-static void sub_81458DC(void);
-
-static void vblank_8143948(void)
+static void Task_WaitPaletteFade(u8 taskIdA);
+static void Task_CreditsMain(u8 taskIdA);
+static void Task_ReadyBikeScene(u8 taskIdA);
+static void Task_SetBikeScene(u8 taskIdA);
+static void Task_ReadyShowMons(u8 taskIdA);
+static void Task_LoadShowMons(u8 taskIdA);
+static void Task_CreditsTheEnd1(u8 taskIdA);
+static void Task_CreditsTheEnd2(u8 taskIdA);
+static void Task_CreditsTheEnd3(u8 taskIdA);
+static void Task_CreditsTheEnd4(u8 taskIdA);
+static void Task_CreditsTheEnd5(u8 taskIdA);
+static void Task_CreditsTheEnd6(u8 taskIdA);
+static void Task_CreditsSoftReset(u8 taskIdA);
+static void ResetGpuAndVram(void);
+static void Task_UpdatePage(u8 taskIdB);
+static u8 CheckChangeScene(u8 page, u8 taskIdA);
+static void Task_ShowMons(u8 taskIdD);
+static bool8 LoadBikeScene(u8 data, u8 taskIdA);
+static void ResetCreditsTasks(u8 taskIdA);
+static void LoadTheEndScreen(u16, u16, u16);
+static void DrawTheEnd(u16 arg0, u16 palette);
+static void SpriteCB_Player(struct Sprite *sprite);
+static void SpriteCB_Rival(struct Sprite *sprite);
+static u8 CreateCreditsMonSprite(u16 species, u16 x, u16 y, u16 position);
+static void DeterminePokemonToShow(void);
+
+static void VBlankCB_Credits(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-static void sub_814395C(void)
+static void CB2_Credits(void)
{
RunTasks();
AnimateSprites();
@@ -433,32 +437,32 @@ static void sub_814395C(void)
UpdatePaletteFade();
if ((gMain.heldKeys & B_BUTTON)
- && gUnknown_02039324 != 0
- && gTasks[gUnknown_02039322].func == task_a_8143B68)
+ && gHasHallOfFameRecords != 0
+ && gTasks[sSavedTaskId].func == Task_CreditsMain)
{
- vblank_8143948();
+ VBlankCB_Credits();
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
- gUnknown_02039325 = 1;
+ sUsedSpeedUp = 1;
}
}
-void sub_81439D0(void)
+void CB2_StartCreditsSequence(void)
{
u8 taskIdA;
s16 taskIdC;
u8 taskIdB;
u16 savedIme;
- struct Unk201C000 *c000;
+ struct CreditsData *pCreditsData;
- sub_8144130();
+ ResetGpuAndVram();
SetVBlankCallback(NULL);
ResetPaletteFade();
ResetTasks();
- taskIdA = CreateTask(task_a_8143B38, 0);
+ taskIdA = CreateTask(Task_WaitPaletteFade, 0);
gTasks[taskIdA].data[TDA_4] = 0;
gTasks[taskIdA].data[TDA_7] = 0;
@@ -467,7 +471,7 @@ void sub_81439D0(void)
while (TRUE)
{
- if (sub_8144ECC(0, taskIdA))
+ if (LoadBikeScene(0, taskIdA))
break;
}
@@ -482,7 +486,7 @@ void sub_81439D0(void)
REG_BG0VOFS = 0xFFFC;
- taskIdB = CreateTask(task_b_81441B8, 0);
+ taskIdB = CreateTask(Task_UpdatePage, 0);
gTasks[taskIdB].data[TDB_TASK_A_ID] = taskIdA;
gTasks[taskIdA].data[TDA_TASK_B_ID] = taskIdB;
@@ -496,29 +500,29 @@ void sub_81439D0(void)
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- SetVBlankCallback(vblank_8143948);
+ SetVBlankCallback(VBlankCB_Credits);
m4aSongNumStart(MUS_CREDITS);
- SetMainCallback2(sub_814395C);
- gUnknown_02039325 = 0;
+ SetMainCallback2(CB2_Credits);
+ sUsedSpeedUp = 0;
- c000 = &ewram1c000;
+ pCreditsData = &sCreditsData;
- sub_81458DC();
+ DeterminePokemonToShow();
- c000->unk88 = 0;
- c000->unk8A = 0;
- c000->unk8C = 0;
+ pCreditsData->imgCounter = 0;
+ pCreditsData->nextImgPos = 0;
+ pCreditsData->currShownMon = 0;
- gUnknown_02039322 = taskIdA;
+ sSavedTaskId = taskIdA;
}
-static void task_a_8143B38(u8 taskIdA)
+static void Task_WaitPaletteFade(u8 taskIdA)
{
if (!gPaletteFade.active)
- gTasks[taskIdA].func = task_a_8143B68;
+ gTasks[taskIdA].func = Task_CreditsMain;
}
-static void task_a_8143B68(u8 taskIdA)
+static void Task_CreditsMain(u8 taskIdA)
{
u16 data1;
@@ -530,7 +534,7 @@ static void task_a_8143B68(u8 taskIdA)
gTasks[taskIdC].data[TDC_0] = 30;
gTasks[taskIdA].data[TDA_12] = 0x100;
- gTasks[taskIdA].func = task_a_8143EBC;
+ gTasks[taskIdA].func = Task_CreditsTheEnd1;
return;
}
@@ -542,34 +546,34 @@ static void task_a_8143B68(u8 taskIdA)
gTasks[taskIdA].data[TDA_13] = data1;
gTasks[taskIdA].data[TDA_11] = 0;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskIdA].func = task_a_8143BFC;
+ gTasks[taskIdA].func = Task_ReadyBikeScene;
}
else if (gTasks[taskIdA].data[TDA_11] == 2)
{
gTasks[taskIdA].data[TDA_13] = data1;
gTasks[taskIdA].data[TDA_11] = 0;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskIdA].func = task_a_8143CC0;
+ gTasks[taskIdA].func = Task_ReadyShowMons;
}
}
-static void task_a_8143BFC(u8 taskIdA)
+static void Task_ReadyBikeScene(u8 taskIdA)
{
if (!gPaletteFade.active)
{
REG_DISPCNT = 0;
- sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_80C9BFC;
+ ResetCreditsTasks(taskIdA);
+ gTasks[taskIdA].func = Task_SetBikeScene;
}
}
-static void task_a_80C9BFC(u8 taskIdA)
+static void Task_SetBikeScene(u8 taskIdA)
{
u16 backup;
SetVBlankCallback(NULL);
- if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA))
+ if (LoadBikeScene(gTasks[taskIdA].data[TDA_7], taskIdA))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
@@ -579,22 +583,22 @@ static void task_a_80C9BFC(u8 taskIdA)
REG_IME = backup;
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- SetVBlankCallback(vblank_8143948);
- gTasks[taskIdA].func = task_a_8143B38;
+ SetVBlankCallback(VBlankCB_Credits);
+ gTasks[taskIdA].func = Task_WaitPaletteFade;
}
}
-static void task_a_8143CC0(u8 taskIdA)
+static void Task_ReadyShowMons(u8 taskIdA)
{
if (!gPaletteFade.active)
{
REG_DISPCNT = 0;
- sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_8143D04;
+ ResetCreditsTasks(taskIdA);
+ gTasks[taskIdA].func = Task_LoadShowMons;
}
}
-void task_a_8143D04(u8 taskIdA)
+void Task_LoadShowMons(u8 taskIdA)
{
switch (gMain.state)
{
@@ -611,16 +615,16 @@ void task_a_8143D04(u8 taskIdA)
LoadPalette(gBirchBagGrassPal[0] + 1, 1, 31 * 2);
for (i = 0; i < 0x800; i++)
- HALL_OF_FAME_SHEET_0[i] = 0x11;
+ gDecompressionBuffer[i] = 0x11;
for (i = 0; i < 0x800; i++)
- HALL_OF_FAME_SHEET_1[i] = 0x22;
+ (gDecompressionBuffer + 0x800)[i] = 0x22;
for (i = 0; i < 0x800; i++)
- HALL_OF_FAME_SHEET_2[i] = 0x33;
+ (gDecompressionBuffer + 0x1000)[i] = 0x33;
- EWRAM_1F800[0] = 0;
- EWRAM_1F800[1] = 0x53FF; // light yellow
- EWRAM_1F800[2] = 0x529F; // light red
- EWRAM_1F800[3] = 0x7E94; // light blue
+ ((u16 *)(gDecompressionBuffer + 0x1800))[0] = RGB( 0, 0, 0); // black
+ ((u16 *)(gDecompressionBuffer + 0x1800))[1] = RGB(31, 31, 20); // light yellow
+ ((u16 *)(gDecompressionBuffer + 0x1800))[2] = RGB(31, 20, 20); // light red
+ ((u16 *)(gDecompressionBuffer + 0x1800))[3] = RGB(20, 20, 31); // light blue
LoadSpriteSheet(gUnknown_0840CAA0);
LoadSpritePalette(gUnknown_0840CAB0);
@@ -629,7 +633,7 @@ void task_a_8143D04(u8 taskIdA)
break;
}
case 1:
- gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(task_d_8144514, 0);
+ gTasks[taskIdA].data[TDA_TASK_D_ID] = CreateTask(Task_ShowMons, 0);
gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_STATE] = 1;
gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_TASK_A_ID] = taskIdA;
gTasks[gTasks[taskIdA].data[TDA_TASK_D_ID]].data[TDD_2] = gTasks[taskIdA].data[TDA_7];
@@ -641,13 +645,13 @@ void task_a_8143D04(u8 taskIdA)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
gMain.state = 0;
- gUnknown_0203935C = 0;
- gTasks[taskIdA].func = task_a_8143B38;
+ gIntroCredits_MovingSceneryState = 0;
+ gTasks[taskIdA].func = Task_WaitPaletteFade;
break;
}
}
-static void task_a_8143EBC(u8 taskIdA)
+static void Task_CreditsTheEnd1(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_12])
{
@@ -656,25 +660,25 @@ static void task_a_8143EBC(u8 taskIdA)
}
BeginNormalPaletteFade(0xFFFFFFFF, 12, 0, 16, RGB(0, 0, 0));
- gTasks[taskIdA].func = task_a_8143F04;
+ gTasks[taskIdA].func = Task_CreditsTheEnd2;
}
-static void task_a_8143F04(u8 taskIdA)
+static void Task_CreditsTheEnd2(u8 taskIdA)
{
if (!gPaletteFade.active)
{
- sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_8143F3C;
+ ResetCreditsTasks(taskIdA);
+ gTasks[taskIdA].func = Task_CreditsTheEnd3;
}
}
-static void task_a_8143F3C(u8 taskIdA)
+static void Task_CreditsTheEnd3(u8 taskIdA)
{
u16 backup;
- sub_8144130();
+ ResetGpuAndVram();
ResetPaletteFade();
- sub_8145128(0, 0x3800, 0);
+ LoadTheEndScreen(0, 0x3800, 0);
ResetSpriteData();
FreeAllSpritePalettes();
BeginNormalPaletteFade(0xFFFFFFFF, 8, 16, 0, RGB(0, 0, 0));
@@ -688,10 +692,10 @@ static void task_a_8143F3C(u8 taskIdA)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON;
gTasks[taskIdA].data[TDA_0] = 0x100;
- gTasks[taskIdA].func = task_a_8143FDC;
+ gTasks[taskIdA].func = Task_CreditsTheEnd4;
}
-static void task_a_8143FDC(u8 taskIdA)
+static void Task_CreditsTheEnd4(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_0])
{
@@ -700,22 +704,22 @@ static void task_a_8143FDC(u8 taskIdA)
}
BeginNormalPaletteFade(0xFFFFFFFF, 6, 0, 16, RGB(0, 0, 0));
- gTasks[taskIdA].func = task_a_8144024;
+ gTasks[taskIdA].func = Task_CreditsTheEnd5;
}
-static void task_a_8144024(u8 taskIdA)
+static void Task_CreditsTheEnd5(u8 taskIdA)
{
if (!gPaletteFade.active)
{
- sub_81452D0(0x3800, 0);
+ DrawTheEnd(0x3800, 0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB(0, 0, 0));
gTasks[taskIdA].data[TDA_0] = 7200;
- gTasks[taskIdA].func = task_a_8144080;
+ gTasks[taskIdA].func = Task_CreditsTheEnd6;
}
}
-static void task_a_8144080(u8 taskIdA)
+static void Task_CreditsTheEnd6(u8 taskIdA)
{
if (!gPaletteFade.active)
{
@@ -723,7 +727,7 @@ static void task_a_8144080(u8 taskIdA)
{
FadeOutBGM(4);
BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, FADE_COLOR_WHITE);
- gTasks[taskIdA].func = task_a_8144114;
+ gTasks[taskIdA].func = Task_CreditsSoftReset;
return;
}
@@ -731,7 +735,7 @@ static void task_a_8144080(u8 taskIdA)
{
FadeOutBGM(4);
BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, FADE_COLOR_WHITE);
- gTasks[taskIdA].func = task_a_8144114;
+ gTasks[taskIdA].func = Task_CreditsSoftReset;
return;
}
@@ -747,13 +751,13 @@ static void task_a_8144080(u8 taskIdA)
}
}
-static void task_a_8144114(u8 taskIdA)
+static void Task_CreditsSoftReset(u8 taskIdA)
{
if (!gPaletteFade.active)
SoftReset(0xFF);
}
-static void sub_8144130(void)
+static void ResetGpuAndVram(void)
{
REG_DISPCNT = 0;
@@ -775,7 +779,7 @@ static void sub_8144130(void)
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
}
-static void task_b_81441B8(u8 taskIdB)
+static void Task_UpdatePage(u8 taskIdB)
{
u16 i;
@@ -805,7 +809,7 @@ static void task_b_81441B8(u8 taskIdB)
return;
case 2:
REG_DISPCNT &= ~DISPCNT_BG0_ON;
- if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == task_a_8143B68)
+ if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == Task_CreditsMain)
{
if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT)
{
@@ -843,7 +847,7 @@ static void task_b_81441B8(u8 taskIdB)
return;
}
- if (sub_8144454((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
+ if (CheckChangeScene((u8)gTasks[taskIdB].data[TDB_CURRENT_PAGE], (u8)gTasks[taskIdB].data[TDB_TASK_A_ID]))
{
gTasks[taskIdB].data[TDB_0] += 1;
return;
@@ -869,7 +873,7 @@ static void task_b_81441B8(u8 taskIdB)
}
}
-static u8 sub_8144454(u8 page, u8 taskIdA)
+static u8 CheckChangeScene(u8 page, u8 taskIdA)
{
// Starts with bike + ocean + morning
@@ -934,9 +938,9 @@ static u8 sub_8144454(u8 page, u8 taskIdA)
return FALSE;
}
-static void task_d_8144514(u8 taskIdD)
+static void Task_ShowMons(u8 taskIdD)
{
- struct Unk201C000 *r6 = &ewram1c000;
+ struct CreditsData *r6 = &sCreditsData;
u8 r2;
switch (gTasks[taskIdD].data[TDD_STATE])
@@ -944,30 +948,30 @@ static void task_d_8144514(u8 taskIdD)
case 0:
break;
case 1:
- if (r6->unk8A == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0)
+ if (r6->nextImgPos == 0 && gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] == 0)
break;
gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].data[TDA_14] = 0;
gTasks[taskIdD].data[TDD_STATE]++;
break;
case 2:
- if (r6->unk88 == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68)
+ if (r6->imgCounter == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != Task_CreditsMain)
break;
- r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A);
- if (r6->unk8C < r6->unk8E - 1)
+ r2 = CreateCreditsMonSprite(r6->monToShow[r6->currShownMon], sMonSpritePos[r6->nextImgPos][0], sMonSpritePos[r6->nextImgPos][1], r6->nextImgPos);
+ if (r6->currShownMon < r6->numMonToShow - 1)
{
- r6->unk8C++;
+ r6->currShownMon++;
gSprites[r2].data[3] = 50;
}
else
{
- r6->unk8C = 0;
+ r6->currShownMon = 0;
gSprites[r2].data[3] = 512;
}
- r6->unk88++;
- if (r6->unk8A == 2)
- r6->unk8A = 0;
+ r6->imgCounter++;
+ if (r6->nextImgPos == 2)
+ r6->nextImgPos = 0;
else
- r6->unk8A++;
+ r6->nextImgPos++;
gTasks[taskIdD].data[TDD_3] = 50;
gTasks[taskIdD].data[TDD_STATE]++;
break;
@@ -980,7 +984,7 @@ static void task_d_8144514(u8 taskIdD)
}
}
-void task_c_8144664(u8 taskIdC)
+void Task_BikeScene(u8 taskIdC)
{
switch (gTasks[taskIdC].data[TDC_0])
{
@@ -1063,7 +1067,7 @@ void task_c_8144664(u8 taskIdC)
}
}
-void task_e_8144934(u8 taskIdE)
+void Task_CycleSceneryPalette(u8 taskIdE)
{
s16 taskIdC;
@@ -1080,10 +1084,10 @@ void task_e_8144934(u8 taskIdE)
gTasks[taskIdE].data[TDE_1] = 0x7FFF;
}
}
- sub_8149020(0);
+ CycleSceneryPalette(0);
break;
case 1:
- sub_8149020(0);
+ CycleSceneryPalette(0);
break;
case 2:
if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
@@ -1097,7 +1101,7 @@ void task_e_8144934(u8 taskIdE)
gTasks[taskIdE].data[TDE_1] = 0x7FFF;
}
}
- sub_8149020(1);
+ CycleSceneryPalette(1);
break;
case 3:
if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
@@ -1113,25 +1117,25 @@ void task_e_8144934(u8 taskIdE)
gTasks[taskIdE].data[TDE_1] += 1;
}
}
- sub_8149020(1);
+ CycleSceneryPalette(1);
break;
case 4:
- sub_8149020(2);
+ CycleSceneryPalette(2);
break;
}
}
-static void sub_8144A68(u8 data, u8 taskIdA)
+static void SetBikeScene(u8 data, u8 taskIdA)
{
switch (data)
{
case 0:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
@@ -1139,10 +1143,10 @@ static void sub_8144A68(u8 data, u8 taskIdA)
case 1:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
@@ -1150,10 +1154,10 @@ static void sub_8144A68(u8 data, u8 taskIdA)
case 2:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 272;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].x = 272;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
@@ -1161,10 +1165,10 @@ static void sub_8144A68(u8 data, u8 taskIdA)
case 3:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 120;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = -32;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].x = 120;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].x = -32;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
@@ -1172,22 +1176,22 @@ static void sub_8144A68(u8 data, u8 taskIdA)
case 4:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = FALSE;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = FALSE;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.x = 88;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.x = 152;
- gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].pos1.y = 46;
- gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].pos1.y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].x = 88;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].x = 152;
+ gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].y = 46;
+ gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].y = 46;
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].data[0] = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data[0] = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(2, 0x2000, 0x200, 8);
break;
}
- gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(task_e_8144934, 0);
+ gTasks[taskIdA].data[TDA_TASK_E_ID] = CreateTask(Task_CycleSceneryPalette, 0);
gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_0] = data;
gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_1] = 0;
gTasks[gTasks[taskIdA].data[TDA_TASK_E_ID]].data[TDE_TASK_A_ID] = taskIdA;
- gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(task_c_8144664, 0);
+ gTasks[taskIdA].data[TDA_TASK_C_ID] = CreateTask(Task_BikeScene, 0);
gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_0] = 0;
gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_1] = taskIdA;
gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_2] = gTasks[taskIdA].data[TDA_PLAYER_CYCLIST];
@@ -1198,7 +1202,7 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45;
}
-static bool8 sub_8144ECC(u8 data, u8 taskIdA)
+static bool8 LoadBikeScene(u8 data, u8 taskIdA)
{
u8 spriteId;
@@ -1235,12 +1239,12 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA)
spriteId = intro_create_brendan_sprite(120, 46);
gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
- gSprites[spriteId].callback = spritecb_player_8145378;
+ gSprites[spriteId].callback = SpriteCB_Player;
gSprites[spriteId].anims = gSpriteAnimTable_0840CA54;
spriteId = intro_create_may_sprite(272, 46);
gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
- gSprites[spriteId].callback = spritecb_rival_8145420;
+ gSprites[spriteId].callback = SpriteCB_Rival;
gSprites[spriteId].anims = gSpriteAnimTable_0840CA94;
}
else
@@ -1252,18 +1256,18 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA)
spriteId = intro_create_may_sprite(120, 46);
gTasks[taskIdA].data[TDA_PLAYER_CYCLIST] = spriteId;
- gSprites[spriteId].callback = spritecb_player_8145378;
+ gSprites[spriteId].callback = SpriteCB_Player;
gSprites[spriteId].anims = gSpriteAnimTable_0840CA54;
spriteId = intro_create_brendan_sprite(272, 46);
gTasks[taskIdA].data[TDA_RIVAL_CYCLIST] = spriteId;
- gSprites[spriteId].callback = spritecb_rival_8145420;
+ gSprites[spriteId].callback = SpriteCB_Rival;
gSprites[spriteId].anims = gSpriteAnimTable_0840CA94;
};
gMain.state += 1;
break;
case 3:
- sub_8144A68(data, taskIdA);
+ SetBikeScene(data, taskIdA);
sub_8148E90(data);
gMain.state = 0;
return TRUE;
@@ -1271,7 +1275,7 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA)
return FALSE;
}
-static void sub_81450AC(u8 taskIdA)
+static void ResetCreditsTasks(u8 taskIdA)
{
if (gTasks[taskIdA].data[TDA_0] != 0)
{
@@ -1297,10 +1301,10 @@ static void sub_81450AC(u8 taskIdA)
gTasks[taskIdA].data[TDA_TASK_D_ID] = 0;
}
- gUnknown_0203935C = 1;
+ gIntroCredits_MovingSceneryState = 1;
}
-static void sub_8145128(u16 arg0, u16 arg1, u16 arg2)
+static void LoadTheEndScreen(u16 arg0, u16 arg1, u16 arg2)
{
u16 baseTile;
u16 i;
@@ -1326,7 +1330,7 @@ static void sub_8145128(u16 arg0, u16 arg1, u16 arg2)
((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile;
}
-u16 sub_8145208(u8 arg0)
+u16 GetLetterMapTile(u8 arg0)
{
u16 out = (arg0 & 0x3F) + 80;
@@ -1341,7 +1345,7 @@ u16 sub_8145208(u8 arg0)
return out;
}
-void sub_814524C(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette)
+void DrawLetterMapTiles(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette)
{
u8 y, x;
const u16 tileOffset = (palette / 16) << 12;
@@ -1349,11 +1353,11 @@ void sub_814524C(const u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette)
for (y = 0; y < 5; y++)
{
for (x = 0; x < 3; x++)
- ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]);
+ ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + GetLetterMapTile(arg0[y * 3 + x]);
}
}
-static void sub_81452D0(u16 arg0, u16 palette)
+static void DrawTheEnd(u16 arg0, u16 palette)
{
u16 pos;
u16 baseTile = (palette / 16) << 12;
@@ -1362,23 +1366,23 @@ static void sub_81452D0(u16 arg0, u16 palette)
((u16 *) (VRAM + arg0))[pos] = baseTile + 1;
#if ENGLISH
- sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette);
- sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette);
- sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette);
- sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette);
- sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette);
- sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_T, 3, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_H, 7, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_E, 11, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_E, 16, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_N, 20, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_D, 24, 7, arg0, palette);
#elif GERMAN
- sub_814524C(gUnknown_0840B85A, 7, 7, arg0, palette);
- sub_814524C(gUnknown_0840B869, 11, 7, arg0, palette);
- sub_814524C(gUnknown_0840B878, 15, 7, arg0, palette);
- sub_814524C(gUnknown_0840B85A, 19, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_E, 7, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_N, 11, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_D, 15, 7, arg0, palette);
+ DrawLetterMapTiles(sTheEnd_LetterMap_E, 19, 7, arg0, palette);
#endif
}
-static void spritecb_player_8145378(struct Sprite *sprite)
+static void SpriteCB_Player(struct Sprite *sprite)
{
- if (gUnknown_0203935C != 0)
+ if (gIntroCredits_MovingSceneryState != 0)
{
DestroySprite(sprite);
return;
@@ -1391,8 +1395,8 @@ static void spritecb_player_8145378(struct Sprite *sprite)
break;
case 1:
StartSpriteAnimIfDifferent(sprite, 1);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 1;
+ if (sprite->x > -32)
+ sprite->x -= 1;
break;
case 2:
StartSpriteAnimIfDifferent(sprite, 2);
@@ -1402,20 +1406,20 @@ static void spritecb_player_8145378(struct Sprite *sprite)
break;
case 4:
StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > 120)
- sprite->pos1.x -= 1;
+ if (sprite->x > 120)
+ sprite->x -= 1;
break;
case 5:
StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 1;
+ if (sprite->x > -32)
+ sprite->x -= 1;
break;
}
}
-static void spritecb_rival_8145420(struct Sprite *sprite)
+static void SpriteCB_Rival(struct Sprite *sprite)
{
- if (gUnknown_0203935C != 0)
+ if (gIntroCredits_MovingSceneryState != 0)
{
DestroySprite(sprite);
return;
@@ -1424,35 +1428,35 @@ static void spritecb_rival_8145420(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
StartSpriteAnimIfDifferent(sprite, 0);
break;
case 1:
- if (sprite->pos1.x > 200)
+ if (sprite->x > 200)
StartSpriteAnimIfDifferent(sprite, 1);
else
StartSpriteAnimIfDifferent(sprite, 2);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 2;
- sprite->pos2.y = -gUnknown_0203935A;
+ if (sprite->x > -32)
+ sprite->x -= 2;
+ sprite->y2 = -gUnknown_0203935A;
break;
case 2:
sprite->data[7] += 1;
StartSpriteAnimIfDifferent(sprite, 0);
if ((sprite->data[7] & 3) == 0)
- sprite->pos1.x += 1;
+ sprite->x += 1;
break;
case 3:
StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 1;
+ if (sprite->x > -32)
+ sprite->x -= 1;
break;
}
}
-void spritecb_81454E0(struct Sprite *sprite)
+void SpriteCB_CreditsMon(struct Sprite *sprite)
{
- if (gUnknown_0203935C)
+ if (gIntroCredits_MovingSceneryState)
{
DestroySprite(sprite);
return;
@@ -1484,15 +1488,15 @@ void spritecb_81454E0(struct Sprite *sprite)
{
case 1:
if ((sprite->data[7] & 3) == 0)
- sprite->pos1.y += 1;
- sprite->pos1.x -= 2;
+ sprite->y += 1;
+ sprite->x -= 2;
break;
case 2:
break;
case 3:
if ((sprite->data[7] & 3) == 0)
- sprite->pos1.y += 1;
- sprite->pos1.x += 2;
+ sprite->y += 1;
+ sprite->x += 2;
break;
}
break;
@@ -1536,7 +1540,7 @@ void spritecb_81454E0(struct Sprite *sprite)
}
}
-static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
+static u8 CreateCreditsMonSprite(u16 species, u16 x, u16 y, u16 position)
{
u32 personality;
const u8 *lzPaletteData;
@@ -1561,7 +1565,7 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- EWRAM,
+ (void *)EWRAM,
gUnknown_0840B5A0[position],
species,
personality,
@@ -1572,14 +1576,14 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
LoadCompressedPalette(lzPaletteData, 0x100 + (position * 16), 0x20);
sub_8143648(position, position);
- spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, x, y, 0);
gSprites[spriteId].oam.paletteNum = position;
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].data[1] = position + 1;
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].callback = spritecb_81454E0;
+ gSprites[spriteId].callback = SpriteCB_CreditsMon;
- spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1);
+ spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].x, gSprites[spriteId].y, 1);
gSprites[spriteId2].data[0] = spriteId;
StartSpriteAnimIfDifferent(&gSprites[spriteId2], position);
@@ -1587,9 +1591,10 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
return spriteId;
}
-void spritecb_814580C(struct Sprite *sprite)
+void SpriteCB_CreditsMonBg(struct Sprite *sprite)
{
- if (gSprites[sprite->data[0]].data[0] == 10 || gUnknown_0203935C)
+ if (gSprites[sprite->data[0]].data[0] == 10
+ || gIntroCredits_MovingSceneryState != 0)
{
DestroySprite(sprite);
return;
@@ -1599,13 +1604,13 @@ void spritecb_814580C(struct Sprite *sprite)
sprite->oam.objMode = gSprites[sprite->data[0]].oam.objMode;
sprite->oam.affineMode = gSprites[sprite->data[0]].oam.affineMode;
sprite->oam.matrixNum = gSprites[sprite->data[0]].oam.matrixNum;
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->x = gSprites[sprite->data[0]].x;
+ sprite->y = gSprites[sprite->data[0]].y;
}
-static void sub_81458DC(void)
+static void DeterminePokemonToShow(void)
{
- struct Unk201C000 *unk201C000 = &ewram1c000;
+ struct CreditsData *creditsData = &sCreditsData;
u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_STARTER_MON)));
u16 seenTypesCount;
u16 page;
@@ -1616,62 +1621,62 @@ static void sub_81458DC(void)
{
if (GetSetPokedexFlag(dexNum, 1))
{
- unk201C000->unk90[seenTypesCount] = dexNum;
+ creditsData->caughtMonIds[seenTypesCount] = dexNum;
seenTypesCount++;
}
}
for (dexNum = seenTypesCount; dexNum < 386; dexNum++)
- unk201C000->unk90[dexNum] = 0;
+ creditsData->caughtMonIds[dexNum] = 0;
- unk201C000->unk394 = seenTypesCount;
- if (unk201C000->unk394 < POKEMON_TILE_COUNT)
- unk201C000->unk8E = seenTypesCount;
+ creditsData->numCaughtMon = seenTypesCount;
+ if (creditsData->numCaughtMon < POKEMON_TILE_COUNT)
+ creditsData->numMonToShow = seenTypesCount;
else
- unk201C000->unk8E = POKEMON_TILE_COUNT;
+ creditsData->numMonToShow = POKEMON_TILE_COUNT;
j = 0;
do
{
- page = Random() % unk201C000->unk394;
- unk201C000->unk0[j] = unk201C000->unk90[page];
+ page = Random() % creditsData->numCaughtMon;
+ creditsData->monToShow[j] = creditsData->caughtMonIds[page];
j++;
- unk201C000->unk90[page] = 0;
- unk201C000->unk394--;
- if (page != unk201C000->unk394)
+ creditsData->caughtMonIds[page] = 0;
+ creditsData->numCaughtMon--;
+ if (page != creditsData->numCaughtMon)
{
- unk201C000->unk90[page] = unk201C000->unk90[unk201C000->unk394];
- unk201C000->unk90[unk201C000->unk394] = 0;
+ creditsData->caughtMonIds[page] = creditsData->caughtMonIds[creditsData->numCaughtMon];
+ creditsData->caughtMonIds[creditsData->numCaughtMon] = 0;
}
}
- while (unk201C000->unk394 != 0 && j < POKEMON_TILE_COUNT);
+ while (creditsData->numCaughtMon != 0 && j < POKEMON_TILE_COUNT);
- if (unk201C000->unk8E < POKEMON_TILE_COUNT)
+ if (creditsData->numMonToShow < POKEMON_TILE_COUNT)
{
- for (j = unk201C000->unk8E, page = 0; j < POKEMON_TILE_COUNT; j++)
+ for (j = creditsData->numMonToShow, page = 0; j < POKEMON_TILE_COUNT; j++)
{
- unk201C000->unk0[j] = unk201C000->unk0[page];
+ creditsData->monToShow[j] = creditsData->monToShow[page];
page++;
- if (page == unk201C000->unk8E)
+ if (page == creditsData->numMonToShow)
page = 0;
}
- unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
+ creditsData->monToShow[POKEMON_TILE_COUNT - 1] = starter;
}
else
{
- for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++);
+ for (dexNum = 0; creditsData->monToShow[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++);
- if (dexNum < unk201C000->unk8E - 1)
+ if (dexNum < creditsData->numMonToShow - 1)
{
- unk201C000->unk0[dexNum] = unk201C000->unk0[POKEMON_TILE_COUNT - 1];
- unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
+ creditsData->monToShow[dexNum] = creditsData->monToShow[POKEMON_TILE_COUNT - 1];
+ creditsData->monToShow[POKEMON_TILE_COUNT - 1] = starter;
}
else
{
- unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
+ creditsData->monToShow[POKEMON_TILE_COUNT - 1] = starter;
}
}
- unk201C000->unk8E = POKEMON_TILE_COUNT;
+ creditsData->numMonToShow = POKEMON_TILE_COUNT;
}
diff --git a/src/data/contest_opponents.h b/src/data/contest_opponents.h
new file mode 100644
index 000000000..a1584cf0d
--- /dev/null
+++ b/src/data/contest_opponents.h
@@ -0,0 +1,1668 @@
+#include "constants/species.h"
+#include "constants/moves.h"
+#include "constants/contest.h"
+
+#define CONTEST_OPPONENT_JIMMY 0
+#define CONTEST_OPPONENT_EDITH 1
+#define CONTEST_OPPONENT_EVAN 2
+#define CONTEST_OPPONENT_KELSEY 3
+#define CONTEST_OPPONENT_MADISON 4
+#define CONTEST_OPPONENT_RAYMOND 5
+#define CONTEST_OPPONENT_GRANT 6
+#define CONTEST_OPPONENT_PAIGE 7
+#define CONTEST_OPPONENT_ALEC 8
+#define CONTEST_OPPONENT_SYDNEY 9
+#define CONTEST_OPPONENT_MORRIS 10
+#define CONTEST_OPPONENT_MARIAH 11
+#define CONTEST_OPPONENT_RUSSELL 12
+#define CONTEST_OPPONENT_MELANIE 13
+#define CONTEST_OPPONENT_CHANCE 14
+#define CONTEST_OPPONENT_KARINA 15
+#define CONTEST_OPPONENT_BOBBY 16
+#define CONTEST_OPPONENT_CLAIRE 17
+#define CONTEST_OPPONENT_WILLIE 18
+#define CONTEST_OPPONENT_CASSIDY 19
+#define CONTEST_OPPONENT_MORGAN 20
+#define CONTEST_OPPONENT_SUMMER 21
+#define CONTEST_OPPONENT_MILES 22
+#define CONTEST_OPPONENT_AUDREY 23
+#define CONTEST_OPPONENT_AVERY 24
+#define CONTEST_OPPONENT_ARIANA 25
+#define CONTEST_OPPONENT_ASHTON 26
+#define CONTEST_OPPONENT_SANDRA 27
+#define CONTEST_OPPONENT_CARSON 28
+#define CONTEST_OPPONENT_KATRINA 29
+#define CONTEST_OPPONENT_RONNIE 30
+#define CONTEST_OPPONENT_CLAUDIA 31
+#define CONTEST_OPPONENT_ELIAS 32
+#define CONTEST_OPPONENT_JADE 33
+#define CONTEST_OPPONENT_FRANCIS 34
+#define CONTEST_OPPONENT_ALISHA 35
+#define CONTEST_OPPONENT_SAUL 36
+#define CONTEST_OPPONENT_FELICIA 37
+#define CONTEST_OPPONENT_EMILIO 38
+#define CONTEST_OPPONENT_KARLA 39
+#define CONTEST_OPPONENT_DARRYL 40
+#define CONTEST_OPPONENT_SELENA 41
+#define CONTEST_OPPONENT_NOEL 42
+#define CONTEST_OPPONENT_LACEY 43
+#define CONTEST_OPPONENT_CORBIN 44
+#define CONTEST_OPPONENT_JUSTINA 45
+#define CONTEST_OPPONENT_RALPH 46
+#define CONTEST_OPPONENT_ROSA 47
+#define CONTEST_OPPONENT_KEATON 48
+#define CONTEST_OPPONENT_MAYRA 49
+#define CONTEST_OPPONENT_LAMAR 50
+#define CONTEST_OPPONENT_AUBREY 51
+#define CONTEST_OPPONENT_NIGEL 52
+#define CONTEST_OPPONENT_CAMILLE 53
+#define CONTEST_OPPONENT_DEON 54
+#define CONTEST_OPPONENT_JANELLE 55
+#define CONTEST_OPPONENT_HEATH 56
+#define CONTEST_OPPONENT_SASHA 57
+#define CONTEST_OPPONENT_FRANKIE 58
+#define CONTEST_OPPONENT_HELEN 59
+
+// All contest opponents have a common set of AI flags (which contains all of the actually
+// useful AI scripts, as well as some dummys) and a random combination of 2-3 dummy flags.
+// Seems that like the battle AI they had more plans for this than what ended up in the final game
+#define CONTEST_AI_SET_1 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_2 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_19 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_3 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_4 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_17 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_5 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_16 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_6 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_15 | CONTEST_AI_DUMMY_22)
+#define CONTEST_AI_SET_7 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_14 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_8 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_13 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_9 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_12 | CONTEST_AI_DUMMY_24)
+#define CONTEST_AI_SET_A (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_11 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_B (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_10 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_C (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_9 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_D (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_8 | CONTEST_AI_DUMMY_22 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_E (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_7 | CONTEST_AI_DUMMY_24)
+#define CONTEST_AI_SET_F (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_6 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_10 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_23)
+#define CONTEST_AI_SET_11 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_18 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_12 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_17 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_13 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_16 | CONTEST_AI_DUMMY_22)
+#define CONTEST_AI_SET_14 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_15 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_15 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_14 | CONTEST_AI_DUMMY_22)
+#define CONTEST_AI_SET_16 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_13 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_17 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_12 | CONTEST_AI_DUMMY_23 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_18 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_10 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_19 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_9 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1A (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_8 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1B (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_7 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_1C (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_6 | CONTEST_AI_DUMMY_21)
+#define CONTEST_AI_SET_1D (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_20 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1E (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_15 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_1F (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_14 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_20 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_12 | CONTEST_AI_DUMMY_25)
+#define CONTEST_AI_SET_21 (CONTEST_AI_COMMON | CONTEST_AI_DUMMY_7 | CONTEST_AI_DUMMY_25)
+
+#if defined(ENGLISH)
+#define CONTEST_OPPONENT_NICKNAME_JIMMY "POOCHY"
+#define CONTEST_OPPONENT_OTNAME_JIMMY "JIMMY"
+#define CONTEST_OPPONENT_NICKNAME_EDITH "ZIGOON"
+#define CONTEST_OPPONENT_OTNAME_EDITH "EDITH"
+#define CONTEST_OPPONENT_NICKNAME_EVAN "DUSTER"
+#define CONTEST_OPPONENT_OTNAME_EVAN "EVAN"
+#define CONTEST_OPPONENT_NICKNAME_KELSEY "DOTS"
+#define CONTEST_OPPONENT_OTNAME_KELSEY "KELSEY"
+#define CONTEST_OPPONENT_NICKNAME_MADISON "TATAY"
+#define CONTEST_OPPONENT_OTNAME_MADISON "MADISON"
+#define CONTEST_OPPONENT_NICKNAME_RAYMOND "NINDA"
+#define CONTEST_OPPONENT_OTNAME_RAYMOND "RAYMOND"
+#define CONTEST_OPPONENT_NICKNAME_GRANT "SMISH"
+#define CONTEST_OPPONENT_OTNAME_GRANT "GRANT"
+#define CONTEST_OPPONENT_NICKNAME_PAIGE "GULWEE"
+#define CONTEST_OPPONENT_OTNAME_PAIGE "PAIGE"
+#define CONTEST_OPPONENT_NICKNAME_ALEC "SLOKTH"
+#define CONTEST_OPPONENT_OTNAME_ALEC "ALEC"
+#define CONTEST_OPPONENT_NICKNAME_SYDNEY "WHIRIS"
+#define CONTEST_OPPONENT_OTNAME_SYDNEY "SYDNEY"
+#define CONTEST_OPPONENT_NICKNAME_MORRIS "MAHITA"
+#define CONTEST_OPPONENT_OTNAME_MORRIS "MORRIS"
+#define CONTEST_OPPONENT_NICKNAME_MARIAH "RONAR"
+#define CONTEST_OPPONENT_OTNAME_MARIAH "MARIAH"
+#define CONTEST_OPPONENT_NICKNAME_RUSSELL "ZUTZU"
+#define CONTEST_OPPONENT_OTNAME_RUSSELL "RUSSELL"
+#define CONTEST_OPPONENT_NICKNAME_MELANIE "GULIN"
+#define CONTEST_OPPONENT_OTNAME_MELANIE "MELANIE"
+#define CONTEST_OPPONENT_NICKNAME_CHANCE "RIKELEC"
+#define CONTEST_OPPONENT_OTNAME_CHANCE "CHANCE"
+#define CONTEST_OPPONENT_NICKNAME_KARINA "RELIA"
+#define CONTEST_OPPONENT_OTNAME_KARINA "KARINA"
+#define CONTEST_OPPONENT_NICKNAME_BOBBY "DUODO"
+#define CONTEST_OPPONENT_OTNAME_BOBBY "BOBBY"
+#define CONTEST_OPPONENT_NICKNAME_CLAIRE "PINCHIN"
+#define CONTEST_OPPONENT_OTNAME_CLAIRE "CLAIRE"
+#define CONTEST_OPPONENT_NICKNAME_WILLIE "NACAC"
+#define CONTEST_OPPONENT_OTNAME_WILLIE "WILLIE"
+#define CONTEST_OPPONENT_NICKNAME_CASSIDY "SHRAND"
+#define CONTEST_OPPONENT_OTNAME_CASSIDY "CASSIDY"
+#define CONTEST_OPPONENT_NICKNAME_MORGAN "TOYBAL"
+#define CONTEST_OPPONENT_OTNAME_MORGAN "MORGAN"
+#define CONTEST_OPPONENT_NICKNAME_SUMMER "LENUM"
+#define CONTEST_OPPONENT_OTNAME_SUMMER "SUMMER"
+#define CONTEST_OPPONENT_NICKNAME_MILES "SPININ"
+#define CONTEST_OPPONENT_OTNAME_MILES "MILES"
+#define CONTEST_OPPONENT_NICKNAME_AUDREY "SWABY"
+#define CONTEST_OPPONENT_OTNAME_AUDREY "AUDREY"
+#define CONTEST_OPPONENT_NICKNAME_AVERY "NOONE"
+#define CONTEST_OPPONENT_OTNAME_AVERY "AVERY"
+#define CONTEST_OPPONENT_NICKNAME_ARIANA "KECON"
+#define CONTEST_OPPONENT_OTNAME_ARIANA "ARIANA"
+#define CONTEST_OPPONENT_NICKNAME_ASHTON "GOLDEN"
+#define CONTEST_OPPONENT_OTNAME_ASHTON "ASHTON"
+#define CONTEST_OPPONENT_NICKNAME_SANDRA "BOBOACH"
+#define CONTEST_OPPONENT_OTNAME_SANDRA "SANDRA"
+#define CONTEST_OPPONENT_NICKNAME_CARSON "CORPY"
+#define CONTEST_OPPONENT_OTNAME_CARSON "CARSON"
+#define CONTEST_OPPONENT_NICKNAME_KATRINA "TADO"
+#define CONTEST_OPPONENT_OTNAME_KATRINA "KATRINA"
+#define CONTEST_OPPONENT_NICKNAME_RONNIE "LAIRN"
+#define CONTEST_OPPONENT_OTNAME_RONNIE "RONNIE"
+#define CONTEST_OPPONENT_NICKNAME_CLAUDIA "NUZLE"
+#define CONTEST_OPPONENT_OTNAME_CLAUDIA "CLAUDIA"
+#define CONTEST_OPPONENT_NICKNAME_ELIAS "NINAS"
+#define CONTEST_OPPONENT_OTNAME_ELIAS "ELIAS"
+#define CONTEST_OPPONENT_NICKNAME_JADE "WELOW"
+#define CONTEST_OPPONENT_OTNAME_JADE "JADE"
+#define CONTEST_OPPONENT_NICKNAME_FRANCIS "YENA"
+#define CONTEST_OPPONENT_OTNAME_FRANCIS "FRANCIS"
+#define CONTEST_OPPONENT_NICKNAME_ALISHA "TIFLY"
+#define CONTEST_OPPONENT_OTNAME_ALISHA "ALISHA"
+#define CONTEST_OPPONENT_NICKNAME_SAUL "KINGSEA"
+#define CONTEST_OPPONENT_OTNAME_SAUL "SAUL"
+#define CONTEST_OPPONENT_NICKNAME_FELICIA "ERUPAM"
+#define CONTEST_OPPONENT_OTNAME_FELICIA "FELICIA"
+#define CONTEST_OPPONENT_NICKNAME_EMILIO "CHOPAM"
+#define CONTEST_OPPONENT_OTNAME_EMILIO "EMILIO"
+#define CONTEST_OPPONENT_NICKNAME_KARLA "LOMBE"
+#define CONTEST_OPPONENT_OTNAME_KARLA "KARLA"
+#define CONTEST_OPPONENT_NICKNAME_DARRYL "VIPES"
+#define CONTEST_OPPONENT_OTNAME_DARRYL "DARRYL"
+#define CONTEST_OPPONENT_NICKNAME_SELENA "MERAIL"
+#define CONTEST_OPPONENT_OTNAME_SELENA "SELENA"
+#define CONTEST_OPPONENT_NICKNAME_NOEL "KARPAG"
+#define CONTEST_OPPONENT_OTNAME_NOEL "NOEL"
+#define CONTEST_OPPONENT_NICKNAME_LACEY "LUNONE"
+#define CONTEST_OPPONENT_OTNAME_LACEY "LACEY"
+#define CONTEST_OPPONENT_NICKNAME_CORBIN "PELIPE"
+#define CONTEST_OPPONENT_OTNAME_CORBIN "CORBIN"
+#define CONTEST_OPPONENT_NICKNAME_JUSTINA "RADOS"
+#define CONTEST_OPPONENT_OTNAME_JUSTINA "JUSTINA"
+#define CONTEST_OPPONENT_NICKNAME_RALPH "LOUDERD"
+#define CONTEST_OPPONENT_OTNAME_RALPH "RALPH"
+#define CONTEST_OPPONENT_NICKNAME_ROSA "CATTED"
+#define CONTEST_OPPONENT_OTNAME_ROSA "ROSA"
+#define CONTEST_OPPONENT_NICKNAME_KEATON "SLING"
+#define CONTEST_OPPONENT_OTNAME_KEATON "KEATON"
+#define CONTEST_OPPONENT_NICKNAME_MAYRA "TARIA"
+#define CONTEST_OPPONENT_OTNAME_MAYRA "MAYRA"
+#define CONTEST_OPPONENT_NICKNAME_LAMAR "SHEDJA"
+#define CONTEST_OPPONENT_OTNAME_LAMAR "LAMAR"
+#define CONTEST_OPPONENT_NICKNAME_AUBREY "PLUMILE"
+#define CONTEST_OPPONENT_OTNAME_AUBREY "AUBREY"
+#define CONTEST_OPPONENT_NICKNAME_NIGEL "KULLUSK"
+#define CONTEST_OPPONENT_OTNAME_NIGEL "NIGEL"
+#define CONTEST_OPPONENT_NICKNAME_CAMILLE "UTAN"
+#define CONTEST_OPPONENT_OTNAME_CAMILLE "CAMILLE"
+#define CONTEST_OPPONENT_NICKNAME_DEON "PEDOS"
+#define CONTEST_OPPONENT_OTNAME_DEON "DEON"
+#define CONTEST_OPPONENT_NICKNAME_JANELLE "LUVIS"
+#define CONTEST_OPPONENT_OTNAME_JANELLE "JANELLE"
+#define CONTEST_OPPONENT_NICKNAME_HEATH "HEROSS"
+#define CONTEST_OPPONENT_OTNAME_HEATH "HEATH"
+#define CONTEST_OPPONENT_NICKNAME_SASHA "RODLECT"
+#define CONTEST_OPPONENT_OTNAME_SASHA "SASHA"
+#define CONTEST_OPPONENT_NICKNAME_FRANKIE "CHUPY"
+#define CONTEST_OPPONENT_OTNAME_FRANKIE "FRANKIE"
+#define CONTEST_OPPONENT_NICKNAME_HELEN "WOBET"
+#define CONTEST_OPPONENT_OTNAME_HELEN "HELEN"
+#elif defined(GERMAN)
+#define CONTEST_OPPONENT_NICKNAME_JIMMY "FIFFI"
+#define CONTEST_OPPONENT_OTNAME_JIMMY "JIMMY"
+#define CONTEST_OPPONENT_NICKNAME_EDITH "ZIGGY"
+#define CONTEST_OPPONENT_OTNAME_EDITH "KLARA"
+#define CONTEST_OPPONENT_NICKNAME_EVAN "DOXU"
+#define CONTEST_OPPONENT_OTNAME_EVAN "KARLO"
+#define CONTEST_OPPONENT_NICKNAME_KELSEY "SAMINI"
+#define CONTEST_OPPONENT_OTNAME_KELSEY "TRUDI"
+#define CONTEST_OPPONENT_NICKNAME_MADISON "SCHWALBI"
+#define CONTEST_OPPONENT_OTNAME_MADISON "HELENA"
+#define CONTEST_OPPONENT_NICKNAME_RAYMOND "CADINJA"
+#define CONTEST_OPPONENT_OTNAME_RAYMOND "WILLI"
+#define CONTEST_OPPONENT_NICKNAME_GRANT "KNILZLI"
+#define CONTEST_OPPONENT_OTNAME_GRANT "HARTMUT"
+#define CONTEST_OPPONENT_NICKNAME_PAIGE "WINGI"
+#define CONTEST_OPPONENT_OTNAME_PAIGE "CLAUDIA"
+#define CONTEST_OPPONENT_NICKNAME_ALEC "BLUMPI"
+#define CONTEST_OPPONENT_OTNAME_ALEC "ALEC"
+#define CONTEST_OPPONENT_NICKNAME_SYDNEY "FLURMI"
+#define CONTEST_OPPONENT_OTNAME_SYDNEY "SILKE"
+#define CONTEST_OPPONENT_NICKNAME_MORRIS "MAHITA"
+#define CONTEST_OPPONENT_OTNAME_MORRIS "PEER"
+#define CONTEST_OPPONENT_NICKNAME_MARIAH "STOLLI"
+#define CONTEST_OPPONENT_OTNAME_MARIAH "MARIA"
+#define CONTEST_OPPONENT_NICKNAME_RUSSELL "BLUTBAT"
+#define CONTEST_OPPONENT_OTNAME_RUSSELL "RUDOLF"
+#define CONTEST_OPPONENT_NICKNAME_MELANIE "SCHLUPPI"
+#define CONTEST_OPPONENT_OTNAME_MELANIE "MELANIE"
+#define CONTEST_OPPONENT_NICKNAME_CHANCE "FRIZZZEL"
+#define CONTEST_OPPONENT_OTNAME_CHANCE "BERTRAM"
+#define CONTEST_OPPONENT_NICKNAME_KARINA "ROSALI"
+#define CONTEST_OPPONENT_OTNAME_KARINA "KARINA"
+#define CONTEST_OPPONENT_NICKNAME_BOBBY "DOLDI"
+#define CONTEST_OPPONENT_OTNAME_BOBBY "BOBBY"
+#define CONTEST_OPPONENT_NICKNAME_CLAIRE "KNACKI"
+#define CONTEST_OPPONENT_OTNAME_CLAIRE "JUDITH"
+#define CONTEST_OPPONENT_NICKNAME_WILLIE "KOTUS"
+#define CONTEST_OPPONENT_OTNAME_WILLIE "HELMUT"
+#define CONTEST_OPPONENT_NICKNAME_CASSIDY "SADAN"
+#define CONTEST_OPPONENT_OTNAME_CASSIDY "BRITTA"
+#define CONTEST_OPPONENT_NICKNAME_MORGAN "PUPPIBAL"
+#define CONTEST_OPPONENT_OTNAME_MORGAN "TORBEN"
+#define CONTEST_OPPONENT_NICKNAME_SUMMER "CLAMAUK"
+#define CONTEST_OPPONENT_OTNAME_SUMMER "BIANKA"
+#define CONTEST_OPPONENT_NICKNAME_MILES "SPIRRWIRR"
+#define CONTEST_OPPONENT_OTNAME_MILES "ALEX"
+#define CONTEST_OPPONENT_NICKNAME_AUDREY "BLUPPF"
+#define CONTEST_OPPONENT_OTNAME_AUDREY "SABINE"
+#define CONTEST_OPPONENT_NICKNAME_AVERY "DAKSIRAD"
+#define CONTEST_OPPONENT_OTNAME_AVERY "AUGUST"
+#define CONTEST_OPPONENT_NICKNAME_ARIANA "KECLI"
+#define CONTEST_OPPONENT_OTNAME_ARIANA "ARIANA"
+#define CONTEST_OPPONENT_NICKNAME_ASHTON "GOLDINCHEN"
+#define CONTEST_OPPONENT_OTNAME_ASHTON "TONI"
+#define CONTEST_OPPONENT_NICKNAME_SANDRA "SCHMERBSE"
+#define CONTEST_OPPONENT_OTNAME_SANDRA "SUSI"
+#define CONTEST_OPPONENT_NICKNAME_CARSON "KREBSILI"
+#define CONTEST_OPPONENT_OTNAME_CARSON "CLEMENS"
+#define CONTEST_OPPONENT_NICKNAME_KATRINA "URLOTZO"
+#define CONTEST_OPPONENT_OTNAME_KATRINA "KATRIN"
+#define CONTEST_OPPONENT_NICKNAME_RONNIE "STROLLAK"
+#define CONTEST_OPPONENT_OTNAME_RONNIE "ACHIM"
+#define CONTEST_OPPONENT_NICKNAME_CLAUDIA "BLASNI"
+#define CONTEST_OPPONENT_OTNAME_CLAUDIA "GABI"
+#define CONTEST_OPPONENT_NICKNAME_ELIAS "ASKINJA"
+#define CONTEST_OPPONENT_OTNAME_ELIAS "ROLF"
+#define CONTEST_OPPONENT_NICKNAME_JADE "SCHWALLO"
+#define CONTEST_OPPONENT_OTNAME_JADE "ELSE"
+#define CONTEST_OPPONENT_NICKNAME_FRANCIS "JÄNAGI"
+#define CONTEST_OPPONENT_OTNAME_FRANCIS "FRANK"
+#define CONTEST_OPPONENT_NICKNAME_ALISHA "PAPINILLI"
+#define CONTEST_OPPONENT_OTNAME_ALISHA "ANNA"
+#define CONTEST_OPPONENT_NICKNAME_SAUL "KINGOLA"
+#define CONTEST_OPPONENT_OTNAME_SAUL "KONRAD"
+#define CONTEST_OPPONENT_NICKNAME_FELICIA "ERUPTAM"
+#define CONTEST_OPPONENT_OTNAME_FELICIA "LUISE"
+#define CONTEST_OPPONENT_NICKNAME_EMILIO "OLLOMA"
+#define CONTEST_OPPONENT_OTNAME_EMILIO "MICHAEL"
+#define CONTEST_OPPONENT_NICKNAME_KARLA "OMBRE"
+#define CONTEST_OPPONENT_OTNAME_KARLA "ANIKA"
+#define CONTEST_OPPONENT_NICKNAME_DARRYL "PITISVI"
+#define CONTEST_OPPONENT_OTNAME_DARRYL "DETLEF"
+#define CONTEST_OPPONENT_NICKNAME_SELENA "WAILA"
+#define CONTEST_OPPONENT_OTNAME_SELENA "XENIA"
+#define CONTEST_OPPONENT_NICKNAME_NOEL "KARDORPA"
+#define CONTEST_OPPONENT_OTNAME_NOEL "FLORIAN"
+#define CONTEST_OPPONENT_NICKNAME_LACEY "LUNA"
+#define CONTEST_OPPONENT_OTNAME_LACEY "DIANA"
+#define CONTEST_OPPONENT_NICKNAME_CORBIN "PEPE"
+#define CONTEST_OPPONENT_OTNAME_CORBIN "LUTZ"
+#define CONTEST_OPPONENT_NICKNAME_JUSTINA "GARADI"
+#define CONTEST_OPPONENT_OTNAME_JUSTINA "JASMIN"
+#define CONTEST_OPPONENT_NICKNAME_RALPH "KRAKEEL"
+#define CONTEST_OPPONENT_OTNAME_RALPH "GERT"
+#define CONTEST_OPPONENT_NICKNAME_ROSA "ENEKOTO"
+#define CONTEST_OPPONENT_OTNAME_ROSA "ROSA"
+#define CONTEST_OPPONENT_NICKNAME_KEATON "ASSIMAX"
+#define CONTEST_OPPONENT_OTNAME_KEATON "KURT"
+#define CONTEST_OPPONENT_NICKNAME_MAYRA "RIA"
+#define CONTEST_OPPONENT_OTNAME_MAYRA "SONJA"
+#define CONTEST_OPPONENT_NICKNAME_LAMAR "EXUVINJA"
+#define CONTEST_OPPONENT_OTNAME_LAMAR "SÖNKE"
+#define CONTEST_OPPONENT_NICKNAME_AUBREY "BLUMIEFT"
+#define CONTEST_OPPONENT_OTNAME_AUBREY "MAGDA"
+#define CONTEST_OPPONENT_NICKNAME_NIGEL "WANDELBOLD"
+#define CONTEST_OPPONENT_OTNAME_NIGEL "SASCHA"
+#define CONTEST_OPPONENT_NICKNAME_CAMILLE "TUMANI"
+#define CONTEST_OPPONENT_OTNAME_CAMILLE "MILA"
+#define CONTEST_OPPONENT_NICKNAME_DEON "HAITODO"
+#define CONTEST_OPPONENT_OTNAME_DEON "KNUT"
+#define CONTEST_OPPONENT_NICKNAME_JANELLE "KUSSLIEB"
+#define CONTEST_OPPONENT_OTNAME_JANELLE "INCA"
+#define CONTEST_OPPONENT_NICKNAME_HEATH "SKARAB"
+#define CONTEST_OPPONENT_OTNAME_HEATH "FELIX"
+#define CONTEST_OPPONENT_NICKNAME_SASHA "LEKBAL"
+#define CONTEST_OPPONENT_OTNAME_SASHA "DEBORA"
+#define CONTEST_OPPONENT_NICKNAME_FRANKIE "DEIBEL"
+#define CONTEST_OPPONENT_OTNAME_FRANKIE "BORIS"
+#define CONTEST_OPPONENT_NICKNAME_HELEN "WOHINGENAU"
+#define CONTEST_OPPONENT_OTNAME_HELEN "DELIA"
+#endif //ENGLISH
+
+const struct ContestPokemon gContestOpponents[] = {
+ [CONTEST_OPPONENT_JIMMY] = {
+ .species = SPECIES_POOCHYENA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_JIMMY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_JIMMY),
+ .trainerGfxId = OBJ_EVENT_GFX_BOY_1,
+ .flags = CONTEST_AI_SET_1,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_ROAR, MOVE_BITE, MOVE_TAKE_DOWN, MOVE_HOWL },
+ .cool = 10,
+ .beauty = 4,
+ .cute = 10,
+ .smart = 3,
+ .tough = 4,
+ .sheen = 50,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_EDITH] = {
+ .species = SPECIES_ZIGZAGOON,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_EDITH),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_EDITH),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_REST, MOVE_TAIL_WHIP, MOVE_TACKLE, MOVE_COVET },
+ .cool = 10,
+ .beauty = 10,
+ .cute = 6,
+ .smart = 1,
+ .tough = 2,
+ .sheen = 60,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_EVAN] = {
+ .species = SPECIES_DUSTOX,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_EVAN),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_EVAN),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_3,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SILVER_WIND, MOVE_MOONLIGHT, MOVE_LIGHT_SCREEN, MOVE_GUST },
+ .cool = 2,
+ .beauty = 10,
+ .cute = 10,
+ .smart = 12,
+ .tough = 4,
+ .sheen = 70,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KELSEY] = {
+ .species = SPECIES_SEEDOT,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_KELSEY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_KELSEY),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_4,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_BIDE, MOVE_SYNTHESIS, MOVE_BULLET_SEED, MOVE_GROWTH },
+ .cool = 3,
+ .beauty = 3,
+ .cute = 5,
+ .smart = 2,
+ .tough = 7,
+ .sheen = 80,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MADISON] = {
+ .species = SPECIES_TAILLOW,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_MADISON),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_MADISON),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_5,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_WING_ATTACK, MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_GROWL },
+ .cool = 1,
+ .beauty = 3,
+ .cute = 3,
+ .smart = 5,
+ .tough = 4,
+ .sheen = 90,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RAYMOND] = {
+ .species = SPECIES_NINCADA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_RAYMOND),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_RAYMOND),
+ .trainerGfxId = OBJ_EVENT_GFX_BLACK_BELT,
+ .flags = CONTEST_AI_SET_6,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_LEECH_LIFE, MOVE_FALSE_SWIPE, MOVE_FURY_SWIPES, MOVE_MIND_READER },
+ .cool = 5,
+ .beauty = 2,
+ .cute = 10,
+ .smart = 7,
+ .tough = 8,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_GRANT] = {
+ .species = SPECIES_SHROOMISH,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_GRANT),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_GRANT),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_7,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_MEGA_DRAIN, MOVE_ATTRACT },
+ .cool = 3,
+ .beauty = 3,
+ .cute = 10,
+ .smart = 2,
+ .tough = 2,
+ .sheen = 50,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_PAIGE] = {
+ .species = SPECIES_WINGULL,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_PAIGE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_PAIGE),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_8,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MIST, MOVE_WATER_GUN, MOVE_GROWL, MOVE_PURSUIT },
+ .cool = 3,
+ .beauty = 5,
+ .cute = 1,
+ .smart = 10,
+ .tough = 10,
+ .sheen = 60,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ALEC] = {
+ .species = SPECIES_SLAKOTH,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_ALEC),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_ALEC),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_9,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_STRENGTH, MOVE_COUNTER, MOVE_YAWN, MOVE_ENCORE },
+ .cool = 10,
+ .beauty = 4,
+ .cute = 4,
+ .smart = 5,
+ .tough = 18,
+ .sheen = 70,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SYDNEY] = {
+ .species = SPECIES_WHISMUR,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_SYDNEY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_SYDNEY),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ASTONISH, MOVE_SCREECH, MOVE_UPROAR, MOVE_HYPER_VOICE },
+ .cool = 2,
+ .beauty = 2,
+ .cute = 7,
+ .smart = 2,
+ .tough = 7,
+ .sheen = 80,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MORRIS] = {
+ .species = SPECIES_MAKUHITA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_MORRIS),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_MORRIS),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_B,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SEISMIC_TOSS, MOVE_VITAL_THROW, MOVE_TACKLE, MOVE_REVERSAL },
+ .cool = 9,
+ .beauty = 1,
+ .cute = 1,
+ .smart = 8,
+ .tough = 1,
+ .sheen = 90,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MARIAH] = {
+ .species = SPECIES_ARON,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_MARIAH),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_MARIAH),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_C,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_METAL_CLAW, MOVE_IRON_DEFENSE, MOVE_HEADBUTT, MOVE_TAKE_DOWN },
+ .cool = 5,
+ .beauty = 10,
+ .cute = 2,
+ .smart = 10,
+ .tough = 2,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RUSSELL] = {
+ .species = SPECIES_ZUBAT,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_RUSSELL),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_RUSSELL),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_D,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_HAZE, MOVE_MEAN_LOOK, MOVE_CONFUSE_RAY, MOVE_LEECH_LIFE },
+ .cool = 4,
+ .beauty = 2,
+ .cute = 2,
+ .smart = 2,
+ .tough = 10,
+ .sheen = 50,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MELANIE] = {
+ .species = SPECIES_GULPIN,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_MELANIE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_MELANIE),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_GIRL_1,
+ .flags = CONTEST_AI_SET_E,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SLUDGE, MOVE_AMNESIA, MOVE_TOXIC, MOVE_YAWN },
+ .cool = 1,
+ .beauty = 10,
+ .cute = 1,
+ .smart = 10,
+ .tough = 5,
+ .sheen = 60,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CHANCE] = {
+ .species = SPECIES_ELECTRIKE,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_CHANCE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_CHANCE),
+ .trainerGfxId = OBJ_EVENT_GFX_BOY_4,
+ .flags = CONTEST_AI_SET_F,
+ .whichRank = CONTEST_RANK_NORMAL,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SPARK, MOVE_THUNDER_WAVE, MOVE_THUNDER, MOVE_ROAR },
+ .cool = 20,
+ .beauty = 10,
+ .cute = 1,
+ .smart = 1,
+ .tough = 1,
+ .sheen = 70,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KARINA] = {
+ .species = SPECIES_ROSELIA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_KARINA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_KARINA),
+ .trainerGfxId = OBJ_EVENT_GFX_PICNICKER,
+ .flags = CONTEST_AI_SET_10,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_PETAL_DANCE, MOVE_MAGICAL_LEAF, MOVE_GRASS_WHISTLE, MOVE_INGRAIN },
+ .cool = 50,
+ .beauty = 15,
+ .cute = 75,
+ .smart = 10,
+ .tough = 20,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_BOBBY] = {
+ .species = SPECIES_DODUO,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_BOBBY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_BOBBY),
+ .trainerGfxId = OBJ_EVENT_GFX_RUNNING_TRIATHLETE_M,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_PECK, MOVE_FURY_ATTACK, MOVE_RETURN, MOVE_GROWL },
+ .cool = 15,
+ .beauty = 21,
+ .cute = 15,
+ .smart = 85,
+ .tough = 35,
+ .sheen = 110,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CLAIRE] = {
+ .species = SPECIES_TRAPINCH,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_CLAIRE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_CLAIRE),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_11,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_BITE, MOVE_SAND_ATTACK, MOVE_DIG, MOVE_FAINT_ATTACK },
+ .cool = 75,
+ .beauty = 25,
+ .cute = 25,
+ .smart = 10,
+ .tough = 25,
+ .sheen = 120,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_WILLIE] = {
+ .species = SPECIES_CACNEA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_WILLIE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_WILLIE),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_12,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SPIKES, MOVE_LEER, MOVE_POISON_STING, MOVE_SAND_ATTACK },
+ .cool = 10,
+ .beauty = 30,
+ .cute = 25,
+ .smart = 65,
+ .tough = 25,
+ .sheen = 130,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CASSIDY] = {
+ .species = SPECIES_SANDSHREW,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_CASSIDY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_CASSIDY),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_13,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SLASH, MOVE_DEFENSE_CURL, MOVE_SWIFT, MOVE_FURY_SWIPES },
+ .cool = 30,
+ .beauty = 90,
+ .cute = 30,
+ .smart = 10,
+ .tough = 100,
+ .sheen = 140,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MORGAN] = {
+ .species = SPECIES_BALTOY,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_MORGAN),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_MORGAN),
+ .trainerGfxId = OBJ_EVENT_GFX_BLACK_BELT,
+ .flags = CONTEST_AI_SET_14,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SELF_DESTRUCT, MOVE_ROCK_TOMB, MOVE_PSYBEAM, MOVE_CONFUSION },
+ .cool = 50,
+ .beauty = 40,
+ .cute = 10,
+ .smart = 35,
+ .tough = 35,
+ .sheen = 150,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SUMMER] = {
+ .species = SPECIES_NUMEL,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_SUMMER),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_SUMMER),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_15,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_MAGNITUDE, MOVE_EARTHQUAKE, MOVE_SUNNY_DAY, MOVE_FLAMETHROWER },
+ .cool = 40,
+ .beauty = 5,
+ .cute = 40,
+ .smart = 40,
+ .tough = 40,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MILES] = {
+ .species = SPECIES_SPINDA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_MILES),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_MILES),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_16,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_TEETER_DANCE, MOVE_PSYCH_UP, MOVE_HYPNOSIS, MOVE_UPROAR },
+ .cool = 25,
+ .beauty = 75,
+ .cute = 25,
+ .smart = 10,
+ .tough = 25,
+ .sheen = 110,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_AUDREY] = {
+ .species = SPECIES_SWABLU,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_AUDREY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_AUDREY),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_17,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MIRROR_MOVE, MOVE_PERISH_SONG, MOVE_SAFEGUARD, MOVE_MIST },
+ .cool = 30,
+ .beauty = 30,
+ .cute = 40,
+ .smart = 30,
+ .tough = 25,
+ .sheen = 120,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_AVERY] = {
+ .species = SPECIES_LINOONE,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_AVERY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_AVERY),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_GROWL, MOVE_COVET, MOVE_SAND_ATTACK, MOVE_REST },
+ .cool = 40,
+ .beauty = 40,
+ .cute = 30,
+ .smart = 10,
+ .tough = 30,
+ .sheen = 130,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ARIANA] = {
+ .species = SPECIES_KECLEON,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_ARIANA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_ARIANA),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_18,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_THIEF, MOVE_SCREECH, MOVE_ANCIENT_POWER, MOVE_BIND },
+ .cool = 10,
+ .beauty = 10,
+ .cute = 40,
+ .smart = 75,
+ .tough = 35,
+ .sheen = 140,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ASHTON] = {
+ .species = SPECIES_GOLDEEN,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_ASHTON),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_ASHTON),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_19,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_HORN_ATTACK, MOVE_FURY_ATTACK, MOVE_HORN_DRILL, MOVE_TAIL_WHIP },
+ .cool = 70,
+ .beauty = 30,
+ .cute = 5,
+ .smart = 30,
+ .tough = 25,
+ .sheen = 150,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SANDRA] = {
+ .species = SPECIES_BARBOACH,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_SANDRA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_SANDRA),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_GIRL_1,
+ .flags = CONTEST_AI_SET_1A,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_MUD_SPORT, MOVE_WATER_SPORT, MOVE_EARTHQUAKE, MOVE_FUTURE_SIGHT },
+ .cool = 45,
+ .beauty = 45,
+ .cute = 60,
+ .smart = 25,
+ .tough = 15,
+ .sheen = 100,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CARSON] = {
+ .species = SPECIES_SKARMORY,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_CARSON),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_CARSON),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_1B,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SWIFT, MOVE_DOUBLE_TEAM, MOVE_AGILITY, MOVE_CUT },
+ .cool = 40,
+ .beauty = 30,
+ .cute = 25,
+ .smart = 60,
+ .tough = 20,
+ .sheen = 110,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KATRINA] = {
+ .species = SPECIES_LOTAD,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_KATRINA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_KATRINA),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_1C,
+ .whichRank = CONTEST_RANK_SUPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ASTONISH, MOVE_GROWL, MOVE_RAIN_DANCE, MOVE_WATER_PULSE },
+ .cool = 15,
+ .beauty = 15,
+ .cute = 30,
+ .smart = 15,
+ .tough = 75,
+ .sheen = 120,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RONNIE] = {
+ .species = SPECIES_LAIRON,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_RONNIE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_RONNIE),
+ .trainerGfxId = OBJ_EVENT_GFX_HIKER,
+ .flags = CONTEST_AI_SET_1D,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_METAL_SOUND, MOVE_METAL_CLAW, MOVE_HARDEN, MOVE_TAKE_DOWN },
+ .cool = 30,
+ .beauty = 50,
+ .cute = 35,
+ .smart = 100,
+ .tough = 90,
+ .sheen = 200,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CLAUDIA] = {
+ .species = SPECIES_NUZLEAF,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_CLAUDIA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_CLAUDIA),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_GROWTH, MOVE_RAZOR_WIND, MOVE_EXPLOSION, MOVE_EXTRASENSORY },
+ .cool = 75,
+ .beauty = 75,
+ .cute = 65,
+ .smart = 35,
+ .tough = 70,
+ .sheen = 210,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ELIAS] = {
+ .species = SPECIES_NINJASK,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_ELIAS),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_ELIAS),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_11,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SCREECH, MOVE_FURY_SWIPES, MOVE_SAND_ATTACK, MOVE_BATON_PASS },
+ .cool = 30,
+ .beauty = 50,
+ .cute = 95,
+ .smart = 70,
+ .tough = 70,
+ .sheen = 220,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_JADE] = {
+ .species = SPECIES_SWELLOW,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_JADE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_JADE),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_12,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_AGILITY, MOVE_AERIAL_ACE, MOVE_WING_ATTACK, MOVE_FLY },
+ .cool = 65,
+ .beauty = 85,
+ .cute = 35,
+ .smart = 75,
+ .tough = 40,
+ .sheen = 230,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_FRANCIS] = {
+ .species = SPECIES_MIGHTYENA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_FRANCIS),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_FRANCIS),
+ .trainerGfxId = OBJ_EVENT_GFX_BLACK_BELT,
+ .flags = CONTEST_AI_SET_5,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_TAUNT, MOVE_THIEF, MOVE_ODOR_SLEUTH, MOVE_TAKE_DOWN },
+ .cool = 40,
+ .beauty = 80,
+ .cute = 35,
+ .smart = 70,
+ .tough = 70,
+ .sheen = 240,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ALISHA] = {
+ .species = SPECIES_BEAUTIFLY,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_ALISHA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_ALISHA),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_1E,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MORNING_SUN, MOVE_SILVER_WIND, MOVE_STUN_SPORE, MOVE_SECRET_POWER },
+ .cool = 40,
+ .beauty = 70,
+ .cute = 25,
+ .smart = 80,
+ .tough = 100,
+ .sheen = 250,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SAUL] = {
+ .species = SPECIES_SEAKING,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_SAUL),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_SAUL),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_1F,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_FLAIL, MOVE_SUPERSONIC, MOVE_HORN_ATTACK, MOVE_FURY_ATTACK },
+ .cool = 80,
+ .beauty = 60,
+ .cute = 30,
+ .smart = 70,
+ .tough = 90,
+ .sheen = 200,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_FELICIA] = {
+ .species = SPECIES_CAMERUPT,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_FELICIA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_FELICIA),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_16,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_OVERHEAT, MOVE_HYPER_BEAM },
+ .cool = 100,
+ .beauty = 80,
+ .cute = 20,
+ .smart = 50,
+ .tough = 65,
+ .sheen = 210,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_EMILIO] = {
+ .species = SPECIES_MACHOP,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_EMILIO),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_EMILIO),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_20,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SEISMIC_TOSS, MOVE_FOCUS_ENERGY, MOVE_KARATE_CHOP, MOVE_SCARY_FACE },
+ .cool = 70,
+ .beauty = 85,
+ .cute = 25,
+ .smart = 60,
+ .tough = 50,
+ .sheen = 220,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KARLA] = {
+ .species = SPECIES_LOMBRE,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_KARLA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_KARLA),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ATTRACT, MOVE_FLASH, MOVE_UPROAR, MOVE_GROWL },
+ .cool = 40,
+ .beauty = 60,
+ .cute = 90,
+ .smart = 45,
+ .tough = 70,
+ .sheen = 230,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_DARRYL] = {
+ .species = SPECIES_SEVIPER,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_DARRYL),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_DARRYL),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_18,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_POISON_FANG, MOVE_GLARE, MOVE_WRAP, MOVE_SCREECH },
+ .cool = 35,
+ .beauty = 50,
+ .cute = 90,
+ .smart = 40,
+ .tough = 100,
+ .sheen = 240,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SELENA] = {
+ .species = SPECIES_WAILMER,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_SELENA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_SELENA),
+ .trainerGfxId = OBJ_EVENT_GFX_OLD_WOMAN_1,
+ .flags = CONTEST_AI_SET_19,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_WATER_PULSE, MOVE_REST, MOVE_WATER_SPOUT, MOVE_SPLASH },
+ .cool = 30,
+ .beauty = 100,
+ .cute = 100,
+ .smart = 50,
+ .tough = 30,
+ .sheen = 250,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_NOEL] = {
+ .species = SPECIES_MAGIKARP,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_NOEL),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_NOEL),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_1A,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_TACKLE, MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE },
+ .cool = 30,
+ .beauty = 30,
+ .cute = 160,
+ .smart = 50,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_LACEY] = {
+ .species = SPECIES_LUNATONE,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_LACEY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_LACEY),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_21,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_EXPLOSION, MOVE_FUTURE_SIGHT, MOVE_PSYCHIC, MOVE_CONFUSION },
+ .cool = 50,
+ .beauty = 70,
+ .cute = 60,
+ .smart = 70,
+ .tough = 50,
+ .sheen = 210,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CORBIN] = {
+ .species = SPECIES_PELIPPER,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_CORBIN),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_CORBIN),
+ .trainerGfxId = OBJ_EVENT_GFX_MANIAC,
+ .flags = CONTEST_AI_SET_F,
+ .whichRank = CONTEST_RANK_HYPER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_MIST, MOVE_HAIL, MOVE_HYPER_BEAM, MOVE_WING_ATTACK },
+ .cool = 95,
+ .beauty = 80,
+ .cute = 85,
+ .smart = 35,
+ .tough = 35,
+ .sheen = 220,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_JUSTINA] = {
+ .species = SPECIES_GYARADOS,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_JUSTINA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_JUSTINA),
+ .trainerGfxId = OBJ_EVENT_GFX_PICNICKER,
+ .flags = CONTEST_AI_SET_1D,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_HYPER_BEAM, MOVE_HYDRO_PUMP, MOVE_RAIN_DANCE, MOVE_BITE },
+ .cool = 160,
+ .beauty = 200,
+ .cute = 20,
+ .smart = 40,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_RALPH] = {
+ .species = SPECIES_LOUDRED,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_RALPH),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_RALPH),
+ .trainerGfxId = OBJ_EVENT_GFX_OLD_MAN_1,
+ .flags = CONTEST_AI_SET_2,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_HYPER_VOICE, MOVE_STOMP, MOVE_ROAR, MOVE_HOWL },
+ .cool = 170,
+ .beauty = 50,
+ .cute = 55,
+ .smart = 150,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_ROSA] = {
+ .species = SPECIES_DELCATTY,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_ROSA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_ROSA),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_1,
+ .flags = CONTEST_AI_SET_11,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_ATTRACT, MOVE_ASSIST, MOVE_FAINT_ATTACK, MOVE_TAIL_WHIP },
+ .cool = 40,
+ .beauty = 200,
+ .cute = 150,
+ .smart = 185,
+ .tough = 60,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_KEATON] = {
+ .species = SPECIES_SLAKING,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_KEATON),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_KEATON),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_BOY_2,
+ .flags = CONTEST_AI_SET_12,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_COVET, MOVE_COUNTER, MOVE_ENCORE, MOVE_SLACK_OFF },
+ .cool = 85,
+ .beauty = 85,
+ .cute = 170,
+ .smart = 110,
+ .tough = 150,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_MAYRA] = {
+ .species = SPECIES_ALTARIA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_MAYRA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_MAYRA),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_2,
+ .flags = CONTEST_AI_SET_5,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_DRAGON_DANCE, MOVE_HYPER_BEAM, MOVE_PERISH_SONG, MOVE_SAFEGUARD },
+ .cool = 170,
+ .beauty = 150,
+ .cute = 30,
+ .smart = 30,
+ .tough = 90,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_LAMAR] = {
+ .species = SPECIES_KIRLIA,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_LAMAR),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_LAMAR),
+ .trainerGfxId = OBJ_EVENT_GFX_BOY_4,
+ .flags = CONTEST_AI_SET_1E,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_SKILL_SWAP, MOVE_RETURN },
+ .cool = 230,
+ .beauty = 60,
+ .cute = 60,
+ .smart = 230,
+ .tough = 80,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_AUBREY] = {
+ .species = SPECIES_VILEPLUME,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_AUBREY),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_AUBREY),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_5,
+ .flags = CONTEST_AI_SET_1F,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_PETAL_DANCE, MOVE_SWEET_SCENT, MOVE_STUN_SPORE, MOVE_FLASH },
+ .cool = 35,
+ .beauty = 200,
+ .cute = 150,
+ .smart = 130,
+ .tough = 40,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_NIGEL] = {
+ .species = SPECIES_DUSKULL,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_NIGEL),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_NIGEL),
+ .trainerGfxId = OBJ_EVENT_GFX_CAMPER,
+ .flags = CONTEST_AI_SET_16,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_DISABLE, MOVE_FUTURE_SIGHT, MOVE_NIGHT_SHADE, MOVE_PURSUIT },
+ .cool = 25,
+ .beauty = 35,
+ .cute = 230,
+ .smart = 150,
+ .tough = 160,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_CAMILLE] = {
+ .species = SPECIES_XATU,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_CAMILLE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_CAMILLE),
+ .trainerGfxId = OBJ_EVENT_GFX_LASS,
+ .flags = CONTEST_AI_SET_20,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_NIGHT_SHADE, MOVE_FUTURE_SIGHT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC },
+ .cool = 35,
+ .beauty = 35,
+ .cute = 150,
+ .smart = 130,
+ .tough = 170,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_DEON] = {
+ .species = SPECIES_SHARPEDO,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_DEON),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_DEON),
+ .trainerGfxId = OBJ_EVENT_GFX_SCHOOL_KID_M,
+ .flags = CONTEST_AI_SET_A,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_AGILITY, MOVE_SWAGGER, MOVE_TAUNT, MOVE_TAKE_DOWN },
+ .cool = 140,
+ .beauty = 70,
+ .cute = 140,
+ .smart = 75,
+ .tough = 100,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_JANELLE] = {
+ .species = SPECIES_LUVDISC,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_JANELLE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_JANELLE),
+ .trainerGfxId = OBJ_EVENT_GFX_GIRL_2,
+ .flags = CONTEST_AI_SET_18,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_TAKE_DOWN, MOVE_CHARM },
+ .cool = 50,
+ .beauty = 100,
+ .cute = 220,
+ .smart = 40,
+ .tough = 190,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_HEATH] = {
+ .species = SPECIES_HERACROSS,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_HEATH),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_HEATH),
+ .trainerGfxId = OBJ_EVENT_GFX_MAN_4,
+ .flags = CONTEST_AI_SET_19,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = FALSE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_STRENGTH, MOVE_ENDURE, MOVE_REVERSAL, MOVE_ROCK_TOMB },
+ .cool = 170,
+ .beauty = 70,
+ .cute = 110,
+ .smart = 240,
+ .tough = 140,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_SASHA] = {
+ .species = SPECIES_ELECTRODE,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_SASHA),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_SASHA),
+ .trainerGfxId = OBJ_EVENT_GFX_LITTLE_GIRL_1,
+ .flags = CONTEST_AI_SET_1A,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = FALSE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SWIFT, MOVE_FLASH },
+ .cool = 200,
+ .beauty = 200,
+ .cute = 30,
+ .smart = 35,
+ .tough = 50,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_FRANKIE] = {
+ .species = SPECIES_PICHU,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_FRANKIE),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_FRANKIE),
+ .trainerGfxId = OBJ_EVENT_GFX_YOUNGSTER,
+ .flags = CONTEST_AI_SET_21,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = FALSE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = TRUE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = FALSE,
+ .moves = { MOVE_SWEET_KISS, MOVE_ATTRACT, MOVE_REST, MOVE_TAIL_WHIP },
+ .cool = 25,
+ .beauty = 150,
+ .cute = 180,
+ .smart = 115,
+ .tough = 120,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+ [CONTEST_OPPONENT_HELEN] = {
+ .species = SPECIES_WOBBUFFET,
+ .nickname = _(CONTEST_OPPONENT_NICKNAME_HELEN),
+ .trainerName = _(CONTEST_OPPONENT_OTNAME_HELEN),
+ .trainerGfxId = OBJ_EVENT_GFX_WOMAN_1,
+ .flags = CONTEST_AI_SET_F,
+ .whichRank = CONTEST_RANK_MASTER,
+ .aiPool_Cool = TRUE,
+ .aiPool_Beauty = TRUE,
+ .aiPool_Cute = FALSE,
+ .aiPool_Smart = TRUE,
+ .aiPool_Tough = TRUE,
+ .moves = { MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_SAFEGUARD, MOVE_DESTINY_BOND },
+ .cool = 60,
+ .beauty = 230,
+ .cute = 50,
+ .smart = 220,
+ .tough = 210,
+ .sheen = 255,
+ .personality = 0,
+ .otId = 0xFFFF
+ },
+};
diff --git a/src/data/graphics.c b/src/data/graphics.c
index 0e98195cd..9a73f34e6 100644
--- a/src/data/graphics.c
+++ b/src/data/graphics.c
@@ -355,11 +355,11 @@ const u8 gContestNumbers_UnusedGfx[] = INCBIN_U8("graphics/unused/numbers.4bpp.l
const u8 gContestNumbers_UnusedPal[] = INCBIN_U8("graphics/unused/numbers.gbapal.lz");
const u8 unused_old_contest_2_4bpp[] = INCBIN_U8("graphics/unused/old_contest_2.4bpp.lz");
// the tilemap and palette for unused contest assets are used. however, these two files aren't old
-const u8 gUnknown_08D17144[] = INCBIN_U8("graphics/unused/old_contest_2.gbapal.lz");
+const u8 gContestPalette[] = INCBIN_U8("graphics/unused/old_contest_2.gbapal.lz");
-const u8 gUnknown_08D1725C[] = INCBIN_U8("graphics/unused/old_contest_2.bin.lz");
+const u8 gContestGfx[] = INCBIN_U8("graphics/unused/old_contest_2.bin.lz");
-const u8 gUnknown_08D17424[] = INCBIN_U8("graphics/unknown/unknown_D17424.bin.lz");
+const u8 gContestBgmap[] = INCBIN_U8("graphics/unknown/unknown_D17424.bin.lz");
const u8 unused_unknown_D176CC[] = INCBIN_U8("graphics/unknown/unknown_D176CC.bin.lz");
const u8 unused_unknown_D177D8[] = INCBIN_U8("graphics/unknown/unknown_D177D8.bin.lz");
@@ -1183,12 +1183,12 @@ const u16 gMonIconPalettes[][16] =
};
const u8 gUnknown_08E96738[] = INCBIN_U8("graphics/unknown/unknown_E96738.bin.lz");
-const u8 gUnknown_08E96888[] = INCBIN_U8("graphics/pokedex/pokedex_list_menu.bin.lz");
-const u8 gUnknown_08E96994[] = INCBIN_U8("graphics/pokedex/pokedex_listing_menu.bin.lz");
-const u8 gUnknown_08E96ACC[] = INCBIN_U8("graphics/pokedex/pokedex_navbar.bin.lz");
-const u8 gUnknown_08E96B58[] = INCBIN_U8("graphics/pokedex/pokedex_navbar_3.bin.lz");
+const u8 gPokedexStartMenuMain_Tilemap[] = INCBIN_U8("graphics/pokedex/pokedex_list_menu.bin.lz");
+const u8 gPokedexStartMenuSearchResults_Tilemap[] = INCBIN_U8("graphics/pokedex/pokedex_listing_menu.bin.lz");
+const u8 gPokedexScreenSelectBarMain_Tilemap[] = INCBIN_U8("graphics/pokedex/pokedex_navbar.bin.lz");
+const u8 gPokedexScreenSelectBarSubmenu_Tilemap[] = INCBIN_U8("graphics/pokedex/pokedex_navbar_3.bin.lz");
const u8 gUnknown_08E96BD4[] = INCBIN_U8("graphics/pokedex/pokedex_detail_layout.bin.lz");
-const u8 gUnknown_08E96D2C[] = INCBIN_U8("graphics/unknown/unknown_E96D2C.bin.lz");
+const u8 gPokedexMenuSearch_Tilemap[] = INCBIN_U8("graphics/unknown/unknown_E96D2C.bin.lz");
const u8 gBagScreenLabels_Tilemap[] = INCBIN_U8("graphics/interface/bag_screen_labels.bin");
@@ -1422,7 +1422,7 @@ const u16 gTilesetPalettes_Shop[][16] =
};
const u8 gTilesetTiles_Shop[] = INCBIN_U8("data/tilesets/secondary/shop/tiles.4bpp.lz");
-const u16 gUnknown_083FAF1C[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
-const u8 gUnknown_083FAF3C[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
-const u8 gUnknown_083FAE7C[] = INCBIN_U8("graphics/pokedex/cry_meter_map.bin");
+const u16 gCryMeter_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
+const u8 gCryMeter_Gfx[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
+const u8 gCryMeter_Tilemap[] = INCBIN_U8("graphics/pokedex/cry_meter_map.bin");
#endif // GERMAN
diff --git a/src/data/pointillism_points.h b/src/data/pointillism_points.h
new file mode 100644
index 000000000..708f5c02e
--- /dev/null
+++ b/src/data/pointillism_points.h
@@ -0,0 +1,3210 @@
+#define GET_POINT_OFFSET_DL(bits) (((bits) >> 0) & 1)
+#define GET_POINT_COLOR_TYPE(bits) (((bits) >> 1) & 3)
+#define GET_POINT_DELTA(bits) (((bits) >> 3) & 7)
+
+#define PT(x, y, delta, colorType, offsetDownLeft) x, y, (delta << 3) | (colorType << 1) | offsetDownLeft
+
+static const u8 sPointillismPoints[][3] = {
+ PT( 0, 29, 3, 2, FALSE),
+ PT(14, 30, 3, 1, TRUE),
+ PT( 0, 1, 6, 1, FALSE),
+ PT(46, 30, 6, 3, TRUE),
+ PT(10, 34, 3, 3, TRUE),
+ PT( 5, 38, 5, 3, FALSE),
+ PT(18, 23, 3, 3, FALSE),
+ PT(26, 3, 2, 0, TRUE),
+ PT( 5, 17, 3, 0, FALSE),
+ PT( 5, 39, 5, 3, TRUE),
+ PT(26, 63, 2, 1, FALSE),
+ PT(34, 63, 2, 3, FALSE),
+ PT(43, 47, 5, 3, FALSE),
+ PT(17, 2, 5, 2, TRUE),
+ PT(35, 13, 5, 0, FALSE),
+ PT(23, 12, 3, 0, TRUE),
+ PT(47, 14, 2, 1, TRUE),
+ PT(48, 24, 4, 0, FALSE),
+ PT(45, 40, 4, 1, FALSE),
+ PT( 1, 3, 3, 0, TRUE),
+ PT(14, 42, 5, 1, TRUE),
+ PT(34, 21, 4, 2, TRUE),
+ PT(34, 10, 4, 3, FALSE),
+ PT(57, 6, 4, 1, TRUE),
+ PT(22, 7, 5, 3, TRUE),
+ PT(34, 58, 3, 1, TRUE),
+ PT(59, 54, 6, 2, TRUE),
+ PT(10, 43, 4, 2, FALSE),
+ PT(54, 9, 2, 1, FALSE),
+ PT(28, 47, 4, 1, TRUE),
+ PT(46, 56, 5, 2, FALSE),
+ PT( 5, 42, 4, 0, FALSE),
+ PT( 7, 20, 6, 1, FALSE),
+ PT(49, 8, 2, 3, TRUE),
+ PT(26, 36, 5, 2, TRUE),
+ PT(34, 10, 2, 3, FALSE),
+ PT(27, 38, 5, 1, TRUE),
+ PT(41, 22, 2, 0, TRUE),
+ PT(53, 8, 2, 2, FALSE),
+ PT(30, 8, 2, 2, FALSE),
+ PT( 5, 49, 2, 2, FALSE),
+ PT(56, 49, 2, 3, TRUE),
+ PT(52, 51, 2, 1, FALSE),
+ PT(17, 9, 3, 3, TRUE),
+ PT(40, 61, 6, 1, FALSE),
+ PT(53, 3, 3, 3, FALSE),
+ PT(60, 43, 5, 3, FALSE),
+ PT(16, 1, 2, 3, TRUE),
+ PT( 3, 62, 4, 1, FALSE),
+ PT(23, 24, 6, 2, FALSE),
+ PT( 8, 41, 3, 0, TRUE),
+ PT( 3, 36, 5, 0, FALSE),
+ PT(61, 51, 5, 3, TRUE),
+ PT(49, 36, 3, 0, TRUE),
+ PT(27, 24, 4, 3, FALSE),
+ PT( 7, 13, 4, 2, TRUE),
+ PT(45, 63, 2, 1, FALSE),
+ PT(47, 21, 4, 2, TRUE),
+ PT(41, 15, 2, 1, FALSE),
+ PT( 7, 44, 2, 1, FALSE),
+ PT(44, 11, 4, 3, FALSE),
+ PT(18, 26, 2, 3, FALSE),
+ PT( 0, 11, 5, 3, TRUE),
+ PT(22, 53, 4, 2, FALSE),
+ PT(31, 28, 4, 1, FALSE),
+ PT(41, 51, 4, 3, TRUE),
+ PT(59, 48, 2, 3, TRUE),
+ PT(17, 6, 6, 2, TRUE),
+ PT(62, 49, 5, 3, TRUE),
+ PT(17, 58, 4, 2, TRUE),
+ PT(42, 2, 3, 0, TRUE),
+ PT(51, 24, 6, 2, TRUE),
+ PT(42, 32, 4, 0, TRUE),
+ PT(46, 50, 3, 1, TRUE),
+ PT(59, 31, 4, 1, TRUE),
+ PT(57, 41, 5, 1, FALSE),
+ PT(46, 49, 5, 0, TRUE),
+ PT(42, 14, 5, 2, TRUE),
+ PT(45, 0, 3, 3, TRUE),
+ PT(56, 40, 3, 1, TRUE),
+ PT(20, 59, 5, 1, TRUE),
+ PT(46, 4, 4, 3, FALSE),
+ PT(54, 48, 2, 0, TRUE),
+ PT(59, 33, 5, 2, TRUE),
+ PT(43, 63, 3, 1, TRUE),
+ PT(32, 19, 6, 0, TRUE),
+ PT(51, 12, 6, 0, FALSE),
+ PT(34, 43, 5, 1, TRUE),
+ PT(22, 2, 3, 3, FALSE),
+ PT(28, 18, 3, 2, FALSE),
+ PT(15, 60, 6, 3, FALSE),
+ PT(56, 16, 5, 2, TRUE),
+ PT(24, 47, 5, 2, TRUE),
+ PT(53, 59, 2, 0, TRUE),
+ PT(55, 49, 2, 1, TRUE),
+ PT(19, 61, 5, 3, TRUE),
+ PT(30, 44, 6, 1, TRUE),
+ PT(46, 55, 2, 1, FALSE),
+ PT(60, 31, 6, 1, TRUE),
+ PT(50, 42, 4, 3, TRUE),
+ PT(13, 59, 3, 2, FALSE),
+ PT(53, 42, 4, 3, TRUE),
+ PT( 9, 61, 4, 3, TRUE),
+ PT(18, 11, 3, 0, FALSE),
+ PT(12, 21, 3, 2, TRUE),
+ PT(32, 1, 3, 2, FALSE),
+ PT( 8, 59, 3, 2, FALSE),
+ PT(18, 55, 6, 1, TRUE),
+ PT(21, 3, 5, 2, FALSE),
+ PT(42, 59, 6, 0, TRUE),
+ PT(15, 4, 6, 2, TRUE),
+ PT( 8, 23, 6, 1, TRUE),
+ PT(56, 61, 5, 1, FALSE),
+ PT(47, 53, 2, 3, FALSE),
+ PT(16, 53, 2, 3, FALSE),
+ PT(35, 19, 5, 2, FALSE),
+ PT(47, 6, 4, 0, FALSE),
+ PT(39, 58, 4, 2, FALSE),
+ PT( 0, 28, 5, 1, FALSE),
+ PT( 3, 57, 3, 2, TRUE),
+ PT(40, 7, 3, 1, FALSE),
+ PT(32, 10, 6, 3, TRUE),
+ PT( 7, 53, 5, 2, TRUE),
+ PT(21, 47, 5, 2, FALSE),
+ PT(16, 44, 4, 1, TRUE),
+ PT(63, 41, 2, 2, FALSE),
+ PT(42, 33, 6, 3, FALSE),
+ PT(52, 26, 5, 2, FALSE),
+ PT(28, 61, 6, 1, TRUE),
+ PT(56, 43, 4, 1, FALSE),
+ PT(53, 40, 3, 3, TRUE),
+ PT(61, 15, 3, 2, FALSE),
+ PT(30, 62, 3, 1, TRUE),
+ PT(12, 62, 3, 3, TRUE),
+ PT(43, 49, 5, 2, FALSE),
+ PT(50, 57, 2, 0, TRUE),
+ PT( 5, 9, 2, 0, TRUE),
+ PT( 4, 56, 5, 1, FALSE),
+ PT(50, 0, 2, 3, FALSE),
+ PT(19, 11, 6, 0, TRUE),
+ PT(52, 42, 2, 1, TRUE),
+ PT(44, 34, 4, 0, TRUE),
+ PT(57, 47, 2, 2, TRUE),
+ PT(55, 40, 3, 3, FALSE),
+ PT( 7, 59, 5, 2, TRUE),
+ PT(17, 3, 5, 0, FALSE),
+ PT(45, 48, 3, 3, FALSE),
+ PT(49, 17, 2, 0, TRUE),
+ PT(35, 1, 3, 3, FALSE),
+ PT(61, 49, 6, 2, FALSE),
+ PT(28, 2, 6, 2, FALSE),
+ PT(33, 14, 4, 2, TRUE),
+ PT(61, 7, 2, 3, TRUE),
+ PT(51, 21, 2, 0, FALSE),
+ PT(41, 50, 6, 1, FALSE),
+ PT(24, 31, 6, 0, FALSE),
+ PT(45, 59, 6, 0, FALSE),
+ PT(39, 62, 2, 3, FALSE),
+ PT(49, 21, 2, 1, FALSE),
+ PT(48, 37, 2, 3, TRUE),
+ PT(51, 6, 6, 2, FALSE),
+ PT( 0, 41, 3, 0, FALSE),
+ PT(60, 3, 2, 1, FALSE),
+ PT(44, 12, 2, 0, TRUE),
+ PT( 9, 48, 6, 0, FALSE),
+ PT(16, 14, 2, 0, TRUE),
+ PT(39, 22, 3, 1, TRUE),
+ PT(12, 59, 5, 3, FALSE),
+ PT(43, 51, 3, 3, FALSE),
+ PT(19, 45, 5, 2, TRUE),
+ PT(17, 36, 5, 0, TRUE),
+ PT(52, 62, 5, 1, TRUE),
+ PT(36, 30, 4, 0, TRUE),
+ PT(39, 26, 5, 2, TRUE),
+ PT( 4, 57, 2, 3, FALSE),
+ PT(62, 51, 4, 3, FALSE),
+ PT(27, 46, 4, 2, TRUE),
+ PT(12, 6, 3, 0, TRUE),
+ PT(37, 25, 3, 0, FALSE),
+ PT(29, 51, 6, 1, TRUE),
+ PT(29, 40, 5, 2, TRUE),
+ PT(28, 16, 5, 1, FALSE),
+ PT(31, 53, 3, 3, FALSE),
+ PT(52, 2, 2, 0, FALSE),
+ PT(43, 58, 2, 2, FALSE),
+ PT(13, 11, 2, 2, TRUE),
+ PT(12, 44, 2, 0, FALSE),
+ PT(55, 58, 3, 0, TRUE),
+ PT( 6, 19, 2, 3, TRUE),
+ PT(36, 16, 4, 2, TRUE),
+ PT(36, 4, 3, 3, FALSE),
+ PT( 0, 53, 6, 2, FALSE),
+ PT(58, 0, 6, 3, TRUE),
+ PT(60, 7, 3, 1, FALSE),
+ PT(43, 40, 6, 3, FALSE),
+ PT(52, 57, 5, 3, TRUE),
+ PT(40, 9, 3, 3, TRUE),
+ PT(56, 49, 6, 0, FALSE),
+ PT(22, 37, 6, 0, TRUE),
+ PT(24, 40, 6, 0, TRUE),
+ PT(24, 12, 4, 1, FALSE),
+ PT( 6, 57, 5, 2, TRUE),
+ PT(61, 32, 4, 2, FALSE),
+ PT(46, 39, 4, 0, TRUE),
+ PT(62, 24, 3, 0, FALSE),
+ PT(21, 60, 4, 2, FALSE),
+ PT( 6, 27, 4, 3, FALSE),
+ PT(21, 14, 4, 1, FALSE),
+ PT(10, 13, 3, 3, TRUE),
+ PT(24, 22, 6, 2, FALSE),
+ PT(16, 40, 4, 0, TRUE),
+ PT(32, 17, 2, 0, TRUE),
+ PT(54, 50, 2, 2, TRUE),
+ PT(59, 46, 4, 2, FALSE),
+ PT(31, 45, 2, 1, FALSE),
+ PT(54, 46, 4, 0, FALSE),
+ PT(11, 23, 6, 1, TRUE),
+ PT(38, 3, 3, 3, TRUE),
+ PT( 8, 25, 6, 0, TRUE),
+ PT(42, 24, 4, 2, TRUE),
+ PT(53, 45, 5, 2, TRUE),
+ PT(48, 56, 3, 0, FALSE),
+ PT(28, 37, 2, 2, FALSE),
+ PT(28, 34, 5, 0, FALSE),
+ PT( 8, 35, 4, 0, TRUE),
+ PT(38, 30, 6, 0, FALSE),
+ PT(25, 15, 2, 2, TRUE),
+ PT(16, 47, 4, 1, FALSE),
+ PT(18, 2, 4, 2, TRUE),
+ PT(60, 1, 3, 2, TRUE),
+ PT(14, 20, 3, 0, FALSE),
+ PT(13, 24, 2, 3, TRUE),
+ PT(34, 11, 6, 0, TRUE),
+ PT(19, 52, 4, 0, TRUE),
+ PT(15, 45, 6, 3, FALSE),
+ PT(57, 31, 4, 2, TRUE),
+ PT(24, 16, 3, 3, TRUE),
+ PT(45, 32, 4, 0, FALSE),
+ PT(25, 11, 6, 0, TRUE),
+ PT(51, 19, 2, 2, FALSE),
+ PT(46, 17, 4, 0, TRUE),
+ PT(45, 10, 6, 3, TRUE),
+ PT( 7, 21, 3, 1, TRUE),
+ PT(50, 4, 6, 1, FALSE),
+ PT( 6, 24, 3, 1, TRUE),
+ PT(19, 36, 2, 1, FALSE),
+ PT(54, 34, 2, 3, FALSE),
+ PT(29, 41, 3, 2, FALSE),
+ PT(53, 23, 4, 0, TRUE),
+ PT(54, 23, 5, 1, TRUE),
+ PT(53, 50, 3, 0, TRUE),
+ PT(42, 15, 5, 3, FALSE),
+ PT(16, 0, 6, 2, FALSE),
+ PT( 2, 14, 5, 0, FALSE),
+ PT(49, 50, 6, 1, FALSE),
+ PT(59, 5, 4, 0, FALSE),
+ PT(54, 38, 2, 1, FALSE),
+ PT(52, 6, 6, 2, FALSE),
+ PT(30, 49, 6, 1, FALSE),
+ PT(53, 5, 6, 2, FALSE),
+ PT(30, 19, 2, 2, TRUE),
+ PT(21, 20, 5, 2, FALSE),
+ PT(41, 28, 3, 0, FALSE),
+ PT(36, 36, 2, 1, FALSE),
+ PT(34, 41, 3, 0, FALSE),
+ PT(52, 54, 6, 0, FALSE),
+ PT(30, 1, 4, 1, TRUE),
+ PT(12, 60, 4, 2, FALSE),
+ PT(10, 61, 2, 3, FALSE),
+ PT(39, 30, 4, 1, TRUE),
+ PT(21, 2, 2, 1, FALSE),
+ PT(17, 25, 5, 1, FALSE),
+ PT(29, 49, 2, 2, TRUE),
+ PT( 3, 59, 5, 1, FALSE),
+ PT(33, 25, 5, 2, FALSE),
+ PT(10, 35, 2, 0, TRUE),
+ PT(37, 17, 3, 1, FALSE),
+ PT(26, 10, 6, 2, FALSE),
+ PT(59, 11, 6, 1, TRUE),
+ PT(33, 11, 6, 3, TRUE),
+ PT( 1, 49, 5, 0, FALSE),
+ PT(53, 29, 4, 3, TRUE),
+ PT(44, 48, 6, 0, TRUE),
+ PT(46, 57, 5, 2, TRUE),
+ PT(48, 5, 5, 2, FALSE),
+ PT(18, 42, 5, 1, TRUE),
+ PT(57, 34, 4, 0, FALSE),
+ PT(21, 52, 3, 2, FALSE),
+ PT(28, 1, 2, 2, TRUE),
+ PT(32, 22, 4, 1, FALSE),
+ PT(19, 4, 3, 0, FALSE),
+ PT(30, 19, 2, 0, FALSE),
+ PT(37, 51, 2, 2, TRUE),
+ PT(57, 3, 6, 0, TRUE),
+ PT(63, 54, 3, 0, FALSE),
+ PT(20, 35, 2, 0, FALSE),
+ PT(47, 30, 3, 3, TRUE),
+ PT(31, 23, 5, 2, FALSE),
+ PT( 2, 22, 6, 0, TRUE),
+ PT(32, 24, 6, 0, FALSE),
+ PT(46, 24, 6, 3, TRUE),
+ PT(59, 14, 6, 0, FALSE),
+ PT(16, 57, 4, 2, FALSE),
+ PT(38, 57, 3, 3, FALSE),
+ PT(48, 38, 5, 3, FALSE),
+ PT(18, 1, 2, 2, FALSE),
+ PT(55, 42, 5, 3, FALSE),
+ PT(33, 6, 3, 2, TRUE),
+ PT(42, 22, 6, 1, FALSE),
+ PT( 9, 56, 3, 2, FALSE),
+ PT( 7, 34, 2, 3, TRUE),
+ PT(59, 45, 2, 2, TRUE),
+ PT( 7, 30, 5, 3, FALSE),
+ PT(27, 46, 3, 2, TRUE),
+ PT( 4, 9, 6, 0, FALSE),
+ PT(48, 45, 6, 3, TRUE),
+ PT(45, 52, 4, 2, FALSE),
+ PT(24, 36, 4, 2, TRUE),
+ PT(14, 45, 4, 3, FALSE),
+ PT(35, 10, 2, 3, FALSE),
+ PT(18, 45, 2, 0, TRUE),
+ PT(33, 40, 5, 3, FALSE),
+ PT(15, 1, 4, 0, TRUE),
+ PT( 1, 49, 2, 1, FALSE),
+ PT(63, 27, 3, 3, FALSE),
+ PT(33, 37, 5, 1, TRUE),
+ PT(38, 24, 2, 1, TRUE),
+ PT(21, 45, 6, 2, FALSE),
+ PT(35, 33, 6, 3, FALSE),
+ PT(14, 46, 3, 2, FALSE),
+ PT(20, 34, 3, 2, FALSE),
+ PT(44, 11, 5, 0, FALSE),
+ PT(26, 24, 4, 0, TRUE),
+ PT(33, 7, 3, 1, FALSE),
+ PT(36, 38, 5, 0, TRUE),
+ PT(43, 10, 6, 2, FALSE),
+ PT(62, 39, 6, 1, TRUE),
+ PT(18, 52, 3, 1, TRUE),
+ PT(31, 1, 5, 1, FALSE),
+ PT(46, 6, 4, 1, TRUE),
+ PT(47, 31, 2, 2, FALSE),
+ PT(24, 6, 4, 3, FALSE),
+ PT(49, 31, 5, 1, TRUE),
+ PT(34, 38, 5, 3, FALSE),
+ PT(30, 21, 2, 3, FALSE),
+ PT(32, 34, 5, 0, FALSE),
+ PT(21, 55, 2, 1, FALSE),
+ PT(37, 4, 5, 2, FALSE),
+ PT(31, 4, 5, 3, FALSE),
+ PT(12, 19, 3, 0, FALSE),
+ PT( 7, 11, 6, 3, FALSE),
+ PT(29, 28, 5, 1, FALSE),
+ PT(48, 34, 3, 2, FALSE),
+ PT(46, 18, 5, 3, TRUE),
+ PT(43, 33, 3, 3, FALSE),
+ PT(22, 56, 6, 0, FALSE),
+ PT( 4, 2, 2, 3, FALSE),
+ PT( 5, 20, 4, 0, FALSE),
+ PT(56, 60, 6, 1, TRUE),
+ PT(33, 27, 5, 3, TRUE),
+ PT(20, 42, 4, 3, TRUE),
+ PT(56, 20, 3, 1, TRUE),
+ PT(43, 31, 5, 1, TRUE),
+ PT(41, 43, 4, 2, TRUE),
+ PT(39, 54, 4, 0, TRUE),
+ PT(17, 34, 3, 1, TRUE),
+ PT(41, 3, 3, 1, TRUE),
+ PT(24, 36, 5, 0, FALSE),
+ PT(33, 45, 6, 3, FALSE),
+ PT(60, 44, 4, 2, FALSE),
+ PT(51, 23, 3, 3, TRUE),
+ PT(42, 58, 4, 0, TRUE),
+ PT(10, 35, 6, 3, TRUE),
+ PT( 0, 11, 4, 0, TRUE),
+ PT(17, 56, 3, 0, TRUE),
+ PT(15, 14, 3, 2, FALSE),
+ PT(31, 15, 6, 3, TRUE),
+ PT(60, 16, 6, 3, TRUE),
+ PT(56, 49, 6, 2, TRUE),
+ PT( 7, 21, 5, 0, FALSE),
+ PT(30, 46, 3, 0, TRUE),
+ PT(38, 16, 6, 1, TRUE),
+ PT(61, 53, 5, 3, TRUE),
+ PT(58, 4, 6, 2, FALSE),
+ PT(13, 24, 3, 1, FALSE),
+ PT( 1, 45, 2, 2, TRUE),
+ PT(61, 26, 2, 3, TRUE),
+ PT(23, 63, 6, 1, FALSE),
+ PT(11, 33, 2, 0, TRUE),
+ PT(30, 38, 5, 1, TRUE),
+ PT(13, 25, 4, 2, FALSE),
+ PT(46, 4, 3, 1, TRUE),
+ PT(27, 51, 4, 0, FALSE),
+ PT(21, 33, 3, 2, TRUE),
+ PT(31, 4, 4, 0, TRUE),
+ PT(15, 18, 3, 3, TRUE),
+ PT(45, 42, 6, 1, FALSE),
+ PT( 3, 55, 3, 3, TRUE),
+ PT(53, 7, 4, 3, TRUE),
+ PT(36, 31, 6, 0, TRUE),
+ PT(47, 48, 2, 2, TRUE),
+ PT( 6, 0, 4, 2, FALSE),
+ PT(11, 34, 3, 1, FALSE),
+ PT(12, 59, 5, 0, TRUE),
+ PT(20, 26, 2, 3, TRUE),
+ PT(55, 32, 4, 2, TRUE),
+ PT(63, 38, 6, 3, TRUE),
+ PT(58, 62, 2, 0, FALSE),
+ PT(34, 4, 2, 0, TRUE),
+ PT(40, 18, 3, 2, FALSE),
+ PT( 3, 46, 5, 3, FALSE),
+ PT(14, 56, 5, 0, FALSE),
+ PT( 1, 41, 4, 1, FALSE),
+ PT(30, 51, 3, 0, TRUE),
+ PT( 6, 33, 4, 3, TRUE),
+ PT(51, 25, 3, 1, FALSE),
+ PT( 2, 5, 2, 3, TRUE),
+ PT(17, 17, 5, 2, FALSE),
+ PT(31, 38, 3, 3, FALSE),
+ PT(57, 31, 5, 0, FALSE),
+ PT(46, 47, 2, 1, FALSE),
+ PT(34, 52, 2, 1, TRUE),
+ PT(59, 38, 5, 3, TRUE),
+ PT(52, 0, 2, 2, FALSE),
+ PT(16, 49, 2, 0, TRUE),
+ PT(29, 45, 5, 1, FALSE),
+ PT( 8, 8, 6, 3, TRUE),
+ PT(21, 24, 6, 2, FALSE),
+ PT( 4, 43, 4, 2, FALSE),
+ PT(47, 30, 4, 3, TRUE),
+ PT(34, 42, 4, 2, FALSE),
+ PT( 7, 20, 4, 2, TRUE),
+ PT( 1, 39, 3, 0, TRUE),
+ PT(41, 10, 5, 0, TRUE),
+ PT(61, 28, 5, 3, TRUE),
+ PT(13, 31, 3, 2, FALSE),
+ PT(36, 61, 6, 1, FALSE),
+ PT(54, 29, 4, 2, FALSE),
+ PT(20, 33, 2, 3, FALSE),
+ PT(26, 13, 5, 0, TRUE),
+ PT(63, 43, 5, 1, FALSE),
+ PT(26, 62, 6, 2, TRUE),
+ PT(17, 40, 3, 0, FALSE),
+ PT(50, 5, 2, 2, TRUE),
+ PT(33, 46, 6, 2, FALSE),
+ PT(45, 20, 5, 1, FALSE),
+ PT(60, 8, 6, 3, TRUE),
+ PT(63, 52, 3, 3, FALSE),
+ PT(39, 36, 3, 2, FALSE),
+ PT(22, 22, 6, 1, TRUE),
+ PT(41, 59, 3, 0, TRUE),
+ PT(54, 47, 3, 2, FALSE),
+ PT( 3, 37, 5, 2, FALSE),
+ PT(11, 22, 6, 3, FALSE),
+ PT(28, 29, 3, 1, TRUE),
+ PT(44, 39, 3, 1, TRUE),
+ PT(11, 31, 5, 1, TRUE),
+ PT( 8, 16, 4, 3, TRUE),
+ PT(63, 37, 5, 3, TRUE),
+ PT(51, 19, 3, 3, TRUE),
+ PT( 4, 49, 6, 3, TRUE),
+ PT(14, 47, 2, 1, FALSE),
+ PT( 8, 35, 4, 0, FALSE),
+ PT(58, 26, 3, 3, FALSE),
+ PT(47, 11, 3, 3, TRUE),
+ PT(30, 32, 3, 0, TRUE),
+ PT(35, 59, 2, 2, FALSE),
+ PT(37, 0, 4, 3, TRUE),
+ PT(20, 4, 4, 2, TRUE),
+ PT(54, 26, 5, 1, TRUE),
+ PT(39, 33, 2, 2, TRUE),
+ PT(40, 19, 5, 2, FALSE),
+ PT(14, 60, 6, 2, TRUE),
+ PT(12, 45, 5, 1, TRUE),
+ PT(55, 22, 2, 2, TRUE),
+ PT(41, 21, 3, 2, TRUE),
+ PT(23, 52, 6, 3, FALSE),
+ PT( 9, 10, 6, 0, TRUE),
+ PT(55, 34, 5, 0, FALSE),
+ PT(23, 43, 6, 2, TRUE),
+ PT(20, 43, 2, 1, FALSE),
+ PT( 8, 19, 3, 3, TRUE),
+ PT(49, 19, 5, 0, FALSE),
+ PT( 6, 7, 6, 2, TRUE),
+ PT(35, 58, 5, 0, TRUE),
+ PT(15, 36, 5, 3, FALSE),
+ PT( 7, 53, 4, 3, FALSE),
+ PT(14, 18, 2, 2, TRUE),
+ PT(35, 51, 5, 2, FALSE),
+ PT(14, 33, 4, 3, FALSE),
+ PT(28, 18, 4, 2, TRUE),
+ PT(35, 29, 5, 3, TRUE),
+ PT( 4, 53, 6, 1, TRUE),
+ PT(22, 1, 4, 2, FALSE),
+ PT(61, 44, 5, 3, FALSE),
+ PT(53, 10, 4, 2, TRUE),
+ PT(17, 19, 4, 2, TRUE),
+ PT(27, 27, 2, 2, TRUE),
+ PT(21, 57, 2, 0, FALSE),
+ PT(11, 53, 4, 2, FALSE),
+ PT(58, 39, 6, 0, FALSE),
+ PT(46, 47, 2, 2, TRUE),
+ PT(16, 31, 6, 2, TRUE),
+ PT(27, 40, 6, 2, TRUE),
+ PT(38, 48, 6, 3, TRUE),
+ PT(52, 55, 5, 1, TRUE),
+ PT(15, 48, 5, 0, TRUE),
+ PT(46, 63, 5, 1, TRUE),
+ PT(56, 52, 5, 1, TRUE),
+ PT(43, 47, 4, 2, TRUE),
+ PT(13, 40, 5, 1, FALSE),
+ PT(51, 24, 2, 0, FALSE),
+ PT(33, 18, 2, 0, TRUE),
+ PT(31, 34, 6, 2, FALSE),
+ PT(17, 37, 4, 1, TRUE),
+ PT(33, 63, 2, 0, TRUE),
+ PT(38, 39, 4, 2, TRUE),
+ PT(40, 54, 2, 1, FALSE),
+ PT(21, 38, 6, 1, FALSE),
+ PT(17, 24, 4, 2, FALSE),
+ PT(50, 37, 6, 3, TRUE),
+ PT(39, 58, 6, 1, TRUE),
+ PT(53, 7, 3, 2, FALSE),
+ PT(26, 14, 5, 1, FALSE),
+ PT(30, 47, 3, 3, TRUE),
+ PT( 0, 46, 4, 0, TRUE),
+ PT(27, 60, 2, 2, FALSE),
+ PT(47, 58, 5, 3, TRUE),
+ PT(62, 56, 2, 2, TRUE),
+ PT(26, 19, 5, 3, TRUE),
+ PT(41, 13, 5, 3, TRUE),
+ PT(55, 23, 3, 0, FALSE),
+ PT(48, 28, 6, 2, TRUE),
+ PT(21, 52, 2, 2, FALSE),
+ PT(40, 17, 5, 2, FALSE),
+ PT(44, 37, 5, 1, FALSE),
+ PT(32, 63, 5, 0, FALSE),
+ PT(12, 52, 3, 1, TRUE),
+ PT(48, 46, 4, 2, TRUE),
+ PT(55, 28, 4, 2, FALSE),
+ PT(31, 37, 4, 3, FALSE),
+ PT(12, 25, 6, 2, FALSE),
+ PT(24, 16, 6, 2, TRUE),
+ PT(10, 19, 2, 0, TRUE),
+ PT(37, 19, 4, 0, FALSE),
+ PT(19, 25, 2, 0, TRUE),
+ PT(32, 40, 3, 2, TRUE),
+ PT(62, 48, 3, 1, TRUE),
+ PT(35, 36, 4, 0, TRUE),
+ PT(13, 35, 4, 1, TRUE),
+ PT(29, 40, 5, 3, FALSE),
+ PT(45, 18, 3, 3, TRUE),
+ PT(14, 46, 5, 1, TRUE),
+ PT(11, 49, 6, 1, FALSE),
+ PT(36, 60, 5, 2, FALSE),
+ PT(19, 60, 2, 1, FALSE),
+ PT(40, 22, 5, 1, FALSE),
+ PT( 5, 12, 6, 1, FALSE),
+ PT(57, 11, 6, 1, FALSE),
+ PT(33, 4, 2, 2, FALSE),
+ PT(16, 49, 6, 1, FALSE),
+ PT(18, 31, 4, 1, TRUE),
+ PT(57, 46, 5, 3, FALSE),
+ PT(34, 61, 4, 3, TRUE),
+ PT(12, 30, 3, 0, FALSE),
+ PT(37, 0, 2, 3, TRUE),
+ PT( 6, 49, 2, 2, FALSE),
+ PT(19, 33, 3, 1, FALSE),
+ PT(20, 32, 6, 2, TRUE),
+ PT(10, 59, 4, 2, TRUE),
+ PT(51, 8, 5, 0, FALSE),
+ PT(61, 2, 6, 1, TRUE),
+ PT(35, 0, 2, 1, TRUE),
+ PT(34, 33, 5, 0, FALSE),
+ PT(48, 20, 5, 3, FALSE),
+ PT(20, 50, 6, 3, FALSE),
+ PT(57, 35, 3, 3, FALSE),
+ PT(28, 17, 6, 0, FALSE),
+ PT(55, 22, 6, 0, FALSE),
+ PT(21, 49, 3, 3, TRUE),
+ PT(52, 40, 5, 2, FALSE),
+ PT(53, 5, 5, 0, TRUE),
+ PT(55, 51, 5, 1, FALSE),
+ PT(28, 23, 5, 3, FALSE),
+ PT(16, 6, 2, 3, FALSE),
+ PT(50, 31, 5, 3, TRUE),
+ PT( 0, 41, 3, 3, FALSE),
+ PT( 4, 1, 2, 3, FALSE),
+ PT(59, 35, 3, 3, FALSE),
+ PT(27, 52, 5, 1, FALSE),
+ PT(48, 17, 5, 1, TRUE),
+ PT( 3, 0, 3, 3, TRUE),
+ PT(29, 55, 3, 1, FALSE),
+ PT(58, 24, 4, 2, TRUE),
+ PT(28, 22, 5, 2, FALSE),
+ PT( 4, 63, 6, 1, TRUE),
+ PT(38, 35, 5, 2, TRUE),
+ PT(21, 44, 4, 3, TRUE),
+ PT( 2, 53, 4, 3, TRUE),
+ PT( 7, 53, 6, 1, TRUE),
+ PT(26, 12, 2, 0, FALSE),
+ PT(40, 38, 5, 2, FALSE),
+ PT(47, 54, 2, 3, FALSE),
+ PT(55, 11, 4, 3, TRUE),
+ PT(27, 61, 3, 0, FALSE),
+ PT(39, 31, 4, 0, FALSE),
+ PT(43, 42, 6, 1, TRUE),
+ PT(11, 15, 4, 0, FALSE),
+ PT(53, 60, 5, 3, TRUE),
+ PT(51, 33, 2, 2, TRUE),
+ PT(45, 38, 6, 2, FALSE),
+ PT(31, 26, 4, 0, TRUE),
+ PT(47, 44, 5, 1, FALSE),
+ PT(26, 50, 3, 1, FALSE),
+ PT(59, 63, 4, 0, TRUE),
+ PT(19, 63, 2, 1, TRUE),
+ PT(15, 36, 4, 1, FALSE),
+ PT(20, 27, 2, 0, FALSE),
+ PT(33, 6, 5, 0, FALSE),
+ PT(37, 52, 2, 0, FALSE),
+ PT(46, 14, 2, 2, FALSE),
+ PT(60, 62, 4, 2, TRUE),
+ PT(22, 6, 6, 0, FALSE),
+ PT(11, 4, 3, 3, TRUE),
+ PT(62, 2, 4, 2, FALSE),
+ PT(12, 23, 4, 2, TRUE),
+ PT(43, 60, 5, 2, TRUE),
+ PT(21, 54, 6, 1, TRUE),
+ PT(24, 35, 5, 1, FALSE),
+ PT(29, 16, 5, 1, FALSE),
+ PT(53, 23, 5, 0, FALSE),
+ PT( 0, 55, 4, 2, FALSE),
+ PT(10, 59, 2, 2, TRUE),
+ PT(29, 11, 3, 3, TRUE),
+ PT(60, 49, 4, 2, TRUE),
+ PT(29, 15, 3, 2, TRUE),
+ PT(32, 19, 6, 2, FALSE),
+ PT(17, 43, 5, 3, FALSE),
+ PT(35, 12, 5, 3, FALSE),
+ PT(36, 2, 2, 2, FALSE),
+ PT(49, 22, 3, 0, TRUE),
+ PT(14, 35, 6, 2, TRUE),
+ PT(26, 16, 2, 3, FALSE),
+ PT(20, 4, 3, 0, TRUE),
+ PT(45, 39, 6, 3, TRUE),
+ PT(51, 2, 6, 0, TRUE),
+ PT( 2, 4, 2, 3, FALSE),
+ PT(13, 34, 4, 2, TRUE),
+ PT(37, 0, 2, 3, FALSE),
+ PT(42, 63, 4, 3, FALSE),
+ PT(32, 12, 2, 1, FALSE),
+ PT(47, 46, 6, 2, TRUE),
+ PT(27, 13, 4, 1, FALSE),
+ PT(30, 1, 6, 2, FALSE),
+ PT( 5, 34, 4, 0, TRUE),
+ PT(52, 42, 6, 1, FALSE),
+ PT(11, 9, 3, 2, TRUE),
+ PT(63, 50, 5, 3, TRUE),
+ PT(61, 24, 5, 2, TRUE),
+ PT(11, 56, 6, 3, FALSE),
+ PT(57, 23, 5, 0, FALSE),
+ PT(52, 4, 4, 2, FALSE),
+ PT(54, 14, 5, 1, FALSE),
+ PT(56, 1, 2, 2, FALSE),
+ PT(60, 36, 4, 1, FALSE),
+ PT(33, 3, 3, 0, FALSE),
+ PT(50, 47, 2, 1, FALSE),
+ PT(41, 36, 6, 0, TRUE),
+ PT(10, 59, 2, 1, FALSE),
+ PT(26, 28, 4, 0, FALSE),
+ PT(48, 49, 3, 1, TRUE),
+ PT(26, 33, 2, 0, FALSE),
+ PT( 5, 41, 2, 0, FALSE),
+ PT(38, 45, 2, 1, TRUE),
+ PT(22, 12, 3, 2, TRUE),
+ PT(43, 6, 3, 1, TRUE),
+ PT( 6, 18, 2, 2, FALSE),
+ PT(56, 15, 6, 2, TRUE),
+ PT(35, 58, 5, 2, FALSE),
+ PT( 0, 25, 6, 1, TRUE),
+ PT(41, 20, 5, 2, TRUE),
+ PT(42, 33, 5, 0, TRUE),
+ PT(20, 49, 2, 2, FALSE),
+ PT(26, 6, 3, 3, FALSE),
+ PT(24, 27, 5, 0, FALSE),
+ PT(59, 22, 5, 0, TRUE),
+ PT(21, 30, 2, 1, FALSE),
+ PT(52, 10, 2, 2, FALSE),
+ PT(27, 5, 4, 3, TRUE),
+ PT(11, 1, 4, 3, FALSE),
+ PT(42, 34, 6, 2, TRUE),
+ PT(33, 32, 3, 0, FALSE),
+ PT(32, 55, 2, 3, TRUE),
+ PT(20, 31, 2, 0, TRUE),
+ PT(29, 17, 4, 2, TRUE),
+ PT(36, 43, 5, 3, TRUE),
+ PT( 7, 63, 3, 3, TRUE),
+ PT(44, 37, 4, 2, TRUE),
+ PT(42, 41, 3, 0, FALSE),
+ PT(17, 36, 5, 0, FALSE),
+ PT(49, 44, 5, 1, FALSE),
+ PT(57, 11, 4, 3, FALSE),
+ PT(40, 16, 4, 3, FALSE),
+ PT(34, 6, 2, 3, FALSE),
+ PT( 9, 44, 2, 1, TRUE),
+ PT(52, 25, 2, 2, TRUE),
+ PT(58, 18, 4, 0, TRUE),
+ PT(29, 56, 4, 1, TRUE),
+ PT(18, 37, 4, 2, FALSE),
+ PT(33, 48, 2, 1, FALSE),
+ PT(55, 26, 2, 1, FALSE),
+ PT(36, 59, 4, 2, TRUE),
+ PT(50, 21, 4, 1, TRUE),
+ PT(13, 26, 2, 0, FALSE),
+ PT(22, 46, 4, 3, FALSE),
+ PT(29, 20, 2, 3, FALSE),
+ PT(62, 46, 3, 3, TRUE),
+ PT(10, 22, 2, 0, FALSE),
+ PT(29, 48, 5, 1, TRUE),
+ PT( 4, 58, 3, 0, TRUE),
+ PT( 8, 45, 5, 3, FALSE),
+ PT(40, 30, 6, 1, TRUE),
+ PT(10, 18, 5, 3, FALSE),
+ PT(13, 3, 5, 3, TRUE),
+ PT(38, 58, 3, 3, FALSE),
+ PT(53, 59, 5, 1, FALSE),
+ PT( 3, 26, 3, 0, FALSE),
+ PT(63, 11, 4, 3, TRUE),
+ PT( 4, 5, 6, 2, FALSE),
+ PT(54, 11, 4, 3, TRUE),
+ PT(59, 23, 2, 0, TRUE),
+ PT(13, 39, 4, 3, FALSE),
+ PT(44, 31, 4, 0, FALSE),
+ PT(38, 16, 4, 0, FALSE),
+ PT(37, 35, 5, 2, TRUE),
+ PT(55, 9, 2, 1, TRUE),
+ PT(20, 23, 5, 2, TRUE),
+ PT(46, 61, 4, 1, TRUE),
+ PT(29, 26, 3, 3, TRUE),
+ PT(33, 51, 5, 3, FALSE),
+ PT(40, 23, 2, 1, TRUE),
+ PT(38, 60, 6, 3, FALSE),
+ PT(20, 26, 6, 1, TRUE),
+ PT(50, 32, 5, 1, TRUE),
+ PT(25, 62, 4, 0, FALSE),
+ PT(12, 2, 5, 2, TRUE),
+ PT(60, 60, 5, 1, FALSE),
+ PT(48, 48, 5, 0, FALSE),
+ PT(37, 63, 3, 3, FALSE),
+ PT( 3, 23, 3, 3, FALSE),
+ PT(53, 17, 3, 2, FALSE),
+ PT(27, 20, 5, 1, FALSE),
+ PT(40, 58, 4, 1, TRUE),
+ PT(14, 31, 2, 1, FALSE),
+ PT(54, 33, 4, 0, FALSE),
+ PT( 7, 59, 2, 0, FALSE),
+ PT(35, 25, 6, 2, FALSE),
+ PT(13, 46, 3, 0, FALSE),
+ PT(63, 32, 4, 2, TRUE),
+ PT(62, 59, 2, 2, TRUE),
+ PT(11, 46, 2, 1, FALSE),
+ PT(55, 11, 4, 1, TRUE),
+ PT(61, 50, 3, 3, TRUE),
+ PT(22, 3, 4, 3, TRUE),
+ PT(20, 12, 4, 0, TRUE),
+ PT(24, 3, 6, 0, FALSE),
+ PT(62, 33, 2, 1, TRUE),
+ PT(15, 0, 6, 1, FALSE),
+ PT(63, 35, 2, 3, FALSE),
+ PT(14, 49, 3, 2, TRUE),
+ PT(24, 28, 3, 2, TRUE),
+ PT(48, 14, 3, 3, FALSE),
+ PT(33, 32, 4, 1, TRUE),
+ PT(63, 12, 3, 3, FALSE),
+ PT(20, 51, 4, 1, FALSE),
+ PT(34, 33, 2, 2, TRUE),
+ PT(54, 5, 3, 3, FALSE),
+ PT(29, 49, 2, 2, FALSE),
+ PT(32, 17, 6, 3, TRUE),
+ PT(13, 51, 3, 0, TRUE),
+ PT(37, 5, 6, 3, FALSE),
+ PT(30, 49, 4, 0, FALSE),
+ PT(53, 58, 5, 3, TRUE),
+ PT(50, 47, 6, 0, FALSE),
+ PT(20, 35, 5, 2, TRUE),
+ PT(53, 30, 5, 0, TRUE),
+ PT( 5, 5, 3, 1, TRUE),
+ PT( 9, 31, 4, 3, FALSE),
+ PT(47, 11, 2, 2, TRUE),
+ PT(21, 17, 2, 1, TRUE),
+ PT(41, 27, 3, 0, FALSE),
+ PT(28, 19, 6, 2, TRUE),
+ PT(52, 49, 4, 1, TRUE),
+ PT(39, 63, 5, 3, TRUE),
+ PT( 9, 48, 3, 0, TRUE),
+ PT(35, 18, 6, 2, FALSE),
+ PT( 2, 42, 4, 0, TRUE),
+ PT( 9, 60, 3, 2, TRUE),
+ PT(12, 2, 2, 0, FALSE),
+ PT(34, 5, 2, 3, TRUE),
+ PT(34, 8, 3, 1, TRUE),
+ PT(10, 15, 2, 2, TRUE),
+ PT( 2, 17, 2, 1, TRUE),
+ PT( 1, 33, 4, 1, FALSE),
+ PT(22, 57, 6, 1, TRUE),
+ PT(36, 56, 6, 2, FALSE),
+ PT(15, 30, 5, 1, TRUE),
+ PT(43, 21, 2, 2, TRUE),
+ PT(32, 34, 5, 3, FALSE),
+ PT(58, 63, 6, 0, TRUE),
+ PT(26, 39, 5, 1, TRUE),
+ PT(41, 52, 2, 2, FALSE),
+ PT(22, 57, 5, 3, TRUE),
+ PT(19, 62, 2, 3, FALSE),
+ PT(54, 33, 6, 0, FALSE),
+ PT( 0, 36, 5, 1, TRUE),
+ PT(36, 33, 6, 0, FALSE),
+ PT(21, 49, 2, 1, TRUE),
+ PT(16, 55, 4, 2, FALSE),
+ PT( 8, 7, 4, 1, TRUE),
+ PT(33, 9, 4, 2, TRUE),
+ PT( 5, 60, 6, 1, FALSE),
+ PT(25, 3, 4, 2, TRUE),
+ PT(15, 41, 5, 1, TRUE),
+ PT(22, 7, 2, 1, TRUE),
+ PT(62, 61, 4, 2, TRUE),
+ PT(54, 11, 5, 0, FALSE),
+ PT(46, 43, 2, 3, FALSE),
+ PT(12, 49, 2, 0, TRUE),
+ PT(48, 19, 5, 2, TRUE),
+ PT(38, 62, 6, 3, TRUE),
+ PT(41, 47, 5, 3, FALSE),
+ PT(21, 61, 2, 3, TRUE),
+ PT(28, 46, 4, 0, TRUE),
+ PT(51, 47, 2, 0, FALSE),
+ PT(13, 5, 3, 2, TRUE),
+ PT(28, 26, 2, 1, FALSE),
+ PT(14, 24, 6, 3, TRUE),
+ PT(27, 17, 2, 2, FALSE),
+ PT( 6, 20, 4, 0, TRUE),
+ PT(49, 14, 4, 3, TRUE),
+ PT(26, 3, 2, 0, FALSE),
+ PT( 0, 52, 6, 0, TRUE),
+ PT(63, 11, 3, 2, TRUE),
+ PT(15, 18, 3, 3, TRUE),
+ PT(26, 21, 2, 0, FALSE),
+ PT(15, 0, 4, 2, FALSE),
+ PT(62, 10, 5, 1, FALSE),
+ PT(48, 43, 4, 2, FALSE),
+ PT(38, 49, 2, 0, FALSE),
+ PT(45, 47, 5, 3, TRUE),
+ PT(63, 12, 2, 1, TRUE),
+ PT(18, 11, 2, 3, FALSE),
+ PT(21, 7, 3, 3, TRUE),
+ PT(40, 16, 6, 1, FALSE),
+ PT(15, 23, 2, 2, TRUE),
+ PT(11, 39, 6, 1, TRUE),
+ PT(52, 29, 2, 0, FALSE),
+ PT(28, 58, 2, 1, FALSE),
+ PT(44, 39, 6, 3, TRUE),
+ PT(10, 26, 6, 1, FALSE),
+ PT( 5, 31, 4, 0, TRUE),
+ PT(36, 13, 3, 3, TRUE),
+ PT(28, 23, 4, 2, FALSE),
+ PT(47, 59, 6, 1, FALSE),
+ PT(59, 37, 2, 0, FALSE),
+ PT( 3, 47, 4, 0, TRUE),
+ PT(12, 16, 4, 1, TRUE),
+ PT(14, 58, 5, 2, FALSE),
+ PT(51, 3, 5, 2, FALSE),
+ PT(18, 6, 3, 2, FALSE),
+ PT(42, 55, 6, 0, FALSE),
+ PT(63, 1, 3, 3, FALSE),
+ PT(53, 22, 6, 3, TRUE),
+ PT(44, 50, 6, 2, TRUE),
+ PT( 5, 17, 4, 1, FALSE),
+ PT(41, 9, 4, 0, FALSE),
+ PT(43, 13, 3, 3, TRUE),
+ PT(24, 13, 4, 0, FALSE),
+ PT(35, 57, 2, 3, FALSE),
+ PT(15, 58, 3, 0, FALSE),
+ PT(33, 53, 5, 1, TRUE),
+ PT(54, 38, 5, 1, TRUE),
+ PT(35, 5, 5, 3, TRUE),
+ PT(27, 8, 2, 3, TRUE),
+ PT(62, 9, 2, 3, FALSE),
+ PT(45, 58, 6, 3, TRUE),
+ PT(21, 53, 6, 2, TRUE),
+ PT(41, 10, 2, 1, FALSE),
+ PT( 2, 57, 3, 3, TRUE),
+ PT(20, 52, 6, 1, TRUE),
+ PT(23, 29, 3, 0, FALSE),
+ PT(22, 29, 3, 1, FALSE),
+ PT( 1, 57, 4, 1, FALSE),
+ PT(30, 39, 6, 3, FALSE),
+ PT(50, 20, 4, 3, FALSE),
+ PT(10, 57, 6, 3, FALSE),
+ PT(31, 13, 3, 3, FALSE),
+ PT(11, 10, 3, 0, TRUE),
+ PT(53, 29, 6, 2, FALSE),
+ PT( 3, 18, 2, 3, FALSE),
+ PT(12, 19, 5, 3, FALSE),
+ PT(12, 52, 3, 3, FALSE),
+ PT(16, 20, 3, 3, FALSE),
+ PT(35, 50, 4, 3, TRUE),
+ PT( 2, 16, 5, 0, TRUE),
+ PT(53, 24, 6, 1, TRUE),
+ PT(51, 29, 3, 1, FALSE),
+ PT(60, 21, 4, 1, TRUE),
+ PT(62, 63, 4, 1, FALSE),
+ PT(42, 2, 5, 2, FALSE),
+ PT(40, 10, 5, 3, TRUE),
+ PT(26, 6, 6, 2, TRUE),
+ PT(60, 23, 5, 1, TRUE),
+ PT( 3, 18, 2, 3, TRUE),
+ PT(47, 10, 4, 3, FALSE),
+ PT(18, 56, 2, 0, TRUE),
+ PT(54, 27, 4, 1, TRUE),
+ PT( 1, 57, 6, 2, TRUE),
+ PT(25, 25, 2, 3, TRUE),
+ PT( 9, 40, 4, 1, FALSE),
+ PT(30, 39, 5, 2, FALSE),
+ PT(53, 51, 5, 2, FALSE),
+ PT(39, 37, 6, 0, TRUE),
+ PT( 6, 49, 5, 2, TRUE),
+ PT(26, 57, 5, 0, FALSE),
+ PT(45, 4, 3, 3, FALSE),
+ PT(36, 62, 3, 2, FALSE),
+ PT(60, 48, 3, 1, TRUE),
+ PT(63, 62, 6, 3, TRUE),
+ PT(34, 54, 2, 0, TRUE),
+ PT( 0, 1, 3, 2, FALSE),
+ PT(18, 26, 2, 0, FALSE),
+ PT(18, 30, 5, 2, FALSE),
+ PT(31, 18, 5, 1, FALSE),
+ PT(47, 6, 3, 0, TRUE),
+ PT(53, 26, 3, 0, FALSE),
+ PT(59, 9, 6, 3, FALSE),
+ PT(52, 29, 2, 1, TRUE),
+ PT( 2, 7, 2, 0, FALSE),
+ PT(32, 47, 3, 2, TRUE),
+ PT(11, 3, 6, 1, TRUE),
+ PT(28, 22, 6, 0, TRUE),
+ PT( 5, 19, 3, 1, TRUE),
+ PT(41, 6, 2, 1, TRUE),
+ PT(48, 45, 6, 3, FALSE),
+ PT(42, 45, 5, 2, FALSE),
+ PT(25, 52, 3, 2, FALSE),
+ PT(15, 21, 2, 1, FALSE),
+ PT(54, 21, 5, 2, FALSE),
+ PT(58, 6, 3, 2, FALSE),
+ PT(18, 29, 4, 3, FALSE),
+ PT( 3, 56, 3, 2, TRUE),
+ PT( 1, 1, 5, 2, TRUE),
+ PT(23, 46, 2, 0, FALSE),
+ PT(20, 23, 3, 2, FALSE),
+ PT(52, 15, 5, 0, FALSE),
+ PT( 9, 55, 3, 1, TRUE),
+ PT(40, 29, 4, 3, FALSE),
+ PT(41, 45, 6, 3, FALSE),
+ PT(30, 23, 5, 0, FALSE),
+ PT(21, 15, 3, 2, FALSE),
+ PT(32, 45, 2, 0, FALSE),
+ PT(39, 22, 5, 3, FALSE),
+ PT(20, 9, 2, 1, FALSE),
+ PT(59, 61, 4, 0, TRUE),
+ PT(37, 26, 5, 2, FALSE),
+ PT( 0, 34, 6, 3, FALSE),
+ PT(13, 48, 2, 0, FALSE),
+ PT(23, 25, 3, 1, TRUE),
+ PT( 0, 59, 4, 0, TRUE),
+ PT(42, 40, 6, 2, FALSE),
+ PT(45, 15, 2, 3, FALSE),
+ PT(10, 48, 5, 0, FALSE),
+ PT( 6, 0, 4, 2, TRUE),
+ PT(49, 46, 5, 1, FALSE),
+ PT(20, 51, 5, 0, FALSE),
+ PT(54, 16, 5, 3, FALSE),
+ PT( 5, 46, 3, 0, TRUE),
+ PT(25, 26, 2, 2, TRUE),
+ PT(44, 20, 2, 3, TRUE),
+ PT(55, 15, 2, 1, TRUE),
+ PT(50, 23, 3, 1, TRUE),
+ PT(57, 24, 6, 1, FALSE),
+ PT(46, 50, 3, 3, FALSE),
+ PT(36, 29, 6, 0, TRUE),
+ PT(18, 29, 5, 1, TRUE),
+ PT(20, 12, 4, 3, TRUE),
+ PT(54, 46, 6, 1, FALSE),
+ PT( 6, 10, 3, 1, FALSE),
+ PT(40, 40, 4, 0, FALSE),
+ PT(58, 58, 2, 3, TRUE),
+ PT( 8, 39, 6, 3, FALSE),
+ PT(24, 26, 2, 0, FALSE),
+ PT(30, 38, 3, 1, TRUE),
+ PT(31, 51, 3, 3, TRUE),
+ PT(33, 23, 5, 3, TRUE),
+ PT( 1, 8, 4, 0, FALSE),
+ PT(53, 3, 3, 0, TRUE),
+ PT(59, 2, 4, 0, FALSE),
+ PT( 2, 45, 4, 1, TRUE),
+ PT(14, 23, 6, 1, FALSE),
+ PT(49, 41, 2, 0, TRUE),
+ PT(34, 23, 4, 1, FALSE),
+ PT(58, 44, 4, 1, TRUE),
+ PT(52, 32, 3, 0, FALSE),
+ PT( 0, 58, 4, 1, FALSE),
+ PT(37, 51, 4, 0, TRUE),
+ PT(51, 4, 4, 3, TRUE),
+ PT( 4, 24, 6, 1, FALSE),
+ PT(44, 12, 5, 3, TRUE),
+ PT(40, 20, 5, 2, FALSE),
+ PT(63, 48, 5, 1, TRUE),
+ PT(48, 33, 3, 2, TRUE),
+ PT( 1, 37, 6, 1, FALSE),
+ PT( 5, 35, 6, 2, FALSE),
+ PT(36, 16, 6, 0, FALSE),
+ PT(61, 20, 3, 1, TRUE),
+ PT(63, 56, 5, 3, TRUE),
+ PT(34, 27, 6, 1, FALSE),
+ PT(37, 7, 6, 3, TRUE),
+ PT(10, 12, 3, 2, TRUE),
+ PT( 3, 30, 3, 1, FALSE),
+ PT(15, 60, 2, 1, FALSE),
+ PT(17, 24, 3, 2, TRUE),
+ PT( 0, 53, 5, 3, TRUE),
+ PT(50, 24, 2, 2, FALSE),
+ PT(35, 48, 3, 1, TRUE),
+ PT(17, 61, 2, 1, FALSE),
+ PT(26, 22, 6, 2, TRUE),
+ PT(40, 5, 4, 2, FALSE),
+ PT(23, 61, 6, 3, TRUE),
+ PT(46, 9, 5, 3, FALSE),
+ PT(24, 29, 2, 3, TRUE),
+ PT(32, 31, 3, 0, FALSE),
+ PT(35, 44, 5, 3, TRUE),
+ PT(32, 63, 2, 3, FALSE),
+ PT(63, 41, 5, 3, FALSE),
+ PT(35, 59, 5, 0, TRUE),
+ PT(24, 57, 2, 1, TRUE),
+ PT(30, 50, 6, 2, TRUE),
+ PT(20, 29, 5, 1, FALSE),
+ PT(53, 1, 3, 2, TRUE),
+ PT(62, 59, 3, 3, FALSE),
+ PT(34, 30, 2, 3, FALSE),
+ PT(24, 34, 2, 1, FALSE),
+ PT(62, 41, 6, 1, TRUE),
+ PT(47, 20, 3, 0, TRUE),
+ PT(59, 7, 2, 2, TRUE),
+ PT( 6, 61, 5, 0, TRUE),
+ PT(53, 55, 4, 1, TRUE),
+ PT(52, 29, 5, 2, TRUE),
+ PT(24, 18, 3, 1, TRUE),
+ PT(11, 19, 4, 2, FALSE),
+ PT(19, 56, 3, 2, FALSE),
+ PT(31, 11, 3, 1, TRUE),
+ PT(19, 33, 3, 2, FALSE),
+ PT( 6, 57, 6, 1, FALSE),
+ PT(55, 61, 4, 3, FALSE),
+ PT(41, 38, 2, 2, TRUE),
+ PT(60, 51, 4, 3, TRUE),
+ PT( 0, 1, 5, 3, FALSE),
+ PT(21, 24, 6, 0, TRUE),
+ PT(13, 44, 2, 1, TRUE),
+ PT(39, 59, 4, 0, FALSE),
+ PT(45, 1, 4, 3, FALSE),
+ PT(35, 21, 6, 0, FALSE),
+ PT(36, 0, 2, 3, TRUE),
+ PT(55, 63, 6, 1, TRUE),
+ PT(37, 36, 6, 0, TRUE),
+ PT( 6, 59, 6, 3, TRUE),
+ PT( 3, 24, 3, 1, FALSE),
+ PT(44, 52, 2, 2, FALSE),
+ PT(29, 54, 3, 0, FALSE),
+ PT(58, 4, 4, 1, TRUE),
+ PT(18, 38, 2, 2, TRUE),
+ PT(43, 25, 3, 1, FALSE),
+ PT(41, 44, 6, 3, FALSE),
+ PT( 1, 25, 3, 2, TRUE),
+ PT(47, 6, 5, 1, TRUE),
+ PT(12, 18, 4, 3, FALSE),
+ PT(54, 50, 3, 2, TRUE),
+ PT(13, 18, 5, 0, FALSE),
+ PT( 3, 40, 2, 1, TRUE),
+ PT(41, 6, 2, 3, TRUE),
+ PT( 3, 56, 4, 0, TRUE),
+ PT(48, 44, 2, 0, FALSE),
+ PT(34, 0, 5, 0, FALSE),
+ PT(36, 59, 3, 2, FALSE),
+ PT(32, 62, 2, 1, TRUE),
+ PT( 2, 12, 3, 0, TRUE),
+ PT(41, 44, 3, 1, FALSE),
+ PT(57, 48, 4, 1, FALSE),
+ PT(42, 31, 4, 1, FALSE),
+ PT(20, 52, 5, 2, FALSE),
+ PT(20, 37, 3, 1, TRUE),
+ PT( 6, 59, 2, 2, TRUE),
+ PT( 6, 28, 2, 1, TRUE),
+ PT(21, 3, 3, 0, FALSE),
+ PT(30, 42, 3, 1, TRUE),
+ PT(23, 37, 5, 3, TRUE),
+ PT(28, 41, 5, 3, FALSE),
+ PT( 2, 50, 3, 3, FALSE),
+ PT(29, 40, 6, 2, TRUE),
+ PT(54, 3, 6, 2, FALSE),
+ PT(22, 61, 5, 1, FALSE),
+ PT(18, 13, 2, 1, TRUE),
+ PT(29, 45, 4, 0, TRUE),
+ PT(50, 23, 5, 3, FALSE),
+ PT(26, 21, 4, 3, FALSE),
+ PT(34, 47, 2, 2, TRUE),
+ PT(60, 14, 4, 0, FALSE),
+ PT(47, 39, 2, 1, TRUE),
+ PT( 4, 9, 6, 1, FALSE),
+ PT(30, 1, 6, 2, FALSE),
+ PT( 6, 22, 3, 3, FALSE),
+ PT(46, 27, 3, 2, FALSE),
+ PT(40, 19, 5, 1, FALSE),
+ PT(48, 52, 2, 1, FALSE),
+ PT(18, 50, 3, 0, FALSE),
+ PT(29, 29, 6, 2, TRUE),
+ PT( 7, 28, 2, 3, FALSE),
+ PT(45, 61, 6, 2, TRUE),
+ PT(28, 27, 4, 2, FALSE),
+ PT(33, 45, 3, 3, FALSE),
+ PT(16, 9, 2, 2, FALSE),
+ PT(61, 17, 2, 1, FALSE),
+ PT(37, 2, 4, 3, FALSE),
+ PT(35, 2, 3, 0, TRUE),
+ PT(25, 5, 2, 2, FALSE),
+ PT(11, 33, 3, 1, FALSE),
+ PT( 9, 2, 5, 2, FALSE),
+ PT(24, 40, 5, 2, TRUE),
+ PT(30, 16, 2, 1, FALSE),
+ PT(46, 24, 5, 3, FALSE),
+ PT(31, 2, 5, 2, FALSE),
+ PT(20, 23, 4, 2, FALSE),
+ PT(57, 8, 6, 1, FALSE),
+ PT(22, 20, 4, 1, FALSE),
+ PT(22, 40, 4, 0, TRUE),
+ PT(17, 16, 5, 2, FALSE),
+ PT(35, 54, 5, 1, TRUE),
+ PT(57, 33, 4, 3, FALSE),
+ PT(14, 6, 5, 2, TRUE),
+ PT(60, 62, 4, 3, FALSE),
+ PT(42, 27, 3, 3, TRUE),
+ PT( 0, 60, 6, 1, TRUE),
+ PT(53, 63, 2, 2, FALSE),
+ PT( 0, 11, 2, 0, FALSE),
+ PT(52, 60, 2, 3, TRUE),
+ PT(45, 7, 3, 3, TRUE),
+ PT(36, 57, 4, 3, TRUE),
+ PT(22, 0, 3, 2, TRUE),
+ PT(51, 43, 3, 3, FALSE),
+ PT(15, 8, 6, 0, TRUE),
+ PT(58, 9, 2, 1, TRUE),
+ PT(12, 33, 3, 2, FALSE),
+ PT(42, 23, 6, 2, FALSE),
+ PT(41, 39, 2, 0, FALSE),
+ PT(55, 27, 3, 0, FALSE),
+ PT(21, 8, 5, 3, TRUE),
+ PT(31, 22, 2, 1, FALSE),
+ PT(31, 40, 6, 2, FALSE),
+ PT(28, 32, 4, 1, FALSE),
+ PT(18, 1, 2, 1, FALSE),
+ PT(33, 49, 2, 0, FALSE),
+ PT(34, 38, 3, 3, FALSE),
+ PT( 1, 61, 2, 0, TRUE),
+ PT(30, 39, 4, 2, TRUE),
+ PT(61, 48, 4, 2, FALSE),
+ PT(29, 17, 4, 1, FALSE),
+ PT(54, 48, 2, 3, FALSE),
+ PT(31, 62, 5, 1, FALSE),
+ PT(60, 39, 3, 1, TRUE),
+ PT(31, 41, 2, 0, FALSE),
+ PT(30, 5, 5, 1, FALSE),
+ PT(10, 16, 2, 2, FALSE),
+ PT(31, 0, 5, 3, FALSE),
+ PT(11, 59, 3, 0, FALSE),
+ PT(10, 57, 6, 0, FALSE),
+ PT(55, 11, 3, 3, TRUE),
+ PT(29, 10, 5, 0, TRUE),
+ PT(62, 28, 6, 1, TRUE),
+ PT(19, 46, 5, 0, FALSE),
+ PT(39, 27, 3, 3, FALSE),
+ PT(29, 2, 3, 2, FALSE),
+ PT( 1, 37, 2, 2, FALSE),
+ PT(58, 16, 3, 2, FALSE),
+ PT(18, 5, 5, 1, FALSE),
+ PT(48, 32, 4, 3, FALSE),
+ PT(47, 46, 5, 3, FALSE),
+ PT( 3, 7, 4, 2, FALSE),
+ PT(54, 4, 5, 1, TRUE),
+ PT(17, 37, 5, 2, TRUE),
+ PT(40, 14, 5, 3, FALSE),
+ PT(15, 29, 2, 2, TRUE),
+ PT(28, 40, 6, 0, FALSE),
+ PT(31, 35, 4, 3, FALSE),
+ PT(54, 18, 6, 3, TRUE),
+ PT(58, 49, 2, 0, FALSE),
+ PT(44, 44, 5, 3, TRUE),
+ PT(26, 13, 2, 2, TRUE),
+ PT(63, 60, 6, 1, FALSE),
+ PT(53, 28, 2, 3, FALSE),
+ PT(51, 22, 5, 0, FALSE),
+ PT(29, 63, 4, 0, TRUE),
+ PT(44, 62, 5, 1, TRUE),
+ PT(36, 35, 5, 3, TRUE),
+ PT(50, 21, 5, 1, FALSE),
+ PT(27, 16, 6, 2, TRUE),
+ PT(24, 55, 2, 0, FALSE),
+ PT(59, 30, 2, 0, TRUE),
+ PT(43, 22, 4, 2, FALSE),
+ PT(29, 22, 4, 3, FALSE),
+ PT(60, 45, 2, 0, TRUE),
+ PT(21, 40, 5, 0, FALSE),
+ PT(39, 39, 4, 3, TRUE),
+ PT(59, 58, 2, 3, FALSE),
+ PT(26, 12, 3, 1, FALSE),
+ PT(21, 8, 4, 2, TRUE),
+ PT(11, 16, 4, 1, FALSE),
+ PT(26, 62, 2, 3, TRUE),
+ PT(40, 31, 3, 3, FALSE),
+ PT( 1, 30, 3, 3, FALSE),
+ PT(28, 47, 2, 0, FALSE),
+ PT(37, 11, 6, 2, FALSE),
+ PT(62, 12, 3, 1, FALSE),
+ PT(27, 16, 5, 1, FALSE),
+ PT(15, 20, 2, 3, TRUE),
+ PT(15, 63, 2, 3, TRUE),
+ PT( 3, 21, 3, 3, TRUE),
+ PT( 2, 54, 2, 3, TRUE),
+ PT(21, 29, 3, 0, FALSE),
+ PT( 8, 54, 2, 0, FALSE),
+ PT(20, 13, 5, 1, TRUE),
+ PT(10, 5, 3, 2, TRUE),
+ PT(38, 18, 3, 3, FALSE),
+ PT(62, 24, 3, 0, TRUE),
+ PT(54, 24, 6, 3, TRUE),
+ PT(23, 57, 5, 3, FALSE),
+ PT(13, 4, 3, 0, TRUE),
+ PT(22, 34, 2, 2, TRUE),
+ PT(62, 38, 3, 3, TRUE),
+ PT( 0, 6, 2, 3, TRUE),
+ PT(51, 34, 3, 2, TRUE),
+ PT(43, 57, 5, 1, TRUE),
+ PT(62, 49, 3, 2, FALSE),
+ PT(34, 63, 2, 1, TRUE),
+ PT(48, 28, 6, 0, TRUE),
+ PT( 7, 43, 2, 2, FALSE),
+ PT(50, 53, 3, 3, FALSE),
+ PT( 2, 7, 4, 0, FALSE),
+ PT(15, 59, 2, 0, TRUE),
+ PT(32, 7, 2, 1, FALSE),
+ PT(42, 48, 3, 2, TRUE),
+ PT(40, 56, 6, 3, FALSE),
+ PT(32, 1, 2, 3, TRUE),
+ PT(21, 32, 4, 0, TRUE),
+ PT(58, 27, 3, 3, FALSE),
+ PT(56, 18, 4, 2, FALSE),
+ PT( 3, 62, 3, 3, TRUE),
+ PT(41, 29, 2, 1, TRUE),
+ PT(32, 39, 3, 0, TRUE),
+ PT(18, 37, 4, 0, FALSE),
+ PT(50, 51, 5, 1, TRUE),
+ PT(63, 5, 6, 0, TRUE),
+ PT(53, 60, 5, 2, TRUE),
+ PT(45, 2, 5, 3, FALSE),
+ PT(16, 42, 2, 3, FALSE),
+ PT(23, 8, 6, 0, TRUE),
+ PT(23, 46, 5, 1, TRUE),
+ PT(48, 30, 2, 2, TRUE),
+ PT(49, 21, 4, 3, FALSE),
+ PT( 8, 16, 6, 1, TRUE),
+ PT(21, 1, 4, 3, TRUE),
+ PT(18, 7, 5, 3, TRUE),
+ PT(41, 39, 6, 2, FALSE),
+ PT(63, 8, 6, 0, TRUE),
+ PT(28, 32, 3, 1, FALSE),
+ PT(51, 12, 2, 1, TRUE),
+ PT(24, 49, 4, 2, FALSE),
+ PT(55, 45, 5, 3, FALSE),
+ PT(33, 24, 4, 2, FALSE),
+ PT(58, 39, 6, 0, TRUE),
+ PT(53, 62, 6, 0, FALSE),
+ PT(58, 20, 6, 1, TRUE),
+ PT(15, 26, 5, 2, TRUE),
+ PT(48, 46, 2, 0, TRUE),
+ PT(26, 49, 3, 2, TRUE),
+ PT(23, 60, 3, 0, FALSE),
+ PT(51, 49, 4, 1, TRUE),
+ PT(29, 57, 5, 2, TRUE),
+ PT(16, 29, 5, 3, TRUE),
+ PT(36, 21, 3, 2, FALSE),
+ PT(37, 1, 5, 1, TRUE),
+ PT(34, 22, 5, 3, FALSE),
+ PT(27, 37, 6, 2, TRUE),
+ PT(55, 16, 4, 3, FALSE),
+ PT(57, 1, 6, 3, FALSE),
+ PT(23, 43, 2, 2, FALSE),
+ PT( 9, 22, 2, 3, TRUE),
+ PT(32, 40, 4, 1, TRUE),
+ PT(38, 58, 4, 3, FALSE),
+ PT(39, 42, 4, 2, FALSE),
+ PT(54, 2, 5, 2, FALSE),
+ PT(41, 48, 6, 2, TRUE),
+ PT(54, 1, 3, 3, TRUE),
+ PT(40, 59, 3, 2, TRUE),
+ PT(35, 30, 5, 2, TRUE),
+ PT(17, 30, 5, 2, FALSE),
+ PT(47, 50, 3, 0, TRUE),
+ PT(63, 38, 6, 0, TRUE),
+ PT(56, 30, 2, 3, TRUE),
+ PT( 5, 24, 5, 3, FALSE),
+ PT( 0, 46, 2, 1, FALSE),
+ PT(52, 63, 6, 2, FALSE),
+ PT(22, 16, 5, 0, TRUE),
+ PT(32, 61, 6, 3, FALSE),
+ PT(47, 22, 4, 2, TRUE),
+ PT(18, 23, 2, 0, FALSE),
+ PT(33, 55, 6, 2, TRUE),
+ PT(37, 55, 5, 2, TRUE),
+ PT( 1, 8, 4, 3, TRUE),
+ PT( 3, 31, 5, 0, TRUE),
+ PT(13, 42, 2, 3, FALSE),
+ PT(58, 63, 6, 1, TRUE),
+ PT(43, 25, 3, 2, TRUE),
+ PT(42, 31, 5, 0, TRUE),
+ PT(40, 44, 2, 0, FALSE),
+ PT(40, 48, 2, 0, FALSE),
+ PT(57, 20, 3, 1, TRUE),
+ PT( 0, 24, 4, 0, TRUE),
+ PT(40, 12, 6, 3, TRUE),
+ PT(17, 16, 2, 0, TRUE),
+ PT(60, 51, 6, 1, FALSE),
+ PT(51, 54, 3, 1, FALSE),
+ PT(54, 0, 3, 2, FALSE),
+ PT(49, 27, 3, 2, TRUE),
+ PT(56, 29, 2, 0, FALSE),
+ PT(60, 57, 4, 3, TRUE),
+ PT(58, 63, 2, 2, FALSE),
+ PT(25, 18, 2, 2, FALSE),
+ PT(13, 31, 3, 0, FALSE),
+ PT( 0, 37, 3, 0, FALSE),
+ PT(40, 28, 6, 1, FALSE),
+ PT(39, 3, 3, 1, FALSE),
+ PT(38, 45, 5, 1, FALSE),
+ PT(41, 40, 4, 3, TRUE),
+ PT(10, 42, 3, 0, FALSE),
+ PT(10, 26, 6, 0, FALSE),
+ PT(32, 26, 5, 3, FALSE),
+ PT( 6, 11, 3, 2, TRUE),
+ PT(15, 12, 3, 2, FALSE),
+ PT(53, 40, 3, 2, FALSE),
+ PT(61, 22, 4, 1, TRUE),
+ PT(33, 28, 6, 0, TRUE),
+ PT(20, 28, 5, 3, FALSE),
+ PT(34, 50, 6, 2, TRUE),
+ PT( 9, 41, 6, 0, FALSE),
+ PT(32, 26, 2, 0, FALSE),
+ PT(49, 63, 5, 2, FALSE),
+ PT(10, 61, 6, 3, TRUE),
+ PT(11, 46, 5, 2, TRUE),
+ PT(31, 34, 6, 0, TRUE),
+ PT( 6, 7, 5, 0, TRUE),
+ PT(34, 23, 5, 2, TRUE),
+ PT(48, 17, 3, 0, FALSE),
+ PT(12, 25, 2, 2, TRUE),
+ PT( 7, 10, 6, 2, FALSE),
+ PT(24, 41, 4, 3, TRUE),
+ PT(51, 12, 6, 0, FALSE),
+ PT( 3, 26, 6, 3, TRUE),
+ PT( 6, 1, 5, 2, TRUE),
+ PT(15, 59, 5, 1, TRUE),
+ PT(17, 31, 6, 3, TRUE),
+ PT(43, 33, 6, 3, FALSE),
+ PT(63, 35, 2, 3, TRUE),
+ PT(23, 7, 5, 1, TRUE),
+ PT(43, 14, 6, 0, FALSE),
+ PT(17, 57, 3, 2, TRUE),
+ PT(41, 3, 6, 1, TRUE),
+ PT(48, 3, 5, 3, TRUE),
+ PT(60, 32, 4, 3, FALSE),
+ PT( 3, 34, 2, 2, FALSE),
+ PT(58, 40, 6, 2, TRUE),
+ PT( 1, 40, 5, 1, TRUE),
+ PT(62, 21, 3, 0, FALSE),
+ PT(48, 7, 2, 3, TRUE),
+ PT(59, 44, 6, 0, FALSE),
+ PT(21, 7, 5, 2, FALSE),
+ PT(23, 39, 3, 2, TRUE),
+ PT(63, 30, 6, 1, TRUE),
+ PT(13, 23, 2, 0, FALSE),
+ PT(21, 14, 6, 0, FALSE),
+ PT( 9, 5, 6, 0, FALSE),
+ PT(45, 32, 2, 2, TRUE),
+ PT(60, 61, 6, 0, FALSE),
+ PT(12, 23, 3, 2, FALSE),
+ PT(26, 13, 4, 2, TRUE),
+ PT(43, 43, 5, 1, FALSE),
+ PT( 2, 22, 5, 2, TRUE),
+ PT(23, 49, 2, 3, TRUE),
+ PT( 0, 8, 2, 1, TRUE),
+ PT(55, 53, 4, 0, TRUE),
+ PT(30, 28, 3, 3, TRUE),
+ PT(43, 50, 3, 2, FALSE),
+ PT(16, 42, 2, 3, FALSE),
+ PT(58, 51, 6, 0, TRUE),
+ PT(23, 43, 5, 1, FALSE),
+ PT(12, 61, 2, 0, TRUE),
+ PT(40, 10, 6, 0, FALSE),
+ PT(35, 10, 4, 3, FALSE),
+ PT(10, 20, 4, 2, FALSE),
+ PT(11, 15, 6, 0, FALSE),
+ PT(27, 30, 5, 0, TRUE),
+ PT( 2, 53, 5, 0, FALSE),
+ PT(59, 2, 2, 2, FALSE),
+ PT( 0, 15, 6, 2, TRUE),
+ PT(28, 60, 5, 3, FALSE),
+ PT(40, 56, 3, 0, TRUE),
+ PT(27, 17, 2, 1, FALSE),
+ PT( 9, 22, 2, 0, FALSE),
+ PT(46, 13, 4, 0, FALSE),
+ PT(61, 4, 6, 1, FALSE),
+ PT(22, 44, 4, 2, TRUE),
+ PT( 2, 61, 3, 0, FALSE),
+ PT(11, 19, 3, 2, FALSE),
+ PT(34, 42, 3, 2, FALSE),
+ PT(32, 39, 4, 1, FALSE),
+ PT( 5, 38, 4, 1, FALSE),
+ PT(18, 29, 5, 2, FALSE),
+ PT( 8, 5, 5, 3, FALSE),
+ PT(63, 28, 2, 3, TRUE),
+ PT(36, 13, 6, 1, TRUE),
+ PT(54, 8, 4, 2, FALSE),
+ PT(16, 34, 5, 0, TRUE),
+ PT(28, 10, 2, 0, TRUE),
+ PT(37, 15, 2, 0, FALSE),
+ PT(36, 56, 5, 3, TRUE),
+ PT(37, 50, 3, 3, FALSE),
+ PT( 6, 42, 5, 0, TRUE),
+ PT(62, 58, 5, 0, FALSE),
+ PT(52, 23, 6, 1, TRUE),
+ PT(24, 51, 2, 3, TRUE),
+ PT( 7, 20, 3, 3, TRUE),
+ PT(17, 23, 4, 0, FALSE),
+ PT(19, 14, 2, 2, FALSE),
+ PT(59, 28, 2, 1, FALSE),
+ PT(42, 19, 6, 3, TRUE),
+ PT(42, 53, 6, 1, FALSE),
+ PT(48, 2, 4, 2, TRUE),
+ PT( 0, 7, 3, 3, TRUE),
+ PT(12, 4, 5, 2, FALSE),
+ PT(55, 55, 6, 0, FALSE),
+ PT(37, 18, 4, 2, TRUE),
+ PT(18, 34, 4, 0, TRUE),
+ PT(34, 53, 6, 1, TRUE),
+ PT( 7, 32, 5, 2, TRUE),
+ PT(39, 14, 6, 0, FALSE),
+ PT(52, 25, 3, 1, FALSE),
+ PT(10, 60, 4, 2, TRUE),
+ PT( 7, 29, 5, 1, TRUE),
+ PT(49, 58, 2, 1, FALSE),
+ PT(26, 61, 6, 3, TRUE),
+ PT(22, 21, 2, 3, FALSE),
+ PT(57, 19, 2, 2, TRUE),
+ PT(45, 3, 5, 3, FALSE),
+ PT( 6, 57, 5, 2, FALSE),
+ PT(22, 0, 2, 1, TRUE),
+ PT(53, 42, 6, 2, TRUE),
+ PT(36, 1, 3, 0, FALSE),
+ PT(36, 55, 5, 0, FALSE),
+ PT(37, 27, 6, 2, FALSE),
+ PT(37, 25, 2, 3, TRUE),
+ PT(39, 47, 3, 1, TRUE),
+ PT(39, 13, 2, 0, FALSE),
+ PT(54, 60, 6, 0, FALSE),
+ PT(60, 51, 4, 1, TRUE),
+ PT(62, 39, 3, 3, FALSE),
+ PT(37, 45, 5, 0, TRUE),
+ PT(31, 18, 4, 0, TRUE),
+ PT(55, 50, 3, 3, TRUE),
+ PT(17, 33, 6, 2, TRUE),
+ PT(48, 12, 3, 0, TRUE),
+ PT(37, 61, 4, 3, FALSE),
+ PT(23, 2, 3, 2, TRUE),
+ PT(20, 46, 2, 0, TRUE),
+ PT(56, 19, 6, 0, FALSE),
+ PT(10, 43, 4, 0, FALSE),
+ PT(30, 16, 2, 2, TRUE),
+ PT(55, 48, 5, 3, FALSE),
+ PT(30, 4, 5, 2, FALSE),
+ PT(20, 52, 3, 0, TRUE),
+ PT( 8, 20, 3, 0, FALSE),
+ PT(14, 28, 6, 0, FALSE),
+ PT(26, 46, 3, 1, TRUE),
+ PT(31, 57, 6, 0, TRUE),
+ PT(12, 28, 5, 0, FALSE),
+ PT(62, 51, 4, 1, TRUE),
+ PT(15, 19, 2, 3, FALSE),
+ PT(37, 57, 5, 3, TRUE),
+ PT(20, 27, 3, 1, FALSE),
+ PT(40, 62, 4, 0, TRUE),
+ PT(45, 25, 2, 0, TRUE),
+ PT(12, 52, 6, 1, FALSE),
+ PT(57, 49, 3, 0, TRUE),
+ PT(26, 8, 6, 2, FALSE),
+ PT( 9, 47, 2, 0, TRUE),
+ PT(48, 4, 3, 2, FALSE),
+ PT( 2, 59, 3, 1, TRUE),
+ PT(51, 33, 6, 1, TRUE),
+ PT(56, 2, 3, 1, FALSE),
+ PT(49, 56, 6, 1, FALSE),
+ PT(31, 29, 2, 3, FALSE),
+ PT(23, 16, 3, 1, TRUE),
+ PT(50, 32, 2, 3, TRUE),
+ PT( 0, 51, 2, 1, FALSE),
+ PT(33, 15, 4, 3, TRUE),
+ PT(20, 25, 4, 3, TRUE),
+ PT(36, 44, 6, 3, TRUE),
+ PT(37, 5, 5, 3, TRUE),
+ PT(61, 37, 2, 0, TRUE),
+ PT(18, 48, 3, 1, FALSE),
+ PT(22, 3, 3, 1, FALSE),
+ PT(20, 9, 2, 1, TRUE),
+ PT( 2, 35, 4, 1, FALSE),
+ PT( 1, 60, 2, 0, FALSE),
+ PT(63, 45, 4, 1, TRUE),
+ PT(49, 63, 4, 1, TRUE),
+ PT(23, 0, 6, 1, TRUE),
+ PT(63, 15, 5, 3, TRUE),
+ PT(38, 7, 2, 2, TRUE),
+ PT(33, 43, 5, 1, FALSE),
+ PT(56, 57, 3, 3, FALSE),
+ PT( 9, 37, 5, 1, TRUE),
+ PT(59, 48, 4, 2, TRUE),
+ PT(18, 45, 2, 1, TRUE),
+ PT(50, 25, 5, 0, FALSE),
+ PT(36, 28, 5, 2, TRUE),
+ PT(53, 50, 4, 3, FALSE),
+ PT(13, 35, 3, 3, FALSE),
+ PT(29, 7, 4, 0, TRUE),
+ PT(11, 52, 2, 3, TRUE),
+ PT(45, 50, 6, 1, FALSE),
+ PT(58, 60, 6, 2, TRUE),
+ PT(26, 16, 6, 1, TRUE),
+ PT(26, 7, 4, 1, FALSE),
+ PT(59, 27, 5, 1, FALSE),
+ PT(51, 31, 4, 3, FALSE),
+ PT(14, 53, 3, 1, FALSE),
+ PT(59, 10, 3, 2, FALSE),
+ PT(17, 7, 2, 0, TRUE),
+ PT(13, 60, 5, 2, TRUE),
+ PT(30, 55, 5, 0, TRUE),
+ PT(17, 5, 2, 1, FALSE),
+ PT(21, 47, 3, 2, FALSE),
+ PT(36, 49, 2, 3, FALSE),
+ PT(43, 33, 3, 1, TRUE),
+ PT(35, 16, 6, 0, TRUE),
+ PT( 2, 20, 5, 0, TRUE),
+ PT(38, 32, 2, 3, FALSE),
+ PT(16, 23, 2, 0, FALSE),
+ PT(11, 15, 6, 1, TRUE),
+ PT( 1, 46, 2, 2, FALSE),
+ PT(33, 14, 6, 3, TRUE),
+ PT(26, 29, 5, 3, TRUE),
+ PT(30, 48, 4, 2, FALSE),
+ PT( 4, 20, 5, 2, TRUE),
+ PT(17, 0, 6, 0, FALSE),
+ PT( 8, 42, 3, 2, TRUE),
+ PT(29, 34, 4, 0, TRUE),
+ PT(36, 44, 6, 3, TRUE),
+ PT(36, 17, 2, 1, FALSE),
+ PT( 4, 46, 5, 0, FALSE),
+ PT(29, 24, 4, 1, TRUE),
+ PT(60, 22, 2, 3, FALSE),
+ PT(16, 23, 6, 0, TRUE),
+ PT(32, 33, 2, 1, FALSE),
+ PT(51, 62, 6, 2, FALSE),
+ PT( 6, 19, 2, 1, TRUE),
+ PT(23, 56, 5, 1, TRUE),
+ PT(20, 13, 2, 2, TRUE),
+ PT(36, 59, 5, 1, TRUE),
+ PT(52, 59, 3, 3, FALSE),
+ PT(24, 7, 6, 2, FALSE),
+ PT(55, 29, 3, 3, TRUE),
+ PT(11, 41, 4, 0, FALSE),
+ PT(18, 30, 3, 2, TRUE),
+ PT(26, 36, 4, 2, FALSE),
+ PT(61, 40, 4, 2, FALSE),
+ PT(11, 18, 6, 1, TRUE),
+ PT(27, 58, 4, 1, FALSE),
+ PT(20, 19, 5, 1, FALSE),
+ PT(49, 56, 2, 2, TRUE),
+ PT(55, 43, 5, 3, FALSE),
+ PT(25, 30, 5, 2, FALSE),
+ PT(63, 27, 5, 1, FALSE),
+ PT(51, 31, 6, 1, TRUE),
+ PT(63, 21, 5, 0, TRUE),
+ PT( 1, 30, 3, 0, FALSE),
+ PT(31, 34, 3, 0, TRUE),
+ PT(51, 60, 6, 2, FALSE),
+ PT(30, 18, 4, 1, FALSE),
+ PT(13, 55, 5, 2, FALSE),
+ PT(15, 8, 6, 0, TRUE),
+ PT(46, 9, 6, 3, FALSE),
+ PT( 1, 5, 3, 3, FALSE),
+ PT(28, 4, 3, 3, FALSE),
+ PT(12, 1, 3, 2, FALSE),
+ PT(41, 40, 5, 3, TRUE),
+ PT(57, 45, 2, 2, FALSE),
+ PT( 9, 34, 6, 3, FALSE),
+ PT( 4, 55, 6, 3, TRUE),
+ PT(45, 47, 6, 2, TRUE),
+ PT(36, 35, 3, 1, TRUE),
+ PT( 8, 32, 6, 1, FALSE),
+ PT(32, 31, 6, 2, FALSE),
+ PT( 2, 49, 3, 0, TRUE),
+ PT(24, 19, 6, 3, FALSE),
+ PT( 6, 43, 3, 3, FALSE),
+ PT(14, 27, 2, 0, FALSE),
+ PT(47, 14, 3, 2, FALSE),
+ PT(17, 56, 2, 1, TRUE),
+ PT( 1, 55, 3, 0, TRUE),
+ PT(20, 17, 4, 3, FALSE),
+ PT(49, 61, 6, 1, TRUE),
+ PT(29, 27, 6, 2, FALSE),
+ PT(37, 49, 5, 3, TRUE),
+ PT(17, 10, 5, 3, TRUE),
+ PT(57, 23, 3, 1, TRUE),
+ PT( 5, 14, 2, 1, TRUE),
+ PT(41, 37, 4, 1, FALSE),
+ PT(21, 13, 4, 0, FALSE),
+ PT(43, 39, 4, 0, TRUE),
+ PT(62, 36, 4, 3, TRUE),
+ PT(42, 43, 2, 3, FALSE),
+ PT(36, 61, 2, 2, TRUE),
+ PT(21, 48, 6, 0, TRUE),
+ PT(15, 51, 4, 2, FALSE),
+ PT( 6, 22, 2, 1, TRUE),
+ PT( 6, 49, 2, 0, FALSE),
+ PT(46, 63, 2, 0, FALSE),
+ PT( 5, 13, 5, 3, TRUE),
+ PT(60, 31, 3, 0, TRUE),
+ PT(18, 19, 4, 2, FALSE),
+ PT(15, 51, 6, 3, FALSE),
+ PT(21, 59, 6, 1, TRUE),
+ PT( 3, 15, 5, 1, FALSE),
+ PT(59, 60, 5, 2, FALSE),
+ PT(54, 9, 5, 0, TRUE),
+ PT(17, 59, 4, 3, TRUE),
+ PT(40, 43, 6, 0, TRUE),
+ PT(26, 14, 5, 3, TRUE),
+ PT(57, 44, 6, 0, TRUE),
+ PT(14, 60, 6, 2, TRUE),
+ PT(44, 36, 6, 1, TRUE),
+ PT(61, 17, 5, 1, TRUE),
+ PT( 7, 60, 6, 3, TRUE),
+ PT(20, 24, 2, 1, TRUE),
+ PT(29, 63, 5, 3, FALSE),
+ PT(48, 18, 4, 2, TRUE),
+ PT(38, 29, 2, 0, TRUE),
+ PT( 7, 17, 3, 3, FALSE),
+ PT(52, 1, 2, 0, TRUE),
+ PT(11, 57, 4, 0, TRUE),
+ PT(41, 2, 5, 0, TRUE),
+ PT(21, 16, 3, 1, FALSE),
+ PT(48, 31, 6, 2, TRUE),
+ PT(60, 43, 5, 1, FALSE),
+ PT(48, 59, 6, 3, FALSE),
+ PT(32, 26, 4, 1, TRUE),
+ PT(50, 36, 5, 1, TRUE),
+ PT(21, 32, 3, 2, FALSE),
+ PT(37, 61, 6, 3, FALSE),
+ PT(45, 20, 6, 0, TRUE),
+ PT(24, 35, 2, 3, TRUE),
+ PT(24, 5, 2, 1, TRUE),
+ PT(52, 48, 6, 3, TRUE),
+ PT(14, 57, 4, 1, TRUE),
+ PT(29, 31, 2, 3, TRUE),
+ PT( 1, 21, 5, 3, TRUE),
+ PT(11, 62, 3, 1, TRUE),
+ PT(13, 25, 5, 3, FALSE),
+ PT(49, 56, 3, 2, FALSE),
+ PT(21, 52, 2, 2, TRUE),
+ PT(19, 25, 5, 0, TRUE),
+ PT(25, 20, 4, 3, TRUE),
+ PT(21, 24, 4, 1, TRUE),
+ PT(41, 12, 4, 3, TRUE),
+ PT(45, 14, 2, 3, TRUE),
+ PT(52, 24, 2, 0, FALSE),
+ PT(59, 30, 5, 0, TRUE),
+ PT(52, 44, 4, 1, FALSE),
+ PT(49, 8, 2, 1, TRUE),
+ PT(29, 24, 3, 1, FALSE),
+ PT(28, 11, 5, 1, FALSE),
+ PT(25, 30, 3, 1, FALSE),
+ PT(35, 39, 2, 3, TRUE),
+ PT(59, 14, 6, 3, TRUE),
+ PT(25, 43, 2, 3, FALSE),
+ PT(47, 8, 4, 0, TRUE),
+ PT(55, 2, 4, 0, FALSE),
+ PT(11, 50, 6, 0, FALSE),
+ PT(22, 5, 6, 0, FALSE),
+ PT(19, 5, 3, 1, FALSE),
+ PT( 7, 57, 3, 0, TRUE),
+ PT(12, 59, 5, 1, FALSE),
+ PT(21, 5, 6, 0, FALSE),
+ PT(48, 5, 3, 0, TRUE),
+ PT(19, 0, 2, 1, FALSE),
+ PT(39, 22, 5, 1, FALSE),
+ PT(15, 40, 4, 3, TRUE),
+ PT(12, 35, 5, 3, TRUE),
+ PT(57, 40, 5, 1, FALSE),
+ PT(36, 37, 3, 3, TRUE),
+ PT(24, 41, 2, 2, FALSE),
+ PT(22, 5, 3, 1, FALSE),
+ PT(53, 47, 4, 3, FALSE),
+ PT(10, 58, 5, 0, TRUE),
+ PT(52, 44, 6, 3, FALSE),
+ PT(46, 58, 2, 2, TRUE),
+ PT(26, 10, 5, 2, TRUE),
+ PT(22, 20, 5, 3, FALSE),
+ PT(53, 40, 5, 1, FALSE),
+ PT(53, 15, 2, 0, TRUE),
+ PT(17, 50, 3, 0, TRUE),
+ PT(32, 26, 5, 0, FALSE),
+ PT(23, 26, 5, 0, FALSE),
+ PT(22, 51, 4, 2, TRUE),
+ PT(19, 44, 5, 0, TRUE),
+ PT( 9, 22, 6, 1, TRUE),
+ PT(29, 39, 4, 3, FALSE),
+ PT(21, 12, 5, 3, TRUE),
+ PT(34, 28, 3, 0, TRUE),
+ PT(41, 51, 2, 0, FALSE),
+ PT(45, 17, 3, 1, TRUE),
+ PT(22, 25, 5, 3, FALSE),
+ PT(13, 12, 5, 0, FALSE),
+ PT(55, 58, 6, 2, FALSE),
+ PT(42, 29, 6, 3, TRUE),
+ PT(48, 10, 6, 3, FALSE),
+ PT(36, 57, 3, 1, TRUE),
+ PT(57, 10, 6, 1, FALSE),
+ PT(17, 3, 5, 2, TRUE),
+ PT(50, 29, 6, 0, FALSE),
+ PT(56, 30, 4, 3, TRUE),
+ PT(46, 23, 3, 0, FALSE),
+ PT(22, 23, 5, 1, FALSE),
+ PT(54, 59, 6, 0, TRUE),
+ PT(23, 4, 3, 0, TRUE),
+ PT(58, 37, 5, 2, TRUE),
+ PT( 0, 54, 4, 3, TRUE),
+ PT(37, 18, 6, 1, TRUE),
+ PT( 6, 10, 2, 2, FALSE),
+ PT(17, 5, 5, 3, TRUE),
+ PT( 3, 53, 5, 3, TRUE),
+ PT(11, 52, 5, 0, TRUE),
+ PT( 0, 49, 2, 1, TRUE),
+ PT(39, 15, 3, 2, FALSE),
+ PT(29, 6, 5, 2, TRUE),
+ PT(28, 48, 4, 3, TRUE),
+ PT(47, 42, 4, 3, TRUE),
+ PT(22, 32, 6, 0, TRUE),
+ PT(51, 43, 5, 1, TRUE),
+ PT( 5, 48, 6, 3, FALSE),
+ PT(41, 35, 6, 2, TRUE),
+ PT(16, 22, 5, 3, TRUE),
+ PT(45, 32, 5, 0, TRUE),
+ PT(55, 19, 4, 2, FALSE),
+ PT(45, 14, 4, 2, TRUE),
+ PT( 8, 10, 3, 0, FALSE),
+ PT(15, 3, 3, 1, TRUE),
+ PT(49, 12, 6, 3, TRUE),
+ PT(30, 52, 6, 0, TRUE),
+ PT(27, 14, 4, 2, TRUE),
+ PT(26, 7, 6, 2, FALSE),
+ PT(13, 60, 6, 1, TRUE),
+ PT( 0, 58, 6, 3, FALSE),
+ PT( 4, 39, 2, 1, FALSE),
+ PT(35, 24, 4, 2, FALSE),
+ PT(13, 11, 3, 0, FALSE),
+ PT(49, 50, 6, 3, TRUE),
+ PT( 0, 13, 4, 0, TRUE),
+ PT(50, 16, 2, 1, FALSE),
+ PT(38, 13, 3, 0, TRUE),
+ PT(41, 36, 5, 1, TRUE),
+ PT(61, 33, 3, 3, TRUE),
+ PT(30, 27, 5, 0, FALSE),
+ PT(13, 18, 5, 0, FALSE),
+ PT(53, 30, 4, 1, TRUE),
+ PT(10, 46, 4, 1, FALSE),
+ PT(39, 39, 6, 2, TRUE),
+ PT( 1, 14, 4, 0, FALSE),
+ PT(49, 57, 5, 0, TRUE),
+ PT(59, 36, 6, 3, FALSE),
+ PT(20, 16, 6, 1, TRUE),
+ PT(24, 44, 4, 3, FALSE),
+ PT( 4, 45, 2, 2, TRUE),
+ PT(26, 17, 6, 3, TRUE),
+ PT(15, 11, 2, 2, FALSE),
+ PT(14, 44, 5, 2, FALSE),
+ PT(33, 23, 5, 2, FALSE),
+ PT(22, 33, 6, 2, TRUE),
+ PT(62, 16, 2, 0, FALSE),
+ PT(10, 5, 3, 3, FALSE),
+ PT(59, 9, 2, 1, TRUE),
+ PT(38, 24, 3, 3, FALSE),
+ PT(35, 12, 3, 1, FALSE),
+ PT(51, 55, 3, 3, TRUE),
+ PT( 9, 18, 6, 2, TRUE),
+ PT(61, 13, 2, 2, TRUE),
+ PT(54, 6, 4, 2, FALSE),
+ PT(51, 48, 5, 0, TRUE),
+ PT(59, 15, 5, 0, FALSE),
+ PT(52, 42, 5, 2, FALSE),
+ PT( 2, 18, 6, 2, TRUE),
+ PT( 9, 34, 6, 0, TRUE),
+ PT(59, 49, 3, 2, FALSE),
+ PT(51, 34, 4, 3, TRUE),
+ PT(61, 52, 2, 2, TRUE),
+ PT(20, 34, 5, 0, FALSE),
+ PT(40, 16, 3, 3, FALSE),
+ PT(33, 49, 2, 0, FALSE),
+ PT(45, 22, 4, 0, TRUE),
+ PT(30, 5, 6, 1, TRUE),
+ PT(15, 48, 6, 0, TRUE),
+ PT(14, 26, 6, 2, TRUE),
+ PT(56, 46, 5, 0, FALSE),
+ PT(38, 55, 3, 3, FALSE),
+ PT(43, 19, 6, 1, TRUE),
+ PT(31, 30, 6, 3, TRUE),
+ PT(10, 40, 4, 2, FALSE),
+ PT(50, 28, 3, 1, FALSE),
+ PT(31, 63, 3, 0, TRUE),
+ PT(57, 57, 5, 0, TRUE),
+ PT(44, 27, 2, 2, FALSE),
+ PT(21, 42, 2, 3, TRUE),
+ PT(50, 15, 4, 0, TRUE),
+ PT(48, 33, 3, 0, FALSE),
+ PT(35, 42, 4, 3, TRUE),
+ PT(61, 7, 2, 0, FALSE),
+ PT(11, 63, 5, 3, TRUE),
+ PT(49, 2, 5, 3, FALSE),
+ PT( 8, 57, 5, 3, TRUE),
+ PT(63, 32, 3, 0, FALSE),
+ PT(45, 52, 2, 0, TRUE),
+ PT(46, 52, 2, 0, FALSE),
+ PT(38, 18, 4, 1, TRUE),
+ PT(37, 10, 6, 3, TRUE),
+ PT(52, 9, 4, 2, TRUE),
+ PT(10, 62, 2, 3, FALSE),
+ PT(26, 23, 2, 0, TRUE),
+ PT(56, 28, 4, 0, FALSE),
+ PT(17, 33, 4, 3, FALSE),
+ PT( 5, 15, 3, 0, FALSE),
+ PT(38, 43, 6, 1, FALSE),
+ PT(10, 12, 2, 3, FALSE),
+ PT( 3, 41, 3, 2, TRUE),
+ PT(41, 59, 4, 1, TRUE),
+ PT(22, 27, 5, 0, TRUE),
+ PT( 7, 9, 2, 3, TRUE),
+ PT(23, 44, 3, 2, FALSE),
+ PT(53, 51, 6, 0, FALSE),
+ PT(23, 18, 3, 3, FALSE),
+ PT(61, 26, 5, 1, TRUE),
+ PT(33, 29, 2, 0, FALSE),
+ PT(10, 8, 2, 3, TRUE),
+ PT(20, 60, 6, 3, FALSE),
+ PT(40, 54, 6, 3, FALSE),
+ PT(59, 32, 3, 1, TRUE),
+ PT(19, 34, 3, 2, TRUE),
+ PT(19, 58, 2, 2, TRUE),
+ PT( 2, 35, 5, 2, FALSE),
+ PT(62, 25, 2, 2, FALSE),
+ PT(57, 60, 3, 1, FALSE),
+ PT(16, 8, 3, 3, FALSE),
+ PT(10, 19, 5, 0, TRUE),
+ PT(63, 56, 5, 2, FALSE),
+ PT( 7, 35, 3, 3, TRUE),
+ PT(25, 42, 4, 2, FALSE),
+ PT(20, 60, 3, 3, TRUE),
+ PT(13, 4, 6, 3, TRUE),
+ PT(26, 47, 5, 0, FALSE),
+ PT(42, 29, 3, 3, FALSE),
+ PT(17, 55, 5, 0, TRUE),
+ PT(40, 39, 2, 1, FALSE),
+ PT(13, 0, 4, 3, FALSE),
+ PT(10, 60, 4, 3, FALSE),
+ PT(31, 28, 6, 1, TRUE),
+ PT( 4, 58, 5, 2, FALSE),
+ PT(36, 61, 5, 1, TRUE),
+ PT(38, 49, 5, 3, TRUE),
+ PT(19, 28, 4, 0, TRUE),
+ PT(62, 18, 4, 1, TRUE),
+ PT(54, 10, 3, 1, FALSE),
+ PT(45, 30, 3, 0, TRUE),
+ PT( 5, 31, 3, 1, TRUE),
+ PT(30, 10, 3, 3, TRUE),
+ PT(32, 8, 4, 2, FALSE),
+ PT(44, 12, 6, 1, TRUE),
+ PT(29, 31, 2, 0, TRUE),
+ PT(14, 18, 2, 0, FALSE),
+ PT(39, 18, 3, 0, TRUE),
+ PT(42, 19, 6, 0, TRUE),
+ PT(28, 4, 6, 0, FALSE),
+ PT(26, 56, 3, 3, TRUE),
+ PT(44, 53, 4, 2, TRUE),
+ PT( 7, 11, 6, 1, TRUE),
+ PT(45, 2, 3, 1, FALSE),
+ PT(42, 53, 6, 2, TRUE),
+ PT(22, 47, 2, 2, FALSE),
+ PT(17, 49, 6, 1, TRUE),
+ PT(44, 49, 3, 3, FALSE),
+ PT(60, 58, 4, 3, TRUE),
+ PT(60, 43, 2, 1, FALSE),
+ PT(39, 29, 2, 1, FALSE),
+ PT(54, 44, 5, 1, TRUE),
+ PT(37, 59, 6, 2, TRUE),
+ PT(18, 61, 4, 3, TRUE),
+ PT(19, 35, 3, 0, TRUE),
+ PT(51, 44, 4, 3, FALSE),
+ PT( 9, 60, 2, 1, FALSE),
+ PT(21, 26, 4, 1, TRUE),
+ PT(33, 7, 3, 1, FALSE),
+ PT(34, 37, 4, 0, FALSE),
+ PT(25, 27, 5, 2, FALSE),
+ PT(58, 25, 6, 2, TRUE),
+ PT( 5, 38, 3, 2, TRUE),
+ PT(35, 34, 4, 2, TRUE),
+ PT(14, 30, 2, 0, TRUE),
+ PT(19, 48, 2, 1, FALSE),
+ PT(44, 34, 4, 2, TRUE),
+ PT(10, 29, 3, 0, FALSE),
+ PT(35, 62, 3, 2, TRUE),
+ PT( 2, 40, 4, 2, TRUE),
+ PT(33, 14, 4, 0, FALSE),
+ PT(33, 34, 6, 3, TRUE),
+ PT(24, 51, 4, 3, TRUE),
+ PT(35, 35, 6, 0, TRUE),
+ PT(36, 26, 3, 1, FALSE),
+ PT(62, 37, 4, 2, FALSE),
+ PT(36, 1, 3, 0, FALSE),
+ PT(52, 16, 4, 1, FALSE),
+ PT( 7, 0, 6, 3, TRUE),
+ PT( 6, 32, 4, 0, FALSE),
+ PT(58, 2, 5, 1, TRUE),
+ PT( 7, 44, 5, 2, FALSE),
+ PT( 9, 47, 5, 1, FALSE),
+ PT( 1, 50, 5, 2, FALSE),
+ PT( 0, 53, 2, 1, TRUE),
+ PT(43, 60, 3, 3, TRUE),
+ PT(54, 55, 3, 3, FALSE),
+ PT(32, 53, 3, 2, TRUE),
+ PT(12, 7, 6, 1, TRUE),
+ PT(22, 8, 2, 1, FALSE),
+ PT(63, 54, 2, 0, TRUE),
+ PT(11, 31, 5, 2, TRUE),
+ PT(33, 32, 6, 1, TRUE),
+ PT(23, 26, 5, 3, FALSE),
+ PT(22, 1, 5, 3, TRUE),
+ PT(47, 28, 6, 2, FALSE),
+ PT(41, 49, 5, 3, FALSE),
+ PT(59, 56, 6, 0, TRUE),
+ PT(13, 22, 2, 1, FALSE),
+ PT( 7, 41, 4, 2, FALSE),
+ PT(51, 60, 6, 2, FALSE),
+ PT(62, 30, 3, 0, FALSE),
+ PT(48, 2, 6, 2, FALSE),
+ PT(42, 52, 3, 1, TRUE),
+ PT(46, 35, 3, 0, FALSE),
+ PT(52, 0, 3, 3, TRUE),
+ PT(32, 14, 5, 0, FALSE),
+ PT(21, 51, 6, 3, TRUE),
+ PT(39, 53, 4, 1, TRUE),
+ PT(55, 62, 2, 0, TRUE),
+ PT(50, 46, 6, 3, FALSE),
+ PT(58, 2, 5, 1, TRUE),
+ PT( 0, 54, 3, 2, TRUE),
+ PT(19, 41, 2, 3, FALSE),
+ PT( 8, 43, 6, 3, TRUE),
+ PT( 8, 2, 4, 3, TRUE),
+ PT(50, 45, 6, 2, FALSE),
+ PT(48, 54, 5, 0, TRUE),
+ PT(46, 16, 2, 1, FALSE),
+ PT(60, 46, 5, 1, FALSE),
+ PT( 4, 51, 6, 0, FALSE),
+ PT(63, 1, 4, 1, FALSE),
+ PT(55, 20, 3, 2, TRUE),
+ PT(39, 0, 5, 3, TRUE),
+ PT(12, 57, 4, 3, FALSE),
+ PT(39, 4, 4, 0, TRUE),
+ PT(25, 8, 3, 2, TRUE),
+ PT( 1, 4, 3, 3, FALSE),
+ PT(39, 27, 5, 1, TRUE),
+ PT(49, 23, 3, 3, TRUE),
+ PT( 7, 1, 5, 2, TRUE),
+ PT(46, 59, 3, 3, TRUE),
+ PT(52, 36, 6, 0, TRUE),
+ PT(50, 43, 4, 2, FALSE),
+ PT(14, 7, 3, 3, FALSE),
+ PT(15, 51, 2, 0, FALSE),
+ PT(22, 33, 6, 1, FALSE),
+ PT(57, 2, 3, 1, FALSE),
+ PT(51, 61, 4, 1, FALSE),
+ PT(12, 37, 3, 1, FALSE),
+ PT(41, 41, 5, 0, FALSE),
+ PT(58, 50, 4, 3, FALSE),
+ PT(11, 19, 4, 1, FALSE),
+ PT(31, 15, 3, 2, FALSE),
+ PT( 4, 44, 4, 0, FALSE),
+ PT(57, 26, 3, 1, TRUE),
+ PT(26, 42, 3, 3, TRUE),
+ PT(36, 19, 3, 1, FALSE),
+ PT(49, 59, 6, 1, TRUE),
+ PT(57, 35, 5, 0, FALSE),
+ PT(49, 7, 6, 0, TRUE),
+ PT(31, 16, 4, 0, FALSE),
+ PT(41, 23, 6, 1, FALSE),
+ PT(38, 59, 5, 2, TRUE),
+ PT( 2, 60, 3, 2, FALSE),
+ PT(14, 0, 4, 0, FALSE),
+ PT(20, 62, 6, 3, TRUE),
+ PT( 1, 15, 5, 2, TRUE),
+ PT( 6, 18, 4, 3, TRUE),
+ PT(48, 19, 3, 0, TRUE),
+ PT( 0, 51, 5, 1, FALSE),
+ PT(12, 7, 4, 3, TRUE),
+ PT(17, 58, 3, 2, FALSE),
+ PT(21, 10, 2, 1, TRUE),
+ PT(31, 13, 5, 1, FALSE),
+ PT(55, 7, 5, 1, FALSE),
+ PT(52, 53, 6, 2, FALSE),
+ PT(40, 22, 4, 3, TRUE),
+ PT( 6, 2, 6, 3, FALSE),
+ PT( 9, 35, 6, 0, FALSE),
+ PT(20, 2, 5, 0, FALSE),
+ PT(57, 50, 6, 2, FALSE),
+ PT(36, 53, 2, 1, FALSE),
+ PT(18, 34, 4, 3, FALSE),
+ PT( 9, 7, 6, 1, TRUE),
+ PT(15, 62, 3, 3, FALSE),
+ PT( 0, 60, 6, 1, TRUE),
+ PT(16, 55, 2, 2, FALSE),
+ PT(58, 3, 4, 2, TRUE),
+ PT(45, 30, 4, 2, FALSE),
+ PT(54, 54, 4, 3, FALSE),
+ PT(31, 60, 3, 1, FALSE),
+ PT(55, 51, 4, 2, TRUE),
+ PT(35, 19, 3, 3, TRUE),
+ PT(51, 13, 2, 1, TRUE),
+ PT(37, 48, 3, 3, FALSE),
+ PT(23, 3, 3, 0, FALSE),
+ PT(24, 24, 2, 2, FALSE),
+ PT(48, 7, 4, 1, FALSE),
+ PT(62, 51, 4, 0, TRUE),
+ PT(20, 55, 2, 3, FALSE),
+ PT(22, 0, 2, 1, FALSE),
+ PT(44, 18, 5, 3, TRUE),
+ PT(37, 63, 3, 3, FALSE),
+ PT(36, 25, 2, 3, FALSE),
+ PT(22, 15, 6, 2, TRUE),
+ PT(45, 16, 2, 0, TRUE),
+ PT(36, 42, 5, 0, FALSE),
+ PT(25, 37, 5, 3, FALSE),
+ PT(12, 22, 3, 3, TRUE),
+ PT(56, 33, 6, 3, FALSE),
+ PT(61, 26, 5, 3, TRUE),
+ PT(59, 50, 2, 1, FALSE),
+ PT(54, 19, 5, 0, TRUE),
+ PT(14, 48, 6, 0, TRUE),
+ PT(25, 7, 5, 3, TRUE),
+ PT(37, 35, 5, 0, FALSE),
+ PT(32, 8, 5, 0, TRUE),
+ PT(42, 0, 6, 0, FALSE),
+ PT(48, 56, 4, 1, TRUE),
+ PT(30, 15, 3, 3, TRUE),
+ PT(59, 27, 6, 0, FALSE),
+ PT(58, 55, 5, 3, TRUE),
+ PT(57, 55, 6, 2, TRUE),
+ PT(57, 45, 5, 3, TRUE),
+ PT(31, 46, 3, 3, FALSE),
+ PT(26, 43, 3, 3, FALSE),
+ PT(20, 23, 4, 0, FALSE),
+ PT(47, 3, 2, 0, TRUE),
+ PT(29, 0, 6, 0, FALSE),
+ PT(23, 43, 3, 2, TRUE),
+ PT(53, 40, 4, 2, TRUE),
+ PT(59, 15, 2, 0, TRUE),
+ PT( 9, 4, 5, 3, FALSE),
+ PT(35, 17, 3, 3, FALSE),
+ PT(19, 55, 3, 3, FALSE),
+ PT(55, 55, 3, 3, FALSE),
+ PT( 7, 1, 6, 1, FALSE),
+ PT(20, 6, 6, 1, FALSE),
+ PT(17, 12, 5, 3, FALSE),
+ PT(54, 46, 4, 2, FALSE),
+ PT(21, 42, 3, 2, FALSE),
+ PT(34, 21, 6, 2, FALSE),
+ PT(44, 30, 6, 2, TRUE),
+ PT(34, 39, 6, 1, TRUE),
+ PT(25, 63, 5, 2, TRUE),
+ PT(33, 51, 2, 2, TRUE),
+ PT(38, 26, 2, 0, TRUE),
+ PT(22, 62, 2, 1, FALSE),
+ PT(43, 36, 2, 2, TRUE),
+ PT(60, 15, 5, 2, TRUE),
+ PT(49, 21, 6, 3, FALSE),
+ PT(63, 36, 3, 2, TRUE),
+ PT(37, 1, 6, 3, TRUE),
+ PT(51, 22, 3, 1, FALSE),
+ PT(31, 14, 2, 0, FALSE),
+ PT(47, 11, 2, 1, FALSE),
+ PT(42, 26, 4, 2, TRUE),
+ PT(23, 10, 6, 2, TRUE),
+ PT( 9, 40, 6, 2, TRUE),
+ PT( 2, 19, 6, 3, FALSE),
+ PT(52, 47, 2, 3, TRUE),
+ PT( 3, 4, 6, 0, TRUE),
+ PT(62, 38, 2, 0, TRUE),
+ PT(53, 51, 6, 0, TRUE),
+ PT(34, 23, 4, 1, TRUE),
+ PT(29, 5, 5, 1, TRUE),
+ PT(46, 39, 4, 0, FALSE),
+ PT( 3, 43, 3, 2, TRUE),
+ PT( 1, 25, 3, 3, FALSE),
+ PT(14, 5, 3, 0, FALSE),
+ PT(22, 37, 2, 3, TRUE),
+ PT( 2, 40, 3, 0, FALSE),
+ PT(25, 11, 4, 2, FALSE),
+ PT(62, 53, 2, 3, FALSE),
+ PT(46, 41, 4, 2, TRUE),
+ PT(62, 56, 3, 3, FALSE),
+ PT(58, 47, 2, 1, FALSE),
+ PT(20, 23, 5, 2, TRUE),
+ PT(17, 18, 6, 0, FALSE),
+ PT(21, 49, 3, 0, FALSE),
+ PT( 8, 11, 5, 0, TRUE),
+ PT(45, 0, 6, 1, TRUE),
+ PT(44, 6, 3, 1, FALSE),
+ PT(20, 28, 5, 3, FALSE),
+ PT( 4, 8, 2, 1, FALSE),
+ PT(27, 43, 5, 2, TRUE),
+ PT(42, 55, 6, 1, TRUE),
+ PT(16, 39, 5, 2, FALSE),
+ PT(29, 14, 6, 2, FALSE),
+ PT(32, 2, 2, 1, FALSE),
+ PT(30, 26, 5, 3, FALSE),
+ PT( 7, 11, 2, 0, FALSE),
+ PT(54, 30, 6, 1, TRUE),
+ PT(43, 40, 3, 1, TRUE),
+ PT(49, 37, 3, 3, TRUE),
+ PT(56, 58, 5, 3, TRUE),
+ PT(57, 48, 5, 3, TRUE),
+ PT(18, 9, 2, 2, FALSE),
+ PT(14, 8, 3, 0, TRUE),
+ PT( 0, 13, 5, 2, FALSE),
+ PT(27, 14, 6, 2, FALSE),
+ PT(17, 37, 2, 2, TRUE),
+ PT(12, 45, 4, 3, FALSE),
+ PT(54, 44, 2, 3, FALSE),
+ PT(49, 49, 5, 2, FALSE),
+ PT( 3, 26, 2, 3, FALSE),
+ PT(28, 50, 2, 2, FALSE),
+ PT(10, 62, 6, 3, FALSE),
+ PT(51, 27, 4, 3, TRUE),
+ PT(31, 50, 3, 0, FALSE),
+ PT(51, 38, 6, 1, TRUE),
+ PT(26, 19, 3, 1, FALSE),
+ PT(15, 52, 3, 2, FALSE),
+ PT(53, 44, 5, 3, TRUE),
+ PT(56, 3, 3, 0, FALSE),
+ PT(21, 15, 4, 3, TRUE),
+ PT(49, 41, 4, 0, FALSE),
+ PT(40, 14, 5, 0, FALSE),
+ PT(49, 44, 5, 3, FALSE),
+ PT(21, 25, 3, 1, TRUE),
+ PT(16, 3, 5, 3, TRUE),
+ PT(46, 42, 6, 1, FALSE),
+ PT(42, 39, 3, 1, TRUE),
+ PT(54, 4, 3, 3, FALSE),
+ PT(59, 4, 4, 0, TRUE),
+ PT( 7, 47, 3, 0, TRUE),
+ PT(39, 29, 3, 2, TRUE),
+ PT(60, 61, 5, 3, FALSE),
+ PT(37, 8, 6, 1, FALSE),
+ PT(59, 52, 5, 1, FALSE),
+ PT(12, 16, 2, 1, TRUE),
+ PT(37, 53, 3, 1, FALSE),
+ PT(47, 25, 5, 0, FALSE),
+ PT(23, 0, 5, 1, TRUE),
+ PT(10, 28, 2, 3, TRUE),
+ PT(10, 17, 3, 1, TRUE),
+ PT(53, 19, 6, 3, TRUE),
+ PT(41, 28, 5, 0, FALSE),
+ PT(12, 49, 6, 2, TRUE),
+ PT(60, 16, 3, 1, FALSE),
+ PT(27, 58, 5, 2, TRUE),
+ PT(58, 28, 3, 0, FALSE),
+ PT(34, 16, 5, 2, TRUE),
+ PT(28, 60, 2, 1, FALSE),
+ PT(23, 24, 5, 1, FALSE),
+ PT(11, 43, 5, 3, TRUE),
+ PT(45, 4, 5, 3, FALSE),
+ PT(60, 19, 4, 1, TRUE),
+ PT( 1, 28, 5, 3, FALSE),
+ PT(20, 22, 4, 1, FALSE),
+ PT(12, 36, 2, 1, TRUE),
+ PT(53, 55, 6, 2, FALSE),
+ PT(27, 48, 3, 3, FALSE),
+ PT(58, 28, 4, 0, FALSE),
+ PT( 6, 6, 6, 3, FALSE),
+ PT( 9, 21, 3, 1, FALSE),
+ PT(27, 26, 4, 3, TRUE),
+ PT(15, 51, 6, 2, TRUE),
+ PT(55, 6, 4, 1, TRUE),
+ PT(58, 18, 3, 2, TRUE),
+ PT( 0, 22, 5, 0, TRUE),
+ PT(14, 29, 6, 2, TRUE),
+ PT(63, 56, 2, 3, FALSE),
+ PT(42, 60, 6, 2, FALSE),
+ PT(19, 50, 2, 0, FALSE),
+ PT(23, 44, 6, 3, TRUE),
+ PT(41, 42, 3, 3, FALSE),
+ PT(53, 47, 5, 2, TRUE),
+ PT(60, 42, 2, 0, TRUE),
+ PT(40, 19, 4, 0, TRUE),
+ PT(25, 30, 6, 2, FALSE),
+ PT(12, 6, 5, 2, TRUE),
+ PT( 9, 4, 3, 2, FALSE),
+ PT(29, 47, 4, 3, FALSE),
+ PT(57, 7, 2, 3, FALSE),
+ PT(20, 4, 5, 2, TRUE),
+ PT(58, 47, 5, 3, FALSE),
+ PT(41, 21, 6, 2, TRUE),
+ PT(36, 2, 6, 3, FALSE),
+ PT(63, 2, 3, 1, FALSE),
+ PT(15, 24, 4, 2, FALSE),
+ PT(22, 29, 3, 0, TRUE),
+ PT(20, 22, 2, 0, FALSE),
+ PT(41, 27, 2, 1, TRUE),
+ PT(21, 14, 3, 0, TRUE),
+ PT(58, 46, 5, 1, TRUE),
+ PT( 8, 48, 2, 2, TRUE),
+ PT(53, 22, 6, 0, FALSE),
+ PT(46, 24, 6, 2, TRUE),
+ PT(59, 11, 3, 2, FALSE),
+ PT(58, 24, 2, 1, TRUE),
+ PT(41, 19, 3, 3, FALSE),
+ PT(32, 19, 4, 3, TRUE),
+ PT( 4, 29, 6, 2, FALSE),
+ PT( 0, 56, 3, 0, TRUE),
+ PT( 8, 57, 6, 1, FALSE),
+ PT(32, 16, 4, 3, FALSE),
+ PT( 8, 2, 5, 0, FALSE),
+ PT(63, 15, 2, 3, FALSE),
+ PT(48, 31, 3, 0, TRUE),
+ PT(32, 45, 2, 0, FALSE),
+ PT(56, 23, 3, 2, FALSE),
+ PT(24, 49, 4, 3, TRUE),
+ PT(51, 56, 6, 0, FALSE),
+ PT(22, 51, 4, 1, TRUE),
+ PT( 0, 1, 6, 3, FALSE),
+ PT(13, 2, 4, 1, TRUE),
+ PT(57, 4, 3, 3, TRUE),
+ PT(14, 48, 4, 2, FALSE),
+ PT( 6, 1, 5, 2, FALSE),
+ PT(52, 51, 6, 2, TRUE),
+ PT(22, 52, 5, 3, FALSE),
+ PT(50, 22, 4, 2, FALSE),
+ PT(38, 57, 6, 2, FALSE),
+ PT(31, 60, 3, 2, TRUE),
+ PT(40, 29, 6, 3, TRUE),
+ PT(23, 21, 5, 1, TRUE),
+ PT(39, 57, 6, 0, FALSE),
+ PT(11, 27, 3, 0, FALSE),
+ PT(53, 32, 5, 2, TRUE),
+ PT(11, 53, 3, 2, FALSE),
+ PT( 3, 14, 4, 0, TRUE),
+ PT( 6, 12, 4, 0, FALSE),
+ PT( 2, 24, 6, 2, FALSE),
+ PT(30, 54, 5, 2, TRUE),
+ PT(22, 12, 3, 0, TRUE),
+ PT(37, 9, 5, 2, FALSE),
+ PT(55, 5, 5, 3, FALSE),
+ PT(46, 43, 5, 2, FALSE),
+ PT(36, 26, 2, 2, FALSE),
+ PT(39, 4, 2, 0, FALSE),
+ PT(50, 56, 6, 1, TRUE),
+ PT(55, 21, 6, 2, TRUE),
+ PT(17, 63, 3, 2, TRUE),
+ PT(35, 35, 3, 3, TRUE),
+ PT(41, 63, 3, 2, TRUE),
+ PT(26, 60, 5, 1, TRUE),
+ PT(27, 44, 5, 2, FALSE),
+ PT(56, 59, 6, 3, FALSE),
+ PT( 4, 19, 6, 1, TRUE),
+ PT(44, 20, 2, 1, FALSE),
+ PT(26, 9, 3, 1, TRUE),
+ PT(54, 17, 4, 2, FALSE),
+ PT(58, 63, 2, 0, TRUE),
+ PT( 1, 14, 5, 1, TRUE),
+ PT(59, 3, 5, 1, FALSE),
+ PT( 8, 13, 5, 1, TRUE),
+ PT(43, 19, 4, 3, TRUE),
+ PT(58, 60, 3, 2, FALSE),
+ PT(58, 21, 5, 1, FALSE),
+ PT(36, 0, 2, 3, TRUE),
+ PT(62, 10, 2, 2, TRUE),
+ PT(12, 41, 5, 2, TRUE),
+ PT(31, 21, 6, 0, FALSE),
+ PT(53, 24, 3, 0, TRUE),
+ PT(61, 55, 6, 3, TRUE),
+ PT(18, 56, 3, 1, TRUE),
+ PT(59, 2, 4, 0, FALSE),
+ PT( 8, 33, 3, 0, TRUE),
+ PT(46, 54, 3, 2, TRUE),
+ PT(21, 61, 4, 2, FALSE),
+ PT(34, 12, 4, 3, TRUE),
+ PT(54, 63, 6, 1, TRUE),
+ PT(51, 18, 2, 0, TRUE),
+ PT(26, 25, 3, 3, TRUE),
+ PT(43, 36, 2, 1, FALSE),
+ PT(17, 42, 3, 0, FALSE),
+ PT(37, 50, 5, 1, FALSE),
+ PT(44, 26, 2, 1, FALSE),
+ PT(38, 6, 2, 0, FALSE),
+ PT(17, 41, 6, 1, TRUE),
+ PT(44, 9, 2, 2, FALSE),
+ PT(43, 18, 5, 1, TRUE),
+ PT(29, 3, 4, 2, FALSE),
+ PT( 0, 18, 2, 2, TRUE),
+ PT(34, 61, 4, 3, FALSE),
+ PT(21, 55, 3, 1, FALSE),
+ PT(15, 18, 6, 3, TRUE),
+ PT(36, 1, 3, 0, FALSE),
+ PT(42, 23, 2, 1, TRUE),
+ PT(20, 59, 5, 0, TRUE),
+ PT(42, 25, 6, 1, FALSE),
+ PT(45, 23, 2, 3, TRUE),
+ PT(11, 44, 6, 1, TRUE),
+ PT( 7, 45, 6, 2, FALSE),
+ PT( 7, 56, 3, 2, TRUE),
+ PT(31, 54, 4, 1, FALSE),
+ PT(17, 10, 2, 3, TRUE),
+ PT(20, 17, 2, 1, TRUE),
+ PT(42, 23, 4, 2, TRUE),
+ PT( 1, 58, 3, 2, FALSE),
+ PT(38, 39, 6, 0, FALSE),
+ PT(45, 59, 6, 2, TRUE),
+ PT(58, 48, 6, 2, FALSE),
+ PT( 6, 58, 3, 2, FALSE),
+ PT(45, 5, 2, 1, TRUE),
+ PT(33, 50, 2, 1, FALSE),
+ PT(62, 30, 5, 2, FALSE),
+ PT(58, 63, 5, 2, TRUE),
+ PT(32, 42, 6, 2, FALSE),
+ PT(38, 3, 3, 1, FALSE),
+ PT(25, 39, 5, 3, FALSE),
+ PT(49, 4, 4, 3, FALSE),
+ PT(42, 63, 6, 0, FALSE),
+ PT(37, 35, 5, 1, FALSE),
+ PT( 8, 8, 6, 2, TRUE),
+ PT(44, 48, 3, 3, FALSE),
+ PT( 8, 5, 3, 0, FALSE),
+ PT( 6, 9, 5, 2, TRUE),
+ PT(25, 0, 4, 3, TRUE),
+ PT(13, 16, 3, 0, TRUE),
+ PT(28, 0, 2, 1, TRUE),
+ PT(61, 11, 4, 2, FALSE),
+ PT(46, 31, 2, 3, FALSE),
+ PT(61, 24, 6, 2, FALSE),
+ PT(18, 30, 2, 2, TRUE),
+ PT(21, 57, 4, 2, TRUE),
+ PT(51, 15, 2, 3, TRUE),
+ PT(26, 28, 3, 1, TRUE),
+ PT(55, 41, 3, 1, TRUE),
+ PT(59, 56, 2, 1, FALSE),
+ PT(29, 34, 6, 2, FALSE),
+ PT(38, 10, 6, 0, TRUE),
+ PT(22, 45, 2, 1, TRUE),
+ PT(13, 32, 4, 3, TRUE),
+ PT(36, 29, 2, 3, FALSE),
+ PT(46, 43, 3, 0, FALSE),
+ PT(22, 42, 3, 1, TRUE),
+ PT(36, 23, 6, 3, FALSE),
+ PT( 2, 5, 5, 1, TRUE),
+ PT(55, 26, 2, 3, TRUE),
+ PT(17, 61, 5, 2, FALSE),
+ PT(30, 47, 4, 1, FALSE),
+ PT(44, 41, 3, 1, FALSE),
+ PT(47, 4, 4, 2, TRUE),
+ PT(54, 12, 6, 2, TRUE),
+ PT(48, 62, 2, 1, FALSE),
+ PT(17, 48, 6, 3, TRUE),
+ PT(18, 33, 5, 3, FALSE),
+ PT(33, 48, 2, 3, TRUE),
+ PT(44, 61, 4, 2, FALSE),
+ PT(17, 35, 2, 2, FALSE),
+ PT(26, 50, 2, 3, TRUE),
+ PT(57, 39, 3, 0, FALSE),
+ PT(15, 36, 3, 0, TRUE),
+ PT( 0, 61, 6, 3, TRUE),
+ PT(44, 60, 3, 2, FALSE),
+ PT(11, 57, 4, 1, TRUE),
+ PT(14, 4, 3, 3, TRUE),
+ PT(28, 49, 2, 2, FALSE),
+ PT( 0, 4, 2, 2, TRUE),
+ PT(38, 42, 5, 1, FALSE),
+ PT(32, 37, 5, 1, FALSE),
+ PT(11, 60, 6, 1, TRUE),
+ PT(17, 11, 5, 3, FALSE),
+ PT(55, 34, 5, 3, FALSE),
+ PT(14, 34, 4, 3, FALSE),
+ PT(24, 45, 4, 3, TRUE),
+ PT( 6, 12, 3, 2, FALSE),
+ PT(38, 24, 5, 3, TRUE),
+ PT(58, 1, 5, 1, FALSE),
+ PT(47, 49, 6, 2, FALSE),
+ PT(31, 52, 3, 1, FALSE),
+ PT(49, 5, 2, 0, FALSE),
+ PT(46, 23, 6, 2, FALSE),
+ PT(24, 34, 4, 1, TRUE),
+ PT(35, 33, 6, 1, FALSE),
+ PT( 7, 8, 4, 1, FALSE),
+ PT(38, 28, 4, 1, FALSE),
+ PT(49, 18, 5, 3, TRUE),
+ PT( 8, 31, 2, 0, FALSE),
+ PT(39, 21, 5, 1, FALSE),
+ PT(31, 11, 4, 3, FALSE),
+ PT(47, 20, 6, 2, TRUE),
+ PT(36, 31, 4, 3, FALSE),
+ PT(59, 35, 6, 1, TRUE),
+ PT(32, 62, 5, 2, TRUE),
+ PT(23, 12, 2, 2, TRUE),
+ PT(19, 57, 3, 1, FALSE),
+ PT(48, 20, 4, 2, TRUE),
+ PT( 9, 7, 2, 3, TRUE),
+ PT(56, 56, 3, 3, TRUE),
+ PT(41, 36, 4, 3, TRUE),
+ PT(23, 39, 5, 0, FALSE),
+ PT(27, 18, 5, 1, FALSE),
+ PT(43, 61, 5, 2, TRUE),
+ PT(25, 52, 3, 2, FALSE),
+ PT( 1, 29, 2, 0, FALSE),
+ PT( 8, 57, 2, 0, TRUE),
+ PT(14, 54, 3, 1, TRUE),
+ PT(38, 19, 2, 0, FALSE),
+ PT(22, 40, 3, 3, FALSE),
+ PT(60, 40, 2, 3, TRUE),
+ PT(62, 57, 6, 2, FALSE),
+ PT(10, 3, 5, 3, FALSE),
+ PT(55, 26, 2, 1, TRUE),
+ PT(43, 51, 4, 3, FALSE),
+ PT(19, 44, 4, 0, TRUE),
+ PT(37, 20, 2, 0, FALSE),
+ PT(22, 11, 6, 2, TRUE),
+ PT(29, 53, 6, 1, TRUE),
+ PT(33, 8, 6, 1, TRUE),
+ PT(40, 33, 3, 1, FALSE),
+ PT(18, 12, 3, 1, TRUE),
+ PT(54, 42, 3, 0, TRUE),
+ PT(44, 43, 4, 1, TRUE),
+ PT( 1, 15, 4, 3, FALSE),
+ PT(23, 12, 3, 0, FALSE),
+ PT( 9, 15, 2, 0, TRUE),
+ PT(43, 36, 3, 2, FALSE),
+ PT( 9, 9, 2, 2, TRUE),
+ PT(54, 8, 2, 1, TRUE),
+ PT(32, 57, 4, 0, TRUE),
+ PT( 0, 58, 3, 3, TRUE),
+ PT(43, 54, 6, 0, TRUE),
+ PT( 2, 55, 2, 1, TRUE),
+ PT( 4, 52, 6, 2, TRUE),
+ PT(55, 61, 3, 1, FALSE),
+ PT(23, 61, 2, 1, TRUE),
+ PT(43, 54, 5, 3, TRUE),
+ PT(19, 30, 2, 1, TRUE),
+ PT(62, 17, 6, 1, TRUE),
+ PT(39, 58, 5, 2, TRUE),
+ PT(30, 49, 3, 1, FALSE),
+ PT( 3, 3, 5, 2, TRUE),
+ PT(37, 55, 3, 3, TRUE),
+ PT(17, 1, 4, 1, FALSE),
+ PT(28, 18, 2, 3, TRUE),
+ PT(48, 58, 6, 0, FALSE),
+ PT(23, 29, 5, 0, TRUE),
+ PT(14, 19, 4, 3, TRUE),
+ PT(26, 46, 4, 2, FALSE),
+ PT(45, 0, 3, 2, FALSE),
+ PT(23, 40, 3, 2, TRUE),
+ PT( 9, 31, 5, 3, FALSE),
+ PT(26, 45, 4, 3, FALSE),
+ PT(10, 19, 6, 1, FALSE),
+ PT(62, 0, 4, 3, TRUE),
+ PT(11, 59, 6, 0, FALSE),
+ PT( 8, 58, 5, 2, TRUE),
+ PT(34, 18, 3, 3, FALSE),
+ PT(52, 29, 5, 1, TRUE),
+ PT(38, 34, 6, 2, TRUE),
+ PT(23, 44, 2, 3, TRUE),
+ PT(41, 19, 5, 2, TRUE),
+ PT(45, 16, 2, 0, FALSE),
+ PT(32, 49, 4, 1, TRUE),
+ PT(30, 51, 3, 0, FALSE),
+ PT(51, 6, 5, 2, TRUE),
+ PT(38, 20, 4, 3, TRUE),
+ PT(34, 29, 5, 1, FALSE),
+ PT(45, 6, 3, 0, FALSE),
+ PT( 7, 9, 5, 3, FALSE),
+ PT(33, 21, 5, 3, FALSE),
+ PT(33, 56, 4, 1, TRUE),
+ PT(53, 11, 6, 2, FALSE),
+ PT(36, 11, 4, 1, FALSE),
+ PT(30, 1, 2, 3, TRUE),
+ PT(11, 36, 2, 0, TRUE),
+ PT(23, 7, 4, 0, FALSE),
+ PT(20, 37, 6, 1, FALSE),
+ PT(26, 14, 5, 3, TRUE),
+ PT(53, 23, 3, 3, TRUE),
+ PT(12, 8, 4, 0, TRUE),
+ PT(48, 53, 3, 3, TRUE),
+ PT(12, 11, 4, 0, FALSE),
+ PT( 4, 16, 2, 0, TRUE),
+ PT(53, 17, 3, 3, FALSE),
+ PT(51, 61, 2, 3, FALSE),
+ PT(30, 43, 3, 2, TRUE),
+ PT(26, 25, 2, 0, FALSE),
+ PT( 4, 6, 4, 1, FALSE),
+ PT( 3, 61, 4, 2, FALSE),
+ PT(42, 14, 6, 2, TRUE),
+ PT( 3, 62, 2, 3, TRUE),
+ PT(11, 24, 6, 3, FALSE),
+ PT(61, 13, 4, 3, FALSE),
+ PT(53, 18, 4, 0, FALSE),
+ PT(31, 13, 2, 3, FALSE),
+ PT(35, 50, 3, 1, FALSE),
+ PT( 0, 61, 4, 3, FALSE),
+ PT(48, 25, 6, 3, FALSE),
+ PT(18, 14, 4, 1, TRUE),
+ PT( 1, 35, 5, 0, FALSE),
+ PT(59, 49, 2, 0, TRUE),
+ PT(45, 28, 6, 3, FALSE),
+ PT(42, 5, 2, 3, FALSE),
+ PT(20, 14, 6, 0, FALSE),
+ PT(58, 55, 3, 0, TRUE),
+ PT(31, 48, 4, 2, TRUE),
+ PT(16, 38, 5, 3, TRUE),
+ PT(34, 17, 3, 3, TRUE),
+ PT(46, 43, 3, 3, FALSE),
+ PT(22, 22, 4, 0, TRUE),
+ PT(50, 24, 6, 2, TRUE),
+ PT(35, 50, 3, 1, FALSE),
+ PT(61, 13, 3, 0, TRUE),
+ PT(57, 9, 4, 1, TRUE),
+ PT(48, 46, 4, 2, FALSE),
+ PT(30, 15, 4, 2, FALSE),
+ PT( 9, 33, 6, 0, TRUE),
+ PT( 5, 3, 2, 0, TRUE),
+ PT( 5, 34, 5, 1, FALSE),
+ PT( 3, 7, 6, 3, TRUE),
+ PT( 4, 8, 2, 1, TRUE),
+ PT( 5, 16, 6, 2, FALSE),
+ PT(55, 20, 5, 0, TRUE),
+ PT(10, 36, 6, 1, FALSE),
+ PT(52, 30, 3, 1, TRUE),
+ PT(18, 23, 5, 3, FALSE),
+ PT( 1, 2, 2, 1, TRUE),
+ PT(10, 12, 2, 0, TRUE),
+ PT( 2, 20, 2, 1, TRUE),
+ PT(13, 37, 4, 1, TRUE),
+ PT( 0, 7, 3, 1, FALSE),
+ PT(28, 40, 6, 2, TRUE),
+ PT( 8, 14, 5, 2, FALSE),
+ PT(27, 60, 2, 2, TRUE),
+ PT(28, 25, 3, 2, TRUE),
+ PT(50, 19, 3, 1, FALSE),
+ PT(28, 0, 6, 3, TRUE),
+ PT(34, 27, 6, 2, TRUE),
+ PT(57, 62, 2, 2, FALSE),
+ PT(50, 6, 6, 0, TRUE),
+ PT(23, 5, 5, 1, TRUE),
+ PT( 1, 15, 4, 0, FALSE),
+ PT(30, 15, 6, 2, FALSE),
+ PT(24, 3, 3, 3, TRUE),
+ PT(43, 0, 2, 2, FALSE),
+ PT(21, 58, 6, 0, FALSE),
+ PT(37, 48, 4, 0, TRUE),
+ PT(11, 0, 6, 3, TRUE),
+ PT(36, 55, 3, 2, TRUE),
+ PT(41, 33, 2, 3, FALSE),
+ PT(36, 15, 5, 2, FALSE),
+ PT(62, 21, 6, 3, FALSE),
+ PT(60, 45, 4, 1, TRUE),
+ PT(61, 60, 2, 3, TRUE),
+ PT(26, 28, 2, 1, TRUE),
+ PT(10, 41, 4, 1, FALSE),
+ PT(37, 63, 4, 3, FALSE),
+ PT(59, 57, 5, 3, TRUE),
+ PT(29, 8, 2, 3, FALSE),
+ PT(11, 25, 2, 2, FALSE),
+ PT(18, 1, 5, 2, FALSE),
+ PT(53, 17, 5, 1, FALSE),
+ PT( 2, 0, 2, 1, TRUE),
+ PT(57, 42, 6, 2, TRUE),
+ PT( 7, 26, 2, 0, TRUE),
+ PT(36, 14, 3, 3, FALSE),
+ PT(14, 44, 2, 2, TRUE),
+ PT( 8, 49, 3, 1, TRUE),
+ PT(33, 29, 4, 3, FALSE),
+ PT(29, 28, 5, 1, FALSE),
+ PT(29, 36, 2, 1, TRUE),
+ PT( 1, 0, 3, 0, FALSE),
+ PT(40, 42, 6, 3, TRUE),
+ PT(21, 15, 2, 1, TRUE),
+ PT(16, 50, 6, 3, FALSE),
+ PT(34, 19, 6, 0, TRUE),
+ PT(19, 5, 3, 3, FALSE),
+ PT(23, 53, 6, 2, TRUE),
+ PT(59, 14, 4, 2, FALSE),
+ PT(53, 58, 3, 2, TRUE),
+ PT(27, 54, 3, 1, TRUE),
+ PT( 3, 29, 4, 2, FALSE),
+ PT(15, 22, 6, 0, FALSE),
+ PT(45, 9, 4, 2, TRUE),
+ PT( 5, 33, 2, 1, TRUE),
+ PT(10, 39, 6, 3, FALSE),
+ PT( 4, 13, 3, 2, FALSE),
+ PT( 6, 62, 4, 0, TRUE),
+ PT(42, 39, 6, 1, TRUE),
+ PT(40, 14, 2, 2, TRUE),
+ PT(11, 23, 3, 2, TRUE),
+ PT(29, 50, 5, 2, TRUE),
+ PT( 8, 61, 5, 0, TRUE),
+ PT(33, 50, 2, 3, TRUE),
+ PT(51, 49, 4, 1, FALSE),
+ PT(14, 3, 4, 0, TRUE),
+ PT(13, 11, 2, 3, FALSE),
+ PT(62, 42, 5, 3, FALSE),
+ PT(25, 54, 5, 1, FALSE),
+ PT(13, 0, 2, 2, FALSE),
+ PT(34, 7, 6, 3, FALSE),
+ PT(10, 9, 2, 2, TRUE),
+ PT(20, 16, 4, 1, FALSE),
+ PT( 7, 22, 5, 2, FALSE),
+ PT(54, 19, 2, 2, TRUE),
+ PT( 9, 47, 3, 1, TRUE),
+ PT(32, 59, 5, 3, FALSE),
+ PT(58, 58, 2, 3, FALSE),
+ PT(13, 21, 5, 1, FALSE),
+ PT(57, 19, 5, 1, TRUE),
+ PT(11, 1, 5, 1, FALSE),
+ PT(19, 23, 3, 3, FALSE),
+ PT( 8, 23, 3, 3, FALSE),
+ PT(12, 15, 6, 2, FALSE),
+ PT(31, 49, 2, 1, FALSE),
+ PT( 7, 58, 3, 2, TRUE),
+ PT(53, 30, 2, 1, FALSE),
+ PT(36, 44, 2, 2, TRUE),
+ PT(14, 33, 3, 0, TRUE),
+ PT(52, 59, 6, 1, TRUE),
+ PT(25, 15, 5, 0, FALSE),
+ PT(16, 47, 5, 3, FALSE),
+ PT(35, 39, 6, 0, TRUE),
+ PT(57, 46, 3, 0, FALSE),
+ PT(60, 63, 4, 2, FALSE),
+ PT( 7, 35, 6, 0, FALSE),
+ PT(40, 19, 6, 2, TRUE),
+ PT(19, 10, 2, 0, FALSE),
+ PT(53, 25, 6, 1, TRUE),
+ PT(35, 40, 5, 0, TRUE),
+ PT(19, 47, 3, 1, FALSE),
+ PT(58, 25, 2, 2, FALSE),
+ PT(55, 54, 4, 3, FALSE),
+ PT(32, 59, 2, 2, TRUE),
+ PT(55, 57, 2, 0, FALSE),
+ PT(60, 33, 6, 2, FALSE),
+ PT(28, 56, 6, 0, FALSE),
+ PT(21, 7, 4, 3, FALSE),
+ PT(39, 33, 3, 0, TRUE),
+ PT(24, 17, 4, 1, TRUE),
+ PT(48, 40, 6, 3, TRUE),
+ PT(50, 45, 3, 3, TRUE),
+ PT(44, 63, 6, 0, FALSE),
+ PT(29, 47, 4, 3, FALSE),
+ PT( 1, 17, 3, 2, FALSE),
+ PT(59, 15, 2, 1, FALSE),
+ PT(42, 23, 4, 3, TRUE),
+ PT( 5, 0, 3, 1, TRUE),
+ PT(37, 28, 6, 1, FALSE),
+ PT( 4, 34, 5, 2, TRUE),
+ PT(16, 15, 4, 2, TRUE),
+ PT(13, 57, 6, 0, FALSE),
+ PT(11, 46, 4, 3, TRUE),
+ PT(45, 52, 2, 2, TRUE),
+ PT(62, 48, 6, 3, FALSE),
+ PT(22, 38, 5, 1, FALSE),
+ PT( 5, 63, 5, 1, TRUE),
+ PT(32, 59, 5, 3, FALSE),
+ PT(59, 28, 5, 3, TRUE),
+ PT( 1, 24, 2, 3, FALSE),
+ PT(22, 61, 2, 0, FALSE),
+ PT(10, 31, 3, 0, FALSE),
+ PT(23, 15, 4, 1, FALSE),
+ PT( 6, 19, 2, 0, TRUE),
+ PT(56, 33, 2, 3, TRUE),
+ PT(23, 10, 6, 3, TRUE),
+ PT(28, 25, 6, 0, FALSE),
+ PT(22, 56, 6, 0, TRUE),
+ PT(48, 16, 6, 3, FALSE),
+ PT(49, 47, 4, 3, FALSE),
+ PT(60, 27, 4, 1, TRUE),
+ PT(51, 47, 3, 0, TRUE),
+ PT(22, 53, 4, 2, TRUE),
+ PT(58, 24, 3, 3, TRUE),
+ PT(55, 1, 3, 3, FALSE),
+ PT(13, 24, 2, 1, FALSE),
+ PT(31, 28, 3, 1, TRUE),
+ PT( 7, 52, 5, 2, TRUE),
+ PT(11, 63, 6, 1, TRUE),
+ PT(30, 52, 3, 2, TRUE),
+ PT(44, 19, 5, 2, FALSE),
+ PT(32, 32, 2, 1, TRUE),
+ PT(32, 15, 6, 0, TRUE),
+ PT( 8, 15, 4, 2, FALSE),
+ PT(24, 61, 3, 2, FALSE),
+ PT(54, 52, 4, 3, TRUE),
+ PT(51, 42, 4, 2, TRUE),
+ PT(45, 48, 4, 3, FALSE),
+ PT(61, 55, 4, 3, FALSE),
+ PT(37, 17, 2, 0, TRUE),
+ PT( 3, 5, 3, 0, FALSE),
+ PT(16, 4, 5, 0, TRUE),
+ PT( 7, 46, 6, 3, FALSE),
+ PT(42, 41, 2, 2, TRUE),
+ PT(58, 14, 6, 1, TRUE),
+ PT(42, 6, 5, 0, TRUE),
+ PT(61, 1, 5, 0, TRUE),
+ PT(39, 14, 2, 3, FALSE),
+ PT(29, 40, 3, 1, TRUE),
+ PT(16, 51, 5, 1, TRUE),
+ PT(12, 20, 3, 2, TRUE),
+ PT(21, 63, 4, 2, TRUE),
+ PT(55, 35, 3, 3, FALSE),
+ PT( 4, 44, 3, 2, FALSE),
+ PT(21, 52, 5, 1, FALSE),
+ PT( 9, 47, 2, 2, TRUE),
+ PT( 2, 63, 2, 2, FALSE),
+ PT(25, 44, 6, 1, TRUE),
+ PT(57, 50, 4, 0, FALSE),
+ PT(42, 24, 6, 1, FALSE),
+ PT(23, 35, 4, 0, TRUE),
+ PT(11, 45, 4, 2, TRUE),
+ PT(36, 58, 5, 2, TRUE),
+ PT(49, 63, 6, 2, FALSE),
+ PT(24, 25, 4, 2, FALSE),
+ PT(30, 21, 3, 1, FALSE),
+ PT(23, 51, 5, 1, TRUE),
+ PT(35, 9, 4, 3, FALSE),
+ PT(27, 13, 2, 2, TRUE),
+ PT(54, 38, 5, 0, FALSE),
+ PT(58, 28, 2, 2, FALSE),
+ PT(12, 62, 2, 0, FALSE),
+ PT(24, 6, 6, 2, TRUE),
+ PT(55, 38, 6, 3, FALSE),
+ PT(33, 38, 2, 3, TRUE),
+ PT(61, 28, 5, 2, FALSE),
+ PT(22, 37, 3, 2, TRUE),
+ PT(30, 11, 3, 3, FALSE),
+ PT(29, 13, 6, 1, FALSE),
+ PT( 8, 31, 3, 1, TRUE),
+ PT(18, 28, 2, 1, FALSE),
+ PT(32, 42, 5, 0, FALSE),
+ PT( 6, 59, 6, 2, TRUE),
+ PT(57, 14, 3, 3, FALSE),
+ PT(49, 48, 5, 0, FALSE),
+ PT( 2, 33, 2, 2, FALSE),
+ PT( 6, 30, 5, 0, TRUE),
+ PT(22, 9, 3, 2, FALSE),
+ PT(39, 50, 5, 2, TRUE),
+ PT(57, 3, 4, 3, TRUE),
+ PT(41, 9, 3, 3, FALSE),
+ PT(27, 17, 3, 2, FALSE),
+ PT(40, 58, 5, 2, FALSE),
+ PT( 3, 3, 3, 0, FALSE),
+ PT(35, 9, 5, 3, TRUE),
+ PT(48, 23, 4, 1, TRUE),
+ PT(15, 37, 6, 1, TRUE),
+ PT( 6, 36, 6, 3, TRUE),
+ PT(34, 9, 6, 1, TRUE),
+ PT(44, 9, 5, 1, FALSE),
+ PT(12, 18, 5, 1, FALSE),
+ PT(40, 32, 2, 0, FALSE),
+ PT(21, 41, 6, 1, TRUE),
+ PT(15, 26, 2, 1, TRUE),
+ PT(19, 24, 6, 3, FALSE),
+ PT(46, 22, 2, 1, TRUE),
+ PT(60, 26, 2, 2, TRUE),
+ PT(58, 17, 6, 1, FALSE),
+ PT( 2, 10, 5, 2, FALSE),
+ PT(25, 57, 2, 0, TRUE),
+ PT(49, 62, 3, 2, TRUE),
+ PT(50, 20, 6, 1, FALSE),
+ PT(18, 46, 6, 2, FALSE),
+ PT(62, 54, 4, 1, TRUE),
+ PT(55, 62, 2, 2, TRUE),
+ PT(21, 53, 6, 2, FALSE),
+ PT( 1, 58, 5, 2, FALSE),
+ PT(38, 37, 4, 1, FALSE),
+ PT( 1, 43, 6, 3, TRUE),
+ PT(28, 61, 6, 1, TRUE),
+ PT(62, 16, 3, 2, FALSE),
+ PT(38, 51, 3, 0, TRUE),
+ PT( 5, 25, 2, 3, TRUE),
+ PT(18, 56, 3, 2, FALSE),
+ PT(21, 60, 6, 1, FALSE),
+ PT(63, 15, 6, 3, TRUE),
+ PT( 2, 57, 6, 1, FALSE),
+ PT(19, 0, 3, 2, TRUE),
+ PT(29, 44, 2, 0, FALSE),
+ PT(57, 19, 6, 0, TRUE),
+ PT(15, 55, 3, 0, TRUE),
+ PT( 9, 13, 5, 1, FALSE),
+ PT(32, 47, 6, 1, FALSE),
+ PT(59, 52, 4, 1, FALSE),
+ PT(38, 20, 2, 0, FALSE),
+ PT(36, 61, 4, 1, FALSE),
+ PT(11, 49, 4, 1, TRUE),
+ PT(47, 45, 5, 1, FALSE),
+ PT(48, 4, 6, 2, TRUE),
+ PT(25, 32, 5, 1, FALSE),
+ PT(22, 54, 6, 3, TRUE),
+ PT(20, 40, 6, 3, TRUE),
+ PT(17, 11, 4, 3, TRUE),
+ PT(29, 6, 5, 0, TRUE),
+ PT(53, 22, 5, 3, FALSE),
+ PT(36, 46, 5, 0, TRUE),
+ PT(54, 20, 5, 1, FALSE),
+ PT(33, 12, 3, 3, TRUE),
+ PT(63, 57, 3, 0, TRUE),
+ PT(39, 16, 5, 1, FALSE),
+ PT(30, 18, 6, 2, FALSE),
+ PT(16, 36, 6, 2, FALSE),
+ PT(29, 19, 3, 2, TRUE),
+ PT(23, 22, 6, 3, TRUE),
+ PT(39, 27, 4, 3, TRUE),
+ PT( 7, 36, 4, 0, TRUE),
+ PT(55, 33, 2, 0, TRUE),
+ PT(55, 40, 4, 2, FALSE),
+ PT(25, 2, 3, 2, FALSE),
+ PT(20, 18, 3, 2, TRUE),
+ PT(27, 36, 5, 3, FALSE),
+ PT(46, 58, 2, 2, TRUE),
+ PT(55, 52, 4, 0, TRUE),
+ PT(51, 45, 5, 0, TRUE),
+ PT(47, 30, 6, 2, FALSE),
+ PT(41, 60, 2, 1, FALSE),
+ PT( 5, 21, 4, 0, FALSE),
+ PT( 5, 62, 3, 0, TRUE),
+ PT(24, 11, 6, 0, FALSE),
+ PT(47, 2, 4, 3, TRUE),
+ PT(20, 28, 6, 2, FALSE),
+ PT(18, 32, 6, 0, FALSE),
+ PT(43, 34, 3, 1, TRUE),
+ PT( 6, 49, 5, 0, FALSE),
+ PT(21, 45, 2, 1, FALSE),
+ PT( 1, 14, 2, 1, TRUE),
+ PT(19, 12, 5, 0, FALSE),
+ PT( 7, 42, 2, 2, FALSE),
+ PT(29, 54, 2, 2, FALSE),
+ PT(21, 43, 4, 3, FALSE),
+ PT( 3, 37, 2, 2, TRUE),
+ PT(62, 59, 4, 0, FALSE),
+ PT(53, 12, 4, 2, TRUE),
+ PT(43, 22, 6, 2, TRUE),
+ PT(30, 49, 5, 2, FALSE),
+ PT( 6, 3, 5, 0, TRUE),
+ PT(36, 7, 3, 3, TRUE),
+ PT(50, 47, 3, 0, TRUE),
+ PT(37, 33, 6, 0, TRUE),
+ PT(34, 38, 3, 2, TRUE),
+ PT( 0, 27, 3, 0, FALSE),
+ PT(42, 36, 6, 0, TRUE),
+ PT(32, 6, 5, 3, TRUE),
+ PT(30, 50, 4, 3, FALSE),
+ PT(50, 57, 2, 1, FALSE),
+ PT(32, 1, 3, 0, TRUE),
+ PT(15, 21, 2, 2, TRUE),
+ PT(39, 16, 5, 3, FALSE),
+ PT( 9, 37, 3, 0, TRUE),
+ PT(41, 55, 6, 0, FALSE),
+ PT(19, 28, 3, 2, TRUE),
+ PT(41, 45, 4, 3, FALSE),
+ PT( 2, 26, 2, 3, FALSE),
+ PT(29, 43, 3, 2, FALSE),
+ PT(24, 4, 6, 2, FALSE),
+ PT(40, 42, 4, 0, TRUE),
+ PT(21, 27, 5, 3, FALSE),
+ PT(22, 1, 2, 0, FALSE),
+ PT( 5, 9, 2, 2, FALSE),
+ PT(34, 3, 4, 1, FALSE),
+ PT( 2, 27, 6, 2, FALSE),
+ PT(41, 42, 4, 1, TRUE),
+ PT(38, 54, 2, 1, TRUE),
+ PT(35, 61, 3, 1, FALSE),
+ PT(29, 16, 4, 2, FALSE),
+ PT(37, 43, 6, 3, TRUE),
+ PT(25, 36, 4, 3, FALSE),
+ PT(40, 19, 2, 3, FALSE),
+ PT(23, 20, 3, 0, TRUE),
+ PT(11, 47, 4, 2, TRUE),
+ PT(55, 52, 6, 3, TRUE),
+ PT(57, 33, 3, 1, TRUE),
+ PT(15, 61, 5, 2, TRUE),
+ PT(13, 16, 4, 0, FALSE),
+ PT( 5, 11, 5, 2, TRUE),
+ PT( 1, 18, 4, 2, FALSE),
+ PT(24, 61, 6, 1, FALSE),
+ PT( 9, 33, 4, 3, FALSE),
+ PT(26, 14, 3, 3, TRUE),
+ PT(48, 6, 3, 3, TRUE),
+ PT(11, 60, 5, 0, TRUE),
+ PT( 7, 62, 4, 3, TRUE),
+ PT(19, 30, 3, 1, FALSE),
+ PT(19, 7, 4, 1, TRUE),
+ PT(16, 52, 3, 3, FALSE),
+ PT(50, 23, 4, 1, TRUE),
+ PT(53, 22, 6, 0, TRUE),
+ PT(50, 46, 3, 1, TRUE),
+ PT(40, 14, 4, 1, FALSE),
+ PT(20, 58, 4, 1, TRUE),
+ PT(34, 3, 5, 0, TRUE),
+ PT(42, 16, 4, 0, FALSE),
+ PT(62, 60, 4, 3, TRUE),
+ PT(22, 32, 2, 1, FALSE),
+ PT(63, 36, 6, 0, TRUE),
+ PT(13, 46, 6, 1, FALSE),
+ PT(47, 23, 5, 2, TRUE),
+ PT(54, 59, 2, 3, TRUE),
+ PT(36, 35, 3, 0, FALSE),
+ PT(55, 29, 2, 1, TRUE),
+ PT(23, 58, 3, 1, FALSE),
+ PT(10, 61, 3, 3, FALSE),
+ PT( 5, 18, 2, 3, FALSE),
+ PT(51, 50, 4, 2, TRUE),
+ PT(29, 31, 5, 0, TRUE),
+ PT(52, 44, 4, 3, FALSE),
+ PT(32, 41, 6, 2, TRUE),
+ PT(14, 50, 2, 3, TRUE),
+ PT( 1, 57, 5, 2, TRUE),
+ PT(39, 36, 4, 1, TRUE),
+ PT(40, 63, 3, 0, FALSE),
+ PT(57, 56, 4, 2, TRUE),
+ PT(35, 17, 2, 0, TRUE),
+ PT(25, 44, 5, 0, TRUE),
+ PT(48, 8, 5, 0, FALSE),
+ PT(37, 39, 3, 2, TRUE),
+ PT(23, 37, 4, 0, TRUE),
+ PT( 9, 61, 2, 3, FALSE),
+ PT(27, 15, 5, 2, FALSE),
+ PT(27, 18, 4, 1, FALSE),
+ PT(40, 62, 4, 3, FALSE),
+ PT(52, 16, 3, 1, TRUE),
+ PT( 2, 52, 2, 2, TRUE),
+ PT(26, 41, 3, 0, TRUE),
+ PT(41, 17, 6, 0, TRUE),
+ PT(18, 39, 2, 3, TRUE),
+ PT(39, 39, 5, 3, TRUE),
+ PT(52, 39, 4, 2, FALSE),
+ PT( 3, 25, 6, 3, FALSE),
+ PT(23, 29, 6, 1, TRUE),
+ PT(25, 37, 3, 1, FALSE),
+ PT(43, 57, 2, 1, TRUE),
+ PT(59, 51, 3, 2, TRUE),
+ PT(39, 49, 6, 2, FALSE),
+ PT(40, 51, 6, 3, TRUE),
+ PT( 9, 48, 3, 1, TRUE),
+ PT( 3, 58, 4, 3, TRUE),
+ PT(25, 17, 3, 3, TRUE),
+ PT(11, 26, 6, 2, FALSE),
+ PT(61, 42, 2, 2, TRUE),
+ PT( 4, 36, 6, 3, FALSE),
+ PT(48, 35, 6, 0, FALSE),
+ PT(15, 34, 3, 1, TRUE),
+ PT(61, 61, 4, 2, FALSE),
+ PT(41, 29, 2, 1, FALSE),
+ PT(22, 25, 5, 3, FALSE),
+ PT( 3, 18, 2, 3, TRUE),
+ PT(24, 37, 6, 1, TRUE),
+ PT(47, 35, 3, 1, FALSE),
+ PT(26, 53, 4, 3, TRUE),
+ PT(33, 38, 3, 0, TRUE),
+ PT(27, 48, 3, 0, FALSE),
+ PT(43, 34, 5, 2, TRUE),
+ PT(44, 26, 6, 2, FALSE),
+ PT(62, 18, 3, 0, TRUE),
+ PT(40, 39, 2, 2, TRUE),
+ PT(27, 17, 2, 1, FALSE),
+ PT(23, 21, 2, 0, FALSE),
+ PT(52, 55, 4, 2, TRUE),
+ PT(18, 63, 2, 2, TRUE),
+ PT(49, 13, 6, 3, TRUE),
+ PT(62, 42, 5, 2, TRUE),
+ PT(15, 36, 4, 2, FALSE),
+ PT(60, 63, 3, 3, TRUE),
+ PT(29, 52, 2, 3, TRUE),
+ PT(26, 35, 3, 3, TRUE),
+ PT(55, 15, 2, 0, FALSE),
+ PT(50, 52, 6, 2, TRUE),
+ PT(25, 5, 4, 1, FALSE),
+ PT(51, 22, 6, 2, FALSE),
+ PT(30, 20, 3, 3, FALSE),
+ PT( 8, 19, 5, 0, TRUE),
+ PT(58, 55, 6, 0, FALSE),
+ PT(29, 54, 2, 2, TRUE),
+ PT(41, 46, 3, 2, TRUE),
+ PT(50, 46, 4, 1, TRUE),
+ PT(53, 23, 3, 2, FALSE),
+ PT(54, 29, 2, 1, TRUE),
+ PT(35, 52, 6, 2, FALSE),
+ PT(36, 26, 6, 3, TRUE),
+ PT(47, 38, 5, 3, FALSE),
+ PT(30, 23, 3, 1, FALSE),
+ PT(31, 21, 3, 3, TRUE),
+ PT(43, 31, 3, 0, TRUE),
+ PT(10, 51, 3, 1, FALSE),
+ PT(53, 49, 4, 2, FALSE),
+ PT(45, 23, 5, 2, FALSE),
+ PT(12, 33, 6, 3, FALSE),
+ PT(44, 53, 6, 2, TRUE),
+ PT(27, 3, 4, 3, TRUE),
+ PT( 1, 13, 3, 2, TRUE),
+ PT(28, 14, 2, 0, TRUE),
+ PT(17, 43, 2, 0, FALSE),
+ PT(37, 59, 4, 0, FALSE),
+ PT(31, 23, 3, 0, TRUE),
+ PT(32, 8, 6, 3, FALSE),
+ PT(19, 56, 3, 0, TRUE),
+ PT(27, 43, 4, 2, FALSE),
+ PT(11, 31, 5, 0, TRUE),
+ PT(39, 21, 5, 2, FALSE),
+ PT(55, 57, 2, 0, FALSE),
+ PT(58, 21, 5, 3, FALSE),
+ PT(47, 17, 6, 3, FALSE),
+ PT(36, 4, 4, 0, FALSE),
+ PT(59, 42, 6, 2, TRUE),
+ PT(39, 53, 6, 2, FALSE),
+ PT(13, 27, 4, 0, FALSE),
+ PT(16, 34, 6, 3, TRUE),
+ PT(31, 56, 4, 3, TRUE),
+ PT(49, 15, 5, 0, FALSE),
+ PT(40, 37, 2, 2, TRUE),
+ PT( 0, 29, 4, 2, TRUE),
+ PT(49, 40, 5, 0, FALSE),
+ PT(11, 58, 3, 2, TRUE),
+ PT(45, 19, 3, 1, TRUE),
+ PT( 3, 55, 5, 3, FALSE),
+ PT(29, 40, 3, 0, TRUE),
+ PT( 8, 45, 4, 1, FALSE),
+ PT(39, 57, 6, 1, FALSE),
+ PT(63, 47, 3, 2, TRUE),
+ PT(51, 52, 5, 0, FALSE),
+ PT(24, 8, 6, 0, TRUE),
+ PT(35, 31, 2, 1, TRUE),
+ PT(13, 44, 4, 1, TRUE),
+ PT(58, 45, 3, 1, FALSE),
+ PT( 2, 37, 2, 1, TRUE),
+ PT(32, 54, 6, 2, FALSE),
+ PT(18, 43, 5, 2, TRUE),
+ PT(53, 53, 6, 2, FALSE),
+ PT(35, 32, 4, 0, TRUE),
+ PT(58, 25, 3, 1, TRUE),
+ PT(31, 43, 3, 0, TRUE),
+ PT(53, 14, 3, 0, TRUE),
+ PT(38, 36, 6, 3, TRUE),
+ PT(24, 8, 2, 0, FALSE),
+ PT(12, 22, 5, 2, TRUE),
+ PT(31, 52, 4, 0, TRUE),
+ PT( 5, 56, 3, 0, TRUE),
+ PT(20, 33, 4, 2, FALSE),
+ PT(17, 49, 2, 2, FALSE),
+ PT(62, 56, 5, 0, TRUE),
+ PT(63, 8, 4, 2, TRUE),
+ PT(42, 31, 4, 2, TRUE),
+ PT(37, 6, 5, 0, FALSE),
+ PT(11, 30, 2, 2, FALSE),
+ PT(26, 56, 4, 1, FALSE),
+ PT(36, 24, 5, 0, TRUE),
+ PT(26, 17, 4, 0, FALSE),
+ PT(59, 58, 3, 3, FALSE),
+ PT(28, 38, 3, 1, FALSE),
+ PT( 5, 50, 3, 0, TRUE),
+ PT(57, 42, 6, 0, TRUE),
+ PT( 9, 7, 4, 2, TRUE),
+ PT( 5, 62, 2, 3, FALSE),
+ PT(52, 38, 2, 2, FALSE),
+ PT(27, 50, 4, 3, FALSE),
+ PT( 5, 8, 6, 3, TRUE),
+ PT(15, 3, 4, 0, FALSE),
+ PT(42, 57, 6, 0, TRUE),
+ PT( 8, 1, 3, 3, FALSE),
+ PT(29, 35, 6, 0, TRUE),
+ PT(40, 27, 5, 0, FALSE),
+ PT(30, 55, 2, 2, FALSE),
+ PT(19, 14, 5, 0, FALSE),
+ PT(42, 59, 6, 3, TRUE),
+ PT(47, 28, 5, 0, FALSE),
+ PT(48, 48, 3, 1, FALSE),
+ PT(54, 31, 2, 3, FALSE),
+ PT(62, 13, 2, 2, TRUE),
+ PT(46, 22, 3, 0, FALSE),
+ PT(21, 55, 4, 0, FALSE),
+ PT(42, 51, 6, 0, FALSE),
+ PT(43, 14, 4, 2, TRUE),
+ PT(24, 32, 2, 3, FALSE),
+ PT( 2, 25, 4, 2, TRUE),
+ PT(10, 46, 6, 0, FALSE),
+ PT(22, 3, 2, 0, TRUE),
+ PT( 4, 39, 4, 2, TRUE),
+ PT(27, 28, 4, 0, TRUE),
+ PT(41, 4, 4, 3, TRUE),
+ PT(61, 32, 3, 3, FALSE),
+ PT(40, 51, 6, 0, TRUE),
+ PT(30, 57, 2, 0, FALSE),
+ PT(49, 41, 3, 3, FALSE),
+ PT( 6, 37, 5, 0, FALSE),
+ PT(25, 59, 2, 1, FALSE),
+ PT(11, 27, 3, 2, FALSE),
+ PT(62, 55, 4, 0, FALSE),
+ PT(10, 55, 6, 1, TRUE),
+ PT( 2, 44, 4, 2, TRUE),
+ PT(21, 24, 2, 2, FALSE),
+ PT(59, 32, 3, 2, FALSE),
+ PT(34, 59, 3, 2, FALSE),
+ PT(36, 52, 6, 2, TRUE),
+ PT(15, 47, 6, 0, TRUE),
+ PT(59, 23, 6, 2, TRUE),
+ PT(48, 57, 6, 3, TRUE),
+ PT(13, 21, 2, 0, TRUE),
+ PT(16, 3, 3, 3, FALSE),
+ PT(26, 57, 6, 1, TRUE),
+ PT(47, 46, 5, 0, FALSE),
+ PT(28, 40, 6, 3, FALSE),
+ PT(40, 24, 3, 3, TRUE),
+ PT(21, 1, 6, 0, FALSE),
+ PT(62, 50, 5, 0, FALSE),
+ PT(52, 47, 4, 1, TRUE),
+ PT( 7, 12, 6, 3, FALSE),
+ PT(40, 44, 6, 2, FALSE),
+ PT(42, 12, 3, 3, TRUE),
+ PT(63, 32, 2, 1, TRUE),
+ PT(43, 23, 4, 3, TRUE),
+ PT(40, 41, 5, 1, FALSE),
+ PT(60, 19, 6, 3, FALSE),
+ PT(38, 45, 5, 1, FALSE),
+ PT(10, 6, 3, 3, FALSE),
+ PT(32, 4, 3, 1, FALSE),
+ PT( 2, 7, 6, 2, TRUE),
+ PT(14, 24, 6, 0, FALSE),
+ PT( 0, 52, 6, 2, FALSE),
+ PT(47, 20, 6, 3, TRUE),
+ PT(33, 48, 3, 3, TRUE),
+ PT(21, 55, 3, 1, TRUE),
+ PT(58, 11, 6, 1, FALSE),
+ PT(34, 34, 4, 0, TRUE),
+ PT(27, 53, 4, 1, TRUE),
+ PT(13, 3, 3, 2, FALSE),
+ PT(35, 59, 2, 1, TRUE),
+ PT(14, 29, 3, 3, TRUE),
+ PT(29, 63, 5, 3, FALSE),
+ PT(57, 39, 5, 3, FALSE),
+ PT(15, 56, 4, 0, FALSE),
+ PT(49, 60, 6, 2, TRUE),
+ PT(11, 15, 5, 3, FALSE),
+ PT( 6, 6, 5, 0, FALSE),
+ PT(37, 57, 4, 1, TRUE),
+ PT(10, 50, 2, 2, TRUE),
+ PT(15, 29, 4, 2, TRUE),
+ PT(12, 13, 6, 2, FALSE),
+ PT(18, 46, 4, 0, TRUE),
+ PT(54, 24, 3, 3, TRUE),
+ PT(31, 52, 3, 1, TRUE),
+ PT( 5, 58, 6, 3, FALSE),
+ PT(43, 1, 2, 3, TRUE),
+ PT(14, 22, 5, 1, TRUE),
+ PT(14, 11, 4, 3, FALSE),
+ PT(13, 45, 2, 0, FALSE),
+ PT(33, 17, 4, 3, TRUE),
+ PT(61, 19, 6, 1, FALSE),
+ PT(21, 37, 5, 1, FALSE),
+ PT(27, 45, 6, 2, TRUE),
+ PT(44, 43, 4, 3, FALSE),
+ PT(38, 31, 4, 0, FALSE),
+ PT(34, 43, 2, 1, FALSE),
+ PT(63, 61, 4, 3, TRUE),
+ PT(48, 10, 6, 3, FALSE),
+ PT(53, 31, 2, 3, TRUE),
+ PT(33, 8, 5, 0, TRUE),
+ PT(29, 32, 6, 1, TRUE),
+ PT(52, 17, 2, 3, FALSE),
+ PT( 5, 56, 5, 2, TRUE),
+};
+
+#undef PT
diff --git a/src/data/text/contest_de.h b/src/data/text/contest_de.h
new file mode 100644
index 000000000..11940d943
--- /dev/null
+++ b/src/data/text/contest_de.h
@@ -0,0 +1,470 @@
+const u8 ContestString_DescHighlyAppealing[] = _("Eine sehr ansprechende\nVorführung.");
+const u8 ContestString_DescStartled1[] = _("Einsatz der Attacke macht\nPKMN leichter irritierbar.");
+const u8 ContestString_DescGreatLock[] = _("Großartiger Ausdruck, der\nsich nicht steigern lässt.");
+const u8 ContestString_DescRepeatable[] = _("Langweilt den JUROR auch\nbei Wiederholung nicht.");
+const u8 ContestString_DescStartled2[] = _("Kann Irritation durch\nandere einmal verhindern.");
+const u8 ContestString_DescStartled3[] = _("Kann Irritation durch\nandere verhindern.");
+const u8 ContestString_DescStartled4[] = _("Kann Irritation durch an-\ndere ein wenig eindämmen.");
+const u8 ContestString_DescStartled5[] = _("Einsatz der Attacke dämmt\ndanach Irritation ein.");
+const u8 ContestString_DescStartled6[] = _("Irritiert das vordere\nPOKéMON ein wenig.");
+const u8 ContestString_DescStartled7[] = _("Irritiert die POKéMON ein\nwenig, die schon auftraten.");
+const u8 ContestString_DescStartled8[] = _("Irritiert das POKéMON, das\nvorher aufgetreten ist.");
+const u8 ContestString_DescStartled9[] = _("Irritiert alle POKéMON,\ndie bisher auftraten.");
+const u8 ContestString_DescStartled10[] = _("Irritiert das vordere\nPOKéMON sehr stark.");
+const u8 ContestString_DescStartled11[] = _("Irritiert die POKéMON, die\nschon aufgetreten sind.");
+const u8 ContestString_DescStartled12[] = _("Irritiert das POKéMON, das\nvorher aufgetreten ist.");
+const u8 ContestString_DescStartled13[] = _("Irritiert alle POKéMON, die\nvorher aufgetreten sind.");
+const u8 ContestString_DescAttentionShift[] = _("Lenkt den JUROR von den\nanderen POKéMON ab.");
+const u8 ContestString_DescStartled14[] = _("Irritiert PKMN, bes. die,\nauf die der JUROR achtet.");
+const u8 ContestString_DescJamOthersMissTurn[] = _("Stört die anderen und An-\nwender setzt 1 Runde aus.");
+const u8 ContestString_DescStartled15[] = _("Irritiert PKMN, bes. die, die\nAusdruck gl. Typs zeigten.");
+const u8 ContestString_DescStartled16[] = _("Irritiert PKMN, die Ausdrck.\ndes Typs COOL vorführten.");
+const u8 ContestString_DescStartled17[] = _("Irritiert PKMN, die Ausdrck.\ndes Typs SCHÖN vorführten.");
+const u8 ContestString_DescStartled18[] = _("Irritiert PKMN, die Ausdrck.\ndes Typs ANMUT vorführten.");
+const u8 ContestString_DescStartled19[] = _("Irritiert PKMN, die Ausdrck.\ndes Typs KLUG vorführten.");
+const u8 ContestString_DescStartled20[] = _("Irritiert PKMN, die Ausdrck.\ndes Typs STARK vorführten.");
+
+const u8 ContestString_DescNervousOne[] = _("Macht nachfolgendes\nPOKéMON nervös.");
+
+const u8 ContestString_DescNervousAllAfter[] = _("Macht alle nachfolgenden\nPOKéMON nervös.");
+
+const u8 ContestString_DescConditionWorseBefore[] = _("Schwächt Kondition der\nPKMN, die bisher auftraten.");
+
+const u8 ContestString_DescStartled21[] = _("Irritiert POKéMON, die eine\ngute Kondition haben.");
+const u8 ContestString_DescGreatWhenFirst[] = _("Ausdruck gelingt sehr gut,\nwenn als Erster vorgeführt.");
+const u8 ContestString_DescGreatWhenLast[] = _("Ausdruck gelingt sehr gut,\nwenn zuletzt vorgeführt.");
+const u8 ContestString_DescAppealGoodBeforeAll[] = _("Ausdruck gelingt so gut\nwie die der Vorgänger.");
+const u8 ContestString_DescAppealGoodBeforeOne[] = _("Ausdruck gelingt so gut\nwie der des Vorgängers.");
+const u8 ContestString_DescBetterWhenLater[] = _("Je später der Auftritt,\ndesto besser der Ausdruck.");
+const u8 ContestString_DescAffectedByTiming[] = _("Die Qualität des Ausdrucks\nhängt vom Timing ab.");
+const u8 ContestString_DescBetterWhenSameType[] = _("Gelingt gut, wenn vom\nselben Typ wie der vorige.");
+const u8 ContestString_DescBetterWhenDiffType[] = _("Gelingt gut, wenn vom\nanderen Typ als der vorige.");
+const u8 ContestString_DescAffectedByFront[] = _("Hängt von Qualität des Aus-\ndrucks des Vorgängers ab.");
+const u8 ContestString_DescConditionUp[] = _("Verbessert die Kondition\nund verhindert Nervosität.");
+const u8 ContestString_DescAffectedByCondition[] = _("Ausdruck gelingt gut, wenn\nKondition des PKMN gut ist.");
+const u8 ContestString_DescAppealEarlier[] = _("Der nächste Ausdruck kann\nfrüher vorgeführt werden.");
+const u8 ContestString_DescAppealLater[] = _("Der nächste Ausdruck kann\nspäter vorgeführt werden.");
+const u8 ContestString_DescRandomOrderEasier[] = _("Ändert die Reihenfolge der\nnächst. Auftritte leichter.");
+const u8 ContestString_DescRandomOrder[] = _("Ändert die Reihenfolge der\nnächsten Auftritte.");
+const u8 ContestString_DescAnyExcitement[] = _("Verzückt das Publikum in \njedem WETTBEWERB.");
+const u8 ContestString_DescStartled22[] = _("Irritiert alle POKéMON,\nderen Ausdruck gut war.");
+const u8 ContestString_DescScaleWithExcitement[] = _("Gelingt am besten, wenn\ndas Publikum gespannt ist.");
+const u8 ContestString_DescStopExcitement[] = _("Bremst zeitweise Begeis-\nterung des Publikums.");
+
+const u8 *const gContestEffectStrings[] = {
+ ContestString_DescHighlyAppealing,
+ ContestString_DescStartled1,
+ ContestString_DescGreatLock,
+ ContestString_DescRepeatable,
+ ContestString_DescStartled2,
+ ContestString_DescStartled3,
+ ContestString_DescStartled4,
+ ContestString_DescStartled5,
+ ContestString_DescStartled6,
+ ContestString_DescStartled7,
+ ContestString_DescStartled8,
+ ContestString_DescStartled9,
+ ContestString_DescStartled10,
+ ContestString_DescStartled11,
+ ContestString_DescStartled12,
+ ContestString_DescStartled13,
+ ContestString_DescAttentionShift,
+ ContestString_DescStartled14,
+ ContestString_DescJamOthersMissTurn,
+ ContestString_DescStartled15,
+ ContestString_DescStartled16,
+ ContestString_DescStartled17,
+ ContestString_DescStartled18,
+ ContestString_DescStartled19,
+ ContestString_DescStartled20,
+ ContestString_DescNervousOne,
+ ContestString_DescNervousAllAfter,
+ ContestString_DescConditionWorseBefore,
+ ContestString_DescStartled21,
+ ContestString_DescGreatWhenFirst,
+ ContestString_DescGreatWhenLast,
+ ContestString_DescAppealGoodBeforeAll,
+ ContestString_DescAppealGoodBeforeOne,
+ ContestString_DescBetterWhenLater,
+ ContestString_DescAffectedByTiming,
+ ContestString_DescBetterWhenSameType,
+ ContestString_DescBetterWhenDiffType,
+ ContestString_DescAffectedByFront,
+ ContestString_DescConditionUp,
+ ContestString_DescAffectedByCondition,
+ ContestString_DescAppealEarlier,
+ ContestString_DescAppealLater,
+ ContestString_DescRandomOrderEasier,
+ ContestString_DescRandomOrder,
+ ContestString_DescAnyExcitement,
+ ContestString_DescStartled22,
+ ContestString_DescScaleWithExcitement,
+ ContestString_DescStopExcitement,
+};
+
+const u8 ContestString_MoveRainDance[] = _("REGENTANZ");
+const u8 ContestString_MoveRage[] = _("RASEREI");
+const u8 ContestString_MoveFocusEnergy[] = _("ENERGIEFOKUS");
+const u8 ContestString_MoveHypnosis[] = _("HYPNOSE");
+const u8 ContestString_MoveSoftboiled[] = _("WEICHEI");
+const u8 ContestString_MoveHornAttack[] = _("HORNATTACKE");
+const u8 ContestString_MoveSwordsDance[] = _("SCHWERTTANZ");
+const u8 ContestString_MoveConversion[] = _("UMWANDLUNG");
+const u8 ContestString_MoveSunnyDay[] = _("SONNENTAG");
+const u8 ContestString_MoveRest[] = _("ERHOLUNG");
+const u8 ContestString_MoveVicegrip[] = _("KLAMMER");
+const u8 ContestString_MoveDefenseCurl[] = _("EINIGLER");
+const u8 ContestString_MoveLockOn[] = _("ZIELSCHUSS");
+
+const u8 *const gContestStrings_UnreferencedTable1[] = {
+ ContestString_MoveRainDance,
+ ContestString_MoveRainDance,
+ ContestString_MoveRage,
+ ContestString_MoveFocusEnergy,
+ ContestString_MoveHypnosis,
+ ContestString_MoveSoftboiled,
+ ContestString_MoveHornAttack,
+ ContestString_MoveSwordsDance,
+ ContestString_MoveConversion,
+ ContestString_MoveSunnyDay,
+ ContestString_MoveRest,
+ ContestString_MoveVicegrip,
+ ContestString_MoveDefenseCurl,
+ ContestString_MoveLockOn,
+};
+
+const u8 ContestString_Cool[] = _("COOL.");
+const u8 ContestString_Beauty[] = _("SCHÖN.");
+const u8 ContestString_Cute[] = _("ANMUT");
+const u8 ContestString_Smart[] = _("KLUG.");
+const u8 ContestString_Tough[] = _("STÄRKE");
+
+const u8 *const gContestCategoryNames[] = {
+ ContestString_Cool,
+ ContestString_Beauty,
+ ContestString_Cute,
+ ContestString_Smart,
+ ContestString_Tough,
+};
+
+const u8 gText_Contest_WhichMoveWillBePlayed[] = _("Ausdruck {NAME_END}! Welche\nAttacke wird gezeigt?");
+
+const u8 gText_Contest_ButItCantParticipate[] = _("Ausdruck {NAME_END}! Aber es\nkann nicht teilnehmen!");
+
+const u8 gText_MonAppealedWithMove[] = _("{STR_VAR_1} führt\n{STR_VAR_2} vor!");
+
+const u8 gText_OtherPokemonMadeMoves[] = _("Die anderen POKéMON\nzeigten ihre Attacken!");
+
+const u8 gText_MonWasWatchingOthers[] = _("{STR_VAR_1} beobachtet\ndie anderen.{PAUSE 60}");
+
+const u8 gText_AllOutOfAppealTime[] = _("Soweit zur\nAusdruckskraft!{PAUSE 60}");
+const u8 gText_Strvar1sStrvar3Move[] = _("{STR_VAR_3}-\nAtt. {STR_VAR_2}\nvon {STR_VAR_1}!");
+const u8 gText_TRICK[] = _("TRICK");
+const u8 gText_SPECIAL[] = _("SPEZIAL");
+
+const u8 ContestString_AppealJammed[] = _("Der Auftritt\nwurde gestört.");
+const u8 ContestString_FollowLead[] = _("Es folgte einem\nanderen POKéMON.");
+const u8 ContestString_MessedUp[] = _("Es scheiterte.");
+const u8 ContestString_BetterUsual[] = _("Das lief besser\nals sonst.");
+const u8 ContestString_JudgeLookAway[] = _("Der JUROR war\nirgendwie abgelenkt.");
+const u8 ContestString_WorkHard[] = _("Es strengte sich an,\nFehler auszubügeln.");
+const u8 ContestString_NoMoreMoves[] = _("Es kann keine Attacken\nmehr ausführen.");
+const u8 ContestString_WorkReallyWell[] = _("Das lief unheimlich gut.");
+const u8 ContestString_WorkHardStandout[] = _("Es strengte sich genauso\nwie das beste POKéMON an.");
+const u8 ContestString_JudgeExpectantly[] = _("Der JUROR schaute es\nbesonders aufmerksam an.");
+const u8 ContestString_WorkRatherWell[] = _("Das lief bedeutend\nbesser.");
+const u8 ContestString_WorkBetter[] = _("Es lief etwas besser\nals sonst.");
+
+const u8 *const gContestStrings_UnreferencedTable2[] = {
+ ContestString_AppealJammed,
+ ContestString_FollowLead,
+ ContestString_MessedUp,
+ ContestString_BetterUsual,
+ ContestString_BetterUsual,
+ ContestString_JudgeLookAway,
+ ContestString_WorkHard,
+ ContestString_NoMoreMoves,
+ ContestString_WorkReallyWell,
+ ContestString_WorkHardStandout,
+ ContestString_JudgeExpectantly,
+ ContestString_WorkRatherWell,
+ ContestString_WorkBetter,
+};
+
+const u8 ContestString_StandOutNone[] = _("{STR_VAR_1} stach\nüberhaupt nicht hervor...{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutNotMuch[] = _("{STR_VAR_1} stach nicht\nbesonders hervor...{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutLittle[] = _("{STR_VAR_1} erregte ein\nwenig Aufmerksamkeit.{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutLot[] = _("{STR_VAR_1} erregte eine\nMenge Aufmerksamkeit.{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutTotal[] = _("{STR_VAR_1} erhielt die\nvolle Aufmerksamkeit.{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutDidnt[] = _("{STR_VAR_1} konnte\nkeinen Ausdruck zeigen.{PAUSE_UNTIL_PRESS}");
+
+const u8 *const gContestStandOutStrings[] = {
+ ContestString_StandOutNone,
+ ContestString_StandOutNotMuch,
+ ContestString_StandOutLittle,
+ ContestString_StandOutLot,
+ ContestString_StandOutTotal,
+ ContestString_StandOutDidnt,
+};
+
+const u8 ContestString_AppealAnticipation3[] = _("Heiß ersehnt: Der Aus-\ndruck von {STR_VAR_1}.");
+const u8 ContestString_JudgeSatisfied[] = _("Der JUROR war sehr\nzufrieden.");
+const u8 ContestString_Terminator[] = _("");
+const u8 ContestString_JudgeHeldFirm[] = _("Der JUROR behält\n{STR_VAR_1} fest im Blick.");
+const u8 ContestString_ChangedPerceptions[] = _("{STR_VAR_3} von {STR_VAR_1}\nändert die Wahrnehmung.");
+const u8 ContestString_AppealWoreOff[] = _("Wirkung von {STR_VAR_1}\nlässt nach.");
+const u8 ContestString_AppealWoreOff2[] = _("Die besondere Wirkung\nlässt nach.");
+const u8 ContestString_AppealLookSame[] = _("Jeder Ausdruck wird sich\nnun gleichen.");
+const u8 ContestString_AppealCheapened[] = _("Ausdruck von {STR_VAR_2}\nwurde abgewertet.");
+const u8 ContestString_AppealCheapened2[] = _("Es wertete die Ausdrücke\nder anderen PKMN ab.");
+const u8 ContestString_AppealAttentionStolen[] = _("Es stahl {STR_VAR_2} die\nAufmerksamkeit.");
+const u8 ContestString_AppealCheapened3[] = _("Es wertete Ausdruck\nvon {STR_VAR_2} ab.");
+const u8 ContestString_AppealCheapened4[] = _("Es wertete die Ausdrücke\nder anderen stark ab.");
+const u8 ContestString_AppealAnticipation[] = _("Alle warten sehnsüchtig\nauf {STR_VAR_1}.");
+const u8 ContestString_AppealCheapened5[] = _("Es wertete den Ausdruck\nder PKMN vor ihm ab.");
+const u8 ContestString_AppealCheapened6[] = _("Es wertete den Lieblings-\nausdruck des JURORS ab.");
+const u8 ContestString_AppealCheapened7[] = _("Der Ausdruckswert der\nanderen wurde halbiert.");
+const u8 ContestString_JammedStoodOut[] = _("Es macht sich bereit, die\nanderen zu beeindrucken.");
+const u8 ContestString_AppealNoMore[] = _("Es kann an keiner Vor-\nführung mehr teilnehmen.");
+const u8 ContestString_AppealTouched[] = _("Der fantastische Aus-\ndruck berührte den JUROR.");
+const u8 ContestString_AppealAnticipation2[] = _("Die Erwartung für die fol-\ngenden Ausdrücke steigt.");
+const u8 ContestString_AppealStoodOut2[] = _("Es war so beeindruckend\nwie ein Spezialausdruck.");
+const u8 ContestString_AppealStoodOut3[] = _("Es war so beeindruckend\nwie {STR_VAR_1}.");
+const u8 ContestString_JammedAppealsNotice[] = _("Ein Ausdruck, der gestört\nwurde, ist unauffälliger.");
+const u8 ContestString_AppealSame[] = _("Jeder Teilnehmer hat nun\nden gleichen Ausdruck.");
+const u8 ContestString_AppealFullWorse[] = _("{STR_VAR_1} ist voll. Der\nAusdruck wird schlechter.");
+
+const u8 *const gContestString_UnreferencedPtrTable3[] = {
+ ContestString_JudgeHeldFirm,
+ ContestString_ChangedPerceptions,
+ ContestString_Terminator,
+ ContestString_AppealWoreOff,
+ ContestString_AppealWoreOff2,
+ ContestString_AppealLookSame,
+ ContestString_AppealCheapened,
+ ContestString_AppealCheapened2,
+ ContestString_AppealAttentionStolen,
+ ContestString_AppealCheapened3,
+ ContestString_AppealCheapened4,
+ ContestString_AppealAnticipation,
+ ContestString_AppealCheapened5,
+ ContestString_AppealCheapened6,
+ ContestString_AppealCheapened7,
+ ContestString_JammedStoodOut,
+ ContestString_AppealNoMore,
+ ContestString_AppealTouched,
+ ContestString_AppealAnticipation2,
+ ContestString_AppealStoodOut2,
+ ContestString_AppealStoodOut3,
+ ContestString_Terminator,
+ ContestString_Terminator,
+ ContestString_Terminator,
+ ContestString_JammedAppealsNotice,
+ ContestString_AppealSame,
+};
+
+const u8 ContestString_MoreConscious[] = _("Es wird sich der anderen\nPKMN mehr bewusst.{PAUSE 60}");
+const u8 ContestString_NoAppeal[] = _("{STR_VAR_1} kann danach\nkeinen Ausdruck zeigen.{PAUSE 60}");
+const u8 ContestString_SettleDown[] = _("Es kommt ein wenig\nzur Ruhe.{PAUSE 60}");
+const u8 ContestString_ObliviousToOthers[] = _("Die anderen PKMN nehmen\nes überhaupt nicht wahr.{PAUSE 60}");
+const u8 ContestString_LessAware[] = _("Es ist sich der anderen\nPKMN kaum bewusst.{PAUSE 60}");
+const u8 ContestString_StoppedCaring[] = _("Es kümmert sich nicht\nmehr viel um andere PKMN.{PAUSE 60}");
+const u8 ContestString_StartleAttempt[] = _("Es versucht, die anderen\nPKMN zu erschrecken.{PAUSE 60}");
+const u8 ContestString_DazzleAttempt[] = _("Es versucht, die anderen\nPKMN zu blenden.{PAUSE 60}");
+const u8 ContestString_JudgeLookAway2[] = _("Der JUROR schaut\n{STR_VAR_1} nicht mehr an.{PAUSE 60}");
+const u8 ContestString_UnnerveAttempt[] = _("Es versucht, die folgenden\nPKMN zu entnerven.{PAUSE 60}");
+const u8 ContestString_Nervous[] = _("{STR_VAR_1} wird\nnervös.{PAUSE 60}");
+const u8 ContestString_UnnerveWaiting[] = _("Dieser Ausdruck soll die\nanderen PKMN entnerven.{PAUSE 60}");
+const u8 ContestString_TauntWell[] = _("Es verhöhnt die\nbesseren PKMN.{PAUSE 60}");
+const u8 ContestString_RegainedForm[] = _("{STR_VAR_1} findet zu\nseiner Form zurück.{PAUSE 60}");
+const u8 ContestString_JamWell[] = _("Es versucht, die besseren\nPKMN zu beeindrucken.{PAUSE 60}");
+const u8 ContestString_HustleStandout[] = _("{STR_VAR_1} an der Spitze\nengagiert sich noch mehr.{PAUSE 60}");
+const u8 ContestString_WorkHardUnnoticed[] = _("Das bisher unauffällige\n{STR_VAR_1} gibt alles.");
+const u8 ContestString_WorkBefore[] = _("Es strengt sich genauso\nan wie die PKMN vor ihm.{PAUSE 60}");
+const u8 ContestString_AppealNotWell[] = _("Ausdruck von {STR_VAR_1}:\nKam nicht gut an.{PAUSE 60}");
+const u8 ContestString_WorkPreceding[] = _("Es strengt sich an wie die\nvorangegangenen PKMN.{PAUSE 60}");
+const u8 ContestString_AppealNotWell2[] = _("Ausdruck von {STR_VAR_1}:\nVerlief nicht so gut.{PAUSE 60}");
+const u8 ContestString_AppealNotShownWell[] = _("Ausdruck v. {STR_VAR_1}: \nWurde gestört.{PAUSE 60}");
+const u8 ContestString_AppealSlightlyWell[] = _("Ausdruck von {STR_VAR_1}:\nVerlief ganz gut.{PAUSE 60}");
+const u8 ContestString_AppealPrettyWell[] = _("Ausdruck von {STR_VAR_1}:\nKam ganz gut an.{PAUSE 60}");
+const u8 ContestString_AppealExcellently[] = _("{STR_VAR_1} führte seinen\nAusdruck exzellent vor.{PAUSE 60}");
+const u8 ContestString_AppealDud[] = _("Ausdruck von {STR_VAR_1}:\nEr war absolut mies.{PAUSE 60}");
+const u8 ContestString_AppealNotVeryWell[] = _("Ausdruck von {STR_VAR_1}:\nEr war nicht so gut.{PAUSE 60}");
+const u8 ContestString_AppealSlightlyWell2[] = _("Ausdruck von {STR_VAR_1}:\nEr war nicht schlecht.{PAUSE 60}");
+const u8 ContestString_AppealPrettyWell2[] = _("Ausdruck von {STR_VAR_1}:\nEr war recht gut.{PAUSE 60}");
+const u8 ContestString_AppealVeryWell[] = _("Ausdruck von {STR_VAR_1}:\nEr war sehr gut.{PAUSE 60}");
+const u8 ContestString_AppealExcellently2[] = _("Ausdruck von {STR_VAR_1}:\nEr war exzellent.{PAUSE 60}");
+const u8 ContestString_SameTypeGood[] = _("Der gleiche Typ wie das\nvorhergehende PKMN - gut!{PAUSE 60}");
+const u8 ContestString_DiffTypeGood[] = _("Nicht der gleiche Typ wie\ndas vorherige PKMN - gut!{PAUSE 60}");
+const u8 ContestString_StoodOutAsMuch[] = _("Es ist viel besser als die\nvorhergehenden PKMN.{PAUSE 60}");
+const u8 ContestString_NotAsWell[] = _("Es war nicht so gut wie\ndas PKMN vor ihm.{PAUSE 60}");
+const u8 ContestString_ConditionRose[] = _("Die Kondition von\n{STR_VAR_1} stieg.{PAUSE 60}");
+const u8 ContestString_HotStatus[] = _("Status von {STR_VAR_1}:\nBewirkt guten Ausdruck!{PAUSE 60}");
+const u8 ContestString_MoveUpLine[] = _("Es steigt in der Reihen-\nfolge auf.{PAUSE 60}");
+const u8 ContestString_MoveBackLine[] = _("Es fällt in der Reihen-\nfolge zurück.{PAUSE 60}");
+const u8 ContestString_ScrambleOrder[] = _("Es bringt die Reihenfolge\ndurcheinander.{PAUSE 60}");
+
+const u8 ContestString_JudgeExpectantly2[] = _("Der JUROR betrachtet\n{STR_VAR_1} interessiert.{PAUSE 60}");
+
+const u8 ContestString_WentOverWell[] = _("Die Combo der Ausdrücke\nkam gut an.{PAUSE 60}");
+
+const u8 ContestString_WentOverVeryWell[] = _("Die Combo der Ausdrücke\nkam sehr gut an.{PAUSE 60}");
+
+const u8 ContestString_AppealComboExcellently[] = _("Die Combo der Ausdrücke\nkam exzellent an.{PAUSE 60}");
+const u8 ContestString_AvertGaze[] = _("{STR_VAR_1} gelingt es,\nden Blick abzuwenden.{PAUSE 60}");
+const u8 ContestString_AvoidSeeing[] = _("{STR_VAR_1} wandte den\nBlick erfolgreich ab.{PAUSE 60}");
+const u8 ContestString_NotFazed[] = _("{STR_VAR_1} lässt sich\ndavon nicht ablenken.{PAUSE 60}");
+const u8 ContestString_LittleDistracted[] = _("{STR_VAR_1} wurde etwas\nunruhig.{PAUSE 60}");
+const u8 ContestString_AttemptStartle[] = _("Es versucht, die anderen\nPKMN zu verschrecken.{PAUSE 60}");
+const u8 ContestString_LookedDown[] = _("{STR_VAR_1} blickt\nirritiert zu Boden.{PAUSE 60}");
+const u8 ContestString_TurnedBack[] = _("{STR_VAR_1} dreht sich\nirritiert um.{PAUSE 60}");
+const u8 ContestString_UtterCry[] = _("{STR_VAR_1} kann einen \nLaut nicht unterdrücken.{PAUSE 60}");
+const u8 ContestString_LeaptUp[] = _("{STR_VAR_1} kann nicht\nanders und springt auf.{PAUSE 60}");
+const u8 ContestString_TrippedOver[] = _("{STR_VAR_1} ist so irri-\ntiert, dass es stolpert.{PAUSE 60}");
+
+const u8 ContestString_TooNervous[] = _("{STR_VAR_1} ist zu nervös,\num etwas vorzuführen.{PAUSE 60}");
+const u8 ContestString_MessedUp2[] = _("Es hatte keinen Erfolg.{PAUSE 60}");
+const u8 ContestString_FailedTargetNervous[] = _("Es konnte keine\nNervosität erzeugen.{PAUSE 60}");
+const u8 ContestString_FailedAnyoneNervous[] = _("Aber es konnte niemanden\nnervös machen.{PAUSE 60}");
+const u8 ContestString_Ignored[] = _("Es wurde ignoriert...{PAUSE 60}");
+const u8 ContestString_NoConditionImprove[] = _("Es konnte seinen Aus-\ndruck nicht verstärken...{PAUSE 60}");
+const u8 ContestString_BadConditionWeakAppeal[] = _("Schwacher Ausdruck we-\ngen schlechter Konditon.{PAUSE 60}");
+const u8 ContestString_Unaffected[] = _("{STR_VAR_1} blieb\nunbeeindruckt.{PAUSE 60}");
+
+const u8 ContestString_DissapointedRepeat[] = _("{STR_VAR_1} enttäuscht\ndurch Wiederholung.{PAUSE 60}");
+
+const u8 ContestString_WentOverGreat[] = _("Die {STR_VAR_3} von\n{STR_VAR_1} war sehr gut.{PAUSE 60}");
+
+const u8 ContestString_DidntGoWell[] = _("Die {STR_VAR_3} von\n{STR_VAR_1} war nicht gut.{PAUSE 60}");
+
+const u8 ContestString_GotCrowdGoing[] = _("{STR_VAR_1} begeistert\nPublikum mit {STR_VAR_3}.{PAUSE 60}");
+
+const u8 ContestString_CantAppealNextTurn[] = _("{STR_VAR_1} setzt in der \nfolgenden Runde aus.{PAUSE 60}");
+const u8 ContestString_AttractedAttention[] = _("Die Aufmerksamkeit des\nPublikums liegt auf ihm.{PAUSE 60}");
+
+const u8 ContestString_CrowdWatches[] = _("Das Publikum beobachtet\nweiterhin {STR_VAR_3}.{PAUSE 60}");
+
+const u8 ContestString_Ignored2[] = _("{STR_VAR_2} von\n{STR_VAR_1} ist ignoriert.{PAUSE 60}");
+
+const u8 *const gUnknown_083CC188[] = {
+ ContestString_MoreConscious,
+ ContestString_NoAppeal,
+ ContestString_SettleDown,
+ ContestString_ObliviousToOthers,
+ ContestString_LessAware,
+ ContestString_StoppedCaring,
+ ContestString_StartleAttempt,
+ ContestString_DazzleAttempt,
+ ContestString_JudgeLookAway2,
+ ContestString_UnnerveAttempt,
+ ContestString_Nervous,
+ ContestString_UnnerveWaiting,
+ ContestString_TauntWell,
+ ContestString_RegainedForm,
+ ContestString_JamWell,
+ ContestString_HustleStandout,
+ ContestString_WorkHardUnnoticed,
+ ContestString_WorkBefore,
+ ContestString_AppealNotWell,
+ ContestString_WorkPreceding,
+ ContestString_AppealNotWell2,
+ ContestString_AppealNotShownWell,
+ ContestString_AppealSlightlyWell,
+ ContestString_AppealPrettyWell,
+ ContestString_AppealExcellently,
+ ContestString_AppealDud,
+ ContestString_AppealNotVeryWell,
+ ContestString_AppealSlightlyWell2,
+ ContestString_AppealPrettyWell2,
+ ContestString_AppealVeryWell,
+ ContestString_AppealExcellently2,
+ ContestString_SameTypeGood,
+ ContestString_DiffTypeGood,
+ ContestString_StoodOutAsMuch,
+ ContestString_NotAsWell,
+ ContestString_ConditionRose,
+ ContestString_HotStatus,
+ ContestString_MoveUpLine,
+ ContestString_MoveBackLine,
+ ContestString_ScrambleOrder,
+ ContestString_JudgeExpectantly2,
+ ContestString_WentOverWell,
+ ContestString_WentOverVeryWell,
+ ContestString_AppealComboExcellently,
+ ContestString_AvertGaze,
+ ContestString_AvoidSeeing,
+ ContestString_NotFazed,
+ ContestString_LittleDistracted,
+ ContestString_AttemptStartle,
+ ContestString_LookedDown,
+ ContestString_TurnedBack,
+ ContestString_UtterCry,
+ ContestString_LeaptUp,
+ ContestString_TrippedOver,
+ ContestString_MessedUp2,
+ ContestString_FailedTargetNervous,
+ ContestString_FailedAnyoneNervous,
+ ContestString_Ignored,
+ ContestString_NoConditionImprove,
+ ContestString_BadConditionWeakAppeal,
+ ContestString_Unaffected,
+ ContestString_AttractedAttention,
+};
+
+const u8 gText_Contest_Shyness[] = _("Scheu");
+
+const u8 gText_Contest_Anxiety[] = _("Besorgnis");
+
+const u8 gText_Contest_Laziness[] = _("Faulheit");
+
+const u8 gText_Contest_Hesitancy[] = _("Zögern");
+
+const u8 gText_Contest_Fear[] = _("Furcht");
+
+const u8 ContestString_Coolness[] = _("Coolness");
+const u8 ContestString_Beauty2[] = _("Schönheit");
+const u8 ContestString_Cuteness[] = _("Anmut");
+const u8 ContestString_Smartness[] = _("Klugheit");
+const u8 ContestString_Toughness[] = _("Stärke");
+
+const u8 *const gContestCategoryStrings[] = {
+ ContestString_Coolness,
+ ContestString_Beauty2,
+ ContestString_Cuteness,
+ ContestString_Smartness,
+ ContestString_Toughness,
+};
+
+const u8 gUnknown_083CC2EC[] = _("SPANNUNG:");
+
+const u8 ContestString_CoolMove[] = _("COOLE Att.");
+
+const u8 ContestString_BeautyMove[] = _("SCHÖNE Att.");
+
+const u8 ContestString_CuteMove[] = _("ANMUT-Att.");
+
+const u8 ContestString_SmartMove[] = _("KLUGE Att.");
+
+const u8 ContestString_ToughMove[] = _("STARKE Att.");
+
+const u8 ContestString_UnknownMoveType[] = _("???");
+
+const u8 *const sInvalidContestMoveNames[] = {
+ ContestString_CoolMove,
+ ContestString_BeautyMove,
+ ContestString_CuteMove,
+ ContestString_SmartMove,
+ ContestString_ToughMove,
+ ContestString_UnknownMoveType,
+};
+
+// unused?
+const u8 ContestString_Rank[] = _("KLASSE");
+
+const u8 ContestString_HighlightTransparent_ColorMagenta[] = _("{HIGHLIGHT TRANSPARENT}{COLOR MAGENTA} ");
+
+const u8 gUnknownText_MissedTurn[] = _("Verpasste Chance");
+
+const u8 gUnknownText_LinkStandbyAndWinner[] = _("Verbindung...");
+const u8 gUnknownText_ColorWhite2[] = _("{COLOR WHITE2}");
+const u8 gUnknownText_LinkWinner[] = _("Der Sieger ist {STR_VAR_2} von\n{STR_VAR_1}! Herzlichen Glückwunsch!"); \ No newline at end of file
diff --git a/src/data/text/contest_en.h b/src/data/text/contest_en.h
new file mode 100644
index 000000000..39a4c9cff
--- /dev/null
+++ b/src/data/text/contest_en.h
@@ -0,0 +1,453 @@
+const u8 ContestString_DescHighlyAppealing[] = _("A highly appealing move.");
+const u8 ContestString_DescStartled1[] = _("After this move, the user is\nmore easily startled.");
+const u8 ContestString_DescGreatLock[] = _("Makes a great appeal, but\nallows no more to the end.");
+const u8 ContestString_DescRepeatable[] = _("Can be repeatedly used\nwithout boring the JUDGE.");
+const u8 ContestString_DescStartled2[] = _("Can avoid being startled\nby others once.");
+const u8 ContestString_DescStartled3[] = _("Can avoid being startled\nby others.");
+const u8 ContestString_DescStartled4[] = _("Can avoid being startled\nby others a little.");
+const u8 ContestString_DescStartled5[] = _("After this move, the user is\nless likely to be startled.");
+const u8 ContestString_DescStartled6[] = _("Slightly startles the\nPOKéMON in front.");
+const u8 ContestString_DescStartled7[] = _("Slightly startles those\nthat have made appeals.");
+const u8 ContestString_DescStartled8[] = _("Startles the POKéMON that\nappealed before the user.");
+const u8 ContestString_DescStartled9[] = _("Startles all POKéMON that\nhave done their appeals.");
+const u8 ContestString_DescStartled10[] = _("Badly startles the\nPOKéMON in front.");
+const u8 ContestString_DescStartled11[] = _("Badly startles those that\nhave made appeals.");
+const u8 ContestString_DescStartled12[] = _("Startles the POKéMON that\nappealed before the user.");
+const u8 ContestString_DescStartled13[] = _("Startles all POKéMON that\nappealed before the user.");
+const u8 ContestString_DescAttentionShift[] = _("Shifts the JUDGE's\nattention from others.");
+const u8 ContestString_DescStartled14[] = _("Startles the POKéMON that\nhas the JUDGE's attention.");
+const u8 ContestString_DescJamOthersMissTurn[] = _("Jams the others, and misses\none turn of appeals.");
+const u8 ContestString_DescStartled15[] = _("Startles POKéMON that\nmade a same-type appeal.");
+const u8 ContestString_DescStartled16[] = _("Badly startles POKéMON\nthat made COOL appeals.");
+const u8 ContestString_DescStartled17[] = _("Badly startles POKéMON\nthat made BEAUTY appeals.");
+const u8 ContestString_DescStartled18[] = _("Badly startles POKéMON\nthat made CUTE appeals.");
+const u8 ContestString_DescStartled19[] = _("Badly startles POKéMON\nthat made SMART appeals.");
+const u8 ContestString_DescStartled20[] = _("Badly startles POKéMON\nthat made TOUGH appeals.");
+const u8 ContestString_DescNervousOne[] = _("Makes one POKéMON after\nthe user nervous.");
+const u8 ContestString_DescNervousAllAfter[] = _("Makes all POKéMON after\nthe user nervous.");
+const u8 ContestString_DescConditionWorseBefore[] = _("Worsens the condition of\nthose that made appeals.");
+const u8 ContestString_DescStartled21[] = _("Badly startles POKéMON in\ngood condition.");
+const u8 ContestString_DescGreatWhenFirst[] = _("The appeal works great if\nperformed first.");
+const u8 ContestString_DescGreatWhenLast[] = _("The appeal works great if\nperformed last.");
+const u8 ContestString_DescAppealGoodBeforeAll[] = _("Makes the appeal as good\nas those before it.");
+const u8 ContestString_DescAppealGoodBeforeOne[] = _("Makes the appeal as good\nas the one before it.");
+const u8 ContestString_DescBetterWhenLater[] = _("The appeal works better\nthe later it is performed.");
+const u8 ContestString_DescAffectedByTiming[] = _("The appeal's quality varies\ndepending on its timing.");
+const u8 ContestString_DescBetterWhenSameType[] = _("Works well if it's the same\ntype as the one before.");
+const u8 ContestString_DescBetterWhenDiffType[] = _("Works well if different in\ntype than the one before.");
+const u8 ContestString_DescAffectedByFront[] = _("Affected by how well the\nappeal in front goes.");
+const u8 ContestString_DescConditionUp[] = _("Ups the user's condition.\nHelps prevent nervousness.");
+const u8 ContestString_DescAffectedByCondition[] = _("The appeal works well if the\nuser's condition is good.");
+const u8 ContestString_DescAppealEarlier[] = _("The next appeal can be made\nearlier next turn.");
+const u8 ContestString_DescAppealLater[] = _("The next appeal can be made\nlater next turn.");
+const u8 ContestString_DescRandomOrderEasier[] = _("Makes the next turn's order\nmore easily scrambled.");
+const u8 ContestString_DescRandomOrder[] = _("Scrambles the order of\nappeals on the next turn.");
+const u8 ContestString_DescAnyExcitement[] = _("An appeal that excites the\naudience in any CONTEST.");
+const u8 ContestString_DescStartled22[] = _("Badly startles all POKéMON\nthat made good appeals.");
+const u8 ContestString_DescScaleWithExcitement[] = _("The appeal works best the\nmore the crowd is excited.");
+const u8 ContestString_DescStopExcitement[] = _("Temporarily stops the\ncrowd from growing excited.");
+
+const u8 *const gContestEffectStrings[] = {
+ ContestString_DescHighlyAppealing,
+ ContestString_DescStartled1,
+ ContestString_DescGreatLock,
+ ContestString_DescRepeatable,
+ ContestString_DescStartled2,
+ ContestString_DescStartled3,
+ ContestString_DescStartled4,
+ ContestString_DescStartled5,
+ ContestString_DescStartled6,
+ ContestString_DescStartled7,
+ ContestString_DescStartled8,
+ ContestString_DescStartled9,
+ ContestString_DescStartled10,
+ ContestString_DescStartled11,
+ ContestString_DescStartled12,
+ ContestString_DescStartled13,
+ ContestString_DescAttentionShift,
+ ContestString_DescStartled14,
+ ContestString_DescJamOthersMissTurn,
+ ContestString_DescStartled15,
+ ContestString_DescStartled16,
+ ContestString_DescStartled17,
+ ContestString_DescStartled18,
+ ContestString_DescStartled19,
+ ContestString_DescStartled20,
+ ContestString_DescNervousOne,
+ ContestString_DescNervousAllAfter,
+ ContestString_DescConditionWorseBefore,
+ ContestString_DescStartled21,
+ ContestString_DescGreatWhenFirst,
+ ContestString_DescGreatWhenLast,
+ ContestString_DescAppealGoodBeforeAll,
+ ContestString_DescAppealGoodBeforeOne,
+ ContestString_DescBetterWhenLater,
+ ContestString_DescAffectedByTiming,
+ ContestString_DescBetterWhenSameType,
+ ContestString_DescBetterWhenDiffType,
+ ContestString_DescAffectedByFront,
+ ContestString_DescConditionUp,
+ ContestString_DescAffectedByCondition,
+ ContestString_DescAppealEarlier,
+ ContestString_DescAppealLater,
+ ContestString_DescRandomOrderEasier,
+ ContestString_DescRandomOrder,
+ ContestString_DescAnyExcitement,
+ ContestString_DescStartled22,
+ ContestString_DescScaleWithExcitement,
+ ContestString_DescStopExcitement,
+};
+
+const u8 ContestString_MoveRainDance[] = _("RAIN DANCE");
+const u8 ContestString_MoveRage[] = _("RAGE");
+const u8 ContestString_MoveFocusEnergy[] = _("FOCUS ENERGY");
+const u8 ContestString_MoveHypnosis[] = _("HYPNOSIS");
+const u8 ContestString_MoveSoftboiled[] = _("SOFTBOILED");
+const u8 ContestString_MoveHornAttack[] = _("HORN ATTACK");
+const u8 ContestString_MoveSwordsDance[] = _("SWORDS DANCE");
+const u8 ContestString_MoveConversion[] = _("CONVERSION");
+const u8 ContestString_MoveSunnyDay[] = _("SUNNY DAY");
+const u8 ContestString_MoveRest[] = _("REST");
+const u8 ContestString_MoveVicegrip[] = _("VICEGRIP");
+const u8 ContestString_MoveDefenseCurl[] = _("DEFENSE CURL");
+const u8 ContestString_MoveLockOn[] = _("LOCK-ON");
+
+const u8 *const gContestStrings_UnreferencedTable1[] = {
+ ContestString_MoveRainDance,
+ ContestString_MoveRainDance,
+ ContestString_MoveRage,
+ ContestString_MoveFocusEnergy,
+ ContestString_MoveHypnosis,
+ ContestString_MoveSoftboiled,
+ ContestString_MoveHornAttack,
+ ContestString_MoveSwordsDance,
+ ContestString_MoveConversion,
+ ContestString_MoveSunnyDay,
+ ContestString_MoveRest,
+ ContestString_MoveVicegrip,
+ ContestString_MoveDefenseCurl,
+ ContestString_MoveLockOn,
+};
+
+const u8 ContestString_Cool[] = _("COOL");
+const u8 ContestString_Beauty[] = _("BEAUTY");
+const u8 ContestString_Cute[] = _("CUTE");
+const u8 ContestString_Smart[] = _("SMART");
+const u8 ContestString_Tough[] = _("TOUGH");
+
+const u8 *const gContestCategoryNames[] = {
+ ContestString_Cool,
+ ContestString_Beauty,
+ ContestString_Cute,
+ ContestString_Smart,
+ ContestString_Tough,
+};
+
+const u8 gText_Contest_WhichMoveWillBePlayed[] = _("Appeal no. {NAME_END}!\nWhich move will be played?");
+
+const u8 gText_Contest_ButItCantParticipate[] = _("Appeal no. {NAME_END}!\nBut it can't participate!");
+
+const u8 gText_MonAppealedWithMove[] = _("{STR_VAR_1} appealed with\n{STR_VAR_2}!");
+
+const u8 gText_OtherPokemonMadeMoves[] = _("The other POKéMON\nmade moves.{PAUSE 60}");
+
+const u8 gText_MonWasWatchingOthers[] = _("{STR_VAR_1} was watching\nthe others.{PAUSE 60}");
+
+const u8 gText_AllOutOfAppealTime[] = _("We're all out of\nAppeal Time!{PAUSE 60}");
+const u8 gText_Strvar1sStrvar3Move[] = _("{STR_VAR_1}'s {STR_VAR_3}\nmove {STR_VAR_2}!{PAUSE 60}");
+const u8 gText_TRICK[] = _("TRICK");
+const u8 gText_SPECIAL[] = _("SPECIAL");
+const u8 ContestString_AppealJammed[] = _("But the appeal was\njammed.");
+const u8 ContestString_FollowLead[] = _("It followed another\nPOKéMON's lead.");
+const u8 ContestString_MessedUp[] = _("But it messed up.");
+const u8 ContestString_BetterUsual[] = _("It went better than\nusual.");
+const u8 ContestString_JudgeLookAway[] = _("The JUDGE looked away\nfor some reason.");
+const u8 ContestString_WorkHard[] = _("It worked hard to build on\npast mistakes.");
+const u8 ContestString_NoMoreMoves[] = _("It can't make any more\nmoves.");
+const u8 ContestString_WorkReallyWell[] = _("It worked frighteningly\nwell.");
+const u8 ContestString_WorkHardStandout[] = _("It worked as hard as the\nstandout POKéMON.");
+const u8 ContestString_JudgeExpectantly[] = _("The JUDGE looked on\nexpectantly.");
+const u8 ContestString_WorkRatherWell[] = _("It worked rather well.");
+const u8 ContestString_WorkBetter[] = _("It worked a little better\nthan usual.");
+
+const u8 *const gContestStrings_UnreferencedTable2[] = {
+ ContestString_AppealJammed,
+ ContestString_FollowLead,
+ ContestString_MessedUp,
+ ContestString_BetterUsual,
+ ContestString_BetterUsual,
+ ContestString_JudgeLookAway,
+ ContestString_WorkHard,
+ ContestString_NoMoreMoves,
+ ContestString_WorkReallyWell,
+ ContestString_WorkHardStandout,
+ ContestString_JudgeExpectantly,
+ ContestString_WorkRatherWell,
+ ContestString_WorkBetter,
+};
+
+const u8 ContestString_StandOutNone[] = _("{STR_VAR_1} failed to\nstand out at all...{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutNotMuch[] = _("{STR_VAR_1} didn't stand\nout very much...{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutLittle[] = _("{STR_VAR_1} caught a\nlittle attention.{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutLot[] = _("{STR_VAR_1} attracted a\nlot of attention.{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutTotal[] = _("{STR_VAR_1} commanded\ntotal attention.{PAUSE_UNTIL_PRESS}");
+const u8 ContestString_StandOutDidnt[] = _("{STR_VAR_1} hasn't made\nits appeal.{PAUSE_UNTIL_PRESS}");
+
+const u8 *const gContestStandOutStrings[] = {
+ ContestString_StandOutNone,
+ ContestString_StandOutNotMuch,
+ ContestString_StandOutLittle,
+ ContestString_StandOutLot,
+ ContestString_StandOutTotal,
+ ContestString_StandOutDidnt,
+};
+
+const u8 ContestString_AppealAnticipation3[] = _("Anticipation swelled for\n{STR_VAR_1}'s appeal next.");
+const u8 ContestString_JudgeSatisfied[] = _("The JUDGE was very\nsatisfied.");
+const u8 ContestString_Terminator[] = _("");
+const u8 ContestString_JudgeHeldFirm[] = _("The JUDGE 's views on\n{STR_VAR_1} held firm.");
+const u8 ContestString_ChangedPerceptions[] = _("{STR_VAR_1}'s {STR_VAR_3}\nchanged perceptions.");
+const u8 ContestString_AppealWoreOff[] = _("{STR_VAR_1}'s appeal\neffect wore off.");
+const u8 ContestString_AppealWoreOff2[] = _("The special appeal's\neffect wore off.");
+const u8 ContestString_AppealLookSame[] = _("Everyone's appeals were\nmade to look the same.");
+const u8 ContestString_AppealCheapened[] = _("{STR_VAR_2}'s appeal was\ncheapened.");
+const u8 ContestString_AppealCheapened2[] = _("It cheapened the appeal\nof those ahead.");
+const u8 ContestString_AppealAttentionStolen[] = _("It stole attention away\nfrom {STR_VAR_2}.");
+const u8 ContestString_AppealCheapened3[] = _("It cheapened\n{STR_VAR_2}'s appeal.");
+const u8 ContestString_AppealCheapened4[] = _("It severely cheapened\nother appeals.");
+const u8 ContestString_AppealAnticipation[] = _("Anticipation swelled for\n{STR_VAR_1}'s appeal next.");
+const u8 ContestString_AppealCheapened5[] = _("It cheapened the appeal\nof those ahead.");
+const u8 ContestString_AppealCheapened6[] = _("It cheapened the JUDGE's\nfavorite appeal.");
+const u8 ContestString_AppealCheapened7[] = _("The appeals of others\nwere cheapened by half.");
+const u8 ContestString_JammedStoodOut[] = _("It stood out to make up\nfor being jammed.");
+const u8 ContestString_AppealNoMore[] = _("It can't participate in\nappeals any more.");
+const u8 ContestString_AppealTouched[] = _("It touched the JUDGE for\na fantastic appeal.");
+const u8 ContestString_AppealAnticipation2[] = _("Anticipation rose for\nupcoming appeals.");
+const u8 ContestString_AppealStoodOut2[] = _("It stood out as much as\nspecial appeals.");
+const u8 ContestString_AppealStoodOut3[] = _("It stood out as much as\n{STR_VAR_1}.");
+const u8 ContestString_JammedAppealsNotice[] = _("Jammed appeals were made\neven less noticeable.");
+const u8 ContestString_AppealSame[] = _("Everyone's appeals were\nmade the same.");
+const u8 ContestString_AppealFullWorse[] = _("Its {STR_VAR_1} is full.\nIt worsened its appeal.");
+
+const u8 *const gContestString_UnreferencedPtrTable3[] = {
+ ContestString_JudgeHeldFirm,
+ ContestString_ChangedPerceptions,
+ ContestString_Terminator,
+ ContestString_AppealWoreOff,
+ ContestString_AppealWoreOff2,
+ ContestString_AppealLookSame,
+ ContestString_AppealCheapened,
+ ContestString_AppealCheapened2,
+ ContestString_AppealAttentionStolen,
+ ContestString_AppealCheapened3,
+ ContestString_AppealCheapened4,
+ ContestString_AppealAnticipation,
+ ContestString_AppealCheapened5,
+ ContestString_AppealCheapened6,
+ ContestString_AppealCheapened7,
+ ContestString_JammedStoodOut,
+ ContestString_AppealNoMore,
+ ContestString_AppealTouched,
+ ContestString_AppealAnticipation2,
+ ContestString_AppealStoodOut2,
+ ContestString_AppealStoodOut3,
+ ContestString_Terminator,
+ ContestString_Terminator,
+ ContestString_Terminator,
+ ContestString_JammedAppealsNotice,
+ ContestString_AppealSame,
+};
+
+const u8 ContestString_MoreConscious[] = _("It became more conscious\nof the other POKéMON.{PAUSE 60}");
+const u8 ContestString_NoAppeal[] = _("{STR_VAR_1} can't make an\nappeal after this.{PAUSE 60}");
+const u8 ContestString_SettleDown[] = _("It settled down just a\nlittle bit.{PAUSE 60}");
+const u8 ContestString_ObliviousToOthers[] = _("It became oblivious to\nthe other POKéMON.{PAUSE 60}");
+const u8 ContestString_LessAware[] = _("It became less aware of\nthe other POKéMON.{PAUSE 60}");
+const u8 ContestString_StoppedCaring[] = _("It stopped caring about\nother POKéMON much.{PAUSE 60}");
+const u8 ContestString_StartleAttempt[] = _("It tried to startle the\nother POKéMON.{PAUSE 60}");
+const u8 ContestString_DazzleAttempt[] = _("It tried to dazzle the\nothers.{PAUSE 60}");
+const u8 ContestString_JudgeLookAway2[] = _("The JUDGE looked away\nfrom {STR_VAR_1}.{PAUSE 60}");
+const u8 ContestString_UnnerveAttempt[] = _("It tried to unnerve the\nnext POKéMON.{PAUSE 60}");
+const u8 ContestString_Nervous[] = _("{STR_VAR_1} became\nnervous.{PAUSE 60}");
+const u8 ContestString_UnnerveWaiting[] = _("The appeal tried to\nunnerve waiting POKéMON.{PAUSE 60}");
+const u8 ContestString_TauntWell[] = _("It taunted POKéMON\ndoing well.{PAUSE 60}");
+const u8 ContestString_RegainedForm[] = _("{STR_VAR_1} regained its\nform.{PAUSE 60}");
+const u8 ContestString_JamWell[] = _("It tried to jam POKéMON\ndoing well.{PAUSE 60}");
+const u8 ContestString_HustleStandout[] = _("The standout {STR_VAR_1}\nhustled even more.{PAUSE 60}");
+const u8 ContestString_WorkHardUnnoticed[] = _("The largely unnoticed\n{STR_VAR_1} worked hard.{PAUSE 60}");
+const u8 ContestString_WorkBefore[] = _("It worked as much as\nPOKéMON before it.{PAUSE 60}");
+const u8 ContestString_AppealNotWell[] = _("{STR_VAR_1}'s appeal did\nnot go well.{PAUSE 60}");
+const u8 ContestString_WorkPreceding[] = _("It worked as much as the\npreceding POKéMON.{PAUSE 60}");
+const u8 ContestString_AppealNotWell2[] = _("{STR_VAR_1}'s appeal did\nnot go well.{PAUSE 60}");
+const u8 ContestString_AppealNotShownWell[] = _("{STR_VAR_1}'s appeal\ncouldn't be shown well.{PAUSE 60}");
+const u8 ContestString_AppealSlightlyWell[] = _("{STR_VAR_1}'s appeal\nwent slightly well.{PAUSE 60}");
+const u8 ContestString_AppealPrettyWell[] = _("{STR_VAR_1}'s appeal\nwent pretty well.{PAUSE 60}");
+const u8 ContestString_AppealExcellently[] = _("{STR_VAR_1}'s appeal\nwent excellently.{PAUSE 60}");
+const u8 ContestString_AppealDud[] = _("{STR_VAR_1}'s appeal was\na dud.{PAUSE 60}");
+const u8 ContestString_AppealNotVeryWell[] = _("{STR_VAR_1}'s appeal did\nnot work very well.{PAUSE 60}");
+const u8 ContestString_AppealSlightlyWell2[] = _("{STR_VAR_1}'s appeal\nwent slightly well.{PAUSE 60}");
+const u8 ContestString_AppealPrettyWell2[] = _("{STR_VAR_1}'s appeal\nwent pretty well.{PAUSE 60}");
+const u8 ContestString_AppealVeryWell[] = _("{STR_VAR_1}'s appeal\nwent very well.{PAUSE 60}");
+const u8 ContestString_AppealExcellently2[] = _("{STR_VAR_1}'s appeal\nwent excellently.{PAUSE 60}");
+const u8 ContestString_SameTypeGood[] = _("It's the same type as the\nPOKéMON before - good!{PAUSE 60}");
+const u8 ContestString_DiffTypeGood[] = _("It's not the same type as\nthe one before - good!{PAUSE 60}");
+const u8 ContestString_StoodOutAsMuch[] = _("It stood out much more\nthan the POKéMON before.{PAUSE 60}");
+const u8 ContestString_NotAsWell[] = _("It didn't do as well as the\nPOKéMON before.{PAUSE 60}");
+const u8 ContestString_ConditionRose[] = _("{STR_VAR_1}'s condition\nrose above usual.{PAUSE 60}");
+const u8 ContestString_HotStatus[] = _("{STR_VAR_1}'s hot status\nmade it a great appeal!{PAUSE 60}");
+const u8 ContestString_MoveUpLine[] = _("It moved up in line for\nthe next appeal.{PAUSE 60}");
+const u8 ContestString_MoveBackLine[] = _("It moved back in line once\nfor the next appeal.{PAUSE 60}");
+const u8 ContestString_ScrambleOrder[] = _("It scrambled up the\norder for the next turn.{PAUSE 60}");
+const u8 ContestString_JudgeExpectantly2[] = _("The JUDGE looked at\n{STR_VAR_1} expectantly.{PAUSE 60}");
+const u8 ContestString_WentOverWell[] = _("The appeal combo went\nover well.{PAUSE 60}");
+const u8 ContestString_WentOverVeryWell[] = _("The appeal combo went\nover very well.{PAUSE 60}");
+const u8 ContestString_AppealComboExcellently[] = _("The appeal combo went\nover excellently.{PAUSE 60}");
+const u8 ContestString_AvertGaze[] = _("{STR_VAR_1} managed to\navert its gaze.{PAUSE 60}");
+const u8 ContestString_AvoidSeeing[] = _("{STR_VAR_1} managed to\navoid seeing it.{PAUSE 60}");
+const u8 ContestString_NotFazed[] = _("{STR_VAR_1} isn't fazed\nby that sort of thing.{PAUSE 60}");
+const u8 ContestString_LittleDistracted[] = _("{STR_VAR_1} became a\nlittle distracted.{PAUSE 60}");
+const u8 ContestString_AttemptStartle[] = _("It tried to startle the\nother POKéMON.{PAUSE 60}");
+const u8 ContestString_LookedDown[] = _("{STR_VAR_1} looked down\nout of distraction.{PAUSE 60}");
+const u8 ContestString_TurnedBack[] = _("{STR_VAR_1} turned back\nout of distraction.{PAUSE 60}");
+const u8 ContestString_UtterCry[] = _("{STR_VAR_1} couldn't help\nuttering a cry.{PAUSE 60}");
+const u8 ContestString_LeaptUp[] = _("{STR_VAR_1} couldn't help\nleaping up.{PAUSE 60}");
+const u8 ContestString_TrippedOver[] = _("{STR_VAR_1} tripped over\nout of distraction.{PAUSE 60}");
+const u8 ContestString_TooNervous[] = _("{STR_VAR_1} was too\nnervous to move.{PAUSE 60}");
+const u8 ContestString_MessedUp2[] = _("But it messed up.{PAUSE 60}");
+const u8 ContestString_FailedTargetNervous[] = _("But it failed to make\nthe target nervous.{PAUSE 60}");
+const u8 ContestString_FailedAnyoneNervous[] = _("But it failed to make\nanyone nervous.{PAUSE 60}");
+const u8 ContestString_Ignored[] = _("But it was ignored...{PAUSE 60}");
+const u8 ContestString_NoConditionImprove[] = _("But it couldn't improve\nits condition...{PAUSE 60}");
+const u8 ContestString_BadConditionWeakAppeal[] = _("Its bad condition\nresulted in a weak appeal.{PAUSE 60}");
+const u8 ContestString_Unaffected[] = _("{STR_VAR_1} was\nunaffected.{PAUSE 60}");
+const u8 ContestString_DissapointedRepeat[] = _("{STR_VAR_1} disappointed\nby repeating an appeal.{PAUSE 60}");
+const u8 ContestString_WentOverGreat[] = _("{STR_VAR_1}'s {STR_VAR_3}\nwent over great.{PAUSE 60}");
+const u8 ContestString_DidntGoWell[] = _("{STR_VAR_1}'s {STR_VAR_3}\ndidn't go over well here...{PAUSE 60}");
+const u8 ContestString_GotCrowdGoing[] = _("{STR_VAR_1}'s {STR_VAR_3}\ngot the crowd going.{PAUSE 60}");
+const u8 ContestString_CantAppealNextTurn[] = _("{STR_VAR_1} can't appeal\nnext turn...{PAUSE 60}");
+const u8 ContestString_AttractedAttention[] = _("It attracted the crowd's\nattention.{PAUSE 60}");
+const u8 ContestString_CrowdWatches[] = _("The crowd continues to\nwatch {STR_VAR_3}.{PAUSE 60}");
+const u8 ContestString_Ignored2[] = _("{STR_VAR_1}'s\n{STR_VAR_2} is ignored.{PAUSE 60}");
+
+const u8 *const gUnknown_083CC188[] = {
+ ContestString_MoreConscious,
+ ContestString_NoAppeal,
+ ContestString_SettleDown,
+ ContestString_ObliviousToOthers,
+ ContestString_LessAware,
+ ContestString_StoppedCaring,
+ ContestString_StartleAttempt,
+ ContestString_DazzleAttempt,
+ ContestString_JudgeLookAway2,
+ ContestString_UnnerveAttempt,
+ ContestString_Nervous,
+ ContestString_UnnerveWaiting,
+ ContestString_TauntWell,
+ ContestString_RegainedForm,
+ ContestString_JamWell,
+ ContestString_HustleStandout,
+ ContestString_WorkHardUnnoticed,
+ ContestString_WorkBefore,
+ ContestString_AppealNotWell,
+ ContestString_WorkPreceding,
+ ContestString_AppealNotWell2,
+ ContestString_AppealNotShownWell,
+ ContestString_AppealSlightlyWell,
+ ContestString_AppealPrettyWell,
+ ContestString_AppealExcellently,
+ ContestString_AppealDud,
+ ContestString_AppealNotVeryWell,
+ ContestString_AppealSlightlyWell2,
+ ContestString_AppealPrettyWell2,
+ ContestString_AppealVeryWell,
+ ContestString_AppealExcellently2,
+ ContestString_SameTypeGood,
+ ContestString_DiffTypeGood,
+ ContestString_StoodOutAsMuch,
+ ContestString_NotAsWell,
+ ContestString_ConditionRose,
+ ContestString_HotStatus,
+ ContestString_MoveUpLine,
+ ContestString_MoveBackLine,
+ ContestString_ScrambleOrder,
+ ContestString_JudgeExpectantly2,
+ ContestString_WentOverWell,
+ ContestString_WentOverVeryWell,
+ ContestString_AppealComboExcellently,
+ ContestString_AvertGaze,
+ ContestString_AvoidSeeing,
+ ContestString_NotFazed,
+ ContestString_LittleDistracted,
+ ContestString_AttemptStartle,
+ ContestString_LookedDown,
+ ContestString_TurnedBack,
+ ContestString_UtterCry,
+ ContestString_LeaptUp,
+ ContestString_TrippedOver,
+ ContestString_MessedUp2,
+ ContestString_FailedTargetNervous,
+ ContestString_FailedAnyoneNervous,
+ ContestString_Ignored,
+ ContestString_NoConditionImprove,
+ ContestString_BadConditionWeakAppeal,
+ ContestString_Unaffected,
+ ContestString_AttractedAttention,
+};
+
+const u8 gText_Contest_Shyness[] = _("shyness");
+
+const u8 gText_Contest_Anxiety[] = _("anxiety");
+
+const u8 gText_Contest_Laziness[] = _("laziness");
+
+const u8 gText_Contest_Hesitancy[] = _("hesitancy");
+
+const u8 gText_Contest_Fear[] = _("fear");
+
+const u8 ContestString_Coolness[] = _("coolness");
+const u8 ContestString_Beauty2[] = _("beauty");
+const u8 ContestString_Cuteness[] = _("cuteness");
+const u8 ContestString_Smartness[] = _("smartness");
+const u8 ContestString_Toughness[] = _("toughness");
+
+const u8 *const gContestCategoryStrings[] = {
+ ContestString_Coolness,
+ ContestString_Beauty2,
+ ContestString_Cuteness,
+ ContestString_Smartness,
+ ContestString_Toughness,
+};
+
+const u8 gUnknown_083CC2EC[] = _("TENSION:");
+
+const u8 ContestString_CoolMove[] = _("COOL Move");
+
+const u8 ContestString_BeautyMove[] = _("BEAUTY Move");
+
+const u8 ContestString_CuteMove[] = _("CUTE Move");
+
+const u8 ContestString_SmartMove[] = _("SMART Move");
+
+const u8 ContestString_ToughMove[] = _("TOUGH Move");
+
+const u8 ContestString_UnknownMoveType[] = _("???");
+
+const u8 *const sInvalidContestMoveNames[] = {
+ ContestString_CoolMove,
+ ContestString_BeautyMove,
+ ContestString_CuteMove,
+ ContestString_SmartMove,
+ ContestString_ToughMove,
+ ContestString_UnknownMoveType,
+};
+
+// unused?
+const u8 ContestString_Rank[] = _("RANK");
+
+const u8 ContestString_HighlightTransparent_ColorMagenta[] = _("{HIGHLIGHT TRANSPARENT}{COLOR MAGENTA} ");
+
+const u8 gUnknownText_MissedTurn[] = _("Missed turn");
+
+const u8 gUnknownText_LinkStandbyAndWinner[] = _("Link standby...");
+const u8 gUnknownText_ColorWhite2[] = _("{COLOR WHITE2}");
+const u8 gUnknownText_LinkWinner[] = _("The winner is {STR_VAR_1}'s {STR_VAR_2}!\nCongratulations!");
diff --git a/src/debug/crash.c b/src/debug/crash.c
index 85058d285..3f9e2d685 100644
--- a/src/debug/crash.c
+++ b/src/debug/crash.c
@@ -4,7 +4,7 @@
#include "text.h"
#include "palette.h"
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
static void CB2_CrashIdle(void);
@@ -37,9 +37,9 @@ void Crash(u8 *text)
SetMainCallback2(CB2_CrashIdle);
DmaFill32Large(3, 0, (void *)VRAM, 0x18000, 0x1000);
Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8);
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6FD8);
LoadFontDefaultPalette(&gWindowTemplate_81E6FD8);
- Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7);
+ Text_InitWindowAndPrintText(&gWindowTemplate_Contest_MoveDescription, text, 1, 9, 7);
}
static void CB2_CrashIdle(void)
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 27d2db66b..959614caa 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -2,21 +2,21 @@
#include "matsuda_debug_menu.h"
#include "battle.h"
#include "contest.h"
-#include "contest_link_80C2020.h"
-#include "contest_link_80C857C.h"
+#include "contest_link.h"
+#include "contest_link_util.h"
#include "data2.h"
+#include "ewram.h"
#include "link.h"
#include "main.h"
#include "menu.h"
-#include "palette.h"
#include "overworld.h"
+#include "palette.h"
+#include "scanline_effect.h"
#include "sprite.h"
#include "start_menu.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
-#include "scanline_effect.h"
-#include "ewram.h"
extern u8 gUnknown_0203856C;
extern u8 gContestMonPartyIndex;
@@ -109,7 +109,7 @@ static void sub_80A9BE4(u8 taskId)
DestroyTask(taskId);
if (!(gIsLinkContest & 1))
- sub_80AF668();
+ CalculateFinalScores();
sub_80C2358();
}
@@ -149,12 +149,12 @@ static void sub_80A9C98(u8 taskId)
static void sub_80A9CC0(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C88AC, sub_80A9CDC);
+ SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateRng, sub_80A9CDC);
}
static void sub_80A9CDC(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8E1C, sub_80A9D58);
+ SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateLeaderIds, sub_80A9D58);
}
static void sub_80A9CF8(u8 taskId)
@@ -169,7 +169,7 @@ static void sub_80A9CF8(u8 taskId)
static void sub_80A9D30(u8 taskId)
{
- sub_800832C();
+ SetCloseLinkCallback();
gTasks[taskId].func = sub_80A9CF8;
}
@@ -181,15 +181,15 @@ static void sub_80A9D58(u8 taskId)
for (i = 0; i < 4; i++)
dest[i] = gTasks[taskId].data[5 + i];
- gUnknown_0203869B = sub_80C4B34(dest);
- InitContestMonConditions((u8)gSpecialVar_ContestCategory);
- sub_80B0F28(0);
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8EBC, sub_80A9DBC);
+ gContestLinkLeaderIndex = LinkContest_GetLeaderIndex(dest);
+ CalculateRound1Points((u8)gSpecialVar_ContestCategory);
+ SortContestants(0);
+ SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateRound1Points, sub_80A9DBC);
}
static void sub_80A9DBC(u8 taskId)
{
- SetTaskFuncWithFollowupFunc(taskId, sub_80C8F34, sub_80A9DD8);
+ SetTaskFuncWithFollowupFunc(taskId, Task_LinkContest_CommunicateTurnOrder, sub_80A9DD8);
}
static void sub_80A9DD8(u8 taskId)
@@ -607,7 +607,7 @@ void sub_80AA5E8(u8 var)
static void sub_80AA614(u8 var1, u8 var2)
{
- u16 var = InitContestMonConditionI(var1, var2);
+ u16 var = CalculateContestantRound1Points(var1, var2);
ConvertIntToDecimalStringN(gSharedMem, var, STR_CONV_MODE_RIGHT_ALIGN, 3);
Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0xE2, 3, 0xC);
@@ -682,8 +682,8 @@ void sub_80AA754(struct Sprite *sprite)
sub_80AAD08(sprite, 1);
break;
}
- sprite->pos1.x = gUnknown_083C9296[sprite->data[0] + sprite->data[1] * 2];
- sprite->pos1.y = gUnknown_083C92A8[sprite->data[1]];
+ sprite->x = gUnknown_083C9296[sprite->data[0] + sprite->data[1] * 2];
+ sprite->y = gUnknown_083C92A8[sprite->data[1]];
}
static void sub_80AA8A0(struct Sprite *sprite, s8 var1, u8 var2)
@@ -859,7 +859,7 @@ void sub_80AACC4(void)
{
SetDebugMonForContest();
if (!(gIsLinkContest & 1))
- InitContestMonConditions(eMatsudaDebugVar);
+ CalculateRound1Points(gSharedMem[0]);
SetMainCallback2(CB2_StartContest);
}
}
@@ -868,7 +868,7 @@ void sub_80AAD08(struct Sprite *sprite, s8 var2)
{
if (var2 == 1)
{
- eMatsudaDebugVar = sprite->data[3];
+ gSharedMem[0] = sprite->data[3];
SetMainCallback2(sub_80AACC4);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
}
@@ -882,7 +882,7 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2)
SetDebugMonForContest();
for (i = 0; i < 4; i++)
- gContestMonConditions[i] = InitContestMonConditionI(i, gSpecialVar_ContestCategory);
+ gContestMonRound1Points[i] = CalculateContestantRound1Points(i, gSpecialVar_ContestCategory);
SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC);
}
}
@@ -950,16 +950,16 @@ void sub_80AAF30(void)
for (i = 0; i < 3; i++)
{
- gContestMonConditions[i] = 0;
- gUnknown_02038680[i] = 0;
- gUnknown_02038678[i] = 0;
+ gContestMonRound1Points[i] = 0;
+ gContestMonAppealPointTotals[i] = 0;
+ gContestMonTotalPoints[i] = 0;
gContestMons[i] = gContestMons[3];
}
- gContestMonConditions[3] = 0x12C;
- gUnknown_02038680[3] = 0x190;
- gUnknown_02038678[3] = 0x190;
- Contest_SaveWinner(0xFE);
+ gContestMonRound1Points[3] = 0x12C;
+ gContestMonAppealPointTotals[3] = 0x190;
+ gContestMonTotalPoints[3] = 0x190;
+ Contest_SaveWinner(CONTEST_SAVE_FOR_ARTIST);
}
u8 MatsudaDebugMenu_SetHighScore(void)
@@ -976,9 +976,9 @@ u8 MatsudaDebugMenu_ResetHighScore(void)
gUnknown_0203856C = 0;
for (i = 0; i < 4; i++)
{
- gContestMonConditions[i] = 0;
- gUnknown_02038680[i] = 0;
- gUnknown_02038678[i] = 0;
+ gContestMonRound1Points[i] = 0;
+ gContestMonAppealPointTotals[i] = 0;
+ gContestMonTotalPoints[i] = 0;
}
CloseMenu();
return 1;
diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c
index 5b7a26f97..6f6ee58dd 100644
--- a/src/debug/sound_check_menu.c
+++ b/src/debug/sound_check_menu.c
@@ -56,7 +56,7 @@ static EWRAM_DATA u8 gUnknown_020387D8 = 0;
static EWRAM_DATA u8 gUnknown_020387D9 = 0;
u16 gSoundTestCryNum;
-extern u8 gUnknown_03005E98;
+extern u8 gDexCryScreenState;
struct MusicPlayerInfo *gUnknown_03005D30;
@@ -1208,7 +1208,7 @@ SOUND_LIST_SE
void Task_InitCryTest(u8 taskId)
{
- struct CryRelatedStruct cryStruct, cryStruct2;
+ struct CryScreenWindow cryStruct, cryStruct2;
u8 zero;
Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
@@ -1217,26 +1217,26 @@ void Task_InitCryTest(u8 taskId)
ResetSpriteData();
FreeAllSpritePalettes();
- cryStruct.unk0 = 0x2000;
- cryStruct.unk2 = 29;
+ cryStruct.charBase = 0x2000;
+ cryStruct.screenBase = 29;
cryStruct.paletteNo = 12;
cryStruct.yPos = 30;
cryStruct.xPos = 4;
zero = 0; // wtf?
- gUnknown_03005E98 = 0;
+ gDexCryScreenState = 0;
- while (sub_8119E3C(&cryStruct, 3) == FALSE)
+ while (LoadCryWaveformWindow(&cryStruct, 3) == FALSE)
;
- cryStruct2.unk0 = 0;
- cryStruct2.unk2 = 15;
+ cryStruct2.charBase = 0;
+ cryStruct2.screenBase = 15;
cryStruct2.paletteNo = 13;
cryStruct2.xPos = 12;
cryStruct2.yPos = 12;
zero = 0; // wtf?
- gUnknown_03005E98 = 0;
+ gDexCryScreenState = 0;
while (ShowPokedexCryScreen(&cryStruct2, 2) == FALSE)
;
@@ -1255,11 +1255,11 @@ void Task_InitCryTest(u8 taskId)
void Task_ProcessCryTestInput(u8 taskId)
{
- sub_8119F88(3);
+ UpdateCryWaveformWindow(3);
if (gMain.newKeys & A_BUTTON)
{
- sub_811A050(gSoundTestCryNum);
+ CryScreenPlayButton(gSoundTestCryNum);
}
if (gMain.newKeys & R_BUTTON)
{
diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c
index 1501fdd49..d875acefa 100644
--- a/src/debug/start_menu_debug.c
+++ b/src/debug/start_menu_debug.c
@@ -905,7 +905,7 @@ u8 DebugMenu_OpenWatanabe(void)
u8 DebugMenu_EndSequenceDemo(void)
{
CloseMenu();
- SetMainCallback2(sub_81439D0);
+ SetMainCallback2(CB2_StartCreditsSequence);
ScriptContext2_Enable();
return TRUE;
}
@@ -1015,7 +1015,7 @@ u8 DebugMenu_NationalDex(void)
GetSetPokedexFlag(i + 1, 2);
GetSetPokedexFlag(i + 1, 3);
}
- gUnknown_03005CE8 = TRUE;
+ gUnusedPokedexU8 = TRUE;
CloseMenu();
return TRUE;
}
@@ -1030,7 +1030,7 @@ u8 DebugMenu_HoennDex(void)
GetSetPokedexFlag(nati, 2);
GetSetPokedexFlag(nati, 3);
}
- gUnknown_03005CE8 = TRUE;
+ gUnusedPokedexU8 = TRUE;
CloseMenu();
return TRUE;
}
@@ -2417,8 +2417,7 @@ void DebugMenu_8078B94(void)
for (i = 0; i < ARRAY_COUNT(gSaveBlock1.pokeblocks); i++)
{
- if (gUnknown_Debug_839C444[i].color == 0)
- break;
+ if (gUnknown_Debug_839C444[i].color == 0) break;
gSaveBlock1.pokeblocks[i] = gUnknown_Debug_839C444[i];
}
}
@@ -2589,10 +2588,10 @@ void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2)
}
struct GameTimeDebugMenuStruct {
- u16 unk0;
- u16 unk2;
- u8 unk4;
- u8 unk5;
+ u16 totalPoints;
+ u16 excitementAppealBonus;
+ u8 round1Points;
+ u8 contestant;
};
const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = {
@@ -2604,7 +2603,7 @@ const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = {
void DebugMenu_8078E80(s16 * a0)
{
Menu_BlankWindowRect(2, 15, 22, 16);
- sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].unk4, 15);
+ sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].round1Points, 15);
}
void DebugMenu_8078EB0(s16 * a0)
@@ -2669,7 +2668,7 @@ void DebugMenu_8078F68(u8 taskId)
else
{
const struct GameTimeDebugMenuStruct *r2 = gUnknown_Debug_839C5F4 + data[0];
- if (DebugMenu_8077DD8(data + r2->unk5, r2->unk0, r2->unk2, gMain.newAndRepeatedKeys) == TRUE)
+ if (DebugMenu_8077DD8(data + r2->contestant, r2->totalPoints, r2->excitementAppealBonus, gMain.newAndRepeatedKeys) == TRUE)
DebugMenu_8078EB0(data);
}
}
diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c
index ca66ca01a..9a997a566 100644
--- a/src/debug/taya_debug_window.c
+++ b/src/debug/taya_debug_window.c
@@ -69,7 +69,7 @@ const u8 gUnknown_Debug_083C4EB0[] = _("Interview(BT)");
const struct {
const u8 * text;
- u32 unk4;
+ u32 round1Points;
} gUnknown_Debug_083C4EC0[] = {
{gUnknown_Debug_083C4E54, 0x0},
{gUnknown_Debug_083C4E5C, 0x1},
@@ -281,7 +281,7 @@ bool8 debug_sub_809089C(void)
case -2:
return FALSE;
default:
- gSpecialVar_0x8004 = gUnknown_Debug_083C4EC0[input].unk4;
+ gSpecialVar_0x8004 = gUnknown_Debug_083C4EC0[input].round1Points;
switch (gSpecialVar_0x8004)
{
case 5:
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
index 64da15dc7..94b697954 100644
--- a/src/debug/tomomichi_debug_menu.c
+++ b/src/debug/tomomichi_debug_menu.c
@@ -4470,47 +4470,47 @@ NAKED void PicTest_Redraw(u8 a0)
static void PrepareDebugOverlayBeforeShowingContestPainting(u8 a0)
{
- struct ContestEntry *contestEntry = &ewram15DE0;
+ struct ContestWinner *contestEntry = &eCurContestWinner;
contestEntry->species = sPicTest_Species;
contestEntry->otId = sPicTest_OTID;
contestEntry->personality = sPicTest_Personality;
switch (a0)
{
case 0:
- ewram15DDF = 0;
- ewram15DDE = 0;
- contestEntry->contestType = sPicTest_ContestType - 1;
- StringCopy(contestEntry->trainer_name, sDummyTrainerName);
- StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ eCurContestWinnerIsForArtist = FALSE;
+ eCurContestWinnerSaveIdx = 0;
+ contestEntry->contestCategory = sPicTest_ContestType - 1;
+ StringCopy(contestEntry->trainerName, sDummyTrainerName);
+ StringCopy(contestEntry->nickname, sDummyNickname);
break;
case 1:
- ewram15DDF = 0;
- ewram15DDE = 8;
- contestEntry->contestType = sPicTest_MuseumArtTitleType - 1;
- StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ eCurContestWinnerIsForArtist = FALSE;
+ eCurContestWinnerSaveIdx = 8;
+ contestEntry->contestCategory = sPicTest_MuseumArtTitleType - 1;
+ StringCopy(contestEntry->nickname, sDummyNickname);
break;
case 2:
- ewram15DDF = 1;
- ewram15DDE = 8;
- contestEntry->contestType = sPicTest_PreviewType - 1;
+ eCurContestWinnerIsForArtist = TRUE;
+ eCurContestWinnerSaveIdx = 8;
+ contestEntry->contestCategory = sPicTest_PreviewType - 1;
break;
case 3:
- ewram15DDF = 0;
- ewram15DDE = 8;
- contestEntry->contestType = 0;
- StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ eCurContestWinnerIsForArtist = FALSE;
+ eCurContestWinnerSaveIdx = 8;
+ contestEntry->contestCategory = 0;
+ StringCopy(contestEntry->nickname, sDummyNickname);
break;
case 4:
- ewram15DDF = 0;
- ewram15DDE = 8;
- contestEntry->contestType = 3;
- StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ eCurContestWinnerIsForArtist = FALSE;
+ eCurContestWinnerSaveIdx = 8;
+ contestEntry->contestCategory = 3;
+ StringCopy(contestEntry->nickname, sDummyNickname);
break;
case 5:
- ewram15DDF = 0;
- ewram15DDE = 8;
- contestEntry->contestType = 9;
- StringCopy(contestEntry->pokemon_name, sDummyNickname);
+ eCurContestWinnerIsForArtist = FALSE;
+ eCurContestWinnerSaveIdx = 8;
+ contestEntry->contestCategory = 9;
+ StringCopy(contestEntry->nickname, sDummyNickname);
break;
}
}
diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c
index 205d4d5e3..752c710d0 100644
--- a/src/debug/watanabe_debug_menu.c
+++ b/src/debug/watanabe_debug_menu.c
@@ -33,9 +33,9 @@
#include "field_effect.h"
struct WatanabeDebugMenuItemSubstruct {
- u32 unk0;
- u32 unk4;
- u8 unk8;
+ u32 totalPoints;
+ u32 round1Points;
+ u8 random;
u8 unk9;
};
@@ -54,13 +54,13 @@ struct WatanabeEwram17000 {
u8 unk1_0:4;
u8 unk1_4:1;
u8 unk1_5:3;
- u8 unk2;
+ u8 excitementAppealBonus;
u8 unk3;
u8 fill4[5];
u8 unk9;
u8 unkA;
u8 unkB;
- u8 unkC;
+ u8 contestant;
};
struct WatanabeEwram18000 {
@@ -74,18 +74,18 @@ struct WatanabeEwram18000 {
};
struct WatanabeEwram18000_2 {
- u16 unk0;
- u8 unk2;
+ u16 totalPoints;
+ u8 excitementAppealBonus;
u8 unk3;
- u8 unk4;
- u8 unk5;
+ u8 round1Points;
+ u8 contestant;
u8 unk6;
u8 unk7;
- u8 unk8;
+ u8 random;
u8 unk9;
u8 unkA;
struct PlttData unkC;
- u16 unk10[16];
+ u16 personality2[16];
};
#define eWatanabe17000 (*(struct WatanabeEwram17000 *)(gSharedMem + 0x17000))
@@ -446,25 +446,25 @@ void debug_80C3A50(u8 taskId)
debug_80C3800(species, 18, 17);
- spriteId = sub_8091A4C(saveBlock2->playerGender, 0x98, 0x28, 0);
+ spriteId = CreateSizeScreenTrainerPic(saveBlock2->playerGender, 0x98, 0x28, 0);
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].oam.paletteNum = 0;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0));
- gSprites[spriteId].pos2.y = gPokedexEntries[natDexNum].trainerOffset;
+ gSprites[spriteId].y2 = gPokedexEntries[natDexNum].trainerOffset;
SetOamMatrix(2, gPokedexEntries[natDexNum].trainerScale, 0, 0, gPokedexEntries[natDexNum].trainerScale);
gTasks[taskId].data[3] = spriteId;
gTasks[taskId].data[4] = gPokedexEntries[natDexNum].trainerOffset;
gTasks[taskId].data[6] = gPokedexEntries[natDexNum].trainerScale;
- spriteId2 = sub_80918EC(natDexNum, 0x58, 0x28, 1);
+ spriteId2 = CreateMonSpriteFromNationalDexNumber(natDexNum, 0x58, 0x28, 1);
gSprites[spriteId2].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId2].oam.matrixNum = 1;
gSprites[spriteId2].oam.priority = 0;
gSprites[spriteId2].oam.paletteNum = 0;
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(0));
- gSprites[spriteId2].pos2.y = gPokedexEntries[natDexNum].pokemonOffset;
+ gSprites[spriteId2].y2 = gPokedexEntries[natDexNum].pokemonOffset;
SetOamMatrix(1, gPokedexEntries[natDexNum].pokemonScale, 0, 0, gPokedexEntries[natDexNum].pokemonScale);
gTasks[taskId].data[2] = spriteId2;
gTasks[taskId].data[5] = gPokedexEntries[natDexNum].pokemonOffset;
@@ -601,7 +601,7 @@ NAKED void debug_80C3A50(u8 taskId)
"\tmov\tr1, #0x98\n"
"\tmov\tr2, #0x28\n"
"\tmov\tr3, #0x0\n"
- "\tbl\tsub_8091A4C\n"
+ "\tbl\tCreateSizeScreenTrainerPic\n"
"\tmov\tr2, sp\n"
"\tstrh\tr0, [r2, #0x10]\n"
"\tadd\tr3, r0, #0\n"
@@ -668,7 +668,7 @@ NAKED void debug_80C3A50(u8 taskId)
"\tmov\tr1, #0x58\n"
"\tmov\tr2, #0x28\n"
"\tmov\tr3, #0x1\n"
- "\tbl\tsub_80918EC\n"
+ "\tbl\tCreateMonSpriteFromNationalDexNumber\n"
"\tmov\tr3, sp\n"
"\tstrh\tr0, [r3, #0x1c]\n"
"\tlsl\tr0, r0, #0x10\n"
@@ -912,14 +912,14 @@ void debug_80C3D2C(u8 taskId)
SetOamMatrix(1, scale, 0, 0, scale);
debug_80C68CC(scale, 1, 3, 4);
debug_80C68CC(offset, 1, 7, 4);
- gSprites[gTasks[taskId].data[2]].pos2.y = offset;
+ gSprites[gTasks[taskId].data[2]].y2 = offset;
scale = gTasks[taskId].data[6];
offset = gTasks[taskId].data[4];
SetOamMatrix(2, scale, 0, 0, scale);
debug_80C68CC(scale, 25, 3, 4);
debug_80C68CC(offset, 25, 7, 4);
- gSprites[gTasks[taskId].data[3]].pos2.y = offset;
+ gSprites[gTasks[taskId].data[3]].y2 = offset;
REG_WIN0H = ((gTasks[taskId].data[8] * 64 + 0x38) << 8) + (gTasks[taskId].data[8] * 64 + 0x78);
}
@@ -1362,12 +1362,12 @@ void debug_80C4AC4(u8 taskId)
PlaySE(SE_SELECT);
gTrainerBattleOpponent = SECRET_BASE_OPPONENT;
eWatanabe17000.unk1_4 = 0;
- eWatanabe17000.unk2 = 0xAC;
+ eWatanabe17000.excitementAppealBonus = 0xAC;
eWatanabe17000.unk3 = 0xFF;
eWatanabe17000.unk9 = 0;
eWatanabe17000.unkA = 0;
eWatanabe17000.unkB = 0;
- eWatanabe17000.unkC = 0;
+ eWatanabe17000.contestant = 0;
gTasks[taskId].func = debug_80C4F48;
}
else if (gMain.newAndRepeatedKeys & DPAD_UP)
@@ -2362,11 +2362,11 @@ const u32 gUnknown_Debug_083F8768[] = {
void debug_80C6544(u8 a0)
{
u32 r7 = debug_80C5B60(gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]);
- u32 r5 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk0;
- u32 r4 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk4;
+ u32 r5 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->totalPoints;
+ u32 r4 = gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->round1Points;
u32 r3 = gUnknown_Debug_083F8768[gUnknown_Debug_2038A1C->unk16a];
- if (gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->unk8 == 0)
+ if (gUnknown_Debug_083F8554[gUnknown_Debug_083F8698[gUnknown_Debug_2038A1C->unk168].text[gUnknown_Debug_2038A1C->unk169]].data.type4->random == 0)
{
switch (a0)
{
@@ -2568,13 +2568,13 @@ void InitSeePokemonGraphics(void)
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON;
CreateTask(debug_80C6B00, 0);
gUnknown_Debug_2038A20 = &eWatanabe18000_2;
- gUnknown_Debug_2038A20->unk0 = 0x115;
- gUnknown_Debug_2038A20->unk2 = 0;
+ gUnknown_Debug_2038A20->totalPoints = 0x115;
+ gUnknown_Debug_2038A20->excitementAppealBonus = 0;
gUnknown_Debug_2038A20->unk3 = 0;
- gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->contestant = 0;
gUnknown_Debug_2038A20->unk7 = 0;
gUnknown_Debug_2038A20->unkA = 0;
- gUnknown_Debug_2038A20->unk8 = 0;
+ gUnknown_Debug_2038A20->random = 0;
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6C, 0x74, 0);
gSprites[spriteId].data[0] = 0;
StartSpriteAnim(gSprites + spriteId, 0);
@@ -2670,33 +2670,33 @@ void debug_80C6B00(u8 taskId)
void debug_80C6CB8(u8 taskId)
{
- DecompressPicFromTable_2(gMonFrontPicTable + gUnknown_Debug_2038A20->unk0, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0);
- LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0);
- GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 1);
- gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0);
- gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69;
- gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0;
-
- DecompressPicFromTable_2(gMonBackPicTable + gUnknown_Debug_2038A20->unk0, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].coords, gMonBackPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[2], gUnknown_Debug_2038A20->unk0);
- LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->unk0);
- GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->unk0, 2);
- gUnknown_Debug_2038A20->unk3 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x78, 0);
+ DecompressPicFromTable_2(gMonFrontPicTable + gUnknown_Debug_2038A20->totalPoints, gMonFrontPicCoords[gUnknown_Debug_2038A20->totalPoints].coords, gMonFrontPicCoords[gUnknown_Debug_2038A20->totalPoints].y_offset, gMonSpriteGfx_Sprite_ptr[0], gMonSpriteGfx_Sprite_ptr[1], gUnknown_Debug_2038A20->totalPoints);
+ LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->totalPoints);
+ GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->totalPoints, 1);
+ gUnknown_Debug_2038A20->excitementAppealBonus = CreateSprite(&gCreatingSpriteTemplate, 0x28, 0x28, 0);
+ gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].callback = debug_69;
+ gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].oam.priority = 0;
+
+ DecompressPicFromTable_2(gMonBackPicTable + gUnknown_Debug_2038A20->totalPoints, gMonBackPicCoords[gUnknown_Debug_2038A20->totalPoints].coords, gMonBackPicCoords[gUnknown_Debug_2038A20->totalPoints].y_offset, gMonSpriteGfx_Sprite_ptr[0], gMonSpriteGfx_Sprite_ptr[2], gUnknown_Debug_2038A20->totalPoints);
+ LoadCompressedObjectPalette(gMonPaletteTable + gUnknown_Debug_2038A20->totalPoints);
+ GetMonSpriteTemplate_803C56C(gUnknown_Debug_2038A20->totalPoints, 2);
+ gUnknown_Debug_2038A20->unk3 = CreateSprite(&gCreatingSpriteTemplate, 0x28, 0x78, 0);
gSprites[gUnknown_Debug_2038A20->unk3].callback = debug_69;
gSprites[gUnknown_Debug_2038A20->unk3].oam.priority = 0;
- gUnknown_Debug_2038A20->unk4 = CreateMonIcon(gUnknown_Debug_2038A20->unk0, sub_809D62C, 0x68, 0x2C, 0, 0);
+ gUnknown_Debug_2038A20->round1Points = CreateMonIcon(gUnknown_Debug_2038A20->totalPoints, SpriteCB_PokemonIcon, 0x68, 0x2C, 0, 0);
- sub_8091738(SpeciesToNationalPokedexNum(gUnknown_Debug_2038A20->unk0), 2, 0x3fc);
+ PrintFootprint(SpeciesToNationalPokedexNum(gUnknown_Debug_2038A20->totalPoints), 2, 0x3fc);
((u16 *)(VRAM + 0xF858))[0] = 0xF3FC;
((u16 *)(VRAM + 0xF858))[1] = 0xF3FD;
((u16 *)(VRAM + 0xF858))[32] = 0xF3FE;
((u16 *)(VRAM + 0xF858))[33] = 0xF3FF;
- debug_80C3800(gUnknown_Debug_2038A20->unk0, 17, 3);
- debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5);
+ debug_80C3800(gUnknown_Debug_2038A20->totalPoints, 17, 3);
+ debug_80C376C(gUnknown_Debug_2038A20->totalPoints, 26, 5);
- gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum;
+ gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].oam.paletteNum;
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20);
@@ -2704,13 +2704,13 @@ void debug_80C6CB8(u8 taskId)
gUnknown_Debug_2038A20->unk9 = 0;
StopCryAndClearCrySongs();
- PlayCry1(gUnknown_Debug_2038A20->unk0, 0);
+ PlayCry1(gUnknown_Debug_2038A20->totalPoints, 0);
}
void debug_80C6EE8(u8 taskId)
{
u16 hue;
- CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32);
+ CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->personality2, 32);
hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81];
gUnknown_Debug_2038A20->unkC.r = hue & 0x1f;
gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5;
@@ -2734,17 +2734,17 @@ void debug_80C6FA8(u8 taskId)
}
else if (gMain.newAndRepeatedKeys & R_BUTTON)
{
- gUnknown_Debug_2038A20->unk0 = debug_80C3878(0, gUnknown_Debug_2038A20->unk0);
+ gUnknown_Debug_2038A20->totalPoints = debug_80C3878(0, gUnknown_Debug_2038A20->totalPoints);
gTasks[taskId].func = debug_80C71FC;
}
else if (gMain.newAndRepeatedKeys & L_BUTTON)
{
- gUnknown_Debug_2038A20->unk0 = debug_80C3878(1, gUnknown_Debug_2038A20->unk0);
+ gUnknown_Debug_2038A20->totalPoints = debug_80C3878(1, gUnknown_Debug_2038A20->totalPoints);
gTasks[taskId].func = debug_80C71FC;
}
else if (gMain.newKeys & A_BUTTON)
{
- gUnknown_Debug_2038A20->unk5 = 1;
+ gUnknown_Debug_2038A20->contestant = 1;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x4167;
gTasks[taskId].func = debug_80C7294;
@@ -2767,9 +2767,9 @@ void debug_80C6FA8(u8 taskId)
{
gUnknown_Debug_2038A20->unk9 ^= 1;
if (gUnknown_Debug_2038A20->unk9)
- LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->totalPoints, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
else
- LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->totalPoints, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32);
gTasks[taskId].func = debug_80C6EE8;
@@ -2779,11 +2779,11 @@ void debug_80C6FA8(u8 taskId)
if (gMain.newKeys & SELECT_BUTTON)
{
StopCryAndClearCrySongs();
- PlayCry1(gUnknown_Debug_2038A20->unk0, 0);
+ PlayCry1(gUnknown_Debug_2038A20->totalPoints, 0);
}
- gUnknown_Debug_2038A20->unk8 += 4;
- gUnknown_Debug_2038A20->unk8 &= 0x1f;
- ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8];
+ gUnknown_Debug_2038A20->random += 4;
+ gUnknown_Debug_2038A20->random &= 0x1f;
+ ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->random];
}
}
#else
@@ -3088,11 +3088,11 @@ NAKED void debug_80C6FA8(u8 taskId)
void debug_80C71FC(u8 taskId)
{
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum));
- DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].oam.paletteNum));
+ DestroySprite(gSprites + gUnknown_Debug_2038A20->excitementAppealBonus);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum));
DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3);
- sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4);
+ sub_809D510(gSprites + gUnknown_Debug_2038A20->round1Points);
gTasks[taskId].func = debug_80C6CB8;
}
@@ -3100,20 +3100,20 @@ void debug_80C7294(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
- gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->contestant = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
gTasks[taskId].func = debug_80C6EE8;
}
else if (gMain.newKeys & B_BUTTON)
{
- gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->contestant = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32);
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32);
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferUnfaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferFaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
gTasks[taskId].func = debug_80C6EE8;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2)
@@ -3181,7 +3181,7 @@ void debug_80C74E4(u8 taskId)
void debug_80C7584(struct Sprite *sprite)
{
- if (!gUnknown_Debug_2038A20->unk5)
+ if (!gUnknown_Debug_2038A20->contestant)
sprite->invisible = TRUE;
else
{
@@ -3199,8 +3199,8 @@ void debug_80C7584(struct Sprite *sprite)
shade = gUnknown_Debug_2038A20->unkC.b;
break;
}
- sprite->pos2.x = 4 * shade;
- sprite->pos2.y = 8 * sprite->data[0];
+ sprite->x2 = 4 * shade;
+ sprite->y2 = 8 * sprite->data[0];
sprite->data[1]++;
if (sprite->data[0] == gUnknown_Debug_2038A20->unkA && !(sprite->data[1] & 0x08))
sprite->invisible = TRUE;
@@ -3237,13 +3237,13 @@ void InitSeeTrainers(void)
REG_DISPCNT = 0x3340;
CreateTask(debug_80C777C, 0);
gUnknown_Debug_2038A20 = &eWatanabe18000_2;
- gUnknown_Debug_2038A20->unk0 = 0;
- gUnknown_Debug_2038A20->unk2 = 0;
+ gUnknown_Debug_2038A20->totalPoints = 0;
+ gUnknown_Debug_2038A20->excitementAppealBonus = 0;
gUnknown_Debug_2038A20->unk3 = 0;
- gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->contestant = 0;
gUnknown_Debug_2038A20->unk7 = 0;
gUnknown_Debug_2038A20->unkA = 0;
- gUnknown_Debug_2038A20->unk8 = 0;
+ gUnknown_Debug_2038A20->random = 0;
spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0);
gSprites[spriteId].data[0] = 0;
StartSpriteAnim(gSprites + spriteId, 0);
@@ -3297,16 +3297,16 @@ void debug_80C777C(u8 taskId)
void debug_80C7934(u8 taskId)
{
- DecompressPicFromTable_2(gTrainerFrontPicTable + gUnknown_Debug_2038A20->unk0, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].coords, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->unk0].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], gUnknown_Debug_2038A20->unk0);
- LoadCompressedObjectPalette(gTrainerFrontPicPaletteTable + gUnknown_Debug_2038A20->unk0);
- GetMonSpriteTemplate_803C5A0(gUnknown_Debug_2038A20->unk0, 1);
- gUnknown_Debug_2038A20->unk2 = CreateSprite(&gUnknown_02024E8C, 0x28, 0x28, 0);
- gSprites[gUnknown_Debug_2038A20->unk2].callback = debug_69;
- gSprites[gUnknown_Debug_2038A20->unk2].oam.priority = 0;
+ DecompressPicFromTable_2(gTrainerFrontPicTable + gUnknown_Debug_2038A20->totalPoints, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->totalPoints].coords, gTrainerFrontPicCoords[gUnknown_Debug_2038A20->totalPoints].y_offset, gMonSpriteGfx_Sprite_ptr[0], gMonSpriteGfx_Sprite_ptr[1], gUnknown_Debug_2038A20->totalPoints);
+ LoadCompressedObjectPalette(gTrainerFrontPicPaletteTable + gUnknown_Debug_2038A20->totalPoints);
+ GetMonSpriteTemplate_803C5A0(gUnknown_Debug_2038A20->totalPoints, 1);
+ gUnknown_Debug_2038A20->excitementAppealBonus = CreateSprite(&gCreatingSpriteTemplate, 0x28, 0x28, 0);
+ gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].callback = debug_69;
+ gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].oam.priority = 0;
- debug_80C376C(gUnknown_Debug_2038A20->unk0, 26, 5);
+ debug_80C376C(gUnknown_Debug_2038A20->totalPoints, 26, 5);
- gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum;
+ gUnknown_Debug_2038A20->unk6 = gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].oam.paletteNum;
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 0x20);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 0x20);
@@ -3318,7 +3318,7 @@ void debug_80C7934(u8 taskId)
void debug_80C7A54(u8 taskId)
{
u16 hue;
- CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->unk10, 32);
+ CpuCopy16(gPlttBufferUnfaded + 0x80, gUnknown_Debug_2038A20->personality2, 32);
hue = gPlttBufferUnfaded[gUnknown_Debug_2038A20->unk7 + 0x81];
gUnknown_Debug_2038A20->unkC.r = hue & 0x1f;
gUnknown_Debug_2038A20->unkC.g = (hue & 0x3e0) >> 5;
@@ -3342,17 +3342,17 @@ void debug_80C7B14(u8 taskId)
}
else if (gMain.newAndRepeatedKeys & R_BUTTON)
{
- gUnknown_Debug_2038A20->unk0 = debug_80C38B4(0, gUnknown_Debug_2038A20->unk0);
+ gUnknown_Debug_2038A20->totalPoints = debug_80C38B4(0, gUnknown_Debug_2038A20->totalPoints);
gTasks[taskId].func = debug_80C7D44;
}
else if (gMain.newAndRepeatedKeys & L_BUTTON)
{
- gUnknown_Debug_2038A20->unk0 = debug_80C38B4(1, gUnknown_Debug_2038A20->unk0);
+ gUnknown_Debug_2038A20->totalPoints = debug_80C38B4(1, gUnknown_Debug_2038A20->totalPoints);
gTasks[taskId].func = debug_80C7D44;
}
else if (gMain.newKeys & A_BUTTON)
{
- gUnknown_Debug_2038A20->unk5 = 1;
+ gUnknown_Debug_2038A20->contestant = 1;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x4167;
gTasks[taskId].func = debug_80C7DDC;
@@ -3376,11 +3376,11 @@ void debug_80C7B14(u8 taskId)
gUnknown_Debug_2038A20->unk9 ^= 1;
if (gUnknown_Debug_2038A20->unk9)
{
- LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->totalPoints, 0, 0), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
}
else
{
- LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->unk0, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
+ LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(gUnknown_Debug_2038A20->totalPoints, 0, 9), gUnknown_Debug_2038A20->unk6 * 16 + 0x100, 0x20);
}
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferUnfaded + 0x80, 32);
CpuCopy16(gPlttBufferUnfaded + gUnknown_Debug_2038A20->unk6 * 16 + 0x100, gPlttBufferFaded + 0x80, 32);
@@ -3388,9 +3388,9 @@ void debug_80C7B14(u8 taskId)
}
else
{
- gUnknown_Debug_2038A20->unk8 += 4;
- gUnknown_Debug_2038A20->unk8 &= 0x1f;
- ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->unk8];
+ gUnknown_Debug_2038A20->random += 4;
+ gUnknown_Debug_2038A20->random &= 0x1f;
+ ((u16 *)PLTT)[0xa1 + gUnknown_Debug_2038A20->unk7] = gUnknown_Debug_083F8790[gUnknown_Debug_2038A20->random];
}
}
#else
@@ -3679,11 +3679,11 @@ NAKED void debug_80C7B14(u8 taskId)
void debug_80C7D44(u8 taskId)
{
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk2].oam.paletteNum));
- DestroySprite(gSprites + gUnknown_Debug_2038A20->unk2);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->excitementAppealBonus].oam.paletteNum));
+ DestroySprite(gSprites + gUnknown_Debug_2038A20->excitementAppealBonus);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gUnknown_Debug_2038A20->unk3].oam.paletteNum));
DestroySprite(gSprites + gUnknown_Debug_2038A20->unk3);
- sub_809D510(gSprites + gUnknown_Debug_2038A20->unk4);
+ sub_809D510(gSprites + gUnknown_Debug_2038A20->round1Points);
gTasks[taskId].func = debug_80C7934;
}
@@ -3691,20 +3691,20 @@ void debug_80C7DDC(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
- gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->contestant = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
gTasks[taskId].func = debug_80C7A54;
}
else if (gMain.newKeys & B_BUTTON)
{
- gUnknown_Debug_2038A20->unk5 = 0;
+ gUnknown_Debug_2038A20->contestant = 0;
REG_WIN0H = 0x51EF;
REG_WIN0V = 0x699F;
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x80, 32);
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x80, 32);
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
- CpuCopy16(gUnknown_Debug_2038A20->unk10, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferUnfaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferFaded + 0x80, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferUnfaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
+ CpuCopy16(gUnknown_Debug_2038A20->personality2, gPlttBufferFaded + 0x100 + gUnknown_Debug_2038A20->unk6 * 16, 32);
gTasks[taskId].func = debug_80C7A54;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN && gUnknown_Debug_2038A20->unkA < 2)
diff --git a/src/decompress.c b/src/decompress.c
index c0158ada8..40d602812 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -5,8 +5,6 @@
#include "text.h"
#include "ewram.h"
-#define WRAM ewram_addr // using gSharedMem doesn't match
-
void LZDecompressWram(const void *src, void *dest)
{
LZ77UnCompWram(src, dest);
@@ -21,8 +19,8 @@ void LoadCompressedObjectPic(const struct CompressedSpriteSheet *src)
{
struct SpriteSheet dest;
- LZ77UnCompWram(src->data, (void *)WRAM);
- dest.data = (void *)WRAM;
+ LZ77UnCompWram(src->data, (void *)EWRAM);
+ dest.data = (void *)EWRAM;
dest.size = src->size;
dest.tag = src->tag;
LoadSpriteSheet(&dest);
@@ -43,8 +41,8 @@ void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src)
{
struct SpritePalette dest;
- LZ77UnCompWram(src->data, (void *)WRAM);
- dest.data = (void *)WRAM;
+ LZ77UnCompWram(src->data, (void *)EWRAM);
+ dest.data = (void *)EWRAM;
dest.tag = src->tag;
LoadSpritePalette(&dest);
}
@@ -67,20 +65,22 @@ void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, u8 coords
LZ77UnCompWram(src->data, dest);
}
-void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 coords, u32 y_offset, u32 d, void *dest, s32 species, u32 pid)
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 coords, u32 y_offset,
+ void *decompBuf, void *dest, s32 species, u32 pid)
{
u32 frontOrBack;
- // gUnknown_081FAF4C appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
- if (dest == gUnknown_081FAF4C[0] || dest == gUnknown_081FAF4C[2])
+ // gMonSpriteGfx_Sprite_ptr appears to be a list of pointers to locations to store poke pics for back and front pic here. the first and third pointers are used for back while the others are used for front.
+ if (dest == gMonSpriteGfx_Sprite_ptr[0] || dest == gMonSpriteGfx_Sprite_ptr[2])
frontOrBack = 0; // backPic
else
frontOrBack = 1; // frontPic
- LoadSpecialPokePic(src, coords, y_offset, d, dest, species, pid, frontOrBack);
+ LoadSpecialPokePic(src, coords, y_offset, decompBuf, dest, species, pid, frontOrBack);
}
-void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 b, u32 c, u32 d, void *dest, s32 species, u32 pid, u32 frontOrBack)
+void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, u32 b, u32 c,
+ void *decompBuffer, void *dest, s32 species, u32 pid, u32 frontOrBack)
{
u8 frontOrBack8 = frontOrBack;
diff --git a/src/decoration.c b/src/decoration.c
index 35b9ff47f..da1ee8530 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1457,19 +1457,19 @@ void DecorationPC(u8 taskId)
void Task_SecretBasePC_Decoration(u8 taskId)
{
DecorationPC(taskId);
- ewram_1f000.items = gSaveBlock1.secretBases[0].decorations;
- ewram_1f000.pos = gSaveBlock1.secretBases[0].decorationPos;
- ewram_1f000.size = sizeof gSaveBlock1.secretBases[0].decorations;
- ewram_1f000.isPlayerRoom = 0;
+ sDecorationContext.items = gSaveBlock1.secretBases[0].decorations;
+ sDecorationContext.pos = gSaveBlock1.secretBases[0].decorationPos;
+ sDecorationContext.size = sizeof gSaveBlock1.secretBases[0].decorations;
+ sDecorationContext.isPlayerRoom = 0;
}
void DoPlayerPCDecoration(u8 taskId)
{
DecorationPC(taskId);
- ewram_1f000.items = gSaveBlock1.playerRoomDecor;
- ewram_1f000.pos = gSaveBlock1.playerRoomDecorPos;
- ewram_1f000.size = sizeof gSaveBlock1.playerRoomDecor;
- ewram_1f000.isPlayerRoom = 1;
+ sDecorationContext.items = gSaveBlock1.playerRoomDecor;
+ sDecorationContext.pos = gSaveBlock1.playerRoomDecorPos;
+ sDecorationContext.size = sizeof gSaveBlock1.playerRoomDecor;
+ sDecorationContext.isPlayerRoom = 1;
}
void sub_80FE2B4(void)
@@ -1522,7 +1522,7 @@ void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId)
Menu_EraseWindowRect(0, 0, 10, 9);
Menu_BlankWindowRect(2, 15, 27, 18);
FreeSpritePaletteByTag(6);
- if (ewram_1f000.isPlayerRoom == 0)
+ if (sDecorationContext.isPlayerRoom == 0)
{
ScriptContext1_SetupScript(SecretBase_EventScript_PCCancel);
DestroyTask(taskId);
@@ -1572,7 +1572,7 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings
Menu_DrawStdWindowFrame(0, 0, 14, 19);
for (decoCat=0; decoCat<8; decoCat++)
{
- if (ewram_1f000.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION)
+ if (sDecorationContext.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION)
{
sub_80FE470(decoCat, 1, 2 * decoCat + 1, 13); // Selectable
} else
@@ -1811,7 +1811,7 @@ void sub_80FEABC(u8 taskId, u8 dummy1)
}
if (gUnknown_020388D0[i])
{
- if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION && gTasks[taskId].data[11] == 0)
+ if (sDecorationContext.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION && gTasks[taskId].data[11] == 0)
{
StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[i]].name);
sub_8072A18(gUnknown_083EC65A, 0x08, 8 * ni, 0x68, 1);
@@ -2180,9 +2180,9 @@ void sub_80FF474(void)
bool8 sub_80FF58C/*IsThereRoomForMoreDecorations*/(void)
{
u16 i;
- for (i=0; i<ewram_1f000.size; i++)
+ for (i=0; i<sDecorationContext.size; i++)
{
- if (ewram_1f000.items[i] == 0)
+ if (sDecorationContext.items[i] == 0)
{
return TRUE;
}
@@ -2192,7 +2192,7 @@ bool8 sub_80FF58C/*IsThereRoomForMoreDecorations*/(void)
void sub_80FF5BC(u8 taskId)
{
- if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION)
+ if (sDecorationContext.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION)
{
sub_80FEF74();
sub_80FED1C();
@@ -2208,8 +2208,8 @@ void sub_80FF5BC(u8 taskId)
{
sub_80FEF74();
sub_80FED1C();
- ConvertIntToDecimalStringN(gStringVar1, ewram_1f000.size, STR_CONV_MODE_RIGHT_ALIGN, 2);
- if (!ewram_1f000.isPlayerRoom)
+ ConvertIntToDecimalStringN(gStringVar1, sDecorationContext.size, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ if (!sDecorationContext.isPlayerRoom)
{
StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor);
} else
@@ -2566,23 +2566,23 @@ void sub_81000C4(u8 taskId)
gUnknown_020391A6 = gTasks[taskId].data[1] - 7;
ScriptContext1_SetupScript(gUnknown_081A2F7B);
}
- gSprites[gUnknown_020391A8].pos1.y += 2;
+ gSprites[gUnknown_020391A8].y += 2;
sub_810028C(taskId);
}
void sub_8100174(u8 taskId)
{
u16 i;
- for (i=0; i<ewram_1f000.size; i++)
+ for (i=0; i<sDecorationContext.size; i++)
{
- if (ewram_1f000.items[i] == 0)
+ if (sDecorationContext.items[i] == 0)
{
- ewram_1f000.items[i] = gUnknown_020388D0[gUnknown_020388F5];
- ewram_1f000.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7);
+ sDecorationContext.items[i] = gUnknown_020388D0[gUnknown_020388F5];
+ sDecorationContext.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7);
break;
}
}
- if (!ewram_1f000.isPlayerRoom)
+ if (!sDecorationContext.isPlayerRoom)
{
for (i=0; i<16; i++)
{
@@ -2993,8 +2993,6 @@ const struct SpriteTemplate gSpriteTemplate_83ECA88 = {
const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C};
-u8 *const unref_label_083ECAA8[] = {gSharedMem};
-
void sub_81008BC(struct UnkStruct_02038900 *unk_02038900)
{
u8 i;
@@ -3066,8 +3064,8 @@ void sub_8100A0C(u8 taskId)
void sub_8100A60(u8 a0)
{
- ewram_1f000.items[a0] = 0;
- ewram_1f000.pos[a0] = 0;
+ sDecorationContext.items[a0] = 0;
+ sDecorationContext.pos[a0] = 0;
}
void sub_8100A7C(void)
@@ -3078,7 +3076,7 @@ void sub_8100A7C(void)
if (gSpecialVar_0x8004 == gUnknown_02039234)
{
gSpecialVar_Result = 1;
- } else if (gDecorations[ewram_1f000.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT)
+ } else if (gDecorations[sDecorationContext.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT)
{
gSpecialVar_0x8005 = gUnknown_020391B4[gSpecialVar_0x8004].flagId;
sub_8100A60(gUnknown_020391B4[gSpecialVar_0x8004].decorId);
@@ -3116,12 +3114,12 @@ void sub_8100B6C(void)
u8 permission;
for (i=0; i<gUnknown_02039234; i++)
{
- permission = gDecorations[ewram_1f000.items[gUnknown_020391B4[i].decorId]].permission;
- x = ewram_1f000.pos[gUnknown_020391B4[i].decorId] >> 4;
- y = ewram_1f000.pos[gUnknown_020391B4[i].decorId] & 0xf;
+ permission = gDecorations[sDecorationContext.items[gUnknown_020391B4[i].decorId]].permission;
+ x = sDecorationContext.pos[gUnknown_020391B4[i].decorId] >> 4;
+ y = sDecorationContext.pos[gUnknown_020391B4[i].decorId] & 0xf;
if (permission != DECORPERM_SOLID_MAT)
{
- if (ewram_1f000.items[gUnknown_020391B4[i].decorId] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(x + 7, y + 7) == 0x28c)
+ if (sDecorationContext.items[gUnknown_020391B4[i].decorId] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(x + 7, y + 7) == 0x28c)
{
gUnknown_020391B4[i].height++;
}
@@ -3173,9 +3171,9 @@ void sub_8100C88(u8 taskId)
bool8 sub_8100D38(u8 taskId)
{
u16 i;
- for (i=0; i<ewram_1f000.size; i++)
+ for (i=0; i<sDecorationContext.size; i++)
{
- if (ewram_1f000.items[i] != 0)
+ if (sDecorationContext.items[i] != 0)
{
gTasks[taskId].data[13] = i;
return TRUE;
@@ -3241,8 +3239,8 @@ void sub_8100EEC(u8 taskId)
gSprites[gUnknown_020391A8].data[7] = 0;
gSprites[gUnknown_020391A8].invisible = FALSE;
gSprites[gUnknown_020391A8].callback = sub_8101698;
- gSprites[gUnknown_020391A9].pos1.x = 0x88;
- gSprites[gUnknown_020391A9].pos1.y = 0x48;
+ gSprites[gUnknown_020391A9].x = 0x88;
+ gSprites[gUnknown_020391A9].y = 0x48;
gTasks[taskId].data[10] = 0;
gTasks[taskId].func = sub_8100494;
}
@@ -3345,8 +3343,8 @@ void sub_8101198(u8 x, u8 y)
{
gSprites[gUnknown_020391A8].invisible = TRUE;
gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy;
- gSprites[gUnknown_020391A9].pos1.x = 0x88 + x * 16;
- gSprites[gUnknown_020391A9].pos1.y = 0x48 + y * 16;
+ gSprites[gUnknown_020391A9].x = 0x88 + x * 16;
+ gSprites[gUnknown_020391A9].y = 0x48 + y * 16;
}
bool8 sub_8101200(u8 taskId, u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B4)
@@ -3357,9 +3355,9 @@ bool8 sub_8101200(u8 taskId, u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B
u8 yOff;
x = gTasks[taskId].data[0] - 7;
y = gTasks[taskId].data[1] - 7;
- xOff = ewram_1f000.pos[decorIdx] >> 4;
- yOff = ewram_1f000.pos[decorIdx] & 0xf;
- if (ewram_1f000.items[decorIdx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28c)
+ xOff = sDecorationContext.pos[decorIdx] >> 4;
+ yOff = sDecorationContext.pos[decorIdx] & 0xf;
+ if (sDecorationContext.items[decorIdx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28c)
{
unk_020391B4->height--;
}
@@ -3376,8 +3374,8 @@ void sub_81012A0(void)
u8 xOff;
u8 yOff;
u16 i;
- xOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] >> 4;
- yOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] & 0xf;
+ xOff = sDecorationContext.pos[gUnknown_020391B4[gUnknown_02039234].decorId] >> 4;
+ yOff = sDecorationContext.pos[gUnknown_020391B4[gUnknown_02039234].decorId] & 0xf;
for (i=0; i<0x40; i++)
{
if (gSaveBlock1.objectEventTemplates[i].x == xOff && gSaveBlock1.objectEventTemplates[i].y == yOff && !FlagGet(gSaveBlock1.objectEventTemplates[i].flagId))
@@ -3391,13 +3389,13 @@ void sub_81012A0(void)
bool8 sub_8101340(u8 taskId)
{
u16 i;
- for (i=0; i<ewram_1f000.size; i++)
+ for (i=0; i<sDecorationContext.size; i++)
{
- if (ewram_1f000.items[i] != 0)
+ if (sDecorationContext.items[i] != 0)
{
- if (gDecorations[ewram_1f000.items[i]].permission == DECORPERM_SOLID_MAT)
+ if (gDecorations[sDecorationContext.items[i]].permission == DECORPERM_SOLID_MAT)
{
- sub_8101118(ewram_1f000.items[i], gUnknown_020391B4);
+ sub_8101118(sDecorationContext.items[i], gUnknown_020391B4);
if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE)
{
gUnknown_020391B4->decorId = i;
@@ -3417,11 +3415,11 @@ void sub_81013B8(u8 a0, u8 a1, u8 a2, u8 a3)
u8 xOff;
u8 yOff;
u8 decorIdx;
- for (i=0; i<ewram_1f000.size; i++)
+ for (i=0; i<sDecorationContext.size; i++)
{
- decorIdx = ewram_1f000.items[i];
- xOff = ewram_1f000.pos[i] >> 4;
- yOff = ewram_1f000.pos[i] & 0xf;
+ decorIdx = sDecorationContext.items[i];
+ xOff = sDecorationContext.pos[i] >> 4;
+ yOff = sDecorationContext.pos[i] & 0xf;
if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && a0 <= xOff && a1 <= yOff && a2 >= xOff && a3 >= yOff)
{
gUnknown_020391B4[gUnknown_02039234].decorId = i;
@@ -3442,9 +3440,9 @@ void sub_8101460(u8 taskId)
gUnknown_02039234 = 0;
if (sub_8101340(taskId) != TRUE)
{
- for (i = 0; i < ewram_1f000.size; i++)
+ for (i = 0; i < sDecorationContext.size; i++)
{
- var1 = ewram_1f000.items[i];
+ var1 = sDecorationContext.items[i];
if (var1 != 0)
{
sub_8101118(var1, gUnknown_020391B4);
@@ -3458,8 +3456,8 @@ void sub_8101460(u8 taskId)
}
if (gUnknown_02039234 != 0)
{
- xOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] >> 4;
- yOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] & 0xf;
+ xOff = sDecorationContext.pos[gUnknown_020391B4[0].decorId] >> 4;
+ yOff = sDecorationContext.pos[gUnknown_020391B4[0].decorId] & 0xf;
var1 = yOff - gUnknown_020391B4[0].height + 1;
var2 = gUnknown_020391B4[0].width + xOff - 1;
diff --git a/src/dewford_trend.c b/src/dewford_trend.c
index 9afb7a16d..bd6f6ce43 100644
--- a/src/dewford_trend.c
+++ b/src/dewford_trend.c
@@ -161,7 +161,7 @@ static void sub_80FA46C(struct EasyChatPair *s, u16 b, u8 c)
}
}
-void sub_80FA4E4(void *a, u32 b, u8 unused)
+void ReceiveDewfordTrendData(void * a, u32 b, u8 unused)
{
u16 i;
u16 j;
@@ -171,9 +171,9 @@ void sub_80FA4E4(void *a, u32 b, u8 unused)
u16 players = GetLinkPlayerCount();
for (i = 0; i < players; i++)
- memcpy(&ARRAY_2007800[i * 5], (u8 *)a + i * b, 40);
- src = ARRAY_2007800;
- dst = ARRAY_2007900;
+ memcpy(&eLinkedDewfordTrendsBuffer[i * 5], (u8 *)a + i * b, 40);
+ src = eLinkedDewfordTrendsBuffer;
+ dst = eSavedDewfordTrendsBuffer;
r7 = 0;
for (i = 0; i < players; i++)
{
@@ -187,16 +187,16 @@ void sub_80FA4E4(void *a, u32 b, u8 unused)
}
else
{
- if (ARRAY_2007900[foo].unk0_0 < src->unk0_0)
+ if (eSavedDewfordTrendsBuffer[foo].unk0_0 < src->unk0_0)
{
- ARRAY_2007900[foo] = *src;
+ eSavedDewfordTrendsBuffer[foo] = *src;
}
}
src++;
}
}
- sub_80FA46C(ARRAY_2007900, r7, 2);
- src = ARRAY_2007900;
+ sub_80FA46C(eSavedDewfordTrendsBuffer, r7, 2);
+ src = eSavedDewfordTrendsBuffer;
dst = gSaveBlock1.easyChatPairs;
for (i = 0; i < 5; i++)
*(dst++) = *(src++);
@@ -320,7 +320,7 @@ static bool8 IsEasyChatPairEqual(u16 *words1, u16 *words2)
static s16 sub_80FA828(struct EasyChatPair *a, u16 b)
{
s16 i;
- struct EasyChatPair *s = ARRAY_2007900;
+ struct EasyChatPair *s = eSavedDewfordTrendsBuffer;
for (i = 0; i < b; i++)
{
diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c
index 70626b367..520aa5807 100644
--- a/src/easy_chat_2.c
+++ b/src/easy_chat_2.c
@@ -145,8 +145,8 @@ void sub_80E8268(void)
u8 spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83DBBFC, 0, 0, 0);
- gSprites[spriteId].pos1.y = gEasyChatStruct->unk8A * 8 + 8;
- gSprites[spriteId].pos1.x = gEasyChatStruct->unk88 * 8 + 4;
+ gSprites[spriteId].y = gEasyChatStruct->unk8A * 8 + 8;
+ gSprites[spriteId].x = gEasyChatStruct->unk88 * 8 + 4;
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = 0;
gEasyChatStruct->unk98 = &gSprites[spriteId];
@@ -168,16 +168,16 @@ void sub_80E82BC(struct Sprite *sprite)
if (r5 == gEasyChatStruct->unk84)
{
- sprite->pos1.y = 96;
- sprite->pos1.x = (r4 * 7 + 3) * 8 + 4;
+ sprite->y = 96;
+ sprite->x = (r4 * 7 + 3) * 8 + 4;
}
else
{
- sprite->pos1.y = (gEasyChatStruct->unk8A + r5 * 2) * 8 + 8;
- sprite->pos1.x = (gEasyChatStruct->unk88 + r7 + r4 * 11) * 8 + 4;
+ sprite->y = (gEasyChatStruct->unk8A + r5 * 2) * 8 + 8;
+ sprite->x = (gEasyChatStruct->unk88 + r7 + r4 * 11) * 8 + 4;
}
- sprite->pos2.x = -6;
+ sprite->x2 = -6;
sprite->data[0] = 0;
}
else
@@ -185,8 +185,8 @@ void sub_80E82BC(struct Sprite *sprite)
if (++sprite->data[0] > 2)
{
sprite->data[0] = 0;
- if (++sprite->pos2.x > 0)
- sprite->pos2.x = -6;
+ if (++sprite->x2 > 0)
+ sprite->x2 = -6;
}
}
}
@@ -198,17 +198,17 @@ void sub_80E8398(u8 a)
{
case 0:
gEasyChatStruct->unk98->data[1] = a;
- gEasyChatStruct->unk98->pos2.x = a;
+ gEasyChatStruct->unk98->x2 = a;
gEasyChatStruct->unk98->invisible = FALSE;
break;
case 1:
gEasyChatStruct->unk98->data[1] = a;
- gEasyChatStruct->unk98->pos2.x = 0;
+ gEasyChatStruct->unk98->x2 = 0;
gEasyChatStruct->unk98->invisible = FALSE;
break;
case 2:
gEasyChatStruct->unk98->data[1] = 1;
- gEasyChatStruct->unk98->pos2.x = 0;
+ gEasyChatStruct->unk98->x2 = 0;
gEasyChatStruct->unk98->invisible = TRUE;
break;
}
@@ -434,24 +434,24 @@ void sub_80E85F8(struct Sprite *sprite)
switch (sprite->data[2])
{
case 0:
- sprite->pos1.x = gEasyChatStruct->unk1A9 * 88 + 32;
- sprite->pos1.y = (gEasyChatStruct->unk1A8 - gEasyChatStruct->unk1B5) * 16 + 96;
+ sprite->x = gEasyChatStruct->unk1A9 * 88 + 32;
+ sprite->y = (gEasyChatStruct->unk1A8 - gEasyChatStruct->unk1B5) * 16 + 96;
break;
case 1:
#if ENGLISH
- sprite->pos1.x = 216;
+ sprite->x = 216;
#else
- sprite->pos1.x = 214;
+ sprite->x = 214;
#endif
- sprite->pos1.y = gEasyChatStruct->unk1A8 * 16 + 96;
+ sprite->y = gEasyChatStruct->unk1A8 * 16 + 96;
break;
case 2:
- sprite->pos1.x = 151;
- sprite->pos1.y = 96;
+ sprite->x = 151;
+ sprite->y = 96;
break;
case 3:
- sprite->pos1.x = gUnknown_083DBCC4[gEasyChatStruct->unk1A8][gEasyChatStruct->unk1A9] * 8 + 31;
- sprite->pos1.y = (gEasyChatStruct->unk1A8 - gEasyChatStruct->unk1B5) * 16 + 96;
+ sprite->x = gUnknown_083DBCC4[gEasyChatStruct->unk1A8][gEasyChatStruct->unk1A9] * 8 + 31;
+ sprite->y = (gEasyChatStruct->unk1A8 - gEasyChatStruct->unk1B5) * 16 + 96;
break;
}
}
@@ -462,8 +462,8 @@ void sub_80E872C(struct Sprite *sprite)
{
if (gEasyChatStruct->unk96 != 0 && sprite->data[2] == 0)
{
- sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 32;
- sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y;
+ sprite->x = gEasyChatStruct->unk9C->x + 32;
+ sprite->y = gEasyChatStruct->unk9C->y;
}
}
@@ -474,18 +474,18 @@ void sub_80E8760(struct Sprite *sprite)
switch (sprite->data[2])
{
case 0:
- sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 64;
- sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y;
+ sprite->x = gEasyChatStruct->unk9C->x + 64;
+ sprite->y = gEasyChatStruct->unk9C->y;
break;
#if GERMAN
case 1:
- sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 28;
- sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y;
+ sprite->x = gEasyChatStruct->unk9C->x + 28;
+ sprite->y = gEasyChatStruct->unk9C->y;
break;
#endif
case 2:
- sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 21;
- sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y;
+ sprite->x = gEasyChatStruct->unk9C->x + 21;
+ sprite->y = gEasyChatStruct->unk9C->y;
break;
}
}
@@ -494,7 +494,7 @@ void sub_80E8760(struct Sprite *sprite)
void sub_80E87A4(u8 a)
{
gEasyChatStruct->unkA8->data[1] = (a == 0);
- gEasyChatStruct->unkA8->pos2.x = 0;
+ gEasyChatStruct->unkA8->x2 = 0;
}
void sub_80E87CC(u8 a)
@@ -522,9 +522,9 @@ void sub_80E8860(struct Sprite *sprite)
{
if (gEasyChatStruct->unk1B9 != 0)
{
- sprite->pos1.x = gEasyChatStruct->unk99A5 * 88 + 44;
- sprite->pos1.y = (gEasyChatStruct->unk99A4 - gEasyChatStruct->unk9A29) * 16 + 96;
- sprite->pos2.x = -6;
+ sprite->x = gEasyChatStruct->unk99A5 * 88 + 44;
+ sprite->y = (gEasyChatStruct->unk99A4 - gEasyChatStruct->unk9A29) * 16 + 96;
+ sprite->x2 = -6;
sprite->data[0] = 0;
}
else
@@ -533,9 +533,9 @@ void sub_80E8860(struct Sprite *sprite)
if (sprite->data[0] > 2)
{
sprite->data[0] = 0;
- sprite->pos2.x++;
- if (sprite->pos2.x > 0)
- sprite->pos2.x = -6;
+ sprite->x2++;
+ if (sprite->x2 > 0)
+ sprite->x2 = -6;
}
}
}
@@ -586,7 +586,7 @@ void sub_80E8958(u8 animNum)
for (i = 0; i < 2; i++)
{
- gEasyChatStruct->unkAC[i]->pos1.x = r9;
+ gEasyChatStruct->unkAC[i]->x = r9;
gEasyChatStruct->unkAC[i]->invisible = FALSE;
gEasyChatStruct->unkAC[i]->data[1] = 1;
StartSpriteAnim(gEasyChatStruct->unkAC[i], animNum);
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index fdc12129e..8ff9f28a7 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -24,7 +24,7 @@
#include "trig.h"
#include "trade.h"
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
struct EggHatchData
{
@@ -356,13 +356,13 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES);
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
- HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, ewram0_6, gUnknown_081FAF4C[2 * a0 + 1], species, pid);
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, gSharedMem, gMonSpriteGfx_Sprite_ptr[2 * a0 + 1], species, pid);
LoadCompressedObjectPalette(GetMonSpritePalStruct(mon));
}
break;
case 1:
GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(mon)->tag, r5);
- spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6);
+ spriteID = CreateSprite(&gCreatingSpriteTemplate, 120, 70, 6);
gSprites[spriteID].invisible = TRUE;
gSprites[spriteID].callback = SpriteCallbackDummy;
break;
@@ -419,8 +419,8 @@ static void CB2_EggHatch_0(void)
break;
case 2:
LZDecompressVram(&gBattleTextboxTiles, (void*)(VRAM));
- CpuSet(&gBattleTextboxTilemap, ewram0_7, 0x800);
- DmaCopy16(3, ewram0_7, (void*)(VRAM + 0x2800), 0x500);
+ CpuSet(&gBattleTextboxTilemap, gSharedMem, 0x800);
+ DmaCopy16(3, gSharedMem, (void*)(VRAM + 0x2800), 0x500);
LoadCompressedPalette(&gBattleTextboxPalette, 0, 0x20);
gMain.state++;
break;
@@ -593,7 +593,7 @@ static void SpriteCB_Egg_0(struct Sprite* sprite)
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 1);
+ sprite->x2 = Sin(sprite->data[1], 1);
if (sprite->data[0] == 15)
{
PlaySE(SE_BALL);
@@ -616,7 +616,7 @@ static void SpriteCB_Egg_1(struct Sprite* sprite)
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
+ sprite->x2 = Sin(sprite->data[1], 2);
if (sprite->data[0] == 15)
{
PlaySE(SE_BALL);
@@ -637,13 +637,13 @@ static void SpriteCB_Egg_2(struct Sprite* sprite)
sprite->callback = SpriteCB_Egg_3;
sprite->data[0] = 0;
species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES);
- gSprites[gEggHatchData->pokeSpriteID].pos2.x = 0;
- gSprites[gEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset;
+ gSprites[gEggHatchData->pokeSpriteID].x2 = 0;
+ gSprites[gEggHatchData->pokeSpriteID].y2 = gMonFrontPicCoords[species].y_offset;
}
else
{
sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data[1], 2);
+ sprite->x2 = Sin(sprite->data[1], 2);
if (sprite->data[0] == 15)
{
PlaySE(SE_BALL);
@@ -696,7 +696,7 @@ static void SpriteCB_Egg_5(struct Sprite* sprite)
if (sprite->data[0] == 8)
BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, FADE_COLOR_WHITE);
if (sprite->data[0] <= 9)
- gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1;
+ gSprites[gEggHatchData->pokeSpriteID].y -= 1;
if (sprite->data[0] > 40)
sprite->callback = SpriteCallbackDummy;
sprite->data[0]++;
@@ -707,18 +707,15 @@ static void SpriteCB_EggShard(struct Sprite* sprite)
sprite->data[4] += sprite->data[1];
sprite->data[5] += sprite->data[2];
- sprite->pos2.x = sprite->data[4] / 256;
- sprite->pos2.y = sprite->data[5] / 256;
+ sprite->x2 = sprite->data[4] / 256;
+ sprite->y2 = sprite->data[5] / 256;
sprite->data[2] += sprite->data[3];
- if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0)
+ if (sprite->y + sprite->y2 > sprite->y + 20 && sprite->data[2] > 0)
DestroySprite(sprite);
}
-// Converts a number to Q8.8 fixed-point format
-#define Q_8_8(n) ((s16)((n) * 256))
-
static const s16 sEggShardVelocities[][2] =
{
{Q_8_8(-1.5), Q_8_8(-3.75)},
@@ -764,7 +761,7 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8
static void EggHatchPrintMessage1(u8* src)
{
- Text_InitWindow8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
+ Contest_StartTextPrinter(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
}
static void EggHatchPrintMessage2(u8* src)
diff --git a/src/event_data.c b/src/event_data.c
index e114af901..b71ad77bd 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -62,9 +62,9 @@ void EnableNationalPokedex(void)
gSaveBlock2.pokedex.nationalMagic = 0xDA;
*nationalDexVar = 0x302;
FlagSet(FLAG_SYS_NATIONAL_DEX);
- gSaveBlock2.pokedex.unknown1 = 1;
+ gSaveBlock2.pokedex.mode = 1;
gSaveBlock2.pokedex.order = 0;
- sub_808C0A0();
+ ResetPokedexScrollPositions();
}
bool32 IsNationalPokedexEnabled(void)
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index 2ccc15777..61f4160f4 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -1228,8 +1228,7 @@ static bool8 GetAvailableObjectEventId(u16 localId, u8 mapNum, u8 mapGroup, u8 *
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
{
- if (!gObjectEvents[i].active)
- break;
+ if (!gObjectEvents[i].active) break; // one-line required to match with -g
if (gObjectEvents[i].localId == localId && gObjectEvents[i].mapNum == mapNum && gObjectEvents[i].mapGroup == mapGroup)
return TRUE;
}
@@ -1319,11 +1318,11 @@ static u8 TrySetupObjectEventSprite(struct ObjectEventTemplate *objectEventTempl
return OBJECT_EVENTS_COUNT;
}
sprite = &gSprites[spriteId];
- sub_8060388(cameraDeltaX + objectEvent->currentCoords.x, cameraDeltaY + objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sub_8060388(cameraDeltaX + objectEvent->currentCoords.x, cameraDeltaY + objectEvent->currentCoords.y, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
sprite->oam.paletteNum = graphicsInfo->paletteSlot;
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = objectEventId;
@@ -1471,7 +1470,7 @@ u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction)
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.y += sprite->centerToCornerVecY;
+ sprite->y += sprite->centerToCornerVecY;
sprite->oam.paletteNum = graphicsInfo->paletteSlot;
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = b;
@@ -1617,11 +1616,11 @@ void sub_805B75C(u8 objectEventId, s16 x, s16 y)
if (spriteId != MAX_SPRITES)
{
sprite = &gSprites[spriteId];
- sub_8060388(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sub_8060388(x + objectEvent->currentCoords.x, y + objectEvent->currentCoords.y, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
sprite->images = graphicsInfo->images;
if (objectEvent->movementType == MOVEMENT_TYPE_PLAYER)
{
@@ -1689,11 +1688,11 @@ void ObjectEventSetGraphicsId(struct ObjectEvent *objectEvent, u8 graphicsId)
sprite->oam.paletteNum = graphicsInfo->paletteSlot;
objectEvent->inanimate = graphicsInfo->inanimate;
objectEvent->graphicsId = graphicsId;
- sub_80603CC(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sub_80603CC(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
if (objectEvent->trackedByCamera)
{
CameraObjectReset1();
@@ -1847,8 +1846,8 @@ void sub_805BD90(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
if (!TryGetObjectEventIdByLocalIdAndMap(localId, mapNum, mapGroup, &objectEventId))
{
sprite = &gSprites[gObjectEvents[objectEventId].spriteId];
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
}
}
@@ -1977,11 +1976,11 @@ void sub_805C058(struct ObjectEvent *objectEvent, s16 x, s16 y)
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
SetObjectEventCoords(objectEvent, x, y);
- sub_80603CC(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->pos1.x, &sprite->pos1.y);
+ sub_80603CC(objectEvent->currentCoords.x, objectEvent->currentCoords.y, &sprite->x, &sprite->y);
sprite->centerToCornerVecX = -(graphicsInfo->width >> 1);
sprite->centerToCornerVecY = -(graphicsInfo->height >> 1);
- sprite->pos1.x += 8;
- sprite->pos1.y += 16 + sprite->centerToCornerVecY;
+ sprite->x += 8;
+ sprite->y += 16 + sprite->centerToCornerVecY;
sub_805B914(objectEvent);
if (objectEvent->trackedByCamera)
CameraObjectReset1();
@@ -2080,8 +2079,8 @@ static void ObjectCB_CameraObject(struct Sprite *sprite)
static void CameraObject_0(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->x = gSprites[sprite->data[0]].x;
+ sprite->y = gSprites[sprite->data[0]].y;
sprite->invisible = TRUE;
sprite->data[1] = 1;
CameraObject_1(sprite);
@@ -2089,19 +2088,19 @@ static void CameraObject_0(struct Sprite *sprite)
static void CameraObject_1(struct Sprite *sprite)
{
- s16 x = gSprites[sprite->data[0]].pos1.x;
- s16 y = gSprites[sprite->data[0]].pos1.y;
+ s16 x = gSprites[sprite->data[0]].x;
+ s16 y = gSprites[sprite->data[0]].y;
- sprite->data[2] = x - sprite->pos1.x;
- sprite->data[3] = y - sprite->pos1.y;
- sprite->pos1.x = x;
- sprite->pos1.y = y;
+ sprite->data[2] = x - sprite->x;
+ sprite->data[3] = y - sprite->y;
+ sprite->x = x;
+ sprite->y = y;
}
static void CameraObject_2(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->x = gSprites[sprite->data[0]].x;
+ sprite->y = gSprites[sprite->data[0]].y;
sprite->data[2] = 0;
sprite->data[3] = 0;
}
@@ -2168,8 +2167,8 @@ u8 unref_sub_805C43C(struct Sprite *src, s16 x, s16 y, u8 subpriority)
if (!gSprites[i].inUse)
{
gSprites[i] = *src;
- gSprites[i].pos1.x = x;
- gSprites[i].pos1.y = y;
+ gSprites[i].x = x;
+ gSprites[i].y = y;
gSprites[i].subpriority = subpriority;
break;
}
@@ -2186,8 +2185,8 @@ u8 CreateCopySpriteAt(struct Sprite *src, s16 x, s16 y, u8 subpriority)
if (!gSprites[i].inUse)
{
gSprites[i] = *src;
- gSprites[i].pos1.x = x;
- gSprites[i].pos1.y = y;
+ gSprites[i].x = x;
+ gSprites[i].y = y;
gSprites[i].subpriority = subpriority;
return i;
}
@@ -7174,13 +7173,13 @@ static void UpdateObjectEventIsOffscreen(struct ObjectEvent *objectEvent, struct
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
if (sprite->coordOffsetEnabled)
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
}
else
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
}
x2 = graphicsInfo->width + (s16)x;
@@ -7602,7 +7601,7 @@ void ObjectEventUpdateZCoord(struct ObjectEvent *objEvent)
void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
{
s32 tmp = sprite->centerToCornerVecY;
- u32 tmpa = *(u16 *)&sprite->pos1.y;
+ u32 tmpa = *(u16 *)&sprite->y;
u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
s32 tmp2 = (tmpa - tmp) + tmpb;
u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
@@ -8003,32 +8002,32 @@ void UnfreezeObjectEvents(void)
static void Step1(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += sDirectionToVectors[dir].x;
- sprite->pos1.y += sDirectionToVectors[dir].y;
+ sprite->x += sDirectionToVectors[dir].x;
+ sprite->y += sDirectionToVectors[dir].y;
}
static void Step2(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y;
+ sprite->x += 2 * (u16) sDirectionToVectors[dir].x;
+ sprite->y += 2 * (u16) sDirectionToVectors[dir].y;
}
static void Step3(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
+ sprite->x += 2 * (u16) sDirectionToVectors[dir].x + (u16) sDirectionToVectors[dir].x;
+ sprite->y += 2 * (u16) sDirectionToVectors[dir].y + (u16) sDirectionToVectors[dir].y;
}
static void Step4(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 4 * (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 4 * (u16) sDirectionToVectors[dir].y;
+ sprite->x += 4 * (u16) sDirectionToVectors[dir].x;
+ sprite->y += 4 * (u16) sDirectionToVectors[dir].y;
}
static void Step8(struct Sprite *sprite, u8 dir)
{
- sprite->pos1.x += 8 * (u16) sDirectionToVectors[dir].x;
- sprite->pos1.y += 8 * (u16) sDirectionToVectors[dir].y;
+ sprite->x += 8 * (u16) sDirectionToVectors[dir].x;
+ sprite->y += 8 * (u16) sDirectionToVectors[dir].y;
}
static void oamt_npc_ministep_reset(struct Sprite *sprite, u8 direction, u8 a3)
@@ -8181,7 +8180,7 @@ u8 sub_8064704(struct Sprite *sprite)
if (sprite->data[4])
Step1(sprite, sprite->data[3]);
- sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+ sprite->y2 = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
sprite->data[6]++;
@@ -8190,7 +8189,7 @@ u8 sub_8064704(struct Sprite *sprite)
if (sprite->data[6] >= v5[sprite->data[4]])
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
v2 = -1;
}
@@ -8206,7 +8205,7 @@ u8 sub_806478C(struct Sprite *sprite)
if (sprite->data[4] && !(sprite->data[6] & 1))
Step1(sprite, sprite->data[3]);
- sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+ sprite->y2 = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
sprite->data[6]++;
@@ -8215,7 +8214,7 @@ u8 sub_806478C(struct Sprite *sprite)
if (sprite->data[6] >= v5[sprite->data[4]])
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
v2 = -1;
}
@@ -8261,13 +8260,13 @@ void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
if (sprite->coordOffsetEnabled)
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
}
else
{
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
}
x2 = x - (sprite->centerToCornerVecX >> 1);
@@ -8318,8 +8317,8 @@ void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
static void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
- gFieldEffectArguments[0] = sprite->pos1.x;
- gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
+ gFieldEffectArguments[0] = sprite->x;
+ gFieldEffectArguments[1] = sprite->y + (graphicsInfo->height >> 1) - 2;
gFieldEffectArguments[2] = 151;
gFieldEffectArguments[3] = 3;
FieldEffectStart(FLDEFF_RIPPLE);
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index d0f9d781d..ac19d9d3c 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -111,18 +111,18 @@ static void SetEvoSparklesMatrices(void)
static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite)
{
- if (sprite->pos1.y > 8)
+ if (sprite->y > 8)
{
u8 matrixNum;
- sprite->pos1.y = 88 - (sprite->data[7] * sprite->data[7]) / 80;
- sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
- sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->y = 88 - (sprite->data[7] * sprite->data[7]) / 80;
+ sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
+ sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
sprite->data[6] += 4;
if (sprite->data[7] & 1)
sprite->data[5]--;
sprite->data[7]++;
- if (sprite->pos2.y > 0)
+ if (sprite->y2 > 0)
sprite->subpriority = 1;
else
sprite->subpriority = 20;
@@ -151,11 +151,11 @@ static void CreatePreEvoSparkleSet1(u8 arg0)
static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite)
{
- if (sprite->pos1.y < 88)
+ if (sprite->y < 88)
{
- sprite->pos1.y = 8 + (sprite->data[7] * sprite->data[7]) / 5;
- sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
- sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->y = 8 + (sprite->data[7] * sprite->data[7]) / 5;
+ sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
+ sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
sprite->data[5] = 8 + Sin((u8)(sprite->data[7] * 4), 40);
sprite->data[7]++;
}
@@ -182,8 +182,8 @@ static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite)
{
if (sprite->data[5] > 8)
{
- sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]);
- sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->y2 = Sin((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->x2 = Cos((u8)(sprite->data[6]), sprite->data[5]);
sprite->data[5] -= sprite->data[3];
sprite->data[6] += 4;
}
@@ -210,13 +210,13 @@ static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1)
static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite)
{
if (!(sprite->data[7] & 3))
- sprite->pos1.y++;
+ sprite->y++;
if (sprite->data[6] < 128)
{
u8 matrixNum;
- sprite->pos2.y = -Sin((u8)(sprite->data[6]), sprite->data[5]);
- sprite->pos1.x = 120 + (sprite->data[3] * sprite->data[7]) / 3;
+ sprite->y2 = -Sin((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->x = 120 + (sprite->data[3] * sprite->data[7]) / 3;
sprite->data[6]++;
matrixNum = 31 - (sprite->data[6] * 12 / 128);
if (sprite->data[6] > 64)
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 47a453693..ac30d2c3f 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -64,11 +64,11 @@ void sub_8023AD8(void);
void nullsub_6(void);
bool32 IsHMMove2(u16 move);
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern u8 gBattleTerrain;
extern u8 gReservedSpritePaletteCount;
extern u16 gMoveToLearn;
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern bool8 gAffineAnimsDisabled;
extern u8 gDisplayedStringBattle[];
extern u8 gBattleTextBuff2[];
@@ -204,7 +204,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gBattle_BG3_X = 256;
gBattle_BG3_Y = 0;
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6C58);
gBattleTerrain = BATTLE_TERRAIN_PLAIN;
sub_800D6D4();
@@ -228,13 +228,13 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gMonFrontPicCoords[currSpecies].coords,
gMonFrontPicCoords[currSpecies].y_offset,
(void*)EWRAM,
- gUnknown_081FAF4C[1], currSpecies);
+ gMonSpriteGfx_Sprite_ptr[1], currSpecies);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(currSpecies, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x110, 0x20);
GetMonSpriteTemplate_803C56C(currSpecies, 1);
- gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
- sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+ gCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gCreatingSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 1;
@@ -245,13 +245,13 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gMonFrontPicCoords[speciesToEvolve].coords,
gMonFrontPicCoords[speciesToEvolve].y_offset,
(void*)EWRAM,
- gUnknown_081FAF4C[3], speciesToEvolve);
+ gMonSpriteGfx_Sprite_ptr[3], speciesToEvolve);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
GetMonSpriteTemplate_803C56C(speciesToEvolve, 3);
- gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
- sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+ gCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gCreatingSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 2;
gSprites[ID].invisible = TRUE;
@@ -269,7 +269,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
gTasks[ID].tEvoWasStopped = FALSE;
gTasks[ID].tPartyID = partyID;
- memcpy(ewram9000_hack, &gPlttBufferUnfaded[0x20], 0x60);
+ memcpy((void *)(EWRAM + 0x9000), &gPlttBufferUnfaded[0x20], 0x60);
REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP;
SetHBlankCallback(EvoDummyFunc);
@@ -312,7 +312,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
gBattle_BG3_X = 256;
gBattle_BG3_Y = 0;
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6C58);
gBattleTerrain = BATTLE_TERRAIN_PLAIN;
sub_800D6D4();
@@ -325,13 +325,13 @@ static void CB2_EvolutionSceneLoadGraphics(void)
gMonFrontPicCoords[postEvoSpecies].coords,
gMonFrontPicCoords[postEvoSpecies].y_offset,
(void*)EWRAM,
- gUnknown_081FAF4C[3], postEvoSpecies);
+ gMonSpriteGfx_Sprite_ptr[3], postEvoSpecies);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
GetMonSpriteTemplate_803C56C(postEvoSpecies, 3);
- gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
- sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+ gCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gCreatingSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 2;
@@ -395,7 +395,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
gMonFrontPicCoords[postEvoSpecies].coords,
gMonFrontPicCoords[postEvoSpecies].y_offset,
(void*)EWRAM,
- gUnknown_081FAF4C[3], postEvoSpecies);
+ gMonSpriteGfx_Sprite_ptr[3], postEvoSpecies);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
gMain.state++;
@@ -406,8 +406,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
u8 ID;
GetMonSpriteTemplate_803C56C(postEvoSpecies, 3);
- gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
- sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+ gCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gCreatingSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 2;
@@ -445,13 +445,13 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
gMonFrontPicCoords[speciesToEvolve].coords,
gMonFrontPicCoords[speciesToEvolve].y_offset,
(void*)EWRAM,
- gUnknown_081FAF4C[1], speciesToEvolve);
+ gMonSpriteGfx_Sprite_ptr[1], speciesToEvolve);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
GetMonSpriteTemplate_803C56C(speciesToEvolve, 1);
- gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
- sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+ gCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gCreatingSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = nullsub_37;
gSprites[ID].oam.paletteNum = 2;
@@ -476,7 +476,7 @@ static void CB2_EvolutionSceneUpdate(void)
{
AnimateSprites();
BuildOamBuffer();
- Text_UpdateWindowInBattle(&gUnknown_03004210);
+ Text_UpdateWindowInBattle(&gWindowTemplate_Contest_MoveDescription);
UpdatePaletteFade();
RunTasks();
}
@@ -549,12 +549,12 @@ static void Task_EvolutionScene(u8 taskID)
if (!gPaletteFade.active)
{
StringExpandPlaceholders(gStringVar4, BattleText_StartEvo);
- Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gStringVar4, 144, 2, 15);
gTasks[taskID].tState++;
}
break;
case 2: // wait for string, play cry
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
{
PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
gTasks[taskID].tState++;
@@ -628,7 +628,7 @@ static void Task_EvolutionScene(u8 taskID)
{
m4aMPlayAllStop();
PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
- memcpy(&gPlttBufferUnfaded[0x20], ewram9000_hack, 0x60);
+ memcpy(&gPlttBufferUnfaded[0x20], (void *)(EWRAM + 0x9000), 0x60);
BeginNormalPaletteFade(0x1C, 0, 16, 0, RGB(0, 0, 0));
gTasks[taskID].tState++;
}
@@ -637,7 +637,7 @@ static void Task_EvolutionScene(u8 taskID)
if (IsCryFinished() && !gPaletteFade.active)
{
StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo);
- Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gStringVar4, 144, 2, 15);
PlayBGM(MUS_EVOLVED);
gTasks[taskID].tState++;
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
@@ -649,7 +649,7 @@ static void Task_EvolutionScene(u8 taskID)
}
break;
case 14: // check if it wants to learn a new move
- if (gUnknown_03004210.state == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0)
{
var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
if (var != 0 && !gTasks[taskID].tEvoWasStopped)
@@ -706,59 +706,59 @@ static void Task_EvolutionScene(u8 taskID)
if (IsCryFinished())
{
StringExpandPlaceholders(gStringVar4, BattleText_StopEvo);
- Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gStringVar4, 144, 2, 15);
gTasks[taskID].tEvoWasStopped = TRUE;
gTasks[taskID].tState = 14;
}
break;
case 19: // pokemon learned a new move, print string and play a fanfare
- if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying())
{
sub_8024CEC();
PlayFanfare(MUS_LEVEL_UP);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[3]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskID].tState++;
}
break;
case 20: // wait a bit and check if can learn another move
- if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0)
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0)
gTasks[taskID].tState = 14;
break;
case 21: // try to learn a new move
switch (gTasks[taskID].tLearnMoveState)
{
case 0:
- if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying())
{
sub_8024CEC();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[4]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tLearnMoveState++;
}
break;
case 1:
- if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[5]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tLearnMoveState++;
}
break;
case 2:
- if (gUnknown_03004210.state != 0)
+ if (gWindowTemplate_Contest_MoveDescription.state != 0)
break;
if (!IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[6]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tData9 = 5;
gTasks[taskID].tdata10 = 9;
gTasks[taskID].tLearnMoveState++;
}
case 3:
- if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying())
{
sub_8023A80();
gTasks[taskID].tLearnMoveState++;
@@ -785,7 +785,7 @@ static void Task_EvolutionScene(u8 taskID)
{
sub_8023AD8();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
PlaySE(SE_SELECT);
if (sEvoCursorPos != 0)
gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10;
@@ -800,7 +800,7 @@ static void Task_EvolutionScene(u8 taskID)
{
sub_8023AD8();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
PlaySE(SE_SELECT);
gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10;
}
@@ -826,7 +826,11 @@ static void Task_EvolutionScene(u8 taskID)
if (IsHMMove2(move))
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[307]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription,
+ gDisplayedStringBattle,
+ 144,
+ 2,
+ 15);
gTasks[taskID].tLearnMoveState = 11;
}
else
@@ -839,42 +843,46 @@ static void Task_EvolutionScene(u8 taskID)
RemoveMonPPBonus(mon, var);
SetMonMoveSlot(mon, gMoveToLearn, var);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[207]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription,
+ gDisplayedStringBattle,
+ 144,
+ 2,
+ 15);
gTasks[taskID].tLearnMoveState++;
}
}
}
break;
case 7:
- if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[7]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tLearnMoveState++;
}
break;
case 8:
- if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[208]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tState = 19;
}
break;
case 9:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[8]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tData9 = 10;
gTasks[taskID].tdata10 = 0;
gTasks[taskID].tLearnMoveState = 3;
break;
case 10:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[9]);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ Contest_StartTextPrinter(&gWindowTemplate_Contest_MoveDescription, gDisplayedStringBattle, 144, 2, 15);
gTasks[taskID].tState = 14;
break;
case 11:
- if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ if (gWindowTemplate_Contest_MoveDescription.state == 0 && !IsSEPlaying())
gTasks[taskID].tLearnMoveState = 5;
break;
}
@@ -891,7 +899,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
case 0:
StringExpandPlaceholders(gStringVar4, BattleText_StartEvo);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gStringVar4,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tState++;
break;
case 1:
@@ -970,7 +982,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (IsSEPlaying())
{
PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
- memcpy(&gPlttBufferUnfaded[0x20], ewram9000_hack, 0x60);
+ memcpy(&gPlttBufferUnfaded[0x20], (void *)(EWRAM + 0x9000), 0x60);
BeginNormalPaletteFade(0x1, 0, 16, 0, RGB(0, 0, 0));
gTasks[taskID].tState++;
}
@@ -979,7 +991,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (IsCryFinished() && !gPaletteFade.active)
{
StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gStringVar4,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
PlayFanfare(MUS_EVOLVED);
gTasks[taskID].tState++;
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
@@ -1013,7 +1029,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
else
{
PlayBGM(MUS_EVOLUTION);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gOtherText_LinkStandby2,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tState++;
}
}
@@ -1031,7 +1051,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
sub_8024CEC();
PlayFanfare(MUS_LEVEL_UP);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[3]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskID].tState++;
}
@@ -1048,7 +1072,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
sub_8024CEC();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[4]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tLearnMoveState++;
}
break;
@@ -1056,7 +1084,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[5]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tLearnMoveState++;
}
break;
@@ -1066,7 +1098,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (!IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[6]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tData9 = 5;
gTasks[taskID].tdata10 = 9;
gTasks[taskID].tLearnMoveState++;
@@ -1104,7 +1140,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD);
DestroyMenuCursor();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
PlaySE(SE_SELECT);
if (sEvoCursorPos != 0)
gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10;
@@ -1120,7 +1160,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD);
DestroyMenuCursor();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
PlaySE(SE_SELECT);
gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10;
}
@@ -1146,7 +1190,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (IsHMMove2(move))
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[307]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tLearnMoveState = 11;
}
else
@@ -1159,7 +1207,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
RemoveMonPPBonus(mon, var);
SetMonMoveSlot(mon, gMoveToLearn, var);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[207]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tLearnMoveState++;
}
}
@@ -1169,7 +1221,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[7]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tLearnMoveState++;
}
break;
@@ -1177,20 +1233,32 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[208]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tState = 15;
}
break;
case 9:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[8]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tData9 = 10;
gTasks[taskID].tdata10 = 0;
gTasks[taskID].tLearnMoveState = 3;
break;
case 10:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[9]);
- Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ Contest_StartTextPrinter(&gUnknown_03004828->window,
+ gDisplayedStringBattle,
+ gUnknown_03004828->textWindowBaseTileNum,
+ 2,
+ 15);
gTasks[taskID].tState = 13;
break;
case 11:
@@ -1229,7 +1297,7 @@ void unref_sub_8113B50(u8 *a, u8 *b)
for (sp8 = 0; sp8 < 64; sp8++)
{
sEvoInfo.unk84[sp8] = 0;
- sEvoInfo.unk4[sp8] = 0;
+ sEvoInfo.round1Points[sp8] = 0;
sEvoInfo.unk44[sp8] = 0;
for (r6 = 0; r6 < 32; r6++)
{
@@ -1268,14 +1336,14 @@ void unref_sub_8113B50(u8 *a, u8 *b)
case 0:
if (*r2 & 0xF)
{
- sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ sEvoInfo.unk10C4[sp8][sEvoInfo.round1Points[sp8]] = r6;
r3 = 1;
}
break;
case 1:
if (*r2 & 0xF0)
{
- sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ sEvoInfo.unk10C4[sp8][sEvoInfo.round1Points[sp8]] = r6;
r3 = 1;
}
break;
@@ -1287,16 +1355,16 @@ void unref_sub_8113B50(u8 *a, u8 *b)
case 0:
if (*r2 & 0xF)
{
- sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1;
- sEvoInfo.unk4[sp8]++;
+ sEvoInfo.unk18C4[sp8][sEvoInfo.round1Points[sp8]] = r6 - 1;
+ sEvoInfo.round1Points[sp8]++;
r3 = 0;
}
break;
case 1:
if (*r2 & 0xF0)
{
- sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1;
- sEvoInfo.unk4[sp8]++;
+ sEvoInfo.unk18C4[sp8][sEvoInfo.round1Points[sp8]] = r6 - 1;
+ sEvoInfo.round1Points[sp8]++;
r3 = 0;
}
break;
@@ -1310,8 +1378,8 @@ void unref_sub_8113B50(u8 *a, u8 *b)
}
if (r3)
{
- sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6;
- sEvoInfo.unk4[sp8]++;
+ sEvoInfo.unk18C4[sp8][sEvoInfo.round1Points[sp8]] = r6;
+ sEvoInfo.round1Points[sp8]++;
}
//_08113D26
if (!((sp8 + 1) & 7))
@@ -1392,9 +1460,9 @@ void unref_sub_8113B50(u8 *a, u8 *b)
for (sp8 = 0; sp8 < 0x40; sp8++) //_08113E3A
{
- if (sEvoInfo.unk4[sp8] < sEvoInfo.unk44[sp8])
+ if (sEvoInfo.round1Points[sp8] < sEvoInfo.unk44[sp8])
{
- for (spC = 0; spC < sEvoInfo.unk4[sp8]; spC++)
+ for (spC = 0; spC < sEvoInfo.round1Points[sp8]; spC++)
{
sp14 = 0x100;
@@ -1431,19 +1499,19 @@ void unref_sub_8113B50(u8 *a, u8 *b)
}
}
//_08113F9E
- if (sEvoInfo.unk4[sp8] == sEvoInfo.unk44[sp8])
+ if (sEvoInfo.round1Points[sp8] == sEvoInfo.unk44[sp8])
{
- for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ for (r6 = 0; r6 < sEvoInfo.round1Points[sp8]; r6++)
sub_81141F0(r6, r6, sp8);
}
//_08113FCC
- if (sEvoInfo.unk4[sp8] > sEvoInfo.unk44[sp8])
+ if (sEvoInfo.round1Points[sp8] > sEvoInfo.unk44[sp8])
{
for (sp10 = 0; sp10 < sEvoInfo.unk44[sp8]; sp10++)
{
sp14 = 0x100;
- for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ for (r6 = 0; r6 < sEvoInfo.round1Points[sp8]; r6++)
{
s32 r3;
@@ -1472,7 +1540,7 @@ void unref_sub_8113B50(u8 *a, u8 *b)
sEvoInfo.unkC4[sp8][spC] = 1;
}
//_08114104
- for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ for (r6 = 0; r6 < sEvoInfo.round1Points[sp8]; r6++)
{
sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk30C4[sp8][r6];
sEvoInfo.unk28C4[sp8][r6] = sEvoInfo.unk38C4[sp8][r6];
diff --git a/src/field_effect.c b/src/field_effect.c
index 280eb20bc..9c7698ca4 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -543,25 +543,25 @@ u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority)
u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority)
{
- DecompressPicFromTable_2(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, gUnknown_081FAF4C[3], gUnknown_081FAF4C[3], species);
+ DecompressPicFromTable_2(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, gMonSpriteGfx_Sprite_ptr[3], gMonSpriteGfx_Sprite_ptr[3], species);
LoadCompressedObjectPalette(&gMonPaletteTable[species]);
GetMonSpriteTemplate_803C56C(species, 3);
- gUnknown_02024E8C.paletteTag = gMonPaletteTable[0].tag;
+ gCreatingSpriteTemplate.paletteTag = gMonPaletteTable[0].tag;
PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[0].tag) + 0x10);
- return CreateSprite(&gUnknown_02024E8C, x, y, subpriority);
+ return CreateSprite(&gCreatingSpriteTemplate, x, y, subpriority);
}
u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subpriority)
{
const struct CompressedSpritePalette *spritePalette;
- HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[3] /* this is actually u8* or something, pointing to ewram */, gUnknown_081FAF4C[3], species, g);
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, gMonSpriteGfx_Sprite_ptr[3] /* this is actually u8* or something, pointing to ewram */, gMonSpriteGfx_Sprite_ptr[3], species, g);
spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, d, g);
LoadCompressedObjectPalette(spritePalette);
GetMonSpriteTemplate_803C56C(species, 3);
- gUnknown_02024E8C.paletteTag = spritePalette->tag;
+ gCreatingSpriteTemplate.paletteTag = spritePalette->tag;
PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10);
- return CreateSprite(&gUnknown_02024E8C, x, y, subpriority);
+ return CreateSprite(&gCreatingSpriteTemplate, x, y, subpriority);
}
void FreeResourcesAndDestroySprite(struct Sprite *sprite)
@@ -748,8 +748,8 @@ u8 CreatePokeballGlowSprite(s16 data6, s16 x, s16 y, u16 data5)
struct Sprite *sprite;
spriteId = CreateInvisibleSprite(SpriteCB_PokeballGlowEffect);
sprite = &gSprites[spriteId];
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
sprite->data[5] = data5;
sprite->data[6] = data6;
sprite->data[7] = spriteId;
@@ -767,7 +767,7 @@ void PokeballGlowEffect_0(struct Sprite *sprite)
if (sprite->data[1] == 0 || (--sprite->data[1]) == 0)
{
sprite->data[1] = 25;
- endSpriteId = CreateSpriteAtEnd(&gSpriteTemplate_839F208, gUnknown_0839F2A8[sprite->data[2]].x + sprite->pos2.x, gUnknown_0839F2A8[sprite->data[2]].y + sprite->pos2.y, 0);
+ endSpriteId = CreateSpriteAtEnd(&gSpriteTemplate_839F208, gUnknown_0839F2A8[sprite->data[2]].x + sprite->x2, gUnknown_0839F2A8[sprite->data[2]].y + sprite->y2, 0);
gSprites[endSpriteId].oam.priority = 2;
gSprites[endSpriteId].data[0] = sprite->data[7];
sprite->data[2]++;
@@ -1077,7 +1077,7 @@ bool8 sub_8086870(struct Task *task) // gUnknown_0839F2CC[2]
s16 centerToCornerVecY;
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
- sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
+ sprite->y2 = -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
task->data[1] = 1;
task->data[2] = 0;
gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
@@ -1093,7 +1093,7 @@ bool8 sub_80868E4(struct Task *task)
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.y += task->data[1];
+ sprite->y2 += task->data[1];
if (task->data[1] < 8)
{
task->data[2] += task->data[1];
@@ -1102,19 +1102,19 @@ bool8 sub_80868E4(struct Task *task)
task->data[1] <<= 1;
}
}
- if (task->data[3] == 0 && sprite->pos2.y >= -16)
+ if (task->data[3] == 0 && sprite->y2 >= -16)
{
task->data[3]++;
objectEvent->fixedPriority = 0;
sprite->subspriteMode = task->data[4];
objectEvent->triggerGroundEffectsOnMove = 1;
}
- if (sprite->pos2.y >= 0)
+ if (sprite->y2 >= 0)
{
PlaySE(SE_M_STRENGTH);
objectEvent->triggerGroundEffectsOnStop = 1;
objectEvent->landingJump = 1;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
task->data[0]++;
}
return FALSE;
@@ -1255,8 +1255,8 @@ void sub_8086B98(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x84, task->data[2]);
- sprite->pos2.y = Sin(0x94, task->data[2]);
+ sprite->x2 = Cos(0x84, task->data[2]);
+ sprite->y2 = Sin(0x94, task->data[2]);
task->data[3]++;
if (task->data[3] & 1)
{
@@ -1268,8 +1268,8 @@ void sub_8086BE4(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x7c, task->data[2]);
- sprite->pos2.y = Sin(0x76, task->data[2]);
+ sprite->x2 = Cos(0x7c, task->data[2]);
+ sprite->y2 = Sin(0x76, task->data[2]);
task->data[3]++;
if (task->data[3] & 1)
{
@@ -1340,8 +1340,8 @@ bool8 sub_8086D70(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x84, task->data[1]);
- sprite->pos2.y = Sin(0x94, task->data[1]);
+ sprite->x2 = Cos(0x84, task->data[1]);
+ sprite->y2 = Sin(0x94, task->data[1]);
task->data[0]++;
return FALSE;
}
@@ -1350,8 +1350,8 @@ bool8 sub_8086DB0(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x84, task->data[1]);
- sprite->pos2.y = Sin(0x94, task->data[1]);
+ sprite->x2 = Cos(0x84, task->data[1]);
+ sprite->y2 = Sin(0x94, task->data[1]);
task->data[2]++;
if (task->data[2] & 1)
{
@@ -1359,8 +1359,8 @@ bool8 sub_8086DB0(struct Task *task)
}
if (task->data[1] == 0)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
task->data[0] = 5;
}
return FALSE;
@@ -1370,8 +1370,8 @@ bool8 sub_8086E10(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x7c, task->data[1]);
- sprite->pos2.y = Sin(0x76, task->data[1]);
+ sprite->x2 = Cos(0x7c, task->data[1]);
+ sprite->y2 = Sin(0x76, task->data[1]);
task->data[0]++;
return FALSE;
}
@@ -1380,8 +1380,8 @@ bool8 sub_8086E50(struct Task *task)
{
struct Sprite *sprite;
sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.x = Cos(0x7c, task->data[1]);
- sprite->pos2.y = Sin(0x76, task->data[1]);
+ sprite->x2 = Cos(0x7c, task->data[1]);
+ sprite->y2 = Sin(0x76, task->data[1]);
task->data[2]++;
if (task->data[2] & 1)
{
@@ -1389,8 +1389,8 @@ bool8 sub_8086E50(struct Task *task)
}
if (task->data[1] == 0)
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
task->data[0]++;
}
return FALSE;
@@ -1581,7 +1581,7 @@ bool8 sub_8087264(struct Task *task, struct ObjectEvent *objectEvent, struct Spr
bool8 sub_8087298(struct Task *task, struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
task->data[3] = 1;
gFieldEffectArguments[0] = objectEvent->currentCoords.x;
gFieldEffectArguments[1] = objectEvent->currentCoords.y;
@@ -1610,9 +1610,9 @@ bool8 sub_80872E4(struct Task *task, struct ObjectEvent *objectEvent, struct Spr
if (task->data[2] > 6)
{
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
- if (sprite->pos2.y > -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY))
+ if (sprite->y2 > -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY))
{
- sprite->pos2.y -= task->data[3];
+ sprite->y2 -= task->data[3];
if (task->data[3] <= 7)
{
task->data[3]++;
@@ -1622,7 +1622,7 @@ bool8 sub_80872E4(struct Task *task, struct ObjectEvent *objectEvent, struct Spr
task->data[4] = 1;
}
}
- if (task->data[5] == 0 && sprite->pos2.y < -0x10)
+ if (task->data[5] == 0 && sprite->y2 < -0x10)
{
task->data[5]++;
objectEvent->fixedPriority = 1;
@@ -2023,7 +2023,7 @@ static void TeleportFieldEffectTask3(struct Task *task)
task->data[1] = 4;
ObjectEventTurn(objectEvent, spinDirections[objectEvent->facingDirection]);
}
- sprite->pos1.y -= task->data[3];
+ sprite->y -= task->data[3];
task->data[4] += task->data[3];
if ((--task->data[2]) <= 0 && (task->data[2] = 4, task->data[3] < 8))
{
@@ -2086,7 +2086,7 @@ void sub_8087E4C(struct Task *task)
{
sprite = &gSprites[gPlayerAvatar.spriteId];
centerToCornerVecY = -(sprite->centerToCornerVecY << 1);
- sprite->pos2.y = -(sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
+ sprite->y2 = -(sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY + centerToCornerVecY);
gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE;
task->data[0]++;
task->data[1] = 8;
@@ -2102,7 +2102,7 @@ void sub_8087ED8(struct Task *task)
u8 spinDirections[5] = {DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH};
struct ObjectEvent *objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
- if ((sprite->pos2.y += task->data[1]) >= -8)
+ if ((sprite->y2 += task->data[1]) >= -8)
{
if (task->data[13] == 0)
{
@@ -2118,7 +2118,7 @@ void sub_8087ED8(struct Task *task)
sprite->subspriteMode = 2;
}
}
- if (sprite->pos2.y >= -0x30 && task->data[1] > 1 && !(sprite->pos2.y & 1))
+ if (sprite->y2 >= -0x30 && task->data[1] > 1 && !(sprite->y2 & 1))
{
task->data[1]--;
}
@@ -2127,9 +2127,9 @@ void sub_8087ED8(struct Task *task)
task->data[2] = 4;
ObjectEventTurn(objectEvent, spinDirections[objectEvent->facingDirection]);
}
- if (sprite->pos2.y >= 0)
+ if (sprite->y2 >= 0)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
task->data[0]++;
task->data[1] = 1;
task->data[2] = 0;
@@ -2537,9 +2537,9 @@ void sub_80888D4(struct Sprite *);
void sub_8088890(struct Sprite *sprite)
{
- if ((sprite->pos1.x -= 20) <= 0x78)
+ if ((sprite->x -= 20) <= 0x78)
{
- sprite->pos1.x = 0x78;
+ sprite->x = 0x78;
sprite->data[1] = 30;
sprite->callback = sub_80888D4;
if (sprite->data[6])
@@ -2564,12 +2564,12 @@ void sub_80888D4(struct Sprite *sprite)
void sub_80888F0(struct Sprite *sprite)
{
- if (sprite->pos1.x < -0x40)
+ if (sprite->x < -0x40)
{
sprite->data[7] = 1;
} else
{
- sprite->pos1.x -= 20;
+ sprite->x -= 20;
}
}
@@ -2686,17 +2686,17 @@ u8 FldEff_NPCFlyOut(void)
void sub_8088BC4(struct Sprite *sprite)
{
struct Sprite *npcSprite;
- sprite->pos2.x = Cos(sprite->data[2], 0x8c);
- sprite->pos2.y = Sin(sprite->data[2], 0x48);
+ sprite->x2 = Cos(sprite->data[2], 0x8c);
+ sprite->y2 = Sin(sprite->data[2], 0x48);
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
if (sprite->data[0])
{
npcSprite = &gSprites[sprite->data[1]];
npcSprite->coordOffsetEnabled = 0;
- npcSprite->pos1.x = sprite->pos1.x + sprite->pos2.x;
- npcSprite->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
- npcSprite->pos2.x = 0;
- npcSprite->pos2.y = 0;
+ npcSprite->x = sprite->x + sprite->x2;
+ npcSprite->y = sprite->y + sprite->y2 - 8;
+ npcSprite->x2 = 0;
+ npcSprite->y2 = 0;
}
if (sprite->data[2] >= 0x80)
{
@@ -2878,10 +2878,10 @@ void sub_8088FC0(u8 spriteId)
struct Sprite *sprite;
sprite = &gSprites[spriteId];
sprite->callback = sub_80890D8;
- sprite->pos1.x = 0x78;
- sprite->pos1.y = 0x00;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x = 0x78;
+ sprite->y = 0x00;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
memset(&sprite->data[0], 0, 8 * sizeof(u16) /* zero all data cells */);
sprite->data[6] = 0x40;
}
@@ -2918,15 +2918,15 @@ void sub_8089018(struct Sprite *sprite)
sprite->affineAnims = gSpriteAffineAnimTable_0839F44C;
InitSpriteAffineAnim(sprite);
StartSpriteAffineAnim(sprite, 0);
- sprite->pos1.x = 0x76;
- sprite->pos1.y = -0x30;
+ sprite->x = 0x76;
+ sprite->y = -0x30;
sprite->data[0]++;
sprite->data[1] = 0x40;
sprite->data[2] = 0x100;
}
sprite->data[1] += (sprite->data[2] >> 8);
- sprite->pos2.x = Cos(sprite->data[1], 0x78);
- sprite->pos2.y = Sin(sprite->data[1], 0x78);
+ sprite->x2 = Cos(sprite->data[1], 0x78);
+ sprite->y2 = Sin(sprite->data[1], 0x78);
if (sprite->data[2] < 0x800)
{
sprite->data[2] += 0x60;
@@ -2944,17 +2944,17 @@ void sub_8089018(struct Sprite *sprite)
void sub_80890D8(struct Sprite *sprite)
{
struct Sprite *sprite1;
- sprite->pos2.x = Cos(sprite->data[2], 0x8c);
- sprite->pos2.y = Sin(sprite->data[2], 0x48);
+ sprite->x2 = Cos(sprite->data[2], 0x8c);
+ sprite->y2 = Sin(sprite->data[2], 0x48);
sprite->data[2] = (sprite->data[2] + 4) & 0xff;
if (sprite->data[6] != 0x40)
{
sprite1 = &gSprites[sprite->data[6]];
sprite1->coordOffsetEnabled = 0;
- sprite1->pos1.x = sprite->pos1.x + sprite->pos2.x;
- sprite1->pos1.y = sprite->pos1.y + sprite->pos2.y - 8;
- sprite1->pos2.x = 0;
- sprite1->pos2.y = 0;
+ sprite1->x = sprite->x + sprite->x2;
+ sprite1->y = sprite->y + sprite->y2 - 8;
+ sprite1->x2 = 0;
+ sprite1->y2 = 0;
}
if (sprite->data[2] >= 0x80)
{
@@ -2972,8 +2972,8 @@ void sub_808914C(struct Sprite *sprite)
sprite->affineAnims = gSpriteAffineAnimTable_0839F44C;
InitSpriteAffineAnim(sprite);
StartSpriteAffineAnim(sprite, 1);
- sprite->pos1.x = 0x5e;
- sprite->pos1.y = -0x20;
+ sprite->x = 0x5e;
+ sprite->y = -0x20;
sprite->data[0]++;
sprite->data[1] = 0xf0;
sprite->data[2] = 0x800;
@@ -2982,8 +2982,8 @@ void sub_808914C(struct Sprite *sprite)
sprite->data[1] += sprite->data[2] >> 8;
sprite->data[3] += sprite->data[2] >> 8;
sprite->data[1] &= 0xff;
- sprite->pos2.x = Cos(sprite->data[1], 0x20);
- sprite->pos2.y = Sin(sprite->data[1], 0x78);
+ sprite->x2 = Cos(sprite->data[1], 0x20);
+ sprite->y2 = Sin(sprite->data[1], 0x78);
if (sprite->data[2] > 0x100)
{
sprite->data[2] -= sprite->data[4];
@@ -3070,10 +3070,10 @@ void sub_8089354(struct Task *task)
objectEvent = &gObjectEvents[gPlayerAvatar.objectEventId];
sprite = &gSprites[objectEvent->spriteId];
sub_8088FFC(task->data[1], 0x40);
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
task->data[0]++;
task->data[2] = 0;
}
@@ -3102,7 +3102,7 @@ void sub_80893C0(struct Task *task)
8
};
struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
- sprite->pos2.y = unknown_0839F470[task->data[2]];
+ sprite->y2 = unknown_0839F470[task->data[2]];
if ((++task->data[2]) >= 18)
{
task->data[0]++;
@@ -3119,8 +3119,8 @@ void sub_8089414(struct Task *task)
sprite = &gSprites[objectEvent->spriteId];
objectEvent->inanimate = 0;
sub_805C058(objectEvent, objectEvent->currentCoords.x, objectEvent->currentCoords.y);
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->coordOffsetEnabled = 1;
sub_8059BF4();
ObjectEventSetHeldMovement(objectEvent, MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index 9ba7787e0..4f3680a2f 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -32,7 +32,7 @@ void InitObjectReflectionSprite(struct ObjectEvent *objectEvent, struct Sprite *
{
struct Sprite *reflectionSprite;
- reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
+ reflectionSprite = &gSprites[CreateCopySpriteAt(sprite, sprite->x, sprite->y, 0x98)];
reflectionSprite->callback = UpdateObjectReflectionSprite;
reflectionSprite->oam.priority = 3;
reflectionSprite->oam.paletteNum = gReflectionEffectPaletteMap[reflectionSprite->oam.paletteNum];
@@ -130,13 +130,13 @@ static void UpdateObjectReflectionSprite(struct Sprite *reflectionSprite)
reflectionSprite->subspriteTables = mainSprite->subspriteTables;
reflectionSprite->subspriteTableNum = mainSprite->subspriteTableNum;
reflectionSprite->invisible = mainSprite->invisible;
- reflectionSprite->pos1.x = mainSprite->pos1.x;
+ reflectionSprite->x = mainSprite->x;
// reflectionSprite->data[2] holds an additional vertical offset, used by the high bridges on Route 120
- reflectionSprite->pos1.y = mainSprite->pos1.y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->data[2];
+ reflectionSprite->y = mainSprite->y + GetReflectionVerticalOffset(objectEvent) + reflectionSprite->data[2];
reflectionSprite->centerToCornerVecX = mainSprite->centerToCornerVecX;
reflectionSprite->centerToCornerVecY = mainSprite->centerToCornerVecY;
- reflectionSprite->pos2.x = mainSprite->pos2.x;
- reflectionSprite->pos2.y = -mainSprite->pos2.y;
+ reflectionSprite->x2 = mainSprite->x2;
+ reflectionSprite->y2 = -mainSprite->y2;
reflectionSprite->coordOffsetEnabled = mainSprite->coordOffsetEnabled;
// Check if the reflection is not still.
@@ -184,8 +184,8 @@ void ShowWarpArrowSprite(u8 spriteId, u8 direction, s16 x, s16 y)
{
sub_80603CC(x, y, &x2, &y2);
sprite = &gSprites[spriteId];
- sprite->pos1.x = x2 + 8;
- sprite->pos1.y = y2 + 8;
+ sprite->x = x2 + 8;
+ sprite->y = y2 + 8;
sprite->invisible = FALSE;
sprite->data[0] = x;
sprite->data[1] = y;
@@ -242,8 +242,8 @@ void UpdateShadowFieldEffect(struct Sprite *sprite)
objectEvent = &gObjectEvents[objectEventId];
linkedSprite = &gSprites[objectEvent->spriteId];
sprite->oam.priority = linkedSprite->oam.priority;
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3];
+ sprite->x = linkedSprite->x;
+ sprite->y = linkedSprite->y + sprite->data[3];
if (!objectEvent->active || !objectEvent->hasShadow
|| MetatileBehavior_IsPokeGrass(objectEvent->currentMetatileBehavior)
|| MetatileBehavior_IsSurfableWaterOrUnderwater(objectEvent->currentMetatileBehavior)
@@ -465,8 +465,8 @@ u32 FldEff_ShortGrass(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
- sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
+ sprite->data[3] = gSprites[objectEvent->spriteId].x;
+ sprite->data[4] = gSprites[objectEvent->spriteId].y;
}
return 0;
}
@@ -487,8 +487,8 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
{
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
- y = linkedSprite->pos1.y;
- x = linkedSprite->pos1.x;
+ y = linkedSprite->y;
+ x = linkedSprite->x;
if (x != sprite->data[3] || y != sprite->data[4])
{
sprite->data[3] = x;
@@ -498,9 +498,9 @@ void UpdateShortGrassFieldEffect(struct Sprite *sprite)
StartSpriteAnim(sprite, 0);
}
}
- sprite->pos1.x = x;
- sprite->pos1.y = y;
- sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
+ sprite->x = x;
+ sprite->y = y;
+ sprite->y2 = (graphicsInfo->height >> 1) - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
sprite->oam.priority = linkedSprite->oam.priority;
UpdateObjectEventSpriteVisibility(sprite, linkedSprite->invisible);
@@ -613,7 +613,7 @@ u32 FldEff_Splash(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ sprite->y2 = (graphicsInfo->height >> 1) - 4;
PlaySE(SE_PUDDLE);
}
return 0;
@@ -629,8 +629,8 @@ void UpdateSplashFieldEffect(struct Sprite *sprite)
}
else
{
- sprite->pos1.x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
- sprite->pos1.y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
+ sprite->x = gSprites[gObjectEvents[objectEventId].spriteId].x;
+ sprite->y = gSprites[gObjectEvents[objectEventId].spriteId].y;
UpdateObjectEventSpriteVisibility(sprite, FALSE);
}
}
@@ -694,7 +694,7 @@ u32 FldEff_FeetInFlowingWater(void)
sprite->data[2] = gFieldEffectArguments[2];
sprite->data[3] = -1;
sprite->data[4] = -1;
- sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ sprite->y2 = (graphicsInfo->height >> 1) - 4;
StartSpriteAnim(sprite, 1);
}
return 0;
@@ -714,8 +714,8 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite)
{
objectEvent = &gObjectEvents[objectEventId];
linkedSprite = &gSprites[objectEvent->spriteId];
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = linkedSprite->pos1.y;
+ sprite->x = linkedSprite->x;
+ sprite->y = linkedSprite->y;
sprite->subpriority = linkedSprite->subpriority;
UpdateObjectEventSpriteVisibility(sprite, FALSE);
if (objectEvent->currentCoords.x != sprite->data[3] || objectEvent->currentCoords.y != sprite->data[4])
@@ -764,8 +764,8 @@ u32 FldEff_HotSpringsWater(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
- sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
+ sprite->data[3] = gSprites[objectEvent->spriteId].x;
+ sprite->data[4] = gSprites[objectEvent->spriteId].y;
}
return 0;
}
@@ -784,8 +784,8 @@ void UpdateHotSpringsWaterFieldEffect(struct Sprite *sprite)
{
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
+ sprite->x = linkedSprite->x;
+ sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 8;
sprite->subpriority = linkedSprite->subpriority - 1;
UpdateObjectEventSpriteVisibility(sprite, FALSE);
}
@@ -1014,7 +1014,7 @@ static void sub_812800C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
u8 i;
s16 x = objectEvent->currentCoords.x;
s16 y = objectEvent->currentCoords.y;
- s32 spriteY = sprite->pos2.y;
+ s32 spriteY = sprite->y2;
if (spriteY == 0 && (x != sprite->data[6] || y != sprite->data[7]))
{
@@ -1041,7 +1041,7 @@ static void sub_81280A0(struct ObjectEvent *objectEvent, struct Sprite *linkedSp
{
if (((u16)(++ sprite->data[4]) & unk_8401E5A[sprite->data[5]]) == 0)
{
- sprite->pos2.y += sprite->data[3];
+ sprite->y2 += sprite->data[3];
}
if ((sprite->data[4] & 0x0F) == 0)
{
@@ -1051,14 +1051,14 @@ static void sub_81280A0(struct ObjectEvent *objectEvent, struct Sprite *linkedSp
{
if (sub_8127F70(sprite) == 0)
{
- linkedSprite->pos2.y = sprite->pos2.y;
+ linkedSprite->y2 = sprite->y2;
}
else
{
- linkedSprite->pos2.y = sprite->data[1] + sprite->pos2.y;
+ linkedSprite->y2 = sprite->data[1] + sprite->y2;
}
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = linkedSprite->pos1.y + 8;
+ sprite->x = linkedSprite->x;
+ sprite->y = linkedSprite->y + 8;
}
}
}
@@ -1084,7 +1084,7 @@ static void sub_8128174(struct Sprite *sprite)
oldSprite = &gSprites[sprite->data[0]];
if (((sprite->data[2]++) & 0x03) == 0)
{
- oldSprite->pos2.y += sprite->data[1];
+ oldSprite->y2 += sprite->data[1];
}
if ((sprite->data[2] & 0x0F) == 0)
{
@@ -1130,9 +1130,9 @@ u32 FldEff_SandPile(void)
sprite->data[0] = gFieldEffectArguments[0];
sprite->data[1] = gFieldEffectArguments[1];
sprite->data[2] = gFieldEffectArguments[2];
- sprite->data[3] = gSprites[objectEvent->spriteId].pos1.x;
- sprite->data[4] = gSprites[objectEvent->spriteId].pos1.y;
- sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
+ sprite->data[3] = gSprites[objectEvent->spriteId].x;
+ sprite->data[4] = gSprites[objectEvent->spriteId].y;
+ sprite->y2 = (graphicsInfo->height >> 1) - 2;
SeekSpriteAnim(sprite, 2);
}
return 0;
@@ -1150,8 +1150,8 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
}
else
{
- y = gSprites[gObjectEvents[objectEventId].spriteId].pos1.y;
- x = gSprites[gObjectEvents[objectEventId].spriteId].pos1.x;
+ y = gSprites[gObjectEvents[objectEventId].spriteId].y;
+ x = gSprites[gObjectEvents[objectEventId].spriteId].x;
if (x != sprite->data[3] || y != sprite->data[4])
{
sprite->data[3] = x;
@@ -1161,8 +1161,8 @@ void UpdateSandPileFieldEffect(struct Sprite *sprite)
StartSpriteAnim(sprite, 0);
}
}
- sprite->pos1.x = x;
- sprite->pos1.y = y;
+ sprite->x = x;
+ sprite->y = y;
sprite->subpriority = gSprites[gObjectEvents[objectEventId].spriteId].subpriority;
UpdateObjectEventSpriteVisibility(sprite, FALSE);
}
@@ -1188,7 +1188,7 @@ void UpdateBubblesFieldEffect(struct Sprite *sprite)
{
sprite->data[0] += 0x80;
sprite->data[0] &= 0x100;
- sprite->pos1.y -= sprite->data[0] >> 8;
+ sprite->y -= sprite->data[0] >> 8;
UpdateObjectEventSpriteVisibility(sprite, FALSE);
if (sprite->invisible || sprite->animEnded)
{
@@ -1269,8 +1269,8 @@ void UpdateDisguiseFieldEffect(struct Sprite *sprite)
graphicsInfo = GetObjectEventGraphicsInfo(gObjectEvents[objectEventId].graphicsId);
linkedSprite = &gSprites[gObjectEvents[objectEventId].spriteId];
sprite->invisible = linkedSprite->invisible;
- sprite->pos1.x = linkedSprite->pos1.x;
- sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
+ sprite->x = linkedSprite->x;
+ sprite->y = (graphicsInfo->height >> 1) + linkedSprite->y - 16;
sprite->subpriority = linkedSprite->subpriority - 1;
if (sprite->data[0] == 1)
{
@@ -1387,13 +1387,13 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
{
graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
linkedSprite = &gSprites[objectEvent->spriteId];
- xhi = sprite->pos1.x + sprite->centerToCornerVecX;
- var = sprite->pos1.x - sprite->centerToCornerVecX;
- if (xhi < linkedSprite->pos1.x && var > linkedSprite->pos1.x)
+ xhi = sprite->x + sprite->centerToCornerVecX;
+ var = sprite->x - sprite->centerToCornerVecX;
+ if (xhi < linkedSprite->x && var > linkedSprite->x)
{
- lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
- var = linkedSprite->pos1.y;
- ylo = sprite->pos1.y - sprite->centerToCornerVecY;
+ lyhi = linkedSprite->y + linkedSprite->centerToCornerVecY;
+ var = linkedSprite->y;
+ ylo = sprite->y - sprite->centerToCornerVecY;
yhi = ylo + linkedSprite->centerToCornerVecY;
if ((lyhi < yhi || lyhi < ylo) && var > yhi && sprite->subpriority <= linkedSprite->subpriority)
{
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index fea93f215..5ca114f49 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -490,7 +490,7 @@ void sub_8081050(u8 taskId)
case 1:
if (!PaletteFadeActive() && BGMusicStopped())
{
- sub_800832C();
+ SetCloseLinkCallback();
data[0]++;
}
break;
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 44fd4ac49..7df3373ce 100644
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -117,13 +117,13 @@ bool8 unref_sub_8064BD0(const u8 *message)
static void PrintFieldMessage(const u8 *message)
{
StringExpandPlaceholders(gStringVar4, message);
- Text_InitWindow8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15);
+ Contest_StartTextPrinter(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15);
CreateFieldMessageBoxTask();
}
static void PrintFieldMessageFromStringVar4(void)
{
- Text_InitWindow8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15);
+ Contest_StartTextPrinter(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15);
CreateFieldMessageBoxTask();
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index c0c4aad5d..d30717d65 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -1703,8 +1703,8 @@ static bool8 Fishing11(struct Task *task)
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
sub_8127F28(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
- gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
- gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ gSprites[gPlayerAvatar.spriteId].x2 = 0;
+ gSprites[gPlayerAvatar.spriteId].y2 = 0;
Menu_EraseScreen();
task->tFrameCounter++;
return FALSE;
@@ -1762,8 +1762,8 @@ static bool8 Fishing15(struct Task *task)
ObjectEventTurn(playerObjEvent, playerObjEvent->movementDirection);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
sub_8127F28(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 0, 0);
- gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
- gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ gSprites[gPlayerAvatar.spriteId].x2 = 0;
+ gSprites[gPlayerAvatar.spriteId].y2 = 0;
task->tStep++;
}
return FALSE;
@@ -1794,8 +1794,8 @@ static void AlignFishingAnimationFrames(void)
u8 animType;
AnimateSprite(playerSprite);
- playerSprite->pos2.x = 0;
- playerSprite->pos2.y = 0;
+ playerSprite->x2 = 0;
+ playerSprite->y2 = 0;
animCmdIndex = playerSprite->animCmdIndex;
if (playerSprite->anims[playerSprite->animNum][animCmdIndex].type == -1)
{
@@ -1810,16 +1810,16 @@ static void AlignFishingAnimationFrames(void)
animType = playerSprite->anims[playerSprite->animNum][animCmdIndex].type;
if (animType == 1 || animType == 2 || animType == 3)
{
- playerSprite->pos2.x = 8;
+ playerSprite->x2 = 8;
if (GetPlayerFacingDirection() == 3)
- playerSprite->pos2.x = -8;
+ playerSprite->x2 = -8;
}
if (animType == 5)
- playerSprite->pos2.y = -8;
+ playerSprite->y2 = -8;
if (animType == 10 || animType == 11)
- playerSprite->pos2.y = 8;
+ playerSprite->y2 = 8;
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8127F28(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->pos2.y);
+ sub_8127F28(gObjectEvents[gPlayerAvatar.objectEventId].fieldEffectSpriteId, 1, playerSprite->y2);
}
#if DEBUG
diff --git a/src/field_region_map.c b/src/field_region_map.c
index 10d5a4a5e..319235754 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -9,27 +9,11 @@
#include "text.h"
#include "ewram.h"
-struct RegionMapStruct
-{
- u8 str[0x16];
- u8 unk16;
- u8 filler[0x869];
-};
-
-struct UnkStruct
-{
- MainCallback callback;
- u8 filler[4];
- // This should be RegionMap, but I can't do that because it overlaps unk888.
- struct RegionMapStruct unk8;
- u16 unk888;
-};
-
void FieldInitRegionMap(MainCallback callback)
{
SetVBlankCallback(NULL);
- ewram0_5.unk888 = 0;
- ewram0_5.callback = callback;
+ eRegionMapState.unk_888[0] = 0;
+ eRegionMapState.callback = callback;
SetMainCallback2(CB2_FieldInitRegionMap);
}
@@ -46,8 +30,7 @@ void CB2_FieldInitRegionMap(void)
REG_BG3VOFS = 0;
ResetSpriteData();
FreeAllSpritePalettes();
- // TODO: remove this cast
- InitRegionMap((void *)&ewram0_5.unk8, 0);
+ InitRegionMap(&eRegionMapState.regionMap, 0);
CreateRegionMapPlayerIcon(0, 0);
CreateRegionMapCursor(1, 1);
Text_LoadWindowTemplate(&gWindowTemplate_81E709C);
@@ -80,15 +63,15 @@ void CB2_FieldRegionMap(void)
void sub_813EFDC(void)
{
- switch (ewram0_5.unk888)
+ switch (eRegionMapState.unk_888[0])
{
case 0:
REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
- ewram0_5.unk888++;
+ eRegionMapState.unk_888[0]++;
break;
case 1:
if (!gPaletteFade.active)
- ewram0_5.unk888++;
+ eRegionMapState.unk_888[0]++;
break;
case 2:
switch (sub_80FAB60())
@@ -98,18 +81,18 @@ void sub_813EFDC(void)
break;
case 4:
case 5:
- ewram0_5.unk888++;
+ eRegionMapState.unk_888[0]++;
}
break;
case 3:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- ewram0_5.unk888++;
+ eRegionMapState.unk_888[0]++;
break;
case 4:
if (!gPaletteFade.active)
{
FreeRegionMapIconResources();
- SetMainCallback2(ewram0_5.callback);
+ SetMainCallback2(eRegionMapState.callback);
}
break;
}
@@ -118,6 +101,6 @@ void sub_813EFDC(void)
void sub_813F0C8(void)
{
Menu_BlankWindowRect(17, 17, 28, 18);
- if (ewram0_5.unk8.unk16)
- Menu_PrintText(ewram0_5.unk8.str, 17, 17);
+ if (eRegionMapState.regionMap.unk16)
+ Menu_PrintText(eRegionMapState.regionMap.mapSectionName, 17, 17);
}
diff --git a/src/field_weather_effects.c b/src/field_weather_effects.c
index 56b802b83..33bfd81b1 100644
--- a/src/field_weather_effects.c
+++ b/src/field_weather_effects.c
@@ -192,7 +192,7 @@ void CreateCloudSprites(void)
gWeatherPtr->sprites.s1.cloudSprites[i] = &gSprites[spriteId];
sprite = gWeatherPtr->sprites.s1.cloudSprites[i];
- sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->pos1.x, &sprite->pos1.y);
+ sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->x, &sprite->y);
sprite->coordOffsetEnabled = TRUE;
}
else
@@ -222,7 +222,7 @@ void sub_807E0F4(struct Sprite *sprite)
{
sprite->data[0] = (sprite->data[0] + 1) & 1;
if (sprite->data[0] != 0)
- sprite->pos1.x--;
+ sprite->x--;
}
//------------------------------------------------------------------------------
@@ -482,12 +482,12 @@ void sub_807E5C0(struct Sprite *sprite)
{
sprite->data[2] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0];
sprite->data[3] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1];
- sprite->pos1.x = sprite->data[2] >> 4;
- sprite->pos1.y = sprite->data[3] >> 4;
+ sprite->x = sprite->data[2] >> 4;
+ sprite->y = sprite->data[3] >> 4;
if (sprite->data[5] != 0
- && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248)
- && sprite->pos1.y >= -16 && sprite->pos1.y <= 176)
+ && (sprite->x >= -8 && sprite->x <= 248)
+ && sprite->y >= -16 && sprite->y <= 176)
sprite->invisible = FALSE;
else
sprite->invisible = TRUE;
@@ -497,8 +497,8 @@ void sub_807E5C0(struct Sprite *sprite)
{
StartSpriteAnim(sprite, gWeatherPtr->unknown_6DC + 1);
sprite->data[4] = 1;
- sprite->pos1.x -= gSpriteCoordOffsetX;
- sprite->pos1.y -= gSpriteCoordOffsetY;
+ sprite->x -= gSpriteCoordOffsetX;
+ sprite->y -= gSpriteCoordOffsetY;
sprite->coordOffsetEnabled = TRUE;
}
}
@@ -987,10 +987,10 @@ void sub_807EC40(struct Sprite *sprite)
u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30);
u16 r6;
- sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
- sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
- sprite->data[0] = sprite->pos1.y * 128;
- sprite->pos2.x = 0;
+ sprite->y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ sprite->data[0] = sprite->y * 128;
+ sprite->x2 = 0;
r6 = Random();
sprite->data[1] = (r6 & 3) * 5 + 64;
sprite->data[7] = (r6 & 3) * 5 + 64;
@@ -1007,8 +1007,8 @@ void sub_807ECEC(struct Sprite *sprite)
{
sprite->invisible = FALSE;
sprite->callback = sub_807ED48;
- sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
- sprite->data[0] = sprite->pos1.y * 128;
+ sprite->y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->data[0] = sprite->y * 128;
gWeatherPtr->unknown_6E2 = 0;
}
}
@@ -1019,30 +1019,30 @@ void sub_807ED48(struct Sprite *sprite)
s16 r2;
sprite->data[0] += sprite->data[1];
- sprite->pos1.y = sprite->data[0] >> 7;
+ sprite->y = sprite->data[0] >> 7;
sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF;
- sprite->pos2.x = gSineTable[sprite->data[3]] / 64;
+ sprite->x2 = gSineTable[sprite->data[3]] / 64;
- r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;
+ r3 = (sprite->x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF;
if (r3 & 0x100)
r3 = -0x100 | r3; // hmm... what is this?
if (r3 < -3)
- sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ sprite->x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
else if (r3 > 242)
- sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
+ sprite->x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX);
- r2 = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF;
+ r2 = (sprite->y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF;
if (r2 > 163 && r2 < 171)
{
- sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
- sprite->data[0] = sprite->pos1.y * 128;
+ sprite->y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY);
+ sprite->data[0] = sprite->y * 128;
sprite->data[5] = 0;
sprite->data[6] = 220;
}
else if (r2 > 242 && r2 < 250)
{
- sprite->pos1.y = 163;
- sprite->data[0] = sprite->pos1.y * 128;
+ sprite->y = 163;
+ sprite->data[0] = sprite->y * 128;
sprite->data[5] = 0;
sprite->data[6] = 220;
sprite->invisible = TRUE;
@@ -1053,7 +1053,7 @@ void sub_807ED48(struct Sprite *sprite)
if (sprite->data[5] == sprite->data[6])
{
sub_807EC40(sprite);
- sprite->pos1.y = 250;
+ sprite->y = 250;
sprite->invisible = TRUE;
sprite->callback = sub_807ECEC;
}
@@ -1372,12 +1372,12 @@ bool8 Fog1_Finish(void)
static void Fog1SpriteCallback(struct Sprite *sprite)
{
- sprite->pos2.y = (u8)gSpriteCoordOffsetY;
- sprite->pos1.x = gWeatherPtr->fog1ScrollPosX + 32 + sprite->sprColumn * 64;
- if (sprite->pos1.x > 0x10F)
+ sprite->y2 = (u8)gSpriteCoordOffsetY;
+ sprite->x = gWeatherPtr->fog1ScrollPosX + 32 + sprite->sprColumn * 64;
+ if (sprite->x > 0x10F)
{
- sprite->pos1.x = 480 + gWeatherPtr->fog1ScrollPosX - (4 - sprite->sprColumn) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = 480 + gWeatherPtr->fog1ScrollPosX - (4 - sprite->sprColumn) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -1399,8 +1399,8 @@ static void CreateFog1Sprites(void)
struct Sprite *sprite = &gSprites[spriteId];
sprite->sprColumn = i % 5;
- sprite->pos1.x = (i % 5) * 64 + 32;
- sprite->pos1.y = (i / 5) * 64 + 32;
+ sprite->x = (i % 5) * 64 + 32;
+ sprite->y = (i / 5) * 64 + 32;
gWeatherPtr->sprites.s2.fog1Sprites[i] = sprite;
}
else
@@ -1614,12 +1614,12 @@ void sub_807FAA8(struct Sprite *sprite)
sprite->data[1] = 0;
sprite->data[0]++;
}
- sprite->pos1.y = gSpriteCoordOffsetY + sprite->data[0];
- sprite->pos1.x = gWeatherPtr->unknown_6FC + 32 + sprite->data[2] * 64;
- if (sprite->pos1.x > 271)
+ sprite->y = gSpriteCoordOffsetY + sprite->data[0];
+ sprite->x = gWeatherPtr->unknown_6FC + 32 + sprite->data[2] * 64;
+ if (sprite->x > 271)
{
- sprite->pos1.x = gWeatherPtr->unknown_6FC + 0x1E0 - (4 - sprite->data[2]) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = gWeatherPtr->unknown_6FC + 0x1E0 - (4 - sprite->data[2]) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -1815,12 +1815,12 @@ void DestroyFog2Sprites(void)
void Fog2SpriteCallback(struct Sprite *sprite)
{
- sprite->pos2.y = gWeatherPtr->unknown_71A;
- sprite->pos1.x = gWeatherPtr->unknown_718 + 32 + sprite->data[0] * 64;
- if (sprite->pos1.x > 271)
+ sprite->y2 = gWeatherPtr->unknown_71A;
+ sprite->x = gWeatherPtr->unknown_718 + 32 + sprite->data[0] * 64;
+ if (sprite->x > 271)
{
- sprite->pos1.x = gWeatherPtr->unknown_718 + 0x1E0 - (4 - sprite->data[0]) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = gWeatherPtr->unknown_718 + 0x1E0 - (4 - sprite->data[0]) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -2070,12 +2070,12 @@ void CreateSandstormSprites_2(void)
void SandstormSpriteCallback1(struct Sprite *sprite)
{
- sprite->pos2.y = gWeatherPtr->unknown_710;
- sprite->pos1.x = gWeatherPtr->unknown_70E + 32 + sprite->data[0] * 64;
- if (sprite->pos1.x > 271)
+ sprite->y2 = gWeatherPtr->unknown_710;
+ sprite->x = gWeatherPtr->unknown_70E + 32 + sprite->data[0] * 64;
+ if (sprite->x > 271)
{
- sprite->pos1.x = gWeatherPtr->unknown_70E + 0x1E0 - (4 - sprite->data[0]) * 64;
- sprite->pos1.x &= 0x1FF;
+ sprite->x = gWeatherPtr->unknown_70E + 0x1E0 - (4 - sprite->data[0]) * 64;
+ sprite->x &= 0x1FF;
}
}
@@ -2092,15 +2092,15 @@ void SandstormSpriteCallback3(struct Sprite *sprite)
u32 x;
u32 y;
- if (--sprite->pos1.y < -48)
+ if (--sprite->y < -48)
{
- sprite->pos1.y = 208;
+ sprite->y = 208;
sprite->data[0] = 4;
}
x = sprite->data[0] * gSineTable[sprite->data[1]];
y = sprite->data[0] * gSineTable[sprite->data[1] + 64];
- sprite->pos2.x = x >> 8;
- sprite->pos2.y = y >> 8;
+ sprite->x2 = x >> 8;
+ sprite->y2 = y >> 8;
sprite->data[1] = (sprite->data[1] + 10) & 0xFF;
if (++sprite->data[2] > 8)
{
@@ -2276,16 +2276,16 @@ void unc_0807DAB4(struct Sprite *sprite)
sprite->data[0] = 0;
if (sprite->data[1] == 0)
{
- if (++sprite->pos2.x > 4)
+ if (++sprite->x2 > 4)
sprite->data[1] = 1;
}
else
{
- if (--sprite->pos2.x <= 0)
+ if (--sprite->x2 <= 0)
sprite->data[1] = 0;
}
}
- sprite->pos1.y -= 3;
+ sprite->y -= 3;
if (++sprite->data[2] > 0x77)
DestroySprite(sprite);
}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 7b16a5a9c..162dc4ff9 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -356,8 +356,8 @@ static void CutGrassSpriteCallback2(struct Sprite *sprite)
u16 tempdata;
u16 tempdata2;
- sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]);
- sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]);
+ sprite->x2 = Sin(sprite->data[2], sprite->data[0]);
+ sprite->y2 = Cos(sprite->data[2], sprite->data[0]);
sprite->data[2] = (sprite->data[2] + 8) & 0xFF;
sprite->data[0] += ((tempdata2 = sprite->data[3]) << 16 >> 18) + 1; // what?
diff --git a/src/fldeff_recordmixing.c b/src/fldeff_recordmixing.c
index 716447f9c..c6a660601 100644
--- a/src/fldeff_recordmixing.c
+++ b/src/fldeff_recordmixing.c
@@ -59,10 +59,10 @@ u8 CreateRecordMixingSprite(void)
else
{
struct Sprite *sprite = &gSprites[spriteId];
- sub_8060388(16, 13, &sprite->pos1.x, &sprite->pos1.y);
+ sub_8060388(16, 13, &sprite->x, &sprite->y);
sprite->coordOffsetEnabled = TRUE;
- sprite->pos1.x += 16;
- sprite->pos1.y += 2;
+ sprite->x += 16;
+ sprite->y += 2;
}
return spriteId;
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index 1c1285ad9..4a96ef872 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -11,26 +11,6 @@
#include "task.h"
#include "ewram.h"
-struct Struct2001000 {
- u8 unk0;
- u8 unk1;
- u8 unk2;
- u8 filler3[9];
- void *unkC;
-};
-
-struct Struct201C000 {
- struct Pokemon *unk0;
- u8 filler4[1];
- u8 unk5;
- u16 unk6;
- u8 filler8[4];
- s32 unkC;
- void* unk10;
- u8 filler14[26];
- s16 unk2E;
-};
-
#if ENGLISH
#define WINDOW_LEFT 3
#define WINDOW_RIGHT 26
@@ -40,15 +20,15 @@ struct Struct201C000 {
#endif
// extern
-extern u8 gUnknown_0202E8F6;
+extern u8 gPartyMenuMessage_IsPrinting;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_0202E8F4;
// Static
static void sub_8133D50(u8 taskId);
-static void sub_8133E74(u8 taskId);
-static void sub_8133EB8(u8 taskId);
-static void sub_8133EF8(void);
+static void Task_ChooseNewMonForSoftboiled(u8 taskId);
+static void CantUseSoftboiled(u8 taskId);
+static void sub_8133EF8(u8 taskId);
bool8 SetUpFieldMove_SoftBoiled(void) {
u16 maxHp;
@@ -68,60 +48,59 @@ bool8 SetUpFieldMove_SoftBoiled(void) {
}
void sub_8133D28(u8 taskid) {
- EWRAM_1000.unkC = sub_8133D50;
- EWRAM_1B000_2.unk272 = 3;
+ ePartyMenu.unkC = sub_8133D50;
+ ePartyMenu2.pmUnk272 = 3;
DoPokemonMenu_Switch(taskid);
}
static void sub_8133D50(u8 taskId) {
- u8 unk1, unk2;
+ u8 userPartyId, recipientPartyId;
u16 hp;
struct Pokemon *pokemon;
//struct Task *task;
struct Sprite *sprites = gSprites;
+ userPartyId = sprites[ePartyMenu.slotId].data[0];
+ recipientPartyId = sprites[ePartyMenu.slotId2].data[0];
- unk1 = sprites[EWRAM_1000.unk1].data[0];
- unk2 = sprites[EWRAM_1000.unk2].data[0];
-
- if (unk1 > 5 || unk2 > 5)
+ if (userPartyId > 5 || recipientPartyId > 5)
{
sub_806CD44(taskId);
return;
}
- EWRAM_1C000.unk0 = &gPlayerParty[sprites[EWRAM_1000.unk2].data[0]];
- hp = GetMonData(EWRAM_1C000.unk0, MON_DATA_HP);
+ gPartyMenu.pokemon = &gPlayerParty[sprites[ePartyMenu.slotId2].data[0]];
+ hp = GetMonData(gPartyMenu.pokemon, MON_DATA_HP);
- if (hp == 0 || unk1 == unk2 || GetMonData(EWRAM_1C000.unk0, MON_DATA_MAX_HP) == hp)
+ if (hp == 0 || userPartyId == recipientPartyId || GetMonData(gPartyMenu.pokemon, MON_DATA_MAX_HP) == hp)
{
- sub_8133EB8(taskId);
+ CantUseSoftboiled(taskId);
return;
}
PlaySE(SE_USE_ITEM);
- EWRAM_1C000.unk5 = gSprites[EWRAM_1000.unk1].data[0];
+ gPartyMenu.primarySelectedMonIndex = gSprites[ePartyMenu.slotId].data[0];
- pokemon = &gPlayerParty[EWRAM_1C000.unk5];
- EWRAM_1C000.unk0 = pokemon;
- EWRAM_1C000.unk6 = 0;
- EWRAM_1C000.unkC = -0x8000;
- EWRAM_1C000.unk10 = sub_8133EF8;
+ pokemon = &gPlayerParty[gPartyMenu.primarySelectedMonIndex];
+ gPartyMenu.pokemon = pokemon;
+ gPartyMenu.secondarySelectedIndex = 0;
+ gPartyMenu.unkC = -0x8000;
+ gPartyMenu.unk10 = sub_8133EF8;
- gTasks[taskId].data[10] = GetMonData(EWRAM_1C000.unk0, MON_DATA_MAX_HP);
- gTasks[taskId].data[11] = GetMonData(EWRAM_1C000.unk0, MON_DATA_HP);
+ gTasks[taskId].data[10] = GetMonData(gPartyMenu.pokemon, MON_DATA_MAX_HP);
+ gTasks[taskId].data[11] = GetMonData(gPartyMenu.pokemon, MON_DATA_HP);
gTasks[taskId].data[12] = gTasks[taskId].data[10] / 5;
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
gTasks[taskId].func = sub_806FA18;
- EWRAM_1B000_2.unk282 = gTasks[taskId].data[11];
+ ePartyMenu2.pmUnk282 = gTasks[taskId].data[11];
}
-static void sub_8133E74(u8 taskId) {
- if (gUnknown_0202E8F6)
+static void Task_ChooseNewMonForSoftboiled(u8 taskId) {
+ if (gPartyMenuMessage_IsPrinting)
{
return;
}
@@ -131,18 +110,19 @@ static void sub_8133E74(u8 taskId) {
gTasks[taskId].func = HandlePartyMenuSwitchPokemonInput;
}
-static void sub_8133EB8(u8 taskId) {
+static void CantUseSoftboiled(u8 taskId) {
gUnknown_0202E8F4 = 0;
- sub_806D5A4();
- sub_806E834(gOtherText_CantUseOnPoke, 1);
- gTasks[taskId].func = sub_8133E74;
+ PartyMenuEraseMsgBoxAndFrame();
+ DisplayPartyMenuMessage(gOtherText_CantUseOnPoke, 1);
+ gTasks[taskId].func = Task_ChooseNewMonForSoftboiled;
}
-static void sub_8133EF8(void) {
+static void sub_8133EF8(u8 taskId)
+{
sub_806CCE4();
- EWRAM_1B000_2.unk261 = 2;
- DestroySprite(&gSprites[EWRAM_1000.unk1]);
+ ePartyMenu2.unk261 = 2;
+ DestroySprite(&gSprites[ePartyMenu.slotId]);
Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
PrintPartyMenuPromptText(0, 0);
- SwitchTaskToFollowupFunc(EWRAM_1000.unk0);
+ SwitchTaskToFollowupFunc(ePartyMenu.unk0);
}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 2dd3266a3..96012dc0e 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -23,13 +23,13 @@
#include "pc_screen_effect.h"
#include "ewram.h"
-static EWRAM_DATA u32 sUnknown_0203931C = 0;
+static EWRAM_DATA u32 sHofFadePalettes = 0;
-extern bool8 gUnknown_02039324; // has hall of fame records
+extern bool8 gHasHallOfFameRecords; // has hall of fame records
extern void (*gGameContinueCallback)(void);
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern u8 gReservedSpritePaletteCount;
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern const u8 gContestConfetti_Gfx[];
extern const u8 gContestConfetti_Pal[];
@@ -54,7 +54,7 @@ struct HallofFameMons
static void sub_8141FF8(u8 taskID);
static void sub_81422E8(u8 taskID);
-static void sub_814217C(u8 taskID);
+static void Task_Hof_InitTeamSaveData(u8 taskID);
static void sub_8142274(u8 taskID);
static void sub_81422B8(u8 taskID);
static void sub_8142320(u8 taskID);
@@ -150,69 +150,69 @@ static const struct OamData sOamData_840B598 =
void* const gUnknown_0840B5A0[] =
{
- ewram8000,
- ewramA000,
- ewramC000,
- ewramE000,
- ewram10000,
- ewram14000,
- ewram18000_2
+ eHofGfxPtr + 0x0000,
+ eHofGfxPtr + 0x2000,
+ eHofGfxPtr + 0x4000,
+ eHofGfxPtr + 0x6000,
+ eHofGfxPtr + 0x8000,
+ eHofGfxPtr + 0xC000,
+ eHofGfxPtr + 0x10000
};
static const struct SpriteFrameImage sSpriteImageTable_840B5BC[] =
{
- {ewram8000, 0x800},
- {ewram8800, 0x800},
- {ewram9000, 0x800},
- {ewram9800, 0x800}
+ {eHofGfxPtr + 0x0000, 0x800},
+ {eHofGfxPtr + 0x800, 0x800},
+ {eHofGfxPtr + 0x1000, 0x800},
+ {eHofGfxPtr + 0x1800, 0x800}
};
static const struct SpriteFrameImage sSpriteImageTable_840B5DC[] =
{
- {ewramA000, 0x800},
- {ewramA800, 0x800},
- {ewramB000, 0x800},
- {ewramB800, 0x800}
+ {eHofGfxPtr + 0x2000, 0x800},
+ {eHofGfxPtr + 0x2800, 0x800},
+ {eHofGfxPtr + 0x3000, 0x800},
+ {eHofGfxPtr + 0x3800, 0x800}
};
static const struct SpriteFrameImage sSpriteImageTable_840B5FC[] =
{
- {ewramC000, 0x800},
- {ewramC800, 0x800},
- {ewramD000, 0x800},
- {ewramD800, 0x800}
+ {eHofGfxPtr + 0x4000, 0x800},
+ {eHofGfxPtr + 0x4800, 0x800},
+ {eHofGfxPtr + 0x5000, 0x800},
+ {eHofGfxPtr + 0x5800, 0x800}
};
static const struct SpriteFrameImage sSpriteImageTable_840B61C[] =
{
- {ewramE000, 0x800},
- {ewramE800, 0x800},
- {ewramF000, 0x800},
- {ewramF800, 0x800}
+ {eHofGfxPtr + 0x6000, 0x800},
+ {eHofGfxPtr + 0x6800, 0x800},
+ {eHofGfxPtr + 0x7000, 0x800},
+ {eHofGfxPtr + 0x7800, 0x800}
};
static const struct SpriteFrameImage sSpriteImageTable_840B63C[] =
{
- {ewram10000, 0x800},
- {ewram10800, 0x800},
- {ewram11000, 0x800},
- {ewram11800, 0x800}
+ {eHofGfxPtr + 0x8000, 0x800},
+ {eHofGfxPtr + 0x8800, 0x800},
+ {eHofGfxPtr + 0x9000, 0x800},
+ {eHofGfxPtr + 0x9800, 0x800}
};
static const struct SpriteFrameImage sSpriteImageTable_840B65C[] =
{
- {ewram14000, 0x800},
- {ewram14800, 0x800},
- {ewram15000, 0x800},
- {ewram15800, 0x800}
+ {eHofGfxPtr + 0xC000, 0x800},
+ {eHofGfxPtr + 0xC800, 0x800},
+ {eHofGfxPtr + 0xD000, 0x800},
+ {eHofGfxPtr + 0xD800, 0x800}
};
static const struct SpriteFrameImage sSpriteImageTable_840B67C[] =
{
- {ewram18000_2, 0x800},
- {ewram18800, 0x800},
- {ewram19000, 0x800},
- {ewram19800, 0x800}
+ {eHofGfxPtr + 0x10000, 0x800},
+ {eHofGfxPtr + 0x10800, 0x800},
+ {eHofGfxPtr + 0x11000, 0x800},
+ {eHofGfxPtr + 0x11800, 0x800}
};
static const struct SpriteFrameImage* const sUnknown_0840B69C[7] =
@@ -480,7 +480,7 @@ static void sub_8141FC4(void)
static void sub_8141FF8(u8 taskID)
{
u16 i, j;
- struct HallofFameMons* fameMons = eHallOfFameMons1;
+ struct HallofFameMons* fameMons = eHofMonPtr;
gTasks[taskID].tPokesNumber = 0; // valid pokes
for (i = 0; i < 6; i++)
@@ -508,7 +508,7 @@ static void sub_8141FF8(u8 taskID)
fameMons->mons[i].nick[0] = EOS;
}
}
- sUnknown_0203931C = 0;
+ sHofFadePalettes = 0;
gTasks[taskID].tDisplayedPoke = 0;
gTasks[taskID].data[4] = 0xFF;
for (i = 0; i < 6; i++)
@@ -518,19 +518,19 @@ static void sub_8141FF8(u8 taskID)
if (gTasks[taskID].data[0])
gTasks[taskID].func = sub_81422E8;
else
- gTasks[taskID].func = sub_814217C;
+ gTasks[taskID].func = Task_Hof_InitTeamSaveData;
}
-static void sub_814217C(u8 taskID)
+static void Task_Hof_InitTeamSaveData(u8 taskID)
{
u16 i;
- struct HallofFameMons* fameMons = eHallOfFameMons1;
- struct HallofFameMons* lastSavedTeam = eHallOfFameMons2;
+ struct HallofFameMons* fameMons = eHofMonPtr;
+ struct HallofFameMons* lastSavedTeam = (struct HallofFameMons *)gDecompressionBuffer;
- if (gUnknown_02039324 == FALSE)
+ if (gHasHallOfFameRecords == FALSE)
{
for (i = 0; i < 0x2000; i++)
- ewram1E000(i) = 0;
+ gSharedMem[0x1E000 + i] = 0; // gDecompressionBuffer[i] = 0;
}
else
Save_LoadGameData(SAVE_HALL_OF_FAME);
@@ -542,12 +542,12 @@ static void sub_814217C(u8 taskID)
}
if (i >= HALL_OF_FAME_MAX_TEAMS)
{
- struct HallofFameMons* r5 = eHallOfFameMons2;
- struct HallofFameMons* r6 = eHallOfFameMons2;
- r5++;
- for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, r6++, r5++)
+ struct HallofFameMons *afterTeam = (struct HallofFameMons *)gDecompressionBuffer;
+ struct HallofFameMons *beforeTeam = (struct HallofFameMons *)gDecompressionBuffer;
+ afterTeam++;
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, beforeTeam++, afterTeam++)
{
- *r6 = *r5;
+ *beforeTeam = *afterTeam;
}
lastSavedTeam--;
}
@@ -586,7 +586,7 @@ static void sub_8142320(u8 taskID)
u8 spriteID;
s16 xPos, yPos, field4, field6;
- struct HallofFameMons* fameMons = eHallOfFameMons1;
+ struct HallofFameMons* fameMons = eHofMonPtr;
u16 currPokeID = gTasks[taskID].tDisplayedPoke;
struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
@@ -617,7 +617,7 @@ static void sub_8142320(u8 taskID)
static void sub_8142404(u8 taskID)
{
- struct HallofFameMons* fameMons = eHallOfFameMons1;
+ struct HallofFameMons* fameMons = eHofMonPtr;
u16 currPokeID = gTasks[taskID].tDisplayedPoke;
struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
@@ -633,7 +633,7 @@ static void sub_8142404(u8 taskID)
static void sub_8142484(u8 taskID)
{
- struct HallofFameMons* fameMons = eHallOfFameMons1;
+ struct HallofFameMons* fameMons = eHofMonPtr;
u16 currPokeID = gTasks[taskID].tDisplayedPoke;
struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
@@ -641,11 +641,11 @@ static void sub_8142484(u8 taskID)
gTasks[taskID].tFrameCount--;
else
{
- sUnknown_0203931C |= (0x10000 << gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.paletteNum);
+ sHofFadePalettes |= (0x10000 << gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.paletteNum);
if (gTasks[taskID].tDisplayedPoke <= 4 && currMon[1].species != 0) // there is another pokemon to display
{
gTasks[taskID].tDisplayedPoke++;
- BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, RGB(31, 26, 28));
+ BeginNormalPaletteFade(sHofFadePalettes, 0, 12, 12, RGB(31, 26, 28));
gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.priority = 1;
gTasks[taskID].func = sub_8142320;
}
@@ -687,7 +687,7 @@ static void sub_8142618(u8 taskID)
if (gTasks[taskID].tMonSpriteID(i) != 0xFF)
gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1;
}
- BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, RGB(31, 26, 28));
+ BeginNormalPaletteFade(sHofFadePalettes, 0, 12, 12, RGB(31, 26, 28));
Menu_EraseWindowRect(0, 14, 29, 19);
gTasks[taskID].tFrameCount = 7;
gTasks[taskID].func = sub_81426F8;
@@ -722,8 +722,8 @@ static void sub_8142794(u8 taskID)
gTasks[taskID].tFrameCount--;
else
{
- if (gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x != 160)
- gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++;
+ if (gSprites[gTasks[taskID].tPlayerSpriteID].x != 160)
+ gSprites[gTasks[taskID].tPlayerSpriteID].x++;
else
{
Menu_DrawStdWindowFrame(1, 2, 15, 9);
@@ -756,7 +756,7 @@ static void sub_81428A0(u8 taskID)
if (!gPaletteFade.active)
{
DestroyTask(taskID);
- SetMainCallback2(sub_81439D0);
+ SetMainCallback2(CB2_StartCreditsSequence);
}
}
@@ -836,7 +836,7 @@ static void sub_8142A28(u8 taskID)
u16 *vram1, *vram2;
u16 i;
- struct HallofFameMons* savedTeams = eHallOfFameMons2;
+ struct HallofFameMons* savedTeams = (struct HallofFameMons *)gDecompressionBuffer;
for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++)
{
if (savedTeams->mons[0].species == 0)
@@ -861,7 +861,7 @@ static void sub_8142A28(u8 taskID)
static void sub_8142B04(u8 taskID)
{
- struct HallofFameMons* savedTeams = eHallOfFameMons2;
+ struct HallofFameMons* savedTeams = (struct HallofFameMons *)gDecompressionBuffer;
struct HallofFameMon* currMon;
u16 i;
u8* stringPtr;
@@ -870,7 +870,7 @@ static void sub_8142B04(u8 taskID)
savedTeams++;
currMon = &savedTeams->mons[0];
- sUnknown_0203931C = 0;
+ sHofFadePalettes = 0;
gTasks[taskID].tCurrPokeID = 0;
gTasks[taskID].tPokesNo = 0;
@@ -926,7 +926,7 @@ static void sub_8142B04(u8 taskID)
static void sub_8142CC8(u8 taskID)
{
- struct HallofFameMons* savedTeams = eHallOfFameMons2;
+ struct HallofFameMons* savedTeams = (struct HallofFameMons *)gDecompressionBuffer;
struct HallofFameMon* currMon;
u16 i;
u16 currMonID;
@@ -943,8 +943,8 @@ static void sub_8142CC8(u8 taskID)
currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID);
gSprites[currMonID].oam.priority = 0;
- sUnknown_0203931C = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
- BlendPalettesUnfaded(sUnknown_0203931C, 12, RGB(31, 26, 28));
+ sHofFadePalettes = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
+ BlendPalettesUnfaded(sHofFadePalettes, 12, RGB(31, 26, 28));
currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID];
if (currMon->species != SPECIES_EGG)
@@ -1224,7 +1224,7 @@ static void sub_81433E0(void)
*((u16*)(VRAM + 0x3000) + i) = 2;
}
- DmaFill16Large(3, 0, ewram0_6, 0x4000, 0x1000);
+ DmaFill16Large(3, 0, gSharedMem, 0x4000, 0x1000);
ResetPaletteFade();
LoadPalette(gHallOfFame_Pal, 0, 0x20);
}
@@ -1251,19 +1251,17 @@ static void sub_81435B8(void)
static void sub_81435DC(struct Sprite* sprite)
{
- u32 spritePos = *(u32*)(&sprite->pos1);
- u32 dataPos = *(u32*)(&sprite->data[1]);
- if (spritePos != dataPos)
+ if (sprite->x != sprite->data[1] || sprite->y != sprite->data[2])
{
- if (sprite->pos1.x < sprite->data[1])
- sprite->pos1.x += 15;
- if (sprite->pos1.x > sprite->data[1])
- sprite->pos1.x -= 15;
-
- if (sprite->pos1.y < sprite->data[2])
- sprite->pos1.y += 10;
- if (sprite->pos1.y > sprite->data[2])
- sprite->pos1.y -= 10;
+ if (sprite->x < sprite->data[1])
+ sprite->x += 15;
+ if (sprite->x > sprite->data[1])
+ sprite->x -= 15;
+
+ if (sprite->y < sprite->data[2])
+ sprite->y += 10;
+ if (sprite->y > sprite->data[2])
+ sprite->y -= 10;
}
else
{
@@ -1279,18 +1277,18 @@ static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite)
void sub_8143648(u16 paletteTag, u8 animID)
{
- gUnknown_02024E8C = sUnknown_0840B6B8;
- gUnknown_02024E8C.paletteTag = paletteTag;
- gUnknown_02024E8C.images = sUnknown_0840B69C[animID];
- gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64;
+ gCreatingSpriteTemplate = sUnknown_0840B6B8;
+ gCreatingSpriteTemplate.paletteTag = paletteTag;
+ gCreatingSpriteTemplate.images = sUnknown_0840B69C[animID];
+ gCreatingSpriteTemplate.anims = gSpriteAnimTable_81E7C64;
}
void sub_8143680(u16 paletteTag, u8 animID)
{
- gUnknown_02024E8C = sUnknown_0840B6B8;
- gUnknown_02024E8C.paletteTag = paletteTag;
- gUnknown_02024E8C.images = sUnknown_0840B69C[animID];
- gUnknown_02024E8C.anims = gUnknown_081EC2A4[0];
+ gCreatingSpriteTemplate = sUnknown_0840B6B8;
+ gCreatingSpriteTemplate.paletteTag = paletteTag;
+ gCreatingSpriteTemplate.images = sUnknown_0840B69C[animID];
+ gCreatingSpriteTemplate.anims = gUnknown_081EC2A4[0];
}
static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid)
@@ -1298,13 +1296,13 @@ static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID
u8 spriteID;
const u8* pokePal;
- LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, EWRAM, gUnknown_0840B5A0[pokeID], species, pid, 1);
+ LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (void *)EWRAM, gUnknown_0840B5A0[pokeID], species, pid, 1);
pokePal = GetMonSpritePalFromOtIdPersonality(species, tid, pid);
LoadCompressedPalette(pokePal, 16 * pokeID + 256, 0x20);
sub_8143648(pokeID, pokeID);
- spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 10 - pokeID);
+ spriteID = CreateSprite(&gCreatingSpriteTemplate, posX, posY, 10 - pokeID);
gSprites[spriteID].oam.paletteNum = pokeID;
return spriteID;
}
@@ -1318,7 +1316,7 @@ static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a
LoadCompressedPalette(gTrainerFrontPicPaletteTable[trainerPicID].data, 16 * a3 + 256, 0x20);
sub_8143680(a3, a3);
- spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 1);
+ spriteID = CreateSprite(&gCreatingSpriteTemplate, posX, posY, 1);
gSprites[spriteID].oam.paletteNum = a3;
return spriteID;
@@ -1326,19 +1324,19 @@ static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a
static void sub_814386C(struct Sprite* sprite)
{
- if (sprite->pos2.y > 120)
+ if (sprite->y2 > 120)
DestroySprite(sprite);
else
{
u16 rand;
u8 tableID;
- sprite->pos2.y++;
- sprite->pos2.y += sprite->data[1];
+ sprite->y2++;
+ sprite->y2 += sprite->data[1];
tableID = sprite->data[0];
rand = (Random() % 4) + 8;
- sprite->pos2.x = rand * gSineTable[tableID] / 256;
+ sprite->x2 = rand * gSineTable[tableID] / 256;
sprite->data[0] += 4;
}
diff --git a/src/image_processing_effects.c b/src/image_processing_effects.c
new file mode 100644
index 000000000..fe5fc5dd9
--- /dev/null
+++ b/src/image_processing_effects.c
@@ -0,0 +1,1204 @@
+#include "global.h"
+#include "image_processing_effects.h"
+#include "contest_painting.h"
+
+#define GET_R(color) ((color) & 0x1F)
+#define GET_G(color) (((color) >> 5) & 0x1F)
+#define GET_B(color) (((color) >> 10) & 0x1F)
+
+#define RGB_ALPHA (1 << 15)
+#define IS_ALPHA(color) ((color) & RGB_ALPHA)
+
+#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r))
+
+u16 *gCanvasPixels;
+u8 gCanvasColumnStart;
+u8 gCanvasRowEnd;
+u8 gCanvasRowStart;
+u8 gCanvasColumnEnd;
+u8 gCanvasHeight;
+u8 gCanvasMonPersonality;
+u8 gCanvasWidth;
+u16 * gCanvasPalette;
+u16 gCanvasPaletteStart;
+
+// this file's functions
+void ApplyImageEffect_Pointillism(void);
+void ApplyImageEffect_Blur(void);
+void ApplyImageEffect_BlackOutline(void);
+void ApplyImageEffect_Invert(void);
+void ApplyImageEffect_BlackAndWhite(void);
+void ApplyImageEffect_BlurRight(void);
+void ApplyImageEffect_BlurDown(void);
+void ApplyImageEffect_Shimmer(void);
+void ApplyImageEffect_Grayscale(void);
+void ApplyImageEffect_PersonalityColor(u8 personality);
+void ApplyImageEffect_RedChannelGrayscale(u8);
+void ApplyImageEffect_RedChannelGrayscaleHighlight(u8);
+void AddPointillismPoints(u16);
+u16 ConvertColorToGrayscale(u16*);
+u16 QuantizePixel_Blur(u16 *prevPixel, u16 *curPixel, u16 *nextPixel);
+u16 ConvertCoolColor(u16*, u8);
+u16 QuantizePixel_BlackAndWhite(u16*);
+u16 QuantizePixel_BlackOutline(u16 *colorA, u16 *colorB);
+u16 QuantizePixel_Invert(u16*);
+u16 QuantizePixel_BlurHard(u16 *prevPixel, u16 *curPixel, u16 *nextPixel);
+u16 QuantizePixel_MotionBlur(u16*, u16*);
+u16 GetCoolColorFromPersonality(u8);
+void QuantizePalette_Standard(bool8);
+void SetPresetPalette_PrimaryColors(void);
+void QuantizePalette_PrimaryColors(void);
+void SetPresetPalette_Grayscale(void);
+void QuantizePalette_Grayscale(void);
+void SetPresetPalette_GrayscaleSmall(void);
+void QuantizePalette_GrayscaleSmall(void);
+void SetPresetPalette_BlackAndWhite(void);
+void QuantizePalette_BlackAndWhite(void);
+u16 QuantizePixel_Standard(u16 *);
+u16 QuantizePixel_GrayscaleSmall(u16 *);
+u16 QuantizePixel_Grayscale(u16 *);
+u16 QuantizePixel_PrimaryColors(u16 *);
+
+#define MAX_DIMENSION 64
+
+#include "data/pointillism_points.h"
+
+void ApplyImageProcessingEffects(struct ImageProcessingContext* info)
+{
+ gCanvasPixels = info->canvasPixels;
+ gCanvasMonPersonality = info->personality;
+ gCanvasColumnStart = info->columnStart;
+ gCanvasRowStart = info->rowStart;
+ gCanvasColumnEnd = info->columnEnd;
+ gCanvasRowEnd = info->rowEnd;
+ gCanvasWidth = info->canvasWidth;
+ gCanvasHeight = info->canvasHeight;
+ switch (info->effect)
+ {
+ case IMAGE_EFFECT_POINTILLISM:
+ ApplyImageEffect_Pointillism();
+ break;
+ case IMAGE_EFFECT_BLUR:
+ ApplyImageEffect_Blur();
+ break;
+ case IMAGE_EFFECT_OUTLINE_COLORED:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_PersonalityColor(gCanvasMonPersonality);
+ break;
+ case IMAGE_EFFECT_INVERT_BLACK_WHITE:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_Invert();
+ ApplyImageEffect_BlackAndWhite();
+ case IMAGE_EFFECT_INVERT:
+ ApplyImageEffect_Invert();
+ break;
+ case IMAGE_EFFECT_THICK_BLACK_WHITE:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_BlurRight();
+ ApplyImageEffect_BlurRight();
+ ApplyImageEffect_BlurDown();
+ ApplyImageEffect_BlackAndWhite();
+ break;
+ case IMAGE_EFFECT_SHIMMER:
+ ApplyImageEffect_Shimmer();
+ break;
+ case IMAGE_EFFECT_OUTLINE:
+ ApplyImageEffect_BlackOutline();
+ break;
+ case IMAGE_EFFECT_BLUR_RIGHT:
+ ApplyImageEffect_BlurRight();
+ break;
+ case IMAGE_EFFECT_BLUR_DOWN:
+ ApplyImageEffect_BlurDown();
+ break;
+ case IMAGE_EFFECT_GRAYSCALE_LIGHT:
+ ApplyImageEffect_Grayscale();
+ ApplyImageEffect_RedChannelGrayscale(3);
+ break;
+ case IMAGE_EFFECT_CHARCOAL:
+ ApplyImageEffect_BlackOutline();
+ ApplyImageEffect_BlurRight();
+ ApplyImageEffect_BlurDown();
+ ApplyImageEffect_BlackAndWhite();
+ ApplyImageEffect_Blur();
+ ApplyImageEffect_Blur();
+ ApplyImageEffect_RedChannelGrayscale(2);
+ ApplyImageEffect_RedChannelGrayscaleHighlight(4);
+ break;
+ }
+}
+
+void ApplyImageEffect_RedChannelGrayscale(u8 delta)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pal = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pal++)
+ {
+ if (!IS_ALPHA(*pal))
+ {
+ u8 val = (31 & *pal);
+ val += delta;
+ if (val > 31)
+ val = 31;
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_RedChannelGrayscaleHighlight(u8 highlight)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pal = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pal++)
+ {
+ if (!IS_ALPHA(*pal))
+ {
+ u8 val = (31 & *pal);
+ if (val > 31 - highlight)
+ val = 31 - (highlight >> 1);
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_Pointillism(void)
+{
+ u32 i;
+ for (i = 0; i < 3200; i++)
+ AddPointillismPoints(i);
+}
+
+void ApplyImageEffect_Grayscale(void)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* color = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, color++)
+ {
+ if (!IS_ALPHA(*color))
+ {
+ *color = ConvertColorToGrayscale(color);
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_Blur(void)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasColumnEnd; i++)
+ {
+ u16* var0 = &gCanvasPixels[gCanvasRowStart * gCanvasWidth];
+ u16* palette = &var0[gCanvasColumnStart + i];
+ u16 color = *palette;
+ j = 1;
+ palette += gCanvasWidth;
+ while (j < gCanvasRowEnd - 1)
+ {
+ if (!IS_ALPHA(*palette))
+ {
+ *palette = QuantizePixel_Blur(&color, palette, palette + gCanvasWidth);
+ color = *palette;
+ }
+
+ j++;
+ palette += gCanvasWidth;
+ }
+ }
+}
+
+void ApplyImageEffect_PersonalityColor(u8 personality)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* pixelRow = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pixel = &pixelRow[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pixel++)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = ConvertCoolColor(pixel, personality);
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_BlackAndWhite(void)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* pixelRow = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pixel = &pixelRow[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pixel++)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_BlackAndWhite(pixel);
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_BlackOutline(void)
+{
+ u8 i, j;
+ u16 *pixel;
+
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* pixelRow = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ pixel = &pixelRow[gCanvasColumnStart];
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1);
+ for (j = 1, pixel = pixel + 1; j < gCanvasColumnEnd - 1; j++, pixel++)
+ {
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + 1);
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1);
+ }
+
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - 1);
+ }
+
+ for (j = 0; j < gCanvasColumnEnd; j++)
+ {
+ u16* var0 = &gCanvasPixels[gCanvasRowStart * gCanvasWidth];
+ pixel = &var0[gCanvasColumnStart + j];
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth);
+ for (i = 1, pixel = pixel + gCanvasWidth; i < gCanvasRowEnd - 1; i++, pixel += gCanvasWidth)
+ {
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel + gCanvasWidth);
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth);
+ }
+
+ *pixel = QuantizePixel_BlackOutline(pixel, pixel - gCanvasWidth);
+ }
+}
+
+void ApplyImageEffect_Invert(void)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* pixelRow = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pixel = &pixelRow[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pixel++)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_Invert(pixel);
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_Shimmer(void)
+{
+ u8 i, j;
+ u16 *pixel;
+ u16 color;
+
+ pixel = gCanvasPixels;
+ for (i = 0; i < 64; i++)
+ {
+ for (j = 0; j < 64; j++, pixel++)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_Invert(pixel);
+ }
+ }
+ }
+
+ for (j = 0; j < 64; j++)
+ {
+ pixel = &gCanvasPixels[j];
+ color = *pixel;
+ *pixel = RGB_ALPHA;
+ for (i = 1, pixel += 64; i < 63; i++, pixel += 64)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_BlurHard(&color, pixel, pixel + 64);
+ color = *pixel;
+ }
+ }
+
+ *pixel = RGB_ALPHA;
+ pixel = &gCanvasPixels[j];
+ color = *pixel;
+ *pixel = RGB_ALPHA;
+ for (i = 1, pixel += 64; i < 63; i++, pixel += 64)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_BlurHard(&color, pixel, pixel + 64);
+ color = *pixel;
+ }
+ }
+
+ *pixel = RGB_ALPHA;
+ }
+
+ pixel = gCanvasPixels;
+ for (i = 0; i < 64; i++)
+ {
+ for (j = 0; j < 64; j++, pixel++)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_Invert(pixel);
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_BlurRight(void)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* pixelRow = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pixel = &pixelRow[gCanvasColumnStart];
+ u16 color = *pixel;
+ for (j = 1, pixel++; j < gCanvasColumnEnd - 1; j++, pixel++)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_MotionBlur(&color, pixel);
+ color = *pixel;
+ }
+ }
+ }
+}
+
+void ApplyImageEffect_BlurDown(void)
+{
+ u8 i, j;
+ for (i = 0; i < gCanvasColumnEnd; i++)
+ {
+ u16* pixelRow = &gCanvasPixels[gCanvasRowStart * gCanvasWidth];
+ u16* pixel = &pixelRow[gCanvasColumnStart + i];
+ u16 prevPixel = *pixel;
+ for (j = 1, pixel += gCanvasWidth; j < gCanvasRowEnd - 1; j++, pixel += gCanvasWidth)
+ {
+ if (!IS_ALPHA(*pixel))
+ {
+ *pixel = QuantizePixel_MotionBlur(&prevPixel, pixel);
+ prevPixel = *pixel;
+ }
+ }
+ }
+}
+
+struct PointillismPoint
+{
+ u8 column;
+ u8 row;
+ u16 delta;
+};
+
+void AddPointillismPoints(u16 point)
+{
+ u8 i;
+ bool8 offsetDownLeft;
+ u8 colorType;
+ struct PointillismPoint points[6];
+
+ points[0].column = sPointillismPoints[point][0];
+ points[0].row = sPointillismPoints[point][1];
+ points[0].delta = GET_POINT_DELTA(sPointillismPoints[point][2]);
+
+ colorType = GET_POINT_COLOR_TYPE(sPointillismPoints[point][2]);
+ offsetDownLeft = GET_POINT_OFFSET_DL(sPointillismPoints[point][2]);
+ for (i = 1; i < points[0].delta; i++)
+ {
+ if (!offsetDownLeft)
+ {
+ points[i].column = points[0].column - i;
+ points[i].row = points[0].row + i;
+ }
+ else
+ {
+ points[i].column = points[0].column + 1;
+ points[i].row = points[0].row - 1;
+ }
+
+ if (points[i].column >= MAX_DIMENSION || points[i].row >= MAX_DIMENSION)
+ {
+ points[0].delta = i - 1;
+ break;
+ }
+
+ points[i].delta = points[0].delta - i;
+ }
+
+ for (i = 0; i < points[0].delta; i++)
+ {
+ u16 *pixel = &gCanvasPixels[points[i].row * MAX_DIMENSION] + points[i].column;
+
+ if (!IS_ALPHA(*pixel))
+ {
+ u16 red = GET_R(*pixel);
+ u16 green = GET_G(*pixel);
+ u16 blue = GET_B(*pixel);
+
+ switch (colorType)
+ {
+ case 0:
+ case 1:
+ switch (GET_POINT_DELTA(sPointillismPoints[point][2]) % 3)
+ {
+ case 0:
+ if (red >= points[i].delta)
+ red -= points[i].delta;
+ else
+ red = 0;
+ break;
+ case 1:
+ if (green >= points[i].delta)
+ green -= points[i].delta;
+ else
+ green = 0;
+ break;
+ case 2:
+ if (blue >= points[i].delta)
+ blue -= points[i].delta;
+ else
+ blue = 0;
+ break;
+ }
+ break;
+ case 2:
+ case 3:
+ red += points[i].delta;
+ green += points[i].delta;
+ blue += points[i].delta;
+ if (red > 31)
+ red = 31;
+ if (green > 31)
+ green = 31;
+ if (blue > 31)
+ blue = 31;
+ break;
+ }
+
+ *pixel = RGB2(red, green, blue);
+ }
+ }
+}
+
+u16 ConvertColorToGrayscale(u16 *color)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+ u16 average = (red + green + blue) / 3;
+ return RGB2(average, average, average);
+}
+
+// The dark colors are the colored edges of the Cool painting effect.
+// Everything else is white.
+u16 ConvertCoolColor(u16 *color, u8 personality)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+ if (red < 17 && green < 17 && blue < 17)
+ return GetCoolColorFromPersonality(personality);
+ else
+ return RGB_WHITE;
+}
+
+// Based on the given value, which comes from the first 8 bits of
+// the mon's personality value, return a color.
+u16 GetCoolColorFromPersonality(u8 personality)
+{
+ u16 red = 0;
+ u16 green = 0;
+ u16 blue = 0;
+ u8 strength = (personality / 6) % 3;
+ u8 colorType = personality % 6;
+
+ switch (colorType)
+ {
+ case 0:
+ // Teal color
+ green = 21 - strength;
+ blue = green;
+ red = 0;
+ break;
+ case 1:
+ // Yellow color
+ blue = 0;
+ red = 21 - strength;
+ green = red;
+ break;
+ case 2:
+ // Purple color
+ blue = 21 - strength;
+ green = 0;
+ red = blue;
+ break;
+ case 3:
+ // Red color
+ blue = 0;
+ green = 0;
+ red = 23 - strength;
+ break;
+ case 4:
+ // Blue color
+ blue = 23 - strength;
+ green = 0;
+ red = 0;
+ break;
+ case 5:
+ // Green color
+ blue = 0;
+ green = 23 - strength;
+ red = 0;
+ break;
+ }
+
+ return RGB2(red, green, blue);
+}
+
+u16 QuantizePixel_BlackAndWhite(u16 *color)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+ if (red < 17 && green < 17 && blue < 17)
+ return RGB_BLACK;
+ else
+ return RGB_WHITE;
+}
+
+u16 QuantizePixel_BlackOutline(u16 *colorA, u16 *colorB)
+{
+ if (*colorA)
+ {
+ if (IS_ALPHA(*colorA))
+ return RGB_ALPHA;
+ if (IS_ALPHA(*colorB))
+ return RGB_BLACK;
+
+ return *colorA;
+ }
+
+ return RGB_BLACK;
+}
+
+u16 QuantizePixel_Invert(u16 *color)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+ red = 31 - red;
+ green = 31 - green;
+ blue = 31 - blue;
+
+ return RGB2(red, green, blue);
+}
+
+u16 QuantizePixel_MotionBlur(u16 *prevPixel, u16 *curPixel)
+{
+ u16 pixelChannels[2][3];
+ u16 diffs[3];
+ u8 i;
+ u16 largestDiff;
+ u16 r, g, b;
+
+ if (*prevPixel == *curPixel)
+ return *curPixel;
+
+ pixelChannels[0][0] = GET_R(*prevPixel);
+ pixelChannels[0][1] = GET_G(*prevPixel);
+ pixelChannels[0][2] = GET_B(*prevPixel);
+ pixelChannels[1][0] = GET_R(*curPixel);
+ pixelChannels[1][1] = GET_G(*curPixel);
+ pixelChannels[1][2] = GET_B(*curPixel);
+
+ if (pixelChannels[0][0] > 25 && pixelChannels[0][1] > 25 && pixelChannels[0][2] > 25)
+ return *curPixel;
+ if (pixelChannels[1][0] > 25 && pixelChannels[1][1] > 25 && pixelChannels[1][2] > 25)
+ return *curPixel;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (pixelChannels[0][i] > pixelChannels[1][i])
+ diffs[i] = pixelChannels[0][i] - pixelChannels[1][i];
+ else
+ diffs[i] = pixelChannels[1][i] - pixelChannels[0][i];
+ }
+
+ if (diffs[0] >= diffs[1])
+ {
+ if (diffs[0] >= diffs[2])
+ largestDiff = diffs[0];
+ else if (diffs[1] >= diffs[2])
+ largestDiff = diffs[1];
+ else
+ largestDiff = diffs[2];
+ }
+ else
+ {
+ if (diffs[1] >= diffs[2])
+ largestDiff = diffs[1];
+ else if (diffs[2] >= diffs[0])
+ largestDiff = diffs[2];
+ else
+ largestDiff = diffs[0];
+ }
+
+ r = (pixelChannels[1][0] * (31 - largestDiff / 2)) / 31;
+ g = (pixelChannels[1][1] * (31 - largestDiff / 2)) / 31;
+ b = (pixelChannels[1][2] * (31 - largestDiff / 2)) / 31;
+ return RGB2(r, g, b);
+}
+
+u16 QuantizePixel_Blur(u16 *prevPixel, u16 *curPixel, u16 *nextPixel)
+{
+ u16 red, green, blue;
+ u16 avg0, avg1, avg2;
+ u16 diff1, diff2;
+ u32 minimum;
+ u16 factor;
+
+ if (*prevPixel == *curPixel && *nextPixel == *curPixel)
+ return *curPixel;
+
+ red = GET_R(*curPixel);
+ green = GET_G(*curPixel);
+ blue = GET_B(*curPixel);
+
+ avg0 = ((GET_R(*prevPixel)) + (GET_G(*prevPixel)) + (GET_B(*prevPixel))) / 3;
+ avg1 = ((GET_R(*curPixel)) + (GET_G(*curPixel)) + (GET_B(*curPixel))) / 3;
+ avg2 = ((GET_R(*nextPixel)) + (GET_G(*nextPixel)) + (GET_B(*nextPixel))) / 3;
+
+ if (avg0 == avg1 && avg2 == avg1)
+ return *curPixel;
+
+ if (avg0 > avg1)
+ diff1 = avg0 - avg1;
+ else
+ diff1 = avg1 - avg0;
+
+ if (avg2 > avg1)
+ diff2 = avg2 - avg1;
+ else
+ diff2 = avg1 - avg2;
+
+ if (diff1 >= diff2)
+ minimum = diff1;
+ else
+ minimum = diff2;
+
+ factor = 31 - minimum / 2;
+ red = red * factor / 31;
+ green = green * factor / 31;
+ blue = blue * factor / 31;
+ return RGB2(red, green, blue);
+}
+
+u16 QuantizePixel_BlurHard(u16 *prevPixel, u16 *curPixel, u16 *nextPixel)
+{
+ u16 red, green, blue;
+ u16 avg0, avg1, avg2;
+ u16 diff1, diff2;
+ u32 minimum;
+ u16 factor;
+
+ if (*prevPixel == *curPixel && *nextPixel == *curPixel)
+ return *curPixel;
+
+ red = GET_R(*curPixel);
+ green = GET_G(*curPixel);
+ blue = GET_B(*curPixel);
+
+ avg0 = ((GET_R(*prevPixel)) + (GET_G(*prevPixel)) + (GET_B(*prevPixel))) / 3;
+ avg1 = ((GET_R(*curPixel)) + (GET_G(*curPixel)) + (GET_B(*curPixel))) / 3;
+ avg2 = ((GET_R(*nextPixel)) + (GET_G(*nextPixel)) + (GET_B(*nextPixel))) / 3;
+
+ if (avg0 == avg1 && avg2 == avg1)
+ return *curPixel;
+
+ if (avg0 > avg1)
+ diff1 = avg0 - avg1;
+ else
+ diff1 = avg1 - avg0;
+
+ if (avg2 > avg1)
+ diff2 = avg2 - avg1;
+ else
+ diff2 = avg1 - avg2;
+
+ if (diff1 >= diff2)
+ minimum = diff1;
+ else
+ minimum = diff2;
+
+ factor = 31 - minimum;
+ red = red * factor / 31;
+ green = green * factor / 31;
+ blue = blue * factor / 31;
+ return RGB2(red, green, blue);
+}
+
+void ConvertImageProcessingToGBA(struct ImageProcessingContext *context)
+{
+ u16 i, j, k;
+ u16 *src, *dest, *src_, *dest_;
+ u16 width, height;
+
+ width = context->canvasWidth >> 3;
+ height = context->canvasHeight >> 3;
+ src_ = context->canvasPixels;
+ dest_ = context->dest;
+
+ if (context->bgType == 2)
+ {
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ for (k = 0; k < 8; k++)
+ {
+ dest = dest_ + ((i * width + j) << 5) + (k << 2);
+ src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3);
+
+ dest[0] = src[0] | (src[1] << 8);
+ dest[1] = src[2] | (src[3] << 8);
+ dest[2] = src[4] | (src[5] << 8);
+ dest[3] = src[6] | (src[7] << 8);
+ }
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ for (k = 0; k < 8; k++)
+ {
+ dest = dest_ + ((i * width + j) << 4) + (k << 1);
+ src = src_ + ((((i << 3) + k) << 3) * width) + (j << 3);
+
+ dest[0] = src[0] | (src[1] << 4) | (src[2] << 8) | (src[3] << 12);
+ dest[1] = src[4] | (src[5] << 4) | (src[6] << 8) | (src[7] << 12);
+ }
+ }
+ }
+ }
+}
+
+void ApplyImageProcessingQuantization(struct ImageProcessingContext *arg0)
+{
+ gCanvasPaletteStart = arg0->paletteStart * 16;
+ gCanvasPalette = &arg0->canvasPalette[gCanvasPaletteStart];
+ gCanvasPixels = arg0->canvasPixels;
+ gCanvasColumnStart = arg0->columnStart;
+ gCanvasRowStart = arg0->rowStart;
+ gCanvasColumnEnd = arg0->columnEnd;
+ gCanvasRowEnd = arg0->rowEnd;
+ gCanvasWidth = arg0->canvasWidth;
+ gCanvasHeight = arg0->canvasHeight;
+
+ switch (arg0->quantizeEffect)
+ {
+ case QUANTIZE_EFFECT_STANDARD:
+ QuantizePalette_Standard(FALSE);
+ break;
+ case QUANTIZE_EFFECT_STANDARD_LIMITED_COLORS:
+ QuantizePalette_Standard(TRUE);
+ break;
+ case QUANTIZE_EFFECT_PRIMARY_COLORS:
+ SetPresetPalette_PrimaryColors();
+ QuantizePalette_PrimaryColors();
+ break;
+ case QUANTIZE_EFFECT_GRAYSCALE:
+ SetPresetPalette_Grayscale();
+ QuantizePalette_Grayscale();
+ break;
+ case QUANTIZE_EFFECT_GRAYSCALE_SMALL:
+ SetPresetPalette_GrayscaleSmall();
+ QuantizePalette_GrayscaleSmall();
+ break;
+ case QUANTIZE_EFFECT_BLACK_WHITE:
+ SetPresetPalette_BlackAndWhite();
+ QuantizePalette_BlackAndWhite();
+ break;
+ }
+}
+
+void SetPresetPalette_PrimaryColors(void)
+{
+ gCanvasPalette[0] = RGB_BLACK;
+ gCanvasPalette[1] = RGB2(6, 6, 6);
+ gCanvasPalette[2] = RGB2(29, 29, 29);
+ gCanvasPalette[3] = RGB2(11, 11, 11);
+ gCanvasPalette[4] = RGB2(29, 6, 6);
+ gCanvasPalette[5] = RGB2(6, 29, 6);
+ gCanvasPalette[6] = RGB2(6, 6, 29);
+ gCanvasPalette[7] = RGB2(29, 29, 6);
+ gCanvasPalette[8] = RGB2(29, 6, 29);
+ gCanvasPalette[9] = RGB2(6, 29, 29);
+ gCanvasPalette[10] = RGB2(29, 11, 6);
+ gCanvasPalette[11] = RGB2(11, 29, 6);
+ gCanvasPalette[12] = RGB2(6, 11, 29);
+ gCanvasPalette[13] = RGB2(29, 6, 11);
+ gCanvasPalette[14] = RGB2(6, 29, 11);
+ gCanvasPalette[15] = RGB2(11, 6, 29);
+}
+
+void SetPresetPalette_BlackAndWhite(void)
+{
+ gCanvasPalette[0] = RGB_BLACK;
+ gCanvasPalette[1] = RGB_BLACK;
+ gCanvasPalette[2] = RGB_WHITE;
+}
+
+void SetPresetPalette_GrayscaleSmall(void)
+{
+ u8 i;
+
+ gCanvasPalette[0] = RGB_BLACK;
+ gCanvasPalette[1] = RGB_BLACK;
+ for (i = 0; i < 14; i++)
+ gCanvasPalette[i + 2] = RGB2(2 * (i + 2), 2 * (i + 2), 2 * (i + 2));
+}
+
+void SetPresetPalette_Grayscale(void)
+{
+ u8 i;
+
+ gCanvasPalette[0] = RGB_BLACK;
+ for (i = 0; i < 32; i++)
+ gCanvasPalette[i + 1] = RGB2(i, i, i);
+}
+
+void QuantizePalette_Standard(bool8 arg0)
+{
+ u8 i, j;
+ u16 maxIndex;
+
+ maxIndex = 0xDF;
+ if (!arg0)
+ maxIndex = 0xFF;
+
+ for (j = 0; j < maxIndex; j++)
+ gCanvasPalette[j] = 0;
+
+ gCanvasPalette[maxIndex] = RGB2(15, 15, 15);
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pal = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pal++)
+ {
+ if (IS_ALPHA(*pal))
+ {
+ *pal = gCanvasPaletteStart;
+ }
+ else
+ {
+ u16 color = QuantizePixel_Standard(pal);
+ u8 curIndex = 1;
+ if (curIndex < maxIndex)
+ {
+ if (gCanvasPalette[curIndex] == RGB_BLACK)
+ {
+ gCanvasPalette[curIndex] = color;
+ *pal = gCanvasPaletteStart + curIndex;
+ }
+ else
+ {
+ while (curIndex < maxIndex)
+ {
+ if (gCanvasPalette[curIndex] == RGB_BLACK)
+ {
+ gCanvasPalette[curIndex] = color;
+ *pal = gCanvasPaletteStart + curIndex;
+ break;
+ }
+
+ if (gCanvasPalette[curIndex] == color)
+ {
+ *pal = gCanvasPaletteStart + curIndex;
+ break;
+ }
+
+ curIndex++;
+ }
+ }
+ }
+
+ if (curIndex == maxIndex)
+ {
+ curIndex = maxIndex;
+ *pal = curIndex;
+ }
+ }
+ }
+ }
+}
+
+void QuantizePalette_BlackAndWhite(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pal = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pal++)
+ {
+ if (IS_ALPHA(*pal))
+ {
+ *pal = gCanvasPaletteStart;
+ }
+ else
+ {
+ if (QuantizePixel_BlackAndWhite(pal) == RGB_BLACK)
+ *pal = gCanvasPaletteStart + 1;
+ else
+ *pal = gCanvasPaletteStart + 2;
+ }
+ }
+ }
+}
+
+void QuantizePalette_GrayscaleSmall(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pal = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pal++)
+ {
+ if (IS_ALPHA(*pal))
+ *pal = gCanvasPaletteStart;
+ else
+ *pal = QuantizePixel_GrayscaleSmall(pal) + gCanvasPaletteStart;
+ }
+ }
+}
+
+void QuantizePalette_Grayscale(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pal = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pal++)
+ {
+ if (IS_ALPHA(*pal))
+ *pal = gCanvasPaletteStart;
+ else
+ *pal = QuantizePixel_Grayscale(pal) + gCanvasPaletteStart;
+ }
+ }
+}
+
+void QuantizePalette_PrimaryColors(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < gCanvasRowEnd; i++)
+ {
+ u16* var2 = &gCanvasPixels[(gCanvasRowStart + i) * gCanvasWidth];
+ u16* pal = &var2[gCanvasColumnStart];
+ for (j = 0; j < gCanvasColumnEnd; j++, pal++)
+ {
+ if (IS_ALPHA(*pal))
+ *pal = gCanvasPaletteStart;
+ else
+ *pal = QuantizePixel_PrimaryColors(pal) + gCanvasPaletteStart;
+ }
+ }
+}
+
+u16 QuantizePixel_Standard(u16 *color)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+
+ if (red & 3)
+ red = (red & 0x1C) + 4;
+ if (green & 3)
+ green = (green & 0x1C) + 4;
+ if (blue & 3)
+ blue = (blue & 0x1C) + 4;
+
+ if (red < 6)
+ red = 6;
+ if (red > 30)
+ red = 30;
+
+ if (green < 6)
+ green = 6;
+ if (green > 30)
+ green = 30;
+
+ if (blue < 6)
+ blue = 6;
+ if (blue > 30)
+ blue = 30;
+
+ return RGB2(red, green, blue);
+}
+
+u16 QuantizePixel_PrimaryColors(u16* color)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+
+ if (red < 12 && green < 11 && blue < 11)
+ return 1;
+
+ if (red > 19 && green > 19 && blue > 19)
+ return 2;
+
+ if (red > 19)
+ {
+ if (green > 19)
+ {
+ if (blue > 14)
+ return 2;
+ else
+ return 7;
+ }
+ else if (blue > 19)
+ {
+ if (green > 14)
+ return 2;
+ else
+ return 8;
+ }
+ }
+
+ if (green > 19 && blue > 19)
+ {
+ if (red > 14)
+ return 2;
+ else
+ return 9;
+ }
+
+ if (red > 19)
+ {
+ if (green > 11)
+ {
+ if (blue > 11)
+ {
+ if (green < blue)
+ return 8;
+ else
+ return 7;
+ }
+ else
+ {
+ return 10;
+ }
+ }
+ else if (blue > 11)
+ {
+ return 13;
+ }
+ else
+ {
+ return 4;
+ }
+ }
+
+ if (green > 19)
+ {
+ if (red > 11)
+ {
+ if (blue > 11)
+ {
+ if (red < blue)
+ return 9;
+ else
+ return 7;
+ }
+ else
+ {
+ return 11;
+ }
+ }
+ else
+ {
+ if (blue > 11)
+ return 14;
+ else
+ return 5;
+ }
+ }
+
+ if (blue > 19)
+ {
+ if (red > 11)
+ {
+ if (green > 11)
+ {
+ if (red < green)
+ return 9;
+ else
+ return 8;
+ }
+ }
+ else if (green > 11)
+ {
+ return 12;
+ }
+
+ if (blue > 11)
+ return 15;
+ else
+ return 6;
+ }
+
+ return 3;
+}
+
+u16 QuantizePixel_GrayscaleSmall(u16 *color)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+ u16 average = ((red + green + blue) / 3) & 0x1E;
+ if (average == 0)
+ return 1;
+ else
+ return average / 2;
+}
+
+u16 QuantizePixel_Grayscale(u16 *color)
+{
+ u16 red = GET_R(*color);
+ u16 green = GET_G(*color);
+ u16 blue = GET_B(*color);
+ u16 average = (red + green + blue) / 3;
+ return average + 1;
+}
diff --git a/src/intro.c b/src/intro.c
index f1904f86e..4ade0714f 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -22,7 +22,7 @@
#include "scanline_effect.h"
#include "ewram.h"
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern u16 gUnknown_02039358;
extern u16 gUnknown_0203935A;
extern u16 gSaveFileStatus;
@@ -770,7 +770,7 @@ const struct SpritePalette gIntro3MiscPal_Table[] =
// Game Freak probably used the raw address here.
// Treating this like a u8 * causes the compiler
// to remove it at link time.
-const u32 unusedSharedMemPtr = (u32)gSharedMem;
+u8 (*const ewram0arr)[32] = (u8 (*)[32])gSharedMem;
static void MainCB2_EndIntro(void);
void Task_IntroLoadPart1Graphics(u8);
@@ -1153,9 +1153,9 @@ static void Task_IntroHandleBikeAndEonMovement(u8 taskId)
if (gTasks[taskId].data[3] < 512)
gTasks[taskId].data[3]++;
#ifdef SAPPHIRE
- sub_8149020(0);
+ CycleSceneryPalette(0);
#else
- sub_8149020(1);
+ CycleSceneryPalette(1);
#endif
}
@@ -1212,8 +1212,6 @@ static void Task_IntroWaitToSetupPart3DoubleFight(u8 taskId)
gTasks[taskId].func = Task_IntroLoadPart3Streaks;
}
-//extern u8 gSharedMem[][32];
-
static void Task_IntroLoadPart3Streaks(u8 taskId)
{
u16 i;
@@ -1225,7 +1223,7 @@ static void Task_IntroLoadPart3Streaks(u8 taskId)
ewram0arr[1][i] = 17;
ewram0arr[2][i] = 34;
}
- DmaCopy16Defvars(3, gSharedMem, (void *)(VRAM + 0x0), 0x60);
+ DmaCopy16Defvars(3, ewram0arr, (void *)(VRAM + 0x0), 0x60);
for (i = 0; i < 0x280; i++)
((u16 *)(VRAM + 0x3000))[i] = 0xF001;
for (i = 0; i < 0x80; i++)
@@ -1601,13 +1599,13 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front)
u8 spriteId;
if (front)
- LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, EWRAM, gUnknown_0840B5A0[d], species, 0, 1);
+ LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (void *)EWRAM, gUnknown_0840B5A0[d], species, 0, 1);
else
- LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, EWRAM, gUnknown_0840B5A0[d], species, 0, 0);
+ LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, (void *)EWRAM, gUnknown_0840B5A0[d], species, 0, 0);
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF);
LoadCompressedPalette(lzPaletteData, 0x100 + d * 0x10, 0x20);
sub_8143648(d, d);
- spriteId = CreateSprite(&gUnknown_02024E8C, x, y, (d + 1) * 4);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, x, y, (d + 1) * 4);
gSprites[spriteId].oam.paletteNum = d;
gSprites[spriteId].oam.priority = 1;
return spriteId;
@@ -1620,8 +1618,8 @@ static u8 sub_813CFA8(u16 a, u16 b, u16 c, u16 d)
DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].coords, gTrainerBackPicCoords[a].y_offset, (void *)EWRAM, gUnknown_0840B5A0[d], a);
LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + d * 0x10, 0x20);
sub_8143680(d, d);
- gUnknown_02024E8C.anims = gUnknown_0840B064;
- spriteId = CreateSprite(&gUnknown_02024E8C, b, c, 1);
+ gCreatingSpriteTemplate.anims = gUnknown_0840B064;
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, b, c, 1);
gSprites[spriteId].oam.paletteNum = d;
gSprites[spriteId].oam.priority = 1;
return spriteId;
@@ -1680,8 +1678,8 @@ static void sub_813D158(struct Sprite *sprite)
if (gSprites[sprite->data[7]].data[7] != 0)
{
sprite->invisible = TRUE;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
StartSpriteAnim(sprite, 3);
sprite->data[2] = 1024;
sprite->data[3] = 8 * (sprite->data[1] & 3);
@@ -1692,10 +1690,10 @@ static void sub_813D158(struct Sprite *sprite)
}
else
{
- sprite->pos2.x = gSprites[sprite->data[7]].pos2.x;
- sprite->pos2.y = gSprites[sprite->data[7]].pos2.y;
- sprite->pos1.x = gSprites[sprite->data[7]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[7]].pos1.y;
+ sprite->x2 = gSprites[sprite->data[7]].x2;
+ sprite->y2 = gSprites[sprite->data[7]].y2;
+ sprite->x = gSprites[sprite->data[7]].x;
+ sprite->y = gSprites[sprite->data[7]].y;
}
}
@@ -1707,12 +1705,12 @@ static void sub_813D208(struct Sprite *sprite)
static void sub_813D220(struct Sprite *sprite)
{
- if (sprite->pos1.x <= 116)
+ if (sprite->x <= 116)
{
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos1.x += 4;
- sprite->pos2.x = -4;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x += 4;
+ sprite->x2 = -4;
sprite->data[4] = 128;
sprite->callback = sub_813D368;
}
@@ -1735,10 +1733,10 @@ static void sub_813D220(struct Sprite *sprite)
sin1 = gSineTable[(u8)data4];
sin2 = gSineTable[(u8)(data4 + 64)];
sprite->data[4] += 2;
- sprite->pos2.y = sin1 / 32;
- sprite->pos1.x--;
- if (sprite->pos1.x & 1)
- sprite->pos1.y++;
+ sprite->y2 = sin1 / 32;
+ sprite->x--;
+ if (sprite->x & 1)
+ sprite->y++;
temp = -sin2 / 16;
data2 = sprite->data[2];
data3 = sprite->data[3];
@@ -1765,8 +1763,8 @@ static void sub_813D368(struct Sprite *sprite)
sprite->data[4] -= 8;
data4 = sprite->data[4];
- sprite->pos2.x = gSineTable[(u8)(data4 + 64)] / 64;
- sprite->pos2.y = gSineTable[(u8)data4] / 64;
+ sprite->x2 = gSineTable[(u8)(data4 + 64)] / 64;
+ sprite->y2 = gSineTable[(u8)data4] / 64;
}
else
{
@@ -1783,8 +1781,8 @@ static void sub_813D414(struct Sprite *sprite)
sprite->data[4] += 8;
r2 = gSineTable[(u8)sprite->data[4]] / 16 + 64;
- sprite->pos2.x = gSineTable[(u8)(r2 + 64)] / 64;
- sprite->pos2.y = gSineTable[(u8)r2] / 64;
+ sprite->x2 = gSineTable[(u8)(r2 + 64)] / 64;
+ sprite->y2 = gSineTable[(u8)r2] / 64;
}
else
{
@@ -1794,16 +1792,16 @@ static void sub_813D414(struct Sprite *sprite)
static void SpriteCB_WaterDropFall(struct Sprite *sprite)
{
- if (sprite->pos1.y < sprite->data[5])
+ if (sprite->y < sprite->data[5])
{
- sprite->pos1.y += 4;
+ sprite->y += 4;
}
else
{
sprite->data[7] = 1;
sprite->invisible = TRUE;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
StartSpriteAnim(sprite, 3);
sprite->data[2] = 1024;
sprite->data[3] = 8 * (sprite->data[1] & 3);
@@ -1817,16 +1815,16 @@ static void SpriteCB_WaterDropFall(struct Sprite *sprite)
//Duplicate function
static void SpriteCB_WaterDropFall_2(struct Sprite *sprite)
{
- if (sprite->pos1.y < sprite->data[5])
+ if (sprite->y < sprite->data[5])
{
- sprite->pos1.y += 4;
+ sprite->y += 4;
}
else
{
sprite->data[7] = 1;
sprite->invisible = TRUE;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
StartSpriteAnim(sprite, 3);
sprite->data[2] = 1024;
sprite->data[3] = 8 * (sprite->data[1] & 3);
@@ -1890,47 +1888,47 @@ static void sub_813D788(struct Sprite *sprite)
{
case 0:
StartSpriteAnimIfDifferent(sprite, 0);
- sprite->pos1.x--;
+ sprite->x--;
break;
case 1:
StartSpriteAnimIfDifferent(sprite, 0);
if (gIntroFrameCounter & 7)
return;
- sprite->pos1.x++;
+ sprite->x++;
break;
case 2:
StartSpriteAnimIfDifferent(sprite, 2);
- if (sprite->pos1.x <= 120 || (gIntroFrameCounter & 7))
- sprite->pos1.x++;
+ if (sprite->x <= 120 || (gIntroFrameCounter & 7))
+ sprite->x++;
break;
case 3:
StartSpriteAnimIfDifferent(sprite, 3);
break;
case 4:
StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 2;
+ if (sprite->x > -32)
+ sprite->x -= 2;
break;
}
if (gIntroFrameCounter & 7)
return;
- if (sprite->pos2.y != 0)
+ if (sprite->y2 != 0)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
}
else
{
switch (Random() & 3)
{
case 0:
- sprite->pos2.y = -1;
+ sprite->y2 = -1;
break;
case 1:
- sprite->pos2.y = 1;
+ sprite->y2 = 1;
break;
case 2:
case 3:
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
break;
}
}
@@ -1943,23 +1941,23 @@ static void sub_813D880(struct Sprite *sprite)
case 0:
break;
case 1:
- if (sprite->pos2.x + sprite->pos1.x < 304)
- sprite->pos2.x += 8;
+ if (sprite->x2 + sprite->x < 304)
+ sprite->x2 += 8;
else
sprite->data[0] = 2;
break;
case 2:
- if (sprite->pos2.x + sprite->pos1.x > 120)
- sprite->pos2.x -= 1;
+ if (sprite->x2 + sprite->x > 120)
+ sprite->x2 -= 1;
else
sprite->data[0] = 3;
break;
case 3:
- if (sprite->pos2.x > 0)
- sprite->pos2.x -= 2;
+ if (sprite->x2 > 0)
+ sprite->x2 -= 2;
break;
}
- sprite->pos2.y = Sin((u8)sprite->data[1], 8) - gUnknown_0203935A;
+ sprite->y2 = Sin((u8)sprite->data[1], 8) - gUnknown_0203935A;
sprite->data[1] += 4;
}
@@ -2030,8 +2028,8 @@ static void sub_813DA64(struct Sprite *sprite)
if (sprite->data[3] < 0x50)
{
- sprite->pos2.y = -Sin((u8)sprite->data[3], 0x78);
- sprite->pos2.x = -Sin((u8)sprite->data[3], 0x8C);
+ sprite->y2 = -Sin((u8)sprite->data[3], 0x78);
+ sprite->x2 = -Sin((u8)sprite->data[3], 0x8C);
if (sprite->data[3] > 64)
sprite->oam.priority = 3;
}
@@ -2072,13 +2070,13 @@ static void sub_813DB9C(struct Sprite *sprite)
sprite->data[0] = 1;
//fall through
case 1:
- if (sprite->pos1.y > 96)
+ if (sprite->y > 96)
{
- sprite->pos1.y -= 4;
+ sprite->y -= 4;
if (sprite->data[2] != 0)
- sprite->pos1.x += 2;
+ sprite->x += 2;
else
- sprite->pos1.x -= 2;
+ sprite->x -= 2;
}
else
{
@@ -2110,16 +2108,16 @@ static void sub_813DB9C(struct Sprite *sprite)
break;
case 4:
sprite->data[4]++;
- if (sprite->pos1.y + sprite->pos2.y > -32
- && sprite->pos1.x + sprite->pos2.x > -64)
+ if (sprite->y + sprite->y2 > -32
+ && sprite->x + sprite->x2 > -64)
{
u16 r2;
- sprite->pos2.y = -(sprite->data[4] * sprite->data[4]) / 8;
+ sprite->y2 = -(sprite->data[4] * sprite->data[4]) / 8;
if (sprite->data[2] != 0)
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
else
- sprite->pos2.x -= sprite->data[4];
+ sprite->x2 -= sprite->data[4];
if (sprite->data[3] < 128)
sprite->data[3] += 8;
r2 = 256 - sprite->data[3];
@@ -2169,11 +2167,11 @@ static void sub_813DD58(struct Sprite *sprite)
break;
case 3:
sprite->data[4]++;
- sprite->pos2.y = sprite->data[4] * sprite->data[4] / 32;
+ sprite->y2 = sprite->data[4] * sprite->data[4] / 32;
if (sprite->data[2] != 0)
- sprite->pos2.x = sprite->data[4] / 4;
+ sprite->x2 = sprite->data[4] / 4;
else
- sprite->pos2.x = -(sprite->data[4] / 4);
+ sprite->x2 = -(sprite->data[4] / 4);
break;
}
}
@@ -2184,9 +2182,9 @@ static void sub_813DE70(struct Sprite *sprite)
{
case 0:
default:
- if (sprite->pos1.x > 40)
+ if (sprite->x > 40)
{
- sprite->pos1.x -= 4;
+ sprite->x -= 4;
}
else
{
@@ -2205,23 +2203,23 @@ static void sub_813DE70(struct Sprite *sprite)
sprite->data[0]++;
break;
case 3:
- if (sprite->pos1.y > 160)
+ if (sprite->y > 160)
{
sprite->invisible = TRUE;
sprite->data[0] = 1;
}
else
{
- sprite->pos1.y += 2;
- sprite->pos1.x--;
+ sprite->y += 2;
+ sprite->x--;
}
break;
case 4:
{
s16 r4, r5;
- r5 = gSprites[sprite->data[6]].pos1.x + gSprites[sprite->data[6]].pos2.x;
- r4 = gSprites[sprite->data[6]].pos1.y + gSprites[sprite->data[6]].pos2.y;
+ r5 = gSprites[sprite->data[6]].x + gSprites[sprite->data[6]].x2;
+ r4 = gSprites[sprite->data[6]].y + gSprites[sprite->data[6]].y2;
DestroySprite(&gSprites[sprite->data[6]]);
sprite->data[6] = sub_813CE88(SPECIES_TORCHIC, r5, r4, 2, 1);
gSprites[sprite->data[6]].callback = sub_813DD58;
@@ -2230,8 +2228,8 @@ static void sub_813DE70(struct Sprite *sprite)
gSprites[sprite->data[6]].data[2] = 1;
sub_813E580(r5, r4);
- r5 = gSprites[sprite->data[7]].pos1.x + gSprites[sprite->data[7]].pos2.x;
- r4 = gSprites[sprite->data[7]].pos1.y + gSprites[sprite->data[7]].pos2.y;
+ r5 = gSprites[sprite->data[7]].x + gSprites[sprite->data[7]].x2;
+ r4 = gSprites[sprite->data[7]].y + gSprites[sprite->data[7]].y2;
DestroySprite(&gSprites[sprite->data[7]]);
sprite->data[7] = sub_813CE88(SPECIES_MUDKIP, r5, r4, 3, 1);
gSprites[sprite->data[7]].callback = sub_813DD58;
@@ -2262,19 +2260,19 @@ static void sub_813E10C(struct Sprite *sprite)
{
case 0:
default:
- if (sprite->pos2.x > -56)
+ if (sprite->x2 > -56)
{
- sprite->pos2.x -= 8;
- sprite->pos2.y += 6;
+ sprite->x2 -= 8;
+ sprite->y2 += 6;
}
else
{
- sprite->data[6] = sprite->pos1.x;
- sprite->data[7] = sprite->pos1.y;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->data[6] = sprite->x;
+ sprite->data[7] = sprite->y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 1;
sprite->data[1] = 0;
}
@@ -2284,40 +2282,40 @@ static void sub_813E10C(struct Sprite *sprite)
{
if (sprite->data[1] & 2)
{
- sprite->pos2.x = -1;
- sprite->pos2.y = 1;
+ sprite->x2 = -1;
+ sprite->y2 = 1;
}
else
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
}
sprite->data[1]++;
break;
case 2:
sprite->invisible = TRUE;
- sprite->pos1.x = sprite->data[6];
- sprite->pos1.y = sprite->data[7];
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x = sprite->data[6];
+ sprite->y = sprite->data[7];
+ sprite->x2 = 0;
+ sprite->y2 = 0;
break;
case 3:
sprite->invisible = FALSE;
sprite->data[1]++;
//fall through
case 4:
- if (sprite->pos2.x > -56)
+ if (sprite->x2 > -56)
{
- sprite->pos2.x -= 4;
- sprite->pos2.y += 3;
+ sprite->x2 -= 4;
+ sprite->y2 += 3;
}
else
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 1;
}
break;
@@ -2330,19 +2328,19 @@ static void sub_813E210(struct Sprite *sprite)
{
case 0:
default:
- if (sprite->pos2.x < 56)
+ if (sprite->x2 < 56)
{
- sprite->pos2.x += 8;
- sprite->pos2.y -= 6;
+ sprite->x2 += 8;
+ sprite->y2 -= 6;
}
else
{
- sprite->data[6] = sprite->pos1.x;
- sprite->data[7] = sprite->pos1.y;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->data[6] = sprite->x;
+ sprite->data[7] = sprite->y;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 1;
sprite->data[1] = 0;
}
@@ -2352,40 +2350,40 @@ static void sub_813E210(struct Sprite *sprite)
{
if (sprite->data[1] & 2)
{
- sprite->pos2.x = 1;
- sprite->pos2.y = -1;
+ sprite->x2 = 1;
+ sprite->y2 = -1;
}
else
{
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
}
sprite->data[1]++;
break;
case 2:
sprite->invisible = TRUE;
- sprite->pos1.x = sprite->data[6];
- sprite->pos1.y = sprite->data[7];
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x = sprite->data[6];
+ sprite->y = sprite->data[7];
+ sprite->x2 = 0;
+ sprite->y2 = 0;
break;
case 3:
sprite->invisible = FALSE;
sprite->data[1]++;
//fall through
case 4:
- if (sprite->pos2.x < 56)
+ if (sprite->x2 < 56)
{
- sprite->pos2.x += 4;
- sprite->pos2.y -= 3;
+ sprite->x2 += 4;
+ sprite->y2 -= 3;
}
else
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[0] = 1;
}
break;
@@ -2409,11 +2407,11 @@ static void sub_813E30C(struct Sprite *sprite)
sprite->data[4] = 36;
//fall through
case 10:
- if (sprite->pos1.x <= 144)
+ if (sprite->x <= 144)
{
- sprite->pos1.x += 4;
- sprite->pos1.y -= 1;
- sprite->pos2.y = -Sin((u8)sprite->data[2], 24);
+ sprite->x += 4;
+ sprite->y -= 1;
+ sprite->y2 = -Sin((u8)sprite->data[2], 24);
sprite->data[2] += 4;
}
sprite->data[3] -= sprite->data[4];
@@ -2430,11 +2428,11 @@ static void sub_813E30C(struct Sprite *sprite)
sprite->data[4] = 36;
//fall through
case 20:
- if (sprite->pos1.x <= 96)
+ if (sprite->x <= 96)
{
- sprite->pos1.x += 3;
- sprite->pos1.y -= 1;
- sprite->pos2.y = -Sin((u8)sprite->data[2], 24);
+ sprite->x += 3;
+ sprite->y -= 1;
+ sprite->y2 = -Sin((u8)sprite->data[2], 24);
sprite->data[2] += 4;
}
sprite->data[3] -= sprite->data[4];
@@ -2465,8 +2463,8 @@ static void sub_813E4B8(struct Sprite *sprite)
}
sprite->data[2] += 2;
r4 = Sin((u8)sprite->data[2], 40);
- sprite->pos2.x = Cos((u8)(sprite->data[0] * 32), r4);
- sprite->pos2.y = Sin((u8)(sprite->data[0] * 32), r4);
+ sprite->x2 = Cos((u8)(sprite->data[0] * 32), r4);
+ sprite->y2 = Sin((u8)(sprite->data[0] * 32), r4);
if (sprite->data[0] == 0)
{
sprite->data[3] -= sprite->data[1];
@@ -2505,12 +2503,12 @@ static void sub_813E5E0(struct Sprite *sprite)
if (sprite->data[7] < 12)
sprite->data[7]++;
sprite->data[6] += 4;
- sprite->pos1.x = sprite->data[4] + gSineTable[(u8)(sprite->data[3] + 64)] * sprite->data[6] / 256;
+ sprite->x = sprite->data[4] + gSineTable[(u8)(sprite->data[3] + 64)] * sprite->data[6] / 256;
//This useless '+ 0' is needed to make the asm match
- sprite->pos1.y = sprite->data[5] + gSineTable[(u8)(sprite->data[3] + 0)] * sprite->data[6] / 256;
- sprite->pos2.y = gSineTable[(u8)(sprite->data[1] + 0)] * sprite->data[7] / 256;
+ sprite->y = sprite->data[5] + gSineTable[(u8)(sprite->data[3] + 0)] * sprite->data[6] / 256;
+ sprite->y2 = gSineTable[(u8)(sprite->data[1] + 0)] * sprite->data[7] / 256;
sprite->data[1] += 16;
- if (sprite->pos1.y > sprite->data[2])
+ if (sprite->y > sprite->data[2])
DestroySprite(sprite);
}
}
@@ -2532,8 +2530,8 @@ static void sub_813E6C0(struct Sprite *sprite)
sprite->invisible = TRUE;
if (gSprites[sprite->data[0]].data[0] == 1 && !(sprite->data[7] & 3))
{
- var1 = sprite->data[1] + gSprites[sprite->data[0]].pos1.x;
- var2 = sprite->data[2] + gSprites[sprite->data[0]].pos1.y;
+ var1 = sprite->data[1] + gSprites[sprite->data[0]].x;
+ var2 = sprite->data[2] + gSprites[sprite->data[0]].y;
for (i = 0; i < 3; i++)
{
u8 r3 = gSprites[sprite->data[0]].subpriority - 1;
@@ -2584,10 +2582,10 @@ static void sub_813E804(struct Sprite *sprite)
if (sprite->data[3] < 40)
sprite->data[3] += 2;
//This useless '+ 0' is needed to make the asm match
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x + gSprites[sprite->data[0]].pos2.x + gSineTable[(u8)(sprite->data[1] + 64)] * sprite->data[3] / 256;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + gSprites[sprite->data[0]].pos2.y + gSineTable[(u8)(sprite->data[1] + 0)] * sprite->data[3] / 512;
+ sprite->x = gSprites[sprite->data[0]].x + gSprites[sprite->data[0]].x2 + gSineTable[(u8)(sprite->data[1] + 64)] * sprite->data[3] / 256;
+ sprite->y = gSprites[sprite->data[0]].y + gSprites[sprite->data[0]].y2 + gSineTable[(u8)(sprite->data[1] + 0)] * sprite->data[3] / 512;
sprite->data[1] += 2;
- sprite->pos2.y = gSineTable[(u8)(sprite->data[2] + 0)] / 32;
+ sprite->y2 = gSineTable[(u8)(sprite->data[2] + 0)] / 32;
sprite->data[2] += 8;
if ((sprite->data[1] & 0xFF) < 128)
sprite->subpriority = gSprites[sprite->data[0]].subpriority - 1;
@@ -2603,7 +2601,7 @@ static void sub_813E930(u8 a)
for (i = 0; i < 8; i++)
{
- spriteId = CreateSprite(&gSpriteTemplate_840B124, gSprites[a].pos1.x, gSprites[a].pos1.y, 0);
+ spriteId = CreateSprite(&gSpriteTemplate_840B124, gSprites[a].x, gSprites[a].y, 0);
if (spriteId != 64)
{
gSprites[spriteId].data[0] = a;
@@ -2626,8 +2624,8 @@ static void sub_813E980(struct Sprite *sprite)
sprite->invisible = gSprites[sprite->data[0]].invisible;
sprite->data[7]++;
sprite->data[6] += 8;
- sprite->pos1.x = sprite->data[4] + gSineTable[(u8)(sprite->data[3] + 64)] * sprite->data[6] / 256;
- sprite->pos1.y = sprite->data[5] + gSineTable[(u8)(sprite->data[3] + 0)] * sprite->data[6] / 256;
+ sprite->x = sprite->data[4] + gSineTable[(u8)(sprite->data[3] + 64)] * sprite->data[6] / 256;
+ sprite->y = sprite->data[5] + gSineTable[(u8)(sprite->data[3] + 0)] * sprite->data[6] / 256;
r0 = sprite->data[6] / 16;
if (r0 > 9)
r0 = 9;
@@ -2657,8 +2655,8 @@ static void sub_813EA60(struct Sprite *sprite)
r6 = (sprite->data[7] & 1);
if (!r6)
{
- r1 = sprite->data[1] + gSprites[sprite->data[0]].pos1.x;
- r2 = sprite->data[2] + gSprites[sprite->data[0]].pos1.y;
+ r1 = sprite->data[1] + gSprites[sprite->data[0]].x;
+ r2 = sprite->data[2] + gSprites[sprite->data[0]].y;
spriteId = CreateSprite(&gSpriteTemplate_840B150, r1, r2, gSprites[sprite->data[0]].subpriority + 1);
if (spriteId != 64)
{
@@ -2706,11 +2704,11 @@ static void sub_813EBBC(struct Sprite *sprite)
sprite->invisible = gSprites[sprite->data[0]].invisible;
sprite->data[7] += 1;
sprite->data[6] += 8;
- sprite->pos1.x = sprite->data[4] + gSineTable[(u8)(sprite->data[3] + 64)] * sprite->data[6] / 256;
- sprite->pos1.y = sprite->data[5] + gSineTable[(u8)(sprite->data[3] + 0)] * sprite->data[6] / 256;
- sprite->pos2.y = gSineTable[(u8)(sprite->data[1] + 0)] / 64;
+ sprite->x = sprite->data[4] + gSineTable[(u8)(sprite->data[3] + 64)] * sprite->data[6] / 256;
+ sprite->y = sprite->data[5] + gSineTable[(u8)(sprite->data[3] + 0)] * sprite->data[6] / 256;
+ sprite->y2 = gSineTable[(u8)(sprite->data[1] + 0)] / 64;
sprite->data[1] += 16;
- if (sprite->pos1.y < sprite->data[2])
+ if (sprite->y < sprite->data[2])
DestroySprite(sprite);
}
}
@@ -2735,8 +2733,8 @@ static void sub_813EC90(struct Sprite *sprite)
r6 = sprite->data[7] & 1;
if (!r6)
{
- r1 = sprite->data[1] + gSprites[sprite->data[0]].pos1.x;
- r2 = sprite->data[2] + gSprites[sprite->data[0]].pos1.y;
+ r1 = sprite->data[1] + gSprites[sprite->data[0]].x;
+ r2 = sprite->data[2] + gSprites[sprite->data[0]].y;
spriteId = CreateSprite(&gSpriteTemplate_840B1B0, r1, r2, gSprites[sprite->data[0]].subpriority + 1);
if (spriteId != 64)
{
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
index 73210c5d9..45f104f83 100644
--- a/src/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -303,7 +303,7 @@ const struct CompressedSpriteSheet gUnknown_08416E34[] = {
EWRAM_DATA u16 gUnknown_02039358 = 0;
EWRAM_DATA s16 gUnknown_0203935A = 0;
-EWRAM_DATA s16 gUnknown_0203935C = 0;
+EWRAM_DATA s16 gIntroCredits_MovingSceneryState = 0;
extern u8 gReservedSpritePaletteCount;
@@ -335,7 +335,7 @@ void load_intro_part2_graphics(u8 a)
sub_8149264();
break;
}
- gUnknown_0203935C = 0;
+ gIntroCredits_MovingSceneryState = 0;
gReservedSpritePaletteCount = 8;
}
@@ -407,7 +407,7 @@ void sub_8148CB0(u8 a)
break;
}
gReservedSpritePaletteCount = 8;
- gUnknown_0203935C = 0;
+ gIntroCredits_MovingSceneryState = 0;
}
void sub_8148E90(u8 a)
@@ -480,7 +480,7 @@ void sub_8148F3C(u8 taskId)
}
}
-void sub_8149020(u8 mode)
+void CycleSceneryPalette(u8 mode)
{
u16 x;
u16 y;
@@ -527,23 +527,23 @@ void sub_8149020(u8 mode)
void sub_814910C(struct Sprite *sprite)
{
- if (gUnknown_0203935C)
+ if (gIntroCredits_MovingSceneryState)
{
DestroySprite(sprite);
}
else
{
- s32 var = ((sprite->pos1.x << 16) | (u16)sprite->data[2]) + (u16)sprite->data[1];
- sprite->pos1.x = var >> 16;
+ s32 var = ((sprite->x << 16) | (u16)sprite->data[2]) + (u16)sprite->data[1];
+ sprite->x = var >> 16;
sprite->data[2] = var;
- if (sprite->pos1.x > 255) sprite->pos1.x = 0xFFE0;
+ if (sprite->x > 255) sprite->x = 0xFFE0;
if (sprite->data[0])
{
- sprite->pos2.y = -(gUnknown_02039358 + gUnknown_0203935A);
+ sprite->y2 = -(gUnknown_02039358 + gUnknown_0203935A);
}
else
{
- sprite->pos2.y = -gUnknown_02039358;
+ sprite->y2 = -gUnknown_02039358;
}
}
}
@@ -590,10 +590,10 @@ void nullsub_82(struct Sprite *sprite)
void sub_81492A0(struct Sprite* sprite)
{
sprite->invisible = gSprites[sprite->data[0]].invisible;
- sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + 8;
- sprite->pos2.x = gSprites[sprite->data[0]].pos2.x;
- sprite->pos2.y = gSprites[sprite->data[0]].pos2.y;
+ sprite->x = gSprites[sprite->data[0]].x;
+ sprite->y = gSprites[sprite->data[0]].y + 8;
+ sprite->x2 = gSprites[sprite->data[0]].x2;
+ sprite->y2 = gSprites[sprite->data[0]].y2;
}
@@ -621,9 +621,9 @@ void nullsub_83(struct Sprite *sprite)
void sub_81493C4(struct Sprite* sprite)
{
sprite->invisible = gSprites[sprite->data[0]].invisible;
- sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
- sprite->pos2.x = gSprites[sprite->data[0]].pos2.x;
- sprite->pos2.y = gSprites[sprite->data[0]].pos2.y;
+ sprite->y = gSprites[sprite->data[0]].y;
+ sprite->x2 = gSprites[sprite->data[0]].x2;
+ sprite->y2 = gSprites[sprite->data[0]].y2;
}
u8 intro_create_latios_sprite(s16 a, s16 b)
diff --git a/src/item.c b/src/item.c
index 8483e6d3f..a7c7e5c40 100644
--- a/src/item.c
+++ b/src/item.c
@@ -30,26 +30,6 @@ struct Item
extern u8 gCurSelectedItemSlotIndex;
extern struct BagPocket gBagPockets[NUM_BAG_POCKETS];
-// These constants are used in gItems
-enum
-{
- POCKET_NONE,
- POCKET_ITEMS,
- POCKET_POKE_BALLS,
- POCKET_TM_HM,
- POCKET_BERRIES,
- POCKET_KEY_ITEMS,
-};
-
-enum
-{
- ITEMS_POCKET,
- BALLS_POCKET,
- TMHM_POCKET,
- BERRIES_POCKET,
- KEYITEMS_POCKET
-};
-
#if ENGLISH
#include "data/item_descriptions_en.h"
#include "data/items_en.h"
@@ -132,7 +112,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
if (ItemId_GetPocket(itemId) == 0)
return FALSE;
pocket = ItemId_GetPocket(itemId) - 1;
- if (pocket != BERRIES_POCKET)
+ if (pocket != POCKET_BERRIES - 1)
slotCapacity = 99;
else
slotCapacity = 999;
@@ -144,7 +124,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
{
if (gBagPockets[pocket].itemSlots[i].quantity + count <= slotCapacity)
return TRUE;
- if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET)
+ if (pocket == POCKET_TM_HM - 1 || pocket == POCKET_BERRIES - 1)
return FALSE;
count -= slotCapacity - gBagPockets[pocket].itemSlots[i].quantity;
if (count == 0)
@@ -186,7 +166,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
pocket = ItemId_GetPocket(itemId) - 1;
//Copy the bag pocket
memcpy(newItems, gBagPockets[pocket].itemSlots, gBagPockets[pocket].capacity * sizeof(struct ItemSlot));
- if (pocket != BERRIES_POCKET)
+ if (pocket != POCKET_BERRIES - 1)
slotCapacity = 99;
else
slotCapacity = 999;
@@ -203,7 +183,7 @@ bool8 AddBagItem(u16 itemId, u16 count)
memcpy(gBagPockets[pocket].itemSlots, newItems, gBagPockets[pocket].capacity * sizeof(struct ItemSlot));
return TRUE;
}
- if (pocket == TMHM_POCKET || pocket == BERRIES_POCKET)
+ if (pocket == POCKET_TM_HM - 1 || pocket == POCKET_BERRIES - 1)
return FALSE;
count -= slotCapacity - newItems[i].quantity;
newItems[i].quantity = slotCapacity;
diff --git a/src/item_menu.c b/src/item_menu.c
index 54ad4518b..b05bf2e49 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -3922,7 +3922,7 @@ static void sub_80A79EC(struct Sprite *sprite)
{
sprite->animBeginning = TRUE;
sprite->animNum = 0;
- sprite->pos1.y -= 4;
+ sprite->y -= 4;
sprite->data[0] = 4;
sprite->data[3] = 1;
sub_80A7AE4(sprite);
@@ -3933,7 +3933,7 @@ static void sub_80A79EC(struct Sprite *sprite)
{
if (sprite->data[1] != 0)
{
- sprite->pos1.y++;
+ sprite->y++;
sprite->data[0]--;
}
sprite->data[1] = (sprite->data[1] + 1) & 1;
@@ -4310,7 +4310,7 @@ u8 CreateBerrySprite(u8 berryId, s16 x, s16 y)
static void SpriteCB_BerrySprite(struct Sprite *sprite)
{
- sprite->pos2.y = -gBattle_BG1_Y;
+ sprite->y2 = -gBattle_BG1_Y;
}
void sub_80A7DD4(void)
diff --git a/src/link.c b/src/link.c
index 73652a194..2c79cdf13 100644
--- a/src/link.c
+++ b/src/link.c
@@ -406,7 +406,7 @@ static void LinkTestProcessKeyInput(void)
if (gMain.newKeys & A_BUTTON)
gShouldAdvanceLinkState = 1;
if (gMain.heldKeys & B_BUTTON)
- InitBlockSend(ewram4000, 0x2004);
+ InitBlockSend(gSharedMem + 0x4000, 0x2004);
if (gMain.newKeys & L_BUTTON)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(2, 0, 0));
if (gMain.newKeys & START_BUTTON)
@@ -414,7 +414,7 @@ static void LinkTestProcessKeyInput(void)
if (gMain.newKeys & R_BUTTON)
Save_WriteData(SAVE_LINK);
if (gMain.newKeys & SELECT_BUTTON)
- sub_800832C();
+ SetCloseLinkCallback();
if (gLinkTestDebugValuesEnabled)
{
u32 vblankCounter1 = gMain.vblankCounter1;
@@ -1145,7 +1145,7 @@ u8 GetDummy2(void)
return sDummy2;
}
-void sub_800832C(void)
+void SetCloseLinkCallback(void)
{
if (!gLinkCallback)
{
diff --git a/src/mail.c b/src/mail.c
index 65c85e39b..c6ca4aaec 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -291,7 +291,7 @@ const u8 Str_8411608[] = DTR("メールをけす", "Delete MAIL");
#endif
// XXX: what is this?
-static u8 *const sSharedMemPtr = gSharedMem;
+static struct Unk2000000 *const sSharedMemPtr = (struct Unk2000000 *)gSharedMem;
static u8 sub_80F8A28(void);
static void sub_80F8D50(void);
@@ -319,65 +319,65 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
#if DEBUG
if (gUnknown_Debug_0300079C != 0)
{
- ewram0_4.varFF = GAME_LANGUAGE;
- ewram0_4.var100 = gSpecialVar_0x8004;
- ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
- ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
- ewram0_4.varFA = gSpecialVar_0x8006;
+ sSharedMemPtr->varFF = GAME_LANGUAGE;
+ sSharedMemPtr->var100 = gSpecialVar_0x8004;
+ sSharedMemPtr->var104 = (MainCallback)EasyChat_GetWordText;
+ sSharedMemPtr->var108 = (MainCallback)ConvertEasyChatWordsToString;
+ sSharedMemPtr->varFA = gSpecialVar_0x8006;
}
else
#endif
{
- ewram0_4.varFF = GAME_LANGUAGE;
- ewram0_4.var100 = 1;
- ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
- ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ sSharedMemPtr->varFF = GAME_LANGUAGE;
+ sSharedMemPtr->var100 = 1;
+ sSharedMemPtr->var104 = (MainCallback)EasyChat_GetWordText;
+ sSharedMemPtr->var108 = (MainCallback)ConvertEasyChatWordsToString;
if (IS_ITEM_MAIL(arg0->itemId))
{
- ewram0_4.varFA = arg0->itemId - 0x79;
+ sSharedMemPtr->varFA = arg0->itemId - 0x79;
}
else
{
- ewram0_4.varFA = 0;
+ sSharedMemPtr->varFA = 0;
arg2 = FALSE;
}
}
- switch (ewram0_4.var100)
+ switch (sSharedMemPtr->var100)
{
case 0:
default:
- ewram0_4.var10C = &gUnknown_083E5730[ewram0_4.varFA];
+ sSharedMemPtr->var10C = &gUnknown_083E5730[sSharedMemPtr->varFA];
break;
case 1:
- ewram0_4.var10C = &gUnknown_083E57A4[ewram0_4.varFA];
+ sSharedMemPtr->var10C = &gUnknown_083E57A4[sSharedMemPtr->varFA];
break;
}
species = MailSpeciesToSpecies(arg0->species, buffer);
if (species >= 1 && species <= 411)
{
- switch (ewram0_4.varFA)
+ switch (sSharedMemPtr->varFA)
{
case 6:
- ewram0_4.varFB = 1;
+ sSharedMemPtr->varFB = 1;
break;
case 9:
- ewram0_4.varFB = 2;
+ sSharedMemPtr->varFB = 2;
break;
default:
- ewram0_4.varFB = 0;
+ sSharedMemPtr->varFB = 0;
break;
}
}
else
{
- ewram0_4.varFB = 0;
+ sSharedMemPtr->varFB = 0;
}
- ewram0_4.varF4 = arg0;
- ewram0_4.varEC = arg1;
- ewram0_4.varF8 = arg2;
+ sSharedMemPtr->varF4 = arg0;
+ sSharedMemPtr->varEC = arg1;
+ sSharedMemPtr->varF8 = arg2;
SetMainCallback2(sub_80F8D50);
}
@@ -447,31 +447,31 @@ static u8 sub_80F8A28(void)
RETURN_UP_STATE;
case 11:
- LoadPalette(gMailGraphicsTable[ewram0_4.varFA].palette, 0, 16 * 2);
+ LoadPalette(gMailGraphicsTable[sSharedMemPtr->varFA].palette, 0, 16 * 2);
RETURN_UP_STATE;
case 12:
- LZ77UnCompVram(gMailGraphicsTable[ewram0_4.varFA].tileMap, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gMailGraphicsTable[sSharedMemPtr->varFA].tileMap, (void *)(VRAM + 0x4000));
RETURN_UP_STATE;
case 13:
- LZ77UnCompVram(gMailGraphicsTable[ewram0_4.varFA].tiles, (void *)(VRAM));
+ LZ77UnCompVram(gMailGraphicsTable[sSharedMemPtr->varFA].tiles, (void *)(VRAM));
- gPlttBufferUnfaded[241] = gMailGraphicsTable[ewram0_4.varFA].color10;
- gPlttBufferUnfaded[248] = gMailGraphicsTable[ewram0_4.varFA].color12;
+ gPlttBufferUnfaded[241] = gMailGraphicsTable[sSharedMemPtr->varFA].color10;
+ gPlttBufferUnfaded[248] = gMailGraphicsTable[sSharedMemPtr->varFA].color12;
gPlttBufferUnfaded[10] = gUnknown_083E562C[gSaveBlock2.playerGender][0];
gPlttBufferUnfaded[11] = gUnknown_083E562C[gSaveBlock2.playerGender][1];
RETURN_UP_STATE;
case 14:
- if (ewram0_4.varF8 != 0)
+ if (sSharedMemPtr->varF8 != 0)
{
sub_80F8DA0();
}
RETURN_UP_STATE;
case 15:
- if (ewram0_4.varF8 != 0)
+ if (sSharedMemPtr->varF8 != 0)
{
sub_80F8E80();
}
@@ -484,18 +484,18 @@ static u8 sub_80F8A28(void)
{
u16 local1;
- local1 = sub_809D4A8(ewram0_4.varF4->species);
+ local1 = sub_809D4A8(sSharedMemPtr->varF4->species);
- switch (ewram0_4.varFB)
+ switch (sSharedMemPtr->varFB)
{
case 1:
sub_809D580(local1);
- ewram0_4.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
+ sSharedMemPtr->varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
break;
case 2:
sub_809D580(local1);
- ewram0_4.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
+ sSharedMemPtr->varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
break;
}
RETURN_UP_STATE;
@@ -516,7 +516,7 @@ static u8 sub_80F8A28(void)
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
gPaletteFade.bufferTransferDisabled = 0;
- ewram0_4.varF0 = sub_80F8F58;
+ sSharedMemPtr->varF0 = sub_80F8F58;
return TRUE;
default:
@@ -558,24 +558,24 @@ static void sub_80F8DA0(void)
u8 *ptr;
r6 = 0;
- for (i = 0; i < ewram0_4.var10C->var0; i++)
+ for (i = 0; i < sSharedMemPtr->var10C->var0; i++)
{
- ConvertEasyChatWordsToString(ewram0_4.words[i], &ewram0_4.varF4->words[r6], ewram0_4.var10C->var4[i].unk_0_2, 1);
- r6 += ewram0_4.var10C->var4[i].unk_0_2;
+ ConvertEasyChatWordsToString(sSharedMemPtr->words[i], &sSharedMemPtr->varF4->words[r6], sSharedMemPtr->var10C->var4[i].unk_0_2, 1);
+ r6 += sSharedMemPtr->var10C->var4[i].unk_0_2;
}
- ptr = ewram0_4.varD8;
- if (ewram0_4.var100 == 0)
+ ptr = sSharedMemPtr->varD8;
+ if (sSharedMemPtr->var100 == 0)
{
- ptr = sub_80F8D7C(ptr, ewram0_4.varF4->playerName);
+ ptr = sub_80F8D7C(ptr, sSharedMemPtr->varF4->playerName);
StringCopy(ptr, gOtherText_From);
- ewram0_4.varF9 = ewram0_4.var10C->var2 - StringLength(ewram0_4.varD8);
+ sSharedMemPtr->varF9 = sSharedMemPtr->var10C->var2 - StringLength(sSharedMemPtr->varD8);
}
else
{
ptr = StringCopy(ptr, gOtherText_From);
- sub_80F8D7C(ptr, ewram0_4.varF4->playerName);
- ewram0_4.varF9 = ewram0_4.var10C->var2;
+ sub_80F8D7C(ptr, sSharedMemPtr->varF4->playerName);
+ sSharedMemPtr->varF9 = sSharedMemPtr->var10C->var2;
}
}
@@ -585,25 +585,25 @@ static void sub_80F8E80(void)
u8 x;
u8 y = 0;
- for (pos = 0; pos < ewram0_4.var10C->var0; pos++)
+ for (pos = 0; pos < sSharedMemPtr->var10C->var0; pos++)
{
- if (ewram0_4.words[pos][0] == 0xFF)
+ if (sSharedMemPtr->words[pos][0] == 0xFF)
{
continue;
}
- if (ewram0_4.words[pos][0] == 0x00)
+ if (sSharedMemPtr->words[pos][0] == 0x00)
{
continue;
}
- x = ewram0_4.var10C->var4[pos].unk_0_4;
- y += ewram0_4.var10C->var4[pos].unk_0_0;
- Menu_PrintText(ewram0_4.words[pos], ewram0_4.var10C->var3_4 + x, ewram0_4.var10C->var3_0 + y);
+ x = sSharedMemPtr->var10C->var4[pos].unk_0_4;
+ y += sSharedMemPtr->var10C->var4[pos].unk_0_0;
+ Menu_PrintText(sSharedMemPtr->words[pos], sSharedMemPtr->var10C->var3_4 + x, sSharedMemPtr->var10C->var3_0 + y);
y += 2;
}
- Menu_PrintText(ewram0_4.varD8, ewram0_4.varF9, ewram0_4.var10C->var1);
+ Menu_PrintText(sSharedMemPtr->varD8, sSharedMemPtr->varF9, sSharedMemPtr->var10C->var1);
}
static void sub_80F8F18(void)
@@ -615,13 +615,13 @@ static void sub_80F8F18(void)
static void sub_80F8F2C(void)
{
- if (ewram0_4.varFB != 0)
+ if (sSharedMemPtr->varFB != 0)
{
AnimateSprites();
BuildOamBuffer();
}
- ewram0_4.varF0();
+ sSharedMemPtr->varF0();
}
static void sub_80F8F58(void)
@@ -631,7 +631,7 @@ static void sub_80F8F58(void)
local0 = UpdatePaletteFade();
if (local0 == 0)
{
- ewram0_4.varF0 = sub_80F8F78;
+ sSharedMemPtr->varF0 = sub_80F8F78;
}
}
@@ -640,7 +640,7 @@ static void sub_80F8F78(void)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- ewram0_4.varF0 = sub_80F8FB4;
+ sSharedMemPtr->varF0 = sub_80F8FB4;
}
}
@@ -648,17 +648,17 @@ static void sub_80F8FB4(void)
{
if (!UpdatePaletteFade())
{
- SetMainCallback2(ewram0_4.varEC);
- switch (ewram0_4.varFB)
+ SetMainCallback2(sSharedMemPtr->varEC);
+ switch (sSharedMemPtr->varFB)
{
case 2:
case 1:
- sub_809D608(sub_809D4A8(ewram0_4.varF4->species));
- sub_809D510(&gSprites[ewram0_4.varFC]);
+ sub_809D608(sub_809D4A8(sSharedMemPtr->varF4->species));
+ sub_809D510(&gSprites[sSharedMemPtr->varFC]);
break;
}
#if !DEBUG
- memset(&ewram0_4, 0, 0x110);
+ memset(sSharedMemPtr, 0, sizeof(struct Unk2000000));
#endif
ResetPaletteFade();
}
diff --git a/src/main_menu.c b/src/main_menu.c
index 3237663a5..7748959ca 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -39,7 +39,7 @@ extern u8 gBirchSpeech_SoItsPlayer[];
extern u8 gBirchSpeech_AhOkayYouArePlayer[];
extern u8 gBirchSpeech_AreYouReady[];
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
//Menu layouts
enum
@@ -780,8 +780,8 @@ static void Task_NewGameSpeech2(u8 taskId)
//Initialize Birch sprite
u8 spriteId = gTasks[taskId].tBirchSpriteId;
- gSprites[spriteId].pos1.x = 136;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 136;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeIn(taskId, 10);
@@ -831,8 +831,8 @@ static void Task_NewGameSpeech6(u8 taskId)
{
u8 spriteId = gTasks[taskId].tAzurillSpriteId;
- gSprites[spriteId].pos1.x = 104;
- gSprites[spriteId].pos1.y = 72;
+ gSprites[spriteId].x = 104;
+ gSprites[spriteId].y = 72;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].data[0] = 0;
CreatePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF);
@@ -928,8 +928,8 @@ static void Task_NewGameSpeech12(u8 taskId)
//Initialize Brendan sprite
u8 spriteId = gTasks[taskId].tBrendanSpriteId;
- gSprites[spriteId].pos1.x = 180;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 180;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
gTasks[taskId].tTrainerSpriteId = spriteId;
@@ -1009,7 +1009,7 @@ static void Task_NewGameSpeech17(u8 taskId)
if (gTasks[taskId].tSubtaskIsDone == FALSE)
{
- gSprites[spriteId].pos1.x += 4; //Move sprite right
+ gSprites[spriteId].x += 4; //Move sprite right
}
else
{
@@ -1020,8 +1020,8 @@ static void Task_NewGameSpeech17(u8 taskId)
spriteId = gTasks[taskId].tMaySpriteId;
else
spriteId = gTasks[taskId].tBrendanSpriteId;
- gSprites[spriteId].pos1.x = 240;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 240;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].tTrainerSpriteId = spriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
@@ -1035,13 +1035,13 @@ static void Task_NewGameSpeech18(u8 taskId)
{
u8 spriteId = gTasks[taskId].tTrainerSpriteId;
- if (gSprites[spriteId].pos1.x > 180)
+ if (gSprites[spriteId].x > 180)
{
- gSprites[spriteId].pos1.x -= 4; //Move sprite left
+ gSprites[spriteId].x -= 4; //Move sprite left
}
else
{
- gSprites[spriteId].pos1.x = 180;
+ gSprites[spriteId].x = 180;
if (gTasks[taskId].tSubtaskIsDone)
{
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
@@ -1175,13 +1175,13 @@ static void Task_NewGameSpeech27(u8 taskId)
//Fade in Birch and Azurill
spriteId = (u8)gTasks[taskId].tBirchSpriteId;
- gSprites[spriteId].pos1.x = 136;
- gSprites[spriteId].pos1.y = 64;
+ gSprites[spriteId].x = 136;
+ gSprites[spriteId].y = 64;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
spriteId = (u8)gTasks[taskId].tAzurillSpriteId;
- gSprites[spriteId].pos1.x = 104;
- gSprites[spriteId].pos1.y = 72;
+ gSprites[spriteId].x = 104;
+ gSprites[spriteId].y = 72;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
@@ -1249,8 +1249,8 @@ static void Task_NewGameSpeech29(u8 taskId)
spriteId = (u8)gTasks[taskId].tMaySpriteId;
else
spriteId = (u8)gTasks[taskId].tBrendanSpriteId;
- gSprites[spriteId].pos1.x = 120;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 120;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
gTasks[taskId].tTrainerSpriteId = spriteId;
@@ -1377,8 +1377,8 @@ void CB_ContinueNewGameSpeechPart2()
spriteId = gTasks[taskId].tBrendanSpriteId;
}
- gSprites[spriteId].pos1.x = 180;
- gSprites[spriteId].pos1.y = 60;
+ gSprites[spriteId].x = 180;
+ gSprites[spriteId].y = 60;
gSprites[spriteId].invisible = FALSE;
gTasks[taskId].tTrainerSpriteId = spriteId;
@@ -1413,8 +1413,8 @@ void nullsub_34(struct Sprite *sprite)
void ShrinkPlayerSprite(struct Sprite *sprite)
{
- u32 y = (sprite->pos1.y << 16) + sprite->data[0] + 0xC000;
- sprite->pos1.y = y >> 16;
+ u32 y = (sprite->y << 16) + sprite->data[0] + 0xC000;
+ sprite->y = y >> 16;
sprite->data[0] = y;
}
@@ -1424,12 +1424,12 @@ u8 CreateAzurillSprite(u8 x, u8 y)
&gMonFrontPicTable[SPECIES_AZURILL],
gMonFrontPicCoords[SPECIES_AZURILL].coords,
gMonFrontPicCoords[SPECIES_AZURILL].y_offset,
- gUnknown_081FAF4C[0],
- gUnknown_081FAF4C[1],
+ gMonSpriteGfx_Sprite_ptr[0],
+ gMonSpriteGfx_Sprite_ptr[1],
SPECIES_AZURILL);
LoadCompressedObjectPalette(&gMonPaletteTable[SPECIES_AZURILL]);
GetMonSpriteTemplate_803C56C(SPECIES_AZURILL, 1);
- return CreateSprite(&gUnknown_02024E8C, x, y, 0);
+ return CreateSprite(&gCreatingSpriteTemplate, x, y, 0);
}
void AddBirchSpeechObjects(u8 taskId)
@@ -1449,14 +1449,14 @@ void AddBirchSpeechObjects(u8 taskId)
gTasks[taskId].tAzurillSpriteId = spriteId;
//Create Brendan sprite
- spriteId = CreateTrainerSprite(0, 120, 60, 0, eBrendanSprite);
+ spriteId = CreateTrainerSprite(0, 120, 60, 0, &gSharedMem[0x000]);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].oam.priority = 0;
gTasks[taskId].tBrendanSpriteId = spriteId;
//Create May sprite
- spriteId = CreateTrainerSprite(1, 120, 60, 0, eMaySprite);
+ spriteId = CreateTrainerSprite(1, 120, 60, 0, &gSharedMem[0x800]);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].oam.priority = 0;
diff --git a/src/mauville_man.c b/src/mauville_man.c
index a71ce5fe8..acd6af5bc 100644
--- a/src/mauville_man.c
+++ b/src/mauville_man.c
@@ -690,7 +690,7 @@ static void Task_BardSong(u8 taskId)
case 0: // Initialize song
PrepareSongText();
Text_InitWindowWithTemplate(gMenuWindowPtr, &gMenuTextWindowTemplate);
- Text_InitWindow8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15);
+ Contest_StartTextPrinter(gMenuWindowPtr, gStringVar4, 2, 4, 15);
task->data[1] = 0;
task->data[2] = 0;
task->tCharIndex = 0;
diff --git a/src/menu.c b/src/menu.c
index 5bb5f96d1..2b454417a 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -204,12 +204,12 @@ void Menu_DisplayDialogueFrame(void)
void MenuPrintMessage(const u8 *str, u8 left, u8 top)
{
- Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
+ Contest_StartTextPrinter(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
void MenuPrintMessageDefaultCoords(const u8 *str)
{
- Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15);
+ Contest_StartTextPrinter(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15);
}
void Menu_SetText(const u8 *str)
@@ -733,12 +733,12 @@ void MenuPrint_RightAligned(const u8 *str, u8 right, u8 top)
Text_InitWindow_RightAligned(gMenuWindowPtr, str, gMenuTextTileOffset, right, top);
}
-void sub_8072B80(const u8 *src, u8 a2, u8 a3, const u8 *text)
+void MenuPrint_AlignedToRightOfReferenceString(const u8 *src, u8 left, u8 top, const u8 *widthRefStr)
{
u8 buffer[64];
- u8 width = GetStringWidth(gMenuWindowPtr, text);
+ u8 width = GetStringWidth(gMenuWindowPtr, widthRefStr);
AlignString(gMenuWindowPtr, buffer, src, width, 1);
- Text_InitWindowAndPrintText(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3);
+ Text_InitWindowAndPrintText(gMenuWindowPtr, buffer, gMenuTextTileOffset, left, top);
}
void MenuPrint_Centered(const u8 *text, u8 left, u8 top, u16 width)
diff --git a/src/menu_cursor.c b/src/menu_cursor.c
index 254723f17..287c03a55 100644
--- a/src/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -139,8 +139,8 @@ void MenuCursor_SetPos814A880(u8 a1, u8 a2)
spr->invisible = FALSE;
spr->centerToCornerVecX = 0;
spr->centerToCornerVecY = 0;
- spr->pos1.x = a1;
- spr->pos1.y = a2;
+ spr->x = a1;
+ spr->y = a2;
}
if (gUnknown_0203A3D1 != 0x40)
@@ -149,8 +149,8 @@ void MenuCursor_SetPos814A880(u8 a1, u8 a2)
spr->invisible = FALSE;
spr->centerToCornerVecX = 0;
spr->centerToCornerVecY = 0;
- spr->pos1.x = a1;
- spr->pos1.y = a2;
+ spr->x = a1;
+ spr->y = a2;
}
return;
@@ -747,8 +747,8 @@ void MenuCursor_SetPos814AD7C(u8 a1, u8 a2)
spr->invisible = FALSE;
spr->centerToCornerVecX = 0;
spr->centerToCornerVecY = 0;
- spr->pos1.x = a1;
- spr->pos1.y = a2;
+ spr->x = a1;
+ spr->y = a2;
}
return;
}
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 388d98ec7..87245fe81 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -391,7 +391,7 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y)
gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[2] = -1;
if (gVerticalScrollIndicatorIds[BOTTOM_ARROW] != 0xFF)
{
- gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].pos2.y = gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].pos2.y * -1;
+ gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].y2 = gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].y2 * -1;
gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3] = gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3];
}
else
@@ -408,7 +408,7 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y)
gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[2] = 1;
if (gVerticalScrollIndicatorIds[TOP_ARROW] != 0xFF)
{
- gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].pos2.y = gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].pos2.y * -1;
+ gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].y2 = gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].y2 * -1;
gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3] = gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3];
}
else
@@ -425,7 +425,7 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y)
gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[0] = -1;
if (gVerticalScrollIndicatorIds[RIGHT_ARROW] != 0xFF)
{
- gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].pos2.x = gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].pos2.x * -1;
+ gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].x2 = gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].x2 * -1;
gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1] = gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1];
}
else
@@ -442,7 +442,7 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y)
gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[0] = 1;
if (gVerticalScrollIndicatorIds[LEFT_ARROW] != 0xFF)
{
- gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].pos2.x = gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].pos2.x * -1;
+ gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].x2 = gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].x2 * -1;
gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1] = gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1];
}
else
@@ -487,11 +487,11 @@ static void sub_80F9834(struct Sprite *sprite)
{
if (sprite->data[1] == 0)
{
- sprite->pos2.x += sprite->data[0];
+ sprite->x2 += sprite->data[0];
}
if (sprite->data[3] == 0)
{
- sprite->pos2.y += sprite->data[2];
+ sprite->y2 += sprite->data[2];
}
sprite->data[1]++;
sprite->data[3]++;
@@ -503,13 +503,13 @@ static void sub_80F9834(struct Sprite *sprite)
{
sprite->data[3] = 0;
}
- if (sprite->pos2.x == 8 || sprite->pos2.x == -8)
+ if (sprite->x2 == 8 || sprite->x2 == -8)
{
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
}
- if (sprite->pos2.y == 8 || sprite->pos2.y == -8)
+ if (sprite->y2 == 8 || sprite->y2 == -8)
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
}
}
@@ -533,8 +533,8 @@ static void ResetVerticalScrollIndicators(u8 id)
{
if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4)
{
- gSprites[gVerticalScrollIndicatorIds[id]].pos2.x = 0;
- gSprites[gVerticalScrollIndicatorIds[id]].pos2.y = 0;
+ gSprites[gVerticalScrollIndicatorIds[id]].x2 = 0;
+ gSprites[gVerticalScrollIndicatorIds[id]].y2 = 0;
gSprites[gVerticalScrollIndicatorIds[id]].data[1] = 0;
gSprites[gVerticalScrollIndicatorIds[id]].data[3] = 0;
}
diff --git a/src/mon_markings.c b/src/mon_markings.c
index dcdc54434..7b4055421 100644
--- a/src/mon_markings.c
+++ b/src/mon_markings.c
@@ -505,7 +505,7 @@ void sub_80F761C(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
}
}
- sMenu->menuWindowSprites[1]->pos1.y = y + 96;
+ sMenu->menuWindowSprites[1]->y = y + 96;
sprTemplate.tileTag++;
sprTemplate.paletteTag++;
@@ -538,8 +538,8 @@ void sub_80F761C(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
sMenu->menuTextSprite->oam.shape = ST_OAM_H_RECTANGLE;
sMenu->menuTextSprite->oam.size = 3;
StartSpriteAnim(sMenu->menuTextSprite, 9);
- sMenu->menuTextSprite->pos1.x = x + MENU_TEXT_SPRITE_X_OFFSET;
- sMenu->menuTextSprite->pos1.y = y + 80;
+ sMenu->menuTextSprite->x = x + MENU_TEXT_SPRITE_X_OFFSET;
+ sMenu->menuTextSprite->y = y + 80;
CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0);
}
else
@@ -567,7 +567,7 @@ void sub_80F78CC(struct Sprite *sprite)
void sub_80F7908(struct Sprite *sprite)
{
- sprite->pos1.y = 16 * sMenu->cursorPos + sMenu->cursorBaseY;
+ sprite->y = 16 * sMenu->cursorPos + sMenu->cursorBaseY;
}
struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, const u16 *palette)
diff --git a/src/move_tutor_menu.c b/src/move_tutor_menu.c
index e17a1d3ea..50dcb4f5e 100644
--- a/src/move_tutor_menu.c
+++ b/src/move_tutor_menu.c
@@ -364,7 +364,7 @@ static void MoveTutorMain(void)
DrawLearnMoveMenuWindow();
DrawBattleMoveInfoHeaders(FALSE);
DrawMoveSelectionWindow();
- gSprites[1].pos1.x = 0x48;
+ gSprites[1].x = 0x48;
sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
@@ -381,7 +381,7 @@ static void MoveTutorMain(void)
DrawMoveSelectionWindow();
sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
sMoveTutorMenu->state++;
- gSprites[1].pos1.x = 0x48;
+ gSprites[1].x = 0x48;
break;
case 4:
if (!ChangeToContestMoveInfoWindow())
@@ -391,7 +391,7 @@ static void MoveTutorMain(void)
DrawContestMoveInfoHeaders(FALSE);
DrawMoveSelectionWindow();
sMoveTutorMenu->redrawMoveInfoWindow = TRUE;
- gSprites[1].pos1.x = 0x48;
+ gSprites[1].x = 0x48;
sMoveTutorMenu->state++;
break;
case 6:
@@ -567,7 +567,7 @@ static void MoveTutorMain(void)
DrawBattleMoveInfoHeaders(TRUE);
if (sMoveTutorMenu->showContestInfo == TRUE)
{
- gSprites[1].pos1.x = 0x48;
+ gSprites[1].x = 0x48;
DrawContestMoveInfoHeaders(TRUE);
}
DrawMoveInfoWindow(sMoveTutorMenu->showContestInfo, 1);
@@ -754,10 +754,10 @@ static void UpdateMoveTutorMenuCursorPosition(struct Sprite *sprite)
case 0:
break;
case 1:
- sprite->pos2.x = Sin(var, 3) * sprite->data[2];
+ sprite->x2 = Sin(var, 3) * sprite->data[2];
break;
case 2:
- sprite->pos2.y = Sin(var, 1) * sprite->data[2];
+ sprite->y2 = Sin(var, 1) * sprite->data[2];
break;
}
sprite->data[1]++;
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index b39804b79..987249f50 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -156,7 +156,7 @@ static void CB2_MysteryEventMenu(void)
if (GetLinkPlayerDataExchangeStatusTimed() == 3)
{
- sub_800832C();
+ SetCloseLinkCallback();
Menu_EraseWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
MenuPrintMessageDefaultCoords(gStringVar4);
@@ -220,7 +220,7 @@ static void CB2_MysteryEventMenu(void)
if (GetLinkPlayerDataExchangeStatusTimed() == 3)
{
- sub_800832C();
+ SetCloseLinkCallback();
Menu_EraseWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
MenuPrintMessageDefaultCoords(gStringVar4);
@@ -282,7 +282,7 @@ static void CB2_MysteryEventMenu(void)
gMain.state++;
break;
case 10:
- sub_800832C();
+ SetCloseLinkCallback();
gMain.state++;
break;
case 11:
@@ -461,7 +461,7 @@ void debug_sub_815D1D8(void)
gMain.state++;
break;
case 8:
- sub_800832C();
+ SetCloseLinkCallback();
gMain.state++;
break;
case 9:
diff --git a/src/naming_screen.c b/src/naming_screen.c
index eb0d5fd22..a1297d3ad 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -1015,8 +1015,8 @@ static void SetCursorPos(s16 x, s16 y)
{
struct Sprite *cursorSprite = &gSprites[namingScreenDataPtr->cursorSpriteId];
- cursorSprite->pos1.x = CursorColToKeyboardCol(x) * 8 + 27;
- cursorSprite->pos1.y = y * 16 + 80;
+ cursorSprite->x = CursorColToKeyboardCol(x) * 8 + 27;
+ cursorSprite->y = y * 16 + 80;
cursorSprite->data[2] = cursorSprite->data[0];
cursorSprite->data[3] = cursorSprite->data[1];
cursorSprite->data[0] = x;
@@ -1170,11 +1170,11 @@ static u8 sub_80B6B9C(struct Sprite *sprite)
struct Sprite *r4 = &gSprites[sprite->data[6]];
struct Sprite *r5 = &gSprites[sprite->data[7]];
- r4->pos2.y++;
- if (r4->pos2.y > 7)
+ r4->y2++;
+ if (r4->y2 > 7)
{
sprite->data[0]++;
- r4->pos2.y = -4;
+ r4->y2 = -4;
r4->invisible = TRUE;
sub_80B6C48(((u8)sprite->data[1] + 1) % 3, r4, r5);
}
@@ -1186,10 +1186,10 @@ static u8 sub_80B6C08(struct Sprite *sprite)
struct Sprite *r2 = &gSprites[sprite->data[6]];
r2->invisible = FALSE;
- r2->pos2.y++;
- if (r2->pos2.y >= 0)
+ r2->y2++;
+ if (r2->y2 >= 0)
{
- r2->pos2.y = 0;
+ r2->y2 = 0;
sprite->data[0] = 1;
}
return 0;
@@ -1245,7 +1245,7 @@ void sub_80B6D9C(struct Sprite *sprite)
sprite->data[0] = 8;
sprite->data[1] = (sprite->data[1] + 1) & 3;
}
- sprite->pos2.x = arr[sprite->data[1]];
+ sprite->x2 = arr[sprite->data[1]];
}
void sub_80B6DE8(struct Sprite *sprite)
@@ -1256,13 +1256,13 @@ void sub_80B6DE8(struct Sprite *sprite)
var = GetTextCaretPosition();
if (var != (u8)sprite->data[0])
{
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
sprite->data[1] = 0;
sprite->data[2] = 0;
}
else
{
- sprite->pos2.y = arr[sprite->data[1]];
+ sprite->y2 = arr[sprite->data[1]];
sprite->data[2]++;
if (sprite->data[2] > 8)
{
diff --git a/src/new_game.c b/src/new_game.c
index 63a13be5e..dede514bb 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -1,11 +1,12 @@
#include "global.h"
-#include "constants/maps.h"
-#include "constants/species.h"
-#include "clock.h"
#include "new_game.h"
#include "battle_records.h"
#include "berry.h"
+#include "clock.h"
+#include "constants/maps.h"
+#include "constants/species.h"
#include "contest.h"
+#include "contest_util.h"
#include "decoration_inventory.h"
#include "dewford_trend.h"
#include "easy_chat.h"
@@ -15,6 +16,7 @@
#include "lottery_corner.h"
#include "mail_data.h"
#include "mauville_man.h"
+#include "overworld.h"
#include "play_time.h"
#include "player_pc.h"
#include "pokeblock.h"
@@ -23,8 +25,6 @@
#include "pokemon_storage_system.h"
#include "random.h"
#include "roamer.h"
-#include "script_pokemon_80C4.h"
-#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "secret_base.h"
@@ -35,7 +35,7 @@ EWRAM_DATA u8 gDifferentSaveFile = 0;
EWRAM_DATA u8 gUnknown_020297ED = 0;
extern u8 gPlayerPartyCount;
-extern u8 gUnknown_03005CE8;
+extern u8 gUnusedPokedexU8;
extern u16 gSaveFileStatus;
extern u8 EventScript_ResetAllMapFlags[];
@@ -91,7 +91,7 @@ void SetDefaultOptions(void)
void ClearPokedexFlags(void)
{
- gUnknown_03005CE8 = 0;
+ gUnusedPokedexU8 = 0;
memset(&gSaveBlock2.pokedex.owned, 0, sizeof(gSaveBlock2.pokedex.owned));
memset(&gSaveBlock2.pokedex.seen, 0, sizeof(gSaveBlock2.pokedex.seen));
}
@@ -152,7 +152,7 @@ void sub_8052E4C(void)
#if DEBUG
gUnknown_020297ED = 0;
#endif
- sub_808C0A0();
+ ResetPokedexScrollPositions();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
ResetBagScrollPositions();
diff --git a/src/overworld.c b/src/overworld.c
index a0e7939f5..83a575eec 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -4,12 +4,17 @@
#include "berry.h"
#include "cable_club.h"
#include "clock.h"
+#include "constants/map_types.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "contest_util.h"
#include "event_data.h"
+#include "event_object_movement.h"
#include "field_camera.h"
#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
@@ -22,8 +27,8 @@
#include "heal_location.h"
#include "link.h"
#include "load_save.h"
-#include "main.h"
#include "m4a.h"
+#include "main.h"
#include "map_name_popup.h"
#include "menu.h"
#include "metatile_behavior.h"
@@ -34,8 +39,8 @@
#include "roamer.h"
#include "rotating_gate.h"
#include "safari_zone.h"
+#include "scanline_effect.h"
#include "script.h"
-#include "script_pokemon_80C4.h"
#include "secret_base.h"
#include "sound.h"
#include "start_menu.h"
@@ -43,12 +48,7 @@
#include "tileset_anim.h"
#include "time_events.h"
#include "tv.h"
-#include "scanline_effect.h"
#include "wild_encounter.h"
-#include "constants/map_types.h"
-#include "constants/maps.h"
-#include "constants/songs.h"
-#include "constants/species.h"
#ifdef SAPPHIRE
#define LEGENDARY_MUSIC MUS_WEATHER_KYOGRE // Heavy Rain
@@ -2745,8 +2745,8 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite)
{
struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[sprite->data[0]];
struct ObjectEvent *objEvent = &gObjectEvents[linkPlayerObjEvent->objEventId];
- sprite->pos1.x = objEvent->initialCoords.x;
- sprite->pos1.y = objEvent->initialCoords.y;
+ sprite->x = objEvent->initialCoords.x;
+ sprite->y = objEvent->initialCoords.y;
SetObjectSubpriorityByZCoord(objEvent->previousElevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation);
if (!linkPlayerObjEvent->mode)
diff --git a/src/party_menu.c b/src/party_menu.c
index b5b00c947..c326073ae 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -1,9 +1,11 @@
#include "global.h"
#include "constants/items.h"
+#include "constants/item_effects.h"
#include "constants/moves.h"
#include "constants/songs.h"
#include "constants/species.h"
#include "party_menu.h"
+#include "player_pc.h"
#include "battle.h"
#include "battle_interface.h"
#include "battle_party_menu.h"
@@ -72,7 +74,7 @@ static void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon);
static void sub_806D05C(u8 taskId);
static void sub_806D15C(u8 taskId);
static void sub_806D198(u8 taskId);
-static void sub_806E884(u8 taskId);
+static void Task_PartyMenuPrintRun(u8 taskId);
static void sub_8070D90(u8 taskId);
static void sub_806D5B8(u8 taskId);
static void sub_806D014(u8 taskId);
@@ -108,7 +110,7 @@ extern u16 Random();
EWRAM_DATA u8 gUnknown_0202E8F4 = 0;
EWRAM_DATA u8 gUnknown_0202E8F5 = 0;
-EWRAM_DATA u8 gUnknown_0202E8F6 = 0;
+EWRAM_DATA u8 gPartyMenuMessage_IsPrinting = 0;
EWRAM_DATA u16 gUnknown_0202E8F8 = 0;
EWRAM_DATA u8 gPartyMenuType = 0;
@@ -175,8 +177,8 @@ const u16 TMHMMoves[] =
};
//FIXME
-//const u8 *unrefTileBuffer = gTileBuffer;
-asm(".4byte gTileBuffer\n");
+
+u8 *const gTileBufferPtr = gTileBuffer;
static const u8 MenuGfx_HoldIcons[] = INCBIN_U8("graphics/interface/hold_icons.4bpp");
static const u16 MenuPal_HoldIcons[] = INCBIN_U16("graphics/interface/hold_icons.gbapal");
@@ -450,28 +452,7 @@ static const struct PartyMenuHandlersStruct PartyMenuHandlers[] =
{HandleMoveTutorPartyMenu, SetupMoveTutorPartyMenu, 0}, // PARTY_MENU_TYPE_MOVE_TUTOR
};
-struct Unk201C000
-{
- /*0x00*/ struct Pokemon *pokemon;
- /*0x04*/ u8 unk4;
- /*0x05*/ u8 primarySelectedMonIndex;
- /*0x06*/ u16 secondarySelectedIndex;
- /*0x08*/ u16 unk8;
- /*0x0A*/ u8 pad_0A[2];
- /*0x0C*/ s32 unkC;
- /*0x10*/ TaskFunc unk10;
- /*0x14*/ TaskFunc unk14;
-};
-
-struct Unk201FE00
-{
- u8 unkE00; // not sure if this is an array or struct, or how big it is
- u8 unkE01;
- u8 unkE02;
-};
-
extern u16 gBattleTypeFlags;
-extern u8 gTileBuffer[];
extern u8 gLastFieldPokeMenuOpened;
extern u8 gPlayerPartyCount;
extern s32 gBattleMoveDamage;
@@ -479,8 +460,7 @@ extern u16 gMoveToLearn;
extern u16 gUnknown_08E9A300[];
extern struct Coords8 const gUnknown_08376738[12][6];
-extern u8 gUnknown_02039460[];
-extern struct Window gUnknown_03004210;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern const u8 gPartyMenuMisc_Gfx[];
extern const u8 gPartyMenuMisc_Tilemap[];
@@ -544,9 +524,9 @@ void SetPartyMenuSettings(u8 menuType, u8 battleTypeFlags, TaskFunc menuHandlerF
gBattleTypeFlags = battleTypeFlags;
}
- ewram1B000.menuType = menuType;
- ewram1B000.menuHandler = menuHandlerFunc;
- ewram1B000.promptTextId = textId;
+ ePartyMenu2.menuType = menuType;
+ ePartyMenu2.menuHandler = menuHandlerFunc;
+ ePartyMenu2.promptTextId = textId;
}
void DoOpenPartyMenu(u8 menuType, u8 battleFlags, TaskFunc menuHandlerFunc, u8 textId)
@@ -563,69 +543,70 @@ void OpenPartyMenu(u8 menuType, u8 battleFlags)
// This is a Task which is repeatedly called until it eventually returns TRUE when finished.
bool8 SetupDefaultPartyMenu(void)
{
- switch (ewram1B000_alt.setupState)
+ switch (ePartyMenu2.pmSetupState)
{
case 0:
- if (ewram1B000_alt.monIndex < gPlayerPartyCount)
+ if (ePartyMenu2.pmMonIndex < gPlayerPartyCount)
{
- TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]);
- ewram1B000_alt.monIndex++;
+ TryCreatePartyMenuMonIcon(ePartyMenu2.menuHandlerTaskId,
+ ePartyMenu2.pmMonIndex, &gPlayerParty[ePartyMenu2.pmMonIndex]);
+ ePartyMenu2.pmMonIndex++;
}
else
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
break;
case 1:
LoadHeldItemIconGraphics();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 2:
- CreateHeldItemIcons_806DC34(ewram1B000_alt.menuHandlerTaskId);
- ewram1B000_alt.setupState++;
+ CreateHeldItemIcons_806DC34(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 3:
- if (sub_806BD58(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex) != 1)
+ if (sub_806BD58(ePartyMenu2.menuHandlerTaskId, ePartyMenu2.pmMonIndex) != 1)
{
- ewram1B000_alt.monIndex++;
+ ePartyMenu2.pmMonIndex++;
}
else
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 5:
PrintPartyMenuMonNicknames();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 6:
PartyMenuTryPrintMonsHP();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 7:
nullsub_13();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 8:
PartyMenuDrawHPBars();
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 9:
- if (DrawPartyMonBackground(ewram1B000_alt.monIndex) == 1)
+ if (DrawPartyMonBackground(ePartyMenu2.pmMonIndex) == 1)
{
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.setupState = 0;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState = 0;
return TRUE;
}
else
{
- ewram1B000_alt.monIndex++;
+ ePartyMenu2.pmMonIndex++;
break;
}
}
@@ -651,9 +632,9 @@ bool8 InitPartyMenu(void)
break;
case 2:
sub_806B4A8();
- ewram1B000_alt.setupState = 0;
- ewram1B000_alt.monIndex = 0;
- ewram1B000_alt.unk268 = 0;
+ ePartyMenu2.pmSetupState = 0;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmUnk268 = 0;
gMain.state++;
break;
case 3:
@@ -661,7 +642,8 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 4:
- if (ewram1B000.menuType != PARTY_MENU_TYPE_BATTLE && ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
+ if (ePartyMenu2.menuType != PARTY_MENU_TYPE_BATTLE &&
+ ePartyMenu2.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
ResetTasks();
gMain.state++;
break;
@@ -670,7 +652,7 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 6:
- ewram1B000.menuHandlerTaskId = CreateTask(ewram1B000.menuHandler, 0);
+ ePartyMenu2.menuHandlerTaskId = CreateTask(ePartyMenu2.menuHandler, 0);
gMain.state++;
break;
case 7:
@@ -678,26 +660,26 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 8:
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C90);
- MultistepInitWindowTileData(&gUnknown_03004210, 1);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6C90);
+ MultistepInitWindowTileData(&gWindowTemplate_Contest_MoveDescription, 1);
gMain.state++;
break;
case 9:
if (MultistepLoadFont())
{
- ewram1B000_alt.setupState = 1;
+ ePartyMenu2.pmSetupState = 1;
gMain.state++;
}
break;
case 10:
- if (LoadPartyMenuGraphics(ewram1B000_alt.setupState) == TRUE)
+ if (LoadPartyMenuGraphics(ePartyMenu2.pmSetupState) == TRUE)
{
- ewram1B000_alt.setupState = 0;
+ ePartyMenu2.pmSetupState = 0;
gMain.state++;
}
else
{
- ewram1B000_alt.setupState++;
+ ePartyMenu2.pmSetupState++;
}
break;
case 11:
@@ -705,7 +687,7 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 12:
- if (PartyMenuHandlers[ewram1B000.menuType].menuSetup() == TRUE)
+ if (PartyMenuHandlers[ePartyMenu2.menuType].menuSetup() == TRUE)
gMain.state++;
break;
case 13:
@@ -717,7 +699,7 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 15:
- PrintPartyMenuPromptText(ewram1B000.promptTextId, 0);
+ PrintPartyMenuPromptText(ePartyMenu2.promptTextId, 0);
gMain.state++;
break;
case 16:
@@ -745,8 +727,8 @@ void CB2_InitPartyMenu(void)
return;
}
- if (ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
- ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0);
+ if (ePartyMenu2.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
SetMainCallback2(CB2_PartyMenuMain);
}
@@ -782,12 +764,12 @@ bool8 IsLinkDoubleBattle()
// Draws the blue rectangular regions surrounding each of the party mons.
void ReDrawPartyMonBackgrounds(void)
{
- if (ewram1B000.unk261)
+ if (ePartyMenu2.unk261)
{
DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800);
- if (ewram1B000.unk261 == 2)
- ewram1B000.unk261 = 0;
+ if (ePartyMenu2.unk261 == 2)
+ ePartyMenu2.unk261 = 0;
}
}
@@ -978,116 +960,41 @@ bool8 DrawPartyMonBackground(u8 monIndex)
}
break;
case 7:
- if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER)
+ if (ePartyMenu2.menuType == PARTY_MENU_TYPE_BATTLE_TOWER)
sub_806BB9C(1);
sub_806BBEC(1);
break;
case 8:
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
return TRUE;
}
return FALSE;
}
-// many expressions swapped, hard to follow asm diff
-#ifdef NONMATCHING
void sub_806B908(void)
{
+ const u8 * r4;
+ struct Pokemon * pokemon;
memset(&gBGTilemapBuffers[2], 0, 0x800);
- gPartyMenuType = PARTY_MENU_LAYOUT_MULTI_BATTLE;
- sub_806B9A4(gUnknown_083769C0[12], gUnknown_083769C0[13], 3);
+ gPartyMenuType = 3;
- if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES))
- sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 0, 3);
+ r4 = ({const u8 * r0 = gUnknown_083769A8; r0 + 36;});
+ pokemon = &gPlayerParty[1];
+ sub_806B9A4(r4[0], r4[1], 3);
+
+ if (GetMonData(pokemon, MON_DATA_SPECIES))
+ sub_806BA94(r4[4], r4[5], 0, 3);
else
- sub_806BA94(gUnknown_083769C0[16], gUnknown_083769C0[17], 1, 3);
+ sub_806BA94(r4[4], r4[5], 1, 3);
- if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES))
- sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 0, 3);
+ if (GetMonData(pokemon + 1, MON_DATA_SPECIES))
+ sub_806BA94(r4[6], r4[7], 0, 3);
else
- sub_806BA94(gUnknown_083769C0[18], gUnknown_083769C0[19], 1, 3);
+ sub_806BA94(r4[6], r4[7], 1, 3);
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
}
-#else
-NAKED
-void sub_806B908(void)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r0, _0806B948 @ =gBGTilemapBuffers + 0x1000\n\
- movs r2, 0x80\n\
- lsls r2, 4\n\
- movs r1, 0\n\
- bl memset\n\
- ldr r1, _0806B94C @ =gPartyMenuType\n\
- movs r0, 0x3\n\
- strb r0, [r1]\n\
- ldr r0, _0806B950 @ =gUnknown_083769A8\n\
- adds r4, r0, 0\n\
- adds r4, 0x24\n\
- ldr r5, _0806B954 @ =gPlayerParty + 1 * 0x64\n\
- ldrb r0, [r4]\n\
- ldrb r1, [r4, 0x1]\n\
- movs r2, 0x3\n\
- bl sub_806B9A4\n\
- adds r0, r5, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0806B958\n\
- ldrb r0, [r4, 0x4]\n\
- ldrb r1, [r4, 0x5]\n\
- movs r2, 0\n\
- movs r3, 0x3\n\
- bl sub_806BA94\n\
- b _0806B964\n\
- .align 2, 0\n\
-_0806B948: .4byte gBGTilemapBuffers + 0x1000\n\
-_0806B94C: .4byte gPartyMenuType\n\
-_0806B950: .4byte gUnknown_083769A8\n\
-_0806B954: .4byte gPlayerParty + 1 * 0x64\n\
-_0806B958:\n\
- ldrb r0, [r4, 0x4]\n\
- ldrb r1, [r4, 0x5]\n\
- movs r2, 0x1\n\
- movs r3, 0x3\n\
- bl sub_806BA94\n\
-_0806B964:\n\
- adds r0, r5, 0\n\
- adds r0, 0x64\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0806B980\n\
- ldrb r0, [r4, 0x6]\n\
- ldrb r1, [r4, 0x7]\n\
- movs r2, 0\n\
- movs r3, 0x3\n\
- bl sub_806BA94\n\
- b _0806B98C\n\
-_0806B980:\n\
- ldrb r0, [r4, 0x6]\n\
- ldrb r1, [r4, 0x7]\n\
- movs r2, 0x1\n\
- movs r3, 0x3\n\
- bl sub_806BA94\n\
-_0806B98C:\n\
- ldr r0, _0806B99C @ =gSharedMem + 0x1B000\n\
- ldr r1, _0806B9A0 @ =0x00000261\n\
- adds r0, r1\n\
- movs r1, 0x2\n\
- strb r1, [r0]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806B99C: .4byte gSharedMem + 0x1B000\n\
-_0806B9A0: .4byte 0x00000261\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void sub_806B9A4(s16 a, u16 b, u8 c)
{
@@ -1177,7 +1084,7 @@ void sub_806BB3C(s16 a, u16 b)
if (a + j >= 0)
{
gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
- }
+ }
}
}
}
@@ -1268,7 +1175,7 @@ void sub_806BCE8()
{
DrawMonDescriptorStatus(i, 0x46);
}
- }
+ }
}
u8 sub_806BD58(u8 taskId, u8 b)
@@ -1278,8 +1185,6 @@ u8 sub_806BD58(u8 taskId, u8 b)
return 1;
}
-// non-shifting, some expressions swapped around
-#ifdef NONMATCHING
u16 HandleDefaultPartyMenuInput(u8 taskId)
{
s8 menuDirectionPressed = 0x0;
@@ -1302,6 +1207,7 @@ u16 HandleDefaultPartyMenuInput(u8 taskId)
if (menuDirectionPressed == 0)
{
+ // Check L/R input
u8 var1 = sub_80F92BC();
switch (var1)
{
@@ -1312,130 +1218,23 @@ u16 HandleDefaultPartyMenuInput(u8 taskId)
menuDirectionPressed = 1;
break;
}
-
- if (menuDirectionPressed == 0)
- {
- if ((gMain.newKeys & A_BUTTON) && gSprites[sub_806CA00(taskId)].data[0] == 7)
- {
- // Selected "CANCEL"
- return B_BUTTON;
- }
- else
- {
- return gMain.newKeys & (A_BUTTON | B_BUTTON);
- }
- }
}
- ChangePartyMenuSelection(taskId, menuDirectionPressed);
- return gMain.newAndRepeatedKeys;
+ if (menuDirectionPressed != 0)
+ {
+ ChangePartyMenuSelection(taskId, menuDirectionPressed);
+ return gMain.newAndRepeatedKeys;
+ }
+ else if ((gMain.newKeys & A_BUTTON) && gSprites[sub_806CA00(taskId)].data[0] == 7)
+ {
+ // Selected "CANCEL"
+ return B_BUTTON;
+ }
+ else
+ {
+ return gMain.newKeys & (A_BUTTON | B_BUTTON);
+ }
}
-#else
-NAKED
-u16 HandleDefaultPartyMenuInput(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, _0806BD9C @ =gMain\n\
- ldrh r0, [r0, 0x30]\n\
- cmp r0, 0x20\n\
- beq _0806BDB2\n\
- cmp r0, 0x20\n\
- bgt _0806BDA0\n\
- cmp r0, 0x10\n\
- beq _0806BDB6\n\
- b _0806BDB8\n\
- .align 2, 0\n\
-_0806BD9C: .4byte gMain\n\
-_0806BDA0:\n\
- cmp r0, 0x40\n\
- beq _0806BDAA\n\
- cmp r0, 0x80\n\
- beq _0806BDAE\n\
- b _0806BDB8\n\
-_0806BDAA:\n\
- movs r4, 0xFF\n\
- b _0806BDB8\n\
-_0806BDAE:\n\
- movs r4, 0x1\n\
- b _0806BDB8\n\
-_0806BDB2:\n\
- movs r4, 0xFE\n\
- b _0806BDB8\n\
-_0806BDB6:\n\
- movs r4, 0x2\n\
-_0806BDB8:\n\
- lsls r0, r4, 24\n\
- cmp r0, 0\n\
- bne _0806BDDC\n\
- bl sub_80F92BC\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- beq _0806BDD0\n\
- cmp r0, 0x2\n\
- beq _0806BDD4\n\
- b _0806BDD6\n\
-_0806BDD0:\n\
- movs r4, 0xFF\n\
- b _0806BDD6\n\
-_0806BDD4:\n\
- movs r4, 0x1\n\
-_0806BDD6:\n\
- lsls r0, r4, 24\n\
- cmp r0, 0\n\
- beq _0806BDF0\n\
-_0806BDDC:\n\
- asrs r1, r0, 24\n\
- adds r0, r5, 0\n\
- bl ChangePartyMenuSelection\n\
- ldr r0, _0806BDEC @ =gMain\n\
- ldrh r0, [r0, 0x30]\n\
- b _0806BE2C\n\
- .align 2, 0\n\
-_0806BDEC: .4byte gMain\n\
-_0806BDF0:\n\
- ldr r0, _0806BE1C @ =gMain\n\
- ldrh r1, [r0, 0x2E]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0806BE24\n\
- ldr r4, _0806BE20 @ =gSprites\n\
- adds r0, r5, 0\n\
- bl sub_806CA00\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 4\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r4\n\
- movs r2, 0x2E\n\
- ldrsh r0, [r1, r2]\n\
- cmp r0, 0x7\n\
- bne _0806BE24\n\
- movs r0, 0x2\n\
- b _0806BE2C\n\
- .align 2, 0\n\
-_0806BE1C: .4byte gMain\n\
-_0806BE20: .4byte gSprites\n\
-_0806BE24:\n\
- ldr r0, _0806BE34 @ =gMain\n\
- ldrh r1, [r0, 0x2E]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
-_0806BE2C:\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_0806BE34: .4byte gMain\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
u16 HandleBattleTowerPartyMenuInput(u8 taskId)
{
@@ -1454,7 +1253,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId)
break;
case DPAD_RIGHT:
menuDirectionPressed = 0x2;
- break;
+ break;
}
if (menuDirectionPressed == 0)
@@ -1522,7 +1321,7 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
u8 menuIndex = gSprites[spriteId].data[0];
UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
-
+
isLinkDoubleBattle = IsLinkDoubleBattle();
if (isLinkDoubleBattle == 1)
{
@@ -1542,10 +1341,10 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
if (gSprites[spriteId].data[0] == 7)
sub_806BBEC(2);
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
- gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data[0]].x;
- gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data[0]].y;
+ gSprites[spriteId].x = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data[0]].x;
+ gSprites[spriteId].y = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data[0]].y;
}
else
{
@@ -1566,10 +1365,10 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
else
sub_806BBEC(2);
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
- gSprites[spriteId].pos1.x = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data[0]].x;
- gSprites[spriteId].pos1.y = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data[0]].y;
+ gSprites[spriteId].x = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data[0]].x;
+ gSprites[spriteId].y = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data[0]].y;
}
UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data[0], 1);
@@ -1726,339 +1525,91 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
}
}
-// too many registers allocated, the function takes 0x4c more bytes
-#ifdef NONMATCHING
void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed)
{
- s8 menuMovement;
- u16 var1;
- u8 var2;
-
- menuMovement = directionPressed + 2;
- switch (menuMovement)
+ switch (directionPressed)
{
- case 2: // no movement
- gSprites[spriteId].data[1] = 0;
- break;
- case 3: // moving down
- if (menuIndex == 7) {
- gSprites[spriteId].data[0] = 0;
- } else {
- while (menuIndex != PARTY_SIZE - 1) {
- menuIndex++;
- if (GetMonData(&gPlayerParty[menuIndex], MON_DATA_SPECIES))
- {
- gSprites[spriteId].data[0] = menuIndex;
- gSprites[spriteId].data[1] = 0;
- return;
- }
+ case 0: // no movement
+ gSprites[spriteId].data[1] = 0;
+ break;
+ case 1: // moving down
+ if (menuIndex == 7) {
+ gSprites[spriteId].data[0] = 0;
+ }
+ else
+ {
+ while (1)
+ {
+ if (menuIndex == PARTY_SIZE - 1)
+ {
+ gSprites[spriteId].data[0] = 7;
+ break;
}
-
- gSprites[spriteId].data[0] = 7;
- }
-
- gSprites[spriteId].data[1] = 0;
- break;
- case 1: // moving up
- while (menuIndex != 0) {
- menuIndex--;
- if (menuIndex != PARTY_SIZE && GetMonData(gPlayerParty[menuIndex], MON_DATA_SPECIES))
+ menuIndex++;
+ if (GetMonData(&gPlayerParty[menuIndex], MON_DATA_SPECIES) != SPECIES_NONE)
{
gSprites[spriteId].data[0] = menuIndex;
- gSprites[spriteId].data[1] = 0;
- return;
+ break;
}
}
-
- gSprites[spriteId].data[0] = 7;
- gSprites[spriteId].data[1] = 0;
- break;
- case 4: // moving right
- if (menuIndex == 0) {
- var1 = gSprites[spriteId].data[1] - 2;
- if (var1 > 1) {
- if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) {
- gSprites[spriteId].data[0] = 2;
- } else if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) {
- gSprites[spriteId].data[0] = 3;
- }
- } else {
- gSprites[spriteId].data[0] = 1;
- }
- } else if (menuIndex == 1) {
- var1 = gSprites[spriteId].data[1] - 4;
- if (var1 <= 1) {
- gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
- } else {
- if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) {
- gSprites[spriteId].data[0] = 4;
- } else if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) {
- gSprites[spriteId].data[0] = 5;
- }
+ }
+ gSprites[spriteId].data[1] = 0;
+ break;
+ case -1: // moving up
+ while (1)
+ {
+ if (menuIndex == 0)
+ {
+ gSprites[spriteId].data[0] = 7;
+ break;
+ }
+ menuIndex--;
+ if (menuIndex != PARTY_SIZE && GetMonData(&gPlayerParty[menuIndex], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ gSprites[spriteId].data[0] = menuIndex;
+ break;
+ }
+ }
+
+ gSprites[spriteId].data[1] = 0;
+ break;
+ case 2: // moving right
+ if (menuIndex == 0) {
+ if (gSprites[spriteId].data[1] < 2 || gSprites[spriteId].data[1] > 3) {
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES) != SPECIES_NONE) {
+ gSprites[spriteId].data[0] = 2;
+ } else if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES) != SPECIES_NONE) {
+ gSprites[spriteId].data[0] = 3;
}
+ } else {
+ gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
- break;
- case 0: // moving left
- var2 = menuIndex - 2;
- if (var2 <= 1) {
- gSprites[spriteId].data[0] = 0;
- gSprites[spriteId].data[1] = menuIndex;
+ } else if (menuIndex == 1) {
+ if (gSprites[spriteId].data[1] >= 4 && gSprites[spriteId].data[1] <= 5) {
+ gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
} else {
- var2 = menuIndex - 4;
- if (var2 <= 1) {
- gSprites[spriteId].data[0] = 1;
- gSprites[spriteId].data[1] = menuIndex;
+ if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES) != SPECIES_NONE) {
+ gSprites[spriteId].data[0] = 4;
+ } else if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES) != SPECIES_NONE) {
+ gSprites[spriteId].data[0] = 5;
}
}
-
- break;
+ }
+ break;
+ case -2: // moving left
+ if (menuIndex > 1 && menuIndex < 4) {
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].data[1] = menuIndex;
+ } else {
+ if (menuIndex > 3 && menuIndex < 6) {
+ gSprites[spriteId].data[0] = 1;
+ gSprites[spriteId].data[1] = menuIndex;
+ }
+ }
+ break;
}
}
-#else
-NAKED
-void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r1, 24\n\
- lsrs r4, r1, 24\n\
- lsls r2, 24\n\
- movs r0, 0x80\n\
- lsls r0, 18\n\
- adds r2, r0\n\
- asrs r0, r2, 24\n\
- cmp r0, 0x4\n\
- bls _0806C4AA\n\
- b _0806C64E\n\
-_0806C4AA:\n\
- lsls r0, 2\n\
- ldr r1, _0806C4B4 @ =_0806C4B8\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_0806C4B4: .4byte _0806C4B8\n\
- .align 2, 0\n\
-_0806C4B8:\n\
- .4byte _0806C618\n\
- .4byte _0806C524\n\
- .4byte _0806C4CC\n\
- .4byte _0806C4E0\n\
- .4byte _0806C57C\n\
-_0806C4CC:\n\
- ldr r0, _0806C4DC @ =gSprites\n\
- lsls r1, r5, 4\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- movs r0, 0\n\
- strh r0, [r1, 0x30]\n\
- b _0806C64E\n\
- .align 2, 0\n\
-_0806C4DC: .4byte gSprites\n\
-_0806C4E0:\n\
- cmp r4, 0x7\n\
- bne _0806C4FC\n\
- ldr r2, _0806C4F8 @ =gSprites\n\
- lsls r3, r5, 4\n\
- adds r0, r3, r5\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- movs r1, 0\n\
- strh r1, [r0, 0x2E]\n\
- adds r1, r2, 0\n\
- adds r6, r3, 0\n\
- b _0806C566\n\
- .align 2, 0\n\
-_0806C4F8: .4byte gSprites\n\
-_0806C4FC:\n\
- lsls r6, r5, 4\n\
- b _0806C518\n\
-_0806C500:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- movs r0, 0x64\n\
- muls r0, r4\n\
- ldr r1, _0806C520 @ =gPlayerParty\n\
- adds r0, r1\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0806C528\n\
-_0806C518:\n\
- cmp r4, 0x5\n\
- bne _0806C500\n\
- b _0806C558\n\
- .align 2, 0\n\
-_0806C520: .4byte gPlayerParty\n\
-_0806C524:\n\
- lsls r6, r5, 4\n\
- b _0806C554\n\
-_0806C528:\n\
- ldr r1, _0806C534 @ =gSprites\n\
- adds r0, r6, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- strh r4, [r0, 0x2E]\n\
- b _0806C566\n\
- .align 2, 0\n\
-_0806C534: .4byte gSprites\n\
-_0806C538:\n\
- subs r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x6\n\
- beq _0806C554\n\
- movs r0, 0x64\n\
- muls r0, r4\n\
- ldr r1, _0806C574 @ =gPlayerParty\n\
- adds r0, r1\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0806C528\n\
-_0806C554:\n\
- cmp r4, 0\n\
- bne _0806C538\n\
-_0806C558:\n\
- ldr r0, _0806C578 @ =gSprites\n\
- adds r1, r6, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- movs r2, 0x7\n\
- strh r2, [r1, 0x2E]\n\
- adds r1, r0, 0\n\
-_0806C566:\n\
- adds r0, r6, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strh r1, [r0, 0x30]\n\
- b _0806C64E\n\
- .align 2, 0\n\
-_0806C574: .4byte gPlayerParty\n\
-_0806C578: .4byte gSprites\n\
-_0806C57C:\n\
- cmp r4, 0\n\
- bne _0806C5C8\n\
- ldr r0, _0806C5AC @ =gSprites\n\
- lsls r1, r5, 4\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r4, r1, r0\n\
- ldrh r1, [r4, 0x30]\n\
- subs r0, r1, 0x2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bls _0806C5E2\n\
- ldr r5, _0806C5B0 @ =gPlayerParty + 2 * 0x64\n\
- adds r0, r5, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0806C5B4\n\
- movs r0, 0x2\n\
- strh r0, [r4, 0x2E]\n\
- b _0806C64E\n\
- .align 2, 0\n\
-_0806C5AC: .4byte gSprites\n\
-_0806C5B0: .4byte gPlayerParty + 2 * 0x64\n\
-_0806C5B4:\n\
- adds r0, r5, 0\n\
- adds r0, 0x64\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0806C64E\n\
- movs r0, 0x3\n\
- strh r0, [r4, 0x2E]\n\
- b _0806C64E\n\
-_0806C5C8:\n\
- cmp r4, 0x1\n\
- bne _0806C64E\n\
- ldr r0, _0806C5E8 @ =gSprites\n\
- lsls r1, r5, 4\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r4, r1, r0\n\
- ldrh r1, [r4, 0x30]\n\
- subs r0, r1, 0x4\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0806C5EC\n\
-_0806C5E2:\n\
- strh r1, [r4, 0x2E]\n\
- b _0806C64E\n\
- .align 2, 0\n\
-_0806C5E8: .4byte gSprites\n\
-_0806C5EC:\n\
- ldr r5, _0806C600 @ =gPlayerParty + 4 * 0x64\n\
- adds r0, r5, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0806C604\n\
- movs r0, 0x4\n\
- strh r0, [r4, 0x2E]\n\
- b _0806C64E\n\
- .align 2, 0\n\
-_0806C600: .4byte gPlayerParty + 4 * 0x64\n\
-_0806C604:\n\
- adds r0, r5, 0\n\
- adds r0, 0x64\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0806C64E\n\
- movs r0, 0x5\n\
- strh r0, [r4, 0x2E]\n\
- b _0806C64E\n\
-_0806C618:\n\
- subs r0, r4, 0x2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bhi _0806C634\n\
- ldr r0, _0806C630 @ =gSprites\n\
- lsls r1, r5, 4\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- movs r0, 0\n\
- b _0806C64A\n\
- .align 2, 0\n\
-_0806C630: .4byte gSprites\n\
-_0806C634:\n\
- subs r0, r4, 0x4\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bhi _0806C64E\n\
- ldr r0, _0806C654 @ =gSprites\n\
- lsls r1, r5, 4\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- movs r0, 0x1\n\
-_0806C64A:\n\
- strh r0, [r1, 0x2E]\n\
- strh r4, [r1, 0x30]\n\
-_0806C64E:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806C654: .4byte gSprites\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-
void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
{
u16 newMenuIndex;
@@ -2118,9 +1669,9 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
}
break;
}
-
- gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data[0]].x;
- gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data[0]].y;
+
+ gSprites[spriteId].x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data[0]].x;
+ gSprites[spriteId].y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data[0]].y;
newMenuIndex = gSprites[spriteId].data[0];
@@ -2131,7 +1682,7 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
else
sub_806BBEC(2);
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
newMenuIndex2 = gSprites[spriteId].data[0];
UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1);
@@ -2157,12 +1708,12 @@ void SelectBattleTowerOKButton(u8 taskId)
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].data[0] = 6;
- gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].x;
- gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].y;
+ gSprites[spriteId].x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].x;
+ gSprites[spriteId].y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].y;
sub_806BB9C(2);
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
PlaySE(SE_SELECT);
}
}
@@ -2214,8 +1765,8 @@ void sub_806C9C4(u8 taskId, u8 spriteId)
{
u8 spriteId2 = sub_806CA00(taskId);
- gSprites[spriteId].pos1.x = gSprites[spriteId2].pos1.x;
- gSprites[spriteId].pos1.y = gSprites[spriteId2].pos1.y;
+ gSprites[spriteId].x = gSprites[spriteId2].x;
+ gSprites[spriteId].y = gSprites[spriteId2].y;
gSprites[spriteId].data[0] = gSprites[spriteId2].data[0];
}
@@ -2239,25 +1790,25 @@ u8 sub_806CA38(u8 taskId)
void SetupDefaultPartyMenuSwitchPokemon(u8 taskId)
{
gTasks[taskId].func = TaskDummy;
- ewram01000.unk0 = taskId;
+ ePartyMenu.unk0 = taskId;
CreateTask(HandlePartyMenuSwitchPokemonInput, 0);
- ewram01000.unk1 = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ ePartyMenu.slotId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
- sub_806C9C4(taskId, ewram01000.unk1);
- ewram01000.unk2 = sub_806CA00(taskId);
+ sub_806C9C4(taskId, ePartyMenu.slotId);
+ ePartyMenu.slotId2 = sub_806CA00(taskId);
- PrintPartyMenuPromptText(ewram1B000_alt.unk272, 0);
+ PrintPartyMenuPromptText(ePartyMenu2.pmUnk272, 0);
- sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data[0] * 2], gSprites[ewram01000.unk1].data[0], 6, 0);
- ewram1B000.unk261 = 2;
+ sub_806BF24(&gUnknown_083769A8[gSprites[ePartyMenu.slotId].data[0] * 2], gSprites[ePartyMenu.slotId].data[0], 6, 0);
+ ePartyMenu2.unk261 = 2;
}
// Handles changing the the current mon selection when choosing mons to swap places.
void ChangePartyMenuSwitchPokemonSelection(u8 taskId, s16 menuDirectionPressed)
{
- struct Sprite *sprite1 = &gSprites[ewram01000.unk1];
- struct Sprite *sprite2 = &gSprites[ewram01000.unk2];
+ struct Sprite *sprite1 = &gSprites[ePartyMenu.slotId];
+ struct Sprite *sprite2 = &gSprites[ePartyMenu.slotId2];
ChangePartyMenuSelection(taskId, menuDirectionPressed);
@@ -2272,23 +1823,23 @@ void HandlePartyMenuSwitchPokemonInput(u8 taskId)
switch (gMain.newAndRepeatedKeys)
{
case DPAD_UP:
- ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, -1);
+ ChangePartyMenuSwitchPokemonSelection(ePartyMenu.unk0, -1);
break;
case DPAD_DOWN:
- ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, 1);
+ ChangePartyMenuSwitchPokemonSelection(ePartyMenu.unk0, 1);
break;
case DPAD_LEFT:
- ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, -2);
+ ChangePartyMenuSwitchPokemonSelection(ePartyMenu.unk0, -2);
break;
case DPAD_RIGHT:
- ChangePartyMenuSwitchPokemonSelection(ewram01000.unk0, 2);
+ ChangePartyMenuSwitchPokemonSelection(ePartyMenu.unk0, 2);
break;
}
if (gMain.newKeys & A_BUTTON)
{
PlaySE(5);
- gTasks[taskId].func = ewram01000.unkC;
+ gTasks[taskId].func = ePartyMenu.unkC;
gTasks[taskId].func(taskId);
}
else if (gMain.newKeys == B_BUTTON)
@@ -2300,25 +1851,25 @@ void HandlePartyMenuSwitchPokemonInput(u8 taskId)
void sub_806CC2C(u8 taskId)
{
- DestroySprite(&gSprites[ewram01000.unk1]);
+ DestroySprite(&gSprites[ePartyMenu.slotId]);
PrintPartyMenuPromptText(0, 0);
- ewram1B000.unk261 = 2;
- SwitchTaskToFollowupFunc(ewram01000.unk0);
+ ePartyMenu2.unk261 = 2;
+ SwitchTaskToFollowupFunc(ePartyMenu.unk0);
DestroyTask(taskId);
}
void sub_806CC74(u8 taskId)
{
- sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk2].data[0] * 2], gSprites[ewram01000.unk2].data[0], 3, 1);
- sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data[0] * 2], gSprites[ewram01000.unk1].data[0], 3, 0);
+ sub_806BF24(&gUnknown_083769A8[gSprites[ePartyMenu.slotId2].data[0] * 2], gSprites[ePartyMenu.slotId2].data[0], 3, 1);
+ sub_806BF24(&gUnknown_083769A8[gSprites[ePartyMenu.slotId].data[0] * 2], gSprites[ePartyMenu.slotId].data[0], 3, 0);
sub_806CC2C(taskId);
}
void sub_806CCE4()
{
- u8 monIndex1 = gSprites[ewram01000.unk1].data[0];
- u8 monIndex2 = gSprites[ewram01000.unk2].data[0];
+ u8 monIndex1 = gSprites[ePartyMenu.slotId].data[0];
+ u8 monIndex2 = gSprites[ePartyMenu.slotId2].data[0];
if (monIndex1 <= 5)
sub_806BF24(&gUnknown_083769A8[monIndex1 * 2], monIndex1, 3, 0);
@@ -2334,8 +1885,8 @@ void sub_806CD44(u8 taskId)
void sub_806CD5C(u8 taskId)
{
- u8 monIndex1 = gSprites[ewram01000.unk1].data[0];
- u8 monIndex2 = gSprites[ewram01000.unk2].data[0];
+ u8 monIndex1 = gSprites[ePartyMenu.slotId].data[0];
+ u8 monIndex2 = gSprites[ePartyMenu.slotId2].data[0];
if (monIndex1 == monIndex2 || monIndex1 == 7 || monIndex2 == 7)
{
@@ -2350,48 +1901,48 @@ void sub_806CD5C(u8 taskId)
if (monIndex1 > monIndex2)
{
- ewram01000.unk5 = monIndex2;
- ewram01000.unk6 = monIndex1;
+ ePartyMenu.unk5 = monIndex2;
+ ePartyMenu.unk6 = monIndex1;
}
else
{
- ewram01000.unk5 = monIndex1;
- ewram01000.unk6 = monIndex2;
+ ePartyMenu.unk5 = monIndex1;
+ ePartyMenu.unk6 = monIndex2;
}
- ewram01000.unk3 = GetMonIconSpriteId(ewram01000.unk0, ewram01000.unk5);
- ewram01000.unk4 = GetMonIconSpriteId(ewram01000.unk0, ewram01000.unk6);
+ ePartyMenu.unk3 = GetMonIconSpriteId(ePartyMenu.unk0, ePartyMenu.unk5);
+ ePartyMenu.unk4 = GetMonIconSpriteId(ePartyMenu.unk0, ePartyMenu.unk6);
- var1 = ewram01000.unk5;
+ var1 = ePartyMenu.unk5;
if (!var1)
{
- gSprites[ewram01000.unk3].data[0] = -8;
- gSprites[ewram01000.unk3].data[2] = -0xA8;
- ewram01000.unk8 = var1;
- ewram01000.unkA = 11;
+ gSprites[ePartyMenu.unk3].data[0] = -8;
+ gSprites[ePartyMenu.unk3].data[2] = -0xA8;
+ ePartyMenu.unk8 = var1;
+ ePartyMenu.unkA = 11;
gTasks[taskId].func = sub_806D014;
- ewram1B000.unk261 = 1;
+ ePartyMenu2.unk261 = 1;
}
else
{
- gSprites[ewram01000.unk3].data[0] = 8;
- gSprites[ewram01000.unk3].data[2] = 0xA8;
- ewram01000.unk8 = 11;
- ewram01000.unkA = 11;
+ gSprites[ePartyMenu.unk3].data[0] = 8;
+ gSprites[ePartyMenu.unk3].data[2] = 0xA8;
+ ePartyMenu.unk8 = 11;
+ ePartyMenu.unkA = 11;
gTasks[taskId].func = sub_806D118;
- ewram1B000.unk261 = 1;
+ ePartyMenu2.unk261 = 1;
}
- gSprites[ewram01000.unk3].callback = SpriteCB_sub_806D37C;
+ gSprites[ePartyMenu.unk3].callback = SpriteCB_sub_806D37C;
- gSprites[ewram01000.unk4].data[0] = 8;
- gSprites[ewram01000.unk4].data[2] = 0xA8;
- gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C;
+ gSprites[ePartyMenu.unk4].data[0] = 8;
+ gSprites[ePartyMenu.unk4].data[2] = 0xA8;
+ gSprites[ePartyMenu.unk4].callback = SpriteCB_sub_806D37C;
- gSprites[ewram01000.unk3].callback(&gSprites[ewram01000.unk3]);
- gSprites[ewram01000.unk4].callback(&gSprites[ewram01000.unk4]);
+ gSprites[ePartyMenu.unk3].callback(&gSprites[ePartyMenu.unk3]);
+ gSprites[ePartyMenu.unk4].callback(&gSprites[ePartyMenu.unk4]);
}
}
@@ -2402,126 +1953,44 @@ void SwapValues_s16(s16 *a, s16 *b)
*b = temp;
}
-// not really sure, but creates +4
-#ifdef NONMATCHING
void sub_806CF04(void)
{
- SwapValues_s16(&gSprites[ewram01000.unk3].pos1.x, &gSprites[ewram01000.unk4].pos1.x);
- SwapValues_s16(&gSprites[ewram01000.unk3].pos1.y, &gSprites[ewram01000.unk4].pos1.y);
- SwapValues_s16(&gSprites[ewram01000.unk3].pos2.x, &gSprites[ewram01000.unk4].pos2.x);
- SwapValues_s16(&gSprites[ewram01000.unk3].data[0], &gSprites[ewram01000.unk4].data[0]);
+ SwapValues_s16(&gSprites[ePartyMenu.unk3].x, &gSprites[ePartyMenu.unk4].x);
+ SwapValues_s16(&gSprites[ePartyMenu.unk3].y, &gSprites[ePartyMenu.unk4].y);
+ SwapValues_s16(&gSprites[ePartyMenu.unk3].x2, &gSprites[ePartyMenu.unk4].x2);
+ SwapValues_s16(&gSprites[ePartyMenu.unk3].data[0], &gSprites[ePartyMenu.unk4].data[0]);
- gSprites[ewram01000.unk3].callback = SpriteCB_sub_806D37C;
- gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C;
+ gSprites[ePartyMenu.unk3].callback = SpriteCB_sub_806D37C;
+ gSprites[ePartyMenu.unk4].callback = SpriteCB_sub_806D37C;
}
-#else
-NAKED
-void sub_806CF04(void)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r4, _0806CF94 @ =gSharedMem + 0x1000\n\
- ldrb r1, [r4, 0x3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r5, _0806CF98 @ =gSprites + 0x20\n\
- adds r0, r5\n\
- ldrb r2, [r4, 0x4]\n\
- lsls r1, r2, 4\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r5\n\
- bl SwapValues_s16\n\
- ldrb r1, [r4, 0x3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r3, r5, 0x2\n\
- adds r0, r3\n\
- ldrb r2, [r4, 0x4]\n\
- lsls r1, r2, 4\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r3\n\
- bl SwapValues_s16\n\
- ldrb r1, [r4, 0x3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r3, r5, 0x4\n\
- adds r0, r3\n\
- ldrb r2, [r4, 0x4]\n\
- lsls r1, r2, 4\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r3\n\
- bl SwapValues_s16\n\
- ldrb r1, [r4, 0x3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r3, r5, 0\n\
- adds r3, 0xE\n\
- adds r0, r3\n\
- ldrb r2, [r4, 0x4]\n\
- lsls r1, r2, 4\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r3\n\
- bl SwapValues_s16\n\
- ldrb r1, [r4, 0x3]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- subs r5, 0x4\n\
- adds r0, r5\n\
- ldr r2, _0806CF9C @ =SpriteCB_sub_806D37C\n\
- str r2, [r0]\n\
- ldrb r1, [r4, 0x4]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- str r2, [r0]\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806CF94: .4byte gSharedMem + 0x1000\n\
-_0806CF98: .4byte gSprites + 0x20\n\
-_0806CF9C: .4byte SpriteCB_sub_806D37C\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void sub_806CFA0(u8 taskId, u8 b)
{
- u8 var1 = ((ewram01000.unk6 - 1) * 3) + 1;
+ u8 var1 = ((ePartyMenu.unk6 - 1) * 3) + 1;
- sub_806BA34(ewram01000.unk8, 3);
- sub_806BB3C(ewram01000.unkA, var1);
+ sub_806BA34(ePartyMenu.unk8, 3);
+ sub_806BB3C(ePartyMenu.unkA, var1);
if (!b)
{
- ewram01000.unk8--;
- ewram01000.unkA++;
+ ePartyMenu.unk8--;
+ ePartyMenu.unkA++;
}
else
{
- ewram01000.unk8++;
- ewram01000.unkA--;
+ ePartyMenu.unk8++;
+ ePartyMenu.unkA--;
}
- sub_806B9A4(ewram01000.unk8, 3, 10);
- sub_806BA94(ewram01000.unkA, var1, 0, 10);
+ sub_806B9A4(ePartyMenu.unk8, 3, 10);
+ sub_806BA94(ePartyMenu.unkA, var1, 0, 10);
}
void sub_806D014(u8 taskId)
{
sub_806CFA0(taskId, 0);
- if (ewram01000.unk8 < -13 && ewram01000.unkA > 32)
+ if (ePartyMenu.unk8 < -13 && ePartyMenu.unkA > 32)
{
sub_806CF04();
gTasks[taskId].func = sub_806D05C;
@@ -2532,38 +2001,38 @@ void sub_806D05C(u8 taskId)
{
sub_806CFA0(taskId, 1);
- if (ewram01000.unk8 == 0 && ewram01000.unkA == 11)
+ if (ePartyMenu.unk8 == 0 && ePartyMenu.unkA == 11)
gTasks[taskId].func = sub_806D198;
}
void sub_806D098(u8 a, u8 b)
{
- u8 var1 = ((ewram01000.unk5 - 1) * 3) + 1;
- u8 var2 = ((ewram01000.unk6 - 1) * 3) + 1;
+ u8 var1 = ((ePartyMenu.unk5 - 1) * 3) + 1;
+ u8 var2 = ((ePartyMenu.unk6 - 1) * 3) + 1;
- sub_806BB3C(ewram01000.unk8, var1);
- sub_806BB3C(ewram01000.unkA, var2);
+ sub_806BB3C(ePartyMenu.unk8, var1);
+ sub_806BB3C(ePartyMenu.unkA, var2);
if (!b)
{
- ewram01000.unk8++;
- ewram01000.unkA++;
+ ePartyMenu.unk8++;
+ ePartyMenu.unkA++;
}
else
{
- ewram01000.unk8--;
- ewram01000.unkA--;
+ ePartyMenu.unk8--;
+ ePartyMenu.unkA--;
}
- sub_806BA94(ewram01000.unk8, var1, 0, 10);
- sub_806BA94(ewram01000.unkA, var2, 0, 10);
+ sub_806BA94(ePartyMenu.unk8, var1, 0, 10);
+ sub_806BA94(ePartyMenu.unkA, var2, 0, 10);
}
void sub_806D118(u8 taskId)
{
sub_806D098(taskId, 0);
- if (ewram01000.unk8 > 32 && ewram01000.unkA > 32)
+ if (ePartyMenu.unk8 > 32 && ePartyMenu.unkA > 32)
{
sub_806CF04();
gTasks[taskId].func = sub_806D15C;
@@ -2574,7 +2043,7 @@ void sub_806D15C(u8 taskId)
{
sub_806D098(taskId, 1);
- if (ewram01000.unk8 == 11 && ewram01000.unkA == 11)
+ if (ePartyMenu.unk8 == 11 && ePartyMenu.unkA == 11)
gTasks[taskId].func = sub_806D198;
}
@@ -2582,35 +2051,35 @@ void sub_806D198(u8 taskId)
{
u8 spriteId;
- SetMonIconSpriteId(ewram01000.unk0, ewram01000.unk5, ewram01000.unk4);
- SetMonIconSpriteId(ewram01000.unk0, ewram01000.unk6, ewram01000.unk3);
+ SetMonIconSpriteId(ePartyMenu.unk0, ePartyMenu.unk5, ePartyMenu.unk4);
+ SetMonIconSpriteId(ePartyMenu.unk0, ePartyMenu.unk6, ePartyMenu.unk3);
- gSprites[ewram01000.unk3].pos1.x = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk6].x;
- gSprites[ewram01000.unk3].pos1.y = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk6].y;
- gSprites[ewram01000.unk3].pos2.x = 0;
- gSprites[ewram01000.unk3].pos2.y = 0;
- gSprites[ewram01000.unk3].callback = UpdateMonIconFrame_806DA38;
+ gSprites[ePartyMenu.unk3].x = gUnknown_08376678[IsDoubleBattle()][ePartyMenu.unk6].x;
+ gSprites[ePartyMenu.unk3].y = gUnknown_08376678[IsDoubleBattle()][ePartyMenu.unk6].y;
+ gSprites[ePartyMenu.unk3].x2 = 0;
+ gSprites[ePartyMenu.unk3].y2 = 0;
+ gSprites[ePartyMenu.unk3].callback = UpdateMonIconFrame_806DA38;
- gSprites[ewram01000.unk4].pos1.x = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk5].x;
- gSprites[ewram01000.unk4].pos1.y = gUnknown_08376678[IsDoubleBattle()][ewram01000.unk5].y;
- gSprites[ewram01000.unk4].pos2.x = 0;
- gSprites[ewram01000.unk4].pos2.y = 0;
- gSprites[ewram01000.unk4].callback = UpdateMonIconFrame_806DA38;
+ gSprites[ePartyMenu.unk4].x = gUnknown_08376678[IsDoubleBattle()][ePartyMenu.unk5].x;
+ gSprites[ePartyMenu.unk4].y = gUnknown_08376678[IsDoubleBattle()][ePartyMenu.unk5].y;
+ gSprites[ePartyMenu.unk4].x2 = 0;
+ gSprites[ePartyMenu.unk4].y2 = 0;
+ gSprites[ePartyMenu.unk4].callback = UpdateMonIconFrame_806DA38;
- spriteId = GetMonIconSpriteId(ewram01000.unk0, gSprites[ewram01000.unk2].data[0]);
+ spriteId = GetMonIconSpriteId(ePartyMenu.unk0, gSprites[ePartyMenu.slotId2].data[0]);
gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C;
- SwapPokemon(&gPlayerParty[ewram01000.unk5], &gPlayerParty[ewram01000.unk6]);
+ SwapPokemon(&gPlayerParty[ePartyMenu.unk5], &gPlayerParty[ePartyMenu.unk6]);
- PartyMenuPrintMonLevelOrStatus(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]);
- TryPrintPartyMenuMonNickname(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]);
- PartyMenuTryPrintHP(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]);
- nullsub_12(ewram01000.unk5, &gPlayerParty[ewram01000.unk5]);
+ PartyMenuPrintMonLevelOrStatus(ePartyMenu.unk5, &gPlayerParty[ePartyMenu.unk5]);
+ TryPrintPartyMenuMonNickname(ePartyMenu.unk5, &gPlayerParty[ePartyMenu.unk5]);
+ PartyMenuTryPrintHP(ePartyMenu.unk5, &gPlayerParty[ePartyMenu.unk5]);
+ nullsub_12(ePartyMenu.unk5, &gPlayerParty[ePartyMenu.unk5]);
- PartyMenuPrintMonLevelOrStatus(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]);
- TryPrintPartyMenuMonNickname(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]);
- PartyMenuTryPrintHP(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]);
- nullsub_12(ewram01000.unk6, &gPlayerParty[ewram01000.unk6]);
+ PartyMenuPrintMonLevelOrStatus(ePartyMenu.unk6, &gPlayerParty[ePartyMenu.unk6]);
+ TryPrintPartyMenuMonNickname(ePartyMenu.unk6, &gPlayerParty[ePartyMenu.unk6]);
+ PartyMenuTryPrintHP(ePartyMenu.unk6, &gPlayerParty[ePartyMenu.unk6]);
+ nullsub_12(ePartyMenu.unk6, &gPlayerParty[ePartyMenu.unk6]);
PartyMenuDrawHPBars();
sub_806CC74(taskId);
@@ -2620,7 +2089,7 @@ void SpriteCB_sub_806D37C(struct Sprite *sprite)
{
UpdateMonIconFrame(sprite);
- if (sprite->pos2.x == sprite->data[2])
+ if (sprite->x2 == sprite->data[2])
{
sprite->data[0] *= -1;
sprite->data[2] = 0;
@@ -2628,7 +2097,7 @@ void SpriteCB_sub_806D37C(struct Sprite *sprite)
}
else
{
- sprite->pos2.x += sprite->data[0];
+ sprite->x2 += sprite->data[0];
}
}
@@ -2670,7 +2139,7 @@ void sub_806D4AC(u8 taskId, u16 species, u8 c)
void sub_806D50C(u8 taskId, u8 monIndex)
{
- gSprites[GetMonIconSpriteId(taskId, monIndex)].pos1.x += 0xF0;
+ gSprites[GetMonIconSpriteId(taskId, monIndex)].x += 0xF0;
}
void PrintPartyMenuPromptText(u8 textId, u8 b)
@@ -2697,37 +2166,33 @@ void PrintPartyMenuPromptText(u8 textId, u8 b)
}
}
-void sub_806D5A4(void)
+void PartyMenuEraseMsgBoxAndFrame(void)
{
Menu_EraseWindowRect(0, 16, 29, 19);
}
void sub_806D5B8(u8 monIndex)
{
- u32 var1;
u8 left = gUnknown_08376948[IsDoubleBattle()][monIndex].left;
u8 top = gUnknown_08376948[IsDoubleBattle()][monIndex].top;
u8 right = gUnknown_08376948[IsDoubleBattle()][monIndex].right;
u8 bottom = gUnknown_08376948[IsDoubleBattle()][monIndex].bottom;
- Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom);
+ Text_EraseWindowRect(&gWindowTemplate_Contest_MoveDescription, left, top, right, bottom);
- var1 = 0;
- CpuFastSet(&var1, OBJ_VRAM1 + monIndex * 0x400, 0x1000100);
+ CpuFastFill(0, OBJ_VRAM1 + monIndex * 0x400, 0x400);
}
void sub_806D668(u8 monIndex)
{
- u32 var1;
u8 left = gUnknown_08376978[IsDoubleBattle()][monIndex].left;
u8 top = gUnknown_08376978[IsDoubleBattle()][monIndex].top;
u8 right = gUnknown_08376978[IsDoubleBattle()][monIndex].right;
u8 bottom = gUnknown_08376978[IsDoubleBattle()][monIndex].bottom;
- Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom);
+ Text_EraseWindowRect(&gWindowTemplate_Contest_MoveDescription, left, top, right, bottom);
- var1 = 0;
- CpuFastSet(&var1, OBJ_VRAM1 + 0x300 + monIndex * 0x400, 0x1000040);
+ CpuFastFill(0, OBJ_VRAM1 + 0x300 + monIndex * 0x400, 0x100);
}
bool8 LoadPartyMenuGraphics(u8 a)
@@ -2785,7 +2250,7 @@ void SetMonIconAnimByHP(u8 spriteId, u16 currentHP, u16 maxHP)
animNum = 4;
}
- sub_809D824(&gSprites[spriteId], animNum);
+ SetPartyHPBarSprite(&gSprites[spriteId], animNum);
}
void SetMonIconAnim(u8 spriteId, struct Pokemon *pokemon)
@@ -2804,7 +2269,7 @@ void CreatePartyMenuMonIcon(u8 taskId, u8 monIndex, u8 menuType, struct Pokemon
u16 species2 = GetMonData(pokemon, MON_DATA_SPECIES2);
u32 personality = GetMonData(pokemon, MON_DATA_PERSONALITY);
- u8 spriteId = CreateMonIcon(species2, sub_809D62C, x, y, 5, personality);
+ u8 spriteId = CreateMonIcon(species2, SpriteCB_PokemonIcon, x, y, 5, personality);
SetMonIconSpriteId(taskId, monIndex, spriteId);
SetMonIconAnim(spriteId, pokemon);
}
@@ -2828,12 +2293,12 @@ void unref_sub_806D964(u8 taskId)
TryCreatePartyMenuMonIcon(taskId, i, &gPlayerParty[i]);
}
-void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon)
+void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct MultiBattlePokemonTx *pokemon)
{
u8 x = gUnknown_08376678[menuType][monIndex].x;
u8 y = gUnknown_08376678[menuType][monIndex].y;
- u8 spriteId = CreateMonIcon(pokemon->species, sub_809D62C, x, y, 5, pokemon->personality);
+ u8 spriteId = CreateMonIcon(pokemon->species, SpriteCB_PokemonIcon, x, y, 5, pokemon->personality);
SetMonIconSpriteId(taskId, monIndex, spriteId);
SetMonIconAnimByHP(spriteId, pokemon->hp, pokemon->maxhp);
}
@@ -2845,9 +2310,9 @@ void UpdateMonIconFrame_806DA0C(struct Sprite *sprite)
if (var1)
{
if (var1 & 1)
- sprite->pos2.y = -3;
+ sprite->y2 = -3;
else
- sprite->pos2.y = 1;
+ sprite->y2 = 1;
}
}
@@ -2863,7 +2328,7 @@ void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c)
if (monIndex < PARTY_SIZE)
{
spriteId = GetMonIconSpriteId(taskId, monIndex);
- gSprites[spriteId].pos2.y = 0;
+ gSprites[spriteId].y2 = 0;
gSprites[spriteId].data[0] = 0;
if (!c)
@@ -2890,8 +2355,8 @@ void SpriteCB_HeldItemIcon(struct Sprite *sprite)
else
{
sprite->invisible = FALSE;
- sprite->pos1.x = gSprites[data7].pos1.x + gSprites[data7].pos2.x;
- sprite->pos1.y = gSprites[data7].pos1.y + gSprites[data7].pos2.y;
+ sprite->x = gSprites[data7].x + gSprites[data7].x2;
+ sprite->y = gSprites[data7].y + gSprites[data7].y2;
}
}
@@ -2903,8 +2368,8 @@ void CreateHeldItemIcon(u8 a, u8 b)
subPriority = gSprites[a].subpriority;
spriteId = CreateSprite(&gSpriteTemplate_837660C, 0xFA, 0xAA, subPriority - 1);
- gSprites[spriteId].pos2.x = 4;
- gSprites[spriteId].pos2.y = 10;
+ gSprites[spriteId].x2 = 4;
+ gSprites[spriteId].y2 = 10;
gSprites[spriteId].callback = SpriteCB_HeldItemIcon;
gSprites[spriteId].data[7] = a;
@@ -2951,8 +2416,8 @@ void CreateHeldItemIcons_806DC34(u8 taskId)
monIconSpriteId = GetMonIconSpriteId(taskId, i);
heldItemSpriteId = CreateSprite(&gSpriteTemplate_837660C, 0xFA, 0xAA, 4);
- gSprites[heldItemSpriteId].pos2.x = 4;
- gSprites[heldItemSpriteId].pos2.y = 10;
+ gSprites[heldItemSpriteId].x2 = 4;
+ gSprites[heldItemSpriteId].y2 = 10;
gSprites[heldItemSpriteId].data[7] = monIconSpriteId;
gSprites[monIconSpriteId].data[7] = heldItemSpriteId;
@@ -2962,142 +2427,56 @@ void CreateHeldItemIcons_806DC34(u8 taskId)
}
}
-// too many registers allocated
-#ifdef NONMATCHING
void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
{
u8 monIconSpriteId;
u8 heldItemSpriteId;
+ struct Sprite * r1;
+ struct Sprite * heldItemSprite;
monIconSpriteId = GetMonIconSpriteId(taskId, monIndex);
heldItemSpriteId = CreateSprite(&gSpriteTemplate_837660C, 0xFA, 0xAA, 4);
- gSprites[heldItemSpriteId].pos2.x = 4;
- gSprites[heldItemSpriteId].pos2.y = 10;
- gSprites[heldItemSpriteId].data[7] = monIconSpriteId;
+ r1 = gSprites;
+ heldItemSprite = r1 + heldItemSpriteId;
+ heldItemSprite->x2 = 4;
+ heldItemSprite->y2 = 10;
+ heldItemSprite->data[7] = monIconSpriteId;
gSprites[monIconSpriteId].data[7] = heldItemSpriteId;
- if (!item)
+ if (item == ITEM_NONE)
+ {
+ heldItemSprite->invisible = TRUE;
+ }
+ else if (ItemIsMail(item))
{
- gSprites[heldItemSpriteId].invisible = TRUE;
+ StartSpriteAnim(heldItemSprite, 1);
+ heldItemSprite->invisible = FALSE;
}
else
{
- if (ItemIsMail(item))
- StartSpriteAnim(&gSprites[heldItemSpriteId], 1);
- else
- StartSpriteAnim(&gSprites[heldItemSpriteId], 0);
-
- gSprites[heldItemSpriteId].invisible = FALSE;
+ StartSpriteAnim(heldItemSprite, 0);
+ heldItemSprite->invisible = FALSE;
}
gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]);
}
-#else
-NAKED
-void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r2, 16\n\
- lsrs r7, r2, 16\n\
- bl GetMonIconSpriteId\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r0, _0806DD2C @ =gSpriteTemplate_837660C\n\
- movs r1, 0xFA\n\
- movs r2, 0xAA\n\
- movs r3, 0x4\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r1, _0806DD30 @ =gSprites\n\
- lsls r0, r6, 4\n\
- adds r0, r6\n\
- lsls r0, 2\n\
- adds r5, r0, r1\n\
- movs r0, 0x4\n\
- strh r0, [r5, 0x24]\n\
- movs r0, 0xA\n\
- strh r0, [r5, 0x26]\n\
- strh r4, [r5, 0x3C]\n\
- lsls r0, r4, 4\n\
- adds r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- strh r6, [r0, 0x3C]\n\
- cmp r7, 0\n\
- bne _0806DD34\n\
- adds r0, r5, 0\n\
- adds r0, 0x3E\n\
- ldrb r1, [r0]\n\
- movs r2, 0x4\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
- b _0806DD5C\n\
- .align 2, 0\n\
-_0806DD2C: .4byte gSpriteTemplate_837660C\n\
-_0806DD30: .4byte gSprites\n\
-_0806DD34:\n\
- adds r0, r7, 0\n\
- bl ItemIsMail\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0806DD46\n\
- adds r0, r5, 0\n\
- movs r1, 0x1\n\
- b _0806DD4A\n\
-_0806DD46:\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
-_0806DD4A:\n\
- bl StartSpriteAnim\n\
- adds r2, r5, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
-_0806DD5C:\n\
- ldr r2, _0806DD78 @ =gSprites\n\
- lsls r0, r6, 4\n\
- adds r0, r6\n\
- lsls r0, 2\n\
- adds r1, r2, 0\n\
- adds r1, 0x1C\n\
- adds r1, r0, r1\n\
- adds r0, r2\n\
- ldr r1, [r1]\n\
- bl _call_via_r1\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806DD78: .4byte gSprites\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite)
{
u8 spriteId = sprite->data[7];
- sprite->pos1.x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- sprite->pos1.y = gSprites[spriteId].pos1.y;
+ sprite->x = gSprites[spriteId].x + gSprites[spriteId].x2;
+ sprite->y = gSprites[spriteId].y;
}
+// Soft casting of gTasks[taskId].data to u8* but big-endian.
u8 GetMonIconSpriteId(u8 taskId, u8 monIndex)
{
switch (monIndex)
{
case 1:
- return gTasks[taskId].data[0];
+ return gTasks[taskId].data[0];
break;
case 2:
return gTasks[taskId].data[1] >> 8;
@@ -3126,19 +2505,19 @@ void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId)
gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8);
break;
case 1:
- gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId;
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] & ~0xFF) | spriteId;
break;
case 2:
gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8);
break;
case 3:
- gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId;
+ gTasks[taskId].data[1] = (gTasks[taskId].data[1] & ~0xFF) | spriteId;
break;
case 4:
gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8);
break;
case 5:
- gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId;
+ gTasks[taskId].data[2] = (gTasks[taskId].data[2] & ~0xFF) | spriteId;
break;
}
}
@@ -3155,7 +2534,7 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex)
{
u8 spriteId;
u16 heldItem;
-
+
spriteId = GetMonHeldItemIconSpriteId(taskId, monIndex);
if (!GetMonData(&gPlayerParty[monIndex], MON_DATA_HELD_ITEM))
{
@@ -3187,10 +2566,9 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex)
void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer)
{
- u32 var1 = 0;
- CpuFastSet(&var1, gTileBuffer, 0x1000100);
- Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer);
- CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128);
+ CpuFastFill(0, gTileBufferPtr, 0x400);
+ Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBufferPtr, nameBuffer);
+ CpuFastCopy(gTileBufferPtr, OBJ_VRAM1 + (monIndex * 0x400), 0x200);
}
void PrintPartyMenuMonNickname(u8 monIndex, u8 b, struct Pokemon *pokemon)
@@ -3267,7 +2645,6 @@ static void PartyMenuWriteTilemap(u8 a, u8 x, u8 y)
void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level)
{
u8 *stringVar;
- u32 var1;
u8 x = gUnknown_08376738[menuLayout][monIndex].x;
u8 y = gUnknown_08376738[menuLayout][monIndex].y;
@@ -3280,10 +2657,9 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level)
ConvertIntToDecimalString(&stringVar[3], level);
- var1 = 0;
- CpuFastSet(&var1, gUnknown_02039460, 0x1000020);
- Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
- CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32);
+ CpuFastFill(0, gTileBufferPtr + 0x100, 0x80);
+ Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBufferPtr, gStringVar1);
+ CpuFastCopy(gTileBufferPtr + 0x100, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 0x80);
}
void PartyMenuPrintLevel(u8 monIndex, u8 menuLayout, struct Pokemon *pokemon)
@@ -3353,17 +2729,14 @@ void PartyMenuPrintGenderIcon(u8 monIndex, u8 menuLayout, struct Pokemon *pokemo
void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
{
- u32 *var;
register u8 *stringVar1 asm("r2") = gStringVar1;
register u8 *textPtr asm("r2") = AlignInt1InMenuWindow(stringVar1, currentHP, 15, 1);
textPtr[0] = CHAR_SLASH;
AlignInt1InMenuWindow(++textPtr, maxHP, 35, 1);
- var = 0;
-
- CpuFastSet(&var, gUnknown_02039460, 0x1000040);
- Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
- CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64);
+ CpuFastFill(0, gTileBufferPtr + 0x100, 0x100);
+ Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBufferPtr, gStringVar1);
+ CpuFastCopy(gTileBufferPtr + 0x100, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 0x100);
}
void PartyMenuPrintHP(u8 monIndex, u8 b, struct Pokemon *pokemon)
@@ -3499,26 +2872,26 @@ TaskFunc PartyMenuGetPopupMenuFunc(u8 menuIndex, const struct PartyPopupMenu *me
return menuActions[action].func;
}
-u8 sub_806E834(const u8 *message, u8 arg1)
+u8 DisplayPartyMenuMessage(const u8 *message, u8 noClearAfter)
{
u8 taskId;
- gUnknown_0202E8F6 = 1;
+ gPartyMenuMessage_IsPrinting = 1;
Menu_DrawStdWindowFrame(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
MenuPrintMessage(message, WINDOW_LEFT + 1, 15);
- taskId = CreateTask(sub_806E884, 1);
- gTasks[taskId].data[0] = arg1;
+ taskId = CreateTask(Task_PartyMenuPrintRun, 1);
+ gTasks[taskId].data[0] = noClearAfter;
return taskId;
}
-static void sub_806E884(u8 taskId)
+static void Task_PartyMenuPrintRun(u8 taskId)
{
if (Menu_UpdateWindowText())
{
- gUnknown_0202E8F6 = 0;
+ gPartyMenuMessage_IsPrinting = 0;
if (gTasks[taskId].data[0] == 0)
Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
DestroyTask(taskId);
@@ -3527,11 +2900,11 @@ static void sub_806E884(u8 taskId)
void sub_806E8D0(u8 taskId, u16 b, TaskFunc c)
{
- ewram1C000.unk10 = c;
- ewram1C000.unk4 = taskId;
- ewram1C000.primarySelectedMonIndex = sub_806CA38(taskId);
- ewram1C000.secondarySelectedIndex = b;
- ewram1C000.pokemon = &gPlayerParty[ewram1C000.primarySelectedMonIndex];
+ gPartyMenu.unk10 = c;
+ gPartyMenu.unk4 = taskId;
+ gPartyMenu.primarySelectedMonIndex = sub_806CA38(taskId);
+ gPartyMenu.secondarySelectedIndex = b;
+ gPartyMenu.pokemon = &gPlayerParty[gPartyMenu.primarySelectedMonIndex];
}
bool8 PartyMenuUpdateMonHeldItem(struct Pokemon *pkmn, u16 item)
@@ -3561,22 +2934,22 @@ void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c)
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, newItem, c);
- currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
+ currentItem = GetMonData(gPartyMenu.pokemon, MON_DATA_HELD_ITEM);
gUnknown_0202E8F4 = 0;
gUnknown_0202E8F8 = 0;
if (currentItem != 0)
{
if (ItemIsMail(currentItem) == TRUE)
{
- sub_806E834(gOtherText_MailMustBeRemoved, 1);
+ DisplayPartyMenuMessage(gOtherText_MailMustBeRemoved, 1);
CreateTask(party_menu_link_mon_held_item_object, 5);
}
else
{
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
CopyItemName(currentItem, gStringVar2);
StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyHolding);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
CreateTask(Task_ConfirmGiveHeldItem, 5);
if (ItemIsMail(newItem) == TRUE)
gUnknown_0202E8F8 = currentItem;
@@ -3584,7 +2957,7 @@ void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c)
}
else
{
- PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, newItem);
+ PartyMenuUpdateMonHeldItem(gPartyMenu.pokemon, newItem);
RemoveBagItem(newItem, 1);
if (ItemIsMail(newItem))
{
@@ -3592,7 +2965,7 @@ void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c)
}
else
{
- DisplayGiveHeldItemMessage(ewram1C000.primarySelectedMonIndex, newItem, 1);
+ DisplayGiveHeldItemMessage(gPartyMenu.primarySelectedMonIndex, newItem, 1);
CreateTask(party_menu_link_mon_held_item_object, 5);
}
}
@@ -3600,10 +2973,10 @@ void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c)
void party_menu_link_mon_held_item_object(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
- SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex);
- gTasks[ewram1C000.unk4].func = ewram1C000.unk10;
+ SetHeldItemIconVisibility(gPartyMenu.unk4, gPartyMenu.primarySelectedMonIndex);
+ gTasks[gPartyMenu.unk4].func = gPartyMenu.unk10;
DestroyTask(taskId);
}
}
@@ -3617,26 +2990,26 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId)
u16 currentItem;
Menu_EraseWindowRect(23, 8, 29, 13);
- currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
- RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
+ currentItem = GetMonData(gPartyMenu.pokemon, MON_DATA_HELD_ITEM);
+ RemoveBagItem(gPartyMenu.secondarySelectedIndex, 1);
if (AddBagItem(currentItem, 1) == TRUE)
{
- PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, ewram1C000.secondarySelectedIndex);
- if (ItemIsMail(ewram1C000.secondarySelectedIndex))
+ PartyMenuUpdateMonHeldItem(gPartyMenu.pokemon, gPartyMenu.secondarySelectedIndex);
+ if (ItemIsMail(gPartyMenu.secondarySelectedIndex))
{
- DisplayTakeHeldItemMessage(ewram1C000.primarySelectedMonIndex, currentItem, 1);
+ DisplayTakeHeldItemMessage(gPartyMenu.primarySelectedMonIndex, currentItem, 1);
}
else
{
- CopyItemName(ewram1C000.secondarySelectedIndex, gStringVar1);
+ CopyItemName(gPartyMenu.secondarySelectedIndex, gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_TakenAndReplaced);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
}
}
else
{
- sub_806E834(gOtherText_BagFullCannotRemoveItem, 0);
- AddBagItem(ewram1C000.secondarySelectedIndex, 1);
+ DisplayPartyMenuMessage(gOtherText_BagFullCannotRemoveItem, 0);
+ AddBagItem(gPartyMenu.secondarySelectedIndex, 1);
}
}
else
@@ -3652,7 +3025,7 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId)
void Task_ConfirmGiveHeldItem(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
DisplayYesNoMenu(23, 8, 1);
gTasks[taskId].func = PartyMenuTryGiveMonHeldItem_806EACC;
@@ -3664,7 +3037,7 @@ void DisplayGiveHeldItemMessage(u8 a, u16 b, u8 c)
GetMonNickname(&gPlayerParty[a], gStringVar1);
CopyItemName(b, gStringVar2);
StringExpandPlaceholders(gStringVar4, gOtherText_WasGivenToHold);
- sub_806E834(gStringVar4, c);
+ DisplayPartyMenuMessage(gStringVar4, c);
}
void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func)
@@ -3675,21 +3048,21 @@ void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func)
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, 0, func);
- currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
+ currentItem = GetMonData(gPartyMenu.pokemon, MON_DATA_HELD_ITEM);
gUnknown_0202E8F4 = 0;
- var1 = ewram1FE00.unkE00 + 6;
- mail = &gSaveBlock1.mail[var1 + ewram1FE00.unkE02];
+ var1 = eMailboxInfo.cursorPos + 6;
+ mail = &gSaveBlock1.mail[var1 + eMailboxInfo.itemsAbove];
if (currentItem != 0)
{
- sub_806E834(gOtherText_PokeHoldingItemCantMail, 1);
+ DisplayPartyMenuMessage(gOtherText_PokeHoldingItemCantMail, 1);
CreateTask(party_menu_link_mon_held_item_object, 5);
}
else
{
- GiveMailToMon2(ewram1C000.pokemon, mail);
+ GiveMailToMon2(gPartyMenu.pokemon, mail);
ClearMailStruct(mail);
- sub_806E834(gOtherText_MailTransferredMailbox, 1);
+ DisplayPartyMenuMessage(gOtherText_MailTransferredMailbox, 1);
CreateTask(party_menu_link_mon_held_item_object, 5);
}
}
@@ -3700,11 +3073,11 @@ void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func)
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, 0, func);
- currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
+ currentItem = GetMonData(gPartyMenu.pokemon, MON_DATA_HELD_ITEM);
if (currentItem == 0)
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotHoldingAnything);
- sub_806E834(gStringVar4, 0);
+ DisplayPartyMenuMessage(gStringVar4, 0);
CreateTask(party_menu_link_mon_held_item_object, 5);
}
else
@@ -3716,13 +3089,13 @@ void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func)
if (AddBagItem(currentItem, 1) == TRUE)
{
if (ItemIsMail(currentItem) == TRUE)
- TakeMailFromMon(ewram1C000.pokemon);
- DisplayTakeHeldItemMessage(ewram1C000.primarySelectedMonIndex, currentItem, 0);
- SetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM, itemData);
+ TakeMailFromMon(gPartyMenu.pokemon);
+ DisplayTakeHeldItemMessage(gPartyMenu.primarySelectedMonIndex, currentItem, 0);
+ SetMonData(gPartyMenu.pokemon, MON_DATA_HELD_ITEM, itemData);
}
else
{
- sub_806E834(gOtherText_BagFullCannotRemoveItem, 0);
+ DisplayPartyMenuMessage(gOtherText_BagFullCannotRemoveItem, 0);
}
CreateTask(party_menu_link_mon_held_item_object, 5);
}
@@ -3733,15 +3106,15 @@ void DisplayTakeHeldItemMessage(u8 a, u16 b, u8 c)
GetMonNickname(&gPlayerParty[a], gStringVar1);
CopyItemName(b, gStringVar2);
StringExpandPlaceholders(gStringVar4, gOtherText_ReceivedTheThingFrom);
- sub_806E834(gStringVar4, c);
+ DisplayPartyMenuMessage(gStringVar4, c);
}
void DoTakeMail(u8 taskId, TaskFunc func)
{
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, 0, func);
- ewram1C000.secondarySelectedIndex = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
- sub_806E834(gOtherText_SendRemovedMailPrompt, 1);
+ gPartyMenu.secondarySelectedIndex = GetMonData(gPartyMenu.pokemon, MON_DATA_HELD_ITEM);
+ DisplayPartyMenuMessage(gOtherText_SendRemovedMailPrompt, 1);
CreateTask(Task_ConfirmTakeHeldMail, 5);
}
@@ -3751,14 +3124,14 @@ void Task_LoseMailMessage(u8 taskId)
if (selection == 0)
{
- if (AddBagItem(ewram1C000.secondarySelectedIndex, 1) == TRUE)
+ if (AddBagItem(gPartyMenu.secondarySelectedIndex, 1) == TRUE)
{
- TakeMailFromMon(ewram1C000.pokemon);
- sub_806E834(gOtherText_MailTaken, 0);
+ TakeMailFromMon(gPartyMenu.pokemon);
+ DisplayPartyMenuMessage(gOtherText_MailTaken, 0);
}
else
{
- sub_806E834(gOtherText_BagFullCannotRemoveItem, 0);
+ DisplayPartyMenuMessage(gOtherText_BagFullCannotRemoveItem, 0);
}
Menu_EraseWindowRect(23, 8, 29, 13);
gTasks[taskId].func = party_menu_link_mon_held_item_object;
@@ -3777,7 +3150,7 @@ void Task_LoseMailMessage(u8 taskId)
void Task_ConfirmLoseMailMessage(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
DisplayYesNoMenu(23, 8, 1);
gTasks[taskId].func = Task_LoseMailMessage;
@@ -3791,10 +3164,10 @@ void Task_TakeHeldMail(u8 taskId)
if (selection == 0)
{
Menu_EraseWindowRect(23, 8, 29, 13);
- if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF)
- sub_806E834(gOtherText_MailWasSent, 0);
+ if (TakeMailFromMon2(gPartyMenu.pokemon) != 0xFF)
+ DisplayPartyMenuMessage(gOtherText_MailWasSent, 0);
else
- sub_806E834(gOtherText_MailboxIsFull, 0);
+ DisplayPartyMenuMessage(gOtherText_MailboxIsFull, 0);
gTasks[taskId].func = party_menu_link_mon_held_item_object;
}
else
@@ -3804,14 +3177,14 @@ void Task_TakeHeldMail(u8 taskId)
if (selection == -1)
PlaySE(SE_SELECT);
Menu_EraseWindowRect(23, 8, 29, 13);
- sub_806E834(gOtherText_MailRemovedMessageLost, 1);
+ DisplayPartyMenuMessage(gOtherText_MailRemovedMessageLost, 1);
gTasks[taskId].func = Task_ConfirmLoseMailMessage;
}
}
void Task_ConfirmTakeHeldMail(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
DisplayYesNoMenu(23, 8, 1);
gTasks[taskId].func = Task_TakeHeldMail;
@@ -3850,14 +3223,14 @@ extern u8 gUnknown_020297ED;
void Task_TeamMonTMMove(u8 taskId)
{
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- ewram1C000.unk8 = ItemIdToBattleMoveId(ewram1C000.secondarySelectedIndex);
- StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
- ewram1B000.unk282 = 0;
- if (pokemon_has_move(ewram1C000.pokemon, ewram1C000.unk8))
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
+ gPartyMenu.unk8 = ItemIdToBattleMoveId(gPartyMenu.secondarySelectedIndex);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.unk8]);
+ ePartyMenu2.pmUnk282 = 0;
+ if (pokemon_has_move(gPartyMenu.pokemon, gPartyMenu.unk8))
{
StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyKnows);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = party_menu_link_mon_held_item_object;
}
else
@@ -3866,22 +3239,22 @@ void Task_TeamMonTMMove(u8 taskId)
#if DEBUG
!gUnknown_020297ED &&
#endif
- !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.secondarySelectedIndex - 33))
+ !CanMonLearnTMHM(gPartyMenu.pokemon, gPartyMenu.secondarySelectedIndex - 33))
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = party_menu_link_mon_held_item_object;
}
else
{
- if (GiveMoveToMon(ewram1C000.pokemon, ewram1C000.unk8) != 0xFFFF)
+ if (GiveMoveToMon(gPartyMenu.pokemon, gPartyMenu.unk8) != 0xFFFF)
{
Task_TeamMonTMMove2(taskId);
}
else
{
StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = sub_806F358;
}
}
@@ -3890,18 +3263,18 @@ void Task_TeamMonTMMove(u8 taskId)
void Task_TeamMonTMMove2(u8 taskId)
{
- StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
- AdjustFriendship(ewram1C000.pokemon, FRIENDSHIP_EVENT_LEARN_TMHM);
- if (ewram1B000.unk282 == 0 && ewram1C000.secondarySelectedIndex < ITEM_HM01_CUT)
- RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
+ AdjustFriendship(gPartyMenu.pokemon, FRIENDSHIP_EVENT_LEARN_TMHM);
+ if (ePartyMenu2.pmUnk282 == 0 && gPartyMenu.secondarySelectedIndex < ITEM_HM01_CUT)
+ RemoveBagItem(gPartyMenu.secondarySelectedIndex, 1);
gTasks[taskId].func = Task_TeamMonTMMove3;
}
void Task_TeamMonTMMove3(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
PlayFanfare(MUS_LEVEL_UP);
gTasks[taskId].func = Task_TeamMonTMMove4;
@@ -3914,14 +3287,14 @@ void Task_TeamMonTMMove4(u8 taskId)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
- SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex);
- if (ewram1B000.unk282 == 1)
+ SetHeldItemIconVisibility(gPartyMenu.unk4, gPartyMenu.primarySelectedMonIndex);
+ if (ePartyMenu2.pmUnk282 == 1)
{
TeachMonMoveInPartyMenu(taskId);
}
else
{
- gTasks[ewram1C000.unk4].func = ewram1C000.unk10;
+ gTasks[gPartyMenu.unk4].func = gPartyMenu.unk10;
DestroyTask(taskId);
}
}
@@ -3930,16 +3303,16 @@ void Task_TeamMonTMMove4(u8 taskId)
void sub_806F2FC(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
- SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex);
- if (ewram1B000.unk282 == 1)
+ SetHeldItemIconVisibility(gPartyMenu.unk4, gPartyMenu.primarySelectedMonIndex);
+ if (ePartyMenu2.pmUnk282 == 1)
{
TeachMonMoveInPartyMenu(taskId);
}
else
{
- gTasks[ewram1C000.unk4].func = ewram1C000.unk10;
+ gTasks[gPartyMenu.unk4].func = gPartyMenu.unk10;
DestroyTask(taskId);
}
}
@@ -3947,7 +3320,7 @@ void sub_806F2FC(u8 taskId)
void sub_806F358(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
DisplayYesNoMenu(23, 8, 1);
gTasks[taskId].func = sub_806F390;
@@ -3961,7 +3334,7 @@ void sub_806F390(u8 taskId)
if (selection == 0)
{
Menu_EraseWindowRect(23, 8, 29, 13);
- sub_806E834(gOtherText_WhichMoveToForget2, 1);
+ DisplayPartyMenuMessage(gOtherText_WhichMoveToForget2, 1);
gTasks[taskId].func = sub_806F44C;
}
else
@@ -3978,14 +3351,14 @@ void sub_806F3FC(u8 taskId)
{
if (!gPaletteFade.active)
{
- ShowSelectMovePokemonSummaryScreen(gPlayerParty, ewram1C000.primarySelectedMonIndex, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8);
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gPartyMenu.primarySelectedMonIndex, gPlayerPartyCount - 1, sub_808B564, gPartyMenu.unk8);
DestroyTask(taskId);
}
}
void sub_806F44C(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
gTasks[taskId].func = sub_806F3FC;
@@ -4002,21 +3375,21 @@ void TaughtMove(u8 taskId)
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, gSpecialVar_ItemId, sub_808B508);
moveIndex = sub_809FA30();
- r4 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + moveIndex);
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ r4 = GetMonData(gPartyMenu.pokemon, MON_DATA_MOVE1 + moveIndex);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[r4]);
StringExpandPlaceholders(gStringVar4, gOtherText_ForgetMove123_2);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
CreateTask(TMMoveUpdateMoveSlot, 5);
}
}
void TMMoveUpdateMoveSlot(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
- RemoveMonPPBonus(ewram1C000.pokemon, sub_809FA30());
- SetMonMoveSlot(ewram1C000.pokemon, ewram1C000.unk8, sub_809FA30());
+ RemoveMonPPBonus(gPartyMenu.pokemon, sub_809FA30());
+ SetMonMoveSlot(gPartyMenu.pokemon, gPartyMenu.unk8, sub_809FA30());
Task_TeamMonTMMove2(taskId);
}
}
@@ -4027,9 +3400,9 @@ void StopTryingToTeachMove_806F588(u8 taskId)
{
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, gSpecialVar_ItemId, sub_808B508);
- StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
CreateTask(StopTryingToTeachMove_806F67C, 5);
}
}
@@ -4037,15 +3410,15 @@ void StopTryingToTeachMove_806F588(u8 taskId)
void StopTryingToTeachMove_806F614(u8 taskId)
{
Menu_EraseWindowRect(23, 8, 29, 13);
- StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = StopTryingToTeachMove_806F67C;
}
void StopTryingToTeachMove_806F67C(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
DisplayYesNoMenu(23, 8, 1);
gTasks[taskId].func = StopTryingToTeachMove_806F6B4;
@@ -4059,10 +3432,10 @@ void StopTryingToTeachMove_806F6B4(u8 taskId)
if (selection == 0)
{
Menu_EraseWindowRect(23, 8, 29, 13);
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = sub_806F2FC;
}
else
@@ -4072,10 +3445,10 @@ void StopTryingToTeachMove_806F6B4(u8 taskId)
if (selection == -1)
PlaySE(SE_SELECT);
Menu_EraseWindowRect(23, 8, 29, 13);
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gPartyMenu.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = sub_806F358;
}
}
@@ -4105,15 +3478,15 @@ s16 sub_806F7E8(u8 taskId, struct BattleInterfaceStruct1 *b, s8 c)
b->unk4 = taskData[11];
b->unk8 = taskData[12] * c;
b->unk10 = 0x100;
- hpBarLevel = GetHPBarLevel(ewram1B000.unk282, b->unk0);
+ hpBarLevel = GetHPBarLevel(ePartyMenu2.pmUnk282, b->unk0);
if (hpBarLevel > 2)
b->unkC_0 = 4;
if (hpBarLevel == 2)
b->unkC_0 = 5;
if (hpBarLevel < 2)
b->unkC_0 = 6;
- vramPtr = gUnknown_08376858[IsDoubleBattle()][ewram1C000.primarySelectedMonIndex];
- return sub_80460C8(b, (int *)&ewram1C000.unkC, vramPtr, 0);
+ vramPtr = gUnknown_08376858[IsDoubleBattle()][gPartyMenu.primarySelectedMonIndex];
+ return sub_80460C8(b, (int *)&gPartyMenu.unkC, vramPtr, 0);
}
void sub_806F8AC(u8 taskId)
@@ -4121,34 +3494,34 @@ void sub_806F8AC(u8 taskId)
struct BattleInterfaceStruct1 sp0;
u16 sp14;
- ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, -1);
- if (ewram1B000.unk282 == -1)
+ ePartyMenu2.pmUnk282 = sub_806F7E8(taskId, &sp0, -1);
+ if (ePartyMenu2.pmUnk282 == -1)
{
- ewram1C000.unkC = 0;
+ gPartyMenu.unkC = 0;
if (-sp0.unk8 + sp0.unk4 > sp0.unk0)
sp14 = sp0.unk0 - sp0.unk4;
else
sp14 = -sp0.unk8;
gBattleMoveDamage = -sp14;
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
ConvertIntToDecimalStringN(gStringVar2, sp14, 0, 3);
if (gTasks[taskId].data[14] == 0)
StringExpandPlaceholders(gStringVar4, gOtherText_HPRestoredBy);
else
StringExpandPlaceholders(gStringVar4, gOtherText_RegainedHealth);
- SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram1C000.primarySelectedMonIndex), ewram1C000.pokemon);
- task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.primarySelectedMonIndex * 2], 7);
- ewram1B000.unk261 = 2;
- sub_806E834(gStringVar4, 1);
+ SetMonIconAnim(GetMonIconSpriteId(gPartyMenu.unk4, gPartyMenu.primarySelectedMonIndex), gPartyMenu.pokemon);
+ task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + gPartyMenu.primarySelectedMonIndex * 2], 7);
+ ePartyMenu2.unk261 = 2;
+ DisplayPartyMenuMessage(gStringVar4, 1);
sp14 += sp0.unk4;
- SetMonData(ewram1C000.pokemon, MON_DATA_HP, &sp14);
- RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
+ SetMonData(gPartyMenu.pokemon, MON_DATA_HP, &sp14);
+ RemoveBagItem(gPartyMenu.secondarySelectedIndex, 1);
sub_8032638();
gTasks[taskId].func = sub_806FB44;
}
else
{
- PartyMenuDoPrintHP(ewram1C000.primarySelectedMonIndex, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0);
+ PartyMenuDoPrintHP(gPartyMenu.primarySelectedMonIndex, IsDoubleBattle(), ePartyMenu2.pmUnk282, sp0.unk0);
}
}
@@ -4156,43 +3529,43 @@ void sub_806FA18(u8 taskId)
{
struct BattleInterfaceStruct1 sp0;
- ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, 1);
- if (ewram1B000.unk282 == -1)
+ ePartyMenu2.pmUnk282 = sub_806F7E8(taskId, &sp0, 1);
+ if (ePartyMenu2.pmUnk282 == -1)
{
PlaySE(SE_USE_ITEM);
- ewram1C000.unkC = 0;
+ gPartyMenu.unkC = 0;
gTasks[taskId].data[11] -= gTasks[taskId].data[12];
- SetMonData(ewram1C000.pokemon, MON_DATA_HP, &gTasks[taskId].data[11]);
- SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon);
- ewram1C000.primarySelectedMonIndex = gSprites[ewram01000.unk2].data[0];
- ewram1C000.pokemon = &gPlayerParty[ewram1C000.primarySelectedMonIndex];
- gTasks[taskId].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP);
- gTasks[taskId].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP);
- ewram1C000.unkC = -32768;
- ewram1C000.unk14 = ewram1C000.unk10;
+ SetMonData(gPartyMenu.pokemon, MON_DATA_HP, &gTasks[taskId].data[11]);
+ SetMonIconAnim(GetMonIconSpriteId(gPartyMenu.unk4, ePartyMenu.slotId), gPartyMenu.pokemon);
+ gPartyMenu.primarySelectedMonIndex = gSprites[ePartyMenu.slotId2].data[0];
+ gPartyMenu.pokemon = &gPlayerParty[gPartyMenu.primarySelectedMonIndex];
+ gTasks[taskId].data[10] = GetMonData(gPartyMenu.pokemon, MON_DATA_MAX_HP);
+ gTasks[taskId].data[11] = GetMonData(gPartyMenu.pokemon, MON_DATA_HP);
+ gPartyMenu.unkC = -32768;
+ gPartyMenu.unk14 = gPartyMenu.unk10;
gTasks[taskId].func = sub_806F8AC;
- ewram1B000.unk282 = gTasks[taskId].data[11];
+ ePartyMenu2.pmUnk282 = gTasks[taskId].data[11];
}
else
{
- PartyMenuDoPrintHP(ewram1C000.primarySelectedMonIndex, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0);
+ PartyMenuDoPrintHP(gPartyMenu.primarySelectedMonIndex, IsDoubleBattle(), ePartyMenu2.pmUnk282, sp0.unk0);
}
}
void sub_806FB0C(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
- gTasks[ewram1C000.unk4].func = ewram1C000.unk10;
+ gTasks[gPartyMenu.unk4].func = gPartyMenu.unk10;
DestroyTask(taskId);
}
}
void sub_806FB44(u8 taskId)
{
- if (gUnknown_0202E8F6 == 0)
+ if (gPartyMenuMessage_IsPrinting == 0)
{
- gTasks[ewram1C000.unk4].func = ewram1C000.unk14;
+ gTasks[gPartyMenu.unk4].func = gPartyMenu.unk14;
DestroyTask(taskId);
}
}
@@ -4309,13 +3682,13 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
gTasks[taskId].func = TaskDummy;
r7 = CreateTask(TaskDummy, 5);
sub_806E8D0(taskId, item, func);
- if (!IsMedicineIneffective(ewram1C000.pokemon, item))
+ if (!IsMedicineIneffective(gPartyMenu.pokemon, item))
{
r9 = IsHPRecoveryItem(item);
if (r9 == TRUE)
{
- gTasks[r7].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP);
- gTasks[r7].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP);
+ gTasks[r7].data[10] = GetMonData(gPartyMenu.pokemon, MON_DATA_MAX_HP);
+ gTasks[r7].data[11] = GetMonData(gPartyMenu.pokemon, MON_DATA_HP);
if (gTasks[r7].data[10] == gTasks[r7].data[11])
{
r9 = FALSE;
@@ -4323,7 +3696,7 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
gTasks[r7].data[11] = 0;
}
}
- r0 = ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, item, 0);
+ r0 = ExecuteTableBasedItemEffect__(gPartyMenu.primarySelectedMonIndex, item, 0);
}
else
{
@@ -4334,7 +3707,7 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
{
gUnknown_0202E8F4 = 0;
PlaySE(SE_SELECT);
- sub_806E834(gOtherText_WontHaveAnyEffect, 1);
+ DisplayPartyMenuMessage(gOtherText_WontHaveAnyEffect, 1);
gTasks[r7].func = sub_806FB0C;
}
else
@@ -4346,29 +3719,29 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
PlaySE(SE_USE_ITEM);
else
PlaySE(SE_GLASS_FLUTE);
- statusAndPkrs = GetMonStatusAndPokerus(ewram1C000.pokemon);
+ statusAndPkrs = GetMonStatusAndPokerus(gPartyMenu.pokemon);
if (statusAndPkrs == STATUS_PRIMARY_POKERUS || statusAndPkrs == STATUS_PRIMARY_NONE)
- PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.primarySelectedMonIndex);
+ PartyMenuUpdateLevelOrStatus(gPartyMenu.pokemon, gPartyMenu.primarySelectedMonIndex);
if (r9 == TRUE)
{
- gTasks[r7].data[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - gTasks[r7].data[11];
- ewram1C000.unkC = -32768;
+ gTasks[r7].data[12] = GetMonData(gPartyMenu.pokemon, MON_DATA_HP) - gTasks[r7].data[11];
+ gPartyMenu.unkC = -32768;
if (gTasks[r7].data[11] == 0)
gTasks[r7].data[14] = 1;
else
gTasks[r7].data[14] = 0;
- ewram1C000.unk14 = ewram1C000.unk10;
+ gPartyMenu.unk14 = gPartyMenu.unk10;
gTasks[r7].func = sub_806F8AC;
- ewram1B000.unk282 = gTasks[r7].data[11];
+ ePartyMenu2.pmUnk282 = gTasks[r7].data[11];
}
else
{
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
if (!IsBlueYellowRedFlute(item))
RemoveBagItem(item, 1);
GetMedicineItemEffectMessage(item);
- TryPrintPartyMenuMonNickname(ewram1C000.primarySelectedMonIndex, ewram1C000.pokemon);
- sub_806E834(gStringVar4, 1);
+ TryPrintPartyMenuMonNickname(gPartyMenu.primarySelectedMonIndex, gPartyMenu.pokemon);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[r7].func = sub_806FB0C;
}
}
@@ -4386,13 +3759,13 @@ bool8 IsBlueYellowRedFlute(u16 item)
void DoSacredAshItemEffect(u8 taskId, u16 item, TaskFunc func)
{
- ewram1C000.unk10 = func;
- ewram1C000.unk4 = taskId;
- ewram1C000.secondarySelectedIndex = item;
- ewram1C000.primarySelectedMonIndex = 0;
- ewram1C000.unk14 = sub_80701DC;
- ewram1B000.unk27E = 0;
- ewram1B000.unk280 = 0;
+ gPartyMenu.unk10 = func;
+ gPartyMenu.unk4 = taskId;
+ gPartyMenu.secondarySelectedIndex = item;
+ gPartyMenu.primarySelectedMonIndex = 0;
+ gPartyMenu.unk14 = sub_80701DC;
+ ePartyMenu2.pmUnk27E = 0;
+ ePartyMenu2.pmUnk280 = 0;
sub_8070088(taskId);
}
@@ -4401,7 +3774,7 @@ void sub_8070088(u8 taskId)
u8 taskId2;
gTasks[taskId].func = TaskDummy;
- if (GetMonData(&gPlayerParty[ewram1C000.primarySelectedMonIndex], MON_DATA_SPECIES) == SPECIES_NONE)
+ if (GetMonData(&gPlayerParty[gPartyMenu.primarySelectedMonIndex], MON_DATA_SPECIES) == SPECIES_NONE)
{
gTasks[taskId].func = sub_80701DC;
}
@@ -4411,10 +3784,10 @@ void sub_8070088(u8 taskId)
taskId2 = CreateTask(TaskDummy, 5);
taskData = gTasks[taskId2].data;
- ewram1C000.pokemon = &gPlayerParty[ewram1C000.primarySelectedMonIndex];
- taskData[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP);
- taskData[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP);
- if (ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, ewram1C000.secondarySelectedIndex, 0))
+ gPartyMenu.pokemon = &gPlayerParty[gPartyMenu.primarySelectedMonIndex];
+ taskData[10] = GetMonData(gPartyMenu.pokemon, MON_DATA_MAX_HP);
+ taskData[11] = GetMonData(gPartyMenu.pokemon, MON_DATA_HP);
+ if (ExecuteTableBasedItemEffect__(gPartyMenu.primarySelectedMonIndex, gPartyMenu.secondarySelectedIndex, 0))
{
DestroyTask(taskId2);
gTasks[taskId].func = sub_80701DC;
@@ -4424,15 +3797,15 @@ void sub_8070088(u8 taskId)
gUnknown_0202E8F4 = 1;
Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
PlaySE(SE_USE_ITEM);
- PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.primarySelectedMonIndex);
- task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.primarySelectedMonIndex * 2], 9);
- ewram1B000.unk261 = 2;
- taskData[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - taskData[11];
+ PartyMenuUpdateLevelOrStatus(gPartyMenu.pokemon, gPartyMenu.primarySelectedMonIndex);
+ task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + gPartyMenu.primarySelectedMonIndex * 2], 9);
+ ePartyMenu2.unk261 = 2;
+ taskData[12] = GetMonData(gPartyMenu.pokemon, MON_DATA_HP) - taskData[11];
taskData[14] = 1;
- ewram1B000.unk27E = 1;
- ewram1B000.unk280 = 1;
- ewram1B000.unk282 = taskData[11];
- ewram1C000.unkC = -32768;
+ ePartyMenu2.pmUnk27E = 1;
+ ePartyMenu2.pmUnk280 = 1;
+ ePartyMenu2.pmUnk282 = taskData[11];
+ gPartyMenu.unkC = -32768;
gTasks[taskId2].func = sub_806F8AC;
}
}
@@ -4440,30 +3813,30 @@ void sub_8070088(u8 taskId)
void sub_80701DC(u8 taskId)
{
- if (ewram1B000.unk27E == 1)
+ if (ePartyMenu2.pmUnk27E == 1)
{
- AddBagItem(ewram1C000.secondarySelectedIndex, 1);
- if (GetMonData(&gPlayerParty[ewram1C000.primarySelectedMonIndex], MON_DATA_SPECIES) != 0)
+ AddBagItem(gPartyMenu.secondarySelectedIndex, 1);
+ if (GetMonData(&gPlayerParty[gPartyMenu.primarySelectedMonIndex], MON_DATA_SPECIES) != 0)
{
- task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.primarySelectedMonIndex * 2], 3);
- ewram1B000.unk261 = 2;
+ task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + gPartyMenu.primarySelectedMonIndex * 2], 3);
+ ePartyMenu2.unk261 = 2;
}
- ewram1B000.unk27E = 0;
+ ePartyMenu2.pmUnk27E = 0;
}
- ewram1C000.primarySelectedMonIndex++;
- if (ewram1C000.primarySelectedMonIndex == 6)
+ gPartyMenu.primarySelectedMonIndex++;
+ if (gPartyMenu.primarySelectedMonIndex == 6)
{
gUnknown_0202E8F4 = 0;
- if (ewram1B000.unk280 == 0)
+ if (ePartyMenu2.pmUnk280 == 0)
{
gTasks[taskId].func = TaskDummy;
- sub_806E834(gOtherText_WontHaveAnyEffect, 1);
+ DisplayPartyMenuMessage(gOtherText_WontHaveAnyEffect, 1);
CreateTask(sub_806FB0C, 8);
}
else
{
- RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
- gTasks[taskId].func = ewram1C000.unk10;
+ RemoveBagItem(gPartyMenu.secondarySelectedIndex, 1);
+ gTasks[taskId].func = gPartyMenu.unk10;
}
gLastFieldPokeMenuOpened = 0;
}
@@ -4535,7 +3908,7 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c)
{
PlaySE(SE_SELECT);
PrintPartyMenuPromptText(10, 3);
- CreateItemUseMoveMenu(ewram1C000.primarySelectedMonIndex);
+ CreateItemUseMoveMenu(gPartyMenu.primarySelectedMonIndex);
gTasks[taskId2].func = Task_HandleItemUseMoveMenuInput;
gMain.newKeys = 0;
}
@@ -4545,7 +3918,7 @@ void ItemUseMoveMenu_HandleMoveSelection(u8 taskId)
{
Menu_DestroyCursor();
Menu_EraseWindowRect(19, 10, 29, 19);
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
gTasks[taskId].data[11] = Menu_GetCursorPos();
DoRecoverPP(taskId);
}
@@ -4555,9 +3928,9 @@ void ItemUseMoveMenu_HandleCancel(u8 taskId)
Menu_DestroyCursor();
Menu_EraseWindowRect(19, 10, 29, 19);
if (gMain.inBattle)
- gTasks[ewram1C000.unk4].func = HandleBattlePartyMenu;
+ gTasks[gPartyMenu.unk4].func = HandleBattlePartyMenu;
else
- gTasks[ewram1C000.unk4].func = sub_808B0C0;
+ gTasks[gPartyMenu.unk4].func = sub_808B0C0;
PrintPartyMenuPromptText(3, 0);
DestroyTask(taskId);
}
@@ -4566,21 +3939,21 @@ void DoRecoverPP(u8 taskId)
{
u16 r5 = 0;
- if (ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, ewram1C000.secondarySelectedIndex, gTasks[taskId].data[11]))
+ if (ExecuteTableBasedItemEffect__(gPartyMenu.primarySelectedMonIndex, gPartyMenu.secondarySelectedIndex, gTasks[taskId].data[11]))
{
- gUnknown_0202E8F4 = r5;
+ gUnknown_0202E8F4 = 0;
PlaySE(SE_SELECT);
- sub_806E834(gOtherText_WontHaveAnyEffect, 1);
+ DisplayPartyMenuMessage(gOtherText_WontHaveAnyEffect, 1);
}
else
{
gUnknown_0202E8F4 = 1;
PlaySE(SE_USE_ITEM);
- RemoveBagItem(ewram1C000.secondarySelectedIndex, 1);
- r5 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + gTasks[taskId].data[11]);
+ RemoveBagItem(gPartyMenu.secondarySelectedIndex, 1);
+ r5 = GetMonData(gPartyMenu.pokemon, MON_DATA_MOVE1 + gTasks[taskId].data[11]);
StringCopy(gStringVar1, gMoveNames[r5]);
- GetMedicineItemEffectMessage(ewram1C000.secondarySelectedIndex);
- sub_806E834(gStringVar4, 1);
+ GetMedicineItemEffectMessage(gPartyMenu.secondarySelectedIndex);
+ DisplayPartyMenuMessage(gStringVar4, 1);
}
gTasks[taskId].func = sub_806FB0C;
}
@@ -4591,7 +3964,7 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
sub_806E8D0(taskId, b, c);
PlaySE(SE_SELECT);
PrintPartyMenuPromptText(11, 3);
- CreateItemUseMoveMenu(ewram1C000.primarySelectedMonIndex);
+ CreateItemUseMoveMenu(gPartyMenu.primarySelectedMonIndex);
CreateTask(Task_HandleItemUseMoveMenuInput, 5);
gMain.newKeys = 0;
}
@@ -4634,11 +4007,11 @@ void DoRareCandyItemEffect(u8 taskId, u16 item, TaskFunc c)
gTasks[taskId].func = TaskDummy;
sub_806E8D0(taskId, item, c);
- if (GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL) != 100)
+ if (GetMonData(gPartyMenu.pokemon, MON_DATA_LEVEL) != 100)
{
for (i = 0; i < NUM_STATS; i++)
- ewram1B000.statGrowths[i] = GetMonData(ewram1C000.pokemon, StatDataTypes[i]);
- noEffect = ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, item, 0);
+ ePartyMenu2.pmStatGrowths[i] = GetMonData(gPartyMenu.pokemon, StatDataTypes[i]);
+ noEffect = ExecuteTableBasedItemEffect__(gPartyMenu.primarySelectedMonIndex, item, 0);
}
else
noEffect = TRUE;
@@ -4647,7 +4020,7 @@ void DoRareCandyItemEffect(u8 taskId, u16 item, TaskFunc c)
{
gUnknown_0202E8F4 = 0;
PlaySE(SE_SELECT);
- sub_806E834(gOtherText_WontHaveAnyEffect, 1);
+ DisplayPartyMenuMessage(gOtherText_WontHaveAnyEffect, 1);
CreateTask(sub_806FB0C, 5);
}
else
@@ -4656,20 +4029,20 @@ void DoRareCandyItemEffect(u8 taskId, u16 item, TaskFunc c)
gUnknown_0202E8F4 = 1;
PlayFanfareByFanfareNum(0);
- RedrawPokemonInfoInMenu(ewram1C000.primarySelectedMonIndex, ewram1C000.pokemon);
+ RedrawPokemonInfoInMenu(gPartyMenu.primarySelectedMonIndex, gPartyMenu.pokemon);
RemoveBagItem(item, 1);
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- level = GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
+ level = GetMonData(gPartyMenu.pokemon, MON_DATA_LEVEL);
ConvertIntToDecimalStringN(gStringVar2, level, 0, 3);
StringExpandPlaceholders(gStringVar4, gOtherText_ElevatedTo);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
CreateTask(Task_RareCandy1, 5);
}
}
void Task_RareCandy1(u8 taskId)
{
- if (WaitFanfare(0) && gUnknown_0202E8F6 == 0)
+ if (WaitFanfare(0) && gPartyMenuMessage_IsPrinting == 0)
{
if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON))
{
@@ -4705,10 +4078,10 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
u8 *ptr;
#endif
- stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]);
+ stat = GetMonData(gPartyMenu.pokemon, StatDataTypes[i]);
- ewram1B000.statGrowths[i + NUM_STATS] = stat;
- ewram1B000.statGrowths[i] = stat - ewram1B000.statGrowths[i];
+ ePartyMenu2.pmStatGrowths[i + NUM_STATS] = stat;
+ ePartyMenu2.pmStatGrowths[i] = stat - ePartyMenu2.pmStatGrowths[i];
x = (i / 3) * 9 + 11;
y = ((i % 3) << 1) + 1;
@@ -4722,7 +4095,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
*ptr++ = EXT_CTRL_CODE_BEGIN;
*ptr++ = 0x13;
*ptr++ = 0x34;
- ConvertIntToDecimalStringN(ptr, ewram1B000.statGrowths[i], 1, 2);
+ ConvertIntToDecimalStringN(ptr, ePartyMenu2.pmStatGrowths[i], 1, 2);
Menu_PrintText(gStringVar1, x + 1, y);
#else
Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1);
@@ -4733,7 +4106,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
gStringVar1[1] = 0x14;
gStringVar1[2] = 0x06;
- ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2);
+ ConvertIntToDecimalStringN(gStringVar1 + 3, ePartyMenu2.pmStatGrowths[i], 1, 2);
Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0);
#endif
}
@@ -4750,9 +4123,9 @@ void PrintNewStatsInLevelUpWindow(u8 taskId)
u32 stat;
u32 newStatIndex;
- stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]);
+ stat = GetMonData(gPartyMenu.pokemon, StatDataTypes[i]);
newStatIndex = i + 6;
- ewram1B000.statGrowths[newStatIndex] = stat;
+ ePartyMenu2.pmStatGrowths[newStatIndex] = stat;
x = ((i / 3) * 9) + 11;
y = ((i % 3) << 1) + 1;
@@ -4761,7 +4134,7 @@ void PrintNewStatsInLevelUpWindow(u8 taskId)
gStringVar1[1] = 0x14;
gStringVar1[2] = 0x06;
- ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[newStatIndex], 1, 3);
+ ConvertIntToDecimalStringN(gStringVar1 + 3, ePartyMenu2.pmStatGrowths[newStatIndex], 1, 3);
Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0);
}
}
@@ -4777,11 +4150,11 @@ void RedrawPokemonInfoInMenu(u8 monIndex, struct Pokemon *pokemon)
PartyMenuDoPrintHP(monIndex, IsDoubleBattle(), GetMonData(pokemon, MON_DATA_HP), GetMonData(pokemon, MON_DATA_MAX_HP));
PartyMenuTryDrawHPBar(monIndex, pokemon);
- icon = GetMonIconSpriteId(ewram1C000.unk4, monIndex);
+ icon = GetMonIconSpriteId(gPartyMenu.unk4, monIndex);
SetMonIconAnim(icon, pokemon);
task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + monIndex * 2], 7);
- ewram1B000.unk261 = 2;
+ ePartyMenu2.unk261 = 2;
}
void Task_RareCandy3(u8 taskId)
@@ -4795,18 +4168,18 @@ void Task_RareCandy3(u8 taskId)
Menu_EraseWindowRect(11, 0, 29, 7);
- learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, TRUE);
- ewram1B000.unk282 = 1;
+ learnedMove = MonTryLearningNewMove(gPartyMenu.pokemon, TRUE);
+ ePartyMenu2.pmUnk282 = 1;
switch (learnedMove)
{
case 0:
// No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ evolutionSpecies = GetEvolutionTargetSpecies(gPartyMenu.pokemon, 0, 0);
if (evolutionSpecies != 0)
{
gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.primarySelectedMonIndex);
+ BeginEvolutionScene(gPartyMenu.pokemon, evolutionSpecies, TRUE, gPartyMenu.primarySelectedMonIndex);
DestroyTask(taskId);
}
else
@@ -4816,13 +4189,13 @@ void Task_RareCandy3(u8 taskId)
break;
case 0xFFFF:
// Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
- ewram1C000.unk8 = gMoveToLearn;
+ gPartyMenu.unk8 = gMoveToLearn;
gTasks[taskId].func = sub_806F358;
break;
case 0xFFFE:
@@ -4831,11 +4204,11 @@ void Task_RareCandy3(u8 taskId)
break;
default:
// Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[learnedMove]);
StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = Task_TeamMonTMMove3;
break;
@@ -4849,16 +4222,16 @@ void TeachMonMoveInPartyMenu(u8 taskId)
u16 learnedMove;
u16 evolutionSpecies;
- learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, FALSE);
+ learnedMove = MonTryLearningNewMove(gPartyMenu.pokemon, FALSE);
switch (learnedMove)
{
case 0:
// No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ evolutionSpecies = GetEvolutionTargetSpecies(gPartyMenu.pokemon, 0, 0);
if (evolutionSpecies != 0)
{
gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.primarySelectedMonIndex);
+ BeginEvolutionScene(gPartyMenu.pokemon, evolutionSpecies, TRUE, gPartyMenu.primarySelectedMonIndex);
DestroyTask(taskId);
}
else
@@ -4868,13 +4241,13 @@ void TeachMonMoveInPartyMenu(u8 taskId)
break;
case 0xFFFF:
// Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
- ewram1C000.unk8 = gMoveToLearn;
+ gPartyMenu.unk8 = gMoveToLearn;
gTasks[taskId].func = sub_806F358;
break;
case 0xFFFE:
@@ -4883,11 +4256,11 @@ void TeachMonMoveInPartyMenu(u8 taskId)
break;
default:
// Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ GetMonNickname(gPartyMenu.pokemon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[learnedMove]);
StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
+ DisplayPartyMenuMessage(gStringVar4, 1);
gTasks[taskId].func = Task_TeamMonTMMove3;
break;
@@ -4896,7 +4269,7 @@ void TeachMonMoveInPartyMenu(u8 taskId)
static void sub_8070D90(u8 taskId)
{
- gTasks[ewram1C000.unk4].func = ewram1C000.unk10;
+ gTasks[gPartyMenu.unk4].func = gPartyMenu.unk10;
DestroyTask(taskId);
}
@@ -4909,10 +4282,10 @@ void DoEvolutionStoneItemEffect(u8 taskId, u16 evolutionStoneItem, TaskFunc c)
gCB2_AfterEvolution = sub_80A53F8;
- if (ExecuteTableBasedItemEffect__(ewram1C000.primarySelectedMonIndex, evolutionStoneItem, 0))
+ if (ExecuteTableBasedItemEffect__(gPartyMenu.primarySelectedMonIndex, evolutionStoneItem, 0))
{
gUnknown_0202E8F4 = 0;
- sub_806E834(gOtherText_WontHaveAnyEffect, 1);
+ DisplayPartyMenuMessage(gOtherText_WontHaveAnyEffect, 1);
CreateTask(sub_806FB0C, 5);
}
@@ -4925,346 +4298,75 @@ void DoEvolutionStoneItemEffect(u8 taskId, u16 evolutionStoneItem, TaskFunc c)
u8 GetItemEffectType(u16 item)
{
const u8 *itemEffect;
-#ifndef NONMATCHING
- register u8 itemEffect0 asm("r1");
- register u8 itemEffect3 asm("r3");
- register u32 itemEffect0_r0 asm("r0"); // u32 to prevent shifting when transferring itemEffect0 to this
- u8 mask;
-#else
-#define itemEffect0 itemEffect[0]
-#define itemEffect3 itemEffect[3]
-#define mask 0x3F
+ u32 statusCure;
+
+#ifdef UBFIX
+ // Enforces that the item ID is within the bounds of gItemEffectTable.
+ // In the retail ROM, the otherwise situation will never arise.
+ // Nevertheless, GameFreak added this sanity check in FireRed.
+ if (!ITEM_HAS_EFFECT(item))
+ return ITEM_EFFECT_NONE;
#endif
// Read the item's effect properties.
if (item == ITEM_ENIGMA_BERRY)
- {
itemEffect = gSaveBlock1.enigmaBerry.itemEffect;
- }
else
- {
itemEffect = gItemEffectTable[item - ITEM_POTION];
- }
-
-#ifndef NONMATCHING
- itemEffect0 = itemEffect[0];
- mask = 0x3F;
-#endif
- if ((itemEffect0 & mask) || itemEffect[1] || itemEffect[2])
- {
- return 0;
- }
-#ifndef NONMATCHING
- itemEffect3 = itemEffect[3];
-#endif
- if (itemEffect3 & 0x80)
- {
- return 0;
- }
- else if (itemEffect0 & 0x40)
- {
- return 10;
- }
- else if (itemEffect3 & 0x40)
- {
- return 1;
- }
- else if ((itemEffect3 & mask) || (itemEffect0 >> 7))
- {
- if ((itemEffect3 & mask) == 0x20)
- {
- return 4;
- }
- else if ((itemEffect3 & mask) == 0x10)
- {
- return 3;
- }
- else if ((itemEffect3 & mask) == 0x8)
- {
- return 5;
- }
- else if ((itemEffect3 & mask) == 0x4)
- {
- return 6;
- }
- else if ((itemEffect3 & mask) == 0x2)
- {
- return 7;
- }
- else if ((itemEffect3 & mask) == 0x1)
- {
- return 8;
- }
- // alternate fakematching
- // itemEffect0_r0 = itemEffect0 >> 7;
- // asm(""); // increase live length for greg
- // if ((itemEffect0_r0 != 0) && (itemEffect3 & mask) == 0)
-#ifndef NONMATCHING
- else if (((itemEffect0_r0 = itemEffect0 >> 7) != 0) && (itemEffect3 & mask) == 0)
-#else
- else if (((itemEffect[0] >> 7) != 0) && (itemEffect[3] & 0x3F) == 0)
-#endif
- {
- return 9;
- }
+ if ((itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_GUARD_SPEC))
+ return ITEM_EFFECT_X_ITEM;
+ else if (itemEffect[0] & ITEM0_SACRED_ASH)
+ return ITEM_EFFECT_SACRED_ASH;
+ else if (itemEffect[3] & ITEM3_LEVEL_UP)
+ return ITEM_EFFECT_RAISE_LEVEL;
+
+ statusCure = itemEffect[3] & ITEM3_STATUS_ALL;
+ if (statusCure || (itemEffect[0] >> 7))
+ {
+ if (statusCure == ITEM3_SLEEP)
+ return ITEM_EFFECT_CURE_SLEEP;
+ else if (statusCure == ITEM3_POISON)
+ return ITEM_EFFECT_CURE_POISON;
+ else if (statusCure == ITEM3_BURN)
+ return ITEM_EFFECT_CURE_BURN;
+ else if (statusCure == ITEM3_FREEZE)
+ return ITEM_EFFECT_CURE_FREEZE;
+ else if (statusCure == ITEM3_PARALYSIS)
+ return ITEM_EFFECT_CURE_PARALYSIS;
+ else if (statusCure == ITEM3_CONFUSION)
+ return ITEM_EFFECT_CURE_CONFUSION;
+ else if (itemEffect[0] >> 7 && !statusCure)
+ return ITEM_EFFECT_CURE_INFATUATION;
else
- {
- return 11;
- }
- }
- else if (itemEffect[4] & 0x44)
- {
- return 2;
- }
- else if (itemEffect[4] & 0x2)
- {
- return 12;
- }
- else if (itemEffect[4] & 0x1)
- {
- return 13;
- }
- else if (itemEffect[5] & 0x8)
- {
- return 14;
- }
- else if (itemEffect[5] & 0x4)
- {
- return 15;
- }
- else if (itemEffect[5] & 0x2)
- {
- return 16;
- }
- else if (itemEffect[5] & 0x1)
- {
- return 17;
- }
- else if (itemEffect[4] & 0x80)
- {
- return 18;
- }
- else if (itemEffect[4] & 0x20)
- {
- return 19;
- }
- else if (itemEffect[5] & 0x10)
- {
- return 20;
- }
- else if (itemEffect[4] & 0x18)
- {
- return 21;
- }
+ return ITEM_EFFECT_CURE_ALL_STATUS;
+ }
+
+ if (itemEffect[4] & (ITEM4_REVIVE | ITEM4_HEAL_HP))
+ return ITEM_EFFECT_HEAL_HP;
+ else if (itemEffect[4] & ITEM4_EV_ATK)
+ return ITEM_EFFECT_ATK_EV;
+ else if (itemEffect[4] & ITEM4_EV_HP)
+ return ITEM_EFFECT_HP_EV;
+ else if (itemEffect[5] & ITEM5_EV_SPATK)
+ return ITEM_EFFECT_SPATK_EV;
+ else if (itemEffect[5] & ITEM5_EV_SPDEF)
+ return ITEM_EFFECT_SPDEF_EV;
+ else if (itemEffect[5] & ITEM5_EV_SPEED)
+ return ITEM_EFFECT_SPEED_EV;
+ else if (itemEffect[5] & ITEM5_EV_DEF)
+ return ITEM_EFFECT_DEF_EV;
+ else if (itemEffect[4] & ITEM4_EVO_STONE)
+ return ITEM_EFFECT_EVO_STONE;
+ else if (itemEffect[4] & ITEM4_PP_UP)
+ return ITEM_EFFECT_PP_UP;
+ else if (itemEffect[5] & ITEM5_PP_MAX)
+ return ITEM_EFFECT_PP_MAX;
+ else if (itemEffect[4] & (ITEM4_HEAL_PP | ITEM4_HEAL_PP_ONE))
+ return ITEM_EFFECT_HEAL_PP;
else
- {
- return 22;
- }
-#ifdef NONMATCHING
-#undef itemEffect0
-#undef itemEffect3
-#undef mask
-#endif
+ return ITEM_EFFECT_NONE;
}
-#if 0
-NAKED
-u8 GetItemEffectType(u16 item)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0xAF\n\
- bne _08070E5C\n\
- ldr r4, _08070E58 @ =gSaveBlock1 + 0x3676\n\
- b _08070E66\n\
- .align 2, 0\n\
-_08070E58: .4byte gSaveBlock1 + 0x3676\n\
-_08070E5C:\n\
- ldr r1, _08070E8C @ =gItemEffectTable\n\
- subs r0, 0xD\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r4, [r0]\n\
-_08070E66:\n\
- ldrb r1, [r4]\n\
- movs r5, 0x3F\n\
- adds r0, r5, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08070E88\n\
- ldrb r0, [r4, 0x1]\n\
- cmp r0, 0\n\
- bne _08070E88\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r0, 0\n\
- bne _08070E88\n\
- ldrb r3, [r4, 0x3]\n\
- movs r0, 0x80\n\
- ands r0, r3\n\
- cmp r0, 0\n\
- beq _08070E90\n\
-_08070E88:\n\
- movs r0, 0\n\
- b _08070F8A\n\
- .align 2, 0\n\
-_08070E8C: .4byte gItemEffectTable\n\
-_08070E90:\n\
- movs r2, 0x40\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08070E9E\n\
- movs r0, 0xA\n\
- b _08070F8A\n\
-_08070E9E:\n\
- adds r0, r2, 0\n\
- ands r0, r3\n\
- cmp r0, 0\n\
- beq _08070EAA\n\
- movs r0, 0x1\n\
- b _08070F8A\n\
-_08070EAA:\n\
- adds r2, r5, 0\n\
- ands r2, r3\n\
- cmp r2, 0\n\
- bne _08070EB8\n\
- lsrs r0, r1, 7\n\
- cmp r0, 0\n\
- beq _08070EFA\n\
-_08070EB8:\n\
- cmp r2, 0x20\n\
- bne _08070EC0\n\
- movs r0, 0x4\n\
- b _08070F8A\n\
-_08070EC0:\n\
- cmp r2, 0x10\n\
- bne _08070EC8\n\
- movs r0, 0x3\n\
- b _08070F8A\n\
-_08070EC8:\n\
- cmp r2, 0x8\n\
- bne _08070ED0\n\
- movs r0, 0x5\n\
- b _08070F8A\n\
-_08070ED0:\n\
- cmp r2, 0x4\n\
- bne _08070ED8\n\
- movs r0, 0x6\n\
- b _08070F8A\n\
-_08070ED8:\n\
- cmp r2, 0x2\n\
- bne _08070EE0\n\
- movs r0, 0x7\n\
- b _08070F8A\n\
-_08070EE0:\n\
- cmp r2, 0x1\n\
- bne _08070EE8\n\
- movs r0, 0x8\n\
- b _08070F8A\n\
-_08070EE8:\n\
- lsrs r0, r1, 7\n\
- cmp r0, 0\n\
- beq _08070EF6\n\
- cmp r2, 0\n\
- bne _08070EF6\n\
- movs r0, 0x9\n\
- b _08070F8A\n\
-_08070EF6:\n\
- movs r0, 0xB\n\
- b _08070F8A\n\
-_08070EFA:\n\
- ldrb r1, [r4, 0x4]\n\
- movs r0, 0x44\n\
- ands r0, r1\n\
- adds r2, r1, 0\n\
- cmp r0, 0\n\
- beq _08070F0A\n\
- movs r0, 0x2\n\
- b _08070F8A\n\
-_08070F0A:\n\
- movs r5, 0x2\n\
- adds r0, r5, 0\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08070F18\n\
- movs r0, 0xC\n\
- b _08070F8A\n\
-_08070F18:\n\
- movs r3, 0x1\n\
- adds r0, r3, 0\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08070F26\n\
- movs r0, 0xD\n\
- b _08070F8A\n\
-_08070F26:\n\
- ldrb r1, [r4, 0x5]\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08070F34\n\
- movs r0, 0xE\n\
- b _08070F8A\n\
-_08070F34:\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08070F40\n\
- movs r0, 0xF\n\
- b _08070F8A\n\
-_08070F40:\n\
- adds r0, r5, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08070F4C\n\
- movs r0, 0x10\n\
- b _08070F8A\n\
-_08070F4C:\n\
- adds r0, r3, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08070F58\n\
- movs r0, 0x11\n\
- b _08070F8A\n\
-_08070F58:\n\
- movs r0, 0x80\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08070F64\n\
- movs r0, 0x12\n\
- b _08070F8A\n\
-_08070F64:\n\
- movs r0, 0x20\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08070F70\n\
- movs r0, 0x13\n\
- b _08070F8A\n\
-_08070F70:\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08070F7C\n\
- movs r0, 0x14\n\
- b _08070F8A\n\
-_08070F7C:\n\
- movs r0, 0x18\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _08070F88\n\
- movs r0, 0x16\n\
- b _08070F8A\n\
-_08070F88:\n\
- movs r0, 0x15\n\
-_08070F8A:\n\
- pop {r4,r5}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
-}
-#endif
// Maybe this goes in start_menu.c
#if !DEBUG
diff --git a/src/pc_screen_effect.c b/src/pc_screen_effect.c
index 1bd87ea24..8b376a49a 100644
--- a/src/pc_screen_effect.c
+++ b/src/pc_screen_effect.c
@@ -227,8 +227,8 @@ static void sub_80C6078(void)
static void sub_80C60CC(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->data[0];
- if (sprite->pos1.x < -0x08 || sprite->pos1.x > 0xf8)
+ sprite->x += sprite->data[0];
+ if (sprite->x < -0x08 || sprite->x > 0xf8)
{
DestroySprite(sprite);
gUnknown_020387EC->unk0A++;
@@ -246,23 +246,23 @@ static void sub_80C6130(struct Sprite *sprite)
{
if (sprite->data[4] == 0 && gUnknown_020387EC->unk0C == 1)
{
- sprite->pos1.x += sprite->data[0];
- if (sprite->pos1.x > -0x10 && sprite->pos1.x < 0x100)
+ sprite->x += sprite->data[0];
+ if (sprite->x > -0x10 && sprite->x < 0x100)
sprite->invisible = FALSE;
if (sprite->data[1] > 0)
{
- if (sprite->pos1.x >= sprite->data[2])
+ if (sprite->x >= sprite->data[2])
sprite->data[4] = 1;
}
else
{
- if (sprite->pos1.x <= sprite->data[2])
+ if (sprite->x <= sprite->data[2])
sprite->data[4] = 1;
}
if (sprite->data[4])
{
gUnknown_020387EC->unk0A++;
- sprite->pos1.x = sprite->data[2];
+ sprite->x = sprite->data[2];
}
}
}
diff --git a/src/pokeball.c b/src/pokeball.c
index 58c1bbaa9..34bb2bfbd 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -372,13 +372,13 @@ static void SendOutMonAnimation(u8 taskId)
{
case 0xFF: // Player's side
gBattlerTarget = battler;
- gSprites[spriteId].pos1.x = 24;
- gSprites[spriteId].pos1.y = 68;
+ gSprites[spriteId].x = 24;
+ gSprites[spriteId].y = 68;
gSprites[spriteId].callback = SendOutPlayerMonAnimation_Step0;
break;
case 0xFE: // Opponent's side
- gSprites[spriteId].pos1.x = GetBattlerSpriteCoord(battler, 0);
- gSprites[spriteId].pos1.y = GetBattlerSpriteCoord(battler, 1) + 24;
+ gSprites[spriteId].x = GetBattlerSpriteCoord(battler, 0);
+ gSprites[spriteId].y = GetBattlerSpriteCoord(battler, 1) + 24;
gBattlerTarget = battler;
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].callback = SendOutOpponentMonAnimation_Step0;
@@ -418,13 +418,13 @@ static void objc_0804ABD4(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
sprite->affineAnimPaused = TRUE;
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->data[5] = 0;
r4 = ball_number_to_ball_processing_index(GetBattlerBall(r5));
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, r4);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 0x1C, r4);
sprite->data[0] = sub_8141314(0, r5, 14, r4);
sprite->data[6] = r5;
sprite->data[7] = r8;
@@ -466,7 +466,7 @@ static void sub_8046760(struct Sprite *sprite)
else
{
gSprites[gBattlerSpriteIds[sprite->data[6]]].data[1] += 0x60;
- gSprites[gBattlerSpriteIds[sprite->data[6]]].pos2.y = -gSprites[gBattlerSpriteIds[sprite->data[6]]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[sprite->data[6]]].y2 = -gSprites[gBattlerSpriteIds[sprite->data[6]]].data[1] >> 8;
}
}
@@ -480,8 +480,8 @@ static void sub_80467F8(struct Sprite *sprite)
sprite->data[3] = 0;
sprite->data[4] = 32;
sprite->data[5] = 0;
- sprite->pos1.y += Cos(0, 32);
- sprite->pos2.y = -Cos(0, sprite->data[4]);
+ sprite->y += Cos(0, 32);
+ sprite->y2 = -Cos(0, sprite->data[4]);
sprite->callback = sub_804684C;
}
}
@@ -494,7 +494,7 @@ static void sub_804684C(struct Sprite *sprite)
switch (sprite->data[3] & 0xFF)
{
case 0:
- sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->y2 = -Cos(sprite->data[5], sprite->data[4]);
sprite->data[5] += 4 + (sprite->data[3] >> 8);
if (sprite->data[5] >= 64)
{
@@ -520,7 +520,7 @@ static void sub_804684C(struct Sprite *sprite)
}
break;
case 1:
- sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->y2 = -Cos(sprite->data[5], sprite->data[4]);
sprite->data[5] -= 4 + (sprite->data[3] >> 8);
if (sprite->data[5] <= 0)
{
@@ -532,8 +532,8 @@ static void sub_804684C(struct Sprite *sprite)
if (r5)
{
sprite->data[3] = 0;
- sprite->pos1.y += Cos(64, 32);
- sprite->pos2.y = 0;
+ sprite->y += Cos(64, 32);
+ sprite->y2 = 0;
if (sprite->data[7] == 0)
{
sprite->callback = sub_8046C78;
@@ -566,7 +566,7 @@ static void sub_8046984(struct Sprite *sprite)
{
case 0:
case 2:
- sprite->pos2.x += sprite->data[4];
+ sprite->x2 += sprite->data[4];
sprite->data[5] += sprite->data[4];
sprite->affineAnimPaused = FALSE;
if (sprite->data[5] > 3 || sprite->data[5] < -3)
@@ -703,7 +703,7 @@ static void sub_8046C78(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
ballIndex = ball_number_to_ball_processing_index(GetBattlerBall(battler));
- AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballIndex);
sprite->data[0] = sub_8141314(1, sprite->data[6], 14, ballIndex);
sprite->callback = sub_8046E9C;
if (gMain.inBattle)
@@ -784,14 +784,14 @@ static void sub_8046E9C(struct Sprite *sprite)
else
{
gSprites[gBattlerSpriteIds[r4]].data[1] -= 288;
- gSprites[gBattlerSpriteIds[r4]].pos2.y = gSprites[gBattlerSpriteIds[r4]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[r4]].y2 = gSprites[gBattlerSpriteIds[r4]].data[1] >> 8;
}
if (sprite->animEnded && r7)
{
s32 i;
u32 r3;
- gSprites[gBattlerSpriteIds[r4]].pos2.y = 0;
+ gSprites[gBattlerSpriteIds[r4]].y2 = 0;
gDoingBattleAnim = 0;
ewram17810[r4].unk0_3 = 0;
FreeSpriteOamMatrix(sprite);
@@ -868,7 +868,7 @@ static void SendOutPlayerMonAnimation_Step1(struct Sprite *sprite)
r4 = sprite->data[0];
TranslateAnimLinear(sprite);
sprite->data[7] += sprite->data[6] / 3;
- sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
+ sprite->y2 += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
sprite->oam.affineParam += 0x100;
if ((sprite->oam.affineParam >> 8) % 3 != 0)
sprite->data[0] = r4;
@@ -887,10 +887,10 @@ static void SendOutPlayerMonAnimation_Step1(struct Sprite *sprite)
{
if (TranslateAnimArc(sprite))
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.y = 0;
- sprite->pos2.x = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->y2 = 0;
+ sprite->x2 = 0;
sprite->data[6] = sprite->oam.affineParam & 0xFF;
sprite->data[0] = 0;
if (IsDoubleBattle() && ewram17840.unk9_0 && sprite->data[6] == GetBattlerAtPosition(2))
@@ -943,10 +943,10 @@ void CreatePokeballSprite(u8 a, u8 b, u8 x, u8 y, u8 e, u8 f, u8 g, u32 h)
LoadCompressedObjectPalette(&sBallSpritePalettes[0]);
spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, f);
gSprites[spriteId].data[0] = a;
- gSprites[spriteId].data[5] = gSprites[a].pos1.x;
- gSprites[spriteId].data[6] = gSprites[a].pos1.y;
- gSprites[a].pos1.x = x;
- gSprites[a].pos1.y = y;
+ gSprites[spriteId].data[5] = gSprites[a].x;
+ gSprites[spriteId].data[6] = gSprites[a].y;
+ gSprites[a].x = x;
+ gSprites[a].y = y;
gSprites[spriteId].data[1] = g;
gSprites[spriteId].data[2] = b;
gSprites[spriteId].data[3] = h;
@@ -970,7 +970,7 @@ static void sub_80473D0(struct Sprite *sprite)
else
r5 = 0;
StartSpriteAnim(sprite, 1);
- sub_80472B0(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5);
+ sub_80472B0(sprite->x, sprite->y - 5, sprite->oam.priority, r5);
sprite->data[1] = sub_80472D8(1, r8, r4);
sprite->callback = sub_804748C;
gSprites[r7].invisible = FALSE;
@@ -1000,24 +1000,24 @@ static void sub_804748C(struct Sprite *sprite)
StartSpriteAffineAnim(&gSprites[r3], 0);
r12 = TRUE;
}
- var1 = (sprite->data[5] - sprite->pos1.x) * sprite->data[7] / 128 + sprite->pos1.x;
- var2 = (sprite->data[6] - sprite->pos1.y) * sprite->data[7] / 128 + sprite->pos1.y;
- gSprites[r3].pos1.x = var1;
- gSprites[r3].pos1.y = var2;
+ var1 = (sprite->data[5] - sprite->x) * sprite->data[7] / 128 + sprite->x;
+ var2 = (sprite->data[6] - sprite->y) * sprite->data[7] / 128 + sprite->y;
+ gSprites[r3].x = var1;
+ gSprites[r3].y = var2;
if (sprite->data[7] < 128)
{
s16 sine = -(gSineTable[(u8)sprite->data[7]] / 8);
sprite->data[7] += 4;
- gSprites[r3].pos2.x = sine;
- gSprites[r3].pos2.y = sine;
+ gSprites[r3].x2 = sine;
+ gSprites[r3].y2 = sine;
}
else
{
- gSprites[r3].pos1.x = sprite->data[5];
- gSprites[r3].pos1.y = sprite->data[6];
- gSprites[r3].pos2.x = 0;
- gSprites[r3].pos2.y = 0;
+ gSprites[r3].x = sprite->data[5];
+ gSprites[r3].y = sprite->data[6];
+ gSprites[r3].x2 = 0;
+ gSprites[r3].y2 = 0;
r6 = TRUE;
}
if (sprite->animEnded && r12 && r6)
@@ -1055,7 +1055,7 @@ static void sub_8047638(struct Sprite *sprite)
else
r6 = 0;
StartSpriteAnim(sprite, 1);
- sub_80472B0(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
+ sub_80472B0(sprite->x, sprite->y - 5, sprite->oam.priority, r6);
sprite->data[1] = sub_80472D8(1, r8, r5);
sprite->callback = sub_80476E0;
StartSpriteAffineAnim(&gSprites[r7], 2);
@@ -1086,7 +1086,7 @@ static void sub_80476E0(struct Sprite *sprite)
else
{
gSprites[r1].data[1] += 96;
- gSprites[r1].pos2.y = -gSprites[r1].data[1] >> 8;
+ gSprites[r1].y2 = -gSprites[r1].data[1] >> 8;
}
}
@@ -1107,15 +1107,15 @@ void sub_804777C(u8 a)
sprite->data[0] = 5;
sprite->data[1] = 0;
- sprite->pos2.x = 0x73;
- sprite->pos2.y = 0;
+ sprite->x2 = 0x73;
+ sprite->y2 = 0;
sprite->callback = sub_8047830;
if (GetBattlerSide(a) != 0)
{
sprite->data[0] = -sprite->data[0];
sprite->data[1] = -sprite->data[1];
- sprite->pos2.x = -sprite->pos2.x;
- sprite->pos2.y = -sprite->pos2.y;
+ sprite->x2 = -sprite->x2;
+ sprite->y2 = -sprite->y2;
}
gSprites[sprite->data[5]].callback(&gSprites[sprite->data[5]]);
if (GetBattlerPosition(a) == 2)
@@ -1134,9 +1134,9 @@ static void sub_804780C(struct Sprite *sprite)
static void sub_8047830(struct Sprite *sprite)
{
- sprite->pos2.x -= sprite->data[0];
- sprite->pos2.y -= sprite->data[1];
- if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ sprite->x2 -= sprite->data[0];
+ sprite->y2 -= sprite->data[1];
+ if (sprite->x2 == 0 && sprite->y2 == 0)
sprite->callback = SpriteCallbackDummy;
}
@@ -1154,13 +1154,13 @@ static void oamc_804BEB4(struct Sprite *sprite)
{
u8 r1 = sprite->data[1];
- gSprites[r1].pos2.y = sprite->data[0];
+ gSprites[r1].y2 = sprite->data[0];
sprite->data[0] = -sprite->data[0];
sprite->data[2]++;
if (sprite->data[2] == 21)
{
- gSprites[r1].pos2.x = 0;
- gSprites[r1].pos2.y = 0;
+ gSprites[r1].x2 = 0;
+ gSprites[r1].y2 = 0;
DestroySprite(sprite);
}
}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 6e3f5d9e1..5a0ea0810 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -316,7 +316,7 @@ static bool8 sub_810B6C0(void)
case 10:
if (MultistepInitMenuWindowContinue())
{
- ewram1FFFF = 0;
+ ePokeblockGfxState = 0;
gMain.state++;
}
break;
@@ -334,7 +334,7 @@ static bool8 sub_810B6C0(void)
gMain.state++;
break;
case 13:
- ewram1FFFE = sub_810BA50(0x38, 0x40, 0);
+ ePokeblockCaseSpriteId = sub_810BA50(0x38, 0x40, 0);
gMain.state++;
break;
case 14:
@@ -386,27 +386,27 @@ void sub_810B96C(void)
static bool8 sub_810B998(void)
{
- switch (ewram1FFFF)
+ switch (ePokeblockGfxState)
{
case 0:
LZDecompressVram(gMenuPokeblock_Gfx, BG_CHAR_ADDR(2));
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 1:
LZDecompressWram(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]);
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 2:
LoadCompressedPalette(gMenuPokeblock_Pal, 0, 0xc0);
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 3:
LoadCompressedObjectPic(&gUnknown_083F7F74);
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 4:
LoadCompressedObjectPalette(&gUnknown_083F7F7C);
- ewram1FFFF = 0;
+ ePokeblockGfxState = 0;
return TRUE;
}
return FALSE;
@@ -627,7 +627,7 @@ static void sub_810BDAC(bool8 flag)
static void sub_810BF38(bool8 flag)
{
PlaySE(SE_SELECT);
- gSprites[ewram1FFFE].callback = sub_810C8D4;
+ gSprites[ePokeblockCaseSpriteId].callback = sub_810C8D4;
sub_810BDAC(flag);
}
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index cb3d8789e..b9f9e4f61 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -540,7 +540,7 @@ static bool8 TransitionToPokeblockFeedScene(void)
case 6:
if (MultistepInitMenuWindowContinue())
{
- ewram1FFFF = 0;
+ ePokeblockGfxState = 0;
gMain.state++;
}
break;
@@ -551,11 +551,11 @@ static bool8 TransitionToPokeblockFeedScene(void)
}
break;
case 8:
- ewram1FFFD = sub_81480B4();
+ ePokeblockFeedCaseSpriteId = sub_81480B4();
gMain.state++;
break;
case 9:
- ewram1FFFE = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]);
+ ePokeblockMonSpriteId = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]);
gMain.state++;
break;
case 10:
@@ -611,13 +611,13 @@ static bool8 sub_8147B20(struct Pokemon* mon)
{
u16 species;
u32 PiD, TiD;
- switch (ewram1FFFF)
+ switch (ePokeblockGfxState)
{
case 0:
species = GetMonData(mon, MON_DATA_SPECIES2);
PiD = GetMonData(mon, MON_DATA_PERSONALITY);
- HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, EWRAM, gUnknown_081FAF4C[1], species, PiD);
- ewram1FFFF++;
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (void *)EWRAM, gMonSpriteGfx_Sprite_ptr[1], species, PiD);
+ ePokeblockGfxState++;
break;
case 1:
{
@@ -629,37 +629,37 @@ static bool8 sub_8147B20(struct Pokemon* mon)
palette = GetMonSpritePalStructFromOtIdPersonality(species, TiD, PiD);
LoadCompressedObjectPalette(palette);
GetMonSpriteTemplate_803C56C(palette->tag, 1);
- ewram1FFFF++;
+ ePokeblockGfxState++;
}
break;
case 2:
LoadCompressedObjectPic(&gUnknown_083F7F74);
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 3:
LoadCompressedObjectPalette(&gUnknown_083F7F7C);
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 4:
LoadCompressedObjectPic(&sUnknown_084121DC);
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 5:
SetPokeblockFeedSpritePal(gSpecialVar_ItemId);
LoadCompressedObjectPalette(&sPokeblockFeedSpritePal);
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 6:
LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM));
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 7:
LZDecompressVram(gUnknown_08E782FC, (void*)(VRAM + 0xE800));
- ewram1FFFF++;
+ ePokeblockGfxState++;
break;
case 8:
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
- ewram1FFFF = 0;
+ ePokeblockGfxState = 0;
return TRUE;
}
return FALSE;
@@ -684,13 +684,13 @@ static void sub_8147CC8(u8 taskID)
sub_81481DC();
break;
case 255:
- sub_8148108(ewram1FFFD, gTasks[taskID].data[1]);
+ sub_8148108(ePokeblockFeedCaseSpriteId, gTasks[taskID].data[1]);
break;
case 269:
- ewram1FFFC = CreatePokeblockSprite();
+ ePokeblockSpriteId = CreatePokeblockSprite();
break;
case 281:
- sub_8148044(ewram1FFFE);
+ sub_8148044(ePokeblockMonSpriteId);
break;
case 297:
gTasks[taskID].func = Task_PrintAtePokeblockText;
@@ -758,7 +758,7 @@ static void Task_PaletteFadeToReturn(u8 taskID)
static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon)
{
u16 species = GetMonData(mon, MON_DATA_SPECIES2);
- u8 spriteID = CreateSprite(&gUnknown_02024E8C, 48, 80, 2);
+ u8 spriteID = CreateSprite(&gCreatingSpriteTemplate, 48, 80, 2);
gPokeblockFeedMonSpecies = species;
gPokeblockFeedMonSpriteID = spriteID;
@@ -778,8 +778,8 @@ static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon)
static void sub_8148044(u8 spriteID)
{
- gSprites[spriteID].pos1.x = 48;
- gSprites[spriteID].pos1.y = 80;
+ gSprites[spriteID].x = 48;
+ gSprites[spriteID].y = 80;
gSprites[spriteID].data[0] = -8;
gSprites[spriteID].data[1] = 1;
gSprites[spriteID].callback = sub_8148078;
@@ -787,8 +787,8 @@ static void sub_8148044(u8 spriteID)
static void sub_8148078(struct Sprite* sprite)
{
- sprite->pos1.x += 4;
- sprite->pos1.y += sprite->data[0];
+ sprite->x += 4;
+ sprite->y += sprite->data[0];
sprite->data[0] += sprite->data[1];
if (sprite->data[0] == 0)
PlayCry1(sprite->data[2], 0);
@@ -827,8 +827,8 @@ static u8 CreatePokeblockSprite(void)
static void SpriteCB_ThrownPokeblock(struct Sprite* sprite)
{
- sprite->pos1.x -= 4;
- sprite->pos1.y += sprite->data[0];
+ sprite->x -= 4;
+ sprite->y += sprite->data[0];
sprite->data[0] += sprite->data[1];
if (sprite->data[0] == 10)
DestroySprite(sprite);
@@ -918,8 +918,8 @@ static bool8 sub_8148540(void)
gUnknown_03005FA0[10] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2]);
gUnknown_03005FA0[11] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3]);
gUnknown_03005FA0[12] = gUnknown_03005FA0[4];
- gUnknown_03005FA0[13] = gPokeblockFeedPokeSprite->pos2.x;
- gUnknown_03005FA0[14] = gPokeblockFeedPokeSprite->pos2.y;
+ gUnknown_03005FA0[13] = gPokeblockFeedPokeSprite->x2;
+ gUnknown_03005FA0[14] = gPokeblockFeedPokeSprite->y2;
sub_8148710();
gUnknown_03005FA0[4] = gUnknown_03005FA0[12];
sub_814862C();
@@ -932,8 +932,8 @@ static bool8 sub_81485CC(void)
{
u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4];
- gPokeblockFeedPokeSprite->pos2.x = ewram1D000_2[var];
- gPokeblockFeedPokeSprite->pos2.y = ewram1D400[var];
+ gPokeblockFeedPokeSprite->x2 = ePokeblockFeedMonAnimX[var];
+ gPokeblockFeedPokeSprite->y2 = ePokeblockFeedMonAnimY[var];
if (--gUnknown_03005FA0[4] == 0)
return TRUE;
@@ -957,18 +957,18 @@ static void sub_814862C(void)
for (i = 0; i < r7 - 1; i++)
{
- s16* r3 = &ewram1D000_2[r8 + i];
+ s16* r3 = &ePokeblockFeedMonAnimX[r8 + i];
s16 r1 = *r3 - (var3);
- s16* r5 = &ewram1D400[r8 + i];
+ s16* r5 = &ePokeblockFeedMonAnimY[r8 + i];
s16 r4 = *r5 - r9;
*r3 -= r1 * (i + 1) / r7;
*r5 -= r4 * (i + 1) / r7;
}
- ewram1D000_2[(r8 + r7) - 1] = var3;
- ewram1D400[(r8 + r7) - 1] = r9;
+ ePokeblockFeedMonAnimX[(r8 + r7) - 1] = var3;
+ ePokeblockFeedMonAnimY[(r8 + r7) - 1] = r9;
}
void sub_8148710(void)
@@ -996,13 +996,13 @@ void sub_8148710(void)
if (!var_24)
{
- ewram1D000_2[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8;
- ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7;
+ ePokeblockFeedMonAnimX[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8;
+ ePokeblockFeedMonAnimY[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7;
}
else
{
- ewram1D000_2[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8;
- ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7;
+ ePokeblockFeedMonAnimX[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8;
+ ePokeblockFeedMonAnimY[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7;
}
gUnknown_03005FA0[0] += gUnknown_03005FA0[1];
diff --git a/src/pokedex.c b/src/pokedex.c
index f0be616d0..77d4ab6e9 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -35,43 +35,42 @@ struct PokedexListItem
struct PokedexView
{
- struct PokedexListItem unk0[NATIONAL_DEX_COUNT];
- struct PokedexListItem monData;
+ struct PokedexListItem pokedexList[NATIONAL_DEX_COUNT + 1];
u16 pokemonListCount;
u16 selectedPokemon;
- u16 unk610;
+ u16 selectedPokemonBackup;
u16 dexMode;
- u16 unk614;
+ u16 dexModeBackup;
u16 dexOrder;
- u16 unk618;
- u16 unk61A;
- u16 unk61C;
- u16 unk61E[4];
+ u16 dexOrderBackup;
+ u16 seenCount;
+ u16 ownCount;
+ u16 monSpriteIds[4];
u16 selectedMonSpriteId;
- s16 unk628;
- s16 unk62A;
- u8 unk62C;
- u8 unk62D;
- u8 unk62E;
- u8 unk62F;
- s16 unk630;
- s16 unk632;
- s16 unk634;
- s16 unk636;
- u16 unk638;
- u16 unk63A[8];
- u8 unk64A;
- u8 unk64B;
- u8 unk64C_1:1;
+ s16 pokeBallRotationStep;
+ s16 pokeBallRotationBackup;
+ u8 pokeBallRotation;
+ u8 initialVOffset;
+ u8 scrollTimer;
+ u8 scrollDirection;
+ s16 listVOffset;
+ s16 listMovingVOffset;
+ s16 scrollMonIncrement;
+ s16 maxScrollTimer;
+ u16 scrollSpeed;
+ u16 unk63A[4]; // Cleared, never read
+ u8 unk642[8];
+ u8 currentPage;
+ u8 currentPageBackup;
+ u8 isSearchResults:1;
u8 selectedScreen;
u8 descriptionPageNum;
- u8 unk64F;
- u8 menuIsOpen; //menuIsOpen
- u8 unk651;
- u16 menuCursorPos; //Menu cursor position
+ u8 screenSwitchState;
+ u8 menuIsOpen;
+ u16 menuCursorPos;
s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
- u8 unk656[8];
- u8 unk65E[8];
+ u8 unk656[8]; // Cleared, never read
+ u8 unk65E[8]; // Cleared, never read
};
enum
@@ -88,71 +87,71 @@ enum
SIZE_SCREEN
};
-struct UnknownStruct2
+struct SearchOptionText
{
- const u8 *text1;
- const u8 *text2;
+ const u8 *description;
+ const u8 *title;
};
-struct UnknownStruct1
+struct SearchOption
{
- const struct UnknownStruct2 *unk0;
- u8 unk4;
- u8 unk5;
- u16 unk6;
+ const struct SearchOptionText *texts;
+ u8 taskDataCursorPos;
+ u8 taskDataScrollOffset;
+ u16 numOptions;
};
-struct UnknownStruct3
+struct SearchMenuTopBarItem
{
const u8 *text;
- u8 unk4;
- u8 unk5;
- u8 unk6;
+ u8 highlightX;
+ u8 highlightY;
+ u8 highlightWidth;
};
-struct UnknownStruct4
+struct SearchMenuItem
{
const u8 *text;
- u8 unk4;
- u8 unk5;
- u8 unk6;
- u8 unk7;
- u8 unk8;
- u8 unk9;
+ u8 titleBgX;
+ u8 titleBgY;
+ u8 titleBgWidth;
+ u8 selectionBgX;
+ u8 selectionBgY;
+ u8 selectionBgWidth;
};
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern u8 gReservedSpritePaletteCount;
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern u8 gUnknown_03005E98;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
+extern u8 gDexCryScreenState;
extern const u8 gPokedexMenu_Gfx[];
extern const u8 gUnknown_08E96738[];
-extern const u8 gUnknown_08E96888[];
-extern const u8 gUnknown_08E96994[];
+extern const u8 gPokedexStartMenuMain_Tilemap[];
+extern const u8 gPokedexStartMenuSearchResults_Tilemap[];
extern const u8 gUnknown_08E9C6DC[];
extern const u8 gUnknown_08E96BD4[];
-extern const u8 gUnknown_08E96ACC[];
-extern const u8 gUnknown_08E96B58[];
+extern const u8 gPokedexScreenSelectBarMain_Tilemap[];
+extern const u8 gPokedexScreenSelectBarSubmenu_Tilemap[];
extern const u16 gPokedexMenu_Pal[];
extern const u16 gPokedexMenu2_Pal[];
extern const struct CompressedSpriteSheet gTrainerFrontPicTable[];
extern const struct MonCoords gTrainerFrontPicCoords[];
extern const struct PokedexEntry gPokedexEntries[];
extern const u8 gPokedexMenuSearch_Gfx[];
-extern const u8 gUnknown_08E96D2C[];
+extern const u8 gPokedexMenuSearch_Tilemap[];
extern const u16 gPokedexMenuSearch_Pal[];
extern const u8 gTypeNames[][7];
extern const u8 gPokedexMenu2_Gfx[];
static EWRAM_DATA struct PokedexView *gPokedexView = NULL;
-static EWRAM_DATA u16 gUnknown_0202FFB8 = 0;
-static EWRAM_DATA u8 gUnknown_0202FFBA = 0;
-static EWRAM_DATA struct PokedexListItem *gUnknown_0202FFBC = NULL;
+static EWRAM_DATA u16 sLastSelectedPokemon = 0;
+static EWRAM_DATA u8 sPokeBallRotation = 0;
+static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
-u8 gUnknown_03005CE8;
-IntrCallback gUnknown_03005CEC;
+u8 gUnusedPokedexU8;
+IntrCallback gPokedexVBlankCB;
-static u8 sub_8091E3C(void);
+static u8 LoadSearchMenu(void);
static const u16 sPokedexSearchPalette[] = INCBIN_U16("graphics/pokedex/search.gbapal");
static const u16 sNationalPokedexPalette[] = INCBIN_U16("graphics/pokedex/national.gbapal");
@@ -403,7 +402,7 @@ static const union AnimCmd *const gSpriteAnimTable_83A0520[] =
{
gSpriteAnim_83A04CC,
};
-static void sub_808EF38(struct Sprite *);
+static void SpriteCB_Scrollbar(struct Sprite *);
static const struct SpriteTemplate gSpriteTemplate_83A0524 =
{
.tileTag = 4096,
@@ -412,10 +411,10 @@ static const struct SpriteTemplate gSpriteTemplate_83A0524 =
.anims = gSpriteAnimTable_83A04D4,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_808EF38,
+ .callback = SpriteCB_Scrollbar,
};
-static void sub_808EF8C(struct Sprite *);
-static const struct SpriteTemplate gSpriteTemplate_83A053C =
+static void SpriteCB_ScrollArrow(struct Sprite *);
+static const struct SpriteTemplate sScrollArrowSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -423,9 +422,9 @@ static const struct SpriteTemplate gSpriteTemplate_83A053C =
.anims = gSpriteAnimTable_83A04D8,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_808EF8C,
+ .callback = SpriteCB_ScrollArrow,
};
-static void sub_808F08C(struct Sprite *);
+static void SpriteCB_DexListInterfaceText(struct Sprite *);
static const struct SpriteTemplate gSpriteTemplate_83A0554 =
{
.tileTag = 4096,
@@ -434,9 +433,9 @@ static const struct SpriteTemplate gSpriteTemplate_83A0554 =
.anims = gSpriteAnimTable_83A04E0,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_808F08C,
+ .callback = SpriteCB_DexListInterfaceText,
};
-static void sub_808F0B4(struct Sprite *);
+static void SpriteCB_RotatingPokeBall(struct Sprite *);
static const struct SpriteTemplate gSpriteTemplate_83A056C =
{
.tileTag = 4096,
@@ -445,9 +444,9 @@ static const struct SpriteTemplate gSpriteTemplate_83A056C =
.anims = gSpriteAnimTable_83A04DC,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_808F0B4,
+ .callback = SpriteCB_RotatingPokeBall,
};
-static void sub_808ED94(struct Sprite *);
+static void SpriteCB_SeenOwnInfo(struct Sprite *);
static const struct SpriteTemplate gSpriteTemplate_83A0584 =
{
.tileTag = 4096,
@@ -456,7 +455,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A0584 =
.anims = gSpriteAnimTable_83A04F0,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_808ED94,
+ .callback = SpriteCB_SeenOwnInfo,
};
static const struct SpriteTemplate gSpriteTemplate_83A059C =
{
@@ -466,9 +465,9 @@ static const struct SpriteTemplate gSpriteTemplate_83A059C =
.anims = gSpriteAnimTable_83A04F8,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_808ED94,
+ .callback = SpriteCB_SeenOwnInfo,
};
-static void sub_808F168(struct Sprite *);
+static void SpriteCB_DexListStartMenuCursor(struct Sprite *);
static const struct SpriteTemplate gSpriteTemplate_83A05B4 =
{
.tileTag = 4096,
@@ -477,14 +476,14 @@ static const struct SpriteTemplate gSpriteTemplate_83A05B4 =
.anims = gSpriteAnimTable_83A0520,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_808F168,
+ .callback = SpriteCB_DexListStartMenuCursor,
};
-static const struct CompressedSpriteSheet gUnknown_083A05CC[] =
+static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] =
{
{gPokedexMenu2_Gfx, 0x1F00, 0x1000},
{NULL, 0, 0},
};
-static const struct SpritePalette gUnknown_083A05DC[] =
+static const struct SpritePalette sInterfaceSpritePalette[] =
{
{gPokedexMenu_Pal, 0x1000},
{NULL, 0},
@@ -498,7 +497,7 @@ static const u8 gUnknown_083A05F8[] = _("");
#elif GERMAN
#include "data/pokedex_entries_de.h"
#endif
-static const u16 gUnknown_083B4EC4[16] = {0};
+static const u16 sSizeScreenSilhouette_Pal[16] = {0};
static const u8 *const sMonFootprintTable[] =
{
gMonFootprint_Bulbasaur,
@@ -915,9 +914,9 @@ static const u8 *const sMonFootprintTable[] =
gMonFootprint_Chimecho,
gMonFootprint_Bulbasaur,
};
-static const u8 gUnknown_083B5558[] = _("{CLEAR_TO 0}");
+static const u8 sText_ClearTo0[] = _("{CLEAR_TO 0}");
const u8 gUnknown_083B555C[] = INCBIN_U8("graphics/unknown/unknown_3B555C.bin");
-static const struct OamData gOamData_83B557C =
+static const struct OamData sOamData_MonOrTrainerPic =
{
.y = 0,
.affineMode = 0,
@@ -933,108 +932,119 @@ static const struct OamData gOamData_83B557C =
.paletteNum = 0,
.affineParam = 0,
};
-static void *const gUnknown_083B5584[] =
+
+static void *const sMonOrTrainerPicDecompressDestPtrs[] =
{
- ePokedexPalAddr1,
- ePokedexPalAddr2,
- ePokedexPalAddr3,
- ePokedexPalAddr4,
+ ePokedexGraphicsBuffer + 0x0000,
+ ePokedexGraphicsBuffer + 0x4000,
+ ePokedexGraphicsBuffer + 0x8000,
+ ePokedexGraphicsBuffer + 0xC000,
};
-static const struct SpriteFrameImage gSpriteImageTable_83B5594[] =
-{
- {ewram8000, 0x800},
- {ewram8800, 0x800},
- {ewram9000, 0x800},
- {ewram9800, 0x800},
- {ewramA000, 0x800},
- {ewramA800, 0x800},
- {ewramB000, 0x800},
- {ewramB800, 0x800},
- {ewramC000, 0x800},
- {ewramC800, 0x800},
- {ewramD000, 0x800},
- {ewramD800, 0x800},
- {ewramE000, 0x800},
- {ewramE800, 0x800},
- {ewramF000, 0x800},
- {ewramF800, 0x800},
+
+static const struct SpriteFrameImage sSpriteFrameImages_MonOrTrainerPic_0[] =
+{
+ {ePokedexGraphicsBuffer + 0x0000, 0x800},
+ {ePokedexGraphicsBuffer + 0x0800, 0x800},
+ {ePokedexGraphicsBuffer + 0x1000, 0x800},
+ {ePokedexGraphicsBuffer + 0x1800, 0x800},
+ {ePokedexGraphicsBuffer + 0x2000, 0x800},
+ {ePokedexGraphicsBuffer + 0x2800, 0x800},
+ {ePokedexGraphicsBuffer + 0x3000, 0x800},
+ {ePokedexGraphicsBuffer + 0x3800, 0x800},
+ {ePokedexGraphicsBuffer + 0x4000, 0x800},
+ {ePokedexGraphicsBuffer + 0x4800, 0x800},
+ {ePokedexGraphicsBuffer + 0x5000, 0x800},
+ {ePokedexGraphicsBuffer + 0x5800, 0x800},
+ {ePokedexGraphicsBuffer + 0x6000, 0x800},
+ {ePokedexGraphicsBuffer + 0x6800, 0x800},
+ {ePokedexGraphicsBuffer + 0x7000, 0x800},
+ {ePokedexGraphicsBuffer + 0x7800, 0x800},
};
-static const struct SpriteFrameImage gSpriteImageTable_83B5614[] =
-{
- {ewramC000, 0x800},
- {ewramC800, 0x800},
- {ewramD000, 0x800},
- {ewramD800, 0x800},
- {ewramE000, 0x800},
- {ewramE800, 0x800},
- {ewramF000, 0x800},
- {ewramF800, 0x800},
- {ewram10000, 0x800},
- {ewram10800, 0x800},
- {ewram11000, 0x800},
- {ewram11800, 0x800},
- {ewram12000, 0x800},
- {ewram12800, 0x800},
- {ewram13000, 0x800},
- {ewram13800, 0x800},
+
+static const struct SpriteFrameImage sSpriteFrameImages_MonOrTrainerPic_1[] =
+{
+ {ePokedexGraphicsBuffer + 0x4000, 0x800},
+ {ePokedexGraphicsBuffer + 0x4800, 0x800},
+ {ePokedexGraphicsBuffer + 0x5000, 0x800},
+ {ePokedexGraphicsBuffer + 0x5800, 0x800},
+ {ePokedexGraphicsBuffer + 0x6000, 0x800},
+ {ePokedexGraphicsBuffer + 0x6800, 0x800},
+ {ePokedexGraphicsBuffer + 0x7000, 0x800},
+ {ePokedexGraphicsBuffer + 0x7800, 0x800},
+ {ePokedexGraphicsBuffer + 0x8000, 0x800},
+ {ePokedexGraphicsBuffer + 0x8800, 0x800},
+ {ePokedexGraphicsBuffer + 0x9000, 0x800},
+ {ePokedexGraphicsBuffer + 0x9800, 0x800},
+ {ePokedexGraphicsBuffer + 0xA000, 0x800},
+ {ePokedexGraphicsBuffer + 0xA800, 0x800},
+ {ePokedexGraphicsBuffer + 0xB000, 0x800},
+ {ePokedexGraphicsBuffer + 0xB800, 0x800},
};
-static const struct SpriteFrameImage gSpriteImageTable_83B5694[] =
-{
- {ewram10000, 0x800},
- {ewram10800, 0x800},
- {ewram11000, 0x800},
- {ewram11800, 0x800},
- {ewram12000, 0x800},
- {ewram12800, 0x800},
- {ewram13000, 0x800},
- {ewram13800, 0x800},
- {ewram14000, 0x800},
- {ewram14800, 0x800},
- {ewram15000, 0x800},
- {ewram15800, 0x800},
- {ewram16000_2, 0x800},
- {ewram16800, 0x800},
- {ewram17000, 0x800},
- {ewram17800_2, 0x800},
+
+static const struct SpriteFrameImage sSpriteFrameImages_MonOrTrainerPic_2[] =
+{
+ {ePokedexGraphicsBuffer + 0x8000, 0x800},
+ {ePokedexGraphicsBuffer + 0x8800, 0x800},
+ {ePokedexGraphicsBuffer + 0x9000, 0x800},
+ {ePokedexGraphicsBuffer + 0x9800, 0x800},
+ {ePokedexGraphicsBuffer + 0xA000, 0x800},
+ {ePokedexGraphicsBuffer + 0xA800, 0x800},
+ {ePokedexGraphicsBuffer + 0xB000, 0x800},
+ {ePokedexGraphicsBuffer + 0xB800, 0x800},
+ {ePokedexGraphicsBuffer + 0xC000, 0x800},
+ {ePokedexGraphicsBuffer + 0xC800, 0x800},
+ {ePokedexGraphicsBuffer + 0xD000, 0x800},
+ {ePokedexGraphicsBuffer + 0xD800, 0x800},
+ {ePokedexGraphicsBuffer + 0xE000, 0x800},
+ {ePokedexGraphicsBuffer + 0xE800, 0x800},
+ {ePokedexGraphicsBuffer + 0xF000, 0x800},
+ {ePokedexGraphicsBuffer + 0xF800, 0x800},
};
-static const struct SpriteFrameImage gSpriteImageTable_83B5714[] =
-{
- {ewram14000, 0x800},
- {ewram14800, 0x800},
- {ewram15000, 0x800},
- {ewram15800, 0x800},
- {ewram16000_2, 0x800},
- {ewram16800, 0x800},
- {ewram17000, 0x800},
- {ewram17800_2, 0x800},
- {ewram18000_2, 0x800},
- {ewram18800, 0x800},
- {ewram19000, 0x800},
- {ewram19800, 0x800},
- {ewram1A000, 0x800},
- {ewram1A800, 0x800},
- {ewram1B000_2, 0x800},
- {ewram1B800, 0x800},
+
+static const struct SpriteFrameImage sSpriteFrameImages_MonOrTrainerPic_3[] =
+{
+ {ePokedexGraphicsBuffer + 0xC000, 0x800},
+ {ePokedexGraphicsBuffer + 0xC800, 0x800},
+ {ePokedexGraphicsBuffer + 0xD000, 0x800},
+ {ePokedexGraphicsBuffer + 0xD800, 0x800},
+ {ePokedexGraphicsBuffer + 0xE000, 0x800},
+ {ePokedexGraphicsBuffer + 0xE800, 0x800},
+ {ePokedexGraphicsBuffer + 0xF000, 0x800},
+ {ePokedexGraphicsBuffer + 0xF800, 0x800},
+ // UB: may overlap ePokedexView1-4
+ {ePokedexGraphicsBuffer + 0x10000, 0x800},
+ {ePokedexGraphicsBuffer + 0x10800, 0x800},
+ {ePokedexGraphicsBuffer + 0x11000, 0x800},
+ {ePokedexGraphicsBuffer + 0x11800, 0x800},
+ {ePokedexGraphicsBuffer + 0x12000, 0x800},
+ {ePokedexGraphicsBuffer + 0x12800, 0x800},
+ {ePokedexGraphicsBuffer + 0x13000, 0x800},
+ {ePokedexGraphicsBuffer + 0x13800, 0x800},
};
-static const struct SpriteFrameImage *const gUnknown_083B5794[] =
+
+static const struct SpriteFrameImage *const sSpriteFrameImages_MonOrTrainerPic[] =
{
- gSpriteImageTable_83B5594,
- gSpriteImageTable_83B5614,
- gSpriteImageTable_83B5694,
- gSpriteImageTable_83B5714,
+ sSpriteFrameImages_MonOrTrainerPic_0,
+ sSpriteFrameImages_MonOrTrainerPic_1,
+ sSpriteFrameImages_MonOrTrainerPic_2,
+ sSpriteFrameImages_MonOrTrainerPic_3,
};
-static void nullsub_59(struct Sprite *);
-static const struct SpriteTemplate gUnknown_083B57A4 =
+
+static void _SpriteCB_Dummy(struct Sprite *);
+
+static const struct SpriteTemplate sMonOrTrainerPicSpriteTemplate =
{
.tileTag = 0xFFFF,
.paletteTag = 0,
- .oam = &gOamData_83B557C,
+ .oam = &sOamData_MonOrTrainerPic,
.anims = NULL,
- .images = gSpriteImageTable_83B5594,
+ .images = sSpriteFrameImages_MonOrTrainerPic_0,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = nullsub_59,
+ .callback = _SpriteCB_Dummy,
};
-static const u8 gUnknown_083B57BC[][4] =
+
+// First character in range followed by number of characters in range for upper and lowercase
+static const u8 sLetterSearchRanges[][4] =
{
{0, 0, 0, 0},
{CHAR_A, 3, CHAR_a, 3},
@@ -1047,13 +1057,13 @@ static const u8 gUnknown_083B57BC[][4] =
{CHAR_V, 3, CHAR_v, 3},
{CHAR_Y, 2, CHAR_y, 2},
};
-static const struct UnknownStruct3 gUnknown_083B57E4[] =
+static const struct SearchMenuTopBarItem sSearchMenuTopBarItems[] =
{
{DexText_SearchForPoke, 0, 0, 5},
{DexText_SwitchDex, 6, 0, 5},
{DexText_ReturnToDex, 12, 0, 5},
};
-static const struct UnknownStruct4 gUnknown_083B57FC[] =
+static const struct SearchMenuItem sSearchMenuItems[] =
{
{DexText_ListByABC, 0, 2, 5, 5, 2, 12},
{DexText_ListByColor, 0, 4, 5, 5, 4, 12},
@@ -1063,7 +1073,7 @@ static const struct UnknownStruct4 gUnknown_083B57FC[] =
{DexText_SelectDexMode, 0, 10, 5, 5, 10, 12},
{DexText_ExecuteSearchSwitch, 0, 12, 5, 0, 0, 0},
};
-static const u8 gUnknown_083B5850[][4] =
+static const u8 sSearchMovementMap_SearchNatDex[][4] =
{
{0xFF, 0xFF, 0xFF, 1},
{0xFF, 0xFF, 0, 2},
@@ -1073,7 +1083,7 @@ static const u8 gUnknown_083B5850[][4] =
{0xFF, 0xFF, 4, 6},
{0xFF, 0xFF, 5, 0xFF},
};
-static const u8 gUnknown_083B586C[][4] =
+static const u8 sSearchMovementMap_ShiftNatDex[][4] =
{
{0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF},
@@ -1083,7 +1093,7 @@ static const u8 gUnknown_083B586C[][4] =
{0xFF, 0xFF, 4, 6},
{0xFF, 0xFF, 5, 0xFF},
};
-static const u8 gUnknown_083B5888[][4] =
+static const u8 sSearchMovementMap_SearchHoennDex[][4] =
{
{0xFF, 0xFF, 0xFF, 1},
{0xFF, 0xFF, 0, 2},
@@ -1093,7 +1103,7 @@ static const u8 gUnknown_083B5888[][4] =
{0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 4, 0xFF},
};
-static const u8 gUnknown_083B58A4[][4] =
+static const u8 sSearchMovementMap_ShiftHoennDex[][4] =
{
{0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 0xFF, 0xFF},
@@ -1103,13 +1113,13 @@ static const u8 gUnknown_083B58A4[][4] =
{0xFF, 0xFF, 0xFF, 0xFF},
{0xFF, 0xFF, 4, 0xFF},
};
-static const struct UnknownStruct2 gUnknown_083B58C0[] =
+static const struct SearchOptionText sDexModeOptions[] =
{
{DexText_HoennDex2, DexText_HoennDex},
{DexText_NationalDex2, DexText_NationalDex},
{NULL, NULL},
};
-static const struct UnknownStruct2 gUnknown_083B58D8[] =
+static const struct SearchOptionText sDexOrderOptions[] =
{
{DexText_ListByNumber, DexText_NumericalMode},
{DexText_ListByABC2, DexText_ABCMode},
@@ -1119,7 +1129,7 @@ static const struct UnknownStruct2 gUnknown_083B58D8[] =
{DexText_ListBySmallToTallest, DexText_SmallestMode},
{NULL, NULL},
};
-static const struct UnknownStruct2 gUnknown_083B5910[] =
+static const struct SearchOptionText sDexSearchNameOptions[] =
{
{DexText_Terminator5, DexText_DontSpecify},
{DexText_Terminator5, DexText_ABC},
@@ -1133,7 +1143,7 @@ static const struct UnknownStruct2 gUnknown_083B5910[] =
{DexText_Terminator5, DexText_YZ},
{NULL, NULL},
};
-static const struct UnknownStruct2 gUnknown_083B5968[] =
+static const struct SearchOptionText sDexSearchColorOptions[] =
{
{DexText_Terminator5, DexText_DontSpecify},
{DexText_Terminator5, DexText_Red},
@@ -1148,7 +1158,7 @@ static const struct UnknownStruct2 gUnknown_083B5968[] =
{DexText_Terminator5, DexText_Pink},
{NULL, NULL},
};
-static const struct UnknownStruct2 gUnknown_083B59C8[] =
+static const struct SearchOptionText sDexSearchTypeOptions[] =
{
{DexText_Terminator5, DexText_None},
{DexText_Terminator5, gTypeNames[TYPE_NORMAL]},
@@ -1170,17 +1180,17 @@ static const struct UnknownStruct2 gUnknown_083B59C8[] =
{DexText_Terminator5, gTypeNames[TYPE_DARK]},
{NULL, NULL},
};
-static const u8 gUnknown_083B5A60[] = {0, 1};
-static const u8 gUnknown_083B5A62[] = {0, 1, 2, 3, 4, 5};
-static const u8 gUnknown_083B5A68[] = {0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17};
-static const struct UnknownStruct1 gUnknown_083B5A7C[] =
-{
- {gUnknown_083B5910, 6, 7, 10},
- {gUnknown_083B5968, 8, 9, 11},
- {gUnknown_083B59C8, 10, 11, 18},
- {gUnknown_083B59C8, 12, 13, 18},
- {gUnknown_083B58D8, 4, 5, 6},
- {gUnknown_083B58C0, 2, 3, 2},
+static const u8 sPokedexModes[] = {0, 1};
+static const u8 sOrderOptions[] = {0, 1, 2, 3, 4, 5};
+static const u8 sDexSearchTypeIds[] = {0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17};
+static const struct SearchOption sSearchOptions[] =
+{
+ { sDexSearchNameOptions, 6, 7, 10},
+ { sDexSearchColorOptions, 8, 9, 11},
+ { sDexSearchTypeOptions, 10, 11, 18},
+ { sDexSearchTypeOptions, 12, 13, 18},
+ { sDexOrderOptions, 4, 5, 6},
+ { sDexModeOptions, 2, 3, 2},
};
static const u8 gUnknown_083B5AAC[] = _("{STR_VAR_1}{CLEAR_TO 43}");
static const u8 gUnknown_083B5AB2[] = _("{STR_VAR_1}{CLEAR_TO 96}");
@@ -1188,105 +1198,105 @@ static const u8 gUnknown_083B5AB2[] = _("{STR_VAR_1}{CLEAR_TO 96}");
static void MainCB(void);
static void Task_PokedexShowMainScreen(u8 taskId);
static void Task_PokedexMainScreen(u8 taskId);
-static void sub_808C898(u8 taskId);
+static void Task_WaitForScroll(u8 taskId);
static void Task_PokedexMainScreenMenu(u8 taskId);
-static void sub_808CA64(u8 taskId);
-static void sub_808CAE4(u8 taskId);
-static void sub_808CB8C(u8 taskId);
+static void Task_OpenInfoScreenAfterMonMovement(u8 taskId);
+static void Task_WaitForExitInfoScreen(u8 taskId);
+static void Task_WaitForExitSearch(u8 taskId);
static void Task_ClosePokedex(u8 taskId);
-static void sub_808CCC4(u8 taskId);
+static void Task_OpenSearchResults(u8 taskId);
static void Task_PokedexResultsScreen(u8 taskId);
-static void sub_808CEF8(u8 taskId);
+static void Task_WaitForSearchResultsScroll(u8 taskId);
static void Task_PokedexResultsScreenMenu(u8 taskId);
-static void sub_808D118(u8 taskId);
-static void sub_808D198(u8 taskId);
+static void Task_OpenSearchResultsInfoScreenAfterMonMovement(u8 taskId);
+static void Task_WaitForExitSearchResultsInfoScreen(u8 taskId);
static void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId);
static void Task_PokedexResultsScreenExitPokedex(u8 taskId);
-static bool8 sub_808D344(u8 a);
-static void sub_808D640(void);
+static bool8 LoadPokedexListPage(u8 a);
+static void LoadPokedexBgPalette(void);
static void SortPokedex(u8 dexMode, u8 sortMode);
-static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d);
-static void sub_808DF88(u16 a, u8 b, u8 c, u16 d);
-static u8 sub_808DFE4(u16 num, u8 b, u8 c);
-static void sub_808E090(u8 a, u8 b, u16 c);
-static void sub_808E0CC(u16 a, u16 b);
-static bool8 sub_808E208(u8 a, u8 b, u8 c);
-static u16 sub_808E48C(u16 a, u16 b);
-static void sub_808E6BC(void);
-static u8 sub_808E71C(void);
-static u8 sub_808E82C(void);
-static u16 sub_808E888(u16 a1);
-static u32 sub_808E8C8(u16 a, s16 b, s16 c);
-static void sub_808E978(u8 a);
-static void sub_808EDB8(struct Sprite *sprite);
-static void sub_808EE28(struct Sprite *sprite);
-static u8 sub_808F210(struct PokedexListItem *, u8);
-static bool8 sub_808F250(u8 taskId);
+static void CreateMonDexNum(u16 entryNum, u8 x, u8 y, u16 screenBase);
+static void CreateCaughtBall(u16 owned, u8 x, u8 y, u16 screenBase);
+static u8 CreateMonName(u16 num, u8 b, u8 c);
+static void ClearMonListEntry(u8 x, u8 y, u16 screenBase);
+static void CreateMonSpritesAtPos(u16 selectedMon, u16 b);
+static bool8 UpdateDexListScroll(u8 direction, u8 monMoveIncrement, u8 scrollTimerMax);
+static u16 TryDoPokedexScroll(u16 a, u16 b);
+static void UpdateSelectedMonSpriteId(void);
+static u8 TryDoInfoScreenScroll(void);
+static u8 ClearMonSprites(void);
+static u16 GetPokemonSpriteToDisplay(u16 species);
+static u32 CreatePokedexMonSprite(u16 num, s16 x, s16 y);
+static void CreateInterfaceSprites(u8 a);
+static void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite);
+static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite);
+static u8 LoadInfoScreen(struct PokedexListItem *, u8);
+static bool8 IsInfoScreenScrolling(u8 taskId);
static u8 sub_808F284(struct PokedexListItem *, u8);
static void Task_InitPageScreenMultistep(u8 taskId);
static void Task_PageScreenProcessInput(u8 taskId);
-static void sub_808F888(u8 taskId);
+static void Task_LoadInfoScreenWaitForFade(u8 taskId);
static void Task_ClosePageScreen(u8 taskId);
static void Task_InitAreaScreenMultistep(u8 taskId);
static void Task_AreaScreenProcessInput(u8 taskId);
static void sub_808FA00(u8 taskId);
static void Task_InitCryScreenMultistep(u8 taskId);
static void Task_CryScreenProcessInput(u8 taskId);
-static void sub_808FFBC(u8 taskId);
-static void sub_8090040(u8 a);
+static void Task_SwitchScreensFromCryScreen(u8 taskId);
+static void LoadPlayArrowPalette(u8 cryPlaying);
static void Task_InitSizeScreenMultistep(u8 taskId);
static void Task_SizeScreenProcessInput(u8 taskId);
-static void sub_8090498(u8 taskId);
-static void sub_80904FC(u16 a);
-static void sub_8090540(u16 a);
-static void sub_8090584(u8 a, u16 b);
+static void Task_SwitchScreensFromSizeScreen(u8 taskId);
+static void LoadScreenSelectBarMain(u16 screenBase);
+static void LoadScreenSelectBarSubmenu(u16 screenBase);
+static void HighlightScreenSelectBarItem(u8 a, u16 b);
static void sub_8090644(u8 a, u16 b);
static void sub_8090750(u8);
static void sub_8090A3C(u8);
static void sub_8090B8C(u8);
static void sub_8090C28(struct Sprite *);
static void sub_8090C68(void);
-static void sub_8091060(u16);
-static void sub_8091154(u16 order, u8, u8);
-static u8 sub_80911C8(u16 num, u8, u8);
-static u8 sub_8091260(u16 num, u8, u8, u8);
-static void sub_8091304(const u8 *name, u8, u8);
+static void ResetOtherVideoRegisters(u16);
+static void PrintEntryScreenDexNum(u16 order, u8, u8);
+static u8 PrintEntryScreenSpeciesName(u16 num, u8, u8);
+static u8 PrintCryScreenSpeciesName(u16 num, u8, u8, u8);
+static void UnusedPrintMonName(const u8 *name, u8, u8);
static void sub_8091458(u16 height, u8 i, u8 i1);
static void sub_8091564(u16 weight, u8 i, u8 i1);
-void sub_8091738(u16, u16, u16);
-static void sub_80917CC(u16 i, u16 i1);
-static u16 sub_8091818(u8, u16, u16, u16);
-u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d);
-static void sub_8091E54(u8);
-static void sub_809204C(u8);
-static void sub_809207C(u8);
-static void sub_809217C(u8);
-static void sub_80921B0(u8);
-static void sub_80923FC(u8);
-static void sub_80924A4(u8);
-static void sub_8092508(u8);
-static void sub_80925CC(u8);
-static void sub_8092644(u8);
-static void sub_80927B8(u8);
-static void sub_80927F0(u8);
-static void sub_8092AB0(u8);
-static void sub_8092AD4(u8, u8);
-static void sub_8092B68(u8);
-static void sub_8092C8C(u8);
-static void sub_8092D78(u8);
-static u8 sub_8092E10(u8, u8);
-static void sub_8092EB0(u8);
-static void sub_809308C(u8);
+void PrintFootprint(u16 num, u16 b, u16 c);
+static void sub_80C0DC0(u16 a, u16 b);
+static u16 GetNextPosition(u8 direction, u16 position, u16 min, u16 max);
+u16 CreateMonSpriteFromNationalDexNumber(u16 num, s16 x, s16 y, u16 paletteNum);
+static void Task_LoadSearchMenu(u8 taskId);
+static void Task_SwitchToSearchMenuTopBar(u8 taskId);
+static void Task_HandleSearchTopBarInput(u8 taskId);
+static void Task_SwitchToSearchMenu(u8 taskId);
+static void Task_HandleSearchMenuInput(u8 taskId);
+static void Task_StartPokedexSearch(u8 taskId);
+static void Task_WaitAndCompleteSearch(u8 taskId);
+static void Task_SearchCompleteWaitForInput(u8 taskId);
+static void Task_SelectSearchMenuItem(u8 taskId);
+static void Task_HandleSearchParameterInput(u8 taskId);
+static void Task_ExitSearch(u8 taskId);
+static void Task_ExitSearchWaitForFade(u8 taskId);
+static void HighlightSelectedSearchTopBarItem(u8 topBarItem);
+static void HighlightSelectedSearchMenuItem(u8 topBarItem, u8 menuItem);
+static void PrintSelectedSearchParameters(u8 taskId);
+static void DrawOrEraseSearchParameterBox(bool8 erase);
+static void PrintSearchParameterText(u8 taskId);
+static u8 GetSearchModeSelection(u8 taskId, u8 b);
+static void SetDefaultSearchModeAndOrder(u8 taskId);
+static void CreateSearchParameterScrollArrows(u8 taskId);
void ResetPokedex(void)
{
u16 i;
- gUnknown_0202FFB8 = 0;
- gUnknown_0202FFBA = 0x40;
- gUnknown_03005CE8 = 0;
- gSaveBlock2.pokedex.unknown1 = 0;
+ sLastSelectedPokemon = 0;
+ sPokeBallRotation = 0x40;
+ gUnusedPokedexU8 = 0;
+ gSaveBlock2.pokedex.mode = 0;
gSaveBlock2.pokedex.order = 0;
gSaveBlock2.pokedex.nationalMagic = 0;
gSaveBlock2.pokedex.unknown2 = 0;
@@ -1294,7 +1304,7 @@ void ResetPokedex(void)
gSaveBlock2.pokedex.spindaPersonality = 0;
gSaveBlock2.pokedex.unknown3 = 0;
DisableNationalPokedex();
- for (i = 0; i <= 51; i++)
+ for (i = 0; i < DEX_FLAGS_NO; i++)
{
gSaveBlock2.pokedex.owned[i] = 0;
gSaveBlock2.pokedex.seen[i] = 0;
@@ -1303,13 +1313,13 @@ void ResetPokedex(void)
}
}
-void sub_808C0A0(void)
+void ResetPokedexScrollPositions(void)
{
- gUnknown_0202FFB8 = 0;
- gUnknown_0202FFBA = 0x40;
+ sLastSelectedPokemon = 0;
+ sPokeBallRotation = 0x40;
}
-static void sub_808C0B8(void)
+static void VBlankCB_Pokedex(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -1322,42 +1332,42 @@ static void ClearPokedexView(struct PokedexView *pokedexView)
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
- pokedexView->unk0[i].dexNum |= 0xFFFF;
- pokedexView->unk0[i].seen = 0;
- pokedexView->unk0[i].owned = 0;
+ pokedexView->pokedexList[i].dexNum |= 0xFFFF;
+ pokedexView->pokedexList[i].seen = 0;
+ pokedexView->pokedexList[i].owned = 0;
}
- pokedexView->monData.dexNum = 0;
- pokedexView->monData.seen = 0;
- pokedexView->monData.owned = 0;
+ pokedexView->pokedexList[NATIONAL_DEX_COUNT].dexNum = 0;
+ pokedexView->pokedexList[NATIONAL_DEX_COUNT].seen = 0;
+ pokedexView->pokedexList[NATIONAL_DEX_COUNT].owned = 0;
pokedexView->pokemonListCount = 0;
pokedexView->selectedPokemon = 0;
- pokedexView->unk610 = 0;
+ pokedexView->selectedPokemonBackup = 0;
pokedexView->dexMode = 0;
- pokedexView->unk614 = 0;
+ pokedexView->dexModeBackup = 0;
pokedexView->dexOrder = 0;
- pokedexView->unk618 = 0;
- pokedexView->unk61A = 0;
- pokedexView->unk61C = 0;
+ pokedexView->dexOrderBackup = 0;
+ pokedexView->seenCount = 0;
+ pokedexView->ownCount = 0;
for (i = 0; i < 4; i++)
- pokedexView->unk61E[i] |= 0xFFFF;
- pokedexView->unk628 = 0;
- pokedexView->unk62A = 0;
- pokedexView->unk62C = 0;
- pokedexView->unk62D = 0;
- pokedexView->unk62E = 0;
- pokedexView->unk62F = 0;
- pokedexView->unk630 = 0;
- pokedexView->unk632 = 0;
- pokedexView->unk634 = 0;
- pokedexView->unk636 = 0;
- pokedexView->unk638 = 0;
+ pokedexView->monSpriteIds[i] |= 0xFFFF;
+ pokedexView->pokeBallRotationStep = 0;
+ pokedexView->pokeBallRotationBackup = 0;
+ pokedexView->pokeBallRotation = 0;
+ pokedexView->initialVOffset = 0;
+ pokedexView->scrollTimer = 0;
+ pokedexView->scrollDirection = 0;
+ pokedexView->listVOffset = 0;
+ pokedexView->listMovingVOffset = 0;
+ pokedexView->scrollMonIncrement = 0;
+ pokedexView->maxScrollTimer = 0;
+ pokedexView->scrollSpeed = 0;
for (i = 0; i < 4; i++)
pokedexView->unk63A[i] = 0;
- pokedexView->unk64A = 0;
- pokedexView->unk64B = 0;
- pokedexView->unk64C_1 = 0;
+ pokedexView->currentPage = 0;
+ pokedexView->currentPageBackup = 0;
+ pokedexView->isSearchResults = FALSE;
pokedexView->selectedScreen = 0;
- pokedexView->unk64F = 0;
+ pokedexView->screenSwitchState = 0;
pokedexView->menuIsOpen = 0;
pokedexView->menuCursorPos = 0;
pokedexView->menuY = 0;
@@ -1374,7 +1384,7 @@ void CB2_InitPokedex(void)
case 0:
default:
SetVBlankCallback(NULL);
- sub_8091060(0);
+ ResetOtherVideoRegisters(0);
DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000);
DmaClear32(3, OAM, OAM_SIZE);
DmaClear16(3, PLTT, PLTT_SIZE);
@@ -1410,25 +1420,25 @@ void CB2_InitPokedex(void)
}
ClearPokedexView(gPokedexView);
CreateTask(Task_PokedexShowMainScreen, 0);
- gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1;
+ gPokedexView->dexMode = gSaveBlock2.pokedex.mode;
if (!IsNationalPokedexEnabled())
gPokedexView->dexMode = DEX_MODE_HOENN;
gPokedexView->dexOrder = gSaveBlock2.pokedex.order;
- gPokedexView->selectedPokemon = gUnknown_0202FFB8;
- gPokedexView->unk62C = gUnknown_0202FFBA;
+ gPokedexView->selectedPokemon = sLastSelectedPokemon;
+ gPokedexView->pokeBallRotation = sPokeBallRotation;
gPokedexView->selectedScreen = PAGE_SCREEN;
gPokedexView->descriptionPageNum = 0;
if (!IsNationalPokedexEnabled())
{
- gPokedexView->unk61A = GetHoennPokedexCount(0);
- gPokedexView->unk61C = GetHoennPokedexCount(1);
+ gPokedexView->seenCount = GetHoennPokedexCount(0);
+ gPokedexView->ownCount = GetHoennPokedexCount(1);
}
else
{
- gPokedexView->unk61A = GetNationalPokedexCount(0);
- gPokedexView->unk61C = GetNationalPokedexCount(1);
+ gPokedexView->seenCount = GetNationalPokedexCount(0);
+ gPokedexView->ownCount = GetNationalPokedexCount(1);
}
- gPokedexView->unk62D = 8;
+ gPokedexView->initialVOffset = 8;
gMain.state++;
break;
case 3:
@@ -1437,10 +1447,10 @@ void CB2_InitPokedex(void)
savedIme = REG_IME;
REG_IME = 0;
- REG_IE |= 1;
+ REG_IE |= INTR_FLAG_VBLANK;
REG_IME = savedIme;
- REG_DISPSTAT |= 8;
- SetVBlankCallback(sub_808C0B8);
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ SetVBlankCallback(VBlankCB_Pokedex);
SetMainCallback2(MainCB);
SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80);
@@ -1449,27 +1459,28 @@ void CB2_InitPokedex(void)
}
}
+UNUSED
u8 unref_sub_808C540(void (*func)(u8))
{
u16 savedIme;
u8 taskId;
SetVBlankCallback(NULL);
- sub_8091060(0x200);
+ ResetOtherVideoRegisters(0x200);
ScanlineEffect_Stop();
ResetTasks();
ResetPaletteFade();
savedIme = REG_IME;
REG_IME = 0;
- REG_IE |= 1;
+ REG_IE |= INTR_FLAG_VBLANK;
REG_IME = savedIme;
- REG_DISPSTAT |= 0x8;
- SetVBlankCallback(sub_808C0B8);
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ SetVBlankCallback(VBlankCB_Pokedex);
SetMainCallback2(MainCB);
- if (!gPokedexView->unk64B)
- taskId = CreateTask(sub_808CAE4, 0);
+ if (!gPokedexView->currentPageBackup)
+ taskId = CreateTask(Task_WaitForExitInfoScreen, 0);
else
- taskId = CreateTask(sub_808D198, 0);
+ taskId = CreateTask(Task_WaitForExitSearchResultsInfoScreen, 0);
gTasks[taskId].data[0] = CreateTask(func, 0);
return gTasks[taskId].data[0];
}
@@ -1484,8 +1495,8 @@ static void MainCB(void)
static void Task_PokedexShowMainScreen(u8 taskId)
{
- gPokedexView->unk64C_1 = 0;
- if (sub_808D344(0))
+ gPokedexView->isSearchResults = FALSE;
+ if (LoadPokedexListPage(0))
gTasks[taskId].func = Task_PokedexMainScreen;
}
@@ -1499,14 +1510,14 @@ void Task_PokedexMainScreen(u8 taskId)
gPokedexView->menuY -= 8;
else
{
- if ((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && gPokedexView->pokedexList[gPokedexView->selectedPokemon].seen)
{
- sub_808E6BC();
+ UpdateSelectedMonSpriteId();
BeginNormalPaletteFade(
~(1 << (gSprites[gPokedexView->selectedMonSpriteId].oam.paletteNum + 16)),
0, 0, 16, RGB(0, 0, 0));
- gSprites[gPokedexView->selectedMonSpriteId].callback = sub_808EDB8;
- gTasks[taskId].func = sub_808CA64;
+ gSprites[gPokedexView->selectedMonSpriteId].callback = SpriteCB_MoveMonForInfoScreen;
+ gTasks[taskId].func = Task_OpenInfoScreenAfterMonMovement;
PlaySE(SE_PIN);
}
else if (gMain.newKeys & START_BUTTON)
@@ -1522,13 +1533,13 @@ void Task_PokedexMainScreen(u8 taskId)
{
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].data[0] = sub_8091E3C();
- gPokedexView->unk64F = 0;
- gPokedexView->unk62A = gPokedexView->unk62C;
- gPokedexView->unk610 = gPokedexView->selectedPokemon;
- gPokedexView->unk614 = gPokedexView->dexMode;
- gPokedexView->unk618 = gPokedexView->dexOrder;
- gTasks[taskId].func = sub_808CB8C;
+ gTasks[taskId].data[0] = LoadSearchMenu();
+ gPokedexView->screenSwitchState = 0;
+ gPokedexView->pokeBallRotationBackup = gPokedexView->pokeBallRotation;
+ gPokedexView->selectedPokemonBackup = gPokedexView->selectedPokemon;
+ gPokedexView->dexModeBackup = gPokedexView->dexMode;
+ gPokedexView->dexOrderBackup = gPokedexView->dexOrder;
+ gTasks[taskId].func = Task_WaitForExitSearch;
PlaySE(SE_PC_LOGIN);
}
else if (gMain.newKeys & B_BUTTON)
@@ -1540,16 +1551,18 @@ void Task_PokedexMainScreen(u8 taskId)
else
{
//Handle D-pad
- gPokedexView->selectedPokemon = sub_808E48C(gPokedexView->selectedPokemon, 0xE);
- if (gPokedexView->unk62E)
- gTasks[taskId].func = sub_808C898;
+ gPokedexView->selectedPokemon = TryDoPokedexScroll(gPokedexView->selectedPokemon, 0xE);
+ if (gPokedexView->scrollTimer)
+ gTasks[taskId].func = Task_WaitForScroll;
}
}
}
-static void sub_808C898(u8 taskId)
+static void Task_WaitForScroll(u8 taskId)
{
- if (sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
+ if (UpdateDexListScroll(gPokedexView->scrollDirection,
+ gPokedexView->scrollMonIncrement,
+ gPokedexView->maxScrollTimer))
gTasks[taskId].func = Task_PokedexMainScreen;
}
@@ -1573,16 +1586,16 @@ static void Task_PokedexMainScreenMenu(u8 taskId)
break;
case 1: //LIST TOP
gPokedexView->selectedPokemon = 0;
- gPokedexView->unk62C = 0x40;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gPokedexView->pokeBallRotation = 0x40;
+ ClearMonSprites();
+ CreateMonSpritesAtPos(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 2: //LIST BOTTOM
gPokedexView->selectedPokemon = gPokedexView->pokemonListCount - 1;
- gPokedexView->unk62C = gPokedexView->pokemonListCount * 16 + 0x30;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gPokedexView->pokeBallRotation = gPokedexView->pokemonListCount * 16 + 0x30;
+ ClearMonSprites();
+ CreateMonSpritesAtPos(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 3: //CLOSE POKEDEX
@@ -1613,52 +1626,52 @@ static void Task_PokedexMainScreenMenu(u8 taskId)
}
}
-static void sub_808CA64(u8 taskId)
+static void Task_OpenInfoScreenAfterMonMovement(u8 taskId)
{
- if (gSprites[gPokedexView->selectedMonSpriteId].pos1.x == 48
- && gSprites[gPokedexView->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[gPokedexView->selectedMonSpriteId].x == 48
+ && gSprites[gPokedexView->selectedMonSpriteId].y == 56)
{
- gPokedexView->unk64B = gPokedexView->unk64A;
- gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->selectedMonSpriteId);
- gTasks[taskId].func = sub_808CAE4;
+ gPokedexView->currentPageBackup = gPokedexView->currentPage;
+ gTasks[taskId].data[0] = LoadInfoScreen(&gPokedexView->pokedexList[gPokedexView->selectedPokemon], gPokedexView->selectedMonSpriteId);
+ gTasks[taskId].func = Task_WaitForExitInfoScreen;
}
}
-static void sub_808CAE4(u8 taskId)
+static void Task_WaitForExitInfoScreen(u8 taskId)
{
if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if (gPokedexView->unk64A == 1 && !sub_808F250(gTasks[taskId].data[0]) && sub_808E71C())
- sub_808F284(&gPokedexView->unk0[gPokedexView->selectedPokemon], gTasks[taskId].data[0]);
+ if (gPokedexView->currentPage == 1 && !IsInfoScreenScrolling(gTasks[taskId].data[0]) && TryDoInfoScreenScroll())
+ sub_808F284(&gPokedexView->pokedexList[gPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
else
{
- gUnknown_0202FFB8 = gPokedexView->selectedPokemon;
- gUnknown_0202FFBA = gPokedexView->unk62C;
+ sLastSelectedPokemon = gPokedexView->selectedPokemon;
+ sPokeBallRotation = gPokedexView->pokeBallRotation;
gTasks[taskId].func = Task_PokedexShowMainScreen;
}
}
-static void sub_808CB8C(u8 taskId)
+static void Task_WaitForExitSearch(u8 taskId)
{
bool8 isActive = gTasks[gTasks[taskId].data[0]].isActive;
if (!isActive)
{
- if (gPokedexView->unk64F != 0)
+ if (gPokedexView->screenSwitchState != 0)
{
gPokedexView->selectedPokemon = isActive;
- gPokedexView->unk62C = 0x40;
- gTasks[taskId].func = sub_808CCC4;
+ gPokedexView->pokeBallRotation = 0x40;
+ gTasks[taskId].func = Task_OpenSearchResults;
}
else
{
- gPokedexView->unk62C = gPokedexView->unk62A;
- gPokedexView->selectedPokemon = gPokedexView->unk610;
- gPokedexView->dexMode = gPokedexView->unk614;
+ gPokedexView->pokeBallRotation = gPokedexView->pokeBallRotationBackup;
+ gPokedexView->selectedPokemon = gPokedexView->selectedPokemonBackup;
+ gPokedexView->dexMode = gPokedexView->dexModeBackup;
if (!IsNationalPokedexEnabled())
gPokedexView->dexMode = DEX_MODE_HOENN;
- gPokedexView->dexOrder = gPokedexView->unk618;
+ gPokedexView->dexOrder = gPokedexView->dexOrderBackup;
gTasks[taskId].func = Task_PokedexShowMainScreen;
}
}
@@ -1668,9 +1681,9 @@ static void Task_ClosePokedex(u8 taskId)
{
if (!gPaletteFade.active)
{
- gSaveBlock2.pokedex.unknown1 = gPokedexView->dexMode;
+ gSaveBlock2.pokedex.mode = gPokedexView->dexMode;
if (!IsNationalPokedexEnabled())
- gSaveBlock2.pokedex.unknown1 = 0;
+ gSaveBlock2.pokedex.mode = 0;
gSaveBlock2.pokedex.order = gPokedexView->dexOrder;
DestroyTask(taskId);
SetMainCallback2(c2_exit_to_overworld_1_sub_8080DEC);
@@ -1678,10 +1691,10 @@ static void Task_ClosePokedex(u8 taskId)
}
}
-static void sub_808CCC4(u8 taskId)
+static void Task_OpenSearchResults(u8 taskId)
{
- gPokedexView->unk64C_1 = 1;
- if (sub_808D344(3))
+ gPokedexView->isSearchResults = TRUE;
+ if (LoadPokedexListPage(3))
gTasks[taskId].func = Task_PokedexResultsScreen;
}
@@ -1695,15 +1708,15 @@ static void Task_PokedexResultsScreen(u8 taskId)
}
else
{
- if ((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && gPokedexView->pokedexList[gPokedexView->selectedPokemon].seen)
{
u32 excludedPalettes;
- sub_808E6BC();
+ UpdateSelectedMonSpriteId();
excludedPalettes = (1 << (gSprites[gPokedexView->selectedMonSpriteId].oam.paletteNum + 16));
- gSprites[gPokedexView->selectedMonSpriteId].callback = sub_808EDB8;
+ gSprites[gPokedexView->selectedMonSpriteId].callback = SpriteCB_MoveMonForInfoScreen;
BeginNormalPaletteFade(~excludedPalettes, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].func = sub_808D118;
+ gTasks[taskId].func = Task_OpenSearchResultsInfoScreenAfterMonMovement;
PlaySE(SE_PIN);
}
else if (gMain.newKeys & START_BUTTON)
@@ -1717,9 +1730,9 @@ static void Task_PokedexResultsScreen(u8 taskId)
else if (gMain.newKeys & SELECT_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].data[0] = sub_8091E3C();
- gPokedexView->unk64F = 0;
- gTasks[taskId].func = sub_808CB8C;
+ gTasks[taskId].data[0] = LoadSearchMenu();
+ gPokedexView->screenSwitchState = 0;
+ gTasks[taskId].func = Task_WaitForExitSearch;
PlaySE(SE_PC_LOGIN);
}
else if (gMain.newKeys & B_BUTTON)
@@ -1731,16 +1744,18 @@ static void Task_PokedexResultsScreen(u8 taskId)
else
{
//Handle D-pad
- gPokedexView->selectedPokemon = sub_808E48C(gPokedexView->selectedPokemon, 0xE);
- if (gPokedexView->unk62E)
- gTasks[taskId].func = sub_808CEF8;
+ gPokedexView->selectedPokemon = TryDoPokedexScroll(gPokedexView->selectedPokemon, 0xE);
+ if (gPokedexView->scrollTimer)
+ gTasks[taskId].func = Task_WaitForSearchResultsScroll;
}
}
}
-static void sub_808CEF8(u8 taskId)
+static void Task_WaitForSearchResultsScroll(u8 taskId)
{
- if (sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
+ if (UpdateDexListScroll(gPokedexView->scrollDirection,
+ gPokedexView->scrollMonIncrement,
+ gPokedexView->maxScrollTimer))
gTasks[taskId].func = Task_PokedexResultsScreen;
}
@@ -1764,16 +1779,16 @@ static void Task_PokedexResultsScreenMenu(u8 taskId)
break;
case 1: //LIST TOP
gPokedexView->selectedPokemon = 0;
- gPokedexView->unk62C = 0x40;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gPokedexView->pokeBallRotation = 0x40;
+ ClearMonSprites();
+ CreateMonSpritesAtPos(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 2: //LIST BOTTOM
gPokedexView->selectedPokemon = gPokedexView->pokemonListCount - 1;
- gPokedexView->unk62C = gPokedexView->pokemonListCount * 16 + 0x30;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gPokedexView->pokeBallRotation = gPokedexView->pokemonListCount * 16 + 0x30;
+ ClearMonSprites();
+ CreateMonSpritesAtPos(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 3: //BACK TO POKEDEX
@@ -1809,27 +1824,27 @@ static void Task_PokedexResultsScreenMenu(u8 taskId)
}
}
-static void sub_808D118(u8 taskId)
+static void Task_OpenSearchResultsInfoScreenAfterMonMovement(u8 taskId)
{
- if (gSprites[gPokedexView->selectedMonSpriteId].pos1.x == 48
- && gSprites[gPokedexView->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[gPokedexView->selectedMonSpriteId].x == 48
+ && gSprites[gPokedexView->selectedMonSpriteId].y == 56)
{
- gPokedexView->unk64B = gPokedexView->unk64A;
- gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->selectedMonSpriteId);
- gTasks[taskId].func = sub_808D198;
+ gPokedexView->currentPageBackup = gPokedexView->currentPage;
+ gTasks[taskId].data[0] = LoadInfoScreen(&gPokedexView->pokedexList[gPokedexView->selectedPokemon], gPokedexView->selectedMonSpriteId);
+ gTasks[taskId].func = Task_WaitForExitSearchResultsInfoScreen;
}
}
-static void sub_808D198(u8 taskId)
+static void Task_WaitForExitSearchResultsInfoScreen(u8 taskId)
{
if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if (gPokedexView->unk64A == 1 && !sub_808F250(gTasks[taskId].data[0]) && sub_808E71C())
- sub_808F284(&gPokedexView->unk0[gPokedexView->selectedPokemon], gTasks[taskId].data[0]);
+ if (gPokedexView->currentPage == 1 && !IsInfoScreenScrolling(gTasks[taskId].data[0]) && TryDoInfoScreenScroll())
+ sub_808F284(&gPokedexView->pokedexList[gPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
else
{
- gTasks[taskId].func = sub_808CCC4;
+ gTasks[taskId].func = Task_OpenSearchResults;
}
}
@@ -1837,12 +1852,12 @@ static void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId)
{
if (!gPaletteFade.active)
{
- gPokedexView->unk62C = gPokedexView->unk62A;
- gPokedexView->selectedPokemon = gPokedexView->unk610;
- gPokedexView->dexMode = gPokedexView->unk614;
+ gPokedexView->pokeBallRotation = gPokedexView->pokeBallRotationBackup;
+ gPokedexView->selectedPokemon = gPokedexView->selectedPokemonBackup;
+ gPokedexView->dexMode = gPokedexView->dexModeBackup;
if (!IsNationalPokedexEnabled())
gPokedexView->dexMode = DEX_MODE_HOENN;
- gPokedexView->dexOrder = gPokedexView->unk618;
+ gPokedexView->dexOrder = gPokedexView->dexOrderBackup;
gTasks[taskId].func = Task_PokedexShowMainScreen;
}
}
@@ -1851,17 +1866,17 @@ static void Task_PokedexResultsScreenExitPokedex(u8 taskId)
{
if (!gPaletteFade.active)
{
- gPokedexView->unk62C = gPokedexView->unk62A;
- gPokedexView->selectedPokemon = gPokedexView->unk610;
- gPokedexView->dexMode = gPokedexView->unk614;
+ gPokedexView->pokeBallRotation = gPokedexView->pokeBallRotationBackup;
+ gPokedexView->selectedPokemon = gPokedexView->selectedPokemonBackup;
+ gPokedexView->dexMode = gPokedexView->dexModeBackup;
if (!IsNationalPokedexEnabled())
gPokedexView->dexMode = DEX_MODE_HOENN;
- gPokedexView->dexOrder = gPokedexView->unk618;
+ gPokedexView->dexOrder = gPokedexView->dexOrderBackup;
gTasks[taskId].func = Task_ClosePokedex;
}
}
-static bool8 sub_808D344(u8 a)
+static bool8 LoadPokedexListPage(u8 a)
{
switch (gMain.state)
{
@@ -1870,32 +1885,32 @@ static bool8 sub_808D344(u8 a)
if (gPaletteFade.active)
return 0;
SetVBlankCallback(NULL);
- gPokedexView->unk64A = a;
- sub_8091060(0);
- REG_BG2VOFS = gPokedexView->unk62D;
+ gPokedexView->currentPage = a;
+ ResetOtherVideoRegisters(0);
+ REG_BG2VOFS = gPokedexView->initialVOffset;
LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM));
LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800));
LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800));
DmaClear16(3, VRAM + 0x6000, 0x500);
if (a == 0)
- LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500));
+ LZ77UnCompVram(gPokedexStartMenuMain_Tilemap, (void *)(VRAM + 0x6500));
else
- LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500));
+ LZ77UnCompVram(gPokedexStartMenuSearchResults_Tilemap, (void *)(VRAM + 0x6500));
ResetPaletteFade();
if (a == 0)
- gPokedexView->unk64C_1 = 0;
+ gPokedexView->isSearchResults = FALSE;
else
- gPokedexView->unk64C_1 = 1;
- sub_808D640();
+ gPokedexView->isSearchResults = TRUE;
+ LoadPokedexBgPalette();
gMain.state = 1;
break;
case 1:
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gUnknown_083A05CC[0]);
- LoadSpritePalettes(gUnknown_083A05DC);
- sub_808E978(a);
+ LoadCompressedObjectPic(&sInterfaceSpriteSheet[0]);
+ LoadSpritePalettes(sInterfaceSpritePalette);
+ CreateInterfaceSprites(a);
gMain.state++;
break;
case 2:
@@ -1907,14 +1922,14 @@ static bool8 sub_808D344(u8 a)
case 3:
if (a == 0)
SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ CreateMonSpritesAtPos(gPokedexView->selectedPokemon, 0xE);
gPokedexView->menuIsOpen = 0;
gPokedexView->menuY = 0;
gMain.state++;
break;
case 4:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- SetVBlankCallback(sub_808C0B8);
+ SetVBlankCallback(VBlankCB_Pokedex);
gMain.state++;
break;
case 5:
@@ -1944,9 +1959,9 @@ static bool8 sub_808D344(u8 a)
return FALSE;
}
-static void sub_808D640(void)
+static void LoadPokedexBgPalette(void)
{
- if (gPokedexView->unk64C_1)
+ if (gPokedexView->isSearchResults)
LoadPalette(sPokedexSearchPalette + 1, 1, sizeof(sPokedexSearchPalette) - sizeof(u16));
else if (!IsNationalPokedexEnabled())
LoadPalette(gPokedexMenu_Pal + 1, 1, 0xBE);
@@ -1990,10 +2005,10 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
for (i = 0; i < vars[0]; i++)
{
vars[2] = HoennToNationalOrder(i + 1);
- gPokedexView->unk0[i].dexNum = vars[2];
- gPokedexView->unk0[i].seen = GetSetPokedexFlag(vars[2], 0);
- gPokedexView->unk0[i].owned = GetSetPokedexFlag(vars[2], 1);
- if (gPokedexView->unk0[i].seen)
+ gPokedexView->pokedexList[i].dexNum = vars[2];
+ gPokedexView->pokedexList[i].seen = GetSetPokedexFlag(vars[2], 0);
+ gPokedexView->pokedexList[i].owned = GetSetPokedexFlag(vars[2], 1);
+ if (gPokedexView->pokedexList[i].seen)
gPokedexView->pokemonListCount = i + 1;
}
}
@@ -2006,10 +2021,10 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
r10 = 1;
if (r10)
{
- gPokedexView->unk0[r5].dexNum = vars[2];
- gPokedexView->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0);
- gPokedexView->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1);
- if (gPokedexView->unk0[r5].seen)
+ gPokedexView->pokedexList[r5].dexNum = vars[2];
+ gPokedexView->pokedexList[r5].seen = GetSetPokedexFlag(vars[2], 0);
+ gPokedexView->pokedexList[r5].owned = GetSetPokedexFlag(vars[2], 1);
+ if (gPokedexView->pokedexList[r5].seen)
gPokedexView->pokemonListCount = r5 + 1;
r5++;
}
@@ -2023,9 +2038,9 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0))
{
- gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1;
- gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].dexNum = vars[2];
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].seen = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
gPokedexView->pokemonListCount++;
}
}
@@ -2037,9 +2052,9 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1;
- gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].dexNum = vars[2];
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].seen = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].owned = 1;
gPokedexView->pokemonListCount++;
}
}
@@ -2051,9 +2066,9 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1;
- gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].dexNum = vars[2];
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].seen = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].owned = 1;
gPokedexView->pokemonListCount++;
}
}
@@ -2065,9 +2080,9 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1;
- gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].dexNum = vars[2];
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].seen = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].owned = 1;
gPokedexView->pokemonListCount++;
}
}
@@ -2079,9 +2094,9 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1;
- gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].dexNum = vars[2];
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].seen = 1;
+ gPokedexView->pokedexList[gPokedexView->pokemonListCount].owned = 1;
gPokedexView->pokemonListCount++;
}
}
@@ -2090,103 +2105,104 @@ static void SortPokedex(u8 dexMode, u8 sortMode)
for (i = gPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
- gPokedexView->unk0[i].dexNum |= 0xFFFF;
- gPokedexView->unk0[i].seen = 0;
- gPokedexView->unk0[i].owned = 0;
+ gPokedexView->pokedexList[i].dexNum |= 0xFFFF;
+ gPokedexView->pokedexList[i].seen = 0;
+ gPokedexView->pokedexList[i].owned = 0;
}
}
-static void sub_808DBE8(u8 a, u16 b, u16 c)
+static void CreateMonListEntry(u8 position, u16 b, u16 screenBase)
{
- s16 _b;
+ s16 entryNum;
u16 i;
u16 r2;
- switch (a)
+ switch (position)
{
case 0:
default:
- _b = b - 5;
+ entryNum = b - 5;
for (i = 0; i <= 10; i++)
{
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+ if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || gPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
{
- sub_808E090(0x11, i * 2, c);
+ ClearMonListEntry(0x11, i * 2, screenBase);
}
else
{
- sub_808E090(0x11, i * 2, c);
- if (gPokedexView->unk0[_b].seen)
+ ClearMonListEntry(0x11, i * 2, screenBase);
+ if (gPokedexView->pokedexList[entryNum].seen)
{
- sub_808DEB0(_b, 0x12, i * 2, c);
- sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c);
- sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2);
+ CreateMonDexNum(entryNum, 0x12, i * 2, screenBase);
+ CreateCaughtBall(gPokedexView->pokedexList[entryNum].owned, 0x11, i * 2, screenBase);
+ CreateMonName(gPokedexView->pokedexList[entryNum].dexNum, 0x17, i * 2);
}
else
{
- sub_808DEB0(_b, 0x12, i * 2, c);
- sub_808DF88(0, 0x11, i * 2, c);
- sub_808DFE4(0, 0x17, i * 2);
+ CreateMonDexNum(entryNum, 0x12, i * 2, screenBase);
+ CreateCaughtBall(0, 0x11, i * 2, screenBase);
+ CreateMonName(0, 0x17, i * 2);
}
}
- _b++;
+ entryNum++;
}
break;
case 1:
- _b = b - 5;
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+ entryNum = b - 5;
+ if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || gPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
{
- sub_808E090(0x11, gPokedexView->unk630 * 2, c);
+ ClearMonListEntry(0x11, gPokedexView->listVOffset * 2, screenBase);
}
else
{
- sub_808E090(0x11, gPokedexView->unk630 * 2, c);
- if (gPokedexView->unk0[_b].seen)
+ ClearMonListEntry(0x11, gPokedexView->listVOffset * 2, screenBase);
+ if (gPokedexView->pokedexList[entryNum].seen)
{
- sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
- sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c);
- sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2);
+ CreateMonDexNum(entryNum, 0x12, gPokedexView->listVOffset * 2, screenBase);
+ CreateCaughtBall(gPokedexView->pokedexList[entryNum].owned, 0x11, gPokedexView->listVOffset * 2,
+ screenBase);
+ CreateMonName(gPokedexView->pokedexList[entryNum].dexNum, 0x17, gPokedexView->listVOffset * 2);
}
else
{
- sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
- sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c);
- sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2);
+ CreateMonDexNum(entryNum, 0x12, gPokedexView->listVOffset * 2, screenBase);
+ CreateCaughtBall(0, 0x11, gPokedexView->listVOffset * 2, screenBase);
+ CreateMonName(0, 0x17, gPokedexView->listVOffset * 2);
}
}
break;
case 2:
- _b = b + 5;
- r2 = gPokedexView->unk630 + 10;
+ entryNum = b + 5;
+ r2 = gPokedexView->listVOffset + 10;
if (r2 > 15)
r2 -= 16;
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gPokedexView->unk0[_b].dexNum == 0xFFFF)
- sub_808E090(0x11, r2 * 2, c);
+ if (entryNum < 0 || entryNum >= NATIONAL_DEX_COUNT || gPokedexView->pokedexList[entryNum].dexNum == 0xFFFF)
+ ClearMonListEntry(0x11, r2 * 2, screenBase);
else
{
- sub_808E090(0x11, r2 * 2, c);
- if (gPokedexView->unk0[_b].seen)
+ ClearMonListEntry(0x11, r2 * 2, screenBase);
+ if (gPokedexView->pokedexList[entryNum].seen)
{
- sub_808DEB0(_b, 0x12, r2 * 2, c);
- sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c);
- sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2);
+ CreateMonDexNum(entryNum, 0x12, r2 * 2, screenBase);
+ CreateCaughtBall(gPokedexView->pokedexList[entryNum].owned, 0x11, r2 * 2, screenBase);
+ CreateMonName(gPokedexView->pokedexList[entryNum].dexNum, 0x17, r2 * 2);
}
else
{
- sub_808DEB0(_b, 0x12, r2 * 2, c);
- sub_808DF88(0, 0x11, r2 * 2, c);
- sub_808DFE4(0, 0x17, r2 * 2);
+ CreateMonDexNum(entryNum, 0x12, r2 * 2, screenBase);
+ CreateCaughtBall(0, 0x11, r2 * 2, screenBase);
+ CreateMonName(0, 0x17, r2 * 2);
}
}
break;
}
}
-static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d)
+static void CreateMonDexNum(u16 entryNum, u8 x, u8 y, u16 screenBase)
{
u8 text[4];
u16 unk[2];
- u16 r7 = gPokedexView->unk0[a].dexNum;
+ u16 r7 = gPokedexView->pokedexList[entryNum].dexNum;
if (gPokedexView->dexMode == DEX_MODE_HOENN)
r7 = NationalToHoennOrder(r7);
@@ -2196,16 +2212,16 @@ static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d)
text[1] = CHAR_0 + (r7 % 100) / 10;
text[2] = CHAR_0 + (r7 % 100) % 10;
text[3] = EOS;
- *(u16 *)(BG_VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0];
- *(u16 *)(BG_VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1];
- Menu_PrintText(text, b - 15, c);
+ *(u16 *)(BG_VRAM + screenBase * 0x800 + y * 0x40 + x * 2) = unk[0];
+ *(u16 *)(BG_VRAM + screenBase * 0x800 + (y + 1) * 0x40 + x * 2) = unk[1];
+ Menu_PrintText(text, x - 15, y);
}
-static void sub_808DF88(u16 a, u8 b, u8 c, u16 d)
+static void CreateCaughtBall(u16 owned, u8 x, u8 y, u16 screenBase)
{
u16 unk[2];
- if (a)
+ if (owned)
{
unk[0] = 0x3FE;
unk[1] = 0x3FF;
@@ -2215,11 +2231,11 @@ static void sub_808DF88(u16 a, u8 b, u8 c, u16 d)
unk[0] = 0;
unk[1] = 0;
}
- *(u16 *)(BG_VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0];
- *(u16 *)(BG_VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1];
+ *(u16 *)(BG_VRAM + screenBase * 0x800 + y * 0x40 + x * 2) = unk[0];
+ *(u16 *)(BG_VRAM + screenBase * 0x800 + (y + 1) * 0x40 + x * 2) = unk[1];
}
-static u8 sub_808DFE4(u16 num, u8 b, u8 c)
+static u8 CreateMonName(u16 num, u8 b, u8 c)
{
u8 text[POKEMON_NAME_LENGTH + (MODERN ? 1 : 0)];
u8 i;
@@ -2244,136 +2260,136 @@ static u8 sub_808DFE4(u16 num, u8 b, u8 c)
return i;
}
-static void sub_808E090(u8 a, u8 b, u16 c)
+static void ClearMonListEntry(u8 x, u8 y, u16 screenBase)
{
u8 i;
for (i = 0; i < 12; i++)
{
- *(u16 *)(BG_VRAM + c * 0x800 + b * 64 + (a + i) * 2) = 0;
- *(u16 *)(BG_VRAM + c * 0x800 + (b + 1) * 64 + (a + i) * 2) = 0;
+ *(u16 *)(BG_VRAM + screenBase * 0x800 + y * 64 + (x + i) * 2) = 0;
+ *(u16 *)(BG_VRAM + screenBase * 0x800 + (y + 1) * 64 + (x + i) * 2) = 0;
}
}
-static void sub_808E0CC(u16 a, u16 b)
+static void CreateMonSpritesAtPos(u16 selectedMon, u16 b)
{
u8 i;
u16 unk;
u8 spriteId;
for (i = 0; i < 4; i++)
- gPokedexView->unk61E[i] = 0xFFFF;
+ gPokedexView->monSpriteIds[i] = 0xFFFF;
gPokedexView->selectedMonSpriteId = 0xFFFF;
- sub_808DBE8(0, a, b);
- REG_BG2VOFS = gPokedexView->unk62D;
+ CreateMonListEntry(0, selectedMon, b);
+ REG_BG2VOFS = gPokedexView->initialVOffset;
- unk = sub_808E888(a - 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon - 1);
if (unk != 0xFFFF)
{
- spriteId = sub_808E8C8(unk, 0x60, 0x50);
- gSprites[spriteId].callback = sub_808EE28;
+ spriteId = CreatePokedexMonSprite(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite;
gSprites[spriteId].data[5] = -32;
}
- unk = sub_808E888(a);
+ unk = GetPokemonSpriteToDisplay(selectedMon);
if (unk != 0xFFFF)
{
- spriteId = sub_808E8C8(unk, 0x60, 0x50);
- gSprites[spriteId].callback = sub_808EE28;
+ spriteId = CreatePokedexMonSprite(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite;
gSprites[spriteId].data[5] = 0;
}
- unk = sub_808E888(a + 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon + 1);
if (unk != 0xFFFF)
{
- spriteId = sub_808E8C8(unk, 0x60, 0x50);
- gSprites[spriteId].callback = sub_808EE28;
+ spriteId = CreatePokedexMonSprite(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite;
gSprites[spriteId].data[5] = 32;
}
- gPokedexView->unk630 = 0;
- gPokedexView->unk632 = 0;
+ gPokedexView->listVOffset = 0;
+ gPokedexView->listMovingVOffset = 0;
}
-static bool8 sub_808E208(u8 a, u8 b, u8 c)
+static bool8 UpdateDexListScroll(u8 direction, u8 monMoveIncrement, u8 scrollTimerMax)
{
u16 i;
u8 foo;
- if (gPokedexView->unk62E)
+ if (gPokedexView->scrollTimer)
{
- gPokedexView->unk62E--;
- switch (a)
+ gPokedexView->scrollTimer--;
+ switch (direction)
{
case 1:
for (i = 0; i < 4; i++)
{
- if (gPokedexView->unk61E[i] != 0xFFFF)
- gSprites[gPokedexView->unk61E[i]].data[5] += b;
+ if (gPokedexView->monSpriteIds[i] != 0xFFFF)
+ gSprites[gPokedexView->monSpriteIds[i]].data[5] += monMoveIncrement;
}
- foo = 16 * (c - gPokedexView->unk62E) / c;
- REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo;
- gPokedexView->unk62C -= gPokedexView->unk628;
+ foo = 16 * (scrollTimerMax - gPokedexView->scrollTimer) / scrollTimerMax;
+ REG_BG2VOFS = gPokedexView->initialVOffset + gPokedexView->listMovingVOffset * 16 - foo;
+ gPokedexView->pokeBallRotation -= gPokedexView->pokeBallRotationStep;
break;
case 2:
for (i = 0; i < 4; i++)
{
- if (gPokedexView->unk61E[i] != 0xFFFF)
- gSprites[gPokedexView->unk61E[i]].data[5] -= b;
+ if (gPokedexView->monSpriteIds[i] != 0xFFFF)
+ gSprites[gPokedexView->monSpriteIds[i]].data[5] -= monMoveIncrement;
}
- foo = 16 * (c - gPokedexView->unk62E) / c;
- REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo;
- gPokedexView->unk62C += gPokedexView->unk628;
+ foo = 16 * (scrollTimerMax - gPokedexView->scrollTimer) / scrollTimerMax;
+ REG_BG2VOFS = gPokedexView->initialVOffset + gPokedexView->listMovingVOffset * 16 + foo;
+ gPokedexView->pokeBallRotation += gPokedexView->pokeBallRotationStep;
break;
}
return FALSE;
}
else
{
- REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk630 * 16;
+ REG_BG2VOFS = gPokedexView->initialVOffset + gPokedexView->listVOffset * 16;
return TRUE;
}
}
-static void sub_808E398(u8 a, u16 b)
+static void CreateScrollingPokemonSprite(u8 direction, u16 selectedMon)
{
u16 unk;
u8 spriteId;
- gPokedexView->unk632 = gPokedexView->unk630;
- switch (a)
+ gPokedexView->listMovingVOffset = gPokedexView->listVOffset;
+ switch (direction)
{
case 1:
- unk = sub_808E888(b - 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon - 1);
if (unk != 0xFFFF)
{
- spriteId = sub_808E8C8(unk, 0x60, 0x50);
- gSprites[spriteId].callback = sub_808EE28;
+ spriteId = CreatePokedexMonSprite(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite;
gSprites[spriteId].data[5] = -64;
}
- if (gPokedexView->unk630 > 0)
- gPokedexView->unk630--;
+ if (gPokedexView->listVOffset > 0)
+ gPokedexView->listVOffset--;
else
- gPokedexView->unk630 = 15;
+ gPokedexView->listVOffset = 15;
break;
case 2:
- unk = sub_808E888(b + 1);
+ unk = GetPokemonSpriteToDisplay(selectedMon + 1);
if (unk != 0xFFFF)
{
- spriteId = sub_808E8C8(unk, 0x60, 0x50);
- gSprites[spriteId].callback = sub_808EE28;
+ spriteId = CreatePokedexMonSprite(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = SpriteCB_PokedexListMonSprite;
gSprites[spriteId].data[5] = 0x40;
}
- if (gPokedexView->unk630 <= 0xE)
- gPokedexView->unk630++;
+ if (gPokedexView->listVOffset <= 0xE)
+ gPokedexView->listVOffset++;
else
- gPokedexView->unk630 = 0;
+ gPokedexView->listVOffset = 0;
break;
}
}
// Ugly, ugly, ugly. I couldn't get it to match otherwise.
-static u16 sub_808E48C(u16 a, u16 b)
+static u16 TryDoPokedexScroll(u16 a, u16 b)
{
u8 r3;
u8 r5;
@@ -2392,10 +2408,10 @@ static u16 sub_808E48C(u16 a, u16 b)
r6 = a;
//_0808E4E0
for (i = 0; i < 7; i++)
- a = sub_8091818(1, a, 0, gPokedexView->pokemonListCount - 1);
- gPokedexView->unk62C += 16 * (a - r6);
- sub_808E82C();
- sub_808E0CC(a, 0xE);
+ a = GetNextPosition(1, a, 0, gPokedexView->pokemonListCount - 1);
+ gPokedexView->pokeBallRotation += 16 * (a - r6);
+ ClearMonSprites();
+ CreateMonSpritesAtPos(a, 0xE);
PlaySE(0x6D);
}
//_0808E53C
@@ -2403,16 +2419,16 @@ static u16 sub_808E48C(u16 a, u16 b)
{
r6 = a;
for (i = 0; i < 7; i++)
- a = sub_8091818(0, a, 0, gPokedexView->pokemonListCount - 1);
- gPokedexView->unk62C += (a - r6) * 16;
- sub_808E82C();
- sub_808E0CC(a, 0xE);
+ a = GetNextPosition(0, a, 0, gPokedexView->pokemonListCount - 1);
+ gPokedexView->pokeBallRotation += (a - r6) * 16;
+ ClearMonSprites();
+ CreateMonSpritesAtPos(a, 0xE);
PlaySE(0x6D);
}
_0808E5A2:
if (r10 == 0)
{
- gPokedexView->unk638 = 0;
+ gPokedexView->scrollSpeed = 0;
return a;
}
}
@@ -2420,10 +2436,10 @@ static u16 sub_808E48C(u16 a, u16 b)
{
// to _0808E5C4
r10 = 2;
- a = sub_8091818(0, a, 0, gPokedexView->pokemonListCount - 1);
- sub_808E398(2, a);
+ a = GetNextPosition(0, a, 0, gPokedexView->pokemonListCount - 1);
+ CreateScrollingPokemonSprite(2, a);
//goto _0808E60E
- sub_808DBE8(2, a, b);
+ CreateMonListEntry(2, a, b);
PlaySE(0x6C);
goto _0808E5A2;
}
@@ -2432,41 +2448,43 @@ static u16 sub_808E48C(u16 a, u16 b)
{
//to _0808E5E4
r10 = 1;
- a = sub_8091818(1, a, 0, gPokedexView->pokemonListCount - 1);
- sub_808E398(1, a);
+ a = GetNextPosition(1, a, 0, gPokedexView->pokemonListCount - 1);
+ CreateScrollingPokemonSprite(1, a);
//_0808E60E
- sub_808DBE8(1, a, b);
+ CreateMonListEntry(1, a, b);
PlaySE(0x6C);
goto _0808E5A2;
}
//_0808E628
- r5 = gUnknown_083A05EC[gPokedexView->unk638 / 4];
- r3 = gUnknown_083A05F1[gPokedexView->unk638 / 4];
- gPokedexView->unk62E = r3;
- gPokedexView->unk636 = r3;
- gPokedexView->unk634 = r5;
- gPokedexView->unk62F = r10;
- gPokedexView->unk628 = r5 / 2;
- sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636);
- if (gPokedexView->unk638 <= 0xB)
- gPokedexView->unk638++;
+ r5 = gUnknown_083A05EC[gPokedexView->scrollSpeed / 4];
+ r3 = gUnknown_083A05F1[gPokedexView->scrollSpeed / 4];
+ gPokedexView->scrollTimer = r3;
+ gPokedexView->maxScrollTimer = r3;
+ gPokedexView->scrollMonIncrement = r5;
+ gPokedexView->scrollDirection = r10;
+ gPokedexView->pokeBallRotationStep = r5 / 2;
+ UpdateDexListScroll(gPokedexView->scrollDirection,
+ gPokedexView->scrollMonIncrement,
+ gPokedexView->maxScrollTimer);
+ if (gPokedexView->scrollSpeed <= 0xB)
+ gPokedexView->scrollSpeed++;
return a;
}
-static void sub_808E6BC(void)
+static void UpdateSelectedMonSpriteId(void)
{
u16 i;
for (i = 0; i < 4; i++)
{
- u16 spriteId = gPokedexView->unk61E[i];
+ u16 spriteId = gPokedexView->monSpriteIds[i];
- if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
+ if (gSprites[spriteId].x2 == 0 && gSprites[spriteId].y2 == 0 && spriteId != 0xFFFF)
gPokedexView->selectedMonSpriteId = spriteId;
}
}
-static u8 sub_808E71C(void)
+static u8 TryDoInfoScreenScroll(void)
{
u16 r2;
u16 r4 = gPokedexView->selectedPokemon;
@@ -2476,9 +2494,9 @@ static u8 sub_808E71C(void)
r2 = r4;
while (r2 != 0)
{
- r2 = sub_8091818(1, r2, 0, gPokedexView->pokemonListCount - 1);
+ r2 = GetNextPosition(1, r2, 0, gPokedexView->pokemonListCount - 1);
- if (gPokedexView->unk0[r2].seen)
+ if (gPokedexView->pokedexList[r2].seen)
{
r4 = r2;
break;
@@ -2490,7 +2508,7 @@ static u8 sub_808E71C(void)
else
{
gPokedexView->selectedPokemon = r4;
- gPokedexView->unk62C -= 16;
+ gPokedexView->pokeBallRotation -= 16;
return 1;
}
}
@@ -2499,9 +2517,9 @@ static u8 sub_808E71C(void)
r2 = r4;
while (r2 < gPokedexView->pokemonListCount - 1)
{
- r2 = sub_8091818(0, r2, 0, gPokedexView->pokemonListCount - 1);
+ r2 = GetNextPosition(0, r2, 0, gPokedexView->pokemonListCount - 1);
- if (gPokedexView->unk0[r2].seen)
+ if (gPokedexView->pokedexList[r2].seen)
{
r4 = r2;
break;
@@ -2513,69 +2531,69 @@ static u8 sub_808E71C(void)
else
{
gPokedexView->selectedPokemon = r4;
- gPokedexView->unk62C += 16;
+ gPokedexView->pokeBallRotation += 16;
return 1;
}
}
return 0;
}
-static u8 sub_808E82C(void)
+static u8 ClearMonSprites(void)
{
u16 i;
for (i = 0; i < 4; i++)
{
- if (gPokedexView->unk61E[i] != 0xFFFF)
+ if (gPokedexView->monSpriteIds[i] != 0xFFFF)
{
- DestroySprite(&gSprites[gPokedexView->unk61E[i]]);
- gPokedexView->unk61E[i] |= 0xFFFF;
+ DestroySprite(&gSprites[gPokedexView->monSpriteIds[i]]);
+ gPokedexView->monSpriteIds[i] |= 0xFFFF;
}
}
return 0;
}
-static u16 sub_808E888(u16 a1)
+static u16 GetPokemonSpriteToDisplay(u16 species)
{
- if (a1 >= NATIONAL_DEX_COUNT || gPokedexView->unk0[a1].dexNum == 0xFFFF)
+ if (species >= NATIONAL_DEX_COUNT || gPokedexView->pokedexList[species].dexNum == 0xFFFF)
return 0xFFFF;
- else if (gPokedexView->unk0[a1].seen)
- return gPokedexView->unk0[a1].dexNum;
+ else if (gPokedexView->pokedexList[species].seen)
+ return gPokedexView->pokedexList[species].dexNum;
else
return 0;
}
-static u32 sub_808E8C8(u16 a, s16 b, s16 c)
+static u32 CreatePokedexMonSprite(u16 num, s16 x, s16 y)
{
u8 i;
for (i = 0; i < 4; i++)
{
- if (gPokedexView->unk61E[i] == 0xFFFF)
+ if (gPokedexView->monSpriteIds[i] == 0xFFFF)
{
- u8 spriteId = sub_80918EC(a, b, c, i);
+ u8 spriteId = CreateMonSpriteFromNationalDexNumber(num, x, y, i);
- gSprites[spriteId].oam.affineMode = 1;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteId].oam.priority = 3;
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = i;
- gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(a);
- gPokedexView->unk61E[i] = spriteId;
+ gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(num);
+ gPokedexView->monSpriteIds[i] = spriteId;
return spriteId;
}
}
return 0xFFFF;
}
-static void sub_808E978(u8 a)
+static void CreateInterfaceSprites(u8 a)
{
u8 spriteId;
u16 r5;
- spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 4, 0);
+ spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 4, 0);
gSprites[spriteId].data[1] = 0;
- spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 156, 0);
+ spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 156, 0);
gSprites[spriteId].data[1] = 1;
gSprites[spriteId].vFlip = TRUE;
@@ -2615,7 +2633,7 @@ static void sub_808E978(u8 a)
_a = 0;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 28, 48, 1);
- r5 = gPokedexView->unk61A / 100;
+ r5 = gPokedexView->seenCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
@@ -2623,19 +2641,19 @@ static void sub_808E978(u8 a)
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 34, 48, 1);
- r5 = (gPokedexView->unk61A % 100) / 10;
+ r5 = (gPokedexView->seenCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 40, 48, 1);
- r5 = (gPokedexView->unk61A % 100) % 10;
+ r5 = (gPokedexView->seenCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
_a = 0;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 28, 80, 1);
- r5 = gPokedexView->unk61C / 100;
+ r5 = gPokedexView->ownCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
@@ -2643,14 +2661,14 @@ static void sub_808E978(u8 a)
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 34, 80, 1);
- r5 = (gPokedexView->unk61C % 100) / 10;
+ r5 = (gPokedexView->ownCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 40, 80, 1);
- r5 = (gPokedexView->unk61C % 100) % 10;
+ r5 = (gPokedexView->ownCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 140, 96, 1);
@@ -2663,55 +2681,55 @@ static void sub_808E978(u8 a)
}
}
-static void nullsub_58(struct Sprite *sprite)
+static void SpriteCB_EndMoveMonForInfoScreen(struct Sprite *sprite)
{
}
-static void sub_808ED94(struct Sprite *sprite)
+static void SpriteCB_SeenOwnInfo(struct Sprite *sprite)
{
- if (gPokedexView->unk64A != 0)
+ if (gPokedexView->currentPage != 0)
DestroySprite(sprite);
}
//Move Pokemon into position for description page
-static void sub_808EDB8(struct Sprite *sprite)
+static void SpriteCB_MoveMonForInfoScreen(struct Sprite *sprite)
{
sprite->oam.priority = 0;
sprite->oam.affineMode = 0;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
- if (sprite->pos1.x != 48 || sprite->pos1.y != 56)
+ sprite->x2 = 0;
+ sprite->y2 = 0;
+ if (sprite->x != 48 || sprite->y != 56)
{
- if (sprite->pos1.x > 48)
- sprite->pos1.x--;
- if (sprite->pos1.x < 48)
- sprite->pos1.x++;
+ if (sprite->x > 48)
+ sprite->x--;
+ if (sprite->x < 48)
+ sprite->x++;
- if (sprite->pos1.y > 56)
- sprite->pos1.y--;
- if (sprite->pos1.y < 56)
- sprite->pos1.y++;
+ if (sprite->y > 56)
+ sprite->y--;
+ if (sprite->y < 56)
+ sprite->y++;
}
else
{
- sprite->callback = nullsub_58;
+ sprite->callback = SpriteCB_EndMoveMonForInfoScreen;
}
}
-static void sub_808EE28(struct Sprite *sprite)
+static void SpriteCB_PokedexListMonSprite(struct Sprite *sprite)
{
u8 data1 = sprite->data[1];
- if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->currentPage != 0 && gPokedexView->currentPage != 3)
{
DestroySprite(sprite);
- gPokedexView->unk61E[data1] = 0xFFFF;
+ gPokedexView->monSpriteIds[data1] = 0xFFFF;
}
else
{
u32 var;
- sprite->pos2.y = gSineTable[(u8)sprite->data[5]] * 76 / 256;
+ sprite->y2 = gSineTable[(u8)sprite->data[5]] * 76 / 256;
var = 0x10000 / gSineTable[sprite->data[5] + 0x40];
if (var > 0xFFFF)
var = 0xFFFF;
@@ -2731,22 +2749,22 @@ static void sub_808EE28(struct Sprite *sprite)
if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0)
{
DestroySprite(sprite);
- gPokedexView->unk61E[data1] = 0xFFFF;
+ gPokedexView->monSpriteIds[data1] = 0xFFFF;
}
}
}
-static void sub_808EF38(struct Sprite *sprite)
+static void SpriteCB_Scrollbar(struct Sprite *sprite)
{
- if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->currentPage != 0 && gPokedexView->currentPage != 3)
DestroySprite(sprite);
else
- sprite->pos2.y = gPokedexView->selectedPokemon * 120 / (gPokedexView->pokemonListCount - 1);
+ sprite->y2 = gPokedexView->selectedPokemon * 120 / (gPokedexView->pokemonListCount - 1);
}
-static void sub_808EF8C(struct Sprite *sprite)
+static void SpriteCB_ScrollArrow(struct Sprite *sprite)
{
- if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->currentPage != 0 && gPokedexView->currentPage != 3)
{
DestroySprite(sprite);
}
@@ -2770,7 +2788,7 @@ static void sub_808EF8C(struct Sprite *sprite)
sprite->invisible = FALSE;
r0 = sprite->data[2] - 128;
}
- sprite->pos2.y = gSineTable[r0] / 64;
+ sprite->y2 = gSineTable[r0] / 64;
sprite->data[2] = sprite->data[2] + 8;
if (gPokedexView->menuIsOpen == 0 && gPokedexView->menuY == 0 && sprite->invisible == 0)
sprite->invisible = FALSE;
@@ -2779,15 +2797,15 @@ static void sub_808EF8C(struct Sprite *sprite)
}
}
-static void sub_808F08C(struct Sprite *sprite)
+static void SpriteCB_DexListInterfaceText(struct Sprite *sprite)
{
- if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->currentPage != 0 && gPokedexView->currentPage != 3)
DestroySprite(sprite);
}
-static void sub_808F0B4(struct Sprite *sprite)
+static void SpriteCB_RotatingPokeBall(struct Sprite *sprite)
{
- if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->currentPage != 0 && gPokedexView->currentPage != 3)
{
DestroySprite(sprite);
}
@@ -2797,34 +2815,34 @@ static void sub_808F0B4(struct Sprite *sprite)
s16 r3;
s16 r0;
- val = gPokedexView->unk62C + sprite->data[1];
+ val = gPokedexView->pokeBallRotation + sprite->data[1];
r3 = gSineTable[val];
r0 = gSineTable[val + 0x40];
SetOamMatrix(sprite->data[0], r0, r3, -r3, r0);
- val = gPokedexView->unk62C + (sprite->data[1] + 0x40);
+ val = gPokedexView->pokeBallRotation + (sprite->data[1] + 0x40);
r3 = gSineTable[val];
r0 = gSineTable[val + 0x40];
- sprite->pos2.x = r0 * 40 / 256;
- sprite->pos2.y = r3 * 40 / 256;
+ sprite->x2 = r0 * 40 / 256;
+ sprite->y2 = r3 * 40 / 256;
}
}
-static void sub_808F168(struct Sprite *sprite)
+static void SpriteCB_DexListStartMenuCursor(struct Sprite *sprite)
{
- if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
+ if (gPokedexView->currentPage != 0 && gPokedexView->currentPage != 3)
{
DestroySprite(sprite);
}
else
{
- u16 r1 = gPokedexView->unk64A == 0 ? 80 : 96;
+ u16 r1 = gPokedexView->currentPage == 0 ? 80 : 96;
if (gPokedexView->menuIsOpen != 0 && gPokedexView->menuY == r1)
{
sprite->invisible = FALSE;
- sprite->pos2.y = gPokedexView->menuCursorPos * 16;
- sprite->pos2.x = gSineTable[(u8)sprite->data[2]] / 64;
+ sprite->y2 = gPokedexView->menuCursorPos * 16;
+ sprite->x2 = gSineTable[(u8)sprite->data[2]] / 64;
sprite->data[2] += 8;
}
else
@@ -2834,11 +2852,11 @@ static void sub_808F168(struct Sprite *sprite)
}
}
-static u8 sub_808F210(struct PokedexListItem *item, u8 b)
+static u8 LoadInfoScreen(struct PokedexListItem *item, u8 b)
{
u8 taskId;
- gUnknown_0202FFBC = item;
+ sPokedexListItem = item;
taskId = CreateTask(Task_InitPageScreenMultistep, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 1;
@@ -2848,7 +2866,7 @@ static u8 sub_808F210(struct PokedexListItem *item, u8 b)
return taskId;
}
-static bool8 sub_808F250(u8 taskId)
+static bool8 IsInfoScreenScrolling(u8 taskId)
{
if (gTasks[taskId].data[0] == 0 && gTasks[taskId].func == Task_PageScreenProcessInput)
return FALSE;
@@ -2858,7 +2876,7 @@ static bool8 sub_808F250(u8 taskId)
static u8 sub_808F284(struct PokedexListItem *item, u8 b)
{
- gUnknown_0202FFBC = item;
+ sPokedexListItem = item;
gTasks[b].data[0] = 1;
gTasks[b].data[1] = 0;
gTasks[b].data[2] = 0;
@@ -2882,29 +2900,29 @@ static void Task_InitPageScreenMultistep(u8 taskId)
{
u16 r2;
- gPokedexView->unk64A = 1;
+ gPokedexView->currentPage = 1;
gPokedexView->descriptionPageNum = 0;
- gUnknown_03005CEC = gMain.vblankCallback;
+ gPokedexVBlankCB = gMain.vblankCallback;
SetVBlankCallback(NULL);
r2 = 0;
if (gTasks[taskId].data[1] != 0)
r2 += 0x1000;
if (gTasks[taskId].data[2] != 0)
r2 |= 0x200;
- sub_8091060(r2);
+ ResetOtherVideoRegisters(r2);
gMain.state = 1;
}
break;
case 1:
LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
- sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC);
+ PrintFootprint(sPokedexListItem->dexNum, 2, 0x3FC);
gMain.state++;
break;
case 2:
- sub_80904FC(0xD);
- sub_8090584(gPokedexView->selectedScreen, 0xD);
- sub_808D640();
+ LoadScreenSelectBarMain(0xD);
+ HighlightScreenSelectBarItem(gPokedexView->selectedScreen, 0xD);
+ LoadPokedexBgPalette();
gMain.state++;
break;
case 3:
@@ -2914,20 +2932,20 @@ static void Task_InitPageScreenMultistep(u8 taskId)
break;
case 4:
if (gPokedexView->dexMode == DEX_MODE_HOENN)
- sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3);
+ PrintEntryScreenDexNum(NationalToHoennOrder(sPokedexListItem->dexNum), 0xD, 3);
else
- sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3);
- sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3);
+ PrintEntryScreenDexNum(sPokedexListItem->dexNum, 0xD, 3);
+ PrintEntryScreenSpeciesName(sPokedexListItem->dexNum, 0x10, 3);
Menu_PrintText(gDexText_UnknownPoke, CATEGORY_LEFT, 5);
Menu_PrintText(gDexText_UnknownHeight, 16, 7);
Menu_PrintText(gDexText_UnknownWeight, 16, 9);
- if (gUnknown_0202FFBC->owned)
+ if (sPokedexListItem->owned)
{
- sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, CATEGORY_LEFT, 5);
- sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7);
- sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9);
- Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13);
- sub_80917CC(14, 0x3FC);
+ UnusedPrintMonName(gPokedexEntries[sPokedexListItem->dexNum].categoryName, CATEGORY_LEFT, 5);
+ sub_8091458(gPokedexEntries[sPokedexListItem->dexNum].height, 16, 7);
+ sub_8091564(gPokedexEntries[sPokedexListItem->dexNum].weight, 16, 9);
+ Menu_PrintText(gPokedexEntries[sPokedexListItem->dexNum].descriptionPage1, 2, 13);
+ sub_80C0DC0(14, 0x3FC);
}
else
{
@@ -2939,7 +2957,7 @@ static void Task_InitPageScreenMultistep(u8 taskId)
case 5:
if (gTasks[taskId].data[1] == 0)
{
- gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
+ gTasks[taskId].data[4] = (u16)CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 0x30, 0x38, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
gMain.state++;
@@ -2953,7 +2971,7 @@ static void Task_InitPageScreenMultistep(u8 taskId)
if (gTasks[taskId].data[1] != 0)
excludedPalettes |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 16));
BeginNormalPaletteFade(~excludedPalettes, 0, 16, 0, RGB(0, 0, 0));
- SetVBlankCallback(gUnknown_03005CEC);
+ SetVBlankCallback(gPokedexVBlankCB);
gMain.state++;
}
break;
@@ -2973,7 +2991,7 @@ static void Task_InitPageScreenMultistep(u8 taskId)
if (gTasks[taskId].data[3] == 0)
{
StopCryAndClearCrySongs();
- PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA);
+ PlayCry2(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), 0, 0x7D, 0xA);
}
else
{
@@ -3001,7 +3019,7 @@ static void Task_PageScreenProcessInput(u8 taskId)
if (gTasks[taskId].data[0] != 0)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].func = sub_808F888;
+ gTasks[taskId].func = Task_LoadInfoScreenWaitForFade;
PlaySE(SE_DEX_SCROLL);
return;
}
@@ -3030,7 +3048,7 @@ static void Task_PageScreenProcessInput(u8 taskId)
PlaySE(SE_PIN);
break;
case SIZE_SCREEN:
- if (!gUnknown_0202FFBC->owned)
+ if (!sPokedexListItem->owned)
{
PlaySE(SE_FAILURE);
}
@@ -3049,7 +3067,7 @@ static void Task_PageScreenProcessInput(u8 taskId)
&& gPokedexView->selectedScreen > 0)
{
gPokedexView->selectedScreen--;
- sub_8090584(gPokedexView->selectedScreen, 0xD);
+ HighlightScreenSelectBarItem(gPokedexView->selectedScreen, 0xD);
PlaySE(SE_DEX_PAGE);
return;
}
@@ -3058,13 +3076,13 @@ static void Task_PageScreenProcessInput(u8 taskId)
&& gPokedexView->selectedScreen < 3)
{
gPokedexView->selectedScreen++;
- sub_8090584(gPokedexView->selectedScreen, 0xD);
+ HighlightScreenSelectBarItem(gPokedexView->selectedScreen, 0xD);
PlaySE(SE_DEX_PAGE);
return;
}
}
-static void sub_808F888(u8 taskId)
+static void Task_LoadInfoScreenWaitForFade(u8 taskId)
{
if (!gPaletteFade.active)
gTasks[taskId].func = Task_InitPageScreenMultistep;
@@ -3084,25 +3102,25 @@ static void Task_InitAreaScreenMultistep(u8 taskId)
default:
if (!gPaletteFade.active)
{
- gPokedexView->unk64A = 5;
- gUnknown_03005CEC = gMain.vblankCallback;
+ gPokedexView->currentPage = 5;
+ gPokedexVBlankCB = gMain.vblankCallback;
SetVBlankCallback(NULL);
- sub_8091060(0x200);
+ ResetOtherVideoRegisters(0x200);
gPokedexView->selectedScreen = AREA_SCREEN;
gMain.state = 1;
}
break;
case 1:
- sub_8090540(0xD);
+ LoadScreenSelectBarSubmenu(0xD);
sub_8090644(1, 0xD);
- sub_808D640();
+ LoadPokedexBgPalette();
REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256;
gMain.state++;
break;
case 2:
- ShowPokedexAreaScreen(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), &gPokedexView->unk64F);
- SetVBlankCallback(gUnknown_03005CEC);
- gPokedexView->unk64F = 0;
+ ShowPokedexAreaScreen(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), &gPokedexView->screenSwitchState);
+ SetVBlankCallback(gPokedexVBlankCB);
+ gPokedexView->screenSwitchState = 0;
gMain.state = 0;
gTasks[taskId].func = Task_AreaScreenProcessInput;
break;
@@ -3111,7 +3129,7 @@ static void Task_InitAreaScreenMultistep(u8 taskId)
static void Task_AreaScreenProcessInput(u8 taskId)
{
- if (gPokedexView->unk64F != 0)
+ if (gPokedexView->screenSwitchState != 0)
gTasks[taskId].func = sub_808FA00;
}
@@ -3119,7 +3137,7 @@ static void sub_808FA00(u8 taskId)
{
if (!gPaletteFade.active)
{
- switch (gPokedexView->unk64F)
+ switch (gPokedexView->screenSwitchState)
{
case 1:
default:
@@ -3141,10 +3159,10 @@ static void Task_InitCryScreenMultistep(u8 taskId)
if (!gPaletteFade.active)
{
m4aMPlayStop(&gMPlayInfo_BGM);
- gPokedexView->unk64A = 6;
- gUnknown_03005CEC = gMain.vblankCallback;
+ gPokedexView->currentPage = 6;
+ gPokedexVBlankCB = gMain.vblankCallback;
SetVBlankCallback(NULL);
- sub_8091060(0x200);
+ ResetOtherVideoRegisters(0x200);
gPokedexView->selectedScreen = CRY_SCREEN;
gMain.state = 1;
}
@@ -3155,9 +3173,9 @@ static void Task_InitCryScreenMultistep(u8 taskId)
gMain.state++;
break;
case 2:
- sub_8090540(0xD);
+ LoadScreenSelectBarSubmenu(0xD);
sub_8090644(2, 0xD);
- sub_808D640();
+ LoadPokedexBgPalette();
DmaClear16(3, (void *)(VRAM + 0xF800), 0x500);
gMain.state++;
break;
@@ -3169,37 +3187,38 @@ static void Task_InitCryScreenMultistep(u8 taskId)
break;
case 4:
Menu_PrintText(gDexText_CryOf, 10, 4);
- sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2);
+ PrintCryScreenSpeciesName(sPokedexListItem->dexNum, 10, 6, 2);
gMain.state++;
break;
case 5:
- gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
+ gTasks[taskId].data[4] =
+ CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 0x30, 0x38, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
- gUnknown_03005E98 = 0;
+ gDexCryScreenState = 0;
gMain.state++;
break;
case 6:
{
- struct CryRelatedStruct sp8;
-
- sp8.unk0 = 0x4020;
- sp8.unk2 = 0x1F;
- sp8.paletteNo = 8;
- sp8.yPos = 0x1E;
- sp8.xPos = 0xC;
- if (sub_8119E3C(&sp8, 0) != 0)
+ struct CryScreenWindow waveformWindow;
+
+ waveformWindow.charBase = 0x4020;
+ waveformWindow.screenBase = 0x1F;
+ waveformWindow.paletteNo = 8;
+ waveformWindow.yPos = 0x1E;
+ waveformWindow.xPos = 0xC;
+ if (LoadCryWaveformWindow(&waveformWindow, 0) != 0)
{
gMain.state++;
- gUnknown_03005E98 = 0;
+ gDexCryScreenState = 0;
}
}
break;
case 7:
{
- struct CryRelatedStruct sp10;
+ struct CryScreenWindow sp10;
- sp10.unk0 = 0x3000;
- sp10.unk2 = 0xE;
+ sp10.charBase = 0x3000;
+ sp10.screenBase = 0xE;
sp10.paletteNo = 9;
sp10.xPos = 0x12;
sp10.yPos = 3;
@@ -3209,7 +3228,7 @@ static void Task_InitCryScreenMultistep(u8 taskId)
break;
case 8:
BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, RGB(0, 0, 0));
- SetVBlankCallback(gUnknown_03005CEC);
+ SetVBlankCallback(gPokedexVBlankCB);
gMain.state++;
break;
case 9:
@@ -3223,7 +3242,7 @@ static void Task_InitCryScreenMultistep(u8 taskId)
gMain.state++;
break;
case 10:
- gPokedexView->unk64F = 0;
+ gPokedexView->screenSwitchState = 0;
gMain.state = 0;
gTasks[taskId].func = Task_CryScreenProcessInput;
break;
@@ -3232,17 +3251,17 @@ static void Task_InitCryScreenMultistep(u8 taskId)
static void Task_CryScreenProcessInput(u8 taskId)
{
- sub_8119F88(0);
+ UpdateCryWaveformWindow(0);
if (IsCryPlaying())
- sub_8090040(1);
+ LoadPlayArrowPalette(1);
else
- sub_8090040(0);
+ LoadPlayArrowPalette(0);
if (gMain.newKeys & A_BUTTON)
{
- sub_8090040(1);
- sub_811A050(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum));
+ LoadPlayArrowPalette(1);
+ CryScreenPlayButton(NationalPokedexNumToSpecies(sPokedexListItem->dexNum));
return;
}
else if (!gPaletteFade.active)
@@ -3251,8 +3270,8 @@ static void Task_CryScreenProcessInput(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
m4aMPlayContinue(&gMPlayInfo_BGM);
- gPokedexView->unk64F = 1;
- gTasks[taskId].func = sub_808FFBC;
+ gPokedexView->screenSwitchState = 1;
+ gTasks[taskId].func = Task_SwitchScreensFromCryScreen;
PlaySE(SE_PC_OFF);
return;
}
@@ -3261,15 +3280,15 @@ static void Task_CryScreenProcessInput(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
m4aMPlayContinue(&gMPlayInfo_BGM);
- gPokedexView->unk64F = 2;
- gTasks[taskId].func = sub_808FFBC;
+ gPokedexView->screenSwitchState = 2;
+ gTasks[taskId].func = Task_SwitchScreensFromCryScreen;
PlaySE(SE_DEX_PAGE);
return;
}
if ((gMain.newKeys & DPAD_RIGHT)
|| ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
- if (!gUnknown_0202FFBC->owned)
+ if (!sPokedexListItem->owned)
{
PlaySE(SE_FAILURE);
}
@@ -3277,8 +3296,8 @@ static void Task_CryScreenProcessInput(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
m4aMPlayContinue(&gMPlayInfo_BGM);
- gPokedexView->unk64F = 3;
- gTasks[taskId].func = sub_808FFBC;
+ gPokedexView->screenSwitchState = 3;
+ gTasks[taskId].func = Task_SwitchScreensFromCryScreen;
PlaySE(SE_DEX_PAGE);
}
return;
@@ -3286,12 +3305,12 @@ static void Task_CryScreenProcessInput(u8 taskId)
}
}
-static void sub_808FFBC(u8 taskId)
+static void Task_SwitchScreensFromCryScreen(u8 taskId)
{
if (!gPaletteFade.active)
{
DestroyCryMeterNeedleSprite();
- switch (gPokedexView->unk64F)
+ switch (gPokedexView->screenSwitchState)
{
default:
case 1:
@@ -3307,15 +3326,15 @@ static void sub_808FFBC(u8 taskId)
}
}
-static void sub_8090040(u8 a)
+static void LoadPlayArrowPalette(u8 cryPlaying)
{
- u16 unk;
+ u16 color;
- if (a != 0)
- unk = 0x392;
+ if (cryPlaying)
+ color = RGB(18, 28, 0);
else
- unk = 0x2AF;
- LoadPalette(&unk, 0x5D, 2);
+ color = RGB(15, 21, 0);
+ LoadPalette(&color, 0x5D, 2);
}
static void Task_InitSizeScreenMultistep(u8 taskId)
@@ -3328,10 +3347,10 @@ static void Task_InitSizeScreenMultistep(u8 taskId)
case 0:
if (!gPaletteFade.active)
{
- gPokedexView->unk64A = 7;
- gUnknown_03005CEC = gMain.vblankCallback;
+ gPokedexView->currentPage = 7;
+ gPokedexVBlankCB = gMain.vblankCallback;
SetVBlankCallback(NULL);
- sub_8091060(0x200);
+ ResetOtherVideoRegisters(0x200);
gPokedexView->selectedScreen = SIZE_SCREEN;
gMain.state = 1;
}
@@ -3342,13 +3361,14 @@ static void Task_InitSizeScreenMultistep(u8 taskId)
gMain.state++;
break;
case 2:
- sub_8090540(0xD);
+ LoadScreenSelectBarSubmenu(0xD);
sub_8090644(3, 0xD);
- sub_808D640();
+ LoadPokedexBgPalette();
gMain.state++;
break;
case 3:
{
+ // This only needs to be 25 chars long (31 in German).
u8 string[40]; //I hope this is the correct size
Text_LoadWindowTemplate(&gWindowTemplate_81E702C);
@@ -3365,28 +3385,28 @@ static void Task_InitSizeScreenMultistep(u8 taskId)
gMain.state++;
break;
case 5:
- spriteId = sub_8091A4C(gSaveBlock2.playerGender, 152, 56, 0);
+ spriteId = CreateSizeScreenTrainerPic(gSaveBlock2.playerGender, 152, 56, 0);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 1;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset;
- SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale);
- LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, sizeof(gUnknown_083B4EC4));
+ gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].trainerOffset;
+ SetOamMatrix(1, gPokedexEntries[sPokedexListItem->dexNum].trainerScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].trainerScale);
+ LoadPalette(sSizeScreenSilhouette_Pal, (gSprites[spriteId].oam.paletteNum + 16) * 16, sizeof(sSizeScreenSilhouette_Pal));
gMain.state++;
break;
case 6:
- spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 88, 56, 1);
+ spriteId = CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 88, 56, 1);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset;
- SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale);
- LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, sizeof(gUnknown_083B4EC4));
+ gSprites[spriteId].y2 = gPokedexEntries[sPokedexListItem->dexNum].pokemonOffset;
+ SetOamMatrix(2, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale);
+ LoadPalette(sSizeScreenSilhouette_Pal, (gSprites[spriteId].oam.paletteNum + 16) * 16, sizeof(sSizeScreenSilhouette_Pal));
gMain.state++;
break;
case 7:
BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, RGB(0, 0, 0));
- SetVBlankCallback(gUnknown_03005CEC);
+ SetVBlankCallback(gPokedexVBlankCB);
gMain.state++;
break;
case 8:
@@ -3400,7 +3420,7 @@ static void Task_InitSizeScreenMultistep(u8 taskId)
case 9:
if (!gPaletteFade.active)
{
- gPokedexView->unk64F = 0;
+ gPokedexView->screenSwitchState = 0;
gMain.state = 0;
gTasks[taskId].func = Task_SizeScreenProcessInput;
}
@@ -3413,25 +3433,25 @@ static void Task_SizeScreenProcessInput(u8 taskId)
if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
- gPokedexView->unk64F = 1;
- gTasks[taskId].func = sub_8090498;
+ gPokedexView->screenSwitchState = 1;
+ gTasks[taskId].func = Task_SwitchScreensFromSizeScreen;
PlaySE(SE_PC_OFF);
}
else if ((gMain.newKeys & DPAD_LEFT)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
- gPokedexView->unk64F = 2;
- gTasks[taskId].func = sub_8090498;
+ gPokedexView->screenSwitchState = 2;
+ gTasks[taskId].func = Task_SwitchScreensFromSizeScreen;
PlaySE(SE_DEX_PAGE);
}
}
-static void sub_8090498(u8 taskId)
+static void Task_SwitchScreensFromSizeScreen(u8 taskId)
{
if (!gPaletteFade.active)
{
- switch (gPokedexView->unk64F)
+ switch (gPokedexView->screenSwitchState)
{
default:
case 1:
@@ -3444,20 +3464,20 @@ static void sub_8090498(u8 taskId)
}
}
-static void sub_80904FC(u16 a)
+static void LoadScreenSelectBarMain(u16 screenBase)
{
- LZ77UnCompVram(gUnknown_08E96ACC, (void *)(VRAM + a * 0x800));
- DmaClear16(3, (void *)(VRAM + a * 0x800 + 0xC0), 0x440);
+ LZ77UnCompVram(gPokedexScreenSelectBarMain_Tilemap, (void *)(VRAM + screenBase * 0x800));
+ DmaClear16(3, (void *)(VRAM + screenBase * 0x800 + 0xC0), 0x440);
}
-static void sub_8090540(u16 a)
+static void LoadScreenSelectBarSubmenu(u16 screenBase)
{
- LZ77UnCompVram(gUnknown_08E96B58, (void *)(VRAM + a * 0x800));
- DmaClear16(3, (void *)(VRAM + a * 0x800 + 0xC0), 0x440);
+ LZ77UnCompVram(gPokedexScreenSelectBarSubmenu_Tilemap, (void *)(VRAM + screenBase * 0x800));
+ DmaClear16(3, (void *)(VRAM + screenBase * 0x800 + 0xC0), 0x440);
}
#ifdef NONMATCHING
-static void sub_8090584(u8 a, u16 b)
+static void HighlightScreenSelectBarItem(u8 a, u16 b)
{
u8 i; //r1
u8 j; //r3
@@ -3497,7 +3517,7 @@ static void sub_8090584(u8 a, u16 b)
}
#else
NAKED
-static void sub_8090584(u8 a, u16 b)
+static void HighlightScreenSelectBarItem(u8 a, u16 b)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -3776,9 +3796,9 @@ static void sub_8090750(u8 taskId)
default:
if (!gPaletteFade.active)
{
- gUnknown_03005CEC = gMain.vblankCallback;
+ gPokedexVBlankCB = gMain.vblankCallback;
SetVBlankCallback(NULL);
- sub_8091060(0x100);
+ ResetOtherVideoRegisters(0x100);
gTasks[taskId].data[0] = 1;
}
break;
@@ -3792,7 +3812,7 @@ static void sub_8090750(u8 taskId)
#endif
*(u16 *)(BG_VRAM + 0x7800 + 2 * i) += 0x2000;
}
- sub_8091738(gTasks[taskId].data[1], 2, 0x3FC);
+ PrintFootprint(gTasks[taskId].data[1], 2, 0x3FC);
ResetPaletteFade();
LoadPalette(gPokedexMenu_Pal + 1, 0x21, 0x9E);
gTasks[taskId].data[0]++;
@@ -3806,25 +3826,25 @@ static void sub_8090750(u8 taskId)
case 3:
MenuPrint_Centered(gDexText_RegisterComplete, 2, 0, 0xD0);
if (!IsNationalPokedexEnabled())
- sub_8091154(NationalToHoennOrder(dexNum), 13, 3);
+ PrintEntryScreenDexNum(NationalToHoennOrder(dexNum), 13, 3);
else
- sub_8091154(dexNum, 13, 3);
- sub_80911C8(dexNum, 16, 3);
+ PrintEntryScreenDexNum(dexNum, 13, 3);
+ PrintEntryScreenSpeciesName(dexNum, 16, 3);
Menu_PrintText(gDexText_UnknownPoke, CATEGORY_LEFT, 5);
Menu_PrintText(gDexText_UnknownHeight, 16, 7);
Menu_PrintText(gDexText_UnknownWeight, 16, 9);
- sub_8091304(gPokedexEntries[dexNum].categoryName, CATEGORY_LEFT, 5);
+ UnusedPrintMonName(gPokedexEntries[dexNum].categoryName, CATEGORY_LEFT, 5);
sub_8091458(gPokedexEntries[dexNum].height, 16, 7);
sub_8091564(gPokedexEntries[dexNum].weight, 16, 9);
Menu_PrintText(gPokedexEntries[dexNum].descriptionPage1, 2, 13);
- sub_80917CC(14, 0x3FC);
+ sub_80C0DC0(14, 0x3FC);
gTasks[taskId].data[0]++;
break;
case 4:
- spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
+ spriteId = CreateMonSpriteFromNationalDexNumber(dexNum, 0x30, 0x38, 0);
gSprites[spriteId].oam.priority = 0;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- SetVBlankCallback(gUnknown_03005CEC);
+ SetVBlankCallback(gPokedexVBlankCB);
gTasks[taskId].data[3] = spriteId;
gTasks[taskId].data[0]++;
break;
@@ -3910,25 +3930,25 @@ static void sub_8090B8C(u8 taskId)
static void sub_8090C28(struct Sprite *sprite)
{
- if (sprite->pos1.x < 0x78)
- sprite->pos1.x += 2;
- if (sprite->pos1.x > 0x78)
- sprite->pos1.x -= 2;
+ if (sprite->x < 0x78)
+ sprite->x += 2;
+ if (sprite->x > 0x78)
+ sprite->x -= 2;
- if (sprite->pos1.y < 0x50)
- sprite->pos1.y += 1;
- if (sprite->pos1.y > 0x50)
- sprite->pos1.y -= 1;
+ if (sprite->y < 0x50)
+ sprite->y += 1;
+ if (sprite->y > 0x50)
+ sprite->y -= 1;
}
static void sub_8090C68(void)
{
- if (gUnknown_0202FFBC->owned)
+ if (sPokedexListItem->owned)
{
if (gPokedexView->descriptionPageNum == 0)
{
Menu_EraseWindowRect(2, 13, 27, 19);
- Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13);
+ Menu_PrintText(gPokedexEntries[sPokedexListItem->dexNum].descriptionPage2, 2, 13);
gPokedexView->descriptionPageNum = 1;
(*(u16 *)(BG_VRAM + 0x7ACA))++;
(*(u16 *)(BG_VRAM + 0x7B0A))++;
@@ -3937,7 +3957,7 @@ static void sub_8090C68(void)
else
{
Menu_EraseWindowRect(2, 13, 27, 19);
- Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13);
+ Menu_PrintText(gPokedexEntries[sPokedexListItem->dexNum].descriptionPage1, 2, 13);
gPokedexView->descriptionPageNum = 0;
(*(u16 *)(BG_VRAM + 0x7ACA))--;
(*(u16 *)(BG_VRAM + 0x7B0A))--;
@@ -4109,7 +4129,7 @@ bool16 CompletedNationalPokedex(void)
return TRUE;
}
-static void sub_8091060(u16 a)
+static void ResetOtherVideoRegisters(u16 a)
{
if (!(a & 0x100))
{
@@ -4148,7 +4168,7 @@ static void sub_8091060(u16 a)
}
}
-static void sub_8091154(u16 order, u8 b, u8 c)
+static void PrintEntryScreenDexNum(u16 order, u8 b, u8 c)
{
u8 str[4];
@@ -4159,7 +4179,7 @@ static void sub_8091154(u16 order, u8 b, u8 c)
Menu_PrintText(str, b, c);
}
-static u8 sub_80911C8(u16 num, u8 b, u8 c)
+static u8 PrintEntryScreenSpeciesName(u16 num, u8 b, u8 c)
{
u8 str[11];
u8 i;
@@ -4181,13 +4201,13 @@ static u8 sub_80911C8(u16 num, u8 b, u8 c)
return i;
}
-static u8 sub_8091260(u16 num, u8 b, u8 c, u8 d)
+static u8 PrintCryScreenSpeciesName(u16 num, u8 b, u8 c, u8 d)
{
u8 str[40];
u8 *end;
u8 i;
- end = StringCopy(str, gUnknown_083B5558);
+ end = StringCopy(str, sText_ClearTo0);
str[2] = d;
num = NationalPokedexNumToSpecies(num);
switch (num)
@@ -4206,7 +4226,7 @@ static u8 sub_8091260(u16 num, u8 b, u8 c, u8 d)
return i;
}
-static void sub_8091304(const u8 *name, u8 left, u8 top)
+static void UnusedPrintMonName(const u8 *name, u8 left, u8 top)
{
u8 str[32];
u8 i;
@@ -4217,18 +4237,18 @@ static void sub_8091304(const u8 *name, u8 left, u8 top)
for (i = 0; name[i] != EOS && i < 11; i++)
str[i] = name[i];
#if ENGLISH
- for (j = 0; gDexText_UnknownPoke[j] == 0xAC || gDexText_UnknownPoke[j] == 0; j++)
+ for (j = 0; gDexText_UnknownPoke[j] == CHAR_QUESTION_MARK || gDexText_UnknownPoke[j] == CHAR_SPACE; j++)
;
j--;
while (gDexText_UnknownPoke[j] != EOS)
str[i++] = gDexText_UnknownPoke[j++];
#endif
str[i] = EOS;
- sub_8072B80(str, left, top, gDexText_UnknownPoke);
+ MenuPrint_AlignedToRightOfReferenceString(str, left, top, gDexText_UnknownPoke);
}
#if ENGLISH
-void unref_sub_80913A4(u16 a, u8 left, u8 top)
+void UnusedPrintDecimalNum(u16 a, u8 left, u8 top)
{
u8 str[6];
bool8 outputted = FALSE;
@@ -4265,7 +4285,7 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top)
Menu_PrintText(str, left, top);
}
#elif GERMAN
-void unref_sub_80913A4(u16 arg0, u8 left, u8 top) {
+void UnusedPrintDecimalNum(u16 arg0, u8 left, u8 top) {
u8 buffer[8];
int offset;
u8 result;
@@ -4348,7 +4368,7 @@ static void sub_8091458(u16 height, u8 left, u8 top)
#else
static void sub_8091458(u16 height, u8 left, u8 top)
{
- unref_sub_80913A4(height, left, top);
+ UnusedPrintDecimalNum(height, left, top);
}
#endif
@@ -4418,11 +4438,11 @@ static void sub_8091564(u16 weight, u8 left, u8 top)
#else
static void sub_8091564(u16 arg0, u8 left, u8 top)
{
- unref_sub_80913A4(arg0, left, top);
+ UnusedPrintDecimalNum(arg0, left, top);
}
#endif
-void sub_8091738(u16 num, u16 b, u16 c)
+void PrintFootprint(u16 num, u16 b, u16 c)
{
u8 arr[0x80];
u16 i, j, r7;
@@ -4449,7 +4469,7 @@ void sub_8091738(u16 num, u16 b, u16 c)
CpuCopy16((void*)arr, (void *)(BG_VRAM + b * 0x4000 + c * 0x20), 0x80);
}
-static void sub_80917CC(u16 a, u16 b)
+static void sub_80C0DC0(u16 a, u16 b)
{
*(u16 *)(BG_VRAM + a * 0x800 + 0x232) = 0xF000 + b + 0;
*(u16 *)(BG_VRAM + a * 0x800 + 0x234) = 0xF000 + b + 1;
@@ -4457,55 +4477,55 @@ static void sub_80917CC(u16 a, u16 b)
*(u16 *)(BG_VRAM + a * 0x800 + 0x274) = 0xF000 + b + 3;
}
-static u16 sub_8091818(u8 a, u16 b, u16 c, u16 d)
+static u16 GetNextPosition(u8 direction, u16 position, u16 min, u16 max)
{
- switch (a)
+ switch (direction)
{
case 1:
- if (b > c)
- b--;
+ if (position > min)
+ position--;
break;
case 0:
- if (b < d)
- b++;
+ if (position < max)
+ position++;
break;
case 3:
- if (b > c)
- b--;
+ if (position > min)
+ position--;
else
- b = d;
+ position = max;
break;
case 2:
- if (b < d)
- b++;
+ if (position < max)
+ position++;
else
- b = c;
+ position = min;
break;
}
- return b;
+ return position;
}
-static void nullsub_59(struct Sprite *sprite)
+static void _SpriteCB_Dummy(struct Sprite *sprite)
{
}
-static void sub_8091878(u16 a, u8 b)
+static void SetSpriteTemplateForPokemonPic(u16 paletteTag, u8 imagesSet)
{
- gUnknown_02024E8C = gUnknown_083B57A4;
- gUnknown_02024E8C.paletteTag = a;
- gUnknown_02024E8C.images = gUnknown_083B5794[b];
- gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64;
+ gCreatingSpriteTemplate = sMonOrTrainerPicSpriteTemplate;
+ gCreatingSpriteTemplate.paletteTag = paletteTag;
+ gCreatingSpriteTemplate.images = sSpriteFrameImages_MonOrTrainerPic[imagesSet];
+ gCreatingSpriteTemplate.anims = gSpriteAnimTable_81E7C64;
}
-static void sub_80918B0(u16 a, u8 b)
+static void SetSpriteTemplateForSizeComparisonTrainerPic(u16 paletteTag, u8 imagesSet)
{
- gUnknown_02024E8C = gUnknown_083B57A4;
- gUnknown_02024E8C.paletteTag = a;
- gUnknown_02024E8C.images = gUnknown_083B5794[b];
- gUnknown_02024E8C.anims = gUnknown_081EC2A4[0];
+ gCreatingSpriteTemplate = sMonOrTrainerPicSpriteTemplate;
+ gCreatingSpriteTemplate.paletteTag = paletteTag;
+ gCreatingSpriteTemplate.images = sSpriteFrameImages_MonOrTrainerPic[imagesSet];
+ gCreatingSpriteTemplate.anims = gUnknown_081EC2A4[0];
}
-u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum)
+u16 CreateMonSpriteFromNationalDexNumber(u16 num, s16 x, s16 y, u16 paletteNum)
{
u8 spriteId;
@@ -4517,8 +4537,8 @@ u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum)
&gMonFrontPicTable[num],
gMonFrontPicCoords[num].coords,
gMonFrontPicCoords[num].y_offset,
- (void*)ewram_addr,
- gUnknown_083B5584[paletteNum],
+ (void *)EWRAM,
+ sMonOrTrainerPicDecompressDestPtrs[paletteNum],
num);
break;
case SPECIES_SPINDA:
@@ -4526,8 +4546,8 @@ u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum)
&gMonFrontPicTable[num],
gMonFrontPicCoords[num].coords,
gMonFrontPicCoords[num].y_offset,
- ewram_addr,
- gUnknown_083B5584[paletteNum],
+ (void *)EWRAM,
+ sMonOrTrainerPicDecompressDestPtrs[paletteNum],
num,
gSaveBlock2.pokedex.spindaPersonality,
1);
@@ -4537,21 +4557,21 @@ u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum)
&gMonFrontPicTable[num],
gMonFrontPicCoords[num].coords,
gMonFrontPicCoords[num].y_offset,
- ewram_addr,
- gUnknown_083B5584[paletteNum],
+ (void *)EWRAM,
+ sMonOrTrainerPicDecompressDestPtrs[paletteNum],
num,
gSaveBlock2.pokedex.unownPersonality,
1);
break;
}
LoadCompressedPalette(gMonPaletteTable[num].data, 0x100 + paletteNum * 16, 32);
- sub_8091878(paletteNum, paletteNum);
- spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
+ SetSpriteTemplateForPokemonPic(paletteNum, paletteNum);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, x, y, 0);
gSprites[spriteId].oam.paletteNum = paletteNum;
return spriteId;
}
-u16 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum)
+u16 CreateSizeScreenTrainerPic(u16 gender, s16 x, s16 y, u16 paletteNum)
{
u8 spriteId;
@@ -4559,29 +4579,29 @@ u16 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum)
&gTrainerFrontPicTable[gender],
gTrainerFrontPicCoords[gender].coords,
gTrainerFrontPicCoords[gender].y_offset,
- (void*)ewram_addr,
- gUnknown_083B5584[0],
+ (void *)EWRAM,
+ sMonOrTrainerPicDecompressDestPtrs[0],
gender);
- sub_80918B0(gender, 0);
- spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
+ SetSpriteTemplateForSizeComparisonTrainerPic(gender, 0);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, x, y, 0);
gSprites[spriteId].oam.paletteNum = paletteNum;
return spriteId;
}
-int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
+int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
{
u16 species;
u16 i;
u16 resultsCount;
u8 types[2];
- SortPokedex(a, b);
+ SortPokedex(dexMode, order);
for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++)
{
- if (gPokedexView->unk0[i].seen)
+ if (gPokedexView->pokedexList[i].seen)
{
- gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i];
+ gPokedexView->pokedexList[resultsCount] = gPokedexView->pokedexList[i];
resultsCount++;
}
}
@@ -4594,12 +4614,12 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
{
u8 r3;
- species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(gPokedexView->pokedexList[i].dexNum);
r3 = gSpeciesNames[species][0];
- if ((r3 >= gUnknown_083B57BC[abcGroup][0] && r3 < gUnknown_083B57BC[abcGroup][0] + gUnknown_083B57BC[abcGroup][1])
- || (r3 >= gUnknown_083B57BC[abcGroup][2] && r3 < gUnknown_083B57BC[abcGroup][2] + gUnknown_083B57BC[abcGroup][3]))
+ if ((r3 >= sLetterSearchRanges[abcGroup][0] && r3 < sLetterSearchRanges[abcGroup][0] + sLetterSearchRanges[abcGroup][1])
+ || (r3 >= sLetterSearchRanges[abcGroup][2] && r3 < sLetterSearchRanges[abcGroup][2] + sLetterSearchRanges[abcGroup][3]))
{
- gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i];
+ gPokedexView->pokedexList[resultsCount] = gPokedexView->pokedexList[i];
resultsCount++;
}
}
@@ -4611,11 +4631,11 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
{
for (i = 0, resultsCount = 0; i < gPokedexView->pokemonListCount; i++)
{
- species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(gPokedexView->pokedexList[i].dexNum);
if (bodyColor == gBaseStats[species].bodyColor)
{
- gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i];
+ gPokedexView->pokedexList[resultsCount] = gPokedexView->pokedexList[i];
resultsCount++;
}
}
@@ -4635,15 +4655,15 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
{
for (i = 0, resultsCount = 0; i < gPokedexView->pokemonListCount; i++)
{
- if (gPokedexView->unk0[i].owned)
+ if (gPokedexView->pokedexList[i].owned)
{
- species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(gPokedexView->pokedexList[i].dexNum);
types[0] = gBaseStats[species].type1;
types[1] = gBaseStats[species].type2;
if (types[0] == type1 || types[1] == type1)
{
- gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i];
+ gPokedexView->pokedexList[resultsCount] = gPokedexView->pokedexList[i];
resultsCount++;
}
}
@@ -4653,15 +4673,15 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
{
for (i = 0, resultsCount = 0; i < gPokedexView->pokemonListCount; i++)
{
- if (gPokedexView->unk0[i].owned)
+ if (gPokedexView->pokedexList[i].owned)
{
- species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(gPokedexView->pokedexList[i].dexNum);
types[0] = gBaseStats[species].type1;
types[1] = gBaseStats[species].type2;
if ((types[0] == type1 && types[1] == type2) || (types[0] == type2 && types[1] == type1))
{
- gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i];
+ gPokedexView->pokedexList[resultsCount] = gPokedexView->pokedexList[i];
resultsCount++;
}
}
@@ -4674,9 +4694,9 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
{
for (i = gPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
- gPokedexView->unk0[i].dexNum = 0xFFFF;
- gPokedexView->unk0[i].seen = FALSE;
- gPokedexView->unk0[i].owned = FALSE;
+ gPokedexView->pokedexList[i].dexNum = 0xFFFF;
+ gPokedexView->pokedexList[i].seen = FALSE;
+ gPokedexView->pokedexList[i].owned = FALSE;
}
}
@@ -4690,17 +4710,17 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2)
#define SUB_8091E20_WIDTH (216)
#endif
-void sub_8091E20(const u8 *str)
+void EraseAndPrintSearchTextBox(const u8 *str)
{
sub_8072AB0(str, 9, 120, SUB_8091E20_WIDTH, 32, 1);
}
-u8 sub_8091E3C(void)
+u8 LoadSearchMenu(void)
{
- return CreateTask(sub_8091E54, 0);
+ return CreateTask(Task_LoadSearchMenu, 0);
}
-static void sub_8091E54(u8 taskId)
+static void Task_LoadSearchMenu(u8 taskId)
{
u16 i;
@@ -4710,10 +4730,10 @@ static void sub_8091E54(u8 taskId)
case 0:
if (!gPaletteFade.active)
{
- gPokedexView->unk64A = 2;
- sub_8091060(0);
+ gPokedexView->currentPage = 2;
+ ResetOtherVideoRegisters(0);
LZ77UnCompVram(gPokedexMenuSearch_Gfx, (void *)VRAM);
- LZ77UnCompVram(gUnknown_08E96D2C, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(gPokedexMenuSearch_Tilemap, (void *)(VRAM + 0x7800));
LoadPalette(gPokedexMenuSearch_Pal + 1, 1, 0x7E);
if (!IsNationalPokedexEnabled())
{
@@ -4731,14 +4751,14 @@ static void sub_8091E54(u8 taskId)
case 1:
Text_LoadWindowTemplate(&gWindowTemplate_81E7064);
InitMenuWindow(&gWindowTemplate_81E7064);
- LoadCompressedObjectPic(&gUnknown_083A05CC[0]);
- LoadSpritePalettes(gUnknown_083A05DC);
- sub_809308C(taskId);
+ LoadCompressedObjectPic(&sInterfaceSpriteSheet[0]);
+ LoadSpritePalettes(sInterfaceSpritePalette);
+ CreateSearchParameterScrollArrows(taskId);
for (i = 0; i < 16; i++)
gTasks[taskId].data[i] = 0;
- sub_8092EB0(taskId);
- sub_8092AB0(0);
- sub_8092B68(taskId);
+ SetDefaultSearchModeAndOrder(taskId);
+ HighlightSelectedSearchTopBarItem(0);
+ PrintSelectedSearchParameters(taskId);
gMain.state++;
break;
case 2:
@@ -4753,26 +4773,26 @@ static void sub_8091E54(u8 taskId)
case 4:
if (!gPaletteFade.active)
{
- gTasks[taskId].func = sub_809204C;
+ gTasks[taskId].func = Task_SwitchToSearchMenuTopBar;
gMain.state = 0;
}
break;
}
}
-static void sub_809204C(u8 taskId)
+static void Task_SwitchToSearchMenuTopBar(u8 taskId)
{
- sub_8092AB0(gTasks[taskId].data[0]);
- sub_8092B68(taskId);
- gTasks[taskId].func = sub_809207C;
+ HighlightSelectedSearchTopBarItem(gTasks[taskId].data[0]);
+ PrintSelectedSearchParameters(taskId);
+ gTasks[taskId].func = Task_HandleSearchTopBarInput;
}
-static void sub_809207C(u8 taskId)
+static void Task_HandleSearchTopBarInput(u8 taskId)
{
if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_PC_OFF);
- gTasks[taskId].func = sub_80927B8;
+ gTasks[taskId].func = Task_ExitSearch;
return;
}
if (gMain.newKeys & A_BUTTON)
@@ -4782,16 +4802,16 @@ static void sub_809207C(u8 taskId)
case 0:
PlaySE(SE_PIN);
gTasks[taskId].data[1] = 0;
- gTasks[taskId].func = sub_809217C;
+ gTasks[taskId].func = Task_SwitchToSearchMenu;
break;
case 1:
PlaySE(SE_PIN);
gTasks[taskId].data[1] = 4;
- gTasks[taskId].func = sub_809217C;
+ gTasks[taskId].func = Task_SwitchToSearchMenu;
break;
case 2:
PlaySE(SE_PC_OFF);
- gTasks[taskId].func = sub_80927B8;
+ gTasks[taskId].func = Task_ExitSearch;
break;
}
return;
@@ -4800,47 +4820,47 @@ static void sub_809207C(u8 taskId)
{
PlaySE(SE_DEX_PAGE);
gTasks[taskId].data[0]--;
- sub_8092AB0(gTasks[taskId].data[0]);
+ HighlightSelectedSearchTopBarItem(gTasks[taskId].data[0]);
}
if ((gMain.newKeys & DPAD_RIGHT) && gTasks[taskId].data[0] < 2)
{
PlaySE(SE_DEX_PAGE);
gTasks[taskId].data[0]++;
- sub_8092AB0(gTasks[taskId].data[0]);
+ HighlightSelectedSearchTopBarItem(gTasks[taskId].data[0]);
}
}
-static void sub_809217C(u8 taskId)
+static void Task_SwitchToSearchMenu(u8 taskId)
{
- sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]);
- sub_8092B68(taskId);
- gTasks[taskId].func = sub_80921B0;
+ HighlightSelectedSearchMenuItem(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ PrintSelectedSearchParameters(taskId);
+ gTasks[taskId].func = Task_HandleSearchMenuInput;
}
-static void sub_80921B0(u8 taskId)
+static void Task_HandleSearchMenuInput(u8 taskId)
{
const u8 (*r6)[4];
if (gTasks[taskId].data[0] != 0)
{
if (!IsNationalPokedexEnabled())
- r6 = gUnknown_083B58A4;
+ r6 = sSearchMovementMap_ShiftHoennDex;
else
- r6 = gUnknown_083B586C;
+ r6 = sSearchMovementMap_ShiftNatDex;
}
else
{
if (!IsNationalPokedexEnabled())
- r6 = gUnknown_083B5888;
+ r6 = sSearchMovementMap_SearchHoennDex;
else
- r6 = gUnknown_083B5850;
+ r6 = sSearchMovementMap_SearchNatDex;
}
if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_BALL);
- sub_8092EB0(taskId);
- gTasks[taskId].func = sub_809204C;
+ SetDefaultSearchModeAndOrder(taskId);
+ gTasks[taskId].func = Task_SwitchToSearchMenuTopBar;
return;
}
if (gMain.newKeys & A_BUTTON)
@@ -4849,30 +4869,30 @@ static void sub_80921B0(u8 taskId)
{
if (gTasks[taskId].data[0] != 0)
{
- gUnknown_0202FFBA = 0x40;
- gPokedexView->unk62A = 0x40;
- gUnknown_0202FFB8 = 0;
- gPokedexView->unk610 = 0;
- gSaveBlock2.pokedex.unknown1 = sub_8092E10(taskId, 5);
+ sPokeBallRotation = 0x40;
+ gPokedexView->pokeBallRotationBackup = 0x40;
+ sLastSelectedPokemon = 0;
+ gPokedexView->selectedPokemonBackup = 0;
+ gSaveBlock2.pokedex.mode = GetSearchModeSelection(taskId, 5);
if (!IsNationalPokedexEnabled())
- gSaveBlock2.pokedex.unknown1 = 0;
- gPokedexView->unk614 = gSaveBlock2.pokedex.unknown1;
- gSaveBlock2.pokedex.order = sub_8092E10(taskId, 4);
- gPokedexView->unk618 = gSaveBlock2.pokedex.order;
+ gSaveBlock2.pokedex.mode = 0;
+ gPokedexView->dexModeBackup = gSaveBlock2.pokedex.mode;
+ gSaveBlock2.pokedex.order = GetSearchModeSelection(taskId, 4);
+ gPokedexView->dexOrderBackup = gSaveBlock2.pokedex.order;
PlaySE(SE_PC_OFF);
- gTasks[taskId].func = sub_80927B8;
+ gTasks[taskId].func = Task_ExitSearch;
}
else
{
- sub_8091E20(gDexText_Searching);
- gTasks[taskId].func = sub_80923FC;
+ EraseAndPrintSearchTextBox(gDexText_Searching);
+ gTasks[taskId].func = Task_StartPokedexSearch;
PlaySE(SE_DEX_SEARCH);
}
}
else
{
PlaySE(SE_PIN);
- gTasks[taskId].func = sub_80925CC;
+ gTasks[taskId].func = Task_SelectSearchMenuItem;
}
return;
}
@@ -4881,123 +4901,123 @@ static void sub_80921B0(u8 taskId)
{
PlaySE(SE_SELECT);
gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][0];
- sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ HighlightSelectedSearchMenuItem(gTasks[taskId].data[0], gTasks[taskId].data[1]);
}
if ((gMain.newKeys & DPAD_RIGHT) && r6[gTasks[taskId].data[1]][1] != 0xFF)
{
PlaySE(SE_SELECT);
gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][1];
- sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ HighlightSelectedSearchMenuItem(gTasks[taskId].data[0], gTasks[taskId].data[1]);
}
if ((gMain.newKeys & DPAD_UP) && r6[gTasks[taskId].data[1]][2] != 0xFF)
{
PlaySE(SE_SELECT);
gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][2];
- sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ HighlightSelectedSearchMenuItem(gTasks[taskId].data[0], gTasks[taskId].data[1]);
}
if ((gMain.newKeys & DPAD_DOWN) && r6[gTasks[taskId].data[1]][3] != 0xFF)
{
PlaySE(SE_SELECT);
gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][3];
- sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]);
+ HighlightSelectedSearchMenuItem(gTasks[taskId].data[0], gTasks[taskId].data[1]);
}
}
-static void sub_80923FC(u8 taskId)
+static void Task_StartPokedexSearch(u8 taskId)
{
- u8 r10 = sub_8092E10(taskId, 5);
- u8 r9 = sub_8092E10(taskId, 4);
- u8 r8 = sub_8092E10(taskId, 0);
- u8 r6 = sub_8092E10(taskId, 1);
- u8 r4 = sub_8092E10(taskId, 2);
- u8 r0 = sub_8092E10(taskId, 3);
+ u8 r10 = GetSearchModeSelection(taskId, 5);
+ u8 r9 = GetSearchModeSelection(taskId, 4);
+ u8 r8 = GetSearchModeSelection(taskId, 0);
+ u8 r6 = GetSearchModeSelection(taskId, 1);
+ u8 r4 = GetSearchModeSelection(taskId, 2);
+ u8 r0 = GetSearchModeSelection(taskId, 3);
- sub_8091AF8(r10, r9, r8, r6, r4, r0);
- gTasks[taskId].func = sub_80924A4;
+ DoPokedexSearch(r10, r9, r8, r6, r4, r0);
+ gTasks[taskId].func = Task_WaitAndCompleteSearch;
}
-static void sub_80924A4(u8 taskId)
+static void Task_WaitAndCompleteSearch(u8 taskId)
{
if (!IsSEPlaying())
{
if (gPokedexView->pokemonListCount != 0)
{
PlaySE(SE_SUCCESS);
- sub_8091E20(gDexText_SearchComplete);
+ EraseAndPrintSearchTextBox(gDexText_SearchComplete);
}
else
{
PlaySE(SE_FAILURE);
- sub_8091E20(gDexText_NoMatching);
+ EraseAndPrintSearchTextBox(gDexText_NoMatching);
}
- gTasks[taskId].func = sub_8092508;
+ gTasks[taskId].func = Task_SearchCompleteWaitForInput;
}
}
-static void sub_8092508(u8 taskId)
+static void Task_SearchCompleteWaitForInput(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
if (gPokedexView->pokemonListCount != 0)
{
- gPokedexView->unk64F = 1;
- gPokedexView->dexMode = sub_8092E10(taskId, 5);
- gPokedexView->dexOrder = sub_8092E10(taskId, 4);
- gTasks[taskId].func = sub_80927B8;
+ gPokedexView->screenSwitchState = 1;
+ gPokedexView->dexMode = GetSearchModeSelection(taskId, 5);
+ gPokedexView->dexOrder = GetSearchModeSelection(taskId, 4);
+ gTasks[taskId].func = Task_ExitSearch;
PlaySE(SE_PC_OFF);
}
else
{
- gTasks[taskId].func = sub_809217C;
+ gTasks[taskId].func = Task_SwitchToSearchMenu;
PlaySE(SE_BALL);
}
}
}
-static void sub_80925B4(u16 a, int unused)
+static void PrintSelectorArrow(u16 a, int unused)
{
MenuCursor_SetPos814AD7C(0x90, (a * 2 + 1) * 8);
}
-static void sub_80925CC(u8 taskId)
+static void Task_SelectSearchMenuItem(u8 taskId)
{
u8 r0;
u16 *p1;
u16 *p2;
- sub_8092C8C(0);
+ DrawOrEraseSearchParameterBox(0);
r0 = gTasks[taskId].data[1];
- p1 = &gTasks[taskId].data[gUnknown_083B5A7C[r0].unk4];
- p2 = &gTasks[taskId].data[gUnknown_083B5A7C[r0].unk5];
+ p1 = (u16 *)&gTasks[taskId].data[sSearchOptions[r0].taskDataCursorPos];
+ p2 = (u16 *)&gTasks[taskId].data[sSearchOptions[r0].taskDataScrollOffset];
gTasks[taskId].data[14] = *p1;
gTasks[taskId].data[15] = *p2;
- sub_8092D78(taskId);
+ PrintSearchParameterText(taskId);
CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 11);
- sub_80925B4(*p1, 1);
- gTasks[taskId].func = sub_8092644;
+ PrintSelectorArrow(*p1, 1);
+ gTasks[taskId].func = Task_HandleSearchParameterInput;
}
-static void sub_8092644(u8 taskId)
+static void Task_HandleSearchParameterInput(u8 taskId)
{
u8 r1;
- const struct UnknownStruct2 *r8;
+ const struct SearchOptionText *r8;
u16 *p1;
u16 *p2;
u16 r2;
bool8 r3;
r1 = gTasks[taskId].data[1];
- r8 = gUnknown_083B5A7C[r1].unk0;
- p1 = &gTasks[taskId].data[gUnknown_083B5A7C[r1].unk4];
- p2 = &gTasks[taskId].data[gUnknown_083B5A7C[r1].unk5];
- r2 = gUnknown_083B5A7C[r1].unk6 - 1;
+ r8 = sSearchOptions[r1].texts;
+ p1 = (u16 *)&gTasks[taskId].data[sSearchOptions[r1].taskDataCursorPos];
+ p2 = (u16 *)&gTasks[taskId].data[sSearchOptions[r1].taskDataScrollOffset];
+ r2 = sSearchOptions[r1].numOptions - 1;
if (gMain.newKeys & A_BUTTON)
{
sub_814ADC8();
PlaySE(SE_PIN);
Menu_EraseWindowRect(18, 1, 28, 12);
- sub_8092C8C(1);
- gTasks[taskId].func = sub_809217C;
+ DrawOrEraseSearchParameterBox(1);
+ gTasks[taskId].func = Task_SwitchToSearchMenu;
return;
}
if (gMain.newKeys & B_BUTTON)
@@ -5005,10 +5025,10 @@ static void sub_8092644(u8 taskId)
sub_814ADC8();
PlaySE(SE_BALL);
Menu_EraseWindowRect(18, 1, 28, 12);
- sub_8092C8C(1);
+ DrawOrEraseSearchParameterBox(1);
*p1 = gTasks[taskId].data[14];
*p2 = gTasks[taskId].data[15];
- gTasks[taskId].func = sub_809217C;
+ gTasks[taskId].func = Task_SwitchToSearchMenu;
return;
}
r3 = FALSE;
@@ -5016,22 +5036,22 @@ static void sub_8092644(u8 taskId)
{
if (*p1 != 0)
{
- sub_80925B4(*p1, 0);
+ PrintSelectorArrow(*p1, 0);
(*p1)--;
- sub_80925B4(*p1, 1);
+ PrintSelectorArrow(*p1, 1);
r3 = TRUE;
}
else if (*p2 != 0)
{
(*p2)--;
- sub_8092D78(taskId);
- sub_80925B4(*p1, 1);
+ PrintSearchParameterText(taskId);
+ PrintSelectorArrow(*p1, 1);
r3 = TRUE;
}
if (r3)
{
PlaySE(SE_SELECT);
- sub_8091E20(r8[*p1 + *p2].text1);
+ EraseAndPrintSearchTextBox(r8[*p1 + *p2].description);
}
return;
}
@@ -5039,41 +5059,41 @@ static void sub_8092644(u8 taskId)
{
if (*p1 < 5 && *p1 < r2)
{
- sub_80925B4(*p1, 0);
+ PrintSelectorArrow(*p1, 0);
(*p1)++;
- sub_80925B4(*p1, 1);
+ PrintSelectorArrow(*p1, 1);
r3 = TRUE;
}
else if (r2 > 5 && *p2 < r2 - 5)
{
(*p2)++;
- sub_8092D78(taskId);
- sub_80925B4(5, 1);
+ PrintSearchParameterText(taskId);
+ PrintSelectorArrow(5, 1);
r3 = TRUE;
}
if (r3)
{
PlaySE(SE_SELECT);
- sub_8091E20(r8[*p1 + *p2].text1);
+ EraseAndPrintSearchTextBox(r8[*p1 + *p2].description);
}
return;
}
}
-static void sub_80927B8(u8 taskId)
+static void Task_ExitSearch(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].func = sub_80927F0;
+ gTasks[taskId].func = Task_ExitSearchWaitForFade;
}
-static void sub_80927F0(u8 taskId)
+static void Task_ExitSearchWaitForFade(u8 taskId)
{
if (!gPaletteFade.active)
DestroyTask(taskId);
}
#define VRAM_ADDR(a, b, c) *(u16 *)(BG_VRAM + (15 * 0x800) + (c) * 64 + ((b) + (a))*2)
-void sub_8092810(u8 a, u8 b, u8 c, u8 d)
+void SetSearchRectHighlight(u8 a, u8 b, u8 c, u8 d)
{
u16 i, j;
@@ -5092,156 +5112,172 @@ void sub_8092810(u8 a, u8 b, u8 c, u8 d)
}
}
-static void sub_809286C(u8 a, u8 b, u8 c)
+static void DrawSearchMenuItemBgHighlight(u8 searchBg, u8 unselected, u8 disabled)
{
- u8 r5 = (b & 1) | ((c & 1) << 1);
+ u8 r5 = (unselected & 1) | ((disabled & 1) << 1);
- switch (a)
+ switch (searchBg)
{
case 0:
case 1:
case 2:
- sub_8092810(r5, gUnknown_083B57E4[a].unk4, gUnknown_083B57E4[a].unk5, gUnknown_083B57E4[a].unk6);
+ SetSearchRectHighlight(r5,
+ sSearchMenuTopBarItems[searchBg].highlightX,
+ sSearchMenuTopBarItems[searchBg].highlightY,
+ sSearchMenuTopBarItems[searchBg].highlightWidth);
break;
case 3:
case 4:
case 7:
case 8:
- sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5, gUnknown_083B57FC[a - 3].unk6);
+ SetSearchRectHighlight(r5,
+ sSearchMenuItems[searchBg - 3].titleBgX,
+ sSearchMenuItems[searchBg - 3].titleBgY,
+ sSearchMenuItems[searchBg - 3].titleBgWidth);
// fall through
case 5:
case 6:
- sub_8092810(r5, gUnknown_083B57FC[a - 3].unk7, gUnknown_083B57FC[a - 3].unk8, gUnknown_083B57FC[a - 3].unk9);
+ SetSearchRectHighlight(r5,
+ sSearchMenuItems[searchBg - 3].selectionBgX,
+ sSearchMenuItems[searchBg - 3].selectionBgY,
+ sSearchMenuItems[searchBg - 3].selectionBgWidth);
break;
case 10:
- sub_8092810(r5, gUnknown_083B57FC[2].unk4, gUnknown_083B57FC[2].unk5, gUnknown_083B57FC[2].unk6);
+ SetSearchRectHighlight(
+ r5, sSearchMenuItems[2].titleBgX, sSearchMenuItems[2].titleBgY, sSearchMenuItems[2].titleBgWidth);
break;
case 9:
if (!IsNationalPokedexEnabled())
- sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5 - 2, gUnknown_083B57FC[a - 3].unk6);
+ SetSearchRectHighlight(r5,
+ sSearchMenuItems[searchBg - 3].titleBgX,
+ sSearchMenuItems[searchBg - 3].titleBgY - 2,
+ sSearchMenuItems[searchBg - 3].titleBgWidth);
else
- sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5, gUnknown_083B57FC[a - 3].unk6);
+ SetSearchRectHighlight(r5,
+ sSearchMenuItems[searchBg - 3].titleBgX,
+ sSearchMenuItems[searchBg - 3].titleBgY,
+ sSearchMenuItems[searchBg - 3].titleBgWidth);
break;
}
}
-static void sub_8092964(u8 a)
+static void SetInitialSearchMenuBgHighlights(u8 topBarItem)
{
- switch (a)
+ switch (topBarItem)
{
case 0:
- sub_809286C(0, 0, 0);
- sub_809286C(1, 1, 0);
- sub_809286C(2, 1, 0);
- sub_809286C(3, 1, 0);
- sub_809286C(4, 1, 0);
- sub_809286C(10, 1, 0);
- sub_809286C(5, 1, 0);
- sub_809286C(6, 1, 0);
- sub_809286C(7, 1, 0);
- sub_809286C(8, 1, 0);
- sub_809286C(9, 1, 0);
+ DrawSearchMenuItemBgHighlight(0, 0, 0);
+ DrawSearchMenuItemBgHighlight(1, 1, 0);
+ DrawSearchMenuItemBgHighlight(2, 1, 0);
+ DrawSearchMenuItemBgHighlight(3, 1, 0);
+ DrawSearchMenuItemBgHighlight(4, 1, 0);
+ DrawSearchMenuItemBgHighlight(10, 1, 0);
+ DrawSearchMenuItemBgHighlight(5, 1, 0);
+ DrawSearchMenuItemBgHighlight(6, 1, 0);
+ DrawSearchMenuItemBgHighlight(7, 1, 0);
+ DrawSearchMenuItemBgHighlight(8, 1, 0);
+ DrawSearchMenuItemBgHighlight(9, 1, 0);
break;
case 1:
- sub_809286C(0, 1, 0);
- sub_809286C(1, 0, 0);
- sub_809286C(2, 1, 0);
- sub_809286C(3, 1, 1);
- sub_809286C(4, 1, 1);
- sub_809286C(10, 1, 1);
- sub_809286C(5, 1, 1);
- sub_809286C(6, 1, 1);
- sub_809286C(7, 1, 0);
- sub_809286C(8, 1, 0);
- sub_809286C(9, 1, 0);
+ DrawSearchMenuItemBgHighlight(0, 1, 0);
+ DrawSearchMenuItemBgHighlight(1, 0, 0);
+ DrawSearchMenuItemBgHighlight(2, 1, 0);
+ DrawSearchMenuItemBgHighlight(3, 1, 1);
+ DrawSearchMenuItemBgHighlight(4, 1, 1);
+ DrawSearchMenuItemBgHighlight(10, 1, 1);
+ DrawSearchMenuItemBgHighlight(5, 1, 1);
+ DrawSearchMenuItemBgHighlight(6, 1, 1);
+ DrawSearchMenuItemBgHighlight(7, 1, 0);
+ DrawSearchMenuItemBgHighlight(8, 1, 0);
+ DrawSearchMenuItemBgHighlight(9, 1, 0);
break;
case 2:
- sub_809286C(0, 1, 0);
- sub_809286C(1, 1, 0);
- sub_809286C(2, 0, 0);
- sub_809286C(3, 1, 1);
- sub_809286C(4, 1, 1);
- sub_809286C(10, 1, 1);
- sub_809286C(5, 1, 1);
- sub_809286C(6, 1, 1);
- sub_809286C(7, 1, 1);
- sub_809286C(8, 1, 1);
- sub_809286C(9, 1, 1);
+ DrawSearchMenuItemBgHighlight(0, 1, 0);
+ DrawSearchMenuItemBgHighlight(1, 1, 0);
+ DrawSearchMenuItemBgHighlight(2, 0, 0);
+ DrawSearchMenuItemBgHighlight(3, 1, 1);
+ DrawSearchMenuItemBgHighlight(4, 1, 1);
+ DrawSearchMenuItemBgHighlight(10, 1, 1);
+ DrawSearchMenuItemBgHighlight(5, 1, 1);
+ DrawSearchMenuItemBgHighlight(6, 1, 1);
+ DrawSearchMenuItemBgHighlight(7, 1, 1);
+ DrawSearchMenuItemBgHighlight(8, 1, 1);
+ DrawSearchMenuItemBgHighlight(9, 1, 1);
break;
}
}
-static void sub_8092AB0(u8 a)
+static void HighlightSelectedSearchTopBarItem(u8 topBarItem)
{
- sub_8092964(a);
- sub_8091E20(gUnknown_083B57E4[a].text);
+ SetInitialSearchMenuBgHighlights(topBarItem);
+ EraseAndPrintSearchTextBox(sSearchMenuTopBarItems[topBarItem].text);
}
-static void sub_8092AD4(u8 a, u8 b)
+static void HighlightSelectedSearchMenuItem(u8 topBarItem, u8 menuItem)
{
- sub_8092964(a);
- switch (b)
+ SetInitialSearchMenuBgHighlights(topBarItem);
+ switch (menuItem)
{
case 0:
- sub_809286C(3, 0, 0);
+ DrawSearchMenuItemBgHighlight(3, 0, 0);
break;
case 1:
- sub_809286C(4, 0, 0);
+ DrawSearchMenuItemBgHighlight(4, 0, 0);
break;
case 2:
- sub_809286C(10, 0, 0);
- sub_809286C(5, 0, 0);
+ DrawSearchMenuItemBgHighlight(10, 0, 0);
+ DrawSearchMenuItemBgHighlight(5, 0, 0);
break;
case 3:
- sub_809286C(10, 0, 0);
- sub_809286C(6, 0, 0);
+ DrawSearchMenuItemBgHighlight(10, 0, 0);
+ DrawSearchMenuItemBgHighlight(6, 0, 0);
break;
case 4:
- sub_809286C(7, 0, 0);
+ DrawSearchMenuItemBgHighlight(7, 0, 0);
break;
case 5:
- sub_809286C(8, 0, 0);
+ DrawSearchMenuItemBgHighlight(8, 0, 0);
break;
case 6:
- sub_809286C(9, 0, 0);
+ DrawSearchMenuItemBgHighlight(9, 0, 0);
break;
}
- sub_8091E20(gUnknown_083B57FC[b].text);
+ EraseAndPrintSearchTextBox(sSearchMenuItems[menuItem].text);
}
-static void sub_8092B68(u8 taskId)
+static void PrintSelectedSearchParameters(u8 taskId)
{
u16 var;
var = gTasks[taskId].data[6] + gTasks[taskId].data[7];
- StringCopy(gStringVar1, gUnknown_083B5910[var].text2);
+ StringCopy(gStringVar1, sDexSearchNameOptions[var].title);
Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 16, 1);
var = gTasks[taskId].data[8] + gTasks[taskId].data[9];
- StringCopy(gStringVar1, gUnknown_083B5968[var].text2);
+ StringCopy(gStringVar1, sDexSearchColorOptions[var].title);
Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 32, 1);
var = gTasks[taskId].data[10] + gTasks[taskId].data[11];
- StringCopy(gStringVar1, gUnknown_083B59C8[var].text2);
+ StringCopy(gStringVar1, sDexSearchTypeOptions[var].title);
Menu_PrintTextPixelCoords(gUnknown_083B5AAC, 45, 48, 1);
var = gTasks[taskId].data[12] + gTasks[taskId].data[13];
- StringCopy(gStringVar1, gUnknown_083B59C8[var].text2);
+ StringCopy(gStringVar1, sDexSearchTypeOptions[var].title);
Menu_PrintTextPixelCoords(gUnknown_083B5AAC, 93, 48, 1);
var = gTasks[taskId].data[4] + gTasks[taskId].data[5];
- StringCopy(gStringVar1, gUnknown_083B58D8[var].text2);
+ StringCopy(gStringVar1, sDexOrderOptions[var].title);
Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 64, 1);
if (IsNationalPokedexEnabled())
{
var = gTasks[taskId].data[2] + gTasks[taskId].data[3];
- StringCopy(gStringVar1, gUnknown_083B58C0[var].text2);
+ StringCopy(gStringVar1, sDexModeOptions[var].title);
Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 80, 1);
}
}
-static void sub_8092C8C(u8 a)
+static void DrawOrEraseSearchParameterBox(u8 a)
{
u16 i;
u16 j;
@@ -5276,29 +5312,31 @@ static void sub_8092C8C(u8 a)
}
}
-static void sub_8092D78(u8 taskId)
+// Prints the currently viewable search parameter titles in the right-hand text box
+// and the currently selected search parameter description in the bottom text box
+static void PrintSearchParameterText(u8 taskId)
{
- const struct UnknownStruct2 *r6 = gUnknown_083B5A7C[gTasks[taskId].data[1]].unk0;
- const u16 *r8 = &gTasks[taskId].data[gUnknown_083B5A7C[gTasks[taskId].data[1]].unk4];
- const u16 *r7 = &gTasks[taskId].data[gUnknown_083B5A7C[gTasks[taskId].data[1]].unk5];
+ const struct SearchOptionText *r6 = sSearchOptions[gTasks[taskId].data[1]].texts;
+ const u16 *r8 = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].data[1]].taskDataCursorPos];
+ const u16 *r7 = &gTasks[taskId].data[sSearchOptions[gTasks[taskId].data[1]].taskDataScrollOffset];
u16 i;
u16 j;
Menu_EraseWindowRect(18, 1, 28, 12);
- for (i = 0, j = *r7; i < 6 && r6[j].text2 != NULL; i++, j++)
+ for (i = 0, j = *r7; i < 6 && r6[j].title != NULL; i++, j++)
{
#ifndef NONMATCHING
j += 0; // Useless statement needed to match
#endif
- Menu_PrintText(r6[j].text2, 18, i * 2 + 1);
+ Menu_PrintText(r6[j].title, 18, i * 2 + 1);
}
- sub_8091E20(r6[*r8 + *r7].text1);
+ EraseAndPrintSearchTextBox(r6[*r8 + *r7].description);
}
-static u8 sub_8092E10(u8 taskId, u8 b)
+static u8 GetSearchModeSelection(u8 taskId, u8 b)
{
- const u16 *ptr1 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk4];
- const u16 *ptr2 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk5];
+ const u16 *ptr1 = &gTasks[taskId].data[sSearchOptions[b].taskDataCursorPos];
+ const u16 *ptr2 = &gTasks[taskId].data[sSearchOptions[b].taskDataScrollOffset];
u16 r2 = *ptr1 + *ptr2;
switch (b)
@@ -5306,9 +5344,9 @@ static u8 sub_8092E10(u8 taskId, u8 b)
default:
return 0;
case 5:
- return gUnknown_083B5A60[r2];
+ return sPokedexModes[r2];
case 4:
- return gUnknown_083B5A62[r2];
+ return sOrderOptions[r2];
case 0:
if (r2 == 0)
return 0xFF;
@@ -5321,15 +5359,15 @@ static u8 sub_8092E10(u8 taskId, u8 b)
return r2 - 1;
case 2:
case 3:
- return gUnknown_083B5A68[r2];
+ return sDexSearchTypeIds[r2];
}
}
-static void sub_8092EB0(u8 taskId)
+static void SetDefaultSearchModeAndOrder(u8 taskId)
{
u16 r3;
- switch (gPokedexView->unk614)
+ switch (gPokedexView->dexModeBackup)
{
default:
case 0:
@@ -5341,7 +5379,7 @@ static void sub_8092EB0(u8 taskId)
}
gTasks[taskId].data[2] = r3;
- switch (gPokedexView->unk618)
+ switch (gPokedexView->dexOrderBackup)
{
default:
case 0:
@@ -5366,11 +5404,11 @@ static void sub_8092EB0(u8 taskId)
gTasks[taskId].data[4] = r3;
}
-static bool8 sub_8092F44(u8 taskId)
+static bool8 SearchParamCantScrollUp(u8 taskId)
{
u8 val1 = gTasks[taskId].data[1];
- const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5];
- u16 val2 = gUnknown_083B5A7C[val1].unk6 - 1;
+ const u16 *ptr = (const u16 *)&gTasks[taskId].data[sSearchOptions[val1].taskDataScrollOffset];
+ u16 val2 = sSearchOptions[val1].numOptions - 1;
if (val2 > 5 && *ptr != 0)
return FALSE;
@@ -5378,11 +5416,11 @@ static bool8 sub_8092F44(u8 taskId)
return TRUE;
}
-static bool8 sub_8092F8C(u8 taskId)
+static bool8 SearchParamCantScrollDown(u8 taskId)
{
u8 val1 = gTasks[taskId].data[1];
- const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5];
- u16 val2 = gUnknown_083B5A7C[val1].unk6 - 1;
+ const u16 *ptr = (const u16 *)&gTasks[taskId].data[sSearchOptions[val1].taskDataScrollOffset];
+ u16 val2 = sSearchOptions[val1].numOptions - 1;
if (val2 > 5 && *ptr < val2 - 5)
return FALSE;
@@ -5390,28 +5428,28 @@ static bool8 sub_8092F8C(u8 taskId)
return TRUE;
}
-static void sub_8092FD8(struct Sprite *sprite)
+static void SpriteCB_SearchParameterScrollArrow(struct Sprite *sprite)
{
- if (gTasks[sprite->data[0]].func == sub_8092644)
+ if (gTasks[sprite->data[0]].func == Task_HandleSearchParameterInput)
{
u8 val;
if (sprite->data[1] != 0)
{
- if (sub_8092F8C(sprite->data[0]))
+ if (SearchParamCantScrollDown(sprite->data[0]))
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
}
else
{
- if (sub_8092F44(sprite->data[0]))
+ if (SearchParamCantScrollUp(sprite->data[0]))
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
}
val = sprite->data[2] + sprite->data[1] * 128;
- sprite->pos2.y = gSineTable[val] / 128;
+ sprite->y2 = gSineTable[val] / 128;
sprite->data[2] += 8;
}
else
@@ -5420,18 +5458,18 @@ static void sub_8092FD8(struct Sprite *sprite)
}
}
-static void sub_809308C(u8 taskId)
+static void CreateSearchParameterScrollArrows(u8 taskId)
{
u8 spriteId;
- spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 4, 0);
+ spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 4, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 0;
- gSprites[spriteId].callback = sub_8092FD8;
+ gSprites[spriteId].callback = SpriteCB_SearchParameterScrollArrow;
- spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 108, 0);
+ spriteId = CreateSprite(&sScrollArrowSpriteTemplate, 184, 108, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 1;
gSprites[spriteId].vFlip = TRUE;
- gSprites[spriteId].callback = sub_8092FD8;
+ gSprites[spriteId].callback = SpriteCB_SearchParameterScrollArrow;
}
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 9abea27a1..ec0de84f8 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -11,37 +11,37 @@
extern struct SoundInfo gSoundInfo;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-struct Unk201C800 {
- s8 unk_0;
- s8 unk_1;
- u8 unk_2;
- u16 unk_4;
+struct PokedexCryMeterNeedle {
+ s8 rotation;
+ s8 targetRotation;
+ u8 moveIncrement;
+ u16 spriteId;
};
-struct PokedexCryScreen_201C000
+struct PokedexCryScreen
{
- u8 unk0000[0x10];
- u8 unk0010;
- u8 unk0011;
- u8 unk0012;
- u16 unk0014;
- u8 unk0016;
+ u8 cryWaveformBuffer[0x10];
+ u8 cryState;
+ u8 playhead;
+ u8 waveformPreviousY;
+ u16 charBase;
+ u8 playStartPos;
u16 species;
- u8 unk001A;
- u8 unk001B;
+ u8 cryOverrideCountdown;
+ u8 cryRepeatDelay;
};
-void sub_811A0A0(u16 species);
-void sub_811A0C0(void);
-void sub_811A124(void);
-void sub_811A15C(u8);
-void sub_811A1C8(u8, u8);
-void sub_811A324(void);
-void sub_811A350(u8, u16, u8);
-void sub_811A534(struct Sprite *);
-void sub_811A6D8(s8);
+void PlayCryScreenCry(u16 species);
+void BufferCryWaveformSegment(void);
+void DrawWaveformFlatline(void);
+void AdvancePlayhead(u8 bgId);
+void DrawWaveformSegment(u8 position, u8 amplitude);
+void DrawWaveformWindow(void);
+void ShiftWaveformOver(u8 bgId, s16 pos, u8 axis);
+void SpriteCB_CryMeterNeedle(struct Sprite *);
+void SetCryMeterNeedleTarget(s8);
-u8 gUnknown_03005E98;
+u8 gDexCryScreenState;
// data/pokedex_cry_screen.o
@@ -49,16 +49,16 @@ const u16 CryMeterNeedlePalette[] = INCBIN_U16("graphics/pokedex/cry_meter_needl
const u8 CryMeterNeedleTiles[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp");
#if ENGLISH
-const u16 gUnknown_083FAE7C[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin");
-const u16 gUnknown_083FAF1C[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
-const u8 gUnknown_083FAF3C[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
+const u16 gCryMeter_Tilemap[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin");
+const u16 gCryMeter_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
+const u8 gCryMeter_Gfx[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
#else
-extern const u16 gUnknown_083FAE7C[];
-extern const u16 gUnknown_083FAF1C[];
-extern const u8 gUnknown_083FAF3C[];
+extern const u16 gCryMeter_Tilemap[];
+extern const u16 gCryMeter_Pal[];
+extern const u8 gCryMeter_Gfx[];
#endif // ENGLISH
-const u16 gUnknown_083FB274[][72] = {
+const u16 sWaveformOffsets[][72] = {
{
0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
0x0400, 0x0404, 0x0408, 0x040C, 0x0410, 0x0414, 0x0418, 0x041C,
@@ -142,13 +142,16 @@ const u16 gUnknown_083FB274[][72] = {
}
};
-struct PokedexCryScreen_201C000 * const gPokedexCryScreenPtr = (struct PokedexCryScreen_201C000 *)(gSharedMem + 0x1c000);
+struct PokedexCryScreen * const gPokedexCryScreenPtr = &ePokedexCryScreen;
-const u16 gUnknown_083FB6F8[] = INCBIN_U16("graphics/pokedex/83FB6F8.gbapal");
-const u16 gUnknown_083FB718[] = INCBIN_U16("graphics/pokedex/83FB718.4bpp");
+const u16 sCryScreenBg_Pal[] = INCBIN_U16("graphics/pokedex/83FB6F8.gbapal");
+const u16 sCryScreenBg_Gfx[] = INCBIN_U16("graphics/pokedex/83FB718.4bpp");
-const u8 gUnknown_083FB738[] = {0xF0, 0x0F};
-const u8 gUnknown_083FB73A[][16] = {
+const u8 sWaveformTileDataNybbleMasks[] = {0xF0, 0x0F};
+
+// Waveform is blue in the middle (8) grading to white at peaks (15)
+// Split into two arrays for the two vertical slice halves
+const u8 sWaveformColor[][16] = {
{
0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
@@ -158,32 +161,30 @@ const u8 gUnknown_083FB73A[][16] = {
}
};
-struct Unk201C800 * const gPokedexCryScreenPtr2 = (struct Unk201C800 *)(gSharedMem + 0x1c800);
+struct PokedexCryMeterNeedle * const gPokedexCryScreenPtr2 = &ePokedexCryScreen2;
-union AnimCmd gSpriteAnim_83FB760[] = {
+union AnimCmd sAnim_CryMeterNeedle_0[] = {
ANIMCMD_FRAME(0, 30),
ANIMCMD_END
};
-const union AnimCmd * gSpriteAnimTable_83FB768[] = {
- gSpriteAnim_83FB760
-};
+const union AnimCmd *sAnimTable_CryMeterNeedle[] = { sAnim_CryMeterNeedle_0 };
-struct OamData gOamData_83FB76C = {
+struct OamData sOamData_CryMeterNeedle = {
.y = 160,
.affineMode = ST_OAM_AFFINE_NORMAL,
.size = 3,
.priority = 1
};
-struct SpriteTemplate gSpriteTemplate_83FB774 = {
+struct SpriteTemplate sSpriteTemplate_CryMeterNeedle = {
0x2000,
0x2000,
- &gOamData_83FB76C,
- gSpriteAnimTable_83FB768,
+ &sOamData_CryMeterNeedle,
+ sAnimTable_CryMeterNeedle,
NULL,
gDummySpriteAffineAnimTable,
- sub_811A534
+ SpriteCB_CryMeterNeedle
};
struct SpriteSheet gCryMeterNeedleSpriteSheets[] = {
@@ -202,640 +203,254 @@ struct SpritePalette gCryMeterNeedleSpritePalettes[] = {
#define CRY_METER_MAP_WIDTH 32
#endif
-#ifdef NONMATCHING
-// caused by some switch branch weirdness
-u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1)
+bool8 LoadCryWaveformWindow(struct CryScreenWindow *cry, u8 bgId)
{
u8 i;
u8 j;
- u16 r6;
- u16 r7;
- u8 r9 = FALSE;
- u32 offset;
+ u8 position;
+ u16 tileNum;
+ u16 screenBase;
+ bool8 finished = FALSE;
- switch (gUnknown_03005E98)
+ switch (gDexCryScreenState)
{
- case 0:
- gPokedexCryScreenPtr->unk0014 = cry->unk0;
- gPokedexCryScreenPtr->unk0016 = cry->yPos;
- gPokedexCryScreenPtr->unk001A = 0;
- gPokedexCryScreenPtr->unk001B = 0;
- gPokedexCryScreenPtr->unk0010 = 0;
- gPokedexCryScreenPtr->unk0012 = 28;
- gPokedexCryScreenPtr->unk0011 = 0;
- sub_811A350(arg1, -8 * cry->xPos, 0);
- for (i = 0; i < 7; i++)
- {
- for (j = 0; j < 32; j++)
- {
- DmaCopy16(3, gUnknown_083FB718, gSharedMem[32 * i + j], 32);
- }
- }
- gUnknown_03005E98++;
- break;
- case 1:
- r7 = cry->unk2 << 11;
- r6 = (cry->paletteNo << 12) + ((unsigned)(cry->unk0 << 18) >> 23);
- for (i = 0; i < 7; i++)
+ case 0:
+ gPokedexCryScreenPtr->charBase = cry->charBase;
+ gPokedexCryScreenPtr->playStartPos = cry->yPos;
+ gPokedexCryScreenPtr->cryOverrideCountdown = 0;
+ gPokedexCryScreenPtr->cryRepeatDelay = 0;
+ gPokedexCryScreenPtr->cryState = 0;
+ gPokedexCryScreenPtr->waveformPreviousY = 28;
+ gPokedexCryScreenPtr->playhead = 0;
+ ShiftWaveformOver(bgId, -8 * cry->xPos, 1);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
{
- for (j = 0; j < 32; j++)
- {
- offset = j << 1;
- offset += i << 6;
- offset += r7;
- *((u16 *)(VRAM + offset)) = r6++;
- }
+ DmaCopy16(3, sCryScreenBg_Gfx, &sCryWaveformWindowTiledata[((32 * i) + j) * 32], 32);
}
- for (i = 0; i < gPokedexCryScreenPtr->unk0016 * 8; i++)
+ }
+ gDexCryScreenState++;
+ break;
+ case 1:
+ screenBase = cry->screenBase * 0x800;
+ tileNum = (cry->paletteNo << 12) + ((cry->charBase >> 5) & 0x1FF);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
{
- sub_811A1C8(i, 0);
+ *((u16 *)(VRAM + (2 * j) + (64 * i) + screenBase)) = tileNum++;
}
- gUnknown_03005E98++;
- break;
- case 2:
- sub_811A324();
- LoadPalette(gUnknown_083FB6F8, cry->paletteNo * 16, 32);
- r9 = TRUE;
- break;
+ }
+ for (position = 0; position < gPokedexCryScreenPtr->playStartPos * 8; position++)
+ {
+ DrawWaveformSegment(position, 0);
+ }
+ gDexCryScreenState++;
+ break;
+ case 2:
+ DrawWaveformWindow();
+ LoadPalette(sCryScreenBg_Pal, cry->paletteNo * 16, 32);
+ finished = TRUE;
+ break;
}
- return r9;
+ return finished;
}
-#else
-NAKED u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r9\n"
- "\tmov r6, r8\n"
- "\tpush {r6,r7}\n"
- "\tadds r5, r0, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r2, r1, 24\n"
- "\tmovs r0, 0\n"
- "\tmov r9, r0\n"
- "\tldr r6, _08119E60 @ =gUnknown_03005E98\n"
- "\tldrb r0, [r6]\n"
- "\tcmp r0, 0x1\n"
- "\tbeq _08119EE0\n"
- "\tcmp r0, 0x1\n"
- "\tbgt _08119E64\n"
- "\tcmp r0, 0\n"
- "\tbeq _08119E6A\n"
- "\tb _08119F74\n"
- "\t.align 2, 0\n"
- "_08119E60: .4byte gUnknown_03005E98\n"
- "_08119E64:\n"
- "\tcmp r0, 0x2\n"
- "\tbeq _08119F60\n"
- "\tb _08119F74\n"
- "_08119E6A:\n"
- "\tldr r4, _08119ECC @ =gSharedMem + 0x1C000\n"
- "\tldrh r0, [r5]\n"
- "\tmovs r1, 0\n"
- "\tstrh r0, [r4, 0x14]\n"
- "\tldrb r0, [r5, 0x5]\n"
- "\tstrb r0, [r4, 0x16]\n"
- "\tstrb r1, [r4, 0x1A]\n"
- "\tstrb r1, [r4, 0x1B]\n"
- "\tstrb r1, [r4, 0x10]\n"
- "\tmovs r0, 0x1C\n"
- "\tstrb r0, [r4, 0x12]\n"
- "\tstrb r1, [r4, 0x11]\n"
- "\tldrb r1, [r5, 0x4]\n"
- "\tlsls r1, 19\n"
- "\tnegs r1, r1\n"
- "\tasrs r1, 16\n"
- "\tadds r0, r2, 0\n"
- "\tmovs r2, 0x1\n"
- "\tbl sub_811A350\n"
- "\tmovs r0, 0\n"
- "\tmov r12, r6\n"
- "\tldr r1, _08119ED0 @ =0x040000d4\n"
- "\tldr r7, _08119ED4 @ =gUnknown_083FB718\n"
- "\tldr r2, _08119ED8 @ =0xfffe4000\n"
- "\tadds r6, r4, r2\n"
- "\tldr r5, _08119EDC @ =0x80000010\n"
- "_08119EA0:\n"
- "\tmovs r3, 0\n"
- "\tadds r4, r0, 0x1\n"
- "\tlsls r2, r0, 5\n"
- "_08119EA6:\n"
- "\tstr r7, [r1]\n"
- "\tadds r0, r2, r3\n"
- "\tlsls r0, 5\n"
- "\tadds r0, r6\n"
- "\tstr r0, [r1, 0x4]\n"
- "\tstr r5, [r1, 0x8]\n"
- "\tldr r0, [r1, 0x8]\n"
- "\tadds r0, r3, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r3, r0, 24\n"
- "\tcmp r3, 0x1F\n"
- "\tbls _08119EA6\n"
- "\tlsls r0, r4, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x6\n"
- "\tbls _08119EA0\n"
- "\tmov r1, r12\n"
- "\tb _08119F50\n"
- "\t.align 2, 0\n"
- "_08119ECC: .4byte gSharedMem + 0x1C000\n"
- "_08119ED0: .4byte 0x040000d4\n"
- "_08119ED4: .4byte gUnknown_083FB718\n"
- "_08119ED8: .4byte 0xfffe4000\n"
- "_08119EDC: .4byte 0x80000010\n"
- "_08119EE0:\n"
- "\tldrb r0, [r5, 0x2]\n"
- "\tlsls r0, 27\n"
- "\tlsrs r7, r0, 16\n"
- "\tldrb r1, [r5, 0x3]\n"
- "\tlsls r1, 12\n"
- "\tldrh r0, [r5]\n"
- "\tlsls r0, 18\n"
- "\tlsrs r0, 23\n"
- "\tadds r1, r0\n"
- "\tlsls r1, 16\n"
- "\tlsrs r6, r1, 16\n"
- "\tmovs r0, 0\n"
- "\tldr r2, _08119F58 @ =gSharedMem + 0x1C000\n"
- "\tmov r8, r2\n"
- "\tmovs r1, 0xC0\n"
- "\tlsls r1, 19\n"
- "\tmov r12, r1\n"
- "_08119F02:\n"
- "\tmovs r3, 0\n"
- "\tadds r4, r0, 0x1\n"
- "\tlsls r5, r0, 6\n"
- "_08119F08:\n"
- "\tlsls r1, r3, 1\n"
- "\tadds r1, r5\n"
- "\tadds r1, r7\n"
- "\tadd r1, r12\n"
- "\tadds r2, r6, 0\n"
- "\tadds r0, r2, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tstrh r2, [r1]\n"
- "\tadds r0, r3, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r3, r0, 24\n"
- "\tcmp r3, 0x1F\n"
- "\tbls _08119F08\n"
- "\tlsls r0, r4, 24\n"
- "\tlsrs r0, 24\n"
- "\tcmp r0, 0x6\n"
- "\tbls _08119F02\n"
- "\tmov r2, r8\n"
- "\tldrb r0, [r2, 0x16]\n"
- "\tmovs r4, 0\n"
- "\tcmp r0, 0\n"
- "\tbeq _08119F4E\n"
- "\tmov r5, r8\n"
- "_08119F38:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0\n"
- "\tbl sub_811A1C8\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tldrb r0, [r5, 0x16]\n"
- "\tlsls r0, 3\n"
- "\tcmp r4, r0\n"
- "\tblt _08119F38\n"
- "_08119F4E:\n"
- "\tldr r1, _08119F5C @ =gUnknown_03005E98\n"
- "_08119F50:\n"
- "\tldrb r0, [r1]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r1]\n"
- "\tb _08119F74\n"
- "\t.align 2, 0\n"
- "_08119F58: .4byte gSharedMem + 0x1C000\n"
- "_08119F5C: .4byte gUnknown_03005E98\n"
- "_08119F60:\n"
- "\tbl sub_811A324\n"
- "\tldr r0, _08119F84 @ =gUnknown_083FB6F8\n"
- "\tldrb r1, [r5, 0x3]\n"
- "\tlsls r1, 4\n"
- "\tmovs r2, 0x20\n"
- "\tbl LoadPalette\n"
- "\tmovs r0, 0x1\n"
- "\tmov r9, r0\n"
- "_08119F74:\n"
- "\tmov r0, r9\n"
- "\tpop {r3,r4}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_08119F84: .4byte gUnknown_083FB6F8");
-}
-#endif // NONMATCHING
-void sub_8119F88(u8 a0)
+void UpdateCryWaveformWindow(u8 bgId)
{
u8 r4;
- sub_811A324();
- sub_811A15C(a0);
- if (gPokedexCryScreenPtr->unk001B)
- gPokedexCryScreenPtr->unk001B--;
- if (gPokedexCryScreenPtr->unk001A && !--gPokedexCryScreenPtr->unk001A)
+ DrawWaveformWindow();
+ AdvancePlayhead(bgId);
+ if (gPokedexCryScreenPtr->cryRepeatDelay)
+ gPokedexCryScreenPtr->cryRepeatDelay--;
+ if (gPokedexCryScreenPtr->cryOverrideCountdown && !--gPokedexCryScreenPtr->cryOverrideCountdown)
{
- sub_811A0A0(gPokedexCryScreenPtr->species);
- sub_811A124();
+ PlayCryScreenCry(gPokedexCryScreenPtr->species);
+ DrawWaveformFlatline();
return;
}
- if (gPokedexCryScreenPtr->unk0010 == 0)
+ if (gPokedexCryScreenPtr->cryState == 0)
{
- sub_811A124();
+ DrawWaveformFlatline();
return;
}
- if (gPokedexCryScreenPtr->unk0010 == 1)
+ if (gPokedexCryScreenPtr->cryState == 1)
{
- sub_811A0C0();
+ BufferCryWaveformSegment();
}
- else if (gPokedexCryScreenPtr->unk0010 > 8)
+ else if (gPokedexCryScreenPtr->cryState > 8)
{
if (!IsCryPlaying())
{
- sub_811A124();
- gPokedexCryScreenPtr->unk0010 = 0;
+ DrawWaveformFlatline();
+ gPokedexCryScreenPtr->cryState = 0;
return;
}
- sub_811A0C0();
- gPokedexCryScreenPtr->unk0010 = 1;
+ BufferCryWaveformSegment();
+ gPokedexCryScreenPtr->cryState = 1;
}
- r4 = 2 * (gPokedexCryScreenPtr->unk0010 - 1);
- sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 2, gPokedexCryScreenPtr->unk0000[r4]);
- sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 1, gPokedexCryScreenPtr->unk0000[r4 + 1]);
- gPokedexCryScreenPtr->unk0010++;
+ r4 = 2 * (gPokedexCryScreenPtr->cryState - 1);
+ DrawWaveformSegment(gPokedexCryScreenPtr->playStartPos * 8 + gPokedexCryScreenPtr->playhead - 2,
+ gPokedexCryScreenPtr->cryWaveformBuffer[r4]);
+ DrawWaveformSegment(gPokedexCryScreenPtr->playStartPos * 8 + gPokedexCryScreenPtr->playhead - 1,
+ gPokedexCryScreenPtr->cryWaveformBuffer[r4 + 1]);
+ gPokedexCryScreenPtr->cryState++;
}
-void sub_811A050(u16 species)
+void CryScreenPlayButton(u16 species)
{
- if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE && !gPokedexCryScreenPtr->unk001A)
+ if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE && !gPokedexCryScreenPtr->cryOverrideCountdown)
{
- if (!gPokedexCryScreenPtr->unk001B)
+ if (!gPokedexCryScreenPtr->cryRepeatDelay)
{
- gPokedexCryScreenPtr->unk001B = 4;
+ gPokedexCryScreenPtr->cryRepeatDelay = 4;
if (IsCryPlaying() == TRUE)
{
StopCry();
gPokedexCryScreenPtr->species = species;
- gPokedexCryScreenPtr->unk001A = 2;
+ gPokedexCryScreenPtr->cryOverrideCountdown = 2;
}
else
- sub_811A0A0(species);
+ PlayCryScreenCry(species);
}
}
}
-void sub_811A0A0(u16 species)
+void PlayCryScreenCry(u16 species)
{
- PlayCry2(species, 0, 0x7d, 10);
- gPokedexCryScreenPtr->unk0010 = 1;
+ PlayCry2(species, 0, 125, 10);
+ gPokedexCryScreenPtr->cryState = 1;
}
-// compiler refuses to put src into r0. this can't be solved with greg asm hacks
-#ifdef NONMATCHING
-void sub_811A0C0(void)
+#define GetSrcBufferForCryWaveformSegment(counter) ({ \
+ const s8 * p; \
+ if ((counter) < 2) \
+ p = gSoundInfo.pcmBuffer; \
+ else \
+ p = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank; \
+ p + PCM_DMA_BUF_SIZE; \
+})
+
+void BufferCryWaveformSegment(void)
{
const s8 * src;
u8 i;
- if (gPcmDmaCounter < 2)
- src = gSoundInfo.pcmBuffer;
- else
- src = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank;
-
- src += PCM_DMA_BUF_SIZE;
+ src = GetSrcBufferForCryWaveformSegment(gPcmDmaCounter);
for (i = 0; i < 16; i++)
- gPokedexCryScreenPtr->unk0000[i] = src[i * 2] * 2;
-
-}
-#else
-NAKED void sub_811A0C0(void)
-{
- asm_unified("\tpush {r4,lr}\n"
- "\tldr r3, _0811A0D0 @ =gPcmDmaCounter\n"
- "\tmovs r0, 0\n"
- "\tldrsb r0, [r3, r0]\n"
- "\tcmp r0, 0x1\n"
- "\tbgt _0811A0D8\n"
- "\tldr r0, _0811A0D4 @ =gSoundInfo + 0x350\n"
- "\tb _0811A0F0\n"
- "\t.align 2, 0\n"
- "_0811A0D0: .4byte gPcmDmaCounter\n"
- "_0811A0D4: .4byte gSoundInfo + 0x350\n"
- "_0811A0D8:\n"
- "\tldr r2, _0811A11C @ =gSoundInfo\n"
- "\tldrb r1, [r2, 0xB]\n"
- "\tmovs r0, 0\n"
- "\tldrsb r0, [r3, r0]\n"
- "\tsubs r0, 0x1\n"
- "\tsubs r1, r0\n"
- "\tldr r0, [r2, 0x10]\n"
- "\tmuls r0, r1\n"
- "\tmovs r1, 0xD4\n"
- "\tlsls r1, 2\n"
- "\tadds r2, r1\n"
- "\tadds r0, r2\n"
- "_0811A0F0:\n"
- "\tmovs r1, 0xC6\n"
- "\tlsls r1, 3\n"
- "\tadds r3, r0, r1\n"
- "\tmovs r2, 0\n"
- "\tldr r4, _0811A120 @ =gSharedMem + 0x1C000\n"
- "_0811A0FA:\n"
- "\tadds r1, r2, r4\n"
- "\tlsls r0, r2, 1\n"
- "\tadds r0, r3\n"
- "\tldrb r0, [r0]\n"
- "\tlsls r0, 24\n"
- "\tasrs r0, 24\n"
- "\tlsls r0, 1\n"
- "\tstrb r0, [r1]\n"
- "\tadds r0, r2, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r2, r0, 24\n"
- "\tcmp r2, 0xF\n"
- "\tbls _0811A0FA\n"
- "\tpop {r4}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_0811A11C: .4byte gSoundInfo\n"
- "_0811A120: .4byte gSharedMem + 0x1C000");
+ gPokedexCryScreenPtr->cryWaveformBuffer[i] = src[i * 2] * 2;
+
}
-#endif // NONMATCHING
-void sub_811A124(void)
+void DrawWaveformFlatline(void)
{
- sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 2, 0);
- sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 1, 0);
+ DrawWaveformSegment(gPokedexCryScreenPtr->playStartPos * 8 + gPokedexCryScreenPtr->playhead - 2, 0);
+ DrawWaveformSegment(gPokedexCryScreenPtr->playStartPos * 8 + gPokedexCryScreenPtr->playhead - 1, 0);
}
-void sub_811A15C(u8 a0)
+void AdvancePlayhead(u8 bgId)
{
u8 i;
- u16 r3;
- sub_811A350(a0, gPokedexCryScreenPtr->unk0011, 0);
- gPokedexCryScreenPtr->unk0011 += 2;
- r3 = (gPokedexCryScreenPtr->unk0011 / 8 + gPokedexCryScreenPtr->unk0016 + 1) % 32;
+ u16 offset;
+
+ ShiftWaveformOver(bgId, gPokedexCryScreenPtr->playhead, 0);
+ gPokedexCryScreenPtr->playhead += 2;
+ offset = (gPokedexCryScreenPtr->playhead / 8 + gPokedexCryScreenPtr->playStartPos + 1) % 32;
for (i = 0; i < 7; i++)
{
- DmaCopy16(3, gUnknown_083FB718, &gSharedMem[32 * (32 * i + r3)], 32);
+ DmaCopy16(3, sCryScreenBg_Gfx, &sCryWaveformWindowTiledata[32 * (32 * i + offset)], 32);
}
}
-#ifdef NONMATCHING
-void sub_811A1C8(u8 a0, u8 a1)
+void DrawWaveformSegment(u8 position, u8 amplitude)
{
- u8 sp0;
- u8 r7;
- u8 r8;
- u16 r1 = (a1 + 127) << 8;
- u8 i = r1 / 1152.0;
- if (i > 71 - 16)
- i = 71 - 16;
- sp0 = i;
- r7 = a0 % 2;
- r8 = a0 / 8;
- if (i > gPokedexCryScreenPtr->unk0012)
+#define PLAY_START_POS (position >> 3)
+#define PLAYHEAD_POS (position & ((1 << 3) - 1))
+#define VERT_SLICE (position & 1)
+ u8 currentPointY;
+ u8 nybble;
+ u16 offset;
+ u16 temp;
+ u8 y;
+
+ temp = (amplitude + 127) * 256;
+ y = temp / 1152.0;
+ if (y > 71 - 16)
+ y = 71 - 16;
+ currentPointY = y;
+ nybble = VERT_SLICE;
+ if (y > gPokedexCryScreenPtr->waveformPreviousY)
{
do
{
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
- i--;
- } while (i > gPokedexCryScreenPtr->unk0012);
+ offset = sWaveformOffsets[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
+ sCryWaveformWindowTiledata[offset] &= sWaveformTileDataNybbleMasks[nybble];
+ sCryWaveformWindowTiledata[offset] |= sWaveformColor[nybble][((y / 3) - 1) & 0x0F];
+ y--;
+ } while (y > gPokedexCryScreenPtr->waveformPreviousY);
}
else
{
do
{
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
- gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
- i++;
- } while (i < gPokedexCryScreenPtr->unk0012);
+ offset = sWaveformOffsets[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
+ sCryWaveformWindowTiledata[offset] &= sWaveformTileDataNybbleMasks[nybble];
+ sCryWaveformWindowTiledata[offset] |= sWaveformColor[nybble][((y / 3) - 1) & 0x0F];
+ y++;
+ } while (y < gPokedexCryScreenPtr->waveformPreviousY);
}
- gPokedexCryScreenPtr->unk0012 = sp0;
-}
-#else
-NAKED void sub_811A1C8(u8 a0, u8 a1)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0xC\n"
- "\tlsls r5, r0, 24\n"
- "\tlsrs r4, r5, 24\n"
- "\tlsls r1, 24\n"
- "\tmovs r0, 0xFE\n"
- "\tlsls r0, 23\n"
- "\tadds r1, r0\n"
- "\tlsrs r1, 16\n"
- "\tadds r0, r1, 0\n"
- "\tbl __floatsidf\n"
- "\tldr r3, _0811A280 @ =0x00000000\n"
- "\tldr r2, _0811A27C @ =0x40920000\n"
- "\tbl __divdf3\n"
- "\tbl __fixunsdfsi\n"
- "\tlsls r0, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tcmp r6, 0x37\n"
- "\tbls _0811A1FE\n"
- "\tmovs r6, 0x37\n"
- "_0811A1FE:\n"
- "\tstr r6, [sp]\n"
- "\tmovs r7, 0x1\n"
- "\tands r7, r4\n"
- "\tldr r0, _0811A284 @ =gSharedMem + 0x1C000\n"
- "\tmov r10, r0\n"
- "\tlsrs r5, 27\n"
- "\tmov r8, r5\n"
- "\tldr r0, _0811A288 @ =gUnknown_083FB738\n"
- "\tmov r1, r10\n"
- "\tldrb r1, [r1, 0x12]\n"
- "\tcmp r6, r1\n"
- "\tbls _0811A298\n"
- "\tadds r0, r7, r0\n"
- "\tldrb r0, [r0]\n"
- "\tmov r9, r0\n"
- "\tmovs r2, 0x7\n"
- "\tands r2, r4\n"
- "_0811A220:\n"
- "\tlsls r1, r6, 1\n"
- "\tlsls r0, r2, 3\n"
- "\tadds r0, r2\n"
- "\tlsls r0, 4\n"
- "\tadds r1, r0\n"
- "\tldr r3, _0811A28C @ =gUnknown_083FB274\n"
- "\tadds r1, r3\n"
- "\tmov r3, r8\n"
- "\tlsls r0, r3, 5\n"
- "\tldrh r1, [r1]\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tldr r1, _0811A290 @ =gSharedMem\n"
- "\tadds r5, r0, r1\n"
- "\tldrb r4, [r5]\n"
- "\tmov r3, r9\n"
- "\tands r4, r3\n"
- "\tstrb r4, [r5]\n"
- "\tadds r0, r6, 0\n"
- "\tmovs r1, 0x3\n"
- "\tstr r2, [sp, 0x8]\n"
- "\tbl __udivsi3\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tsubs r0, 0x1\n"
- "\tmovs r1, 0xF\n"
- "\tands r0, r1\n"
- "\tlsls r1, r7, 4\n"
- "\tadds r0, r1\n"
- "\tldr r1, _0811A294 @ =gUnknown_083FB73A\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\torrs r4, r0\n"
- "\tstrb r4, [r5]\n"
- "\tsubs r0, r6, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tldr r2, [sp, 0x8]\n"
- "\tldr r3, _0811A284 @ =gSharedMem + 0x1C000\n"
- "\tldrb r3, [r3, 0x12]\n"
- "\tcmp r6, r3\n"
- "\tbhi _0811A220\n"
- "\tb _0811A2FA\n"
- "\t.align 2, 0\n"
- "_0811A27C: .4byte 0x40920000\n"
- "_0811A280: .4byte 0x00000000\n"
- "_0811A284: .4byte gSharedMem + 0x1C000\n"
- "_0811A288: .4byte gUnknown_083FB738\n"
- "_0811A28C: .4byte gUnknown_083FB274\n"
- "_0811A290: .4byte gSharedMem\n"
- "_0811A294: .4byte gUnknown_083FB73A\n"
- "_0811A298:\n"
- "\tlsls r1, r7, 4\n"
- "\tstr r1, [sp, 0x4]\n"
- "\tadds r0, r7, r0\n"
- "\tldrb r0, [r0]\n"
- "\tmov r9, r0\n"
- "\tmovs r7, 0x7\n"
- "\tands r7, r4\n"
- "_0811A2A6:\n"
- "\tlsls r1, r6, 1\n"
- "\tlsls r0, r7, 3\n"
- "\tadds r0, r7\n"
- "\tlsls r0, 4\n"
- "\tadds r1, r0\n"
- "\tldr r2, _0811A314 @ =gUnknown_083FB274\n"
- "\tadds r1, r2\n"
- "\tmov r3, r8\n"
- "\tlsls r0, r3, 5\n"
- "\tldrh r1, [r1]\n"
- "\tadds r0, r1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r0, 16\n"
- "\tldr r1, _0811A318 @ =gSharedMem\n"
- "\tadds r5, r0, r1\n"
- "\tldrb r4, [r5]\n"
- "\tmov r2, r9\n"
- "\tands r4, r2\n"
- "\tstrb r4, [r5]\n"
- "\tadds r0, r6, 0\n"
- "\tmovs r1, 0x3\n"
- "\tbl __udivsi3\n"
- "\tlsls r0, 24\n"
- "\tlsrs r0, 24\n"
- "\tsubs r0, 0x1\n"
- "\tmovs r1, 0xF\n"
- "\tands r0, r1\n"
- "\tldr r3, [sp, 0x4]\n"
- "\tadds r0, r3\n"
- "\tldr r1, _0811A31C @ =gUnknown_083FB73A\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\torrs r4, r0\n"
- "\tstrb r4, [r5]\n"
- "\tadds r0, r6, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r6, r0, 24\n"
- "\tldr r2, _0811A320 @ =gSharedMem + 0x1C000\n"
- "\tldrb r2, [r2, 0x12]\n"
- "\tcmp r6, r2\n"
- "\tbcc _0811A2A6\n"
- "_0811A2FA:\n"
- "\tmov r3, sp\n"
- "\tldrb r0, [r3]\n"
- "\tmov r3, r10\n"
- "\tstrb r0, [r3, 0x12]\n"
- "\tadd sp, 0xC\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.align 2, 0\n"
- "_0811A314: .4byte gUnknown_083FB274\n"
- "_0811A318: .4byte gSharedMem\n"
- "_0811A31C: .4byte gUnknown_083FB73A\n"
- "_0811A320: .4byte gSharedMem + 0x1C000");
+ gPokedexCryScreenPtr->waveformPreviousY = currentPointY;
+ #undef PLAYHEAD_POS
+ #undef PLAY_START_POS
+ #undef VERT_SLICE
}
-#endif // NONMATCHING
-void sub_811A324(void)
+void DrawWaveformWindow(void)
{
- DmaCopy16(3, gSharedMem, VRAM + gPokedexCryScreenPtr->unk0014, 0x1c00);
+ DmaCopy16(3, sCryWaveformWindowTiledata, VRAM + gPokedexCryScreenPtr->charBase, 0x1c00);
}
-void sub_811A350(u8 a0, u16 a1, u8 a2)
+void ShiftWaveformOver(u8 bgId, s16 pos, u8 axis)
{
- switch (a0)
+ switch (bgId)
{
case 0:
- if (a2)
- REG_BG0VOFS = a1;
+ if (axis)
+ REG_BG0VOFS = pos;
else
- REG_BG0HOFS = a1;
+ REG_BG0HOFS = pos;
break;
case 1:
- if (a2)
- REG_BG1VOFS = a1;
+ if (axis)
+ REG_BG1VOFS = pos;
else
- REG_BG1HOFS = a1;
+ REG_BG1HOFS = pos;
break;
case 2:
- if (a2)
- REG_BG2VOFS = a1;
+ if (axis)
+ REG_BG2VOFS = pos;
else
- REG_BG2HOFS = a1;
+ REG_BG2HOFS = pos;
break;
case 3:
- if (a2)
- REG_BG3VOFS = a1;
+ if (axis)
+ REG_BG3VOFS = pos;
else
- REG_BG3HOFS = a1;
+ REG_BG3HOFS = pos;
break;
}
}
-u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
+bool8 ShowPokedexCryScreen(struct CryScreenWindow *cry, UNUSED u8 arg1) {
int returnVal = FALSE;
- switch (gUnknown_03005E98)
+ switch (gDexCryScreenState)
{
case 0:
- LZ77UnCompVram(gUnknown_083FAF3C, (void *) (VRAM + cry->unk0));
- LoadPalette(&gUnknown_083FAF1C, cry->paletteNo * 16, 0x20);
- gUnknown_03005E98 += 1;
+ LZ77UnCompVram(gCryMeter_Gfx, (void *) (VRAM + cry->charBase));
+ LoadPalette(gCryMeter_Pal, cry->paletteNo * 16, 0x20);
+ gDexCryScreenState++;
break;
case 1:
@@ -845,9 +460,9 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
u32 r12;
int x, y;
- vram = BG_SCREEN_ADDR(cry->unk2);
+ vram = BG_SCREEN_ADDR(cry->screenBase);
- r12 = (u32) (cry->unk0 << 18) >> 23;
+ r12 = (cry->charBase >> 5) & 0x1FF;
for (row = 0; row < 8; row++)
{
@@ -855,11 +470,11 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
{
y = row + cry->yPos;
x = col + cry->xPos;
- *(u16 *) (vram + (y * 64 + x * 2)) = (gUnknown_083FAE7C[row * CRY_METER_MAP_WIDTH + col] | (cry->paletteNo << 12)) + r12;
+ *(u16 *) (vram + (y * 64 + x * 2)) = (gCryMeter_Tilemap[row * CRY_METER_MAP_WIDTH + col] | (cry->paletteNo << 12)) + r12;
}
}
- gUnknown_03005E98 += 1;
+ gDexCryScreenState += 1;
break;
}
@@ -867,10 +482,10 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
{
LoadSpriteSheets(gCryMeterNeedleSpriteSheets);
LoadSpritePalettes(gCryMeterNeedleSpritePalettes);
- gPokedexCryScreenPtr2->unk_4 = CreateSprite(&gSpriteTemplate_83FB774, 40 + cry->xPos * 8, 56 + cry->yPos * 8, 1);
- gPokedexCryScreenPtr2->unk_0 = 0x20;
- gPokedexCryScreenPtr2->unk_1 = 0x20;
- gPokedexCryScreenPtr2->unk_2 = 0;
+ gPokedexCryScreenPtr2->spriteId = CreateSprite(&sSpriteTemplate_CryMeterNeedle, 40 + cry->xPos * 8, 56 + cry->yPos * 8, 1);
+ gPokedexCryScreenPtr2->rotation = 0x20;
+ gPokedexCryScreenPtr2->targetRotation = 0x20;
+ gPokedexCryScreenPtr2->moveIncrement = 0;
returnVal = TRUE;
break;
@@ -882,82 +497,84 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
void DestroyCryMeterNeedleSprite(void)
{
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gPokedexCryScreenPtr2->unk_4].oam.paletteNum));
- DestroySprite(gSprites + gPokedexCryScreenPtr2->unk_4);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gPokedexCryScreenPtr2->spriteId].oam.paletteNum));
+ DestroySprite(gSprites + gPokedexCryScreenPtr2->spriteId);
}
-void sub_811A534(struct Sprite * sprite)
+void SpriteCB_CryMeterNeedle(struct Sprite * sprite)
{
u16 i;
- s8 r3;
+ s8 peakAmplitude;
s16 x;
s16 y;
- struct ObjAffineSrcData sp04;
- struct OamMatrix sp0c;
+ struct ObjAffineSrcData affine;
+ struct OamMatrix matrix;
u8 * r0;
- gSprites[gPokedexCryScreenPtr2->unk_4].oam.affineMode = ST_OAM_AFFINE_NORMAL;
- gSprites[gPokedexCryScreenPtr2->unk_4].oam.affineParam = 0;
- switch (gPokedexCryScreenPtr->unk0010)
+ gSprites[gPokedexCryScreenPtr2->spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[gPokedexCryScreenPtr2->spriteId].oam.affineParam = 0;
+ switch (gPokedexCryScreenPtr->cryState)
{
case 0:
- gPokedexCryScreenPtr2->unk_1 = 0x20;
- if (gPokedexCryScreenPtr2->unk_0 > 0)
+ gPokedexCryScreenPtr2->targetRotation = 0x20;
+ if (gPokedexCryScreenPtr2->rotation > 0)
{
- if (gPokedexCryScreenPtr2->unk_2 != 1)
- gPokedexCryScreenPtr2->unk_2--;
+ if (gPokedexCryScreenPtr2->moveIncrement != 1)
+ gPokedexCryScreenPtr2->moveIncrement--;
}
else
- gPokedexCryScreenPtr2->unk_2 = 5;
+ gPokedexCryScreenPtr2->moveIncrement = 5;
break;
case 2:
- r3 = 0;
+ peakAmplitude = 0;
for (i = 0; i < 16; i++)
{
- if (r3 < gPokedexCryScreenPtr->unk0000[i])
- r3 = gPokedexCryScreenPtr->unk0000[i];
+ if (peakAmplitude < gPokedexCryScreenPtr->cryWaveformBuffer[i])
+ peakAmplitude = gPokedexCryScreenPtr->cryWaveformBuffer[i];
}
- sub_811A6D8(r3 * 0xd0 / 0x100);
+ SetCryMeterNeedleTarget(peakAmplitude * 0xd0 / 0x100);
break;
case 6:
- r0 = &gPokedexCryScreenPtr->unk0000[10];
- sub_811A6D8(*r0 * 0xd0 / 0x100);
+ r0 = &gPokedexCryScreenPtr->cryWaveformBuffer[10];
+ SetCryMeterNeedleTarget(*r0 * 0xd0 / 0x100);
break;
}
- if (gPokedexCryScreenPtr2->unk_0 == gPokedexCryScreenPtr2->unk_1)
- ;
- else if (gPokedexCryScreenPtr2->unk_0 < gPokedexCryScreenPtr2->unk_1)
+ if (gPokedexCryScreenPtr2->rotation == gPokedexCryScreenPtr2->targetRotation)
+ ; // Empty, needle has reached target
+ else if (gPokedexCryScreenPtr2->rotation < gPokedexCryScreenPtr2->targetRotation)
{
- if ((gPokedexCryScreenPtr2->unk_0 += gPokedexCryScreenPtr2->unk_2) > gPokedexCryScreenPtr2->unk_1)
+ // Rotate needle left
+ if ((gPokedexCryScreenPtr2->rotation += gPokedexCryScreenPtr2->moveIncrement) > gPokedexCryScreenPtr2->targetRotation)
{
- gPokedexCryScreenPtr2->unk_0 = gPokedexCryScreenPtr2->unk_1;
- gPokedexCryScreenPtr2->unk_1 = 0;
+ gPokedexCryScreenPtr2->rotation = gPokedexCryScreenPtr2->targetRotation;
+ gPokedexCryScreenPtr2->targetRotation = 0;
}
}
else
{
- if ((gPokedexCryScreenPtr2->unk_0 -= gPokedexCryScreenPtr2->unk_2) < gPokedexCryScreenPtr2->unk_1)
+ // Rotate needle right
+ if ((gPokedexCryScreenPtr2->rotation -= gPokedexCryScreenPtr2->moveIncrement) < gPokedexCryScreenPtr2->targetRotation)
{
- gPokedexCryScreenPtr2->unk_0 = gPokedexCryScreenPtr2->unk_1;
- gPokedexCryScreenPtr2->unk_1 = 0;
+ gPokedexCryScreenPtr2->rotation = gPokedexCryScreenPtr2->targetRotation;
+ gPokedexCryScreenPtr2->targetRotation = 0;
}
}
- sp04.xScale = 0x100;
- sp04.yScale = 0x100;
- sp04.rotation = gPokedexCryScreenPtr2->unk_0 * 256;
- ObjAffineSet(&sp04, &sp0c, 1, 2);
- SetOamMatrix(0, sp0c.a, sp0c.b, sp0c.c, sp0c.d);
- x = gSineTable[((gPokedexCryScreenPtr2->unk_0 + 0x7F) & 0xFF)];
- y = gSineTable[((gPokedexCryScreenPtr2->unk_0 + 0x7F) & 0xFF) + 0x40];
- sprite->pos2.x = x * 24 / 256;
- sprite->pos2.y = y * 24 / 256;
+ affine.xScale = 0x100;
+ affine.yScale = 0x100;
+ affine.rotation = gPokedexCryScreenPtr2->rotation * 256;
+ ObjAffineSet(&affine, &matrix, 1, 2);
+ SetOamMatrix(0, matrix.a, matrix.b, matrix.c, matrix.d);
+ x = gSineTable[((gPokedexCryScreenPtr2->rotation + 0x7F) & 0xFF)];
+ y = gSineTable[((gPokedexCryScreenPtr2->rotation + 0x7F) & 0xFF) + 0x40];
+ sprite->x2 = x * 24 / 256;
+ sprite->y2 = y * 24 / 256;
}
-void sub_811A6D8(s8 a0)
+void SetCryMeterNeedleTarget(s8 offset)
{
- u16 r2 = (0x20 - a0) & 0xff;
- if (r2 > 0x20 && r2 < 0xe0)
- r2 = 0xe0;
- gPokedexCryScreenPtr2->unk_1 = r2;
- gPokedexCryScreenPtr2->unk_2 = 5;
+ u16 rotation = (0x20 - offset) & 0xff;
+ if (rotation > 0x20 && rotation < 0xe0)
+ rotation = 0xe0;
+ gPokedexCryScreenPtr2->targetRotation = rotation;
+ gPokedexCryScreenPtr2->moveIncrement = 5;
}
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index aeeb6080d..4670f188f 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -1731,9 +1731,9 @@ void CalculateMonStats(struct Pokemon *mon)
newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10;
}
- eStatHp = newMaxHP - oldMaxHP;
- if (eStatHp == 0)
- eStatHp = 1;
+ gBattleStruct->levelUpHP = newMaxHP - oldMaxHP;
+ if (gBattleStruct->levelUpHP == 0)
+ gBattleStruct->levelUpHP = 1;
SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP);
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 17f0aa768..db31ec47a 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -36,7 +36,7 @@ extern u16 gBattleMovePower;
extern u16 gTrainerBattleOpponent;
extern struct PokemonStorage gPokemonStorage;
-EWRAM_DATA struct SpriteTemplate gUnknown_02024E8C = {0};
+EWRAM_DATA struct SpriteTemplate gCreatingSpriteTemplate = {0};
extern u8 gBadEggNickname[];
extern const struct SpriteTemplate gSpriteTemplate_8208288[];
@@ -152,26 +152,28 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
const struct SpriteTemplate gSpriteTemplate_8208288[] =
{
{0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0},
- {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent},
+ {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30,
+ gAffineAnims_BattleSpriteOpponentSide, oac_poke_opponent},
{0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0},
- {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent},
+ {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70,
+ gAffineAnims_BattleSpriteOpponentSide, oac_poke_opponent},
};
void GetMonSpriteTemplate_803C56C(u16 species, u8 a2)
{
- gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
- gUnknown_02024E8C.paletteTag = species;
- gUnknown_02024E8C.anims = (const union AnimCmd *const *)gSpriteAnimTable_81E7C64; //Why do I have to cast this?
+ gCreatingSpriteTemplate = gSpriteTemplate_8208288[a2];
+ gCreatingSpriteTemplate.paletteTag = species;
+ gCreatingSpriteTemplate.anims = (const union AnimCmd *const *)gSpriteAnimTable_81E7C64; //Why do I have to cast this?
}
void GetMonSpriteTemplate_803C5A0(u16 species, u8 a2)
{
- gUnknown_02024E8C = gSpriteTemplate_8208288[a2];
- gUnknown_02024E8C.paletteTag = species;
+ gCreatingSpriteTemplate = gSpriteTemplate_8208288[a2];
+ gCreatingSpriteTemplate.paletteTag = species;
if (a2 == 0 || a2 == 2)
- gUnknown_02024E8C.anims = gUnknown_081ECACC[species];
+ gCreatingSpriteTemplate.anims = gUnknown_081ECACC[species];
else
- gUnknown_02024E8C.anims = gUnknown_081EC2A4[species];
+ gCreatingSpriteTemplate.anims = gUnknown_081EC2A4[species];
}
void EncryptBoxMon(struct BoxPokemon *boxMon)
@@ -1077,27 +1079,27 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
for (i = 0; i < 6; i++)
{
- if (eSecretBaseRecord->partySpecies[i])
+ if (eSecretBaseRecord->party.species[i])
{
CreateMon(&gEnemyParty[i],
- eSecretBaseRecord->partySpecies[i],
- eSecretBaseRecord->partyLevels[i],
+ eSecretBaseRecord->party.species[i],
+ eSecretBaseRecord->party.levels[i],
15,
1,
- eSecretBaseRecord->partyPersonality[i],
+ eSecretBaseRecord->party.personality[i],
2,
0);
// these two SetMonData calls require the (u8 *) cast since SetMonData is declared in this function.
- SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, (u8 *)&eSecretBaseRecord->partyHeldItems[i]);
+ SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, (u8 *)&eSecretBaseRecord->party.heldItems[i]);
for (j = 0; j < 6; j++)
- SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &eSecretBaseRecord->partyEVs[i]);
+ SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &eSecretBaseRecord->party.EVs[i]);
for (j = 0; j < 4; j++)
{
- SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, (u8 *)&eSecretBaseRecord->partyMoves[i * 4 + j]);
- SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[eSecretBaseRecord->partyMoves[i * 4 + j]].pp);
+ SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, (u8 *)&eSecretBaseRecord->party.moves[i * 4 + j]);
+ SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[eSecretBaseRecord->party.moves[i * 4 + j]].pp);
}
}
}
@@ -1188,6 +1190,7 @@ void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex)
{
s32 i;
s8 nickname[POKEMON_NAME_LENGTH * 2];
+ u16 * hpSwitchout;
gBattleMons[battleIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL);
gBattleMons[battleIndex].item = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM, NULL);
@@ -1226,7 +1229,9 @@ void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex)
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, nickname);
StringCopy10(gBattleMons[battleIndex].nickname, nickname);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[battleIndex].otName);
- ewram160BC[GetBattlerSide(battleIndex)] = gBattleMons[battleIndex].hp;
+
+ hpSwitchout = &gBattleStruct->HP_OnSwitchout[GetBattlerSide(battleIndex)];
+ *hpSwitchout = gBattleMons[battleIndex].hp;
for (i = 0; i < 8; i++)
gBattleMons[battleIndex].statStages[i] = 6;
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 16c2f3738..43c9b0d41 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -473,7 +473,7 @@ u16 SpeciesToCryId(u16 species)
void unref_sub_803F938(u16 species, u32 personality, u8 *dest)
{
- if (species == SPECIES_SPINDA && dest != gUnknown_081FAF4C[0] && dest != gUnknown_081FAF4C[2])
+ if (species == SPECIES_SPINDA && dest != gMonSpriteGfx_Sprite_ptr[0] && dest != gMonSpriteGfx_Sprite_ptr[2])
{
int i;
for (i = 0; i < 4; i++)
@@ -1298,22 +1298,22 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon)
}
}
-void sub_8040B8C(void)
+void SetMonPreventsSwitchingString(void)
{
- gLastUsedAbility = gBattleStruct->unk160C0;;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 4;
- gBattleTextBuff1[2] = gBattleStruct->unk16054;
- gBattleTextBuff1[4] = EOS;
- if (!GetBattlerSide(gBattleStruct->unk16054))
- gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->unk16054]);
+ gLastUsedAbility = gBattleStruct->abilityPreventingSwitchout;;
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MON_NICK_WITH_PREFIX;
+ gBattleTextBuff1[2] = gBattleStruct->battlerPreventingSwitchout;
+ gBattleTextBuff1[4] = B_BUFF_EOS;
+ if (GetBattlerSide(gBattleStruct->battlerPreventingSwitchout) == B_SIDE_PLAYER)
+ gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout]);
else
- gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->unk16054];
- gBattleTextBuff2[0] = 0xFD;
- gBattleTextBuff2[1] = 4;
+ gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->battlerPreventingSwitchout];
+ gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff2[1] = B_BUFF_MON_NICK_WITH_PREFIX;
gBattleTextBuff2[2] = gBankInMenu;
gBattleTextBuff2[3] = pokemon_order_func(gBattlerPartyIndexes[gBankInMenu]);
- gBattleTextBuff2[4] = EOS;
+ gBattleTextBuff2[4] = B_BUFF_EOS;
BattleStringExpandPlaceholders(BattleText_PreventedSwitch, gStringVar4);
}
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
index 76c6a1c5c..9d76b158a 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon_icon.c
@@ -1018,9 +1018,9 @@ u16 GetUnownLetterByPersonality(u32);
const u8 *GetMonIconPtr(u16, u32 personality);
u8 UpdateMonIconFrame(struct Sprite *);
u8 CreateMonIconSprite(struct MonIconSpriteTemplate *, s16, s16, u8);
-void sub_809D7E8(struct Sprite *);
+void DestroyPokemonIconSprite(struct Sprite *);
-// duplicate of sub_809D3A4
+// duplicate of CreateMonIcon
u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
u8 spriteId;
@@ -1139,7 +1139,7 @@ const u8 *GetMonIconPtr(u16 species, u32 personality)
void sub_809D510(struct Sprite *sprite)
{
- sub_809D7E8(sprite);
+ DestroyPokemonIconSprite(sprite);
}
void sub_809D51C(void)
@@ -1192,12 +1192,11 @@ void sub_809D608(u16 species)
FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
}
-void sub_809D62C(struct Sprite *sprite)
+void SpriteCB_PokemonIcon(struct Sprite *sprite)
{
UpdateMonIconFrame(sprite);
}
-// TODO: try to find a way to avoid using asm statement
u8 UpdateMonIconFrame(struct Sprite *sprite)
{
u8 result = 0;
@@ -1221,10 +1220,7 @@ u8 UpdateMonIconFrame(struct Sprite *sprite)
(u8 *)sprite->images + (sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame),
OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
- {
- register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
- sprite->animDelayCounter = duration;
- }
+ sprite->animDelayCounter = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration & 0xFF;
sprite->animCmdIndex++;
result = sprite->animCmdIndex;
break;
@@ -1261,14 +1257,14 @@ u8 CreateMonIconSprite(struct MonIconSpriteTemplate *iconTemplate, s16 x, s16 y,
return spriteId;
}
-void sub_809D7E8(struct Sprite *sprite)
+void DestroyPokemonIconSprite(struct Sprite *sprite)
{
struct SpriteFrameImage image = { NULL, sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] };
sprite->images = &image;
DestroySprite(sprite);
}
-void sub_809D824(struct Sprite *sprite, u8 animNum)
+void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum)
{
sprite->animNum = animNum;
sprite->animDelayCounter = 0;
diff --git a/src/pokemon_item_effect.c b/src/pokemon_item_effect.c
index 3ab351367..2a2e73dc0 100644
--- a/src/pokemon_item_effect.c
+++ b/src/pokemon_item_effect.c
@@ -14,6 +14,7 @@
#include "rom_8077ABC.h"
#include "rom_8094928.h"
#include "util.h"
+#include "constants/item_effects.h"
extern s32 gBattleMoveDamage;
extern u8 gAbsentBattlerFlags;
@@ -53,14 +54,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
s32 cmdIndex;
bool8 retVal = TRUE;
const u8 *itemEffect;
- u8 sp24 = 6;
- u32 sp28;
- s8 sp2C = 0;
+ u8 paramIdx = ITEM_EFFECT_ARG_START;
+ u32 data2;
+ s8 friendshipMod = 0;
u8 holdEffect;
- u8 sp34 = 4;
+ u8 battleId = 4; // Not active
u16 heldItem;
- u8 r10;
- u32 r4;
+ u8 effect4;
+ u32 evChange;
heldItem = GetMonData(pkmn, MON_DATA_HELD_ITEM, NULL);
if (heldItem == ITEM_ENIGMA_BERRY)
@@ -84,7 +85,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
{
if (gBattlerPartyIndexes[cmdIndex] == partyIndex)
{
- sp34 = cmdIndex;
+ battleId = cmdIndex;
break;
}
cmdIndex += 2;
@@ -93,7 +94,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
else
{
gActiveBattler = 0;
- sp34 = 4;
+ battleId = 4;
}
if (!ITEM_HAS_EFFECT(item))
@@ -119,22 +120,22 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
{
// status healing effects
case 0:
- if ((itemEffect[cmdIndex] & 0x80)
- && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_INFATUATION))
+ if ((itemEffect[cmdIndex] & ITEM0_INFATUATION)
+ && gMain.inBattle && battleId != 4 && (gBattleMons[battleId].status2 & STATUS2_INFATUATION))
{
- gBattleMons[sp34].status2 &= ~STATUS2_INFATUATION;
+ gBattleMons[battleId].status2 &= ~STATUS2_INFATUATION;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x30)
+ if ((itemEffect[cmdIndex] & ITEM0_DIRE_HIT)
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
{
gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM0_X_ATTACK)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & ITEM0_X_ATTACK;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] = 12;
retVal = FALSE;
@@ -142,18 +143,18 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
break;
// in-battle stat boosting effects?
case 1:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM1_X_DEFEND)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & ITEM1_X_DEFEND) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] = 12;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM1_X_SPEED)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & ITEM1_X_SPEED;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] = 12;
retVal = FALSE;
@@ -161,31 +162,31 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
break;
// more stat boosting effects?
case 2:
- if ((itemEffect[cmdIndex] & 0xF0)
+ if ((itemEffect[cmdIndex] & ITEM2_X_ACCURACY)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & ITEM2_X_ACCURACY) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] = 12;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0xF)
+ if ((itemEffect[cmdIndex] & ITEM2_X_SPATK)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF;
+ gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & ITEM2_X_SPATK;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] = 12;
retVal = FALSE;
}
break;
case 3:
- if ((itemEffect[cmdIndex] & 0x80)
+ if ((itemEffect[cmdIndex] & ITEM3_GUARD_SPEC)
&& gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0)
{
gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x40) // raise level
+ if ((itemEffect[cmdIndex] & ITEM3_LEVEL_UP) // raise level
&& GetMonData(pkmn, MON_DATA_LEVEL, NULL) != 100)
{
data = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL, NULL) + 1];
@@ -193,101 +194,101 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
CalculateMonStats(pkmn);
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x20)
- && HealStatusConditions(pkmn, partyIndex, 7, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_SLEEP)
+ && HealStatusConditions(pkmn, partyIndex, 7, battleId) == 0)
{
- if (sp34 != 4)
- gBattleMons[sp34].status2 &= ~STATUS2_NIGHTMARE;
+ if (battleId != 4)
+ gBattleMons[battleId].status2 &= ~STATUS2_NIGHTMARE;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & 0x10) && HealStatusConditions(pkmn, partyIndex, 0xF88, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_POISON) && HealStatusConditions(pkmn, partyIndex, (STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER), battleId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 8) && HealStatusConditions(pkmn, partyIndex, 16, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_BURN) && HealStatusConditions(pkmn, partyIndex, STATUS1_BURN, battleId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 4) && HealStatusConditions(pkmn, partyIndex, 32, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_FREEZE) && HealStatusConditions(pkmn, partyIndex, STATUS1_FREEZE, battleId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 2) && HealStatusConditions(pkmn, partyIndex, 64, sp34) == 0)
+ if ((itemEffect[cmdIndex] & ITEM3_PARALYSIS) && HealStatusConditions(pkmn, partyIndex, STATUS1_PARALYSIS, battleId) == 0)
retVal = FALSE;
- if ((itemEffect[cmdIndex] & 1) // heal confusion
- && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_CONFUSION))
+ if ((itemEffect[cmdIndex] & ITEM3_CONFUSION) // heal confusion
+ && gMain.inBattle && battleId != 4 && (gBattleMons[battleId].status2 & STATUS2_CONFUSION))
{
- gBattleMons[sp34].status2 &= ~STATUS2_CONFUSION;
+ gBattleMons[battleId].status2 &= ~STATUS2_CONFUSION;
retVal = FALSE;
}
break;
// EV, HP, and PP raising effects
case 4:
- r10 = itemEffect[cmdIndex];
- if (r10 & 0x20)
+ effect4 = itemEffect[cmdIndex];
+ if (effect4 & ITEM4_PP_UP)
{
- r10 &= ~0x20;
+ effect4 &= ~ITEM4_PP_UP;
data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpReadMasks[moveIndex]) >> (moveIndex * 2);
- sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
- if (data < 3 && sp28 > 4)
+ data2 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
+ if (data < 3 && data2 > 4)
{
data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gPPUpValues[moveIndex];
SetMonData(pkmn, MON_DATA_PP_BONUSES, &data);
- data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28;
+ data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - data2;
data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data;
SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data);
retVal = FALSE;
}
}
- sp28 = 0;
- while (r10 != 0)
+ data2 = 0;
+ while (effect4 != 0)
{
- if (r10 & 1)
+ if (effect4 & 1)
{
u16 evCount;
s32 r5;
- switch (sp28)
+ switch (data2)
{
- case 0:
- case 1:
+ case 0: // EV_HP
+ case 1: // EV_ATK
evCount = GetMonEVCount(pkmn);
if (evCount >= 510)
return TRUE;
- data = GetMonData(pkmn, sGetMonDataEVConstants[sp28], NULL);
+ data = GetMonData(pkmn, sGetMonDataEVConstants[data2], NULL);
if (data < 100)
{
- if (data + itemEffect[sp24] > 100)
- r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24];
+ if (data + itemEffect[paramIdx] > 100)
+ evChange = 100 - (data + itemEffect[paramIdx]) + itemEffect[paramIdx];
else
- r4 = itemEffect[sp24];
- if (evCount + r4 > 510)
- r4 += 510 - (evCount + r4);
- data += r4;
- SetMonData(pkmn, sGetMonDataEVConstants[sp28], &data);
+ evChange = itemEffect[paramIdx];
+ if (evCount + evChange > 510)
+ evChange += 510 - (evCount + evChange);
+ data += evChange;
+ SetMonData(pkmn, sGetMonDataEVConstants[data2], &data);
CalculateMonStats(pkmn);
- sp24++;
+ paramIdx++;
retVal = FALSE;
}
break;
- case 2:
+ case 2: // HEAL_HP
// revive?
- if (r10 & 0x10)
+ if (effect4 & (ITEM4_REVIVE >> 2))
{
if (GetMonData(pkmn, MON_DATA_HP, NULL) != 0)
{
- sp24++;
+ paramIdx++;
break;
}
if (gMain.inBattle)
{
- if (sp34 != 4)
+ if (battleId != 4)
{
- gAbsentBattlerFlags &= ~gBitTable[sp34];
- CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlerPartyIndexes[sp34]));
- if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255)
- gBattleResults.unk4++;
+ gAbsentBattlerFlags &= ~gBitTable[battleId];
+ CopyPlayerPartyMonToBattleData(battleId, pokemon_order_func(gBattlerPartyIndexes[battleId]));
+ if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.reviveCount < 255)
+ gBattleResults.reviveCount++;
}
else
{
gAbsentBattlerFlags &= ~gBitTable[gActiveBattler ^ 2];
- if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.unk4 < 255)
- gBattleResults.unk4++;
+ if (GetBattlerSide(gActiveBattler) == 0 && gBattleResults.reviveCount < 255)
+ gBattleResults.reviveCount++;
}
}
}
@@ -295,23 +296,23 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
{
if (GetMonData(pkmn, MON_DATA_HP, NULL) == 0)
{
- sp24++;
+ paramIdx++;
break;
}
}
- data = itemEffect[sp24++];
+ data = itemEffect[paramIdx++];
switch (data)
{
- case 0xFF:
+ case ITEM6_HEAL_HP_FULL:
data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) - GetMonData(pkmn, MON_DATA_HP, NULL);
break;
- case 0xFE:
+ case ITEM6_HEAL_HP_HALF:
data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) / 2;
if (data == 0)
data = 1;
break;
- case 0xFD:
- data = eStatHp;
+ case ITEM6_HEAL_HP_LVL_UP:
+ data = gBattleStruct->levelUpHP;
break;
}
if (GetMonData(pkmn, MON_DATA_MAX_HP, NULL) != GetMonData(pkmn, MON_DATA_HP, NULL))
@@ -322,16 +323,16 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
if (data > GetMonData(pkmn, MON_DATA_MAX_HP, NULL))
data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL);
SetMonData(pkmn, MON_DATA_HP, &data);
- if (gMain.inBattle && sp34 != 4)
+ if (gMain.inBattle && battleId != 4)
{
- gBattleMons[sp34].hp = data;
- if (!(r10 & 0x10) && GetBattlerSide(gActiveBattler) == 0)
+ gBattleMons[battleId].hp = data;
+ if (!(effect4 & (ITEM4_REVIVE >> 2)) && GetBattlerSide(gActiveBattler) == 0)
{
- if (gBattleResults.unk3 < 255)
- gBattleResults.unk3++;
+ if (gBattleResults.playerHealInBattleCount < 255)
+ gBattleResults.playerHealInBattleCount++;
// I have to re-use this variable to match.
r5 = gActiveBattler;
- gActiveBattler = sp34;
+ gActiveBattler = battleId;
BtlController_EmitGetMonData(0, 0, 0);
MarkBattlerForControllerExec(gActiveBattler);
gActiveBattler = r5;
@@ -344,10 +345,10 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
}
retVal = FALSE;
}
- r10 &= 0xEF;
+ effect4 &= ~(ITEM4_REVIVE >> 2);
break;
- case 3:
- if (!(r10 & 2))
+ case 3: // HEAL_PP
+ if (!(effect4 & (ITEM4_HEAL_PP_ONE >> 3)))
{
for (r5 = 0; r5 < 4; r5++)
{
@@ -357,7 +358,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL);
if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5))
{
- data += itemEffect[sp24];
+ data += itemEffect[paramIdx];
r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL);
if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5))
{
@@ -366,13 +367,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
}
SetMonData(pkmn, MON_DATA_PP1 + r5, &data);
if (gMain.inBattle
- && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000)
- && !(gDisableStructs[sp34].mimickedMoves & gBitTable[r5]))
- gBattleMons[sp34].pp[r5] = data;
+ && battleId != 4 && !(gBattleMons[battleId].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[battleId].mimickedMoves & gBitTable[r5]))
+ gBattleMons[battleId].pp[r5] = data;
retVal = FALSE;
}
}
- sp24++;
+ paramIdx++;
}
else
{
@@ -382,7 +383,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL);
if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex))
{
- data += itemEffect[sp24++];
+ data += itemEffect[paramIdx++];
r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL);
if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex))
{
@@ -391,14 +392,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
}
SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data);
if (gMain.inBattle
- && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000)
- && !(gDisableStructs[sp34].mimickedMoves & gBitTable[moveIndex]))
- gBattleMons[sp34].pp[moveIndex] = data;
+ && battleId != 4 && !(gBattleMons[battleId].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[battleId].mimickedMoves & gBitTable[moveIndex]))
+ gBattleMons[battleId].pp[moveIndex] = data;
retVal = FALSE;
}
}
break;
- case 7:
+ case 7: // EVO_STONE
{
u16 targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, item);
@@ -411,70 +412,72 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
break;
}
}
- sp28++;
- r10 >>= 1;
+ data2++;
+ effect4 >>= 1;
}
break;
case 5:
- r10 = itemEffect[cmdIndex];
- sp28 = 0;
- while (r10 != 0)
+ effect4 = itemEffect[cmdIndex];
+ data2 = 0;
+ while (effect4 != 0)
{
- if (r10 & 1)
+ if (effect4 & 1)
{
u16 evCount;
- switch (sp28)
+ switch (data2)
{
- case 0:
- case 1:
- case 2:
- case 3:
+ case 0: // EV_DEF
+ case 1: // EV_SPEED
+ case 2: // EV_SPDEF
+ case 3: // EV_SPATK
evCount = GetMonEVCount(pkmn);
if (evCount >= 510)
return TRUE;
- data = GetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], NULL);
+ data = GetMonData(pkmn, sGetMonDataEVConstants[data2 + 2], NULL);
if (data < 100)
{
- if (data + itemEffect[sp24] > 100)
- r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24];
+ if (data + itemEffect[paramIdx] > 100)
+ evChange = 100 - (data + itemEffect[paramIdx]) + itemEffect[paramIdx];
else
- r4 = itemEffect[sp24];
- if (evCount + r4 > 510)
- r4 += 510 - (evCount + r4);
- data += r4;
- SetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], &data);
+ evChange = itemEffect[paramIdx];
+ if (evCount + evChange > 510)
+ evChange += 510 - (evCount + evChange);
+ data += evChange;
+ SetMonData(pkmn, sGetMonDataEVConstants[data2 + 2], &data);
CalculateMonStats(pkmn);
retVal = FALSE;
- sp24++;
+ paramIdx++;
}
break;
- case 4:
+ case 4: // PP_MAX
data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gPPUpReadMasks[moveIndex]) >> (moveIndex * 2);
if (data < 3)
{
- r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
+ evChange = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex);
data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL);
data &= gPPUpWriteMasks[moveIndex];
data += gPPUpValues[moveIndex] * 3;
SetMonData(pkmn, MON_DATA_PP_BONUSES, &data);
- data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4;
+ data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) -
+ evChange;
data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data;
SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data);
retVal = FALSE;
}
break;
- case 5:
- if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 && sp2C == 0)
+ case 5: // FRIENDSHIP_LOW
+ if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 &&
+ friendshipMod == 0)
{
- sp2C = itemEffect[sp24];
+ friendshipMod = itemEffect[paramIdx];
friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL);
- if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
- friendship += 150 * sp2C / 100;
+ if (friendshipMod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
+ friendship += 150 * friendshipMod / 100;
else
- friendship += sp2C;
- if (sp2C > 0)
+ friendship += friendshipMod;
+ if (friendshipMod > 0)
{
if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11)
friendship++;
@@ -487,19 +490,20 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
friendship = 255;
SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship);
}
- sp24++;
+ paramIdx++;
break;
- case 6:
+ case 6: // FRIENDSHIP_MID
if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 200
- && retVal == 0 && sp2C == 0)
+ && retVal == 0 &&
+ friendshipMod == 0)
{
- sp2C = itemEffect[sp24];
+ friendshipMod = itemEffect[paramIdx];
friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL);
- if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
- friendship += 150 * sp2C / 100;
+ if (friendshipMod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
+ friendship += 150 * friendshipMod / 100;
else
- friendship += sp2C;
- if (sp2C > 0)
+ friendship += friendshipMod;
+ if (friendshipMod > 0)
{
if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11)
friendship++;
@@ -512,18 +516,19 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
friendship = 255;
SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship);
}
- sp24++;
+ paramIdx++;
break;
- case 7:
- if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 && sp2C == 0)
+ case 7: // FRIENDSHIP_HIGH
+ if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 &&
+ friendshipMod == 0)
{
- sp2C = itemEffect[sp24];
+ friendshipMod = itemEffect[paramIdx];
friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL);
- if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
- friendship += 150 * sp2C / 100;
+ if (friendshipMod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
+ friendship += 150 * friendshipMod / 100;
else
- friendship += sp2C;
- if (sp2C > 0)
+ friendship += friendshipMod;
+ if (friendshipMod > 0)
{
if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11)
friendship++;
@@ -536,12 +541,12 @@ bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 mo
friendship = 255;
SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship);
}
- sp24++;
+ paramIdx++;
break;
}
}
- sp28++;
- r10 >>= 1;
+ data2++;
+ effect4 >>= 1;
}
break;
}
diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c
index 78922e80f..1beace421 100644
--- a/src/pokemon_menu.c
+++ b/src/pokemon_menu.c
@@ -51,7 +51,7 @@ extern u8 gUnknown_020297ED;
extern u8 gUnknown_020384F0;
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F5;
-extern u8 gUnknown_0202E8F6;
+extern bool8 gPartyMenuMessage_IsPrinting;
extern u8 gPokemonItemUseType;
extern u16 gUnknown_0202E8F8;
extern void (*gPokemonItemUseCallback)(u8 taskID, u16 itemID, TaskFunc func);
@@ -329,8 +329,8 @@ static void sub_8089EBC(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gUnknown_020384F0);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
gLastFieldPokeMenuOpened = gUnknown_020384F0;
sub_8089E84();
SetMainCallback2(CB2_PartyMenuMain);
@@ -352,7 +352,7 @@ static void sub_8089F44(u8 taskID)
{
u8 spriteID = gSprites[gTasks[taskID].data[3] >> 8].data[0];
DestroyTask(taskID);
- ewram1B000_alt.unk262 = 1;
+ ePartyMenu2.unk262 = 1;
ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, PSS_MODE_NORMAL);
}
}
@@ -372,8 +372,8 @@ void DoPokemonMenu_Switch(u8 taskID)
static void PokemonMenu_Switch(u8 taskID)
{
Menu_DestroyCursor();
- ewram01000.unkC = sub_806CD5C;
- ewram01000.array[53553] = 1;
+ ePartyMenu.unkC = sub_806CD5C;
+ ePartyMenu.array[53553] = 1;
DoPokemonMenu_Switch(taskID);
}
@@ -428,7 +428,7 @@ static void sub_808A180(u8 taskID)
static void sub_808A1E0(u8 taskID)
{
- if (gUnknown_0202E8F6 != 1)
+ if (gPartyMenuMessage_IsPrinting != 1)
{
SetHeldItemIconVisibility(taskID, sub_806CA38(taskID));
PrintPartyMenuPromptText(0, 0);
@@ -480,8 +480,8 @@ static void sub_808A358(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gLastFieldPokeMenuOpened);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
@@ -496,9 +496,9 @@ static void sub_808A3A4(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
- EWRAM_1B000.unk262 = 3;
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gLastFieldPokeMenuOpened);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
+ ePartyMenu2.unk262 = 3;
sub_8089E84();
SetMainCallback2(CB2_PartyMenuMain);
break;
@@ -544,8 +544,8 @@ static void sub_808A4D4(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gLastFieldPokeMenuOpened);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
@@ -605,7 +605,7 @@ static void PokemonMenu_TakeItem(u8 taskID)
{
Menu_DestroyCursor();
Menu_EraseWindowRect(19, 0, 29, 19);
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678);
}
@@ -613,7 +613,7 @@ static void PokemonMenu_TakeMail(u8 taskID)
{
Menu_DestroyCursor();
Menu_EraseWindowRect(19, 0, 29, 19);
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
DoTakeMail(taskID, sub_808A678);
}
@@ -675,7 +675,7 @@ static void sub_808A848(u8 taskID)
static void sub_808A8A8(void)
{
gUnknown_020384F0 = gLastFieldPokeMenuOpened;
- ewram1B000.unk262 = 4;
+ ePartyMenu2.unk262 = 4;
sub_8089F14();
}
@@ -699,7 +699,7 @@ static void PokemonMenu_CancelSubmenu(u8 taskID)
Menu_DestroyCursor();
PlaySE(SE_SELECT);
Menu_EraseWindowRect(19, 0, 29, 19);
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
sub_8089C7C(sPokeMenuCursorPos);
gTasks[taskID].func = sub_8089D94;
}
@@ -729,8 +729,8 @@ static void PokemonMenu_FieldMove(u8 taskID)
{
// can't use a field HM move without a proper badge
Menu_EraseWindowRect(19, 0, 29, 19);
- sub_806D5A4();
- sub_806E834(gOtherText_CantBeUsedBadge, 1);
+ PartyMenuEraseMsgBoxAndFrame();
+ DisplayPartyMenuMessage(gOtherText_CantBeUsedBadge, 1);
gTasks[taskID].func = sub_808AAF0;
}
else
@@ -760,7 +760,7 @@ static void PokemonMenu_FieldMove(u8 taskID)
static void sub_808AAF0(u8 taskID)
{
- if (gUnknown_0202E8F6 != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON))
+ if (gPartyMenuMessage_IsPrinting != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON))
{
Menu_EraseWindowRect(0, 14, 29, 19);
PokemonMenu_Cancel(taskID);
@@ -853,8 +853,8 @@ static void sub_808AD0C(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gLastFieldPokeMenuOpened);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
@@ -989,8 +989,8 @@ static void sub_808AF80(void)
}
if (gLastFieldPokeMenuOpened > 5 || !GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES))
gLastFieldPokeMenuOpened = 0;
- sub_806C994(ewram1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened);
- ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gLastFieldPokeMenuOpened);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
@@ -1033,7 +1033,7 @@ void sub_808B0C0(u8 taskID)
PlaySE(SE_FAILURE);
else
{
- sub_806D5A4();
+ PartyMenuEraseMsgBoxAndFrame();
if (gPokemonItemUseType == ITEM_USE_SINGLE_MON)
gPokemonItemUseCallback(taskID, gSpecialVar_ItemId, sub_808B224);
if (gPokemonItemUseType == ITEM_USE_GIVE_ITEM)
@@ -1127,8 +1127,8 @@ static void sub_808B3A0(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gLastFieldPokeMenuOpened);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gLastFieldPokeMenuOpened);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
@@ -1172,7 +1172,7 @@ static void sub_808B4A4(u8 taskID)
static void sub_808B4EC(u8 taskID)
{
- if (gUnknown_0202E8F6 != 1)
+ if (gPartyMenuMessage_IsPrinting != 1)
sub_808B224(taskID);
}
@@ -1187,8 +1187,8 @@ static void sub_808B518(void)
{
if (InitPartyMenu() == TRUE)
{
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
+ sub_806C994(ePartyMenu2.menuHandlerTaskId, gUnknown_020384F0);
+ ChangePartyMenuSelection(ePartyMenu2.menuHandlerTaskId, 0);
SetMainCallback2(CB2_PartyMenuMain);
break;
}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index c1143495d..a2f384406 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -22,9 +22,6 @@ void sub_809665C(void);
void sub_80966F4(const u8 *sourceString, u16 x, u16 y);
void sub_8096784(struct Sprite *sprite);
-EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
-EWRAM_DATA u8 gUnknown_02038470[3] = {};
-EWRAM_DATA u8 gUnknown_02038473 = 0;
EWRAM_DATA u8 gUnknown_02038474 = 0;
EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL;
@@ -669,12 +666,12 @@ void sub_80963D0(u8 curBox)
r5 = 0;
if (i & 2)
{
- gUnknown_02038478->unk_0004[i]->pos1.x = 0xc4;
+ gUnknown_02038478->unk_0004[i]->x = 0xc4;
r5 = 2;
}
if (i & 1)
{
- gUnknown_02038478->unk_0004[i]->pos1.y = 0x70;
+ gUnknown_02038478->unk_0004[i]->y = 0x70;
gUnknown_02038478->unk_0004[i]->oam.size = 0;
r5++;
}
@@ -774,11 +771,11 @@ void sub_8096784(struct Sprite *sprite)
if (++sprite->data[1] > 3)
{
sprite->data[1] = 0;
- sprite->pos2.x += sprite->data[0];
+ sprite->x2 += sprite->data[0];
if (++sprite->data[2] > 5)
{
sprite->data[2] = 0;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
}
}
}
diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c
index 79ebc93ee..d97470cef 100644
--- a/src/pokemon_storage_system_2.c
+++ b/src/pokemon_storage_system_2.c
@@ -1464,8 +1464,8 @@ void sub_8097F58(void)
gPokemonStorageSystemPtr->unk_12ac = sub_80F7940(0x000d, 0xdace, 0);
gPokemonStorageSystemPtr->unk_12ac->oam.priority = 0;
gPokemonStorageSystemPtr->unk_12ac->subpriority = 1;
- gPokemonStorageSystemPtr->unk_12ac->pos1.x = 0x28;
- gPokemonStorageSystemPtr->unk_12ac->pos1.y = 0x95;
+ gPokemonStorageSystemPtr->unk_12ac->x = 0x28;
+ gPokemonStorageSystemPtr->unk_12ac->y = 0x95;
gPokemonStorageSystemPtr->unk_12b8 = BG_CHAR_ADDR(4) + 32 * GetSpriteTileStartByTag(0x000d);
}
@@ -1706,7 +1706,7 @@ void sub_80981F0(u16 species, u32 pid)
{
if (species != SPECIES_NONE)
{
- HandleLoadSpecialPokePic(gMonFrontPicTable + species, gMonFrontPicCoords[species].coords, 1, (intptr_t)gPokemonStorageSystemPtr->unk_4784, gPokemonStorageSystemPtr->unk_2784, species, pid);
+ HandleLoadSpecialPokePic(gMonFrontPicTable + species, gMonFrontPicCoords[species].coords, 1, gPokemonStorageSystemPtr->unk_4784, gPokemonStorageSystemPtr->unk_2784, species, pid);
LZ77UnCompWram(gPokemonStorageSystemPtr->unk_11e8, gPokemonStorageSystemPtr->unk_2704);
CpuCopy32(gPokemonStorageSystemPtr->unk_2784, gPokemonStorageSystemPtr->unk_26fc, 0x800);
LoadPalette(gPokemonStorageSystemPtr->unk_2704, gPokemonStorageSystemPtr->unk_26fa, 0x20);
diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c
index cbac7a504..e9e7c4095 100644
--- a/src/pokemon_storage_system_3.c
+++ b/src/pokemon_storage_system_3.c
@@ -136,12 +136,12 @@ static void sub_8098E24(struct Sprite *sprite)
if (sprite->data[1] != 0)
{
sprite->data[1]--;
- sprite->pos1.x += sprite->data[2];
+ sprite->x += sprite->data[2];
}
else
{
gPokemonStorageSystemPtr->unk_1178--;
- sprite->pos1.x = sprite->data[3];
+ sprite->x = sprite->data[3];
sprite->callback = SpriteCallbackDummy;
}
}
@@ -154,8 +154,8 @@ static void sub_8098E68(struct Sprite *sprite)
}
else
{
- sprite->pos1.x += sprite->data[2];
- sprite->data[5] = sprite->pos1.x + sprite->pos2.x;
+ sprite->x += sprite->data[2];
+ sprite->data[5] = sprite->x + sprite->x2;
if (sprite->data[5] < 0x45 || sprite->data[5] > 0xfb)
sprite->callback = SpriteCallbackDummy;
}
@@ -296,7 +296,7 @@ void sub_8099200(bool8 a0)
for (i = 0; i < count; i++)
{
// this routine assumes party_compaction has been called
- gPokemonStorageSystemPtr->unk_1038[i]->pos1.y -= 0xa0;
+ gPokemonStorageSystemPtr->unk_1038[i]->y -= 0xa0;
gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE;
}
}
@@ -344,8 +344,8 @@ static void sub_8099388(struct Sprite *sprite, u16 a1)
r3 = 0x98;
r4 = 24 * (a1 - 1) + 0x10;
}
- sprite->data[2] = sprite->pos1.x << 3;
- sprite->data[3] = sprite->pos1.y << 3;
+ sprite->data[2] = sprite->x << 3;
+ sprite->data[3] = sprite->y << 3;
sprite->data[4] = (r3 * 8 - sprite->data[2]) / 8;
sprite->data[5] = (r4 * 8 - sprite->data[3]) / 8;
sprite->data[6] = 8;
@@ -358,21 +358,21 @@ static void sub_80993F4(struct Sprite *sprite)
{
sprite->data[2] += sprite->data[4];
sprite->data[3] += sprite->data[5];
- sprite->pos1.x = sprite->data[2] >> 3;
- sprite->pos1.y = sprite->data[3] >> 3;
+ sprite->x = sprite->data[2] >> 3;
+ sprite->y = sprite->data[3] >> 3;
sprite->data[6]--;
}
else
{
if (sprite->data[1] == 0)
{
- sprite->pos1.x = 0x68;
- sprite->pos1.y = 0x40;
+ sprite->x = 0x68;
+ sprite->y = 0x40;
}
else
{
- sprite->pos1.x = 0x98;
- sprite->pos1.y = (sprite->data[1] - 1) * 24 + 0x10;
+ sprite->x = 0x98;
+ sprite->y = (sprite->data[1] - 1) * 24 + 0x10;
}
sprite->callback = SpriteCallbackDummy;
gPokemonStorageSystemPtr->unk_1038[sprite->data[1]] = sprite;
@@ -398,8 +398,8 @@ void sub_80994A8(s16 y)
if (gPokemonStorageSystemPtr->unk_1038[i])
{
s16 yy;
- gPokemonStorageSystemPtr->unk_1038[i]->pos1.y += y;
- yy = gPokemonStorageSystemPtr->unk_1038[i]->pos1.y + gPokemonStorageSystemPtr->unk_1038[i]->pos2.y + gPokemonStorageSystemPtr->unk_1038[i]->centerToCornerVecY;
+ gPokemonStorageSystemPtr->unk_1038[i]->y += y;
+ yy = gPokemonStorageSystemPtr->unk_1038[i]->y + gPokemonStorageSystemPtr->unk_1038[i]->y2 + gPokemonStorageSystemPtr->unk_1038[i]->centerToCornerVecY;
if (yy < -0x10 || yy > 0xb0)
gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE;
else
@@ -487,11 +487,11 @@ bool8 sub_809971C(void)
gPokemonStorageSystemPtr->unk_1170++;
if (gPokemonStorageSystemPtr->unk_1170 & 1)
{
- (*gPokemonStorageSystemPtr->unk_10c8)->pos1.y--;
- gPokemonStorageSystemPtr->unk_1034->pos1.y++;
+ (*gPokemonStorageSystemPtr->unk_10c8)->y--;
+ gPokemonStorageSystemPtr->unk_1034->y++;
}
- (*gPokemonStorageSystemPtr->unk_10c8)->pos2.x = gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16;
- gPokemonStorageSystemPtr->unk_1034->pos2.x = -(gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16);
+ (*gPokemonStorageSystemPtr->unk_10c8)->x2 = gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16;
+ gPokemonStorageSystemPtr->unk_1034->x2 = -(gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16);
if (gPokemonStorageSystemPtr->unk_1170 == 8)
{
gPokemonStorageSystemPtr->unk_1034->oam.priority = (*gPokemonStorageSystemPtr->unk_10c8)->oam.priority;
@@ -576,8 +576,8 @@ bool8 sub_8099990(void)
static void sub_80999C4(struct Sprite *sprite)
{
- sprite->pos1.x = gPokemonStorageSystemPtr->unk_11c0->pos1.x;
- sprite->pos1.y = gPokemonStorageSystemPtr->unk_11c0->pos1.y + gPokemonStorageSystemPtr->unk_11c0->pos2.y + 4;
+ sprite->x = gPokemonStorageSystemPtr->unk_11c0->x;
+ sprite->y = gPokemonStorageSystemPtr->unk_11c0->y + gPokemonStorageSystemPtr->unk_11c0->y2 + 4;
}
static u16 PSS_LoadSpeciesIconGfx(u16 a0)
diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c
index 42a1a5000..48fdf425a 100644
--- a/src/pokemon_storage_system_4.c
+++ b/src/pokemon_storage_system_4.c
@@ -713,7 +713,7 @@ void sub_809A5E8(struct Sprite *sprite)
{
if (sprite->data[2])
sprite->data[2]--;
- else if ((sprite->pos1.x += sprite->data[0]) == sprite->data[1])
+ else if ((sprite->x += sprite->data[0]) == sprite->data[1])
sprite->callback = SpriteCallbackDummy;
}
@@ -723,8 +723,8 @@ void sub_809A61C(struct Sprite *sprite)
sprite->data[1]--;
else
{
- sprite->pos1.x += sprite->data[0];
- sprite->data[2] = sprite->pos1.x + sprite->pos2.x;
+ sprite->x += sprite->data[0];
+ sprite->data[2] = sprite->x + sprite->x2;
if (sprite->data[2] < 0x40 || sprite->data[2] > 0x100)
DestroySprite(sprite);
}
@@ -772,7 +772,7 @@ void sub_809A774(s8 a0)
for (i = 0; i < 2; i++)
{
- gPokemonStorageSystemPtr->unk_0d00[i]->pos2.x = 0;
+ gPokemonStorageSystemPtr->unk_0d00[i]->x2 = 0;
gPokemonStorageSystemPtr->unk_0d00[i]->data[0] = 2;
}
if (a0 < 0)
@@ -799,8 +799,8 @@ void sub_809A810(void)
for (i = 0; i < 2; i++)
{
- gPokemonStorageSystemPtr->unk_0d00[i]->pos1.x = 0x88 * i + 0x5c;
- gPokemonStorageSystemPtr->unk_0d00[i]->pos2.x = 0;
+ gPokemonStorageSystemPtr->unk_0d00[i]->x = 0x88 * i + 0x5c;
+ gPokemonStorageSystemPtr->unk_0d00[i]->x2 = 0;
gPokemonStorageSystemPtr->unk_0d00[i]->invisible = FALSE;
}
sub_809A860(TRUE);
@@ -833,17 +833,17 @@ void sub_809A8C8(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
break;
case 1:
if (++sprite->data[1] > 3)
{
sprite->data[1] = 0;
- sprite->pos2.x += sprite->data[3];
+ sprite->x2 += sprite->data[3];
if (++sprite->data[2] > 5)
{
sprite->data[2] = 0;
- sprite->pos2.x = 0;
+ sprite->x2 = 0;
}
}
break;
@@ -851,18 +851,18 @@ void sub_809A8C8(struct Sprite *sprite)
sprite->data[0] = 3;
break;
case 3:
- sprite->pos1.x -= gPokemonStorageSystemPtr->unk_08b6;
- if (sprite->pos1.x < 0x49 || sprite->pos1.x > 0xf7)
+ sprite->x -= gPokemonStorageSystemPtr->unk_08b6;
+ if (sprite->x < 0x49 || sprite->x > 0xf7)
sprite->invisible = TRUE;
if (--sprite->data[1] == 0)
{
- sprite->pos1.x = sprite->data[2];
+ sprite->x = sprite->data[2];
sprite->invisible = FALSE;
sprite->data[0] = 4;
}
break;
case 4:
- sprite->pos1.x -= gPokemonStorageSystemPtr->unk_08b6;
+ sprite->x -= gPokemonStorageSystemPtr->unk_08b6;
break;
}
}
@@ -967,35 +967,35 @@ bool8 sub_809AC00(void)
{
gPokemonStorageSystemPtr->unk_11c8 += gPokemonStorageSystemPtr->unk_11d0;
gPokemonStorageSystemPtr->unk_11cc += gPokemonStorageSystemPtr->unk_11d4;
- gPokemonStorageSystemPtr->unk_11c0->pos1.x = gPokemonStorageSystemPtr->unk_11c8 >> 8;
- gPokemonStorageSystemPtr->unk_11c0->pos1.y = gPokemonStorageSystemPtr->unk_11cc >> 8;
- if (gPokemonStorageSystemPtr->unk_11c0->pos1.x > 0x100)
+ gPokemonStorageSystemPtr->unk_11c0->x = gPokemonStorageSystemPtr->unk_11c8 >> 8;
+ gPokemonStorageSystemPtr->unk_11c0->y = gPokemonStorageSystemPtr->unk_11cc >> 8;
+ if (gPokemonStorageSystemPtr->unk_11c0->x > 0x100)
{
- tmp = gPokemonStorageSystemPtr->unk_11c0->pos1.x - 0x100;
- gPokemonStorageSystemPtr->unk_11c0->pos1.x = tmp + 0x40;
+ tmp = gPokemonStorageSystemPtr->unk_11c0->x - 0x100;
+ gPokemonStorageSystemPtr->unk_11c0->x = tmp + 0x40;
}
- if (gPokemonStorageSystemPtr->unk_11c0->pos1.x < 0x40)
+ if (gPokemonStorageSystemPtr->unk_11c0->x < 0x40)
{
- tmp = 0x40 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
- gPokemonStorageSystemPtr->unk_11c0->pos1.x = 0x100 - tmp;
+ tmp = 0x40 - gPokemonStorageSystemPtr->unk_11c0->x;
+ gPokemonStorageSystemPtr->unk_11c0->x = 0x100 - tmp;
}
- if (gPokemonStorageSystemPtr->unk_11c0->pos1.y > 0xb0)
+ if (gPokemonStorageSystemPtr->unk_11c0->y > 0xb0)
{
- tmp = gPokemonStorageSystemPtr->unk_11c0->pos1.y - 0xb0;
- gPokemonStorageSystemPtr->unk_11c0->pos1.y = tmp - 0x10;
+ tmp = gPokemonStorageSystemPtr->unk_11c0->y - 0xb0;
+ gPokemonStorageSystemPtr->unk_11c0->y = tmp - 0x10;
}
- if (gPokemonStorageSystemPtr->unk_11c0->pos1.y < -0x10)
+ if (gPokemonStorageSystemPtr->unk_11c0->y < -0x10)
{
- tmp = -0x10 - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
- gPokemonStorageSystemPtr->unk_11c0->pos1.y = 0xb0 - tmp;
+ tmp = -0x10 - gPokemonStorageSystemPtr->unk_11c0->y;
+ gPokemonStorageSystemPtr->unk_11c0->y = 0xb0 - tmp;
}
if (gPokemonStorageSystemPtr->unk_11e3 && --gPokemonStorageSystemPtr->unk_11e3 == 0)
gPokemonStorageSystemPtr->unk_11c0->vFlip = gPokemonStorageSystemPtr->unk_11c0->vFlip ? FALSE : TRUE;
}
else
{
- gPokemonStorageSystemPtr->unk_11c0->pos1.x = gPokemonStorageSystemPtr->unk_11d8;
- gPokemonStorageSystemPtr->unk_11c0->pos1.y = gPokemonStorageSystemPtr->unk_11da;
+ gPokemonStorageSystemPtr->unk_11c0->x = gPokemonStorageSystemPtr->unk_11d8;
+ gPokemonStorageSystemPtr->unk_11c0->y = gPokemonStorageSystemPtr->unk_11da;
sub_809AFB8();
}
return TRUE;
@@ -1027,33 +1027,33 @@ void sub_809AD94(void)
switch (gPokemonStorageSystemPtr->unk_11de)
{
default:
- r7 = gPokemonStorageSystemPtr->unk_11da - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
+ r7 = gPokemonStorageSystemPtr->unk_11da - gPokemonStorageSystemPtr->unk_11c0->y;
break;
case -1:
- r7 = gPokemonStorageSystemPtr->unk_11da - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
+ r7 = gPokemonStorageSystemPtr->unk_11da - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->y;
break;
case 1:
- r7 = gPokemonStorageSystemPtr->unk_11da + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
+ r7 = gPokemonStorageSystemPtr->unk_11da + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->y;
break;
}
switch (gPokemonStorageSystemPtr->unk_11df)
{
default:
- r0 = gPokemonStorageSystemPtr->unk_11d8 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ r0 = gPokemonStorageSystemPtr->unk_11d8 - gPokemonStorageSystemPtr->unk_11c0->x;
break;
case -1:
- r0 = gPokemonStorageSystemPtr->unk_11d8 - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ r0 = gPokemonStorageSystemPtr->unk_11d8 - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->x;
break;
case 1:
- r0 = gPokemonStorageSystemPtr->unk_11d8 + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ r0 = gPokemonStorageSystemPtr->unk_11d8 + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->x;
break;
}
r7 <<= 8;
r0 <<= 8;
gPokemonStorageSystemPtr->unk_11d0 = r0 / gPokemonStorageSystemPtr->unk_11dc;
gPokemonStorageSystemPtr->unk_11d4 = r7 / gPokemonStorageSystemPtr->unk_11dc;
- gPokemonStorageSystemPtr->unk_11c8 = gPokemonStorageSystemPtr->unk_11c0->pos1.x << 8;
- gPokemonStorageSystemPtr->unk_11cc = gPokemonStorageSystemPtr->unk_11c0->pos1.y << 8;
+ gPokemonStorageSystemPtr->unk_11c8 = gPokemonStorageSystemPtr->unk_11c0->x << 8;
+ gPokemonStorageSystemPtr->unk_11cc = gPokemonStorageSystemPtr->unk_11c0->y << 8;
}
void sub_809AF18(u8 a0, u8 a1)
@@ -1237,13 +1237,13 @@ bool8 sub_809B24C(void)
bool8 sub_809B324(void)
{
- switch (gPokemonStorageSystemPtr->unk_11c0->pos2.y)
+ switch (gPokemonStorageSystemPtr->unk_11c0->y2)
{
default:
- gPokemonStorageSystemPtr->unk_11c0->pos2.y++;
+ gPokemonStorageSystemPtr->unk_11c0->y2++;
break;
case 0:
- gPokemonStorageSystemPtr->unk_11c0->pos2.y++;
+ gPokemonStorageSystemPtr->unk_11c0->y2++;
break;
case 8:
return FALSE;
@@ -1253,12 +1253,12 @@ bool8 sub_809B324(void)
bool8 sub_809B358(void)
{
- switch (gPokemonStorageSystemPtr->unk_11c0->pos2.y)
+ switch (gPokemonStorageSystemPtr->unk_11c0->y2)
{
case 0:
return FALSE;
default:
- gPokemonStorageSystemPtr->unk_11c0->pos2.y--;
+ gPokemonStorageSystemPtr->unk_11c0->y2--;
break;
}
return TRUE;
@@ -2323,8 +2323,8 @@ bool8 sub_809CAB0(void)
void sub_809CB74(struct Sprite *sprite)
{
- sprite->pos1.x = gPokemonStorageSystemPtr->unk_11c0->pos1.x;
- sprite->pos1.y = gPokemonStorageSystemPtr->unk_11c0->pos1.y + 20;
+ sprite->x = gPokemonStorageSystemPtr->unk_11c0->x;
+ sprite->y = gPokemonStorageSystemPtr->unk_11c0->y + 20;
}
void sub_809CB94(struct Pokemon *mon)
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 9d1aa99db..fba4e1e18 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -126,7 +126,7 @@ extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8);
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern u8 gPPUpReadMasks[];
TaskFunc gUnknown_03005CF0;
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
extern const u8 gStatusPal_Icons[];
extern const u8 gStatusGfx_Icons[];
@@ -659,7 +659,7 @@ void sub_809DA1C(void)
pssData.inputHandlingTaskId = CreateTask(SummaryScreenHandleKeyInput, 0);
break;
case PSS_MODE_SELECT_MOVE:
- case PSS_MODE_UNKNOWN:
+ case PSS_MODE_MOVE_DELETER:
pssData.inputHandlingTaskId = CreateTask(sub_809EB40, 0);
break;
case PSS_MODE_MOVES_ONLY:
@@ -1838,8 +1838,8 @@ static u8 SummaryScreen_LoadPokemonSprite(struct Pokemon *mon, u8 *state)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- ewram_addr,
- gUnknown_081FAF4C[1],
+ (void *)EWRAM,
+ gMonSpriteGfx_Sprite_ptr[1],
species,
personality);
*state += 1;
@@ -1894,7 +1894,7 @@ static bool8 SummaryScreen_CanForgetSelectedMove(u8 taskId)
SummaryScreen_GetPokemon(&mon);
move = GetMonMove(&mon, pssData.selectedMoveIndex);
- if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_UNKNOWN)
+ if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_MOVE_DELETER)
return FALSE;
return TRUE;
}
@@ -2478,7 +2478,7 @@ bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon)
{
u32 trainerId;
- if (ewram18000_3 == gEnemyParty)
+ if (pssData.monList.partyMons == gEnemyParty)
{
u8 enemyId = GetMultiplayerId() ^ 1;
trainerId = gLinkPlayers[enemyId].trainerId & 0xFFFF;
@@ -3988,7 +3988,7 @@ u8 SummaryScreen_CreatePokemonSprite(struct Pokemon *mon)
u8 spriteId;
species = GetMonData(mon, MON_DATA_SPECIES2);
- spriteId = CreateSprite(&gUnknown_02024E8C, 40, 64, 5);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, 40, 64, 5);
FreeSpriteOamMatrix(&gSprites[spriteId]);
@@ -4054,8 +4054,8 @@ static void SummaryScreen_DrawTypeIcon(u8 animNum, u8 x, u8 y, u8 d)
StartSpriteAnim(&gSprites[ewram1A000[d]], animNum);
gSprites[ewram1A000[d]].oam.paletteNum = sMoveTypeToOamPaletteNum[animNum];
- gSprites[ewram1A000[d]].pos1.x = x + 16;
- gSprites[ewram1A000[d]].pos1.y = y + 8;
+ gSprites[ewram1A000[d]].x = x + 16;
+ gSprites[ewram1A000[d]].y = y + 8;
sub_80A1918(d, 0);
}
@@ -4129,9 +4129,9 @@ static void sub_80A1BC0(struct Sprite *sprite)
}
if (sprite->data[0] == 9)
- sprite->pos2.y = pssData.selectedMoveIndex * 16;
+ sprite->y2 = pssData.selectedMoveIndex * 16;
else
- sprite->pos2.y = pssData.switchMoveIndex * 16;
+ sprite->y2 = pssData.switchMoveIndex * 16;
}
#define shared1A009 ((u8 *)(gSharedMem + 0x1A009))
@@ -4219,8 +4219,8 @@ static void sub_80A1D84(struct Pokemon *mon)
u8 markings = GetMonData(mon, MON_DATA_MARKINGS);
StartSpriteAnim(sprite, markings);
- gUnknown_020384F4->pos1.x = 60;
- gUnknown_020384F4->pos1.y = 26;
+ gUnknown_020384F4->x = 60;
+ gUnknown_020384F4->y = 26;
}
}
diff --git a/src/pokenav.c b/src/pokenav.c
index ee2a4e676..8a498e954 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -2872,10 +2872,10 @@ void sub_80F21F8()
void sub_80F2218(struct Sprite *sprite)
{
- sprite->pos1.x -= 8;
- if (sprite->pos1.x <= sprite->data[2])
+ sprite->x -= 8;
+ if (sprite->x <= sprite->data[2])
{
- sprite->pos1.x = sprite->data[2];
+ sprite->x = sprite->data[2];
sprite->callback = sub_80F22B0;
}
}
@@ -2886,7 +2886,7 @@ void sub_80F2240(struct Sprite *sprite)
{
if (sprite->data[5])
{
- sprite->pos1.x += sprite->data[4];
+ sprite->x += sprite->data[4];
sprite->data[5] -= sprite->data[4];
}
@@ -2895,8 +2895,8 @@ void sub_80F2240(struct Sprite *sprite)
}
else
{
- sprite->pos1.x += 8;
- if (sprite->pos1.x >= sprite->data[3])
+ sprite->x += 8;
+ if (sprite->x >= sprite->data[3])
sub_80F240C(sprite);
}
}
@@ -2905,13 +2905,13 @@ void sub_80F22B0(struct Sprite *sprite)
{
if (sprite->data[0] == gPokenavStructPtr->unk6DAD)
{
- if (sprite->pos2.x > -16)
- sprite->pos2.x -= 4;
+ if (sprite->x2 > -16)
+ sprite->x2 -= 4;
}
else
{
- if (sprite->pos2.x < 0)
- sprite->pos2.x += 4;
+ if (sprite->x2 < 0)
+ sprite->x2 += 4;
}
}
@@ -2927,7 +2927,7 @@ bool8 sub_80F22F8(void)
if (!sprite)
return TRUE;
- if (sprite->pos2.x != 0 && sprite->pos2.x != -16)
+ if (sprite->x2 != 0 && sprite->x2 != -16)
return FALSE;
}
}
@@ -3283,11 +3283,11 @@ void sub_80F29B8(u8 arg0)
#define sEndX sprite->data[1]
void sub_80F2BBC(struct Sprite *sprite)
{
- s16 x = sprite->pos1.x;
- sprite->pos1.x += sprite->data[0];
- if ((x <= sEndX && sprite->pos1.x >= sEndX) || (x >= sEndX && sprite->pos1.x <= sEndX))
+ s16 x = sprite->x;
+ sprite->x += sprite->data[0];
+ if ((x <= sEndX && sprite->x >= sEndX) || (x >= sEndX && sprite->x <= sEndX))
{
- sprite->pos1.x = sEndX;
+ sprite->x = sEndX;
if (sprite->data[3] == 4 && sprite->data[2] == 1)
sprite->callback = sub_80F2C58;
else
@@ -3300,8 +3300,8 @@ void sub_80F2C14(struct Sprite *sprite)
{
u16 right;
- sprite->pos1.x -= sprite->data[0];
- right = sprite->pos1.x + 32;
+ sprite->x -= sprite->data[0];
+ right = sprite->x + 32;
if (right > 304)
{
if (sprite->data[2] == 1)
@@ -3394,7 +3394,7 @@ void sub_80F2DF4(void)
void sub_80F2E00(struct Sprite *sprite)
{
- sprite->pos1.x = gPokenavStructPtr->unk8766 + 38;
+ sprite->x = gPokenavStructPtr->unk8766 + 38;
}
void sub_80F2E18(u8 arg0)
@@ -3468,8 +3468,8 @@ void sub_80F2FB0(void)
void sub_80F2FEC(struct Sprite *sprite)
{
- sprite->pos1.x = gPokenavStructPtr->unkD15A + 40;
- sprite->pos1.y = 104;
+ sprite->x = gPokenavStructPtr->unkD15A + 40;
+ sprite->y = 104;
}
void sub_80F3008(u8 arg0)
@@ -3547,7 +3547,7 @@ void sub_80F3130(void)
void sub_80F3190(struct Sprite *sprite)
{
- sprite->pos1.y = gPokenavStructPtr->unk876C * 16 + 16;
+ sprite->y = gPokenavStructPtr->unk876C * 16 + 16;
}
void sub_80F31AC(struct Sprite *sprite)
@@ -3569,12 +3569,12 @@ void sub_80F31AC(struct Sprite *sprite)
sprite->data[0] = 0;
if (++sprite->data[1] < 5)
{
- sprite->pos2.y += sprite->data[2];
+ sprite->y2 += sprite->data[2];
}
else
{
sprite->data[1] = 0;
- sprite->pos2.y = 0;
+ sprite->y2 = 0;
}
}
}
@@ -3708,8 +3708,8 @@ void sub_80F35B4(void)
sub_80F7404();
sprite = sub_80F7920(27, 21, gUnknown_083E4678);
sprite->oam.priority = 3;
- sprite->pos1.x = 192;
- sprite->pos1.y = 32;
+ sprite->x = 192;
+ sprite->y = 32;
sprite->callback = sub_80F363C;
gPokenavStructPtr->unk76AC = sprite;
}
@@ -4077,17 +4077,17 @@ void sub_80F3E24(struct Sprite *sprite)
{
if (gPokenavStructPtr->unk8768)
{
- sprite->pos1.x = gPokenavStructPtr->unk8768->pos1.x
- + gPokenavStructPtr->unk8768->pos2.x
+ sprite->x = gPokenavStructPtr->unk8768->x
+ + gPokenavStructPtr->unk8768->x2
+ gUnknown_083E4794[sprite->data[0]][0];
- sprite->pos1.y = gPokenavStructPtr->unk8768->pos1.y
- + gPokenavStructPtr->unk8768->pos2.y
+ sprite->y = gPokenavStructPtr->unk8768->y
+ + gPokenavStructPtr->unk8768->y2
+ gUnknown_083E4794[sprite->data[0]][1];
}
else
{
- sprite->pos1.x = gUnknown_083E4794[sprite->data[0]][0] + 40;
- sprite->pos1.y = gUnknown_083E4794[sprite->data[0]][1] + 104;
+ sprite->x = gUnknown_083E4794[sprite->data[0]][0] + 40;
+ sprite->y = gUnknown_083E4794[sprite->data[0]][1] + 104;
}
}
@@ -4225,8 +4225,8 @@ bool8 sub_80F4024(void)
void sub_80F4138(struct Sprite *sprite)
{
- sprite->pos2.y = -gPokenavStructPtr->unk030C;
- if (sprite->pos2.y <= -32)
+ sprite->y2 = -gPokenavStructPtr->unk030C;
+ if (sprite->y2 <= -32)
{
if (sprite->data[0] == 0)
{
@@ -4626,7 +4626,7 @@ void sub_80F4824(s16 arg0, u8 arg1)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
1,
- (intptr_t)gPokenavStructPtr->unk131E4,
+ gPokenavStructPtr->unk131E4,
gPokenavStructPtr->unkD1E4[arg1],
species,
personality);
diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c
index d0fbbec85..e1fe1c4e4 100644
--- a/src/post_battle_event_funcs.c
+++ b/src/post_battle_event_funcs.c
@@ -1,14 +1,14 @@
#include "global.h"
+#include "constants/heal_locations.h"
+#include "contest_util.h"
#include "event_data.h"
#include "hall_of_fame.h"
#include "load_save.h"
#include "main.h"
-#include "pokemon.h"
#include "overworld.h"
-#include "script_pokemon_80C4.h"
-#include "constants/heal_locations.h"
+#include "pokemon.h"
-extern u8 gUnknown_02039324;
+extern bool8 gHasHallOfFameRecords;
int GameClear(void)
{
@@ -19,11 +19,11 @@ int GameClear(void)
if (FlagGet(FLAG_SYS_GAME_CLEAR) == TRUE)
{
- gUnknown_02039324 = 1;
+ gHasHallOfFameRecords = 1;
}
else
{
- gUnknown_02039324 = 0;
+ gHasHallOfFameRecords = 0;
FlagSet(FLAG_SYS_GAME_CLEAR);
}
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 1bf92bb41..c3c0df436 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -58,7 +58,8 @@ struct PlayerRecords
struct EasyChatPair easyChatPairs[5];
struct RecordMixingDayCareMail daycareMailRecord;
struct BattleTowerRecord battleTowerRecord;
- u16 filler11C8[0x34];
+ u16 giftItem;
+ u16 filler11CA[0x33];
};
void RecordMixing_PrepareExchangePacket(void)
@@ -66,31 +67,34 @@ void RecordMixing_PrepareExchangePacket(void)
SetPlayerSecretBaseRecordMixingParty();
sub_80C045C();
- memcpy(ewram_2018000.secretBases, recordMixingSecretBases, sizeof(ewram_2018000.secretBases));
- memcpy(ewram_2018000.tvShows, recordMixingTvShows, sizeof(ewram_2018000.tvShows));
- memcpy(ewram_2018000.pokeNews, recordMixingPokeNews, sizeof(ewram_2008000.pokeNews));
- memcpy(&ewram_2018000.mauvilleMan, recordMixingMauvilleMan, sizeof(ewram_2008000.mauvilleMan));
- memcpy(ewram_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(ewram_2018000.easyChatPairs));
+ memcpy(eSentRecord.secretBases, recordMixingSecretBases, sizeof(eSentRecord.secretBases));
+ memcpy(eSentRecord.tvShows, recordMixingTvShows, sizeof(eSentRecord.tvShows));
+ memcpy(eSentRecord.pokeNews, recordMixingPokeNews, sizeof(eSentRecord.pokeNews));
+ memcpy(&eSentRecord.mauvilleMan, recordMixingMauvilleMan, sizeof(eSentRecord.mauvilleMan));
+ memcpy(eSentRecord.easyChatPairs, recordMixingEasyChatPairs, sizeof(eSentRecord.easyChatPairs));
gDayCareMailRecord.mail[0] = gSaveBlock1.daycare.misc.mail[0];
gDayCareMailRecord.mail[1] = gSaveBlock1.daycare.misc.mail[1];
InitDaycareMailRecordMixing(gSaveBlock1.daycare.mons, &gDayCareMailRecord);
- memcpy(&ewram_2018000.daycareMailRecord, gDayCareMailPlayerRecord, sizeof(struct RecordMixingDayCareMail));
- memcpy(&ewram_2018000.battleTowerRecord, gBattleTowerPlayerRecord, sizeof(struct BattleTowerRecord));
+ memcpy(&eSentRecord.daycareMailRecord, gDayCareMailPlayerRecord, sizeof(struct RecordMixingDayCareMail));
+ memcpy(&eSentRecord.battleTowerRecord, gBattleTowerPlayerRecord, sizeof(struct BattleTowerRecord));
if (GetMultiplayerId() == 0)
- ewram_2018000.filler11C8[0] = GetRecordMixingGift();
+ eSentRecord.giftItem = GetRecordMixingGift();
}
-void RecordMixing_ReceiveExchangePacket(u32 a)
+void RecordMixing_ReceiveExchangePacket(u32 which)
{
- sub_80BD674(ewram_2008000.secretBases, sizeof(struct PlayerRecords), a);
- sub_80BFD44((u8 *)ewram_2008000.tvShows, sizeof(struct PlayerRecords), a);
- sub_80C0514(ewram_2008000.pokeNews, sizeof(struct PlayerRecords), a);
- sub_80B9B1C((u8 *)&ewram_2008000.mauvilleMan, sizeof(struct PlayerRecords), a);
- sub_80FA4E4(ewram_2008000.easyChatPairs, sizeof(struct PlayerRecords), a);
- sub_80B9C6C(&ewram_2008000.daycareMailRecord, sizeof(struct PlayerRecords), a, ewram_2008000.tvShows);
- sub_80B9B70(&ewram_2008000.battleTowerRecord, sizeof(struct PlayerRecords), a);
- sub_80B9F3C(ewram_2008000.filler11C8, a);
+ ReceiveSecretBasesData(eReceivedRecords.secretBases, sizeof(struct PlayerRecords), which);
+ ReceiveTvShowsData((u8 *)eReceivedRecords.tvShows, sizeof(struct PlayerRecords), which);
+ ReceivePokeNewsData(eReceivedRecords.pokeNews, sizeof(struct PlayerRecords), which);
+ ReceiveOldManData((u8 *)&eReceivedRecords.mauvilleMan, sizeof(struct PlayerRecords), which);
+ ReceiveDewfordTrendData(eReceivedRecords.easyChatPairs, sizeof(struct PlayerRecords), which);
+ ReceiveDaycareMailData(&eReceivedRecords.daycareMailRecord,
+ sizeof(struct PlayerRecords),
+ which,
+ eReceivedRecords.tvShows);
+ ReceiveBattleTowerData(&eReceivedRecords.battleTowerRecord, sizeof(struct PlayerRecords), which);
+ ReceiveGiftItem(&eReceivedRecords.giftItem, which);
}
#define tCounter data[0]
@@ -247,11 +251,11 @@ void sub_80B95F0(u8 taskId)
task->tState = 0;
task->data[5] = GetMultiplayerId_();
task->func = Task_RecordMixing_SendPacket;
- StorePtrInTaskData(&ewram_2018000, &task->data[2]);
+ StorePtrInTaskData(&eSentRecord, &task->data[2]);
subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50);
task->data[10] = subTaskId;
gTasks[subTaskId].data[0] = taskId;
- StorePtrInTaskData((u8 *)&ewram_2008000, &gTasks[subTaskId].data[5]);
+ StorePtrInTaskData((u8 *)&eReceivedRecords, &gTasks[subTaskId].data[5]);
}
break;
case 5: // wait 60 frames
@@ -432,7 +436,7 @@ void sub_80B9A88(u8 *a)
}
}
-void sub_80B9B1C(u8 *a, size_t size, u8 index)
+void ReceiveOldManData(u8 *a, size_t size, u8 index)
{
u8 arr[4];
u8 *ptr;
@@ -444,7 +448,7 @@ void sub_80B9B1C(u8 *a, size_t size, u8 index)
sub_80F7F30();
}
-void sub_80B9B70(void *battleTowerRecord, u32 size, u8 index)
+void ReceiveBattleTowerData(void *battleTowerRecord, u32 size, u8 index)
{
sub_80B9A88(gUnknown_0300071C);
memcpy(battleTowerRecord + size * index, battleTowerRecord + size * gUnknown_0300071C[index], sizeof(struct BattleTowerRecord));
@@ -494,7 +498,7 @@ const u8 gUnknown_083D02BA[3][4] =
{0, 3, 2, 1},
};
-void sub_80B9C6C(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
+void ReceiveDaycareMailData(struct RecordMixingDayCareMail *src, size_t recordSize, u8 which, TVShow *shows)
{
{
u16 i, j;
@@ -615,17 +619,17 @@ void sub_80B9C6C(struct RecordMixingDayCareMail *src, size_t recordSize, u8 whic
}
}
-void sub_80B9F3C(u16 *a, u8 b)
+void ReceiveGiftItem(u16 *pItemId, u8 b)
{
- if (b != 0 && *a != 0)
+ if (b != 0 && *pItemId != 0)
{
- if (GetPocketByItemId(*a) == 5)
+ if (GetPocketByItemId(*pItemId) == POCKET_KEY_ITEMS)
{
- if (!CheckBagHasItem(*a, 1) && !CheckPCHasItem(*a, 1) && AddBagItem(*a, 1))
+ if (!CheckBagHasItem(*pItemId, 1) && !CheckPCHasItem(*pItemId, 1) && AddBagItem(*pItemId, 1))
{
- VarSet(VAR_TEMP_1, *a);
+ VarSet(VAR_TEMP_1, *pItemId);
StringCopy(gStringVar1, gLinkPlayers[0].name);
- if (*a == ITEM_EON_TICKET)
+ if (*pItemId == ITEM_EON_TICKET)
FlagSet(FLAG_SYS_HAS_EON_TICKET);
}
else
@@ -635,9 +639,9 @@ void sub_80B9F3C(u16 *a, u8 b)
}
else
{
- if (AddBagItem(*a, 1) == TRUE)
+ if (AddBagItem(*pItemId, 1) == TRUE)
{
- VarSet(VAR_TEMP_1, *a);
+ VarSet(VAR_TEMP_1, *pItemId);
StringCopy(gStringVar1, gLinkPlayers[0].name);
}
else
@@ -677,7 +681,7 @@ void sub_80BA00C(u8 taskId)
task->data[1]++;
if (task->data[1] > 10)
{
- sub_800832C();
+ SetCloseLinkCallback();
task->data[0]++;
}
break;
diff --git a/src/region_map.c b/src/region_map.c
index 8c4e694bc..8bcd00835 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -495,8 +495,8 @@ void RegionMapDefaultZoomOffsetPlayerSprite(s16 a, s16 b)
UpdateRegionMapVideoRegs();
if (gRegionMap->playerIconSprite != NULL)
{
- gRegionMap->playerIconSprite->pos2.x = -a;
- gRegionMap->playerIconSprite->pos2.y = -b;
+ gRegionMap->playerIconSprite->x2 = -a;
+ gRegionMap->playerIconSprite->y2 = -b;
}
}
@@ -868,8 +868,8 @@ static void SpriteCB_Cursor(struct Sprite *sprite)
{
if (gRegionMap->unk7A != 0)
{
- sprite->pos1.x += gRegionMap->cursorDeltaX * 2;
- sprite->pos1.y += gRegionMap->cursorDeltaY * 2;
+ sprite->x += gRegionMap->cursorDeltaX * 2;
+ sprite->y += gRegionMap->cursorDeltaY * 2;
gRegionMap->unk7A--;
}
}
@@ -924,15 +924,15 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
if (gRegionMap->zoomed == TRUE)
{
gRegionMap->cursorSprite->oam.size = 2;
- gRegionMap->cursorSprite->pos1.x -= 8;
- gRegionMap->cursorSprite->pos1.y -= 8;
+ gRegionMap->cursorSprite->x -= 8;
+ gRegionMap->cursorSprite->y -= 8;
StartSpriteAnim(gRegionMap->cursorSprite, 1);
}
else
{
gRegionMap->cursorSprite->oam.size = 1;
- gRegionMap->cursorSprite->pos1.x = gRegionMap->cursorPosX * 8 + 4;
- gRegionMap->cursorSprite->pos1.y = gRegionMap->cursorPosY * 8 + 4;
+ gRegionMap->cursorSprite->x = gRegionMap->cursorPosX * 8 + 4;
+ gRegionMap->cursorSprite->y = gRegionMap->cursorPosY * 8 + 4;
}
gRegionMap->cursorSprite->data[1] = 2;
gRegionMap->cursorSprite->data[2] = IndexOfSpritePaletteTag(paletteTag) * 16 + 0x0101;
@@ -1024,14 +1024,14 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
gRegionMap->playerIconSprite = &gSprites[spriteId];
if (gRegionMap->zoomed == FALSE)
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4;
+ gRegionMap->playerIconSprite->x = gRegionMap->unk74 * 8 + 4;
+ gRegionMap->playerIconSprite->y = gRegionMap->unk76 * 8 + 4;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut;
}
else
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66;
+ gRegionMap->playerIconSprite->x = gRegionMap->unk74 * 16 - 48;
+ gRegionMap->playerIconSprite->y = gRegionMap->unk76 * 16 - 66;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn;
}
}
@@ -1051,17 +1051,17 @@ static void sub_80FBE24(void)
{
if (gRegionMap->zoomed == TRUE)
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66;
+ gRegionMap->playerIconSprite->x = gRegionMap->unk74 * 16 - 48;
+ gRegionMap->playerIconSprite->y = gRegionMap->unk76 * 16 - 66;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn;
gRegionMap->playerIconSprite->invisible = FALSE;
}
else
{
- gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4;
- gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4;
- gRegionMap->playerIconSprite->pos2.x = 0;
- gRegionMap->playerIconSprite->pos2.y = 0;
+ gRegionMap->playerIconSprite->x = gRegionMap->unk74 * 8 + 4;
+ gRegionMap->playerIconSprite->y = gRegionMap->unk76 * 8 + 4;
+ gRegionMap->playerIconSprite->x2 = 0;
+ gRegionMap->playerIconSprite->y2 = 0;
gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut;
gRegionMap->playerIconSprite->invisible = FALSE;
}
@@ -1070,10 +1070,10 @@ static void sub_80FBE24(void)
static void SpriteCB_PlayerIconZoomedIn(struct Sprite *sprite)
{
- sprite->pos2.x = -(gRegionMap->scrollX * 2);
- sprite->pos2.y = -(gRegionMap->scrollY * 2);
- sprite->data[0] = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
- sprite->data[1] = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ sprite->x2 = -(gRegionMap->scrollX * 2);
+ sprite->y2 = -(gRegionMap->scrollY * 2);
+ sprite->data[0] = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
+ sprite->data[1] = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
// Determine if sprite is on screen
if (sprite->data[0] < -8 || sprite->data[0] > 0xA8 || sprite->data[1] < -8 || sprite->data[1] > 0xF8)
@@ -1156,14 +1156,6 @@ static void GetRegionMapLocationPosition(u16 mapSectionId, u16 *x, u16 *y, u16 *
*height = gRegionMapEntries[mapSectionId].height;
}
-struct UnknownStruct3
-{
- void (*unk0)(void);
- u16 unk4;
- u16 unk6;
- struct RegionMap regionMap;
-};
-
static const u16 sFlyRegionMapFrame_Pal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal");
static const u8 sFlyRegionMapFrame_ImageLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz");
static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz");
@@ -1243,7 +1235,7 @@ static const struct MultiPartMapSection sMultiPartMapSections[1] =
{sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY},
};
-static struct UnknownStruct3 *const sFlyDataPtr = (struct UnknownStruct3 *)gSharedMem;
+struct RegionMapState *const gRegionMapState = &eRegionMapState;
static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2};
@@ -1364,11 +1356,11 @@ void CB2_InitFlyRegionMap(void)
Menu_EraseScreen();
break;
case 3:
- InitRegionMap(&sFlyDataPtr->regionMap, 0);
+ InitRegionMap(&gRegionMapState->regionMap, 0);
CreateRegionMapCursor(0, 0);
CreateRegionMapPlayerIcon(1, 1);
- sFlyDataPtr->unk6 = sFlyDataPtr->regionMap.mapSectionId;
- StringFill(ewramBlankMapName, CHAR_SPACE, 12);
+ gRegionMapState->mapSectionId = gRegionMapState->regionMap.mapSectionId;
+ StringFill(gRegionMapState->blankMapName, CHAR_SPACE, 12);
PrintFlyTargetName();
break;
case 4:
@@ -1410,33 +1402,33 @@ static void VBlankCB_FlyRegionMap(void)
void CB2_FlyRegionMap(void)
{
- sFlyDataPtr->unk0();
+ gRegionMapState->callback();
AnimateSprites();
BuildOamBuffer();
}
void sub_80FC244(void (*func)(void))
{
- sFlyDataPtr->unk0 = func;
- sFlyDataPtr->unk4 = 0;
+ gRegionMapState->callback = func;
+ gRegionMapState->state = 0;
}
static void PrintFlyTargetName(void)
{
- if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4)
+ if (gRegionMapState->regionMap.unk16 == 2 || gRegionMapState->regionMap.unk16 == 4)
{
bool8 drawFrameDisabled = FALSE;
u16 i;
for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++)
{
- if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
+ if (gRegionMapState->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
{
if (FlagGet(sMultiPartMapSections[i].requiredFlag))
{
Menu_DrawStdWindowFrame(16, 14, 29, 19);
- Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15);
- MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 29, 17);
+ Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 15);
+ MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[gRegionMapState->regionMap.everGrandeCityArea], 29, 17);
drawFrameDisabled = TRUE;
}
break;
@@ -1446,14 +1438,14 @@ static void PrintFlyTargetName(void)
if (!drawFrameDisabled)
{
Menu_DrawStdWindowFrame(16, 16, 29, 19);
- Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17);
+ Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 17);
Menu_EraseWindowRect(16, 14, 29, 15);
}
}
else
{
Menu_DrawStdWindowFrame(16, 16, 29, 19);
- Menu_PrintText(ewramBlankMapName, 17, 17);
+ Menu_PrintText(gRegionMapState->blankMapName, 17, 17);
Menu_EraseWindowRect(16, 14, 29, 15);
}
}
@@ -1462,8 +1454,8 @@ static void CreateFlyTargetGraphics(void)
{
struct SpriteSheet spriteSheet;
- LZ77UnCompWram(sFlyTargetIcons_ImageLZ, ewram888);
- spriteSheet.data = ewram888;
+ LZ77UnCompWram(sFlyTargetIcons_ImageLZ, gRegionMapState->unk_888);
+ spriteSheet.data = (u8 *)gRegionMapState->unk_888;
spriteSheet.size = 0x1C0;
spriteSheet.tag = 2;
LoadSpriteSheet(&spriteSheet);
@@ -1547,7 +1539,7 @@ static void CreateSpecialAreaFlyTargetIcons(void)
static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
{
// Blink if our mapSectionId is the one selected on the map
- if (sFlyDataPtr->regionMap.mapSectionId == sprite->data[0])
+ if (gRegionMapState->regionMap.mapSectionId == sprite->data[0])
{
// Toggle visibility every 16 frames
sprite->data[1]++;
@@ -1566,11 +1558,11 @@ static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
static void sub_80FC5B4(void)
{
- switch (sFlyDataPtr->unk4)
+ switch (gRegionMapState->state)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
break;
case 1:
if (UpdatePaletteFade() != 0)
@@ -1582,7 +1574,7 @@ static void sub_80FC5B4(void)
static void sub_80FC600(void)
{
- if (sFlyDataPtr->unk4 == 0)
+ if (gRegionMapState->state == 0)
{
switch (sub_80FAB60())
{
@@ -1594,16 +1586,16 @@ static void sub_80FC600(void)
PrintFlyTargetName();
break;
case INPUT_EVENT_A_BUTTON:
- if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4)
+ if (gRegionMapState->regionMap.unk16 == 2 || gRegionMapState->regionMap.unk16 == 4)
{
m4aSongNumStart(SE_SELECT);
- ewramA6E = 1;
+ gRegionMapState->choseFlyLocation = 1;
sub_80FC244(sub_80FC69C);
}
break;
case INPUT_EVENT_B_BUTTON:
m4aSongNumStart(SE_SELECT);
- ewramA6E = 0;
+ gRegionMapState->choseFlyLocation = 0;
sub_80FC244(sub_80FC69C);
break;
}
@@ -1612,19 +1604,19 @@ static void sub_80FC600(void)
void sub_80FC69C(void)
{
- switch (sFlyDataPtr->unk4)
+ switch (gRegionMapState->state)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
break;
case 1:
if (UpdatePaletteFade() != 0)
break;
FreeRegionMapIconResources();
- if (ewramA6E != 0)
+ if (gRegionMapState->choseFlyLocation != 0)
{
- switch (sFlyDataPtr->regionMap.mapSectionId)
+ switch (gRegionMapState->regionMap.mapSectionId)
{
case MAPSEC_SOUTHERN_ISLAND:
sub_8053538(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR);
@@ -1636,13 +1628,13 @@ void sub_80FC69C(void)
sub_8053538((gSaveBlock2.playerGender == MALE) ? HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE : HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE);
break;
case MAPSEC_EVER_GRANDE_CITY:
- sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE : HEAL_LOCATION_EVER_GRANDE_CITY);
+ sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && gRegionMapState->regionMap.everGrandeCityArea == 0) ? HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE : HEAL_LOCATION_EVER_GRANDE_CITY);
break;
default:
- if (sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2] != 0)
- sub_8053538(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2]);
+ if (sMapHealLocations[gRegionMapState->regionMap.mapSectionId][2] != 0)
+ sub_8053538(sMapHealLocations[gRegionMapState->regionMap.mapSectionId][2]);
else
- warp1_set_2(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][0], sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][1], -1);
+ warp1_set_2(sMapHealLocations[gRegionMapState->regionMap.mapSectionId][0], sMapHealLocations[gRegionMapState->regionMap.mapSectionId][1], -1);
break;
}
sub_80865BC();
@@ -1665,17 +1657,17 @@ void debug_sub_8110CCC(void)
for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++)
{
- if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
+ if (gRegionMapState->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
{
if (FlagGet(sMultiPartMapSections[i].requiredFlag))
{
- indent = 12 - StringLength(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea]);
+ indent = 12 - StringLength(sMultiPartMapSections[i].partNames[gRegionMapState->regionMap.everGrandeCityArea]);
if (indent < 0)
indent = 0;
r7 = TRUE;
Menu_DrawStdWindowFrame(16, 14, 29, 19);
- Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15);
- Menu_PrintText(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 17 + indent, 17);
+ Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 15);
+ Menu_PrintText(sMultiPartMapSections[i].partNames[gRegionMapState->regionMap.everGrandeCityArea], 17 + indent, 17);
}
break;
}
@@ -1683,22 +1675,22 @@ void debug_sub_8110CCC(void)
if (!r7)
{
Menu_DrawStdWindowFrame(16, 16, 29, 19);
- Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17);
+ Menu_PrintText(gRegionMapState->regionMap.mapSectionName, 17, 17);
Menu_EraseWindowRect(16, 14, 29, 15);
}
}
void debug_sub_8110D84(void)
{
- switch (sFlyDataPtr->unk4)
+ switch (gRegionMapState->state)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
break;
case 1:
if (!UpdatePaletteFade())
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
break;
case 2:
switch (sub_80FAB60())
@@ -1709,7 +1701,7 @@ void debug_sub_8110D84(void)
debug_sub_8110CCC();
break;
case 4:
- if (sFlyDataPtr->regionMap.unk16 != 0)
+ if (gRegionMapState->regionMap.unk16 != 0)
{
m4aSongNumStart(SE_SELECT);
gSharedMem[0xA6E] = 1; // TODO: what is this?
@@ -1719,7 +1711,7 @@ void debug_sub_8110D84(void)
case 5:
m4aSongNumStart(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
break;
}
break;
@@ -1736,14 +1728,14 @@ void debug_sub_8110D84(void)
{
sub_80FBCA0();
sub_80FAEC4();
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
}
break;
case 5:
if (sub_80FAFC0() == 0)
{
CreateRegionMapCursor(0, 0);
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
}
break;
case 6:
@@ -1755,14 +1747,14 @@ void debug_sub_8110D84(void)
{
sub_80FBCA0();
sub_80FAEC4();
- sFlyDataPtr->unk4++;
+ gRegionMapState->state++;
}
break;
case 7:
if (sub_80FAFC0() == 0)
{
CreateRegionMapCursor(0, 0);
- sFlyDataPtr->unk4 = 3;
+ gRegionMapState->state = 3;
}
break;
}
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
index 71f3fa0c8..ee207582b 100644
--- a/src/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -160,36 +160,36 @@ void SpriteCB_ResetRtcCusor0(struct Sprite *sprite)
sprite->invisible = FALSE;
sprite->animNum = 1;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 53;
- sprite->pos1.y = 68;
+ sprite->x = 53;
+ sprite->y = 68;
break;
case 2:
sprite->invisible = FALSE;
sprite->animNum = 1;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 86;
- sprite->pos1.y = 68;
+ sprite->x = 86;
+ sprite->y = 68;
break;
case 3:
sprite->invisible = FALSE;
sprite->animNum = 1;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 107;
- sprite->pos1.y = 68;
+ sprite->x = 107;
+ sprite->y = 68;
break;
case 4:
sprite->invisible = FALSE;
sprite->animNum = 1;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 128;
- sprite->pos1.y = 68;
+ sprite->x = 128;
+ sprite->y = 68;
break;
case 5:
sprite->invisible = FALSE;
sprite->animNum = 2;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 155;
- sprite->pos1.y = 80;
+ sprite->x = 155;
+ sprite->y = 80;
break;
case 6:
DestroySprite(sprite);
@@ -210,29 +210,29 @@ void SpriteCB_ResetRtcCusor1(struct Sprite *sprite)
sprite->invisible = FALSE;
sprite->animNum = 0;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 53;
- sprite->pos1.y = 92;
+ sprite->x = 53;
+ sprite->y = 92;
break;
case 2:
sprite->invisible = FALSE;
sprite->animNum = 0;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 86;
- sprite->pos1.y = 92;
+ sprite->x = 86;
+ sprite->y = 92;
break;
case 3:
sprite->invisible = FALSE;
sprite->animNum = 0;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 107;
- sprite->pos1.y = 92;
+ sprite->x = 107;
+ sprite->y = 92;
break;
case 4:
sprite->invisible = FALSE;
sprite->animNum = 0;
sprite->animDelayCounter = 0;
- sprite->pos1.x = 128;
- sprite->pos1.y = 92;
+ sprite->x = 128;
+ sprite->y = 92;
break;
case 5:
sprite->invisible = TRUE;
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index ad18b3594..8254921a4 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -9,8 +9,8 @@
#include "data2.h"
#include "ewram.h"
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern struct Window gUnknown_03004210;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
+extern struct Window gWindowTemplate_Contest_MoveDescription;
extern u8 gReservedSpritePaletteCount;
extern u8 gActionSelectionCursor[4];
extern u8 gBankInMenu;
@@ -72,7 +72,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
ScanlineEffect_Clear();
Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
ResetPaletteFade();
- Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ Text_InitWindowWithTemplate(&gWindowTemplate_Contest_MoveDescription, &gWindowTemplate_81E6C58);
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gBattle_BG1_X = 0;
@@ -201,7 +201,7 @@ static bool8 LoadAppropiateBankSprite(u8 bank)
{
if (GetBattlerSide(bank))
{
- if (!ewram17800[bank].substituteSprite)
+ if (!gBattleSpriteInfo[bank].substituteSprite)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlerPartyIndexes[bank]], bank);
else
BattleLoadSubstituteSprite(bank, 0);
@@ -210,7 +210,7 @@ static bool8 LoadAppropiateBankSprite(u8 bank)
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0);
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
LoadPlayerTrainerBankSprite(2, 0);
- else if (!ewram17800[bank].substituteSprite)
+ else if (!gBattleSpriteInfo[bank].substituteSprite)
BattleLoadPlayerMonSprite(&gPlayerParty[gBattlerPartyIndexes[bank]], bank);
else
BattleLoadSubstituteSprite(bank, 0);
@@ -226,7 +226,7 @@ static void sub_807B184(u8 bank)
{
u8 posY;
- if (ewram17800[bank].substituteSprite)
+ if (gBattleSpriteInfo[bank].substituteSprite)
posY = sub_8077F7C(bank);
else
posY = sub_8077F68(bank);
@@ -235,7 +235,7 @@ static void sub_807B184(u8 bank)
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
return;
GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES), GetBattlerPosition(bank));
- gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
+ gBattlerSpriteIds[bank] = CreateSprite(&gCreatingSpriteTemplate, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
@@ -245,7 +245,7 @@ static void sub_807B184(u8 bank)
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
{
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBattlerPosition(0));
- gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ gBattlerSpriteIds[bank] = CreateSprite(&gCreatingSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
GetBattlerSubpriority(0));
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
@@ -255,7 +255,7 @@ static void sub_807B184(u8 bank)
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
{
GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(0));
- gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ gBattlerSpriteIds[bank] = CreateSprite(&gCreatingSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[2].coords) * 4 + 80,
GetBattlerSubpriority(0));
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
@@ -267,14 +267,14 @@ static void sub_807B184(u8 bank)
if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_HP) == 0)
return;
GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES), GetBattlerPosition(bank));
- gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
+ gBattlerSpriteIds[bank] = CreateSprite(&gCreatingSpriteTemplate, GetBattlerSpriteCoord(bank, 2), posY, GetBattlerSubpriority(bank));
gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
gSprites[gBattlerSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
}
- gSprites[gBattlerSpriteIds[bank]].invisible = ewram17800[bank].invisible;
+ gSprites[gBattlerSpriteIds[bank]].invisible = gBattleSpriteInfo[bank].invisible;
}
}
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 036209fbf..09589184e 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -151,7 +151,7 @@ u8 GetBattlerSpriteCoord(u8 slot, u8 a2)
{
u8 var;
u16 species;
- struct TransformStatus *transform;
+ struct BattleSpriteInfo *transform;
if (IsContest())
{
@@ -172,34 +172,34 @@ u8 GetBattlerSpriteCoord(u8 slot, u8 a2)
default:
if (IsContest())
{
- if (shared19348.unk4_0)
- species = shared19348.unk2;
+ if (gContestResources__moveAnim.hasTargetAnim)
+ species = gContestResources__moveAnim.targetSpecies;
else
- species = shared19348.unk0;
+ species = gContestResources__moveAnim.species;
}
else
{
if (GetBattlerSide(slot))
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES);
else
- species = transform->species;
+ species = transform->transformedSpecies;
}
else
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES);
else
- species = transform->species;
+ species = transform->transformedSpecies;
}
}
if (a2 == 3)
- var = sub_8077E44(slot, species, 1);
+ var = GetBattlerSpriteFinal_Y(slot, species, 1);
else
- var = sub_8077E44(slot, species, 0);
+ var = GetBattlerSpriteFinal_Y(slot, species, 0);
break;
}
return var;
@@ -209,7 +209,7 @@ u8 sub_8077BFC(u8 slot, u16 species)
{
u16 letter;
u32 personality;
- struct TransformStatus *transform;
+ struct BattleSpriteInfo *transform;
u8 ret;
u16 var;
@@ -219,15 +219,15 @@ u8 sub_8077BFC(u8 slot, u16 species)
{
if (IsContest())
{
- if (shared19348.unk4_0)
- personality = shared19348.unk10;
+ if (gContestResources__moveAnim.hasTargetAnim)
+ personality = gContestResources__moveAnim.targetPersonality;
else
- personality = shared19348.unk8;
+ personality = gContestResources__moveAnim.personality;
}
else
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
personality = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY);
else
personality = gTransformPersonalities[slot];
@@ -256,8 +256,8 @@ u8 sub_8077BFC(u8 slot, u16 species)
{
if (species == SPECIES_UNOWN)
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
personality = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY);
else
personality = gTransformPersonalities[slot];
@@ -302,7 +302,7 @@ u8 sub_8077DD8(u8 slot, u16 species)
return ret;
}
-u8 sub_8077E44(u8 slot, u16 species, u8 a3)
+u8 GetBattlerSpriteFinal_Y(u8 slot, u16 species, u8 a3)
{
u16 offset;
u8 y;
@@ -330,28 +330,28 @@ u8 sub_8077E44(u8 slot, u16 species, u8 a3)
u8 sub_8077EE4(u8 slot, u8 a2)
{
u16 species;
- struct TransformStatus *transform;
+ struct BattleSpriteInfo *transform;
if (a2 == 3 || a2 == 4)
{
if (IsContest())
{
- if (shared19348.unk4_0)
- species = shared19348.unk2;
+ if (gContestResources__moveAnim.hasTargetAnim)
+ species = gContestResources__moveAnim.targetSpecies;
else
- species = shared19348.unk0;
+ species = gContestResources__moveAnim.species;
}
else
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
species = gAnimSpeciesByBanks[slot];
else
- species = transform->species;
+ species = transform->transformedSpecies;
}
if (a2 == 3)
- return sub_8077E44(slot, species, 1);
+ return GetBattlerSpriteFinal_Y(slot, species, 1);
else
- return sub_8077E44(slot, species, 0);
+ return GetBattlerSpriteFinal_Y(slot, species, 0);
}
else
{
@@ -378,27 +378,27 @@ u8 sub_8077FC0(u8 slot)
{
u16 var;
u8 r6;
- struct TransformStatus *transform;
+ struct BattleSpriteInfo *transform;
r6 = GetBattlerSpriteCoord(slot, 1);
if (!IsContest())
{
if (GetBattlerSide(slot) != 0)
{
- transform = &eTransformStatuses[slot];
- if (!transform->species) {
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies) {
var = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES);
} else {
- var = transform->species;
+ var = transform->transformedSpecies;
}
}
else
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
var = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES);
else
- var = transform->species;
+ var = transform->transformedSpecies;
}
if (GetBattlerSide(slot) != 0)
r6 -= sub_8077DD8(slot, var);
@@ -466,8 +466,8 @@ void sub_8078114(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[1]);
sprite->data[0] += sprite->data[2];
if (sprite->data[0] >= 0x100)
sprite->data[0] -= 0x100;
@@ -485,8 +485,8 @@ void sub_8078174(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]);
sprite->data[0] += sprite->data[2];
sprite->data[5] += sprite->data[4];
if (sprite->data[0] >= 0x100)
@@ -505,8 +505,8 @@ void unref_sub_80781F0(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[4], sprite->data[1]);
sprite->data[0] += sprite->data[2];
sprite->data[4] += sprite->data[5];
if (sprite->data[0] >= 0x100)
@@ -529,8 +529,8 @@ void sub_8078278(struct Sprite *sprite)
{
if (sprite->data[3])
{
- sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
- sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]);
+ sprite->x2 = Sin(sprite->data[0], sprite->data[1]);
+ sprite->y2 = Cos(sprite->data[0], sprite->data[4]);
sprite->data[0] += sprite->data[2];
if (sprite->data[0] >= 0x100)
sprite->data[0] -= 0x100;
@@ -581,8 +581,8 @@ void TranslateSpriteOverDuration(struct Sprite *sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- sprite->pos2.x += sprite->data[1];
- sprite->pos2.y += sprite->data[2];
+ sprite->x2 += sprite->data[1];
+ sprite->y2 += sprite->data[2];
}
else
{
@@ -597,8 +597,8 @@ void sub_8078394(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
}
else
{
@@ -613,8 +613,8 @@ void sub_80783D0(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite->pos2.x = sprite->data[3] >> 8;
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->x2 = sprite->data[3] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
}
else
{
@@ -625,8 +625,8 @@ void sub_80783D0(struct Sprite *sprite)
void unref_sub_8078414(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
- sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
+ sprite->data[1] = sprite->x + sprite->x2;
+ sprite->data[3] = sprite->y + sprite->y2;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
sprite->callback = sub_80782F8;
@@ -637,8 +637,8 @@ void TranslateMonBGUntil(struct Sprite *sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- gSprites[sprite->data[3]].pos2.x += sprite->data[1];
- gSprites[sprite->data[3]].pos2.y += sprite->data[2];
+ gSprites[sprite->data[3]].x2 += sprite->data[1];
+ gSprites[sprite->data[3]].y2 += sprite->data[2];
}
else
{
@@ -655,8 +655,8 @@ void TranslateMonBGSubPixelUntil(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8;
- gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8;
+ gSprites[sprite->data[5]].x2 = sprite->data[3] >> 8;
+ gSprites[sprite->data[5]].y2 = sprite->data[4] >> 8;
}
else
{
@@ -669,9 +669,9 @@ void sub_8078504(struct Sprite *sprite)
if (sprite->data[0] > 0)
{
sprite->data[0]--;
- sprite->pos2.x = sprite->data[2] >> 8;
+ sprite->x2 = sprite->data[2] >> 8;
sprite->data[2] += sprite->data[1];
- sprite->pos2.y = sprite->data[4] >> 8;
+ sprite->y2 = sprite->data[4] >> 8;
sprite->data[4] += sprite->data[3];
if (sprite->data[0] % sprite->data[5] == 0)
{
@@ -693,8 +693,8 @@ void DestroySpriteAndMatrix(struct Sprite *sprite)
void unref_sub_8078588(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x + sprite->pos2.x;
- sprite->data[3] = sprite->pos1.y + sprite->pos2.y;
+ sprite->data[1] = sprite->x + sprite->x2;
+ sprite->data[3] = sprite->y + sprite->y2;
sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
sprite->callback = sub_80782F8;
@@ -734,8 +734,8 @@ void sub_8078634(u8 task)
void sub_8078650(struct Sprite *sprite)
{
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
}
void sub_807867C(struct Sprite *sprite, s16 a2)
@@ -745,25 +745,25 @@ void sub_807867C(struct Sprite *sprite, s16 a2)
if (v1 > v2)
{
- sprite->pos1.x -= a2;
+ sprite->x -= a2;
}
else if (v1 < v2)
{
- sprite->pos1.x += a2;
+ sprite->x += a2;
}
else
{
if (GetBattlerSide(gBattleAnimAttacker) != 0)
- sprite->pos1.x -= a2;
+ sprite->x -= a2;
else
- sprite->pos1.x += a2;
+ sprite->x += a2;
}
}
void InitAnimArcTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimLinearTranslation(sprite);
sprite->data[6] = 0x8000 / sprite->data[0];
sprite->data[7] = 0;
@@ -774,43 +774,43 @@ bool8 TranslateAnimArc(struct Sprite *sprite)
if (TranslateAnimLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
- sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
+ sprite->y2 += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
return FALSE;
}
void oamt_add_pos2_onto_pos1(struct Sprite *sprite)
{
- sprite->pos1.x += sprite->pos2.x;
- sprite->pos1.y += sprite->pos2.y;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x += sprite->x2;
+ sprite->y += sprite->y2;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
}
void sub_8078764(struct Sprite *sprite, bool8 a2)
{
if (!a2)
{
- sprite->pos1.x = sub_8077EE4(gBattleAnimTarget, 0);
- sprite->pos1.y = sub_8077EE4(gBattleAnimTarget, 1);
+ sprite->x = sub_8077EE4(gBattleAnimTarget, 0);
+ sprite->y = sub_8077EE4(gBattleAnimTarget, 1);
}
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
void InitAnimSpritePos(struct Sprite *sprite, u8 a2)
{
if (!a2)
{
- sprite->pos1.x = sub_8077EE4(gBattleAnimAttacker, 0);
- sprite->pos1.y = sub_8077EE4(gBattleAnimAttacker, 1);
+ sprite->x = sub_8077EE4(gBattleAnimAttacker, 0);
+ sprite->y = sub_8077EE4(gBattleAnimAttacker, 1);
}
else
{
- sprite->pos1.x = sub_8077EE4(gBattleAnimAttacker, 2);
- sprite->pos1.y = sub_8077EE4(gBattleAnimAttacker, 3);
+ sprite->x = sub_8077EE4(gBattleAnimAttacker, 2);
+ sprite->y = sub_8077EE4(gBattleAnimAttacker, 3);
}
sub_807867C(sprite, gBattleAnimArgs[0]);
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
}
u8 GetBattlerSide(u8 slot)
@@ -934,8 +934,8 @@ void sub_80789D4(bool8 a1)
void sub_8078A34(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitSpriteDataForLinearTranslation(sprite);
sprite->callback = sub_80783D0;
sprite->callback(sprite);
@@ -981,8 +981,8 @@ void InitAnimLinearTranslation(struct Sprite *sprite)
void StartAnimLinearTranslation(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
InitAnimLinearTranslation(sprite);
sprite->callback = TranslateAnimLinearUntil;
sprite->callback(sprite);
@@ -1003,14 +1003,14 @@ bool8 TranslateAnimLinear(struct Sprite *sprite)
y += v2;
if (v1 & 1)
- sprite->pos2.x = -(x >> 8);
+ sprite->x2 = -(x >> 8);
else
- sprite->pos2.x = x >> 8;
+ sprite->x2 = x >> 8;
if (v2 & 1)
- sprite->pos2.y = -(y >> 8);
+ sprite->y2 = -(y >> 8);
else
- sprite->pos2.y = y >> 8;
+ sprite->y2 = y >> 8;
sprite->data[3] = x;
sprite->data[4] = y;
@@ -1033,8 +1033,8 @@ void sub_8078BD4(struct Sprite *sprite)
void sub_8078C00(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
sub_8078BD4(sprite);
sprite->callback = TranslateAnimLinearUntil;
sprite->callback(sprite);
@@ -1070,8 +1070,8 @@ void sub_8078C28(struct Sprite *sprite)
void sub_8078CC0(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
sub_8078C28(sprite);
sprite->callback = sub_8078D44;
sprite->callback(sprite);
@@ -1092,14 +1092,14 @@ bool8 sub_8078CE8(struct Sprite *sprite)
y += v2;
if (v1 & 1)
- sprite->pos2.x = -(x >> 4);
+ sprite->x2 = -(x >> 4);
else
- sprite->pos2.x = x >> 4;
+ sprite->x2 = x >> 4;
if (v2 & 1)
- sprite->pos2.y = -(y >> 4);
+ sprite->y2 = -(y >> 4);
else
- sprite->pos2.y = y >> 4;
+ sprite->y2 = y >> 4;
sprite->data[3] = x;
sprite->data[4] = y;
@@ -1122,8 +1122,8 @@ void sub_8078D60(struct Sprite *sprite)
void sub_8078D8C(struct Sprite *sprite)
{
- sprite->data[1] = sprite->pos1.x;
- sprite->data[3] = sprite->pos1.y;
+ sprite->data[1] = sprite->x;
+ sprite->data[3] = sprite->y;
sub_8078D60(sprite);
sprite->callback = sub_8078D44;
sprite->callback(sprite);
@@ -1189,7 +1189,7 @@ void sub_8078F9C(u8 sprite)
if (c < 0)
c = -c;
- gSprites[sprite].pos2.y = c >> 3;
+ gSprites[sprite].y2 = c >> 3;
}
// related to obj_id_set_rotscale
@@ -1713,7 +1713,7 @@ bool8 RunAffineAnimFromTaskData(struct Task *task)
task->data[7]++;
break;
case 0x7fff:
- gSprites[task->data[15]].pos2.y = 0;
+ gSprites[task->data[15]].y2 = 0;
sub_8078F40(task->data[15]);
return FALSE;
}
@@ -1729,7 +1729,7 @@ void sub_8079A64(u8 sprite)
if (var2 > 0x80)
var2 = 0x80;
- gSprites[sprite].pos2.y = (var - var2) / 2;
+ gSprites[sprite].y2 = (var - var2) / 2;
}
void sub_8079AB8(u8 sprite, u8 sprite2)
@@ -1740,12 +1740,12 @@ void sub_8079AB8(u8 sprite, u8 sprite2)
if (var2 > 0x80)
var2 = 0x80;
- gSprites[sprite].pos2.y = (var - var2) / 2;
+ gSprites[sprite].y2 = (var - var2) / 2;
}
u16 sub_8079B10(u8 sprite)
{
- struct TransformStatus *transform;
+ struct BattleSpriteInfo *transform;
u8 slot = gSprites[sprite].data[0];
u16 species;
u16 i;
@@ -1756,27 +1756,27 @@ u16 sub_8079B10(u8 sprite)
{
if (IsContest())
{
- species = shared19348.unk0;
+ species = gContestResources__moveAnim.species;
return gMonBackPicCoords[species].y_offset;
}
else
{
if (!GetBattlerSide(i))
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[i]], MON_DATA_SPECIES);
else
- species = transform->species;
+ species = transform->transformedSpecies;
return gMonBackPicCoords[species].y_offset;
}
else
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[i]], MON_DATA_SPECIES);
else
- species = transform->species;
+ species = transform->transformedSpecies;
return gMonFrontPicCoords[species].y_offset;
}
}
@@ -1830,7 +1830,7 @@ u8 sub_8079C74(struct Task *task)
if (task->data[8])
sub_8079A64(task->data[15]);
else
- gSprites[task->data[15]].pos2.y = 0;
+ gSprites[task->data[15]].y2 = 0;
return task->data[8];
}
@@ -1943,7 +1943,7 @@ u8 sub_8079F44(u16 species, bool8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- EWRAM,
+ (void *)EWRAM,
(void *)EWRAM,
species,
a7,
@@ -1957,7 +1957,7 @@ u8 sub_8079F44(u16 species, bool8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
- EWRAM,
+ (void *)EWRAM,
(void *)EWRAM,
species,
a7,
@@ -1974,7 +1974,7 @@ u8 sub_8079F44(u16 species, bool8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a
if (IsContest())
{
- gSprites[sprite].affineAnims = gSpriteAffineAnimTable_81E7C18;
+ gSprites[sprite].affineAnims = gAffineAnims_BattleSpriteContest;
StartSpriteAffineAnim(&gSprites[sprite], 0);
}
return sprite;
@@ -1993,19 +1993,19 @@ s16 GetBattlerSpriteCoordAttr(u8 slot, u8 a2)
u16 var;
int ret;
const struct MonCoords *coords;
- struct TransformStatus *transform;
+ struct BattleSpriteInfo *transform;
if (IsContest())
{
- if (shared19348.unk4_0)
+ if (gContestResources__moveAnim.hasTargetAnim)
{
- species = shared19348.unk2;
- personality = shared19348.unk10;
+ species = gContestResources__moveAnim.targetSpecies;
+ personality = gContestResources__moveAnim.targetPersonality;
}
else
{
- species = shared19348.unk0;
- personality = shared19348.unk8;
+ species = gContestResources__moveAnim.species;
+ personality = gContestResources__moveAnim.personality;
}
if (species == SPECIES_UNOWN)
{
@@ -2033,15 +2033,15 @@ s16 GetBattlerSpriteCoordAttr(u8 slot, u8 a2)
{
if (!GetBattlerSide(slot))
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
{
species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES);
personality = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY);
}
else
{
- species = transform->species;
+ species = transform->transformedSpecies;
personality = gTransformPersonalities[slot];
}
if (species == SPECIES_UNOWN)
@@ -2064,15 +2064,15 @@ s16 GetBattlerSpriteCoordAttr(u8 slot, u8 a2)
}
else
{
- transform = &eTransformStatuses[slot];
- if (!transform->species)
+ transform = &gBattleSpriteInfo[slot];
+ if (!transform->transformedSpecies)
{
species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES);
personality = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY);
}
else
{
- species = transform->species;
+ species = transform->transformedSpecies;
personality = gTransformPersonalities[slot];
}
if (species == SPECIES_UNOWN)
@@ -2172,15 +2172,15 @@ void sub_807A544(struct Sprite *sprite)
sub_8078650(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
sprite->hFlip = TRUE;
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
@@ -2193,14 +2193,14 @@ void sub_807A5C4(struct Sprite *sprite)
{
if (GetBattlerSide(gBattleAnimAttacker))
{
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
gBattleAnimArgs[3] *= -1;
}
else
{
- sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->x += gBattleAnimArgs[0];
}
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->y += gBattleAnimArgs[1];
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[3] = gBattleAnimArgs[4];
@@ -2216,10 +2216,10 @@ void sub_807A63C(struct Sprite *sprite)
{
sub_8078650(sprite);
if (GetBattlerSide(gBattleAnimAttacker))
- sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->x -= gBattleAnimArgs[0];
else
- sprite->pos1.x += gBattleAnimArgs[0];
- sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->x += gBattleAnimArgs[0];
+ sprite->y += gBattleAnimArgs[1];
sprite->callback = sub_8078600;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -2235,7 +2235,7 @@ void sub_807A69C(u8 taskId)
task->data[1] = (GetBattlerSide(gBattleAnimAttacker)) ? -8 : 8;
task->data[2] = 0;
task->data[3] = 0;
- gSprites[task->data[0]].pos2.x -= task->data[0];
+ gSprites[task->data[0]].x2 -= task->data[0];
task->data[4] = AllocSpritePalette(10097);
task->data[5] = 0;
@@ -2258,7 +2258,7 @@ void sub_807A784(u8 taskId)
{
case 0:
sub_807A850(task, taskId);
- gSprites[task->data[0]].pos2.x += task->data[1];
+ gSprites[task->data[0]].x2 += task->data[1];
if (++task->data[3] == 5)
{
task->data[3]--;
@@ -2267,10 +2267,10 @@ void sub_807A784(u8 taskId)
break;
case 1:
sub_807A850(task, taskId);
- gSprites[task->data[0]].pos2.x -= task->data[1];
+ gSprites[task->data[0]].x2 -= task->data[1];
if (--task->data[3] == 0)
{
- gSprites[task->data[0]].pos2.x = 0;
+ gSprites[task->data[0]].x2 = 0;
task->data[2]++;
}
break;
@@ -2294,7 +2294,7 @@ void sub_807A850(struct Task *task, u8 taskId)
gSprites[sprite].data[0] = 8;
gSprites[sprite].data[1] = taskId;
gSprites[sprite].data[2] = sprite;
- gSprites[sprite].pos2.x = gSprites[task->data[0]].pos2.x;
+ gSprites[sprite].x2 = gSprites[task->data[0]].x2;
gSprites[sprite].callback = sub_807A8D4;
task->data[5]++;
}
@@ -2312,8 +2312,8 @@ void sub_807A8D4(struct Sprite *sprite)
// file_4
void sub_807A908(struct Sprite *sprite) {
- sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
- sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
if (!GetBattlerSide(gBattleAnimAttacker))
sprite->data[0] = 5;
else
@@ -2326,11 +2326,11 @@ void sub_807A960(struct Sprite *sprite)
{
sprite->data[2] += sprite->data[0];
sprite->data[3] += sprite->data[1];
- sprite->pos2.x = sprite->data[2] / 10;
- sprite->pos2.y = sprite->data[3] / 10;
+ sprite->x2 = sprite->data[2] / 10;
+ sprite->y2 = sprite->data[3] / 10;
if (sprite->data[1] < -20)
sprite->data[1]++;
- if (sprite->pos1.y + sprite->pos2.y < -32)
+ if (sprite->y + sprite->y2 < -32)
DestroyAnimSprite(sprite);
}
@@ -2338,19 +2338,19 @@ void sub_807A9BC(struct Sprite *sprite)
{
int x;
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4];
- sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5];
+ sprite->data[2] = sprite->x + gBattleAnimArgs[4];
+ sprite->data[4] = sprite->y + gBattleAnimArgs[5];
if (!GetBattlerSide(gBattleAnimTarget))
{
x = (u16)gBattleAnimArgs[4] + 30;
- sprite->pos1.x += x;
- sprite->pos1.y = gBattleAnimArgs[5] - 20;
+ sprite->x += x;
+ sprite->y = gBattleAnimArgs[5] - 20;
}
else
{
x = (u16)gBattleAnimArgs[4] - 30;
- sprite->pos1.x += x;
- sprite->pos1.y = gBattleAnimArgs[5] - 80;
+ sprite->x += x;
+ sprite->y = gBattleAnimArgs[5] - 80;
}
sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index 16aac66be..cf4b4daf4 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -765,7 +765,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY)
sprite->data[0] = gateId;
sprite->coordOffsetEnabled = 1;
- sub_8060388(x + deltaX, y + deltaY, &sprite->pos1.x, &sprite->pos1.y);
+ sub_8060388(x + deltaX, y + deltaY, &sprite->x, &sprite->y);
RotatingGate_HideGatesOutsideViewport(sprite);
StartSpriteAffineAnim(sprite, RotatingGate_GetGateOrientation(gateId));
@@ -815,8 +815,8 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite)
s16 y2;
sprite->invisible = FALSE;
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
x2 = x + 0x40; // Dimensions of the rotating gate
y2 = y + 0x40;
diff --git a/src/roulette.c b/src/roulette.c
index d261e7e41..34f0fa7b6 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -602,20 +602,20 @@ void sub_81157D0(u8 r0)
case 4:
temp0 = (r0 * 3 + 14);
sub_8124DDC(&gBGTilemapBuffers[2][0], 0, 14, 7, 16, 13);
- sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a32, temp0, 7, 3, 13);
+ sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800 + 0x119, temp0, 7, 3, 13);
break;
case 5:
case 10:
case 15:
temp1 = ((r0 - 1) / 5 * 3 + 10);
sub_8124DDC(&gBGTilemapBuffers[2][0], 0, 14, 7, 16, 13);
- sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a80, 14, temp1, 16, 3);
+ sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800 + 0x140, 14, temp1, 16, 3);
break;
default:
temp0 = ((r0 % 5) * 3 + 14);
temp1 = ((r0 - 1) / 5 * 3 + 7);
sub_8124DDC(&gBGTilemapBuffers[2][0], 0, 14, 7, 16, 13);
- sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a20, temp0, temp1, 3, 3);
+ sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800 + 0x110, temp0, temp1, 3, 3);
break;
}
}
@@ -1502,9 +1502,9 @@ void sub_8117158(u8 r0)
for (z = 0; z < 3; z++)
{
var2 = (gUnknown_083F8C00[v[i]].var04 + z) * 32;
- gBGTilemapBuffers[1][var1 + var2 + 0] = ewram189a0[(var0 + z) * 3 + 0];
- gBGTilemapBuffers[1][var1 + var2 + 1] = ewram189a0[(var0 + z) * 3 + 1];
- gBGTilemapBuffers[1][var1 + var2 + 2] = ewram189a0[(var0 + z) * 3 + 2];
+ gBGTilemapBuffers[1][var1 + var2 + 0] = ewram18800[0xD0 + (var0 + z) * 3 + 0];
+ gBGTilemapBuffers[1][var1 + var2 + 1] = ewram18800[0xD0 + (var0 + z) * 3 + 1];
+ gBGTilemapBuffers[1][var1 + var2 + 2] = ewram18800[0xD0 + (var0 + z) * 3 + 2];
}
}
}
diff --git a/src/roulette_gfx.c b/src/roulette_gfx.c
index b94b18c9c..cf347f1ea 100644
--- a/src/roulette_gfx.c
+++ b/src/roulette_gfx.c
@@ -830,8 +830,8 @@ void sub_8117C60(u8 r0, u8 r1)
else
{
gSprites[eRoulette->var3C[49 + i]].invisible = FALSE;
- gSprites[eRoulette->var3C[49 + i]].pos1.x = (gUnknown_083F8C00[eRoulette->var0C[i]].var03 + 1) * 8 + 4;
- gSprites[eRoulette->var3C[49 + i]].pos1.y = (gUnknown_083F8C00[eRoulette->var0C[i]].var04 + 1) * 8 + 3;
+ gSprites[eRoulette->var3C[49 + i]].x = (gUnknown_083F8C00[eRoulette->var0C[i]].var03 + 1) * 8 + 4;
+ gSprites[eRoulette->var3C[49 + i]].y = (gUnknown_083F8C00[eRoulette->var0C[i]].var04 + 1) * 8 + 3;
}
}
}
@@ -846,8 +846,8 @@ void sub_8117D68(u8 r0)
else
{
gSprites[eRoulette->var3C[48]].invisible = FALSE;
- gSprites[eRoulette->var3C[48]].pos1.x = (gUnknown_083F8C00[r0].var03 + 2) * 8;
- gSprites[eRoulette->var3C[48]].pos1.y = (gUnknown_083F8C00[r0].var04 + 2) * 8;
+ gSprites[eRoulette->var3C[48]].x = (gUnknown_083F8C00[r0].var03 + 2) * 8;
+ gSprites[eRoulette->var3C[48]].y = (gUnknown_083F8C00[r0].var04 + 2) * 8;
}
}
@@ -885,8 +885,8 @@ void sub_8117E98(struct Sprite *sprite)
angle -= 360;
sin = Sin2(angle);
cos = Cos2(angle);
- sprite->pos2.x = sin * sprite->data[1] >> 12;
- sprite->pos2.y = -cos * sprite->data[1] >> 12;
+ sprite->x2 = sin * sprite->data[1] >> 12;
+ sprite->y2 = -cos * sprite->data[1] >> 12;
matrixNum = sprite->oam.matrixNum;
sin /= 16;
gOamMatrices[matrixNum].d = cos /= 16;
@@ -1040,7 +1040,7 @@ void sub_81182F8(u8 r0)
void sub_81184CC(struct Sprite *sprite)
{
- sprite->pos2.x = eRoulette->var26;
+ sprite->x2 = eRoulette->var26;
}
void sub_81184D8(void)
@@ -1156,12 +1156,12 @@ void sub_8118724(struct Sprite *sprite)
sprite->data[4] = eRoulette->var94;
sin = Sin2(sprite->data[3]);
cos = Cos2(sprite->data[3]);
- sprite->pos2.x = sin * sprite->data[4] >> 12;
- sprite->pos2.y = -cos * sprite->data[4] >> 12;
+ sprite->x2 = sin * sprite->data[4] >> 12;
+ sprite->y2 = -cos * sprite->data[4] >> 12;
if (IsSEPlaying())
{
- m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xffff, sprite->pos2.x);
- m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xffff, sprite->pos2.x);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xffff, sprite->x2);
+ m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xffff, sprite->x2);
}
}
@@ -1173,9 +1173,9 @@ void sub_8118834(struct Sprite *sprite)
sprite->data[3] -= 360;
sin = Sin2(sprite->data[3]);
cos = Cos2(sprite->data[3]);
- sprite->pos2.x = sin * sprite->data[4] >> 12;
- sprite->pos2.y = -cos * sprite->data[4] >> 12;
- sprite->pos2.y += gSpriteCoordOffsetY;
+ sprite->x2 = sin * sprite->data[4] >> 12;
+ sprite->y2 = -cos * sprite->data[4] >> 12;
+ sprite->y2 += gSpriteCoordOffsetY;
}
void sub_811889C(struct Sprite *sprite)
@@ -1274,9 +1274,9 @@ void sub_81189A8(struct Sprite *sprite)
void sub_8118B30(struct Sprite *sprite)
{
- sprite->pos2.y = (s32)(((float)sprite->data[2]) * 0.05f * ((float)sprite->data[2])) - 45;
+ sprite->y2 = (s32)(((float)sprite->data[2]) * 0.05f * ((float)sprite->data[2])) - 45;
sprite->data[2]++;
- if (sprite->data[2] > 29 && sprite->pos2.y >= 0)
+ if (sprite->data[2] > 29 && sprite->y2 >= 0)
{
eRoulette->var7D = 255;
eRoulette->var03_7 = FALSE;
@@ -1295,11 +1295,11 @@ void sub_8118BD8(struct Sprite *sprite)
{
if (sprite->data[2]++ < 45)
{
- sprite->pos2.y--;
+ sprite->y2--;
if (sprite->data[2] == 45)
{
if (gSprites[eRoulette->var3C[55]].animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
}
}
else
@@ -1309,9 +1309,9 @@ void sub_8118BD8(struct Sprite *sprite)
if (gSprites[eRoulette->var3C[55]].animDelayCounter == 0)
{
if (gSprites[eRoulette->var3C[55]].animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
else
- sprite->pos2.y--;
+ sprite->y2--;
}
}
else
@@ -1727,8 +1727,8 @@ void sub_8119780(struct Sprite *sprite)
{
if (sprite->data[1]++ >= sprite->data[3])
{
- sprite->pos1.x -= 2;
- if (sprite->pos1.x < -16)
+ sprite->x -= 2;
+ if (sprite->x < -16)
{
if (!eRoulette->var03_6)
eRoulette->var03_6 = TRUE;
@@ -1773,7 +1773,7 @@ void sub_8119898(struct Sprite *sprite)
float t;
sprite->data[1]++;
t = sprite->data[1];
- sprite->pos2.y = t * 0.039f * t;
+ sprite->y2 = t * 0.039f * t;
eRoulette->var34 = gUnknown_083FA61E[(eRoulette->var01 - 1) / 2];
if (eRoulette->var01 < 19)
eRoulette->var01++;
@@ -1849,9 +1849,9 @@ void sub_8119A90(struct Sprite *sprite)
void sub_8119AAC(struct Sprite *sprite)
{
- if (sprite->pos1.y > -16)
+ if (sprite->y > -16)
{
- sprite->pos1.y--;
+ sprite->y--;
}
else
{
@@ -1870,9 +1870,9 @@ void sub_8119B24(struct Sprite *sprite)
if (sprite->data[1] >= 0)
{
sprite->data[1]--;
- sprite->pos1.y--;
+ sprite->y--;
if (sprite->data[1] == 0 && sprite->animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
}
else
{
@@ -1882,9 +1882,9 @@ void sub_8119B24(struct Sprite *sprite)
if (sprite->animDelayCounter == 0)
{
if (sprite->animCmdIndex == 1)
- sprite->pos2.y++;
+ sprite->y2++;
else
- sprite->pos2.y--;
+ sprite->y2--;
}
}
else
@@ -1912,10 +1912,10 @@ void sub_8119BCC(struct Sprite *sprite)
};
if (sprite->data[1]-- > 7)
{
- sprite->pos1.x += t[eRoulette->var38->data[0]] * 2;
+ sprite->x += t[eRoulette->var38->data[0]] * 2;
if (IsSEPlaying())
{
- s8 u = -((116 - sprite->pos1.x) / 2);
+ s8 u = -((116 - sprite->x) / 2);
m4aMPlayPanpotControl(&gMPlayInfo_SE1, 0xffff, u);
m4aMPlayPanpotControl(&gMPlayInfo_SE2, 0xffff, u);
}
@@ -1924,8 +1924,8 @@ void sub_8119BCC(struct Sprite *sprite)
{
if (sprite->data[1] >= 0)
{
- sprite->pos1.x += t[eRoulette->var38->data[0]] * z[7 - sprite->data[1]][0];
- sprite->pos1.y += z[7 - sprite->data[1]][1];
+ sprite->x += t[eRoulette->var38->data[0]] * z[7 - sprite->data[1]][0];
+ sprite->y += z[7 - sprite->data[1]][1];
}
else
{
@@ -1946,7 +1946,7 @@ void sub_8119D08(struct Sprite *sprite)
s8 t[2] = {-1, 1}; //sign
if (sprite->data[1]-- >= 0)
{
- sprite->pos1.x += t[eRoulette->var38->data[0]] * 2;
+ sprite->x += t[eRoulette->var38->data[0]] * 2;
gSprites[sprite->data[6]].invisible ^= 1;
}
else
diff --git a/src/save.c b/src/save.c
index 3b6cabe6a..c03f3349e 100644
--- a/src/save.c
+++ b/src/save.c
@@ -97,11 +97,13 @@ static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced fu
// Divide save blocks into individual chunks to be written to flash sectors
-#define SAVEBLOCK_CHUNK(structure, chunkNum) \
-{ \
- (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \
- min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \
-} \
+#define SAVEBLOCK_CHUNK_EX(structure, size, chunkNum) \
+{ \
+ (u8 *)structure + chunkNum * SECTOR_DATA_SIZE, \
+ min(size - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \
+} \
+
+#define SAVEBLOCK_CHUNK(structure, chunkNum) SAVEBLOCK_CHUNK_EX(&structure, sizeof(structure), chunkNum)
static const struct SaveBlockChunk sSaveBlockChunks[] =
{
@@ -125,8 +127,8 @@ static const struct SaveBlockChunk sSaveBlockChunks[] =
static const struct SaveBlockChunk sHallOfFameChunks[] =
{
- SAVEBLOCK_CHUNK(*eHallOfFame, 0),
- SAVEBLOCK_CHUNK(*eHallOfFame, 1),
+ SAVEBLOCK_CHUNK_EX(gDecompressionBuffer, 2 * SECTOR_DATA_SIZE, 0),
+ SAVEBLOCK_CHUNK_EX(gDecompressionBuffer, 2 * SECTOR_DATA_SIZE, 1),
};
void Save_EraseAllData(void)
diff --git a/src/save_menu_util.c b/src/save_menu_util.c
index ccf4d9f6f..9cb49c3bd 100644
--- a/src/save_menu_util.c
+++ b/src/save_menu_util.c
@@ -7,6 +7,8 @@
#include "string_util.h"
#include "strings2.h"
+EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
+
void HandleDrawSaveWindowInfo(s16 left, s16 top)
{
u32 width = 12;
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 1a2d55f2e..1b6aea42f 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -3,16 +3,18 @@
#include "berry.h"
#include "clock.h"
#include "coins.h"
-#include "contest_link_80C2020.h"
+#include "contest_link_util.h"
#include "contest_painting.h"
+#include "contest_util.h"
#include "data2.h"
#include "decoration.h"
#include "decoration_inventory.h"
#include "event_data.h"
+#include "event_object_lock.h"
+#include "event_object_movement.h"
#include "field_door.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
@@ -22,20 +24,18 @@
#include "fieldmap.h"
#include "item.h"
#include "main.h"
-#include "event_object_lock.h"
#include "menu.h"
#include "money.h"
#include "mystery_event_script.h"
+#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "pokemon.h"
#include "random.h"
-#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "script_menu.h"
#include "script_movement.h"
-#include "script_pokemon_80C4.h"
#include "script_pokemon_80F9.h"
#include "shop.h"
#include "slot_machine.h"
@@ -1411,7 +1411,7 @@ bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx)
u8 v1 = ScriptReadByte(ctx);
if (v1)
- sub_8106630(v1);
+ SetContestWinnerForPainting(v1);
ShowContestWinner();
ScriptContext1_Stop();
return TRUE;
@@ -1831,7 +1831,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx)
bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx)
{
- sub_80C4980(gSpecialVar_ContestCategory);
+ ContestLinkTransfer(gSpecialVar_ContestCategory);
ScriptContext1_Stop();
return TRUE;
}
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index 27cd8992f..f0d51a163 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -71,62 +71,63 @@ void OpenPartyMenuFromScriptContext(u8 taskId)
bool8 SetupContestPartyMenu(void)
{
- switch (EWRAM_1B000.setupState)
+ switch (ePartyMenu2.pmSetupState)
{
case 0:
- if (EWRAM_1B000.monIndex < gPlayerPartyCount)
+ if (ePartyMenu2.pmMonIndex < gPlayerPartyCount)
{
- TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]);
- EWRAM_1B000.monIndex++;
+ TryCreatePartyMenuMonIcon(ePartyMenu2.menuHandlerTaskId,
+ ePartyMenu2.pmMonIndex, &gPlayerParty[ePartyMenu2.pmMonIndex]);
+ ePartyMenu2.pmMonIndex++;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
break;
case 1:
LoadHeldItemIconGraphics();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 2:
- CreateHeldItemIcons_806DC34(EWRAM_1B000.menuHandlerTaskId);
- EWRAM_1B000.setupState++;
+ CreateHeldItemIcons_806DC34(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 3:
- if (sub_806BD58(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex) != 1)
+ if (sub_806BD58(ePartyMenu2.menuHandlerTaskId, ePartyMenu2.pmMonIndex) != 1)
{
- EWRAM_1B000.monIndex++;
+ ePartyMenu2.pmMonIndex++;
break;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
break;
}
case 4:
PartyMenuPrintMonsLevelOrStatus();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 5:
PrintPartyMenuMonNicknames();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 6:
sub_80F9C00();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 7: // the only case that can return true.
- if (DrawPartyMonBackground(EWRAM_1B000.monIndex) != 1)
+ if (DrawPartyMonBackground(ePartyMenu2.pmMonIndex) != 1)
{
- EWRAM_1B000.monIndex++;
+ ePartyMenu2.pmMonIndex++;
break;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState = 0;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState = 0;
return TRUE;
}
}
@@ -178,60 +179,61 @@ void HandleSelectPartyMenu(u8 var)
bool8 SetupMoveTutorPartyMenu(void)
{
- switch (EWRAM_1B000.setupState)
+ switch (ePartyMenu2.pmSetupState)
{
case 0:
- if (EWRAM_1B000.monIndex < gPlayerPartyCount)
+ if (ePartyMenu2.pmMonIndex < gPlayerPartyCount)
{
- TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]);
- EWRAM_1B000.monIndex++;
+ TryCreatePartyMenuMonIcon(ePartyMenu2.menuHandlerTaskId,
+ ePartyMenu2.pmMonIndex, &gPlayerParty[ePartyMenu2.pmMonIndex]);
+ ePartyMenu2.pmMonIndex++;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
break;
case 1:
LoadHeldItemIconGraphics();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 2:
- CreateHeldItemIcons_806DC34(EWRAM_1B000.menuHandlerTaskId);
- EWRAM_1B000.setupState++;
+ CreateHeldItemIcons_806DC34(ePartyMenu2.menuHandlerTaskId);
+ ePartyMenu2.pmSetupState++;
break;
case 3:
- if (sub_806BD58(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex) != 1)
+ if (sub_806BD58(ePartyMenu2.menuHandlerTaskId, ePartyMenu2.pmMonIndex) != 1)
{
- EWRAM_1B000.monIndex++;
+ ePartyMenu2.pmMonIndex++;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState++;
}
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 5:
PrintPartyMenuMonNicknames();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 6:
sub_80F9E1C();
- EWRAM_1B000.setupState++;
+ ePartyMenu2.pmSetupState++;
break;
case 7: // the only case that can return true.
- if (DrawPartyMonBackground(EWRAM_1B000.monIndex) != 1)
+ if (DrawPartyMonBackground(ePartyMenu2.pmMonIndex) != 1)
{
- EWRAM_1B000.monIndex++;
+ ePartyMenu2.pmMonIndex++;
}
else
{
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState = 0;
+ ePartyMenu2.pmMonIndex = 0;
+ ePartyMenu2.pmSetupState = 0;
return TRUE;
}
}
@@ -275,7 +277,7 @@ void HandleMoveTutorPartyMenu(u8 var)
void SelectMove(void)
{
ShowSelectMovePokemonSummaryScreen(&gPlayerParty[0], gSpecialVar_0x8004, gPlayerPartyCount - 1, CB2_ReturnToField, 0);
- UNK_2018000_STRUCT.unk8 = 3;
+ pssData.mode = PSS_MODE_MOVE_DELETER;
gFieldCallback = sub_8080990;
}
@@ -299,7 +301,7 @@ void ScrSpecial_GetPokemonNicknameAndMoveName(void)
StringCopy(gStringVar2, gMoveNames[data]);
}
-void sub_80F9FDC(struct Pokemon *pkmn, u8 moveIndex1, u8 moveIndex2)
+static void SwapMoveSlots(struct Pokemon *pkmn, u8 moveIndex1, u8 moveIndex2)
{
u16 move1 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
u16 move2 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
@@ -329,7 +331,7 @@ void DeleteMonMove(void)
RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
for (i = gSpecialVar_0x8005; i < 3; i++)
- sub_80F9FDC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
+ SwapMoveSlots(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
}
void IsSelectedMonEgg(void)
diff --git a/src/secret_base.c b/src/secret_base.c
index b37da51d1..61af33926 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -147,13 +147,13 @@ void ClearSecretBase(struct SecretBaseRecord *record)
record->playerName[i] = 0xff;
for (i = 0; i < 4; i++)
record->trainerId[i] = 0x00;
- record->sbr_field_e = 0;
- record->sbr_field_10 = 0;
- record->sbr_field_11 = 0;
- record->sbr_field_1_0 = 0;
+ record->numSecretBasesReceived = 0;
+ record->numTimesEntered = 0;
+ record->unused = 0;
+ record->toRegister = 0;
record->gender = 0;
- record->sbr_field_1_5 = 0;
- record->sbr_field_1_6 = 0;
+ record->battledOwnerToday = 0;
+ record->registryStatus = 0;
for (i = 0; i < 16; i++)
{
record->decorations[i] = 0;
@@ -162,12 +162,12 @@ void ClearSecretBase(struct SecretBaseRecord *record)
for (i = 0; i < 6; i++)
{
for (j = 0; j < 4; j++)
- record->partyMoves[i * 4 + j] = 0;
- record->partyPersonality[i] = 0;
- record->partyEVs[i] = 0;
- record->partySpecies[i] = 0;
- record->partyHeldItems[i] = 0;
- record->partyLevels[i] = 0;
+ record->party.moves[i * 4 + j] = 0;
+ record->party.personality[i] = 0;
+ record->party.EVs[i] = 0;
+ record->party.species[i] = 0;
+ record->party.heldItems[i] = 0;
+ record->party.levels[i] = 0;
}
}
@@ -373,8 +373,8 @@ void sub_80BBA48(u8 taskid)
break;
case 2:
curbaseid = VarGet(VAR_CURRENT_SECRET_BASE);
- if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
- gSaveBlock1.secretBases[curbaseid].sbr_field_10++;
+ if (gSaveBlock1.secretBases[curbaseid].numTimesEntered < 0xff)
+ gSaveBlock1.secretBases[curbaseid].numTimesEntered++;
sub_80BBA14();
WarpIntoMap();
gFieldCallback = sub_8080990;
@@ -660,7 +660,7 @@ void BufferSecretBaseOwnerName(void)
bool8 sub_80BC268(u8 i)
{
- if (gSaveBlock1.secretBases[i].sbr_field_1_6)
+ if (gSaveBlock1.secretBases[i].registryStatus)
return TRUE;
else
return FALSE;
@@ -686,24 +686,24 @@ void SetPlayerSecretBaseRecordMixingParty(void)
{
u16 j;
for (j = 0; j < 4; j++)
- record->partyMoves[i * 4 + j] = MOVE_NONE;
+ record->party.moves[i * 4 + j] = MOVE_NONE;
- record->partySpecies[i] = SPECIES_NONE;
- record->partyHeldItems[i] = ITEM_NONE;
- record->partyLevels[i] = 0;
- record->partyPersonality[i] = 0;
- record->partyEVs[i] = 0;
+ record->party.species[i] = SPECIES_NONE;
+ record->party.heldItems[i] = ITEM_NONE;
+ record->party.levels[i] = 0;
+ record->party.personality[i] = 0;
+ record->party.EVs[i] = 0;
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
for (j = 0; j < 4; j++)
- record->partyMoves[secretBasePartyIndex * 4 + j] = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j);
+ record->party.moves[secretBasePartyIndex * 4 + j] = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j);
- record->partySpecies[secretBasePartyIndex] = GetMonData(&(gPlayerParty[i]), MON_DATA_SPECIES);
- record->partyHeldItems[secretBasePartyIndex] = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
- record->partyLevels[secretBasePartyIndex] = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
- record->partyPersonality[secretBasePartyIndex] = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
- record->partyEVs[secretBasePartyIndex] = CalculateMonAverageEVs(&gPlayerParty[i]);
+ record->party.species[secretBasePartyIndex] = GetMonData(&(gPlayerParty[i]), MON_DATA_SPECIES);
+ record->party.heldItems[secretBasePartyIndex] = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ record->party.levels[secretBasePartyIndex] = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ record->party.personality[secretBasePartyIndex] = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ record->party.EVs[secretBasePartyIndex] = CalculateMonAverageEVs(&gPlayerParty[i]);
secretBasePartyIndex++;
}
}
@@ -711,9 +711,9 @@ void SetPlayerSecretBaseRecordMixingParty(void)
void sub_80BC440(void)
{
- u16 backupValue = gSaveBlock1.secretBases[0].sbr_field_e;
+ u16 backupValue = gSaveBlock1.secretBases[0].numSecretBasesReceived;
ResetSecretBase(0);
- gSaveBlock1.secretBases[0].sbr_field_e = backupValue;
+ gSaveBlock1.secretBases[0].numSecretBasesReceived = backupValue;
sub_80BC0F8();
}
@@ -760,9 +760,9 @@ void MoveSecretBase(void)
sub_80BC474();
IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE);
- backupValue = gSaveBlock1.secretBases[0].sbr_field_e;
+ backupValue = gSaveBlock1.secretBases[0].numSecretBasesReceived;
ResetSecretBase(0);
- gSaveBlock1.secretBases[0].sbr_field_e = backupValue;
+ gSaveBlock1.secretBases[0].numSecretBasesReceived = backupValue;
}
u8 sub_80BC538(void)
@@ -790,7 +790,7 @@ void GetCurSecretBaseRegistrationValidity(void)
void ToggleCurSecretBaseRegistry(void)
{
- gSaveBlock1.secretBases[sub_80BC14C(gCurrentSecretBaseId)].sbr_field_1_6 ^= 1;
+ gSaveBlock1.secretBases[sub_80BC14C(gCurrentSecretBaseId)].registryStatus ^= 1;
FlagSet(FLAG_SECRET_BASE_REGISTRY_ENABLED);
}
@@ -1045,7 +1045,7 @@ void sub_80BCB10(u8 taskId)
Menu_EraseWindowRect(0, 0, 29, 19);
- gSaveBlock1.secretBases[taskData[4]].sbr_field_1_6 = 0;
+ gSaveBlock1.secretBases[taskData[4]].registryStatus = 0;
taskData[0]--;
if (taskData[2] > 0)
@@ -1128,12 +1128,12 @@ void unref_sub_80BCD7C(u8 secretBaseIndex)
for (i = 0; i < 1; i++)
{
- gSaveBlock1.secretBases[secretBaseIndex].partyPersonality[i] = i + 1;
- gSaveBlock1.secretBases[secretBaseIndex].partyMoves[i * 4] = i + 1;
- gSaveBlock1.secretBases[secretBaseIndex].partySpecies[i] = SPECIES_TREECKO;
- gSaveBlock1.secretBases[secretBaseIndex].partyHeldItems[i] = i + 1;
- gSaveBlock1.secretBases[secretBaseIndex].partyLevels[i] = i + 5;
- gSaveBlock1.secretBases[secretBaseIndex].partyEVs[i] = i * 5;
+ gSaveBlock1.secretBases[secretBaseIndex].party.personality[i] = i + 1;
+ gSaveBlock1.secretBases[secretBaseIndex].party.moves[i * 4] = i + 1;
+ gSaveBlock1.secretBases[secretBaseIndex].party.species[i] = SPECIES_TREECKO;
+ gSaveBlock1.secretBases[secretBaseIndex].party.heldItems[i] = i + 1;
+ gSaveBlock1.secretBases[secretBaseIndex].party.levels[i] = i + 5;
+ gSaveBlock1.secretBases[secretBaseIndex].party.EVs[i] = i * 5;
}
}
@@ -1147,7 +1147,7 @@ void sub_80BCE1C(void)
void sub_80BCE4C()
{
- gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result;
+ gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].battledOwnerToday = gSpecialVar_Result;
}
void sub_80BCE90()
@@ -1159,13 +1159,13 @@ void sub_80BCE90()
u8 i;
for (i = 0; i < MAX_SECRET_BASES; i++)
- gSaveBlock1.secretBases[i].sbr_field_1_5 = 0;
+ gSaveBlock1.secretBases[i].battledOwnerToday = 0;
FlagSet(FLAG_DAILY_UNKNOWN_8C2);
}
gSpecialVar_0x8004 = GetSecretBaseOwnerType(curBaseIndex);
- gSpecialVar_Result = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5;
+ gSpecialVar_Result = gSaveBlock1.secretBases[curBaseIndex].battledOwnerToday;
}
void sub_80BCF1C(u8 taskId)
@@ -1208,7 +1208,7 @@ void sub_80BCF1C(u8 taskId)
void sub_80BD034(u8 i, struct SecretBaseRecord *secretBase)
{
gSaveBlock1.secretBases[i] = *secretBase;
- gSaveBlock1.secretBases[i].sbr_field_1_6 = 2;
+ gSaveBlock1.secretBases[i].registryStatus = 2;
}
bool8 sub_80BD070(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB)
@@ -1277,7 +1277,7 @@ u8 sub_80BD1B0(void)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
- if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1.secretBases[i].sbr_field_1_0 == 0)
+ if (gSaveBlock1.secretBases[i].registryStatus == 0 && gSaveBlock1.secretBases[i].toRegister == 0)
return i;
}
@@ -1296,10 +1296,10 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase)
{
if (secretBaseIndex != -1)
{
- if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 == 1)
+ if (gSaveBlock1.secretBases[secretBaseIndex].toRegister == 1)
return 0;
- if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2
- || secretBase->sbr_field_1_0 == 1)
+ if (gSaveBlock1.secretBases[secretBaseIndex].registryStatus != 2
+ || secretBase->toRegister == 1)
{
sub_80BD034(secretBaseIndex, secretBase);
return secretBaseIndex;
@@ -1336,8 +1336,8 @@ void sub_80BD280(void)
{
for (j = i + 1; j < MAX_SECRET_BASES; j++)
{
- if ((!secretBases[i].sbr_field_1_6 && secretBases[j].sbr_field_1_6 == 1)
- || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
+ if ((!secretBases[i].registryStatus && secretBases[j].registryStatus == 1)
+ || (secretBases[i].registryStatus == 2 && secretBases[j].registryStatus != 2))
{
temp = secretBases[i];
secretBases[i] = secretBases[j];
@@ -1353,7 +1353,7 @@ void sub_80BD328(struct SecretBaseRecord *secretBases, u8 b)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
- if (secretBases[i].sbr_field_1_6 == b)
+ if (secretBases[i].registryStatus == b)
sub_80BD1FC(&secretBases[i]);
}
}
@@ -1439,13 +1439,13 @@ bool8 sub_80BD494(struct SecretBaseRecord *base, struct SecretBaseRecord *secret
return FALSE;
}
- if (base->sbr_field_e > secretBases[i].sbr_field_e)
+ if (base->numSecretBasesReceived > secretBases[i].numSecretBasesReceived)
{
ClearSecretBase(&secretBases[i]);
return FALSE;
}
- secretBases[i].sbr_field_1_0 = base->sbr_field_1_0;
+ secretBases[i].toRegister = base->toRegister;
ClearSecretBase(base);
return TRUE;
@@ -1464,8 +1464,8 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
{
if (basesA[i].secretBaseId)
{
- if (basesA[i].sbr_field_1_6 == 1)
- basesA[i].sbr_field_1_0 = 1;
+ if (basesA[i].registryStatus == 1)
+ basesA[i].toRegister = 1;
if (!sub_80BD494(&basesA[i], basesB, i))
{
@@ -1479,7 +1479,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
{
if (basesB[i].secretBaseId)
{
- basesB[i].sbr_field_1_5 = 0;
+ basesB[i].battledOwnerToday = 0;
if (!sub_80BD494(&basesB[i], basesC, i))
sub_80BD494(&basesB[i], basesD, i);
@@ -1490,12 +1490,12 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
{
if (basesC[i].secretBaseId)
{
- basesC[i].sbr_field_1_5 = 0;
+ basesC[i].battledOwnerToday = 0;
sub_80BD494(&basesC[i], basesD, i);
}
if (basesD[i].secretBaseId)
- basesD[i].sbr_field_1_5 = 0;
+ basesD[i].battledOwnerToday = 0;
}
}
@@ -1517,7 +1517,7 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
sub_80BD328(basesC, 0);
}
-void sub_80BD674(void *playerRecords, u32 size, u8 c)
+void ReceiveSecretBasesData(void *playerRecords, u32 size, u8 c)
{
if (
#if DEBUG
@@ -1557,10 +1557,10 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
- if (gSaveBlock1.secretBases[i].sbr_field_1_0 == 1)
+ if (gSaveBlock1.secretBases[i].toRegister == 1)
{
- gSaveBlock1.secretBases[i].sbr_field_1_6 = 1;
- gSaveBlock1.secretBases[i].sbr_field_1_0 = 0;
+ gSaveBlock1.secretBases[i].registryStatus = 1;
+ gSaveBlock1.secretBases[i].toRegister = 0;
}
}
@@ -1568,11 +1568,11 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
- if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 2)
- gSaveBlock1.secretBases[i].sbr_field_1_6 = 0;
+ if (gSaveBlock1.secretBases[i].registryStatus == 2)
+ gSaveBlock1.secretBases[i].registryStatus = 0;
}
- if (gSaveBlock1.secretBases[0].sbr_field_e != 0xFFFF)
- gSaveBlock1.secretBases[0].sbr_field_e++;
+ if (gSaveBlock1.secretBases[0].numSecretBasesReceived != 0xFFFF)
+ gSaveBlock1.secretBases[0].numSecretBasesReceived++;
}
}
diff --git a/src/shop.c b/src/shop.c
index 032297f71..34086958e 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -267,7 +267,7 @@ static void BuyMenuDrawGraphics(void)
Dma3FillLarge32_(0, (void*)OAM, OAM_SIZE);
LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00));
- LZDecompressWram(gBuyMenuFrame_Tilemap, ewram18000_2);
+ LZDecompressWram(gBuyMenuFrame_Tilemap, ewram18000);
LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal));
FreeAllSpritePalettes();
ResetPaletteFade();
@@ -498,7 +498,7 @@ static void BuyMenuDrawTextboxBG_Restore(void)
for (i = 0; i < 8; i++)
for (j = 0; j < 14; j++)
- gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0;
+ gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18000[0x180 + 32 * i + j] + 0xC3E0;
}
static void Shop_PrintItemDesc(void)
diff --git a/src/slot_machine.c b/src/slot_machine.c
index fd3e2580d..41b9c42a5 100644
--- a/src/slot_machine.c
+++ b/src/slot_machine.c
@@ -331,6 +331,8 @@ static u8 unk_debug_bss_1_4;
static u32 unk_debug_bss_1_8;
#endif
+static struct SlotMachineEwramStruct *const sSlotMachine = eSlotMachine;
+
static const struct UnkStruct1 *const gUnknown_083ED048[];
static const u16 gPalette_83EDE24[];
static const u8 gUnknown_083ECD04[][3];
@@ -408,10 +410,10 @@ static void SlotMachine_VBlankCallback(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- REG_WIN0H = eSlotMachine->win0h;
- REG_WIN0V = eSlotMachine->win0v;
- REG_WININ = eSlotMachine->winIn;
- REG_WINOUT = eSlotMachine->winOut;
+ REG_WIN0H = sSlotMachine->win0h;
+ REG_WIN0V = sSlotMachine->win0v;
+ REG_WININ = sSlotMachine->winIn;
+ REG_WINOUT = sSlotMachine->winOut;
}
static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
@@ -424,8 +426,8 @@ static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb)
static void sub_81019EC(void)
{
struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask);
- eSlotMachine->unk01 = task->data[0];
- LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->prevMainCb);
+ sSlotMachine->unk01 = task->data[0];
+ LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb);
}
static void SlotMachineDummyTask(u8 taskId)
@@ -492,35 +494,35 @@ static void SlotMachineSetup_0_1(void)
u8 i;
sub_81019EC();
- eSlotMachine->state = 0;
- eSlotMachine->pikaPower = 0;
- eSlotMachine->unk03 = Random() & 1;
- eSlotMachine->unk04 = 0;
- eSlotMachine->matchedSymbols = 0;
- eSlotMachine->unk0A = 0;
- eSlotMachine->unk0B = 0;
- eSlotMachine->coins = gSaveBlock1.coins;
- eSlotMachine->payout = 0;
- eSlotMachine->unk10 = 0;
- eSlotMachine->bet = 0;
- eSlotMachine->unk18 = 0;
- eSlotMachine->unk1A = 8;
- eSlotMachine->win0h = 0xf0;
- eSlotMachine->win0v = 0xa0;
- eSlotMachine->winIn = 0x3f;
- eSlotMachine->winOut = 0x3f;
- eSlotMachine->backupMapMusic = GetCurrentMapMusic();
+ sSlotMachine->state = 0;
+ sSlotMachine->pikaPower = 0;
+ sSlotMachine->unk03 = Random() & 1;
+ sSlotMachine->unk04 = 0;
+ sSlotMachine->matchedSymbols = 0;
+ sSlotMachine->unk0A = 0;
+ sSlotMachine->unk0B = 0;
+ sSlotMachine->coins = gSaveBlock1.coins;
+ sSlotMachine->payout = 0;
+ sSlotMachine->unk10 = 0;
+ sSlotMachine->bet = 0;
+ sSlotMachine->unk18 = 0;
+ sSlotMachine->unk1A = 8;
+ sSlotMachine->win0h = 0xf0;
+ sSlotMachine->win0v = 0xa0;
+ sSlotMachine->winIn = 0x3f;
+ sSlotMachine->winOut = 0x3f;
+ sSlotMachine->backupMapMusic = GetCurrentMapMusic();
for (i = 0; i < 3; i++)
{
- eSlotMachine->unk22[i] = 0;
- eSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][eSlotMachine->unk03] % 21;
- eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->reelPositions[i] * 24;
- eSlotMachine->unk1C[i] %= 0x1f8;
+ sSlotMachine->unk22[i] = 0;
+ sSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][sSlotMachine->unk03] % 21;
+ sSlotMachine->unk1C[i] = 0x1f8 - sSlotMachine->reelPositions[i] * 24;
+ sSlotMachine->unk1C[i] %= 0x1f8;
}
#if DEBUG
debug_sub_811B5D0();
if (unk_debug_bss_1_1 != 0)
- eSlotMachine->coins = 1000;
+ sSlotMachine->coins = 1000;
#endif
}
@@ -605,39 +607,39 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
static void sub_8101D24(u8 taskId)
{
- while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId))
+ while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId))
;
}
static bool8 sub_8101D5C(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- sub_810423C(eSlotMachine->pikaPower);
- eSlotMachine->state++;
+ sub_810423C(sSlotMachine->pikaPower);
+ sSlotMachine->state++;
return FALSE;
}
static bool8 sub_8101D8C(struct Task *task)
{
if (!gPaletteFade.active)
- eSlotMachine->state++;
+ sSlotMachine->state++;
return FALSE;
}
static bool8 sub_8101DB0(struct Task *task)
{
- eSlotMachine->payout = 0;
- eSlotMachine->bet = 0;
- eSlotMachine->unk18 = 0;
- eSlotMachine->unk04 &= 0xc0;
- eSlotMachine->state = 4;
- if (eSlotMachine->coins <= 0)
+ sSlotMachine->payout = 0;
+ sSlotMachine->bet = 0;
+ sSlotMachine->unk18 = 0;
+ sSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->state = 4;
+ if (sSlotMachine->coins <= 0)
{
- eSlotMachine->state = 25;
+ sSlotMachine->state = 25;
}
- else if (eSlotMachine->unk0A)
+ else if (sSlotMachine->unk0A)
{
- eSlotMachine->state = 3;
+ sSlotMachine->state = 3;
sub_8104CAC(4);
}
return TRUE;
@@ -646,20 +648,20 @@ static bool8 sub_8101DB0(struct Task *task)
static bool8 sub_8101DF4(struct Task *task)
{
if (sub_8104E18())
- eSlotMachine->state = 4;
+ sSlotMachine->state = 4;
return FALSE;
}
static bool8 sub_8101E10(struct Task *task)
{
sub_8104CAC(0);
- eSlotMachine->state = 5;
+ sSlotMachine->state = 5;
if (
#if DEBUG
(unk_debug_bss_1_1 == 0 || unk_debug_bss_1_4 == 0) &&
#endif
- eSlotMachine->coins >= 9999)
- eSlotMachine->state = 23;
+ sSlotMachine->coins >= 9999)
+ sSlotMachine->state = 23;
return TRUE;
}
@@ -670,7 +672,7 @@ static bool8 sub_8101E3C(struct Task *task)
#if DEBUG
if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0)
{
- if (eSlotMachine->coins <= 3 || (gMain.heldKeys & B_BUTTON))
+ if (sSlotMachine->coins <= 3 || (gMain.heldKeys & B_BUTTON))
{
unk_debug_bss_1_4 = 0;
}
@@ -679,16 +681,16 @@ static bool8 sub_8101E3C(struct Task *task)
sub_8103D50(0);
sub_8103D50(1);
sub_8103D50(2);
- eSlotMachine->coins -= 3;
- eSlotMachine->bet = 3;
- eSlotMachine->state = 9;
+ sSlotMachine->coins -= 3;
+ sSlotMachine->bet = 3;
+ sSlotMachine->state = 9;
return 0;
}
}
if (unk_debug_bss_1_1 != 0 && (gMain.newKeys & 8))
{
debug_sub_811B620();
- eSlotMachine->state = 29;
+ sSlotMachine->state = 29;
return 0;
}
#endif
@@ -696,37 +698,37 @@ static bool8 sub_8101E3C(struct Task *task)
if (gMain.newKeys & SELECT_BUTTON)
{
sub_8104AB8(0);
- eSlotMachine->state = 8;
+ sSlotMachine->state = 8;
}
else if (gMain.newKeys & R_BUTTON)
{
- if (eSlotMachine->coins - (3 - eSlotMachine->bet) >= 0)
+ if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0)
{
- for (i = eSlotMachine->bet; i < 3; i++)
+ for (i = sSlotMachine->bet; i < 3; i++)
sub_8103D50(i);
- eSlotMachine->coins -= (3 - eSlotMachine->bet);
- eSlotMachine->bet = 3;
- eSlotMachine->state = 9;
+ sSlotMachine->coins -= (3 - sSlotMachine->bet);
+ sSlotMachine->bet = 3;
+ sSlotMachine->state = 9;
PlaySE(SE_SHOP);
}
else
{
- eSlotMachine->state = 6;
+ sSlotMachine->state = 6;
}
}
else
{
- if (gMain.newKeys & DPAD_DOWN && eSlotMachine->coins != 0)
+ if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0)
{
PlaySE(SE_SHOP);
- sub_8103D50(eSlotMachine->bet);
- eSlotMachine->coins--;
- eSlotMachine->bet++;
+ sub_8103D50(sSlotMachine->bet);
+ sSlotMachine->coins--;
+ sSlotMachine->bet++;
}
- if (eSlotMachine->bet >= 3 || (eSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
- eSlotMachine->state = 9;
+ if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
+ sSlotMachine->state = 9;
if (gMain.newKeys & B_BUTTON)
- eSlotMachine->state = 21;
+ sSlotMachine->state = 21;
}
return FALSE;
}
@@ -740,7 +742,7 @@ static void sub_8101F2C(const u8 *str)
static bool8 sub_8101F44(struct Task *task)
{
sub_8101F2C(gOtherText_DontHaveThreeCoins);
- eSlotMachine->state = 7;
+ sSlotMachine->state = 7;
return FALSE;
}
@@ -749,7 +751,7 @@ static bool8 sub_8101F60(struct Task *task)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
Menu_EraseScreen();
- eSlotMachine->state = 5;
+ sSlotMachine->state = 5;
}
return FALSE;
}
@@ -757,7 +759,7 @@ static bool8 sub_8101F60(struct Task *task)
static bool8 sub_8101F88(struct Task *task)
{
if (sub_8104AEC())
- eSlotMachine->state = 5;
+ sSlotMachine->state = 5;
return FALSE;
}
@@ -769,22 +771,22 @@ static bool8 sub_8101FA4(struct Task *task)
sub_8102DEC(1);
sub_8102DEC(2);
task->data[0] = 0;
- if (eSlotMachine->unk04 & 0x20)
+ if (sSlotMachine->unk04 & 0x20)
{
sub_810430C();
- eSlotMachine->state = 10;
+ sSlotMachine->state = 10;
}
else
{
sub_8104CAC(1);
- eSlotMachine->state = 11;
+ sSlotMachine->state = 11;
}
- eSlotMachine->unk1A = 8;
- if (eSlotMachine->unk0A)
- eSlotMachine->unk1A = dp15_jump_random_unknown();
+ sSlotMachine->unk1A = 8;
+ if (sSlotMachine->unk0A)
+ sSlotMachine->unk1A = dp15_jump_random_unknown();
#if DEBUG
if (unk_debug_bss_1_1 != 0)
- debug_sub_811B5B4(&eSlotMachine->unk68, 1);
+ debug_sub_811B5B4(&sSlotMachine->unk68, 1);
#endif
return FALSE;
}
@@ -794,8 +796,8 @@ static bool8 sub_8102008(struct Task *task)
if (sub_810432C())
{
sub_8104CAC(1);
- eSlotMachine->unk04 &= 0xDF;
- eSlotMachine->state = 11;
+ sSlotMachine->unk04 &= 0xDF;
+ sSlotMachine->state = 11;
}
return FALSE;
}
@@ -809,7 +811,7 @@ static bool8 sub_8102034(struct Task *task)
unk_debug_bss_1_8 = (Random() & 0x1F) + 1;
#endif
sub_81024F0();
- eSlotMachine->state = 12;
+ sSlotMachine->state = 12;
}
return FALSE;
}
@@ -822,11 +824,11 @@ static bool8 sub_8102058(struct Task *task)
unk_debug_bss_1_8--;
if (unk_debug_bss_1_8 == 0)
{
- PlaySE(0x18);
- sub_8102E1C(eSlotMachine->unk18);
- sub_8103C14(eSlotMachine->unk18);
+ PlaySE(SE_CONTEST_PLACE);
+ sub_8102E1C(sSlotMachine->unk18);
+ sub_8103C14(sSlotMachine->unk18);
unk_debug_bss_1_8 = (Random() & 0x1F) + 1;
- eSlotMachine->state = 13;
+ sSlotMachine->state = 13;
}
return FALSE;
}
@@ -835,59 +837,59 @@ static bool8 sub_8102058(struct Task *task)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_CONTEST_PLACE);
- sub_8102E1C(eSlotMachine->unk18);
- sub_8103C14(eSlotMachine->unk18);
- eSlotMachine->state = 13;
+ sub_8102E1C(sSlotMachine->unk18);
+ sub_8103C14(sSlotMachine->unk18);
+ sSlotMachine->state = 13;
}
return FALSE;
}
static bool8 sub_8102090(struct Task *task)
{
- if (!sub_8102E40(eSlotMachine->unk18))
+ if (!sub_8102E40(sSlotMachine->unk18))
{
- eSlotMachine->unk18++;
- eSlotMachine->state = 12;
- if (eSlotMachine->unk18 > 2)
+ sSlotMachine->unk18++;
+ sSlotMachine->state = 12;
+ if (sSlotMachine->unk18 > 2)
{
- eSlotMachine->state = 14;
+ sSlotMachine->state = 14;
#if DEBUG
switch (unk_debug_bss_1_0)
{
case 2:
- eSlotMachine->reelPositions[0] = 20;
- eSlotMachine->reelPositions[1] = 20;
- eSlotMachine->reelPositions[2] = 18;
+ sSlotMachine->reelPositions[0] = 20;
+ sSlotMachine->reelPositions[1] = 20;
+ sSlotMachine->reelPositions[2] = 18;
break;
case 1:
- eSlotMachine->reelPositions[0] = 20;
- eSlotMachine->reelPositions[1] = 20;
- eSlotMachine->reelPositions[2] = 18;
+ sSlotMachine->reelPositions[0] = 20;
+ sSlotMachine->reelPositions[1] = 20;
+ sSlotMachine->reelPositions[2] = 18;
break;
case 4:
- eSlotMachine->reelPositions[0] = 3;
- eSlotMachine->reelPositions[1] = 1;
- eSlotMachine->reelPositions[2] = 2;
+ sSlotMachine->reelPositions[0] = 3;
+ sSlotMachine->reelPositions[1] = 1;
+ sSlotMachine->reelPositions[2] = 2;
break;
case 8:
- eSlotMachine->reelPositions[0] = 0;
- eSlotMachine->reelPositions[1] = 2;
- eSlotMachine->reelPositions[2] = 3;
+ sSlotMachine->reelPositions[0] = 0;
+ sSlotMachine->reelPositions[1] = 2;
+ sSlotMachine->reelPositions[2] = 3;
break;
case 0x10:
- eSlotMachine->reelPositions[0] = 2;
- eSlotMachine->reelPositions[1] = 5;
- eSlotMachine->reelPositions[2] = 20;
+ sSlotMachine->reelPositions[0] = 2;
+ sSlotMachine->reelPositions[1] = 5;
+ sSlotMachine->reelPositions[2] = 20;
break;
case 0x40:
- eSlotMachine->reelPositions[0] = 19;
- eSlotMachine->reelPositions[1] = 19;
- eSlotMachine->reelPositions[2] = 0;
+ sSlotMachine->reelPositions[0] = 19;
+ sSlotMachine->reelPositions[1] = 19;
+ sSlotMachine->reelPositions[2] = 0;
break;
case 0x80:
- eSlotMachine->reelPositions[0] = 19;
- eSlotMachine->reelPositions[1] = 19;
- eSlotMachine->reelPositions[2] = 19;
+ sSlotMachine->reelPositions[0] = 19;
+ sSlotMachine->reelPositions[1] = 19;
+ sSlotMachine->reelPositions[2] = 19;
break;
}
#endif
@@ -899,12 +901,12 @@ static bool8 sub_8102090(struct Task *task)
bool8 sub_81020C8(struct Task *task)
{
- eSlotMachine->unk04 &= 0xc0;
+ sSlotMachine->unk04 &= 0xc0;
CheckMatch();
- if (eSlotMachine->unk0A)
+ if (sSlotMachine->unk0A)
{
- eSlotMachine->unk0A--;
- eSlotMachine->unk0B++;
+ sSlotMachine->unk0A--;
+ sSlotMachine->unk0B++;
}
#if DEBUG
else
@@ -913,24 +915,24 @@ bool8 sub_81020C8(struct Task *task)
}
#endif
- if (eSlotMachine->matchedSymbols)
+ if (sSlotMachine->matchedSymbols)
{
#if DEBUG
- debug_sub_811B5B4(&eSlotMachine->unk6C, eSlotMachine->payout);
+ debug_sub_811B5B4(&sSlotMachine->unk6C, sSlotMachine->payout);
#endif
- eSlotMachine->state = 15;
+ sSlotMachine->state = 15;
sub_8102A24();
sub_8103F70();
- if ((eSlotMachine->unk10 -= eSlotMachine->payout) < 0)
+ if ((sSlotMachine->unk10 -= sSlotMachine->payout) < 0)
{
- eSlotMachine->unk10 = 0;
+ sSlotMachine->unk10 = 0;
}
- if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
PlayFanfare(MUS_SLOTS_JACKPOT);
sub_8104CAC(6);
}
- else if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED))
+ else if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED))
{
PlayFanfare(MUS_SLOTS_JACKPOT);
sub_8104CAC(5);
@@ -940,30 +942,30 @@ bool8 sub_81020C8(struct Task *task)
PlayFanfare(MUS_SLOTS_WIN);
sub_8104CAC(2);
}
- if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- eSlotMachine->unk04 &= 0x3f;
- if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
+ sSlotMachine->unk04 &= 0x3f;
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED)))
{
- eSlotMachine->unk0A = 0;
- eSlotMachine->unk0B = 0;
- eSlotMachine->unk03 = 0;
- if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
- eSlotMachine->unk03 = 1;
+ sSlotMachine->unk0A = 0;
+ sSlotMachine->unk0B = 0;
+ sSlotMachine->unk03 = 0;
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
+ sSlotMachine->unk03 = 1;
}
}
- if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && eSlotMachine->pikaPower < 16)
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16)
{
- eSlotMachine->pikaPower++;
- sub_8104064(eSlotMachine->pikaPower);
+ sSlotMachine->pikaPower++;
+ sub_8104064(sSlotMachine->pikaPower);
}
}
else
{
sub_8104CAC(3);
- eSlotMachine->state = 20;
- if ((eSlotMachine->unk10 += eSlotMachine->bet) > 9999)
- eSlotMachine->unk10 = 9999;
+ sSlotMachine->state = 20;
+ if ((sSlotMachine->unk10 += sSlotMachine->bet) > 9999)
+ sSlotMachine->unk10 = 9999;
}
return FALSE;
}
@@ -971,7 +973,7 @@ bool8 sub_81020C8(struct Task *task)
static bool8 sub_81021E0(struct Task *task)
{
if (sub_8102A44())
- eSlotMachine->state = 16;
+ sSlotMachine->state = 16;
return FALSE;
}
@@ -979,20 +981,20 @@ static bool8 sub_81021FC(struct Task *task)
{
if (sub_8103FA0())
{
- eSlotMachine->state = 19;
- if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE)))
+ sSlotMachine->state = 19;
+ if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE)))
IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
- if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
- eSlotMachine->unk18 = 0;
- eSlotMachine->state = 9;
+ sSlotMachine->unk18 = 0;
+ sSlotMachine->state = 9;
}
- if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
- eSlotMachine->state = 17;
- if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
+ sSlotMachine->state = 17;
+ if (sSlotMachine->unk0A && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sub_8104CAC(4);
- eSlotMachine->state = 18;
+ sSlotMachine->state = 18;
}
}
return FALSE;
@@ -1002,14 +1004,14 @@ static bool8 sub_8102264(struct Task *task)
{
if (!sub_81040C8())
{
- eSlotMachine->state = 19;
- if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ sSlotMachine->state = 19;
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
- eSlotMachine->state = 9;
- if (eSlotMachine->unk0A)
+ sSlotMachine->state = 9;
+ if (sSlotMachine->unk0A)
{
sub_8104CAC(4);
- eSlotMachine->state = 18;
+ sSlotMachine->state = 18;
}
}
}
@@ -1020,10 +1022,10 @@ static bool8 sub_81022A0(struct Task *task)
{
if (sub_8104E18())
{
- eSlotMachine->state = 19;
- if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
+ sSlotMachine->state = 19;
+ if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
- eSlotMachine->state = 9;
+ sSlotMachine->state = 9;
}
}
return FALSE;
@@ -1034,7 +1036,7 @@ static bool8 sub_81022CC(struct Task *task)
sub_8103D8C(0);
sub_8103D8C(1);
sub_8103D8C(2);
- eSlotMachine->state = 2;
+ sSlotMachine->state = 2;
return FALSE;
}
@@ -1043,7 +1045,7 @@ static bool8 sub_81022F0(struct Task *task)
if (++task->data[1] > 64)
{
task->data[1] = 0;
- eSlotMachine->state = 19;
+ sSlotMachine->state = 19;
}
return FALSE;
}
@@ -1053,7 +1055,7 @@ static bool8 sub_8102318(struct Task *task)
sub_8101F2C(gOtherText_QuitGamePrompt);
DisplayYesNoMenu(21, 7, 1);
sub_814AB84();
- eSlotMachine->state = 22;
+ sSlotMachine->state = 22;
return FALSE;
}
@@ -1066,13 +1068,13 @@ static bool8 sub_8102344(struct Task *task)
sub_8103D8C(0);
sub_8103D8C(1);
sub_8103D8C(2);
- eSlotMachine->coins += eSlotMachine->bet;
- eSlotMachine->state = 27;
+ sSlotMachine->coins += sSlotMachine->bet;
+ sSlotMachine->state = 27;
}
else if (input == 1 || input == -1)
{
Menu_EraseScreen();
- eSlotMachine->state = 5;
+ sSlotMachine->state = 5;
}
return FALSE;
}
@@ -1080,7 +1082,7 @@ static bool8 sub_8102344(struct Task *task)
static bool8 sub_810239C(struct Task *task)
{
sub_8101F2C(gOtherText_MaxCoins);
- eSlotMachine->state = 24;
+ sSlotMachine->state = 24;
return FALSE;
}
@@ -1089,7 +1091,7 @@ static bool8 sub_81023B8(struct Task *task)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
Menu_EraseScreen();
- eSlotMachine->state = 5;
+ sSlotMachine->state = 5;
}
return FALSE;
}
@@ -1097,7 +1099,7 @@ static bool8 sub_81023B8(struct Task *task)
static bool8 sub_81023E0(struct Task *task)
{
sub_8101F2C(gOtherText_OutOfCoins);
- eSlotMachine->state = 26;
+ sSlotMachine->state = 26;
return FALSE;
}
@@ -1106,7 +1108,7 @@ static bool8 sub_81023FC(struct Task *task)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
Menu_EraseScreen();
- eSlotMachine->state = 27;
+ sSlotMachine->state = 27;
}
return FALSE;
}
@@ -1115,12 +1117,12 @@ static bool8 sub_8102424(struct Task *task)
{
#if DEBUG
if (unk_debug_bss_1_1 == 0)
- gSaveBlock1.coins = eSlotMachine->coins;
+ gSaveBlock1.coins = sSlotMachine->coins;
#else
- gSaveBlock1.coins = eSlotMachine->coins;
+ gSaveBlock1.coins = sSlotMachine->coins;
#endif
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- eSlotMachine->state++;
+ sSlotMachine->state++;
return FALSE;
}
@@ -1128,7 +1130,7 @@ static bool8 sub_8102460(struct Task *task)
{
if (!gPaletteFade.active)
{
- SetMainCallback2(eSlotMachine->prevMainCb);
+ SetMainCallback2(sSlotMachine->prevMainCb);
}
return FALSE;
}
@@ -1138,7 +1140,7 @@ static bool8 sub_8102460(struct Task *task)
static bool8 debug_sub_8116E74(struct Task *task)
{
if (debug_sub_811B634() != 0)
- eSlotMachine->state = 5;
+ sSlotMachine->state = 5;
return FALSE;
}
@@ -1148,48 +1150,48 @@ static void sub_8102484(void)
{
u8 r3;
- if (eSlotMachine->unk0A == 0)
+ if (sSlotMachine->unk0A == 0)
{
#if DEBUG
if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_2 != 0)
{
- eSlotMachine->unk04 = unk_debug_bss_1_3;
+ sSlotMachine->unk04 = unk_debug_bss_1_3;
unk_debug_bss_1_2 = 0;
unk_debug_bss_1_3 = 0;
- if (eSlotMachine->unk04 & 0x80)
- debug_sub_811B5B4(&eSlotMachine->unk88, 1);
- if (eSlotMachine->unk04 & 0x40)
- debug_sub_811B5B4(&eSlotMachine->unk84, 1);
- if (eSlotMachine->unk04 & 0x20)
- debug_sub_811B5B4(&eSlotMachine->unk8C, 1);
- if (eSlotMachine->unk04 & 0x10)
- debug_sub_811B5B4(&eSlotMachine->unk80, 1);
- if (eSlotMachine->unk04 & 8)
- debug_sub_811B5B4(&eSlotMachine->unk7C, 1);
- if (eSlotMachine->unk04 & 4)
- debug_sub_811B5B4(&eSlotMachine->unk78, 1);
- if (eSlotMachine->unk04 & 1)
- debug_sub_811B5B4(&eSlotMachine->unk74, 1);
- if (eSlotMachine->unk04 & 2)
- debug_sub_811B5B4(&eSlotMachine->unk70, 1);
+ if (sSlotMachine->unk04 & 0x80)
+ debug_sub_811B5B4(&sSlotMachine->unk88, 1);
+ if (sSlotMachine->unk04 & 0x40)
+ debug_sub_811B5B4(&sSlotMachine->unk84, 1);
+ if (sSlotMachine->unk04 & 0x20)
+ debug_sub_811B5B4(&sSlotMachine->unk8C, 1);
+ if (sSlotMachine->unk04 & 0x10)
+ debug_sub_811B5B4(&sSlotMachine->unk80, 1);
+ if (sSlotMachine->unk04 & 8)
+ debug_sub_811B5B4(&sSlotMachine->unk7C, 1);
+ if (sSlotMachine->unk04 & 4)
+ debug_sub_811B5B4(&sSlotMachine->unk78, 1);
+ if (sSlotMachine->unk04 & 1)
+ debug_sub_811B5B4(&sSlotMachine->unk74, 1);
+ if (sSlotMachine->unk04 & 2)
+ debug_sub_811B5B4(&sSlotMachine->unk70, 1);
return;
}
#endif
- if (!(eSlotMachine->unk04 & 0xc0))
+ if (!(sSlotMachine->unk04 & 0xc0))
{
if (sub_8102540())
{
r3 = sub_8102578();
if (r3 != 3)
{
- eSlotMachine->unk04 |= gUnknown_083ECE42[r3];
+ sSlotMachine->unk04 |= gUnknown_083ECE42[r3];
#if DEBUG
- if (eSlotMachine->unk04 & 0x80)
- debug_sub_811B5B4(&eSlotMachine->unk88, 1);
- if (eSlotMachine->unk04 & 0x40)
- debug_sub_811B5B4(&eSlotMachine->unk84, 1);
- if (eSlotMachine->unk04 & 0x20)
- debug_sub_811B5B4(&eSlotMachine->unk8C, 1);
+ if (sSlotMachine->unk04 & 0x80)
+ debug_sub_811B5B4(&sSlotMachine->unk88, 1);
+ if (sSlotMachine->unk04 & 0x40)
+ debug_sub_811B5B4(&sSlotMachine->unk84, 1);
+ if (sSlotMachine->unk04 & 0x20)
+ debug_sub_811B5B4(&sSlotMachine->unk8C, 1);
#endif
if (r3 != 1)
{
@@ -1200,18 +1202,18 @@ static void sub_8102484(void)
r3 = sub_81025BC();
if (r3 != 5)
{
- eSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ sSlotMachine->unk04 |= gUnknown_083ECE48[r3];
#if DEBUG
- if (eSlotMachine->unk04 & 0x10)
- debug_sub_811B5B4(&eSlotMachine->unk80, 1);
- if (eSlotMachine->unk04 & 8)
- debug_sub_811B5B4(&eSlotMachine->unk7C, 1);
- if (eSlotMachine->unk04 & 4)
- debug_sub_811B5B4(&eSlotMachine->unk78, 1);
- if (eSlotMachine->unk04 & 1)
- debug_sub_811B5B4(&eSlotMachine->unk74, 1);
- if (eSlotMachine->unk04 & 2)
- debug_sub_811B5B4(&eSlotMachine->unk70, 1);
+ if (sSlotMachine->unk04 & 0x10)
+ debug_sub_811B5B4(&sSlotMachine->unk80, 1);
+ if (sSlotMachine->unk04 & 8)
+ debug_sub_811B5B4(&sSlotMachine->unk7C, 1);
+ if (sSlotMachine->unk04 & 4)
+ debug_sub_811B5B4(&sSlotMachine->unk78, 1);
+ if (sSlotMachine->unk04 & 1)
+ debug_sub_811B5B4(&sSlotMachine->unk74, 1);
+ if (sSlotMachine->unk04 & 2)
+ debug_sub_811B5B4(&sSlotMachine->unk70, 1);
#endif
}
}
@@ -1223,14 +1225,14 @@ static void sub_8102484(void)
{
u8 r3;
- if (eSlotMachine->unk0A == 0 && !(eSlotMachine->unk04 & 0xc0))
+ if (sSlotMachine->unk0A == 0 && !(sSlotMachine->unk04 & 0xc0))
{
if (sub_8102540())
{
r3 = sub_8102578();
if (r3 != 3)
{
- eSlotMachine->unk04 |= gUnknown_083ECE42[r3];
+ sSlotMachine->unk04 |= gUnknown_083ECE42[r3];
if (r3 != 1)
{
return;
@@ -1240,7 +1242,7 @@ static void sub_8102484(void)
r3 = sub_81025BC();
if (r3 != 5)
{
- eSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+ sSlotMachine->unk04 |= gUnknown_083ECE48[r3];
}
}
}
@@ -1248,9 +1250,9 @@ static void sub_8102484(void)
static void sub_81024F0(void)
{
- eSlotMachine->unk06 = 0;
- if (eSlotMachine->unk04)
- eSlotMachine->unk06 = 1;
+ sSlotMachine->unk06 = 0;
+ if (sSlotMachine->unk04)
+ sSlotMachine->unk06 = 1;
}
static u8 sub_810250C(u8 a0)
@@ -1269,7 +1271,7 @@ static u8 sub_810250C(u8 a0)
static bool8 sub_8102540(void)
{
u8 rval = Random();
- if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval)
+ if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval)
return TRUE;
return FALSE;
}
@@ -1283,7 +1285,7 @@ static u8 sub_8102578(void)
for (i = 0; i < 3; i++)
{
s16 rval = Random() & 0xff;
- s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01];
+ s16 value = gUnknown_083ECD16[i][sSlotMachine->unk01];
if (value > rval)
break;
}
@@ -1299,14 +1301,14 @@ static u8 sub_81025BC(void)
for (i = 0; i < 5; i++)
{
s16 rval = Random() & 0xff;
- s16 r3 = gUnknown_083ECD28[i][eSlotMachine->unk01];
- if (i == 0 && eSlotMachine->unk03 == 1)
+ s16 r3 = gUnknown_083ECD28[i][sSlotMachine->unk01];
+ if (i == 0 && sSlotMachine->unk03 == 1)
{
r3 += 10;
if (r3 > 0x100)
r3 = 0x100;
}
- else if (i == 4 && eSlotMachine->unk03 == 1)
+ else if (i == 4 && sSlotMachine->unk03 == 1)
{
r3 -= 10;
if (r3 < 0)
@@ -1323,10 +1325,10 @@ static const u8 gUnknown_083ECDAC[][17];
static u8 sub_810264C(u8 a0)
{
- if (eSlotMachine->unk03 == 0)
- return gUnknown_083ECD46[a0][eSlotMachine->pikaPower];
+ if (sSlotMachine->unk03 == 0)
+ return gUnknown_083ECD46[a0][sSlotMachine->pikaPower];
else
- return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower];
+ return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower];
}
static void sub_8102680(void)
@@ -1334,7 +1336,7 @@ static void sub_8102680(void)
u8 rval;
s16 i;
- eSlotMachine->unk05 = 0;
+ sSlotMachine->unk05 = 0;
rval = Random();
if (rval < sub_810264C(0))
return;
@@ -1344,7 +1346,7 @@ static void sub_8102680(void)
if (rval < sub_810264C(i))
break;
}
- eSlotMachine->unk05 = i;
+ sSlotMachine->unk05 = i;
}
static const u16 gUnknown_083ECE12[];
@@ -1366,20 +1368,20 @@ static u16 dp15_jump_random_unknown(void)
u8 r4 = 0;
u8 rval;
u8 value;
- if (eSlotMachine->unk10 >= 300)
+ if (sSlotMachine->unk10 >= 300)
r4 = 4;
- else if (eSlotMachine->unk10 >= 250)
+ else if (sSlotMachine->unk10 >= 250)
r4 = 3;
- else if (eSlotMachine->unk10 >= 200)
+ else if (sSlotMachine->unk10 >= 200)
r4 = 2;
- else if (eSlotMachine->unk10 >= 150)
+ else if (sSlotMachine->unk10 >= 150)
r4 = 1;
rval = Random() % 100;
value = gUnknown_083ECE1C[r4][0];
if (rval < value)
return 4;
rval = Random() % 100;
- value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[eSlotMachine->unk0B];
+ value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[sSlotMachine->unk0B];
if (rval < value)
return 2;
return 8;
@@ -1387,11 +1389,11 @@ static u16 dp15_jump_random_unknown(void)
static void CheckMatch(void)
{
- eSlotMachine->matchedSymbols = 0;
+ sSlotMachine->matchedSymbols = 0;
CheckMatch_CenterRow();
- if (eSlotMachine->bet > 1)
+ if (sSlotMachine->bet > 1)
CheckMatch_TopAndBottom();
- if (eSlotMachine->bet > 2)
+ if (sSlotMachine->bet > 2)
CheckMatch_Diagonals();
}
@@ -1408,8 +1410,8 @@ static void CheckMatch_CenterRow(void)
match = GetMatchFromSymbolsInRow(c1, c2, c3);
if (match != SLOT_MACHINE_MATCHED_NONE)
{
- eSlotMachine->payout += sSlotPayouts[match];
- eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
sub_8103E04(0);
}
}
@@ -1426,8 +1428,8 @@ static void CheckMatch_TopAndBottom(void)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- eSlotMachine->payout += sSlotPayouts[match];
- eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
sub_8103E04(1);
}
c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
@@ -1438,8 +1440,8 @@ static void CheckMatch_TopAndBottom(void)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
match = SLOT_MACHINE_MATCHED_2CHERRY;
- eSlotMachine->payout += sSlotPayouts[match];
- eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
sub_8103E04(2);
}
}
@@ -1456,8 +1458,8 @@ static void CheckMatch_Diagonals(void)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- eSlotMachine->payout += sSlotPayouts[match];
- eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
}
sub_8103E04(3);
}
@@ -1469,8 +1471,8 @@ static void CheckMatch_Diagonals(void)
{
if (match != SLOT_MACHINE_MATCHED_1CHERRY)
{
- eSlotMachine->payout += sSlotPayouts[match];
- eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
+ sSlotMachine->payout += sSlotPayouts[match];
+ sSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
}
sub_8103E04(4);
}
@@ -1522,7 +1524,7 @@ static bool8 sub_8102A9C(struct Task *task)
if (sub_8103E38())
{
task->data[0]++;
- if (eSlotMachine->payout == 0)
+ if (sSlotMachine->payout == 0)
{
task->data[0] = 2;
return TRUE;
@@ -1537,9 +1539,9 @@ static bool8 sub_8102AD0(struct Task *task)
{
if (IsFanfareTaskInactive())
PlaySE(SE_PIN);
- eSlotMachine->payout--;
- if (eSlotMachine->coins < 9999)
- eSlotMachine->coins++;
+ sSlotMachine->payout--;
+ if (sSlotMachine->coins < 9999)
+ sSlotMachine->coins++;
task->data[1] = 8;
if (gMain.heldKeys & A_BUTTON)
task->data[1] = 4;
@@ -1547,12 +1549,12 @@ static bool8 sub_8102AD0(struct Task *task)
if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON)
{
PlaySE(SE_PIN);
- eSlotMachine->coins += eSlotMachine->payout;
- if (eSlotMachine->coins > 9999)
- eSlotMachine->coins = 9999;
- eSlotMachine->payout = 0;
+ sSlotMachine->coins += sSlotMachine->payout;
+ if (sSlotMachine->coins > 9999)
+ sSlotMachine->coins = 9999;
+ sSlotMachine->payout = 0;
}
- if (eSlotMachine->payout == 0)
+ if (sSlotMachine->payout == 0)
task->data[0]++;
return FALSE;
}
@@ -1568,7 +1570,7 @@ static const u8 sReelSymbols[][21];
static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
{
- s16 offset = (eSlotMachine->reelPositions[x] + y) % 21;
+ s16 offset = (sSlotMachine->reelPositions[x] + y) % 21;
if (offset < 0)
offset += 21;
return sReelSymbols[x][offset];
@@ -1577,7 +1579,7 @@ static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
static u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y)
{
s16 r6 = 0;
- if ((eSlotMachine->unk1C[x]) % 24)
+ if ((sSlotMachine->unk1C[x]) % 24)
r6 = -1;
return GetTagOfReelSymbolOnScreenAtPos(x, y + r6);
}
@@ -1586,7 +1588,7 @@ static const u8 gUnknown_083ECCF1[];
static u8 sub_8102C48(s16 a0)
{
- s16 r1 = (eSlotMachine->unk16 + a0) % 6;
+ s16 r1 = (sSlotMachine->unk16 + a0) % 6;
if (r1 < 0)
r1 += 6;
return gUnknown_083ECCF1[r1];
@@ -1594,40 +1596,40 @@ static u8 sub_8102C48(s16 a0)
static void sub_8102C84(u8 a0, s16 a1)
{
- eSlotMachine->unk1C[a0] += a1;
- eSlotMachine->unk1C[a0] %= 504;
- eSlotMachine->reelPositions[a0] = 21 - eSlotMachine->unk1C[a0] / 24;
+ sSlotMachine->unk1C[a0] += a1;
+ sSlotMachine->unk1C[a0] %= 504;
+ sSlotMachine->reelPositions[a0] = 21 - sSlotMachine->unk1C[a0] / 24;
}
static s16 sub_8102CCC(u8 a0, s16 a1)
{
- s16 r1 = eSlotMachine->unk1C[a0] % 24;
+ s16 r1 = sSlotMachine->unk1C[a0] % 24;
if (r1 != 0)
{
if (r1 < a1)
a1 = r1;
sub_8102C84(a0, a1);
- r1 = eSlotMachine->unk1C[a0] % 24;
+ r1 = sSlotMachine->unk1C[a0] % 24;
}
return r1;
}
static void sub_8102D28(s16 a0)
{
- eSlotMachine->unk14 += a0;
- eSlotMachine->unk14 %= 120;
- eSlotMachine->unk16 = 6 - eSlotMachine->unk14 / 20;
+ sSlotMachine->unk14 += a0;
+ sSlotMachine->unk14 %= 120;
+ sSlotMachine->unk16 = 6 - sSlotMachine->unk14 / 20;
}
static s16 sub_8102D5C(s16 a0)
{
- s16 r1 = eSlotMachine->unk14 % 20;
+ s16 r1 = sSlotMachine->unk14 % 20;
if (r1 != 0)
{
if (r1 < a0)
a0 = r1;
sub_8102D28(a0);
- r1 = eSlotMachine->unk14 % 20;
+ r1 = sSlotMachine->unk14 % 20;
}
return r1;
}
@@ -1639,25 +1641,25 @@ static void sub_8102DA8(void)
{
u8 taskId = CreateTask(sub_8102E68, 2);
gTasks[taskId].data[15] = i;
- eSlotMachine->reelTasks[i] = taskId;
+ sSlotMachine->reelTasks[i] = taskId;
sub_8102E68(taskId);
}
}
static void sub_8102DEC(u8 a0)
{
- gTasks[eSlotMachine->reelTasks[a0]].data[0] = 1;
- gTasks[eSlotMachine->reelTasks[a0]].data[14] = 1;
+ gTasks[sSlotMachine->reelTasks[a0]].data[0] = 1;
+ gTasks[sSlotMachine->reelTasks[a0]].data[14] = 1;
}
static void sub_8102E1C(u8 a0)
{
- gTasks[eSlotMachine->reelTasks[a0]].data[0] = 2;
+ gTasks[sSlotMachine->reelTasks[a0]].data[0] = 2;
}
static bool8 sub_8102E40(u8 a0)
{
- return gTasks[eSlotMachine->reelTasks[a0]].data[14];
+ return gTasks[sSlotMachine->reelTasks[a0]].data[14];
}
static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) =
@@ -1682,7 +1684,7 @@ static bool8 sub_8102EA0(struct Task *task)
static bool8 sub_8102EA4(struct Task *task)
{
- sub_8102C84(task->data[15], eSlotMachine->unk1A);
+ sub_8102C84(task->data[15], sSlotMachine->unk1A);
return FALSE;
}
@@ -1703,30 +1705,30 @@ static void (*const gUnknown_083ECB4C[])(void) =
static bool8 sub_8102EC0(struct Task *task)
{
task->data[0]++;
- eSlotMachine->unk34[task->data[15]] = 0;
- eSlotMachine->unk2E[task->data[15]] = 0;
- if (eSlotMachine->unk0A == 0 && (eSlotMachine->unk04 == 0 || eSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
+ sSlotMachine->unk34[task->data[15]] = 0;
+ sSlotMachine->unk2E[task->data[15]] = 0;
+ if (sSlotMachine->unk0A == 0 && (sSlotMachine->unk04 == 0 || sSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]()))
{
- eSlotMachine->unk06 = 0;
+ sSlotMachine->unk06 = 0;
gUnknown_083ECB4C[task->data[15]]();
}
- task->data[1] = eSlotMachine->unk2E[task->data[15]];
+ task->data[1] = sSlotMachine->unk2E[task->data[15]];
return TRUE;
}
static bool8 sub_8102F4C(struct Task *task)
{
u16 sp[] = {2, 4, 4, 4, 8};
- s16 r2 = eSlotMachine->unk1C[task->data[15]] % 24;
+ s16 r2 = sSlotMachine->unk1C[task->data[15]] % 24;
if (r2 != 0)
- r2 = sub_8102CCC(task->data[15], eSlotMachine->unk1A);
- else if (eSlotMachine->unk2E[task->data[15]])
+ r2 = sub_8102CCC(task->data[15], sSlotMachine->unk1A);
+ else if (sSlotMachine->unk2E[task->data[15]])
{
- eSlotMachine->unk2E[task->data[15]]--;
- sub_8102C84(task->data[15], eSlotMachine->unk1A);
- r2 = eSlotMachine->unk1C[task->data[15]] % 24;
+ sSlotMachine->unk2E[task->data[15]]--;
+ sub_8102C84(task->data[15], sSlotMachine->unk1A);
+ r2 = sSlotMachine->unk1C[task->data[15]] % 24;
}
- if (r2 == 0 && eSlotMachine->unk2E[task->data[15]] == 0)
+ if (r2 == 0 && sSlotMachine->unk2E[task->data[15]] == 0)
{
task->data[0]++;
task->data[1] = sp[task->data[1]];
@@ -1737,7 +1739,7 @@ static bool8 sub_8102F4C(struct Task *task)
static bool8 sub_8103008(struct Task *task)
{
- eSlotMachine->unk22[task->data[15]] = task->data[1];
+ sSlotMachine->unk22[task->data[15]] = task->data[1];
task->data[1] = -task->data[1];
task->data[2]++;
if ((task->data[2] & 0x3) == 0)
@@ -1746,7 +1748,7 @@ static bool8 sub_8103008(struct Task *task)
{
task->data[0] = 0;
task->data[14] = 0;
- eSlotMachine->unk22[task->data[15]] = 0;
+ sSlotMachine->unk22[task->data[15]] = 0;
}
return FALSE;
}
@@ -1760,14 +1762,14 @@ static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) =
static bool8 sub_810305C(void)
{
- u8 r3 = sub_810250C(eSlotMachine->unk04);
+ u8 r3 = sub_810250C(sSlotMachine->unk04);
u8 r5 = r3;
- if (eSlotMachine->unk04 & 0xc0)
+ if (sSlotMachine->unk04 & 0xc0)
{
r5 = 0;
r3 = 1;
}
- return gUnknown_083ECB64[eSlotMachine->bet - 1](r5, r3);
+ return gUnknown_083ECB64[sSlotMachine->bet - 1](r5, r3);
}
static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
@@ -1775,7 +1777,7 @@ static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y);
if (tag == tag1 || tag == tag2)
{
- eSlotMachine->unk07 = tag;
+ sSlotMachine->unk07 = tag;
return TRUE;
}
return FALSE;
@@ -1791,7 +1793,7 @@ static bool8 sub_81030E0(s16 y)
static bool8 sub_8103134(void)
{
- if (eSlotMachine->unk04 & 0xc2)
+ if (sSlotMachine->unk04 & 0xc2)
return TRUE;
else
return FALSE;
@@ -1805,8 +1807,8 @@ static bool8 sub_8103154(u8 a0, u8 a1)
{
if (sub_81030A4(2 - i, a0, a1))
{
- eSlotMachine->unk34[0] = 2;
- eSlotMachine->unk2E[0] = i;
+ sSlotMachine->unk34[0] = 2;
+ sSlotMachine->unk2E[0] = i;
return TRUE;
}
}
@@ -1823,8 +1825,8 @@ static bool8 sub_81031B4(u8 tag1, u8 tag2)
{
if (sub_81030A4(i, tag1, tag2))
{
- eSlotMachine->unk34[0] = i;
- eSlotMachine->unk2E[0] = 0;
+ sSlotMachine->unk34[0] = i;
+ sSlotMachine->unk2E[0] = 0;
return TRUE;
}
}
@@ -1838,18 +1840,18 @@ static bool8 sub_81031B4(u8 tag1, u8 tag2)
{
if (i == 1 && (r7 || !sub_81030E0(3)))
{
- eSlotMachine->unk34[0] = 3;
- eSlotMachine->unk2E[0] = 3;
+ sSlotMachine->unk34[0] = 3;
+ sSlotMachine->unk2E[0] = 3;
return TRUE;
}
if (i < 4 && (r7 || !sub_81030E0(i + 1)))
{
- eSlotMachine->unk34[0] = 2;
- eSlotMachine->unk2E[0] = i + 1;
+ sSlotMachine->unk34[0] = 2;
+ sSlotMachine->unk2E[0] = i + 1;
return TRUE;
}
- eSlotMachine->unk34[0] = 1;
- eSlotMachine->unk2E[0] = i;
+ sSlotMachine->unk34[0] = 1;
+ sSlotMachine->unk2E[0] = i;
return TRUE;
}
}
@@ -1866,20 +1868,20 @@ static bool8 (*const gUnknown_083ECB70[])(void) =
static bool8 sub_81032C0(void)
{
- return gUnknown_083ECB70[eSlotMachine->bet - 1]();
+ return gUnknown_083ECB70[sSlotMachine->bet - 1]();
}
static bool8 sub_81032E8(void)
{
s16 i;
- s16 unk34_0 = eSlotMachine->unk34[0];
+ s16 unk34_0 = sSlotMachine->unk34[0];
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == eSlotMachine->unk07)
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == sSlotMachine->unk07)
{
- eSlotMachine->unk34[1] = unk34_0;
- eSlotMachine->unk2E[1] = i;
+ sSlotMachine->unk34[1] = unk34_0;
+ sSlotMachine->unk2E[1] = i;
return TRUE;
}
}
@@ -1891,28 +1893,28 @@ static bool8 sub_810333C(void)
s16 i;
if (sub_81032E8())
{
- if (eSlotMachine->unk34[0] != 2 && eSlotMachine->unk2E[1] > 1 && eSlotMachine->unk2E[1] != 4)
+ if (sSlotMachine->unk34[0] != 2 && sSlotMachine->unk2E[1] > 1 && sSlotMachine->unk2E[1] != 4)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07)
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
{
- eSlotMachine->unk34[1] = 2;
- eSlotMachine->unk2E[1] = i;
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = i;
break;
}
}
}
return TRUE;
}
- if (eSlotMachine->unk34[0] != 2)
+ if (sSlotMachine->unk34[0] != 2)
{
for (i = 0; i < 5; i++)
{
- if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07)
+ if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07)
{
- eSlotMachine->unk34[1] = 2;
- eSlotMachine->unk2E[1] = i;
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = i;
return TRUE;
}
}
@@ -1929,29 +1931,29 @@ static bool8 (*const gUnknown_083ECB7C[])(u8 a0) =
static bool8 sub_81033DC(void)
{
- u8 r3 = eSlotMachine->unk07;
- if (eSlotMachine->unk04 & 0x40)
+ u8 r3 = sSlotMachine->unk07;
+ if (sSlotMachine->unk04 & 0x40)
{
r3 = 0;
- if (eSlotMachine->unk07 == 0)
+ if (sSlotMachine->unk07 == 0)
{
r3 = 1;
}
}
- return gUnknown_083ECB7C[eSlotMachine->bet - 1](r3);
+ return gUnknown_083ECB7C[sSlotMachine->bet - 1](r3);
}
static bool8 sub_810341C(u8 a0)
{
s16 i;
- s16 unk34_1 = eSlotMachine->unk34[1];
+ s16 unk34_1 = sSlotMachine->unk34[1];
for (i = 0; i < 5; i++)
{
if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0)
{
- eSlotMachine->unk34[2] = unk34_1;
- eSlotMachine->unk2E[2] = i;
+ sSlotMachine->unk34[2] = unk34_1;
+ sSlotMachine->unk2E[2] = i;
return TRUE;
}
}
@@ -1962,9 +1964,9 @@ static bool8 sub_810347C(u8 a0)
{
s16 i;
s16 r8;
- if (eSlotMachine->unk34[0] == eSlotMachine->unk34[1])
+ if (sSlotMachine->unk34[0] == sSlotMachine->unk34[1])
return sub_810341C(a0);
- if (eSlotMachine->unk34[0] == 1)
+ if (sSlotMachine->unk34[0] == 1)
r8 = 3;
else
r8 = 1;
@@ -1972,8 +1974,8 @@ static bool8 sub_810347C(u8 a0)
{
if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
{
- eSlotMachine->unk2E[2] = i;
- eSlotMachine->unk34[2] = r8;
+ sSlotMachine->unk2E[2] = i;
+ sSlotMachine->unk34[2] = r8;
return TRUE;
}
}
@@ -1986,7 +1988,7 @@ static void sub_81034F4(void)
while (sub_81030E0(i) != 0)
i++;
- eSlotMachine->unk2E[0] = i;
+ sSlotMachine->unk2E[0] = i;
}
static bool8 sub_8103520(u8 *a0)
@@ -2013,14 +2015,14 @@ static void (*const gUnknown_083ECB88[])(void) =
static void sub_8103540(void)
{
- gUnknown_083ECB88[eSlotMachine->bet - 1]();
+ gUnknown_083ECB88[sSlotMachine->bet - 1]();
}
static void sub_8103564(void)
{
- if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]);
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
if (sub_8103520(&sp0))
{
s16 i;
@@ -2028,8 +2030,8 @@ static void sub_8103564(void)
{
if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i))
{
- eSlotMachine->unk34[1] = 2;
- eSlotMachine->unk2E[1] = i;
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = i;
break;
}
}
@@ -2039,18 +2041,18 @@ static void sub_8103564(void)
static void j5_08111E84(void)
{
- if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
if (sub_8103520(&sp0))
{
s16 i;
for (i = 0; i < 5; i++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - i))
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - i))
{
- eSlotMachine->unk34[1] = eSlotMachine->unk34[0];
- eSlotMachine->unk2E[1] = i;
+ sSlotMachine->unk34[1] = sSlotMachine->unk34[0];
+ sSlotMachine->unk2E[1] = i;
break;
}
}
@@ -2062,57 +2064,57 @@ static void sub_8103668(void)
{
s16 i;
s16 j;
- if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80)
{
- if (eSlotMachine->unk34[0] == 2)
+ if (sSlotMachine->unk34[0] == 2)
{
j5_08111E84();
}
else
{
- u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
+ u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
if (sub_8103520(&sp0))
{
j = 2;
- if (eSlotMachine->unk34[0] == 3)
+ if (sSlotMachine->unk34[0] == 3)
j = 3;
for (i = 0; i < 2; i++, j--)
{
if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j))
{
- eSlotMachine->unk34[1] = j;
- eSlotMachine->unk2E[1] = 0;
+ sSlotMachine->unk34[1] = j;
+ sSlotMachine->unk2E[1] = 0;
return;
}
}
for (j = 1; j < 5; j++)
{
- if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - j))
+ if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - j))
{
- if (eSlotMachine->unk34[0] == 1)
+ if (sSlotMachine->unk34[0] == 1)
{
if (j < 3)
{
- eSlotMachine->unk34[1] = 2;
- eSlotMachine->unk2E[1] = j + 1;
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = j + 1;
}
else
{
- eSlotMachine->unk34[1] = 1;
- eSlotMachine->unk2E[1] = j;
+ sSlotMachine->unk34[1] = 1;
+ sSlotMachine->unk2E[1] = j;
}
}
else
{
if (j < 3)
{
- eSlotMachine->unk34[1] = 3;
- eSlotMachine->unk2E[1] = j;
+ sSlotMachine->unk34[1] = 3;
+ sSlotMachine->unk2E[1] = j;
}
else
{
- eSlotMachine->unk34[1] = 2;
- eSlotMachine->unk2E[1] = j - 1;
+ sSlotMachine->unk34[1] = 2;
+ sSlotMachine->unk2E[1] = j - 1;
}
}
return;
@@ -2161,14 +2163,14 @@ static void (*const gUnknown_083ECB94[])(void) =
static void sub_810380C(void)
{
- gUnknown_083ECB94[eSlotMachine->bet - 1]();
+ gUnknown_083ECB94[sSlotMachine->bet - 1]();
}
static void sub_8103830(void)
{
s16 i = 0;
- u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]);
- u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
+ u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]);
+ u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
if (r5 == r1)
{
while (1)
@@ -2181,13 +2183,13 @@ static void sub_8103830(void)
}
else if (sub_8103764(r5, r1))
{
- if (eSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->unk04 & 0x80)
{
for (i = 0; i < 5; i++)
{
if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
{
- eSlotMachine->unk2E[2] = i;
+ sSlotMachine->unk2E[2] = i;
return;
}
}
@@ -2200,7 +2202,7 @@ static void sub_8103830(void)
i++;
}
}
- eSlotMachine->unk2E[2] = i;
+ sSlotMachine->unk2E[2] = i;
}
static void sub_8103910(void)
@@ -2211,15 +2213,15 @@ static void sub_8103910(void)
u8 r6;
u8 r4;
- if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] == eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] == sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
{
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]);
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
if (sub_8103764(r7, r6))
{
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, eSlotMachine->unk34[1] - i);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, sSlotMachine->unk34[1] - i);
if (r7 == r4)
{
sp0 = i;
@@ -2233,10 +2235,10 @@ static void sub_8103910(void)
s16 r8;
for (i = 1, r8 = 0; i < 4; i++)
{
- r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - eSlotMachine->unk2E[0]);
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - eSlotMachine->unk2E[1]);
+ r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - sSlotMachine->unk2E[0]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - sSlotMachine->unk2E[1]);
r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0);
- if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(eSlotMachine->unk04 & 0x80)))
+ if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(sSlotMachine->unk04 & 0x80)))
{
r8++;
break;
@@ -2246,7 +2248,7 @@ static void sub_8103910(void)
break;
sp0++;
}
- eSlotMachine->unk2E[2] = sp0;
+ sSlotMachine->unk2E[2] = sp0;
}
static void sub_8103A78(void)
@@ -2258,21 +2260,21 @@ static void sub_8103A78(void)
s16 i;
sub_8103910();
- if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] != eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80)
+ if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] != sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]);
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]);
if (sub_8103764(r6, r5))
{
r8 = 1;
- if (eSlotMachine->unk34[0] == 1)
+ if (sSlotMachine->unk34[0] == 1)
r8 = 3;
for (i = 0; i < 5; i++)
{
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (eSlotMachine->unk2E[2] + i));
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (sSlotMachine->unk2E[2] + i));
if (r6 == r4)
{
- eSlotMachine->unk2E[2] += i;
+ sSlotMachine->unk2E[2] += i;
break;
}
}
@@ -2280,21 +2282,21 @@ static void sub_8103A78(void)
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - eSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - eSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80))
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - sSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - sSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
break;
- eSlotMachine->unk2E[2]++;
+ sSlotMachine->unk2E[2]++;
}
while (1)
{
- r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - eSlotMachine->unk2E[0]);
- r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]);
- r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - eSlotMachine->unk2E[2]);
- if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80))
+ r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - sSlotMachine->unk2E[0]);
+ r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]);
+ r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - sSlotMachine->unk2E[2]);
+ if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80))
break;
- eSlotMachine->unk2E[2]++;
+ sSlotMachine->unk2E[2]++;
}
}
@@ -2375,13 +2377,13 @@ static void sub_8103DC8(void)
{
u8 spriteId = CreateInvisibleSprite(sub_8103EE4);
gSprites[spriteId].data[0] = i;
- eSlotMachine->unk44[i] = spriteId;
+ sSlotMachine->unk44[i] = spriteId;
}
}
static void sub_8103E04(u8 a0)
{
- struct Sprite *sprite = gSprites + eSlotMachine->unk44[a0];
+ struct Sprite *sprite = gSprites + sSlotMachine->unk44[a0];
sprite->data[1] = 1;
sprite->data[2] = 4;
sprite->data[3] = 0;
@@ -2395,7 +2397,7 @@ static bool8 sub_8103E38(void)
u8 i;
for (i = 0; i < 5; i++)
{
- struct Sprite *sprite = &gSprites[eSlotMachine->unk44[i]];
+ struct Sprite *sprite = &gSprites[sSlotMachine->unk44[i]];
if (sprite->data[1] && sprite->data[2])
return FALSE;
}
@@ -2407,7 +2409,7 @@ static bool8 sub_8103E7C(void)
u8 i;
for (i = 0; i < 5; i++)
{
- if (!sub_8103EAC(eSlotMachine->unk44[i]))
+ if (!sub_8103EAC(sSlotMachine->unk44[i]))
return FALSE;
}
return TRUE;
@@ -2489,12 +2491,12 @@ static void sub_8103FE8(u8 taskId)
static void sub_8104048(void)
{
- eSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
+ sSlotMachine->unk3E = CreateTask(sub_81040E8, 8);
}
static void sub_8104064(u8 pikaPower)
{
- struct Task *task = gTasks + eSlotMachine->unk3E;
+ struct Task *task = gTasks + sSlotMachine->unk3E;
sub_810421C(task);
task->data[0] = 1;
task->data[1]++;
@@ -2503,7 +2505,7 @@ static void sub_8104064(u8 pikaPower)
static void sub_8104098(void)
{
- struct Task *task = gTasks + eSlotMachine->unk3E;
+ struct Task *task = gTasks + sSlotMachine->unk3E;
sub_810421C(task);
task->data[0] = 3;
task->data[15] = 1;
@@ -2511,7 +2513,7 @@ static void sub_8104098(void)
static bool8 sub_81040C8(void)
{
- return gTasks[eSlotMachine->unk3E].data[15];
+ return gTasks[sSlotMachine->unk3E].data[15];
}
static void (*const gUnknown_083ECBB4[])(struct Task *task) =
@@ -2617,7 +2619,7 @@ static void sub_810423C(u8 pikaPower)
r3 = 2;
vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][1];
}
- gTasks[eSlotMachine->unk3E].data[1] = pikaPower;
+ gTasks[sSlotMachine->unk3E].data[1] = pikaPower;
}
static void sub_810430C(void)
@@ -2663,9 +2665,9 @@ static void sub_810434C(u8 taskId)
static void sub_810437C(struct Task *task)
{
- eSlotMachine->unk0A = 0;
- eSlotMachine->unk14 = 0;
- eSlotMachine->unk16 = 0;
+ sSlotMachine->unk0A = 0;
+ sSlotMachine->unk14 = 0;
+ sSlotMachine->unk16 = 0;
task->data[0]++;
task->data[1] = 0;
task->data[2] = 30;
@@ -2729,7 +2731,7 @@ static void sub_8104498(struct Task *task)
r5 = 4 - (task->data[4] >> 8);
sub_8105688(sp4[r5]);
sub_81057E8(spC[r5]);
- StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, sp0[r5]);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, sp0[r5]);
if (task->data[4] <= 0x100)
{
task->data[0]++;
@@ -2746,7 +2748,7 @@ static void sub_8104548(struct Task *task)
task->data[0]++;
task->data[5] = 0;
sub_81057E8(2);
- StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 3);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 3);
}
}
@@ -2768,9 +2770,9 @@ static void sub_81045CC(struct Task *task)
if (++task->data[5] >= 40)
{
task->data[5] = 0;
- if (eSlotMachine->unk05)
+ if (sSlotMachine->unk05)
{
- if (eSlotMachine->unk0A <= task->data[6])
+ if (sSlotMachine->unk0A <= task->data[6])
task->data[0]++;
}
else if (task->data[6] > 3)
@@ -2787,19 +2789,19 @@ static void sub_81045CC(struct Task *task)
static void sub_810463C(struct Task *task)
{
- s16 r5 = eSlotMachine->unk14 % 20;
+ s16 r5 = sSlotMachine->unk14 % 20;
if (r5)
{
r5 = sub_8102D5C(task->data[4] >> 8);
task->data[4] = (u8)task->data[4] + 0x40;
}
- else if (sub_8102C48(1) != eSlotMachine->unk05)
+ else if (sub_8102C48(1) != sSlotMachine->unk05)
{
sub_8102D28(task->data[4] >> 8);
- r5 = eSlotMachine->unk14 % 20;
+ r5 = sSlotMachine->unk14 % 20;
task->data[4] = (u8)task->data[4] + 0x40;
}
- if (r5 == 0 && sub_8102C48(1) == eSlotMachine->unk05)
+ if (r5 == 0 && sub_8102C48(1) == sSlotMachine->unk05)
{
task->data[4] = 0;
task->data[0]++;
@@ -2814,21 +2816,21 @@ static void sub_81046C0(struct Task *task)
sub_81056C0();
sub_8105804();
task->data[0]++;
- if(eSlotMachine->unk05 == 0)
+ if(sSlotMachine->unk05 == 0)
{
task->data[4] = 0xa0;
- StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
PlayFanfare(MUS_TOO_BAD);
}
else
{
task->data[4] = 0xc0;
- StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 4);
- gSprites[eSlotMachine->unk3F].animCmdIndex = 0;
- if (eSlotMachine->pikaPower)
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 4);
+ gSprites[sSlotMachine->unk3F].animCmdIndex = 0;
+ if (sSlotMachine->pikaPower)
{
sub_8104098();
- eSlotMachine->pikaPower = 0;
+ sSlotMachine->pikaPower = 0;
}
PlayFanfare(MUS_SLOTS_WIN);
}
@@ -2857,16 +2859,16 @@ static void sub_8104794(struct Task *task)
static void sub_81047EC(struct Task *task)
{
- eSlotMachine->unk0B = 0;
- eSlotMachine->unk0A = eSlotMachine->unk05;
+ sSlotMachine->unk0B = 0;
+ sSlotMachine->unk0A = sSlotMachine->unk05;
gSpriteCoordOffsetX = 0;
REG_BG1HOFS = 0;
- eSlotMachine->unk1A = 8;
+ sSlotMachine->unk1A = 8;
sub_810514C();
sub_81054B8();
sub_8105524();
- PlayNewMapMusic(eSlotMachine->backupMapMusic);
- if (eSlotMachine->unk0A == 0)
+ PlayNewMapMusic(sSlotMachine->backupMapMusic);
+ if (sSlotMachine->unk0A == 0)
{
DestroyTask(FindTaskIdByFunc(sub_810434C));
}
@@ -2882,10 +2884,10 @@ static void sub_81047EC(struct Task *task)
static void sub_8104860(struct Task *task)
{
- if (eSlotMachine->unk1A == task->data[1])
+ if (sSlotMachine->unk1A == task->data[1])
task->data[0]++;
- else if (eSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
- eSlotMachine->unk1A >>= 1;
+ else if (sSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
+ sSlotMachine->unk1A >>= 1;
}
static void sub_81048A8(struct Task *task)
@@ -2900,8 +2902,8 @@ static void sub_81048CC(struct Task *task)
sub_81056C0();
sub_8105804();
sub_8105854();
- gSprites[eSlotMachine->unk4E[0]].invisible = TRUE;
- StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5);
+ gSprites[sSlotMachine->unk4E[0]].invisible = TRUE;
+ StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5);
task->data[0]++;
task->data[4] = 4;
task->data[5] = 0;
@@ -2924,7 +2926,7 @@ static void sub_8104940(struct Task *task)
sub_81058C4();
sub_8105284();
sub_81059E8();
- gSprites[eSlotMachine->unk4E[0]].invisible = FALSE;
+ gSprites[sSlotMachine->unk4E[0]].invisible = FALSE;
task->data[0]++;
task->data[5] = 0;
}
@@ -2945,7 +2947,7 @@ static void sub_81049F8(struct Task *task)
{
gSpriteCoordOffsetX = 0;
REG_BG1HOFS = 0;
- PlayNewMapMusic(eSlotMachine->backupMapMusic);
+ PlayNewMapMusic(sSlotMachine->backupMapMusic);
sub_810514C();
sub_8105554();
sub_8105524();
@@ -3046,7 +3048,7 @@ static void sub_8104BFC(struct Task *task)
BasicInitMenuWindow(&gWindowTemplate_81E7128);
sub_81064B8();
sub_8104CAC(task->data[1]);
- sub_810423C(eSlotMachine->pikaPower);
+ sub_810423C(sSlotMachine->pikaPower);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
task->data[0]++;
}
@@ -3061,7 +3063,7 @@ static void sub_8104C5C(void)
u8 i;
struct Task *task;
i = CreateTask(sub_8104E74, 3);
- eSlotMachine->unk3D = i;
+ sSlotMachine->unk3D = i;
task = gTasks + i;
task->data[1] = -1;
for (i = 4; i < 16; i++)
@@ -3077,7 +3079,7 @@ static void sub_8104CAC(u8 arg0)
sub_8104DA4();
- task = gTasks + eSlotMachine->unk3D;
+ task = gTasks + sSlotMachine->unk3D;
task->data[1] = arg0;
for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++)
@@ -3100,7 +3102,7 @@ static void sub_8104CAC(u8 arg0)
static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4)
{
u8 i;
- struct Task *task = gTasks + eSlotMachine->unk3D;
+ struct Task *task = gTasks + sSlotMachine->unk3D;
for (i = 4; i < 16; i++)
{
if (task->data[i] == MAX_SPRITES)
@@ -3116,7 +3118,7 @@ static void (*const gUnknown_083ED064[])(void);
void sub_8104DA4(void)
{
u8 i;
- struct Task *task = gTasks + eSlotMachine->unk3D;
+ struct Task *task = gTasks + sSlotMachine->unk3D;
if ((u16)task->data[1] != 0xFFFF)
gUnknown_083ED064[task->data[1]]();
for (i = 4; i < 16; i++)
@@ -3132,7 +3134,7 @@ void sub_8104DA4(void)
static bool8 sub_8104E18(void)
{
u8 i;
- struct Task *task = gTasks + eSlotMachine->unk3D;
+ struct Task *task = gTasks + sSlotMachine->unk3D;
for (i = 4; i < 16; i++)
{
if (task->data[i] != MAX_SPRITES)
@@ -3180,9 +3182,9 @@ static void sub_8104EA8(void)
static void sub_8104F18(struct Sprite *sprite)
{
- sprite->data[2] = eSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
+ sprite->data[2] = sSlotMachine->unk1C[sprite->data[0]] + sprite->data[1];
sprite->data[2] %= 120;
- sprite->pos1.y = eSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
+ sprite->y = sSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2];
sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24));
SetSpriteSheetFrameTileNum(sprite);
}
@@ -3212,9 +3214,9 @@ static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3)
static void sub_810506C(struct Sprite *sprite)
{
- u16 tag = eSlotMachine->coins;
+ u16 tag = sSlotMachine->coins;
if (sprite->data[0])
- tag = eSlotMachine->payout;
+ tag = sSlotMachine->payout;
if (sprite->data[3] != tag)
{
sprite->data[3] = tag;
@@ -3243,22 +3245,22 @@ static void sub_8105100(void)
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED45C, 0x118, 0x50, 1);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].coordOffsetEnabled = TRUE;
- eSlotMachine->unk3F = spriteId;
+ sSlotMachine->unk3F = spriteId;
}
static void sub_810514C(void)
{
- DestroySprite(gSprites + eSlotMachine->unk3F);
+ DestroySprite(gSprites + sSlotMachine->unk3F);
}
static void sub_8105170(struct Sprite *sprite)
{
- sprite->pos2.y = sprite->pos2.x = 0;
+ sprite->y2 = sprite->x2 = 0;
if (sprite->animNum == 4)
{
- sprite->pos2.y = sprite->pos2.x = 8;
+ sprite->y2 = sprite->x2 = 8;
if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0))
- sprite->pos2.y = -8;
+ sprite->y2 = -8;
}
}
@@ -3274,14 +3276,14 @@ static void sub_81051C0(void)
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
- eSlotMachine->unk49[0] = spriteId;
+ sSlotMachine->unk49[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
- eSlotMachine->unk49[1] = spriteId;
+ sSlotMachine->unk49[1] = spriteId;
}
static const struct SpriteTemplate gSpriteTemplate_83ED4A4;
@@ -3294,7 +3296,7 @@ static void sub_8105284(void)
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED78C);
- eSlotMachine->unk42 = spriteId;
+ sSlotMachine->unk42 = spriteId;
}
static const struct SpriteTemplate gSpriteTemplate_83ED4BC;
@@ -3310,15 +3312,15 @@ static void sub_81052EC(void)
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[7] = r5;
- eSlotMachine->unk4B[i] = spriteId;
+ sSlotMachine->unk4B[i] = spriteId;
}
}
static void sub_810535C(struct Sprite *sprite)
{
- s16 r0 = (u16)(eSlotMachine->unk14 + sprite->data[7]);
+ s16 r0 = (u16)(sSlotMachine->unk14 + sprite->data[7]);
r0 %= 40;
- sprite->pos1.y = r0 + 59;
+ sprite->y = r0 + 59;
StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20));
}
@@ -3332,14 +3334,14 @@ static void sub_81053A0(void)
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
- eSlotMachine->unk4E[0] = spriteId;
+ sSlotMachine->unk4E[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4);
sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
- eSlotMachine->unk4E[1] = spriteId;
+ sSlotMachine->unk4E[1] = spriteId;
}
static const struct SpriteTemplate gSpriteTemplate_83ED4EC;
@@ -3352,18 +3354,18 @@ static void sub_810545C(void)
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
- eSlotMachine->unk40 = spriteId;
+ sSlotMachine->unk40 = spriteId;
}
static void sub_81054B8(void)
{
u8 i;
- DestroySprite(&gSprites[eSlotMachine->unk40]);
+ DestroySprite(&gSprites[sSlotMachine->unk40]);
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[eSlotMachine->unk49[i]]);
+ DestroySprite(&gSprites[sSlotMachine->unk49[i]]);
for (i = 0; i < 3; i++)
- DestroySprite(&gSprites[eSlotMachine->unk4B[i]]);
+ DestroySprite(&gSprites[sSlotMachine->unk4B[i]]);
}
static void sub_8105524(void)
@@ -3371,12 +3373,12 @@ static void sub_8105524(void)
u8 i;
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[eSlotMachine->unk4E[i]]);
+ DestroySprite(&gSprites[sSlotMachine->unk4E[i]]);
}
static void sub_8105554(void)
{
- DestroySprite(&gSprites[eSlotMachine->unk42]);
+ DestroySprite(&gSprites[sSlotMachine->unk42]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED504;
@@ -3387,7 +3389,7 @@ static void sub_8105578(void)
struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->hFlip = TRUE;
- eSlotMachine->unk50[0] = spriteId;
+ sSlotMachine->unk50[0] = spriteId;
sprite->data[0] = 8;
sprite->data[1] = -1;
sprite->data[2] = -1;
@@ -3396,7 +3398,7 @@ static void sub_8105578(void)
spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
- eSlotMachine->unk50[1] = spriteId;
+ sSlotMachine->unk50[1] = spriteId;
sprite->data[1] = 1;
sprite->data[2] = -1;
sprite->data[7] = 0x20;
@@ -3407,15 +3409,15 @@ static void sub_810562C(struct Sprite *sprite)
if (sprite->data[0] != 0)
{
sprite->data[0]--;
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
sprite->invisible = TRUE;
}
else
{
sprite->invisible = FALSE;
- sprite->pos2.x += sprite->data[1];
- sprite->pos2.y += sprite->data[2];
+ sprite->x2 += sprite->data[1];
+ sprite->y2 += sprite->data[2];
if (++sprite->data[3] >= 8)
{
sprite->data[0] = sprite->data[7];
@@ -3426,8 +3428,8 @@ static void sub_810562C(struct Sprite *sprite)
static void sub_8105688(s16 a0)
{
- gSprites[eSlotMachine->unk50[0]].data[7] = a0;
- gSprites[eSlotMachine->unk50[1]].data[7] = a0;
+ gSprites[sSlotMachine->unk50[0]].data[7] = a0;
+ gSprites[sSlotMachine->unk50[1]].data[7] = a0;
}
static void sub_81056C0(void)
@@ -3435,7 +3437,7 @@ static void sub_81056C0(void)
u8 i;
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[eSlotMachine->unk50[i]]);
+ DestroySprite(&gSprites[sSlotMachine->unk50[i]]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED51C;
@@ -3448,12 +3450,12 @@ static void sub_81056F0(void)
gSprites[spriteId].data[5] = 0;
gSprites[spriteId].data[6] = 16;
gSprites[spriteId].data[7] = 8;
- eSlotMachine->unk52[0] = spriteId;
+ sSlotMachine->unk52[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3);
gSprites[spriteId].oam.priority = 1;
gSprites[spriteId].hFlip = TRUE;
- eSlotMachine->unk52[1] = spriteId;
+ sSlotMachine->unk52[1] = spriteId;
}
static const u8 gUnknown_083ECC58[2]; // don't remove this until decompiled through gUnknown_083ECCF8
@@ -3472,7 +3474,7 @@ static void sub_8105784(struct Sprite *sprite)
static void sub_81057E8(s16 a0)
{
- gSprites[eSlotMachine->unk52[0]].data[7] = a0;
+ gSprites[sSlotMachine->unk52[0]].data[7] = a0;
}
static void sub_8105804(void)
@@ -3480,7 +3482,7 @@ static void sub_8105804(void)
u8 i;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
for (i = 0; i < 2; i++)
- DestroySprite(&gSprites[eSlotMachine->unk52[i]]);
+ DestroySprite(&gSprites[sSlotMachine->unk52[i]]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED534;
@@ -3489,17 +3491,17 @@ static void sub_8105854(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6);
gSprites[spriteId].oam.priority = 1;
- eSlotMachine->unk41 = spriteId;
+ sSlotMachine->unk41 = spriteId;
}
static void sub_8105894(struct Sprite *sprite)
{
- sprite->pos2.y = gSpriteCoordOffsetY;
+ sprite->y2 = gSpriteCoordOffsetY;
}
static void sub_81058A0(void)
{
- DestroySprite(&gSprites[eSlotMachine->unk41]);
+ DestroySprite(&gSprites[sSlotMachine->unk41]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED54C;
@@ -3515,7 +3517,7 @@ static void sub_81058C4(void)
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = sp[i];
- eSlotMachine->unk54[i] = spriteId;
+ sSlotMachine->unk54[i] = spriteId;
}
}
@@ -3523,8 +3525,8 @@ static void sub_810594C(struct Sprite *sprite)
{
sprite->data[0] -= 2;
sprite->data[0] &= 0xff;
- sprite->pos2.x = Cos(sprite->data[0], 20);
- sprite->pos2.y = Sin(sprite->data[0], 6);
+ sprite->x2 = Cos(sprite->data[0], 20);
+ sprite->y2 = Sin(sprite->data[0], 6);
sprite->subpriority = 0;
if (sprite->data[0] >= 0x80)
{
@@ -3542,7 +3544,7 @@ static void sub_81059B8(void)
u8 i;
for (i = 0; i < 4; i++)
{
- DestroySprite(&gSprites[eSlotMachine->unk54[i]]);
+ DestroySprite(&gSprites[sSlotMachine->unk54[i]]);
}
}
@@ -3555,7 +3557,7 @@ static void sub_81059E8(void)
sprite->oam.priority = 1;
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
InitSpriteAffineAnim(sprite);
- eSlotMachine->unk43 = spriteId;
+ sSlotMachine->unk43 = spriteId;
}
static void sub_8105A38(struct Sprite *sprite)
@@ -3582,17 +3584,17 @@ static void sub_8105A38(struct Sprite *sprite)
}
sprite->data[1] &= 0xff;
sprite->data[1] += 16;
- sprite->pos2.y -= (sprite->data[1] >> 8);
+ sprite->y2 -= (sprite->data[1] >> 8);
}
u8 sub_8105ACC(void)
{
- return gSprites[eSlotMachine->unk43].data[7];
+ return gSprites[sSlotMachine->unk43].data[7];
}
static void sub_8105AEC(void)
{
- struct Sprite *sprite = &gSprites[eSlotMachine->unk43];
+ struct Sprite *sprite = &gSprites[sSlotMachine->unk43];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
@@ -3661,12 +3663,12 @@ static void sub_8105C6C(struct Sprite *sprite)
sprite->subspriteTableNum ^= 1;
sprite->data[1] = 0;
}
- sprite->pos2.x = 0;
- sprite->pos2.y = 0;
+ sprite->x2 = 0;
+ sprite->y2 = 0;
if (sprite->subspriteTableNum != 0)
{
- sprite->pos2.x = sp0[sprite->data[6]];
- sprite->pos2.y = sp8[sprite->data[6]];
+ sprite->x2 = sp0[sprite->data[6]];
+ sprite->y2 = sp8[sprite->data[6]];
}
}
@@ -3694,10 +3696,10 @@ static void sub_8105D3C(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xd0)
+ sprite->x += 4;
+ if (sprite->x >= 0xd0)
{
- sprite->pos1.x = 0xd0;
+ sprite->x = 0xd0;
sprite->data[0]++;
}
break;
@@ -3706,8 +3708,8 @@ static void sub_8105D3C(struct Sprite *sprite)
sprite->data[0]++;
break;
case 2:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0x110)
+ sprite->x += 4;
+ if (sprite->x >= 0x110)
sprite->data[0]++;
break;
case 3:
@@ -3721,10 +3723,10 @@ static void sub_8105DA4(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos1.x -= 4;
- if (sprite->pos1.x <= 0xd0)
+ sprite->x -= 4;
+ if (sprite->x <= 0xd0)
{
- sprite->pos1.x = 0xd0;
+ sprite->x = 0xd0;
sprite->data[0]++;
}
break;
@@ -3733,8 +3735,8 @@ static void sub_8105DA4(struct Sprite *sprite)
sprite->data[0]++;
break;
case 2:
- sprite->pos1.x -= 4;
- if (sprite->pos1.x <= 0x90)
+ sprite->x -= 4;
+ if (sprite->x <= 0x90)
sprite->data[0]++;
break;
case 3:
@@ -3748,7 +3750,7 @@ static void sub_8105E08(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- StartSpriteAnim(sprite, eSlotMachine->unk0A - 1);
+ StartSpriteAnim(sprite, sSlotMachine->unk0A - 1);
sprite->data[0]++;
// fallthrough
case 1:
@@ -3759,10 +3761,10 @@ static void sub_8105E08(struct Sprite *sprite)
}
break;
case 2:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xd0)
+ sprite->x += 4;
+ if (sprite->x >= 0xd0)
{
- sprite->pos1.x = 0xd0;
+ sprite->x = 0xd0;
sprite->data[0]++;
}
break;
@@ -3771,8 +3773,8 @@ static void sub_8105E08(struct Sprite *sprite)
sprite->data[0]++;
break;
case 4:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xf8)
+ sprite->x += 4;
+ if (sprite->x >= 0xf8)
sprite->data[0]++;
break;
case 5:
@@ -3790,10 +3792,10 @@ static void sub_8105EB4(struct Sprite *sprite)
sprite->data[0]++;
// fallthrough
case 1:
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= 0x70)
+ sprite->y += 8;
+ if (sprite->y >= 0x70)
{
- sprite->pos1.y = 0x70;
+ sprite->y = 0x70;
sprite->data[1] = 16;
sprite->data[0]++;
}
@@ -3801,7 +3803,7 @@ static void sub_8105EB4(struct Sprite *sprite)
case 2:
if (sprite->data[2] == 0)
{
- sprite->pos1.y -= sprite->data[1];
+ sprite->y -= sprite->data[1];
sprite->data[1] = -sprite->data[1];
if (++sprite->data[3] >= 2)
{
@@ -3830,10 +3832,10 @@ static void sub_8105F54(struct Sprite *sprite)
sprite->data[0]++;
break;
case 1:
- sprite->pos1.y += 2;
- if (sprite->pos1.y >= 0x30)
+ sprite->y += 2;
+ if (sprite->y >= 0x30)
{
- sprite->pos1.y = 0x30;
+ sprite->y = 0x30;
sprite->data[0]++;
sprite->data[7] = 0;
}
@@ -3910,8 +3912,8 @@ static void sub_81060FC(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sprite->pos2.x = sp00[sprite->data[6]];
- sprite->pos2.y = sp10[sprite->data[6]];
+ sprite->x2 = sp00[sprite->data[6]];
+ sprite->y2 = sp10[sprite->data[6]];
sprite->data[1] = sp20[sprite->data[6]];
sprite->data[0]++;
// fallthrough
@@ -3920,17 +3922,17 @@ static void sub_81060FC(struct Sprite *sprite)
sprite->data[0]++;
break;
case 2:
- if (sprite->pos2.x > 0)
- sprite->pos2.x -= 4;
- else if (sprite->pos2.x < 0)
- sprite->pos2.x += 4;
+ if (sprite->x2 > 0)
+ sprite->x2 -= 4;
+ else if (sprite->x2 < 0)
+ sprite->x2 += 4;
- if (sprite->pos2.y > 0)
- sprite->pos2.y -= 4;
- else if (sprite->pos2.y < 0)
- sprite->pos2.y += 4;
+ if (sprite->y2 > 0)
+ sprite->y2 -= 4;
+ else if (sprite->y2 < 0)
+ sprite->y2 += 4;
- if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ if (sprite->x2 == 0 && sprite->y2 == 0)
sprite->data[0]++;
break;
}
@@ -3945,8 +3947,8 @@ static void sub_81061C8(struct Sprite *sprite)
sprite->data[0]++;
sprite->data[1] = 12;
}
- sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]);
- sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]);
+ sprite->x2 = Cos(sp0[sprite->data[6]], sprite->data[1]);
+ sprite->y2 = Sin(sp0[sprite->data[6]], sprite->data[1]);
if (sprite->data[1] != 0)
sprite->data[1]--;
}
@@ -3956,9 +3958,9 @@ static void sub_8106230(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- eSlotMachine->winIn = 0x2f;
- eSlotMachine->winOut = 0x3f;
- eSlotMachine->win0v = 0x2088;
+ sSlotMachine->winIn = 0x2f;
+ sSlotMachine->winOut = 0x3f;
+ sSlotMachine->win0v = 0x2088;
sprite->invisible = TRUE;
sprite->data[0]++;
// fallthrough
@@ -3970,20 +3972,20 @@ static void sub_8106230(struct Sprite *sprite)
sprite->data[2] = 0xd0;
if (sprite->data[3] < 0xd0)
sprite->data[3] = 0xd0;
- eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ sSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
if (sprite->data[1] > 0x33)
{
sprite->data[0]++;
- eSlotMachine->winIn = 0x3f;
+ sSlotMachine->winIn = 0x3f;
}
break;
case 2:
- if (eSlotMachine->bet == 0)
+ if (sSlotMachine->bet == 0)
break;
sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0);
- eSlotMachine->win0h = 0xc0e0;
- eSlotMachine->win0v = 0x6880;
- eSlotMachine->winIn = 0x2f;
+ sSlotMachine->win0h = 0xc0e0;
+ sSlotMachine->win0v = 0x6880;
+ sSlotMachine->winIn = 0x2f;
sprite->data[0]++;
sprite->data[1] = 0;
// fallthrough
@@ -3995,11 +3997,11 @@ static void sub_8106230(struct Sprite *sprite)
sprite->data[2] = 0xd0;
if (sprite->data[3] < 0xd0)
sprite->data[3] = 0xd0;
- eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
+ sSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
if (sprite->data[1] > 0x0f)
{
sprite->data[0]++;
- eSlotMachine->winIn = 0x3f;
+ sSlotMachine->winIn = 0x3f;
}
break;
}
@@ -4023,10 +4025,10 @@ static void sub_8106370(void)
static void sub_810639C(void)
{
- eSlotMachine->win0h = 0xf0;
- eSlotMachine->win0v = 0xa0;
- eSlotMachine->winIn = 0x3f;
- eSlotMachine->winOut = 0x3f;
+ sSlotMachine->win0h = 0xf0;
+ sSlotMachine->win0v = 0xa0;
+ sSlotMachine->winIn = 0x3f;
+ sSlotMachine->winOut = 0x3f;
}
static const u8 sReelTimeGfx[];
@@ -5612,7 +5614,7 @@ static void debug_sub_811B2E8(void)
{
u8 text[2];
- ConvertIntToDecimalStringN(text, eSlotMachine->unk01 + 1, 2, 1);
+ ConvertIntToDecimalStringN(text, sSlotMachine->unk01 + 1, 2, 1);
Menu_PrintText(text, 6, 1);
}
@@ -5664,7 +5666,7 @@ void debug_sub_811B310(void)
Menu_PrintText(Str_841B23B, 15, 13);
Menu_PrintText(Str_841B23F, 15, 15);
Menu_PrintText(Str_841B243, 15, 17);
- if (eSlotMachine->unk03 == 0)
+ if (sSlotMachine->unk03 == 0)
Menu_PrintText(Str_841B246, 10, 9);
else
Menu_PrintText(Str_841B249, 10, 9);
@@ -5673,23 +5675,23 @@ void debug_sub_811B310(void)
ConvertIntToDecimalStringN(text, n, 2, 4); \
Menu_PrintText(text, x, y);
- PRINT_NUMBER(eSlotMachine->unk68, 10, 3);
- PRINT_NUMBER(eSlotMachine->unk6C, 10, 5);
- PRINT_NUMBER(eSlotMachine->unk10, 10, 7);
+ PRINT_NUMBER(sSlotMachine->unk68, 10, 3);
+ PRINT_NUMBER(sSlotMachine->unk6C, 10, 5);
+ PRINT_NUMBER(sSlotMachine->unk10, 10, 7);
#if DEBUG_FIX
#define OFFSET 24 // wider window
#else
#define OFFSET 20
#endif
- PRINT_NUMBER(eSlotMachine->unk70, OFFSET, 3);
- PRINT_NUMBER(eSlotMachine->unk74, OFFSET, 5);
- PRINT_NUMBER(eSlotMachine->unk78, OFFSET, 7);
- PRINT_NUMBER(eSlotMachine->unk7C, OFFSET, 9);
- PRINT_NUMBER(eSlotMachine->unk80, OFFSET, 11);
- PRINT_NUMBER(eSlotMachine->unk84, OFFSET, 13);
- PRINT_NUMBER(eSlotMachine->unk88, OFFSET, 15);
- PRINT_NUMBER(eSlotMachine->unk8C, OFFSET, 17);
+ PRINT_NUMBER(sSlotMachine->unk70, OFFSET, 3);
+ PRINT_NUMBER(sSlotMachine->unk74, OFFSET, 5);
+ PRINT_NUMBER(sSlotMachine->unk78, OFFSET, 7);
+ PRINT_NUMBER(sSlotMachine->unk7C, OFFSET, 9);
+ PRINT_NUMBER(sSlotMachine->unk80, OFFSET, 11);
+ PRINT_NUMBER(sSlotMachine->unk84, OFFSET, 13);
+ PRINT_NUMBER(sSlotMachine->unk88, OFFSET, 15);
+ PRINT_NUMBER(sSlotMachine->unk8C, OFFSET, 17);
#undef OFFSET
#undef PRINT_NUMBER
@@ -5739,17 +5741,17 @@ static void debug_sub_811B5D0(void)
unk_debug_bss_1_2 = 0;
unk_debug_bss_1_3 = 0;
unk_debug_bss_1_4 = 0;
- eSlotMachine->unk68 = 0;
- eSlotMachine->unk6C = 0;
- eSlotMachine->unk70 = 0;
- eSlotMachine->unk74 = 0;
- eSlotMachine->unk78 = 0;
- eSlotMachine->unk7C = 0;
- eSlotMachine->unk80 = 0;
- eSlotMachine->unk84 = 0;
- eSlotMachine->unk88 = 0;
- eSlotMachine->unk8C = 0;
- eSlotMachine->unk90 = 0;
+ sSlotMachine->unk68 = 0;
+ sSlotMachine->unk6C = 0;
+ sSlotMachine->unk70 = 0;
+ sSlotMachine->unk74 = 0;
+ sSlotMachine->unk78 = 0;
+ sSlotMachine->unk7C = 0;
+ sSlotMachine->unk80 = 0;
+ sSlotMachine->unk84 = 0;
+ sSlotMachine->unk88 = 0;
+ sSlotMachine->unk8C = 0;
+ sSlotMachine->unk90 = 0;
}
static void debug_sub_811B620(void)
@@ -5803,17 +5805,17 @@ static void debug_sub_811B654(u8 taskId)
}
if (gMain.newKeys & 0x20)
{
- eSlotMachine->unk01--;
- if ((s8)eSlotMachine->unk01 < 0) // Why? It's unsigned
- eSlotMachine->unk01 = 5;
+ sSlotMachine->unk01--;
+ if ((s8)sSlotMachine->unk01 < 0) // Why? It's unsigned
+ sSlotMachine->unk01 = 5;
debug_sub_811B2E8();
break;
}
if (gMain.newKeys & 0x10)
{
- eSlotMachine->unk01++;
- if (eSlotMachine->unk01 > 5)
- eSlotMachine->unk01 = 0;
+ sSlotMachine->unk01++;
+ if (sSlotMachine->unk01 > 5)
+ sSlotMachine->unk01 = 0;
debug_sub_811B2E8();
break;
}
@@ -5859,30 +5861,30 @@ static void debug_sub_811B654(u8 taskId)
case 3:
if (gMain.newAndRepeatedKeys & 0x80)
{
- eSlotMachine->coins += 100;
- if (eSlotMachine->coins > 9999)
- eSlotMachine->coins = 9999;
+ sSlotMachine->coins += 100;
+ if (sSlotMachine->coins > 9999)
+ sSlotMachine->coins = 9999;
break;
}
if (gMain.newAndRepeatedKeys & 0x40)
{
- eSlotMachine->coins -= 100;
- if (eSlotMachine->coins <= 0)
- eSlotMachine->coins = 9999;
+ sSlotMachine->coins -= 100;
+ if (sSlotMachine->coins <= 0)
+ sSlotMachine->coins = 9999;
break;
}
if (gMain.newAndRepeatedKeys & 0x20)
{
- eSlotMachine->coins -= 1000;
- if (eSlotMachine->coins <= 0)
- eSlotMachine->coins = 9999;
+ sSlotMachine->coins -= 1000;
+ if (sSlotMachine->coins <= 0)
+ sSlotMachine->coins = 9999;
break;
}
if (gMain.newAndRepeatedKeys & 0x10)
{
- eSlotMachine->coins += 1000;
- if (eSlotMachine->coins > 9999)
- eSlotMachine->coins = 9999;
+ sSlotMachine->coins += 1000;
+ if (sSlotMachine->coins > 9999)
+ sSlotMachine->coins = 9999;
break;
}
if (gMain.newKeys & B_BUTTON)
@@ -5901,31 +5903,31 @@ static const u8 Str_841B2E4[] = DTR("·ボーナスこやくの エラーが
static void debug_sub_811B894(void)
{
- if (eSlotMachine->matchedSymbols & 0x180)
+ if (sSlotMachine->matchedSymbols & 0x180)
{
- eSlotMachine->unk90++;
- if (eSlotMachine->unk90 > 9999)
- eSlotMachine->unk90 = 9999;
- if (eSlotMachine->unk90 != eSlotMachine->unk88)
+ sSlotMachine->unk90++;
+ if (sSlotMachine->unk90 > 9999)
+ sSlotMachine->unk90 = 9999;
+ if (sSlotMachine->unk90 != sSlotMachine->unk88)
{
Menu_PrintText(Str_841B2B0, 4, 15);
unk_debug_bss_1_4 = 0;
}
- if (!(eSlotMachine->unk04 & 0x80))
+ if (!(sSlotMachine->unk04 & 0x80))
{
Menu_PrintText(Str_841B2D3, 4, 17);
unk_debug_bss_1_4 = 0;
}
}
- else if (eSlotMachine->matchedSymbols != 0)
+ else if (sSlotMachine->matchedSymbols != 0)
{
- if ((eSlotMachine->unk04 & 0x80) && !(eSlotMachine->matchedSymbols & 3))
+ if ((sSlotMachine->unk04 & 0x80) && !(sSlotMachine->matchedSymbols & 3))
{
Menu_PrintText(Str_841B2E4, 4, 2);
unk_debug_bss_1_4 = 0;
}
}
- if (eSlotMachine->matchedSymbols == 0 && eSlotMachine->bet == 3 && !(eSlotMachine->unk04 & 0x80))
+ if (sSlotMachine->matchedSymbols == 0 && sSlotMachine->bet == 3 && !(sSlotMachine->unk04 & 0x80))
{
u8 sym_0_1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
u8 sym_0_2 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
diff --git a/src/sprite.c b/src/sprite.c
index b26fe2d12..46d5b32aa 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -170,8 +170,10 @@ static const struct Sprite sDummySprite =
.template = &gDummySpriteTemplate,
.subspriteTables = NULL,
.callback = SpriteCallbackDummy,
- .pos1 = { 304, 160 },
- .pos2 = { 0, 0 },
+ .x = 304,
+ .y = 160,
+ .x2 = 0,
+ .y2 = 0,
.centerToCornerVecX = 0,
.centerToCornerVecY = 0,
.animNum = 0,
@@ -359,13 +361,13 @@ static void UpdateOamCoords(void)
{
if (sprite->coordOffsetEnabled)
{
- sprite->oam.x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- sprite->oam.y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ sprite->oam.x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ sprite->oam.y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
}
else
{
- sprite->oam.x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- sprite->oam.y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ sprite->oam.x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
+ sprite->oam.y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
}
}
}
@@ -565,8 +567,8 @@ static u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x,
sprite->affineAnims = template->affineAnims;
sprite->template = template;
sprite->callback = template->callback;
- sprite->pos1.x = x;
- sprite->pos1.y = y;
+ sprite->x = x;
+ sprite->y = y;
CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 4e430015e..0a0b0577b 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -17,7 +17,7 @@
#include "scanline_effect.h"
extern u16 gSpecialVar_Result;
-extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct SpriteTemplate gCreatingSpriteTemplate;
//--------------------------------------------------
// Graphics Data
@@ -414,8 +414,8 @@ static void Task_StarterChoose2(u8 taskId)
static void Task_StarterChoose3(u8 taskId)
{
if (gSprites[gTasks[taskId].tCircleSpriteId].affineAnimEnded &&
- gSprites[gTasks[taskId].tCircleSpriteId].pos1.x == STARTER_PKMN_POS_X &&
- gSprites[gTasks[taskId].tCircleSpriteId].pos1.y == STARTER_PKMN_POS_Y)
+ gSprites[gTasks[taskId].tCircleSpriteId].x == STARTER_PKMN_POS_X &&
+ gSprites[gTasks[taskId].tCircleSpriteId].y == STARTER_PKMN_POS_Y)
{
gTasks[taskId].func = Task_StarterChoose4;
}
@@ -714,11 +714,11 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
DecompressPicFromTable_2(
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,
- gUnknown_081FAF4C[0], gUnknown_081FAF4C[1],
+ gMonSpriteGfx_Sprite_ptr[0], gMonSpriteGfx_Sprite_ptr[1],
species);
LoadCompressedObjectPalette(&gMonPaletteTable[species]);
GetMonSpriteTemplate_803C56C(species, 1);
- spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
+ spriteId = CreateSprite(&gCreatingSpriteTemplate, x, y, 0);
gSprites[spriteId].callback = nullsub_72;
gSprites[spriteId].oam.priority = 0;
return spriteId;
@@ -727,9 +727,9 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
//Sprite callback
static void sub_810A62C(struct Sprite *sprite)
{
- sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][0];
- sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][1];
- sprite->pos2.y = Sin(sprite->data[1], 8);
+ sprite->x = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][0];
+ sprite->y = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][1];
+ sprite->y2 = Sin(sprite->data[1], 8);
sprite->data[1] = (u8)sprite->data[1] + 4;
}
@@ -746,12 +746,12 @@ static void sub_810A68C(struct Sprite *sprite)
static void StarterPokemonSpriteAnimCallback(struct Sprite *sprite)
{
//Move sprite to upper center of screen
- if (sprite->pos1.x > STARTER_PKMN_POS_X)
- sprite->pos1.x -= 4;
- if (sprite->pos1.x < STARTER_PKMN_POS_X)
- sprite->pos1.x += 4;
- if (sprite->pos1.y > STARTER_PKMN_POS_Y)
- sprite->pos1.y -= 2;
- if (sprite->pos1.y < STARTER_PKMN_POS_Y)
- sprite->pos1.y += 2;
+ if (sprite->x > STARTER_PKMN_POS_X)
+ sprite->x -= 4;
+ if (sprite->x < STARTER_PKMN_POS_X)
+ sprite->x += 4;
+ if (sprite->y > STARTER_PKMN_POS_Y)
+ sprite->y -= 2;
+ if (sprite->y < STARTER_PKMN_POS_Y)
+ sprite->y += 2;
}
diff --git a/src/text.c b/src/text.c
index d963045df..a5a78b430 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1480,7 +1480,7 @@ const struct WindowTemplate gWindowTemplate_81E7144 =
BG_SCREEN_ADDR(31), // tilemap
};
-const struct WindowTemplate gWindowTemplate_81E7160 =
+const struct WindowTemplate gWindowTemplate_ContestPainting =
{
1, // BG number
1, // BG character base block
@@ -2019,7 +2019,7 @@ void Text_SetWindowText(struct Window *win, const u8 *text)
win->delayCounter = 0;
}
-void Text_InitWindow8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top)
+void Contest_StartTextPrinter(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top)
{
gMain.watchedKeysMask = A_BUTTON | B_BUTTON;
gMain.watchedKeysPressed = 0;
@@ -2546,7 +2546,7 @@ u8 Text_UpdateWindowAutoscroll(struct Window *win)
return retVal;
}
-u8 Text_UpdateWindowInContest(struct Window *win)
+u8 Contest_RunTextPrinter(struct Window *win)
{
u8 retVal;
diff --git a/src/text_window.c b/src/text_window.c
index ade349f4e..6d2900845 100644
--- a/src/text_window.c
+++ b/src/text_window.c
@@ -205,7 +205,7 @@ u16 TextWindow_SetDlgFrameBaseTileNum(u16 baseTileNum)
void unref_sub_80651DC(struct Window *win, u8 *text)
{
- Text_InitWindow8002EB0(win, text, sDialogueFrameBaseTileNum + 14, 2, 15);
+ Contest_StartTextPrinter(win, text, sDialogueFrameBaseTileNum + 14, 2, 15);
}
// Loads and draws a dialogue window frame
diff --git a/src/title_screen.c b/src/title_screen.c
index b4aa9f8ed..833f76cec 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -369,7 +369,7 @@ void SpriteCallback_VersionBannerLeft(struct Sprite *sprite)
if (task->data[1] != 0)
{
sprite->oam.objMode = 0;
- sprite->pos1.y = VERSION_BANNER_Y_GOAL;
+ sprite->y = VERSION_BANNER_Y_GOAL;
sprite->invisible = FALSE;
}
else
@@ -379,8 +379,8 @@ void SpriteCallback_VersionBannerLeft(struct Sprite *sprite)
if (task->data[5] < 64)
{
sprite->invisible = FALSE;
- if (sprite->pos1.y != VERSION_BANNER_Y_GOAL)
- sprite->pos1.y++;
+ if (sprite->y != VERSION_BANNER_Y_GOAL)
+ sprite->y++;
REG_BLDALPHA = gUnknown_08393E64[task->data[5] / 2];
}
}
@@ -393,7 +393,7 @@ void SpriteCallback_VersionBannerRight(struct Sprite *sprite)
if (task->data[1] != 0)
{
sprite->oam.objMode = 0;
- sprite->pos1.y = VERSION_BANNER_Y_GOAL;
+ sprite->y = VERSION_BANNER_Y_GOAL;
sprite->invisible = FALSE;
}
else
@@ -401,8 +401,8 @@ void SpriteCallback_VersionBannerRight(struct Sprite *sprite)
if (task->data[5] < 64)
{
sprite->invisible = FALSE;
- if (sprite->pos1.y != VERSION_BANNER_Y_GOAL)
- sprite->pos1.y++;
+ if (sprite->y != VERSION_BANNER_Y_GOAL)
+ sprite->y++;
}
}
}
@@ -556,13 +556,13 @@ static void CreateCopyrightBanner(s16 x, s16 y)
void SpriteCallback_PokemonLogoShine(struct Sprite *sprite)
{
- if (gTasks[gUnknown_0202F7E4].data[1] == 0 && sprite->pos1.x < 272)
+ if (gTasks[gUnknown_0202F7E4].data[1] == 0 && sprite->x < 272)
{
if (sprite->data[0]) //Flash background
{
u16 backgroundColor;
- if (sprite->pos1.x < DISPLAY_WIDTH / 2)
+ if (sprite->x < DISPLAY_WIDTH / 2)
{
//Brighten background color
if (sprite->data[1] < 31)
@@ -582,7 +582,7 @@ void SpriteCallback_PokemonLogoShine(struct Sprite *sprite)
gPlttBufferFaded[0] = backgroundColor;
gPlttBufferFaded[PLTT_BUFFER_INDEX] = backgroundColor;
}
- sprite->pos1.x += 4;
+ sprite->x += 4;
}
else
{
diff --git a/src/trade.c b/src/trade.c
index aeb77dd58..8433d087f 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1150,9 +1150,9 @@ static void sub_8047EC0(void)
gUnknown_03004824->partyCounts[0] = gPlayerPartyCount;
gUnknown_03004824->partyCounts[1] = gEnemyPartyCount;
for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++)
- gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY));
+ gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2), SpriteCB_PokemonIcon, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY));
for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++)
- gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY));
+ gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), SpriteCB_PokemonIcon, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY));
nullsub_5(2, 0);
gMain.state ++;
break;
@@ -1300,9 +1300,9 @@ static void sub_80484F4(void)
sub_804A41C(0);
sub_804A41C(1);
for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++)
- gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY));
+ gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL), SpriteCB_PokemonIcon, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY));
for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++)
- gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY));
+ gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), SpriteCB_PokemonIcon, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY));
nullsub_5(2, 0);
gMain.state ++;
break;
@@ -1406,7 +1406,7 @@ static void sub_80489F4(void)
{
gUnknown_020297D8[0] = gUnknown_03004824->tradeMenuCursorPosition;
gUnknown_020297D8[1] = gUnknown_03004824->unk_008a;
- sub_800832C();
+ SetCloseLinkCallback();
gUnknown_03004824->unk_007b = 13;
}
}
@@ -1838,14 +1838,14 @@ static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction)
if (newPosition == 12) // CANCEL
{
StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 1);
- gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = 0xe0;
- gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = 0xa0;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].x = 0xe0;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].y = 0xa0;
}
else
{
StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 0);
- gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32;
- gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].y = gTradeMonSpriteCoords[newPosition][1] * 8;
}
if (*tradeMenuCursorPosition != newPosition)
{
@@ -2158,7 +2158,7 @@ static void sub_8049D9C(void)
{
if (!gPaletteFade.active)
{
- sub_800832C();
+ SetCloseLinkCallback();
gUnknown_03004824->unk_007b = 12;
}
}
@@ -2259,7 +2259,7 @@ static void sub_8049ED4(u8 a0)
gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data[0] = 20;
gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data[2] = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14;
gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].data[4] = gTradeMonSpriteCoords[6 * whichParty + whichPokemon][1] * 8 - 12;
- StoreSpriteCallbackInData(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C);
+ StoreSpriteCallbackInData(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], SpriteCB_PokemonIcon);
gUnknown_03004824->unk_0080[a0] ++;
sub_8078A34(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]]);
Menu_DestroyCursor();
@@ -2271,17 +2271,17 @@ static void sub_8049ED4(u8 a0)
}
break;
case 2:
- if (gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].callback == sub_809D62C)
+ if (gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].callback == SpriteCB_PokemonIcon)
{
gUnknown_03004824->unk_0080[a0] = 3;
}
break;
case 3:
sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * whichParty, 0, gTradePartyBoxTilemap, 15, 17, 0);
- gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.x = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14;
- gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][1] * 8 - 12;
- gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.x = 0;
- gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.y = 0;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].x = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].y = gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][1] * 8 - 12;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].x2 = 0;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].y2 = 0;
stringLength = sub_804A2B4(string1 + 6, whichParty, whichPokemon);
string1[0] = 0xFC;
string1[1] = 0x06;
@@ -2472,7 +2472,7 @@ static void sub_8049ED4(u8 a0)
"\tadds r0, r1\n"
"\tlsls r0, 2\n"
"\tadds r0, r7\n"
- "\tldr r1, _0804A0A0 @ =sub_809D62C\n"
+ "\tldr r1, _0804A0A0 @ =SpriteCB_PokemonIcon\n"
"\tbl StoreSpriteCallbackInData\n"
"\tldr r2, _0804A09C @ =gUnknown_03004824\n"
"\tldr r1, [r2]\n"
@@ -2535,7 +2535,7 @@ static void sub_8049ED4(u8 a0)
"_0804A094: .4byte gSprites\n"
"_0804A098: .4byte gTradeMonSpriteCoords\n"
"_0804A09C: .4byte gUnknown_03004824\n"
- "_0804A0A0: .4byte sub_809D62C\n"
+ "_0804A0A0: .4byte SpriteCB_PokemonIcon\n"
"_0804A0A4: .4byte gUnknown_0820C330\n"
"_0804A0A8: .4byte gTradePartyBoxTilemap\n"
"_0804A0AC:\n"
@@ -2555,7 +2555,7 @@ static void sub_8049ED4(u8 a0)
"\tadds r2, 0x1C\n"
"\tadds r0, r2\n"
"\tldr r1, [r0]\n"
- "\tldr r0, _0804A0E0 @ =sub_809D62C\n"
+ "\tldr r0, _0804A0E0 @ =SpriteCB_PokemonIcon\n"
"\tcmp r1, r0\n"
"\tbeq _0804A0D4\n"
"\tb _0804A294\n"
@@ -2565,7 +2565,7 @@ static void sub_8049ED4(u8 a0)
"\tb _0804A294\n"
"\t.align 2, 0\n"
"_0804A0DC: .4byte gSprites\n"
- "_0804A0E0: .4byte sub_809D62C\n"
+ "_0804A0E0: .4byte SpriteCB_PokemonIcon\n"
"_0804A0E4:\n"
"\tadds r0, r5, 0\n"
"\tadds r0, 0xC8\n"
@@ -3062,10 +3062,10 @@ static void sub_804A740(u8 whichParty)
for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++)
{
gSprites[gUnknown_03004824->partyIcons[whichParty][i]].invisible = FALSE;
- gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.x = gTradeMonSpriteCoords[6 * whichParty + i][0] * 8 + 14;
- gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + i][1] * 8 - 12;
- gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.x = 0;
- gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.y = 0;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].x = gTradeMonSpriteCoords[6 * whichParty + i][0] * 8 + 14;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].y = gTradeMonSpriteCoords[6 * whichParty + i][1] * 8 - 12;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].x2 = 0;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].y2 = 0;
}
}
@@ -3346,7 +3346,7 @@ static void sub_804AF10(void)
{
for (j = 0; j < gUnknown_03004824->partyCounts[i]; j ++)
{
- sub_809D824(&gSprites[gUnknown_03004824->partyIcons[i][j]], 4 - gUnknown_03004824->unk_0069[i][j]);
+ SetPartyHPBarSprite(&gSprites[gUnknown_03004824->partyIcons[i][j]], 4 - gUnknown_03004824->unk_0069[i][j]);
}
}
}
@@ -3397,7 +3397,7 @@ static void sub_804B07C(struct Sprite *sprite)
static void sub_804B0BC(struct Sprite *sprite)
{
sprite->data[0] ++;
- sprite->pos2.y ++;
+ sprite->y2 ++;
if (sprite->data[0] == 10)
DestroySprite(sprite);
}
@@ -3405,7 +3405,7 @@ static void sub_804B0BC(struct Sprite *sprite)
static void sub_804B0E0(struct Sprite *sprite)
{
sprite->data[0] ++;
- sprite->pos2.y --;
+ sprite->y2 --;
if (sprite->data[0] == 10)
DestroySprite(sprite);
}
@@ -3522,13 +3522,13 @@ static void sub_804B2D0(u8 whichParty, u8 a1)
case 0:
species = GetMonData(pokemon, MON_DATA_SPECIES2);
personality = GetMonData(pokemon, MON_DATA_PERSONALITY);
- HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gSharedMem, gUnknown_081FAF4C[whichParty * 2 + 1], species, personality);
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, gSharedMem, gMonSpriteGfx_Sprite_ptr[whichParty * 2 + 1], species, personality);
LoadCompressedObjectPalette(GetMonSpritePalStruct(pokemon));
gUnknown_03004828->tradeSpecies[whichParty] = species;
break;
case 1:
GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(pokemon)->tag, v0);
- gUnknown_03004828->pokePicSpriteIdxs[whichParty] = CreateSprite(&gUnknown_02024E8C, 0x78, 0x3c, 0x6);
+ gUnknown_03004828->pokePicSpriteIdxs[whichParty] = CreateSprite(&gCreatingSpriteTemplate, 0x78, 0x3c, 0x6);
gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].invisible = TRUE;
gSprites[gUnknown_03004828->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy;
break;
@@ -4352,8 +4352,8 @@ static bool8 sub_804C29C(void)
{
case 0:
gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = -0xb4;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[0]].y_offset;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].x2 = -0xb4;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].y2 = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[0]].y_offset;
gUnknown_03004828->unk_00c4 ++;
gUnknown_03004828->unk_0124 = GetCurrentMapMusic();
PlayBGM(MUS_EVOLUTION);
@@ -4361,12 +4361,12 @@ static bool8 sub_804C29C(void)
case 1:
if (gUnknown_03004828->bg2hofs > 0)
{
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x += 3;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].x2 += 3;
gUnknown_03004828->bg2hofs -= 3;
}
else
{
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = 0;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].x2 = 0;
gUnknown_03004828->bg2hofs = 0;
gUnknown_03004828->unk_00c4 = 10;
}
@@ -4479,10 +4479,10 @@ static bool8 sub_804C29C(void)
REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
break;
case 200:
- gSprites[gUnknown_03004828->unk_00ba].pos1.y -= 2;
- gSprites[gUnknown_03004828->unk_00bb].pos1.y -= 2;
+ gSprites[gUnknown_03004828->unk_00ba].y -= 2;
+ gSprites[gUnknown_03004828->unk_00bb].y -= 2;
sub_804C0F8(0);
- if (gSprites[gUnknown_03004828->unk_00ba].pos1.y < -8)
+ if (gSprites[gUnknown_03004828->unk_00ba].y < -8)
{
gUnknown_03004828->unk_00c4 = 29;
}
@@ -4512,13 +4512,13 @@ static bool8 sub_804C29C(void)
PlaySE(SE_WARP_OUT);
gUnknown_03004828->unk_00c4 ++;
}
- gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3;
- gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
+ gSprites[gUnknown_03004828->unk_00ba].y2 -= 3;
+ gSprites[gUnknown_03004828->unk_00bb].y2 += 3;
break;
case 33:
- gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3;
- gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
- if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0x5a)
+ gSprites[gUnknown_03004828->unk_00ba].y2 -= 3;
+ gSprites[gUnknown_03004828->unk_00bb].y2 += 3;
+ if (gSprites[gUnknown_03004828->unk_00ba].y2 <= -0x5a)
{
gSprites[gUnknown_03004828->unk_00ba].data[1] = 1;
gSprites[gUnknown_03004828->unk_00bb].data[1] = 1;
@@ -4550,22 +4550,22 @@ static bool8 sub_804C29C(void)
StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0);
}
StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]], 0);
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.x = 0x3c;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0xb4;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.y = 0xc0;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = -0x20;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].x = 0x3c;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].x = 0xb4;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].y = 0xc0;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].y = -0x20;
gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE;
gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = FALSE;
gUnknown_03004828->unk_00c4 ++;
break;
case 38:
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y -= 3;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y += 3;
- if (-0xa0 > gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y && gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y >= -0xa3)
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].y2 -= 3;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].y2 += 3;
+ if (-0xa0 > gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].y2 && gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].y2 >= -0xa3)
{
PlaySE(SE_WARP_IN);
}
- if (gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y < -0xde)
+ if (gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].y2 < -0xde)
{
gSprites[gUnknown_03004828->unk_00ba].data[1] = 0;
gSprites[gUnknown_03004828->unk_00bb].data[1] = 0;
@@ -4576,9 +4576,9 @@ static bool8 sub_804C29C(void)
}
break;
case 39:
- gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3;
- gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
- if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0xde)
+ gSprites[gUnknown_03004828->unk_00ba].y2 -= 3;
+ gSprites[gUnknown_03004828->unk_00bb].y2 += 3;
+ if (gSprites[gUnknown_03004828->unk_00ba].y2 <= -0xde)
{
BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB(0, 0, 0));
gUnknown_03004828->unk_00c4 ++;
@@ -4611,9 +4611,9 @@ static bool8 sub_804C29C(void)
break;
case 43:
sub_804C0F8(1);
- gSprites[gUnknown_03004828->unk_00ba].pos2.y += 3;
- gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
- if (gSprites[gUnknown_03004828->unk_00ba].pos2.y + gSprites[gUnknown_03004828->unk_00ba].pos1.y == 64)
+ gSprites[gUnknown_03004828->unk_00ba].y2 += 3;
+ gSprites[gUnknown_03004828->unk_00bb].y2 += 3;
+ if (gSprites[gUnknown_03004828->unk_00ba].y2 + gSprites[gUnknown_03004828->unk_00ba].y == 64)
{
gUnknown_03004828->unk_00c4 ++;
}
@@ -4719,10 +4719,10 @@ static bool8 sub_804C29C(void)
}
break;
case 66:
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0x78;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[1]].y_offset + 60;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.x = 0;
- gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y = 0;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].x = 0x78;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[1]].y_offset + 60;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].x2 = 0;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].y2 = 0;
CreatePokeballSprite(gUnknown_03004828->pokePicSpriteIdxs[1], gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].oam.paletteNum, 0x78, 0x54, 2, 1, 0x14, 0xfffff);
FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->unk_0103]);
DestroySprite(&gSprites[gUnknown_03004828->unk_0103]);
@@ -4849,16 +4849,16 @@ static void sub_804D63C(void)
static void sub_804D6BC(struct Sprite *sprite)
{
- sprite->pos1.y += sprite->data[0] / 10;
+ sprite->y += sprite->data[0] / 10;
sprite->data[5] += sprite->data[1];
- sprite->pos1.x = sprite->data[5] / 10;
- if (sprite->pos1.y > 0x4c)
+ sprite->x = sprite->data[5] / 10;
+ if (sprite->y > 0x4c)
{
- sprite->pos1.y = 0x4c;
+ sprite->y = 0x4c;
sprite->data[0] = -(sprite->data[0] * sprite->data[2]) / 100;
sprite->data[3] ++;
}
- if (sprite->pos1.x == 0x78)
+ if (sprite->x == 0x78)
sprite->data[1] = 0;
sprite->data[0] += sprite->data[4];
if (sprite->data[3] == 4)
@@ -4870,7 +4870,7 @@ static void sub_804D6BC(struct Sprite *sprite)
static void sub_804D738(struct Sprite *sprite)
{
- sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->y2 += gTradeBallVerticalVelocityTable[sprite->data[0]];
if (sprite->data[0] == 22)
PlaySE(SE_BALL_BOUNCE_1);
if (++ sprite->data[0] == 44)
@@ -4888,7 +4888,7 @@ static void sub_804D7AC(struct Sprite *sprite)
StartSpriteAffineAnim(sprite, 1);
if (++ sprite->data[1] > 20)
{
- sprite->pos2.y -= gTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->y2 -= gTradeBallVerticalVelocityTable[sprite->data[0]];
if (++ sprite->data[0] == 23)
{
DestroySprite(sprite);
@@ -4901,7 +4901,7 @@ static void sub_804D80C(struct Sprite *sprite)
{
if (sprite->data[2] == 0)
{
- if ((sprite->pos1.y += 4) > sprite->data[3])
+ if ((sprite->y += 4) > sprite->data[3])
{
sprite->data[2] ++;
sprite->data[0] = 0x16;
@@ -4916,7 +4916,7 @@ static void sub_804D80C(struct Sprite *sprite)
PlaySE(SE_BALL_BOUNCE_3);
if (sprite->data[0] == 0x6b)
PlaySE(SE_BALL_BOUNCE_4);
- sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->y2 += gTradeBallVerticalVelocityTable[sprite->data[0]];
if (++sprite->data[0] == 0x6c)
sprite->callback = SpriteCallbackDummy;
}
@@ -5168,7 +5168,7 @@ static void sub_804DC88(void)
case 8:
if (IsBGMStopped() == TRUE)
{
- sub_800832C();
+ SetCloseLinkCallback();
gMain.state ++;
}
break;
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 0e44c7cfc..afd7a8d03 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -1,7 +1,10 @@
#include "global.h"
#include "trainer_card.h"
+#include "constants/songs.h"
+#include "contest_util.h"
#include "easy_chat.h"
#include "event_data.h"
+#include "ewram.h"
#include "field_effect.h"
#include "graphics.h"
#include "link.h"
@@ -9,19 +12,16 @@
#include "main.h"
#include "menu.h"
#include "money.h"
+#include "overworld.h"
#include "palette.h"
#include "pokedex.h"
-#include "overworld.h"
-#include "script_pokemon_80C4.h"
-#include "constants/songs.h"
+#include "scanline_effect.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
#include "strings2.h"
#include "task.h"
-#include "scanline_effect.h"
#include "util.h"
-#include "ewram.h"
typedef void (*Callback)(void);
@@ -60,8 +60,8 @@ extern const u16 gUnknown_083B5F6C[];
extern const u16 gTrainerCardBadgesMap[][4];
const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp");
-// XXX: what is this?
-u8 *const ewram_ = gSharedMem;
+
+struct Struct2000000 * const gTrainerCardPtr = (struct Struct2000000 *)gSharedMem;
#if DEBUG
const struct TrainerCard sTestTrainerCard =
@@ -215,7 +215,7 @@ void TrainerCard_ShowPlayerCard(Callback arg1)
#endif
TrainerCard_InitScreenForPlayer(arg1);
SetMainCallback2(sub_8093174);
- ewram0_2.language = GAME_LANGUAGE;
+ gTrainerCardPtr->language = GAME_LANGUAGE;
}
void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2)
@@ -225,7 +225,7 @@ void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2)
#endif
TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2);
SetMainCallback2(sub_8093174);
- ewram0_2.language = gLinkPlayers[gLinkPlayerObjectEvents[playerIndex].linkPlayerId].language;
+ gTrainerCardPtr->language = gLinkPlayers[gLinkPlayerObjectEvents[playerIndex].linkPlayerId].language;
}
#if DEBUG
@@ -234,7 +234,7 @@ void debug_sub_80A0710(Callback callback)
gDebug_03000748 = TRUE;
TrainerCard_InitScreenForPlayer(callback);
SetMainCallback2(sub_8093174);
- ewram0_2.language = GAME_LANGUAGE;
+ gTrainerCardPtr->language = GAME_LANGUAGE;
}
void debug_sub_80A073C(Callback callback)
@@ -243,7 +243,7 @@ void debug_sub_80A073C(Callback callback)
gDebug_03000748=TRUE;
TrainerCard_InitScreenForLinkPlayer(0, callback);
SetMainCallback2(sub_8093174);
- ewram0_2.language = GAME_LANGUAGE;
+ gTrainerCardPtr->language = GAME_LANGUAGE;
}
void debug_sub_80A0780()
@@ -314,13 +314,13 @@ static void sub_8093254(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- ewram0_2.frameCounter++;
- if (ewram0_2.frameCounter >= 60)
+ gTrainerCardPtr->frameCounter++;
+ if (gTrainerCardPtr->frameCounter >= 60)
{
- ewram0_2.frameCounter = 0;
- ewram0_2.showColon ^= 1;
+ gTrainerCardPtr->frameCounter = 0;
+ gTrainerCardPtr->showColon ^= 1;
}
- if (ewram0_2.var_4)
+ if (gTrainerCardPtr->var_4)
DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140);
}
@@ -346,17 +346,17 @@ void TrainerCard_FillTrainerCardStruct(void)
{
u8 taskId = FindTaskIdByFunc(nullsub_60);
struct Task *task = &gTasks[taskId];
- ewram0_2.isShowingLinkCard = task->data[TD_SHOWING_LINK_CARD];
+ gTrainerCardPtr->isShowingLinkCard = task->data[TD_SHOWING_LINK_CARD];
- LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&ewram0_2.var_60);
+ LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&gTrainerCardPtr->var_60);
- if (ewram0_2.isShowingLinkCard)
+ if (gTrainerCardPtr->isShowingLinkCard)
{
- ewram0_2.displayedCard = gTrainerCards[task->data[TD_CARD_INDEX]];
+ gTrainerCardPtr->displayedCard = gTrainerCards[task->data[TD_CARD_INDEX]];
}
else
{
- TrainerCard_GenerateCardForPlayer(&ewram0_2.displayedCard);
+ TrainerCard_GenerateCardForPlayer(&gTrainerCardPtr->displayedCard);
}
}
@@ -417,7 +417,7 @@ void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard)
}
r4 = FALSE;
- if (sub_80C4D50() > 4)
+ if (CountPlayerMuseumPaintings() > 4)
{
r4 = TRUE;
}
@@ -540,52 +540,52 @@ static void sub_8093688(void)
u8 i;
TrainerCard_FillTrainerCardStruct();
- ewram0_2.current_state = 0;
- ewram0_2.backSideShown = FALSE;
- ewram0_2.var_4 = FALSE;
- ewram0_2.starCount = ewram0_2.displayedCard.stars;
- ewram0_2.showColon = 0;
- ewram0_2.frameCounter = 0;
+ gTrainerCardPtr->current_state = 0;
+ gTrainerCardPtr->backSideShown = FALSE;
+ gTrainerCardPtr->var_4 = FALSE;
+ gTrainerCardPtr->starCount = gTrainerCardPtr->displayedCard.stars;
+ gTrainerCardPtr->showColon = 0;
+ gTrainerCardPtr->frameCounter = 0;
for (i = 0; i < 4; i++)
- EasyChat_GetWordText(ewram0_2.easyChatPhrase[i], ewram0_2.displayedCard.var_28[i]);
+ EasyChat_GetWordText(gTrainerCardPtr->easyChatPhrase[i], gTrainerCardPtr->displayedCard.var_28[i]);
TrainerCard_FillFlags();
}
static void TrainerCard_FillFlags(void)
{
- ewram0_2.showPokedexCount = 0;
- ewram0_2.showHallOfFame = 0;
- ewram0_2.showLinkBattleStatus = 0;
- ewram0_2.showBattleTowerStatus = 0;
- ewram0_2.showContestRecord = 0;
- ewram0_2.showMixingRecord = 0;
- ewram0_2.showTradingRecord = 0;
- memset(ewram0_2.ownedBadges, 0, sizeof(ewram0_2.ownedBadges));
+ gTrainerCardPtr->showPokedexCount = 0;
+ gTrainerCardPtr->showHallOfFame = 0;
+ gTrainerCardPtr->showLinkBattleStatus = 0;
+ gTrainerCardPtr->showBattleTowerStatus = 0;
+ gTrainerCardPtr->showContestRecord = 0;
+ gTrainerCardPtr->showMixingRecord = 0;
+ gTrainerCardPtr->showTradingRecord = 0;
+ memset(gTrainerCardPtr->ownedBadges, 0, sizeof(gTrainerCardPtr->ownedBadges));
- if (ewram0_2.displayedCard.hasPokedex)
- ewram0_2.showPokedexCount++;
+ if (gTrainerCardPtr->displayedCard.hasPokedex)
+ gTrainerCardPtr->showPokedexCount++;
- if (ewram0_2.displayedCard.firstHallOfFameA != 0
- || ewram0_2.displayedCard.firstHallOfFameB != 0
- || ewram0_2.displayedCard.firstHallOfFameC != 0)
- ewram0_2.showHallOfFame++;
+ if (gTrainerCardPtr->displayedCard.firstHallOfFameA != 0
+ || gTrainerCardPtr->displayedCard.firstHallOfFameB != 0
+ || gTrainerCardPtr->displayedCard.firstHallOfFameC != 0)
+ gTrainerCardPtr->showHallOfFame++;
- if (ewram0_2.displayedCard.linkBattleWins != 0 || ewram0_2.displayedCard.linkBattleLosses != 0)
- ewram0_2.showLinkBattleStatus++;
+ if (gTrainerCardPtr->displayedCard.linkBattleWins != 0 || gTrainerCardPtr->displayedCard.linkBattleLosses != 0)
+ gTrainerCardPtr->showLinkBattleStatus++;
- if (ewram0_2.displayedCard.battleTowerWins != 0 || ewram0_2.displayedCard.battleTowerLosses != 0)
- ewram0_2.showBattleTowerStatus++;
+ if (gTrainerCardPtr->displayedCard.battleTowerWins != 0 || gTrainerCardPtr->displayedCard.battleTowerLosses != 0)
+ gTrainerCardPtr->showBattleTowerStatus++;
- if (ewram0_2.displayedCard.contestsWithFriends != 0)
- ewram0_2.showContestRecord++;
+ if (gTrainerCardPtr->displayedCard.contestsWithFriends != 0)
+ gTrainerCardPtr->showContestRecord++;
- if (ewram0_2.displayedCard.pokeblocksWithFriends != 0)
- ewram0_2.showMixingRecord++;
+ if (gTrainerCardPtr->displayedCard.pokeblocksWithFriends != 0)
+ gTrainerCardPtr->showMixingRecord++;
- if (ewram0_2.displayedCard.pokemonTrades != 0)
- ewram0_2.showTradingRecord++;
+ if (gTrainerCardPtr->displayedCard.pokemonTrades != 0)
+ gTrainerCardPtr->showTradingRecord++;
- if (!ewram0_2.isShowingLinkCard)
+ if (!gTrainerCardPtr->isShowingLinkCard)
{
u32 badgeFlag;
int i = 0;
@@ -594,7 +594,7 @@ static void TrainerCard_FillFlags(void)
while (1)
{
if (FlagGet(badgeFlag))
- ewram0_2.ownedBadges[i]++;
+ gTrainerCardPtr->ownedBadges[i]++;
badgeFlag++;
i++;
if (badgeFlag > FLAG_BADGE08_GET)
@@ -607,13 +607,13 @@ static void TrainerCard_FillFlags(void)
#if DEBUG
if (gDebug_03000748 != 0)
{
- ewram0_2.showHallOfFame = TRUE;
- ewram0_2.showLinkBattleStatus = TRUE;
- ewram0_2.showBattleTowerStatus = TRUE;
- ewram0_2.showContestRecord = TRUE;
- ewram0_2.showMixingRecord = TRUE;
- ewram0_2.showTradingRecord = TRUE;
- memset(ewram0_2.ownedBadges, TRUE, sizeof(ewram0_2.ownedBadges));
+ gTrainerCardPtr->showHallOfFame = TRUE;
+ gTrainerCardPtr->showLinkBattleStatus = TRUE;
+ gTrainerCardPtr->showBattleTowerStatus = TRUE;
+ gTrainerCardPtr->showContestRecord = TRUE;
+ gTrainerCardPtr->showMixingRecord = TRUE;
+ gTrainerCardPtr->showTradingRecord = TRUE;
+ memset(gTrainerCardPtr->ownedBadges, TRUE, sizeof(gTrainerCardPtr->ownedBadges));
}
#endif
}
@@ -664,24 +664,24 @@ static void TrainerCard_CreateStateMachine(void)
static void TrainerCard_RunStateMachine(u8 taskId)
{
- while (TrainerCard_StateMachine[ewram0_2.current_state](&gTasks[taskId]) != 0)
+ while (TrainerCard_StateMachine[gTrainerCardPtr->current_state](&gTasks[taskId]) != 0)
;
}
bool8 TrainerCard_Init(struct Task *task)
{
- ewram0_2.showColon = gSaveBlock2.playTimeSeconds & 1;
- ewram0_2.frameCounter = gSaveBlock2.playTimeVBlanks;
+ gTrainerCardPtr->showColon = gSaveBlock2.playTimeSeconds & 1;
+ gTrainerCardPtr->frameCounter = gSaveBlock2.playTimeVBlanks;
TrainerCard_CreatePrintPlayTimeTask();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0));
- ewram0_2.current_state++; /* Advance state machine */
+ gTrainerCardPtr->current_state++; /* Advance state machine */
return FALSE;
}
bool8 TrainerCard_WaitForFadeInToFinish(struct Task *task)
{
if (!gPaletteFade.active)
- ewram0_2.current_state++; /* Advance state machine */
+ gTrainerCardPtr->current_state++; /* Advance state machine */
return FALSE;
}
@@ -689,7 +689,7 @@ bool8 TrainerCard_WaitForKeys(struct Task *task)
{
if (gMain.newKeys & B_BUTTON)
{
- ewram0_2.current_state = 5; /* Jump to fadeout state */
+ gTrainerCardPtr->current_state = 5; /* Jump to fadeout state */
return TRUE;
}
else if (gMain.newKeys & A_BUTTON)
@@ -697,24 +697,24 @@ bool8 TrainerCard_WaitForKeys(struct Task *task)
/* It appears that it was previously possible to return the the front side
after viewing the back side. This was probably removed due to being
unintuitive. */
- if (ewram0_2.backSideShown)
+ if (gTrainerCardPtr->backSideShown)
{
- ewram0_2.current_state = 5; /* Jump to fadeout state */
+ gTrainerCardPtr->current_state = 5; /* Jump to fadeout state */
}
else
{
- ewram0_2.backSideShown ^= 1; /* Switch to back side */
- ewram0_2.current_state = 3; /* Jump to start flip animation state */
+ gTrainerCardPtr->backSideShown ^= 1; /* Switch to back side */
+ gTrainerCardPtr->current_state = 3; /* Jump to start flip animation state */
}
return TRUE;
}
#if DEBUG
else if (gDebug_03000748 && gMain.newKeys & R_BUTTON)
{
- ewram0_2.starCount++;
- ewram0_2.starCount %= 5;
+ gTrainerCardPtr->starCount++;
+ gTrainerCardPtr->starCount %= 5;
TrainerCard_LoadPalettes();
- if (ewram0_2.backSideShown == 0)
+ if (gTrainerCardPtr->backSideShown == 0)
TrainerCard_DrawStars();
}
#endif
@@ -726,14 +726,14 @@ bool8 TrainerCard_StartFlipAntimation(struct Task *task)
{
TrainerCard_CreateFlipAnimationTask();
PlaySE(SE_CARD);
- ewram0_2.current_state++; /* Advance state machine */
+ gTrainerCardPtr->current_state++; /* Advance state machine */
return FALSE;
}
bool8 TrainerCard_WaitForFlipToFinish(struct Task *task)
{
if (TrainerCard_HasFlipAnimationFinished())
- ewram0_2.current_state = 2; /* Return to wait for keys state */
+ gTrainerCardPtr->current_state = 2; /* Return to wait for keys state */
return FALSE;
}
@@ -741,14 +741,14 @@ bool8 TrainerCard_FadeOut(struct Task *task)
{
TrainerCard_DestoryPlayTimeTask();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- ewram0_2.current_state++; /* Advance state machine */
+ gTrainerCardPtr->current_state++; /* Advance state machine */
return FALSE;
}
bool8 TrainerCard_WaitForFadeOutToFinishAndQuit(struct Task *task)
{
if (!gPaletteFade.active)
- SetMainCallback2((MainCallback)ewram0_2.var_60);
+ SetMainCallback2((MainCallback)gTrainerCardPtr->var_60);
return FALSE;
}
@@ -771,9 +771,9 @@ static void TrainerCard_Front_PrintPlayTime(u8 taskId)
u8 buffer[32];
struct Task *task = &gTasks[taskId];
- if (ewram0_2.showColon != task->data[TD_CARD_INDEX])
+ if (gTrainerCardPtr->showColon != task->data[TD_CARD_INDEX])
{
- task->data[TD_CARD_INDEX] = ewram0_2.showColon;
+ task->data[TD_CARD_INDEX] = gTrainerCardPtr->showColon;
task->data[TD_SHOWING_LINK_CARD] ^= TRUE;
}
TrainerCard_Front_GetPlayTimeString(buffer, task->data[TD_SHOWING_LINK_CARD]);
@@ -806,12 +806,12 @@ bool8 TrainerCard_InitFlipAnimation(struct Task *task)
{
u32 i;
- ewram0_2.var_4 = FALSE;
+ gTrainerCardPtr->var_4 = FALSE;
ScanlineEffect_Clear();
for (i = 0; i < 0xA0; i++)
gScanlineEffectRegBuffers[1][i] = -4;
SetHBlankCallback(TrainerCard_FlipAnimationHBlankCallback);
- ewram0_2.var_4 = TRUE;
+ gTrainerCardPtr->var_4 = TRUE;
task->data[0]++;
return FALSE;
}
@@ -821,7 +821,7 @@ bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task)
s16 i;
u32 r4, r5, r10, r7, r6, var_24, r9, var;
- ewram0_2.var_4 = FALSE;
+ gTrainerCardPtr->var_4 = FALSE;
task->data[1] += 3;
if (task->data[1] > 79)
task->data[1] = 79;
@@ -852,7 +852,7 @@ bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task)
gScanlineEffectRegBuffers[0][i] = var + -4,
i++);
- ewram0_2.var_4 = TRUE;
+ gTrainerCardPtr->var_4 = TRUE;
if (task->data[1] > 74)
task->data[0]++;
@@ -863,7 +863,7 @@ bool8 TrainerCard_SwitchToNewSide(struct Task *task)
{
TrainerCard_DestoryPlayTimeTask();
TrainerCard_DrawCard();
- if (!ewram0_2.backSideShown) {
+ if (!gTrainerCardPtr->backSideShown) {
/* This code never runs because it is impossible to flip the back side back to the front side */
TrainerCard_CreatePrintPlayTimeTask();
}
@@ -876,7 +876,7 @@ bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task)
s16 i;
u32 r4, r5, r10, r7, r6, var_24, r9, var;
- ewram0_2.var_4 = FALSE;
+ gTrainerCardPtr->var_4 = FALSE;
task->data[1] -= 3;
if (task->data[1] <= 0)
task->data[1] = 0;
@@ -907,7 +907,7 @@ bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task)
gScanlineEffectRegBuffers[0][i] = var + -4,
i++);
- ewram0_2.var_4 = TRUE;
+ gTrainerCardPtr->var_4 = TRUE;
if (task->data[1] <= 0)
task->data[0]++;
@@ -918,7 +918,7 @@ bool8 TrainerCard_FinishFlipAnimation(struct Task *task)
{
u8 taskId;
- ewram0_2.var_4 = FALSE;
+ gTrainerCardPtr->var_4 = FALSE;
SetHBlankCallback(NULL);
TrainerCard_ResetOffsetRegisters();
taskId = FindTaskIdByFunc(TrainerCard_RunFlipAnimationStateMachine);
@@ -937,7 +937,7 @@ static void TrainerCard_FlipAnimationHBlankCallback(void)
static void TrainerCard_DrawCard(void)
{
- if (ewram0_2.backSideShown)
+ if (gTrainerCardPtr->backSideShown)
TrainerCard_DrawCardBack();
else
TrainerCard_DrawCardFront();
@@ -983,23 +983,23 @@ extern const u16 *const gTrainerCardPalettes[];
static void TrainerCard_LoadPalettes(void)
{
- LoadPalette(gTrainerCardPalettes[ewram0_2.starCount], 0, 48 * 2);
+ LoadPalette(gTrainerCardPalettes[gTrainerCardPtr->starCount], 0, 48 * 2);
LoadPalette(gBadgesPalette, 48, 16 * 2);
LoadPalette(gUnknown_083B5F4C, 64, 16 * 2);
- if (ewram0_2.displayedCard.gender != MALE)
+ if (gTrainerCardPtr->displayedCard.gender != MALE)
LoadPalette(gUnknown_083B5F0C, 16, 16 * 2);
}
static void TrainerCard_LoadTrainerGraphics(void)
{
- LoadTrainerGfx_TrainerCard(ewram0_2.displayedCard.gender, 80, (void *)(VRAM + 0x1880));
+ LoadTrainerGfx_TrainerCard(gTrainerCardPtr->displayedCard.gender, 80, (void *)(VRAM + 0x1880));
}
static void TrainerCard_LoadCardTileMap(void)
{
const void *arr[] = {gMenuTrainerCardFront_Tilemap, gMenuTrainerCardFront2_Tilemap};
- CpuFastSet(arr[ewram0_2.isShowingLinkCard], (void *)(VRAM + 0x4800), 0x140);
+ CpuFastSet(arr[gTrainerCardPtr->isShowingLinkCard], (void *)(VRAM + 0x4800), 0x140);
}
// I don't really know where to put the data. It's in such a weird order.
@@ -1049,7 +1049,7 @@ static void TrainerCard_DrawStars(void)
{
u16 *ptr = (u16 *)(VRAM + 0x4000);
s16 i = 15;
- s16 var = 15 + ewram0_2.starCount;
+ s16 var = 15 + gTrainerCardPtr->starCount;
while (i < var)
{
@@ -1065,7 +1065,7 @@ static void TrainerCard_DrawStars(void)
static void TrainerCard_DisplayBadges(void)
{
- if (!ewram0_2.isShowingLinkCard)
+ if (!gTrainerCardPtr->isShowingLinkCard)
{
u16 *ptr = (u16 *)(VRAM + 0x4000);
s16 i;
@@ -1073,7 +1073,7 @@ static void TrainerCard_DisplayBadges(void)
for (i = 0, r2 = 4; i < 8; i++, r2 += 3)
{
- if (ewram0_2.ownedBadges[i] != 0)
+ if (gTrainerCardPtr->ownedBadges[i] != 0)
{
ptr[15 * 32 + r2 + 0] = gTrainerCardBadgesMap[i][0] | 0x3000;
ptr[15 * 32 + r2 + 1] = gTrainerCardBadgesMap[i][1] | 0x3000;
@@ -1112,8 +1112,8 @@ static void TrainerCard_Front_PrintTexts(void)
BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values);
buffer = gStringVar1;
- StringCopy(buffer, ewram0_2.displayedCard.playerName);
- ConvertInternationalString(buffer, ewram0_2.language);
+ StringCopy(buffer, gTrainerCardPtr->displayedCard.playerName);
+ ConvertInternationalString(buffer, gTrainerCardPtr->language);
Menu_PrintText(buffer, 7, 5);
TrainerCard_Front_PrintTrainerID();
@@ -1146,13 +1146,13 @@ static void TrainerCard_Front_PrintTrainerID(void)
{
u8 buffer[8];
- ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
+ ConvertIntToDecimalStringN(buffer, gTrainerCardPtr->displayedCard.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5);
Menu_PrintText(buffer, 20, 2);
}
static void TrainerCard_Front_PrintMoney(void)
{
- sub_80B7AEC(ewram0_2.displayedCard.money, 16, 8);
+ sub_80B7AEC(gTrainerCardPtr->displayedCard.money, 16, 8);
}
static void TrainerCard_Front_PrintPokedexCount(void)
@@ -1163,13 +1163,13 @@ static void TrainerCard_Front_PrintPokedexCount(void)
#if DEBUG
gDebug_03000748 == 0 &&
#endif
- !ewram0_2.showPokedexCount)
+ !gTrainerCardPtr->showPokedexCount)
{
TrainerCard_ClearPokedexLabel();
}
else
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(buffer, gTrainerCardPtr->displayedCard.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
MenuPrint_RightAligned(buffer, 16, 10);
}
}
@@ -1182,10 +1182,10 @@ static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon)
playTimeHours = gSaveBlock2.playTimeHours;
playTimeMinutes = gSaveBlock2.playTimeMinutes;
- if (ewram0_2.isShowingLinkCard != 0)
+ if (gTrainerCardPtr->isShowingLinkCard != 0)
{
- playTimeHours = ewram0_2.displayedCard.playTimeHours;
- playTimeMinutes = ewram0_2.displayedCard.playTimeMinutes;
+ playTimeHours = gTrainerCardPtr->displayedCard.playTimeHours;
+ playTimeMinutes = gTrainerCardPtr->displayedCard.playTimeMinutes;
}
FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon);
AlignStringInMenuWindow(arg1, buffer, 48, 1);
@@ -1195,20 +1195,20 @@ static void TrainerCard_PrintEasyChatPhrase(void)
{
u8 *str;
- if (ewram0_2.isShowingLinkCard != 0)
+ if (gTrainerCardPtr->isShowingLinkCard != 0)
{
str = gStringVar1;
- str = StringCopy(str, ewram0_2.easyChatPhrase[0]);
+ str = StringCopy(str, gTrainerCardPtr->easyChatPhrase[0]);
str[0] = 00;
str++;
- str = StringCopy(str, ewram0_2.easyChatPhrase[1]);
+ str = StringCopy(str, gTrainerCardPtr->easyChatPhrase[1]);
Menu_PrintText(gStringVar1, 2, 14);
str = gStringVar1;
- str = StringCopy(str, ewram0_2.easyChatPhrase[2]);
+ str = StringCopy(str, gTrainerCardPtr->easyChatPhrase[2]);
str[0] = 00;
str++;
- str = StringCopy(str, ewram0_2.easyChatPhrase[3]);
+ str = StringCopy(str, gTrainerCardPtr->easyChatPhrase[3]);
Menu_PrintText(gStringVar1, 2, 16);
}
}
@@ -1218,8 +1218,8 @@ static void TrainerCard_Back_PrintName(void)
u8 *str;
str = gStringVar1;
- StringCopy(str, ewram0_2.displayedCard.playerName);
- ConvertInternationalString(str, ewram0_2.language);
+ StringCopy(str, gTrainerCardPtr->displayedCard.playerName);
+ ConvertInternationalString(str, gTrainerCardPtr->language);
#if ENGLISH
StringAppend(str, gOtherText_TrainersTrainerCard);
@@ -1232,7 +1232,7 @@ static void TrainerCard_Back_PrintName(void)
static void TrainerCard_Back_PrintHallOfFameTime_Label(void)
{
- if (ewram0_2.showHallOfFame != 0)
+ if (gTrainerCardPtr->showHallOfFame != 0)
Menu_PrintText(gOtherText_FirstHOF, 3, 5);
}
@@ -1240,21 +1240,21 @@ static void TrainerCard_Back_PrintHallOfFameTime(void)
{
u8 *str;
- if (ewram0_2.showHallOfFame != 0)
+ if (gTrainerCardPtr->showHallOfFame != 0)
{
str = gStringVar1;
- str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = ConvertIntToDecimalStringN(str, gTrainerCardPtr->displayedCard.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = ConvertIntToDecimalStringN(str, gTrainerCardPtr->displayedCard.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = ConvertIntToDecimalStringN(str, gTrainerCardPtr->displayedCard.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
MenuPrint_RightAligned(gStringVar1, 28, 5);
}
}
static void TrainerCard_Back_PrintLinkBattlesLabel(void)
{
- if (ewram0_2.showLinkBattleStatus != 0)
+ if (gTrainerCardPtr->showLinkBattleStatus != 0)
Menu_PrintText(gOtherText_LinkCableBattles, 3, 7);
}
@@ -1262,19 +1262,19 @@ static void TrainerCard_Back_PrintLinkBattles(void)
{
u8 buffer[16];
- if (ewram0_2.showLinkBattleStatus != 0)
+ if (gTrainerCardPtr->showLinkBattleStatus != 0)
{
- ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleWins);
+ ConvertIntToDecimalString(buffer, gTrainerCardPtr->displayedCard.linkBattleWins);
MenuPrint_RightAligned(buffer, 22, 7);
- ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleLosses);
+ ConvertIntToDecimalString(buffer, gTrainerCardPtr->displayedCard.linkBattleLosses);
MenuPrint_RightAligned(buffer, 28, 7);
}
}
static void TrainerCard_Back_PrintBattleTower_Label(void)
{
- if (ewram0_2.showBattleTowerStatus != 0)
+ if (gTrainerCardPtr->showBattleTowerStatus != 0)
Menu_PrintText(gOtherText_BattleTowerWinRecord, 3, 15);
}
@@ -1282,19 +1282,19 @@ static void TrainerCard_Back_PrintBattleTower(void)
{
u8 buffer[16];
- if (ewram0_2.showBattleTowerStatus != 0)
+ if (gTrainerCardPtr->showBattleTowerStatus != 0)
{
- AlignInt2InMenuWindow(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1);
+ AlignInt2InMenuWindow(buffer, gTrainerCardPtr->displayedCard.battleTowerWins, 24, 1);
Menu_PrintTextPixelCoords(buffer, 112, 120, 0);
- AlignInt2InMenuWindow(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1);
+ AlignInt2InMenuWindow(buffer, gTrainerCardPtr->displayedCard.battleTowerLosses, 24, 1);
Menu_PrintTextPixelCoords(buffer, 149, 120, 0);
}
}
static void TrainerCard_Back_PrintLinkContests_Label(void)
{
- if (ewram0_2.showContestRecord != 0)
+ if (gTrainerCardPtr->showContestRecord != 0)
Menu_PrintText(gOtherText_ContestRecord, 3, 13);
}
@@ -1302,16 +1302,16 @@ static void TrainerCard_Back_PrintLinkContests(void)
{
u8 buffer[8];
- if (ewram0_2.showContestRecord != 0)
+ if (gTrainerCardPtr->showContestRecord != 0)
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ ConvertIntToDecimalStringN(buffer, gTrainerCardPtr->displayedCard.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
MenuPrint_RightAligned(buffer, 28, 13);
}
}
static void TrainerCard_Back_PrintLinkPokeblocks_Label(void)
{
- if (ewram0_2.showMixingRecord != 0)
+ if (gTrainerCardPtr->showMixingRecord != 0)
Menu_PrintText(gOtherText_MixingRecord, 3, 11);
}
@@ -1319,16 +1319,16 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void)
{
u8 buffer[8];
- if (ewram0_2.showMixingRecord != 0)
+ if (gTrainerCardPtr->showMixingRecord != 0)
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ ConvertIntToDecimalStringN(buffer, gTrainerCardPtr->displayedCard.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
MenuPrint_RightAligned(buffer, 28, 11);
}
}
static void TrainerCard_Back_PrintPokemonTrades_Label(void)
{
- if (ewram0_2.showTradingRecord != 0)
+ if (gTrainerCardPtr->showTradingRecord != 0)
Menu_PrintText(gOtherText_TradeRecord, 3, 9);
}
@@ -1336,9 +1336,9 @@ static void TrainerCard_Back_PrintPokemonTrades(void)
{
u8 buffer[8];
- if (ewram0_2.showTradingRecord != 0)
+ if (gTrainerCardPtr->showTradingRecord != 0)
{
- ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ ConvertIntToDecimalStringN(buffer, gTrainerCardPtr->displayedCard.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
MenuPrint_RightAligned(buffer, 28, 9);
}
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 30d8d2794..0c9e90576 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -552,10 +552,10 @@ static void objc_exclamation_mark_probably(struct Sprite *sprite)
{
struct Sprite *objEventSprite = &gSprites[gObjectEvents[objEventId].spriteId];
sprite->data[4] += sprite->data[3];
- sprite->pos1.x = objEventSprite->pos1.x;
- sprite->pos1.y = objEventSprite->pos1.y - 16;
- sprite->pos2.x = objEventSprite->pos2.x;
- sprite->pos2.y = objEventSprite->pos2.y + sprite->data[4];
+ sprite->x = objEventSprite->x;
+ sprite->y = objEventSprite->y - 16;
+ sprite->x2 = objEventSprite->x2;
+ sprite->y2 = objEventSprite->y2 + sprite->data[4];
if (sprite->data[4])
sprite->data[3]++;
else
diff --git a/src/trig.c b/src/trig.c
index e16a69e63..c2bca3059 100644
--- a/src/trig.c
+++ b/src/trig.c
@@ -1,12 +1,6 @@
#include "global.h"
#include "trig.h"
-// Converts a number to Q8.8 fixed-point format
-#define Q_8_8(n) ((s16)((n) * 256))
-
-// Converts a number to Q4.12 fixed-point format
-#define Q_4_12(n) ((s16)((n) * 4096))
-
// Values of sin(x*(π/128)) as Q8.8 fixed-point numbers from x = 0 to x = 319
const s16 gSineTable[] =
{
diff --git a/src/tv.c b/src/tv.c
index 890d3bb2c..7c6c86418 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -643,12 +643,12 @@ void GabbyAndTyBeforeInterview(void)
else
gSaveBlock1.gabbyAndTyData.valA_1 = 0;
- if (gBattleResults.unk3)
+ if (gBattleResults.playerHealInBattleCount)
gSaveBlock1.gabbyAndTyData.valA_2 = 1;
else
gSaveBlock1.gabbyAndTyData.valA_2 = 0;
- if (!gBattleResults.unk5_1)
+ if (!gBattleResults.usedMasterBall)
{
for (i=0; i<11; i++)
{
@@ -818,7 +818,7 @@ void PutPokemonTodayCaughtOnAir(void)
{
for (i = 0; i < 11; i++)
total += gBattleResults.usedBalls[i];
- if (total != 0 || gBattleResults.unk5_1 != 0)
+ if (total != 0 || gBattleResults.usedMasterBall != 0)
{
struct TVShowPokemonToday *pokemonToday;
@@ -826,7 +826,7 @@ void PutPokemonTodayCaughtOnAir(void)
pokemonToday = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonToday;
pokemonToday->kind = TVSHOW_POKEMON_TODAY_CAUGHT;
pokemonToday->active = total;
- if (gBattleResults.unk5_1 != 0)
+ if (gBattleResults.usedMasterBall != 0)
{
total = 1;
item = ITEM_MASTER_BALL;
@@ -1782,20 +1782,20 @@ u8 NicknameDiffersFromSpeciesName(u8 monIndex)
return TRUE;
}
#elif GERMAN
-u8 NicknameDiffersFromSpeciesName(u8 monIndex)
+u8 NicknameDiffersFromSpeciesName(u8 pmMonIndex)
{
u8 langData[4];
u32 species;
u8 *tmp;
- GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, &gStringVar1);
+ GetMonData(&gPlayerParty[pmMonIndex], MON_DATA_NICKNAME, &gStringVar1);
tmp = langData;
- tmp[0] = GetMonData(&gPlayerParty[monIndex], MON_DATA_LANGUAGE, &langData);
+ tmp[0] = GetMonData(&gPlayerParty[pmMonIndex], MON_DATA_LANGUAGE, &langData);
if (tmp[0] != GAME_LANGUAGE)
return TRUE;
- species = GetMonData(&gPlayerParty[monIndex], MON_DATA_SPECIES, NULL);
+ species = GetMonData(&gPlayerParty[pmMonIndex], MON_DATA_SPECIES, NULL);
if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1))
return TRUE;
@@ -2189,39 +2189,33 @@ void sub_80BFD20(void)
RemoveObjectEventByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
-typedef union ewramStruct_02007000
-{
- TVShow tvshows[4][TV_SHOWS_COUNT];
- struct PokeNews pokeNews[4][POKE_NEWS_COUNT];
-} ewramStruct_02007000;
-
void sub_80BFE24(TVShow arg0[TV_SHOWS_COUNT], TVShow arg1[TV_SHOWS_COUNT], TVShow arg2[TV_SHOWS_COUNT], TVShow arg3[TV_SHOWS_COUNT]);
void sub_80C04A0(void);
void sub_80C01D4(void);
void sub_80C0408(void);
-void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2)
+void ReceiveTvShowsData(u8 * arg0, u32 arg1, u8 arg2)
{
u8 i;
- ewramStruct_02007000 *ewramTVShows;
+ union TVShow (*tvShows)[TV_SHOWS_COUNT];
for (i = 0; i < 4; i++)
- memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], TV_SHOWS_COUNT * sizeof(TVShow));
- ewramTVShows = &gUnknown_02007000;
+ memcpy(eRecordMixTvShows[i], &arg0[i * arg1], TV_SHOWS_COUNT * sizeof(TVShow));
+ tvShows = eRecordMixTvShows;
switch (arg2)
{
case 0:
- sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]);
+ sub_80BFE24(gSaveBlock1.tvShows, tvShows[1], tvShows[2], tvShows[3]);
break;
case 1:
- sub_80BFE24(ewramTVShows->tvshows[0], gSaveBlock1.tvShows, ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]);
+ sub_80BFE24(tvShows[0], gSaveBlock1.tvShows, tvShows[2], tvShows[3]);
break;
case 2:
- sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], gSaveBlock1.tvShows, ewramTVShows->tvshows[3]);
+ sub_80BFE24(tvShows[0], tvShows[1], gSaveBlock1.tvShows, tvShows[3]);
break;
case 3:
- sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], gSaveBlock1.tvShows);
+ sub_80BFE24(tvShows[0], tvShows[1], tvShows[2], gSaveBlock1.tvShows);
break;
}
sub_80BF588(gSaveBlock1.tvShows);
@@ -2493,27 +2487,28 @@ void sub_80C0788(void);
s8 sub_80C0730(struct PokeNews[POKE_NEWS_COUNT], u8);
void sub_80C06BC(struct PokeNews *[POKE_NEWS_COUNT], struct PokeNews *[POKE_NEWS_COUNT]);
-void sub_80C0514(void *a0, u32 a1, u8 a2)
+void ReceivePokeNewsData(void * a0, u32 a1, u8 a2)
{
- ewramStruct_02007000 *struct02007000;
+ struct PokeNews (* pokeNews)[POKE_NEWS_COUNT];
u8 i;
for (i = 0; i < 4; i++)
- memcpy(gUnknown_02007000.pokeNews[i], a0 + i * a1, 64);
- struct02007000 = &gUnknown_02007000;
+ memcpy(eRecordMixPokeNews[i], a0 + i * a1, 64);
+
+ pokeNews = eRecordMixPokeNews;
switch (a2)
{
case 0:
- sub_80C05C4(gSaveBlock1.pokeNews, struct02007000->pokeNews[1], struct02007000->pokeNews[2], struct02007000->pokeNews[3]);
+ sub_80C05C4(gSaveBlock1.pokeNews, pokeNews[1], pokeNews[2], pokeNews[3]);
break;
case 1:
- sub_80C05C4(struct02007000->pokeNews[0], gSaveBlock1.pokeNews, struct02007000->pokeNews[2], struct02007000->pokeNews[3]);
+ sub_80C05C4(pokeNews[0], gSaveBlock1.pokeNews, pokeNews[2], pokeNews[3]);
break;
case 2:
- sub_80C05C4(struct02007000->pokeNews[0], struct02007000->pokeNews[1], gSaveBlock1.pokeNews, struct02007000->pokeNews[3]);
+ sub_80C05C4(pokeNews[0], pokeNews[1], gSaveBlock1.pokeNews, pokeNews[3]);
break;
case 3:
- sub_80C05C4(struct02007000->pokeNews[0], struct02007000->pokeNews[1], struct02007000->pokeNews[2], gSaveBlock1.pokeNews);
+ sub_80C05C4(pokeNews[0], pokeNews[1], pokeNews[2], gSaveBlock1.pokeNews);
break;
}
sub_80C0750();
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 8fff9edee..78b5db4a8 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -285,7 +285,7 @@ static void sub_8136294(void)
break;
case 13:
sub_80F2E18(0);
- gPokenavStructPtr->unk8768->pos2.y = 0xffd8;
+ gPokenavStructPtr->unk8768->y2 = 0xffd8;
gUnknown_02039304->unk50++;
break;
case 14:
@@ -857,9 +857,9 @@ static void sub_8137138(void)
static void sub_81371DC(struct Sprite *sprite)
{
if (sprite->data[0] <= 5)
- sprite->pos2.y -= 2;
+ sprite->y2 -= 2;
else if (sprite->data[0] <= 11)
- sprite->pos2.y += 2;
+ sprite->y2 += 2;
if ((++sprite->data[0]) > 60)
{
DestroySprite(sprite);
diff --git a/src/wallclock.c b/src/wallclock.c
index 41142e5e2..85f9f1419 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -969,8 +969,8 @@ static void SpriteCB_MinuteHand(struct Sprite *sprite)
if (y > 0x80)
y |= 0xFF00;
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
}
static void SpriteCB_HourHand(struct Sprite *sprite)
@@ -990,8 +990,8 @@ static void SpriteCB_HourHand(struct Sprite *sprite)
if (y > 0x80)
y |= 0xFF00;
- sprite->pos2.x = x;
- sprite->pos2.y = y;
+ sprite->x2 = x;
+ sprite->y2 = y;
}
static void SpriteCB_AMIndicator(struct Sprite *sprite)
@@ -1010,8 +1010,8 @@ static void SpriteCB_AMIndicator(struct Sprite *sprite)
if (sprite->data[1] > 75)
sprite->data[1]--;
}
- sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 4096;
- sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 4096;
+ sprite->x2 = Cos2(sprite->data[1]) * 30 / 4096;
+ sprite->y2 = Sin2(sprite->data[1]) * 30 / 4096;
}
static void SpriteCB_PMIndicator(struct Sprite *sprite)
@@ -1030,6 +1030,6 @@ static void SpriteCB_PMIndicator(struct Sprite *sprite)
if (sprite->data[1] > 120)
sprite->data[1]--;
}
- sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 4096;
- sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 4096;
+ sprite->x2 = Cos2(sprite->data[1]) * 30 / 4096;
+ sprite->y2 = Sin2(sprite->data[1]) * 30 / 4096;
}
diff --git a/sym_common.txt b/sym_common.txt
index b089f46d3..fca25afb0 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -97,7 +97,7 @@ SYMBOL(gBattle_BG3_Y, 4)
SYMBOL(gBattleTextBuff1, 16)
SYMBOL(gUnknown_030041D0, 48)
SYMBOL(gBattle_WIN1H, 4)
-SYMBOL(gUnknown_03004210, 48)
+SYMBOL(gWindowTemplate_Contest_MoveDescription, 48)
SYMBOL(gBattle_WIN0V, 4)
SYMBOL(gBattle_WIN1V, 4)
SYMBOL(gUnknown_03004250, 48)
@@ -244,8 +244,8 @@ SYMBOL(gLastFieldPokeMenuOpened, 4)
SYMBOL(gPostMenuFieldCallback, 4)
// pokedex.c
-SYMBOL(gUnknown_03005CE8, 4)
-SYMBOL(gUnknown_03005CEC, 4)
+SYMBOL(gUnusedPokedexU8, 4)
+SYMBOL(gPokedexVBlankCB, 4)
// pokemon_summary_screen.o
SYMBOL(gUnknown_03005CF0, 4)
@@ -292,23 +292,23 @@ SYMBOL(gUnknown_03005D38, 4)
SYMBOL(gUnknown_03005DA0, 0x48)
// contest_painting_effects.c
-SYMBOL(gUnknown_03005DE8, 4)
-SYMBOL(gUnknown_03005DEC, 4)
-SYMBOL(gUnknown_03005DF0, 4)
-SYMBOL(gUnknown_03005DF4, 4)
-SYMBOL(gUnknown_03005DF8, 4)
-SYMBOL(gUnknown_03005DFC, 4)
-SYMBOL(gUnknown_03005E00, 4)
-SYMBOL(gUnknown_03005E04, 4)
-SYMBOL(gUnknown_03005E08, 4)
-SYMBOL(gUnknown_03005E0C, 4)
+SYMBOL(gCanvasColumnStart, 4)
+SYMBOL(gCanvasPixels, 4)
+SYMBOL(gCanvasRowEnd, 4)
+SYMBOL(gCanvasHeight, 4)
+SYMBOL(gCanvasColumnEnd, 4)
+SYMBOL(gCanvasRowStart, 4)
+SYMBOL(gCanvasMonPersonality, 4)
+SYMBOL(gCanvasWidth, 4)
+SYMBOL(gCanvasPalette, 4)
+SYMBOL(gCanvasPaletteStart, 4)
// contest_painting.c
-SYMBOL(gUnknown_03005E10, 4)
-SYMBOL(gUnknown_03005E20, 32)
-SYMBOL(gUnknown_03005E40, 76)
-SYMBOL(gUnknown_03005E8C, 4)
-SYMBOL(gUnknown_03005E90, 4)
+SYMBOL(gContestMonPixels, 4)
+SYMBOL(gImageProcessingContext, 32)
+SYMBOL(sCaptionBuffer, 76)
+SYMBOL(gContestPaintingWinner, 4)
+SYMBOL(gContestPaintingMonPalette, 4)
// evolution_scene.c
SYMBOL(gCB2_AfterEvolution, 4)
@@ -319,7 +319,7 @@ gUnknown_Debug_03005FB8 = .;
#endif
// pokedex_cry_screen.c
-SYMBOL(gUnknown_03005E98, 4)
+SYMBOL(gDexCryScreenState, 4)
// save.c
SYMBOL(gFirstSaveSector, 4)
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 80e699ab2..16cf5ca0c 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -15,35 +15,34 @@ gUnknown_020238C8 = .; /* 20238C8 */
. += 0x4;
gDisplayedStringBattle = .; /* 20238CC */
- . += 0x12C;
+ . += 0x12C; /* 300 */
+ . = ALIGN(2);
gBattleTypeFlags = .; /* 20239F8 */
- . += 0x4;
+ . += 0x2;
+ . = ALIGN(4);
gUnknown_020239FC = .; /* 20239FC */
. += 0x4;
+ . = ALIGN(4);
gMultiPartnerParty = .; /* 2023A00 */
- . += 0x4;
-
-gUnknown_02023A04 = .; /* 2023A04 */
- . += 0x10;
-
-gUnknown_02023A14 = .; /* 2023A14 */
- . += 0x4C;
+ . += 0x60;
#if DEBUG
+ . = ALIGN(4);
gUnknown_02023A14_4C = .;
. += 0x4;
gUnknown_02023A14_50 = .;
- . += 0x2;
+ . += 0x1;
+ . = ALIGN(2);
gUnknown_Debug_2023A76 = .;
-gUnknown_Debug_2023A76_ = .;
. += 0x8C;
+ . = ALIGN(2);
gUnknown_Debug_2023B02 = .;
. += 0x60;
@@ -154,7 +153,7 @@ gActionForBanks = .; /* 2024C18 */
gSelectionBattleScripts = .; /* 2024C1C */
. += 0x10;
-gUnknown_02024C2C = .; /* 2024C2C */
+gLastPrintedMoves = .; /* 2024C2C */
. += 0x8;
gLastMoves = .; /* 2024C34 */
@@ -166,7 +165,7 @@ gLastLandedMoves = .; /* 2024C3C */
gLastHitByType = .; /* 2024C44 */
. += 0x8;
-gUnknown_02024C4C = .; /* 2024C4C */
+gLastResultingMoves = .; /* 2024C4C */
. += 0x8;
gLockedMoves = .; /* 2024C54 */
@@ -184,7 +183,7 @@ gMoveResultFlags = .; /* 2024C68 */
gHitMarker = .; /* 2024C6C */
. += 0x4;
-gUnknown_02024C70 = .; /* 2024C70 */
+sUnusedBattlersArray = .; /* 2024C70 */
. += 0x4;
gTakenDmgByBattler = .; /* 2024C74 */
@@ -238,7 +237,7 @@ gWishFutureKnock = .; /* 2024DBC */
gUnknown_02024DDC = .; /* 2024DDC */
. += 0xC;
-gUnknown_02024DE8 = .; /* 2024DE8 */
+gIntroSlideFlags = .; /* 2024DE8 */
. += 0x2;
gSentPokesToOpponent = .; /* 2024DEA */
@@ -317,6 +316,8 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(4); src/pokemon_menu.o(ewram_data);
. = ALIGN(4); src/pokedex.o(ewram_data);
. = ALIGN(4); src/trainer_card.o(ewram_data);
+. = ALIGN(4); src/save_menu_util.o(ewram_data);
+. = ALIGN(4); src/battle_party_menu.o(ewram_data);
. = ALIGN(4); src/pokemon_storage_system.o(ewram_data);
. = ALIGN(4); src/pokemon_storage_system_2.o(ewram_data);
. = ALIGN(4); src/pokemon_storage_system_3.o(ewram_data);
@@ -377,10 +378,7 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(16);
#endif
gTileBuffer = .; /* 2039360 */
- . += 0x100;
-
-gUnknown_02039460 = .; /* 2039460 */
- . += 0x300;
+ . += 0x400;
gUnknown_02039760 = .; /* 2039760 */
. += 0xC00;