summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-29 09:46:02 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-29 09:46:02 -0400
commit78535eea89e8b71f37e188289793e3e18c9bb985 (patch)
treec3d7ec29b849e810cc6bc90827f9053a4f486b64
parentf4e6816db9622dfa93466138ed075075009295b8 (diff)
parent3f477dae36c99bcb03a38be251dbef2f7e344ebc (diff)
Merge branch 'master' into modern_gcc
-rwxr-xr-xasmdiff.sh2
-rw-r--r--data/battle_scripts_1.s2
-rw-r--r--data/battle_scripts_2.s2
-rw-r--r--graphics/birch_speech/bg2.pal10
-rw-r--r--graphics/birch_speech/blank_pal.pal11
-rw-r--r--include/battle.h4
-rw-r--r--include/battle_ai_script_commands.h (renamed from include/battle_ai.h)0
-rw-r--r--include/battle_anim_special.h (renamed from include/battle_anim_813F0F4.h)0
-rw-r--r--include/constants/battle.h (renamed from include/constants/battle_constants.h)0
-rw-r--r--include/gba/defines.h3
-rw-r--r--ld_script.txt144
-rw-r--r--misc.mk7
-rw-r--r--src/battle/anim/battle_intro.c2
-rw-r--r--src/battle/anim/current.c2
-rw-r--r--src/battle/anim/dark.c2
-rw-r--r--src/battle/anim/fight.c2
-rw-r--r--src/battle/anim/ghost.c2
-rw-r--r--src/battle/anim/ice.c2
-rw-r--r--src/battle/anim/normal.c2
-rw-r--r--src/battle/anim/roots.c6
-rw-r--r--src/battle/battle_anim_80CA710.c18
-rw-r--r--src/battle_ai_script_commands.c (renamed from src/battle/battle_ai.c)2
-rw-r--r--src/battle_ai_switch_items.c (renamed from src/battle/battle_ai_switch_items.c)1
-rw-r--r--src/battle_anim.c (renamed from src/battle/battle_anim.c)0
-rw-r--r--src/battle_anim_effects_3.c (renamed from src/battle/battle_anim_812C144.c)0
-rw-r--r--src/battle_anim_mon_movement.c (renamed from src/battle/battle_anim_80A7E7C.c)0
-rwxr-xr-xsrc/battle_anim_special.c (renamed from src/battle/battle_anim_813F0F4.c)2
-rw-r--r--src/battle_anim_status_effects.c (renamed from src/battle/battle_anim_807B69C.c)0
-rw-r--r--src/battle_bg.c (renamed from src/battle/battle_bg.c)92
-rw-r--r--src/battle_controller_link_opponent.c (renamed from src/battle/battle_controller_linkopponent.c)2
-rw-r--r--src/battle_controller_link_partner.c (renamed from src/battle/battle_controller_linkpartner.c)4
-rw-r--r--src/battle_controller_opponent.c (renamed from src/battle/battle_controller_opponent.c)2
-rw-r--r--src/battle_controller_player.c (renamed from src/battle/battle_controller_player.c)2
-rw-r--r--src/battle_controller_safari.c (renamed from src/battle/battle_controller_safari.c)0
-rw-r--r--src/battle_controller_wally.c (renamed from src/battle/battle_controller_wally.c)2
-rw-r--r--src/battle_gfx_sfx_util.c (renamed from src/battle/battle_7.c)2
-rw-r--r--src/battle_interface.c (renamed from src/battle/battle_interface.c)14
-rw-r--r--src/battle_main.c (renamed from src/battle/battle_2.c)7
-rw-r--r--src/battle_message.c (renamed from src/battle/battle_message.c)4
-rw-r--r--src/battle_party_menu.c (renamed from src/battle/battle_party_menu.c)0
-rw-r--r--src/battle_records.c (renamed from src/battle/battle_records.c)0
-rw-r--r--src/battle_script_commands.c (renamed from src/battle/battle_4.c)1614
-rw-r--r--src/battle_setup.c (renamed from src/battle/battle_setup.c)0
-rw-r--r--src/battle_transition.c (renamed from src/battle/battle_transition.c)0
-rw-r--r--src/battle_util.c (renamed from src/battle/battle_util.c)0
-rw-r--r--src/calculate_base_damage.c (renamed from src/battle/calculate_base_damage.c)0
-rw-r--r--src/contest.c4
-rw-r--r--src/contest_link_80C2020.c (renamed from src/battle/contest_link_80C2020.c)74
-rw-r--r--src/contest_link_80C857C.c (renamed from src/battle/contest_link_80C857C.c)0
-rw-r--r--src/contest_painting.c4
-rw-r--r--src/credits.c2
-rw-r--r--src/data/graphics.c11
-rw-r--r--src/evolution_scene.c10
-rw-r--r--src/fieldmap.c4
-rw-r--r--src/fldeff_flash.c8
-rw-r--r--src/hall_of_fame.c4
-rw-r--r--src/intro.c6
-rw-r--r--src/main_menu.c3
-rw-r--r--src/option_menu.c2
-rw-r--r--src/pokeball.c (renamed from src/battle/pokeball.c)2
-rw-r--r--src/pokeblock_feed.c2
-rw-r--r--src/pokemon_item_effect.c2
-rw-r--r--src/pokemon_size_record.c14
-rw-r--r--src/pokemon_summary_screen.c2
-rw-r--r--src/post_battle_event_funcs.c (renamed from src/battle/post_battle_event_funcs.c)0
-rw-r--r--src/reshow_battle_screen.c (renamed from src/battle/reshow_battle_screen.c)0
-rw-r--r--src/rom3.c2
-rw-r--r--src/rom_8077ABC.c10
-rw-r--r--src/smokescreen.c (renamed from src/battle/smokescreen.c)0
-rw-r--r--sym_bss.txt2
-rw-r--r--sym_ewram.txt8
71 files changed, 489 insertions, 1660 deletions
diff --git a/asmdiff.sh b/asmdiff.sh
index 4654b2101..414a43826 100755
--- a/asmdiff.sh
+++ b/asmdiff.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.gba > baserom.dump
$OBJDUMP $OPTIONS pokeruby.gba > pokeruby.dump
-diff -u baserom.dump pokeruby.dump | less
+colordiff -u baserom.dump pokeruby.dump
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 3c34da93a..7708f2f4f 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -1,5 +1,5 @@
#include "constants/abilities.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "constants/moves.h"
#include "constants/songs.h"
.include "include/macros.inc"
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 2c5c391ad..478b0b7f0 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -1,4 +1,4 @@
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "constants/items.h"
#include "constants/songs.h"
.include "include/macros.inc"
diff --git a/graphics/birch_speech/bg2.pal b/graphics/birch_speech/bg2.pal
index 3457f9b45..33f619ee4 100644
--- a/graphics/birch_speech/bg2.pal
+++ b/graphics/birch_speech/bg2.pal
@@ -1,6 +1,6 @@
JASC-PAL
0100
-8
+16
255 255 164
255 255 106
222 222 90
@@ -9,3 +9,11 @@ JASC-PAL
123 123 49
90 90 32
57 57 16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/birch_speech/blank_pal.pal b/graphics/birch_speech/blank_pal.pal
deleted file mode 100644
index 7dc528e38..000000000
--- a/graphics/birch_speech/blank_pal.pal
+++ /dev/null
@@ -1,11 +0,0 @@
-JASC-PAL
-0100
-8
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/include/battle.h b/include/battle.h
index a799f8360..78b9d13de 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -2,7 +2,7 @@
#define GUARD_BATTLE_H
#include "sprite.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "battle_setup.h"
#define GET_BATTLER_POSITION(bank)((gBattlerPositions[bank]))
@@ -762,6 +762,8 @@ extern u16 gBattle_WIN0V;
extern u16 gBattle_WIN1H;
extern u16 gBattle_WIN1V;
+extern u8 gLastHitBy[MAX_BATTLERS_COUNT];
+
extern u8 gDisplayedStringBattle[];
extern u16 gBattleTypeFlags;
diff --git a/include/battle_ai.h b/include/battle_ai_script_commands.h
index fdad0c7e9..fdad0c7e9 100644
--- a/include/battle_ai.h
+++ b/include/battle_ai_script_commands.h
diff --git a/include/battle_anim_813F0F4.h b/include/battle_anim_special.h
index fea5d186d..fea5d186d 100644
--- a/include/battle_anim_813F0F4.h
+++ b/include/battle_anim_special.h
diff --git a/include/constants/battle_constants.h b/include/constants/battle.h
index afa7fecf1..afa7fecf1 100644
--- a/include/constants/battle_constants.h
+++ b/include/constants/battle.h
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 3920a2476..71de1275c 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -18,6 +18,9 @@
#define INTR_CHECK (*(u16 *)0x3007FF8)
#define INTR_VECTOR (*(void **)0x3007FFC)
+#define EWRAM 0x2000000
+#define IWRAM 0x3000000
+
#define PLTT 0x5000000
#define PLTT_SIZE 0x400
diff --git a/ld_script.txt b/ld_script.txt
index f272dc63c..4c0d8d9d4 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -48,17 +48,17 @@ SECTIONS {
src/rom3.o(.text);
src/decompress.o(.text);
asm/decompress.o(.text);
- src/battle/battle_bg.o(.text);
- src/battle/battle_2.o(.text);
- src/battle/battle_util.o(.text);
- src/battle/battle_4.o(.text);
- src/battle/battle_controller_player.o(.text);
- src/battle/battle_7.o(.text);
- src/battle/battle_controller_opponent.o(.text);
- src/battle/battle_ai_switch_items.o(.text);
- src/battle/battle_controller_linkopponent.o(.text);
+ src/battle_bg.o(.text);
+ src/battle_main.o(.text);
+ src/battle_util.o(.text);
+ src/battle_script_commands.o(.text);
+ src/battle_controller_player.o(.text);
+ src/battle_gfx_sfx_util.o(.text);
+ src/battle_controller_opponent.o(.text);
+ src/battle_ai_switch_items.o(.text);
+ src/battle_controller_link_opponent.o(.text);
src/pokemon_1.o(.text);
- src/battle/calculate_base_damage.o(.text);
+ src/calculate_base_damage.o(.text);
src/pokemon_2.o(.text);
src/pokemon_item_effect.o(.text);
src/pokemon_3.o(.text);
@@ -69,9 +69,9 @@ SECTIONS {
src/blend_palette.o(.text);
src/daycare.o(.text);
src/egg_hatch.o(.text);
- src/battle/battle_interface.o(.text);
- src/battle/smokescreen.o(.text);
- src/battle/pokeball.o(.text);
+ src/battle_interface.o(.text);
+ src/smokescreen.o(.text);
+ src/pokeball.o(.text);
src/load_save.o(.text);
src/trade.o(.text);
src/berry_blender.o(.text);
@@ -102,17 +102,17 @@ SECTIONS {
src/tileset_anim.o(.text);
src/palette.o(.text);
src/sound.o(.text);
- src/battle/battle_anim.o(.text);
+ src/battle_anim.o(.text);
src/rom_8077ABC.o(.text);
src/task.o(.text);
- src/battle/reshow_battle_screen.o(.text);
- src/battle/battle_anim_807B69C.o(.text);
+ src/reshow_battle_screen.o(.text);
+ src/battle_anim_status_effects.o(.text);
src/title_screen.o(.text);
src/field_weather.o(.text);
src/field_weather_effects.o(.text);
src/field_fadetransition.o(.text);
src/field_screen_effect.o(.text);
- src/battle/battle_setup.o(.text);
+ src/battle_setup.o(.text);
src/cable_club.o(.text);
src/debug/tomomichi_debug_menu.o(.text);
src/debug/nohara_debug_menu.o(.text);
@@ -127,7 +127,7 @@ SECTIONS {
src/pokedex.o(.text);
src/trainer_card.o(.text);
src/save_menu_util.o(.text);
- src/battle/battle_party_menu.o(.text);
+ src/battle_party_menu.o(.text);
src/unk_text_8095904.o(.text);
src/pokemon_storage_system.o(.text);
src/pokemon_storage_system_2.o(.text);
@@ -141,7 +141,7 @@ SECTIONS {
src/mail_data.o(.text);
src/map_name_popup.o(.text);
src/item_menu.o(.text);
- src/battle/battle_anim_80A7E7C.o(.text);
+ src/battle_anim_mon_movement.o(.text);
src/item.o(.text);
src/debug/matsuda_debug_menu.o(.text);
src/debug/crash.o(.text);
@@ -158,7 +158,7 @@ SECTIONS {
src/debug/sound_check_menu.o(.text);
src/secret_base.o(.text);
src/tv.o(.text);
- src/battle/contest_link_80C2020.o(.text);
+ src/contest_link_80C2020.o(.text);
src/script_pokemon_util_80C4BF0.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
@@ -172,7 +172,7 @@ SECTIONS {
src/field_special_scene.o(.text);
src/rotating_gate.o(.text);
src/safari_zone.o(.text);
- src/battle/contest_link_80C857C.o(.text);
+ src/contest_link_80C857C.o(.text);
src/item_use.o(.text);
src/battle/anim/powder.o(.text);
src/battle/anim/orbs.o(.text);
@@ -307,19 +307,19 @@ SECTIONS {
src/decoration.o(.text);
src/slot_machine.o(.text);
src/contest_painting.o(.text);
- src/battle/battle_ai.o(.text);
+ src/battle_ai_script_commands.o(.text);
src/trader.o(.text);
src/starter_choose.o(.text);
src/wallclock.o(.text);
src/rom6.o(.text);
src/pokeblock.o(.text);
src/fldeff_flash.o(.text);
- src/battle/post_battle_event_funcs.o(.text);
+ src/post_battle_event_funcs.o(.text);
src/time_events.o(.text);
src/birch_pc.o(.text);
src/hof_pc.o(.text);
src/field_specials.o(.text);
- src/battle/battle_records.o(.text);
+ src/battle_records.o(.text);
src/pokedex_area_screen.o(.text);
src/evolution_scene.o(.text);
src/roulette.o(.text);
@@ -328,9 +328,9 @@ SECTIONS {
src/coins.o(.text);
src/landmark.o(.text);
src/fldeff_strength.o(.text);
- src/battle/battle_transition.o(.text);
- src/battle/battle_controller_linkpartner.o(.text);
- src/battle/battle_message.o(.text);
+ src/battle_transition.o(.text);
+ src/battle_controller_link_partner.o(.text);
+ src/battle_message.o(.text);
src/choose_party.o(.text);
src/cable_car.o(.text);
src/roulette_util.o(.text);
@@ -343,20 +343,20 @@ SECTIONS {
src/contest_ai.o(.text);
src/unused_81258BC.o(.text);
src/battle/anim/sfx.o(.text);
- src/battle/battle_controller_safari.o(.text);
+ src/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
- src/battle/battle_anim_812C144.o(.text);
+ src/battle_anim_effects_3.o(.text);
src/move_tutor_menu.o(.text);
src/fldeff_softboiled.o(.text);
src/decoration_inventory.o(.text);
src/roamer.o(.text);
src/battle_tower.o(.text);
src/use_pokeblock.o(.text);
- src/battle/battle_controller_wally.o(.text);
+ src/battle_controller_wally.o(.text);
src/player_pc.o(.text);
src/intro.o(.text);
src/field_region_map.o(.text);
- src/battle/battle_anim_813F0F4.o(.text);
+ src/battle_anim_special.o(.text);
src/hall_of_fame.o(.text);
src/credits.o(.text);
src/lottery_corner.o(.text);
@@ -470,28 +470,27 @@ SECTIONS {
. += 0x8; /* Why the gap? */
src/text.o(.rodata*);
src/string_util.o(.rodata*);
- src/link.o(.rodata*.str1.4);
src/link.o(.rodata*);
src/rtc.o(.rodata*);
src/main_menu.o(.rodata*);
- src/rom3.o(.rodata*);
+ src/rom3.o(.rodata*);
data/mon_attrs.o(.rodata*);
src/battle/battle_1.o(.rodata*);
- src/battle/battle_bg.o(.rodata*);
- src/battle/battle_2.o(.rodata*);
+ src/battle_bg.o(.rodata*);
data/btl_attrs.o(.rodata*);
- src/battle/battle_4.o(.rodata*);
- src/battle/battle_controller_player.o(.rodata*);
- data/smokescreen.o(.rodata*); /* why is smokescreen rodata* way up here and not in the correct location? */
+ src/battle_script_commands.o(.rodata*);
+ src/battle_controller_player.o(.rodata*);
+ data/smokescreen.o(.rodata*); /* why is smokescreen rodata way up here and not in the correct location? */
data/battle_7.o(.rodata*);
- src/battle/battle_controller_opponent.o(.rodata*);
- src/battle/battle_ai_switch_items.o(.rodata*);
- src/battle/battle_controller_linkopponent.o(.rodata*);
+ src/battle_controller_opponent.o(.rodata*);
+ src/battle_ai_switch_items.o(.rodata*);
+ src/battle_controller_link_opponent.o(.rodata*);
src/data/battle_moves.o(.rodata*);
- src/battle/battle_util.o(.rodata*);
+ src/battle_main.o(.rodata*);
+ src/battle_util.o(.rodata*);
src/pokemon_1.o(.rodata*);
- src/pokemon_1.o(.data*); /* gEvolutionTable needs to be non-const to match */
- src/battle/calculate_base_damage.o(.rodata*);
+ src/pokemon_1.o(.data); /* gEvolutionTable needs to be non-const to match */
+ src/calculate_base_damage.o(.rodata*);
src/pokemon_2.o(.rodata*);
src/pokemon_item_effect.o(.rodata*);
src/pokemon_3.o(.rodata*);
@@ -500,9 +499,9 @@ SECTIONS {
src/util.o(.rodata*);
src/daycare.o(.rodata*);
src/egg_hatch.o(.rodata*);
- src/battle/battle_7.o(.rodata*);
- src/battle/battle_interface.o(.rodata*);
- src/battle/pokeball.o(.rodata*);
+ src/battle_gfx_sfx_util.o(.rodata*);
+ src/battle_interface.o(.rodata*);
+ src/pokeball.o(.rodata*);
src/trade.o(.rodata*);
src/berry_blender.o(.rodata*);
src/new_game.o(.rodata*);
@@ -523,30 +522,30 @@ SECTIONS {
src/reset_rtc_screen.o(.rodata*);
src/party_menu.o(.rodata*);
src/start_menu.o(.rodata*);
- src/debug/start_menu_debug.o(.data*);
+ src/debug/start_menu_debug.o(.data);
src/debug/start_menu_debug.o(.rodata*);
src/menu.o(.rodata*);
src/tileset_anim.o(.rodata*);
src/palette.o(.rodata*);
src/sound.o(.rodata*);
- src/battle/battle_anim.o(.rodata*);
+ src/battle_anim.o(.rodata*);
src/rom_8077ABC.o(.rodata*);
data/map_events.o(.rodata*);
- data/unused_orb.o(.rodata*); /* these files are clearly the rodata* for latter part of rom_8077ABC, but the linker linked map_events before these objects for some reason. perhaps it was compiling and linking 2 folders at the same time? */
+ data/unused_orb.o(.rodata*); /* these files are clearly the rodata for latter part of rom_8077ABC, but the linker linked map_events before these objects for some reason. perhaps it was compiling and linking 2 folders at the same time? */
data/gray_sun.o(.rodata*);
data/sparkle.o(.rodata*);
data/unused_paw.o(.rodata*);
data/unused_hit.o(.rodata*);
data/unused_orb2.o(.rodata*);
src/task.o(.rodata*);
- src/battle/reshow_battle_screen.o(.rodata*);
- src/battle/battle_anim_807B69C.o(.rodata*);
+ src/reshow_battle_screen.o(.rodata*);
+ src/battle_anim_status_effects.o(.rodata*);
src/title_screen.o(.rodata*);
src/field_weather.o(.rodata*);
src/field_weather_effects.o(.rodata*);
src/field_fadetransition.o(.rodata*);
src/field_screen_effect.o(.rodata*);
- src/battle/battle_setup.o(.rodata*);
+ src/battle_setup.o(.rodata*);
src/cable_club.o(.rodata*);
src/debug/tomomichi_debug_menu.o(.rodata*);
src/debug/nohara_debug_menu.o(.rodata*);
@@ -560,7 +559,7 @@ SECTIONS {
src/option_menu.o(.rodata*);
src/pokedex.o(.rodata*);
src/trainer_card.o(.rodata*);
- src/battle/battle_party_menu.o(.rodata*);
+ src/battle_party_menu.o(.rodata*);
src/pokemon_storage_system.o(.rodata*);
src/pokemon_storage_system_2.o(.rodata*);
src/pokemon_storage_system_3.o(.rodata*);
@@ -571,37 +570,36 @@ SECTIONS {
src/fldeff_cut.o(.rodata*);
src/debug/kagaya_debug_menu.o(.rodata*);
src/item_menu.o(.rodata*);
- src/battle/battle_anim_80A7E7C.o(.rodata*);
+ src/battle_anim_mon_movement.o(.rodata*);
src/item.o(.rodata*);
src/debug/matsuda_debug_menu.o(.rodata*);
- src/contest.o(.rodata*);
+ src/contest.o(.rodata*);
data/contest.o(.rodata*);
src/shop.o(.rodata*);
src/fldeff_escalator.o(.rodata*);
src/berry.o(.rodata*);
src/debug/watanabe_debug_menu.o(.rodata*);
- src/debug/watanabe_debug_menu.o(.data*);
+ src/debug/watanabe_debug_menu.o(.data);
src/script_menu.o(.rodata*);
src/naming_screen.o(.rodata*);
src/money.o(.rodata*);
src/contest_effect.o(.rodata*);
- src/record_mixing.o(.data*);
+ src/record_mixing.o(.data);
src/record_mixing.o(.rodata*);
src/debug/sound_check_menu.o(.rodata*);
src/secret_base.o(.rodata*);
src/tv.o(.rodata*);
- src/battle/contest_link_80C2020.o(.rodata*);
- src/script_pokemon_util_80C4BF0.o(.rodata*);
+ src/contest_link_80C2020.o(.rodata*);
src/pokemon_size_record.o(.rodata*);
src/pc_screen_effect.o(.rodata*);
- src/pc_screen_effect.o(.data*);
+ src/pc_screen_effect.o(.data);
src/fldeff_secretpower.o(.rodata*);
src/fldeff_secret_base_pc.o(.rodata*);
src/fldeff_decoration.o(.rodata*);
src/fldeff_recordmixing.o(.rodata*);
src/field_special_scene.o(.rodata*);
src/rotating_gate.o(.rodata*);
- src/battle/contest_link_80C857C.o(.rodata*);
+ src/contest_link_80C857C.o(.rodata*);
src/item_use.o(.rodata*);
src/battle/anim/powder.o(.rodata*);
src/battle/anim/orbs.o(.rodata*);
@@ -715,7 +713,7 @@ SECTIONS {
src/bike.o(.rodata*);
src/easy_chat_1.o(.rodata*);
src/easy_chat_2.o(.rodata*);
- src/easy_chat_2.o(.data*);
+ src/easy_chat_2.o(.data);
src/pokenav_before.o(.rodata*);
src/pokenav.o(.rodata*);
data/pokenav.o(.rodata*);
@@ -732,7 +730,7 @@ SECTIONS {
src/decoration.o(.rodata*);
src/slot_machine.o(.rodata*);
src/contest_painting.o(.rodata*);
- src/battle/battle_ai.o(.rodata*);
+ src/battle_ai_script_commands.o(.rodata*);
src/trader.o(.rodata*);
src/starter_choose.o(.rodata*);
src/wallclock.o(.rodata*);
@@ -740,35 +738,35 @@ SECTIONS {
src/fldeff_flash.o(.rodata*);
src/time_events.o(.rodata*);
src/field_specials.o(.rodata*);
- src/battle/battle_records.o(.rodata*);
+ src/battle_records.o(.rodata*);
src/pokedex_area_screen.o(.rodata*);
src/evolution_scene.o(.rodata*);
src/roulette.o(.rodata*);
src/roulette_gfx.o(.rodata*);
src/pokedex_cry_screen.o(.rodata*);
- src/pokedex_cry_screen.o(.data*);
+ src/pokedex_cry_screen.o(.data);
src/landmark.o(.rodata*);
- src/battle/battle_transition.o(.rodata*);
- src/battle/battle_controller_linkpartner.o(.rodata*);
- src/battle/battle_message.o(.rodata*);
+ src/battle_transition.o(.rodata*);
+ src/battle_controller_link_partner.o(.rodata*);
+ src/battle_message.o(.rodata*);
src/choose_party.o(.rodata*);
src/cable_car.o(.rodata*);
src/save.o(.rodata*);
src/debug/ereader_debug_menu.o(.rodata*);
src/field_effect_helpers.o(.rodata*);
src/contest_ai.o(.rodata*);
- src/battle/battle_controller_safari.o(.rodata*);
- src/battle/battle_anim_812C144.o(.rodata*);
+ src/battle_controller_safari.o(.rodata*);
+ src/battle_anim_effects_3.o(.rodata*);
src/move_tutor_menu.o(.rodata*);
src/decoration_inventory.o(.rodata*);
src/roamer.o(.rodata*);
src/battle_tower.o(.rodata*);
src/use_pokeblock.o(.rodata*);
- src/battle/battle_controller_wally.o(.rodata*);
+ src/battle_controller_wally.o(.rodata*);
src/player_pc.o(.rodata*);
src/intro.o(.rodata*);
src/field_region_map.o(.rodata*);
- src/battle/battle_anim_813F0F4.o(.rodata*);
+ src/battle_anim_special.o(.rodata*);
src/hall_of_fame.o(.rodata*);
src/credits.o(.rodata*);
src/lottery_corner.o(.rodata*);
diff --git a/misc.mk b/misc.mk
index 40234c81b..589a60b73 100644
--- a/misc.mk
+++ b/misc.mk
@@ -111,6 +111,13 @@ $(MENUGFXDIR)/hp_numbers.4bpp: $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbe
@cat $(MENUGFXDIR)/hpbar_anim.4bpp $(MENUGFXDIR)/numbers1.4bpp $(MENUGFXDIR)/numbers2.4bpp >$@
+#### Battle Interface ####
+
+BATTLEINTERFACEDIR := graphics/battle_interface
+
+$(BATTLEINTERFACEDIR)/healthbox_elements.4bpp: $(BATTLEINTERFACEDIR)/hpbar.4bpp $(BATTLEINTERFACEDIR)/expbar.4bpp $(BATTLEINTERFACEDIR)/status_psn.4bpp $(BATTLEINTERFACEDIR)/status_par.4bpp $(BATTLEINTERFACEDIR)/status_slp.4bpp $(BATTLEINTERFACEDIR)/status_frz.4bpp $(BATTLEINTERFACEDIR)/status_brn.4bpp $(BATTLEINTERFACEDIR)/misc.4bpp $(BATTLEINTERFACEDIR)/hpbar_anim.4bpp $(BATTLEINTERFACEDIR)/misc_frameend.4bpp
+ cat $^ > $@
+
#### PokeNav ####
PKNAVGFXDIR := graphics/pokenav
diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c
index a189b1425..c18f5790c 100644
--- a/src/battle/anim/battle_intro.c
+++ b/src/battle/anim/battle_intro.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "battle.h"
#include "battle_anim.h"
#include "battle_anim_80CA710.h"
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
index 9b447ce5a..23bf9373d 100644
--- a/src/battle/anim/current.c
+++ b/src/battle/anim/current.c
@@ -4,7 +4,7 @@
#include "rom_8077ABC.h"
#include "sound.h"
#include "trig.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "constants/songs.h"
extern s16 gBattleAnimArgs[];
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index 47f86b744..f98623ee6 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -9,7 +9,7 @@
#include "sound.h"
#include "sprite.h"
#include "trig.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
extern s16 gBattleAnimArgs[];
extern u8 gBattleAnimAttacker;
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c
index f51a5c56c..6b8d8a3b5 100644
--- a/src/battle/anim/fight.c
+++ b/src/battle/anim/fight.c
@@ -5,7 +5,7 @@
#include "sprite.h"
#include "task.h"
#include "trig.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
extern s16 gBattleAnimArgs[];
extern u8 gBankAttacker;
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index 69d47a998..d2db76975 100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
@@ -7,7 +7,7 @@
#include "scanline_effect.h"
#include "sound.h"
#include "trig.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "constants/songs.h"
extern s16 gBattleAnimArgs[];
diff --git a/src/battle/anim/ice.c b/src/battle/anim/ice.c
index fed21ebe9..76300df4b 100644
--- a/src/battle/anim/ice.c
+++ b/src/battle/anim/ice.c
@@ -4,7 +4,7 @@
#include "rom_8077ABC.h"
#include "battle.h"
#include "battle_anim.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "task.h"
#include "decompress.h"
#include "palette.h"
diff --git a/src/battle/anim/normal.c b/src/battle/anim/normal.c
index 4ac8737ad..b611ca62e 100644
--- a/src/battle/anim/normal.c
+++ b/src/battle/anim/normal.c
@@ -10,7 +10,7 @@
#include "sound.h"
#include "task.h"
#include "trig.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "constants/songs.h"
extern s16 gBattleAnimArgs[];
diff --git a/src/battle/anim/roots.c b/src/battle/anim/roots.c
index e2dd4a2af..245f201dd 100644
--- a/src/battle/anim/roots.c
+++ b/src/battle/anim/roots.c
@@ -6,7 +6,11 @@
extern s16 gBattleAnimArgs[];
extern u8 gBattleAnimAttacker;
extern u8 gBattleAnimTarget;
-extern s16 gUnknown_03000728[];
+
+BSS_DATA u32 filler_03000724;
+BSS_DATA u16 gUnknown_03000728[4];
+BSS_DATA u16 gUnknown_03000730[6];
+BSS_DATA u32 filler_0300073c;
void sub_80CB59C(struct Sprite* sprite);
void sub_80CB620(struct Sprite *sprite);
diff --git a/src/battle/battle_anim_80CA710.c b/src/battle/battle_anim_80CA710.c
deleted file mode 100644
index 75168f083..000000000
--- a/src/battle/battle_anim_80CA710.c
+++ /dev/null
@@ -1,18 +0,0 @@
-
-// Includes
-#include "global.h"
-
-// Static type declarations
-
-// Static RAM declarations
-
-BSS_DATA u32 filler_03000724;
-BSS_DATA u16 gUnknown_03000728[4];
-BSS_DATA u16 gUnknown_03000730[6];
-BSS_DATA u32 filler_0300073c;
-
-// Static ROM declarations
-
-// .rodata
-
-// .text
diff --git a/src/battle/battle_ai.c b/src/battle_ai_script_commands.c
index e192251d0..57fb479e9 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle_ai_script_commands.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "battle_ai.h"
+#include "battle_ai_script_commands.h"
#include "constants/abilities.h"
#include "battle.h"
#include "constants/battle_move_effects.h"
diff --git a/src/battle/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 4dd7614bf..2cf11b50e 100644
--- a/src/battle/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -16,7 +16,6 @@
extern u8 gUnknown_02023A14_50;
-extern u8 gLastHitBy[];
extern u8 gActiveBattler;
extern u16 gBattleTypeFlags;
extern u8 gAbsentBattlerFlags;
diff --git a/src/battle/battle_anim.c b/src/battle_anim.c
index 287d80ab1..287d80ab1 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle_anim.c
diff --git a/src/battle/battle_anim_812C144.c b/src/battle_anim_effects_3.c
index 90e7d8e2c..90e7d8e2c 100644
--- a/src/battle/battle_anim_812C144.c
+++ b/src/battle_anim_effects_3.c
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle_anim_mon_movement.c
index 5e713a3a7..5e713a3a7 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle_anim_mon_movement.c
diff --git a/src/battle/battle_anim_813F0F4.c b/src/battle_anim_special.c
index 9ea0585d1..7d158f671 100755
--- a/src/battle/battle_anim_813F0F4.c
+++ b/src/battle_anim_special.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "battle_interface.h"
#include "blend_palette.h"
#include "decompress.h"
diff --git a/src/battle/battle_anim_807B69C.c b/src/battle_anim_status_effects.c
index 90e6ce38c..90e6ce38c 100644
--- a/src/battle/battle_anim_807B69C.c
+++ b/src/battle_anim_status_effects.c
diff --git a/src/battle/battle_bg.c b/src/battle_bg.c
index 4928708e0..c3877ec1c 100644
--- a/src/battle/battle_bg.c
+++ b/src/battle_bg.c
@@ -635,10 +635,10 @@ void sub_800DE30(u8 taskId)
void LoadBattleEntryBackground(void) {
if (gBattleTypeFlags & BATTLE_TYPE_LINK) {
- LZDecompressVram(gVersusFrameGfx, (void *)0x6004000);
- LZDecompressVram(gVersusFrameTilemap, (void *)0x600e000);
- LZDecompressVram(gVersusFrameTilemap, (void *)0x600f000);
- LZDecompressVram(gUnknown_08E5DC2C, (void *)0x6010000);
+ LZDecompressVram(gVersusFrameGfx, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gVersusFrameTilemap, (void *)(VRAM + 0xE000));
+ LZDecompressVram(gVersusFrameTilemap, (void *)(VRAM + 0xF000));
+ LZDecompressVram(gUnknown_08E5DC2C, (void *)(VRAM + 0x10000));
LoadCompressedPalette(gVersusFramePal, 0x60, 0x20);
REG_BG1CNT = 0x5c04;
REG_WININ = 0x36;
@@ -648,47 +648,47 @@ void LoadBattleEntryBackground(void) {
LoadCompressedObjectPic(gUnknown_081F95A4);
return;
} else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) {
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
return;
} else if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
if (gGameVersion == VERSION_RUBY) {
- LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)0x6004000);
- LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void *)(VRAM + 0xE000));
return;
} else {
- LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)0x6004000);
- LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void *)(VRAM + 0xE000));
return;
}
} else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
return;
} else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
return;
}
}
if (sav1_map_get_battletype() == 0) {
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void *)0x6004000);
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(VRAM + 0xE000));
return;
}
- LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)0x6004000);
- LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)0x600e000);
+ LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(VRAM + 0x4000));
+ LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(VRAM + 0xE000));
}
int LoadChosenBattleElement(u8 type) {
int ret = 0;
switch (type) {
case 0:
- LZDecompressVram(&gBattleTextboxTiles, (void *)0x6000000);
+ LZDecompressVram(&gBattleTextboxTiles, (void *)VRAM);
break;
case 1:
- CpuCopy16(gBattleTextboxTilemap, (void *)0x600c000, 0x1000);
+ CpuCopy16(gBattleTextboxTilemap, (void *)(VRAM + 0xC000), 0x1000);
break;
case 2:
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x40);
@@ -697,106 +697,106 @@ int LoadChosenBattleElement(u8 type) {
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
if (gGameVersion == VERSION_RUBY) {
- LZDecompressVram(gBattleTerrainTiles_Cave, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Cave, (void *)(VRAM + 0x8000));
break;
} else {
- LZDecompressVram(gBattleTerrainTiles_Water, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Water, (void *)(VRAM + 0x8000));
break;
}
} else {
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
- LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)(VRAM + 0x8000));
break;
} else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
break;
}
}
switch (sav1_map_get_battletype()) {
case 0:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tileset, (void *)(VRAM + 0x8000));
break;
case 2:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
break;
case 3:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
break;
case 4:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
break;
case 5:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
break;
case 6:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
break;
case 7:
- LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(VRAM + 0x8000));
break;
case 1:
case 8:
- LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)(VRAM + 0x8000));
break;
}
break;
}
} else {
- LZDecompressVram(gBattleTerrainTiles_Building, (void *)0x6008000);
+ LZDecompressVram(gBattleTerrainTiles_Building, (void *)(VRAM + 0x8000));
break;
}
case 4: // tilemap
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) {
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) {
if (gGameVersion == 2) {
- LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Cave, (void *)(VRAM + 0xD000));
break;
} else {
- LZDecompressVram(gBattleTerrainTilemap_Water, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(VRAM + 0xD000));
break;
}
} else {
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) {
if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x19) {
- LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(VRAM + 0xD000));
break;
} else if (gTrainers[gTrainerBattleOpponent].trainerClass == 0x20) {
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
break;
}
}
switch (sav1_map_get_battletype()) {
case 0:
- LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTable[gBattleTerrain].tilemap, (void *)(VRAM + 0xD000));
break;
case 2:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
break;
case 3:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
break;
case 4:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
break;
case 5:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
break;
case 6:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
break;
case 7:
- LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(VRAM + 0xD000));
break;
case 1:
case 8:
- LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(VRAM + 0xD000));
break;
}
break;
}
} else {
- LZDecompressVram(gBattleTerrainTilemap_Building, (void *)0x600d000);
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(VRAM + 0xD000));
break;
}
case 5: // palette
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle_controller_link_opponent.c
index 05a6f8ac0..e8c7b7bf0 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "battle_interface.h"
#include "data2.h"
#include "link.h"
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle_controller_link_partner.c
index 018fd1bf0..16e0cb6e8 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle_controller_link_partner.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "battle_interface.h"
#include "data2.h"
#include "battle_811DA74.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "link.h"
#include "m4a.h"
#include "main.h"
diff --git a/src/battle/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 8717f7f82..a0fd933e7 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -5,7 +5,7 @@
#include "battle_interface.h"
#include "data2.h"
#include "battle_811DA74.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "battle_tower.h"
#include "link.h"
#include "m4a.h"
diff --git a/src/battle/battle_controller_player.c b/src/battle_controller_player.c
index 5dde153e6..948775cb4 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -2,7 +2,7 @@
#include "data2.h"
#include "battle.h"
#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "battle_interface.h"
#include "battle_message.h"
#include "item.h"
diff --git a/src/battle/battle_controller_safari.c b/src/battle_controller_safari.c
index 1722925f3..1722925f3 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
diff --git a/src/battle/battle_controller_wally.c b/src/battle_controller_wally.c
index 9be426187..493daa3d1 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "battle_interface.h"
#include "battle_message.h"
#include "data2.h"
diff --git a/src/battle/battle_7.c b/src/battle_gfx_sfx_util.c
index 0ff44a249..0dc810785 100644
--- a/src/battle/battle_7.c
+++ b/src/battle_gfx_sfx_util.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "battle_interface.h"
#include "blend_palette.h"
#include "contest.h"
diff --git a/src/battle/battle_interface.c b/src/battle_interface.c
index 9cc1c3c58..2dcf6d3d4 100644
--- a/src/battle/battle_interface.c
+++ b/src/battle_interface.c
@@ -1350,11 +1350,11 @@ void sub_8044338(u8 a, struct Pokemon *pkmn)
int foo;
foo = gSprites[a].oam.tileNum + MACRO1(r7);
- CpuCopy32(r6, (u8 *)0x06010000 + foo * 32, 32);
+ CpuCopy32(r6, (u8 *)(VRAM + 0x10000) + foo * 32, 32);
r6 += 32;
foo = gSprites[a].oam.tileNum + 8 + MACRO1(r7);
- CpuCopy32(r6, (u8 *)0x06010000 + foo * 32, 32);
+ CpuCopy32(r6, (u8 *)(VRAM + 0x10000) + foo * 32, 32);
r6 += 32;
}
//_08044486
@@ -1370,12 +1370,12 @@ void sub_8044338(u8 a, struct Pokemon *pkmn)
if (r7 <= 1)
{
int foo = (gSprites[r5].oam.tileNum + 2 + r7);
- CpuCopy32(ewram0_9(1) + r7 * 0x40, (u8 *)0x06010000 + foo * 32, 32);
+ CpuCopy32(ewram0_9(1) + r7 * 0x40, (u8 *)(VRAM + 0x10000) + foo * 32, 32);
}
else
{
int foo = (r7 + gSprites[r5].oam.tileNum);
- CpuCopy32(ewram0_9(1) + r7 * 0x40, (u8 *)0x060100C0 + foo * 32, 32);
+ CpuCopy32(ewram0_9(1) + r7 * 0x40, (u8 *)(VRAM + 0x100C0) + foo * 32, 32);
}
}
}
@@ -1524,7 +1524,7 @@ _08044446:\n\
lsls r5, 6\n\
adds r0, r5\n\
lsls r0, 5\n\
- ldr r2, _08044500 @ =0x06010000\n\
+ ldr r2, _08044500 @ =(VRAM + 0x10000)\n\
adds r1, r0, r2\n\
adds r0, r6, 0\n\
mov r2, r10\n\
@@ -1538,7 +1538,7 @@ _08044446:\n\
adds r0, r4\n\
adds r0, r5\n\
lsls r0, 5\n\
- ldr r2, _08044500 @ =0x06010000\n\
+ ldr r2, _08044500 @ =(VRAM + 0x10000)\n\
adds r1, r0, r2\n\
adds r0, r6, 0\n\
mov r2, r10\n\
@@ -1596,7 +1596,7 @@ _080444DA:\n\
adds r0, r7, 0x2\n\
adds r1, r0\n\
lsls r1, 5\n\
- ldr r0, _08044500 @ =0x06010000\n\
+ ldr r0, _08044500 @ =(VRAM + 0x10000)\n\
adds r1, r0\n\
adds r0, r4, 0\n\
ldr r2, _080444F8 @ =REG_BG0CNT\n\
diff --git a/src/battle/battle_2.c b/src/battle_main.c
index 411a1ae46..a0eb7274f 100644
--- a/src/battle/battle_2.c
+++ b/src/battle_main.c
@@ -8,7 +8,7 @@
#include "constants/species.h"
#include "gba/flash_internal.h"
#include "battle.h"
-#include "battle_ai.h"
+#include "battle_ai_script_commands.h"
#include "battle_interface.h"
#include "battle_message.h"
#include "battle_setup.h"
@@ -97,7 +97,6 @@ extern u16 gLastLandedMoves[];
extern u16 gLastHitByType[];
extern u16 gUnknown_02024C4C[];
extern u16 gLockedMoves[];
-extern u8 gLastHitBy[];
extern u16 gChosenMovesByBanks[];
extern u32 gHitMarker;
extern u8 gUnknown_02024C70[];
@@ -2514,7 +2513,7 @@ void debug_sub_8012688(void)
&gMonFrontPicTable[gCurrentMove],
gMonFrontPicCoords[gCurrentMove].coords,
gMonFrontPicCoords[gCurrentMove].y_offset,
- (void *)0x02000000,
+ (void *)EWRAM,
gUnknown_081FAF4C[1],
gCurrentMove);
LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
@@ -2574,7 +2573,7 @@ void debug_sub_80129F8(u8 taskId)
&gMonFrontPicTable[gCurrentMove],
gMonFrontPicCoords[gCurrentMove].coords,
gMonFrontPicCoords[gCurrentMove].y_offset,
- (void *)0x02000000,
+ (void *)EWRAM,
gUnknown_081FAF4C[1],
gCurrentMove);
LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
diff --git a/src/battle/battle_message.c b/src/battle_message.c
index 30d127be3..6f3fa63c6 100644
--- a/src/battle/battle_message.c
+++ b/src/battle_message.c
@@ -20,9 +20,9 @@
#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB
#ifdef GERMAN
-#include "../data/battle_strings_de.h" // TODO: German
+#include "data/battle_strings_de.h" // TODO: German
#else
-#include "../data/battle_strings_en.h"
+#include "data/battle_strings_en.h"
#endif
// This is four lists of moves which use a different attack string in Japanese
diff --git a/src/battle/battle_party_menu.c b/src/battle_party_menu.c
index e758b7957..e758b7957 100644
--- a/src/battle/battle_party_menu.c
+++ b/src/battle_party_menu.c
diff --git a/src/battle/battle_records.c b/src/battle_records.c
index d94d88032..d94d88032 100644
--- a/src/battle/battle_records.c
+++ b/src/battle_records.c
diff --git a/src/battle/battle_4.c b/src/battle_script_commands.c
index a84e16116..dab6ce1f0 100644
--- a/src/battle/battle_4.c
+++ b/src/battle_script_commands.c
@@ -5541,7 +5541,7 @@ static void atk23_getexp(void)
gBattleResources_statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED);
gBattleResources_statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK);
gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF);
-
+
gActiveBattler = gBattleStruct->expGetterBank;
EmitExpBarUpdate(0, gBattleStruct->expGetterID, gBattleMoveDamage);
@@ -6752,52 +6752,75 @@ _080217E6:\n\
#endif // NONMATCHING
-#ifdef NONMATCHING
-static void atk49_moveend(void)
+#define BattleScript_FlushMessageBox gUnknown_081D9B2D
+
+extern u8 BattleScript_RageIsBuilding[];
+extern u8 BattleScript_DefrostedViaFireMove[];
+extern u8 BattleScript_FlushMessageBox[];
+
+// atk49, moveend cases
+#define ATK49_RAGE 0
+#define ATK49_DEFROST 1
+#define ATK49_SYNCHRONIZE_TARGET 2
+#define ATK49_MOVE_END_ABILITIES 3
+#define ATK49_STATUS_IMMUNITY_ABILITIES 4
+#define ATK49_SYNCHRONIZE_ATTACKER 5
+#define ATK49_CHOICE_MOVE 6
+#define ATK49_CHANGED_ITEMS 7
+#define ATK49_ATTACKER_INVISIBLE 8
+#define ATK49_ATTACKER_VISIBLE 9
+#define ATK49_TARGET_VISIBLE 10
+#define ATK49_ITEM_EFFECTS_ALL 11
+#define ATK49_KINGSROCK_SHELLBELL 12
+#define ATK49_SUBSTITUTE 13
+#define ATK49_UPDATE_LAST_MOVES 14
+#define ATK49_MIRROR_MOVE 15
+#define ATK49_NEXT_TARGET 16
+#define ATK49_COUNT 17
+
+void atk49_moveend(void)
{
int i;
- int effect = 0;
- u16 last_move = 0, *choiced_move_atk;
- int arg1, arg2, hold_effect_atk, move_type;
- if (gLastUsedMove != 0xFFFF)
- last_move = gLastUsedMove;
+ bool32 effect = FALSE;
+ u16 moveType;
+ u8 holdEffectAtk;
+ u16 *choicedMoveAtk;
+ u8 arg1, arg2;
arg1 = T2_READ_8(gBattlescriptCurrInstr + 1);
arg2 = T2_READ_8(gBattlescriptCurrInstr + 2);
- if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
- hold_effect_atk = gEnigmaBerries[gBankAttacker].holdEffect;
- else
- hold_effect_atk = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
- choiced_move_atk = (u16*)(gBankAttacker * (ewram_addr + 0x160E8));
- if (gBattleStruct->dynamicMoveType)
- move_type = gBattleStruct->dynamicMoveType & 0x3F;
+ if (gBattleMons[gBankAttacker].item == ITEM_ENIGMA_BERRY)
+ holdEffectAtk = gEnigmaBerries[gBankAttacker].holdEffect;
else
- move_type = gBattleMoves[gCurrentMove].type;
+ holdEffectAtk = ItemId_GetHoldEffect(gBattleMons[gBankAttacker].item);
+
+ choicedMoveAtk = &((u16*)(gSharedMem + 0x160E8))[gBankAttacker];
+ GET_MOVE_TYPE(gCurrentMove, moveType);
do
{
switch (gBattleStruct->cmd49StateTracker)
{
- case 0: //rage check
+ case ATK49_RAGE: // rage check
if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE
- && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
+ && gBattleMons[gBankTarget].hp != 0 && gBankAttacker != gBankTarget
&& GetBattlerSide(gBankAttacker) != GetBattlerSide(gBankTarget)
- && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && (gProtectStructs[gBankTarget].physicalDmg != 0 || gProtectStructs[gBankTarget].specialDmg != 0)
&& gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB)
{
gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_RageIsBuilding;
- effect = 1;
+ effect = TRUE;
}
gBattleStruct->cmd49StateTracker++;
break;
- case 1: //defrosting check
+ case ATK49_DEFROST: // defrosting check
if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE
&& gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
- && gSpecialStatuses[gBankTarget].moveturnLostHP
- && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && move_type == TYPE_FIRE)
+ && gSpecialStatuses[gBankTarget].moveturnLostHP_special
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && moveType == TYPE_FIRE)
{
gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE);
gActiveBattler = gBankTarget;
@@ -6805,55 +6828,79 @@ static void atk49_moveend(void)
MarkBufferBankForExecution(gActiveBattler);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove;
- effect = 1;
+ effect = TRUE;
}
gBattleStruct->cmd49StateTracker++;
break;
- case 2: //target synchronize
+ case ATK49_SYNCHRONIZE_TARGET: // target synchronize
if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0))
- effect = 1;
+ effect = TRUE;
gBattleStruct->cmd49StateTracker++;
break;
- case 3: //contact abilities
- if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0))
- effect = 1;
+ case ATK49_MOVE_END_ABILITIES: // Such as abilities activating on contact(Poison Spore, Rough Skin, etc.).
+ if (AbilityBattleEffects(ABILITYEFFECT_MOVE_END, gBankTarget, 0, 0, 0))
+ effect = TRUE;
gBattleStruct->cmd49StateTracker++;
break;
- case 4: //status immunities
+ case ATK49_STATUS_IMMUNITY_ABILITIES: //status immunities
if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0))
- effect = 1; //it loops through 4 banks, so we increment after its done with all banks
+ effect = TRUE; //it loops through 4 banks, so we increment after its done with all banks
else
gBattleStruct->cmd49StateTracker++;
break;
- case 5: //attacker synchronize
+ case ATK49_SYNCHRONIZE_ATTACKER: //attacker synchronize
if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0))
- effect = 1;
+ effect = TRUE;
gBattleStruct->cmd49StateTracker++;
break;
- case 6: //update choice band move
- if (gHitMarker & HITMARKER_OBEYS && hold_effect_atk == HOLD_EFFECT_CHOICE_BAND
- && gLastUsedMove != MOVE_STRUGGLE && (*choiced_move_atk == 0 || *choiced_move_atk == 0xFFF)
- && gLastUsedMove != MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
+ case ATK49_CHOICE_MOVE: //update choice band move
+ if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
+ || gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
+ goto LOOP;
+ if (gChosenMove == MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_FAILED))
{
- *choiced_move_atk = gLastUsedMove;
- for (i = 0; i < 4 && gBattleMons[gBankAttacker].moves[i] != *choiced_move_atk; i++){}
+ gBattleStruct->cmd49StateTracker++;
+ break;
+ }
+ *choicedMoveAtk = gChosenMove;
+ LOOP:
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == *choicedMoveAtk)
+ break;
+ }
if (i == 4)
- *choiced_move_atk = 0;
+ *choicedMoveAtk = 0;
+ gBattleStruct->cmd49StateTracker++;
}
- gBattleStruct->cmd49StateTracker++;
break;
- case 7: //changed held items
+ case ATK49_CHANGED_ITEMS: // changed held items
for (i = 0; i < gBattlersCount; i++)
{
- #define CHANGED_ITEM (((*u16)(gSharedMem + 0x160F0)))
- if (CHANGED_ITEM(i))
- gBattleMons[i].item = CHANGED_ITEM(i);
+ #define CHANGED_ITEM ((u16 *)(gSharedMem + 0x160F0))
+ if (CHANGED_ITEM[i] != 0)
+ {
+ gBattleMons[i].item = CHANGED_ITEM[i];
+ CHANGED_ITEM[i] = 0;
+ }
+ #undef CHANGED_ITEM
}
gBattleStruct->cmd49StateTracker++;
break;
- case 8: //make sprite invisible
- if (gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)
- && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ case ATK49_ATTACKER_INVISIBLE: // make attacker sprite invisible
+ if (ItemBattleEffects(ITEMEFFECT_MOVE_END, 0, FALSE))
+ effect = TRUE;
+ else
+ gBattleStruct->cmd49StateTracker++;
+ break;
+ case ATK49_ATTACKER_VISIBLE: // make attacker sprite visible
+ if (ItemBattleEffects(ITEMEFFECT_KINGSROCK_SHELLBELL, 0, FALSE))
+ effect = TRUE;
+ gBattleStruct->cmd49StateTracker++;
+ break;
+ case ATK49_TARGET_VISIBLE: // make target sprite visible
+ if ((gStatuses3[gBankAttacker] & 0x400C0) && (gHitMarker & HITMARKER_NO_ANIMATIONS))
{
gActiveBattler = gBankAttacker;
EmitSpriteInvisibility(0, 1);
@@ -6861,1347 +6908,148 @@ static void atk49_moveend(void)
}
gBattleStruct->cmd49StateTracker++;
break;
- case 9: //semi-invlurneable attacker make visible
- if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ case ATK49_ITEM_EFFECTS_ALL: // item effects for all battlers
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT
+ || !(gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE))
|| WasUnableToUseMove(gBankAttacker))
+ {
+ gActiveBattler = gBankAttacker;
+ EmitSpriteInvisibility(0, FALSE);
+ MarkBufferBankForExecution(gActiveBattler);
+ gStatuses3[gBankAttacker] &= ~(STATUS3_SEMI_INVULNERABLE);
+ gSpecialStatuses[gBankAttacker].restoredBankSprite = 1;
+ }
+ gBattleStruct->cmd49StateTracker++;
+ break;
+ case ATK49_KINGSROCK_SHELLBELL: // king's rock and shell bell
+ if (!gSpecialStatuses[gBankTarget].restoredBankSprite && gBankTarget < gBattlersCount
+ && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE))
+ {
+ gActiveBattler = gBankTarget;
+ EmitSpriteInvisibility(0, FALSE);
+ MarkBufferBankForExecution(gActiveBattler);
+ gStatuses3[gBankTarget] &= ~(STATUS3_SEMI_INVULNERABLE);
+ }
+ gBattleStruct->cmd49StateTracker++;
+ break;
+ case ATK49_SUBSTITUTE: // update substitute
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ if (gDisableStructs[i].substituteHP == 0)
+ gBattleMons[i].status2 &= ~(STATUS2_SUBSTITUTE);
+ }
+ gBattleStruct->cmd49StateTracker++;
+ break;
+ case ATK49_UPDATE_LAST_MOVES:
+ if (gHitMarker & HITMARKER_PURSUIT_TRAP)
+ {
+ gActiveBattler = gBankAttacker;
+ gBankAttacker = gBankTarget;
+ gBankTarget = gActiveBattler;
+ gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
+ }
+
+ if (gBattleMoves[gChosenMove].effect != 0x7F || (gMoveResultFlags & 0x29))
+ gUnknown_02024C2C[gBankAttacker] = gChosenMove;
+
+ if (!(gAbsentBattlerFlags & gBitTable[gBankAttacker])
+ && !(gSharedMem[0x160A6] & gBitTable[gBankAttacker])
+ && gBattleMoves[gChosenMove].effect != EFFECT_BATON_PASS)
+ {
+ if (gHitMarker & HITMARKER_OBEYS)
{
- gActiveBattler = gBankAttacker;
- EmitSpriteInvisibility(0, 0);
- MarkBufferBankForExecution(gActiveBattler);
- gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
- gSpecialStatuses[gBankAttacker].restored_bank_sprite = 1;
+ gLastUsedMove[gBankAttacker] = gChosenMove;
+ gUnknown_02024C4C[gBankAttacker] = gCurrentMove;
+ }
+ else
+ {
+ gLastUsedMove[gBankAttacker] = 0xFFFF;
+ gUnknown_02024C4C[gBankAttacker] = 0xFFFF;
}
+
+ if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget)))
+ gLastHitBy[gBankTarget] = gBankAttacker;
+
+ if (gHitMarker & HITMARKER_OBEYS && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
+ {
+ if (gChosenMove == 0xFFFF)
+ {
+ gLastLandedMoves[gBankTarget] = gChosenMove;
+ }
+ else
+ {
+ gLastLandedMoves[gBankTarget] = gCurrentMove;
+ GET_MOVE_TYPE(gCurrentMove, gLastHitByType[gBankTarget]);
+ }
+ }
+ else
+ {
+ gLastLandedMoves[gBankTarget] = 0xFFFF;
+ }
+ }
gBattleStruct->cmd49StateTracker++;
break;
- case 10: //semi-invlurneable target make visible
- if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
- || WasUnableToUseMove(gBankTarget))
+ case ATK49_MIRROR_MOVE:
+ if (!(gAbsentBattlerFlags & gBitTable[gBankAttacker]) && !(gSharedMem[0x160A6] & gBitTable[gBankAttacker]))
+ {
+ if (gBattleMoves[gChosenMove].flags & 0x10 && gHitMarker & HITMARKER_OBEYS
+ && gBankAttacker != gBankTarget && !(gHitMarker & HITMARKER_FAINTED(gBankTarget))
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBattler = gBankTarget;
- EmitSpriteInvisibility(0, 0);
- MarkBufferBankForExecution(gActiveBattler);
- gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
- gSpecialStatuses[gBankTarget].restored_bank_sprite = 1;
+ gSharedMem[0x160AC + gBankTarget * 2 + 0] = gChosenMove;
+ gSharedMem[0x160AC + gBankTarget * 2 + 1] = gChosenMove >> 8;
+
+ gSharedMem[0x16100 + gBankTarget * 4 + 0 + (gBankAttacker / 2) * 2] = gChosenMove;
+ gSharedMem[0x16100 + gBankTarget * 4 + 1 + (gBankAttacker / 2) * 2] = gChosenMove >> 8;
+ }
+ else if (gBankAttacker != gBankTarget)
+ {
+ gSharedMem[0x160AC + gBankTarget * 2 + 0] = 0;
+ gSharedMem[0x160AC + gBankTarget * 2 + 1] = 0;
+
+ gSharedMem[0x16100 + gBankTarget * 4 + 0 + (gBankAttacker / 2) * 2] = 0;
+ gSharedMem[0x16100 + gBankTarget * 4 + 1 + (gBankAttacker / 2) * 2] = 0;
+ }
+ }
+ gBattleStruct->cmd49StateTracker++;
+ break;
+ case ATK49_NEXT_TARGET:
+ if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && !gProtectStructs[gBankAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH
+ && !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
+ {
+ u8 battlerId = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBankTarget)));
+ if (gBattleMons[battlerId].hp != 0)
+ {
+ gBankTarget = battlerId;
+ gHitMarker |= HITMARKER_NO_ATTACKSTRING;
+ gBattleStruct->cmd49StateTracker = 0;
+ MoveValuesCleanUp();
+ BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]);
+ gBattlescriptCurrInstr = BattleScript_FlushMessageBox;
+ return;
+ }
+ else
+ {
+ gHitMarker |= HITMARKER_NO_ATTACKSTRING;
}
+ }
gBattleStruct->cmd49StateTracker++;
break;
- case 11: //
+ case ATK49_COUNT:
+ break;
}
- } while (effect == 0)
-}
-#else
-NAKED
-void atk49_moveend(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, 0x18\n\
- movs r0, 0\n\
- mov r10, r0\n\
- ldr r0, _08021834 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r0]\n\
- ldrb r1, [r0, 0x1]\n\
- str r1, [sp, 0x10]\n\
- ldrb r0, [r0, 0x2]\n\
- str r0, [sp, 0x14]\n\
- ldr r1, _08021838 @ =gBattleMons\n\
- ldr r0, _0802183C @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _08021844\n\
- ldr r1, _08021840 @ =gEnigmaBerries\n\
- lsls r0, r2, 3\n\
- subs r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x7]\n\
- b _0802184E\n\
- .align 2, 0\n\
-_08021834: .4byte gBattlescriptCurrInstr\n\
-_08021838: .4byte gBattleMons\n\
-_0802183C: .4byte gBankAttacker\n\
-_08021840: .4byte gEnigmaBerries\n\
-_08021844:\n\
- ldrh r0, [r1, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
-_0802184E:\n\
- str r0, [sp, 0x8]\n\
- ldr r0, _0802186C @ =gBankAttacker\n\
- ldrb r1, [r0]\n\
- lsls r1, 1\n\
- ldr r0, _08021870 @ =gSharedMem + 0x160E8\n\
- adds r1, r0\n\
- str r1, [sp, 0xC]\n\
- subs r0, 0xCC\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _080218C0\n\
- movs r2, 0x3F\n\
- ands r2, r0\n\
- str r2, [sp, 0x4]\n\
- b _080218D2\n\
- .align 2, 0\n\
-_0802186C: .4byte gBankAttacker\n\
-_08021870: .4byte gSharedMem + 0x160E8\n\
-_08021874:\n\
- strb r2, [r7]\n\
- ldr r0, [r5]\n\
- orrs r0, r6\n\
- str r0, [r5]\n\
- ldr r0, _080218AC @ =gSharedMem\n\
- ldr r3, _080218B0 @ =0x0001600c\n\
- adds r0, r3\n\
- strb r4, [r0]\n\
- bl MoveValuesCleanUp\n\
- ldr r2, _080218B4 @ =gBattleScriptsForMoveEffects\n\
- mov r4, r8\n\
- ldrh r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- add r0, r9\n\
- ldrb r0, [r0]\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- bl BattleScriptPush\n\
- ldr r1, _080218B8 @ =gBattlescriptCurrInstr\n\
- ldr r0, _080218BC @ =gUnknown_081D9B2D\n\
- bl _0802229C\n\
- .align 2, 0\n\
-_080218AC: .4byte gSharedMem\n\
-_080218B0: .4byte 0x0001600c\n\
-_080218B4: .4byte gBattleScriptsForMoveEffects\n\
-_080218B8: .4byte gBattlescriptCurrInstr\n\
-_080218BC: .4byte gUnknown_081D9B2D\n\
-_080218C0:\n\
- ldr r2, _080218D8 @ =gBattleMoves\n\
- ldr r0, _080218DC @ =gCurrentMove\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0, 0x2]\n\
- str r0, [sp, 0x4]\n\
-_080218D2:\n\
- ldr r5, _080218E0 @ =gSharedMem\n\
- mov r12, r5\n\
- b _080218EE\n\
- .align 2, 0\n\
-_080218D8: .4byte gBattleMoves\n\
-_080218DC: .4byte gCurrentMove\n\
-_080218E0: .4byte gSharedMem\n\
-_080218E4:\n\
- mov r0, r10\n\
- cmp r0, 0\n\
- beq _080218EE\n\
- bl _08022286\n\
-_080218EE:\n\
- ldr r0, _08021908 @ =0x0001600c\n\
- add r0, r12\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x11\n\
- bls _080218FC\n\
- bl _0802224E\n\
-_080218FC:\n\
- lsls r0, 2\n\
- ldr r1, _0802190C @ =_08021910\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_08021908: .4byte 0x0001600c\n\
-_0802190C: .4byte _08021910\n\
- .align 2, 0\n\
-_08021910:\n\
- .4byte _08021958\n\
- .4byte _08021A34\n\
- .4byte _08021AF0\n\
- .4byte _08021B20\n\
- .4byte _08021B44\n\
- .4byte _08021B78\n\
- .4byte _08021B9C\n\
- .4byte _08021C40\n\
- .4byte _08021C78\n\
- .4byte _08021CA8\n\
- .4byte _08021CCC\n\
- .4byte _08021D18\n\
- .4byte _08021DAC\n\
- .4byte _08021E30\n\
- .4byte _08021E70\n\
- .4byte _08022068\n\
- .4byte _080221C0\n\
- .4byte _0802224E\n\
-_08021958:\n\
- ldr r5, _08021A08 @ =gBattleMons\n\
- ldr r2, _08021A0C @ =gBankTarget\n\
- ldrb r4, [r2]\n\
- movs r6, 0x58\n\
- adds r3, r4, 0\n\
- muls r3, r6\n\
- adds r0, r5, 0\n\
- adds r0, 0x50\n\
- adds r0, r3, r0\n\
- ldr r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 16\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _080219FE\n\
- adds r0, r3, r5\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- beq _080219FE\n\
- ldr r0, _08021A10 @ =gBankAttacker\n\
- ldrb r1, [r0]\n\
- cmp r1, r4\n\
- beq _080219FE\n\
- adds r0, r1, 0\n\
- bl GetBattlerSide\n\
- adds r4, r0, 0\n\
- ldr r1, _08021A0C @ =gBankTarget\n\
- ldrb r0, [r1]\n\
- bl GetBattlerSide\n\
- lsls r4, 24\n\
- lsls r0, 24\n\
- cmp r4, r0\n\
- beq _080219FE\n\
- ldr r0, _08021A14 @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080219FE\n\
- ldr r2, _08021A18 @ =gProtectStructs\n\
- ldr r4, _08021A0C @ =gBankTarget\n\
- ldrb r3, [r4]\n\
- lsls r1, r3, 4\n\
- adds r0, r2, 0x4\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080219C8\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- beq _080219FE\n\
-_080219C8:\n\
- ldr r2, _08021A1C @ =gBattleMoves\n\
- ldr r0, _08021A20 @ =gCurrentMove\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0\n\
- beq _080219FE\n\
- adds r0, r3, 0\n\
- muls r0, r6\n\
- adds r1, r0, r5\n\
- ldrb r2, [r1, 0x19]\n\
- movs r0, 0x19\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0xB\n\
- bgt _080219FE\n\
- adds r0, r2, 0x1\n\
- strb r0, [r1, 0x19]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, _08021A24 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08021A28 @ =BattleScript_RageIsBuilding\n\
- str r0, [r1]\n\
- movs r5, 0x1\n\
- mov r10, r5\n\
-_080219FE:\n\
- ldr r2, _08021A2C @ =gSharedMem\n\
- ldr r0, _08021A30 @ =0x0001600c\n\
- adds r1, r2, r0\n\
- b _08021E00\n\
- .align 2, 0\n\
-_08021A08: .4byte gBattleMons\n\
-_08021A0C: .4byte gBankTarget\n\
-_08021A10: .4byte gBankAttacker\n\
-_08021A14: .4byte gMoveResultFlags\n\
-_08021A18: .4byte gProtectStructs\n\
-_08021A1C: .4byte gBattleMoves\n\
-_08021A20: .4byte gCurrentMove\n\
-_08021A24: .4byte gBattlescriptCurrInstr\n\
-_08021A28: .4byte BattleScript_RageIsBuilding\n\
-_08021A2C: .4byte gSharedMem\n\
-_08021A30: .4byte 0x0001600c\n\
-_08021A34:\n\
- ldr r2, _08021AD0 @ =gBattleMons\n\
- ldr r1, _08021AD4 @ =gBankTarget\n\
- ldrb r4, [r1]\n\
- movs r3, 0x58\n\
- mov r12, r3\n\
- mov r3, r12\n\
- muls r3, r4\n\
- adds r7, r2, 0\n\
- adds r7, 0x4C\n\
- adds r6, r3, r7\n\
- ldr r5, [r6]\n\
- movs r0, 0x20\n\
- ands r0, r5\n\
- cmp r0, 0\n\
- bne _08021A54\n\
- b _08021DFA\n\
-_08021A54:\n\
- adds r0, r3, r2\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08021A5E\n\
- b _08021DFA\n\
-_08021A5E:\n\
- ldr r0, _08021AD8 @ =gBankAttacker\n\
- ldrb r0, [r0]\n\
- cmp r0, r4\n\
- bne _08021A68\n\
- b _08021DFA\n\
-_08021A68:\n\
- ldr r0, _08021ADC @ =gSpecialStatuses\n\
- lsls r1, r4, 2\n\
- adds r1, r4\n\
- lsls r1, 2\n\
- adds r0, 0xC\n\
- adds r1, r0\n\
- ldr r0, [r1]\n\
- cmp r0, 0\n\
- bne _08021A7C\n\
- b _08021DFA\n\
-_08021A7C:\n\
- ldr r0, _08021AE0 @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08021A8A\n\
- b _08021DFA\n\
-_08021A8A:\n\
- ldr r4, [sp, 0x4]\n\
- cmp r4, 0xA\n\
- beq _08021A92\n\
- b _08021DFA\n\
-_08021A92:\n\
- movs r0, 0x21\n\
- negs r0, r0\n\
- ands r5, r0\n\
- str r5, [r6]\n\
- ldr r4, _08021AE4 @ =gActiveBattler\n\
- ldr r5, _08021AD4 @ =gBankTarget\n\
- ldrb r0, [r5]\n\
- strb r0, [r4]\n\
- ldrb r0, [r5]\n\
- mov r1, r12\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r0, r7\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl EmitSetMonData\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- bl BattleScriptPushCursor\n\
- ldr r1, _08021AE8 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08021AEC @ =BattleScript_DefrostedViaFireMove\n\
- str r0, [r1]\n\
- movs r2, 0x1\n\
- mov r10, r2\n\
- b _08021DFA\n\
- .align 2, 0\n\
-_08021AD0: .4byte gBattleMons\n\
-_08021AD4: .4byte gBankTarget\n\
-_08021AD8: .4byte gBankAttacker\n\
-_08021ADC: .4byte gSpecialStatuses\n\
-_08021AE0: .4byte gMoveResultFlags\n\
-_08021AE4: .4byte gActiveBattler\n\
-_08021AE8: .4byte gBattlescriptCurrInstr\n\
-_08021AEC: .4byte BattleScript_DefrostedViaFireMove\n\
-_08021AF0:\n\
- ldr r0, _08021B14 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x7\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08021B0C\n\
- movs r4, 0x1\n\
- mov r10, r4\n\
-_08021B0C:\n\
- ldr r2, _08021B18 @ =gSharedMem\n\
- ldr r5, _08021B1C @ =0x0001600c\n\
- adds r1, r2, r5\n\
- b _08021E00\n\
- .align 2, 0\n\
-_08021B14: .4byte gBankTarget\n\
-_08021B18: .4byte gSharedMem\n\
-_08021B1C: .4byte 0x0001600c\n\
-_08021B20:\n\
- ldr r0, _08021B40 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x4\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08021B3A\n\
- b _08021DFA\n\
-_08021B3A:\n\
- movs r0, 0x1\n\
- mov r10, r0\n\
- b _08021DFA\n\
- .align 2, 0\n\
-_08021B40: .4byte gBankTarget\n\
-_08021B44:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x5\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08021B68\n\
- movs r4, 0x1\n\
- mov r10, r4\n\
- ldr r5, _08021B64 @ =gSharedMem\n\
- mov r12, r5\n\
- b _0802224E\n\
- .align 2, 0\n\
-_08021B64: .4byte gSharedMem\n\
-_08021B68:\n\
- ldr r2, _08021B70 @ =gSharedMem\n\
- ldr r0, _08021B74 @ =0x0001600c\n\
- adds r1, r2, r0\n\
- b _08021E00\n\
- .align 2, 0\n\
-_08021B70: .4byte gSharedMem\n\
-_08021B74: .4byte 0x0001600c\n\
-_08021B78:\n\
- ldr r0, _08021B98 @ =gBankAttacker\n\
- ldrb r1, [r0]\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x8\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08021B92\n\
- b _08021DFA\n\
-_08021B92:\n\
- movs r1, 0x1\n\
- mov r10, r1\n\
- b _08021DFA\n\
- .align 2, 0\n\
-_08021B98: .4byte gBankAttacker\n\
-_08021B9C:\n\
- ldr r0, _08021C28 @ =gHitMarker\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 18\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08021BE0\n\
- ldr r4, [sp, 0x8]\n\
- cmp r4, 0x1D\n\
- bne _08021BE0\n\
- ldr r0, _08021C2C @ =gChosenMove\n\
- ldrh r2, [r0]\n\
- adds r7, r0, 0\n\
- cmp r2, 0xA5\n\
- beq _08021BE0\n\
- ldr r5, [sp, 0xC]\n\
- ldrh r1, [r5]\n\
- cmp r1, 0\n\
- beq _08021BC8\n\
- ldr r0, _08021C30 @ =0x0000ffff\n\
- cmp r1, r0\n\
- bne _08021BE0\n\
-_08021BC8:\n\
- cmp r2, 0xE2\n\
- bne _08021BDA\n\
- ldr r0, _08021C34 @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08021BDA\n\
- b _08022244\n\
-_08021BDA:\n\
- ldrh r0, [r7]\n\
- ldr r1, [sp, 0xC]\n\
- strh r0, [r1]\n\
-_08021BE0:\n\
- movs r4, 0\n\
- ldr r2, _08021C38 @ =gBattleMons\n\
- ldr r3, _08021C3C @ =gBankAttacker\n\
- ldrb r1, [r3]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r2, 0xC\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- ldr r5, [sp, 0xC]\n\
- ldrh r1, [r5]\n\
- mov r9, r3\n\
- cmp r0, r1\n\
- beq _08021C18\n\
- mov r6, r9\n\
- movs r3, 0x58\n\
- adds r5, r1, 0\n\
-_08021C02:\n\
- adds r4, 0x1\n\
- cmp r4, 0x3\n\
- bgt _08021C18\n\
- lsls r0, r4, 1\n\
- ldrb r1, [r6]\n\
- muls r1, r3\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- cmp r0, r5\n\
- bne _08021C02\n\
-_08021C18:\n\
- cmp r4, 0x4\n\
- beq _08021C1E\n\
- b _08022244\n\
-_08021C1E:\n\
- movs r0, 0\n\
- ldr r1, [sp, 0xC]\n\
-_08021C22:\n\
- strh r0, [r1]\n\
- b _08022244\n\
- .align 2, 0\n\
-_08021C28: .4byte gHitMarker\n\
-_08021C2C: .4byte gChosenMove\n\
-_08021C30: .4byte 0x0000ffff\n\
-_08021C34: .4byte gMoveResultFlags\n\
-_08021C38: .4byte gBattleMons\n\
-_08021C3C: .4byte gBankAttacker\n\
-_08021C40:\n\
- movs r4, 0\n\
- ldr r0, _08021C6C @ =gBattlersCount\n\
- ldrb r2, [r0]\n\
- cmp r4, r2\n\
- blt _08021C4C\n\
- b _08022244\n\
-_08021C4C:\n\
- movs r5, 0\n\
- ldr r2, _08021C70 @ =gSharedMem + 0x160F0\n\
- ldr r3, _08021C74 @ =gBattleMons\n\
-_08021C52:\n\
- ldrh r1, [r2]\n\
- cmp r1, 0\n\
- beq _08021C5C\n\
- strh r1, [r3, 0x2E]\n\
- strh r5, [r2]\n\
-_08021C5C:\n\
- adds r2, 0x2\n\
- adds r3, 0x58\n\
- adds r4, 0x1\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- blt _08021C52\n\
- b _08022244\n\
- .align 2, 0\n\
-_08021C6C: .4byte gBattlersCount\n\
-_08021C70: .4byte gSharedMem + 0x160F0\n\
-_08021C74: .4byte gBattleMons\n\
-_08021C78:\n\
- movs r0, 0x3\n\
- movs r1, 0\n\
- movs r2, 0\n\
- bl ItemBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08021C98\n\
- movs r2, 0x1\n\
- mov r10, r2\n\
- ldr r3, _08021C94 @ =gSharedMem\n\
- mov r12, r3\n\
- b _0802224E\n\
- .align 2, 0\n\
-_08021C94: .4byte gSharedMem\n\
-_08021C98:\n\
- ldr r2, _08021CA0 @ =gSharedMem\n\
- ldr r4, _08021CA4 @ =0x0001600c\n\
- adds r1, r2, r4\n\
- b _08021E00\n\
- .align 2, 0\n\
-_08021CA0: .4byte gSharedMem\n\
-_08021CA4: .4byte 0x0001600c\n\
-_08021CA8:\n\
- movs r0, 0x4\n\
- movs r1, 0\n\
- movs r2, 0\n\
- bl ItemBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08021CBC\n\
- movs r5, 0x1\n\
- mov r10, r5\n\
-_08021CBC:\n\
- ldr r2, _08021CC4 @ =gSharedMem\n\
- ldr r0, _08021CC8 @ =0x0001600c\n\
- adds r1, r2, r0\n\
- b _08021E00\n\
- .align 2, 0\n\
-_08021CC4: .4byte gSharedMem\n\
-_08021CC8: .4byte 0x0001600c\n\
-_08021CCC:\n\
- ldr r1, _08021D04 @ =gStatuses3\n\
- ldr r0, _08021D08 @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- ldr r1, _08021D0C @ =0x000400c0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08021CE2\n\
- b _08021DFA\n\
-_08021CE2:\n\
- ldr r0, _08021D10 @ =gHitMarker\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08021CF0\n\
- b _08021DFA\n\
-_08021CF0:\n\
- ldr r4, _08021D14 @ =gActiveBattler\n\
- strb r2, [r4]\n\
- movs r0, 0\n\
- movs r1, 0x1\n\
- bl EmitSpriteInvisibility\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- b _08021DFA\n\
- .align 2, 0\n\
-_08021D04: .4byte gStatuses3\n\
-_08021D08: .4byte gBankAttacker\n\
-_08021D0C: .4byte 0x000400c0\n\
-_08021D10: .4byte gHitMarker\n\
-_08021D14: .4byte gActiveBattler\n\
-_08021D18:\n\
- ldr r0, _08021D88 @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08021D44\n\
- ldr r1, _08021D8C @ =gStatuses3\n\
- ldr r0, _08021D90 @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- ldr r1, _08021D94 @ =0x000400c0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08021D44\n\
- adds r0, r2, 0\n\
- bl WasUnableToUseMove\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08021D7E\n\
-_08021D44:\n\
- ldr r4, _08021D98 @ =gActiveBattler\n\
- ldr r5, _08021D90 @ =gBankAttacker\n\
- ldrb r0, [r5]\n\
- strb r0, [r4]\n\
- movs r0, 0\n\
- movs r1, 0\n\
- bl EmitSpriteInvisibility\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- ldr r0, _08021D8C @ =gStatuses3\n\
- ldrb r2, [r5]\n\
- lsls r2, 2\n\
- adds r2, r0\n\
- ldr r0, [r2]\n\
- ldr r1, _08021D9C @ =0xfffbff3f\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r2, _08021DA0 @ =gSpecialStatuses\n\
- ldrb r1, [r5]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- movs r2, 0x4\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
-_08021D7E:\n\
- ldr r2, _08021DA4 @ =gSharedMem\n\
- ldr r4, _08021DA8 @ =0x0001600c\n\
- adds r1, r2, r4\n\
- b _08021E00\n\
- .align 2, 0\n\
-_08021D88: .4byte gMoveResultFlags\n\
-_08021D8C: .4byte gStatuses3\n\
-_08021D90: .4byte gBankAttacker\n\
-_08021D94: .4byte 0x000400c0\n\
-_08021D98: .4byte gActiveBattler\n\
-_08021D9C: .4byte 0xfffbff3f\n\
-_08021DA0: .4byte gSpecialStatuses\n\
-_08021DA4: .4byte gSharedMem\n\
-_08021DA8: .4byte 0x0001600c\n\
-_08021DAC:\n\
- ldr r2, _08021E0C @ =gSpecialStatuses\n\
- ldr r1, _08021E10 @ =gBankTarget\n\
- ldrb r3, [r1]\n\
- lsls r4, r3, 2\n\
- adds r0, r4, r3\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- lsls r0, 29\n\
- cmp r0, 0\n\
- blt _08021DFA\n\
- ldr r0, _08021E14 @ =gBattlersCount\n\
- ldrb r0, [r0]\n\
- cmp r3, r0\n\
- bcs _08021DFA\n\
- ldr r5, _08021E18 @ =gStatuses3\n\
- adds r0, r4, r5\n\
- ldr r0, [r0]\n\
- ldr r1, _08021E1C @ =0x000400c0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08021DFA\n\
- ldr r4, _08021E20 @ =gActiveBattler\n\
- strb r3, [r4]\n\
- movs r0, 0\n\
- movs r1, 0\n\
- bl EmitSpriteInvisibility\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- ldr r0, _08021E10 @ =gBankTarget\n\
- ldrb r2, [r0]\n\
- lsls r2, 2\n\
- adds r2, r5\n\
- ldr r0, [r2]\n\
- ldr r1, _08021E24 @ =0xfffbff3f\n\
- ands r0, r1\n\
- str r0, [r2]\n\
-_08021DFA:\n\
- ldr r2, _08021E28 @ =gSharedMem\n\
- ldr r3, _08021E2C @ =0x0001600c\n\
- adds r1, r2, r3\n\
-_08021E00:\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- mov r12, r2\n\
- b _0802224E\n\
- .align 2, 0\n\
-_08021E0C: .4byte gSpecialStatuses\n\
-_08021E10: .4byte gBankTarget\n\
-_08021E14: .4byte gBattlersCount\n\
-_08021E18: .4byte gStatuses3\n\
-_08021E1C: .4byte 0x000400c0\n\
-_08021E20: .4byte gActiveBattler\n\
-_08021E24: .4byte 0xfffbff3f\n\
-_08021E28: .4byte gSharedMem\n\
-_08021E2C: .4byte 0x0001600c\n\
-_08021E30:\n\
- movs r4, 0\n\
- ldr r0, _08021E60 @ =gBattlersCount\n\
- ldrb r5, [r0]\n\
- cmp r4, r5\n\
- blt _08021E3C\n\
- b _08022244\n\
-_08021E3C:\n\
- ldr r2, _08021E64 @ =gDisableStructs\n\
- ldr r5, _08021E68 @ =0xfeffffff\n\
- adds r3, r0, 0\n\
- ldr r1, _08021E6C @ =gBattleMons+0x50\n\
-_08021E44:\n\
- ldrb r0, [r2, 0xA]\n\
- cmp r0, 0\n\
- bne _08021E50\n\
- ldr r0, [r1]\n\
- ands r0, r5\n\
- str r0, [r1]\n\
-_08021E50:\n\
- adds r2, 0x1C\n\
- adds r1, 0x58\n\
- adds r4, 0x1\n\
- ldrb r0, [r3]\n\
- cmp r4, r0\n\
- blt _08021E44\n\
- b _08022244\n\
- .align 2, 0\n\
-_08021E60: .4byte gBattlersCount\n\
-_08021E64: .4byte gDisableStructs\n\
-_08021E68: .4byte 0xfeffffff\n\
-_08021E6C: .4byte gBattleMons+0x50\n\
-_08021E70:\n\
- ldr r1, _08021F2C @ =gHitMarker\n\
- ldr r3, [r1]\n\
- movs r0, 0x80\n\
- lsls r0, 5\n\
- ands r0, r3\n\
- ldr r2, _08021F30 @ =gBankAttacker\n\
- mov r9, r2\n\
- adds r5, r1, 0\n\
- cmp r0, 0\n\
- beq _08021E9A\n\
- ldr r0, _08021F34 @ =gActiveBattler\n\
- ldrb r2, [r2]\n\
- strb r2, [r0]\n\
- ldr r1, _08021F38 @ =gBankTarget\n\
- ldrb r0, [r1]\n\
- mov r4, r9\n\
- strb r0, [r4]\n\
- strb r2, [r1]\n\
- ldr r0, _08021F3C @ =0xffffefff\n\
- ands r3, r0\n\
- str r3, [r5]\n\
-_08021E9A:\n\
- ldr r1, _08021F40 @ =gBattleMoves\n\
- ldr r2, _08021F44 @ =gChosenMove\n\
- ldrh r3, [r2]\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- mov r8, r1\n\
- adds r7, r2, 0\n\
- cmp r0, 0x7F\n\
- bne _08021EBE\n\
- ldr r0, _08021F48 @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08021ECA\n\
-_08021EBE:\n\
- ldr r1, _08021F4C @ =gUnknown_02024C2C\n\
- mov r2, r9\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- strh r3, [r0]\n\
-_08021ECA:\n\
- ldr r0, _08021F50 @ =gAbsentBattlerFlags\n\
- ldrb r1, [r0]\n\
- ldr r2, _08021F54 @ =gBitTable\n\
- mov r3, r9\n\
- ldrb r4, [r3]\n\
- lsls r0, r4, 2\n\
- adds r0, r2\n\
- ldr r3, [r0]\n\
- ands r1, r3\n\
- adds r6, r2, 0\n\
- cmp r1, 0\n\
- beq _08021EE4\n\
- b _08022244\n\
-_08021EE4:\n\
- ldr r0, _08021F58 @ =0x000160a6\n\
- add r0, r12\n\
- ldrb r0, [r0]\n\
- ands r0, r3\n\
- cmp r0, 0\n\
- beq _08021EF2\n\
- b _08022244\n\
-_08021EF2:\n\
- ldrh r2, [r7]\n\
- lsls r0, r2, 1\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- add r0, r8\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7F\n\
- bne _08021F04\n\
- b _08022244\n\
-_08021F04:\n\
- ldr r0, [r5]\n\
- movs r1, 0x80\n\
- lsls r1, 18\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08021F68\n\
- ldr r1, _08021F5C @ =gLastUsedMove\n\
- lsls r0, r4, 1\n\
- adds r0, r1\n\
- strh r2, [r0]\n\
- ldr r0, _08021F60 @ =gUnknown_02024C4C\n\
- mov r4, r9\n\
- ldrb r1, [r4]\n\
- lsls r1, 1\n\
- adds r1, r0\n\
- ldr r0, _08021F64 @ =gCurrentMove\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- b _08021F82\n\
- .align 2, 0\n\
-_08021F2C: .4byte gHitMarker\n\
-_08021F30: .4byte gBankAttacker\n\
-_08021F34: .4byte gActiveBattler\n\
-_08021F38: .4byte gBankTarget\n\
-_08021F3C: .4byte 0xffffefff\n\
-_08021F40: .4byte gBattleMoves\n\
-_08021F44: .4byte gChosenMove\n\
-_08021F48: .4byte gMoveResultFlags\n\
-_08021F4C: .4byte gUnknown_02024C2C\n\
-_08021F50: .4byte gAbsentBattlerFlags\n\
-_08021F54: .4byte gBitTable\n\
-_08021F58: .4byte 0x000160a6\n\
-_08021F5C: .4byte gLastUsedMove\n\
-_08021F60: .4byte gUnknown_02024C4C\n\
-_08021F64: .4byte gCurrentMove\n\
-_08021F68:\n\
- ldr r1, _08021FD0 @ =gLastUsedMove\n\
- lsls r0, r4, 1\n\
- adds r0, r1\n\
- ldr r1, _08021FD4 @ =0x0000ffff\n\
- strh r1, [r0]\n\
- ldr r1, _08021FD8 @ =gUnknown_02024C4C\n\
- mov r2, r9\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- strh r1, [r0]\n\
-_08021F82:\n\
- ldr r2, _08021FDC @ =gBankTarget\n\
- ldrb r3, [r2]\n\
- lsls r0, r3, 2\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- lsls r0, 28\n\
- ldr r1, [r5]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _08021FA0\n\
- ldr r0, _08021FE0 @ =gLastHitBy\n\
- adds r0, r3, r0\n\
- mov r3, r9\n\
- ldrb r1, [r3]\n\
- strb r1, [r0]\n\
-_08021FA0:\n\
- ldr r0, [r5]\n\
- movs r1, 0x80\n\
- lsls r1, 18\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0802204C\n\
- ldr r0, _08021FE4 @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0802204C\n\
- ldrh r2, [r7]\n\
- ldr r0, _08021FD4 @ =0x0000ffff\n\
- cmp r2, r0\n\
- bne _08021FEC\n\
- ldr r1, _08021FE8 @ =gLastLandedMoves\n\
- ldr r4, _08021FDC @ =gBankTarget\n\
- ldrb r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- strh r2, [r0]\n\
- b _08022244\n\
- .align 2, 0\n\
-_08021FD0: .4byte gLastUsedMove\n\
-_08021FD4: .4byte 0x0000ffff\n\
-_08021FD8: .4byte gUnknown_02024C4C\n\
-_08021FDC: .4byte gBankTarget\n\
-_08021FE0: .4byte gLastHitBy\n\
-_08021FE4: .4byte gMoveResultFlags\n\
-_08021FE8: .4byte gLastLandedMoves\n\
-_08021FEC:\n\
- ldr r0, _08022014 @ =gLastLandedMoves\n\
- ldr r5, _08022018 @ =gBankTarget\n\
- ldrb r1, [r5]\n\
- lsls r1, 1\n\
- adds r1, r0\n\
- ldr r4, _0802201C @ =gCurrentMove\n\
- ldrh r0, [r4]\n\
- strh r0, [r1]\n\
- ldr r0, _08022020 @ =0x0001601c\n\
- add r0, r12\n\
- ldrb r3, [r0]\n\
- cmp r3, 0\n\
- beq _08022028\n\
- ldr r0, _08022024 @ =gLastHitByType\n\
- ldrb r1, [r5]\n\
- lsls r1, 1\n\
- adds r1, r0\n\
- movs r0, 0x3F\n\
- ands r0, r3\n\
- b _08021C22\n\
- .align 2, 0\n\
-_08022014: .4byte gLastLandedMoves\n\
-_08022018: .4byte gBankTarget\n\
-_0802201C: .4byte gCurrentMove\n\
-_08022020: .4byte 0x0001601c\n\
-_08022024: .4byte gLastHitByType\n\
-_08022028:\n\
- ldr r0, _08022044 @ =gLastHitByType\n\
- ldr r1, _08022048 @ =gBankTarget\n\
- ldrb r2, [r1]\n\
- lsls r2, 1\n\
- adds r2, r0\n\
- ldrh r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- add r0, r8\n\
- ldrb r0, [r0, 0x2]\n\
- strh r0, [r2]\n\
- b _08022244\n\
- .align 2, 0\n\
-_08022044: .4byte gLastHitByType\n\
-_08022048: .4byte gBankTarget\n\
-_0802204C:\n\
- ldr r0, _0802205C @ =gLastLandedMoves\n\
- ldr r2, _08022060 @ =gBankTarget\n\
- ldrb r1, [r2]\n\
- lsls r1, 1\n\
- adds r1, r0\n\
- ldr r0, _08022064 @ =0x0000ffff\n\
- b _08021C22\n\
- .align 2, 0\n\
-_0802205C: .4byte gLastLandedMoves\n\
-_08022060: .4byte gBankTarget\n\
-_08022064: .4byte 0x0000ffff\n\
-_08022068:\n\
- ldr r0, _0802212C @ =gAbsentBattlerFlags\n\
- ldrb r1, [r0]\n\
- ldr r6, _08022130 @ =gBitTable\n\
- ldr r2, _08022134 @ =gBankAttacker\n\
- ldrb r5, [r2]\n\
- lsls r0, r5, 2\n\
- adds r0, r6\n\
- ldr r4, [r0]\n\
- ands r1, r4\n\
- mov r9, r2\n\
- cmp r1, 0\n\
- beq _08022082\n\
- b _08022244\n\
-_08022082:\n\
- ldr r0, _08022138 @ =0x000160a6\n\
- add r0, r12\n\
- ldrb r0, [r0]\n\
- ands r0, r4\n\
- cmp r0, 0\n\
- beq _08022090\n\
- b _08022244\n\
-_08022090:\n\
- ldr r1, _0802213C @ =gBattleMoves\n\
- ldr r4, _08022140 @ =gChosenMove\n\
- ldrh r3, [r4]\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0802215C\n\
- ldr r0, _08022144 @ =gHitMarker\n\
- ldr r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 18\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0802215C\n\
- ldr r2, _08022148 @ =gBankTarget\n\
- ldrb r0, [r2]\n\
- cmp r5, r0\n\
- bne _080220C0\n\
- b _08022244\n\
-_080220C0:\n\
- adds r2, r0, 0\n\
- lsls r0, r2, 2\n\
- adds r0, r6\n\
- ldr r0, [r0]\n\
- lsls r0, 28\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0802215C\n\
- ldr r0, _0802214C @ =gMoveResultFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0802215C\n\
- lsls r0, r2, 1\n\
- ldr r5, _08022150 @ =0x000160ac\n\
- adds r0, r5\n\
- add r0, r12\n\
- strb r3, [r0]\n\
- ldr r0, _08022148 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r1, 1\n\
- ldr r2, _08022154 @ =0x000160ad\n\
- adds r1, r2\n\
- add r1, r12\n\
- ldrh r0, [r4]\n\
- lsrs r0, 8\n\
- strb r0, [r1]\n\
- ldr r3, _08022148 @ =gBankTarget\n\
- ldrb r2, [r3]\n\
- lsls r2, 2\n\
- mov r5, r9\n\
- ldrb r0, [r5]\n\
- lsrs r0, 1\n\
- lsls r0, 1\n\
- ldr r1, _08022158 @ =0x00016100\n\
- adds r0, r1\n\
- adds r2, r0\n\
- add r2, r12\n\
- ldrh r0, [r4]\n\
- strb r0, [r2]\n\
- ldrb r2, [r3]\n\
- lsls r2, 2\n\
- ldrb r0, [r5]\n\
- lsrs r0, 1\n\
- lsls r0, 1\n\
- adds r1, 0x1\n\
- adds r0, r1\n\
- adds r2, r0\n\
- add r2, r12\n\
- ldrh r0, [r4]\n\
- lsrs r0, 8\n\
- strb r0, [r2]\n\
- b _08022244\n\
- .align 2, 0\n\
-_0802212C: .4byte gAbsentBattlerFlags\n\
-_08022130: .4byte gBitTable\n\
-_08022134: .4byte gBankAttacker\n\
-_08022138: .4byte 0x000160a6\n\
-_0802213C: .4byte gBattleMoves\n\
-_08022140: .4byte gChosenMove\n\
-_08022144: .4byte gHitMarker\n\
-_08022148: .4byte gBankTarget\n\
-_0802214C: .4byte gMoveResultFlags\n\
-_08022150: .4byte 0x000160ac\n\
-_08022154: .4byte 0x000160ad\n\
-_08022158: .4byte 0x00016100\n\
-_0802215C:\n\
- mov r1, r9\n\
- ldrb r0, [r1]\n\
- ldr r2, _080221B4 @ =gBankTarget\n\
- ldrb r2, [r2]\n\
- cmp r0, r2\n\
- beq _08022244\n\
- ldr r3, _080221B4 @ =gBankTarget\n\
- ldrb r0, [r3]\n\
- lsls r0, 1\n\
- ldr r4, _080221B8 @ =0x000160ac\n\
- adds r0, r4\n\
- add r0, r12\n\
- movs r3, 0\n\
- strb r3, [r0]\n\
- ldr r5, _080221B4 @ =gBankTarget\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- ldr r1, _080221BC @ =0x000160ad\n\
- adds r0, r1\n\
- add r0, r12\n\
- strb r3, [r0]\n\
- ldrb r2, [r5]\n\
- lsls r2, 2\n\
- mov r4, r9\n\
- ldrb r0, [r4]\n\
- lsrs r0, 1\n\
- lsls r0, 1\n\
- adds r1, 0x53\n\
- adds r0, r1\n\
- adds r2, r0\n\
- add r2, r12\n\
- strb r3, [r2]\n\
- ldrb r2, [r5]\n\
- lsls r2, 2\n\
- ldrb r0, [r4]\n\
- lsrs r0, 1\n\
- lsls r0, 1\n\
- adds r1, 0x1\n\
- adds r0, r1\n\
- adds r2, r0\n\
- add r2, r12\n\
- strb r3, [r2]\n\
- b _08022244\n\
- .align 2, 0\n\
-_080221B4: .4byte gBankTarget\n\
-_080221B8: .4byte 0x000160ac\n\
-_080221BC: .4byte 0x000160ad\n\
-_080221C0:\n\
- ldr r5, _080222B0 @ =gHitMarker\n\
- ldr r2, [r5]\n\
- movs r0, 0x80\n\
- lsls r0, 12\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _08022244\n\
- ldr r0, _080222B4 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08022244\n\
- ldr r1, _080222B8 @ =gProtectStructs\n\
- ldr r0, _080222BC @ =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 29\n\
- cmp r0, 0\n\
- blt _08022244\n\
- ldr r0, _080222C0 @ =gBattleMoves\n\
- mov r9, r0\n\
- ldr r1, _080222C4 @ =gCurrentMove\n\
- mov r8, r1\n\
- ldrh r0, [r1]\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- add r1, r9\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _08022244\n\
- movs r6, 0x80\n\
- lsls r6, 2\n\
- adds r4, r6, 0\n\
- ands r4, r2\n\
- cmp r4, 0\n\
- bne _08022244\n\
- ldr r7, _080222C8 @ =gBankTarget\n\
- ldrb r0, [r7]\n\
- bl GetBattlerPosition\n\
- movs r1, 0x2\n\
- eors r0, r1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl GetBattlerAtPosition\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- ldr r1, _080222CC @ =gBattleMons\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- beq _0802223A\n\
- bl _08021874\n\
-_0802223A:\n\
- ldr r0, [r5]\n\
- orrs r0, r6\n\
- str r0, [r5]\n\
- ldr r2, _080222D0 @ =gSharedMem\n\
- mov r12, r2\n\
-_08022244:\n\
- ldr r1, _080222D4 @ =0x0001600c\n\
- add r1, r12\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
-_0802224E:\n\
- ldr r3, [sp, 0x10]\n\
- cmp r3, 0x1\n\
- bne _08022262\n\
- mov r4, r10\n\
- cmp r4, 0\n\
- bne _08022262\n\
- ldr r1, _080222D4 @ =0x0001600c\n\
- add r1, r12\n\
- movs r0, 0x11\n\
- strb r0, [r1]\n\
-_08022262:\n\
- ldr r5, [sp, 0x10]\n\
- cmp r5, 0x2\n\
- bne _08022278\n\
- ldr r1, _080222D4 @ =0x0001600c\n\
- add r1, r12\n\
- ldr r0, [sp, 0x14]\n\
- ldrb r2, [r1]\n\
- cmp r0, r2\n\
- bne _08022278\n\
- movs r0, 0x11\n\
- strb r0, [r1]\n\
-_08022278:\n\
- ldr r0, _080222D4 @ =0x0001600c\n\
- add r0, r12\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x11\n\
- beq _08022286\n\
- bl _080218E4\n\
-_08022286:\n\
- ldr r0, _080222D4 @ =0x0001600c\n\
- add r0, r12\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x11\n\
- bne _0802229E\n\
- mov r3, r10\n\
- cmp r3, 0\n\
- bne _0802229E\n\
- ldr r1, _080222D8 @ =gBattlescriptCurrInstr\n\
- ldr r0, [r1]\n\
- adds r0, 0x3\n\
-_0802229C:\n\
- str r0, [r1]\n\
-_0802229E:\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\
-_080222B0: .4byte gHitMarker\n\
-_080222B4: .4byte gBattleTypeFlags\n\
-_080222B8: .4byte gProtectStructs\n\
-_080222BC: .4byte gBankAttacker\n\
-_080222C0: .4byte gBattleMoves\n\
-_080222C4: .4byte gCurrentMove\n\
-_080222C8: .4byte gBankTarget\n\
-_080222CC: .4byte gBattleMons\n\
-_080222D0: .4byte gSharedMem\n\
-_080222D4: .4byte 0x0001600c\n\
-_080222D8: .4byte gBattlescriptCurrInstr\n\
- .syntax divided"
- );
+ if (arg1 == 1 && effect == FALSE)
+ gBattleStruct->cmd49StateTracker = ATK49_COUNT;
+ if (arg1 == 2 && arg2 == gBattleStruct->cmd49StateTracker)
+ gBattleStruct->cmd49StateTracker = ATK49_COUNT;
+
+ } while (gBattleStruct->cmd49StateTracker != ATK49_COUNT && effect == FALSE);
+
+ if (gBattleStruct->cmd49StateTracker == ATK49_COUNT && effect == FALSE)
+ gBattlescriptCurrInstr += 3;
}
-#endif // NONMATCHING
static void atk4A_typecalc2(void)
{
@@ -14010,15 +12858,15 @@ static void atkC1_hiddenpowercalc(void)
((gBattleMons[gBankAttacker].speedIV & 1) << 3) |
((gBattleMons[gBankAttacker].spAttackIV & 1) << 4) |
((gBattleMons[gBankAttacker].spDefenseIV & 1) << 5);
-
+
gDynamicBasePower = 30 + (power * 40 / 63);
-
+
gBattleStruct->dynamicMoveType = ((type * 15) / 63) + 1;
if (gBattleStruct->dynamicMoveType >= TYPE_MYSTERY)
gBattleStruct->dynamicMoveType++;
-
+
gBattleStruct->dynamicMoveType |= 0xC0;
-
+
gBattlescriptCurrInstr++;
}
@@ -15735,8 +14583,8 @@ static void atkF2_displaydexinfo(void)
case 2:
if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2 && !gTasks[gBattleCommunication[1]].isActive)
{
- LZDecompressVram(gBattleTerrainTiles_Building, (void*)(0x06008000));
- LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000));
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM + 0x8000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(VRAM + 0xD000));
LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
REG_BG3CNT = 0x5a0b;
gBattle_BG3_X = 0x100;
diff --git a/src/battle/battle_setup.c b/src/battle_setup.c
index c457cc8ec..c457cc8ec 100644
--- a/src/battle/battle_setup.c
+++ b/src/battle_setup.c
diff --git a/src/battle/battle_transition.c b/src/battle_transition.c
index a0c94f713..a0c94f713 100644
--- a/src/battle/battle_transition.c
+++ b/src/battle_transition.c
diff --git a/src/battle/battle_util.c b/src/battle_util.c
index 3d1770239..3d1770239 100644
--- a/src/battle/battle_util.c
+++ b/src/battle_util.c
diff --git a/src/battle/calculate_base_damage.c b/src/calculate_base_damage.c
index e4ae70c0b..e4ae70c0b 100644
--- a/src/battle/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
diff --git a/src/contest.c b/src/contest.c
index 9652e999e..c41f25077 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -2459,7 +2459,7 @@ u8 unref_sub_80AE908(void)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- (void *)0x02000000,
+ (void *)EWRAM,
gUnknown_081FAF4C[1],
species);
LoadCompressedPalette(gMonPaletteTable[species].data, 0x110, 32);
@@ -2485,7 +2485,7 @@ u8 sub_80AE9FC(u16 species, u32 otId, u32 personality)
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
- 0x02000000,
+ EWRAM,
gUnknown_081FAF4C[0],
species,
personality);
diff --git a/src/battle/contest_link_80C2020.c b/src/contest_link_80C2020.c
index 2dde3895c..8269f424b 100644
--- a/src/battle/contest_link_80C2020.c
+++ b/src/contest_link_80C2020.c
@@ -891,10 +891,10 @@ void sub_80C3158(const u8 *string, u8 spriteId)
sub_80034D4(eContestLink80C2020Struct2018068, gDisplayedStringBattle);
- CpuCopy32(&gUnknown_083D1624[0x0], (void *)0x6010000 + 32 * sp00[0], 32);
- CpuCopy32(&gUnknown_083D1624[0x40], (void *)0x6010000 + 32 * sp00[0] + 0x100, 32);
- CpuCopy32(&gUnknown_083D1624[0x40], (void *)0x6010000 + 32 * sp00[0] + 0x200, 32);
- CpuCopy32(&gUnknown_083D1624[0x20], (void *)0x6010000 + 32 * sp00[0] + 0x300, 32);
+ CpuCopy32(&gUnknown_083D1624[0x0], (void *)(VRAM + 0x10000) + 32 * sp00[0], 32);
+ CpuCopy32(&gUnknown_083D1624[0x40], (void *)(VRAM + 0x10000) + 32 * sp00[0] + 0x100, 32);
+ CpuCopy32(&gUnknown_083D1624[0x40], (void *)(VRAM + 0x10000) + 32 * sp00[0] + 0x200, 32);
+ CpuCopy32(&gUnknown_083D1624[0x20], (void *)(VRAM + 0x10000) + 32 * sp00[0] + 0x300, 32);
w = width / 8;
j = 0;
@@ -1415,27 +1415,27 @@ static inline s32 de_sub_80C39A8(s32 a0)
s32 result = 0;
if (gIsLinkContest & 0x1)
{
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 9, 2, 8, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 9, 2, 8, 2);
result = 8;
}
else if (gSpecialVar_ContestRank == 0)
{
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 0, 9, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 0, 0, 9, 2);
result = 9;
}
else if (gSpecialVar_ContestRank == 1)
{
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 9, 0, 8, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 9, 0, 8, 2);
result = 8;
}
else if (gSpecialVar_ContestRank == 2)
{
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 17, 0, 8, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 17, 0, 8, 2);
result = 8;
}
else
{
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 2, 9, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 0, 2, 9, 2);
result = 9;
}
return result;
@@ -1447,31 +1447,31 @@ static inline s32 de_sub_80C3A84(s32 a0, s32 * a1)
if (gSpecialVar_ContestCategory == 0)
{
*a1 = 0;
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 17, 2, 10, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 17, 2, 10, 2);
result = 10;
}
else if (gSpecialVar_ContestCategory == 1)
{
*a1 = 1;
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 4, 11, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 0, 4, 11, 2);
result = 11;
}
else if (gSpecialVar_ContestCategory == 2)
{
*a1 = 2;
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 11, 4, 10, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 11, 4, 10, 2);
result = 10;
}
else if (gSpecialVar_ContestCategory == 3)
{
*a1 = 3;
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 21, 4, 10, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 21, 4, 10, 2);
result = 10;
}
else
{
*a1 = 4;
- sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 6, 10, 2);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 1, gUnknown_08E964B8, 0, 6, 10, 2);
result = 10;
}
return result;
@@ -1484,8 +1484,8 @@ void sub_80C37E4(void)
de_sub_80C3A84(de_sub_80C39A8(5) + 5, &sp0);
for (i = 0; i < 0x80; i++)
{
- ((vu16 *)0x0600E000)[i] &= 0xFFF;
- ((vu16 *)0x0600E000)[i] |= sp0 << 12;;
+ ((vu16 *)(VRAM + 0xE000))[i] &= 0xFFF;
+ ((vu16 *)(VRAM + 0xE000))[i] |= sp0 << 12;;
}
}
#else
@@ -1707,27 +1707,27 @@ s16 de_sub_80C39A8(s32 a0)
s16 result;
if (gIsLinkContest & 1)
{
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 11, 3, 8, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 11, 3, 8, 3);
result = 8;
}
else if (gSpecialVar_ContestRank == 0)
{
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 0, 0, 11, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 0, 0, 11, 3);
result = 11;
}
else if (gSpecialVar_ContestRank == 1)
{
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 11, 0, 10, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 11, 0, 10, 3);
result = 10;
}
else if (gSpecialVar_ContestRank == 2)
{
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 21, 0, 10, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 21, 0, 10, 3);
result = 10;
}
else
{
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 0, 3, 11, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 0, 3, 11, 3);
result = 11;
}
return result;
@@ -1739,31 +1739,31 @@ s16 de_sub_80C3A84(s32 a0, s32 * a1)
if (gSpecialVar_ContestCategory == 0)
{
*a1 = 0;
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 19, 3, 7, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 19, 3, 7, 3);
result = 7;
}
else if (gSpecialVar_ContestCategory == 1)
{
*a1 = 1;
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 0, 6, 7, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 0, 6, 7, 3);
result = 7;
}
else if (gSpecialVar_ContestCategory == 2)
{
*a1 = 2;
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 7, 6, 4, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 7, 6, 4, 3);
result = 4;
}
else if (gSpecialVar_ContestCategory == 3)
{
*a1 = 3;
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 11, 6, 6, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 11, 6, 6, 3);
result = 6;
}
else
{
*a1 = 4;
- sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 17, 6, 5, 3);
+ sub_809D104((void *)(VRAM + 0xE000), a0, 0, gUnknown_08E964B8, 17, 6, 5, 3);
result = 5;
}
return result;
@@ -1776,8 +1776,8 @@ void sub_80C37E4(void)
de_sub_80C3A84(de_sub_80C39A8(6) + 6, &sp0);
for (i = 0; i < 0x80; i++)
{
- ((vu16 *)0x0600E000)[i] &= 0xFFF;
- ((vu16 *)0x0600E000)[i] |= sp0 << 12;;
+ ((vu16 *)(VRAM + 0xE000))[i] &= 0xFFF;
+ ((vu16 *)(VRAM + 0xE000))[i] |= sp0 << 12;;
}
}
#endif
@@ -1848,10 +1848,10 @@ void sub_80C3A5C(u8 taskId)
if (--gTasks[taskId].data[11] == -1)
{
firstTileNum = gTasks[taskId].data[0] * 2 + 0x5043;
- *(vu16 *)(0x0600E142 + gTasks[taskId].data[1] * 192) = firstTileNum + 0x00;
- *(vu16 *)(0x0600E144 + gTasks[taskId].data[1] * 192) = firstTileNum + 0x01;
- *(vu16 *)(0x0600E182 + gTasks[taskId].data[1] * 192) = firstTileNum + 0x10;
- *(vu16 *)(0x0600E184 + gTasks[taskId].data[1] * 192) = firstTileNum + 0x11;
+ *(vu16 *)((VRAM + 0xE142) + gTasks[taskId].data[1] * 192) = firstTileNum + 0x00;
+ *(vu16 *)((VRAM + 0xE144) + gTasks[taskId].data[1] * 192) = firstTileNum + 0x01;
+ *(vu16 *)((VRAM + 0xE182) + gTasks[taskId].data[1] * 192) = firstTileNum + 0x10;
+ *(vu16 *)((VRAM + 0xE184) + gTasks[taskId].data[1] * 192) = firstTileNum + 0x11;
eContestLink80C2020Struct2018000.unk_05++;
DestroyTask(taskId);
PlaySE(SE_JYUNI);
@@ -1871,8 +1871,8 @@ void sub_80C3B30(u8 taskId)
{
for (k = 0; k < 30; k++)
{
- ((u16 *)(0x0600E100 + 2 * (96 * i + 32 * j)))[k] &= 0x0FFF;
- ((u16 *)(0x0600E100 + 2 * (96 * i + 32 * j)))[k] |= 0x9000;
+ ((u16 *)((VRAM + 0xE100) + 2 * (96 * i + 32 * j)))[k] &= 0x0FFF;
+ ((u16 *)((VRAM + 0xE100) + 2 * (96 * i + 32 * j)))[k] |= 0x9000;
}
}
gTasks[taskId].data[10] = i;
@@ -2182,7 +2182,7 @@ void sub_80C40D4(u8 arg0, u8 arg1)
x += 32 * (i * 3 + 5);
x -= arg1;
x--;
- *(vu16 *)(0x0600C000 + 2 * x) = 0x60B3;
+ *(vu16 *)((VRAM + 0xC000) + 2 * x) = 0x60B3;
taskId = CreateTask(sub_80C42C0, 10);
var0 = ((eContestLink80C2020Struct2018018[i].unk_08 << 16) / eContestLink80C2020Struct2018018[i].unk_11) * (arg1 + 1);
if ((var0 % 0x10000) >= 0x8000)
@@ -2209,7 +2209,7 @@ void sub_80C40D4(u8 arg0, u8 arg1)
x += 32 * (i * 3 + 6);
x -= arg1;
x--;
- *(vu16 *)(0x0600C000 + 2 * x) = tile;
+ *(vu16 *)((VRAM + 0xC000) + 2 * x) = tile;
taskId = CreateTask(sub_80C42C0, 10);
var0 = ((eContestLink80C2020Struct2018018[i].unk_0c << 16) / eContestLink80C2020Struct2018018[i].unk_12) * (arg1 + 1);
if ((var0 % 0x10000) >= 0x8000)
@@ -2551,7 +2551,7 @@ void sub_80C42C0(u8 taskId /*r12*/)
tile = 0x504C + r0;
else
tile = 0x5057 + r0;
- *(vu16 *)(0x0600E18E + 2 * (96 * r5 + i)) = tile;
+ *(vu16 *)((VRAM + 0xE18E) + 2 * (96 * r5 + i)) = tile;
}
}
}
diff --git a/src/battle/contest_link_80C857C.c b/src/contest_link_80C857C.c
index a694380df..a694380df 100644
--- a/src/battle/contest_link_80C857C.c
+++ b/src/contest_link_80C857C.c
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 0c5cdcd49..e3cc6cdae 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -341,7 +341,7 @@ static void sub_8106AC4(u16 species, u8 arg1)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- 0x2000000,
+ EWRAM,
gUnknown_081FAF4C[1],
species,
(u32)gUnknown_03005E8C->personality
@@ -354,7 +354,7 @@ static void sub_8106AC4(u16 species, u8 arg1)
&gMonBackPicTable[species],
gMonBackPicCoords[species].coords,
gMonBackPicCoords[species].y_offset,
- 0x2000000,
+ EWRAM,
gUnknown_081FAF4C[0],
species,
(u32)gUnknown_03005E8C->personality
diff --git a/src/credits.c b/src/credits.c
index c0c53505d..daf6d2b5c 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1561,7 +1561,7 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
&gMonFrontPicTable[species],
gMonFrontPicCoords[species].coords,
gMonFrontPicCoords[species].y_offset,
- 0x2000000,
+ EWRAM,
gUnknown_0840B5A0[position],
species,
personality,
diff --git a/src/data/graphics.c b/src/data/graphics.c
index 7aa3a4384..ce2f02b2c 100644
--- a/src/data/graphics.c
+++ b/src/data/graphics.c
@@ -289,16 +289,7 @@ const u8 unused_basic_frame_bin[] = INCBIN_U8("graphics/unused/basic_frame.bin.l
const u8 gUnknown_08D1212C[] = INCBIN_U8("graphics/battle_interface/window.gbapal");
const u8 gUnknown_08D1214C[] = INCBIN_U8("graphics/battle_interface/hpbar.gbapal");
-const u8 gHealthboxElementsGfxTable[] = INCBIN_U8("graphics/battle_interface/hpbar.4bpp");
-const u8 gHealthboxElementsGfxTable_ExpBar[] = INCBIN_U8("graphics/battle_interface/expbar.4bpp");
-const u8 gHealthboxElementsGfxTable_StatusPsn[] = INCBIN_U8("graphics/battle_interface/status_psn.4bpp");
-const u8 gHealthboxElementsGfxTable_StatusPar[] = INCBIN_U8("graphics/battle_interface/status_par.4bpp");
-const u8 gHealthboxElementsGfxTable_StatusSlp[] = INCBIN_U8("graphics/battle_interface/status_slp.4bpp");
-const u8 gHealthboxElementsGfxTable_StatusFrz[] = INCBIN_U8("graphics/battle_interface/status_frz.4bpp");
-const u8 gHealthboxElementsGfxTable_StatusBrn[] = INCBIN_U8("graphics/battle_interface/status_brn.4bpp");
-const u8 gHealthboxElementsGfxTable_Misc[] = INCBIN_U8("graphics/battle_interface/misc.4bpp");
-const u8 gHealthboxElementsGfxTable_HpBarAnim[] = INCBIN_U8("graphics/battle_interface/hpbar_anim.4bpp");
-const u8 gHealthboxElementsGfxTable_MiscFrameEnd[] = INCBIN_U8("graphics/battle_interface/misc_frameend.4bpp");
+const u8 gHealthboxElementsGfxTable[][32] = INCBIN_U8("graphics/battle_interface/healthbox_elements.4bpp");
const u8 Tiles_D129AC[] = INCBIN_U8("graphics/battle_interface/ball_display.4bpp");
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index d8f729610..4b09cefe5 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -227,7 +227,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies],
gMonFrontPicCoords[currSpecies].coords,
gMonFrontPicCoords[currSpecies].y_offset,
- (void*)(0x2000000),
+ (void*)EWRAM,
gUnknown_081FAF4C[1], currSpecies);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(currSpecies, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x110, 0x20);
@@ -244,7 +244,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
gMonFrontPicCoords[speciesToEvolve].coords,
gMonFrontPicCoords[speciesToEvolve].y_offset,
- (void*)(0x2000000),
+ (void*)EWRAM,
gUnknown_081FAF4C[3], speciesToEvolve);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
@@ -324,7 +324,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
gMonFrontPicCoords[postEvoSpecies].coords,
gMonFrontPicCoords[postEvoSpecies].y_offset,
- (void*)(0x2000000),
+ (void*)EWRAM,
gUnknown_081FAF4C[3], postEvoSpecies);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
@@ -394,7 +394,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
gMonFrontPicCoords[postEvoSpecies].coords,
gMonFrontPicCoords[postEvoSpecies].y_offset,
- (void*)(0x2000000),
+ (void*)EWRAM,
gUnknown_081FAF4C[3], postEvoSpecies);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
@@ -444,7 +444,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
gMonFrontPicCoords[speciesToEvolve].coords,
gMonFrontPicCoords[speciesToEvolve].y_offset,
- (void*)(0x2000000),
+ (void*)EWRAM,
gUnknown_081FAF4C[1], speciesToEvolve);
pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD);
LoadCompressedPalette(*pokePal, 0x120, 0x20);
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 4b5149878..f9f857f89 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -910,8 +910,8 @@ void sub_8056CBC(struct Tileset *tileset, int offset, int size)
}
else
{
- LZ77UnCompVram(tileset->palettes, (void*)0x2000000);
- LoadPalette((void*)0x2000000, offset, size);
+ LZ77UnCompVram(tileset->palettes, (void*)EWRAM);
+ LoadPalette((void*)EWRAM, offset, size);
}
}
}
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index 22da8e501..a49802af1 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -220,8 +220,8 @@ static void sub_810CE5C(u8 taskId)
static void sub_810CE78(u8 taskId)
{
REG_DISPCNT = 0;
- LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
- LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
LoadPalette(gUnknown_083F809C, 0xE0, 0x10);
REG_BLDCNT = 15937;
@@ -292,8 +292,8 @@ static void sub_810D00C(u8 taskId)
static void sub_810D028(u8 taskId)
{
REG_DISPCNT = 0;
- LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
- LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
REG_BLDCNT = 0;
REG_BLDALPHA = 0;
REG_BLDY = 0;
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 5ee025eeb..74db6ac26 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -1298,7 +1298,7 @@ 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, 0x2000000, gUnknown_0840B5A0[pokeID], species, pid, 1);
+ LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, EWRAM, gUnknown_0840B5A0[pokeID], species, pid, 1);
pokePal = GetMonSpritePalFromOtIdPersonality(species, tid, pid);
LoadCompressedPalette(pokePal, 16 * pokeID + 256, 0x20);
@@ -1313,7 +1313,7 @@ static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a
{
u8 spriteID;
- DecompressPicFromTable_2(&gTrainerFrontPicTable[trainerPicID], gTrainerFrontPicCoords[trainerPicID].coords, gTrainerFrontPicCoords[trainerPicID].y_offset, (void*) 0x2000000, gUnknown_0840B5A0[a3], trainerPicID);
+ DecompressPicFromTable_2(&gTrainerFrontPicTable[trainerPicID], gTrainerFrontPicCoords[trainerPicID].coords, gTrainerFrontPicCoords[trainerPicID].y_offset, (void*)EWRAM, gUnknown_0840B5A0[a3], trainerPicID);
LoadCompressedPalette(gTrainerFrontPicPaletteTable[trainerPicID].data, 16 * a3 + 256, 0x20);
sub_8143680(a3, a3);
diff --git a/src/intro.c b/src/intro.c
index b444c518e..818c4ec54 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -1601,9 +1601,9 @@ 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, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1);
+ LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, EWRAM, gUnknown_0840B5A0[d], species, 0, 1);
else
- LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0);
+ LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, EWRAM, gUnknown_0840B5A0[d], species, 0, 0);
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, 0, 0xFFFF);
LoadCompressedPalette(lzPaletteData, 0x100 + d * 0x10, 0x20);
sub_8143648(d, d);
@@ -1617,7 +1617,7 @@ static u8 sub_813CFA8(u16 a, u16 b, u16 c, u16 d)
{
u8 spriteId;
- DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].coords, gTrainerBackPicCoords[a].y_offset, (void *)0x2000000, gUnknown_0840B5A0[d], a);
+ 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;
diff --git a/src/main_menu.c b/src/main_menu.c
index 11d6381c6..33bffcb93 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -131,7 +131,6 @@ static const u16 gUnknown_081E764C[][16] =
static const u8 gBirchIntroShadowGfx[] = INCBIN_U8("graphics/birch_speech/shadow.4bpp.lz");
static const u8 gUnknown_081E7834[] = INCBIN_U8("graphics/birch_speech/map.bin.lz");
static const u16 gUnknown_081E795C[] = INCBIN_U16("graphics/birch_speech/bg2.gbapal");
-static const u16 gUnknown_081E796C[] = INCBIN_U16("graphics/birch_speech/blank_pal.gbapal");
static const u16 gMainMenuPalette[] = INCBIN_U16("graphics/misc/main_menu.gbapal");
static const union AffineAnimCmd gSpriteAffineAnim_81E799C[] =
@@ -753,7 +752,7 @@ static void Task_NewGameSpeech1(u8 taskId)
LZ77UnCompVram(gBirchIntroShadowGfx, (void *)BG_VRAM);
LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800));
LoadPalette(gUnknown_081E764C, 0, 0x40);
- LoadPalette(gUnknown_081E796C, 1, 0x10);
+ LoadPalette(gUnknown_081E795C + 8, 1, 0x10);
ScanlineEffect_Stop();
ResetSpriteData();
FreeAllSpritePalettes();
diff --git a/src/option_menu.c b/src/option_menu.c
index 2a5b0e534..6fc58b531 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -112,7 +112,7 @@ void CB2_InitOptionMenu(void)
break;
case 5:
LoadPalette(gUnknown_0839F5FC, 0x80, 0x40);
- CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40);
+ CpuCopy16(gUnknown_0839F63C, (void *)(VRAM + 0xBEE0), 0x40);
gMain.state++;
break;
case 6:
diff --git a/src/battle/pokeball.c b/src/pokeball.c
index abfdf2c3d..7162ee6ac 100644
--- a/src/battle/pokeball.c
+++ b/src/pokeball.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "gba/m4a_internal.h"
#include "battle.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "decompress.h"
#include "graphics.h"
#include "m4a.h"
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 588bc85c0..a4614f52d 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -616,7 +616,7 @@ static bool8 sub_8147B20(struct Pokemon* mon)
case 0:
species = GetMonData(mon, MON_DATA_SPECIES2);
PiD = GetMonData(mon, MON_DATA_PERSONALITY);
- HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_081FAF4C[1], species, PiD);
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, EWRAM, gUnknown_081FAF4C[1], species, PiD);
ewram1FFFF++;
break;
case 1:
diff --git a/src/pokemon_item_effect.c b/src/pokemon_item_effect.c
index 59b216af0..e16d08073 100644
--- a/src/pokemon_item_effect.c
+++ b/src/pokemon_item_effect.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "constants/battle_constants.h"
+#include "constants/battle.h"
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/species.h"
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 6a7ee69b3..31b879c2d 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -30,13 +30,13 @@ static const struct UnknownStruct sBigMonSizeTable[] =
{ 800, 100, 7710 },
{ 900, 150, 17710 },
{ 1000, 150, 32710 },
- { 1100, 100, -17826 },
- { 1200, 50, -7826 },
- { 1300, 20, -2826 },
- { 1400, 5, -826 },
- { 1500, 2, -326 },
- { 1600, 1, -126 },
- { 1700, 1, -26 },
+ { 1100, 100, 47710 },
+ { 1200, 50, 57710 },
+ { 1300, 20, 62710 },
+ { 1400, 5, 64710 },
+ { 1500, 2, 65210 },
+ { 1600, 1, 65410 },
+ { 1700, 1, 65510 },
};
#define CM_PER_INCH 2.54
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 217e8ccdf..134b2b753 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "battle.h"
-#include "battle_anim_813F0F4.h"
+#include "battle_anim_special.h"
#include "contest.h"
#include "data2.h"
#include "daycare.h"
diff --git a/src/battle/post_battle_event_funcs.c b/src/post_battle_event_funcs.c
index d0fbbec85..d0fbbec85 100644
--- a/src/battle/post_battle_event_funcs.c
+++ b/src/post_battle_event_funcs.c
diff --git a/src/battle/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 712ec3ea8..712ec3ea8 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
diff --git a/src/rom3.c b/src/rom3.c
index a9433695d..d332b7027 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_811DA74.h"
-#include "battle_ai.h"
+#include "battle_ai_script_commands.h"
#include "battle_anim.h"
#include "battle_anim_81258BC.h"
#include "battle_anim_8137220.h"
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 278e5e459..c19ec570b 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -1943,8 +1943,8 @@ 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,
- 0x2000000,
- (void *)0x2000000,
+ EWRAM,
+ (void *)EWRAM,
species,
a7,
1
@@ -1957,15 +1957,15 @@ 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,
- 0x2000000,
- (void *)0x2000000,
+ EWRAM,
+ (void *)EWRAM,
species,
a7,
0
);
}
- DmaCopy32Defvars(3, (void *)0x2000000, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800);
+ DmaCopy32Defvars(3, (void *)EWRAM, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800);
if (!isBackpic)
sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonFrontPicCoords[species].y_offset, a6);
diff --git a/src/battle/smokescreen.c b/src/smokescreen.c
index dc2887007..dc2887007 100644
--- a/src/battle/smokescreen.c
+++ b/src/smokescreen.c
diff --git a/sym_bss.txt b/sym_bss.txt
index 4ee96c348..6bf1694ad 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -32,7 +32,7 @@ unk_debug_bss_3 = .;
. = ALIGN(4); src/shop.o(.bss);
. = ALIGN(4); src/record_mixing.o(.bss);
. = ALIGN(4); src/tv.o(.bss);
-. = ALIGN(4); src/battle/battle_anim_80CA710.o(.bss);
+. = ALIGN(4); src/battle/anim/roots.o(.bss);
. = ALIGN(4); src/easy_chat_2.o(.bss);
. = ALIGN(4); src/pokenav_before.o(.bss);
. = ALIGN(4); src/mauville_man.o(.bss);
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f9596fea3..aaf2f3741 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -304,11 +304,11 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(4); src/tileset_anim.o(ewram_data);
. = ALIGN(4); src/palette.o(ewram_data);
. = ALIGN(4); src/sound.o(ewram_data);
-. = ALIGN(4); src/battle/battle_anim.o(ewram_data);
+. = ALIGN(4); src/battle_anim.o(ewram_data);
. = ALIGN(4); src/rom_8077ABC.o(ewram_data);
. = ALIGN(4); src/title_screen.o(ewram_data);
. = ALIGN(4); src/field_weather.o(ewram_data);
-. = ALIGN(4); src/battle/battle_setup.o(ewram_data);
+. = ALIGN(4); src/battle_setup.o(ewram_data);
. = ALIGN(4); src/cable_club.o(ewram_data);
. = ALIGN(4); src/debug/taya_debug_window.o(ewram_data);
. = ALIGN(4); src/wild_encounter.o(ewram_data);
@@ -344,13 +344,13 @@ gBattleMonForms = .; /* 2024E84 */
. = ALIGN(4); src/menu_helpers.o(ewram_data);
. = ALIGN(4); src/region_map.o(ewram_data);
. = ALIGN(4); src/decoration.o(ewram_data);
-. = ALIGN(4); src/battle/battle_ai.o(ewram_data);
+. = ALIGN(4); src/battle_ai_script_commands.o(ewram_data);
. = ALIGN(4); src/rom6.o(ewram_data);
. = ALIGN(4); src/pokeblock.o(ewram_data);
. = ALIGN(4); src/field_specials.o(ewram_data);
. = ALIGN(4); src/pokedex_area_screen.o(ewram_data);
. = ALIGN(4); src/roulette.o(ewram_data);
-. = ALIGN(4); src/battle/battle_message.o(ewram_data);
+. = ALIGN(4); src/battle_message.o(ewram_data);
. = ALIGN(4); src/choose_party.o(ewram_data);
. = ALIGN(4); src/cable_car.o(ewram_data);
. = ALIGN(4); src/save.o(ewram_data);