summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-28 22:14:47 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-28 22:14:47 -0500
commit9d2ee97519aa8ee3c5e5c0d11f49f5a77e4f870e (patch)
tree763431b9969206b11c5c42c7154c19ad5d21f421 /src
parent857b166086756ccc92e58981493513a7f00920ff (diff)
parent86a36767dba19e84297047addf1d1d776e2efdec (diff)
Merge branch 'master' into slot_machine
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_3.c11
-rw-r--r--src/battle/battle_setup.c2
-rw-r--r--src/data/bard_music_de.h3699
-rw-r--r--src/data/bard_music_en.h3678
-rw-r--r--src/data/menu_cursor_de.h345
-rw-r--r--src/data/menu_cursor_en.h363
-rw-r--r--src/debug/matsuda_debug_menu.c229
-rw-r--r--src/debug/unknown_debug_menu.c26
-rw-r--r--src/engine/menu_cursor.c26
-rw-r--r--src/engine/mystery_event_msg.c51
-rw-r--r--src/engine/mystery_event_script.c14
-rw-r--r--src/engine/naming_screen.c425
-rw-r--r--src/engine/record_mixing.c10
-rw-r--r--src/engine/trainer_card.c5
-rw-r--r--src/field/bard_music.c174
-rw-r--r--src/field/battle_tower.c20
-rw-r--r--src/field/coord_event_weather.c87
-rw-r--r--src/field/decoration.c270
-rw-r--r--src/field/event_data.c2
-rw-r--r--src/field/field_control_avatar.c4
-rw-r--r--src/field/field_effect.c257
-rw-r--r--src/field/field_effect_helpers.c84
-rw-r--r--src/field/field_map_obj.c38
-rw-r--r--src/field/field_map_obj_helpers.c115
-rw-r--r--src/field/field_special_scene.c12
-rw-r--r--src/field/field_specials.c121
-rw-r--r--src/field/field_tasks.c20
-rw-r--r--src/field/field_weather.c25
-rw-r--r--src/field/field_weather_effects.c1
-rw-r--r--src/field/fldeff_secret_base_pc.c2
-rw-r--r--src/field/item_use.c7
-rw-r--r--src/field/lottery_corner.c16
-rw-r--r--src/field/map_name_popup.c2
-rw-r--r--src/field/mauville_man.c3
-rw-r--r--src/field/overworld.c28
-rw-r--r--src/field/party_menu.c67
-rw-r--r--src/field/player_pc.c22
-rw-r--r--src/field/secret_base.c30
-rw-r--r--src/field/trainer_see.c96
-rw-r--r--src/field/tv.c18
-rw-r--r--src/libs/m4a_2.c2
-rw-r--r--src/libs/m4a_4.c2
-rw-r--r--src/pokemon/pokemon_2.c2
-rw-r--r--src/pokemon/pokemon_summary_screen.c253
-rw-r--r--src/pokenav_before.c677
-rw-r--r--src/scene/credits.c14
-rw-r--r--src/scene/intro.c10
-rwxr-xr-xsrc/scene/intro_credits_graphics.c392
-rw-r--r--src/script_pokemon_util_80C4BF0.c289
-rw-r--r--src/script_pokemon_util_80F99CC.c144
50 files changed, 9867 insertions, 2323 deletions
diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c
index f627e50f0..b21ec1572 100644
--- a/src/battle/battle_3.c
+++ b/src/battle/battle_3.c
@@ -7,6 +7,7 @@
#include "event_data.h"
#include "constants/hold_effects.h"
#include "constants/species.h"
+#include "constants/weather.h"
#include "pokemon.h"
#include "data2.h"
#include "random.h"
@@ -1500,9 +1501,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
//_08018586
switch (weather_get_current())
{
- case 3:
- case 5:
- case 13:
+ case WEATHER_RAIN_LIGHT:
+ case WEATHER_RAIN_MED:
+ case WEATHER_RAIN_HEAVY:
if (!(gBattleWeather & WEATHER_RAIN_ANY))
{
gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
@@ -1511,7 +1512,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
effect++;
}
break;
- case 8:
+ case WEATHER_SANDSTORM:
if (!(gBattleWeather & WEATHER_SANDSTORM_ANY))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
@@ -1520,7 +1521,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
effect++;
}
break;
- case 12:
+ case WEATHER_DROUGHT:
if (!(gBattleWeather & WEATHER_SUN_ANY))
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c
index f71aad090..2f94dd407 100644
--- a/src/battle/battle_setup.c
+++ b/src/battle/battle_setup.c
@@ -858,7 +858,7 @@ static void CB2_GiveStarter(void)
{
u16 starterPoke;
- *GetVarPointer(0x4023) = gSpecialVar_Result;
+ *GetVarPointer(VAR_STARTER_MON) = gSpecialVar_Result;
starterPoke = GetStarterPokemon(gSpecialVar_Result);
ScriptGiveMon(starterPoke, 5, 0, 0, 0, 0);
ResetTasks();
diff --git a/src/data/bard_music_de.h b/src/data/bard_music_de.h
new file mode 100644
index 000000000..262fe26a3
--- /dev/null
+++ b/src/data/bard_music_de.h
@@ -0,0 +1,3699 @@
+#ifndef GUARD_DATA_BARD_MUSIC_H
+#define GUARD_DATA_BARD_MUSIC_H
+
+static const struct BardSound BardMusic_POKEMON[][6] = {
+ { // ARMALDO
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAUTIFLY
+ {0x02}, {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // MEDITITE
+ {0x0B}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEAKING
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TORCHIC
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANORITH
+ {0x02}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABSOL
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURSKIT
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MASQUERAIN
+ {0x02}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // GEODUDE
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // ILLUMISE
+ {0x11}, {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SKARMORY
+ {0x02}, {0x02}, {0x0B}, {0x1A}, {0xFF}, {0xFF}
+ }, { // SKITTY
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DELCATTY
+ {0x0B}, {0x0B}, {0x1A}, {0x1A}, {0xFF}, {0xFF}
+ }, { // SWELLOW
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLALIE
+ {0x11}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KYOGRE
+ {0x11}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHAMP
+ {0x02}, {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // PINSIR
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KECLEON
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHUPPET
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SILCOON
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BRELOOM
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHROOMISH
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CARVANHA
+ {0x02}, {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // TREECKO
+ {0x0B}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WINGULL
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GYARADOS
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NINETALES
+ {0x29}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIRAFARIG
+ {0x11}, {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // KIRLIA
+ {0x11}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELLOSSOM
+ {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KINGDRA
+ {0x0B}, {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // GLOOM
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAWILE
+ {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROUDON
+ {0x1A}, {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIGHTYENA
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CROBAT
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABRA
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLAKING
+ {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WURMPLE
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGIKARP
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNEMITE
+ {0x02}, {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // TORKOAL
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHOKE
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GULPIN
+ {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARON
+ {0x1A}, {0x29}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // PSYDUCK
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAIRON
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHISMUR
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NUZLEAF
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PHANPY
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHELGON
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLDUCK
+ {0x0B}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLBAT
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLEM
+ {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRAVELER
+ {0x0B}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GARDEVOIR
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RHYDON
+ {0x11}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RHYHORN
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOREBYSS
+ {0x02}, {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // CORSOLA
+ {0x1A}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CACNEA
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUSCLOPS
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHARPEDO
+ {0x1A}, {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // ZANGOOSE
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSHREW
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSLASH
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEADRA
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RELICANTH
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZIGZAGOON
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRAWDAUNT
+ {0x0B}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCEPTILE
+ {0x0B}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROVYLE
+ {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BANETTE
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JIRACHI
+ {0x11}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STARMIE
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZUBAT
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAILLOW
+ {0x02}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WYNAUT
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOBBUFFET
+ {0x1A}, {0x11}, {0x0B}, {0x02}, {0x29}, {0xFF}
+ }, { // SOLROCK
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHIFTRY
+ {0x0B}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HORSEA
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BAGON
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEDOT
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPHEAL
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELDUM
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEDICHAM
+ {0x0B}, {0x11}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // CHINCHOU
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHIMECHO
+ {0x02}, {0x11}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // ALTARIA
+ {0x02}, {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // SWABLU
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NINCADA
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEOXYS
+ {0x0B}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NINJASK
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DODUO
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DODRIO
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KOFFING
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACRUEL
+ {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUSTOX
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOUDRED
+ {0x02}, {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}
+ }, { // GOLDEEN
+ {0x1A}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BARBOACH
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEALEO
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WALREIN
+ {0x02}, {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // TROPIUS
+ {0x1A}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DONPHAN
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NUMEL
+ {0x02}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ODDISH
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRAPINCH
+ {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLAKOTH
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHISCASH
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHEDINJA
+ {0x11}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MARSHTOMP
+ {0x1A}, {0x1A}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // NATU
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // XATU
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLAYDOL
+ {0x0B}, {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // CACTURNE
+ {0x1A}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOSEPASS
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLAMPERL
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAMERUPT
+ {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXPLOUD
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLAZIKEN
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOMBRE
+ {0x1A}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOTAD
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPINDA
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPOINK
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEVIPER
+ {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HARIYAMA
+ {0x02}, {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // VOLBEAT
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUNTAIL
+ {0x02}, {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // PIKACHU
+ {0x11}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PICHU
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STARYU
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VIBRAVA
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VOLTORB
+ {0x1A}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEEBAS
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALAKAZAM
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRUMPIG
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WIGGLYTUFF
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IGGLYBUFF
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLYGON
+ {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLUSLE
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JIGGLYPUFF
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CORPHISH
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRIMER
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUK
+ {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERACROSS
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PELIPPER
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAILORD
+ {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAILMER
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SALAMENCE
+ {0x29}, {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // AGGRON
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POOCHYENA
+ {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CASTFORM
+ {0x1A}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MINUN
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGCARGO
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAKUHITA
+ {0x02}, {0x29}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // SLUGMA
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEZING
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LINOONE
+ {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CASCOON
+ {0x02}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MARILL
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AZUMARILL
+ {0x02}, {0x29}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // SWALOT
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELECTRODE
+ {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUDKIP
+ {0x11}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MILOTIC
+ {0x11}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // METAGROSS
+ {0x0B}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // METANG
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACOOL
+ {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BALTOY
+ {0x29}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SABLEYE
+ {0x1A}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VIGOROTH
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNORUNT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRADILY
+ {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KADABRA
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUSKULL
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAICHU
+ {0x02}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MANECTRIC
+ {0x1A}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWAMPERT
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELECTRIKE
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LATIAS
+ {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LATIOS
+ {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUVDISC
+ {0x11}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VILEPLUME
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RALTS
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LANTURN
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LILEEP
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUNATONE
+ {0x29}, {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // AZURILL
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUDICOLO
+ {0x02}, {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // MAGNETON
+ {0x02}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REGICE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REGISTEEL
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // REGIROCK
+ {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAYQUAZA
+ {0x02}, {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // VULPIX
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROSELIA
+ {0x1A}, {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // COMBUSKEN
+ {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHOP
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_TRAINER[][6] = {
+ { // I CHOOSE YOU
+ {0x29}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOTCHA
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRADE
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAPPHIRE
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVOLVE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENCYCLOPEDIA
+ {0x0B}, {0x11}, {0x1A}, {0x0B}, {0x11}, {0xFF}
+ }, { // NATURE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CENTER
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EGG
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LINK
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SP. ABILITY
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // TRAINER
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VERSION
+ {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKéNAV
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKéMON
+ {0x1A}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GET
+ {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKéDEX
+ {0x1A}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUBY
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEVEL
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_STATUS[][6] = {
+ { // DARK
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STENCH
+ {0x29}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THICK FAT
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAIN DISH
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRIZZLE
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARENA TRAP
+ {0x02}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INTIMIDATE
+ {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK HEAD
+ {0x0B}, {0x11}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // COLOR
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALT. COLOR
+ {0x02}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ROCK
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAUTIFUL
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAUTY
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIR LOCK
+ {0x11}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYCHIC
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER CUTTER
+ {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIGHTING
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHADOW TAG
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMART
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMARTNESS
+ {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPEED BOOST
+ {0x0B}, {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COOL
+ {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COOLNESS
+ {0x29}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE ARMOR
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUTE
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUTENESS
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STURDY
+ {0x1A}, {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // SUCTION CUPS
+ {0x02}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRASS
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLEAR BODY
+ {0x0B}, {0x29}, {0x02}, {0x1A}, {0x1A}, {0xFF}
+ }, { // TORRENT
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GHOST
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ICE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUTS
+ {0x02}, {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // ROUGH SKIN
+ {0x02}, {0x29}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // SHELL ARMOR
+ {0x02}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // NATURAL CURE
+ {0x11}, {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // DAMP
+ {0x0B}, {0x29}, {0x11}, {0x0B}, {0x11}, {0xFF}
+ }, { // GROUND
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIMBER
+ {0x0B}, {0x11}, {0x11}, {0x11}, {0x0B}, {0xFF}
+ }, { // MAGNET PULL
+ {0x02}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // WHITE SMOKE
+ {0x29}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // SYNCHRONIZE
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVERGROW
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWIFT SWIM
+ {0x02}, {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}
+ }, { // SAND STREAM
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAND VEIL
+ {0x02}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // KEEN EYE
+ {0x02}, {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // INNERFOCUS
+ {0x1A}, {0x0B}, {0x02}, {0x1A}, {0xFF}, {0xFF}
+ }, { // STATIC
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYPE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOUGH
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOUGHNESS
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHED SKIN
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // HUGE POWER
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VOLT ABSORB
+ {0x1A}, {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // WATER ABSORB
+ {0x02}, {0x0B}, {0x11}, {0x1A}, {0x02}, {0x1A}
+ }, { // ELECTRIC
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORECAST
+ {0x1A}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERENE GRACE
+ {0x0B}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON POINT
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGON
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRACE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OBLIVIOUS
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // TRUANT
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUN AWAY
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STICKY HOLD
+ {0x0B}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // CLOUD NINE
+ {0x1A}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // NORMAL
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STEEL
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ILLUMINATE
+ {0x0B}, {0x0B}, {0x29}, {0x29}, {0xFF}, {0xFF}
+ }, { // EARLY BIRD
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUSTLE
+ {0x11}, {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}
+ }, { // SHINE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLYING
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DROUGHT
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIGHTNINGROD
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMPOUNDEYES
+ {0x02}, {0x0B}, {0x0B}, {0x02}, {0x29}, {0xFF}
+ }, { // MARVEL SCALE
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WONDER GUARD
+ {0x29}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // INSOMNIA
+ {0x11}, {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // LEVITATE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLUS
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PRESSURE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIQUID OOZE
+ {0x1A}, {0x02}, {0x0B}, {0x1A}, {0x0B}, {0xFF}
+ }, { // COLOR CHANGE
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOUNDPROOF
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EFFECT SPORE
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PKRS
+ {0x1A}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIRE
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAME BODY
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MINUS
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OWN TEMPO
+ {0x0B}, {0x1A}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // MAGMA ARMOR
+ {0x02}, {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // WATER
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER VEIL
+ {0x02}, {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BUG
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWARM
+ {0x0B}, {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // CUTE CHARM
+ {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IMMUNITY
+ {0x11}, {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BLAZE
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PICKUP
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PATTERN
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLASH FIRE
+ {0x0B}, {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // VITAL SPIRIT
+ {0x29}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // CHLOROPHYLL
+ {0x1A}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PURE POWER
+ {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHIELD DUST
+ {0x29}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_BATTLE[][6] = {
+ { // MATCH UP
+ {0x02}, {0x1A}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // GO
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NO. 1
+ {0x29}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // DECIDE
+ {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LET ME WIN
+ {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WINS
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WIN
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WON
+ {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IF I WIN
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // WHEN I WIN
+ {0x11}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // CAN’T WIN
+ {0x11}, {0x0B}, {0x29}, {0x0B}, {0x11}, {0xFF}
+ }, { // CAN WIN
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NO MATCH
+ {0x29}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SPIRIT
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DECIDED
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRUMP CARD
+ {0x29}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAKE THAT
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COME ON
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ATTACK
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURRENDER
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUTSY
+ {0x02}, {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // TALENT
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STRATEGY
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMITE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MATCH
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VICTORY
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OFFENSIVE
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SENSE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VERSUS
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIGHTS
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POWER
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHALLENGE
+ {0x0B}, {0x02}, {0x29}, {0x1A}, {0x0B}, {0x29}
+ }, { // STRONG
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO STRONG
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GO EASY
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GENIUS
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEGEND
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ESCAPE
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIM
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIGHT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RESUSCITATE
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POINTS
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERIOUS
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIVE UP
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSS
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IF I LOSE
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // LOST
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUARD
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARTNER
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REJECT
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ACCEPT
+ {0x02}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // INVINCIBLE
+ {0x29}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RECEIVED
+ {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EASY
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEAK
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO WEAK
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PUSHOVER
+ {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEADER
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RULE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOVE
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_GREETINGS[][6] = {
+ { // THANKS
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YES
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERE GOES
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERE I COME
+ {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERE IT IS
+ {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YEAH
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WELCOME
+ {0x11}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OI
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOW DO
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONGRATS
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIVE ME
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SORRY
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APOLOGIZE
+ {0x0B}, {0x0B}, {0x11}, {0x29}, {0xFF}, {0xFF}
+ }, { // FORGIVE
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEY, THERE
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HELLO
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOOD-BYE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THANK YOU
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I’VE ARRIVED
+ {0x11}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARDON
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCUSE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEE YA
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCUSE ME
+ {0x0B}, {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // WELL, THEN
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GO AHEAD
+ {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APPRECIATE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEY?
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHAT’S UP?
+ {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUH?
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NO
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HI
+ {0x02}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YEAH, YEAH
+ {0x0B}, {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // BYE-BYE
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEET YOU
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEY
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMELL
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LISTENING
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOO-HAH
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YAHOO
+ {0x29}, {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YO
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COME OVER
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COUNT ON
+ {0x0B}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_PEOPLE[][6] = {
+ { // OPPONENT
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOU
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOURS
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SON
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOUR
+ {0x0B, 0xF7}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOU’RE
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOU’VE
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOTHER
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRANDFATHER
+ {0x1A}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNCLE
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FATHER
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BOY
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ADULT
+ {0x0B}, {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BROTHER
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SISTER
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRANDMOTHER
+ {0x1A}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AUNT
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARENT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAN
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ME
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIRL
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BABE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAMILY
+ {0x02}, {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // HER
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIM
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HE
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLACE
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAUGHTER
+ {0x1A}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIS
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HE’S
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AREN’T
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIBLINGS
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KID
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHILDREN
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MR.
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MRS.
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MYSELF
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I WAS
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO ME
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MY
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I AM
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I’VE
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHO
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMEONE
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHO WAS
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO WHOM
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHOSE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHO IS
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IT’S
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LADY
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRIEND
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALLY
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // PERSON
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUDE
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY WERE
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO THEM
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEIR
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY’RE
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY’VE
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEEN
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO US
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUR
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WE’RE
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIVAL
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WE’VE
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOMAN
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHE WAS
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO HER
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HER’S
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHE IS
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOME
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_VOICES[][6] = {
+ { // !
+ {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // !!
+ {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ?!
+ {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ?
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // …
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // …!
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ………
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // -
+ {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // - - -
+ {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UH-OH
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAAAH
+ {0x02, 0x05, 0x08}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AHAHA
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OH?
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOPE
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // URGH
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HMM
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHOAH
+ {0x1A}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WROOOAAR!
+ {0x1A}, {0x1A}, {0x1A}, {0x02}, {0xFF}, {0xFF}
+ }, { // WOW
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIGGLE
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIGH
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNBELIEVABLE
+ {0x29}, {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}
+ }, { // CRIES
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AGREE
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EH?
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRY
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EHEHE
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OI, OI, OI
+ {0x1A}, {0x0B}, {0x1A}, {0x0B}, {0x1A}, {0x0B}
+ }, { // OH, YEAH
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OH
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OOPS
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOCKED
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EEK
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRAAAH
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GWAHAHAHA
+ {0x02}, {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // WAY
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TCH
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEHE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAH
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YUP
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAHAHA
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIYEEH
+ {0x02}, {0x11}, {0x11}, {0x0B}, {0x0B}, {0xFF}
+ }, { // HIYAH
+ {0x11}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FUFUFU
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOL
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNORT
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUMPH
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEHEHE
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEH
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOHOHO
+ {0x1A}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UH-HUH
+ {0x29}, {0x11}, {0x29}, {0x11}, {0xFF}, {0xFF}
+ }, { // OH, DEAR
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0x0B}, {0xFF}
+ }, { // ARRGH
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUFUFU
+ {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MMM
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OH-KAY
+ {0x1A}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OKAY
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LALALA
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YAY
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWW
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOWEE
+ {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GWAH
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAHAHAHA
+ {0x02}, {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_SPEECH[][6] = {
+ { // LISTEN
+ {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOT VERY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEAN
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIE
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAY
+ {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RECOMMEND
+ {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NITWIT
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUITE
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FROM
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEELING
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BUT
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOWEVER
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CASE
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THE
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISS
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOW
+ {0x0B}, {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}
+ }, { // HIT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENOUGH
+ {0x0B}, {0x11}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // A LOT
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // A LITTLE
+ {0x0B}, {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ABSOLUTELY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AND
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ONLY
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AROUND
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PROBABLY
+ {0x0B}, {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // IF
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VERY
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // A TINY BIT
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WILD
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT’S
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUST
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVEN SO, {0x0C}, {0x0B}, {0x1A}, {0x33}, {0xFF}, {0xFF}
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUST BE
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATURALLY
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOR NOW, {0x1A}, {0x23}, {0xFF}, {0x33}, {0xFF}, {0xFF}
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNDERSTOOD
+ {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JOKING
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // READY
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMETHING
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMEHOW
+ {0x11}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ALTHOUGH
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALSO
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PERFECT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AS MUCH AS
+ {0x1A}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REALLY
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRULY
+ {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERIOUSLY
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOTALLY
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNTIL
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AS IF
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOOD
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RATHER
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWFULLY
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MODE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MORE
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO LATE
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FINALLY
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANY
+ {0x11}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // INSTEAD
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FANTASTIC
+ {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_ENDINGS[][6] = {
+ { // WILL
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WILL BE HERE
+ {0x11}, {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // OR
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TIMES
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WONDER
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IS IT?
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIMME
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COULD
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIKELY TO
+ {0x0B}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOULD
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ISN’T IT?
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LET’S
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OTHER
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAS
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WERE
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THOSE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ISN’T
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WON’T
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAN’T
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAN
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DON’T
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DO
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOES
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHOM
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHICH
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WASN’T
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEREN’T
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAVE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAVEN’T
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // A
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AN
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOT
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THERE
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OK?
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SO
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAYBE
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABOUT
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVER
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IT
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALL
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOR
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ON
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OFF
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AS
+ {0x0B}, {0x02}, {0x29}, {0x1A}, {0xFF}, {0xFF}
+ }, { // TO
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WITH
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BETTER
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVER
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SINCE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OF
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELONGS TO
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AT
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IN
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUT
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIKE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DID
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIDN’T
+ {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOESN’T
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WITHOUT
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AFTER
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEFORE
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHILE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAN
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ONCE
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANYWHERE
+ {0x11}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_FEELINGS[][6] = {
+ { // MEET
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLAY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HURRIED
+ {0x0B}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOES
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIDDY
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAPPY
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAPPINESS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCITE
+ {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // IMPORTANT
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FUNNY
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOT
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GO HOME
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DISAPPOINTED
+ {0x0B}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISAPPOINTS
+ {0x0B}, {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SAD
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRY
+ {0x29}, {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // TRIES
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEARS
+ {0x29}, {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // THINK
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEAR
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WANTS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISHEARD
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISLIKE
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANGRY
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANGER
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCARY
+ {0x29}, {0x0B}, {0x11}, {0x11}, {0xFF}, {0xFF}
+ }, { // LONESOME
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISAPPOINT
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JOY
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GETS
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEVER
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DARN
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOWNCAST
+ {0x0B}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INCREDIBLE
+ {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIKES
+ {0x1A}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISLIKES
+ {0x02}, {0x0B}, {0x11}, {0x29}, {0xFF}, {0xFF}
+ }, { // BORING
+ {0x02}, {0x0B}, {0x11}, {0x11}, {0xFF}, {0xFF}
+ }, { // CARE
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CARES
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALL RIGHT
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ADORE
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISASTER
+ {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENJOY
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENJOYS
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EAT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LACKING
+ {0x29}, {0x29}, {0x0B}, {0x11}, {0x0B}, {0xFF}
+ }, { // BAD
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HARD
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TERRIBLE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOULD
+ {0x11}, {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // NICE
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRINK
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURPRISE
+ {0x11}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // FEAR
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WANT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAIT
+ {0x02}, {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}
+ }, { // SATISFIED
+ {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RARE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEGATIVE
+ {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DONE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DANGER
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEFEATED
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAT
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GREAT
+ {0x1A}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROMANTIC
+ {0x1A}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUESTION
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNDERSTAND
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNDERSTANDS
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_CONDITIONS[][6] = {
+ { // HOT
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXISTS
+ {0x0B}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCESS
+ {0x11}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // APPROVED
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAS
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOOD
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LESS
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOMENTUM
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOING
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEIRD
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BUSY
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOGETHER
+ {0x29}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FULL
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABSENT
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEING
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEED
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TASTY
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKILLED
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOISY
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BIG
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LATE
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLOSE
+ {0x02}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // DOCILE
+ {0x02}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AMUSING
+ {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENTERTAINING
+ {0x29}, {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // PERFECTION
+ {0x0B}, {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // PRETTY
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEALTHY
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCELLENT
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UPSIDE DOWN
+ {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLD
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REFRESHING
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNAVOIDABLE
+ {0x29}, {0x0B}, {0x0B}, {0x11}, {0x02}, {0xFF}
+ }, { // MUCH
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVERWHELMING
+ {0x11}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // FABULOUS
+ {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELSE
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXPENSIVE
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CORRECT
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IMPOSSIBLE
+ {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMALL
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIFFERENT
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // TIRED
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKILL
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOP
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NON-STOP
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PREPOSTEROUS
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NONE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOTHING
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATURAL
+ {0x02}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BECOMES
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUKEWARM
+ {0x02}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAST
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOW
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWFUL
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALONE
+ {0x02}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BORED
+ {0x0B}, {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // SECRET
+ {0x0B}, {0x0B}, {0x11}, {0x11}, {0xFF}, {0xFF}
+ }, { // MYSTERY
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LACKS
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEST
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOUSY
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISTAKE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KIND
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WELL
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEAKENED
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIMPLE
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEMS
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BADLY
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_ACTIONS[][6] = {
+ { // MEETS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONCEDE
+ {0x0B}, {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // GIVE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIVES
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLAYED
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLAYS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLLECT
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WALKING
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WALKS
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAYS
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WENT
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAID
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAKE UP
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAKES UP
+ {0x02}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANGERS
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEACH
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEACHES
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLEASE
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEARN
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHANGE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STORY
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRUST
+ {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LAVISH
+ {0x1A}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LISTENS
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEARING
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRAINS
+ {0x02}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHOOSE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COME
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAME
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEARCH
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAKE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAUSE
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOW
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOWS
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REFUSE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STORES
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BRAG
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IGNORANT
+ {0x11}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THINKS
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELIEVE
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLIDE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EATS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // USE
+ {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // USES
+ {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // USING
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COULDN’T
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAPABLE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISAPPEAR
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APPEAR
+ {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // THROW
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORRY
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLEPT
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLEEP
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RELEASE
+ {0x0B}, {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DRINKS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUNS
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUN
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORKS
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORKING
+ {0x02}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // TALKING
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TALK
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SINK
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMACK
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PRETEND
+ {0x1A}, {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // PRAISE
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVERDO
+ {0x11}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SHOW
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOOKS
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEES
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEK
+ {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OWN
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAKE
+ {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALLOW
+ {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORGET
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORGETS
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APPEARS
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAINT
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAINTED
+ {0x02}, {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_LIFESTYLE[][6] = {
+ { // CHORES
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOME
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MONEY
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALLOWANCE
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATH
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONVERSATION
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCHOOL
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMMEMORATE
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HABIT
+ {0x0B}, {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // GROUP
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORD
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STORE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERVICE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORK
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SYSTEM
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRAIN
+ {0x02}, {0x11}, {0x11}, {0x0B}, {0x0B}, {0xFF}
+ }, { // CLASS
+ {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LESSONS
+ {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INFORMATION
+ {0x11}, {0x1A}, {0x02}, {0x11}, {0x1A}, {0xFF}
+ }, { // LIVING
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEACHER
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOURNAMENT
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LETTER
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVENT
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIGITAL
+ {0x11}, {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // TEST
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEPT. STORE
+ {0x02}, {0x29}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // TELEVISION
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PHONE
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ITEM
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NAME
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEWS
+ {0x0B}, {0x29}, {0x11}, {0x0B}, {0x11}, {0x0B}
+ }, { // POPULAR
+ {0x1A}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARTY
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STUDY
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHINE
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAIL
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MESSAGE
+ {0x11}, {0x0B}, {0x11}, {0x29}, {0xFF}, {0xFF}
+ }, { // PROMISE
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DREAM
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KINDERGARTEN
+ {0x11}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LIFE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RADIO
+ {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RENTAL
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORLD
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_HOBBIES[][6] = {
+ { // IDOL
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANIME
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SONG
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOVIE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWEETS
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHAT
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHILD’S PLAY
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOYS
+ {0x11}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUSIC
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CARDS
+ {0x02}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SHOPPING
+ {0x0B}, {0x11}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // CAMERA
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VIEWING
+ {0x0B}, {0x11}, {0x11}, {0x29}, {0xFF}, {0xFF}
+ }, { // SPECTATOR
+ {0x29}, {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // GOURMET
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GAME
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RPG
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLLECTION
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMPLETE
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGAZINE
+ {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WALK
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BIKE
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOBBY
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPORTS
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOFTWARE
+ {0x1A}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SONGS
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIET
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TREASURE
+ {0x1A}, {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // TRAVEL
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DANCE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHANNEL
+ {0x02}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAKING
+ {0x0B}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FISHING
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DATE
+ {0x0B}, {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}
+ }, { // DESIGN
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOCOMOTIVE
+ {0x1A}, {0x1A}, {0x1A}, {0x11}, {0x0B}, {0xFF}
+ }, { // PLUSH DOLL
+ {0x11}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PC
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLOWERS
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERO
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NAP
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEROINE
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FASHION
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ADVENTURE
+ {0x02}, {0x0B}, {0x0B}, {0x29}, {0x0B}, {0xFF}
+ }, { // BOARD
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BALL
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BOOK
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FESTIVAL
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMICS
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOLIDAY
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLANS
+ {0x0B}, {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // TRENDY
+ {0x11}, {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}
+ }, { // VACATION
+ {0x29}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOOK
+ {0x02}, {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_TIME[][6] = {
+ { // FALL
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MORNING
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOMORROW
+ {0x11}, {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LAST
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAY
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMETIME
+ {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALWAYS
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CURRENT
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOREVER
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAYS
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // END
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TUESDAY
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YESTERDAY
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TODAY
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRIDAY
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MONDAY
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LATER
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EARLIER
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANOTHER
+ {0x02}, {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // TIME
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FINISH
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEDNESDAY
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOON
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // START
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MONTH
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STOP
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOW
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FINAL
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEXT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AGE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SATURDAY
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUMMER
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUNDAY
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEGINNING
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPRING
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAYTIME
+ {0x02}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // WINTER
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAILY
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OLDEN
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALMOST
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEARLY
+ {0x0B}, {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // THURSDAY
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIGHTTIME
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIGHT
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEK
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_MISC[][6] = {
+ { // HIGHS
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOWS
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UM
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REAR
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THINGS
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THING
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELOW
+ {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABOVE
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BACK
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIGH
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INSIDE
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUTSIDE
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BESIDE
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIS IS IT!
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVERY
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THESE
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THESE WERE
+ {0x11}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DOWN
+ {0x11}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THOSE ARE
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THOSE WERE
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT’S IT!
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AM
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT WAS
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRONT
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UP
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHOICE
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAR
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWAY
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEAR
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHERE
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHEN
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHAT
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEEP
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHALLOW
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHY
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONFUSED
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OPPOSITE
+ {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LEFT
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIGHT
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_ADJECTIVES[][6] = {
+ { // WANDERING
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RICKETY
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK-SOLID
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUNGRY
+ {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TIGHT
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TICKLISH
+ {0x11}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // TWIRLING
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIRALING
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIRSTY
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOLLING
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SILKY
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SADLY
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOPELESS
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // USELESS
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DROOLING
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCITING
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THICK
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMOOTH
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLIMY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIN
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BREAK
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VORACIOUS
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCATTER
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWESOME
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WIMPY
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOBBLY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHAKY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIPPED
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHREDDED
+ {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INCREASING
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YET
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DESTROYED
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIERY
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOVEY-DOVEY
+ {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAPPILY
+ {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANTICIPATION
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_EVENTS[][6] = {
+ { // APPEAL
+ {0x02}, {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVENTS
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STAY-AT-HOME
+ {0x02}, {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BERRY
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONTEST
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MC
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUDGE
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUPER
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STAGE
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HALL OF FAME
+ {0x29}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // EVOLUTION
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE TOWER
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEADERS
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE ROOM
+ {0x02}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIDDEN
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SECRET BASE
+ {0x0B}, {0x0B}, {0x11}, {0x02}, {0x11}, {0xFF}
+ }, { // BLEND
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKEBLOCK
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MASTER
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RANK
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIBBON
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_MOVE_1[][6] = {
+ { // THUNDERBOLT
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IRON_TAIL
+ {0x0B}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // ICE_BALL
+ {0x1A}, {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // YAWN
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOVELY_KISS
+ {0x1A}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIGHTMARE
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MORNING_SUN
+ {0x1A}, {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // VITAL_THROW
+ {0x11}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIG
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THRASH
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWEET_SCENT
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARM
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAIN_DANCE
+ {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONFUSE_RAY
+ {0x1A}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAIL
+ {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AROMATHERAPY
+ {0x02}, {0x1A}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // BUBBLE
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENCORE
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUT
+ {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // RAGE
+ {0x02}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // SUPER_FANG
+ {0x29}, {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // PAIN_SPLIT
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0x0B}, {0xFF}
+ }, { // TORMENT
+ {0x1A}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STRING_SHOT
+ {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWAGGER
+ {0x02}, {0x0B}, {0x0B}, {0x0B}, {0x11}, {0xFF}
+ }, { // SNORE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEAL_BELL
+ {0x11}, {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SCREECH
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0x11}, {0xFF}
+ }, { // ROCK_THROW
+ {0x0B}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_SMASH
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ROCK_SLIDE
+ {0x0B}, {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // WEATHER_BALL
+ {0x0B}, {0x0B}, {0x1A}, {0x1A}, {0x1A}, {0x0B}
+ }, { // WHIRLPOOL
+ {0x11}, {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAKE_TEARS
+ {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SING
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPITE
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIR_CUTTER
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AEROBLAST
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMOKESCREEN
+ {0x02}, {0x29}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // PURSUIT
+ {0x0B}, {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOUBLE_SLAP
+ {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIRROR_MOVE
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVERHEAT
+ {0x11}, {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // AURORA_BEAM
+ {0x02}, {0x29}, {0x1A}, {0x02}, {0x02}, {0xFF}
+ }, { // MEMENTO
+ {0x0B}, {0x0B}, {0x1A}, {0x1A}, {0x11}, {0xFF}
+ }, { // OCTAZOOKA
+ {0x1A}, {0x02}, {0x29}, {0x29}, {0x02}, {0xFF}
+ }, { // FLATTER
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ASTONISH
+ {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WILL_O_WISP
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RETURN
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRUDGE
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STRENGTH
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COUNTER
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAME_WHEEL
+ {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAMETHROWER
+ {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ODOR_SLEUTH
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHARPEN
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOUBLE_TEAM
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUST
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HARDEN
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISABLE
+ {0x02}, {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // RAZOR_WIND
+ {0x11}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BIDE
+ {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // CRUNCH
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BITE
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THUNDER
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THUNDER_PUNCH
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENDEAVOR
+ {0x1A}, {0x11}, {0x29}, {0x02}, {0x11}, {0x1A}
+ }, { // FACADE
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KARATE_CHOP
+ {0x02}, {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // CLAMP
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WITHDRAW
+ {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONSTRICT
+ {0x29}, {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}
+ }, { // BRICK_BREAK
+ {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_TOMB
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOCUS_ENERGY
+ {0x0B}, {0x0B}, {0x11}, {0x1A}, {0x29}, {0xFF}
+ }, { // FOCUS_PUNCH
+ {0x02}, {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // GIGA_DRAIN
+ {0x11}, {0x02}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // REVERSAL
+ {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMELLING_SALT
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPORE
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEECH_LIFE
+ {0x29}, {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SLASH
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SILVER_WIND
+ {0x11}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // METAL_SOUND
+ {0x0B}, {0x02}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // GRASS_WHISTLE
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TICKLE
+ {0x02}, {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SPIDER_WEB
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRABHAMMER
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAZE
+ {0x29}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // MEAN_LOOK
+ {0x1A}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CROSS_CHOP
+ {0x0B}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUTRAGE
+ {0x29}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOW_KICK
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANCIENT_POWER
+ {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SYNTHESIS
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AGILITY
+ {0x02}, {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // RAPID_SPIN
+ {0x29}, {0x1A}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ICY_WIND
+ {0x0B}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIND_READER
+ {0x11}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // COSMIC_POWER
+ {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKY_ATTACK
+ {0x11}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // POWDER_SNOW
+ {0x29}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // FOLLOW_ME
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // METEOR_MASH
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENDURE
+ {0x02}, {0x29}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // ROLLOUT
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCARY_FACE
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYBEAM
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYWAVE
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYCHIC
+ {0x11}, {0x1A}, {0x11}, {0x0B}, {0x0B}, {0xFF}
+ }, { // HYPNOSIS
+ {0x11}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UPROAR
+ {0x02}, {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER_SPOUT
+ {0x1A}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIGNAL_BEAM
+ {0x02}, {0x0B}, {0x0B}, {0x29}, {0x0B}, {0xFF}
+ }, { // PSYCH_UP
+ {0x11}, {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUBMISSION
+ {0x11}, {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // RECOVER
+ {0x0B}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EARTHQUAKE
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATURE_POWER
+ {0x02}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LICK
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAIL
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAIL_WHIP
+ {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SELF_DESTRUCT
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STUN_SPORE
+ {0x02}, {0x0B}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BIND
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHADOW_PUNCH
+ {0x11}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // SHADOW_BALL
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARGE
+ {0x02}, {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}
+ }, { // MIST
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // FISSURE
+ {0x0B}, {0x1A}, {0x11}, {0x29}, {0xFF}, {0xFF}
+ }, { // EXTREME_SPEED
+ {0x29}, {0x1A}, {0x0B}, {0x1A}, {0xFF}, {0xFF}
+ }, { // EXTRASENSORY
+ {0x1A}, {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}
+ }, { // SAFEGUARD
+ {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABSORB
+ {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKY_UPPERCUT
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKILL_SWAP
+ {0x0B}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SKETCH
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEADBUTT
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOUBLE_EDGE
+ {0x11}, {0x11}, {0x1A}, {0x02}, {0x0B}, {0xFF}
+ }, { // SANDSTORM
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAND_ATTACK
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAND_TOMB
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPARK
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWIFT
+ {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // KINESIS
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMOG
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROWTH
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SACRED_FIRE
+ {0x0B}, {0x29}, {0x0B}, {0x0B}, {0x29}, {0x0B}
+ }, { // SHEER_COLD
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0x0B}, {0xFF}
+ }, { // SOLAR_BEAM
+ {0x1A}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SONIC_BOOM
+ {0x29}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLY
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_MOVE_2[][6] = {
+ { // TACKLE
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXPLOSION
+ {0x0B}, {0x1A}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // DIVE
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIRE_BLAST
+ {0x0B}, {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}
+ }, { // WATERFALL
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUDDY_WATER
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STOCKPILE
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLAM
+ {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TWISTER
+ {0x11}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BULLET_SEED
+ {0x29}, {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // TWINEEDLE
+ {0x29}, {0x1A}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SOFT_BOILED
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // EGG_BOMB
+ {0x0B}, {0x11}, {0x0B}, {0x1A}, {0x0B}, {0xFF}
+ }, { // FAINT_ATTACK
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BARRAGE
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MINIMIZE
+ {0x1A}, {0x11}, {0x02}, {0x1A}, {0xFF}, {0xFF}
+ }, { // SEISMIC_TOSS
+ {0x0B}, {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUPERSONIC
+ {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAUNT
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOONLIGHT
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PECK
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARM_THRUST
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HORN_ATTACK
+ {0x1A}, {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // HORN_DRILL
+ {0x1A}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WING_ATTACK
+ {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AERIAL_ACE
+ {0x02}, {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}
+ }, { // SWORDS_DANCE
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VINE_WHIP
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONVERSION
+ {0x29}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONVERSION_2
+ {0x29}, {0x02}, {0x29}, {0x0B}, {0x11}, {0xFF}
+ }, { // HELPING_HAND
+ {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IRON_DEFENSE
+ {0x0B}, {0x11}, {0x0B}, {0x02}, {0x0B}, {0xFF}
+ }, { // TELEPORT
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THUNDER_SHOCK
+ {0x1A}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOCK_WAVE
+ {0x1A}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUICK_ATTACK
+ {0x29}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWEET_KISS
+ {0x11}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THUNDER_WAVE
+ {0x1A}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ZAP_CANNON
+ {0x11}, {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BLOCK
+ {0x11}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOWL
+ {0x02}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_GAS
+ {0x11}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOXIC
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_FANG
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_POWDER
+ {0x11}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_STING
+ {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIKE_CANNON
+ {0x1A}, {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ACID_ARMOR
+ {0x0B}, {0x29}, {0x0B}, {0x02}, {0x0B}, {0xFF}
+ }, { // TAKE_DOWN
+ {0x1A}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUMP_KICK
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BOUNCE
+ {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HI_JUMP_KICK
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRI_ATTACK
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGON_CLAW
+ {0x02}, {0x0B}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // TRICK
+ {0x11}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRIPLE_KICK
+ {0x0B}, {0x11}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // DRILL_PECK
+ {0x1A}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUD_SPORT
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUD_SLAP
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIEF
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AMNESIA
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIGHT_SHADE
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROWL
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLACK_OFF
+ {0x02}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURF
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROLE_PLAY
+ {0x1A}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // NEEDLE_ARM
+ {0x11}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DOUBLE_KICK
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUNNY_DAY
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEER
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WISH
+ {0x29}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAKE_OUT
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLEEP_TALK
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PAY_DAY
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ASSIST
+ {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEAT_WAVE
+ {0x11}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SLEEP_POWDER
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REST
+ {0x0B}, {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INGRAIN
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONFUSION
+ {0x1A}, {0x29}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // BODY_SLAM
+ {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWALLOW
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CURSE
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYDRO_PUMP
+ {0x11}, {0x1A}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // HYPER_VOICE
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER_BEAM
+ {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUPERPOWER
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STEEL_WING
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIT_UP
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DYNAMIC_PUNCH
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUILLOTINE
+ {0x11}, {0x1A}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // VICE_GRIP
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOCK_OFF
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POUND
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAZOR_LEAF
+ {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATON_PASS
+ {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PETAL_DANCE
+ {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPLASH
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BUBBLE_BEAM
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELLY_DRUM
+ {0x02}, {0x29}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BARRIER
+ {0x02}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LIGHT_SCREEN
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCRATCH
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER_FANG
+ {0x11}, {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // EMBER
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SECRET_POWER
+ {0x0B}, {0x0B}, {0x11}, {0x02}, {0x29}, {0x0B}
+ }, { // DIZZY_PUNCH
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BULK_UP
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IMPRISON
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEATHER_DANCE
+ {0x02}, {0x29}, {0x0B}, {0x0B}, {0x11}, {0x0B}
+ }, { // WHIRLWIND
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAT_UP
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLIZZARD
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STOMP
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLASH
+ {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEETER_DANCE
+ {0x02}, {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // CRUSH_CLAW
+ {0x0B}, {0x02}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // BLAZE_KICK
+ {0x0B}, {0x29}, {0x0B}, {0x0B}, {0x0B}, {0xFF}
+ }, { // PRESENT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ERUPTION
+ {0x0B}, {0x29}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // SLUDGE
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLUDGE_BOMB
+ {0x02}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLARE
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRANSFORM
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_TAIL
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROAR
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BONE_RUSH
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAMOUFLAGE
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COVET
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAIL_GLOW
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BONE_CLUB
+ {0x1A}, {0x0B}, {0x0B}, {0x29}, {0x0B}, {0xFF}
+ }, { // BONEMERANG
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIRE_SPIN
+ {0x0B}, {0x29}, {0x0B}, {0x11}, {0x0B}, {0xFF}
+ }, { // FIRE_PUNCH
+ {0x0B}, {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // PERISH_SONG
+ {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WRAP
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIKES
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNITUDE
+ {0x11}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // MAGICAL_LEAF
+ {0x02}, {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // MAGIC_COAT
+ {0x02}, {0x11}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // MUD_SHOT
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACH_PUNCH
+ {0x0B}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PROTECT
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEFENSE_CURL
+ {0x0B}, {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ROLLING_KICK
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUBSTITUTE
+ {0x0B}, {0x0B}, {0x02}, {0x1A}, {0xFF}, {0xFF}
+ }, { // DETECT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIN_MISSILE
+ {0x02}, {0x0B}, {0x02}, {0x0B}, {0x0B}, {0xFF}
+ }, { // WATER_SPORT
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER_GUN
+ {0x02}, {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // MIST_BALL
+ {0x0B}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER_PULSE
+ {0x02}, {0x02}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // FURY_ATTACK
+ {0x29}, {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // FURY_SWIPES
+ {0x02}, {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DESTINY_BOND
+ {0x02}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FALSE_SWIPE
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORESIGHT
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIRROR_COAT
+ {0x11}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FUTURE_SIGHT
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MILK_DRINK
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CALM_MIND
+ {0x0B}, {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}
+ }, { // MEGA_DRAIN
+ {0x0B}, {0x02}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // MEGA_KICK
+ {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGA_PUNCH
+ {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGAHORN
+ {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIDDEN_POWER
+ {0x02}, {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // METAL_CLAW
+ {0x0B}, {0x02}, {0x02}, {0x29}, {0x0B}, {0xFF}
+ }, { // ATTRACT
+ {0x02}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIMIC
+ {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRUSTRATION
+ {0x29}, {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // LEECH_SEED
+ {0x0B}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // METRONOME
+ {0x0B}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DREAM_EATER
+ {0x02}, {0x29}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // ACID
+ {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEDITATE
+ {0x0B}, {0x11}, {0x02}, {0x11}, {0x1A}, {0xFF}
+ }, { // SNATCH
+ {0x11}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LUSTER_PURGE
+ {0x0B}, {0x11}, {0x0B}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LEAF_BLADE
+ {0x02}, {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // RECYCLE
+ {0x02}, {0x29}, {0x0B}, {0x0B}, {0x11}, {0x29}
+ }, { // REFLECT
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REFRESH
+ {0x0B}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REVENGE
+ {0x0B}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGON_RAGE
+ {0x02}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGON_BREATH
+ {0x0B}, {0x29}, {0x1A}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DRAGON_DANCE
+ {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ICE_PUNCH
+ {0x0B}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ICE_BEAM
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FURY_CUTTER
+ {0x1A}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMET_PUNCH
+ {0x1A}, {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // SKULL_BASH
+ {0x0B}, {0x0B}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // LOCK_ON
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_BLAST
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COTTON_SPORE
+ {0x02}, {0x29}, {0x1A}, {0x02}, {0x02}, {0xFF}
+ }, { // STRUGGLE
+ {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_TRENDY_SAYING[][6] = {
+ { // KTHX, BYE.
+ {0x1A}, {0x29}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // YES, SIR!
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // AVANT GARDE
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COUPLE
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUCH OBLIGED
+ {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YEEHAW!
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGA
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // 1-HIT KO!
+ {0x29}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DESTINY
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CANCEL
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEW
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLATTEN
+ {0x0B}, {0x0B}, {0x0B}, {0x0B}, {0x0B}, {0xFF}
+ }, { // KIDDING
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSER
+ {0x29}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSING
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAPPENING
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIP AND
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHAKE
+ {0x02}, {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // SHADY
+ {0x1A}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UPBEAT
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MODERN
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMELL YA
+ {0x11}, {0x0B}, {0x02}, {0x0B}, {0xFF}, {0xFF}
+ }, { // BANG
+ {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOCKOUT
+ {0x11}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HASSLE
+ {0x02}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WINNER
+ {0x0B}, {0x29}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // FEVER
+ {0x0B}, {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // WANNABE
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BABY
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEART
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OLD
+ {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOUNG
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UGLY
+ {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+
+static const struct BardSound BardMusic_POKEMON_2[][6] = {
+ { // EKANS
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARBOK
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEAKING
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARIADOS
+ {0x02}, {0x11}, {0x02}, {0x1A}, {0xFF}, {0xFF}
+ }, { // CROCONAW
+ {0x11}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNOWN
+ {0x11}, {0x1A}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // EEVEE
+ {0x0B}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GEODUDE
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // SPINARAK
+ {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PILOSWINE
+ {0x0B}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ONIX
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARCANINE
+ {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUDOWOODO
+ {0x1A}, {0x0B}, {0x02}, {0x29}, {0xFF}, {0xFF}
+ }, { // WEEPINBELL
+ {0x29}, {0x11}, {0x02}, {0x11}, {0x02}, {0xFF}
+ }, { // VICTREEBEL
+ {0x02}, {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // WOOPER
+ {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWINUB
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKARMORY
+ {0x02}, {0x02}, {0x0B}, {0x1A}, {0xFF}, {0xFF}
+ }, { // AIPOM
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ESPEON
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HITMONCHAN
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELEKID
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELECTABUZZ
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENTEI
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FERALIGATR
+ {0x11}, {0x0B}, {0x02}, {0x1A}, {0xFF}, {0xFF}
+ }, { // FURRET
+ {0x11}, {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // OCTILLERY
+ {0x1A}, {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // PRIMEAPE
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SENTRET
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STANTLER
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPEAROW
+ {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEAROW
+ {0x11}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OMASTAR
+ {0x02}, {0x1A}, {0x1A}, {0x1A}, {0xFF}, {0xFF}
+ }, { // OMANYTE
+ {0x02}, {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // GROWLITHE
+ {0x29}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHAMP
+ {0x02}, {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // DRAGONITE
+ {0x02}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PINSIR
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNORLAX
+ {0x0B}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KABUTO
+ {0x02}, {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KABUTOPS
+ {0x02}, {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HITMONTOP
+ {0x02}, {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}
+ }, { // WARTORTLE
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLASTOISE
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FARFETCHD
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUBONE
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAROWAK
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KANGASKHAN
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUNFLORA
+ {0x1A}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CATERPIE
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GYARADOS
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAPIDASH
+ {0x02}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NINETALES
+ {0x29}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIRAFARIG
+ {0x11}, {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // BELLOSSOM
+ {0x29}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KINGDRA
+ {0x0B}, {0x0B}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // KINGLER
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLOOM
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PINECO
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLIGAR
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KRABBY
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRANBULL
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CROBAT
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABRA
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GENGAR
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAUROS
+ {0x02}, {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGIKARP
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNEMITE
+ {0x02}, {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // GASTLY
+ {0x0B}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAUNTER
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHOKE
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KAKUNA
+ {0x1A}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYDUCK
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PHANPY
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RATTATA
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLDUCK
+ {0x0B}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLBAT
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLEM
+ {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRAVELER
+ {0x0B}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VENONAT
+ {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RHYDON
+ {0x11}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RHYHORN
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PUPITAR
+ {0x29}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CORSOLA
+ {0x1A}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HITMONLEE
+ {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZAPDOS
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JOLTEON
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSHREW
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSLASH
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEADRA
+ {0x0B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHELLDER
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VAPOREON
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEWGONG
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUICUNE
+ {0x29}, {0x11}, {0x29}, {0x0B}, {0xFF}, {0xFF}
+ }, { // STARMIE
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCYTHER
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZUBAT
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEEDRILL
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPNO
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DROWZEE
+ {0x02}, {0x29}, {0x02}, {0x1A}, {0xFF}, {0xFF}
+ }, { // SQUIRTLE
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CELEBI
+ {0x0B}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOBBUFFET
+ {0x1A}, {0x11}, {0x0B}, {0x02}, {0x29}, {0xFF}
+ }, { // DUGTRIO
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HORSEA
+ {0x0B}, {0x0B}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXEGGCUTE
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHIKORITA
+ {0x0B}, {0x11}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // CHINCHOU
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHUCKLE
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIGLETT
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REMORAID
+ {0x0B}, {0x1A}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // DELIBIRD
+ {0x1A}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOUNDOUR
+ {0x29}, {0x29}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AMPHAROS
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DODUO
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DODRIO
+ {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMEARGLE
+ {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KOFFING
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACRUEL
+ {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOGETIC
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOGEPI
+ {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLDEEN
+ {0x1A}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // METAPOD
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DONPHAN
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ODDISH
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXEGGUTOR
+ {0x1A}, {0x1A}, {0x0B}, {0x11}, {0xFF}, {0xFF}
+ }, { // NIDOKING
+ {0x11}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDOQUEEN
+ {0x11}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDORAN_F
+ {0x11}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDORAN_M
+ {0x11}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDORINA
+ {0x11}, {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // NIDORINO
+ {0x11}, {0x1A}, {0x11}, {0x1A}, {0xFF}, {0xFF}
+ }, { // MEOWTH
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNEASEL
+ {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POLIWHIRL
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POLITOED
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POLIWRATH
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POLIWAG
+ {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUAGSIRE
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATU
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // XATU
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUNSPARCE
+ {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEL
+ {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STEELIX
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYPHLOSION
+ {0x1A}, {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGONAIR
+ {0x02}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BUTTERFREE
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCIZOR
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOPPIP
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLISSEY
+ {0x0B}, {0x11}, {0x0B}, {0x11}, {0x02}, {0xFF}
+ }, { // PARAS
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARASECT
+ {0x02}, {0x02}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QWILFISH
+ {0x02}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MR_MIME
+ {0x02}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYROGUE
+ {0x02}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLOYSTER
+ {0x02}, {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYRANITAR
+ {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLEFFA
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEDLE
+ {0x1A}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIKACHU
+ {0x11}, {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLEFABLE
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIDGEOT
+ {0x02}, {0x29}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIDGEOTTO
+ {0x02}, {0x29}, {0x1A}, {0x02}, {0xFF}, {0xFF}
+ }, { // PICHU
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLEFAIRY
+ {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARMANDER
+ {0x29}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STARYU
+ {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CYNDAQUIL
+ {0x0B}, {0x29}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // SUNKERN
+ {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEDDIURSA
+ {0x0B}, {0x11}, {0x29}, {0x02}, {0xFF}, {0xFF}
+ }, { // VOLTORB
+ {0x1A}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOLTRES
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAREON
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALAKAZAM
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGMAR
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORRETRESS
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WIGGLYTUFF
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IVYSAUR
+ {0x11}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BULBASAUR
+ {0x11}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VENUSAUR
+ {0x11}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AERODACTYL
+ {0x02}, {0x0B}, {0x1A}, {0x02}, {0x11}, {0xFF}
+ }, { // MAGBY
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IGGLYBUFF
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UMBREON
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARTICUNO
+ {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JIGGLYPUFF
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNUBBULL
+ {0x29}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BAYLEEF
+ {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRIMER
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUK
+ {0x0B}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERACROSS
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOUNDOOM
+ {0x29}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PERSIAN
+ {0x1A}, {0x11}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // LICKITUNG
+ {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HO_OH
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOOTHOOT
+ {0x1A}, {0x1A}, {0x1A}, {0x1A}, {0xFF}, {0xFF}
+ }, { // PIDGEY
+ {0x02}, {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PONYTA
+ {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKIPLOOM
+ {0x29}, {0x0B}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PORYGON
+ {0x1A}, {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PORYGON2
+ {0x1A}, {0x11}, {0x1A}, {0x0B}, {0x11}, {0xFF}
+ }, { // MAGCARGO
+ {0x02}, {0x02}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLUGMA
+ {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUILAVA
+ {0x11}, {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}
+ }, { // BELLSPROUT
+ {0x1A}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEZING
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MARILL
+ {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AZUMARILL
+ {0x02}, {0x29}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // ELECTRODE
+ {0x0B}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MANKEY
+ {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MANTINE
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRATINI
+ {0x02}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEW
+ {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEWTWO
+ {0x11}, {0x29}, {0x29}, {0x29}, {0xFF}, {0xFF}
+ }, { // MILTANK
+ {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISDREAVUS
+ {0x02}, {0x29}, {0x29}, {0x11}, {0xFF}, {0xFF}
+ }, { // SMOOCHUM
+ {0x29}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGANIUM
+ {0x0B}, {0x02}, {0x11}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DITTO
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACOOL
+ {0x0B}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAREEP
+ {0x1A}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAAFFY
+ {0x02}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VENOMOTH
+ {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TANGELA
+ {0x02}, {0x0B}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLOWKING
+ {0x02}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLOWBRO
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLOWPOKE
+ {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MURKROW
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YANMA
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KADABRA
+ {0x02}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LARVITAR
+ {0x02}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOCTOWL
+ {0x1A}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAIKOU
+ {0x02}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAICHU
+ {0x02}, {0x11}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHANSEY
+ {0x02}, {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}
+ }, { // RATICATE
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAPRAS
+ {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VILEPLUME
+ {0x11}, {0x1A}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LANTURN
+ {0x02}, {0x29}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARMELEON
+ {0x29}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARIZARD
+ {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // URSARING
+ {0x29}, {0x02}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JYNX
+ {0x1A}, {0x02}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUGIA
+ {0x29}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNETON
+ {0x02}, {0x0B}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEDIAN
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEDYBA
+ {0x0B}, {0x11}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VULPIX
+ {0x29}, {0x11}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUMPLUFF
+ {0x02}, {0x29}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOTODILE
+ {0x02}, {0x11}, {0x02}, {0x11}, {0xFF}, {0xFF}
+ }, { // MACHOP
+ {0x02}, {0x1A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+#endif //GUARD_DATA_BARD_MUSIC_H
diff --git a/src/data/bard_music_en.h b/src/data/bard_music_en.h
new file mode 100644
index 000000000..98f4d4def
--- /dev/null
+++ b/src/data/bard_music_en.h
@@ -0,0 +1,3678 @@
+#ifndef GUARD_DATA_BARD_MUSIC_H
+#define GUARD_DATA_BARD_MUSIC_H
+
+/*static*/ const struct BardSound BardMusic_POKEMON[][6] = {
+ { // ARMALDO
+ {0x1B}, {0x1B}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // BEAUTIFLY
+ {0x2D}, {0x09}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // MEDITITE
+ {0x09}, {0x11}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // SEAKING
+ {0x0C}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TORCHIC
+ {0x18}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANORITH
+ {0x00}, {0x18}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABSOL
+ {0x00}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURSKIT
+ {0x30}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MASQUERAIN
+ {0x00}, {0x30}, {0x03}, {0x33}, {0xFF}, {0xFF}
+ }, { // GEODUDE
+ {0x0C}, {0x18}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ILLUMISE
+ {0x0C}, {0x27}, {0x0C}, {0x03}, {0xFF}, {0xFF}
+ }, { // SKARMORY
+ {0x1B}, {0x1A}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKITTY
+ {0x11}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DELCATTY
+ {0x09}, {0x00}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWELLOW
+ {0x09}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLALIE
+ {0x05}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KYOGRE
+ {0x12}, {0x18}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHAMP
+ {0x2A}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PINSIR
+ {0x11}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KECLEON
+ {0x09}, {0x0C}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // SHUPPET
+ {0x2A}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SILCOON
+ {0x11}, {0x28}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BRELOOM
+ {0x09}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHROOMISH
+ {0x27}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CARVANHA
+ {0x1B}, {0x01}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TREECKO
+ {0x0C}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WINGULL
+ {0x0F}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GYARADOS
+ {0x1D}, {0x09}, {0x11}, {0x1D}, {0xFF}, {0xFF}
+ }, { // NINETALES
+ {0x12}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIRAFARIG
+ {0x30}, {0x00}, {0x2A}, {0x11}, {0xFF}, {0xFF}
+ }, { // KIRLIA
+ {0x30}, {0x0C}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELLOSSOM
+ {0x09}, {0x1B}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // KINGDRA
+ {0x0C}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLOOM
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAWILE
+ {0x1B}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROUDON
+ {0x21}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIGHTYENA
+ {0x12}, {0x0C}, {0x09}, {0x2C}, {0xFF}, {0xFF}
+ }, { // CROBAT
+ {0x18}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABRA
+ {0x00}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLAKING
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WURMPLE
+ {0x30}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGIKARP
+ {0x00}, {0x11}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNEMITE
+ {0x00}, {0x09}, {0x12}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TORKOAL
+ {0x18}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHOKE
+ {0x2A}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GULPIN
+ {0x24}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARON
+ {0x1B}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYDUCK
+ {0x12}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAIRON
+ {0x05}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHISMUR
+ {0x11}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NUZLEAF
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PHANPY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHELGON
+ {0x09}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLDUCK
+ {0x18}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLBAT
+ {0x1A}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLEM
+ {0x18}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRAVELER
+ {0x00}, {0x09}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GARDEVOIR
+ {0x1B}, {0x09}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // RHYDON
+ {0x12}, {0x15}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RHYHORN
+ {0x14}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOREBYSS
+ {0x1A}, {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // CORSOLA
+ {0x18}, {0x18}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CACNEA
+ {0x00}, {0x0C}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUSCLOPS
+ {0x2A}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHARPEDO
+ {0x1D}, {0x0C}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZANGOOSE
+ {0x03}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSHREW
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSLASH
+ {0x00}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEADRA
+ {0x0C}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RELICANTH
+ {0x09}, {0x11}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // ZIGZAGOON
+ {0x11}, {0x00}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRAWDAUNT
+ {0x1B}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCEPTILE
+ {0x09}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROVYLE
+ {0x18}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BANETTE
+ {0x03}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JIRACHI
+ {0x30}, {0x1B}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // STARMIE
+ {0x1B}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZUBAT
+ {0x27}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAILLOW
+ {0x03}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WYNAUT
+ {0x12}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOBBUFFET
+ {0x1D}, {0x2C}, {0x09}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOLROCK
+ {0x18}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHIFTRY
+ {0x11}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HORSEA
+ {0x1A}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BAGON
+ {0x05}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEDOT
+ {0x0C}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPHEAL
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELDUM
+ {0x09}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEDICHAM
+ {0x09}, {0x11}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHINCHOU
+ {0x0F}, {0x21}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHIMECHO
+ {0x12}, {0x09}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // ALTARIA
+ {0x06}, {0x1B}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // SWABLU
+ {0x1B}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NINCADA
+ {0x0F}, {0x06}, {0x06}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEOXYS
+ {0x0C}, {0x1B}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // NINJASK
+ {0x0F}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DODUO
+ {0x1A}, {0x27}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DODRIO
+ {0x1A}, {0x0C}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KOFFING
+ {0x15}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACRUEL
+ {0x09}, {0x2A}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // DUSTOX
+ {0x2C}, {0x17}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOUDRED
+ {0x21}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLDEEN
+ {0x1A}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BARBOACH
+ {0x1B}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEALEO
+ {0x0C}, {0x0C}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WALREIN
+ {0x1B}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TROPIUS
+ {0x18}, {0x0C}, {0x2A}, {0x33}, {0xFF}, {0xFF}
+ }, { // DONPHAN
+ {0x1B}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NUMEL
+ {0x2C}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ODDISH
+ {0x15}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRAPINCH
+ {0x00}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLAKOTH
+ {0x00}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHISCASH
+ {0x11}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHEDINJA
+ {0x09}, {0x0F}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MARSHTOMP
+ {0x1B}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATU
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // XATU
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLAYDOL
+ {0x03}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CACTURNE
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOSEPASS
+ {0x18}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLAMPERL
+ {0x00}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAMERUPT
+ {0x00}, {0x30}, {0x2A}, {0x33}, {0xFF}, {0xFF}
+ }, { // EXPLOUD
+ {0x09}, {0x21}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLAZIKEN
+ {0x03}, {0x11}, {0x0F}, {0x33}, {0xFF}, {0xFF}
+ }, { // LOMBRE
+ {0x18}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOTAD
+ {0x18}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPINDA
+ {0x0F}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPOINK
+ {0x1E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEVIPER
+ {0x09}, {0x12}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HARIYAMA
+ {0x1B}, {0x0C}, {0x1B}, {0x2A}, {0xFF}, {0xFF}
+ }, { // VOLBEAT
+ {0x18}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUNTAIL
+ {0x2A}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIKACHU
+ {0x0C}, {0x2A}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PICHU
+ {0x0C}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STARYU
+ {0x1B}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VIBRAVA
+ {0x11}, {0x1B}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VOLTORB
+ {0x1A}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEEBAS
+ {0x0E}, {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // ALAKAZAM
+ {0x00}, {0x2C}, {0x2C}, {0x00}, {0xFF}, {0xFF}
+ }, { // GRUMPIG
+ {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WIGGLYTUFF
+ {0x11}, {0x27}, {0x0C}, {0x2A}, {0x33}, {0xFF}
+ }, { // IGGLYBUFF
+ {0x11}, {0x2A}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // FLYGON
+ {0x12}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLUSLE
+ {0x2A}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JIGGLYPUFF
+ {0x11}, {0x27}, {0x0C}, {0x2A}, {0x33}, {0xFF}
+ }, { // CORPHISH
+ {0x18}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRIMER
+ {0x12}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUK
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERACROSS
+ {0x09}, {0x2A}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // PELIPPER
+ {0x09}, {0x0C}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAILORD
+ {0x03}, {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // WAILMER
+ {0x05}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SALAMENCE
+ {0x00}, {0x00}, {0x09}, {0x33}, {0xFF}, {0xFF}
+ }, { // AGGRON
+ {0x00}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POOCHYENA
+ {0x27}, {0x0C}, {0x09}, {0x2C}, {0xFF}, {0xFF}
+ }, { // CASTFORM
+ {0x00}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MINUN
+ {0x12}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGCARGO
+ {0x00}, {0x1B}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAKUHITA
+ {0x1B}, {0x27}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // SLUGMA
+ {0x2C}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEZING
+ {0x0C}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LINOONE
+ {0x14}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CASCOON
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MARILL
+ {0x08}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AZUMARILL
+ {0x08}, {0x27}, {0x2C}, {0x10}, {0xFF}, {0xFF}
+ }, { // SWALOT
+ {0x1B}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELECTRODE
+ {0x0C}, {0x09}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUDKIP
+ {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MILOTIC
+ {0x12}, {0x18}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // METAGROSS
+ {0x09}, {0x2A}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // METANG
+ {0x09}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACOOL
+ {0x09}, {0x2A}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // BALTOY
+ {0x01}, {0x1E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SABLEYE
+ {0x03}, {0x0B}, {0x12}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VIGOROTH
+ {0x11}, {0x30}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNORUNT
+ {0x18}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRADILY
+ {0x03}, {0x11}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KADABRA
+ {0x2C}, {0x00}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUSKULL
+ {0x2A}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAICHU
+ {0x12}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MANECTRIC
+ {0x00}, {0x09}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // SWAMPERT
+ {0x1B}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELECTRIKE
+ {0x0C}, {0x09}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // LATIAS
+ {0x00}, {0x0C}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // LATIOS
+ {0x00}, {0x0C}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // LUVDISC
+ {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VILEPLUME
+ {0x14}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RALTS
+ {0x07}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LANTURN
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LILEEP
+ {0x11}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUNATONE
+ {0x27}, {0x2C}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // AZURILL
+ {0x06}, {0x27}, {0x0F}, {0x33}, {0xFF}, {0xFF}
+ }, { // LUDICOLO
+ {0x27}, {0x09}, {0x1A}, {0x1A}, {0xFF}, {0xFF}
+ }, { // MAGNETON
+ {0x00}, {0x09}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REGICE
+ {0x09}, {0x0C}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // REGISTEEL
+ {0x09}, {0x0C}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // REGIROCK
+ {0x09}, {0x0C}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAYQUAZA
+ {0x03}, {0x03}, {0x2A}, {0x33}, {0xFF}, {0xFF}
+ }, { // VULPIX
+ {0x24}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROSELIA
+ {0x18}, {0x09}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // COMBUSKEN
+ {0x2C}, {0x2C}, {0x0F}, {0x33}, {0xFF}, {0xFF}
+ }, { // MACHOP
+ {0x2A}, {0x15}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_TRAINER[][6] = {
+ { // I CHOOSE YOU
+ {0x12}, {0x27}, {0x2D}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOTCHA
+ {0x15}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRADE
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAPPHIRE
+ {0x00}, {0x12}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVOLVE
+ {0x0C}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENCYCLOPEDIA
+ {0x09}, {0x12}, {0x18}, {0x0C}, {0x0C}, {0x06}
+ }, { // NATURE
+ {0x03}, {0x30}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CENTER
+ {0x09}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EGG
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LINK
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SP. ABILITY
+ {0x09}, {0x08}, {0x06}, {0x11}, {0x11}, {0x0C}
+ }, { // TRAINER
+ {0x03}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VERSION
+ {0x32}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKéNAV
+ {0x18}, {0x0C}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKéMON
+ {0x18}, {0x0C}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GET
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKéDEX
+ {0x18}, {0x0C}, {0x09}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUBY
+ {0x27}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEVEL
+ {0x09}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_STATUS[][6] = {
+ { // DARK
+ {0x08}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STENCH
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THICK FAT
+ {0x11}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAIN DISH
+ {0x03}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRIZZLE
+ {0x11}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARENA TRAP
+ {0x06}, {0x0C}, {0x06}, {0x00}, {0xFF}, {0xFF}
+ }, { // INTIMIDATE
+ {0x0F}, {0x11}, {0x2C}, {0x03}, {0xFF}, {0xFF}
+ }, { // ROCK HEAD
+ {0x15}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLOR
+ {0x2C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALT. COLOR
+ {0x1B}, {0x32}, {0x01}, {0x2C}, {0x30}, {0xFF}
+ }, { // ROCK
+ {0x15}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAUTIFUL
+ {0x27}, {0x0C}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAUTY
+ {0x27}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIR LOCK
+ {0x09}, {0x15}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYCHIC
+ {0x12}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER CUTTER
+ {0x12}, {0x30}, {0x2C}, {0x30}, {0xFF}, {0xFF}
+ }, { // FIGHTING
+ {0x12}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHADOW TAG
+ {0x00}, {0x18}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMART
+ {0x06}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMARTNESS
+ {0x06}, {0x32}, {0x09}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPEED BOOST
+ {0x0C}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COOL
+ {0x29}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COOLNESS
+ {0x29}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE ARMOR
+ {0x00}, {0x09}, {0x06}, {0x30}, {0xFF}, {0xFF}
+ }, { // CUTE
+ {0x2D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUTENESS
+ {0x2D}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STURDY
+ {0x30}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUCTION CUPS
+ {0x2A}, {0x0F}, {0x2A}, {0x33}, {0x33}, {0xFF}
+ }, { // GRASS
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLEAR BODY
+ {0x0E}, {0x17}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TORRENT
+ {0x1A}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GHOST
+ {0x15}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ICE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUTS
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROUGH SKIN
+ {0x2C}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHELL ARMOR
+ {0x09}, {0x06}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // NATURAL CURE
+ {0x00}, {0x32}, {0x08}, {0x30}, {0x33}, {0xFF}
+ }, { // DAMP
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROUND
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIMBER
+ {0x0F}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNET PULL
+ {0x00}, {0x09}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // WHITE SMOKE
+ {0x12}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SYNCHRONIZE
+ {0x0F}, {0x18}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // OVERGROW
+ {0x18}, {0x30}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWIFT SWIM
+ {0x11}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAND STREAM
+ {0x02}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAND VEIL
+ {0x02}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KEEN EYE
+ {0x0C}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INNERFOCUS
+ {0x0F}, {0x30}, {0x18}, {0x2A}, {0xFF}, {0xFF}
+ }, { // STATIC
+ {0x00}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYPE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOUGH
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOUGHNESS
+ {0x2C}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHED SKIN
+ {0x09}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUGE POWER
+ {0x2D}, {0x21}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VOLT ABSORB
+ {0x24}, {0x2C}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER ABSORB
+ {0x06}, {0x30}, {0x2C}, {0x1A}, {0xFF}, {0xFF}
+ }, { // ELECTRIC
+ {0x0B}, {0x09}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORECAST
+ {0x1A}, {0x02}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERENE GRACE
+ {0x30}, {0x0E}, {0x03}, {0x33}, {0xFF}, {0xFF}
+ }, { // POISON
+ {0x20}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON POINT
+ {0x20}, {0x1B}, {0x1E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGON
+ {0x01}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRACE
+ {0x04}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OBLIVIOUS
+ {0x2C}, {0x11}, {0x0C}, {0x2C}, {0x33}, {0xFF}
+ }, { // TRUANT
+ {0x27}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUN AWAY
+ {0x2A}, {0x08}, {0x05}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STICKY HOLD
+ {0x11}, {0x0C}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLOUD NINE
+ {0x21}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NORMAL
+ {0x1A}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STEEL
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ILLUMINATE
+ {0x11}, {0x27}, {0x0F}, {0x03}, {0xFF}, {0xFF}
+ }, { // EARLY BIRD
+ {0x30}, {0x0C}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUSTLE
+ {0x2A}, {0x26}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHINE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLYING
+ {0x12}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DROUGHT
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIGHTNINGROD
+ {0x12}, {0x11}, {0x15}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMPOUNDEYES
+ {0x15}, {0x21}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // MARVEL SCALE
+ {0x06}, {0x24}, {0x05}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WONDER GUARD
+ {0x2A}, {0x30}, {0x06}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INSOMNIA
+ {0x0F}, {0x15}, {0x0C}, {0x06}, {0xFF}, {0xFF}
+ }, { // LEVITATE
+ {0x09}, {0x0C}, {0x03}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLUS
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PRESSURE
+ {0x09}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIQUID OOZE
+ {0x11}, {0x09}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLOR CHANGE
+ {0x17}, {0x30}, {0x03}, {0x33}, {0xFF}, {0xFF}
+ }, { // SOUNDPROOF
+ {0x21}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EFFECT SPORE
+ {0x0C}, {0x09}, {0x1A}, {0x33}, {0xFF}, {0xFF}
+ }, { // PKRS
+ {0x18}, {0x0C}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIRE
+ {0x14}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAME BODY
+ {0x03}, {0x15}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MINUS
+ {0x12}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OWN TEMPO
+ {0x18}, {0x09}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGMA ARMOR
+ {0x01}, {0x2C}, {0x1B}, {0x30}, {0xFF}, {0xFF}
+ }, { // WATER
+ {0x06}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER VEIL
+ {0x06}, {0x30}, {0x04}, {0x33}, {0xFF}, {0xFF}
+ }, { // BUG
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWARM
+ {0x07}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUTE CHARM
+ {0x2D}, {0x07}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IMMUNITY
+ {0x11}, {0x27}, {0x11}, {0x0C}, {0xFF}, {0xFF}
+ }, { // BLAZE
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PICKUP
+ {0x11}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PATTERN
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLASH FIRE
+ {0x00}, {0x14}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VITAL SPIRIT
+ {0x12}, {0x1B}, {0x30}, {0x11}, {0xFF}, {0xFF}
+ }, { // CHLOROPHYLL
+ {0x1A}, {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // PURE POWER
+ {0x2D}, {0x21}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // SHIELD DUST
+ {0x0E}, {0x2B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_BATTLE[][6] = {
+ { // MATCH UP
+ {0x02}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GO
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NO. 1
+ {0x2A}, {0x30}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DECIDE
+ {0x0C}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LET ME WIN
+ {0x09}, {0x0C}, {0x0F}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WINS
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WIN
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WON
+ {0x17}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IF I WIN
+ {0x0F}, {0x12}, {0x0F}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHEN I WIN
+ {0x0F}, {0x12}, {0x0F}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAN’T WIN
+ {0x02}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAN WIN
+ {0x00}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NO MATCH
+ {0x18}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIRIT
+ {0x09}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DECIDED
+ {0x0C}, {0x12}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRUMP CARD
+ {0x2C}, {0x08}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAKE THAT
+ {0x05}, {0x01}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COME ON
+ {0x2C}, {0x17}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ATTACK
+ {0x2A}, {0x02}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURRENDER
+ {0x30}, {0x09}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUTSY
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TALENT
+ {0x01}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STRATEGY
+ {0x00}, {0x0B}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMITE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MATCH
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VICTORY
+ {0x11}, {0x32}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OFFENSIVE
+ {0x15}, {0x0B}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // SENSE
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VERSUS
+ {0x30}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIGHTS
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POWER
+ {0x23}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHALLENGE
+ {0x01}, {0x0A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STRONG
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO STRONG
+ {0x29}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GO EASY
+ {0x18}, {0x0C}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOE
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GENIUS
+ {0x0E}, {0x0E}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEGEND
+ {0x09}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ESCAPE
+ {0x09}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIM
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE
+ {0x00}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIGHT
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RESUSCITATE
+ {0x0C}, {0x09}, {0x11}, {0x05}, {0xFF}, {0xFF}
+ }, { // POINTS
+ {0x1E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERIOUS
+ {0x0C}, {0x0E}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIVE UP
+ {0x11}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSS
+ {0x17}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IF I LOSE
+ {0x0F}, {0x12}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOST
+ {0x16}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSE
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUARD
+ {0x08}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARTNER
+ {0x15}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REJECT
+ {0x0C}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ACCEPT
+ {0x00}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INVINCIBLE
+ {0x0F}, {0x11}, {0x2C}, {0x24}, {0xFF}, {0xFF}
+ }, { // RECEIVED
+ {0x0C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EASY
+ {0x0C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEAK
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO WEAK
+ {0x27}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PUSHOVER
+ {0x29}, {0x1A}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEADER
+ {0x0C}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RULE
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOVE
+ {0x29}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_GREETINGS[][6] = {
+ { // THANKS
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YES
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERE GOES
+ {0x30}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERE I COME
+ {0x30}, {0x12}, {0x17}, {0x33}, {0xFF}, {0xFF}
+ }, { // HERE IT IS
+ {0x30}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YEAH
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WELCOME
+ {0x09}, {0x17}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OI
+ {0x1E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOW DO
+ {0x21}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONGRATS
+ {0x2C}, {0x02}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIVE ME
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SORRY
+ {0x1B}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APOLOGIZE
+ {0x2C}, {0x06}, {0x17}, {0x12}, {0x33}, {0xFF}
+ }, { // FORGIVE
+ {0x1A}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEY, THERE
+ {0x04}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HELLO
+ {0x09}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOOD-BYE
+ {0x26}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THANK YOU
+ {0x03}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I’VE ARRIVED
+ {0x12}, {0x06}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // PARDON
+ {0x1D}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCUSE
+ {0x09}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEE YA
+ {0x0E}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCUSE ME
+ {0x0B}, {0x28}, {0x0D}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WELL, THEN
+ {0x09}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GO AHEAD
+ {0x1A}, {0x2C}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APPRECIATE
+ {0x00}, {0x0C}, {0x0E}, {0x05}, {0xFF}, {0xFF}
+ }, { // HEY?
+ {0x04}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHAT’S UP?
+ {0x2C}, {0x2B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUH?
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NO
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HI
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YEAH, YEAH
+ {0x0A}, {0x0A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BYE-BYE
+ {0x14}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEET YOU
+ {0x0E}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEY
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMELL
+ {0x0D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LISTENING
+ {0x11}, {0x0B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOO-HAH
+ {0x27}, {0x01}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YAHOO
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YO
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COME OVER
+ {0x2C}, {0x18}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COUNT ON
+ {0x23}, {0x17}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_PEOPLE[][6] = {
+ { // OPPONENT
+ {0x2C}, {0x1A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I
+ {0x13}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOU
+ {0x2D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOURS
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SON
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOUR
+ {0x1A, 0xF7}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOU’RE
+ {0x26}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOU’VE
+ {0x2D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOTHER
+ {0x2C}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRANDFATHER
+ {0x01}, {0x08}, {0x32}, {0x33}, {0xFF}, {0xFF}
+ }, { // UNCLE
+ {0x2C}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FATHER
+ {0x08}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BOY
+ {0x1E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ADULT
+ {0x00}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BROTHER
+ {0x15}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SISTER
+ {0x11}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRANDMOTHER
+ {0x01}, {0x2C}, {0x32}, {0x33}, {0xFF}, {0xFF}
+ }, { // AUNT
+ {0x07}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARENT
+ {0x09}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAN
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ME
+ {0x0D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIRL
+ {0x30}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BABE
+ {0x04}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAMILY
+ {0x00}, {0x11}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HER
+ {0x32}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIM
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HE
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLACE
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAUGHTER
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIS
+ {0x10}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HE’S
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AREN’T
+ {0x1C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIBLINGS
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KID
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHILDREN
+ {0x11}, {0x0A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MR.
+ {0x11}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MRS.
+ {0x11}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MYSELF
+ {0x12}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I WAS
+ {0x12}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO ME
+ {0x27}, {0x0D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MY
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I AM
+ {0x12}, {0x02}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // I’VE
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHO
+ {0x29}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMEONE
+ {0x2A}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHO WAS
+ {0x27}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO WHOM
+ {0x27}, {0x29}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHOSE
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHO IS
+ {0x27}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IT’S
+ {0x10}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LADY
+ {0x05}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRIEND
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALLY
+ {0x00}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PERSON
+ {0x32}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUDE
+ {0x28}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY WERE
+ {0x05}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO THEM
+ {0x27}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEIR
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY’RE
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THEY’VE
+ {0x03}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WE
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEEN
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO US
+ {0x27}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUR
+ {0x21}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WE’RE
+ {0x0C}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIVAL
+ {0x12}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WE’VE
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOMAN
+ {0x26}, {0x02}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHE
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHE WAS
+ {0x0C}, {0x2B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO HER
+ {0x27}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HER’S
+ {0x30}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHE IS
+ {0x0C}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOME
+ {0x0C}, {0x01}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_VOICES[][6] = {
+ { // !
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // !!
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ?!
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ?
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // …
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // …!
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ………
+ {0x0C}, {0x30}, {0x33}, {0x0C}, {0x30}, {0xFF}
+ }, { // -
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // - - -
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UH-OH
+ {0x2C}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAAAH
+ {0x1B, 0x05, 0x08}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AHAHA
+ {0x06}, {0x06}, {0x06}, {0x33}, {0x33}, {0xFF}
+ }, { // OH?
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOPE
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // URGH
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HMM
+ {0x28}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHOAH
+ {0x19}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WROOOAAR!
+ {0x1C}, {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // WOW
+ {0x23}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIGGLE
+ {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIGH
+ {0x0A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNBELIEVABLE
+ {0x2C}, {0x0E}, {0x0C}, {0x02}, {0x24}, {0xFF}
+ }, { // CRIES
+ {0x13}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AGREE
+ {0x06}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EH?
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRY
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EHEHE
+ {0x0C}, {0x0C}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OI, OI, OI
+ {0x1E}, {0x1E}, {0x1E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OH, YEAH
+ {0x18}, {0x01}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OH
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OOPS
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOCKED
+ {0x17}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EEK
+ {0x0D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRAAAH
+ {0x06}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GWAHAHAHA
+ {0x06}, {0x06}, {0x06}, {0x17}, {0xFF}, {0xFF}
+ }, { // WAY
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TCH
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEHE
+ {0x0C}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAH
+ {0x06}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YUP
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAHAHA
+ {0x06}, {0x06}, {0x06}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIYEEH
+ {0x13}, {0x0D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIYAH
+ {0x0C}, {0x07}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FUFUFU
+ {0x27}, {0x27}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOL
+ {0x18}, {0x1A}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNORT
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUMPH
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEHEHE
+ {0x0C}, {0x0C}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEH
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOHOHO
+ {0x18}, {0x18}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UH-HUH
+ {0x2A}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OH, DEAR
+ {0x18}, {0x0E}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARRGH
+ {0x1C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUFUFU
+ {0x27}, {0x27}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MMM
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OH-KAY
+ {0x18}, {0x04}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OKAY
+ {0x18}, {0x04}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LALALA
+ {0x06}, {0x06}, {0x06}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YAY
+ {0x04}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWW
+ {0x07}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOWEE
+ {0x22}, {0x0D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GWAH
+ {0x07}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAHAHAHA
+ {0x06}, {0x06}, {0x06}, {0x06}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_SPEECH[][6] = {
+ { // LISTEN
+ {0x09}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOT VERY
+ {0x15}, {0x09}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEAN
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAY
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RECOMMEND
+ {0x09}, {0x2C}, {0x0A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NITWIT
+ {0x0F}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUITE
+ {0x14}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FROM
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEELING
+ {0x0C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BUT
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOWEVER
+ {0x21}, {0x09}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CASE
+ {0x0C}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THE
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISS
+ {0x11}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOW
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIT
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENOUGH
+ {0x0E}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // A LOT
+ {0x03}, {0x17}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // A LITTLE
+ {0x03}, {0x11}, {0x26}, {0x33}, {0xFF}, {0xFF}
+ }, { // ABSOLUTELY
+ {0x00}, {0x2C}, {0x2D}, {0x0E}, {0x33}, {0xFF}
+ }, { // AND
+ {0x00}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ONLY
+ {0x1A}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AROUND
+ {0x0A}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PROBABLY
+ {0x15}, {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // IF
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VERY
+ {0x0A}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // A TINY BIT
+ {0x2C}, {0x14}, {0x0C}, {0x11}, {0xFF}, {0xFF}
+ }, { // WILD
+ {0x12}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT’S
+ {0x00}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUST
+ {0x2C}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVEN SO,
+ {0x0C}, {0x0B}, {0x1A}, {0x33}, {0xFF}, {0xFF}
+ }, { // MUST BE
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATURALLY
+ {0x01}, {0x30}, {0x06}, {0x0E}, {0x33}, {0xFF}
+ }, { // FOR NOW,
+ {0x1A}, {0x23}, {0xFF}, {0x33}, {0xFF}, {0xFF}
+ }, { // UNDERSTOOD
+ {0x2C}, {0x32}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JOKING
+ {0x18}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // READY
+ {0x09}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMETHING
+ {0x1B}, {0x0E}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMEHOW
+ {0x1B}, {0x23}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALTHOUGH
+ {0x06}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALSO
+ {0x06}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PERFECT
+ {0x32}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AS MUCH AS
+ {0x01}, {0x2C}, {0x01}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REALLY
+ {0x0C}, {0x0A}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRULY
+ {0x27}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERIOUSLY
+ {0x11}, {0x0E}, {0x26}, {0x0E}, {0x33}, {0xFF}
+ }, { // TOTALLY
+ {0x18}, {0x07}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // UNTIL
+ {0x2C}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AS IF
+ {0x01}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOOD
+ {0x28}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RATHER
+ {0x00}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWFULLY
+ {0x06}, {0x26}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // MODE
+ {0x1A}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MORE
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO LATE
+ {0x27}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FINALLY
+ {0x12}, {0x06}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // ANY
+ {0x08}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INSTEAD
+ {0x0F}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FANTASTIC
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_ENDINGS[][6] = {
+ { // WILL
+ {0x10}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WILL BE HERE
+ {0x10}, {0x0C}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OR
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TIMES
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WONDER
+ {0x2C}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IS IT?
+ {0x11}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BE
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIMME
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COULD
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIKELY TO
+ {0x14}, {0x0E}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // WOULD
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IS
+ {0x10}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ISN’T IT?
+ {0x11}, {0x09}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LET’S
+ {0x0B}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OTHER
+ {0x2C}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARE
+ {0x1C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAS
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WERE
+ {0x32}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THOSE
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ISN’T
+ {0x0F}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WON’T
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAN’T
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAN
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DON’T
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DO
+ {0x27}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOES
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHOM
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHICH
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WASN’T
+ {0x2C}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEREN’T
+ {0x32}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAVE
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAVEN’T
+ {0x00}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // A
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AN
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOT
+ {0x17}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THERE
+ {0x0B}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OK?
+ {0x1A}, {0x04}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SO
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAYBE
+ {0x03}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABOUT
+ {0x2A}, {0x23}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVER
+ {0x18}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IT
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALL
+ {0x06}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOR
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ON
+ {0x1C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OFF
+ {0x1D}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AS
+ {0x01}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TO
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WITH
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BETTER
+ {0x09}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVER
+ {0x09}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SINCE
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OF
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELONGS TO
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AT
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IN
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUT
+ {0x21}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOO
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIKE
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DID
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIDN’T
+ {0x11}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOESN’T
+ {0x2C}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WITHOUT
+ {0x11}, {0x23}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AFTER
+ {0x00}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEFORE
+ {0x0C}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHILE
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAN
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ONCE
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANYWHERE
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_FEELINGS[][6] = {
+ { // MEET
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLAY
+ {0x04}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HURRIED
+ {0x32}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOES
+ {0x19}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIDDY
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAPPY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAPPINESS
+ {0x00}, {0x0C}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCITE
+ {0x0B}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IMPORTANT
+ {0x0F}, {0x1A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FUNNY
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOT
+ {0x17}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GO HOME
+ {0x18}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISAPPOINTED
+ {0x11}, {0x00}, {0x1E}, {0x0B}, {0xFF}, {0xFF}
+ }, { // DISAPPOINTS
+ {0x11}, {0x00}, {0x20}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAD
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRY
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRIES
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEARS
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THINK
+ {0x0D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEAR
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WANTS
+ {0x08}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISHEARD
+ {0x11}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISLIKE
+ {0x11}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANGRY
+ {0x05}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANGER
+ {0x05}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCARY
+ {0x0B}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LONESOME
+ {0x18}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISAPPOINT
+ {0x11}, {0x2A}, {0x20}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JOY
+ {0x20}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GETS
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEVER
+ {0x0B}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DARN
+ {0x08}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOWNCAST
+ {0x21}, {0x02}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INCREDIBLE
+ {0x0F}, {0x0B}, {0x11}, {0x26}, {0xFF}, {0xFF}
+ }, { // LIKES
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISLIKES
+ {0x11}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BORING
+ {0x1A}, {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // CARE
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CARES
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALL RIGHT
+ {0x06}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ADORE
+ {0x2C}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISASTER
+ {0x11}, {0x00}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENJOY
+ {0x11}, {0x20}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENJOYS
+ {0x11}, {0x20}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EAT
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LACKING
+ {0x02}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BAD
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HARD
+ {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TERRIBLE
+ {0x0B}, {0x2A}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOULD
+ {0x29}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NICE
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRINK
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURPRISE
+ {0x32}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEAR
+ {0x32}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WANT
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAIT
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SATISFIED
+ {0x00}, {0x11}, {0x14}, {0x33}, {0xFF}, {0xFF}
+ }, { // SEE
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RARE
+ {0x32}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEGATIVE
+ {0x0B}, {0x2C}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DONE
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DANGER
+ {0x03}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEFEATED
+ {0x0E}, {0x0E}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEAT
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GREAT
+ {0x04}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROMANTIC
+ {0x1A}, {0x00}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUESTION
+ {0x0B}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNDERSTAND
+ {0x2C}, {0x32}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNDERSTANDS
+ {0x2C}, {0x32}, {0x02}, {0x33}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_CONDITIONS[][6] = {
+ { // HOT
+ {0x15}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXISTS
+ {0x0B}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCESS
+ {0x0B}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APPROVED
+ {0x06}, {0x29}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAS
+ {0x01}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOOD
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LESS
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOMENTUM
+ {0x1A}, {0x0B}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // GOING
+ {0x1A}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEIRD
+ {0x18}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BUSY
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOGETHER
+ {0x29}, {0x0A}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FULL
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABSENT
+ {0x02}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEING
+ {0x0F}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEED
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TASTY
+ {0x05}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKILLED
+ {0x11}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOISY
+ {0x20}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BIG
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LATE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLOSE
+ {0x19}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOCILE
+ {0x17}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AMUSING
+ {0x2C}, {0x27}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENTERTAINING
+ {0x09}, {0x30}, {0x03}, {0x11}, {0x33}, {0xFF}
+ }, { // PERFECTION
+ {0x32}, {0x0B}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // PRETTY
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEALTHY
+ {0x0A}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCELLENT
+ {0x09}, {0x2C}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UPSIDE DOWN
+ {0x2C}, {0x14}, {0x23}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLD
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REFRESHING
+ {0x0E}, {0x0A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNAVOIDABLE
+ {0x2C}, {0x2A}, {0x1E}, {0x2C}, {0x26}, {0xFF}
+ }, { // MUCH
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVERWHELMING
+ {0x1A}, {0x32}, {0x0B}, {0x11}, {0x33}, {0xFF}
+ }, { // FABULOUS
+ {0x00}, {0x27}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELSE
+ {0x0A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXPENSIVE
+ {0x09}, {0x0A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CORRECT
+ {0x1A}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IMPOSSIBLE
+ {0x0F}, {0x1D}, {0x2A}, {0x26}, {0xFF}, {0xFF}
+ }, { // SMALL
+ {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIFFERENT
+ {0x11}, {0x30}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TIRED
+ {0x14}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKILL
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOP
+ {0x17}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NON-STOP
+ {0x17}, {0x16}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PREPOSTEROUS
+ {0x2A}, {0x16}, {0x32}, {0x2C}, {0x33}, {0xFF}
+ }, { // NONE
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOTHING
+ {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATURAL
+ {0x02}, {0x32}, {0x26}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BECOMES
+ {0x0E}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUKEWARM
+ {0x29}, {0x1C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAST
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOW
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWFUL
+ {0x08}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALONE
+ {0x2C}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BORED
+ {0x1A}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SECRET
+ {0x0E}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MYSTERY
+ {0x11}, {0x30}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LACKS
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEST
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOUSY
+ {0x21}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISTAKE
+ {0x11}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KIND
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WELL
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEAKENED
+ {0x0E}, {0x0B}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIMPLE
+ {0x0F}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEMS
+ {0x0D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BADLY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_ACTIONS[][6] = {
+ { // MEETS
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONCEDE
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIVE
+ {0x10}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIVES
+ {0x10}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLAYED
+ {0x04}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLAYS
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLLECT
+ {0x2C}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WALKING
+ {0x06}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WALKS
+ {0x08}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAYS
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WENT
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAID
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAKE UP
+ {0x05}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WAKES UP
+ {0x05}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANGERS
+ {0x03}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEACH
+ {0x0D}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEACHES
+ {0x0C}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLEASE
+ {0x0D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEARN
+ {0x30}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHANGE
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STORY
+ {0x1A}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRUST
+ {0x0B}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAVISH
+ {0x01}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LISTENS
+ {0x11}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEARING
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRAINS
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHOOSE
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COME
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAME
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEARCH
+ {0x32}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAKE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAUSE
+ {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOW
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOWS
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REFUSE
+ {0x0C}, {0x2F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STORES
+ {0x1A}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BRAG
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IGNORANT
+ {0x11}, {0x1A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THINKS
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELIEVE
+ {0x0C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLIDE
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EATS
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // USE
+ {0x2F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // USES
+ {0x2F}, {0x0A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // USING
+ {0x2F}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COULDN’T
+ {0x26}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAPABLE
+ {0x05}, {0x2C}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISAPPEAR
+ {0x11}, {0x2C}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // APPEAR
+ {0x2C}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THROW
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORRY
+ {0x32}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLEPT
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLEEP
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RELEASE
+ {0x0C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRINKS
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUNS
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RUN
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORKS
+ {0x32}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORKING
+ {0x32}, {0x0D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TALKING
+ {0x1B}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TALK
+ {0x1B}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SINK
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMACK
+ {0x01}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PRETEND
+ {0x0E}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PRAISE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVERDO
+ {0x18}, {0x30}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOW
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOOKS
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEES
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEK
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OWN
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAKE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALLOW
+ {0x2C}, {0x23}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORGET
+ {0x1A}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORGETS
+ {0x1A}, {0x0A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // APPEARS
+ {0x2C}, {0x0D}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // FAINT
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAINTED
+ {0x03}, {0x0A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_LIFESTYLE[][6] = {
+ { // CHORES
+ {0x31}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOME
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MONEY
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALLOWANCE
+ {0x2A}, {0x23}, {0x02}, {0x33}, {0xFF}, {0xFF}
+ }, { // BATH
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONVERSATION
+ {0x2A}, {0x32}, {0x03}, {0x2C}, {0x33}, {0xFF}
+ }, { // SCHOOL
+ {0x29}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMMEMORATE
+ {0x2C}, {0x0B}, {0x32}, {0x05}, {0xFF}, {0xFF}
+ }, { // HABIT
+ {0x00}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROUP
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORD
+ {0x30}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STORE
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SERVICE
+ {0x32}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORK
+ {0x32}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SYSTEM
+ {0x11}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRAIN
+ {0x30}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLASS
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LESSONS
+ {0x09}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INFORMATION
+ {0x0F}, {0x30}, {0x05}, {0x2C}, {0x33}, {0xFF}
+ }, { // LIVING
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEACHER
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOURNAMENT
+ {0x32}, {0x2A}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LETTER
+ {0x0B}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVENT
+ {0x0C}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIGITAL
+ {0x11}, {0x11}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEST
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEPT. STORE
+ {0x0C}, {0x1B}, {0x0B}, {0x1A}, {0xFF}, {0xFF}
+ }, { // TELEVISION
+ {0x09}, {0x2C}, {0x11}, {0x1B}, {0x33}, {0xFF}
+ }, { // PHONE
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ITEM
+ {0x12}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NAME
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEWS
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POPULAR
+ {0x1D}, {0x27}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARTY
+ {0x1C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STUDY
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHINE
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAIL
+ {0x03}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MESSAGE
+ {0x0B}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PROMISE
+ {0x1D}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DREAM
+ {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KINDERGARTEN
+ {0x0F}, {0x32}, {0x17}, {0x0F}, {0x33}, {0xFF}
+ }, { // LIFE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RADIO
+ {0x03}, {0x0C}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RENTAL
+ {0x0B}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WORLD
+ {0x32}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_HOBBIES[][6] = {
+ { // IDOL
+ {0x14}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANIME
+ {0x00}, {0x2C}, {0x05}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SONG
+ {0x17}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOVIE
+ {0x27}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWEETS
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHAT
+ {0x01}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHILD’S PLAY
+ {0x14}, {0x26}, {0x04}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOYS
+ {0x1E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUSIC
+ {0x2F}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CARDS
+ {0x17}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOPPING
+ {0x15}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAMERA
+ {0x00}, {0x32}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VIEWING
+ {0x2F}, {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // SPECTATOR
+ {0x0B}, {0x05}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOURMET
+ {0x26}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GAME
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RPG
+ {0x1B}, {0x0C}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COLLECTION
+ {0x2C}, {0x0B}, {0x1B}, {0x33}, {0x33}, {0xFF}
+ }, { // COMPLETE
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGAZINE
+ {0x02}, {0x2C}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // WALK
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BIKE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOBBY
+ {0x15}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPORTS
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOFTWARE
+ {0x17}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SONGS
+ {0x17}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIET
+ {0x14}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TREASURE
+ {0x0A}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRAVEL
+ {0x00}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DANCE
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHANNEL
+ {0x00}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAKING
+ {0x05}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FISHING
+ {0x11}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DATE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DESIGN
+ {0x0E}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOCOMOTIVE
+ {0x1A}, {0x2C}, {0x1A}, {0x11}, {0xFF}, {0xFF}
+ }, { // PLUSH DOLL
+ {0x2C}, {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // PC
+ {0x0E}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLOWERS
+ {0x21}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERO
+ {0x0C}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NAP
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEROINE
+ {0x0C}, {0x1A}, {0x0F}, {0x33}, {0xFF}, {0xFF}
+ }, { // FASHION
+ {0x01}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ADVENTURE
+ {0x00}, {0x0B}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BOARD
+ {0x1A}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BALL
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BOOK
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FESTIVAL
+ {0x0B}, {0x0E}, {0x08}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COMICS
+ {0x1B}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOLIDAY
+ {0x1D}, {0x11}, {0x05}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PLANS
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRENDY
+ {0x09}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VACATION
+ {0x03}, {0x05}, {0x1D}, {0x33}, {0xFF}, {0xFF}
+ }, { // LOOK
+ {0x26}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_TIME[][6] = {
+ { // FALL
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MORNING
+ {0x1A}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOMORROW
+ {0x27}, {0x1C}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAST
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAY
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOMETIME
+ {0x2C}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALWAYS
+ {0x1B}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CURRENT
+ {0x09}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOREVER
+ {0x18}, {0x09}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAYS
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // END
+ {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TUESDAY
+ {0x27}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YESTERDAY
+ {0x0B}, {0x32}, {0x05}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TODAY
+ {0x27}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRIDAY
+ {0x12}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MONDAY
+ {0x2C}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LATER
+ {0x05}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EARLIER
+ {0x30}, {0x0C}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANOTHER
+ {0x2A}, {0x2C}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TIME
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FINISH
+ {0x0F}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEDNESDAY
+ {0x0A}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOON
+ {0x28}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // START
+ {0x17}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MONTH
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STOP
+ {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NOW
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FINAL
+ {0x12}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEXT
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AGE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SATURDAY
+ {0x00}, {0x30}, {0x05}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUMMER
+ {0x2C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUNDAY
+ {0x2C}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEGINNING
+ {0x0E}, {0x0F}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // SPRING
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAYTIME
+ {0x05}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WINTER
+ {0x0F}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DAILY
+ {0x05}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OLDEN
+ {0x1A}, {0x0A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALMOST
+ {0x1B}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEARLY
+ {0x0E}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THURSDAY
+ {0x30}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIGHTTIME
+ {0x14}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIGHT
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEK
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_MISC[][6] = {
+ { // HIGHS
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOWS
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UM
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REAR
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THINGS
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THING
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELOW
+ {0x0C}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABOVE
+ {0x2A}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BACK
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIGH
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERE
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INSIDE
+ {0x0F}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUTSIDE
+ {0x21}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BESIDE
+ {0x0E}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIS IS IT!
+ {0x11}, {0x11}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIS
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVERY
+ {0x09}, {0x30}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THESE
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THESE WERE
+ {0x0E}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOWN
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT
+ {0x02}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THOSE ARE
+ {0x18}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THOSE WERE
+ {0x18}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT’S IT!
+ {0x01}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AM
+ {0x00}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THAT WAS
+ {0x00}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRONT
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UP
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHOICE
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAR
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWAY
+ {0x2C}, {0x04}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEAR
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHERE
+ {0x09}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHEN
+ {0x10}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHAT
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEEP
+ {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHALLOW
+ {0x01}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHY
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONFUSED
+ {0x2A}, {0x2E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OPPOSITE
+ {0x1D}, {0x1A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEFT
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIGHT
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_ADJECTIVES[][6] = {
+ { // WANDERING
+ {0x1D}, {0x32}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RICKETY
+ {0x11}, {0x09}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK-SOLID
+ {0x1B}, {0x1B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HUNGRY
+ {0x2A}, {0x30}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TIGHT
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TICKLISH
+ {0x11}, {0x24}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TWIRLING
+ {0x30}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIRALING
+ {0x12}, {0x08}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // THIRSTY
+ {0x30}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOLLING
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SILKY
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SADLY
+ {0x00}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOPELESS
+ {0x18}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // USELESS
+ {0x2D}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DROOLING
+ {0x27}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXCITING
+ {0x09}, {0x12}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THICK
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMOOTH
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLIMY
+ {0x12}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIN
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BREAK
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VORACIOUS
+ {0x32}, {0x05}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // SCATTER
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AWESOME
+ {0x1B}, {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // WIMPY
+ {0x11}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOBBLY
+ {0x1D}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHAKY
+ {0x03}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIPPED
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHREDDED
+ {0x09}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INCREASING
+ {0x0F}, {0x0C}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YET
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DESTROYED
+ {0x0C}, {0x1E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIERY
+ {0x14}, {0x32}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOVEY-DOVEY
+ {0x2C}, {0x0E}, {0x2C}, {0x0E}, {0xFF}, {0xFF}
+ }, { // HAPPILY
+ {0x00}, {0x2C}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANTICIPATION
+ {0x00}, {0x11}, {0x11}, {0x03}, {0x1D}, {0x33}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_EVENTS[][6] = {
+ { // APPEAL
+ {0x2C}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EVENTS
+ {0x0C}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STAY-AT-HOME
+ {0x03}, {0x00}, {0x18}, {0x33}, {0x33}, {0xFF}
+ }, { // BERRY
+ {0x09}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONTEST
+ {0x1D}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MC
+ {0x09}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUDGE
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUPER
+ {0x27}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STAGE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HALL OF FAME
+ {0x15}, {0x2C}, {0x04}, {0x33}, {0xFF}, {0xFF}
+ }, { // EVOLUTION
+ {0x1A}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER
+ {0x12}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE TOWER
+ {0x02}, {0x2C}, {0x21}, {0x30}, {0xFF}, {0xFF}
+ }, { // LEADERS
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATTLE ROOM
+ {0x00}, {0x2C}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HIDDEN
+ {0x11}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SECRET BASE
+ {0x0C}, {0x09}, {0x04}, {0x33}, {0xFF}, {0xFF}
+ }, { // BLEND
+ {0x0A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POKEBLOCK
+ {0x18}, {0x0C}, {0x1D}, {0x33}, {0xFF}, {0xFF}
+ }, { // MASTER
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RANK
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RIBBON
+ {0x11}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_MOVE_1[][6] = {
+ { // THUNDERBOLT
+ {0x2A}, {0x30}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IRON_TAIL
+ {0x12}, {0x1B}, {0x05}, {0x33}, {0xFF}, {0xFF}
+ }, { // ICE_BALL
+ {0x12}, {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // YAWN
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOVELY_KISS
+ {0x2C}, {0x2C}, {0x0C}, {0x11}, {0x33}, {0xFF}
+ }, { // NIGHTMARE
+ {0x12}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MORNING_SUN
+ {0x1A}, {0x0E}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // VITAL_THROW
+ {0x12}, {0x24}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // DIG
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THRASH
+ {0x30}, {0x02}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWEET_SCENT
+ {0x0E}, {0x0B}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // CHARM
+ {0x15}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAIN_DANCE
+ {0x03}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONFUSE_RAY
+ {0x1B}, {0x2D}, {0x03}, {0x33}, {0xFF}, {0xFF}
+ }, { // HAIL
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AROMATHERAPY
+ {0x2A}, {0x18}, {0x2C}, {0x00}, {0x1B}, {0x0E}
+ }, { // BUBBLE
+ {0x2C}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENCORE
+ {0x1B}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUT
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAGE
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUPER_FANG
+ {0x27}, {0x30}, {0x01}, {0x33}, {0xFF}, {0xFF}
+ }, { // PAIN_SPLIT
+ {0x03}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TORMENT
+ {0x18}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STRING_SHOT
+ {0x32}, {0x0C}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWAGGER
+ {0x02}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNORE
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEAL_BELL
+ {0x0E}, {0x0A}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // SCREECH
+ {0x30}, {0x0D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_THROW
+ {0x1B}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_SMASH
+ {0x1B}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_SLIDE
+ {0x1B}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEATHER_BALL
+ {0x09}, {0x30}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // WHIRLPOOL
+ {0x30}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAKE_TEARS
+ {0x03}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SING
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPITE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIR_CUTTER
+ {0x05}, {0x2A}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // AEROBLAST
+ {0x05}, {0x18}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // SMOKESCREEN
+ {0x1A}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PURSUIT
+ {0x30}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOUBLE_SLAP
+ {0x2A}, {0x0A}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIRROR_MOVE
+ {0x0C}, {0x32}, {0x29}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OVERHEAT
+ {0x18}, {0x30}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AURORA_BEAM
+ {0x1B}, {0x1A}, {0x2C}, {0x0C}, {0x33}, {0xFF}
+ }, { // MEMENTO
+ {0x2A}, {0x09}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OCTAZOOKA
+ {0x1B}, {0x2C}, {0x28}, {0x2C}, {0xFF}, {0xFF}
+ }, { // FLATTER
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ASTONISH
+ {0x2A}, {0x1B}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WILL_O_WISP
+ {0x11}, {0x18}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RETURN
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRUDGE
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STRENGTH
+ {0x32}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COUNTER
+ {0x21}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAME_WHEEL
+ {0x03}, {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // FLAMETHROWER
+ {0x00}, {0x1A}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ODOR_SLEUTH
+ {0x18}, {0x30}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // SHARPEN
+ {0x1B}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOUBLE_TEAM
+ {0x2C}, {0x2C}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GUST
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HARDEN
+ {0x1B}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DISABLE
+ {0x11}, {0x03}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAZOR_WIND
+ {0x05}, {0x30}, {0x0F}, {0x33}, {0xFF}, {0xFF}
+ }, { // BIDE
+ {0x0B}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRUNCH
+ {0x30}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BITE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THUNDER
+ {0x2A}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THUNDER_PUNCH
+ {0x2A}, {0x30}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ENDEAVOR
+ {0x09}, {0x09}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FACADE
+ {0x2C}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KARATE_CHOP
+ {0x2C}, {0x1D}, {0x0E}, {0x1D}, {0xFF}, {0xFF}
+ }, { // CLAMP
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WITHDRAW
+ {0x11}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONSTRICT
+ {0x1B}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BRICK_BREAK
+ {0x11}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_TOMB
+ {0x1B}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOCUS_ENERGY
+ {0x1A}, {0x2C}, {0x0B}, {0x30}, {0x0C}, {0xFF}
+ }, { // FOCUS_PUNCH
+ {0x18}, {0x2C}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIGA_DRAIN
+ {0x11}, {0x2A}, {0x03}, {0x33}, {0xFF}, {0xFF}
+ }, { // REVERSAL
+ {0x0C}, {0x30}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMELLING_SALT
+ {0x09}, {0x0C}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPORE
+ {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEECH_LIFE
+ {0x0C}, {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // SLASH
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SILVER_WIND
+ {0x11}, {0x30}, {0x0F}, {0xFF}, {0xFF}, {0xFF}
+ }, { // METAL_SOUND
+ {0x09}, {0x1B}, {0x21}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRASS_WHISTLE
+ {0x00}, {0x11}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TICKLE
+ {0x11}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIDER_WEB
+ {0x12}, {0x30}, {0x09}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRABHAMMER
+ {0x02}, {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // HAZE
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEAN_LOOK
+ {0x0C}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CROSS_CHOP
+ {0x1B}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OUTRAGE
+ {0x21}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOW_KICK
+ {0x18}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ANCIENT_POWER
+ {0x03}, {0x0C}, {0x21}, {0x32}, {0x33}, {0xFF}
+ }, { // SYNTHESIS
+ {0x0F}, {0x2A}, {0x0F}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AGILITY
+ {0x2A}, {0x11}, {0x11}, {0x0E}, {0xFF}, {0xFF}
+ }, { // RAPID_SPIN
+ {0x00}, {0x0F}, {0x0F}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ICY_WIND
+ {0x12}, {0x0C}, {0x0F}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIND_READER
+ {0x12}, {0x0C}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COSMIC_POWER
+ {0x1B}, {0x11}, {0x21}, {0x30}, {0xFF}, {0xFF}
+ }, { // SKY_ATTACK
+ {0x12}, {0x2A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POWDER_SNOW
+ {0x21}, {0x30}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FOLLOW_ME
+ {0x15}, {0x18}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // METEOR_MASH
+ {0x0C}, {0x0C}, {0x18}, {0x00}, {0x33}, {0x33}
+ }, { // ENDURE
+ {0x09}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROLLOUT
+ {0x1A}, {0x21}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCARY_FACE
+ {0x03}, {0x0C}, {0x03}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYBEAM
+ {0x12}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYWAVE
+ {0x12}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYCHIC
+ {0x12}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPNOSIS
+ {0x11}, {0x18}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UPROAR
+ {0x2C}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER_SPOUT
+ {0x1B}, {0x30}, {0x21}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SIGNAL_BEAM
+ {0x11}, {0x1B}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // PSYCH_UP
+ {0x12}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUBMISSION
+ {0x2A}, {0x11}, {0x0B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RECOVER
+ {0x0C}, {0x2C}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EARTHQUAKE
+ {0x30}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATURE_POWER
+ {0x03}, {0x30}, {0x21}, {0x30}, {0xFF}, {0xFF}
+ }, { // LICK
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAIL
+ {0x05}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAIL_WHIP
+ {0x05}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SELF_DESTRUCT
+ {0x09}, {0x0C}, {0x2A}, {0x33}, {0xFF}, {0xFF}
+ }, { // STUN_SPORE
+ {0x2C}, {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // BIND
+ {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHADOW_PUNCH
+ {0x00}, {0x18}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHADOW_BALL
+ {0x00}, {0x18}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARGE
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIST
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FISSURE
+ {0x11}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXTREME_SPEED
+ {0x09}, {0x0C}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // EXTRASENSORY
+ {0x09}, {0x2A}, {0x09}, {0x18}, {0x0C}, {0xFF}
+ }, { // SAFEGUARD
+ {0x03}, {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // ABSORB
+ {0x2A}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKY_UPPERCUT
+ {0x12}, {0x2C}, {0x30}, {0x2A}, {0xFF}, {0xFF}
+ }, { // SKILL_SWAP
+ {0x11}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKETCH
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEADBUTT
+ {0x09}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOUBLE_EDGE
+ {0x2C}, {0x24}, {0x0A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSTORM
+ {0x00}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAND_ATTACK
+ {0x00}, {0x2A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SAND_TOMB
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPARK
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWIFT
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KINESIS
+ {0x0F}, {0x0C}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMOG
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROWTH
+ {0x30}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SACRED_FIRE
+ {0x03}, {0x11}, {0x12}, {0x30}, {0x33}, {0xFF}
+ }, { // SHEER_COLD
+ {0x0E}, {0x30}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOLAR_BEAM
+ {0x18}, {0x30}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // SONIC_BOOM
+ {0x1B}, {0x11}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // FLY
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_MOVE_2[][6] = {
+ { // TACKLE
+ {0x00}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXPLOSION
+ {0x09}, {0x18}, {0x2C}, {0x33}, {0x33}, {0xFF}
+ }, { // DIVE
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FIRE_BLAST
+ {0x12}, {0x30}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // WATERFALL
+ {0x1D}, {0x30}, {0x1D}, {0x33}, {0xFF}, {0xFF}
+ }, { // MUDDY_WATER
+ {0x2A}, {0x0C}, {0x1B}, {0x30}, {0xFF}, {0xFF}
+ }, { // STOCKPILE
+ {0x1B}, {0x14}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLAM
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TWISTER
+ {0x11}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BULLET_SEED
+ {0x2A}, {0x09}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // TWINEEDLE
+ {0x0F}, {0x0C}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SOFT_BOILED
+ {0x1B}, {0x1E}, {0x0B}, {0x33}, {0xFF}, {0xFF}
+ }, { // EGG_BOMB
+ {0x09}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAINT_ATTACK
+ {0x03}, {0x2A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BARRAGE
+ {0x30}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MINIMIZE
+ {0x0F}, {0x0F}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // SEISMIC_TOSS
+ {0x12}, {0x11}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // SUPERSONIC
+ {0x27}, {0x30}, {0x1B}, {0x11}, {0xFF}, {0xFF}
+ }, { // TAUNT
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOONLIGHT
+ {0x27}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PECK
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARM_THRUST
+ {0x1B}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HORN_ATTACK
+ {0x18}, {0x2A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HORN_DRILL
+ {0x18}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WING_ATTACK
+ {0x0C}, {0x2A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AERIAL_ACE
+ {0x03}, {0x0C}, {0x2A}, {0x03}, {0xFF}, {0xFF}
+ }, { // SWORDS_DANCE
+ {0x1A}, {0x30}, {0x01}, {0x33}, {0xFF}, {0xFF}
+ }, { // VINE_WHIP
+ {0x12}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONVERSION
+ {0x2A}, {0x30}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // CONVERSION_2
+ {0x2A}, {0x30}, {0x2C}, {0x27}, {0x33}, {0xFF}
+ }, { // HELPING_HAND
+ {0x09}, {0x0C}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // IRON_DEFENSE
+ {0x12}, {0x1B}, {0x0C}, {0x09}, {0xFF}, {0xFF}
+ }, { // TELEPORT
+ {0x09}, {0x0C}, {0x1A}, {0x33}, {0xFF}, {0xFF}
+ }, { // THUNDER_SHOCK
+ {0x2A}, {0x30}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHOCK_WAVE
+ {0x1B}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUICK_ATTACK
+ {0x27}, {0x11}, {0x2A}, {0x00}, {0xFF}, {0xFF}
+ }, { // SWEET_KISS
+ {0x0E}, {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // THUNDER_WAVE
+ {0x2A}, {0x30}, {0x05}, {0x33}, {0xFF}, {0xFF}
+ }, { // ZAP_CANNON
+ {0x00}, {0x01}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // BLOCK
+ {0x1B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOWL
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_GAS
+ {0x1E}, {0x1B}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // TOXIC
+ {0x1B}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_FANG
+ {0x1E}, {0x2A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POISON_POWDER
+ {0x1E}, {0x2C}, {0x21}, {0x30}, {0xFF}, {0xFF}
+ }, { // POISON_STING
+ {0x1E}, {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // SPIKE_CANNON
+ {0x14}, {0x00}, {0x1D}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ACID_ARMOR
+ {0x00}, {0x11}, {0x1B}, {0x30}, {0xFF}, {0xFF}
+ }, { // TAKE_DOWN
+ {0x03}, {0x23}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUMP_KICK
+ {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BOUNCE
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HI_JUMP_KICK
+ {0x12}, {0x2C}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // TRI_ATTACK
+ {0x12}, {0x2A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGON_CLAW
+ {0x00}, {0x1B}, {0x1D}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRICK
+ {0x11}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRIPLE_KICK
+ {0x11}, {0x24}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRILL_PECK
+ {0x11}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUD_SPORT
+ {0x2A}, {0x18}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUD_SLAP
+ {0x2C}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // THIEF
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AMNESIA
+ {0x02}, {0x0E}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // NIGHT_SHADE
+ {0x12}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GROWL
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLACK_OFF
+ {0x00}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SURF
+ {0x30}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROLE_PLAY
+ {0x18}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEEDLE_ARM
+ {0x0C}, {0x2A}, {0x1D}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DOUBLE_KICK
+ {0x2A}, {0x2C}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUNNY_DAY
+ {0x2A}, {0x0E}, {0x05}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEER
+ {0x0E}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WISH
+ {0x0F}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FAKE_OUT
+ {0x03}, {0x21}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLEEP_TALK
+ {0x0E}, {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // PAY_DAY
+ {0x05}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ASSIST
+ {0x2A}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEAT_WAVE
+ {0x0C}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLEEP_POWDER
+ {0x0C}, {0x21}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REST
+ {0x09}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // INGRAIN
+ {0x0F}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CONFUSION
+ {0x2C}, {0x29}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // BODY_SLAM
+ {0x1D}, {0x0C}, {0x02}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWALLOW
+ {0x1B}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CURSE
+ {0x30}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYDRO_PUMP
+ {0x12}, {0x18}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER_VOICE
+ {0x12}, {0x30}, {0x1E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER_BEAM
+ {0x12}, {0x30}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // SUPERPOWER
+ {0x27}, {0x30}, {0x21}, {0x30}, {0xFF}, {0xFF}
+ }, { // STEEL_WING
+ {0x0E}, {0x0D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIT_UP
+ {0x11}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DYNAMIC_PUNCH
+ {0x12}, {0x00}, {0x11}, {0x2C}, {0xFF}, {0xFF}
+ }, { // GUILLOTINE
+ {0x0C}, {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // VICE_GRIP
+ {0x14}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOCK_OFF
+ {0x1B}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POUND
+ {0x21}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAZOR_LEAF
+ {0x05}, {0x30}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BATON_PASS
+ {0x2A}, {0x1B}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // PETAL_DANCE
+ {0x09}, {0x2C}, {0x02}, {0x33}, {0xFF}, {0xFF}
+ }, { // SPLASH
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BUBBLE_BEAM
+ {0x2A}, {0x24}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // BELLY_DRUM
+ {0x09}, {0x0C}, {0x2A}, {0x33}, {0xFF}, {0xFF}
+ }, { // BARRIER
+ {0x05}, {0x0E}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LIGHT_SCREEN
+ {0x12}, {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // SCRATCH
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPER_FANG
+ {0x12}, {0x30}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EMBER
+ {0x09}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SECRET_POWER
+ {0x0C}, {0x09}, {0x21}, {0x30}, {0xFF}, {0xFF}
+ }, { // DIZZY_PUNCH
+ {0x11}, {0x0E}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BULK_UP
+ {0x2C}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IMPRISON
+ {0x0F}, {0x0F}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // FEATHER_DANCE
+ {0x09}, {0x30}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WHIRLWIND
+ {0x2C}, {0x1D}, {0x0E}, {0x1D}, {0xFF}, {0xFF}
+ }, { // BEAT_UP
+ {0x0C}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLIZZARD
+ {0x0F}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STOMP
+ {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLASH
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEETER_DANCE
+ {0x0C}, {0x30}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CRUSH_CLAW
+ {0x2C}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLAZE_KICK
+ {0x05}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PRESENT
+ {0x09}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ERUPTION
+ {0x0C}, {0x2C}, {0x1D}, {0x33}, {0xFF}, {0xFF}
+ }, { // SLUDGE
+ {0x2C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLUDGE_BOMB
+ {0x2B}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLARE
+ {0x05}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TRANSFORM
+ {0x00}, {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // POISON_TAIL
+ {0x1E}, {0x2C}, {0x05}, {0x33}, {0xFF}, {0xFF}
+ }, { // ROAR
+ {0x1A}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BONE_RUSH
+ {0x18}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CAMOUFLAGE
+ {0x00}, {0x18}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // COVET
+ {0x2A}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAIL_GLOW
+ {0x04}, {0x1A}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // BONE_CLUB
+ {0x18}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BONEMERANG
+ {0x18}, {0x30}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // FIRE_SPIN
+ {0x12}, {0x30}, {0x0F}, {0x33}, {0xFF}, {0xFF}
+ }, { // FIRE_PUNCH
+ {0x12}, {0x30}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PERISH_SONG
+ {0x09}, {0x11}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // WRAP
+ {0x00}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPIKES
+ {0x12}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNITUDE
+ {0x00}, {0x0F}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGICAL_LEAF
+ {0x00}, {0x11}, {0x24}, {0x0C}, {0x33}, {0xFF}
+ }, { // MAGIC_COAT
+ {0x00}, {0x11}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUD_SHOT
+ {0x2C}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACH_PUNCH
+ {0x1B}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PROTECT
+ {0x18}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DEFENSE_CURL
+ {0x0E}, {0x0B}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROLLING_KICK
+ {0x18}, {0x0C}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUBSTITUTE
+ {0x2A}, {0x11}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DETECT
+ {0x0C}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIN_MISSILE
+ {0x0F}, {0x11}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER_SPORT
+ {0x1B}, {0x30}, {0x1A}, {0x33}, {0xFF}, {0xFF}
+ }, { // WATER_GUN
+ {0x1D}, {0x32}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIST_BALL
+ {0x11}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WATER_PULSE
+ {0x1B}, {0x30}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // FURY_ATTACK
+ {0x30}, {0x0C}, {0x2A}, {0x02}, {0xFF}, {0xFF}
+ }, { // FURY_SWIPES
+ {0x30}, {0x0C}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // DESTINY_BOND
+ {0x09}, {0x0F}, {0x0C}, {0x1B}, {0xFF}, {0xFF}
+ }, { // FALSE_SWIPE
+ {0x1B}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORESIGHT
+ {0x1A}, {0x14}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // MIRROR_COAT
+ {0x09}, {0x30}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FUTURE_SIGHT
+ {0x27}, {0x30}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // MILK_DRINK
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CALM_MIND
+ {0x1B}, {0x12}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGA_DRAIN
+ {0x03}, {0x2C}, {0x03}, {0x33}, {0xFF}, {0xFF}
+ }, { // MEGA_KICK
+ {0x03}, {0x2A}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGA_PUNCH
+ {0x03}, {0x2A}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGAHORN
+ {0x03}, {0x2A}, {0x1A}, {0x33}, {0xFF}, {0xFF}
+ }, { // HIDDEN_POWER
+ {0x0F}, {0x09}, {0x21}, {0x30}, {0xFF}, {0xFF}
+ }, { // METAL_CLAW
+ {0x09}, {0x24}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // ATTRACT
+ {0x2A}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MIMIC
+ {0x11}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FRUSTRATION
+ {0x2C}, {0x03}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // LEECH_SEED
+ {0x0C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // METRONOME
+ {0x09}, {0x18}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DREAM_EATER
+ {0x0E}, {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // ACID
+ {0x00}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEDITATE
+ {0x09}, {0x11}, {0x03}, {0x33}, {0xFF}, {0xFF}
+ }, { // SNATCH
+ {0x00}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUSTER_PURGE
+ {0x2A}, {0x30}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEAF_BLADE
+ {0x0C}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RECYCLE
+ {0x0C}, {0x12}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REFLECT
+ {0x0C}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REFRESH
+ {0x0C}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REVENGE
+ {0x0C}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGON_RAGE
+ {0x00}, {0x1B}, {0x05}, {0x33}, {0x33}, {0xFF}
+ }, { // DRAGON_BREATH
+ {0x00}, {0x1B}, {0x0B}, {0x33}, {0x33}, {0xFF}
+ }, { // DRAGON_DANCE
+ {0x00}, {0x1B}, {0x00}, {0x33}, {0xFF}, {0xFF}
+ }, { // ICE_PUNCH
+ {0x2C}, {0x1D}, {0x0E}, {0x1D}, {0xFF}, {0xFF}
+ }, { // ICE_BEAM
+ {0x12}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FURY_CUTTER
+ {0x30}, {0x0C}, {0x2A}, {0x30}, {0xFF}, {0xFF}
+ }, { // COMET_PUNCH
+ {0x1D}, {0x0B}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // SKULL_BASH
+ {0x2A}, {0x33}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOCK_ON
+ {0x1B}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ROCK_BLAST
+ {0x1B}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COTTON_SPORE
+ {0x1D}, {0x1D}, {0x1A}, {0x33}, {0xFF}, {0xFF}
+ }, { // STRUGGLE
+ {0x2A}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_TRENDY_SAYING[][6] = {
+ { // KTHX, BYE.
+ {0x05}, {0x02}, {0x14}, {0x33}, {0xFF}, {0xFF}
+ }, { // YES, SIR!
+ {0x0B}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AVANT GARDE
+ {0x1B}, {0x1B}, {0x17}, {0xFF}, {0xFF}, {0xFF}
+ }, { // COUPLE
+ {0x2C}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUCH OBLIGED
+ {0x2C}, {0x2C}, {0x12}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YEEHAW!
+ {0x0D}, {0x1D}, {0x33}, {0x33}, {0xFF}, {0xFF}
+ }, { // MEGA
+ {0x05}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // 1-HIT KO!
+ {0x2C}, {0x11}, {0x03}, {0x1A}, {0xFF}, {0xFF}
+ }, { // DESTINY
+ {0x0B}, {0x11}, {0x0E}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CANCEL
+ {0x00}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NEW
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLATTEN
+ {0x00}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KIDDING
+ {0x11}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSER
+ {0x27}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LOSING
+ {0x27}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAPPENING
+ {0x00}, {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}
+ }, { // HIP AND
+ {0x11}, {0x01}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHAKE
+ {0x05}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHADY
+ {0x05}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UPBEAT
+ {0x2C}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MODERN
+ {0x1D}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMELL YA
+ {0x0A}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BANG
+ {0x03}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KNOCKOUT
+ {0x1D}, {0x23}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HASSLE
+ {0x2A}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WINNER
+ {0x0F}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEVER
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WANNABE
+ {0x1D}, {0x2C}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BABY
+ {0x05}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HEART
+ {0x1C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OLD
+ {0x18}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YOUNG
+ {0x2B}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UGLY
+ {0x2A}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+/*static*/ const struct BardSound BardMusic_POKEMON_2[][6] = {
+ { // EKANS
+ {0x09}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARBOK
+ {0x06}, {0x17}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEAKING
+ {0x0C}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARIADOS
+ {0x1B}, {0x0C}, {0x2A}, {0x18}, {0xFF}, {0xFF}
+ }, { // CROCONAW
+ {0x1B}, {0x18}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // UNOWN
+ {0x2A}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EEVEE
+ {0x0C}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GEODUDE
+ {0x0C}, {0x18}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPINARAK
+ {0x0F}, {0x30}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PILOSWINE
+ {0x11}, {0x1A}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // ONIX
+ {0x15}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ARCANINE
+ {0x06}, {0x03}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // SUDOWOODO
+ {0x27}, {0x18}, {0x27}, {0x18}, {0xFF}, {0xFF}
+ }, { // WEEPINBELL
+ {0x0C}, {0x0F}, {0x0B}, {0x33}, {0xFF}, {0xFF}
+ }, { // VICTREEBEL
+ {0x11}, {0x0C}, {0x09}, {0x33}, {0xFF}, {0xFF}
+ }, { // WOOPER
+ {0x27}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SWINUB
+ {0x11}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKARMORY
+ {0x1B}, {0x1A}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AIPOM
+ {0x03}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ESPEON
+ {0x09}, {0x0C}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // HITMONCHAN
+ {0x11}, {0x15}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ELEKID
+ {0x0B}, {0x0B}, {0x11}, {0x33}, {0xFF}, {0xFF}
+ }, { // ELECTABUZZ
+ {0x0C}, {0x09}, {0x2C}, {0x2C}, {0xFF}, {0xFF}
+ }, { // ENTEI
+ {0x09}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FERALIGATR
+ {0x30}, {0x00}, {0x0F}, {0x03}, {0x30}, {0xFF}
+ }, { // FURRET
+ {0x30}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OCTILLERY
+ {0x1B}, {0x11}, {0x30}, {0x0C}, {0xFF}, {0xFF}
+ }, { // PRIMEAPE
+ {0x12}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SENTRET
+ {0x09}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STANTLER
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SPEAROW
+ {0x0C}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FEAROW
+ {0x0C}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // OMASTAR
+ {0x18}, {0x00}, {0x15}, {0x33}, {0xFF}, {0xFF}
+ }, { // OMANYTE
+ {0x18}, {0x00}, {0x12}, {0x33}, {0xFF}, {0xFF}
+ }, { // GROWLITHE
+ {0x21}, {0x0F}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHAMP
+ {0x2A}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRAGONITE
+ {0x00}, {0x15}, {0x12}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PINSIR
+ {0x11}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNORLAX
+ {0x18}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KABUTO
+ {0x2A}, {0x27}, {0x1A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KABUTOPS
+ {0x2A}, {0x27}, {0x15}, {0x33}, {0xFF}, {0xFF}
+ }, { // HITMONTOP
+ {0x11}, {0x15}, {0x1D}, {0x33}, {0xFF}, {0xFF}
+ }, { // WARTORTLE
+ {0x08}, {0x30}, {0x24}, {0x33}, {0xFF}, {0xFF}
+ }, { // BLASTOISE
+ {0x00}, {0x1E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FARFETCHD
+ {0x06}, {0x0B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CUBONE
+ {0x2D}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAROWAK
+ {0x00}, {0x1A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KANGASKHAN
+ {0x00}, {0x00}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // SUNFLORA
+ {0x2C}, {0x18}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CATERPIE
+ {0x00}, {0x30}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GYARADOS
+ {0x1D}, {0x09}, {0x11}, {0x1D}, {0xFF}, {0xFF}
+ }, { // RAPIDASH
+ {0x00}, {0x11}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NINETALES
+ {0x12}, {0x05}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GIRAFARIG
+ {0x30}, {0x00}, {0x2A}, {0x11}, {0xFF}, {0xFF}
+ }, { // BELLOSSOM
+ {0x09}, {0x1B}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // KINGDRA
+ {0x0C}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KINGLER
+ {0x0C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLOOM
+ {0x27}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PINECO
+ {0x12}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GLIGAR
+ {0x12}, {0x1B}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KRABBY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRANBULL
+ {0x02}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CROBAT
+ {0x18}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ABRA
+ {0x00}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GENGAR
+ {0x09}, {0x08}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TAUROS
+ {0x1D}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGIKARP
+ {0x00}, {0x11}, {0x1B}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNEMITE
+ {0x00}, {0x09}, {0x12}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GASTLY
+ {0x00}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HAUNTER
+ {0x15}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHOKE
+ {0x2A}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KAKUNA
+ {0x2A}, {0x27}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PSYDUCK
+ {0x12}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PHANPY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RATTATA
+ {0x00}, {0x00}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLDUCK
+ {0x18}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLBAT
+ {0x1A}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLEM
+ {0x18}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRAVELER
+ {0x00}, {0x09}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VENONAT
+ {0x09}, {0x1A}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RHYDON
+ {0x12}, {0x15}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RHYHORN
+ {0x14}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PUPITAR
+ {0x27}, {0x11}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // CORSOLA
+ {0x18}, {0x18}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HITMONLEE
+ {0x11}, {0x15}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZAPDOS
+ {0x00}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JOLTEON
+ {0x1A}, {0x0C}, {0x15}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSHREW
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SANDSLASH
+ {0x00}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEADRA
+ {0x0C}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHELLDER
+ {0x09}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VAPOREON
+ {0x03}, {0x18}, {0x0C}, {0x15}, {0xFF}, {0xFF}
+ }, { // DEWGONG
+ {0x27}, {0x15}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SUICUNE
+ {0x0C}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STARMIE
+ {0x1B}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCYTHER
+ {0x12}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ZUBAT
+ {0x27}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BEEDRILL
+ {0x0C}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HYPNO
+ {0x11}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DROWZEE
+ {0x21}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SQUIRTLE
+ {0x30}, {0x24}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CELEBI
+ {0x09}, {0x09}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WOBBUFFET
+ {0x1D}, {0x2C}, {0x09}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUGTRIO
+ {0x2C}, {0x0C}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HORSEA
+ {0x1A}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXEGGCUTE
+ {0x09}, {0x2C}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // CHIKORITA
+ {0x11}, {0x18}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // CHINCHOU
+ {0x0F}, {0x21}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SHUCKLE
+ {0x2A}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DIGLETT
+ {0x11}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // REMORAID
+ {0x09}, {0x18}, {0x03}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DELIBIRD
+ {0x09}, {0x0C}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOUNDOUR
+ {0x23}, {0x1A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AMPHAROS
+ {0x00}, {0x06}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // DODUO
+ {0x1A}, {0x27}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DODRIO
+ {0x1A}, {0x0C}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SMEARGLE
+ {0x30}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KOFFING
+ {0x15}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACRUEL
+ {0x09}, {0x2A}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // TOGETIC
+ {0x18}, {0x09}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOGEPI
+ {0x18}, {0x09}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GOLDEEN
+ {0x1A}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // METAPOD
+ {0x09}, {0x2A}, {0x15}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DONPHAN
+ {0x1B}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ODDISH
+ {0x15}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // EXEGGUTOR
+ {0x09}, {0x2C}, {0x09}, {0x32}, {0x33}, {0xFF}
+ }, { // NIDOKING
+ {0x12}, {0x18}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDOQUEEN
+ {0x12}, {0x18}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDORAN_F
+ {0x12}, {0x18}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDORAN_M
+ {0x12}, {0x18}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NIDORINA
+ {0x12}, {0x18}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // NIDORINO
+ {0x12}, {0x18}, {0x0C}, {0x18}, {0xFF}, {0xFF}
+ }, { // MEOWTH
+ {0x0C}, {0x21}, {0x11}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SNEASEL
+ {0x0C}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POLIWHIRL
+ {0x15}, {0x0C}, {0x30}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POLITOED
+ {0x1B}, {0x0C}, {0x18}, {0x33}, {0xFF}, {0xFF}
+ }, { // POLIWRATH
+ {0x15}, {0x0C}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // POLIWAG
+ {0x15}, {0x0C}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUAGSIRE
+ {0x00}, {0x12}, {0x32}, {0xFF}, {0xFF}, {0xFF}
+ }, { // NATU
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // XATU
+ {0x00}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DUNSPARCE
+ {0x2A}, {0x1C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SEEL
+ {0x0E}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // STEELIX
+ {0x0C}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYPHLOSION
+ {0x12}, {0x18}, {0x1B}, {0x33}, {0x33}, {0xFF}
+ }, { // DRAGONAIR
+ {0x00}, {0x15}, {0x0B}, {0x33}, {0xFF}, {0xFF}
+ }, { // BUTTERFREE
+ {0x2A}, {0x30}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SCIZOR
+ {0x11}, {0x32}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOPPIP
+ {0x1D}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BLISSEY
+ {0x11}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARAS
+ {0x09}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PARASECT
+ {0x09}, {0x00}, {0x09}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QWILFISH
+ {0x11}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MR_MIME
+ {0x11}, {0x30}, {0x12}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYROGUE
+ {0x12}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLOYSTER
+ {0x1E}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TYRANITAR
+ {0x12}, {0x00}, {0x11}, {0x1B}, {0xFF}, {0xFF}
+ }, { // CLEFFA
+ {0x09}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEDLE
+ {0x0E}, {0x26}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIKACHU
+ {0x0C}, {0x2A}, {0x27}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLEFABLE
+ {0x09}, {0x2A}, {0x24}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIDGEOT
+ {0x11}, {0x0C}, {0x15}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIDGEOTTO
+ {0x11}, {0x0C}, {0x18}, {0x18}, {0xFF}, {0xFF}
+ }, { // PICHU
+ {0x0C}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CLEFAIRY
+ {0x09}, {0x0B}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARMANDER
+ {0x06}, {0x02}, {0x32}, {0x33}, {0xFF}, {0xFF}
+ }, { // STARYU
+ {0x1B}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CYNDAQUIL
+ {0x0F}, {0x2A}, {0x09}, {0x33}, {0xFF}, {0xFF}
+ }, { // SUNKERN
+ {0x2C}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TEDDIURSA
+ {0x09}, {0x0C}, {0x30}, {0x2C}, {0xFF}, {0xFF}
+ }, { // VOLTORB
+ {0x1A}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MOLTRES
+ {0x1A}, {0x09}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAREON
+ {0x03}, {0x0C}, {0x15}, {0xFF}, {0xFF}, {0xFF}
+ }, { // ALAKAZAM
+ {0x00}, {0x2C}, {0x2C}, {0x00}, {0xFF}, {0xFF}
+ }, { // MAGMAR
+ {0x00}, {0x1D}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FORRETRESS
+ {0x1A}, {0x09}, {0x09}, {0x33}, {0xFF}, {0xFF}
+ }, { // WIGGLYTUFF
+ {0x11}, {0x27}, {0x0C}, {0x2A}, {0x33}, {0xFF}
+ }, { // IVYSAUR
+ {0x14}, {0x0C}, {0x32}, {0x33}, {0xFF}, {0xFF}
+ }, { // BULBASAUR
+ {0x24}, {0x2A}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // VENUSAUR
+ {0x0C}, {0x2C}, {0x30}, {0x33}, {0xFF}, {0xFF}
+ }, { // AERODACTYL
+ {0x03}, {0x18}, {0x00}, {0x18}, {0xFF}, {0xFF}
+ }, { // MAGBY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // IGGLYBUFF
+ {0x11}, {0x2A}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // UMBREON
+ {0x2A}, {0x0C}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // ARTICUNO
+ {0x06}, {0x11}, {0x27}, {0x18}, {0xFF}, {0xFF}
+ }, { // JIGGLYPUFF
+ {0x11}, {0x27}, {0x0C}, {0x2A}, {0x33}, {0xFF}
+ }, { // SNUBBULL
+ {0x2C}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BAYLEEF
+ {0x03}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // GRIMER
+ {0x12}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MUK
+ {0x2A}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HERACROSS
+ {0x09}, {0x2A}, {0x1B}, {0x33}, {0xFF}, {0xFF}
+ }, { // HOUNDOOM
+ {0x21}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PERSIAN
+ {0x32}, {0x11}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LICKITUNG
+ {0x11}, {0x0C}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HO_OH
+ {0x18}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // HOOTHOOT
+ {0x27}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PIDGEY
+ {0x11}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PONYTA
+ {0x1A}, {0x0C}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SKIPLOOM
+ {0x11}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PORYGON
+ {0x18}, {0x0C}, {0x15}, {0xFF}, {0xFF}, {0xFF}
+ }, { // PORYGON2
+ {0x1A}, {0x0C}, {0x1B}, {0x27}, {0xFF}, {0xFF}
+ }, { // MAGCARGO
+ {0x00}, {0x1B}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLUGMA
+ {0x2C}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // QUILAVA
+ {0x11}, {0x06}, {0x08}, {0xFF}, {0xFF}, {0xFF}
+ }, { // BELLSPROUT
+ {0x0B}, {0x21}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // WEEZING
+ {0x0C}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MARILL
+ {0x08}, {0x10}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // AZUMARILL
+ {0x08}, {0x27}, {0x2C}, {0x10}, {0xFF}, {0xFF}
+ }, { // ELECTRODE
+ {0x0C}, {0x09}, {0x18}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MANKEY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MANTINE
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // DRATINI
+ {0x00}, {0x0C}, {0x0C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEW
+ {0x2D}, {0xFF}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEWTWO
+ {0x2D}, {0x27}, {0xFF}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MILTANK
+ {0x11}, {0x03}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MISDREAVUS
+ {0x11}, {0x0C}, {0x2C}, {0x33}, {0xFF}, {0xFF}
+ }, { // SMOOCHUM
+ {0x27}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MEGANIUM
+ {0x03}, {0x09}, {0x0C}, {0x2A}, {0xFF}, {0xFF}
+ }, { // DITTO
+ {0x11}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TENTACOOL
+ {0x09}, {0x2A}, {0x27}, {0x33}, {0xFF}, {0xFF}
+ }, { // MAREEP
+ {0x1D}, {0x0E}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // FLAAFFY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VENOMOTH
+ {0x09}, {0x1A}, {0x15}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TANGELA
+ {0x02}, {0x09}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLOWKING
+ {0x18}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLOWBRO
+ {0x18}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // SLOWPOKE
+ {0x18}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MURKROW
+ {0x30}, {0x18}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // YANMA
+ {0x00}, {0x2A}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // KADABRA
+ {0x2C}, {0x00}, {0x2C}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LARVITAR
+ {0x15}, {0x11}, {0x15}, {0x33}, {0xFF}, {0xFF}
+ }, { // NOCTOWL
+ {0x1B}, {0x21}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAIKOU
+ {0x12}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RAICHU
+ {0x12}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHANSEY
+ {0x00}, {0x0C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // RATICATE
+ {0x00}, {0x0C}, {0x03}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LAPRAS
+ {0x2C}, {0x00}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VILEPLUME
+ {0x14}, {0x27}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LANTURN
+ {0x00}, {0x30}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // CHARMELEON
+ {0x06}, {0x0C}, {0x0C}, {0x15}, {0x33}, {0xFF}
+ }, { // CHARIZARD
+ {0x06}, {0x11}, {0x32}, {0x33}, {0x33}, {0xFF}
+ }, { // URSARING
+ {0x30}, {0x2C}, {0x0C}, {0x33}, {0xFF}, {0xFF}
+ }, { // JYNX
+ {0x0C}, {0x33}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LUGIA
+ {0x27}, {0x0C}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MAGNETON
+ {0x00}, {0x09}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEDIAN
+ {0x09}, {0x0C}, {0x00}, {0xFF}, {0xFF}, {0xFF}
+ }, { // LEDYBA
+ {0x09}, {0x0C}, {0x2A}, {0xFF}, {0xFF}, {0xFF}
+ }, { // VULPIX
+ {0x24}, {0x11}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // JUMPLUFF
+ {0x2C}, {0x2C}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }, { // TOTODILE
+ {0x18}, {0x18}, {0x12}, {0xFF}, {0xFF}, {0xFF}
+ }, { // MACHOP
+ {0x2A}, {0x15}, {0x33}, {0xFF}, {0xFF}, {0xFF}
+ }
+};
+
+#endif //GUARD_DATA_BARD_MUSIC_H
diff --git a/src/data/menu_cursor_de.h b/src/data/menu_cursor_de.h
new file mode 100644
index 000000000..cd56f51d9
--- /dev/null
+++ b/src/data/menu_cursor_de.h
@@ -0,0 +1,345 @@
+#ifndef GUARD_DATA_MENU_CURSOR_H
+#define GUARD_DATA_MENU_CURSOR_H
+
+const u8 OutlineCursorTiles_00[] = INCBIN_U8("graphics/interface/outline_cursor_00.4bpp");
+const u8 OutlineCursorTiles_01[] = INCBIN_U8("graphics/interface/outline_cursor_01.4bpp");
+const u8 OutlineCursorTiles_02[] = INCBIN_U8("graphics/interface/outline_cursor_02.4bpp");
+const u8 OutlineCursorTiles_03[] = INCBIN_U8("graphics/interface/outline_cursor_03.4bpp");
+const u8 OutlineCursorTiles_04[] = INCBIN_U8("graphics/interface/outline_cursor_04.4bpp");
+const u8 OutlineCursorTiles_05[] = INCBIN_U8("graphics/interface/outline_cursor_05.4bpp");
+const u8 OutlineCursorTiles_06[] = INCBIN_U8("graphics/interface/outline_cursor_06.4bpp");
+const u8 OutlineCursorTiles_07[] = INCBIN_U8("graphics/interface/outline_cursor_07.4bpp");
+const u8 OutlineCursorTiles_08[] = INCBIN_U8("graphics/interface/outline_cursor_08.4bpp");
+const u8 OutlineCursorTiles_09[] = INCBIN_U8("graphics/interface/outline_cursor_09.4bpp");
+const u8 OutlineCursorTiles_10[] = INCBIN_U8("graphics/interface/outline_cursor_10.4bpp");
+const u8 OutlineCursorTiles_11[] = INCBIN_U8("graphics/interface/outline_cursor_11.4bpp");
+const u8 OutlineCursorTiles_12[] = INCBIN_U8("graphics/interface/outline_cursor_12.4bpp");
+const u8 OutlineCursorTiles_13[] = INCBIN_U8("graphics/interface/outline_cursor_13.4bpp");
+const u8 OutlineCursorTiles_14[] = INCBIN_U8("graphics/interface/outline_cursor_14.4bpp");
+const u8 OutlineCursorTiles_15[] = INCBIN_U8("graphics/interface/outline_cursor_15.4bpp");
+
+const struct OamData gOamData_842F11C = {
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE
+};
+const struct OamData gOamData_842F124 = {
+ .objMode = ST_OAM_OBJ_WINDOW,
+ .shape = ST_OAM_V_RECTANGLE
+};
+const struct OamData gOamData_842F12C = {
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE
+};
+
+const union AnimCmd gSpriteAnim_842F134[] = {
+ ANIMCMD_FRAME(0, 63),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_842F13C[] = {
+ gSpriteAnim_842F134
+};
+
+const struct SpriteSheet gUnknown_0842F140[] = {
+ { OutlineCursorTiles_00, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_01, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_02, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_03, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_04, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_05, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_06, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_07, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_08, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_09, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_10, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_11, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_12, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_13, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_14, 0x380, 0xFFF0 },
+ { OutlineCursorTiles_15, 0x380, 0xFFF0 }
+};
+
+const struct SpriteSheet gUnknown_0842F1C0[] = {
+ { OutlineCursorTiles_00, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_01, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_02, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_03, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_04, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_05, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_06, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_07, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_08, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_09, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_10, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_11, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_12, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_13, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_14, 0x380, 0xFFF1 },
+ { OutlineCursorTiles_15, 0x380, 0xFFF1 }
+};
+
+const struct SpritePalette gUnknown_0842F240 = {
+ gUnknown_0203A360, 0xfff0
+};
+const struct SpritePalette gUnknown_0842F248 = {
+ gUnknown_0203A360, 0xfff1
+};
+
+const struct SpriteTemplate gSpriteTemplate_842F250[] = {
+ {
+ 0xfff0, 0xfff0, &gOamData_842F11C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }, {
+ 0xfff0, 0xffff, &gOamData_842F11C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }, {
+ 0xfff0, 0xffff, &gOamData_842F124, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }
+};
+const struct SpriteTemplate gSpriteTemplate_842F298[] = {
+ {
+ 0xfff1, 0xfff1, &gOamData_842F12C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }, {
+ 0xfff1, 0xffff, &gOamData_842F12C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }
+};
+
+
+const struct Subsprite gSubspriteTable_842F2C8[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F2D8[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_V_RECTANGLE, 1, 4, 0 },
+ { 9, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F2F0[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_V_RECTANGLE, 1, 4, 0 },
+ { 9, -1, ST_OAM_V_RECTANGLE, 1, 4, 0 },
+ { 17, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F310[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 25, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F328[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F340[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_V_RECTANGLE, 1, 4, 0 },
+ { 9, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 41, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F360[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 17, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 49, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F380[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 25, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 57, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F3A0[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 65, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F3C0[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_V_RECTANGLE, 1, 4, 0 },
+ { 9, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 41, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 73, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F3E8[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 49, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 81, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F410[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 57, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 89, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F438[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 65, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 97, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F460[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_V_RECTANGLE, 1, 4, 0 },
+ { 9, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 41, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 73, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 105, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F490[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 65, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 81, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 113, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F4C0[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 65, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 89, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 121, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F4F0[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 33, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 65, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 97, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 129, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F520[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 1, 0, 0 },
+ { 1, -1, ST_OAM_V_RECTANGLE, 1, 4, 0 },
+ { 9, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 41, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 73, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 105, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 137, -1, ST_OAM_V_RECTANGLE, 1, 8, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F558[] = {
+ { -1, -1, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 7, -1, ST_OAM_SQUARE, 2, 12, 0 },
+ { 35, -1, ST_OAM_V_RECTANGLE, 0, 8, 0 }
+};
+
+const struct Subsprite *const gUnknown_0842F5BC[] = {
+ gSubspriteTable_842F558
+};
+
+const struct SubspriteTable gSubspriteTables_842F5C0[] = {
+ {1, gMenuCursorSubsprites},
+ {1, gMenuCursorSubsprites},
+ {2, gMenuCursorSubsprites},
+ {3, gMenuCursorSubsprites},
+ {4, gMenuCursorSubsprites},
+ {5, gMenuCursorSubsprites},
+ {6, gMenuCursorSubsprites},
+ {7, gMenuCursorSubsprites},
+ {8, gMenuCursorSubsprites},
+ {9, gMenuCursorSubsprites},
+ {10, gMenuCursorSubsprites},
+ {11, gMenuCursorSubsprites},
+ {12, gMenuCursorSubsprites},
+ {13, gMenuCursorSubsprites},
+ {14, gMenuCursorSubsprites},
+ {15, gMenuCursorSubsprites},
+ {16, gMenuCursorSubsprites},
+ {17, gMenuCursorSubsprites},
+ {18, gMenuCursorSubsprites},
+ {19, gMenuCursorSubsprites},
+ {20, gMenuCursorSubsprites},
+ {21, gMenuCursorSubsprites},
+ {22, gMenuCursorSubsprites},
+ {23, gMenuCursorSubsprites},
+ {24, gMenuCursorSubsprites},
+ {25, gMenuCursorSubsprites},
+ {26, gMenuCursorSubsprites},
+ {27, gMenuCursorSubsprites},
+ {28, gMenuCursorSubsprites},
+ {29, gMenuCursorSubsprites},
+ {30, gMenuCursorSubsprites},
+ {31, gMenuCursorSubsprites}
+};
+
+const struct SubspriteTable gSubspriteTables_842F6C0[] = {
+ {2, gSubspriteTable_842F2C8},
+ {2, gSubspriteTable_842F2C8},
+ {3, gSubspriteTable_842F2D8},
+ {4, gSubspriteTable_842F2F0},
+ {3, gSubspriteTable_842F310},
+ {3, gSubspriteTable_842F328},
+ {4, gSubspriteTable_842F340},
+ {4, gSubspriteTable_842F360},
+ {4, gSubspriteTable_842F380},
+ {4, gSubspriteTable_842F3A0},
+ {5, gSubspriteTable_842F3C0},
+ {5, gSubspriteTable_842F3E8},
+ {5, gSubspriteTable_842F410},
+ {5, gSubspriteTable_842F438},
+ {6, gSubspriteTable_842F460},
+ {6, gSubspriteTable_842F490},
+ {6, gSubspriteTable_842F4C0},
+ {6, gSubspriteTable_842F4F0},
+ {7, gSubspriteTable_842F520}
+};
+
+const struct SubspriteTable gUnknown_0842F758[] = {
+ {3, gMenuCursorSubsprites}
+};
+
+const struct Subsprite gUnknown_0842F760 = {
+ .y = -1, .shape = ST_OAM_V_RECTANGLE, .size = 1
+};
+
+const struct Subsprite gUnknown_0842F768 = {
+ .y = -1, .shape = ST_OAM_V_RECTANGLE, .size = 1, .tileOffset = 8
+};
+
+const struct Subsprite gUnknown_0842F770 = {
+ .y = -1, .shape = ST_OAM_SQUARE, .size = 2, .tileOffset = 12
+};
+
+const struct Subsprite gUnknown_0842F778 = {
+ .y = -1, .shape = ST_OAM_V_RECTANGLE, .size = 1, .tileOffset = 4
+};
+
+const struct Subsprite gUnknown_0842F780 = {
+ .y = -1, .shape = ST_OAM_V_RECTANGLE, .size = 1
+};
+
+const struct Subsprite gUnknown_0842F788 = {
+ .y = -1, .shape = ST_OAM_SQUARE, .size = 2, .tileOffset = 12
+};
+
+const struct Subsprite gUnknown_0842F790 = {
+ .y = -1, .shape = ST_OAM_V_RECTANGLE, .size = 1, .tileOffset = 4
+};
+
+const struct Subsprite gUnknown_0842F798 = {
+ .y = -1, .shape = ST_OAM_V_RECTANGLE, .size = 1, .tileOffset = 8
+};
+
+#endif //GUARD_DATA_MENU_CURSOR_H
diff --git a/src/data/menu_cursor_en.h b/src/data/menu_cursor_en.h
new file mode 100644
index 000000000..a926f2629
--- /dev/null
+++ b/src/data/menu_cursor_en.h
@@ -0,0 +1,363 @@
+#ifndef GUARD_DATA_MENU_CURSOR_H
+#define GUARD_DATA_MENU_CURSOR_H
+
+const u8 OutlineCursorTiles_00[] = INCBIN_U8("graphics/interface/outline_cursor_00.4bpp");
+const u8 OutlineCursorTiles_01[] = INCBIN_U8("graphics/interface/outline_cursor_01.4bpp");
+const u8 OutlineCursorTiles_02[] = INCBIN_U8("graphics/interface/outline_cursor_02.4bpp");
+const u8 OutlineCursorTiles_03[] = INCBIN_U8("graphics/interface/outline_cursor_03.4bpp");
+const u8 OutlineCursorTiles_04[] = INCBIN_U8("graphics/interface/outline_cursor_04.4bpp");
+const u8 OutlineCursorTiles_05[] = INCBIN_U8("graphics/interface/outline_cursor_05.4bpp");
+const u8 OutlineCursorTiles_06[] = INCBIN_U8("graphics/interface/outline_cursor_06.4bpp");
+const u8 OutlineCursorTiles_07[] = INCBIN_U8("graphics/interface/outline_cursor_07.4bpp");
+const u8 OutlineCursorTiles_08[] = INCBIN_U8("graphics/interface/outline_cursor_08.4bpp");
+const u8 OutlineCursorTiles_09[] = INCBIN_U8("graphics/interface/outline_cursor_09.4bpp");
+const u8 OutlineCursorTiles_10[] = INCBIN_U8("graphics/interface/outline_cursor_10.4bpp");
+const u8 OutlineCursorTiles_11[] = INCBIN_U8("graphics/interface/outline_cursor_11.4bpp");
+const u8 OutlineCursorTiles_12[] = INCBIN_U8("graphics/interface/outline_cursor_12.4bpp");
+const u8 OutlineCursorTiles_13[] = INCBIN_U8("graphics/interface/outline_cursor_13.4bpp");
+const u8 OutlineCursorTiles_14[] = INCBIN_U8("graphics/interface/outline_cursor_14.4bpp");
+const u8 OutlineCursorTiles_15[] = INCBIN_U8("graphics/interface/outline_cursor_15.4bpp");
+
+const struct OamData gOamData_842F11C = {
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE
+};
+const struct OamData gOamData_842F124 = {
+ .objMode = ST_OAM_OBJ_WINDOW,
+ .shape = ST_OAM_V_RECTANGLE
+};
+const struct OamData gOamData_842F12C = {
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .shape = ST_OAM_V_RECTANGLE
+};
+
+const union AnimCmd gSpriteAnim_842F134[] = {
+ ANIMCMD_FRAME(0, 63),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_842F13C[] = {
+ gSpriteAnim_842F134
+};
+
+const struct SpriteSheet gUnknown_0842F140[] = {
+ { OutlineCursorTiles_00, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_01, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_02, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_03, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_04, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_05, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_06, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_07, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_08, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_09, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_10, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_11, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_12, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_13, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_14, 0x1C0, 0xFFF0 },
+ { OutlineCursorTiles_15, 0x1C0, 0xFFF0 }
+};
+
+const struct SpriteSheet gUnknown_0842F1C0[] = {
+ { OutlineCursorTiles_00, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_01, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_02, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_03, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_04, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_05, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_06, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_07, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_08, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_09, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_10, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_11, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_12, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_13, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_14, 0x1C0, 0xFFF1 },
+ { OutlineCursorTiles_15, 0x1C0, 0xFFF1 }
+};
+
+const struct SpritePalette gUnknown_0842F240 = {
+ gUnknown_0203A360, 0xfff0
+};
+const struct SpritePalette gUnknown_0842F248 = {
+ gUnknown_0203A360, 0xfff1
+};
+
+const struct SpriteTemplate gSpriteTemplate_842F250[] = {
+ {
+ 0xfff0, 0xfff0, &gOamData_842F11C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }, {
+ 0xfff0, 0xffff, &gOamData_842F11C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }, {
+ 0xfff0, 0xffff, &gOamData_842F124, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }
+};
+const struct SpriteTemplate gSpriteTemplate_842F298[] = {
+ {
+ 0xfff1, 0xfff1, &gOamData_842F12C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }, {
+ 0xfff1, 0xffff, &gOamData_842F12C, gSpriteAnimTable_842F13C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ }
+};
+
+
+const struct Subsprite gSubspriteTable_842F2C8[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F2D8[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_V_RECTANGLE, 0, 2, 0 },
+ { 9, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F2F0[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_V_RECTANGLE, 0, 2, 0 },
+ { 9, 0, ST_OAM_V_RECTANGLE, 0, 2, 0 },
+ { 17, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F310[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 25, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F328[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F340[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_V_RECTANGLE, 0, 2, 0 },
+ { 9, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 41, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F360[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 17, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 49, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F380[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 25, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 57, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F3A0[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 65, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F3C0[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_V_RECTANGLE, 0, 2, 0 },
+ { 9, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 41, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 73, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F3E8[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 49, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 81, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F410[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 57, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 89, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F438[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 65, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 97, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F460[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_V_RECTANGLE, 0, 2, 0 },
+ { 9, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 41, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 73, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 105, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F490[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 65, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 81, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 113, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F4C0[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 65, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 89, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 121, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F4F0[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 33, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 65, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 97, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 129, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F520[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 1, 0, ST_OAM_V_RECTANGLE, 0, 2, 0 },
+ { 9, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 41, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 73, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 105, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 137, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite gSubspriteTable_842F558[] = {
+ { -1, 0, ST_OAM_V_RECTANGLE, 0, 0, 0 },
+ { 7, 0, ST_OAM_H_RECTANGLE, 2, 6, 0 },
+ { 35, 0, ST_OAM_V_RECTANGLE, 0, 4, 0 }
+};
+
+const struct Subsprite *const gUnknown_0842F570[] = {
+ gSubspriteTable_842F2C8,
+ gSubspriteTable_842F2C8,
+ gSubspriteTable_842F2D8,
+ gSubspriteTable_842F2F0,
+ gSubspriteTable_842F310,
+ gSubspriteTable_842F328,
+ gSubspriteTable_842F340,
+ gSubspriteTable_842F360,
+ gSubspriteTable_842F380,
+ gSubspriteTable_842F3A0,
+ gSubspriteTable_842F3C0,
+ gSubspriteTable_842F3E8,
+ gSubspriteTable_842F410,
+ gSubspriteTable_842F438,
+ gSubspriteTable_842F460,
+ gSubspriteTable_842F490,
+ gSubspriteTable_842F4C0,
+ gSubspriteTable_842F4F0,
+ gSubspriteTable_842F520
+};
+
+const struct Subsprite *const gUnknown_0842F5BC[] = {
+ gSubspriteTable_842F558
+};
+
+const struct SubspriteTable gSubspriteTables_842F5C0[] = {
+ {1, gMenuCursorSubsprites},
+ {1, gMenuCursorSubsprites},
+ {2, gMenuCursorSubsprites},
+ {3, gMenuCursorSubsprites},
+ {4, gMenuCursorSubsprites},
+ {5, gMenuCursorSubsprites},
+ {6, gMenuCursorSubsprites},
+ {7, gMenuCursorSubsprites},
+ {8, gMenuCursorSubsprites},
+ {9, gMenuCursorSubsprites},
+ {10, gMenuCursorSubsprites},
+ {11, gMenuCursorSubsprites},
+ {12, gMenuCursorSubsprites},
+ {13, gMenuCursorSubsprites},
+ {14, gMenuCursorSubsprites},
+ {15, gMenuCursorSubsprites},
+ {1, gMenuCursorSubsprites},
+ {17, gMenuCursorSubsprites},
+ {18, gMenuCursorSubsprites},
+ {19, gMenuCursorSubsprites},
+ {20, gMenuCursorSubsprites},
+ {21, gMenuCursorSubsprites},
+ {22, gMenuCursorSubsprites},
+ {23, gMenuCursorSubsprites},
+ {24, gMenuCursorSubsprites},
+ {25, gMenuCursorSubsprites},
+ {26, gMenuCursorSubsprites},
+ {27, gMenuCursorSubsprites},
+ {28, gMenuCursorSubsprites},
+ {29, gMenuCursorSubsprites},
+ {30, gMenuCursorSubsprites},
+ {31, gMenuCursorSubsprites}
+};
+
+const struct SubspriteTable gSubspriteTables_842F6C0[] = {
+ {2, gSubspriteTable_842F2C8},
+ {2, gSubspriteTable_842F2C8},
+ {3, gSubspriteTable_842F2D8},
+ {4, gSubspriteTable_842F2F0},
+ {3, gSubspriteTable_842F310},
+ {3, gSubspriteTable_842F328},
+ {4, gSubspriteTable_842F340},
+ {4, gSubspriteTable_842F360},
+ {4, gSubspriteTable_842F380},
+ {4, gSubspriteTable_842F3A0},
+ {5, gSubspriteTable_842F3C0},
+ {5, gSubspriteTable_842F3E8},
+ {5, gSubspriteTable_842F410},
+ {5, gSubspriteTable_842F438},
+ {6, gSubspriteTable_842F460},
+ {6, gSubspriteTable_842F490},
+ {6, gSubspriteTable_842F4C0},
+ {6, gSubspriteTable_842F4F0},
+ {7, gSubspriteTable_842F520}
+};
+
+const struct SubspriteTable gUnknown_0842F758[] = {
+ {3, gMenuCursorSubsprites}
+};
+
+const struct Subsprite gUnknown_0842F760 = {
+ .shape = ST_OAM_V_RECTANGLE
+};
+
+const struct Subsprite gUnknown_0842F768 = {
+ .shape = ST_OAM_V_RECTANGLE, .tileOffset = 4
+};
+
+const struct Subsprite gUnknown_0842F770 = {
+ .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 6
+};
+
+const struct Subsprite gUnknown_0842F778 = {
+ .shape = ST_OAM_V_RECTANGLE, .tileOffset = 2
+};
+
+const struct Subsprite gUnknown_0842F780 = {
+ .shape = ST_OAM_H_RECTANGLE, .size = 2, .tileOffset = 6
+};
+
+const struct Subsprite gUnknown_0842F788 = {
+ .shape = ST_OAM_V_RECTANGLE, .tileOffset = 2
+};
+
+const struct Subsprite gUnknown_0842F790 = {
+ .shape = ST_OAM_V_RECTANGLE, .tileOffset = 4
+};
+
+#endif //GUARD_DATA_MENU_CURSOR_H
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 728562b81..d797e8850 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -18,9 +18,9 @@
#include "ewram.h"
extern u8 gUnknown_0203856C;
-extern u16 gUnknown_02038670[];
-extern u16 gUnknown_02038678[];
-extern u16 gUnknown_02038680[];
+extern s16 gUnknown_02038670[];
+extern s16 gUnknown_02038678[];
+extern s16 gUnknown_02038680[];
extern u8 gContestFinalStandings[];
extern u8 gUnknown_02038694;
extern u8 gIsLinkContest;
@@ -922,211 +922,40 @@ void sub_80AAD44(struct Sprite *sprite, s8 var2)
}
}
-//Do this later
-/*
void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d)
{
- u32 r5;
- u16 r7;
- u8 r7_2;
- //u32 sp44;
- //u32 sp48;
- u32 sp58;
+ u16 len;
+ u8 r7;
+ s32 i;
+ u8 sp0[32];
+ u8 sp20[32];
+ u8 str2[2];
- gMain.state = 0;
+ DmaClear32(3, (void *)(VRAM + 0x18000 - (d + 1) * 256), 0x100);
- r5 = d + 1;
- //Could also be DmaClear32
- DmaFill32(3, 0, (u8 *)VRAM + 0x18000 - r5 * 256, 0x100);
+ len = StringLength(string);
+ if (len > 8)
+ len = 8;
- r7 = StringLength(string);
- if (r7 > 8)
- r7 = 8;
- sp58 = d * 2;
+ for (i = 0; i < len; i++)
+ {
+ str2[0] = string[i];
+ str2[1] = EOS;
+ sub_80034D4(sp0, str2);
+ DmaCopy32Defvars(3, sp20, (void *)(VRAM + 0x18000 - (d + 1) * 256 + i * 32), sizeof(sp0));
+ }
- //More stuff
+ r7 = 124 - d * 2;
- r7_2 = 0x7C - sp58;
+ gMain.oamBuffer[r7] = gUnknown_083C9400;
+ gMain.oamBuffer[r7].tileNum = 1024 - (d + 1) * 8;
+ gMain.oamBuffer[r7].x = b;
+ gMain.oamBuffer[r7].y = c;
-}
-*/
-
-__attribute__((naked))
-void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d)
-{
- 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, 0x64\n\
- mov r9, r0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- str r1, [sp, 0x48]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x4C]\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- mov r10, r3\n\
- mov r5, r10\n\
- adds r5, 0x1\n\
- lsls r1, r5, 8\n\
- ldr r0, _080AAEC4 @ =0x06018000\n\
- subs r1, r0, r1\n\
- movs r0, 0\n\
- str r0, [sp, 0x44]\n\
- ldr r4, _080AAEC8 @ =0x040000d4\n\
- add r0, sp, 0x44\n\
- str r0, [r4]\n\
- str r1, [r4, 0x4]\n\
- ldr r0, _080AAECC @ =0x85000040\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- mov r0, r9\n\
- bl StringLength\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- cmp r7, 0x8\n\
- bls _080AADD0\n\
- movs r7, 0x8\n\
-_080AADD0:\n\
- movs r6, 0\n\
- mov r8, r5\n\
- mov r1, r10\n\
- lsls r1, 1\n\
- str r1, [sp, 0x58]\n\
- ldr r2, [sp, 0x48]\n\
- adds r2, 0x20\n\
- str r2, [sp, 0x5C]\n\
- cmp r6, r7\n\
- bge _080AAE1E\n\
- add r5, sp, 0x40\n\
- add r0, sp, 0x20\n\
- mov r10, r0\n\
- ldr r2, _080AAEC4 @ =0x06018000\n\
-_080AADEC:\n\
- mov r1, r9\n\
- adds r0, r1, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r5]\n\
- movs r0, 0xFF\n\
- strb r0, [r5, 0x1]\n\
- mov r0, sp\n\
- adds r1, r5, 0\n\
- str r2, [sp, 0x60]\n\
- bl sub_80034D4\n\
- mov r1, r8\n\
- lsls r0, r1, 8\n\
- ldr r2, [sp, 0x60]\n\
- subs r0, r2, r0\n\
- mov r1, r10\n\
- str r1, [r4]\n\
- str r0, [r4, 0x4]\n\
- ldr r0, _080AAED0 @ =0x84000008\n\
- str r0, [r4, 0x8]\n\
- ldr r0, [r4, 0x8]\n\
- adds r2, 0x20\n\
- adds r6, 0x1\n\
- cmp r6, r7\n\
- blt _080AADEC\n\
-_080AAE1E:\n\
- movs r1, 0x7C\n\
- ldr r2, [sp, 0x58]\n\
- subs r1, r2\n\
- lsls r1, 24\n\
- lsrs r7, r1, 24\n\
- ldr r0, _080AAED4 @ =gMain\n\
- mov r9, r0\n\
- lsls r3, r7, 3\n\
- add r3, r9\n\
- ldr r0, _080AAED8 @ =gUnknown_083C9400\n\
- ldr r1, [r0]\n\
- ldr r2, [r0, 0x4]\n\
- str r1, [sp, 0x50]\n\
- str r2, [sp, 0x54]\n\
- str r1, [r3, 0x3C]\n\
- str r2, [r3, 0x40]\n\
- mov r2, r8\n\
- lsls r0, r2, 3\n\
- movs r1, 0x80\n\
- lsls r1, 3\n\
- adds r2, r1, 0\n\
- subs r2, r0\n\
- adds r6, r3, 0\n\
- adds r6, 0x40\n\
- ldr r0, _080AAEDC @ =0x000003ff\n\
- mov r8, r0\n\
- mov r1, r8\n\
- ands r2, r1\n\
- ldrh r5, [r6]\n\
- ldr r4, _080AAEE0 @ =0xfffffc00\n\
- adds r0, r4, 0\n\
- ands r0, r5\n\
- orrs r0, r2\n\
- strh r0, [r6]\n\
- ldrh r5, [r3, 0x3E]\n\
- ldr r2, _080AAEE4 @ =0xfffffe00\n\
- adds r0, r2, 0\n\
- ands r0, r5\n\
- ldr r1, [sp, 0x48]\n\
- orrs r0, r1\n\
- strh r0, [r3, 0x3E]\n\
- adds r3, 0x3C\n\
- add r0, sp, 0x4C\n\
- ldrb r0, [r0]\n\
- strb r0, [r3]\n\
- adds r1, r7, 0x1\n\
- lsls r1, 3\n\
- mov r0, r9\n\
- adds r7, r1, r0\n\
- ldr r0, [sp, 0x50]\n\
- ldr r1, [sp, 0x54]\n\
- str r0, [r7, 0x3C]\n\
- str r1, [r7, 0x40]\n\
- ldrh r0, [r6]\n\
- lsls r0, 22\n\
- lsrs r0, 22\n\
- adds r0, 0x4\n\
- adds r5, r7, 0\n\
- adds r5, 0x40\n\
- mov r1, r8\n\
- ands r0, r1\n\
- ldrh r3, [r5]\n\
- ands r4, r3\n\
- orrs r4, r0\n\
- strh r4, [r5]\n\
- ldrh r0, [r7, 0x3E]\n\
- ands r2, r0\n\
- ldr r0, [sp, 0x5C]\n\
- orrs r2, r0\n\
- strh r2, [r7, 0x3E]\n\
- adds r1, r7, 0\n\
- adds r1, 0x3C\n\
- add r2, sp, 0x4C\n\
- ldrb r2, [r2]\n\
- strb r2, [r1]\n\
- add sp, 0x64\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\
-_080AAEC4: .4byte 0x06018000\n\
-_080AAEC8: .4byte 0x040000d4\n\
-_080AAECC: .4byte 0x85000040\n\
-_080AAED0: .4byte 0x84000008\n\
-_080AAED4: .4byte gMain\n\
-_080AAED8: .4byte gUnknown_083C9400\n\
-_080AAEDC: .4byte 0x000003ff\n\
-_080AAEE0: .4byte 0xfffffc00\n\
-_080AAEE4: .4byte 0xfffffe00\n\
- .syntax divided\n");
+ gMain.oamBuffer[r7 + 1] = gUnknown_083C9400;
+ gMain.oamBuffer[r7 + 1].tileNum = gMain.oamBuffer[r7].tileNum + 4;
+ gMain.oamBuffer[r7 + 1].x = b + 32;
+ gMain.oamBuffer[r7 + 1].y = c;
}
void unref_sub_80AAEE8(s32 a, u8 b, u8 c, u8 d)
diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c
index 429f43766..a8c3ad16b 100644
--- a/src/debug/unknown_debug_menu.c
+++ b/src/debug/unknown_debug_menu.c
@@ -6,10 +6,30 @@ extern u8 gBattleCommunication[];
extern u8 (*gCallback_03004AE8)(void);
-extern const struct MenuAction gUnknown_0842C29C[];
-
+static u8 sub_814A4B8(void);
static u8 sub_814A464(void);
+const u8 UnknownString_1stRound[] = _("1st round");
+const u8 UnknownString_2ndRound[] = _("2nd round");
+const u8 UnknownString_3rdRound[] = _("3rd round");
+const u8 UnknownString_4thRound[] = _("4th round");
+const u8 UnknownString_5thRound[] = _("5th round");
+const u8 UnknownString_6thRound[] = _("6th round");
+const u8 UnknownString_7thRound[] = _("7th round");
+const u8 UnknownString_8thRound[] = _("8th round");
+
+
+const struct MenuAction gUnknown_0842C29C[] = {
+ {UnknownString_1stRound, sub_814A4B8},
+ {UnknownString_2ndRound, sub_814A4B8},
+ {UnknownString_3rdRound, sub_814A4B8},
+ {UnknownString_4thRound, sub_814A4B8},
+ {UnknownString_5thRound, sub_814A4B8},
+ {UnknownString_6thRound, sub_814A4B8},
+ {UnknownString_7thRound, sub_814A4B8},
+ {UnknownString_8thRound, sub_814A4B8}
+};
+
int unref_sub_814A414(void)
{
MenuZeroFillScreen();
@@ -40,7 +60,7 @@ static u8 sub_814A464(void)
}
}
-u8 sub_814A4B8(void)
+static u8 sub_814A4B8(void)
{
gSaveBlock2.battleTower.var_4AE[0] = 3;
gSaveBlock2.battleTower.var_4AE[1] = 3;
diff --git a/src/engine/menu_cursor.c b/src/engine/menu_cursor.c
index d43be2a2f..960d3cc87 100644
--- a/src/engine/menu_cursor.c
+++ b/src/engine/menu_cursor.c
@@ -3,25 +3,7 @@
#include "palette.h"
#include "sprite.h"
-extern const struct SpriteSheet gUnknown_0842F140[];
-extern const struct SpriteSheet gUnknown_0842F1C0[];
-extern const struct SpritePalette gUnknown_0842F240;
-extern const struct SpritePalette gUnknown_0842F248;
-extern const struct SpriteTemplate gSpriteTemplate_842F250[];
-extern const struct SpriteTemplate gSpriteTemplate_842F298[];
-
-extern struct Subsprite *const gUnknown_0842F5BC[];
-
-extern const struct SubspriteTable gSubspriteTables_842F5C0[];
-extern const struct SubspriteTable gSubspriteTables_842F6C0[];
-extern const struct SubspriteTable gUnknown_0842F758[];
-
-extern const struct Subsprite gUnknown_0842F780;
-extern const struct Subsprite gUnknown_0842F788;
-extern const struct Subsprite gUnknown_0842F790;
-
-extern u16 gUnknown_0203A360[];
-
+EWRAM_DATA u16 gUnknown_0203A360[0x10] = {};
EWRAM_DATA struct Subsprite gMenuCursorSubsprites[10] = {0};
EWRAM_DATA u8 gUnknown_0203A3D0 = 0;
EWRAM_DATA u8 gUnknown_0203A3D1 = 0;
@@ -29,6 +11,12 @@ EWRAM_DATA u8 gUnknown_0203A3D2 = 0;
EWRAM_DATA u8 gUnknown_0203A3D3 = 0;
EWRAM_DATA u8 gUnknown_0203A3D4 = 0;
+#if ENGLISH
+#include "../src/data/menu_cursor_en.h"
+#elif GERMAN
+#include "../src/data/menu_cursor_de.h"
+#endif // ENGLISH/GERMAN
+
void sub_814A590(void)
{
gUnknown_0203A3D0 = 0x40;
diff --git a/src/engine/mystery_event_msg.c b/src/engine/mystery_event_msg.c
new file mode 100644
index 000000000..03ef22727
--- /dev/null
+++ b/src/engine/mystery_event_msg.c
@@ -0,0 +1,51 @@
+#include "global.h"
+
+#if ENGLISH
+
+const u8 gOtherText_BerryObtainedDadHasIt[] = _("Obtained a {STR_VAR_2} BERRY!\nDad has it at PETALBURG GYM.");
+
+const u8 gOtherText_BerryTransformed[] = _("The {STR_VAR_1} BERRY transformed into\none {STR_VAR_2} BERRY.");
+
+const u8 gOtherText_BerryAlreadyObtained[] = _("The {STR_VAR_1} BERRY has already been\nobtained.");
+
+const u8 gOtherText_SpecialRibbonReceived[] = _("A special RIBBON was awarded to your\nparty POKéMON.");
+
+const u8 gOtherText_DexUpgraded[] = _("The POKéDEX has been upgraded with\nthe NATIONAL MODE.");
+
+const u8 gOtherText_RareWordAdded[] = _("A rare word has been added.");
+
+const u8 gOtherText_PokeWasSentOver[] = _("{STR_VAR_1} was sent over!");
+
+const u8 gOtherText_PartyIsFull[] = _("Your party is full.\n{STR_VAR_1} could not be sent over.");
+
+const u8 gOtherText_NewTrainerInHoenn[] = _("A new TRAINER has arrived in HOENN.");
+
+const u8 gOtherText_NewAdversaryInBattleTower[] = _("A new adversary has arrived in the\nBATTLE TOWER.");
+
+const u8 gOtherText_DataCannotUseVersion[] = _("This data cannot be used in\nthis version.");
+
+#elif GERMAN
+
+const u8 gOtherText_BerryObtainedDadHasIt[] = _("Eine {STR_VAR_2}BEERE! Vater in der \nARENA von BLÜTENBURG CITY besitzt\lauch eine.");
+
+const u8 gOtherText_BerryTransformed[] = _("Die {STR_VAR_1}BEERE verwandelte\nsich in eine {STR_VAR_2}BEERE!");
+
+const u8 gOtherText_BerryAlreadyObtained[] = _("Du hast schon eine {STR_VAR_1}BEERE.");
+
+const u8 gOtherText_SpecialRibbonReceived[] = _("Ein besonderes BAND wurde deinem\nPOKéMON im Team verliehen.");
+
+const u8 gOtherText_DexUpgraded[] = _("Der POKéDEX wurde mit dem NATIONALEN\nMODUS ausgerüstet.");
+
+const u8 gOtherText_RareWordAdded[] = _("Ein seltenes Wort wurde hinzugefügt.");
+
+const u8 gOtherText_PokeWasSentOver[] = _("{STR_VAR_1} wurde gesendet!");
+
+const u8 gOtherText_PartyIsFull[] = _("Dein Team ist bereits vollständig.\n{STR_VAR_1} kann nicht gesendet\lwerden.");
+
+const u8 gOtherText_NewTrainerInHoenn[] = _("Ein neuer TRAINER ist in HOENN\nangekommen.");
+
+const u8 gOtherText_NewAdversaryInBattleTower[] = _("Ein neuer Widersacher ist im DUELLTURM\neingetroffen.");
+
+const u8 gOtherText_DataCannotUseVersion[] = _("Die Daten können in dieser Edition\nnicht eingesetzt werden.");
+
+#endif // ENGLISH/GERMAN
diff --git a/src/engine/mystery_event_script.c b/src/engine/mystery_event_script.c
index 12ad329da..6fcad66ac 100644
--- a/src/engine/mystery_event_script.c
+++ b/src/engine/mystery_event_script.c
@@ -14,6 +14,7 @@
#include "string_util.h"
#include "text.h"
#include "util.h"
+#include "mystery_event_msg.h"
#if ENGLISH
#define LANGUAGE_MASK 0x2
@@ -32,17 +33,6 @@ extern void party_compaction(void);
extern ScrCmdFunc gMysteryEventScriptCmdTable[];
extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
-extern const u8 gOtherText_BerryObtainedDadHasIt[];
-extern const u8 gOtherText_BerryTransformed[];
-extern const u8 gOtherText_BerryAlreadyObtained[];
-extern const u8 gOtherText_SpecialRibbonReceived[];
-extern const u8 gOtherText_DexUpgraded[];
-extern const u8 gOtherText_RareWordAdded[];
-extern const u8 gOtherText_PokeWasSentOver[];
-extern const u8 gOtherText_PartyIsFull[];
-extern const u8 gOtherText_NewTrainerInHoenn[];
-extern const u8 gOtherText_DataCannotUseVersion[];
-
static EWRAM_DATA struct ScriptContext sMysteryEventScriptContext = {0};
static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4)
@@ -317,7 +307,7 @@ bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx)
ctx->data[2] = 2;
if (IsEnigmaBerryValid() == TRUE)
- VarSet(0x402D, 1);
+ VarSet(VAR_ENIGMA_BERRY_AVAILABLE, 1);
else
ctx->data[2] = 1;
diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c
index 4d2545440..440504d5a 100644
--- a/src/engine/naming_screen.c
+++ b/src/engine/naming_screen.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "naming_screen.h"
#include "data2.h"
+#include "graphics.h"
#include "field_effect.h"
#include "field_map_obj.h"
#include "field_player_avatar.h"
@@ -29,16 +30,11 @@ extern u16 gKeyRepeatStartDelay;
extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
-const u32 gSpriteImage_83CE094[] = INCBIN_U32("graphics/naming_screen/pc_icon/0.4bpp");
-const u32 gSpriteImage_83CE154[] = INCBIN_U32("graphics/naming_screen/pc_icon/1.4bpp");
+const u8 gSpriteImage_83CE094[] = INCBIN_U8("graphics/naming_screen/pc_icon/0.4bpp");
+const u8 gSpriteImage_83CE154[] = INCBIN_U8("graphics/naming_screen/pc_icon/1.4bpp");
-//Some unused pointer, perhaps.
-asm(".section .rodata\n\
-@ XXX: what is this?\n\
- .align 2\n\
- .4byte 0x2000000\n");
+struct NamingScreenData *const namingScreenDataPtr = &namingScreenData;
-extern u16 *const gUnknown_083CE28C[];
extern const struct SubspriteTable gSubspriteTables_83CE558[];
extern const struct SubspriteTable gSubspriteTables_83CE560[];
extern const struct SubspriteTable gSubspriteTables_83CE578[];
@@ -55,7 +51,6 @@ extern const struct SpriteTemplate gSpriteTemplate_83CE688;
extern const struct SpriteSheet gUnknown_083CE6A0[];
extern const struct SpritePalette gUnknown_083CE708[];
extern const u8 gNamingScreenMenu_Gfx[];
-extern const u16 gNamingScreenPalettes[];
extern const u16 gUnknown_083CE748[];
extern const u16 gUnknown_083CEBF8[];
extern const u16 gUnknown_083CF0A8[];
@@ -198,12 +193,12 @@ static void VBlankCB_NamingScreen(void)
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
- REG_BG1VOFS = namingScreenData.bg1vOffset;
- REG_BG2VOFS = namingScreenData.bg2vOffset;
+ REG_BG1VOFS = namingScreenDataPtr->bg1vOffset;
+ REG_BG2VOFS = namingScreenDataPtr->bg2vOffset;
REG_BG1CNT &= 0xFFFC;
- REG_BG1CNT |= namingScreenData.unk8;
+ REG_BG1CNT |= namingScreenDataPtr->unk8;
REG_BG2CNT &= 0xFFFC;
- REG_BG2CNT |= namingScreenData.unkA;
+ REG_BG2CNT |= namingScreenDataPtr->unkA;
}
static void StoreNamingScreenParameters(u8 templateNum, u8 *destBuffer, u16 c, u16 d, u32 e, MainCallback returnCallback)
@@ -228,12 +223,12 @@ static void GetNamingScreenParameters(void)
taskId = FindTaskIdByFunc(Task_DoNothing);
task = &gTasks[taskId];
- namingScreenData.templateNum = task->data[0];
- namingScreenData.unk3E = task->data[1];
- namingScreenData.unk40 = task->data[2];
- namingScreenData.unk42 = (task->data[3] << 16) | (u16)task->data[4];
- LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&namingScreenData.destBuffer);
- LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&namingScreenData.returnCallback);
+ namingScreenDataPtr->templateNum = task->data[0];
+ namingScreenDataPtr->unk3E = task->data[1];
+ namingScreenDataPtr->unk40 = task->data[2];
+ namingScreenDataPtr->unk42 = (task->data[3] << 16) | (u16)task->data[4];
+ LoadWordFromTwoHalfwords(&task->data[5], (u32 *)&namingScreenDataPtr->destBuffer);
+ LoadWordFromTwoHalfwords(&task->data[7], (u32 *)&namingScreenDataPtr->returnCallback);
DestroyTask(taskId);
}
@@ -311,20 +306,20 @@ static const struct NamingScreenTemplate *const sNamingScreenTemplates[]; //for
static void NamingScreen_Init(void)
{
GetNamingScreenParameters();
- namingScreenData.state = 0;
- namingScreenData.bg1vOffset = 0;
- namingScreenData.bg2vOffset = 0;
- namingScreenData.unk8 = 1;
- namingScreenData.unkA = 2;
- namingScreenData.unkC = 0;
- namingScreenData.unkD = 1;
- namingScreenData.template = sNamingScreenTemplates[namingScreenData.templateNum];
- namingScreenData.currentPage = namingScreenData.template->unk4;
- namingScreenData.unk2 = 14 - namingScreenData.template->maxChars / 2;
- namingScreenData.unk3C = gKeyRepeatStartDelay;
- memset(namingScreenData.textBuffer, 0xFF, sizeof(namingScreenData.textBuffer));
- if (namingScreenData.template->unk0 != 0)
- StringCopy(namingScreenData.textBuffer, namingScreenData.destBuffer);
+ namingScreenDataPtr->state = 0;
+ namingScreenDataPtr->bg1vOffset = 0;
+ namingScreenDataPtr->bg2vOffset = 0;
+ namingScreenDataPtr->unk8 = 1;
+ namingScreenDataPtr->unkA = 2;
+ namingScreenDataPtr->unkC = 0;
+ namingScreenDataPtr->unkD = 1;
+ namingScreenDataPtr->template = sNamingScreenTemplates[namingScreenDataPtr->templateNum];
+ namingScreenDataPtr->currentPage = namingScreenDataPtr->template->unk4;
+ namingScreenDataPtr->unk2 = 14 - namingScreenDataPtr->template->maxChars / 2;
+ namingScreenDataPtr->unk3C = gKeyRepeatStartDelay;
+ memset(namingScreenDataPtr->textBuffer, 0xFF, sizeof(namingScreenDataPtr->textBuffer));
+ if (namingScreenDataPtr->template->unk0 != 0)
+ StringCopy(namingScreenDataPtr->textBuffer, namingScreenDataPtr->destBuffer);
gKeyRepeatStartDelay = 16;
}
@@ -408,14 +403,14 @@ static void sub_80B5E50(void)
static void Task_NamingScreenMain(u8 taskId)
{
- while (sMainStateFuncs[namingScreenData.state](&gTasks[taskId]) != 0)
+ while (sMainStateFuncs[namingScreenDataPtr->state](&gTasks[taskId]) != 0)
;
}
static bool8 MainState_BeginFadeIn(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- namingScreenData.state++;
+ namingScreenDataPtr->state++;
return 0;
}
@@ -425,7 +420,7 @@ static bool8 MainState_WaitFadeIn(struct Task *task)
{
SetInputState(INPUT_STATE_ENABLED);
sub_80B68D8(1);
- namingScreenData.state++;
+ namingScreenDataPtr->state++;
}
return FALSE;
}
@@ -441,7 +436,7 @@ static bool8 MainState_MoveToOKButton(struct Task *task)
{
SetInputState(INPUT_STATE_ENABLED);
MoveCursorToOKButton();
- namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
+ namingScreenDataPtr->state = MAIN_STATE_HANDLE_INPUT;
}
return FALSE;
}
@@ -454,7 +449,7 @@ static bool8 MainState_StartPageSwap(struct Task *task)
sub_80B6888(1);
sub_80B6460(0, 0, 1);
PlaySE(SE_WIN_OPEN);
- namingScreenData.state = MAIN_STATE_WAIT_PAGE_SWAP;
+ namingScreenDataPtr->state = MAIN_STATE_WAIT_PAGE_SWAP;
return FALSE;
}
@@ -465,18 +460,18 @@ static bool8 MainState_WaitPageSwap(struct Task *task)
if (IsPageSwapAnimNotInProgress())
{
- namingScreenData.state = MAIN_STATE_HANDLE_INPUT;
- namingScreenData.currentPage++;
- namingScreenData.currentPage %= 3;
+ namingScreenDataPtr->state = MAIN_STATE_HANDLE_INPUT;
+ namingScreenDataPtr->currentPage++;
+ namingScreenDataPtr->currentPage %= 3;
sub_80B7614();
sub_80B77F8();
SetInputState(INPUT_STATE_ENABLED);
GetCursorPos(&cursorX, &cursorY);
#if ENGLISH
- if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ if (namingScreenDataPtr->currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
cursorX = 5;
#elif GERMAN
- if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 7 || cursorX == 8))
+ if (namingScreenDataPtr->currentPage == PAGE_OTHERS && (cursorX == 7 || cursorX == 8))
cursorX = 6;
#endif
SetCursorPos(cursorX, cursorY);
@@ -491,17 +486,17 @@ static bool8 MainState_6(struct Task *task)
SetInputState(INPUT_STATE_DISABLED);
sub_80B68D8(0);
sub_80B6460(3, 0, 1);
- gKeyRepeatStartDelay = namingScreenData.unk3C;
- if (namingScreenData.templateNum == NAMING_SCREEN_TEMPLATE_MON_NAME
+ gKeyRepeatStartDelay = namingScreenDataPtr->unk3C;
+ if (namingScreenDataPtr->templateNum == NAMING_SCREEN_TEMPLATE_MON_NAME
&& CalculatePlayerPartyCount() >= 6)
{
DisplaySentToPCMessage();
- namingScreenData.state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE;
+ namingScreenDataPtr->state = MAIN_STATE_UPDATE_SENT_TO_PC_MESSAGE;
return FALSE;
}
else
{
- namingScreenData.state = MAIN_STATE_BEGIN_FADE_OUT;
+ namingScreenDataPtr->state = MAIN_STATE_BEGIN_FADE_OUT;
return TRUE; //Exit the naming screen
}
}
@@ -509,21 +504,21 @@ static bool8 MainState_6(struct Task *task)
static bool8 MainState_UpdateSentToPCMessage(struct Task *task)
{
if (MenuUpdateWindowText())
- namingScreenData.state++;
+ namingScreenDataPtr->state++;
return FALSE;
}
static bool8 MainState_BeginFadeInOut(struct Task *task)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- namingScreenData.state++;
+ namingScreenDataPtr->state++;
return FALSE;
}
static bool8 MainState_WaitFadeOutAndExit(struct Task *task)
{
if (!gPaletteFade.active)
- SetMainCallback2(namingScreenData.returnCallback);
+ SetMainCallback2(namingScreenDataPtr->returnCallback);
return FALSE;
}
@@ -584,7 +579,7 @@ static bool8 KeyboardKeyHandler_Character(u8 event)
if (var)
{
SetInputState(INPUT_STATE_DISABLED);
- namingScreenData.state = MAIN_STATE_MOVE_TO_OK_BUTTON;
+ namingScreenDataPtr->state = MAIN_STATE_MOVE_TO_OK_BUTTON;
}
}
return FALSE;
@@ -613,7 +608,7 @@ static bool8 KeyboardKeyHandler_OK(u8 event)
if (event == KBEVENT_PRESSED_A)
{
PlaySE(SE_SELECT);
- namingScreenData.state = MAIN_STATE_6;
+ namingScreenDataPtr->state = MAIN_STATE_6;
return TRUE;
}
else
@@ -622,7 +617,7 @@ static bool8 KeyboardKeyHandler_OK(u8 event)
static bool8 sub_80B61C8(void)
{
- namingScreenData.state = MAIN_STATE_START_PAGE_SWAP;
+ namingScreenDataPtr->state = MAIN_STATE_START_PAGE_SWAP;
return TRUE;
}
@@ -764,9 +759,9 @@ static void HandleDpadMovement(struct Task *task)
{
//The "others" page only has 5 columns
#if ENGLISH
- if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
+ if (namingScreenDataPtr->currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7))
#elif GERMAN
- if (namingScreenData.currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7 || cursorX == 8))
+ if (namingScreenDataPtr->currentPage == PAGE_OTHERS && (cursorX == 6 || cursorX == 7 || cursorX == 8))
#endif
{
if (sDpadDeltaX[dpadDir] > 0)
@@ -948,8 +943,8 @@ static void Task_HandlePageSwapAnim(u8 taskId)
static bool8 PageSwapAnimState_Init(struct Task *task)
{
- namingScreenData.bg1vOffset = 0;
- namingScreenData.bg2vOffset = 0;
+ namingScreenDataPtr->bg1vOffset = 0;
+ namingScreenDataPtr->bg2vOffset = 0;
task->tState++;
return 0;
}
@@ -958,19 +953,19 @@ static bool8 PageSwapAnimState_1(struct Task *task)
{
u16 *const arr[] =
{
- &namingScreenData.bg2vOffset,
- &namingScreenData.bg1vOffset
+ &namingScreenDataPtr->bg2vOffset,
+ &namingScreenDataPtr->bg1vOffset
};
task->tFrameCount += 4;
- *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
- *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ *arr[namingScreenDataPtr->unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenDataPtr->unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
if (task->tFrameCount >= 64)
{
- u8 temp = namingScreenData.unk8; //Why u8 and not u16?
+ u8 temp = namingScreenDataPtr->unk8; //Why u8 and not u16?
- namingScreenData.unk8 = namingScreenData.unkA;
- namingScreenData.unkA = temp;
+ namingScreenDataPtr->unk8 = namingScreenDataPtr->unkA;
+ namingScreenDataPtr->unkA = temp;
task->tState++;
}
return 0;
@@ -978,17 +973,17 @@ static bool8 PageSwapAnimState_1(struct Task *task)
static bool8 PageSwapAnimState_2(struct Task *task)
{
- u16 *const arr[] = {&namingScreenData.bg2vOffset, &namingScreenData.bg1vOffset};
+ u16 *const arr[] = {&namingScreenDataPtr->bg2vOffset, &namingScreenDataPtr->bg1vOffset};
task->tFrameCount += 4;
- *arr[namingScreenData.unkC] = Sin(task->tFrameCount, 40);
- *arr[namingScreenData.unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
+ *arr[namingScreenDataPtr->unkC] = Sin(task->tFrameCount, 40);
+ *arr[namingScreenDataPtr->unkD] = Sin((task->tFrameCount + 128) & 0xFF, 40);
if (task->tFrameCount >= 128)
{
- u8 temp = namingScreenData.unkC;
+ u8 temp = namingScreenDataPtr->unkC;
- namingScreenData.unkC = namingScreenData.unkD;
- namingScreenData.unkD = temp;
+ namingScreenDataPtr->unkC = namingScreenDataPtr->unkD;
+ namingScreenDataPtr->unkD = temp;
task->tState++;
}
return 0;
@@ -1009,11 +1004,11 @@ static bool8 PageSwapAnimState_Done(struct Task *task)
static void CursorInit(void)
{
- namingScreenData.cursorSpriteId = CreateSprite(&gSpriteTemplate_83CE640, 0, 0, 0);
- gSprites[namingScreenData.cursorSpriteId].oam.priority = 1;
- gSprites[namingScreenData.cursorSpriteId].oam.objMode = 1;
- gSprites[namingScreenData.cursorSpriteId].data[6] = 1;
- gSprites[namingScreenData.cursorSpriteId].data[6] = 2;
+ namingScreenDataPtr->cursorSpriteId = CreateSprite(&gSpriteTemplate_83CE640, 0, 0, 0);
+ gSprites[namingScreenDataPtr->cursorSpriteId].oam.priority = 1;
+ gSprites[namingScreenDataPtr->cursorSpriteId].oam.objMode = 1;
+ gSprites[namingScreenDataPtr->cursorSpriteId].data[6] = 1;
+ gSprites[namingScreenDataPtr->cursorSpriteId].data[6] = 2;
SetCursorPos(0, 0);
}
@@ -1031,12 +1026,12 @@ static const u8 sKeyboardSymbolPositions[][COLUMN_COUNT] = {
static u8 CursorColToKeyboardCol(s16 x)
{
- return sKeyboardSymbolPositions[namingScreenData.currentPage][x];
+ return sKeyboardSymbolPositions[namingScreenDataPtr->currentPage][x];
}
static void SetCursorPos(s16 x, s16 y)
{
- struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
+ struct Sprite *cursorSprite = &gSprites[namingScreenDataPtr->cursorSpriteId];
cursorSprite->pos1.x = CursorColToKeyboardCol(x) * 8 + 27;
cursorSprite->pos1.y = y * 16 + 80;
@@ -1048,7 +1043,7 @@ static void SetCursorPos(s16 x, s16 y)
static void GetCursorPos(s16 *x, s16 *y)
{
- struct Sprite *cursorSprite = &gSprites[namingScreenData.cursorSpriteId];
+ struct Sprite *cursorSprite = &gSprites[namingScreenDataPtr->cursorSpriteId];
*x = cursorSprite->data[0];
*y = cursorSprite->data[1];
@@ -1061,25 +1056,25 @@ static void MoveCursorToOKButton(void)
static void sub_80B6888(u8 a)
{
- gSprites[namingScreenData.cursorSpriteId].data[4] &= -256;
- gSprites[namingScreenData.cursorSpriteId].data[4] |= a;
- StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 0);
+ gSprites[namingScreenDataPtr->cursorSpriteId].data[4] &= -256;
+ gSprites[namingScreenDataPtr->cursorSpriteId].data[4] |= a;
+ StartSpriteAnim(&gSprites[namingScreenDataPtr->cursorSpriteId], 0);
}
static void sub_80B68D8(u8 a)
{
- gSprites[namingScreenData.cursorSpriteId].data[4] &= 0xFF;
- gSprites[namingScreenData.cursorSpriteId].data[4] |= a << 8;
+ gSprites[namingScreenDataPtr->cursorSpriteId].data[4] &= 0xFF;
+ gSprites[namingScreenDataPtr->cursorSpriteId].data[4] |= a << 8;
}
static void sub_80B6914(void)
{
- StartSpriteAnim(&gSprites[namingScreenData.cursorSpriteId], 1);
+ StartSpriteAnim(&gSprites[namingScreenDataPtr->cursorSpriteId], 1);
}
static bool8 IsCursorAnimFinished(void)
{
- return gSprites[namingScreenData.cursorSpriteId].animEnded;
+ return gSprites[namingScreenDataPtr->cursorSpriteId].animEnded;
}
static u8 GetKeyRoleAtCursorPos(void)
@@ -1134,7 +1129,7 @@ static void sub_80B6A80(void)
u8 spriteId3;
spriteId1 = CreateSprite(&gSpriteTemplate_83CE5C8, 0xCC, 0x50, 0);
- namingScreenData.unk10 = spriteId1;
+ namingScreenDataPtr->unk10 = spriteId1;
SetSubspriteTables(&gSprites[spriteId1], gSubspriteTables_83CE558);
spriteId2 = CreateSprite(&gSpriteTemplate_83CE5F8, 0xCC, 0x4C, 1);
@@ -1148,10 +1143,10 @@ static void sub_80B6A80(void)
static void sub_80B6B14(void)
{
- struct Sprite *sprite = &gSprites[namingScreenData.unk10];
+ struct Sprite *sprite = &gSprites[namingScreenDataPtr->unk10];
sprite->data[0] = 2;
- sprite->data[1] = namingScreenData.currentPage;
+ sprite->data[1] = namingScreenDataPtr->currentPage;
}
static u8 sub_80B6B5C(struct Sprite *);
@@ -1178,7 +1173,7 @@ static u8 sub_80B6B5C(struct Sprite *sprite)
struct Sprite *sprite1 = &gSprites[sprite->data[6]];
struct Sprite *sprite2 = &gSprites[sprite->data[7]];
- sub_80B6C48(namingScreenData.currentPage, sprite1, sprite2);
+ sub_80B6C48(namingScreenDataPtr->currentPage, sprite1, sprite2);
sprite->data[0]++;
return 0;
}
@@ -1247,11 +1242,11 @@ static void sub_80B6D04(void)
s16 r1;
u8 i;
- r1 = (namingScreenData.unk2 - 1) * 8 + 4;
+ r1 = (namingScreenDataPtr->unk2 - 1) * 8 + 4;
spriteId = CreateSprite(&gSpriteTemplate_83CE658, r1, 0x28, 0);
gSprites[spriteId].oam.priority = 3;
- r1 = namingScreenData.unk2 * 8 + 4;
- for (i = 0; i < namingScreenData.template->maxChars; i++, r1 += 8)
+ r1 = namingScreenDataPtr->unk2 * 8 + 4;
+ for (i = 0; i < namingScreenDataPtr->template->maxChars; i++, r1 += 8)
{
spriteId = CreateSprite(&gSpriteTemplate_83CE670, r1, 0x2C, 0);
gSprites[spriteId].oam.priority = 3;
@@ -1312,7 +1307,7 @@ static void (*const gUnknown_083CE2E0[])(void) =
static void sub_80B6E44(void)
{
- gUnknown_083CE2E0[namingScreenData.template->unk2]();
+ gUnknown_083CE2E0[namingScreenDataPtr->template->unk2]();
}
static void nullsub_40(void)
@@ -1324,7 +1319,7 @@ static void sub_80B6E68(void)
u8 rivalGfxId;
u8 spriteId;
- rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, namingScreenData.unk3E);
+ rivalGfxId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, namingScreenDataPtr->unk3E);
spriteId = AddPseudoFieldObject(rivalGfxId, SpriteCallbackDummy, 0x38, 0x18, 0);
gSprites[spriteId].oam.priority = 3;
StartSpriteAnim(&gSprites[spriteId], 4);
@@ -1344,7 +1339,7 @@ static void sub_80B6EFC(void)
u8 spriteId;
sub_809D51C();
- spriteId = CreateMonIcon(namingScreenData.unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, namingScreenData.unk42);
+ spriteId = CreateMonIcon(namingScreenDataPtr->unk3E, SpriteCallbackDummy, 0x34, 0x18, 0, namingScreenDataPtr->unk42);
gSprites[spriteId].oam.priority = 3;
}
@@ -1352,21 +1347,21 @@ static u8 GetTextCaretPosition(void)
{
u8 i;
- for (i = 0; i < namingScreenData.template->maxChars; i++)
+ for (i = 0; i < namingScreenDataPtr->template->maxChars; i++)
{
- if (namingScreenData.textBuffer[i] == EOS)
+ if (namingScreenDataPtr->textBuffer[i] == EOS)
return i;
}
- return namingScreenData.template->maxChars - 1;
+ return namingScreenDataPtr->template->maxChars - 1;
}
static u8 GetPreviousTextCaretPosition(void)
{
s8 i;
- for (i = namingScreenData.template->maxChars - 1; i > 0; i--)
+ for (i = namingScreenDataPtr->template->maxChars - 1; i > 0; i--)
{
- if (namingScreenData.textBuffer[i] != EOS)
+ if (namingScreenDataPtr->textBuffer[i] != EOS)
return i;
}
return 0;
@@ -1378,9 +1373,9 @@ static void DeleteTextCharacter(void)
u8 var2;
index = GetPreviousTextCaretPosition();
- namingScreenData.textBuffer[index] = 0;
+ namingScreenDataPtr->textBuffer[index] = 0;
sub_80B7960();
- namingScreenData.textBuffer[index] = EOS;
+ namingScreenDataPtr->textBuffer[index] = EOS;
var2 = GetKeyRoleAtCursorPos();
if (var2 == 0 || var2 == 2)
sub_80B6460(1, 0, 1);
@@ -1408,7 +1403,7 @@ static bool8 sub_80B7004(void)
PlaySE(SE_SELECT);
if (r4)
{
- if (GetPreviousTextCaretPosition() == namingScreenData.template->maxChars - 1)
+ if (GetPreviousTextCaretPosition() == namingScreenDataPtr->template->maxChars - 1)
return TRUE;
}
return FALSE;
@@ -1420,7 +1415,7 @@ static void sub_80B7090(void) // DoInput?
u8 r4;
r5 = GetPreviousTextCaretPosition();
- r4 = namingScreenData.textBuffer[r5];
+ r4 = namingScreenDataPtr->textBuffer[r5];
if (sub_80B7198(r4))
{
if (sub_80B7264(r4))
@@ -1445,7 +1440,7 @@ static bool8 sub_80B7104(void)
u8 r4;
r5 = GetPreviousTextCaretPosition();
- r4 = namingScreenData.textBuffer[r5];
+ r4 = namingScreenDataPtr->textBuffer[r5];
if (sub_80B720C(r4))
{
sub_80B72A4(r4, r5);
@@ -1460,7 +1455,7 @@ static bool8 sub_80B713C(void)
u8 r4;
r5 = GetPreviousTextCaretPosition();
- r4 = namingScreenData.textBuffer[r5];
+ r4 = namingScreenDataPtr->textBuffer[r5];
if (sub_80B7264(r4))
{
sub_80B7370(r4, r5);
@@ -1473,7 +1468,7 @@ static void AddTextCharacter(u8 ch)
{
u8 index = GetTextCaretPosition();
- namingScreenData.textBuffer[index] = ch;
+ namingScreenDataPtr->textBuffer[index] = ch;
}
static bool8 sub_80B7198(u8 a)
@@ -1545,7 +1540,7 @@ static void sub_80B72A4(u8 a, u8 b)
chr = a + 0x2C;
else if (a >= 155 && a <= 159)
chr = a + 0xFB;
- namingScreenData.textBuffer[b] = chr;
+ namingScreenDataPtr->textBuffer[b] = chr;
}
static void sub_80B7370(u8 a, u8 b)
@@ -1560,7 +1555,7 @@ static void sub_80B7370(u8 a, u8 b)
chr = a + 0x31;
else if (a >= 150 && a <= 154)
chr = a + 5;
- namingScreenData.textBuffer[b] = chr;
+ namingScreenDataPtr->textBuffer[b] = chr;
}
static void sub_80B73CC(u8 a, u8 b)
@@ -1583,7 +1578,7 @@ static void sub_80B73CC(u8 a, u8 b)
chr = a + 0xCF;
else if (a >= 150 && a <= 154)
chr = a + 0xD4;
- namingScreenData.textBuffer[b] = chr;
+ namingScreenDataPtr->textBuffer[b] = chr;
}
static void sub_80B7474(u8 a, u8 b)
@@ -1594,18 +1589,18 @@ static void sub_80B7474(u8 a, u8 b)
chr = a + 0xCF;
else if (a >= 155 && a <= 159)
chr = a + 0xCF;
- namingScreenData.textBuffer[b] = chr;
+ namingScreenDataPtr->textBuffer[b] = chr;
}
static void sub_80B74B0(void)
{
u8 i;
- for (i = 0; i < namingScreenData.template->maxChars; i++)
+ for (i = 0; i < namingScreenDataPtr->template->maxChars; i++)
{
- if (namingScreenData.textBuffer[i] != 0 && namingScreenData.textBuffer[i] != 0xFF)
+ if (namingScreenDataPtr->textBuffer[i] != 0 && namingScreenDataPtr->textBuffer[i] != 0xFF)
{
- StringCopyN(namingScreenData.destBuffer, namingScreenData.textBuffer, namingScreenData.template->maxChars + 1);
+ StringCopyN(namingScreenDataPtr->destBuffer, namingScreenDataPtr->textBuffer, namingScreenDataPtr->template->maxChars + 1);
break;
}
}
@@ -1613,7 +1608,7 @@ static void sub_80B74B0(void)
static void DisplaySentToPCMessage(void)
{
- StringCopy(gStringVar1, namingScreenData.destBuffer);
+ StringCopy(gStringVar1, namingScreenDataPtr->destBuffer);
StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC);
BasicInitMenuWindow(&gWindowConfig_81E6E88);
MenuDisplayMessageBox();
@@ -1670,8 +1665,8 @@ static void sub_80B75C4(void)
(u16 *)(VRAM + 0xE800),
};
- gUnknown_083CE2F0[namingScreenData.currentPage][0](arr[namingScreenData.unkC]);
- gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+ gUnknown_083CE2F0[namingScreenDataPtr->currentPage][0](arr[namingScreenDataPtr->unkC]);
+ gUnknown_083CE2F0[namingScreenDataPtr->currentPage][1](arr[namingScreenDataPtr->unkD]);
}
static void sub_80B7614(void)
@@ -1682,7 +1677,7 @@ static void sub_80B7614(void)
(u16 *)(VRAM + 0xE800),
};
- gUnknown_083CE2F0[namingScreenData.currentPage][1](arr[namingScreenData.unkD]);
+ gUnknown_083CE2F0[namingScreenDataPtr->currentPage][1](arr[namingScreenDataPtr->unkD]);
}
static void sub_80B7650(u16 *vramBuffer)
@@ -1736,12 +1731,12 @@ static void sub_80B76E0(u16 *vramBuffer, const u16 *src)
static void sub_80B772C(void)
{
- nullsub_20(namingScreenData.currentPage, namingScreenData.unkC);
+ nullsub_20(namingScreenDataPtr->currentPage, namingScreenDataPtr->unkC);
}
static void sub_80B7740(void)
{
- nullsub_20((namingScreenData.currentPage + 1) % 3, namingScreenData.unkD);
+ nullsub_20((namingScreenDataPtr->currentPage + 1) % 3, namingScreenDataPtr->unkD);
}
static void nullsub_20(u8 a, u8 b)
@@ -1802,23 +1797,23 @@ static const u8 sKeyboardCharacters[][4][20]; //forward declaration
static u8 GetCharAtKeyboardPos(s16 a, s16 b)
{
- return sKeyboardCharacters[namingScreenData.currentPage][b][a];
+ return sKeyboardCharacters[namingScreenDataPtr->currentPage][b][a];
}
static void sub_80B7794(void)
{
- BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][0][namingScreenData.unkC]);
- gUnknown_083CE310[namingScreenData.currentPage][0]();
- BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
- gUnknown_083CE310[namingScreenData.currentPage][1]();
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][0][namingScreenDataPtr->unkC]);
+ gUnknown_083CE310[namingScreenDataPtr->currentPage][0]();
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][1][namingScreenDataPtr->unkD]);
+ gUnknown_083CE310[namingScreenDataPtr->currentPage][1]();
sub_80B772C();
sub_80B7740();
}
static void sub_80B77F8(void)
{
- BasicInitMenuWindow(gUnknown_083CE328[namingScreenData.currentPage][1][namingScreenData.unkD]);
- gUnknown_083CE310[namingScreenData.currentPage][1]();
+ BasicInitMenuWindow(gUnknown_083CE328[namingScreenDataPtr->currentPage][1][namingScreenDataPtr->unkD]);
+ gUnknown_083CE310[namingScreenDataPtr->currentPage][1]();
sub_80B7740();
}
@@ -1849,9 +1844,9 @@ static void PrintKeyboardCharacters(u8 page) //print letters on page
static void sub_80B78A8(void)
{
BasicInitMenuWindow(&gWindowConfig_81E6F4C);
- gUnknown_083CE358[namingScreenData.templateNum]();
- gUnknown_083CE368[namingScreenData.template->unk3]();
- MenuPrint(namingScreenData.template->title, 9, 2);
+ gUnknown_083CE358[namingScreenDataPtr->templateNum]();
+ gUnknown_083CE368[namingScreenDataPtr->template->unk3]();
+ MenuPrint(namingScreenDataPtr->template->title, 9, 2);
}
static void nullsub_61(void)
@@ -1860,7 +1855,7 @@ static void nullsub_61(void)
static void sub_80B78F8(void)
{
- StringCopy(gStringVar1, gSpeciesNames[(s16)namingScreenData.unk3E]);
+ StringCopy(gStringVar1, gSpeciesNames[(s16)namingScreenDataPtr->unk3E]);
}
static void nullsub_62(void)
@@ -1871,9 +1866,9 @@ static void sub_80B7924(void)
{
u8 genderSymbol[2] = _("♂");
- if ((s16)namingScreenData.unk40 != MON_GENDERLESS)
+ if ((s16)namingScreenDataPtr->unk40 != MON_GENDERLESS)
{
- if ((s16)namingScreenData.unk40 == MON_FEMALE)
+ if ((s16)namingScreenDataPtr->unk40 == MON_FEMALE)
genderSymbol[0] = 0xB6; //female symbol
MenuPrint(genderSymbol, 0x14, 4);
}
@@ -1890,9 +1885,9 @@ static void sub_80B7960(void)
string[4] = 0x11;
string[5] = 1;
string += 6;
- StringCopy(string, namingScreenData.textBuffer);
+ StringCopy(string, namingScreenDataPtr->textBuffer);
BasicInitMenuWindow(&gWindowConfig_81E6F4C);
- MenuPrint(gStringVar1, namingScreenData.unk2, 4);
+ MenuPrint(gStringVar1, namingScreenDataPtr->unk2, 4);
}
//--------------------------------------------------
@@ -2034,4 +2029,162 @@ const struct OamData gOamData_83CE4A8 =
.affineParam = 0,
};
-//TODO: dump sprite data
+
+const struct Subsprite gSubspriteTable_83CE4B0[] = {
+ { -20, -16, ST_OAM_H_RECTANGLE, 1, 0, 1 },
+ { 12, -16, ST_OAM_SQUARE, 0, 4, 1 },
+ { -20, -8, ST_OAM_H_RECTANGLE, 1, 5, 1 },
+ { 12, -8, ST_OAM_SQUARE, 0, 9, 1 },
+ { -20, 0, ST_OAM_H_RECTANGLE, 1, 10, 1 },
+ { 12, 0, ST_OAM_SQUARE, 0, 14, 1 },
+ { -20, 8, ST_OAM_H_RECTANGLE, 1, 15, 1 },
+ { 12, 8, ST_OAM_SQUARE, 0, 19, 1 }
+};
+
+const struct Subsprite gSubspriteTable_83CE4F0[] = {
+ { -12, -4, ST_OAM_SQUARE, 0, 0, 1 },
+ { 4, -4, ST_OAM_SQUARE, 0, 1, 1 }
+};
+
+const struct Subsprite gSubspriteTable_83CE500[] = {
+ { -12, -4, ST_OAM_H_RECTANGLE, 0, 0, 1 },
+ { 4, -4, ST_OAM_SQUARE, 0, 2, 1 }
+};
+
+const struct Subsprite gSubspriteTable_83CE510[] = {
+ { -20, -12, ST_OAM_H_RECTANGLE, 1, 0, 1 },
+ { 12, -12, ST_OAM_SQUARE, 0, 4, 1 },
+ { -20, -4, ST_OAM_H_RECTANGLE, 1, 5, 1 },
+ { 12, -4, ST_OAM_SQUARE, 0, 9, 1 },
+ { -20, 4, ST_OAM_H_RECTANGLE, 1, 10, 1 },
+ { 12, 4, ST_OAM_SQUARE, 0, 14, 1 }
+};
+
+const struct Subsprite gSubspriteTable_83CE540[] = {
+ { -8, -12, ST_OAM_H_RECTANGLE, 0, 0, 3 },
+ { -8, -4, ST_OAM_H_RECTANGLE, 0, 2, 3 },
+ { -8, 4, ST_OAM_H_RECTANGLE, 0, 4, 3 }
+};
+
+const struct SubspriteTable gSubspriteTables_83CE558[] = {
+ { 8, gSubspriteTable_83CE4B0 }
+};
+
+const struct SubspriteTable gSubspriteTables_83CE560[] = {
+ { 2, gSubspriteTable_83CE500 },
+ { 2, gSubspriteTable_83CE500 },
+ { 2, gSubspriteTable_83CE500 }
+};
+
+const struct SubspriteTable gSubspriteTables_83CE578[] = {
+ { 6, gSubspriteTable_83CE510 }
+};
+
+const struct SubspriteTable gSubspriteTables_83CE580[] = {
+ { 3, gSubspriteTable_83CE540 }
+};
+
+const struct SpriteFrameImage gSpriteImageTable_83CE588[] = {
+ { gSpriteImage_83CE094, 0xc0 },
+ { gSpriteImage_83CE154, 0xc0 }
+};
+
+const union AnimCmd gSpriteAnim_83CE598[] = {
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gSpriteAnim_83CE5A0[] = {
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(8, 8),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83CE5AC[] = {
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gSpriteAnimTable_83CE5B8[] = {
+ gSpriteAnim_83CE598
+};
+
+const union AnimCmd *const gSpriteAnimTable_83CE5BC[] = {
+ gSpriteAnim_83CE598,
+ gSpriteAnim_83CE5A0
+};
+
+const union AnimCmd *const gSpriteAnimTable_83CE5C4[] = {
+ gSpriteAnim_83CE5AC
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE5C8 = {
+ 2, 4, &gOamData_83CE498, gSpriteAnimTable_83CE5B8, NULL, gDummySpriteAffineAnimTable, sub_80B6B34
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE5E0 = {
+ 3, 1, &gOamData_83CE4A8, gSpriteAnimTable_83CE5B8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE5F8 = {
+ 4, 4, &gOamData_83CE498, gSpriteAnimTable_83CE5B8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE610 = {
+ 0, 6, &gOamData_83CE498, gSpriteAnimTable_83CE5B8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE628 = {
+ 1, 6, &gOamData_83CE498, gSpriteAnimTable_83CE5B8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE640 = {
+ 7, 5, &gOamData_83CE4A0, gSpriteAnimTable_83CE5BC, NULL, gDummySpriteAffineAnimTable, sub_80B6998
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE658 = {
+ 10, 3, &gOamData_83CE498, gSpriteAnimTable_83CE5B8, NULL, gDummySpriteAffineAnimTable, sub_80B6D9C
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE670 = {
+ 11, 3, &gOamData_83CE498, gSpriteAnimTable_83CE5B8, NULL, gDummySpriteAffineAnimTable, sub_80B6DE8
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CE688 = {
+ 0xFFFF, 0, &gOamData_83CE498, gSpriteAnimTable_83CE5C4, gSpriteImageTable_83CE588, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+const struct SpriteSheet gUnknown_083CE6A0[] = {
+ { gNamingScreenBackButtonTiles, 0x1E0, 0 },
+ { gNamingScreenOKButtonTiles, 0x1E0, 1 },
+ { gNamingScreenChangeKeyboardBoxTiles, 0x280, 2 },
+ { gNamingScreenChangeKeyboardButtonTiles, 0x100, 3 },
+ { gNamingScreenLowerTextTiles, 0x60, 4 },
+ { gNamingScreenUpperTextTiles, 0x60, 5 },
+ { gNamingScreenOthersTextTiles, 0x60, 6 },
+ { gNamingScreenCursorTiles, 0x80, 7 },
+ { gNamingScreenActiveCursorSmallTiles, 0x80, 8 },
+ { gNamingScreenActiveCursorBigTiles, 0x80, 9 },
+ { gNamingScreenRightPointingTriangleTiles, 0x20, 10 },
+ { gNamingScreenUnderscoreTiles, 0x20, 11 },
+ {}
+};
+
+const struct SpritePalette gUnknown_083CE708[] = {
+ {gNamingScreenPalettes[0], 0},
+ {gNamingScreenPalettes[1], 1},
+ {gNamingScreenPalettes[2], 2},
+ {gNamingScreenPalettes[3], 3},
+ {gNamingScreenPalettes[4], 4},
+ {gNamingScreenPalettes[5], 5},
+ {gNamingScreenPalettes[4], 6},
+ {}
+};
+
+const u16 gUnknown_083CE748[] = INCBIN_U16("graphics/naming_screen/lower_keyboard_map.bin");
+
+const u16 gUnknown_083CEBF8[] = INCBIN_U16("graphics/naming_screen/upper_keyboard_map.bin");
+
+const u16 gUnknown_083CF0A8[] = INCBIN_U16("graphics/naming_screen/others_keyboard_map.bin");
+
diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c
index 6cb1e54b2..997a257f5 100644
--- a/src/engine/record_mixing.c
+++ b/src/engine/record_mixing.c
@@ -119,7 +119,7 @@ void Task_RecordMixing_Main(u8 taskId)
{
case 0: // init
sub_8007270(gSpecialVar_0x8005);
- VarSet(VAR_0x4000, 1);
+ VarSet(VAR_TEMP_0, 1);
gUnknown_03000718 = 0;
RecordMixing_PrepareExchangePacket();
CreateRecordMixingSprite();
@@ -1016,26 +1016,26 @@ void sub_80B9F3C(u16 *a, u8 b)
{
if (!CheckBagHasItem(*a, 1) && !CheckPCHasItem(*a, 1) && AddBagItem(*a, 1))
{
- VarSet(VAR_0x4001, *a);
+ VarSet(VAR_TEMP_1, *a);
StringCopy(gStringVar1, gLinkPlayers[0].name);
if (*a == ITEM_EON_TICKET)
FlagSet(FLAG_SYS_HAS_EON_TICKET);
}
else
{
- VarSet(VAR_0x4001, ITEM_NONE);
+ VarSet(VAR_TEMP_1, ITEM_NONE);
}
}
else
{
if (AddBagItem(*a, 1) == TRUE)
{
- VarSet(VAR_0x4001, *a);
+ VarSet(VAR_TEMP_1, *a);
StringCopy(gStringVar1, gLinkPlayers[0].name);
}
else
{
- VarSet(VAR_0x4001, ITEM_NONE);
+ VarSet(VAR_TEMP_1, ITEM_NONE);
}
}
}
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index 207fa5f77..dcd1197cb 100644
--- a/src/engine/trainer_card.c
+++ b/src/engine/trainer_card.c
@@ -287,10 +287,7 @@ void sub_8093324(void)
if (ewram0_2.var_1)
{
- struct TrainerCard(*trainerCards)[4] = &gTrainerCards;
- s16 var = task->data[TD_1];
- struct TrainerCard *dest = &(*trainerCards)[var];
- memcpy(&ewram0_2.var_64, dest, sizeof(struct TrainerCard));
+ ewram0_2.var_64 = gTrainerCards[task->data[TD_1]];
}
else
{
diff --git a/src/field/bard_music.c b/src/field/bard_music.c
index daf003233..5c48749cf 100644
--- a/src/field/bard_music.c
+++ b/src/field/bard_music.c
@@ -11,29 +11,185 @@ struct BardSound
/*0x06*/ u16 var06;
};
-extern const struct BardSound (*const gBardMusicTable[])[][6];
-extern s16 *gUnknown_08417068[];
-extern u32 gUnknown_084170F4[];
+static const s16 Unknown_8416F08[] = {-768, 6144};
+static const s16 Unknown_8416F0C[] = {2304, 6144};
+static const s16 Unknown_8416F10[] = {256, 6144};
+static const s16 Unknown_8416F14[] = {1024, 6144};
+static const s16 Unknown_8416F18[] = {2816, 6144};
+static const s16 Unknown_8416F1C[] = {-768, -256, 6144};
+static const s16 Unknown_8416F22[] = {-768, 512, 6144};
+static const s16 Unknown_8416F28[] = {512, 1024, 6144};
+static const s16 Unknown_8416F2E[] = {1536, 2048, 6144};
+static const s16 Unknown_8416F34[] = {2304, 2048, 6144};
+static const s16 Unknown_8416F3A[] = {-768, -256, -768, 6144};
+static const s16 Unknown_8416F42[] = {1024, -768, 1024, 6144};
+static const s16 Unknown_8416F4A[] = {2304, 2048, 1536, 6144};
+static const s16 Unknown_8416F52[] = {256, 512, 1024, 6144};
+static const s16 Unknown_8416F5A[] = {1536, 4096, 3328, 6144};
+static const s16 Unknown_8416F62[] = {1024, 2304, 1024, 2304, 6144};
+static const s16 Unknown_8416F6C[] = {2304, 1024, 3328, 1024, 6144};
+static const s16 Unknown_8416F76[] = {256, 512, 1024, 1536, 6144};
+static const s16 Unknown_8416F80[] = {2048, 1536, 1024, 512, 6144};
+static const s16 Unknown_8416F8A[] = {3840, 3328, 2816, 2560, 6144};
+static const s16 Unknown_8416F94[] = {-768, -256, 256, 512, 1024, 6144};
+static const s16 Unknown_8416FA0[] = {2304, 2048, 1536, 1024, 512, 6144};
+static const s16 Unknown_8416FAC[] = {256, 1024, 2304, 1024, 256, 6144};
+static const s16 Unknown_8416FB8[] = {2304, 1024, 2304, 1024, -768, 6144};
+static const s16 Unknown_8416FC4[] = {2816, 2048, 1024, 1024, 1536, 6144};
+static const s16 Unknown_8416FD0[] = {-768, -256, 256, 512, 1024, 1536, 6144};
+static const s16 Unknown_8416FDE[] = {2048, 1536, 1024, 512, 256, -256, 6144};
+static const s16 Unknown_8416FEC[] = {256, 512, 1024, 256, 512, 4096, 6144};
+static const s16 Unknown_8416FFA[] = {1024, -768, 2304, 1024, 2304, 1024, 6144};
+static const s16 Unknown_8417008[] = {2048, 2304, 2048, 2304, 2048, 2304, 6144};
+static const s16 Unknown_8417016[] = {512, 256, 512, 256, 512, 1024, 512, 6144};
+static const s16 Unknown_8417026[] = {256, 256, -256, -256, -768, 1024, -768, 6144};
+static const s16 Unknown_8417036[] = {2048, 2304, 2816, 3328, 3584, 3328, 2816, 6144};
+static const s16 Unknown_8417046[] = {2048, 1536, 1024, 512, 3328, 2816, 2304, 6144};
+static const s16 Unknown_8417056[] = {768, 1024, 1536, 2048, 1792, 2048, 1024, 6144};
+
+static const s16 *const sWordPitches[] = {
+ Unknown_8416F08,
+ Unknown_8416F0C,
+ Unknown_8416F10,
+ Unknown_8416F14,
+ Unknown_8416F18,
+ Unknown_8416F1C,
+ Unknown_8416F22,
+ Unknown_8416F28,
+ Unknown_8416F2E,
+ Unknown_8416F34,
+ Unknown_8416F3A,
+ Unknown_8416F42,
+ Unknown_8416F4A,
+ Unknown_8416F52,
+ Unknown_8416F5A,
+ Unknown_8416F62,
+ Unknown_8416F6C,
+ Unknown_8416F76,
+ Unknown_8416F80,
+ Unknown_8416F8A,
+ Unknown_8416F94,
+ Unknown_8416FA0,
+ Unknown_8416FAC,
+ Unknown_8416FB8,
+ Unknown_8416FC4,
+ Unknown_8416FD0,
+ Unknown_8416FDE,
+ Unknown_8416FEC,
+ Unknown_8416FFA,
+ Unknown_8417008,
+ Unknown_8417016,
+ Unknown_8417026,
+ Unknown_8417036,
+ Unknown_8417046,
+ Unknown_8417056
+};
+
+static const u32 sBardSoundLengthDeltas[] = {
+ 9,
+ 22,
+ 15,
+ 16,
+ 39,
+ 21,
+ 9,
+ 30,
+ 24,
+ 15,
+ 25,
+ 12,
+ 22,
+ 45,
+ 24,
+ 15,
+ 40,
+ 9,
+ 21,
+ 42,
+ 18,
+ 9,
+ 22,
+ 15,
+ 27,
+ 48,
+ 18,
+ 27,
+ 33,
+ 24,
+ 25,
+ 39,
+ 19,
+ 16,
+ 54,
+ 18,
+ 9,
+ 45,
+ 15,
+ 12,
+ 39,
+ 23,
+ 5,
+ 45,
+ 12,
+ 21,
+ 48,
+ 12,
+ 21,
+ 69,
+ 18,
+ 15
+};
+
+#if ENGLISH
+#include "../src/data/bard_music_en.h"
+#elif GERMAN
+#include "../src/data/bard_music_de.h"
+#endif // ENGLISH/GERMAN
+
+static const struct BardSound (*const gBardMusicTable[])[6] = {
+ BardMusic_POKEMON,
+ BardMusic_TRAINER,
+ BardMusic_STATUS,
+ BardMusic_BATTLE,
+ BardMusic_GREETINGS,
+ BardMusic_PEOPLE,
+ BardMusic_VOICES,
+ BardMusic_SPEECH,
+ BardMusic_ENDINGS,
+ BardMusic_FEELINGS,
+ BardMusic_CONDITIONS,
+ BardMusic_ACTIONS,
+ BardMusic_LIFESTYLE,
+ BardMusic_HOBBIES,
+ BardMusic_TIME,
+ BardMusic_MISC,
+ BardMusic_ADJECTIVES,
+ BardMusic_EVENTS,
+ BardMusic_MOVE_1,
+ BardMusic_MOVE_2,
+ BardMusic_TRENDY_SAYING,
+ BardMusic_POKEMON_2
+};
static s16 CalcWordPitch(u32 arg0, u32 songPos)
{
- return gUnknown_08417068[arg0][songPos];
+ return sWordPitches[arg0][songPos];
}
#if ENGLISH
const struct BardSound *GetWordSounds(u16 group, u16 word)
{
- const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
+ const struct BardSound (*sounds)[6] = gBardMusicTable[group];
- return (*sounds)[word];
+ return sounds[word];
}
#elif GERMAN
const struct BardSound *GetWordSounds(u16 group, u16 word)
{
- const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
+ const struct BardSound (*sounds)[6] = gBardMusicTable[group];
u32 index = de_sub_80EB748(group, word);
- return (*sounds)[index];
+ return sounds[index];
}
#endif
@@ -48,7 +204,7 @@ s32 GetWordPhonemes(struct BardSong *song, const struct BardSound *src, u16 arg2
song->phonemes[i].sound = src[i].var00;
if (src[i].var00 != 0xFF)
{
- s32 length = src[i].var01 + gUnknown_084170F4[src[i].var00];
+ s32 length = src[i].var01 + sBardSoundLengthDeltas[src[i].var00];
song->phonemes[i].length = length;
song->phonemes[i].volume = src[i].volume;
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index 6b6064c16..12337631f 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -294,24 +294,24 @@ void sub_8134548(void)
ResetBattleTowerStreak(levelType);
if (!var1)
{
- VarSet(VAR_0x4000, 5);
+ VarSet(VAR_TEMP_0, 5);
}
break;
case 1:
ResetBattleTowerStreak(levelType);
- VarSet(VAR_0x4000, 1);
+ VarSet(VAR_TEMP_0, 1);
var1++;
break;
case 4:
- VarSet(VAR_0x4000, 2);
+ VarSet(VAR_TEMP_0, 2);
var1++;
break;
case 5:
- VarSet(VAR_0x4000, 3);
+ VarSet(VAR_TEMP_0, 3);
var1++;
break;
case 2:
- VarSet(VAR_0x4000, 4);
+ VarSet(VAR_TEMP_0, 4);
var1++;
break;
case 3:
@@ -323,7 +323,7 @@ void sub_8134548(void)
if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6)
&& (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6))
{
- VarSet(VAR_0x4000, 5);
+ VarSet(VAR_TEMP_0, 5);
}
ValidateBattleTowerRecordChecksums();
@@ -801,7 +801,7 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
if (i != 30)
{
u8 trainerObjectGfxId = sMaleTrainerGfxIds[i];
- VarSet(0x4010, trainerObjectGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
return;
}
@@ -809,11 +809,11 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
if (i != 20)
{
u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i];
- VarSet(0x4010, trainerObjectGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId);
return;
}
- VarSet(0x4010, MAP_OBJ_GFX_BOY_1);
+ VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BOY_1);
}
void SetEReaderTrainerGfxId(void)
@@ -1976,7 +1976,7 @@ void sub_8135BA0(void)
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
}
- VarSet(VAR_0x4000, 0);
+ VarSet(VAR_TEMP_0, 0);
gSaveBlock2.battleTower.unk_554 = 1;
TrySavingData(EREADER_SAVE);
}
diff --git a/src/field/coord_event_weather.c b/src/field/coord_event_weather.c
index 9c5a1ca4d..db4e9c161 100644
--- a/src/field/coord_event_weather.c
+++ b/src/field/coord_event_weather.c
@@ -1,115 +1,116 @@
#include "global.h"
+#include "constants/weather.h"
#include "coord_event_weather.h"
#include "field_weather.h"
struct CoordEventWeather
{
- u8 weather;
+ u8 coordEventWeather;
void (*func)(void);
};
-static void CoordEventWeather_Indoor(void);
+static void CoordEventWeather_Clouds(void);
static void CoordEventWeather_Sunny(void);
-static void CoordEventWeather_Rain(void);
-static void CoordEventWeather_Snowflakes(void);
+static void CoordEventWeather_LightRain(void);
+static void CoordEventWeather_Snow(void);
static void CoordEventWeather_Thunderstorm(void);
static void CoordEventWeather_Fog(void);
static void CoordEventWeather_DiagonalFog(void);
-static void CoordEventWeather_Snow(void);
+static void CoordEventWeather_Ash(void);
static void CoordEventWeather_Sandstorm(void);
-static void CoordEventWeather_Cloudy(void);
+static void CoordEventWeather_Dark(void);
static void CoordEventWeather_Drought(void);
-static void CoordEventWeather_UnderwaterFog(void);
-static void CoordEventWeather_UnderwaterBubbles(void);
+static void CoordEventWeather_Route119Cycle(void);
+static void CoordEventWeather_Route123Cycle(void);
static const struct CoordEventWeather sCoordEventWeatherFuncs[] =
{
- { 0x1, CoordEventWeather_Indoor },
- { 0x2, CoordEventWeather_Sunny },
- { 0x3, CoordEventWeather_Rain },
- { 0x4, CoordEventWeather_Snowflakes },
- { 0x5, CoordEventWeather_Thunderstorm },
- { 0x6, CoordEventWeather_Fog },
- { 0x7, CoordEventWeather_DiagonalFog },
- { 0x8, CoordEventWeather_Snow },
- { 0x9, CoordEventWeather_Sandstorm },
- { 0xa, CoordEventWeather_Cloudy },
- { 0xb, CoordEventWeather_Drought },
- { 0x14, CoordEventWeather_UnderwaterFog },
- { 0x15, CoordEventWeather_UnderwaterBubbles },
+ { COORD_EVENT_WEATHER_CLOUDS, CoordEventWeather_Clouds },
+ { COORD_EVENT_WEATHER_SUNNY, CoordEventWeather_Sunny },
+ { COORD_EVENT_WEATHER_RAIN_LIGHT, CoordEventWeather_LightRain },
+ { COORD_EVENT_WEATHER_SNOW, CoordEventWeather_Snow },
+ { COORD_EVENT_WEATHER_RAIN_MED, CoordEventWeather_Thunderstorm },
+ { COORD_EVENT_WEATHER_FOG_1, CoordEventWeather_Fog },
+ { COORD_EVENT_WEATHER_FOG_2, CoordEventWeather_DiagonalFog },
+ { COORD_EVENT_WEATHER_ASH, CoordEventWeather_Ash },
+ { COORD_EVENT_WEATHER_SANDSTORM, CoordEventWeather_Sandstorm },
+ { COORD_EVENT_WEATHER_DARK, CoordEventWeather_Dark },
+ { COORD_EVENT_WEATHER_DROUGHT, CoordEventWeather_Drought },
+ { COORD_EVENT_WEATHER_ROUTE119_CYCLE, CoordEventWeather_Route119Cycle },
+ { COORD_EVENT_WEATHER_ROUTE123_CYCLE, CoordEventWeather_Route123Cycle },
};
-static void CoordEventWeather_Indoor(void)
+static void CoordEventWeather_Clouds(void)
{
- SetWeather(1);
+ SetWeather(WEATHER_CLOUDS);
}
static void CoordEventWeather_Sunny(void)
{
- SetWeather(2);
+ SetWeather(WEATHER_SUNNY);
}
-static void CoordEventWeather_Rain(void)
+static void CoordEventWeather_LightRain(void)
{
- SetWeather(3);
+ SetWeather(WEATHER_RAIN_LIGHT);
}
-static void CoordEventWeather_Snowflakes(void)
+static void CoordEventWeather_Snow(void)
{
- SetWeather(4);
+ SetWeather(WEATHER_SNOW);
}
static void CoordEventWeather_Thunderstorm(void)
{
- SetWeather(5);
+ SetWeather(WEATHER_RAIN_MED);
}
static void CoordEventWeather_Fog(void)
{
- SetWeather(6);
+ SetWeather(WEATHER_FOG_1);
}
static void CoordEventWeather_DiagonalFog(void)
{
- SetWeather(9);
+ SetWeather(WEATHER_FOG_2);
}
-static void CoordEventWeather_Snow(void)
+static void CoordEventWeather_Ash(void)
{
- SetWeather(7);
+ SetWeather(WEATHER_ASH);
}
static void CoordEventWeather_Sandstorm(void)
{
- SetWeather(8);
+ SetWeather(WEATHER_SANDSTORM);
}
-static void CoordEventWeather_Cloudy(void)
+static void CoordEventWeather_Dark(void)
{
- SetWeather(11);
+ SetWeather(WEATHER_DARK);
}
static void CoordEventWeather_Drought(void)
{
- SetWeather(12);
+ SetWeather(WEATHER_DROUGHT);
}
-static void CoordEventWeather_UnderwaterFog(void)
+static void CoordEventWeather_Route119Cycle(void)
{
- SetWeather(20);
+ SetWeather(WEATHER_ROUTE119_CYCLE);
}
-static void CoordEventWeather_UnderwaterBubbles(void)
+static void CoordEventWeather_Route123Cycle(void)
{
- SetWeather(21);
+ SetWeather(WEATHER_ROUTE123_CYCLE);
}
-void DoCoordEventWeather(u8 n)
+void DoCoordEventWeather(u8 coordEventWeather)
{
u8 i;
for (i = 0; i < ARRAY_COUNT(sCoordEventWeatherFuncs); i++)
{
- if (sCoordEventWeatherFuncs[i].weather == n)
+ if (sCoordEventWeatherFuncs[i].coordEventWeather == coordEventWeather)
{
sCoordEventWeatherFuncs[i].func();
return;
diff --git a/src/field/decoration.c b/src/field/decoration.c
index 8b774afc3..87a9d8028 100644
--- a/src/field/decoration.c
+++ b/src/field/decoration.c
@@ -1426,139 +1426,6 @@ const struct YesNoFuncTable gUnknown_083EC634[] = {
{sub_8109D04, sub_80FF058}
};
-const u16 gUnknown_083EC654[] = {0x6318, 0x739C, 0x7FFF};
-const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}");
-
-const u8 Unknown_3EC660[] = {0, 1, 2, 3};
-const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13};
-const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
-const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21};
-const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7};
-const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
-const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45};
-const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29};
-
-const u8 Unknown_3EC6F0[] = {0, 0, 0, 0};
-const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1};
-const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2};
-const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7};
-const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3};
-const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1};
-const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2};
-const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7};
-const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8};
-const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5};
-
-const u8 Unknown_3EC7A8[] = {4, 5, 6, 7};
-const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7};
-const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
-const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7};
-const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
-const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7};
-const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7};
-const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
-const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
-const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
-
-const struct UnkStruct_803EC860 gUnknown_083EC860[] = {
- {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4},
- {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8},
- {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc},
- {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20},
- {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10},
- {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8},
- {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc},
- {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20},
- {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24},
- {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18}
-};
-
-const struct UnkStruct_083EC900 gUnknown_083EC900[] = {
- {0, 1, 0x78, 0x4e},
- {1, 2, 0x80, 0x4e},
- {1, 3, 0x90, 0x56},
- {1, 3, 0x90, 0x46},
- {0, 2, 0x80, 0x46},
- {2, 2, 0x78, 0x46},
- {2, 3, 0x80, 0x56},
- {2, 3, 0x80, 0x36},
- {0, 3, 0x90, 0x46},
- {1, 3, 0x90, 0x46}
-};
-
-const union AnimCmd gSpriteAnim_83EC928[] = {
- ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
- ANIMCMD_END
-};
-
-const union AnimCmd *const gSpriteAnimTable_83EC930[] = {
- gSpriteAnim_83EC928
-};
-
-const struct SpriteFrameImage gSpriteImageTable_83EC934[] = {
- {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)}
-};
-
-const struct SpriteTemplate gSpriteTemplate_83EC93C = {
- .tileTag = 0xffff,
- .paletteTag = 3000,
- .oam = &gUnknown_020391AC,
- .anims = gSpriteAnimTable_83EC930,
- .images = gSpriteImageTable_83EC934,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81009A8
-};
-
-const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000};
-
-const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C};
-const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C};
-const struct YesNoFuncTable gUnknown_083EC96C[] = {
- {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08},
- {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4}
-};
-
-const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0};
-const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0};
-
-const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal");
-const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal");
-const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC};
-const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC};
-const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp");
-const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8};
-const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8};
-const struct OamData gOamData_83ECA6C = {
- .size = 1, .priority = 1
-};
-
-const union AnimCmd gSpriteAnim_83ECA74[] = {
- ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
- ANIMCMD_END
-};
-
-const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = {
- gSpriteAnim_83ECA74
-};
-
-const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = {
- obj_frame_tiles(gSpriteImage_83EC9DC)
-};
-
-const struct SpriteTemplate gSpriteTemplate_83ECA88 = {
- .tileTag = 0xffff,
- .paletteTag = 8,
- .oam = &gOamData_83ECA6C,
- .anims = gSpriteAnimTable_83ECA7C,
- .images = gSpriteImageTable_83ECA80,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8101698
-};
-
-const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C};
-
-u8 *const unref_label_083ECAA8[] = {gSharedMem};
-
// text
extern u8 gUnknown_0815F399[];
@@ -1605,8 +1472,9 @@ void DoPlayerPCDecoration(u8 taskId)
void sub_80FE2B4(void)
{
- u16 palettes[3];
- memcpy(palettes, gUnknown_083EC654, sizeof gUnknown_083EC654);
+ u16 palettes[3] = {RGB(24, 24, 24),
+ RGB(28, 28, 28),
+ RGB(31, 31, 31)};
LoadPalette(&palettes[2], 0xdf, 2);
LoadPalette(&palettes[1], 0xd1, 2);
LoadPalette(&palettes[0], 0xd8, 2);
@@ -1908,6 +1776,8 @@ void sub_80FE948(u8 taskId)
}
}
+const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}");
+
void sub_80FEABC(u8 taskId, u8 dummy1)
{
u16 i;
@@ -3568,6 +3438,136 @@ u16 sub_810089C(u16 a0)
return ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles)[a0] & 0xfff;
}
+const u8 Unknown_3EC660[] = {0, 1, 2, 3};
+const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13};
+const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21};
+const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7};
+const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
+const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45};
+const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29};
+
+const u8 Unknown_3EC6F0[] = {0, 0, 0, 0};
+const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1};
+const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2};
+const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7};
+const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3};
+const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1};
+const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2};
+const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7};
+const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8};
+const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5};
+
+const u8 Unknown_3EC7A8[] = {4, 5, 6, 7};
+const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7};
+const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
+const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7};
+const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
+const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7};
+const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7};
+const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7};
+const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
+const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7};
+
+const struct UnkStruct_803EC860 gUnknown_083EC860[] = {
+ {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4},
+ {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8},
+ {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc},
+ {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20},
+ {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10},
+ {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8},
+ {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc},
+ {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20},
+ {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24},
+ {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18}
+};
+
+const struct UnkStruct_083EC900 gUnknown_083EC900[] = {
+ {0, 1, 0x78, 0x4e},
+ {1, 2, 0x80, 0x4e},
+ {1, 3, 0x90, 0x56},
+ {1, 3, 0x90, 0x46},
+ {0, 2, 0x80, 0x46},
+ {2, 2, 0x78, 0x46},
+ {2, 3, 0x80, 0x56},
+ {2, 3, 0x80, 0x36},
+ {0, 3, 0x90, 0x46},
+ {1, 3, 0x90, 0x46}
+};
+
+const union AnimCmd gSpriteAnim_83EC928[] = {
+ ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83EC930[] = {
+ gSpriteAnim_83EC928
+};
+
+const struct SpriteFrameImage gSpriteImageTable_83EC934[] = {
+ {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)}
+};
+
+const struct SpriteTemplate gSpriteTemplate_83EC93C = {
+ .tileTag = 0xffff,
+ .paletteTag = 3000,
+ .oam = &gUnknown_020391AC,
+ .anims = gSpriteAnimTable_83EC930,
+ .images = gSpriteImageTable_83EC934,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81009A8
+};
+
+const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000};
+
+const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C};
+const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C};
+const struct YesNoFuncTable gUnknown_083EC96C[] = {
+ {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08},
+ {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4}
+};
+
+const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0};
+const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0};
+
+const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal");
+const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal");
+const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC};
+const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC};
+const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp");
+const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8};
+const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8};
+const struct OamData gOamData_83ECA6C = {
+ .size = 1, .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_83ECA74[] = {
+ ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = {
+ gSpriteAnim_83ECA74
+};
+
+const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = {
+ obj_frame_tiles(gSpriteImage_83EC9DC)
+};
+
+const struct SpriteTemplate gSpriteTemplate_83ECA88 = {
+ .tileTag = 0xffff,
+ .paletteTag = 8,
+ .oam = &gOamData_83ECA6C,
+ .anims = gSpriteAnimTable_83ECA7C,
+ .images = gSpriteImageTable_83ECA80,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8101698
+};
+
+const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C};
+
+u8 *const unref_label_083ECAA8[] = {gSharedMem};
+
void sub_81008BC(struct UnkStruct_02038900 *unk_02038900)
{
u8 i;
diff --git a/src/field/event_data.c b/src/field/event_data.c
index 587da8138..86045df15 100644
--- a/src/field/event_data.c
+++ b/src/field/event_data.c
@@ -138,7 +138,7 @@ bool8 VarSet(u16 id, u16 value)
u8 VarGetFieldObjectGraphicsId(u8 id)
{
- return VarGet(0x4010 + id);
+ return VarGet(VAR_OBJ_GFX_ID_0 + id);
}
u8 *GetFlagPointer(u16 id)
diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c
index cd7d3a2e2..947dc3e56 100644
--- a/src/field/field_control_avatar.c
+++ b/src/field/field_control_avatar.c
@@ -355,7 +355,7 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse
case 5:
case 6:
case 7:
- gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258;
+ gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + FLAG_HIDDEN_ITEMS_START;
gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script;
if (FlagGet(gSpecialVar_0x8004) == TRUE)
return NULL;
@@ -363,7 +363,7 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse
case 8:
if (c == 2)
{
- gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script;
+ gSpecialVar_0x8004 = bgEvent->bgUnion.secretBaseId;
if (sub_80BC050())
return gUnknown_081A2C51;
}
diff --git a/src/field/field_effect.c b/src/field/field_effect.c
index 4337300da..1e2aaa4ed 100644
--- a/src/field/field_effect.c
+++ b/src/field/field_effect.c
@@ -310,114 +310,6 @@ void (*const gUnknown_0839F378[])(struct Task *) = {
sub_8087914
};
-const u8 gUnknown_0839F380[] = {1, 3, 4, 2, 1};
-
-void (*const gUnknown_0839F388[])(struct Task *) = {
- sub_8087AA4,
- sub_8087AC8
-};
-
-void (*const gUnknown_0839F390[])(struct Task *) = {
- sub_8087BEC,
- sub_8087C14,
- sub_8087CA4,
- sub_8087D78
-};
-
-void (*const gUnknown_0839F3A0[])(struct Task *) = {
- sub_8087E4C,
- sub_8087ED8,
- sub_8087FDC
-};
-
-void (*const gUnknown_0839F3AC[])(struct Task *) = {
- sub_8088150,
- sub_80881C0,
- sub_8088228,
- sub_80882B4,
- sub_80882E4,
- sub_8088338,
- sub_8088380
-};
-
-void (*const gUnknown_0839F3C8[])(struct Task *) = {
- sub_80884AC,
- sub_80884E8,
- sub_8088554,
- sub_80885A8,
- sub_80885D8,
- sub_808860C,
- sub_808862C
-};
-
-void (*const gUnknown_0839F3E4[])(struct Task *) = {
- sub_8088984,
- sub_80889E4,
- sub_8088A30,
- sub_8088A78,
- sub_8088AF4
-};
-
-void (*const gUnknown_0839F3F8[])(struct Task *) = {
- sub_8088CA0,
- sub_8088CF8,
- sub_8088D3C,
- sub_8088D94,
- sub_8088DD8,
- sub_8088E2C,
- sub_8088EB4,
- sub_8088F10,
- sub_8088F30
-};
-
-const union AffineAnimCmd SpriteAffineAnim_839F41C[] = {
- AFFINEANIMCMD_FRAME(8, 8, -30, 0),
- AFFINEANIMCMD_FRAME(28, 28, 0, 30),
- AFFINEANIMCMD_END
-};
-
-const union AffineAnimCmd SpriteAffineAnim_839F434[] = {
- AFFINEANIMCMD_FRAME(256, 256, 64, 0),
- AFFINEANIMCMD_FRAME(-10, -10, 0, 22),
- AFFINEANIMCMD_END
-};
-
-const union AffineAnimCmd *const gSpriteAffineAnimTable_0839F44C[] = {
- SpriteAffineAnim_839F41C,
- SpriteAffineAnim_839F434
-};
-
-void (*const gUnknown_0839F454[])(struct Task *) = {
- sub_80892A0,
- sub_8089354,
- sub_80893C0,
- sub_8089414,
- sub_808948C,
- sub_80894C4,
- fishE
-};
-
-const s16 gUnknown_0839F470[] = {
- -2,
- -4,
- -5,
- -6,
- -7,
- -8,
- -8,
- -8,
- -7,
- -7,
- -6,
- -5,
- -3,
- -2,
- 0,
- 2,
- 4,
- 8
-};
-
static u8 sActiveList[32];
extern u8 *gFieldEffectScriptPointers[];
@@ -2100,8 +1992,7 @@ void sub_80878F4(struct Task *task)
void sub_8087914(struct Task *task)
{
struct MapObject *mapObject;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
if (task->data[14] != 0 && (--task->data[14]) == 0)
{
sub_8053FF8();
@@ -2130,6 +2021,11 @@ void sub_8087914(struct Task *task)
}
}
+void (*const gUnknown_0839F388[])(struct Task *) = {
+ sub_8087AA4,
+ sub_8087AC8
+};
+
void sub_8087A74(u8);
void mapldr_080859D4(void)
@@ -2159,10 +2055,8 @@ void sub_8087AA4(struct Task *task)
void sub_8087AC8(struct Task *task)
{
- struct MapObject *mapObject;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) && !FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
@@ -2195,6 +2089,13 @@ void sub_8087BA8(void)
CreateTask(sub_8087BBC, 0);
}
+void (*const gUnknown_0839F390[])(struct Task *) = {
+ sub_8087BEC,
+ sub_8087C14,
+ sub_8087CA4,
+ sub_8087D78
+};
+
void sub_8087BBC(u8 taskId)
{
gUnknown_0839F390[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2211,10 +2112,8 @@ void sub_8087BEC(struct Task *task)
void sub_8087C14(struct Task *task)
{
- struct MapObject *mapObject;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if (task->data[1] == 0 || (--task->data[1]) == 0)
{
FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
@@ -2233,12 +2132,9 @@ void sub_8087C14(struct Task *task)
void sub_8087CA4(struct Task *task)
{
- struct MapObject *mapObject;
- struct Sprite *sprite;
- u8 unknown_0839F380[5];
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[gPlayerAvatar.spriteId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((--task->data[1]) <= 0)
{
task->data[1] = 4;
@@ -2288,6 +2184,12 @@ void mapldr_08085D88(void)
CreateTask(sub_8087E1C, 0);
}
+void (*const gUnknown_0839F3A0[])(struct Task *) = {
+ sub_8087E4C,
+ sub_8087ED8,
+ sub_8087FDC
+};
+
void sub_8087E1C(u8 taskId)
{
gUnknown_0839F3A0[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2314,12 +2216,9 @@ void sub_8087E4C(struct Task *task)
void sub_8087ED8(struct Task *task)
{
- u8 unknown_0839F380[5];
- struct MapObject *mapObject;
- struct Sprite *sprite;
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
- sprite = &gSprites[gPlayerAvatar.spriteId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
if ((sprite->pos2.y += task->data[1]) >= -8)
{
if (task->data[13] == 0)
@@ -2356,10 +2255,8 @@ void sub_8087ED8(struct Task *task)
void sub_8087FDC(struct Task *task)
{
- u8 unknown_0839F380[5];
- struct MapObject *mapObject;
- memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380);
- mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 unknown_0839F380[5] = {1, 3, 4, 2, 1};
+ struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if ((--task->data[1]) == 0)
{
FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]);
@@ -2409,6 +2306,16 @@ bool8 FldEff_FieldMoveShowMonInit(void)
return FALSE;
}
+void (*const gUnknown_0839F3AC[])(struct Task *) = {
+ sub_8088150,
+ sub_80881C0,
+ sub_8088228,
+ sub_80882B4,
+ sub_80882E4,
+ sub_8088338,
+ sub_8088380
+};
+
void sub_8088120(u8 taskId)
{
gUnknown_0839F3AC[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2565,6 +2472,16 @@ bool8 sub_8088708(struct Task *);
void sub_80886F8(struct Task *);
bool8 sub_80887C0(struct Task *);
+void (*const gUnknown_0839F3C8[])(struct Task *) = {
+ sub_80884AC,
+ sub_80884E8,
+ sub_8088554,
+ sub_80885A8,
+ sub_80885D8,
+ sub_808860C,
+ sub_808862C
+};
+
void sub_808847C(u8 taskId)
{
gUnknown_0839F3C8[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -2884,6 +2801,14 @@ u8 FldEff_UseSurf(void)
return FALSE;
}
+void (*const gUnknown_0839F3E4[])(struct Task *) = {
+ sub_8088984,
+ sub_80889E4,
+ sub_8088A30,
+ sub_8088A78,
+ sub_8088AF4
+};
+
void sub_8088954(u8 taskId)
{
gUnknown_0839F3E4[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -3012,6 +2937,18 @@ u8 FldEff_UseFly(void)
return 0;
}
+void (*const gUnknown_0839F3F8[])(struct Task *) = {
+ sub_8088CA0,
+ sub_8088CF8,
+ sub_8088D3C,
+ sub_8088D94,
+ sub_8088DD8,
+ sub_8088E2C,
+ sub_8088EB4,
+ sub_8088F10,
+ sub_8088F30
+};
+
void sub_8088C70(u8 taskId)
{
gUnknown_0839F3F8[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -3170,6 +3107,23 @@ void sub_8088FFC(u8 a0, u8 a1)
gSprites[a0].data[6] = a1;
}
+const union AffineAnimCmd SpriteAffineAnim_839F41C[] = {
+ AFFINEANIMCMD_FRAME(8, 8, -30, 0),
+ AFFINEANIMCMD_FRAME(28, 28, 0, 30),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd SpriteAffineAnim_839F434[] = {
+ AFFINEANIMCMD_FRAME(256, 256, 64, 0),
+ AFFINEANIMCMD_FRAME(-10, -10, 0, 22),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_0839F44C[] = {
+ SpriteAffineAnim_839F41C,
+ SpriteAffineAnim_839F434
+};
+
void sub_8089018(struct Sprite *sprite)
{
if (sprite->data[7] == 0)
@@ -3282,6 +3236,16 @@ u8 FldEff_FlyIn(void)
return 0;
}
+void (*const gUnknown_0839F454[])(struct Task *) = {
+ sub_80892A0,
+ sub_8089354,
+ sub_80893C0,
+ sub_8089414,
+ sub_808948C,
+ sub_80894C4,
+ fishE
+};
+
void sub_8089270(u8 taskId)
{
gUnknown_0839F454[gTasks[taskId].data[0]](&gTasks[taskId]);
@@ -3333,10 +3297,27 @@ void sub_8089354(struct Task *task)
void sub_80893C0(struct Task *task)
{
- s16 unknown_0839F470[18];
- struct Sprite *sprite;
- memcpy(unknown_0839F470, gUnknown_0839F470, sizeof gUnknown_0839F470);
- sprite = &gSprites[gPlayerAvatar.spriteId];
+ s16 unknown_0839F470[18] = {
+ -2,
+ -4,
+ -5,
+ -6,
+ -7,
+ -8,
+ -8,
+ -8,
+ -7,
+ -7,
+ -6,
+ -5,
+ -3,
+ -2,
+ 0,
+ 2,
+ 4,
+ 8
+ };
+ struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId];
sprite->pos2.y = unknown_0839F470[task->data[2]];
if ((++task->data[2]) >= 18)
{
diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c
index 1d831d2e9..165829a55 100644
--- a/src/field/field_effect_helpers.c
+++ b/src/field/field_effect_helpers.c
@@ -31,50 +31,6 @@ static u32 ShowDisguiseFieldEffect(u8, u8, u8);
const u8 UnusedEggString_8401E28[] = _("タマゴ");
-const u16 gUnknown_08401E2C[] = {
- 0x0c,
- 0x1c,
- 0x2c
-};
-
-const u8 gUnknown_08401E32[] = {
- 0,
- 1,
- 2,
- 3
-};
-
-const u16 gUnknown_08401E36[] = {
- 4,
- 4,
- 4,
- 16
-};
-
-void (*const gUnknown_08401E40[])(struct Sprite *) = {
- sub_81275A0,
- sub_81275C4
-};
-
-void (*const gUnknown_08401E48[])(struct Sprite *) = {
- sub_8127DA0,
- sub_8127DD0,
- sub_8127E30
-};
-
-const u8 gUnknown_08401E54[] = {
- 0,
- 0,
- 1,
- 2,
- 3
-};
-
-const u16 gUnknown_08401E5A[] = {
- 3,
- 7
-};
-
void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
{
struct Sprite *newSprite;
@@ -107,9 +63,7 @@ static s16 sub_81268D0(struct MapObject *mapObject)
static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite)
{
u8 whichElement;
- u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)];
-
- memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C);
+ u16 unk_8041e2c[] = {0x0c, 0x1c, 0x2c};
sprite->data[2] = 0;
if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E))))
{
@@ -237,6 +191,20 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
}
}
+const u8 gUnknown_08401E32[] = {
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E36[] = {
+ 4,
+ 4,
+ 4,
+ 16
+};
+
u32 FldEff_Shadow(void)
{
u8 mapObjectId;
@@ -589,6 +557,11 @@ u32 FldEff_BikeTireTracks(void)
return spriteId;
}
+void (*const gUnknown_08401E40[])(struct Sprite *) = {
+ sub_81275A0,
+ sub_81275C4
+};
+
void sub_8127584(struct Sprite *sprite)
{
gUnknown_08401E40[sprite->data[0]](sprite);
@@ -917,6 +890,12 @@ u32 FldEff_Ash(void)
return 0;
}
+void (*const gUnknown_08401E48[])(struct Sprite *) = {
+ sub_8127DA0,
+ sub_8127DD0,
+ sub_8127E30
+};
+
void sub_8127D84(struct Sprite *sprite)
{
gUnknown_08401E48[sprite->data[0]](sprite);
@@ -1018,9 +997,7 @@ void sub_8127F7C(struct Sprite *sprite)
static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite)
{
- u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)];
-
- memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54);
+ u8 unk_8041E54[] = {0, 0, 1, 2, 3};
if (sub_8127F64(sprite) == 0)
{
StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]);
@@ -1134,11 +1111,8 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru
static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
{
- u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)];
- u8 v0;
-
- memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A);
- v0 = sub_8127F5C(sprite);
+ u16 unk_8401E5A[] = {3, 7};
+ u8 v0 = sub_8127F5C(sprite);
if (v0 != 0)
{
if (((u16)(++ sprite->data[4]) & unk_8401E5A[sprite->data[5]]) == 0)
diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c
index 81c0c5854..ba7c3d68e 100644
--- a/src/field/field_map_obj.c
+++ b/src/field/field_map_obj.c
@@ -2020,7 +2020,7 @@ u8 GetFieldObjectIdByLocalId(u8 localId)
#ifdef NONMATCHING
u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
{
- struct MapObject2 *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
+ struct MapObject *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
u8 var;
u16 r3;
u16 r2;
@@ -2029,8 +2029,8 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0)
return 16;
//_0805ACCE
- mapObj = (struct MapObject2 *)&gMapObjects[var];
- npc_clear_ids_and_state((struct MapObject *)mapObj);
+ mapObj = &gMapObjects[var];
+ npc_clear_ids_and_state(mapObj);
r3 = template->x + 7;
r2 = template->y + 7;
mapObj->active = TRUE;
@@ -2048,8 +2048,8 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
mapObj->coords3.y = r2;
mapObj->mapobj_unk_0B_0 = template->elevation;
mapObj->elevation = template->elevation;
- mapObj->mapobj_unk_19 = template->unkA_0;
- mapObj->mapobj_unk_19b = template->unkA_4;
+ mapObj->range.as_nybbles.x = template->unkA_0;
+ mapObj->range.as_nybbles.y = template->unkA_4;
mapObj->trainerType = template->unkC;
mapObj->trainerRange_berryTreeId = template->unkE;
mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType];
@@ -2058,10 +2058,10 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
//asm("":::"r5","r6");
if (gUnknown_0836DBBC[mapObj->animPattern] != 0)
{
- if (mapObj->mapobj_unk_19 == 0)
- mapObj->mapobj_unk_19++;
- if (mapObj->mapobj_unk_19b == 0)
- mapObj->mapobj_unk_19b++;
+ if (mapObj->range.as_nybbles.x == 0)
+ mapObj->range.as_nybbles.x++;
+ if (mapObj->range.as_nybbles.y == 0)
+ mapObj->range.as_nybbles.y++;
}
return var;
}
@@ -5464,7 +5464,7 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction)
return npc_block_way(mapObject, x, y, direction);
}
-bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y);
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y);
static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y);
bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
@@ -5472,7 +5472,7 @@ u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn)
{
u8 direction;
direction = dirn;
- if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
return 1;
else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
return 2;
@@ -5489,7 +5489,7 @@ u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
{
u8 flags = 0;
- if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y))
flags |= 1;
if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
flags |= 2;
@@ -5500,22 +5500,22 @@ u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
return flags;
}
-bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y)
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y)
{
s16 minv;
s16 maxv;
- if (mapObject->mapobj_unk_19 != 0)
+ if (mapObject->range.as_nybbles.x != 0)
{
- minv = mapObject->coords1.x - (mapObject->mapobj_unk_19);
- maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19);
+ minv = mapObject->coords1.x - (mapObject->range.as_nybbles.x);
+ maxv = mapObject->coords1.x + (mapObject->range.as_nybbles.x);
if (minv > x || maxv < x)
return TRUE;
}
- if (mapObject->mapobj_unk_19b != 0)
+ if (mapObject->range.as_nybbles.y != 0)
{
- minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b);
- maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b);
+ minv = mapObject->coords1.y - (mapObject->range.as_nybbles.y);
+ maxv = mapObject->coords1.y + (mapObject->range.as_nybbles.y);
if (minv > y || maxv < y)
return TRUE;
}
diff --git a/src/field/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c
index f1a113d44..328b66ed2 100644
--- a/src/field/field_map_obj_helpers.c
+++ b/src/field/field_map_obj_helpers.c
@@ -7,13 +7,92 @@
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
-extern s16 gUnknown_08376194[];
-extern SpriteStepFunc *gUnknown_08376180[];
-extern s8 *gUnknown_083761D0[];
-extern s16 gUnknown_083761DC[];
-extern u8 gUnknown_083761E2[];
-extern s16 gUnknown_083761E6[];
-extern u8 gUnknown_083761EC[];
+void Step1(struct Sprite *sprite, u8 dir);
+void Step2(struct Sprite *sprite, u8 dir);
+void Step3(struct Sprite *sprite, u8 dir);
+void Step4(struct Sprite *sprite, u8 dir);
+void Step8(struct Sprite *sprite, u8 dir);
+
+const SpriteStepFunc Unknown_83760F0[] = {
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1
+};
+
+const SpriteStepFunc Unknown_8376130[] = {
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2
+};
+
+const SpriteStepFunc Unknown_8376150[] = {
+ Step2,
+ Step3,
+ Step3,
+ Step2,
+ Step3,
+ Step3
+};
+
+const SpriteStepFunc Unknown_8376168[] = {
+ Step4,
+ Step4,
+ Step4,
+ Step4
+};
+
+const SpriteStepFunc Unknown_8376178[] = {
+ Step8,
+ Step8
+};
+
+const SpriteStepFunc *const gUnknown_08376180[] = {
+ Unknown_83760F0,
+ Unknown_8376130,
+ Unknown_8376150,
+ Unknown_8376168,
+ Unknown_8376178
+};
+
+const s16 gUnknown_08376194[] = {
+ 16, 8, 6, 4, 2
+};
+
+const s8 Unknown_837619E[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+};
+
+const s8 Unknown_83761AE[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+};
+
+const s8 Unknown_83761BE[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+};
+
+const s8 *const gUnknown_083761D0[] = {
+ Unknown_837619E,
+ Unknown_83761AE,
+ Unknown_83761BE
+};
bool8 FreezeMapObject(struct MapObject *mapObject)
{
@@ -156,14 +235,9 @@ void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
u8 sub_8064704(struct Sprite *sprite)
{
- u8 v2;
- s16 v5[3];
- u8 v6[3];
-
- memcpy(v5, gUnknown_083761DC, 6);
- memcpy(v6, gUnknown_083761E2, 3);
-
- v2 = 0;
+ s16 v5[3] = {0x10, 0x10, 0x20};
+ u8 v6[3] = {0, 0, 1};
+ u8 v2 = 0;
if (sprite->data[4])
Step1(sprite, sprite->data[3]);
@@ -186,14 +260,9 @@ u8 sub_8064704(struct Sprite *sprite)
u8 sub_806478C(struct Sprite *sprite)
{
- u8 v2;
- s16 v5[3];
- u8 v6[3];
-
- memcpy(v5, gUnknown_083761E6, 6);
- memcpy(v6, gUnknown_083761EC, 3);
-
- v2 = 0;
+ s16 v5[3] = {0x20, 0x20, 0x40};
+ u8 v6[3] = {1, 1, 2};
+ u8 v2 = 0;
if (sprite->data[4] && !(sprite->data[6] & 1))
Step1(sprite, sprite->data[3]);
diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c
index 0b7fe336e..67b652a57 100644
--- a/src/field/field_special_scene.c
+++ b/src/field/field_special_scene.c
@@ -291,7 +291,7 @@ bool8 sub_80C7754(void)
void Task_HandlePorthole(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- u16 *var = GetVarPointer(VAR_PORTHOLE);
+ u16 *var = GetVarPointer(VAR_PORTHOLE_STATE);
struct WarpData *location = &gSaveBlock1.location;
switch (data[0])
@@ -337,8 +337,8 @@ void Task_HandlePorthole(u8 taskId)
}
break;
case EXIT_PORTHOLE: // exit porthole.
- FlagClear(0x4001);
- FlagClear(0x4000);
+ FlagClear(FLAG_SPECIAL_FLAG_1);
+ FlagClear(FLAG_SPECIAL_FLAG_0);
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
sp13E_warp_to_last_warp();
DestroyTask(taskId);
@@ -352,7 +352,7 @@ void sub_80C78A0(void)
gSprites[spriteId].coordOffsetEnabled = FALSE;
- if (VarGet(0x40B4) == 2)
+ if (VarGet(VAR_PORTHOLE_STATE) == 2)
{
StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
}
@@ -374,8 +374,8 @@ void sub_80C791C(void)
void sub_80C7958(void)
{
FlagSet(FLAG_SYS_CRUISE_MODE);
- FlagSet(0x4001);
- FlagSet(0x4000);
+ FlagSet(FLAG_SPECIAL_FLAG_1);
+ FlagSet(FLAG_SPECIAL_FLAG_0);
saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1);
sub_80C7754();
sub_8080F9C();
diff --git a/src/field/field_specials.c b/src/field/field_specials.c
index 87a9e2d5d..1a4ebe1af 100644
--- a/src/field/field_specials.c
+++ b/src/field/field_specials.c
@@ -99,13 +99,13 @@ u16 GetPlayerAvatarBike(void)
return 0;
}
-static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
+static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions)
{
u8 result;
- if (arg1 <= 99)
+ if (numBikeCollisions <= 99)
{
- ConvertIntToDecimalStringN(gStringVar1, arg1, STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar1, numBikeCollisions, STR_CONV_MODE_LEFT_ALIGN, 2);
StringAppend(gStringVar1, gOtherText_Times);
}
else
@@ -113,11 +113,11 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
StringCopy(gStringVar1, gOtherText_99Times);
}
- if (arg0 < 3600)
+ if (numFrames < 3600)
{
- ConvertIntToDecimalStringN(gStringVar2, arg0 / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar2, numFrames / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
gStringVar2[2] = CHAR_DECIMAL_SEPARATOR;
- ConvertIntToDecimalStringN(&gStringVar2[3], ((arg0 % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
+ ConvertIntToDecimalStringN(&gStringVar2[3], ((numFrames % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
StringAppend(gStringVar2, gOtherText_Seconds);
}
else
@@ -126,44 +126,44 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
}
result = 0;
- if (arg1 == 0)
+ if (numBikeCollisions == 0)
{
result = 5;
}
- else if (arg1 < 4)
+ else if (numBikeCollisions < 4)
{
result = 4;
}
- else if (arg1 < 10)
+ else if (numBikeCollisions < 10)
{
result = 3;
}
- else if (arg1 < 20)
+ else if (numBikeCollisions < 20)
{
result = 2;
}
- else if (arg1 < 100)
+ else if (numBikeCollisions < 100)
{
result = 1;
}
- if (arg0 / 60 <= 10)
+ if (numFrames / 60 <= 10)
{
result += 5;
}
- else if (arg0 / 60 <= 15)
+ else if (numFrames / 60 <= 15)
{
result += 4;
}
- else if (arg0 / 60 <= 20)
+ else if (numFrames / 60 <= 20)
{
result += 3;
}
- else if (arg0 / 60 <= 40)
+ else if (numFrames / 60 <= 40)
{
result += 2;
}
- else if (arg0 / 60 < 60)
+ else if (numFrames / 60 < 60)
{
result += 1;
}
@@ -173,36 +173,36 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
}
void FinishCyclingRoadChallenge(void) {
- const u32 time = gMain.vblankCounter1 - gBikeCyclingTimer;
+ const u32 numFrames = gMain.vblankCounter1 - gBikeCyclingTimer;
- DetermineCyclingRoadResults(time, gBikeCollisions);
- RecordCyclingRoadResults(time, gBikeCollisions);
+ DetermineCyclingRoadResults(numFrames, gBikeCollisions);
+ RecordCyclingRoadResults(numFrames, gBikeCollisions);
}
-static void RecordCyclingRoadResults(u32 arg0, u8 arg1) {
- u16 high = VarGet(0x4028);
- u16 low = VarGet(0x4029);
- u32 record = high + (low << 16);
+static void RecordCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) {
+ u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
+ u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
+ u32 framesRecord = low + (high << 16);
- if (record > arg0 || record == 0)
+ if (framesRecord > numFrames || framesRecord == 0)
{
- VarSet(0x4028, arg0);
- VarSet(0x4029, arg0 >> 16);
- VarSet(0x4027, arg1);
+ VarSet(VAR_CYCLING_ROAD_RECORD_TIME_L, numFrames);
+ VarSet(VAR_CYCLING_ROAD_RECORD_TIME_H, numFrames >> 16);
+ VarSet(VAR_CYCLING_ROAD_RECORD_COLLISIONS, numBikeCollisions);
}
}
u16 GetRecordedCyclingRoadResults(void) {
- u16 high = VarGet(0x4028);
- u16 low = VarGet(0x4029);
- u32 record = high + (low << 16);
+ u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L);
+ u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H);
+ u32 framesRecord = low + (high << 16);
- if (record == 0)
+ if (framesRecord == 0)
{
return FALSE;
}
- DetermineCyclingRoadResults(record, VarGet(0x4027));
+ DetermineCyclingRoadResults(framesRecord, VarGet(VAR_CYCLING_ROAD_RECORD_COLLISIONS));
return TRUE;
}
@@ -212,9 +212,9 @@ void UpdateCyclingRoadState(void) {
return;
}
- if (VarGet(0x40a9) == 2 || VarGet(0x40a9) == 3)
+ if (VarGet(VAR_CYCLING_CHALLENGE_STATE) == 2 || VarGet(VAR_CYCLING_CHALLENGE_STATE) == 3)
{
- VarSet(0x40a9, 0);
+ VarSet(VAR_CYCLING_CHALLENGE_STATE, 0);
Overworld_SetSavedMusic(SE_STOP);
}
}
@@ -242,7 +242,7 @@ bool32 CountSSTidalStep(u16 delta)
u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
{
u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT);
- switch (*GetVarPointer(VAR_PORTHOLE))
+ switch (*GetVarPointer(VAR_PORTHOLE_STATE))
{
case 1:
case 8:
@@ -312,28 +312,23 @@ u8 GetLinkPartnerNames(void)
return nLinkPlayers;
}
-const u8 gUnknown_083F8358[4] = {7, 9, 8, 10};
-const s8 gUnknown_083F835C[4][2] = {
- { 0, 1},
- { 1, 0},
- { 0, -1},
- {-1, 0}
-};
-
void SpawnBerryBlenderLinkPlayerSprites(void)
{
- u8 unknown_083F8358[4];
- u8 unknown_083F835C[4][2];
+ u8 j = 0;
+ s16 x = 0;
+ s16 y = 0;
+ u8 unknown_083F8358[] = {7, 9, 8, 10};
+ s8 unknown_083F835C[][2] = {
+ { 0, 1},
+ { 1, 0},
+ { 0, -1},
+ {-1, 0}
+ };
u8 myLinkPlayerNumber;
u8 playerDirectionLowerNybble;
u8 rivalAvatarGraphicsId;
u8 i;
- u8 j = 0;
- s16 x = 0;
- s16 y = 0;
- memcpy(unknown_083F8358, gUnknown_083F8358, sizeof gUnknown_083F8358);
- memcpy(unknown_083F835C, gUnknown_083F835C, sizeof gUnknown_083F835C);
myLinkPlayerNumber = sub_8008218();
playerDirectionLowerNybble = player_get_direction_lower_nybble();
switch (playerDirectionLowerNybble)
@@ -362,7 +357,7 @@ void SpawnBerryBlenderLinkPlayerSprites(void)
if (myLinkPlayerNumber != i)
{
rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gLinkPlayers[i].gender);
- SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, (s8)unknown_083F835C[j][0] + x + 7, (s8)unknown_083F835C[j][1] + y + 7, 0);
+ SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, unknown_083F835C[j][0] + x + 7, unknown_083F835C[j][1] + y + 7, 0);
j++;
if (j == 4)
{
@@ -1885,12 +1880,12 @@ u8 sub_810F5BC(void)
{
if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1))
{
- VarSet(VAR_0x409a, 4);
+ VarSet(VAR_RUSTURF_TUNNEL_STATE, 4);
return TRUE;
}
else if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2))
{
- VarSet(VAR_0x409a, 5);
+ VarSet(VAR_RUSTURF_TUNNEL_STATE, 5);
return TRUE;
}
}
@@ -1919,7 +1914,7 @@ void PutZigzagoonInPlayerParty(void)
bool8 IsStarterInParty(void)
{
u8 i;
- u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE));
+ u16 starter = GetStarterPokemon(VarGet(VAR_STARTER_MON));
u8 partyCount = CalculatePlayerPartyCount();
for (i = 0; i < partyCount; i++)
{
@@ -2000,9 +1995,9 @@ static void sub_810F814(u8 taskId)
EnableBothScriptContexts();
}
-bool8 sub_810F828(void)
+bool8 FoundBlackGlasses(void)
{
- return FlagGet(FLAG_UNKNOWN_2B8);
+ return FlagGet(FLAG_HIDDEN_ITEM_BLACK_GLASSES);
}
void SetRoute119Weather(void)
@@ -2047,8 +2042,8 @@ void sub_810F8FC(void)
u16 sub_810F908(void)
{
- u16 var40c2 = VarGet(VAR_0x40C2);
- if (gLocalTime.days - var40c2 >= 7)
+ u16 tmReceivedDay = VarGet(VAR_PACIFIDLOG_TM_RECEIVED_DAY);
+ if (gLocalTime.days - tmReceivedDay >= 7)
{
return 0;
}
@@ -2056,12 +2051,12 @@ u16 sub_810F908(void)
{
return 8;
}
- return 7 - (gLocalTime.days - var40c2);
+ return 7 - (gLocalTime.days - tmReceivedDay);
}
u16 sub_810F950(void)
{
- VarSet(VAR_0x40C2, gLocalTime.days);
+ VarSet(VAR_PACIFIDLOG_TM_RECEIVED_DAY, gLocalTime.days);
return gLocalTime.days;
}
@@ -2146,13 +2141,13 @@ void sub_810FAA0(void)
FlagClear(0x316);
FlagClear(0x317);
FlagClear(0x318);
- VarSet(VAR_0x4095, 1);
+ VarSet(VAR_LILYCOVE_FAN_CLUB_STATE, 1);
}
}
u8 sub_810FB10(u8 a0)
{
- if (VarGet(VAR_0x4095) == 2)
+ if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
{
if ((gSaveBlock1.vars[0x41] & 0x7f) + gUnknown_083F8404[a0] >= 20)
{
@@ -2355,7 +2350,7 @@ void sub_810FE1C(void *linkRecords, u8 a, u8 b)
void sub_810FEFC(void)
{
- if (VarGet(VAR_0x4095) == 2)
+ if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2)
{
sub_810FA74();
if (gBattleOutcome == 1)
diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c
index 108ba64ba..393c7d75a 100644
--- a/src/field/field_tasks.c
+++ b/src/field/field_tasks.c
@@ -554,20 +554,20 @@ const u16 gUnknown_083763E4[] = {
0,
0,
0,
- VAR_0x4001,
- VAR_0x4002,
- VAR_0x4003,
- VAR_0x4004,
+ VAR_TEMP_1,
+ VAR_TEMP_2,
+ VAR_TEMP_3,
+ VAR_TEMP_4,
0,
0,
- VAR_0x4005,
- VAR_0x4006,
- VAR_0x4007,
+ VAR_TEMP_5,
+ VAR_TEMP_6,
+ VAR_TEMP_7,
0,
0,
- VAR_0x4008,
- VAR_0x4009,
- VAR_0x400A,
+ VAR_TEMP_8,
+ VAR_TEMP_9,
+ VAR_TEMP_A,
0,
0,
0,
diff --git a/src/field/field_weather.c b/src/field/field_weather.c
index 19ccca3bf..4a819bddf 100644
--- a/src/field/field_weather.c
+++ b/src/field/field_weather.c
@@ -5,6 +5,7 @@
#include "palette.h"
#include "random.h"
#include "script.h"
+#include "constants/weather.h"
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
@@ -397,31 +398,31 @@ void sub_807CCAC(void)
case WEATHER_RAIN_MED:
case WEATHER_RAIN_HEAVY:
case WEATHER_SNOW:
- case 11:
+ case WEATHER_DARK:
if (sub_807CDC4() == 0)
{
gWeatherPtr->unknown_6C0 = 3;
gWeatherPtr->unknown_6C6 = 3;
}
break;
- case 12:
+ case WEATHER_DROUGHT:
if (sub_807CE24() == 0)
{
gWeatherPtr->unknown_6C0 = -6;
gWeatherPtr->unknown_6C6 = 3;
}
break;
- case 6:
+ case WEATHER_FOG_1:
if (sub_807CE7C() == 0)
{
gWeatherPtr->unknown_6C0 = 0;
gWeatherPtr->unknown_6C6 = 3;
}
break;
- case 7:
- case 8:
- case 9:
- case 10:
+ case WEATHER_ASH:
+ case WEATHER_SANDSTORM:
+ case WEATHER_FOG_2:
+ case WEATHER_FOG_3:
default:
if (!gPaletteFade.active)
{
@@ -807,9 +808,9 @@ void fade_screen(u8 a, u8 delay)
case WEATHER_RAIN_MED:
case WEATHER_RAIN_HEAVY:
case WEATHER_SNOW:
- case 6:
- case 11:
- case 12:
+ case WEATHER_FOG_1:
+ case WEATHER_DARK:
+ case WEATHER_DROUGHT:
r2 = 1;
break;
default:
@@ -854,7 +855,7 @@ void sub_807D78C(u8 a)
case 1:
if (gWeatherPtr->unknown_6CA != 0)
{
- if (gWeatherPtr->currWeather == 6)
+ if (gWeatherPtr->currWeather == WEATHER_FOG_1)
sub_807D540(r4);
r4 *= 16;
for (i = 0; i < 16; i++)
@@ -867,7 +868,7 @@ void sub_807D78C(u8 a)
BlendPalette(r4, 16, gPaletteFade.y, gPaletteFade.blendColor);
break;
default:
- if (gWeatherPtr->currWeather != 6)
+ if (gWeatherPtr->currWeather != WEATHER_FOG_1)
{
sub_807CEBC(r4, 1, gWeatherPtr->unknown_6C0);
}
diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c
index 31eda4393..5a59d6c2a 100644
--- a/src/field/field_weather_effects.c
+++ b/src/field/field_weather_effects.c
@@ -4,6 +4,7 @@
#include "overworld.h"
#include "random.h"
#include "script.h"
+#include "constants/weather.h"
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
diff --git a/src/field/fldeff_secret_base_pc.c b/src/field/fldeff_secret_base_pc.c
index 8d71a4fb9..394c4bc56 100644
--- a/src/field/fldeff_secret_base_pc.c
+++ b/src/field/fldeff_secret_base_pc.c
@@ -60,7 +60,7 @@ void DoSecretBasePCTurnOffEffect(void)
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
PlaySE(SE_PC_OFF);
- if (!VarGet(VAR_0x4054))
+ if (!VarGet(VAR_CURRENT_SECRET_BASE))
MapGridSetMetatileIdAt(x, y, 3616);
else
MapGridSetMetatileIdAt(x, y, 3617);
diff --git a/src/field/item_use.c b/src/field/item_use.c
index 37cd8ba78..e1fdddce0 100644
--- a/src/field/item_use.c
+++ b/src/field/item_use.c
@@ -14,6 +14,7 @@
#include "fieldmap.h"
#include "item.h"
#include "item_menu.h"
+#include "constants/flags.h"
#include "constants/items.h"
#include "mail.h"
#include "main.h"
@@ -328,7 +329,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId)
for (i = 0; i < events->bgEventCount; i++)
{
- if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START))
{
// do a distance lookup of each item so long as the index remains less than the objects on the current map.
distanceX = (u16)events -> bgEvents[i].x + 7;
@@ -360,7 +361,7 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y)
{
if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
{
- if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START))
return TRUE;
else
return FALSE;
@@ -921,7 +922,7 @@ static void PrepareItemUseMessage(void)
void ItemUseOutOfBattle_Repel(u8 var)
{
- if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE)
+ if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
PrepareItemUseMessage();
diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c
index 83febc56e..03de26054 100644
--- a/src/field/lottery_corner.c
+++ b/src/field/lottery_corner.c
@@ -30,7 +30,7 @@ void ResetLotteryCorner(void)
u16 rand = Random();
SetLotteryNumber((Random() << 16) | rand);
- VarSet(VAR_POKELOT_PRIZE, 0);
+ VarSet(VAR_LOTTERY_PRIZE, 0);
}
void SetRandomLotteryNumber(u16 i)
@@ -152,19 +152,19 @@ static u8 GetMatchingDigits(u16 winNumber, u16 otId)
// lottery numbers go from 0 to 99999, not 65535 (0xFFFF). interestingly enough, the function that calls GetLotteryNumber shifts to u16, so it cant be anything above 65535 anyway.
void SetLotteryNumber(u32 lotteryNum)
{
- u16 lowNum = lotteryNum >> 16;
- u16 highNum = lotteryNum;
+ u16 high = lotteryNum >> 16;
+ u16 low = lotteryNum;
- VarSet(VAR_POKELOT_RND1, highNum);
- VarSet(VAR_POKELOT_RND2, lowNum);
+ VarSet(VAR_LOTTERY_RND_L, low);
+ VarSet(VAR_LOTTERY_RND_H, high);
}
u32 GetLotteryNumber(void)
{
- u16 highNum = VarGet(VAR_POKELOT_RND1);
- u16 lowNum = VarGet(VAR_POKELOT_RND2);
+ u16 low = VarGet(VAR_LOTTERY_RND_L);
+ u16 high = VarGet(VAR_LOTTERY_RND_H);
- return (lowNum << 16) | highNum;
+ return (high << 16) | low;
}
// interestingly, this may have been the original lottery number set function, but GF tried to change it to 32-bit later but didnt finish changing all calls as one GetLotteryNumber still shifts to u16.
diff --git a/src/field/map_name_popup.c b/src/field/map_name_popup.c
index 01105d0db..2e2dfc72e 100644
--- a/src/field/map_name_popup.c
+++ b/src/field/map_name_popup.c
@@ -19,7 +19,7 @@ bool8 unref_sub_80A2F44(void)
void ShowMapNamePopup(void)
{
- if (FlagGet(0x4000) != TRUE)
+ if (FlagGet(FLAG_SPECIAL_FLAG_0) != TRUE)
{
if (!FuncIsActiveTask(Task_MapNamePopup))
{
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
index 30f6f5233..4db513f65 100644
--- a/src/field/mauville_man.c
+++ b/src/field/mauville_man.c
@@ -10,6 +10,7 @@
#include "overworld.h"
#include "random.h"
#include "script.h"
+#include "constants/map_objects.h"
#include "constants/songs.h"
#include "sound.h"
#include "string_util.h"
@@ -974,7 +975,7 @@ static void Task_BardSong(u8 taskId)
void sub_80F83D0(void)
{
- VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan());
+ VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BARD + GetCurrentMauvilleOldMan());
}
struct Story
diff --git a/src/field/overworld.c b/src/field/overworld.c
index 834a2afa4..d0e40eac3 100644
--- a/src/field/overworld.c
+++ b/src/field/overworld.c
@@ -287,7 +287,7 @@ void LoadMapObjTemplatesFromHeader(void)
{
// Clear map object templates
CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates));
-
+
// Copy map header events to save block
CpuCopy32(gMapHeader.events->mapObjects,
gSaveBlock1.mapObjectTemplates,
@@ -816,7 +816,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
{
- if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED))
+ if (VarGet(VAR_WEATHER_INSTITUTE_STATE))
return FALSE;
if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F))
return FALSE;
@@ -981,7 +981,7 @@ static void PlayAmbientCry(void)
s16 x, y;
s8 pan;
s8 volume;
-
+
PlayerGetDestCoords(&x, &y);
if (sIsAmbientCryWaterMon == TRUE
&& !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y)))
@@ -1158,7 +1158,7 @@ void OverworldBasic(void)
sub_8072EDC();
}
-// This CB2 is used when starting
+// This CB2 is used when starting
void CB2_OverworldBasic(void)
{
OverworldBasic();
@@ -2430,7 +2430,7 @@ void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4)
mapObj->active = 1;
mapObj->mapobj_bit_1 = a4;
- mapObj->mapobj_unk_19 = 2;
+ mapObj->range.as_byte = 2;
mapObj->spriteId = 64;
InitLinkPlayerMapObjectPos(mapObj, x, y);
@@ -2453,7 +2453,7 @@ void unref_sub_8055A6C(u8 linkPlayerId, u8 a2)
{
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
struct MapObject *mapObj = &gMapObjects[mapObjId];
- mapObj->mapobj_unk_19 = a2;
+ mapObj->range.as_byte = a2;
}
}
@@ -2487,7 +2487,7 @@ u8 sub_8055B30(u8 linkPlayerId)
{
u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId;
struct MapObject *mapObj = &gMapObjects[mapObjId];
- return mapObj->mapobj_unk_19;
+ return mapObj->range.as_byte;
}
u8 sub_8055B50(u8 linkPlayerId)
@@ -2559,10 +2559,10 @@ static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapOb
{
s16 x, y;
- mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19);
- FieldObjectMoveDestCoords(mapObj, mapObj->mapobj_unk_19, &x, &y);
+ mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
+ FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y);
- if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->mapobj_unk_19, x, y))
+ if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y))
{
return 0;
}
@@ -2577,7 +2577,7 @@ static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapOb
static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
- mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19);
+ mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte);
return 0;
}
@@ -2590,7 +2590,7 @@ static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct Map
{
mapObj->mapobj_unk_21--;
linkPlayerMapObj->mode = 1;
- MoveCoords(mapObj->mapobj_unk_19, &mapObj->coords1.x, &mapObj->coords1.y);
+ MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y);
if (!mapObj->mapobj_unk_21)
{
npc_coords_shift_still(mapObj);
@@ -2662,9 +2662,9 @@ void SpriteCB_LinkPlayer(struct Sprite *sprite)
SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
sprite->oam.priority = ZCoordToPriority(mapObj->elevation);
if (!linkPlayerMapObj->mode)
- StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->mapobj_unk_19));
+ StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte));
else
- StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->mapobj_unk_19));
+ StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte));
sub_806487C(sprite, 0);
if (mapObj->mapobj_bit_2)
{
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 089f93f9e..9c1150515 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -436,34 +436,6 @@ static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = {
{HandleMoveTutorPartyMenu, SetupMoveTutorPartyMenu, 0}, // PARTY_MENU_TYPE_MOVE_TUTOR
};
-static const u16 gUnknown_08376CD4[] = {
- 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
- 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
-};
-
-static const u16 gUnknown_08376CEC[] = {
- 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F,
- 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
-};
-
-static const u8 *const StatNames[] = {
- gOtherText_HP,
- gOtherText_Attack,
- gOtherText_Defense,
- gOtherText_SpAtk,
- gOtherText_SpDef,
- gOtherText_Speed,
-};
-
-static const u8 StatDataTypes[] = {
- MON_DATA_MAX_HP,
- MON_DATA_ATK,
- MON_DATA_DEF,
- MON_DATA_SPATK,
- MON_DATA_SPDEF,
- MON_DATA_SPEED,
-};
-
struct Unk201C000
{
/*0x00*/ struct Pokemon *pokemon;
@@ -1227,12 +1199,11 @@ void sub_806BB3C(s16 a, u16 b)
void sub_806BB9C(u8 a)
{
u8 i;
- u16 *vramPtr;
- const u16 arr[12];
-
- memcpy(&arr, gUnknown_08376CD4, sizeof gUnknown_08376CD4);
-
- vramPtr = (u16 *)(BG_VRAM + 0x3C30);
+ u16 arr[12] = {
+ 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
+ 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
+ };
+ u16 *vramPtr = (u16 *)(BG_VRAM + 0x3C30);
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -1243,12 +1214,11 @@ void sub_806BB9C(u8 a)
void sub_806BBEC(u8 a)
{
u8 i;
- u16 *vramPtr;
- const u16 arr[12];
-
- memcpy(&arr, gUnknown_08376CEC, sizeof gUnknown_08376CEC);
-
- vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
+ u16 arr[12] = {
+ 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F,
+ 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+ };
+ u16 *vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -4910,6 +4880,23 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
gMain.newKeys = 0;
}
+static const u8 *const StatNames[] = {
+ gOtherText_HP,
+ gOtherText_Attack,
+ gOtherText_Defense,
+ gOtherText_SpAtk,
+ gOtherText_SpDef,
+ gOtherText_Speed,
+};
+
+static const u8 StatDataTypes[] = {
+ MON_DATA_MAX_HP,
+ MON_DATA_ATK,
+ MON_DATA_DEF,
+ MON_DATA_SPATK,
+ MON_DATA_SPDEF,
+ MON_DATA_SPEED,
+};
void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
{
u8 i;
diff --git a/src/field/player_pc.c b/src/field/player_pc.c
index d92d13ce4..4fef09386 100644
--- a/src/field/player_pc.c
+++ b/src/field/player_pc.c
@@ -171,15 +171,6 @@ static const u8 gNonSelectedItemQuantityFormatText[] = _("{STR_VAR_1}");
static const u8 gSelectedItemQuantityFormatText[] = _("{COLOR RED}{STR_VAR_1}");
static const u8 gUnknown_08406330[] = _("{CLEAR_TO 32}");
-static const u16 gUnknown_08406334[3] =
-{
- 0x5294,
- 0x6B5A,
- 0x7FFF
-};
-
-static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}");
-
extern u8 *gUnknown_02039314;
extern struct MenuAction gUnknown_08406298[];
@@ -205,8 +196,8 @@ void NewGameInitPCItems(void)
u8 i;
// because Game Freak don't know how to use a struct or a 2d array
- for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, ITEM_ID) && NEW_GAME_PC_ITEMS(i, QUANTITY) &&
- AddPCItem(NEW_GAME_PC_ITEMS(i, ITEM_ID), NEW_GAME_PC_ITEMS(i, QUANTITY)) == TRUE; i++)
+ for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, PC_ITEM_ID) && NEW_GAME_PC_ITEMS(i, PC_QUANTITY) &&
+ AddPCItem(NEW_GAME_PC_ITEMS(i, PC_ITEM_ID), NEW_GAME_PC_ITEMS(i, PC_QUANTITY)) == TRUE; i++)
;
}
@@ -1007,9 +998,12 @@ static void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var)
static void ItemStorage_LoadPalette(void)
{
- u16 arr[3];
+ u16 arr[] = {
+ 0x5294,
+ 0x6B5A,
+ 0x7FFF
+ };
- memcpy(arr, gUnknown_08406334, sizeof(arr));
LoadPalette(&arr[2], 0xDF, 2);
LoadPalette(&arr[1], 0xD1, 2);
LoadPalette(&arr[0], 0xD8, 2);
@@ -1261,6 +1255,8 @@ static void Mailbox_ReturnToFieldFromReadMail(void)
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
+static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}");
+
static void Mailbox_MoveToBag(u8 taskId)
{
HandleDestroyMenuCursors();
diff --git a/src/field/secret_base.c b/src/field/secret_base.c
index 7589ab1e3..400074604 100644
--- a/src/field/secret_base.c
+++ b/src/field/secret_base.c
@@ -180,7 +180,7 @@ void sub_80BB5E4(void)
if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId)
continue;
gSpecialVar_Result = 1;
- VarSet(VAR_0x4054, i);
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
break;
}
}
@@ -284,7 +284,7 @@ void sub_80BB8CC(void)
for (idx=0; idx<4; idx++) {
gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
}
- VarSet(VAR_0x4054, 0);
+ VarSet(VAR_CURRENT_SECRET_BASE, 0);
nameLength = sub_80BB8A8(gSaveBlock2.playerName);
memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH);
StringCopyN(gSaveBlock1.secretBases[0].playerName, gSaveBlock2.playerName, nameLength);
@@ -333,7 +333,7 @@ void sub_80BBA48(u8 taskid)
}
break;
case 2:
- curbaseid = VarGet(VAR_0x4054);
+ curbaseid = VarGet(VAR_CURRENT_SECRET_BASE);
if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
gSaveBlock1.secretBases[curbaseid].sbr_field_10++;
sub_80BBA14();
@@ -412,7 +412,7 @@ void sub_80BBCCC(u8 flagIn)
u16 curBaseId;
u16 x, y;
if (CurrentMapIsSecretBase()) {
- curBaseId = VarGet(VAR_0x4054);
+ curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
for (x=0; x<16; x++) {
if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) {
sub_80FF394((gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]);
@@ -437,7 +437,7 @@ void sub_80BBDD0(void)
u8 metatile;
u8 permission;
u8 ndecor;
- u16 curBase = VarGet(VAR_0x4054);
+ u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE);
if (!CurrentMapIsSecretBase()) {
roomdecor = gSaveBlock1.playerRoomDecor;
roomdecorpos = gSaveBlock1.playerRoomDecorPos;
@@ -478,8 +478,8 @@ void sub_80BBDD0(void)
void sub_80BBFA4(void)
{
- int curBase = VarGet(VAR_0x4054);
- VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
+ int curBase = VarGet(VAR_CURRENT_SECRET_BASE);
+ VarSet(VAR_OBJ_GFX_ID_F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
}
void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
@@ -571,12 +571,12 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
}
u8 *GetSecretBaseMapName(u8 *dest) {
- gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].secretBaseId;
- return sub_80BC190(dest, VarGet(VAR_0x4054));
+ gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
+ return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
void sub_80BC224(void) {
- u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_0x4054)].playerName;
+ u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName;
u8 *var1 = gStringVar1;
u8 var2 = sub_80BB8A8(var0);
u8 *var3 = StringCopyN(var1, var0, var2);
@@ -1173,7 +1173,7 @@ void sub_80BCBF8(u8 taskId)
void sub_80BCC54(u8 taskId)
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
BuyMenuFreeMemory();
DestroyVerticalScrollIndicator(0);
@@ -1199,7 +1199,7 @@ u8 sub_80BCCA4(u8 secretBaseIndex)
const u8 *sub_80BCCE8(void)
{
- u8 param = sub_80BCCA4(VarGet(VAR_0x4054));
+ u8 param = sub_80BCCA4(VarGet(VAR_CURRENT_SECRET_BASE));
if (param == 0) return UnknownString_81A1BB2;
if (param == 1) return UnknownString_81A1F67;
if (param == 2) return UnknownString_81A2254;
@@ -1229,7 +1229,7 @@ void unref_sub_80BCD7C(u8 secretBaseIndex)
void sub_80BCE1C(void)
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
sub_810FB10(1);
CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]);
@@ -1237,12 +1237,12 @@ void sub_80BCE1C(void)
void sub_80BCE4C()
{
- gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result;
+ gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result;
}
void sub_80BCE90()
{
- u16 curBaseIndex = VarGet(VAR_0x4054);
+ u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
if (!FlagGet(FLAG_DAILY_UNKNOWN_8C2))
{
diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c
index 38bc6971c..3034b2b65 100644
--- a/src/field/trainer_see.c
+++ b/src/field/trainer_see.c
@@ -9,14 +9,22 @@
#include "task.h"
#include "util.h"
+static bool8 CheckTrainer(u8);
+static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
+static void objc_exclamation_mark_probably(struct Sprite *sprite);
+static bool8 TrainerCanApproachPlayer(struct MapObject *);
+static void sub_80842C8(struct MapObject *, u8);
+static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction);
+static void RunTrainerSeeFuncList(u8 taskId);
+
const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp");
const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp");
const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp");
-u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
-u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) =
{
@@ -26,9 +34,6 @@ static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16,
GetTrainerApproachDistanceEast,
};
-extern struct SpriteTemplate gSpriteTemplate_839B510;
-extern struct SpriteTemplate gSpriteTemplate_839B528;
-
bool8 CheckTrainers(void)
{
u8 mapObjId;
@@ -43,7 +48,7 @@ bool8 CheckTrainers(void)
return FALSE;
}
-bool8 CheckTrainer(u8 mapObjId)
+static bool8 CheckTrainer(u8 mapObjId)
{
u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId);
@@ -69,7 +74,7 @@ bool8 CheckTrainer(u8 mapObjId)
}
}
-bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
+static bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
{
s16 x, y;
u8 i;
@@ -79,14 +84,14 @@ bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
if (trainerObj->trainerType == 1) // can only see in one direction
{
approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, trainerObj->mapobj_unk_18);
+ return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->mapobj_unk_18);
}
else // can see in all directions
{
for (i = 0; i < 4; i++)
{
approachDistance = sDirectionalApproachDistanceFuncs[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- if (CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east
+ if (CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east
return approachDistance;
}
}
@@ -94,7 +99,7 @@ bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
}
// Returns how far south the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.x == x
&& y > trainerObj->coords2.y
@@ -105,7 +110,7 @@ u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16
}
// Returns how far north the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.x == x
&& y < trainerObj->coords2.y
@@ -116,7 +121,7 @@ u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16
}
// Returns how far west the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.y == y
&& x < trainerObj->coords2.x
@@ -127,7 +132,7 @@ u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x
}
// Returns how far east the player is from trainer. 0 if out of trainer's sight.
-u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
if (trainerObj->coords2.y == y
&& x > trainerObj->coords2.x
@@ -143,7 +148,7 @@ u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x
#define COLLISION_MASK 1
#endif
-bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approachDistance, u8 direction)
+static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction)
{
s16 x, y;
u8 unk19_temp;
@@ -159,21 +164,21 @@ bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approac
for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y))
{
- collision = sub_8060024((struct MapObject *)trainerObj, x, y, direction);
+ collision = sub_8060024(trainerObj, x, y, direction);
if (collision != 0 && (collision & COLLISION_MASK))
return FALSE;
}
// preserve mapobj_unk_19 before clearing.
- unk19_temp = trainerObj->mapobj_unk_19;
- unk19b_temp = trainerObj->mapobj_unk_19b;
- trainerObj->mapobj_unk_19 = 0;
- trainerObj->mapobj_unk_19b = 0;
+ unk19_temp = trainerObj->range.as_nybbles.x;
+ unk19b_temp = trainerObj->range.as_nybbles.y;
+ trainerObj->range.as_nybbles.x = 0;
+ trainerObj->range.as_nybbles.y = 0;
collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction);
- trainerObj->mapobj_unk_19 = unk19_temp;
- trainerObj->mapobj_unk_19b = unk19b_temp;
+ trainerObj->range.as_nybbles.x = unk19_temp;
+ trainerObj->range.as_nybbles.y = unk19b_temp;
if (collision == 4)
return approachDistance;
@@ -183,7 +188,7 @@ bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approac
#define tTrainerObjHi data[1]
#define tTrainerObjLo data[2]
-void sub_80842C8(struct MapObject *trainerObj, u8 b)
+static void sub_80842C8(struct MapObject *trainerObj, u8 b)
{
u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50);
struct Task *task = &gTasks[taskId];
@@ -193,7 +198,7 @@ void sub_80842C8(struct MapObject *trainerObj, u8 b)
task->data[3] = b;
}
-void sub_80842FC(TaskFunc followupFunc)
+static void sub_80842FC(TaskFunc followupFunc)
{
TaskFunc taskFunc = RunTrainerSeeFuncList;
u8 taskId = FindTaskIdByFunc(taskFunc);
@@ -232,7 +237,7 @@ static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct
sub_80846C8,
};
-void RunTrainerSeeFuncList(u8 taskId)
+static void RunTrainerSeeFuncList(u8 taskId)
{
struct Task *task = &gTasks[taskId];
struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo));
@@ -450,6 +455,41 @@ static void Task_DestroyTrainerApproachTask(u8 taskId)
EnableBothScriptContexts();
}
+static const struct OamData gOamData_839B4D8 = {
+ .size = 1, .priority = 1
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_839B4E0[] = {
+ { gSpriteImage_839B308, sizeof gSpriteImage_839B308 },
+ { gSpriteImage_839B388, sizeof gSpriteImage_839B388 }
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_839B4F0[] = {
+ { gSpriteImage_839B408, sizeof gSpriteImage_839B408 }
+};
+
+static const union AnimCmd gSpriteAnim_839B4F8[] = {
+ ANIMCMD_FRAME(0, 60),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_839B500[] = {
+ ANIMCMD_FRAME(1, 60),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_839B508[] = {
+ gSpriteAnim_839B4F8,
+ gSpriteAnim_839B500
+};
+
+static const struct SpriteTemplate gSpriteTemplate_839B510 = {
+ 0xffff, 0xffff, &gOamData_839B4D8, gSpriteAnimTable_839B508, gSpriteImageTable_839B4E0, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
+};
+static const struct SpriteTemplate gSpriteTemplate_839B528 = {
+ 0xffff, 4100, &gOamData_839B4D8, gSpriteAnimTable_839B508, gSpriteImageTable_839B4F0, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
+};
+
u8 FldEff_ExclamationMarkIcon1(void)
{
u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53);
@@ -480,7 +520,7 @@ u8 FldEff_HeartIcon(void)
return 0;
}
-void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
+static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
{
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = 1;
@@ -494,7 +534,7 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
StartSpriteAnim(sprite, a3);
}
-void objc_exclamation_mark_probably(struct Sprite *sprite)
+static void objc_exclamation_mark_probably(struct Sprite *sprite)
{
u8 mapObjId;
diff --git a/src/field/tv.c b/src/field/tv.c
index 1d5bf929c..c38da1f4c 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -2149,7 +2149,7 @@ void GetMomOrDadStringForTVMessage(void)
if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
}
else
@@ -2157,21 +2157,21 @@ void GetMomOrDadStringForTVMessage(void)
if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
}
}
- if (VarGet(VAR_0x4003) == 1)
+ if (VarGet(VAR_TEMP_3) == 1)
{
StringCopy(gStringVar1, gOtherText_Mom);
}
- else if (VarGet(VAR_0x4003) == 2)
+ else if (VarGet(VAR_TEMP_3) == 2)
{
StringCopy(gStringVar1, gOtherText_Dad);
}
- else if (VarGet(VAR_0x4003) > 2)
+ else if (VarGet(VAR_TEMP_3) > 2)
{
- if (VarGet(VAR_0x4003) % 2 == 0)
+ if (VarGet(VAR_TEMP_3) % 2 == 0)
StringCopy(gStringVar1, gOtherText_Mom);
else
StringCopy(gStringVar1, gOtherText_Dad);
@@ -2181,19 +2181,19 @@ void GetMomOrDadStringForTVMessage(void)
if (Random() % 2 != 0)
{
StringCopy(gStringVar1, gOtherText_Mom);
- VarSet(VAR_0x4003, 1);
+ VarSet(VAR_TEMP_3, 1);
}
else
{
StringCopy(gStringVar1, gOtherText_Dad);
- VarSet(VAR_0x4003, 2);
+ VarSet(VAR_TEMP_3, 2);
}
}
}
void sub_80BFD20(void)
{
- VarSet(VAR_0x40BC, 0);
+ VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0);
RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
diff --git a/src/libs/m4a_2.c b/src/libs/m4a_2.c
index 2d3c65848..2e5956ef0 100644
--- a/src/libs/m4a_2.c
+++ b/src/libs/m4a_2.c
@@ -85,7 +85,7 @@ void m4aSoundInit(void)
mplayInfo->memAccArea = gMPlayMemAccArea;
}
- memcpy(&gPokemonCrySong, &gPokemonCrySongTemplate, sizeof(struct PokemonCrySong));
+ gPokemonCrySong = gPokemonCrySongTemplate;
for (i = 0; i < MAX_POKEMON_CRIES; i++)
{
diff --git a/src/libs/m4a_4.c b/src/libs/m4a_4.c
index 2e1d140b4..da5550252 100644
--- a/src/libs/m4a_4.c
+++ b/src/libs/m4a_4.c
@@ -445,7 +445,7 @@ start_song:
#define CRY ((s32)&gPokemonCrySongs + i * sizeof(struct PokemonCrySong))
#define CRY_OFS(field) offsetof(struct PokemonCrySong, field)
- memcpy((void *)CRY, &gPokemonCrySong, sizeof(struct PokemonCrySong));
+ *(struct PokemonCrySong *)CRY = gPokemonCrySong;
*(u32 *)(CRY + CRY_OFS(tone)) = (u32)tone;
*(u32 *)(CRY + CRY_OFS(part)) = CRY + CRY_OFS(part0);
diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c
index 8e5d7a33f..37bc2e0ad 100644
--- a/src/pokemon/pokemon_2.c
+++ b/src/pokemon/pokemon_2.c
@@ -1060,7 +1060,7 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
s32 i, j;
ZeroEnemyPartyMons();
- memcpy(eSecretBaseRecord, secretBaseRecord, sizeof(*secretBaseRecord));
+ *eSecretBaseRecord = *secretBaseRecord;
for (i = 0; i < 6; i++)
{
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c
index 4de5f5345..cd3793cb5 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon/pokemon_summary_screen.c
@@ -1167,13 +1167,13 @@ static void sub_809E5C4(void)
struct Pokemon *pkmn = &party[pssData.monIndex];
u8 moveIndex1 = pssData.selectedMoveIndex;
u8 moveIndex2 = pssData.switchMoveIndex;
-
+
u16 move1 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
u16 move2 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
u8 move1pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex1);
u8 move2pp = GetMonData(pkmn, MON_DATA_PP1 + moveIndex2);
u8 ppBonuses = GetMonData(pkmn, MON_DATA_PP_BONUSES);
-
+
// Calculate PP bonuses
u8 r9 = gUnknown_08208238[moveIndex1];
u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2);
@@ -1182,7 +1182,7 @@ static void sub_809E5C4(void)
ppBonuses &= ~r9;
ppBonuses &= ~r3;
ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
-
+
// Swap the moves
SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
@@ -1197,13 +1197,13 @@ static void sub_809E6D8(void)
struct BoxPokemon *pkmn = &boxMons[pssData.monIndex];
u8 moveIndex1 = pssData.selectedMoveIndex;
u8 moveIndex2 = pssData.switchMoveIndex;
-
+
u16 move1 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
u16 move2 = GetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
u8 move1pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex1);
u8 move2pp = GetBoxMonData(pkmn, MON_DATA_PP1 + moveIndex2);
u8 ppBonuses = GetBoxMonData(pkmn, MON_DATA_PP_BONUSES);
-
+
// Calculate PP bonuses
u8 r9 = gUnknown_08208238[moveIndex1];
u8 r2 = (ppBonuses & r9) >> (moveIndex1 * 2);
@@ -1212,7 +1212,7 @@ static void sub_809E6D8(void)
ppBonuses &= ~r9;
ppBonuses &= ~r3;
ppBonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
-
+
// Swap the moves
SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
SetBoxMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
@@ -2078,7 +2078,7 @@ s8 sub_809F344(u8 partyIndex)
{
while (1)
{
- partyIndex++;
+ partyIndex++;
if (partyIndex == PARTY_SIZE)
{
return -1;
@@ -2100,7 +2100,7 @@ s8 sub_809F388(u8 partyIndex)
return -1;
}
- partyIndex--;
+ partyIndex--;
if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE)
{
return sDoubleBattlePartyOrder[partyIndex];
@@ -2332,7 +2332,7 @@ static bool8 sub_809F7D0(u8 taskId)
u16 move;
sub_809F678(&mon);
- move = GetMonMove(&mon, pssData.selectedMoveIndex);
+ move = GetMonMove(&mon, pssData.selectedMoveIndex);
if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_UNKNOWN)
{
return FALSE;
@@ -2341,17 +2341,13 @@ static bool8 sub_809F7D0(u8 taskId)
return TRUE;
}
-#ifdef NONMATCHING // The two "pssData.selectedMoveIndex = taskData[15];" lines have small register differences.
void sub_809F814(u8 taskId)
{
- u16 var1;
-
s16 *taskData = gTasks[taskId].data;
- var1 = taskData[14];
if (taskData[14] < 4)
{
- taskData[14] = var1 + 1;
+ taskData[14]++;
}
else if (gMain.newKeys & DPAD_UP)
{
@@ -2359,7 +2355,7 @@ void sub_809F814(u8 taskId)
taskData[0] = 4;
taskData[13] = 1;
pssData.selectedMoveIndex = taskData[15];
- sub_809E8F0(taskId, -1);
+ sub_809E8F0(taskId, -1, &pssData.selectedMoveIndex);
}
else if (gMain.newKeys & DPAD_DOWN)
{
@@ -2367,7 +2363,7 @@ void sub_809F814(u8 taskId)
taskData[0] = 4;
taskData[13] = 1;
pssData.selectedMoveIndex = taskData[15];
- sub_809E8F0(taskId, 1);
+ sub_809E8F0(taskId, 1, &pssData.selectedMoveIndex);
}
else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1)
{
@@ -2410,229 +2406,6 @@ void sub_809F814(u8 taskId)
}
}
-#else
-__attribute__((naked))
-void sub_809F814(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r6, r0, 3\n\
- ldr r0, _0809F83C @ =gTasks + 0x8\n\
- mov r8, r0\n\
- adds r4, r6, r0\n\
- ldrh r1, [r4, 0x1C]\n\
- movs r2, 0x1C\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x3\n\
- bgt _0809F840\n\
- adds r0, r1, 0x1\n\
- strh r0, [r4, 0x1C]\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F83C: .4byte gTasks + 0x8\n\
-_0809F840:\n\
- ldr r7, _0809F874 @ =gMain\n\
- ldrh r1, [r7, 0x2E]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0809F880\n\
- mov r0, r8\n\
- subs r0, 0x8\n\
- adds r0, r6, r0\n\
- ldr r1, _0809F878 @ =sub_809E260\n\
- str r1, [r0]\n\
- movs r0, 0x4\n\
- strh r0, [r4]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x1A]\n\
- ldr r2, _0809F87C @ =gSharedMem + 0x18000\n\
- ldrh r0, [r4, 0x1E]\n\
- adds r2, 0x79\n\
- strb r0, [r2]\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- adds r0, r5, 0\n\
- bl sub_809E8F0\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F874: .4byte gMain\n\
-_0809F878: .4byte sub_809E260\n\
-_0809F87C: .4byte gSharedMem + 0x18000\n\
-_0809F880:\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0809F8B4\n\
- mov r0, r8\n\
- subs r0, 0x8\n\
- adds r0, r6, r0\n\
- ldr r1, _0809F8AC @ =sub_809E260\n\
- str r1, [r0]\n\
- movs r0, 0x4\n\
- strh r0, [r4]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x1A]\n\
- ldr r2, _0809F8B0 @ =gSharedMem + 0x18000\n\
- ldrh r0, [r4, 0x1E]\n\
- adds r2, 0x79\n\
- strb r0, [r2]\n\
- adds r0, r5, 0\n\
- movs r1, 0x1\n\
- bl sub_809E8F0\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F8AC: .4byte sub_809E260\n\
-_0809F8B0: .4byte gSharedMem + 0x18000\n\
-_0809F8B4:\n\
- movs r0, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0809F8C8\n\
- bl sub_80F9284\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bne _0809F918\n\
-_0809F8C8:\n\
- ldr r1, _0809F90C @ =gSharedMem + 0x18000\n\
- ldrb r0, [r1, 0xB]\n\
- cmp r0, 0x2\n\
- beq _0809F9C0\n\
- cmp r0, 0x3\n\
- bne _0809F8F4\n\
- adds r0, r1, 0\n\
- adds r0, 0x79\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x4\n\
- bne _0809F8E8\n\
- adds r0, r1, 0\n\
- adds r0, 0x7C\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- beq _0809F8F4\n\
-_0809F8E8:\n\
- movs r0, 0\n\
- movs r1, 0xE\n\
- movs r2, 0x9\n\
- movs r3, 0x12\n\
- bl MenuZeroFillWindowRect\n\
-_0809F8F4:\n\
- ldr r1, _0809F910 @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _0809F914 @ =sub_809E260\n\
- str r1, [r0]\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- adds r0, r5, 0\n\
- b _0809F972\n\
- .align 2, 0\n\
-_0809F90C: .4byte gSharedMem + 0x18000\n\
-_0809F910: .4byte gTasks\n\
-_0809F914: .4byte sub_809E260\n\
-_0809F918:\n\
- ldrh r1, [r7, 0x2E]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0809F92E\n\
- bl sub_80F9284\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0809F994\n\
-_0809F92E:\n\
- ldr r1, _0809F988 @ =gSharedMem + 0x18000\n\
- adds r2, r1, 0\n\
- adds r2, 0x76\n\
- ldrb r0, [r1, 0xB]\n\
- ldrb r2, [r2]\n\
- cmp r0, r2\n\
- beq _0809F9C0\n\
- cmp r0, 0x2\n\
- bne _0809F960\n\
- adds r0, r1, 0\n\
- adds r0, 0x79\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x4\n\
- bne _0809F954\n\
- adds r0, r1, 0\n\
- adds r0, 0x7C\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- beq _0809F960\n\
-_0809F954:\n\
- movs r0, 0\n\
- movs r1, 0xE\n\
- movs r2, 0x9\n\
- movs r3, 0x12\n\
- bl MenuZeroFillWindowRect\n\
-_0809F960:\n\
- ldr r1, _0809F98C @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _0809F990 @ =sub_809E260\n\
- str r1, [r0]\n\
- adds r0, r5, 0\n\
- movs r1, 0x1\n\
-_0809F972:\n\
- bl SummaryScreenHandleLeftRightInput\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x1\n\
- bl sub_80A1488\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x1\n\
- bl sub_80A1654\n\
- b _0809F9C0\n\
- .align 2, 0\n\
-_0809F988: .4byte gSharedMem + 0x18000\n\
-_0809F98C: .4byte gTasks\n\
-_0809F990: .4byte sub_809E260\n\
-_0809F994:\n\
- ldrh r1, [r7, 0x2E]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0809F9A6\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0809F9C0\n\
-_0809F9A6:\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x2\n\
- bl sub_80A1488\n\
- ldrb r1, [r4, 0x1E]\n\
- movs r0, 0x2\n\
- bl sub_80A1654\n\
- mov r0, r8\n\
- subs r0, 0x8\n\
- adds r0, r6, r0\n\
- ldr r1, _0809F9CC @ =sub_809E260\n\
- str r1, [r0]\n\
-_0809F9C0:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0809F9CC: .4byte sub_809E260\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
-
static void sub_809F9D0(u8 taskId, u8 b)
{
s16 *taskData = gTasks[taskId].data;
@@ -3012,7 +2785,7 @@ static void sub_80A015C(struct Pokemon *mon)
sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4);
GetStringCenterAlignXOffset(1, 24, (2 * i) + 4);
-
+
ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
maxPP = CalculatePPWithBonus(move, ppBonuses, i);
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index 6e83c6f97..7693cba7d 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -308,7 +308,7 @@ void sub_80EBA5C() {
gMain.state++;
SetMainCallback2(&sub_80EBBE8);
break;
- }
+ }
break;
case 1:
SetVBlankCallback(NULL);
@@ -331,7 +331,7 @@ void sub_80EBA5C() {
case 7:
sub_80F1A90();
gMain.state++;
- case 8:
+ case 8:
if (sub_80F1AC4()) return;
break;
case 9:
@@ -535,7 +535,7 @@ void sub_80EBDD8() {
sub_80EBDBC(&sub_80EC268);
}
return;
-
+
}
}
@@ -584,7 +584,7 @@ void sub_80EC00C() {
ewram0_10.var304++;
return;
case 9:
- sub_80F2598();
+ sub_80F2598();
ewram0_10.var304++;
break;
case 10:
@@ -3479,8 +3479,6 @@ void sub_80EF840(void)
}
}
-// The only non-matching part is the gSaveBlock2.regionMapZoom access.
-#ifdef NONMATCHING
bool8 sub_80EF874(void)
{
switch (gUnknown_083DFEC4->unkD160)
@@ -3504,7 +3502,7 @@ bool8 sub_80EF874(void)
MenuZeroFillScreen();
break;
case 5:
- sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom);
+ sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE);
break;
case 6:
if (sub_80FA940())
@@ -3552,501 +3550,75 @@ bool8 sub_80EF874(void)
gUnknown_083DFEC4->unkD160++;
return TRUE;
}
-#else
-asm(".include \"constants/gba_constants.inc\"\n");
-__attribute__((naked))
-bool8 sub_80EF874(void)
-{
- asm(".syntax unified\n\
- push {lr}\n\
- ldr r0, _080EF890 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r1, _080EF894 @ =0x0000d160\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- cmp r0, 0xB\n\
- bls _080EF886\n\
- b _080EF9D8\n\
-_080EF886:\n\
- lsls r0, 2\n\
- ldr r1, _080EF898 @ =_080EF89C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080EF890: .4byte gUnknown_083DFEC4\n\
-_080EF894: .4byte 0x0000d160\n\
-_080EF898: .4byte _080EF89C\n\
- .align 2, 0\n\
-_080EF89C:\n\
- .4byte _080EF8CC\n\
- .4byte _080EF8D2\n\
- .4byte _080EF8E0\n\
- .4byte _080EF8EC\n\
- .4byte _080EF8F6\n\
- .4byte _080EF8FC\n\
- .4byte _080EF920\n\
- .4byte _080EF92C\n\
- .4byte _080EF940\n\
- .4byte _080EF954\n\
- .4byte _080EF960\n\
- .4byte _080EF972\n\
-_080EF8CC:\n\
- bl sub_80EEDE8\n\
- b _080EF9DC\n\
-_080EF8D2:\n\
- ldr r0, _080EF8DC @ =gWindowConfig_81E7224\n\
- bl SetUpWindowConfig\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF8DC: .4byte gWindowConfig_81E7224\n\
-_080EF8E0:\n\
- ldr r0, _080EF8E8 @ =gWindowConfig_81E7224\n\
- bl MultistepInitMenuWindowBegin\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF8E8: .4byte gWindowConfig_81E7224\n\
-_080EF8EC:\n\
- bl MultistepInitMenuWindowContinue\n\
- cmp r0, 0\n\
- bne _080EF9DC\n\
- b _080EF9EA\n\
-_080EF8F6:\n\
- bl MenuZeroFillScreen\n\
- b _080EF9DC\n\
-_080EF8FC:\n\
- ldr r0, _080EF914 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r2, _080EF918 @ =0x00006e18\n\
- adds r0, r2\n\
- ldr r1, _080EF91C @ =gSaveBlock2\n\
- ldrb r1, [r1, 0x15]\n\
- lsrs r1, 3\n\
- movs r2, 0x1\n\
- ands r1, r2\n\
- bl sub_80FA904\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF914: .4byte gUnknown_083DFEC4\n\
-_080EF918: .4byte 0x00006e18\n\
-_080EF91C: .4byte gSaveBlock2\n\
-_080EF920:\n\
- bl sub_80FA940\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080EF9DC\n\
- b _080EF9EA\n\
-_080EF92C:\n\
- ldr r0, _080EF938 @ =gPokenavHoennMapSquares_Gfx\n\
- ldr r1, _080EF93C @ =0x06005000\n\
- bl LZ77UnCompVram\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF938: .4byte gPokenavHoennMapSquares_Gfx\n\
-_080EF93C: .4byte 0x06005000\n\
-_080EF940:\n\
- ldr r0, _080EF950 @ =gPokenavHoennMapSquares_Pal\n\
- movs r1, 0x30\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- bl sub_80EFC3C\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF950: .4byte gPokenavHoennMapSquares_Pal\n\
-_080EF954:\n\
- bl sub_80EFC64\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080EF9DC\n\
- b _080EF9EA\n\
-_080EF960:\n\
- movs r0, 0xD\n\
- movs r1, 0x3\n\
- movs r2, 0x1D\n\
- movs r3, 0x11\n\
- bl MenuDrawTextWindow\n\
- bl sub_80EF9F8\n\
- b _080EF9DC\n\
-_080EF972:\n\
- ldr r0, _080EF990 @ =gUnknown_083DFEC4\n\
- ldr r1, [r0]\n\
- ldr r2, _080EF994 @ =0x00006e90\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080EF9A0\n\
- ldr r2, _080EF998 @ =0x00007698\n\
- adds r0, r1, r2\n\
- movs r1, 0xA0\n\
- strh r1, [r0]\n\
- ldr r0, _080EF99C @ =REG_BG0VOFS\n\
- strh r1, [r0]\n\
- b _080EF9B0\n\
- .align 2, 0\n\
-_080EF990: .4byte gUnknown_083DFEC4\n\
-_080EF994: .4byte 0x00006e90\n\
-_080EF998: .4byte 0x00007698\n\
-_080EF99C: .4byte REG_BG0VOFS\n\
-_080EF9A0:\n\
- ldr r0, _080EF9C8 @ =0x00007698\n\
- adds r1, r0\n\
- movs r2, 0\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- strh r0, [r1]\n\
- ldr r0, _080EF9CC @ =REG_BG0VOFS\n\
- strh r2, [r0]\n\
-_080EF9B0:\n\
- ldr r2, _080EF9D0 @ =REG_BG0CNT\n\
- ldrh r0, [r2]\n\
- strh r0, [r2]\n\
- ldrh r0, [r2]\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- strh r0, [r2]\n\
- ldr r1, _080EF9D4 @ =REG_BLDCNT\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- b _080EF9DC\n\
- .align 2, 0\n\
-_080EF9C8: .4byte 0x00007698\n\
-_080EF9CC: .4byte REG_BG0VOFS\n\
-_080EF9D0: .4byte REG_BG0CNT\n\
-_080EF9D4: .4byte REG_BLDCNT\n\
-_080EF9D8:\n\
- movs r0, 0\n\
- b _080EF9EC\n\
-_080EF9DC:\n\
- ldr r0, _080EF9F0 @ =gUnknown_083DFEC4\n\
- ldr r1, [r0]\n\
- ldr r2, _080EF9F4 @ =0x0000d160\n\
- adds r1, r2\n\
- ldrh r0, [r1]\n\
- adds r0, 0x1\n\
- strh r0, [r1]\n\
-_080EF9EA:\n\
- movs r0, 0x1\n\
-_080EF9EC:\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080EF9F0: .4byte gUnknown_083DFEC4\n\
-_080EF9F4: .4byte 0x0000d160\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
+asm(".include \"constants/gba_constants.inc\"\n");
-#ifdef NONMATCHING
void sub_80EF9F8(void)
{
- s32 zero;
- u16 i;
- u8 *mapSectionName;
- u32 offset;
+ bool8 someBool = FALSE;
+ u16 top = 4;
u16 mapSectionId;
u8 b;
- u8 **pointer;
- u16 var1 = 4;
-
switch (gUnknown_083DFEC4->regionMap.unk16)
{
+ case 0:
+ break;
case 1:
case 4:
- sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
-
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
if (gLinkOpen == TRUE)
{
sub_80F1A80();
+ someBool = TRUE;
}
else
{
- i = 0;
- while (i < 4 && (mapSectionName = GetLandmarkName(gUnknown_083DFEC4->regionMap.mapSectionId, gUnknown_083DFEC4->regionMap.everGrandeCityArea, i)) != NULL)
- {
- sub_8072A18(mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
- i++;
- }
-
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
- }
+ u16 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ const u8 *secName = GetLandmarkName(
+ gUnknown_083DFEC4->regionMap.mapSectionId,
+ gUnknown_083DFEC4->regionMap.everGrandeCityArea,
+ i);
+
+ if (secName == NULL)
+ break;
+ sub_8072A18(secName, 0x70, top * 8, 0x78, 1);
+ top += 2;
+ }
}
break;
case 2:
- sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
-
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
mapSectionId = gUnknown_083DFEC4->regionMap.mapSectionId;
- b = gUnknown_083DFEC4->regionMap.everGrandeCityArea;
- offset = (b << 2) + (mapSectionId << 3);
- pointer = (u8 **)((u8 *)&gUnknown_083DFEC4->unkCDCC + offset);
- if (*pointer != NULL)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 15, 15);
- MenuFillWindowRectWithBlankTile(26, var1, 28, 15);
-
- sub_8095C8C((void *)VRAM + 0xF800, 16, 6, *pointer, 0, 0, 10, 10, 10);
-
- var1 += 11;
- }
-
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
+ b = gUnknown_083DFEC4->regionMap.everGrandeCityArea;
+ if (gUnknown_083DFEC4->unkCDCC[mapSectionId][b] != NULL)
{
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
+ MenuFillWindowRectWithBlankTile(14, top, 15, 15);
+ MenuFillWindowRectWithBlankTile(26, top, 28, 15);
+ sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gUnknown_083DFEC4->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10);
+ top += 11;
}
break;
case 3:
- sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, var1 * 8, 0x78, 1);
- var1 += 2;
-
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
- }
- break;
- case 0:
- default:
- // This check is always true, but somehow the compiler still performed it.
- asm("mov %0, #0\n":"=r"(zero)); // zero = 0
- if (!zero && var1 < 16)
- {
- MenuFillWindowRectWithBlankTile(14, var1, 28, 15);
- }
+ sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1);
+ top += 2;
break;
}
+ // Epic fail by the compiler at optimizing this.
+ if (!someBool && top < 16)
+ MenuFillWindowRectWithBlankTile(14, top, 28, 15);
+
if (gUnknown_083DFEC4->regionMap.unk16 == 2)
- {
sub_80EFD74();
- }
else
- {
sub_80EFDA0();
- }
-}
-#else
-__attribute__((naked))
-void sub_80EF9F8(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x14\n\
- movs r5, 0x4\n\
- ldr r0, _080EFA18 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r1, _080EFA1C @ =0x00006e2e\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x4\n\
- bls _080EFA0E\n\
- b _080EFB6A\n\
-_080EFA0E:\n\
- lsls r0, 2\n\
- ldr r1, _080EFA20 @ =_080EFA24\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_080EFA18: .4byte gUnknown_083DFEC4\n\
-_080EFA1C: .4byte 0x00006e2e\n\
-_080EFA20: .4byte _080EFA24\n\
- .align 2, 0\n\
-_080EFA24:\n\
- .4byte _080EFB6A\n\
- .4byte _080EFA38\n\
- .4byte _080EFAC0\n\
- .4byte _080EFB4C\n\
- .4byte _080EFA38\n\
-_080EFA38:\n\
- ldr r0, _080EFA64 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r2, _080EFA68 @ =0x00006e18\n\
- adds r0, r2\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r1, 0x1\n\
- str r1, [sp]\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldr r0, _080EFA6C @ =gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x1\n\
- bne _080EFA70\n\
- bl sub_80F1A80\n\
- b _080EFB82\n\
- .align 2, 0\n\
-_080EFA64: .4byte gUnknown_083DFEC4\n\
-_080EFA68: .4byte 0x00006e18\n\
-_080EFA6C: .4byte gLinkOpen\n\
-_080EFA70:\n\
- movs r4, 0\n\
- b _080EFA92\n\
-_080EFA74:\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r0, 0x1\n\
- str r0, [sp]\n\
- adds r0, r1, 0\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
-_080EFA92:\n\
- cmp r4, 0x3\n\
- bhi _080EFB6A\n\
- ldr r0, _080EFAB8 @ =gUnknown_083DFEC4\n\
- ldr r1, [r0]\n\
- ldr r2, _080EFABC @ =0x00006e2c\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- adds r2, 0x3\n\
- adds r1, r2\n\
- ldrb r1, [r1]\n\
- lsls r2, r4, 24\n\
- lsrs r2, 24\n\
- bl GetLandmarkName\n\
- adds r1, r0, 0\n\
- cmp r1, 0\n\
- bne _080EFA74\n\
- b _080EFB6A\n\
- .align 2, 0\n\
-_080EFAB8: .4byte gUnknown_083DFEC4\n\
-_080EFABC: .4byte 0x00006e2c\n\
-_080EFAC0:\n\
- ldr r0, _080EFB38 @ =gUnknown_083DFEC4\n\
- ldr r4, [r0]\n\
- ldr r1, _080EFB3C @ =0x00006e18\n\
- adds r0, r4, r1\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r1, 0x1\n\
- str r1, [sp]\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- ldr r2, _080EFB40 @ =0x00006e2c\n\
- adds r0, r4, r2\n\
- ldrh r1, [r0]\n\
- adds r2, 0x3\n\
- adds r0, r4, r2\n\
- ldrb r0, [r0]\n\
- lsls r0, 2\n\
- lsls r1, 3\n\
- adds r0, r1\n\
- ldr r1, _080EFB44 @ =0x0000cdcc\n\
- adds r4, r1\n\
- adds r6, r4, r0\n\
- ldr r0, [r6]\n\
- cmp r0, 0\n\
- beq _080EFB6A\n\
- lsls r4, r5, 24\n\
- lsrs r4, 24\n\
- movs r0, 0xE\n\
- adds r1, r4, 0\n\
- movs r2, 0xF\n\
- movs r3, 0xF\n\
- bl MenuFillWindowRectWithBlankTile\n\
- movs r0, 0x1A\n\
- adds r1, r4, 0\n\
- movs r2, 0x1C\n\
- movs r3, 0xF\n\
- bl MenuFillWindowRectWithBlankTile\n\
- ldr r0, _080EFB48 @ =0x0600f800\n\
- ldr r3, [r6]\n\
- movs r1, 0\n\
- str r1, [sp]\n\
- str r1, [sp, 0x4]\n\
- movs r1, 0xA\n\
- str r1, [sp, 0x8]\n\
- str r1, [sp, 0xC]\n\
- str r1, [sp, 0x10]\n\
- movs r1, 0x10\n\
- movs r2, 0x6\n\
- bl sub_8095C8C\n\
- adds r0, r5, 0\n\
- adds r0, 0xB\n\
- b _080EFB66\n\
- .align 2, 0\n\
-_080EFB38: .4byte gUnknown_083DFEC4\n\
-_080EFB3C: .4byte 0x00006e18\n\
-_080EFB40: .4byte 0x00006e2c\n\
-_080EFB44: .4byte 0x0000cdcc\n\
-_080EFB48: .4byte 0x0600f800\n\
-_080EFB4C:\n\
- ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r2, _080EFB9C @ =0x00006e18\n\
- adds r0, r2\n\
- lsls r2, r5, 19\n\
- lsrs r2, 16\n\
- movs r1, 0x1\n\
- str r1, [sp]\n\
- movs r1, 0x70\n\
- movs r3, 0x78\n\
- bl sub_8072A18\n\
- adds r0, r5, 0x2\n\
-_080EFB66:\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
-_080EFB6A:\n\
- movs r0, 0\n\
- cmp r0, 0\n\
- bne _080EFB82\n\
- cmp r5, 0xF\n\
- bhi _080EFB82\n\
- lsls r1, r5, 24\n\
- lsrs r1, 24\n\
- movs r0, 0xE\n\
- movs r2, 0x1C\n\
- movs r3, 0xF\n\
- bl MenuFillWindowRectWithBlankTile\n\
-_080EFB82:\n\
- ldr r0, _080EFB98 @ =gUnknown_083DFEC4\n\
- ldr r0, [r0]\n\
- ldr r1, _080EFBA0 @ =0x00006e2e\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x2\n\
- bne _080EFBA4\n\
- bl sub_80EFD74\n\
- b _080EFBA8\n\
- .align 2, 0\n\
-_080EFB98: .4byte gUnknown_083DFEC4\n\
-_080EFB9C: .4byte 0x00006e18\n\
-_080EFBA0: .4byte 0x00006e2e\n\
-_080EFBA4:\n\
- bl sub_80EFDA0\n\
-_080EFBA8:\n\
- add sp, 0x14\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
}
-#endif // NONMATCHING
void sub_80EFBB0(void)
{
@@ -4103,152 +3675,37 @@ void sub_80EFC3C(void)
sub_80EFD3C();
}
-#ifdef NONMATCHING // "var1 = gUnknown_083DFEC4->unkBC9A;" is the only thing that doesnt' match.
bool8 sub_80EFC64(void)
{
u16 i;
- u16 var1;
+ u8 var1;
u16 var2;
- if (gUnknown_083DFEC4->unkBC9A < 16)
- {
- var1 = gUnknown_083DFEC4->unkBC9A;
- var2 = gUnknown_083DFEC4->unkBC9B;
- for (i = 0; i < 2; i++)
- {
- if (gPokenavCityMaps[var1][i] != 0)
- {
- LZ77UnCompVram(gPokenavCityMaps[var1][i], gUnknown_083DFEC4->unkBC9C[var2]);
- gUnknown_083DFEC4->unkCDCC[var1][i] = gUnknown_083DFEC4->unkBC9C[var2];
- var2++;
- }
- else
- {
- gUnknown_083DFEC4->unkCDCC[var1][i] = NULL;
- }
- }
-
- gUnknown_083DFEC4->unkBC9A++;
- if (gUnknown_083DFEC4->unkBC9A < 16)
- {
- gUnknown_083DFEC4->unkBC9B = var2;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-#else
-__attribute__((naked))
-bool8 sub_80EFC64(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x8\n\
- ldr r4, _080EFCD0 @ =gUnknown_083DFEC4\n\
- ldr r2, [r4]\n\
- ldr r0, _080EFCD4 @ =0x0000bc9a\n\
- adds r1, r2, r0\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xF\n\
- bhi _080EFD2C\n\
- ldrb r1, [r1]\n\
- mov r8, r1\n\
- ldr r1, _080EFCD8 @ =0x0000bc9b\n\
- adds r0, r2, r1\n\
- ldrb r7, [r0]\n\
- movs r2, 0\n\
- ldr r0, _080EFCDC @ =gPokenavCityMaps\n\
- mov r9, r0\n\
- adds r3, r4, 0\n\
-_080EFC8E:\n\
- lsls r0, r2, 2\n\
- mov r4, r8\n\
- lsls r1, r4, 3\n\
- adds r6, r0, r1\n\
- mov r1, r9\n\
- adds r0, r6, r1\n\
- ldr r1, [r0]\n\
- cmp r1, 0\n\
- beq _080EFCE8\n\
- movs r0, 0xC8\n\
- adds r5, r7, 0\n\
- muls r5, r0\n\
- ldr r4, _080EFCE0 @ =0x0000bc9c\n\
- adds r5, r4\n\
- ldr r4, [r3]\n\
- adds r5, r4, r5\n\
- adds r0, r1, 0\n\
- adds r1, r5, 0\n\
- str r2, [sp]\n\
- str r3, [sp, 0x4]\n\
- bl LZ77UnCompVram\n\
- ldr r0, _080EFCE4 @ =0x0000cdcc\n\
- adds r4, r0\n\
- adds r4, r6\n\
- str r5, [r4]\n\
- adds r0, r7, 0x1\n\
- lsls r0, 16\n\
- lsrs r7, r0, 16\n\
- ldr r2, [sp]\n\
- ldr r3, [sp, 0x4]\n\
- b _080EFCF2\n\
- .align 2, 0\n\
-_080EFCD0: .4byte gUnknown_083DFEC4\n\
-_080EFCD4: .4byte 0x0000bc9a\n\
-_080EFCD8: .4byte 0x0000bc9b\n\
-_080EFCDC: .4byte gPokenavCityMaps\n\
-_080EFCE0: .4byte 0x0000bc9c\n\
-_080EFCE4: .4byte 0x0000cdcc\n\
-_080EFCE8:\n\
- ldr r0, [r3]\n\
- ldr r4, _080EFD1C @ =0x0000cdcc\n\
- adds r0, r4\n\
- adds r0, r6\n\
- str r1, [r0]\n\
-_080EFCF2:\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x1\n\
- bls _080EFC8E\n\
- ldr r0, _080EFD20 @ =gUnknown_083DFEC4\n\
- ldr r2, [r0]\n\
- ldr r0, _080EFD24 @ =0x0000bc9a\n\
- adds r1, r2, r0\n\
- ldrb r0, [r1]\n\
- adds r0, 0x1\n\
- strb r0, [r1]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xF\n\
- bhi _080EFD2C\n\
- ldr r1, _080EFD28 @ =0x0000bc9b\n\
- adds r0, r2, r1\n\
- strb r7, [r0]\n\
- movs r0, 0x1\n\
- b _080EFD2E\n\
- .align 2, 0\n\
-_080EFD1C: .4byte 0x0000cdcc\n\
-_080EFD20: .4byte gUnknown_083DFEC4\n\
-_080EFD24: .4byte 0x0000bc9a\n\
-_080EFD28: .4byte 0x0000bc9b\n\
-_080EFD2C:\n\
- movs r0, 0\n\
-_080EFD2E:\n\
- add sp, 0x8\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
+ if (gUnknown_083DFEC4->unkBC9A >= 16)
+ return FALSE;
+
+ var1 = gUnknown_083DFEC4->unkBC9A;
+ var2 = gUnknown_083DFEC4->unkBC9B;
+ for (i = 0; i < 2; i++)
+ {
+ if (gPokenavCityMaps[var1][i] != 0)
+ {
+ LZ77UnCompVram(gPokenavCityMaps[var1][i], gUnknown_083DFEC4->unkBC9C[var2]);
+ gUnknown_083DFEC4->unkCDCC[var1][i] = gUnknown_083DFEC4->unkBC9C[var2];
+ var2++;
+ }
+ else
+ {
+ gUnknown_083DFEC4->unkCDCC[var1][i] = NULL;
+ }
+ }
+
+ if (++gUnknown_083DFEC4->unkBC9A >= 16)
+ return FALSE;
+
+ gUnknown_083DFEC4->unkBC9B = var2;
+ return TRUE;
}
-#endif // NONMATCHING
void sub_80EFD3C(void)
{
@@ -4335,7 +3792,7 @@ void sub_80EFE7C(void)
case 2:
sub_80EFDE4(1);
gUnknown_083DFEC4->unk769D = 1;
- break;
+ break;
}
}
diff --git a/src/scene/credits.c b/src/scene/credits.c
index 81be60c9f..17c1bf263 100644
--- a/src/scene/credits.c
+++ b/src/scene/credits.c
@@ -1228,9 +1228,9 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA)
case 2:
if (gSaveBlock2.playerGender == MALE)
{
- LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet);
- LoadCompressedObjectPic(&gUnknown_08416E34);
- LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet);
+ LoadCompressedObjectPic(gIntro2BrendanSpriteSheet);
+ LoadCompressedObjectPic(gUnknown_08416E34);
+ LoadCompressedObjectPic(gIntro2BicycleSpriteSheet);
LoadSpritePalettes(gIntro2SpritePalettes);
spriteId = intro_create_brendan_sprite(120, 46);
@@ -1245,9 +1245,9 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA)
}
else
{
- LoadCompressedObjectPic(&gIntro2MaySpriteSheet);
- LoadCompressedObjectPic(&gUnknown_08416E24);
- LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet);
+ LoadCompressedObjectPic(gIntro2MaySpriteSheet);
+ LoadCompressedObjectPic(gUnknown_08416E24);
+ LoadCompressedObjectPic(gIntro2BicycleSpriteSheet);
LoadSpritePalettes(gIntro2SpritePalettes);
spriteId = intro_create_may_sprite(120, 46);
@@ -1606,7 +1606,7 @@ void spritecb_814580C(struct Sprite *sprite)
static void sub_81458DC(void)
{
struct Unk201C000 *unk201C000 = &ewram1c000;
- u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE)));
+ u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_STARTER_MON)));
u16 seenTypesCount;
u16 page;
u16 dexNum;
diff --git a/src/scene/intro.c b/src/scene/intro.c
index 9e334d06b..4dc6cc91c 100644
--- a/src/scene/intro.c
+++ b/src/scene/intro.c
@@ -1087,14 +1087,14 @@ static void Task_IntroStartBikeRide(u8 taskId)
u8 spriteId;
if (gUnknown_02039318 == 0)
- LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet);
+ LoadCompressedObjectPic(gIntro2BrendanSpriteSheet);
else
- LoadCompressedObjectPic(&gIntro2MaySpriteSheet);
- LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet);
+ LoadCompressedObjectPic(gIntro2MaySpriteSheet);
+ LoadCompressedObjectPic(gIntro2BicycleSpriteSheet);
#ifdef SAPPHIRE
- LoadCompressedObjectPic(&gIntro2LatiasSpriteSheet);
+ LoadCompressedObjectPic(gIntro2LatiasSpriteSheet);
#else
- LoadCompressedObjectPic(&gIntro2LatiosSpriteSheet);
+ LoadCompressedObjectPic(gIntro2LatiosSpriteSheet);
#endif
LoadSpritePalettes(gIntro2SpritePalettes);
if (gUnknown_02039318 == 0)
diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c
index 05c67696a..6cee74cce 100755
--- a/src/scene/intro_credits_graphics.c
+++ b/src/scene/intro_credits_graphics.c
@@ -24,32 +24,282 @@
// define register constants for the inline asm
asm(".include \"constants/gba_constants.inc\"\n");
-struct UnknownStruct1
+struct IntroCreditsSpriteMetadata
{
- u8 var0_0:4;
- u8 var0_4:2;
- u8 var0_6:2;
- u8 var1;
- u8 var2;
- u8 var3;
- u16 var4;
-};
-
-extern u8 gUnknown_0841225C;
-extern u8 gUnknown_084126DC;
-extern u8 gUnknown_084121FC;
-extern u8 gUnknown_084128D8;
-extern u8 gUnknown_08412EB4;
-extern u8 gUnknown_08412818;
-extern u8 gUnknown_08413184;
-extern u8 gUnknown_08413340;
-extern u8 gUnknown_084139C8;
-extern u8 gUnknown_08413300;
-extern u8 gUnknown_08413CCC;
-
-extern const struct SpriteTemplate gSpriteTemplate_8416B3C;
-const extern struct CompressedSpriteSheet gUnknown_08416B54;
-const extern struct CompressedSpriteSheet gUnknown_08416BDC;
+ u8 animNum:4;
+ u8 shape:2;
+ u8 size:2;
+ u8 x;
+ u8 y;
+ u8 subpriority;
+ u16 xOff;
+};
+
+const u16 gUnknown_084121FC[] = INCBIN_U16("graphics/intro/intro2_grass.gbapal");
+const u16 gUnknown_0841221C[] = INCBIN_U16("graphics/intro/intro2_grass_afternoon.gbapal");
+const u16 gUnknown_0841223C[] = INCBIN_U16("graphics/intro/intro2_grass_night.gbapal");
+const u8 gUnknown_0841225C[] = INCBIN_U8("graphics/intro/intro2_grass.4bpp.lz");
+const u8 gUnknown_084126DC[] = INCBIN_U8("graphics/intro/intro2_grass_map.bin.lz");
+const u16 gUnknown_08412818[] = INCBIN_U16("graphics/intro/8412818.gbapal");
+const u16 gUnknown_08412878[] = INCBIN_U16("graphics/intro/8412878.gbapal");
+const u8 gUnknown_084128D8[] = INCBIN_U8("graphics/intro/intro2_bgclouds.4bpp.lz");
+const u8 gUnknown_08412EB4[] = INCBIN_U8("graphics/intro/intro2_bgclouds_map.bin.lz");
+const u16 gUnknown_08413184[] = INCBIN_U16("graphics/intro/intro2_bgclouds.gbapal");
+const u16 gUnknown_084131A4[] = INCBIN_U16("graphics/intro/intro2_bgclouds_afternoon.gbapal");
+const u8 gUnknown_084131C4[] = INCBIN_U8("graphics/intro/intro2_bgclouds2.4bpp.lz");
+const u16 gUnknown_08413300[] = INCBIN_U16("graphics/intro/intro2_bgtrees2.gbapal");
+const u16 gUnknown_08413320[] = INCBIN_U16("graphics/intro/intro2_bgtrees2_afternoon.gbapal");
+const u8 gUnknown_08413340[] = INCBIN_U8("graphics/intro/intro2_bgtrees.4bpp.lz");
+const u8 gUnknown_084139C8[] = INCBIN_U8("graphics/intro/intro2_bgtrees_map.bin.lz");
+const u16 gUnknown_08413CCC[] = INCBIN_U16("graphics/intro/intro2_bgtrees.gbapal");
+const u8 gIntro2TreeTiles[] = INCBIN_U8("graphics/intro/intro2_bgtreessmall.4bpp.lz");
+const u16 gUnknown_08413E38[] = INCBIN_U16("graphics/intro/8413E38.gbapal");
+const u8 gUnknown_08413E78[] = INCBIN_U8("graphics/intro/intro2_bgnight.4bpp.lz"); // only used in credits, coupled with intro because bicycle sequence
+const u16 gUnknown_08414064[] = INCBIN_U16("graphics/intro/intro2_bgnight.gbapal");
+const u8 gUnknown_08414084[] = INCBIN_U8("graphics/intro/intro2_bgnight_map.bin.lz");
+const u8 gIntro2NightTiles[] = INCBIN_U8("graphics/intro/intro2_night.4bpp.lz");
+const u16 gIntro2BrendanPalette[] = INCBIN_U16("graphics/intro/intro2_brendan.gbapal");
+const u8 gIntro2BrendanTiles[] = INCBIN_U8("graphics/intro/intro2_brendan.4bpp.lz");
+const u16 gIntro2MayPalette[] = INCBIN_U16("graphics/intro/intro2_may.gbapal");
+const u16 gUnknown_08414F90[0xF0] = {0};
+const u8 gIntro2MayTiles[] = INCBIN_U8("graphics/intro/intro2_may.4bpp.lz");
+const u8 gIntro2BicycleTiles[] = INCBIN_U8("graphics/intro/intro2_bicycle.4bpp.lz");
+const u16 gIntro2LatiosPalette[] = INCBIN_U16("graphics/intro/intro2_latios.gbapal");
+const u8 gIntro2LatiosTiles[] = INCBIN_U8("graphics/intro/intro2_latios.4bpp.lz");
+const u16 gIntro2LatiasPalette[] = INCBIN_U16("graphics/intro/intro2_latias.gbapal");
+const u8 gIntro2LatiasTiles[] = INCBIN_U8("graphics/intro/intro2_latias.4bpp.lz");
+
+void sub_814910C(struct Sprite *sprite);
+void nullsub_82(struct Sprite *sprite);
+void sub_81492A0(struct Sprite *sprite);
+void nullsub_83(struct Sprite *sprite);
+
+const struct SpriteTemplate gSpriteTemplate_8416B3C = {
+ 2000, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_814910C
+};
+
+const struct CompressedSpriteSheet gUnknown_08416B54[] = {
+ { gUnknown_084131C4, 0x400, 2000 },
+ {}
+};
+
+const union AnimCmd gSpriteAnim_8416B64[] = {
+ ANIMCMD_FRAME( 0, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_8416B6C[] = {
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_8416B74[] = {
+ ANIMCMD_FRAME(20, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_8416B7C[] = {
+ ANIMCMD_FRAME(22, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_8416B84[] = {
+ gSpriteAnim_8416B64,
+ gSpriteAnim_8416B6C,
+ gSpriteAnim_8416B74,
+ gSpriteAnim_8416B7C
+};
+
+const struct IntroCreditsSpriteMetadata gUnknown_08416B94[] = {
+ { 0, ST_OAM_SQUARE, 2, 72, 32, 100, 0xc00 },
+ { 0, ST_OAM_SQUARE, 2, 158, 32, 100, 0xc00 },
+ { 1, ST_OAM_SQUARE, 1, 192, 40, 101, 0x800 },
+ { 1, ST_OAM_SQUARE, 1, 56, 40, 101, 0x800 },
+ { 2, ST_OAM_H_RECTANGLE, 0, 100, 44, 102, 0x400 },
+ { 2, ST_OAM_H_RECTANGLE, 0, 152, 44, 102, 0x400 },
+ { 3, ST_OAM_H_RECTANGLE, 0, 8, 46, 103, 0x100 },
+ { 3, ST_OAM_H_RECTANGLE, 0, 56, 46, 103, 0x100 },
+ { 3, ST_OAM_H_RECTANGLE, 0, 240, 46, 103, 0x100 },
+};
+
+const struct CompressedSpriteSheet gUnknown_08416BDC[] = {
+ { gIntro2TreeTiles, 0x400, 2000 },
+ {}
+};
+
+const union AnimCmd gSpriteAnim_8416BEC[] = {
+ ANIMCMD_FRAME( 0, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_8416BF4[] = {
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_8416BFC[] = {
+ ANIMCMD_FRAME(24, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_8416C04[] = {
+ gSpriteAnim_8416BEC,
+ gSpriteAnim_8416BF4,
+ gSpriteAnim_8416BFC
+};
+
+const struct IntroCreditsSpriteMetadata gUnknown_08416C10[] = {
+ { 0, ST_OAM_SQUARE, 2, 16, 88, 100, 0x2000 },
+ { 0, ST_OAM_SQUARE, 2, 80, 88, 100, 0x2000 },
+ { 0, ST_OAM_SQUARE, 2, 144, 88, 100, 0x2000 },
+ { 0, ST_OAM_SQUARE, 2, 208, 88, 100, 0x2000 },
+ { 1, ST_OAM_V_RECTANGLE, 2, 40, 88, 101, 0x1000 },
+ { 1, ST_OAM_V_RECTANGLE, 2, 104, 88, 101, 0x1000 },
+ { 1, ST_OAM_V_RECTANGLE, 2, 168, 88, 101, 0x1000 },
+ { 1, ST_OAM_V_RECTANGLE, 2, 232, 88, 101, 0x1000 },
+ { 2, ST_OAM_V_RECTANGLE, 2, 56, 88, 102, 0x800 },
+ { 2, ST_OAM_V_RECTANGLE, 2, 120, 88, 102, 0x800 },
+ { 2, ST_OAM_V_RECTANGLE, 2, 184, 88, 102, 0x800 },
+ { 2, ST_OAM_V_RECTANGLE, 2, 248, 88, 102, 0x800 },
+};
+
+const struct CompressedSpriteSheet gUnknown_08416C70[] = {
+ { gIntro2NightTiles, 0x400, 2000 },
+ {}
+};
+
+const union AnimCmd gSpriteAnim_8416C80[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_8416C88[] = {
+ gSpriteAnim_8416C80
+};
+
+const struct IntroCreditsSpriteMetadata gUnknown_08416C8C[] = {
+ { 0, ST_OAM_SQUARE, 2, 24, 88, 100, 0x1000 },
+ { 0, ST_OAM_SQUARE, 2, 64, 88, 100, 0x1000 },
+ { 0, ST_OAM_SQUARE, 2, 104, 88, 100, 0x1000 },
+ { 0, ST_OAM_SQUARE, 2, 144, 88, 100, 0x1000 },
+ { 0, ST_OAM_SQUARE, 2, 184, 88, 100, 0x1000 },
+ { 0, ST_OAM_SQUARE, 2, 224, 88, 100, 0x1000 },
+};
+
+const struct OamData gOamData_8416CBC = {
+ .y = 160, .shape = ST_OAM_SQUARE, .size = 3, .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_8416CC4[] = {
+ ANIMCMD_FRAME( 0, 8),
+ ANIMCMD_FRAME( 64, 8),
+ ANIMCMD_FRAME(128, 8),
+ ANIMCMD_FRAME(192, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gSpriteAnimTable_8416CD8[] = {
+ gSpriteAnim_8416CC4
+};
+
+const struct SpriteTemplate gSpriteTemplate_8416CDC = {
+ 1002, 1002, &gOamData_8416CBC, gSpriteAnimTable_8416CD8, NULL, gDummySpriteAffineAnimTable, nullsub_82
+};
+
+const struct SpriteTemplate gSpriteTemplate_8416CF4 = {
+ 1003, 1003, &gOamData_8416CBC, gSpriteAnimTable_8416CD8, NULL, gDummySpriteAffineAnimTable, nullsub_82
+};
+
+const struct OamData gOamData_8416D0C = {
+ .y = 160, .shape = ST_OAM_H_RECTANGLE, .size = 3, .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_8416D14[] = {
+ ANIMCMD_FRAME( 0, 8),
+ ANIMCMD_FRAME( 32, 8),
+ ANIMCMD_FRAME( 64, 8),
+ ANIMCMD_FRAME( 96, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gSpriteAnimTable_8416D28[] = {
+ gSpriteAnim_8416D14
+};
+
+const struct SpriteTemplate gSpriteTemplate_Brendan = {
+ 1001, 1002, &gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
+};
+
+const struct SpriteTemplate gSpriteTemplate_May = {
+ 1001, 1003, &gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
+};
+
+const struct OamData gOamData_8416D5C = {
+ .y = 160, .shape = ST_OAM_SQUARE, .size = 3, .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_8416D64[] = {
+ ANIMCMD_FRAME( 0, 16),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_8416D6C[] = {
+ ANIMCMD_FRAME( 64, 16),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_8416D74[] = {
+ gSpriteAnim_8416D64,
+ gSpriteAnim_8416D6C
+};
+
+const struct SpriteTemplate gSpriteTemplate_8416D7C = {
+ 1004, 1004, &gOamData_8416D5C, gSpriteAnimTable_8416D74, NULL, gDummySpriteAffineAnimTable, nullsub_83
+};
+
+const struct SpriteTemplate gSpriteTemplate_8416D94 = {
+ 1005, 1005, &gOamData_8416D5C, gSpriteAnimTable_8416D74, NULL, gDummySpriteAffineAnimTable, nullsub_83
+};
+
+const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[] = {
+ { gIntro2BrendanTiles, 0x3800, 1002 },
+ {}
+};
+const struct CompressedSpriteSheet gIntro2MaySpriteSheet[] = {
+ { gIntro2MayTiles, 0x3800, 1003 },
+ {}
+};
+const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[] = {
+ { gIntro2BicycleTiles, 0x1000, 1001 },
+ {}
+};
+const struct CompressedSpriteSheet gIntro2LatiosSpriteSheet[] = {
+ { gIntro2LatiosTiles, 0x1000, 1004 },
+ {}
+};
+const struct CompressedSpriteSheet gIntro2LatiasSpriteSheet[] = {
+ { gIntro2LatiasTiles, 0x1000, 1005 },
+ {}
+};
+
+const struct SpritePalette gIntro2SpritePalettes[] = {
+ {gIntro2BrendanPalette, 1002},
+ {gIntro2MayPalette, 1003},
+ {gIntro2LatiosPalette, 1004},
+ {gIntro2LatiasPalette, 1005},
+ {}
+};
+
+const struct CompressedSpriteSheet gUnknown_08416E24[] = {
+ { gIntro2BrendanTiles, 0x2000, 1002},
+ {}
+};
+
+const struct CompressedSpriteSheet gUnknown_08416E34[] = {
+ { gIntro2MayTiles, 0x2000, 1003},
+ {}
+};
+
extern u16 gUnknown_02039358;
extern s16 gUnknown_0203935A;
@@ -71,7 +321,7 @@ void load_intro_part2_graphics(u8 a)
LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_08412818, 0, 96);
- LoadCompressedObjectPic(&gUnknown_08416B54);
+ LoadCompressedObjectPic(gUnknown_08416B54);
LoadPalette(&gUnknown_08413184, 256, 32);
sub_8149248();
break;
@@ -79,7 +329,7 @@ void load_intro_part2_graphics(u8 a)
LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_08413300, 0, 32);
- LoadCompressedObjectPic(&gUnknown_08416BDC);
+ LoadCompressedObjectPic(gUnknown_08416BDC);
LoadPalette(&gUnknown_08413CCC, 256, 32);
sub_8149264();
break;
@@ -106,30 +356,6 @@ void sub_8148C78(u8 a)
}
}
-extern u8 gUnknown_084131C4;
-extern u8 gUnknown_084131A4;
-extern u8 gUnknown_0841221C;
-extern u8 gUnknown_08412878;
-extern u8 gUnknown_08413320;
-extern u8 gUnknown_0841223C;
-extern u8 gUnknown_08413E78;
-extern u8 gUnknown_08414084;
-extern u8 gUnknown_08413E38;
-const extern struct CompressedSpriteSheet gUnknown_08416C70;
-extern u8 gUnknown_08414064;
-extern struct UnknownStruct1 gUnknown_08416B94;
-extern struct UnknownStruct1 gUnknown_08416C10;
-extern struct UnknownStruct1 gUnknown_08416C8C;
-const extern union AnimCmd *const gSpriteAnimTable_8416B84;
-const extern union AnimCmd *const gSpriteAnimTable_8416C04;
-const extern union AnimCmd *const gSpriteAnimTable_8416C88;
-const extern struct SpriteTemplate gSpriteTemplate_8416CDC;
-const extern struct SpriteTemplate gSpriteTemplate_Brendan;
-const extern struct SpriteTemplate gSpriteTemplate_8416CF4;
-const extern struct SpriteTemplate gSpriteTemplate_May;
-const extern struct SpriteTemplate gSpriteTemplate_8416D7C;
-const extern struct SpriteTemplate gSpriteTemplate_8416D94;
-
void sub_8149280();
void sub_8148CB0(u8 a)
@@ -144,7 +370,7 @@ void sub_8148CB0(u8 a)
LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_08412818, 0, 96);
- LoadCompressedObjectPic(&gUnknown_08416B54);
+ LoadCompressedObjectPic(gUnknown_08416B54);
LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
LoadPalette(&gUnknown_08413184, 256, 32);
sub_8149248();
@@ -154,7 +380,7 @@ void sub_8148CB0(u8 a)
LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_08412878, 0, 96);
- LoadCompressedObjectPic(&gUnknown_08416B54);
+ LoadCompressedObjectPic(gUnknown_08416B54);
LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
LoadPalette(&gUnknown_084131A4, 256, 32);
sub_8149248();
@@ -165,7 +391,7 @@ void sub_8148CB0(u8 a)
LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_08413320, 0, 32);
- LoadCompressedObjectPic(&gUnknown_08416BDC);
+ LoadCompressedObjectPic(gUnknown_08416BDC);
LoadPalette(&gUnknown_08413320, 256, 32);
sub_8149264();
break;
@@ -174,7 +400,7 @@ void sub_8148CB0(u8 a)
LZ77UnCompVram(&gUnknown_08413E78, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_08414084, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_08413E38, 0, 64);
- LoadCompressedObjectPic(&gUnknown_08416C70);
+ LoadCompressedObjectPic(gUnknown_08416C70);
LoadPalette(&gUnknown_08414064, 256, 32);
sub_8149280();
break;
@@ -367,43 +593,43 @@ _0814901C: .4byte REG_BG3VOFS\n\
void sub_8149020(u8 mode)
{
- u16 var1;
- u16 var2;
+ u16 x;
+ u16 y;
switch (mode)
{
case 0:
default:
/* stuff */
- if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
+ if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
break;
if (gMain.vblankCounter1 & 4)
{
- var1 = gPlttBufferUnfaded[9];
- var2 = gPlttBufferUnfaded[10];
+ x = gPlttBufferUnfaded[9];
+ y = gPlttBufferUnfaded[10];
}
else
{
- var1 = gPlttBufferUnfaded[10];
- var2 = gPlttBufferUnfaded[9];
+ x = gPlttBufferUnfaded[10];
+ y = gPlttBufferUnfaded[9];
}
- LoadPalette(&var1, 9, 2);
- LoadPalette(&var2, 10, 2);
+ LoadPalette(&x, 9, 2);
+ LoadPalette(&y, 10, 2);
break;
case 2:
- if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
+ if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
break;
if (gMain.vblankCounter1 & 4)
{
- var1 = 0x3D27;
- var2 = 0x295;
+ x = 0x3D27;
+ y = 0x295;
}
else
{
- var1 = 0x31C;
- var2 = 0x3D27;
+ x = 0x31C;
+ y = 0x3D27;
}
- LoadPalette(&var1, 12, 2);
- LoadPalette(&var2, 13, 2);
+ LoadPalette(&x, 12, 2);
+ LoadPalette(&y, 13, 2);
break;
case 1:
break;
@@ -433,42 +659,42 @@ void sub_814910C(struct Sprite *sprite)
}
}
-void sub_8149174(u8 a, struct UnknownStruct1 *b, const union AnimCmd *const *c, u8 d)
+void sub_8149174(u8 a, const struct IntroCreditsSpriteMetadata *b, const union AnimCmd *const *c, u8 d)
{
u8 i;
for(i = 0; i < d; i++)
{
- u8 sprite = CreateSprite(&gSpriteTemplate_8416B3C, b[i].var1, b[i].var2, b[i].var3);
- CalcCenterToCornerVec(&gSprites[sprite], b[i].var0_4, b[i].var0_6, 0);
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416B3C, b[i].x, b[i].y, b[i].subpriority);
+ CalcCenterToCornerVec(&gSprites[sprite], b[i].shape, b[i].size, 0);
gSprites[sprite].oam.priority = 3;
- gSprites[sprite].oam.shape = b[i].var0_4;
- gSprites[sprite].oam.size = b[i].var0_6;
+ gSprites[sprite].oam.shape = b[i].shape;
+ gSprites[sprite].oam.size = b[i].size;
gSprites[sprite].oam.paletteNum = 0;
gSprites[sprite].anims = c;
- StartSpriteAnim(&gSprites[sprite], b[i].var0_0);
+ StartSpriteAnim(&gSprites[sprite], b[i].animNum);
gSprites[sprite].data[0] = a;
- gSprites[sprite].data[1] = b[i].var4;
+ gSprites[sprite].data[1] = b[i].xOff;
gSprites[sprite].data[2] = 0;
}
}
void sub_8149248()
{
- sub_8149174(0, &gUnknown_08416B94, &gSpriteAnimTable_8416B84, 9);
+ sub_8149174(0, gUnknown_08416B94, gSpriteAnimTable_8416B84, 9);
}
void sub_8149264()
{
- sub_8149174(1, &gUnknown_08416C10, &gSpriteAnimTable_8416C04, 12);
+ sub_8149174(1, gUnknown_08416C10, gSpriteAnimTable_8416C04, 12);
}
void sub_8149280()
{
- sub_8149174(1, &gUnknown_08416C8C, &gSpriteAnimTable_8416C88, 6);
+ sub_8149174(1, gUnknown_08416C8C, gSpriteAnimTable_8416C88, 6);
}
-void nullsub_82()
+void nullsub_82(struct Sprite *sprite)
{
}
@@ -499,7 +725,7 @@ u8 intro_create_may_sprite(s16 a, s16 b)
return sprite;
}
-void nullsub_83()
+void nullsub_83(struct Sprite *sprite)
{
}
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index 164d71cb5..fc94b1b01 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -24,6 +24,9 @@
#include "task.h"
#include "ewram.h"
+extern void sub_80C4674();
+extern void sub_80C4698(u8 *, u8);
+
#define CONTEST_ENTRY_PIC_LEFT 10
#define CONTEST_ENTRY_PIC_TOP 3
@@ -47,7 +50,8 @@ extern u32 gUnknown_03005D28;
extern u8 gUnknown_02038694;
extern u8 gUnknown_0203856C;
extern u8 gContestFinalStandings[];
-extern u16 gUnknown_02038678[];
+extern s16 gUnknown_02038670[];
+extern s16 gUnknown_02038678[];
void sub_80C4BF0(void)
{
@@ -128,7 +132,7 @@ void sub_80C4CF8(void)
{
if(!gContestFinalStandings[gContestPlayerMonIndex]
&& gSpecialVar_ContestRank == 3
- && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ && gUnknown_02038678[gContestPlayerMonIndex] >= 800)
{
gSpecialVar_0x8004 = 1;
}
@@ -150,209 +154,78 @@ u8 sub_80C4D50(void)
return retVar;
}
-// nope. too hard
-__attribute__((naked))
void sub_80C4D80(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, 0x8\n\
- ldr r0, _080C4EA0 @ =gUnknown_02038670\n\
- mov r12, r0\n\
- ldr r1, _080C4EA4 @ =gSpecialVar_0x8006\n\
- mov r8, r1\n\
- ldr r2, _080C4EA8 @ =gStringVar1\n\
- mov r9, r2\n\
- mov r2, r12\n\
- mov r1, sp\n\
- movs r6, 0x3\n\
-_080C4D9E:\n\
- ldrh r0, [r2]\n\
- strh r0, [r1]\n\
- adds r2, 0x2\n\
- adds r1, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _080C4D9E\n\
- movs r6, 0\n\
-_080C4DAE:\n\
- movs r1, 0x3\n\
- cmp r1, r6\n\
- ble _080C4DD8\n\
-_080C4DB4:\n\
- subs r4, r1, 0x1\n\
- lsls r0, r4, 1\n\
- mov r5, sp\n\
- adds r3, r5, r0\n\
- lsls r0, r1, 1\n\
- adds r2, r5, r0\n\
- ldrh r5, [r3]\n\
- movs r7, 0\n\
- ldrsh r1, [r3, r7]\n\
- movs r7, 0\n\
- ldrsh r0, [r2, r7]\n\
- cmp r1, r0\n\
- bge _080C4DD2\n\
- strh r5, [r2]\n\
- strh r0, [r3]\n\
-_080C4DD2:\n\
- adds r1, r4, 0\n\
- cmp r1, r6\n\
- bgt _080C4DB4\n\
-_080C4DD8:\n\
- adds r6, 0x1\n\
- cmp r6, 0x2\n\
- ble _080C4DAE\n\
- mov r2, r8\n\
- ldrh r0, [r2]\n\
- lsls r0, 1\n\
- add r0, sp\n\
- ldrh r0, [r0]\n\
- movs r2, 0\n\
- movs r7, 0\n\
- movs r6, 0\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- adds r3, r0, 0\n\
- mov r1, sp\n\
-_080C4DF6:\n\
- movs r5, 0\n\
- ldrsh r0, [r1, r5]\n\
- cmp r0, r4\n\
- bne _080C4E12\n\
- lsls r0, r2, 24\n\
- movs r2, 0x80\n\
- lsls r2, 17\n\
- adds r0, r2\n\
- lsrs r2, r0, 24\n\
- mov r5, r8\n\
- ldrh r5, [r5]\n\
- cmp r6, r5\n\
- bne _080C4E12\n\
- adds r7, r2, 0\n\
-_080C4E12:\n\
- adds r1, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- ble _080C4DF6\n\
- movs r6, 0\n\
- mov r0, sp\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- asrs r1, r3, 16\n\
- lsls r2, 24\n\
- mov r10, r2\n\
- cmp r0, r1\n\
- beq _080C4E40\n\
- adds r2, r1, 0\n\
- mov r1, sp\n\
-_080C4E30:\n\
- adds r1, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _080C4E40\n\
- movs r4, 0\n\
- ldrsh r0, [r1, r4]\n\
- cmp r0, r2\n\
- bne _080C4E30\n\
-_080C4E40:\n\
- lsls r0, r6, 24\n\
- lsrs r4, r0, 24\n\
- adds r2, r7, 0\n\
- movs r6, 0\n\
- asrs r5, r3, 16\n\
- mov r8, r5\n\
- mov r1, r12\n\
- movs r5, 0\n\
- ldrsh r0, [r1, r5]\n\
- cmp r8, r0\n\
- bne _080C4E60\n\
- cmp r7, 0x1\n\
- beq _080C4E78\n\
-_080C4E5A:\n\
- subs r0, r2, 0x1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
-_080C4E60:\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _080C4E78\n\
- lsls r0, r6, 1\n\
- add r0, r12\n\
- asrs r1, r3, 16\n\
- movs r5, 0\n\
- ldrsh r0, [r0, r5]\n\
- cmp r1, r0\n\
- bne _080C4E60\n\
- cmp r2, 0x1\n\
- bne _080C4E5A\n\
-_080C4E78:\n\
- lsls r1, r6, 24\n\
- lsrs r1, 24\n\
- mov r0, r9\n\
- bl sub_80C4698\n\
- ldr r0, _080C4EAC @ =gIsLinkContest\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080C4EB8\n\
- ldr r0, _080C4EB0 @ =gStringVar2\n\
- lsls r1, r6, 3\n\
- subs r1, r6\n\
- lsls r1, 2\n\
- ldr r2, _080C4EB4 @ =gLinkPlayers + 0x8\n\
- adds r1, r2\n\
- bl sub_80C4674\n\
- b _080C4EC4\n\
- .align 2, 0\n\
-_080C4EA0: .4byte gUnknown_02038670\n\
-_080C4EA4: .4byte gSpecialVar_0x8006\n\
-_080C4EA8: .4byte gStringVar1\n\
-_080C4EAC: .4byte gIsLinkContest\n\
-_080C4EB0: .4byte gStringVar2\n\
-_080C4EB4: .4byte gLinkPlayers + 0x8\n\
-_080C4EB8:\n\
- ldr r0, _080C4ED8 @ =gStringVar2\n\
- lsls r1, r6, 6\n\
- ldr r2, _080C4EDC @ =gUnknown_0203857D\n\
- adds r1, r2\n\
- bl sub_80C4674\n\
-_080C4EC4:\n\
- mov r1, r10\n\
- asrs r0, r1, 24\n\
- cmp r0, 0x1\n\
- beq _080C4ED0\n\
- cmp r7, r0\n\
- bne _080C4EE4\n\
-_080C4ED0:\n\
- ldr r0, _080C4EE0 @ =gSpecialVar_0x8006\n\
- strh r4, [r0]\n\
- b _080C4EEA\n\
- .align 2, 0\n\
-_080C4ED8: .4byte gStringVar2\n\
-_080C4EDC: .4byte gUnknown_0203857D\n\
-_080C4EE0: .4byte gSpecialVar_0x8006\n\
-_080C4EE4:\n\
- ldr r1, _080C4EFC @ =gSpecialVar_0x8006\n\
- adds r0, r4, 0x4\n\
- strh r0, [r1]\n\
-_080C4EEA:\n\
- add sp, 0x8\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080C4EFC: .4byte gSpecialVar_0x8006\n\
- .syntax divided");
+ s16 sp0[4];
+ s32 i;
+ s32 j;
+ s16 r4;
+ u8 r2;
+ u8 r7;
+ s8 r10;
+ u8 r4_;
+
+ for (i = 0; i < 4; i++)
+ sp0[i] = gUnknown_02038670[i];
+
+ for (i = 0; i < 3; i++)
+ {
+ for (j = 3; j > i; j--)
+ {
+ if (sp0[j - 1] < sp0[j])
+ {
+ s32 temp = sp0[j];
+
+ sp0[j] = sp0[j - 1];
+ sp0[j - 1] = temp;
+ }
+ }
+ }
+
+ r4 = sp0[gSpecialVar_0x8006];
+ r10 = 0;
+ r7 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sp0[i] == r4)
+ {
+ r10++;
+ if (i == gSpecialVar_0x8006)
+ r7 = r10;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sp0[i] == r4)
+ break;
+ }
+
+ r4_ = i;
+ r2 = r7;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (r4 == gUnknown_02038670[i])
+ {
+ if (r2 == 1)
+ break;
+ r2--;
+ }
+ }
+
+ sub_80C4698(gStringVar1, i);
+
+ if (gIsLinkContest & 1)
+ sub_80C4674(gStringVar2, gLinkPlayers[i].name);
+ else
+ sub_80C4674(gStringVar2, gContestMons[i].trainerName);
+
+ if (r10 == 1 || r7 == r10)
+ gSpecialVar_0x8006 = r4_;
+ else
+ gSpecialVar_0x8006 = r4_ + 4;
}
void ShowContestWinnerCleanup(void)
@@ -376,10 +249,10 @@ void ShowContestWinner(void)
void sub_80C4F70(void)
{
- VarSet(0x4010, gContestMons[0].trainerGfxId);
- VarSet(0x4011, gContestMons[1].trainerGfxId);
- VarSet(0x4012, gContestMons[2].trainerGfxId);
- VarSet(0x4013, gContestMons[3].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_0, gContestMons[0].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_1, gContestMons[1].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_2, gContestMons[2].trainerGfxId);
+ VarSet(VAR_OBJ_GFX_ID_3, gContestMons[3].trainerGfxId);
}
bool8 GiveMonArtistRibbon(void)
@@ -389,7 +262,7 @@ bool8 GiveMonArtistRibbon(void)
if(ribbon == FALSE
&& gContestFinalStandings[gContestPlayerMonIndex] == 0
&& gSpecialVar_ContestRank == 3
- && (s16)gUnknown_02038678[gContestPlayerMonIndex] >= 800)
+ && gUnknown_02038678[gContestPlayerMonIndex] >= 800)
{
ribbon = TRUE;
SetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_ARTIST_RIBBON, &ribbon);
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index 33e7620f7..b58363d31 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -19,6 +19,8 @@
#include "text.h"
#include "ewram.h"
+extern const u8 gUnknown_08208238[];
+
extern u8 gPlayerPartyCount;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
@@ -297,130 +299,26 @@ void ScrSpecial_GetPokemonNicknameAndMoveName(void)
StringCopy(gStringVar2, gMoveNames[data]);
}
-// no. hard
-__attribute__((naked))
-void sub_80F9FDC(struct Pokemon *party, u8 var, u8 var2)
+void sub_80F9FDC(struct Pokemon *pkmn, u8 moveIndex1, u8 moveIndex2)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x20\n\
- mov r8, r0\n\
- adds r5, r1, 0\n\
- adds r4, r2, 0\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- adds r0, r5, 0\n\
- adds r0, 0xD\n\
- str r0, [sp, 0x8]\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x8]\n\
- bl GetMonData\n\
- mov r1, sp\n\
- adds r1, 0x2\n\
- str r1, [sp, 0x14]\n\
- strh r0, [r1]\n\
- adds r3, r4, 0\n\
- adds r3, 0xD\n\
- str r3, [sp, 0xC]\n\
- mov r0, r8\n\
- adds r1, r3, 0\n\
- bl GetMonData\n\
- mov r1, sp\n\
- strh r0, [r1]\n\
- adds r7, r5, 0\n\
- adds r7, 0x11\n\
- str r7, [sp, 0x10]\n\
- mov r0, r8\n\
- adds r1, r7, 0\n\
- bl GetMonData\n\
- mov r1, sp\n\
- adds r1, 0x5\n\
- str r1, [sp, 0x18]\n\
- strb r0, [r1]\n\
- adds r3, r4, 0\n\
- adds r3, 0x11\n\
- str r3, [sp, 0x1C]\n\
- mov r0, r8\n\
- adds r1, r3, 0\n\
- bl GetMonData\n\
- add r7, sp, 0x4\n\
- mov r10, r7\n\
- strb r0, [r7]\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- bl GetMonData\n\
- mov r6, sp\n\
- adds r6, 0x6\n\
- strb r0, [r6]\n\
- ldr r1, _080FA0D8 @ =gUnknown_08208238\n\
- adds r0, r5, r1\n\
- ldrb r0, [r0]\n\
- mov r9, r0\n\
- ldrb r0, [r6]\n\
- adds r2, r0, 0\n\
- mov r3, r9\n\
- ands r2, r3\n\
- lsls r5, 1\n\
- asrs r2, r5\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r1, r4, r1\n\
- ldrb r3, [r1]\n\
- adds r1, r0, 0\n\
- ands r1, r3\n\
- lsls r4, 1\n\
- asrs r1, r4\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r7, r9\n\
- bics r0, r7\n\
- strb r0, [r6]\n\
- ldrb r0, [r6]\n\
- bics r0, r3\n\
- strb r0, [r6]\n\
- lsls r2, r4\n\
- lsls r1, r5\n\
- adds r2, r1\n\
- ldrb r0, [r6]\n\
- orrs r0, r2\n\
- strb r0, [r6]\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x8]\n\
- mov r2, sp\n\
- bl SetMonData\n\
- mov r0, r8\n\
- ldr r1, [sp, 0xC]\n\
- ldr r2, [sp, 0x14]\n\
- bl SetMonData\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x10]\n\
- mov r2, r10\n\
- bl SetMonData\n\
- mov r0, r8\n\
- ldr r1, [sp, 0x1C]\n\
- ldr r2, [sp, 0x18]\n\
- bl SetMonData\n\
- mov r0, r8\n\
- movs r1, 0x15\n\
- adds r2, r6, 0\n\
- bl SetMonData\n\
- add sp, 0x20\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080FA0D8: .4byte gUnknown_08208238\n\
- .syntax divided");
+ u16 move1 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1);
+ u16 move2 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2);
+ u8 pp1 = GetMonData(pkmn, MON_DATA_PP1 + moveIndex1);
+ u8 pp2 = GetMonData(pkmn, MON_DATA_PP1 + moveIndex2);
+ u8 bonuses = GetMonData(pkmn, MON_DATA_PP_BONUSES);
+
+ u8 r2 = (bonuses & gUnknown_08208238[moveIndex1]) >> (moveIndex1 * 2);
+ u8 r1 = (bonuses & gUnknown_08208238[moveIndex2]) >> (moveIndex2 * 2);
+
+ bonuses &= ~gUnknown_08208238[moveIndex1];
+ bonuses &= ~gUnknown_08208238[moveIndex2];
+ bonuses |= (r2 << (moveIndex2 * 2)) + (r1 << (moveIndex1 * 2));
+
+ SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex1, &move2);
+ SetMonData(pkmn, MON_DATA_MOVE1 + moveIndex2, &move1);
+ SetMonData(pkmn, MON_DATA_PP1 + moveIndex1, &pp2);
+ SetMonData(pkmn, MON_DATA_PP1 + moveIndex2, &pp1);
+ SetMonData(pkmn, MON_DATA_PP_BONUSES, &bonuses);
}
void sub_80FA0DC(void)